From 4b97511982ecdecbac166218b86e786c5cb6718b Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 25 Apr 2020 21:00:56 -0400 Subject: Split arm9 compilation to subdir --- arm9/asm/CARD_arm9.s | 1782 + arm9/asm/CP_arm9.s | 42 + arm9/asm/CTRDG_arm9.s | 3238 + arm9/asm/DGT_arm9.s | 1017 + arm9/asm/FS_arm9.s | 3011 + arm9/asm/GX_arm9.s | 5256 ++ arm9/asm/MATH_arm9.s | 320 + arm9/asm/MI_arm9.s | 1082 + arm9/asm/OS_arm9.s | 4759 ++ arm9/asm/PM_arm9.s | 1125 + arm9/asm/PXI_arm9.s | 266 + arm9/asm/RTC_arm9.s | 1028 + arm9/asm/SDK_AUTOLOAD_LIST.s | 21 + arm9/asm/SND_arm9.s | 1655 + arm9/asm/SPI_arm9.s | 1487 + arm9/asm/STD_arm9.s | 17117 +++++ arm9/asm/WM_arm9.s | 3744 ++ arm9/asm/arm9_itcm.s | 505 + arm9/asm/arm9overlay.s | 5 + arm9/asm/crt0.s | 283 + arm9/asm/filesystem.s | 648 + arm9/asm/macros.inc | 1 + arm9/asm/macros/function.inc | 24 + arm9/asm/rom2.s | 7 + arm9/asm/rom2_2.s | 734 + arm9/asm/scrcmd.s | 24605 +++++++ arm9/asm/secure.s | 29 + arm9/asm/unk_02000E0C.s | 2758 + arm9/asm/unk_020023C0.s | 8340 +++ arm9/asm/unk_02006864.s | 109321 ++++++++++++++++++++++++++++++ arm9/asm/unk_02038C78.s | 1744 + arm9/asm/unk_02046030.s | 142185 ++++++++++++++++++++++++++++++++++++++++ arm9/asm/unk_0208AC14.s | 42449 ++++++++++++ arm9/asm/unk_020AF030.s | 26835 ++++++++ arm9/asm/unk_10b724.s | 4 + 35 files changed, 407427 insertions(+) create mode 100644 arm9/asm/CARD_arm9.s create mode 100644 arm9/asm/CP_arm9.s create mode 100644 arm9/asm/CTRDG_arm9.s create mode 100644 arm9/asm/DGT_arm9.s create mode 100644 arm9/asm/FS_arm9.s create mode 100644 arm9/asm/GX_arm9.s create mode 100644 arm9/asm/MATH_arm9.s create mode 100644 arm9/asm/MI_arm9.s create mode 100644 arm9/asm/OS_arm9.s create mode 100644 arm9/asm/PM_arm9.s create mode 100644 arm9/asm/PXI_arm9.s create mode 100644 arm9/asm/RTC_arm9.s create mode 100644 arm9/asm/SDK_AUTOLOAD_LIST.s create mode 100644 arm9/asm/SND_arm9.s create mode 100644 arm9/asm/SPI_arm9.s create mode 100644 arm9/asm/STD_arm9.s create mode 100644 arm9/asm/WM_arm9.s create mode 100644 arm9/asm/arm9_itcm.s create mode 100644 arm9/asm/arm9overlay.s create mode 100644 arm9/asm/crt0.s create mode 100644 arm9/asm/filesystem.s create mode 100644 arm9/asm/macros.inc create mode 100644 arm9/asm/macros/function.inc create mode 100644 arm9/asm/rom2.s create mode 100644 arm9/asm/rom2_2.s create mode 100644 arm9/asm/scrcmd.s create mode 100644 arm9/asm/secure.s create mode 100644 arm9/asm/unk_02000E0C.s create mode 100644 arm9/asm/unk_020023C0.s create mode 100644 arm9/asm/unk_02006864.s create mode 100644 arm9/asm/unk_02038C78.s create mode 100644 arm9/asm/unk_02046030.s create mode 100644 arm9/asm/unk_0208AC14.s create mode 100644 arm9/asm/unk_020AF030.s create mode 100644 arm9/asm/unk_10b724.s (limited to 'arm9/asm') diff --git a/arm9/asm/CARD_arm9.s b/arm9/asm/CARD_arm9.s new file mode 100644 index 00000000..664e85f5 --- /dev/null +++ b/arm9/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 OSi_ReferSymbol +_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 OSi_ReferSymbol + 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 OSi_ReferSymbol + 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 cardi_common +_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 SVC_WaitByLoop + 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/arm9/asm/CP_arm9.s b/arm9/asm/CP_arm9.s new file mode 100644 index 00000000..c756e8e2 --- /dev/null +++ b/arm9/asm/CP_arm9.s @@ -0,0 +1,42 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + + arm_func_start CP_SaveContext +CP_SaveContext: ; 0x020D3648 + ldr r1, _020D3684 ; =0x04000290 + stmdb sp!, {r4} + ldmia r1, {r2-r4,r12} + stmia r0!, {r2-r4,r12} + ldrh r12, [r1, #-0x10] + add r1, r1, #0x28 + ldmia r1, {r2-r3} + stmia r0!, {r2-r3} + and r12, r12, #0x3 + ldrh r2, [r1, #-0x8] + strh r12, [r0, #0x0] + and r2, r2, #0x1 + strh r2, [r0, #0x2] + ldmia sp!, {r4} + bx lr + .balign 4 +_020D3684: .word 0x04000290 + + arm_func_start CP_RestoreContext +CP_RestoreContext: ; 0x020D3688 + stmdb sp!, {r4} + ldr r1, _020D36C0 ; =0x04000290 + ldmia r0, {r2-r4,r12} + stmia r1, {r2-r4,r12} + ldrh r2, [r0, #0x18] + ldrh r3, [r0, #0x1a] + strh r2, [r1, #-0x10] + strh r3, [r1, #0x20] + add r0, r0, #0x10 + add r1, r1, #0x28 + ldmia r0, {r2-r3} + stmia r1, {r2-r3} + ldmia sp!, {r4} + bx lr + .balign 4 +_020D36C0: .word 0x04000290 diff --git a/arm9/asm/CTRDG_arm9.s b/arm9/asm/CTRDG_arm9.s new file mode 100644 index 00000000..301ea233 --- /dev/null +++ b/arm9/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 SVC_WaitByLoop + 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 SVC_WaitByLoop + 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 SVC_WaitByLoop + 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/arm9/asm/DGT_arm9.s b/arm9/asm/DGT_arm9.s new file mode 100644 index 00000000..d5ef358d --- /dev/null +++ b/arm9/asm/DGT_arm9.s @@ -0,0 +1,1017 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start ProcessBlock +ProcessBlock: ; 0x020D2798 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + add r3, r0, #0x18 + ldr r5, [r0, #0x0] + ldr r4, [r0, #0x4] + ldr lr, [r0, #0x8] + ldr r12, [r0, #0xc] + ldr r2, _020D2B78 ; =0x02106900 + mov r8, r3 + mov r7, #0x0 +_020D27C0: + mvn r1, r4 + and r6, r4, lr + and r1, r1, r12 + orr r1, r6, r1 + ldr r6, [r8, #0x0] + add r1, r5, r1 + ldr r5, [r2, #0x0] + add r1, r6, r1 + add r5, r5, r1 + mov r1, r5, lsl #0x7 + orr r1, r1, r5, lsr #0x19 + add r5, r4, r1 + mvn r1, r5 + and r6, r5, r4 + and r1, r1, lr + orr r1, r6, r1 + ldr r6, [r8, #0x4] + add r1, r12, r1 + ldr r9, [r2, #0x4] + add r1, r6, r1 + add r6, r9, r1 + mov r1, r6, lsl #0xc + orr r1, r1, r6, lsr #0x14 + add r12, r5, r1 + mvn r1, r12 + and r6, r12, r5 + and r1, r1, r4 + orr r6, r6, r1 + add r1, r8, #0xc + ldr r9, [r8, #0x8] + add r6, lr, r6 + add r6, r9, r6 + ldr r9, [r2, #0x8] + ldr r1, [r1, #0x0] + add r10, r9, r6 + add r6, r2, #0xc + ldr r6, [r6, #0x0] + mov r9, r10, lsl #0x11 + orr r9, r9, r10, lsr #0xf + add lr, r12, r9 + add r2, r2, #0x10 + add r8, r8, #0x10 + and r10, lr, r12 + mvn r9, lr + and r9, r9, r5 + orr r9, r10, r9 + add r4, r4, r9 + add r1, r1, r4 + add r4, r6, r1 + mov r1, r4, lsl #0x16 + orr r1, r1, r4, lsr #0xa + add r4, lr, r1 + add r7, r7, #0x1 + cmp r7, #0x4 + blt _020D27C0 + ldr r6, _020D2B7C ; =0x02106840 + mov r1, #0x0 +_020D28A4: + mvn r7, r12 + ldr r9, [r6, #0x0] + and r8, r4, r12 + and r7, lr, r7 + orr r7, r8, r7 + ldr r8, [r3, r9, lsl #0x2] + add r5, r5, r7 + ldr r7, [r2, #0x0] + add r5, r8, r5 + add r7, r7, r5 + mov r5, r7, lsl #0x5 + orr r5, r5, r7, lsr #0x1b + add r5, r4, r5 + mvn r8, lr + ldr r7, [r6, #0x4] + and r9, r5, lr + and r8, r4, r8 + orr r10, r9, r8 + mvn r8, r4 + ldr r9, [r6, #0x8] + ldr r11, [r3, r7, lsl #0x2] + add r7, r12, r10 + add r10, r11, r7 + add r7, r6, #0xc + ldr r9, [r3, r9, lsl #0x2] + and r8, r5, r8 + ldr r7, [r7, #0x0] + ldr r11, [r2, #0x4] + ldr r7, [r3, r7, lsl #0x2] + add r11, r11, r10 + mov r10, r11, lsl #0x9 + orr r10, r10, r11, lsr #0x17 + add r12, r5, r10 + ldr r10, [r2, #0x8] + and r11, r12, r4 + orr r8, r11, r8 + add r8, lr, r8 + add r8, r9, r8 + add r10, r10, r8 + add r8, r2, #0xc + ldr r8, [r8, #0x0] + mov r9, r10, lsl #0xe + orr r9, r9, r10, lsr #0x12 + add lr, r12, r9 + add r2, r2, #0x10 + add r6, r6, #0x10 + and r10, lr, r5 + mvn r9, r5 + and r9, r12, r9 + orr r9, r10, r9 + add r4, r4, r9 + add r4, r7, r4 + add r7, r8, r4 + mov r4, r7, lsl #0x14 + orr r4, r4, r7, lsr #0xc + add r4, lr, r4 + add r1, r1, #0x1 + cmp r1, #0x4 + blt _020D28A4 + mov r7, #0x0 +_020D2994: + ldr r8, [r6, #0x0] + eor r1, r4, lr + eor r1, r12, r1 + add r1, r5, r1 + ldr r8, [r3, r8, lsl #0x2] + ldr r5, [r2, #0x0] + add r1, r8, r1 + add r5, r5, r1 + mov r1, r5, lsl #0x4 + orr r1, r1, r5, lsr #0x1c + add r5, r4, r1 + ldr r8, [r6, #0x4] + eor r1, r5, r4 + eor r1, lr, r1 + ldr r8, [r3, r8, lsl #0x2] + add r1, r12, r1 + ldr r9, [r6, #0x8] + ldr r10, [r2, #0x4] + add r1, r8, r1 + add r8, r10, r1 + mov r1, r8, lsl #0xb + orr r1, r1, r8, lsr #0x15 + add r12, r5, r1 + eor r8, r12, r5 + eor r8, r4, r8 + ldr r9, [r3, r9, lsl #0x2] + add r8, lr, r8 + add r9, r9, r8 + ldr r10, [r2, #0x8] + add r1, r2, #0xc + ldr r8, [r6, #0xc] + add r10, r10, r9 + ldr r9, [r3, r8, lsl #0x2] + mov r8, r10, lsl #0x10 + orr r8, r8, r10, lsr #0x10 + add lr, r12, r8 + eor r8, lr, r12 + eor r8, r5, r8 + add r4, r4, r8 + add r7, r7, #0x1 + ldr r1, [r1, #0x0] + add r4, r9, r4 + add r4, r1, r4 + mov r1, r4, lsl #0x17 + orr r1, r1, r4, lsr #0x9 + add r2, r2, #0x10 + add r6, r6, #0x10 + add r4, lr, r1 + cmp r7, #0x4 + blt _020D2994 + mov r10, #0x0 +_020D2A60: + mvn r1, r12 + ldr r7, [r6, #0x0] + orr r1, r4, r1 + eor r1, lr, r1 + ldr r7, [r3, r7, lsl #0x2] + add r1, r5, r1 + ldr r5, [r2, #0x0] + add r1, r7, r1 + add r5, r5, r1 + mov r1, r5, lsl #0x6 + orr r1, r1, r5, lsr #0x1a + add r5, r4, r1 + mvn r1, lr + ldr r7, [r6, #0x4] + orr r1, r5, r1 + eor r1, r4, r1 + ldr r8, [r6, #0x8] + ldr r7, [r3, r7, lsl #0x2] + add r1, r12, r1 + ldr r9, [r2, #0x4] + add r1, r7, r1 + add r9, r9, r1 + mov r7, r9, lsl #0xa + add r1, r6, #0xc + orr r9, r7, r9, lsr #0x16 + ldr r1, [r1, #0x0] + add r7, r2, #0xc + add r12, r5, r9 + ldr r8, [r3, r8, lsl #0x2] + ldr r7, [r7, #0x0] + ldr r1, [r3, r1, lsl #0x2] + ldr r9, [r2, #0x8] + mvn r11, r4 + orr r11, r12, r11 + eor r11, r5, r11 + add r11, lr, r11 + add r8, r8, r11 + add r9, r9, r8 + mov r8, r9, lsl #0xf + orr r8, r8, r9, lsr #0x11 + add lr, r12, r8 + add r2, r2, #0x10 + add r6, r6, #0x10 + mvn r8, r5 + orr r8, lr, r8 + eor r8, r12, r8 + add r4, r4, r8 + add r1, r1, r4 + add r4, r7, r1 + mov r1, r4, lsl #0x15 + orr r1, r1, r4, lsr #0xb + add r4, lr, r1 + add r10, r10, #0x1 + cmp r10, #0x4 + blt _020D2A60 + ldr r1, [r0, #0x0] + add r1, r1, r5 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r4 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, lr + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r12 + str r1, [r0, #0xc] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020D2B78: .word Unk_02106900 ; = 0x02106900 +_020D2B7C: .word Unk_02106840 ; = 0x02106840 + + arm_func_start DGT_Hash1GetDigest_R +DGT_Hash1GetDigest_R: ; 0x020D2B80 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r1, [r6, #0x14] + ldr r3, [r6, #0x10] + mov r7, r0 + mov r4, r1, lsl #0x3 + ldr r1, _020D2C40 ; =0x0210683C + mov r0, r6 + mov r2, #0x1 + orr r4, r4, r3, lsr #0x1d + mov r5, r3, lsl #0x3 + bl DGT_Hash1SetSource + ldr r0, [r6, #0x10] + mov r1, #0x0 + and r3, r0, #0x3f + rsb r2, r3, #0x40 + cmp r2, #0x8 + bhs _020D2BE8 + add r0, r6, #0x18 + add r0, r0, r3 + bl MI_CpuFill8 + mov r0, r6 + bl ProcessBlock + mov r3, #0x0 + mov r2, #0x40 +_020D2BE8: + cmp r2, #0x8 + bls _020D2C04 + add r0, r6, #0x18 + add r0, r0, r3 + sub r2, r2, #0x8 + mov r1, #0x0 + bl MI_CpuFill8 +_020D2C04: + str r5, [r6, #0x50] + mov r0, r6 + str r4, [r6, #0x54] + bl ProcessBlock + mov r0, r6 + mov r1, r7 + mov r2, #0x10 + bl MI_CpuCopy8 + mov r0, r6 + mov r1, #0x0 + mov r2, #0x58 + bl MI_CpuFill8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020D2C40: .word Unk_0210683C ; = 0x0210683C + + arm_func_start DGT_Hash1SetSource +DGT_Hash1SetSource: ; 0x020D2C44 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + add r12, r8, #0x10 + ldr r4, [r8, #0x10] + mov r6, r2 + and r3, r4, #0x3f + ldr r0, [r12, #0x4] + adds r4, r4, r6 + str r4, [r8, #0x10] + adc r0, r0, #0x0 + rsb r5, r3, #0x40 + mov r7, r1 + str r0, [r12, #0x4] + cmp r5, r6 + bls _020D2CB0 + cmp r6, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + add r1, r8, #0x18 + mov r0, r7 + add r1, r1, r3 + bl MI_CpuCopy8 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_020D2CB0: + add r1, r8, #0x18 + mov r0, r7 + mov r2, r5 + add r1, r1, r3 + bl MI_CpuCopy8 + mov r0, r8 + bl ProcessBlock + sub r6, r6, r5 + mov r4, r6, lsr #0x6 + cmp r4, #0x0 + add r9, r7, r5 + ble _020D2D10 + add r7, r8, #0x18 + mov r5, #0x40 +_020D2CE8: + mov r0, r9 + mov r1, r7 + mov r2, r5 + bl MI_CpuCopy8 + mov r0, r8 + add r9, r9, #0x40 + bl ProcessBlock + sub r4, r4, #0x1 + cmp r4, #0x0 + bgt _020D2CE8 +_020D2D10: + ands r2, r6, #0x3f + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, r9 + add r1, r8, #0x18 + bl MI_CpuCopy8 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start DGT_Hash1Reset +DGT_Hash1Reset: ; 0x020D2D38 + ldr r2, _020D2D68 ; =0x67452301 + ldr r1, _020D2D6C ; =0xEFCDAB89 + str r2, [r0, #0x0] + ldr r2, _020D2D70 ; =0x98BADCFE + str r1, [r0, #0x4] + ldr r1, _020D2D74 ; =0x10325476 + str r2, [r0, #0x8] + str r1, [r0, #0xc] + mov r1, #0x0 + str r1, [r0, #0x10] + str r1, [r0, #0x14] + bx lr + .balign 4 +_020D2D68: .word 0x67452301 +_020D2D6C: .word 0xEFCDAB89 +_020D2D70: .word 0x98BADCFE +_020D2D74: .word 0x10325476 + + arm_func_start MATH_CalcHMACSHA1 +MATH_CalcHMACSHA1: ; 0x020D2D78 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0xa0 + ldr lr, _020D2E00 ; =0x02106A04 + add r12, sp, #0x1c + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mov r4, r12 + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr, {r0-r2} + stmia r12, {r0-r2} + add lr, sp, #0x38 + add r12, sp, #0x8 + str lr, [sp, #0x24] + ldr lr, _020D2E04 ; =MATH_SHA1Init + str r12, [sp, #0x28] + ldr ip, _020D2E08 ; =MATH_SHA1Update + str lr, [sp, #0x2c] + ldr lr, _020D2E0C ; =MATH_SHA1GetHash + str r12, [sp, #0x30] + ldr r12, [sp, #0xb8] + str lr, [sp, #0x34] + str r12, [sp, #0x0] + mov r3, r5 + mov r0, r8 + mov r1, r7 + mov r2, r6 + str r4, [sp, #0x4] + bl MATHi_CalcHMAC + add sp, sp, #0xa0 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020D2E00: .word Unk_02106A04 ; = 0x02106A04 +_020D2E04: .word MATH_SHA1Init +_020D2E08: .word MATH_SHA1Update +_020D2E0C: .word MATH_SHA1GetHash + + arm_func_start MATH_SHA1GetHash +MATH_SHA1GetHash: ; 0x020D2E10 + stmdb sp!, {r0-r3} + stmdb sp!, {r4-r6,lr} + ldr r0, [sp, #0x10] + mov r6, r1 + ldr r3, [r0, #0x1c] + add r5, r0, #0x20 + ands r1, r3, #0x3 + mov r0, r3, asr #0x2 + moveq r1, #0x0 + streq r1, [r5, r0, lsl #0x2] + ldr r2, [sp, #0x10] + mov r1, #0x80 + add r4, r2, #0x20 + strb r1, [r4, r3] + add r3, r3, #0x1 + ands r1, r3, #0x3 + beq _020D2E68 + mov r2, #0x0 +_020D2E58: + strb r2, [r4, r3] + add r3, r3, #0x1 + ands r1, r3, #0x3 + bne _020D2E58 +_020D2E68: + ldr r1, [sp, #0x10] + add r0, r0, #0x1 + ldr r1, [r1, #0x1c] + cmp r1, #0x38 + blt _020D2EB4 + cmp r0, #0x10 + bge _020D2E98 + mov r1, #0x0 +_020D2E88: + str r1, [r5, r0, lsl #0x2] + add r0, r0, #0x1 + cmp r0, #0x10 + blt _020D2E88 +_020D2E98: + ldr r1, _020D3008 ; =0x02106A00 + ldr r0, [sp, #0x10] + ldr r3, [r1, #0x0] + mov r1, r5 + mov r2, #0x40 + blx r3 + mov r0, #0x0 +_020D2EB4: + cmp r0, #0xe + bge _020D2ED0 + mov r1, #0x0 +_020D2EC0: + str r1, [r5, r0, lsl #0x2] + add r0, r0, #0x1 + cmp r0, #0xe + blt _020D2EC0 +_020D2ED0: + ldr r0, [sp, #0x10] + mov r1, r5 + ldr r2, [r0, #0x14] + ldr r3, _020D3008 ; =0x02106A00 + strb r2, [r4, #0x3f] + mov r0, r2, lsr #0x8 + strb r0, [r4, #0x3e] + mov r0, r2, lsr #0x10 + strb r0, [r4, #0x3d] + mov r0, r2, lsr #0x18 + strb r0, [r4, #0x3c] + ldr r0, [sp, #0x10] + mov r2, #0x40 + ldr r5, [r0, #0x18] + strb r5, [r4, #0x3b] + mov r0, r5, lsr #0x8 + strb r0, [r4, #0x3a] + mov r0, r5, lsr #0x10 + strb r0, [r4, #0x39] + mov r0, r5, lsr #0x18 + strb r0, [r4, #0x38] + ldr r0, [sp, #0x10] + ldr r3, [r3, #0x0] + blx r3 + ldr r0, [sp, #0x10] + add r1, sp, #0x10 + ldr r3, [r0, #0x0] + mov r0, #0x0 + mov r2, r3, lsr #0x18 + strb r2, [r6, #0x0] + mov r2, r3, lsr #0x10 + strb r2, [r6, #0x1] + mov r2, r3, lsr #0x8 + strb r2, [r6, #0x2] + strb r3, [r6, #0x3] + ldr r3, [sp, #0x10] + mov r2, #0x4 + ldr r4, [r3, #0x4] + mov r3, r4, lsr #0x18 + strb r3, [r6, #0x4] + mov r3, r4, lsr #0x10 + strb r3, [r6, #0x5] + mov r3, r4, lsr #0x8 + strb r3, [r6, #0x6] + strb r4, [r6, #0x7] + ldr r3, [sp, #0x10] + ldr r4, [r3, #0x8] + mov r3, r4, lsr #0x18 + strb r3, [r6, #0x8] + mov r3, r4, lsr #0x10 + strb r3, [r6, #0x9] + mov r3, r4, lsr #0x8 + strb r3, [r6, #0xa] + strb r4, [r6, #0xb] + ldr r3, [sp, #0x10] + ldr r4, [r3, #0xc] + mov r3, r4, lsr #0x18 + strb r3, [r6, #0xc] + mov r3, r4, lsr #0x10 + strb r3, [r6, #0xd] + mov r3, r4, lsr #0x8 + strb r3, [r6, #0xe] + strb r4, [r6, #0xf] + ldr r3, [sp, #0x10] + ldr r4, [r3, #0x10] + mov r3, r4, lsr #0x18 + strb r3, [r6, #0x10] + mov r3, r4, lsr #0x10 + strb r3, [r6, #0x11] + mov r3, r4, lsr #0x8 + strb r3, [r6, #0x12] + strb r4, [r6, #0x13] + ldr r3, [sp, #0x10] + str r0, [r3, #0x1c] + bl MIi_CpuClear32 + ldmia sp!, {r4-r6,lr} + add sp, sp, #0x10 + bx lr + .balign 4 +_020D3008: .word Unk_02106A00 ; = 0x02106A00 + + arm_func_start MATH_SHA1Update +MATH_SHA1Update: ; 0x020D300C + stmdb sp!, {r4-r8,lr} + mov r8, r0 + movs r6, r2 + mov r7, r1 + add r5, r8, #0x20 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [r8, #0x14] + add r1, r0, r6, lsl #0x3 + cmp r1, r0 + ldrcc r0, [r8, #0x18] + addcc r0, r0, #0x1 + strcc r0, [r8, #0x18] + ldr r0, [r8, #0x18] + add r0, r0, r6, lsr #0x1d + str r0, [r8, #0x18] + str r1, [r8, #0x14] + ldr r1, [r8, #0x1c] + cmp r1, #0x0 + beq _020D30CC + add r0, r1, r6 + cmp r0, #0x40 + blo _020D30A8 + rsb r4, r1, #0x40 + mov r0, r7 + mov r2, r4 + add r1, r5, r1 + bl MI_CpuCopy8 + ldr r1, _020D3164 ; =0x02106A00 + mov r0, r8 + ldr r3, [r1, #0x0] + mov r1, r5 + mov r2, #0x40 + sub r6, r6, r4 + add r7, r7, r4 + blx r3 + mov r0, #0x0 + str r0, [r8, #0x1c] + b _020D30CC +_020D30A8: + mov r0, r7 + mov r2, r6 + add r1, r5, r1 + bl MI_CpuCopy8 + ldr r0, [r8, #0x1c] + add r0, r0, r6 + str r0, [r8, #0x1c] + ldmia sp!, {r4-r8,lr} + bx lr +_020D30CC: + cmp r6, #0x40 + blo _020D313C + bic r4, r6, #0x3f + sub r6, r6, r4 + ands r0, r7, #0x3 + bne _020D3104 + ldr r1, _020D3164 ; =0x02106A00 + mov r0, r8 + ldr r3, [r1, #0x0] + mov r1, r7 + mov r2, r4 + blx r3 + add r7, r7, r4 + b _020D313C +_020D3104: + mov r0, r7 + mov r1, r5 + mov r2, #0x40 + bl MI_CpuCopy8 + ldr r1, _020D3164 ; =0x02106A00 + mov r0, r8 + ldr r3, [r1, #0x0] + mov r1, r5 + mov r2, #0x40 + add r7, r7, #0x40 + blx r3 + sub r4, r4, #0x40 + cmp r4, #0x0 + bgt _020D3104 +_020D313C: + str r6, [r8, #0x1c] + cmp r6, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r0, r7 + mov r1, r5 + mov r2, r6 + bl MI_CpuCopy8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020D3164: .word Unk_02106A00 ; = 0x02106A00 + + arm_func_start MATH_SHA1Init +MATH_SHA1Init: ; 0x020D3168 + ldr r1, _020D31A4 ; =0x67452301 + ldr r2, _020D31A8 ; =0xEFCDAB89 + str r1, [r0, #0x0] + ldr r1, _020D31AC ; =0x98BADCFE + str r2, [r0, #0x4] + ldr r2, _020D31B0 ; =0x10325476 + str r1, [r0, #0x8] + ldr r1, _020D31B4 ; =0xC3D2E1F0 + str r2, [r0, #0xc] + str r1, [r0, #0x10] + mov r1, #0x0 + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + bx lr + .balign 4 +_020D31A4: .word 0x67452301 +_020D31A8: .word 0xEFCDAB89 +_020D31AC: .word 0x98BADCFE +_020D31B0: .word 0x10325476 +_020D31B4: .word 0xC3D2E1F0 + + arm_func_start MATHi_CalcHMAC +MATHi_CalcHMAC: ; 0x020D31B8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc4 + ldr r5, [sp, #0xe0] + ldr r4, [sp, #0xe4] + movs r9, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + cmp r8, #0x0 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + cmp r7, #0x0 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + cmp r6, #0x0 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + cmp r5, #0x0 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + cmp r4, #0x0 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r0, [r4, #0x4] + cmp r5, r0 + ble _020D3278 + ldr r0, [r4, #0x8] + ldr r1, [r4, #0x10] + blx r1 + ldr r0, [r4, #0x8] + ldr r3, [r4, #0x14] + mov r1, r6 + mov r2, r5 + blx r3 + ldr r0, [r4, #0x8] + ldr r2, [r4, #0x18] + add r1, sp, #0x0 + blx r2 + ldr r5, [r4, #0x0] + add r6, sp, #0x0 +_020D3278: + cmp r5, #0x0 + mov r0, #0x0 + ble _020D32A0 + add r2, sp, #0x40 +_020D3288: + ldrb r1, [r6, r0] + add r0, r0, #0x1 + cmp r0, r5 + eor r1, r1, #0x36 + strb r1, [r2], #0x1 + blt _020D3288 +_020D32A0: + ldr r1, [r4, #0x4] + cmp r0, r1 + bge _020D32CC + add r1, sp, #0x40 + add r3, r1, r0 + mov r2, #0x36 +_020D32B8: + strb r2, [r3], #0x1 + ldr r1, [r4, #0x4] + add r0, r0, #0x1 + cmp r0, r1 + blt _020D32B8 +_020D32CC: + ldr r0, [r4, #0x8] + ldr r1, [r4, #0x10] + blx r1 + ldr r0, [r4, #0x8] + ldr r2, [r4, #0x4] + ldr r3, [r4, #0x14] + add r1, sp, #0x40 + blx r3 + ldr r0, [r4, #0x8] + ldr r3, [r4, #0x14] + mov r1, r8 + mov r2, r7 + blx r3 + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x18] + blx r2 + cmp r5, #0x0 + mov r2, #0x0 + ble _020D3338 + add r1, sp, #0x80 +_020D3320: + ldrb r0, [r6, r2] + add r2, r2, #0x1 + cmp r2, r5 + eor r0, r0, #0x5c + strb r0, [r1], #0x1 + blt _020D3320 +_020D3338: + ldr r0, [r4, #0x4] + cmp r2, r0 + bge _020D3364 + add r0, sp, #0x80 + add r3, r0, r2 + mov r1, #0x5c +_020D3350: + strb r1, [r3], #0x1 + ldr r0, [r4, #0x4] + add r2, r2, #0x1 + cmp r2, r0 + blt _020D3350 +_020D3364: + ldr r0, [r4, #0x8] + ldr r1, [r4, #0x10] + blx r1 + ldr r0, [r4, #0x8] + ldr r2, [r4, #0x4] + ldr r3, [r4, #0x14] + add r1, sp, #0x80 + blx r3 + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x14] + blx r3 + ldr r0, [r4, #0x8] + ldr r2, [r4, #0x18] + mov r1, r9 + blx r2 + add sp, sp, #0xc4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020D33B4: .word 0x00FF00FF +_020D33B8: .word 0x5A827999 +_020D33BC: .word 0x6ED9EBA1 +_020D33C0: .word 0x8F1BBCDC +_020D33C4: .word 0xCA62C1D6 + + arm_func_start DGTi_hash2_arm4_small +DGTi_hash2_arm4_small: ; 0x020D33C8 + stmdb sp!, {r4-r12,lr} + ldmia r0, {r3,r9-r12} + sub sp, sp, #0x84 + str r2, [sp, #0x80] +_020D33D8: + ldr r8, _020D33B8 ; =0x5A827999 + ldr r7, _020D33B4 ; =0x00FF00FF + mov r6, sp + mov r5, #0x0 +_020D33E8: + ldr r4, [r1], #0x4 + add r2, r8, r12 + add r2, r2, r3, ror #0x1B + and lr, r4, r7 + and r4, r7, r4, ror #0x18 + orr r4, r4, lr, ror #0x8 + str r4, [r6, #0x40] + str r4, [r6], #0x4 + add r2, r2, r4 + eor r4, r10, r11 + and r4, r4, r9 + eor r4, r4, r11 + add r2, r2, r4 + mov r9, r9, ror #0x2 + mov r12, r11 + mov r11, r10 + mov r10, r9 + mov r9, r3 + mov r3, r2 + add r5, r5, #0x4 + cmp r5, #0x40 + blt _020D33E8 + mov r7, #0x0 + mov r6, sp +_020D3448: + ldr r2, [r6, #0x0] + ldr r5, [r6, #0x8] + ldr r4, [r6, #0x20] + ldr lr, [r6, #0x34] + eor r2, r2, r5 + eor r4, r4, lr + eor r2, r2, r4 + mov r2, r2, ror #0x1F + str r2, [r6, #0x40] + str r2, [r6], #0x4 + add r2, r2, r12 + add r2, r2, r8 + add r2, r2, r3, ror #0x1B + eor r4, r10, r11 + and r4, r4, r9 + eor r4, r4, r11 + add r2, r2, r4 + mov r9, r9, ror #0x2 + mov r12, r11 + mov r11, r10 + mov r10, r9 + mov r9, r3 + mov r3, r2 + add r7, r7, #0x4 + cmp r7, #0x10 + blt _020D3448 + ldr r8, _020D33BC ; =0x6ED9EBA1 + mov r7, #0x0 +_020D34B8: + ldr r2, [r6, #0x0] + ldr r4, [r6, #0x8] + ldr lr, [r6, #0x20] + ldr r5, [r6, #0x34] + eor r2, r2, r4 + eor lr, lr, r5 + eor r2, r2, lr + mov r2, r2, ror #0x1F + str r2, [r6, #0x40] + str r2, [r6], #0x4 + add r2, r2, r12 + add r2, r2, r8 + add r2, r2, r3, ror #0x1B + eor lr, r9, r10 + eor lr, lr, r11 + add r2, r2, lr + mov r9, r9, ror #0x2 + mov r12, r11 + mov r11, r10 + mov r10, r9 + mov r9, r3 + mov r3, r2 + add r7, r7, #0x1 + cmp r7, #0xc + moveq r6, sp + cmp r7, #0x14 + blt _020D34B8 + ldr r8, _020D33C0 ; =0x8F1BBCDC + mov r7, #0x0 +_020D352C: + ldr r2, [r6, #0x0] + ldr lr, [r6, #0x8] + ldr r5, [r6, #0x20] + ldr r4, [r6, #0x34] + eor r2, r2, lr + eor r5, r5, r4 + eor r2, r2, r5 + mov r2, r2, ror #0x1F + str r2, [r6, #0x40] + str r2, [r6], #0x4 + add r2, r2, r12 + add r2, r2, r8 + add r2, r2, r3, ror #0x1B + orr r5, r9, r10 + and r5, r5, r11 + and r4, r9, r10 + orr r5, r5, r4 + add r2, r2, r5 + mov r9, r9, ror #0x2 + mov r12, r11 + mov r11, r10 + mov r10, r9 + mov r9, r3 + mov r3, r2 + add r7, r7, #0x1 + cmp r7, #0x8 + moveq r6, sp + cmp r7, #0x14 + blt _020D352C + ldr r8, _020D33C4 ; =0xCA62C1D6 + mov r7, #0x0 +_020D35A8: + ldr r2, [r6, #0x0] + ldr r5, [r6, #0x8] + ldr r4, [r6, #0x20] + ldr lr, [r6, #0x34] + eor r2, r2, r5 + eor r4, r4, lr + eor r2, r2, r4 + mov r2, r2, ror #0x1F + str r2, [r6, #0x40] + str r2, [r6], #0x4 + add r2, r2, r12 + add r2, r2, r8 + add r2, r2, r3, ror #0x1B + eor r4, r9, r10 + eor r4, r4, r11 + add r2, r2, r4 + mov r9, r9, ror #0x2 + mov r12, r11 + mov r11, r10 + mov r10, r9 + mov r9, r3 + mov r3, r2 + add r7, r7, #0x1 + cmp r7, #0x4 + moveq r6, sp + cmp r7, #0x14 + blt _020D35A8 + ldmia r0, {r2,r4,r6-r7,lr} + add r3, r3, r2 + add r9, r9, r4 + add r10, r10, r6 + add r11, r11, r7 + add r12, r12, lr + stmia r0, {r3,r9-r12} + ldr lr, [sp, #0x80] + subs lr, lr, #0x40 + str lr, [sp, #0x80] + bgt _020D33D8 + add sp, sp, #0x84 + ldmia sp!, {r4-r12,pc} diff --git a/arm9/asm/FS_arm9.s b/arm9/asm/FS_arm9.s new file mode 100644 index 00000000..8fcbff7a --- /dev/null +++ b/arm9/asm/FS_arm9.s @@ -0,0 +1,3011 @@ + .include "asm/macros.inc + .include "global.inc" + .section .text + + arm_func_start FSi_TranslateCommand +FSi_TranslateCommand: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r0, [r8, #0xc] + mov r7, r1 + mov r1, #0x1 + ldr r5, [r8, #0x8] + mov r4, r1, lsl r7 + ands r0, r0, #0x4 + moveq r1, #0x0 + cmp r1, #0x0 + ldrne r0, [r5, #0x1c] + orrne r0, r0, #0x200 + strne r0, [r5, #0x1c] + ldreq r0, [r5, #0x1c] + orreq r0, r0, #0x100 + streq r0, [r5, #0x1c] + ldr r0, [r5, #0x58] + ands r0, r0, r4 + beq _020CFFE4 + ldr r2, [r5, #0x54] + mov r0, r8 + mov r1, r7 + blx r2 + mov r6, r0 + cmp r6, #0x8 + addls pc, pc, r6, lsl #0x2 + b _020CFFE8 +_020CFFA0: + b _020CFFC4 + b _020CFFC4 + b _020CFFE8 + b _020CFFE8 + b _020CFFC4 + b _020CFFE8 + b _020CFFE8 + b _020CFFE8 + b _020CFFCC +_020CFFC4: + str r6, [r8, #0x14] + b _020CFFE8 +_020CFFCC: + ldr r1, [r5, #0x58] + mvn r0, r4 + and r0, r1, r0 + str r0, [r5, #0x58] + mov r6, #0x7 + b _020CFFE8 +_020CFFE4: + mov r6, #0x7 +_020CFFE8: + cmp r6, #0x7 + bne _020D0004 + ldr r1, _020D00AC ; =0x02103F80 + mov r0, r8 + ldr r1, [r1, r7, lsl #0x2] + blx r1 + mov r6, r0 +_020D0004: + cmp r6, #0x6 + bne _020D0060 + ldr r0, [r8, #0xc] + ands r0, r0, #0x4 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020D00A0 + bl OS_DisableInterrupts + ldr r1, [r5, #0x1c] + mov r4, r0 + ands r0, r1, #0x200 + beq _020D0050 + add r6, r5, #0xc +_020D003C: + mov r0, r6 + bl OS_SleepThread + ldr r0, [r5, #0x1c] + ands r0, r0, #0x200 + bne _020D003C +_020D0050: + mov r0, r4 + ldr r6, [r8, #0x14] + bl OS_RestoreInterrupts + b _020D00A0 +_020D0060: + ldr r0, [r8, #0xc] + ands r0, r0, #0x4 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + ldrne r0, [r5, #0x1c] + bicne r0, r0, #0x200 + strne r0, [r5, #0x1c] + strne r6, [r8, #0x14] + bne _020D00A0 + ldr r1, [r5, #0x1c] + mov r0, r8 + bic r2, r1, #0x100 + mov r1, r6 + str r2, [r5, #0x1c] + bl FSi_ReleaseCommand +_020D00A0: + mov r0, r6 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020D00AC: .word 0x02103F80 + + arm_func_start FSi_ReleaseCommand +FSi_ReleaseCommand: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r1, [r6, #0x0] + mov r4, r0 + ldr r0, [r6, #0x4] + cmp r1, #0x0 + strne r0, [r1, #0x4] + cmp r0, #0x0 + strne r1, [r0, #0x0] + mov r0, #0x0 + str r0, [r6, #0x0] + ldr r1, [r6, #0x0] + add r0, r6, #0x18 + str r1, [r6, #0x4] + ldr r1, [r6, #0xc] + bic r1, r1, #0x4f + str r1, [r6, #0xc] + str r5, [r6, #0x14] + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FSi_CloseFileCommand +FSi_CloseFileCommand: ; 0x020D0114 + mov r0, #0x0 + bx lr + + arm_func_start FSi_OpenFileDirectCommand +FSi_OpenFileDirectCommand: ; 0x020D011C + ldr r1, [r0, #0x30] + str r1, [r0, #0x24] + ldr r1, [r0, #0x30] + str r1, [r0, #0x2c] + ldr r1, [r0, #0x34] + str r1, [r0, #0x28] + ldr r1, [r0, #0x38] + str r1, [r0, #0x20] + mov r0, #0x0 + bx lr + + arm_func_start FSi_OpenFileFastCommand +FSi_OpenFileFastCommand: ; 0x020D0144 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r5, r0 + ldr r1, [r5, #0x8] + ldr r4, [r5, #0x34] + ldr r0, [r1, #0x30] + mov r2, r4, lsl #0x3 + cmp r2, r0 + addcs sp, sp, #0x14 + movcs r0, #0x1 + ldmcsia sp!, {r4-r5,lr} + bxcs lr + str r1, [sp, #0x8] + ldr r1, [r1, #0x2c] + add r0, sp, #0x8 + add r3, r1, r2 + add r1, sp, #0x0 + mov r2, #0x8 + str r3, [sp, #0xc] + bl FSi_ReadTable +_020D0194: + cmp r0, #0 + addne sp, sp, #0x14 + ldmneia sp!, {r4-r5,lr} + bxne lr + ldr r1, [sp] + mov r0, r5 + str r1, [r5, #0x30] + ldr r2, [sp, #0x4] + mov r1, #7 + str r2, [r5, #0x34] + str r4, [r5, #0x38] + bl FSi_TranslateCommand + add sp, sp, #0x14 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FSi_GetPathCommand +FSi_GetPathCommand: ; 0x020D01D0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xe4 + mov r4, r0 + ldr r1, [r4, #0x8] + add r0, sp, #0x98 + add r11, r4, #0x30 + str r1, [sp, #0x0] + bl FS_InitFile + ldr r0, [r4, #0x8] + str r0, [sp, #0xa0] + ldr r0, [r4, #0xc] + ands r0, r0, #0x20 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + ldrneh r5, [r4, #0x24] + movne r4, #0x10000 + bne _020D02BC + ldrh r0, [r11, #0x8] + ldr r4, [r4, #0x20] + cmp r0, #0x0 + ldrneh r5, [r11, #0xa] + bne _020D02BC + mov r10, #0x0 + mov r9, r10 + mov r5, #0x10000 + add r8, sp, #0x98 + mov r6, #0x3 + mov r7, #0x1 +_020D0244: + mov r0, r8 + mov r1, r10 + bl FSi_SeekDirDirect + add r2, sp, #0x4 + cmp r10, #0x0 + mov r0, r8 + mov r1, r6 + ldreq r9, [sp, #0xc4] + str r2, [sp, #0xc8] + str r7, [sp, #0xcc] + bl FSi_TranslateCommand +_020D0270: + cmp r0, #0x0 + bne _020D02A8 +_020D0278: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bne _020D0294 + ldr r0, [sp, #0x8] + cmp r0, r4 + ldreqh r5, [sp, #0xbc] + beq _020D02A8 +_020D0294: + mov r0, r8 + mov r1, r6 + bl FSi_TranslateCommand + cmp r0, #0x0 + beq _020D0278 +_020D02A8: + cmp r5, #0x10000 + bne _020D02BC + add sl, sl, #0x1 + cmp sl, r9 + bcc _020D0244 +_020D02BC: + cmp r5, #0x10000 + moveq r0, #0x0 + streqh r0, [r11, #0x8] + addeq sp, sp, #0xe4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldrh r0, [r11, #0x8] + cmp r0, #0x0 + bne _020D03B8 + ldr r0, [sp, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0xff + addls r9, r1, #0x1 + bls _020D0308 + cmp r0, #0xff00 + addls r9, r1, #0x2 + addhi r9, r1, #0x3 +_020D0308: + cmp r4, #0x10000 + ldrne r0, [sp, #0x14] + add r9, r9, #0x2 + addne r9, r9, r0 + mov r10, r5 + cmp r5, #0x0 + beq _020D03AC + add r0, sp, #0x98 + mov r1, r5 + bl FSi_SeekDirDirect + add r8, sp, #0x98 + mov r6, #0x3 + mov r7, #0x1 +_020D033C: + ldr r1, [sp, #0xc4] + mov r0, r8 + bl FSi_SeekDirDirect + add r2, sp, #0x4 + mov r0, r8 + mov r1, r6 + str r2, [sp, #0xc8] + str r7, [sp, #0xcc] + bl FSi_TranslateCommand +_020D0360: + cmp r0, #0x0 + bne _020D03A0 +_020D0368: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _020D038C + ldrh r0, [sp, #0x8] + cmp r0, sl + ldreq r0, [sp, #0x14] + addeq r0, r0, #0x1 + addeq r9, r9, r0 + beq _020D03A0 +_020D038C: + mov r0, r8 + mov r1, r6 + bl FSi_TranslateCommand + cmp r0, #0x0 + beq _020D0368 +_020D03A0: + ldrh sl, [sp, #0xbc] + cmp sl, #0x0 + bne _020D033C +_020D03AC: + add r0, r9, #0x1 + strh r0, [r11, #0x8] + strh r5, [r11, #0xa] +_020D03B8: + ldr r7, [r11, #0x0] + cmp r7, #0x0 + addeq sp, sp, #0xe4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldrh r6, [r11, #0x8] + ldr r0, [r11, #0x4] + cmp r0, r6 + addcc sp, sp, #0xe4 + movcc r0, #0x1 + ldmccia sp!, {r4-r11,lr} + bxcc lr + ldr r0, [sp, #0x0] + mov r9, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0xff + movls r8, #0x1 + bls _020D0410 + cmp r0, #0xff00 + movls r8, #0x2 + movhi r8, #0x3 +_020D0410: + ldr r0, [sp, #0x0] + mov r1, r7 + mov r2, r8 + bl MI_CpuCopy8 + add r1, r9, r8 + ldr r0, _020D058C ; =0x0210682C + add r1, r7, r1 + mov r2, #0x2 + bl MI_CpuCopy8 + add r0, sp, #0x98 + mov r1, r5 + bl FSi_SeekDirDirect + cmp r4, #0x10000 + beq _020D04C4 + add r3, sp, #0x4 + mov r2, #0x0 + add r0, sp, #0x98 + mov r1, #0x3 + str r3, [sp, #0xc8] + str r2, [sp, #0xcc] + bl FSi_TranslateCommand +_020D0464: + cmp r0, #0x0 + bne _020D04A0 + add r9, sp, #0x98 + mov r8, #0x3 +_020D0474: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bne _020D048C + ldr r0, [sp, #0x8] + cmp r0, r4 + beq _020D04A0 +_020D048C: + mov r0, r9 + mov r1, r8 + bl FSi_TranslateCommand + cmp r0, #0x0 + beq _020D0474 +_020D04A0: + ldr r0, [sp, #0x14] + add r1, r7, r6 + add r4, r0, #0x1 + add r0, sp, #0x18 + mov r2, r4 + sub r1, r1, r4 + bl MI_CpuCopy8 + sub r6, r6, r4 + b _020D04D4 +_020D04C4: + add r0, r7, r6 + mov r1, #0x0 + strb r1, [r0, #-0x1] + sub r6, r6, #0x1 +_020D04D4: + cmp r5, #0x0 + beq _020D057C + add r10, sp, #0x98 + add r11, sp, #0x4 + mov r4, #0x3 + mov r9, #0x0 + mov r8, #0x2f +_020D04F0: + ldr r1, [sp, #0xc4] + mov r0, r10 + bl FSi_SeekDirDirect + add r2, r7, r6 + mov r0, r10 + mov r1, r4 + str r11, [sp, #0xc8] + str r9, [sp, #0xcc] + strb r8, [r2, #-0x1] + sub r6, r6, #0x1 + bl FSi_TranslateCommand +_020D051C: + cmp r0, #0x0 + bne _020D0570 +_020D0524: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _020D055C + ldrh r0, [sp, #0x8] + cmp r0, r5 + bne _020D055C + ldr r5, [sp, #0x14] + add r1, r7, r6 + add r0, sp, #0x18 + mov r2, r5 + sub r1, r1, r5 + bl MI_CpuCopy8 + sub r6, r6, r5 + b _020D0570 +_020D055C: + mov r0, sl + mov r1, r4 + bl FSi_TranslateCommand + cmp r0, #0x0 + beq _020D0524 +_020D0570: + ldrh r5, [sp, #0xbc] + cmp r5, #0x0 + bne _020D04F0 +_020D057C: + mov r0, #0x0 + add sp, sp, #0xe4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020D058C: .word 0x0210682C + + arm_func_start FSi_FindPathCommand +FSi_FindPathCommand: ; 0x020D0590 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x9c + mov r10, r0 + ldr r2, [r10, #0x40] + ldr r9, [r10, #0x3c] + mov r1, #0x2 + str r2, [sp, #0x0] + bl FSi_TranslateCommand + ldrb r1, [r9, #0x0] + cmp r1, #0x0 + beq _020D0780 + mov r0, #0x2 + add r11, sp, #0x1c + mov r4, #0x3 + mov r5, #0x1 + mov r6, #0x0 + str r0, [sp, #0x4] +_020D05D4: + mov r7, r6 + b _020D05E0 +_020D05DC: + add r7, r7, #0x1 +_020D05E0: + ldrb r8, [r9, r7] + mov r0, r6 + cmp r8, #0x0 + beq _020D0600 + cmp r8, #0x2f + beq _020D0600 + cmp r8, #0x5c + movne r0, r5 +_020D0600: + cmp r0, #0x0 + bne _020D05DC + cmp r8, #0x0 + bne _020D061C + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _020D0620 +_020D061C: + mov r8, r5 +_020D0620: + cmp r7, #0x0 + addeq sp, sp, #0x9c + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + cmp r1, #0x2e + bne _020D068C + cmp r7, #0x1 + addeq r9, r9, #0x1 + beq _020D0764 + ldrb r0, [r9, #0x1] + cmp r7, #0x2 + moveq r1, r5 + movne r1, r6 + cmp r0, #0x2e + moveq r0, r5 + movne r0, r6 + ands r0, r1, r0 + beq _020D068C + ldrh r0, [r10, #0x24] + cmp r0, #0x0 + beq _020D0684 + ldr r1, [r10, #0x2c] + mov r0, r10 + bl FSi_SeekDirDirect +_020D0684: + add r9, r9, #0x2 + b _020D0764 +_020D068C: + cmp r7, #0x7f + addgt sp, sp, #0x9c + movgt r0, #0x1 + ldmgtia sp!, {r4-r11,lr} + bxgt lr + add r0, sp, #0x8 + str r0, [r10, #0x30] + str r6, [r10, #0x34] +_020D06AC: + mov r0, r10 + mov r1, r4 + bl FSi_TranslateCommand +_020D06B8: + cmp r0, #0x0 + addne sp, sp, #0x9c + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x14] + cmp r8, r0 + bne _020D06AC + ldr r0, [sp, #0x18] + cmp r7, r0 + bne _020D06AC + mov r0, r9 + mov r1, fp + mov r2, r7 + bl FSi_StrNICmp + cmp r0, #0x0 + bne _020D06AC + cmp r8, #0x0 + beq _020D0728 + add r0, sp, #0x8 + add r3, sl, #0x30 + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + ldr r1, [sp, #0x4] + mov r0, sl + add r9, r9, r7 + bl FSi_TranslateCommand + b _020D0764 +_020D0728: + ldr r0, [sp] + cmp r0, #0x0 + addne sp, sp, #0x9c + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r3, [sl, #0x44] + ldr r2, [sp, #0x8] + ldr r1, [sp, #0xC] + add sp, sp, #0x9c + str r2, [r3] + str r1, [r3, #0x4] + mov r0, #0x0 + ldmia sp!, {r4-r11,lr} + bx lr +_020D0764: + ldrb r0, [r9, #0x0] + cmp r0, #0x0 + movne r0, r5 + moveq r0, r6 + ldrb r1, [r9, r0]! + cmp r1, #0x0 + bne _020D05D4 +_020D0780: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + moveq r0, #0x1 + addne r0, r10, #0x20 + ldrne r3, [r10, #0x44] + ldmneia r0, {r0-r2} + stmneia r3, {r0-r2} + movne r0, #0x0 + add sp, sp, #0x9c + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FSi_ReadDirCommand +FSi_ReadDirCommand: ; 0x020D07AC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r4, [r5, #0x30] + ldr r1, [r5, #0x8] + add r0, sp, #0x4 + str r1, [sp, #0x4] + ldr r3, [r5, #0x28] + add r1, sp, #0x0 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FSi_ReadTable +_020D07DC: + cmp r0, #0x0 + addne sp, sp, #0xC + ldmneia sp!, {r4-r5,lr} + bxne lr + ldrb r1, [sp] + and r2, r1, #0x7F + mov r1, r1, asr #0x7 + str r2, [r4, #0x10] + and r1, r1, #0x1 + str r1, [r4, #0xC] + ldr r2, [r4, #0x10] + cmp r2, #0x0 + addeq sp, sp, #0xC + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, [r5, #0x34] + cmp r1, #0x0 + bne _020D0858 + add r0, sp, #0x4 + add r1, r4, #0x14 + bl FSi_ReadTable + cmp r0, #0x0 + addne sp, sp, #0xC + ldmneia sp!, {r4-r5,lr} + bxne lr + ldr r1, [r4, #0x10] + mov r2, #0x0 + add r1, r4, r1 + strb r2, [r1, #0x14] + b _020D0864 +_020D0858: + ldr r1, [sp, #0x8] + add r1, r1, r2 + str r1, [sp, #0x8] +_020D0864: + ldr r1, [r4, #0xC] + cmp r1, #0x0 + beq _020D08B8 + add r0, sp, #0x4 + add r1, sp, #0x2 + mov r2, #0x2 + bl FSi_ReadTable + cmp r0, #0x0 + addne sp, sp, #0xC + ldmneia sp!, {r4-r5,lr} + bxne lr + ldr r2, [r5, #0x8] + ldr r1, _020D08E8 + str r2, [r4] + ldrh r3, [sp, #0x2] + mov r2, #0x0 + and r1, r3, r1 + strh r1, [r4, #0x4] + strh r2, [r4, #0x6] + str r2, [r4, #0x8] + b _020D08D4 +_020D08B8: + ldr r1, [r5, #0x8] + str r1, [r4] + ldrh r1, [r5, #0x26] + str r1, [r4, #0x4] + ldrh r1, [r5, #0x26] + add r1, r1, #0x1 + strh r1, [r5, #0x26] +_020D08D4: + ldr r1, [sp, #0x8] + str r1, [r5, #0x28] + add sp, sp, #0xC + ldmia sp!, {r4-r5,lr} + bx lr +_020D08E8: .word 0x00000FFF + + arm_func_start FSi_SeekDirCommand +FSi_SeekDirCommand: ; 0x020D08EC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r5, [r6, #0x8] + add r4, r6, #0x30 + str r5, [sp, #0x8] + ldrh r1, [r4, #0x4] + ldr r2, [r5, #0x34] + add r0, sp, #0x8 + add r3, r2, r1, lsl #0x3 + add r1, sp, #0x0 + mov r2, #0x8 + str r3, [sp, #0xc] + bl FSi_ReadTable + movs r3, r0 + bne _020D0978 + add r12, r6, #0x20 + ldmia r4, {r0-r2} + stmia r12, {r0-r2} + ldrh r0, [r4, #0x6] + cmp r0, #0x0 + bne _020D0968 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + bne _020D0968 + ldrh r0, [sp, #0x4] + strh r0, [r6, #0x26] + ldr r1, [r5, #0x34] + ldr r0, [sp, #0x0] + add r0, r1, r0 + str r0, [r6, #0x28] +_020D0968: + ldrh r1, [sp, #0x6] + ldr r0, _020D0988 ; =0x00000FFF + and r0, r1, r0 + str r0, [r6, #0x2c] +_020D0978: + mov r0, r3 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020D0988: .word 0x00000FFF + + arm_func_start FSi_WriteFileCommand +FSi_WriteFileCommand: ; 0x020D098C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x2c] + ldr r3, [r0, #0x38] + ldr lr, [r0, #0x8] + ldr r1, [r0, #0x30] + add r12, r2, r3 + str r12, [r0, #0x2c] + ldr r12, [lr, #0x4c] + mov r0, lr + blx r12 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FSi_ReadFileCommand +FSi_ReadFileCommand: ; 0x020D09C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x2c] + ldr r3, [r0, #0x38] + ldr lr, [r0, #0x8] + ldr r1, [r0, #0x30] + add r12, r2, r3 + str r12, [r0, #0x2c] + ldr r12, [lr, #0x48] + mov r0, lr + blx r12 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FSi_SeekDirDirect +FSi_SeekDirDirect: ; 0x020D09FC + ldr r3, [r0, #0xc] + mov r2, #0x0 + orr r3, r3, #0x4 + str r3, [r0, #0xc] + ldr r3, [r0, #0x8] + ldr ip, _020D0A2C ; =FSi_TranslateCommand + str r3, [r0, #0x30] + str r2, [r0, #0x38] + strh r2, [r0, #0x36] + strh r1, [r0, #0x34] + mov r1, #0x2 + bx r12 + .balign 4 +_020D0A2C: .word FSi_TranslateCommand + + arm_func_start FSi_ReadTable +FSi_ReadTable: + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r5, [r7, #0x0] + mov r6, r2 + ldr r2, [r5, #0x1c] + mov r0, r5 + orr r2, r2, #0x200 + str r2, [r5, #0x1c] + ldr r2, [r7, #0x4] + ldr r4, [r5, #0x50] + mov r3, r6 + blx r4 + cmp r0, #0x0 + beq _020D0A7C + cmp r0, #0x1 + beq _020D0A7C + cmp r0, #0x6 + beq _020D0A8C + b _020D0AC8 +_020D0A7C: + ldr r1, [r5, #0x1c] + bic r1, r1, #0x200 + str r1, [r5, #0x1c] + b _020D0AC8 +_020D0A8C: + bl OS_DisableInterrupts + ldr r1, [r5, #0x1c] + mov r4, r0 + ands r0, r1, #0x200 + beq _020D0AB8 + add r8, r5, #0xc +_020D0AA4: + mov r0, r8 + bl OS_SleepThread + ldr r0, [r5, #0x1c] + ands r0, r0, #0x200 + bne _020D0AA4 +_020D0AB8: + mov r0, r4 + bl OS_RestoreInterrupts + ldr r0, [r5, #0x24] + ldr r0, [r0, #0x14] +_020D0AC8: + ldr r1, [r7, #0x4] + add r1, r1, r6 + str r1, [r7, #0x4] + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FSi_StrNICmp +FSi_StrNICmp: ; 0x020D0ADC + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + mov lr, #0x0 + bls _020D0B30 +_020D0AF0: + ldrb r12, [r0, lr] + ldrb r3, [r1, lr] + sub r12, r12, #0x41 + cmp r12, #0x19 + sub r3, r3, #0x41 + addls r12, r12, #0x20 + cmp r3, #0x19 + addls r3, r3, #0x20 + cmp r12, r3 + addne sp, sp, #0x4 + subne r0, r12, r3 + ldmneia sp!, {lr} + bxne lr + add lr, lr, #0x1 + cmp lr, r2 + blo _020D0AF0 +_020D0B30: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FS_NotifyArchiveAsyncEnd +FS_NotifyArchiveAsyncEnd: ; 0x020D0B40 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r0, [r4, #0x1c] + mov r6, r1 + ands r0, r0, #0x100 + beq _020D0B8C + ldr r2, [r4, #0x1c] + ldr r0, [r4, #0x24] + bic r2, r2, #0x100 + str r2, [r4, #0x1c] + bl FSi_ReleaseCommand + mov r0, r4 + bl FSi_NextCommand +_020D0B74: + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + bl FSi_ExecuteAsyncCommand + ldmia sp!, {r4-r6,lr} + bx lr +_020D0B8C: + ldr r5, [r4, #0x24] + bl OS_DisableInterrupts + str r6, [r5, #0x14] + ldr r1, [r4, #0x1c] + mov r5, r0 + bic r1, r1, #0x200 + add r0, r4, #0xc + str r1, [r4, #0x1c] + bl OS_WakeupThread + mov r0, r5 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FS_SetArchiveProc +FS_SetArchiveProc: ; 0x020D0BC0 + cmp r2, #0x0 + moveq r1, #0x0 + beq _020D0BD4 + cmp r1, #0x0 + moveq r2, #0x0 +_020D0BD4: + str r1, [r0, #0x54] + str r2, [r0, #0x58] + bx lr + + arm_func_start FS_ResumeArchive +FS_ResumeArchive: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + mov r6, #0x0 + bl OS_DisableInterrupts + ldr r1, [r4, #0x1c] + mov r5, r0 + ands r0, r1, #0x8 + movne r0, #0x1 + moveq r0, r6 + cmp r0, #0x0 + moveq r7, #0x1 + movne r7, #0x0 + cmp r7, #0x0 + bne _020D0C34 + ldr r1, [r4, #0x1c] + mov r0, r4 + bic r1, r1, #0x8 + str r1, [r4, #0x1c] + bl FSi_NextCommand + mov r6, r0 +_020D0C34: + mov r0, r5 + bl OS_RestoreInterrupts +_020D0C3C: + cmp r6, #0x0 + beq _020D0C4C + mov r0, r6 + bl FSi_ExecuteAsyncCommand +_020D0C4C: + mov r0, r7 + add sp, sp, #0x4 + ldmia sp!, {r4-r7, lr} + bx lr + + arm_func_start FS_SuspendArchive +FS_SuspendArchive: ; 0x020D0C5C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + bl OS_DisableInterrupts + ldr r1, [r6, #0x1c] + mov r4, r0 + ands r0, r1, #0x8 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + moveq r5, #0x1 + movne r5, #0x0 + cmp r5, #0x0 + beq _020D0CD4 + ldr r0, [r6, #0x1c] + ands r0, r0, #0x10 + beq _020D0CC8 + ldr r0, [r6, #0x1c] + orr r0, r0, #0x40 + str r0, [r6, #0x1c] + add r7, r6, #0x14 +_020D0CB0: + mov r0, r7 + bl OS_SleepThread + ldr r0, [r6, #0x1c] + ands r0, r0, #0x40 + bne _020D0CB0 + b _020D0CD4 +_020D0CC8: + ldr r0, [r6, #0x1c] + orr r0, r0, #0x8 + str r0, [r6, #0x1c] +_020D0CD4: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FS_UnloadArchiveTables +FS_UnloadArchiveTables: ; 0x020D0CEC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x1c] + mov r4, #0x0 + ands r0, r0, #0x2 + movne r0, #0x1 + moveq r0, r4 + cmp r0, #0x0 + beq _020D0D74 + mov r0, r5 + bl FS_SuspendArchive + ldr r1, [r5, #0x1c] + ands r1, r1, #0x4 + movne r1, #0x1 + moveq r1, #0x0 + cmp r1, #0x0 + beq _020D0D64 + ldr r2, [r5, #0x1c] + mov r1, #0x0 + bic r2, r2, #0x4 + str r2, [r5, #0x1c] + ldr r4, [r5, #0x44] + str r1, [r5, #0x44] + ldr r1, [r5, #0x3c] + str r1, [r5, #0x2c] + ldr r1, [r5, #0x40] + str r1, [r5, #0x34] + ldr r1, [r5, #0x48] + str r1, [r5, #0x50] +_020D0D64: + cmp r0, #0x0 + beq _020D0D74 + mov r0, r5 + bl FS_ResumeArchive +_020D0D74: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020D0D84 +FUN_020D0D84: ; 0x020D0D84 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4c + mov r7, r0 + ldr r3, [r7, #0x30] + ldr r0, [r7, #0x38] + mov r6, r1 + add r0, r3, r0 + add r0, r0, #0x20 + add r0, r0, #0x1f + bic r5, r0, #0x1f + cmp r5, r2 + bhi _020D0E9C + add r1, r6, #0x1f + add r0, sp, #0x4 + bic r4, r1, #0x1f + bl FS_InitFile + ldr r2, [r7, #0x2c] + mvn r0, #0x0 + str r0, [sp, #0x0] + ldr r3, [r7, #0x30] + add r0, sp, #0x4 + mov r1, r7 + add r3, r2, r3 + bl FS_OpenFileDirect +_020D0DE4: + cmp r0, #0x0 + beq _020D0E1C + ldr r2, [r7, #0x30] + add r0, sp, #0x4 + mov r1, r4 + bl FS_ReadFile + cmp r0, #0x0 + bge _020D0E14 + ldr r2, [r7, #0x30] + mov r0, r4 + mov r1, #0x0 + bl MI_CpuFill8 +_020D0E14: + add r0, sp, #0x4 + bl FS_CloseFile +_020D0E1C: + str r4, [r7, #0x2C] + ldr ip, [r7, #0x30] + ldr r2, [r7, #0x34] + mvn r0, #0x0 + str r0, [sp] + ldr r3, [r7, #0x38] + add r0, sp, #0x4 + mov r1, r7 + add r3, r2, r3 + add r4, r4, ip + bl FS_OpenFileDirect + cmp r0, #0x0 + beq _020D0E80 + ldr r2, [r7, #0x38] + add r0, sp, #0x4 + mov r1, r4 + bl FS_ReadFile + cmp r0, #0x0 + bge _020D0E78 + ldr r2, [r7, #0x38] + mov r0, r4 + mov r1, #0x0 + bl MI_CpuFill8 +_020D0E78: + add r0, sp, #0x4 + bl FS_CloseFile +_020D0E80: + str r4, [r7, #0x34] + ldr r0, _020D0EAC + str r6, [r7, #0x44] + str r0, [r7, #0x50] + ldr r0, [r7, #0x1C] + orr r0, r0, #0x4 + str r0, [r7, #0x1C] +_020D0E9C: + mov r0, r5 + add sp, sp, #0x4C + ldmia sp!, {r4-r7,lr} + bx lr +_020D0EAC: + .word FSi_ReadMemoryCore + + arm_func_start FUN_020D0EB0 +FUN_020D0EB0: ; 0x020D0EB0 + stmdb sp!, {r4-r8,lr} + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, [r5, #0x1c] + mov r4, r0 + ands r0, r1, #0x2 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020D0F64 + mov r0, r5 + ldr r1, [r5, #0x1c] + bl FS_SuspendArchive + ldr r1, [r5, #0x1c] + mov r7, r0 + orr r0, r1, #0x80 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x24] + cmp r0, #0x0 + beq _020D0F1C + mov r6, #0x3 +_020D0F04: + ldr r8, [r0, #0x4] + mov r1, r6 + bl FSi_ReleaseCommand + mov r0, r8 + cmp r8, #0x0 + bne _020D0F04 +_020D0F1C: + mov r0, #0x0 + str r0, [r5, #0x24] + cmp r7, #0x0 + beq _020D0F34 + mov r0, r5 + bl FS_ResumeArchive +_020D0F34: + mov r0, #0x0 + str r0, [r5, #0x28] + str r0, [r5, #0x2c] + str r0, [r5, #0x30] + str r0, [r5, #0x34] + str r0, [r5, #0x38] + str r0, [r5, #0x40] + ldr r0, [r5, #0x40] + str r0, [r5, #0x3c] + ldr r0, [r5, #0x1c] + bic r0, r0, #0xa2 + str r0, [r5, #0x1c] +_020D0F64: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FS_LoadArchive +FS_LoadArchive: ; 0x020D0F78 + str r1, [r0, #0x28] + str r3, [r0, #0x30] + str r2, [r0, #0x3c] + ldr r1, [r0, #0x3c] + ldr r2, [sp, #0x4] + str r1, [r0, #0x2c] + str r2, [r0, #0x38] + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x8] + str r1, [r0, #0x40] + ldr r1, [r0, #0x40] + cmp r2, #0x0 + str r1, [r0, #0x34] + ldreq r2, _020D0FE8 ; =FSi_ReadMemCallback + ldr r1, [sp, #0xc] + str r2, [r0, #0x48] + cmp r1, #0x0 + ldreq r1, _020D0FEC ; =FSi_WriteMemCallback + str r1, [r0, #0x4c] + ldr r2, [r0, #0x48] + mov r1, #0x0 + str r2, [r0, #0x50] + str r1, [r0, #0x44] + ldr r1, [r0, #0x1c] + orr r1, r1, #0x2 + str r1, [r0, #0x1c] + mov r0, #0x1 + bx lr + .balign 4 +_020D0FE8: .word FSi_ReadMemCallback +_020D0FEC: .word FSi_WriteMemCallback + + arm_func_start FUN_020D0FF0 +FUN_020D0FF0: ; 0x020D0FF0 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl OS_DisableInterrupts + ldr r2, [r4, #0x4] + mov r3, #0x0 + cmp r2, #0x0 + ldrne r1, [r4, #0x8] + strne r1, [r2, #0x8] + ldr r2, [r4, #0x8] + cmp r2, #0x0 + ldrne r1, [r4, #0x4] + strne r1, [r2, #0x4] + str r3, [r4, #0x0] + str r3, [r4, #0x8] + ldr r1, [r4, #0x8] + ldr r2, _020D1080 ; =0x021D53EC + str r1, [r4, #0x4] + ldr r1, [r4, #0x1c] + bic r1, r1, #0x1 + str r1, [r4, #0x1c] + ldr r1, [r2, #0x0] + cmp r1, r4 + bne _020D1074 + ldr r1, _020D1084 ; =0x021D53E8 + str r3, [r2, #0x8] + ldr r1, [r1, #0x0] + strh r3, [r2, #0x6] + str r1, [r2, #0x0] + strh r3, [r2, #0x4] +_020D1074: + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020D1080: .word 0x021D53EC +_020D1084: .word 0x021D53E8 + + arm_func_start FS_RegisterArchiveName +FS_RegisterArchiveName: ; 0x020D1088 + stmdb sp!, {r4-r8,lr} + mov r6, r1 + mov r5, r2 + mov r7, r0 + mov r8, #0x0 + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl FS_FindArchive +_020D10B0: + cmp r0, #0x0 + bne _020D112C + ldr r1, _020D1140 + ldr r2, [r1] + cmp r2, #0x0 + bne _020D10E8 + ldr r0, _020D1144 + mov r2, r8 + str r7, [r1] + str r7, [r0] + str r2, [r0, #0x8] + strh r2, [r0, #0x6] + strh r2, [r0, #0x4] + b _020D110C +_020D10E8: + ldr r0, [r2, #0x4] + cmp r0, #0x0 + beq _020D1104 +_020D10F4: + mov r2, r0 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + bne _020D10F4 +_020D1104: + str r7, [r2, #0x4] + str r2, [r7, #0x8] +_020D110C: + mov r0, r6 + mov r1, r5 + bl FSi_GetPackedName + str r0, [r7] + ldr r0, [r7, #0x1C] + mov r8, #0x1 + orr r0, r0, #0x1 + str r0, [r7, #0x1C] +_020D112C: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r8 + ldmia sp!, {r4-r8,lr} + bx lr +_020D1140: .word 0x021D53E8 +_020D1144: .word 0x021D53EC + + arm_func_start FS_FindArchive +FS_FindArchive: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl FSi_GetPackedName + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020D1194 ; =0x021D53E8 + ldr r4, [r1, #0x0] + b _020D116C +_020D1168: + ldr r4, [r4, #0x4] +_020D116C: + cmp r4, #0x0 + beq _020D1180 + ldr r1, [r4, #0x0] + cmp r1, r5 + bne _020D1168 +_020D1180: + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020D1194: .word 0x021D53E8 + + arm_func_start FS_InitArchive +FS_InitArchive: ; 0x020D1198 + stmdb sp!, {r4,lr} + mov r1, #0x0 + mov r2, #0x5c + mov r4, r0 + bl MI_CpuFill8 + mov r1, #0x0 + str r1, [r4, #0x10] + ldr r0, [r4, #0x10] + str r0, [r4, #0xc] + str r1, [r4, #0x18] + ldr r0, [r4, #0x18] + str r0, [r4, #0x14] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FSi_SendCommand +FSi_SendCommand: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r6, [r7, #0x8] + mov r2, #0x1 + str r1, [r7, #0x10] + mov r0, #0x2 + str r0, [r7, #0x14] + ldr r0, [r7, #0xc] + mov r5, r2, lsl r1 + orr r0, r0, #0x1 + str r0, [r7, #0xc] + bl OS_DisableInterrupts + ldr r1, [r6, #0x1c] + mov r4, r0 + ands r0, r1, #0x80 + beq _020D1238 + mov r0, r7 + mov r1, #0x3 + bl FSi_ReleaseCommand + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020D1238: + ands r0, r5, #0x1fc + ldrne r0, [r7, #0xc] + add r2, r6, #0x20 + orrne r0, r0, #0x4 + strne r0, [r7, #0xc] + ldr r1, [r7, #0x0] + ldr r0, [r7, #0x4] + cmp r1, #0x0 + strne r0, [r1, #0x4] + cmp r0, #0x0 + strne r1, [r0, #0x0] + ldr r0, [r2, #0x4] + cmp r0, #0x0 + beq _020D1280 +_020D1270: + mov r2, r0 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + bne _020D1270 +_020D1280: + str r7, [r2, #0x4] + str r2, [r7, #0x0] + mov r1, #0x0 + str r1, [r7, #0x4] + ldr r0, [r6, #0x1c] + ands r0, r0, #0x8 + movne r1, #0x1 + cmp r1, #0x0 + bne _020D132C + ldr r0, [r6, #0x1c] + ands r0, r0, #0x10 + bne _020D132C + ldr r1, [r6, #0x1c] + mov r0, r4 + orr r1, r1, #0x10 + str r1, [r6, #0x1c] + bl OS_RestoreInterrupts + ldr r0, [r6, #0x58] + ands r0, r0, #0x200 + beq _020D12E0 + ldr r2, [r6, #0x54] + mov r0, r7 + mov r1, #0x9 + blx r2 +_020D12E0: + bl OS_DisableInterrupts + ldr r1, [r7, #0xc] + orr r1, r1, #0x40 + str r1, [r7, #0xc] + ldr r1, [r7, #0xc] + ands r1, r1, #0x4 + movne r1, #0x1 + moveq r1, #0x0 + cmp r1, #0x0 + bne _020D1324 + bl OS_RestoreInterrupts + mov r0, r7 + bl FSi_ExecuteAsyncCommand + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020D1324: + bl OS_RestoreInterrupts + b _020D1378 +_020D132C: + ldr r0, [r7, #0xc] + ands r0, r0, #0x4 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + bne _020D135C + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020D135C: + add r0, r7, #0x18 + bl OS_SleepThread + ldr r0, [r7, #0xc] + ands r0, r0, #0x40 + beq _020D135C + mov r0, r4 + bl OS_RestoreInterrupts +_020D1378: + mov r0, r7 + bl FSi_ExecuteSyncCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FSi_ExecuteSyncCommand +FSi_ExecuteSyncCommand: ; 0x020D138C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x10] + bl FSi_TranslateCommand + mov r1, r0 + mov r0, r4 + bl FSi_ReleaseCommand + ldr r0, [r4, #0x8] + bl FSi_NextCommand +_020D13B0: + cmp r0, #0x0 + beq _020D13BC + bl FSi_ExecuteAsyncCommand +_020D13BC: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FSi_ExecuteAsyncCommand +FSi_ExecuteAsyncCommand: ; 0x020D13D4 + stmdb sp!, {r4-r8,lr} + movs r6, r0 + ldr r5, [r6, #0x8] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r7, #0x0 + mov r8, #0x1 +_020D13F0: + bl OS_DisableInterrupts + ldr r1, [r6, #0xc] + mov r4, r0 + orr r0, r1, #0x40 + str r0, [r6, #0xc] + ldr r0, [r6, #0xc] + ands r0, r0, #0x4 + movne r0, r8 + moveq r0, r7 + cmp r0, #0x0 + beq _020D1434 + add r0, r6, #0x18 + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr +_020D1434: + ldr r1, [r6, #0xc] + mov r0, r4 + orr r1, r1, #0x8 + str r1, [r6, #0xc] + bl OS_RestoreInterrupts + ldr r1, [r6, #0x10] + mov r0, r6 + bl FSi_TranslateCommand + cmp r0, #0x6 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r0, r5 + bl FSi_NextCommand + movs r6, r0 + bne _020D13F0 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FSi_NextCommand +FSi_NextCommand: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4c + mov r6, r0 + bl OS_DisableInterrupts + ldr r1, [r6, #0x1c] + mov r5, r0 + ands r0, r1, #0x20 + beq _020D1500 + ldr r0, [r6, #0x1c] + bic r0, r0, #0x20 + str r0, [r6, #0x1c] + ldr r0, [r6, #0x24] + cmp r0, #0x0 + beq _020D1500 + mov r8, #0x0 + mov r9, #0x1 + mov r7, #0x3 +_020D14BC: + ldr r1, [r0, #0xc] + ldr r4, [r0, #0x4] + ands r1, r1, #0x2 + movne r1, r9 + moveq r1, r8 + cmp r1, #0x0 + beq _020D14F4 + ldr r1, [r6, #0x24] + cmp r1, r0 + mov r1, r7 + streq r4, [r6, #0x24] + bl FSi_ReleaseCommand +_020D14EC: + cmp r4, #0x0 + ldreq r4, [r6, #0x24] +_020D14F4: + mov r0, r4 + cmp r4, #0x0 + bne _020D14BC +_020D1500: + ldr r0, [r6, #0x1c] + ands r0, r0, #0x40 + bne _020D15EC + ldr r0, [r6, #0x1c] + ands r0, r0, #0x8 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + bne _020D15EC + ldr r4, [r6, #0x24] + cmp r4, #0x0 + beq _020D15EC + ldr r0, [r6, #0x1c] + ands r0, r0, #0x10 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + moveq r7, #0x1 + movne r7, #0x0 + cmp r7, #0x0 + ldrne r0, [r6, #0x1c] + orrne r0, r0, #0x10 + strne r0, [r6, #0x1c] + mov r0, r5 + bl OS_RestoreInterrupts +_020D1564: + cmp r7, #0x0 + beq _020D1588 + ldr r0, [r6, #0x58] + ands r0, r0, #0x200 + beq _020D1588 + ldr r2, [r6, #0x54] + mov r0, r4 + mov r1, #0x9 + blx r2 +_020D1588: + bl OS_DisableInterrupts + ldr r1, [r4, #0xC] + mov r5, r0 + orr r0, r1, #0x40 + str r0, [r4, #0xC] + ldr r0, [r4, #0xC] + ands r0, r0, #0x4 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020D15D4 + add r0, r4, #0x18 + bl OS_WakeupThread + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4c + mov r0, #0x0 + ldmia sp!, {r4-r9, lr} + bx lr +_020D15D4: + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4c + mov r0, r4 + ldmia sp!, {r4-r9, lr} + bx lr +_020D15EC: + ldr r0, [r6, #0x1c] + ands r0, r0, #0x10 + beq _020D162C + ldr r0, [r6, #0x1c] + bic r0, r0, #0x10 + str r0, [r6, #0x1c] + ldr r0, [r6, #0x58] + ands r0, r0, #0x400 + beq _020D162C + add r0, sp, #0x0 + bl FS_InitFile + str r6, [sp, #0x8] + ldr r2, [r6, #0x54] + add r0, sp, #0x0 + mov r1, #0xa + blx r2 +_020D162C: + ldr r0, [r6, #0x1c] + ands r0, r0, #0x40 + beq _020D1658 + ldr r1, [r6, #0x1c] + add r0, r6, #0x14 + bic r1, r1, #0x40 + str r1, [r6, #0x1c] + ldr r1, [r6, #0x1c] + orr r1, r1, #0x8 + str r1, [r6, #0x1c] + bl OS_WakeupThread +_020D1658: + mov r0, r5 + bl OS_RestoreInterrupts +_020D1660: + mov r0, #0x0 + add sp, sp, #0x4c + ldmia sp!, {r4-r9, lr} + bx lr + + arm_func_start FSi_ReadMemoryCore +FSi_ReadMemoryCore: ; 0x020D1670 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, r2 + mov r2, r3 + bl MI_CpuCopy8 +_020D1684: + mov r0, #0x0 + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr + + arm_func_start FSi_WriteMemCallback +FSi_WriteMemCallback: ; 0x020D1694 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r0, #0x28] + mov r0, r1 + add r1, r12, r2 + mov r2, r3 + bl MI_CpuCopy8 +_020D16B0: + mov r0, #0x0 + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr + + arm_func_start FSi_ReadMemCallback +FSi_ReadMemCallback: ; 0x020D16C0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x28] + add r0, r0, r2 + mov r2, r3 + bl MI_CpuCopy8 +_020D16D8: + mov r0, #0x0 + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr + + arm_func_start FSi_GetPackedName +FSi_GetPackedName: ; 0x020D16E8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x3 + mov lr, #0x0 + bgt _020D173C + mov r12, lr + cmp r1, #0x0 + ble _020D173C + mov r3, lr +_020D170C: + ldrb r2, [r0, r12] + cmp r2, #0x0 + beq _020D173C + sub r2, r2, #0x41 + cmp r2, #0x19 + addls r2, r2, #0x61 + addhi r2, r2, #0x41 + add r12, r12, #0x1 + orr lr, lr, r2, lsl r3 + cmp r12, r1 + add r3, r3, #0x8 + blt _020D170C +_020D173C: + mov r0, lr + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FS_ChangeDir +FS_ChangeDir: ; 0x020D174C + stmdb sp!, {r4,lr} + sub sp, sp, #0x58 + mov r4, r0 + add r0, sp, #0xc + bl FS_InitFile + add r0, sp, #0xc + add r3, sp, #0x0 + mov r1, r4 + mov r2, #0x0 + bl FSi_FindPath +_020D1774: + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, sp, #0x0 + ldrne r3, _020D179C + ldmneia r0, {r0, r1, r2} + stmneia r3, {r0, r1, r2} + movne r0, #0x1 + add sp, sp, #0x58 + ldmia sp!, {r4, lr} + bx lr +_020D179C: .word 0x021D53EC + + arm_func_start FS_SeekFile +FS_SeekFile: ; 0x020D17A0 + cmp r2, #0x0 + beq _020D17BC + cmp r2, #0x1 + beq _020D17C8 + cmp r2, #0x2 + beq _020D17D4 + b _020D17E0 +_020D17BC: + ldr r2, [r0, #0x24] + add r1, r1, r2 + b _020D17E8 +_020D17C8: + ldr r2, [r0, #0x2c] + add r1, r1, r2 + b _020D17E8 +_020D17D4: + ldr r2, [r0, #0x28] + add r1, r1, r2 + b _020D17E8 +_020D17E0: + mov r0, #0x0 + bx lr +_020D17E8: + ldr r2, [r0, #0x24] + cmp r1, r2 + movlt r1, r2 + ldr r2, [r0, #0x28] + cmp r1, r2 + movgt r1, r2 + str r1, [r0, #0x2c] + mov r0, #0x1 + bx lr + + arm_func_start FS_ReadFile +FS_ReadFile: ; 0x020D180C + ldr ip, _020D1818 ; =FUN_020D1AAC + mov r3, #0x0 + bx r12 + .balign 4 +_020D1818: .word FUN_020D1AAC + + arm_func_start FS_ReadFileAsync +FS_ReadFileAsync: ; 0x020D181C + ldr ip, _020D1828 ; =FUN_020D1AAC + mov r3, #0x1 + bx r12 + .balign 4 +_020D1828: .word FUN_020D1AAC + + arm_func_start FS_WaitAsync +FS_WaitAsync: ; 0x020D182C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, #0x0 + bl OS_DisableInterrupts + ldr r1, [r6, #0xc] + mov r4, r0 + ands r0, r1, #0x1 + movne r0, #0x1 + moveq r0, r5 + cmp r0, #0x0 + beq _020D18BC + ldr r0, [r6, #0xc] + ands r0, r0, #0x44 + moveq r5, #0x1 + movne r5, #0x0 + cmp r5, #0x0 + beq _020D189C + ldr r0, [r6, #0xc] + orr r0, r0, #0x4 + str r0, [r6, #0xc] + add r7, r6, #0x18 +_020D1884: + mov r0, r7 + bl OS_SleepThread + ldr r0, [r6, #0xc] + ands r0, r0, #0x40 + beq _020D1884 + b _020D18BC +_020D189C: + add r0, r6, #0x18 + bl OS_SleepThread + ldr r0, [r6, #0xc] + ands r0, r0, #0x1 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + bne _020D189C +_020D18BC: + mov r0, r4 + bl OS_RestoreInterrupts +_020D18C4: + cmp r5, #0x0 + beq _020D18E0 + mov r0, r6 + bl FSi_ExecuteSyncCommand + add sp, sp, #4 + ldmia sp!, {r4-r7,lr} + bx lr +_020D18E0: + ldr r0, [r6, #0x14] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FS_CloseFile +FS_CloseFile: ; 0x020D18FC + stmdb sp!, {r4,lr} + mov r1, #0x8 + mov r4, r0 + bl FSi_SendCommand +_020D190C: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, #0x0 + str r0, [r4, #0x8] + mov r0, #0xE + str r0, [r4, #0x10] + ldr r1, [r4, #0xC] + mov r0, #0x1 + bic r1, r1, #0x30 + str r1, [r4, #0xC] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FS_OpenFile +FS_OpenFile: ; 0x020D1944 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + add r0, sp, #0x0 + bl FS_ConvertPathToFileID +_020D1958: + cmp r0, #0x0 + beq _020D1984 + add r1, sp, #0x0 + mov r0, r4 + ldmia r1, {r1, r2} + bl FS_OpenFileFast + cmp r0, #0x0 + addne sp, sp, #0x8 + movne r0, #0x1 + ldmneia sp!, {r4, lr} + bxne lr +_020D1984: + mov r0, #0x0 + add sp, sp, #0x8 + ldmia sp!, {r4, lr} + bx lr + + arm_func_start FS_OpenFileFast +FS_OpenFileFast: + stmdb sp!, {r0-r3} + stmdb sp!, {r4,lr} + ldr r1, [sp, #0xc] + mov r4, r0 + cmp r1, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + addeq sp, sp, #0x10 + bxeq lr + str r1, [r4, #0x8] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x10] + mov r1, #0x6 + str r3, [r4, #0x30] + str r2, [r4, #0x34] + bl FSi_SendCommand +_020D19D4: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4, lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r1, [r4, #0xC] + mov r0, #0x1 + orr r1, r1, #0x10 + str r1, [r4, #0xC] + ldr r1, [r4, #0xC] + bic r1, r1, #0x20 + str r1, [r4, #0xC] + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FS_OpenFileDirect +FS_OpenFileDirect: + stmdb sp!, {r4,lr} + mov r4, r0 + str r1, [r4, #0x8] + ldr r12, [sp, #0x8] + mov r1, #0x7 + str r12, [r4, #0x38] + str r2, [r4, #0x30] + str r3, [r4, #0x34] + bl FSi_SendCommand +_020D1A34: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4, lr} + bxeq lr + ldr r1, [r4, #0xC] + mov r0, #0x1 + orr r1, r1, #0x10 + str r1, [r4, #0xC] + ldr r1, [r4, #0xC] + bic r1, r1, #0x20 + str r1, [r4, #0xC] + ldmia sp!, {r4, lr} + bx lr + + arm_func_start FS_ConvertPathToFileID +FS_ConvertPathToFileID: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4c + mov r5, r0 + add r0, sp, #0x0 + mov r4, r1 + bl FS_InitFile +_020D1A80: + add r0, sp, #0x0 + mov r1, r4 + mov r2, r5 + mov r3, #0x0 + bl FSi_FindPath + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4C + ldmia sp!, {r4-r5, lr} + bx lr + + arm_func_start FUN_020D1AAC +FUN_020D1AAC: ; 0x020D1AAC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x2c] + ldr r0, [r7, #0x28] + mov r6, r2 + str r1, [r7, #0x30] + sub r0, r0, r4 + cmp r6, r0 + movgt r6, r0 + cmp r6, #0x0 + movlt r6, #0x0 + str r2, [r7, #0x34] + mov r5, r3 + str r6, [r7, #0x38] + cmp r5, #0x0 + ldreq r0, [r7, #0xc] + mov r1, #0x0 + orreq r0, r0, #0x4 + streq r0, [r7, #0xc] + mov r0, r7 + bl FSi_SendCommand +_020D1B04: + cmp r5, #0x0 + bne _020D1B24 + mov r0, r7 + bl FS_WaitAsync + cmp r0, #0x0 + ldrne r0, [r7, #0x2C] + subne r6, r0, r4 + mvneq r6, #0x0 +_020D1B24: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r7, lr} + bx lr + + arm_func_start FSi_FindPath +FSi_FindPath: + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r7, r1 + ldrb r1, [r7, #0x0] + mov r8, r0 + mov r6, r2 + mov r5, r3 + cmp r1, #0x2f + beq _020D1B60 + cmp r1, #0x5c + bne _020D1B84 +_020D1B60: + ldr r0, _020D1C90 ; =0x021D53EC + mov r1, #0x0 + ldr r0, [r0, #0x0] + strh r1, [sp, #0x4] + str r0, [sp, #0x0] + str r1, [sp, #0x8] + strh r1, [sp, #0x6] + add r7, r7, #0x1 + b _020D1C40 +_020D1B84: + ldr r0, _020D1C90 ; =0x021D53EC + add r3, sp, #0x0 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + mov r4, #0x0 +_020D1B98: + ldrb r0, [r7, r4] + cmp r0, #0x0 + beq _020D1C40 + cmp r0, #0x2f + beq _020D1C40 + cmp r0, #0x5c + beq _020D1C40 + cmp r0, #0x3a + bne _020D1C34 + mov r0, r7 + mov r1, r4 + bl FS_FindArchive +_020D1BC8: + cmp r0, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r1, [r0, #0x1C] + ands r1, r1, #0x2 + movne r1, #0x1 + moveq r1, #0x0 + cmp r1, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r1, #0x0 + str r0, [sp] + str r1, [sp, #0x8] + strh r1, [sp, #0x6] + strh r1, [sp, #0x4] + add r0, r4, #0x1 + ldrb r0, [r7, r0]! + cmp r0, #0x2f + beq _020D1C2C + cmp r0, #0x5c + bne _020D1C40 +_020D1C2C: + add r7, r7, #0x1 + b _020D1C40 +_020D1C34: + add r4, r4, #0x1 + cmp r4, #0x3 + ble _020D1B98 +_020D1C40: + ldr r1, [sp, #0x0] + add r0, sp, #0x0 + str r1, [r8, #0x8] + str r7, [r8, #0x3c] + add r3, r8, #0x30 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + cmp r5, #0x0 + movne r0, #0x1 + strne r0, [r8, #0x40] + strne r5, [r8, #0x44] + moveq r0, #0x0 + streq r0, [r8, #0x40] + mov r0, r8 + mov r1, #0x4 + streq r6, [r8, #0x44] + bl FSi_SendCommand + add sp, sp, #0x10 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020D1C90: .word 0x021D53EC + + arm_func_start FS_InitFile +FS_InitFile: + mov r3, #0x0 + str r3, [r0, #0x0] + ldr r2, [r0, #0x0] + mov r1, #0xe + str r2, [r0, #0x4] + str r3, [r0, #0x1c] + ldr r2, [r0, #0x1c] + str r2, [r0, #0x18] + str r3, [r0, #0x8] + str r1, [r0, #0x10] + str r3, [r0, #0xc] + bx lr + + arm_func_start FS_IsAvailable +FS_IsAvailable: ; 0x020D1CC4 + ldr r0, _020D1CD0 ; =0x021D53F8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020D1CD0: .word 0x021D53F8 + + arm_func_start FS_Init +FS_Init: ; 0x020D1CD4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D1D0C ; =0x021D53F8 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r2, #0x1 + str r2, [r1, #0x0] + bl FSi_InitRom + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020D1D0C: .word 0x021D53F8 + + arm_func_start FS_TryLoadTable +FS_TryLoadTable: ; 0x020D1D10 + ldr ip, _020D1D28 ; =FUN_020D0D84 + mov r3, r0 + mov r2, r1 + ldr r0, _020D1D2C ; =0x021D5414 + mov r1, r3 + bx r12 + .balign 4 +_020D1D28: .word FUN_020D0D84 +_020D1D2C: .word 0x021D5414 + + arm_func_start FS_SetDefaultDMA +FS_SetDefaultDMA: ; 0x020D1D30 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + bl OS_DisableInterrupts + mov r5, r0 + ldr r1, _020D1D7C ; =0x021D5400 + ldr r0, _020D1D80 ; =0x021D5414 + ldr r4, [r1, #0x0] + bl FS_SuspendArchive + ldr r1, _020D1D7C ; =0x021D5400 + cmp r0, #0x0 + str r6, [r1, #0x0] + beq _020D1D68 + ldr r0, _020D1D80 ; =0x021D5414 + bl FS_ResumeArchive +_020D1D68: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020D1D7C: .word 0x021D5400 +_020D1D80: .word 0x021D5414 + + arm_func_start FSi_InitRom +FSi_InitRom: ; 0x020D1D84 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + ldr r1, _020D1EE8 ; =0x021D5400 + str r0, [r1, #0x0] + bl OS_GetLockID + ldr r3, _020D1EEC ; =0x021D53FC + ldr r2, _020D1EF0 ; =0x021D5404 + mov r12, #0x0 + ldr r1, _020D1EF4 ; =0x021D540C + str r0, [r3, #0x0] + str r12, [r2, #0x0] + str r12, [r2, #0x4] + str r12, [r1, #0x0] + str r12, [r1, #0x4] + bl CARD_Init + ldr r0, _020D1EF8 ; =0x021D5414 + bl FS_InitArchive + ldr r0, _020D1EF8 ; =0x021D5414 + ldr r1, _020D1EFC ; =0x02106830 + mov r2, #0x3 + bl FS_RegisterArchiveName + ldr r0, _020D1F00 ; =0x027FFC40 + ldrh r0, [r0, #0x0] + cmp r0, #0x2 + bne _020D1E4C + ldr ip, _020D1EF0 ; =0x021D5404 + mvn r2, #0x0 + ldr r3, _020D1EF4 ; =0x021D540C + mov lr, #0x0 + ldr r0, _020D1EF8 ; =0x021D5414 + ldr r1, _020D1F04 ; =FSi_EmptyArchiveProc + str r2, [r12, #0x0] + str lr, [r12, #0x4] + str r2, [r3, #0x0] + str lr, [r3, #0x4] + bl FS_SetArchiveProc + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, _020D1F08 ; =FSi_ReadDummyCallback + str r1, [sp, #0x4] + str r0, [sp, #0x8] + ldr ip, _020D1F0C ; =FSi_WriteDummyCallback + ldr r0, _020D1EF8 ; =0x021D5414 + mov r2, r1 + mov r3, r1 + str r12, [sp, #0xc] + bl FS_LoadArchive + add sp, sp, #0x14 + ldmia sp!, {r4-r5,lr} + bx lr +_020D1E4C: + ldr r5, _020D1F10 ; =0x027FFE40 + ldr r0, _020D1EF8 ; =0x021D5414 + ldr r1, _020D1F14 ; =FSi_RomArchiveProc + ldr r2, _020D1F18 ; =0x00000602 + ldr r4, _020D1F1C ; =0x027FFE48 + bl FS_SetArchiveProc + ldr r1, [r5, #0x0] + mvn r0, #0x0 + cmp r1, r0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r1, #0x0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [r4, #0x0] + cmp r2, r0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r2, #0x0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + str r1, [sp, #0x0] + ldr r0, [r5, #0x4] + ldr r1, _020D1F20 ; =FSi_ReadRomCallback + str r0, [sp, #0x4] + ldr r0, _020D1F0C ; =FSi_WriteDummyCallback + str r1, [sp, #0x8] + str r0, [sp, #0xc] + ldr r3, [r4, #0x4] + ldr r0, _020D1EF8 ; =0x021D5414 + mov r1, #0x0 + bl FS_LoadArchive + add sp, sp, #0x14 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020D1EE8: .word 0x021D5400 +_020D1EEC: .word 0x021D53FC +_020D1EF0: .word 0x021D5404 +_020D1EF4: .word 0x021D540C +_020D1EF8: .word 0x021D5414 +_020D1EFC: .word 0x02106830 +_020D1F00: .word 0x027FFC40 +_020D1F04: .word FSi_EmptyArchiveProc +_020D1F08: .word FSi_ReadDummyCallback +_020D1F0C: .word FSi_WriteDummyCallback +_020D1F10: .word 0x027FFE40 +_020D1F14: .word FSi_RomArchiveProc +_020D1F18: .word 0x00000602 +_020D1F1C: .word 0x027FFE48 +_020D1F20: .word FSi_ReadRomCallback + + arm_func_start FSi_EmptyArchiveProc +FSi_EmptyArchiveProc: ; 0x020D1F24 + mov r0, #0x4 + bx lr + + arm_func_start FSi_ReadDummyCallback +FSi_ReadDummyCallback: ; 0x020D1F2C + mov r0, #0x1 + bx lr + + arm_func_start FSi_RomArchiveProc +FSi_RomArchiveProc: ; 0x020D1F34 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x1 + beq _020D1FA0 + cmp r1, #0x9 + beq _020D1F58 + cmp r1, #0xa + beq _020D1F7C + b _020D1FB0 +_020D1F58: + ldr r0, _020D1FC0 ; =0x021D53FC + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl CARD_LockRom + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {lr} + bx lr +_020D1F7C: + ldr r0, _020D1FC0 ; =0x021D53FC + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl CARD_UnlockRom + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {lr} + bx lr +_020D1FA0: + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {lr} + bx lr +_020D1FB0: + mov r0, #0x8 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020D1FC0: .word 0x021D53FC + + arm_func_start FSi_WriteDummyCallback +FSi_WriteDummyCallback: ; 0x020D1FC4 + mov r0, #0x1 + bx lr + + arm_func_start FSi_ReadRomCallback +FSi_ReadRomCallback: ; 0x020D1FCC + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr ip, _020D2010 ; =FSi_OnRomReadDone + mov lr, r1 + str r12, [sp, #0x0] + str r0, [sp, #0x4] + mov r1, #0x1 + ldr r0, _020D2014 ; =0x021D5400 + str r1, [sp, #0x8] + mov r1, r2 + ldr r0, [r0, #0x0] + mov r2, lr + bl CARDi_ReadRom + mov r0, #0x6 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .balign 4 +_020D2010: .word FSi_OnRomReadDone +_020D2014: .word 0x021D5400 + + arm_func_start FSi_OnRomReadDone +FSi_OnRomReadDone: ; 0x020D2018 + stmdb sp!, {r4,lr} + mov r4, r0 + bl CARD_IsPulledOut +_020D2024: + cmp r0, #0x0 + movne r1, #0x5 + moveq r1, #0x0 + mov r0, r4 + bl FS_NotifyArchiveAsyncEnd + ldmia sp!, {r4,lr} + bx lr + + + arm_func_start FS_UnloadOverlay +FS_UnloadOverlay: ; 0x020D2040 + stmdb sp!, {lr} + sub sp, sp, #0x2c + mov r3, r0 + mov r2, r1 + add r0, sp, #0x0 + mov r1, r3 + bl FS_LoadOverlayInfo +_020D205C: + cmp r0, #0x0 + beq _020D2074 + add r0, sp, #0x0 + bl FS_UnloadOverlayImage + cmp r0, #0x0 + bne _020D2084 +_020D2074: + add sp, sp, #0x2c + mov r0, #0x0 + ldmfd sp!, {lr} + bx lr +_020D2084: + mov r0, #0x1 + add sp, sp, #0x2c + ldmfd sp!, {lr} + bx lr + + arm_func_start FS_LoadOverlay +FS_LoadOverlay: ; 0x020D2094 + stmdb sp!, {lr} + sub sp, sp, #0x2c + mov r3, r0 + mov r2, r1 + add r0, sp, #0x0 + mov r1, r3 + bl FS_LoadOverlayInfo +_020D20B0: + cmp r0, #0x0 + beq _020D20C8 + add r0, sp, #0x0 + bl FS_LoadOverlayImage + cmp r0, #0x0 + bne _020D20D8 +_020D20C8: + add sp, sp, #0x2c + mov r0, #0x0 + ldmfd sp!, {lr} + bx lr +_020D20D8: + add r0, sp, #0x0 + bl FS_StartOverlay + mov r0, #0x1 + add sp, sp, #0x2c + ldmfd sp!, {lr} + bx lr + + arm_func_start FS_UnloadOverlayImage +FS_UnloadOverlayImage: ; 0x020D20F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FS_EndOverlay + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FS_EndOverlay +FS_EndOverlay: ; 0x020D210C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r8, _020D220C ; =0x021D74C8 + mov r11, r0 + mov r9, #0x0 +_020D2120: + ldr r1, [r11, #0x8] + ldr r0, [r11, #0xc] + ldr r5, [r11, #0x4] + add r0, r1, r0 + mov r7, r9 + mov r6, r9 + add r4, r5, r0 + bl OS_DisableInterrupts + ldr lr, [r8, #0x0] + mov r10, r9 + mov r12, lr + cmp lr, #0x0 + beq _020D21C4 +_020D2154: + ldr r2, [r12, #0x8] + ldr r3, [r12, #0x0] + cmp r2, #0x0 + ldr r1, [r12, #0x4] + bne _020D2178 + cmp r1, r5 + blo _020D2178 + cmp r1, r4 + blo _020D2188 +_020D2178: + cmp r2, r5 + blo _020D21B4 + cmp r2, r4 + bhs _020D21B4 +_020D2188: + cmp r6, #0x0 + strne r12, [r6, #0x0] + moveq r7, r12 + cmp lr, r12 + streq r3, [r8, #0x0] + moveq lr, r3 + str r9, [r12, #0x0] + cmp r10, #0x0 + mov r6, r12 + strne r3, [r10, #0x0] + b _020D21B8 +_020D21B4: + mov r10, r12 +_020D21B8: + mov r12, r3 + cmp r3, #0x0 + bne _020D2154 +_020D21C4: + bl OS_RestoreInterrupts +_020D21C8: + cmp r7, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11, lr} + bxeq lr +_020D21D8: + ldr r1, [r7, #0x4] + ldr r4, [r7] + cmp r1, #0x0 + beq _020D21F0 + ldr r0, [r7, #0x8] + blx r1 +_020D21F0: + mov r7, r4 + cmp r4, #0x0 + bne _020D21D8 + b _020D2120 + add sp, sp, #0x4 + ldmia sp!, {r4-r11, lr} + bx lr +_020D220C: .word 0x021D74C8 + + arm_func_start FS_StartOverlay +FS_StartOverlay: ; 0x020D2210 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + bl FSi_GetOverlayBinarySize + ldr r1, _020D2300 ; =0x027FFC40 + mov r4, r0 + ldrh r0, [r1, #0x0] + cmp r0, #0x2 + bne _020D22A4 + ldrb r1, [r5, #0x1f] + mov r0, #0x0 + ands r1, r1, #0x2 + beq _020D2280 + ldr r1, _020D2304 ; =0x02106F84 + ldr r3, _020D2308 ; =0x02106F84 + ldr r2, _020D230C ; =0x66666667 + sub r12, r1, r3 + smull r1, lr, r2, r12 + mov lr, lr, asr #0x3 + mov r1, r12, lsr #0x1f + ldr r2, [r5, #0x0] + add lr, r1, lr + cmp r2, lr + bhs _020D2280 + mov r0, #0x14 + mla r0, r2, r0, r3 + ldr r1, [r5, #0x4] + mov r2, r4 + bl FSi_CompareDigest +_020D2280: + cmp r0, #0x0 + bne _020D22A4 + ldr r0, [r5, #0x4] + mov r2, r4 + mov r1, #0x0 + bl MI_CpuFill8 + bl OS_Terminate + ldmia sp!, {r4-r6,lr} + bx lr +_020D22A4: + ldrb r0, [r5, #0x1f] + ands r0, r0, #0x1 + beq _020D22BC + ldr r0, [r5, #0x4] + add r0, r0, r4 + bl MIi_UncompressBackward +_020D22BC: + ldr r0, [r5, #0x4] + ldr r1, [r5, #0x8] + bl DC_FlushRange + ldr r6, [r5, #0x10] + ldr r4, [r5, #0x14] + cmp r6, r4 + ldmcsia sp!, {r4-r6,lr} + bxcs lr +_020D22DC: + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _020D22EC + blx r0 +_020D22EC: + add r6, r6, #0x4 + cmp r6, r4 + blo _020D22DC + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020D2300: .word 0x027FFC40 +_020D2304: .word 0x02106F84 +_020D2308: .word 0x02106F84 +_020D230C: .word 0x66666667 + + arm_func_start FSi_CompareDigest +FSi_CompareDigest: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x58 + mov r4, r0 + mov r6, r1 + mov r5, r2 + add r0, sp, #0x4 + mov r1, #0x0 + mov r2, #0x14 + bl MI_CpuFill8 + ldr r0, _020D23AC ; =0x02106834 + ldr r1, _020D23B0 ; =0x02106838 + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + add r1, sp, #0x18 + bl MI_CpuCopy8 + ldr r3, _020D23B0 ; =0x02106838 + mov r1, r6 + ldr r12, [r3, #0x0] + mov r2, r5 + add r0, sp, #0x4 + add r3, sp, #0x18 + str r12, [sp, #0x0] + bl MATH_CalcHMACSHA1 + add r2, sp, #0x4 + mov r3, #0x0 +_020D2374: + ldr r1, [r2, #0x0] + ldr r0, [r4, r3] + cmp r1, r0 + bne _020D2394 + add r3, r3, #0x4 + cmp r3, #0x14 + add r2, r2, #0x4 + blo _020D2374 +_020D2394: + cmp r3, #0x14 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x58 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020D23AC: .word 0x02106834 +_020D23B0: .word 0x02106838 + + arm_func_start FS_LoadOverlayImage +FS_LoadOverlayImage: ; 0x020D23B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x54 + mov r5, r0 + add r0, sp, #0x8 + bl FS_InitFile +_020D23C8: + add r0, sp, #0x0 + mov r1, r5 + bl FS_GetOverlayFileID + add r1, sp, #0x0 + add r0, sp, #0x8 + ldmia r1, {r1, r2} + bl FS_OpenFileFast + cmp r0, #0x0 + addeq sp, sp, #0x54 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5, lr} + bxeq lr + mov r0, r5 + bl FSi_GetOverlayBinarySize + mov r4, r0 + mov r0, r5 + bl FS_ClearOverlayImage + ldr r1, [r5, #0x4] + add r0, sp, #0x8 + mov r2, r4 + bl FS_ReadFile + cmp r4, r0 + beq _020D243C + add r0, sp, #0x8 + bl FS_CloseFile + add sp, sp, #0x54 + mov r0, #0x0 + ldmia sp!, {r4-r5, lr} + bx lr +_020D243C: + add r0, sp, #0x8 + bl FS_CloseFile + mov r0, #0x1 + add sp, sp, #0x54 + ldmia sp!, {r4-r5, lr} + bx lr + + arm_func_start FS_LoadOverlayImageAsync +FS_LoadOverlayImageAsync: ; 0x020D2454 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r1 + mov r6, r0 + mov r0, r5 + bl FS_InitFile +_020D246C: + add r0, sp, #0x0 + mov r1, r6 + bl FS_GetOverlayFileID + add r1, sp, #0x0 + mov r0, r5 + ldmia r1, {r1, r2} + bl FS_OpenFileFast + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6, lr} + bxeq lr + mov r0, r6 + bl FSi_GetOverlayBinarySize + mov r4, r0 + mov r0, r6 + bl FS_ClearOverlayImage + ldr r1, [r6, #0x4] + mov r0, r5 + mov r2, r4 + bl FS_ReadFileAsync + cmp r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x1 + ldmeqia sp!, {r4-r6, lr} + bxeq lr + mov r0, r5 + bl FS_CloseFile + mov r0, #0x0 + add sp, sp, #0x8 + ldmia sp!, {r4-r6, lr} + bx lr + + arm_func_start FS_LoadOverlayInfo +FS_LoadOverlayInfo: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x64 + movs r4, r1 + mov r5, r0 + ldreq r0, _020D25EC ; =0x021D5404 + ldrne r0, _020D25F0 ; =0x021D540C + ldr r3, [r0, #0x0] + cmp r3, #0x0 + beq _020D25A8 + ldr r0, [r0, #0x4] + mov r2, r2, lsl #0x5 + cmp r2, r0 + addcs sp, sp, #0x64 + movcs r0, #0x0 + ldmcsia sp!, {r4-r5,lr} + bxcs lr + add r0, r3, r2 + mov r1, r5 + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, sp, #0x18 + str r4, [r5, #0x20] + bl FS_InitFile + add r0, sp, #0x10 + mov r1, r5 + bl FS_GetOverlayFileID + add r1, sp, #0x10 + add r0, sp, #0x18 + ldmia r1, {r1-r2} + bl FS_OpenFileFast +_020D2564: + cmp r0, #0x0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, [sp, #0x3c] + add r0, sp, #0x18 + str r1, [r5, #0x24] + ldr r2, [sp, #0x40] + ldr r1, [sp, #0x3c] + sub r1, r2, r1 + str r1, [r5, #0x28] + bl FS_CloseFile + add sp, sp, #0x64 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020D25A8: + ldr r1, _020D25F4 ; =0x027FFE50 + ldr ip, _020D25F8 ; =0x027FFE58 + ldr r0, [r1, #0x0] + ldr r3, _020D25FC ; =0x021D5414 + str r0, [sp, #0x0] + ldr r1, [r1, #0x4] + mov r0, r5 + str r1, [sp, #0x4] + ldr r5, [r12, #0x0] + mov r1, r4 + str r5, [sp, #0x8] + ldr r4, [r12, #0x4] + str r4, [sp, #0xc] + bl FSi_LoadOverlayInfoCore + add sp, sp, #0x64 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020D25EC: .word 0x021D5404 +_020D25F0: .word 0x021D540C +_020D25F4: .word 0x027FFE50 +_020D25F8: .word 0x027FFE58 +_020D25FC: .word 0x021D5414 + + arm_func_start FSi_LoadOverlayInfoCore +FSi_LoadOverlayInfoCore: ; 0x020D2600 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x54 + movs r9, r1 + ldreq r5, [sp, #0x74] + ldreq r6, [sp, #0x70] + ldrne r5, [sp, #0x7c] + ldrne r6, [sp, #0x78] + mov r7, r2, lsl #0x5 + cmp r7, r5 + mov r4, r0 + mov r8, r3 + addcs sp, sp, #0x54 + movcs r0, #0x0 + ldmcsia sp!, {r4-r9,lr} + bxcs lr + add r0, sp, #0xc + bl FS_InitFile + mvn r12, #0x0 + add r0, sp, #0xc + mov r1, r8 + add r2, r6, r7 + add r3, r6, r5 + str r12, [sp, #0x0] + bl FS_OpenFileDirect +_020D2660: + cmp r0, #0 + addeq sp, sp, #0x54 + moveq r0, #0 + ldmeqia sp!, {r4-r9, lr} + bxeq lr + add r0, sp, #12 + mov r1, r4 + mov r2, #32 + bl FS_ReadFile + cmp r0, #32 + beq _020D26A4 + add r0, sp, #12 + bl FS_CloseFile + add sp, sp, #0x54 + mov r0, #0x0 + ldmia sp!, {r4-r9, lr} + bx lr +_020D26A4: + add r0, sp, #0xC + bl FS_CloseFile + add r0, sp, #0x4 + mov r1, r4 + str r9, [r4, #0x20] + bl FS_GetOverlayFileID + add r1, sp, #0x4 + add r0, sp, #0xC + ldmia r1, {r1, r2} + bl FS_OpenFileFast + cmp r0, #0x0 + addeq sp, sp, #0x54 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9, lr} + bxeq lr + ldr r1, [sp, #0x30] + add r0, sp, #0xC + str r1, [r4, #0x24] + ldr r2, [sp, #0x34] + ldr r1, [sp, #0x30] + sub r1, r2, r1 + str r1, [r4, #0x28] + bl FS_CloseFile + mov r0, #0x1 + add sp, sp, #0x54 + ldmia sp!, {r4-r9, lr} + bx lr + + arm_func_start FS_GetOverlayFileID +FS_GetOverlayFileID: ; 0x020D2710 + sub sp, sp, #0x8 + ldr r2, _020D2734 ; =0x021D5414 + str r2, [sp, #0x0] + ldr r1, [r1, #0x18] + str r1, [sp, #0x4] + str r2, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x8 + bx lr + .balign 4 +_020D2734: .word 0x021D5414 + + arm_func_start FS_ClearOverlayImage +FS_ClearOverlayImage: ; 0x020D2738 + stmdb sp!, {r4-r6,lr} + ldr r5, [r0, #0x8] + ldr r1, [r0, #0xc] + ldr r6, [r0, #0x4] + add r4, r5, r1 + mov r0, r6 + mov r1, r4 + bl IC_InvalidateRange + mov r0, r6 + mov r1, r4 + bl DC_InvalidateRange + add r0, r6, r5 + sub r2, r4, r5 + mov r1, #0x0 + bl MI_CpuFill8 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FSi_GetOverlayBinarySize +FSi_GetOverlayBinarySize: ; 0x020D277C + ldrb r1, [r0, #0x1f] + ands r1, r1, #0x1 + ldrne r0, [r0, #0x1c] + movne r0, r0, lsl #0x8 + movne r0, r0, lsr #0x8 + ldreq r0, [r0, #0x8] + bx lr diff --git a/arm9/asm/GX_arm9.s b/arm9/asm/GX_arm9.s new file mode 100644 index 00000000..59a548b2 --- /dev/null +++ b/arm9/asm/GX_arm9.s @@ -0,0 +1,5256 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start GXx_SetMasterBrightness_ +GXx_SetMasterBrightness_: ; 0x020C5978 + cmp r1, #0x0 + moveq r1, #0x0 + streqh r1, [r0, #0x0] + bxeq lr + cmp r1, #0x0 + orrgt r1, r1, #0x4000 + strgth r1, [r0, #0x0] + rsble r1, r1, #0x0 + orrle r1, r1, #0x8000 + strleh r1, [r0, #0x0] + bx lr + + arm_func_start GXS_SetGraphicsMode +GXS_SetGraphicsMode: ; 0x020C59A4 + ldr r2, _020C59BC ; =0x04001000 + ldr r1, [r2, #0x0] + bic r1, r1, #0x7 + orr r0, r1, r0 + str r0, [r2, #0x0] + bx lr + .balign 4 +_020C59BC: .word 0x04001000 + + arm_func_start GX_SetGraphicsMode +GX_SetGraphicsMode: ; 0x020C59C0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020C5A28 ; =0x02106810 + mov lr, #0x4000000 + ldrh r12, [r3, #0x0] + ldr lr, [lr, #0x0] + ldr r3, _020C5A2C ; =0x021D33C0 + cmp r12, #0x0 + strh r0, [r3, #0x0] + ldr r3, _020C5A30 ; =0xFFF0FFF0 + moveq r0, #0x0 + and r3, lr, r3 + orr r0, r3, r0, lsl #0x10 + orr r0, r1, r0 + orr r1, r0, r2, lsl #0x3 + mov r12, #0x4000000 + ldr r0, _020C5A2C ; =0x021D33C0 + str r1, [r12, #0x0] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020C5A28 ; =0x02106810 + moveq r1, #0x0 + streqh r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C5A28: .word 0x02106810 +_020C5A2C: .word 0x021D33C0 +_020C5A30: .word 0xFFF0FFF0 + + arm_func_start GX_DispOn +GX_DispOn: ; 0x020C5A34 + ldr r0, _020C5A78 ; =0x021D33C0 + ldr r1, _020C5A7C ; =0x02106810 + ldrh r2, [r0, #0x0] + mov r0, #0x1 + strh r0, [r1, #0x0] + cmp r2, #0x0 + moveq r1, #0x4000000 + ldreq r0, [r1, #0x0] + orreq r0, r0, #0x10000 + streq r0, [r1, #0x0] + bxeq lr + mov r1, #0x4000000 + ldr r0, [r1, #0x0] + bic r0, r0, #0x30000 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C5A78: .word 0x021D33C0 +_020C5A7C: .word 0x02106810 + + arm_func_start GX_DispOff +GX_DispOff: ; 0x020C5A80 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x4000000 + ldr r12, [lr, #0x0] + ldr r1, _020C5AC0 ; =0x02106810 + and r2, r12, #0x30000 + mov r3, #0x0 + ldr r0, _020C5AC4 ; =0x021D33C0 + mov r2, r2, lsr #0x10 + strh r3, [r1, #0x0] + strh r2, [r0, #0x0] + bic r0, r12, #0x30000 + str r0, [lr, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C5AC0: .word 0x02106810 +_020C5AC4: .word 0x021D33C0 + + arm_func_start GX_VBlankIntr +GX_VBlankIntr: ; 0x020C5AC8 + ldr r2, _020C5AF4 ; =0x04000004 + cmp r0, #0x0 + ldrh r0, [r2, #0x0] + ldrneh r1, [r2, #0x0] + and r0, r0, #0x8 + orrne r1, r1, #0x8 + strneh r1, [r2, #0x0] + ldreqh r1, [r2, #0x0] + biceq r1, r1, #0x8 + streqh r1, [r2, #0x0] + bx lr + .balign 4 +_020C5AF4: .word 0x04000004 + + arm_func_start GX_HBlankIntr +GX_HBlankIntr: ; 0x020C5AF8 + ldr r2, _020C5B24 ; =0x04000004 + cmp r0, #0x0 + ldrh r0, [r2, #0x0] + ldrneh r1, [r2, #0x0] + and r0, r0, #0x10 + orrne r1, r1, #0x10 + strneh r1, [r2, #0x0] + ldreqh r1, [r2, #0x0] + biceq r1, r1, #0x10 + streqh r1, [r2, #0x0] + bx lr + .balign 4 +_020C5B24: .word 0x04000004 + + arm_func_start GX_Init +GX_Init: ; 0x020C5B28 + stmdb sp!, {r4-r6,lr} + ldr r3, _020C5C68 ; =0x04000304 + ldr r0, _020C5C6C ; =0xFFFFFDF1 + ldrh r2, [r3, #0x0] + ldr r1, _020C5C70 ; =0x0000020E + orr r2, r2, #0x8000 + strh r2, [r3, #0x0] + ldrh r2, [r3, #0x0] + and r0, r2, r0 + orr r0, r0, r1 + strh r0, [r3, #0x0] + ldrh r0, [r3, #0x0] + orr r0, r0, #0x1 + strh r0, [r3, #0x0] + bl GX_InitGXState + ldr r5, _020C5C74 ; =0x021D33BC + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + bne _020C5B9C + mvn r4, #0x2 +_020C5B78: + bl OS_GetLockID + mov r6, r0 + cmp r6, r4 + bne _020C5B8C + bl OS_Terminate +_020C5B8C: + strh r6, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _020C5B78 +_020C5B9C: + ldr r0, _020C5C78 ; =0x04000004 + mov r2, #0x0 + strh r2, [r0, #0x0] + mov r1, #0x4000000 + ldr r0, _020C5C7C ; =0x02106814 + str r2, [r1, #0x0] + ldr r0, [r0, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C5BF4 + ldr r1, _020C5C80 ; =0x04000008 + mov r3, #0x60 + bl MI_DmaFill32 + ldr r1, _020C5C84 ; =0x0400006C + mov r2, #0x0 + ldr r0, _020C5C7C ; =0x02106814 + strh r2, [r1, #0x0] + ldr r0, [r0, #0x0] + ldr r1, _020C5C88 ; =0x04001000 + mov r3, #0x70 + bl MI_DmaFill32 + b _020C5C1C +_020C5BF4: + ldr r1, _020C5C80 ; =0x04000008 + mov r0, r2 + mov r2, #0x60 + bl MIi_CpuClear32 + ldr r3, _020C5C84 ; =0x0400006C + mov r0, #0x0 + ldr r1, _020C5C88 ; =0x04001000 + mov r2, #0x70 + strh r0, [r3, #0x0] + bl MIi_CpuClear32 +_020C5C1C: + ldr r1, _020C5C8C ; =0x04000020 + mov r2, #0x100 + ldr r0, _020C5C90 ; =0x04000026 + strh r2, [r1, #0x0] + ldr r1, _020C5C94 ; =0x04000030 + strh r2, [r0, #0x0] + ldr r0, _020C5C98 ; =0x04000036 + strh r2, [r1, #0x0] + ldr r1, _020C5C9C ; =0x04001020 + strh r2, [r0, #0x0] + ldr r0, _020C5CA0 ; =0x04001026 + strh r2, [r1, #0x0] + ldr r1, _020C5CA4 ; =0x04001030 + strh r2, [r0, #0x0] + ldr r0, _020C5CA8 ; =0x04001036 + strh r2, [r1, #0x0] + strh r2, [r0, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C5C68: .word 0x04000304 +_020C5C6C: .word 0xFFFFFDF1 +_020C5C70: .word 0x0000020E +_020C5C74: .word 0x021D33BC +_020C5C78: .word 0x04000004 +_020C5C7C: .word 0x02106814 +_020C5C80: .word 0x04000008 +_020C5C84: .word 0x0400006C +_020C5C88: .word 0x04001000 +_020C5C8C: .word 0x04000020 +_020C5C90: .word 0x04000026 +_020C5C94: .word 0x04000030 +_020C5C98: .word 0x04000036 +_020C5C9C: .word 0x04001020 +_020C5CA0: .word 0x04001026 +_020C5CA4: .word 0x04001030 +_020C5CA8: .word 0x04001036 + + arm_func_start GX_InitGXState +GX_InitGXState: ; 0x020C5CAC + ldr r0, _020C5D14 ; =0x021D33C4 + mov r3, #0x0 + ldr r2, _020C5D18 ; =0x04000240 + strh r3, [r0, #0x0] + strh r3, [r0, #0x2] + strh r3, [r0, #0x4] + strh r3, [r0, #0x6] + strh r3, [r0, #0x8] + strh r3, [r0, #0xa] + strh r3, [r0, #0xc] + strh r3, [r0, #0xe] + strh r3, [r0, #0x10] + strh r3, [r0, #0x12] + strh r3, [r0, #0x14] + strh r3, [r0, #0x16] + strh r3, [r0, #0x18] + ldr r1, _020C5D1C ; =0x04000244 + str r3, [r2, #0x0] + ldr r0, _020C5D20 ; =0x04000245 + strb r3, [r1, #0x0] + ldr r1, _020C5D24 ; =0x04000246 + strb r3, [r0, #0x0] + ldr r0, _020C5D28 ; =0x04000248 + strb r3, [r1, #0x0] + strh r3, [r0, #0x0] + bx lr + .balign 4 +_020C5D14: .word 0x021D33C4 +_020C5D18: .word 0x04000240 +_020C5D1C: .word 0x04000244 +_020C5D20: .word 0x04000245 +_020C5D24: .word 0x04000246 +_020C5D28: .word 0x04000248 + + arm_func_start GX_GetBankForSubOBJExtPltt +GX_GetBankForSubOBJExtPltt: ; 0x020C5D2C + ldr r0, _020C5D38 ; =0x021D33C4 + ldrh r0, [r0, #0x18] + bx lr + .balign 4 +_020C5D38: .word 0x021D33C4 + + arm_func_start GX_GetBankForSubBGExtPltt +GX_GetBankForSubBGExtPltt: ; 0x020C5D3C + ldr r0, _020C5D48 ; =0x021D33C4 + ldrh r0, [r0, #0x16] + bx lr + .balign 4 +_020C5D48: .word 0x021D33C4 + + arm_func_start GX_GetBankForSubOBJ +GX_GetBankForSubOBJ: ; 0x020C5D4C + ldr r0, _020C5D58 ; =0x021D33C4 + ldrh r0, [r0, #0x14] + bx lr + .balign 4 +_020C5D58: .word 0x021D33C4 + + arm_func_start GX_GetBankForSubBGExtPltt_2 +GX_GetBankForSubBGExtPltt_2: ; 0x020C5D5C + ldr r0, _020C5D68 ; =0x021D33C4 + ldrh r0, [r0, #0x12] + bx lr + .balign 4 +_020C5D68: .word 0x021D33C4 + + arm_func_start GX_GetBankForLCDC +GX_GetBankForLCDC: ; 0x020C5D6C + ldr r0, _020C5D78 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_020C5D78: .word 0x021D33C4 + + arm_func_start GX_GetBankForTexPltt +GX_GetBankForTexPltt: ; 0x020C5D7C + ldr r0, _020C5D88 ; =0x021D33C4 + + arm_func_start FUN_020C5D80 +FUN_020C5D80: ; 0x020C5D80 + ldrh r0, [r0, #0xa] + bx lr + .balign 4 +_020C5D88: .word 0x021D33C4 + + arm_func_start FUN_020C5D8C +FUN_020C5D8C: ; 0x020C5D8C + ldr r0, _020C5D98 ; =0x021D33C4 + ldrh r0, [r0, #0x8] + bx lr + .balign 4 +_020C5D98: .word 0x021D33C4 + + arm_func_start GX_GetBankForOBJExtPltt +GX_GetBankForOBJExtPltt: ; 0x020C5D9C + ldr r0, _020C5DA8 ; =0x021D33C4 + ldrh r0, [r0, #0x10] + bx lr + .balign 4 +_020C5DA8: .word 0x021D33C4 + + arm_func_start GX_GetBankForBGExtPltt +GX_GetBankForBGExtPltt: ; 0x020C5DAC + ldr r0, _020C5DB8 ; =0x021D33C4 + ldrh r0, [r0, #0xe] + bx lr + .balign 4 +_020C5DB8: .word 0x021D33C4 + + arm_func_start GX_GetBankForOBJ +GX_GetBankForOBJ: ; 0x020C5DBC + ldr r0, _020C5DC8 ; =0x021D33C4 + ldrh r0, [r0, #0x4] + bx lr + .balign 4 +_020C5DC8: .word 0x021D33C4 + + arm_func_start GX_GetBankForBGExtPltt_2 +GX_GetBankForBGExtPltt_2: ; 0x020C5DCC + ldr r0, _020C5DD8 ; =0x021D33C4 + ldrh r0, [r0, #0x2] + bx lr + .balign 4 +_020C5DD8: .word 0x021D33C4 + + arm_func_start GX_DisableBankForSubOBJExtPltt +GX_DisableBankForSubOBJExtPltt: ; 0x020C5DDC + ldr r2, _020C5DF8 ; =0x04001000 + ldr ip, _020C5DFC ; =FUN_020C5F28 + ldr r1, [r2, #0x0] + ldr r0, _020C5E00 ; =0x021D33DC + bic r1, r1, #0x80000000 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C5DF8: .word 0x04001000 +_020C5DFC: .word FUN_020C5F28 +_020C5E00: .word 0x021D33DC + + arm_func_start FUN_020C5E04 +FUN_020C5E04: ; 0x020C5E04 + ldr r2, _020C5E20 ; =0x04001000 + ldr ip, _020C5E24 ; =FUN_020C5F28 + ldr r1, [r2, #0x0] + ldr r0, _020C5E28 ; =0x021D33DA + bic r1, r1, #0x40000000 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C5E20: .word 0x04001000 +_020C5E24: .word FUN_020C5F28 +_020C5E28: .word 0x021D33DA + + arm_func_start GX_DisableBankForSubOBJExtPltt_2 +GX_DisableBankForSubOBJExtPltt_2: ; 0x020C5E2C + ldr ip, _020C5E38 ; =FUN_020C5F28 + ldr r0, _020C5E3C ; =0x021D33D8 + bx r12 + .balign 4 +_020C5E38: .word FUN_020C5F28 +_020C5E3C: .word 0x021D33D8 + + arm_func_start GX_DisableBankForSubBGExtPltt +GX_DisableBankForSubBGExtPltt: ; 0x020C5E40 + ldr ip, _020C5E4C ; =FUN_020C5F28 + ldr r0, _020C5E50 ; =0x021D33D6 + bx r12 + .balign 4 +_020C5E4C: .word FUN_020C5F28 +_020C5E50: .word 0x021D33D6 + + arm_func_start GX_DisableBankForLCDC +GX_DisableBankForLCDC: ; 0x020C5E54 + ldr ip, _020C5E60 ; =FUN_020C5F28 + ldr r0, _020C5E64 ; =0x021D33C4 + bx r12 + .balign 4 +_020C5E60: .word FUN_020C5F28 +_020C5E64: .word 0x021D33C4 + + arm_func_start GX_DisableBankForARM7 +GX_DisableBankForARM7: ; 0x020C5E68 + ldr ip, _020C5E74 ; =FUN_020C5F28 + ldr r0, _020C5E78 ; =0x021D33CA + bx r12 + .balign 4 +_020C5E74: .word FUN_020C5F28 +_020C5E78: .word 0x021D33CA + + arm_func_start GX_DisableBankForClearImage +GX_DisableBankForClearImage: ; 0x020C5E7C + ldr ip, _020C5E88 ; =FUN_020C5F28 + ldr r0, _020C5E8C ; =0x021D33D0 + bx r12 + .balign 4 +_020C5E88: .word FUN_020C5F28 +_020C5E8C: .word 0x021D33D0 + + arm_func_start GX_DisableBankForTexPltt +GX_DisableBankForTexPltt: ; 0x020C5E90 + ldr ip, _020C5E9C ; =FUN_020C5F28 + ldr r0, _020C5EA0 ; =0x021D33CE + bx r12 + .balign 4 +_020C5E9C: .word FUN_020C5F28 +_020C5EA0: .word 0x021D33CE + + arm_func_start GX_DisableBankForTexPltt_2 +GX_DisableBankForTexPltt_2: ; 0x020C5EA4 + ldr ip, _020C5EB0 ; =FUN_020C5F28 + ldr r0, _020C5EB4 ; =0x021D33CC + bx r12 + .balign 4 +_020C5EB0: .word FUN_020C5F28 +_020C5EB4: .word 0x021D33CC + + arm_func_start GX_DisableBankForOBJExtPltt +GX_DisableBankForOBJExtPltt: ; 0x020C5EB8 + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr ip, _020C5ED4 ; =FUN_020C5F28 + bic r1, r1, #0x80000000 + ldr r0, _020C5ED8 ; =0x021D33D4 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C5ED4: .word FUN_020C5F28 +_020C5ED8: .word 0x021D33D4 + + arm_func_start GX_DisableBankForBGExtPltt +GX_DisableBankForBGExtPltt: ; 0x020C5EDC + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr ip, _020C5EF8 ; =FUN_020C5F28 + bic r1, r1, #0x40000000 + ldr r0, _020C5EFC ; =0x021D33D2 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C5EF8: .word FUN_020C5F28 +_020C5EFC: .word 0x021D33D2 + + arm_func_start GX_DisableBankForOBJExtPltt_2 +GX_DisableBankForOBJExtPltt_2: ; 0x020C5F00 + ldr ip, _020C5F0C ; =FUN_020C5F28 + ldr r0, _020C5F10 ; =0x021D33C8 + bx r12 + .balign 4 +_020C5F0C: .word FUN_020C5F28 +_020C5F10: .word 0x021D33C8 + + arm_func_start disableBankForX_ +disableBankForX_: ; 0x020C5F14 + ldr ip, _020C5F20 ; =FUN_020C5F28 + ldr r0, _020C5F24 ; =0x021D33C6 + bx r12 + .balign 4 +_020C5F20: .word FUN_020C5F28 +_020C5F24: .word 0x021D33C6 + + arm_func_start FUN_020C5F28 +FUN_020C5F28: ; 0x020C5F28 + stmdb sp!, {r4,lr} + ldrh r4, [r0, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x0] + ands r0, r4, #0x1 + ldrne r0, _020C5FE4 ; =0x04000240 + strneb r1, [r0, #0x0] + ands r0, r4, #0x2 + ldrne r0, _020C5FE8 ; =0x04000241 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x4 + ldrne r0, _020C5FEC ; =0x04000242 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x8 + ldrne r0, _020C5FF0 ; =0x04000243 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x10 + ldrne r0, _020C5FF4 ; =0x04000244 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x20 + ldrne r0, _020C5FF8 ; =0x04000245 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x40 + ldrne r0, _020C5FFC ; =0x04000246 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x80 + ldrne r0, _020C6000 ; =0x04000248 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ands r0, r4, #0x100 + ldrne r0, _020C6004 ; =0x04000249 + movne r1, #0x0 + strneb r1, [r0, #0x0] + ldr r1, _020C6008 ; =0x021D33BC + mov r0, r4, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r0, r0, lsr #0x10 + bl OSi_UnlockVram + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C5FE4: .word 0x04000240 +_020C5FE8: .word 0x04000241 +_020C5FEC: .word 0x04000242 +_020C5FF0: .word 0x04000243 +_020C5FF4: .word 0x04000244 +_020C5FF8: .word 0x04000245 +_020C5FFC: .word 0x04000246 +_020C6000: .word 0x04000248 +_020C6004: .word 0x04000249 +_020C6008: .word 0x021D33BC + + arm_func_start GX_ResetBankForSubOBJ +GX_ResetBankForSubOBJ: ; 0x020C600C + ldr r2, _020C6028 ; =0x04001000 + ldr ip, _020C602C ; =FUN_020C6130 + ldr r1, [r2, #0x0] + ldr r0, _020C6030 ; =0x021D33DC + bic r1, r1, #0x80000000 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C6028: .word 0x04001000 +_020C602C: .word FUN_020C6130 +_020C6030: .word 0x021D33DC + + arm_func_start FUN_020C6034 +FUN_020C6034: ; 0x020C6034 + ldr r2, _020C6050 ; =0x04001000 + ldr ip, _020C6054 ; =FUN_020C6130 + ldr r1, [r2, #0x0] + ldr r0, _020C6058 ; =0x021D33DA + bic r1, r1, #0x40000000 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C6050: .word 0x04001000 +_020C6054: .word FUN_020C6130 +_020C6058: .word 0x021D33DA + + arm_func_start FUN_020C605C +FUN_020C605C: ; 0x020C605C + ldr ip, _020C6068 ; =FUN_020C6130 + ldr r0, _020C606C ; =0x021D33D8 + bx r12 + .balign 4 +_020C6068: .word FUN_020C6130 +_020C606C: .word 0x021D33D8 + + arm_func_start GX_ResetBankForSubBG +GX_ResetBankForSubBG: ; 0x020C6070 + ldr ip, _020C607C ; =FUN_020C6130 + ldr r0, _020C6080 ; =0x021D33D6 + bx r12 + .balign 4 +_020C607C: .word FUN_020C6130 +_020C6080: .word 0x021D33D6 + + arm_func_start GX_ResetBankForClearImage +GX_ResetBankForClearImage: ; 0x020C6084 + ldr ip, _020C6090 ; =FUN_020C6130 + ldr r0, _020C6094 ; =0x021D33D0 + bx r12 + .balign 4 +_020C6090: .word FUN_020C6130 +_020C6094: .word 0x021D33D0 + + arm_func_start GX_ResetBankForTexPltt +GX_ResetBankForTexPltt: ; 0x020C6098 + ldr ip, _020C60A4 ; =FUN_020C6130 + ldr r0, _020C60A8 ; =0x021D33CE + bx r12 + .balign 4 +_020C60A4: .word FUN_020C6130 +_020C60A8: .word 0x021D33CE + + arm_func_start GX_ResetBankForTex +GX_ResetBankForTex: ; 0x020C60AC + ldr ip, _020C60B8 ; =FUN_020C6130 + ldr r0, _020C60BC ; =0x021D33CC + bx r12 + .balign 4 +_020C60B8: .word FUN_020C6130 +_020C60BC: .word 0x021D33CC + + arm_func_start GX_ResetBankForOBJExtPltt +GX_ResetBankForOBJExtPltt: ; 0x020C60C0 + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr ip, _020C60DC ; =FUN_020C6130 + bic r1, r1, #0x80000000 + ldr r0, _020C60E0 ; =0x021D33D4 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C60DC: .word FUN_020C6130 +_020C60E0: .word 0x021D33D4 + + arm_func_start GX_ResetBankForBGExtPltt +GX_ResetBankForBGExtPltt: ; 0x020C60E4 + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr ip, _020C6100 ; =FUN_020C6130 + bic r1, r1, #0x40000000 + ldr r0, _020C6104 ; =0x021D33D2 + str r1, [r2, #0x0] + bx r12 + .balign 4 +_020C6100: .word FUN_020C6130 +_020C6104: .word 0x021D33D2 + + arm_func_start GX_ResetBankForOBJ +GX_ResetBankForOBJ: ; 0x020C6108 + ldr ip, _020C6114 ; =FUN_020C6130 + ldr r0, _020C6118 ; =0x021D33C8 + bx r12 + .balign 4 +_020C6114: .word FUN_020C6130 +_020C6118: .word 0x021D33C8 + + arm_func_start GX_ResetBankForBG +GX_ResetBankForBG: ; 0x020C611C + ldr ip, _020C6128 ; =FUN_020C6130 + ldr r0, _020C612C ; =0x021D33C6 + bx r12 + .balign 4 +_020C6128: .word FUN_020C6130 +_020C612C: .word 0x021D33C6 + + arm_func_start FUN_020C6130 +FUN_020C6130: ; 0x020C6130 + stmdb sp!, {r4,lr} + ldrh r4, [r0, #0x0] + mov r2, #0x0 + ldr r1, _020C6164 ; =0x021D33C4 + strh r2, [r0, #0x0] + ldrh r2, [r1, #0x0] + mov r0, r4 + orr r2, r2, r4 + strh r2, [r1, #0x0] + bl GX_VRAMCNT_SetLCDC_ + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C6164: .word 0x021D33C4 + + arm_func_start GX_SetBankForSubOBJExtPltt +GX_SetBankForSubOBJExtPltt: ; 0x020C6168 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C61E8 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x18] + ldrh r3, [r1, #0x0] + cmp r0, #0x0 + strh r0, [r1, #0x18] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + beq _020C61C0 + cmp r0, #0x100 + bne _020C61D0 + ldr r3, _020C61EC ; =0x04001000 + ldr r0, _020C61F0 ; =0x04000249 + ldr r2, [r3, #0x0] + mov r1, #0x83 + orr r2, r2, #0x80000000 + str r2, [r3, #0x0] + strb r1, [r0, #0x0] + b _020C61D0 +_020C61C0: + ldr r1, _020C61EC ; =0x04001000 + ldr r0, [r1, #0x0] + bic r0, r0, #0x80000000 + str r0, [r1, #0x0] +_020C61D0: + ldr r0, _020C61E8 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C61E8: .word 0x021D33C4 +_020C61EC: .word 0x04001000 +_020C61F0: .word 0x04000249 + + arm_func_start GX_SetBankForSubBGExtPltt +GX_SetBankForSubBGExtPltt: ; 0x020C61F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6274 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x16] + ldrh r3, [r1, #0x0] + cmp r0, #0x0 + strh r0, [r1, #0x16] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + beq _020C624C + cmp r0, #0x80 + bne _020C625C + ldr r3, _020C6278 ; =0x04001000 + ldr r0, _020C627C ; =0x04000248 + ldr r2, [r3, #0x0] + mov r1, #0x82 + orr r2, r2, #0x40000000 + str r2, [r3, #0x0] + strb r1, [r0, #0x0] + b _020C625C +_020C624C: + ldr r1, _020C6278 ; =0x04001000 + ldr r0, [r1, #0x0] + bic r0, r0, #0x40000000 + str r0, [r1, #0x0] +_020C625C: + ldr r0, _020C6274 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6274: .word 0x021D33C4 +_020C6278: .word 0x04001000 +_020C627C: .word 0x04000248 + + arm_func_start GX_SetBankForSubOBJ +GX_SetBankForSubOBJ: ; 0x020C6280 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C62F0 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x14] + ldrh r3, [r1, #0x0] + cmp r0, #0x0 + strh r0, [r1, #0x14] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + beq _020C62D8 + cmp r0, #0x8 + beq _020C62CC + cmp r0, #0x100 + ldreq r0, _020C62F4 ; =0x04000249 + moveq r1, #0x82 + streqb r1, [r0, #0x0] + b _020C62D8 +_020C62CC: + ldr r0, _020C62F8 ; =0x04000243 + mov r1, #0x84 + strb r1, [r0, #0x0] +_020C62D8: + ldr r0, _020C62F0 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C62F0: .word 0x021D33C4 +_020C62F4: .word 0x04000249 +_020C62F8: .word 0x04000243 + + arm_func_start GX_SetBankForSubBG +GX_SetBankForSubBG: ; 0x020C62FC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6398 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x12] + ldrh r3, [r1, #0x0] + cmp r0, #0x80 + strh r0, [r1, #0x12] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bgt _020C6360 + cmp r0, #0x80 + bge _020C6374 + cmp r0, #0x4 + bgt _020C6380 + cmp r0, #0x0 + blt _020C6380 + cmp r0, #0x0 + beq _020C6380 + cmp r0, #0x4 + ldreq r0, _020C639C ; =0x04000242 + moveq r1, #0x84 + streqb r1, [r0, #0x0] + b _020C6380 +_020C6360: + cmp r0, #0x180 + bne _020C6380 + ldr r0, _020C63A0 ; =0x04000249 + mov r1, #0x81 + strb r1, [r0, #0x0] +_020C6374: + ldr r0, _020C63A4 ; =0x04000248 + mov r1, #0x81 + strb r1, [r0, #0x0] +_020C6380: + ldr r0, _020C6398 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6398: .word 0x021D33C4 +_020C639C: .word 0x04000242 +_020C63A0: .word 0x04000249 +_020C63A4: .word 0x04000248 + + arm_func_start GX_SetBankForLCDC +GX_SetBankForLCDC: ; 0x020C63A8 + ldr r1, _020C63C0 ; =0x021D33C4 + ldr ip, _020C63C4 ; =GX_VRAMCNT_SetLCDC_ + ldrh r2, [r1, #0x0] + orr r2, r2, r0 + strh r2, [r1, #0x0] + bx r12 + .balign 4 +_020C63C0: .word 0x021D33C4 +_020C63C4: .word GX_VRAMCNT_SetLCDC_ + + arm_func_start GX_SetBankForARM7 +GX_SetBankForARM7: ; 0x020C63C8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6474 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x6] + ldrh r3, [r1, #0x0] + cmp r0, #0x8 + strh r0, [r1, #0x6] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bgt _020C642C + cmp r0, #0x8 + bge _020C6450 + cmp r0, #0x4 + bgt _020C645C + cmp r0, #0x0 + blt _020C645C + cmp r0, #0x0 + beq _020C645C + cmp r0, #0x4 + ldreq r0, _020C6478 ; =0x04000242 + moveq r1, #0x82 + streqb r1, [r0, #0x0] + b _020C645C +_020C642C: + cmp r0, #0xc + bne _020C645C + ldr r1, _020C647C ; =0x04000243 + mov r2, #0x8a + strb r2, [r1, #0x0] + ldr r0, _020C6478 ; =0x04000242 + mov r1, #0x82 + strb r1, [r0, #0x0] + b _020C645C +_020C6450: + ldr r0, _020C647C ; =0x04000243 + mov r1, #0x82 + strb r1, [r0, #0x0] +_020C645C: + ldr r0, _020C6474 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6474: .word 0x021D33C4 +_020C6478: .word 0x04000242 +_020C647C: .word 0x04000243 + + arm_func_start GX_SetBankForClearImage +GX_SetBankForClearImage: ; 0x020C6480 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C65A8 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0xc] + ldrh r3, [r1, #0x0] + cmp r0, #0xc + strh r0, [r1, #0xc] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + addls pc, pc, r0, lsl #0x2 + b _020C6590 +_020C64B4: ; 0x020C64B4 + b _020C6540 +_020C64B8: ; 0x020C64B8 + b _020C6554 +_020C64BC: ; 0x020C64BC + b _020C64F4 +_020C64C0: ; 0x020C64C0 + b _020C64E8 +_020C64C4: ; 0x020C64C4 + b _020C6574 +_020C64C8: ; 0x020C64C8 + b _020C6590 +_020C64CC: ; 0x020C64CC + b _020C6590 +_020C64D0: ; 0x020C64D0 + b _020C6590 +_020C64D4: ; 0x020C64D4 + b _020C6520 +_020C64D8: ; 0x020C64D8 + b _020C6590 +_020C64DC: ; 0x020C64DC + b _020C6590 +_020C64E0: ; 0x020C64E0 + b _020C6590 +_020C64E4: ; 0x020C64E4 + b _020C6514 +_020C64E8: + ldr r0, _020C65AC ; =0x04000240 + mov r1, #0x93 + strb r1, [r0, #0x0] +_020C64F4: + ldr r0, _020C65B0 ; =0x04000241 + mov r2, #0x9b + ldr r1, _020C65B4 ; =0x04000060 + strb r2, [r0, #0x0] + ldrh r0, [r1, #0x0] + orr r0, r0, #0x4000 + strh r0, [r1, #0x0] + b _020C6590 +_020C6514: + ldr r0, _020C65B8 ; =0x04000242 + mov r1, #0x93 + strb r1, [r0, #0x0] +_020C6520: + ldr r0, _020C65BC ; =0x04000243 + mov r2, #0x9b + ldr r1, _020C65B4 ; =0x04000060 + strb r2, [r0, #0x0] + ldrh r0, [r1, #0x0] + orr r0, r0, #0x4000 + strh r0, [r1, #0x0] + b _020C6590 +_020C6540: + ldr r1, _020C65B4 ; =0x04000060 + ldrh r0, [r1, #0x0] + bic r0, r0, #0x4000 + strh r0, [r1, #0x0] + b _020C6590 +_020C6554: + ldr r0, _020C65AC ; =0x04000240 + mov r2, #0x9b + ldr r1, _020C65B4 ; =0x04000060 + strb r2, [r0, #0x0] + ldrh r0, [r1, #0x0] + orr r0, r0, #0x4000 + strh r0, [r1, #0x0] + b _020C6590 +_020C6574: + ldr r0, _020C65B8 ; =0x04000242 + mov r2, #0x9b + ldr r1, _020C65B4 ; =0x04000060 + strb r2, [r0, #0x0] + ldrh r0, [r1, #0x0] + orr r0, r0, #0x4000 + strh r0, [r1, #0x0] +_020C6590: + ldr r0, _020C65A8 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C65A8: .word 0x021D33C4 +_020C65AC: .word 0x04000240 +_020C65B0: .word 0x04000241 +_020C65B4: .word 0x04000060 +_020C65B8: .word 0x04000242 +_020C65BC: .word 0x04000243 + + arm_func_start GX_SetBankForTexPltt +GX_SetBankForTexPltt: ; 0x020C65C0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C66A4 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0xa] + ldrh r3, [r1, #0x0] + cmp r0, #0x30 + strh r0, [r1, #0xa] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bgt _020C661C + cmp r0, #0x30 + bge _020C6674 + cmp r0, #0x10 + bgt _020C6610 + cmp r0, #0x10 + bge _020C6680 + cmp r0, #0x0 + b _020C668C +_020C6610: + cmp r0, #0x20 + beq _020C6658 + b _020C668C +_020C661C: + cmp r0, #0x60 + bgt _020C6640 + cmp r0, #0x60 + bge _020C664C + cmp r0, #0x40 + ldreq r0, _020C66A8 ; =0x04000246 + moveq r1, #0x83 + streqb r1, [r0, #0x0] + b _020C668C +_020C6640: + cmp r0, #0x70 + beq _020C6668 + b _020C668C +_020C664C: + ldr r0, _020C66A8 ; =0x04000246 + mov r1, #0x8b + strb r1, [r0, #0x0] +_020C6658: + ldr r0, _020C66AC ; =0x04000245 + mov r1, #0x83 + strb r1, [r0, #0x0] + b _020C668C +_020C6668: + ldr r0, _020C66A8 ; =0x04000246 + mov r1, #0x9b + strb r1, [r0, #0x0] +_020C6674: + ldr r0, _020C66AC ; =0x04000245 + mov r1, #0x93 + strb r1, [r0, #0x0] +_020C6680: + ldr r0, _020C66B0 ; =0x04000244 + mov r1, #0x83 + strb r1, [r0, #0x0] +_020C668C: + ldr r0, _020C66A4 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C66A4: .word 0x021D33C4 +_020C66A8: .word 0x04000246 +_020C66AC: .word 0x04000245 +_020C66B0: .word 0x04000244 + + arm_func_start GX_SetBankForTex +GX_SetBankForTex: ; 0x020C66B4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C689C ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x8] + ldrh r3, [r1, #0x0] + cmp r0, #0x0 + strh r0, [r1, #0x8] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bne _020C66FC + ldr r2, _020C68A0 ; =0x04000060 + ldr r0, _020C68A4 ; =0x0000CFFE + ldrh r1, [r2, #0x0] + and r0, r1, r0 + strh r0, [r2, #0x0] + b _020C6884 +_020C66FC: + ldr r2, _020C68A0 ; =0x04000060 + cmp r0, #0xf + ldrh r1, [r2, #0x0] + bic r1, r1, #0x3000 + orr r1, r1, #0x1 + strh r1, [r2, #0x0] + addls pc, pc, r0, lsl #0x2 + b _020C6884 +_020C671C: ; 0x020C671C + b _020C6884 +_020C6720: ; 0x020C6720 + b _020C6878 +_020C6724: ; 0x020C6724 + b _020C6844 +_020C6728: ; 0x020C6728 + b _020C686C +_020C672C: ; 0x020C672C + b _020C681C +_020C6730: ; 0x020C6730 + b _020C675C +_020C6734: ; 0x020C6734 + b _020C6838 +_020C6738: ; 0x020C6738 + b _020C6860 +_020C673C: ; 0x020C673C + b _020C6800 +_020C6740: ; 0x020C6740 + b _020C6778 +_020C6744: ; 0x020C6744 + b _020C6794 +_020C6748: ; 0x020C6748 + b _020C67B0 +_020C674C: ; 0x020C674C + b _020C6810 +_020C6750: ; 0x020C6750 + b _020C67D8 +_020C6754: ; 0x020C6754 + b _020C682C +_020C6758: ; 0x020C6758 + b _020C6854 +_020C675C: + ldr r1, _020C68A8 ; =0x04000240 + mov r2, #0x83 + ldr r0, _020C68AC ; =0x04000242 + strb r2, [r1, #0x0] + mov r1, #0x8b + strb r1, [r0, #0x0] + b _020C6884 +_020C6778: + ldr r1, _020C68A8 ; =0x04000240 + mov r2, #0x83 + ldr r0, _020C68B0 ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x8b + strb r1, [r0, #0x0] + b _020C6884 +_020C6794: + ldr r1, _020C68B4 ; =0x04000241 + mov r2, #0x83 + ldr r0, _020C68B0 ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x8b + strb r1, [r0, #0x0] + b _020C6884 +_020C67B0: + ldr r0, _020C68A8 ; =0x04000240 + mov r2, #0x83 + ldr r1, _020C68B4 ; =0x04000241 + strb r2, [r0, #0x0] + mov r2, #0x8b + ldr r0, _020C68B0 ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x93 + strb r1, [r0, #0x0] + b _020C6884 +_020C67D8: + ldr r0, _020C68A8 ; =0x04000240 + mov r2, #0x83 + ldr r1, _020C68AC ; =0x04000242 + strb r2, [r0, #0x0] + mov r2, #0x8b + ldr r0, _020C68B0 ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x93 + strb r1, [r0, #0x0] + b _020C6884 +_020C6800: + ldr r0, _020C68B0 ; =0x04000243 + mov r1, #0x83 + strb r1, [r0, #0x0] + b _020C6884 +_020C6810: + ldr r0, _020C68B0 ; =0x04000243 + mov r1, #0x8b + strb r1, [r0, #0x0] +_020C681C: + ldr r0, _020C68AC ; =0x04000242 + mov r1, #0x83 + strb r1, [r0, #0x0] + b _020C6884 +_020C682C: + ldr r0, _020C68B0 ; =0x04000243 + mov r1, #0x93 + strb r1, [r0, #0x0] +_020C6838: + ldr r0, _020C68AC ; =0x04000242 + mov r1, #0x8b + strb r1, [r0, #0x0] +_020C6844: + ldr r0, _020C68B4 ; =0x04000241 + mov r1, #0x83 + strb r1, [r0, #0x0] + b _020C6884 +_020C6854: + ldr r0, _020C68B0 ; =0x04000243 + mov r1, #0x9b + strb r1, [r0, #0x0] +_020C6860: + ldr r0, _020C68AC ; =0x04000242 + mov r1, #0x93 + strb r1, [r0, #0x0] +_020C686C: + ldr r0, _020C68B4 ; =0x04000241 + mov r1, #0x8b + strb r1, [r0, #0x0] +_020C6878: + ldr r0, _020C68A8 ; =0x04000240 + mov r1, #0x83 + strb r1, [r0, #0x0] +_020C6884: + ldr r0, _020C689C ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C689C: .word 0x021D33C4 +_020C68A0: .word 0x04000060 +_020C68A4: .word 0x0000CFFE +_020C68A8: .word 0x04000240 +_020C68AC: .word 0x04000242 +_020C68B0: .word 0x04000243 +_020C68B4: .word 0x04000241 + + arm_func_start GX_SetBankForOBJExtPltt +GX_SetBankForOBJExtPltt: ; 0x020C68B8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6964 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x10] + ldrh r3, [r1, #0x0] + cmp r0, #0x0 + strh r0, [r1, #0x10] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + beq _020C693C + cmp r0, #0x20 + beq _020C68FC + cmp r0, #0x40 + beq _020C691C + b _020C694C +_020C68FC: + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr r0, _020C6968 ; =0x04000245 + orr r1, r1, #0x80000000 + str r1, [r2, #0x0] + mov r1, #0x85 + strb r1, [r0, #0x0] + b _020C694C +_020C691C: + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr r0, _020C696C ; =0x04000246 + orr r1, r1, #0x80000000 + str r1, [r2, #0x0] + mov r1, #0x85 + strb r1, [r0, #0x0] + b _020C694C +_020C693C: + mov r1, #0x4000000 + ldr r0, [r1, #0x0] + bic r0, r0, #0x80000000 + str r0, [r1, #0x0] +_020C694C: + ldr r0, _020C6964 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6964: .word 0x021D33C4 +_020C6968: .word 0x04000245 +_020C696C: .word 0x04000246 + + arm_func_start GX_SetBankForBGExtPltt +GX_SetBankForBGExtPltt: ; 0x020C6970 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6A74 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0xe] + ldrh r3, [r1, #0x0] + cmp r0, #0x20 + strh r0, [r1, #0xe] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bgt _020C69D4 + cmp r0, #0x20 + bge _020C6A40 + cmp r0, #0x0 + bgt _020C69C8 + cmp r0, #0x0 + moveq r1, #0x4000000 + ldreq r0, [r1, #0x0] + biceq r0, r0, #0x40000000 + streq r0, [r1, #0x0] + b _020C6A5C +_020C69C8: + cmp r0, #0x10 + beq _020C69F4 + b _020C6A5C +_020C69D4: + cmp r0, #0x40 + bgt _020C69E8 + cmp r0, #0x40 + beq _020C6A14 + b _020C6A5C +_020C69E8: + cmp r0, #0x60 + beq _020C6A34 + b _020C6A5C +_020C69F4: + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr r0, _020C6A78 ; =0x04000244 + orr r1, r1, #0x40000000 + str r1, [r2, #0x0] + mov r1, #0x84 + strb r1, [r0, #0x0] + b _020C6A5C +_020C6A14: + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldr r0, _020C6A7C ; =0x04000246 + orr r1, r1, #0x40000000 + str r1, [r2, #0x0] + mov r1, #0x8c + strb r1, [r0, #0x0] + b _020C6A5C +_020C6A34: + ldr r0, _020C6A7C ; =0x04000246 + mov r1, #0x8c + strb r1, [r0, #0x0] +_020C6A40: + ldr r0, _020C6A80 ; =0x04000245 + mov r1, #0x84 + strb r1, [r0, #0x0] + mov r1, #0x4000000 + ldr r0, [r1, #0x0] + orr r0, r0, #0x40000000 + str r0, [r1, #0x0] +_020C6A5C: + ldr r0, _020C6A74 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6A74: .word 0x021D33C4 +_020C6A78: .word 0x04000244 +_020C6A7C: .word 0x04000246 +_020C6A80: .word 0x04000245 + + arm_func_start GX_SetBankForOBJ +GX_SetBankForOBJ: ; 0x020C6A84 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6BD8 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x4] + ldrh r3, [r1, #0x0] + cmp r0, #0x30 + strh r0, [r1, #0x4] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bgt _020C6AF4 + cmp r0, #0x30 + bge _020C6B70 + cmp r0, #0x10 + bgt _020C6AE8 + cmp r0, #0x10 + bge _020C6B7C + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020C6BC0 +_020C6AD8: ; 0x020C6AD8 + b _020C6BC0 +_020C6ADC: ; 0x020C6ADC + b _020C6B44 +_020C6AE0: ; 0x020C6AE0 + b _020C6B54 +_020C6AE4: ; 0x020C6AE4 + b _020C6B38 +_020C6AE8: + cmp r0, #0x20 + beq _020C6BB4 + b _020C6BC0 +_020C6AF4: + cmp r0, #0x50 + bgt _020C6B18 + cmp r0, #0x50 + bge _020C6B8C + cmp r0, #0x40 + ldreq r0, _020C6BDC ; =0x04000246 + moveq r1, #0x82 + streqb r1, [r0, #0x0] + b _020C6BC0 +_020C6B18: + cmp r0, #0x60 + bgt _020C6B2C + cmp r0, #0x60 + beq _020C6BA8 + b _020C6BC0 +_020C6B2C: + cmp r0, #0x70 + beq _020C6B64 + b _020C6BC0 +_020C6B38: + ldr r0, _020C6BE0 ; =0x04000241 + mov r1, #0x8a + strb r1, [r0, #0x0] +_020C6B44: + ldr r0, _020C6BE4 ; =0x04000240 + mov r1, #0x82 + strb r1, [r0, #0x0] + b _020C6BC0 +_020C6B54: + ldr r0, _020C6BE0 ; =0x04000241 + mov r1, #0x82 + strb r1, [r0, #0x0] + b _020C6BC0 +_020C6B64: + ldr r0, _020C6BDC ; =0x04000246 + mov r1, #0x9a + strb r1, [r0, #0x0] +_020C6B70: + ldr r0, _020C6BE8 ; =0x04000245 + mov r1, #0x92 + strb r1, [r0, #0x0] +_020C6B7C: + ldr r0, _020C6BEC ; =0x04000244 + mov r1, #0x82 + strb r1, [r0, #0x0] + b _020C6BC0 +_020C6B8C: + ldr r1, _020C6BDC ; =0x04000246 + mov r2, #0x92 + ldr r0, _020C6BEC ; =0x04000244 + strb r2, [r1, #0x0] + mov r1, #0x82 + strb r1, [r0, #0x0] + b _020C6BC0 +_020C6BA8: + ldr r0, _020C6BDC ; =0x04000246 + mov r1, #0x8a + strb r1, [r0, #0x0] +_020C6BB4: + ldr r0, _020C6BE8 ; =0x04000245 + mov r1, #0x82 + strb r1, [r0, #0x0] +_020C6BC0: + ldr r0, _020C6BD8 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6BD8: .word 0x021D33C4 +_020C6BDC: .word 0x04000246 +_020C6BE0: .word 0x04000241 +_020C6BE4: .word 0x04000240 +_020C6BE8: .word 0x04000245 +_020C6BEC: .word 0x04000244 + + arm_func_start GX_SetBankForBG +GX_SetBankForBG: ; 0x020C6BF0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020C6E88 ; =0x021D33C4 + mvn r12, r0 + ldrh r2, [r1, #0x2] + ldrh r3, [r1, #0x0] + cmp r0, #0x40 + strh r0, [r1, #0x2] + orr r2, r3, r2 + and r2, r12, r2 + strh r2, [r1, #0x0] + bgt _020C6CCC + cmp r0, #0x40 + bge _020C6E64 + cmp r0, #0x20 + bgt _020C6CC0 + cmp r0, #0x0 + addge pc, pc, r0, lsl #0x2 + b _020C6E70 +_020C6C3C: ; 0x020C6C3C + b _020C6E70 +_020C6C40: ; 0x020C6C40 + b _020C6D6C +_020C6C44: ; 0x020C6C44 + b _020C6D38 +_020C6C48: ; 0x020C6C48 + b _020C6D60 +_020C6C4C: ; 0x020C6C4C + b _020C6D10 +_020C6C50: ; 0x020C6C50 + b _020C6DB0 +_020C6C54: ; 0x020C6C54 + b _020C6D2C +_020C6C58: ; 0x020C6C58 + b _020C6D54 +_020C6C5C: ; 0x020C6C5C + b _020C6CF4 +_020C6C60: ; 0x020C6C60 + b _020C6DCC +_020C6C64: ; 0x020C6C64 + b _020C6DE8 +_020C6C68: ; 0x020C6C68 + b _020C6D7C +_020C6C6C: ; 0x020C6C6C + b _020C6D04 +_020C6C70: ; 0x020C6C70 + b _020C6DA4 +_020C6C74: ; 0x020C6C74 + b _020C6D20 +_020C6C78: ; 0x020C6C78 + b _020C6D48 +_020C6C7C: ; 0x020C6C7C + b _020C6E1C +_020C6C80: ; 0x020C6C80 + b _020C6E70 +_020C6C84: ; 0x020C6C84 + b _020C6E70 +_020C6C88: ; 0x020C6C88 + b _020C6E70 +_020C6C8C: ; 0x020C6C8C + b _020C6E70 +_020C6C90: ; 0x020C6C90 + b _020C6E70 +_020C6C94: ; 0x020C6C94 + b _020C6E70 +_020C6C98: ; 0x020C6C98 + b _020C6E70 +_020C6C9C: ; 0x020C6C9C + b _020C6E70 +_020C6CA0: ; 0x020C6CA0 + b _020C6E70 +_020C6CA4: ; 0x020C6CA4 + b _020C6E70 +_020C6CA8: ; 0x020C6CA8 + b _020C6E70 +_020C6CAC: ; 0x020C6CAC + b _020C6E70 +_020C6CB0: ; 0x020C6CB0 + b _020C6E70 +_020C6CB4: ; 0x020C6CB4 + b _020C6E70 +_020C6CB8: ; 0x020C6CB8 + b _020C6E70 +_020C6CBC: ; 0x020C6CBC + b _020C6E54 +_020C6CC0: + cmp r0, #0x30 + beq _020C6E10 + b _020C6E70 +_020C6CCC: + cmp r0, #0x60 + bgt _020C6CE8 + cmp r0, #0x60 + bge _020C6E48 + cmp r0, #0x50 + beq _020C6E2C + b _020C6E70 +_020C6CE8: + cmp r0, #0x70 + beq _020C6E04 + b _020C6E70 +_020C6CF4: + ldr r0, _020C6E8C ; =0x04000243 + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6D04: + ldr r0, _020C6E8C ; =0x04000243 + mov r1, #0x89 + strb r1, [r0, #0x0] +_020C6D10: + ldr r0, _020C6E90 ; =0x04000242 + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6D20: + ldr r0, _020C6E8C ; =0x04000243 + mov r1, #0x91 + strb r1, [r0, #0x0] +_020C6D2C: + ldr r0, _020C6E90 ; =0x04000242 + mov r1, #0x89 + strb r1, [r0, #0x0] +_020C6D38: + ldr r0, _020C6E94 ; =0x04000241 + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6D48: + ldr r0, _020C6E8C ; =0x04000243 + mov r1, #0x99 + strb r1, [r0, #0x0] +_020C6D54: + ldr r0, _020C6E90 ; =0x04000242 + mov r1, #0x91 + strb r1, [r0, #0x0] +_020C6D60: + ldr r0, _020C6E94 ; =0x04000241 + mov r1, #0x89 + strb r1, [r0, #0x0] +_020C6D6C: + ldr r0, _020C6E98 ; =0x04000240 + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6D7C: + ldr r0, _020C6E98 ; =0x04000240 + mov r2, #0x81 + ldr r1, _020C6E94 ; =0x04000241 + strb r2, [r0, #0x0] + mov r2, #0x89 + ldr r0, _020C6E8C ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x91 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6DA4: + ldr r0, _020C6E8C ; =0x04000243 + mov r1, #0x91 + strb r1, [r0, #0x0] +_020C6DB0: + ldr r1, _020C6E98 ; =0x04000240 + mov r2, #0x81 + ldr r0, _020C6E90 ; =0x04000242 + strb r2, [r1, #0x0] + mov r1, #0x89 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6DCC: + ldr r1, _020C6E98 ; =0x04000240 + mov r2, #0x81 + ldr r0, _020C6E8C ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x89 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6DE8: + ldr r1, _020C6E94 ; =0x04000241 + mov r2, #0x81 + ldr r0, _020C6E8C ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x89 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6E04: + ldr r0, _020C6E9C ; =0x04000246 + mov r1, #0x99 + strb r1, [r0, #0x0] +_020C6E10: + ldr r0, _020C6EA0 ; =0x04000245 + mov r1, #0x91 + strb r1, [r0, #0x0] +_020C6E1C: + ldr r0, _020C6EA4 ; =0x04000244 + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6E2C: + ldr r1, _020C6E9C ; =0x04000246 + mov r2, #0x91 + ldr r0, _020C6EA4 ; =0x04000244 + strb r2, [r1, #0x0] + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6E48: + ldr r0, _020C6E9C ; =0x04000246 + mov r1, #0x89 + strb r1, [r0, #0x0] +_020C6E54: + ldr r0, _020C6EA0 ; =0x04000245 + mov r1, #0x81 + strb r1, [r0, #0x0] + b _020C6E70 +_020C6E64: + ldr r0, _020C6E9C ; =0x04000246 + mov r1, #0x81 + strb r1, [r0, #0x0] +_020C6E70: + ldr r0, _020C6E88 ; =0x021D33C4 + ldrh r0, [r0, #0x0] + bl GX_VRAMCNT_SetLCDC_ + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C6E88: .word 0x021D33C4 +_020C6E8C: .word 0x04000243 +_020C6E90: .word 0x04000242 +_020C6E94: .word 0x04000241 +_020C6E98: .word 0x04000240 +_020C6E9C: .word 0x04000246 +_020C6EA0: .word 0x04000245 +_020C6EA4: .word 0x04000244 + + arm_func_start GX_VRAMCNT_SetLCDC_ +GX_VRAMCNT_SetLCDC_: ; 0x020C6EA8 + ands r1, r0, #0x1 + ldrne r1, _020C6F3C ; =0x04000240 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x2 + ldrne r1, _020C6F40 ; =0x04000241 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x4 + ldrne r1, _020C6F44 ; =0x04000242 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x8 + ldrne r1, _020C6F48 ; =0x04000243 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x10 + ldrne r1, _020C6F4C ; =0x04000244 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x20 + ldrne r1, _020C6F50 ; =0x04000245 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x40 + ldrne r1, _020C6F54 ; =0x04000246 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r1, r0, #0x80 + ldrne r1, _020C6F58 ; =0x04000248 + movne r2, #0x80 + strneb r2, [r1, #0x0] + ands r0, r0, #0x100 + ldrne r0, _020C6F5C ; =0x04000249 + movne r1, #0x80 + strneb r1, [r0, #0x0] + bx lr + .balign 4 +_020C6F3C: .word 0x04000240 +_020C6F40: .word 0x04000241 +_020C6F44: .word 0x04000242 +_020C6F48: .word 0x04000243 +_020C6F4C: .word 0x04000244 +_020C6F50: .word 0x04000245 +_020C6F54: .word 0x04000246 +_020C6F58: .word 0x04000248 +_020C6F5C: .word 0x04000249 + + arm_func_start G2S_GetBG3CharPtr +G2S_GetBG3CharPtr: ; 0x020C6F60 + ldr r1, _020C6FA8 ; =0x04001000 + ldr r0, _020C6FAC ; =0x0400100E + ldr r1, [r1, #0x0] + ldrh r2, [r0, #0x0] + and r0, r1, #0x7 + cmp r0, #0x3 + blt _020C6F8C + cmp r0, #0x6 + bge _020C6FA0 + ands r0, r2, #0x80 + bne _020C6FA0 +_020C6F8C: + and r0, r2, #0x3c + mov r0, r0, lsr #0x2 + mov r0, r0, lsl #0xe + add r0, r0, #0x6200000 + bx lr +_020C6FA0: + mov r0, #0x0 + bx lr + .balign 4 +_020C6FA8: .word 0x04001000 +_020C6FAC: .word 0x0400100E + + arm_func_start G2_GetBG3CharPtr +G2_GetBG3CharPtr: ; 0x020C6FB0 + mov r0, #0x4000000 + ldr r1, [r0, #0x0] + ldr r0, _020C700C ; =0x0400000E + and r1, r1, #0x7 + cmp r1, #0x3 + ldrh r2, [r0, #0x0] + blt _020C6FDC + cmp r1, #0x6 + bge _020C7004 + ands r0, r2, #0x80 + bne _020C7004 +_020C6FDC: + mov r0, #0x4000000 + ldr r1, [r0, #0x0] + and r0, r2, #0x3c + and r1, r1, #0x7000000 + mov r1, r1, lsr #0x18 + mov r1, r1, lsl #0x10 + add r1, r1, #0x6000000 + mov r0, r0, lsr #0x2 + add r0, r1, r0, lsl #0xe + bx lr +_020C7004: + mov r0, #0x0 + bx lr + .balign 4 +_020C700C: .word 0x0400000E + + arm_func_start G2S_GetBG2CharPtr +G2S_GetBG2CharPtr: ; 0x020C7010 + ldr r1, _020C7050 ; =0x04001000 + ldr r0, _020C7054 ; =0x0400100C + ldr r1, [r1, #0x0] + ldrh r2, [r0, #0x0] + and r0, r1, #0x7 + cmp r0, #0x5 + blt _020C7034 + ands r0, r2, #0x80 + bne _020C7048 +_020C7034: + and r0, r2, #0x3c + mov r0, r0, lsr #0x2 + mov r0, r0, lsl #0xe + add r0, r0, #0x6200000 + bx lr +_020C7048: + mov r0, #0x0 + bx lr + .balign 4 +_020C7050: .word 0x04001000 +_020C7054: .word 0x0400100C + + arm_func_start G2_GetBG2CharPtr +G2_GetBG2CharPtr: ; 0x020C7058 + mov r0, #0x4000000 + ldr r1, [r0, #0x0] + ldr r0, _020C70AC ; =0x0400000C + and r1, r1, #0x7 + cmp r1, #0x5 + ldrh r2, [r0, #0x0] + blt _020C707C + ands r0, r2, #0x80 + bne _020C70A4 +_020C707C: + mov r0, #0x4000000 + ldr r1, [r0, #0x0] + and r0, r2, #0x3c + and r1, r1, #0x7000000 + mov r1, r1, lsr #0x18 + mov r1, r1, lsl #0x10 + add r1, r1, #0x6000000 + mov r0, r0, lsr #0x2 + add r0, r1, r0, lsl #0xe + bx lr +_020C70A4: + mov r0, #0x0 + bx lr + .balign 4 +_020C70AC: .word 0x0400000C + + arm_func_start G2S_GetBG1CharPtr +G2S_GetBG1CharPtr: ; 0x020C70B0 + ldr r0, _020C70CC ; =0x0400100A + ldrh r0, [r0, #0x0] + and r0, r0, #0x3c + mov r0, r0, asr #0x2 + mov r0, r0, lsl #0xe + add r0, r0, #0x6200000 + bx lr + .balign 4 +_020C70CC: .word 0x0400100A + + arm_func_start G2_GetBG1CharPtr +G2_GetBG1CharPtr: ; 0x020C70D0 + ldr r1, _020C7100 ; =0x0400000A + mov r0, #0x4000000 + ldrh r1, [r1, #0x0] + ldr r0, [r0, #0x0] + and r0, r0, #0x7000000 + mov r0, r0, lsr #0x18 + and r1, r1, #0x3c + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x2 + add r0, r0, #0x6000000 + add r0, r0, r1, lsl #0xe + bx lr + .balign 4 +_020C7100: .word 0x0400000A + + arm_func_start G2S_GetBG0CharPtr +G2S_GetBG0CharPtr: ; 0x020C7104 + ldr r0, _020C7120 ; =0x04001008 + ldrh r0, [r0, #0x0] + and r0, r0, #0x3c + mov r0, r0, asr #0x2 + mov r0, r0, lsl #0xe + add r0, r0, #0x6200000 + bx lr + .balign 4 +_020C7120: .word 0x04001008 + + arm_func_start G2_GetBG0CharPtr +G2_GetBG0CharPtr: ; 0x020C7124 + ldr r1, _020C7154 ; =0x04000008 + mov r0, #0x4000000 + ldrh r1, [r1, #0x0] + ldr r0, [r0, #0x0] + and r0, r0, #0x7000000 + mov r0, r0, lsr #0x18 + and r1, r1, #0x3c + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x2 + add r0, r0, #0x6000000 + add r0, r0, r1, lsl #0xe + bx lr + .balign 4 +_020C7154: .word 0x04000008 + + arm_func_start G2S_GetBG3ScrPtr +G2S_GetBG3ScrPtr: ; 0x020C7158 + ldr r1, _020C71D0 ; =0x04001000 + ldr r0, _020C71D4 ; =0x0400100E + ldr r1, [r1, #0x0] + ldrh r2, [r0, #0x0] + and r3, r1, #0x7 + cmp r3, #0x6 + and r0, r2, #0x1f00 + mov r1, r0, lsr #0x8 + addls pc, pc, r3, lsl #0x2 + b _020C71C8 +_020C7180: ; 0x020C7180 + b _020C719C +_020C7184: ; 0x020C7184 + b _020C719C +_020C7188: ; 0x020C7188 + b _020C719C +_020C718C: ; 0x020C718C + b _020C71A8 +_020C7190: ; 0x020C7190 + b _020C71A8 +_020C7194: ; 0x020C7194 + b _020C71A8 +_020C7198: ; 0x020C7198 + b _020C71C0 +_020C719C: + mov r0, r1, lsl #0xb + add r0, r0, #0x6200000 + bx lr +_020C71A8: + ands r0, r2, #0x80 + movne r0, r1, lsl #0xe + addne r0, r0, #0x6200000 + moveq r0, r1, lsl #0xb + addeq r0, r0, #0x6200000 + bx lr +_020C71C0: + mov r0, #0x0 + bx lr +_020C71C8: + mov r0, #0x0 + bx lr + .balign 4 +_020C71D0: .word 0x04001000 +_020C71D4: .word 0x0400100E + + arm_func_start G2_GetBG3ScrPtr +G2_GetBG3ScrPtr: ; 0x020C71D8 + ldr r0, _020C7260 ; =0x0400000E + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldrh r3, [r0, #0x0] + ldr r0, [r2, #0x0] + and r12, r1, #0x7 + and r0, r0, #0x38000000 + mov r1, r0, lsr #0x1b + and r0, r3, #0x1f00 + mov r2, r1, lsl #0x10 + cmp r12, #0x6 + mov r1, r0, lsr #0x8 + addls pc, pc, r12, lsl #0x2 + b _020C7258 +_020C7210: + b _020C722C +_020C7214: + b _020C722C +_020C7218: + b _020C722C +_020C721C: + b _020C7238 +_020C7220: + b _020C7238 +_020C7224: + b _020C7238 +_020C7228: + b _020C7250 +_020C722C: + add r0, r2, #0x6000000 + add r0, r0, r1, lsl #0xb + bx lr +_020C7238: + ands r0, r3, #0x80 + movne r0, r1, lsl #0xe + addne r0, r0, #0x6000000 + addeq r0, r2, #0x6000000 + addeq r0, r0, r1, lsl #0xb + bx lr +_020C7250: + mov r0, #0x0 + bx lr +_020C7258: + mov r0, #0x0 + bx lr + .balign 4 +_020C7260: .word 0x0400000E + + arm_func_start G2S_GetBG2ScrPtr +G2S_GetBG2ScrPtr: ; 0x020C7264 + ldr r1, _020C72DC ; =0x04001000 + ldr r0, _020C72E0 ; =0x0400100C + ldr r1, [r1, #0x0] + ldrh r2, [r0, #0x0] + and r3, r1, #0x7 + cmp r3, #0x6 + and r0, r2, #0x1f00 + mov r1, r0, lsr #0x8 + addls pc, pc, r3, lsl #0x2 + b _020C72D4 +_020C728C: ; 0x020C728C + b _020C72A8 +_020C7290: ; 0x020C7290 + b _020C72A8 +_020C7294: ; 0x020C7294 + b _020C72A8 +_020C7298: ; 0x020C7298 + b _020C72A8 +_020C729C: ; 0x020C729C + b _020C72A8 +_020C72A0: ; 0x020C72A0 + b _020C72B4 +_020C72A4: ; 0x020C72A4 + b _020C72CC +_020C72A8: + mov r0, r1, lsl #0xb + add r0, r0, #0x6200000 + bx lr +_020C72B4: + ands r0, r2, #0x80 + movne r0, r1, lsl #0xe + addne r0, r0, #0x6200000 + moveq r0, r1, lsl #0xb + addeq r0, r0, #0x6200000 + bx lr +_020C72CC: + mov r0, #0x0 + bx lr +_020C72D4: + mov r0, #0x0 + bx lr + .balign 4 +_020C72DC: .word 0x04001000 +_020C72E0: .word 0x0400100C + + arm_func_start G2_GetBG2ScrPtr +G2_GetBG2ScrPtr: ; 0x020C72E4 + ldr r0, _020C736C ; =0x0400000C + mov r2, #0x4000000 + ldr r1, [r2, #0x0] + ldrh r3, [r0, #0x0] + ldr r0, [r2, #0x0] + and r12, r1, #0x7 + and r0, r0, #0x38000000 + mov r1, r0, lsr #0x1b + and r0, r3, #0x1f00 + mov r2, r1, lsl #0x10 + cmp r12, #0x6 + mov r1, r0, lsr #0x8 + addls pc, pc, r12, lsl #0x2 + b _020C7364 +_020C731C: + b _020C7338 +_020C7320: + b _020C7338 +_020C7324: + b _020C7338 +_020C7328: + b _020C7338 +_020C732C: + b _020C7338 +_020C7330: + b _020C7344 +_020C7334: + b _020C735C +_020C7338: + add r0, r2, #0x6000000 + add r0, r0, r1, lsl #0xb + bx lr +_020C7344: + ands r0, r3, #0x80 + movne r0, r1, lsl #0xe + addne r0, r0, #0x6000000 + addeq r0, r2, #0x6000000 + addeq r0, r0, r1, lsl #0xb + bx lr +_020C735C: + mov r0, #0x6000000 + bx lr +_020C7364: + mov r0, #0x0 + bx lr + .balign 4 +_020C736C: .word 0x0400000C + + arm_func_start G2S_GetBG1ScrPtr +G2S_GetBG1ScrPtr: ; 0x020C7370 + ldr r0, _020C738C ; =0x0400100A + ldrh r0, [r0, #0x0] + and r0, r0, #0x1f00 + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0xb + add r0, r0, #0x6200000 + bx lr + .balign 4 +_020C738C: .word 0x0400100A + + arm_func_start G2_GetBG1ScrPtr +G2_GetBG1ScrPtr: ; 0x020C7390 + ldr r1, _020C73C0 ; =0x0400000A + mov r0, #0x4000000 + ldrh r1, [r1, #0x0] + ldr r0, [r0, #0x0] + and r0, r0, #0x38000000 + mov r0, r0, lsr #0x1b + and r1, r1, #0x1f00 + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x8 + add r0, r0, #0x6000000 + add r0, r0, r1, lsl #0xb + bx lr + .balign 4 +_020C73C0: .word 0x0400000A + + arm_func_start G2S_GetBG0ScrPtr +G2S_GetBG0ScrPtr: ; 0x020C73C4 + ldr r0, _020C73E0 ; =0x04001008 + ldrh r0, [r0, #0x0] + and r0, r0, #0x1f00 + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0xb + add r0, r0, #0x6200000 + bx lr + .balign 4 +_020C73E0: .word 0x04001008 + + arm_func_start G2_GetBG0ScrPtr +G2_GetBG0ScrPtr: ; 0x020C73E4 + ldr r1, _020C7414 ; =0x04000008 + mov r0, #0x4000000 + ldrh r1, [r1, #0x0] + ldr r0, [r0, #0x0] + and r0, r0, #0x38000000 + mov r0, r0, lsr #0x1b + and r1, r1, #0x1f00 + mov r0, r0, lsl #0x10 + mov r1, r1, asr #0x8 + add r0, r0, #0x6000000 + add r0, r0, r1, lsl #0xb + bx lr + .balign 4 +_020C7414: .word 0x04000008 + + arm_func_start G2x_ChangeBlendBrightness_ +G2x_ChangeBlendBrightness_: ; 0x020C7418 + cmp r1, #0x0 + ldrh r3, [r0, #0x0] + bge _020C7444 + and r2, r3, #0xc0 + cmp r2, #0x80 + biceq r2, r3, #0xc0 + orreq r2, r2, #0xc0 + streqh r2, [r0, #0x0] + rsb r1, r1, #0x0 + strh r1, [r0, #0x4] + bx lr +_020C7444: + and r2, r3, #0xc0 + cmp r2, #0xc0 + biceq r2, r3, #0xc0 + orreq r2, r2, #0x80 + streqh r2, [r0, #0x0] + strh r1, [r0, #0x4] + bx lr + + arm_func_start G2x_SetBlendBrightnessExt_ +G2x_SetBlendBrightnessExt_: ; 0x020C7460 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [sp, #0x8] + ldr r12, [sp, #0xc] + orr r3, r3, lr, lsl #0x8 + cmp r12, #0x0 + orrge r1, r1, #0x80 + strh r3, [r0, #0x2] + orrge r1, r1, r2, lsl #0x8 + strgeh r1, [r0, #0x0] + strgeh r12, [r0, #0x4] + addge sp, sp, #0x4 + ldmgeia sp!, {lr} + bxge lr + orr r1, r1, #0xc0 + orr r1, r1, r2, lsl #0x8 + strh r1, [r0, #0x0] + rsb r1, r12, #0x0 + strh r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start G2x_SetBlendBrightness_ +G2x_SetBlendBrightness_: ; 0x020C74B8 + cmp r2, #0x0 + orrlt r1, r1, #0xc0 + strlth r1, [r0, #0x0] + rsblt r1, r2, #0x0 + strlth r1, [r0, #0x4] + orrge r1, r1, #0x80 + strgeh r1, [r0, #0x0] + strgeh r2, [r0, #0x4] + bx lr + + arm_func_start G2x_SetBlendAlpha_ +G2x_SetBlendAlpha_: ; 0x020C74DC + ldr r12, [sp, #0x0] + orr r1, r1, #0x40 + orr r2, r1, r2, lsl #0x8 + orr r1, r3, r12, lsl #0x8 + orr r1, r2, r1, lsl #0x10 + str r1, [r0, #0x0] + bx lr + + arm_func_start G2x_SetBGyAffine_ +G2x_SetBGyAffine_: ; 0x020C74F8 + stmdb sp!, {r4-r6,lr} + ldr r5, [r1, #0x0] + ldr r4, [r1, #0x4] + mov r12, r5, lsl #0xc + mov lr, r4, lsl #0xc + mov r5, r12, asr #0x10 + mov r4, lr, asr #0x10 + mov r12, r5, lsl #0x10 + mov lr, r4, lsl #0x10 + mov r5, r12, lsr #0x10 + mov r4, lr, lsr #0x10 + orr r4, r5, r4, lsl #0x10 + str r4, [r0, #0x0] + ldr r5, [r1, #0x8] + ldr r4, [r1, #0xc] + mov r12, r5, lsl #0xc + mov lr, r4, lsl #0xc + mov r5, r12, asr #0x10 + mov r4, lr, asr #0x10 + mov r12, r5, lsl #0x10 + mov lr, r4, lsl #0x10 + ldr r4, [sp, #0x14] + ldr r6, [sp, #0x10] + mov r12, r12, lsr #0x10 + mov r5, lr, lsr #0x10 + orr r5, r12, r5, lsl #0x10 + str r5, [r0, #0x4] + ldr r12, [r1, #0x4] + sub r5, r4, r3 + ldr r4, [r1, #0xc] + mul lr, r12, r5 + mul r5, r4, r5 + ldr r12, [r1, #0x0] + sub r6, r6, r2 + ldr r4, [r1, #0x8] + mla r1, r12, r6, lr + mla r5, r4, r6, r5 + add r1, r1, r2, lsl #0xc + add r2, r5, r3, lsl #0xc + mov r1, r1, asr #0x4 + str r1, [r0, #0x8] + mov r1, r2, asr #0x4 + str r1, [r0, #0xc] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start G3B_End +G3B_End: ; 0x020C75AC + ldr r1, [r0, #0x0] + mov r2, #0x41 + str r2, [r1, #0x0] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3B_Begin +G3B_Begin: ; 0x020C75D0 + ldr r2, [r0, #0x0] + mov r3, #0x40 + str r3, [r2, #0x0] + ldr r2, [r0, #0x4] + str r1, [r2, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3B_LightColor +G3B_LightColor: ; 0x020C7600 + ldr r3, [r0, #0x0] + mov r12, #0x33 + str r12, [r3, #0x0] + ldr r3, [r0, #0x4] + orr r1, r2, r1, lsl #0x1e + str r1, [r3, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3B_LightVector +G3B_LightVector: ; 0x020C7634 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr ip, _020C7694 ; =0x000003FF + ldrsh r4, [sp, #0x10] + ldr lr, [r0, #0x0] + mov r5, #0x32 + str r5, [lr, #0x0] + and lr, r12, r2, asr #0x3 + and r2, r12, r3, asr #0x3 + and r3, r12, r4, asr #0x3 + orr r2, lr, r2, lsl #0xa + orr r3, r2, r3, lsl #0x14 + ldr r2, [r0, #0x4] + orr r1, r3, r1, lsl #0x1e + str r1, [r2, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C7694: .word 0x000003FF + + arm_func_start G3B_MaterialColorSpecEmi +G3B_MaterialColorSpecEmi: ; 0x020C7698 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r0, #0x0] + mov lr, #0x31 + cmp r3, #0x0 + movne r3, #0x1 + str lr, [r12, #0x0] + orr r2, r1, r2, lsl #0x10 + moveq r3, #0x0 + ldr r1, [r0, #0x4] + orr r2, r2, r3, lsl #0xf + str r2, [r1, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start G3B_MaterialColorDiffAmb +G3B_MaterialColorDiffAmb: ; 0x020C76EC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r0, #0x0] + mov lr, #0x30 + cmp r3, #0x0 + movne r3, #0x1 + str lr, [r12, #0x0] + orr r2, r1, r2, lsl #0x10 + moveq r3, #0x0 + ldr r1, [r0, #0x4] + orr r2, r2, r3, lsl #0xf + str r2, [r1, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start G3B_PolygonAttr +G3B_PolygonAttr: ; 0x020C7740 + orr r1, r1, r2, lsl #0x4 + ldr r2, [r0, #0x0] + mov r12, #0x29 + str r12, [r2, #0x0] + ldr r2, [sp, #0x8] + orr r1, r1, r3, lsl #0x6 + ldr r3, [sp, #0x0] + orr r1, r2, r1 + ldr r12, [sp, #0x4] + orr r2, r1, r3, lsl #0x18 + ldr r1, [r0, #0x4] + orr r2, r2, r12, lsl #0x10 + str r2, [r1, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3B_Vtx +G3B_Vtx: ; 0x020C7790 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r0, #0x0] + mov lr, #0x23 + str lr, [r12, #0x0] + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x10 + mov lr, r1, lsr #0x10 + mov r12, r2, lsr #0x10 + mov r1, r3, lsl #0x10 + ldr r2, [r0, #0x4] + orr r3, lr, r12, lsl #0x10 + str r3, [r2, #0x0] + ldr r2, [r0, #0x4] + mov r1, r1, lsr #0x10 + str r1, [r2, #0x4] + ldr r1, [r0, #0x4] + add r1, r1, #0x8 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start G3B_Normal +G3B_Normal: ; 0x020C77F4 + stmdb sp!, {r4,lr} + ldr ip, _020C7844 ; =0x000003FF + ldr lr, [r0, #0x0] + mov r4, #0x21 + str r4, [lr, #0x0] + and lr, r12, r1, asr #0x3 + and r1, r12, r2, asr #0x3 + and r3, r12, r3, asr #0x3 + orr r2, lr, r1, lsl #0xa + ldr r1, [r0, #0x4] + orr r2, r2, r3, lsl #0x14 + str r2, [r1, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C7844: .word 0x000003FF + + arm_func_start G3B_Color +G3B_Color: ; 0x020C7848 + ldr r2, [r0, #0x0] + mov r3, #0x20 + str r3, [r2, #0x0] + ldr r2, [r0, #0x4] + str r1, [r2, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3B_LoadMtx44 +G3B_LoadMtx44: ; 0x020C7878 + stmdb sp!, {r4,lr} + mov r4, r0 + bl G3BS_LoadMtx44 + ldr r0, [r4, #0x4] + add r0, r0, #0x40 + str r0, [r4, #0x0] + ldr r0, [r4, #0x0] + add r0, r0, #0x4 + str r0, [r4, #0x4] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start G3B_PopMtx +G3B_PopMtx: ; 0x020C78A4 + ldr r2, [r0, #0x0] + mov r3, #0x12 + str r3, [r2, #0x0] + ldr r2, [r0, #0x4] + str r1, [r2, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x4 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3B_PushMtx +G3B_PushMtx: ; 0x020C78D4 + ldr r1, [r0, #0x0] + mov r2, #0x11 + str r2, [r1, #0x0] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + bx lr + + arm_func_start G3BS_LoadMtx44 +G3BS_LoadMtx44: ; 0x020C78F8 + mov r3, r0 + ldr r0, [r3, #0x0] + mov r2, #0x16 + str r2, [r0, #0x0] + mov r0, r1 + ldr ip, _020C7918 ; =MI_Copy64B + ldr r1, [r3, #0x4] + bx r12 + .balign 4 +_020C7918: .word MI_Copy64B + + arm_func_start G3_MultMtx33 +G3_MultMtx33: ; 0x020C791C + ldr r1, _020C7930 ; =0x04000400 + mov r2, #0x1a + ldr ip, _020C7934 ; =MI_Copy36B + str r2, [r1, #0x0] + bx r12 + .balign 4 +_020C7930: .word 0x04000400 +_020C7934: .word MI_Copy36B + + arm_func_start G3_MultMtx43 +G3_MultMtx43: + ldr r1, _020C794C ; =0x04000400 + mov r2, #0x19 + ldr ip, _020C7950 ; =GX_SendFifo48B + str r2, [r1, #0x0] + bx r12 + .balign 4 +_020C794C: .word 0x04000400 +_020C7950: .word GX_SendFifo48B + + arm_func_start G3_LoadMtx43 +G3_LoadMtx43: ; 0x020C7954 + ldr r1, _020C7968 ; =0x04000400 + mov r2, #0x17 + ldr ip, _020C796C ; =GX_SendFifo48B + str r2, [r1, #0x0] + bx r12 + .balign 4 +_020C7968: .word 0x04000400 +_020C796C: .word GX_SendFifo48B + + arm_func_start GXi_NopClearFifo128_ +GXi_NopClearFifo128_: ; 0x020C7970 + mov r1, #0x0 + mov r2, #0x0 + mov r3, #0x0 + mov r12, #0x0 + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + stmia r0, {r1-r3,r12} + bx lr + + arm_func_start G3X_SetHOffset +G3X_SetHOffset: ; 0x020C7A04 + ldr r1, _020C7A10 ; =0x04000010 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C7A10: .word 0x04000010 + + arm_func_start G3X_GetBoxTestResult +G3X_GetBoxTestResult: ; 0x020C7A14 + ldr r2, _020C7A38 ; =0x04000600 + ldr r1, [r2, #0x0] + ands r1, r1, #0x1 + ldreq r1, [r2, #0x0] + mvnne r0, #0x0 + andeq r1, r1, #0x2 + streq r1, [r0, #0x0] + moveq r0, #0x0 + bx lr + .balign 4 +_020C7A38: .word 0x04000600 + + arm_func_start G3X_GetMtxStackLevelPJ +G3X_GetMtxStackLevelPJ: + ldr r2, _020C7A64 ; =0x04000600 + ldr r1, [r2, #0x0] + ands r1, r1, #0x4000 + ldreq r1, [r2, #0x0] + mvnne r0, #0x0 + andeq r1, r1, #0x2000 + moveq r1, r1, lsr #0xd + streq r1, [r0, #0x0] + moveq r0, #0x0 + bx lr + .balign 4 +_020C7A64: .word 0x04000600 + + arm_func_start G3X_GetMtxStackLevelPV +G3X_GetMtxStackLevelPV: + ldr r2, _020C7A90 ; =0x04000600 + ldr r1, [r2, #0x0] + ands r1, r1, #0x4000 + ldreq r1, [r2, #0x0] + mvnne r0, #0x0 + andeq r1, r1, #0x1f00 + moveq r1, r1, lsr #0x8 + streq r1, [r0, #0x0] + moveq r0, #0x0 + bx lr + .balign 4 +_020C7A90: .word 0x04000600 + + arm_func_start G3X_InitTable +G3X_InitTable: ; 0x020C7A94 + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r0, _020C7B2C ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C7AE4 + mov r2, #0x0 + str r2, [sp, #0x0] + ldr r1, _020C7B30 ; =0x04000330 + mov r3, #0x10 + str r2, [sp, #0x4] + bl MI_DmaFill32Async + ldr r0, _020C7B2C ; =0x02106814 + ldr r1, _020C7B34 ; =0x04000360 + ldr r0, [r0, #0x0] + mov r2, #0x0 + mov r3, #0x60 + bl MI_DmaFill32 + b _020C7B04 +_020C7AE4: + ldr r1, _020C7B30 ; =0x04000330 + mov r0, #0x0 + mov r2, #0x10 + bl MIi_CpuClear32 + ldr r1, _020C7B34 ; =0x04000360 + mov r0, #0x0 + mov r2, #0x60 + bl MIi_CpuClear32 +_020C7B04: + mov r2, #0x0 + ldr r0, _020C7B38 ; =0x040004D0 + mov r1, r2 +_020C7B10: + add r2, r2, #0x1 + str r1, [r0, #0x0] + cmp r2, #0x20 + blt _020C7B10 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .balign 4 +_020C7B2C: .word 0x02106814 +_020C7B30: .word 0x04000330 +_020C7B34: .word 0x04000360 +_020C7B38: .word 0x040004D0 + + arm_func_start G3X_SetClearColor +G3X_SetClearColor: ; 0x020C7B3C + orr r0, r0, r1, lsl #0x10 + ldr r12, [sp, #0x0] + orr r3, r0, r3, lsl #0x18 + cmp r12, #0x0 + ldr r1, _020C7B64 ; =0x04000350 + orrne r3, r3, #0x8000 + ldr r0, _020C7B68 ; =0x04000354 + str r3, [r1, #0x0] + strh r2, [r0, #0x0] + bx lr + .balign 4 +_020C7B64: .word 0x04000350 +_020C7B68: .word 0x04000354 + + arm_func_start G3X_SetFogTable +G3X_SetFogTable: ; 0x020C7B6C + ldr ip, _020C7B78 ; =0x020CE2C4 + ldr r1, _020C7B7C ; =0x04000360 + bx r12 + .balign 4 +_020C7B78: .word 0x020CE2C4 +_020C7B7C: .word 0x04000360 + + arm_func_start G3X_SetEdgeColorTable +G3X_SetEdgeColorTable: ; 0x020C7B80 + ldr ip, _020C7B90 ; =MIi_CpuCopy16 + ldr r1, _020C7B94 ; =0x04000330 + mov r2, #0x10 + bx r12 + .balign 4 +_020C7B90: .word MIi_CpuCopy16 +_020C7B94: .word 0x04000330 + + arm_func_start G3X_GetVectorMtx +G3X_GetVectorMtx: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020C7BD8 ; =0x04000600 + mov r1, r0 + ldr r0, [r2, #0x0] + ands r0, r0, #0x8000000 + addne sp, sp, #0x4 + mvnne r0, #0x0 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020C7BDC ; =0x04000680 + bl MI_Copy36B +_020C7BC8: ; 0x020C7BC8 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C7BD8: .word 0x04000600 +_020C7BDC: .word 0x04000680 + + arm_func_start G3X_GetClipMtx +G3X_GetClipMtx: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020C7C20 ; =0x04000600 + mov r1, r0 + ldr r0, [r2, #0x0] + ands r0, r0, #0x8000000 + addne sp, sp, #0x4 + mvnne r0, #0x0 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020C7C24 ; =0x04000640 + bl MI_Copy64B +_020C7C10: ; 0x020C7C10 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C7C20: .word 0x04000600 +_020C7C24: .word 0x04000640 + + arm_func_start G3X_SetFog +G3X_SetFog: ; 0x020C7C28 + cmp r0, #0x0 + ldreq r2, _020C7C70 ; =0x04000060 + ldreq r0, _020C7C74 ; =0x0000CF7F + ldreqh r1, [r2, #0x0] + andeq r0, r1, r0 + streqh r0, [r2, #0x0] + bxeq lr + ldr r0, _020C7C78 ; =0x0400035C + ldr ip, _020C7C70 ; =0x04000060 + strh r3, [r0, #0x0] + mov r0, r2, lsl #0x8 + orr r0, r0, r1, lsl #0x6 + ldrh r3, [r12, #0x0] + orr r0, r0, #0x80 + bic r1, r3, #0x3f40 + orr r0, r1, r0 + strh r0, [r12, #0x0] + bx lr + .balign 4 +_020C7C70: .word 0x04000060 +_020C7C74: .word 0x0000CF7F +_020C7C78: .word 0x0400035C + + arm_func_start G3X_ResetMtxStack_2 +G3X_ResetMtxStack_2: ; 0x020C7C7C + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldr r1, _020C7D18 ; =0x04000600 + ldr r0, [r1, #0x0] + orr r0, r0, #0x8000 + str r0, [r1, #0x0] + add r4, sp, #0x0 +_020C7C98: + mov r0, r4 + bl G3X_GetMtxStackLevelPV +_020C7CA0: ; 0x020C7CA0 + cmp r0, #0x0 + bne _020C7C98 + add r4, sp, #0x4 +_020C7CAC: + mov r0, r4 + bl G3X_GetMtxStackLevelPJ +_020C7CB4: ; 0x020C7CB4 + cmp r0, #0x0 + bne _020C7CAC + ldr r2, _020C7D1C ; =0x04000440 + mov r1, #0x3 + str r1, [r2, #0x0] + ldr r0, _020C7D20 ; =0x04000454 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + ldr r1, [sp, #0x4] + cmp r1, #0x0 + ldrne r0, _020C7D24 ; =0x04000448 + strne r1, [r0, #0x0] + ldr r0, _020C7D1C ; =0x04000440 + mov r1, #0x2 + str r1, [r0, #0x0] + ldr r2, [sp, #0x0] + ldr r1, _020C7D24 ; =0x04000448 + ldr r0, _020C7D20 ; =0x04000454 + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C7D18: .word 0x04000600 +_020C7D1C: .word 0x04000440 +_020C7D20: .word 0x04000454 +_020C7D24: .word 0x04000448 + + arm_func_start G3X_InitMtxStack +G3X_InitMtxStack: ; 0x020C7D28 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldr r1, _020C7DC8 ; =0x04000600 + ldr r0, [r1, #0x0] + orr r0, r0, #0x8000 + str r0, [r1, #0x0] + add r4, sp, #0x0 +_020C7D44: + mov r0, r4 + bl G3X_GetMtxStackLevelPV +_020C7D4C: ; 0x020C7D4C + cmp r0, #0x0 + bne _020C7D44 + add r4, sp, #0x4 +_020C7D58: + mov r0, r4 + bl G3X_GetMtxStackLevelPJ +_020C7D60: ; 0x020C7D60 + cmp r0, #0x0 + bne _020C7D58 + ldr r2, _020C7DCC ; =0x04000440 + mov r1, #0x3 + str r1, [r2, #0x0] + ldr r0, _020C7DD0 ; =0x04000454 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + ldr r1, [sp, #0x4] + ldr r2, _020C7DD0 ; =0x04000454 + cmp r1, #0x0 + ldrne r0, _020C7DD4 ; =0x04000448 + mov r3, #0x0 + strne r1, [r0, #0x0] + ldr r0, _020C7DCC ; =0x04000440 + str r3, [r2, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + ldr r1, [sp, #0x0] + ldr r0, _020C7DD4 ; =0x04000448 + str r1, [r0, #0x0] + str r3, [r2, #0x0] + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C7DC8: .word 0x04000600 +_020C7DCC: .word 0x04000440 +_020C7DD0: .word 0x04000454 +_020C7DD4: .word 0x04000448 + + arm_func_start G3X_ClearFifo +G3X_ClearFifo: ; 0x020C7DD8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C7E04 ; =0x04000400 + bl GXi_NopClearFifo128_ + ldr r1, _020C7E08 ; =0x04000600 +_020C7DEC: + ldr r0, [r1, #0x0] + ands r0, r0, #0x8000000 + bne _020C7DEC + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C7E04: .word 0x04000400 +_020C7E08: .word 0x04000600 + + arm_func_start G3X_ResetMtxStack +G3X_ResetMtxStack: ; 0x020C7E0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020C7E7C ; =0x04000600 +_020C7E18: + ldr r0, [r2, #0x0] + ands r0, r0, #0x8000000 + bne _020C7E18 + ldr r0, [r2, #0x0] + ldr r1, _020C7E80 ; =0x04000060 + orr r0, r0, #0x8000 + str r0, [r2, #0x0] + ldrh r0, [r1, #0x0] + orr r0, r0, #0x2000 + strh r0, [r1, #0x0] + ldrh r0, [r1, #0x0] + orr r0, r0, #0x1000 + strh r0, [r1, #0x0] + bl G3X_ResetMtxStack_2 + ldr r2, _020C7E84 ; =0x001F0080 + ldr r0, _020C7E88 ; =0x040004A4 + ldr r1, _020C7E8C ; =0x040004A8 + str r2, [r0, #0x0] + mov r2, #0x0 + ldr r0, _020C7E90 ; =0x040004AC + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C7E7C: .word 0x04000600 +_020C7E80: .word 0x04000060 +_020C7E84: .word 0x001F0080 +_020C7E88: .word 0x040004A4 +_020C7E8C: .word 0x040004A8 +_020C7E90: .word 0x040004AC + + arm_func_start G3X_Init +G3X_Init: ; 0x020C7E94 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl G3X_ClearFifo + ldr r0, _020C7FAC ; =0x04000504 + mov r1, #0x0 + str r1, [r0, #0x0] + ldr r1, _020C7FB0 ; =0x04000600 +_020C7EB0: + ldr r0, [r1, #0x0] + ands r0, r0, #0x8000000 + bne _020C7EB0 + ldr r0, _020C7FB4 ; =0x04000060 + mov r3, #0x0 + strh r3, [r0, #0x0] + ldr r2, _020C7FB8 ; =0x04000010 + str r3, [r1, #0x0] + str r3, [r2, #0x0] + ldrh r12, [r0, #0x0] + ldr r2, _020C7FBC ; =0xFFFFCFFD + ldr r3, _020C7FC0 ; =0x0000CFFB + orr r12, r12, #0x2000 + strh r12, [r0, #0x0] + ldrh r12, [r0, #0x0] + orr r12, r12, #0x1000 + strh r12, [r0, #0x0] + ldrh r12, [r0, #0x0] + and r2, r12, r2 + strh r2, [r0, #0x0] + ldrh r2, [r0, #0x0] + bic r2, r2, #0x3000 + orr r2, r2, #0x10 + strh r2, [r0, #0x0] + ldrh r2, [r0, #0x0] + and r2, r2, r3 + strh r2, [r0, #0x0] + ldr r0, [r1, #0x0] + orr r0, r0, #0x8000 + str r0, [r1, #0x0] + ldr r0, [r1, #0x0] + bic r0, r0, #0xc0000000 + orr r0, r0, #0x80000000 + str r0, [r1, #0x0] + bl G3X_InitMtxStack + ldr r0, _020C7FC4 ; =0x04000350 + mov r3, #0x0 + ldr r2, _020C7FC8 ; =0x00007FFF + ldr r1, _020C7FCC ; =0x04000354 + str r3, [r0, #0x0] + ldr r0, _020C7FD0 ; =0x04000356 + strh r2, [r1, #0x0] + ldr r1, _020C7FD4 ; =0x04000358 + strh r3, [r0, #0x0] + ldr r0, _020C7FD8 ; =0x0400035C + str r3, [r1, #0x0] + ldr r1, _020C7FDC ; =0x04000008 + strh r3, [r0, #0x0] + ldrh r0, [r1, #0x0] + bic r0, r0, #0x3 + strh r0, [r1, #0x0] + bl G3X_InitTable + ldr r2, _020C7FE0 ; =0x001F0080 + ldr r0, _020C7FE4 ; =0x040004A4 + ldr r1, _020C7FE8 ; =0x040004A8 + str r2, [r0, #0x0] + mov r2, #0x0 + ldr r0, _020C7FEC ; =0x040004AC + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C7FAC: .word 0x04000504 +_020C7FB0: .word 0x04000600 +_020C7FB4: .word 0x04000060 +_020C7FB8: .word 0x04000010 +_020C7FBC: .word 0xFFFFCFFD +_020C7FC0: .word 0x0000CFFB +_020C7FC4: .word 0x04000350 +_020C7FC8: .word 0x00007FFF +_020C7FCC: .word 0x04000354 +_020C7FD0: .word 0x04000356 +_020C7FD4: .word 0x04000358 +_020C7FD8: .word 0x0400035C +_020C7FDC: .word 0x04000008 +_020C7FE0: .word 0x001F0080 +_020C7FE4: .word 0x040004A4 +_020C7FE8: .word 0x040004A8 +_020C7FEC: .word 0x040004AC + + arm_func_start G3_RotZ +G3_RotZ: ; 0x020C7FF0 + ldr r3, _020C8028 ; =0x04000468 + mov r2, #0x0 + str r1, [r3, #0x0] + str r0, [r3, #0x0] + str r2, [r3, #0x0] + rsb r0, r0, #0x0 + str r0, [r3, #0x0] + str r1, [r3, #0x0] + str r2, [r3, #0x0] + str r2, [r3, #0x0] + str r2, [r3, #0x0] + mov r0, #0x1000 + str r0, [r3, #0x0] + bx lr + .balign 4 +_020C8028: .word 0x04000468 + + arm_func_start G3_RotY +G3_RotY: ; 0x020C802C + ldr ip, _020C8064 ; =0x04000468 + mov r3, #0x0 + str r1, [r12, #0x0] + str r3, [r12, #0x0] + rsb r2, r0, #0x0 + str r2, [r12, #0x0] + str r3, [r12, #0x0] + mov r2, #0x1000 + str r2, [r12, #0x0] + str r3, [r12, #0x0] + str r0, [r12, #0x0] + str r3, [r12, #0x0] + str r1, [r12, #0x0] + bx lr + .balign 4 +_020C8064: .word 0x04000468 + + arm_func_start G3_RotX +G3_RotX: ; 0x020C8068 + ldr r3, _020C80A0 ; =0x04000468 + mov r2, #0x1000 + str r2, [r3, #0x0] + mov r2, #0x0 + str r2, [r3, #0x0] + str r2, [r3, #0x0] + str r2, [r3, #0x0] + str r1, [r3, #0x0] + str r0, [r3, #0x0] + str r2, [r3, #0x0] + rsb r0, r0, #0x0 + str r0, [r3, #0x0] + str r1, [r3, #0x0] + bx lr + .balign 4 +_020C80A0: .word 0x04000468 + + arm_func_start G3i_LookAt_ +G3i_LookAt_: ; 0x020C80A4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x24 + mov r9, r0 + ldr r6, [r9, #0x0] + ldr r5, [r2, #0x0] + add r0, sp, #0x0 + sub r5, r6, r5 + str r5, [sp, #0x0] + ldr r7, [r9, #0x4] + ldr r6, [r2, #0x4] + mov r5, r1 + sub r1, r7, r6 + str r1, [sp, #0x4] + ldr r6, [r9, #0x8] + ldr r2, [r2, #0x8] + mov r1, r0 + sub r2, r6, r2 + mov r8, r3 + str r2, [sp, #0x8] + ldr r7, [sp, #0x40] + bl VEC_Normalize + add r1, sp, #0x0 + add r2, sp, #0xc + mov r0, r5 + bl VEC_CrossProduct + add r0, sp, #0xc + mov r1, r0 + bl VEC_Normalize +_020C8114: ; 0x020C8114 + add r0, sp, #0x0 + add r1, sp, #0xc + add r2, sp, #0x18 + bl VEC_CrossProduct +_020C8124: ; 0x020C8124 + cmp r8, #0x0 + beq _020C8184 + ldr r0, _020C8234 ; =0x04000440 + mov r1, #0x2 + str r1, [r0, #0x0] + ldr r0, [sp, #0xc] + ldr r4, _020C8238 ; =0x0400045C + str r0, [r4, #0x0] + ldr r0, [sp, #0x18] + str r0, [r4, #0x0] + ldr r0, [sp, #0x0] + str r0, [r4, #0x0] + ldr r0, [sp, #0x10] + str r0, [r4, #0x0] + ldr r0, [sp, #0x1c] + str r0, [r4, #0x0] + ldr r0, [sp, #0x4] + str r0, [r4, #0x0] + ldr r0, [sp, #0x14] + str r0, [r4, #0x0] + ldr r0, [sp, #0x20] + str r0, [r4, #0x0] + ldr r0, [sp, #0x8] + str r0, [r4, #0x0] +_020C8184: + add r1, sp, #0xc + mov r0, r9 + bl VEC_DotProduct + rsb r6, r0, #0x0 + add r1, sp, #0x18 + mov r0, r9 + bl VEC_DotProduct + rsb r5, r0, #0x0 + add r1, sp, #0x0 + mov r0, r9 + bl VEC_DotProduct +_020C81B0: ; 0x020C81B0 + cmp r8, #0x0 + strne r6, [r4, #0x0] + rsb r0, r0, #0x0 + strne r5, [r4, #0x0] + strne r0, [r4, #0x0] + cmp r7, #0x0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r1, [sp, #0xc] + str r1, [r7, #0x0] + ldr r1, [sp, #0x18] + str r1, [r7, #0x4] + ldr r1, [sp, #0x0] + str r1, [r7, #0x8] + ldr r1, [sp, #0x10] + str r1, [r7, #0xc] + ldr r1, [sp, #0x1c] + str r1, [r7, #0x10] + ldr r1, [sp, #0x4] + str r1, [r7, #0x14] + ldr r1, [sp, #0x14] + str r1, [r7, #0x18] + ldr r1, [sp, #0x20] + str r1, [r7, #0x1c] + ldr r1, [sp, #0x8] + str r1, [r7, #0x20] + str r6, [r7, #0x24] + str r5, [r7, #0x28] + str r0, [r7, #0x2c] + add sp, sp, #0x24 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020C8234: .word 0x04000440 +_020C8238: .word 0x0400045C + + arm_func_start G3i_OrthoW_ +G3i_OrthoW_: ; 0x020C823C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + str r2, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + mov r2, r3 + ldr r7, [sp, #0x64] + sub r0, r2, r0 + str r3, [sp, #0xc] + str r1, [sp, #0x4] + ldr r8, [sp, #0x60] + ldr r6, [sp, #0x68] + bl FX_InvAsync +_020C8270: ; 0x020C8270 + cmp r7, #0x0 + ldrne r0, _020C8528 ; =0x04000440 + movne r1, #0x0 + ldrne r4, _020C852C ; =0x04000458 + strne r1, [r0, #0x0] + cmp r6, #0x0 + beq _020C82B8 + mov r0, #0x0 + str r0, [r6, #0x4] + str r0, [r6, #0x8] + str r0, [r6, #0xc] + str r0, [r6, #0x10] + str r0, [r6, #0x18] + str r0, [r6, #0x1c] + str r0, [r6, #0x20] + str r0, [r6, #0x24] + str r0, [r6, #0x2c] + str r8, [r6, #0x3c] +_020C82B8: + bl FX_GetDivResultFx64c + mov r5, r0 + str r1, [sp, #0x14] + ldr sb, _020C8530 ; =0x04000290 + mov r3, #0x0 + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + str r3, [r9, #0x0] + mov r2, #0x1000 + sub r1, r1, r0 + ldr r0, _020C8534 ; =0x04000298 + str r2, [r9, #0x4] + str r1, [r0, #0x0] + cmp r8, #0x1000 + str r3, [r0, #0x4] + beq _020C8318 + mov r9, r8, asr #0x1f + umull r0, r1, r5, r8 + mla r1, r5, r9, r1 + ldr r5, [sp, #0x14] + mla r1, r5, r8, r1 + bl _ll_sdiv + mov r5, r0 + str r1, [sp, #0x14] +_020C8318: + ldr r0, [sp, #0x14] + mov r2, r5, lsl #0xd + mov r1, r0, lsl #0xd + mov r0, #0x80000000 + adds r0, r2, r0 + orr r1, r1, r5, lsr #0x13 + adc r1, r1, #0x0 + cmp r7, #0x0 + mov r0, #0x0 + strne r1, [r4, #0x0] + strne r0, [r4, #0x0] + strne r0, [r4, #0x0] + strne r0, [r4, #0x0] + strne r0, [r4, #0x0] + cmp r6, #0x0 + strne r1, [r6, #0x0] + bl FX_GetDivResultFx64c + mov r11, r0 + str r1, [sp, #0x2c] + ldr r0, _020C8530 ; =0x04000290 + mov r3, #0x0 + mov r2, #0x1000 + str r3, [r0, #0x0] + str r2, [r0, #0x4] + ldr r9, [sp, #0x58] + ldr r1, [sp, #0x5c] + ldr r0, _020C8534 ; =0x04000298 + sub r1, r9, r1 + str r1, [r0, #0x0] + cmp r8, #0x1000 + str r3, [r0, #0x4] + beq _020C83B8 + mov r9, r8, asr #0x1f + umull r0, r1, r11, r8 + mla r1, r11, r9, r1 + ldr r9, [sp, #0x2c] + mla r1, r9, r8, r1 + bl _ll_sdiv + mov r11, r0 + str r1, [sp, #0x2c] +_020C83B8: + ldr r0, [sp, #0x2c] + mov r3, r11, lsl #0xd + mov r2, r0, lsl #0xd + mov r0, #0x80000000 + orr r2, r2, r11, lsr #0x13 + adds r0, r3, r0 + adc r0, r2, #0x0 + cmp r7, #0x0 + mov r1, #0x0 + strne r0, [r4, #0x0] + strne r1, [r4, #0x0] + strne r1, [r4, #0x0] + strne r1, [r4, #0x0] + strne r1, [r4, #0x0] + cmp r6, #0x0 + strne r0, [r6, #0x14] + bl FX_GetDivResultFx64c + cmp r8, #0x1000 + beq _020C8428 + mov r9, r8, asr #0x1f + mov r2, #0x1000 + mov r3, #0x0 + umull r12, r10, r0, r8 + mla r10, r0, r9, r10 + mov r0, r12 + mla r10, r1, r8, r10 + mov r1, r10 + bl _ll_sdiv +_020C8428: + mov r9, r1, lsl #0xd + mov r10, r0, lsl #0xd + mov r2, #0x80000000 + orr r9, r9, r0, lsr #0x13 + adds r2, r10, r2 + adc r2, r9, #0x0 + cmp r7, #0x0 + mov r3, #0x0 + strne r2, [r4, #0x0] + strne r3, [r4, #0x0] + cmp r6, #0x0 + strne r2, [r6, #0x28] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x8] + add r9, r3, r2 + rsb lr, r9, #0x0 + ldr r3, [sp, #0x0] + ldr r2, [sp, #0x4] + ldr r9, [sp, #0x5c] + add r2, r3, r2 + ldr r3, [sp, #0x58] + rsb r12, r2, #0x0 + add r3, r9, r3 + mov r9, r12, asr #0x1f + str r9, [sp, #0x20] + mov r9, r3, asr #0x1f + str r9, [sp, #0x24] + umull r10, r9, r5, lr + mov r2, lr, asr #0x1f + str r2, [sp, #0x1c] + str r10, [sp, #0x18] + ldr r10, [sp, #0x1c] + mov r2, #0x80000000 + mla r9, r5, r10, r9 + ldr r5, [sp, #0x14] + mla r9, r5, lr, r9 + ldr r5, [sp, #0x18] + adds r5, r5, r2 + adc r10, r9, #0x0 + ldr r5, [sp, #0x20] + umull lr, r9, r11, r12 + mla r9, r11, r5, r9 + ldr r5, [sp, #0x2c] + mla r9, r5, r12, r9 + adds r5, lr, r2 + adc r5, r9, #0x0 + umull r11, r9, r0, r3 + adds r2, r11, r2 + ldr r2, [sp, #0x24] + mla r9, r0, r2, r9 + mla r9, r1, r3, r9 + adc r0, r9, #0x0 + cmp r7, #0x0 + strne r10, [r4, #0x0] + strne r5, [r4, #0x0] + strne r0, [r4, #0x0] + strne r8, [r4, #0x0] + cmp r6, #0x0 + strne r10, [r6, #0x30] + strne r5, [r6, #0x34] + strne r0, [r6, #0x38] + add sp, sp, #0x34 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020C8528: .word 0x04000440 +_020C852C: .word 0x04000458 +_020C8530: .word 0x04000290 +_020C8534: .word 0x04000298 + + arm_func_start G3i_PerspectiveW_ +G3i_PerspectiveW_: ; 0x020C8538 + stmdb sp!, {r4-r10,lr} + mov r5, r0 + mov r0, r1 + mov r1, r5 + ldr r6, [sp, #0x24] + mov r9, r2 + mov r8, r3 + ldr r5, [sp, #0x2c] + bl FX_Div + mov r7, r0 + cmp r6, #0x1000 + mulne r1, r7, r6 + movne r0, r1, asr #0xb + addne r0, r1, r0, lsr #0x14 + movne r7, r0, asr #0xc + ldr r0, [sp, #0x28] + ldr r2, _020C8718 ; =0x04000290 + cmp r0, #0x0 + mov r3, #0x0 + str r3, [r2, #0x0] + ldr r1, _020C871C ; =0x04000298 + str r7, [r2, #0x4] + str r9, [r1, #0x0] + ldrne r0, _020C8720 ; =0x04000440 + str r3, [r1, #0x4] + ldrne r4, _020C8724 ; =0x04000458 + strne r3, [r0, #0x0] + cmp r5, #0x0 + beq _020C85E4 + mov r1, #0x0 + str r1, [r5, #0x4] + str r1, [r5, #0x8] + str r1, [r5, #0xc] + str r1, [r5, #0x10] + str r1, [r5, #0x18] + str r1, [r5, #0x1c] + str r1, [r5, #0x20] + str r1, [r5, #0x24] + rsb r0, r6, #0x0 + str r0, [r5, #0x2c] + str r1, [r5, #0x30] + str r1, [r5, #0x34] + str r1, [r5, #0x3c] +_020C85E4: + bl FX_GetDivResult + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x28] + ldr sb, _020C8718 ; =0x04000290 + mov r12, #0x0 + str r12, [r9, #0x0] + mov r10, #0x1000 + ldr r2, _020C871C ; =0x04000298 + str r10, [r9, #0x4] + sub r3, r8, r3 + str r3, [r2, #0x0] + str r12, [r2, #0x4] + cmp r1, #0x0 + beq _020C8644 + str r0, [r4, #0x0] + str r12, [r4, #0x0] + str r12, [r4, #0x0] + str r12, [r4, #0x0] + str r12, [r4, #0x0] + str r7, [r4, #0x0] + str r12, [r4, #0x0] + str r12, [r4, #0x0] + str r12, [r4, #0x0] + str r12, [r4, #0x0] +_020C8644: + cmp r5, #0x0 + strne r0, [r5, #0x0] + strne r7, [r5, #0x14] + bl FX_GetDivResultFx64c + cmp r6, #0x1000 + beq _020C8680 + mov r2, r6, asr #0x1f + umull r7, r3, r0, r6 + mla r3, r0, r2, r3 + mla r3, r1, r6, r3 + mov r0, r7 + mov r1, r3 + mov r2, #0x1000 + mov r3, #0x0 + bl _ll_sdiv +_020C8680: + ldr r3, [sp, #0x20] + mov r10, r8, lsl #0x1 + add r12, r3, r8 + mov r2, r12, asr #0x1f + umull r7, lr, r0, r12 + mla lr, r0, r2, lr + mov r9, #0x80000000 + smull r3, r2, r10, r3 + mla lr, r1, r12, lr + adds r7, r7, r9 + mov r8, #0x800 + adc r7, lr, #0x0 + adds r3, r3, r8 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + umull r10, r8, r0, r3 + mov r2, r3, asr #0x1f + adds r9, r10, r9 + mla r8, r0, r2, r8 + mla r8, r1, r3, r8 + ldr r0, [sp, #0x28] + adc r2, r8, #0x0 + cmp r0, #0x0 + mov r0, #0x0 + beq _020C8704 + str r7, [r4, #0x0] + rsb r1, r6, #0x0 + str r1, [r4, #0x0] + str r0, [r4, #0x0] + str r0, [r4, #0x0] + str r2, [r4, #0x0] + str r0, [r4, #0x0] +_020C8704: + cmp r5, #0x0 + strne r7, [r5, #0x28] + strne r2, [r5, #0x38] + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_020C8718: .word 0x04000290 +_020C871C: .word 0x04000298 +_020C8720: .word 0x04000440 +_020C8724: .word 0x04000458 + + arm_func_start GXS_EndLoadOBJExtPltt +GXS_EndLoadOBJExtPltt: ; 0x020C8728 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C876C ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C8748 + bl MI_WaitDma +_020C8748: + ldr r0, _020C8770 ; =0x021D33F8 + ldr r0, [r0, #0x0] + bl GX_SetBankForSubOBJExtPltt + ldr r0, _020C8770 ; =0x021D33F8 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C876C: .word 0x02106814 +_020C8770: .word 0x021D33F8 + + arm_func_start GXS_LoadOBJExtPltt +GXS_LoadOBJExtPltt: ; 0x020C8774 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + ldr r3, _020C87E0 ; =0x02106814 + mvn r12, #0x0 + ldr lr, [r3, #0x0] + mov r5, r0 + mov r4, r1 + mov r3, r2 + cmp lr, r12 + beq _020C87C8 + ldr r2, _020C87E4 ; =0x068A0000 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r1, r5 + add r2, r4, r2 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr +_020C87C8: + ldr r1, _020C87E4 ; =0x068A0000 + add r1, r4, r1 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C87E0: .word 0x02106814 +_020C87E4: .word 0x068A0000 + + arm_func_start GXS_BeginLoadOBJExtPltt +GXS_BeginLoadOBJExtPltt: ; 0x020C87E8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl GX_ResetBankForSubOBJ + ldr r1, _020C8808 ; =0x021D33F8 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C8808: .word 0x021D33F8 + + arm_func_start GXS_EndLoadBGExtPltt +GXS_EndLoadBGExtPltt: ; 0x020C880C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C8850 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C882C + bl MI_WaitDma +_020C882C: + ldr r0, _020C8854 ; =0x021D33E0 + ldr r0, [r0, #0x0] + bl GX_SetBankForSubBGExtPltt + ldr r0, _020C8854 ; =0x021D33E0 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C8850: .word 0x02106814 +_020C8854: .word 0x021D33E0 + + arm_func_start GXS_LoadBGExtPltt +GXS_LoadBGExtPltt: ; 0x020C8858 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + ldr r3, _020C88C4 ; =0x02106814 + mvn r12, #0x0 + ldr lr, [r3, #0x0] + mov r5, r0 + mov r4, r1 + mov r3, r2 + cmp lr, r12 + beq _020C88AC + ldr r2, _020C88C8 ; =0x06898000 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r1, r5 + add r2, r4, r2 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr +_020C88AC: + ldr r1, _020C88C8 ; =0x06898000 + add r1, r4, r1 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C88C4: .word 0x02106814 +_020C88C8: .word 0x06898000 + + arm_func_start GXS_BeginLoadBGExtPltt +GXS_BeginLoadBGExtPltt: ; 0x020C88CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C6034 + ldr r1, _020C88EC ; =0x021D33E0 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C88EC: .word 0x021D33E0 + + arm_func_start GX_EndLoadOBJExtPltt +GX_EndLoadOBJExtPltt: ; 0x020C88F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C893C ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C8910 + bl MI_WaitDma +_020C8910: + ldr r0, _020C8940 ; =0x021D33E8 + ldr r0, [r0, #0x0] + bl GX_SetBankForOBJExtPltt + ldr r1, _020C8940 ; =0x021D33E8 + mov r2, #0x0 + ldr r0, _020C8944 ; =0x021D33E4 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C893C: .word 0x02106814 +_020C8940: .word 0x021D33E8 +_020C8944: .word 0x021D33E4 + + arm_func_start GX_LoadOBJExtPltt +GX_LoadOBJExtPltt: ; 0x020C8948 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + ldr ip, _020C89B4 ; =0x021D33E4 + ldr r3, _020C89B8 ; =0x02106814 + ldr r4, [r12, #0x0] + ldr lr, [r3, #0x0] + mvn r12, #0x0 + mov r5, r0 + mov r3, r2 + cmp lr, r12 + add r4, r4, r1 + beq _020C89A0 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r1, r5 + mov r2, r4 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr +_020C89A0: + mov r1, r4 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C89B4: .word 0x021D33E4 +_020C89B8: .word 0x02106814 + + arm_func_start GX_BeginLoadOBJExtPltt +GX_BeginLoadOBJExtPltt: ; 0x020C89BC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl GX_ResetBankForOBJExtPltt + ldr r1, _020C8A1C ; =0x021D33E8 + cmp r0, #0x0 + str r0, [r1, #0x0] + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r0, #0x20 + beq _020C8A04 + cmp r0, #0x40 + ldreq r1, _020C8A20 ; =0x06894000 + ldreq r0, _020C8A24 ; =0x021D33E4 + add sp, sp, #0x4 + streq r1, [r0, #0x0] + ldmia sp!, {lr} + bx lr +_020C8A04: + ldr r1, _020C8A28 ; =0x06890000 + ldr r0, _020C8A24 ; =0x021D33E4 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C8A1C: .word 0x021D33E8 +_020C8A20: .word 0x06894000 +_020C8A24: .word 0x021D33E4 +_020C8A28: .word 0x06890000 + + arm_func_start GX_EndLoadBGExtPltt +GX_EndLoadBGExtPltt: ; 0x020C8A2C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C8A80 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C8A4C + bl MI_WaitDma +_020C8A4C: + ldr r0, _020C8A84 ; =0x021D33F4 + ldr r0, [r0, #0x0] + bl GX_SetBankForBGExtPltt + ldr r2, _020C8A84 ; =0x021D33F4 + mov r3, #0x0 + ldr r1, _020C8A88 ; =0x021D33F0 + ldr r0, _020C8A8C ; =0x021D33EC + str r3, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C8A80: .word 0x02106814 +_020C8A84: .word 0x021D33F4 +_020C8A88: .word 0x021D33F0 +_020C8A8C: .word 0x021D33EC + + arm_func_start GX_LoadBGExtPltt +GX_LoadBGExtPltt: ; 0x020C8A90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + ldr lr, _020C8B04 ; =0x021D33F0 + ldr ip, _020C8B08 ; =0x021D33EC + ldr r3, _020C8B0C ; =0x02106814 + ldr lr, [lr, #0x0] + ldr r4, [r12, #0x0] + add r5, lr, r1 + ldr lr, [r3, #0x0] + mvn r12, #0x0 + mov r1, r0 + mov r3, r2 + cmp lr, r12 + sub r4, r5, r4 + beq _020C8AF0 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r2, r4 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr +_020C8AF0: + mov r1, r4 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C8B04: .word 0x021D33F0 +_020C8B08: .word 0x021D33EC +_020C8B0C: .word 0x02106814 + + arm_func_start GX_BeginLoadBGExtPltt +GX_BeginLoadBGExtPltt: ; 0x020C8B10 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl GX_ResetBankForBGExtPltt + ldr r1, _020C8BFC ; =0x021D33F4 + cmp r0, #0x20 + str r0, [r1, #0x0] + bgt _020C8B60 + cmp r0, #0x20 + bge _020C8BD8 + cmp r0, #0x0 + bgt _020C8B4C + add sp, sp, #0x4 + cmp r0, #0x0 + ldmia sp!, {lr} + bx lr +_020C8B4C: + cmp r0, #0x10 + beq _020C8B90 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020C8B60: + cmp r0, #0x40 + bgt _020C8B7C + cmp r0, #0x40 + beq _020C8BB4 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020C8B7C: + cmp r0, #0x60 + beq _020C8BD8 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020C8B90: + ldr r3, _020C8C00 ; =0x06880000 + ldr r1, _020C8C04 ; =0x021D33F0 + ldr r0, _020C8C08 ; =0x021D33EC + mov r2, #0x0 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020C8BB4: + ldr r3, _020C8C0C ; =0x06894000 + ldr r1, _020C8C04 ; =0x021D33F0 + ldr r0, _020C8C08 ; =0x021D33EC + mov r2, #0x4000 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020C8BD8: + ldr r3, _020C8C10 ; =0x06890000 + ldr r1, _020C8C04 ; =0x021D33F0 + ldr r0, _020C8C08 ; =0x021D33EC + mov r2, #0x0 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C8BFC: .word 0x021D33F4 +_020C8C00: .word 0x06880000 +_020C8C04: .word 0x021D33F0 +_020C8C08: .word 0x021D33EC +_020C8C0C: .word 0x06894000 +_020C8C10: .word 0x06890000 + + arm_func_start GXS_LoadBG3Char +GXS_LoadBG3Char: ; 0x020C8C14 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG3CharPtr + ldr r1, _020C8C78 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8C60 + cmp r4, #0x30 + bls _020C8C60 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8C60: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8C78: .word 0x02106814 + + arm_func_start GX_LoadBG3Char +GX_LoadBG3Char: ; 0x020C8C7C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG3CharPtr + ldr r1, _020C8CE0 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8CC8 + cmp r4, #0x30 + bls _020C8CC8 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8CC8: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8CE0: .word 0x02106814 + + arm_func_start GXS_LoadBG2Char +GXS_LoadBG2Char: ; 0x020C8CE4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG2CharPtr + ldr r1, _020C8D48 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8D30 + cmp r4, #0x30 + bls _020C8D30 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8D30: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8D48: .word 0x02106814 + + arm_func_start GX_LoadBG2Char +GX_LoadBG2Char: ; 0x020C8D4C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG2CharPtr + ldr r1, _020C8DB0 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8D98 + cmp r4, #0x30 + bls _020C8D98 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8D98: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8DB0: .word 0x02106814 + + arm_func_start GXS_LoadBG1Char +GXS_LoadBG1Char: ; 0x020C8DB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG1CharPtr + ldr r1, _020C8E18 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8E00 + cmp r4, #0x30 + bls _020C8E00 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8E00: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8E18: .word 0x02106814 + + arm_func_start GX_LoadBG1Char +GX_LoadBG1Char: ; 0x020C8E1C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG1CharPtr + ldr r1, _020C8E80 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8E68 + cmp r4, #0x30 + bls _020C8E68 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8E68: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8E80: .word 0x02106814 + + arm_func_start GXS_LoadBG0Char +GXS_LoadBG0Char: ; 0x020C8E84 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG0CharPtr + ldr r1, _020C8EE8 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8ED0 + cmp r4, #0x30 + bls _020C8ED0 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8ED0: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8EE8: .word 0x02106814 + + arm_func_start GX_LoadBG0Char +GX_LoadBG0Char: ; 0x020C8EEC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG0CharPtr + ldr r1, _020C8F50 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8F38 + cmp r4, #0x30 + bls _020C8F38 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy32 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8F38: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8F50: .word 0x02106814 + + arm_func_start GXS_LoadBG3Scr +GXS_LoadBG3Scr: ; 0x020C8F54 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG3ScrPtr + ldr r1, _020C8FB8 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C8FA0 + cmp r4, #0x1c + bls _020C8FA0 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C8FA0: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C8FB8: .word 0x02106814 + + arm_func_start GX_LoadBG3Scr +GX_LoadBG3Scr: ; 0x020C8FBC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG3ScrPtr + ldr r1, _020C9020 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C9008 + cmp r4, #0x1c + bls _020C9008 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C9008: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9020: .word 0x02106814 + + arm_func_start GXS_LoadBG2Scr +GXS_LoadBG2Scr: ; 0x020C9024 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG2ScrPtr + ldr r1, _020C9088 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C9070 + cmp r4, #0x1c + bls _020C9070 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C9070: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9088: .word 0x02106814 + + arm_func_start GX_LoadBG2Scr +GX_LoadBG2Scr: ; 0x020C908C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG2ScrPtr + ldr r1, _020C90F0 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C90D8 + cmp r4, #0x1c + bls _020C90D8 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C90D8: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C90F0: .word 0x02106814 + + arm_func_start GXS_LoadBG1Scr +GXS_LoadBG1Scr: ; 0x020C90F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG1ScrPtr + ldr r1, _020C9158 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C9140 + cmp r4, #0x1c + bls _020C9140 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C9140: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9158: .word 0x02106814 + + arm_func_start GX_LoadBG1Scr +GX_LoadBG1Scr: ; 0x020C915C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG1ScrPtr + ldr r1, _020C91C0 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C91A8 + cmp r4, #0x1c + bls _020C91A8 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C91A8: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C91C0: .word 0x02106814 + + arm_func_start GXS_LoadBG0Scr +GXS_LoadBG0Scr: ; 0x020C91C4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2S_GetBG0ScrPtr + ldr r1, _020C9228 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C9210 + cmp r4, #0x1c + bls _020C9210 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C9210: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9228: .word 0x02106814 + + arm_func_start GX_LoadBG0Scr +GX_LoadBG0Scr: ; 0x020C922C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl G2_GetBG0ScrPtr + ldr r1, _020C9290 ; =0x02106814 + mov r12, r0 + ldr r0, [r1, #0x0] + mvn r1, #0x0 + cmp r0, r1 + beq _020C9278 + cmp r4, #0x1c + bls _020C9278 + mov r1, r6 + mov r3, r4 + add r2, r12, r5 + bl MI_DmaCopy16 + ldmia sp!, {r4-r6,lr} + bx lr +_020C9278: + mov r0, r6 + mov r2, r4 + add r1, r12, r5 + bl MIi_CpuCopy16 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9290: .word 0x02106814 + + arm_func_start GXS_LoadOBJ +GXS_LoadOBJ: ; 0x020C9294 + stmdb sp!, {r4,lr} + ldr r3, _020C92F0 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + mov r12, #0x6600000 + beq _020C92D8 + cmp r3, #0x30 + bls _020C92D8 + mov r1, r4 + add r2, r12, lr + bl MI_DmaCopy32 + ldmia sp!, {r4,lr} + bx lr +_020C92D8: + mov r0, r4 + mov r2, r3 + add r1, r12, lr + bl MIi_CpuCopy32 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C92F0: .word 0x02106814 + + arm_func_start GX_LoadOBJ +GX_LoadOBJ: ; 0x020C92F4 + stmdb sp!, {r4,lr} + ldr r3, _020C9350 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + mov r12, #0x6400000 + beq _020C9338 + cmp r3, #0x30 + bls _020C9338 + mov r1, r4 + add r2, r12, lr + bl MI_DmaCopy32 + ldmia sp!, {r4,lr} + bx lr +_020C9338: + mov r0, r4 + mov r2, r3 + add r1, r12, lr + bl MIi_CpuCopy32 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C9350: .word 0x02106814 + + arm_func_start GXS_LoadOAM +GXS_LoadOAM: ; 0x020C9354 + stmdb sp!, {r4,lr} + ldr r3, _020C93B4 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + beq _020C9398 + cmp r3, #0x30 + bls _020C9398 + ldr r2, _020C93B8 ; =0x07000400 + mov r1, r4 + add r2, lr, r2 + bl MI_DmaCopy32 + ldmia sp!, {r4,lr} + bx lr +_020C9398: + ldr r1, _020C93B8 ; =0x07000400 + mov r0, r4 + mov r2, r3 + add r1, lr, r1 + bl MIi_CpuCopy32 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C93B4: .word 0x02106814 +_020C93B8: .word 0x07000400 + + arm_func_start GX_LoadOAM +GX_LoadOAM: ; 0x020C93BC + stmdb sp!, {r4,lr} + ldr r3, _020C9414 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + beq _020C93FC + cmp r3, #0x30 + bls _020C93FC + mov r1, r4 + add r2, lr, #0x7000000 + bl MI_DmaCopy32 + ldmia sp!, {r4,lr} + bx lr +_020C93FC: + mov r0, r4 + mov r2, r3 + add r1, lr, #0x7000000 + bl MIi_CpuCopy32 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C9414: .word 0x02106814 + + arm_func_start GXS_LoadOBJPltt +GXS_LoadOBJPltt: ; 0x020C9418 + stmdb sp!, {r4,lr} + ldr r3, _020C9478 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + beq _020C945C + cmp r3, #0x1c + bls _020C945C + ldr r2, _020C947C ; =0x05000600 + mov r1, r4 + add r2, lr, r2 + bl MI_DmaCopy16 + ldmia sp!, {r4,lr} + bx lr +_020C945C: + ldr r1, _020C947C ; =0x05000600 + mov r0, r4 + mov r2, r3 + add r1, lr, r1 + bl MIi_CpuCopy16 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C9478: .word 0x02106814 +_020C947C: .word 0x05000600 + + arm_func_start GX_LoadOBJPltt +GX_LoadOBJPltt: ; 0x020C9480 + stmdb sp!, {r4,lr} + ldr r3, _020C94E0 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + beq _020C94C4 + cmp r3, #0x1c + bls _020C94C4 + ldr r2, _020C94E4 ; =0x05000200 + mov r1, r4 + add r2, lr, r2 + bl MI_DmaCopy16 + ldmia sp!, {r4,lr} + bx lr +_020C94C4: + ldr r1, _020C94E4 ; =0x05000200 + mov r0, r4 + mov r2, r3 + add r1, lr, r1 + bl MIi_CpuCopy16 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C94E0: .word 0x02106814 +_020C94E4: .word 0x05000200 + + arm_func_start GXS_LoadBGPltt +GXS_LoadBGPltt: ; 0x020C94E8 + stmdb sp!, {r4,lr} + ldr r3, _020C9548 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + beq _020C952C + cmp r3, #0x1c + bls _020C952C + ldr r2, _020C954C ; =0x05000400 + mov r1, r4 + add r2, lr, r2 + bl MI_DmaCopy16 + ldmia sp!, {r4,lr} + bx lr +_020C952C: + ldr r1, _020C954C ; =0x05000400 + mov r0, r4 + mov r2, r3 + add r1, lr, r1 + bl MIi_CpuCopy16 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C9548: .word 0x02106814 +_020C954C: .word 0x05000400 + + arm_func_start GX_LoadBGPltt +GX_LoadBGPltt: ; 0x020C9550 + stmdb sp!, {r4,lr} + ldr r3, _020C95A8 ; =0x02106814 + mov r4, r0 + ldr r0, [r3, #0x0] + mvn r12, #0x0 + mov lr, r1 + mov r3, r2 + cmp r0, r12 + beq _020C9590 + cmp r3, #0x1c + bls _020C9590 + mov r1, r4 + add r2, lr, #0x5000000 + bl MI_DmaCopy16 + ldmia sp!, {r4,lr} + bx lr +_020C9590: + mov r0, r4 + mov r2, r3 + add r1, lr, #0x5000000 + bl MIi_CpuCopy16 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C95A8: .word 0x02106814 + + arm_func_start GX_EndLoadClearImage +GX_EndLoadClearImage: ; 0x020C95AC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C95F8 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C95CC + bl MI_WaitDma +_020C95CC: + ldr r0, _020C95FC ; =0x021D33FC + ldr r0, [r0, #0x0] + bl GX_SetBankForClearImage + ldr r1, _020C95FC ; =0x021D33FC + mov r2, #0x0 + ldr r0, _020C9600 ; =0x021D340C + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C95F8: .word 0x02106814 +_020C95FC: .word 0x021D33FC +_020C9600: .word 0x021D340C + + arm_func_start GX_LoadClearImageDepth +GX_LoadClearImageDepth: ; 0x020C9604 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldr r3, _020C9670 ; =0x021D340C + ldr r2, _020C9674 ; =0x02106814 + ldr r12, [r3, #0x0] + ldr lr, [r2, #0x0] + mvn r2, #0x0 + mov r4, r0 + mov r3, r1 + cmp lr, r2 + add r2, r12, #0x20000 + beq _020C9658 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r1, r4 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020C9658: + mov r1, r2 + mov r2, r3 + bl MIi_CpuCopy32 + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C9670: .word 0x021D340C +_020C9674: .word 0x02106814 + + arm_func_start GX_LoadClearImageColor +GX_LoadClearImageColor: ; 0x020C9678 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldr r2, _020C96E0 ; =0x02106814 + ldr ip, _020C96E4 ; =0x021D340C + ldr lr, [r2, #0x0] + mvn r2, #0x0 + mov r4, r0 + mov r3, r1 + cmp lr, r2 + ldr r2, [r12, #0x0] + beq _020C96C8 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r1, r4 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020C96C8: + mov r1, r2 + mov r2, r3 + bl MIi_CpuCopy32 + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C96E0: .word 0x02106814 +_020C96E4: .word 0x021D340C + + arm_func_start GX_BeginLoadClearImage +GX_BeginLoadClearImage: ; 0x020C96E8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl GX_ResetBankForClearImage + ldr r1, _020C979C ; =0x021D33FC + cmp r0, #0xc + str r0, [r1, #0x0] + addls pc, pc, r0, lsl #0x2 + b _020C9790 +_020C9708: + b _020C9790 +_020C970C: + b _020C976C +_020C9710: + b _020C973C +_020C9714: + b _020C973C +_020C9718: + b _020C9784 +_020C971C: + b _020C9790 +_020C9720: + b _020C9790 +_020C9724: + b _020C9790 +_020C9728: + b _020C9754 +_020C972C: + b _020C9790 +_020C9730: + b _020C9790 +_020C9734: + b _020C9790 +_020C9738: + b _020C9754 +_020C973C: + ldr r0, _020C97A0 ; =0x021D340C + mov r1, #0x6800000 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020C9754: + ldr r1, _020C97A4 ; =0x06840000 + ldr r0, _020C97A0 ; =0x021D340C + add sp, sp, #0x4 + str r1, [r0, #0x0] + ldmia sp!, {lr} + bx lr +_020C976C: + ldr r1, _020C97A8 ; =0x067E0000 + ldr r0, _020C97A0 ; =0x021D340C + add sp, sp, #0x4 + str r1, [r0, #0x0] + ldmia sp!, {lr} + bx lr +_020C9784: + ldr r1, _020C97AC ; =0x06820000 + ldr r0, _020C97A0 ; =0x021D340C + str r1, [r0, #0x0] +_020C9790: + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C979C: .word 0x021D33FC +_020C97A0: .word 0x021D340C +_020C97A4: .word 0x06840000 +_020C97A8: .word 0x067E0000 +_020C97AC: .word 0x06820000 + + arm_func_start GX_EndLoadTexPltt +GX_EndLoadTexPltt: ; 0x020C97B0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C97FC ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C97D0 + bl MI_WaitDma +_020C97D0: + ldr r0, _020C9800 ; =0x021D3408 + ldr r0, [r0, #0x0] + bl GX_SetBankForTexPltt + ldr r1, _020C9800 ; =0x021D3408 + mov r2, #0x0 + ldr r0, _020C9804 ; =0x021D3404 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C97FC: .word 0x02106814 +_020C9800: .word 0x021D3408 +_020C9804: .word 0x021D3404 + + arm_func_start GX_LoadTexPltt +GX_LoadTexPltt: ; 0x020C9808 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + ldr ip, _020C9874 ; =0x021D3404 + ldr r3, _020C9878 ; =0x02106814 + ldr r4, [r12, #0x0] + ldr lr, [r3, #0x0] + mvn r12, #0x0 + mov r5, r0 + mov r3, r2 + cmp lr, r12 + add r4, r4, r1 + beq _020C9860 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r0, lr + mov r1, r5 + mov r2, r4 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr +_020C9860: + mov r1, r4 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C9874: .word 0x021D3404 +_020C9878: .word 0x02106814 + + arm_func_start GX_BeginLoadTexPltt +GX_BeginLoadTexPltt: ; 0x020C987C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl GX_ResetBankForTexPltt + mov r3, r0, asr #0x4 + ldr r2, _020C98B8 ; =0x021D3408 + ldr r1, _020C98BC ; =0x02103B3C + mov r3, r3, lsl #0x1 + ldrh r3, [r1, r3] + ldr r1, _020C98C0 ; =0x021D3404 + str r0, [r2, #0x0] + mov r0, r3, lsl #0xc + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C98B8: .word 0x021D3408 +_020C98BC: .word 0x02103B3C +_020C98C0: .word 0x021D3404 + + arm_func_start GX_EndLoadTex +GX_EndLoadTex: ; 0x020C98C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C9920 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C98E4 + bl MI_WaitDma +_020C98E4: + ldr r0, _020C9924 ; =0x021D3410 + ldr r0, [r0, #0x0] + bl GX_SetBankForTex + ldr r3, _020C9928 ; =0x021D3418 + mov r12, #0x0 + ldr r2, _020C992C ; =0x021D3414 + ldr r1, _020C9930 ; =0x021D3400 + ldr r0, _020C9924 ; =0x021D3410 + str r12, [r3, #0x0] + str r12, [r2, #0x0] + str r12, [r1, #0x0] + str r12, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C9920: .word 0x02106814 +_020C9924: .word 0x021D3410 +_020C9928: .word 0x021D3418 +_020C992C: .word 0x021D3414 +_020C9930: .word 0x021D3400 + + arm_func_start GX_LoadTex +GX_LoadTex: ; 0x020C9934 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r3, _020C9A88 ; =0x021D3414 + mov r7, r0 + ldr r5, [r3, #0x0] + mov r6, r2 + cmp r5, #0x0 + ldreq r0, _020C9A8C ; =0x021D3400 + ldreq r0, [r0, #0x0] + addeq r2, r0, r1 + beq _020C9A34 + ldr r0, _020C9A90 ; =0x021D3418 + add r2, r1, r6 + ldr r4, [r0, #0x0] + cmp r2, r4 + ldrlo r0, _020C9A8C ; =0x021D3400 + ldrcc r0, [r0, #0x0] + addcc r2, r0, r1 + blo _020C9A34 + cmp r1, r4 + addcs r0, r5, r1 + subcs r2, r0, r4 + bhs _020C9A34 + ldr r2, _020C9A8C ; =0x021D3400 + ldr r0, _020C9A94 ; =0x02106814 + ldr r3, [r2, #0x0] + ldr r0, [r0, #0x0] + mvn r2, #0x0 + cmp r0, r2 + sub r4, r4, r1 + add r2, r3, r1 + beq _020C99CC + cmp r4, #0x30 + bls _020C99CC + mov r1, r7 + mov r3, r4 + bl MI_DmaCopy32 + b _020C99DC +_020C99CC: + mov r1, r2 + mov r0, r7 + mov r2, r4 + bl MIi_CpuCopy32 +_020C99DC: + ldr r0, _020C9A94 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C9A18 + mov r12, #0x0 + str r12, [sp, #0x0] + mov r2, r5 + add r1, r7, r4 + sub r3, r6, r4 + str r12, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr +_020C9A18: + mov r1, r5 + add r0, r7, r4 + sub r2, r6, r4 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr +_020C9A34: + ldr r0, _020C9A94 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020C9A6C + mov r4, #0x0 + str r4, [sp, #0x0] + mov r1, r7 + mov r3, r6 + str r4, [sp, #0x4] + bl MI_DmaCopy32Async + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr +_020C9A6C: + mov r1, r2 + mov r0, r7 + mov r2, r6 + bl MIi_CpuCopy32 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020C9A88: .word 0x021D3414 +_020C9A8C: .word 0x021D3400 +_020C9A90: .word 0x021D3418 +_020C9A94: .word 0x02106814 + + arm_func_start GX_BeginLoadTex +GX_BeginLoadTex: ; 0x020C9A98 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl GX_ResetBankForTex + mov r1, #0x6 + mul r12, r0, r1 + ldr r3, _020C9AFC ; =0x02103B4C + ldr r2, _020C9B00 ; =0x02103B4E + ldr r1, _020C9B04 ; =0x02103B50 + ldrh r5, [r3, r12] + ldrh r4, [r2, r12] + ldrh lr, [r1, r12] + ldr ip, _020C9B08 ; =0x021D3410 + ldr r3, _020C9B0C ; =0x021D3400 + mov r5, r5, lsl #0xc + ldr r2, _020C9B10 ; =0x021D3414 + mov r4, r4, lsl #0xc + ldr r1, _020C9B14 ; =0x021D3418 + mov lr, lr, lsl #0xc + str r0, [r12, #0x0] + str r5, [r3, #0x0] + str r4, [r2, #0x0] + str lr, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C9AFC: .word 0x02103B4C +_020C9B00: .word 0x02103B4E +_020C9B04: .word 0x02103B50 +_020C9B08: .word 0x021D3410 +_020C9B0C: .word 0x021D3400 +_020C9B10: .word 0x021D3414 +_020C9B14: .word 0x021D3418 + + arm_func_start G3_EndMakeDL +G3_EndMakeDL: ; 0x020C9B18 + ldr r3, [r0, #0x0] + ldr r2, [r0, #0x8] + cmp r2, r3 + moveq r0, #0x0 + bxeq lr + and r1, r3, #0x3 + cmp r1, #0x3 + addls pc, pc, r1, lsl #0x2 + b _020C9B8C +_020C9B3C: + b _020C9B4C +_020C9B40: + b _020C9B54 +_020C9B44: + b _020C9B64 +_020C9B48: + b _020C9B78 +_020C9B4C: + sub r0, r3, r2 + bx lr +_020C9B54: + add r1, r3, #0x1 + str r1, [r0, #0x0] + mov r1, #0x0 + strb r1, [r3, #0x0] +_020C9B64: + ldr r3, [r0, #0x0] + mov r1, #0x0 + add r2, r3, #0x1 + str r2, [r0, #0x0] + strb r1, [r3, #0x0] +_020C9B78: + ldr r3, [r0, #0x0] + mov r1, #0x0 + add r2, r3, #0x1 + str r2, [r0, #0x0] + strb r1, [r3, #0x0] +_020C9B8C: + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _020C9BB0 + ldr r3, [r0, #0x4] + mov r1, #0x0 + add r2, r3, #0x4 + str r2, [r0, #0x4] + str r1, [r3, #0x0] + str r1, [r0, #0x10] +_020C9BB0: + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + ldr r0, [r0, #0x8] + sub r0, r1, r0 + bx lr + + arm_func_start G3_BeginMakeDL +G3_BeginMakeDL: ; 0x020C9BC8 + str r2, [r0, #0xc] + str r1, [r0, #0x8] + str r1, [r0, #0x0] + add r1, r1, #0x4 + str r1, [r0, #0x4] + mov r1, #0x0 + str r1, [r0, #0x10] + bx lr + + arm_func_start GX_SendFifo48B +GX_SendFifo48B: ; 0x020C9BE8 + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1, {r2-r3,r12} + bx lr diff --git a/arm9/asm/MATH_arm9.s b/arm9/asm/MATH_arm9.s new file mode 100644 index 00000000..02dcfbcf --- /dev/null +++ b/arm9/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 DGT_Hash1Reset +_020DDD00: ; 0x020DDD00 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl DGT_Hash1SetSource + add r1, sp, #0x0 + mov r0, r6 + bl DGT_Hash1GetDigest_R + 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/arm9/asm/MI_arm9.s b/arm9/asm/MI_arm9.s new file mode 100644 index 00000000..82747b38 --- /dev/null +++ b/arm9/asm/MI_arm9.s @@ -0,0 +1,1082 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + + + arm_func_start MI_SetWramBank +MI_SetWramBank: + ldr r1, _020CD870 ; =0x04000247 + strb r0, [r1, #0x0] + bx lr + .balign 4 +_020CD870: .word 0x04000247 + + arm_func_start MIi_CheckDma0SourceAddress +MIi_CheckDma0SourceAddress: + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + cmp r3, #0x0 + and r0, r1, #0xff000000 + beq _020CD8A4 + cmp r3, #0x800000 + subeq r1, r1, r2 + b _020CD8A8 +_020CD8A4: + add r1, r1, r2 +_020CD8A8: + cmp r0, #0x4000000 + beq _020CD8D4 + cmp r0, #0x8000000 + bhs _020CD8D4 + and r0, r1, #0xff000000 + cmp r0, #0x4000000 + beq _020CD8D4 + cmp r0, #0x8000000 + addcc sp, sp, #0x4 + ldmccia sp!, {lr} + bxcc lr +_020CD8D4: + bl OS_Terminate + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start MIi_CheckAnotherAutoDMA +MIi_CheckAnotherAutoDMA: ; 0x020CD8E4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020CD994 ; =0x040000B8 + mov r7, r0 + mov r6, r1 + mov r5, #0x0 +_020CD8FC: + cmp r5, r7 + beq _020CD978 + ldr r1, [r4, #0x0] + ands r0, r1, #0x80000000 + beq _020CD978 + and r0, r1, #0x38000000 + cmp r0, r6 + beq _020CD978 + cmp r0, #0x8000000 + bne _020CD92C + cmp r6, #0x10000000 + beq _020CD978 +_020CD92C: + cmp r0, #0x10000000 + bne _020CD93C + cmp r6, #0x8000000 + beq _020CD978 +_020CD93C: + cmp r0, #0x18000000 + beq _020CD974 + cmp r0, #0x20000000 + beq _020CD974 + cmp r0, #0x28000000 + beq _020CD974 + cmp r0, #0x30000000 + beq _020CD974 + cmp r0, #0x38000000 + beq _020CD974 + cmp r0, #0x8000000 + beq _020CD974 + cmp r0, #0x10000000 + bne _020CD978 +_020CD974: + bl OS_Terminate +_020CD978: + add r5, r5, #0x1 + cmp r5, #0x3 + add r4, r4, #0xc + blt _020CD8FC + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020CD994: .word 0x040000B8 + + arm_func_start MI_StopDma +MI_StopDma: ; 0x020CD998 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + mov r1, #0x6 + mul r1, r4, r1 + add r1, r1, #0x5 + mov r1, r1, lsl #0x1 + add r1, r1, #0x4000000 + ldrh r2, [r1, #0xb0] + cmp r4, #0x0 + bic r2, r2, #0x3a00 + strh r2, [r1, #0xb0] + ldrh r2, [r1, #0xb0] + bic r2, r2, #0x8000 + strh r2, [r1, #0xb0] + ldrh r2, [r1, #0xb0] + ldrh r1, [r1, #0xb0] + bne _020CDA08 + mov r1, #0xc + mul r12, r4, r1 + ldr r1, _020CDA14 ; =0x040000B0 + add r2, r12, #0x4000000 + mov r3, #0x0 + str r3, [r2, #0xb0] + add r2, r12, r1 + ldr r1, _020CDA18 ; =0x81400001 + str r3, [r2, #0x4] + str r1, [r2, #0x8] +_020CDA08: + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CDA14: .word 0x040000B0 +_020CDA18: .word 0x81400001 + + arm_func_start MI_WaitDma +MI_WaitDma: + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + mov r1, #0x3 + mul r2, r4, r1 + ldr r1, _020CDA84 ; =0x040000B0 + add r2, r2, #0x2 + add r2, r1, r2, lsl #0x2 +_020CDA3C: + ldr r1, [r2, #0x0] + ands r1, r1, #0x80000000 + bne _020CDA3C + cmp r4, #0x0 + bne _020CDA78 + mov r1, #0xc + mul r12, r4, r1 + ldr r1, _020CDA84 ; =0x040000B0 + add r2, r12, #0x4000000 + mov r3, #0x0 + str r3, [r2, #0xb0] + add r2, r12, r1 + ldr r1, _020CDA88 ; =0x81400001 + str r3, [r2, #0x4] + str r1, [r2, #0x8] +_020CDA78: + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CDA84: .word 0x040000B0 +_020CDA88: .word 0x81400001 + + arm_func_start MI_DmaCopy32Async +MI_DmaCopy32Async: ; 0x020CDA8C + stmdb sp!, {r4-r8,lr} + mov r5, r3 + mov r6, r2 + mov r2, r5 + mov r3, #0x0 + mov r8, r0 + mov r7, r1 + ldr r4, [sp, #0x18] + bl MIi_CheckDma0SourceAddress +_020CDAB0: + cmp r5, #0x0 + bne _020CDAD4 + cmp r4, #0x0 + ldmeqia sp!, {r4-r8, lr} + bxeq lr + ldr r0, [sp, #0x1C] + blx r4 + ldmia sp!, {r4-r8, lr} + bx lr +_020CDAD4: + mov r0, r8 + bl MI_WaitDma + cmp r4, #0x0 + beq _020CDB14 + ldr r2, [sp, #0x1C] + mov r0, r8 + mov r1, r4 + bl OSi_EnterDmaCallback + mov r3, r5, lsr #0x2 + mov r0, r8 + mov r1, r7 + mov r2, r6 + orr r3, r3, #0xc4000000 + bl MIi_DmaSetParams + ldmia sp!, {r4-r8, lr} + bx lr +_020CDB14: + mov r3, r5, lsr #0x2 + mov r0, r8 + mov r1, r7 + mov r2, r6 + orr r3, r3, #0x84000000 + bl MIi_DmaSetParams + ldmia sp!, {r4-r8, lr} + bx lr + + arm_func_start MI_DmaFill32Async +MI_DmaFill32Async: ; 0x020CDB34 + stmdb sp!, {r4-r8,lr} + movs r4, r3 + mov r7, r0 + mov r6, r1 + mov r5, r2 + ldr r8, [sp, #0x18] + bne _020CDB6C + cmp r8, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [sp, #0x1c] + blx r8 + ldmia sp!, {r4-r8,lr} + bx lr +_020CDB6C: + bl MI_WaitDma +_020CDB70: + cmp r8, #0x0 + beq _020CDBC8 + ldr r2, [sp, #0x1C] + mov r0, r7 + mov r1, r8 + bl OSi_EnterDmaCallback + bl OS_DisableInterrupts + mov r3, r4, lsr #2 + ldr r1, _20CDC08 + mov r2, r7, lsl #2 + add r2, r2, #0x4000000 + str r5, [r2, #0xE0] + mov r4, r0 + add r1, r1, r7, lsl #0x2 + mov r0, r7 + mov r2, r6 + orr r3, r3, #0xc5000000 + bl MIi_DmaSetParams_noInt + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr +_020CDBC8: + bl OS_DisableInterrupts + ldr r1, _20CDC08 + mov r2, r7, lsl #0x2 + mov r3, r4, lsr #0x2 + mov r4, r0 + add ip, r2, #0x4000000 + mov r0, r7 + mov r2, r6 + add r1, r1, r7, lsl #0x2 + orr r3, r3, #0x85000000 + str r5, [ip, #0xE0] + bl MIi_DmaSetParams_noInt + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr +_20CDC08: .word 0x040000E0 + + arm_func_start MI_DmaCopy16 +MI_DmaCopy16: ; 0x020CDC0C + stmdb sp!, {r4-r8,lr} + movs r5, r3 + mov r8, r0 + mov r7, r1 + mov r6, r2 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r2, r5 + mov r3, #0x0 + bl MIi_CheckDma0SourceAddress + mov r0, #0x3 + mul r1, r8, r0 + ldr r0, _020CDC80 ; =0x040000B0 + add r1, r1, #0x2 + add r4, r0, r1, lsl #0x2 +_020CDC48: + ldr r0, [r4, #0x0] + ands r0, r0, #0x80000000 + bne _020CDC48 + mov r3, r5, lsr #0x1 + mov r0, r8 + mov r1, r7 + mov r2, r6 + orr r3, r3, #0x80000000 + bl MIi_DmaSetParams_wait +_020CDC6C: + ldr r0, [r4] + ands r0, r0, #0x80000000 + bne _020CDC6C + ldmia sp!, {r4-r8,lr} + bx lr +_020CDC80: .word 0x040000B0 + + arm_func_start MI_DmaCopy32 +MI_DmaCopy32: ; 0x020CDC84 + stmdb sp!, {r4-r8,lr} + mov r5, r3 + mov r6, r2 + mov r2, r5 + mov r3, #0x0 + mov r8, r0 + mov r7, r1 + bl MIi_CheckDma0SourceAddress +_020CDCA4: + cmp r5, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r0, #0x3 + mul r1, r8, r0 + ldr r0, _020CDCFC + add r1, r1, #0x2 + add r4, r0, r1, lsl #0x2 +_020CDCC4: + ldr r0, [r4] + ands r0, r0, #0x80000000 + bne _020CDCC4 + mov r3, r5, lsr #0x2 + mov r0, r8 + mov r1, r7 + mov r2, r6 + orr r3, r3, #0x84000000 + bl MIi_DmaSetParams_wait +_020CDCE8: + ldr r0, [r4] + ands r0, r0, #0x80000000 + bne _020CDCE8 + ldmia sp!, {r4-r8,lr} + bx lr +_020CDCFC: .word 0x040000B0 + + arm_func_start MI_DmaFill32 +MI_DmaFill32: ; 0x020CDD00 + stmdb sp!, {r4-r8,lr} + movs r4, r3 + mov r8, r0 + mov r7, r1 + mov r6, r2 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r0, #0x3 + mul r1, r8, r0 + ldr r0, _020CDD88 ; =0x040000B0 + add r1, r1, #0x2 + add r5, r0, r1, lsl #0x2 +_020CDD30: + ldr r0, [r5, #0x0] + ands r0, r0, #0x80000000 + bne _020CDD30 + bl OS_DisableInterrupts + ldr r1, _020CDD8C ; =0x040000E0 + mov r2, r8, lsl #0x2 + mov r3, r4, lsr #0x2 + mov r4, r0 + add r12, r2, #0x4000000 + mov r0, r8 + mov r2, r7 + add r1, r1, r8, lsl #0x2 + orr r3, r3, #0x85000000 + str r6, [r12, #0xe0] + bl MIi_DmaSetParams_wait_noInt + mov r0, r4 + bl OS_RestoreInterrupts +_020CDD74: + ldr r0, [r5] + ands r0, r0, #0x80000000 + bne _020CDD74 + ldmia sp!, {r4-r8,lr} + bx lr +_020CDD88: .word 0x040000B0 +_020CDD8C: .word 0x040000E0 + + arm_func_start MI_HBlankDmaCopy16 +MI_HBlankDmaCopy16: ; 0x020CDD90 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + mov r7, r0 + mov r4, r3 + mov r1, #0x10000000 + mov r5, r2 + bl MIi_CheckAnotherAutoDMA + mov r0, r7 + mov r1, r6 + mov r2, r4 + mov r3, #0x0 + bl MIi_CheckDma0SourceAddress +_020CDDC4: + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7, lr} + bxeq lr + mov r0, r7 + bl MI_WaitDma + ldr r3, _020CDE00 + mov r0, r7 + mov r1, r6 + mov r2, r5 + orr r3, r3, r4, lsr #0x1 + bl MIi_DmaSetParams + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020CDE00: .word 0x92600000 + + arm_func_start MI_HBlankDmaCopy32 +MI_HBlankDmaCopy32: ; 0x020CDE04 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + mov r7, r0 + mov r4, r3 + mov r1, #0x10000000 + mov r5, r2 + bl MIi_CheckAnotherAutoDMA + mov r0, r7 + mov r1, r6 + mov r2, r4 + mov r3, #0x0 + bl MIi_CheckDma0SourceAddress +_020CDE38: + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r7 + bl MI_WaitDma + ldr r3, _020CDE74 + mov r0, r7 + mov r1, r6 + mov r2, r5 + orr r3, r3, r4, lsr #0x2 + bl MIi_DmaSetParams + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020CDE74: .word 0x96600000 + + arm_func_start MIi_DMAFastCallback +MIi_DMAFastCallback: ; 0x020CDE78 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020CDEB4 ; =0x021D37FC + mov r2, #0x0 + ldr r1, [r0, #0x10] + str r2, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldr r0, [r0, #0x14] + ldmeqia sp!, {lr} + bxeq lr + blx r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CDEB4: .word 0x021D37FC + + arm_func_start MI_SendGXCommandAsyncFast +MI_SendGXCommandAsyncFast: ; 0x020CDEB8 + stmdb sp!, {r4-r6,lr} + movs r4, r2 + mov r6, r0 + mov r5, r1 + bne _020CDEE8 + cmp r3, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [sp, #0x10] + blx r3 + ldmia sp!, {r4-r6,lr} + bx lr +_020CDEE8: + ldr r2, _020CDF6C ; =0x021D37FC + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _020CDEE8 + ldr r12, [sp, #0x10] + mov lr, #0x1 + mov r0, r6 + mov r1, #0x38000000 + str lr, [r2, #0x0] + str r6, [r2, #0x4] + str r3, [r2, #0x10] + str r12, [r2, #0x14] + bl MIi_CheckAnotherAutoDMA + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0x0 + bl MIi_CheckDma0SourceAddress + mov r0, r6 + bl MI_WaitDma + mov r0, r6 + ldr r1, _020CDF70 ; =MIi_DMAFastCallback + mov r2, #0x0 + bl OSi_EnterDmaCallback + mov r0, r6 + mov r1, r5 + ldr r2, _020CDF74 ; =0x04000400 + mov r3, #0x3c00000 + rsb r3, r3, #0x0 + orr r3, r3, r4, lsr #0x2 + bl MIi_DmaSetParams + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020CDF6C: .word 0x021D37FC +_020CDF70: .word MIi_DMAFastCallback +_020CDF74: .word 0x04000400 + + arm_func_start MIi_DMACallback +MIi_DMACallback: ; 0x020CDF78 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, #0x200000 + bl OS_DisableIrqMask + ldr r2, _020CDFE4 ; =0x04000600 + ldr r0, _020CDFE8 ; =0x021D37FC + ldr r1, [r2, #0x0] + ldr r3, [r0, #0x18] + bic r1, r1, #0xc0000000 + orr r1, r1, r3, lsl #0x1e + str r1, [r2, #0x0] + ldr r1, [r0, #0x1c] + mov r0, #0x200000 + bl OS_SetIrqFunction + ldr r0, _020CDFE8 ; =0x021D37FC + mov r2, #0x0 + ldr r1, [r0, #0x10] + str r2, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldr r0, [r0, #0x14] + ldmeqia sp!, {lr} + bxeq lr + blx r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CDFE4: .word 0x04000600 +_020CDFE8: .word 0x021D37FC + + arm_func_start MIi_FIFOCallback +MIi_FIFOCallback: ; 0x020CDFEC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020CE0A4 ; =0x021D37FC + ldr r4, [r0, #0xc] + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r0, _020CE0A4 ; =0x021D37FC + cmp r4, #0x1d8 + ldr r5, [r0, #0x8] + movcs r4, #0x1d8 + ldr r2, [r0, #0xc] + add r1, r5, r4 + subs r2, r2, r4 + str r2, [r0, #0xc] + str r1, [r0, #0x8] + bne _020CE078 + ldr r0, [r0, #0x4] + ldr r1, _020CE0A8 ; =MIi_DMACallback + mov r2, #0x0 + bl OSi_EnterDmaCallback + mov r0, #0x3bc00000 + rsb r3, r0, #0x0 + ldr r1, _020CE0A4 ; =0x021D37FC + ldr r2, _020CE0AC ; =0x04000400 + ldr r0, [r1, #0x4] + mov r1, r5 + orr r3, r3, r4, lsr #0x2 + bl MIi_DmaSetParams + mov r0, #0x200000 + bl OS_ResetRequestIrqMask + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020CE078: + ldr r3, _020CE0B0 ; =0x84400000 + ldr r0, [r0, #0x4] + ldr r2, _020CE0AC ; =0x04000400 + mov r1, r5 + orr r3, r3, r4, lsr #0x2 + bl MIi_DmaSetParams + mov r0, #0x200000 + bl OS_ResetRequestIrqMask + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CE0A4: .word 0x021D37FC +_020CE0A8: .word MIi_DMACallback +_020CE0AC: .word 0x04000400 +_020CE0B0: .word 0x84400000 + + arm_func_start MI_SendGXCommandAsync +MI_SendGXCommandAsync: ; 0x020CE0B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + cmp r2, #0x0 + bne _020CE0EC + cmp r3, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r0, [sp, #0x10] + blx r3 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020CE0EC: + ldr r0, _020CE1BC ; =0x021D37FC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020CE0EC + ldr r5, _020CE1C0 ; =0x04000600 +_020CE100: + ldr r0, [r5, #0x0] + and r0, r0, #0x7000000 + mov r0, r0, lsr #0x18 + ands r0, r0, #0x2 + beq _020CE100 + ldr ip, _020CE1BC ; =0x021D37FC + ldr lr, [sp, #0x10] + str r3, [r12, #0x10] + mov r5, #0x1 + mov r0, r4 + mov r3, #0x0 + str r5, [r12, #0x0] + str r4, [r12, #0x4] + str r1, [r12, #0x8] + str r2, [r12, #0xc] + str lr, [r12, #0x14] + bl MIi_CheckDma0SourceAddress + mov r0, r4 + bl MI_WaitDma + bl OS_DisableInterrupts + ldr r1, _020CE1C0 ; =0x04000600 + mov r4, r0 + ldr r0, [r1, #0x0] + ldr r1, _020CE1BC ; =0x021D37FC + and r0, r0, #0xc0000000 + mov r2, r0, lsr #0x1e + mov r0, #0x200000 + str r2, [r1, #0x18] + bl OS_GetIrqFunction + ldr r1, _020CE1BC ; =0x021D37FC + ldr r2, _020CE1C0 ; =0x04000600 + str r0, [r1, #0x1c] + ldr r0, [r2, #0x0] + ldr r1, _020CE1C4 ; =MIi_FIFOCallback + bic r0, r0, #0xc0000000 + orr r3, r0, #0x40000000 + mov r0, #0x200000 + str r3, [r2, #0x0] + bl OS_SetIrqFunction + mov r0, #0x200000 + bl OS_EnableIrqMask + bl MIi_FIFOCallback + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CE1BC: .word 0x021D37FC +_020CE1C0: .word 0x04000600 +_020CE1C4: .word MIi_FIFOCallback + + arm_func_start MIi_CpuClear16 +MIi_CpuClear16: ; 0x020CE1C8 + mov r3, #0x0 +_020CE1CC: + cmp r3, r2 + strlth r0, [r1, r3] + addlt r3, r3, #0x2 + blt _020CE1CC + bx lr + + arm_func_start MIi_CpuCopy16 +MIi_CpuCopy16: ; 0x020CE1E0 + mov r12, #0x0 +_020CE1E4: + cmp r12, r2 + ldrlth r3, [r0, r12] + strlth r3, [r1, r12] + addlt r12, r12, #0x2 + blt _020CE1E4 + bx lr + + arm_func_start MIi_CpuClear32 +MIi_CpuClear32: ; 0x020CE1FC + add r12, r1, r2 +_020CE200: + cmp r1, r12 + stmltia r1!, {r0} + blt _020CE200 + bx lr + + arm_func_start MIi_CpuCopy32 +MIi_CpuCopy32: ; 0x020CE210 + add r12, r1, r2 +_020CE214: + cmp r1, r12 + ldmltia r0!, {r2} + stmltia r1!, {r2} + blt _020CE214 + bx lr + + arm_func_start MIi_CpuSend32 +MIi_CpuSend32: ; 0x020CE228 + add r12, r0, r2 +_020CE22C: + cmp r0, r12 + ldmltia r0!, {r2} + strlt r2, [r1, #0x0] + blt _020CE22C + bx lr + + arm_func_start MIi_CpuClearFast +MIi_CpuClearFast: ; 0x020CE240 + stmdb sp!, {r4-r9} + add r9, r1, r2 + mov r12, r2, lsr #0x5 + add r12, r1, r12, lsl #0x5 + mov r2, r0 + mov r3, r2 + mov r4, r2 + mov r5, r2 + mov r6, r2 + mov r7, r2 + mov r8, r2 +_020CE26C: + cmp r1, r12 + stmltia r1!, {r0,r2-r8} + blt _020CE26C +_020CE278: + cmp r1, r9 + stmltia r1!, {r0} + blt _020CE278 + ldmia sp!, {r4-r9} + bx lr + + arm_func_start MIi_CpuCopyFast +MIi_CpuCopyFast: ; 0x020CE28C + stmdb sp!, {r4-r10} + add r10, r1, r2 + mov r12, r2, lsr #0x5 + add r12, r1, r12, lsl #0x5 +_020CE29C: + cmp r1, r12 + ldmltia r0!, {r2-r9} + stmltia r1!, {r2-r9} + blt _020CE29C +_020CE2AC: + cmp r1, r10 + ldmltia r0!, {r2} + stmltia r1!, {r2} + blt _020CE2AC + ldmia sp!, {r4-r10} + bx lr + + arm_func_start FUN_020CE2C4 +FUN_020CE2C4: + ldmia r0!, {r2, r3, ip} + stmia r1!, {r2, r3, ip} + ldmia r0!, {r2, r3, ip} + stmia r1!, {r2, r3, ip} + ldmia r0!, {r2, r3} + stmia r1!, {r2, r3} + bx lr + + arm_func_start MI_Copy36B +MI_Copy36B: ; 0x020CE2E0 + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + bx lr + + arm_func_start MI_Copy48B +MI_Copy48B: ; 0x020CE2FC + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + bx lr + + arm_func_start MI_Copy64B +MI_Copy64B: ; 0x020CE320 + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + stmia r1!, {r2-r3,r12} + ldmia r0, {r0,r2-r3,r12} + stmia r1!, {r0,r2-r3,r12} + bx lr + + arm_func_start MI_CpuFill8 +MI_CpuFill8: ; 0x020CE34C + cmp r2, #0x0 + bxeq lr + tst r0, #0x1 + beq _020CE378 + ldrh r12, [r0, #-0x1] + and r12, r12, #0xff + orr r3, r12, r1, lsl #0x8 + strh r3, [r0, #-0x1] + add r0, r0, #0x1 + subs r2, r2, #0x1 + bxeq lr +_020CE378: + cmp r2, #0x2 + blo _020CE3C0 + orr r1, r1, r1, lsl #0x8 + tst r0, #0x2 + beq _020CE398 + strh r1, [r0], #0x2 + subs r2, r2, #0x2 + bxeq lr +_020CE398: + orr r1, r1, r1, lsl #0x10 + bics r3, r2, #0x3 + beq _020CE3B8 + sub r2, r2, r3 + add r12, r3, r0 +_020CE3AC: + str r1, [r0], #0x4 + cmp r0, r12 + blo _020CE3AC +_020CE3B8: + tst r2, #0x2 + strneh r1, [r0], #0x2 +_020CE3C0: + tst r2, #0x1 + bxeq lr + ldrh r3, [r0, #0x0] + and r3, r3, #0xff00 + and r1, r1, #0xff + orr r1, r1, r3 + strh r1, [r0, #0x0] + bx lr + + arm_func_start MI_CpuCopy8 +MI_CpuCopy8: + cmp r2, #0x0 + bxeq lr + tst r1, #0x1 + beq _020CE420 + ldrh r12, [r1, #-0x1] + and r12, r12, #0xff + tst r0, #0x1 + ldrneh r3, [r0, #-0x1] + movne r3, r3, lsr #0x8 + ldreqh r3, [r0, #0x0] + orr r3, r12, r3, lsl #0x8 + strh r3, [r1, #-0x1] + add r0, r0, #0x1 + add r1, r1, #0x1 + subs r2, r2, #0x1 + bxeq lr +_020CE420: + eor r12, r1, r0 + tst r12, #0x1 + beq _020CE474 + bic r0, r0, #0x1 + ldrh r12, [r0], #0x2 + mov r3, r12, lsr #0x8 + subs r2, r2, #0x2 + blo _020CE458 +_020CE440: + ldrh r12, [r0], #0x2 + orr r12, r3, r12, lsl #0x8 + strh r12, [r1], #0x2 + mov r3, r12, lsr #0x10 + subs r2, r2, #0x2 + bhs _020CE440 +_020CE458: + tst r2, #0x1 + bxeq lr + ldrh r12, [r1, #0x0] + and r12, r12, #0xff00 + orr r12, r12, r3 + strh r12, [r1, #0x0] + bx lr +_020CE474: + tst r12, #0x2 + beq _020CE4A0 + bics r3, r2, #0x1 + beq _020CE4EC + sub r2, r2, r3 + add r12, r3, r1 +_020CE48C: + ldrh r3, [r0], #0x2 + strh r3, [r1], #0x2 + cmp r1, r12 + blo _020CE48C + b _020CE4EC +_020CE4A0: + cmp r2, #0x2 + blo _020CE4EC + tst r1, #0x2 + beq _020CE4C0 + ldrh r3, [r0], #0x2 + strh r3, [r1], #0x2 + subs r2, r2, #0x2 + bxeq lr +_020CE4C0: + bics r3, r2, #0x3 + beq _020CE4E0 + sub r2, r2, r3 + add r12, r3, r1 +_020CE4D0: + ldr r3, [r0], #0x4 + str r3, [r1], #0x4 + cmp r1, r12 + blo _020CE4D0 +_020CE4E0: + tst r2, #0x2 + ldrneh r3, [r0], #0x2 + strneh r3, [r1], #0x2 +_020CE4EC: + tst r2, #0x1 + bxeq lr + ldrh r2, [r1, #0x0] + ldrh r0, [r0, #0x0] + and r2, r2, #0xff00 + and r0, r0, #0xff + orr r0, r2, r0 + strh r0, [r1, #0x0] + bx lr + + thumb_func_start MI_Zero36B +MI_Zero36B: ; 0x020CE510 + mov r1, #0x0 + mov r2, #0x0 + mov r3, #0x0 + stmia r0!, {r1-r3} + stmia r0!, {r1-r3} + stmia r0!, {r1-r3} + bx lr + + arm_func_start MI_SwapWord +MI_SwapWord: ; 0x020CE520 + swp r0, r0, [r1] + bx lr + + arm_func_start MI_UncompressLZ8 +MI_UncompressLZ8: ; 0x020CE528 + stmdb sp!, {r4-r6,lr} + ldr r5, [r0], #0x4 + mov r2, r5, lsr #0x8 +_020CE534: + cmp r2, #0x0 + ble _020CE5B4 + ldrb lr, [r0], #0x1 + mov r4, #0x8 +_020CE544: + subs r4, r4, #0x1 + blt _020CE534 + tst lr, #0x80 + bne _020CE568 + ldrb r6, [r0], #0x1 + .word 0xE1416096 + add r1, r1, #0x1 + sub r2, r2, #0x1 + b _020CE5A4 +_020CE568: + ldrb r5, [r0, #0x0] + mov r6, #0x3 + add r3, r6, r5, asr #0x4 + ldrb r6, [r0], #0x1 + and r5, r6, #0xf + mov r12, r5, lsl #0x8 + ldrb r6, [r0], #0x1 + orr r5, r6, r12 + add r12, r5, #0x1 + sub r2, r2, r3 +_020CE590: + ldrb r5, [r1, -r12] + .word 0xE1415095 + add r1, r1, #0x1 + subs r3, r3, #0x1 + bgt _020CE590 +_020CE5A4: + cmp r2, #0x0 + movgt lr, lr, lsl #0x1 + bgt _020CE544 + b _020CE534 +_020CE5B4: + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start MIi_CardDmaCopy32 +MIi_CardDmaCopy32: ; 0x020CE5BC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r6, r0 + mov r7, r3 + mvn r1, #0x0 + mov r4, r2 + bl MIi_CheckAnotherAutoDMA + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, #0x1000000 + bl MIi_CheckDma0SourceAddress +_020CE5F0: + cmp r7, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7, lr} + bxeq lr + mov r0, #0x3 + mul r1, r6, r0 + ldr r0, _020CE640 + add r1, r1, #0x2 + add r1, r0, r1, lsl #0x2 +_020CE614: + ldr r0, [r1] + ands r0, r0, #0x80000000 + bne _020CE614 + ldr r3, _020CE644 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl MIi_DmaSetParams + add sp, sp, #0x4 + ldmia sp!, {r4-r7, lr} + bx lr +_020CE640: .word 0x040000B0 +_020CE644: .word 0xAf000001 + + arm_func_start MI_Init +MI_Init: ; 0x020CE648 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, #0x3 + bl MI_SetWramBank + mov r0, #0x0 + bl MI_StopDma + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr + diff --git a/arm9/asm/OS_arm9.s b/arm9/asm/OS_arm9.s new file mode 100644 index 00000000..1323e376 --- /dev/null +++ b/arm9/asm/OS_arm9.s @@ -0,0 +1,4759 @@ + .include "asm/macros.inc" + .include "global.inc" + .extern isInitialized + + .section .dtcm + .balign 16, 0 + .global OS_IRQTable +OS_IRQTable: ; 027E0000 ;10b6a0 + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OSi_IrqTimer0 + .word OSi_IrqTimer1 + .word OSi_IrqTimer2 + .word OSi_IrqTimer3 + .word OS_IrqDummy + .word OSi_IrqDma0 + .word OSi_IrqDma1 + .word OSi_IrqDma2 + .word OSi_IrqDma3 + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .word OS_IrqDummy + .balign 16, 0 + + .global OSi_IrqThreadQueue +OSi_IrqThreadQueue: ; 027E0060 + + .section .text + + arm_func_start OS_WaitIrq +OS_WaitIrq: + stmdb sp!, {r4-r6,lr} + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + cmp r5, #0x0 + beq _020C9C3C + ldr r1, _020C9C80 ; =0x027E0000 + mvn r2, r4 + add r1, r1, #0x3000 + ldr r3, [r1, #0xff8] + and r2, r3, r2 + str r2, [r1, #0xff8] +_020C9C3C: + bl OS_RestoreInterrupts + ldr r1, _020C9C80 ; =0x027E0000 + add r0, r1, #0x3000 + ldr r0, [r0, #0xff8] + ands r0, r4, r0 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldr r0, _020C9C84 ; =0x00003FF8 + add r6, r1, r0 + ldr r5, _020C9C88 ; =0x027E0060 +_020C9C64: + mov r0, r5 + bl OS_SleepThread + ldr r0, [r6, #0x0] + ands r0, r4, r0 + beq _020C9C64 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9C80: .word 0x027E0000 +_020C9C84: .word 0x00003FF8 +_020C9C88: .word 0x027E0060 + + arm_func_start OSi_IrqTimer3 +OSi_IrqTimer3: ; 0x020C9C8C + ldr ip, _020C9C98 ; =OSi_IrqCallback + mov r0, #0x7 + bx r12 + .balign 4 +_020C9C98: .word OSi_IrqCallback + + arm_func_start OSi_IrqTimer2 +OSi_IrqTimer2: ; 0x020C9C9C + ldr ip, _020C9CA8 ; =OSi_IrqCallback + mov r0, #0x6 + bx r12 + .balign 4 +_020C9CA8: .word OSi_IrqCallback + + arm_func_start OSi_IrqTimer1 +OSi_IrqTimer1: ; 0x020C9CAC + ldr ip, _020C9CB8 ; =OSi_IrqCallback + mov r0, #0x5 + bx r12 + .balign 4 +_020C9CB8: .word OSi_IrqCallback + + arm_func_start OSi_IrqTimer0 +OSi_IrqTimer0: ; 0x020C9CBC + ldr ip, _020C9CC8 ; =OSi_IrqCallback + mov r0, #0x4 + bx r12 + .balign 4 +_020C9CC8: .word OSi_IrqCallback + + arm_func_start OSi_IrqDma3 +OSi_IrqDma3: ; 0x020C9CCC + ldr ip, _020C9CD8 ; =OSi_IrqCallback + mov r0, #0x3 + bx r12 + .balign 4 +_020C9CD8: .word OSi_IrqCallback + + arm_func_start OSi_IrqDma2 +OSi_IrqDma2: ; 0x020C9CDC + ldr ip, _020C9CE8 ; =OSi_IrqCallback + mov r0, #0x2 + bx r12 + .balign 4 +_020C9CE8: .word OSi_IrqCallback + + arm_func_start OSi_IrqDma1 +OSi_IrqDma1: ; 0x020C9CEC + ldr ip, _020C9CF8 ; =OSi_IrqCallback + mov r0, #0x1 + bx r12 + .balign 4 +_020C9CF8: .word OSi_IrqCallback + + arm_func_start OSi_IrqDma0 +OSi_IrqDma0: ; 0x020C9CFC + ldr ip, _020C9D08 ; =OSi_IrqCallback + mov r0, #0x0 + bx r12 + .balign 4 +_020C9D08: .word OSi_IrqCallback + + arm_func_start OSi_IrqCallback +OSi_IrqCallback: ; 0x020C9D0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r1, #0xc + mul r4, r0, r1 + ldr r2, _020C9D94 ; =OSi_IrqCallbackInfo + ldr r3, _020C9D98 ; =0x02106818 + mov r0, r0, lsl #0x1 + ldr r1, [r2, r4] + ldrh r3, [r3, r0] + mov r5, #0x1 + mov r0, #0x0 + str r0, [r2, r4] + cmp r1, #0x0 + mov r5, r5, lsl r3 + beq _020C9D54 + ldr r0, _020C9D9C ; =0x021D3424 + ldr r0, [r0, r4] + blx r1 +_020C9D54: + ldr r0, _020C9DA0 ; =0x027E0000 + ldr r1, _020C9DA4 ; =0x021D3420 + add r0, r0, #0x3000 + ldr r2, [r0, #0xff8] + orr r2, r2, r5 + str r2, [r0, #0xff8] + ldr r0, [r1, r4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r5 + bl OS_DisableIrqMask + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020C9D94: .word OSi_IrqCallbackInfo +_020C9D98: .word OSi_IrqCallbackInfoIndex +_020C9D9C: .word OSi_IrqCallbackInfo + 8 +_020C9DA0: .word SDK_AUTOLOAD_DTCM_START +_020C9DA4: .word OSi_IrqCallbackInfo + 4 + + arm_func_start OS_IrqDummy +OS_IrqDummy: ; 0x020C9DA8 + bx lr + + arm_func_start OS_SetIrqStackChecker +OS_SetIrqStackChecker: ; 0x020C9DAC + ldr ip, _020C9DD0 ; =0x027E0000 + ldr r3, _020C9DD4 ; =0xFDDB597D + add r0, r12, #0x3000 + ldr r2, _020C9DD8 ; =0x7BF9DD5B + ldr r1, _020C9DDC ; =0x00000400 + str r3, [r0, #0xf7c] + add r0, r12, #0x3f80 + str r2, [r0, -r1] + bx lr + .balign 4 +_020C9DD0: .word 0x027E0000 +_020C9DD4: .word 0xFDDB597D +_020C9DD8: .word 0x7BF9DD5B +_020C9DDC: .word 0x00000400 + + arm_func_start OS_ResetRequestIrqMask +OS_ResetRequestIrqMask: ; 0x020C9DE0 + ldr ip, _020C9E0C ; =0x04000208 + mov r1, #0x0 + ldrh r3, [r12, #0x0] + ldr r2, _020C9E10 ; =0x04000214 + strh r1, [r12, #0x0] + ldr r1, [r2, #0x0] + str r0, [r2, #0x0] + ldrh r0, [r12, #0x0] + mov r0, r1 + strh r3, [r12, #0x0] + bx lr + .balign 4 +_020C9E0C: .word 0x04000208 +_020C9E10: .word 0x04000214 + + arm_func_start OS_DisableIrqMask +OS_DisableIrqMask: ; 0x020C9E14 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, _020C9E54 ; =0x04000208 + mov r3, #0x0 + ldrh r12, [lr, #0x0] + ldr r2, _020C9E58 ; =0x04000210 + mvn r1, r0 + strh r3, [lr, #0x0] + ldr r0, [r2, #0x0] + and r1, r0, r1 + str r1, [r2, #0x0] + ldrh r1, [lr, #0x0] + strh r12, [lr, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C9E54: .word 0x04000208 +_020C9E58: .word 0x04000210 + + arm_func_start OS_EnableIrqMask +OS_EnableIrqMask: ; 0x020C9E5C + ldr ip, _020C9E8C ; =0x04000208 + mov r1, #0x0 + ldrh r3, [r12, #0x0] + ldr r2, _020C9E90 ; =0x04000210 + strh r1, [r12, #0x0] + ldr r1, [r2, #0x0] + orr r0, r1, r0 + str r0, [r2, #0x0] + ldrh r0, [r12, #0x0] + mov r0, r1 + strh r3, [r12, #0x0] + bx lr + .balign 4 +_020C9E8C: .word 0x04000208 +_020C9E90: .word 0x04000210 + + arm_func_start OS_SetIrqMask +OS_SetIrqMask: ; 0x020C9E94 + ldr ip, _020C9EC0 ; =0x04000208 + mov r1, #0x0 + ldrh r3, [r12, #0x0] + ldr r2, _020C9EC4 ; =0x04000210 + strh r1, [r12, #0x0] + ldr r1, [r2, #0x0] + str r0, [r2, #0x0] + ldrh r0, [r12, #0x0] + mov r0, r1 + strh r3, [r12, #0x0] + bx lr + .balign 4 +_020C9EC0: .word 0x04000208 +_020C9EC4: .word 0x04000210 + + arm_func_start OSi_EnterTimerCallback +OSi_EnterTimerCallback: ; 0x020C9EC8 + stmdb sp!, {r4,lr} + mov r3, #0xc + mul r4, r0, r3 + ldr ip, _020C9F08 ; =0x021D344C + add r0, r0, #0x3 + mov r3, #0x1 + mov r0, r3, lsl r0 + ldr r3, _020C9F0C ; =0x021D3454 + str r1, [r12, r4] + str r2, [r3, r4] + bl OS_EnableIrqMask + ldr r0, _020C9F10 ; =0x021D3450 + mov r1, #0x1 + str r1, [r0, r4] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C9F08: .word OSi_IrqCallbackInfo+0x30 +_020C9F0C: .word OSi_IrqCallbackInfo+0x38 +_020C9F10: .word OSi_IrqCallbackInfo+0x34 + + arm_func_start OSi_EnterDmaCallback +OSi_EnterDmaCallback: ; 0x020C9F14 + stmdb sp!, {r4-r6,lr} + mov r3, #0xc + mul r6, r0, r3 + ldr ip, _020C9F54 ; =OSi_IrqCallbackInfo + add r4, r0, #0x8 + mov r5, #0x1 + mov r0, r5, lsl r4 + ldr r3, _020C9F58 ; =0x021D3424 + str r1, [r12, r6] + str r2, [r3, r6] + bl OS_EnableIrqMask + and r1, r0, r5, lsl r4 + ldr r0, _020C9F5C ; =0x021D3420 + str r1, [r0, r6] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020C9F54: .word OSi_IrqCallbackInfo +_020C9F58: .word OSi_IrqCallbackInfo + 8 +_020C9F5C: .word OSi_IrqCallbackInfo + 4 + + arm_func_start OS_GetIrqFunction +OS_GetIrqFunction: ; 0x020C9F60 + ldr r2, _020C9FE4 ; =0x027E0000 + mov r3, #0x0 +_020C9F68: + ands r1, r0, #0x1 + beq _020C9FC8 + cmp r3, #0x8 + blt _020C9F98 + cmp r3, #0xb + bgt _020C9F98 + sub r1, r3, #0x8 + mov r0, #0xc + mul r2, r1, r0 + ldr r0, _020C9FE8 ; =OSi_IrqCallbackInfo + ldr r0, [r0, r2] + bx lr +_020C9F98: + cmp r3, #0x3 + blt _020C9FC0 + cmp r3, #0x6 + bgt _020C9FC0 + add r1, r3, #0x1 + mov r0, #0xc + mul r2, r1, r0 + ldr r0, _020C9FE8 ; =OSi_IrqCallbackInfo + ldr r0, [r0, r2] + bx lr +_020C9FC0: + ldr r0, [r2, #0x0] + bx lr +_020C9FC8: + add r3, r3, #0x1 + cmp r3, #0x16 + mov r0, r0, lsr #0x1 + add r2, r2, #0x4 + blt _020C9F68 + mov r0, #0x0 + bx lr + .balign 4 +_020C9FE4: .word 0x027E0000 +_020C9FE8: .word OSi_IrqCallbackInfo + + arm_func_start OS_SetIrqFunction +OS_SetIrqFunction: ; 0x020C9FEC + stmdb sp!, {r4-r8,lr} + mov r8, #0x0 + ldr lr, _020CA074 ; =0x027E0000 + ldr r5, _020CA078 ; =OSi_IrqCallbackInfo + mov r6, r8 + mov r12, r8 + mov r3, #0x1 + mov r2, #0xc +_020CA00C: + ands r4, r0, #0x1 + beq _020CA05C + mov r7, r6 + cmp r8, #0x8 + blt _020CA030 + cmp r8, #0xb + suble r4, r8, #0x8 + mlale r7, r4, r2, r5 + ble _020CA04C +_020CA030: + cmp r8, #0x3 + blt _020CA048 + cmp r8, #0x6 + addle r4, r8, #0x1 + mlale r7, r4, r2, r5 + ble _020CA04C +_020CA048: + str r1, [lr, r8, lsl #0x2] +_020CA04C: + cmp r7, #0x0 + strne r1, [r7, #0x0] + strne r12, [r7, #0x8] + strne r3, [r7, #0x4] +_020CA05C: + add r8, r8, #0x1 + cmp r8, #0x16 + mov r0, r0, lsr #0x1 + blt _020CA00C + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020CA074: .word 0x027E0000 +_020CA078: .word OSi_IrqCallbackInfo + + arm_func_start OS_InitIrqTable +OS_InitIrqTable: ; 0x020CA07C + ldr r0, _020CA090 ; =0x027E0060 + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x0] + bx lr + .balign 4 +_020CA090: .word 0x027E0060 + + arm_func_start OS_UnlockCartridge +OS_UnlockCartridge: ; 0x020CA094 + ldr r1, _020CA09C ; =OS_UnlockCartridge2 + bx r1 + .balign 4 +_020CA09C: .word OS_UnlockCartridge2 + + arm_func_start OS_GetLockID +OS_GetLockID: ; 0x020CA0A0 + ldr r3, _020CA0F0 ; =0x027FFFB0 + ldr r1, [r3, #0x0] + clz r2, r1 + cmp r2, #0x20 + movne r0, #0x40 + bne _020CA0D4 + add r3, r3, #0x4 + ldr r1, [r3, #0x0] + clz r2, r1 + cmp r2, #0x20 + ldr r0, _020CA0F4 ; =0xFFFFFFFD + bxeq lr + mov r0, #0x60 +_020CA0D4: + add r0, r0, r2 + mov r1, #0x80000000 + mov r1, r1, lsr r2 + ldr r2, [r3, #0x0] + bic r2, r2, r1 + str r2, [r3, #0x0] + bx lr + .balign 4 +_020CA0F0: .word 0x027FFFB0 +_020CA0F4: .word 0xFFFFFFFD + + arm_func_start OS_ReleaseLockID +OS_ReleaseLockID: ; 0x020CA0F8 + ldr r3, _020CA124 ; =0x027FFFB0 + cmp r0, #0x60 + addpl r3, r3, #0x4 + subpl r0, r0, #0x60 + submi r0, r0, #0x40 + mov r1, #0x80000000 + mov r1, r1, lsr r0 + ldr r2, [r3, #0x0] + orr r2, r2, r1 + str r2, [r3, #0x0] + bx lr + .balign 4 +_020CA124: .word 0x027FFFB0 + + arm_func_start OS_ReadOwnerOfLockWord +OS_ReadOwnerOfLockWord: ; 0x020CA128 + ldrh r0, [r0, #0x4] + bx lr + + arm_func_start OSi_FreeCardBus +OSi_FreeCardBus: ; 0x020CA130 + ldr r1, _020CA144 ; =0x04000204 + ldrh r0, [r1, #0x0] + orr r0, r0, #0x800 + strh r0, [r1, #0x0] + bx lr + .balign 4 +_020CA144: .word 0x04000204 + + arm_func_start OSi_AllocateCardBus +OSi_AllocateCardBus: ; 0x020CA148 + ldr r1, _020CA15C ; =0x04000204 + ldrh r0, [r1, #0x0] + bic r0, r0, #0x800 + strh r0, [r1, #0x0] + bx lr + .balign 4 +_020CA15C: .word 0x04000204 + + arm_func_start OS_UnlockCard +OS_UnlockCard: ; 0x020CA160 + ldr ip, _020CA170 ; =OS_UnlockByWord + ldr r1, _020CA174 ; =0x027FFFE0 + ldr r2, _020CA178 ; =OSi_FreeCardBus + bx r12 + .balign 4 +_020CA170: .word OS_UnlockByWord +_020CA174: .word 0x027FFFE0 +_020CA178: .word OSi_FreeCardBus + + arm_func_start OS_TryLockCard +OS_TryLockCard: ; 0x020CA17C + ldr ip, _020CA18C ; =OS_TryLockByWord + ldr r1, _020CA190 ; =0x027FFFE0 + ldr r2, _020CA194 ; =OSi_AllocateCardBus + bx r12 + .balign 4 +_020CA18C: .word OS_TryLockByWord +_020CA190: .word 0x027FFFE0 +_020CA194: .word OSi_AllocateCardBus + + arm_func_start OSi_FreeCartridgeBus +OSi_FreeCartridgeBus: ; 0x020CA198 + ldr r1, _020CA1AC ; =0x04000204 + ldrh r0, [r1, #0x0] + orr r0, r0, #0x80 + strh r0, [r1, #0x0] + bx lr + .balign 4 +_020CA1AC: .word 0x04000204 + + arm_func_start OSi_AllocateCartridgeBus +OSi_AllocateCartridgeBus: ; 0x020CA1B0 + ldr r1, _020CA1C4 ; =0x04000204 + ldrh r0, [r1, #0x0] + bic r0, r0, #0x80 + strh r0, [r1, #0x0] + bx lr + .balign 4 +_020CA1C4: .word 0x04000204 + + arm_func_start OS_TryLockCartridge +OS_TryLockCartridge: ; 0x020CA1C8 + ldr ip, _020CA1DC ; =OSi_DoTryLockByWord + ldr r1, _020CA1E0 ; =0x027FFFE8 + ldr r2, _020CA1E4 ; =OSi_AllocateCartridgeBus + mov r3, #0x1 + bx r12 + .balign 4 +_020CA1DC: .word OSi_DoTryLockByWord +_020CA1E0: .word 0x027FFFE8 +_020CA1E4: .word OSi_AllocateCartridgeBus + + arm_func_start OS_UnlockCartridge2 +OS_UnlockCartridge2: ; 0x020CA1E8 + ldr ip, _020CA1FC ; =FUN_020CA2B8 + ldr r1, _020CA200 ; =0x027FFFE8 + ldr r2, _020CA204 ; =OSi_FreeCartridgeBus + mov r3, #0x1 + bx r12 + .balign 4 +_020CA1FC: .word FUN_020CA2B8 +_020CA200: .word 0x027FFFE8 +_020CA204: .word OSi_FreeCartridgeBus + + arm_func_start OS_LockCartridge +OS_LockCartridge: ; 0x020CA208 + ldr ip, _020CA21C ; =FUN_020CA358 + ldr r1, _020CA220 ; =0x027FFFE8 + ldr r2, _020CA224 ; =OSi_AllocateCartridgeBus + mov r3, #0x1 + bx r12 + .balign 4 +_020CA21C: .word FUN_020CA358 +_020CA220: .word 0x027FFFE8 +_020CA224: .word OSi_AllocateCartridgeBus + + arm_func_start OSi_DoTryLockByWord +OSi_DoTryLockByWord: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + movs r6, r3 + mov r9, r0 + mov r8, r1 + mov r7, r2 + beq _020CA250 + bl OS_DisableInterrupts_IrqAndFiq + mov r5, r0 + b _020CA258 +_020CA250: + bl OS_DisableInterrupts + mov r5, r0 +_020CA258: + mov r0, r9 + mov r1, r8 + bl MI_SwapWord + movs r4, r0 + bne _020CA27C + cmp r7, #0x0 + beq _020CA278 + blx r7 +_020CA278: + strh r9, [r8, #0x4] +_020CA27C: + cmp r6, #0x0 + beq _020CA290 + mov r0, r5 + bl OS_RestoreInterrupts_IrqAndFiq + b _020CA298 +_020CA290: + mov r0, r5 + bl OS_RestoreInterrupts +_020CA298: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start OS_UnlockByWord +OS_UnlockByWord: ; 0x020CA2A8 + ldr ip, _020CA2B4 ; =FUN_020CA2B8 + mov r3, #0x0 + bx r12 + .balign 4 +_020CA2B4: .word FUN_020CA2B8 + + arm_func_start FUN_020CA2B8 +FUN_020CA2B8: ; 0x020CA2B8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r1 + ldrh r1, [r7, #0x4] + mov r6, r2 + mov r5, r3 + cmp r0, r1 + addne sp, sp, #0x4 + mvnne r0, #0x1 + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r5, #0x0 + beq _020CA2F8 + bl OS_DisableInterrupts_IrqAndFiq + mov r4, r0 + b _020CA300 +_020CA2F8: + bl OS_DisableInterrupts + mov r4, r0 +_020CA300: + mov r0, #0x0 + strh r0, [r7, #0x4] + cmp r6, #0x0 + beq _020CA314 + blx r6 +_020CA314: + mov r0, #0x0 + str r0, [r7, #0x0] + cmp r5, #0x0 + beq _020CA330 + mov r0, r4 + bl OS_RestoreInterrupts_IrqAndFiq + b _020CA338 +_020CA330: + mov r0, r4 + bl OS_RestoreInterrupts +_020CA338: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start OS_TryLockByWord +OS_TryLockByWord: ; 0x020CA348 + ldr ip, _020CA354 ; =FUN_020CA358 + mov r3, #0x0 + bx r12 + .balign 4 +_020CA354: .word FUN_020CA358 + + arm_func_start FUN_020CA358 +FUN_020CA358: ; 0x020CA358 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl OSi_DoTryLockByWord + cmp r0, #0x0 + ldmleia sp!, {r4-r8,lr} + bxle lr + mov r4, #0x400 +_020CA380: + mov r0, r4 + blx SVC_WaitByLoop + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl OSi_DoTryLockByWord + cmp r0, #0x0 + bgt _020CA380 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start OS_InitLock +OS_InitLock: ; 0x020CA3AC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020CA484 ; =isInitialized + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r2, #0x1 + ldr r1, _020CA488 ; =0x027FFFF0 + str r2, [r0, #0x0] + mov r2, #0x0 + mov r0, #0x7e + str r2, [r1, #0x0] + bl OS_TryLockByWord + ldr r5, _020CA488 ; =0x027FFFF0 + ldrh r0, [r5, #0x6] + cmp r0, #0x0 + beq _020CA410 + mov r4, #0x400 +_020CA3FC: + mov r0, r4 + blx SVC_WaitByLoop + ldrh r0, [r5, #0x6] + cmp r0, #0x0 + bne _020CA3FC +_020CA410: + ldr r2, _020CA48C ; =0x027FFFB0 + mvn r12, #0x0 + mov r0, #0x10000 + ldr r3, _020CA490 ; =0x027FFFB4 + ldr r1, _020CA494 ; =0x027FFFC0 + str r12, [r2, #0x0] + rsb r12, r0, #0x0 + mov r0, #0x0 + mov r2, #0x28 + str r12, [r3, #0x0] + bl MIi_CpuClear32 + ldr ip, _020CA498 ; =0x04000204 + ldr r1, _020CA488 ; =0x027FFFF0 + ldrh r3, [r12, #0x0] + mov r0, #0x7e + mov r2, #0x0 + orr r3, r3, #0x800 + strh r3, [r12, #0x0] + ldrh r3, [r12, #0x0] + orr r3, r3, #0x80 + strh r3, [r12, #0x0] + bl OS_UnlockByWord + ldr r1, _020CA488 ; =0x027FFFF0 + mov r0, #0x7f + mov r2, #0x0 + bl OS_TryLockByWord + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CA484: .word isInitialized +_020CA488: .word 0x027FFFF0 +_020CA48C: .word 0x027FFFB0 +_020CA490: .word 0x027FFFB4 +_020CA494: .word 0x027FFFC0 +_020CA498: .word 0x04000204 + + arm_func_start OS_VSNPrintf +OS_VSNPrintf: ; 0x020CA49C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x64 + mov r9, r2 + str r1, [sp, #0x54] + str r0, [sp, #0x5c] + str r0, [sp, #0x58] + ldrsb r0, [r9, #0x0] + str r1, [sp, #0x0] + mov r11, r3 + cmp r0, #0x0 + beq _020CAD18 + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x4] + mov r0, #0x20 + str r0, [sp, #0x1c] + mov r0, #0x30 + str r0, [sp, #0x20] + mvn r0, #0x0 + str r0, [sp, #0x8] + mov r0, #0x57 + str r0, [sp, #0x10] + mov r0, #0x8 + str r0, [sp, #0x14] + mov r0, #0x37 + str r0, [sp, #0x18] + mov r0, #0x10 + str r0, [sp, #0x24] + mov r0, #0x1 + str r0, [sp, #0x28] + mov r0, #0x2b + str r0, [sp, #0x34] + mov r0, #0x2d + str r0, [sp, #0x30] + mov r0, #0x2 + str r0, [sp, #0x2c] +_020CA530: + ldrsb r1, [r9, #0x0] + and r0, r1, #0xff + eor r0, r0, #0x20 + sub r0, r0, #0xa1 + cmp r0, #0x3c + bhs _020CA56C + add r0, sp, #0x54 + bl string_put_char + ldrsb r1, [r9, #0x1]! + cmp r1, #0x0 + beq _020CAD0C + add r0, sp, #0x54 + add r9, r9, #0x1 + bl string_put_char + b _020CAD0C +_020CA56C: + cmp r1, #0x25 + beq _020CA584 + add r0, sp, #0x54 + add r9, r9, #0x1 + bl string_put_char + b _020CAD0C +_020CA584: + ldr r6, [sp, #0x4] + ldr r5, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r0, [sp, #0x10] + mov r10, r6 + mov r3, r9 +_020CA59C: + ldrsb r4, [r9, #0x1]! + cmp r4, #0x20 + bgt _020CA5B4 + cmp r4, #0x20 + beq _020CA5F4 + b _020CA60C +_020CA5B4: + cmp r4, #0x30 + bgt _020CA60C + cmp r4, #0x2b + blt _020CA60C + cmp r4, #0x2b + beq _020CA5E0 + cmp r4, #0x2d + beq _020CA5FC + cmp r4, #0x30 + beq _020CA604 + b _020CA60C +_020CA5E0: + ldrsb r1, [r9, #-0x1] + cmp r1, #0x20 + bne _020CA60C + orr r6, r6, #0x2 + b _020CA59C +_020CA5F4: + orr r6, r6, #0x1 + b _020CA59C +_020CA5FC: + orr r6, r6, #0x8 + b _020CA59C +_020CA604: + orr r6, r6, #0x10 + b _020CA59C +_020CA60C: + cmp r4, #0x2a + bne _020CA640 + add r11, r11, #0x4 + ldr r10, [r11, #-0x4] + add r9, r9, #0x1 + cmp r10, #0x0 + rsblt r10, r10, #0x0 + orrlt r6, r6, #0x8 + b _020CA654 +_020CA630: + ldrsb r4, [r9], #0x1 + mov r1, #0xa + mla r1, r10, r1, r4 + sub r10, r1, #0x30 +_020CA640: + ldrsb r1, [r9, #0x0] + cmp r1, #0x30 + blt _020CA654 + cmp r1, #0x39 + ble _020CA630 +_020CA654: + ldrsb r1, [r9, #0x0] + cmp r1, #0x2e + bne _020CA6AC + ldrsb r1, [r9, #0x1]! + ldr r5, [sp, #0x4] + cmp r1, #0x2a + bne _020CA698 + add r11, r11, #0x4 + ldr r5, [r11, #-0x4] + add r9, r9, #0x1 + cmp r5, #0x0 + ldrlt r5, [sp, #0x8] + b _020CA6AC +_020CA688: + ldrsb r4, [r9], #0x1 + mov r1, #0xa + mla r1, r5, r1, r4 + sub r5, r1, #0x30 +_020CA698: + ldrsb r1, [r9, #0x0] + cmp r1, #0x30 + blt _020CA6AC + cmp r1, #0x39 + ble _020CA688 +_020CA6AC: + ldrsb r1, [r9, #0x0] + cmp r1, #0x68 + beq _020CA6C4 + cmp r1, #0x6c + beq _020CA6DC + b _020CA6F0 +_020CA6C4: + ldrsb r1, [r9, #0x1]! + cmp r1, #0x68 + orrne r6, r6, #0x40 + addeq r9, r9, #0x1 + orreq r6, r6, #0x100 + b _020CA6F0 +_020CA6DC: + ldrsb r1, [r9, #0x1]! + cmp r1, #0x6c + orrne r6, r6, #0x20 + addeq r9, r9, #0x1 + orreq r6, r6, #0x80 +_020CA6F0: + ldrsb r1, [r9, #0x0] + cmp r1, #0x69 + bgt _020CA740 + cmp r1, #0x63 + blt _020CA720 + cmp r1, #0x63 + beq _020CA7B4 + cmp r1, #0x64 + beq _020CA96C + cmp r1, #0x69 + beq _020CA96C + b _020CA950 +_020CA720: + cmp r1, #0x25 + bgt _020CA734 + cmp r1, #0x25 + beq _020CA934 + b _020CA950 +_020CA734: + cmp r1, #0x58 + beq _020CA7A0 + b _020CA950 +_020CA740: + cmp r1, #0x6e + bgt _020CA754 + cmp r1, #0x6e + beq _020CA8DC + b _020CA950 +_020CA754: + sub r1, r1, #0x6f + cmp r1, #0x9 + addls pc, pc, r1, lsl #0x2 + b _020CA950 +_020CA764: + b _020CA78C + b _020CA7A8 + b _020CA950 + b _020CA950 + b _020CA828 + b _020CA950 + b _020CA798 + b _020CA950 + b _020CA950 + b _020CA964 +_020CA78C: + ldr r2, [sp, #0x14] + orr r6, r6, #0x1000 + b _020CA96C +_020CA798: + orr r6, r6, #0x1000 + b _020CA96C +_020CA7A0: + ldr r0, [sp, #0x18] + b _020CA964 +_020CA7A8: + orr r6, r6, #0x4 + ldr r5, [sp, #0x14] + b _020CA964 +_020CA7B4: + cmp r5, #0x0 + bge _020CA950 + ands r0, r6, #0x8 + add r11, r11, #0x4 + ldr r4, [r11, #-0x4] + beq _020CA7F0 + mov r0, r4, lsl #0x18 + mov r1, r0, asr #0x18 + add r0, sp, #0x54 + bl string_put_char + ldr r1, [sp, #0x1c] + sub r2, r10, #0x1 + add r0, sp, #0x54 + bl string_fill_char + b _020CA820 +_020CA7F0: + ands r0, r6, #0x10 + ldrne r0, [sp, #0x20] + sub r2, r10, #0x1 + ldreq r0, [sp, #0x1c] + mov r0, r0, lsl #0x18 + mov r1, r0, asr #0x18 + add r0, sp, #0x54 + bl string_fill_char + mov r0, r4, lsl #0x18 + mov r1, r0, asr #0x18 + add r0, sp, #0x54 + bl string_put_char +_020CA820: + add r9, r9, #0x1 + b _020CAD0C +_020CA828: + add fp, fp, #0x4 + cmp r5, #0x0 + ldr r7, [sp, #0x4] + ldr r4, [fp, #-0x4] + bge _020CA860 + ldrsb r0, [r4] + cmp r0, #0x0 + beq _020CA874 +_020CA848: + add r7, r7, #0x1 + ldrsb r0, [r4, r7] + cmp r0, #0x0 + bne _020CA848 + b _020CA874 +_020CA85C: + add r7, r7, #0x1 +_020CA860: + cmp r7, r5 + bge _020CA874 + ldrsb r0, [r4, r7] + cmp r0, #0x0 + bne _020CA85C +_020CA874: + ands r0, r6, #0x8 + sub sl, sl, r7 + beq _020CA8A4 + mov r1, r4 + mov r2, r7 + add r0, sp, #0x54 + bl string_put_string + ldr r1, [sp, #0x1C] + mov r2, sl + add r0, sp, #0x54 + bl string_fill_char + b _020CA8D4 +_020CA8A4: + ands r0, r6, #0x10 + ldrne r0, [sp, #0x20] + mov r2, sl + ldreq r0, [sp, #0x1C] + mov r0, r0, lsl #0x18 + mov r1, r0, asr #0x18 + add r0, sp, #0x54 + bl string_fill_char + mov r1, r4 + mov r2, r7 + add r0, sp, #0x54 + bl string_put_string +_020CA8D4: + add r9, r9, #0x1 + b _020CAD0C +_020CA8DC: + ands r0, r6, #0x100 + ldr r1, [sp, #0x58] + ldr r0, [sp, #0x5c] + sub r2, r1, r0 + bne _020CA92C + ands r0, r6, #0x40 + addne r11, r11, #0x4 + ldrne r0, [r11, #-0x4] + strneh r2, [r0, #0x0] + bne _020CA92C + ands r0, r6, #0x80 + addeq r11, r11, #0x4 + ldreq r0, [r11, #-0x4] + streq r2, [r0, #0x0] + beq _020CA92C + add r11, r11, #0x4 + ldr r0, [r11, #-0x4] + mov r1, r2, asr #0x1f + str r2, [r0, #0x0] + str r1, [r0, #0x4] +_020CA92C: + add r9, r9, #0x1 + b _020CAD0C +_020CA934: + add r0, r3, #0x1 + cmp r0, r9 + bne _020CA950 + add r0, sp, #0x54 + add r9, r9, #0x1 + bl string_put_char + b _020CAD0C +_020CA950: + add r0, sp, #0x54 + mov r1, r3 + sub r2, r9, r3 + bl string_put_string + b _020CAD0C +_020CA964: + ldr r2, [sp, #0x24] + orr r6, r6, #0x1000 +_020CA96C: + ands r1, r6, #0x8 + bicne r6, r6, #0x10 + cmp r5, #0x0 + bicge r6, r6, #0x10 + ldrlt r5, [sp, #0x28] + ldr r7, [sp, #0x4] + ands r1, r6, #0x1000 + beq _020CAA20 + ands r1, r6, #0x100 + addne r11, r11, #0x4 + ldrneb r4, [r11, #-0x4] + movne r1, #0x0 + bne _020CA9D0 + ands r1, r6, #0x40 + addne r11, r11, #0x4 + ldrneh r4, [r11, #-0x4] + movne r1, #0x0 + bne _020CA9D0 + ands r1, r6, #0x80 + addne r11, r11, #0x8 + ldrne r1, [r11, #-0x4] + ldrne r4, [r11, #-0x8] + addeq r11, r11, #0x4 + ldreq r4, [r11, #-0x4] + moveq r1, #0x0 +_020CA9D0: + bic r6, r6, #0x3 + ands r3, r6, #0x4 + beq _020CAAD8 + cmp r2, #0x10 + bne _020CAA0C + mov r3, #0x0 + cmp r1, r3 + cmpeq r4, r3 + beq _020CAAD8 + ldr r3, [sp, #0x20] + ldr r7, [sp, #0x2c] + strb r3, [sp, #0x39] + add r3, r0, #0x21 + strb r3, [sp, #0x38] + b _020CAAD8 +_020CAA0C: + cmp r2, #0x8 + ldreq r3, [sp, #0x20] + ldreq r7, [sp, #0x28] + streqb r3, [sp, #0x38] + b _020CAAD8 +_020CAA20: + ands r1, r6, #0x100 + addne r11, r11, #0x4 + ldrnesb r4, [r11, #-0x4] + movne r1, r4, asr #0x1f + bne _020CAA64 + ands r1, r6, #0x40 + addne r11, r11, #0x4 + ldrnesh r4, [r11, #-0x4] + movne r1, r4, asr #0x1f + bne _020CAA64 + ands r1, r6, #0x80 + addne r11, r11, #0x8 + ldrne r4, [r11, #-0x8] + ldrne r1, [r11, #-0x4] + addeq r11, r11, #0x4 + ldreq r4, [r11, #-0x4] + moveq r1, r4, asr #0x1f +_020CAA64: + mov r3, #0x0 + and r8, r3, #0x0 + cmp r8, r3 + and r8, r1, #0x80000000 + cmpeq r8, r3 + beq _020CAAA0 + ldr r7, [sp, #0x30] + mvn r4, r4 + strb r7, [sp, #0x38] + mvn r7, r1 + mov r1, #0x1 + adds r4, r4, r1 + adc r1, r7, r3 + ldr r7, [sp, #0x28] + b _020CAAD8 +_020CAAA0: + cmp r1, r3 + cmpeq r4, r3 + bne _020CAAB4 + cmp r5, #0x0 + beq _020CAAD8 +_020CAAB4: + ands r3, r6, #0x2 + ldrne r3, [sp, #0x34] + ldrne r7, [sp, #0x28] + strneb r3, [sp, #0x38] + bne _020CAAD8 + ands r3, r6, #0x1 + ldrne r3, [sp, #0x1c] + ldrne r7, [sp, #0x28] + strneb r3, [sp, #0x38] +_020CAAD8: + cmp r2, #0x8 + ldr r8, [sp, #0x4] + beq _020CAAF8 + cmp r2, #0xa + beq _020CAB40 + cmp r2, #0x10 + beq _020CABDC + b _020CAC28 +_020CAAF8: + mov r0, #0x0 + cmp r1, r0 + cmpeq r4, r0 + beq _020CAC28 +_020CAB08: + and r0, r4, #0x7 + add r3, r0, #0x30 + add r0, sp, #0x3a + strb r3, [r0, r8] + mov r4, r4, lsr #0x3 + mov r2, #0x0 + mov r0, r1, lsr #0x3 + orr r4, r4, r1, lsl #0x1d + cmp r0, r2 + cmpeq r4, r2 + mov r1, r0 + add r8, r8, #0x1 + bne _020CAB08 + b _020CAC28 +_020CAB40: + mov r0, #0x0 + cmp r0, r0 + cmpeq r1, r0 + bne _020CAB8C + cmp r4, #0x0 + beq _020CAC28 +_020CAB58: + ldr r0, _020CAD60 ; =0xCCCCCCCD + umull r1, r0, r4, r0 + movs r0, r0, lsr #0x3 + mov r1, #0xa + mul r1, r0, r1 + sub r1, r4, r1 + mov r4, r0 + add r1, r1, #0x30 + add r0, sp, #0x3a + strb r1, [r0, r8] + add r8, r8, #0x1 + bne _020CAB58 + b _020CAC28 +_020CAB8C: + cmp r1, r0 + cmpeq r4, r0 + beq _020CAC28 +_020CAB98: + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x4] + mov r0, r4 + bl _ll_udiv + mov r3, #0xa + umull r3, r12, r0, r3 + subs r3, r4, r3 + mov r2, #0x0 + add r4, r3, #0x30 + add r3, sp, #0x3a + strb r4, [r3, r8] + cmp r1, r2 + cmpeq r0, r2 + mov r4, r0 + add r8, r8, #0x1 + bne _020CAB98 + b _020CAC28 +_020CABDC: + mov r2, #0x0 + cmp r1, r2 + cmpeq r4, r2 + beq _020CAC28 +_020CABEC: + and r3, r4, #0xf + cmp r3, #0xa + mov r4, r4, lsr #0x4 + addlt r3, r3, #0x30 + mov r2, r1, lsr #0x4 + orr r4, r4, r1, lsl #0x1c + mov r1, r2 + addge r3, r3, r0 + add r2, sp, #0x3a + strb r3, [r2, r8] + mov r2, #0x0 + cmp r1, r2 + add r8, r8, #0x1 + cmpeq r4, r2 + bne _020CABEC +_020CAC28: + cmp r7, #0x0 + ble _020CAC4C + ldrsb r0, [sp, #0x38] + cmp r0, #0x30 + ldreq r1, [sp, #0x20] + addeq r0, sp, #0x3a + streqb r1, [r0, r8] + ldreq r7, [sp, #0x4] + addeq r8, r8, #0x1 +_020CAC4C: + sub r5, r5, r8 + ands r0, r6, #0x10 + beq _020CAC68 + sub r0, r10, r8 + sub r0, r0, r7 + cmp r5, r0 + movlt r5, r0 +_020CAC68: + cmp r5, #0x0 + subgt r10, r10, r5 + add r0, r7, r8 + ands r6, r6, #0x8 + sub r10, r10, r0 + bne _020CAC90 + ldr r1, [sp, #0x1c] + add r0, sp, #0x54 + mov r2, r10 + bl string_fill_char +_020CAC90: + cmp r7, #0x0 + ble _020CACB8 + add r0, sp, #0x38 + add r4, r0, r7 +_020CACA0: + ldrsb r1, [r4, #-0x1]! + sub r7, r7, #0x1 + add r0, sp, #0x54 + bl string_put_char +_020CACB0: + cmp r7, #0x0 + bgt _020CACA0 +_020CACB8: + ldr r1, [sp, #0x20] + mov r2, r5 + add r0, sp, #0x54 + bl string_fill_char +_020CACC8: + cmp r8, #0x0 + ble _020CACF0 + add r0, sp, #0x3A + add r4, r0, r8 +_020CACD8: + ldrsb r1, [r4, #-0x1]! + sub r8, r8, #0x1 + add r0, sp, #0x54 + bl string_put_char + cmp r8, #0x0 + bgt _020CACD8 +_020CACF0: + cmp r6, #0x0 + beq _020CAD08 + ldr r1, [sp, #0x1C] + mov r2, sl + add r0, sp, #0x54 + bl string_fill_char +_020CAD08: + add r9, r9, #0x1 +_020CAD0C: + ldrsb r0, [r9, #0x0] + cmp r0, #0x0 + bne _020CA530 +_020CAD18: + ldr r0, [sp, #0x54] + cmp r0, #0x0 + ldrne r0, [sp, #0x58] + movne r1, #0x0 + strneb r1, [r0, #0x0] + bne _020CAD48 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + ldrne r1, [sp, #0x5c] + movne r2, #0x0 + addne r0, r1, r0 + strneb r2, [r0, #-0x1] +_020CAD48: + ldr r1, [sp, #0x58] + ldr r0, [sp, #0x5c] + sub r0, r1, r0 + add sp, sp, #0x64 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020CAD60: .word 0xCCCCCCCD + + arm_func_start OS_SNPrintf +OS_SNPrintf: ; 0x020CAD64 + stmdb sp!, {r0-r3} + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r3, sp, #0x10 + bic r3, r3, #0x3 + ldr r2, [sp, #0x10] + add r3, r3, #0x4 + bl OS_VSNPrintf + add sp, sp, #0x4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start OS_VSPrintf +OS_VSPrintf: ; 0x020CAD94 + ldr ip, _020CADA8 ; =OS_VSNPrintf + mov r3, r2 + mov r2, r1 + mvn r1, #0x80000000 + bx r12 + .balign 4 +_020CADA8: .word OS_VSNPrintf + + arm_func_start OS_SPrintf +OS_SPrintf: ; 0x020CADAC + stmdb sp!, {r0-r3} + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r2, sp, #0xc + bic r2, r2, #0x3 + ldr r1, [sp, #0xc] + add r2, r2, #0x4 + bl OS_VSPrintf + add sp, sp, #0x4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + + arm_func_start string_put_string +string_put_string: ; 0x020CADDC + stmdb sp!, {r4,lr} + cmp r2, #0x0 + ldmleia sp!, {r4,lr} + bxle lr + ldr lr, [r0, #0x0] + mov r4, #0x0 + cmp lr, r2 + movhi lr, r2 + cmp lr, #0x0 + bls _020CAE1C +_020CAE04: + ldrsb r12, [r1, r4] + ldr r3, [r0, #0x4] + strb r12, [r3, r4] + add r4, r4, #0x1 + cmp r4, lr + blo _020CAE04 +_020CAE1C: + ldr r1, [r0, #0x0] + sub r1, r1, lr + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start string_fill_char +string_fill_char: + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + addle sp, sp, #0x4 + ldmleia sp!, {lr} + bxle lr + ldr r12, [r0, #0x0] + mov lr, #0x0 + cmp r12, r2 + movhi r12, r2 + cmp r12, #0x0 + bls _020CAE80 +_020CAE6C: + ldr r3, [r0, #0x4] + strb r1, [r3, lr] + add lr, lr, #0x1 + cmp lr, r12 + blo _020CAE6C +_020CAE80: + ldr r1, [r0, #0x0] + sub r1, r1, r12 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start string_put_char +string_put_char: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + ldrne r2, [r0, #0x4] + strneb r1, [r2, #0x0] + ldrne r1, [r0, #0x0] + subne r1, r1, #0x1 + strne r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, #0x1 + str r1, [r0, #0x4] + bx lr + + arm_func_start OS_IsThreadAvailable +OS_IsThreadAvailable: ; 0x020CAED0 + ldr r0, _020CAEDC ; =OSi_IsThreadInitialized + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020CAEDC: .word OSi_IsThreadInitialized + + arm_func_start OS_SetThreadDestructor +OS_SetThreadDestructor: + str r1, [r0, #0xb4] + bx lr + + arm_func_start OS_EnableScheduler +OS_EnableScheduler: ; 0x020CAEE8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020CAF1C ; =OSi_RescheduleCount + mov r4, #0x0 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + subne r2, r3, #0x1 + movne r4, r3 + strne r2, [r1, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CAF1C: .word OSi_RescheduleCount + + arm_func_start OS_DisableScheduler +OS_DisableScheduler: ; 0x020CAF20 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r2, _020CAF54 ; =OSi_RescheduleCount + mvn r1, #0x0 + ldr r3, [r2, #0x0] + cmp r3, r1 + addcc r1, r3, #0x1 + movcc r4, r3 + strcc r1, [r2, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CAF54: .word OSi_RescheduleCount + + arm_func_start OSi_IdleThreadProc +OSi_IdleThreadProc: ; 0x020CAF58 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_EnableInterrupts +_020CAF64: + bl OS_Halt + b _020CAF64 + + arm_func_start OS_SetSwitchThreadCallback +OS_SetSwitchThreadCallback: ; 0x020CAF6C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020CAF9C ; =OSi_ThreadInfo + ldr r4, [r1, #0xc] + str r5, [r1, #0xc] + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CAF9C: .word OSi_ThreadInfo + + arm_func_start OSi_SleepAlarmCallback +OSi_SleepAlarmCallback: ; 0x020CAFA0 + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + ldr ip, _020CAFBC ; =OS_WakeupThreadDirect + mov r0, r2 + str r1, [r2, #0xb0] + bx r12 + .balign 4 +_020CAFBC: .word OS_WakeupThreadDirect + + arm_func_start OS_Sleep +OS_Sleep: ; 0x020CAFC0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x34 + mov r4, r0 + add r0, sp, #0x8 + bl OS_CreateAlarm + ldr r0, _020CB060 ; =OSi_CurrentThreadPtr + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + str r0, [sp, #0x4] + bl OS_DisableInterrupts + ldr r1, _020CB064 ; =0x000082EA + mov r2, #0x0 + umull r5, r3, r4, r1 + mla r3, r4, r2, r3 + mla r3, r2, r1, r3 + mov r1, r5, lsr #0x6 + mov r4, r0 + ldr r5, [sp, #0x4] + add r0, sp, #0x8 + add r2, sp, #0x4 + str r0, [r5, #0xb0] + str r2, [sp, #0x0] + mov r2, r3, lsr #0x6 + orr r1, r1, r3, lsl #0x1a + ldr r3, _020CB068 ; =OSi_SleepAlarmCallback + bl OS_SetAlarm + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _020CB04C + mov r5, #0x0 +_020CB038: + mov r0, r5 + bl OS_SleepThread + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _020CB038 +_020CB04C: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x34 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CB060: .word OSi_CurrentThreadPtr +_020CB064: .word 0x000082EA +_020CB068: .word OSi_SleepAlarmCallback + + arm_func_start OS_GetThreadPriority +OS_GetThreadPriority: ; 0x020CB06C + ldr r0, [r0, #0x70] + bx lr + + arm_func_start OS_SetThreadPriority +OS_SetThreadPriority: ; 0x020CB074 + stmdb sp!, {r4-r8,lr} + ldr r2, _020CB120 ; =OSi_ThreadInfo + mov r6, r0 + mov r5, r1 + ldr r8, [r2, #0x8] + mov r7, #0x0 + bl OS_DisableInterrupts + mov r4, r0 + b _020CB0A0 +_020CB098: + mov r7, r8 + ldr r8, [r8, #0x68] +_020CB0A0: + cmp r8, #0x0 + beq _020CB0B0 + cmp r8, r6 + bne _020CB098 +_020CB0B0: + cmp r8, #0x0 + beq _020CB0C4 + ldr r0, _020CB124 ; =OSi_IdleThread + cmp r8, r0 + bne _020CB0D8 +_020CB0C4: + mov r0, r4 + bl OS_RestoreInterrupts +_020CB0CC: + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020CB0D8: + ldr r0, [r8, #0x70] + cmp r0, r5 + beq _020CB10C + cmp r7, #0x0 + ldreq r1, [r6, #0x68] + ldreq r0, _020CB120 ; =OSi_ThreadInfo + streq r1, [r0, #0x8] + ldrne r0, [r6, #0x68] + strne r0, [r7, #0x68] + mov r0, r6 + str r5, [r6, #0x70] + bl OSi_InsertThreadToList + bl OSi_RescheduleThread +_020CB10C: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020CB120: .word OSi_ThreadInfo +_020CB124: .word OSi_IdleThread + + arm_func_start OS_YieldThread +OS_YieldThread: ; 0x020CB128 + stmdb sp!, {r4-r8,lr} + ldr r0, _020CB1E0 ; =OSi_ThreadInfo + mov r7, #0x0 + mov r6, r7 + mov r5, r7 + ldr r8, [r0, #0x4] + bl OS_DisableInterrupts + ldr r1, _020CB1E0 ; =OSi_ThreadInfo + mov r4, r0 + ldr r2, [r1, #0x8] + mov r0, r7 + cmp r2, #0x0 + beq _020CB188 + ldr r1, [r8, #0x70] +_020CB160: + cmp r2, r8 + moveq r7, r0 + ldr r0, [r2, #0x70] + cmp r1, r0 + moveq r6, r2 + mov r0, r2 + ldr r2, [r2, #0x68] + addeq r5, r5, #0x1 + cmp r2, #0x0 + bne _020CB160 +_020CB188: + cmp r5, #0x1 + ble _020CB198 + cmp r6, r8 + bne _020CB1A8 +_020CB198: + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr +_020CB1A8: + cmp r7, #0x0 + ldreq r1, [r8, #0x68] + ldreq r0, _020CB1E0 ; =OSi_ThreadInfo + streq r1, [r0, #0x8] + ldrne r0, [r8, #0x68] + strne r0, [r7, #0x68] + ldr r0, [r6, #0x68] + str r0, [r8, #0x68] + str r8, [r6, #0x68] + bl OSi_RescheduleThread + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020CB1E0: .word OSi_ThreadInfo + + arm_func_start OS_RescheduleThread +OS_RescheduleThread: ; 0x020CB1E4 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + bl OSi_RescheduleThread + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + + arm_func_start OS_SelectThread +OS_SelectThread: ; 0x020CB204 + ldr r0, _020CB22C ; =OSi_ThreadInfo + ldr r0, [r0, #0x8] + b _020CB214 +_020CB210: + ldr r0, [r0, #0x68] +_020CB214: + cmp r0, #0x0 + bxeq lr + ldr r1, [r0, #0x64] + cmp r1, #0x1 + bne _020CB210 + bx lr + .balign 4 +_020CB22C: .word OSi_ThreadInfo + + arm_func_start OS_WakeupThreadDirect +OS_WakeupThreadDirect: ; 0x020CB230 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r1, #0x1 + mov r4, r0 + str r1, [r5, #0x64] + bl OSi_RescheduleThread + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start OS_WakeupThread +OS_WakeupThread: ; 0x020CB264 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, [r5, #0x0] + mov r4, r0 + cmp r1, #0x0 + beq _020CB2D0 + cmp r1, #0x0 + beq _020CB2BC + mov r7, #0x1 + mov r6, #0x0 +_020CB294: + mov r0, r5 + bl OSi_RemoveLinkFromQueue + str r7, [r0, #0x64] + str r6, [r0, #0x78] + str r6, [r0, #0x80] + ldr r1, [r0, #0x80] + str r1, [r0, #0x7c] + ldr r0, [r5, #0x0] + cmp r0, #0x0 + bne _020CB294 +_020CB2BC: + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x4] + str r0, [r5, #0x0] + bl OSi_RescheduleThread +_020CB2D0: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start OS_SleepThread +OS_SleepThread: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + bl OS_DisableInterrupts + ldr r1, _020CB334 ; =OSi_CurrentThreadPtr + mov r5, r0 + ldr r0, [r1, #0x0] + cmp r6, #0x0 + ldr r4, [r0, #0x0] + beq _020CB318 + mov r0, r6 + mov r1, r4 + str r6, [r4, #0x78] + bl OSi_InsertLinkToQueue +_020CB318: + mov r0, #0x0 + str r0, [r4, #0x64] + bl OSi_RescheduleThread + mov r0, r5 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020CB334: .word OSi_CurrentThreadPtr + + arm_func_start OS_IsThreadTerminated +OS_IsThreadTerminated: ; 0x020CB338 + ldr r0, [r0, #0x64] + cmp r0, #0x2 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start OS_JoinThread +OS_JoinThread: ; 0x020CB34C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, [r5, #0x64] + mov r4, r0 + cmp r1, #0x2 + beq _020CB374 + add r0, r5, #0x9c + bl OS_SleepThread +_020CB374: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start OSi_CancelThreadAlarmForSleep +OSi_CancelThreadAlarmForSleep: ; 0x020CB388 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0xb0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + bl OS_CancelAlarm + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start OS_DestroyThread +OS_DestroyThread: ; 0x020CB3B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020CB438 ; =OSi_ThreadInfo + mov r4, r0 + ldr r0, [r1, #0x4] + cmp r0, r5 + bne _020CB3DC + bl OSi_ExitThread_Destroy +_020CB3DC: + bl OS_DisableScheduler + mov r0, r5 + bl OSi_UnlockAllMutex + mov r0, r5 + bl OSi_CancelThreadAlarmForSleep + ldr r0, [r5, #0x78] + cmp r0, #0x0 + beq _020CB404 + mov r1, r5 + bl OSi_RemoveSpecifiedLinkFromQueue +_020CB404: + mov r0, r5 + bl OSi_RemoveThreadFromList + mov r1, #0x2 + add r0, r5, #0x9c + str r1, [r5, #0x64] + bl OS_WakeupThread + bl OS_EnableScheduler + mov r0, r4 + bl OS_RestoreInterrupts + bl OS_RescheduleThread + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CB438: .word OSi_ThreadInfo + + arm_func_start OSi_ExitThread_Destroy +OSi_ExitThread_Destroy: ; 0x020CB43C + stmdb sp!, {r4,lr} + ldr r0, _020CB498 ; =OSi_CurrentThreadPtr + ldr r0, [r0, #0x0] + ldr r4, [r0, #0x0] + bl OS_DisableScheduler + mov r0, r4 + bl OSi_UnlockAllMutex + ldr r0, [r4, #0x78] + cmp r0, #0x0 + beq _020CB46C + mov r1, r4 + bl OSi_RemoveSpecifiedLinkFromQueue +_020CB46C: + mov r0, r4 + bl OSi_RemoveThreadFromList + mov r1, #0x2 + add r0, r4, #0x9c + str r1, [r4, #0x64] + bl OS_WakeupThread + bl OS_EnableScheduler + bl OS_RescheduleThread + bl OS_Terminate + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CB498: .word OSi_CurrentThreadPtr + + arm_func_start OSi_ExitThread_Destroy2 +OSi_ExitThread_Destroy2: ; 0x020CB49C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020CB4DC ; =OSi_CurrentThreadPtr + ldr r1, [r1, #0x0] + ldr r3, [r1, #0x0] + ldr r2, [r3, #0xb4] + cmp r2, #0x0 + beq _020CB4CC + mov r1, #0x0 + str r1, [r3, #0xb4] + blx r2 + bl OS_DisableInterrupts +_020CB4CC: + bl OSi_ExitThread_Destroy + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CB4DC: .word OSi_CurrentThreadPtr + + arm_func_start OSi_ExitThread_ArgSpecified +OSi_ExitThread_ArgSpecified: ; 0x020CB4E0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _020CB548 ; =OSi_StackForDestructor + mov r5, r0 + ldr r2, [r2, #0x0] + mov r4, r1 + cmp r2, #0x0 + beq _020CB534 + ldr r1, _020CB54C ; =OSi_ExitThread_Destroy2 + bl OS_InitContext + str r4, [r5, #0x4] + ldr r1, [r5, #0x0] + mov r0, r5 + orr r1, r1, #0x80 + str r1, [r5, #0x0] + mov r1, #0x1 + str r1, [r5, #0x64] + bl OS_LoadContext + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020CB534: + mov r0, r4 + bl OSi_ExitThread_Destroy2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CB548: .word OSi_StackForDestructor +_020CB54C: .word OSi_ExitThread_Destroy2 + + arm_func_start OS_ExitThread +OS_ExitThread: ; 0x020CB550 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r0, _020CB578 ; =OSi_ThreadInfo + mov r1, #0x0 + ldr r0, [r0, #0x4] + bl OSi_ExitThread_ArgSpecified + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CB578: .word OSi_ThreadInfo + + arm_func_start OS_CreateThread +OS_CreateThread: ; 0x020CB57C + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r5, r1 + mov r7, r2 + mov r6, r3 + bl OS_DisableInterrupts + mov r4, r0 + bl OSi_GetUnusedThreadId + ldr r2, [sp, #0x1c] + mov r1, #0x0 + str r2, [r8, #0x70] + str r0, [r8, #0x6c] + str r1, [r8, #0x64] + str r1, [r8, #0x74] + mov r0, r8 + bl OSi_InsertThreadToList + mov r1, r5 + str r6, [r8, #0x94] + ldr r0, [sp, #0x18] + mov r12, #0x0 + sub r5, r6, r0 + sub r2, r6, #0x4 + str r5, [r8, #0x90] + str r12, [r8, #0x98] + ldr r3, _020CB678 ; =0xFDDB597D + ldr r0, [r8, #0x94] + ldr r6, _020CB67C ; =0x7BF9DD5B + str r3, [r0, #-0x4] + ldr r3, [r8, #0x90] + mov r0, r8 + str r6, [r3, #0x0] + str r12, [r8, #0xa0] + ldr r3, [r8, #0xa0] + str r3, [r8, #0x9c] + bl OS_InitContext + str r7, [r8, #0x4] + add r1, r5, #0x4 + ldr r2, _020CB680 ; =OS_ExitThread + mov r0, #0x0 + str r2, [r8, #0x3c] + ldr r2, [sp, #0x18] + sub r2, r2, #0x8 + bl MIi_CpuClear32 + mov r1, #0x0 + str r1, [r8, #0x84] + str r1, [r8, #0x88] + str r1, [r8, #0x8c] + mov r0, r8 + bl OS_SetThreadDestructor +_020CB640: + mov r0, #0x0 + str r0, [r8, #0x78] + str r0, [r8, #0x80] + ldr r2, [r8, #0x80] + add r1, r8, #0xA4 + str r2, [r8, #0x7C] + mov r2, #0xC + bl MIi_CpuClear32 + mov r0, r4 + mov r1, #0x0 + str r1, [r8, #0xB0] + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8, lr} + bx lr +_020CB678: .word 0xFDDB597D +_020CB67C: .word 0x7BF9DD5B +_020CB680: .word OS_ExitThread + + arm_func_start OS_InitThread +OS_InitThread: ; 0x020CB684 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r3, _020CB7A4 ; =OSi_IsThreadInitialized + ldr r0, [r3, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x8 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldr ip, _020CB7A8 ; =0x00000000 + ldr r1, _020CB7AC ; =0x021D3568 + mov lr, #0x0 + ldr r0, _020CB7B0 ; =OSi_ThreadInfo + mov r6, #0x1 + mov r4, #0x10 + str r1, [r0, #0x8] + str r1, [r0, #0x4] + cmp r12, #0x0 + ldrle r0, _020CB7B4 ; =0x027E0080 + str r4, [r1, #0x70] + suble r4, r0, r12 + str lr, [r1, #0x6c] + str r6, [r1, #0x64] + str lr, [r1, #0x68] + str lr, [r1, #0x74] + ldrgt r1, _020CB7B8 ; =0x027E0000 + ldrgt r0, _020CB7BC ; =0x00000400 + addgt r1, r1, #0x3f80 + subgt r0, r1, r0 + subgt r4, r0, r12 + ldr r1, _020CB7B8 ; =0x027E0000 + ldr r5, _020CB7C0 ; =0x021D349C + ldr r2, _020CB7C4 ; =OSi_CurrentThreadPtr + ldr r0, _020CB7BC ; =0x00000400 + str r5, [r2, #0x0] + ldr r2, _020CB7AC ; =0x021D3568 + add r1, r1, #0x3f80 + str r6, [r3, #0x0] + sub r3, r1, r0 + mov r0, #0x0 + ldr r1, _020CB7C8 ; =0xFDDB597D + str r3, [r2, #0x94] + str r4, [r2, #0x90] + str r0, [r2, #0x98] + str r1, [r3, #-0x4] + ldr r3, [r2, #0x90] + ldr ip, _020CB7CC ; =0x7BF9DD5B + ldr r1, _020CB7B0 ; =OSi_ThreadInfo + str r12, [r3, #0x0] + ldr r3, _020CB7D0 ; =0x027FFFA0 + str r0, [r2, #0xa0] + str r0, [r2, #0x9c] + strh r0, [r1, #0x0] + strh r0, [r1, #0x2] + str r1, [r3, #0x0] + bl OS_SetSwitchThreadCallback + mov r2, #0xc8 + str r2, [sp, #0x0] + mov r12, #0x1f + ldr r0, _020CB7D4 ; =OSi_IdleThread + ldr r1, _020CB7D8 ; =OSi_IdleThreadProc + ldr r3, _020CB7DC ; =OSi_Initialized + mov r2, #0x0 + str r12, [sp, #0x4] + bl OS_CreateThread + ldr r0, _020CB7D4 ; =OSi_IdleThread + mov r2, #0x20 + mov r1, #0x1 + str r2, [r0, #0x70] + str r1, [r0, #0x64] + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020CB7A4: .word OSi_IsThreadInitialized +_020CB7A8: .word SDK_SYS_STACKSIZE +_020CB7AC: .word OSi_LauncherThread +_020CB7B0: .word OSi_ThreadInfo +_020CB7B4: .word SDK_SECTION_ARENA_DTCM_START +_020CB7B8: .word SDK_AUTOLOAD_DTCM_START +_020CB7BC: .word SDK_IRQ_STACKSIZE +_020CB7C0: .word OSi_ThreadInfo+4 +_020CB7C4: .word OSi_CurrentThreadPtr +_020CB7C8: .word 0xFDDB597D +_020CB7CC: .word 0x7BF9DD5B +_020CB7D0: .word 0x027FFFA0 +_020CB7D4: .word OSi_IdleThread +_020CB7D8: .word OSi_IdleThreadProc +_020CB7DC: .word OSi_IdleThreadStack+0xc8 + + arm_func_start OSi_RescheduleThread +OSi_RescheduleThread: ; 0x020CB7E0 + stmdb sp!, {r4-r6,lr} + ldr r0, _020CB8BC ; =OSi_RescheduleCount + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldr r4, _020CB8C0 ; =OSi_ThreadInfo + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + bne _020CB814 + bl OS_GetProcMode + cmp r0, #0x12 + bne _020CB824 +_020CB814: + mov r0, #0x1 + strh r0, [r4, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr +_020CB824: + ldr r0, _020CB8C4 ; =OSi_CurrentThreadPtr + ldr r0, [r0, #0x0] + ldr r6, [r0, #0x0] + bl OS_SelectThread + mov r5, r0 + cmp r6, r5 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + cmp r5, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [r6, #0x64] + cmp r0, #0x2 + beq _020CB870 + mov r0, r6 + bl OS_SaveContext +_020CB864: + cmp r0, #0x0 + ldmneia sp!, {r4-r6,lr} + bxne lr +_020CB870: + ldr r0, _020CB8C8 ; =0x021D348C + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _020CB88C + mov r0, r6 + mov r1, r5 + blx r2 +_020CB88C: + ldr r2, [r4, #0xc] + cmp r2, #0x0 + beq _020CB8A4 + mov r0, r6 + mov r1, r5 + blx r2 +_020CB8A4: + ldr r1, _020CB8C0 ; =OSi_ThreadInfo + mov r0, r5 + str r5, [r1, #0x4] + bl OS_LoadContext + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020CB8BC: .word OSi_RescheduleCount +_020CB8C0: .word OSi_ThreadInfo +_020CB8C4: .word OSi_CurrentThreadPtr +_020CB8C8: .word OSi_SystemCallbackInSwitchThread + + arm_func_start OSi_RemoveThreadFromList +OSi_RemoveThreadFromList: ; 0x020CB8CC + ldr r1, _020CB910 ; =OSi_ThreadInfo + mov r2, #0x0 + ldr r1, [r1, #0x8] + b _020CB8E4 +_020CB8DC: + mov r2, r1 + ldr r1, [r1, #0x68] +_020CB8E4: + cmp r1, #0x0 + beq _020CB8F4 + cmp r1, r0 + bne _020CB8DC +_020CB8F4: + cmp r2, #0x0 + ldreq r1, [r0, #0x68] + ldreq r0, _020CB910 ; =OSi_ThreadInfo + streq r1, [r0, #0x8] + ldrne r0, [r0, #0x68] + strne r0, [r2, #0x68] + bx lr + .balign 4 +_020CB910: .word OSi_ThreadInfo + + arm_func_start OSi_InsertThreadToList +OSi_InsertThreadToList: ; 0x020CB914 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020CB978 ; =OSi_ThreadInfo + mov r12, #0x0 + ldr r3, [r1, #0x8] + mov lr, r3 + b _020CB938 +_020CB930: + mov r12, lr + ldr lr, [lr, #0x68] +_020CB938: + cmp lr, #0x0 + beq _020CB950 + ldr r2, [lr, #0x70] + ldr r1, [r0, #0x70] + cmp r2, r1 + blo _020CB930 +_020CB950: + cmp r12, #0x0 + ldreq r1, _020CB978 ; =OSi_ThreadInfo + streq r3, [r0, #0x68] + streq r0, [r1, #0x8] + ldrne r1, [r12, #0x68] + strne r1, [r0, #0x68] + strne r0, [r12, #0x68] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CB978: .word OSi_ThreadInfo + + arm_func_start OSi_RemoveMutexLinkFromQueue +OSi_RemoveMutexLinkFromQueue: ; 0x020CB97C + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _020CB9A4 + ldr r1, [r2, #0x10] + str r1, [r0, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x14] + moveq r1, #0x0 + streq r1, [r0, #0x4] +_020CB9A4: + mov r0, r2 + bx lr + + arm_func_start OSi_RemoveSpecifiedLinkFromQueue +OSi_RemoveSpecifiedLinkFromQueue: ; 0x020CB9AC + ldr r2, [r0, #0x0] + mov r12, r2 + cmp r2, #0x0 + beq _020CB9F8 +_020CB9BC: + cmp r12, r1 + ldr r3, [r12, #0x80] + bne _020CB9EC + cmp r2, r12 + ldr r2, [r12, #0x7c] + streq r3, [r0, #0x0] + strne r3, [r2, #0x80] + ldr r1, [r0, #0x4] + cmp r1, r12 + streq r2, [r0, #0x4] + strne r2, [r3, #0x7c] + b _020CB9F8 +_020CB9EC: + mov r12, r3 + cmp r3, #0x0 + bne _020CB9BC +_020CB9F8: + mov r0, r12 + bx lr + + arm_func_start OSi_RemoveLinkFromQueue +OSi_RemoveLinkFromQueue: ; 0x020CBA00 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _020CBA2C + ldr r1, [r2, #0x80] + str r1, [r0, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x7c] + moveq r1, #0x0 + streq r1, [r0, #0x4] + streq r1, [r2, #0x78] +_020CBA2C: + mov r0, r2 + bx lr + + arm_func_start OSi_InsertLinkToQueue +OSi_InsertLinkToQueue: + ldr r12, [r0, #0x0] + b _020CBA48 +_020CBA3C: + cmp r12, r1 + bxeq lr + ldr r12, [r12, #0x80] +_020CBA48: + cmp r12, #0x0 + beq _020CBA60 + ldr r3, [r12, #0x70] + ldr r2, [r1, #0x70] + cmp r3, r2 + bls _020CBA3C +_020CBA60: + cmp r12, #0x0 + bne _020CBA8C + ldr r2, [r0, #0x4] + cmp r2, #0x0 + streq r1, [r0, #0x0] + strne r1, [r2, #0x80] + str r2, [r1, #0x7c] + mov r2, #0x0 + str r2, [r1, #0x80] + str r1, [r0, #0x4] + bx lr +_020CBA8C: + ldr r2, [r12, #0x7c] + cmp r2, #0x0 + streq r1, [r0, #0x0] + strne r1, [r2, #0x80] + str r2, [r1, #0x7c] + str r12, [r1, #0x80] + str r1, [r12, #0x7c] + bx lr + + arm_func_start OSi_GetUnusedThreadId +OSi_GetUnusedThreadId: ; 0x020CBAAC + ldr r1, _020CBAC0 ; =OSi_ThreadIdCount + ldr r0, [r1, #0x0] + add r0, r0, #0x1 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020CBAC0: .word OSi_ThreadIdCount + + arm_func_start OS_InitContext +OS_InitContext: ; 0x020CBAC4 + add r1, r1, #0x4 + str r1, [r0, #0x40] + str r2, [r0, #0x44] + sub r2, r2, #0x40 + tst r2, #0x4 + subne r2, r2, #0x4 + str r2, [r0, #0x38] + ands r1, r1, #0x1 + movne r1, #0x3f + moveq r1, #0x1f + str r1, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x8] + str r1, [r0, #0xc] + str r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #0x18] + str r1, [r0, #0x1c] + str r1, [r0, #0x20] + str r1, [r0, #0x24] + str r1, [r0, #0x28] + str r1, [r0, #0x2c] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + str r1, [r0, #0x3c] + bx lr + + arm_func_start OS_SaveContext +OS_SaveContext: + stmdb sp!, {r0,lr} + add r0, r0, #0x48 + ldr r1, _020CBB78 ; =CP_SaveContext + blx r1 + ldmia sp!, {r0,lr} + add r1, r0, #0x0 + mrs r2, cpsr + str r2, [r1], #0x4 + mov r0, #0xd3 + msr cpsr_c, r0 + str sp, [r1, #0x40] + msr cpsr_c, r2 + mov r0, #0x1 + stmia r1, {r0-lr} + add r0, pc, #0x8 ; =_020CBB78 + str r0, [r1, #0x3c] + mov r0, #0x0 + bx lr + .balign 4 +_020CBB78: .word CP_SaveContext + + arm_func_start OS_LoadContext +OS_LoadContext: ; 0x020CBB7C + stmdb sp!, {r0,lr} + add r0, r0, #0x48 + ldr r1, _020CBBBC ; =CP_RestoreContext + blx r1 + ldmia sp!, {r0,lr} + mrs r1, cpsr + bic r1, r1, #0x1f + orr r1, r1, #0xd3 + msr cpsr_c, r1 + ldr r1, [r0], #0x4 + msr spsr_fsxc, r1 + ldr sp, [r0, #0x40] + ldr lr, [r0, #0x3c] + ldmia r0, {r0-lr}^ + mov r0, r0 + subs pc, lr, #0x4 + .balign 4 +_020CBBBC: .word CP_RestoreContext + + arm_func_start OS_GetConsoleType +OS_GetConsoleType: ; 0x020CBBC0 + ldr r0, _020CBBD0 ; =0x82000001 + ldr r1, _020CBBD4 ; =0x02106828 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020CBBD0: .word 0x82000001 +_020CBBD4: .word 0x02106828 + + arm_func_start OS_IsRunOnEmulator +OS_IsRunOnEmulator: + mov r0, #0x0 + bx lr + + arm_func_start OS_ReadMessage +OS_ReadMessage: ; 0x020CBBE0 + stmdb sp!, {r4-r8,lr} + mov r6, r0 + mov r5, r1 + mov r7, r2 + bl OS_DisableInterrupts + ldr r1, [r6, #0x1c] + mov r4, r0 + cmp r1, #0x0 + bne _020CBC3C + and r8, r7, #0x1 + add r7, r6, #0x8 +_020CBC0C: + cmp r8, #0x0 + bne _020CBC28 + mov r0, r4 + bl OS_RestoreInterrupts +_020CBC1C: + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020CBC28: + mov r0, r7 + bl OS_SleepThread + ldr r0, [r6, #0x1c] + cmp r0, #0x0 + beq _020CBC0C +_020CBC3C: + cmp r5, #0x0 + ldrne r1, [r6, #0x10] + ldrne r0, [r6, #0x18] + ldrne r0, [r1, r0, lsl #0x2] + strne r0, [r5, #0x0] + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start OS_JamMessage +OS_JamMessage: ; 0x020CBC64 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r7, r2 + bl OS_DisableInterrupts + ldr r1, [r6, #0x14] + ldr r2, [r6, #0x1c] + mov r4, r0 + cmp r1, r2 + bgt _020CBCCC + and r7, r7, #0x1 +_020CBC94: + cmp r7, #0x0 + bne _020CBCB4 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020CBCB4: + mov r0, r6 + bl OS_SleepThread + ldr r1, [r6, #0x14] + ldr r0, [r6, #0x1c] + cmp r1, r0 + ble _020CBC94 +_020CBCCC: + ldr r0, [r6, #0x18] + add r0, r0, r1 + sub r0, r0, #0x1 + bl _s32_div_f + str r1, [r6, #0x18] + ldr r2, [r6, #0x10] + ldr r1, [r6, #0x18] + add r0, r6, #0x8 + str r5, [r2, r1, lsl #0x2] + ldr r1, [r6, #0x1c] + add r1, r1, #0x1 + str r1, [r6, #0x1c] + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start OS_ReceiveMessage +OS_ReceiveMessage: ; 0x020CBD18 + stmdb sp!, {r4-r8,lr} + mov r6, r0 + mov r5, r1 + mov r7, r2 + bl OS_DisableInterrupts + ldr r1, [r6, #0x1c] + mov r4, r0 + cmp r1, #0x0 + bne _020CBD74 + and r8, r7, #0x1 + add r7, r6, #0x8 +_020CBD44: + cmp r8, #0x0 + bne _020CBD60 + mov r0, r4 + bl OS_RestoreInterrupts +_020CBD54: + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020CBD60: + mov r0, r7 + bl OS_SleepThread + ldr r0, [r6, #0x1c] + cmp r0, #0x0 + beq _020CBD44 +_020CBD74: + cmp r5, #0x0 + ldrne r1, [r6, #0x10] + ldrne r0, [r6, #0x18] + ldrne r0, [r1, r0, lsl #0x2] + strne r0, [r5, #0x0] + ldr r0, [r6, #0x18] + ldr r1, [r6, #0x14] + add r0, r0, #0x1 + bl _s32_div_f + str r1, [r6, #0x18] + ldr r1, [r6, #0x1c] + mov r0, r6 + sub r1, r1, #0x1 + str r1, [r6, #0x1c] + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start OS_SendMessage +OS_SendMessage: ; 0x020CBDC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r7, r2 + bl OS_DisableInterrupts + ldr r2, [r6, #0x1c] + ldr r1, [r6, #0x14] + mov r4, r0 + cmp r1, r2 + bgt _020CBE2C + and r7, r7, #0x1 +_020CBDF4: + cmp r7, #0x0 + bne _020CBE14 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020CBE14: + mov r0, r6 + bl OS_SleepThread + ldr r2, [r6, #0x1c] + ldr r1, [r6, #0x14] + cmp r1, r2 + ble _020CBDF4 +_020CBE2C: + ldr r0, [r6, #0x18] + add r0, r0, r2 + bl _s32_div_f + ldr r2, [r6, #0x10] + add r0, r6, #0x8 + str r5, [r2, r1, lsl #0x2] + ldr r1, [r6, #0x1c] + add r1, r1, #0x1 + str r1, [r6, #0x1c] + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start OS_InitMessageQueue +OS_InitMessageQueue: ; 0x020CBE6C + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r0, #0x4] + str r3, [r0, #0x0] + str r12, [r0, #0xc] + ldr r3, [r0, #0xc] + str r3, [r0, #0x8] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r12, [r0, #0x18] + str r12, [r0, #0x1c] + bx lr + + arm_func_start OSi_DequeueItem +OSi_DequeueItem: ; 0x020CBE9C + ldr r2, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r2, #0x0 + streq r1, [r0, #0x8c] + strne r1, [r2, #0x14] + cmp r1, #0x0 + streq r2, [r0, #0x88] + strne r2, [r1, #0x10] + bx lr + + arm_func_start OSi_EnqueueTail +OSi_EnqueueTail: ; 0x020CBEC0 + ldr r2, [r0, #0x8c] + cmp r2, #0x0 + streq r1, [r0, #0x88] + strne r1, [r2, #0x10] + str r2, [r1, #0x14] + mov r2, #0x0 + str r2, [r1, #0x10] + str r1, [r0, #0x8c] + bx lr + + arm_func_start OS_TryLockMutex +OS_TryLockMutex: ; 0x020CBEE4 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + bl OS_DisableInterrupts + ldr r2, [r5, #0x8] + ldr r1, _020CBF54 ; =OSi_ThreadInfo + mov r4, r0 + cmp r2, #0x0 + ldr r0, [r1, #0x4] + bne _020CBF28 + str r0, [r5, #0x8] + ldr r2, [r5, #0xc] + mov r1, r5 + add r2, r2, #0x1 + str r2, [r5, #0xc] + bl OSi_EnqueueTail + mov r6, #0x1 + b _020CBF40 +_020CBF28: + cmp r2, r0 + ldreq r0, [r5, #0xc] + moveq r6, #0x1 + addeq r0, r0, #0x1 + streq r0, [r5, #0xc] + movne r6, #0x0 +_020CBF40: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r6 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020CBF54: .word OSi_ThreadInfo + + arm_func_start OSi_UnlockAllMutex +OSi_UnlockAllMutex: ; 0x020CBF58 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x88] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + add r5, r6, #0x88 + mov r4, #0x0 +_020CBF78: + mov r0, r5 + bl OSi_RemoveMutexLinkFromQueue + str r4, [r0, #0xc] + str r4, [r0, #0x8] + bl OS_WakeupThread + ldr r0, [r6, #0x88] + cmp r0, #0x0 + bne _020CBF78 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start OS_UnlockMutex +OS_UnlockMutex: ; 0x020CBFA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020CC00C ; =OSi_ThreadInfo + mov r4, r0 + ldr r0, [r1, #0x4] + ldr r1, [r5, #0x8] + cmp r1, r0 + bne _020CBFF8 + ldr r1, [r5, #0xc] + sub r1, r1, #0x1 + str r1, [r5, #0xc] + ldr r1, [r5, #0xc] + cmp r1, #0x0 + bne _020CBFF8 + mov r1, r5 + bl OSi_DequeueItem + mov r1, #0x0 + mov r0, r5 + str r1, [r5, #0x8] + bl OS_WakeupThread +_020CBFF8: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CC00C: .word OSi_ThreadInfo + + arm_func_start OS_LockMutex +OS_LockMutex: ; 0x020CC010 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020CC098 ; =OSi_ThreadInfo + mov r4, r0 + ldr r7, [r1, #0x4] + mov r6, #0x0 +_020CC030: + ldr r0, [r5, #0x8] + cmp r0, #0x0 + bne _020CC05C + str r7, [r5, #0x8] + ldr r1, [r5, #0xc] + mov r0, r7 + add r2, r1, #0x1 + mov r1, r5 + str r2, [r5, #0xc] + bl OSi_EnqueueTail + b _020CC084 +_020CC05C: + cmp r0, r7 + ldreq r0, [r5, #0xc] + addeq r0, r0, #0x1 + streq r0, [r5, #0xc] + beq _020CC084 + mov r0, r5 + str r5, [r7, #0x84] + bl OS_SleepThread + str r6, [r7, #0x84] + b _020CC030 +_020CC084: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020CC098: .word OSi_ThreadInfo + + arm_func_start OS_InitMutex +OS_InitMutex: ; 0x020CC09C + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + + arm_func_start DC_InvalidateAll +DC_InvalidateAll: ; 0x020CC0B8 + mov r0, #0x0 + mcr p15, 0x0, r0, c7, c6, 0x0 + bx lr + + arm_func_start DC_StoreAll +DC_StoreAll: ; 0x020CC0C4 + mov r1, #0x0 +_020CC0C8: + mov r0, #0x0 +_020CC0CC: + orr r2, r1, r0 + mcr p15, 0x0, r2, c7, c10, 0x2 + add r0, r0, #0x20 + cmp r0, #0x400 + blt _020CC0CC + add r1, r1, #0x40000000 + cmp r1, #0x0 + bne _020CC0C8 + bx lr + + arm_func_start DC_FlushAll +DC_FlushAll: ; 0x020CC0F0 + mov r12, #0x0 + mov r1, #0x0 +_020CC0F8: + mov r0, #0x0 +_020CC0FC: + orr r2, r1, r0 + mcr p15, 0x0, r12, c7, c10, 0x4 + mcr p15, 0x0, r2, c7, c14, 0x2 + add r0, r0, #0x20 + cmp r0, #0x400 + blt _020CC0FC + add r1, r1, #0x40000000 + cmp r1, #0x0 + bne _020CC0F8 + bx lr + + arm_func_start DC_InvalidateRange +DC_InvalidateRange: ; 0x020CC124 + add r1, r1, r0 + bic r0, r0, #0x1f +_020CC12C: + mcr p15, 0x0, r0, c7, c6, 0x1 + add r0, r0, #0x20 + cmp r0, r1 + blt _020CC12C + bx lr + + arm_func_start DC_StoreRange +DC_StoreRange: ; 0x020CC140 + add r1, r1, r0 + bic r0, r0, #0x1f +_020CC148: + mcr p15, 0x0, r0, c7, c10, 0x1 + add r0, r0, #0x20 + cmp r0, r1 + blt _020CC148 + bx lr + + arm_func_start DC_FlushRange +DC_FlushRange: ; 0x020CC15C + mov r12, #0x0 + add r1, r1, r0 + bic r0, r0, #0x1f +_020CC168: + mcr p15, 0x0, r12, c7, c10, 0x4 + mcr p15, 0x0, r0, c7, c14, 0x1 + add r0, r0, #0x20 + cmp r0, r1 + blt _020CC168 + bx lr + + arm_func_start DC_WaitWriteBufferEmpty +DC_WaitWriteBufferEmpty: ; 0x020CC180 + mov r0, #0x0 + mcr p15, 0x0, r0, c7, c10, 0x4 + bx lr + + arm_func_start IC_InvalidateAll +IC_InvalidateAll: ; 0x020CC18C + mov r0, #0x0 + mcr p15, 0x0, r0, c7, c5, 0x0 + bx lr + + arm_func_start IC_InvalidateRange +IC_InvalidateRange: + add r1, r1, r0 + bic r0, r0, #0x1f +_020CC1A0: + mcr p15, 0x0, r0, c7, c5, 0x1 + add r0, r0, #0x20 + cmp r0, r1 + blt _020CC1A0 + bx lr + + arm_func_start OS_Init +OS_Init: ; 0x020CC1B4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_InitArena + bl PXI_Init + bl OS_InitLock + bl OS_InitArenaEx + bl OS_InitIrqTable + bl OS_SetIrqStackChecker + bl OS_InitException + bl MI_Init + bl OS_InitVAlarm + bl OSi_InitVramExclusive + bl OS_InitThread + bl OS_InitReset + bl CTRDG_Init + bl CARD_Init + bl PM_Init + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start OS_AllocFromArenaHi +OS_AllocFromArenaHi: ; 0x020CC204 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + mov r6, r1 + mov r5, r2 + bl OS_GetArenaHi +_020CC218: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + sub r1, r5, #0x1 + mvn r2, r1 + and r0, r0, r2 + sub r1, r0, r6 + mov r0, r4 + and r5, r1, r2 + bl OS_GetArenaLo + cmp r5, r0 + movcc r0, #0x0 + ldmccia sp!, {r4-r6, lr} + bxcc lr + mov r0, r4 + mov r1, r5 + bl OS_SetArenaHi + mov r0, r5 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start OS_AllocFromArenaLo +OS_AllocFromArenaLo: ; 0x020CC26C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_GetArenaLo +_020CC284: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7, lr} + bxeq lr + add r0, r0, r5 + sub r1, r5, #0x1 + mvn r2, r1 + sub r0, r0, #0x1 + and r4, r2, r0 + add r0, r4, r6 + add r0, r0, r5 + sub r1, r0, #0x1 + mov r0, r7 + and r5, r2, r1 + bl OS_GetArenaHi + cmp r5, r0 + addhi sp, sp, #0x4 + movhi r0, #0x0 + ldmhiia sp!, {r4-r7, lr} + bxhi lr + mov r0, r7 + mov r1, r5 + bl OS_SetArenaLo + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7, lr} + bx lr + + arm_func_start OS_SetArenaLo +OS_SetArenaLo: ; 0x020CC2F4 + mov r0, r0, lsl #0x2 + add r0, r0, #0x2700000 + add r0, r0, #0xff000 + str r1, [r0, #0xda0] + bx lr + + arm_func_start OS_SetArenaHi +OS_SetArenaHi: + mov r0, r0, lsl #0x2 + add r0, r0, #0x2700000 + add r0, r0, #0xff000 + str r1, [r0, #0xdc4] + bx lr + + arm_func_start OS_GetInitArenaLo +OS_GetInitArenaLo: ; 0x020CC31C + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x6 + addls pc, pc, r0, lsl #0x2 + b _020CC3DC +_020CC330: + b _020CC34C + b _020CC3DC + b _020CC35C + b _020CC39C + b _020CC3AC + b _020CC3BC + b _020CC3CC +_020CC34C: + add sp, sp, #0x4 + ldr r0, _020CC3EC ; =0x0225FFA0 + ldmfd sp!, {lr} + bx lr +_020CC35C: + ldr r0, _020CC3F0 ; =OSi_MainExArenaEnabled + ldr r0, [r0] + cmp r0, #0x0 + beq _020CC37C + bl OS_GetConsoleType + and r0, r0, #0x3 + cmp r0, #0x1 + bne _020CC38C +_020CC37C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmfd sp!, {lr} + bx lr +_020CC38C: + add sp, sp, #0x4 + ldr r0, _020CC3F4 ; =0x023E0000 + ldmfd sp!, {lr} + bx lr +_020CC39C: + add sp, sp, #0x4 + ldr r0, _020CC3F8 ; =0x01FF8720 + ldmfd sp!, {lr} + bx lr +_020CC3AC: + add sp, sp, #0x4 + ldr r0, _020CC3FC ; =0x027E0080 + ldmfd sp!, {lr} + bx lr +_020CC3BC: + add sp, sp, #0x4 + ldr r0, _020CC400 ; =0x027FF000 + ldmfd sp!, {lr} + bx lr +_020CC3CC: + add sp, sp, #0x4 + ldr r0, _020CC404 ; =0x037F8000 + ldmfd sp!, {lr} + bx lr +_020CC3DC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020CC3EC: .word SDK_MAIN_ARENA_LO +_020CC3F0: .word OSi_MainExArenaEnabled +_020CC3F4: .word SDK_SECTION_ARENA_EX_START +_020CC3F8: .word SDK_SECTION_ARENA_ITCM_START +_020CC3FC: .word SDK_SECTION_ARENA_DTCM_START +_020CC400: .word 0x027FF000 +_020CC404: .word 0x037F8000 + + arm_func_start OS_GetInitArenaHi +OS_GetInitArenaHi: ; 0x020CC408 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x6 + addls pc, pc, r0, lsl #0x2 + b _020CC508 +_020CC41C: + b _020CC438 + b _020CC508 + b _020CC448 + b _020CC488 + b _020CC498 + b _020CC4E8 + b _020CC4F8 +_020CC438: + add sp, sp, #0x4 + ldr r0, _020CC518 ; =0x023E0000 + ldmfd sp!, {lr} + bx lr +_020CC448: + ldr r0, _020CC51C ; =OSi_MainExArenaEnabled + ldr r0, [r0] + cmp r0, #0x0 + beq _020CC468 + bl OS_GetConsoleType + and r0, r0, #0x3 + cmp r0, #0x1 + bne _020CC478 +_020CC468: + add sp, sp, #0x4 + mov r0, #0x0 + ldmfd sp!, {lr} + bx lr +_020CC478: + add sp, sp, #0x4 + mov r0, #0x2700000 + ldmfd sp!, {lr} + bx lr +_020CC488: + add sp, sp, #0x4 + mov r0, #0x2000000 + ldmfd sp!, {lr} + bx lr +_020CC498: + ldr r0, _020CC520 ; =0x027E0000 + ldr r1, _020CC524 ; =0x00000000 + ldr r2, _020CC528 ; =0x00000400 + add r3, r0, #0x3f80 + cmp r1, #0x0 + sub r2, r3, r2 + bne _020CC4CC + ldr r1, _020CC52C ; =0x027E0080 + add sp, sp, #0x4 + cmp r0, r1 + movcc r0, r1 + ldmfd sp!, {lr} + bx lr +_020CC4CC: + cmp r1, #0x0 + ldrlt r0, _020CC52C ; =0x027E0080 + add sp, sp, #0x4 + sublt r0, r0, r1 + subge r0, r2, r1 + ldmfd sp!, {lr} + bx lr +_020CC4E8: + add sp, sp, #0x4 + ldr r0, _020CC530 ; =0x027FF680 + ldmfd sp!, {lr} + bx lr +_020CC4F8: + add sp, sp, #0x4 + ldr r0, _020CC534 ; =0x037F8000 + ldmfd sp!, {lr} + bx lr +_020CC508: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020CC518: .word 0x023E0000 +_020CC51C: .word OSi_MainExArenaEnabled +_020CC520: .word 0x027E0000 +_020CC524: .word 0x00000000 +_020CC528: .word 0x00000400 +_020CC52C: .word 0x027E0080 +_020CC530: .word 0x027FF680 +_020CC534: .word 0x037F8000 + + arm_func_start OS_GetArenaLo +OS_GetArenaLo: + mov r0, r0, lsl #0x2 + add r0, r0, #0x2700000 + add r0, r0, #0xff000 + ldr r0, [r0, #0xda0] + bx lr + + arm_func_start OS_GetArenaHi +OS_GetArenaHi: + mov r0, r0, lsl #0x2 + add r0, r0, #0x2700000 + add r0, r0, #0xff000 + ldr r0, [r0, #0xdc4] + bx lr + + arm_func_start OS_InitArenaEx +OS_InitArenaEx: ; 0x020CC560 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, #0x2 + bl OS_GetInitArenaHi + mov r1, r0 + mov r0, #0x2 + bl OS_SetArenaHi + mov r0, #0x2 + bl OS_GetInitArenaLo + mov r1, r0 + mov r0, #0x2 + bl OS_SetArenaLo + ldr r0, _020CC5D4 ; =OSi_MainExArenaEnabled + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020CC5B8 + bl OS_GetConsoleType + and r0, r0, #0x3 + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr +_020CC5B8: + ldr r0, _020CC5D8 ; =0x0200002B + bl OS_SetProtectionRegion1 + ldr r0, _020CC5DC ; =0x023E0021 + bl OS_SetProtectionRegion2 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CC5D4: .word OSi_MainExArenaEnabled +_020CC5D8: .word 0x0200002B +_020CC5DC: .word 0x023E0021 + + arm_func_start OS_InitArena +OS_InitArena: ; 0x020CC5E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020CC6F4 ; =OSi_Initialized + ldr r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r2, #0x1 + mov r0, #0x0 + str r2, [r1, #0x0] + bl OS_GetInitArenaHi + mov r1, r0 + mov r0, #0x0 + bl OS_SetArenaHi +_020CC61C: + mov r0, #0x0 + bl OS_GetInitArenaLo + mov r1, r0 + mov r0, #0x0 + bl OS_SetArenaLo + mov r0, #0x2 + mov r1, #0x0 + bl OS_SetArenaLo + mov r0, #0x2 + mov r1, #0x0 + bl OS_SetArenaHi + mov r0, #0x3 + bl OS_GetInitArenaHi + mov r1, r0 + mov r0, #0x3 + bl OS_SetArenaHi + mov r0, #0x3 + bl OS_GetInitArenaLo + mov r1, r0 + mov r0, #0x3 + bl OS_SetArenaLo + mov r0, #0x4 + bl OS_GetInitArenaHi + mov r1, r0 + mov r0, #0x4 + bl OS_SetArenaHi + mov r0, #0x4 + bl OS_GetInitArenaLo + mov r1, r0 + mov r0, #0x4 + bl OS_SetArenaLo + mov r0, #0x5 + bl OS_GetInitArenaHi + mov r1, r0 + mov r0, #0x5 + bl OS_SetArenaHi + mov r0, #0x5 + bl OS_GetInitArenaLo + mov r1, r0 + mov r0, #0x5 + bl OS_SetArenaLo + mov r0, #0x6 + bl OS_GetInitArenaHi + mov r1, r0 + mov r0, #0x6 + bl OS_SetArenaHi + mov r0, #0x6 + bl OS_GetInitArenaLo + mov r1, r0 + mov r0, #0x6 + bl OS_SetArenaLo + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr +_020CC6F4: .word OSi_Initialized + + arm_func_start OS_FreeToHeap +OS_FreeToHeap: ; 0x020CC6F8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r5, r1 + mov r4, r2 + bl OS_DisableInterrupts + ldr r1, _020CC768 ; =OSi_HeapInfo + mov r6, r0 + ldr r0, [r1, r7, lsl #0x2] + cmp r5, #0x0 + ldrlt r5, [r0, #0x0] + ldr r1, [r0, #0x10] + mov r0, #0xc + mla r7, r5, r0, r1 + sub r4, r4, #0x20 + ldr r0, [r7, #0x8] + mov r1, r4 + bl DLExtract + str r0, [r7, #0x8] + ldr r0, [r7, #0x4] + mov r1, r4 + bl DLInsert + str r0, [r7, #0x4] + mov r0, r6 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020CC768: .word OSi_HeapInfo + + arm_func_start OS_AllocFromHeap +OS_AllocFromHeap: ; 0x020CC76C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r7, r2 + bl OS_DisableInterrupts + ldr r1, _020CC894 ; =OSi_HeapInfo + mov r4, r0 + ldr r1, [r1, r6, lsl #0x2] + cmp r1, #0x0 + bne _020CC7AC + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020CC7AC: + cmp r5, #0x0 + ldrlt r5, [r1, #0x0] + ldr r1, [r1, #0x10] + mov r0, #0xc + mla r6, r5, r0, r1 + ldr r0, [r6, #0x4] + add r1, r7, #0x20 + add r1, r1, #0x1f + mov r5, r0 + cmp r0, #0x0 + bic r7, r1, #0x1f + beq _020CC7F4 +_020CC7DC: + ldr r1, [r5, #0x8] + cmp r7, r1 + ble _020CC7F4 + ldr r5, [r5, #0x4] + cmp r5, #0x0 + bne _020CC7DC +_020CC7F4: + cmp r5, #0x0 + bne _020CC814 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020CC814: + ldr r1, [r5, #0x8] + sub r1, r1, r7 + cmp r1, #0x40 + bhs _020CC834 + mov r1, r5 + bl DLExtract + str r0, [r6, #0x4] + b _020CC86C +_020CC834: + str r7, [r5, #0x8] + add r2, r5, r7 + str r1, [r2, #0x8] + ldr r0, [r5, #0x0] + str r0, [r5, r7] + ldr r0, [r5, #0x4] + str r0, [r2, #0x4] + ldr r0, [r2, #0x4] + cmp r0, #0x0 + strne r2, [r0, #0x0] + ldr r0, [r2, #0x0] + cmp r0, #0x0 + strne r2, [r0, #0x4] + streq r2, [r6, #0x4] +_020CC86C: + ldr r0, [r6, #0x8] + mov r1, r5 + bl DLAddFront + str r0, [r6, #0x8] + mov r0, r4 + bl OS_RestoreInterrupts + add r0, r5, #0x20 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020CC894: .word OSi_HeapInfo + + arm_func_start DLInsert +DLInsert: ; 0x020CC898 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, r0 + cmp r0, #0x0 + mov lr, #0x0 + beq _020CC8C8 +_020CC8B0: + cmp r1, r12 + bls _020CC8C8 + mov lr, r12 + ldr r12, [r12, #0x4] + cmp r12, #0x0 + bne _020CC8B0 +_020CC8C8: + str r12, [r1, #0x4] + str lr, [r1, #0x0] + cmp r12, #0x0 + beq _020CC908 + str r1, [r12, #0x0] + ldr r3, [r1, #0x8] + add r2, r1, r3 + cmp r2, r12 + bne _020CC908 + ldr r2, [r12, #0x8] + add r2, r3, r2 + str r2, [r1, #0x8] + ldr r12, [r12, #0x4] + str r12, [r1, #0x4] + cmp r12, #0x0 + strne r1, [r12, #0x0] +_020CC908: + cmp lr, #0x0 + beq _020CC950 + str r1, [lr, #0x4] + ldr r2, [lr, #0x8] + add r3, lr, r2 + cmp r3, r1 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r1, [r1, #0x8] + add sp, sp, #0x4 + add r1, r2, r1 + str r1, [lr, #0x8] + str r12, [lr, #0x4] + cmp r12, #0x0 + strne lr, [r12, #0x0] + ldmia sp!, {lr} + bx lr +_020CC950: + mov r0, r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start DLExtract +DLExtract: ; 0x020CC960 + ldr r3, [r1, #0x4] + cmp r3, #0x0 + ldrne r2, [r1, #0x0] + strne r2, [r3, #0x0] + ldr r2, [r1, #0x0] + cmp r2, #0x0 + ldreq r0, [r1, #0x4] + ldrne r1, [r1, #0x4] + strne r1, [r2, #0x4] + bx lr + + arm_func_start DLAddFront +DLAddFront: ; 0x020CC988 + str r0, [r1, #0x4] + mov r2, #0x0 + str r2, [r1, #0x0] + cmp r0, #0x0 + strne r1, [r0, #0x0] + mov r0, r1 + bx lr + + arm_func_start OS_GetDTCMAddress +OS_GetDTCMAddress: ; 0x020CC9A4 + mrc p15, 0x0, r0, c9, c1, 0x0 + ldr r1, _020CC9B4 ; =0xFFFFF000 + and r0, r0, r1 + bx lr + .balign 4 +_020CC9B4: .word 0xFFFFF000 + + arm_func_start OS_EnableProtectionUnit +OS_EnableProtectionUnit: ; 0x020CC9B8 + mrc p15, 0x0, r0, c1, c0, 0x0 + orr r0, r0, #0x1 + mcr p15, 0x0, r0, c1, c0, 0x0 + bx lr + + arm_func_start OS_DisableProtectionUnit +OS_DisableProtectionUnit: ; 0x020CC9C8 + mrc p15, 0x0, r0, c1, c0, 0x0 + bic r0, r0, #0x1 + mcr p15, 0x0, r0, c1, c0, 0x0 + bx lr + + arm_func_start OS_SetDPermissionsForProtectionRegion +OS_SetDPermissionsForProtectionRegion: ; 0x020CC9D8 + mrc p15, 0x0, r2, c5, c0, 0x2 + bic r2, r2, r0 + orr r2, r2, r1 + mcr p15, 0x0, r2, c5, c0, 0x2 + bx lr + + arm_func_start OS_SetProtectionRegion1 +OS_SetProtectionRegion1: ; 0x020CC9EC + mcr p15, 0x0, r0, c6, c1, 0x0 + bx lr + + arm_func_start OS_SetProtectionRegion2 +OS_SetProtectionRegion2: ; 0x020CC9F4 + mcr p15, 0x0, r0, c6, c2, 0x0 + bx lr + + arm_func_start OSi_ExceptionHandler +OSi_ExceptionHandler: ; 0x020CC9FC + ldr ip, _020CCA68 ; =OSi_DebuggerHandler + ldr r12, [r12, #0x0] + cmp r12, #0x0 + movne lr, pc + bxne r12 + ldr ip, _020CCA6C ; =0x02000000 + stmdb r12!, {r0-r3,sp-lr} + and r0, sp, #0x1 + mov sp, r12 + mrs r1, cpsr + and r1, r1, #0x1f + teq r1, #0x17 + bne _020CCA38 + bl OSi_GetAndDisplayContext + b _020CCA44 +_020CCA38: + teq r1, #0x1b + bne _020CCA44 + bl OSi_GetAndDisplayContext +_020CCA44: + ldr ip, _020CCA68 ; =OSi_DebuggerHandler + ldr r12, [r12, #0x0] + cmp r12, #0x0 +_020CCA50: + beq _020CCA50 +_020CCA54: + mov r0, r0 + b _020CCA54 +_020CCA5C: + ldmia sp!, {r0-r3,ip,lr} + mov sp, ip + bx lr +_020CCA68: .word OSi_DebuggerHandler +_020CCA6C: .word 0x02000000 + + arm_func_start OSi_GetAndDisplayContext +OSi_GetAndDisplayContext: ; 0x020CCA70 + stmdb sp!, {r0,lr} + bl OSi_SetExContext + bl OSi_DisplayExContext + ldmia sp!, {r0,lr} + bx lr + + arm_func_start OSi_SetExContext +OSi_SetExContext: ; 0x020CCA84 + ldr r1, _020CCB10 ; =OSi_ExContext + mrs r2, cpsr + str r2, [r1, #0x74] + str r0, [r1, #0x6c] + ldr r0, [r12, #0x0] + str r0, [r1, #0x4] + ldr r0, [r12, #0x4] + str r0, [r1, #0x8] + ldr r0, [r12, #0x8] + str r0, [r1, #0xc] + ldr r0, [r12, #0xc] + str r0, [r1, #0x10] + ldr r2, [r12, #0x10] + bic r2, r2, #0x1 + add r0, r1, #0x14 + stmia r0, {r4-r11} + str r12, [r1, #0x70] + ldr r0, [r2, #0x0] + str r0, [r1, #0x64] + ldr r3, [r2, #0x4] + str r3, [r1, #0x0] + ldr r0, [r2, #0x8] + str r0, [r1, #0x34] + ldr r0, [r2, #0xc] + str r0, [r1, #0x40] + mrs r0, cpsr + orr r3, r3, #0x80 + bic r3, r3, #0x20 + msr cpsr_fsxc, r3 + str sp, [r1, #0x38] + str lr, [r1, #0x3c] + mrs r2, spsr + str r2, [r1, #0x7c] + msr cpsr_fsxc, r0 + bx lr + .balign 4 +_020CCB10: .word OSi_ExContext + + arm_func_start OSi_DisplayExContext +OSi_DisplayExContext: ; 0x020CCB14 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020CCB70 ; =OSi_UserExceptionHandler + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + mov r0, sp + ldr r1, _020CCB74 ; =0x0000009F + msr cpsr_fsxc, r1 + mov sp, r0 + bl OS_EnableProtectionUnit + ldr r1, _020CCB78 ; =OSi_UserExceptionHandlerArg + ldr r0, _020CCB70 ; =OSi_UserExceptionHandler + ldr r1, [r1, #0x0] + ldr r2, [r0, #0x0] + ldr r0, _020CCB7C ; =OSi_ExContext + blx r2 + bl OS_DisableProtectionUnit + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CCB70: .word OSi_UserExceptionHandler +_020CCB74: .word 0x0000009F +_020CCB78: .word OSi_UserExceptionHandlerArg +_020CCB7C: .word OSi_ExContext + + arm_func_start OS_InitException +OS_InitException: ; 0x020CCB80 + ldr r0, _020CCBDC ; =0x027FFD9C + ldr r1, [r0, #0x0] + cmp r1, #0x2600000 + blo _020CCBA0 + cmp r1, #0x2800000 + ldrlo r0, _020CCBE0 ; =OSi_DebuggerHandler + strcc r1, [r0, #0x0] + blo _020CCBAC +_020CCBA0: + ldr r0, _020CCBE0 ; =OSi_DebuggerHandler + mov r1, #0x0 + str r1, [r0, #0x0] +_020CCBAC: + ldr r0, _020CCBE0 ; =OSi_DebuggerHandler + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r2, _020CCBE4 ; =OSi_ExceptionHandler + ldreq r1, _020CCBDC ; =0x027FFD9C + ldreq r0, _020CCBE8 ; =0x027E3000 + streq r2, [r1, #0x0] + streq r2, [r0, #0xfdc] + ldr r0, _020CCBEC ; =OSi_UserExceptionHandler + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020CCBDC: .word 0x027FFD9C +_020CCBE0: .word OSi_DebuggerHandler +_020CCBE4: .word OSi_ExceptionHandler +_020CCBE8: .word 0x027E3000 +_020CCBEC: .word OSi_UserExceptionHandler + + arm_func_start OSi_SetTimerReserved +OSi_SetTimerReserved: ; 0x020CCBF0 + ldr r1, _020CCC08 ; =OSi_TimerReserved + mov r2, #0x1 + ldrh r3, [r1, #0x0] + orr r0, r3, r2, lsl r0 + strh r0, [r1, #0x0] + bx lr + .balign 4 +_020CCC08: .word OSi_TimerReserved + + arm_func_start OS_GetTickLo +OS_GetTickLo: ; 0x020CCC0C + ldr r0, _020CCC18 ; =0x04000100 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_020CCC18: .word 0x04000100 + + arm_func_start OS_GetTick +OS_GetTick: ; 0x020CCC1C + stmdb sp!, {lr} + sub sp, sp, #0xc + bl OS_DisableInterrupts + ldr r1, _020CCCBC ; =0x04000100 + ldr r3, _020CCCC0 ; =OSi_TickCounter + ldrh r12, [r1, #0x0] + ldr r2, _020CCCC4 ; =0x0000FFFF + mvn r1, #0x0 + strh r12, [sp, #0x0] + ldr r12, [r3, #0x0] + ldr r3, [r3, #0x4] + and r1, r12, r1 + and r2, r3, r2 + str r1, [sp, #0x4] + ldr r1, _020CCCC8 ; =0x04000214 + str r2, [sp, #0x8] + ldr r1, [r1, #0x0] + ands r1, r1, #0x8 + beq _020CCC90 + ldrh r1, [sp, #0x0] + ands r1, r1, #0x8000 + bne _020CCC90 + ldr r3, [sp, #0x4] + mov r1, #0x1 + ldr r2, [sp, #0x8] + adds r3, r3, r1 + adc r1, r2, #0x0 + str r3, [sp, #0x4] + str r1, [sp, #0x8] +_020CCC90: + bl OS_RestoreInterrupts + ldr r2, [sp, #0x4] + ldr r1, [sp, #0x8] + ldrh r0, [sp, #0x0] + mov r1, r1, lsl #0x10 + orr r1, r1, r2, lsr #0x10 + orr r1, r1, r0, asr #0x1f + orr r0, r0, r2, lsl #0x10 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .balign 4 +_020CCCBC: .word 0x04000100 +_020CCCC0: .word OSi_TickCounter +_020CCCC4: .word 0x0000FFFF +_020CCCC8: .word 0x04000214 + + arm_func_start OSi_CountUpTick +OSi_CountUpTick: ; 0x020CCCCC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020CCD40 ; =OSi_TickCounter + ldr r1, _020CCD44 ; =OSi_NeedResetTimer + ldr r12, [r2, #0x0] + mov r0, #0x1 + ldr r3, [r2, #0x4] + adds r12, r12, r0 + ldr r0, [r1, #0x0] + adc r3, r3, #0x0 + str r12, [r2, #0x0] + str r3, [r2, #0x4] + cmp r0, #0x0 + mov r3, #0x0 + beq _020CCD24 + ldr r2, _020CCD48 ; =0x04000102 + ldr r0, _020CCD4C ; =0x04000100 + strh r3, [r2, #0x0] + strh r3, [r0, #0x0] + mov r0, #0xc1 + strh r0, [r2, #0x0] + str r3, [r1, #0x0] +_020CCD24: + mov r0, #0x0 + ldr r1, _020CCD50 ; =OSi_CountUpTick + mov r2, r0 + bl OSi_EnterTimerCallback + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CCD40: .word OSi_TickCounter +_020CCD44: .word OSi_NeedResetTimer +_020CCD48: .word 0x04000102 +_020CCD4C: .word 0x04000100 +_020CCD50: .word OSi_CountUpTick + + arm_func_start OS_IsTickAvailable +OS_IsTickAvailable: ; 0x020CCD54 + ldr r0, _020CCD60 ; =OSi_UseTick + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_020CCD60: .word OSi_UseTick + + arm_func_start OS_InitTick +OS_InitTick: ; 0x020CCD64 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020CCDE8 ; =OSi_UseTick + ldrh r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r2, #0x1 + mov r0, #0x0 + strh r2, [r1, #0x0] + bl OSi_SetTimerReserved + ldr r0, _020CCDEC ; =OSi_TickCounter + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r3, _020CCDF0 ; =0x04000102 + str r2, [r0, #0x4] + ldr r0, _020CCDF4 ; =0x04000100 + strh r2, [r3, #0x0] + ldr r1, _020CCDF8 ; =OSi_CountUpTick + strh r2, [r0, #0x0] + mov r2, #0xc1 + mov r0, #0x8 + strh r2, [r3, #0x0] + bl OS_SetIrqFunction + mov r0, #0x8 + bl OS_EnableIrqMask + ldr r0, _020CCDFC ; =OSi_NeedResetTimer + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CCDE8: .word OSi_UseTick +_020CCDEC: .word OSi_TickCounter +_020CCDF0: .word 0x04000102 +_020CCDF4: .word 0x04000100 +_020CCDF8: .word OSi_CountUpTick +_020CCDFC: .word OSi_NeedResetTimer + + arm_func_start OSi_AlarmHandler +OSi_AlarmHandler: ; 0x020CCE00 + stmdb sp!, {r0,lr} + bl OSi_ArrangeTimer + ldmia sp!, {r0,lr} + bx lr + + arm_func_start OSi_ArrangeTimer +OSi_ArrangeTimer: ; 0x020CCE10 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020CCF1C ; =0x04000106 + mov r2, #0x0 + mov r0, #0x10 + strh r2, [r1, #0x0] + bl OS_DisableIrqMask + ldr r0, _020CCF20 ; =0x027E0000 + add r0, r0, #0x3000 + ldr r1, [r0, #0xff8] + orr r1, r1, #0x10 + str r1, [r0, #0xff8] + bl OS_GetTick + ldr r2, _020CCF24 ; =OSi_AlarmQueue + ldr r4, [r2, #0x0] + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r3, [r4, #0x10] + ldr r12, [r4, #0xc] + cmp r1, r3 + cmpeq r0, r12 + bhs _020CCE84 + mov r0, r4 + bl OSi_SetTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020CCE84: + ldr r1, [r4, #0x18] + cmp r1, #0x0 + moveq r0, #0x0 + streq r0, [r2, #0x4] + str r1, [r2, #0x0] + movne r0, #0x0 + strne r0, [r1, #0x14] + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x20] + mov r0, #0x0 + cmp r1, r0 + ldr r5, [r4, #0x0] + cmpeq r2, r0 + streq r0, [r4, #0x0] + cmp r5, #0x0 + beq _020CCECC + ldr r0, [r4, #0x4] + blx r5 +_020CCECC: + ldr r2, [r4, #0x1c] + ldr r0, [r4, #0x20] + mov r1, #0x0 + cmp r0, r1 + cmpeq r2, r1 + beq _020CCEF4 + mov r0, r4 + mov r2, r1 + str r5, [r4, #0x0] + bl OSi_InsertAlarm +_020CCEF4: + ldr r0, _020CCF24 ; =OSi_AlarmQueue + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + bl OSi_SetTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CCF1C: .word 0x04000106 +_020CCF20: .word 0x027E0000 +_020CCF24: .word OSi_AlarmQueue + + arm_func_start OS_CancelAlarm +OS_CancelAlarm: ; 0x020CCF28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, [r5, #0x0] + mov r4, r0 + cmp r1, #0x0 + bne _020CCF58 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020CCF58: + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldreq r2, [r5, #0x14] + ldreq r1, _020CCFBC ; =OSi_AlarmQueue + streq r2, [r1, #0x4] + ldrne r1, [r5, #0x14] + strne r1, [r0, #0x14] + ldr r1, [r5, #0x14] + cmp r1, #0x0 + strne r0, [r1, #0x18] + bne _020CCF98 + ldr r1, _020CCFBC ; =OSi_AlarmQueue + cmp r0, #0x0 + str r0, [r1, #0x0] + beq _020CCF98 + bl OSi_SetTimer +_020CCF98: + mov r1, #0x0 + str r1, [r5, #0x0] + str r1, [r5, #0x1c] + mov r0, r4 + str r1, [r5, #0x20] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CCFBC: .word OSi_AlarmQueue + + arm_func_start OS_SetAlarm +OS_SetAlarm: ; 0x020CCFC0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r6, r0 + mov r5, r1 + mov r4, r2 + mov r7, r3 + beq _020CCFE8 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _020CCFEC +_020CCFE8: + bl OS_Terminate +_020CCFEC: + bl OS_DisableInterrupts + mov r1, #0x0 + str r1, [r6, #0x1c] + str r1, [r6, #0x20] + str r7, [r6, #0x0] + ldr r1, [sp, #0x18] + mov r7, r0 + str r1, [r6, #0x4] + bl OS_GetTick + adds r3, r5, r0 + adc r2, r4, r1 + mov r0, r6 + mov r1, r3 + bl OSi_InsertAlarm + mov r0, r7 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start OSi_InsertAlarm +OSi_InsertAlarm: ; 0x020CD038 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r4, [r8, #0x1c] + ldr r3, [r8, #0x20] + mov r0, #0x0 + cmp r3, r0 + mov r7, r1 + mov r6, r2 + cmpeq r4, r0 + beq _020CD0B4 + bl OS_GetTick + ldr r6, [r8, #0x28] + ldr r7, [r8, #0x24] + cmp r6, r1 + cmpeq r7, r0 + bhs _020CD0B4 + ldr r5, [r8, #0x1c] + ldr r4, [r8, #0x20] + subs r0, r0, r7 + mov r2, r5 + mov r3, r4 + sbc r1, r1, r6 + bl _ll_udiv + mov r2, #0x1 + adds r2, r0, r2 + adc r0, r1, #0x0 + umull r3, r1, r5, r2 + mla r1, r5, r0, r1 + mla r1, r4, r2, r1 + adds r7, r7, r3 + adc r6, r6, r1 +_020CD0B4: + str r7, [r8, #0xc] + ldr r0, _020CD174 ; =OSi_AlarmQueue + str r6, [r8, #0x10] + ldr r4, [r0, #0x0] + cmp r4, #0x0 + beq _020CD134 + mov r1, #0x0 +_020CD0D0: + ldr r2, [r4, #0xc] + ldr r0, [r4, #0x10] + subs r3, r7, r2 + sbc r2, r6, r0 + subs r0, r3, r1 + sbcs r0, r2, r1 + bge _020CD128 + ldr r0, [r4, #0x14] + str r0, [r8, #0x14] + str r8, [r4, #0x14] + str r4, [r8, #0x18] + ldr r0, [r8, #0x14] + cmp r0, #0x0 + strne r8, [r0, #0x18] + ldmneia sp!, {r4-r8,lr} + bxne lr + ldr r1, _020CD174 ; =OSi_AlarmQueue + mov r0, r8 + str r8, [r1, #0x0] + bl OSi_SetTimer + ldmia sp!, {r4-r8,lr} + bx lr +_020CD128: + ldr r4, [r4, #0x18] + cmp r4, #0x0 + bne _020CD0D0 +_020CD134: + ldr r1, _020CD174 ; =OSi_AlarmQueue + mov r0, #0x0 + str r0, [r8, #0x18] + ldr r0, [r1, #0x4] + str r8, [r1, #0x4] + str r0, [r8, #0x14] + cmp r0, #0x0 + strne r8, [r0, #0x18] + ldmneia sp!, {r4-r8,lr} + bxne lr + mov r0, r8 + str r8, [r1, #0x4] + str r8, [r1, #0x0] + bl OSi_SetTimer + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020CD174: .word OSi_AlarmQueue + + arm_func_start OS_CreateAlarm +OS_CreateAlarm: ; 0x020CD178 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x8] + bx lr + + arm_func_start OS_IsAlarmAvailable +OS_IsAlarmAvailable: ; 0x020CD188 + ldr r0, _020CD194 ; =OSi_UseAlarm + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_020CD194: .word OSi_UseAlarm + + arm_func_start OS_InitAlarm +OS_InitAlarm: ; 0x020CD198 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020CD1E8 ; =OSi_UseAlarm + ldrh r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r0, #0x1 + strh r0, [r1, #0x0] + bl OSi_SetTimerReserved + ldr r1, _020CD1EC ; =OSi_AlarmQueue + mov r2, #0x0 + mov r0, #0x10 + str r2, [r1, #0x0] + str r2, [r1, #0x4] + bl OS_DisableIrqMask + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CD1E8: .word OSi_UseAlarm +_020CD1EC: .word OSi_AlarmQueue + + arm_func_start OSi_SetTimer +OSi_SetTimer: ; 0x020CD1F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_GetTick + ldr r3, _020CD27C ; =0x04000106 + mov r2, #0x0 + strh r2, [r3, #0x0] + ldr r12, [r4, #0xc] + ldr r3, [r4, #0x10] + subs r5, r12, r0 + sbc r4, r3, r1 + ldr r1, _020CD280 ; =OSi_AlarmHandler + mov r0, #0x1 + bl OSi_EnterTimerCallback + mov r2, #0x0 + subs r0, r5, r2 + sbcs r0, r4, r2 + ldrlt r2, _020CD284 ; =0x0000FFFE + blt _020CD254 + mov r0, #0x10000 + subs r0, r5, r0 + sbcs r0, r4, r2 + mvnlt r0, r5 + movlt r0, r0, lsl #0x10 + movlt r2, r0, lsr #0x10 +_020CD254: + ldr r0, _020CD288 ; =0x04000104 + ldr r1, _020CD27C ; =0x04000106 + strh r2, [r0, #0x0] + mov r2, #0xc1 + mov r0, #0x10 + strh r2, [r1, #0x0] + bl OS_EnableIrqMask + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CD27C: .word 0x04000106 +_020CD280: .word OSi_AlarmHandler +_020CD284: .word 0x0000FFFE +_020CD288: .word 0x04000104 + + arm_func_start OS_InitVAlarm +OS_InitVAlarm: ; 0x020CD28C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020CD2EC ; =OSi_UseVAlarm + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r1, _020CD2F0 ; =OSi_VAlarmQueue + mov r3, #0x0 + mov r12, #0x1 + mov r0, #0x4 + strh r12, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r1, #0x4] + bl OS_DisableIrqMask + ldr r1, _020CD2F4 ; =OSi_VFrameCount + mov r2, #0x0 + ldr r0, _020CD2F8 ; =OSi_PreviousVCount + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CD2EC: .word OSi_UseVAlarm +_020CD2F0: .word OSi_VAlarmQueue +_020CD2F4: .word OSi_VFrameCount +_020CD2F8: .word OSi_PreviousVCount + + arm_func_start OS_EnableInterrupts +OS_EnableInterrupts: ; 0x020CD2FC + mrs r0, cpsr + bic r1, r0, #0x80 + msr cpsr_c, r1 + and r0, r0, #0x80 + bx lr + + arm_func_start OS_DisableInterrupts +OS_DisableInterrupts: + mrs r0, cpsr + orr r1, r0, #0x80 + msr cpsr_c, r1 + and r0, r0, #0x80 + bx lr + + arm_func_start OS_RestoreInterrupts +OS_RestoreInterrupts: + mrs r1, cpsr + bic r2, r1, #0x80 + orr r2, r2, r0 + msr cpsr_c, r2 + and r0, r1, #0x80 + bx lr + + arm_func_start OS_DisableInterrupts_IrqAndFiq +OS_DisableInterrupts_IrqAndFiq: ; 0x020CD33C + mrs r0, cpsr + orr r1, r0, #0xc0 + msr cpsr_c, r1 + and r0, r0, #0xc0 + bx lr + + arm_func_start OS_RestoreInterrupts_IrqAndFiq +OS_RestoreInterrupts_IrqAndFiq: ; 0x020CD350 + mrs r1, cpsr + bic r2, r1, #0xc0 + orr r2, r2, r0 + msr cpsr_c, r2 + and r0, r1, #0xc0 + bx lr + + arm_func_start OS_GetCpsrIrq +OS_GetCpsrIrq: ; 0x020CD368 + mrs r0, cpsr + and r0, r0, #0x80 + bx lr + + arm_func_start OS_GetProcMode +OS_GetProcMode: ; 0x020CD374 + mrs r0, cpsr + and r0, r0, #0x1f + bx lr + + arm_func_start OS_SpinWait +OS_SpinWait: + subs r0, r0, #0x4 + bhs OS_SpinWait + bx lr + + arm_func_start OS_WaitVBlankIntr +OS_WaitVBlankIntr: ; 0x020CD38C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, #0x1 + blx SVC_WaitByLoop + mov r0, #0x1 + mov r1, r0 + bl OS_WaitIrq + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start OS_ResetSystem +OS_ResetSystem: ; 0x020CD3B4 + stmdb sp!, {r4,lr} + ldr r1, _020CD42C ; =0x027FFC40 + mov r4, r0 + ldrh r0, [r1, #0x0] + cmp r0, #0x2 + bne _020CD3D0 + bl OS_Terminate +_020CD3D0: + bl OS_GetLockID + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl CARD_LockRom +_020CD3E0: + mov r0, #0x0 + bl MI_StopDma + mov r0, #0x1 + bl MI_StopDma + mov r0, #0x2 + bl MI_StopDma + mov r0, #0x3 + bl MI_StopDma + mov r0, #0x40000 + bl OS_SetIrqMask + mvn r0, #0x0 + bl OS_ResetRequestIrqMask + ldr r1, _020CD430 + mov r0, #0x10 + str r4, [r1] + bl OSi_SendToPxi + bl OSi_DoResetSystem + ldmia sp!, {r4, lr} + bx lr +_020CD42C: .word 0x027FFC40 +_020CD430: .word 0x027FFC20 + + arm_func_start OSi_SendToPxi +OSi_SendToPxi: ; 0x020CD434 + stmdb sp!, {r4-r6,lr} + mov r6, r0, lsl #0x8 + mov r5, #0xc + mov r4, #0x0 +_020CD444: + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl PXI_SendWordByFifo +_020CD454: + cmp r0, #0x0 + bne _020CD444 + ldmia sp!, {r4-r6, lr} + bx lr + + arm_func_start OSi_CommonCallback +OSi_CommonCallback: ; OSi_CommonCallback + stmdb sp!, {lr} + sub sp, sp, #0x4 + and r0, r1, #0x7f00 + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + cmp r0, #0x10 + ldreq r0, _020CD4A4 ; =OSi_IsResetOccurred + 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 +_020CD4A4: .word OSi_IsResetOccurred + + arm_func_start OS_InitReset +OS_InitReset: ; 0x020CD4A8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020CD508 ; =0x021D37DC + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r1, #0x1 + strh r1, [r0, #0x0] + bl PXI_Init + mov r5, #0xc + mov r4, #0x1 +_020CD4DC: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady +_020CD4E8: + cmp r0, #0x0 + beq _020CD4DC + ldr r1, _020CD50C + mov r0, #0xC + bl PXI_SetFifoRecvCallback + add sp, sp, #0x4 + ldmia sp!, {r4-r5, lr} + bx lr +_020CD508: .word OSi_IsInitReset +_020CD50C: .word OSi_CommonCallback + + arm_func_start OS_GetOwnerRtcOffset +OS_GetOwnerRtcOffset: ; 0x020CD510 + ldr r1, _020CD520 ; =0x027FFC80 + ldr r0, [r1, #0x68] + ldr r1, [r1, #0x6c] + bx lr + .balign 4 +_020CD520: .word 0x027FFC80 + + arm_func_start OS_GetOwnerInfo +OS_GetOwnerInfo: ; 0x020CD524 + stmdb sp!, {r4,lr} + ldr ip, _020CD59C ; =0x027FFC80 + mov r4, r0 + ldrh r2, [r12, #0x64] + add r0, r12, #0x6 + add r1, r4, #0x4 + mov r2, r2, lsl #0x1d + mov r2, r2, lsr #0x1d + strb r2, [r4, #0x0] + ldrb r3, [r12, #0x2] + mov r2, #0x14 + mov r3, r3, lsl #0x1c + mov r3, r3, lsr #0x1c + strb r3, [r4, #0x1] + ldrb r3, [r12, #0x3] + strb r3, [r4, #0x2] + ldrb r3, [r12, #0x4] + strb r3, [r4, #0x3] + ldrb r3, [r12, #0x1a] + strh r3, [r4, #0x18] + ldrb r3, [r12, #0x50] + strh r3, [r4, #0x4e] + bl MIi_CpuCopy16 + ldr r0, _020CD59C ; =0x027FFC80 + add r1, r4, #0x1a + add r0, r0, #0x1c + mov r2, #0x34 + bl MIi_CpuCopy16 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CD59C: .word 0x027FFC80 + + arm_func_start OS_GetMacAddress +OS_GetMacAddress: ; 0x020CD5A0 + ldr ip, _020CD5B4 ; =MI_CpuCopy8 + mov r1, r0 + ldr r0, _020CD5B8 ; =0x027FFCF4 + mov r2, #0x6 + bx r12 + .balign 4 +_020CD5B4: .word MI_CpuCopy8 +_020CD5B8: .word 0x027FFCF4 + + arm_func_start OsCountZeroBits +OsCountZeroBits: ; 0x020CD5BC + clz r0, r0 + bx lr + + arm_func_start OSi_UnlockVram +OSi_UnlockVram: ; 0x020CD5C4 + stmdb sp!, {r4-r10,lr} + mov r5, r0 + mov r10, r1 + bl OS_DisableInterrupts + ldr r4, _020CD640 ; =OSi_vramExclusive + ldr r1, _020CD644 ; =0x000001FF + ldr r2, [r4, #0x0] + mov r8, r0 + and r0, r5, r2 + and r9, r0, r1 + ldr r6, _020CD648 ; =OSi_vramLockId + mov r7, #0x1 + mov r5, #0x0 +_020CD5F8: + mov r0, r9 + bl OsCountZeroBits + rsbs r2, r0, #0x1f + bmi _020CD630 + mov r1, r2, lsl #0x1 + ldrh r0, [r6, r1] + mvn r2, r7, lsl r2 + cmp r10, r0 + ldreq r0, [r4, #0x0] + and r9, r9, r2 + andeq r0, r0, r2 + streqh r5, [r6, r1] + streq r0, [r4, #0x0] + b _020CD5F8 +_020CD630: + mov r0, r8 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_020CD640: .word OSi_vramExclusive +_020CD644: .word 0x000001FF +_020CD648: .word OSi_vramLockId + + arm_func_start OSi_TryLockVram +OSi_TryLockVram: ; 0x020CD64C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r8, r1 + bl OS_DisableInterrupts + ldr r1, _020CD714 ; =OSi_vramExclusive + mov r7, r0 + ldr r0, [r1, #0x0] + and r5, r6, r0 + ldr sb, _020CD718 ; =OSi_vramLockId + mov r4, #0x1 +_020CD678: + mov r0, r5 + bl OsCountZeroBits + rsbs r1, r0, #0x1f + bmi _020CD6B8 + mov r0, r1, lsl #0x1 + ldrh r0, [r9, r0] + mvn r1, r4, lsl r1 + cmp r8, r0 + and r5, r5, r1 + beq _020CD678 + mov r0, r7 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r9,lr} + bx lr +_020CD6B8: + ldr r0, _020CD71C ; =0x000001FF + and r6, r6, r0 + ldr r4, _020CD718 ; =OSi_vramLockId + ldr sb, _020CD714 ; =OSi_vramExclusive + mov r5, #0x1 +_020CD6CC: + mov r0, r6 + bl OsCountZeroBits + rsbs r1, r0, #0x1f + bmi _020CD6FC + ldr r0, [r9, #0x0] + mvn r2, r5, lsl r1 + orr r0, r0, r5, lsl r1 + mov r1, r1, lsl #0x1 + strh r8, [r4, r1] + str r0, [r9, #0x0] + and r6, r6, r2 + b _020CD6CC +_020CD6FC: + mov r0, r7 + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020CD714: .word OSi_vramExclusive +_020CD718: .word OSi_vramLockId +_020CD71C: .word 0x000001FF + + arm_func_start OSi_InitVramExclusive +OSi_InitVramExclusive: ; 0x020CD720 + ldr r0, _020CD74C ; =OSi_vramExclusive + mov r3, #0x0 + str r3, [r0, #0x0] + ldr r0, _020CD750 ; =OSi_vramLockId + mov r2, r3 +_020CD734: + mov r1, r3, lsl #0x1 + add r3, r3, #0x1 + strh r2, [r0, r1] + cmp r3, #0x9 + blt _020CD734 + bx lr + .balign 4 +_020CD74C: .word OSi_vramExclusive +_020CD750: .word OSi_vramLockId + + arm_func_start OS_GetLowEntropyData +OS_GetLowEntropyData: ; 0x020CD754 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r1, _020CD82C ; =0x04000006 + ldr r2, _020CD830 ; =0x027FFC00 + ldrh r7, [r1, #0x0] + add r4, r2, #0x80 + mov r6, r0 + add r5, r4, #0x74 + bl OS_GetTickLo + orr r0, r0, r7, lsl #0x10 + str r0, [r6, #0x0] + ldr r1, _020CD834 ; =OSi_TickCounter + ldr r0, _020CD830 ; =0x027FFC00 + ldr r3, [r1, #0x0] + ldrh r5, [r5, #0x4] + ldr r2, [r1, #0x4] + ldr r2, _020CD838 ; =0x04000600 + eor r3, r3, r5, lsl #0x10 + str r3, [r6, #0x4] + ldr r3, [r1, #0x0] + ldr r3, [r1, #0x4] + ldr r1, [r4, #0x74] + ldr r4, [r0, #0x3c] + eor r1, r3, r1 + eor r1, r4, r1 + str r1, [r6, #0x8] + ldr r3, [r6, #0x8] + ldr r2, [r2, #0x0] + add r1, r0, #0x300 + eor r2, r3, r2 + str r2, [r6, #0x8] + ldr r2, [r0, #0x1e8] + ldr r3, _020CD83C ; =0x04000130 + str r2, [r6, #0xc] + ldr r4, [r0, #0x1ec] + ldr r2, _020CD840 ; =0x027FFFA8 + str r4, [r6, #0x10] + ldrh r4, [r1, #0x94] + ldr r0, [r0, #0x390] + eor r0, r0, r4, lsl #0x10 + str r0, [r6, #0x14] + ldrh r4, [r1, #0xaa] + ldrh r0, [r1, #0xac] + orr r0, r0, r4, lsl #0x10 + str r0, [r6, #0x18] + ldrh r3, [r3, #0x0] + ldrh r0, [r2, #0x0] + ldrh r1, [r1, #0x98] + orr r0, r3, r0 + orr r0, r0, r1, lsl #0x10 + str r0, [r6, #0x1c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020CD82C: .word 0x04000006 +_020CD830: .word 0x027FFC00 +_020CD834: .word OSi_TickCounter +_020CD838: .word 0x04000600 +_020CD83C: .word 0x04000130 +_020CD840: .word 0x027FFFA8 + + arm_func_start OS_Halt +OS_Halt: ; 0x020CD844 + mov r0, #0x0 + mcr p15, 0x0, r0, c7, c0, 0x4 + bx lr + + arm_func_start OS_Terminate +OS_Terminate: ; 0x020CD850 + stmdb sp!, {lr} + sub sp, sp, #0x4 +_020CD858: + bl OS_DisableInterrupts + bl OS_Halt + b _020CD858 diff --git a/arm9/asm/PM_arm9.s b/arm9/asm/PM_arm9.s new file mode 100644 index 00000000..331c0fa9 --- /dev/null +++ b/arm9/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 PM_SetBackLight + 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/arm9/asm/PXI_arm9.s b/arm9/asm/PXI_arm9.s new file mode 100644 index 00000000..ab3af5de --- /dev/null +++ b/arm9/asm/PXI_arm9.s @@ -0,0 +1,266 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + + arm_func_start PXI_Init +PXI_Init: ; 0x020CFBB0 + ldr ip, _020CFBB8 ; =PXI_InitFifo + bx r12 + .balign 4 +_020CFBB8: .word PXI_InitFifo + + arm_func_start PXIi_HandlerRecvFifoNotEmpty +PXIi_HandlerRecvFifoNotEmpty: ; 0x020CFBBC + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + ldr sl, _020CFCD4 ; =0x04000184 + ldr r5, _020CFCD8 ; =0x021D5368 + ldr r4, _020CFCDC ; =0x04000188 + mov r7, #0x4100000 + mov r6, #0x0 + mvn r8, #0x3 + mvn r9, #0x2 +_020CFBE0: + ldrh r0, [r10, #0x0] + ands r0, r0, #0x4000 + ldrneh r0, [r10, #0x0] + movne r1, r9 + orrne r0, r0, #0xc000 + strneh r0, [r10, #0x0] + bne _020CFC28 + bl OS_DisableInterrupts + ldrh r1, [r10, #0x0] + ands r1, r1, #0x100 + beq _020CFC18 + bl OS_RestoreInterrupts + mov r1, r8 + b _020CFC28 +_020CFC18: + ldr r1, [r7, #0x0] + str r1, [sp, #0x0] + bl OS_RestoreInterrupts + mov r1, r6 +_020CFC28: + cmp r1, r8 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r10,lr} + bxeq lr + mvn r0, #0x2 + cmp r1, r0 + beq _020CFBE0 + ldr r1, [sp, #0x0] + mov r0, r1, lsl #0x1b + movs r0, r0, lsr #0x1b + beq _020CFBE0 + ldr r3, [r5, r0, lsl #0x2] + cmp r3, #0x0 + beq _020CFC74 + mov r2, r1, lsl #0x1a + mov r1, r1, lsr #0x6 + mov r2, r2, lsr #0x1f + blx r3 + b _020CFBE0 +_020CFC74: + mov r0, r1, lsl #0x1a + movs r0, r0, lsr #0x1f + bne _020CFBE0 + orr r0, r1, #0x20 + str r0, [sp, #0x0] + ldrh r0, [r10, #0x0] + ands r0, r0, #0x4000 + ldrneh r0, [r10, #0x0] + orrne r0, r0, #0xc000 + strneh r0, [r10, #0x0] + bne _020CFBE0 + bl OS_DisableInterrupts + ldrh r1, [r10, #0x0] + ands r1, r1, #0x2 + beq _020CFCB8 + bl OS_RestoreInterrupts + b _020CFBE0 +_020CFCB8: + ldr r1, [sp, #0x0] + str r1, [r4, #0x0] + bl OS_RestoreInterrupts + b _020CFBE0 +_020CFCC8: + add sp, sp, #0x8 + ldmia sp!, {r4-r10, lr} + bx lr +_020CFCD4: .word 0x04000184 +_020CFCD8: .word 0x021D5368 +_020CFCDC: .word 0x04000188 + + arm_func_start PXI_SendWordByFifo +PXI_SendWordByFifo: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [sp, #0x0] + and r0, r0, #0x1f + bic r3, r3, #0x1f + orr r12, r3, r0 + bic r3, r12, #0x20 + and r0, r2, #0x1 + orr r3, r3, r0, lsl #0x5 + str r12, [sp, #0x0] + and r2, r3, #0x3f + bic r0, r1, #0xfc000000 + orr r0, r2, r0, lsl #0x6 + str r3, [sp, #0x0] + ldr r2, _020CFD8C ; =0x04000184 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x0] + ands r0, r0, #0x4000 + ldrneh r1, [r2, #0x0] + addne sp, sp, #0x4 + mvnne r0, #0x0 + orrne r1, r1, #0xc000 + strneh r1, [r2, #0x0] + ldmneia sp!, {lr} + bxne lr + bl OS_DisableInterrupts + ldr r1, _020CFD8C ; =0x04000184 + ldrh r1, [r1, #0x0] + ands r1, r1, #0x2 + beq _020CFD6C + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mvn r0, #0x1 + ldmia sp!, {lr} + bx lr +_020CFD6C: + ldr r2, [sp, #0x0] + ldr r1, _020CFD90 ; =0x04000188 + str r2, [r1, #0x0] + bl OS_RestoreInterrupts +_020CFD7C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr +_020CFD8C: .word 0x04000184 +_020CFD90: .word 0x04000188 + + arm_func_start PXI_IsCallbackReady +PXI_IsCallbackReady: + ldr r2, _020CFDB8 ; =0x027FFC00 + mov r3, #0x1 + add r1, r2, r1, lsl #0x2 + mov r2, r3, lsl r0 + ldr r0, [r1, #0x388] + ands r0, r2, r0 + moveq r3, #0x0 + mov r0, r3 + bx lr + .balign 4 +_020CFDB8: .word 0x027FFC00 + + arm_func_start PXI_SetFifoRecvCallback +PXI_SetFifoRecvCallback: ; 0x020CFDBC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r1, _020CFE20 ; =0x021D5368 + cmp r5, #0x0 + str r5, [r1, r4, lsl #0x2] + beq _020CFDF8 + ldr r3, _020CFE24 ; =0x027FFC00 + mov r1, #0x1 + ldr r2, [r3, #0x388] + orr r1, r2, r1, lsl r4 + str r1, [r3, #0x388] + b _020CFE10 +_020CFDF8: + ldr r3, _020CFE24 ; =0x027FFC00 + mov r1, #0x1 + mvn r1, r1, lsl r4 + ldr r2, [r3, #0x388] + and r1, r2, r1 + str r1, [r3, #0x388] +_020CFE10: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CFE20: .word 0x021D5368 +_020CFE24: .word 0x027FFC00 + + arm_func_start PXI_InitFifo +PXI_InitFifo: ; 0x020CFE28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r1, _020CFF18 ; =0x021D5364 + mov r4, r0 + ldrh r0, [r1, #0x0] + cmp r0, #0x0 + bne _020CFF04 + mov r2, #0x1 + ldr r0, _020CFF1C ; =0x027FFC00 + strh r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r0, #0x388] + ldr r0, _020CFF20 ; =0x021D5368 + mov r1, r2 +_020CFE64: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x20 + blt _020CFE64 + ldr r2, _020CFF24 ; =0x0000C408 + ldr r1, _020CFF28 ; =0x04000184 + mov r0, #0x40000 + strh r2, [r1, #0x0] + bl OS_ResetRequestIrqMask + ldr r1, _020CFF2C ; =PXIi_HandlerRecvFifoNotEmpty + mov r0, #0x40000 + bl OS_SetIrqFunction + mov r0, #0x40000 + bl OS_EnableIrqMask + mov r12, #0x0 + ldr r3, _020CFF30 ; =0x04000180 + mov r1, r12 + mov r2, #0x3e8 +_020CFEAC: + ldrh r0, [r3, #0x0] + ands lr, r0, #0xf + mov r0, lr, lsl #0x8 + strh r0, [r3, #0x0] + bne _020CFEC8 + cmp r12, #0x4 + bgt _020CFF04 +_020CFEC8: + ldrh r0, [r3, #0x0] + mov r5, r2 + and r0, r0, #0xf + cmp r0, lr + bne _020CFEFC +_020CFEDC: + cmp r5, #0x0 + movle r12, r1 + ble _020CFEFC + ldrh r0, [r3, #0x0] + sub r5, r5, #0x1 + and r0, r0, #0xf + cmp r0, lr + beq _020CFEDC +_020CFEFC: + add r12, r12, #0x1 + b _020CFEAC +_020CFF04: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020CFF18: .word 0x021D5364 +_020CFF1C: .word 0x027FFC00 +_020CFF20: .word 0x021D5368 +_020CFF24: .word 0x0000C408 +_020CFF28: .word 0x04000184 +_020CFF2C: .word PXIi_HandlerRecvFifoNotEmpty +_020CFF30: .word 0x04000180 diff --git a/arm9/asm/RTC_arm9.s b/arm9/asm/RTC_arm9.s new file mode 100644 index 00000000..8116f8de --- /dev/null +++ b/arm9/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 _ll_sdiv + 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/arm9/asm/SDK_AUTOLOAD_LIST.s b/arm9/asm/SDK_AUTOLOAD_LIST.s new file mode 100644 index 00000000..a2d1d5fe --- /dev/null +++ b/arm9/asm/SDK_AUTOLOAD_LIST.s @@ -0,0 +1,21 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .data + + .global SDK_AUTOLOAD_LIST +SDK_AUTOLOAD_LIST: ; 0x02107700 + .word SDK_AUTOLOAD_ITCM_START + .word 0x00000700 + .word 0x00000000 + + .word SDK_AUTOLOAD_DTCM_START + .word 0x00000060 + .word 0x00000020 + + .word 0x02400000 + .word 0x00000000 + .word 0x00000000 + + .global SDK_AUTOLOAD_LIST_END +SDK_AUTOLOAD_LIST_END: + diff --git a/arm9/asm/SND_arm9.s b/arm9/asm/SND_arm9.s new file mode 100644 index 00000000..99351712 --- /dev/null +++ b/arm9/asm/SND_arm9.s @@ -0,0 +1,1655 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + + arm_func_start PushCommand_impl +PushCommand_impl: ; 0x020CE66C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r0, #0x1 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SND_AllocCommand +_020CE68C: + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7, lr} + bxeq lr + str r7, [r0, #0x4] + str r6, [r0, #0x8] + str r5, [r0, #0xc] + ldr r1, [sp, #0x18] + str r4, [r0, #0x10] + str r1, [r0, #0x14] + bl SND_PushCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r7, lr} + bx lr + + arm_func_start SNDi_SetTrackParam +SNDi_SetTrackParam: ; 0x020CE6C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [sp, #0x8] + mov lr, r2 + str r3, [sp, #0x0] + mov r2, r1 + orr r1, r0, r12, lsl #0x18 + mov r3, lr + mov r0, #0x7 + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020CE6F8 +FUN_020CE6F8: ; 0x020CE6F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r12, r2 + str r3, [sp, #0x0] + mov r1, r0 + mov r2, lr + mov r3, r12 + mov r0, #0x6 + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_ResetMasterPan +SND_ResetMasterPan: ; 0x020CE72C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x0 + mov r3, r2 + mov r0, #0x18 + mvn r1, #0x0 + str r2, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetMasterPan +SND_SetMasterPan: ; 0x020CE758 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x0 + mov r1, r0 + mov r3, r2 + mov r0, #0x18 + str r2, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetOutputSelector +SND_SetOutputSelector: ; 0x020CE784 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r12, r2 + str r3, [sp, #0x0] + mov r1, r0 + mov r2, lr + mov r3, r12 + mov r0, #0x19 + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_InvalidateWaveData +SND_InvalidateWaveData: ; 0x020CE7B8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x20 + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_InvalidateBankData +SND_InvalidateBankData: ; 0x020CE7E4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x1f + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_InvalidateSeqData +SND_InvalidateSeqData: ; 0x020CE810 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x1e + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetupChannelPcm +SND_SetupChannelPcm: ; 0x020CE83C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r12, [sp, #0x18] + mov r3, r3, lsl #0x1a + orr r4, r3, r1, lsl #0x18 + ldr r5, [sp, #0x24] + mov r3, r12, lsl #0x18 + ldr r1, [sp, #0x1c] + ldr r12, [sp, #0x10] + orr r4, r4, r5, lsl #0x10 + orr r4, r12, r4 + ldr lr, [sp, #0x20] + orr r3, r3, r1, lsl #0x16 + ldr r12, [sp, #0x14] + orr r1, r0, lr, lsl #0x10 + orr r3, r12, r3 + mov r0, #0xe + str r4, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SND_SetChannelPan +SND_SetChannelPan: ; 0x020CE894 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x15 + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetChannelVolume +SND_SetChannelVolume: ; 0x020CE8C0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r3, r2 + mov r12, #0x0 + mov r1, r0 + mov r2, lr + mov r0, #0x14 + str r12, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetChannelTimer +SND_SetChannelTimer: ; 0x020CE8F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x13 + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_UnlockChannel +SND_UnlockChannel: ; 0x020CE920 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x1b + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_LockChannel +SND_LockChannel: ; 0x020CE94C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x1a + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetupAlarm +SND_SetupAlarm: ; 0x020CE978 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r4, r2 + mov r5, r1 + ldr r2, [sp, #0x18] + mov r6, r0 + mov r1, r3 + bl SNDi_SetAlarmHandler +_020CE998: + str r0, [sp] + mov r1, r6 + mov r2, r5 + mov r3, r4 + mov r0, #0x12 + bl PushCommand_impl + add sp, sp, #0x8 + ldmia sp!, {r4-r6, lr} + bx lr + + arm_func_start SND_SetupCapture +SND_SetupCapture: ; 0x020CE9BC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, r0, lsl #0x1f + orr r0, r0, r1, lsl #0x1e + ldr r12, [sp, #0x8] + mov r1, r2 + orr r0, r0, r12, lsl #0x1d + ldr r2, [sp, #0xc] + mov lr, #0x0 + orr r0, r0, r2, lsl #0x1c + ldr r12, [sp, #0x10] + mov r2, r3 + orr r3, r0, r12, lsl #0x1b + mov r0, #0x11 + str lr, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_StopTimer +SND_StopTimer: ; 0x020CEA08 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r2 + mov r9, r0 + mov r8, r1 + mov r6, r3 + mov r4, r7 + mov r5, #0x0 + b _020CEA44 +_020CEA2C: + ands r0, r4, #0x1 + beq _020CEA3C + mov r0, r5 + bl SNDi_IncAlarmId +_020CEA3C: + add r5, r5, #0x1 + mov r4, r4, lsr #0x1 +_020CEA44: + cmp r5, #0x8 + bge _020CEA54 + cmp r4, #0x0 + bne _020CEA2C +_020CEA54: + mov r1, r9 + mov r2, r8 + mov r3, r7 + mov r0, #0xd + str r6, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start SND_StartTimer +SND_StartTimer: ; 0x020CEA78 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r12, r2 + str r3, [sp, #0x0] + mov r1, r0 + mov r2, lr + mov r3, r12 + mov r0, #0xc + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetTrackAllocatableChannel +SND_SetTrackAllocatableChannel: ; 0x020CEAAC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r3, r2 + mov r12, #0x0 + mov r1, r0 + mov r2, lr + mov r0, #0x9 + str r12, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetTrackPan +SND_SetTrackPan: ; 0x020CEAE0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r2 + mov r12, #0x1 + mov r2, #0x9 + str r12, [sp, #0x0] + bl SNDi_SetTrackParam + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetTrackPitch +SND_SetTrackPitch: ; 0x020CEB08 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r2 + mov r12, #0x2 + mov r2, #0xc + str r12, [sp, #0x0] + bl SNDi_SetTrackParam + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_SetPlayerChannelPriority +SND_SetPlayerChannelPriority: ; 0x020CEB30 + ldr ip, _020CEB44 ; =FUN_020CE6F8 + mov r2, r1 + mov r1, #0x4 + mov r3, #0x1 + bx r12 + .balign 4 +_020CEB44: .word FUN_020CE6F8 + + arm_func_start SND_SetPlayerVolume +SND_SetPlayerVolume: ; 0x020CEB48 + ldr ip, _020CEB5C ; =FUN_020CE6F8 + mov r2, r1 + mov r1, #0x6 + mov r3, #0x2 + bx r12 + .balign 4 +_020CEB5C: .word FUN_020CE6F8 + + arm_func_start SND_PauseSeq +SND_PauseSeq: ; 0x020CEB60 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r3, #0x0 + mov r1, r0 + mov r0, #0x4 + str r3, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_StartPreparedSeq +SND_StartPreparedSeq: ; 0x020CEB8C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x0 + mov r1, r0 + mov r3, r2 + mov r0, #0x3 + str r2, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_PrepareSeq +SND_PrepareSeq: ; 0x020CEBB8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r12, r2 + str r3, [sp, #0x0] + mov r1, r0 + mov r2, lr + mov r3, r12 + mov r0, #0x2 + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SND_StopSeq +SND_StopSeq: ; 0x020CEBEC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x0 + mov r1, r0 + mov r3, r2 + mov r0, #0x1 + str r2, [sp, #0x0] + bl PushCommand_impl + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start SNDi_UnlockMutex +SNDi_UnlockMutex: ; 0x020CEC18 + ldr ip, _020CEC24 ; =OS_UnlockMutex + ldr r0, _020CEC28 ; =0x021D3820 + bx r12 + .balign 4 +_020CEC24: .word OS_UnlockMutex +_020CEC28: .word 0x021D3820 + + arm_func_start SNDi_LockMutex +SNDi_LockMutex: ; 0x020CEC2C + ldr ip, _020CEC38 ; =OS_LockMutex + ldr r0, _020CEC3C ; =0x021D3820 + bx r12 + .balign 4 +_020CEC38: .word OS_LockMutex +_020CEC3C: .word 0x021D3820 + + arm_func_start SND_Init +SND_Init: ; 0x020CEC40 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020CEC84 ; =0x021D381C + ldr r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020CEC88 ; =0x021D3820 + mov r2, #0x1 + str r2, [r1, #0x0] + bl OS_InitMutex + bl SND_CommandInit + bl SND_AlarmInit + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CEC84: .word 0x021D381C +_020CEC88: .word 0x021D3820 + + arm_func_start IsCommandAvailable +IsCommandAvailable: + stmdb sp!, {r4,lr} + bl OS_IsRunOnEmulator +_020CEC94: + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4, lr} + bxeq lr + bl OS_DisableInterrupts + ldr r1, _020CECD0 + mov r2, #0x10 + str r2, [r1] + ldr r4, [r1] + bl OS_RestoreInterrupts + cmp r4, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4, lr} + bx lr +_020CECD0: .word 0x04FFF200 + + arm_func_start AllocCommand +AllocCommand: ; 0x020CECD4 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020CED24 ; =0x021D3838 + ldr r4, [r1, #0x0] + cmp r4, #0x0 + bne _020CECFC + bl OS_RestoreInterrupts +_020CECF0: + mov r0, #0x0 + ldmia sp!, {r4, lr} + bx lr +_020CECFC: + ldr r2, [r4, #0x0] + str r2, [r1, #0x0] + cmp r2, #0x0 + ldreq r1, _020CED28 ; =0x021D3848 + moveq r2, #0x0 + streq r2, [r1, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CED24: .word 0x021D3838 +_020CED28: .word 0x021D3848 + + arm_func_start RequestCommandProc +RequestCommandProc: ; 0x020CED2C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, #0x7 + mov r4, #0x0 +_020CED3C: + mov r0, r5 + mov r1, r4 + mov r2, r4 + bl PXI_SendWordByFifo +_020CED4C: + cmp r0, #0 + blt _020CED3C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start InitPXI +InitPXI: ; 0x020CED60 + stmdb sp!, {r4-r6,lr} + ldr r1, _020CEDC8 ; =PxiFifoCallback + mov r0, #0x7 + bl PXI_SetFifoRecvCallback + bl IsCommandAvailable +_020CED74: + cmp r0, #0x0 + ldmeqia sp!, {r4-r6, lr} + bxeq lr + mov r0, #0x7 + mov r1, #0x1 + bl PXI_IsCallbackReady + cmp r0, #0x0 + ldmneia sp!, {r4-r6, lr} + bxne lr + mov r6, #0x64 + mov r5, #0x7 + mov r4, #0x1 +_020CEDA4: + mov r0, r6 + bl OS_SpinWait + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady + cmp r0, #0x0 + beq _020CEDA4 + ldmia sp!, {r4-r6, lr} + bx lr +_020CEDC8: .word PxiFifoCallback + + arm_func_start PxiFifoCallback +PxiFifoCallback: ; 0x020CEDCC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r5 + bl SNDi_CallAlarmHandler + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SND_CountWaitingCommand +SND_CountWaitingCommand: ; 0x020CEDFC + stmdb sp!, {r4,lr} + bl SND_CountFreeCommand + mov r4, r0 + bl SND_CountReservedCommand + rsb r1, r4, #0x100 + sub r0, r1, r0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SND_CountReservedCommand +SND_CountReservedCommand: ; 0x020CEE1C + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020CEE58 ; =0x021D3840 + mov r4, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _020CEE48 +_020CEE38: + ldr r1, [r1, #0x0] + add r4, r4, #0x1 + cmp r1, #0x0 + bne _020CEE38 +_020CEE48: + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CEE58: .word 0x021D3840 + + arm_func_start SND_CountFreeCommand +SND_CountFreeCommand: ; 0x020CEE5C + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020CEE98 ; =0x021D3838 + mov r4, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _020CEE88 +_020CEE78: + ldr r1, [r1, #0x0] + add r4, r4, #0x1 + cmp r1, #0x0 + bne _020CEE78 +_020CEE88: + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CEE98: .word 0x021D3838 + + arm_func_start SND_IsFinishedCommandTag +SND_IsFinishedCommandTag: + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020CEEEC ; =0x021D383C + ldr r1, [r1, #0x0] + cmp r4, r1 + bls _020CEECC + sub r1, r4, r1 + cmp r1, #0x80000000 + movcc r4, #0x0 + movcs r4, #0x1 + b _020CEEDC +_020CEECC: + sub r1, r1, r4 + cmp r1, #0x80000000 + movcc r4, #0x1 + movcs r4, #0x0 +_020CEEDC: + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CEEEC: .word 0x021D383C + + arm_func_start SND_GetCurrentCommandTag +SND_GetCurrentCommandTag: ; 0x020CEEF0 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020CEF24 ; =0x021D3840 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + ldreq r1, _020CEF28 ; =0x021D383C + ldreq r4, [r1, #0x0] + ldrne r1, _020CEF2C ; =0x021D3858 + ldrne r4, [r1, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CEF24: .word 0x021D3840 +_020CEF28: .word 0x021D383C +_020CEF2C: .word 0x021D3858 + + arm_func_start SND_WaitForCommandProc +SND_WaitForCommandProc: ; 0x020CEF30 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl SND_IsFinishedCommandTag +_020CEF40: + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5, lr} + bxne lr + mov r4, #0x0 +_020CEF54: + mov r0, r4 + bl SND_RecvCommandReply + cmp r0, #0x0 + bne _020CEF54 + mov r0, r5 + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5, lr} + bxne lr + bl RequestCommandProc + mov r0, r5 + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5, lr} + bxne lr + mov r4, #0x1 +_020CEF9C: + mov r0, r4 + bl SND_RecvCommandReply + mov r0, r5 + bl SND_IsFinishedCommandTag + cmp r0, #0x0 + beq _020CEF9C + add sp, sp, #0x4 + ldmia sp!, {r4-r5, lr} + bx lr + + arm_func_start SND_FlushCommand +SND_FlushCommand: ; 0x020CEFC0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020CF164 ; =0x021D3840 + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020CEFF8 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r9,lr} + bx lr +_020CEFF8: + ldr r1, _020CF168 ; =0x021D3854 + ldr r1, [r1, #0x0] + cmp r1, #0x8 + blt _020CF03C + ands r1, r5, #0x1 + bne _020CF024 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r9,lr} + bx lr +_020CF024: + mov r0, #0x1 + bl SND_RecvCommandReply + ldr r0, _020CF168 ; =0x021D3854 + ldr r0, [r0, #0x0] + cmp r0, #0x8 + bge _020CF024 +_020CF03C: + ldr r0, _020CF16C ; =0x021D3B00 + mov r1, #0x1800 + bl DC_FlushRange + ldr r1, _020CF164 ; =0x021D3840 + mov r0, #0x7 + ldr r1, [r1, #0x0] + mov r2, #0x0 + bl PXI_SendWordByFifo +_020CF05C: + cmp r0, #0x0 + bge _020CF0E0 + ands r0, r5, #0x1 + bne _020CF084 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r9, lr} + bx lr +_020CF084: + ldr r1, _020CF164 + mov r0, #0x7 + ldr r1, [r1] + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + bge _020CF0E0 + ldr r6, _020CF164 + mov r9, #0x64 + mov r8, #0x7 + mov r7, #0x0 +_020CF0B0: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r9 + bl OS_SpinWait + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r8 + ldr r1, [r6] + mov r2, r7 + bl PXI_SendWordByFifo + cmp r0, #0x0 + blt _020CF0B0 +_020CF0E0: + ands r0, r5, #0x2 + beq _020CF0EC + bl RequestCommandProc +_020CF0EC: + ldr r0, _020CF170 + ldr r1, _020CF164 + ldr r3, [r0] + ldr r5, [r1] + add r1, r3, #0x1 + ldr r2, _020CF174 + str r1, [r0] + str r5, [r2, r3, lsl #2] + cmp r1, #0x8 + movgt r1, #0x0 + ldr r2, _020CF168 + strgt r1, [r0] + ldr r1, _020CF178 + ldr r3, [r2] + ldr r0, [r1] + add ip, r3, #0x1 + add r6, r0, #0x1 + ldr r5, _020CF164 + mov lr, #0x0 + ldr r3, _020CF17C + mov r0, r4 + str lr, [r5] + str lr, [r3] + str ip, [r2] + str r6, [r1] + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9, lr} + bx lr +_020CF164: .word 0x021D3840 +_020CF168: .word 0x021D3854 +_020CF16C: .word 0x021D3B00 +_020CF170: .word 0x021D3850 +_020CF174: .word 0x021D385C +_020CF178: .word 0x021D3858 +_020CF17C: .word 0x021D3844 + + arm_func_start SND_PushCommand +SND_PushCommand: ; 0x020CF180 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r2, _020CF1C0 ; =0x021D3844 + ldr r1, [r2, #0x0] + cmp r1, #0x0 + ldreq r1, _020CF1C4 ; =0x021D3840 + streq r4, [r2, #0x0] + streq r4, [r1, #0x0] + strne r4, [r1, #0x0] + strne r4, [r2, #0x0] + mov r1, #0x0 + str r1, [r4, #0x0] + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CF1C0: .word 0x021D3844 +_020CF1C4: .word 0x021D3840 + + arm_func_start SND_AllocCommand +SND_AllocCommand: + stmdb sp!, {r4,lr} + mov r4, r0 + bl IsCommandAvailable +_020CF1D4: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl AllocCommand + cmp r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + ands r0, r4, #0x1 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl SND_CountWaitingCommand + cmp r0, #0x0 + ble _020CF238 + mov r4, #0x0 +_020CF214: + mov r0, r4 + bl SND_RecvCommandReply + cmp r0, #0x0 + bne _020CF214 + bl AllocCommand + cmp r0, #0x0 + beq _020CF240 + ldmia sp!, {r4,lr} + bx lr +_020CF238: + mov r0, #0x1 + bl SND_FlushCommand +_020CF240: + bl RequestCommandProc + mov r4, #0x1 +_020CF248: + mov r0, r4 + bl SND_RecvCommandReply + bl AllocCommand + cmp r0, #0x0 + beq _020CF248 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SND_RecvCommandReply +SND_RecvCommandReply: ; 0x020CF264 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + bl OS_DisableInterrupts + mov r5, r0 + ands r0, r4, #0x1 + beq _020CF2C0 + bl SNDi_GetFinishedCommandTag + ldr r4, _020CF380 ; =0x021D383C + ldr r1, [r4, #0x0] + cmp r1, r0 + bne _020CF2E8 + mov r6, #0x64 +_020CF294: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + bl OS_SpinWait + bl OS_DisableInterrupts + mov r5, r0 + bl SNDi_GetFinishedCommandTag + ldr r1, [r4, #0x0] + cmp r1, r0 + beq _020CF294 + b _020CF2E8 +_020CF2C0: + bl SNDi_GetFinishedCommandTag + ldr r1, _020CF380 ; =0x021D383C + ldr r1, [r1, #0x0] + cmp r1, r0 + bne _020CF2E8 + mov r0, r5 + bl OS_RestoreInterrupts +_020CF2DC: + mov r0, #0x0 + ldmia sp!, {r4-r6, lr} + bx lr +_020CF2E8: + ldr r0, _020CF384 ; =0x021D384C + ldr r2, _020CF388 ; =0x021D385C + ldr r3, [r0, #0x0] + add r1, r3, #0x1 + ldr r4, [r2, r3, lsl #0x2] + str r1, [r0, #0x0] + cmp r1, #0x8 + movgt r1, #0x0 + strgt r1, [r0, #0x0] + ldr r0, [r4, #0x0] + mov r1, r4 + cmp r0, #0x0 + beq _020CF32C +_020CF31C: + ldr r1, [r1, #0x0] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _020CF31C +_020CF32C: + ldr r0, _020CF38C ; =0x021D3848 + ldr r3, _020CF390 ; =0x021D3854 + ldr r0, [r0, #0x0] + ldr r2, _020CF380 ; =0x021D383C + cmp r0, #0x0 + strne r4, [r0, #0x0] + ldreq r0, _020CF394 ; =0x021D3838 + ldr lr, [r3, #0x0] + streq r4, [r0, #0x0] + ldr ip, _020CF38C ; =0x021D3848 + sub r6, lr, #0x1 + ldr r0, [r2, #0x0] + str r1, [r12, #0x0] + add lr, r0, #0x1 + mov r0, r5 + str r6, [r3, #0x0] + str lr, [r2, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020CF380: .word 0x021D383C +_020CF384: .word 0x021D384C +_020CF388: .word 0x021D385C +_020CF38C: .word 0x021D3848 +_020CF390: .word 0x021D3854 +_020CF394: .word 0x021D3838 + + arm_func_start SND_CommandInit +SND_CommandInit: ; 0x020CF398 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + bl InitPXI + ldr r3, _020CF478 ; =0x021D3B00 + ldr r0, _020CF47C ; =0x021D3838 + mov r4, #0x0 + str r3, [r0, #0x0] + mov r1, r3 + mov r0, #0x18 +_020CF3BC: + add r4, r4, #0x1 + mla r2, r4, r0, r1 + cmp r4, #0xff + str r2, [r3], #0x18 + blt _020CF3BC + ldr r7, _020CF480 ; =0x021D4B00 + mov r10, #0x0 + ldr r5, _020CF484 ; =0x021D3840 + ldr r4, _020CF488 ; =0x021D3844 + ldr lr, _020CF48C ; =0x021D3854 + ldr ip, _020CF490 ; =0x021D384C + ldr r3, _020CF494 ; =0x021D3850 + ldr r1, _020CF498 ; =0x021D383C + ldr sb, _020CF49C ; =0x021D52E8 + ldr r6, _020CF4A0 ; =0x021D3848 + ldr r2, _020CF4A4 ; =0x021D3858 + mov r8, #0x1 + ldr r0, _020CF4A8 ; =0x021D3880 + ldr fp, _020CF4AC ; =0x021D5360 + str r9, [r6, #0x0] + str r10, [r7, #0x7e8] + str r10, [r5, #0x0] + str r10, [r4, #0x0] + str r10, [lr, #0x0] + str r10, [r12, #0x0] + str r10, [r3, #0x0] + str r8, [r2, #0x0] + str r10, [r1, #0x0] + str r0, [r11, #0x0] + bl SNDi_InitSharedWork + mov r0, r8 + bl SND_AllocCommand +_020CF43C: + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11, lr} + bxeq lr + mov r2, #0x1D + mov r1, fp + str r2, [r0, #0x4] + ldr r1, [r1] + str r1, [r0, #0x8] + bl SND_PushCommand + mov r0, r8 + bl SND_FlushCommand + add sp, sp, #0x4 + ldmia sp!, {r4-r11, lr} + bx lr +_020CF478: .word 0x021D3B00 +_020CF47C: .word 0x021D3838 +_020CF480: .word 0x021D4B00 +_020CF484: .word 0x021D3840 +_020CF488: .word 0x021D3844 +_020CF48C: .word 0x021D3854 +_020CF490: .word 0x021D384C +_020CF494: .word 0x021D3850 +_020CF498: .word 0x021D383C +_020CF49C: .word 0x021D52E8 +_020CF4A0: .word 0x021D3848 +_020CF4A4: .word 0x021D3858 +_020CF4A8: .word 0x021D3880 +_020CF4AC: .word 0x021D5360 + + arm_func_start SNDi_CallAlarmHandler +SNDi_CallAlarmHandler: ; 0x020CF4B0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020CF50C ; =0x021D5300 + and r2, r0, #0xff + mov r1, #0xc + mla r3, r2, r1, r3 + mov r1, r0, asr #0x8 + ldrb r0, [r3, #0x8] + and r1, r1, #0xff + cmp r1, r0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r1, [r3, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldr r0, [r3, #0x4] + blx r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CF50C: .word 0x021D5300 + + arm_func_start SNDi_SetAlarmHandler +SNDi_SetAlarmHandler: + mov r3, #0xc + mul r3, r0, r3 + ldr r0, _020CF53C ; =0x021D5300 + str r1, [r0, r3] + add r1, r0, r3 + str r2, [r1, #0x4] + ldrb r0, [r1, #0x8] + add r0, r0, #0x1 + strb r0, [r1, #0x8] + ldrb r0, [r1, #0x8] + bx lr + .balign 4 +_020CF53C: .word 0x021D5300 + + arm_func_start SNDi_IncAlarmId +SNDi_IncAlarmId: ; 0x020CF540 + ldr r2, _020CF55C ; =0x021D5300 + mov r1, #0xc + mla r1, r0, r1, r2 + ldrb r0, [r1, #0x8] + add r0, r0, #0x1 + strb r0, [r1, #0x8] + bx lr + .balign 4 +_020CF55C: .word 0x021D5300 + + arm_func_start SND_AlarmInit +SND_AlarmInit: ; 0x020CF560 + ldr r1, _020CF58C ; =0x021D5300 + mov r2, #0x0 + mov r0, r2 +_020CF56C: + str r0, [r1, #0x0] + str r0, [r1, #0x4] + add r2, r2, #0x1 + strb r0, [r1, #0x8] + cmp r2, #0x8 + add r1, r1, #0xc + blt _020CF56C + bx lr + .balign 4 +_020CF58C: .word 0x021D5300 + + arm_func_start SNDi_InitSharedWork +SNDi_InitSharedWork: ; 0x020CF590 + stmdb sp!, {r4,lr} + mov r4, #0x0 + str r4, [r0, #0x4] + strh r4, [r0, #0x8] + strh r4, [r0, #0xa] + mov r12, r0 + str r4, [r0, #0x0] + mov r3, r4 + mvn r2, #0x0 +_020CF5B4: + mov lr, r3 + str r3, [r12, #0x40] +_020CF5BC: + add r1, r12, lr, lsl #0x1 + add lr, lr, #0x1 + strh r2, [r1, #0x20] + cmp lr, #0x10 + blt _020CF5BC + add r4, r4, #0x1 + cmp r4, #0x10 + add r12, r12, #0x24 + blt _020CF5B4 + mov r3, #0x0 + mvn r2, #0x0 +_020CF5E8: + add r1, r0, r3, lsl #0x1 + add r1, r1, #0x200 + add r3, r3, #0x1 + strh r2, [r1, #0x60] + cmp r3, #0x10 + blt _020CF5E8 + mov r1, #0x280 + bl DC_FlushRange + ldmia sp!, {r4,lr} + bx lr + + arm_func_start SNDi_GetFinishedCommandTag +SNDi_GetFinishedCommandTag: ; 0x020CF610 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020CF640 ; =0x021D5360 + mov r1, #0x4 + ldr r0, [r0, #0x0] + bl DC_InvalidateRange + ldr r0, _020CF640 ; =0x021D5360 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CF640: .word 0x021D5360 + + arm_func_start SND_GetPlayerTickCounter +SND_GetPlayerTickCounter: ; 0x020CF644 + stmdb sp!, {r4,lr} + mov r1, #0x24 + mul r4, r0, r1 + ldr r0, _020CF680 ; =0x021D5360 + mov r1, #0x4 + ldr r0, [r0, #0x0] + add r0, r0, #0x40 + add r0, r0, r4 + bl DC_InvalidateRange + ldr r0, _020CF680 ; =0x021D5360 + ldr r0, [r0, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x40] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020CF680: .word 0x021D5360 + + arm_func_start SND_GetChannelStatus +SND_GetChannelStatus: ; 0x020CF684 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020CF6B8 ; =0x021D5360 + mov r1, #0x2 + ldr r0, [r0, #0x0] + add r0, r0, #0x8 + bl DC_InvalidateRange + ldr r0, _020CF6B8 ; =0x021D5360 + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CF6B8: .word 0x021D5360 + + arm_func_start SND_GetPlayerStatus +SND_GetPlayerStatus: ; 0x020CF6BC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020CF6F0 ; =0x021D5360 + mov r1, #0x4 + ldr r0, [r0, #0x0] + add r0, r0, #0x4 + bl DC_InvalidateRange + ldr r0, _020CF6F0 ; =0x021D5360 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020CF6F0: .word 0x021D5360 + + arm_func_start SND_CalcChannelVolume +SND_CalcChannelVolume: ; 0x020CF6F4 + ldr r1, _020CF75C ; =0xFFFFFD2D + cmp r0, r1 + movlt r0, r1 + blt _020CF70C + cmp r0, #0x0 + movgt r0, #0x0 +_020CF70C: + ldr r1, _020CF760 ; =0x000002D3 + ldr r2, _020CF764 ; =0x02103CAC + add r3, r0, r1 + mvn r1, #0xef + cmp r0, r1 + ldrb r2, [r2, r3] + movlt r0, #0x3 + blt _020CF74C + mvn r1, #0x77 + cmp r0, r1 + movlt r0, #0x2 + blt _020CF74C + mvn r1, #0x3b + cmp r0, r1 + movlt r0, #0x1 + movge r0, #0x0 +_020CF74C: + orr r0, r2, r0, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + .balign 4 +_020CF75C: .word 0xFFFFFD2D +_020CF760: .word 0x000002D3 +_020CF764: .word 0x02103CAC + + arm_func_start SND_GetWaveDataAddress +SND_GetWaveDataAddress: ; 0x020CF768 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl SNDi_LockMutex + add r0, r5, r4, lsl #0x2 + ldr r4, [r0, #0x3c] + cmp r4, #0x0 + beq _020CF798 + cmp r4, #0x2000000 + addcc r4, r5, r4 + b _020CF79C +_020CF798: + mov r4, #0x0 +_020CF79C: + bl SNDi_UnlockMutex + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SND_SetWaveDataAddress +SND_SetWaveDataAddress: ; 0x020CF7B0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl SNDi_LockMutex + add r0, r6, #0x3c + add r2, r6, r5, lsl #0x2 + add r0, r0, r5, lsl #0x2 + mov r1, #0x4 + str r4, [r2, #0x3c] + bl DC_StoreRange + bl SNDi_UnlockMutex + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start SND_GetWaveDataCount +SND_GetWaveDataCount: ; 0x020CF7E8 + ldr r0, [r0, #0x38] + bx lr + + arm_func_start SND_GetNextInstData +SND_GetNextInstData: ; 0x020CF7F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r2, #0x0] + ldr r3, [r0, #0x38] + cmp r4, r3 + bhs _020CF9B8 + mov r12, #0x0 +_020CF80C: + add r3, r0, r4, lsl #0x2 + ldr r4, [r3, #0x3c] + strb r4, [r1, #0x0] + ldrb r3, [r1, #0x0] + cmp r3, #0x10 + bgt _020CF850 + cmp r3, #0x10 + bge _020CF8A8 + cmp r3, #0x5 + addls pc, pc, r3, lsl #0x2 + b _020CF998 +_020CF838: + b _020CF998 + b _020CF85C + b _020CF85C + b _020CF85C + b _020CF85C + b _020CF85C +_020CF850: + cmp r3, #0x11 + beq _020CF924 + b _020CF998 +_020CF85C: + mov r3, r4, lsr #0x8 + add r5, r0, r4, lsr #0x8 + ldrh r4, [r0, r3] + ldrh r3, [r5, #0x2] + add sp, sp, #0x4 + mov r0, #0x1 + strh r4, [r1, #0x2] + strh r3, [r1, #0x4] + ldrh r4, [r5, #0x4] + ldrh r3, [r5, #0x6] + strh r4, [r1, #0x6] + strh r3, [r1, #0x8] + ldrh r3, [r5, #0x8] + strh r3, [r1, #0xA] + ldr r1, [r2] + add r1, r1, #0x1 + str r1, [r2] + ldmia sp!, {r4-r5,lr} + bx lr +_020CF8A8: + add r5, r0, r4, lsr #0x8 + b _020CF904 +_020CF8B0: + mov r0, #0xc + mla r12, lr, r0, r5 + ldrh r4, [r12, #0x2] + ldrh r3, [r12, #0x4] + add sp, sp, #0x4 + mov r0, #0x1 + strh r4, [r1, #0x0] + strh r3, [r1, #0x2] + ldrh r4, [r12, #0x6] + ldrh r3, [r12, #0x8] + strh r4, [r1, #0x4] + strh r3, [r1, #0x6] + ldrh r4, [r12, #0xa] + ldrh r3, [r12, #0xc] + strh r4, [r1, #0x8] + strh r3, [r1, #0xa] + ldr r1, [r2, #0x4] + add r1, r1, #0x1 + str r1, [r2, #0x4] + ldmia sp!, {r4-r5,lr} + bx lr +_020CF904: + ldrb r4, [r5, #0x1] + ldrb r3, [r5, #0x0] + ldr lr, [r2, #0x4] + sub r3, r4, r3 + add r3, r3, #0x1 + cmp lr, r3 + blo _020CF8B0 + b _020CF998 +_020CF924: + add r4, r0, r4, lsr #0x8 + b _020CF98C +_020CF92C: + ldrb lr, [r4, r3] + cmp lr, #0x0 + beq _020CF998 + mov r0, #0xc + mla lr, r3, r0, r4 + ldrh r12, [lr, #0x8] + ldrh r3, [lr, #0xa] + add sp, sp, #0x4 + mov r0, #0x1 + strh r12, [r1, #0x0] + strh r3, [r1, #0x2] + ldrh r12, [lr, #0xc] + ldrh r3, [lr, #0xe] + strh r12, [r1, #0x4] + strh r3, [r1, #0x6] + ldrh r12, [lr, #0x10] + ldrh r3, [lr, #0x12] + strh r12, [r1, #0x8] + strh r3, [r1, #0xa] + ldr r1, [r2, #0x4] + add r1, r1, #0x1 + str r1, [r2, #0x4] + ldmia sp!, {r4-r5,lr} + bx lr +_020CF98C: + ldr r3, [r2, #0x4] + cmp r3, #0x8 + blo _020CF92C +_020CF998: + ldr r3, [r2, #0x0] + add r3, r3, #0x1 + str r3, [r2, #0x0] + str r12, [r2, #0x4] + ldr r4, [r2, #0x0] + ldr r3, [r0, #0x38] + cmp r4, r3 + blo _020CF80C +_020CF9B8: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start SND_GetFirstInstDataPos +SND_GetFirstInstDataPos: ; 0x020CF9C8 + sub sp, sp, #0x8 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + str r1, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x8 + bx lr + + arm_func_start SND_DestroyWaveArc +SND_DestroyWaveArc: ; 0x020CF9E8 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + bl SNDi_LockMutex + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _020CFA28 + mov r5, #0x0 + mov r4, #0x8 +_020CFA08: + ldr r6, [r0, #0x4] + mov r1, r4 + str r5, [r0, #0x0] + str r5, [r0, #0x4] + bl DC_StoreRange + mov r0, r6 + cmp r6, #0x0 + bne _020CFA08 +_020CFA28: + bl SNDi_UnlockMutex + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start SND_DestroyBank +SND_DestroyBank: ; 0x020CFA34 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + bl SNDi_LockMutex + add r5, r7, #0x18 + mov r6, #0x0 + mov r8, #0x8 + mov r4, #0x3c +_020CFA50: + add r1, r7, r6, lsl #0x3 + ldr r0, [r1, #0x18] + cmp r0, #0x0 + beq _020CFAB8 + ldr r3, [r0, #0x18] + cmp r5, r3 + bne _020CFA80 + ldr r2, [r1, #0x1c] + mov r1, r4 + str r2, [r0, #0x18] + bl DC_StoreRange + b _020CFAB8 +_020CFA80: + cmp r3, #0x0 + beq _020CFAA0 +_020CFA88: + ldr r0, [r3, #0x4] + cmp r5, r0 + beq _020CFAA0 + mov r3, r0 + cmp r0, #0x0 + bne _020CFA88 +_020CFAA0: + add r0, r7, r6, lsl #0x3 + ldr r2, [r0, #0x1c] + mov r0, r3 + mov r1, r8 + str r2, [r3, #0x4] + bl DC_StoreRange +_020CFAB8: + add r6, r6, #0x1 + cmp r6, #0x4 + add r5, r5, #0x8 + blt _020CFA50 + bl SNDi_UnlockMutex + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start SND_AssignWaveArc +SND_AssignWaveArc: ; 0x020CFAD4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl SNDi_LockMutex + add r3, r6, r5, lsl #0x3 + ldr r2, [r3, #0x18] + mov r12, r5, lsl #0x3 + cmp r2, #0x0 + beq _020CFB70 + cmp r4, r2 + bne _020CFB10 + bl SNDi_UnlockMutex + ldmia sp!, {r4-r6,lr} + bx lr +_020CFB10: + add r1, r6, #0x18 + ldr r0, [r2, #0x18] + add r12, r1, r12 + cmp r12, r0 + bne _020CFB3C + ldr r0, [r3, #0x1c] + mov r1, #0x3c + str r0, [r2, #0x18] + ldr r0, [r3, #0x18] + bl DC_StoreRange + b _020CFB70 +_020CFB3C: + cmp r0, #0x0 + beq _020CFB5C +_020CFB44: + ldr r1, [r0, #0x4] + cmp r12, r1 + beq _020CFB5C + mov r0, r1 + cmp r1, #0x0 + bne _020CFB44 +_020CFB5C: + add r1, r6, r5, lsl #0x3 + ldr r2, [r1, #0x1c] + mov r1, #0x8 + str r2, [r0, #0x4] + bl DC_StoreRange +_020CFB70: + add r0, r6, #0x18 + ldr r1, [r4, #0x18] + add r0, r0, r5, lsl #0x3 + str r0, [r4, #0x18] + add r0, r6, r5, lsl #0x3 + str r1, [r0, #0x1c] + str r4, [r0, #0x18] + bl SNDi_UnlockMutex + mov r0, r6 + mov r1, #0x3c + bl DC_StoreRange + mov r0, r4 + mov r1, #0x3c + bl DC_StoreRange + ldmia sp!, {r4-r6,lr} + bx lr diff --git a/arm9/asm/SPI_arm9.s b/arm9/asm/SPI_arm9.s new file mode 100644 index 00000000..915bb22c --- /dev/null +++ b/arm9/asm/SPI_arm9.s @@ -0,0 +1,1487 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + + arm_func_start TP_CheckError +TP_CheckError: ; 0x020D36C4 + ldr r1, _020D36D4 ; =0x021D5474 + ldrh r1, [r1, #0x34] + and r0, r1, r0 + bx lr + .balign 4 +_020D36D4: .word 0x021D5474 + + arm_func_start TP_WaitBusy +TP_WaitBusy: ; 0x020D36D8 + ldr r1, _020D36EC ; =0x021D5474 +_020D36DC: + ldrh r2, [r1, #0x36] + ands r2, r2, r0 + bne _020D36DC + bx lr + .balign 4 +_020D36EC: .word 0x021D5474 + + arm_func_start TP_GetCalibratedPoint +TP_GetCalibratedPoint: ; 0x020D36F0 + stmdb sp!, {r4-r6,lr} + ldr r2, _020D3818 ; =0x021D5474 + ldrh r2, [r2, #0x30] + cmp r2, #0x0 + bne _020D372C + ldrh r3, [r1, #0x0] + ldrh r2, [r1, #0x2] + strh r3, [r0, #0x0] + strh r2, [r0, #0x2] + ldrh r2, [r1, #0x4] + ldrh r1, [r1, #0x6] + strh r2, [r0, #0x4] + strh r1, [r0, #0x6] + ldmia sp!, {r4-r6,lr} + bx lr +_020D372C: + ldrh r3, [r1, #0x4] + ldr r2, _020D381C ; =0x021D548C + strh r3, [r0, #0x4] + ldrh r3, [r1, #0x6] + strh r3, [r0, #0x6] + ldrh r3, [r1, #0x4] + cmp r3, #0x0 + moveq r1, #0x0 + streqh r1, [r0, #0x0] + streqh r1, [r0, #0x2] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrh r4, [r1, #0x0] + ldr r3, [r2, #0x0] + ldr lr, [r2, #0x8] + mov r12, r4, lsl #0x2 + mov r4, r12, asr #0x1f + subs r12, r12, r3 + sbc r3, r4, r3, asr #0x1f + umull r6, r5, lr, r12 + mla r5, lr, r3, r5 + mov r3, lr, asr #0x1f + mla r5, r3, r12, r5 + mov r3, r6, lsr #0x16 + orr r3, r3, r5, lsl #0xa + strh r3, [r0, #0x0] + ldrsh r3, [r0, #0x0] + cmp r3, #0x0 + movlt r3, #0x0 + strlth r3, [r0, #0x0] + blt _020D37B4 + cmp r3, #0xff + movgt r3, #0xff + strgth r3, [r0, #0x0] +_020D37B4: + ldrh r3, [r1, #0x2] + ldr r1, [r2, #0xc] + ldr r12, [r2, #0x14] + mov r3, r3, lsl #0x2 + mov r2, r3, asr #0x1f + subs r3, r3, r1 + sbc r1, r2, r1, asr #0x1f + umull r4, lr, r12, r3 + mla lr, r12, r1, lr + mov r1, r12, asr #0x1f + mla lr, r1, r3, lr + mov r1, r4, lsr #0x16 + orr r1, r1, lr, lsl #0xa + strh r1, [r0, #0x2] + ldrsh r1, [r0, #0x2] + cmp r1, #0x0 + movlt r1, #0x0 + strlth r1, [r0, #0x2] + ldmltia sp!, {r4-r6,lr} + bxlt lr + cmp r1, #0xbf + movgt r1, #0xbf + strgth r1, [r0, #0x2] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020D3818: .word 0x021D5474 +_020D381C: .word 0x021D548C + + arm_func_start TP_CalcCalibrateParam +TP_CalcCalibrateParam: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r6, r1 + mov r7, r0 + mov r5, r2 + mov r4, r3 + cmp r6, #0x1000 + bhs _020D3860 + cmp r5, #0x1000 + bhs _020D3860 + ldrh r8, [sp, #0x2c] + cmp r8, #0x1000 + bhs _020D3860 + ldrh r3, [sp, #0x30] + cmp r3, #0x1000 + blo _020D3870 +_020D3860: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D3870: + cmp r4, #0x100 + bhs _020D389C + ldrh r2, [sp, #0x34] + cmp r2, #0x100 + bhs _020D389C + ldrh r1, [sp, #0x28] + cmp r1, #0xc0 + bhs _020D389C + ldrh r0, [sp, #0x38] + cmp r0, #0xc0 + blo _020D38AC +_020D389C: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D38AC: + cmp r4, r2 + beq _020D38CC + cmp r1, r0 + beq _020D38CC + cmp r6, r8 + beq _020D38CC + cmp r5, r3 + bne _020D38DC +_020D38CC: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D38DC: + bl OS_DisableInterrupts + ldrh r1, [sp, #0x2c] + ldr r3, _020D3A80 ; =0x04000280 + ldr fp, _020D3A84 ; =0x04000290 + str r1, [sp, #0x0] + ldr r2, [sp, #0x0] + ldrh r1, [sp, #0x34] + sub r9, r6, r2 + mov r2, #0x0 + mov r12, r9, lsl #0x8 + strh r2, [r3, #0x0] + str r12, [r11, #0x0] + ldrh r8, [sp, #0x30] + ldrh r10, [sp, #0x38] + ldrh r9, [sp, #0x28] + ldr fp, _020D3A88 ; =0x04000298 + sub r12, r4, r1 + str r12, [r11, #0x0] + str r2, [r11, #0x4] + sub r11, r5, r8 + sub r2, r9, r10 +_020D3930: + ldrh r12, [r3, #0x0] + ands r12, r12, #0x8000 + bne _020D3930 + ldr ip, _020D3A8C ; =0x040002A0 + mov r11, r11, lsl #0x8 + ldr lr, [r12, #0x0] + mov r12, #0x0 + strh r12, [r3, #0x0] + ldr r3, _020D3A84 ; =0x04000290 + cmp lr, #0x8000 + str r11, [r3, #0x0] + ldr r3, _020D3A88 ; =0x04000298 + str r2, [r3, #0x0] + mov r2, r3 + str r12, [r2, #0x4] + bge _020D3980 + mov r2, #0x8000 + rsb r2, r2, #0x0 + cmp lr, r2 + bge _020D3994 +_020D3980: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D3994: + strh lr, [r7, #0x4] + ldrsh r11, [r7, #0x4] + add r3, r4, r1 + ldr r1, [sp, #0x0] + add r4, r6, r1 + mul r1, r11, r3 + mov r3, r4, lsl #0x8 + sub r1, r3, r1 + mov r1, r1, lsl #0x9 + mov r1, r1, asr #0x10 + cmp r1, #0x8000 + bge _020D39CC + cmp r1, r2 + bge _020D39E0 +_020D39CC: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D39E0: + ldr r2, _020D3A80 ; =0x04000280 + strh r1, [r7, #0x0] +_020D39E8: + ldrh r1, [r2, #0x0] + ands r1, r1, #0x8000 + bne _020D39E8 + ldr r1, _020D3A8C ; =0x040002A0 + ldr r4, [r1, #0x0] + bl OS_RestoreInterrupts + cmp r4, #0x8000 + bge _020D3A18 + mov r0, #0x8000 + rsb r1, r0, #0x0 + cmp r4, r1 + bge _020D3A28 +_020D3A18: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D3A28: + strh r4, [r7, #0x6] + ldrsh r2, [r7, #0x6] + add r0, r9, r10 + add r3, r5, r8 + mul r0, r2, r0 + mov r2, r3, lsl #0x8 + sub r0, r2, r0 + mov r0, r0, lsl #0x9 + mov r0, r0, asr #0x10 + cmp r0, #0x8000 + bge _020D3A5C + cmp r0, r1 + bge _020D3A6C +_020D3A5C: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020D3A6C: + strh r0, [r7, #0x2] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020D3A80: .word 0x04000280 +_020D3A84: .word 0x04000290 +_020D3A88: .word 0x04000298 +_020D3A8C: .word 0x040002A0 + + arm_func_start TP_GetLatestIndexInAuto +TP_GetLatestIndexInAuto: ; 0x020D3A90 + ldr r0, _020D3A9C ; =0x021D5474 + ldrh r0, [r0, #0xc] + bx lr + .balign 4 +_020D3A9C: .word 0x021D5474 + + arm_func_start TP_GetLatestRawPointInAuto +TP_GetLatestRawPointInAuto: ; 0x020D3AA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r1, #0x3 + ldr lr, _020D3C10 ; =0x021D5474 + strh r1, [r0, #0x6] + ldrh r1, [lr, #0xe] + ldrh r3, [lr, #0xc] + cmp r1, #0x1 + beq _020D3AD0 + ldrh r1, [lr, #0x14] + cmp r1, #0x1 + bne _020D3B0C +_020D3AD0: + ldr r1, _020D3C10 ; =0x021D5474 + mov r2, r3, lsl #0x3 + ldr r1, [r1, #0x10] + add sp, sp, #0x4 + add r3, r1, r3, lsl #0x3 + ldrh r2, [r1, r2] + ldrh r1, [r3, #0x2] + strh r2, [r0, #0x0] + strh r1, [r0, #0x2] + ldrh r2, [r3, #0x4] + ldrh r1, [r3, #0x6] + strh r2, [r0, #0x4] + strh r1, [r0, #0x6] + ldmia sp!, {r4-r5,lr} + bx lr +_020D3B0C: + add r1, r0, #0x6 + mov r12, #0x0 + b _020D3BE0 +_020D3B18: + subs r5, r3, r12 + ldr r2, [lr, #0x10] + addmi r5, r5, r4 + add r2, r2, r5, lsl #0x3 + ldrh r4, [r2, #0x4] + cmp r4, #0x0 + bne _020D3B60 + ldrh r3, [r2, #0x0] + ldrh r1, [r2, #0x2] + add sp, sp, #0x4 + strh r3, [r0, #0x0] + strh r1, [r0, #0x2] + ldrh r3, [r2, #0x4] + ldrh r1, [r2, #0x6] + strh r3, [r0, #0x4] + strh r1, [r0, #0x6] + ldmia sp!, {r4-r5,lr} + bx lr +_020D3B60: + ldrh r4, [r0, #0x6] + ands r4, r4, #0x1 + beq _020D3B90 + ldrh r4, [r2, #0x6] + ands r4, r4, #0x1 + bne _020D3B90 + ldrh r4, [r2, #0x0] + cmp r12, #0x0 + strh r4, [r0, #0x0] + ldrneh r4, [r1, #0x0] + bicne r4, r4, #0x1 + strneh r4, [r1, #0x0] +_020D3B90: + ldrh r4, [r0, #0x6] + ands r4, r4, #0x2 + beq _020D3BC0 + ldrh r4, [r2, #0x6] + ands r4, r4, #0x2 + bne _020D3BC0 + ldrh r2, [r2, #0x2] + cmp r12, #0x0 + strh r2, [r0, #0x2] + ldrneh r2, [r1, #0x0] + bicne r2, r2, #0x2 + strneh r2, [r1, #0x0] +_020D3BC0: + ldrh r2, [r0, #0x6] + cmp r2, #0x0 + moveq r1, #0x1 + streqh r1, [r0, #0x4] + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + add r12, r12, #0x1 +_020D3BE0: + ldrh r2, [lr, #0xe] + cmp r12, r2 + bge _020D3BFC + ldrh r4, [lr, #0x14] + sub r2, r4, #0x1 + cmp r12, r2 + blt _020D3B18 +_020D3BFC: + mov r1, #0x1 + strh r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020D3C10: .word 0x021D5474 + + arm_func_start TP_RequestAutoSamplingStopAsync +TP_RequestAutoSamplingStopAsync: ; 0x020D3C14 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + ldr r1, _020D3CB0 ; =0x03000200 + mov r0, #0x6 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D3C30: + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + cmp r0, #0x0 + bne _020D3C84 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r0, _020D3CB4 + ldrh r1, [r0, #0x34] + ldr r3, [r0] + orr r1, r1, #0x4 + strh r1, [r0, #0x34] + cmp r3, #0x0 + ldmeqia sp!, {r4, lr} + bxeq lr + mov r0, #0x2 + mov r1, #0x4 + mov r2, #0x0 + blx r3 + ldmia sp!, {r4, lr} + bx lr +_020D3C84: + ldr r1, _020D3CB4 + mov r0, r4 + ldrh r2, [r1, #0x36] + orr r2, r2, #0x4 + strh r2, [r1, #0x36] + ldrh r2, [r1, #0x34] + bic r2, r2, #0x4 + strh r2, [r1, #0x34] + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr +_020D3CB0: .word 0x03000200 +_020D3CB4: .word 0x021D5474 + + arm_func_start TP_RequestAutoSamplingStartAsync +TP_RequestAutoSamplingStartAsync: ; 0x020D3CB8 + stmdb sp!, {r4-r6,lr} + ldr r4, _020D3DC0 ; =0x021D5474 + mov r5, r1 + mov r12, #0x0 + mov r6, r0 + str r2, [r4, #0x10] + strh r12, [r4, #0xc] + strh r5, [r4, #0xe] + strh r3, [r4, #0x14] + cmp r3, #0x0 + bls _020D3D00 + mov r1, r12 +_020D3CE8: + ldr r0, [r4, #0x10] + add r0, r0, r12, lsl #0x3 + add r12, r12, #0x1 + strh r1, [r0, #0x4] + cmp r12, r3 + blo _020D3CE8 +_020D3D00: + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _020D3DC4 ; =0x02000100 + and r1, r5, #0xff + orr r1, r1, r0 + mov r0, #0x6 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D3D20: + cmp r0, #0x0 + movlt r0, #0x0 + blt _020D3D4C + ldr r1, _020D3DC8 + mov r0, #0x6 + orr r1, r6, r1 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + movge r0, #0x1 +_020D3D4C: + ands r0, r0, #0xFF + bne _020D3D94 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r0, _020D3DC0 + ldrh r1, [r0, #0x34] + ldr r3, [r0] + orr r1, r1, #0x2 + strh r1, [r0, #0x34] + cmp r3, #0x0 + ldmeqia sp!, {r4-r6, lr} + bxeq lr + mov r0, #0x1 + mov r1, #0x4 + mov r2, #0x0 + blx r3 + ldmia sp!, {r4-r6, lr} + bx lr +_020D3D94: + ldr r1, _020D3DC0 + mov r0, r4 + ldrh r2, [r1, #0x36] + orr r2, r2, #0x2 + strh r2, [r1, #0x36] + ldrh r2, [r1, #0x34] + bic r2, r2, #0x2 + strh r2, [r1, #0x34] + bl OS_RestoreInterrupts + ldmia sp!, {r4-r6, lr} + bx lr +_020D3DC0: .word 0x021D5474 +_020D3DC4: .word 0x02000100 +_020D3DC8: .word 0x01010000 + + arm_func_start TP_WaitRawResult +TP_WaitRawResult: ; 0x020D3DCC + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x1 + bl TP_WaitBusy + ldr r1, _020D3E20 ; =0x021D5474 + ldrh r0, [r1, #0x34] + ands r0, r0, #0x1 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + ldrh r3, [r1, #0x4] + ldrh r2, [r1, #0x6] + mov r0, #0x0 + strh r3, [r4, #0x0] + strh r2, [r4, #0x2] + ldrh r2, [r1, #0x8] + ldrh r1, [r1, #0xa] + strh r2, [r4, #0x4] + strh r1, [r4, #0x6] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020D3E20: .word 0x021D5474 + + arm_func_start TP_RequestSamplingAsync +TP_RequestSamplingAsync: ; 0x020D3E24 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + mov r0, #0x6 + mov r1, #0x3000000 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D3E40: + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + cmp r0, #0x0 + bne _020D3E94 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r0, _20D3EC0 + ldrh r1, [r0, #0x34] + ldr r3, [r0] + orr r1, r1, #0x1 + strh r1, [r0, #0x34] + cmp r3, #0x0 + ldmeqia sp!, {r4, lr} + bxeq lr + mov r0, #0x0 + mov r2, r0 + mov r1, #0x4 + blx r3 + ldmia sp!, {r4, lr} + bx lr +_020D3E94: + ldr r1, _20D3EC0 + mov r0, r4 + ldrh r2, [r1, #0x36] + orr r2, r2, #0x1 + strh r2, [r1, #0x36] + ldrh r2, [r1, #0x34] + bic r2, r2, #0x1 + strh r2, [r1, #0x34] + bl OS_RestoreInterrupts + ldmia sp!, {r4, lr} + bx lr +_20D3EC0: .word 0x021D5474 + + arm_func_start TP_SetCalibrateParam +TP_SetCalibrateParam: ; 0x020D3EC4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r0 + ldreq r0, _020D3FF8 ; =0x021D5474 + moveq r1, #0x0 + streqh r1, [r0, #0x30] + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + bl OS_DisableInterrupts + ldrsh lr, [r4, #0x4] + cmp lr, #0x0 + beq _020D3F50 + ldr r5, _020D3FFC ; =0x04000280 + mov r12, #0x0 + ldr r2, _020D4000 ; =0x04000290 + strh r12, [r5, #0x0] + mov r3, #0x10000000 + ldr r1, _020D4004 ; =0x04000298 + str r3, [r2, #0x0] + str lr, [r1, #0x0] + str r12, [r1, #0x4] + ldrsh r2, [r4, #0x0] + ldr r1, _020D3FF8 ; =0x021D5474 + str r2, [r1, #0x18] + ldrsh r2, [r4, #0x4] + str r2, [r1, #0x1c] +_020D3F30: + ldrh r1, [r5, #0x0] + ands r1, r1, #0x8000 + bne _020D3F30 + ldr r2, _020D4008 ; =0x040002A0 + ldr r1, _020D3FF8 ; =0x021D5474 + ldr r2, [r2, #0x0] + str r2, [r1, #0x20] + b _020D3F64 +_020D3F50: + ldr r1, _020D3FF8 ; =0x021D5474 + mov r2, #0x0 + str r2, [r1, #0x18] + str r2, [r1, #0x1c] + str r2, [r1, #0x20] +_020D3F64: + ldrsh r5, [r4, #0x6] + cmp r5, #0x0 + beq _020D3FC8 + ldr ip, _020D3FFC ; =0x04000280 + mov lr, #0x0 + ldr r2, _020D4000 ; =0x04000290 + strh lr, [r12, #0x0] + mov r3, #0x10000000 + ldr r1, _020D4004 ; =0x04000298 + str r3, [r2, #0x0] + str r5, [r1, #0x0] + str lr, [r1, #0x4] + ldrsh r2, [r4, #0x2] + ldr r1, _020D3FF8 ; =0x021D5474 + str r2, [r1, #0x24] + ldrsh r2, [r4, #0x6] + str r2, [r1, #0x28] +_020D3FA8: + ldrh r1, [r12, #0x0] + ands r1, r1, #0x8000 + bne _020D3FA8 + ldr r2, _020D4008 ; =0x040002A0 + ldr r1, _020D3FF8 ; =0x021D5474 + ldr r2, [r2, #0x0] + str r2, [r1, #0x2c] + b _020D3FDC +_020D3FC8: + ldr r1, _020D3FF8 ; =0x021D5474 + mov r2, #0x0 + str r2, [r1, #0x24] + str r2, [r1, #0x28] + str r2, [r1, #0x2c] +_020D3FDC: + bl OS_RestoreInterrupts + ldr r0, _020D3FF8 ; =0x021D5474 + mov r1, #0x1 + strh r1, [r0, #0x30] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020D3FF8: .word 0x021D5474 +_020D3FFC: .word 0x04000280 +_020D4000: .word 0x04000290 +_020D4004: .word 0x04000298 +_020D4008: .word 0x040002A0 + + arm_func_start TP_GetUserInfo +TP_GetUserInfo: ; 0x020D400C + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x18 + ldr ip, _020D40B4 ; =0x027FFC80 + mov r4, r0 + ldrh r1, [r12, #0x58] + ldrh r2, [r12, #0x5a] + ldrb r3, [r12, #0x5c] + cmp r1, #0x0 + ldrb lr, [r12, #0x5d] + ldrh r6, [r12, #0x5e] + ldrh r5, [r12, #0x60] + ldrb r0, [r12, #0x62] + ldrb r12, [r12, #0x63] + bne _020D405C + cmp r6, #0x0 + bne _020D405C + cmp r2, #0x0 + bne _020D405C + cmp r5, #0x0 + beq _020D4080 +_020D405C: + str lr, [sp, #0x0] + str r6, [sp, #0x4] + str r5, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, r4 + str r12, [sp, #0x10] + bl TP_CalcCalibrateParam +_020D4078: + cmp r0, #0 + beq _020D40A4 +_020D4080: + mov r0, #0x0 + strh r0, [r4, #0x0] + strh r0, [r4, #0x2] + strh r0, [r4, #0x4] + strh r0, [r4, #0x6] + add sp, sp, #0x18 + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020D40A4: + mov r0, #0x1 + add sp, sp, #0x18 + ldmia sp!, {r4-r6,lr} + bx lr +_020D40B4: .word 0x027FFC80 + + arm_func_start TP_Init +TP_Init: ; 0x020D40B8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020D413C ; =0x021D5470 + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r1, #0x1 + strh r1, [r0, #0x0] + bl PXI_Init + ldr r0, _020D4140 ; =0x021D5474 + mov r1, #0x0 + strh r1, [r0, #0x32] + strh r1, [r0, #0x36] + strh r1, [r0, #0xc] + str r1, [r0, #0x0] + str r1, [r0, #0x10] + strh r1, [r0, #0x30] + strh r1, [r0, #0x34] + mov r5, #0x6 + mov r4, #0x1 +_020D4110: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady +_020D411C: + cmp r0, #0x0 + beq _020D4110 + ldr r1, _020D4144 + mov r0, #0x6 + bl PXI_SetFifoRecvCallback + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020D413C: .word 0x021D5470 ; initial$7594 +_020D4140: .word 0x021D5474 ; tpState +_020D4144: .word TPi_TpCallback + + arm_func_start TPi_TpCallback +TPi_TpCallback: ; 0x020D4148 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r0, r1, lsl #0x10 + mov r3, r0, lsr #0x10 + and r0, r3, #0x7f00 + mov r0, r0, lsl #0x8 + cmp r2, #0x0 + mov r0, r0, lsr #0x10 + beq _020D41AC + ldr r1, _020D43FC ; =0x021D5474 + mov r2, #0x1 + ldrh r4, [r1, #0x34] + ldr r3, [r1, #0x0] + orr r2, r4, r2, lsl r0 + cmp r3, #0x0 + strh r2, [r1, #0x34] + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r1, #0x4 + mov r2, #0x0 + blx r3 + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020D41AC: + cmp r0, #0x10 + bne _020D427C + ldr r1, _020D43FC ; =0x021D5474 + ldrh r3, [r1, #0xc] + ldrh r2, [r1, #0x14] + add r3, r3, #0x1 + strh r3, [r1, #0xc] + ldrh r3, [r1, #0xc] + cmp r3, r2 + movcs r2, #0x0 + strcsh r2, [r1, #0xc] + ldr r1, _020D4400 ; =0x027FFFAA + ldr r2, _020D43FC ; =0x021D5474 + ldrh r3, [r1, #0x0] + ldr r1, _020D4404 ; =0x027FFFAC + ldrh r12, [r2, #0xc] + strh r3, [sp, #0x0] + ldrh r1, [r1, #0x0] + ldr r4, [r2, #0x10] + mov lr, r12, lsl #0x3 + strh r1, [sp, #0x2] + ldr r3, [sp, #0x0] + add r1, r4, r12, lsl #0x3 + mov r3, r3, lsl #0x14 + mov r3, r3, lsr #0x14 + strh r3, [r4, lr] + ldr r3, [sp, #0x0] + mov r3, r3, lsl #0x8 + mov r3, r3, lsr #0x14 + strh r3, [r1, #0x2] + ldr r3, [sp, #0x0] + mov r3, r3, lsl #0x7 + mov r3, r3, lsr #0x1f + and r3, r3, #0xff + strh r3, [r1, #0x4] + ldr r3, [sp, #0x0] + mov r3, r3, lsl #0x5 + mov r3, r3, lsr #0x1e + and r3, r3, #0xff + strh r3, [r1, #0x6] + ldr r3, [r2, #0x0] + cmp r3, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrh r2, [r2, #0xc] + mov r1, #0x0 + and r2, r2, #0xff + blx r3 + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020D427C: + ands r1, r1, #0x1000000 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + and r1, r3, #0xff + cmp r1, #0x4 + addls pc, pc, r1, lsl #0x2 + b _020D43EC +_020D429C: + b _020D42B0 + b _020D43EC + b _020D4390 + b _020D4398 + b _020D4388 +_020D42B0: + cmp r0, #0x0 + beq _020D42D4 + cmp r0, #0x1 + beq _020D4338 + cmp r0, #0x2 + ldreq r1, _020D43FC + moveq r2, #0x0 + streqh r2, [r1, #0x32] + b _020D4344 +_020D42D4: + ldr r1, _020D4400 + ldr r3, _020D4404 + ldrh ip, [r1] + ldr r1, _020D43FC + mov r2, #0x0 + strh ip, [sp, #0x4] + ldrh r3, [r3] + strh r3, [sp, #0x6] + ldr ip, [sp, #0x4] + strh r2, [r1, #0x32] + mov r3, ip, lsl #0x7 + mov r2, ip, lsl #0x5 + mov lr, ip, lsl #0x14 + mov ip, ip, lsl #0x8 + mov r3, r3, lsr #0x1F + mov r2, r2, lsr #0x1E + mov lr, lr, lsr #0x14 + mov ip, ip, lsr #0x14 + and r3, r3, #0xFF + and r2, r2, #0xFF + strh lr, [r1, #0x4] + strh ip, [r1, #0x6] + strh r3, [r1, #0x8] + strh r2, [r1, #0xA] + b _020D4344 +_020D4338: + ldr r1, _020D43FC + mov r2, #0x2 + strh r2, [r1, #0x32] +_020D4344: + ldr r1, _020D43FC + mov r2, #0x1 + ldrh ip, [r1, #0x36] + mvn r2, r2, lsl r0 + ldr r3, [r1] + and r2, ip, r2 + cmp r3, #0x0 + strh r2, [r1, #0x36] + addeq sp, sp, #0x8 + ldmeqia sp!, {r4, lr} + bxeq lr + mov r1, #0x0 + mov r2, r1 + blx r3 + add sp, sp, #0x8 + ldmia sp!, {r4, lr} + bx lr +_020D4388: + mov r4, #0x3 + b _020D439C +_020D4390: + mov r4, #0x1 + b _020D439C +_020D4398: + mov r4, #0x2 +_020D439C: + ldr r1, _020D43FC + mov lr, #0x1 + ldrh ip, [r1, #0x34] + ldr r3, [r1] + mvn r2, lr, lsl r0 + orr ip, ip, lr, lsl r0 + strh ip, [r1, #0x34] + ldrh ip, [r1, #0x36] + cmp r3, #0x0 + addeq sp, sp, #0x8 + and r2, ip, r2 + strh r2, [r1, #0x36] + ldmeqia sp!, {r4, lr} + bxeq lr + and r1, r4, #0xff + mov r2, #0x0 + blx r3 + add sp, sp, #0x8 + ldmia sp!, {r4, lr} + bx lr +_020D43EC: + bl OS_Terminate + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020D43FC: .word 0x021D5474 +_020D4400: .word 0x027FFFAA +_020D4404: .word 0x027FFFAC + + arm_func_start MicWaitBusy +MicWaitBusy: ; 0x020D4408 + ldr ip, _020D441C ; =0x021D54B0 +_020D440C: + ldr r0, [r12, #0x0] + cmp r0, #0x1 + beq _020D440C + bx lr + .balign 4 +_020D441C: .word 0x021D54B0 + + arm_func_start MicGetResultCallback +MicGetResultCallback: ; 0x020D4420 + ldr r1, _020D442C ; =0x021D54B0 + str r0, [r1, #0xc] + bx lr + .balign 4 +_020D442C: .word 0x021D54B0 + + arm_func_start MicStopAutoSampling +MicStopAutoSampling: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D4460 ; =0x03004200 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D4448: + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + add sp, sp, #4 + ldmfd sp!, {lr} + bx lr +_020D4460: .word 0x03004200 + + arm_func_start MicStartAutoSampling +MicStartAutoSampling: ; 0x020D4464 + stmdb sp!, {r4-r6,lr} + ldr ip, _020D4584 ; =0x02004100 + mov r6, r0 + mov r5, r1 + mov r4, r2 + orr r1, r3, r12 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo +_020D4488: + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + mov r0, r6, lsr #0x10 + orr r1, r0, #0x10000 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + ldr r1, _020D4588 + mov r0, #0x9 + and r1, r6, r1 + orr r1, r1, #0x20000 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + mov r0, r5, lsr #0x10 + orr r1, r0, #0x30000 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + ldr r1, _020D4588 + mov r0, #0x9 + and r1, r5, r1 + orr r1, r1, #0x40000 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + mov r0, r4, lsr #0x10 + orr r1, r0, #0x50000 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movlt r0, #0x0 + ldmltia sp!, {r4-r6, lr} + bxlt lr + ldr r0, _020D4588 + ldr r1, _020D458C + and r0, r4, r0 + orr r1, r0, r1 + mov r0, #0x9 + mov r2, #0x0 + bl PXI_SendWordByFifo + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + ldmia sp!, {r4-r6, lr} + bx lr +_020D4584: .word 0x02004100 +_020D4588: .word 0x0000FFFF +_020D458C: .word 0x01060000 + + arm_func_start MicDoSampling +MicDoSampling: ; 0x020D4590 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D45C4 ; =0x03004000 + mov r2, #0x0 + orr r1, r0, r1 + mov r0, #0x9 + bl PXI_SendWordByFifo +_020D45AC: + cmp r0, #0x0 + movge r0, #0x1 + movlt r0, #0x0 + add sp, sp, #0x4 + ldmfd sp!, {lr} + bx lr +_020D45C4: .word 0x03004000 + + arm_func_start MicCommonCallback +MicCommonCallback: ; 0x020D45C8 + stmdb sp!, {r4,lr} + mov r4, r1 + cmp r2, #0x0 + beq _020D4610 + ldr r0, _020D4700 ; =0x021D54B0 + ldr r2, _020D4700 ; =0x021D54B0 + ldr r1, [r0, #0x0] + ldr r12, [r2, #0x4] + cmp r1, #0x0 + movne r1, #0x0 + strne r1, [r0, #0x0] + cmp r12, #0x0 + beq _020D4610 + ldr r1, [r2, #0x8] + mov r3, #0x0 + mov r0, #0x6 + str r3, [r2, #0x4] + blx r12 +_020D4610: + and r0, r4, #0xff + mov r1, r0, lsl #0x10 + and r2, r4, #0x7f00 + mov r0, r2, lsl #0x8 + mov r1, r1, lsr #0x10 + cmp r1, #0x4 + mov r2, r0, lsr #0x10 + addls pc, pc, r1, lsl #0x2 + b _020D4670 +_020D4634: + b _020D4648 + b _020D4650 + b _020D4658 + b _020D4660 + b _020D4668 +_020D4648: + mov r0, #0x0 + b _020D4674 +_020D4650: + mov r0, #0x4 + b _020D4674 +_020D4658: + mov r0, #0x2 + b _020D4674 +_020D4660: + mov r0, #0x5 + b _020D4674 +_020D4668: + mov r0, #0x1 + b _020D4674 +_020D4670: + mov r0, #0x6 +_020D4674: + cmp r2, #0x51 + bne _020D46A0 + ldr r1, _020D4700 ; =0x021D54B0 + ldr r2, [r1, #0x10] + cmp r2, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x14] + blx r2 + ldmia sp!, {r4,lr} + bx lr +_020D46A0: + cmp r2, #0x40 + bne _020D46C0 + ldr r1, _020D4700 ; =0x021D54B0 + ldr r2, [r1, #0x18] + cmp r2, #0x0 + ldrne r1, _020D4704 ; =0x027FFF94 + ldrneh r1, [r1, #0x0] + strneh r1, [r2, #0x0] +_020D46C0: + ldr r1, _020D4700 ; =0x021D54B0 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + movne r2, #0x0 + strne r2, [r1, #0x0] + ldr r2, _020D4700 ; =0x021D54B0 + ldr r4, [r2, #0x4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r2, #0x8] + mov r3, #0x0 + str r3, [r2, #0x4] + blx r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020D4700: .word 0x021D54B0 +_020D4704: .word 0x027FFF94 + + arm_func_start MIC_GetLastSamplingAddress +MIC_GetLastSamplingAddress: ; 0x020D4708 + ldr r0, _020D4714 ; =0x027FFF90 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020D4714: .word 0x027FFF90 + + arm_func_start MIC_StopAutoSampling +MIC_StopAutoSampling: ; 0x020D4718 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020D4754 ; =MicGetResultCallback + mov r1, #0x0 + bl MIC_StopAutoSamplingAsync + ldr r1, _020D4758 ; =0x021D54B0 + cmp r0, #0x0 + str r0, [r1, #0xc] + bne _020D4740 + bl MicWaitBusy +_020D4740: + ldr r0, _020D4758 ; =0x021D54B0 + ldr r0, [r0, #0xc] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020D4754: .word MicGetResultCallback +_020D4758: .word 0x021D54B0 + + arm_func_start MIC_StopAutoSamplingAsync +MIC_StopAutoSamplingAsync: ; 0x020D475C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl OS_DisableInterrupts + ldr r1, _020D47C8 ; =0x021D54B0 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + beq _020D4794 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020D4794: + mov r2, #0x1 + str r2, [r1, #0x0] + bl OS_RestoreInterrupts + ldr r0, _020D47C8 ; =0x021D54B0 + str r5, [r0, #0x4] + str r4, [r0, #0x8] + bl MicStopAutoSampling +_020D47B0: + cmp r0, #0x0 + movne r0, #0x0 + moveq r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r5, lr} + bx lr +_020D47C8: .word 0x021D54B0 + + arm_func_start MIC_StartAutoSampling +MIC_StartAutoSampling: ; 0x020D47CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020D4808 ; =MicGetResultCallback + mov r2, #0x0 + bl MIC_StartAutoSamplingAsync + ldr r1, _020D480C ; =0x021D54B0 + cmp r0, #0x0 + str r0, [r1, #0xc] + bne _020D47F4 + bl MicWaitBusy +_020D47F4: + ldr r0, _020D480C ; =0x021D54B0 + ldr r0, [r0, #0xc] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020D4808: .word MicGetResultCallback +_020D480C: .word 0x021D54B0 + + arm_func_start MIC_StartAutoSamplingAsync +MIC_StartAutoSamplingAsync: ; 0x020D4810 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r0, [r7, #0x4] + mov r6, r1 + ands r0, r0, #0x1f + mov r5, r2 + addne sp, sp, #0x4 + movne r0, #0x2 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldr r1, [r7, #0x8] + ands r0, r1, #0x1f + addne sp, sp, #0x4 + movne r0, #0x2 + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, [r7, #0xc] + cmp r0, #0x400 + addcc sp, sp, #0x4 + movcc r0, #0x2 + ldmccia sp!, {r4-r7,lr} + bxcc lr + ldr r0, [r7, #0x0] + cmp r0, #0x5 + addls pc, pc, r0, lsl #0x2 + b _020D48D8 +_020D4890: + b _020D48A8 + b _020D48B0 + b _020D48B8 + b _020D48C0 + b _020D48C8 + b _020D48D0 +_020D48A8: + mov r1, #0x0 + b _020D48E8 +_020D48B0: + mov r1, #0x1 + b _020D48E8 +_020D48B8: + mov r1, #0x2 + b _020D48E8 +_020D48C0: + mov r1, #0x3 + b _020D48E8 +_020D48C8: + mov r1, #0x5 + b _020D48E8 +_020D48D0: + mov r1, #0x7 + b _020D48E8 +_020D48D8: + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020D48E8: + ldr r0, [r7, #0x10] + cmp r0, #0x0 + orrne r0, r1, #0x10 + andne r0, r0, #0xff + andeq r0, r1, #0xff + and r4, r0, #0xff + bl OS_DisableInterrupts + ldr r1, _020D497C + ldr r2, [r1] + cmp r2, #0x0 + beq _020D4928 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020D4928: + mov r2, #0x1 + str r2, [r1] + bl OS_RestoreInterrupts + ldr r0, _020D497C + mov r3, r4 + str r6, [r0, #0x4] + str r5, [r0, #0x8] + ldr r1, [r7, #0x14] + str r1, [r0, #0x10] + ldr r1, [r7, #0x18] + str r1, [r0, #0x14] + ldr r0, [r7, #0x4] + ldr r1, [r7, #0x8] + ldr r2, [r7, #0xC] + bl MicStartAutoSampling + cmp r0, #0x0 + movne r0, #0x0 + moveq r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020D497C: .word 0x021D54B0 + + arm_func_start MIC_DoSamplingAsync +MIC_DoSamplingAsync: ; 0x020D4980 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + cmp r0, #0x6 + mov r7, r1 + mov r6, r2 + mov r5, r3 + addge sp, sp, #0x4 + movge r0, #0x2 + ldmgeia sp!, {r4-r7,lr} + bxge lr + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020D49E4 +_020D49B4: + b _020D49C4 + b _020D49CC + b _020D49D4 + b _020D49DC +_020D49C4: + mov r4, #0x0 + b _020D49F4 +_020D49CC: + mov r4, #0x1 + b _020D49F4 +_020D49D4: + mov r4, #0x2 + b _020D49F4 +_020D49DC: + mov r4, #0x3 + b _020D49F4 +_020D49E4: + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020D49F4: + bl OS_DisableInterrupts + ldr r1, _020D4A58 + ldr r2, [r1] + cmp r2, #0x0 + beq _020D4A1C + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020D4A1C: + mov r2, #0x1 + str r2, [r1] + bl OS_RestoreInterrupts + ldr r1, _020D4A58 + mov r0, r4 + str r6, [r1, #0x4] + str r5, [r1, #0x8] + str r7, [r1, #0x18] + bl MicDoSampling + cmp r0, #0x0 + movne r0, #0x0 + moveq r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020D4A58: .word 0x021D54B0 + + arm_func_start MIC_Init +MIC_Init: ; 0x020D4A5C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020D4AD8 ; =0x021D54AC + ldrh r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + ldr r0, _020D4ADC ; =0x021D54B0 + mov r2, #0x0 + mov r3, #0x1 + strh r3, [r1, #0x0] + str r2, [r0, #0x0] + str r2, [r0, #0x4] + bl PXI_Init + mov r5, #0x9 + mov r4, #0x1 +_020D4AA0: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady +_020D4AAC: + cmp r0, #0x0 + beq _020D4AA0 + ldr r2, _020D4AE0 + mov r3, #0x0 + ldr r1, _020D4AE4 + mov r0, #0x9 + str r3, [r2] + bl PXI_SetFifoRecvCallback + add sp, sp, #0x4 + ldmia sp!, {r4-r5, lr} + bx lr +_020D4AD8: .word 0x021D54AC +_020D4ADC: .word 0x021D54B0 +_020D4AE0: .word 0x027FFF90 +_020D4AE4: .word MicCommonCallback diff --git a/arm9/asm/STD_arm9.s b/arm9/asm/STD_arm9.s new file mode 100644 index 00000000..b38ac8e4 --- /dev/null +++ b/arm9/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/arm9/asm/WM_arm9.s b/arm9/asm/WM_arm9.s new file mode 100644 index 00000000..cc3e7998 --- /dev/null +++ b/arm9/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 MATH_CountPopulation + 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 MATH_CountPopulation + 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/arm9/asm/arm9_itcm.s b/arm9/asm/arm9_itcm.s new file mode 100644 index 00000000..79c0de28 --- /dev/null +++ b/arm9/asm/arm9_itcm.s @@ -0,0 +1,505 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .itcm + + ; OS + arm_func_start OS_IrqHandler +OS_IrqHandler: ; 0x01FF8000 + stmfd sp!, {lr} + mov ip, #0x04000000 + add ip, ip, #0x210 + ldr r1, [ip, #-8] + cmp r1, #0 + ldmeqfd sp!, {pc} + ldmia ip, {r1, r2} + ands r1, r1, r2 + ldmeqfd sp!, {pc} + mov r3, #0x80000000 +_01FF8028: + clz r0, r1 + bics r1, r1, r3, lsr r0 + bne _01FF8028 + mov r1, r3, lsr r0 + str r1, [ip, #0x4] + rsbs r0, r0, #0x1f + ldr r1, _01FF8050 ; =0x027E0000 + ldr r0, [r1, r0, lsl #2] + ldr lr, _01FF8054 ; =0x01FF70B8 + bx r0 +_01FF8050: .word OS_IRQTable +_01FF8054: .word OS_IrqHandler_ThreadSwitch + + arm_func_start OS_IrqHandler_ThreadSwitch +OS_IrqHandler_ThreadSwitch: ; 01FF8058 + ldr ip, _01FF81A4 + mov r3, #0x0 + ldr ip, [ip] + mov r2, #0x1 + cmp ip, #0x0 + beq _01FF80A8 +_01FF8070: + str r2, [ip, #0x64] + str r3, [ip, #0x78] + str r3, [ip, #0x7c] + ldr r0, [ip, #0x80] + str r3, [ip, #0x80] + mov ip, r0 + cmp ip, #0x0 + bne _01FF8070 + ldr ip, _01FF81A4 + str r3, [ip] + str r3, [ip, #0x4] + ldr ip, _01FF81A8 + mov r1, #0x1 + strh r1, [ip] +_01FF80A8: + ldr ip, _01FF81A8 + ldrh r1, [ip] + cmp r1, #0x0 + ldreq pc, [sp], #0x4 + mov r1, #0x0 + strh r1, [ip] + mov r3, #0xd2 + msr CPSR_c, r3 + add r2, ip, #0x8 + ldr r1, [r2] +_01FF80D0: + cmp r1, #0x0 + ldrneh r0, [r1, #0x64] + cmpne r0, #0x1 + ldrne r1, [r1, #0x68] + bne _01FF80D0 + cmp r1, #0x0 + bne _01FF80F8 +_01FF80EC: + mov r3, #0x92 + msr CPSR_c, r3 + ldr pc, [sp], #0x4 +_01FF80F8: + ldr r0, [ip, #0x4] + cmp r1, r0 + beq _01FF80EC + ldr r3, [ip, #0xC] + cmp r3, #0x0 + beq _01FF8120 + stmdb sp!, {r0, r1, ip} + mov lr, pc + bx r3 + ldmia sp!, {r0, r1, ip} +_01FF8120: + str r1, [ip, #0x4] + mrs r2, SPSR + str r2, [r0, #0x0]! + stmdb sp!, {r0, r1} + add r0, r0, #0x0 + add r0, r0, #0x48 + ldr r1, _01FF81AC + blx r1 + ldmia sp!, {r0, r1} + ldmib sp!, {r2, r3} + stmib r0!, {r2, r3} + ldmib sp!, {r2, r3, ip, lr} + stmib r0!, {r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ + stmib r0!, {lr} + mov r3, #0xd3 + msr CPSR_c, r3 + stmib r0!, {sp} + stmfd sp!, {r1} + add r0, r1, #0x0 + add r0, r0, #0x48 + ldr r1, _01FF81B0 + blx r1 + ldmfd sp!, {r1} + ldr sp, [r1, #0x44] + mov r3, #0xd2 + msr CPSR_c, r3 + ldr r2, [r1, #0x0]! + msr SPSR_fc, r2 + ldr lr, [r1, #0x40] + ldmib r1!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl, fp, ip, sp, lr}^ + nop + stmda sp!, {r0, r1, r2, r3, ip, lr} + ldmfd sp!, {pc} +_01FF81A4: .word OSi_IrqThreadQueue +_01FF81A8: .word OSi_ThreadInfo +_01FF81AC: .word CP_SaveContext +_01FF81B0: .word CP_RestoreContext + + .section .itcm + arm_func_start OSi_DoBoot +OSi_DoBoot: ; 0x01FF81B4 + mov ip, #0x04000000 + str ip, [ip, #0x208] + ldr r1, _01FF8260 + add r1, r1, #0x3fc0 + add r1, r1, #0x3c + mov r0, #0x0 + str r0, [r1] + ldr r1, _01FF8264 +_01FF81D4: + ldrh r0, [r1] + and r0, r0, #0xf + cmp r0, #0x1 + bne _01FF81D4 + mov r0, #0x100 + strh r0, [r1] + mov r0, #0x0 + ldr r3, _01FF8268 + ldr r4, [r3] + ldr r1, _01FF826C + mov r2, #0x80 + bl OSi_CpuClear32 + str r4, [r3] + ldr r1, _01FF8270 + mov r2, #0x18 + bl OSi_CpuClear32 + ldr r1, _01FF8274 + strh r0, [r1] + ldr r1, _01FF8278 + mov r2, #0x64 + bl OSi_CpuClear32 + ldr r1, _01FF8264 +_01FF822C: + ldrh r0, [r1] + and r0, r0, #0xf + cmp r0, #0x1 + beq _01FF822C + mov r0, #0x0 + strh r0, [r1] + ldr r3, _01FF827C + ldr ip, [r3, #0x24] + mov lr, ip + ldr fp, _01FF8270 + ldmia fp, {r0, r1, r2, r3, r4, r5, r6, r7, r8, r9, sl} + mov fp, #0x0 + bx ip +_01FF8260: .word SDK_AUTOLOAD_DTCM_START +_01FF8264: .word 0x04000180 +_01FF8268: .word 0x027FFD9C +_01FF826C: .word 0x027FFD80 +_01FF8270: .word 0x027FFF80 +_01FF8274: .word 0x027FFF98 +_01FF8278: .word 0x027FFF9C +_01FF827C: .word 0x027FFE00 + + arm_func_start OSi_CpuClear32 +OSi_CpuClear32: ; 01FF8280 + add ip, r1, r2 +_01FF8284: + cmp r1, ip + stmltia r1!, {r0} + blt _01FF8284 + bx lr + + arm_func_start OSi_ReadCardRom32 +OSi_ReadCardRom32: ; 01FF8294 + stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + sub sp, sp, #4 + ldr r4, _01FF8390 + ldr r3, _01FF8394 + ldr r4, [r4] + and r3, r0, r3 + bic r4, r4, #117440512 ; 0x7000000 + orr sl, r4, #-1593835520 ; 0xa1000000 + rsb r9, r3, #0 + ldr r4, _01FF8398 +_01FF82BC: + ldr r3, [r4] + ands r3, r3, #-2147483648 ; 0x80000000 + bne _01FF82BC + ldr r3, _01FF839C + mov r4, #128 ; 0x80 + cmp r9, r2 + addge sp, sp, #4 + strb r4, [r3] + add r0, r0, r9 + ldmgeia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + bxge lr + ldr r3, _01FF83A0 + ldr ip, _01FF8398 + ldr r5, _01FF83A4 + ldr r4, _01FF83A8 + mov r7, r0, lsr #8 + mov r6, #183 ; 0xb7 + mov lr, #0 +_01FF8304: + strb r6, [r5] + mov r8, r0, lsr #24 + strb r8, [r4] + ldr r8, _01FF83AC + mov fp, r0, lsr #16 + strb fp, [r8] + ldr r8, _01FF83B0 + strb r7, [r8] + ldr r8, _01FF83B4 + strb r0, [r8] + ldr r8, _01FF83B8 + strb lr, [r8] + ldr r8, _01FF83BC + strb lr, [r8] + ldr r8, _01FF83C0 + strb lr, [r8] + str sl, [ip] +_01FF8348: + ldr r8, [ip] + ands fp, r8, #8388608 ; 0x800000 + beq _01FF836C + cmp r9, #0 + ldr fp, [r3] + blt _01FF8368 + cmp r9, r2 + strlt fp, [r1, r9] +_01FF8368: + add r9, r9, #4 +_01FF836C: + ands r8, r8, #-2147483648 ; 0x80000000 + bne _01FF8348 + cmp r9, r2 + add r7, r7, #2 + add r0, r0, #512 ; 0x200 + blt _01FF8304 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + bx lr +_01FF8390: .word 0x027FFE60 +_01FF8394: .word 0x000001FF +_01FF8398: .word 0x040001A4 +_01FF839C: .word 0x040001A1 +_01FF83A0: .word 0x04100010 +_01FF83A4: .word 0x040001A8 +_01FF83A8: .word 0x040001A9 +_01FF83AC: .word 0x040001AA +_01FF83B0: .word 0x040001AB +_01FF83B4: .word 0x040001AC +_01FF83B8: .word 0x040001AD +_01FF83BC: .word 0x040001AE +_01FF83C0: .word 0x040001AF + + arm_func_start OSi_ReloadRomData +OSi_ReloadRomData: ; 0x01FF83C4 + stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + sub sp, sp, #4 + ldr r0, _01FF8484 + ldr sl, [r0] + cmp sl, #32768 ; 0x8000 + bcc _01FF83EC + ldr r1, _01FF8488 + mov r0, sl + mov r2, #352 ; 0x160 + bl OSi_ReadCardRom32 +_01FF83EC: + ldr r5, _01FF848C + ldr r4, _01FF8490 + ldr r3, _01FF8494 + ldr r2, _01FF8498 + ldr r1, _01FF849C + ldr r9, [r5] + ldr r0, _01FF84A0 + ldr r8, [r4] + ldr r7, [r3] + ldr r6, [r2] + ldr r5, [r1] + ldr r4, [r0] + bl OS_DisableInterrupts ; 0x1e02b0 + mov fp, r0 + bl DC_StoreAll ; 0x1df064 + bl DC_InvalidateAll ; 0x1df058 + mov r0, fp + bl OS_RestoreInterrupts ; 0x1e02c4 + bl IC_InvalidateAll ; 0x1df12c + bl DC_WaitWriteBufferEmpty ; 0x1df120 + add r9, r9, sl + cmp r9, #32768 ; 0x8000 + rsbcc r0, r9, #32768 ; 0x8000 + addcc r8, r8, r0 + subcc r7, r7, r0 + movcc r9, #32768 ; 0x8000 + add r6, r6, sl + mov r0, r9 + mov r1, r8 + mov r2, r7 + bl OSi_ReadCardRom32 ; 0x10b234 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl OSi_ReadCardRom32 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + bx lr +_01FF8484: .word 0x027FFC2C +_01FF8488: .word 0x027FFE00 +_01FF848C: .word 0x027FFE20 +_01FF8490: .word 0x027FFE28 +_01FF8494: .word 0x027FFE2C +_01FF8498: .word 0x027FFE30 +_01FF849C: .word 0x027FFE38 +_01FF84A0: .word 0x027FFE3C + + arm_func_start OSi_DoResetSystem +OSi_DoResetSystem: ; 0x01FF84A4 + stmfd sp!, {lr} + sub sp, sp, #4 + ldr r0, _01FF84DC +_01FF84B0: + ldrh r1, [r0] + cmp r1, #0 + beq _01FF84B0 + ldr r0, _01FF84E0 + mov r1, #0 + strh r1, [r0] + bl OSi_ReloadRomData + bl OSi_DoBoot + add sp, sp, #4 + ldmfd sp!, {lr} + bx lr +_01FF84DC: .word OSi_IsResetOccurred +_01FF84E0: .word 0x04000208 + + ; MI + arm_func_start MIi_DmaSetParams_wait_noInt +MIi_DmaSetParams_wait_noInt: ; 0x01FF84E4 + stmdb sp!, {r4, lr} + mov ip, #12 + mul r4, r0, ip + add ip, r4, #67108864 ; 0x4000000 + ldr lr, [pc, #64] ; 0x10b4dc + str r1, [ip, #176] ; 0xb0 + add r4, r4, lr + str r2, [r4, #4] + str r3, [r4, #8] + ldr r1, [lr] + cmp r0, #0 + ldr r0, [lr] + moveq r1, #0 + streq r1, [r4] + streq r1, [r4, #4] + ldreq r0, _01FF8540 + ldr r1, _01FF853C + streq r0, [r4, #8] + ldr r0, [r1] + ldr r0, [r1] + ldmia sp!, {r4, lr} + bx lr +_01FF853C: .word 0x040000B0 +_01FF8540: .word 0x81400001 + + arm_func_start MIi_DmaSetParams_noInt +MIi_DmaSetParams_noInt: ; 01FF8544 + stmfd sp!, {lr} + sub sp, sp, #4 + mov ip, #12 + mul lr, r0, ip + ldr r0, _01FF8578 + add ip, lr, #67108864 ; 0x4000000 + str r1, [ip, #176] ; 0xb0 + add r0, lr, r0 + str r2, [r0, #4] + str r3, [r0, #8] + add sp, sp, #4 + ldmfd sp!, {lr} + bx lr +_01FF8578: .word 0x040000B0 + + arm_func_start MIi_DmaSetParams_wait +MIi_DmaSetParams_wait: ; 01FF857C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl OS_DisableInterrupts + mov r1, #12 + mul r3, r7, r1 + add r1, r3, #67108864 ; 0x4000000 + ldr r2, _01FF85E8 + str r6, [r1, #176] ; 0xb0 + add r3, r3, r2 + str r5, [r3, #4] + str r4, [r3, #8] + ldr r1, [r2] + cmp r7, #0 + ldr r1, [r2] + moveq r2, #0 + streq r2, [r3] + ldreq r1, _01FF85EC + streq r2, [r3, #4] + streq r1, [r3, #8] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_01FF85E8: .word 0x040000B0 +_01FF85EC: .word 0x81400001 + + arm_func_start MIi_DmaSetParams +MIi_DmaSetParams: ; 01FF85F0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl OS_DisableInterrupts + mov r1, #12 + mul r3, r7, r1 + ldr r1, _01FF863C + add r2, r3, #67108864 ; 0x4000000 + str r6, [r2, #176] ; 0xb0 + add r1, r3, r1 + str r5, [r1, #4] + str r4, [r1, #8] + bl OS_RestoreInterrupts + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, lr} + bx lr +_01FF863C: .word 0x040000B0 + + arm_func_start MI_SendGXCommand +MI_SendGXCommand: ; 0x01FF8640 + stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + sub sp, sp, #4 + movs r8, r2 + mov sl, r0 + mov r9, r1 + addeq sp, sp, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + bxeq lr + mov r3, #0 + bl MIi_CheckDma0SourceAddress + mov r0, #3 + mul r1, sl, r0 + ldr r0, [pc, #104] ; 0x10b680 + add r1, r1, #2 + add r7, r0, r1, lsl #2 +_01FF867C: + ldr r0, [r7] + ands r0, r0, #-2147483648 ; 0x80000000 + bne _01FF867C + cmp r8, #0 + beq _01FF86C8 + ldr fp, [pc, #76] ; 0x10b684 + mov r5, #472 ; 0x1d8 + ldr r4, [pc, #72] ; 0x10b688 +_01FF869C: + cmp r8, #472 ; 0x1d8 + movhi r6, r5 + movls r6, r8 + mov r0, sl + mov r1, r9 + mov r2, fp + orr r3, r4, r6, lsr #2 + bl MIi_DmaSetParams + subs r8, r8, r6 + add r9, r9, r6 + bne _01FF869C +_01FF86C8: + ldr r0, [r7] + ands r0, r0, #-2147483648 ; 0x80000000 + bne _01FF86C8 + add sp, sp, #4 + ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr} + bx lr +_01FF86E0: .word 0x040000B0 +_01FF86E4: .word 0x04000400 +_01FF86E8: .word 0x84400000 diff --git a/arm9/asm/arm9overlay.s b/arm9/asm/arm9overlay.s new file mode 100644 index 00000000..70356c52 --- /dev/null +++ b/arm9/asm/arm9overlay.s @@ -0,0 +1,5 @@ + .text + + .global ARM9Overlay +ARM9Overlay: + .incbin "baserom.nds", 0x10B800, 0xAE0 diff --git a/arm9/asm/crt0.s b/arm9/asm/crt0.s new file mode 100644 index 00000000..709bd5f3 --- /dev/null +++ b/arm9/asm/crt0.s @@ -0,0 +1,283 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start _start +_start: ; 0x02000800 + mov ip, #0x4000000 + str ip, [ip, #0x208] +_02000808: + ldrh r0, [ip, #6] + cmp r0, #0 + bne _02000808 + bl init_cp15 + mov r0, #0x13 + msr cpsr_c, r0 + ldr r0, _02000918 ; =SDK_AUTOLOAD_DTCM_START + add r0, r0, #0x3fc0 + mov sp, r0 + mov r0, #0x12 + msr cpsr_c, r0 + ldr r0, _02000918 ; =SDK_AUTOLOAD_DTCM_START + add r0, r0, #0x3fc0 + sub r0, r0, #0x40 + sub sp, r0, #4 + tst sp, #4 + subeq sp, sp, #4 + ldr r1, _0200091C ; =0x00000400 + sub r1, r0, r1 + mov r0, #0x1f + msr cpsr_fsxc, r0 + sub sp, r1, #4 + mov r0, #0 + ldr r1, _02000918 ; =SDK_AUTOLOAD_DTCM_START + mov r2, #0x4000 + bl INITi_CpuClear32 + mov r0, #0 + ldr r1, _02000920 ; =0x05000000 + mov r2, #1024 + bl INITi_CpuClear32 + mov r0, #512 + ldr r1, _02000924 ; =0x07000000 + mov r2, #1024 + bl INITi_CpuClear32 + ldr r1, _02000928 ; =_start_ModuleParams + ldr r0, [r1, #20] + bl MIi_UncompressBackward + bl do_autoload + ldr r0, _02000928 ; =_start_ModuleParams + ldr r1, [r0, #12] + ldr r2, [r0, #16] + mov r3, r1 + mov r0, #0 +_020008B4: + cmp r1, r2 + strcc r0, [r1], #4 + bcc _020008B4 + bic r1, r3, #31 +_020008C4: + mcr p15, 0x0, r0, cr7, cr10, 4 + mcr p15, 0x0, r1, cr7, cr5, 1 + mcr p15, 0x0, r1, cr7, cr14, 1 + add r1, r1, #32 + cmp r1, r2 + blt _020008C4 + ldr r1, _0200092C ; =0x027FFF9C + str r0, [r1] + ldr r1, _02000918 ; =SDK_AUTOLOAD_DTCM_START + add r1, r1, #16320 + add r1, r1, #60 + ldr r0, _02000930 ; =OS_IrqHandler + str r0, [r1] + bl _fp_init + bl NitroStartUp + bl __call_static_initializers + ldr r1, _02000934 ; =0x02000C55 + ldr lr, _02000938 ; =0xFFFF0000 + tst sp, #4 + subne sp, sp, #4 + bx r1 +_02000918: .word SDK_AUTOLOAD_DTCM_START +_0200091C: .word SDK_IRQ_STACKSIZE +_02000920: .word 0x05000000 +_02000924: .word 0x07000000 +_02000928: .word _start_ModuleParams +_0200092C: .word 0x027FFF9C +_02000930: .word OS_IrqHandler +_02000934: .word NitroMain +_02000938: .word 0xFFFF0000 + arm_func_end _start + + arm_func_start INITi_CpuClear32 +INITi_CpuClear32: + add ip, r1, r2 +_02000940: + cmp r1, ip + stmltia r1!, {r0} + blt _02000940 + bx lr + arm_func_end INITi_CpuClear32 + + arm_func_start MIi_UncompressBackward +MIi_UncompressBackward: + cmp r0, #0 + beq _020009F8 + stmdb sp!, {r4-r7} + ldmdb r0, {r1, r2} + add r2, r0, r2 + sub r3, r0, r1, lsr #24 + bic r1, r1, #-16777216 + sub r1, r0, r1 + mov r4, r2 +_02000974: + cmp r3, r1 + ble _020009D4 + ldrb r5, [r3, #-1]! + mov r6, #8 +_02000984: + subs r6, r6, #1 + blt _02000974 + tst r5, #128 + bne _020009A0 + ldrb r0, [r3, #-1]! + strb r0, [r2, #-1]! + b _020009C8 +_020009A0: + ldrb ip, [r3, #-1]! + ldrb r7, [r3, #-1]! + orr r7, r7, ip, lsl #8 + bic r7, r7, #61440 + add r7, r7, #2 + add ip, ip, #32 +_020009B8: + ldrb r0, [r2, r7] + strb r0, [r2, #-1]! + subs ip, ip, #16 + bge _020009B8 +_020009C8: + cmp r3, r1 + mov r5, r5, lsl #0x1 + bgt _02000984 +_020009D4: + mov r0, #0 + bic r3, r1, #31 +_020009DC: + mcr p15, 0x0, r0, cr7, cr10, 4 + mcr p15, 0x0, r3, cr7, cr5, 1 + mcr p15, 0x0, r3, cr7, cr14, 1 + add r3, r3, #32 + cmp r3, r4 + blt _020009DC + ldmia sp!, {r4-r7} +_020009F8: + bx lr + arm_func_end MIi_UncompressBackward + + arm_func_start do_autoload +do_autoload: + ldr r0, =_start_ModuleParams + ldr r1, [r0] + ldr r2, [r0, #4] + ldr r3, [r0, #8] +_02000A0C: + cmp r1, r2 + beq _02000A6C + ldr r5, [r1], #4 + ldr r7, [r1], #4 + add r6, r5, r7 + mov r4, r5 +_02000A24: + cmp r4, r6 + ldrmi r7, [r3], #4 + strmi r7, [r4], #4 + bmi _02000A24 + ldr r7, [r1], #4 + add r6, r4, r7 + mov r7, #0 +_02000A40: + cmp r4, r6 + strcc r7, [r4], #4 + bcc _02000A40 + bic r4, r5, #31 +_02000A50: + mcr p15, 0x0, r7, cr7, cr10, 4 + mcr p15, 0x0, r4, cr7, cr5, 1 + mcr p15, 0x0, r4, cr7, cr14, 1 + add r4, r4, #32 + cmp r4, r6 + blt _02000A50 + b _02000A0C +_02000A6C: + b _start_AutoloadDoneCallback + .pool + .global _start_AutoloadDoneCallback +_start_AutoloadDoneCallback: + bx lr + arm_func_end do_autoload + + arm_func_start init_cp15 +init_cp15: ; 0x02000A78 + mrc p15, 0x0, r0, c1, c0, 0x0 + ldr r1, =0x000F9005 + bic r0, r0, r1 + mcr p15, 0x0, r0, c1, c0, 0x0 + mov r0, #0 + mcr p15, 0x0, r0, c7, c5, 0x0 + mcr p15, 0x0, r0, c7, c6, 0x0 + mcr p15, 0x0, r0, c7, c10, 0x4 + ldr r0, =0x04000033 + mcr p15, 0x0, r0, c6, c0, 0x0 + ldr r0, =0x0200002D + mcr p15, 0x0, r0, c6, c1, 0x0 + ldr r0, =0x027E0021 + mcr p15, 0x0, r0, c6, c2, 0x0 + ldr r0, =0x08000035 + mcr p15, 0x0, r0, c6, c3, 0x0 + ldr r0, =SDK_AUTOLOAD_DTCM_START + orr r0, r0, #0x1a + orr r0, r0, #1 + mcr p15, 0x0, r0, c6, c4, 0x0 + ldr r0, =0x0100002F + mcr p15, 0x0, r0, c6, c5, 0x0 + ldr r0, =0xFFFF001D + mcr p15, 0x0, r0, c6, c6, 0x0 + ldr r0, =0x027FF017 + mcr p15, 0x0, r0, c6, c7, 0x0 + mov r0, #0x20 + mcr p15, 0x0, r0, c9, c1, 0x1 + ldr r0, =SDK_AUTOLOAD_DTCM_START + orr r0, r0, #0xa + mcr p15, 0x0, r0, c9, c1, 0x0 + mov r0, #0x42 + mcr p15, 0x0, r0, c2, c0, 0x1 + mov r0, #0x42 + mcr p15, 0x0, r0, c2, c0, 0x0 + mov r0, #2 + mcr p15, 0x0, r0, c3, c0, 0x0 + ldr r0, =0x05100011 + mcr p15, 0x0, r0, c5, c0, 0x3 + ldr r0, =0x15111011 + mcr p15, 0x0, r0, c5, c0, 0x2 + mrc p15, 0x0, r0, c1, c0, 0x0 + ldr r1, =0x0005707D + orr r0, r0, r1 + mcr p15, 0x0, r0, c1, c0, 0x0 + bx lr + .align 2, 0 + .pool + + arm_func_start OSi_ReferSymbol +OSi_ReferSymbol: ; 0x02000B60 + bx lr + + arm_func_start NitroStartUp +NitroStartUp: ; 0x02000B64 + bx lr + +_start_ModuleParams: + .word SDK_AUTOLOAD_LIST + .word SDK_AUTOLOAD_LIST_END + .word SDK_AUTOLOAD_START + .word SDK_STATIC_BSS_START + .word SDK_STATIC_BSS_END + + .word 0x00000000 + .ascii "1u" ; 31 75 + .byte 0x02, 0x03 + .word 0xdec00621 + .byte 0xde, 0xc0, 0x06, 0x21 + + # strings + .balign 4 + .asciz "[SDK+NINTENDO:DWC1.2.30006.061019.2254_DWC_1_2_PLUS6]" + .balign 4 + .asciz "[SDK+NINTENDO:WiFi1.2.30000.0609050341]" + .balign 4 + .asciz "[SDK+UBIQUITOUS:CPS]" + .balign 4 + .asciz "[SDK+UBIQUITOUS:SSL]" + .balign 4 + .asciz "[SDK+Abiosso:libVCT 1.0.1_ec]" + .balign 4 + .asciz "[SDK+NINTENDO:BACKUP]" diff --git a/arm9/asm/filesystem.s b/arm9/asm/filesystem.s new file mode 100644 index 00000000..75af021d --- /dev/null +++ b/arm9/asm/filesystem.s @@ -0,0 +1,648 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start ReadNARCFile +ReadNARCFile: ; 0x02006314 + push {r3-r7, lr} + sub sp, #0x60 + add r4, r1, #0x0 + mov r1, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + str r1, [sp, #0xc] + add r0, sp, #0x8 + strh r1, [r0, #0x0] + add r0, sp, #0x18 + add r5, r2, #0x0 + str r3, [sp, #0x4] + blx FS_InitFile + add r0, sp, #0x18 + add r1, r4, #0x0 + blx FS_OpenFile + add r0, sp, #0x18 + mov r1, #0xc + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x14 + mov r2, #0x2 + blx FS_ReadFile + ldr r4, [sp, #0x14] + add r0, sp, #0x18 + add r1, r4, #0x4 + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x14 + mov r2, #0x4 + blx FS_ReadFile + add r0, sp, #0x18 + add r1, sp, #0x8 + mov r2, #0x2 + blx FS_ReadFile + add r0, sp, #0x8 + ldrh r0, [r0, #0x0] + cmp r0, r5 + bgt _0200637A + bl ErrorHandling +_0200637A: + ldr r0, [sp, #0x14] + mov r2, #0x0 + add r6, r4, r0 + add r0, sp, #0x18 + add r1, r6, #0x4 + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x14 + mov r2, #0x4 + blx FS_ReadFile + add r4, #0xc + lsl r1, r5, #0x3 + add r0, sp, #0x18 + add r1, r4, r1 + mov r2, #0x0 + ldr r7, [sp, #0x14] + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x10 + mov r2, #0x4 + blx FS_ReadFile + add r0, sp, #0x18 + add r1, sp, #0xc + mov r2, #0x4 + blx FS_ReadFile + add r2, r6, r7 + ldr r1, [sp, #0x10] + add r2, #0x8 + add r2, r2, r1 + ldr r1, [sp, #0x4] + add r0, sp, #0x18 + add r1, r1, r2 + mov r2, #0x0 + blx FS_SeekFile + ldr r0, [sp, #0x78] + cmp r0, #0x0 + bne _020063D6 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + sub r0, r1, r0 +_020063D6: + str r0, [sp, #0x14] + cmp r0, #0x0 + bne _020063E0 + bl ErrorHandling +_020063E0: + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x14] + add r0, sp, #0x18 + blx FS_ReadFile + add r0, sp, #0x18 + blx FS_CloseFile + add sp, #0x60 + pop {r3-r7, pc} + + thumb_func_start LoadFileIntoMemory +LoadFileIntoMemory: ; 0x020063F4 + push {r3-r7, lr} + sub sp, #0x60 + add r5, r1, #0x0 + mov r1, #0x0 + add r4, r0, #0x0 + str r1, [sp, #0x14] + str r1, [sp, #0x10] + str r1, [sp, #0xc] + add r0, sp, #0x8 + strh r1, [r0, #0x0] + add r0, sp, #0x18 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + blx FS_InitFile + add r0, sp, #0x18 + add r1, r4, #0x0 + blx FS_OpenFile + add r0, sp, #0x18 + mov r1, #0xc + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x14 + mov r2, #0x2 + blx FS_ReadFile + ldr r4, [sp, #0x14] + add r0, sp, #0x18 + add r1, r4, #0x4 + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x14 + mov r2, #0x4 + blx FS_ReadFile + add r0, sp, #0x18 + add r1, sp, #0x8 + mov r2, #0x2 + blx FS_ReadFile + add r0, sp, #0x8 + ldrh r0, [r0, #0x0] + cmp r0, r5 + bgt _0200645A + bl ErrorHandling +_0200645A: + ldr r0, [sp, #0x14] + mov r2, #0x0 + add r6, r4, r0 + add r0, sp, #0x18 + add r1, r6, #0x4 + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x14 + mov r2, #0x4 + blx FS_ReadFile + add r4, #0xc + lsl r1, r5, #0x3 + add r0, sp, #0x18 + add r1, r4, r1 + mov r2, #0x0 + ldr r7, [sp, #0x14] + blx FS_SeekFile + add r0, sp, #0x18 + add r1, sp, #0x10 + mov r2, #0x4 + blx FS_ReadFile + add r0, sp, #0x18 + add r1, sp, #0xc + mov r2, #0x4 + blx FS_ReadFile + add r2, r6, r7 + ldr r1, [sp, #0x10] + add r2, #0x8 + add r2, r2, r1 + ldr r1, [sp, #0x4] + add r0, sp, #0x18 + add r1, r1, r2 + mov r2, #0x0 + blx FS_SeekFile + ldr r0, [sp, #0x78] + cmp r0, #0x0 + bne _020064B6 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + sub r0, r1, r0 +_020064B6: + str r0, [sp, #0x14] + cmp r0, #0x0 + bne _020064C0 + bl ErrorHandling +_020064C0: + ldr r0, [sp, #0x7c] + cmp r0, #0x0 + bne _020064D0 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x14] + bl FUN_02016998 + b _020064D8 +_020064D0: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x14] + bl FUN_020169D8 +_020064D8: + add r4, r0, #0x0 + ldr r2, [sp, #0x14] + add r0, sp, #0x18 + add r1, r4, #0x0 + blx FS_ReadFile + add r0, sp, #0x18 + blx FS_CloseFile + add r0, r4, #0x0 + add sp, #0x60 + pop {r3-r7, pc} + + thumb_func_start LoadFromNARC +LoadFromNARC: ; 0x020064F0 + push {r3-r4, lr} + sub sp, #0x4 + mov r3, #0x0 + lsl r4, r1, #0x2 + ldr r1, _02006508 ; =0x021058A0 + str r3, [sp, #0x0] + ldr r1, [r1, r4] + bl ReadNARCFile + add sp, #0x4 + pop {r3-r4, pc} + nop +_02006508: .word 0x021058A0 + + thumb_func_start LoadFromNarc_2 +LoadFromNarc_2: ; 0x0200650C + push {r4, lr} + sub sp, #0x8 + mov r3, #0x0 + str r3, [sp, #0x0] + lsl r4, r0, #0x2 + ldr r0, _02006524 ; =0x021058A0 + str r3, [sp, #0x4] + ldr r0, [r0, r4] + bl LoadFileIntoMemory + add sp, #0x8 + pop {r4, pc} + .balign 4 +_02006524: .word 0x021058A0 + + thumb_func_start FUN_02006528 +FUN_02006528: ; 0x02006528 + push {r4, lr} + sub sp, #0x8 + mov r3, #0x0 + str r3, [sp, #0x0] + mov r4, #0x1 + str r4, [sp, #0x4] + lsl r4, r0, #0x2 + ldr r0, _02006544 ; =0x021058A0 + ldr r0, [r0, r4] + bl LoadFileIntoMemory + add sp, #0x8 + pop {r4, pc} + nop +_02006544: .word 0x021058A0 + + thumb_func_start FUN_02006548 +FUN_02006548: ; 0x02006548 + push {r3-r4, lr} + sub sp, #0x4 + ldr r4, [sp, #0x10] + str r4, [sp, #0x0] + lsl r4, r1, #0x2 + ldr r1, _02006560 ; =0x021058A0 + ldr r1, [r1, r4] + bl ReadNARCFile + add sp, #0x4 + pop {r3-r4, pc} + nop +_02006560: .word 0x021058A0 + + thumb_func_start FUN_02006564 +FUN_02006564: ; 0x02006564 + push {r4, lr} + sub sp, #0x8 + ldr r4, [sp, #0x10] + str r4, [sp, #0x0] + mov r4, #0x0 + str r4, [sp, #0x4] + lsl r4, r0, #0x2 + ldr r0, _02006580 ; =0x021058A0 + ldr r0, [r0, r4] + bl LoadFileIntoMemory + add sp, #0x8 + pop {r4, pc} + nop +_02006580: .word 0x021058A0 + + thumb_func_start FUN_02006584 +FUN_02006584: ; 0x02006584 + push {r4, lr} + sub sp, #0x8 + ldr r4, [sp, #0x10] + str r4, [sp, #0x0] + mov r4, #0x1 + str r4, [sp, #0x4] + lsl r4, r0, #0x2 + ldr r0, _020065A0 ; =0x021058A0 + ldr r0, [r0, r4] + bl LoadFileIntoMemory + add sp, #0x8 + pop {r4, pc} + nop +_020065A0: .word 0x021058A0 + + thumb_func_start LoadFromNARC_7 +LoadFromNARC_7: ; 0x020065A4 + push {r3-r7, lr} + sub sp, #0x58 + add r5, r1, #0x0 + mov r1, #0x0 + add r4, r0, #0x0 + str r1, [sp, #0xc] + str r1, [sp, #0x8] + str r1, [sp, #0x4] + add r0, sp, #0x0 + strh r1, [r0, #0x0] + add r0, sp, #0x10 + blx FS_InitFile + ldr r1, _0200666C ; =0x021058A0 + lsl r2, r4, #0x2 + ldr r1, [r1, r2] + add r0, sp, #0x10 + blx FS_OpenFile + add r0, sp, #0x10 + mov r1, #0xc + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x10 + add r1, sp, #0xc + mov r2, #0x2 + blx FS_ReadFile + ldr r4, [sp, #0xc] + add r0, sp, #0x10 + add r1, r4, #0x4 + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x10 + add r1, sp, #0xc + mov r2, #0x4 + blx FS_ReadFile + add r0, sp, #0x10 + add r1, sp, #0x0 + mov r2, #0x2 + blx FS_ReadFile + add r0, sp, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, r5 + bgt _0200660A + bl ErrorHandling +_0200660A: + ldr r0, [sp, #0xc] + mov r2, #0x0 + add r6, r4, r0 + add r0, sp, #0x10 + add r1, r6, #0x4 + blx FS_SeekFile + add r0, sp, #0x10 + add r1, sp, #0xc + mov r2, #0x4 + blx FS_ReadFile + add r4, #0xc + lsl r1, r5, #0x3 + add r0, sp, #0x10 + add r1, r4, r1 + mov r2, #0x0 + ldr r7, [sp, #0xc] + blx FS_SeekFile + add r0, sp, #0x10 + add r1, sp, #0x8 + mov r2, #0x4 + blx FS_ReadFile + add r0, sp, #0x10 + add r1, sp, #0x4 + mov r2, #0x4 + blx FS_ReadFile + add r2, r6, r7 + ldr r1, [sp, #0x8] + add r2, #0x8 + add r1, r2, r1 + add r0, sp, #0x10 + mov r2, #0x0 + blx FS_SeekFile + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + sub r0, r1, r0 + str r0, [sp, #0xc] + bne _02006664 + bl ErrorHandling +_02006664: + ldr r0, [sp, #0xc] + add sp, #0x58 + pop {r3-r7, pc} + nop +_0200666C: .word 0x021058A0 + + thumb_func_start FUN_02006670 +FUN_02006670: ; 0x02006670 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x54 + bl FUN_02016998 + add r4, r0, #0x0 + beq _020066EC + mov r1, #0x0 + str r1, [r4, #0x48] + blx FS_InitFile + ldr r1, _020066F0 ; =0x021058A0 + lsl r2, r5, #0x2 + ldr r1, [r1, r2] + add r0, r4, #0x0 + blx FS_OpenFile + add r0, r4, #0x0 + mov r1, #0xc + mov r2, #0x0 + blx FS_SeekFile + add r1, r4, #0x0 + add r0, r4, #0x0 + add r1, #0x48 + mov r2, #0x2 + blx FS_ReadFile + ldr r1, [r4, #0x48] + add r0, r4, #0x0 + add r1, r1, #0x4 + mov r2, #0x0 + blx FS_SeekFile + add r0, r4, #0x0 + add r1, sp, #0x0 + mov r2, #0x4 + blx FS_ReadFile + add r1, r4, #0x0 + add r0, r4, #0x0 + add r1, #0x50 + mov r2, #0x2 + blx FS_ReadFile + ldr r1, [r4, #0x48] + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r5, r1, r0 + add r0, r4, #0x0 + add r1, r5, #0x4 + blx FS_SeekFile + add r0, r4, #0x0 + add r1, sp, #0x0 + mov r2, #0x4 + blx FS_ReadFile + ldr r0, [sp, #0x0] + add r0, r5, r0 + str r0, [r4, #0x4c] +_020066EC: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_020066F0: .word 0x021058A0 + + thumb_func_start FUN_020066F4 +FUN_020066F4: ; 0x020066F4 + push {r4, lr} + add r4, r0, #0x0 + blx FS_CloseFile + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02006704 +FUN_02006704: ; 0x02006704 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x50 + ldrh r0, [r0, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r0, r4 + bhi _0200671A + bl ErrorHandling +_0200671A: + ldr r2, [r5, #0x48] + lsl r1, r4, #0x3 + add r2, #0xc + add r1, r2, r1 + add r0, r5, #0x0 + mov r2, #0x0 + blx FS_SeekFile + add r0, r5, #0x0 + add r1, sp, #0x4 + mov r2, #0x4 + blx FS_ReadFile + add r0, r5, #0x0 + add r1, sp, #0x0 + mov r2, #0x4 + blx FS_ReadFile + ldr r2, [r5, #0x4c] + ldr r1, [sp, #0x4] + add r2, #0x8 + add r1, r2, r1 + add r0, r5, #0x0 + mov r2, #0x0 + blx FS_SeekFile + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r6, #0x0 + sub r1, r2, r1 + bl FUN_02016998 + add r4, r0, #0x0 + beq _0200676C + ldr r3, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + sub r2, r3, r2 + blx FS_ReadFile +_0200676C: + add r0, r4, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02006774 +FUN_02006774: ; 0x02006774 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x50 + ldrh r0, [r0, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r0, r4 + bhi _0200678A + bl ErrorHandling +_0200678A: + ldr r2, [r5, #0x48] + lsl r1, r4, #0x3 + add r2, #0xc + add r1, r2, r1 + add r0, r5, #0x0 + mov r2, #0x0 + blx FS_SeekFile + add r0, r5, #0x0 + add r1, sp, #0x4 + mov r2, #0x4 + blx FS_ReadFile + add r0, r5, #0x0 + add r1, sp, #0x0 + mov r2, #0x4 + blx FS_ReadFile + ldr r2, [r5, #0x4c] + ldr r1, [sp, #0x4] + add r2, #0x8 + add r1, r2, r1 + add r0, r5, #0x0 + mov r2, #0x0 + blx FS_SeekFile + ldr r3, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + add r1, r6, #0x0 + sub r2, r3, r2 + blx FS_ReadFile + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_020067D0 +FUN_020067D0: ; 0x020067D0 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x50 + ldrh r0, [r0, #0x0] + add r4, r1, #0x0 + cmp r0, r4 + bhi _020067E4 + bl ErrorHandling +_020067E4: + ldr r2, [r5, #0x48] + lsl r1, r4, #0x3 + add r2, #0xc + add r1, r2, r1 + add r0, r5, #0x0 + mov r2, #0x0 + blx FS_SeekFile + add r0, r5, #0x0 + add r1, sp, #0x4 + mov r2, #0x4 + blx FS_ReadFile + add r0, r5, #0x0 + add r1, sp, #0x0 + mov r2, #0x4 + blx FS_ReadFile + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + sub r0, r1, r0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02006814 +FUN_02006814: ; 0x02006814 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x50 + ldrh r0, [r0, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r0, r4 + bhi _0200682A + bl ErrorHandling +_0200682A: + ldr r2, [r5, #0x48] + lsl r1, r4, #0x3 + add r2, #0xc + add r1, r2, r1 + add r0, r5, #0x0 + mov r2, #0x0 + blx FS_SeekFile + add r0, r5, #0x0 + add r1, sp, #0x0 + mov r2, #0x4 + blx FS_ReadFile + ldr r2, [r5, #0x4c] + ldr r1, [sp, #0x0] + add r2, #0x8 + add r1, r2, r1 + add r0, r5, #0x0 + add r1, r6, r1 + mov r2, #0x0 + blx FS_SeekFile + ldr r1, [sp, #0x18] + add r0, r5, #0x0 + add r2, r7, #0x0 + blx FS_ReadFile + pop {r3-r7, pc} + .balign 4 diff --git a/arm9/asm/macros.inc b/arm9/asm/macros.inc new file mode 100644 index 00000000..156b2b09 --- /dev/null +++ b/arm9/asm/macros.inc @@ -0,0 +1 @@ + .include "asm/macros/function.inc" diff --git a/arm9/asm/macros/function.inc b/arm9/asm/macros/function.inc new file mode 100644 index 00000000..6b9e5f40 --- /dev/null +++ b/arm9/asm/macros/function.inc @@ -0,0 +1,24 @@ + .macro arm_func_start name + .balign 4, 0 + .global \name + .arm + .endm + + .macro arm_func_end name + .size \name, .-\name + .endm + + .macro thumb_func_start name + .balign 4, 0 + .global \name + .thumb + .endm + + .macro non_word_aligned_thumb_func_start name + .global \name + .thumb + .endm + + .macro thumb_func_end name + .size \name, .-\name + .endm diff --git a/arm9/asm/rom2.s b/arm9/asm/rom2.s new file mode 100644 index 00000000..0f18b45a --- /dev/null +++ b/arm9/asm/rom2.s @@ -0,0 +1,7 @@ + + .include "asm/macros.inc" + .include "global.inc" + + .data + +.incbin "baserom.nds", 0xF0710, 0x3F8 ; this does not seem to be code diff --git a/arm9/asm/rom2_2.s b/arm9/asm/rom2_2.s new file mode 100644 index 00000000..d5055773 --- /dev/null +++ b/arm9/asm/rom2_2.s @@ -0,0 +1,734 @@ +.include "asm/macros.inc" +.include "global.inc" + +/* rom2.s TODO: Disassemble */ + +.section .data + +.incbin "baserom.nds", 0xF0B50, 0x6A0C + + .global gScriptCmdTable +gScriptCmdTable: ; 0x020F355C + .word FUN_020399A0 + .word FUN_020399A4 + .word FUN_020399A8 + .word FUN_020399B4 + .word FUN_02039A28 + .word FUN_02039A40 + .word FUN_02039A5C + .word FUN_02039A78 + .word FUN_02039A90 + .word FUN_02039AAC + .word FUN_02039ACC + .word FUN_02039AF8 + .word FUN_02039B28 + .word FUN_02039B50 + .word FUN_02039B78 + .word FUN_02039BA0 + .word FUN_02039BBC + .word FUN_02039BDC + .word FUN_02039C08 + .word FUN_02039C40 + .word FUN_02039C78 + .word FUN_02039CE4 + .word FUN_02039CF8 + .word FUN_02039D10 + .word FUN_02039D48 + .word FUN_02039D78 + .word FUN_02039DAC + .word FUN_02039DC4 + .word FUN_02039DD0 + .word FUN_02039E04 + .word FUN_02039E38 + .word FUN_02039E50 + .word FUN_02039E68 + .word FUN_02039E84 + .word FUN_02039EC0 + .word FUN_02039EE8 + .word FUN_02039F0C + .word FUN_02039F30 + .word FUN_02039F58 + .word FUN_02039F88 + .word FUN_02039FB8 + .word FUN_02039FDC + .word FUN_0203A00C + .word FUN_0203A038 + .word FUN_0203A2C4 + .word FUN_0203A304 + .word FUN_0203A388 + .word FUN_0203A400 + .word FUN_0203A45C + .word FUN_0203A4D0 + .word FUN_0203A560 + .word FUN_0203A590 + .word FUN_0203A5D8 + .word FUN_0203A608 + .word FUN_0203A780 + .word FUN_0203A830 + .word FUN_0203A85C + .word FUN_0203A878 + .word FUN_0203A8B8 + .word FUN_0203A9F0 + .word FUN_0203AA90 + .word FUN_0203A630 + .word FUN_0203AAA0 + .word FUN_0203DEA8 + .word FUN_0203AB8C + .word FUN_0203AC14 + .word FUN_0203AC9C + .word FUN_0203AD08 + .word FUN_0203ADC4 + .word FUN_0203AE4C + .word FUN_0203AED4 + .word FUN_0203AF34 + .word FUN_0203AF58 + .word FUN_020414E0 + .word FUN_020414FC + .word FUN_02041518 + .word FUN_02041558 + .word FUN_02041588 + .word FUN_020415AC + .word FUN_020415BC + .word FUN_020413E8 + .word FUN_020413F8 + .word FUN_0204140C + .word FUN_02041424 + .word FUN_0204143C + .word FUN_02041478 + .word FUN_0204149C + .word FUN_020414B8 + .word FUN_020414CC + .word FUN_020415E0 + .word FUN_02041618 + .word FUN_02041644 + .word FUN_02041650 + .word FUN_02041664 + .word FUN_0203AFC4 + .word FUN_0203B148 + .word FUN_0203B1F0 + .word FUN_0203B3B0 + .word FUN_0203B3C0 + .word FUN_0203B3DC + .word FUN_0203B3F8 + .word FUN_0203B440 + .word FUN_0203B468 + .word FUN_0203B500 + .word FUN_0203B544 + .word FUN_0203B574 + .word FUN_0203B5B8 + .word FUN_0203B640 + .word FUN_0203B724 + .word FUN_0203B758 + .word FUN_0203B7D8 + .word FUN_02043C6C + .word FUN_02043C90 + .word FUN_02043CE4 + .word FUN_02043D78 + .word FUN_02043DC8 + .word FUN_02043DE0 + .word FUN_02043A44 + .word FUN_02043A94 + .word FUN_02043AAC + .word FUN_02043ACC + .word FUN_02043AFC + .word FUN_02043B28 + .word FUN_02045784 + .word FUN_020457DC + .word FUN_02045834 + .word FUN_0204588C + .word FUN_020458E4 + .word FUN_02045918 + .word FUN_02045950 + .word FUN_02045954 + .word FUN_02045958 + .word FUN_020459AC + .word FUN_020459E8 + .word FUN_02045A3C + .word FUN_02045A78 + .word FUN_02045ACC + .word FUN_02045B08 + .word FUN_02045B44 + .word FUN_02045B80 + .word FUN_02045BC8 + .word FUN_02045C04 + .word FUN_02045C40 + .word FUN_02045C7C + .word FUN_02045CD4 + .word FUN_02045D10 + .word FUN_02045D4C + .word FUN_0203B81C + .word FUN_0203B85C + .word FUN_0203B8A0 + .word FUN_020442BC + .word FUN_02044414 + .word FUN_0204449C + .word FUN_020444F4 + .word FUN_02044598 + .word FUN_0203BB34 + .word FUN_0203BB80 + .word FUN_0203BB84 + .word FUN_0203BB88 + .word FUN_0203BB8C + .word FUN_02045264 + .word FUN_0203BC1C + .word FUN_0203BCBC + .word FUN_0203BCCC + .word FUN_0203BCD8 + .word FUN_0203BF20 + .word FUN_0203BF2C + .word FUN_0203BF84 + .word FUN_0203BFEC + .word FUN_0203C118 + .word FUN_0203C12C + .word FUN_0203C278 + .word FUN_0203C2C4 + .word FUN_0203C2E0 + .word FUN_0203C2F0 + .word FUN_0203C300 + .word FUN_0203C32C + .word FUN_0203C33C + .word FUN_0203C368 + .word FUN_0203C3C8 + .word FUN_0203C3E8 + .word FUN_0203C430 + .word FUN_020416A8 + .word FUN_02041770 + .word FUN_020417E0 + .word FUN_02041808 + .word FUN_0203C4F0 + .word FUN_0203C520 + .word FUN_0203C6C4 + .word FUN_0203C70C + .word FUN_0203C730 + .word FUN_0203C844 + .word FUN_0203C874 + .word FUN_0203C8B4 + .word FUN_0203C8E4 + .word FUN_0203C930 + .word FUN_0203C960 + .word FUN_0203C990 + .word FUN_0203CA20 + .word FUN_0203CA2C + .word FUN_0203CA5C + .word FUN_0203CB08 + .word FUN_0203CB20 + .word FUN_0203CB48 + .word FUN_0203CB60 + .word FUN_020406CC + .word FUN_02040700 + .word FUN_02040724 + .word FUN_02040748 + .word FUN_02040790 + .word FUN_020407C8 + .word FUN_02040800 + .word FUN_0204083C + .word FUN_02040874 + .word FUN_0204091C + .word FUN_020409C0 + .word FUN_020409F8 + .word FUN_02040A30 + .word FUN_02040A7C + .word FUN_02040B0C + .word FUN_02040B5C + .word FUN_02040BAC + .word FUN_0203CBBC + .word FUN_02040BFC + .word FUN_02040C34 + .word FUN_02040C6C + .word FUN_02040CA4 + .word FUN_0203CB70 + .word FUN_0204185C + .word FUN_0204188C + .word FUN_0203CBE8 + .word FUN_02041970 + .word FUN_020419F8 + .word FUN_02041A80 + .word FUN_02041AB4 + .word FUN_02041AD4 + .word FUN_02041AE0 + .word FUN_02041B10 + .word FUN_02041B70 + .word FUN_02041B9C + .word FUN_02041BC4 + .word FUN_02041BF0 + .word FUN_0203CC88 + .word FUN_0203CD20 + .word FUN_0203CDB8 + .word FUN_0203CDC4 + .word FUN_0203CDD0 + .word FUN_0203CE00 + .word FUN_0203FE90 + .word FUN_0203FEC0 + .word FUN_0203FF10 + .word FUN_02040028 + .word FUN_02040074 + .word FUN_020400C8 + .word FUN_0204011C + .word FUN_02040170 + .word FUN_020401CC + .word FUN_02040204 + .word FUN_02040220 + .word FUN_0204025C + .word FUN_02040298 + .word FUN_020402D4 + .word FUN_02040304 + .word FUN_02040340 + .word FUN_02040370 + .word FUN_020403A0 + .word FUN_020403D0 + .word FUN_02040414 + .word FUN_02040458 + .word FUN_020404FC + .word FUN_0204052C + .word FUN_0204056C + .word FUN_02040488 + .word FUN_020405CC + .word FUN_020405F8 + .word FUN_02040638 + .word FUN_0204064C + .word FUN_02040660 + .word FUN_020406C0 + .word FUN_0204059C + .word FUN_020405B4 + .word FUN_02044CE0 + .word FUN_02044D44 + .word FUN_0203CE0C + .word FUN_0203CE8C + .word FUN_0203CEBC + .word FUN_0203CF04 + .word FUN_0203CF34 + .word FUN_0203CF64 + .word FUN_0203CF94 + .word FUN_0203CFC4 + .word FUN_0203CFC8 + .word FUN_0203D050 + .word FUN_0203D0F8 + .word FUN_0203D134 + .word FUN_0203D140 + .word FUN_0203D150 + .word FUN_0203D178 + .word FUN_0203D194 + .word FUN_0203D1A4 + .word FUN_0203D1C0 + .word FUN_0203D214 + .word FUN_0203C054 + .word FUN_0203C090 + .word FUN_0203C0CC + .word FUN_0203D23C + .word FUN_0203D248 + .word FUN_0203D278 + .word FUN_0203D2A4 + .word FUN_0203D2E4 + .word FUN_0203D330 + .word FUN_0203D33C + .word FUN_0203D36C + .word FUN_0203D3A4 + .word FUN_0203D60C + .word FUN_0203D61C + .word FUN_0203D3DC + .word FUN_0203D448 + .word FUN_0203D458 + .word FUN_0203D490 + .word FUN_0203D528 + .word FUN_0203D5B0 + .word FUN_0203D5F8 + .word FUN_0203D630 + .word FUN_0203D66C + .word FUN_0203D6C4 + .word FUN_0203D560 + .word FUN_0203FCF4 + .word FUN_0203FDBC + .word FUN_0203FE08 + .word FUN_0203FE48 + .word FUN_0203D868 + .word FUN_0203D874 + .word FUN_0203D8A0 + .word FUN_0203D8D0 + .word FUN_0203D8E8 + .word FUN_0203D8EC + .word FUN_0203D938 + .word FUN_0203D948 + .word FUN_0203D728 + .word FUN_0203D738 + .word FUN_0203D774 + .word FUN_0203D834 + .word FUN_020453F4 + .word FUN_02045424 + .word FUN_02045438 + .word FUN_02045468 + .word FUN_02045484 + .word FUN_020454CC + .word FUN_0204552C + .word FUN_02045500 + .word FUN_0204557C + .word FUN_02045590 + .word FUN_020455BC + .word FUN_020455D0 + .word FUN_020455E4 + .word FUN_02045610 + .word FUN_02045624 + .word FUN_02045638 + .word FUN_02045664 + .word FUN_0203DC00 + .word FUN_0203DC58 + .word FUN_0203DC70 + .word FUN_0203DC88 + .word FUN_0203DCA0 + .word FUN_02043E00 + .word FUN_02043E20 + .word FUN_0203DCB8 + .word FUN_0203DCC8 + .word FUN_0203DCD8 + .word FUN_0203DCE8 + .word FUN_0203DCF8 + .word FUN_0203DD08 + .word FUN_0203DD18 + .word FUN_0203DD34 + .word FUN_02044B00 + .word FUN_0203C460 + .word FUN_0203C4B0 + .word FUN_0203D958 + .word FUN_02040D04 + .word FUN_02040D7C + .word FUN_02042B0C + .word FUN_02042B40 + .word FUN_02042B74 + .word FUN_02042BA8 + .word FUN_02042BDC + .word FUN_02042C10 + .word FUN_02042C44 + .word FUN_02042C8C + .word FUN_02042CBC + .word FUN_0203D998 + .word FUN_0203D9E8 + .word FUN_0203DA78 + .word FUN_0203DAB0 + .word FUN_0203DAE8 + .word FUN_0203DB38 + .word FUN_0203DB88 + .word FUN_0203AB44 + .word FUN_0203AB74 + .word FUN_0203DBD4 + .word FUN_0203A484 + .word FUN_0203B8E4 + .word FUN_0203B944 + .word FUN_0203B968 + .word FUN_0203B9B4 + .word FUN_0203BA3C + .word FUN_0203BAB0 + .word FUN_0203BAF4 + .word FUN_0204434C + .word FUN_020443A8 + .word FUN_02044B2C + .word FUN_02044B84 + .word FUN_02044C0C + .word FUN_02044C88 + .word FUN_0203DD60 + .word FUN_0203DE00 + .word FUN_0203DE4C + .word FUN_0203DE58 + .word FUN_0203DE80 + .word FUN_02043CB4 + .word FUN_02043E9C + .word FUN_02044120 + .word FUN_02044138 + .word FUN_0204413C + .word FUN_02043E50 + .word FUN_02043E68 + .word FUN_02043EFC + .word FUN_02043D28 + .word FUN_0203DD50 + .word FUN_02044140 + .word FUN_02043F50 + .word FUN_02043FA0 + .word FUN_02043FF4 + .word FUN_0203DEC4 + .word FUN_0203DEF8 + .word FUN_0203DF2C + .word FUN_0203DF38 + .word FUN_0203DF64 + .word FUN_0203DF84 + .word FUN_0203DFA8 + .word FUN_0203DFE0 + .word FUN_0204488C + .word FUN_020448D4 + .word FUN_020449A4 + .word FUN_02044034 + .word FUN_0203B618 + .word FUN_020440C0 + .word FUN_020440F0 + .word FUN_02044F58 + .word FUN_0203E018 + .word FUN_0203E054 + .word FUN_0203E078 + .word FUN_0203E0CC + .word FUN_0203E120 + .word FUN_02045D88 + .word FUN_02045DD0 + .word FUN_02044D8C + .word FUN_02044E34 + .word FUN_02044E78 + .word FUN_02040E4C + .word FUN_0203E138 + .word FUN_0203E168 + .word FUN_0203E254 + .word FUN_02045678 + .word FUN_020456D4 + .word FUN_0204572C + .word FUN_0203E258 + .word FUN_0203E29C + .word FUN_0203E2F8 + .word FUN_0203E35C + .word FUN_0203E38C + .word FUN_0203C174 + .word FUN_0203C1AC + .word FUN_0203C200 + .word FUN_02042354 + .word FUN_02042364 + .word FUN_02042394 + .word FUN_020423B0 + .word FUN_02042700 + .word FUN_02042780 + .word FUN_020427A8 + .word FUN_020427D0 + .word FUN_02042864 + .word FUN_02042894 + .word FUN_020428E0 + .word FUN_0203E4F0 + .word FUN_0203E510 + .word FUN_0203E568 + .word FUN_0203E3D0 + .word FUN_0203E408 + .word FUN_0203E440 + .word FUN_0203E470 + .word FUN_0203E4A0 + .word FUN_0203E4B0 + .word FUN_02044ED8 + .word FUN_0203E4D8 + .word FUN_02044F20 + .word FUN_02045268 + .word FUN_02045398 + .word FUN_0204539C + .word FUN_020452B4 + .word FUN_02045308 + .word FUN_0204469C + .word FUN_02044658 + .word FUN_0203BC2C + .word FUN_02039A10 + .word FUN_0203A04C + .word FUN_0203A098 + .word FUN_0203A0FC + .word FUN_0203A13C + .word FUN_0203A188 + .word FUN_0203A210 + .word FUN_0203C7F4 + .word FUN_0203C820 + .word FUN_0203E5DC + .word FUN_0203C788 + .word FUN_0203C7E4 + .word FUN_0203C0FC + .word FUN_0203E674 + .word FUN_0203BD08 + .word FUN_0203BD28 + .word FUN_0203BE50 + .word FUN_0203BECC + .word FUN_0203BF00 + .word FUN_0203A3C4 + .word FUN_0203E684 + .word FUN_0203E6B4 + .word FUN_0203E6C4 + .word FUN_0203E6FC + .word FUN_0203E72C + .word FUN_0204478C + .word FUN_02044800 + .word FUN_0203E744 + .word FUN_02044158 + .word FUN_0204416C + .word FUN_02044198 + .word FUN_0203E774 + .word FUN_0203E7F0 + .word FUN_0203E81C + .word FUN_0203E848 + .word FUN_0203E858 + .word FUN_02041C38 + .word FUN_02045E1C + .word FUN_02045E20 + .word FUN_02045EE0 + .word FUN_02045EE4 + .word FUN_02045F84 + .word FUN_02045F88 + .word FUN_02045F24 + .word FUN_02045FCC + .word FUN_0203E870 + .word FUN_0203E894 + .word FUN_0203E8C4 + .word FUN_0203E8F4 + .word FUN_0203E928 + .word FUN_0203E940 + .word FUN_0203E954 + .word FUN_0203E968 + .word FUN_02044FE8 + .word FUN_0204505C + .word FUN_02045104 + .word FUN_02045170 + .word FUN_02040EB4 + .word FUN_0203E9CC + .word FUN_0203EA68 + .word FUN_02041E40 + .word FUN_02041FDC + .word FUN_02042038 + .word FUN_02042110 + .word FUN_0203EA90 + .word FUN_0203EAB0 + .word FUN_0203EB20 + .word FUN_0203EB48 + .word FUN_0203EB88 + .word FUN_02042D1C + .word FUN_02046010 + .word FUN_0204601C + .word FUN_02046028 + .word FUN_0204602C + .word FUN_0203C5BC + .word FUN_0203C614 + .word FUN_0203C680 + .word FUN_0203EBC8 + .word FUN_02044A6C + .word FUN_02044A94 + .word FUN_0203EBE4 + .word FUN_0203ECAC + .word FUN_0203ECD8 + .word FUN_0203ECF4 + .word FUN_0203ED10 + .word FUN_02041194 + .word FUN_020411C4 + .word FUN_02041340 + .word FUN_02040964 + .word FUN_0203ED70 + .word FUN_0204387C + .word FUN_020438D0 + .word FUN_02043918 + .word FUN_020439B4 + .word FUN_0203FE80 + .word FUN_0203EDA4 + .word FUN_0203EDC8 + .word FUN_0203EDE0 + .word FUN_0203EE08 + .word FUN_0203EE18 + .word FUN_0203EE28 + .word FUN_0203EE58 + .word FUN_0203EE68 + .word FUN_0203EE78 + .word FUN_02040DB4 + .word FUN_0203EE98 + .word FUN_0203EED8 + .word FUN_0203EF58 + .word FUN_0203F00C + .word FUN_0203F020 + .word FUN_0203F034 + .word FUN_0203F058 + .word FUN_0203F07C + .word FUN_0203F110 + .word FUN_0203F174 + .word FUN_0203F19C + .word FUN_0203A288 + .word FUN_0203F234 + .word FUN_0203F254 + .word FUN_0203F26C + .word FUN_0203C58C + .word FUN_02040DEC + .word FUN_0203F2AC + .word FUN_02043B84 + .word FUN_0203F2E4 + .word FUN_02043C28 + .word FUN_0203F31C + .word FUN_02044730 + .word FUN_0203F348 + .word FUN_0203F38C + .word FUN_0203F39C + .word FUN_0204214C + .word FUN_0203F3AC + .word FUN_0203F44C + .word FUN_0203F418 + .word FUN_020408BC + .word FUN_02044A0C + .word FUN_0203F484 + .word FUN_02041674 + .word FUN_0203F4D8 + .word FUN_0203F508 + .word FUN_0203F5D4 + .word FUN_0203F604 + .word FUN_0203F634 + .word FUN_0203F664 + .word FUN_0203F6E4 + .word FUN_0203F720 + .word FUN_0203BDB8 + .word FUN_0203BE68 + .word FUN_0203BE80 + .word FUN_0203F760 + .word FUN_0203F7C8 + .word FUN_0203F80C + .word FUN_0203F880 + .word FUN_0203F924 + .word FUN_02042950 + .word FUN_02042980 + .word FUN_02042998 + .word FUN_020429B8 + .word FUN_020429E8 + .word FUN_02042A18 + .word FUN_02042A48 + .word FUN_02042A98 + .word FUN_0203D7DC + .word FUN_0203ACC4 + .word FUN_0203F8C0 + .word FUN_0203F954 + .word FUN_0204190C + .word FUN_0203B024 + .word FUN_0203F9DC + .word FUN_0203F988 + .word FUN_0203F9B0 + .word FUN_0203B914 + .word FUN_020453A0 + .word FUN_0203FA14 + .word FUN_02043B54 + .word FUN_02043BD0 + .word FUN_0203FA58 + .word FUN_0203B7F0 + .word FUN_0203FB4C + .word FUN_0203B790 + .word FUN_020413C0 + .word FUN_0203FB64 + .word FUN_0203FB94 + .word FUN_0203FBA0 + .word FUN_0203FBAC + .word FUN_02040EF8 + .word FUN_0203B2E0 + .word FUN_0203FBBC + .word FUN_0203FC1C + .word FUN_020451D0 + .word FUN_02042000 + .word FUN_0203AD54 + .word FUN_0203D4E8 + .word FUN_0203D920 + .word FUN_02041B40 + .word FUN_0203D0A4 + .word FUN_0203FC58 + .word FUN_0203CAE8 + .word FUN_0203A340 + .word FUN_0203FC80 + .word FUN_0203FCB0 + .word FUN_0203FCDC + .word FUN_02040F34 + .word FUN_02040F6C + .word FUN_02040FA4 + .word FUN_02040FDC + .word FUN_02041014 + .word FUN_0204104C + .word FUN_02041094 + .word FUN_020410C8 + .word FUN_02041100 + .word FUN_02041138 + .word FUN_02041174 + .word FUN_0203AF84 + .word FUN_0203AFA4 + +.incbin "baserom.nds", 0xF80A0, 0x12F00 diff --git a/arm9/asm/scrcmd.s b/arm9/asm/scrcmd.s new file mode 100644 index 00000000..d75850de --- /dev/null +++ b/arm9/asm/scrcmd.s @@ -0,0 +1,24605 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_020399A0 +FUN_020399A0: ; 0x020399A0 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020399A4 +FUN_020399A4: ; 0x020399A4 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020399A8 +FUN_020399A8: ; 0x020399A8 + push {r3, lr} + bl StopScript + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020399B4 +FUN_020399B4: ; 0x020399B4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_020394B8 + strh r7, [r0, #0x0] + ldr r1, _020399E4 ; =FUN_020399E8 + add r0, r5, #0x0 + str r4, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_020399E4: .word FUN_020399E8 + + thumb_func_start FUN_020399E8 +FUN_020399E8: ; 0x020399E8 + push {r3, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + ldrh r1, [r0, #0x0] + sub r1, r1, #0x1 + strh r1, [r0, #0x0] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02039A0A + mov r0, #0x1 + pop {r3, pc} +_02039A0A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02039A10 +FUN_02039A10: ; 0x02039A10 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039A28 +FUN_02039A28: ; 0x02039A28 + ldr r1, [r0, #0x8] + add r2, r1, #0x1 + str r2, [r0, #0x8] + ldrb r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r2, [r2, #0x0] + lsl r1, r3, #0x2 + add r0, r0, r1 + str r2, [r0, #0x64] + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02039A40 +FUN_02039A40: ; 0x02039A40 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadWord + lsl r1, r5, #0x2 + add r1, r4, r1 + str r0, [r1, #0x64] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02039A5C +FUN_02039A5C: ; 0x02039A5C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadWord + ldrb r1, [r0, #0x0] + lsl r0, r4, #0x2 + add r0, r5, r0 + str r1, [r0, #0x64] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039A78 +FUN_02039A78: ; 0x02039A78 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + strb r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039A90 +FUN_02039A90: ; 0x02039A90 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + lsl r1, r1, #0x2 + add r1, r4, r1 + ldr r1, [r1, #0x64] + strb r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039AAC +FUN_02039AAC: ; 0x02039AAC + ldr r1, [r0, #0x8] + add r2, r1, #0x1 + str r2, [r0, #0x8] + ldrb r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + lsl r1, r1, #0x2 + add r1, r0, r1 + ldr r2, [r1, #0x64] + lsl r1, r3, #0x2 + add r0, r0, r1 + str r2, [r0, #0x64] + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02039ACC +FUN_02039ACC: ; 0x02039ACC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadWord + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadWord + ldrb r0, [r0, #0x0] + strb r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039AE4 +FUN_02039AE4: ; 0x02039AE4 + cmp r0, r1 + bhs _02039AEC + mov r0, #0x0 + bx lr +_02039AEC: + cmp r0, r1 + bne _02039AF4 + mov r0, #0x1 + bx lr +_02039AF4: + mov r0, #0x2 + bx lr + + thumb_func_start FUN_02039AF8 +FUN_02039AF8: ; 0x02039AF8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + add r1, r0, #0x1 + str r1, [r4, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x64] + str r2, [r4, #0x8] + ldrb r1, [r1, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r1, r1, #0x2 + add r1, r4, r1 + ldr r1, [r1, #0x64] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02039AE4 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039B28 +FUN_02039B28: ; 0x02039B28 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + add r1, r0, #0x1 + str r1, [r4, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x64] + str r2, [r4, #0x8] + ldrb r1, [r1, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02039AE4 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039B50 +FUN_02039B50: ; 0x02039B50 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + lsl r1, r1, #0x2 + add r1, r4, r1 + ldr r1, [r1, #0x64] + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + bl ScriptReadWord + ldrb r1, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_02039AE4 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039B78 +FUN_02039B78: ; 0x02039B78 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + ldr r2, [r4, #0x8] + ldrb r0, [r0, #0x0] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + lsl r1, r1, #0x2 + add r1, r4, r1 + ldr r1, [r1, #0x64] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02039AE4 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039BA0 +FUN_02039BA0: ; 0x02039BA0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + ldr r2, [r4, #0x8] + ldrb r0, [r0, #0x0] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + bl FUN_02039AE4 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039BBC +FUN_02039BBC: ; 0x02039BBC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadWord + ldrb r4, [r0, #0x0] + add r0, r5, #0x0 + bl ScriptReadWord + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_02039AE4 + strb r0, [r5, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02039BDC +FUN_02039BDC: ; 0x02039BDC + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + ldrh r5, [r0, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02039AE4 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02039C08 +FUN_02039C08: ; 0x02039C08 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r1, r0, #0x0 + ldrh r0, [r4, #0x0] + ldrh r1, [r1, #0x0] + bl FUN_02039AE4 + strb r0, [r5, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039C40 +FUN_02039C40: ; 0x02039C40 + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x7 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xe + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02038EB0 + str r0, [r6, #0x0] + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02039C78 +FUN_02039C78: ; 0x02039C78 + push {r3-r7, lr} + str r0, [sp, #0x0] + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x5 + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x7 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xe + bl FUN_02039438 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + mov r0, #0x1 + strb r0, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_02038EB0 + str r0, [r7, #0x0] + ldrb r0, [r4, #0x0] + ldr r1, _02039CC4 ; =FUN_02039CC8 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + ldr r0, [sp, #0x0] + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_02039CC4: .word FUN_02039CC8 + + thumb_func_start FUN_02039CC8 +FUN_02039CC8: ; 0x02039CC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x5 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02039CDE + mov r0, #0x1 + pop {r3, pc} +_02039CDE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02039CE4 +FUN_02039CE4: ; 0x02039CE4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x5 + bl FUN_02039438 + mov r1, #0x0 + strb r1, [r0, #0x0] + add r0, r1, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02039CF8 +FUN_02039CF8: ; 0x02039CF8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + ldr r1, [r4, #0x8] + add r0, r4, #0x0 + add r1, r1, r2 + bl ScriptJump + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039D10 +FUN_02039D10: ; 0x02039D10 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadWord + add r7, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02058448 + cmp r4, r0 + bne _02039D44 + ldr r1, [r5, #0x8] + add r0, r5, #0x0 + add r1, r1, r7 + bl ScriptJump +_02039D44: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02039D48 +FUN_02039D48: ; 0x02039D48 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x74] + bl FUN_02046534 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r0, r5, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + cmp r6, r4 + bne _02039D72 + ldr r1, [r5, #0x8] + add r0, r5, #0x0 + add r1, r1, r2 + bl ScriptJump +_02039D72: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02039D78 +FUN_02039D78: ; 0x02039D78 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x9 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r0, r5, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + cmp r0, r4 + bne _02039DA8 + ldr r1, [r5, #0x8] + add r0, r5, #0x0 + add r1, r1, r2 + bl ScriptJump +_02039DA8: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02039DAC +FUN_02039DAC: ; 0x02039DAC + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadWord + add r2, r0, #0x0 + ldr r1, [r4, #0x8] + add r0, r4, #0x0 + add r1, r1, r2 + bl ScriptCall + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039DC4 +FUN_02039DC4: ; 0x02039DC4 + push {r3, lr} + bl ScriptReturn + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02039DD0 +FUN_02039DD0: ; 0x02039DD0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadWord + add r1, r0, #0x0 + lsl r0, r4, #0x1 + add r3, r4, r0 + ldr r0, _02039E00 ; =0x020F34E8 + ldrb r2, [r5, #0x2] + add r0, r0, r3 + ldrb r0, [r2, r0] + cmp r0, #0x1 + bne _02039DFC + ldr r2, [r5, #0x8] + add r0, r5, #0x0 + add r1, r2, r1 + bl ScriptJump +_02039DFC: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02039E00: .word 0x020F34E8 + + thumb_func_start FUN_02039E04 +FUN_02039E04: ; 0x02039E04 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadWord + add r1, r0, #0x0 + lsl r0, r4, #0x1 + add r3, r4, r0 + ldr r0, _02039E34 ; =0x020F34E8 + ldrb r2, [r5, #0x2] + add r0, r0, r3 + ldrb r0, [r2, r0] + cmp r0, #0x1 + bne _02039E30 + ldr r2, [r5, #0x8] + add r0, r5, #0x0 + add r1, r2, r1 + bl ScriptCall +_02039E30: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02039E34: .word 0x020F34E8 + + thumb_func_start FUN_02039E38 +FUN_02039E38: ; 0x02039E38 + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0203953C + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039E50 +FUN_02039E50: ; 0x02039E50 + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02039550 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02039E68 +FUN_02039E68: ; 0x02039E68 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02039528 + strb r0, [r4, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039E84 +FUN_02039E84: ; 0x02039E84 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldrh r1, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_02039528 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02039EC0 +FUN_02039EC0: ; 0x02039EC0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r1, r0, #0x0 + ldrh r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_0203953C + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02039EE8 +FUN_02039EE8: ; 0x02039EE8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0203965C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039F0C +FUN_02039F0C: ; 0x02039F0C + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02039678 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039F30 +FUN_02039F30: ; 0x02039F30 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02039640 + strb r0, [r5, #0x2] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039F58 +FUN_02039F58: ; 0x02039F58 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + ldrh r1, [r4, #0x0] + add r0, r1, r0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039F88 +FUN_02039F88: ; 0x02039F88 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + ldrh r1, [r4, #0x0] + sub r0, r1, r0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02039FB8 +FUN_02039FB8: ; 0x02039FB8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02039FDC +FUN_02039FDC: ; 0x02039FDC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + ldrh r0, [r0, #0x0] + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A00C +FUN_0203A00C: ; 0x0203A00C + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203A038 +FUN_0203A038: ; 0x0203A038 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [r0, #0x78] + bl FUN_021E2C24 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203A04C +FUN_0203A04C: ; 0x0203A04C + push {r4-r6, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x1a + add r2, r5, #0x0 + mov r3, #0x20 + bl FUN_0200A86C + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_021E2C24 + add r0, r5, #0x0 + bl FUN_0200A8B8 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203A098 +FUN_0203A098: ; 0x0203A098 + push {r3-r6, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x1a + add r2, r5, #0x0 + mov r3, #0x20 + bl FUN_0200A86C + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x1 + bl FUN_021E2BD0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + ldr r1, _0203A0F8 ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + nop +_0203A0F8: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A0FC +FUN_0203A0FC: ; 0x0203A0FC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_021E2C58 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203A13C +FUN_0203A13C: ; 0x0203A13C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_021E2C58 + ldr r1, _0203A184 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203A184: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A188 +FUN_0203A188: ; 0x0203A188 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldrb r3, [r2, #0x0] + add r1, #0xa8 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + bne _0203A1AA + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_0203A1AA: + lsl r1, r3, #0x4 + add r1, r3, r1 + add r2, #0x90 + lsl r1, r1, #0x4 + add r4, r2, r1 + ldrh r1, [r2, r1] + ldr r2, _0203A204 ; =0x0000FFFF + cmp r1, r2 + bne _0203A1E2 + ldr r2, _0203A208 ; =0x0000022B + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0x20 + bl FUN_0200A86C + add r6, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x1 + bl FUN_021E2BD0 + add r0, r6, #0x0 + bl FUN_0200A8B8 + b _0203A1F4 +_0203A1E2: + mov r2, #0x6 + ldrsh r2, [r4, r2] + str r2, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + ldrh r2, [r4, #0x2] + ldrh r3, [r4, #0x4] + bl FUN_021E2C58 +_0203A1F4: + ldr r1, _0203A20C ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r4-r6, pc} + nop +_0203A204: .word 0x0000FFFF +_0203A208: .word 0x0000022B +_0203A20C: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A210 +FUN_0203A210: ; 0x0203A210 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r2, [r5, #0x8] + ldr r6, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + ldr r1, [r5, #0x8] + add r2, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r3, [r1, #0x0] + mov r1, #0x0 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r0, [r6, #0xc] + add r1, r7, #0x0 + bl FUN_02244210 + add r6, r0, #0x0 + add r2, sp, #0x4 + ldrb r2, [r2, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, r2 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0x1 + bl FUN_021E2CBC + add r0, r6, #0x0 + bl FUN_0200AB18 + ldr r1, _0203A284 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203A284: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A288 +FUN_0203A288: ; 0x0203A288 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, sp, #0x4 + add r1, r5, #0x0 + bl FUN_021E2BB8 + mov r1, #0x3 + add r0, sp, #0x4 + strb r1, [r0, #0x2] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_021E2BD0 + ldr r1, _0203A2C0 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_0203A2C0: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A2C4 +FUN_0203A2C4: ; 0x0203A2C4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + mov r3, #0x1 + add r1, r2, #0x1 + str r1, [r4, #0x8] + mov r1, #0x0 + str r1, [sp, #0x0] + ldrb r2, [r2, #0x0] + ldr r1, [r4, #0x78] + bl FUN_021E2BD0 + ldr r1, _0203A2EC ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203A2EC: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A2F0 +FUN_0203A2F0: ; 0x0203A2F0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + bl FUN_020546C8 + pop {r3, pc} + + thumb_func_start FUN_0203A304 +FUN_0203A304: ; 0x0203A304 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r1, [r4, #0x78] + add r0, r4, #0x0 + lsr r2, r2, #0x18 + mov r3, #0x1 + bl FUN_021E2BD0 + ldr r1, _0203A33C ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203A33C: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A340 +FUN_0203A340: ; 0x0203A340 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, sp, #0x4 + add r1, r5, #0x0 + bl FUN_021E2BB8 + lsl r2, r4, #0x18 + mov r3, #0x1 + add r0, sp, #0x4 + strb r3, [r0, #0x1] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_021E2BD0 + ldr r1, _0203A384 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_0203A384: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A388 +FUN_0203A388: ; 0x0203A388 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + mov r3, #0x0 + str r3, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r1, [r4, #0x78] + add r0, r4, #0x0 + lsr r2, r2, #0x18 + bl FUN_021E2BD0 + ldr r1, _0203A3C0 ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + nop +_0203A3C0: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A3C4 +FUN_0203A3C4: ; 0x0203A3C4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02058488 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r4, #0x78] + add r0, r4, #0x0 + mov r3, #0x1 + bl FUN_021E2BD0 + ldr r1, _0203A3FC ; =FUN_0203A2F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + nop +_0203A3FC: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A400 +FUN_0203A400: ; 0x0203A400 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r1, [r5, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + bl FUN_02030F40 + cmp r0, #0x0 + bne _0203A428 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x1 + bl FUN_021E2BD0 + b _0203A448 +_0203A428: + add r0, sp, #0x4 + add r1, r5, #0x0 + bl FUN_021E2BB8 + mov r1, #0x1 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r1, [r5, #0x78] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_021E2BD0 +_0203A448: + ldr r1, _0203A458 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + nop +_0203A458: .word FUN_0203A2F0 + + thumb_func_start FUN_0203A45C +FUN_0203A45C: ; 0x0203A45C + push {r3, lr} + ldr r1, _0203A468 ; =FUN_0203A46C + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203A468: .word FUN_0203A46C + + thumb_func_start FUN_0203A46C +FUN_0203A46C: ; 0x0203A46C + ldr r0, _0203A480 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0203A47A + mov r0, #0x1 + bx lr +_0203A47A: + mov r0, #0x0 + bx lr + nop +_0203A480: .word 0x021C48B8 + + thumb_func_start FUN_0203A484 +FUN_0203A484: ; 0x0203A484 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [r4, #0x64] + ldr r1, _0203A4A8 ; =FUN_0203A4AC + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203A4A8: .word FUN_0203A4AC + + thumb_func_start FUN_0203A4AC +FUN_0203A4AC: ; 0x0203A4AC + ldr r1, _0203A4CC ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x3 + tst r1, r2 + beq _0203A4BA + mov r0, #0x1 + bx lr +_0203A4BA: + ldr r1, [r0, #0x64] + sub r1, r1, #0x1 + str r1, [r0, #0x64] + bne _0203A4C6 + mov r0, #0x1 + bx lr +_0203A4C6: + mov r0, #0x0 + bx lr + nop +_0203A4CC: .word 0x021C48B8 + + thumb_func_start FUN_0203A4D0 +FUN_0203A4D0: ; 0x0203A4D0 + push {r3, lr} + ldr r1, _0203A4DC ; =FUN_0203A4E0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203A4DC: .word FUN_0203A4E0 + + thumb_func_start FUN_0203A4E0 +FUN_0203A4E0: ; 0x0203A4E0 + push {r4, lr} + ldr r1, _0203A55C ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x3 + add r3, r2, #0x0 + tst r3, r1 + beq _0203A4F2 + mov r0, #0x1 + pop {r4, pc} +_0203A4F2: + mov r3, #0x40 + tst r3, r2 + beq _0203A506 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A506: + mov r3, #0x80 + tst r3, r2 + beq _0203A51A + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A51A: + mov r3, #0x20 + tst r3, r2 + beq _0203A52E + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A52E: + mov r3, #0x10 + add r4, r2, #0x0 + tst r4, r3 + beq _0203A542 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055304 + b _0203A556 +_0203A542: + lsl r1, r3, #0x6 + tst r1, r2 + beq _0203A552 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02039460 + b _0203A556 +_0203A552: + mov r0, #0x0 + pop {r4, pc} +_0203A556: + mov r0, #0x1 + pop {r4, pc} + nop +_0203A55C: .word 0x021C48B8 + + thumb_func_start FUN_0203A560 +FUN_0203A560: ; 0x0203A560 + push {r3, lr} + ldr r1, _0203A56C ; =FUN_0203A570 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203A56C: .word FUN_0203A570 + + thumb_func_start FUN_0203A570 +FUN_0203A570: ; 0x0203A570 + ldr r0, _0203A58C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0203A57E + mov r0, #0x1 + bx lr +_0203A57E: + mov r0, #0xf0 + tst r0, r1 + beq _0203A588 + mov r0, #0x1 + bx lr +_0203A588: + mov r0, #0x0 + bx lr + .balign 4 +_0203A58C: .word 0x021C48B8 + + thumb_func_start FUN_0203A590 +FUN_0203A590: ; 0x0203A590 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x6 + add r0, r4, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + add r1, r0, #0x0 + ldr r0, [r4, #0x8] + mov r2, #0x3 + bl FUN_020545B8 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02054608 + mov r0, #0x1 + strb r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203A5D8 +FUN_0203A5D8: ; 0x0203A5D8 + push {r3-r5, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x1 + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02019178 + mov r0, #0x0 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A608 +FUN_0203A608: ; 0x0203A608 + push {r3-r5, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x1 + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02019178 + mov r0, #0x0 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A630 +FUN_0203A630: ; 0x0203A630 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x31 + add r0, r4, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2d + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_02039438 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_02039438 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x2e + bl FUN_02039438 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_02039438 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + strh r1, [r6, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + strh r1, [r7, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [sp, #0x0] + strh r2, [r1, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [sp, #0x4] + strh r2, [r1, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r2, [r2, #0x0] + ldr r1, [sp, #0x8] + strh r2, [r1, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + strh r1, [r0, #0x0] + ldr r1, _0203A6C4 ; =FUN_0203A6C8 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0203A6C4: .word FUN_0203A6C8 + + thumb_func_start FUN_0203A6C8 +FUN_0203A6C8: ; 0x0203A6C8 + push {r4-r7, lr} + sub sp, #0xc + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x31 + add r0, r4, #0x0 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_02039438 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_02039438 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_02039438 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x2d + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2e + bl FUN_02039438 + add r5, r0, #0x0 + ldrh r0, [r6, #0x0] + cmp r0, #0x0 + bne _0203A71E + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + bne _0203A71E + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0203A71E: + ldrh r3, [r7, #0x0] + cmp r3, #0x0 + beq _0203A740 + ldr r0, [sp, #0x8] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, [r4, #0x8] + bne _0203A738 + mov r1, #0x3 + mov r2, #0x1 + bl FUN_020179E0 + b _0203A740 +_0203A738: + mov r1, #0x3 + mov r2, #0x2 + bl FUN_020179E0 +_0203A740: + ldr r0, [sp, #0x4] + ldrh r3, [r0, #0x0] + cmp r3, #0x0 + beq _0203A764 + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, [r4, #0x8] + bne _0203A75C + mov r1, #0x3 + mov r2, #0x4 + bl FUN_020179E0 + b _0203A764 +_0203A75C: + mov r1, #0x3 + mov r2, #0x5 + bl FUN_020179E0 +_0203A764: + ldrh r0, [r6, #0x0] + cmp r0, #0x0 + beq _0203A76E + sub r0, r0, #0x1 + strh r0, [r6, #0x0] +_0203A76E: + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _0203A778 + sub r0, r0, #0x1 + strh r0, [r5, #0x0] +_0203A778: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203A780 +FUN_0203A780: ; 0x0203A780 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x11 + add r0, r4, #0x0 + bl FUN_02039438 + str r0, [sp, #0x18] + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x14] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + str r0, [sp, #0xc] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r0, [r1, #0x0] + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + cmp r6, #0x0 + bne _0203A7E0 + add r0, r4, #0x0 + mov r1, #0xa + bl FUN_02039438 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02058510 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 +_0203A7E0: + ldr r0, [r4, #0x60] + ldr r1, [sp, #0x10] + add r2, r6, #0x0 + bl FUN_021E8128 + ldr r0, [r4, #0x60] + mov r1, #0x1 + bl FUN_021E8130 + add r0, r4, #0x0 + bl FUN_021E8158 + ldr r2, [sp, #0x18] + ldr r0, [r5, #0x78] + ldr r1, [sp, #0xc] + ldr r2, [r2, #0x0] + bl FUN_0200A8E0 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr r0, [r0, #0x0] + ldr r1, [r7, #0x0] + ldr r2, [r2, #0x0] + bl FUN_0200B7B8 + ldr r0, [r4, #0x60] + bl FUN_021E8140 + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + ldr r2, [r7, #0x0] + mov r1, #0x1 + bl FUN_0201BD84 + mov r0, #0x1 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203A830 +FUN_0203A830: ; 0x0203A830 + push {r3-r5, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r4, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadHalfword + add r2, r0, #0x0 + ldr r0, [r4, #0x60] + add r1, r5, #0x0 + bl FUN_021E8128 + ldr r0, [r4, #0x60] + mov r1, #0x1 + bl FUN_021E8130 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203A85C +FUN_0203A85C: ; 0x0203A85C + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r3, #0x60] + bl FUN_021E8130 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203A878 +FUN_0203A878: ; 0x0203A878 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x60] + bl FUN_021E8148 + cmp r0, #0x1 + bne _0203A88E + mov r0, #0x0 + pop {r4, pc} +_0203A88E: + ldr r1, _0203A89C ; =FUN_0203A8A0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203A89C: .word FUN_0203A8A0 + + thumb_func_start FUN_0203A8A0 +FUN_0203A8A0: ; 0x0203A8A0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x60] + bl FUN_021E8148 + cmp r0, #0x1 + bne _0203A8B4 + mov r0, #0x1 + pop {r3, pc} +_0203A8B4: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203A8B8 +FUN_0203A8B8: ; 0x0203A8B8 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x3 + add r0, r4, #0x0 + bl FUN_02039438 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + str r0, [sp, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r0, [r1, #0x0] + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + str r0, [sp, #0xc] + ldr r0, [r5, #0x78] + ldr r1, [sp, #0x0] + ldr r2, [r6, #0x0] + bl FUN_0200A8E0 + ldr r0, [sp, #0x8] + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + ldr r2, [r6, #0x0] + bl FUN_0200B7B8 + ldr r0, [r4, #0x60] + bl FUN_021E8140 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + ldr r1, [r7, #0x0] + add r0, r4, #0x0 + mov r3, #0x1 + bl FUN_02054658 + ldr r1, [sp, #0x4] + strb r0, [r1, #0x0] + ldr r0, [sp, #0xc] + ldr r1, _0203A948 ; =FUN_0203A94C + str r0, [r5, #0x64] + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0203A948: .word FUN_0203A94C + + thumb_func_start FUN_0203A94C +FUN_0203A94C: ; 0x0203A94C + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x3 + add r0, r5, #0x0 + bl FUN_02039438 + ldr r1, [r7, #0x64] + add r6, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0x60] + bl FUN_021E8144 + ldrb r0, [r6, #0x0] + ldr r5, _0203A9E8 ; =0x0000FFFF + bl FUN_020546C8 + cmp r0, #0x1 + bne _0203A986 + mov r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_0203A986: + ldr r0, _0203A9EC ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _0203A994 + mov r5, #0x0 + b _0203A9B0 +_0203A994: + mov r1, #0x80 + tst r1, r0 + beq _0203A99E + mov r5, #0x1 + b _0203A9B0 +_0203A99E: + mov r1, #0x20 + tst r1, r0 + beq _0203A9A8 + mov r5, #0x2 + b _0203A9B0 +_0203A9A8: + mov r1, #0x10 + tst r1, r0 + beq _0203A9B0 + mov r5, #0x3 +_0203A9B0: + ldr r1, _0203A9E8 ; =0x0000FFFF + cmp r5, r1 + beq _0203A9D0 + ldrb r0, [r6, #0x0] + bl FUN_0201BD7C + add r7, #0x80 + ldr r0, [r7, #0x0] + add r1, r5, #0x0 + ldr r0, [r0, #0x38] + bl FUN_02055304 + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_0203A9D0: + mov r1, #0x1 + lsl r1, r1, #0xa + tst r0, r1 + beq _0203A9E4 + ldrb r0, [r6, #0x0] + bl FUN_0201BD7C + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r3-r7, pc} +_0203A9E4: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0203A9E8: .word 0x0000FFFF +_0203A9EC: .word 0x021C48B8 + + thumb_func_start FUN_0203A9F0 +FUN_0203A9F0: ; 0x0203A9F0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203AA08 ; =FUN_0203AA0C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203AA08: .word FUN_0203AA0C + + thumb_func_start FUN_0203AA0C +FUN_0203AA0C: ; 0x0203AA0C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, _0203AA88 ; =0x021C48B8 + ldr r1, _0203AA8C ; =0x0000FFFF + ldr r2, [r0, #0x48] + mov r0, #0x3 + add r3, r2, #0x0 + tst r3, r0 + beq _0203AA36 + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0203AA36: + mov r3, #0x40 + tst r3, r2 + beq _0203AA40 + mov r1, #0x0 + b _0203AA5C +_0203AA40: + mov r3, #0x80 + tst r3, r2 + beq _0203AA4A + mov r1, #0x1 + b _0203AA5C +_0203AA4A: + mov r3, #0x20 + tst r3, r2 + beq _0203AA54 + mov r1, #0x2 + b _0203AA5C +_0203AA54: + mov r3, #0x10 + tst r3, r2 + beq _0203AA5C + add r1, r0, #0x0 +_0203AA5C: + ldr r0, _0203AA8C ; =0x0000FFFF + cmp r1, r0 + beq _0203AA74 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055304 + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0203AA74: + mov r0, #0x1 + lsl r0, r0, #0xa + tst r0, r2 + beq _0203AA82 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r3-r5, pc} +_0203AA82: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203AA88: .word 0x021C48B8 +_0203AA8C: .word 0x0000FFFF + + thumb_func_start FUN_0203AA90 +FUN_0203AA90: ; 0x0203AA90 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02039460 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203AAA0 +FUN_0203AAA0: ; 0x0203AAA0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x2 + add r0, r4, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + ldr r2, _0203AAF4 ; =0x000003D9 + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [r4, #0x8] + ldr r1, _0203AAF8 ; =0x020F34E0 + ldr r2, _0203AAF4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r6, #0x0] + ldr r1, _0203AAFC ; =FUN_0203AB00 + add r0, r5, #0x0 + str r7, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203AAF4: .word 0x000003D9 +_0203AAF8: .word 0x020F34E0 +_0203AAFC: .word FUN_0203AB00 + + thumb_func_start FUN_0203AB00 +FUN_0203AB00: ; 0x0203AB00 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x2 + add r0, r6, #0x0 + bl FUN_02039438 + ldr r1, [r5, #0x64] + add r4, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x4 + bl FUN_020021AC + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + bne _0203AB34 + mov r0, #0x0 + pop {r4-r6, pc} +_0203AB34: + cmp r0, #0x0 + bne _0203AB3C + mov r0, #0x0 + b _0203AB3E +_0203AB3C: + mov r0, #0x1 +_0203AB3E: + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203AB44 +FUN_0203AB44: ; 0x0203AB44 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x12 + bl FUN_02039438 + add r5, r0, #0x0 + ldr r1, _0203AB70 ; =0x000003E2 + add r0, r4, #0x0 + bl FUN_0200D858 + str r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203AB70: .word 0x000003E2 + + thumb_func_start FUN_0203AB74 +FUN_0203AB74: ; 0x0203AB74 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x12 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_0200DBFC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203AB8C +FUN_0203AB8C: ; 0x0203AB8C + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl FUN_020394B8 + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl FUN_021E1BF8 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AC14 +FUN_0203AC14: ; 0x0203AC14 + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl FUN_020394B8 + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x78] + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl FUN_021E1BF8 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AC9C +FUN_0203AC9C: ; 0x0203AC9C + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r3, r1, #0x1 + str r3, [r4, #0x8] + ldrb r1, [r1, #0x0] + add r2, r3, #0x1 + str r2, [r4, #0x8] + ldrb r2, [r3, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021E1C4C + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203ACC4 +FUN_0203ACC4: ; 0x0203ACC4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + bl FUN_021E1C4C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203AD08 +FUN_0203AD08: ; 0x0203AD08 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E1C54 + ldr r1, _0203AD28 ; =FUN_0203AD2C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AD28: .word FUN_0203AD2C + + thumb_func_start FUN_0203AD2C +FUN_0203AD2C: ; 0x0203AD2C + push {r3, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + ldrh r1, [r0, #0x0] + ldr r0, _0203AD50 ; =0x0000EEEE + cmp r1, r0 + beq _0203AD4A + mov r0, #0x1 + pop {r3, pc} +_0203AD4A: + mov r0, #0x0 + pop {r3, pc} + nop +_0203AD50: .word 0x0000EEEE + + thumb_func_start FUN_0203AD54 +FUN_0203AD54: ; 0x0203AD54 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E1C54 + ldr r1, _0203AD74 ; =FUN_0203AD78 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AD74: .word FUN_0203AD78 + + thumb_func_start FUN_0203AD78 +FUN_0203AD78: ; 0x0203AD78 + push {r4-r6, lr} + add r1, r0, #0x0 + add r0, #0x80 + ldr r1, [r1, #0x64] + ldr r5, [r0, #0x0] + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + ldrh r1, [r4, #0x0] + ldr r0, _0203ADC0 ; =0x0000EEEE + cmp r1, r0 + bne _0203ADBC + ldr r0, [r5, #0x78] + bl FUN_02052714 + cmp r0, #0x0 + beq _0203ADB8 + mov r0, #0x8 + strh r0, [r4, #0x0] + ldr r0, [r6, #0x0] + bl FUN_021E1ECC + mov r0, #0x1 + pop {r4-r6, pc} +_0203ADB8: + mov r0, #0x0 + pop {r4-r6, pc} +_0203ADBC: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203ADC0: .word 0x0000EEEE + + thumb_func_start FUN_0203ADC4 +FUN_0203ADC4: ; 0x0203ADC4 + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl FUN_020394B8 + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl FUN_021E1F34 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AE4C +FUN_0203AE4C: ; 0x0203AE4C + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0x0 + add r0, r6, #0x0 + bl FUN_02039438 + str r0, [sp, #0x1c] + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02039438 + str r0, [sp, #0x20] + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r0, [r0, #0x0] + add r2, r1, #0x1 + str r0, [sp, #0x18] + str r2, [r5, #0x8] + ldrb r0, [r1, #0x0] + add r1, r2, #0x1 + str r0, [sp, #0x14] + str r1, [r5, #0x8] + ldrb r7, [r2, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r6, #0x0 + bl FUN_020394B8 + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02039438 + ldr r1, [sp, #0x28] + str r4, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x20] + add r3, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [r5, #0x78] + str r0, [sp, #0x10] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + bl FUN_021E1F34 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r0, [sp, #0x24] + str r0, [r5, #0x64] + mov r0, #0x1 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203AED4 +FUN_0203AED4: ; 0x0203AED4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r3, r0, #0x0 + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_021E1F58 + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203AF34 +FUN_0203AF34: ; 0x0203AF34 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E1F60 + ldr r1, _0203AF54 ; =FUN_0203AD2C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AF54: .word FUN_0203AD2C + + thumb_func_start FUN_0203AF58 +FUN_0203AF58: ; 0x0203AF58 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021E26CC + ldr r1, _0203AF80 ; =FUN_0203AD2C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203AF80: .word FUN_0203AD2C + + thumb_func_start FUN_0203AF84 +FUN_0203AF84: ; 0x0203AF84 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021E2B80 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203AFA4 +FUN_0203AFA4: ; 0x0203AFA4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021E2B9C + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203AFC4 +FUN_0203AFC4: ; 0x0203AFC4 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadWord + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_0203B120 + add r6, r0, #0x0 + bne _0203AFF6 + bl ErrorHandling +_0203AFF6: + ldr r1, [r5, #0x8] + add r0, r6, #0x0 + add r1, r1, r4 + bl FUN_0205AEA4 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_02039438 + ldrb r1, [r0, #0x0] + add r5, #0x80 + mov r2, #0x0 + add r1, r1, #0x1 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_0203B174 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203B024 +FUN_0203B024: ; 0x0203B024 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_0203B120 + str r0, [sp, #0x4] + cmp r0, #0x0 + bne _0203B07A + bl ErrorHandling +_0203B07A: + mov r0, #0x4 + add r1, r0, #0x0 + add r1, #0xfc + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02058B2C + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0x4] + bl FUN_02058B4C + lsl r0, r0, #0x10 + ldr r2, [sp, #0x0] + lsr r0, r0, #0x10 + mov r1, #0x0 + cmp r6, r2 + bhs _0203B0B0 + mov r2, #0xf + strh r2, [r4, #0x0] + ldr r2, [sp, #0x0] + add r1, r1, #0x1 + sub r2, r2, r6 + strh r2, [r4, #0x2] + b _0203B0C0 +_0203B0B0: + cmp r6, r2 + bls _0203B0C0 + mov r2, #0xe + strh r2, [r4, #0x0] + ldr r2, [sp, #0x0] + add r1, r1, #0x1 + sub r2, r6, r2 + strh r2, [r4, #0x2] +_0203B0C0: + cmp r0, r7 + bhs _0203B0D4 + lsl r2, r1, #0x2 + mov r3, #0xc + strh r3, [r4, r2] + sub r3, r7, r0 + add r0, r4, r2 + strh r3, [r0, #0x2] + add r1, r1, #0x1 + b _0203B0E6 +_0203B0D4: + cmp r0, r7 + bls _0203B0E6 + lsl r2, r1, #0x2 + mov r3, #0xd + strh r3, [r4, r2] + sub r3, r0, r7 + add r0, r4, r2 + strh r3, [r0, #0x2] + add r1, r1, #0x1 +_0203B0E6: + lsl r2, r1, #0x2 + mov r0, #0xfe + strh r0, [r4, r2] + mov r1, #0x0 + add r0, r4, r2 + strh r1, [r0, #0x2] + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + bl FUN_0205AEA4 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_02039438 + ldrb r1, [r0, #0x0] + add r5, #0x80 + add r2, r4, #0x0 + add r1, r1, #0x1 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_0203B174 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203B120 +FUN_0203B120: ; 0x0203B120 + push {r3, lr} + cmp r1, #0xf2 + bne _0203B130 + ldr r0, [r0, #0x34] + mov r1, #0x30 + bl FUN_020580B4 + pop {r3, pc} +_0203B130: + cmp r1, #0xf1 + bne _0203B13E + mov r1, #0xb + bl FUN_02039438 + ldr r0, [r0, #0x0] + pop {r3, pc} +_0203B13E: + ldr r0, [r0, #0x34] + bl FUN_02058060 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203B148 +FUN_0203B148: ; 0x0203B148 + push {r3, lr} + ldr r1, _0203B154 ; =FUN_0203B158 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203B154: .word FUN_0203B158 + + thumb_func_start FUN_0203B158 +FUN_0203B158: ; 0x0203B158 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B16E + mov r0, #0x1 + pop {r3, pc} +_0203B16E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203B174 +FUN_0203B174: ; 0x0203B174 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x4 + mov r1, #0x10 + add r7, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + bne _0203B18E + bl ErrorHandling + pop {r3-r7, pc} +_0203B18E: + str r5, [r4, #0xc] + str r6, [r4, #0x4] + ldr r0, _0203B1A4 ; =FUN_0203B1A8 + add r1, r4, #0x0 + mov r2, #0x0 + str r7, [r4, #0x8] + bl FUN_0200CA44 + str r0, [r4, #0x0] + pop {r3-r7, pc} + nop +_0203B1A4: .word FUN_0203B1A8 + + thumb_func_start FUN_0203B1A8 +FUN_0203B1A8: ; 0x0203B1A8 + push {r3-r5, lr} + add r5, r1, #0x0 + ldr r0, [r5, #0xc] + mov r1, #0x4 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r5, #0x4] + bl FUN_0205AEF0 + cmp r0, #0x1 + bne _0203B1EC + ldr r0, [r5, #0x4] + bl FUN_0205AEFC + ldr r0, [r5, #0x0] + bl FUN_0200CAB4 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + beq _0203B1D6 + bl FUN_02016A18 +_0203B1D6: + add r0, r5, #0x0 + bl FUN_02016A18 + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203B1E8 + bl ErrorHandling + pop {r3-r5, pc} +_0203B1E8: + sub r0, r0, #0x1 + strb r0, [r4, #0x0] +_0203B1EC: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B1F0 +FUN_0203B1F0: ; 0x0203B1F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xa + add r0, r4, #0x0 + bl FUN_02039438 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B20E + ldr r0, [r4, #0x34] + bl FUN_02058780 + b _0203B214 +_0203B20E: + add r0, r5, #0x0 + bl FUN_0203B2E0 +_0203B214: + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203B218 +FUN_0203B218: ; 0x0203B218 + push {r4-r6, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xa + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_020553A0 + ldr r1, _0203B2DC ; =0x021C5A0C + add r6, r0, #0x0 + ldrb r2, [r1, #0x0] + mov r1, #0x1 + tst r1, r2 + beq _0203B252 + bl FUN_0205AE28 + cmp r0, #0x1 + bne _0203B252 + add r0, r6, #0x0 + bl FUN_02058908 + ldr r1, _0203B2DC ; =0x021C5A0C + mov r0, #0xfe + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B252: + ldr r0, _0203B2DC ; =0x021C5A0C + ldrb r1, [r0, #0x0] + mov r0, #0x4 + tst r0, r1 + beq _0203B276 + ldr r0, [r5, #0x0] + bl FUN_02058854 + cmp r0, #0x0 + bne _0203B276 + ldr r0, [r5, #0x0] + bl FUN_02058908 + ldr r1, _0203B2DC ; =0x021C5A0C + mov r0, #0xfb + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B276: + ldr r0, _0203B2DC ; =0x021C5A0C + ldrb r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0203B2A2 + ldr r0, [r4, #0x34] + mov r1, #0x30 + bl FUN_020580B4 + add r4, r0, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + bne _0203B2A2 + add r0, r4, #0x0 + bl FUN_02058908 + ldr r1, _0203B2DC ; =0x021C5A0C + mov r0, #0xfd + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B2A2: + ldr r0, _0203B2DC ; =0x021C5A0C + ldrb r1, [r0, #0x0] + mov r0, #0x8 + tst r0, r1 + beq _0203B2CC + ldr r0, [r5, #0x0] + bl FUN_0205E7C4 + add r4, r0, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + bne _0203B2CC + add r0, r4, #0x0 + bl FUN_02058908 + ldr r1, _0203B2DC ; =0x021C5A0C + mov r0, #0xf7 + ldrb r2, [r1, #0x0] + and r0, r2 + strb r0, [r1, #0x0] +_0203B2CC: + ldr r0, _0203B2DC ; =0x021C5A0C + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B2D8 + mov r0, #0x1 + pop {r4-r6, pc} +_0203B2D8: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0203B2DC: .word 0x021C5A0C + + thumb_func_start FUN_0203B2E0 +FUN_0203B2E0: ; 0x0203B2E0 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xa + add r0, r4, #0x0 + bl FUN_02039438 + add r5, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_020553A0 + str r0, [sp, #0x4] + ldr r0, [r4, #0x34] + mov r1, #0x30 + bl FUN_020580B4 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0205E7C4 + add r6, r0, #0x0 + ldr r0, [r4, #0x34] + ldr r1, _0203B3A8 ; =0x021C5A0C + mov r2, #0x0 + strb r2, [r1, #0x0] + bl FUN_02058780 + ldr r0, [sp, #0x4] + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0203B334 + ldr r1, _0203B3A8 ; =0x021C5A0C + mov r0, #0x1 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + ldr r0, [sp, #0x4] + bl FUN_02058914 +_0203B334: + ldr r0, [r5, #0x0] + bl FUN_02058854 + cmp r0, #0x0 + beq _0203B34E + ldr r1, _0203B3A8 ; =0x021C5A0C + mov r0, #0x4 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + ldr r0, [r5, #0x0] + bl FUN_02058914 +_0203B34E: + cmp r7, #0x0 + beq _0203B37A + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _0203B37A + add r0, r7, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + beq _0203B37A + ldr r1, _0203B3A8 ; =0x021C5A0C + mov r0, #0x2 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02058914 +_0203B37A: + cmp r6, #0x0 + beq _0203B398 + add r0, r6, #0x0 + bl FUN_02058854 + cmp r0, #0x0 + beq _0203B398 + ldr r1, _0203B3A8 ; =0x021C5A0C + mov r0, #0x8 + ldrb r2, [r1, #0x0] + orr r0, r2 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_02058914 +_0203B398: + ldr r0, [sp, #0x0] + ldr r1, _0203B3AC ; =FUN_0203B218 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203B3A8: .word 0x021C5A0C +_0203B3AC: .word FUN_0203B218 + + thumb_func_start FUN_0203B3B0 +FUN_0203B3B0: ; 0x0203B3B0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203B3C0 +FUN_0203B3C0: ; 0x0203B3C0 + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + ldr r0, [r4, #0x34] + bl FUN_02058060 + bl FUN_02058908 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203B3DC +FUN_0203B3DC: ; 0x0203B3DC + push {r4, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + ldr r0, [r4, #0x34] + bl FUN_02058060 + bl FUN_02058914 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203B3F8 +FUN_0203B3F8: ; 0x0203B3F8 + push {r3-r6, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02034B64 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02034B6C + str r0, [sp, #0x0] + ldr r3, [r5, #0x1c] + ldr r0, [r5, #0x34] + ldr r3, [r3, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020575D4 + cmp r0, #0x0 + bne _0203B43A + bl ErrorHandling +_0203B43A: + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_0203B440 +FUN_0203B440: ; 0x0203B440 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + bl FUN_02057688 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203B468 +FUN_0203B468: ; 0x0203B468 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xb + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xc + str r1, [sp, #0x0] + mov r3, #0x0 + str r3, [sp, #0x4] + ldr r1, [r0, #0x1c] + add r2, r7, #0x0 + ldr r1, [r1, #0x0] + str r1, [sp, #0x8] + ldr r0, [r0, #0x34] + add r1, r6, #0x0 + bl FUN_0205753C + str r0, [r4, #0x0] + bl FUN_02059D1C + ldr r0, [r4, #0x0] + mov r1, #0x1 + bl FUN_0205889C + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_020588B8 + ldr r0, [r4, #0x0] + bl FUN_02058B7C + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + add r4, r0, #0x0 + ldr r1, [r1, #0x24] + bl FUN_021EF5E0 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x20] + bl FUN_0201EC68 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203B500 +FUN_0203B500: ; 0x0203B500 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xb + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02057654 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xff + ldr r0, [r0, #0x34] + bl FUN_02058060 + bl FUN_02058B7C + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + add r4, r0, #0x0 + ldr r1, [r1, #0x24] + bl FUN_021EF5E0 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x20] + bl FUN_0201EC68 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203B544 +FUN_0203B544: ; 0x0203B544 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + bl FUN_02059E74 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa + bl FUN_02039438 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203B568 + mov r0, #0x0 + pop {r3-r5, pc} +_0203B568: + add r1, r4, #0x0 + bl FUN_021F1EC0 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B574 +FUN_0203B574: ; 0x0203B574 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x38] + bl FUN_0205532C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203B5B8 +FUN_0203B5B8: ; 0x0203B5B8 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + strh r0, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_02058B4C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203B618 +FUN_0203B618: ; 0x0203B618 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B640 +FUN_0203B640: ; 0x0203B640 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + cmp r7, #0x0 + beq _0203B696 + lsl r0, r7, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0203B6A4 +_0203B696: + lsl r0, r7, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0203B6A4: + blx _ffix + str r0, [sp, #0x0] + cmp r6, #0x0 + beq _0203B6C0 + lsl r0, r6, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0203B6CE +_0203B6C0: + lsl r0, r6, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0203B6CE: + blx _ffix + str r0, [sp, #0x4] + cmp r4, #0x0 + beq _0203B6EA + lsl r0, r4, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0203B6F8 +_0203B6EA: + lsl r0, r4, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0203B6F8: + blx _ffix + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r1, sp, #0x0 + bl FUN_02058BB4 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, sp, #0x0 + ldr r1, [r1, #0x20] + bl FUN_0201EF70 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203B724 +FUN_0203B724: ; 0x0203B724 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + bl FUN_02058994 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203B758 +FUN_0203B758: ; 0x0203B758 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058E90 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B790 +FUN_0203B790: ; 0x0203B790 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + cmp r0, #0x0 + beq _0203B7D2 + bl FUN_02058480 + strh r0, [r4, #0x0] +_0203B7D2: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B7D8 +FUN_0203B7D8: ; 0x0203B7D8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x30 + ldr r0, [r0, #0x34] + bl FUN_020580B4 + mov r1, #0xfe + bl FUN_02058EB0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203B7F0 +FUN_0203B7F0: ; 0x0203B7F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029C80 + bl FUN_02029E0C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B81C +FUN_0203B81C: ; 0x0203B81C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029C80 + add r1, r6, #0x0 + bl FUN_02029E2C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203B85C +FUN_0203B85C: ; 0x0203B85C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029C80 + lsl r2, r4, #0x10 + add r1, r6, #0x0 + asr r2, r2, #0x10 + bl FUN_02029D44 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203B8A0 +FUN_0203B8A0: ; 0x0203B8A0 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + bl FUN_020690CC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203B8E4 +FUN_0203B8E4: ; 0x0203B8E4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + bl FUN_020379F8 + str r0, [r4, #0x0] + ldr r1, _0203B910 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203B910: .word FUN_0203BC04 + + thumb_func_start FUN_0203B914 +FUN_0203B914: ; 0x0203B914 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + bl FUN_02037A1C + str r0, [r4, #0x0] + ldr r1, _0203B940 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203B940: .word FUN_0203BC04 + + thumb_func_start FUN_0203B944 +FUN_0203B944: ; 0x0203B944 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x20 + ldr r0, [r0, #0x10] + bl FUN_02037B44 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B968 +FUN_0203B968: ; 0x0203B968 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203B994 + bl ErrorHandling +_0203B994: + ldr r0, [r4, #0x0] + bl FUN_02037A40 + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x7 + bne _0203B9A6 + mov r0, #0xff + strh r0, [r5, #0x0] +_0203B9A6: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203B9B4 +FUN_0203B9B4: ; 0x0203B9B4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r1, r5, #0x0 + str r6, [sp, #0x4] + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r2, [sp, #0x8] + mov r0, #0x20 + add r3, r7, #0x0 + bl FUN_02037BB0 + str r0, [r4, #0x0] + ldr r1, _0203BA38 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0203BA38: .word FUN_0203BC04 + + thumb_func_start FUN_0203BA3C +FUN_0203BA3C: ; 0x0203BA3C + push {r4-r6, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203BA7C + bl ErrorHandling +_0203BA7C: + ldr r0, [r4, #0x0] + bl FUN_02037A40 + strh r0, [r6, #0x0] + ldrh r0, [r6, #0x0] + cmp r0, #0x7 + bne _0203BA8E + mov r0, #0xff + strh r0, [r6, #0x0] +_0203BA8E: + ldr r0, [r4, #0x0] + bl FUN_02037A70 + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x1 + bne _0203BAA0 + mov r0, #0x1 + b _0203BAA2 +_0203BAA0: + mov r0, #0x0 +_0203BAA2: + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0203BAB0 +FUN_0203BAB0: ; 0x0203BAB0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r5, #0x0 + add r1, #0x80 + add r2, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + bl FUN_02037C00 + str r0, [r4, #0x0] + ldr r1, _0203BAF0 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203BAF0: .word FUN_0203BC04 + + thumb_func_start FUN_0203BAF4 +FUN_0203BAF4: ; 0x0203BAF4 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203BB20 + bl ErrorHandling +_0203BB20: + ldr r0, [r4, #0x0] + bl FUN_02037A78 + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0203BB34 +FUN_0203BB34: ; 0x0203BB34 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + add r2, r7, #0x0 + bl FUN_021E1858 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203BB80 +FUN_0203BB80: ; 0x0203BB80 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203BB84 +FUN_0203BB84: ; 0x0203BB84 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203BB88 +FUN_0203BB88: ; 0x0203BB88 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0203BB8C +FUN_0203BB8C: ; 0x0203BB8C + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203BB90 +FUN_0203BB90: ; 0x0203BB90 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x13 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _0203BBAE + mov r0, #0x0 + pop {r3-r5, pc} +_0203BBAE: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BBBC +FUN_0203BBBC: ; 0x0203BBBC + push {r4-r6, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x13 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + ldr r6, [r4, #0x0] + bl FUN_0204647C + cmp r0, #0x0 + beq _0203BBDC + mov r0, #0x0 + pop {r4-r6, pc} +_0203BBDC: + ldr r0, [r6, #0x8] + cmp r0, #0x1 + bne _0203BBF4 + mov r0, #0xb + bl FUN_02029048 + add r5, #0x98 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x1 + bl FUN_02028AD4 +_0203BBF4: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203BC04 +FUN_0203BC04: ; 0x0203BC04 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0204647C + cmp r0, #0x0 + bne _0203BC16 + mov r0, #0x1 + pop {r3, pc} +_0203BC16: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BC1C +FUN_0203BC1C: ; 0x0203BC1C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_0204AF84 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BC2C +FUN_0203BC2C: ; 0x0203BC2C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_0204AF3C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BC3C +FUN_0203BC3C: ; 0x0203BC3C + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_02027E24 + cmp r5, #0x0 + bne _0203BC5A + add r1, r4, #0x0 + bl FUN_02027098 + cmp r0, #0x0 + bne _0203BC68 + mov r0, #0x0 + pop {r3-r5, pc} +_0203BC5A: + add r1, r4, #0x0 + bl FUN_020270B4 + cmp r0, #0x0 + bne _0203BC68 + mov r0, #0x0 + pop {r3-r5, pc} +_0203BC68: + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BC6C +FUN_0203BC6C: ; 0x0203BC6C + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0xc] + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02027E24 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0203BC3C + cmp r0, #0x0 + bne _0203BC90 + mov r0, #0x0 + pop {r3-r7, pc} +_0203BC90: + ldr r0, [sp, #0x0] + mov r1, #0xc + bl FUN_02016998 + mov r1, #0x0 + 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] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + str r7, [r0, #0x0] + str r4, [r0, #0x8] + str r6, [r0, #0x4] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203BCBC +FUN_0203BCBC: ; 0x0203BCBC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_021F02C4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BCCC +FUN_0203BCCC: ; 0x0203BCCC + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_0206F3B8 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BCD8 +FUN_0203BCD8: ; 0x0203BCD8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + ldr r1, [r4, #0x0] + ldr r1, [r1, #0x4] + strh r1, [r0, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BD08 +FUN_0203BD08: ; 0x0203BD08 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + bl FUN_02031190 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203BD28 +FUN_0203BD28: ; 0x0203BD28 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r2, _0203BDB4 ; =0x000003D9 + ldr r0, [r0, #0x8] + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0xb + str r0, [sp, #0x0] + ldr r0, _0203BDB4 ; =0x000003D9 + mov r1, #0x3 + str r0, [sp, #0x4] + lsl r0, r7, #0x18 + str r4, [sp, #0x8] + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x4 + str r0, [sp, #0x10] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r2, #0xa + ldr r0, [r0, #0x8] + mov r3, #0x5 + bl FUN_0200DC4C + add r5, #0x80 + str r0, [r6, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_0203ED2C + mov r0, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_0203BDB4: .word 0x000003D9 + + thumb_func_start FUN_0203BDB8 +FUN_0203BDB8: ; 0x0203BDB8 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r2, _0203BE4C ; =0x000003D9 + ldr r0, [r0, #0x8] + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0xb + str r0, [sp, #0x0] + ldr r0, _0203BE4C ; =0x000003D9 + mov r1, #0x3 + str r0, [sp, #0x4] + str r4, [sp, #0x8] + mov r0, #0x4 + str r0, [sp, #0xc] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r2, #0xa + ldr r0, [r0, #0x8] + mov r3, #0x5 + bl FUN_0200DCA4 + str r0, [r6, #0x0] + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x0 + add r5, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r5, #0x0] + lsr r1, r1, #0x10 + bl FUN_0203ED2C + mov r0, #0x0 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0203BE4C: .word 0x000003D9 + + thumb_func_start FUN_0203BE50 +FUN_0203BE50: ; 0x0203BE50 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + mov r1, #0x1 + strb r1, [r0, #0x0] + add r0, r1, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BE68 +FUN_0203BE68: ; 0x0203BE68 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + mov r1, #0x2 + strb r1, [r0, #0x0] + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203BE80 +FUN_0203BE80: ; 0x0203BE80 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203BE98 ; =FUN_0203BE9C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203BE98: .word FUN_0203BE9C + + thumb_func_start FUN_0203BE9C +FUN_0203BE9C: ; 0x0203BE9C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + ldr r0, [r4, #0x0] + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _0203BEC8 + mov r0, #0x1 + pop {r3-r5, pc} +_0203BEC8: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203BECC +FUN_0203BECC: ; 0x0203BECC + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_020394B8 + add r2, r0, #0x0 + ldr r0, [r5, #0x74] + ldr r1, [r4, #0x0] + bl FUN_021E1374 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203BF00 +FUN_0203BF00: ; 0x0203BF00 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0203BF1C + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_021E1994 +_0203BF1C: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203BF20 +FUN_0203BF20: ; 0x0203BF20 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_0208A338 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203BF2C +FUN_0203BF2C: ; 0x0203BF2C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + ldr r2, [r5, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [r2, #0x10] + ldr r2, [r2, #0xc] + add r3, r4, #0x0 + bl FUN_020380CC + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0203BF84 +FUN_0203BF84: ; 0x0203BF84 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r1, r5, #0x0 + add r1, #0x80 + add r6, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0xb + mov r2, #0x0 + add r3, r7, #0x0 + bl FUN_0203BC6C + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203BFCC + mov r0, #0x1 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0203BFCC: + mov r0, #0x0 + strh r0, [r6, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02038130 + ldr r1, _0203BFE8 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203BFE8: .word FUN_0203BB90 + + thumb_func_start FUN_0203BFEC +FUN_0203BFEC: ; 0x0203BFEC + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r1, r5, #0x0 + add r1, #0x80 + add r6, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0xb + mov r2, #0x1 + add r3, r7, #0x0 + bl FUN_0203BC6C + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203C034 + mov r0, #0x1 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0203C034: + mov r0, #0x0 + strh r0, [r6, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02038130 + ldr r1, _0203C050 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203C050: .word FUN_0203BB90 + + thumb_func_start FUN_0203C054 +FUN_0203C054: ; 0x0203C054 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_0203BC3C + cmp r0, #0x1 + bne _0203C088 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0203C088: + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203C090 +FUN_0203C090: ; 0x0203C090 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_0203BC3C + cmp r0, #0x1 + bne _0203C0C4 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0203C0C4: + mov r0, #0x0 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203C0CC +FUN_0203C0CC: ; 0x0203C0CC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + mov r1, #0x0 + bl FUN_02027008 + add r1, r4, #0x0 + bl FUN_02027478 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C0FC +FUN_0203C0FC: ; 0x0203C0FC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02038804 + ldr r1, _0203C114 ; =FUN_0203BC04 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203C114: .word FUN_0203BC04 + + thumb_func_start FUN_0203C118 +FUN_0203C118: ; 0x0203C118 + push {r3, lr} + add r1, r0, #0x0 + ldr r0, [r1, #0x74] + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0xc] + bl FUN_02085F48 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C12C +FUN_0203C12C: ; 0x0203C12C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + mov r1, #0x5 + add r4, r0, #0x0 + mov r0, #0xb + lsl r1, r1, #0x6 + bl FUN_02016998 + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + mov r2, #0x2 + bl FUN_0205F7A0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02037E90 + ldr r1, _0203C170 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203C170: .word FUN_0203BB90 + + thumb_func_start FUN_0203C174 +FUN_0203C174: ; 0x0203C174 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r2, #0xb + bl FUN_02088960 + str r0, [r4, #0x0] + ldr r1, _0203C1A8 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203C1A8: .word FUN_0203BB90 + + thumb_func_start FUN_0203C1AC +FUN_0203C1AC: ; 0x0203C1AC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + mov r1, #0x4 + bl FUN_0206EE64 + cmp r0, #0x0 + bne _0203C1E0 + mov r0, #0x1 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} +_0203C1E0: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02028048 + bl FUN_020281B8 + cmp r0, #0x64 + blo _0203C1FA + mov r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} +_0203C1FA: + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0203C200 +FUN_0203C200: ; 0x0203C200 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r6, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x8 + str r0, [r6, #0x0] + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [sp, #0x0] + strh r7, [r4, #0x4] + strh r0, [r4, #0x6] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r6, #0x0] + bl FUN_02037FE4 + ldr r1, _0203C274 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203C274: .word FUN_0203BB90 + + thumb_func_start FUN_0203C278 +FUN_0203C278: ; 0x0203C278 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0xc + bl FUN_02016998 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0xc] + str r1, [r0, #0x0] + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + str r1, [r0, #0x4] + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02037D60 + ldr r1, _0203C2C0 ; =FUN_0203BBBC + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203C2C0: .word FUN_0203BBBC + + thumb_func_start FUN_0203C2C4 +FUN_0203C2C4: ; 0x0203C2C4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020383F8 + ldr r1, _0203C2DC ; =FUN_0203BC04 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203C2DC: .word FUN_0203BC04 + + thumb_func_start FUN_0203C2E0 +FUN_0203C2E0: ; 0x0203C2E0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02065344 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203C2F0 +FUN_0203C2F0: ; 0x0203C2F0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_020383D8 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C300 +FUN_0203C300: ; 0x0203C300 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0203842C + str r0, [r4, #0x0] + ldr r1, _0203C328 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203C328: .word FUN_0203BB90 + + thumb_func_start FUN_0203C32C +FUN_0203C32C: ; 0x0203C32C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02048694 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C33C +FUN_0203C33C: ; 0x0203C33C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02038824 + str r0, [r4, #0x0] + ldr r1, _0203C364 ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203C364: .word FUN_0203BB90 + + thumb_func_start FUN_0203C368 +FUN_0203C368: ; 0x0203C368 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0203384C + cmp r0, #0x0 + beq _0203C3BC + mov r0, #0x1 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_020386E0 + ldr r1, _0203C3C4 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + b _0203C3C0 +_0203C3BC: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0203C3C0: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203C3C4: .word FUN_0203BC04 + + thumb_func_start FUN_0203C3C8 +FUN_0203C3C8: ; 0x0203C3C8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_0206F3D8 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203C3E8 +FUN_0203C3E8: ; 0x0203C3E8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_02016998 + str r0, [r4, #0x0] + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + str r0, [r6, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_020386A4 + ldr r1, _0203C42C ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + nop +_0203C42C: .word FUN_0203BC04 + + thumb_func_start FUN_0203C430 +FUN_0203C430: ; 0x0203C430 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + ldr r1, [r4, #0x0] + ldr r1, [r1, #0x0] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205F378 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C460 +FUN_0203C460: ; 0x0203C460 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + beq _0203C474 + mov r0, #0x1 + b _0203C476 +_0203C474: + mov r0, #0x0 +_0203C476: + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _0203C492 + bl ErrorHandling +_0203C492: + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_0203789C + str r0, [r6, #0x0] + ldr r1, _0203C4AC ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203C4AC: .word FUN_0203BC04 + + thumb_func_start FUN_0203C4B0 +FUN_0203C4B0: ; 0x0203C4B0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203C4DC + bl ErrorHandling +_0203C4DC: + ldr r0, [r4, #0x0] + bl FUN_020378FC + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0203C4F0 +FUN_0203C4F0: ; 0x0203C4F0 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x74] + add r2, r1, #0x0 + mov r3, #0x7 + bl FUN_020385CC + mov r0, #0x1 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0203C520 +FUN_0203C520: ; 0x0203C520 + push {r4-r7, lr} + sub sp, #0x34 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x74 + add r2, sp, #0xc + add r7, r0, #0x0 + bl FUN_020671BC + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + str r6, [sp, #0x0] + add r0, sp, #0xc + str r0, [sp, #0x4] + str r4, [sp, #0x8] + ldr r0, [r5, #0x74] + mov r1, #0x1 + mov r3, #0xa + bl FUN_020385CC + mov r0, #0x1 + add sp, #0x34 + pop {r4-r7, pc} + + thumb_func_start FUN_0203C58C +FUN_0203C58C: ; 0x0203C58C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + mov r2, #0x0 + str r2, [sp, #0x0] + str r2, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x74] + mov r1, #0x6 + mov r3, #0xa + bl FUN_020385CC + mov r0, #0x1 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0203C5BC +FUN_0203C5BC: ; 0x0203C5BC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r2, r0, #0x0 + ldr r0, _0203C610 ; =0x0000FFFF + add r5, #0x80 + strh r0, [r2, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x10] + mov r3, #0x0 + bl FUN_02037E18 + mov r0, #0x1 + pop {r3-r5, pc} + nop +_0203C610: .word 0x0000FFFF + + thumb_func_start FUN_0203C614 +FUN_0203C614: ; 0x0203C614 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r3, r0, #0x0 + ldr r0, _0203C67C ; =0x0000FFFF + add r5, #0x80 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x10] + add r2, r4, #0x0 + bl FUN_02037E18 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203C67C: .word 0x0000FFFF + + thumb_func_start FUN_0203C680 +FUN_0203C680: ; 0x0203C680 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + bl FUN_0200B518 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203C6C4 +FUN_0203C6C4: ; 0x0203C6C4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r4, [sp, #0x0] + add r3, r0, #0x0 + str r6, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r7, #0x0 + add r2, r7, #0x0 + bl FUN_0200E1D0 + mov r0, #0x0 + bl FUN_0200E388 + mov r0, #0x1 + bl FUN_0200E388 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0203C70C +FUN_0203C70C: ; 0x0203C70C + push {r3, lr} + ldr r1, _0203C718 ; =FUN_0203C71C + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0203C718: .word FUN_0203C71C + + thumb_func_start FUN_0203C71C +FUN_0203C71C: ; 0x0203C71C + push {r3, lr} + bl FUN_0200E308 + cmp r0, #0x1 + bne _0203C72A + mov r0, #0x1 + pop {r3, pc} +_0203C72A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203C730 +FUN_0203C730: ; 0x0203C730 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r4, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x0 + ldr r0, [r5, #0x74] + add r1, r6, #0x0 + mvn r2, r2 + add r3, r7, #0x0 + bl FUN_02049240 + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203C788 +FUN_0203C788: ; 0x0203C788 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r4, [sp, #0x0] + mov r2, #0x0 + add r5, #0x80 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x10] + mvn r2, r2 + add r3, r7, #0x0 + bl FUN_02049F98 + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203C7E4 +FUN_0203C7E4: ; 0x0203C7E4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02049FFC + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203C7F4 +FUN_0203C7F4: ; 0x0203C7F4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DC8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + ldr r1, [r5, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C820 +FUN_0203C820: ; 0x0203C820 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + ldr r1, [r4, #0x0] + ldr r1, [r1, #0x1c] + ldr r1, [r1, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203C844 +FUN_0203C844: ; 0x0203C844 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x74] + add r2, r4, #0x0 + bl FUN_021E6990 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C874 +FUN_0203C874: ; 0x0203C874 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD40 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x74] + add r2, r4, #0x0 + bl FUN_021E6410 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203C8B4 +FUN_0203C8B4: ; 0x0203C8B4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x74] + add r2, r4, #0x0 + bl FUN_021E6BF4 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203C8E4 +FUN_0203C8E4: ; 0x0203C8E4 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + add r5, #0x80 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + sub r2, r2, #0x2 + add r3, r6, #0x0 + bl FUN_02049274 + mov r0, #0x1 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_0203C930 +FUN_0203C930: ; 0x0203C930 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r5, r0, #0x0 + mov r1, #0x0 + bl FUN_02034DF4 + add r0, r5, #0x0 + bl FUN_02034DEC + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xc] + bl FUN_021DC174 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203C960 +FUN_0203C960: ; 0x0203C960 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r5, r0, #0x0 + mov r1, #0x0 + bl FUN_02034DF4 + add r0, r5, #0x0 + bl FUN_02034DEC + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xc] + bl FUN_021DC174 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203C990 +FUN_0203C990: ; 0x0203C990 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553E8 + add r3, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_0224666C + str r0, [r4, #0x0] + ldr r1, _0203C9F4 ; =FUN_0203C9F8 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + nop +_0203C9F4: .word FUN_0203C9F8 + + thumb_func_start FUN_0203C9F8 +FUN_0203C9F8: ; 0x0203C9F8 + push {r4, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_022466A0 + cmp r0, #0x1 + bne _0203CA1A + ldr r0, [r4, #0x0] + bl FUN_022466AC + mov r0, #0x1 + pop {r4, pc} +_0203CA1A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203CA20 +FUN_0203CA20: ; 0x0203CA20 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_021E7030 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203CA2C +FUN_0203CA2C: ; 0x0203CA2C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553C4 + cmp r0, #0x1 + bne _0203CA54 + mov r0, #0x1 + b _0203CA56 +_0203CA54: + mov r0, #0x0 +_0203CA56: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203CA5C +FUN_0203CA5C: ; 0x0203CA5C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x8] + add r0, r1, #0x1 + str r0, [r4, #0x8] + ldrb r0, [r1, #0x0] + cmp r0, #0x1 + bne _0203CAA4 + add r0, r4, #0x0 + add r0, #0x80 + mov r1, #0x12 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x6 + bl FUN_0204AB20 + add r0, r4, #0x0 + add r0, #0x80 + mov r1, #0x12 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x6 + mov r2, #0x1 + bl FUN_0204ABDC + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0x38] + bl FUN_021E5FD8 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x38] + bl FUN_021E5FE0 + b _0203CAE4 +_0203CAA4: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x38] + bl FUN_021E5FD8 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_021E5FE0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_0204AB20 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x1c] + ldr r1, [r1, #0x0] + bl FUN_0204AB58 + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x1 + bl FUN_0204ABDC +_0203CAE4: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203CAE8 +FUN_0203CAE8: ; 0x0203CAE8 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0x38] + bl FUN_021E5FD8 + add r4, #0x80 + mov r1, #0x12 + ldr r0, [r4, #0x0] + lsl r1, r1, #0x6 + bl FUN_0204AB20 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203CB08 +FUN_0203CB08: ; 0x0203CB08 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055720 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203CB20 +FUN_0203CB20: ; 0x0203CB20 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553C4 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CB48 +FUN_0203CB48: ; 0x0203CB48 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553D4 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203CB60 +FUN_0203CB60: ; 0x0203CB60 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_021E5FE0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203CB70 +FUN_0203CB70: ; 0x0203CB70 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0202A990 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02245910 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203CBBC +FUN_0203CBBC: ; 0x0203CBBC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F388 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CBE8 +FUN_0203CBE8: ; 0x0203CBE8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x8 + add r0, r4, #0x0 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r2, [r6, #0x0] + mov r3, #0xb + bl FUN_0206AD4C + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + ldr r1, [r6, #0x0] + add r0, r4, #0x0 + mov r3, #0x1 + bl FUN_02054658 + strb r0, [r7, #0x0] + ldr r1, _0203CC84 ; =FUN_0203A2F0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203CC84: .word FUN_0203A2F0 + + thumb_func_start FUN_0203CC88 +FUN_0203CC88: ; 0x0203CC88 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + ldr r2, [sp, #0x0] + ldr r3, [sp, #0x4] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_02240790 + ldr r1, _0203CCF4 ; =FUN_0203CCF8 + add r0, r5, #0x0 + str r6, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203CCF4: .word FUN_0203CCF8 + + thumb_func_start FUN_0203CCF8 +FUN_0203CCF8: ; 0x0203CCF8 + push {r4, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + bl FUN_022407DC + cmp r0, #0x0 + bne _0203CD18 + mov r0, #0x0 + pop {r4, pc} +_0203CD18: + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203CD20 +FUN_0203CD20: ; 0x0203CD20 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + ldr r2, [sp, #0x0] + ldr r3, [sp, #0x4] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_022407F8 + ldr r1, _0203CD8C ; =FUN_0203CD90 + add r0, r5, #0x0 + str r6, [r5, #0x64] + bl SetupNativeScript + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0203CD8C: .word FUN_0203CD90 + + thumb_func_start FUN_0203CD90 +FUN_0203CD90: ; 0x0203CD90 + push {r4, lr} + add r1, r0, #0x0 + ldr r1, [r1, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + bl FUN_02240844 + cmp r0, #0x0 + bne _0203CDB0 + mov r0, #0x0 + pop {r4, pc} +_0203CDB0: + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203CDB8 +FUN_0203CDB8: ; 0x0203CDB8 + push {r3, lr} + bl ScriptReadHalfword + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203CDC4 +FUN_0203CDC4: ; 0x0203CDC4 + push {r3, lr} + bl ScriptReadHalfword + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203CDD0 +FUN_0203CDD0: ; 0x0203CDD0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r6, r0, #0x0 + add r5, #0x80 + ldr r4, [r6, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x10] + add r1, #0x2c + mov r2, #0x5 + bl FUN_02047174 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r6, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203CE00 +FUN_0203CE00: ; 0x0203CE00 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02080C38 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203CE0C +FUN_0203CE0C: ; 0x0203CE0C + push {r3-r4, lr} + sub sp, #0x14 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, #0x80 + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r1, sp, #0x0 + bl FUN_02034DD4 + mov r0, #0x0 + add sp, #0x14 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0203CE8C +FUN_0203CE8C: ; 0x0203CE8C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + ldr r0, [r0, #0x0] + bl FUN_021E2608 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203CEBC +FUN_0203CEBC: ; 0x0203CEBC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + str r0, [sp, #0x4] + bl FUN_02039438 + add r7, r0, #0x0 + ldr r0, [r5, #0x8] + add r1, r0, #0x1 + str r1, [r5, #0x8] + ldrb r6, [r0, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r3, r0, #0x0 + ldr r0, [r7, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r2, r4, #0x0 + bl FUN_021E2464 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203CF04 +FUN_0203CF04: ; 0x0203CF04 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020244A4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CF34 +FUN_0203CF34: ; 0x0203CF34 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202445C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CF64 +FUN_0203CF64: ; 0x0203CF64 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02024404 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CF94 +FUN_0203CF94: ; 0x0203CF94 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020243C8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203CFC4 +FUN_0203CFC4: ; 0x0203CFC4 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203CFC8 +FUN_0203CFC8: ; 0x0203CFC8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + ldr r1, [r5, #0x8] + str r0, [sp, #0x0] + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + cmp r6, #0x0 + bne _0203D02E + add r0, r7, #0x0 + bl FUN_02024550 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0x2 + mov r2, #0xa + bl FUN_0205F2E4 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_02054CC8 + b _0203D048 +_0203D02E: + add r0, r7, #0x0 + bl FUN_02024518 + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_020239CC + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_02054D1C +_0203D048: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D050 +FUN_0203D050: ; 0x0203D050 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r0, [r5, #0x74] + add r1, r6, #0x0 + lsr r2, r2, #0x18 + add r3, r4, #0x0 + bl FUN_02046E18 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D0A4 +FUN_0203D0A4: ; 0x0203D0A4 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + lsl r2, r2, #0x18 + ldr r0, [r5, #0x74] + add r1, r6, #0x0 + lsr r2, r2, #0x18 + add r3, r4, #0x0 + bl FUN_02046E18 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D0F8 +FUN_0203D0F8: ; 0x0203D0F8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + lsl r2, r2, #0x18 + ldr r0, [r5, #0x74] + add r1, r4, #0x0 + lsr r2, r2, #0x18 + bl FUN_02046FA0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D134 +FUN_0203D134: ; 0x0203D134 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_020470AC + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D140 +FUN_0203D140: ; 0x0203D140 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_021F4DC8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D150 +FUN_0203D150: ; 0x0203D150 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_021F4D80 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D178 +FUN_0203D178: ; 0x0203D178 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_02046DB4 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203D194 +FUN_0203D194: ; 0x0203D194 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_021F4E7C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D1A4 +FUN_0203D1A4: ; 0x0203D1A4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020386B4 + ldr r1, _0203D1BC ; =FUN_0203BC04 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203D1BC: .word FUN_0203BC04 + + thumb_func_start FUN_0203D1C0 +FUN_0203D1C0: ; 0x0203D1C0 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202280C + cmp r0, #0x0 + beq _0203D1EC + mov r0, #0x0 + strh r0, [r4, #0x0] + b _0203D210 +_0203D1EC: + add r0, r5, #0x0 + bl FUN_02022804 + cmp r0, #0x0 + bne _0203D1FC + mov r0, #0x1 + strh r0, [r4, #0x0] + b _0203D210 +_0203D1FC: + add r0, r5, #0x0 + bl FUN_0202282C + cmp r0, #0x0 + beq _0203D20C + mov r0, #0x2 + strh r0, [r4, #0x0] + b _0203D210 +_0203D20C: + mov r0, #0x3 + strh r0, [r4, #0x0] +_0203D210: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203D214 +FUN_0203D214: ; 0x0203D214 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_021E85FC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D23C +FUN_0203D23C: ; 0x0203D23C + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_021E3424 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D248 +FUN_0203D248: ; 0x0203D248 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0204C1A8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204BEC8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D278 +FUN_0203D278: ; 0x0203D278 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0204C1A8 + add r1, r5, #0x0 + bl FUN_0204BED8 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D2A4 +FUN_0203D2A4: ; 0x0203D2A4 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r1, r6, #0x0 + bl FUN_0204BED0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203D2E4 +FUN_0203D2E4: ; 0x0203D2E4 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [r4, #0x64] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02031588 + ldr r1, _0203D310 ; =FUN_0203D314 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D310: .word FUN_0203D314 + + thumb_func_start FUN_0203D314 +FUN_0203D314: ; 0x0203D314 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030F20 + cmp r0, #0x2 + bge _0203D324 + mov r0, #0x1 + pop {r4, pc} +_0203D324: + ldr r0, [r4, #0x64] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020315D8 + pop {r4, pc} + + thumb_func_start FUN_0203D330 +FUN_0203D330: ; 0x0203D330 + push {r3, lr} + bl FUN_0203168C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D33C +FUN_0203D33C: ; 0x0203D33C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0205296C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D36C +FUN_0203D36C: ; 0x0203D36C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r1, r0, #0x0 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052C0C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D3A4 +FUN_0203D3A4: ; 0x0203D3A4 + push {r4, lr} + bl ScriptReadHalfword + add r4, r0, #0x0 + cmp r4, #0x5 + beq _0203D3BC + cmp r4, #0x7 + beq _0203D3BC + cmp r4, #0x9 + beq _0203D3BC + cmp r4, #0x6 + bne _0203D3C2 +_0203D3BC: + bl FUN_02031C54 + b _0203D3CA +_0203D3C2: + cmp r4, #0xb + bne _0203D3CA + bl FUN_02031C64 +_0203D3CA: + bl FUN_02031190 + cmp r0, #0x0 + bne _0203D3D8 + add r0, r4, #0x0 + bl FUN_02052B74 +_0203D3D8: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0203D3DC +FUN_0203D3DC: ; 0x0203D3DC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r5, #0x80 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + bl FUN_020377AC + bl FUN_02013B5C + add r5, r0, #0x0 + cmp r4, #0x0 + bne _0203D432 + ldr r0, [r7, #0x0] + bl FUN_02058448 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + b _0203D434 +_0203D432: + mov r2, #0x0 +_0203D434: + str r5, [sp, #0x0] + ldr r0, [r6, #0x0] + ldr r3, [sp, #0x4] + add r1, r4, #0x0 + bl FUN_02052D08 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D448 +FUN_0203D448: ; 0x0203D448 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0208881C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D458 +FUN_0203D458: ; 0x0203D458 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + bl FUN_02052F74 + bl FUN_02031B50 + ldr r1, _0203D478 ; =FUN_0203D47C + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D478: .word FUN_0203D47C + + thumb_func_start FUN_0203D47C +FUN_0203D47C: ; 0x0203D47C + push {r3, lr} + bl FUN_02030F20 + cmp r0, #0x2 + bge _0203D48A + mov r0, #0x1 + pop {r3, pc} +_0203D48A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D490 +FUN_0203D490: ; 0x0203D490 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r7, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02058448 + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x0] + ldr r0, [r0, #0x78] + ldr r3, [r7, #0x0] + bl FUN_02052A10 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D4E8 +FUN_0203D4E8: ; 0x0203D4E8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x78] + bl FUN_020527A8 + strh r0, [r4, #0x0] + ldrh r0, [r4, #0x0] + cmp r0, #0x0 + beq _0203D522 + add r5, #0x80 + ldr r0, [r5, #0x0] + mov r1, #0x13 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02016A18 +_0203D522: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D528 +FUN_0203D528: ; 0x0203D528 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xa + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02058448 + add r1, r0, #0x0 + ldr r0, [r5, #0x78] + bl FUN_020524CC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203D560 +FUN_0203D560: ; 0x0203D560 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xa + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02058448 + add r1, r0, #0x0 + ldr r0, [r5, #0x78] + add r2, r7, #0x0 + bl FUN_02052544 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D5B0 +FUN_0203D5B0: ; 0x0203D5B0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203D5C8 ; =FUN_0203D5CC + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D5C8: .word FUN_0203D5CC + + thumb_func_start FUN_0203D5CC +FUN_0203D5CC: ; 0x0203D5CC + push {r4-r6, lr} + add r6, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + ldr r0, [r5, #0x78] + bl FUN_02052604 + ldr r1, [r6, #0x64] + add r4, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_020394B8 + cmp r4, #0x0 + bne _0203D5F0 + mov r0, #0x0 + pop {r4-r6, pc} +_0203D5F0: + strh r4, [r0, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D5F8 +FUN_0203D5F8: ; 0x0203D5F8 + push {r3, lr} + add r0, #0x80 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x34] + ldr r1, [r1, #0x7c] + bl FUN_020534DC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D60C +FUN_0203D60C: ; 0x0203D60C + push {r3, lr} + mov r0, #0x4 + bl FUN_02052B74 + bl FUN_02031C2C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203D61C +FUN_0203D61C: ; 0x0203D61C + push {r3, lr} + bl FUN_02031C64 + bl FUN_02031B50 + mov r0, #0x0 + bl FUN_02052B74 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203D630 +FUN_0203D630: ; 0x0203D630 + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x78] + add r1, r6, #0x0 + bl FUN_0205265C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D66C +FUN_0203D66C: ; 0x0203D66C + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203D684 ; =FUN_0203D688 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D684: .word FUN_0203D688 + + thumb_func_start FUN_0203D688 +FUN_0203D688: ; 0x0203D688 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052608 + cmp r0, #0x1 + blo _0203D6BC + add r5, #0x80 + strh r0, [r4, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052E10 + mov r0, #0x1 + pop {r3-r5, pc} +_0203D6BC: + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D6C4 +FUN_0203D6C4: ; 0x0203D6C4 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + str r0, [r4, #0x64] + ldr r1, _0203D6DC ; =FUN_0203D6E0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203D6DC: .word FUN_0203D6E0 + + thumb_func_start FUN_0203D6E0 +FUN_0203D6E0: ; 0x0203D6E0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x78] + bl FUN_02052648 + ldr r1, _0203D724 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x2 + tst r1, r2 + beq _0203D716 + add r5, #0x80 + ldr r0, [r5, #0x0] + mov r1, #0x8 + ldr r0, [r0, #0x78] + bl FUN_02052718 +_0203D716: + cmp r0, #0x0 + beq _0203D720 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0203D720: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0203D724: .word 0x021C48B8 + + thumb_func_start FUN_0203D728 +FUN_0203D728: ; 0x0203D728 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02049EA4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D738 +FUN_0203D738: ; 0x0203D738 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020239BC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020239CC + add r1, r0, #0x0 + ldr r2, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_0205363C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D774 +FUN_0203D774: ; 0x0203D774 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020239BC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020239CC + add r1, r0, #0x0 + add r0, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02053678 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_020239CC + ldrh r1, [r4, #0x0] + mov r2, #0x2 + bl FUN_020536D0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D7DC +FUN_0203D7DC: ; 0x0203D7DC + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020239BC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020239CC + add r1, r0, #0x0 + add r0, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02053678 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203D834 +FUN_0203D834: ; 0x0203D834 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + bl FUN_02023A2C + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D868 +FUN_0203D868: ; 0x0203D868 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02048498 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203D874 +FUN_0203D874: ; 0x0203D874 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r1, r4, #0x0 + bl FUN_02034E04 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203D8A0 +FUN_0203D8A0: ; 0x0203D8A0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020239CC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203D8D0 +FUN_0203D8D0: ; 0x0203D8D0 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02046528 + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + bl FUN_02085140 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D8E8 +FUN_0203D8E8: ; 0x0203D8E8 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203D8EC +FUN_0203D8EC: ; 0x0203D8EC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02050024 + ldr r1, _0203D900 ; =FUN_0203D904 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203D900: .word FUN_0203D904 + + thumb_func_start FUN_0203D904 +FUN_0203D904: ; 0x0203D904 + push {r3, lr} + bl FUN_02031810 + cmp r0, #0x1 + beq _0203D91A + bl FUN_0202EDF8 + cmp r0, #0x1 + beq _0203D91A + mov r0, #0x1 + pop {r3, pc} +_0203D91A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D920 +FUN_0203D920: ; 0x0203D920 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02050048 + ldr r1, _0203D934 ; =FUN_0203D904 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203D934: .word FUN_0203D904 + + thumb_func_start FUN_0203D938 +FUN_0203D938: ; 0x0203D938 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0204FF5C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D948 +FUN_0203D948: ; 0x0203D948 + push {r3, lr} + bl ScriptReadHalfword + bl FUN_0204F6DC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203D958 +FUN_0203D958: ; 0x0203D958 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + add r1, r6, #0x0 + bl FUN_0206EE64 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203D998 +FUN_0203D998: ; 0x0203D998 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02034B74 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203D9E8 +FUN_0203D9E8: ; 0x0203D9E8 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + add r5, r0, #0x0 + add r1, r7, #0x0 + str r4, [sp, #0x0] + bl FUN_02058E28 + add r0, r5, #0x0 + bl FUN_02059D1C + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203DA78 +FUN_0203DA78: ; 0x0203DA78 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02034BDC + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DAB0 +FUN_0203DAB0: ; 0x0203DAB0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02034BAC + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DAE8 +FUN_0203DAE8: ; 0x0203DAE8 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02034C0C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203DB38 +FUN_0203DB38: ; 0x0203DB38 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02034C34 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203DB88 +FUN_0203DB88: ; 0x0203DB88 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + bne _0203DBC6 + bl ErrorHandling +_0203DBC6: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_021F1EC0 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203DBD4 +FUN_0203DBD4: ; 0x0203DBD4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xc + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + ldr r1, [r5, #0x0] + cmp r1, #0x0 + beq _0203DBFC + strh r0, [r1, #0x0] +_0203DBFC: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DC00 +FUN_0203DC00: ; 0x0203DC00 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + lsl r1, r4, #0x5 + ldr r3, [r5, #0x8] + add r2, r0, #0x0 + add r0, r3, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + lsl r4, r6, #0x5 + ldrb r3, [r3, #0x0] + ldr r0, [r5, #0x0] + add r1, r7, r1 + add r2, r2, r4 + bl FUN_021DAE40 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203DC58 +FUN_0203DC58: ; 0x0203DC58 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021DAF78 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DC70 +FUN_0203DC70: ; 0x0203DC70 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021DAF98 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DC88 +FUN_0203DC88: ; 0x0203DC88 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021DAED4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCA0 +FUN_0203DCA0: ; 0x0203DCA0 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_021DAF28 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCB8 +FUN_0203DCB8: ; 0x0203DCB8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064CA8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCC8 +FUN_0203DCC8: ; 0x0203DCC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02241230 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCD8 +FUN_0203DCD8: ; 0x0203DCD8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064CC8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCE8 +FUN_0203DCE8: ; 0x0203DCE8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02241914 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DCF8 +FUN_0203DCF8: ; 0x0203DCF8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064D10 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD08 +FUN_0203DD08: ; 0x0203DD08 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064D4C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD18 +FUN_0203DD18: ; 0x0203DD18 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_02064D88 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD34 +FUN_0203DD34: ; 0x0203DD34 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_02242A38 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD50 +FUN_0203DD50: ; 0x0203DD50 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020388B4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DD60 +FUN_0203DD60: ; 0x0203DD60 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r0, [r5, #0x64] + ldr r0, [r6, #0x0] + bl FUN_02058448 + add r1, r5, #0x0 + add r1, #0x80 + add r2, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_0224CA54 + str r0, [r4, #0x0] + ldr r1, _0203DDBC ; =FUN_0203DDC0 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0203DDBC: .word FUN_0203DDC0 + + thumb_func_start FUN_0203DDC0 +FUN_0203DDC0: ; 0x0203DDC0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + ldr r1, [r5, #0x64] + add r0, #0x80 + lsl r1, r1, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0224CA2C + strh r0, [r5, #0x0] + ldrh r1, [r5, #0x0] + ldr r0, _0203DDFC ; =0x0000FFFE + cmp r1, r0 + beq _0203DDF6 + mov r0, #0x1 + pop {r3-r5, pc} +_0203DDF6: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203DDFC: .word 0x0000FFFE + + thumb_func_start FUN_0203DE00 +FUN_0203DE00: ; 0x0203DE00 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + bl FUN_0224CA58 + strb r0, [r4, #0x0] + ldr r1, _0203DE34 ; =FUN_0203DE38 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203DE34: .word FUN_0203DE38 + + thumb_func_start FUN_0203DE38 +FUN_0203DE38: ; 0x0203DE38 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02039438 + ldrb r0, [r0, #0x0] + bl FUN_020546C8 + pop {r3, pc} + + thumb_func_start FUN_0203DE4C +FUN_0203DE4C: ; 0x0203DE4C + push {r3, lr} + bl FUN_0224CA94 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DE58 +FUN_0203DE58: ; 0x0203DE58 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0224CAA0 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203DE80 +FUN_0203DE80: ; 0x0203DE80 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r5, [r2, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0224CAB4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203DEA8 +FUN_0203DEA8: ; 0x0203DEA8 + push {r3, lr} + sub sp, #0x8 + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + mov r1, #0x1 + ldr r0, [r0, #0x74] + add r2, r1, #0x0 + bl FUN_02242BE0 + mov r0, #0x1 + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203DEC4 +FUN_0203DEC4: ; 0x0203DEC4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + add r4, r0, #0x0 + bne _0203DEEC + bl ErrorHandling +_0203DEEC: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205889C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DEF8 +FUN_0203DEF8: ; 0x0203DEF8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [r5, #0x34] + bl FUN_02058060 + add r4, r0, #0x0 + bne _0203DF20 + bl ErrorHandling +_0203DF20: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0205889C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DF2C +FUN_0203DF2C: ; 0x0203DF2C + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02066818 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203DF38 +FUN_0203DF38: ; 0x0203DF38 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02025838 + mov r1, #0x0 + bl FUN_0202589C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DF64 +FUN_0203DF64: ; 0x0203DF64 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_02063650 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203DF84 +FUN_0203DF84: ; 0x0203DF84 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204B2A4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DFA8 +FUN_0203DFA8: ; 0x0203DFA8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + bl FUN_0201B9EC + add r1, r5, #0x0 + blx _s32_div_f + strh r1, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203DFE0 +FUN_0203DFE0: ; 0x0203DFE0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + bl FUN_0201B9EC + add r1, r5, #0x0 + blx _s32_div_f + strh r1, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E018 +FUN_0203E018: ; 0x0203E018 + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_021F3A18 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E054 +FUN_0203E054: ; 0x0203E054 + push {r3-r5, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_021F3AB4 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E078 +FUN_0203E078: ; 0x0203E078 + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + add r3, r0, #0x0 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_021F3B7C + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203E0CC +FUN_0203E0CC: ; 0x0203E0CC + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + add r3, r0, #0x0 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_021F3B4C + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203E120 +FUN_0203E120: ; 0x0203E120 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0x82 + lsl r1, r1, #0x8 + bl FUN_0205F3F8 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E138 +FUN_0203E138: ; 0x0203E138 + push {r4, lr} + add r0, #0x80 + ldr r4, [r0, #0x0] + ldr r0, [r4, #0xc] + bl FUN_020462AC + mov r1, #0x1 + bl FUN_0205F2D4 + ldr r0, [r4, #0xc] + bl FUN_020289A4 + mov r1, #0x1 + bl FUN_020289B0 + add r1, r4, #0x0 + add r1, #0x98 + str r0, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_02048C58 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203E168 +FUN_0203E168: ; 0x0203E168 + push {r3-r7, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r7, #0x0 + sub r0, #0x10 + cmp r0, #0xa + bhi _0203E23A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0203E1EA: ; jump table (using 16-bit offset) + .short _0203E200 - _0203E1EA - 2; case 0 + .short _0203E20C - _0203E1EA - 2; case 1 + .short _0203E218 - _0203E1EA - 2; case 2 + .short _0203E226 - _0203E1EA - 2; case 3 + .short _0203E23A - _0203E1EA - 2; case 4 + .short _0203E226 - _0203E1EA - 2; case 5 + .short _0203E226 - _0203E1EA - 2; case 6 + .short _0203E226 - _0203E1EA - 2; case 7 + .short _0203E226 - _0203E1EA - 2; case 8 + .short _0203E226 - _0203E1EA - 2; case 9 + .short _0203E226 - _0203E1EA - 2; case 10 +_0203E200: + mov r0, #0x4 + mov r6, #0x1 + bl FUN_02029120 + str r0, [r5, #0x0] + b _0203E23E +_0203E20C: + mov r0, #0x4 + mov r6, #0x1 + bl FUN_0202912C + str r0, [r5, #0x0] + b _0203E23E +_0203E218: + ldr r0, [sp, #0x0] + mov r1, #0x4 + mov r6, #0x1 + bl FUN_02029138 + str r0, [r5, #0x0] + b _0203E23E +_0203E226: + sub r7, #0x13 + lsl r0, r7, #0x18 + ldr r1, [sp, #0x0] + lsr r0, r0, #0x18 + mov r2, #0x4 + mov r6, #0x1 + bl FUN_0202914C + str r0, [r5, #0x0] + b _0203E23E +_0203E23A: + mov r0, #0x1 + pop {r3-r7, pc} +_0203E23E: + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r1, [r5, #0x0] + add r0, #0x98 + ldr r0, [r0, #0x0] + add r2, r6, #0x0 + bl FUN_02028AD4 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203E254 +FUN_0203E254: ; 0x0203E254 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0203E258 +FUN_0203E258: ; 0x0203E258 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020271A4 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E29C +FUN_0203E29C: ; 0x0203E29C + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020270D8 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203E2F8 +FUN_0203E2F8: ; 0x0203E2F8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r7, #0x0 + bl FUN_02027114 + cmp r6, r0 + bhi _0203E352 + mov r0, #0x1 + b _0203E354 +_0203E352: + mov r0, #0x0 +_0203E354: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203E35C +FUN_0203E35C: ; 0x0203E35C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + bl FUN_02027264 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E38C +FUN_0203E38C: ; 0x0203E38C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r6, #0x0 + bl FUN_02027100 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E3D0 +FUN_0203E3D0: ; 0x0203E3D0 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02024504 + cmp r0, #0x1 + bne _0203E404 + mov r0, #0x1 + strh r0, [r4, #0x0] +_0203E404: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E408 +FUN_0203E408: ; 0x0203E408 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_020244EC + cmp r0, #0x1 + bne _0203E43C + mov r0, #0x1 + strh r0, [r4, #0x0] +_0203E43C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E440 +FUN_0203E440: ; 0x0203E440 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x20 + mov r2, #0x0 + bl FUN_02038AF4 + str r0, [r4, #0x0] + ldr r1, _0203E46C ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203E46C: .word FUN_0203BB90 + + thumb_func_start FUN_0203E470 +FUN_0203E470: ; 0x0203E470 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x20 + mov r2, #0x1 + bl FUN_02038AF4 + str r0, [r4, #0x0] + ldr r1, _0203E49C ; =FUN_0203BB90 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0203E49C: .word FUN_0203BB90 + + thumb_func_start FUN_0203E4A0 +FUN_0203E4A0: ; 0x0203E4A0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0224CBB0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E4B0 +FUN_0203E4B0: ; 0x0203E4B0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0224CC24 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E4D8 +FUN_0203E4D8: ; 0x0203E4D8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203E4F0 +FUN_0203E4F0: ; 0x0203E4F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r4, #0x0 + bl FUN_0202A0E8 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E510 +FUN_0203E510: ; 0x0203E510 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r7, #0x0 + bl FUN_0202A150 + ldr r1, _0203E564 ; =0xFFFF0000 + and r1, r0 + lsr r1, r1, #0x10 + strh r1, [r4, #0x0] + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0203E564: .word 0xFFFF0000 + + thumb_func_start FUN_0203E568 +FUN_0203E568: ; 0x0203E568 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + ldr r1, [r5, #0x8] + add r2, r1, #0x1 + str r2, [r5, #0x8] + lsl r2, r4, #0x10 + add r4, r2, #0x0 + orr r4, r0 + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + beq _0203E59C + cmp r0, #0x1 + beq _0203E5B0 + cmp r0, #0x2 + beq _0203E5C4 + b _0203E5D6 +_0203E59C: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202A11C + b _0203E5D6 +_0203E5B0: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202A07C + b _0203E5D6 +_0203E5C4: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202A0A8 +_0203E5D6: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E5DC +FUN_0203E5DC: ; 0x0203E5DC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022504 + ldr r1, [r5, #0x8] + str r0, [sp, #0x4] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02034E24 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02034E28 + add r7, r0, #0x0 + cmp r4, #0x0 + beq _0203E62C + cmp r4, #0x1 + beq _0203E642 + b _0203E66E +_0203E62C: + ldr r0, [sp, #0x0] + bl FUN_0205F1F4 + ldr r0, [sp, #0x4] + bl FUN_02060FD0 + mov r0, #0x1e + strh r0, [r6, #0x0] + mov r0, #0x0 + strh r0, [r7, #0x0] + b _0203E66E +_0203E642: + ldr r0, [sp, #0x0] + bl FUN_0205F204 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02061574 + mov r0, #0x4 + bl FUN_0202912C + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x1 + add r0, #0x98 + ldr r0, [r0, #0x0] + bl FUN_02028AD4 + mov r0, #0x0 + strh r0, [r6, #0x0] + strh r0, [r7, #0x0] +_0203E66E: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0203E674 +FUN_0203E674: ; 0x0203E674 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0206015C + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203E684 +FUN_0203E684: ; 0x0203E684 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_022456E8 + strh r0, [r6, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E6B4 +FUN_0203E6B4: ; 0x0203E6B4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02064E20 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203E6C4 +FUN_0203E6C4: ; 0x0203E6C4 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + mov r1, #0x0 + add r6, r0, #0x0 + mov r0, #0x41 + add r2, r1, #0x0 + bl FUN_0200433C + add r5, #0x80 + ldrh r1, [r4, #0x0] + ldr r0, [r5, #0x0] + add r2, r6, #0x0 + bl FUN_0224525C + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E6FC +FUN_0203E6FC: ; 0x0203E6FC + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_02245340 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203E72C +FUN_0203E72C: ; 0x0203E72C + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055560 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203E744 +FUN_0203E744: ; 0x0203E744 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F688 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E774 +FUN_0203E774: ; 0x0203E774 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r7, #0x0 + bl FUN_020244A4 + add r4, r0, #0x0 + bl FUN_0201B9EC + add r1, r4, #0x0 + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0x0] + mov r1, #0x19 + strh r1, [r0, #0x0] + mov r4, #0x1 + mov r5, #0x0 +_0203E7B6: + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_020245F0 + cmp r0, #0x1 + bne _0203E7DC + add r0, r4, #0x0 + bl FUN_02069B40 + cmp r0, #0x0 + beq _0203E7DC + cmp r5, r6 + bne _0203E7D6 + ldr r0, [sp, #0x0] + strh r4, [r0, #0x0] + b _0203E7E8 +_0203E7D6: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_0203E7DC: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _0203E7EC ; =0x000001ED + cmp r4, r0 + bls _0203E7B6 +_0203E7E8: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0203E7EC: .word 0x000001ED + + thumb_func_start FUN_0203E7F0 +FUN_0203E7F0: ; 0x0203E7F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r1, r4, #0x0 + bl FUN_0205F5A4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E81C +FUN_0203E81C: ; 0x0203E81C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F594 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E848 +FUN_0203E848: ; 0x0203E848 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202AA00 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E858 +FUN_0203E858: ; 0x0203E858 + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02060490 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E870 +FUN_0203E870: ; 0x0203E870 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r4, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r1, [r1, #0x0] + mov r0, #0xb + bl FUN_0224884C + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203E894 +FUN_0203E894: ; 0x0203E894 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_022488EC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E8C4 +FUN_0203E8C4: ; 0x0203E8C4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_022488F4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E8F4 +FUN_0203E8F4: ; 0x0203E8F4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r5, #0x74] + ldr r1, [r4, #0x0] + mov r3, #0xb + bl FUN_02060790 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203E928 +FUN_0203E928: ; 0x0203E928 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_022488CC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203E940 +FUN_0203E940: ; 0x0203E940 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024D4C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E954 +FUN_0203E954: ; 0x0203E954 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024CE0 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203E968 +FUN_0203E968: ; 0x0203E968 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + mov r0, #0x0 + strh r0, [r6, #0x0] + cmp r4, #0x1 + bne _0203E9AE + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024C84 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + bl FUN_02023A90 + b _0203E9C8 +_0203E9AE: + cmp r4, #0x2 + bne _0203E9C4 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024CA4 + strh r0, [r6, #0x0] + b _0203E9C8 +_0203E9C4: + bl ErrorHandling +_0203E9C8: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203E9CC +FUN_0203E9CC: ; 0x0203E9CC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r5, r0, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_020671BC + add r1, r4, r6 + add r2, r7, r1 + ldr r1, [sp, #0x4] + add r2, r1, r2 + ldr r1, [sp, #0x8] + add r1, r1, r2 + add r1, r0, r1 + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0203EA68 +FUN_0203EA68: ; 0x0203EA68 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_020126B4 + ldr r0, [sp, #0xc] + strh r0, [r4, #0x0] + mov r0, #0x0 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EA90 +FUN_0203EA90: ; 0x0203EA90 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + bl FUN_022411F4 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203EAB0 +FUN_0203EAB0: ; 0x0203EAB0 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r5, #0x0 + bl FUN_021F61E8 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_021F61DC + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203EB20 +FUN_0203EB20: ; 0x0203EB20 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r4, #0x80 + lsl r1, r1, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + bl FUN_0224C27C + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EB48 +FUN_0203EB48: ; 0x0203EB48 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + add r5, #0x80 + lsl r1, r4, #0x18 + lsl r2, r2, #0x18 + ldr r0, [r5, #0x0] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_0224C520 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EB88 +FUN_0203EB88: ; 0x0203EB88 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r1, [r5, #0x8] + add r2, r1, #0x1 + str r2, [r5, #0x8] + ldrb r6, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + str r7, [sp, #0x0] + add r5, #0x80 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + ldr r3, [sp, #0x8] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_020607D4 + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0203EBC8 +FUN_0203EBC8: ; 0x0203EBC8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r1, #0xa + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EBE4 +FUN_0203EBE4: ; 0x0203EBE4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + add r0, r6, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_02022510 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + ldr r2, [sp, #0x8] + ldr r3, [sp, #0xc] + add r1, r7, #0x0 + bl FUN_0224D14C + add r5, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r5, r0 + beq _0203EC7E + cmp r5, #0x7 + ble _0203EC88 +_0203EC7E: + mov r0, #0xff + strh r0, [r4, #0x0] + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0203EC88: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0206B644 + cmp r0, #0x0 + beq _0203EC98 + mov r0, #0x0 + b _0203ECA2 +_0203EC98: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0206B620 + add r0, r5, #0x1 +_0203ECA2: + strh r0, [r4, #0x0] + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203ECAC +FUN_0203ECAC: ; 0x0203ECAC + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02026CB4 + bl FUN_020269CC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203ECD8 +FUN_0203ECD8: ; 0x0203ECD8 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_0224C678 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203ECF4 +FUN_0203ECF4: ; 0x0203ECF4 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_0224C6E8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203ED10 +FUN_0203ED10: ; 0x0203ED10 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0x80 + ldr r2, [r0, #0x8] + ldr r3, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_0224C6F4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203ED2C +FUN_0203ED2C: ; 0x0203ED2C + push {r4-r6, lr} + sub sp, #0x10 + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024DA0 + add r6, r0, #0x0 + mov r0, #0x20 + bl FUN_020669C0 + add r4, r0, #0x0 + bl FUN_02066978 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x32 + mov r3, #0x20 + bl FUN_02066ACC + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202498C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203ED70 +FUN_0203ED70: ; 0x0203ED70 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022510 + bl FUN_0206B3E4 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + mov r0, #0x87 + lsl r0, r0, #0x2 + sub r0, r0, r1 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203EDA4 +FUN_0203EDA4: ; 0x0203EDA4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x16 + bl FUN_02039438 + add r4, r0, #0x0 + mov r0, #0x0 + add r5, #0x80 + str r0, [r4, #0x0] + ldr r0, [r5, #0x0] + bl FUN_021E7184 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EDC8 +FUN_0203EDC8: ; 0x0203EDC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x16 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E71E8 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EDE0 +FUN_0203EDE0: ; 0x0203EDE0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r4, #0x80 + lsl r1, r1, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + bl FUN_0224E554 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203EE08 +FUN_0203EE08: ; 0x0203EE08 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0206486C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE18 +FUN_0203EE18: ; 0x0203EE18 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020649D4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE28 +FUN_0203EE28: ; 0x0203EE28 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020649B0 + cmp r0, #0x0 + beq _0203EE4E + mov r0, #0x1 + b _0203EE50 +_0203EE4E: + mov r0, #0x0 +_0203EE50: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EE58 +FUN_0203EE58: ; 0x0203EE58 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0224E764 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE68 +FUN_0203EE68: ; 0x0203EE68 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0224E7C4 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203EE78 +FUN_0203EE78: ; 0x0203EE78 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r1, r4, #0x0 + bl FUN_0202A170 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203EE98 +FUN_0203EE98: ; 0x0203EE98 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206BAE4 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0203EED8 +FUN_0203EED8: ; 0x0203EED8 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, sp, #0x4 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + str r0, [sp, #0x0] + bl FUN_0206B9AC + add r4, #0x80 + add r6, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r7, r0, #0x0 + mov r5, #0x0 + cmp r6, #0x0 + ble _0203EF4E +_0203EF18: + ldr r0, [sp, #0x0] + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + ldr r1, _0203EF54 ; =0x00000182 + cmp r0, r1 + bne _0203EF48 + add r0, r4, #0x0 + mov r1, #0x70 + add r2, sp, #0x4 + bl FUN_02067830 + add r0, r4, #0x0 + bl FUN_02066ED8 + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_02024AF0 +_0203EF48: + add r5, r5, #0x1 + cmp r5, r6 + blt _0203EF18 +_0203EF4E: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0203EF54: .word 0x00000182 + + thumb_func_start FUN_0203EF58 +FUN_0203EF58: ; 0x0203EF58 + push {r3-r7, lr} + sub sp, #0x30 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + str r0, [sp, #0xc] + bl FUN_0206B9AC + add r2, sp, #0x18 + mov r4, #0x0 + ldr r3, _0203F008 ; =0x020F34FC + str r0, [sp, #0x8] + add r7, r2, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [sp, #0x8] + str r4, [sp, #0x4] + cmp r0, #0x0 + ble _0203EFFC + mov r5, #0x1 + str r7, [sp, #0x14] +_0203EFA2: + ldr r0, [sp, #0xc] + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r6, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x10] + add r0, r6, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r3, r0, #0x0 + mov r0, #0x67 + ldr r1, [sp, #0x10] + lsl r0, r0, #0x2 + cmp r1, r0 + bne _0203EFF2 + mov r2, #0x0 + add r1, r2, #0x0 + str r3, [r7, #0x0] + cmp r4, #0x0 + ble _0203EFE8 + ldr r6, [sp, #0x14] +_0203EFD8: + ldr r0, [r6, #0x0] + cmp r3, r0 + bne _0203EFE0 + add r2, r5, #0x0 +_0203EFE0: + add r1, r1, #0x1 + add r6, r6, #0x4 + cmp r1, r4 + blt _0203EFD8 +_0203EFE8: + cmp r2, #0x0 + bne _0203EFF2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0203EFF2: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r7, r7, #0x4 + cmp r4, r0 + blt _0203EFA2 +_0203EFFC: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x1 + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_0203F008: .word 0x020F34FC + + thumb_func_start FUN_0203F00C +FUN_0203F00C: ; 0x0203F00C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F1C4 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203F020 +FUN_0203F020: ; 0x0203F020 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F1D4 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203F034 +FUN_0203F034: ; 0x0203F034 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl FUN_020389CC + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0203F058 +FUN_0203F058: ; 0x0203F058 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204B2D8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F07C +FUN_0203F07C: ; 0x0203F07C + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r7, r0, #0x0 + bne _0203F0FA + bl ErrorHandling +_0203F0FA: + str r6, [sp, #0x0] + str r4, [sp, #0x4] + ldr r0, [r5, #0x74] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + add r1, r7, #0x0 + bl FUN_02054F50 + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0203F110 +FUN_0203F110: ; 0x0203F110 + push {r3-r7, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r5, #0x0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + bne _0203F164 + bl ErrorHandling +_0203F164: + ldr r0, [r4, #0x74] + add r1, r5, #0x0 + add r2, r7, #0x0 + add r3, r6, #0x0 + bl FUN_0205502C + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_0203F174 +FUN_0203F174: ; 0x0203F174 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02054E30 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F19C +FUN_0203F19C: ; 0x0203F19C + push {r4-r7, lr} + sub sp, #0x24 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + mov r6, #0x0 + add r7, r0, #0x0 + add r4, r6, #0x0 + add r5, sp, #0x4 +_0203F1CA: + add r1, r4, #0x0 + add r0, r7, #0x0 + add r1, #0x22 + mov r2, #0x1 + bl FUN_020270D8 + cmp r0, #0x1 + bne _0203F1E0 + mov r0, #0x1 + strh r0, [r5, #0x0] + add r6, r6, #0x1 +_0203F1E0: + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, #0x10 + blt _0203F1CA + cmp r6, #0x0 + bne _0203F1F8 + ldr r0, [sp, #0x0] + ldr r1, _0203F230 ; =0x0000FFFF + add sp, #0x24 + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4-r7, pc} +_0203F1F8: + bl FUN_0201B9EC + add r1, r6, #0x0 + blx _s32_div_f + mov r4, #0x0 + add r2, sp, #0x4 +_0203F206: + ldrh r0, [r2, #0x0] + cmp r0, #0x1 + bne _0203F212 + cmp r1, #0x0 + beq _0203F21A + sub r1, r1, #0x1 +_0203F212: + add r4, r4, #0x1 + add r2, r2, #0x2 + cmp r4, #0x10 + blt _0203F206 +_0203F21A: + cmp r4, #0x10 + blt _0203F222 + bl ErrorHandling +_0203F222: + ldr r0, [sp, #0x0] + add r4, #0x22 + strh r4, [r0, #0x0] + mov r0, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0203F230: .word 0x0000FFFF + + thumb_func_start FUN_0203F234 +FUN_0203F234: ; 0x0203F234 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + ldr r1, _0203F250 ; =0x021C4918 + ldrb r1, [r1, #0x6] + strh r1, [r0, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0203F250: .word 0x021C4918 + + thumb_func_start FUN_0203F254 +FUN_0203F254: ; 0x0203F254 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0x0 + bl FUN_0205F698 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203F26C +FUN_0203F26C: ; 0x0203F26C + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + ldr r0, [r5, #0x0] + ldrb r4, [r1, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + cmp r4, #0x0 + beq _0203F2A0 + add r1, r6, #0x0 + bl FUN_0205F4E4 + b _0203F2A6 +_0203F2A0: + add r1, r6, #0x0 + bl FUN_0205F50C +_0203F2A6: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203F2AC +FUN_0203F2AC: ; 0x0203F2AC + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B6D0 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203F2E4 +FUN_0203F2E4: ; 0x0203F2E4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205F6C8 + cmp r0, #0xa + blo _0203F314 + mov r0, #0x1 + b _0203F316 +_0203F314: + mov r0, #0x0 +_0203F316: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F31C +FUN_0203F31C: ; 0x0203F31C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F648 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F348 +FUN_0203F348: ; 0x0203F348 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02027210 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203F38C +FUN_0203F38C: ; 0x0203F38C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02046030 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203F39C +FUN_0203F39C: ; 0x0203F39C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0205F668 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0203F3AC +FUN_0203F3AC: ; 0x0203F3AC + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02013B5C + bl FUN_02013B74 + cmp r0, #0x20 + bne _0203F3FE + ldr r0, _0203F414 ; =0x0000FFFF + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} +_0203F3FE: + strh r0, [r4, #0x0] + bl FUN_02013BE4 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r7, #0x0 + bl FUN_0200B518 + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0203F414: .word 0x0000FFFF + + thumb_func_start FUN_0203F418 +FUN_0203F418: ; 0x0203F418 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02013B5C + bl FUN_02013BC8 + cmp r0, #0x1 + bne _0203F444 + mov r0, #0x1 + b _0203F446 +_0203F444: + mov r0, #0x0 +_0203F446: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F44C +FUN_0203F44C: ; 0x0203F44C + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205F710 + cmp r0, #0x5 + blo _0203F47C + mov r0, #0x1 + b _0203F47E +_0203F47C: + mov r0, #0x0 +_0203F47E: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F484 +FUN_0203F484: ; 0x0203F484 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + ldr r5, [r5, #0x0] + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02023788 + add r7, r0, #0x0 + bl FUN_02023818 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204B2B4 + cmp r6, r0 + bne _0203F4CE + add r0, r7, #0x0 + bl FUN_0202381C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204B2C0 + cmp r6, r0 + bne _0203F4CE + mov r0, #0x1 + strh r0, [r4, #0x0] + b _0203F4D2 +_0203F4CE: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0203F4D2: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0203F4D8 +FUN_0203F4D8: ; 0x0203F4D8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202471C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F508 +FUN_0203F508: ; 0x0203F508 + push {r3-r7, lr} + add r6, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r6, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x1c] + ldr r1, [r2, #0x8] + lsl r1, r1, #0x10 + lsr r5, r1, #0x10 + ldr r1, [r2, #0xc] + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r7, #0x3 + blo _0203F54C + ldr r7, _0203F5C8 ; =0x0000010E + b _0203F582 +_0203F54C: + cmp r0, #0x1e + blo _0203F556 + mov r7, #0x43 + lsl r7, r7, #0x2 + b _0203F582 +_0203F556: + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + cmp r1, #0x19 + bge _0203F568 + ldr r7, _0203F5CC ; =0x0000010D + b _0203F582 +_0203F568: + bl FUN_0201B9EC + mov r1, #0x6 + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r1, r0, #0x10 + mov r0, #0x6 + mul r0, r7 + add r0, r1, r0 + lsl r1, r0, #0x1 + ldr r0, _0203F5D0 ; =0x020F3538 + ldrh r7, [r0, r1] +_0203F582: + cmp r5, #0xb + bne _0203F59A + cmp r4, #0x1 + bne _0203F58E + mov r4, #0x0 + b _0203F5A4 +_0203F58E: + cmp r4, #0x14 + bne _0203F596 + mov r4, #0x2 + b _0203F5A4 +_0203F596: + mov r4, #0x5 + b _0203F5A4 +_0203F59A: + cmp r5, #0x14 + bne _0203F5A2 + mov r4, #0x1 + b _0203F5A4 +_0203F5A2: + mov r4, #0x3 +_0203F5A4: + mov r5, #0x0 +_0203F5A6: + cmp r5, r4 + beq _0203F5B8 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r5, #0x0 + add r2, r7, #0x0 + bl FUN_02034C24 +_0203F5B8: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x4 + blo _0203F5A6 + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0203F5C8: .word 0x0000010E +_0203F5CC: .word 0x0000010D +_0203F5D0: .word 0x020F3538 + + thumb_func_start FUN_0203F5D4 +FUN_0203F5D4: ; 0x0203F5D4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F720 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F604 +FUN_0203F604: ; 0x0203F604 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F740 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F634 +FUN_0203F634: ; 0x0203F634 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F760 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F664 +FUN_0203F664: ; 0x0203F664 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x0 + add r3, sp, #0x0 + add r0, #0x8 +_0203F684: + ldr r6, [r0, #0x0] + ldr r1, [r5, #0x8] + add r6, r6, #0x1 + str r6, [r0, #0x0] + ldrb r1, [r1, #0x0] + add r2, r2, #0x1 + strb r1, [r3, #0x0] + add r3, r3, #0x1 + cmp r2, #0x5 + blt _0203F684 + ldr r1, [r0, #0x0] + ldr r2, [r5, #0x8] + add r1, r1, #0x1 + str r1, [r0, #0x0] + ldrb r6, [r2, #0x0] + mov r0, #0x4 + bl FUN_02027E5C + add r1, sp, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + add r7, r0, #0x0 + bl FUN_02027F04 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02028048 + add r1, r7, #0x0 + bl FUN_02028094 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02016A18 + ldr r0, _0203F6E0 ; =0x0000FFFF + cmp r5, r0 + bne _0203F6D8 + strh r0, [r4, #0x0] + b _0203F6DA +_0203F6D8: + strh r6, [r4, #0x0] +_0203F6DA: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0203F6E0: .word 0x0000FFFF + + thumb_func_start FUN_0203F6E4 +FUN_0203F6E4: ; 0x0203F6E4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02028048 + bl FUN_02028074 + ldr r1, _0203F71C ; =0x0000FFFF + cmp r0, r1 + bne _0203F712 + mov r0, #0x0 + b _0203F714 +_0203F712: + mov r0, #0x1 +_0203F714: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203F71C: .word 0x0000FFFF + + thumb_func_start FUN_0203F720 +FUN_0203F720: ; 0x0203F720 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r5, r0, #0x0 + cmp r4, #0x3 + bls _0203F752 + bl ErrorHandling +_0203F752: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205F4A0 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0203F760 +FUN_0203F760: ; 0x0203F760 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x20 + ldr r0, [r0, #0xc] + add r2, sp, #0x0 + bl FUN_02022534 + ldr r1, [sp, #0x0] + add r4, r0, #0x0 + cmp r1, #0x0 + bne _0203F798 + mov r1, #0x0 + strh r1, [r5, #0x0] + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0203F798: + cmp r1, #0x1 + bne _0203F7AE + mov r1, #0x0 + bl FUN_0202B21C + strh r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0203F7AE: + cmp r1, #0x2 + bne _0203F7BE + mov r1, #0x0 + strh r1, [r5, #0x0] + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0203F7BE: + mov r0, #0x0 + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F7C8 +FUN_0203F7C8: ; 0x0203F7C8 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + add r2, r6, #0x0 + bl FUN_02037A48 + str r0, [r4, #0x0] + ldr r1, _0203F808 ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0203F808: .word FUN_0203BC04 + + thumb_func_start FUN_0203F80C +FUN_0203F80C: ; 0x0203F80C + push {r4-r6, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0203F84C + bl ErrorHandling +_0203F84C: + ldr r0, [r4, #0x0] + bl FUN_02037A40 + strh r0, [r6, #0x0] + ldrh r0, [r6, #0x0] + cmp r0, #0x7 + bne _0203F85E + mov r0, #0xff + strh r0, [r6, #0x0] +_0203F85E: + ldr r0, [r4, #0x0] + bl FUN_02037A70 + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x1 + bne _0203F870 + mov r0, #0x1 + b _0203F872 +_0203F870: + mov r0, #0x0 +_0203F872: + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0203F880 +FUN_0203F880: ; 0x0203F880 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + cmp r4, #0x64 + bls _0203F8A2 + mov r4, #0x64 +_0203F8A2: + bl FUN_0201B9EC + mov r1, #0x65 + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + cmp r0, r4 + bgt _0203F8B8 + mov r0, #0x1 + b _0203F8BA +_0203F8B8: + mov r0, #0x0 +_0203F8BA: + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203F8C0 +FUN_0203F8C0: ; 0x0203F8C0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r4, #0x0 + beq _0203F8FC + cmp r4, #0x1 + beq _0203F906 + cmp r4, #0x2 + beq _0203F910 + b _0203F91A +_0203F8FC: + mov r2, #0x0 + mov r3, #0x20 + bl FUN_0224F12C + b _0203F91E +_0203F906: + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0224F12C + b _0203F91E +_0203F910: + mov r2, #0x2 + mov r3, #0x20 + bl FUN_0224F12C + b _0203F91E +_0203F91A: + bl ErrorHandling +_0203F91E: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F924 +FUN_0203F924: ; 0x0203F924 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F6A8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F954 +FUN_0203F954: ; 0x0203F954 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + cmp r0, #0x0 + bne _0203F978 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02239944 + b _0203F982 +_0203F978: + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02239AAC +_0203F982: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203F988 +FUN_0203F988: ; 0x0203F988 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0203384C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F9B0 +FUN_0203F9B0: ; 0x0203F9B0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020286EC + bl FUN_02028448 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203F9DC +FUN_0203F9DC: ; 0x0203F9DC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + ldr r1, _0203FA10 ; =0x0000FF79 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, #0x1 + bhi _0203FA0C + bl FUN_02025C30 +_0203FA0C: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0203FA10: .word 0x0000FF79 + + thumb_func_start FUN_0203FA14 +FUN_0203FA14: ; 0x0203FA14 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + mov r1, #0x0 + strh r1, [r0, #0x0] + ldr r1, _0203FA54 ; =0x0000012A + cmp r4, r1 + blo _0203FA4E + add r1, #0xf + cmp r4, r1 + bhi _0203FA4E + mov r1, #0x1 + strh r1, [r0, #0x0] +_0203FA4E: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0203FA54: .word 0x0000012A + + thumb_func_start FUN_0203FA58 +FUN_0203FA58: ; 0x0203FA58 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + mov r0, #0x20 + bl FUN_0200AA80 + add r4, r0, #0x0 + ldr r2, _0203FB48 ; =0x00000147 + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0x20 + bl FUN_0200A86C + add r5, r0, #0x0 + ldr r2, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200B518 + ldr r2, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200B518 + ldr r2, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0200B518 + add r0, r4, #0x0 + mov r1, #0x3 + add r2, r7, #0x0 + bl FUN_0200B518 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0200A9C4 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200A914 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r7, #0x0 + bl FUN_02021CE0 + cmp r0, #0x0 + bne _0203FB24 + mov r0, #0x1 + b _0203FB26 +_0203FB24: + mov r0, #0x0 +_0203FB26: + strh r0, [r6, #0x0] + add r0, r7, #0x0 + bl FUN_02021A20 + ldr r0, [sp, #0x0] + bl FUN_02021A20 + add r0, r5, #0x0 + bl FUN_0200A8B8 + add r0, r4, #0x0 + bl FUN_0200AB18 + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_0203FB48: .word 0x00000147 + + thumb_func_start FUN_0203FB4C +FUN_0203FB4C: ; 0x0203FB4C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02023788 + mov r1, #0x1 + bl FUN_02023828 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FB64 +FUN_0203FB64: ; 0x0203FB64 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_0205296C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FB94 +FUN_0203FB94: ; 0x0203FB94 + push {r3, lr} + bl FUN_02033E74 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FBA0 +FUN_0203FBA0: ; 0x0203FBA0 + push {r3, lr} + bl FUN_02033ED0 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FBAC +FUN_0203FBAC: ; 0x0203FBAC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02034E48 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FBBC +FUN_0203FBBC: ; 0x0203FBBC + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + str r4, [r0, #0x0] + str r6, [r0, #0x8] + mov r1, #0x0 + str r7, [r0, #0xc] + mvn r1, r1 + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x10] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0203FC1C +FUN_0203FC1C: ; 0x0203FC1C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + ldr r2, [r5, #0x8] + add r1, r0, #0x0 + add r0, r2, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + ldr r0, [r5, #0x0] + ldrb r4, [r2, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r5, r0, #0x0 + bne _0203FC4C + bl ErrorHandling +_0203FC4C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020588B8 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203FC58 +FUN_0203FC58: ; 0x0203FC58 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02065078 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FC80 +FUN_0203FC80: ; 0x0203FC80 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x28 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + bne _0203FCAA + add r0, r5, #0x0 + mov r1, #0x4 + mov r2, #0x3 + bl FUN_021E8588 + str r0, [r4, #0x0] + bl FUN_021E84F4 +_0203FCAA: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FCB0 +FUN_0203FCB0: ; 0x0203FCB0 + push {r3-r5, lr} + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x28 + add r0, r5, #0x0 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + bne _0203FCD6 + ldr r0, [r4, #0x0] + bl FUN_021E856C + ldr r0, [r4, #0x0] + bl FUN_021E85E4 +_0203FCD6: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203FCDC +FUN_0203FCDC: ; 0x0203FCDC + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + add r0, #0x80 + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_0206367C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203FCF4 +FUN_0203FCF4: ; 0x0203FCF4 + push {r4-r7, lr} + sub sp, #0x84 + add r7, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r7, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + mov r4, #0x0 + add r6, r4, #0x0 + add r5, r4, #0x0 +_0203FD10: + add r0, r7, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r1, r5, #0x0 + bl FUN_020239D0 + cmp r0, #0x1 + bne _0203FD2C + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_0203FD2C: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x8 + blo _0203FD10 + cmp r6, #0x8 + bhi _0203FD70 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0203FD46: ; jump table (using 16-bit offset) + .short _0203FD58 - _0203FD46 - 2; case 0 + .short _0203FD5C - _0203FD46 - 2; case 1 + .short _0203FD5C - _0203FD46 - 2; case 2 + .short _0203FD60 - _0203FD46 - 2; case 3 + .short _0203FD60 - _0203FD46 - 2; case 4 + .short _0203FD64 - _0203FD46 - 2; case 5 + .short _0203FD64 - _0203FD46 - 2; case 6 + .short _0203FD68 - _0203FD46 - 2; case 7 + .short _0203FD6C - _0203FD46 - 2; case 8 +_0203FD58: + mov r1, #0x1 + b _0203FD72 +_0203FD5C: + mov r1, #0x2 + b _0203FD72 +_0203FD60: + mov r1, #0x3 + b _0203FD72 +_0203FD64: + mov r1, #0x4 + b _0203FD72 +_0203FD68: + mov r1, #0x5 + b _0203FD72 +_0203FD6C: + mov r1, #0x6 + b _0203FD72 +_0203FD70: + mov r1, #0x1 +_0203FD72: + ldr r0, _0203FDB4 ; =0x020F4218 + mov r2, #0x0 + add r6, sp, #0x4 +_0203FD78: + lsl r3, r2, #0x2 + add r5, r0, r3 + ldrh r3, [r5, #0x2] + cmp r1, r3 + blt _0203FD8E + ldrh r5, [r5, #0x0] + lsl r3, r4, #0x1 + strh r5, [r6, r3] + add r3, r4, #0x1 + lsl r3, r3, #0x18 + lsr r4, r3, #0x18 +_0203FD8E: + add r2, r2, #0x1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + cmp r2, #0x13 + blo _0203FD78 + ldr r1, _0203FDB8 ; =0x0000FFFF + lsl r0, r4, #0x1 + add r2, sp, #0x4 + strh r1, [r2, r0] + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r0, [r7, #0x74] + add r7, #0x80 + ldr r1, [r7, #0x0] + bl FUN_0223D3D0 + mov r0, #0x1 + add sp, #0x84 + pop {r4-r7, pc} + .balign 4 +_0203FDB4: .word 0x020F4218 +_0203FDB8: .word 0x0000FFFF + + thumb_func_start FUN_0203FDBC +FUN_0203FDBC: ; 0x0203FDBC + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, _0203FE00 ; =0x0000FFF8 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x5 + bhi _0203FDE4 + mov r0, #0x1 + b _0203FDE6 +_0203FDE4: + mov r0, #0x0 +_0203FDE6: + lsl r3, r2, #0x2 + str r0, [sp, #0x0] + ldr r2, _0203FE04 ; =0x02105E10 + ldr r0, [r4, #0x74] + add r4, #0x80 + ldr r2, [r2, r3] + ldr r1, [r4, #0x0] + mov r3, #0x0 + bl FUN_0223D3D0 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203FE00: .word 0x0000FFF8 +_0203FE04: .word 0x02105E10 + + thumb_func_start FUN_0203FE08 +FUN_0203FE08: ; 0x0203FE08 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + cmp r2, #0x1 + bhi _0203FE28 + mov r0, #0x1 + b _0203FE2A +_0203FE28: + mov r0, #0x0 +_0203FE2A: + lsl r3, r2, #0x2 + str r0, [sp, #0x0] + ldr r2, _0203FE44 ; =0x02105DEC + ldr r0, [r4, #0x74] + add r4, #0x80 + ldr r2, [r2, r3] + ldr r1, [r4, #0x0] + mov r3, #0x1 + bl FUN_0223D3D0 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203FE44: .word 0x02105DEC + + thumb_func_start FUN_0203FE48 +FUN_0203FE48: ; 0x0203FE48 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + mov r0, #0x0 + lsl r3, r2, #0x2 + str r0, [sp, #0x0] + ldr r2, _0203FE7C ; =0x02105DF4 + ldr r0, [r4, #0x74] + add r4, #0x80 + ldr r2, [r2, r3] + ldr r1, [r4, #0x0] + mov r3, #0x2 + bl FUN_0223D3D0 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0203FE7C: .word 0x02105DF4 + + thumb_func_start FUN_0203FE80 +FUN_0203FE80: ; 0x0203FE80 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02038AD0 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0203FE90 +FUN_0203FE90: ; 0x0203FE90 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + lsl r1, r1, #0x18 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + bl FUN_02082140 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0203FEC0 +FUN_0203FEC0: ; 0x0203FEC0 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [r4, #0x64] + ldr r1, _0203FEF0 ; =FUN_0203FEF4 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0203FEF0: .word FUN_0203FEF4 + + thumb_func_start FUN_0203FEF4 +FUN_0203FEF4: ; 0x0203FEF4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r1, [r4, #0x64] + ldr r0, [r0, #0x0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02082158 + pop {r4, pc} + + thumb_func_start FUN_0203FF10 +FUN_0203FF10: ; 0x0203FF10 + push {r3-r7, lr} + sub sp, #0x38 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + str r0, [sp, #0x10] + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_020239A0 + add r7, r0, #0x0 + ldr r1, [sp, #0x8] + add r0, sp, #0x14 + strb r1, [r0, #0x0] + ldr r1, [sp, #0x4] + strb r1, [r0, #0x1] + ldr r1, [sp, #0xc] + strb r1, [r0, #0x2] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED0C + add r1, sp, #0x14 + strb r0, [r1, #0x3] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024CA4 + add r1, sp, #0x14 + strb r0, [r1, #0x4] + strb r6, [r1, #0x5] + ldr r0, [sp, #0x10] + str r7, [sp, #0x20] + str r0, [sp, #0x1c] + add r0, r5, #0x0 + str r4, [sp, #0x24] + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02027E24 + str r0, [sp, #0x28] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x2c] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r5, #0x80 + ldr r0, [r0, #0xc] + str r0, [sp, #0x30] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029EF8 + str r0, [sp, #0x34] + add r0, sp, #0x14 + bl FUN_02081214 + ldr r1, [sp, #0x0] + str r0, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x38 + pop {r3-r7, pc} + + thumb_func_start FUN_02040028 +FUN_02040028: ; 0x02040028 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + add r5, #0x80 + ldr r3, [r5, #0x0] + add r2, r0, #0x0 + ldr r1, [r3, #0xc] + add r3, #0x98 + ldr r0, [r4, #0x0] + ldr r3, [r3, #0x0] + bl FUN_02082630 + ldr r0, [r4, #0x0] + bl FUN_020814E8 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02040074 +FUN_02040074: ; 0x02040074 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r3, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r2, [r6, #0x0] + add r1, r7, #0x0 + bl FUN_0208201C + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020400C8 +FUN_020400C8: ; 0x020400C8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r3, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r2, [r6, #0x0] + add r1, r7, #0x0 + bl FUN_02082034 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204011C +FUN_0204011C: ; 0x0204011C + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r3, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r2, [r6, #0x0] + add r1, r7, #0x0 + bl FUN_0208206C + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02040170 +FUN_02040170: ; 0x02040170 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r3, #0x1 + str r3, [sp, #0x4] + ldr r0, [r4, #0x0] + add r2, r6, #0x0 + bl FUN_0200AD38 + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020401CC +FUN_020401CC: ; 0x020401CC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02081DC4 + ldr r1, _020401EC ; =FUN_020401F0 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_020401EC: .word FUN_020401F0 + + thumb_func_start FUN_020401F0 +FUN_020401F0: ; 0x020401F0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02081EB8 + pop {r3, pc} + + thumb_func_start FUN_02040204 +FUN_02040204: ; 0x02040204 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r1, r0, #0x0 + ldr r0, [r4, #0x74] + ldr r1, [r1, #0x0] + bl FUN_02080E0C + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_02040220 +FUN_02040220: ; 0x02040220 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r6, #0x0] + bl FUN_02082090 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0204025C +FUN_0204025C: ; 0x0204025C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r6, #0x0] + bl FUN_020820B8 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02040298 +FUN_02040298: ; 0x02040298 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r6, #0x0] + bl FUN_020820DC + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020402D4 +FUN_020402D4: ; 0x020402D4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0208213C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02040304 +FUN_02040304: ; 0x02040304 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r6, #0x0] + bl FUN_0208210C + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02040340 +FUN_02040340: ; 0x02040340 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0208217C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02040370 +FUN_02040370: ; 0x02040370 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02082190 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020403A0 +FUN_020403A0: ; 0x020403A0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020821B4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020403D0 +FUN_020403D0: ; 0x020403D0 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_020821C4 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02040414 +FUN_02040414: ; 0x02040414 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_020821DC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02040458 +FUN_02040458: ; 0x02040458 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020821F0 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02040488 +FUN_02040488: ; 0x02040488 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r3, [sp, #0x4] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02082214 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020404FC +FUN_020404FC: ; 0x020404FC + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02082254 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204052C +FUN_0204052C: ; 0x0204052C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r6, #0x0] + mov r3, #0xb + bl FUN_02082284 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204056C +FUN_0204056C: ; 0x0204056C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020822F0 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204059C +FUN_0204059C: ; 0x0204059C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_0208223C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020405B4 +FUN_020405B4: ; 0x020405B4 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_0208224C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020405CC +FUN_020405CC: ; 0x020405CC + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02082444 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020405F8 +FUN_020405F8: ; 0x020405F8 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r1, _02040614 ; =FUN_02040618 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_02040614: .word FUN_02040618 + + thumb_func_start FUN_02040618 +FUN_02040618: ; 0x02040618 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_02082508 + cmp r0, #0x1 + bne _02040632 + mov r0, #0x1 + pop {r3, pc} +_02040632: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02040638 +FUN_02040638: ; 0x02040638 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204064C +FUN_0204064C: ; 0x0204064C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + ldr r0, [r0, #0x1c] + bl FUN_021F45E8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02040660 +FUN_02040660: ; 0x02040660 + push {r4-r5, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x14 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + ldr r0, [r4, #0x0] + add r1, sp, #0x18 + add r2, sp, #0x14 + add r3, sp, #0x10 + bl FUN_020825A0 + ldr r0, [sp, #0x14] + cmp r0, #0x1 + beq _020406B0 + ldr r0, [sp, #0x10] + cmp r0, #0x1 + beq _020406B0 + ldr r0, [sp, #0xc] + cmp r0, #0x1 + beq _020406B0 + ldr r0, [sp, #0x8] + cmp r0, #0x1 + bne _020406B6 +_020406B0: + mov r0, #0x1 + strh r0, [r5, #0x0] + b _020406BA +_020406B6: + mov r0, #0x0 + strh r0, [r5, #0x0] +_020406BA: + mov r0, #0x0 + add sp, #0x1c + pop {r4-r5, pc} + + thumb_func_start FUN_020406C0 +FUN_020406C0: ; 0x020406C0 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_0224D3E8 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_020406CC +FUN_020406CC: ; 0x020406CC + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0xf + add r0, r6, #0x0 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r4, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r5, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r5, #0x0 + bl FUN_0200ABC0 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040700 +FUN_02040700: ; 0x02040700 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xf + add r0, r4, #0x0 + bl FUN_02039438 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + ldr r2, [r4, #0xc] + bl FUN_0200ABE4 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02040724 +FUN_02040724: ; 0x02040724 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0xf + add r0, r4, #0x0 + bl FUN_02039438 + ldr r2, [r5, #0x8] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + ldr r2, [r4, #0xc] + bl FUN_0200AC0C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02040748 +FUN_02040748: ; 0x02040748 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0xf + add r0, r6, #0x0 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + add r2, r0, #0x0 + ldr r0, [r7, #0x0] + add r1, r4, #0x0 + bl FUN_0200AC60 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02040790 +FUN_02040790: ; 0x02040790 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AE38 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020407C8 +FUN_020407C8: ; 0x020407C8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AEE0 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040800 +FUN_02040800: ; 0x02040800 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + bl FUN_0206EA30 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AD5C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204083C +FUN_0204083C: ; 0x0204083C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AD5C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040874 +FUN_02040874: ; 0x02040874 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + bl FUN_02054C14 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0200AD38 + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_020408BC +FUN_020408BC: ; 0x020408BC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + ldr r1, [r5, #0x8] + add r2, r1, #0x1 + str r2, [r5, #0x8] + ldrb r4, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r3, [r2, #0x0] + cmp r4, #0x0 + bne _02040904 + bl FUN_02054C14 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 +_02040904: + str r4, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r7, #0x0] + ldr r2, [sp, #0x8] + add r1, r6, #0x0 + bl FUN_0200AD38 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0204091C +FUN_0204091C: ; 0x0204091C + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0xf + add r0, r6, #0x0 + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + add r2, r0, #0x0 + ldr r0, [r7, #0x0] + add r1, r4, #0x0 + bl FUN_0200ACF8 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02040964 +FUN_02040964: ; 0x02040964 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + ldr r0, [r4, #0xc] + bl FUN_02022510 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + mov r1, #0x1e + blx _s32_div_f + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x1e + blx _s32_div_f + add r2, r1, #0x0 + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_0206B5E4 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200ACF8 + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020409C0 +FUN_020409C0: ; 0x020409C0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B02C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020409F8 +FUN_020409F8: ; 0x020409F8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B064 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040A30 +FUN_02040A30: ; 0x02040A30 + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r7, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r7, #0x8] + add r0, r4, #0x0 + ldrb r5, [r1, #0x0] + bl FUN_020239CC + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02023A28 + add r1, r0, #0x0 + add r0, r7, #0x0 + mov r2, #0x2 + bl FUN_020536D0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r5, #0x0 + bl FUN_0200B09C + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02040A7C +FUN_02040A7C: ; 0x02040A7C + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + ldr r1, [r5, #0x8] + str r0, [sp, #0x8] + add r0, r1, #0x1 + str r0, [r5, #0x8] + ldrb r5, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x4 + bl FUN_02040AE4 + add r6, r0, #0x0 + str r5, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r7, #0x0] + ldr r3, [sp, #0x8] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0200ABB4 + add r0, r6, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02040AE4 +FUN_02040AE4: ; 0x02040AE4 + push {r3-r5, lr} + ldr r2, _02040B08 ; =0x0000016A + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0x0 + add r1, r4, #0x0 + bl FUN_0200A914 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02040B08: .word 0x0000016A + + thumb_func_start FUN_02040B0C +FUN_02040B0C: ; 0x02040B0C + push {r4-r6, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r4, #0x8] + add r4, #0x80 + ldr r0, [r4, #0x0] + ldrb r5, [r1, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F388 + mov r1, #0x4 + bl FUN_02040AE4 + add r4, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r6, #0x0] + add r1, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02040B5C +FUN_02040B5C: ; 0x02040B5C + push {r4-r6, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r4, #0x8] + add r4, #0x80 + ldr r0, [r4, #0x0] + ldrb r5, [r1, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F398 + mov r1, #0x4 + bl FUN_02040AE4 + add r4, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r6, #0x0] + add r1, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02040BAC +FUN_02040BAC: ; 0x02040BAC + push {r4-r6, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r4, #0x8] + add r4, #0x80 + ldr r0, [r4, #0x0] + ldrb r5, [r1, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F3C0 + mov r1, #0x4 + bl FUN_02040AE4 + add r4, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r6, #0x0] + add r1, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02040BFC +FUN_02040BFC: ; 0x02040BFC + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B350 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040C34 +FUN_02040C34: ; 0x02040C34 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B1D4 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040C6C +FUN_02040C6C: ; 0x02040C6C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B164 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040CA4 +FUN_02040CA4: ; 0x02040CA4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x16 + mov r1, #0x4 + bl FUN_020219F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r6, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + mov r1, #0x4 + add r2, r4, #0x0 + bl FUN_02064E60 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r7, #0x0] + add r1, r6, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02040D04 +FUN_02040D04: ; 0x02040D04 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r4, #0x8] + add r0, r4, #0x0 + ldrb r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + sub r5, #0x95 + add r4, r0, #0x0 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x20 + bl FUN_020852E8 + add r5, r0, #0x0 + cmp r4, #0x2 + bhs _02040D5A + mov r0, #0x1 + b _02040D5C +_02040D5A: + mov r0, #0x0 +_02040D5C: + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r7, #0x0] + add r1, r6, #0x0 + add r2, r5, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02040D7C +FUN_02040D7C: ; 0x02040D7C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AE04 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040DB4 +FUN_02040DB4: ; 0x02040DB4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B660 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040DEC +FUN_02040DEC: ; 0x02040DEC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + mov r0, #0xb + ldrb r6, [r1, #0x0] + add r1, r0, #0x0 + bl FUN_020219F4 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024EB4 + bl FUN_02024F0C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02021E28 + ldr r0, _02040E48 ; =0x020ECAC4 + mov r3, #0x0 + ldrb r0, [r0, #0x0] + str r3, [sp, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [r7, #0x0] + add r2, r4, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + nop +_02040E48: .word 0x020ECAC4 + + thumb_func_start FUN_02040E4C +FUN_02040E4C: ; 0x02040E4C + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r6, [r0, #0x0] + mov r1, #0xf + add r0, r6, #0x0 + bl FUN_02039438 + ldr r1, [r4, #0x8] + add r7, r0, #0x0 + add r0, r1, #0x1 + str r0, [r4, #0x8] + add r0, r4, #0x0 + ldrb r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + ldr r1, [sp, #0x0] + bl FUN_0206B9B0 + add r4, #0x36 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, [r7, #0x0] + add r1, r5, #0x0 + bl FUN_0200AD5C + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02040EB4 +FUN_02040EB4: ; 0x02040EB4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x3 + bl FUN_0207FC5C + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AD94 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040EF8 +FUN_02040EF8: ; 0x02040EF8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + sub r2, r2, #0x1 + lsl r2, r2, #0x10 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + lsr r2, r2, #0x10 + bl FUN_0200B534 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02040F34 +FUN_02040F34: ; 0x02040F34 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AE70 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040F6C +FUN_02040F6C: ; 0x02040F6C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200AEA8 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040FA4 +FUN_02040FA4: ; 0x02040FA4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B388 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02040FDC +FUN_02040FDC: ; 0x02040FDC + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B20C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02041014 +FUN_02041014: ; 0x02041014 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B19C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204104C +FUN_0204104C: ; 0x0204104C + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + ldr r0, [r5, #0x8] + add r1, r4, #0x0 + add r0, r0, #0x1 + str r0, [r5, #0x8] + ldr r0, [r6, #0x0] + add r2, r7, #0x0 + bl FUN_0200ACC0 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02041094 +FUN_02041094: ; 0x02041094 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r5, #0x80 + ldr r0, [r5, #0x0] + ldrb r4, [r1, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F3C0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200ACC0 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020410C8 +FUN_020410C8: ; 0x020410C8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B698 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02041100 +FUN_02041100: ; 0x02041100 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + bl FUN_0200B09C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02041138 +FUN_02041138: ; 0x02041138 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r1, [r5, #0x8] + add r6, r0, #0x0 + add r0, r1, #0x1 + str r0, [r5, #0x8] + add r0, r5, #0x0 + ldrb r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + sub r2, r2, #0x1 + lsl r2, r2, #0x10 + ldr r0, [r6, #0x0] + add r1, r4, #0x0 + lsr r2, r2, #0x10 + bl FUN_0200B568 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02041174 +FUN_02041174: ; 0x02041174 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + ldr r2, [r4, #0x8] + add r1, r2, #0x1 + str r1, [r4, #0x8] + ldrb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + bl FUN_0200B7A8 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02041194 +FUN_02041194: ; 0x02041194 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F5D8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020411C4 +FUN_020411C4: ; 0x020411C4 + push {r4-r7, lr} + sub sp, #0x24 + add r4, r0, #0x0 + add r0, #0x80 + ldr r7, [r0, #0x0] + ldr r0, [r7, #0xc] + bl FUN_02022510 + str r0, [sp, #0x20] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, _0204133C ; =0x00000000 + str r0, [sp, #0x1c] + str r0, [sp, #0x18] + ldr r5, [sp, #0x1c] + beq _02041286 +_0204123C: + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204127C + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + lsl r1, r1, #0x10 + ldr r0, [sp, #0x0] + lsr r1, r1, #0x10 + bl FUN_02041354 + cmp r0, #0x0 + beq _0204127C + ldr r1, [sp, #0x1c] + cmp r1, r0 + bge _0204127C + str r0, [sp, #0x1c] + str r5, [sp, #0x18] +_0204127C: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, r6 + blo _0204123C +_02041286: + mov r6, #0x0 + str r6, [sp, #0x14] + str r6, [sp, #0x10] + add r7, r6, #0x0 +_0204128E: + mov r5, #0x0 +_02041290: + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x10] + add r2, r5, #0x0 + bl FUN_0206B5E4 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _020412E0 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _020412E0 + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + lsl r1, r1, #0x10 + ldr r0, [sp, #0x0] + lsr r1, r1, #0x10 + bl FUN_02041354 + cmp r0, #0x0 + beq _020412E0 + cmp r6, r0 + bge _020412E0 + add r6, r0, #0x0 + add r0, r5, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] +_020412E0: + add r5, r5, #0x1 + cmp r5, #0x1e + blo _02041290 + ldr r0, [sp, #0x10] + add r7, #0x1e + add r0, r0, #0x1 + str r0, [sp, #0x10] + cmp r0, #0x12 + blo _0204128E + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _0204130C + cmp r6, #0x0 + bne _0204130C + ldr r0, [sp, #0xc] + mov r1, #0x0 + strh r1, [r0, #0x0] + ldr r0, [sp, #0x8] + strh r1, [r0, #0x0] + ldr r0, [sp, #0x4] + strh r1, [r0, #0x0] + b _02041336 +_0204130C: + ldr r0, [sp, #0x1c] + cmp r0, r6 + blo _02041326 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0xc] + strh r1, [r0, #0x0] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x8] + strh r1, [r0, #0x0] + ldr r0, [sp, #0x4] + mov r1, #0x0 + strh r1, [r0, #0x0] + b _02041336 +_02041326: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0xc] + strh r1, [r0, #0x0] + ldr r0, [sp, #0x8] + mov r1, #0x1 + strh r6, [r0, #0x0] + ldr r0, [sp, #0x4] + strh r1, [r0, #0x0] +_02041336: + mov r0, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_0204133C: .word 0x00000000 + + thumb_func_start FUN_02041340 +FUN_02041340: ; 0x02041340 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F5FC + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02041354 +FUN_02041354: ; 0x02041354 + push {r4-r7, lr} + sub sp, #0xc + mov r6, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r7, r6, #0x0 +_02041360: + add r0, r5, #0x0 + mov r1, #0xa + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0xa + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x8] + ldr r0, [sp, #0x0] + cmp r0, r1 + bne _020413AC + add r0, r5, #0x0 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r7, #0x1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, #0x5 + blo _02041360 +_020413AC: + ldr r1, _020413BC ; =0x021C5A10 + ldr r0, [sp, #0x8] + strh r0, [r1, #0x2] + ldr r0, [sp, #0x4] + strh r0, [r1, #0x0] + add r0, r6, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_020413BC: .word 0x021C5A10 + + thumb_func_start FUN_020413C0 +FUN_020413C0: ; 0x020413C0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02005410 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020413E8 +FUN_020413E8: ; 0x020413E8 + push {r3, lr} + bl ScriptReadHalfword + bl FUN_0200521C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020413F8 +FUN_020413F8: ; 0x020413F8 + push {r3, lr} + bl ScriptReadHalfword + bl FUN_02004124 + mov r1, #0x0 + bl FUN_02005350 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0204140C +FUN_0204140C: ; 0x0204140C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x1c] + ldr r1, [r1, #0x0] + bl FUN_0204ABA8 + bl FUN_0200521C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02041424 +FUN_02041424: ; 0x02041424 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204AB20 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204143C +FUN_0204143C: ; 0x0204143C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020053CC + ldr r1, _02041460 ; =FUN_02041464 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_02041460: .word FUN_02041464 + + thumb_func_start FUN_02041464 +FUN_02041464: ; 0x02041464 + push {r3, lr} + bl FUN_02005404 + cmp r0, #0x0 + bne _02041472 + mov r0, #0x1 + pop {r3, pc} +_02041472: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02041478 +FUN_02041478: ; 0x02041478 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + mov r0, #0x7f + mov r2, #0x0 + bl FUN_0200538C + ldr r1, _02041498 ; =FUN_02041464 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_02041498: .word FUN_02041464 + + thumb_func_start FUN_0204149C +FUN_0204149C: ; 0x0204149C + push {r3, lr} + ldr r1, [r0, #0x8] + add r3, r1, #0x1 + str r3, [r0, #0x8] + ldrb r2, [r1, #0x0] + add r1, r3, #0x1 + str r1, [r0, #0x8] + ldrb r1, [r3, #0x0] + add r0, r2, #0x0 + bl FUN_020047C8 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020414B8 +FUN_020414B8: ; 0x020414B8 + push {r3, lr} + bl ScriptReadHalfword + add r1, r0, #0x0 + mov r0, #0x4 + bl FUN_02005308 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020414CC +FUN_020414CC: ; 0x020414CC + push {r3, lr} + ldr r2, [r0, #0x8] + add r1, r2, #0x1 + str r1, [r0, #0x8] + ldrb r0, [r2, #0x0] + bl FUN_020040F4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020414E0 +FUN_020414E0: ; 0x020414E0 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + bl FUN_020054C8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020414FC +FUN_020414FC: ; 0x020414FC + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + mov r1, #0x0 + bl FUN_020054F0 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02041518 +FUN_02041518: ; 0x02041518 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [r4, #0x64] + ldr r1, _0204153C ; =FUN_02041540 + add r0, r4, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4, pc} + nop +_0204153C: .word FUN_02041540 + + thumb_func_start FUN_02041540 +FUN_02041540: ; 0x02041540 + push {r3, lr} + ldr r0, [r0, #0x64] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005508 + cmp r0, #0x0 + bne _02041554 + mov r0, #0x1 + pop {r3, pc} +_02041554: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02041558 +FUN_02041558: ; 0x02041558 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r0, r5, #0x0 + bl FUN_02005578 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02041588 +FUN_02041588: ; 0x02041588 + push {r3, lr} + ldr r1, _02041594 ; =FUN_02041598 + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_02041594: .word FUN_02041598 + + thumb_func_start FUN_02041598 +FUN_02041598: ; 0x02041598 + push {r3, lr} + bl FUN_02005670 + cmp r0, #0x0 + bne _020415A6 + mov r0, #0x1 + pop {r3, pc} +_020415A6: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020415AC +FUN_020415AC: ; 0x020415AC + push {r3, lr} + bl ScriptReadHalfword + bl FUN_02005C28 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020415BC +FUN_020415BC: ; 0x020415BC + push {r3, lr} + ldr r1, _020415C8 ; =FUN_020415CC + bl SetupNativeScript + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_020415C8: .word FUN_020415CC + + thumb_func_start FUN_020415CC +FUN_020415CC: ; 0x020415CC + push {r3, lr} + bl FUN_02005CBC + cmp r0, #0x0 + bne _020415DA + mov r0, #0x1 + pop {r3, pc} +_020415DA: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020415E0 +FUN_020415E0: ; 0x020415E0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029EF8 + bl FUN_02005D20 + cmp r0, #0x1 + bne _02041610 + mov r0, #0x1 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} +_02041610: + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02041618 +FUN_02041618: ; 0x02041618 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + bl FUN_02005E28 + cmp r0, #0x0 + bne _0204163C + mov r0, #0x1 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4, pc} +_0204163C: + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02041644 +FUN_02041644: ; 0x02041644 + push {r3, lr} + bl FUN_02005E64 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02041650 +FUN_02041650: ; 0x02041650 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029EF8 + bl FUN_02005E6C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_02041664 +FUN_02041664: ; 0x02041664 + push {r3, lr} + mov r1, #0x0 + mov r0, #0x3f + add r2, r1, #0x0 + bl FUN_0200433C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_02041674 +FUN_02041674: ; 0x02041674 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200488C + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020416A8 +FUN_020416A8: ; 0x020416A8 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + bne _02041708 + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_02039438 + str r0, [sp, #0x14] + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_02039438 + str r0, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x1a + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x1b + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x1c + bl FUN_02039438 + str r0, [sp, #0x10] + add r0, r4, #0x0 + mov r1, #0x1d + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x1e + bl FUN_02039438 + b _02041748 +_02041708: + add r0, r4, #0x0 + mov r1, #0x1f + bl FUN_02039438 + str r0, [sp, #0x14] + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_02039438 + str r0, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x21 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x22 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x23 + bl FUN_02039438 + str r0, [sp, #0x10] + add r0, r4, #0x0 + mov r1, #0x24 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x25 + bl FUN_02039438 +_02041748: + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0xc] + ldr r0, [r0, #0x0] + ldr r3, [sp, #0x14] + str r0, [sp, #0x4] + str r5, [sp, #0x8] + ldr r0, [r6, #0x0] + ldr r1, [r4, #0x38] + ldr r2, [r2, #0x0] + ldr r3, [r3, #0x0] + bl FUN_0205CA4C + str r0, [r7, #0x0] + mov r0, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02041770 +FUN_02041770: ; 0x02041770 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x0] + cmp r6, #0x0 + bne _020417AE + add r5, #0x80 + ldr r0, [r5, #0x0] + mov r1, #0x1e + bl FUN_02039438 + b _020417B8 +_020417AE: + add r5, #0x80 + ldr r0, [r5, #0x0] + mov r1, #0x25 + bl FUN_02039438 +_020417B8: + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x0 + bne _020417C6 + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_020417C6: + bl FUN_0205CA64 + cmp r0, #0x1 + bne _020417DC + ldr r0, [r5, #0x0] + bl FUN_0205CA78 + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x1 + strh r0, [r4, #0x0] +_020417DC: + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_020417E0 +FUN_020417E0: ; 0x020417E0 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1c + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + ldrh r1, [r5, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02041808 +FUN_02041808: ; 0x02041808 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x1b + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x22 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + cmp r7, #0x0 + bne _02041852 + ldrh r1, [r4, #0x0] + b _02041854 +_02041852: + ldrh r1, [r6, #0x0] +_02041854: + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204185C +FUN_0204185C: ; 0x0204185C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x8 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldrh r0, [r4, #0x0] + bl FUN_020395F4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204188C +FUN_0204188C: ; 0x0204188C + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + mov r1, #0x8 + add r0, r4, #0x0 + bl FUN_02039438 + add r0, r4, #0x0 + mov r1, #0x17 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r6, #0x0 + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _020418F2 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + add r6, r0, #0x0 +_020418F2: + mov r0, #0xb + str r0, [sp, #0x0] + str r7, [sp, #0x4] + ldr r0, [r5, #0x74] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x8] + add r3, r6, #0x0 + bl FUN_020470E8 + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204190C +FUN_0204190C: ; 0x0204190C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r2, r0, #0x0 + mov r0, #0xb + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldr r0, [r5, #0x74] + add r1, r7, #0x0 + add r3, r6, #0x0 + bl FUN_020470E8 + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02041970 +FUN_02041970: ; 0x02041970 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x8 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldrh r0, [r4, #0x0] + bl FUN_020395F4 + bl FUN_0203962C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _020419D2 + mov r0, #0x0 + mov r1, #0x2 + add r2, r0, #0x0 + b _020419EC +_020419D2: + ldrh r0, [r4, #0x0] + bl FUN_02039618 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _020419E6 + mov r0, #0x3 + mov r1, #0x5 + mov r2, #0x6 + b _020419EC +_020419E6: + mov r0, #0x7 + mov r1, #0x9 + mov r2, #0xa +_020419EC: + strh r0, [r7, #0x0] + strh r1, [r6, #0x0] + strh r2, [r5, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020419F8 +FUN_020419F8: ; 0x020419F8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x8 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldrh r0, [r4, #0x0] + bl FUN_020395F4 + bl FUN_0203962C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _02041A5A + mov r1, #0x0 + mov r0, #0x11 + add r2, r1, #0x0 + b _02041A74 +_02041A5A: + ldrh r0, [r4, #0x0] + bl FUN_02039618 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _02041A6E + mov r0, #0x12 + mov r1, #0x0 + mov r2, #0x6 + b _02041A74 +_02041A6E: + mov r0, #0x13 + mov r1, #0x0 + mov r2, #0xa +_02041A74: + strh r0, [r7, #0x0] + strh r1, [r6, #0x0] + strh r2, [r5, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02041A80 +FUN_02041A80: ; 0x02041A80 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x8 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldrh r0, [r4, #0x0] + bl FUN_020395F4 + bl FUN_0203962C + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02041AB4 +FUN_02041AB4: ; 0x02041AB4 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + bl FUN_0204AD0C + bl FUN_02004724 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02041AD4 +FUN_02041AD4: ; 0x02041AD4 + push {r3, lr} + ldr r0, [r0, #0x74] + bl FUN_02048498 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_02041AE0 +FUN_02041AE0: ; 0x02041AE0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020480B8 + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02041B10 +FUN_02041B10: ; 0x02041B10 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020480C8 + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02041B40 +FUN_02041B40: ; 0x02041B40 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020480D8 + strh r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02041B70 +FUN_02041B70: ; 0x02041B70 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + bl FUN_0204A248 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02041B9C +FUN_02041B9C: ; 0x02041B9C + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x17 + bl FUN_02039438 + mov r1, #0xb + str r1, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x0 + ldr r0, [r4, #0x74] + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_020470E8 + mov r0, #0x1 + add sp, #0x8 + pop {r4, pc} + + thumb_func_start FUN_02041BC4 +FUN_02041BC4: ; 0x02041BC4 + push {r3-r5, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02058738 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02058448 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r4, #0x0 + lsr r1, r1, #0x10 + bl FUN_0203965C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02041BF0 +FUN_02041BF0: ; 0x02041BF0 + push {r3-r7, lr} + add r6, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl ScriptReadWord + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02058738 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02058448 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r7, #0x0 + lsr r1, r1, #0x10 + bl FUN_02039640 + cmp r0, #0x1 + bne _02041C34 + ldr r1, [r6, #0x8] + add r0, r6, #0x0 + add r1, r1, r4 + bl ScriptJump + mov r0, #0x1 + pop {r3-r7, pc} +_02041C34: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02041C38 +FUN_02041C38: ; 0x02041C38 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202881C + add r5, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r7, [r0, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + cmp r0, #0x6 + bls _02041C6C + b _02041E38 +_02041C6C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02041C78: ; jump table (using 16-bit offset) + .short _02041C86 - _02041C78 - 2; case 0 + .short _02041CBC - _02041C78 - 2; case 1 + .short _02041CF2 - _02041C78 - 2; case 2 + .short _02041D28 - _02041C78 - 2; case 3 + .short _02041D5E - _02041C78 - 2; case 4 + .short _02041D94 - _02041C78 - 2; case 5 + .short _02041DCE - _02041C78 - 2; case 6 +_02041C86: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02028828 + strh r0, [r4, #0x0] + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02041CBC: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02028840 + strh r0, [r4, #0x0] + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02041CF2: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r3, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [r6, #0x0] + add r1, r7, #0x0 + add r2, r5, #0x0 + bl FUN_0200B708 + b _02041E38 +_02041D28: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, [r6, #0x0] + add r1, r7, #0x0 + add r2, r5, #0x0 + bl FUN_0200B708 + b _02041E38 +_02041D5E: + mov r1, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020287A8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + mov r2, #0x0 + str r2, [sp, #0x0] + str r5, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x74] + mov r1, #0x5 + mov r3, #0x7 + bl FUN_020385CC + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02041D94: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02028828 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x1 + bl FUN_02028700 + cmp r6, #0x0 + beq _02041DC8 + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_020612F8 +_02041DC8: + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02041DCE: + mov r0, #0x40 + mov r1, #0x20 + bl FUN_020219F4 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r1, r6, #0x0 + add r7, r0, #0x0 + bl FUN_02023990 + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0x1 + add r3, r6, #0x0 + bl FUN_020287C0 + add r0, r7, #0x0 + bl FUN_020239CC + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020287EC + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0x2 + bl FUN_02028810 + bl FUN_0201BA60 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02028788 + add r0, r6, #0x0 + bl FUN_02021A20 + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_02028700 + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_020612EC +_02041E38: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02041E40 +FUN_02041E40: ; 0x02041E40 + push {r3-r7, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + cmp r0, #0x6 + bls _02041E4E + b _02041FD2 +_02041E4E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02041E5A: ; jump table (using 16-bit offset) + .short _02041E68 - _02041E5A - 2; case 0 + .short _02041E88 - _02041E5A - 2; case 1 + .short _02041F24 - _02041E5A - 2; case 2 + .short _02041ECA - _02041E5A - 2; case 3 + .short _02041F2E - _02041E5A - 2; case 4 + .short _02041F68 - _02041E5A - 2; case 5 + .short _02041FB4 - _02041E5A - 2; case 6 +_02041E68: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02248CD0 + strh r0, [r5, #0x0] + b _02041FD2 +_02041E88: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + ldr r0, _02041FD8 ; =0x00000233 + add r4, #0x80 + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + add r1, r7, #0x0 + bl FUN_02249038 + strh r0, [r6, #0x0] + b _02041FD2 +_02041ECA: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r1, [r5, #0x0] + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_022490A0 + b _02041FD2 +_02041F24: + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_02248CC0 + b _02041FD2 +_02041F2E: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r4, #0x80 + strh r0, [r5, #0x0] + ldr r0, [r4, #0x0] + bl FUN_022491FC + strh r0, [r6, #0x0] + b _02041FD2 +_02041F68: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02248F70 + strh r0, [r5, #0x0] + b _02041FD2 +_02041FB4: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02248FE0 + strh r0, [r5, #0x0] +_02041FD2: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_02041FD8: .word 0x00000233 + + thumb_func_start FUN_02041FDC +FUN_02041FDC: ; 0x02041FDC + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02061374 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02042000 +FUN_02042000: ; 0x02042000 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0206B9B0 + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02061460 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02042038 +FUN_02042038: ; 0x02042038 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + cmp r0, #0x0 + beq _02042058 + cmp r0, #0x1 + beq _020420A8 + b _02042106 +_02042058: + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + ldr r0, _0204210C ; =0x00000232 + add r5, #0x80 + strh r0, [r6, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r5, #0x0] + ldr r2, [r4, #0x0] + bl FUN_020421F0 + strh r0, [r7, #0x0] + b _02042106 +_020420A8: + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r3, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020421D8 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_0202A170 +_02042106: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0204210C: .word 0x00000232 + + thumb_func_start FUN_02042110 +FUN_02042110: ; 0x02042110 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_02042214 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204214C +FUN_0204214C: ; 0x0204214C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022504 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + cmp r0, #0x0 + beq _02042170 + cmp r0, #0x1 + beq _020421A2 + cmp r0, #0x2 + beq _020421BC + b _020421D4 +_02042170: + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0206B9B0 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x4 + bl FUN_02060F3C + b _020421D4 +_020421A2: + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02060F9C + b _020421D4 +_020421BC: + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02060F88 +_020421D4: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020421D8 +FUN_020421D8: ; 0x020421D8 + push {r3, lr} + sub r1, r1, #0x1 + lsl r3, r1, #0x4 + ldr r1, _020421EC ; =0x020F4264 + ldr r3, [r1, r3] + cmp r3, #0x0 + beq _020421EA + add r1, r2, #0x0 + blx r3 +_020421EA: + pop {r3, pc} + .balign 4 +_020421EC: .word 0x020F4264 + + thumb_func_start FUN_020421F0 +FUN_020421F0: ; 0x020421F0 + push {r4, lr} + sub r0, r0, #0x1 + lsl r4, r0, #0x4 + ldr r0, _0204220C ; =0x020F4268 + ldr r3, [r0, r4] + cmp r3, #0x0 + beq _02042204 + add r0, r1, #0x0 + add r1, r2, #0x0 + blx r3 +_02042204: + ldr r0, _02042210 ; =0x020F4270 + ldr r0, [r0, r4] + pop {r4, pc} + nop +_0204220C: .word 0x020F4268 +_02042210: .word 0x020F4270 + + thumb_func_start FUN_02042214 +FUN_02042214: ; 0x02042214 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + add r5, r1, #0x0 + bl FUN_02022504 + mov r1, #0x1 + add r2, r5, #0x0 + bl FUN_0202B710 + cmp r0, #0x0 + bne _02042230 + mov r0, #0x0 + pop {r3-r5, pc} +_02042230: + sub r0, r5, #0x1 + lsl r1, r0, #0x4 + ldr r0, _02042248 ; =0x020F426C + ldr r1, [r0, r1] + cmp r1, #0x0 + bne _02042240 + mov r0, #0x1 + pop {r3-r5, pc} +_02042240: + add r0, r4, #0x0 + blx r1 + pop {r3-r5, pc} + nop +_02042248: .word 0x020F426C + + thumb_func_start FUN_0204224C +FUN_0204224C: ; 0x0204224C + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + mov r0, #0x40 + mov r1, #0x4 + str r3, [sp, #0x8] + bl FUN_020219F4 + add r1, r7, #0x0 + add r4, r0, #0x0 + bl FUN_02021E28 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + add r1, r6, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02042288 +FUN_02042288: ; 0x02042288 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_0206BB1C + bl FUN_0204A20C + bl FUN_020690E4 + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200AC60 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020422A8 +FUN_020422A8: ; 0x020422A8 + push {r4, lr} + ldr r0, [r0, #0x4] + add r4, r1, #0x0 + ldr r0, [r0, #0x14] + bl FUN_02252538 + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200B02C + pop {r4, pc} + + thumb_func_start FUN_020422C0 +FUN_020422C0: ; 0x020422C0 + push {r4, lr} + sub sp, #0x20 + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_02022504 + bl FUN_0202B844 + ldrh r0, [r0, #0x2] + mov r1, #0x4 + add r2, sp, #0x8 + bl FUN_0200A99C + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + mov r1, #0x0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r2, sp, #0x8 + add r3, r1, #0x0 + bl FUN_0204224C + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020422F4 +FUN_020422F4: ; 0x020422F4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + bl FUN_0202B85C + ldrb r0, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02042304 +FUN_02042304: ; 0x02042304 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0204C1A8 + bl FUN_0204BEC8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02042314 +FUN_02042314: ; 0x02042314 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + bl FUN_0202B838 + ldrb r0, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02042324 +FUN_02042324: ; 0x02042324 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02027E24 + mov r1, #0x0 + bl FUN_02027098 + pop {r3, pc} + + thumb_func_start FUN_02042334 +FUN_02042334: ; 0x02042334 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + bl FUN_0202B850 + ldrb r0, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02042344 +FUN_02042344: ; 0x02042344 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + bl FUN_0202B844 + ldrb r0, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02042354 +FUN_02042354: ; 0x02042354 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + add r0, #0xa8 + bl FUN_022434BC + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02042364 +FUN_02042364: ; 0x02042364 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r6, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_022434D0 + add r5, #0x80 + ldr r1, [r5, #0x0] + add r1, #0xa8 + str r0, [r1, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02042394 +FUN_02042394: ; 0x02042394 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r0, #0xa8 + ldr r0, [r0, #0x0] + bl FUN_02243694 + add r4, #0x80 + ldr r1, [r4, #0x0] + mov r0, #0x0 + add r1, #0xa8 + str r0, [r1, #0x0] + pop {r4, pc} + + thumb_func_start FUN_020423B0 +FUN_020423B0: ; 0x020423B0 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + bl ScriptReadHalfword + str r0, [sp, #0x0] + add r0, r7, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r7, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl ScriptReadHalfword + str r0, [sp, #0x4] + add r0, r7, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r1, [sp, #0x4] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r7, #0x0 + add r0, #0x80 + ldr r1, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0xa8 + ldr r5, [r0, #0x0] + ldr r0, [sp, #0x0] + cmp r0, #0x64 + bls _020423FA + b _020426F6 +_020423FA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02042406: ; jump table (using 16-bit offset) + .short _020424D0 - _02042406 - 2; case 0 + .short _020424DA - _02042406 - 2; case 1 + .short _020424F6 - _02042406 - 2; case 2 + .short _020424FC - _02042406 - 2; case 3 + .short _02042508 - _02042406 - 2; case 4 + .short _02042516 - _02042406 - 2; case 5 + .short _0204251E - _02042406 - 2; case 6 + .short _020426F6 - _02042406 - 2; case 7 + .short _02042526 - _02042406 - 2; case 8 + .short _02042532 - _02042406 - 2; case 9 + .short _02042540 - _02042406 - 2; case 10 + .short _0204254E - _02042406 - 2; case 11 + .short _0204255A - _02042406 - 2; case 12 + .short _020426F6 - _02042406 - 2; case 13 + .short _02042564 - _02042406 - 2; case 14 + .short _0204256E - _02042406 - 2; case 15 + .short _02042578 - _02042406 - 2; case 16 + .short _020426F6 - _02042406 - 2; case 17 + .short _020426F6 - _02042406 - 2; case 18 + .short _020426F6 - _02042406 - 2; case 19 + .short _020426F6 - _02042406 - 2; case 20 + .short _020426F6 - _02042406 - 2; case 21 + .short _020426F6 - _02042406 - 2; case 22 + .short _020426F6 - _02042406 - 2; case 23 + .short _020426F6 - _02042406 - 2; case 24 + .short _020426F6 - _02042406 - 2; case 25 + .short _020426F6 - _02042406 - 2; case 26 + .short _020426F6 - _02042406 - 2; case 27 + .short _020426F6 - _02042406 - 2; case 28 + .short _020426F6 - _02042406 - 2; case 29 + .short _0204258A - _02042406 - 2; case 30 + .short _020425A2 - _02042406 - 2; case 31 + .short _020425BC - _02042406 - 2; case 32 + .short _020425C8 - _02042406 - 2; case 33 + .short _020425D2 - _02042406 - 2; case 34 + .short _020425DC - _02042406 - 2; case 35 + .short _020425E6 - _02042406 - 2; case 36 + .short _020425F0 - _02042406 - 2; case 37 + .short _020425F8 - _02042406 - 2; case 38 + .short _02042600 - _02042406 - 2; case 39 + .short _02042608 - _02042406 - 2; case 40 + .short _0204261A - _02042406 - 2; case 41 + .short _02042626 - _02042406 - 2; case 42 + .short _02042642 - _02042406 - 2; case 43 + .short _0204264C - _02042406 - 2; case 44 + .short _02042656 - _02042406 - 2; case 45 + .short _02042660 - _02042406 - 2; case 46 + .short _0204266A - _02042406 - 2; case 47 + .short _02042674 - _02042406 - 2; case 48 + .short _02042680 - _02042406 - 2; case 49 + .short _0204268C - _02042406 - 2; case 50 + .short _020426A0 - _02042406 - 2; case 51 + .short _020426AA - _02042406 - 2; case 52 + .short _020426B4 - _02042406 - 2; case 53 + .short _020426BE - _02042406 - 2; case 54 + .short _020426CC - _02042406 - 2; case 55 + .short _02042612 - _02042406 - 2; case 56 + .short _020426DA - _02042406 - 2; case 57 + .short _020426F6 - _02042406 - 2; case 58 + .short _020426F6 - _02042406 - 2; case 59 + .short _020426F6 - _02042406 - 2; case 60 + .short _020426F6 - _02042406 - 2; case 61 + .short _020426F6 - _02042406 - 2; case 62 + .short _020426F6 - _02042406 - 2; case 63 + .short _020426F6 - _02042406 - 2; case 64 + .short _020426F6 - _02042406 - 2; case 65 + .short _020426F6 - _02042406 - 2; case 66 + .short _020426F6 - _02042406 - 2; case 67 + .short _020426F6 - _02042406 - 2; case 68 + .short _020426F6 - _02042406 - 2; case 69 + .short _020426F6 - _02042406 - 2; case 70 + .short _020426F6 - _02042406 - 2; case 71 + .short _020426F6 - _02042406 - 2; case 72 + .short _020426F6 - _02042406 - 2; case 73 + .short _020426F6 - _02042406 - 2; case 74 + .short _020426F6 - _02042406 - 2; case 75 + .short _020426F6 - _02042406 - 2; case 76 + .short _020426F6 - _02042406 - 2; case 77 + .short _020426F6 - _02042406 - 2; case 78 + .short _020426F6 - _02042406 - 2; case 79 + .short _020426F6 - _02042406 - 2; case 80 + .short _020426F6 - _02042406 - 2; case 81 + .short _020426F6 - _02042406 - 2; case 82 + .short _020426F6 - _02042406 - 2; case 83 + .short _020426F6 - _02042406 - 2; case 84 + .short _020426F6 - _02042406 - 2; case 85 + .short _020426F6 - _02042406 - 2; case 86 + .short _020426F6 - _02042406 - 2; case 87 + .short _020426F6 - _02042406 - 2; case 88 + .short _020426F6 - _02042406 - 2; case 89 + .short _020426F6 - _02042406 - 2; case 90 + .short _020426F6 - _02042406 - 2; case 91 + .short _020426F6 - _02042406 - 2; case 92 + .short _020426F6 - _02042406 - 2; case 93 + .short _020426F6 - _02042406 - 2; case 94 + .short _020426F6 - _02042406 - 2; case 95 + .short _020426F6 - _02042406 - 2; case 96 + .short _020426F6 - _02042406 - 2; case 97 + .short _020426F6 - _02042406 - 2; case 98 + .short _020426F6 - _02042406 - 2; case 99 + .short _020426E6 - _02042406 - 2; case 100 +_020424D0: + add r0, r6, #0x0 + bl FUN_0224312C + strh r0, [r4, #0x0] + b _020426FA +_020424DA: + cmp r6, #0x0 + bne _020424EA + ldrb r0, [r5, #0xe] + ldr r1, [r1, #0xc] + bl FUN_022432E4 + strh r0, [r4, #0x0] + b _020426FA +_020424EA: + ldr r1, [r1, #0xc] + add r0, r6, #0x0 + bl FUN_022432E4 + strh r0, [r4, #0x0] + b _020426FA +_020424F6: + bl FUN_0224339C + b _020426FA +_020424FC: + ldr r0, [r1, #0xc] + bl FUN_0202A8CC + bl FUN_022433A8 + b _020426FA +_02042508: + ldr r0, [r1, #0xc] + bl FUN_0202A8CC + bl FUN_022433B0 + strh r0, [r4, #0x0] + b _020426FA +_02042516: + add r0, r1, #0x0 + bl FUN_022433B8 + b _020426FA +_0204251E: + add r0, r1, #0x0 + bl FUN_022433F8 + b _020426FA +_02042526: + ldr r0, [r1, #0xc] + add r1, r6, #0x0 + bl FUN_02243408 + strh r0, [r4, #0x0] + b _020426FA +_02042532: + ldr r1, [r1, #0xc] + mov r0, #0x0 + mov r2, #0x2 + bl FUN_02243E74 + strh r0, [r4, #0x0] + b _020426FA +_02042540: + mov r0, #0x0 + ldr r1, [r1, #0xc] + add r2, r0, #0x0 + bl FUN_02243E74 + strh r0, [r4, #0x0] + b _020426FA +_0204254E: + ldr r0, [r1, #0xc] + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + bl FUN_02243428 + b _020426FA +_0204255A: + ldr r0, [r1, #0xc] + bl FUN_02243448 + strh r0, [r4, #0x0] + b _020426FA +_02042564: + ldr r0, [r1, #0xc] + bl FUN_0224345C + strh r0, [r4, #0x0] + b _020426FA +_0204256E: + ldr r0, [r1, #0xc] + bl FUN_022434AC + strh r0, [r4, #0x0] + b _020426FA +_02042578: + ldrh r3, [r4, #0x0] + ldr r0, [r7, #0x74] + ldr r2, [sp, #0x4] + add r1, r6, #0x0 + bl FUN_0205FD38 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0204258A: + add r0, r1, #0x0 + mov r1, #0x13 + bl FUN_02039438 + add r2, r0, #0x0 + ldr r1, [r7, #0x74] + add r0, r5, #0x0 + bl FUN_022436C8 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_020425A2: + add r0, r1, #0x0 + mov r1, #0x13 + bl FUN_02039438 + add r7, #0x80 + ldr r2, [r7, #0x0] + add r1, r0, #0x0 + ldr r2, [r2, #0xc] + add r0, r5, #0x0 + bl FUN_022436E8 + strh r0, [r4, #0x0] + b _020426FA +_020425BC: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243780 + strh r0, [r4, #0x0] + b _020426FA +_020425C8: + add r0, r5, #0x0 + bl FUN_022438DC + strh r0, [r4, #0x0] + b _020426FA +_020425D2: + add r0, r5, #0x0 + bl FUN_022438E0 + strh r0, [r4, #0x0] + b _020426FA +_020425DC: + add r0, r5, #0x0 + bl FUN_022438FC + strh r0, [r4, #0x0] + b _020426FA +_020425E6: + add r0, r5, #0x0 + bl FUN_02243920 + strh r0, [r4, #0x0] + b _020426FA +_020425F0: + add r0, r5, #0x0 + bl FUN_022439F8 + b _020426FA +_020425F8: + add r0, r5, #0x0 + bl FUN_02243AD8 + b _020426FA +_02042600: + add r0, r5, #0x0 + bl FUN_02243BA8 + b _020426FA +_02042608: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243C5C + b _020426FA +_02042612: + add r0, r5, #0x0 + bl FUN_02243D3C + b _020426FA +_0204261A: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02243DA0 + strh r0, [r4, #0x0] + b _020426FA +_02042626: + add r0, r1, #0x0 + mov r1, #0x17 + bl FUN_02039438 + add r7, #0x80 + add r2, r0, #0x0 + ldr r0, [r7, #0x0] + add r1, r5, #0x0 + ldr r0, [r0, #0x10] + bl FUN_02243DB8 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02042642: + add r0, r5, #0x0 + bl FUN_02243DC0 + strh r0, [r4, #0x0] + b _020426FA +_0204264C: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02243DC4 + b _020426FA +_02042656: + add r0, r5, #0x0 + bl FUN_02243DD8 + strh r0, [r4, #0x0] + b _020426FA +_02042660: + add r0, r5, #0x0 + bl FUN_02243DE0 + strh r0, [r4, #0x0] + b _020426FA +_0204266A: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243E34 + b _020426FA +_02042674: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243F18 + strh r0, [r4, #0x0] + b _020426FA +_02042680: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243F50 + strh r0, [r4, #0x0] + b _020426FA +_0204268C: + ldrb r1, [r5, #0x10] + mov r0, #0xe0 + bic r1, r0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1d + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r5, #0x10] + b _020426FA +_020426A0: + ldrb r0, [r5, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1d + strh r0, [r4, #0x0] + b _020426FA +_020426AA: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243838 + b _020426FA +_020426B4: + add r0, r5, r6 + add r0, #0x2a + ldrb r0, [r0, #0x0] + strh r0, [r4, #0x0] + b _020426FA +_020426BE: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_02243E74 + strh r0, [r4, #0x0] + b _020426FA +_020426CC: + lsl r1, r6, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_0204290C + strh r0, [r4, #0x0] + b _020426FA +_020426DA: + ldr r1, [r1, #0xc] + add r0, r5, #0x0 + bl FUN_02243F9C + strh r0, [r4, #0x0] + b _020426FA +_020426E6: + cmp r5, #0x0 + bne _020426F0 + mov r0, #0x1 + strh r0, [r4, #0x0] + b _020426FA +_020426F0: + mov r0, #0x0 + strh r0, [r4, #0x0] + b _020426FA +_020426F6: + mov r0, #0x0 + strh r0, [r4, #0x0] +_020426FA: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02042700 +FUN_02042700: ; 0x02042700 + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + add r1, #0xa8 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + lsl r2, r6, #0x4 + add r2, r6, r2 + mov r1, #0x38 + lsl r2, r2, #0x4 + mul r1, r7 + add r2, r4, r2 + add r3, r2, r1 + mov r2, #0xb2 + lsl r2, r2, #0x2 + ldrh r1, [r3, r2] + lsl r1, r1, #0x15 + lsr r4, r1, #0x15 + ldr r1, [sp, #0x0] + strh r4, [r1, #0x0] + add r1, r2, #0x4 + ldrh r1, [r3, r1] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02042780 +FUN_02042780: ; 0x02042780 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0205FE10 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020427A8 +FUN_020427A8: ; 0x020427A8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0205FF5C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020427D0 +FUN_020427D0: ; 0x020427D0 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x0 + add r0, #0xa8 + ldr r6, [r0, #0x0] + ldr r0, _0204285C ; =0x00000884 + mov r2, #0x46 + add r0, r6, r0 + blx MI_CpuFill8 + cmp r4, #0x0 + beq _0204281E + cmp r4, #0x1 + beq _02042830 + cmp r4, #0x2 + beq _0204283E + b _0204284C +_0204281E: + add r5, #0x80 + ldr r1, [r5, #0x0] + add r0, r1, #0x0 + add r0, #0xa8 + ldr r0, [r0, #0x0] + ldr r1, [r1, #0xc] + bl FUN_022446FC + b _0204284C +_02042830: + add r5, #0x80 + ldr r0, [r5, #0x0] + add r0, #0xa8 + ldr r0, [r0, #0x0] + bl FUN_02244758 + b _0204284C +_0204283E: + add r5, #0x80 + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + add r0, #0xa8 + ldr r0, [r0, #0x0] + bl FUN_02244770 +_0204284C: + bl FUN_02031190 + ldr r1, _02042860 ; =0x0000083E + add r1, r6, r1 + bl FUN_020316AC + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204285C: .word 0x00000884 +_02042860: .word 0x0000083E + + thumb_func_start FUN_02042864 +FUN_02042864: ; 0x02042864 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x10] + bl FUN_0205FDDC + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02042894 +FUN_02042894: ; 0x02042894 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202A8E4 + add r1, sp, #0x0 + bl FUN_0202A864 + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + strh r1, [r4, #0x0] + ldrb r0, [r0, #0x1] + strh r0, [r6, #0x0] + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_020428E0 +FUN_020428E0: ; 0x020428E0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202A8E4 + bl FUN_0202A74C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204290C +FUN_0204290C: ; 0x0204290C + cmp r1, #0x2 + bne _02042918 + ldrb r0, [r0, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1d + bx lr +_02042918: + cmp r1, #0x1 + bne _0204293E + ldrb r1, [r0, #0xf] + cmp r1, #0x2 + bne _02042930 + ldrb r0, [r0, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1d + lsl r1, r0, #0x1 + ldr r0, _0204294C ; =0x020F4334 + ldrh r0, [r0, r1] + bx lr +_02042930: + ldrb r0, [r0, #0x12] + cmp r0, #0x0 + beq _0204293A + mov r0, #0x61 + bx lr +_0204293A: + mov r0, #0x0 + bx lr +_0204293E: + ldrb r0, [r0, #0x11] + cmp r0, #0x0 + beq _02042948 + mov r0, #0x61 + bx lr +_02042948: + mov r0, #0x0 + bx lr + .balign 4 +_0204294C: .word 0x020F4334 + + thumb_func_start FUN_02042950 +FUN_02042950: ; 0x02042950 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r1, [r5, #0x8] + ldr r0, [r0, #0x0] + add r2, r1, #0x1 + str r2, [r5, #0x8] + ldrb r6, [r1, #0x0] + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r4, [r2, #0x0] + mov r1, #0x26 + bl FUN_02039438 + add r5, #0x80 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_021E2A70 + str r0, [r7, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02042980 +FUN_02042980: ; 0x02042980 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x26 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E29B4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02042998 +FUN_02042998: ; 0x02042998 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x26 + bl FUN_02039438 + add r1, r0, #0x0 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + bl FUN_021E2AD4 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020429B8 +FUN_020429B8: ; 0x020429B8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202A8D8 + mov r1, #0x0 + add r2, r1, #0x0 + bl FUN_0202A3B4 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020429E8 +FUN_020429E8: ; 0x020429E8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202A8D8 + add r1, r5, #0x0 + mov r2, #0x5 + bl FUN_0202A3B4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02042A18 +FUN_02042A18: ; 0x02042A18 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202A8D8 + add r1, r5, #0x0 + mov r2, #0x6 + bl FUN_0202A3B4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02042A48 +FUN_02042A48: ; 0x02042A48 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202A8D8 + mov r1, #0x0 + add r2, r1, #0x0 + bl FUN_0202A3B4 + cmp r0, r6 + bhs _02042A8E + mov r0, #0x0 + b _02042A90 +_02042A8E: + mov r0, #0x1 +_02042A90: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02042A98 +FUN_02042A98: ; 0x02042A98 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + cmp r7, #0x1 + bne _02042AEE + mov r1, #0x1a + b _02042AF0 +_02042AEE: + mov r1, #0x0 +_02042AF0: + add r1, r1, r6 + lsl r2, r1, #0x2 + ldr r1, _02042B04 ; =0x020F433E + ldrh r1, [r1, r2] + strh r1, [r4, #0x0] + ldr r1, _02042B08 ; =0x020F4340 + ldrh r1, [r1, r2] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02042B04: .word 0x020F433E +_02042B08: .word 0x020F4340 + + thumb_func_start FUN_02042B0C +FUN_02042B0C: ; 0x02042B0C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r1, r0, #0x0 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r1, [r1, #0x0] + bl FUN_0204B5FC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02042B40 +FUN_02042B40: ; 0x02042B40 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_0204B63C + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02042B74 +FUN_02042B74: ; 0x02042B74 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_0204B660 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02042BA8 +FUN_02042BA8: ; 0x02042BA8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_0204B684 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02042BDC +FUN_02042BDC: ; 0x02042BDC + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_0204B6A4 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02042C10 +FUN_02042C10: ; 0x02042C10 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_0204B57C + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02042C44 +FUN_02042C44: ; 0x02042C44 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_0204B5A8 + add r0, r6, #0x0 + mov r1, #0x3 + bl FUN_0202A0E8 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02042C8C +FUN_02042C8C: ; 0x02042C8C + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + cmp r0, #0x0 + beq _02042C9E + cmp r0, #0x1 + beq _02042CA8 + b _02042CB2 +_02042C9E: + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_0204B9A0 + b _02042CB6 +_02042CA8: + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_0204B9CC + b _02042CB6 +_02042CB2: + bl ErrorHandling +_02042CB6: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02042CBC +FUN_02042CBC: ; 0x02042CBC + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xa + bl FUN_02039438 + add r1, r0, #0x0 + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r1, [r1, #0x0] + bl FUN_0204B4FC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0202A170 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02042CF0 +FUN_02042CF0: ; 0x02042CF0 + str r1, [r0, #0x0] + str r2, [r0, #0x4] + str r3, [r0, #0x8] + bx lr + + thumb_func_start FUN_02042CF8 +FUN_02042CF8: ; 0x02042CF8 + push {r3, lr} + bl FUN_0202AF9C + bl FUN_0202AFC0 + pop {r3, pc} + + thumb_func_start FUN_02042D04 +FUN_02042D04: ; 0x02042D04 + push {r3, lr} + bl FUN_0202AF9C + bl FUN_0202AFFC + pop {r3, pc} + + thumb_func_start FUN_02042D10 +FUN_02042D10: ; 0x02042D10 + push {r3, lr} + bl FUN_0202AF9C + bl FUN_0202B020 + pop {r3, pc} + + thumb_func_start FUN_02042D1C +FUN_02042D1C: ; 0x02042D1C + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + bl ScriptReadHalfword + cmp r0, #0x8 + bls _02042D2C + b _02042F04 +_02042D2C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02042D38: ; jump table (using 16-bit offset) + .short _02042D4A - _02042D38 - 2; case 0 + .short _02042D74 - _02042D38 - 2; case 1 + .short _02042DA0 - _02042D38 - 2; case 2 + .short _02042DC0 - _02042D38 - 2; case 3 + .short _02042DFC - _02042D38 - 2; case 4 + .short _02042E2E - _02042D38 - 2; case 5 + .short _02042E9A - _02042D38 - 2; case 6 + .short _02042D58 - _02042D38 - 2; case 7 + .short _02042D66 - _02042D38 - 2; case 8 +_02042D4A: + add r4, #0x80 + ldr r0, [r4, #0x0] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl FUN_0202AF70 + b _02042F04 +_02042D58: + add r4, #0x80 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0xc] + bl FUN_0202AF88 + b _02042F04 +_02042D66: + add r4, #0x80 + ldr r0, [r4, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0xc] + bl FUN_0202AF88 + b _02042F04 +_02042D74: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02042CF8 + cmp r0, #0x0 + beq _02042D9A + mov r0, #0x1 + strh r0, [r5, #0x0] + b _02042F04 +_02042D9A: + mov r0, #0x0 + strh r0, [r5, #0x0] + b _02042F04 +_02042DA0: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02042CF8 + strh r0, [r5, #0x0] + b _02042F04 +_02042DC0: + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042CF8 + sub r0, r0, #0x1 + lsl r5, r0, #0x4 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r7, _02042F0C ; =0x020F43E4 + bl FUN_02042D04 + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r2, [r7, r5] + blx r2 + strh r0, [r6, #0x0] + b _02042F04 +_02042DFC: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042CF8 + sub r0, r0, #0x1 + ldr r1, _02042F0C ; =0x020F43E4 + lsl r0, r0, #0x4 + add r5, r1, r0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042D04 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r2, [r5, #0x4] + blx r2 + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_02042D10 + b _02042F04 +_02042E2E: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042CF8 + sub r0, r0, #0x1 + ldr r1, _02042F0C ; =0x020F43E4 + lsl r0, r0, #0x4 + add r5, r1, r0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042D04 + add r4, #0x80 + add r3, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r2, [r6, #0x0] + add r0, sp, #0x14 + bl FUN_02042CF0 + ldr r2, [sp, #0x0] + ldr r3, [r5, #0x8] + add r0, sp, #0x14 + add r1, r7, #0x0 + blx r3 + b _02042F04 +_02042E9A: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042CF8 + sub r0, r0, #0x1 + ldr r1, _02042F0C ; =0x020F43E4 + lsl r0, r0, #0x4 + add r5, r1, r0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02042D04 + add r4, #0x80 + add r3, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r2, [r6, #0x0] + add r0, sp, #0x8 + bl FUN_02042CF0 + ldr r2, [sp, #0x4] + ldr r3, [r5, #0xc] + add r0, sp, #0x8 + add r1, r7, #0x0 + blx r3 +_02042F04: + mov r0, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + nop +_02042F0C: .word 0x020F43E4 + + thumb_func_start FUN_02042F10 +FUN_02042F10: ; 0x02042F10 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + cmp r0, #0x6 + bge _02042F24 + mov r0, #0x1 + pop {r3, pc} +_02042F24: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02042F28 +FUN_02042F28: ; 0x02042F28 + push {r3, lr} + sub sp, #0x8 + add r1, r0, #0x0 + mov r0, #0x2 + str r0, [sp, #0x0] + mov r3, #0x1 + str r3, [sp, #0x4] + ldr r1, [r1, #0xc] + ldr r2, _02042F44 ; =0x000001EA + mov r0, #0x20 + bl FUN_0204A0C8 + add sp, #0x8 + pop {r3, pc} + .balign 4 +_02042F44: .word 0x000001EA + + thumb_func_start FUN_02042F48 +FUN_02042F48: ; 0x02042F48 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r1, #0x0] + mov r0, #0xd + strh r0, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r4, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02042F6C +FUN_02042F6C: ; 0x02042F6C + push {r3-r7, lr} + sub sp, #0x38 + str r0, [sp, #0x4] + bl FUN_02042D04 + str r0, [sp, #0x10] + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + mov r7, #0x0 + add r5, r0, #0x0 + add r4, r0, #0x4 + add r0, r4, #0x0 + mov r1, #0x97 + add r2, r7, #0x0 + add r5, #0xf0 + bl FUN_020671BC + add r1, r7, #0x0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_020671BC + str r0, [sp, #0x14] + add r0, r4, #0x0 + mov r1, #0x7 + add r2, r7, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + blx OS_GetTick + bl FUN_0201BA10 + add r1, r0, #0x0 + ldr r0, [sp, #0x14] + str r1, [sp, #0x34] + cmp r0, #0x0 + beq _02042FE8 + cmp r0, #0x1 + bne _02042FE6 + add r0, r6, #0x0 + bl FUN_02068AAC + cmp r0, #0x0 + beq _02042FE8 +_02042FD0: + ldr r0, [sp, #0x34] + bl FUN_0201BA10 + add r1, r0, #0x0 + add r0, r6, #0x0 + str r1, [sp, #0x34] + bl FUN_02068AAC + cmp r0, #0x0 + bne _02042FD0 + b _02042FE8 +_02042FE6: + str r0, [sp, #0x34] +_02042FE8: + ldr r1, [sp, #0x34] + add r0, r4, #0x0 + bl FUN_0206A23C + add r0, r4, #0x0 + bl FUN_020689E0 + str r0, [sp, #0x30] + add r0, r4, #0x0 + mov r1, #0x6f + add r2, sp, #0x30 + bl FUN_02067830 + add r0, r4, #0x0 + mov r1, #0x4b + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x18] + add r0, r4, #0x0 + mov r1, #0x4a + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x1c] + add r0, r4, #0x0 + mov r1, #0x49 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x20] + add r0, r4, #0x0 + mov r1, #0x48 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x24] + add r0, r4, #0x0 + mov r1, #0x46 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x47 + mov r2, #0x0 + bl FUN_020671BC + add r1, r6, r0 + ldr r0, [sp, #0x24] + add r1, r0, r1 + ldr r0, [sp, #0x20] + add r1, r0, r1 + ldr r0, [sp, #0x1c] + add r1, r0, r1 + ldr r0, [sp, #0x18] + add r0, r0, r1 + str r0, [sp, #0x30] + bne _020430DA + bl FUN_0201B9EC + add r6, r0, #0x0 + mov r0, #0x1f + and r0, r6 + str r0, [sp, #0x34] + add r0, r4, #0x0 + mov r1, #0x46 + add r2, sp, #0x34 + bl FUN_02067830 + mov r0, #0x3e + lsl r0, r0, #0x4 + and r0, r6 + lsr r0, r0, #0x5 + str r0, [sp, #0x34] + add r0, r4, #0x0 + mov r1, #0x47 + add r2, sp, #0x34 + bl FUN_02067830 + mov r0, #0x1f + lsl r0, r0, #0xa + and r0, r6 + lsr r0, r0, #0xa + str r0, [sp, #0x34] + add r0, r4, #0x0 + mov r1, #0x48 + add r2, sp, #0x34 + bl FUN_02067830 + bl FUN_0201B9EC + add r6, r0, #0x0 + mov r0, #0x1f + and r0, r6 + str r0, [sp, #0x34] + add r0, r4, #0x0 + mov r1, #0x49 + add r2, sp, #0x34 + bl FUN_02067830 + mov r0, #0x3e + lsl r0, r0, #0x4 + and r0, r6 + lsr r0, r0, #0x5 + str r0, [sp, #0x34] + add r0, r4, #0x0 + mov r1, #0x4a + add r2, sp, #0x34 + bl FUN_02067830 + mov r0, #0x1f + lsl r0, r0, #0xa + and r0, r6 + lsr r0, r0, #0xa + str r0, [sp, #0x34] + add r0, r4, #0x0 + mov r1, #0x4b + add r2, sp, #0x34 + bl FUN_02067830 +_020430DA: + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_0202A918 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2e + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020430FC + mov r0, #0x49 + bl FUN_0207FCE0 + ldrb r1, [r5, #0x0] + strb r1, [r6, r0] +_020430FC: + add r0, r4, #0x0 + mov r1, #0x2f + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02043114 + mov r0, #0x4a + bl FUN_0207FCE0 + ldrb r1, [r5, #0x1] + strb r1, [r6, r0] +_02043114: + add r0, r4, #0x0 + mov r1, #0x30 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0204312C + mov r0, #0x4b + bl FUN_0207FCE0 + ldrb r1, [r5, #0x2] + strb r1, [r6, r0] +_0204312C: + add r0, r4, #0x0 + mov r1, #0x31 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02043144 + mov r0, #0x4c + bl FUN_0207FCE0 + ldrb r1, [r5, #0x3] + strb r1, [r6, r0] +_02043144: + add r0, r4, #0x0 + mov r1, #0x32 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0204315C + mov r0, #0x4d + bl FUN_0207FCE0 + ldrb r1, [r5, #0x4] + strb r1, [r6, r0] +_0204315C: + add r0, r4, #0x0 + mov r1, #0x33 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02043174 + mov r0, #0x4e + bl FUN_0207FCE0 + ldrb r1, [r5, #0x5] + strb r1, [r6, r0] +_02043174: + add r0, r4, #0x0 + mov r1, #0x34 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0204318C + mov r0, #0x4f + bl FUN_0207FCE0 + ldrb r1, [r5, #0x6] + strb r1, [r6, r0] +_0204318C: + add r0, r4, #0x0 + mov r1, #0x67 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020431A4 + mov r0, #0x19 + bl FUN_0207FCE0 + ldrb r1, [r5, #0x7] + strb r1, [r6, r0] +_020431A4: + add r0, r4, #0x0 + mov r1, #0x68 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020431BC + mov r0, #0x1a + bl FUN_0207FCE0 + ldrb r1, [r5, #0x8] + strb r1, [r6, r0] +_020431BC: + add r0, r4, #0x0 + mov r1, #0x69 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020431D4 + mov r0, #0x1b + bl FUN_0207FCE0 + ldrb r1, [r5, #0x9] + strb r1, [r6, r0] +_020431D4: + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204322C + ldr r0, [sp, #0xc] + mov r1, #0x20 + bl FUN_020239A0 + add r5, r0, #0x0 + ldr r0, [sp, #0xc] + bl FUN_020239BC + str r0, [sp, #0x2c] + ldr r0, [sp, #0xc] + bl FUN_020239CC + str r0, [sp, #0x28] + mov r0, #0x20 + bl FUN_020669C0 + add r7, r0, #0x0 + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_02069B88 + add r0, r7, #0x0 + mov r1, #0x90 + add r2, r5, #0x0 + bl FUN_02067830 + add r0, r7, #0x0 + mov r1, #0x7 + add r2, sp, #0x2c + bl FUN_02067830 + add r0, r7, #0x0 + mov r1, #0x9c + add r2, sp, #0x28 + bl FUN_02067830 + add r0, r5, #0x0 + add r4, r7, #0x0 + bl FUN_02021A20 +_0204322C: + ldr r1, [sp, #0x8] + mov r0, #0x2 + bl FUN_02015CF8 + add r3, r0, #0x0 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r1, [sp, #0xc] + add r0, r4, #0x0 + mov r2, #0x4 + bl FUN_0208089C + add r0, r4, #0x0 + bl FUN_02066ED8 + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B900 + cmp r0, #0x0 + beq _02043266 + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + bl FUN_0202C144 +_02043266: + cmp r7, #0x0 + beq _02043270 + add r0, r7, #0x0 + bl FUN_02016A18 +_02043270: + add sp, #0x38 + pop {r3-r7, pc} + + thumb_func_start FUN_02043274 +FUN_02043274: ; 0x02043274 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + add r7, r0, #0x0 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x7 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + add r0, r7, #0x4 + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x1 + bl FUN_0200ACA4 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020432B4 +FUN_020432B4: ; 0x020432B4 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r1, #0x0] + mov r0, #0x4 + strh r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_020432C0 +FUN_020432C0: ; 0x020432C0 + ldr r3, _020432C4 ; =FUN_02042F6C + bx r3 + .balign 4 +_020432C4: .word FUN_02042F6C + + thumb_func_start FUN_020432C8 +FUN_020432C8: ; 0x020432C8 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + add r7, r0, #0x0 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x8 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + add r0, r7, #0x4 + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x1 + bl FUN_0200AC60 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02043308 +FUN_02043308: ; 0x02043308 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r4, #0x0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED24 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043330 +FUN_02043330: ; 0x02043330 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r4, #0x0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED38 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043358 +FUN_02043358: ; 0x02043358 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + ldr r0, [r0, #0x0] + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x9 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x4] + mov r1, #0x1 + add r2, r7, #0x0 + bl FUN_0200AE38 + pop {r3-r7, pc} + + thumb_func_start FUN_02043394 +FUN_02043394: ; 0x02043394 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + ldr r0, [r0, #0xc] + add r6, r2, #0x0 + bl FUN_0206F158 + ldr r0, [r5, #0x0] + bl FUN_02042D04 + ldr r0, [r0, #0x0] + mov r1, #0x0 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x5 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x4] + bl FUN_0200AE38 + pop {r4-r6, pc} + + thumb_func_start FUN_020433C4 +FUN_020433C4: ; 0x020433C4 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020433C8 +FUN_020433C8: ; 0x020433C8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02042D04 + add r1, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02023BD4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020433DC +FUN_020433DC: ; 0x020433DC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + add r7, r0, #0x0 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0xa + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + add r0, r7, #0x0 + mov r1, #0x20 + bl FUN_02023AF4 + add r4, r0, #0x0 + mov r1, #0x1 + str r1, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, [r5, #0x4] + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02043430 +FUN_02043430: ; 0x02043430 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r1, #0x0] + mov r0, #0x6 + strh r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_0204343C +FUN_0204343C: ; 0x0204343C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + bl FUN_02025DB0 + cmp r0, #0xc8 + bge _02043450 + mov r0, #0x1 + pop {r3, pc} +_02043450: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02043454 +FUN_02043454: ; 0x02043454 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02042D04 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02026CC4 + ldr r1, [r4, #0x0] + bl FUN_02025D6C + pop {r3-r5, pc} + + thumb_func_start FUN_0204346C +FUN_0204346C: ; 0x0204346C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + ldr r7, [r0, #0x0] + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0xb + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x4] + mov r1, #0x1 + add r2, r7, #0x0 + bl FUN_0200B350 + pop {r3-r7, pc} + + thumb_func_start FUN_020434A4 +FUN_020434A4: ; 0x020434A4 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r1, #0x0] + mov r0, #0x6 + strh r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_020434B0 +FUN_020434B0: ; 0x020434B0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02042D04 + ldr r4, [r0, #0x4] + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _020434CA + cmp r0, #0x2 + beq _020434DA + cmp r0, #0x3 + beq _020434DE + b _020434E2 +_020434CA: + ldr r0, [r5, #0xc] + bl FUN_02029C80 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_02029DD4 + pop {r3-r5, pc} +_020434DA: + mov r0, #0x1 + pop {r3-r5, pc} +_020434DE: + mov r0, #0x1 + pop {r3-r5, pc} +_020434E2: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020434E8 +FUN_020434E8: ; 0x020434E8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02042D04 + ldr r4, [r0, #0x4] + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _02043502 + cmp r0, #0x2 + beq _02043512 + cmp r0, #0x3 + beq _02043526 + pop {r3-r5, pc} +_02043502: + ldr r0, [r5, #0xc] + bl FUN_02029C80 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_02029D44 + pop {r3-r5, pc} +_02043512: + ldr r0, [r5, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020271A4 + pop {r3-r5, pc} +_02043526: + ldr r0, [r5, #0xc] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + bl FUN_02027264 + pop {r3-r5, pc} + + thumb_func_start FUN_02043538 +FUN_02043538: ; 0x02043538 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + ldr r2, [r0, #0x4] + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _02043558 + cmp r0, #0x2 + beq _02043562 + cmp r0, #0x3 + beq _0204356C + b _02043574 +_02043558: + ldr r0, [r5, #0x4] + mov r1, #0x1 + bl FUN_0200B534 + b _02043574 +_02043562: + ldr r0, [r5, #0x4] + mov r1, #0x1 + bl FUN_0200B660 + b _02043574 +_0204356C: + ldr r0, [r5, #0x4] + mov r1, #0x1 + bl FUN_0200B6D0 +_02043574: + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0xc + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02043594 +FUN_02043594: ; 0x02043594 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r1, #0x0] + mov r0, #0x6 + strh r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_020435A0 +FUN_020435A0: ; 0x020435A0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + ldr r1, _020435C0 ; =0x000001C6 + add r0, r4, #0x0 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED24 + pop {r3-r5, pc} + .balign 4 +_020435C0: .word 0x000001C6 + + thumb_func_start FUN_020435C4 +FUN_020435C4: ; 0x020435C4 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206F158 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02042D04 + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + ldr r1, _020435F4 ; =0x000001C6 + add r0, r5, #0x0 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED38 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205F478 + pop {r3-r5, pc} + .balign 4 +_020435F4: .word 0x000001C6 + + thumb_func_start FUN_020435F8 +FUN_020435F8: ; 0x020435F8 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0xe + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x4] + ldr r2, _02043630 ; =0x000001C6 + mov r1, #0x1 + bl FUN_0200AE38 + pop {r4-r6, pc} + nop +_02043630: .word 0x000001C6 + + thumb_func_start FUN_02043634 +FUN_02043634: ; 0x02043634 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + ldr r0, [r0, #0xc] + add r6, r2, #0x0 + bl FUN_0206F158 + ldr r0, [r5, #0x0] + bl FUN_02042D04 + mov r2, #0x53 + lsl r2, r2, #0x2 + strh r2, [r4, #0x0] + mov r0, #0x5 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x4] + mov r1, #0x0 + add r2, #0x7a + bl FUN_0200AE38 + pop {r4-r6, pc} + + thumb_func_start FUN_02043660 +FUN_02043660: ; 0x02043660 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + mov r1, #0x71 + add r0, r4, #0x0 + lsl r1, r1, #0x2 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED24 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043684 +FUN_02043684: ; 0x02043684 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206F158 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02042D04 + ldr r0, [r4, #0xc] + bl FUN_020462AC + mov r1, #0x71 + add r4, r0, #0x0 + add r0, r5, #0x0 + lsl r1, r1, #0x2 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED38 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0205F478 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020436B8 +FUN_020436B8: ; 0x020436B8 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0xf + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + mov r2, #0x71 + ldr r0, [r5, #0x4] + mov r1, #0x1 + lsl r2, r2, #0x2 + bl FUN_0200AE38 + pop {r4-r6, pc} + + thumb_func_start FUN_020436F0 +FUN_020436F0: ; 0x020436F0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + ldr r0, [r0, #0xc] + add r6, r2, #0x0 + bl FUN_0206F158 + ldr r0, [r5, #0x0] + bl FUN_02042D04 + mov r2, #0x53 + lsl r2, r2, #0x2 + strh r2, [r4, #0x0] + mov r0, #0x5 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x4] + mov r1, #0x0 + add r2, #0x78 + bl FUN_0200AE38 + pop {r4-r6, pc} + + thumb_func_start FUN_0204371C +FUN_0204371C: ; 0x0204371C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + ldr r1, _0204373C ; =0x000001C7 + add r0, r4, #0x0 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED24 + pop {r3-r5, pc} + .balign 4 +_0204373C: .word 0x000001C7 + + thumb_func_start FUN_02043740 +FUN_02043740: ; 0x02043740 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206F158 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02042D04 + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + ldr r1, _02043770 ; =0x000001C7 + add r0, r5, #0x0 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206ED38 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0205F478 + pop {r3-r5, pc} + .balign 4 +_02043770: .word 0x000001C7 + + thumb_func_start FUN_02043774 +FUN_02043774: ; 0x02043774 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x10 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x4] + ldr r2, _020437AC ; =0x000001C7 + mov r1, #0x1 + bl FUN_0200AE38 + pop {r4-r6, pc} + nop +_020437AC: .word 0x000001C7 + + thumb_func_start FUN_020437B0 +FUN_020437B0: ; 0x020437B0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + ldr r0, [r0, #0xc] + add r6, r2, #0x0 + bl FUN_0206F158 + ldr r0, [r5, #0x0] + bl FUN_02042D04 + mov r2, #0x53 + lsl r2, r2, #0x2 + strh r2, [r4, #0x0] + mov r0, #0x5 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x4] + mov r1, #0x0 + add r2, #0x7b + bl FUN_0200AE38 + pop {r4-r6, pc} + + thumb_func_start FUN_020437DC +FUN_020437DC: ; 0x020437DC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + add r0, r4, #0x0 + bl FUN_0204BEC8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020437F8 +FUN_020437F8: ; 0x020437F8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02042D04 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_0204BED8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043818 +FUN_02043818: ; 0x02043818 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + add r7, r0, #0x0 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x12 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x4] + ldr r2, [r7, #0x0] + mov r1, #0x1 + bl FUN_0200B02C + pop {r3-r7, pc} + + thumb_func_start FUN_02043850 +FUN_02043850: ; 0x02043850 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02042D04 + mov r0, #0x53 + lsl r0, r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x13 + strh r0, [r6, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r5, #0x4] + mov r1, #0x0 + bl FUN_0200ABC0 + pop {r4-r6, pc} + + thumb_func_start FUN_0204387C +FUN_0204387C: ; 0x0204387C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + cmp r0, #0x0 + bne _020438B2 + add r0, r4, #0x0 + bl FUN_0205F224 + add r5, #0x80 + ldr r0, [r5, #0x0] + bl FUN_0204B9EC + b _020438CA +_020438B2: + cmp r0, #0x1 + bne _020438C6 + add r0, r4, #0x0 + bl FUN_0205F234 + add r5, #0x80 + ldr r0, [r5, #0x0] + bl FUN_0204BA1C + b _020438CA +_020438C6: + bl ErrorHandling +_020438CA: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020438D0 +FUN_020438D0: ; 0x020438D0 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022528 + add r6, r0, #0x0 + mov r0, #0x20 + bl FUN_020669C0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0202C000 + cmp r0, #0x6 + bne _02043908 + mov r0, #0x1 + b _0204390A +_02043908: + mov r0, #0x0 +_0204390A: + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02043918 +FUN_02043918: ; 0x02043918 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022528 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022510 + str r0, [sp, #0x8] + mov r0, #0x20 + bl FUN_020669C0 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + mov r5, #0x0 +_0204395C: + add r0, r7, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0202BFD8 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + mov r2, #0x2 + mov r3, #0x0 + bl FUN_0208089C + add r0, r4, #0x0 + bl FUN_020690E4 + add r1, r0, #0x0 + ldr r0, [sp, #0x8] + bl FUN_0206B20C + cmp r0, #0x0 + bne _0204398C + bl ErrorHandling +_0204398C: + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + bl FUN_0202C144 + add r5, r5, #0x1 + cmp r5, #0x6 + blt _0204395C + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r7, #0x0 + bl FUN_0202BEDC + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020439B4 +FUN_020439B4: ; 0x020439B4 + push {r3-r7, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + cmp r6, #0x3 + bhi _02043A40 + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020439EE: ; jump table (using 16-bit offset) + .short _020439F6 - _020439EE - 2; case 0 + .short _02043A02 - _020439EE - 2; case 1 + .short _02043A0E - _020439EE - 2; case 2 + .short _02043A1A - _020439EE - 2; case 3 +_020439F6: + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_0204BAC4 + strh r0, [r5, #0x0] + b _02043A40 +_02043A02: + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_0204BAD4 + strh r0, [r5, #0x0] + b _02043A40 +_02043A0E: + add r4, #0x80 + ldr r0, [r4, #0x0] + bl FUN_0204BAE4 + strh r0, [r5, #0x0] + b _02043A40 +_02043A1A: + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0204BAD4 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_0204BAC4 + add r4, #0x80 + add r7, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204BAE4 + add r0, r7, r0 + add r0, r6, r0 + strh r0, [r5, #0x0] +_02043A40: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02043A44 +FUN_02043A44: ; 0x02043A44 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x26 + bl FUN_02039438 + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_021E2950 + str r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02043A94 +FUN_02043A94: ; 0x02043A94 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x26 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E29B4 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02043AAC +FUN_02043AAC: ; 0x02043AAC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x26 + bl FUN_02039438 + add r1, r0, #0x0 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + bl FUN_021E29C8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02043ACC +FUN_02043ACC: ; 0x02043ACC + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202390C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02028930 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043AFC +FUN_02043AFC: ; 0x02043AFC + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202390C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02028934 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02043B28 +FUN_02043B28: ; 0x02043B28 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202390C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202896C + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02043B54 +FUN_02043B54: ; 0x02043B54 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202390C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r1, r0, #0x0 + ldrh r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_0202896C + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043B84 +FUN_02043B84: ; 0x02043B84 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + ldr r0, [r5, #0xc] + bl FUN_0202390C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadWord + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02028930 + cmp r0, r4 + bhs _02043BC8 + mov r0, #0x0 + b _02043BCA +_02043BC8: + mov r0, #0x1 +_02043BCA: + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02043BD0 +FUN_02043BD0: ; 0x02043BD0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + ldr r0, [r4, #0xc] + bl FUN_0202390C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + ldrh r5, [r0, #0x0] + add r0, r6, #0x0 + bl FUN_02028930 + cmp r0, r5 + bhs _02043C1E + mov r0, #0x0 + b _02043C20 +_02043C1E: + mov r0, #0x1 +_02043C20: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02043C28 +FUN_02043C28: ; 0x02043C28 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0202390C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02028954 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02043C6C +FUN_02043C6C: ; 0x02043C6C + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadWord + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02023A30 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02043C90 +FUN_02043C90: ; 0x02043C90 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadWord + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02023A54 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02043CB4 +FUN_02043CB4: ; 0x02043CB4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02023A54 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043CE4 +FUN_02043CE4: ; 0x02043CE4 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadWord + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02023A10 + cmp r0, r4 + bhs _02043D20 + mov r0, #0x0 + b _02043D22 +_02043D20: + mov r0, #0x1 +_02043D22: + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02043D28 +FUN_02043D28: ; 0x02043D28 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02023A10 + cmp r0, r4 + bhs _02043D6E + mov r0, #0x0 + b _02043D70 +_02043D6E: + mov r0, #0x1 +_02043D70: + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02043D78 +FUN_02043D78: ; 0x02043D78 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x27 + bl FUN_02039438 + lsl r1, r6, #0x18 + lsl r2, r7, #0x18 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl FUN_021E27E8 + str r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02043DC8 +FUN_02043DC8: ; 0x02043DC8 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x27 + bl FUN_02039438 + ldr r0, [r0, #0x0] + bl FUN_021E288C + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02043DE0 +FUN_02043DE0: ; 0x02043DE0 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x27 + bl FUN_02039438 + add r1, r0, #0x0 + add r4, #0x80 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + bl FUN_021E28A0 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02043E00 +FUN_02043E00: ; 0x02043E00 + push {r3-r5, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + ldr r5, [r0, #0xc] + bl FUN_02039438 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02023D58 + ldr r1, [r4, #0x0] + bl FUN_021ED4E0 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02043E20 +FUN_02043E20: ; 0x02043E20 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_02022610 + bl FUN_021ED5EC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02043E50 +FUN_02043E50: ; 0x02043E50 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x8 + ldr r0, [r0, #0xc] + bl FUN_02022610 + bl FUN_021ECD64 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02043E68 +FUN_02043E68: ; 0x02043E68 + push {r4-r6, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0x8 + ldr r0, [r5, #0xc] + bl FUN_02022610 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + add r2, r0, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_021ED0CC + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02043E9C +FUN_02043E9C: ; 0x02043E9C + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xf + add r0, r5, #0x0 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + ldr r6, [r5, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x8 + bl FUN_02022610 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + lsl r3, r4, #0x18 + ldr r1, [r7, #0x0] + add r2, r6, #0x0 + lsr r3, r3, #0x18 + bl FUN_021EC71C + ldr r1, [sp, #0x0] + strh r0, [r1, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02043EFC +FUN_02043EFC: ; 0x02043EFC + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xf + add r0, r5, #0x0 + bl FUN_02039438 + add r7, r0, #0x0 + add r0, r4, #0x0 + ldr r5, [r5, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + bl FUN_02022610 + lsl r1, r4, #0x18 + ldr r2, [r7, #0x0] + lsr r1, r1, #0x18 + bl FUN_021EC854 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02043F50 +FUN_02043F50: ; 0x02043F50 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + ldr r4, [r0, #0xc] + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_02022610 + ldr r2, [r6, #0x0] + add r1, r5, #0x0 + bl FUN_021EC864 + strh r0, [r7, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02043FA0 +FUN_02043FA0: ; 0x02043FA0 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + mov r1, #0xf + add r0, r5, #0x0 + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + ldr r2, [r6, #0x0] + add r1, r7, #0x0 + bl FUN_021ED5C4 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02043FF4 +FUN_02043FF4: ; 0x02043FF4 + push {r4-r6, lr} + add r6, r0, #0x0 + add r1, r6, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + ldr r5, [r4, #0xc] + bl ScriptReadHalfword + add r6, #0x80 + add r1, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + bl FUN_02022610 + lsl r1, r6, #0x18 + add r2, r0, #0x0 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + add r3, r5, #0x0 + bl FUN_021EC57C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02044034 +FUN_02044034: ; 0x02044034 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0xf + ldr r5, [r0, #0xc] + bl FUN_02039438 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02023D58 + lsl r1, r4, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + ldr r1, [r6, #0x0] + ldr r2, [sp, #0x8] + ldr r3, [sp, #0xc] + str r1, [sp, #0x4] + lsl r1, r7, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_021ED52C + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_020440C0 +FUN_020440C0: ; 0x020440C0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_02022610 + bl FUN_021ED644 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020440F0 +FUN_020440F0: ; 0x020440F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_02022610 + bl FUN_02023C90 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02044120 +FUN_02044120: ; 0x02044120 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02044138 +FUN_02044138: ; 0x02044138 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0204413C +FUN_0204413C: ; 0x0204413C + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02044140 +FUN_02044140: ; 0x02044140 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02044158 +FUN_02044158: ; 0x02044158 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F54C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0204416C +FUN_0204416C: ; 0x0204416C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F55C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02044198 +FUN_02044198: ; 0x02044198 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0xf + bhs _020441D6 + mov r0, #0x0 + b _02044218 +_020441D6: + cmp r0, #0x1e + bhs _020441DE + mov r0, #0x1 + b _02044218 +_020441DE: + cmp r0, #0x2d + bhs _020441E6 + mov r0, #0x2 + b _02044218 +_020441E6: + cmp r0, #0x3c + bhs _020441EE + mov r0, #0x3 + b _02044218 +_020441EE: + cmp r0, #0x46 + bhs _020441F6 + mov r0, #0x4 + b _02044218 +_020441F6: + cmp r0, #0x50 + bhs _020441FE + mov r0, #0x5 + b _02044218 +_020441FE: + cmp r0, #0x58 + bhs _02044206 + mov r0, #0x6 + b _02044218 +_02044206: + cmp r0, #0x5d + bhs _0204420E + mov r0, #0x7 + b _02044218 +_0204420E: + cmp r0, #0x62 + bhs _02044216 + mov r0, #0x8 + b _02044218 +_02044216: + mov r0, #0x9 +_02044218: + ldr r2, _020442B4 ; =0x0000011D + cmp r5, r2 + bgt _02044244 + bge _02044290 + cmp r5, #0x27 + bgt _02044236 + cmp r5, #0x23 + blt _02044230 + beq _02044284 + cmp r5, #0x27 + beq _02044290 + b _0204429C +_02044230: + cmp r5, #0x19 + beq _02044294 + b _0204429C +_02044236: + cmp r5, #0x36 + bgt _0204423E + beq _0204428C + b _0204429C +_0204423E: + cmp r5, #0xff + beq _02044288 + b _0204429C +_02044244: + add r1, r2, #0x0 + add r1, #0x8c + cmp r5, r1 + bgt _0204426C + add r1, r2, #0x0 + add r1, #0x8c + cmp r5, r1 + bge _02044288 + add r1, r2, #0x0 + add r1, #0xf + cmp r5, r1 + bgt _02044264 + add r2, #0xf + cmp r5, r2 + beq _02044284 + b _0204429C +_02044264: + add r2, #0x84 + cmp r5, r2 + beq _0204428C + b _0204429C +_0204426C: + add r1, r2, #0x0 + add r1, #0x8e + cmp r5, r1 + bgt _0204427C + add r2, #0x8e + cmp r5, r2 + beq _02044298 + b _0204429C +_0204427C: + add r2, #0x9b + cmp r5, r2 + beq _02044298 + b _0204429C +_02044284: + mov r2, #0x0 + b _0204429E +_02044288: + mov r2, #0x1 + b _0204429E +_0204428C: + mov r2, #0x2 + b _0204429E +_02044290: + mov r2, #0x3 + b _0204429E +_02044294: + mov r2, #0x4 + b _0204429E +_02044298: + mov r2, #0x5 + b _0204429E +_0204429C: + mov r2, #0x0 +_0204429E: + add r3, r2, #0x0 + mov r1, #0x14 + mul r3, r1 + ldr r2, _020442B8 ; =0x020F4494 + lsl r1, r0, #0x1 + add r0, r2, r3 + ldrh r0, [r1, r0] + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + nop +_020442B4: .word 0x0000011D +_020442B8: .word 0x020F4494 + + thumb_func_start FUN_020442BC +FUN_020442BC: ; 0x020442BC + push {r4-r7, lr} + sub sp, #0x14 + add r4, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x10] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + ldr r0, [sp, #0x10] + lsl r3, r7, #0x18 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + mov r0, #0xc + str r0, [sp, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [sp, #0xc] + mov r0, #0xb + lsr r3, r3, #0x18 + bl FUN_0204A048 + strh r0, [r4, #0x0] + mov r0, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0204434C +FUN_0204434C: ; 0x0204434C + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + ldrh r1, [r6, #0x0] + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _020443A0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + b _020443A2 +_020443A0: + mov r0, #0x0 +_020443A2: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020443A8 +FUN_020443A8: ; 0x020443A8 + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, #0x80 + ldr r5, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + ldrh r1, [r6, #0x0] + bl FUN_0206B9B0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r7, #0x0 + bl FUN_020239BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r5, r0 + bne _0204440C + mov r0, #0x0 + b _0204440E +_0204440C: + mov r0, #0x1 +_0204440E: + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02044414 +FUN_02044414: ; 0x02044414 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + ldr r0, [r4, #0xc] + bl FUN_020238F4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r6, r0, #0x0 + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x6 + bhs _02044494 + mov r0, #0xb + bl FUN_020669C0 + add r4, r0, #0x0 + bl FUN_02066978 + mov r0, #0x1 + add r1, r5, #0x0 + bl FUN_02015CF8 + mov r1, #0x3 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + ldr r1, [sp, #0x8] + add r0, r4, #0x0 + mov r2, #0x1 + add r3, r7, #0x0 + bl FUN_021ECF14 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0206B900 + add r0, r4, #0x0 + bl FUN_02016A18 +_02044494: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0204449C +FUN_0204449C: ; 0x0204449C + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_0204A120 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020444F4 +FUN_020444F4: ; 0x020444F4 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r2, #0x0 + mov r1, #0x4c + add r4, r0, #0x0 + strh r2, [r6, #0x0] + bl FUN_020671BC + cmp r0, #0x0 + beq _02044556 + mov r0, #0x0 + pop {r3-r7, pc} +_02044556: + add r0, r4, #0x0 + mov r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _0204458E + add r0, r4, #0x0 + mov r1, #0x37 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _0204458E + add r0, r4, #0x0 + mov r1, #0x38 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _0204458E + add r0, r4, #0x0 + mov r1, #0x39 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + bne _02044592 +_0204458E: + mov r0, #0x1 + strh r0, [r6, #0x0] +_02044592: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02044598 +FUN_02044598: ; 0x02044598 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + str r1, [sp, #0x4] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r1, _02044650 ; =0x00000006 + ldr r0, [sp, #0x0] + ldr r6, _02044654 ; =0x00000000 + strh r1, [r0, #0x0] + beq _02044648 +_020445E4: + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204463E + add r0, r4, #0x0 + mov r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _02044638 + add r0, r4, #0x0 + mov r1, #0x37 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _02044638 + add r0, r4, #0x0 + mov r1, #0x38 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _02044638 + add r0, r4, #0x0 + mov r1, #0x39 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + bne _0204463E +_02044638: + ldr r0, [sp, #0x0] + strh r6, [r0, #0x0] + b _02044648 +_0204463E: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, r7 + blo _020445E4 +_02044648: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + nop +_02044650: .word 0x00000006 +_02044654: .word 0x00000000 + + thumb_func_start FUN_02044658 +FUN_02044658: ; 0x02044658 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + bl FUN_0204A32C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0204469C +FUN_0204469C: ; 0x0204469C + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + mov r4, #0x0 + ldr r0, [sp, #0x4] + add r5, r4, #0x0 + strh r4, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bls _02044726 +_020446EA: + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204471A + add r0, r6, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x0] + cmp r0, r1 + bhi _0204471A + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0204471A: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x8] + cmp r4, r0 + blo _020446EA +_02044726: + ldr r0, [sp, #0x4] + strh r5, [r0, #0x0] + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02044730 +FUN_02044730: ; 0x02044730 + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r2, #0x0 + mov r1, #0x4c + add r5, r0, #0x0 + strh r2, [r4, #0x0] + bl FUN_020671BC + cmp r0, #0x0 + bne _02044786 + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r4, #0x0] +_02044786: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204478C +FUN_0204478C: ; 0x0204478C + push {r4-r6, lr} + add r6, r0, #0x0 + add r1, r6, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl ScriptReadHalfword + add r6, #0x80 + add r1, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r6, r0 + blt _020447D2 + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_020447D2: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020447F2 + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_020447F2: + add r0, r5, #0x0 + bl FUN_02068854 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02044800 +FUN_02044800: ; 0x02044800 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r1, _02044884 ; =0x000000FF + ldr r0, [sp, #0x4] + ldr r5, _02044888 ; =0x00000000 + strh r1, [r0, #0x0] + beq _0204487E +_02044848: + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02044874 + add r0, r4, #0x0 + bl FUN_02068854 + ldr r1, [sp, #0x0] + cmp r1, r0 + bne _02044874 + ldr r0, [sp, #0x4] + strh r5, [r0, #0x0] + b _0204487E +_02044874: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _02044848 +_0204487E: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02044884: .word 0x000000FF +_02044888: .word 0x00000000 + + thumb_func_start FUN_0204488C +FUN_0204488C: ; 0x0204488C + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020448D4 +FUN_020448D4: ; 0x020448D4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + add r7, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + ldr r1, [sp, #0x0] + bl FUN_0206B9B0 + mov r1, #0x9 + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + add r1, sp, #0x4 + strh r0, [r1, #0x0] + cmp r4, #0x0 + beq _02044982 + add r0, r5, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1 + mov r2, #0xb + bl FUN_0206E7B8 + cmp r0, #0x34 + bne _0204495A + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0204495A: + add r0, r5, #0x0 + mov r1, #0x9a + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0xb + bne _0204496E + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_0204496E: + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + cmp r7, r0 + bne _02044982 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02044982: + add r0, sp, #0x4 + ldrh r1, [r0, #0x0] + add r1, r1, r4 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + cmp r1, #0xff + bls _02044994 + mov r1, #0xff + strh r1, [r0, #0x0] +_02044994: + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x4 + bl FUN_02067830 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_020449A4 +FUN_020449A4: ; 0x020449A4 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x9 + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + add r1, sp, #0x0 + strh r0, [r1, #0x0] + ldrh r0, [r1, #0x0] + cmp r4, r0 + bls _020449F8 + mov r0, #0x0 + b _020449FA +_020449F8: + sub r0, r0, r4 +_020449FA: + strh r0, [r1, #0x0] + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_02044A0C +FUN_02044A0C: ; 0x02044A0C + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + add r4, #0x13 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02044A6C +FUN_02044A6C: ; 0x02044A6C + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02054DEC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02044A94 +FUN_02044A94: ; 0x02044A94 + push {r3-r7, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + add r4, r0, #0x0 + mov r1, #0xb0 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r6, #0x0] + add r0, r4, #0x0 + mov r1, #0xb1 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r7, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02044B00 +FUN_02044B00: ; 0x02044B00 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02044B2C +FUN_02044B2C: ; 0x02044B2C + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + mov r5, #0x0 + add r7, r0, #0x0 + add r4, r5, #0x0 + cmp r7, #0x0 + ble _02044B7A +_02044B5A: + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02044B74 + add r4, r4, #0x1 +_02044B74: + add r5, r5, #0x1 + cmp r5, r7 + blt _02044B5A +_02044B7A: + ldr r0, [sp, #0x0] + strh r4, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02044B84 +FUN_02044B84: ; 0x02044B84 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + mov r5, #0x0 + add r4, r5, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _02044C00 +_02044BC8: + ldr r0, [sp, #0x0] + cmp r5, r0 + beq _02044BF8 + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02044BF8 + add r0, r6, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044BF8 + add r4, r4, #0x1 +_02044BF8: + ldr r0, [sp, #0x8] + add r5, r5, #0x1 + cmp r5, r0 + blt _02044BC8 +_02044C00: + ldr r0, [sp, #0x4] + strh r4, [r0, #0x0] + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02044C0C +FUN_02044C0C: ; 0x02044C0C + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + ldr r0, [r7, #0xc] + bl FUN_02022510 + str r0, [sp, #0x4] + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + mov r5, #0x0 + add r4, r5, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _02044C76 +_02044C44: + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02044C6E + add r0, r6, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044C6E + add r4, r4, #0x1 +_02044C6E: + ldr r0, [sp, #0x8] + add r5, r5, #0x1 + cmp r5, r0 + blt _02044C44 +_02044C76: + ldr r0, [sp, #0x4] + bl FUN_0206B57C + add r1, r4, r0 + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02044C88 +FUN_02044C88: ; 0x02044C88 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + mov r5, #0x0 + add r7, r0, #0x0 + add r4, r5, #0x0 + cmp r7, #0x0 + ble _02044CD6 +_02044CB6: + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044CD0 + add r4, r4, #0x1 +_02044CD0: + add r5, r5, #0x1 + cmp r5, r7 + blt _02044CB6 +_02044CD6: + ldr r0, [sp, #0x0] + strh r4, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02044CE0 +FUN_02044CE0: ; 0x02044CE0 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r4, _02044D40 ; =0x00000000 + ldr r0, [sp, #0x0] + strh r4, [r0, #0x0] + beq _02044D3C + mov r7, #0x99 +_02044D12: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044D32 + ldr r0, [sp, #0x0] + mov r1, #0x1 + strh r1, [r0, #0x0] + b _02044D3C +_02044D32: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r6 + blo _02044D12 +_02044D3C: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02044D40: .word 0x00000000 + + thumb_func_start FUN_02044D44 +FUN_02044D44: ; 0x02044D44 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02044D8C +FUN_02044D8C: ; 0x02044D8C + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044DDA + mov r0, #0x0 + strh r0, [r5, #0x0] + pop {r4-r6, pc} +_02044DDA: + mov r4, #0x0 + add r0, r6, #0x0 + mov r1, #0x36 + add r2, r4, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044DF0 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02044DF0: + add r0, r6, #0x0 + mov r1, #0x37 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044E04 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02044E04: + add r0, r6, #0x0 + mov r1, #0x38 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044E18 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02044E18: + add r0, r6, #0x0 + mov r1, #0x39 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02044E2C + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02044E2C: + strh r4, [r5, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02044E34 +FUN_02044E34: ; 0x02044E34 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + add r1, r4, #0x0 + bl FUN_020699A4 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02044E78 +FUN_02044E78: ; 0x02044E78 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + add r4, #0x36 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02044ED8 +FUN_02044ED8: ; 0x02044ED8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02044F20 +FUN_02044F20: ; 0x02044F20 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r4, [r1, #0x0] + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r2, #0x0 + add r1, sp, #0x0 + strh r2, [r1, #0x0] + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02044F58 +FUN_02044F58: ; 0x02044F58 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r5, _02044FE4 ; =0x00000000 + ldr r0, [sp, #0x4] + strh r5, [r0, #0x0] + beq _02044FDE +_02044F9E: + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02044FD4 + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x0] + cmp r0, r1 + bne _02044FD4 + ldr r0, [sp, #0x4] + mov r1, #0x1 + strh r1, [r0, #0x0] + b _02044FDE +_02044FD4: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _02044F9E +_02044FDE: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02044FE4: .word 0x00000000 + + thumb_func_start FUN_02044FE8 +FUN_02044FE8: ; 0x02044FE8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r4, #0x0 + add r6, r0, #0x0 + add r5, r4, #0x0 + add r7, r4, #0x0 +_0204502A: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0x0 + bl FUN_0207FC5C + add r1, r0, #0x0 + add r0, r6, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02045048 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_02045048: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x50 + blo _0204502A + ldr r0, [sp, #0x0] + strh r5, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204505C +FUN_0204505C: ; 0x0204505C + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x10 + add r4, #0x80 + lsr r6, r0, #0x10 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0x4] +_0204509A: + mov r5, #0x0 + cmp r6, #0x0 + bls _020450E8 + ldr r0, [sp, #0x8] + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_020450A6: + ldr r0, [sp, #0xc] + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _020450E8 + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_0207FC5C + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020450DE + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + b _020450E8 +_020450DE: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, r6 + blo _020450A6 +_020450E8: + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x8] + cmp r0, #0x50 + blo _0204509A + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02045104 +FUN_02045104: ; 0x02045104 + push {r3-r7, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + add r5, r0, #0x0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x0 + bl FUN_0207FC5C + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02045170 +FUN_02045170: ; 0x02045170 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + mov r1, #0x1 + add r0, sp, #0x0 + add r5, #0x80 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + add r5, r0, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x0 + bl FUN_0207FC5C + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_020451D0 +FUN_020451D0: ; 0x020451D0 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x10 + add r4, #0x80 + lsr r6, r0, #0x10 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x4] +_0204520C: + mov r5, #0x0 + cmp r6, #0x0 + bls _0204524C +_02045212: + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02045242 + add r0, r4, #0x0 + mov r1, #0x3 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02045242 + ldr r0, [sp, #0x0] + mov r1, #0x1 + strh r1, [r0, #0x0] + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_02045242: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, r6 + blo _02045212 +_0204524C: + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + cmp r0, #0x50 + blo _0204520C + ldr r1, [sp, #0x0] + mov r0, #0x0 + strh r0, [r1, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02045264 +FUN_02045264: ; 0x02045264 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02045268 +FUN_02045268: ; 0x02045268 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r6, [r1, #0x0] + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r4, #0x0 + ldr r7, _020452B0 ; =0x020F450C + str r0, [sp, #0x0] + add r5, r4, #0x0 +_02045288: + ldr r0, [r6, #0xc] + bl FUN_0206F158 + lsl r1, r4, #0x2 + ldrh r1, [r7, r1] + mov r2, #0x4 + bl FUN_0206EEF8 + add r0, r5, r0 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x7 + blo _02045288 + ldr r0, [sp, #0x0] + strh r5, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_020452B0: .word 0x020F450C + + thumb_func_start FUN_020452B4 +FUN_020452B4: ; 0x020452B4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394F0 + mov r5, #0x0 + ldr r2, _02045300 ; =0x020F450C + strh r5, [r4, #0x0] +_020452E0: + lsl r3, r5, #0x2 + ldrh r1, [r2, r3] + cmp r0, r1 + bne _020452F0 + ldr r0, _02045304 ; =0x020F450E + ldrh r0, [r0, r3] + strh r0, [r4, #0x0] + b _020452FA +_020452F0: + add r1, r5, #0x1 + lsl r1, r1, #0x10 + lsr r5, r1, #0x10 + cmp r5, #0x7 + blo _020452E0 +_020452FA: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02045300: .word 0x020F450C +_02045304: .word 0x020F450E + + thumb_func_start FUN_02045308 +FUN_02045308: ; 0x02045308 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r7, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394F0 + str r0, [sp, #0x0] + mov r4, #0x0 + ldr r0, [sp, #0x8] + add r6, r4, #0x0 + strh r4, [r0, #0x0] + ldr r0, [sp, #0x4] + strh r4, [r0, #0x0] +_02045358: + ldr r0, [r7, #0xc] + lsl r5, r4, #0x2 + bl FUN_0206F158 + ldr r1, _02045394 ; =0x020F450C + mov r2, #0x4 + ldrh r1, [r1, r5] + bl FUN_0206EEF8 + add r0, r6, r0 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0x0] + cmp r6, r0 + blo _02045384 + ldr r0, _02045394 ; =0x020F450C + ldrh r1, [r0, r5] + ldr r0, [sp, #0x8] + strh r1, [r0, #0x0] + ldr r0, [sp, #0x4] + strh r4, [r0, #0x0] + b _0204538E +_02045384: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x7 + blo _02045358 +_0204538E: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02045394: .word 0x020F450C + + thumb_func_start FUN_02045398 +FUN_02045398: ; 0x02045398 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0204539C +FUN_0204539C: ; 0x0204539C + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020453A0 +FUN_020453A0: ; 0x020453A0 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + ldr r1, _020453EC ; =0x020F4528 + lsl r2, r4, #0x2 + ldrh r1, [r1, r2] + strh r1, [r6, #0x0] + ldr r1, _020453F0 ; =0x020F452A + ldrh r1, [r1, r2] + strh r1, [r0, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_020453EC: .word 0x020F4528 +_020453F0: .word 0x020F452A + + thumb_func_start FUN_020453F4 +FUN_020453F4: ; 0x020453F4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02024D64 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045424 +FUN_02045424: ; 0x02045424 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024D80 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02045438 +FUN_02045438: ; 0x02045438 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034E20 + bl FUN_02055474 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045468 +FUN_02045468: ; 0x02045468 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034E20 + mov r1, #0x1 + bl FUN_02055488 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02045484 +FUN_02045484: ; 0x02045484 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r6, r0, #0x0 + cmp r4, #0x8 + blo _020454B6 + bl ErrorHandling +_020454B6: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r1, r4, #0x0 + bl FUN_020239D0 + strh r0, [r6, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020454CC +FUN_020454CC: ; 0x020454CC + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + cmp r4, #0x8 + blo _020454EA + bl ErrorHandling +_020454EA: + add r5, #0x80 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r1, r4, #0x0 + bl FUN_020239E4 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045500 +FUN_02045500: ; 0x02045500 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ECE0 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204552C +FUN_0204552C: ; 0x0204552C + push {r3-r7, lr} + add r6, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + mov r4, #0x0 + ldr r7, _02045578 ; =0x020F4574 + str r0, [sp, #0x0] + add r5, r4, #0x0 +_02045548: + add r0, r6, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + ldrb r1, [r7, r4] + bl FUN_020239D0 + cmp r0, #0x1 + bne _02045564 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_02045564: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x8 + blo _02045548 + ldr r0, [sp, #0x0] + strh r5, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + nop +_02045578: .word 0x020F4574 + + thumb_func_start FUN_0204557C +FUN_0204557C: ; 0x0204557C + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ECD4 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02045590 +FUN_02045590: ; 0x02045590 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020455BC +FUN_020455BC: ; 0x020455BC + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED1C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020455D0 +FUN_020455D0: ; 0x020455D0 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED2C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020455E4 +FUN_020455E4: ; 0x020455E4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED6C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045610 +FUN_02045610: ; 0x02045610 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED4C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02045624 +FUN_02045624: ; 0x02045624 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED5C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02045638 +FUN_02045638: ; 0x02045638 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r5, #0x80 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED0C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045664 +FUN_02045664: ; 0x02045664 + push {r3, lr} + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ECFC + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02045678 +FUN_02045678: ; 0x02045678 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + ldr r2, [r5, #0x8] + add r4, r0, #0x0 + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + cmp r1, #0x0 + beq _020456A6 + cmp r1, #0x1 + beq _0204569E + cmp r1, #0x2 + beq _020456AE + b _020456CC +_0204569E: + mov r1, #0x1 + bl FUN_0205F264 + b _020456D0 +_020456A6: + mov r1, #0x0 + bl FUN_0205F264 + b _020456D0 +_020456AE: + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0205F264 + strh r0, [r5, #0x0] + b _020456D0 +_020456CC: + bl ErrorHandling +_020456D0: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020456D4 +FUN_020456D4: ; 0x020456D4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + ldr r2, [r5, #0x8] + add r4, r0, #0x0 + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + cmp r1, #0x0 + beq _02045700 + cmp r1, #0x1 + beq _020456FA + cmp r1, #0x2 + beq _02045706 + b _02045722 +_020456FA: + bl FUN_0205F274 + b _02045726 +_02045700: + bl FUN_0205F284 + b _02045726 +_02045706: + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F294 + strh r0, [r5, #0x0] + b _02045726 +_02045722: + bl ErrorHandling +_02045726: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204572C +FUN_0204572C: ; 0x0204572C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + ldr r2, [r5, #0x8] + add r4, r0, #0x0 + add r1, r2, #0x1 + str r1, [r5, #0x8] + ldrb r1, [r2, #0x0] + cmp r1, #0x0 + beq _02045758 + cmp r1, #0x1 + beq _02045752 + cmp r1, #0x2 + beq _0204575E + b _0204577A +_02045752: + bl FUN_0205F2A4 + b _0204577E +_02045758: + bl FUN_0205F2B4 + b _0204577E +_0204575E: + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F2C4 + strh r0, [r5, #0x0] + b _0204577E +_0204577A: + bl ErrorHandling +_0204577E: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045784 +FUN_02045784: ; 0x02045784 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r1, r6, #0x0 + add r2, r7, #0x0 + mov r3, #0x4 + bl FUN_0206ED38 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020457DC +FUN_020457DC: ; 0x020457DC + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r1, r6, #0x0 + add r2, r7, #0x0 + mov r3, #0x4 + bl FUN_0206EDD4 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02045834 +FUN_02045834: ; 0x02045834 + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r1, r6, #0x0 + add r2, r7, #0x0 + mov r3, #0x4 + bl FUN_0206ED24 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0204588C +FUN_0204588C: ; 0x0204588C + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r5, [r1, #0x0] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r1, r6, #0x0 + add r2, r7, #0x0 + mov r3, #0xb + bl FUN_0206EE50 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020458E4 +FUN_020458E4: ; 0x020458E4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02054CB0 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02045918 +FUN_02045918: ; 0x02045918 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0xb + bl FUN_0206E7B8 + strh r0, [r5, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02045950 +FUN_02045950: ; 0x02045950 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02045954 +FUN_02045954: ; 0x02045954 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02045958 +FUN_02045958: ; 0x02045958 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02026CC4 + add r1, r6, #0x0 + bl FUN_02025D6C + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020459AC +FUN_020459AC: ; 0x020459AC + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020459E8 +FUN_020459E8: ; 0x020459E8 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02026CC4 + add r1, r6, #0x0 + bl FUN_02025D94 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02045A3C +FUN_02045A3C: ; 0x02045A3C + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045A78 +FUN_02045A78: ; 0x02045A78 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02026CC4 + add r1, r6, #0x0 + bl FUN_02026298 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02045ACC +FUN_02045ACC: ; 0x02045ACC + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045B08 +FUN_02045B08: ; 0x02045B08 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045B44 +FUN_02045B44: ; 0x02045B44 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045B80 +FUN_02045B80: ; 0x02045B80 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r4, [r1, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r5, #0x80 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_020394B8 + add r0, r4, #0x0 + bl FUN_02026CC4 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02045BC8 +FUN_02045BC8: ; 0x02045BC8 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045C04 +FUN_02045C04: ; 0x02045C04 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045C40 +FUN_02045C40: ; 0x02045C40 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045C7C +FUN_02045C7C: ; 0x02045C7C + push {r3-r7, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + ldr r5, [r1, #0xc] + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02026CC4 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020260C4 + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02045CD4 +FUN_02045CD4: ; 0x02045CD4 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045D10 +FUN_02045D10: ; 0x02045D10 + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045D4C +FUN_02045D4C: ; 0x02045D4C + push {r4, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r0, r4, #0x0 + bl ScriptReadHalfword + add r4, #0x80 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_020394B8 + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02045D88 +FUN_02045D88: ; 0x02045D88 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r1, r5, #0x0 + add r1, #0x80 + lsl r2, r4, #0x18 + add r6, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0x20 + lsr r2, r2, #0x18 + bl FUN_02037CF0 + str r0, [r6, #0x0] + ldr r1, _02045DCC ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + mov r0, #0x1 + pop {r4-r6, pc} + nop +_02045DCC: .word FUN_0203BC04 + + thumb_func_start FUN_02045DD0 +FUN_02045DD0: ; 0x02045DD0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02045DFC + bl ErrorHandling +_02045DFC: + ldr r0, [r4, #0x0] + bl FUN_02037D5C + strh r0, [r5, #0x0] + ldrh r0, [r5, #0x0] + cmp r0, #0x4 + bne _02045E0E + mov r0, #0xff + strh r0, [r5, #0x0] +_02045E0E: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045E1C +FUN_02045E1C: ; 0x02045E1C + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02045E20 +FUN_02045E20: ; 0x02045E20 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r5, #0x80 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x20 + bl FUN_02088DF8 + add r5, r0, #0x0 + bl FUN_02088EF8 + strh r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02045E74 +FUN_02045E74: ; 0x02045E74 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, #0x80 + add r7, r1, #0x0 + ldr r0, [r0, #0x0] + mov r1, #0x13 + str r2, [sp, #0x0] + add r6, r3, #0x0 + bl FUN_02039438 + str r0, [sp, #0x4] + mov r0, #0x20 + bl FUN_02088DD8 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + str r4, [r0, #0x0] + ldr r0, [sp, #0x0] + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + str r0, [r4, #0x4] + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x8] + str r6, [r4, #0xc] + add r0, r5, #0x0 + strb r7, [r4, #0x15] + add r0, #0x80 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_02038864 + ldr r1, _02045EDC ; =FUN_0203BC04 + add r0, r5, #0x0 + bl SetupNativeScript + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02045EDC: .word FUN_0203BC04 + + thumb_func_start FUN_02045EE0 +FUN_02045EE0: ; 0x02045EE0 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02045EE4 +FUN_02045EE4: ; 0x02045EE4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r4, r0, #0x0 + mov r1, #0x20 + bl FUN_02088DF8 + add r3, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_02045E74 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_02045F24 +FUN_02045F24: ; 0x02045F24 + push {r4-r6, lr} + add r5, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394F0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + bl FUN_0206B9B0 + add r6, r0, #0x0 + mov r0, #0x20 + mov r1, #0x4 + bl FUN_02016998 + add r3, r0, #0x0 + ldr r0, _02045F80 ; =0x0000FFFF + strh r4, [r3, #0x0] + strh r0, [r3, #0x2] + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02045E74 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_02045F80: .word 0x0000FFFF + + thumb_func_start FUN_02045F84 +FUN_02045F84: ; 0x02045F84 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02045F88 +FUN_02045F88: ; 0x02045F88 + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + bne _02045FB2 + bl ErrorHandling +_02045FB2: + ldrb r0, [r4, #0x16] + cmp r0, #0x0 + bne _02045FBC + mov r0, #0x0 + b _02045FBE +_02045FBC: + mov r0, #0xff +_02045FBE: + strh r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02088DF0 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02045FCC +FUN_02045FCC: ; 0x02045FCC + push {r3-r5, lr} + add r4, r0, #0x0 + bl ScriptReadHalfword + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + bl FUN_020394B8 + add r4, #0x80 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x13 + bl FUN_02039438 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + bne _02045FF6 + bl ErrorHandling +_02045FF6: + ldrb r0, [r4, #0x16] + cmp r0, #0x0 + bne _02046000 + mov r0, #0x0 + b _02046002 +_02046000: + mov r0, #0xff +_02046002: + strh r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02088DF0 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02046010 +FUN_02046010: ; 0x02046010 + push {r3, lr} + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204601C +FUN_0204601C: ; 0x0204601C + push {r3, lr} + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02046028 +FUN_02046028: ; 0x02046028 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0204602C +FUN_0204602C: ; 0x0204602C + mov r0, #0x0 + bx lr diff --git a/arm9/asm/secure.s b/arm9/asm/secure.s new file mode 100644 index 00000000..f9d8f159 --- /dev/null +++ b/arm9/asm/secure.s @@ -0,0 +1,29 @@ +/* secure.s TODO: Disassemble */ + .include "asm/macros.inc" + +.section .text + +.incbin "baserom.nds", 0x4000, 0x19E + + non_word_aligned_thumb_func_start FUN_0200019E +FUN_0200019E: ; 0x0200019E + swi 13 + bx lr + thumb_func_end FUN_0200019E + +.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 SVC_WaitByLoop +SVC_WaitByLoop: + swi 3 + bx lr + +.incbin "baserom.nds", 0x45F6, 0x20A diff --git a/arm9/asm/unk_02000E0C.s b/arm9/asm/unk_02000E0C.s new file mode 100644 index 00000000..50b0dace --- /dev/null +++ b/arm9/asm/unk_02000E0C.s @@ -0,0 +1,2758 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_02000E0C +FUN_02000E0C: ; 0x02000E0C + push {r3, lr} + ldr r0, _02000E74 ; =0x02106FA0 + ldr r1, [r0, #0xc] + cmp r1, #0x0 + bne _02000E4A + ldr r1, [r0, #0x14] + cmp r1, #0x0 + beq _02000E70 + mov r1, #0x0 + ldr r0, [r0, #0x10] + mvn r1, r1 + cmp r0, r1 + beq _02000E2C + mov r1, #0x0 + bl FUN_02005FDC +_02000E2C: + ldr r0, _02000E74 ; =0x02106FA0 + mov r2, #0x0 + ldr r1, [r0, #0x10] + str r1, [r0, #0x8] + ldr r0, [r0, #0x14] + ldr r1, _02000E78 ; =0x02106FB8 + bl FUN_02006234 + ldr r1, _02000E74 ; =0x02106FA0 + str r0, [r1, #0xc] + mov r0, #0x0 + mvn r0, r0 + str r0, [r1, #0x10] + mov r0, #0x0 + str r0, [r1, #0x14] +_02000E4A: + ldr r0, _02000E74 ; =0x02106FA0 + ldr r0, [r0, #0xc] + bl FUN_02006290 + cmp r0, #0x0 + beq _02000E70 + ldr r0, _02000E74 ; =0x02106FA0 + ldr r0, [r0, #0xc] + bl FUN_02006260 + ldr r0, _02000E74 ; =0x02106FA0 + mov r1, #0x0 + str r1, [r0, #0xc] + ldr r0, [r0, #0x8] + sub r1, r1, #0x1 + cmp r0, r1 + beq _02000E70 + bl FUN_02005F60 +_02000E70: + pop {r3, pc} + nop +_02000E74: .word 0x02106FA0 +_02000E78: .word 0x02106FB8 + + thumb_func_start FUN_02000E7C +FUN_02000E7C: ; 0x02000E7C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02000E98 ; =0x02106FA0 + add r4, r1, #0x0 + ldr r0, [r0, #0x14] + cmp r0, #0x0 + beq _02000E8E + bl ErrorHandling +_02000E8E: + ldr r0, _02000E98 ; =0x02106FA0 + str r5, [r0, #0x10] + str r4, [r0, #0x14] + pop {r3-r5, pc} + nop +_02000E98: .word 0x02106FA0 + + thumb_func_start FUN_02000E9C +FUN_02000E9C: ; 0x02000E9C + push {r3, lr} + bl FUN_0202FB80 + mov r0, #0x1 + add r1, r0, #0x0 + blx OS_WaitIrq + ldr r0, _02000EC4 ; =0x021C48B8 + ldr r1, [r0, #0x2c] + add r1, r1, #0x1 + str r1, [r0, #0x2c] + mov r1, #0x0 + str r1, [r0, #0x30] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02000EC0 + ldr r0, [r0, #0x4] + blx r1 +_02000EC0: + pop {r3, pc} + nop +_02000EC4: .word 0x021C48B8 + + thumb_func_start FUN_02000EC8 +FUN_02000EC8: ; 0x02000EC8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02033678 + cmp r0, #0x0 + beq _02000EE2 + blx CARD_TryWaitBackupAsync + cmp r0, #0x1 + bne _02000EE2 + add r0, r4, #0x0 + blx OS_ResetSystem +_02000EE2: + bl FUN_02000E9C + pop {r4, pc} + + thumb_func_start FUN_02000EE8 +FUN_02000EE8: ; 0x02000EE8 + push {r3, lr} + bl FUN_020335B8 + add r1, r0, #0x0 + cmp r1, #0x1 + beq _02000EFE + cmp r1, #0x2 + beq _02000F06 + cmp r1, #0x3 + beq _02000F0E + pop {r3, pc} +_02000EFE: + mov r0, #0x1 + bl FUN_02000F4C + pop {r3, pc} +_02000F06: + mov r0, #0x0 + bl FUN_02000F4C + pop {r3, pc} +_02000F0E: + mov r0, #0x1 + bl FUN_02000F4C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02000F18 +FUN_02000F18: ; 0x02000F18 + push {r4, lr} + ldr r1, _02000F48 ; =0x00007FFF + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_0200E3A0 + ldr r1, _02000F48 ; =0x00007FFF + mov r0, #0x1 + bl FUN_0200E3A0 + bl FUN_02032DAC + cmp r0, #0x0 + beq _02000F3C + bl FUN_020225F8 + bl FUN_0202287C +_02000F3C: + bl FUN_02000FE8 + add r0, r4, #0x0 + bl FUN_02000EC8 + b _02000F3C + .balign 4 +_02000F48: .word 0x00007FFF + + thumb_func_start FUN_02000F4C +FUN_02000F4C: ; 0x02000F4C + push {r4-r6, lr} + add r6, r0, #0x0 + cmp r1, #0x3 + bne _02000F60 + mov r0, #0x0 + mov r1, #0x3 + add r2, r0, #0x0 + bl FUN_02033F70 + b _02000F7A +_02000F60: + cmp r6, #0x0 + bne _02000F70 + mov r0, #0x0 + mov r1, #0x2 + add r2, r0, #0x0 + bl FUN_02033F70 + b _02000F7A +_02000F70: + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_02033F70 +_02000F7A: + bl FUN_02032DAC + ldr r5, _02000FA0 ; =0x021C48B8 + mov r4, #0x1 +_02000F82: + bl FUN_02000FE8 + bl FUN_02016464 + ldr r0, [r5, #0x48] + tst r0, r4 + bne _02000F96 + bl FUN_02000E9C + b _02000F82 +_02000F96: + add r0, r6, #0x0 + bl FUN_02000F18 + pop {r4-r6, pc} + nop +_02000FA0: .word 0x021C48B8 + + thumb_func_start FUN_02000FA4 +FUN_02000FA4: ; 0x02000FA4 + push {r4-r5, lr} + sub sp, #0x1c + add r0, sp, #0xc + add r1, sp, #0x0 + bl FUN_0201265C + ldr r0, _02000FE4 ; =0x021C48B8 + ldr r3, [sp, #0x10] + ldr r4, [r0, #0x2c] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x14] + add r0, r1, r0 + lsl r2, r0, #0x18 + ldr r0, [sp, #0x0] + lsl r3, r3, #0x8 + lsl r1, r0, #0x10 + mul r3, r5 + ldr r0, [sp, #0xc] + lsl r3, r3, #0x10 + add r0, r0, r3 + add r0, r1, r0 + add r5, r2, r0 + add r0, r4, r5 + bl FUN_0201BA1C + add r0, r4, r5 + bl FUN_0201B9E0 + add sp, #0x1c + pop {r4-r5, pc} + nop +_02000FE4: .word 0x021C48B8 + + thumb_func_start FUN_02000FE8 +FUN_02000FE8: ; 0x02000FE8 + push {r3-r7, lr} + sub sp, #0x8 + ldr r0, _0200109C ; =0x027FFFA8 + ldrh r1, [r0, #0x0] + mov r0, #0x2 + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + beq _0200107E + ldr r0, _020010A0 ; =0x021C4918 + ldrb r0, [r0, #0x7] + cmp r0, #0x0 + bne _02001064 + bl FUN_0201CE04 + blx CTRDG_IsPulledOut + cmp r0, #0x1 + bne _02001014 + ldr r0, _020010A4 ; =0x02106FA0 + mov r1, #0x1 + str r1, [r0, #0x4] +_02001014: + ldr r6, _020010A4 ; =0x02106FA0 + mov r0, #0xc + ldr r1, [r6, #0x4] + ldr r4, _0200109C ; =0x027FFFA8 + mov r2, #0x10 + add r5, r0, #0x0 + ldr r7, _020010A0 ; =0x021C4918 + orr r5, r2 +_02001024: + ldrb r2, [r7, #0x6] + mov r0, #0xc + cmp r2, #0x0 + beq _02001032 + cmp r1, #0x0 + bne _02001032 + add r0, r5, #0x0 +_02001032: + mov r1, #0x0 + add r2, r1, #0x0 + blx PM_GoSleepMode + blx CARD_IsPulledOut + cmp r0, #0x0 + beq _02001048 + blx PM_ForceToPowerOff + b _0200105C +_02001048: + ldrh r1, [r4, #0x0] + mov r0, #0x2 + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + beq _0200105C + mov r0, #0x1 + str r0, [r6, #0x4] + add r1, r0, #0x0 + b _02001024 +_0200105C: + bl FUN_0201CDD0 + add sp, #0x8 + pop {r3-r7, pc} +_02001064: + add r0, sp, #0x4 + add r1, sp, #0x0 + blx PM_GetBackLight + ldr r0, [sp, #0x4] + cmp r0, #0x1 + bne _02001096 + mov r0, #0x2 + mov r1, #0x0 + blx PM_SetBackLight + add sp, #0x8 + pop {r3-r7, pc} +_0200107E: + add r0, sp, #0x4 + add r1, sp, #0x0 + blx PM_GetBackLight + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _02001096 + ldr r1, _020010A4 ; =0x02106FA0 + mov r0, #0x2 + ldr r1, [r1, #0x0] + blx PM_SetBackLight +_02001096: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0200109C: .word 0x027FFFA8 +_020010A0: .word 0x021C4918 +_020010A4: .word 0x02106FA0 + + thumb_func_start FUN_020010A8 +FUN_020010A8: ; 0x020010A8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r3, #0x0 + mov r1, #0x38 + add r7, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_02016998 + add r4, r0, #0x0 + add r3, r5, #0x0 + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [sp, #0x0] + bl FUN_02013690 + str r0, [r4, #0x28] + strh r6, [r4, #0x2c] + add r1, r4, #0x0 + strh r7, [r4, #0x2e] + mov r0, #0x0 + add r1, #0x30 + strb r0, [r1, #0x0] + add r1, r4, #0x0 + add r1, #0x31 + strb r0, [r1, #0x0] + add r1, r4, #0x0 + mov r2, #0xff + add r1, #0x32 + strb r2, [r1, #0x0] + add r1, r4, #0x0 + add r1, #0x33 + strb r0, [r1, #0x0] + add r1, r4, #0x0 + ldr r0, [sp, #0x0] + add r1, #0x34 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + ldrb r1, [r4, #0x17] + add r0, #0x20 + ldrb r2, [r0, #0x0] + lsl r1, r1, #0x18 + mov r0, #0xf + lsr r3, r1, #0x1c + mov r1, #0xf + bic r2, r0 + and r3, r1 + orr r3, r2 + add r2, r4, #0x0 + add r2, #0x20 + strb r3, [r2, #0x0] + add r2, r4, #0x0 + add r2, #0x20 + ldrb r2, [r2, #0x0] + mov r3, #0xf0 + bic r2, r3 + ldrb r3, [r4, #0x18] + lsl r3, r3, #0x1c + lsr r3, r3, #0x1c + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + orr r3, r2 + add r2, r4, #0x0 + add r2, #0x20 + strb r3, [r2, #0x0] + add r2, r4, #0x0 + add r2, #0x21 + ldrb r2, [r2, #0x0] + bic r2, r0 + ldrb r0, [r4, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + mov r1, #0x3f + bic r0, r1 + ldrh r1, [r4, #0x1a] + lsl r1, r1, #0x1d + lsr r1, r1, #0x1d + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + mov r1, #0x3f + and r1, r2 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x22 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x24 + ldrb r0, [r0, #0x0] + mov r1, #0x7f + bic r0, r1 + ldrh r1, [r4, #0x1a] + lsl r1, r1, #0x11 + lsr r1, r1, #0x1a + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + mov r1, #0x7f + and r1, r2 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x24 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x24 + ldrb r1, [r0, #0x0] + mov r0, #0x80 + bic r1, r0 + add r0, r4, #0x0 + add r0, #0x24 + strb r1, [r0, #0x0] + ldrh r1, [r4, #0x10] + ldrh r0, [r4, #0x12] + cmp r1, r0 + bhs _020011AC + strh r1, [r4, #0x12] +_020011AC: + ldrb r2, [r4, #0x18] + ldr r0, [r4, #0x28] + lsl r1, r2, #0x1c + lsr r1, r1, #0x1c + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + ldrb r1, [r4, #0x17] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1c + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + lsr r1, r1, #0x8 + lsr r2, r2, #0x10 + orr r1, r2 + orr r1, r3 + bl FUN_020136E0 + ldrb r1, [r4, #0x18] + ldr r0, [r4, #0xc] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_02019620 + ldrh r1, [r4, #0x2c] + ldrh r3, [r4, #0x12] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02001714 + add r0, r4, #0x0 + bl FUN_020017AC + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02001B64 + ldr r0, [r5, #0xc] + bl FUN_020191D0 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02001204 +FUN_02001204: ; 0x02001204 + push {r4-r6, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + ldr r6, _020012FC ; =0x021C48B8 + mov r3, #0x0 + add r1, #0x33 + strb r3, [r1, #0x0] + ldr r1, [r6, #0x48] + mov r2, #0x1 + add r5, r1, #0x0 + tst r5, r2 + beq _0200122C + ldrh r1, [r4, #0x2c] + ldrh r0, [r4, #0x2e] + ldr r2, [r4, #0x0] + add r0, r1, r0 + lsl r0, r0, #0x3 + add r0, r2, r0 + ldr r0, [r0, #0x4] + pop {r4-r6, pc} +_0200122C: + mov r5, #0x2 + tst r1, r5 + beq _02001236 + sub r0, r5, #0x4 + pop {r4-r6, pc} +_02001236: + ldr r5, [r6, #0x4c] + mov r1, #0x40 + tst r1, r5 + beq _02001254 + add r1, r2, #0x0 + bl FUN_02001AA4 + cmp r0, #0x0 + bne _0200124E + mov r0, #0x1 + add r4, #0x33 + strb r0, [r4, #0x0] +_0200124E: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_02001254: + mov r1, #0x80 + add r3, r5, #0x0 + tst r3, r1 + beq _02001274 + add r1, r2, #0x0 + add r3, r2, #0x0 + bl FUN_02001AA4 + cmp r0, #0x0 + bne _0200126E + mov r0, #0x2 + add r4, #0x33 + strb r0, [r4, #0x0] +_0200126E: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_02001274: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x17 + lsr r0, r0, #0x1e + beq _02001284 + cmp r0, #0x1 + beq _0200128A + cmp r0, #0x2 + beq _0200129C +_02001284: + mov r0, #0x0 + add r1, r0, #0x0 + b _020012AC +_0200128A: + mov r0, #0x20 + mov r1, #0x10 + and r0, r5 + and r1, r5 + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + b _020012AC +_0200129C: + lsl r0, r1, #0x2 + add r1, #0x80 + and r0, r5 + and r1, r5 + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 +_020012AC: + cmp r0, #0x0 + beq _020012D0 + ldrh r2, [r4, #0x12] + add r0, r4, #0x0 + mov r1, #0x1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + mov r3, #0x0 + bl FUN_02001AA4 + cmp r0, #0x0 + bne _020012CA + mov r0, #0x3 + add r4, #0x33 + strb r0, [r4, #0x0] +_020012CA: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_020012D0: + cmp r1, #0x0 + beq _020012F4 + ldrh r2, [r4, #0x12] + mov r1, #0x1 + add r0, r4, #0x0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + add r3, r1, #0x0 + bl FUN_02001AA4 + cmp r0, #0x0 + bne _020012EE + mov r0, #0x4 + add r4, #0x33 + strb r0, [r4, #0x0] +_020012EE: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_020012F4: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} + nop +_020012FC: .word 0x021C48B8 + + thumb_func_start FUN_02001300 +FUN_02001300: ; 0x02001300 + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x0 + beq _0200130C + ldrh r0, [r4, #0x2c] + strh r0, [r1, #0x0] +_0200130C: + cmp r2, #0x0 + beq _02001314 + ldrh r0, [r4, #0x2e] + strh r0, [r2, #0x0] +_02001314: + ldr r0, [r4, #0x28] + bl FUN_020136C0 + add r0, r4, #0x0 + add r0, #0x34 + ldrb r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_02016A8C + pop {r4, pc} + + thumb_func_start FUN_02001328 +FUN_02001328: ; 0x02001328 + push {r4, lr} + add r4, r0, #0x0 + ldrb r1, [r4, #0x18] + ldr r0, [r4, #0xc] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_02019620 + ldrh r1, [r4, #0x2c] + ldrh r3, [r4, #0x12] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02001714 + add r0, r4, #0x0 + bl FUN_020017AC + ldr r0, [r4, #0xc] + bl FUN_020191D0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02001354 +FUN_02001354: ; 0x02001354 + push {r4-r6, lr} + add r4, r0, #0x0 + add r6, r1, #0x0 + beq _0200136E + add r5, r4, #0x0 + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} +_0200136E: + strh r2, [r4, #0x2c] + add r0, r4, #0x0 + strh r3, [r4, #0x2e] + mov r3, #0x0 + add r0, #0x30 + strb r3, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x31 + add r1, sp, #0x0 + strb r3, [r0, #0x0] + ldrh r0, [r1, #0x14] + cmp r0, #0x40 + bne _02001398 + ldrh r1, [r1, #0x10] + add r0, r4, #0x0 + mov r2, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02001AA4 + b _020013AC +_02001398: + cmp r0, #0x80 + bne _020013AC + ldrh r1, [r1, #0x10] + mov r2, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r3, r2, #0x0 + bl FUN_02001AA4 +_020013AC: + ldr r1, [sp, #0x18] + cmp r1, #0x0 + beq _020013B6 + ldrh r0, [r4, #0x2c] + strh r0, [r1, #0x0] +_020013B6: + ldr r1, [sp, #0x1c] + cmp r1, #0x0 + beq _020013C0 + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x0] +_020013C0: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020013C8 +FUN_020013C8: ; 0x020013C8 + push {r4, lr} + sub sp, #0x10 + mov r4, #0x0 + str r4, [sp, #0x0] + add r4, sp, #0x8 + ldrh r4, [r4, #0x10] + str r4, [sp, #0x4] + ldr r4, [sp, #0x1c] + str r4, [sp, #0x8] + ldr r4, [sp, #0x20] + str r4, [sp, #0xc] + bl FUN_02001354 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020013E8 +FUN_020013E8: ; 0x020013E8 + push {r3-r6} + add r4, r0, #0x0 + add r4, #0x20 + ldrb r6, [r4, #0x0] + mov r4, #0xf + mov r5, #0xf + bic r6, r4 + and r1, r5 + orr r6, r1 + add r1, r0, #0x0 + add r1, #0x20 + strb r6, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x20 + lsl r2, r2, #0x1c + ldrb r1, [r1, #0x0] + mov r6, #0xf0 + lsr r2, r2, #0x18 + bic r1, r6 + orr r2, r1 + add r1, r0, #0x0 + add r1, #0x20 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x21 + ldrb r2, [r1, #0x0] + add r1, r3, #0x0 + and r1, r5 + bic r2, r4 + orr r2, r1 + add r1, r0, #0x0 + add r1, #0x21 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x24 + ldrb r2, [r1, #0x0] + mov r1, #0x80 + add r0, #0x24 + orr r1, r2 + strb r1, [r0, #0x0] + pop {r3-r6} + bx lr + + thumb_func_start FUN_0200143C +FUN_0200143C: ; 0x0200143C + ldrh r2, [r0, #0x2c] + ldrh r0, [r0, #0x2e] + add r0, r2, r0 + strh r0, [r1, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02001448 +FUN_02001448: ; 0x02001448 + cmp r1, #0x0 + beq _02001450 + ldrh r3, [r0, #0x2c] + strh r3, [r1, #0x0] +_02001450: + cmp r2, #0x0 + beq _02001458 + ldrh r0, [r0, #0x2e] + strh r0, [r2, #0x0] +_02001458: + bx lr + .balign 4 + + thumb_func_start FUN_0200145C +FUN_0200145C: ; 0x0200145C + add r0, #0x33 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02001464 +FUN_02001464: ; 0x02001464 + ldr r2, [r0, #0x0] + lsl r0, r1, #0x3 + add r0, r2, r0 + ldr r0, [r0, #0x4] + bx lr + .balign 4 + + thumb_func_start FUN_02001470 +FUN_02001470: ; 0x02001470 + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x13 + bhi _02001532 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02001484: ; jump table (using 16-bit offset) + .short _020014AC - _02001484 - 2; case 0 + .short _020014B0 - _02001484 - 2; case 1 + .short _020014B4 - _02001484 - 2; case 2 + .short _020014B8 - _02001484 - 2; case 3 + .short _02001532 - _02001484 - 2; case 4 + .short _020014BC - _02001484 - 2; case 5 + .short _020014C0 - _02001484 - 2; case 6 + .short _020014C4 - _02001484 - 2; case 7 + .short _020014C8 - _02001484 - 2; case 8 + .short _020014D0 - _02001484 - 2; case 9 + .short _020014EA - _02001484 - 2; case 10 + .short _020014F2 - _02001484 - 2; case 11 + .short _020014FA - _02001484 - 2; case 12 + .short _02001502 - _02001484 - 2; case 13 + .short _0200150A - _02001484 - 2; case 14 + .short _02001512 - _02001484 - 2; case 15 + .short _0200151A - _02001484 - 2; case 16 + .short _02001522 - _02001484 - 2; case 17 + .short _0200152A - _02001484 - 2; case 18 + .short _0200152E - _02001484 - 2; case 19 +_020014AC: + ldr r0, [r4, #0x4] + pop {r4, pc} +_020014B0: + ldr r0, [r4, #0x8] + pop {r4, pc} +_020014B4: + ldrh r0, [r4, #0x10] + pop {r4, pc} +_020014B8: + ldrh r0, [r4, #0x12] + pop {r4, pc} +_020014BC: + ldrb r0, [r4, #0x14] + pop {r4, pc} +_020014C0: + ldrb r0, [r4, #0x15] + pop {r4, pc} +_020014C4: + ldrb r0, [r4, #0x16] + pop {r4, pc} +_020014C8: + ldrb r0, [r4, #0x17] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + pop {r4, pc} +_020014D0: + ldrh r0, [r4, #0x1a] + mov r1, #0x1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1a + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02002E4C + ldrh r1, [r4, #0x1a] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1c + add r0, r1, r0 + pop {r4, pc} +_020014EA: + ldrb r0, [r4, #0x17] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + pop {r4, pc} +_020014F2: + ldrb r0, [r4, #0x18] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + pop {r4, pc} +_020014FA: + ldrb r0, [r4, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + pop {r4, pc} +_02001502: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + pop {r4, pc} +_0200150A: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1c + pop {r4, pc} +_02001512: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x17 + lsr r0, r0, #0x1e + pop {r4, pc} +_0200151A: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1a + pop {r4, pc} +_02001522: + ldrh r0, [r4, #0x1a] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1f + pop {r4, pc} +_0200152A: + ldr r0, [r4, #0xc] + pop {r4, pc} +_0200152E: + ldr r0, [r4, #0x1c] + pop {r4, pc} +_02001532: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} + + thumb_func_start FUN_02001538 +FUN_02001538: ; 0x02001538 + cmp r1, #0x13 + bls _0200153E + b _02001648 +_0200153E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0200154A: ; jump table (using 16-bit offset) + .short _02001572 - _0200154A - 2; case 0 + .short _02001576 - _0200154A - 2; case 1 + .short _0200157A - _0200154A - 2; case 2 + .short _0200157E - _0200154A - 2; case 3 + .short _02001648 - _0200154A - 2; case 4 + .short _02001582 - _0200154A - 2; case 5 + .short _02001586 - _0200154A - 2; case 6 + .short _0200158A - _0200154A - 2; case 7 + .short _0200158E - _0200154A - 2; case 8 + .short _02001648 - _0200154A - 2; case 9 + .short _020015A2 - _0200154A - 2; case 10 + .short _020015B6 - _0200154A - 2; case 11 + .short _020015CA - _0200154A - 2; case 12 + .short _020015DE - _0200154A - 2; case 13 + .short _020015F2 - _0200154A - 2; case 14 + .short _02001606 - _0200154A - 2; case 15 + .short _0200161A - _0200154A - 2; case 16 + .short _0200162E - _0200154A - 2; case 17 + .short _02001642 - _0200154A - 2; case 18 + .short _02001646 - _0200154A - 2; case 19 +_02001572: + str r2, [r0, #0x4] + bx lr +_02001576: + str r2, [r0, #0x8] + bx lr +_0200157A: + strh r2, [r0, #0x10] + bx lr +_0200157E: + strh r2, [r0, #0x12] + bx lr +_02001582: + strb r2, [r0, #0x14] + bx lr +_02001586: + strb r2, [r0, #0x15] + bx lr +_0200158A: + strb r2, [r0, #0x16] + bx lr +_0200158E: + ldrb r3, [r0, #0x17] + mov r1, #0xf + bic r3, r1 + lsl r1, r2, #0x18 + lsr r2, r1, #0x18 + mov r1, #0xf + and r1, r2 + orr r1, r3 + strb r1, [r0, #0x17] + bx lr +_020015A2: + ldrb r3, [r0, #0x17] + mov r1, #0xf0 + bic r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + orr r1, r3 + strb r1, [r0, #0x17] + bx lr +_020015B6: + ldrb r3, [r0, #0x18] + mov r1, #0xf + bic r3, r1 + lsl r1, r2, #0x18 + lsr r2, r1, #0x18 + mov r1, #0xf + and r1, r2 + orr r1, r3 + strb r1, [r0, #0x18] + bx lr +_020015CA: + ldrb r3, [r0, #0x18] + mov r1, #0xf0 + bic r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + orr r1, r3 + strb r1, [r0, #0x18] + bx lr +_020015DE: + ldrh r3, [r0, #0x1a] + mov r1, #0x7 + bic r3, r1 + lsl r1, r2, #0x18 + lsr r2, r1, #0x18 + mov r1, #0x7 + and r1, r2 + orr r1, r3 + strh r1, [r0, #0x1a] + bx lr +_020015F2: + ldrh r3, [r0, #0x1a] + mov r1, #0x78 + bic r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1c + lsr r1, r1, #0x19 + orr r1, r3 + strh r1, [r0, #0x1a] + bx lr +_02001606: + ldrh r3, [r0, #0x1a] + ldr r1, _0200164C ; =0xFFFFFE7F + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1e + lsr r1, r1, #0x17 + orr r1, r3 + strh r1, [r0, #0x1a] + bx lr +_0200161A: + ldrh r3, [r0, #0x1a] + ldr r1, _02001650 ; =0xFFFF81FF + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1a + lsr r1, r1, #0x11 + orr r1, r3 + strh r1, [r0, #0x1a] + bx lr +_0200162E: + ldrh r3, [r0, #0x1a] + ldr r1, _02001654 ; =0xFFFF7FFF + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + lsr r1, r1, #0x10 + orr r1, r3 + strh r1, [r0, #0x1a] + bx lr +_02001642: + str r2, [r0, #0xc] + bx lr +_02001646: + str r2, [r0, #0x1c] +_02001648: + bx lr + nop +_0200164C: .word 0xFFFFFE7F +_02001650: .word 0xFFFF81FF +_02001654: .word 0xFFFF7FFF + + thumb_func_start FUN_02001658 +FUN_02001658: ; 0x02001658 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0200165C +FUN_0200165C: ; 0x0200165C + push {r4-r6, lr} + sub sp, #0x18 + add r5, r1, #0x0 + add r6, r0, #0x0 + add r4, r2, #0x0 + cmp r5, #0x0 + beq _02001710 + add r0, #0x24 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + str r3, [sp, #0x0] + beq _020016CC + mov r0, #0xff + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r0, #0x20 + ldrb r2, [r0, #0x0] + add r3, r4, #0x0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x1c + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + lsl r0, r2, #0x1c + add r2, r6, #0x0 + add r2, #0x21 + ldrb r2, [r2, #0x0] + lsr r0, r0, #0x1c + lsl r0, r0, #0x18 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + lsl r2, r2, #0x18 + lsr r0, r0, #0x8 + lsr r2, r2, #0x10 + orr r0, r2 + orr r0, r1 + str r0, [sp, #0x8] + add r0, r6, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + add r2, r5, #0x0 + lsl r0, r0, #0x1a + lsr r0, r0, #0x1a + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [r6, #0xc] + add r6, #0x24 + ldrb r1, [r6, #0x0] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + bl FUN_0201BE3C + add sp, #0x18 + pop {r4-r6, pc} +_020016CC: + mov r0, #0xff + str r0, [sp, #0x4] + ldrb r1, [r6, #0x18] + add r3, r4, #0x0 + lsl r0, r1, #0x1c + lsr r0, r0, #0x1c + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + ldrb r0, [r6, #0x17] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsr r0, r0, #0x8 + lsr r1, r1, #0x10 + orr r0, r1 + orr r0, r2 + str r0, [sp, #0x8] + ldrh r0, [r6, #0x1a] + add r2, r5, #0x0 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1d + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldrh r1, [r6, #0x1a] + ldr r0, [r6, #0xc] + lsl r1, r1, #0x11 + lsr r1, r1, #0x1a + bl FUN_0201BE3C +_02001710: + add sp, #0x18 + pop {r4-r6, pc} + + thumb_func_start FUN_02001714 +FUN_02001714: ; 0x02001714 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + str r3, [sp, #0x0] + ldrh r0, [r5, #0x1a] + add r4, r1, #0x0 + mov r1, #0x1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1a + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r6, r2, #0x0 + bl FUN_02002E4C + ldrh r1, [r5, #0x1a] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1c + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x0] + cmp r0, #0x0 + ble _020017A6 +_02001748: + ldr r1, [r5, #0x0] + lsl r0, r4, #0x3 + str r0, [sp, #0x8] + add r0, r1, r0 + ldr r1, [r0, #0x4] + mov r0, #0x2 + mvn r0, r0 + cmp r1, r0 + beq _02001760 + ldrb r0, [r5, #0x15] + str r0, [sp, #0x4] + b _02001764 +_02001760: + ldrb r0, [r5, #0x14] + str r0, [sp, #0x4] +_02001764: + ldrb r0, [r5, #0x17] + lsl r0, r0, #0x1c + lsr r3, r0, #0x1c + ldr r0, [sp, #0xc] + add r2, r0, #0x0 + mul r2, r6 + add r0, r3, r2 + lsl r0, r0, #0x18 + ldr r3, [r5, #0x8] + lsr r7, r0, #0x18 + cmp r3, #0x0 + beq _02001782 + add r0, r5, #0x0 + add r2, r7, #0x0 + blx r3 +_02001782: + ldr r2, [r5, #0x0] + ldr r1, [sp, #0x8] + add r0, r5, #0x0 + ldr r1, [r2, r1] + ldr r2, [sp, #0x4] + add r3, r7, #0x0 + bl FUN_0200165C + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [sp, #0x10] + add r6, r6, #0x1 + add r1, r0, #0x1 + ldr r0, [sp, #0x0] + str r1, [sp, #0x10] + cmp r1, r0 + blt _02001748 +_020017A6: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020017AC +FUN_020017AC: ; 0x020017AC + push {r3-r5, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x1a] + mov r1, #0x1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1a + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02002E4C + ldrh r1, [r4, #0x1a] + ldrh r5, [r4, #0x2e] + lsl r2, r1, #0x19 + lsr r2, r2, #0x1c + add r0, r2, r0 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + ldrb r0, [r4, #0x17] + mul r3, r5 + ldrb r2, [r4, #0x16] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + add r0, r0, r3 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + lsl r0, r1, #0x10 + lsr r0, r0, #0x1f + cmp r0, #0x3 + bhi _02001802 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020017F2: ; jump table (using 16-bit offset) + .short _020017FA - _020017F2 - 2; case 0 + .short _02001802 - _020017F2 - 2; case 1 + .short _02001802 - _020017F2 - 2; case 2 + .short _02001802 - _020017F2 - 2; case 3 +_020017FA: + ldr r0, [r4, #0x28] + ldr r1, [r4, #0xc] + bl FUN_020136F8 +_02001802: + pop {r3-r5, pc} + + thumb_func_start FUN_02001804 +FUN_02001804: ; 0x02001804 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldrh r0, [r4, #0x1a] + add r5, r1, #0x0 + lsl r1, r0, #0x10 + lsr r1, r1, #0x1f + cmp r1, #0x3 + bhi _02001868 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02001822: ; jump table (using 16-bit offset) + .short _0200182A - _02001822 - 2; case 0 + .short _02001868 - _02001822 - 2; case 1 + .short _02001868 - _02001822 - 2; case 2 + .short _02001868 - _02001822 - 2; case 3 +_0200182A: + lsl r0, r0, #0x11 + lsr r0, r0, #0x1a + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x1 + bl FUN_02002E4C + ldrh r1, [r4, #0x1a] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1c + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + mov r0, #0x8 + str r0, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + ldrb r1, [r4, #0x18] + ldr r0, [r4, #0xc] + ldrb r2, [r4, #0x16] + ldrb r4, [r4, #0x17] + lsl r1, r1, #0x1c + mul r3, r5 + lsl r4, r4, #0x1c + lsr r4, r4, #0x1c + add r3, r4, r3 + lsl r3, r3, #0x10 + lsr r1, r1, #0x1c + lsr r3, r3, #0x10 + bl FUN_020196F4 +_02001868: + add sp, #0x8 + pop {r3-r5, pc} + + thumb_func_start FUN_0200186C +FUN_0200186C: ; 0x0200186C + push {r4-r7} + ldrh r4, [r0, #0x2e] + ldrh r3, [r0, #0x2c] + cmp r1, #0x0 + ldrh r2, [r0, #0x12] + bne _020018FE + cmp r2, #0x1 + bne _02001880 + mov r1, #0x0 + b _02001898 +_02001880: + lsr r7, r2, #0x1f + lsl r6, r2, #0x1f + sub r6, r6, r7 + mov r5, #0x1f + ror r6, r5 + lsr r1, r2, #0x1 + add r5, r7, r6 + add r1, r1, r5 + sub r1, r2, r1 + sub r1, r1, #0x1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 +_02001898: + cmp r3, #0x0 + bne _020018CC + cmp r4, #0x0 + beq _020018C6 + ldr r2, [r0, #0x0] + lsl r1, r3, #0x3 + mov r3, #0x2 + add r1, r2, r1 + mvn r3, r3 +_020018AA: + sub r2, r4, #0x1 + lsl r2, r2, #0x10 + lsr r4, r2, #0x10 + lsl r2, r4, #0x3 + add r2, r1, r2 + ldr r2, [r2, #0x4] + cmp r2, r3 + beq _020018C2 + strh r4, [r0, #0x2e] + mov r0, #0x1 + pop {r4-r7} + bx lr +_020018C2: + cmp r4, #0x0 + bne _020018AA +_020018C6: + mov r0, #0x0 + pop {r4-r7} + bx lr +_020018CC: + cmp r4, r1 + bls _020018F6 + ldr r5, [r0, #0x0] + lsl r2, r3, #0x3 + add r2, r5, r2 + mov r5, #0x2 + mvn r5, r5 +_020018DA: + sub r4, r4, #0x1 + lsl r4, r4, #0x10 + lsr r4, r4, #0x10 + lsl r6, r4, #0x3 + add r6, r2, r6 + ldr r6, [r6, #0x4] + cmp r6, r5 + beq _020018F2 + strh r4, [r0, #0x2e] + mov r0, #0x1 + pop {r4-r7} + bx lr +_020018F2: + cmp r4, r1 + bhi _020018DA +_020018F6: + strh r1, [r0, #0x2e] + sub r1, r3, #0x1 + strh r1, [r0, #0x2c] + b _02001984 +_020018FE: + cmp r2, #0x1 + bne _02001906 + mov r5, #0x0 + b _0200191A +_02001906: + lsr r7, r2, #0x1f + lsl r6, r2, #0x1f + sub r6, r6, r7 + mov r5, #0x1f + ror r6, r5 + lsr r1, r2, #0x1 + add r5, r7, r6 + add r1, r1, r5 + lsl r1, r1, #0x10 + lsr r5, r1, #0x10 +_0200191A: + ldrh r1, [r0, #0x10] + sub r1, r1, r2 + cmp r3, r1 + bne _02001954 + sub r2, r2, #0x1 + cmp r4, r2 + bge _0200194E + ldr r5, [r0, #0x0] + lsl r1, r3, #0x3 + add r1, r5, r1 + mov r5, #0x2 + mvn r5, r5 +_02001932: + add r3, r4, #0x1 + lsl r3, r3, #0x10 + lsr r4, r3, #0x10 + lsl r3, r4, #0x3 + add r3, r1, r3 + ldr r3, [r3, #0x4] + cmp r3, r5 + beq _0200194A + strh r4, [r0, #0x2e] + mov r0, #0x1 + pop {r4-r7} + bx lr +_0200194A: + cmp r4, r2 + blt _02001932 +_0200194E: + mov r0, #0x0 + pop {r4-r7} + bx lr +_02001954: + cmp r4, r5 + bhs _0200197E + ldr r2, [r0, #0x0] + lsl r1, r3, #0x3 + mov r6, #0x2 + add r1, r2, r1 + mvn r6, r6 +_02001962: + add r2, r4, #0x1 + lsl r2, r2, #0x10 + lsr r4, r2, #0x10 + lsl r2, r4, #0x3 + add r2, r1, r2 + ldr r2, [r2, #0x4] + cmp r2, r6 + beq _0200197A + strh r4, [r0, #0x2e] + mov r0, #0x1 + pop {r4-r7} + bx lr +_0200197A: + cmp r4, r5 + blo _02001962 +_0200197E: + strh r5, [r0, #0x2e] + add r1, r3, #0x1 + strh r1, [r0, #0x2c] +_02001984: + mov r0, #0x2 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_0200198C +FUN_0200198C: ; 0x0200198C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldrh r0, [r5, #0x12] + add r4, r1, #0x0 + add r7, r2, #0x0 + cmp r4, r0 + blt _020019B8 + ldrb r1, [r5, #0x18] + ldr r0, [r5, #0xc] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_02019620 + ldrh r1, [r5, #0x2c] + ldrh r3, [r5, #0x12] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02001714 + add sp, #0x8 + pop {r3-r7, pc} +_020019B8: + ldrh r0, [r5, #0x1a] + mov r1, #0x1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x1a + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02002E4C + ldrh r1, [r5, #0x1a] + lsl r1, r1, #0x19 + lsr r1, r1, #0x1c + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r7, #0x0 + ldrb r0, [r5, #0x18] + bne _02001A46 + lsl r0, r0, #0x1c + lsr r7, r0, #0x1c + add r2, r4, #0x0 + lsl r3, r7, #0x4 + mul r2, r6 + orr r3, r7 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r5, #0xc] + mov r1, #0x1 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0201A8C8 + ldrh r1, [r5, #0x2c] + add r0, r5, #0x0 + mov r2, #0x0 + add r3, r4, #0x0 + bl FUN_02001714 + ldrb r0, [r5, #0x17] + lsl r0, r0, #0x1c + lsr r2, r0, #0x1c + ldrh r0, [r5, #0x12] + add r1, r0, #0x0 + mul r1, r6 + add r0, r2, r1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, #0xc] + bl FUN_0201AB0C + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0201AB10 + lsl r0, r0, #0x3 + lsl r1, r6, #0x13 + sub r0, r0, r4 + lsr r1, r1, #0x10 + lsl r0, r0, #0x10 + str r1, [sp, #0x0] + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + ldrb r1, [r5, #0x18] + ldr r0, [r5, #0xc] + mov r2, #0x0 + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r3, r4, #0x0 + bl FUN_020196F4 + add sp, #0x8 + pop {r3-r7, pc} +_02001A46: + lsl r0, r0, #0x1c + lsr r3, r0, #0x1c + add r2, r4, #0x0 + mul r2, r6 + lsl r6, r3, #0x4 + orr r3, r6 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [r5, #0xc] + mov r1, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0201A8C8 + ldrh r0, [r5, #0x12] + ldrh r1, [r5, #0x2c] + add r3, r4, #0x0 + sub r2, r0, r4 + add r1, r1, r2 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_02001714 + ldr r0, [r5, #0xc] + bl FUN_0201AB0C + lsl r0, r0, #0x13 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + ldrb r0, [r5, #0x17] + mov r2, #0x0 + add r3, r2, #0x0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + str r0, [sp, #0x4] + ldrb r1, [r5, #0x18] + ldr r0, [r5, #0xc] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_020196F4 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02001AA4 +FUN_02001AA4: ; 0x02001AA4 + push {r3-r7, lr} + sub sp, #0x10 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r4, r0, #0x0 + str r3, [sp, #0x8] + ldrh r0, [r4, #0x2e] + mov r6, #0x0 + add r5, r6, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x4] + add r7, r6, #0x0 + cmp r0, #0x0 + bls _02001AF6 +_02001AC0: + ldr r1, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_0200186C + orr r5, r0 + cmp r0, #0x2 + bne _02001AEA + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldrh r1, [r4, #0x2c] + ldrh r0, [r4, #0x2e] + ldr r2, [r4, #0x0] + add r0, r1, r0 + lsl r0, r0, #0x3 + add r0, r2, r0 + ldr r1, [r0, #0x4] + mov r0, #0x2 + mvn r0, r0 + cmp r1, r0 + beq _02001AC0 +_02001AEA: + add r0, r7, #0x1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp, #0x4] + cmp r7, r0 + blo _02001AC0 +_02001AF6: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02001B5E + cmp r5, #0x3 + bhi _02001B14 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02001B0C: ; jump table (using 16-bit offset) + .short _02001B14 - _02001B0C - 2; case 0 + .short _02001B1A - _02001B0C - 2; case 1 + .short _02001B38 - _02001B0C - 2; case 2 + .short _02001B38 - _02001B0C - 2; case 3 +_02001B14: + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_02001B1A: + ldr r1, [sp, #0xc] + add r0, r4, #0x0 + bl FUN_02001804 + add r0, r4, #0x0 + bl FUN_020017AC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02001B64 + ldr r0, [r4, #0xc] + bl FUN_020191D0 + b _02001B5E +_02001B38: + ldr r1, [sp, #0xc] + add r0, r4, #0x0 + bl FUN_02001804 + ldr r2, [sp, #0x8] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0200198C + add r0, r4, #0x0 + bl FUN_020017AC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02001B64 + ldr r0, [r4, #0xc] + bl FUN_020191D0 +_02001B5E: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_02001B64 +FUN_02001B64: ; 0x02001B64 + push {r3-r5, lr} + ldr r3, [r0, #0x4] + add r2, r1, #0x0 + cmp r3, #0x0 + beq _02001B7E + ldrh r5, [r0, #0x2c] + ldrh r4, [r0, #0x2e] + ldr r1, [r0, #0x0] + add r4, r5, r4 + lsl r4, r4, #0x3 + add r1, r1, r4 + ldr r1, [r1, #0x4] + blx r3 +_02001B7E: + pop {r3-r5, pc} + + thumb_func_start FUN_02001B80 +FUN_02001B80: ; 0x02001B80 + ldr r3, _02001B88 ; =FUN_020191D0 + ldr r0, [r0, #0xc] + bx r3 + nop +_02001B88: .word FUN_020191D0 + + thumb_func_start FUN_02001B8C +FUN_02001B8C: ; 0x02001B8C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r3, [sp, #0x0] + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + add r6, r1, #0x0 + mov r1, #0x20 + add r7, r2, #0x0 + str r0, [sp, #0x4] + bl FUN_02016998 + add r4, r0, #0x0 + add r3, r5, #0x0 + ldmia r3!, {r0-r1} + add r2, r4, #0x0 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldr r0, [sp, #0x4] + bl FUN_02013690 + str r0, [r4, #0xc] + ldr r0, [sp, #0x24] + str r0, [r4, #0x10] + ldr r0, [sp, #0x0] + strb r0, [r4, #0x15] + add r0, r4, #0x0 + bl FUN_02001FB4 + strb r0, [r4, #0x16] + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + mov r1, #0x0 + strb r0, [r4, #0x1c] + strb r6, [r4, #0x17] + strb r7, [r4, #0x18] + ldrb r0, [r5, #0x8] + bl FUN_02002E4C + add r6, r0, #0x0 + ldrb r0, [r5, #0x8] + mov r1, #0x2 + bl FUN_02002E4C + add r0, r6, r0 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x8] + mov r1, #0x1 + bl FUN_02002E4C + add r6, r0, #0x0 + ldrb r0, [r5, #0x8] + mov r1, #0x3 + bl FUN_02002E4C + add r0, r6, r0 + strb r0, [r4, #0x1a] + add r0, r4, #0x0 + bl FUN_02001FF4 + add r0, r4, #0x0 + bl FUN_02002080 + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02001C14 +FUN_02001C14: ; 0x02001C14 + push {r4, lr} + sub sp, #0x8 + add r4, sp, #0x0 + ldrb r4, [r4, #0x10] + str r4, [sp, #0x0] + ldr r4, [sp, #0x14] + str r4, [sp, #0x4] + bl FUN_02001B8C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + bl FUN_020191D0 + add r0, r4, #0x0 + add sp, #0x8 + pop {r4, pc} + + thumb_func_start FUN_02001C34 +FUN_02001C34: ; 0x02001C34 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldrb r0, [r5, #0x8] + add r6, r1, #0x0 + add r4, r2, #0x0 + mov r1, #0x0 + bl FUN_02002E4C + add r1, r0, #0x0 + str r4, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r2, #0x0 + add r3, r6, #0x0 + bl FUN_02001C14 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02001C5C +FUN_02001C5C: ; 0x02001C5C + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x0 + beq _02001C68 + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x0] +_02001C68: + ldr r0, [r4, #0xc] + bl FUN_020136C0 + ldrb r0, [r4, #0x1c] + add r1, r4, #0x0 + bl FUN_02016A8C + pop {r4, pc} + + thumb_func_start FUN_02001C78 +FUN_02001C78: ; 0x02001C78 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r1, #0x0 + ldr r2, _02001D24 ; =0x021C48B8 + strb r1, [r4, #0x1b] + ldr r2, [r2, #0x48] + mov r5, #0x1 + add r3, r2, #0x0 + tst r3, r5 + beq _02001C9E + ldr r0, _02001D28 ; =0x000005DC + bl FUN_020054C8 + ldrb r0, [r4, #0x15] + ldr r1, [r4, #0x0] + lsl r0, r0, #0x3 + add r0, r1, r0 + ldr r0, [r0, #0x4] + pop {r3-r5, pc} +_02001C9E: + ldr r3, [r4, #0x10] + tst r3, r2 + beq _02001CAE + ldr r0, _02001D28 ; =0x000005DC + bl FUN_020054C8 + sub r0, r5, #0x3 + pop {r3-r5, pc} +_02001CAE: + mov r3, #0x40 + tst r3, r2 + beq _02001CC8 + ldr r2, _02001D28 ; =0x000005DC + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001CC2 + add r0, r5, #0x0 + strb r0, [r4, #0x1b] +_02001CC2: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_02001CC8: + mov r1, #0x80 + tst r1, r2 + beq _02001CE4 + ldr r2, _02001D28 ; =0x000005DC + add r1, r5, #0x0 + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001CDE + mov r0, #0x2 + strb r0, [r4, #0x1b] +_02001CDE: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_02001CE4: + mov r1, #0x20 + tst r1, r2 + beq _02001D00 + ldr r2, _02001D28 ; =0x000005DC + mov r1, #0x2 + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001CFA + mov r0, #0x3 + strb r0, [r4, #0x1b] +_02001CFA: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_02001D00: + mov r1, #0x10 + tst r2, r1 + beq _02001D1C + ldr r2, _02001D28 ; =0x000005DC + mov r1, #0x3 + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001D16 + mov r0, #0x4 + strb r0, [r4, #0x1b] +_02001D16: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_02001D1C: + sub r1, #0x11 + add r0, r1, #0x0 + pop {r3-r5, pc} + nop +_02001D24: .word 0x021C48B8 +_02001D28: .word 0x000005DC + + thumb_func_start FUN_02001D2C +FUN_02001D2C: ; 0x02001D2C + push {r4-r6, lr} + add r2, r1, #0x0 + add r4, r0, #0x0 + mov r1, #0x0 + ldr r3, _02001DD4 ; =0x021C48B8 + strb r1, [r4, #0x1b] + ldr r5, [r3, #0x48] + mov r3, #0x1 + add r6, r5, #0x0 + tst r6, r3 + beq _02001D54 + ldr r0, _02001DD8 ; =0x000005DC + bl FUN_020054C8 + ldrb r0, [r4, #0x15] + ldr r1, [r4, #0x0] + lsl r0, r0, #0x3 + add r0, r1, r0 + ldr r0, [r0, #0x4] + pop {r4-r6, pc} +_02001D54: + ldr r6, [r4, #0x10] + tst r6, r5 + beq _02001D66 + ldr r0, _02001DD8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x1 + mvn r0, r0 + pop {r4-r6, pc} +_02001D66: + mov r6, #0x40 + tst r6, r5 + beq _02001D7E + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001D78 + mov r0, #0x1 + strb r0, [r4, #0x1b] +_02001D78: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_02001D7E: + mov r1, #0x80 + tst r1, r5 + beq _02001D98 + add r1, r3, #0x0 + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001D92 + mov r0, #0x2 + strb r0, [r4, #0x1b] +_02001D92: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_02001D98: + mov r1, #0x20 + tst r1, r5 + beq _02001DB2 + mov r1, #0x2 + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001DAC + mov r0, #0x3 + strb r0, [r4, #0x1b] +_02001DAC: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_02001DB2: + mov r1, #0x10 + add r3, r5, #0x0 + tst r3, r1 + beq _02001DCE + mov r1, #0x3 + bl FUN_02001E64 + cmp r0, #0x1 + bne _02001DC8 + mov r0, #0x4 + strb r0, [r4, #0x1b] +_02001DC8: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_02001DCE: + sub r1, #0x11 + add r0, r1, #0x0 + pop {r4-r6, pc} + .balign 4 +_02001DD4: .word 0x021C48B8 +_02001DD8: .word 0x000005DC + + thumb_func_start FUN_02001DDC +FUN_02001DDC: ; 0x02001DDC + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x5 + bhi _02001E52 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02001DF0: ; jump table (using 16-bit offset) + .short _02001DFC - _02001DF0 - 2; case 0 + .short _02001E0E - _02001DF0 - 2; case 1 + .short _02001E1A - _02001DF0 - 2; case 2 + .short _02001E28 - _02001DF0 - 2; case 3 + .short _02001E36 - _02001DF0 - 2; case 4 + .short _02001E44 - _02001DF0 - 2; case 5 +_02001DFC: + ldr r0, _02001E58 ; =0x000005DC + bl FUN_020054C8 + ldrb r0, [r4, #0x15] + ldr r1, [r4, #0x0] + lsl r0, r0, #0x3 + add r0, r1, r0 + ldr r0, [r0, #0x4] + pop {r4, pc} +_02001E0E: + ldr r0, _02001E58 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x1 + mvn r0, r0 + pop {r4, pc} +_02001E1A: + ldr r2, _02001E58 ; =0x000005DC + mov r1, #0x0 + bl FUN_02001E64 + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_02001E28: + ldr r2, _02001E58 ; =0x000005DC + mov r1, #0x1 + bl FUN_02001E64 + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_02001E36: + ldr r2, _02001E58 ; =0x000005DC + mov r1, #0x2 + bl FUN_02001E64 + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_02001E44: + ldr r2, _02001E58 ; =0x000005DC + mov r1, #0x3 + bl FUN_02001E64 + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_02001E52: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} + .balign 4 +_02001E58: .word 0x000005DC + + thumb_func_start FUN_02001E5C +FUN_02001E5C: ; 0x02001E5C + ldrb r0, [r0, #0x15] + bx lr + + thumb_func_start FUN_02001E60 +FUN_02001E60: ; 0x02001E60 + ldrb r0, [r0, #0x1b] + bx lr + + thumb_func_start FUN_02001E64 +FUN_02001E64: ; 0x02001E64 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r6, r2, #0x0 + ldrb r4, [r5, #0x15] + bl FUN_02001EBC + cmp r0, #0x0 + bne _02001E7C + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02001E7C: + ldrb r0, [r5, #0x8] + mov r1, #0x6 + bl FUN_02002E4C + add r1, sp, #0x8 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, #0x1 + add r2, sp, #0x8 + add r3, r4, #0x0 + bl FUN_020020B0 + mov r0, #0x8 + str r0, [sp, #0x0] + ldrb r0, [r5, #0x1a] + add r3, sp, #0x8 + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldrb r2, [r3, #0x1] + ldrb r3, [r3, #0x0] + ldr r0, [r5, #0x4] + bl FUN_020196F4 + add r0, r5, #0x0 + bl FUN_02002080 + add r0, r6, #0x0 + bl FUN_020054C8 + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02001EBC +FUN_02001EBC: ; 0x02001EBC + push {r4-r6, lr} + add r5, r0, #0x0 + cmp r1, #0x0 + bne _02001EFA + ldrb r6, [r5, #0xa] + cmp r6, #0x1 + bhi _02001ECE + mov r0, #0x0 + pop {r4-r6, pc} +_02001ECE: + ldrb r4, [r5, #0x15] + add r1, r6, #0x0 + add r0, r4, #0x0 + blx _s32_div_f + cmp r1, #0x0 + bne _02001EF2 + ldrb r0, [r5, #0xb] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + bne _02001EE8 + mov r0, #0x0 + pop {r4-r6, pc} +_02001EE8: + sub r0, r6, #0x1 + add r0, r4, r0 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001EF2: + sub r0, r4, #0x1 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001EFA: + cmp r1, #0x1 + bne _02001F32 + ldrb r1, [r5, #0xa] + cmp r1, #0x1 + bhi _02001F08 + mov r0, #0x0 + pop {r4-r6, pc} +_02001F08: + ldrb r6, [r5, #0x15] + sub r4, r1, #0x1 + add r0, r6, #0x0 + blx _s32_div_f + cmp r4, r1 + bne _02001F2A + ldrb r0, [r5, #0xb] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + bne _02001F22 + mov r0, #0x0 + pop {r4-r6, pc} +_02001F22: + sub r0, r6, r4 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001F2A: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001F32: + cmp r1, #0x2 + bne _02001F68 + ldrb r3, [r5, #0x9] + cmp r3, #0x1 + bhi _02001F40 + mov r0, #0x0 + pop {r4-r6, pc} +_02001F40: + ldrb r2, [r5, #0xa] + ldrb r1, [r5, #0x15] + cmp r1, r2 + bhs _02001F60 + ldrb r0, [r5, #0xb] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + bne _02001F54 + mov r0, #0x0 + pop {r4-r6, pc} +_02001F54: + sub r0, r3, #0x1 + mul r0, r2 + add r0, r1, r0 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001F60: + sub r0, r1, r2 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001F68: + ldrb r2, [r5, #0x9] + cmp r2, #0x1 + bhi _02001F72 + mov r0, #0x0 + pop {r4-r6, pc} +_02001F72: + ldrb r1, [r5, #0xa] + ldrb r0, [r5, #0x15] + sub r2, r2, #0x1 + mul r2, r1 + cmp r0, r2 + blt _02001F94 + ldrb r2, [r5, #0xb] + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + bne _02001F8A + mov r0, #0x0 + pop {r4-r6, pc} +_02001F8A: + blx _s32_div_f + lsl r0, r1, #0x18 + asr r2, r0, #0x18 + b _02001F9A +_02001F94: + add r0, r0, r1 + lsl r0, r0, #0x18 + asr r2, r0, #0x18 +_02001F9A: + ldr r1, [r5, #0x0] + lsl r0, r2, #0x3 + add r0, r1, r0 + ldr r1, [r0, #0x4] + mov r0, #0x2 + mvn r0, r0 + cmp r1, r0 + bne _02001FAE + mov r0, #0x0 + pop {r4-r6, pc} +_02001FAE: + strb r2, [r5, #0x15] + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_02001FB4 +FUN_02001FB4: ; 0x02001FB4 + push {r3-r7, lr} + add r5, r0, #0x0 + ldrb r1, [r5, #0x9] + ldrb r0, [r5, #0xa] + mov r6, #0x0 + add r4, r6, #0x0 + mul r0, r1 + cmp r0, #0x0 + ble _02001FF0 + add r7, r6, #0x0 +_02001FC8: + ldr r2, [r5, #0x0] + lsl r1, r4, #0x3 + ldr r1, [r2, r1] + ldrb r0, [r5, #0x8] + add r2, r7, #0x0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r6, r0 + bhs _02001FE0 + add r6, r0, #0x0 +_02001FE0: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldrb r1, [r5, #0x9] + ldrb r0, [r5, #0xa] + mul r0, r1 + cmp r4, r0 + blt _02001FC8 +_02001FF0: + add r0, r6, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02001FF4 +FUN_02001FF4: ; 0x02001FF4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldrb r0, [r5, #0x8] + mov r1, #0x6 + bl FUN_02002E4C + add r1, r0, #0x0 + ldr r0, [r5, #0x4] + bl FUN_02019620 + ldrb r0, [r5, #0x19] + ldrb r1, [r5, #0x16] + ldrb r7, [r5, #0x17] + lsl r0, r0, #0x1 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldrb r0, [r5, #0x9] + mov r6, #0x0 + cmp r0, #0x0 + bls _0200207C +_02002022: + ldrb r2, [r5, #0xa] + mov r4, #0x0 + cmp r2, #0x0 + bls _02002068 +_0200202A: + ldrb r3, [r5, #0xb] + mul r2, r6 + ldrb r0, [r5, #0x1a] + lsl r3, r3, #0x1c + lsr r3, r3, #0x1c + add r0, r0, r3 + ldrb r1, [r5, #0x18] + mul r0, r4 + add r2, r4, r2 + add r0, r1, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r3, [r5, #0x0] + lsl r2, r2, #0x3 + ldr r2, [r3, r2] + ldrb r1, [r5, #0x8] + ldr r0, [r5, #0x4] + add r3, r7, #0x0 + bl FUN_0201BD84 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + ldrb r2, [r5, #0xa] + lsr r4, r0, #0x18 + cmp r4, r2 + blo _0200202A +_02002068: + ldr r0, [sp, #0xc] + add r0, r7, r0 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldrb r0, [r5, #0x9] + cmp r6, r0 + blo _02002022 +_0200207C: + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_02002080 +FUN_02002080: ; 0x02002080 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldrb r1, [r4, #0xb] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1e + cmp r1, #0x1 + beq _020020AA + ldrb r3, [r4, #0x15] + add r1, sp, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_020020B0 + add r3, sp, #0x0 + ldrb r2, [r3, #0x1] + ldrb r3, [r3, #0x0] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x4] + bl FUN_020136F8 +_020020AA: + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_020020B0 +FUN_020020B0: ; 0x020020B0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r7, r3, #0x0 + ldrb r1, [r5, #0xa] + add r0, r7, #0x0 + add r6, r2, #0x0 + blx _s32_div_f + ldrb r2, [r5, #0x19] + ldrb r1, [r5, #0x16] + lsl r2, r2, #0x1 + add r1, r1, r2 + mul r1, r0 + strb r1, [r4, #0x0] + ldrb r1, [r5, #0xa] + add r0, r7, #0x0 + blx _s32_div_f + ldrb r2, [r5, #0xb] + ldrb r3, [r5, #0x1a] + ldrb r0, [r5, #0x18] + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + add r2, r3, r2 + mul r2, r1 + add r0, r0, r2 + strb r0, [r6, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020020EC +FUN_020020EC: ; 0x020020EC + push {r3-r7, lr} + sub sp, #0x20 + ldr r5, [sp, #0x3c] + str r2, [sp, #0xc] + add r7, r0, #0x0 + str r1, [sp, #0x8] + str r3, [sp, #0x10] + ldr r2, _02002194 ; =0x00000141 + mov r0, #0x1 + mov r1, #0x1a + add r3, r5, #0x0 + bl FUN_0200A86C + add r4, r0, #0x0 + mov r0, #0x2 + add r1, r5, #0x0 + bl FUN_02012838 + add r1, r4, #0x0 + mov r2, #0x29 + mov r3, #0x0 + add r6, r0, #0x0 + bl FUN_02012880 + mov r3, #0x2a + add r2, r3, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + sub r3, #0x2c + bl FUN_02012880 + add r0, r4, #0x0 + bl FUN_0200A8B8 + add r0, r5, #0x0 + mov r1, #0x1 + str r6, [sp, #0x14] + bl FUN_02018FF4 + add r1, r0, #0x0 + str r1, [sp, #0x18] + mov r0, #0x0 + add r3, sp, #0x14 + strb r0, [r3, #0x8] + mov r0, #0x1 + strb r0, [r3, #0x9] + mov r0, #0x2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + mov r2, #0xf + bic r0, r2 + strb r0, [r3, #0xb] + ldrb r4, [r3, #0xb] + mov r0, #0x30 + bic r4, r0 + strb r4, [r3, #0xb] + ldrb r0, [r3, #0xb] + bic r0, r2 + strb r0, [r3, #0xb] + ldr r2, [sp, #0x8] + add r0, r7, #0x0 + bl FUN_02019150 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r1, #0x1 + bl FUN_0200CCA4 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + add r3, sp, #0x28 + ldrb r3, [r3, #0x10] + add r0, sp, #0x14 + mov r1, #0x8 + mov r2, #0x0 + bl FUN_02001C14 + add sp, #0x20 + pop {r3-r7, pc} + nop +_02002194: .word 0x00000141 + + thumb_func_start FUN_02002198 +FUN_02002198: ; 0x02002198 + push {r4, lr} + sub sp, #0x8 + mov r4, #0x0 + str r4, [sp, #0x0] + ldr r4, [sp, #0x10] + str r4, [sp, #0x4] + bl FUN_020020EC + add sp, #0x8 + pop {r4, pc} + + thumb_func_start FUN_020021AC +FUN_020021AC: ; 0x020021AC + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02001C78 + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + beq _020021C8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020021EC +_020021C8: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020021CC +FUN_020021CC: ; 0x020021CC + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02001DDC + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + beq _020021E8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020021EC +_020021E8: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020021EC +FUN_020021EC: ; 0x020021EC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + add r4, r1, #0x0 + mov r1, #0x0 + bl FUN_0200CCF8 + ldr r0, [r5, #0x4] + bl FUN_02019178 + ldr r1, [r5, #0x4] + add r0, r4, #0x0 + bl FUN_02016A8C + ldr r0, [r5, #0x0] + bl FUN_02012870 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02001C5C + pop {r3-r5, pc} + + thumb_func_start FUN_02002218 +FUN_02002218: ; 0x02002218 + push {r4, lr} + sub sp, #0x18 + mov r4, #0x8 + lsl r1, r1, #0x10 + str r4, [sp, #0x0] + mov r3, #0x10 + str r3, [sp, #0x4] + lsr r1, r1, #0x10 + str r1, [sp, #0x8] + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #0xc] + str r4, [sp, #0x10] + ldr r1, _02002244 ; =0x020ECAC8 + mov r2, #0x0 + str r3, [sp, #0x14] + add r3, r2, #0x0 + bl FUN_02019658 + add sp, #0x18 + pop {r4, pc} + nop +_02002244: .word 0x020ECAC8 diff --git a/arm9/asm/unk_020023C0.s b/arm9/asm/unk_020023C0.s new file mode 100644 index 00000000..2024d9d7 --- /dev/null +++ b/arm9/asm/unk_020023C0.s @@ -0,0 +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 abs + 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 GX_LoadBGPltt + b _020038A4 +_020037B2: + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GXS_LoadBGPltt + b _020038A4 +_020037BE: + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GX_LoadOBJPltt + b _020038A4 +_020037CA: + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GXS_LoadOBJPltt + b _020038A4 +_020037D6: + blx GX_BeginLoadBGExtPltt + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GX_LoadBGExtPltt + blx GX_EndLoadBGExtPltt + b _020038A4 +_020037EA: + blx GX_BeginLoadBGExtPltt + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + add r1, r7, #0x0 + blx GX_LoadBGExtPltt + blx GX_EndLoadBGExtPltt + b _020038A4 +_020037FE: + blx GX_BeginLoadBGExtPltt + mov r1, #0x1 + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + lsl r1, r1, #0xe + blx GX_LoadBGExtPltt + blx GX_EndLoadBGExtPltt + b _020038A4 +_02003814: + blx GX_BeginLoadBGExtPltt + mov r1, #0x6 + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + lsl r1, r1, #0xc + blx GX_LoadBGExtPltt + blx GX_EndLoadBGExtPltt + b _020038A4 +_0200382A: + blx GXS_BeginLoadBGExtPltt + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GXS_LoadBGExtPltt + blx GXS_EndLoadBGExtPltt + b _020038A4 +_0200383E: + blx GXS_BeginLoadBGExtPltt + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + add r1, r7, #0x0 + blx GXS_LoadBGExtPltt + blx GXS_EndLoadBGExtPltt + b _020038A4 +_02003852: + blx GXS_BeginLoadBGExtPltt + mov r1, #0x1 + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + lsl r1, r1, #0xe + blx GXS_LoadBGExtPltt + blx GXS_EndLoadBGExtPltt + b _020038A4 +_02003868: + blx GXS_BeginLoadBGExtPltt + mov r1, #0x6 + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + lsl r1, r1, #0xc + blx GXS_LoadBGExtPltt + blx GXS_EndLoadBGExtPltt + b _020038A4 +_0200387E: + blx GX_BeginLoadOBJExtPltt + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GX_LoadOBJExtPltt + blx GX_EndLoadOBJExtPltt + b _020038A4 +_02003892: + blx GXS_BeginLoadOBJExtPltt + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x8] + mov r1, #0x0 + blx GXS_LoadOBJExtPltt + blx GXS_EndLoadOBJExtPltt +_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 Call_FillMemWithValue + 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 Call_FillMemWithValue + 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 Call_FillMemWithValue + 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/arm9/asm/unk_02006864.s b/arm9/asm/unk_02006864.s new file mode 100644 index 00000000..dab6adfe --- /dev/null +++ b/arm9/asm/unk_02006864.s @@ -0,0 +1,109321 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_02006864 +FUN_02006864: ; 0x02006864 + add r3, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r3, _02006870 ; =0x020D180C + bx r3 + nop +_02006870: .word 0x020D180C + + thumb_func_start FUN_02006874 +FUN_02006874: ; 0x02006874 + add r0, #0x50 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0200687C +FUN_0200687C: ; 0x0200687C + push {r3-r7, lr} + sub sp, #0x8 + add r6, r2, #0x0 + mov r2, #0x0 + add r5, r3, #0x0 + str r2, [sp, #0x0] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + ldr r4, [sp, #0x24] + bl FUN_02006C98 + add r7, r0, #0x0 + beq _020068C2 + add r1, sp, #0x4 + blx FUN_020B0030 + cmp r0, #0x0 + beq _020068BC + cmp r4, #0x0 + bne _020068A8 + ldr r0, [sp, #0x4] + ldr r4, [r0, #0x10] +_020068A8: + ldr r0, [sp, #0x20] + lsl r1, r5, #0x18 + str r0, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + ldr r2, [r2, #0x14] + lsr r1, r1, #0x18 + add r3, r4, #0x0 + bl FUN_02017E14 +_020068BC: + add r0, r7, #0x0 + bl FUN_02016A18 +_020068C2: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_020068C8 +FUN_020068C8: ; 0x020068C8 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r2, #0x0 + mov r2, #0x1 + add r5, r3, #0x0 + str r2, [sp, #0x0] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + ldr r4, [sp, #0x24] + bl FUN_02006C98 + add r7, r0, #0x0 + beq _0200692C + add r1, sp, #0x4 + blx FUN_020B0180 + cmp r0, #0x0 + beq _02006926 + cmp r4, #0x0 + bne _020068F4 + ldr r0, [sp, #0x4] + ldr r4, [r0, #0x8] +_020068F4: + lsl r1, r5, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + bl FUN_0201886C + cmp r0, #0x0 + beq _02006912 + ldr r2, [sp, #0x4] + lsl r1, r5, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + add r2, #0xc + add r3, r4, #0x0 + bl FUN_02017DFC +_02006912: + ldr r0, [sp, #0x20] + lsl r1, r5, #0x18 + str r0, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + lsr r1, r1, #0x18 + add r2, #0xc + add r3, r4, #0x0 + bl FUN_02017CE8 +_02006926: + add r0, r7, #0x0 + bl FUN_02016A18 +_0200692C: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02006930 +FUN_02006930: ; 0x02006930 + push {lr} + sub sp, #0xc + str r3, [sp, #0x0] + ldr r3, [sp, #0x10] + str r3, [sp, #0x4] + ldr r3, [sp, #0x14] + str r3, [sp, #0x8] + mov r3, #0x0 + bl FUN_02006948 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_02006948 +FUN_02006948: ; 0x02006948 + push {r4-r7, lr} + sub sp, #0xc + add r4, r2, #0x0 + add r7, r3, #0x0 + mov r2, #0x1 + str r2, [sp, #0x0] + ldr r3, [sp, #0x28] + mov r2, #0x0 + ldr r6, [sp, #0x20] + ldr r5, [sp, #0x24] + bl FUN_02006C98 + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02006A2A + add r1, sp, #0x8 + blx FUN_020B0138 + cmp r0, #0x0 + beq _02006A24 + ldr r0, [sp, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r7 + str r1, [r0, #0xc] + cmp r5, #0x0 + bne _02006982 + ldr r0, [sp, #0x8] + ldr r0, [r0, #0x8] + sub r5, r0, r7 +_02006982: + ldr r0, [sp, #0x8] + add r1, r5, #0x0 + ldr r0, [r0, #0xc] + blx DC_FlushRange + cmp r4, #0x7 + bhi _02006A14 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0200699C: ; jump table (using 16-bit offset) + .short _02006A14 - _0200699C - 2; case 0 + .short _02006A14 - _0200699C - 2; case 1 + .short _020069AC - _0200699C - 2; case 2 + .short _020069E0 - _0200699C - 2; case 3 + .short _02006A14 - _0200699C - 2; case 4 + .short _02006A14 - _0200699C - 2; case 5 + .short _020069C6 - _0200699C - 2; case 6 + .short _020069FA - _0200699C - 2; case 7 +_020069AC: + blx GX_BeginLoadBGExtPltt + ldr r0, [sp, #0x8] + ldr r3, _02006A30 ; =0x020ECBB0 + lsl r4, r4, #0x2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0x0 + add r2, r5, #0x0 + blx r3 + blx GX_EndLoadBGExtPltt + b _02006A24 +_020069C6: + blx GXS_BeginLoadBGExtPltt + ldr r0, [sp, #0x8] + ldr r3, _02006A30 ; =0x020ECBB0 + lsl r4, r4, #0x2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0x0 + add r2, r5, #0x0 + blx r3 + blx GXS_EndLoadBGExtPltt + b _02006A24 +_020069E0: + blx GX_BeginLoadOBJExtPltt + ldr r0, [sp, #0x8] + ldr r3, _02006A30 ; =0x020ECBB0 + lsl r4, r4, #0x2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0x0 + add r2, r5, #0x0 + blx r3 + blx GX_EndLoadOBJExtPltt + b _02006A24 +_020069FA: + blx GXS_BeginLoadOBJExtPltt + ldr r0, [sp, #0x8] + ldr r3, _02006A30 ; =0x020ECBB0 + lsl r4, r4, #0x2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0x0 + add r2, r5, #0x0 + blx r3 + blx GXS_EndLoadOBJExtPltt + b _02006A24 +_02006A14: + ldr r0, [sp, #0x8] + ldr r3, _02006A30 ; =0x020ECBB0 + lsl r4, r4, #0x2 + ldr r0, [r0, #0xc] + ldr r3, [r3, r4] + add r1, r6, #0x0 + add r2, r5, #0x0 + blx r3 +_02006A24: + ldr r0, [sp, #0x4] + bl FUN_02016A18 +_02006A2A: + add sp, #0xc + pop {r4-r7, pc} + nop +_02006A30: .word 0x020ECBB0 + + thumb_func_start FUN_02006A34 +FUN_02006A34: ; 0x02006A34 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r2, #0x0 + mov r2, #0x1 + add r6, r3, #0x0 + str r2, [sp, #0x0] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + ldr r4, [sp, #0x20] + bl FUN_02006C98 + add r7, r0, #0x0 + beq _02006A80 + add r1, sp, #0x4 + blx FUN_020B0088 + cmp r0, #0x0 + beq _02006A7A + cmp r4, #0x0 + bne _02006A60 + ldr r0, [sp, #0x4] + ldr r4, [r0, #0x10] +_02006A60: + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + ldr r0, [r0, #0x14] + blx DC_FlushRange + ldr r0, [sp, #0x4] + ldr r3, _02006A88 ; =0x020ECBA0 + lsl r5, r5, #0x2 + ldr r0, [r0, #0x14] + ldr r3, [r3, r5] + add r1, r6, #0x0 + add r2, r4, #0x0 + blx r3 +_02006A7A: + add r0, r7, #0x0 + bl FUN_02016A18 +_02006A80: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + nop +_02006A88: .word 0x020ECBA0 + + thumb_func_start FUN_02006A8C +FUN_02006A8C: ; 0x02006A8C + push {r4-r7, lr} + sub sp, #0xc + add r5, r2, #0x0 + add r4, r3, #0x0 + mov r2, #0x1 + str r2, [sp, #0x0] + ldr r3, [sp, #0x20] + mov r2, #0x0 + bl FUN_02006C98 + add r6, r0, #0x0 + beq _02006AE0 + add r1, sp, #0x4 + blx FUN_020B00F0 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r1, sp, #0x8 + blx FUN_020B0138 + cmp r0, #0x0 + beq _02006ADA + cmp r7, #0x0 + beq _02006ACE + ldr r0, [sp, #0x24] + add r2, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + add r3, r5, #0x0 + blx FUN_020B10E8 + b _02006ADA +_02006ACE: + ldr r0, [sp, #0x8] + ldr r3, [sp, #0x24] + add r1, r4, #0x0 + add r2, r5, #0x0 + blx FUN_020B1240 +_02006ADA: + add r0, r6, #0x0 + bl FUN_02016A18 +_02006AE0: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02006AE4 +FUN_02006AE4: ; 0x02006AE4 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r3, #0x0 + mov r3, #0x1 + str r3, [sp, #0x0] + ldr r3, [sp, #0x24] + bl FUN_02006C98 + add r6, r0, #0x0 + ldr r4, _02006B30 ; =0x00000000 + beq _02006B28 + add r1, sp, #0x4 + blx FUN_020B0088 + cmp r0, #0x0 + beq _02006B22 + ldr r1, [sp, #0x18] + cmp r1, #0x0 + beq _02006B0E + ldr r0, [sp, #0x4] + str r1, [r0, #0x10] +_02006B0E: + ldr r4, _02006B34 ; =0x020ECBA8 + lsl r5, r5, #0x2 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x28] + ldr r4, [r4, r5] + blx r4 + ldr r0, [sp, #0x4] + ldr r4, [r0, #0x10] +_02006B22: + add r0, r6, #0x0 + bl FUN_02016A18 +_02006B28: + add r0, r4, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + nop +_02006B30: .word 0x00000000 +_02006B34: .word 0x020ECBA8 + + thumb_func_start FUN_02006B38 +FUN_02006B38: ; 0x02006B38 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r3, #0x0 + mov r3, #0x1 + str r3, [sp, #0x0] + ldr r3, [sp, #0x24] + bl FUN_02006C98 + add r4, r0, #0x0 + beq _02006B9E + add r1, sp, #0x4 + blx FUN_020B0088 + cmp r0, #0x0 + beq _02006B98 + ldr r1, [sp, #0x18] + cmp r1, #0x0 + beq _02006B60 + ldr r0, [sp, #0x4] + str r1, [r0, #0x10] +_02006B60: + ldr r0, [sp, #0x1c] + cmp r0, #0x1 + beq _02006B6C + cmp r0, #0x2 + beq _02006B7C + b _02006B88 +_02006B6C: + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + ldr r0, _02006BA4 ; =0x00300010 + and r1, r0 + ldr r0, [sp, #0x4] + str r1, [r0, #0x8] + b _02006B88 +_02006B7C: + ldr r0, _02006BA8 ; =0x04001000 + ldr r1, [r0, #0x0] + ldr r0, _02006BA4 ; =0x00300010 + and r1, r0 + ldr r0, [sp, #0x4] + str r1, [r0, #0x8] +_02006B88: + lsl r6, r5, #0x2 + ldr r5, _02006BAC ; =0x020ECB98 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x28] + ldr r5, [r5, r6] + blx r5 +_02006B98: + add r0, r4, #0x0 + bl FUN_02016A18 +_02006B9E: + add sp, #0x8 + pop {r4-r6, pc} + nop +_02006BA4: .word 0x00300010 +_02006BA8: .word 0x04001000 +_02006BAC: .word 0x020ECB98 + + thumb_func_start FUN_02006BB0 +FUN_02006BB0: ; 0x02006BB0 + push {r3-r5, lr} + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r3, [sp, #0x10] + bl FUN_02006C98 + add r5, r0, #0x0 + beq _02006BD6 + add r1, r4, #0x0 + blx FUN_020B0030 + cmp r0, #0x0 + bne _02006BD6 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_02006BD6: + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02006BDC +FUN_02006BDC: ; 0x02006BDC + push {r3-r5, lr} + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r3, [sp, #0x10] + bl FUN_02006C98 + add r5, r0, #0x0 + beq _02006C02 + add r1, r4, #0x0 + blx FUN_020B0180 + cmp r0, #0x0 + bne _02006C02 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_02006C02: + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02006C08 +FUN_02006C08: ; 0x02006C08 + push {r3-r5, lr} + add r5, r2, #0x0 + mov r2, #0x0 + str r2, [sp, #0x0] + bl FUN_02006C98 + add r4, r0, #0x0 + beq _02006C2C + add r1, r5, #0x0 + blx FUN_020B0138 + cmp r0, #0x0 + bne _02006C2C + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_02006C2C: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02006C30 +FUN_02006C30: ; 0x02006C30 + push {r3-r5, lr} + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r3, [sp, #0x10] + bl FUN_02006C98 + add r5, r0, #0x0 + beq _02006C56 + add r1, r4, #0x0 + blx FUN_020AFEB8 + cmp r0, #0x0 + bne _02006C56 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_02006C56: + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02006C5C +FUN_02006C5C: ; 0x02006C5C + push {r3-r5, lr} + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r3, [sp, #0x10] + bl FUN_02006C98 + add r5, r0, #0x0 + beq _02006C82 + add r1, r4, #0x0 + blx thunk_FUN_020afda0_2 + cmp r0, #0x0 + bne _02006C82 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_02006C82: + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02006C88 +FUN_02006C88: ; 0x02006C88 + push {r3, lr} + add r3, r2, #0x0 + mov r2, #0x0 + str r2, [sp, #0x0] + mov r2, #0x1 + bl FUN_02006C98 + pop {r3, pc} + + thumb_func_start FUN_02006C98 +FUN_02006C98: ; 0x02006C98 + push {r3-r7, lr} + add r5, r2, #0x0 + add r7, r0, #0x0 + add r6, r3, #0x0 + str r1, [sp, #0x0] + cmp r5, #0x0 + bne _02006CAC + ldr r2, [sp, #0x18] + cmp r2, #0x1 + bne _02006CC0 +_02006CAC: + ldr r1, [sp, #0x0] + add r0, r7, #0x0 + bl LoadFromNARC_7 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020169D8 + add r4, r0, #0x0 + b _02006CCE +_02006CC0: + bl LoadFromNARC_7 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 +_02006CCE: + cmp r4, #0x0 + beq _02006D12 + ldr r2, [sp, #0x0] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl LoadFromNARC + cmp r5, #0x0 + beq _02006D12 + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bne _02006CF2 + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + lsr r1, r1, #0x8 + bl FUN_02016998 + b _02006CFC +_02006CF2: + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + lsr r1, r1, #0x8 + bl FUN_020169D8 +_02006CFC: + add r5, r0, #0x0 + cmp r5, #0x0 + beq _02006D10 + add r0, r4, #0x0 + add r1, r5, #0x0 + blx MI_UncompressLZ8 + add r0, r4, #0x0 + bl FUN_02016A18 +_02006D10: + add r4, r5, #0x0 +_02006D12: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02006D18 +FUN_02006D18: ; 0x02006D18 + push {r3-r7, lr} + sub sp, #0x8 + ldr r5, [sp, #0x24] + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r6, r2, #0x0 + add r7, r3, #0x0 + bl LoadFromNARC_7 + str r0, [r5, #0x0] + cmp r6, #0x0 + bne _02006D36 + ldr r0, [sp, #0x20] + cmp r0, #0x1 + bne _02006D42 +_02006D36: + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_020169D8 + add r4, r0, #0x0 + b _02006D4C +_02006D42: + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 +_02006D4C: + cmp r4, #0x0 + beq _02006D92 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r4, #0x0 + bl LoadFromNARC + cmp r6, #0x0 + beq _02006D92 + ldr r0, [r4, #0x0] + lsr r0, r0, #0x8 + str r0, [r5, #0x0] + ldr r0, [sp, #0x20] + cmp r0, #0x0 + bne _02006D74 + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_02016998 + b _02006D7C +_02006D74: + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_020169D8 +_02006D7C: + add r5, r0, #0x0 + cmp r5, #0x0 + beq _02006D90 + add r0, r4, #0x0 + add r1, r5, #0x0 + blx MI_UncompressLZ8 + add r0, r4, #0x0 + bl FUN_02016A18 +_02006D90: + add r4, r5, #0x0 +_02006D92: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02006D98 +FUN_02006D98: ; 0x02006D98 + push {r3-r7, lr} + sub sp, #0x10 + mov r1, #0xba + lsl r1, r1, #0x2 + add r5, r0, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0xa6 + lsl r0, r0, #0x2 + add r1, r0, #0x0 + add r3, r0, #0x0 + str r5, [r4, r0] + mov r2, #0x0 + add r1, #0x48 + strb r2, [r4, r1] + add r1, r0, #0x4 + str r2, [r4, r1] + mov r1, #0x2 + lsl r1, r1, #0xe + add r3, #0x8 + str r1, [r4, r3] + add r3, r0, #0x0 + add r3, #0xc + str r2, [r4, r3] + mov r2, #0x80 + add r0, #0x10 + str r2, [r4, r0] + add r0, r5, #0x0 + bl FUN_02016998 + mov r1, #0xab + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r5, #0x0 + mov r1, #0xc0 + bl FUN_02016998 + mov r1, #0x2b + lsl r1, r1, #0x4 + str r0, [r4, r1] + ldr r1, [r4, r1] + mov r0, #0x0 + mov r2, #0x4 + blx MIi_CpuClearFast + add r0, r5, #0x0 + mov r1, #0xc0 + bl FUN_02016998 + mov r1, #0xad + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, [r4, r1] + mov r0, #0x0 + mov r2, #0x4 + blx MIi_CpuClearFast + mov r6, #0x0 + add r5, r4, #0x0 + add r7, r6, #0x0 +_02006E12: + add r0, r7, #0x0 + add r1, r5, #0x0 + mov r2, #0x98 + blx MIi_CpuClearFast + add r6, r6, #0x1 + add r5, #0x98 + cmp r6, #0x4 + blt _02006E12 + blx FUN_020B02C8 + ldr r2, _02006EC8 ; =0x000002E3 + mov r0, #0x0 + strb r0, [r4, r2] + sub r2, #0x4b + ldr r2, [r4, r2] + mov r0, #0x75 + mov r1, #0xd3 + bl LoadFromNarc_2 + add r1, sp, #0xc + str r0, [sp, #0x4] + blx FUN_020B0088 + ldr r0, [sp, #0xc] + mov r1, #0xaf + ldr r0, [r0, #0x4] + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [sp, #0xc] + ldr r2, [r0, #0x8] + add r0, r1, #0x4 + str r2, [r4, r0] + ldr r0, [sp, #0xc] + add r1, #0x8 + ldr r0, [r0, #0xc] + str r0, [r4, r1] + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x14] + str r0, [sp, #0x8] + bl FUN_02008A74 + ldr r1, [sp, #0x8] + mov r0, #0xab + lsl r0, r0, #0x2 + mov r2, #0x2 + ldrb r1, [r1, #0x0] + ldr r0, [r4, r0] + lsl r2, r2, #0xe + blx MI_CpuFill8 + mov r0, #0x0 + mov r7, #0xab + ldr r6, _02006ECC ; =0x00005050 + mov r12, r0 + str r0, [sp, #0x0] + add r3, r0, #0x0 + lsl r7, r7, #0x2 +_02006E86: + ldr r2, [sp, #0x8] + ldr r0, [sp, #0x0] + mov r1, #0x0 + add r2, r2, r0 +_02006E8E: + ldr r5, [r4, r7] + ldrb r0, [r2, #0x0] + add r5, r3, r5 + add r5, r1, r5 + add r1, r1, #0x1 + add r2, r2, #0x1 + strb r0, [r5, r6] + cmp r1, #0x28 + blt _02006E8E + ldr r0, [sp, #0x0] + add r3, #0x80 + add r0, #0x50 + str r0, [sp, #0x0] + mov r0, r12 + add r0, r0, #0x1 + mov r12, r0 + cmp r0, #0x50 + blt _02006E86 + ldr r0, [sp, #0x4] + bl FUN_02016A18 + ldr r0, _02006ED0 ; =0x000002E1 + mov r1, #0x1 + strb r1, [r4, r0] + add r0, r0, #0x1 + strb r1, [r4, r0] + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02006EC8: .word 0x000002E3 +_02006ECC: .word 0x00005050 +_02006ED0: .word 0x000002E1 + + thumb_func_start FUN_02006ED4 +FUN_02006ED4: ; 0x02006ED4 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + bl FUN_020082A8 + add r0, r5, #0x0 + bl FUN_020086F4 + blx FUN_020BB394 + mov r6, #0x9f + mov r0, #0x0 + ldr r4, _02007250 ; =0x04000444 + lsl r6, r6, #0x2 + str r0, [r4, #0x0] + str r0, [sp, #0x18] + add r0, r6, #0x0 + sub r0, #0xc + ldr r1, [r5, r0] + add r3, r6, #0x0 + ldr r2, [r5, r6] + add r0, r6, #0x0 + sub r3, #0x8 + add r6, #0x20 + ldr r3, [r5, r3] + ldr r6, [r5, r6] + sub r0, #0x10 + ldr r0, [r5, r0] + lsr r6, r6, #0x3 + lsl r3, r3, #0x1a + orr r6, r3 + mov r3, #0x1 + lsl r3, r3, #0x1e + lsl r0, r0, #0x14 + orr r3, r6 + lsl r1, r1, #0x17 + orr r0, r3 + lsl r2, r2, #0x1d + orr r0, r1 + orr r0, r2 + str r0, [r4, #0x64] + ldr r0, [sp, #0x18] + add r4, r5, #0x0 + str r0, [sp, #0x14] + ldr r0, _02007254 ; =0x020ECD4C + str r0, [sp, #0x1c] +_02006F30: + ldr r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _02006F46 + ldr r0, [r4, #0x54] + lsl r1, r0, #0x1f + lsr r1, r1, #0x1f + bne _02006F46 + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + beq _02006F48 +_02006F46: + b _020072BC +_02006F48: + ldr r2, [r4, #0x68] + cmp r2, #0x0 + beq _02006F56 + add r1, r4, #0x0 + add r0, r4, #0x0 + add r1, #0x24 + blx r2 +_02006F56: + blx FUN_020BB394 + ldr r0, _02007258 ; =0x000002E3 + ldrb r0, [r5, r0] + cmp r0, #0x1 + beq _02006F68 + ldr r0, _0200725C ; =0x04000454 + mov r1, #0x0 + str r1, [r0, #0x0] +_02006F68: + add r0, r4, #0x0 + bl FUN_02007F48 + mov r0, #0x9d + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + cmp r0, #0x2 + bne _02006F7C + mov r0, #0x1 + b _02006F7E +_02006F7C: + mov r0, #0x0 +_02006F7E: + mov r1, #0xa9 + lsl r1, r1, #0x2 + ldr r2, [r5, r1] + ldr r1, [sp, #0x14] + add r2, r2, r1 + mov r1, #0x4 + sub r0, r1, r0 + add r1, r2, #0x0 + lsr r1, r0 + ldr r0, _02007260 ; =0x040004AC + str r1, [r0, #0x0] + ldr r0, [r4, #0x28] + lsl r1, r0, #0xc + mov r0, #0x26 + ldrsh r2, [r4, r0] + mov r0, #0x42 + ldrsh r0, [r4, r0] + add r0, r2, r0 + mov r2, #0x24 + ldrsh r3, [r4, r2] + mov r2, #0x40 + ldrsh r2, [r4, r2] + lsl r0, r0, #0xc + add r2, r3, r2 + lsl r3, r2, #0xc + ldr r2, _02007264 ; =0x04000470 + str r3, [r2, #0x0] + str r0, [r2, #0x0] + add r0, r2, #0x0 + str r1, [r0, #0x0] + ldrh r0, [r4, #0x38] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02007268 ; =0x020FFA38 + add r2, r0, r1 + ldrsh r0, [r0, r1] + mov r1, #0x2 + ldrsh r1, [r2, r1] + blx G3_RotX + ldrh r0, [r4, #0x3a] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02007268 ; =0x020FFA38 + add r2, r0, r1 + ldrsh r0, [r0, r1] + mov r1, #0x2 + ldrsh r1, [r2, r1] + blx G3_RotY + ldrh r0, [r4, #0x3c] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02007268 ; =0x020FFA38 + add r2, r0, r1 + ldrsh r0, [r0, r1] + mov r1, #0x2 + ldrsh r1, [r2, r1] + blx G3_RotZ + ldr r0, [r4, #0x28] + lsl r0, r0, #0xc + neg r1, r0 + mov r0, #0x26 + ldrsh r2, [r4, r0] + mov r0, #0x42 + ldrsh r0, [r4, r0] + add r0, r2, r0 + mov r2, #0x24 + ldrsh r3, [r4, r2] + mov r2, #0x40 + ldrsh r2, [r4, r2] + lsl r0, r0, #0xc + neg r0, r0 + add r2, r3, r2 + lsl r2, r2, #0xc + neg r3, r2 + ldr r2, _02007264 ; =0x04000470 + str r3, [r2, #0x0] + str r0, [r2, #0x0] + add r0, r2, #0x0 + str r1, [r0, #0x0] + ldr r3, [r4, #0x50] + lsl r0, r3, #0x11 + lsr r0, r0, #0x1b + lsl r2, r3, #0x16 + lsl r1, r0, #0xa + lsl r0, r3, #0x1b + lsr r2, r2, #0x1b + lsr r0, r0, #0x1b + lsl r2, r2, #0x5 + orr r0, r2 + orr r0, r1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + lsl r0, r3, #0x2 + lsr r0, r0, #0x1b + lsl r1, r0, #0xa + lsl r0, r3, #0xc + lsl r3, r3, #0x7 + lsr r3, r3, #0x1b + lsr r0, r0, #0x1b + lsl r3, r3, #0x5 + orr r0, r3 + orr r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + add r1, r2, #0x0 + orr r1, r0 + mov r0, #0x2 + lsl r0, r0, #0xe + orr r1, r0 + ldr r0, _0200726C ; =0x040004C0 + str r1, [r0, #0x0] + ldr r1, _02007270 ; =0x00004210 + add r0, r0, #0x4 + str r1, [r0, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [r4, #0x54] + lsl r1, r1, #0x19 + lsl r0, r0, #0x19 + lsr r1, r1, #0x1a + lsr r0, r0, #0x1b + lsl r2, r1, #0x18 + mov r1, #0xc0 + lsl r0, r0, #0x10 + orr r1, r2 + orr r1, r0 + ldr r0, _02007274 ; =0x040004A4 + str r1, [r0, #0x0] + ldr r0, [r4, #0x54] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _02007104 + add r0, r4, #0x0 + add r0, #0x5b + ldrb r0, [r0, #0x0] + add r2, r4, #0x0 + add r2, #0x44 + lsl r1, r0, #0x4 + ldr r0, [sp, #0x1c] + ldrb r3, [r2, #0x0] + add r0, r0, r1 + ldr r2, [sp, #0x1c] + ldr r0, [r0, #0x4] + ldr r1, [r2, r1] + add r6, r3, r1 + add r1, r4, #0x0 + add r1, #0x46 + ldrb r1, [r1, #0x0] + mov r12, r1 + add r1, r4, #0x0 + add r1, #0x45 + ldrb r2, [r1, #0x0] + add r1, r2, r0 + add r0, r4, #0x0 + add r0, #0x47 + ldrb r7, [r0, #0x0] + mov r0, r12 + add r0, r0, r6 + str r7, [sp, #0x0] + str r6, [sp, #0x4] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + add r0, r7, r1 + str r0, [sp, #0x10] + mov r1, #0x24 + ldrsh r1, [r4, r1] + mov r0, #0x2c + ldrsh r0, [r4, r0] + sub r1, #0x28 + add r1, r1, r3 + add r0, r0, r1 + mov r3, #0x26 + ldrsh r3, [r4, r3] + mov r1, #0x2e + lsl r0, r0, #0x10 + sub r3, #0x28 + add r2, r3, r2 + ldrsh r1, [r4, r1] + ldr r3, [r4, #0x28] + asr r0, r0, #0x10 + add r2, r1, r2 + mov r1, #0x6e + ldrsb r1, [r4, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x30] + lsl r1, r1, #0x10 + add r2, r3, r2 + asr r1, r1, #0x10 + mov r3, r12 + blx FUN_020B0250 + b _02007174 +_02007104: + mov r0, #0x34 + ldrsh r1, [r4, r0] + mov r0, #0x50 + ldr r2, [sp, #0x1c] + mul r0, r1 + asr r3, r0, #0x8 + mov r0, #0x36 + ldrsh r1, [r4, r0] + mov r0, #0x50 + ldr r6, [sp, #0x1c] + mul r0, r1 + asr r1, r0, #0x8 + add r0, r4, #0x0 + add r0, #0x5b + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x4 + str r1, [sp, #0x0] + add r2, r2, r0 + ldr r0, [r6, r0] + lsr r6, r1, #0x1f + str r0, [sp, #0x4] + ldr r0, [r2, #0x4] + add r6, r1, r6 + str r0, [sp, #0x8] + ldr r0, [r2, #0x8] + asr r1, r6, #0x1 + str r0, [sp, #0xc] + ldr r0, [r2, #0xc] + str r0, [sp, #0x10] + mov r0, #0x24 + ldrsh r2, [r4, r0] + lsr r0, r3, #0x1f + add r0, r3, r0 + asr r0, r0, #0x1 + sub r2, r2, r0 + mov r0, #0x2c + ldrsh r0, [r4, r0] + ldr r6, [r4, #0x28] + add r0, r2, r0 + mov r2, #0x26 + ldrsh r2, [r4, r2] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r2, r2, r1 + mov r1, #0x2e + ldrsh r1, [r4, r1] + add r2, r2, r1 + mov r1, #0x6e + ldrsb r1, [r4, r1] + sub r1, r2, r1 + ldr r2, [r4, #0x30] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add r2, r6, r2 + blx FUN_020B0250 +_02007174: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r1, r0, #0x1e + lsr r1, r1, #0x1e + beq _0200719A + lsl r0, r0, #0x19 + lsr r0, r0, #0x1e + beq _0200719A + ldr r0, [r4, #0x54] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _0200719A + mov r0, #0xb9 + lsl r0, r0, #0x2 + ldr r1, [r5, r0] + mov r0, #0x1 + tst r0, r1 + beq _0200719C +_0200719A: + b _020072BC +_0200719C: + ldr r0, _02007258 ; =0x000002E3 + ldrb r0, [r5, r0] + cmp r0, #0x1 + beq _020071AA + ldr r0, _0200725C ; =0x04000454 + mov r1, #0x0 + str r1, [r0, #0x0] +_020071AA: + mov r0, #0x9d + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + cmp r0, #0x2 + bne _020071B8 + mov r1, #0x1 + b _020071BA +_020071B8: + mov r1, #0x0 +_020071BA: + add r2, r4, #0x0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + mov r0, #0xa9 + lsl r0, r0, #0x2 + lsl r2, r2, #0x1e + lsr r2, r2, #0x1e + add r2, r2, #0x3 + ldr r0, [r5, r0] + lsl r2, r2, #0x5 + add r2, r0, r2 + mov r0, #0x4 + sub r0, r0, r1 + add r1, r2, #0x0 + lsr r1, r0 + ldr r0, _02007260 ; =0x040004AC + str r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + beq _020071FA + mov r0, #0x34 + ldrsh r0, [r4, r0] + lsl r0, r0, #0x6 + asr r3, r0, #0x8 + mov r0, #0x36 + ldrsh r0, [r4, r0] + lsl r0, r0, #0x4 + asr r1, r0, #0x8 + b _020071FE +_020071FA: + mov r3, #0x40 + mov r1, #0x10 +_020071FE: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _02007220 + mov r0, #0x74 + ldrsh r2, [r4, r0] + mov r0, #0x24 + mov r6, #0x2c + ldrsh r0, [r4, r0] + ldrsh r6, [r4, r6] + add r0, r0, r6 + add r2, r2, r0 + add r0, r4, #0x0 + add r0, #0x70 + strh r2, [r0, #0x0] +_02007220: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _02007242 + mov r0, #0x76 + ldrsh r2, [r4, r0] + mov r0, #0x26 + mov r6, #0x2e + ldrsh r0, [r4, r0] + ldrsh r6, [r4, r6] + add r0, r0, r6 + add r2, r2, r0 + add r0, r4, #0x0 + add r0, #0x72 + strh r2, [r0, #0x0] +_02007242: + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + ldr r2, _02007278 ; =0x020ECBD0 + ldr r6, _02007278 ; =0x020ECBD0 + b _0200727C + nop +_02007250: .word 0x04000444 +_02007254: .word 0x020ECD4C +_02007258: .word 0x000002E3 +_0200725C: .word 0x04000454 +_02007260: .word 0x040004AC +_02007264: .word 0x04000470 +_02007268: .word 0x020FFA38 +_0200726C: .word 0x040004C0 +_02007270: .word 0x00004210 +_02007274: .word 0x040004A4 +_02007278: .word 0x020ECBD0 +_0200727C: + lsl r0, r0, #0x19 + lsr r0, r0, #0x1e + lsl r0, r0, #0x4 + str r1, [sp, #0x0] + add r2, r2, r0 + ldr r0, [r6, r0] + lsr r6, r1, #0x1f + str r0, [sp, #0x4] + ldr r0, [r2, #0x4] + add r6, r1, r6 + str r0, [sp, #0x8] + ldr r0, [r2, #0x8] + asr r1, r6, #0x1 + str r0, [sp, #0xc] + ldr r0, [r2, #0xc] + str r0, [sp, #0x10] + mov r0, #0x70 + ldrsh r2, [r4, r0] + lsr r0, r3, #0x1f + add r0, r3, r0 + asr r0, r0, #0x1 + sub r0, r2, r0 + mov r2, #0x72 + ldrsh r2, [r4, r2] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r1, r2, r1 + lsl r1, r1, #0x10 + ldr r2, _020072E0 ; =0xFFFFFC18 + asr r1, r1, #0x10 + blx FUN_020B0250 +_020072BC: + ldr r0, [sp, #0x14] + add r4, #0x98 + add r0, #0x20 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + add r0, #0x20 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #0x1 + str r0, [sp, #0x18] + cmp r0, #0x4 + bge _020072D6 + b _02006F30 +_020072D6: + ldr r0, _020072E4 ; =0x04000448 + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_020072E0: .word 0xFFFFFC18 +_020072E4: .word 0x04000448 + + thumb_func_start FUN_020072E8 +FUN_020072E8: ; 0x020072E8 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x2b + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xad + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02007314 +FUN_02007314: ; 0x02007314 + push {r3-r4} + add r1, r0, #0x0 + mov r3, #0x0 + add r1, #0x59 + strb r3, [r1, #0x0] + add r1, r3, #0x0 +_02007320: + add r2, r0, r3 + add r2, #0x5c + add r3, r3, #0x1 + strb r1, [r2, #0x0] + cmp r3, #0xa + blt _02007320 + add r2, r0, #0x0 + add r2, #0x59 + ldrb r2, [r2, #0x0] + lsl r2, r2, #0x1 + add r3, r0, r2 + mov r2, #0x84 + ldrsb r4, [r3, r2] + add r3, r2, #0x0 + sub r3, #0x85 + cmp r4, r3 + bne _0200734A + add r0, #0x5b + strb r1, [r0, #0x0] + pop {r3-r4} + bx lr +_0200734A: + add r1, r0, #0x0 + mov r3, #0x1 + add r1, #0x58 + strb r3, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x59 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x1 + add r1, r0, r1 + ldrsb r2, [r1, r2] + add r1, r0, #0x0 + add r1, #0x5b + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x59 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x1 + add r1, r0, r1 + add r1, #0x85 + ldrb r1, [r1, #0x0] + add r0, #0x5a + strb r1, [r0, #0x0] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0200737C +FUN_0200737C: ; 0x0200737C + add r2, r0, #0x0 + ldr r3, _0200738C ; =MI_CpuCopy8 + add r2, #0x84 + add r0, r1, #0x0 + add r1, r2, #0x0 + mov r2, #0x14 + bx r3 + nop +_0200738C: .word MI_CpuCopy8 + + thumb_func_start FUN_02007390 +FUN_02007390: ; 0x02007390 + add r0, #0x58 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0200739C + mov r0, #0x1 + bx lr +_0200739C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020073A0 +FUN_020073A0: ; 0x020073A0 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x14] + mov r4, #0x0 +_020073AE: + ldr r1, [r0, #0x0] + lsl r1, r1, #0x1f + lsr r1, r1, #0x1f + beq _020073BE + add r4, r4, #0x1 + add r0, #0x98 + cmp r4, #0x4 + blt _020073AE +_020073BE: + cmp r4, #0x4 + bne _020073C6 + bl ErrorHandling +_020073C6: + ldr r0, [sp, #0x30] + ldr r3, [sp, #0x14] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x38] + str r4, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + add r2, r7, #0x0 + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_020073E8 + add sp, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_020073E8 +FUN_020073E8: ; 0x020073E8 + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x8] + ldr r1, [sp, #0x28] + add r4, r0, #0x0 + mov r0, #0x98 + add r6, r1, #0x0 + mul r6, r0 + ldr r0, [r4, r6] + str r2, [sp, #0x0] + lsl r0, r0, #0x1f + str r3, [sp, #0x4] + lsr r0, r0, #0x1f + beq _02007408 + bl ErrorHandling +_02007408: + add r5, r4, r6 + mov r0, #0x0 + add r1, r5, #0x0 + mov r2, #0x98 + blx MIi_CpuClearFast + ldr r1, [r4, r6] + mov r0, #0x1 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + str r0, [r4, r6] + ldr r1, [r4, r6] + mov r0, #0x80 + orr r0, r1 + str r0, [r4, r6] + mov r0, #0x80 + ldr r1, [r4, r6] + add r0, #0x80 + orr r0, r1 + str r0, [r4, r6] + add r2, r5, #0x0 + ldr r0, [r4, r6] + mov r1, #0x7e + bic r0, r1 + ldr r1, [sp, #0x24] + add r7, r2, #0x4 + lsl r1, r1, #0x1a + lsr r1, r1, #0x19 + orr r0, r1 + str r0, [r4, r6] + ldr r0, [sp, #0x8] + mov r12, r0 + mov r3, r12 + ldmia r3!, {r0-r1} + stmia r7!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r7!, {r0-r1} + add r7, r2, #0x0 + ldr r3, [sp, #0x8] + add r7, #0x14 + ldmia r3!, {r0-r1} + stmia r7!, {r0-r1} + str r3, [sp, #0x8] + ldmia r3!, {r0-r1} + stmia r7!, {r0-r1} + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + lsl r1, r1, #0x10 + asr r7, r1, #0x10 + strh r0, [r2, #0x24] + str r3, [sp, #0x8] + ldr r1, [sp, #0x20] + strh r7, [r2, #0x26] + str r1, [r2, #0x28] + mov r1, #0x80 + add r1, #0x80 + strh r1, [r2, #0x34] + strh r1, [r2, #0x36] + ldr r1, [r5, #0x54] + mov r3, #0x7c + bic r1, r3 + mov r3, #0x7c + orr r1, r3 + str r1, [r5, #0x54] + ldr r1, [r5, #0x50] + mov r3, #0x1f + bic r1, r3 + mov r3, #0x1f + orr r3, r1 + ldr r1, _02007520 ; =0xFFFFFC1F + and r1, r3 + mov r3, #0x1f + lsl r3, r3, #0x5 + orr r3, r1 + ldr r1, _02007524 ; =0xFFFF83FF + and r1, r3 + mov r3, #0x1f + lsl r3, r3, #0xa + orr r3, r1 + ldr r1, _02007528 ; =0xFFF07FFF + and r1, r3 + mov r3, #0x80 + lsl r3, r3, #0xc + orr r3, r1 + ldr r1, _0200752C ; =0xFE0FFFFF + and r1, r3 + mov r3, #0x80 + lsl r3, r3, #0x11 + orr r3, r1 + ldr r1, _02007530 ; =0xC1FFFFFF + and r1, r3 + mov r3, #0x80 + lsl r3, r3, #0x16 + orr r1, r3 + str r1, [r5, #0x50] + ldr r1, [sp, #0x30] + str r1, [r2, #0x68] + add r1, r2, #0x0 + add r1, #0x70 + strh r0, [r1, #0x0] + add r2, #0x72 + add r0, r5, #0x0 + strh r7, [r2, #0x0] + add r0, #0x6c + ldrh r1, [r0, #0x0] + mov r0, #0x4 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x6c + strh r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x6c + ldrh r1, [r0, #0x0] + mov r0, #0x8 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x6c + strh r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x6c + ldrh r1, [r0, #0x0] + mov r0, #0x10 + add r5, #0x6c + orr r0, r1 + strh r0, [r5, #0x0] + ldr r0, [sp, #0x2c] + cmp r0, #0x0 + beq _02007518 + add r1, r4, r6 + add r1, #0x84 + mov r2, #0x14 + blx MI_CpuCopy8 +_02007518: + add r0, r4, r6 + add sp, #0xc + pop {r4-r7, pc} + nop +_02007520: .word 0xFFFFFC1F +_02007524: .word 0xFFFF83FF +_02007528: .word 0xFFF07FFF +_0200752C: .word 0xFE0FFFFF +_02007530: .word 0xC1FFFFFF + + thumb_func_start FUN_02007534 +FUN_02007534: ; 0x02007534 + ldr r2, [r0, #0x0] + mov r1, #0x1 + bic r2, r1 + str r2, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02007540 +FUN_02007540: ; 0x02007540 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_02007546: + add r0, r5, #0x0 + bl FUN_02007534 + add r4, r4, #0x1 + add r5, #0x98 + cmp r4, #0x4 + blt _02007546 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02007558 +FUN_02007558: ; 0x02007558 + cmp r1, #0x2e + bls _0200755E + b _02007800 +_0200755E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0200756A: ; jump table (using 16-bit offset) + .short _020075C8 - _0200756A - 2; case 0 + .short _020075CC - _0200756A - 2; case 1 + .short _020075D0 - _0200756A - 2; case 2 + .short _020075D4 - _0200756A - 2; case 3 + .short _020075D8 - _0200756A - 2; case 4 + .short _020075DC - _0200756A - 2; case 5 + .short _020075E0 - _0200756A - 2; case 6 + .short _020075F0 - _0200756A - 2; case 7 + .short _020075F4 - _0200756A - 2; case 8 + .short _020075F8 - _0200756A - 2; case 9 + .short _020075FC - _0200756A - 2; case 10 + .short _02007602 - _0200756A - 2; case 11 + .short _02007608 - _0200756A - 2; case 12 + .short _0200760C - _0200756A - 2; case 13 + .short _02007610 - _0200756A - 2; case 14 + .short _02007620 - _0200756A - 2; case 15 + .short _02007626 - _0200756A - 2; case 16 + .short _0200762C - _0200756A - 2; case 17 + .short _02007632 - _0200756A - 2; case 18 + .short _02007638 - _0200756A - 2; case 19 + .short _0200763E - _0200756A - 2; case 20 + .short _02007644 - _0200756A - 2; case 21 + .short _0200764A - _0200756A - 2; case 22 + .short _02007650 - _0200756A - 2; case 23 + .short _02007660 - _0200756A - 2; case 24 + .short _02007670 - _0200756A - 2; case 25 + .short _02007680 - _0200756A - 2; case 26 + .short _02007690 - _0200756A - 2; case 27 + .short _020076A0 - _0200756A - 2; case 28 + .short _020076B0 - _0200756A - 2; case 29 + .short _020076C0 - _0200756A - 2; case 30 + .short _020076DA - _0200756A - 2; case 31 + .short _020076E8 - _0200756A - 2; case 32 + .short _020076FA - _0200756A - 2; case 33 + .short _0200770C - _0200756A - 2; case 34 + .short _02007712 - _0200756A - 2; case 35 + .short _0200772A - _0200756A - 2; case 36 + .short _02007742 - _0200756A - 2; case 37 + .short _02007752 - _0200756A - 2; case 38 + .short _02007800 - _0200756A - 2; case 39 + .short _02007758 - _0200756A - 2; case 40 + .short _02007770 - _0200756A - 2; case 41 + .short _02007776 - _0200756A - 2; case 42 + .short _0200779A - _0200756A - 2; case 43 + .short _020077B4 - _0200756A - 2; case 44 + .short _020077CE - _0200756A - 2; case 45 + .short _020077E8 - _0200756A - 2; case 46 +_020075C8: + strh r2, [r0, #0x24] + bx lr +_020075CC: + strh r2, [r0, #0x26] + bx lr +_020075D0: + str r2, [r0, #0x28] + bx lr +_020075D4: + strh r2, [r0, #0x2c] + bx lr +_020075D8: + strh r2, [r0, #0x2e] + bx lr +_020075DC: + str r2, [r0, #0x30] + bx lr +_020075E0: + ldr r3, [r0, #0x54] + mov r1, #0x1 + bic r3, r1 + mov r1, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x54] + bx lr +_020075F0: + strh r2, [r0, #0x38] + bx lr +_020075F4: + strh r2, [r0, #0x3a] + bx lr +_020075F8: + strh r2, [r0, #0x3c] + bx lr +_020075FC: + add r0, #0x40 + strh r2, [r0, #0x0] + bx lr +_02007602: + add r0, #0x42 + strh r2, [r0, #0x0] + bx lr +_02007608: + strh r2, [r0, #0x34] + bx lr +_0200760C: + strh r2, [r0, #0x36] + bx lr +_02007610: + ldr r3, [r0, #0x54] + mov r1, #0x2 + bic r3, r1 + lsl r1, r2, #0x1f + lsr r1, r1, #0x1e + orr r1, r3 + str r1, [r0, #0x54] + bx lr +_02007620: + add r0, #0x44 + strb r2, [r0, #0x0] + bx lr +_02007626: + add r0, #0x45 + strb r2, [r0, #0x0] + bx lr +_0200762C: + add r0, #0x46 + strb r2, [r0, #0x0] + bx lr +_02007632: + add r0, #0x47 + strb r2, [r0, #0x0] + bx lr +_02007638: + add r0, #0x70 + strh r2, [r0, #0x0] + bx lr +_0200763E: + add r0, #0x72 + strh r2, [r0, #0x0] + bx lr +_02007644: + add r0, #0x74 + strh r2, [r0, #0x0] + bx lr +_0200764A: + add r0, #0x76 + strh r2, [r0, #0x0] + bx lr +_02007650: + ldr r3, [r0, #0x54] + mov r1, #0x7c + bic r3, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0x19 + orr r1, r3 + str r1, [r0, #0x54] + bx lr +_02007660: + ldr r3, [r0, #0x50] + mov r1, #0x1f + bic r3, r1 + mov r1, #0x1f + and r1, r2 + orr r1, r3 + str r1, [r0, #0x50] + bx lr +_02007670: + ldr r3, [r0, #0x50] + ldr r1, _02007804 ; =0xFFFFFC1F + and r3, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0x16 + orr r1, r3 + str r1, [r0, #0x50] + bx lr +_02007680: + ldr r3, [r0, #0x50] + ldr r1, _02007808 ; =0xFFFF83FF + and r3, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0x11 + orr r1, r3 + str r1, [r0, #0x50] + bx lr +_02007690: + ldr r3, [r0, #0x50] + ldr r1, _0200780C ; =0xFFF07FFF + and r3, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0xc + orr r1, r3 + str r1, [r0, #0x50] + bx lr +_020076A0: + ldr r3, [r0, #0x50] + ldr r1, _02007810 ; =0xFE0FFFFF + and r3, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0x7 + orr r1, r3 + str r1, [r0, #0x50] + bx lr +_020076B0: + ldr r3, [r0, #0x50] + ldr r1, _02007814 ; =0xC1FFFFFF + and r3, r1 + lsl r1, r2, #0x1b + lsr r1, r1, #0x2 + orr r1, r3 + str r1, [r0, #0x50] + bx lr +_020076C0: + ldr r3, [r0, #0x54] + ldr r1, _02007818 ; =0xFFFFEFFF + and r3, r1 + lsl r1, r2, #0x1f + lsr r1, r1, #0x13 + orr r1, r3 + str r1, [r0, #0x54] + mov r1, #0x1 + ldr r2, [r0, #0x0] + lsl r1, r1, #0x8 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_020076DA: + str r2, [r0, #0x4c] + mov r1, #0x1 + ldr r2, [r0, #0x0] + lsl r1, r1, #0x8 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_020076E8: + add r1, r0, #0x0 + add r1, #0x48 + strb r2, [r1, #0x0] + mov r1, #0x1 + ldr r2, [r0, #0x0] + lsl r1, r1, #0x8 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_020076FA: + add r1, r0, #0x0 + add r1, #0x49 + strb r2, [r1, #0x0] + mov r1, #0x1 + ldr r2, [r0, #0x0] + lsl r1, r1, #0x8 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_0200770C: + add r0, #0x4a + strb r2, [r0, #0x0] + bx lr +_02007712: + ldr r3, [r0, #0x54] + ldr r1, _0200781C ; =0xFFFFFDFF + and r3, r1 + lsl r1, r2, #0x1f + lsr r1, r1, #0x16 + orr r1, r3 + str r1, [r0, #0x54] + ldr r2, [r0, #0x0] + mov r1, #0x80 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_0200772A: + ldr r3, [r0, #0x54] + ldr r1, _02007820 ; =0xFFFFFBFF + and r3, r1 + lsl r1, r2, #0x1f + lsr r1, r1, #0x15 + orr r1, r3 + str r1, [r0, #0x54] + ldr r2, [r0, #0x0] + mov r1, #0x80 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_02007742: + ldr r3, [r0, #0x54] + ldr r1, _02007824 ; =0xFFFFF7FF + and r3, r1 + lsl r1, r2, #0x1f + lsr r1, r1, #0x14 + orr r1, r3 + str r1, [r0, #0x54] + bx lr +_02007752: + add r0, #0x5b + strb r2, [r0, #0x0] + bx lr +_02007758: + ldr r3, [r0, #0x54] + ldr r1, _02007828 ; =0xFFFE1FFF + and r3, r1 + lsl r1, r2, #0x1c + lsr r1, r1, #0xf + orr r1, r3 + str r1, [r0, #0x54] + ldr r2, [r0, #0x0] + mov r1, #0x80 + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_02007770: + add r0, #0x6e + strb r2, [r0, #0x0] + bx lr +_02007776: + add r1, r0, #0x0 + add r1, #0x6c + ldrh r3, [r1, #0x0] + mov r1, #0x3 + bic r3, r1 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x3 + and r1, r2 + orr r3, r1 + add r1, r0, #0x0 + add r1, #0x6c + strh r3, [r1, #0x0] + ldr r1, [r0, #0x0] + add r2, #0xfd + orr r1, r2 + str r1, [r0, #0x0] + bx lr +_0200779A: + add r1, r0, #0x0 + add r1, #0x6c + ldrh r3, [r1, #0x0] + mov r1, #0x4 + add r0, #0x6c + bic r3, r1 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1d + orr r1, r3 + strh r1, [r0, #0x0] + bx lr +_020077B4: + add r1, r0, #0x0 + add r1, #0x6c + ldrh r3, [r1, #0x0] + mov r1, #0x8 + add r0, #0x6c + bic r3, r1 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1c + orr r1, r3 + strh r1, [r0, #0x0] + bx lr +_020077CE: + add r1, r0, #0x0 + add r1, #0x6c + ldrh r3, [r1, #0x0] + mov r1, #0x10 + add r0, #0x6c + bic r3, r1 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1b + orr r1, r3 + strh r1, [r0, #0x0] + bx lr +_020077E8: + add r1, r0, #0x0 + add r1, #0x6c + ldrh r3, [r1, #0x0] + mov r1, #0x60 + add r0, #0x6c + bic r3, r1 + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1e + lsr r1, r1, #0x19 + orr r1, r3 + strh r1, [r0, #0x0] +_02007800: + bx lr + nop +_02007804: .word 0xFFFFFC1F +_02007808: .word 0xFFFF83FF +_0200780C: .word 0xFFF07FFF +_02007810: .word 0xFE0FFFFF +_02007814: .word 0xC1FFFFFF +_02007818: .word 0xFFFFEFFF +_0200781C: .word 0xFFFFFDFF +_02007820: .word 0xFFFFFBFF +_02007824: .word 0xFFFFF7FF +_02007828: .word 0xFFFE1FFF + + thumb_func_start FUN_0200782C +FUN_0200782C: ; 0x0200782C + push {r3, lr} + cmp r1, #0x2e + bls _02007834 + b _020079D6 +_02007834: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02007840: ; jump table (using 16-bit offset) + .short _0200789E - _02007840 - 2; case 0 + .short _020078A4 - _02007840 - 2; case 1 + .short _020078AA - _02007840 - 2; case 2 + .short _020078AE - _02007840 - 2; case 3 + .short _020078B4 - _02007840 - 2; case 4 + .short _020078BA - _02007840 - 2; case 5 + .short _020078BE - _02007840 - 2; case 6 + .short _020078C6 - _02007840 - 2; case 7 + .short _020078CA - _02007840 - 2; case 8 + .short _020078CE - _02007840 - 2; case 9 + .short _020078D2 - _02007840 - 2; case 10 + .short _020078D8 - _02007840 - 2; case 11 + .short _020078DE - _02007840 - 2; case 12 + .short _020078E4 - _02007840 - 2; case 13 + .short _020078EA - _02007840 - 2; case 14 + .short _020078F2 - _02007840 - 2; case 15 + .short _020078F8 - _02007840 - 2; case 16 + .short _020078FE - _02007840 - 2; case 17 + .short _02007904 - _02007840 - 2; case 18 + .short _0200790A - _02007840 - 2; case 19 + .short _02007910 - _02007840 - 2; case 20 + .short _02007916 - _02007840 - 2; case 21 + .short _0200791C - _02007840 - 2; case 22 + .short _02007922 - _02007840 - 2; case 23 + .short _0200792A - _02007840 - 2; case 24 + .short _02007932 - _02007840 - 2; case 25 + .short _0200793A - _02007840 - 2; case 26 + .short _02007942 - _02007840 - 2; case 27 + .short _0200794A - _02007840 - 2; case 28 + .short _02007952 - _02007840 - 2; case 29 + .short _0200795A - _02007840 - 2; case 30 + .short _02007962 - _02007840 - 2; case 31 + .short _02007966 - _02007840 - 2; case 32 + .short _0200796C - _02007840 - 2; case 33 + .short _02007972 - _02007840 - 2; case 34 + .short _02007978 - _02007840 - 2; case 35 + .short _02007980 - _02007840 - 2; case 36 + .short _02007988 - _02007840 - 2; case 37 + .short _02007990 - _02007840 - 2; case 38 + .short _020079D6 - _02007840 - 2; case 39 + .short _02007996 - _02007840 - 2; case 40 + .short _0200799E - _02007840 - 2; case 41 + .short _020079A4 - _02007840 - 2; case 42 + .short _020079AE - _02007840 - 2; case 43 + .short _020079B8 - _02007840 - 2; case 44 + .short _020079C2 - _02007840 - 2; case 45 + .short _020079CC - _02007840 - 2; case 46 +_0200789E: + mov r1, #0x24 + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078A4: + mov r1, #0x26 + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078AA: + ldr r0, [r0, #0x28] + pop {r3, pc} +_020078AE: + mov r1, #0x2c + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078B4: + mov r1, #0x2e + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078BA: + ldr r0, [r0, #0x30] + pop {r3, pc} +_020078BE: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + pop {r3, pc} +_020078C6: + ldrh r0, [r0, #0x38] + pop {r3, pc} +_020078CA: + ldrh r0, [r0, #0x3a] + pop {r3, pc} +_020078CE: + ldrh r0, [r0, #0x3c] + pop {r3, pc} +_020078D2: + mov r1, #0x40 + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078D8: + mov r1, #0x42 + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078DE: + mov r1, #0x34 + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078E4: + mov r1, #0x36 + ldrsh r0, [r0, r1] + pop {r3, pc} +_020078EA: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + pop {r3, pc} +_020078F2: + add r0, #0x44 + ldrb r0, [r0, #0x0] + pop {r3, pc} +_020078F8: + add r0, #0x45 + ldrb r0, [r0, #0x0] + pop {r3, pc} +_020078FE: + add r0, #0x46 + ldrb r0, [r0, #0x0] + pop {r3, pc} +_02007904: + add r0, #0x47 + ldrb r0, [r0, #0x0] + pop {r3, pc} +_0200790A: + mov r1, #0x70 + ldrsh r0, [r0, r1] + pop {r3, pc} +_02007910: + mov r1, #0x72 + ldrsh r0, [r0, r1] + pop {r3, pc} +_02007916: + mov r1, #0x74 + ldrsh r0, [r0, r1] + pop {r3, pc} +_0200791C: + mov r1, #0x76 + ldrsh r0, [r0, r1] + pop {r3, pc} +_02007922: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1b + pop {r3, pc} +_0200792A: + ldr r0, [r0, #0x50] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1b + pop {r3, pc} +_02007932: + ldr r0, [r0, #0x50] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1b + pop {r3, pc} +_0200793A: + ldr r0, [r0, #0x50] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + pop {r3, pc} +_02007942: + ldr r0, [r0, #0x50] + lsl r0, r0, #0xc + lsr r0, r0, #0x1b + pop {r3, pc} +_0200794A: + ldr r0, [r0, #0x50] + lsl r0, r0, #0x7 + lsr r0, r0, #0x1b + pop {r3, pc} +_02007952: + ldr r0, [r0, #0x50] + lsl r0, r0, #0x2 + lsr r0, r0, #0x1b + pop {r3, pc} +_0200795A: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x13 + lsr r0, r0, #0x1f + pop {r3, pc} +_02007962: + ldr r0, [r0, #0x4c] + pop {r3, pc} +_02007966: + add r0, #0x48 + ldrb r0, [r0, #0x0] + pop {r3, pc} +_0200796C: + add r0, #0x49 + ldrb r0, [r0, #0x0] + pop {r3, pc} +_02007972: + add r0, #0x4a + ldrb r0, [r0, #0x0] + pop {r3, pc} +_02007978: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1f + pop {r3, pc} +_02007980: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1f + pop {r3, pc} +_02007988: + ldr r0, [r0, #0x54] + lsl r0, r0, #0x14 + lsr r0, r0, #0x1f + pop {r3, pc} +_02007990: + add r0, #0x5b + ldrb r0, [r0, #0x0] + pop {r3, pc} +_02007996: + ldr r0, [r0, #0x54] + lsl r0, r0, #0xf + lsr r0, r0, #0x1c + pop {r3, pc} +_0200799E: + mov r1, #0x6e + ldrsb r0, [r0, r1] + pop {r3, pc} +_020079A4: + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + pop {r3, pc} +_020079AE: + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + pop {r3, pc} +_020079B8: + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + pop {r3, pc} +_020079C2: + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + pop {r3, pc} +_020079CC: + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1e + pop {r3, pc} +_020079D6: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020079E0 +FUN_020079E0: ; 0x020079E0 + push {r3-r4} + add r3, r0, #0x0 + add r0, r2, #0x0 + cmp r1, #0x2e + bls _020079EC + b _02007E12 +_020079EC: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020079F8: ; jump table (using 16-bit offset) + .short _02007A56 - _020079F8 - 2; case 0 + .short _02007A62 - _020079F8 - 2; case 1 + .short _02007A6E - _020079F8 - 2; case 2 + .short _02007A78 - _020079F8 - 2; case 3 + .short _02007A84 - _020079F8 - 2; case 4 + .short _02007A90 - _020079F8 - 2; case 5 + .short _02007A9A - _020079F8 - 2; case 6 + .short _02007AB4 - _020079F8 - 2; case 7 + .short _02007ABE - _020079F8 - 2; case 8 + .short _02007AC8 - _020079F8 - 2; case 9 + .short _02007AD2 - _020079F8 - 2; case 10 + .short _02007AE0 - _020079F8 - 2; case 11 + .short _02007AEE - _020079F8 - 2; case 12 + .short _02007AFA - _020079F8 - 2; case 13 + .short _02007B06 - _020079F8 - 2; case 14 + .short _02007B20 - _020079F8 - 2; case 15 + .short _02007B30 - _020079F8 - 2; case 16 + .short _02007B40 - _020079F8 - 2; case 17 + .short _02007B50 - _020079F8 - 2; case 18 + .short _02007B60 - _020079F8 - 2; case 19 + .short _02007B6E - _020079F8 - 2; case 20 + .short _02007B7C - _020079F8 - 2; case 21 + .short _02007B8A - _020079F8 - 2; case 22 + .short _02007B98 - _020079F8 - 2; case 23 + .short _02007BB2 - _020079F8 - 2; case 24 + .short _02007BCC - _020079F8 - 2; case 25 + .short _02007BE4 - _020079F8 - 2; case 26 + .short _02007BFC - _020079F8 - 2; case 27 + .short _02007C14 - _020079F8 - 2; case 28 + .short _02007C2C - _020079F8 - 2; case 29 + .short _02007C44 - _020079F8 - 2; case 30 + .short _02007C66 - _020079F8 - 2; case 31 + .short _02007C7A - _020079F8 - 2; case 32 + .short _02007C96 - _020079F8 - 2; case 33 + .short _02007CB2 - _020079F8 - 2; case 34 + .short _02007CC2 - _020079F8 - 2; case 35 + .short _02007CE2 - _020079F8 - 2; case 36 + .short _02007D02 - _020079F8 - 2; case 37 + .short _02007D1A - _020079F8 - 2; case 38 + .short _02007E12 - _020079F8 - 2; case 39 + .short _02007D2A - _020079F8 - 2; case 40 + .short _02007D4A - _020079F8 - 2; case 41 + .short _02007D58 - _020079F8 - 2; case 42 + .short _02007D86 - _020079F8 - 2; case 43 + .short _02007DAA - _020079F8 - 2; case 44 + .short _02007DCE - _020079F8 - 2; case 45 + .short _02007DF2 - _020079F8 - 2; case 46 +_02007A56: + mov r1, #0x24 + ldrsh r1, [r3, r1] + add r0, r1, r0 + strh r0, [r3, #0x24] + pop {r3-r4} + bx lr +_02007A62: + mov r1, #0x26 + ldrsh r1, [r3, r1] + add r0, r1, r0 + strh r0, [r3, #0x26] + pop {r3-r4} + bx lr +_02007A6E: + ldr r1, [r3, #0x28] + add r0, r1, r0 + str r0, [r3, #0x28] + pop {r3-r4} + bx lr +_02007A78: + mov r1, #0x2c + ldrsh r1, [r3, r1] + add r0, r1, r0 + strh r0, [r3, #0x2c] + pop {r3-r4} + bx lr +_02007A84: + mov r1, #0x2e + ldrsh r1, [r3, r1] + add r0, r1, r0 + strh r0, [r3, #0x2e] + pop {r3-r4} + bx lr +_02007A90: + ldr r1, [r3, #0x30] + add r0, r1, r0 + str r0, [r3, #0x30] + pop {r3-r4} + bx lr +_02007A9A: + ldr r4, [r3, #0x54] + mov r2, #0x1 + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1f + lsr r2, r2, #0x1f + add r2, r2, r0 + mov r0, #0x1 + and r0, r2 + orr r0, r1 + str r0, [r3, #0x54] + pop {r3-r4} + bx lr +_02007AB4: + ldrh r1, [r3, #0x38] + add r0, r1, r0 + strh r0, [r3, #0x38] + pop {r3-r4} + bx lr +_02007ABE: + ldrh r1, [r3, #0x3a] + add r0, r1, r0 + strh r0, [r3, #0x3a] + pop {r3-r4} + bx lr +_02007AC8: + ldrh r1, [r3, #0x3c] + add r0, r1, r0 + strh r0, [r3, #0x3c] + pop {r3-r4} + bx lr +_02007AD2: + mov r1, #0x40 + ldrsh r1, [r3, r1] + add r3, #0x40 + add r0, r1, r0 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007AE0: + mov r1, #0x42 + ldrsh r1, [r3, r1] + add r3, #0x42 + add r0, r1, r0 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007AEE: + mov r1, #0x34 + ldrsh r1, [r3, r1] + add r0, r1, r0 + strh r0, [r3, #0x34] + pop {r3-r4} + bx lr +_02007AFA: + mov r1, #0x36 + ldrsh r1, [r3, r1] + add r0, r1, r0 + strh r0, [r3, #0x36] + pop {r3-r4} + bx lr +_02007B06: + ldr r4, [r3, #0x54] + mov r2, #0x2 + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1e + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1e + orr r0, r1 + str r0, [r3, #0x54] + pop {r3-r4} + bx lr +_02007B20: + add r1, r3, #0x0 + add r1, #0x44 + ldrb r1, [r1, #0x0] + add r3, #0x44 + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B30: + add r1, r3, #0x0 + add r1, #0x45 + ldrb r1, [r1, #0x0] + add r3, #0x45 + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B40: + add r1, r3, #0x0 + add r1, #0x46 + ldrb r1, [r1, #0x0] + add r3, #0x46 + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B50: + add r1, r3, #0x0 + add r1, #0x47 + ldrb r1, [r1, #0x0] + add r3, #0x47 + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B60: + mov r1, #0x70 + ldrsh r1, [r3, r1] + add r3, #0x70 + add r0, r1, r0 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B6E: + mov r1, #0x72 + ldrsh r1, [r3, r1] + add r3, #0x72 + add r0, r1, r0 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B7C: + mov r1, #0x74 + ldrsh r1, [r3, r1] + add r3, #0x74 + add r0, r1, r0 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B8A: + mov r1, #0x76 + ldrsh r1, [r3, r1] + add r3, #0x76 + add r0, r1, r0 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007B98: + ldr r4, [r3, #0x54] + mov r2, #0x7c + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x19 + lsr r2, r2, #0x1b + add r0, r2, r0 + lsl r0, r0, #0x1b + lsr r0, r0, #0x19 + orr r0, r1 + str r0, [r3, #0x54] + pop {r3-r4} + bx lr +_02007BB2: + ldr r4, [r3, #0x50] + mov r2, #0x1f + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1b + lsr r2, r2, #0x1b + add r2, r2, r0 + mov r0, #0x1f + and r0, r2 + orr r0, r1 + str r0, [r3, #0x50] + pop {r3-r4} + bx lr +_02007BCC: + ldr r2, [r3, #0x50] + ldr r1, _02007E18 ; =0xFFFFFC1F + and r1, r2 + lsl r2, r2, #0x16 + lsr r2, r2, #0x1b + add r0, r2, r0 + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + orr r0, r1 + str r0, [r3, #0x50] + pop {r3-r4} + bx lr +_02007BE4: + ldr r2, [r3, #0x50] + ldr r1, _02007E1C ; =0xFFFF83FF + and r1, r2 + lsl r2, r2, #0x11 + lsr r2, r2, #0x1b + add r0, r2, r0 + lsl r0, r0, #0x1b + lsr r0, r0, #0x11 + orr r0, r1 + str r0, [r3, #0x50] + pop {r3-r4} + bx lr +_02007BFC: + ldr r2, [r3, #0x50] + ldr r1, _02007E20 ; =0xFFF07FFF + and r1, r2 + lsl r2, r2, #0xc + lsr r2, r2, #0x1b + add r0, r2, r0 + lsl r0, r0, #0x1b + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r3, #0x50] + pop {r3-r4} + bx lr +_02007C14: + ldr r2, [r3, #0x50] + ldr r1, _02007E24 ; =0xFE0FFFFF + and r1, r2 + lsl r2, r2, #0x7 + lsr r2, r2, #0x1b + add r0, r2, r0 + lsl r0, r0, #0x1b + lsr r0, r0, #0x7 + orr r0, r1 + str r0, [r3, #0x50] + pop {r3-r4} + bx lr +_02007C2C: + ldr r2, [r3, #0x50] + ldr r1, _02007E28 ; =0xC1FFFFFF + and r1, r2 + lsl r2, r2, #0x2 + lsr r2, r2, #0x1b + add r0, r2, r0 + lsl r0, r0, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + str r0, [r3, #0x50] + pop {r3-r4} + bx lr +_02007C44: + ldr r2, [r3, #0x54] + ldr r1, _02007E2C ; =0xFFFFEFFF + and r1, r2 + lsl r2, r2, #0x13 + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x13 + orr r0, r1 + str r0, [r3, #0x54] + mov r0, #0x1 + ldr r1, [r3, #0x0] + lsl r0, r0, #0x8 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007C66: + ldr r1, [r3, #0x4c] + add r0, r1, r0 + str r0, [r3, #0x4c] + mov r0, #0x1 + ldr r1, [r3, #0x0] + lsl r0, r0, #0x8 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007C7A: + add r1, r3, #0x0 + add r1, #0x48 + ldrb r1, [r1, #0x0] + add r1, r1, r0 + add r0, r3, #0x0 + add r0, #0x48 + strb r1, [r0, #0x0] + mov r0, #0x1 + ldr r1, [r3, #0x0] + lsl r0, r0, #0x8 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007C96: + add r1, r3, #0x0 + add r1, #0x49 + ldrb r1, [r1, #0x0] + add r1, r1, r0 + add r0, r3, #0x0 + add r0, #0x49 + strb r1, [r0, #0x0] + mov r0, #0x1 + ldr r1, [r3, #0x0] + lsl r0, r0, #0x8 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007CB2: + add r1, r3, #0x0 + add r1, #0x4a + ldrb r1, [r1, #0x0] + add r3, #0x4a + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007CC2: + ldr r2, [r3, #0x54] + ldr r1, _02007E30 ; =0xFFFFFDFF + and r1, r2 + lsl r2, r2, #0x16 + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x16 + orr r0, r1 + str r0, [r3, #0x54] + ldr r1, [r3, #0x0] + mov r0, #0x80 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007CE2: + ldr r2, [r3, #0x54] + ldr r1, _02007E34 ; =0xFFFFFBFF + and r1, r2 + lsl r2, r2, #0x15 + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x15 + orr r0, r1 + str r0, [r3, #0x54] + ldr r1, [r3, #0x0] + mov r0, #0x80 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007D02: + ldr r2, [r3, #0x54] + ldr r1, _02007E38 ; =0xFFFFF7FF + and r1, r2 + lsl r2, r2, #0x14 + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x14 + orr r0, r1 + str r0, [r3, #0x54] + pop {r3-r4} + bx lr +_02007D1A: + add r1, r3, #0x0 + add r1, #0x5b + ldrb r1, [r1, #0x0] + add r3, #0x5b + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007D2A: + ldr r2, [r3, #0x54] + ldr r1, _02007E3C ; =0xFFFE1FFF + and r1, r2 + lsl r2, r2, #0xf + lsr r2, r2, #0x1c + add r0, r2, r0 + lsl r0, r0, #0x1c + lsr r0, r0, #0xf + orr r0, r1 + str r0, [r3, #0x54] + ldr r1, [r3, #0x0] + mov r0, #0x80 + orr r0, r1 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007D4A: + mov r1, #0x6e + ldrsb r1, [r3, r1] + add r3, #0x6e + add r0, r1, r0 + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007D58: + add r1, r3, #0x0 + add r1, #0x6c + ldrh r4, [r1, #0x0] + mov r2, #0x3 + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1e + lsr r2, r2, #0x1e + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r2, #0x3 + and r0, r2 + orr r1, r0 + add r0, r3, #0x0 + add r0, #0x6c + strh r1, [r0, #0x0] + ldr r0, [r3, #0x0] + add r2, #0xfd + orr r0, r2 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007D86: + add r1, r3, #0x0 + add r1, #0x6c + ldrh r4, [r1, #0x0] + mov r2, #0x4 + add r3, #0x6c + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1d + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1d + orr r0, r1 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007DAA: + add r1, r3, #0x0 + add r1, #0x6c + ldrh r4, [r1, #0x0] + mov r2, #0x8 + add r3, #0x6c + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1c + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1c + orr r0, r1 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007DCE: + add r1, r3, #0x0 + add r1, #0x6c + ldrh r4, [r1, #0x0] + mov r2, #0x10 + add r3, #0x6c + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x1b + lsr r2, r2, #0x1f + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1b + orr r0, r1 + strh r0, [r3, #0x0] + pop {r3-r4} + bx lr +_02007DF2: + add r1, r3, #0x0 + add r1, #0x6c + ldrh r4, [r1, #0x0] + mov r2, #0x60 + add r3, #0x6c + add r1, r4, #0x0 + bic r1, r2 + lsl r2, r4, #0x19 + lsr r2, r2, #0x1e + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1e + lsr r0, r0, #0x19 + orr r0, r1 + strh r0, [r3, #0x0] +_02007E12: + pop {r3-r4} + bx lr + nop +_02007E18: .word 0xFFFFFC1F +_02007E1C: .word 0xFFFF83FF +_02007E20: .word 0xFFF07FFF +_02007E24: .word 0xFE0FFFFF +_02007E28: .word 0xC1FFFFFF +_02007E2C: .word 0xFFFFEFFF +_02007E30: .word 0xFFFFFDFF +_02007E34: .word 0xFFFFFBFF +_02007E38: .word 0xFFFFF7FF +_02007E3C: .word 0xFFFE1FFF + + thumb_func_start FUN_02007E40 +FUN_02007E40: ; 0x02007E40 + push {r4-r5} + ldr r5, [r0, #0x54] + mov r4, #0x2 + orr r4, r5 + str r4, [r0, #0x54] + add r4, r0, #0x0 + add r4, #0x44 + strb r1, [r4, #0x0] + add r1, r0, #0x0 + add r1, #0x45 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x46 + strb r3, [r1, #0x0] + ldr r1, [sp, #0x8] + add r0, #0x47 + strb r1, [r0, #0x0] + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_02007E68 +FUN_02007E68: ; 0x02007E68 + push {r4-r5} + mov r4, #0x1 + ldr r5, [r0, #0x54] + lsl r4, r4, #0xc + orr r4, r5 + str r4, [r0, #0x54] + add r4, r0, #0x0 + add r4, #0x48 + strb r1, [r4, #0x0] + add r1, r0, #0x0 + add r1, #0x49 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + mov r2, #0x0 + add r1, #0x4a + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x4b + strb r3, [r1, #0x0] + ldr r1, [sp, #0x8] + str r1, [r0, #0x4c] + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_02007E98 +FUN_02007E98: ; 0x02007E98 + push {r4-r7} + add r4, r0, #0x0 + add r0, r1, #0x0 + add r5, r2, #0x0 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + lsl r0, r5, #0x18 + lsr r5, r0, #0x18 + lsl r0, r3, #0x18 + ldr r2, [sp, #0x10] + mov r1, #0x0 + lsr r0, r0, #0x18 +_02007EB0: + ldr r3, [r4, #0x0] + lsl r3, r3, #0x1f + lsr r3, r3, #0x1f + beq _02007EDE + mov r3, #0x1 + ldr r7, [r4, #0x54] + lsl r3, r3, #0xc + orr r3, r7 + str r3, [r4, #0x54] + add r3, r4, #0x0 + add r3, #0x48 + strb r6, [r3, #0x0] + add r3, r4, #0x0 + add r3, #0x49 + add r7, r4, #0x0 + strb r5, [r3, #0x0] + add r7, #0x4a + mov r3, #0x0 + strb r3, [r7, #0x0] + add r3, r4, #0x0 + add r3, #0x4b + strb r0, [r3, #0x0] + str r2, [r4, #0x4c] +_02007EDE: + add r1, r1, #0x1 + add r4, #0x98 + cmp r1, #0x4 + blt _02007EB0 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02007EEC +FUN_02007EEC: ; 0x02007EEC + ldr r2, [r0, #0x54] + ldr r1, _02007F1C ; =0xFFFFEFFF + and r1, r2 + str r1, [r0, #0x54] + add r1, r0, #0x0 + mov r2, #0x0 + add r1, #0x48 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x49 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x4a + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x4b + strb r2, [r1, #0x0] + str r2, [r0, #0x4c] + mov r1, #0x1 + ldr r2, [r0, #0x0] + lsl r1, r1, #0x8 + orr r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 +_02007F1C: .word 0xFFFFEFFF + + thumb_func_start FUN_02007F20 +FUN_02007F20: ; 0x02007F20 + ldr r0, [r0, #0x54] + lsl r0, r0, #0x13 + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _02007F2E + mov r0, #0x1 + bx lr +_02007F2E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02007F34 +FUN_02007F34: ; 0x02007F34 + mov r2, #0x28 + sub r2, r2, r1 + mov r1, #0x36 + ldrsh r1, [r0, r1] + mul r1, r2 + asr r1, r1, #0x8 + sub r1, r2, r1 + strh r1, [r0, #0x2e] + bx lr + .balign 4 + + thumb_func_start FUN_02007F48 +FUN_02007F48: ; 0x02007F48 + push {r4-r7} + add r1, r0, #0x0 + add r1, #0x58 + ldrb r1, [r1, #0x0] + add r6, r0, #0x0 + add r6, #0x59 + cmp r1, #0x0 + beq _0200800A + add r1, r0, #0x0 + add r1, #0x5a + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02007FFE + ldrb r1, [r6, #0x0] + add r1, r1, #0x1 + strb r1, [r6, #0x0] + ldrb r3, [r6, #0x0] + mov r1, #0x84 + lsl r4, r3, #0x1 + add r2, r0, r4 + ldrsb r2, [r2, r1] + sub r1, #0x85 + cmp r2, r1 + bge _02007FC6 + mov r2, #0x0 + sub r1, r2, #0x2 +_02007F7C: + add r4, r0, r3 + add r4, #0x5c + ldrb r4, [r4, #0x0] + add r3, r0, r3 + add r3, #0x5c + add r4, r4, #0x1 + strb r4, [r3, #0x0] + ldrb r5, [r6, #0x0] + lsl r3, r5, #0x1 + add r4, r0, r3 + add r3, r4, #0x0 + add r7, r0, r5 + add r3, #0x85 + add r7, #0x5c + ldrb r3, [r3, #0x0] + ldrb r7, [r7, #0x0] + cmp r3, r7 + beq _02007FA4 + cmp r3, #0x0 + bne _02007FAE +_02007FA4: + add r3, r0, r5 + add r3, #0x5c + strb r2, [r3, #0x0] + add r6, r6, #0x1 + b _02007FB6 +_02007FAE: + mov r3, #0x84 + ldrsb r3, [r4, r3] + sub r3, r1, r3 + strb r3, [r6, #0x0] +_02007FB6: + ldrb r3, [r6, #0x0] + mov r5, #0x84 + lsl r4, r3, #0x1 + add r7, r0, r4 + ldrsb r7, [r7, r5] + sub r5, #0x85 + cmp r7, r5 + blt _02007F7C +_02007FC6: + add r2, r0, r4 + mov r1, #0x84 + ldrsb r2, [r2, r1] + sub r1, #0x85 + cmp r2, r1 + beq _02007FD6 + cmp r3, #0xa + blo _02007FE6 +_02007FD6: + add r1, r0, #0x0 + mov r2, #0x0 + add r1, #0x5b + strb r2, [r1, #0x0] + add r0, #0x58 + strb r2, [r0, #0x0] + pop {r4-r7} + bx lr +_02007FE6: + add r1, r0, #0x0 + add r1, #0x5b + strb r2, [r1, #0x0] + ldrb r1, [r6, #0x0] + lsl r1, r1, #0x1 + add r1, r0, r1 + add r1, #0x85 + ldrb r1, [r1, #0x0] + add r0, #0x5a + strb r1, [r0, #0x0] + pop {r4-r7} + bx lr +_02007FFE: + add r1, r0, #0x0 + add r1, #0x5a + ldrb r1, [r1, #0x0] + add r0, #0x5a + sub r1, r1, #0x1 + strb r1, [r0, #0x0] +_0200800A: + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02008010 +FUN_02008010: ; 0x02008010 + mov r2, #0x1 + strb r2, [r0, #0x0] + mov r3, #0x0 + strb r3, [r0, #0x2] + ldrsb r2, [r1, r3] + strb r2, [r0, #0x1] + ldrb r2, [r1, #0x1] + strb r2, [r0, #0x3] + str r1, [r0, #0x10] + add r2, r3, #0x0 +_02008024: + add r1, r0, r3 + add r3, r3, #0x1 + strb r2, [r1, #0x4] + cmp r3, #0xa + blt _02008024 + bx lr + + thumb_func_start FUN_02008030 +FUN_02008030: ; 0x02008030 + push {r4-r7} + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + beq _020080C6 + add r3, r0, #0x2 + ldr r4, [r0, #0x10] + cmp r1, #0x0 + beq _020080C0 + ldrb r1, [r0, #0x3] + cmp r1, #0x0 + bne _020080BC + ldrb r1, [r3, #0x0] + add r1, r1, #0x1 + strb r1, [r3, #0x0] + ldrb r2, [r3, #0x0] + mov r1, #0x0 + mvn r1, r1 + lsl r5, r2, #0x1 + ldrsb r6, [r4, r5] + cmp r6, r1 + bge _02008098 + mov r1, #0x0 +_0200805C: + add r5, r0, r2 + ldrb r2, [r5, #0x4] + add r2, r2, #0x1 + strb r2, [r5, #0x4] + ldrb r2, [r3, #0x0] + add r5, r0, r2 + lsl r2, r2, #0x1 + add r2, r4, r2 + ldrb r7, [r2, #0x1] + ldrb r6, [r5, #0x4] + cmp r7, r6 + beq _02008078 + cmp r7, #0x0 + bne _0200807E +_02008078: + strb r1, [r5, #0x4] + add r3, r3, #0x1 + b _0200808A +_0200807E: + mov r5, #0x0 + ldrsb r5, [r2, r5] + mov r2, #0x1 + mvn r2, r2 + sub r2, r2, r5 + strb r2, [r3, #0x0] +_0200808A: + ldrb r2, [r3, #0x0] + mov r6, #0x0 + mvn r6, r6 + lsl r5, r2, #0x1 + ldrsb r7, [r4, r5] + cmp r7, r6 + blt _0200805C +_02008098: + ldrsb r5, [r4, r5] + mov r1, #0x0 + mvn r1, r1 + cmp r5, r1 + beq _020080A6 + cmp r2, #0xa + blo _020080AE +_020080A6: + mov r1, #0x0 + strb r1, [r0, #0x1] + strb r1, [r0, #0x0] + b _020080C0 +_020080AE: + strb r5, [r0, #0x1] + ldrb r1, [r3, #0x0] + lsl r1, r1, #0x1 + add r1, r4, r1 + ldrb r1, [r1, #0x1] + strb r1, [r0, #0x3] + b _020080C0 +_020080BC: + sub r1, r1, #0x1 + strb r1, [r0, #0x3] +_020080C0: + ldrb r0, [r0, #0x1] + pop {r4-r7} + bx lr +_020080C6: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_020080D0 +FUN_020080D0: ; 0x020080D0 + ldr r2, [r0, #0x0] + mov r1, #0x80 + orr r2, r1 + add r1, #0x80 + orr r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020080E0 +FUN_020080E0: ; 0x020080E0 + push {r3-r4} + add r2, r0, #0x0 + add r3, r2, #0x0 + add r4, r2, #0x4 + add r3, #0x14 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + add r0, #0x6c + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x78 + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x6e + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x7a + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x70 + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x7c + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x72 + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x7e + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x74 + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x80 + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x76 + ldrh r0, [r0, #0x0] + add r2, #0x82 + strh r0, [r2, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0200813C +FUN_0200813C: ; 0x0200813C + push {r3-r4} + add r2, r0, #0x0 + add r4, r2, #0x0 + add r4, #0x14 + add r3, r2, #0x4 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + add r0, #0x78 + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x6c + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x7a + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x6e + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x7c + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x70 + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x7e + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x72 + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x80 + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x74 + strh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x82 + ldrh r1, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x76 + strh r1, [r0, #0x0] + ldr r1, [r2, #0x0] + mov r0, #0x80 + orr r1, r0 + add r0, #0x80 + orr r0, r1 + str r0, [r2, #0x0] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_020081A8 +FUN_020081A8: ; 0x020081A8 + mov r3, #0xa7 + lsl r3, r3, #0x2 + str r1, [r0, r3] + add r1, r3, #0x4 + str r2, [r0, r1] + bx lr + + thumb_func_start FUN_020081B4 +FUN_020081B4: ; 0x020081B4 + mov r3, #0xa9 + lsl r3, r3, #0x2 + str r1, [r0, r3] + add r1, r3, #0x4 + str r2, [r0, r1] + bx lr + + thumb_func_start FUN_020081C0 +FUN_020081C0: ; 0x020081C0 + add r0, r0, #0x4 + bx lr + + thumb_func_start FUN_020081C4 +FUN_020081C4: ; 0x020081C4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02008254 ; =0x000002E1 + ldrb r1, [r4, r0] + cmp r1, #0x0 + beq _02008212 + mov r1, #0x0 + strb r1, [r4, r0] + sub r0, #0x81 + add r0, r4, r0 + blx FUN_020B1A24 + mov r3, #0xae + lsl r3, r3, #0x2 + mov r1, #0x20 + strh r1, [r4, r3] + add r0, r3, #0x2 + strh r1, [r4, r0] + add r0, r3, #0x0 + sub r0, #0x18 + ldr r1, [r4, r0] + add r0, r3, #0x0 + add r0, #0x10 + str r1, [r4, r0] + add r0, r3, #0x0 + sub r0, #0xc + ldr r1, [r4, r0] + add r0, r3, #0x0 + add r0, #0x14 + str r1, [r4, r0] + add r1, r3, #0x0 + sub r1, #0x1c + add r0, r4, r3 + sub r3, #0x58 + ldr r1, [r4, r1] + mov r2, #0x0 + add r3, r4, r3 + blx FUN_020B1528 +_02008212: + ldr r0, _02008258 ; =0x000002E2 + ldrb r1, [r4, r0] + cmp r1, #0x0 + beq _02008252 + mov r1, #0x0 + strb r1, [r4, r0] + sub r0, #0x5e + add r0, r4, r0 + blx FUN_020B19DC + mov r3, #0xaa + lsl r3, r3, #0x2 + add r0, r3, #0x0 + ldr r1, [r4, r3] + add r0, #0x30 + str r1, [r4, r0] + add r0, r3, #0x0 + add r0, #0x8 + ldr r1, [r4, r0] + add r0, r3, #0x0 + add r0, #0x34 + str r1, [r4, r0] + add r0, r3, #0x0 + sub r1, r3, #0x4 + add r0, #0x28 + sub r3, #0x24 + ldr r1, [r4, r1] + add r0, r4, r0 + mov r2, #0x0 + add r3, r4, r3 + blx FUN_020B1240 +_02008252: + pop {r4, pc} + .balign 4 +_02008254: .word 0x000002E1 +_02008258: .word 0x000002E2 + + thumb_func_start FUN_0200825C +FUN_0200825C: ; 0x0200825C + ldr r2, _02008264 ; =0x000002E3 + strb r1, [r0, r2] + bx lr + nop +_02008264: .word 0x000002E3 + + thumb_func_start FUN_02008268 +FUN_02008268: ; 0x02008268 + push {r4, lr} + add r4, r0, #0x0 + bne _02008272 + bl ErrorHandling +_02008272: + ldr r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0200827E + mov r0, #0x1 + pop {r4, pc} +_0200827E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02008284 +FUN_02008284: ; 0x02008284 + mov r2, #0xb9 + lsl r2, r2, #0x2 + ldr r3, [r0, r2] + orr r1, r3 + str r1, [r0, r2] + bx lr + + thumb_func_start FUN_02008290 +FUN_02008290: ; 0x02008290 + push {r3-r4} + mov r3, #0xb9 + lsl r3, r3, #0x2 + mov r2, #0x0 + mvn r2, r2 + ldr r4, [r0, r3] + eor r1, r2 + and r1, r4 + str r1, [r0, r3] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_020082A8 +FUN_020082A8: ; 0x020082A8 + push {r4-r7, lr} + sub sp, #0x5c + add r6, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x48] + str r0, [sp, #0x54] + ldr r0, [sp, #0x48] + str r6, [sp, #0x44] + str r0, [sp, #0x38] +_020082BA: + ldr r0, [sp, #0x44] + ldr r1, [r0, #0x0] + lsl r0, r1, #0x1f + lsr r0, r0, #0x1f + beq _020082CA + lsl r0, r1, #0x18 + lsr r0, r0, #0x1f + bne _020082CC +_020082CA: + b _020086C2 +_020082CC: + mov r0, #0x80 + bic r1, r0 + ldr r0, [sp, #0x44] + mov r2, #0xa6 + str r1, [r0, #0x0] + mov r0, #0x1 + str r0, [sp, #0x48] + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x44] + lsl r2, r2, #0x2 + ldrh r0, [r0, #0x4] + ldrh r1, [r1, #0x6] + ldr r2, [r6, r2] + bl LoadFromNarc_2 + add r1, sp, #0x58 + str r0, [sp, #0x4c] + blx FUN_020B0088 + ldr r0, [sp, #0x58] + mov r1, #0xaf + ldr r0, [r0, #0x4] + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x58] + ldr r2, [r0, #0x8] + add r0, r1, #0x4 + str r2, [r6, r0] + ldr r0, [sp, #0x58] + add r1, #0x8 + ldr r0, [r0, #0xc] + str r0, [r6, r1] + ldr r0, [sp, #0x58] + ldr r0, [r0, #0x14] + str r0, [sp, #0x50] + bl FUN_02008A74 + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x50] + bl FUN_020088EC + ldr r0, [sp, #0x54] + cmp r0, #0x3 + beq _02008326 + b _02008554 +_02008326: + mov r5, #0x0 + add r0, r5, #0x0 + str r5, [sp, #0x14] + str r0, [sp, #0x24] +_0200832E: + ldr r0, [sp, #0x14] + mov r1, #0x4f + sub r2, r1, r0 + mov r0, #0x50 + add r1, r2, #0x0 + mul r1, r0 + ldr r0, [sp, #0x50] + mov r4, #0x0 + add r0, r0, r1 + str r0, [sp, #0x20] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x24] + add r7, r1, r0 + ldr r0, [sp, #0x20] + str r7, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + sub r0, r0, #0x1 + lsl r0, r0, #0x7 + str r0, [sp, #0x10] +_02008356: + cmp r4, #0x28 + bge _02008442 + ldr r0, [sp, #0x44] + ldr r1, [r0, #0x54] + lsl r0, r1, #0x16 + lsr r0, r0, #0x1f + beq _02008386 + lsl r1, r1, #0x15 + lsr r1, r1, #0x1f + beq _02008386 + mov r0, #0x27 + sub r1, r0, r4 + ldr r0, [sp, #0x1c] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + add r1, r4, r1 + add r1, #0x50 + strb r0, [r1, #0x0] + b _0200852E +_02008386: + cmp r0, #0x0 + beq _020083A6 + mov r0, #0x27 + sub r1, r0, r4 + ldr r0, [sp, #0x18] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + add r1, r4, r1 + add r1, #0x50 + strb r0, [r1, #0x0] + b _0200852E +_020083A6: + ldr r0, [sp, #0x44] + ldr r0, [r0, #0x54] + lsl r1, r0, #0x15 + lsr r1, r1, #0x1f + beq _020083C4 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r0, [sp, #0x20] + ldr r1, [r6, r1] + ldrb r0, [r0, #0x0] + add r1, r5, r1 + add r1, r4, r1 + add r1, #0x50 + strb r0, [r1, #0x0] + b _0200852E +_020083C4: + lsl r0, r0, #0xf + lsr r0, r0, #0x1c + str r0, [sp, #0xc] + beq _02008430 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + lsl r1, r1, #0x1 + blx _u32_div_f + cmp r1, #0x0 + beq _020083F4 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r1, [r6, r0] + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r0, r4, r0 + add r0, #0x50 + add r1, r5, r1 + add r1, r4, r1 + ldrb r0, [r0, #0x0] + add r1, #0x50 + strb r0, [r1, #0x0] + b _0200852E +_020083F4: + ldr r1, [sp, #0xc] + add r0, r4, #0x0 + blx _u32_div_f + cmp r1, #0x0 + beq _02008416 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + add r2, r5, r0 + add r0, r2, r4 + add r0, #0x4f + ldrb r1, [r0, #0x0] + add r0, r2, r4 + add r0, #0x50 + strb r1, [r0, #0x0] + b _0200852E +_02008416: + ldrb r1, [r7, #0x0] + mov r0, #0xf + and r1, r0 + lsl r0, r1, #0x4 + orr r0, r1 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + add r1, r4, r1 + add r1, #0x50 + strb r0, [r1, #0x0] + b _0200852E +_02008430: + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + ldrb r0, [r7, #0x0] + add r1, r5, r1 + add r1, r4, r1 + add r1, #0x50 + strb r0, [r1, #0x0] + b _0200852E +_02008442: + ldr r0, [sp, #0x44] + ldr r1, [r0, #0x54] + lsl r0, r1, #0x16 + lsr r0, r0, #0x1f + beq _02008472 + lsl r1, r1, #0x15 + lsr r1, r1, #0x1f + beq _02008472 + add r1, r4, #0x0 + sub r1, #0x28 + mov r0, #0x4f + sub r1, r0, r1 + ldr r0, [sp, #0x1c] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + add r2, r4, r1 + ldr r1, _020086E8 ; =0x00002828 + strb r0, [r2, r1] + b _0200852E +_02008472: + cmp r0, #0x0 + beq _02008496 + add r1, r4, #0x0 + sub r1, #0x28 + mov r0, #0x4f + sub r1, r0, r1 + ldr r0, [sp, #0x18] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + add r2, r4, r1 + ldr r1, _020086E8 ; =0x00002828 + strb r0, [r2, r1] + b _0200852E +_02008496: + ldr r0, [sp, #0x44] + ldr r0, [r0, #0x54] + lsl r1, r0, #0x15 + lsr r1, r1, #0x1f + beq _020084B4 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r0, [sp, #0x20] + ldr r1, [r6, r1] + ldrb r0, [r0, #0x0] + add r1, r5, r1 + add r2, r4, r1 + ldr r1, _020086E8 ; =0x00002828 + strb r0, [r2, r1] + b _0200852E +_020084B4: + lsl r0, r0, #0xf + lsr r0, r0, #0x1c + str r0, [sp, #0x8] + beq _0200851E + ldr r1, [sp, #0x8] + ldr r0, [sp, #0x14] + lsl r1, r1, #0x1 + blx _u32_div_f + cmp r1, #0x0 + beq _020084E4 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r1, [r6, r0] + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r2, r4, r0 + ldr r0, _020086E8 ; =0x00002828 + add r1, r5, r1 + ldrb r0, [r2, r0] + add r2, r4, r1 + ldr r1, _020086E8 ; =0x00002828 + strb r0, [r2, r1] + b _0200852E +_020084E4: + ldr r1, [sp, #0x8] + add r0, r4, #0x0 + blx _u32_div_f + cmp r1, #0x0 + beq _02008504 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + ldr r1, _020086EC ; =0x00002827 + add r0, r5, r0 + add r0, r0, r4 + ldrb r2, [r0, r1] + add r1, r1, #0x1 + strb r2, [r0, r1] + b _0200852E +_02008504: + ldrb r1, [r7, #0x0] + mov r0, #0xf + and r1, r0 + lsl r0, r1, #0x4 + orr r0, r1 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + add r2, r4, r1 + ldr r1, _020086E8 ; =0x00002828 + strb r0, [r2, r1] + b _0200852E +_0200851E: + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + ldrb r0, [r7, #0x0] + add r1, r5, r1 + add r2, r4, r1 + ldr r1, _020086E8 ; =0x00002828 + strb r0, [r2, r1] +_0200852E: + ldr r0, [sp, #0x20] + add r4, r4, #0x1 + add r0, r0, #0x1 + add r7, r7, #0x1 + str r0, [sp, #0x20] + cmp r4, #0x50 + bge _0200853E + b _02008356 +_0200853E: + ldr r0, [sp, #0x24] + add r5, #0x80 + add r0, #0x50 + str r0, [sp, #0x24] + ldr r0, [sp, #0x14] + add r0, r0, #0x1 + str r0, [sp, #0x14] + cmp r0, #0x50 + bge _02008552 + b _0200832E +_02008552: + b _020086BC +_02008554: + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x40] + str r0, [sp, #0x3c] +_0200855C: + ldr r0, [sp, #0x0] + mov r1, #0x4f + sub r2, r1, r0 + mov r0, #0x50 + add r1, r2, #0x0 + mul r1, r0 + ldr r0, [sp, #0x50] + mov r4, #0x0 + add r0, r0, r1 + str r0, [sp, #0x34] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x3c] + add r7, r1, r0 + ldr r0, [sp, #0x34] + ldr r1, [sp, #0x38] + str r0, [sp, #0x30] + ldr r0, [sp, #0x40] + str r7, [sp, #0x2c] + add r5, r1, r0 + ldr r0, [sp, #0x0] + sub r0, r0, #0x1 + lsl r1, r0, #0x7 + ldr r0, [sp, #0x38] + add r0, r0, r1 + str r0, [sp, #0x28] +_0200858E: + ldr r0, [sp, #0x44] + ldr r1, [r0, #0x54] + lsl r0, r1, #0x16 + lsr r0, r0, #0x1f + beq _020085D6 + lsl r1, r1, #0x15 + lsr r1, r1, #0x1f + beq _020085D6 + cmp r4, #0x28 + bge _020085BA + mov r0, #0x27 + sub r1, r0, r4 + ldr r0, [sp, #0x30] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + strb r0, [r4, r1] + b _02008694 +_020085BA: + add r1, r4, #0x0 + sub r1, #0x28 + mov r0, #0x4f + sub r1, r0, r1 + ldr r0, [sp, #0x30] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + strb r0, [r4, r1] + b _02008694 +_020085D6: + cmp r0, #0x0 + beq _02008612 + cmp r4, #0x28 + bge _020085F6 + mov r0, #0x27 + sub r1, r0, r4 + ldr r0, [sp, #0x2c] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + strb r0, [r4, r1] + b _02008694 +_020085F6: + add r1, r4, #0x0 + sub r1, #0x28 + mov r0, #0x4f + sub r1, r0, r1 + ldr r0, [sp, #0x2c] + ldrb r0, [r0, r1] + bl FUN_020088D8 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + strb r0, [r4, r1] + b _02008694 +_02008612: + ldr r0, [sp, #0x44] + ldr r0, [r0, #0x54] + lsl r1, r0, #0x15 + lsr r1, r1, #0x1f + beq _0200862C + ldr r0, [sp, #0x34] + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + ldrb r0, [r0, #0x0] + add r1, r5, r1 + strb r0, [r4, r1] + b _02008694 +_0200862C: + lsl r0, r0, #0xf + lsr r0, r0, #0x1c + str r0, [sp, #0x4] + beq _02008688 + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + lsl r1, r1, #0x1 + blx _u32_div_f + cmp r1, #0x0 + beq _02008654 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + ldr r1, [sp, #0x28] + add r1, r1, r0 + ldrb r1, [r4, r1] + add r0, r5, r0 + strb r1, [r4, r0] + b _02008694 +_02008654: + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + blx _u32_div_f + cmp r1, #0x0 + beq _02008672 + mov r0, #0xab + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + add r1, r5, r0 + add r0, r1, r4 + sub r0, r0, #0x1 + ldrb r0, [r0, #0x0] + strb r0, [r1, r4] + b _02008694 +_02008672: + ldrb r1, [r7, #0x0] + mov r0, #0xf + and r1, r0 + lsl r0, r1, #0x4 + orr r0, r1 + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r1, r5, r1 + strb r0, [r4, r1] + b _02008694 +_02008688: + mov r1, #0xab + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + ldrb r0, [r7, #0x0] + add r1, r5, r1 + strb r0, [r4, r1] +_02008694: + ldr r0, [sp, #0x34] + add r4, r4, #0x1 + add r0, r0, #0x1 + add r7, r7, #0x1 + str r0, [sp, #0x34] + cmp r4, #0x50 + bge _020086A4 + b _0200858E +_020086A4: + ldr r0, [sp, #0x40] + add r0, #0x80 + str r0, [sp, #0x40] + ldr r0, [sp, #0x3c] + add r0, #0x50 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, #0x50 + bge _020086BC + b _0200855C +_020086BC: + ldr r0, [sp, #0x4c] + bl FUN_02016A18 +_020086C2: + ldr r0, [sp, #0x44] + mov r1, #0xa + add r0, #0x98 + str r0, [sp, #0x44] + ldr r0, [sp, #0x38] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x54] + add r0, r0, #0x1 + str r0, [sp, #0x54] + cmp r0, #0x4 + bge _020086DE + b _020082BA +_020086DE: + ldr r1, _020086F0 ; =0x000002E1 + ldr r0, [sp, #0x48] + strb r0, [r6, r1] + add sp, #0x5c + pop {r4-r7, pc} + .balign 4 +_020086E8: .word 0x00002828 +_020086EC: .word 0x00002827 +_020086F0: .word 0x000002E1 + + thumb_func_start FUN_020086F4 +FUN_020086F4: ; 0x020086F4 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0xc] + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + add r4, r5, #0x0 + str r0, [sp, #0x8] +_02008706: + ldr r1, [r4, #0x0] + lsl r0, r1, #0x1f + lsr r0, r0, #0x1f + beq _020087E0 + lsl r0, r1, #0x17 + lsr r0, r0, #0x1f + beq _020087E0 + ldr r0, _020088CC ; =0xFFFFFEFF + mov r2, #0xa6 + and r0, r1 + str r0, [r4, #0x0] + mov r0, #0x1 + str r0, [sp, #0xc] + lsl r2, r2, #0x2 + ldrh r0, [r4, #0x4] + ldrh r1, [r4, #0x8] + ldr r2, [r5, r2] + bl LoadFromNarc_2 + add r1, sp, #0x18 + str r0, [sp, #0x10] + blx FUN_020B0138 + ldr r0, [sp, #0x18] + mov r7, #0x0 + ldr r1, [r0, #0x0] + mov r0, #0x2d + lsl r0, r0, #0x4 + str r1, [r5, r0] + ldr r0, [sp, #0x18] + add r2, r7, #0x0 + ldr r1, [r0, #0xc] + ldr r0, [sp, #0x8] + lsl r3, r0, #0x1 +_0200874A: + mov r6, #0x2b + lsl r6, r6, #0x4 + ldr r6, [r5, r6] + ldrh r0, [r1, #0x0] + add r6, r3, r6 + add r7, r7, #0x1 + strh r0, [r2, r6] + mov r6, #0xad + lsl r6, r6, #0x2 + ldrh r0, [r1, #0x0] + ldr r6, [r5, r6] + add r1, r1, #0x2 + add r6, r3, r6 + strh r0, [r2, r6] + add r2, r2, #0x2 + cmp r7, #0x10 + blt _0200874A + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + beq _020087E0 + mov r2, #0xa6 + lsl r2, r2, #0x2 + ldr r2, [r5, r2] + mov r0, #0x75 + mov r1, #0xd4 + bl LoadFromNarc_2 + add r1, sp, #0x18 + str r0, [sp, #0x4] + blx FUN_020B0138 + ldr r0, [sp, #0x18] + mov r7, #0xad + ldr r0, [r0, #0xc] + mov r1, #0x0 + lsl r7, r7, #0x2 +_0200879E: + add r6, r4, #0x0 + add r6, #0x6c + ldrh r6, [r6, #0x0] + mov r2, #0x2b + lsl r2, r2, #0x4 + lsl r6, r6, #0x1e + lsr r6, r6, #0x1e + add r6, r6, #0x3 + lsl r6, r6, #0x4 + add r6, r1, r6 + ldrh r3, [r0, #0x0] + ldr r2, [r5, r2] + lsl r6, r6, #0x1 + strh r3, [r2, r6] + add r6, r4, #0x0 + add r6, #0x6c + ldrh r6, [r6, #0x0] + ldrh r3, [r0, #0x0] + ldr r2, [r5, r7] + lsl r6, r6, #0x1e + lsr r6, r6, #0x1e + add r6, r6, #0x3 + lsl r6, r6, #0x4 + add r6, r1, r6 + lsl r6, r6, #0x1 + add r1, r1, #0x1 + add r0, r0, #0x2 + strh r3, [r2, r6] + cmp r1, #0x10 + blt _0200879E + ldr r0, [sp, #0x4] + bl FUN_02016A18 +_020087E0: + ldr r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _020088AE + ldr r0, [r4, #0x54] + lsl r0, r0, #0x13 + lsr r0, r0, #0x1f + beq _020088AE + add r0, r4, #0x0 + add r0, #0x4a + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _020088A0 + mov r0, #0x1 + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r0, #0x4b + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x4a + strb r1, [r0, #0x0] + ldr r0, [sp, #0x8] + mov r2, #0xad + lsl r1, r0, #0x1 + ldr r0, [r4, #0x4c] + add r3, r4, #0x0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r2, r2, #0x2 + str r0, [sp, #0x0] + ldr r0, [r5, r2] + sub r2, r2, #0x4 + add r3, #0x48 + ldr r2, [r5, r2] + add r0, r0, r1 + add r1, r2, r1 + ldrb r3, [r3, #0x0] + mov r2, #0x10 + bl FUN_02003974 + add r0, r4, #0x0 + add r0, #0x6c + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + beq _02008862 + add r0, r0, #0x3 + lsl r1, r0, #0x5 + ldr r0, [r4, #0x4c] + mov r2, #0xad + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r3, r4, #0x0 + lsl r2, r2, #0x2 + str r0, [sp, #0x0] + ldr r0, [r5, r2] + sub r2, r2, #0x4 + add r3, #0x48 + ldr r2, [r5, r2] + add r0, r0, r1 + add r1, r2, r1 + ldrb r3, [r3, #0x0] + mov r2, #0x10 + bl FUN_02003974 +_02008862: + add r0, r4, #0x0 + add r0, #0x49 + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, r1 + bne _0200887C + ldr r1, [r4, #0x54] + ldr r0, _020088D0 ; =0xFFFFEFFF + and r0, r1 + str r0, [r4, #0x54] + b _020088AE +_0200887C: + cmp r0, r1 + bls _02008890 + add r0, r4, #0x0 + add r0, #0x48 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x48 + strb r1, [r0, #0x0] + b _020088AE +_02008890: + add r0, r4, #0x0 + add r0, #0x48 + ldrb r0, [r0, #0x0] + add r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x48 + strb r1, [r0, #0x0] + b _020088AE +_020088A0: + add r0, r4, #0x0 + add r0, #0x4a + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x4a + strb r1, [r0, #0x0] +_020088AE: + ldr r0, [sp, #0x8] + add r4, #0x98 + add r0, #0x10 + str r0, [sp, #0x8] + ldr r0, [sp, #0x14] + add r0, r0, #0x1 + str r0, [sp, #0x14] + cmp r0, #0x4 + bge _020088C2 + b _02008706 +_020088C2: + ldr r1, _020088D4 ; =0x000002E2 + ldr r0, [sp, #0xc] + strb r0, [r5, r1] + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 +_020088CC: .word 0xFFFFFEFF +_020088D0: .word 0xFFFFEFFF +_020088D4: .word 0x000002E2 + + thumb_func_start FUN_020088D8 +FUN_020088D8: ; 0x020088D8 + mov r1, #0xf0 + and r1, r0 + lsl r1, r1, #0x14 + lsl r0, r0, #0x1c + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start FUN_020088EC +FUN_020088EC: ; 0x020088EC + push {r3, lr} + add r2, r0, #0x0 + ldrh r0, [r2, #0xa] + cmp r0, #0x0 + beq _02008900 + add r0, r1, #0x0 + ldr r1, [r2, #0x10] + mov r2, #0x1 + bl FUN_02008904 +_02008900: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02008904 +FUN_02008904: ; 0x02008904 + push {r4-r7, lr} + sub sp, #0x1c + add r3, r0, #0x0 + add r0, r1, #0x0 + mov lr, r0 + mov r0, #0x0 + mov r12, r0 + ldr r0, _02008A50 ; =0x02105AE8 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + str r0, [sp, #0x10] +_0200891A: + ldr r0, [sp, #0x10] + mov r1, #0x0 + ldr r6, [r0, #0x0] + ldrb r0, [r6, #0x0] + cmp r0, #0xff + beq _02008992 + ldr r0, [sp, #0x0] + mov r2, #0xf + and r0, r2 + str r0, [sp, #0xc] + sub r0, #0x8 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + mov r2, #0xf0 + and r0, r2 + lsr r7, r0, #0x4 + sub r7, #0x8 +_0200893C: + lsl r0, r1, #0x1 + add r2, r6, r0 + ldrb r4, [r6, r0] + ldrb r2, [r2, #0x1] + ldr r0, [sp, #0xc] + add r0, r0, r4 + add r2, r7, r2 + lsl r0, r0, #0x18 + lsl r2, r2, #0x18 + lsr r0, r0, #0x18 + lsr r4, r2, #0x18 + mov r2, #0x50 + mul r2, r4 + lsr r5, r0, #0x1 + add r2, r5, r2 + mov r4, #0x1 + tst r0, r4 + ldrb r4, [r3, r2] + beq _02008974 + mov r0, #0xf0 + and r0, r4 + cmp r0, #0x10 + blt _02008984 + cmp r0, #0x30 + bgt _02008984 + add r4, #0x50 + strb r4, [r3, r2] + b _02008984 +_02008974: + mov r0, #0xf + and r0, r4 + cmp r0, #0x1 + blt _02008984 + cmp r0, #0x3 + bgt _02008984 + add r0, r4, #0x5 + strb r0, [r3, r2] +_02008984: + add r0, r1, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + lsl r0, r1, #0x1 + ldrb r0, [r6, r0] + cmp r0, #0xff + bne _0200893C +_02008992: + ldr r0, [sp, #0x0] + lsr r0, r0, #0x8 + str r0, [sp, #0x0] + ldr r0, [sp, #0x10] + add r0, r0, #0x4 + str r0, [sp, #0x10] + mov r0, r12 + add r0, r0, #0x1 + mov r12, r0 + cmp r0, #0x4 + blt _0200891A + mov r0, lr + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _02008A4A + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, _02008A50 ; =0x02105AE8 + str r0, [sp, #0x18] +_020089BA: + ldr r0, [sp, #0x18] + mov r4, #0x0 + ldr r2, [r0, #0x0] + ldrb r0, [r2, #0x0] + cmp r0, #0xff + beq _02008A34 + ldr r0, [sp, #0x0] + mov r1, #0xf + and r0, r1 + str r0, [sp, #0x14] + add r0, #0x48 + str r0, [sp, #0x14] + ldr r0, [sp, #0x0] + mov r1, #0xf0 + and r0, r1 + lsr r7, r0, #0x4 + sub r7, #0x8 +_020089DC: + lsl r0, r4, #0x1 + add r5, r2, r0 + ldrb r1, [r2, r0] + ldrb r5, [r5, #0x1] + ldr r0, [sp, #0x14] + sub r1, #0xe + add r0, r0, r1 + add r5, r7, r5 + lsl r0, r0, #0x18 + lsl r5, r5, #0x18 + lsr r1, r0, #0x18 + lsr r6, r5, #0x18 + mov r5, #0x50 + lsr r0, r1, #0x1 + mul r5, r6 + add r0, r0, r5 + mov r5, #0x1 + tst r1, r5 + ldrb r5, [r3, r0] + beq _02008A16 + mov r1, #0xf0 + and r1, r5 + cmp r1, #0x10 + blt _02008A26 + cmp r1, #0x30 + bgt _02008A26 + add r5, #0x50 + strb r5, [r3, r0] + b _02008A26 +_02008A16: + mov r1, #0xf + and r1, r5 + cmp r1, #0x1 + blt _02008A26 + cmp r1, #0x3 + bgt _02008A26 + add r1, r5, #0x5 + strb r1, [r3, r0] +_02008A26: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + lsl r0, r4, #0x1 + ldrb r0, [r2, r0] + cmp r0, #0xff + bne _020089DC +_02008A34: + ldr r0, [sp, #0x0] + lsr r0, r0, #0x8 + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + add r0, r0, #0x4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + str r0, [sp, #0x8] + cmp r0, #0x4 + blt _020089BA +_02008A4A: + add sp, #0x1c + pop {r4-r7, pc} + nop +_02008A50: .word 0x02105AE8 + + thumb_func_start FUN_02008A54 +FUN_02008A54: ; 0x02008A54 + ldr r2, [r0, #0x0] + ldr r1, _02008A6C ; =0x41C64E6D + add r3, r2, #0x0 + mul r3, r1 + ldr r1, _02008A70 ; =0x00006073 + add r1, r3, r1 + str r1, [r0, #0x0] + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + nop +_02008A6C: .word 0x41C64E6D +_02008A70: .word 0x00006073 + + thumb_func_start FUN_02008A74 +FUN_02008A74: ; 0x02008A74 + push {r3-r7, lr} + ldr r1, _02008AA0 ; =0x000018FE + mov r6, #0x0 + ldrh r2, [r0, r1] + lsr r4, r1, #0x1 + add r5, r0, r1 + str r2, [sp, #0x0] + add r7, sp, #0x0 + mvn r6, r6 +_02008A86: + ldrh r1, [r5, #0x0] + ldr r0, [sp, #0x0] + eor r0, r1 + strh r0, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_02008A54 + sub r4, r4, #0x1 + sub r5, r5, #0x2 + cmp r4, r6 + bgt _02008A86 + pop {r3-r7, pc} + nop +_02008AA0: .word 0x000018FE + + thumb_func_start FUN_02008AA4 +FUN_02008AA4: ; 0x02008AA4 + push {r3-r7, lr} + sub sp, #0x18 + mov r4, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x44] + add r6, r1, #0x0 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + str r4, [sp, #0xc] + cmp r0, #0x0 + bne _02008AC2 + bl ErrorHandling +_02008AC2: + ldr r0, [sp, #0x48] + cmp r0, #0x0 + bne _02008ACC + bl ErrorHandling +_02008ACC: + ldr r0, [sp, #0x50] + cmp r0, #0x0 + bne _02008AD6 + bl ErrorHandling +_02008AD6: + ldr r0, [sp, #0x4c] + cmp r0, #0x0 + bne _02008AE0 + bl ErrorHandling +_02008AE0: + cmp r5, #0x0 + bne _02008AE8 + bl ErrorHandling +_02008AE8: + ldr r0, [sp, #0x44] + add r1, r6, #0x0 + bl FUN_020094F0 + add r7, r0, #0x0 + bne _02008AF8 + bl ErrorHandling +_02008AF8: + ldr r0, [sp, #0x48] + ldr r1, [sp, #0x0] + bl FUN_020094F0 + str r0, [sp, #0x14] + cmp r0, #0x0 + bne _02008B0A + bl ErrorHandling +_02008B0A: + ldr r0, [sp, #0x4c] + ldr r1, [sp, #0x4] + bl FUN_020094F0 + str r0, [sp, #0x10] + cmp r0, #0x0 + bne _02008B1C + bl ErrorHandling +_02008B1C: + ldr r0, [sp, #0x50] + cmp r0, #0x0 + beq _02008B3A + mov r2, #0x0 + ldr r1, [sp, #0x30] + mvn r2, r2 + cmp r1, r2 + beq _02008B3A + bl FUN_020094F0 + str r0, [sp, #0xc] + cmp r0, #0x0 + bne _02008B3A + bl ErrorHandling +_02008B3A: + ldr r0, [sp, #0x54] + cmp r0, #0x0 + beq _02008B62 + mov r2, #0x0 + ldr r1, [sp, #0x34] + mvn r2, r2 + cmp r1, r2 + beq _02008B50 + bl FUN_020094F0 + add r4, r0, #0x0 +_02008B50: + mov r0, #0x0 + ldr r1, [sp, #0x38] + mvn r0, r0 + cmp r1, r0 + beq _02008B62 + ldr r0, [sp, #0x58] + bl FUN_020094F0 + str r0, [sp, #0x8] +_02008B62: + ldr r0, [sp, #0x3c] + cmp r0, #0x0 + beq _02008B82 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_02009C80 + add r6, r0, #0x0 + bne _02008B78 + bl ErrorHandling +_02008B78: + add r0, r7, #0x0 + bl FUN_02009544 + str r0, [r5, #0x4] + b _02008B94 +_02008B82: + add r0, r7, #0x0 + bl FUN_02009C5C + add r6, r0, #0x0 + bne _02008B90 + bl ErrorHandling +_02008B90: + mov r0, #0x0 + str r0, [r5, #0x4] +_02008B94: + ldr r0, [sp, #0x14] + add r1, r6, #0x0 + bl FUN_02009E54 + str r0, [r5, #0x8] + ldr r0, [sp, #0x10] + str r6, [r5, #0x0] + bl FUN_02009574 + str r0, [r5, #0xc] + ldr r0, [sp, #0xc] + cmp r0, #0x0 + beq _02008BB4 + bl FUN_0200958C + b _02008BB6 +_02008BB4: + mov r0, #0x0 +_02008BB6: + str r0, [r5, #0x10] + cmp r4, #0x0 + beq _02008BCC + add r0, r4, #0x0 + bl FUN_020095A4 + str r0, [r5, #0x14] + ldr r0, [sp, #0x8] + bl FUN_020095BC + b _02008BD0 +_02008BCC: + mov r0, #0x0 + str r0, [r5, #0x14] +_02008BD0: + str r0, [r5, #0x18] + ldr r0, [sp, #0x3c] + str r0, [r5, #0x1c] + ldr r0, [sp, #0x40] + add r5, #0x20 + strb r0, [r5, #0x0] + add sp, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_02008BE0 +FUN_02008BE0: ; 0x02008BE0 + push {r4-r7, lr} + sub sp, #0x34 + add r5, r0, #0x0 + ldr r0, [sp, #0x48] + add r7, r1, #0x0 + str r0, [sp, #0x48] + ldr r0, [sp, #0x4c] + mov r4, #0x0 + str r0, [sp, #0x4c] + ldr r0, [sp, #0x50] + ldr r1, [r5, #0x0] + str r0, [sp, #0x50] + ldr r0, [sp, #0x54] + str r2, [sp, #0x2c] + str r0, [sp, #0x54] + sub r0, r4, #0x2 + str r3, [sp, #0x30] + cmp r1, r0 + beq _02008C14 + add r2, r5, #0x0 + sub r0, r4, #0x2 +_02008C0A: + add r2, #0x20 + ldr r1, [r2, #0x0] + add r4, r4, #0x1 + cmp r1, r0 + bne _02008C0A +_02008C14: + add r0, r7, #0x0 + mov r1, #0x8 + bl FUN_02016998 + mov r1, #0x24 + add r6, r0, #0x0 + add r0, r7, #0x0 + mul r1, r4 + bl FUN_02016998 + str r0, [r6, #0x0] + mov r7, #0x0 + str r4, [r6, #0x4] + cmp r4, #0x0 + ble _02008C7A + add r4, r7, #0x0 +_02008C34: + ldr r0, [r5, #0xc] + str r0, [sp, #0x0] + ldr r0, [r5, #0x10] + str r0, [sp, #0x4] + ldr r0, [r5, #0x14] + str r0, [sp, #0x8] + ldr r0, [r5, #0x18] + str r0, [sp, #0xc] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x14] + ldr r0, [sp, #0x30] + str r0, [sp, #0x18] + ldr r0, [sp, #0x48] + str r0, [sp, #0x1c] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x20] + ldr r0, [sp, #0x50] + str r0, [sp, #0x24] + ldr r0, [sp, #0x54] + str r0, [sp, #0x28] + ldr r0, [r6, #0x0] + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + add r0, r0, r4 + bl FUN_02008AA4 + ldr r0, [r6, #0x4] + add r7, r7, #0x1 + add r5, #0x20 + add r4, #0x24 + cmp r7, r0 + blt _02008C34 +_02008C7A: + add r0, r6, #0x0 + add sp, #0x34 + pop {r4-r7, pc} + + thumb_func_start FUN_02008C80 +FUN_02008C80: ; 0x02008C80 + push {r4, lr} + add r4, r0, #0x0 + bne _02008C8A + bl ErrorHandling +_02008C8A: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02008C94 + bl FUN_02016A18 +_02008C94: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02008C9C +FUN_02008C9C: ; 0x02008C9C + push {r3-r6, lr} + sub sp, #0x1c + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r1, _02008D00 ; =0xFFFFF000 + add r0, r4, #0x0 + add r6, r2, #0x0 + bl FUN_0202134C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0xff + lsl r0, r0, #0xc + str r0, [sp, #0x8] + mov r0, #0x3 + lsl r0, r0, #0x12 + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r0, #0x98 + add r1, sp, #0x0 + mov r2, #0x1 + add r3, r4, #0x0 + bl FUN_02009FD8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0xff + mov r1, #0x3 + lsl r1, r1, #0x12 + lsl r0, r0, #0xc + str r0, [sp, #0x8] + add r0, r4, #0x0 + str r1, [sp, #0x4] + str r1, [sp, #0xc] + add r0, #0xe0 + add r1, sp, #0x0 + mov r2, #0x2 + add r3, r4, #0x0 + bl FUN_02009FD8 + add r0, sp, #0x10 + str r5, [sp, #0x10] + str r4, [sp, #0x14] + str r6, [sp, #0x18] + bl FUN_0201FCB0 + add sp, #0x1c + pop {r3-r6, pc} + nop +_02008D00: .word 0xFFFFF000 + + thumb_func_start FUN_02008D04 +FUN_02008D04: ; 0x02008D04 + push {r3, lr} + sub sp, #0x10 + str r1, [sp, #0x0] + mov r1, #0xff + lsl r1, r1, #0xc + str r1, [sp, #0x8] + mov r1, #0x3 + lsl r1, r1, #0x12 + str r1, [sp, #0xc] + add r0, #0x98 + add r1, sp, #0x0 + str r2, [sp, #0x4] + bl FUN_02021390 + add sp, #0x10 + pop {r3, pc} + + thumb_func_start FUN_02008D24 +FUN_02008D24: ; 0x02008D24 + push {r3, lr} + sub sp, #0x10 + str r1, [sp, #0x0] + mov r1, #0xff + lsl r1, r1, #0xc + str r1, [sp, #0x8] + mov r1, #0x3 + lsl r1, r1, #0x12 + str r1, [sp, #0xc] + add r0, #0xe0 + add r1, sp, #0x0 + str r2, [sp, #0x4] + bl FUN_02021390 + add sp, #0x10 + pop {r3, pc} + + thumb_func_start FUN_02008D44 +FUN_02008D44: ; 0x02008D44 + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x10 + beq _02008D5A + ldr r2, _02008DCC ; =0x00100010 + cmp r1, r2 + beq _02008D8A + ldr r0, _02008DD0 ; =0x00200010 + cmp r1, r0 + beq _02008D98 + b _02008DC4 +_02008D5A: + blx GX_GetBankForOBJ + cmp r0, #0x40 + beq _02008D6A + blx GX_GetBankForOBJ + cmp r0, #0x20 + bne _02008D7A +_02008D6A: + mov r0, #0x3e + mov r1, #0x2 + lsl r0, r0, #0x8 + lsl r1, r1, #0x8 + add r2, r4, #0x0 + bl FUN_0201D194 + pop {r4, pc} +_02008D7A: + mov r0, #0x7e + mov r1, #0x2 + lsl r0, r0, #0x8 + lsl r1, r1, #0x8 + add r2, r4, #0x0 + bl FUN_0201D194 + pop {r4, pc} +_02008D8A: + mov r0, #0xfe + lsr r1, r2, #0xb + lsl r0, r0, #0x8 + add r2, r4, #0x0 + bl FUN_0201D194 + pop {r4, pc} +_02008D98: + blx GX_GetBankForOBJ + cmp r0, #0x30 + beq _02008DA8 + blx GX_GetBankForOBJ + cmp r0, #0x50 + bne _02008DB6 +_02008DA8: + mov r1, #0x2 + ldr r0, _02008DD4 ; =0x00013E00 + lsl r1, r1, #0x8 + add r2, r4, #0x0 + bl FUN_0201D194 + pop {r4, pc} +_02008DB6: + mov r1, #0x2 + ldr r0, _02008DD8 ; =0x0001FE00 + lsl r1, r1, #0x8 + add r2, r4, #0x0 + bl FUN_0201D194 + pop {r4, pc} +_02008DC4: + bl ErrorHandling + pop {r4, pc} + nop +_02008DCC: .word 0x00100010 +_02008DD0: .word 0x00200010 +_02008DD4: .word 0x00013E00 +_02008DD8: .word 0x0001FE00 + + thumb_func_start FUN_02008DDC +FUN_02008DDC: ; 0x02008DDC + ldr r3, _02008DE8 ; =0x0201E069 + add r1, r0, #0x0 + mov r0, #0x3 + lsl r0, r0, #0xe + bx r3 + nop +_02008DE8: .word 0x0201E069 + + thumb_func_start FUN_02008DEC +FUN_02008DEC: ; 0x02008DEC + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + str r2, [sp, #0x0] + add r0, r2, #0x0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02020C44 + str r0, [r4, #0x0] + mov r0, #0xc + add r7, r5, #0x0 + mul r7, r0 + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_02016998 + mov r1, #0x0 + add r2, r7, #0x0 + str r0, [r4, #0x4] + blx Call_FillMemWithValue + str r5, [r4, #0x8] + mov r0, #0x0 + str r0, [r4, #0xc] + str r6, [r4, #0x10] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02008E2C +FUN_02008E2C: ; 0x02008E2C + push {r4, lr} + add r4, r0, #0x0 + bne _02008E36 + bl ErrorHandling +_02008E36: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02008E40 + bl ErrorHandling +_02008E40: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + bne _02008E4A + bl ErrorHandling +_02008E4A: + add r0, r4, #0x0 + bl FUN_020094C4 + ldr r0, [r4, #0x0] + bl FUN_02020C90 + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r0, [r4, #0x4] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x4] + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02008E6C +FUN_02008E6C: ; 0x02008E6C + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r5, #0x0 + bne _02008E80 + bl ErrorHandling +_02008E80: + cmp r4, #0x0 + bne _02008E88 + bl ErrorHandling +_02008E88: + ldr r0, [r4, #0x4] + cmp r0, r6 + bgt _02008E92 + bl ErrorHandling +_02008E92: + ldr r1, [r5, #0x10] + ldr r0, [r4, #0x8] + cmp r1, r0 + beq _02008E9E + bl ErrorHandling +_02008E9E: + add r0, r5, #0x0 + bl FUN_020097D0 + str r0, [sp, #0x1c] + cmp r0, #0x0 + bne _02008EAE + bl ErrorHandling +_02008EAE: + ldrb r0, [r4, #0xc] + cmp r0, #0x0 + bne _02008EEA + ldr r2, [r4, #0x0] + mov r0, #0x4c + add r1, r6, #0x0 + mul r1, r0 + add r6, r2, r1 + ldr r1, [r2, r1] + add r0, r5, #0x0 + bl FUN_0200945C + cmp r0, #0x1 + beq _02008ECE + bl ErrorHandling +_02008ECE: + ldr r0, [r6, #0x44] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x0] + ldr r0, [r6, #0x48] + add r2, r6, #0x4 + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + str r0, [sp, #0x8] + str r7, [sp, #0xc] + ldr r3, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_0200994C + b _02008F28 +_02008EEA: + mov r0, #0x18 + ldr r1, [r4, #0x0] + mul r0, r6 + add r6, r1, r0 + ldr r1, [r6, #0xc] + add r0, r5, #0x0 + bl FUN_0200945C + cmp r0, #0x1 + beq _02008F02 + bl ErrorHandling +_02008F02: + ldr r0, [r6, #0x8] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x0] + ldr r0, [r6, #0xc] + str r0, [sp, #0x4] + ldr r0, [r6, #0x10] + str r0, [sp, #0x8] + ldr r0, [r6, #0x14] + str r0, [sp, #0xc] + ldr r0, [r4, #0x8] + str r0, [sp, #0x10] + str r7, [sp, #0x14] + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + add r0, r5, #0x0 + bl FUN_02009978 +_02008F28: + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + ldr r0, [sp, #0x1c] + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_02008F34 +FUN_02008F34: ; 0x02008F34 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _02008F48 + bl ErrorHandling +_02008F48: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _02008F52 + bl ErrorHandling +_02008F52: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _02008F60 + bl ErrorHandling +_02008F60: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + mov r1, #0x0 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x40] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02009978 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02008F90 +FUN_02008F90: ; 0x02008F90 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _02008FA4 + bl ErrorHandling +_02008FA4: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _02008FAE + bl ErrorHandling +_02008FAE: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _02008FBC + bl ErrorHandling +_02008FBC: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x40] + add r1, r6, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x44] + add r2, r7, #0x0 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_02009978 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_02008FEC +FUN_02008FEC: ; 0x02008FEC + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _02009000 + bl ErrorHandling +_02009000: + ldr r0, [r5, #0x10] + cmp r0, #0x1 + beq _0200900A + bl ErrorHandling +_0200900A: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _02009018 + bl ErrorHandling +_02009018: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r1, r6, #0x0 + str r0, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x44] + add r2, r7, #0x0 + str r0, [sp, #0x14] + mov r0, #0x0 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_02009978 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200904C +FUN_0200904C: ; 0x0200904C + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _02009060 + bl ErrorHandling +_02009060: + ldr r0, [r5, #0x10] + cmp r0, #0x1 + beq _0200906A + bl ErrorHandling +_0200906A: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _02009078 + bl ErrorHandling +_02009078: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r1, r6, #0x0 + str r0, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x44] + add r2, r7, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x48] + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_02009978 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020090AC +FUN_020090AC: ; 0x020090AC + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _020090C0 + bl ErrorHandling +_020090C0: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _020090CE + bl ErrorHandling +_020090CE: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + ldr r0, [sp, #0x3c] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x40] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02009978 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_020090FC +FUN_020090FC: ; 0x020090FC + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x1c] + str r3, [sp, #0x20] + cmp r5, #0x0 + bne _02009110 + bl ErrorHandling +_02009110: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _0200911A + bl ErrorHandling +_0200911A: + cmp r4, #0x0 + bne _02009122 + bl ErrorHandling +_02009122: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0200912C + bl ErrorHandling +_0200912C: + add r0, r4, #0x0 + bl FUN_02009530 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020095E4 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02009490 + ldr r0, [sp, #0x38] + mov r1, #0x0 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + str r7, [sp, #0x8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x3c] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02009978 + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start FUN_02009168 +FUN_02009168: ; 0x02009168 + push {r3-r7, lr} + sub sp, #0x28 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x1c] + str r3, [sp, #0x20] + cmp r5, #0x0 + bne _0200917C + bl ErrorHandling +_0200917C: + ldr r0, [r5, #0x10] + cmp r0, #0x1 + beq _02009186 + bl ErrorHandling +_02009186: + cmp r4, #0x0 + bne _0200918E + bl ErrorHandling +_0200918E: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + beq _02009198 + bl ErrorHandling +_02009198: + add r0, r4, #0x0 + bl FUN_02009530 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020095E4 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02009610 + str r0, [sp, #0x24] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02009490 + ldr r0, [sp, #0x40] + ldr r2, [sp, #0x1c] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0x24] + str r7, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x44] + ldr r3, [sp, #0x20] + str r0, [sp, #0x14] + mov r0, #0x0 + str r0, [sp, #0x18] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02009978 + add sp, #0x28 + pop {r3-r7, pc} + + thumb_func_start FUN_020091E0 +FUN_020091E0: ; 0x020091E0 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _020091F4 + bl ErrorHandling +_020091F4: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _020091FE + bl ErrorHandling +_020091FE: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _0200920C + bl ErrorHandling +_0200920C: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + mov r1, #0x0 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r0, [sp, #0x40] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020099B0 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200923C +FUN_0200923C: ; 0x0200923C + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _02009250 + bl ErrorHandling +_02009250: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _0200925A + bl ErrorHandling +_0200925A: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _02009268 + bl ErrorHandling +_02009268: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x40] + add r1, r6, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x44] + add r2, r7, #0x0 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_020099B0 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_02009298 +FUN_02009298: ; 0x02009298 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _020092AC + bl ErrorHandling +_020092AC: + ldr r0, [r5, #0x10] + cmp r0, #0x1 + beq _020092B6 + bl ErrorHandling +_020092B6: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _020092C4 + bl ErrorHandling +_020092C4: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r1, r6, #0x0 + str r0, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x44] + add r2, r7, #0x0 + str r0, [sp, #0x14] + mov r0, #0x0 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_020099B0 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020092F8 +FUN_020092F8: ; 0x020092F8 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _0200930C + bl ErrorHandling +_0200930C: + ldr r0, [r5, #0x10] + cmp r0, #0x1 + beq _02009316 + bl ErrorHandling +_02009316: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _02009324 + bl ErrorHandling +_02009324: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r1, r6, #0x0 + str r0, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x44] + add r2, r7, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x48] + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_020099B0 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02009358 +FUN_02009358: ; 0x02009358 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x1c] + cmp r5, #0x0 + bne _0200936C + bl ErrorHandling +_0200936C: + add r0, r5, #0x0 + bl FUN_020097D0 + add r6, r0, #0x0 + bne _0200937A + bl ErrorHandling +_0200937A: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + ldr r0, [sp, #0x3c] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x40] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x14] + str r1, [sp, #0x18] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020099B0 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add r0, r6, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_020093A8 +FUN_020093A8: ; 0x020093A8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r5, #0x0 + bne _020093BC + bl ErrorHandling +_020093BC: + cmp r4, #0x0 + bne _020093C4 + bl ErrorHandling +_020093C4: + str r6, [sp, #0x0] + str r7, [sp, #0x4] + ldr r3, [r4, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020093DC + ldr r0, [r4, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020093DC +FUN_020093DC: ; 0x020093DC + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r5, r2, #0x0 + ldr r0, [sp, #0x24] + add r7, r5, r3 + str r1, [sp, #0x4] + ldr r4, [sp, #0x20] + str r0, [sp, #0x24] + cmp r5, r7 + bge _02009420 + add r6, r4, #0x0 + add r6, #0x8 +_020093F6: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [sp, #0x24] + add r2, r5, #0x0 + bl FUN_02008E6C + cmp r4, #0x0 + beq _0200941A + ldr r2, [r4, #0x8] + ldr r1, [r4, #0x4] + cmp r1, r2 + ble _0200941A + ldr r1, [r4, #0x0] + lsl r2, r2, #0x2 + str r0, [r1, r2] + ldr r0, [r6, #0x0] + add r0, r0, #0x1 + str r0, [r6, #0x0] +_0200941A: + add r5, r5, #0x1 + cmp r5, r7 + blt _020093F6 +_02009420: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02009424 +FUN_02009424: ; 0x02009424 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + lsl r1, r5, #0x2 + bl FUN_02016998 + str r0, [r4, #0x0] + str r5, [r4, #0x4] + mov r0, #0x0 + str r0, [r4, #0x8] + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02009448 +FUN_02009448: ; 0x02009448 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200945C +FUN_0200945C: ; 0x0200945C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0200946A + bl ErrorHandling +_0200946A: + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02020CB0 + pop {r3-r5, pc} + + thumb_func_start FUN_02009474 +FUN_02009474: ; 0x02009474 + push {r4, lr} + add r4, r0, #0x0 + bne _0200947E + bl ErrorHandling +_0200947E: + add r0, r4, #0x0 + bl FUN_02009920 + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_02020E1C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02009490 +FUN_02009490: ; 0x02009490 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0200949E + bl ErrorHandling +_0200949E: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _020094A8 + bl ErrorHandling +_020094A8: + add r0, r4, #0x0 + bl FUN_02009920 + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + bl FUN_02020D68 + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + sub r0, r0, #0x1 + str r0, [r5, #0xc] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020094C4 +FUN_020094C4: ; 0x020094C4 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x8] + mov r6, #0x0 + cmp r0, #0x0 + ble _020094EC + add r4, r6, #0x0 +_020094D2: + ldr r1, [r5, #0x4] + ldr r0, [r1, r4] + cmp r0, #0x0 + beq _020094E2 + add r0, r5, #0x0 + add r1, r1, r4 + bl FUN_02009490 +_020094E2: + ldr r0, [r5, #0x8] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _020094D2 +_020094EC: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020094F0 +FUN_020094F0: ; 0x020094F0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _020094FE + bl ErrorHandling +_020094FE: + ldr r0, [r5, #0x8] + mov r6, #0x0 + cmp r0, #0x0 + ble _0200952C + add r4, r6, #0x0 +_02009508: + ldr r0, [r5, #0x4] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009522 + bl FUN_02020E38 + cmp r0, r7 + bne _02009522 + mov r0, #0xc + ldr r1, [r5, #0x4] + mul r0, r6 + add r0, r1, r0 + pop {r3-r7, pc} +_02009522: + ldr r0, [r5, #0x8] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02009508 +_0200952C: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02009530 +FUN_02009530: ; 0x02009530 + push {r4, lr} + add r4, r0, #0x0 + bne _0200953A + bl ErrorHandling +_0200953A: + ldr r0, [r4, #0x0] + bl FUN_02020E38 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02009544 +FUN_02009544: ; 0x02009544 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02009552 + bl ErrorHandling +_02009552: + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_0200955C +FUN_0200955C: ; 0x0200955C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + beq _0200956A + bl ErrorHandling +_0200956A: + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02009574 +FUN_02009574: ; 0x02009574 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x2 + beq _02009582 + bl ErrorHandling +_02009582: + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_0200958C +FUN_0200958C: ; 0x0200958C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + beq _0200959A + bl ErrorHandling +_0200959A: + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_020095A4 +FUN_020095A4: ; 0x020095A4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x4 + beq _020095B2 + bl ErrorHandling +_020095B2: + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_020095BC +FUN_020095BC: ; 0x020095BC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x5 + beq _020095CA + bl ErrorHandling +_020095CA: + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_020095D4 +FUN_020095D4: ; 0x020095D4 + push {r4, lr} + add r4, r0, #0x0 + bne _020095DE + bl ErrorHandling +_020095DE: + ldr r0, [r4, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020095E4 +FUN_020095E4: ; 0x020095E4 + push {r4, lr} + add r4, r0, #0x0 + bne _020095EE + bl ErrorHandling +_020095EE: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + bne _020095FE + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x4] + pop {r4, pc} +_020095FE: + cmp r0, #0x1 + bne _0200960C + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x4] + pop {r4, pc} +_0200960C: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02009610 +FUN_02009610: ; 0x02009610 + push {r4, lr} + add r4, r0, #0x0 + bne _0200961A + bl ErrorHandling +_0200961A: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0200962A + add r0, r4, #0x0 + bl FUN_02009934 + ldr r0, [r0, #0x8] + pop {r4, pc} +_0200962A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02009630 +FUN_02009630: ; 0x02009630 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0200963E + bl ErrorHandling +_0200963E: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _0200964C + add r0, r5, #0x0 + bl FUN_02009934 + str r4, [r0, #0x4] +_0200964C: + ldr r0, [r5, #0x4] + cmp r0, #0x1 + bne _0200965A + add r0, r5, #0x0 + bl FUN_02009934 + str r4, [r0, #0x4] +_0200965A: + pop {r3-r5, pc} + + thumb_func_start FUN_0200965C +FUN_0200965C: ; 0x0200965C + mov r0, #0x10 + bx lr + + thumb_func_start FUN_02009660 +FUN_02009660: ; 0x02009660 + lsl r1, r1, #0x4 + add r0, r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_02009668 +FUN_02009668: ; 0x02009668 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x0 + bne _02009678 + bl ErrorHandling +_02009678: + ldr r0, [r5, #0x0] + str r0, [r4, #0x8] + mov r0, #0x1 + strb r0, [r4, #0xc] + add r0, r5, #0x4 + bl FUN_020099E8 + add r2, r0, #0x0 + str r0, [r4, #0x4] + cmp r2, #0x0 + ble _0200969A + mov r1, #0x18 + add r0, r6, #0x0 + mul r1, r2 + bl FUN_02016998 + b _0200969C +_0200969A: + mov r0, #0x0 +_0200969C: + str r0, [r4, #0x0] + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020096B0 + ldr r3, [r4, #0x4] + mov r2, #0x18 + add r1, r5, #0x4 + mul r2, r3 + blx memcpy +_020096B0: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020096B4 +FUN_020096B4: ; 0x020096B4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020096C2 + bl FUN_02016A18 +_020096C2: + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020096CC +FUN_020096CC: ; 0x020096CC + push {r4, lr} + add r4, r0, #0x0 + bne _020096D6 + bl ErrorHandling +_020096D6: + ldr r0, [r4, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020096DC +FUN_020096DC: ; 0x020096DC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020096EA + bl ErrorHandling +_020096EA: + ldr r0, [r5, #0x4] + cmp r0, r4 + bgt _020096F4 + bl ErrorHandling +_020096F4: + ldrb r0, [r5, #0xc] + ldr r1, [r5, #0x0] + cmp r0, #0x0 + bne _02009704 + mov r0, #0x4c + mul r0, r4 + ldr r0, [r1, r0] + pop {r3-r5, pc} +_02009704: + mov r0, #0x18 + mul r0, r4 + add r0, r1, r0 + ldr r0, [r0, #0xc] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02009710 +FUN_02009710: ; 0x02009710 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0200971E + bl ErrorHandling +_0200971E: + ldr r0, [r5, #0x4] + cmp r0, r4 + bgt _02009728 + bl ErrorHandling +_02009728: + ldrb r0, [r5, #0xc] + cmp r0, #0x1 + bne _02009738 + mov r0, #0x18 + ldr r1, [r5, #0x0] + mul r0, r4 + add r0, r1, r0 + ldr r6, [r0, #0x4] +_02009738: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0200973C +FUN_0200973C: ; 0x0200973C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0200974A + bl ErrorHandling +_0200974A: + ldr r0, [r5, #0x4] + cmp r0, r4 + bgt _02009754 + bl ErrorHandling +_02009754: + ldrb r0, [r5, #0xc] + cmp r0, #0x1 + bne _02009764 + mov r0, #0x18 + ldr r1, [r5, #0x0] + mul r0, r4 + add r0, r1, r0 + ldr r6, [r0, #0x8] +_02009764: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02009768 +FUN_02009768: ; 0x02009768 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02009776 + bl ErrorHandling +_02009776: + ldr r0, [r5, #0x4] + cmp r0, r4 + bgt _02009780 + bl ErrorHandling +_02009780: + ldrb r0, [r5, #0xc] + ldr r1, [r5, #0x0] + cmp r0, #0x0 + bne _02009792 + mov r0, #0x4c + mul r0, r4 + add r0, r1, r0 + ldr r0, [r0, #0x44] + pop {r3-r5, pc} +_02009792: + mov r0, #0x18 + mul r0, r4 + add r0, r1, r0 + ldr r0, [r0, #0x10] + pop {r3-r5, pc} + + thumb_func_start FUN_0200979C +FUN_0200979C: ; 0x0200979C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020097AA + bl ErrorHandling +_020097AA: + ldr r0, [r5, #0x4] + cmp r0, r4 + bgt _020097B4 + bl ErrorHandling +_020097B4: + ldrb r0, [r5, #0xc] + ldr r1, [r5, #0x0] + cmp r0, #0x0 + bne _020097C6 + mov r0, #0x4c + mul r0, r4 + add r0, r1, r0 + ldr r0, [r0, #0x48] + pop {r3-r5, pc} +_020097C6: + mov r0, #0x18 + mul r0, r4 + add r0, r1, r0 + ldr r0, [r0, #0x14] + pop {r3-r5, pc} + + thumb_func_start FUN_020097D0 +FUN_020097D0: ; 0x020097D0 + push {r3-r4} + ldr r4, [r0, #0x8] + mov r1, #0x0 + cmp r4, #0x0 + ble _020097F6 + ldr r3, [r0, #0x4] + add r2, r3, #0x0 +_020097DE: + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _020097EE + mov r0, #0xc + mul r0, r1 + add r0, r3, r0 + pop {r3-r4} + bx lr +_020097EE: + add r1, r1, #0x1 + add r2, #0xc + cmp r1, r4 + blt _020097DE +_020097F6: + mov r0, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_020097FC +FUN_020097FC: ; 0x020097FC + push {r3-r7, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + add r6, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + ldr r5, [sp, #0x18] + bl FUN_02020E0C + cmp r6, #0x5 + bhi _0200986A + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0200981E: ; jump table (using 16-bit offset) + .short _0200982A - _0200981E - 2; case 0 + .short _02009836 - _0200981E - 2; case 1 + .short _02009844 - _0200981E - 2; case 2 + .short _0200984E - _0200981E - 2; case 3 + .short _02009858 - _0200981E - 2; case 4 + .short _02009862 - _0200981E - 2; case 5 +_0200982A: + add r1, r7, #0x0 + add r2, r5, #0x0 + bl FUN_0200986C + str r0, [r4, #0x8] + pop {r3-r7, pc} +_02009836: + ldr r2, [sp, #0x0] + add r1, r7, #0x0 + add r3, r5, #0x0 + bl FUN_0200988C + str r0, [r4, #0x8] + pop {r3-r7, pc} +_02009844: + add r1, r5, #0x0 + bl FUN_020098B0 + str r0, [r4, #0x8] + pop {r3-r7, pc} +_0200984E: + add r1, r5, #0x0 + bl FUN_020098CC + str r0, [r4, #0x8] + pop {r3-r7, pc} +_02009858: + add r1, r5, #0x0 + bl FUN_020098E8 + str r0, [r4, #0x8] + pop {r3-r7, pc} +_02009862: + add r1, r5, #0x0 + bl FUN_02009904 + str r0, [r4, #0x8] +_0200986A: + pop {r3-r7, pc} + + thumb_func_start FUN_0200986C +FUN_0200986C: ; 0x0200986C + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x8 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + blx FUN_020B0088 + str r5, [r4, #0x4] + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0200988C +FUN_0200988C: ; 0x0200988C + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r0, r3, #0x0 + mov r1, #0xc + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r7, #0x0 + add r1, r4, #0x0 + blx FUN_020B0138 + str r5, [r4, #0x4] + str r6, [r4, #0x8] + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020098B0 +FUN_020098B0: ; 0x020098B0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + blx FUN_020AFEB8 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020098CC +FUN_020098CC: ; 0x020098CC + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + blx thunk_FUN_020afda0_2 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020098E8 +FUN_020098E8: ; 0x020098E8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + blx FUN_020AFFD8 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02009904 +FUN_02009904: ; 0x02009904 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + blx thunk_FUN_020afda0 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02009920 +FUN_02009920: ; 0x02009920 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _0200992E + bl FUN_02016A18 +_0200992E: + mov r0, #0x0 + str r0, [r4, #0x8] + pop {r4, pc} + + thumb_func_start FUN_02009934 +FUN_02009934: ; 0x02009934 + push {r4, lr} + add r4, r0, #0x0 + bne _0200993E + bl ErrorHandling +_0200993E: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + bne _02009948 + bl ErrorHandling +_02009948: + ldr r0, [r4, #0x8] + pop {r4, pc} + + thumb_func_start FUN_0200994C +FUN_0200994C: ; 0x0200994C + push {r3-r4, lr} + sub sp, #0x4 + add r4, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r0, [r0, #0x0] + ldr r3, [sp, #0x1c] + bl FUN_02020D10 + str r0, [r4, #0x0] + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r4, #0x4] + str r0, [sp, #0x0] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r4, #0x0 + bl FUN_020097FC + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02009978 +FUN_02009978: ; 0x02009978 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + add r4, r1, #0x0 + str r0, [sp, #0x0] + add r0, r2, #0x0 + add r1, r3, #0x0 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x24] + bl FUN_02006C98 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x14] + bl FUN_02020CD4 + str r0, [r4, #0x0] + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x24] + str r1, [r4, #0x4] + str r0, [sp, #0x0] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, r4, #0x0 + bl FUN_020097FC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020099B0 +FUN_020099B0: ; 0x020099B0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + add r4, r1, #0x0 + str r0, [sp, #0x0] + add r0, r2, #0x0 + add r1, r3, #0x0 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x24] + bl FUN_02009A04 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x14] + bl FUN_02020CD4 + str r0, [r4, #0x0] + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x24] + str r1, [r4, #0x4] + str r0, [sp, #0x0] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + add r0, r4, #0x0 + bl FUN_020097FC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020099E8 +FUN_020099E8: ; 0x020099E8 + mov r3, #0x0 + ldr r2, [r0, #0x0] + sub r1, r3, #0x2 + cmp r2, r1 + beq _020099FE + sub r1, r3, #0x2 +_020099F4: + add r0, #0x18 + ldr r2, [r0, #0x0] + add r3, r3, #0x1 + cmp r2, r1 + bne _020099F4 +_020099FE: + add r0, r3, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02009A04 +FUN_02009A04: ; 0x02009A04 + push {r4-r6, lr} + add r6, r3, #0x0 + add r5, r2, #0x0 + add r2, r6, #0x0 + bl FUN_02006704 + add r4, r0, #0x0 + beq _02009A4A + cmp r5, #0x0 + beq _02009A4A + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bne _02009A2A + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + lsr r1, r1, #0x8 + bl FUN_02016998 + b _02009A34 +_02009A2A: + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + lsr r1, r1, #0x8 + bl FUN_020169D8 +_02009A34: + add r5, r0, #0x0 + cmp r5, #0x0 + beq _02009A48 + add r0, r4, #0x0 + add r1, r5, #0x0 + blx MI_UncompressLZ8 + add r0, r4, #0x0 + bl FUN_02016A18 +_02009A48: + add r4, r5, #0x0 +_02009A4A: + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02009A50 +FUN_02009A50: ; 0x02009A50 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bne _02009A5C + bl ErrorHandling +_02009A5C: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009A6A + bl ErrorHandling +_02009A6A: + add r0, r4, #0x0 + bl FUN_02009544 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020095E4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02009530 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + add r0, sp, #0x0 + bl FUN_0201D1F8 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02009A90 +FUN_02009A90: ; 0x02009A90 + push {r4-r6, lr} + add r5, r0, #0x0 + bne _02009A9A + bl ErrorHandling +_02009A9A: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02009AC2 + add r4, r6, #0x0 +_02009AA4: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009AB8 + bl FUN_02009A50 + cmp r0, #0x0 + bne _02009AB8 + bl ErrorHandling +_02009AB8: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02009AA4 +_02009AC2: + pop {r4-r6, pc} + + thumb_func_start FUN_02009AC4 +FUN_02009AC4: ; 0x02009AC4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bne _02009AD0 + bl ErrorHandling +_02009AD0: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009ADE + bl ErrorHandling +_02009ADE: + add r0, r4, #0x0 + bl FUN_02009544 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020095E4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02009530 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + add r0, sp, #0x0 + bl FUN_0201D250 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02009B04 +FUN_02009B04: ; 0x02009B04 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bne _02009B10 + bl ErrorHandling +_02009B10: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009B1E + bl ErrorHandling +_02009B1E: + add r0, r4, #0x0 + bl FUN_02009544 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020095E4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02009530 + str r0, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + add r0, sp, #0x0 + bl FUN_0201D1F8 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02009B44 +FUN_02009B44: ; 0x02009B44 + push {r4-r6, lr} + add r5, r0, #0x0 + bne _02009B4E + bl ErrorHandling +_02009B4E: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02009B76 + add r4, r6, #0x0 +_02009B58: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009B6C + bl FUN_02009B04 + cmp r0, #0x0 + bne _02009B6C + bl ErrorHandling +_02009B6C: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02009B58 +_02009B76: + pop {r4-r6, pc} + + thumb_func_start FUN_02009B78 +FUN_02009B78: ; 0x02009B78 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bne _02009B84 + bl ErrorHandling +_02009B84: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009B92 + bl ErrorHandling +_02009B92: + add r0, r4, #0x0 + bl FUN_02009544 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020095E4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02009530 + str r0, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + add r0, sp, #0x0 + bl FUN_0201D250 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02009BB8 +FUN_02009BB8: ; 0x02009BB8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r4, #0x0 + bne _02009BC6 + bl ErrorHandling +_02009BC6: + cmp r5, #0x0 + bne _02009BCE + bl ErrorHandling +_02009BCE: + add r0, r4, #0x0 + bl FUN_02009530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02009544 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0201D2DC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02009BE8 +FUN_02009BE8: ; 0x02009BE8 + push {r3-r5, lr} + add r5, r0, #0x0 + bne _02009BF2 + bl ErrorHandling +_02009BF2: + add r0, r5, #0x0 + bl FUN_02009530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02009544 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0201D2DC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02009C0C +FUN_02009C0C: ; 0x02009C0C + push {r4, lr} + add r4, r0, #0x0 + bne _02009C16 + bl ErrorHandling +_02009C16: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009C24 + bl ErrorHandling +_02009C24: + add r0, r4, #0x0 + bl FUN_02009530 + bl FUN_0201D324 + pop {r4, pc} + + thumb_func_start FUN_02009C30 +FUN_02009C30: ; 0x02009C30 + push {r4-r6, lr} + add r5, r0, #0x0 + bne _02009C3A + bl ErrorHandling +_02009C3A: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02009C5A + add r4, r6, #0x0 +_02009C44: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009C50 + bl FUN_02009C0C +_02009C50: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02009C44 +_02009C5A: + pop {r4-r6, pc} + + thumb_func_start FUN_02009C5C +FUN_02009C5C: ; 0x02009C5C + push {r4, lr} + add r4, r0, #0x0 + bne _02009C66 + bl ErrorHandling +_02009C66: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009C74 + bl ErrorHandling +_02009C74: + add r0, r4, #0x0 + bl FUN_02009530 + bl FUN_0201D3B0 + pop {r4, pc} + + thumb_func_start FUN_02009C80 +FUN_02009C80: ; 0x02009C80 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r4, #0x0 + bne _02009C8E + bl ErrorHandling +_02009C8E: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x0 + beq _02009C9C + bl ErrorHandling +_02009C9C: + cmp r5, #0x0 + bne _02009CA4 + bl ErrorHandling +_02009CA4: + add r0, r5, #0x0 + bl FUN_020095D4 + cmp r0, #0x2 + beq _02009CB2 + bl ErrorHandling +_02009CB2: + add r0, r4, #0x0 + bl FUN_02009530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02009574 + add r1, r0, #0x0 + ldr r1, [r1, #0xc] + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0201D3D4 + cmp r0, #0x0 + bne _02009CDA + add r0, r4, #0x0 + bl FUN_0201D3B0 + bl FUN_0201D458 +_02009CDA: + pop {r3-r5, pc} + + thumb_func_start FUN_02009CDC +FUN_02009CDC: ; 0x02009CDC + push {r4, lr} + add r4, r0, #0x0 + bne _02009CE6 + bl ErrorHandling +_02009CE6: + add r0, r4, #0x0 + bl FUN_0201D4F0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02009CF0 +FUN_02009CF0: ; 0x02009CF0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bne _02009CFC + bl ErrorHandling +_02009CFC: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x1 + beq _02009D0A + bl ErrorHandling +_02009D0A: + add r0, r4, #0x0 + bl FUN_0200955C + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020095E4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02009530 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl FUN_02009610 + str r0, [sp, #0x8] + add r0, sp, #0x0 + bl FUN_0201E0E4 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02009D34 +FUN_02009D34: ; 0x02009D34 + push {r4-r6, lr} + add r5, r0, #0x0 + bne _02009D3E + bl ErrorHandling +_02009D3E: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02009D66 + add r4, r6, #0x0 +_02009D48: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009D5C + bl FUN_02009CF0 + cmp r0, #0x0 + bne _02009D5C + bl ErrorHandling +_02009D5C: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02009D48 +_02009D66: + pop {r4-r6, pc} + + thumb_func_start FUN_02009D68 +FUN_02009D68: ; 0x02009D68 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + bne _02009D74 + bl ErrorHandling +_02009D74: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x1 + beq _02009D82 + bl ErrorHandling +_02009D82: + add r0, r4, #0x0 + bl FUN_0200955C + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020095E4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02009530 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl FUN_02009610 + str r0, [sp, #0x8] + add r0, sp, #0x0 + bl FUN_0201E128 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02009DAC +FUN_02009DAC: ; 0x02009DAC + push {r4-r6, lr} + add r5, r0, #0x0 + bne _02009DB6 + bl ErrorHandling +_02009DB6: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02009DDE + add r4, r6, #0x0 +_02009DC0: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009DD4 + bl FUN_02009D68 + cmp r0, #0x0 + bne _02009DD4 + bl ErrorHandling +_02009DD4: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02009DC0 +_02009DDE: + pop {r4-r6, pc} + + thumb_func_start FUN_02009DE0 +FUN_02009DE0: ; 0x02009DE0 + push {r3-r5, lr} + add r5, r0, #0x0 + bne _02009DEA + bl ErrorHandling +_02009DEA: + add r0, r5, #0x0 + bl FUN_02009530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200955C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0201E168 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02009E04 +FUN_02009E04: ; 0x02009E04 + push {r4, lr} + add r4, r0, #0x0 + bne _02009E0E + bl ErrorHandling +_02009E0E: + add r0, r4, #0x0 + bl FUN_020095D4 + cmp r0, #0x1 + beq _02009E1C + bl ErrorHandling +_02009E1C: + add r0, r4, #0x0 + bl FUN_02009530 + bl FUN_0201E1C8 + pop {r4, pc} + + thumb_func_start FUN_02009E28 +FUN_02009E28: ; 0x02009E28 + push {r4-r6, lr} + add r5, r0, #0x0 + bne _02009E32 + bl ErrorHandling +_02009E32: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02009E52 + add r4, r6, #0x0 +_02009E3C: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _02009E48 + bl FUN_02009E04 +_02009E48: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02009E3C +_02009E52: + pop {r4-r6, pc} + + thumb_func_start FUN_02009E54 +FUN_02009E54: ; 0x02009E54 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02009E62 + bl ErrorHandling +_02009E62: + add r0, r5, #0x0 + bl FUN_020095D4 + cmp r0, #0x1 + beq _02009E70 + bl ErrorHandling +_02009E70: + add r0, r5, #0x0 + bl FUN_02009530 + cmp r4, #0x0 + beq _02009E82 + add r1, r4, #0x0 + bl FUN_0201E258 + pop {r3-r5, pc} +_02009E82: + bl FUN_0201E230 + pop {r3-r5, pc} + + thumb_func_start FUN_02009E88 +FUN_02009E88: ; 0x02009E88 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x0 + bl FUN_02009E54 + add r1, r4, #0x0 + blx FUN_020B19C4 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02009EA8 + asr r1, r0, #0x4 + lsr r1, r1, #0x1b + add r1, r0, r1 + asr r0, r1, #0x5 +_02009EA8: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02009EAC +FUN_02009EAC: ; 0x02009EAC + push {r3-r4, lr} + sub sp, #0x14 + add r4, r0, #0x0 + cmp r4, #0x4 + bge _02009EC0 + mov r0, #0x4 + cmp r1, #0x7c + ble _02009EC0 + sub r4, r0, r4 + sub r1, r1, r4 +_02009EC0: + cmp r2, #0x1 + bge _02009ED0 + mov r4, #0x1 + cmp r3, #0x1e + ble _02009ED2 + sub r2, r4, r2 + sub r3, r3, r2 + b _02009ED2 +_02009ED0: + add r4, r2, #0x0 +_02009ED2: + ldr r2, [sp, #0x20] + str r2, [sp, #0x0] + ldr r2, [sp, #0x24] + str r2, [sp, #0x4] + ldr r2, [sp, #0x28] + str r2, [sp, #0x8] + ldr r2, [sp, #0x2c] + str r2, [sp, #0xc] + ldr r2, [sp, #0x30] + str r2, [sp, #0x10] + add r2, r4, #0x0 + bl FUN_02009EF0 + add sp, #0x14 + pop {r3-r4, pc} + + thumb_func_start FUN_02009EF0 +FUN_02009EF0: ; 0x02009EF0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _02009F7C ; =0x021C4670 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r0, #0x0 + beq _02009F08 + bl ErrorHandling +_02009F08: + ldr r0, [sp, #0x30] + mov r1, #0x3c + bl FUN_02016998 + ldr r1, _02009F7C ; =0x021C4670 + cmp r0, #0x0 + str r0, [r1, #0x0] + bne _02009F1C + bl ErrorHandling +_02009F1C: + ldr r1, _02009F7C ; =0x021C4670 + lsl r3, r6, #0x10 + ldr r2, [sp, #0x30] + ldr r0, [r1, #0x0] + lsr r3, r3, #0x10 + str r2, [r0, #0x38] + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, [r1, #0x0] + lsl r1, r5, #0x10 + lsl r2, r4, #0x10 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + blx FUN_020B0E34 + cmp r0, #0x0 + bne _02009F48 + bl ErrorHandling +_02009F48: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x20] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, _02009F7C ; =0x021C4670 + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + ldr r0, [r0, #0x0] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r0, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + blx FUN_020B0E34 + cmp r0, #0x0 + bne _02009F78 + bl ErrorHandling +_02009F78: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02009F7C: .word 0x021C4670 + + thumb_func_start FUN_02009F80 +FUN_02009F80: ; 0x02009F80 + push {r3, lr} + ldr r0, _02009F9C ; =0x021C4670 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02009F98 + blx FUN_020B0870 + ldr r0, _02009F9C ; =0x021C4670 + ldr r0, [r0, #0x0] + add r0, #0x1c + blx FUN_020B0870 +_02009F98: + pop {r3, pc} + nop +_02009F9C: .word 0x021C4670 + + thumb_func_start FUN_02009FA0 +FUN_02009FA0: ; 0x02009FA0 + push {r3, lr} + ldr r0, _02009FD4 ; =0x021C4670 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02009FAE + bl ErrorHandling +_02009FAE: + ldr r0, _02009FD4 ; =0x021C4670 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0200A064 + ldr r0, _02009FD4 ; =0x021C4670 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0200A06C + ldr r0, _02009FD4 ; =0x021C4670 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _02009FD4 ; =0x021C4670 + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r3, pc} + nop +_02009FD4: .word 0x021C4670 + + thumb_func_start FUN_02009FD8 +FUN_02009FD8: ; 0x02009FD8 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + ldr r0, _0200A024 ; =0x021C4670 + add r7, r1, #0x0 + ldr r0, [r0, #0x0] + add r5, r2, #0x0 + add r4, r3, #0x0 + cmp r0, #0x0 + bne _02009FF0 + bl ErrorHandling +_02009FF0: + cmp r5, #0x1 + bne _0200A00C + ldr r0, _0200A028 ; =FUN_020213A0 + ldr r2, _0200A02C ; =FUN_0200A074 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldr r3, _0200A030 ; =FUN_0200A0B8 + add r0, r6, #0x0 + add r1, r7, #0x0 + str r4, [sp, #0x8] + bl FUN_0202135C + add sp, #0xc + pop {r4-r7, pc} +_0200A00C: + ldr r0, _0200A028 ; =FUN_020213A0 + ldr r2, _0200A034 ; =FUN_0200A094 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldr r3, _0200A038 ; =FUN_0200A0DC + add r0, r6, #0x0 + add r1, r7, #0x0 + str r4, [sp, #0x8] + bl FUN_0202135C + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0200A024: .word 0x021C4670 +_0200A028: .word FUN_020213A0 +_0200A02C: .word FUN_0200A074 +_0200A030: .word FUN_0200A0B8 +_0200A034: .word FUN_0200A094 +_0200A038: .word FUN_0200A0DC + + thumb_func_start FUN_0200A03C +FUN_0200A03C: ; 0x0200A03C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0200A060 ; =0x021C4670 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0200A04C + bl ErrorHandling +_0200A04C: + cmp r4, #0x0 + bne _0200A056 + ldr r0, _0200A060 ; =0x021C4670 + ldr r0, [r0, #0x0] + pop {r4, pc} +_0200A056: + ldr r0, _0200A060 ; =0x021C4670 + ldr r0, [r0, #0x0] + add r0, #0x1c + pop {r4, pc} + nop +_0200A060: .word 0x021C4670 + + thumb_func_start FUN_0200A064 +FUN_0200A064: ; 0x0200A064 + ldr r3, _0200A068 ; =FUN_020203CC + bx r3 + .balign 4 +_0200A068: .word FUN_020203CC + + thumb_func_start FUN_0200A06C +FUN_0200A06C: ; 0x0200A06C + ldr r3, _0200A070 ; =FUN_02020404 + bx r3 + .balign 4 +_0200A070: .word FUN_02020404 + + thumb_func_start FUN_0200A074 +FUN_0200A074: ; 0x0200A074 + push {r4, lr} + add r3, r0, #0x0 + ldr r0, _0200A090 ; =0x021C4670 + add r2, r1, #0x0 + ldr r0, [r0, #0x0] + add r1, r3, #0x0 + blx FUN_020B0C7C + add r4, r0, #0x0 + bne _0200A08C + bl ErrorHandling +_0200A08C: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_0200A090: .word 0x021C4670 + + thumb_func_start FUN_0200A094 +FUN_0200A094: ; 0x0200A094 + push {r4, lr} + add r3, r0, #0x0 + ldr r0, _0200A0B4 ; =0x021C4670 + add r2, r1, #0x0 + ldr r0, [r0, #0x0] + add r1, r3, #0x0 + add r0, #0x1c + blx FUN_020B0C7C + add r4, r0, #0x0 + bne _0200A0AE + bl ErrorHandling +_0200A0AE: + add r0, r4, #0x0 + pop {r4, pc} + nop +_0200A0B4: .word 0x021C4670 + + thumb_func_start FUN_0200A0B8 +FUN_0200A0B8: ; 0x0200A0B8 + push {r4, lr} + add r1, r0, #0x0 + ldr r0, _0200A0D4 ; =0x021C4670 + ldr r0, [r0, #0x0] + blx FUN_020B0BB0 + add r4, r0, #0x0 + ldr r0, _0200A0D8 ; =0x0000FFFE + cmp r4, r0 + bne _0200A0D0 + bl ErrorHandling +_0200A0D0: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_0200A0D4: .word 0x021C4670 +_0200A0D8: .word 0x0000FFFE + + thumb_func_start FUN_0200A0DC +FUN_0200A0DC: ; 0x0200A0DC + push {r4, lr} + add r1, r0, #0x0 + ldr r0, _0200A0FC ; =0x021C4670 + ldr r0, [r0, #0x0] + add r0, #0x1c + blx FUN_020B0BB0 + add r4, r0, #0x0 + ldr r0, _0200A100 ; =0x0000FFFE + cmp r4, r0 + bne _0200A0F6 + bl ErrorHandling +_0200A0F6: + add r0, r4, #0x0 + pop {r4, pc} + nop +_0200A0FC: .word 0x021C4670 +_0200A100: .word 0x0000FFFE + + thumb_func_start FUN_0200A104 +FUN_0200A104: ; 0x0200A104 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x10 + ldrsb r2, [r5, r0] + mov r0, #0x14 + ldrsh r0, [r5, r0] + add r1, r2, #0x0 + mov r7, #0x1a + ldrsh r2, [r5, r7] + mul r1, r0 + mov r6, #0xa + ldrsh r0, [r5, r6] + add r1, r2, r1 + mov r4, #0x0 + cmp r0, r1 + beq _0200A162 + cmp r2, r0 + beq _0200A162 + strh r1, [r5, #0x1a] + ldrh r3, [r5, #0x18] + ldrh r0, [r5, #0x16] + add r2, r5, #0x0 + add r1, r5, #0x0 + add r0, r3, r0 + strh r0, [r5, #0x18] + ldrh r3, [r5, #0x18] + ldrh r0, [r5, #0x8] + add r2, #0x1a + add r1, #0x18 + cmp r3, r0 + blo _0200A166 + mov r3, #0x10 + ldrsh r0, [r2, r4] + ldrsb r3, [r5, r3] + add r0, r0, r3 + strh r0, [r2, #0x0] + ldrsh r2, [r5, r7] + ldrsh r0, [r5, r6] + cmp r2, r0 + beq _0200A15E + ldrh r2, [r1, #0x0] + ldrh r0, [r5, #0x8] + sub r0, r2, r0 + strh r0, [r1, #0x0] + b _0200A166 +_0200A15E: + mov r4, #0x1 + b _0200A166 +_0200A162: + strh r0, [r5, #0x1a] + mov r4, #0x1 +_0200A166: + ldr r1, [r5, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0200A17C + mov r2, #0x1a + ldrsh r2, [r5, r2] + ldr r0, _0200A198 ; =0x04000050 + ldr r1, [r5, #0x0] + blx G2x_SetBlendBrightness_ + b _0200A18E +_0200A17C: + mov r0, #0x2 + tst r0, r1 + beq _0200A18E + mov r2, #0x1a + ldrsh r2, [r5, r2] + ldr r0, _0200A19C ; =0x04001050 + ldr r1, [r5, #0x0] + blx G2x_SetBlendBrightness_ +_0200A18E: + cmp r4, #0x1 + bne _0200A196 + mov r0, #0x0 + str r0, [r5, #0x1c] +_0200A196: + pop {r3-r7, pc} + .balign 4 +_0200A198: .word 0x04000050 +_0200A19C: .word 0x04001050 + + thumb_func_start FUN_0200A1A0 +FUN_0200A1A0: ; 0x0200A1A0 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x1c] + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r0, #0x0 + beq _0200A1B4 + bl ErrorHandling +_0200A1B4: + ldr r1, [sp, #0x18] + mov r0, #0x1 + lsl r1, r1, #0x18 + str r0, [r5, #0x1c] + lsr r1, r1, #0x18 + str r1, [r5, #0x0] + ldr r1, [sp, #0x1c] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [r5, #0x4] + strh r4, [r5, #0x8] + strh r6, [r5, #0xa] + strh r7, [r5, #0x1a] + sub r1, r7, r6 + strh r1, [r5, #0x12] + mov r1, #0x12 + ldrsh r2, [r5, r1] + cmp r2, #0x0 + ble _0200A1E0 + sub r1, #0x13 + strb r1, [r5, #0x10] + b _0200A1EA +_0200A1E0: + strb r0, [r5, #0x10] + ldrsh r0, [r5, r1] + sub r1, #0x13 + mul r1, r0 + strh r1, [r5, #0x12] +_0200A1EA: + mov r0, #0x12 + ldrsh r0, [r5, r0] + add r1, r4, #0x0 + blx _s32_div_f + strh r0, [r5, #0x14] + mov r0, #0x12 + ldrsh r0, [r5, r0] + add r1, r4, #0x0 + blx _s32_div_f + strh r1, [r5, #0x16] + mov r0, #0x0 + strh r0, [r5, #0x18] + pop {r3-r7, pc} + + thumb_func_start FUN_0200A208 +FUN_0200A208: ; 0x0200A208 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + cmp r5, #0x0 + beq _0200A25E + ldr r1, [sp, #0x20] + mov r0, #0x1 + tst r0, r1 + beq _0200A23A + ldr r0, _0200A264 ; =0x04000050 + add r1, r4, #0x0 + blx G2x_SetBlendBrightness_ + str r4, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, _0200A268 ; =0x021C4694 + add r1, r5, #0x0 + add r2, r7, #0x0 + add r3, r6, #0x0 + bl FUN_0200A1A0 +_0200A23A: + ldr r1, [sp, #0x20] + mov r0, #0x2 + tst r0, r1 + beq _0200A25E + ldr r0, _0200A26C ; =0x04001050 + add r1, r4, #0x0 + add r2, r6, #0x0 + blx G2x_SetBlendBrightness_ + str r4, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r0, _0200A270 ; =0x021C4674 + add r1, r5, #0x0 + add r2, r7, #0x0 + add r3, r6, #0x0 + bl FUN_0200A1A0 +_0200A25E: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0200A264: .word 0x04000050 +_0200A268: .word 0x021C4694 +_0200A26C: .word 0x04001050 +_0200A270: .word 0x021C4674 + + thumb_func_start FUN_0200A274 +FUN_0200A274: ; 0x0200A274 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + mov r0, #0x1 + add r6, r1, #0x0 + tst r0, r4 + beq _0200A28A + ldr r0, _0200A2A4 ; =0x04000050 + add r2, r5, #0x0 + blx G2x_SetBlendBrightness_ +_0200A28A: + mov r0, #0x2 + tst r0, r4 + beq _0200A29A + ldr r0, _0200A2A8 ; =0x04001050 + add r1, r6, #0x0 + add r2, r5, #0x0 + blx G2x_SetBlendBrightness_ +_0200A29A: + add r0, r4, #0x0 + bl FUN_0200A2D8 + pop {r4-r6, pc} + nop +_0200A2A4: .word 0x04000050 +_0200A2A8: .word 0x04001050 + + thumb_func_start FUN_0200A2AC +FUN_0200A2AC: ; 0x0200A2AC + push {r3, lr} + ldr r0, _0200A2CC ; =0x021C4694 + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + ldr r0, _0200A2D0 ; =0x021C4674 + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + ldr r0, _0200A2D4 ; =0x021C4674 + mov r1, #0x0 + str r1, [r0, #0x3c] + str r1, [r0, #0x1c] + pop {r3, pc} + .balign 4 +_0200A2CC: .word 0x021C4694 +_0200A2D0: .word 0x021C4674 +_0200A2D4: .word 0x021C4674 + + thumb_func_start FUN_0200A2D8 +FUN_0200A2D8: ; 0x0200A2D8 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x1 + tst r0, r4 + beq _0200A2F2 + ldr r0, _0200A30C ; =0x021C4694 + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + ldr r0, _0200A310 ; =0x021C4674 + mov r1, #0x0 + str r1, [r0, #0x3c] +_0200A2F2: + mov r0, #0x2 + tst r0, r4 + beq _0200A308 + ldr r0, _0200A314 ; =0x021C4674 + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + ldr r0, _0200A310 ; =0x021C4674 + mov r1, #0x0 + str r1, [r0, #0x1c] +_0200A308: + pop {r4, pc} + nop +_0200A30C: .word 0x021C4694 +_0200A310: .word 0x021C4674 +_0200A314: .word 0x021C4674 + + thumb_func_start FUN_0200A318 +FUN_0200A318: ; 0x0200A318 + push {r3, lr} + ldr r0, _0200A338 ; =0x021C4674 + ldr r0, [r0, #0x3c] + cmp r0, #0x0 + beq _0200A328 + ldr r0, _0200A33C ; =0x021C4694 + bl FUN_0200A104 +_0200A328: + ldr r0, _0200A338 ; =0x021C4674 + ldr r0, [r0, #0x1c] + cmp r0, #0x0 + beq _0200A336 + ldr r0, _0200A340 ; =0x021C4674 + bl FUN_0200A104 +_0200A336: + pop {r3, pc} + .balign 4 +_0200A338: .word 0x021C4674 +_0200A33C: .word 0x021C4694 +_0200A340: .word 0x021C4674 + + thumb_func_start FUN_0200A344 +FUN_0200A344: ; 0x0200A344 + cmp r0, #0x3 + bne _0200A35A + ldr r0, _0200A380 ; =0x021C4674 + ldr r1, [r0, #0x3c] + cmp r1, #0x0 + bne _0200A37A + ldr r0, [r0, #0x1c] + cmp r0, #0x0 + bne _0200A37A + mov r0, #0x1 + bx lr +_0200A35A: + cmp r0, #0x1 + bne _0200A36A + ldr r0, _0200A380 ; =0x021C4674 + ldr r0, [r0, #0x3c] + cmp r0, #0x0 + bne _0200A37A + mov r0, #0x1 + bx lr +_0200A36A: + cmp r0, #0x2 + bne _0200A37A + ldr r0, _0200A380 ; =0x021C4674 + ldr r0, [r0, #0x1c] + cmp r0, #0x0 + bne _0200A37A + mov r0, #0x1 + bx lr +_0200A37A: + mov r0, #0x0 + bx lr + nop +_0200A380: .word 0x021C4674 + + thumb_func_start FUN_0200A384 +FUN_0200A384: ; 0x0200A384 + ldr r3, _0200A388 ; =LoadFromNarc_2 + bx r3 + .balign 4 +_0200A388: .word LoadFromNarc_2 + + thumb_func_start FUN_0200A38C +FUN_0200A38C: ; 0x0200A38C + ldr r3, _0200A390 ; =FUN_02016A18 + bx r3 + .balign 4 +_0200A390: .word FUN_02016A18 + + thumb_func_start FUN_0200A394 +FUN_0200A394: ; 0x0200A394 + push {r3-r7, lr} + sub sp, #0x8 + add r3, r0, #0x0 + ldrh r0, [r3, #0x0] + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r5, r0 + bhs _0200A404 + lsl r0, r5, #0x3 + add r0, r3, r0 + ldr r2, [r0, #0x4] + ldr r1, [r0, #0x8] + ldr r6, _0200A40C ; =0x000002FD + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldrh r0, [r3, #0x2] + add r7, r5, #0x1 + mul r6, r0 + add r0, r7, #0x0 + mul r0, r6 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + lsl r0, r6, #0x10 + orr r0, r6 + eor r2, r0 + eor r0, r1 + str r0, [sp, #0x4] + str r2, [sp, #0x0] + add r1, r3, r2 + add r0, r4, #0x0 + add r2, sp, #0x0 + bl FUN_0200A4C0 + ldr r2, [sp, #0x4] + ldr r0, _0200A410 ; =0x00091BD3 + add r1, r7, #0x0 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + sub r3, r2, #0x1 + cmp r2, #0x0 + beq _0200A408 + ldr r0, _0200A414 ; =0x0000493D +_0200A3EA: + ldrh r1, [r4, #0x0] + eor r1, r5 + strh r1, [r4, #0x0] + add r1, r5, r0 + lsl r1, r1, #0x10 + lsr r5, r1, #0x10 + add r1, r3, #0x0 + add r4, r4, #0x2 + sub r3, r3, #0x1 + cmp r1, #0x0 + bne _0200A3EA + add sp, #0x8 + pop {r3-r7, pc} +_0200A404: + bl ErrorHandling +_0200A408: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0200A40C: .word 0x000002FD +_0200A410: .word 0x00091BD3 +_0200A414: .word 0x0000493D + + thumb_func_start FUN_0200A418 +FUN_0200A418: ; 0x0200A418 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r1, #0x0 + add r1, r3, #0x0 + add r4, r2, #0x0 + bl FUN_02006670 + add r6, r0, #0x0 + beq _0200A4AE + add r1, sp, #0xc + str r1, [sp, #0x0] + add r1, r5, #0x0 + mov r2, #0x0 + mov r3, #0x4 + bl FUN_02006814 + add r0, sp, #0x4 + lsl r2, r4, #0x3 + str r0, [sp, #0x0] + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r2, #0x4 + mov r3, #0x8 + bl FUN_02006814 + add r0, sp, #0x4 + ldrh r2, [r0, #0xa] + ldr r0, _0200A4B4 ; =0x000002FD + add r1, r4, #0x1 + mul r0, r2 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + lsl r0, r1, #0x10 + orr r1, r0 + ldr r0, [sp, #0x4] + eor r0, r1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x8] + eor r0, r1 + str r0, [sp, #0x8] + ldr r0, [sp, #0x20] + add r1, r5, #0x0 + str r0, [sp, #0x0] + ldr r3, [sp, #0x8] + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + lsl r3, r3, #0x1 + bl FUN_02006814 + ldr r2, _0200A4B8 ; =0x00091BD3 + add r3, r4, #0x1 + mul r2, r3 + lsl r2, r2, #0x10 + ldr r0, [sp, #0x8] + lsr r3, r2, #0x10 + sub r2, r0, #0x1 + ldr r1, [sp, #0x20] + cmp r0, #0x0 + beq _0200A4A8 + ldr r0, _0200A4BC ; =0x0000493D +_0200A492: + ldrh r4, [r1, #0x0] + eor r4, r3 + strh r4, [r1, #0x0] + add r3, r3, r0 + lsl r3, r3, #0x10 + add r4, r2, #0x0 + add r1, r1, #0x2 + lsr r3, r3, #0x10 + sub r2, r2, #0x1 + cmp r4, #0x0 + bne _0200A492 +_0200A4A8: + add r0, r6, #0x0 + bl FUN_020066F4 +_0200A4AE: + add sp, #0x10 + pop {r4-r6, pc} + nop +_0200A4B4: .word 0x000002FD +_0200A4B8: .word 0x00091BD3 +_0200A4BC: .word 0x0000493D + + thumb_func_start FUN_0200A4C0 +FUN_0200A4C0: ; 0x0200A4C0 + add r3, r0, #0x0 + add r0, r1, #0x0 + add r1, r3, #0x0 + ldr r2, [r2, #0x4] + ldr r3, _0200A4D0 ; =MIi_CpuCopy16 + lsl r2, r2, #0x1 + bx r3 + nop +_0200A4D0: .word MIi_CpuCopy16 + + thumb_func_start FUN_0200A4D4 +FUN_0200A4D4: ; 0x0200A4D4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldrh r0, [r5, #0x0] + add r4, r1, #0x0 + str r2, [sp, #0x0] + cmp r4, r0 + bhs _0200A56A + lsl r0, r4, #0x3 + add r0, r5, r0 + ldr r3, [r0, #0x4] + ldr r2, [r0, #0x8] + ldrh r1, [r5, #0x2] + ldr r6, _0200A578 ; =0x000002FD + add r0, r4, #0x1 + mul r6, r1 + add r1, r0, #0x0 + mul r1, r6 + lsl r0, r1, #0x10 + lsr r1, r0, #0x10 + lsl r0, r1, #0x10 + orr r1, r0 + add r0, r3, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0x8] + eor r0, r1 + eor r6, r1 + str r0, [sp, #0x8] + lsl r0, r6, #0x1 + str r0, [sp, #0x4] + str r2, [sp, #0xc] + ldr r1, [sp, #0x4] + mov r0, #0x0 + str r6, [sp, #0xc] + bl FUN_020169D8 + add r7, r0, #0x0 + beq _0200A574 + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x4] + add r0, r5, r0 + add r1, r7, #0x0 + blx MIi_CpuCopy16 + ldr r1, _0200A57C ; =0x00091BD3 + add r2, r4, #0x1 + mul r1, r2 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + add r0, r7, #0x0 + sub r1, r6, #0x1 + cmp r6, #0x0 + beq _0200A556 + ldr r3, _0200A580 ; =0x0000493D +_0200A540: + ldrh r4, [r0, #0x0] + eor r4, r2 + strh r4, [r0, #0x0] + add r2, r2, r3 + lsl r2, r2, #0x10 + add r4, r1, #0x0 + add r0, r0, #0x2 + lsr r2, r2, #0x10 + sub r1, r1, #0x1 + cmp r4, #0x0 + bne _0200A540 +_0200A556: + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02021E8C + add r0, r7, #0x0 + bl FUN_02016A18 + add sp, #0x10 + pop {r3-r7, pc} +_0200A56A: + bl ErrorHandling + ldr r0, [sp, #0x0] + bl FUN_02021A4C +_0200A574: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0200A578: .word 0x000002FD +_0200A57C: .word 0x00091BD3 +_0200A580: .word 0x0000493D + + thumb_func_start FUN_0200A584 +FUN_0200A584: ; 0x0200A584 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldrh r0, [r5, #0x0] + add r4, r1, #0x0 + str r2, [sp, #0x0] + cmp r4, r0 + bhs _0200A62C + lsl r0, r4, #0x3 + add r0, r5, r0 + ldr r3, [r0, #0x4] + ldr r2, [r0, #0x8] + ldrh r1, [r5, #0x2] + ldr r6, _0200A63C ; =0x000002FD + add r0, r4, #0x1 + mul r6, r1 + add r1, r0, #0x0 + mul r1, r6 + lsl r0, r1, #0x10 + lsr r1, r0, #0x10 + lsl r0, r1, #0x10 + orr r1, r0 + add r0, r3, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0x8] + eor r0, r1 + eor r6, r1 + str r0, [sp, #0x8] + lsl r0, r6, #0x1 + str r0, [sp, #0x4] + str r2, [sp, #0xc] + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + str r6, [sp, #0xc] + bl FUN_020169D8 + add r7, r0, #0x0 + beq _0200A626 + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x4] + add r0, r5, r0 + add r1, r7, #0x0 + blx MIi_CpuCopy16 + ldr r1, _0200A640 ; =0x00091BD3 + add r2, r4, #0x1 + mul r1, r2 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + add r0, r7, #0x0 + sub r1, r6, #0x1 + cmp r6, #0x0 + beq _0200A606 + ldr r3, _0200A644 ; =0x0000493D +_0200A5F0: + ldrh r4, [r0, #0x0] + eor r4, r2 + strh r4, [r0, #0x0] + add r2, r2, r3 + lsl r2, r2, #0x10 + add r4, r1, #0x0 + add r0, r0, #0x2 + lsr r2, r2, #0x10 + sub r1, r1, #0x1 + cmp r4, #0x0 + bne _0200A5F0 +_0200A606: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + beq _0200A61A + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02021E8C +_0200A61A: + add r0, r7, #0x0 + bl FUN_02016A18 + add sp, #0x10 + add r0, r4, #0x0 + pop {r3-r7, pc} +_0200A626: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0200A62C: + bl ErrorHandling + ldr r1, [sp, #0x0] + mov r0, #0x4 + bl FUN_020219F4 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0200A63C: .word 0x000002FD +_0200A640: .word 0x00091BD3 +_0200A644: .word 0x0000493D + + thumb_func_start FUN_0200A648 +FUN_0200A648: ; 0x0200A648 + push {r3-r7, lr} + add r7, r3, #0x0 + add r5, r1, #0x0 + add r1, r7, #0x0 + add r4, r2, #0x0 + bl FUN_02006670 + add r6, r0, #0x0 + beq _0200A66E + ldr r1, [sp, #0x18] + add r2, r4, #0x0 + str r1, [sp, #0x0] + add r1, r5, #0x0 + add r3, r7, #0x0 + bl FUN_0200A670 + add r0, r6, #0x0 + bl FUN_020066F4 +_0200A66E: + pop {r3-r7, pc} + + thumb_func_start FUN_0200A670 +FUN_0200A670: ; 0x0200A670 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r2, #0x0 + add r2, sp, #0x10 + add r4, r3, #0x0 + str r2, [sp, #0x0] + mov r2, #0x0 + mov r3, #0x4 + add r7, r0, #0x0 + str r1, [sp, #0x4] + bl FUN_02006814 + add r0, sp, #0x8 + ldrh r0, [r0, #0x8] + cmp r5, r0 + bhs _0200A71E + add r0, sp, #0x8 + lsl r2, r5, #0x3 + str r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r7, #0x0 + add r2, r2, #0x4 + mov r3, #0x8 + bl FUN_02006814 + add r0, sp, #0x8 + ldrh r2, [r0, #0xa] + ldr r0, _0200A72C ; =0x000002FD + add r1, r5, #0x1 + mul r0, r2 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + lsl r0, r1, #0x10 + orr r1, r0 + ldr r0, [sp, #0x8] + eor r0, r1 + str r0, [sp, #0x8] + ldr r0, [sp, #0xc] + eor r0, r1 + lsl r6, r0, #0x1 + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020169D8 + add r4, r0, #0x0 + beq _0200A728 + str r4, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x8] + add r0, r7, #0x0 + add r3, r6, #0x0 + bl FUN_02006814 + ldr r2, _0200A730 ; =0x00091BD3 + add r3, r5, #0x1 + mul r2, r3 + lsl r2, r2, #0x10 + ldr r0, [sp, #0xc] + lsr r3, r2, #0x10 + add r1, r4, #0x0 + sub r2, r0, #0x1 + cmp r0, #0x0 + beq _0200A70A + ldr r0, _0200A734 ; =0x0000493D +_0200A6F4: + ldrh r5, [r1, #0x0] + eor r5, r3 + strh r5, [r1, #0x0] + add r3, r3, r0 + lsl r3, r3, #0x10 + add r5, r2, #0x0 + add r1, r1, #0x2 + lsr r3, r3, #0x10 + sub r2, r2, #0x1 + cmp r5, #0x0 + bne _0200A6F4 +_0200A70A: + ldr r0, [sp, #0x28] + ldr r2, [sp, #0xc] + add r1, r4, #0x0 + bl FUN_02021E8C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4-r7, pc} +_0200A71E: + bl ErrorHandling + ldr r0, [sp, #0x28] + bl FUN_02021A4C +_0200A728: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_0200A72C: .word 0x000002FD +_0200A730: .word 0x00091BD3 +_0200A734: .word 0x0000493D + + thumb_func_start FUN_0200A738 +FUN_0200A738: ; 0x0200A738 + push {r3-r7, lr} + add r6, r3, #0x0 + add r5, r1, #0x0 + add r1, r6, #0x0 + add r4, r2, #0x0 + bl FUN_02006670 + add r7, r0, #0x0 + beq _0200A75E + add r1, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_0200A76C + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020066F4 + b _0200A768 +_0200A75E: + mov r0, #0x4 + add r1, r6, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 +_0200A768: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0200A76C +FUN_0200A76C: ; 0x0200A76C + push {r3-r7, lr} + sub sp, #0x18 + add r4, r2, #0x0 + add r2, sp, #0x14 + add r5, r3, #0x0 + str r2, [sp, #0x0] + mov r2, #0x0 + mov r3, #0x4 + add r7, r0, #0x0 + str r1, [sp, #0x4] + bl FUN_02006814 + add r0, sp, #0xc + ldrh r0, [r0, #0x8] + cmp r4, r0 + bhs _0200A82A + add r0, sp, #0xc + lsl r2, r4, #0x3 + str r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r7, #0x0 + add r2, r2, #0x4 + mov r3, #0x8 + bl FUN_02006814 + add r0, sp, #0xc + ldrh r2, [r0, #0xa] + ldr r0, _0200A83C ; =0x000002FD + add r1, r4, #0x1 + mul r0, r2 + mul r0, r1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + lsl r0, r1, #0x10 + orr r1, r0 + ldr r0, [sp, #0xc] + eor r0, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + eor r0, r1 + add r1, r5, #0x0 + str r0, [sp, #0x10] + bl FUN_020219F4 + str r0, [sp, #0x8] + cmp r0, #0x0 + beq _0200A824 + ldr r0, [sp, #0x10] + lsl r6, r0, #0x1 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020169D8 + add r5, r0, #0x0 + beq _0200A824 + str r5, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0xc] + add r0, r7, #0x0 + add r3, r6, #0x0 + bl FUN_02006814 + ldr r2, _0200A840 ; =0x00091BD3 + add r3, r4, #0x1 + mul r2, r3 + lsl r2, r2, #0x10 + ldr r0, [sp, #0x10] + lsr r3, r2, #0x10 + add r1, r5, #0x0 + sub r2, r0, #0x1 + cmp r0, #0x0 + beq _0200A814 + ldr r0, _0200A844 ; =0x0000493D +_0200A7FE: + ldrh r4, [r1, #0x0] + eor r4, r3 + strh r4, [r1, #0x0] + add r3, r3, r0 + lsl r3, r3, #0x10 + add r4, r2, #0x0 + add r1, r1, #0x2 + lsr r3, r3, #0x10 + sub r2, r2, #0x1 + cmp r4, #0x0 + bne _0200A7FE +_0200A814: + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x10] + add r1, r5, #0x0 + bl FUN_02021E8C + add r0, r5, #0x0 + bl FUN_02016A18 +_0200A824: + ldr r0, [sp, #0x8] + add sp, #0x18 + pop {r3-r7, pc} +_0200A82A: + bl ErrorHandling + mov r0, #0x4 + add r1, r5, #0x0 + bl FUN_020219F4 + add sp, #0x18 + pop {r3-r7, pc} + nop +_0200A83C: .word 0x000002FD +_0200A840: .word 0x00091BD3 +_0200A844: .word 0x0000493D + + thumb_func_start FUN_0200A848 +FUN_0200A848: ; 0x0200A848 + ldrh r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0200A84C +FUN_0200A84C: ; 0x0200A84C + push {r3, lr} + sub sp, #0x8 + add r3, r0, #0x0 + mov r0, #0x4 + add r2, r1, #0x0 + str r0, [sp, #0x0] + add r1, r3, #0x0 + add r0, sp, #0x4 + mov r3, #0x0 + bl FUN_02006548 + add r0, sp, #0x4 + ldrh r0, [r0, #0x0] + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200A86C +FUN_0200A86C: ; 0x0200A86C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r3, #0x0 + mov r1, #0xc + add r7, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_020169D8 + add r4, r0, #0x0 + beq _0200A8B4 + cmp r5, #0x0 + bne _0200A8A0 + ldr r2, [sp, #0x0] + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_0200A384 + str r0, [r4, #0x8] + cmp r0, #0x0 + bne _0200A8AA + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r7, pc} +_0200A8A0: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_02006670 + str r0, [r4, #0x8] +_0200A8AA: + strh r5, [r4, #0x0] + strh r6, [r4, #0x4] + ldr r0, [sp, #0x0] + strh r7, [r4, #0x6] + strh r0, [r4, #0x2] +_0200A8B4: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0200A8B8 +FUN_0200A8B8: ; 0x0200A8B8 + push {r4, lr} + add r4, r0, #0x0 + beq _0200A8DE + ldrh r0, [r4, #0x0] + cmp r0, #0x0 + beq _0200A8CA + cmp r0, #0x1 + beq _0200A8D2 + b _0200A8D8 +_0200A8CA: + ldr r0, [r4, #0x8] + bl FUN_0200A38C + b _0200A8D8 +_0200A8D2: + ldr r0, [r4, #0x8] + bl FUN_020066F4 +_0200A8D8: + add r0, r4, #0x0 + bl FUN_02016A18 +_0200A8DE: + pop {r4, pc} + + thumb_func_start FUN_0200A8E0 +FUN_0200A8E0: ; 0x0200A8E0 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldrh r0, [r4, #0x0] + add r3, r1, #0x0 + cmp r0, #0x0 + beq _0200A8F6 + cmp r0, #0x1 + beq _0200A900 + add sp, #0x4 + pop {r3-r4, pc} +_0200A8F6: + ldr r0, [r4, #0x8] + bl FUN_0200A4D4 + add sp, #0x4 + pop {r3-r4, pc} +_0200A900: + str r2, [sp, #0x0] + add r2, r3, #0x0 + ldrh r1, [r4, #0x6] + ldrh r3, [r4, #0x2] + ldr r0, [r4, #0x8] + bl FUN_0200A670 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0200A914 +FUN_0200A914: ; 0x0200A914 + push {r3, lr} + add r3, r0, #0x0 + ldrh r0, [r3, #0x0] + add r2, r1, #0x0 + cmp r0, #0x0 + beq _0200A926 + cmp r0, #0x1 + beq _0200A930 + b _0200A93C +_0200A926: + ldrh r2, [r3, #0x2] + ldr r0, [r3, #0x8] + bl FUN_0200A584 + pop {r3, pc} +_0200A930: + ldr r0, [r3, #0x8] + ldrh r1, [r3, #0x6] + ldrh r3, [r3, #0x2] + bl FUN_0200A76C + pop {r3, pc} +_0200A93C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0200A940 +FUN_0200A940: ; 0x0200A940 + push {r3, lr} + add r1, r0, #0x0 + ldrh r0, [r1, #0x0] + cmp r0, #0x0 + beq _0200A950 + cmp r0, #0x1 + beq _0200A958 + b _0200A962 +_0200A950: + ldr r0, [r1, #0x8] + bl FUN_0200A848 + pop {r3, pc} +_0200A958: + ldrh r0, [r1, #0x4] + ldrh r1, [r1, #0x6] + bl FUN_0200A84C + pop {r3, pc} +_0200A962: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200A968 +FUN_0200A968: ; 0x0200A968 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldrh r0, [r4, #0x0] + add r3, r1, #0x0 + cmp r0, #0x0 + beq _0200A97E + cmp r0, #0x1 + beq _0200A988 + add sp, #0x4 + pop {r3-r4, pc} +_0200A97E: + ldr r0, [r4, #0x8] + bl FUN_0200A394 + add sp, #0x4 + pop {r3-r4, pc} +_0200A988: + str r2, [sp, #0x0] + add r2, r3, #0x0 + ldrh r0, [r4, #0x4] + ldrh r1, [r4, #0x6] + ldrh r3, [r4, #0x2] + bl FUN_0200A418 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0200A99C +FUN_0200A99C: ; 0x0200A99C + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r3, r1, #0x0 + ldr r2, _0200A9C0 ; =0x0000016A + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r6, r0, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0200A968 + add r0, r6, #0x0 + bl FUN_0200A8B8 + pop {r4-r6, pc} + .balign 4 +_0200A9C0: .word 0x0000016A + + thumb_func_start FUN_0200A9C4 +FUN_0200A9C4: ; 0x0200A9C4 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x4] + add r5, r1, #0x0 + mov r0, #0x1 + ldr r1, [sp, #0x4] + lsl r0, r0, #0xa + add r6, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_020219F4 + add r4, r0, #0x0 + beq _0200AA0E + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + beq _0200AA08 + add r0, r7, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0200B7B8 + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02021ACC + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02021A20 +_0200AA08: + add r0, r4, #0x0 + bl FUN_02021A20 +_0200AA0E: + ldr r0, [sp, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0200AA14 +FUN_0200AA14: ; 0x0200AA14 + push {r4-r6, lr} + add r5, r1, #0x0 + mov r2, #0x93 + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + add r3, r5, #0x0 + bl FUN_0200A86C + add r4, r0, #0x0 + beq _0200AA4C + mov r0, #0x10 + add r1, r5, #0x0 + bl FUN_020219F4 + add r5, r0, #0x0 + beq _0200AA42 + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_0200A8E0 +_0200AA42: + add r0, r4, #0x0 + bl FUN_0200A8B8 + add r0, r5, #0x0 + pop {r4-r6, pc} +_0200AA4C: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0200AA50 +FUN_0200AA50: ; 0x0200AA50 + push {r3-r5, lr} + ldr r2, _0200AA7C ; =0x0000016A + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0x0 + beq _0200AA76 + add r1, r4, #0x0 + bl FUN_0200A914 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + add r0, r4, #0x0 + pop {r3-r5, pc} +_0200AA76: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0200AA7C: .word 0x0000016A + + thumb_func_start FUN_0200AA80 +FUN_0200AA80: ; 0x0200AA80 + ldr r3, _0200AA8C ; =FUN_0200AA90 + add r2, r0, #0x0 + mov r0, #0x8 + mov r1, #0x20 + bx r3 + nop +_0200AA8C: .word FUN_0200AA90 + + thumb_func_start FUN_0200AA90 +FUN_0200AA90: ; 0x0200AA90 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + bne _0200AAA0 + bl ErrorHandling +_0200AAA0: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _0200AAAA + bl ErrorHandling +_0200AAAA: + ldr r0, [sp, #0x4] + mov r1, #0x10 + bl FUN_020169D8 + add r4, r0, #0x0 + beq _0200AB10 + ldr r0, [sp, #0x4] + str r7, [r4, #0x0] + str r0, [r4, #0x4] + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + bl FUN_020219F4 + str r0, [r4, #0xc] + cmp r0, #0x0 + beq _0200AB10 + ldr r0, [sp, #0x4] + lsl r1, r7, #0x3 + bl FUN_020169D8 + str r0, [r4, #0x8] + cmp r0, #0x0 + beq _0200AB10 + mov r6, #0x0 + cmp r7, #0x0 + bls _0200AB06 + add r5, r6, #0x0 +_0200AAE0: + add r0, r0, r5 + bl FUN_0200AB6C + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + bl FUN_020219F4 + ldr r1, [r4, #0x8] + add r1, r1, r5 + str r0, [r1, #0x4] + ldr r0, [r4, #0x8] + add r1, r0, r5 + ldr r1, [r1, #0x4] + cmp r1, #0x0 + beq _0200AB06 + add r6, r6, #0x1 + add r5, #0x8 + cmp r6, r7 + blo _0200AAE0 +_0200AB06: + cmp r6, r7 + bne _0200AB10 + add sp, #0x8 + add r0, r4, #0x0 + pop {r3-r7, pc} +_0200AB10: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200AB18 +FUN_0200AB18: ; 0x0200AB18 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x0 + bne _0200AB26 + bl ErrorHandling +_0200AB26: + ldr r0, [r5, #0x8] + cmp r0, #0x0 + beq _0200AB54 + ldr r0, [r5, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _0200AB4E + add r4, r6, #0x0 +_0200AB36: + ldr r0, [r5, #0x8] + add r0, r0, r4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0200AB4E + bl FUN_02021A20 + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + add r4, #0x8 + cmp r6, r0 + blo _0200AB36 +_0200AB4E: + ldr r0, [r5, #0x8] + bl FUN_02016A18 +_0200AB54: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _0200AB5E + bl FUN_02021A20 +_0200AB5E: + mov r0, #0x0 + str r0, [r5, #0x0] + add r0, r5, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0200AB6C +FUN_0200AB6C: ; 0x0200AB6C + bx lr + .balign 4 + + thumb_func_start FUN_0200AB70 +FUN_0200AB70: ; 0x0200AB70 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + cmp r6, r0 + blo _0200AB84 + bl ErrorHandling +_0200AB84: + ldr r0, [r5, #0x0] + cmp r6, r0 + bhs _0200ABB2 + cmp r4, #0x0 + beq _0200ABA4 + ldrb r0, [r4, #0x0] + ldr r3, [r5, #0x8] + lsl r2, r6, #0x3 + strb r0, [r3, r2] + ldrb r0, [r4, #0x1] + add r1, r3, r2 + strb r0, [r1, #0x1] + ldrb r0, [r4, #0x2] + strb r0, [r1, #0x2] + ldrb r0, [r4, #0x3] + strb r0, [r1, #0x3] +_0200ABA4: + ldr r1, [r5, #0x8] + lsl r0, r6, #0x3 + add r0, r1, r0 + ldr r0, [r0, #0x4] + add r1, r7, #0x0 + bl FUN_02021A74 +_0200ABB2: + pop {r3-r7, pc} + + thumb_func_start FUN_0200ABB4 +FUN_0200ABB4: ; 0x0200ABB4 + push {r3, lr} + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200ABC0 +FUN_0200ABC0: ; 0x0200ABC0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + bl FUN_0202398C + add r1, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02021E28 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200ABE4 +FUN_0200ABE4: ; 0x0200ABE4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + bl FUN_02024EC0 + bl FUN_02024EE8 + add r1, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02021E28 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200AC0C +FUN_0200AC0C: ; 0x0200AC0C + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r6, r1, #0x0 + bl FUN_020238F4 + add r7, r0, #0x0 + ldr r2, _0200AC5C ; =0x000001F1 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020239CC + cmp r0, #0x0 + bne _0200AC3E + ldr r2, [r5, #0xc] + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200A8E0 + b _0200AC48 +_0200AC3E: + ldr r2, [r5, #0xc] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200A8E0 +_0200AC48: + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r4, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} + .balign 4 +_0200AC5C: .word 0x000001F1 + + thumb_func_start FUN_0200AC60 +FUN_0200AC60: ; 0x0200AC60 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r2, #0x0 + add r6, r1, #0x0 + ldr r2, _0200ACA0 ; =0x0000016A + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r1, r0, #0x0 + ldr r2, [r5, #0xc] + add r0, r4, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r4, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} + nop +_0200ACA0: .word 0x0000016A + + thumb_func_start FUN_0200ACA4 +FUN_0200ACA4: ; 0x0200ACA4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200ACC0 + pop {r3-r5, pc} + + thumb_func_start FUN_0200ACC0 +FUN_0200ACC0: ; 0x0200ACC0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200ACF4 ; =0x0000016B + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + add r7, r0, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} + nop +_0200ACF4: .word 0x0000016B + + thumb_func_start FUN_0200ACF8 +FUN_0200ACF8: ; 0x0200ACF8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + ldr r2, [r5, #0xc] + mov r1, #0x76 + bl FUN_020672BC + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200AD18 +FUN_0200AD18: ; 0x0200AD18 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + ldr r2, [r5, #0xc] + mov r1, #0x90 + bl FUN_020672BC + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200AD38 +FUN_0200AD38: ; 0x0200AD38 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [sp, #0x14] + add r4, r1, #0x0 + str r0, [sp, #0x0] + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r0, [r5, #0xc] + ldr r3, [sp, #0x10] + bl FUN_02021B04 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + + thumb_func_start FUN_0200AD5C +FUN_0200AD5C: ; 0x0200AD5C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x93 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AD90 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AD90: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200AD94 +FUN_0200AD94: ; 0x0200AD94 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x79 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200ADC8 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200ADC8: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200ADCC +FUN_0200ADCC: ; 0x0200ADCC + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x8a + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AE00 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AE00: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200AE04 +FUN_0200AE04: ; 0x0200AE04 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xbe + bl FUN_0200A86C + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + add r7, r0, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200AE38 +FUN_0200AE38: ; 0x0200AE38 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x56 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AE6C + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AE6C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200AE70 +FUN_0200AE70: ; 0x0200AE70 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200AEA4 ; =0x0000015A + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AEA2 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AEA2: + pop {r3-r7, pc} + .balign 4 +_0200AEA4: .word 0x0000015A + + thumb_func_start FUN_0200AEA8 +FUN_0200AEA8: ; 0x0200AEA8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200AEDC ; =0x0000015B + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AEDA + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AEDA: + pop {r3-r7, pc} + .balign 4 +_0200AEDC: .word 0x0000015B + + thumb_func_start FUN_0200AEE0 +FUN_0200AEE0: ; 0x0200AEE0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200AF14 ; =0x0000015D + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AF12 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AF12: + pop {r3-r7, pc} + .balign 4 +_0200AF14: .word 0x0000015D + + thumb_func_start FUN_0200AF18 +FUN_0200AF18: ; 0x0200AF18 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200AF4C ; =0x00000235 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AF4A + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AF4A: + pop {r3-r7, pc} + .balign 4 +_0200AF4C: .word 0x00000235 + + thumb_func_start FUN_0200AF50 +FUN_0200AF50: ; 0x0200AF50 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200AF84 ; =0x000001EF + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AF82 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AF82: + pop {r3-r7, pc} + .balign 4 +_0200AF84: .word 0x000001EF + + thumb_func_start FUN_0200AF88 +FUN_0200AF88: ; 0x0200AF88 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xcd + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AFBA + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AFBA: + pop {r3-r7, pc} + + thumb_func_start FUN_0200AFBC +FUN_0200AFBC: ; 0x0200AFBC + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x89 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200AFF0 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200AFF0: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200AFF4 +FUN_0200AFF4: ; 0x0200AFF4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B028 ; =0x0000017E + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B026 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B026: + pop {r3-r7, pc} + .balign 4 +_0200B028: .word 0x0000017E + + thumb_func_start FUN_0200B02C +FUN_0200B02C: ; 0x0200B02C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B060 ; =0x00000196 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B05E + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B05E: + pop {r3-r7, pc} + .balign 4 +_0200B060: .word 0x00000196 + + thumb_func_start FUN_0200B064 +FUN_0200B064: ; 0x0200B064 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x23 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x4 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B098 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B098: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B09C +FUN_0200B09C: ; 0x0200B09C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B0D0 ; =0x00000231 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B0CE + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B0CE: + pop {r3-r7, pc} + .balign 4 +_0200B0D0: .word 0x00000231 + + thumb_func_start FUN_0200B0D4 +FUN_0200B0D4: ; 0x0200B0D4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + mov r2, #0x23 + add r6, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x4 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B108 + ldrb r1, [r4, #0x1] + ldr r2, [r5, #0xc] + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B108: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B10C +FUN_0200B10C: ; 0x0200B10C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B140 ; =0x0000022F + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B13E + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B13E: + pop {r3-r7, pc} + .balign 4 +_0200B140: .word 0x0000022F + + thumb_func_start FUN_0200B144 +FUN_0200B144: ; 0x0200B144 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r2, #0x14 + add r4, r1, #0x0 + add r1, r2, #0x0 + bl FUN_02021E28 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200B164 +FUN_0200B164: ; 0x0200B164 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B198 ; =0x00000239 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B196 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B196: + pop {r3-r7, pc} + .balign 4 +_0200B198: .word 0x00000239 + + thumb_func_start FUN_0200B19C +FUN_0200B19C: ; 0x0200B19C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B1D0 ; =0x0000023A + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B1CE + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B1CE: + pop {r3-r7, pc} + .balign 4 +_0200B1D0: .word 0x0000023A + + thumb_func_start FUN_0200B1D4 +FUN_0200B1D4: ; 0x0200B1D4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B208 ; =0x0000023B + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B206 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B206: + pop {r3-r7, pc} + .balign 4 +_0200B208: .word 0x0000023B + + thumb_func_start FUN_0200B20C +FUN_0200B20C: ; 0x0200B20C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x8f + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B240 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B240: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B244 +FUN_0200B244: ; 0x0200B244 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B276 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B276: + pop {r3-r7, pc} + + thumb_func_start FUN_0200B278 +FUN_0200B278: ; 0x0200B278 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xbf + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B2AA + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B2AA: + pop {r3-r7, pc} + + thumb_func_start FUN_0200B2AC +FUN_0200B2AC: ; 0x0200B2AC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xbf + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B2DE + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B2DE: + pop {r3-r7, pc} + + thumb_func_start FUN_0200B2E0 +FUN_0200B2E0: ; 0x0200B2E0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B314 ; =0x0000023E + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B312 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B312: + pop {r3-r7, pc} + .balign 4 +_0200B314: .word 0x0000023E + + thumb_func_start FUN_0200B318 +FUN_0200B318: ; 0x0200B318 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B34C ; =0x0000023D + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B34A + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B34A: + pop {r3-r7, pc} + .balign 4 +_0200B34C: .word 0x0000023D + + thumb_func_start FUN_0200B350 +FUN_0200B350: ; 0x0200B350 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B384 ; =0x00000237 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B382 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B382: + pop {r3-r7, pc} + .balign 4 +_0200B384: .word 0x00000237 + + thumb_func_start FUN_0200B388 +FUN_0200B388: ; 0x0200B388 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x8e + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B3BC + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B3BC: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B3C0 +FUN_0200B3C0: ; 0x0200B3C0 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r6, r1, #0x0 + add r4, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc7 + bl FUN_0200A86C + add r7, r0, #0x0 + cmp r4, #0x0 + beq _0200B3E0 + cmp r4, #0x1 + beq _0200B3EA + b _0200B3F4 +_0200B3E0: + ldr r2, [r5, #0xc] + mov r1, #0x44 + bl FUN_0200A8E0 + b _0200B3FA +_0200B3EA: + ldr r2, [r5, #0xc] + mov r1, #0x45 + bl FUN_0200A8E0 + b _0200B3FA +_0200B3F4: + ldr r0, [r5, #0xc] + bl FUN_02021A4C +_0200B3FA: + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B410 +FUN_0200B410: ; 0x0200B410 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + ldr r2, [r5, #0xc] + add r1, r3, #0x0 + bl FUN_0206B484 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200B430 +FUN_0200B430: ; 0x0200B430 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B464 ; =0x0000014B + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B462 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B462: + pop {r3-r7, pc} + .balign 4 +_0200B464: .word 0x0000014B + + thumb_func_start FUN_0200B468 +FUN_0200B468: ; 0x0200B468 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B49C ; =0x00000226 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B49A + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B49A: + pop {r3-r7, pc} + .balign 4 +_0200B49C: .word 0x00000226 + + thumb_func_start FUN_0200B4A0 +FUN_0200B4A0: ; 0x0200B4A0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x99 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B4D4 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B4D4: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B4D8 +FUN_0200B4D8: ; 0x0200B4D8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r6, r1, #0x0 + add r4, r3, #0x0 + bl FUN_02088D40 + add r2, r0, #0x0 + beq _0200B516 + cmp r4, #0x0 + beq _0200B516 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B516 + ldr r2, [r5, #0xc] + add r1, r4, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B516: + pop {r3-r7, pc} + + thumb_func_start FUN_0200B518 +FUN_0200B518: ; 0x0200B518 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0xc] + add r0, r2, #0x0 + bl FUN_02013A58 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + pop {r3-r5, pc} + + thumb_func_start FUN_0200B534 +FUN_0200B534: ; 0x0200B534 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xa + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B566 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B566: + pop {r3-r7, pc} + + thumb_func_start FUN_0200B568 +FUN_0200B568: ; 0x0200B568 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r3, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xb + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B59A + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B59A: + pop {r3-r7, pc} + + thumb_func_start FUN_0200B59C +FUN_0200B59C: ; 0x0200B59C + push {r3-r7, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r7, r1, #0x0 + bl FUN_02015CC0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02015CE0 + add r4, r0, #0x0 + ldr r2, _0200B620 ; =0x020ECE64 + lsl r3, r6, #0x1 + ldrh r2, [r2, r3] + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r6, r0, #0x0 + beq _0200B61E + bl FUN_0200A940 + cmp r4, r0 + bhs _0200B5EE + ldr r2, [r5, #0xc] + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r6, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} +_0200B5EE: + add r0, r6, #0x0 + bl FUN_0200A8B8 + ldr r2, _0200B624 ; =0x0000017E + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r4, r0, #0x0 + beq _0200B61E + ldr r2, [r5, #0xc] + mov r1, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r4, #0x0 + bl FUN_0200A8B8 +_0200B61E: + pop {r3-r7, pc} + .balign 4 +_0200B620: .word 0x020ECE64 +_0200B624: .word 0x0000017E + + thumb_func_start FUN_0200B628 +FUN_0200B628: ; 0x0200B628 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B65C ; =0x0000019E + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B65A + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B65A: + pop {r3-r7, pc} + .balign 4 +_0200B65C: .word 0x0000019E + + thumb_func_start FUN_0200B660 +FUN_0200B660: ; 0x0200B660 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B694 ; =0x00000152 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B692 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B692: + pop {r3-r7, pc} + .balign 4 +_0200B694: .word 0x00000152 + + thumb_func_start FUN_0200B698 +FUN_0200B698: ; 0x0200B698 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r1, #0x0 + ldr r2, _0200B6CC ; =0x00000153 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B6CA + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B6CA: + pop {r3-r7, pc} + .balign 4 +_0200B6CC: .word 0x00000153 + + thumb_func_start FUN_0200B6D0 +FUN_0200B6D0: ; 0x0200B6D0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r2, #0x55 + add r4, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r7, r0, #0x0 + beq _0200B704 + ldr r2, [r5, #0xc] + add r1, r6, #0x0 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_0200B704: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B708 +FUN_0200B708: ; 0x0200B708 + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x8] + add r5, r2, #0x0 + add r0, r1, #0x0 + str r3, [sp, #0xc] + bl FUN_0202881C + add r6, r0, #0x0 + add r1, r5, #0x0 + bl FUN_020287F8 + str r0, [sp, #0x10] + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02028804 + add r7, r0, #0x0 + mov r0, #0x40 + mov r1, #0x4 + bl FUN_020219F4 + add r4, r0, #0x0 + ldr r2, [sp, #0x28] + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_020287A8 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02021E28 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + ldr r3, [sp, #0x10] + add r2, r4, #0x0 + str r7, [sp, #0x4] + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0200B764 +FUN_0200B764: ; 0x0200B764 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + mov r2, #0x5b + add r7, r1, #0x0 + ldr r3, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r6, r0, #0x0 + beq _0200B7A4 + cmp r4, #0x1 + blo _0200B786 + cmp r4, #0xc + bls _0200B788 +_0200B786: + mov r4, #0x1 +_0200B788: + ldr r2, [r5, #0xc] + add r0, r6, #0x0 + sub r1, r4, #0x1 + bl FUN_0200A8E0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r3, #0x0 + bl FUN_0200AB70 + add r0, r6, #0x0 + bl FUN_0200A8B8 +_0200B7A4: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200B7A8 +FUN_0200B7A8: ; 0x0200B7A8 + ldr r2, [r0, #0x8] + lsl r0, r1, #0x3 + add r0, r2, r0 + ldr r3, _0200B7B4 ; =FUN_02021FF8 + ldr r0, [r0, #0x4] + bx r3 + .balign 4 +_0200B7B4: .word FUN_02021FF8 + + thumb_func_start FUN_0200B7B8 +FUN_0200B7B8: ; 0x0200B7B8 + push {r3-r7, lr} + add r7, r0, #0x0 + add r6, r1, #0x0 + add r0, r2, #0x0 + bl FUN_02021F2C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02021A4C + ldrh r1, [r5, #0x0] + ldr r0, _0200B844 ; =0x0000FFFF + cmp r1, r0 + beq _0200B840 +_0200B7D4: + ldr r0, _0200B848 ; =0x0000FFFE + cmp r1, r0 + bne _0200B82E + add r0, r5, #0x0 + bl FUN_0201B8F8 + cmp r0, #0x0 + beq _0200B810 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0201B914 + add r4, r0, #0x0 + ldr r0, [r7, #0x0] + cmp r4, r0 + blo _0200B7F8 + bl ErrorHandling +_0200B7F8: + ldr r2, [r7, #0x8] + lsl r1, r4, #0x3 + add r1, r2, r1 + ldr r1, [r1, #0x4] + add r0, r6, #0x0 + bl FUN_02022048 + add r0, r5, #0x0 + bl FUN_0201B8B8 + add r5, r0, #0x0 + b _0200B838 +_0200B810: + add r0, r5, #0x0 + add r4, r5, #0x0 + bl FUN_0201B8B8 + add r5, r0, #0x0 + cmp r4, r5 + bhs _0200B838 +_0200B81E: + ldrh r1, [r4, #0x0] + add r0, r6, #0x0 + add r4, r4, #0x2 + bl FUN_02021FB0 + cmp r4, r5 + blo _0200B81E + b _0200B838 +_0200B82E: + ldrh r1, [r5, #0x0] + add r0, r6, #0x0 + add r5, r5, #0x2 + bl FUN_02021FB0 +_0200B838: + ldrh r1, [r5, #0x0] + ldr r0, _0200B844 ; =0x0000FFFF + cmp r1, r0 + bne _0200B7D4 +_0200B840: + pop {r3-r7, pc} + nop +_0200B844: .word 0x0000FFFF +_0200B848: .word 0x0000FFFE + + thumb_func_start FUN_0200B84C +FUN_0200B84C: ; 0x0200B84C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _0200B86E + add r4, r6, #0x0 +_0200B85A: + ldr r0, [r5, #0x8] + add r0, r0, r4 + ldr r0, [r0, #0x4] + bl FUN_02021A4C + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + add r4, #0x8 + cmp r6, r0 + blo _0200B85A +_0200B86E: + pop {r4-r6, pc} + + thumb_func_start FUN_0200B870 +FUN_0200B870: ; 0x0200B870 + push {r4-r7, lr} + sub sp, #0x2c + add r4, r3, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r4, #0x0 + mov r1, #0x2c + str r2, [sp, #0x4] + bl FUN_02016998 + str r0, [sp, #0x8] + cmp r0, #0x0 + beq _0200B98A + ldr r3, [sp, #0x8] + mov r0, #0xe + mov r1, #0x4 + mov r2, #0x1 + add r3, r3, #0x4 + str r4, [sp, #0x0] + bl FUN_02006BB0 + ldr r1, [sp, #0x8] + mov r3, #0x0 + str r0, [r1, #0x0] + add r0, r1, #0x0 + ldr r0, [r0, #0x4] + ldr r4, [r0, #0x14] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + bls _0200B984 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x4] + lsl r0, r0, #0x4 + orr r1, r0 + str r1, [sp, #0xc] + add r1, r0, #0x0 + orr r1, r5 + str r1, [sp, #0x10] + orr r0, r6 + str r0, [sp, #0x14] + ldr r1, [sp, #0x4] + lsl r0, r5, #0x4 + orr r1, r0 + str r1, [sp, #0x18] + add r1, r5, #0x0 + orr r1, r0 + str r1, [sp, #0x1c] + orr r0, r6 + lsl r2, r6, #0x4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x4] + add r7, r2, #0x0 + orr r7, r1 + add r1, r2, #0x0 + orr r1, r5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + orr r2, r6 + str r1, [sp, #0x28] + lsl r1, r7, #0x18 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp, #0x18] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + lsr r1, r1, #0x18 + lsl r0, r0, #0x18 + mov r12, r2 + str r1, [sp, #0x24] + lsr r6, r0, #0x18 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0xc] + lsl r0, r0, #0x18 + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 +_0200B914: + ldrb r5, [r4, r3] + cmp r5, #0x12 + bgt _0200B93C + bge _0200B962 + cmp r5, #0x10 + bgt _0200B936 + bge _0200B95A + cmp r5, #0x2 + bgt _0200B978 + cmp r5, #0x0 + blt _0200B978 + beq _0200B94E + cmp r5, #0x1 + beq _0200B952 + cmp r5, #0x2 + beq _0200B956 + b _0200B978 +_0200B936: + cmp r5, #0x11 + beq _0200B95E + b _0200B978 +_0200B93C: + cmp r5, #0x21 + bgt _0200B948 + bge _0200B96E + cmp r5, #0x20 + beq _0200B968 + b _0200B978 +_0200B948: + cmp r5, #0x22 + beq _0200B974 + b _0200B978 +_0200B94E: + strb r2, [r4, r3] + b _0200B978 +_0200B952: + strb r1, [r4, r3] + b _0200B978 +_0200B956: + strb r0, [r4, r3] + b _0200B978 +_0200B95A: + strb r6, [r4, r3] + b _0200B978 +_0200B95E: + strb r7, [r4, r3] + b _0200B978 +_0200B962: + ldr r5, [sp, #0x20] + strb r5, [r4, r3] + b _0200B978 +_0200B968: + ldr r5, [sp, #0x24] + strb r5, [r4, r3] + b _0200B978 +_0200B96E: + ldr r5, [sp, #0x28] + strb r5, [r4, r3] + b _0200B978 +_0200B974: + mov r5, r12 + strb r5, [r4, r3] +_0200B978: + ldr r5, [sp, #0x8] + add r3, r3, #0x1 + ldr r5, [r5, #0x4] + ldr r5, [r5, #0x10] + cmp r3, r5 + blo _0200B914 +_0200B984: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + str r1, [r0, #0x28] +_0200B98A: + ldr r0, [sp, #0x8] + add sp, #0x2c + pop {r4-r7, pc} + + thumb_func_start FUN_0200B990 +FUN_0200B990: ; 0x0200B990 + push {r4, lr} + add r4, r0, #0x0 + beq _0200B9A6 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0200B9A0 + bl FUN_02016A18 +_0200B9A0: + add r0, r4, #0x0 + bl FUN_02016A18 +_0200B9A6: + pop {r4, pc} + + thumb_func_start FUN_0200B9A8 +FUN_0200B9A8: ; 0x0200B9A8 + push {r3-r5, lr} + sub sp, #0x18 + add r4, r0, #0x0 + ldr r0, _0200B9E4 ; =0x020ECE6E + lsl r5, r1, #0x2 + ldrh r1, [r0, r5] + lsl r3, r3, #0x10 + mov r0, #0x8 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + lsr r3, r3, #0x10 + str r3, [sp, #0x8] + ldr r3, [sp, #0x28] + lsl r3, r3, #0x10 + lsr r3, r3, #0x10 + str r3, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [r4, #0x4] + add r0, r2, #0x0 + ldr r2, [r1, #0x14] + ldr r1, _0200B9E8 ; =0x020ECE6C + ldrh r1, [r1, r5] + add r1, r2, r1 + mov r2, #0x0 + add r3, r2, #0x0 + bl FUN_02019658 + add sp, #0x18 + pop {r3-r5, pc} + .balign 4 +_0200B9E4: .word 0x020ECE6E +_0200B9E8: .word 0x020ECE6C + + thumb_func_start FUN_0200B9EC +FUN_0200B9EC: ; 0x0200B9EC + push {r3-r7, lr} + sub sp, #0x18 + add r6, r0, #0x0 + ldr r0, [sp, #0x30] + add r4, r2, #0x0 + str r0, [sp, #0x30] + add r0, r6, #0x0 + add r2, r3, #0x0 + add r0, #0x8 + add r3, r4, #0x0 + ldr r5, [sp, #0x34] + ldr r7, [sp, #0x38] + bl ConvertUIntToDecimalString + ldrh r1, [r6, #0x8] + ldr r0, _0200BA74 ; =0x0000FFFF + cmp r1, r0 + beq _0200BA6E + lsl r0, r7, #0x10 + add r4, r6, #0x0 + lsr r7, r0, #0x10 +_0200BA16: + ldrh r2, [r4, #0x8] + cmp r2, #0xa2 + blo _0200BA4A + cmp r2, #0xab + bhi _0200BA4A + mov r0, #0x8 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x8] + str r7, [sp, #0xc] + mov r0, #0x8 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + ldr r1, [r6, #0x4] + sub r2, #0xa2 + ldr r1, [r1, #0x14] + lsl r2, r2, #0x5 + add r1, r1, r2 + mov r2, #0x0 + ldr r0, [sp, #0x30] + add r3, r2, #0x0 + bl FUN_02019658 + b _0200BA62 +_0200BA4A: + mov r0, #0x8 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r1, [r6, #0x28] + lsl r2, r5, #0x10 + lsl r1, r1, #0x18 + ldr r0, [sp, #0x30] + lsr r1, r1, #0x18 + lsr r2, r2, #0x10 + add r3, r7, #0x0 + bl FUN_020196F4 +_0200BA62: + add r4, r4, #0x2 + ldrh r1, [r4, #0x8] + ldr r0, _0200BA74 ; =0x0000FFFF + add r5, #0x8 + cmp r1, r0 + bne _0200BA16 +_0200BA6E: + add sp, #0x18 + pop {r3-r7, pc} + nop +_0200BA74: .word 0x0000FFFF + + thumb_func_start FUN_0200BA78 +FUN_0200BA78: ; 0x0200BA78 + push {r3-r6, lr} + sub sp, #0xc + add r4, r2, #0x0 + ldr r2, [sp, #0x2c] + add r6, r3, #0x0 + str r2, [sp, #0x0] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + add r5, r0, #0x0 + bl FUN_0200B9A8 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x28] + add r1, r4, #0x0 + add r0, #0x10 + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + add r2, r6, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_0200B9EC + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_0200BAAC +FUN_0200BAAC: ; 0x0200BAAC + push {r3-r7, lr} + add r7, r0, #0x0 + add r4, r2, #0x0 + ldr r2, [r7, #0x28] + ldr r6, [sp, #0x18] + lsl r0, r2, #0x4 + orr r0, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r0, r7, #0x0 + add r2, r3, #0x0 + add r0, #0x8 + add r3, r4, #0x0 + bl ConvertUIntToDecimalString + ldrh r1, [r7, #0x8] + ldr r0, _0200BB10 ; =0x0000FFFF + cmp r1, r0 + beq _0200BB0C + add r4, r7, #0x0 + mov r5, #0x0 +_0200BAD8: + ldrh r2, [r4, #0x8] + cmp r2, #0xa2 + blo _0200BAF6 + cmp r2, #0xab + bhi _0200BAF6 + ldr r0, [r7, #0x4] + sub r2, #0xa2 + ldr r1, [r0, #0x14] + lsl r0, r2, #0x5 + add r0, r1, r0 + add r1, r6, r5 + mov r2, #0x20 + blx MIi_CpuCopy32 + b _0200BB00 +_0200BAF6: + ldr r1, [sp, #0x0] + add r0, r6, r5 + mov r2, #0x20 + blx MI_CpuFill8 +_0200BB00: + add r4, r4, #0x2 + ldrh r1, [r4, #0x8] + ldr r0, _0200BB10 ; =0x0000FFFF + add r5, #0x20 + cmp r1, r0 + bne _0200BAD8 +_0200BB0C: + pop {r3-r7, pc} + nop +_0200BB10: .word 0x0000FFFF + + thumb_func_start FUN_0200BB14 +FUN_0200BB14: ; 0x0200BB14 + push {r4, lr} + mov r1, #0x4e + lsl r1, r1, #0x2 + add r4, r0, #0x0 + bl FUN_02016998 + cmp r0, #0x0 + bne _0200BB28 + mov r0, #0x0 + pop {r4, pc} +_0200BB28: + str r4, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r4, pc} + + thumb_func_start FUN_0200BB34 +FUN_0200BB34: ; 0x0200BB34 + push {r4, lr} + add r4, r0, #0x0 + bne _0200BB3E + bl ErrorHandling +_0200BB3E: + ldr r0, [r4, #0x0] + mov r1, #0x58 + bl FUN_02016998 + cmp r0, #0x0 + bne _0200BB4E + mov r0, #0x0 + pop {r4, pc} +_0200BB4E: + ldr r1, [r4, #0x4] + mov r2, #0x0 + add r1, r1, #0x1 + str r1, [r4, #0x4] + add r3, r0, #0x0 + add r1, r2, #0x0 +_0200BB5A: + add r2, r2, #0x1 + str r1, [r3, #0xc] + add r3, r3, #0x4 + cmp r2, #0x6 + blt _0200BB5A + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200BB68 +FUN_0200BB68: ; 0x0200BB68 + add r0, #0x10 + bx lr + + thumb_func_start FUN_0200BB6C +FUN_0200BB6C: ; 0x0200BB6C + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r5, #0x0 + bne _0200BB80 + bl ErrorHandling +_0200BB80: + cmp r5, #0x0 + bne _0200BB8A + add sp, #0x24 + mov r0, #0x0 + pop {r4-r7, pc} +_0200BB8A: + ldr r0, [r6, #0x0] + str r0, [sp, #0x14] + ldr r0, [r6, #0x4] + str r0, [sp, #0x18] + ldr r0, [r6, #0x8] + str r0, [sp, #0x1c] + ldr r0, [r5, #0x0] + str r0, [sp, #0x20] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x10] + add r0, sp, #0x14 + bl FUN_0201D060 + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_0201E00C + blx FUN_020B0FC0 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _0200BBD6 + ldr r0, [r4, #0x10] + str r0, [sp, #0x0] + ldr r0, [r4, #0x14] + str r0, [sp, #0x4] + ldr r0, [r4, #0x18] + str r0, [sp, #0x8] + ldr r0, [r4, #0x1c] + str r0, [sp, #0xc] + ldr r0, [r5, #0x0] + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + ldr r3, [r4, #0xc] + bl FUN_02009EAC +_0200BBD6: + ldr r1, [r5, #0x0] + mov r0, #0x20 + bl FUN_0201C328 + str r0, [r5, #0xc] + bl FUN_0201D168 + bl FUN_0201E0BC + mov r0, #0x1 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200BBF0 +FUN_0200BBF0: ; 0x0200BBF0 + push {r4, lr} + add r3, r0, #0x0 + add r4, r1, #0x0 + cmp r3, #0x0 + beq _0200BBFE + cmp r4, #0x0 + bne _0200BC02 +_0200BBFE: + mov r0, #0x0 + pop {r4, pc} +_0200BC02: + add r0, r2, #0x0 + add r1, r3, #0x0 + ldr r2, [r3, #0x0] + add r1, #0x10 + bl FUN_02008C9C + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0200BC14 +FUN_0200BC14: ; 0x0200BC14 + ldr r3, _0200BC18 ; =FUN_0201FFC8 + bx r3 + .balign 4 +_0200BC18: .word FUN_0201FFC8 + + thumb_func_start FUN_0200BC1C +FUN_0200BC1C: ; 0x0200BC1C + push {r4, lr} + add r4, r0, #0x0 + bne _0200BC26 + bl ErrorHandling +_0200BC26: + ldr r0, [r4, #0x0] + bl FUN_0201FDEC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200BC30 +FUN_0200BC30: ; 0x0200BC30 + ldr r3, _0200BC34 ; =FUN_02009F80 + bx r3 + .balign 4 +_0200BC34: .word FUN_02009F80 + + thumb_func_start FUN_0200BC38 +FUN_0200BC38: ; 0x0200BC38 + ldr r3, _0200BC3C ; =FUN_0201C348 + bx r3 + .balign 4 +_0200BC3C: .word FUN_0201C348 + + thumb_func_start FUN_0200BC40 +FUN_0200BC40: ; 0x0200BC40 + ldr r3, _0200BC48 ; =FUN_0201FD58 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200BC48: .word FUN_0201FD58 + + thumb_func_start FUN_0200BC4C +FUN_0200BC4C: ; 0x0200BC4C + push {r3, lr} + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0200BC58 + bl FUN_02008C80 +_0200BC58: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200BC5C +FUN_0200BC5C: ; 0x0200BC5C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x54] + mov r4, #0x0 + cmp r0, #0x0 + ble _0200BC7C +_0200BC68: + ldr r0, [r5, #0x8] + add r1, r4, #0x0 + bl FUN_02009660 + bl FUN_020096B4 + ldr r0, [r5, #0x54] + add r4, r4, #0x1 + cmp r4, r0 + blt _0200BC68 +_0200BC7C: + ldr r0, [r5, #0x8] + bl FUN_02016A18 + ldr r0, [r5, #0x24] + bl FUN_02009C30 + ldr r0, [r5, #0x28] + bl FUN_02009E28 + ldr r0, [r5, #0x54] + mov r6, #0x0 + cmp r0, #0x0 + ble _0200BCAE + add r4, r5, #0x0 +_0200BC98: + ldr r0, [r4, #0x24] + bl FUN_02009448 + ldr r0, [r4, #0xc] + bl FUN_02008E2C + ldr r0, [r5, #0x54] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _0200BC98 +_0200BCAE: + pop {r4-r6, pc} + + thumb_func_start FUN_0200BCB0 +FUN_0200BCB0: ; 0x0200BCB0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0201C350 + bl FUN_0201D12C + bl FUN_0201E08C + ldr r0, [r4, #0x8] + cmp r0, #0x1 + bne _0200BCCC + bl FUN_02009FA0 +_0200BCCC: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200BCD0 +FUN_0200BCD0: ; 0x0200BCD0 + ldr r2, [r0, #0x4] + ldr r3, _0200BCDC ; =FUN_02016A18 + sub r2, r2, #0x1 + str r2, [r0, #0x4] + add r0, r1, #0x0 + bx r3 + .balign 4 +_0200BCDC: .word FUN_02016A18 + + thumb_func_start FUN_0200BCE0 +FUN_0200BCE0: ; 0x0200BCE0 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0200BC40 + add r0, r4, #0x0 + bl FUN_0200BC4C + add r0, r4, #0x0 + bl FUN_0200BC5C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200BCD0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200BD04 +FUN_0200BD04: ; 0x0200BD04 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0200BD12 + bl ErrorHandling +_0200BD12: + add r0, r4, #0x0 + bl FUN_0200BCB0 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_0200BD20 +FUN_0200BD20: ; 0x0200BD20 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + mov r0, #0x6 + add r4, r1, #0x0 + str r2, [sp, #0x10] + str r0, [sp, #0x14] + cmp r5, #0x0 + beq _0200BD36 + cmp r4, #0x0 + bne _0200BD3C +_0200BD36: + add sp, #0x24 + mov r0, #0x0 + pop {r4-r7, pc} +_0200BD3C: + add r0, r2, #0x0 + ldr r0, [r0, #0x10] + cmp r0, #0x0 + bne _0200BD48 + mov r0, #0x4 + str r0, [sp, #0x14] +_0200BD48: + ldr r0, [sp, #0x14] + str r0, [r4, #0x54] + bl FUN_0200965C + add r2, r0, #0x0 + ldr r1, [sp, #0x14] + ldr r0, [r5, #0x0] + mul r1, r2 + bl FUN_02016998 + str r0, [r4, #0x8] + ldr r0, [sp, #0x14] + mov r7, #0x0 + cmp r0, #0x0 + ble _0200BD94 + ldr r6, [sp, #0x10] +_0200BD68: + ldr r0, [r4, #0x8] + add r1, r7, #0x0 + bl FUN_02009660 + str r0, [sp, #0x18] + ldr r0, [r5, #0x0] + ldr r1, [r6, #0x0] + bl FUN_020161A4 + ldr r1, [sp, #0x18] + ldr r2, [r5, #0x0] + str r0, [sp, #0x1c] + bl FUN_02009668 + ldr r0, [sp, #0x1c] + bl FUN_02016A18 + ldr r0, [sp, #0x14] + add r7, r7, #0x1 + add r6, r6, #0x4 + cmp r7, r0 + blt _0200BD68 +_0200BD94: + ldr r0, [sp, #0x14] + mov r6, #0x0 + cmp r0, #0x0 + ble _0200BDBE + add r7, r4, #0x0 +_0200BD9E: + ldr r0, [r4, #0x8] + add r1, r6, #0x0 + bl FUN_02009660 + bl FUN_020096CC + ldr r2, [r5, #0x0] + add r1, r6, #0x0 + bl FUN_02008DEC + str r0, [r7, #0xc] + ldr r0, [sp, #0x14] + add r6, r6, #0x1 + add r7, r7, #0x4 + cmp r6, r0 + blt _0200BD9E +_0200BDBE: + ldr r0, [sp, #0x14] + mov r7, #0x0 + cmp r0, #0x0 + ble _0200BDF6 + add r6, r4, #0x0 +_0200BDC8: + ldr r0, [r4, #0x8] + add r1, r7, #0x0 + bl FUN_02009660 + str r0, [sp, #0x20] + bl FUN_020096CC + ldr r1, [r5, #0x0] + bl FUN_02009424 + add r2, r0, #0x0 + str r2, [r6, #0x24] + ldr r0, [r6, #0xc] + ldr r1, [sp, #0x20] + ldr r3, [r5, #0x0] + bl FUN_020093A8 + str r0, [r6, #0x3c] + ldr r0, [sp, #0x14] + add r7, r7, #0x1 + add r6, r6, #0x4 + cmp r7, r0 + blt _0200BDC8 +_0200BDF6: + ldr r0, [r4, #0x24] + bl FUN_02009A90 + ldr r0, [r4, #0x28] + bl FUN_02009D34 + ldr r1, [sp, #0x10] + ldr r0, [r5, #0x0] + ldr r1, [r1, #0x18] + bl FUN_020161A4 + ldr r1, [r4, #0x14] + add r6, r0, #0x0 + str r1, [sp, #0x0] + ldr r1, [r4, #0x18] + str r1, [sp, #0x4] + ldr r1, [r4, #0x1c] + str r1, [sp, #0x8] + ldr r1, [r4, #0x20] + str r1, [sp, #0xc] + ldr r1, [r5, #0x0] + ldr r2, [r4, #0xc] + ldr r3, [r4, #0x10] + bl FUN_02008BE0 + str r0, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200BE38 +FUN_0200BE38: ; 0x0200BE38 + push {r4, lr} + sub sp, #0x28 + mov r3, #0x4 + mov r4, #0x6 + ldrsh r3, [r2, r3] + ldrsh r4, [r2, r4] + str r4, [sp, #0x0] + str r3, [sp, #0x4] + ldrh r4, [r2, #0xa] + str r4, [sp, #0x8] + ldr r4, [r2, #0xc] + str r4, [sp, #0xc] + ldr r4, [r2, #0x10] + str r4, [sp, #0x10] + ldr r4, [r2, #0x14] + str r4, [sp, #0x14] + ldr r4, [r2, #0x18] + str r4, [sp, #0x18] + ldr r4, [r2, #0x1c] + str r4, [sp, #0x1c] + ldr r4, [r2, #0x20] + str r4, [sp, #0x20] + ldr r4, [r2, #0x24] + str r4, [sp, #0x24] + ldr r2, [r2, #0x0] + bl FUN_0200BE74 + add sp, #0x28 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200BE74 +FUN_0200BE74: ; 0x0200BE74 + push {r4, lr} + sub sp, #0x30 + add r4, r0, #0x0 + ldr r0, [r1, #0x0] + str r0, [sp, #0x0] + ldr r0, [r1, #0x4] + ldr r1, [r0, #0x0] + mov r0, #0x24 + mul r0, r2 + add r0, r1, r0 + str r0, [sp, #0x4] + cmp r3, #0x0 + ble _0200BEA0 + lsl r0, r3, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0200BEAE +_0200BEA0: + lsl r0, r3, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0200BEAE: + blx _ffix + str r0, [sp, #0x8] + add r1, sp, #0x28 + mov r0, #0x10 + ldrsh r0, [r1, r0] + cmp r0, #0x0 + ble _0200BED0 + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0200BEDE +_0200BED0: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0200BEDE: + blx _ffix + str r0, [sp, #0xc] + add r1, sp, #0x28 + mov r0, #0x14 + ldrsh r0, [r1, r0] + cmp r0, #0x0 + ble _0200BF00 + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0200BF0E +_0200BF00: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0200BF0E: + blx _ffix + str r0, [sp, #0x10] + ldr r0, [sp, #0x4c] + cmp r0, #0x2 + bne _0200BF24 + mov r0, #0x3 + ldr r1, [sp, #0xc] + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0xc] +_0200BF24: + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + mov r1, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x20] + ldr r0, [sp, #0x44] + str r0, [sp, #0x24] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x28] + ldr r0, [r4, #0x0] + str r0, [sp, #0x2c] + add r0, sp, #0x0 + bl FUN_0201FE94 + add r4, r0, #0x0 + beq _0200BF5A + add r1, sp, #0x28 + ldrh r1, [r1, #0x18] + bl FUN_02020130 + ldr r1, [sp, #0x48] + add r0, r4, #0x0 + bl FUN_02020248 +_0200BF5A: + add r0, r4, #0x0 + add sp, #0x30 + pop {r4, pc} + + thumb_func_start FUN_0200BF60 +FUN_0200BF60: ; 0x0200BF60 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + add r5, r1, #0x0 + add r6, r2, #0x0 + cmp r0, #0x0 + beq _0200BF78 + cmp r5, #0x0 + bne _0200BF7E +_0200BF78: + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0200BF7E: + ldr r0, [r6, #0x10] + cmp r0, #0x0 + beq _0200BF8A + ldr r0, [r6, #0x14] + cmp r0, #0x0 + bne _0200BF8E +_0200BF8A: + mov r0, #0x4 + str r0, [sp, #0x4] +_0200BF8E: + ldr r0, [sp, #0x4] + str r0, [r5, #0x54] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0200BFBE + add r7, r6, #0x0 + add r4, r5, #0x0 +_0200BFA0: + ldr r2, [sp, #0x0] + ldr r0, [r7, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [r2, #0x0] + bl FUN_02008DEC + str r0, [r4, #0xc] + ldr r0, [sp, #0x8] + add r7, r7, #0x4 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + add r4, r4, #0x4 + str r1, [sp, #0x8] + cmp r1, r0 + blt _0200BFA0 +_0200BFBE: + ldr r0, [sp, #0x4] + mov r7, #0x0 + cmp r0, #0x0 + ble _0200C004 + add r4, r7, #0x0 +_0200BFC8: + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _0200BFF8 + ldr r1, [sp, #0x0] + ldr r1, [r1, #0x0] + bl FUN_02009424 + str r0, [r5, #0x24] + mov r0, #0x0 + str r0, [r5, #0x3c] + ldr r3, [r5, #0x24] + add r1, r0, #0x0 + ldr r0, [r3, #0x4] + cmp r0, #0x0 + ble _0200BFF8 + add r2, r1, #0x0 +_0200BFE8: + ldr r0, [r3, #0x0] + add r1, r1, #0x1 + str r4, [r0, r2] + ldr r3, [r5, #0x24] + add r2, r2, #0x4 + ldr r0, [r3, #0x4] + cmp r1, r0 + blt _0200BFE8 +_0200BFF8: + ldr r0, [sp, #0x4] + add r7, r7, #0x1 + add r6, r6, #0x4 + add r5, r5, #0x4 + cmp r7, r0 + blt _0200BFC8 +_0200C004: + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200C00C +FUN_0200C00C: ; 0x0200C00C + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x28] + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C02A + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0200C02A: + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r2, r7, #0x0 + str r0, [sp, #0x8] + ldr r0, [r4, #0xc] + bl FUN_02008F34 + add r5, r0, #0x0 + beq _0200C058 + bl FUN_02009B04 + ldr r0, [r4, #0x24] + add r1, r5, #0x0 + bl FUN_0200C474 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0200C058: + bl ErrorHandling + cmp r5, #0x0 + beq _0200C066 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0200C066: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0200C06C +FUN_0200C06C: ; 0x0200C06C + push {r3-r7, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x10] + ldr r1, [sp, #0x34] + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C08C + mov r0, #0x0 + add sp, #0x10 + mvn r0, r0 + pop {r3-r7, pc} +_0200C08C: + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x28] + str r0, [sp, #0x0] + ldr r0, [sp, #0x30] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + add r2, r7, #0x0 + str r0, [sp, #0x8] + ldr r0, [r5, #0x0] + str r0, [sp, #0xc] + ldr r0, [r4, #0x10] + bl FUN_02008FEC + add r5, r0, #0x0 + beq _0200C0D0 + bl FUN_02009D68 + cmp r0, #0x1 + beq _0200C0B8 + bl ErrorHandling +_0200C0B8: + ldr r0, [r4, #0x28] + add r1, r5, #0x0 + bl FUN_0200C474 + ldr r1, [sp, #0x30] + add r0, r5, #0x0 + bl FUN_02009E88 + lsl r0, r0, #0x18 + add sp, #0x10 + asr r0, r0, #0x18 + pop {r3-r7, pc} +_0200C0D0: + bl ErrorHandling + mov r0, #0x0 + mvn r0, r0 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0200C0DC +FUN_0200C0DC: ; 0x0200C0DC + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + add r6, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + add r1, r3, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + ldr r3, [sp, #0x24] + str r0, [sp, #0x8] + ldr r0, [sp, #0x34] + str r0, [sp, #0xc] + add r0, r2, #0x0 + ldr r2, [sp, #0x20] + bl FUN_0200C06C + add r4, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _0200C11A + ldr r3, [sp, #0x2c] + lsl r2, r4, #0x14 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x10 + lsl r3, r3, #0x5 + bl FUN_02003108 +_0200C11A: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0200C124 +FUN_0200C124: ; 0x0200C124 + push {r3-r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + str r4, [sp, #0x0] + mov r4, #0x2 + str r4, [sp, #0x4] + ldr r4, [sp, #0x1c] + str r4, [sp, #0x8] + bl FUN_0200C404 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0200C13C +FUN_0200C13C: ; 0x0200C13C + push {r3-r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + str r4, [sp, #0x0] + mov r4, #0x3 + str r4, [sp, #0x4] + ldr r4, [sp, #0x1c] + str r4, [sp, #0x8] + bl FUN_0200C404 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0200C154 +FUN_0200C154: ; 0x0200C154 + push {r4-r7, lr} + sub sp, #0x74 + add r7, r0, #0x0 + ldr r0, [r7, #0x0] + add r6, r1, #0x0 + mov r1, #0x10 + add r5, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + bne _0200C170 + add sp, #0x74 + mov r0, #0x0 + pop {r4-r7, pc} +_0200C170: + ldr r0, [r7, #0x0] + mov r1, #0x8 + bl FUN_02016998 + str r0, [r4, #0x8] + cmp r0, #0x0 + bne _0200C184 + add sp, #0x74 + mov r0, #0x0 + pop {r4-r7, pc} +_0200C184: + ldr r0, [r7, #0x0] + mov r1, #0x24 + bl FUN_02016998 + ldr r1, [r4, #0x8] + str r0, [r1, #0x0] + ldr r0, [r4, #0x8] + ldr r0, [r0, #0x0] + str r0, [r4, #0x4] + ldr r0, [r4, #0x8] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _0200C1AC + cmp r0, #0x0 + beq _0200C1A6 + bl FUN_02016A18 +_0200C1A6: + add sp, #0x74 + mov r0, #0x0 + pop {r4-r7, pc} +_0200C1AC: + mov r1, #0x0 + add r2, r5, #0x0 + add r3, sp, #0x2c +_0200C1B2: + ldr r0, [r2, #0x14] + add r1, r1, #0x1 + add r2, r2, #0x4 + stmia r3!, {r0} + cmp r1, #0x6 + blt _0200C1B2 + ldr r0, [r6, #0x1c] + cmp r0, #0x0 + beq _0200C1CA + ldr r1, [r6, #0x20] + cmp r1, #0x0 + bne _0200C1D4 +_0200C1CA: + mov r0, #0x0 + mvn r0, r0 + str r0, [sp, #0x3c] + str r0, [sp, #0x40] + b _0200C206 +_0200C1D4: + mov r2, #0x0 + ldr r1, [sp, #0x3c] + mvn r2, r2 + cmp r1, r2 + beq _0200C1EC + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C1EC + mov r0, #0x0 + mvn r0, r0 + str r0, [sp, #0x3c] +_0200C1EC: + mov r0, #0x0 + ldr r1, [sp, #0x40] + mvn r0, r0 + cmp r1, r0 + beq _0200C206 + ldr r0, [r6, #0x20] + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C206 + mov r0, #0x0 + mvn r0, r0 + str r0, [sp, #0x40] +_0200C206: + ldr r0, [sp, #0x38] + str r0, [sp, #0x0] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x4] + ldr r0, [sp, #0x40] + str r0, [sp, #0x8] + ldr r0, [r5, #0x30] + str r0, [sp, #0xc] + ldr r0, [r5, #0x2c] + str r0, [sp, #0x10] + ldr r0, [r6, #0xc] + str r0, [sp, #0x14] + ldr r0, [r6, #0x10] + str r0, [sp, #0x18] + ldr r0, [r6, #0x14] + str r0, [sp, #0x1c] + ldr r0, [r6, #0x18] + str r0, [sp, #0x20] + ldr r0, [r6, #0x1c] + str r0, [sp, #0x24] + ldr r0, [r6, #0x20] + str r0, [sp, #0x28] + ldr r0, [r4, #0x4] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x30] + ldr r3, [sp, #0x34] + bl FUN_02008AA4 + ldr r0, [r6, #0x0] + str r0, [sp, #0x44] + ldr r0, [r4, #0x4] + str r0, [sp, #0x48] + mov r0, #0x0 + ldrsh r0, [r5, r0] + cmp r0, #0x0 + ble _0200C260 + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0200C26E +_0200C260: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0200C26E: + blx _ffix + str r0, [sp, #0x4c] + mov r0, #0x2 + ldrsh r0, [r5, r0] + cmp r0, #0x0 + ble _0200C28E + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0200C29C +_0200C28E: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0200C29C: + blx _ffix + str r0, [sp, #0x50] + mov r0, #0x4 + ldrsh r0, [r5, r0] + cmp r0, #0x0 + ble _0200C2BC + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _0200C2CA +_0200C2BC: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_0200C2CA: + blx _ffix + str r0, [sp, #0x54] + ldr r0, [r5, #0x10] + cmp r0, #0x2 + bne _0200C2E0 + mov r0, #0x3 + ldr r1, [sp, #0x50] + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x50] +_0200C2E0: + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [sp, #0x58] + str r0, [sp, #0x5c] + str r0, [sp, #0x60] + mov r1, #0x0 + add r0, sp, #0x2c + strh r1, [r0, #0x38] + ldr r0, [r5, #0x8] + str r0, [sp, #0x68] + ldr r0, [r5, #0x10] + str r0, [sp, #0x6c] + ldr r0, [r7, #0x0] + str r0, [sp, #0x70] + add r0, sp, #0x44 + bl FUN_0201FE94 + str r0, [r4, #0x0] + ldr r0, [r5, #0x30] + str r0, [r4, #0xc] + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0200C328 + bl FUN_020202A0 + add r6, r0, #0x0 + ldrh r1, [r5, #0x6] + ldr r0, [r4, #0x0] + bl FUN_02020130 + ldr r1, [r5, #0xc] + ldr r0, [r4, #0x0] + add r1, r6, r1 + bl FUN_02020248 + b _0200C32C +_0200C328: + bl ErrorHandling +_0200C32C: + add r0, r4, #0x0 + add sp, #0x74 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200C334 +FUN_0200C334: ; 0x0200C334 + push {r3, lr} + ldr r0, [r0, #0x10] + bl FUN_020094F0 + mov r1, #0x0 + bl FUN_02009E54 + pop {r3, pc} + + thumb_func_start FUN_0200C344 +FUN_0200C344: ; 0x0200C344 + push {r4, lr} + ldr r0, [r0, #0x10] + add r4, r2, #0x0 + bl FUN_020094F0 + add r1, r4, #0x0 + bl FUN_02009E88 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200C358 +FUN_0200C358: ; 0x0200C358 + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r3, #0xc] + ldr r1, [r3, #0x24] + ldr r3, _0200C364 ; =FUN_0200C4F4 + bx r3 + .balign 4 +_0200C364: .word FUN_0200C4F4 + + thumb_func_start FUN_0200C368 +FUN_0200C368: ; 0x0200C368 + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r3, #0x10] + ldr r1, [r3, #0x28] + ldr r3, _0200C374 ; =FUN_0200C548 + bx r3 + .balign 4 +_0200C374: .word FUN_0200C548 + + thumb_func_start FUN_0200C378 +FUN_0200C378: ; 0x0200C378 + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r3, #0x14] + ldr r1, [r3, #0x2c] + ldr r3, _0200C384 ; =FUN_0200C4A8 + bx r3 + .balign 4 +_0200C384: .word FUN_0200C4A8 + + thumb_func_start FUN_0200C388 +FUN_0200C388: ; 0x0200C388 + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r3, #0x18] + ldr r1, [r3, #0x30] + ldr r3, _0200C394 ; =FUN_0200C4A8 + bx r3 + .balign 4 +_0200C394: .word FUN_0200C4A8 + + thumb_func_start FUN_0200C398 +FUN_0200C398: ; 0x0200C398 + push {r3-r7, lr} + add r6, r1, #0x0 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0200BC40 + ldr r0, [r6, #0x24] + bl FUN_02009C30 + ldr r0, [r6, #0x28] + bl FUN_02009E28 + ldr r0, [r6, #0x54] + mov r4, #0x0 + cmp r0, #0x0 + ble _0200C3D0 + add r5, r6, #0x0 +_0200C3BA: + ldr r0, [r5, #0x24] + bl FUN_02009448 + ldr r0, [r5, #0xc] + bl FUN_02008E2C + ldr r0, [r6, #0x54] + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r0 + blt _0200C3BA +_0200C3D0: + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_0200BCD0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200C3DC +FUN_0200C3DC: ; 0x0200C3DC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + cmp r0, #0x0 + beq _0200C3EE + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x0] + bl FUN_02009CDC +_0200C3EE: + ldr r0, [r4, #0x0] + bl FUN_0201FFC8 + ldr r0, [r4, #0x8] + bl FUN_02008C80 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200C404 +FUN_0200C404: ; 0x0200C404 + push {r4-r7, lr} + sub sp, #0x14 + add r6, r1, #0x0 + add r7, r0, #0x0 + ldr r0, [sp, #0x2c] + add r5, r6, #0x0 + lsl r4, r0, #0x2 + add r5, #0xc + ldr r0, [r5, r4] + ldr r1, [sp, #0x30] + str r2, [sp, #0xc] + str r3, [sp, #0x10] + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C42A + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0200C42A: + ldr r0, [sp, #0x30] + ldr r1, [sp, #0xc] + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x10] + str r0, [sp, #0x4] + ldr r0, [r7, #0x0] + ldr r3, [sp, #0x28] + str r0, [sp, #0x8] + ldr r0, [r5, r4] + bl FUN_020090AC + add r5, r0, #0x0 + beq _0200C460 + add r0, r6, r4 + ldr r0, [r0, #0x24] + add r1, r5, #0x0 + bl FUN_0200C474 + add r4, r0, #0x0 + cmp r4, #0x1 + beq _0200C45A + bl ErrorHandling +_0200C45A: + add sp, #0x14 + add r0, r4, #0x0 + pop {r4-r7, pc} +_0200C460: + bl ErrorHandling + cmp r5, #0x0 + beq _0200C46E + add sp, #0x14 + mov r0, #0x1 + pop {r4-r7, pc} +_0200C46E: + mov r0, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0200C474 +FUN_0200C474: ; 0x0200C474 + push {r3-r6} + ldr r6, [r0, #0x4] + mov r3, #0x0 + cmp r6, #0x0 + ble _0200C4A0 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 +_0200C482: + ldr r2, [r4, #0x0] + cmp r2, #0x0 + bne _0200C498 + lsl r2, r3, #0x2 + str r1, [r5, r2] + ldr r1, [r0, #0x8] + add r1, r1, #0x1 + str r1, [r0, #0x8] + mov r0, #0x1 + pop {r3-r6} + bx lr +_0200C498: + add r3, r3, #0x1 + add r4, r4, #0x4 + cmp r3, r6 + blt _0200C482 +_0200C4A0: + mov r0, #0x0 + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_0200C4A8 +FUN_0200C4A8: ; 0x0200C4A8 + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x4] + add r7, r2, #0x0 + mov r6, #0x0 + cmp r0, #0x0 + ble _0200C4F0 + add r4, r6, #0x0 +_0200C4BA: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _0200C4E6 + bl FUN_02009530 + cmp r0, r7 + bne _0200C4E6 + ldr r1, [r5, #0x0] + lsl r4, r6, #0x2 + ldr r0, [sp, #0x0] + ldr r1, [r1, r4] + bl FUN_02009490 + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r1, [r0, r4] + ldr r0, [r5, #0x8] + sub r0, r0, #0x1 + str r0, [r5, #0x8] + mov r0, #0x1 + pop {r3-r7, pc} +_0200C4E6: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _0200C4BA +_0200C4F0: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0200C4F4 +FUN_0200C4F4: ; 0x0200C4F4 + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x4] + add r7, r2, #0x0 + mov r6, #0x0 + cmp r0, #0x0 + ble _0200C542 + add r4, r6, #0x0 +_0200C506: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _0200C538 + bl FUN_02009530 + cmp r0, r7 + bne _0200C538 + add r0, r7, #0x0 + bl FUN_0201D324 + ldr r1, [r5, #0x0] + lsl r4, r6, #0x2 + ldr r0, [sp, #0x0] + ldr r1, [r1, r4] + bl FUN_02009490 + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r1, [r0, r4] + ldr r0, [r5, #0x8] + sub r0, r0, #0x1 + str r0, [r5, #0x8] + mov r0, #0x1 + pop {r3-r7, pc} +_0200C538: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _0200C506 +_0200C542: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200C548 +FUN_0200C548: ; 0x0200C548 + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x4] + add r7, r2, #0x0 + mov r6, #0x0 + cmp r0, #0x0 + ble _0200C596 + add r4, r6, #0x0 +_0200C55A: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _0200C58C + bl FUN_02009530 + cmp r0, r7 + bne _0200C58C + add r0, r7, #0x0 + bl FUN_0201E1C8 + ldr r1, [r5, #0x0] + lsl r4, r6, #0x2 + ldr r0, [sp, #0x0] + ldr r1, [r1, r4] + bl FUN_02009490 + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r1, [r0, r4] + ldr r0, [r5, #0x8] + sub r0, r0, #0x1 + str r0, [r5, #0x8] + mov r0, #0x1 + pop {r3-r7, pc} +_0200C58C: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _0200C55A +_0200C596: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200C59C +FUN_0200C59C: ; 0x0200C59C + ldr r3, _0200C5A4 ; =FUN_020201E4 + mov r1, #0x1 + lsl r1, r1, #0xc + bx r3 + .balign 4 +_0200C5A4: .word FUN_020201E4 + + thumb_func_start FUN_0200C5A8 +FUN_0200C5A8: ; 0x0200C5A8 + ldr r3, _0200C5B0 ; =0x0200C59D + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C5B0: .word 0x0200C59D + + thumb_func_start FUN_0200C5B4 +FUN_0200C5B4: ; 0x0200C5B4 + ldr r3, _0200C5BC ; =FUN_020201E4 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C5BC: .word FUN_020201E4 + + thumb_func_start FUN_0200C5C0 +FUN_0200C5C0: ; 0x0200C5C0 + ldr r3, _0200C5C8 ; =FUN_02020130 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C5C8: .word FUN_02020130 + + thumb_func_start FUN_0200C5CC +FUN_0200C5CC: ; 0x0200C5CC + ldr r3, _0200C5D4 ; =FUN_020201DC + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C5D4: .word FUN_020201DC + + thumb_func_start FUN_0200C5D8 +FUN_0200C5D8: ; 0x0200C5D8 + ldr r3, _0200C5DC ; =FUN_020200BC + bx r3 + .balign 4 +_0200C5DC: .word FUN_020200BC + + thumb_func_start FUN_0200C5E0 +FUN_0200C5E0: ; 0x0200C5E0 + ldr r3, _0200C5E8 ; =FUN_0200C5D8 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C5E8: .word FUN_0200C5D8 + + thumb_func_start FUN_0200C5EC +FUN_0200C5EC: ; 0x0200C5EC + ldr r3, _0200C5F0 ; =FUN_020200D8 + bx r3 + .balign 4 +_0200C5F0: .word FUN_020200D8 + + thumb_func_start FUN_0200C5F4 +FUN_0200C5F4: ; 0x0200C5F4 + ldr r3, _0200C5FC ; =FUN_0200C5EC + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C5FC: .word FUN_0200C5EC + + thumb_func_start FUN_0200C600 +FUN_0200C600: ; 0x0200C600 + ldr r3, _0200C604 ; =FUN_02020388 + bx r3 + .balign 4 +_0200C604: .word FUN_02020388 + + thumb_func_start FUN_0200C608 +FUN_0200C608: ; 0x0200C608 + ldr r3, _0200C610 ; =FUN_0200C600 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C610: .word FUN_0200C600 + + thumb_func_start FUN_0200C614 +FUN_0200C614: ; 0x0200C614 + ldr r3, _0200C618 ; =FUN_02020208 + bx r3 + .balign 4 +_0200C618: .word FUN_02020208 + + thumb_func_start FUN_0200C61C +FUN_0200C61C: ; 0x0200C61C + ldr r3, _0200C624 ; =0x0200C615 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C624: .word 0x0200C615 + + thumb_func_start FUN_0200C628 +FUN_0200C628: ; 0x0200C628 + ldr r3, _0200C62C ; =FUN_0202022C + bx r3 + .balign 4 +_0200C62C: .word FUN_0202022C + + thumb_func_start FUN_0200C630 +FUN_0200C630: ; 0x0200C630 + ldr r3, _0200C638 ; =FUN_0200C628 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C638: .word FUN_0200C628 + + thumb_func_start FUN_0200C63C +FUN_0200C63C: ; 0x0200C63C + ldr r3, _0200C640 ; =FUN_020200A0 + bx r3 + .balign 4 +_0200C640: .word FUN_020200A0 + + thumb_func_start FUN_0200C644 +FUN_0200C644: ; 0x0200C644 + ldr r3, _0200C64C ; =FUN_0200C63C + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C64C: .word FUN_0200C63C + + thumb_func_start FUN_0200C650 +FUN_0200C650: ; 0x0200C650 + ldr r3, _0200C654 ; =FUN_02020128 + bx r3 + .balign 4 +_0200C654: .word FUN_02020128 + + thumb_func_start FUN_0200C658 +FUN_0200C658: ; 0x0200C658 + ldr r3, _0200C660 ; =FUN_0200C650 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C660: .word FUN_0200C650 + + thumb_func_start FUN_0200C664 +FUN_0200C664: ; 0x0200C664 + ldr r3, _0200C668 ; =FUN_02020248 + bx r3 + .balign 4 +_0200C668: .word FUN_02020248 + + thumb_func_start FUN_0200C66C +FUN_0200C66C: ; 0x0200C66C + ldr r3, _0200C674 ; =FUN_0200C664 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C674: .word FUN_0200C664 + + thumb_func_start FUN_0200C678 +FUN_0200C678: ; 0x0200C678 + ldr r3, _0200C67C ; =FUN_020202A8 + bx r3 + .balign 4 +_0200C67C: .word FUN_020202A8 + + thumb_func_start FUN_0200C680 +FUN_0200C680: ; 0x0200C680 + ldr r3, _0200C688 ; =FUN_0200C678 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C688: .word FUN_0200C678 + + thumb_func_start FUN_0200C68C +FUN_0200C68C: ; 0x0200C68C + ldr r3, _0200C694 ; =FUN_02020300 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C694: .word FUN_02020300 + + thumb_func_start FUN_0200C698 +FUN_0200C698: ; 0x0200C698 + ldr r3, _0200C6A0 ; =FUN_02020238 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bx r3 + .balign 4 +_0200C6A0: .word FUN_02020238 + + thumb_func_start FUN_0200C6A4 +FUN_0200C6A4: ; 0x0200C6A4 + ldr r3, _0200C6AC ; =0x02020241 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C6AC: .word 0x02020241 + + thumb_func_start FUN_0200C6B0 +FUN_0200C6B0: ; 0x0200C6B0 + ldr r3, _0200C6B8 ; =FUN_0200C698 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C6B8: .word FUN_0200C698 + + thumb_func_start FUN_0200C6BC +FUN_0200C6BC: ; 0x0200C6BC + ldr r3, _0200C6C0 ; =FUN_02020310 + bx r3 + .balign 4 +_0200C6C0: .word FUN_02020310 + + thumb_func_start FUN_0200C6C4 +FUN_0200C6C4: ; 0x0200C6C4 + ldr r3, _0200C6CC ; =FUN_0200C6BC + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C6CC: .word FUN_0200C6BC + + thumb_func_start FUN_0200C6D0 +FUN_0200C6D0: ; 0x0200C6D0 + ldr r3, _0200C6D4 ; =FUN_0202032C + bx r3 + .balign 4 +_0200C6D4: .word FUN_0202032C + + thumb_func_start FUN_0200C6D8 +FUN_0200C6D8: ; 0x0200C6D8 + ldr r3, _0200C6E0 ; =FUN_0200C6D0 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C6E0: .word FUN_0200C6D0 + + thumb_func_start FUN_0200C6E4 +FUN_0200C6E4: ; 0x0200C6E4 + push {r3-r4, lr} + sub sp, #0xc + lsl r1, r1, #0xc + str r1, [sp, #0x0] + lsl r1, r2, #0xc + add r4, r0, #0x0 + str r1, [sp, #0x4] + bl FUN_02020380 + cmp r0, #0x2 + bne _0200C704 + mov r0, #0x3 + ldr r1, [sp, #0x4] + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x4] +_0200C704: + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02020044 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0200C714 +FUN_0200C714: ; 0x0200C714 + ldr r3, _0200C71C ; =FUN_0200C6E4 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C71C: .word FUN_0200C6E4 + + thumb_func_start FUN_0200C720 +FUN_0200C720: ; 0x0200C720 + push {r4-r5, lr} + sub sp, #0xc + lsl r1, r1, #0xc + str r1, [sp, #0x0] + lsl r1, r2, #0xc + add r5, r0, #0x0 + add r4, r3, #0x0 + str r1, [sp, #0x4] + bl FUN_02020380 + cmp r0, #0x2 + bne _0200C73E + ldr r0, [sp, #0x4] + add r0, r0, r4 + str r0, [sp, #0x4] +_0200C73E: + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02020044 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0200C750 +FUN_0200C750: ; 0x0200C750 + push {r3, lr} + ldr r0, [r0, #0x0] + bl FUN_0200C720 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200C75C +FUN_0200C75C: ; 0x0200C75C + push {r3-r7, lr} + add r7, r0, #0x0 + add r6, r1, #0x0 + add r5, r2, #0x0 + bl FUN_0202011C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r6, #0x0] + add r0, r7, #0x0 + bl FUN_02020380 + cmp r0, #0x2 + ldr r1, [r4, #0x4] + bne _0200C794 + mov r0, #0x3 + lsl r0, r0, #0x12 + sub r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + pop {r3-r7, pc} +_0200C794: + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + pop {r3-r7, pc} + + thumb_func_start FUN_0200C7A0 +FUN_0200C7A0: ; 0x0200C7A0 + ldr r3, _0200C7A8 ; =FUN_0200C75C + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C7A8: .word FUN_0200C75C + + thumb_func_start FUN_0200C7AC +FUN_0200C7AC: ; 0x0200C7AC + push {r3-r7, lr} + str r0, [sp, #0x0] + add r6, r1, #0x0 + add r5, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0202011C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r6, #0x0] + ldr r0, [sp, #0x0] + bl FUN_02020380 + cmp r0, #0x2 + bne _0200C7E2 + ldr r0, [r4, #0x4] + sub r1, r0, r7 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + pop {r3-r7, pc} +_0200C7E2: + ldr r1, [r4, #0x4] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + pop {r3-r7, pc} + + thumb_func_start FUN_0200C7F0 +FUN_0200C7F0: ; 0x0200C7F0 + push {r3, lr} + ldr r0, [r0, #0x0] + bl FUN_0200C7AC + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200C7FC +FUN_0200C7FC: ; 0x0200C7FC + push {r3-r6, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0202011C + ldr r2, [r0, #0x0] + lsl r1, r5, #0xc + add r1, r2, r1 + str r1, [sp, #0x0] + ldr r2, [r0, #0x4] + lsl r1, r4, #0xc + add r1, r2, r1 + str r1, [sp, #0x4] + ldr r0, [r0, #0x8] + add r1, sp, #0x0 + str r0, [sp, #0x8] + add r0, r6, #0x0 + bl FUN_02020044 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0200C82C +FUN_0200C82C: ; 0x0200C82C + ldr r3, _0200C834 ; =FUN_0200C7FC + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C834: .word FUN_0200C7FC + + thumb_func_start FUN_0200C838 +FUN_0200C838: ; 0x0200C838 + ldr r3, _0200C83C ; =FUN_020200EC + bx r3 + .balign 4 +_0200C83C: .word FUN_020200EC + + thumb_func_start FUN_0200C840 +FUN_0200C840: ; 0x0200C840 + ldr r3, _0200C848 ; =0x0200C839 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C848: .word 0x0200C839 + + thumb_func_start FUN_0200C84C +FUN_0200C84C: ; 0x0200C84C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02020120 + add r4, r0, #0x0 + ldr r0, _0200C880 ; =0x45800000 + add r1, r6, #0x0 + blx _fmul + blx _ffix + str r0, [r4, #0x0] + ldr r0, _0200C880 ; =0x45800000 + add r1, r7, #0x0 + blx _fmul + blx _ffix + str r0, [r4, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02020064 + pop {r3-r7, pc} + .balign 4 +_0200C880: .word 0x45800000 + + thumb_func_start FUN_0200C884 +FUN_0200C884: ; 0x0200C884 + ldr r3, _0200C88C ; =FUN_0200C84C + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C88C: .word FUN_0200C84C + + thumb_func_start FUN_0200C890 +FUN_0200C890: ; 0x0200C890 + ldr r3, _0200C894 ; =FUN_02020088 + bx r3 + .balign 4 +_0200C894: .word FUN_02020088 + + thumb_func_start FUN_0200C898 +FUN_0200C898: ; 0x0200C898 + ldr r3, _0200C8A0 ; =FUN_0200C890 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C8A0: .word FUN_0200C890 + + thumb_func_start FUN_0200C8A4 +FUN_0200C8A4: ; 0x0200C8A4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + bl FUN_02020124 + add r0, r0, r5 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, r4, #0x0 + bl FUN_02020088 + pop {r3-r5, pc} + + thumb_func_start FUN_0200C8BC +FUN_0200C8BC: ; 0x0200C8BC + ldr r3, _0200C8C4 ; =FUN_0200C8A4 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C8C4: .word FUN_0200C8A4 + + thumb_func_start FUN_0200C8C8 +FUN_0200C8C8: ; 0x0200C8C8 + ldr r3, _0200C8CC ; =FUN_02020100 + bx r3 + .balign 4 +_0200C8CC: .word FUN_02020100 + + thumb_func_start FUN_0200C8D0 +FUN_0200C8D0: ; 0x0200C8D0 + ldr r3, _0200C8D8 ; =FUN_0200C8C8 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C8D8: .word FUN_0200C8C8 + + thumb_func_start FUN_0200C8DC +FUN_0200C8DC: ; 0x0200C8DC + push {lr} + sub sp, #0xc + lsl r1, r1, #0xc + str r1, [sp, #0x0] + lsl r1, r2, #0xc + str r1, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + ldr r0, [r0, #0x0] + add r1, sp, #0x0 + bl FUN_02020054 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0200C8F8 +FUN_0200C8F8: ; 0x0200C8F8 + ldr r3, _0200C900 ; =0x02020359 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C900: .word 0x02020359 + + thumb_func_start FUN_0200C904 +FUN_0200C904: ; 0x0200C904 + ldr r3, _0200C908 ; =FUN_02020398 + bx r3 + .balign 4 +_0200C908: .word FUN_02020398 + + thumb_func_start FUN_0200C90C +FUN_0200C90C: ; 0x0200C90C + ldr r3, _0200C914 ; =FUN_0200C904 + ldr r0, [r0, #0x0] + bx r3 + nop +_0200C914: .word FUN_0200C904 + + thumb_func_start FUN_0200C918 +FUN_0200C918: ; 0x0200C918 + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x28] + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C936 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0200C936: + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r2, r7, #0x0 + str r0, [sp, #0x8] + ldr r0, [r4, #0xc] + bl FUN_02008F34 + add r5, r0, #0x0 + beq _0200C964 + bl FUN_02009AC4 + ldr r0, [r4, #0x24] + add r1, r5, #0x0 + bl FUN_0200C474 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0200C964: + bl ErrorHandling + cmp r5, #0x0 + beq _0200C972 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0200C972: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0200C978 +FUN_0200C978: ; 0x0200C978 + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x28] + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0200945C + cmp r0, #0x0 + bne _0200C996 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0200C996: + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r2, r7, #0x0 + str r0, [sp, #0x8] + ldr r0, [r4, #0xc] + bl FUN_02008F34 + add r5, r0, #0x0 + beq _0200C9C4 + bl FUN_02009B78 + ldr r0, [r4, #0x24] + add r1, r5, #0x0 + bl FUN_0200C474 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0200C9C4: + bl ErrorHandling + cmp r5, #0x0 + beq _0200C9D2 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0200C9D2: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0200C9D8 +FUN_0200C9D8: ; 0x0200C9D8 + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r1, [sp, #0x24] + add r7, r2, #0x0 + str r3, [sp, #0x8] + bl FUN_020094F0 + add r6, r0, #0x0 + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [r4, #0xc] + add r2, r7, #0x0 + bl FUN_020090FC + add r0, r6, #0x0 + bl FUN_02009BE8 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0200CA0C +FUN_0200CA0C: ; 0x0200CA0C + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x10] + ldr r1, [sp, #0x24] + add r7, r2, #0x0 + str r3, [sp, #0x8] + bl FUN_020094F0 + add r6, r0, #0x0 + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [r4, #0x10] + add r2, r7, #0x0 + bl FUN_02009168 + add r0, r6, #0x0 + bl FUN_02009DE0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0200CA40 +FUN_0200CA40: ; 0x0200CA40 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0200CA44 +FUN_0200CA44: ; 0x0200CA44 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0200CA5C ; =0x021C48B8 + add r4, r1, #0x0 + add r3, r2, #0x0 + ldr r0, [r0, #0x18] + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0201B60C + pop {r3-r5, pc} + nop +_0200CA5C: .word 0x021C48B8 + + thumb_func_start FUN_0200CA60 +FUN_0200CA60: ; 0x0200CA60 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0200CA78 ; =0x021C48B8 + add r4, r1, #0x0 + add r3, r2, #0x0 + ldr r0, [r0, #0x1c] + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0201B60C + pop {r3-r5, pc} + nop +_0200CA78: .word 0x021C48B8 + + thumb_func_start FUN_0200CA7C +FUN_0200CA7C: ; 0x0200CA7C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0200CA94 ; =0x021C48B8 + add r4, r1, #0x0 + add r3, r2, #0x0 + ldr r0, [r0, #0x24] + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0201B60C + pop {r3-r5, pc} + nop +_0200CA94: .word 0x021C48B8 + + thumb_func_start FUN_0200CA98 +FUN_0200CA98: ; 0x0200CA98 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0200CAB0 ; =0x021C48B8 + add r4, r1, #0x0 + add r3, r2, #0x0 + ldr r0, [r0, #0x20] + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0201B60C + pop {r3-r5, pc} + nop +_0200CAB0: .word 0x021C48B8 + + thumb_func_start FUN_0200CAB4 +FUN_0200CAB4: ; 0x0200CAB4 + ldr r3, _0200CAB8 ; =FUN_0201B6A0 + bx r3 + .balign 4 +_0200CAB8: .word FUN_0201B6A0 + + thumb_func_start FUN_0200CABC +FUN_0200CABC: ; 0x0200CABC + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r3, #0x0 + str r2, [sp, #0x0] + bne _0200CAE2 + mov r1, #0x0 + str r1, [sp, #0x4] + ldr r0, [sp, #0x20] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + mov r0, #0x26 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl FUN_0200687C + add sp, #0x10 + pop {r3-r5, pc} +_0200CAE2: + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [sp, #0x20] + mov r1, #0x1 + str r0, [sp, #0xc] + mov r0, #0x26 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl FUN_0200687C + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_0200CAFC +FUN_0200CAFC: ; 0x0200CAFC + mov r0, #0x18 + bx lr + + thumb_func_start FUN_0200CB00 +FUN_0200CB00: ; 0x0200CB00 + push {r4-r6, lr} + sub sp, #0x10 + add r6, r0, #0x0 + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + add r5, r1, #0x0 + add r4, r3, #0x0 + cmp r0, #0x0 + beq _0200CB16 + mov r1, #0x1 + b _0200CB18 +_0200CB16: + mov r1, #0x0 +_0200CB18: + str r2, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [sp, #0x24] + add r2, r6, #0x0 + str r0, [sp, #0xc] + mov r0, #0x26 + add r3, r5, #0x0 + bl FUN_0200687C + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + cmp r0, #0x2 + bne _0200CB3A + mov r1, #0x2d + b _0200CB3C +_0200CB3A: + mov r1, #0x18 +_0200CB3C: + cmp r5, #0x4 + bhs _0200CB56 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + mov r2, #0x0 + str r0, [sp, #0x4] + mov r0, #0x26 + lsl r3, r4, #0x5 + bl FUN_02006930 + add sp, #0x10 + pop {r4-r6, pc} +_0200CB56: + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + mov r2, #0x4 + str r0, [sp, #0x4] + mov r0, #0x26 + lsl r3, r4, #0x5 + bl FUN_02006930 + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_0200CB6C +FUN_0200CB6C: ; 0x0200CB6C + push {r4-r7, lr} + sub sp, #0x24 + str r1, [sp, #0x14] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r2, [sp, #0x1c] + ldr r5, [sp, #0x40] + sub r7, r2, #0x1 + ldr r2, [sp, #0x18] + str r0, [sp, #0x10] + sub r6, r2, #0x1 + lsl r2, r7, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + lsl r3, r6, #0x18 + str r5, [sp, #0xc] + add r2, sp, #0x28 + ldrh r2, [r2, #0x1c] + lsr r3, r3, #0x18 + bl FUN_02018540 + add r1, sp, #0x28 + ldrh r4, [r1, #0x1c] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldrb r0, [r1, #0x10] + add r2, r4, #0x1 + lsl r2, r2, #0x10 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x18] + lsr r2, r2, #0x10 + bl FUN_02018540 + add r0, sp, #0x28 + ldrb r1, [r0, #0x10] + ldr r0, [sp, #0x18] + add r2, r4, #0x2 + add r0, r0, r1 + str r0, [sp, #0x20] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x20] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r2, r4, #0x3 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, sp, #0x28 + ldrb r0, [r0, #0x14] + lsl r2, r2, #0x10 + lsl r3, r6, #0x18 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, sp, #0x28 + ldrb r0, [r0, #0x14] + add r2, r4, #0x5 + lsl r2, r2, #0x10 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, sp, #0x28 + ldrb r1, [r0, #0x14] + ldr r0, [sp, #0x1c] + add r2, r4, #0x6 + add r7, r0, r1 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r6, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r0, sp, #0x28 + ldrb r0, [r0, #0x10] + add r2, r4, #0x7 + lsl r2, r2, #0x10 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x18] + lsr r2, r2, #0x10 + bl FUN_02018540 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x20] + str r5, [sp, #0xc] + add r4, #0x8 + lsl r2, r4, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200CCA4 +FUN_0200CCA4: ; 0x0200CCA4 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0201AB08 + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_0201AB14 + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_0201AB18 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_0201AB0C + str r0, [sp, #0x1c] + add r0, r5, #0x0 + bl FUN_0201AB10 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x14] + str r1, [sp, #0x0] + str r0, [sp, #0x4] + str r7, [sp, #0x8] + str r6, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x10] + ldr r3, [sp, #0x18] + bl FUN_0200CB6C + cmp r4, #0x0 + bne _0200CCF4 + add r0, r5, #0x0 + bl FUN_020191D0 +_0200CCF4: + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_0200CCF8 +FUN_0200CCF8: ; 0x0200CCF8 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201AB08 + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_0201AB14 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB18 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB0C + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_0201AB10 + sub r1, r7, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + ldr r1, [sp, #0x14] + add r0, r0, #0x2 + add r1, r1, #0x2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r0, r0, #0x18 + str r1, [sp, #0x4] + lsr r0, r0, #0x18 + sub r3, r6, #0x1 + lsl r3, r3, #0x18 + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x10] + lsr r3, r3, #0x18 + bl FUN_02018540 + cmp r4, #0x0 + bne _0200CD5A + add r0, r5, #0x0 + bl FUN_02019570 +_0200CD5A: + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200CD60 +FUN_0200CD60: ; 0x0200CD60 + add r0, r0, #0x2 + bx lr + + thumb_func_start FUN_0200CD64 +FUN_0200CD64: ; 0x0200CD64 + add r0, #0x19 + bx lr + + thumb_func_start FUN_0200CD68 +FUN_0200CD68: ; 0x0200CD68 + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x10] + add r0, sp, #0x18 + ldrb r7, [r0, #0x10] + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r7, #0x0 + add r4, r3, #0x0 + bl FUN_0200CD60 + add r1, r0, #0x0 + str r6, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x10] + str r0, [sp, #0xc] + mov r0, #0x26 + add r3, r5, #0x0 + bl FUN_0200687C + cmp r5, #0x4 + bhs _0200CDB8 + add r0, r7, #0x0 + bl FUN_0200CD64 + add r1, r0, #0x0 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + mov r2, #0x0 + str r0, [sp, #0x4] + mov r0, #0x26 + lsl r3, r4, #0x5 + bl FUN_02006930 + add sp, #0x14 + pop {r4-r7, pc} +_0200CDB8: + add r0, r7, #0x0 + bl FUN_0200CD64 + add r1, r0, #0x0 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + mov r2, #0x4 + str r0, [sp, #0x4] + mov r0, #0x26 + lsl r3, r4, #0x5 + bl FUN_02006930 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200CDD8 +FUN_0200CDD8: ; 0x0200CDD8 + push {r3-r7, lr} + sub sp, #0x30 + str r1, [sp, #0x10] + str r2, [sp, #0x14] + str r3, [sp, #0x18] + ldr r2, [sp, #0x4c] + add r7, r0, #0x0 + str r2, [sp, #0x4c] + ldr r2, [sp, #0x18] + ldr r5, [sp, #0x50] + sub r6, r2, #0x1 + ldr r2, [sp, #0x14] + sub r2, r2, #0x2 + str r2, [sp, #0x28] + lsl r2, r6, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + ldr r3, [sp, #0x28] + str r5, [sp, #0xc] + add r2, sp, #0x38 + lsl r3, r3, #0x18 + ldrh r2, [r2, #0x1c] + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x14] + sub r0, r0, #0x1 + str r0, [sp, #0x24] + add r0, sp, #0x38 + ldrh r4, [r0, #0x1c] + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x24] + str r5, [sp, #0xc] + add r2, r4, #0x1 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r0, sp, #0x38 + ldrb r0, [r0, #0x10] + add r2, r4, #0x2 + lsl r2, r2, #0x10 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + bl FUN_02018540 + add r0, sp, #0x38 + ldrb r1, [r0, #0x10] + ldr r0, [sp, #0x14] + add r2, r4, #0x3 + add r0, r0, r1 + str r0, [sp, #0x2c] + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x2c] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x2c] + add r2, r4, #0x4 + add r0, r0, #0x1 + str r0, [sp, #0x20] + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x20] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x2c] + add r2, r4, #0x5 + add r0, r0, #0x2 + str r0, [sp, #0x1c] + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x1c] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x28] + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x4c] + add r2, r4, #0x6 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x24] + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x4c] + add r2, r4, #0x7 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x18] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x4c] + ldr r3, [sp, #0x2c] + str r0, [sp, #0x8] + str r5, [sp, #0xc] + add r2, #0x9 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x18] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x4c] + ldr r3, [sp, #0x20] + str r0, [sp, #0x8] + str r5, [sp, #0xc] + add r2, #0xa + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x18] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x4c] + ldr r3, [sp, #0x1c] + str r0, [sp, #0x8] + str r5, [sp, #0xc] + add r2, #0xb + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r2, r4, #0x0 + ldr r3, [sp, #0x28] + add r2, #0xc + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x4c] + lsr r2, r2, #0x10 + add r6, r1, r0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + ldr r3, [sp, #0x24] + str r5, [sp, #0xc] + add r2, #0xd + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r0, sp, #0x38 + ldrb r0, [r0, #0x10] + add r2, r4, #0x0 + add r2, #0xe + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + ldr r1, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + ldr r3, [sp, #0x2c] + str r5, [sp, #0xc] + add r2, #0xf + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + ldr r3, [sp, #0x20] + str r5, [sp, #0xc] + add r2, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x1c] + str r5, [sp, #0xc] + add r4, #0x11 + lsl r2, r4, #0x10 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x10] + add r0, r7, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D06C +FUN_0200D06C: ; 0x0200D06C + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0201AB08 + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_0201AB14 + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_0201AB18 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_0201AB0C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB10 + str r7, [sp, #0x0] + str r0, [sp, #0x4] + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + bl FUN_0200CDD8 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D0BC +FUN_0200D0BC: ; 0x0200D0BC + push {r4-r6, lr} + add r6, r2, #0x0 + add r4, r1, #0x0 + add r1, r6, #0x0 + add r2, r3, #0x0 + add r5, r0, #0x0 + bl FUN_0200D06C + cmp r4, #0x0 + bne _0200D0D6 + add r0, r5, #0x0 + bl FUN_020191D0 +_0200D0D6: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0200D18C + pop {r4-r6, pc} + + thumb_func_start FUN_0200D0E0 +FUN_0200D0E0: ; 0x0200D0E0 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201AB08 + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_0201AB14 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB18 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB0C + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_0201AB10 + sub r1, r7, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + ldr r1, [sp, #0x14] + add r0, r0, #0x2 + add r1, r1, #0x5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r0, r0, #0x18 + str r1, [sp, #0x4] + lsr r0, r0, #0x18 + sub r3, r6, #0x2 + lsl r3, r3, #0x18 + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x10] + lsr r3, r3, #0x18 + bl FUN_02018540 + cmp r4, #0x0 + bne _0200D142 + add r0, r5, #0x0 + bl FUN_02019570 +_0200D142: + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D148 +FUN_0200D148: ; 0x0200D148 + push {r4-r5, lr} + sub sp, #0x24 + add r5, r1, #0x0 + str r0, [sp, #0x1c] + add r1, sp, #0x14 + strh r3, [r1, #0xc] + add r4, r2, #0x0 + add r0, sp, #0x20 + ldrh r2, [r0, #0x10] + add r3, r4, #0x0 + strh r2, [r1, #0xe] + ldr r2, [sp, #0x34] + str r2, [sp, #0x14] + ldrh r2, [r0, #0x18] + strh r2, [r1, #0x4] + ldrh r2, [r0, #0x1c] + strh r2, [r1, #0x6] + ldrh r1, [r0, #0x20] + add r2, r5, #0x0 + str r1, [sp, #0x0] + ldrh r1, [r0, #0x24] + str r1, [sp, #0x4] + ldrh r1, [r0, #0x28] + str r1, [sp, #0x8] + ldrh r0, [r0, #0x2c] + add r1, sp, #0x14 + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + add r0, sp, #0x1c + bl FUN_02018A60 + add sp, #0x24 + pop {r4-r5, pc} + + thumb_func_start FUN_0200D18C +FUN_0200D18C: ; 0x0200D18C + push {r3-r7, lr} + sub sp, #0x40 + str r1, [sp, #0x24] + str r0, [sp, #0x20] + ldr r0, [r0, #0x0] + bl FUN_02016BB8 + add r6, r0, #0x0 + ldr r0, [sp, #0x20] + bl FUN_0201AB08 + mov r1, #0x6 + str r0, [sp, #0x28] + add r0, r6, #0x0 + lsl r1, r1, #0x6 + bl FUN_02016998 + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + bl FUN_020187B0 + add r4, r0, #0x0 + str r6, [sp, #0x0] + mov r0, #0x26 + mov r1, #0x16 + mov r2, #0x0 + add r3, sp, #0x3c + bl FUN_02006BB0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x3c] + mov r7, #0x0 + ldr r0, [r0, #0x14] + str r0, [sp, #0x30] + ldr r0, [sp, #0x24] + add r0, #0xa + lsl r0, r0, #0x5 + str r0, [sp, #0x34] + ldr r0, [sp, #0x24] + add r0, #0xb + lsl r0, r0, #0x5 + str r0, [sp, #0x38] +_0200D1E0: + ldr r1, [sp, #0x34] + lsl r6, r7, #0x7 + add r0, r5, r6 + add r1, r4, r1 + mov r2, #0x20 + blx memcpy + add r0, r6, #0x0 + ldr r1, [sp, #0x38] + add r0, #0x20 + add r0, r5, r0 + add r1, r4, r1 + mov r2, #0x20 + blx memcpy + add r0, r6, #0x0 + ldr r1, [sp, #0x34] + add r0, #0x40 + add r0, r5, r0 + add r1, r4, r1 + mov r2, #0x20 + blx memcpy + ldr r1, [sp, #0x38] + add r6, #0x60 + add r0, r5, r6 + add r1, r4, r1 + mov r2, #0x20 + blx memcpy + add r0, r7, #0x1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, #0x3 + blo _0200D1E0 + mov r1, #0x30 + str r1, [sp, #0x0] + str r5, [sp, #0x4] + mov r3, #0xc + str r3, [sp, #0x8] + str r1, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + mov r2, #0x0 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + str r1, [sp, #0x1c] + ldr r0, [sp, #0x30] + mov r1, #0x4 + bl FUN_0200D148 + ldr r0, [sp, #0x24] + mov r3, #0x6 + add r0, #0x12 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x28] + ldr r0, [r0, #0x0] + add r2, r5, #0x0 + lsl r3, r3, #0x6 + bl FUN_02017E14 + ldr r0, [sp, #0x24] + bl FUN_02002840 + ldr r0, [sp, #0x2c] + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_02016A18 + add sp, #0x40 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D274 +FUN_0200D274: ; 0x0200D274 + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + add r0, sp, #0x18 + ldrb r0, [r0, #0x10] + add r7, r2, #0x0 + add r5, r3, #0x0 + bl FUN_0200CD60 + add r1, r0, #0x0 + ldr r0, [sp, #0x2c] + mov r2, #0x0 + str r0, [sp, #0x0] + mov r0, #0x26 + add r3, sp, #0x10 + bl FUN_02006BB0 + str r0, [sp, #0xc] + mov r1, #0x9 + ldr r0, [sp, #0x2c] + lsl r1, r1, #0x6 + bl FUN_02016998 + ldr r1, [sp, #0x10] + mov r2, #0x9 + ldr r1, [r1, #0x14] + lsl r2, r2, #0x6 + add r4, r0, #0x0 + blx memcpy + mov r0, #0x9 + mov r3, #0x0 + lsl r0, r0, #0x6 + mov r1, #0xf +_0200D2BA: + ldrb r2, [r4, r3] + lsl r6, r2, #0x14 + and r2, r1 + lsl r2, r2, #0x18 + lsr r6, r6, #0x18 + lsr r2, r2, #0x18 + cmp r6, #0x0 + bne _0200D2CC + add r6, r5, #0x0 +_0200D2CC: + cmp r2, #0x0 + bne _0200D2D2 + add r2, r5, #0x0 +_0200D2D2: + lsl r6, r6, #0x4 + orr r2, r6 + strb r2, [r4, r3] + add r3, r3, #0x1 + cmp r3, r0 + blo _0200D2BA + str r7, [sp, #0x0] + mov r3, #0x9 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x8] + add r2, r4, #0x0 + lsl r3, r3, #0x6 + bl FUN_02017E14 + ldr r0, [sp, #0xc] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D300 +FUN_0200D300: ; 0x0200D300 + push {r4-r7, lr} + sub sp, #0x1c + str r0, [sp, #0x10] + add r5, r2, #0x0 + mov r0, #0xf + add r6, r1, #0x0 + add r7, r3, #0x0 + str r5, [sp, #0x0] + lsl r0, r0, #0x6 + str r0, [sp, #0x4] + mov r1, #0x0 + ldr r4, [sp, #0x38] + str r1, [sp, #0x8] + ldr r2, [sp, #0x10] + mov r0, #0x24 + add r3, r6, #0x0 + str r4, [sp, #0xc] + bl FUN_0200687C + mov r0, #0x24 + mov r1, #0x1 + add r2, r4, #0x0 + bl LoadFromNarc_2 + add r1, sp, #0x18 + str r0, [sp, #0x14] + blx FUN_020B0138 + add r2, sp, #0x20 + ldr r1, [sp, #0x18] + ldrb r2, [r2, #0x10] + lsl r3, r7, #0x15 + ldr r1, [r1, #0xc] + lsl r2, r2, #0x5 + add r1, r1, r2 + add r0, r6, #0x0 + mov r2, #0x20 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + ldr r1, [sp, #0x14] + add r0, r4, #0x0 + bl FUN_02016A8C + add r0, sp, #0x20 + ldrb r3, [r0, #0x10] + cmp r3, #0x1 + bhi _0200D374 + ldrh r0, [r0, #0x14] + add r5, #0x1e + lsl r2, r5, #0x10 + str r0, [sp, #0x0] + ldr r0, [sp, #0x10] + add r1, r6, #0x0 + lsr r2, r2, #0x10 + str r4, [sp, #0x4] + bl FUN_0200D378 +_0200D374: + add sp, #0x1c + pop {r4-r7, pc} + + thumb_func_start FUN_0200D378 +FUN_0200D378: ; 0x0200D378 + push {r3-r5, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r1, [sp, #0x20] + cmp r3, #0x0 + bne _0200D38C + add r1, #0x21 + lsl r0, r1, #0x10 + b _0200D390 +_0200D38C: + add r0, r1, #0x2 + lsl r0, r0, #0x10 +_0200D390: + lsr r1, r0, #0x10 + mov r0, #0x3 + str r2, [sp, #0x0] + lsl r0, r0, #0x8 + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x24] + add r2, r5, #0x0 + str r0, [sp, #0xc] + mov r0, #0x24 + add r3, r4, #0x0 + bl FUN_0200687C + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_0200D3B0 +FUN_0200D3B0: ; 0x0200D3B0 + push {r3-r7, lr} + sub sp, #0x40 + str r1, [sp, #0x14] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r2, [sp, #0x1c] + ldr r6, [sp, #0x5c] + sub r7, r2, #0x1 + ldr r2, [sp, #0x18] + ldr r5, [sp, #0x60] + str r2, [sp, #0x34] + sub r2, #0x9 + str r2, [sp, #0x34] + lsl r2, r7, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + ldr r3, [sp, #0x34] + str r5, [sp, #0xc] + add r2, sp, #0x48 + lsl r3, r3, #0x18 + ldrh r2, [r2, #0x1c] + lsr r3, r3, #0x18 + str r0, [sp, #0x10] + bl FUN_02018540 + ldr r0, [sp, #0x18] + str r0, [sp, #0x30] + sub r0, #0x8 + str r0, [sp, #0x30] + add r0, sp, #0x48 + ldrh r4, [r0, #0x1c] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x30] + str r5, [sp, #0xc] + add r2, r4, #0x1 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, sp, #0x48 + ldrb r0, [r0, #0x10] + add r2, r4, #0x2 + lsl r2, r2, #0x10 + str r0, [sp, #0x3c] + add r0, r0, #0x7 + str r0, [sp, #0x24] + ldr r0, [sp, #0x18] + lsr r2, r2, #0x10 + sub r0, r0, #0x7 + str r0, [sp, #0x20] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r5, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r3, r3, #0x18 + bl FUN_02018540 + add r2, r4, #0x3 + lsl r2, r2, #0x10 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x3c] + lsr r2, r2, #0x10 + add r0, r1, r0 + str r0, [sp, #0x38] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x38] + str r5, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x38] + add r2, r4, #0x4 + add r0, r0, #0x1 + str r0, [sp, #0x2c] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x2c] + str r5, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x38] + add r0, r0, #0x2 + str r0, [sp, #0x28] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x28] + str r5, [sp, #0xc] + add r2, r4, #0x5 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x34] + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + add r2, r4, #0x6 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x30] + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + add r2, r4, #0x7 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r3, [sp, #0x18] + add r2, #0x8 + sub r3, r3, #0x1 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r6, [sp, #0x8] + ldr r3, [sp, #0x38] + str r5, [sp, #0xc] + add r2, #0x9 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r6, [sp, #0x8] + ldr r3, [sp, #0x2c] + str r5, [sp, #0xc] + add r2, #0xa + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r2, r4, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r6, [sp, #0x8] + ldr r3, [sp, #0x28] + str r5, [sp, #0xc] + add r2, #0xb + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r2, r4, #0x0 + add r6, r0, r6 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x34] + str r5, [sp, #0xc] + add r2, #0xc + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + ldr r3, [sp, #0x30] + str r5, [sp, #0xc] + add r2, #0xd + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + add r2, r4, #0x0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + ldr r3, [sp, #0x20] + str r5, [sp, #0xc] + add r2, #0xe + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + ldr r3, [sp, #0x38] + str r5, [sp, #0xc] + add r2, #0xf + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + ldr r3, [sp, #0x2c] + str r5, [sp, #0xc] + add r2, #0x10 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0x28] + str r5, [sp, #0xc] + add r4, #0x11 + lsl r2, r4, #0x10 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x40 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D678 +FUN_0200D678: ; 0x0200D678 + push {r3-r7, lr} + sub sp, #0x28 + str r1, [sp, #0x10] + add r7, r0, #0x0 + str r2, [sp, #0x14] + bl FUN_0201AB08 + str r0, [sp, #0x20] + add r0, r7, #0x0 + bl FUN_0201AB14 + sub r0, r0, #0x7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, r7, #0x0 + bl FUN_0201AB18 + str r0, [sp, #0x1c] + mov r0, #0x0 + str r0, [sp, #0x24] +_0200D6A2: + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x24] + add r3, r2, #0x0 + add r0, r1, r0 + mov r1, #0x6 + mul r3, r1 + ldr r1, [sp, #0x10] + lsl r0, r0, #0x18 + mov r4, #0x0 + add r5, r1, r3 + lsr r6, r0, #0x18 +_0200D6BA: + str r6, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x18] + str r0, [sp, #0xc] + add r2, r4, r5 + add r3, r3, r4 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [r7, #0x0] + ldr r1, [sp, #0x20] + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x6 + blo _0200D6BA + ldr r0, [sp, #0x24] + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x24] + cmp r0, #0x4 + blo _0200D6A2 + add sp, #0x28 + pop {r3-r7, pc} + + thumb_func_start FUN_0200D6F8 +FUN_0200D6F8: ; 0x0200D6F8 + push {r3-r7, lr} + sub sp, #0x28 + add r5, r0, #0x0 + str r1, [sp, #0x10] + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_0201AB08 + str r0, [sp, #0x14] + add r0, sp, #0x30 + ldrb r0, [r0, #0x10] + cmp r0, #0x1 + bhi _0200D756 + add r0, r5, #0x0 + bl FUN_0201AB14 + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_0201AB18 + str r0, [sp, #0x1c] + add r0, r5, #0x0 + bl FUN_0201AB0C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB10 + str r7, [sp, #0x0] + str r0, [sp, #0x4] + str r6, [sp, #0x8] + str r4, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl FUN_0200D3B0 + add r1, r4, #0x0 + add r1, #0x1e + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + add r2, r6, #0x0 + bl FUN_0200D678 + b _0200D788 +_0200D756: + add r0, r5, #0x0 + bl FUN_0201AB14 + str r0, [sp, #0x20] + add r0, r5, #0x0 + bl FUN_0201AB18 + str r0, [sp, #0x24] + add r0, r5, #0x0 + bl FUN_0201AB0C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB10 + str r7, [sp, #0x0] + str r0, [sp, #0x4] + str r6, [sp, #0x8] + str r4, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + bl FUN_0200CDD8 +_0200D788: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bne _0200D794 + add r0, r5, #0x0 + bl FUN_020191D0 +_0200D794: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200D18C + add sp, #0x28 + pop {r3-r7, pc} + + thumb_func_start FUN_0200D7A0 +FUN_0200D7A0: ; 0x0200D7A0 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x10] + bl FUN_0201AB08 + str r0, [sp, #0x14] + cmp r4, #0x1 + bhi _0200D7FE + add r0, r5, #0x0 + bl FUN_0201AB14 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB18 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB0C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB10 + sub r1, r7, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r0, r0, #0x2 + lsl r0, r0, #0x18 + sub r4, #0x9 + lsl r3, r4, #0x18 + add r6, #0xb + str r1, [sp, #0x0] + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x4] + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x14] + lsr r3, r3, #0x18 + bl FUN_02018540 + b _0200D846 +_0200D7FE: + add r0, r5, #0x0 + bl FUN_0201AB14 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB18 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB0C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0201AB10 + sub r1, r6, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + add r1, r7, #0x4 + lsl r1, r1, #0x18 + add r0, r0, #0x2 + lsr r1, r1, #0x18 + lsl r0, r0, #0x18 + str r1, [sp, #0x4] + lsr r0, r0, #0x18 + sub r3, r4, #0x2 + lsl r3, r3, #0x18 + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x14] + lsr r3, r3, #0x18 + bl FUN_02018540 +_0200D846: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bne _0200D852 + add r0, r5, #0x0 + bl FUN_02019570 +_0200D852: + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200D858 +FUN_0200D858: ; 0x0200D858 + push {r4-r7, lr} + sub sp, #0x34 + str r0, [sp, #0x20] + ldr r0, [r0, #0x0] + str r1, [sp, #0x24] + bl FUN_02016BB8 + str r0, [sp, #0x28] + ldr r0, [sp, #0x20] + bl FUN_0201AB08 + bl FUN_020187B0 + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + ldr r1, _0200D970 ; =0x0000048C + bl FUN_02016998 + ldr r1, [sp, #0x24] + add r4, r0, #0x0 + ldr r0, _0200D974 ; =0x00000404 + add r1, #0x12 + lsl r1, r1, #0x5 + add r0, r4, r0 + add r1, r5, r1 + mov r2, #0x80 + blx memcpy + ldr r0, [sp, #0x28] + mov r1, #0x80 + bl FUN_02016998 + ldr r1, [sp, #0x24] + mov r2, #0x20 + add r1, #0xa + lsl r1, r1, #0x5 + str r1, [sp, #0x2c] + add r1, r5, r1 + add r6, r0, #0x0 + blx memcpy + ldr r0, [sp, #0x24] + mov r2, #0x20 + add r0, #0xb + lsl r7, r0, #0x5 + add r0, r6, #0x0 + add r0, #0x20 + add r1, r5, r7 + blx memcpy + ldr r1, [sp, #0x2c] + add r0, r6, #0x0 + add r0, #0x40 + add r1, r5, r1 + mov r2, #0x20 + blx memcpy + add r0, r6, #0x0 + add r0, #0x60 + add r1, r5, r7 + mov r2, #0x20 + blx memcpy + mov r5, #0x0 + add r7, r4, #0x4 +_0200D8DA: + lsl r0, r5, #0x7 + add r0, r7, r0 + add r1, r6, #0x0 + mov r2, #0x80 + blx memcpy + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x8 + blo _0200D8DA + add r0, r6, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x28] + mov r1, #0x17 + str r0, [sp, #0x0] + mov r0, #0x26 + mov r2, #0x0 + add r3, sp, #0x30 + bl FUN_02006BB0 + mov r2, #0x80 + add r5, r0, #0x0 + str r2, [sp, #0x0] + add r0, r4, #0x4 + str r0, [sp, #0x4] + mov r3, #0x10 + str r3, [sp, #0x8] + str r2, [sp, #0xc] + mov r1, #0x0 + str r1, [sp, #0x10] + str r1, [sp, #0x14] + str r3, [sp, #0x18] + str r2, [sp, #0x1c] + ldr r0, [sp, #0x30] + add r2, r1, #0x0 + ldr r0, [r0, #0x14] + bl FUN_0200D148 + add r0, r5, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x20] + ldr r1, _0200D978 ; =0x00000484 + str r0, [r4, #0x0] + ldr r0, [sp, #0x24] + mov r2, #0x0 + strh r0, [r4, r1] + add r0, r1, #0x2 + strb r2, [r4, r0] + add r0, r1, #0x3 + ldrb r3, [r4, r0] + mov r0, #0x7f + bic r3, r0 + add r0, r1, #0x3 + strb r3, [r4, r0] + add r0, r1, #0x4 + ldrb r3, [r4, r0] + mov r0, #0x3 + bic r3, r0 + add r0, r1, #0x4 + strb r3, [r4, r0] + ldr r0, _0200D97C ; =FUN_0200DB7C + add r1, r4, #0x0 + bl FUN_0200CA60 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200D980 + add r0, r4, #0x0 + add sp, #0x34 + pop {r4-r7, pc} + nop +_0200D970: .word 0x0000048C +_0200D974: .word 0x00000404 +_0200D978: .word 0x00000484 +_0200D97C: .word FUN_0200DB7C + + thumb_func_start FUN_0200D980 +FUN_0200D980: ; 0x0200D980 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0201AB08 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0201AB14 + str r0, [sp, #0x18] + ldr r0, [r5, #0x0] + bl FUN_0201AB18 + str r0, [sp, #0x1c] + ldr r0, [r5, #0x0] + bl FUN_0201AB0C + str r0, [sp, #0x20] + cmp r6, #0x2 + bne _0200DA8A + ldr r2, _0200DB78 ; =0x00000484 + add r1, r4, #0x0 + ldrh r0, [r5, r2] + sub r2, #0x80 + add r2, r5, r2 + add r0, #0x12 + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + mov r3, #0x80 + ldr r0, [r0, #0x0] + bl FUN_02017E14 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r7, r0, #0x2 + ldr r0, [sp, #0x20] + ldr r2, _0200DB78 ; =0x00000484 + add r6, r1, r0 + add r0, r6, #0x1 + str r0, [sp, #0x14] + 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] + ldrh r2, [r5, r2] + ldr r0, [r5, #0x0] + ldr r3, [sp, #0x14] + add r2, #0xa + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + 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] + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r2, _0200DB78 ; =0x00000484 + ldr r0, [r5, #0x0] + ldrh r2, [r5, r2] + add r6, r6, #0x2 + lsl r3, r6, #0x18 + add r2, #0xb + lsl r2, r2, #0x10 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x14] + add r7, r0, #0x3 + 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] + ldr r2, _0200DB78 ; =0x00000484 + ldr r0, [r5, #0x0] + ldrh r2, [r5, r2] + lsl r3, r3, #0x18 + ldr r0, [r0, #0x0] + add r2, #0xa + lsl r2, r2, #0x10 + add r1, r4, #0x0 + 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] + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r2, _0200DB78 ; =0x00000484 + ldr r0, [r5, #0x0] + ldrh r2, [r5, r2] + lsl r3, r6, #0x18 + ldr r0, [r0, #0x0] + add r2, #0xb + lsl r2, r2, #0x10 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x0] + bl FUN_02017CD0 + add sp, #0x24 + pop {r4-r7, pc} +_0200DA8A: + ldr r3, _0200DB78 ; =0x00000484 + add r2, r5, #0x4 + ldrh r0, [r5, r3] + add r3, r3, #0x3 + add r1, r4, #0x0 + add r0, #0x12 + str r0, [sp, #0x0] + ldrb r3, [r5, r3] + ldr r0, [r5, #0x0] + lsl r3, r3, #0x19 + lsr r3, r3, #0x19 + lsl r3, r3, #0x7 + add r2, r2, r3 + ldr r0, [r0, #0x0] + mov r3, #0x80 + bl FUN_02017E14 + cmp r6, #0x0 + beq _0200DB72 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r7, r0, #0x2 + ldr r0, [sp, #0x20] + ldr r2, _0200DB78 ; =0x00000484 + add r6, r1, r0 + add r0, r6, #0x1 + 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] + ldrh r2, [r5, r2] + ldr r0, [r5, #0x0] + ldr r3, [sp, #0x10] + add r2, #0x12 + lsl r2, r2, #0x10 + lsl r3, r3, #0x18 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + 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] + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r2, _0200DB78 ; =0x00000484 + ldr r0, [r5, #0x0] + ldrh r2, [r5, r2] + add r6, r6, #0x2 + lsl r3, r6, #0x18 + add r2, #0x13 + lsl r2, r2, #0x10 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x10] + add r7, r0, #0x3 + 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] + ldr r2, _0200DB78 ; =0x00000484 + ldr r0, [r5, #0x0] + ldrh r2, [r5, r2] + lsl r3, r3, #0x18 + ldr r0, [r0, #0x0] + add r2, #0x14 + lsl r2, r2, #0x10 + add r1, r4, #0x0 + 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] + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r2, _0200DB78 ; =0x00000484 + ldr r0, [r5, #0x0] + ldrh r2, [r5, r2] + lsl r3, r6, #0x18 + ldr r0, [r0, #0x0] + add r2, #0x15 + lsl r2, r2, #0x10 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x0] + bl FUN_02017CD0 +_0200DB72: + add sp, #0x24 + pop {r4-r7, pc} + nop +_0200DB78: .word 0x00000484 + + thumb_func_start FUN_0200DB7C +FUN_0200DB7C: ; 0x0200DB7C + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _0200DBE4 ; =0x00000488 + ldrb r2, [r1, r0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1e + beq _0200DB9E + cmp r2, #0x1 + bne _0200DB96 + add r0, r1, #0x0 + mov r1, #0x2 + bl FUN_0200D980 +_0200DB96: + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r3-r5, pc} +_0200DB9E: + sub r2, r0, #0x2 + ldrb r2, [r1, r2] + add r3, r2, #0x1 + sub r2, r0, #0x2 + strb r3, [r1, r2] + ldrb r2, [r1, r2] + cmp r2, #0x10 + bne _0200DBE0 + mov r3, #0x0 + sub r2, r0, #0x2 + strb r3, [r1, r2] + sub r2, r0, #0x1 + ldrb r2, [r1, r2] + mov r4, #0x7f + bic r2, r4 + sub r4, r0, #0x1 + ldrb r4, [r1, r4] + sub r0, r0, #0x1 + lsl r4, r4, #0x19 + lsr r4, r4, #0x19 + add r5, r4, #0x1 + mov r4, #0x7 + and r4, r5 + lsl r4, r4, #0x18 + lsr r5, r4, #0x18 + mov r4, #0x7f + and r4, r5 + orr r2, r4 + strb r2, [r1, r0] + add r0, r1, #0x0 + add r1, r3, #0x0 + bl FUN_0200D980 +_0200DBE0: + pop {r3-r5, pc} + nop +_0200DBE4: .word 0x00000488 + + thumb_func_start FUN_0200DBE8 +FUN_0200DBE8: ; 0x0200DBE8 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200DBFC +FUN_0200DBFC: ; 0x0200DBFC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0200DC1C ; =FUN_0200DBE8 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_0200CA98 + ldr r1, _0200DC20 ; =0x00000488 + mov r0, #0x3 + ldrb r2, [r4, r1] + bic r2, r0 + mov r0, #0x1 + orr r0, r2 + strb r0, [r4, r1] + pop {r4, pc} + nop +_0200DC1C: .word FUN_0200DBE8 +_0200DC20: .word 0x00000488 + + thumb_func_start FUN_0200DC24 +FUN_0200DC24: ; 0x0200DC24 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0200DC44 ; =FUN_0200DBE8 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_0200CA98 + ldr r1, _0200DC48 ; =0x00000488 + mov r0, #0x3 + ldrb r2, [r4, r1] + bic r2, r0 + mov r0, #0x2 + orr r0, r2 + strb r0, [r4, r1] + pop {r4, pc} + nop +_0200DC44: .word FUN_0200DBE8 +_0200DC48: .word 0x00000488 + + thumb_func_start FUN_0200DC4C +FUN_0200DC4C: ; 0x0200DC4C + push {r4-r7, lr} + sub sp, #0xc + str r2, [sp, #0x4] + ldr r5, [sp, #0x30] + str r3, [sp, #0x8] + add r6, r0, #0x0 + add r7, r1, #0x0 + str r5, [sp, #0x0] + bl FUN_0200DD70 + add r4, r0, #0x0 + add r1, r5, #0x0 + bl FUN_0200DDAC + add r0, r4, #0x0 + bl FUN_0200DDD8 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_0200DE30 + add r2, sp, #0x10 + ldrh r1, [r2, #0x18] + ldrb r2, [r2, #0x1c] + add r0, r4, #0x0 + bl FUN_0200DE80 + add r2, sp, #0x10 + ldrb r1, [r2, #0x10] + ldrh r2, [r2, #0x14] + add r0, r4, #0x0 + bl FUN_0200DFD8 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02017CD0 + ldr r0, _0200DCA0 ; =0x0000016F + add r0, r4, r0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0200DCA0: .word 0x0000016F + + thumb_func_start FUN_0200DCA4 +FUN_0200DCA4: ; 0x0200DCA4 + push {r4-r7, lr} + sub sp, #0xc + str r2, [sp, #0x4] + ldr r5, [sp, #0x2c] + str r3, [sp, #0x8] + add r6, r0, #0x0 + add r7, r1, #0x0 + str r5, [sp, #0x0] + bl FUN_0200DD70 + add r4, r0, #0x0 + add r1, r5, #0x0 + bl FUN_0200DDAC + add r0, r4, #0x0 + bl FUN_0200DDD8 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_0200DE30 + ldr r1, [sp, #0x28] + add r0, r4, #0x0 + bl FUN_0200DEC0 + add r2, sp, #0x10 + ldrb r1, [r2, #0x10] + ldrh r2, [r2, #0x14] + add r0, r4, #0x0 + bl FUN_0200DFD8 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02017CD0 + ldr r0, _0200DCF4 ; =0x0000016F + add r0, r4, r0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0200DCF4: .word 0x0000016F + + thumb_func_start FUN_0200DCF8 +FUN_0200DCF8: ; 0x0200DCF8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0200DD6C ; =0x0000016F + add r4, r1, #0x0 + ldrb r1, [r4, r0] + cmp r1, #0x1 + beq _0200DD10 + cmp r1, #0x2 + beq _0200DD2E + cmp r1, #0x3 + beq _0200DD40 + b _0200DD54 +_0200DD10: + add r0, r4, #0x0 + bl FUN_0200E188 + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0200C3DC + add r0, r4, #0x0 + bl FUN_021D99F8 + add r0, r5, #0x0 + bl FUN_0200621C + pop {r3-r5, pc} +_0200DD2E: + mov r1, #0x3 + strb r1, [r4, r0] + sub r0, #0xb + ldr r0, [r4, r0] + mov r1, #0x1 + ldr r0, [r0, #0x0] + bl FUN_02020130 + b _0200DD54 +_0200DD40: + sub r0, #0xb + ldr r0, [r4, r0] + ldr r0, [r0, #0x0] + bl FUN_0202022C + cmp r0, #0x6 + bne _0200DD54 + ldr r0, _0200DD6C ; =0x0000016F + mov r1, #0x0 + strb r1, [r4, r0] +_0200DD54: + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, [r4, #0x0] + bl FUN_0201FDEC + pop {r3-r5, pc} + .balign 4 +_0200DD6C: .word 0x0000016F + + thumb_func_start FUN_0200DD70 +FUN_0200DD70: ; 0x0200DD70 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r7, r3, #0x0 + mov r1, #0x17 + add r6, r2, #0x0 + ldr r0, _0200DDA4 ; =FUN_0200DCF8 + ldr r3, [sp, #0x18] + lsl r1, r1, #0x4 + mov r2, #0x0 + bl FUN_020061E8 + bl FUN_0201B6C8 + ldr r1, _0200DDA8 ; =0x0000016F + mov r2, #0x0 + strb r2, [r0, r1] + sub r2, r1, #0x7 + str r5, [r0, r2] + sub r2, r1, #0x3 + strb r4, [r0, r2] + sub r2, r1, #0x2 + strb r6, [r0, r2] + sub r1, r1, #0x1 + strb r7, [r0, r1] + pop {r3-r7, pc} + .balign 4 +_0200DDA4: .word FUN_0200DCF8 +_0200DDA8: .word 0x0000016F + + thumb_func_start FUN_0200DDAC +FUN_0200DDAC: ; 0x0200DDAC + push {r4-r6, lr} + sub sp, #0x18 + ldr r5, _0200DDD4 ; =0x020ECEA8 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r3, r1, #0x0 + add r2, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r1, r2, #0x0 + add r0, r6, #0x0 + mov r2, #0x1 + bl FUN_021D959C + add sp, #0x18 + pop {r4-r6, pc} + .balign 4 +_0200DDD4: .word 0x020ECEA8 + + thumb_func_start FUN_0200DDD8 +FUN_0200DDD8: ; 0x0200DDD8 + push {r3-r4, lr} + sub sp, #0xc + mov r1, #0x1 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, _0200DE2C ; =0x00015CD5 + mov r2, #0x31 + str r1, [sp, #0x8] + mov r1, #0x26 + mov r3, #0x0 + add r4, r0, #0x0 + bl FUN_021D967C + ldr r0, _0200DE2C ; =0x00015CD5 + mov r1, #0x26 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r2, #0x2f + mov r3, #0x0 + bl FUN_021D96F4 + ldr r0, _0200DE2C ; =0x00015CD5 + mov r1, #0x26 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r2, #0x2e + mov r3, #0x0 + bl FUN_021D9708 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _0200DE2C ; =0x00015CD5 + mov r1, #0x26 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r2, #0x30 + mov r3, #0x0 + bl FUN_021D971C + add sp, #0xc + pop {r3-r4, pc} + nop +_0200DE2C: .word 0x00015CD5 + + thumb_func_start FUN_0200DE30 +FUN_0200DE30: ; 0x0200DE30 + push {r4-r7, lr} + sub sp, #0x34 + ldr r5, _0200DE7C ; =0x020ECEC0 + add r6, r2, #0x0 + add r4, r0, #0x0 + add r7, r1, #0x0 + add r3, sp, #0x0 + mov r2, #0x6 +_0200DE40: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0200DE40 + ldr r0, [r5, #0x0] + str r0, [r3, #0x0] + add r0, r7, #0x5 + lsl r1, r0, #0x3 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + add r1, r6, #0x5 + lsl r1, r1, #0x3 + strh r1, [r0, #0x2] + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_021D9820 + mov r1, #0x59 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, #0x0] + bl FUN_0201FDEC + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E74C + add sp, #0x34 + pop {r4-r7, pc} + nop +_0200DE7C: .word 0x020ECEC0 + + thumb_func_start FUN_0200DE80 +FUN_0200DE80: ; 0x0200DE80 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + ldr r0, _0200DEBC ; =0x00000162 + add r4, r1, #0x0 + ldrh r0, [r5, r0] + add r6, r2, #0x0 + bl FUN_02006D98 + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r0, sp, #0xc + add r1, r4, #0x0 + add r2, r6, #0x0 + mov r3, #0x2 + bl FUN_02068C00 + add r0, r5, #0x0 + add r1, sp, #0xc + bl FUN_0200DEF4 + add r0, r7, #0x0 + bl FUN_020072E8 + add sp, #0x1c + pop {r4-r7, pc} + nop +_0200DEBC: .word 0x00000162 + + thumb_func_start FUN_0200DEC0 +FUN_0200DEC0: ; 0x0200DEC0 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, _0200DEF0 ; =0x00000162 + add r4, r1, #0x0 + ldrh r0, [r5, r0] + bl FUN_02006D98 + add r6, r0, #0x0 + add r0, sp, #0x0 + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_02068B68 + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_0200DEF4 + add r0, r6, #0x0 + bl FUN_020072E8 + add sp, #0x10 + pop {r4-r6, pc} + nop +_0200DEF0: .word 0x00000162 + + thumb_func_start FUN_0200DEF4 +FUN_0200DEF4: ; 0x0200DEF4 + push {r3-r7, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, _0200DFC8 ; =0x00000162 + add r6, r1, #0x0 + mov r1, #0x19 + ldrh r0, [r5, r0] + lsl r1, r1, #0x8 + bl FUN_02016998 + add r2, sp, #0x18 + ldr r3, _0200DFCC ; =0x020ECE98 + add r4, r0, #0x0 + add r7, r2, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + str r4, [sp, #0x0] + ldr r2, _0200DFC8 ; =0x00000162 + ldrh r0, [r6, #0x0] + ldrh r1, [r6, #0x2] + ldrh r2, [r5, r2] + add r3, r7, #0x0 + bl FUN_02012400 + ldr r3, _0200DFD0 ; =0x020ECE88 + add r2, sp, #0x8 + add r7, r2, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r0, #0x32 + lsl r0, r0, #0x6 + add r0, r4, r0 + str r0, [sp, #0x0] + ldr r2, _0200DFC8 ; =0x00000162 + ldrh r0, [r6, #0x0] + ldrh r1, [r6, #0x2] + ldrh r2, [r5, r2] + add r3, r7, #0x0 + bl FUN_02012400 + mov r0, #0x13 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + ldr r1, _0200DFD4 ; =0x00015CD5 + bl FUN_020094F0 + bl FUN_02009C5C + mov r1, #0x1 + str r0, [sp, #0x4] + blx FUN_020B1A14 + mov r1, #0x19 + add r7, r0, #0x0 + add r0, r4, #0x0 + lsl r1, r1, #0x8 + blx DC_FlushRange + mov r2, #0x19 + add r0, r4, #0x0 + add r1, r7, #0x0 + lsl r2, r2, #0x8 + blx GX_LoadOBJ + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r2, _0200DFC8 ; =0x00000162 + ldrh r0, [r6, #0x0] + ldrh r1, [r6, #0x4] + ldrh r2, [r5, r2] + bl FUN_02012470 + add r4, r0, #0x0 + mov r0, #0x4d + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r1, _0200DFD4 ; =0x00015CD5 + bl FUN_020094F0 + ldr r1, [sp, #0x4] + bl FUN_02009E54 + mov r1, #0x1 + blx FUN_020B19C4 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x20 + blx DC_FlushRange + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x20 + blx GX_LoadOBJPltt + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x28 + pop {r3-r7, pc} + nop +_0200DFC8: .word 0x00000162 +_0200DFCC: .word 0x020ECE98 +_0200DFD0: .word 0x020ECE88 +_0200DFD4: .word 0x00015CD5 + + thumb_func_start FUN_0200DFD8 +FUN_0200DFD8: ; 0x0200DFD8 + push {r4-r6, lr} + sub sp, #0x10 + ldr r3, _0200E184 ; =0x0000016E + add r5, r0, #0x0 + ldrb r0, [r5, r3] + add r4, r1, #0x0 + sub r1, r3, #0x2 + sub r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r5, r3] + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + sub r3, r3, #0x1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + add r6, r2, #0x0 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x1 + ldrb r0, [r5, r3] + sub r1, r3, #0x2 + lsl r2, r2, #0x10 + sub r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0xa + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r1, [r5, r1] + ldrb r3, [r5, r3] + ldr r0, [r5, r0] + lsr r2, r2, #0x10 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x2 + ldrb r0, [r5, r3] + lsl r2, r2, #0x10 + sub r1, r3, #0x2 + sub r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r5, r3] + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + add r3, #0xa + lsl r3, r3, #0x18 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x4 + ldrb r0, [r5, r3] + lsl r2, r2, #0x10 + sub r1, r3, #0x2 + str r0, [sp, #0x0] + mov r0, #0xa + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r1, [r5, r1] + ldrb r3, [r5, r3] + ldr r0, [r5, r0] + lsr r2, r2, #0x10 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x3 + ldrb r0, [r5, r3] + lsl r2, r2, #0x10 + sub r1, r3, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0xa + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r5, r3] + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + sub r3, r3, #0x1 + lsl r3, r3, #0x18 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x5 + ldrb r0, [r5, r3] + lsl r2, r2, #0x10 + sub r1, r3, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0xa + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r5, r3] + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + add r3, #0xa + lsl r3, r3, #0x18 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x6 + ldrb r0, [r5, r3] + lsl r2, r2, #0x10 + sub r1, r3, #0x2 + add r0, #0xa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r5, r3] + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + sub r3, r3, #0x1 + lsl r3, r3, #0x18 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r2, r6, #0x7 + ldrb r0, [r5, r3] + sub r1, r3, #0x2 + lsl r2, r2, #0x10 + add r0, #0xa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0xa + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r1, [r5, r1] + ldrb r3, [r5, r3] + ldr r0, [r5, r0] + lsr r2, r2, #0x10 + bl FUN_02018540 + ldr r3, _0200E184 ; =0x0000016E + add r6, #0x8 + ldrb r0, [r5, r3] + lsl r2, r6, #0x10 + sub r1, r3, #0x2 + add r0, #0xa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r4, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r5, r3] + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + add r3, #0xa + lsl r3, r3, #0x18 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r1, #0x5a + lsl r1, r1, #0x2 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldrb r1, [r5, r1] + bl FUN_0201AC68 + add sp, #0x10 + pop {r4-r6, pc} + nop +_0200E184: .word 0x0000016E + + thumb_func_start FUN_0200E188 +FUN_0200E188: ; 0x0200E188 + push {r4, lr} + sub sp, #0x10 + ldr r3, _0200E1CC ; =0x0000016E + add r4, r0, #0x0 + ldrb r0, [r4, r3] + mov r2, #0x0 + sub r1, r3, #0x2 + sub r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r2, [sp, #0xc] + sub r0, r3, #0x6 + sub r3, r3, #0x1 + ldrb r3, [r4, r3] + ldrb r1, [r4, r1] + ldr r0, [r4, r0] + sub r3, r3, #0x1 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r1, #0x5a + lsl r1, r1, #0x2 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldrb r1, [r4, r1] + bl FUN_0201AC68 + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0200E1CC: .word 0x0000016E + + thumb_func_start FUN_0200E1D0 +FUN_0200E1D0: ; 0x0200E1D0 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + ldr r0, [sp, #0x30] + add r4, r1, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + cmp r0, #0x0 + bne _0200E1E6 + bl ErrorHandling +_0200E1E6: + ldr r0, [sp, #0x34] + cmp r0, #0x0 + bne _0200E1F0 + bl ErrorHandling +_0200E1F0: + ldr r0, _0200E2AC ; =0x021C47F4 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + beq _0200E1FC + bl ErrorHandling +_0200E1FC: + ldr r0, _0200E2B0 ; =0x021C46B4 + bl FUN_0200E808 + ldr r1, _0200E2B0 ; =0x021C46B4 + add r0, r5, #0x0 + bl FUN_0200E558 + ldr r0, _0200E2B4 ; =0x021C4728 + bl FUN_0200E5F4 + ldr r0, _0200E2B0 ; =0x021C46B4 + add r1, r6, #0x0 + bl FUN_0200E75C + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, _0200E2B8 ; =0x021C4740 + ldr r2, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, _0200E2B4 ; =0x021C4728 + ldr r3, [sp, #0x34] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + add r1, r4, #0x0 + str r0, [sp, #0x14] + ldr r0, _0200E2BC ; =0x021C46C8 + str r5, [sp, #0x18] + bl FUN_0200E5C8 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + ldr r0, _0200E2B8 ; =0x021C4740 + ldr r2, [sp, #0x30] + str r0, [sp, #0xc] + ldr r0, _0200E2B4 ; =0x021C4728 + ldr r3, [sp, #0x34] + str r0, [sp, #0x10] + ldr r0, [sp, #0x38] + add r1, r7, #0x0 + str r0, [sp, #0x14] + ldr r0, _0200E2C0 ; =0x021C46F8 + str r5, [sp, #0x18] + bl FUN_0200E5C8 + ldr r0, _0200E2AC ; =0x021C47F4 + mov r1, #0x1 + strh r1, [r0, #0xc] + ldr r0, _0200E2C4 ; =0x021C46B8 + ldr r1, _0200E2BC ; =0x021C46C8 + bl FUN_0200E528 + ldr r0, _0200E2C8 ; =0x021C46BC + ldr r1, _0200E2C0 ; =0x021C46F8 + bl FUN_0200E528 + ldr r0, _0200E2CC ; =0x021C46B4 + ldr r0, [r0, #0xc] + cmp r0, #0x0 + beq _0200E28E + ldr r0, _0200E2B0 ; =0x021C46B4 + add r0, #0x14 + bl FUN_0200E7A8 + ldr r1, _0200E2D0 ; =0x0000014E + ldr r0, _0200E2B0 ; =0x021C46B4 + mov r2, #0x1 + strb r2, [r0, r1] +_0200E28E: + ldr r0, _0200E2B0 ; =0x021C46B4 + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _0200E2A6 + ldr r0, _0200E2B0 ; =0x021C46B4 + add r0, #0x44 + bl FUN_0200E7A8 + ldr r1, _0200E2D4 ; =0x0000014F + ldr r0, _0200E2B0 ; =0x021C46B4 + mov r2, #0x1 + strb r2, [r0, r1] +_0200E2A6: + add sp, #0x1c + pop {r4-r7, pc} + nop +_0200E2AC: .word 0x021C47F4 +_0200E2B0: .word 0x021C46B4 +_0200E2B4: .word 0x021C4728 +_0200E2B8: .word 0x021C4740 +_0200E2BC: .word 0x021C46C8 +_0200E2C0: .word 0x021C46F8 +_0200E2C4: .word 0x021C46B8 +_0200E2C8: .word 0x021C46BC +_0200E2CC: .word 0x021C46B4 +_0200E2D0: .word 0x0000014E +_0200E2D4: .word 0x0000014F + + thumb_func_start FUN_0200E2D8 +FUN_0200E2D8: ; 0x0200E2D8 + push {r4, lr} + ldr r0, _0200E300 ; =0x021C47F4 + ldr r4, _0200E304 ; =0x021C46B4 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + beq _0200E2FC + add r1, r4, #0x0 + add r2, r4, #0x0 + add r0, r4, #0x0 + add r1, #0x14 + add r2, #0x44 + bl FUN_0200E4B8 + cmp r0, #0x1 + bne _0200E2FC + add r0, r4, #0x0 + bl FUN_0200E460 +_0200E2FC: + pop {r4, pc} + nop +_0200E300: .word 0x021C47F4 +_0200E304: .word 0x021C46B4 + + thumb_func_start FUN_0200E308 +FUN_0200E308: ; 0x0200E308 + ldr r0, _0200E318 ; =0x021C47F4 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + bne _0200E314 + mov r0, #0x1 + bx lr +_0200E314: + mov r0, #0x0 + bx lr + .balign 4 +_0200E318: .word 0x021C47F4 + + thumb_func_start FUN_0200E31C +FUN_0200E31C: ; 0x0200E31C + push {r3, lr} + ldr r0, _0200E368 ; =0x021C4728 + mov r1, #0x0 + bl FUN_0200E6A0 + ldr r0, _0200E368 ; =0x021C4728 + mov r1, #0x1 + bl FUN_0200E6A0 + ldr r0, _0200E36C ; =0x021C46B4 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0200E33A + mov r1, #0x2 + str r1, [r0, #0x20] +_0200E33A: + ldr r0, _0200E36C ; =0x021C46B4 + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _0200E346 + mov r1, #0x2 + str r1, [r0, #0x50] +_0200E346: + ldr r0, _0200E370 ; =0x021C46B8 + ldr r1, _0200E374 ; =0x021C46C8 + bl FUN_0200E528 + ldr r0, _0200E378 ; =0x021C46BC + ldr r1, _0200E37C ; =0x021C46F8 + bl FUN_0200E528 + ldr r0, _0200E380 ; =0x021C47F4 + mov r1, #0x0 + strh r1, [r0, #0xc] + strb r1, [r0, #0xe] + strb r1, [r0, #0xf] + ldr r0, _0200E384 ; =0x021C46B4 + bl FUN_0200E808 + pop {r3, pc} + .balign 4 +_0200E368: .word 0x021C4728 +_0200E36C: .word 0x021C46B4 +_0200E370: .word 0x021C46B8 +_0200E374: .word 0x021C46C8 +_0200E378: .word 0x021C46BC +_0200E37C: .word 0x021C46F8 +_0200E380: .word 0x021C47F4 +_0200E384: .word 0x021C46B4 + + thumb_func_start FUN_0200E388 +FUN_0200E388: ; 0x0200E388 + ldr r3, _0200E390 ; =FUN_02011480 + add r1, r0, #0x0 + mov r0, #0x0 + bx r3 + .balign 4 +_0200E390: .word FUN_02011480 + + thumb_func_start FUN_0200E394 +FUN_0200E394: ; 0x0200E394 + ldr r3, _0200E39C ; =FUN_0200E440 + mov r1, #0x0 + bx r3 + nop +_0200E39C: .word FUN_0200E440 + + thumb_func_start FUN_0200E3A0 +FUN_0200E3A0: ; 0x0200E3A0 + ldr r2, _0200E3B4 ; =0x00007FFF + cmp r1, r2 + bne _0200E3AA + mov r1, #0x10 + b _0200E3AE +_0200E3AA: + mov r1, #0xf + mvn r1, r1 +_0200E3AE: + ldr r3, _0200E3B8 ; =FUN_0200E440 + bx r3 + nop +_0200E3B4: .word 0x00007FFF +_0200E3B8: .word FUN_0200E440 + + thumb_func_start FUN_0200E3BC +FUN_0200E3BC: ; 0x0200E3BC + push {r0-r3} + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r0, sp, #0x1c + bne _0200E3D2 + mov r1, #0x0 + mov r2, #0x2 + blx GX_LoadBGPltt + b _0200E3DA +_0200E3D2: + mov r1, #0x0 + mov r2, #0x2 + blx GXS_LoadBGPltt +_0200E3DA: + ldr r0, _0200E41C ; =0x021C4740 + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_02011634 + mov r2, #0x0 + ldr r0, _0200E41C ; =0x021C4740 + mov r1, #0x3f + add r3, r2, #0x0 + str r4, [sp, #0x0] + bl FUN_02011650 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, _0200E41C ; =0x021C4740 + add r2, r1, #0x0 + add r3, r1, #0x0 + str r4, [sp, #0x8] + bl FUN_02011698 + ldr r0, _0200E41C ; =0x021C4740 + mov r1, #0x20 + mov r2, #0x0 + add r3, r4, #0x0 + bl FUN_02011678 + add sp, #0xc + pop {r3-r4} + pop {r3} + add sp, #0x10 + bx r3 + nop +_0200E41C: .word 0x021C4740 + + thumb_func_start FUN_0200E420 +FUN_0200E420: ; 0x0200E420 + push {r0-r3} + push {r3, lr} + add r0, sp, #0x8 + mov r1, #0x0 + mov r2, #0x2 + blx GX_LoadBGPltt + add r0, sp, #0x8 + mov r1, #0x0 + mov r2, #0x2 + blx GXS_LoadBGPltt + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_0200E440 +FUN_0200E440: ; 0x0200E440 + push {r3, lr} + cmp r0, #0x0 + bne _0200E44E + ldr r0, _0200E458 ; =0x0400006C + blx GXx_SetMasterBrightness_ + pop {r3, pc} +_0200E44E: + ldr r0, _0200E45C ; =0x0400106C + blx GXx_SetMasterBrightness_ + pop {r3, pc} + nop +_0200E458: .word 0x0400006C +_0200E45C: .word 0x0400106C + + thumb_func_start FUN_0200E460 +FUN_0200E460: ; 0x0200E460 + push {r4, lr} + mov r1, #0x53 + add r4, r0, #0x0 + mov r2, #0x0 + lsl r1, r1, #0x2 + strh r2, [r4, r1] + bl FUN_0200E770 + mov r1, #0x15 + lsl r1, r1, #0x4 + strh r0, [r4, r1] + ldr r0, [r4, #0xc] + cmp r0, #0x0 + beq _0200E490 + add r0, r4, #0x0 + add r0, #0x14 + bl FUN_0200E7D8 + ldr r0, [r4, #0x3c] + cmp r0, #0x0 + bne _0200E490 + ldr r0, _0200E4B4 ; =0x021C47F4 + mov r1, #0x0 + strb r1, [r0, #0xe] +_0200E490: + ldr r0, [r4, #0x10] + cmp r0, #0x0 + beq _0200E4AA + add r0, r4, #0x0 + add r0, #0x44 + bl FUN_0200E7D8 + ldr r0, [r4, #0x3c] + cmp r0, #0x0 + bne _0200E4AA + ldr r0, _0200E4B4 ; =0x021C47F4 + mov r1, #0x0 + strb r1, [r0, #0xf] +_0200E4AA: + add r0, r4, #0x0 + bl FUN_0200E808 + pop {r4, pc} + nop +_0200E4B4: .word 0x021C47F4 + + thumb_func_start FUN_0200E4B8 +FUN_0200E4B8: ; 0x0200E4B8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r2, #0x0 + cmp r0, #0x0 + beq _0200E4CE + cmp r0, #0x1 + beq _0200E4E0 + cmp r0, #0x2 + beq _0200E4FA + b _0200E512 +_0200E4CE: + add r0, r5, #0x4 + bl FUN_0200E528 + add r0, r5, #0x0 + add r0, #0x8 + add r1, r4, #0x0 + bl FUN_0200E528 + b _0200E512 +_0200E4E0: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _0200E4EE + add r0, r5, #0x4 + bl FUN_0200E528 + b _0200E512 +_0200E4EE: + add r0, r5, #0x0 + add r0, #0x8 + add r1, r4, #0x0 + bl FUN_0200E528 + b _0200E512 +_0200E4FA: + ldr r0, [r5, #0x8] + cmp r0, #0x0 + beq _0200E50C + add r0, r5, #0x0 + add r0, #0x8 + add r1, r4, #0x0 + bl FUN_0200E528 + b _0200E512 +_0200E50C: + add r0, r5, #0x4 + bl FUN_0200E528 +_0200E512: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _0200E522 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + bne _0200E522 + mov r0, #0x1 + pop {r3-r5, pc} +_0200E522: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200E528 +FUN_0200E528: ; 0x0200E528 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0200E540 + add r0, r1, #0x0 + bl FUN_0200E544 + cmp r0, #0x1 + bne _0200E540 + mov r0, #0x0 + str r0, [r4, #0x0] +_0200E540: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200E544 +FUN_0200E544: ; 0x0200E544 + push {r3, lr} + ldr r1, [r0, #0x0] + lsl r2, r1, #0x2 + ldr r1, _0200E554 ; =0x020ECEF4 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_0200E554: .word 0x020ECEF4 + + thumb_func_start FUN_0200E558 +FUN_0200E558: ; 0x0200E558 + push {r3, lr} + cmp r0, #0x4 + bhi _0200E5B8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0200E56A: ; jump table (using 16-bit offset) + .short _0200E574 - _0200E56A - 2; case 0 + .short _0200E582 - _0200E56A - 2; case 1 + .short _0200E590 - _0200E56A - 2; case 2 + .short _0200E59E - _0200E56A - 2; case 3 + .short _0200E5AC - _0200E56A - 2; case 4 +_0200E574: + mov r2, #0x1 + add r0, r1, #0x0 + mov r1, #0x0 + add r3, r2, #0x0 + bl FUN_0200E5BC + pop {r3, pc} +_0200E582: + add r0, r1, #0x0 + mov r1, #0x1 + add r2, r1, #0x0 + add r3, r1, #0x0 + bl FUN_0200E5BC + pop {r3, pc} +_0200E590: + mov r2, #0x1 + add r0, r1, #0x0 + mov r1, #0x2 + add r3, r2, #0x0 + bl FUN_0200E5BC + pop {r3, pc} +_0200E59E: + add r0, r1, #0x0 + mov r1, #0x1 + add r2, r1, #0x0 + mov r3, #0x0 + bl FUN_0200E5BC + pop {r3, pc} +_0200E5AC: + add r0, r1, #0x0 + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x1 + bl FUN_0200E5BC +_0200E5B8: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200E5BC +FUN_0200E5BC: ; 0x0200E5BC + str r1, [r0, #0x0] + str r2, [r0, #0x4] + str r3, [r0, #0x8] + str r2, [r0, #0xc] + str r3, [r0, #0x10] + bx lr + + thumb_func_start FUN_0200E5C8 +FUN_0200E5C8: ; 0x0200E5C8 + str r1, [r0, #0x0] + str r2, [r0, #0x4] + ldr r1, [sp, #0x0] + str r3, [r0, #0x8] + str r1, [r0, #0xc] + ldr r1, [sp, #0x4] + str r1, [r0, #0x14] + ldr r1, [sp, #0x8] + str r1, [r0, #0x10] + ldr r1, [sp, #0xc] + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r1, [r0, #0x1c] + ldr r1, [sp, #0x14] + str r1, [r0, #0x20] + ldr r1, _0200E5F0 ; =0xFFFFFFF0 + add r1, sp + ldrh r1, [r1, #0x28] + strh r1, [r0, #0x24] + bx lr + .balign 4 +_0200E5F0: .word 0xFFFFFFF0 + + thumb_func_start FUN_0200E5F4 +FUN_0200E5F4: ; 0x0200E5F4 + mov r3, #0x0 + ldr r1, _0200E60C ; =FUN_0200E758 + add r2, r3, #0x0 +_0200E5FA: + str r2, [r0, #0x0] + str r1, [r0, #0x8] + str r2, [r0, #0x10] + add r3, r3, #0x1 + add r0, r0, #0x4 + cmp r3, #0x2 + blt _0200E5FA + bx lr + nop +_0200E60C: .word FUN_0200E758 + + thumb_func_start FUN_0200E610 +FUN_0200E610: ; 0x0200E610 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_0200E616: + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x8] + blx r1 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x2 + blt _0200E616 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0200E628 +FUN_0200E628: ; 0x0200E628 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + str r0, [sp, #0x8] + add r0, #0x10 + lsl r4, r3, #0x2 + str r0, [sp, #0x8] + ldr r0, [r0, r4] + add r7, r2, #0x0 + str r1, [sp, #0x0] + cmp r0, #0x0 + beq _0200E64A + bl ErrorHandling +_0200E64A: + add r6, r5, #0x0 + add r6, #0x8 + ldr r0, [r6, r4] + cmp r0, #0x0 + bne _0200E658 + bl ErrorHandling +_0200E658: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + bne _0200E672 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + bne _0200E672 + ldr r0, _0200E698 ; =FUN_0200E610 + add r1, r5, #0x0 + bl FUN_02015F34 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] +_0200E672: + ldr r0, [sp, #0x4] + cmp r0, #0x1 + beq _0200E67C + bl ErrorHandling +_0200E67C: + ldr r0, [sp, #0x0] + cmp r7, #0x0 + str r0, [r5, r4] + beq _0200E688 + str r7, [r6, r4] + b _0200E68C +_0200E688: + ldr r0, _0200E69C ; =FUN_0200E758 + str r0, [r6, r4] +_0200E68C: + ldr r0, [sp, #0x8] + mov r1, #0x1 + str r1, [r0, r4] + add sp, #0xc + pop {r4-r7, pc} + nop +_0200E698: .word FUN_0200E610 +_0200E69C: .word FUN_0200E758 + + thumb_func_start FUN_0200E6A0 +FUN_0200E6A0: ; 0x0200E6A0 + push {r3-r5, lr} + lsl r4, r1, #0x2 + add r5, r0, #0x0 + mov r1, #0x0 + add r0, r5, r4 + str r1, [r0, #0x10] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + bne _0200E6BC + ldr r0, [r5, #0x14] + cmp r0, #0x0 + bne _0200E6BC + bl FUN_02015F1C +_0200E6BC: + ldr r1, _0200E6C8 ; =FUN_0200E758 + add r0, r5, r4 + str r1, [r0, #0x8] + mov r0, #0x0 + str r0, [r5, r4] + pop {r3-r5, pc} + .balign 4 +_0200E6C8: .word FUN_0200E758 + + thumb_func_start FUN_0200E6CC +FUN_0200E6CC: ; 0x0200E6CC + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r0, [sp, #0x18] + mov r1, #0x10 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_020169D8 + add r1, r0, #0x0 + str r5, [r1, #0x0] + str r4, [r1, #0x4] + mov r2, #0x1 + str r6, [r1, #0x8] + ldr r0, _0200E6F4 ; =FUN_0200E71C + lsl r2, r2, #0xa + str r7, [r1, #0xc] + bl FUN_0200CA98 + pop {r3-r7, pc} + .balign 4 +_0200E6F4: .word FUN_0200E71C + + thumb_func_start FUN_0200E6F8 +FUN_0200E6F8: ; 0x0200E6F8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x8 + bl FUN_020169D8 + add r1, r0, #0x0 + mov r2, #0x1 + str r5, [r1, #0x0] + ldr r0, _0200E718 ; =FUN_0200E73C + lsl r2, r2, #0xa + str r4, [r1, #0x4] + bl FUN_0200CA98 + pop {r3-r5, pc} + .balign 4 +_0200E718: .word FUN_0200E73C + + thumb_func_start FUN_0200E71C +FUN_0200E71C: ; 0x0200E71C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + ldr r3, [r4, #0xc] + bl FUN_0200E628 + add r0, r5, #0x0 + bl FUN_0200CAB4 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + + thumb_func_start FUN_0200E73C +FUN_0200E73C: ; 0x0200E73C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + bl FUN_0200E6A0 + add r0, r5, #0x0 + bl FUN_0200CAB4 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + + thumb_func_start FUN_0200E758 +FUN_0200E758: ; 0x0200E758 + bx lr + .balign 4 + + thumb_func_start FUN_0200E75C +FUN_0200E75C: ; 0x0200E75C + ldr r2, _0200E76C ; =0x0000FFFF + cmp r1, r2 + bne _0200E768 + mov r1, #0x15 + lsl r1, r1, #0x4 + ldrh r1, [r0, r1] +_0200E768: + add r0, r1, #0x0 + bx lr + .balign 4 +_0200E76C: .word 0x0000FFFF + + thumb_func_start FUN_0200E770 +FUN_0200E770: ; 0x0200E770 + ldr r1, [r0, #0xc] + cmp r1, #0x1 + bne _0200E77C + add r2, r0, #0x0 + add r2, #0x14 + b _0200E780 +_0200E77C: + add r2, r0, #0x0 + add r2, #0x44 +_0200E780: + ldr r1, [r2, #0x28] + cmp r1, #0x1 + bne _0200E78A + ldrh r0, [r2, #0x24] + bx lr +_0200E78A: + mov r1, #0x15 + lsl r1, r1, #0x4 + ldrh r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_0200E794 +FUN_0200E794: ; 0x0200E794 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r1, #0x10] + mov r1, #0x0 + bl FUN_0200E440 + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start FUN_0200E7A8 +FUN_0200E7A8: ; 0x0200E7A8 + push {r3, lr} + add r1, r0, #0x0 + ldr r0, [r1, #0x28] + cmp r0, #0x0 + bne _0200E7CE + ldrh r2, [r1, #0x24] + ldr r0, _0200E7D0 ; =0x00007FFF + cmp r2, r0 + beq _0200E7BE + cmp r2, #0x0 + bne _0200E7CE +_0200E7BE: + ldr r0, [r1, #0x2c] + cmp r0, #0x0 + bne _0200E7CE + mov r2, #0x1 + ldr r0, _0200E7D4 ; =FUN_0200E794 + lsl r2, r2, #0xa + bl FUN_0200CA98 +_0200E7CE: + pop {r3, pc} + .balign 4 +_0200E7D0: .word 0x00007FFF +_0200E7D4: .word FUN_0200E794 + + thumb_func_start FUN_0200E7D8 +FUN_0200E7D8: ; 0x0200E7D8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x28] + cmp r0, #0x1 + bne _0200E800 + ldrh r1, [r4, #0x24] + ldr r0, _0200E804 ; =0x00007FFF + cmp r1, r0 + beq _0200E7EE + cmp r1, #0x0 + bne _0200E800 +_0200E7EE: + ldr r0, [r4, #0x2c] + cmp r0, #0x0 + bne _0200E800 + ldr r0, [r4, #0x10] + bl FUN_0200E3A0 + ldr r0, [r4, #0x10] + bl FUN_0200E388 +_0200E800: + pop {r4, pc} + nop +_0200E804: .word 0x00007FFF + + thumb_func_start FUN_0200E808 +FUN_0200E808: ; 0x0200E808 + push {r4, lr} + add r4, r0, #0x0 + add r2, r4, #0x0 + mov r1, #0x14 + mov r0, #0x0 +_0200E812: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0200E812 + add r0, r4, #0x0 + add r0, #0x14 + mov r1, #0x0 + mov r2, #0x30 + blx Call_FillMemWithValue + add r0, r4, #0x0 + add r0, #0x44 + mov r1, #0x0 + mov r2, #0x30 + blx Call_FillMemWithValue + add r2, r4, #0x0 + add r2, #0x74 + mov r1, #0x18 + mov r0, #0x0 +_0200E83A: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0200E83A + add r4, #0x8c + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0xc0 + blx Call_FillMemWithValue + pop {r4, pc} + + thumb_func_start FUN_0200E850 +FUN_0200E850: ; 0x0200E850 + push {r3, lr} + ldr r1, [r0, #0xc] + cmp r1, #0x0 + bne _0200E866 + mov r1, #0x1 + str r1, [r0, #0x28] + str r1, [r0, #0x2c] + bl FUN_0200F20C + mov r0, #0x0 + pop {r3, pc} +_0200E866: + bl FUN_0200F2AC + pop {r3, pc} + + thumb_func_start FUN_0200E86C +FUN_0200E86C: ; 0x0200E86C + push {r3, lr} + ldr r1, [r0, #0xc] + cmp r1, #0x0 + bne _0200E884 + mov r1, #0x0 + str r1, [r0, #0x28] + mov r2, #0x1 + str r2, [r0, #0x2c] + bl FUN_0200F20C + mov r0, #0x0 + pop {r3, pc} +_0200E884: + bl FUN_0200F2AC + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200E88C +FUN_0200E88C: ; 0x0200E88C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E8B4 + ldr r1, _0200E8BC ; =0x020ECF9F + ldr r0, _0200E8C0 ; =0x02105AF8 + str r1, [r0, #0x30] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200E8C4 ; =0x02105B28 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E8B4: + bl FUN_02010F70 + pop {r4, pc} + nop +_0200E8BC: .word 0x020ECF9F +_0200E8C0: .word 0x02105AF8 +_0200E8C4: .word 0x02105B28 + + thumb_func_start FUN_0200E8C8 +FUN_0200E8C8: ; 0x0200E8C8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E8EE + ldr r1, _0200E8F4 ; =0x020ECF9C + ldr r0, _0200E8F8 ; =0x02105AF8 + str r1, [r0, #0x40] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200E8FC ; =0x02105B38 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E8EE: + bl FUN_02010F70 + pop {r4, pc} + .balign 4 +_0200E8F4: .word 0x020ECF9C +_0200E8F8: .word 0x02105AF8 +_0200E8FC: .word 0x02105B38 + + thumb_func_start FUN_0200E900 +FUN_0200E900: ; 0x0200E900 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E928 + ldr r1, _0200E930 ; =0x020ECFA5 + ldr r0, _0200E934 ; =0x02105AF8 + str r1, [r0, #0x48] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200E938 ; =0x02105B40 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E928: + bl FUN_02010F70 + pop {r4, pc} + nop +_0200E930: .word 0x020ECFA5 +_0200E934: .word 0x02105AF8 +_0200E938: .word 0x02105B40 + + thumb_func_start FUN_0200E93C +FUN_0200E93C: ; 0x0200E93C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E962 + ldr r1, _0200E968 ; =0x020ECFA2 + ldr r0, _0200E96C ; =0x02105AF8 + str r1, [r0, #0x38] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200E970 ; =0x02105B30 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E962: + bl FUN_02010F70 + pop {r4, pc} + .balign 4 +_0200E968: .word 0x020ECFA2 +_0200E96C: .word 0x02105AF8 +_0200E970: .word 0x02105B30 + + thumb_func_start FUN_0200E974 +FUN_0200E974: ; 0x0200E974 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E996 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200E99C ; =0x020ED0E8 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E996: + bl FUN_0200FD1C + pop {r4, pc} + .balign 4 +_0200E99C: .word 0x020ED0E8 + + thumb_func_start FUN_0200E9A0 +FUN_0200E9A0: ; 0x0200E9A0 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E9C0 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200E9C8 ; =0x020ED154 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E9C0: + bl FUN_0200FD1C + pop {r4, pc} + nop +_0200E9C8: .word 0x020ED154 + + thumb_func_start FUN_0200E9CC +FUN_0200E9CC: ; 0x0200E9CC + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200E9F4 + ldr r1, _0200E9FC ; =0x020ECFC0 + ldr r0, _0200EA00 ; =0x02105AF8 + str r1, [r0, #0x20] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EA04 ; =0x02105B18 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200E9F4: + bl FUN_02010F70 + pop {r4, pc} + nop +_0200E9FC: .word 0x020ECFC0 +_0200EA00: .word 0x02105AF8 +_0200EA04: .word 0x02105B18 + + thumb_func_start FUN_0200EA08 +FUN_0200EA08: ; 0x0200EA08 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EA2E + ldr r1, _0200EA34 ; =0x020ECFC6 + ldr r0, _0200EA38 ; =0x02105AF8 + str r1, [r0, #0x28] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EA3C ; =0x02105B20 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EA2E: + bl FUN_02010F70 + pop {r4, pc} + .balign 4 +_0200EA34: .word 0x020ECFC6 +_0200EA38: .word 0x02105AF8 +_0200EA3C: .word 0x02105B20 + + thumb_func_start FUN_0200EA40 +FUN_0200EA40: ; 0x0200EA40 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EA68 + ldr r1, _0200EA70 ; =0x020ECFA8 + ldr r0, _0200EA74 ; =0x02105AF8 + str r1, [r0, #0x10] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EA78 ; =0x02105B08 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EA68: + bl FUN_02010F70 + pop {r4, pc} + nop +_0200EA70: .word 0x020ECFA8 +_0200EA74: .word 0x02105AF8 +_0200EA78: .word 0x02105B08 + + thumb_func_start FUN_0200EA7C +FUN_0200EA7C: ; 0x0200EA7C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EAA2 + ldr r1, _0200EAA8 ; =0x020ECFB4 + ldr r0, _0200EAAC ; =0x02105AF8 + str r1, [r0, #0x18] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EAB0 ; =0x02105B10 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EAA2: + bl FUN_02010F70 + pop {r4, pc} + .balign 4 +_0200EAA8: .word 0x020ECFB4 +_0200EAAC: .word 0x02105AF8 +_0200EAB0: .word 0x02105B10 + + thumb_func_start FUN_0200EAB4 +FUN_0200EAB4: ; 0x0200EAB4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EAD6 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EADC ; =0x020ED1C0 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EAD6: + bl FUN_0200FD1C + pop {r4, pc} + .balign 4 +_0200EADC: .word 0x020ED1C0 + + thumb_func_start FUN_0200EAE0 +FUN_0200EAE0: ; 0x0200EAE0 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EB00 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EB08 ; =0x020ED1E4 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EB00: + bl FUN_0200FD1C + pop {r4, pc} + nop +_0200EB08: .word 0x020ED1E4 + + thumb_func_start FUN_0200EB0C +FUN_0200EB0C: ; 0x0200EB0C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EB30 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EB38 ; =0x020ED208 + ldr r2, _0200EB3C ; =0x020ED22C + add r0, r4, #0x0 + bl FUN_0200FD6C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EB30: + bl FUN_0200FDC4 + pop {r4, pc} + nop +_0200EB38: .word 0x020ED208 +_0200EB3C: .word 0x020ED22C + + thumb_func_start FUN_0200EB40 +FUN_0200EB40: ; 0x0200EB40 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EB62 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EB68 ; =0x020ED250 + ldr r2, _0200EB6C ; =0x020ED274 + add r0, r4, #0x0 + bl FUN_0200FD6C + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EB62: + bl FUN_0200FDC4 + pop {r4, pc} + .balign 4 +_0200EB68: .word 0x020ED250 +_0200EB6C: .word 0x020ED274 + + thumb_func_start FUN_0200EB70 +FUN_0200EB70: ; 0x0200EB70 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EB92 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EB98 ; =0x020ED090 + add r0, r4, #0x0 + bl FUN_0200FF18 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EB92: + bl FUN_0200FF50 + pop {r4, pc} + .balign 4 +_0200EB98: .word 0x020ED090 + + thumb_func_start FUN_0200EB9C +FUN_0200EB9C: ; 0x0200EB9C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EBBC + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EBC4 ; =0x020ED040 + add r0, r4, #0x0 + bl FUN_0200FF18 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EBBC: + bl FUN_0200FF50 + pop {r4, pc} + nop +_0200EBC4: .word 0x020ED040 + + thumb_func_start FUN_0200EBC8 +FUN_0200EBC8: ; 0x0200EBC8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EBEA + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EBF0 ; =0x020ED050 + add r0, r4, #0x0 + bl FUN_0200FF18 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EBEA: + bl FUN_0200FF50 + pop {r4, pc} + .balign 4 +_0200EBF0: .word 0x020ED050 + + thumb_func_start FUN_0200EBF4 +FUN_0200EBF4: ; 0x0200EBF4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EC14 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EC1C ; =0x020ED060 + add r0, r4, #0x0 + bl FUN_0200FF18 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EC14: + bl FUN_0200FF50 + pop {r4, pc} + nop +_0200EC1C: .word 0x020ED060 + + thumb_func_start FUN_0200EC20 +FUN_0200EC20: ; 0x0200EC20 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EC42 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EC48 ; =0x020ECFE0 + add r0, r4, #0x0 + bl FUN_020101EC + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EC42: + bl FUN_02010224 + pop {r4, pc} + .balign 4 +_0200EC48: .word 0x020ECFE0 + + thumb_func_start FUN_0200EC4C +FUN_0200EC4C: ; 0x0200EC4C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EC6C + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EC74 ; =0x020ECFEC + add r0, r4, #0x0 + bl FUN_020101EC + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EC6C: + bl FUN_02010224 + pop {r4, pc} + nop +_0200EC74: .word 0x020ECFEC + + thumb_func_start FUN_0200EC78 +FUN_0200EC78: ; 0x0200EC78 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EC9A + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200ECA0 ; =0x020ED0A0 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EC9A: + bl FUN_0200FD1C + pop {r4, pc} + .balign 4 +_0200ECA0: .word 0x020ED0A0 + + thumb_func_start FUN_0200ECA4 +FUN_0200ECA4: ; 0x0200ECA4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200ECC4 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200ECCC ; =0x020ED0C4 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200ECC4: + bl FUN_0200FD1C + pop {r4, pc} + nop +_0200ECCC: .word 0x020ED0C4 + + thumb_func_start FUN_0200ECD0 +FUN_0200ECD0: ; 0x0200ECD0 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200ECF2 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200ECF8 ; =0x020ED10C + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200ECF2: + bl FUN_0200FD1C + pop {r4, pc} + .balign 4 +_0200ECF8: .word 0x020ED10C + + thumb_func_start FUN_0200ECFC +FUN_0200ECFC: ; 0x0200ECFC + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200ED1C + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200ED24 ; =0x020ED178 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200ED1C: + bl FUN_0200FD1C + pop {r4, pc} + nop +_0200ED24: .word 0x020ED178 + + thumb_func_start FUN_0200ED28 +FUN_0200ED28: ; 0x0200ED28 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200ED4A + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200ED50 ; =0x020ED004 + add r0, r4, #0x0 + bl FUN_020103F0 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200ED4A: + bl FUN_02010428 + pop {r4, pc} + .balign 4 +_0200ED50: .word 0x020ED004 + + thumb_func_start FUN_0200ED54 +FUN_0200ED54: ; 0x0200ED54 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200ED74 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200ED7C ; =0x020ED010 + add r0, r4, #0x0 + bl FUN_020103F0 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200ED74: + bl FUN_02010428 + pop {r4, pc} + nop +_0200ED7C: .word 0x020ED010 + + thumb_func_start FUN_0200ED80 +FUN_0200ED80: ; 0x0200ED80 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EDC4 + ldr r0, _0200EDCC ; =0x020ED298 + mov r1, #0x4 + str r0, [sp, #0x0] + ldr r0, _0200EDD0 ; =0x020ED2D8 + str r0, [sp, #0x4] + add r0, sp, #0x0 + strb r1, [r0, #0x8] + mov r1, #0x0 + strb r1, [r0, #0x9] + mov r1, #0x3f + strb r1, [r0, #0xa] + mov r1, #0x20 + strb r1, [r0, #0xb] + mov r1, #0x1 + strb r1, [r0, #0xc] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02010688 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + add sp, #0x10 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EDC4: + bl FUN_020106C0 + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0200EDCC: .word 0x020ED298 +_0200EDD0: .word 0x020ED2D8 + + thumb_func_start FUN_0200EDD4 +FUN_0200EDD4: ; 0x0200EDD4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EE14 + ldr r0, _0200EE1C ; =0x020ED318 + mov r1, #0x4 + str r0, [sp, #0x0] + ldr r0, _0200EE20 ; =0x020ED358 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x0 + strb r1, [r0, #0x8] + strb r2, [r0, #0x9] + mov r1, #0x3f + strb r1, [r0, #0xa] + mov r1, #0x20 + strb r1, [r0, #0xb] + strb r2, [r0, #0xc] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02010688 + mov r0, #0x0 + str r0, [r4, #0x28] + add sp, #0x10 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EE14: + bl FUN_020106C0 + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0200EE1C: .word 0x020ED318 +_0200EE20: .word 0x020ED358 + + thumb_func_start FUN_0200EE24 +FUN_0200EE24: ; 0x0200EE24 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EE4C + ldr r1, _0200EE54 ; =0x020ECFD5 + ldr r0, _0200EE58 ; =0x02105AF8 + str r1, [r0, #0x0] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EE5C ; =0x02105AF8 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EE4C: + bl FUN_02010F70 + pop {r4, pc} + nop +_0200EE54: .word 0x020ECFD5 +_0200EE58: .word 0x02105AF8 +_0200EE5C: .word 0x02105AF8 + + thumb_func_start FUN_0200EE60 +FUN_0200EE60: ; 0x0200EE60 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EE86 + ldr r1, _0200EE8C ; =0x020ECFCC + ldr r0, _0200EE90 ; =0x02105AF8 + str r1, [r0, #0x8] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EE94 ; =0x02105B00 + add r0, r4, #0x0 + bl FUN_02010F2C + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EE86: + bl FUN_02010F70 + pop {r4, pc} + .balign 4 +_0200EE8C: .word 0x020ECFCC +_0200EE90: .word 0x02105AF8 +_0200EE94: .word 0x02105B00 + + thumb_func_start FUN_0200EE98 +FUN_0200EE98: ; 0x0200EE98 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EECA + ldr r3, _0200EED4 ; =0x020ECFF8 + add r2, sp, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02010948 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + add sp, #0xc + str r0, [r4, #0x2c] + pop {r3-r4, pc} +_0200EECA: + bl FUN_02010988 + add sp, #0xc + pop {r3-r4, pc} + nop +_0200EED4: .word 0x020ECFF8 + + thumb_func_start FUN_0200EED8 +FUN_0200EED8: ; 0x0200EED8 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EF08 + ldr r3, _0200EF10 ; =0x020ED034 + add r2, sp, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02010948 + mov r0, #0x0 + str r0, [r4, #0x28] + add sp, #0xc + str r0, [r4, #0x2c] + pop {r3-r4, pc} +_0200EF08: + bl FUN_02010988 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_0200EF10: .word 0x020ED034 + + thumb_func_start FUN_0200EF14 +FUN_0200EF14: ; 0x0200EF14 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EF46 + ldr r3, _0200EF50 ; =0x020ED01C + add r2, sp, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02010C7C + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + add sp, #0xc + str r0, [r4, #0x2c] + pop {r3-r4, pc} +_0200EF46: + bl FUN_02010CBC + add sp, #0xc + pop {r3-r4, pc} + nop +_0200EF50: .word 0x020ED01C + + thumb_func_start FUN_0200EF54 +FUN_0200EF54: ; 0x0200EF54 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EF84 + ldr r3, _0200EF8C ; =0x020ED028 + add r2, sp, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02010C7C + mov r0, #0x0 + str r0, [r4, #0x28] + add sp, #0xc + str r0, [r4, #0x2c] + pop {r3-r4, pc} +_0200EF84: + bl FUN_02010CBC + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_0200EF8C: .word 0x020ED028 + + thumb_func_start FUN_0200EF90 +FUN_0200EF90: ; 0x0200EF90 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EFB2 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EFB8 ; =0x020ED080 + add r0, r4, #0x0 + bl FUN_0200FF18 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EFB2: + bl FUN_0200FF50 + pop {r4, pc} + .balign 4 +_0200EFB8: .word 0x020ED080 + + thumb_func_start FUN_0200EFBC +FUN_0200EFBC: ; 0x0200EFBC + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200EFDC + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200EFE4 ; =0x020ED070 + add r0, r4, #0x0 + bl FUN_0200FF18 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200EFDC: + bl FUN_0200FF50 + pop {r4, pc} + nop +_0200EFE4: .word 0x020ED070 + + thumb_func_start FUN_0200EFE8 +FUN_0200EFE8: ; 0x0200EFE8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200F00A + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200F010 ; =0x020ED130 + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200F00A: + bl FUN_0200FD1C + pop {r4, pc} + .balign 4 +_0200F010: .word 0x020ED130 + + thumb_func_start FUN_0200F014 +FUN_0200F014: ; 0x0200F014 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200F034 + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200F03C ; =0x020ED19C + add r0, r4, #0x0 + bl FUN_0200FCC8 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200F034: + bl FUN_0200FD1C + pop {r4, pc} + nop +_0200F03C: .word 0x020ED19C + + thumb_func_start FUN_0200F040 +FUN_0200F040: ; 0x0200F040 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200F068 + ldr r1, _0200F070 ; =0x020ECFAE + ldr r0, _0200F074 ; =0x02105AF8 + str r1, [r0, #0x74] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200F078 ; =0x02105B48 + add r0, r4, #0x0 + bl FUN_020111AC + mov r0, #0x1 + str r0, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + pop {r4, pc} +_0200F068: + bl FUN_02011214 + pop {r4, pc} + nop +_0200F070: .word 0x020ECFAE +_0200F074: .word 0x02105AF8 +_0200F078: .word 0x02105B48 + + thumb_func_start FUN_0200F07C +FUN_0200F07C: ; 0x0200F07C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + bne _0200F0A2 + ldr r1, _0200F0A8 ; =0x020ECFBA + ldr r0, _0200F0AC ; =0x02105B78 + str r1, [r0, #0x24] + ldrh r0, [r4, #0x24] + bl FUN_0200E420 + ldr r1, _0200F0B0 ; =0x02105B78 + add r0, r4, #0x0 + bl FUN_020111AC + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + pop {r4, pc} +_0200F0A2: + bl FUN_02011214 + pop {r4, pc} + .balign 4 +_0200F0A8: .word 0x020ECFBA +_0200F0AC: .word 0x02105B78 +_0200F0B0: .word 0x02105B78 + + thumb_func_start FUN_0200F0B4 +FUN_0200F0B4: ; 0x0200F0B4 + asr r0, r0, #0x4 + lsl r1, r0, #0x1 + lsl r0, r1, #0x1 + ldr r2, _0200F0C8 ; =0x020FFA38 + add r1, r1, #0x1 + lsl r1, r1, #0x1 + ldr r3, _0200F0CC ; =FX_Div + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + bx r3 + .balign 4 +_0200F0C8: .word 0x020FFA38 +_0200F0CC: .word FX_Div + + thumb_func_start FUN_0200F0D0 +FUN_0200F0D0: ; 0x0200F0D0 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0200F0B4 + lsl r2, r4, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r0, r1, #0xc + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200F0F8 +FUN_0200F0F8: ; 0x0200F0F8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + bl FUN_0200F0B4 + cmp r6, r7 + bge _0200F142 + lsl r1, r6, #0x2 + str r0, [sp, #0x0] + asr r0, r0, #0x1f + lsl r4, r6, #0xc + add r5, r5, r1 + str r0, [sp, #0x4] +_0200F116: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + asr r3, r4, #0x1f + add r2, r4, #0x0 + blx _ll_mul + mov r2, #0x2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _0200F148 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r0, r0, #0xc + stmia r5!, {r0} + mov r0, #0x1 + lsl r0, r0, #0xc + add r6, r6, #0x1 + add r4, r4, r0 + cmp r6, r7 + blt _0200F116 +_0200F142: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0200F148: .word 0x00000000 + + thumb_func_start FUN_0200F14C +FUN_0200F14C: ; 0x0200F14C + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0200F0B4 + add r1, r0, #0x0 + lsr r0, r4, #0x1f + add r0, r4, r0 + asr r0, r0, #0x1 + lsl r0, r0, #0xc + blx FX_Div + pop {r4, pc} + + thumb_func_start FUN_0200F164 +FUN_0200F164: ; 0x0200F164 + ldr r3, _0200F170 ; =_s32_div_f + sub r0, r1, r0 + lsl r0, r0, #0x7 + add r1, r2, #0x0 + bx r3 + nop +_0200F170: .word _s32_div_f + + thumb_func_start FUN_0200F174 +FUN_0200F174: ; 0x0200F174 + add r0, r0, r1 + bpl _0200F17A + mov r0, #0x0 +_0200F17A: + cmp r0, #0xff + ble _0200F180 + mov r0, #0xff +_0200F180: + bx lr + .balign 4 + + thumb_func_start FUN_0200F184 +FUN_0200F184: ; 0x0200F184 + ldr r3, [r0, #0x0] + ldr r2, [r1, #0x0] + add r2, r3, r2 + str r2, [r0, #0x0] + ldr r3, [r0, #0x4] + ldr r2, [r1, #0x4] + add r2, r3, r2 + str r2, [r0, #0x4] + ldr r3, [r0, #0x8] + ldr r2, [r1, #0x8] + add r2, r3, r2 + str r2, [r0, #0x8] + ldr r2, [r0, #0xc] + ldr r1, [r1, #0xc] + add r1, r2, r1 + str r1, [r0, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_0200F1A8 +FUN_0200F1A8: ; 0x0200F1A8 + push {r3-r7, lr} + add r7, r1, #0x0 + ldr r1, [sp, #0x1c] + add r5, r3, #0x0 + str r1, [sp, #0x1c] + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x18] + lsl r1, r1, #0x7 + str r1, [r0, #0x0] + ldr r1, [r5, #0x4] + add r6, r2, #0x0 + lsl r1, r1, #0x7 + str r1, [r0, #0x4] + ldr r1, [r5, #0x8] + add r2, r4, #0x0 + lsl r1, r1, #0x7 + str r1, [r0, #0x8] + ldr r1, [r5, #0xc] + lsl r1, r1, #0x7 + str r1, [r0, #0xc] + ldmia r2!, {r0-r1} + stmia r7!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r7!, {r0-r1} + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + ldr r2, [sp, #0x1c] + bl FUN_0200F164 + str r0, [r6, #0x0] + ldr r0, [r5, #0x4] + ldr r1, [r4, #0x4] + ldr r2, [sp, #0x1c] + bl FUN_0200F164 + str r0, [r6, #0x4] + ldr r0, [r5, #0x8] + ldr r1, [r4, #0x8] + ldr r2, [sp, #0x1c] + bl FUN_0200F164 + str r0, [r6, #0x8] + ldr r0, [r5, #0xc] + ldr r1, [r4, #0xc] + ldr r2, [sp, #0x1c] + bl FUN_0200F164 + str r0, [r6, #0xc] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200F20C +FUN_0200F20C: ; 0x0200F20C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r6, r1, #0x0 + mov r1, #0x1c + bl FUN_02016998 + str r0, [r5, #0x14] + mov r2, #0x1c + mov r1, #0x0 +_0200F220: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _0200F220 + ldr r4, [r5, #0x14] + cmp r6, #0x0 + ldrh r1, [r5, #0x24] + ldr r0, _0200F2A8 ; =0x00007FFF + bne _0200F254 + cmp r1, r0 + bne _0200F23C + mov r7, #0x10 + mov r6, #0x0 + b _0200F274 +_0200F23C: + cmp r1, #0x0 + bne _0200F248 + mov r7, #0xf + mvn r7, r7 + mov r6, #0x0 + b _0200F274 +_0200F248: + mov r7, #0xf + mvn r7, r7 + mov r6, #0x0 + bl ErrorHandling + b _0200F274 +_0200F254: + cmp r1, r0 + bne _0200F25E + mov r7, #0x0 + mov r6, #0x10 + b _0200F274 +_0200F25E: + cmp r1, #0x0 + bne _0200F26A + mov r7, #0x0 + add r6, r7, #0x0 + sub r6, #0x10 + b _0200F274 +_0200F26A: + mov r7, #0x0 + add r6, r7, #0x0 + sub r6, #0x10 + bl ErrorHandling +_0200F274: + ldr r0, [r5, #0x10] + add r1, r7, #0x0 + bl FUN_0200E440 + ldr r0, [r5, #0x4] + add r1, r6, #0x0 + str r0, [r4, #0x0] + ldr r0, [r5, #0x8] + str r0, [r4, #0x4] + mov r0, #0x0 + str r0, [r4, #0x8] + lsl r0, r7, #0x7 + str r0, [r4, #0xc] + lsl r0, r6, #0x7 + str r0, [r4, #0x10] + ldr r2, [r5, #0x4] + add r0, r7, #0x0 + bl FUN_0200F164 + str r0, [r4, #0x14] + ldr r0, [r5, #0x10] + str r0, [r4, #0x18] + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + pop {r3-r7, pc} + .balign 4 +_0200F2A8: .word 0x00007FFF + + thumb_func_start FUN_0200F2AC +FUN_0200F2AC: ; 0x0200F2AC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0xc] + mov r4, #0x0 + ldr r0, [r5, #0x14] + cmp r1, #0x1 + beq _0200F2C4 + cmp r1, #0x2 + beq _0200F2D4 + cmp r1, #0x3 + beq _0200F2E6 + b _0200F2E8 +_0200F2C4: + bl FUN_0200F2EC + cmp r0, #0x1 + bne _0200F2E8 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200F2E8 +_0200F2D4: + bl FUN_02016A18 + add r0, r4, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r4, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200F2E8 +_0200F2E6: + mov r4, #0x1 +_0200F2E8: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0200F2EC +FUN_0200F2EC: ; 0x0200F2EC + push {r4, lr} + add r1, r0, #0x0 + ldr r0, [r1, #0x8] + mov r4, #0x0 + add r2, r0, #0x1 + str r2, [r1, #0x8] + ldr r0, [r1, #0x4] + cmp r2, r0 + blt _0200F32A + str r4, [r1, #0x8] + ldr r0, [r1, #0x0] + sub r0, r0, #0x1 + cmp r0, #0x0 + ble _0200F314 + str r0, [r1, #0x0] + ldr r2, [r1, #0xc] + ldr r0, [r1, #0x14] + add r0, r2, r0 + str r0, [r1, #0xc] + b _0200F31A +_0200F314: + ldr r0, [r1, #0x10] + mov r4, #0x1 + str r0, [r1, #0xc] +_0200F31A: + ldr r2, [r1, #0xc] + ldr r0, [r1, #0x18] + asr r1, r2, #0x6 + lsr r1, r1, #0x19 + add r1, r2, r1 + asr r1, r1, #0x7 + bl FUN_0200E440 +_0200F32A: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0200F330 +FUN_0200F330: ; 0x0200F330 + push {r4-r6, lr} + add r4, r0, #0x0 + bne _0200F33A + bl ErrorHandling +_0200F33A: + ldr r0, _0200F54C ; =0x04000006 + ldrh r0, [r0, #0x0] + cmp r0, #0xc0 + bge _0200F3E0 + add r5, r0, #0x1 + cmp r5, #0xbf + ble _0200F34A + sub r5, #0xc0 +_0200F34A: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0200F3FA + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + ldr r3, [r4, #0x8] + lsl r5, r5, #0x1 + mov r4, #0x6 + add r1, r0, r5 + lsl r4, r4, #0x6 + ldrsh r2, [r1, r4] + lsl r4, r4, #0x2 + ldrsh r1, [r0, r5] + ldr r0, [r0, r4] + cmp r0, #0x0 + ldr r0, _0200F550 ; =0x04000004 + bne _0200F3B4 + cmp r3, #0x0 + bne _0200F394 + ldrh r4, [r0, #0x0] + mov r3, #0x2 + tst r3, r4 + beq _0200F3E0 + lsl r3, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + orr r1, r3 + strh r1, [r0, #0x3c] + mov r1, #0xc0 + add r0, #0x40 + strh r1, [r0, #0x0] + pop {r4-r6, pc} +_0200F394: + ldrh r3, [r0, #0x0] + mov r0, #0x2 + tst r0, r3 + beq _0200F3E0 + mov r0, #0xff + lsl r1, r1, #0x8 + lsl r0, r0, #0x8 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0200F554 ; =0x04001040 + strh r0, [r1, #0x0] + mov r0, #0xc0 + strh r0, [r1, #0x4] + pop {r4-r6, pc} +_0200F3B4: + cmp r3, #0x0 + bne _0200F3D8 + ldrh r4, [r0, #0x0] + mov r3, #0x2 + tst r3, r4 + beq _0200F3E0 + lsl r3, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + orr r1, r3 + strh r1, [r0, #0x3e] + mov r1, #0xc0 + add r0, #0x42 + strh r1, [r0, #0x0] + pop {r4-r6, pc} +_0200F3D8: + ldrh r3, [r0, #0x0] + mov r0, #0x2 + tst r0, r3 + bne _0200F3E2 +_0200F3E0: + b _0200F548 +_0200F3E2: + mov r0, #0xff + lsl r1, r1, #0x8 + lsl r0, r0, #0x8 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0200F558 ; =0x04001042 + strh r0, [r1, #0x0] + mov r0, #0xc0 + strh r0, [r1, #0x4] + pop {r4-r6, pc} +_0200F3FA: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + add r3, r0, #0x0 + lsl r5, r5, #0x1 + mov r6, #0x6 + add r1, r3, r5 + lsl r6, r6, #0x6 + ldrsh r2, [r1, r6] + lsl r6, r6, #0x2 + ldrsh r1, [r3, r5] + ldr r3, [r3, r6] + ldr r0, [r4, #0x8] + cmp r3, #0x0 + bne _0200F460 + cmp r0, #0x0 + ldr r0, _0200F550 ; =0x04000004 + bne _0200F440 + ldrh r6, [r0, #0x0] + mov r3, #0x2 + tst r3, r6 + beq _0200F4A4 + lsl r3, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + orr r1, r3 + strh r1, [r0, #0x3c] + mov r1, #0xc0 + add r0, #0x40 + strh r1, [r0, #0x0] + b _0200F4A4 +_0200F440: + ldrh r3, [r0, #0x0] + mov r0, #0x2 + tst r0, r3 + beq _0200F4A4 + mov r0, #0xff + lsl r1, r1, #0x8 + lsl r0, r0, #0x8 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0200F554 ; =0x04001040 + strh r0, [r1, #0x0] + mov r0, #0xc0 + strh r0, [r1, #0x4] + b _0200F4A4 +_0200F460: + cmp r0, #0x0 + ldr r0, _0200F550 ; =0x04000004 + bne _0200F486 + ldrh r6, [r0, #0x0] + mov r3, #0x2 + tst r3, r6 + beq _0200F4A4 + lsl r3, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + orr r1, r3 + strh r1, [r0, #0x3e] + mov r1, #0xc0 + add r0, #0x42 + strh r1, [r0, #0x0] + b _0200F4A4 +_0200F486: + ldrh r3, [r0, #0x0] + mov r0, #0x2 + tst r0, r3 + beq _0200F4A4 + mov r0, #0xff + lsl r1, r1, #0x8 + lsl r0, r0, #0x8 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0200F558 ; =0x04001042 + strh r0, [r1, #0x0] + mov r0, #0xc0 + strh r0, [r1, #0x4] +_0200F4A4: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200F5D8 + ldr r3, [r4, #0x8] + mov r4, #0x6 + add r1, r0, r5 + lsl r4, r4, #0x6 + ldrsh r2, [r1, r4] + lsl r4, r4, #0x2 + ldrsh r1, [r0, r5] + ldr r0, [r0, r4] + cmp r0, #0x0 + ldr r0, _0200F550 ; =0x04000004 + bne _0200F506 + cmp r3, #0x0 + bne _0200F4E6 + ldrh r4, [r0, #0x0] + mov r3, #0x2 + tst r3, r4 + beq _0200F548 + lsl r3, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + orr r1, r3 + strh r1, [r0, #0x3c] + mov r1, #0xc0 + add r0, #0x40 + strh r1, [r0, #0x0] + pop {r4-r6, pc} +_0200F4E6: + ldrh r3, [r0, #0x0] + mov r0, #0x2 + tst r0, r3 + beq _0200F548 + mov r0, #0xff + lsl r1, r1, #0x8 + lsl r0, r0, #0x8 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0200F554 ; =0x04001040 + strh r0, [r1, #0x0] + mov r0, #0xc0 + strh r0, [r1, #0x4] + pop {r4-r6, pc} +_0200F506: + cmp r3, #0x0 + bne _0200F52A + ldrh r4, [r0, #0x0] + mov r3, #0x2 + tst r3, r4 + beq _0200F548 + lsl r3, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + orr r1, r3 + strh r1, [r0, #0x3e] + mov r1, #0xc0 + add r0, #0x42 + strh r1, [r0, #0x0] + pop {r4-r6, pc} +_0200F52A: + ldrh r3, [r0, #0x0] + mov r0, #0x2 + tst r0, r3 + beq _0200F548 + mov r0, #0xff + lsl r1, r1, #0x8 + lsl r0, r0, #0x8 + and r1, r0 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + ldr r1, _0200F558 ; =0x04001042 + strh r0, [r1, #0x0] + mov r0, #0xc0 + strh r0, [r1, #0x4] +_0200F548: + pop {r4-r6, pc} + nop +_0200F54C: .word 0x04000006 +_0200F550: .word 0x04000004 +_0200F554: .word 0x04001040 +_0200F558: .word 0x04001042 + + thumb_func_start FUN_0200F55C +FUN_0200F55C: ; 0x0200F55C + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x0 + beq _0200F572 + cmp r4, #0x1 + beq _0200F572 + cmp r4, #0x2 + beq _0200F58C + pop {r4-r6, pc} +_0200F572: + ldr r1, _0200F5B8 ; =0x00000604 + add r0, r3, #0x0 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r0, #0x1 + str r0, [r5, #0x4] + str r6, [r5, #0x8] + mov r0, #0x6 + ldr r1, [r5, #0x0] + lsl r0, r0, #0x8 + str r4, [r1, r0] + pop {r4-r6, pc} +_0200F58C: + ldr r1, _0200F5BC ; =0x00000C08 + add r0, r3, #0x0 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r0, #0x2 + str r0, [r5, #0x4] + mov r0, #0x6 + mov r3, #0x0 + lsl r0, r0, #0x8 + str r6, [r5, #0x8] + add r4, r3, #0x0 + add r1, r0, #0x4 +_0200F5A6: + ldr r2, [r5, #0x0] + add r2, r2, r4 + str r3, [r2, r0] + add r3, r3, #0x1 + add r4, r4, r1 + cmp r3, #0x2 + blt _0200F5A6 + pop {r4-r6, pc} + nop +_0200F5B8: .word 0x00000604 +_0200F5BC: .word 0x00000C08 + + thumb_func_start FUN_0200F5C0 +FUN_0200F5C0: ; 0x0200F5C0 + ldr r3, _0200F5C4 ; =FUN_0200F5C8 + bx r3 + .balign 4 +_0200F5C4: .word FUN_0200F5C8 + + thumb_func_start FUN_0200F5C8 +FUN_0200F5C8: ; 0x0200F5C8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_0200F5D8 +FUN_0200F5D8: ; 0x0200F5D8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + add r4, r1, #0x0 + cmp r0, r4 + bgt _0200F5E8 + bl ErrorHandling +_0200F5E8: + ldr r0, _0200F5F4 ; =0x00000604 + ldr r1, [r5, #0x0] + mul r0, r4 + add r0, r1, r0 + pop {r3-r5, pc} + nop +_0200F5F4: .word 0x00000604 + + thumb_func_start FUN_0200F5F8 +FUN_0200F5F8: ; 0x0200F5F8 + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x4] + mov r4, #0x0 + cmp r0, #0x0 + ble _0200F624 + mov r7, #0x3 + lsl r7, r7, #0x8 + add r6, r7, #0x0 +_0200F60C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200F5D8 + add r1, r0, r6 + add r2, r7, #0x0 + blx memcpy + ldr r0, [r5, #0x4] + add r4, r4, #0x1 + cmp r4, r0 + blt _0200F60C +_0200F624: + ldr r0, [sp, #0x0] + bl FUN_0200CAB4 + pop {r3-r7, pc} + + thumb_func_start FUN_0200F62C +FUN_0200F62C: ; 0x0200F62C + push {r4-r5, lr} + sub sp, #0xc + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r0, #0x0 + bne _0200F644 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02011634 + add sp, #0xc + pop {r4-r5, pc} +_0200F644: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02011634 + mov r2, #0x0 + add r0, r5, #0x0 + mov r1, #0x3f + add r3, r2, #0x0 + str r4, [sp, #0x0] + bl FUN_02011650 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, r5, #0x0 + add r2, r1, #0x0 + add r3, r1, #0x0 + str r4, [sp, #0x8] + bl FUN_02011698 + add r0, r5, #0x0 + mov r1, #0x20 + mov r2, #0x0 + add r3, r4, #0x0 + bl FUN_02011678 + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_0200F67C +FUN_0200F67C: ; 0x0200F67C + push {r4-r7, lr} + sub sp, #0xc + add r7, r2, #0x0 + ldr r2, [sp, #0x34] + add r6, r0, #0x0 + add r5, r3, #0x0 + ldr r4, [sp, #0x20] + cmp r2, #0x0 + bne _0200F6B8 + add r0, r1, #0x0 + mov r1, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + bl FUN_020114AC + add r0, r7, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_02011534 + str r5, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + str r4, [sp, #0x4] + bl FUN_02011574 + add sp, #0xc + pop {r4-r7, pc} +_0200F6B8: + mov r2, #0x0 + str r4, [sp, #0x0] + bl FUN_02011650 + add r0, r6, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + add r3, r4, #0x0 + bl FUN_02011678 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x24] + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r6, #0x0 + str r4, [sp, #0x8] + bl FUN_02011698 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0200F6E4 +FUN_0200F6E4: ; 0x0200F6E4 + push {r3, lr} + cmp r3, #0x0 + bne _0200F6F4 + add r0, r1, #0x0 + add r1, r2, #0x0 + bl FUN_02011480 + pop {r3, pc} +_0200F6F4: + bl FUN_02011634 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0200F6FC +FUN_0200F6FC: ; 0x0200F6FC + push {r3-r7, lr} + add r4, r2, #0x0 + mov r2, #0xc3 + add r6, r1, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + add r5, r0, #0x0 + add r7, r3, #0x0 + blx Call_FillMemWithValue + cmp r4, #0x1 + bne _0200F726 + mov r0, #0x6 + lsl r0, r0, #0x6 + str r7, [r5, r0] + mov r0, #0xc2 + lsl r0, r0, #0x2 + strb r4, [r5, r0] + add r0, r0, #0x1 + strb r6, [r5, r0] + pop {r3-r7, pc} +_0200F726: + mov r0, #0x6 + lsl r0, r0, #0x6 + str r7, [r5, r0] + mov r0, #0xc1 + ldr r1, [sp, #0x18] + lsl r0, r0, #0x2 + str r1, [r5, r0] + add r1, r0, #0x4 + strb r4, [r5, r1] + add r0, r0, #0x5 + strb r6, [r5, r0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200F740 +FUN_0200F740: ; 0x0200F740 + ldr r3, _0200F74C ; =FUN_0200CA98 + add r1, r0, #0x0 + ldr r0, _0200F750 ; =FUN_0200F780 + ldr r2, _0200F754 ; =0x000003FF + bx r3 + nop +_0200F74C: .word FUN_0200CA98 +_0200F750: .word FUN_0200F780 +_0200F754: .word 0x000003FF + + thumb_func_start FUN_0200F758 +FUN_0200F758: ; 0x0200F758 + push {r3, lr} + ldr r3, _0200F768 ; =0x00000309 + str r2, [sp, #0x0] + ldrb r3, [r1, r3] + ldr r2, _0200F76C ; =FUN_0200F7AC + bl FUN_0200E6CC + pop {r3, pc} + .balign 4 +_0200F768: .word 0x00000309 +_0200F76C: .word FUN_0200F7AC + + thumb_func_start FUN_0200F770 +FUN_0200F770: ; 0x0200F770 + ldr r3, _0200F778 ; =0x00000309 + ldrb r1, [r1, r3] + ldr r3, _0200F77C ; =FUN_0200E6F8 + bx r3 + .balign 4 +_0200F778: .word 0x00000309 +_0200F77C: .word FUN_0200E6F8 + + thumb_func_start FUN_0200F780 +FUN_0200F780: ; 0x0200F780 + push {r3-r7, lr} + mov r7, #0xc0 + add r6, r7, #0x0 + str r0, [sp, #0x0] + add r5, r1, #0x0 + mov r4, #0x0 + add r6, #0xc4 +_0200F78E: + add r0, r5, #0x0 + add r0, #0xc0 + add r1, r5, #0x0 + add r2, r7, #0x0 + blx memcpy + add r4, r4, #0x1 + add r5, r5, r6 + cmp r4, #0x2 + blt _0200F78E + ldr r0, [sp, #0x0] + bl FUN_0200CAB4 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200F7AC +FUN_0200F7AC: ; 0x0200F7AC + push {r3-r5, lr} + add r4, r0, #0x0 + bne _0200F7B6 + bl ErrorHandling +_0200F7B6: + ldr r0, _0200FAC0 ; =0x04000006 + ldrh r0, [r0, #0x0] + cmp r0, #0xc0 + bge _0200F838 + add r0, r0, #0x1 + cmp r0, #0xbf + ble _0200F7C6 + sub r0, #0xc0 +_0200F7C6: + mov r2, #0xc2 + lsl r2, r2, #0x2 + ldrb r1, [r4, r2] + cmp r1, #0x1 + beq _0200F7D2 + b _0200F96C +_0200F7D2: + add r0, r4, r0 + add r0, #0xc0 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0200F8A2 + add r0, r2, #0x1 + ldrb r0, [r4, r0] + cmp r0, #0x0 + ldr r0, _0200FAC4 ; =0x04000004 + bne _0200F802 + ldrh r2, [r0, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200F81C + add r0, #0x46 + ldrh r2, [r0, #0x0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x3f + orr r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0, #0x0] + b _0200F81C +_0200F802: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200F81C + ldr r1, _0200FAC8 ; =0x0400104A + mov r0, #0x3f + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x3f + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1, #0x0] +_0200F81C: + ldr r0, _0200FACC ; =0x00000309 + ldrb r1, [r4, r0] + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x0 + bne _0200F868 + cmp r1, #0x0 + bne _0200F84C + ldr r2, _0200FAC4 ; =0x04000004 + mov r0, #0x2 + ldrh r1, [r2, #0x0] + tst r0, r1 + bne _0200F83A +_0200F838: + b _0200FCB0 +_0200F83A: + add r2, #0x44 + ldrh r1, [r2, #0x0] + mov r0, #0x3f + bic r1, r0 + mov r0, #0x20 + orr r1, r0 + orr r0, r1 + strh r0, [r2, #0x0] + pop {r3-r5, pc} +_0200F84C: + ldr r0, _0200FAC4 ; =0x04000004 + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200F954 + ldr r1, _0200FAD0 ; =0x04001048 + mov r0, #0x3f + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x20 + orr r2, r0 + orr r0, r2 + strh r0, [r1, #0x0] + pop {r3-r5, pc} +_0200F868: + cmp r1, #0x0 + ldr r0, _0200FAC4 ; =0x04000004 + bne _0200F888 + ldrh r1, [r0, #0x0] + mov r2, #0x2 + tst r1, r2 + beq _0200F954 + add r0, #0x44 + ldrh r3, [r0, #0x0] + ldr r1, _0200FAD4 ; =0xFFFFC0FF + and r3, r1 + lsl r1, r2, #0xc + orr r3, r1 + orr r1, r3 + strh r1, [r0, #0x0] + pop {r3-r5, pc} +_0200F888: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200F954 + ldr r2, _0200FAD0 ; =0x04001048 + ldr r0, _0200FAD4 ; =0xFFFFC0FF + ldrh r1, [r2, #0x0] + and r1, r0 + lsr r0, r2, #0xd + orr r1, r0 + orr r0, r1 + strh r0, [r2, #0x0] + pop {r3-r5, pc} +_0200F8A2: + add r0, r2, #0x1 + ldrb r0, [r4, r0] + cmp r0, #0x0 + ldr r0, _0200FAC4 ; =0x04000004 + bne _0200F8C6 + ldrh r2, [r0, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200F8DE + add r0, #0x46 + ldrh r2, [r0, #0x0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x20 + orr r2, r1 + orr r1, r2 + strh r1, [r0, #0x0] + b _0200F8DE +_0200F8C6: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200F8DE + ldr r1, _0200FAC8 ; =0x0400104A + mov r0, #0x3f + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x20 + orr r2, r0 + orr r0, r2 + strh r0, [r1, #0x0] +_0200F8DE: + ldr r0, _0200FACC ; =0x00000309 + ldrb r1, [r4, r0] + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x0 + ldr r0, _0200FAC4 ; =0x04000004 + bne _0200F92A + cmp r1, #0x0 + bne _0200F90E + ldrh r2, [r0, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200F954 + add r0, #0x44 + ldrh r2, [r0, #0x0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x3f + orr r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0, #0x0] + pop {r3-r5, pc} +_0200F90E: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200F954 + ldr r1, _0200FAD0 ; =0x04001048 + mov r0, #0x3f + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x3f + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1, #0x0] + pop {r3-r5, pc} +_0200F92A: + cmp r1, #0x0 + bne _0200F94C + ldrh r1, [r0, #0x0] + mov r2, #0x2 + tst r1, r2 + beq _0200F954 + add r0, #0x44 + ldrh r3, [r0, #0x0] + ldr r1, _0200FAD4 ; =0xFFFFC0FF + and r3, r1 + mov r1, #0x3f + lsl r1, r1, #0x8 + orr r3, r1 + lsl r1, r2, #0xc + orr r1, r3 + strh r1, [r0, #0x0] + pop {r3-r5, pc} +_0200F94C: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + bne _0200F956 +_0200F954: + b _0200FCB0 +_0200F956: + ldr r2, _0200FAD0 ; =0x04001048 + ldr r0, _0200FAD4 ; =0xFFFFC0FF + ldrh r1, [r2, #0x0] + and r1, r0 + mov r0, #0x3f + lsl r0, r0, #0x8 + orr r1, r0 + lsr r0, r2, #0xd + orr r0, r1 + strh r0, [r2, #0x0] + pop {r3-r5, pc} +_0200F96C: + add r1, r4, r0 + add r1, #0xc0 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _0200FA38 + add r1, r2, #0x1 + ldrb r1, [r4, r1] + cmp r1, #0x0 + ldr r1, _0200FAC4 ; =0x04000004 + bne _0200F99C + ldrh r3, [r1, #0x0] + mov r2, #0x2 + tst r2, r3 + beq _0200F9B6 + add r1, #0x46 + ldrh r3, [r1, #0x0] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x3f + orr r3, r2 + mov r2, #0x20 + orr r2, r3 + strh r2, [r1, #0x0] + b _0200F9B6 +_0200F99C: + ldrh r2, [r1, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200F9B6 + ldr r2, _0200FAC8 ; =0x0400104A + mov r1, #0x3f + ldrh r3, [r2, #0x0] + bic r3, r1 + mov r1, #0x3f + orr r3, r1 + mov r1, #0x20 + orr r1, r3 + strh r1, [r2, #0x0] +_0200F9B6: + ldr r1, _0200FACC ; =0x00000309 + ldrb r2, [r4, r1] + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r1, [r4, r1] + cmp r1, #0x0 + ldr r1, _0200FAC4 ; =0x04000004 + bne _0200F9FE + cmp r2, #0x0 + bne _0200F9E4 + ldrh r3, [r1, #0x0] + mov r2, #0x2 + tst r2, r3 + beq _0200FA0A + add r1, #0x44 + ldrh r3, [r1, #0x0] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x20 + orr r3, r2 + orr r2, r3 + strh r2, [r1, #0x0] + b _0200FB16 +_0200F9E4: + ldrh r2, [r1, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200FA0A + ldr r2, _0200FAD0 ; =0x04001048 + mov r1, #0x3f + ldrh r3, [r2, #0x0] + bic r3, r1 + mov r1, #0x20 + orr r3, r1 + orr r1, r3 + strh r1, [r2, #0x0] + b _0200FB16 +_0200F9FE: + cmp r2, #0x0 + bne _0200FA1E + ldrh r2, [r1, #0x0] + mov r3, #0x2 + tst r2, r3 + bne _0200FA0C +_0200FA0A: + b _0200FB16 +_0200FA0C: + add r1, #0x44 + ldrh r5, [r1, #0x0] + ldr r2, _0200FAD4 ; =0xFFFFC0FF + and r5, r2 + lsl r2, r3, #0xc + orr r5, r2 + orr r2, r5 + strh r2, [r1, #0x0] + b _0200FB16 +_0200FA1E: + ldrh r2, [r1, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200FB16 + ldr r3, _0200FAD0 ; =0x04001048 + ldr r1, _0200FAD4 ; =0xFFFFC0FF + ldrh r2, [r3, #0x0] + and r2, r1 + lsr r1, r3, #0xd + orr r2, r1 + orr r1, r2 + strh r1, [r3, #0x0] + b _0200FB16 +_0200FA38: + add r1, r2, #0x1 + ldrb r1, [r4, r1] + cmp r1, #0x0 + ldr r1, _0200FAC4 ; =0x04000004 + bne _0200FA5C + ldrh r3, [r1, #0x0] + mov r2, #0x2 + tst r2, r3 + beq _0200FA74 + add r1, #0x46 + ldrh r3, [r1, #0x0] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x20 + orr r3, r2 + orr r2, r3 + strh r2, [r1, #0x0] + b _0200FA74 +_0200FA5C: + ldrh r2, [r1, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200FA74 + ldr r2, _0200FAC8 ; =0x0400104A + mov r1, #0x3f + ldrh r3, [r2, #0x0] + bic r3, r1 + mov r1, #0x20 + orr r3, r1 + orr r1, r3 + strh r1, [r2, #0x0] +_0200FA74: + ldr r1, _0200FACC ; =0x00000309 + ldrb r2, [r4, r1] + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r1, [r4, r1] + cmp r1, #0x0 + ldr r1, _0200FAC4 ; =0x04000004 + bne _0200FAD8 + cmp r2, #0x0 + bne _0200FAA4 + ldrh r3, [r1, #0x0] + mov r2, #0x2 + tst r2, r3 + beq _0200FB16 + add r1, #0x44 + ldrh r3, [r1, #0x0] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x3f + orr r3, r2 + mov r2, #0x20 + orr r2, r3 + strh r2, [r1, #0x0] + b _0200FB16 +_0200FAA4: + ldrh r2, [r1, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200FB16 + ldr r2, _0200FAD0 ; =0x04001048 + mov r1, #0x3f + ldrh r3, [r2, #0x0] + bic r3, r1 + mov r1, #0x3f + orr r3, r1 + mov r1, #0x20 + orr r1, r3 + strh r1, [r2, #0x0] + b _0200FB16 + .balign 4 +_0200FAC0: .word 0x04000006 +_0200FAC4: .word 0x04000004 +_0200FAC8: .word 0x0400104A +_0200FACC: .word 0x00000309 +_0200FAD0: .word 0x04001048 +_0200FAD4: .word 0xFFFFC0FF +_0200FAD8: + cmp r2, #0x0 + bne _0200FAFA + ldrh r2, [r1, #0x0] + mov r3, #0x2 + tst r2, r3 + beq _0200FB16 + add r1, #0x44 + ldrh r5, [r1, #0x0] + ldr r2, _0200FCB4 ; =0xFFFFC0FF + and r5, r2 + mov r2, #0x3f + lsl r2, r2, #0x8 + orr r5, r2 + lsl r2, r3, #0xc + orr r2, r5 + strh r2, [r1, #0x0] + b _0200FB16 +_0200FAFA: + ldrh r2, [r1, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200FB16 + ldr r3, _0200FCB8 ; =0x04001048 + ldr r1, _0200FCB4 ; =0xFFFFC0FF + ldrh r2, [r3, #0x0] + and r2, r1 + mov r1, #0x3f + lsl r1, r1, #0x8 + orr r2, r1 + lsr r1, r3, #0xd + orr r1, r2 + strh r1, [r3, #0x0] +_0200FB16: + mov r1, #0x61 + lsl r1, r1, #0x2 + add r1, r4, r1 + add r0, r1, r0 + add r0, #0xc0 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, _0200FCBC ; =0x00000309 + bne _0200FBEC + ldrb r0, [r4, r0] + cmp r0, #0x0 + ldr r0, _0200FCC0 ; =0x04000004 + bne _0200FB4C + ldrh r3, [r0, #0x0] + mov r2, #0x2 + tst r2, r3 + beq _0200FB66 + add r0, #0x46 + ldrh r3, [r0, #0x0] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x3f + orr r3, r2 + mov r2, #0x20 + orr r2, r3 + strh r2, [r0, #0x0] + b _0200FB66 +_0200FB4C: + ldrh r2, [r0, #0x0] + mov r0, #0x2 + tst r0, r2 + beq _0200FB66 + ldr r2, _0200FCC4 ; =0x0400104A + mov r0, #0x3f + ldrh r3, [r2, #0x0] + bic r3, r0 + mov r0, #0x3f + orr r3, r0 + mov r0, #0x20 + orr r0, r3 + strh r0, [r2, #0x0] +_0200FB66: + ldr r0, _0200FCBC ; =0x00000309 + ldrb r2, [r4, r0] + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r1, r0] + cmp r0, #0x0 + bne _0200FBB2 + cmp r2, #0x0 + bne _0200FB94 + ldr r2, _0200FCC0 ; =0x04000004 + mov r0, #0x2 + ldrh r1, [r2, #0x0] + tst r0, r1 + beq _0200FB9E + add r2, #0x44 + ldrh r1, [r2, #0x0] + mov r0, #0x3f + bic r1, r0 + mov r0, #0x20 + orr r1, r0 + orr r0, r1 + strh r0, [r2, #0x0] + pop {r3-r5, pc} +_0200FB94: + ldr r0, _0200FCC0 ; =0x04000004 + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + bne _0200FBA0 +_0200FB9E: + b _0200FCB0 +_0200FBA0: + ldr r1, _0200FCB8 ; =0x04001048 + mov r0, #0x3f + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x20 + orr r2, r0 + orr r0, r2 + strh r0, [r1, #0x0] + pop {r3-r5, pc} +_0200FBB2: + cmp r2, #0x0 + ldr r0, _0200FCC0 ; =0x04000004 + bne _0200FBD2 + ldrh r1, [r0, #0x0] + mov r2, #0x2 + tst r1, r2 + beq _0200FCB0 + add r0, #0x44 + ldrh r3, [r0, #0x0] + ldr r1, _0200FCB4 ; =0xFFFFC0FF + and r3, r1 + lsl r1, r2, #0xc + orr r3, r1 + orr r1, r3 + strh r1, [r0, #0x0] + pop {r3-r5, pc} +_0200FBD2: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200FCB0 + ldr r2, _0200FCB8 ; =0x04001048 + ldr r0, _0200FCB4 ; =0xFFFFC0FF + ldrh r1, [r2, #0x0] + and r1, r0 + lsr r0, r2, #0xd + orr r1, r0 + orr r0, r1 + strh r0, [r2, #0x0] + pop {r3-r5, pc} +_0200FBEC: + ldrb r0, [r4, r0] + cmp r0, #0x0 + ldr r0, _0200FCC0 ; =0x04000004 + bne _0200FC0E + ldrh r3, [r0, #0x0] + mov r2, #0x2 + tst r2, r3 + beq _0200FC26 + add r0, #0x46 + ldrh r3, [r0, #0x0] + mov r2, #0x3f + bic r3, r2 + mov r2, #0x20 + orr r3, r2 + orr r2, r3 + strh r2, [r0, #0x0] + b _0200FC26 +_0200FC0E: + ldrh r2, [r0, #0x0] + mov r0, #0x2 + tst r0, r2 + beq _0200FC26 + ldr r2, _0200FCC4 ; =0x0400104A + mov r0, #0x3f + ldrh r3, [r2, #0x0] + bic r3, r0 + mov r0, #0x20 + orr r3, r0 + orr r0, r3 + strh r0, [r2, #0x0] +_0200FC26: + ldr r0, _0200FCBC ; =0x00000309 + ldrb r2, [r4, r0] + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r1, r0] + cmp r0, #0x0 + ldr r0, _0200FCC0 ; =0x04000004 + bne _0200FC72 + cmp r2, #0x0 + bne _0200FC56 + ldrh r2, [r0, #0x0] + mov r1, #0x2 + tst r1, r2 + beq _0200FCB0 + add r0, #0x44 + ldrh r2, [r0, #0x0] + mov r1, #0x3f + bic r2, r1 + mov r1, #0x3f + orr r2, r1 + mov r1, #0x20 + orr r1, r2 + strh r1, [r0, #0x0] + pop {r3-r5, pc} +_0200FC56: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200FCB0 + ldr r1, _0200FCB8 ; =0x04001048 + mov r0, #0x3f + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x3f + orr r2, r0 + mov r0, #0x20 + orr r0, r2 + strh r0, [r1, #0x0] + pop {r3-r5, pc} +_0200FC72: + cmp r2, #0x0 + bne _0200FC94 + ldrh r1, [r0, #0x0] + mov r2, #0x2 + tst r1, r2 + beq _0200FCB0 + add r0, #0x44 + ldrh r3, [r0, #0x0] + ldr r1, _0200FCB4 ; =0xFFFFC0FF + and r3, r1 + mov r1, #0x3f + lsl r1, r1, #0x8 + orr r3, r1 + lsl r1, r2, #0xc + orr r1, r3 + strh r1, [r0, #0x0] + pop {r3-r5, pc} +_0200FC94: + ldrh r1, [r0, #0x0] + mov r0, #0x2 + tst r0, r1 + beq _0200FCB0 + ldr r2, _0200FCB8 ; =0x04001048 + ldr r0, _0200FCB4 ; =0xFFFFC0FF + ldrh r1, [r2, #0x0] + and r1, r0 + mov r0, #0x3f + lsl r0, r0, #0x8 + orr r1, r0 + lsr r0, r2, #0xd + orr r0, r1 + strh r0, [r2, #0x0] +_0200FCB0: + pop {r3-r5, pc} + nop +_0200FCB4: .word 0xFFFFC0FF +_0200FCB8: .word 0x04001048 +_0200FCBC: .word 0x00000309 +_0200FCC0: .word 0x04000004 +_0200FCC4: .word 0x0400104A + + thumb_func_start FUN_0200FCC8 +FUN_0200FCC8: ; 0x0200FCC8 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r6, r1, #0x0 + mov r1, #0x4c + bl FUN_02016998 + str r0, [r5, #0x14] + add r4, r0, #0x0 + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + add r0, r4, #0x0 + bl FUN_0200FE20 + add r6, #0x20 + ldrb r0, [r6, #0x0] + cmp r0, #0x0 + ldr r0, [r5, #0x18] + bne _0200FD06 + ldr r2, [r4, #0x30] + ldr r3, [r4, #0x44] + mov r1, #0x1 + bl FUN_0200F6E4 + b _0200FD10 +_0200FD06: + ldr r2, [r4, #0x30] + ldr r3, [r4, #0x44] + mov r1, #0x2 + bl FUN_0200F6E4 +_0200FD10: + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0200FD1C +FUN_0200FD1C: ; 0x0200FD1C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _0200FD34 + cmp r0, #0x2 + beq _0200FD50 + cmp r0, #0x3 + beq _0200FD64 + b _0200FD66 +_0200FD34: + add r0, r4, #0x0 + bl FUN_0200FE90 + cmp r0, #0x1 + bne _0200FD66 + ldr r0, [r4, #0x44] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200FD66 +_0200FD50: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200FD66 +_0200FD64: + mov r6, #0x1 +_0200FD66: + add r0, r6, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0200FD6C +FUN_0200FD6C: ; 0x0200FD6C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r6, r1, #0x0 + mov r1, #0x98 + add r7, r2, #0x0 + bl FUN_02016998 + str r0, [r5, #0x14] + add r4, r0, #0x0 + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + add r0, r4, #0x0 + bl FUN_0200FE20 + ldr r0, [r5, #0x10] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + add r0, r4, #0x0 + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + add r0, #0x4c + bl FUN_0200FE20 + ldr r0, [r5, #0x18] + ldr r2, [r5, #0x10] + ldr r3, [r4, #0x44] + mov r1, #0x3 + bl FUN_0200F6E4 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200FDC4 +FUN_0200FDC4: ; 0x0200FDC4 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _0200FDDC + cmp r0, #0x2 + beq _0200FE04 + cmp r0, #0x3 + beq _0200FE18 + b _0200FE1A +_0200FDDC: + add r0, r4, #0x0 + bl FUN_0200FE90 + add r7, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x4c + bl FUN_0200FE90 + add r0, r7, r0 + cmp r0, #0x2 + bne _0200FE1A + ldr r0, [r4, #0x44] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200FE1A +_0200FE04: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200FE1A +_0200FE18: + mov r6, #0x1 +_0200FE1A: + add r0, r6, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200FE20 +FUN_0200FE20: ; 0x0200FE20 + push {r3-r7, lr} + sub sp, #0x18 + add r4, r1, #0x0 + add r1, #0x10 + add r7, r3, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + str r1, [sp, #0x0] + add r1, r5, #0x0 + add r2, r5, #0x0 + add r1, #0x20 + add r2, #0x10 + add r3, r4, #0x0 + str r6, [sp, #0x4] + bl FUN_0200F1A8 + ldr r1, [sp, #0x30] + add r0, r4, #0x0 + add r2, r4, #0x0 + str r1, [r5, #0x30] + add r0, #0x20 + ldrb r0, [r0, #0x0] + add r2, #0x23 + str r0, [r5, #0x34] + str r6, [r5, #0x38] + str r7, [r5, #0x3c] + mov r0, #0x0 + str r0, [r5, #0x40] + ldr r0, [sp, #0x34] + str r0, [r5, #0x48] + ldrb r2, [r2, #0x0] + str r2, [r5, #0x44] + str r1, [sp, #0x0] + ldr r1, [r4, #0x0] + add r2, r4, #0x0 + str r1, [sp, #0x4] + ldr r1, [r4, #0x4] + add r2, #0x22 + str r1, [sp, #0x8] + ldr r1, [r4, #0x8] + str r1, [sp, #0xc] + ldr r1, [r4, #0xc] + str r1, [sp, #0x10] + ldr r1, [r5, #0x44] + str r1, [sp, #0x14] + add r1, r4, #0x0 + add r1, #0x21 + add r4, #0x20 + ldrb r1, [r1, #0x0] + ldrb r2, [r2, #0x0] + ldrb r3, [r4, #0x0] + bl FUN_0200F67C + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0200FE90 +FUN_0200FE90: ; 0x0200FE90 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0x40] + add r2, r1, #0x1 + str r2, [r4, #0x40] + ldr r1, [r4, #0x3c] + cmp r2, r1 + blt _0200FF10 + mov r1, #0x0 + str r1, [r4, #0x40] + ldr r1, [r4, #0x38] + sub r1, r1, #0x1 + cmp r1, #0x0 + ble _0200FEBA + str r1, [r4, #0x38] + add r1, r4, #0x0 + add r1, #0x10 + bl FUN_0200F184 + b _0200FED8 +_0200FEBA: + ldr r0, [r4, #0x2c] + str r0, [sp, #0x0] + ldr r0, [r4, #0x34] + str r0, [sp, #0x4] + ldr r0, [r4, #0x30] + str r0, [sp, #0x8] + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x20] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + bl FUN_02011698 + add sp, #0xc + mov r0, #0x1 + pop {r3-r4, pc} +_0200FED8: + ldr r1, [r4, #0xc] + asr r0, r1, #0x6 + lsr r0, r0, #0x19 + add r0, r1, r0 + asr r0, r0, #0x7 + str r0, [sp, #0x0] + ldr r0, [r4, #0x34] + str r0, [sp, #0x4] + ldr r0, [r4, #0x30] + str r0, [sp, #0x8] + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x4] + asr r1, r2, #0x6 + lsr r1, r1, #0x19 + add r1, r2, r1 + ldr r0, [r4, #0x48] + asr r2, r3, #0x6 + lsr r2, r2, #0x19 + add r2, r3, r2 + ldr r4, [r4, #0x8] + asr r1, r1, #0x7 + asr r3, r4, #0x6 + lsr r3, r3, #0x19 + add r3, r4, r3 + asr r2, r2, #0x7 + asr r3, r3, #0x7 + bl FUN_02011698 +_0200FF10: + mov r0, #0x0 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0200FF18 +FUN_0200FF18: ; 0x0200FF18 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r4, r1, #0x0 + mov r1, #0x38 + bl FUN_02016998 + str r0, [r5, #0x14] + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_0200FFAC + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_0200FF50 +FUN_0200FF50: ; 0x0200FF50 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _0200FF68 + cmp r0, #0x2 + beq _0200FF84 + cmp r0, #0x3 + beq _0200FF9E + b _0200FFA2 +_0200FF68: + add r0, r4, #0x0 + bl FUN_02010084 + cmp r0, #0x1 + bne _0200FFA6 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x30] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200FFA6 +_0200FF84: + add r0, r4, #0x0 + bl FUN_0200F5C0 + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0200FFA6 +_0200FF9E: + mov r6, #0x1 + b _0200FFA6 +_0200FFA2: + bl ErrorHandling +_0200FFA6: + add r0, r6, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0200FFAC +FUN_0200FFAC: ; 0x0200FFAC + push {r4-r7, lr} + sub sp, #0x24 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r6, [sp, #0x38] + ldr r7, [sp, #0x3c] + bl FUN_0200F164 + str r0, [sp, #0x20] + ldrb r1, [r4, #0xc] + ldr r3, [sp, #0x44] + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_0200F55C + ldr r0, [r4, #0x0] + lsl r0, r0, #0x7 + str r0, [r5, #0xc] + mov r0, #0x8 + ldrsh r0, [r4, r0] + str r0, [r5, #0x10] + mov r0, #0xa + ldrsh r0, [r4, r0] + str r0, [r5, #0x14] + ldr r0, [sp, #0x20] + str r0, [r5, #0x18] + ldr r0, [sp, #0x18] + str r0, [r5, #0x1c] + ldr r0, [sp, #0x1c] + str r0, [r5, #0x20] + mov r0, #0x0 + str r0, [r5, #0x24] + ldr r0, [sp, #0x40] + str r7, [r5, #0x30] + str r0, [r5, #0x34] + ldr r0, [sp, #0x44] + str r0, [r5, #0x28] + ldrb r0, [r4, #0xf] + str r0, [r5, #0x2c] + add r0, r5, #0x0 + bl FUN_02010168 + ldr r0, _02010078 ; =FUN_0200F5F8 + ldr r2, _0201007C ; =0x000003FF + add r1, r5, #0x0 + bl FUN_0200CA98 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + mov r1, #0x3 + str r6, [sp, #0x0] + lsl r1, r1, #0x8 + ldrsh r1, [r0, r1] + str r1, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + mov r1, #0x12 + lsl r1, r1, #0x6 + ldrsh r0, [r0, r1] + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x2c] + str r0, [sp, #0x14] + ldrb r1, [r4, #0xd] + ldrb r2, [r4, #0xe] + ldrb r3, [r4, #0xc] + add r0, r7, #0x0 + bl FUN_0200F67C + ldrb r0, [r4, #0xc] + cmp r0, #0x0 + bne _02010058 + ldr r3, [r5, #0x2c] + add r0, r7, #0x0 + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_0200F6E4 + b _02010064 +_02010058: + ldr r3, [r5, #0x2c] + add r0, r7, #0x0 + mov r1, #0x2 + add r2, r6, #0x0 + bl FUN_0200F6E4 +_02010064: + ldr r0, [sp, #0x44] + ldr r2, _02010080 ; =FUN_0200F330 + str r0, [sp, #0x0] + ldr r0, [r5, #0x34] + add r1, r5, #0x0 + add r3, r6, #0x0 + bl FUN_0200E6CC + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02010078: .word FUN_0200F5F8 +_0201007C: .word 0x000003FF +_02010080: .word FUN_0200F330 + + thumb_func_start FUN_02010084 +FUN_02010084: ; 0x02010084 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x24] + add r2, r1, #0x1 + str r2, [r4, #0x24] + ldr r1, [r4, #0x20] + cmp r2, r1 + blt _020100C8 + mov r1, #0x0 + str r1, [r4, #0x24] + ldr r1, [r4, #0x1c] + sub r1, r1, #0x1 + cmp r1, #0x0 + ble _020100BA + str r1, [r4, #0x1c] + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x18] + add r1, r2, r1 + str r1, [r4, #0xc] + bl FUN_02010168 + ldr r0, _020100CC ; =FUN_0200F5F8 + ldr r2, _020100D0 ; =0x000003FF + add r1, r4, #0x0 + bl FUN_0200CA98 + b _020100C8 +_020100BA: + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x28] + bl FUN_0200E6F8 + mov r0, #0x1 + pop {r4, pc} +_020100C8: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_020100CC: .word FUN_0200F5F8 +_020100D0: .word 0x000003FF + + thumb_func_start FUN_020100D4 +FUN_020100D4: ; 0x020100D4 + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x0] + asr r1, r0, #0x6 + lsr r1, r1, #0x19 + add r1, r0, r1 + asr r1, r1, #0x7 + ldr r5, [sp, #0x20] + ldr r4, [sp, #0x24] + sub r0, r3, r2 + bpl _020100EC + neg r0, r0 +_020100EC: + cmp r0, r1 + blt _020100FA + mov r0, #0x0 + str r0, [r5, #0x0] + add sp, #0xc + str r0, [r4, #0x0] + pop {r4-r7, pc} +_020100FA: + lsl r0, r0, #0xc + str r0, [sp, #0x4] + asr r7, r0, #0x1f + lsl r0, r1, #0xc + asr r1, r0, #0x1f + add r2, r0, #0x0 + add r3, r1, #0x0 + blx _ll_mul + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + add r6, r1, #0x0 + add r1, r7, #0x0 + add r2, r0, #0x0 + add r3, r7, #0x0 + blx _ll_mul + add r2, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x2 + ldr r1, [sp, #0x8] + mov r7, #0x0 + lsl r0, r0, #0xa + add r0, r1, r0 + adc r6, r7 + lsl r1, r6, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0x2 + lsl r1, r1, #0xa + add r2, r2, r1 + adc r3, r7 + lsl r1, r3, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + sub r0, r0, r2 + blx FX_Sqrt + asr r2, r0, #0xc + ldr r0, [sp, #0x0] + sub r0, r0, r2 + str r0, [r5, #0x0] + bpl _02010154 + add r0, r7, #0x0 + str r0, [r5, #0x0] +_02010154: + ldr r1, [r5, #0x0] + lsl r0, r2, #0x1 + add r0, r1, r0 + str r0, [r4, #0x0] + cmp r0, #0xff + ble _02010164 + mov r0, #0xff + str r0, [r4, #0x0] +_02010164: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02010168 +FUN_02010168: ; 0x02010168 + push {r3-r7, lr} + sub sp, #0x10 + mov r1, #0x0 + add r5, r0, #0x0 + bl FUN_0200F5D8 + add r7, r0, #0x0 + mov r4, #0x0 + add r6, r7, #0x0 +_0201017A: + ldr r2, [r5, #0x14] + cmp r4, r2 + bgt _02010194 + add r0, sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x10] + add r3, r4, #0x0 + bl FUN_020100D4 + b _020101CE +_02010194: + lsl r0, r2, #0x1 + cmp r4, r0 + bgt _020101BC + sub r0, r0, r4 + lsl r0, r0, #0x1 + add r1, r7, r0 + mov r0, #0x3 + lsl r0, r0, #0x8 + ldrsh r0, [r1, r0] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + lsl r0, r0, #0x1 + sub r0, r0, r4 + lsl r0, r0, #0x1 + add r1, r7, r0 + mov r0, #0x12 + lsl r0, r0, #0x6 + ldrsh r0, [r1, r0] + str r0, [sp, #0x8] + b _020101CE +_020101BC: + add r0, sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x10] + add r3, r4, #0x0 + bl FUN_020100D4 +_020101CE: + mov r0, #0x3 + ldr r1, [sp, #0xc] + lsl r0, r0, #0x8 + strh r1, [r6, r0] + mov r0, #0x12 + ldr r1, [sp, #0x8] + lsl r0, r0, #0x6 + strh r1, [r6, r0] + add r4, r4, #0x1 + add r6, r6, #0x2 + cmp r4, #0xc0 + blt _0201017A + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020101EC +FUN_020101EC: ; 0x020101EC + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r4, r1, #0x0 + mov r1, #0x30 + bl FUN_02016998 + str r0, [r5, #0x14] + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_02010280 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02010224 +FUN_02010224: ; 0x02010224 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _0201023C + cmp r0, #0x2 + beq _02010258 + cmp r0, #0x3 + beq _02010272 + b _02010276 +_0201023C: + add r0, r4, #0x0 + bl FUN_02010348 + cmp r0, #0x1 + bne _0201027A + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0201027A +_02010258: + add r0, r4, #0x0 + bl FUN_0200F5C0 + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0201027A +_02010272: + mov r6, #0x1 + b _0201027A +_02010276: + bl ErrorHandling +_0201027A: + add r0, r6, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02010280 +FUN_02010280: ; 0x02010280 + push {r3-r7, lr} + sub sp, #0x20 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + ldr r6, [sp, #0x38] + ldr r7, [sp, #0x3c] + bl FUN_0200F164 + str r0, [r5, #0x10] + ldrb r1, [r4, #0x8] + ldr r3, [sp, #0x44] + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_0200F55C + ldr r0, [r4, #0x0] + lsl r0, r0, #0x7 + str r0, [r5, #0xc] + ldr r0, [sp, #0x18] + str r0, [r5, #0x14] + ldr r0, [sp, #0x1c] + str r0, [r5, #0x18] + mov r0, #0x0 + str r0, [r5, #0x1c] + ldr r0, [sp, #0x40] + str r7, [r5, #0x24] + str r0, [r5, #0x28] + ldr r0, [sp, #0x44] + str r0, [r5, #0x2c] + ldrb r0, [r4, #0xb] + str r0, [r5, #0x20] + add r0, r5, #0x0 + bl FUN_02010398 + ldr r0, _0201033C ; =FUN_0200F5F8 + ldr r2, _02010340 ; =0x000003FF + add r1, r5, #0x0 + bl FUN_0200CA98 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + mov r1, #0x3 + str r6, [sp, #0x0] + lsl r1, r1, #0x8 + ldrsh r1, [r0, r1] + str r1, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + mov r1, #0x12 + lsl r1, r1, #0x6 + ldrsh r0, [r0, r1] + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x20] + str r0, [sp, #0x14] + ldrb r1, [r4, #0x9] + ldrb r2, [r4, #0xa] + ldrb r3, [r4, #0x8] + add r0, r7, #0x0 + bl FUN_0200F67C + ldrb r0, [r4, #0x8] + cmp r0, #0x0 + bne _0201031C + ldr r3, [r5, #0x20] + add r0, r7, #0x0 + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_0200F6E4 + b _02010328 +_0201031C: + ldr r3, [r5, #0x20] + add r0, r7, #0x0 + mov r1, #0x2 + add r2, r6, #0x0 + bl FUN_0200F6E4 +_02010328: + ldr r0, [sp, #0x44] + ldr r2, _02010344 ; =FUN_0200F330 + str r0, [sp, #0x0] + ldr r0, [r5, #0x28] + add r1, r5, #0x0 + add r3, r6, #0x0 + bl FUN_0200E6CC + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_0201033C: .word FUN_0200F5F8 +_02010340: .word 0x000003FF +_02010344: .word FUN_0200F330 + + thumb_func_start FUN_02010348 +FUN_02010348: ; 0x02010348 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x1c] + add r2, r1, #0x1 + str r2, [r4, #0x1c] + ldr r1, [r4, #0x18] + cmp r2, r1 + blt _0201038C + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r1, [r4, #0x14] + sub r1, r1, #0x1 + cmp r1, #0x0 + ble _0201037E + str r1, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r1, [r4, #0x10] + add r1, r2, r1 + str r1, [r4, #0xc] + bl FUN_02010398 + ldr r0, _02010390 ; =FUN_0200F5F8 + ldr r2, _02010394 ; =0x000003FF + add r1, r4, #0x0 + bl FUN_0200CA98 + b _0201038C +_0201037E: + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x2c] + bl FUN_0200E6F8 + mov r0, #0x1 + pop {r4, pc} +_0201038C: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_02010390: .word FUN_0200F5F8 +_02010394: .word 0x000003FF + + thumb_func_start FUN_02010398 +FUN_02010398: ; 0x02010398 + push {r3-r7, lr} + sub sp, #0x1fc + sub sp, #0x104 + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + ldr r1, [r4, #0xc] + add r5, r0, #0x0 + asr r0, r1, #0x6 + lsr r0, r0, #0x19 + add r0, r1, r0 + asr r0, r0, #0x7 + add r1, sp, #0x0 + mov r2, #0xc0 + mov r3, #0x0 + bl FUN_0200F0F8 + mov r7, #0x12 + mov r6, #0x0 + add r4, sp, #0x0 + lsl r7, r7, #0x6 +_020103C4: + ldr r1, [r4, #0x0] + mov r0, #0x80 + neg r1, r1 + bl FUN_0200F174 + mov r1, #0x3 + lsl r1, r1, #0x8 + strh r0, [r5, r1] + ldr r1, [r4, #0x0] + mov r0, #0x80 + bl FUN_0200F174 + strh r0, [r5, r7] + add r6, r6, #0x1 + add r4, r4, #0x4 + add r5, r5, #0x2 + cmp r6, #0xc0 + blt _020103C4 + add sp, #0x1fc + add sp, #0x104 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020103F0 +FUN_020103F0: ; 0x020103F0 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r4, r1, #0x0 + mov r1, #0x34 + bl FUN_02016998 + str r0, [r5, #0x14] + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_0201047C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02010428 +FUN_02010428: ; 0x02010428 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _02010440 + cmp r0, #0x2 + beq _0201045C + cmp r0, #0x3 + beq _02010476 + b _02010478 +_02010440: + add r0, r4, #0x0 + bl FUN_02010550 + cmp r0, #0x1 + bne _02010478 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02010478 +_0201045C: + add r0, r4, #0x0 + bl FUN_0200F5C0 + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02010478 +_02010476: + mov r6, #0x1 +_02010478: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0201047C +FUN_0201047C: ; 0x0201047C + push {r4-r7, lr} + sub sp, #0x24 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r4, #0x0] + str r2, [sp, #0x18] + sub r0, r1, r0 + add r1, r2, #0x0 + str r3, [sp, #0x1c] + ldr r6, [sp, #0x38] + ldr r7, [sp, #0x3c] + blx _s32_div_f + str r0, [sp, #0x20] + ldrb r1, [r4, #0x8] + ldr r3, [sp, #0x44] + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_0200F55C + mov r0, #0x2 + lsl r0, r0, #0x12 + str r0, [r5, #0xc] + ldr r0, [r4, #0x0] + str r0, [r5, #0x10] + ldr r0, [sp, #0x20] + str r0, [r5, #0x14] + ldr r0, [sp, #0x18] + str r0, [r5, #0x18] + ldr r0, [sp, #0x1c] + str r0, [r5, #0x1c] + mov r0, #0x0 + str r0, [r5, #0x20] + ldr r0, [sp, #0x40] + str r7, [r5, #0x28] + str r0, [r5, #0x2c] + ldr r0, [sp, #0x44] + str r0, [r5, #0x30] + ldrb r0, [r4, #0xb] + str r0, [r5, #0x24] + add r0, r5, #0x0 + bl FUN_020105A0 + ldr r0, _02010544 ; =FUN_0200F5F8 + ldr r2, _02010548 ; =0x000003FF + add r1, r5, #0x0 + bl FUN_0200CA98 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + mov r1, #0xf + str r6, [sp, #0x0] + lsl r1, r1, #0x6 + ldrsh r1, [r0, r1] + str r1, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + mov r1, #0x15 + lsl r1, r1, #0x6 + ldrsh r0, [r0, r1] + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + str r0, [sp, #0x14] + ldrb r1, [r4, #0x9] + ldrb r2, [r4, #0xa] + ldrb r3, [r4, #0x8] + add r0, r7, #0x0 + bl FUN_0200F67C + ldrb r0, [r4, #0x8] + cmp r0, #0x0 + bne _02010524 + ldr r3, [r5, #0x24] + add r0, r7, #0x0 + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_0200F6E4 + b _02010530 +_02010524: + ldr r3, [r5, #0x24] + add r0, r7, #0x0 + mov r1, #0x2 + add r2, r6, #0x0 + bl FUN_0200F6E4 +_02010530: + ldr r0, [sp, #0x44] + ldr r2, _0201054C ; =FUN_0200F330 + str r0, [sp, #0x0] + ldr r0, [r5, #0x2c] + add r1, r5, #0x0 + add r3, r6, #0x0 + bl FUN_0200E6CC + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02010544: .word FUN_0200F5F8 +_02010548: .word 0x000003FF +_0201054C: .word FUN_0200F330 + + thumb_func_start FUN_02010550 +FUN_02010550: ; 0x02010550 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x20] + add r2, r1, #0x1 + str r2, [r4, #0x20] + ldr r1, [r4, #0x1c] + cmp r2, r1 + blt _02010594 + mov r1, #0x0 + str r1, [r4, #0x20] + ldr r1, [r4, #0x18] + sub r1, r1, #0x1 + cmp r1, #0x0 + ble _02010586 + str r1, [r4, #0x18] + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x14] + add r1, r2, r1 + str r1, [r4, #0x10] + bl FUN_020105A0 + ldr r0, _02010598 ; =FUN_0200F5F8 + ldr r2, _0201059C ; =0x000003FF + add r1, r4, #0x0 + bl FUN_0200CA98 + b _02010594 +_02010586: + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x30] + bl FUN_0200E6F8 + mov r0, #0x1 + pop {r4, pc} +_02010594: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_02010598: .word FUN_0200F5F8 +_0201059C: .word 0x000003FF + + thumb_func_start FUN_020105A0 +FUN_020105A0: ; 0x020105A0 + push {r4-r7, lr} + sub sp, #0x1fc + sub sp, #0x110 + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + str r0, [sp, #0x0] + ldr r0, [r4, #0x10] + ldr r2, [r4, #0xc] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02010680 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + asr r7, r1, #0xc + lsl r0, r7, #0x1 + mov r1, #0x15 + blx _s32_div_f + add r0, r0, #0x1 + lsl r0, r0, #0x1 + mov r1, #0xb4 + sub r2, r1, r0 + ldr r0, _02010684 ; =0x0000FFFF + add r1, #0xb4 + mul r0, r2 + blx _s32_div_f + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r4, r1, #0x1 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x8 + bl FUN_0200F14C + asr r0, r0, #0xc + str r0, [sp, #0x4] + cmp r0, #0xc0 + blt _0201060C + bl ErrorHandling +_0201060C: + ldr r2, [sp, #0x4] + add r0, r4, #0x0 + add r1, sp, #0xc + mov r3, #0x0 + bl FUN_0200F0F8 + ldr r5, [sp, #0x0] + mov r4, #0x0 +_0201061C: + ldr r0, [sp, #0x4] + add r1, r4, #0x1 + sub r0, r0, r1 + add r6, r7, #0x0 + cmp r0, #0x0 + ble _02010634 + lsl r1, r0, #0x2 + add r0, sp, #0xc + ldr r0, [r0, r1] + cmp r0, r7 + ble _02010634 + add r6, r0, #0x0 +_02010634: + mov r0, #0x80 + neg r1, r6 + bl FUN_0200F174 + str r0, [sp, #0x8] + mov r0, #0x80 + add r1, r6, #0x0 + bl FUN_0200F174 + ldr r1, [sp, #0x8] + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + asr r2, r1, #0x10 + mov r1, #0x3 + lsl r1, r1, #0x8 + strh r2, [r5, r1] + asr r1, r0, #0x10 + mov r0, #0x12 + lsl r0, r0, #0x6 + strh r1, [r5, r0] + mov r0, #0xbf + sub r0, r0, r4 + lsl r3, r0, #0x1 + ldr r0, [sp, #0x0] + add r4, r4, #0x1 + add r0, r0, r3 + mov r3, #0x3 + lsl r3, r3, #0x8 + strh r2, [r0, r3] + mov r2, #0x12 + lsl r2, r2, #0x6 + add r5, r5, #0x2 + strh r1, [r0, r2] + cmp r4, #0x60 + blt _0201061C + add sp, #0x1fc + add sp, #0x110 + pop {r4-r7, pc} + .balign 4 +_02010680: .word 0x020FFA38 +_02010684: .word 0x0000FFFF + + thumb_func_start FUN_02010688 +FUN_02010688: ; 0x02010688 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r4, r1, #0x0 + mov r1, #0x30 + bl FUN_02016998 + str r0, [r5, #0x14] + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_02010720 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_020106C0 +FUN_020106C0: ; 0x020106C0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _020106D8 + cmp r0, #0x2 + beq _020106F4 + cmp r0, #0x3 + beq _02010714 + b _02010718 +_020106D8: + add r0, r4, #0x0 + bl FUN_02010834 + cmp r0, #0x1 + bne _0201071C + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0201071C +_020106F4: + add r0, r4, #0x0 + bl FUN_02010884 + add r0, r4, #0x0 + bl FUN_0200F5C0 + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _0201071C +_02010714: + mov r6, #0x1 + b _0201071C +_02010718: + bl ErrorHandling +_0201071C: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02010720 +FUN_02010720: ; 0x02010720 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r1, #0x0 + add r7, r0, #0x0 + str r2, [sp, #0x18] + ldr r0, [sp, #0x38] + ldrb r2, [r5, #0x8] + str r0, [sp, #0x38] + ldr r0, [sp, #0x44] + mov r1, #0x30 + mul r1, r2 + str r3, [sp, #0x1c] + str r0, [sp, #0x44] + bl FUN_02016998 + str r0, [r7, #0xc] + cmp r0, #0x0 + bne _02010748 + bl ErrorHandling +_02010748: + ldrb r0, [r5, #0x8] + str r0, [r7, #0x10] + mov r0, #0x0 + str r0, [sp, #0x20] + ldrb r0, [r5, #0x8] + cmp r0, #0x0 + ble _02010788 + ldr r6, [sp, #0x20] + add r4, r6, #0x0 +_0201075A: + ldr r0, [r5, #0x4] + ldr r2, [r7, #0xc] + add r0, r0, r6 + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + str r0, [sp, #0x4] + add r0, r2, r4 + ldr r3, [r5, #0x0] + add r1, r0, #0x0 + add r2, r2, r4 + add r1, #0x20 + add r2, #0x10 + add r3, r3, r6 + bl FUN_0200F1A8 + ldr r0, [sp, #0x20] + ldrb r1, [r5, #0x8] + add r0, r0, #0x1 + add r6, #0x10 + add r4, #0x30 + str r0, [sp, #0x20] + cmp r0, r1 + blt _0201075A +_02010788: + ldrb r1, [r5, #0x9] + ldr r2, [sp, #0x38] + ldr r3, [sp, #0x44] + add r0, r7, #0x0 + bl FUN_0200F55C + ldr r0, [sp, #0x18] + str r0, [r7, #0x14] + ldr r0, [sp, #0x1c] + str r0, [r7, #0x18] + mov r0, #0x0 + str r0, [r7, #0x1c] + ldr r0, [sp, #0x3c] + str r0, [r7, #0x24] + ldr r0, [sp, #0x40] + str r0, [r7, #0x28] + ldr r0, [sp, #0x44] + str r0, [r7, #0x2c] + ldrb r0, [r5, #0xc] + str r0, [r7, #0x20] + add r0, r7, #0x0 + bl FUN_02010894 + ldr r0, _02010828 ; =FUN_0200F5F8 + ldr r2, _0201082C ; =0x000003FF + add r1, r7, #0x0 + bl FUN_0200CA98 + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + ldr r1, [sp, #0x38] + str r1, [sp, #0x0] + mov r1, #0x3 + lsl r1, r1, #0x8 + ldrsh r1, [r0, r1] + str r1, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + mov r1, #0x12 + lsl r1, r1, #0x6 + ldrsh r0, [r0, r1] + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r7, #0x20] + str r0, [sp, #0x14] + ldrb r1, [r5, #0xa] + ldrb r2, [r5, #0xb] + ldrb r3, [r5, #0x9] + ldr r0, [sp, #0x3c] + bl FUN_0200F67C + ldrb r0, [r5, #0x9] + cmp r0, #0x0 + ldr r0, [r7, #0x24] + bne _02010808 + ldr r2, [sp, #0x38] + ldr r3, [r7, #0x20] + mov r1, #0x1 + bl FUN_0200F6E4 + b _02010812 +_02010808: + ldr r2, [sp, #0x38] + ldr r3, [r7, #0x20] + mov r1, #0x2 + bl FUN_0200F6E4 +_02010812: + ldr r0, [sp, #0x44] + ldr r2, _02010830 ; =FUN_0200F330 + str r0, [sp, #0x0] + ldr r0, [r7, #0x28] + ldr r3, [sp, #0x38] + add r1, r7, #0x0 + bl FUN_0200E6CC + add sp, #0x24 + pop {r4-r7, pc} + nop +_02010828: .word FUN_0200F5F8 +_0201082C: .word 0x000003FF +_02010830: .word FUN_0200F330 + + thumb_func_start FUN_02010834 +FUN_02010834: ; 0x02010834 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x1c] + add r2, r1, #0x1 + str r2, [r4, #0x1c] + ldr r1, [r4, #0x18] + cmp r2, r1 + blt _02010876 + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r1, [r4, #0x14] + sub r1, r1, #0x1 + cmp r1, #0x0 + ble _02010868 + str r1, [r4, #0x14] + bl FUN_02010920 + add r0, r4, #0x0 + bl FUN_02010894 + ldr r0, _0201087C ; =FUN_0200F5F8 + ldr r2, _02010880 ; =0x000003FF + add r1, r4, #0x0 + bl FUN_0200CA98 + b _02010876 +_02010868: + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x2c] + bl FUN_0200E6F8 + mov r0, #0x1 + pop {r4, pc} +_02010876: + mov r0, #0x0 + pop {r4, pc} + nop +_0201087C: .word FUN_0200F5F8 +_02010880: .word 0x000003FF + + thumb_func_start FUN_02010884 +FUN_02010884: ; 0x02010884 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start FUN_02010894 +FUN_02010894: ; 0x02010894 + push {r4-r6, lr} + mov r1, #0x0 + add r6, r0, #0x0 + bl FUN_0200F5D8 + mov r2, #0x3 + lsl r2, r2, #0x8 + add r0, r0, r2 + mov r1, #0x0 + blx Call_FillMemWithValue + ldr r0, [r6, #0x10] + sub r4, r0, #0x1 + bmi _020108C6 + mov r0, #0x30 + add r5, r4, #0x0 + mul r5, r0 +_020108B6: + ldr r1, [r6, #0xc] + add r0, r6, #0x0 + add r1, r1, r5 + bl FUN_020108C8 + sub r5, #0x30 + sub r4, r4, #0x1 + bpl _020108B6 +_020108C6: + pop {r4-r6, pc} + + thumb_func_start FUN_020108C8 +FUN_020108C8: ; 0x020108C8 + push {r4-r6, lr} + add r4, r1, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x8] + asr r1, r2, #0x6 + lsr r1, r1, #0x19 + add r1, r2, r1 + asr r2, r1, #0x7 + asr r1, r3, #0x6 + ldr r5, [r4, #0xc] + lsr r1, r1, #0x19 + add r1, r3, r1 + asr r3, r5, #0x6 + lsr r3, r3, #0x19 + add r3, r5, r3 + ldr r4, [r4, #0x4] + asr r5, r3, #0x7 + asr r3, r4, #0x6 + lsr r3, r3, #0x19 + add r3, r4, r3 + asr r3, r3, #0x7 + asr r1, r1, #0x7 + cmp r3, r5 + bge _0201091E + lsl r4, r3, #0x1 + lsl r1, r1, #0x10 + add r4, r0, r4 + lsl r0, r2, #0x10 + asr r6, r1, #0x10 + mov r1, #0x3 + mov r2, #0x12 + asr r0, r0, #0x10 + lsl r1, r1, #0x8 + lsl r2, r2, #0x6 +_02010912: + strh r0, [r4, r1] + strh r6, [r4, r2] + add r3, r3, #0x1 + add r4, r4, #0x2 + cmp r3, r5 + blt _02010912 +_0201091E: + pop {r4-r6, pc} + + thumb_func_start FUN_02010920 +FUN_02010920: ; 0x02010920 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + mov r6, #0x0 + cmp r0, #0x0 + ble _02010944 + add r4, r6, #0x0 +_0201092E: + ldr r1, [r5, #0xc] + add r0, r1, r4 + add r1, r1, r4 + add r1, #0x10 + bl FUN_0200F184 + ldr r0, [r5, #0x10] + add r6, r6, #0x1 + add r4, #0x30 + cmp r6, r0 + blt _0201092E +_02010944: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02010948 +FUN_02010948: ; 0x02010948 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r4, r1, #0x0 + mov r1, #0x38 + bl FUN_02016998 + str r0, [r5, #0x14] + mov r1, #0x0 + mov r2, #0x38 + blx Call_FillMemWithValue + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_020109E8 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02010988 +FUN_02010988: ; 0x02010988 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _020109A0 + cmp r0, #0x2 + beq _020109BC + cmp r0, #0x3 + beq _020109DC + b _020109E0 +_020109A0: + add r0, r4, #0x0 + bl FUN_02010AE4 + cmp r0, #0x1 + bne _020109E4 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x30] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _020109E4 +_020109BC: + add r0, r4, #0x0 + bl FUN_02010B3C + add r0, r4, #0x0 + bl FUN_0200F5C0 + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _020109E4 +_020109DC: + mov r6, #0x1 + b _020109E4 +_020109E0: + bl ErrorHandling +_020109E4: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020109E8 +FUN_020109E8: ; 0x020109E8 + push {r3-r7, lr} + sub sp, #0x28 + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x0 + str r1, [r5, #0xc] + ldr r1, [r4, #0x0] + str r2, [sp, #0x18] + str r1, [r5, #0x10] + str r3, [sp, #0x1c] + ldr r2, [r4, #0x4] + ldr r1, [r4, #0x0] + ldr r6, [sp, #0x40] + sub r1, r2, r1 + str r1, [r5, #0x14] + ldr r3, [sp, #0x4c] + mov r1, #0x2 + add r2, r6, #0x0 + ldr r7, [sp, #0x44] + bl FUN_0200F55C + ldr r0, [sp, #0x18] + mov r1, #0x0 + str r0, [r5, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r5, #0x1c] + str r0, [r5, #0x20] + str r1, [r5, #0x24] + ldr r0, [sp, #0x48] + str r7, [r5, #0x30] + str r0, [r5, #0x34] + ldr r0, [sp, #0x4c] + str r0, [r5, #0x2c] + ldrb r0, [r4, #0xa] + str r0, [r5, #0x28] + add r0, r5, #0x0 + ldr r1, [r5, #0x1c] + ldr r2, [r5, #0x18] + add r0, #0xc + bl FUN_02010C64 + add r0, r5, #0x0 + bl FUN_02010B40 + ldr r0, _02010AD8 ; =FUN_0200F5F8 + ldr r2, _02010ADC ; =0x000003FF + add r1, r5, #0x0 + bl FUN_0200CA98 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + str r0, [sp, #0x20] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200F5D8 + str r0, [sp, #0x24] + mov r1, #0x3 + ldr r0, [sp, #0x20] + str r6, [sp, #0x0] + lsl r1, r1, #0x8 + ldrsh r0, [r0, r1] + mov r1, #0x12 + mov r3, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x20] + str r3, [sp, #0x8] + lsl r1, r1, #0x6 + ldrsh r0, [r0, r1] + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + str r0, [sp, #0x14] + ldrb r1, [r4, #0x8] + ldrb r2, [r4, #0x9] + add r0, r7, #0x0 + bl FUN_0200F67C + mov r1, #0x3 + ldr r0, [sp, #0x24] + str r6, [sp, #0x0] + lsl r1, r1, #0x8 + ldrsh r0, [r0, r1] + mov r1, #0x12 + lsl r1, r1, #0x6 + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x24] + mov r3, #0x1 + ldrsh r0, [r0, r1] + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + str r0, [sp, #0x14] + ldrb r1, [r4, #0x8] + ldrb r2, [r4, #0x9] + add r0, r7, #0x0 + bl FUN_0200F67C + ldr r3, [r5, #0x28] + add r0, r7, #0x0 + mov r1, #0x3 + add r2, r6, #0x0 + bl FUN_0200F6E4 + ldr r0, [sp, #0x4c] + ldr r2, _02010AE0 ; =FUN_0200F330 + str r0, [sp, #0x0] + ldr r0, [r5, #0x34] + add r1, r5, #0x0 + add r3, r6, #0x0 + bl FUN_0200E6CC + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 +_02010AD8: .word FUN_0200F5F8 +_02010ADC: .word 0x000003FF +_02010AE0: .word FUN_0200F330 + + thumb_func_start FUN_02010AE4 +FUN_02010AE4: ; 0x02010AE4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + add r1, r0, #0x1 + str r1, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r1, r0 + blt _02010B2E + mov r0, #0x0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x1c] + add r1, r0, #0x1 + ldr r0, [r4, #0x18] + cmp r1, r0 + bgt _02010B20 + str r1, [r4, #0x1c] + add r0, r4, #0x0 + ldr r2, [r4, #0x18] + add r0, #0xc + bl FUN_02010C64 + add r0, r4, #0x0 + bl FUN_02010B40 + ldr r0, _02010B34 ; =FUN_0200F5F8 + ldr r2, _02010B38 ; =0x000003FF + add r1, r4, #0x0 + bl FUN_0200CA98 + b _02010B2E +_02010B20: + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x2c] + bl FUN_0200E6F8 + mov r0, #0x1 + pop {r4, pc} +_02010B2E: + mov r0, #0x0 + pop {r4, pc} + nop +_02010B34: .word FUN_0200F5F8 +_02010B38: .word 0x000003FF + + thumb_func_start FUN_02010B3C +FUN_02010B3C: ; 0x02010B3C + bx lr + .balign 4 + + thumb_func_start FUN_02010B40 +FUN_02010B40: ; 0x02010B40 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + ldr r0, [r0, #0xc] + ldr r1, _02010C60 ; =0x00003FFF + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + mov r1, #0x0 + bl FUN_0200F5D8 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + mov r1, #0x1 + bl FUN_0200F5D8 + add r4, r0, #0x0 + mov r6, #0x0 + add r5, r4, #0x0 +_02010B6C: + ldr r0, [sp, #0x0] + ldr r1, [r0, #0xc] + ldr r0, _02010C60 ; =0x00003FFF + cmp r1, r0 + bge _02010BB0 + mov r1, #0x60 + ldr r0, [sp, #0x4] + sub r1, r1, r6 + bl FUN_0200F0D0 + cmp r0, #0x7f + ble _02010B86 + mov r0, #0x7f +_02010B86: + mov r1, #0xbf + sub r1, r1, r6 + lsl r1, r1, #0x1 + add r3, r7, r1 + mov r1, #0x80 + sub r2, r1, r0 + mov r1, #0x3 + lsl r1, r1, #0x8 + strh r2, [r3, r1] + mov r1, #0x12 + mov r2, #0x80 + lsl r1, r1, #0x6 + strh r2, [r3, r1] + mov r1, #0x3 + lsl r1, r1, #0x8 + strh r2, [r5, r1] + mov r1, #0x12 + add r0, #0x80 + lsl r1, r1, #0x6 + strh r0, [r5, r1] + b _02010BD8 +_02010BB0: + mov r0, #0xbf + sub r0, r0, r6 + lsl r0, r0, #0x1 + mov r1, #0x3 + add r0, r7, r0 + mov r2, #0x0 + lsl r1, r1, #0x8 + strh r2, [r0, r1] + mov r1, #0x12 + mov r2, #0x80 + lsl r1, r1, #0x6 + strh r2, [r0, r1] + mov r0, #0x3 + add r1, r2, #0x0 + lsl r0, r0, #0x8 + strh r1, [r5, r0] + mov r0, #0x12 + mov r1, #0xff + lsl r0, r0, #0x6 + strh r1, [r5, r0] +_02010BD8: + add r6, r6, #0x1 + add r5, r5, #0x2 + cmp r6, #0x60 + blt _02010B6C + ldr r1, _02010C60 ; =0x00003FFF + ldr r0, [sp, #0x4] + mov r5, #0x60 + add r4, #0xc0 + sub r6, r1, r0 +_02010BEA: + ldr r0, [sp, #0x0] + ldr r1, [r0, #0xc] + ldr r0, _02010C60 ; =0x00003FFF + cmp r1, r0 + bge _02010C1A + mov r0, #0xbf + sub r0, r0, r5 + lsl r0, r0, #0x1 + mov r1, #0x3 + add r0, r7, r0 + mov r2, #0x80 + lsl r1, r1, #0x8 + strh r2, [r0, r1] + mov r1, #0x12 + lsl r1, r1, #0x6 + strh r2, [r0, r1] + mov r0, #0x3 + add r1, r2, #0x0 + lsl r0, r0, #0x8 + strh r1, [r4, r0] + mov r0, #0x12 + lsl r0, r0, #0x6 + strh r1, [r4, r0] + b _02010C54 +_02010C1A: + add r1, r5, #0x0 + add r0, r6, #0x0 + sub r1, #0x60 + bl FUN_0200F0D0 + add r1, r0, #0x0 + cmp r1, #0x7f + ble _02010C2C + mov r1, #0x7f +_02010C2C: + mov r0, #0xbf + sub r0, r0, r5 + lsl r0, r0, #0x1 + mov r2, #0x3 + add r0, r7, r0 + mov r3, #0x0 + lsl r2, r2, #0x8 + strh r3, [r0, r2] + mov r2, #0x80 + sub r3, r2, r1 + mov r2, #0x12 + lsl r2, r2, #0x6 + strh r3, [r0, r2] + mov r0, #0x3 + add r1, #0x80 + lsl r0, r0, #0x8 + strh r1, [r4, r0] + mov r1, #0xff + add r0, r2, #0x0 + strh r1, [r4, r0] +_02010C54: + add r5, r5, #0x1 + add r4, r4, #0x2 + cmp r5, #0xc0 + blt _02010BEA + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02010C60: .word 0x00003FFF + + thumb_func_start FUN_02010C64 +FUN_02010C64: ; 0x02010C64 + push {r4, lr} + add r4, r0, #0x0 + ldr r3, [r4, #0x8] + add r0, r3, #0x0 + mul r0, r1 + add r1, r2, #0x0 + blx _s32_div_f + ldr r1, [r4, #0x4] + add r0, r0, r1 + str r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02010C7C +FUN_02010C7C: ; 0x02010C7C + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + add r4, r1, #0x0 + mov r1, #0x38 + bl FUN_02016998 + str r0, [r5, #0x14] + mov r1, #0x0 + mov r2, #0x38 + blx Call_FillMemWithValue + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_02010D1C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02010CBC +FUN_02010CBC: ; 0x02010CBC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _02010CD4 + cmp r0, #0x2 + beq _02010CF0 + cmp r0, #0x3 + beq _02010D10 + b _02010D14 +_02010CD4: + add r0, r4, #0x0 + bl FUN_02010DEC + cmp r0, #0x1 + bne _02010D18 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x30] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02010D18 +_02010CF0: + add r0, r4, #0x0 + bl FUN_02010E44 + add r0, r4, #0x0 + bl FUN_0200F5C0 + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02010D18 +_02010D10: + mov r6, #0x1 + b _02010D18 +_02010D14: + bl ErrorHandling +_02010D18: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02010D1C +FUN_02010D1C: ; 0x02010D1C + push {r3-r7, lr} + sub sp, #0x20 + add r4, r1, #0x0 + ldr r1, [r4, #0x0] + add r5, r0, #0x0 + str r1, [r5, #0xc] + ldr r1, [r4, #0x0] + str r3, [sp, #0x1c] + str r1, [r5, #0x10] + str r2, [sp, #0x18] + ldr r2, [r4, #0x4] + ldr r1, [r4, #0x0] + ldr r6, [sp, #0x38] + sub r1, r2, r1 + str r1, [r5, #0x14] + ldr r3, [sp, #0x44] + mov r1, #0x2 + add r2, r6, #0x0 + ldr r7, [sp, #0x3c] + bl FUN_0200F55C + ldr r0, [sp, #0x18] + mov r1, #0x0 + str r0, [r5, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r5, #0x1c] + str r0, [r5, #0x20] + str r1, [r5, #0x24] + ldr r0, [sp, #0x40] + str r7, [r5, #0x30] + str r0, [r5, #0x34] + ldr r0, [sp, #0x44] + str r0, [r5, #0x2c] + ldrb r0, [r4, #0xa] + str r0, [r5, #0x28] + add r0, r5, #0x0 + bl FUN_02010E48 + ldr r0, _02010DE0 ; =FUN_0200F5F8 + ldr r2, _02010DE4 ; =0x000003FF + add r1, r5, #0x0 + bl FUN_0200CA98 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200F5D8 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200F5D8 + str r6, [sp, #0x0] + mov r3, #0x0 + str r3, [sp, #0x4] + str r3, [sp, #0x8] + mov r0, #0xff + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + str r0, [sp, #0x14] + ldrb r1, [r4, #0x8] + ldrb r2, [r4, #0x9] + add r0, r7, #0x0 + bl FUN_0200F67C + str r6, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xff + str r0, [sp, #0xc] + mov r0, #0xc0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x28] + mov r3, #0x1 + str r0, [sp, #0x14] + ldrb r1, [r4, #0x8] + ldrb r2, [r4, #0x9] + add r0, r7, #0x0 + bl FUN_0200F67C + ldr r3, [r5, #0x28] + add r0, r7, #0x0 + mov r1, #0x3 + add r2, r6, #0x0 + bl FUN_0200F6E4 + ldr r0, [sp, #0x44] + ldr r2, _02010DE8 ; =FUN_0200F330 + str r0, [sp, #0x0] + ldr r0, [r5, #0x34] + add r1, r5, #0x0 + add r3, r6, #0x0 + bl FUN_0200E6CC + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_02010DE0: .word FUN_0200F5F8 +_02010DE4: .word 0x000003FF +_02010DE8: .word FUN_0200F330 + + thumb_func_start FUN_02010DEC +FUN_02010DEC: ; 0x02010DEC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + add r1, r0, #0x1 + str r1, [r4, #0x24] + ldr r0, [r4, #0x20] + cmp r1, r0 + blt _02010E36 + mov r0, #0x0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x1c] + add r1, r0, #0x1 + ldr r0, [r4, #0x18] + cmp r1, r0 + bgt _02010E28 + str r1, [r4, #0x1c] + add r0, r4, #0x0 + ldr r2, [r4, #0x18] + add r0, #0xc + bl FUN_02010F14 + add r0, r4, #0x0 + bl FUN_02010E48 + ldr r0, _02010E3C ; =FUN_0200F5F8 + ldr r2, _02010E40 ; =0x000003FF + add r1, r4, #0x0 + bl FUN_0200CA98 + b _02010E36 +_02010E28: + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x2c] + bl FUN_0200E6F8 + mov r0, #0x1 + pop {r4, pc} +_02010E36: + mov r0, #0x0 + pop {r4, pc} + nop +_02010E3C: .word FUN_0200F5F8 +_02010E40: .word 0x000003FF + + thumb_func_start FUN_02010E44 +FUN_02010E44: ; 0x02010E44 + bx lr + .balign 4 + + thumb_func_start FUN_02010E48 +FUN_02010E48: ; 0x02010E48 + push {r4-r7, lr} + sub sp, #0x1c + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #0x8] + mov r1, #0x0 + bl FUN_0200F5D8 + str r0, [sp, #0x10] + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200F5D8 + str r0, [sp, #0xc] + add r5, r0, #0x0 + ldr r1, _02010F10 ; =0x00003FFF + ldr r0, [sp, #0x8] + ldr r6, [sp, #0x10] + sub r0, r1, r0 + mov r7, #0x0 + str r0, [sp, #0x4] +_02010E76: + mov r0, #0x60 + sub r0, r0, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x0] + bl FUN_0200F0D0 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x0] + bl FUN_0200F0D0 + cmp r4, #0x7f + ble _02010E94 + mov r4, #0x7f +_02010E94: + cmp r0, #0x7f + ble _02010E9A + mov r0, #0x7f +_02010E9A: + mov r1, #0x80 + sub r1, r1, r0 + lsl r1, r1, #0x10 + mov r2, #0x3 + asr r1, r1, #0x10 + lsl r2, r2, #0x8 + str r1, [sp, #0x14] + strh r1, [r6, r2] + mov r1, #0x80 + sub r1, r1, r4 + lsl r1, r1, #0x10 + asr r2, r1, #0x10 + mov r1, #0x12 + lsl r1, r1, #0x6 + strh r2, [r6, r1] + mov r1, #0xbf + sub r1, r1, r7 + mov r12, r2 + lsl r1, r1, #0x1 + ldr r2, [sp, #0x10] + add r0, #0x80 + add r3, r2, r1 + str r1, [sp, #0x18] + mov r2, #0x3 + ldr r1, [sp, #0x14] + lsl r2, r2, #0x8 + strh r1, [r3, r2] + mov r1, #0x12 + mov r2, r12 + lsl r1, r1, #0x6 + strh r2, [r3, r1] + add r4, #0x80 + lsl r1, r4, #0x10 + asr r2, r1, #0x10 + mov r1, #0x3 + lsl r1, r1, #0x8 + lsl r0, r0, #0x10 + strh r2, [r5, r1] + asr r1, r0, #0x10 + mov r0, #0x12 + lsl r0, r0, #0x6 + strh r1, [r5, r0] + ldr r3, [sp, #0xc] + ldr r0, [sp, #0x18] + add r7, r7, #0x1 + add r0, r3, r0 + mov r3, #0x3 + lsl r3, r3, #0x8 + strh r2, [r0, r3] + mov r2, #0x12 + lsl r2, r2, #0x6 + strh r1, [r0, r2] + add r6, r6, #0x2 + add r5, r5, #0x2 + cmp r7, #0x60 + blt _02010E76 + add sp, #0x1c + pop {r4-r7, pc} + nop +_02010F10: .word 0x00003FFF + + thumb_func_start FUN_02010F14 +FUN_02010F14: ; 0x02010F14 + push {r4, lr} + add r4, r0, #0x0 + ldr r3, [r4, #0x8] + add r0, r3, #0x0 + mul r0, r1 + add r1, r2, #0x0 + blx _s32_div_f + ldr r1, [r4, #0x4] + add r0, r0, r1 + str r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02010F2C +FUN_02010F2C: ; 0x02010F2C + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r1, #0xcd + ldr r0, [r5, #0x20] + lsl r1, r1, #0x2 + bl FUN_02016998 + mov r2, #0xcd + str r0, [r5, #0x14] + mov r1, #0x0 + lsl r2, r2, #0x2 + blx Call_FillMemWithValue + ldr r0, [r5, #0x10] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + str r0, [sp, #0x4] + ldr r0, [r5, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r5, #0x20] + str r0, [sp, #0xc] + ldr r0, [r5, #0x14] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + bl FUN_02010FD0 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02010F70 +FUN_02010F70: ; 0x02010F70 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + ldr r4, [r5, #0x14] + cmp r0, #0x1 + beq _02010F88 + cmp r0, #0x2 + beq _02010FAA + cmp r0, #0x3 + beq _02010FC4 + b _02010FC8 +_02010F88: + add r0, r4, #0x0 + bl FUN_020110BC + cmp r0, #0x1 + bne _02010FCC + mov r1, #0xc9 + lsl r1, r1, #0x2 + ldr r0, [r4, r1] + add r1, #0x8 + ldr r1, [r4, r1] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02010FCC +_02010FAA: + add r0, r4, #0x0 + bl FUN_0201111C + ldr r0, [r5, #0x14] + bl FUN_02016A18 + add r0, r6, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r6, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02010FCC +_02010FC4: + mov r6, #0x1 + b _02010FCC +_02010FC8: + bl ErrorHandling +_02010FCC: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02010FD0 +FUN_02010FD0: ; 0x02010FD0 + push {r3-r7, lr} + sub sp, #0x20 + ldr r7, [sp, #0x38] + str r3, [sp, #0x1c] + mov r3, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x18] + str r3, [sp, #0x0] + add r1, r7, #0x0 + mov r2, #0x1 + add r5, r0, #0x0 + ldr r6, [sp, #0x3c] + bl FUN_0200F6FC + ldrb r0, [r4, #0x5] + cmp r0, #0x0 + bne _0201100A + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0xc0 + blx Call_FillMemWithValue + add r0, r5, #0x0 + add r0, #0xc0 + mov r1, #0x1 + mov r2, #0xc0 + blx Call_FillMemWithValue + b _02011020 +_0201100A: + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0xc0 + blx Call_FillMemWithValue + add r0, r5, #0x0 + add r0, #0xc0 + mov r1, #0x0 + mov r2, #0xc0 + blx Call_FillMemWithValue +_02011020: + mov r1, #0xc3 + lsl r1, r1, #0x2 + ldr r0, [r4, #0x0] + add r3, r1, #0x0 + str r0, [r5, r1] + ldrb r2, [r4, #0x4] + add r0, r1, #0x4 + add r3, #0x8 + str r2, [r5, r0] + add r0, r1, #0x0 + ldrb r2, [r4, #0x5] + add r0, #0x18 + str r2, [r5, r0] + add r0, r1, #0x0 + ldr r2, [sp, #0x44] + add r0, #0x1c + str r2, [r5, r0] + ldr r0, [sp, #0x18] + str r0, [r5, r3] + add r3, r1, #0x0 + add r3, #0xc + mov r0, #0x0 + str r0, [r5, r3] + add r3, r1, #0x0 + ldr r0, [sp, #0x1c] + add r3, #0x10 + str r0, [r5, r3] + add r3, r1, #0x0 + add r3, #0x14 + mov r0, #0x0 + str r0, [r5, r3] + add r0, r1, #0x0 + add r0, #0x20 + str r6, [r5, r0] + ldr r0, [sp, #0x40] + add r1, #0x24 + str r0, [r5, r1] + add r1, r5, #0x0 + bl FUN_0200F758 + ldrb r0, [r4, #0x5] + cmp r0, #0x1 + str r7, [sp, #0x0] + bne _02011090 + mov r3, #0x0 + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r6, #0x0 + mov r1, #0x20 + mov r2, #0x3f + bl FUN_0200F67C + b _020110A6 +_02011090: + mov r3, #0x0 + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str r3, [sp, #0xc] + str r3, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r6, #0x0 + mov r1, #0x3f + mov r2, #0x20 + bl FUN_0200F67C +_020110A6: + mov r3, #0xc9 + lsl r3, r3, #0x2 + ldr r3, [r5, r3] + add r0, r6, #0x0 + mov r1, #0x1 + add r2, r7, #0x0 + bl FUN_0200F6E4 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020110BC +FUN_020110BC: ; 0x020110BC + push {r4, lr} + mov r2, #0x32 + add r4, r0, #0x0 + lsl r2, r2, #0x4 + ldr r1, [r4, r2] + add r1, r1, #0x1 + str r1, [r4, r2] + sub r1, r2, #0x4 + ldr r3, [r4, r2] + ldr r1, [r4, r1] + cmp r3, r1 + blt _02011116 + mov r1, #0x0 + str r1, [r4, r2] + add r1, r2, #0x0 + sub r1, #0x8 + ldr r1, [r4, r1] + add r3, r1, #0x1 + add r1, r2, #0x0 + sub r1, #0xc + ldr r1, [r4, r1] + cmp r3, r1 + bgt _02011102 + add r1, r2, #0x0 + sub r1, #0x8 + ldr r1, [r4, r1] + sub r2, #0x8 + add r1, r1, #0x1 + str r1, [r4, r2] + bl FUN_02011120 + add r0, r4, #0x0 + bl FUN_0200F740 + b _02011116 +_02011102: + add r0, r2, #0x0 + add r0, #0x10 + add r2, #0x8 + ldr r0, [r4, r0] + ldr r2, [r4, r2] + add r1, r4, #0x0 + bl FUN_0200F770 + mov r0, #0x1 + pop {r4, pc} +_02011116: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201111C +FUN_0201111C: ; 0x0201111C + bx lr + .balign 4 + + thumb_func_start FUN_02011120 +FUN_02011120: ; 0x02011120 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x31 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r6, #0x0 + cmp r0, #0x0 + ble _0201115A + mov r7, #0x31 + add r4, r6, #0x0 + lsl r7, r7, #0x4 +_02011136: + mov r0, #0xc3 + lsl r0, r0, #0x2 + mov r2, #0xc6 + mov r3, #0xc5 + ldr r0, [r5, r0] + lsl r2, r2, #0x2 + lsl r3, r3, #0x2 + ldr r2, [r5, r2] + ldr r3, [r5, r3] + add r0, r0, r4 + add r1, r5, #0x0 + bl FUN_0201115C + ldr r0, [r5, r7] + add r6, r6, #0x1 + add r4, r4, #0x3 + cmp r6, r0 + blt _02011136 +_0201115A: + pop {r3-r7, pc} + + thumb_func_start FUN_0201115C +FUN_0201115C: ; 0x0201115C + push {r3-r7, lr} + add r7, r0, #0x0 + ldrb r6, [r7, #0x0] + ldrb r4, [r7, #0x1] + add r5, r1, #0x0 + add r1, r3, #0x0 + sub r0, r4, r6 + mul r0, r2 + blx _s32_div_f + add r0, r0, r6 + cmp r6, r4 + bhi _0201117C + add r1, r6, #0x0 + ldrb r6, [r7, #0x2] + b _0201118C +_0201117C: + ldrb r2, [r7, #0x2] + add r1, r4, #0x0 + add r4, r6, #0x0 + cmp r2, #0x0 + bne _0201118A + mov r6, #0x1 + b _0201118C +_0201118A: + mov r6, #0x0 +_0201118C: + cmp r1, r4 + bge _020111AA + mov r2, #0x0 + mov r3, #0x1 +_02011194: + cmp r1, r0 + bne _020111A2 + cmp r6, #0x0 + bne _020111A0 + add r6, r3, #0x0 + b _020111A2 +_020111A0: + add r6, r2, #0x0 +_020111A2: + strb r6, [r5, r1] + add r1, r1, #0x1 + cmp r1, r4 + blt _02011194 +_020111AA: + pop {r3-r7, pc} + + thumb_func_start FUN_020111AC +FUN_020111AC: ; 0x020111AC + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r1, #0xe2 + ldr r0, [r5, #0x20] + lsl r1, r1, #0x2 + bl FUN_02016998 + mov r2, #0xe2 + mov r1, #0x0 + lsl r2, r2, #0x2 + str r0, [r5, #0x14] + blx Call_FillMemWithValue + add r1, r4, #0x0 + add r1, #0x23 + ldrb r1, [r1, #0x0] + ldr r0, [r5, #0x14] + cmp r1, #0x0 + ldr r1, [r5, #0x10] + bne _020111F2 + str r1, [sp, #0x0] + ldr r1, [r5, #0x18] + str r1, [sp, #0x4] + ldr r1, [r5, #0x1c] + str r1, [sp, #0x8] + ldr r1, [r5, #0x20] + str r1, [sp, #0xc] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + add r1, r4, #0x0 + bl FUN_0201127C + b _0201120A +_020111F2: + str r1, [sp, #0x0] + ldr r1, [r5, #0x18] + str r1, [sp, #0x4] + ldr r1, [r5, #0x1c] + str r1, [sp, #0x8] + ldr r1, [r5, #0x20] + str r1, [sp, #0xc] + ldr r2, [r5, #0x4] + ldr r3, [r5, #0x8] + add r1, r4, #0x0 + bl FUN_0201137C +_0201120A: + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02011214 +FUN_02011214: ; 0x02011214 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0xc] + mov r4, #0x0 + ldr r0, [r5, #0x14] + cmp r1, #0x1 + beq _0201122C + cmp r1, #0x2 + beq _02011258 + cmp r1, #0x3 + beq _0201126A + b _0201126E +_0201122C: + ldr r1, _02011278 ; =0x00000386 + ldrb r1, [r0, r1] + cmp r1, #0x0 + bne _0201123C + add r1, r5, #0x0 + bl FUN_02011308 + b _02011242 +_0201123C: + add r1, r5, #0x0 + bl FUN_020113EC +_02011242: + cmp r0, #0x1 + bne _02011272 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x10] + bl FUN_0200F62C + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02011272 +_02011258: + bl FUN_02016A18 + add r0, r4, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r4, #0x1 + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02011272 +_0201126A: + mov r4, #0x1 + b _02011272 +_0201126E: + bl ErrorHandling +_02011272: + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_02011278: .word 0x00000386 + + thumb_func_start FUN_0201127C +FUN_0201127C: ; 0x0201127C + push {r3-r7, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r5, r0, #0x0 + lsl r0, r6, #0xc + ldr r2, [r4, #0x2c] + add r7, r3, #0x0 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + add r2, r0, #0x0 + mov r0, #0x2 + mov r3, #0x0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r2, r0, #0xc + mov r0, #0xe1 + sub r1, r6, r2 + lsl r0, r0, #0x2 + strb r1, [r5, r0] + sub r1, r0, #0x4 + str r4, [r5, r1] + add r1, r4, #0x0 + add r1, #0x23 + ldrb r1, [r1, #0x0] + add r0, r0, #0x2 + add r3, r7, #0x0 + strb r1, [r5, r0] + ldr r0, [sp, #0x20] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_0200FE20 + add r0, r4, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _020112EA + add r4, #0x23 + ldrb r3, [r4, #0x0] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x20] + mov r1, #0x1 + bl FUN_0200F6E4 + b _020112F8 +_020112EA: + add r4, #0x23 + ldrb r3, [r4, #0x0] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x20] + mov r1, #0x2 + bl FUN_0200F6E4 +_020112F8: + ldr r0, _02011304 ; =0x00000385 + mov r1, #0x0 + strb r1, [r5, r0] + add sp, #0x8 + pop {r3-r7, pc} + nop +_02011304: .word 0x00000385 + + thumb_func_start FUN_02011308 +FUN_02011308: ; 0x02011308 + push {r4-r6, lr} + sub sp, #0x10 + add r4, r1, #0x0 + ldr r1, _02011378 ; =0x00000385 + add r5, r0, #0x0 + ldrb r1, [r5, r1] + mov r6, #0x0 + cmp r1, #0x0 + beq _02011324 + cmp r1, #0x1 + beq _0201135A + cmp r1, #0x2 + beq _02011370 + b _02011372 +_02011324: + bl FUN_0200FE90 + cmp r0, #0x1 + bne _02011372 + ldr r2, _02011378 ; =0x00000385 + ldrb r0, [r5, r2] + sub r1, r2, #0x5 + add r0, r0, #0x1 + strb r0, [r5, r2] + ldr r0, [r4, #0x10] + sub r2, r2, #0x1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x8] + ldr r0, [r4, #0x20] + str r0, [sp, #0xc] + ldr r1, [r5, r1] + add r0, r5, #0x0 + ldrb r2, [r5, r2] + ldr r3, [r4, #0x8] + add r0, #0x4c + add r1, #0x24 + bl FUN_02010FD0 + b _02011372 +_0201135A: + add r0, #0x4c + bl FUN_020110BC + cmp r0, #0x1 + bne _02011372 + ldr r0, _02011378 ; =0x00000385 + mov r6, #0x1 + ldrb r1, [r5, r0] + add r1, r1, #0x1 + strb r1, [r5, r0] + b _02011372 +_02011370: + mov r6, #0x1 +_02011372: + add r0, r6, #0x0 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_02011378: .word 0x00000385 + + thumb_func_start FUN_0201137C +FUN_0201137C: ; 0x0201137C + push {r3-r7, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r5, r0, #0x0 + lsl r0, r6, #0xc + ldr r2, [r4, #0x2c] + add r7, r3, #0x0 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + add r2, r0, #0x0 + mov r0, #0x2 + mov r3, #0x0 + lsl r0, r0, #0xa + add r0, r2, r0 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0xe1 + asr r0, r0, #0xc + lsl r1, r1, #0x2 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + sub r2, r6, r0 + sub r0, r1, #0x4 + str r4, [r5, r0] + add r4, #0x23 + add r0, r1, #0x2 + ldrb r3, [r4, #0x0] + sub r1, r1, #0x4 + strb r3, [r5, r0] + ldr r0, [sp, #0x28] + add r3, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + str r0, [sp, #0x8] + ldr r0, [sp, #0x34] + str r0, [sp, #0xc] + ldr r1, [r5, r1] + add r0, r5, #0x0 + add r0, #0x4c + add r1, #0x24 + bl FUN_02010FD0 + ldr r0, _020113E8 ; =0x00000385 + mov r1, #0x0 + strb r1, [r5, r0] + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_020113E8: .word 0x00000385 + + thumb_func_start FUN_020113EC +FUN_020113EC: ; 0x020113EC + push {r4-r6, lr} + sub sp, #0x8 + add r4, r1, #0x0 + ldr r1, _0201147C ; =0x00000385 + add r5, r0, #0x0 + ldrb r1, [r5, r1] + mov r6, #0x0 + cmp r1, #0x0 + beq _02011408 + cmp r1, #0x1 + beq _02011460 + cmp r1, #0x2 + beq _02011474 + b _02011476 +_02011408: + add r0, #0x4c + bl FUN_020110BC + cmp r0, #0x1 + bne _02011476 + ldr r2, _0201147C ; =0x00000385 + ldrb r0, [r5, r2] + sub r1, r2, #0x5 + add r0, r0, #0x1 + strb r0, [r5, r2] + ldr r0, [r4, #0x10] + sub r2, r2, #0x1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldrb r2, [r5, r2] + ldr r1, [r5, r1] + ldr r3, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_0200FE20 + mov r0, #0xe + lsl r0, r0, #0x6 + ldr r3, [r5, r0] + add r0, r3, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ldr r0, [r4, #0x18] + bne _02011452 + add r3, #0x23 + ldrb r3, [r3, #0x0] + ldr r2, [r4, #0x10] + mov r1, #0x1 + bl FUN_0200F6E4 + b _02011476 +_02011452: + add r3, #0x23 + ldrb r3, [r3, #0x0] + ldr r2, [r4, #0x10] + mov r1, #0x2 + bl FUN_0200F6E4 + b _02011476 +_02011460: + bl FUN_0200FE90 + cmp r0, #0x1 + bne _02011476 + ldr r0, _0201147C ; =0x00000385 + mov r6, #0x1 + ldrb r1, [r5, r0] + add r1, r1, #0x1 + strb r1, [r5, r0] + b _02011476 +_02011474: + mov r6, #0x1 +_02011476: + add r0, r6, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0201147C: .word 0x00000385 + + thumb_func_start FUN_02011480 +FUN_02011480: ; 0x02011480 + cmp r1, #0x0 + ldr r1, _020114A4 ; =0xFFFF1FFF + bne _02011496 + mov r3, #0x1 + lsl r3, r3, #0x1a + ldr r2, [r3, #0x0] + lsl r0, r0, #0xd + and r1, r2 + orr r0, r1 + str r0, [r3, #0x0] + bx lr +_02011496: + ldr r3, _020114A8 ; =0x04001000 + lsl r0, r0, #0xd + ldr r2, [r3, #0x0] + and r1, r2 + orr r0, r1 + str r0, [r3, #0x0] + bx lr + .balign 4 +_020114A4: .word 0xFFFF1FFF +_020114A8: .word 0x04001000 + + thumb_func_start FUN_020114AC +FUN_020114AC: ; 0x020114AC + push {r3-r4} + cmp r2, #0x0 + bne _020114EE + cmp r3, #0x0 + bne _020114D2 + ldr r2, _02011528 ; =0x04000048 + ldrh r3, [r2, #0x0] + mov r2, #0x3f + bic r3, r2 + add r2, r3, #0x0 + orr r2, r0 + cmp r1, #0x0 + beq _020114CA + mov r0, #0x20 + orr r2, r0 +_020114CA: + ldr r0, _02011528 ; =0x04000048 + strh r2, [r0, #0x0] + pop {r3-r4} + bx lr +_020114D2: + ldr r2, _0201152C ; =0x04001048 + ldrh r3, [r2, #0x0] + mov r2, #0x3f + bic r3, r2 + add r2, r3, #0x0 + orr r2, r0 + cmp r1, #0x0 + beq _020114E6 + mov r0, #0x20 + orr r2, r0 +_020114E6: + ldr r0, _0201152C ; =0x04001048 + strh r2, [r0, #0x0] + pop {r3-r4} + bx lr +_020114EE: + cmp r3, #0x0 + ldr r2, _02011530 ; =0xFFFFC0FF + bne _0201150E + ldr r4, _02011528 ; =0x04000048 + lsl r0, r0, #0x8 + ldrh r3, [r4, #0x0] + and r2, r3 + orr r2, r0 + cmp r1, #0x0 + beq _02011506 + lsr r0, r4, #0xd + orr r2, r0 +_02011506: + ldr r0, _02011528 ; =0x04000048 + strh r2, [r0, #0x0] + pop {r3-r4} + bx lr +_0201150E: + ldr r4, _0201152C ; =0x04001048 + lsl r0, r0, #0x8 + ldrh r3, [r4, #0x0] + and r2, r3 + orr r2, r0 + cmp r1, #0x0 + beq _02011520 + lsr r0, r4, #0xd + orr r2, r0 +_02011520: + ldr r0, _0201152C ; =0x04001048 + strh r2, [r0, #0x0] + pop {r3-r4} + bx lr + .balign 4 +_02011528: .word 0x04000048 +_0201152C: .word 0x04001048 +_02011530: .word 0xFFFFC0FF + + thumb_func_start FUN_02011534 +FUN_02011534: ; 0x02011534 + cmp r2, #0x0 + bne _02011552 + ldr r2, _0201156C ; =0x0400004A + ldrh r3, [r2, #0x0] + mov r2, #0x3f + bic r3, r2 + add r2, r3, #0x0 + orr r2, r0 + cmp r1, #0x0 + beq _0201154C + mov r0, #0x20 + orr r2, r0 +_0201154C: + ldr r0, _0201156C ; =0x0400004A + strh r2, [r0, #0x0] + bx lr +_02011552: + ldr r2, _02011570 ; =0x0400104A + ldrh r3, [r2, #0x0] + mov r2, #0x3f + bic r3, r2 + add r2, r3, #0x0 + orr r2, r0 + cmp r1, #0x0 + beq _02011566 + mov r0, #0x20 + orr r2, r0 +_02011566: + ldr r0, _02011570 ; =0x0400104A + strh r2, [r0, #0x0] + bx lr + .balign 4 +_0201156C: .word 0x0400004A +_02011570: .word 0x0400104A + + thumb_func_start FUN_02011574 +FUN_02011574: ; 0x02011574 + push {r4-r5} + add r4, r2, #0x0 + add r2, r3, #0x0 + ldr r3, [sp, #0x8] + cmp r3, #0x0 + bne _020115D2 + ldr r3, [sp, #0xc] + cmp r3, #0x0 + bne _020115AC + lsl r0, r0, #0x8 + mov r3, #0xff + add r5, r0, #0x0 + lsl r3, r3, #0x8 + lsl r0, r4, #0x18 + and r5, r3 + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + add r4, r5, #0x0 + orr r4, r0 + ldr r0, _02011624 ; =0x04000040 + orr r1, r3 + strh r4, [r0, #0x0] + strh r1, [r0, #0x4] + pop {r4-r5} + bx lr +_020115AC: + lsl r0, r0, #0x8 + mov r3, #0xff + add r5, r0, #0x0 + lsl r3, r3, #0x8 + lsl r0, r4, #0x18 + and r5, r3 + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + add r4, r5, #0x0 + orr r4, r0 + ldr r0, _02011628 ; =0x04001040 + orr r1, r3 + strh r4, [r0, #0x0] + strh r1, [r0, #0x4] + pop {r4-r5} + bx lr +_020115D2: + ldr r3, [sp, #0xc] + cmp r3, #0x0 + bne _020115FE + lsl r0, r0, #0x8 + mov r3, #0xff + add r5, r0, #0x0 + lsl r3, r3, #0x8 + lsl r0, r4, #0x18 + and r5, r3 + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + add r4, r5, #0x0 + orr r4, r0 + ldr r0, _0201162C ; =0x04000042 + orr r1, r3 + strh r4, [r0, #0x0] + strh r1, [r0, #0x4] + pop {r4-r5} + bx lr +_020115FE: + lsl r0, r0, #0x8 + mov r3, #0xff + add r5, r0, #0x0 + lsl r3, r3, #0x8 + lsl r0, r4, #0x18 + and r5, r3 + lsl r1, r1, #0x8 + and r3, r1 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + add r4, r5, #0x0 + orr r4, r0 + ldr r0, _02011630 ; =0x04001042 + orr r1, r3 + strh r4, [r0, #0x0] + strh r1, [r0, #0x4] + pop {r4-r5} + bx lr + .balign 4 +_02011624: .word 0x04000040 +_02011628: .word 0x04001040 +_0201162C: .word 0x04000042 +_02011630: .word 0x04001042 + + thumb_func_start FUN_02011634 +FUN_02011634: ; 0x02011634 + push {r4, lr} + lsl r3, r2, #0x3 + add r4, r0, r3 + str r1, [r0, r3] + str r2, [r4, #0x4] + ldr r0, _0201164C ; =FUN_020116CC + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_0200CA98 + pop {r4, pc} + nop +_0201164C: .word FUN_020116CC + + thumb_func_start FUN_02011650 +FUN_02011650: ; 0x02011650 + push {r4-r6, lr} + ldr r5, [sp, #0x10] + add r0, #0x10 + lsl r4, r5, #0x5 + add r6, r0, r4 + lsl r0, r3, #0x4 + add r4, r6, r0 + str r1, [r6, r0] + str r2, [r4, #0x4] + str r3, [r4, #0x8] + ldr r0, _02011674 ; =FUN_020116E0 + add r1, r4, #0x0 + mov r2, #0x1 + str r5, [r4, #0xc] + bl FUN_0200CA98 + pop {r4-r6, pc} + nop +_02011674: .word FUN_020116E0 + + thumb_func_start FUN_02011678 +FUN_02011678: ; 0x02011678 + push {r3-r5, lr} + mov r4, #0xc + add r0, #0x68 + mul r4, r3 + add r5, r0, r4 + str r1, [r0, r4] + str r2, [r5, #0x4] + ldr r0, _02011694 ; =FUN_020116FC + add r1, r5, #0x0 + mov r2, #0x1 + str r3, [r5, #0x8] + bl FUN_0200CA98 + pop {r3-r5, pc} + .balign 4 +_02011694: .word FUN_020116FC + + thumb_func_start FUN_02011698 +FUN_02011698: ; 0x02011698 + push {r3-r7, lr} + ldr r5, [sp, #0x20] + add r7, r1, #0x0 + add r0, #0x80 + lsl r1, r5, #0x5 + add r6, r0, r1 + add r4, r2, #0x0 + ldr r0, [sp, #0x1c] + add r2, r3, #0x0 + lsl r3, r0, #0x4 + add r1, r6, r3 + strh r7, [r6, r3] + strh r4, [r1, #0x2] + strh r2, [r1, #0x4] + ldr r2, [sp, #0x18] + strh r2, [r1, #0x6] + str r0, [r1, #0x8] + ldr r0, _020116C8 ; =FUN_02011714 + mov r2, #0x1 + str r5, [r1, #0xc] + bl FUN_0200CA98 + pop {r3-r7, pc} + nop +_020116C8: .word FUN_02011714 + + thumb_func_start FUN_020116CC +FUN_020116CC: ; 0x020116CC + push {r4, lr} + add r4, r0, #0x0 + ldmia r1!, {r0-r1} + bl FUN_02011480 + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020116E0 +FUN_020116E0: ; 0x020116E0 + push {r4, lr} + add r3, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r3, #0x0] + ldr r1, [r3, #0x4] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + bl FUN_020114AC + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020116FC +FUN_020116FC: ; 0x020116FC + push {r4, lr} + add r2, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r2, #0x0] + ldr r1, [r2, #0x4] + ldr r2, [r2, #0x8] + bl FUN_02011534 + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start FUN_02011714 +FUN_02011714: ; 0x02011714 + push {r3-r5, lr} + sub sp, #0x8 + add r3, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r3, #0x8] + mov r1, #0x2 + str r0, [sp, #0x0] + ldr r0, [r3, #0xc] + mov r2, #0x4 + str r0, [sp, #0x4] + mov r0, #0x0 + mov r5, #0x6 + ldrsh r0, [r3, r0] + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldrsh r3, [r3, r5] + bl FUN_02011574 + add r0, r4, #0x0 + bl FUN_0200CAB4 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02011744 +FUN_02011744: ; 0x02011744 + push {r4-r7, lr} + sub sp, #0xc + add r7, r1, #0x0 + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x68 + bl FUN_02016998 + str r0, [sp, #0x8] + cmp r0, #0x0 + bne _0201175E + bl ErrorHandling +_0201175E: + ldr r4, [sp, #0x8] + ldr r5, [sp, #0x8] + mov r6, #0x0 + add r4, #0x30 +_02011766: + mov r0, #0x23 + add r1, r6, #0x0 + mov r2, #0x0 + add r3, r4, #0x0 + str r7, [sp, #0x0] + bl FUN_02006C30 + str r0, [r5, #0x0] + cmp r0, #0x0 + bne _0201177E + bl ErrorHandling +_0201177E: + add r6, r6, #0x1 + add r4, r4, #0x4 + add r5, r5, #0x4 + cmp r6, #0xc + blt _02011766 + ldr r0, [sp, #0x4] + mov r1, #0x14 + add r4, r0, #0x0 + mul r4, r1 + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_02016998 + ldr r1, [sp, #0x8] + cmp r0, #0x0 + str r0, [r1, #0x60] + bne _020117A4 + bl ErrorHandling +_020117A4: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + add r2, r4, #0x0 + str r1, [r0, #0x64] + ldr r0, [r0, #0x60] + mov r1, #0x0 + blx Call_FillMemWithValue + ldr r0, [sp, #0x8] + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020117BC +FUN_020117BC: ; 0x020117BC + push {r4-r6, lr} + add r6, r0, #0x0 + bne _020117C6 + bl ErrorHandling +_020117C6: + mov r4, #0x0 + add r5, r6, #0x0 +_020117CA: + ldr r0, [r5, #0x0] + bl FUN_02016A18 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0xc + blt _020117CA + ldr r0, [r6, #0x60] + bl FUN_02016A18 + add r0, r6, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020117E8 +FUN_020117E8: ; 0x020117E8 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + bne _020117F4 + bl ErrorHandling +_020117F4: + ldr r0, [r5, #0x0] + bl FUN_02011BA0 + add r4, r0, #0x0 + bne _02011802 + bl ErrorHandling +_02011802: + ldr r0, [r5, #0x10] + add r3, sp, #0x8 + str r0, [r4, #0x8] + ldr r0, [r5, #0x18] + str r0, [r4, #0xc] + ldr r0, [r5, #0x1c] + str r0, [r4, #0x10] + str r3, [sp, #0x14] + str r3, [sp, #0x18] + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x2c] + ldrb r0, [r1, #0x7] + ldrb r1, [r1, #0x8] + bl FUN_02011CA4 + add r6, r0, #0x0 + mov r1, #0x24 + ldr r0, [r5, #0x2c] + mul r1, r6 + bl FUN_020169D8 + add r7, r0, #0x0 + mov r1, #0xc + ldr r0, [r5, #0x2c] + mul r1, r6 + bl FUN_02016998 + str r0, [r4, #0x0] + str r6, [r4, #0x4] + ldr r0, [r5, #0x28] + add r1, sp, #0x8 + str r0, [sp, #0x0] + ldr r0, [r5, #0x2c] + add r2, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [r5, #0x4] + ldr r3, [r5, #0x14] + bl FUN_02011D2C + add r0, r5, #0x0 + add r1, sp, #0x8 + add r2, r7, #0x0 + add r3, r4, #0x0 + bl FUN_02011EAC + add r0, r7, #0x0 + bl FUN_02016A18 + add r0, sp, #0x8 + bl FUN_02011FDC + add r0, r4, #0x0 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02011870 +FUN_02011870: ; 0x02011870 + push {r4, lr} + add r4, r0, #0x0 + bne _0201187A + bl ErrorHandling +_0201187A: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02011884 + bl ErrorHandling +_02011884: + add r0, r4, #0x0 + bl FUN_02011F00 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02011B90 + pop {r4, pc} + + thumb_func_start FUN_02011898 +FUN_02011898: ; 0x02011898 + push {r4-r5, lr} + sub sp, #0x14 + add r3, sp, #0x0 + add r5, r0, #0x0 + str r3, [sp, #0xc] + str r3, [sp, #0x10] + add r4, r1, #0x0 + ldrb r0, [r5, #0x7] + ldrb r1, [r5, #0x8] + bl FUN_02011CA4 + add r0, sp, #0x0 + add r1, r4, #0x0 + bl FUN_02011E58 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_02011FDC + add r0, r4, #0x0 + add sp, #0x14 + pop {r4-r5, pc} + + thumb_func_start FUN_020118C4 +FUN_020118C4: ; 0x020118C4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r7, r2, #0x0 + str r1, [sp, #0x0] + cmp r5, #0x0 + bne _020118D6 + bl ErrorHandling +_020118D6: + ldr r0, [sp, #0x0] + str r0, [r5, #0xc] + str r7, [r5, #0x10] + lsl r0, r0, #0xc + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + lsl r7, r7, #0xc + cmp r0, #0x0 + beq _020118F8 + bl FUN_0202011C + ldr r2, [r0, #0x0] + ldr r1, [sp, #0x0] + ldr r0, [r0, #0x4] + add r1, r1, r2 + str r1, [sp, #0x0] + add r7, r7, r0 +_020118F8: + mov r6, #0x0 + str r6, [sp, #0xc] + ldr r0, [r5, #0x4] + cmp r0, #0x0 + ble _02011932 + add r4, r6, #0x0 +_02011904: + ldr r0, [r5, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x4] + lsl r1, r0, #0xc + ldr r0, [sp, #0x0] + add r0, r0, r1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r1, sp, #0x4 + add r0, r0, r4 + ldr r0, [r0, #0x8] + lsl r0, r0, #0xc + add r0, r7, r0 + str r0, [sp, #0x8] + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + bl FUN_02020044 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011904 +_02011932: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011938 +FUN_02011938: ; 0x02011938 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bne _02011944 + bl ErrorHandling +_02011944: + ldr r0, [r5, #0x8] + cmp r0, #0x0 + beq _0201199E + ldr r1, [r5, #0xc] + lsl r1, r1, #0xc + str r1, [sp, #0x0] + ldr r1, [r5, #0x10] + lsl r7, r1, #0xc + bl FUN_0202011C + ldr r2, [r0, #0x0] + ldr r0, [r0, #0x4] + mov r6, #0x0 + ldr r1, [sp, #0x0] + str r6, [sp, #0xc] + add r7, r7, r0 + add r1, r1, r2 + ldr r0, [r5, #0x4] + str r1, [sp, #0x0] + cmp r0, #0x0 + ble _0201199E + add r4, r6, #0x0 +_02011970: + ldr r0, [r5, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x4] + lsl r1, r0, #0xc + ldr r0, [sp, #0x0] + add r0, r0, r1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + add r1, sp, #0x4 + add r0, r0, r4 + ldr r0, [r0, #0x8] + lsl r0, r0, #0xc + add r0, r7, r0 + str r0, [sp, #0x8] + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + bl FUN_02020044 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011970 +_0201199E: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020119A4 +FUN_020119A4: ; 0x020119A4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r5, #0x0 + bne _020119B4 + bl ErrorHandling +_020119B4: + cmp r4, #0x0 + bne _020119BC + bl ErrorHandling +_020119BC: + cmp r6, #0x0 + bne _020119C4 + bl ErrorHandling +_020119C4: + ldr r0, [r5, #0xc] + str r0, [r4, #0x0] + ldr r0, [r5, #0x10] + str r0, [r6, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020119D0 +FUN_020119D0: ; 0x020119D0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _020119DE + bl ErrorHandling +_020119DE: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _020119FC + add r4, r6, #0x0 +_020119E8: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_020200A0 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _020119E8 +_020119FC: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011A00 +FUN_02011A00: ; 0x02011A00 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _02011A0E + bl ErrorHandling +_02011A0E: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011A2C + add r4, r6, #0x0 +_02011A18: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_02020238 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011A18 +_02011A2C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011A30 +FUN_02011A30: ; 0x02011A30 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _02011A3E + bl ErrorHandling +_02011A3E: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011A5C + add r4, r6, #0x0 +_02011A48: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_02020310 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011A48 +_02011A5C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011A60 +FUN_02011A60: ; 0x02011A60 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _02011A6E + bl ErrorHandling +_02011A6E: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011A8C + add r4, r6, #0x0 +_02011A78: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_02020248 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011A78 +_02011A8C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011A90 +FUN_02011A90: ; 0x02011A90 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _02011A9E + bl ErrorHandling +_02011A9E: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011ABC + add r4, r6, #0x0 +_02011AA8: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_020202A8 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011AA8 +_02011ABC: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011AC0 +FUN_02011AC0: ; 0x02011AC0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _02011ACE + bl ErrorHandling +_02011ACE: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011AEC + add r4, r6, #0x0 +_02011AD8: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_020202DC + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011AD8 +_02011AEC: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011AF0 +FUN_02011AF0: ; 0x02011AF0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + cmp r5, #0x0 + bne _02011AFE + bl ErrorHandling +_02011AFE: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011B1C + add r4, r6, #0x0 +_02011B08: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_02020398 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011B08 +_02011B1C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02011B20 +FUN_02011B20: ; 0x02011B20 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + ldr r0, [sp, #0x20] + add r7, r1, #0x0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x24] + ldrb r1, [r6, #0x7] + str r0, [sp, #0x24] + add r0, r3, #0x0 + add r0, r7, r0 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + cmp r1, r0 + bge _02011B42 + bl ErrorHandling +_02011B42: + ldrb r2, [r6, #0x8] + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x20] + add r0, r1, r0 + cmp r2, r0 + bge _02011B52 + bl ErrorHandling +_02011B52: + ldr r0, [sp, #0x0] + mov r4, #0x0 + cmp r0, #0x0 + ble _02011B8A + lsl r0, r7, #0x5 + add r5, r4, #0x0 + str r0, [sp, #0x8] +_02011B60: + ldrb r1, [r6, #0x7] + ldr r0, [sp, #0x20] + add r2, r1, #0x0 + add r0, r4, r0 + mul r2, r0 + ldr r0, [sp, #0x4] + lsl r1, r5, #0x5 + add r2, r2, r0 + ldr r0, [sp, #0x24] + lsl r2, r2, #0x5 + add r0, r0, r1 + ldr r1, [r6, #0xc] + add r1, r1, r2 + ldr r2, [sp, #0x8] + blx memcpy + ldr r0, [sp, #0x0] + add r4, r4, #0x1 + add r5, r5, r7 + cmp r4, r0 + blt _02011B60 +_02011B8A: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02011B90 +FUN_02011B90: ; 0x02011B90 + mov r2, #0x14 + mov r1, #0x0 +_02011B94: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _02011B94 + bx lr + .balign 4 + + thumb_func_start FUN_02011BA0 +FUN_02011BA0: ; 0x02011BA0 + ldr r1, [r0, #0x64] + mov r2, #0x0 + cmp r1, #0x0 + ble _02011BC4 + ldr r3, [r0, #0x60] +_02011BAA: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + bne _02011BBA + ldr r1, [r0, #0x60] + mov r0, #0x14 + mul r0, r2 + add r0, r1, r0 + bx lr +_02011BBA: + ldr r1, [r0, #0x64] + add r2, r2, #0x1 + add r3, #0x14 + cmp r2, r1 + blt _02011BAA +_02011BC4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02011BC8 +FUN_02011BC8: ; 0x02011BC8 + push {r3-r4} + ldr r4, _02011BF0 ; =0x020ED398 + mov r3, #0x0 +_02011BCE: + ldrb r2, [r4, #0x0] + cmp r2, r0 + bgt _02011BE0 + ldrb r2, [r4, #0x1] + cmp r2, r1 + bgt _02011BE0 + add r0, r3, #0x0 + pop {r3-r4} + bx lr +_02011BE0: + add r3, r3, #0x1 + add r4, r4, #0x2 + cmp r3, #0xc + blt _02011BCE + mov r0, #0xc + pop {r3-r4} + bx lr + nop +_02011BF0: .word 0x020ED398 + + thumb_func_start FUN_02011BF4 +FUN_02011BF4: ; 0x02011BF4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r2, #0x0 + bl FUN_02011FAC + ldr r1, [r6, #0x10] + add r4, r0, #0x0 + bl FUN_02011FF4 + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + bl FUN_02011BC8 + str r0, [r4, #0x8] + ldr r0, [r5, #0x4] + ldr r1, _02011C9C ; =0x020ED398 + str r0, [r4, #0x0] + ldr r0, [r5, #0x0] + ldr r6, _02011CA0 ; =0x020ED399 + str r0, [r4, #0x4] + ldr r0, [r4, #0x8] + ldr r2, [r5, #0x8] + lsl r3, r0, #0x1 + ldrb r0, [r1, r3] + ldrb r3, [r6, r3] + sub r2, r2, r0 + ldr r0, [r5, #0xc] + sub r6, r0, r3 + cmp r2, #0x0 + ble _02011C5C + str r0, [r5, #0x1c] + str r2, [r5, #0x18] + ldr r0, [r5, #0x0] + str r0, [r5, #0x10] + ldr r2, [r4, #0x8] + ldr r0, [r5, #0x4] + lsl r2, r2, #0x1 + ldrb r1, [r1, r2] + add r0, r0, r1 + str r0, [r5, #0x14] + add r0, r5, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _02011C54 + bl ErrorHandling +_02011C54: + add r0, r5, #0x0 + mov r1, #0x1 + add r0, #0x20 + strb r1, [r0, #0x0] +_02011C5C: + cmp r6, #0x0 + ble _02011C72 + ldr r0, [r4, #0x8] + ldr r2, [r5, #0x0] + lsl r1, r0, #0x1 + ldr r0, _02011CA0 ; =0x020ED399 + ldrb r0, [r0, r1] + add r0, r2, r0 + str r0, [r5, #0x0] + str r6, [r5, #0xc] + b _02011C96 +_02011C72: + add r0, r5, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _02011C92 + add r3, r5, #0x0 + add r3, #0x10 + add r2, r5, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r0, #0x0 + add r5, #0x20 + strb r0, [r5, #0x0] + b _02011C96 +_02011C92: + mov r0, #0x1 + pop {r4-r6, pc} +_02011C96: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02011C9C: .word 0x020ED398 +_02011CA0: .word 0x020ED399 + + thumb_func_start FUN_02011CA4 +FUN_02011CA4: ; 0x02011CA4 + push {r3-r7, lr} + sub sp, #0x38 + add r7, r0, #0x0 + str r1, [sp, #0x0] + add r5, r2, #0x0 + add r6, r3, #0x0 + cmp r7, #0x0 + bne _02011CB8 + bl ErrorHandling +_02011CB8: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _02011CC2 + bl ErrorHandling +_02011CC2: + ldr r0, [sp, #0x0] + mov r4, #0x0 + str r0, [sp, #0x10] + str r4, [sp, #0x4] + str r4, [sp, #0x8] + str r7, [sp, #0xc] + add r0, sp, #0x24 + strb r4, [r0, #0x0] + ldr r0, [sp, #0x0] + str r4, [sp, #0x2c] + str r7, [sp, #0x30] + cmp r0, #0x0 + beq _02011D20 + add r7, sp, #0x4 +_02011CDE: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x0] + bl FUN_02011BC8 + lsl r1, r0, #0x1 + ldr r0, _02011D28 ; =0x020ED398 + add r0, r0, r1 + ldrb r0, [r0, #0x1] + ldr r1, [sp, #0x4] + add r1, r1, r0 + str r1, [sp, #0x28] + ldr r1, [sp, #0x10] + sub r1, r1, r0 + str r1, [sp, #0x34] + str r0, [sp, #0x10] +_02011CFC: + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r4, r4, #0x1 + bl FUN_02011BF4 + cmp r0, #0x0 + beq _02011CFC + add r3, sp, #0x28 + add r2, sp, #0x4 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [sp, #0x10] + str r0, [sp, #0x0] + cmp r0, #0x0 + bne _02011CDE +_02011D20: + add r0, r4, #0x0 + add sp, #0x38 + pop {r3-r7, pc} + nop +_02011D28: .word 0x020ED398 + + thumb_func_start FUN_02011D2C +FUN_02011D2C: ; 0x02011D2C + push {r4-r7, lr} + sub sp, #0x1c + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + str r1, [sp, #0x14] + str r0, [sp, #0x30] + ldr r0, [sp, #0x34] + add r5, r2, #0x0 + str r0, [sp, #0x34] + ldr r0, [sp, #0x30] + add r6, r3, #0x0 + cmp r0, #0x1 + bne _02011D4E + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + b _02011D52 +_02011D4E: + ldr r0, _02011D98 ; =0x04001000 + ldr r1, [r0, #0x0] +_02011D52: + ldr r0, _02011D9C ; =0x00300010 + add r7, r1, #0x0 + and r7, r0 + add r0, r7, #0x0 + bl FUN_0201DED0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + ldr r4, [r0, #0xc] + cmp r4, r0 + beq _02011D92 +_02011D68: + add r0, r5, #0x0 + blx FUN_020B1A24 + str r7, [sp, #0x0] + ldr r0, [sp, #0x30] + str r6, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x18] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_02011DA0 + add r6, r0, #0x0 + ldr r4, [r4, #0xc] + ldr r0, [sp, #0x14] + add r5, #0x24 + cmp r4, r0 + bne _02011D68 +_02011D92: + add sp, #0x1c + pop {r4-r7, pc} + nop +_02011D98: .word 0x04001000 +_02011D9C: .word 0x00300010 + + thumb_func_start FUN_02011DA0 +FUN_02011DA0: ; 0x02011DA0 + push {r4-r7, lr} + sub sp, #0x14 + add r6, r1, #0x0 + str r0, [sp, #0x8] + ldr r0, [r6, #0x8] + add r5, r2, #0x0 + lsl r1, r0, #0x1 + ldr r0, _02011E44 ; =0x020ED398 + ldrb r0, [r0, r1] + str r0, [sp, #0x10] + ldr r0, _02011E48 ; =0x020ED399 + ldrb r0, [r0, r1] + ldr r1, [sp, #0x10] + add r4, r1, #0x0 + mul r4, r0 + str r0, [sp, #0xc] + cmp r4, r3 + bge _02011DC6 + add r4, r3, #0x0 +_02011DC6: + lsl r4, r4, #0x5 + ldr r0, [sp, #0x34] + add r1, r4, #0x0 + bl FUN_020169D8 + add r7, r0, #0x0 + ldr r0, [r6, #0x4] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + str r7, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r3, [r6, #0x0] + bl FUN_02011B20 + add r0, r7, #0x0 + add r1, r4, #0x0 + blx DC_FlushRange + ldr r0, [sp, #0x30] + cmp r0, #0x1 + bne _02011E08 + ldr r6, [sp, #0x2c] + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + blx GX_LoadOBJ + mov r0, #0x1 + str r6, [r5, #0x4] + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + b _02011E1A +_02011E08: + ldr r6, [sp, #0x2c] + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + blx GXS_LoadOBJ + ldr r0, _02011E4C ; =0x04001000 + str r6, [r5, #0x8] + ldr r1, [r0, #0x0] +_02011E1A: + ldr r0, _02011E50 ; =0x00300010 + and r0, r1 + str r0, [r5, #0x20] + ldr r0, _02011E54 ; =0x0000FFFF + str r0, [r5, #0xc] + str r0, [r5, #0x10] + mov r0, #0x3 + str r0, [r5, #0x14] + mov r0, #0x0 + str r0, [r5, #0x18] + mov r0, #0x1 + str r0, [r5, #0x1c] + ldr r0, [sp, #0x28] + str r0, [r5, #0x20] + add r0, r7, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x2c] + add r0, r0, r4 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02011E44: .word 0x020ED398 +_02011E48: .word 0x020ED399 +_02011E4C: .word 0x04001000 +_02011E50: .word 0x00300010 +_02011E54: .word 0x0000FFFF + + thumb_func_start FUN_02011E58 +FUN_02011E58: ; 0x02011E58 + push {r3-r7, lr} + add r4, r0, #0x0 + cmp r1, #0x1 + bne _02011E68 + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + b _02011E6C +_02011E68: + ldr r0, _02011EA0 ; =0x04001000 + ldr r1, [r0, #0x0] +_02011E6C: + ldr r0, _02011EA4 ; =0x00300010 + and r0, r1 + bl FUN_0201DED0 + ldr r2, [r4, #0xc] + mov r3, #0x0 + cmp r2, r4 + beq _02011E9A + ldr r1, _02011EA8 ; =0x020ED398 +_02011E7E: + ldr r5, [r2, #0x8] + lsl r5, r5, #0x1 + add r7, r1, r5 + ldrb r6, [r1, r5] + ldrb r5, [r7, #0x1] + mul r5, r6 + cmp r5, r0 + bge _02011E90 + add r5, r0, #0x0 +_02011E90: + ldr r2, [r2, #0xc] + lsl r5, r5, #0x5 + add r3, r3, r5 + cmp r2, r4 + bne _02011E7E +_02011E9A: + add r0, r3, #0x0 + pop {r3-r7, pc} + nop +_02011EA0: .word 0x04001000 +_02011EA4: .word 0x00300010 +_02011EA8: .word 0x020ED398 + + thumb_func_start FUN_02011EAC +FUN_02011EAC: ; 0x02011EAC + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r0, r1, #0x0 + ldr r4, [r0, #0xc] + str r1, [sp, #0x4] + add r7, r2, #0x0 + add r6, r3, #0x0 + cmp r4, r0 + beq _02011EFC + mov r5, #0x0 +_02011EC2: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_02011F24 + ldr r1, [r6, #0x0] + str r0, [r1, r5] + ldr r0, [r6, #0x0] + ldr r0, [r0, r5] + cmp r0, #0x0 + bne _02011EDC + bl ErrorHandling +_02011EDC: + ldr r0, [r4, #0x0] + add r7, #0x24 + lsl r1, r0, #0x3 + ldr r0, [r6, #0x0] + add r0, r0, r5 + str r1, [r0, #0x4] + ldr r0, [r4, #0x4] + lsl r1, r0, #0x3 + ldr r0, [r6, #0x0] + add r0, r0, r5 + str r1, [r0, #0x8] + ldr r4, [r4, #0xc] + ldr r0, [sp, #0x4] + add r5, #0xc + cmp r4, r0 + bne _02011EC2 +_02011EFC: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02011F00 +FUN_02011F00: ; 0x02011F00 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02011F20 + add r4, r6, #0x0 +_02011F0E: + ldr r0, [r5, #0x0] + ldr r0, [r0, r4] + bl FUN_0201FFC8 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0xc + cmp r6, r0 + blt _02011F0E +_02011F20: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02011F24 +FUN_02011F24: ; 0x02011F24 + push {r4-r5, lr} + sub sp, #0x44 + add r5, r0, #0x0 + mov r0, #0x0 + str r2, [sp, #0x0] + str r0, [sp, #0x4] + add r4, r1, #0x0 + ldr r1, [r5, #0xc] + str r1, [sp, #0x8] + ldr r1, [r4, #0x8] + ldr r2, [r5, #0x0] + lsl r1, r1, #0x2 + add r1, r2, r1 + ldr r1, [r1, #0x30] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r2, [r5, #0x20] + add r1, sp, #0x20 + strb r2, [r1, #0x0] + ldr r1, [r5, #0x8] + str r1, [sp, #0x24] + add r1, sp, #0x0 + str r1, [sp, #0x28] + ldr r1, [r5, #0x24] + str r1, [sp, #0x38] + ldr r1, [r5, #0x28] + str r1, [sp, #0x3c] + ldr r1, [r5, #0x2c] + str r1, [sp, #0x40] + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + str r0, [sp, #0x34] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _02011F80 + bl FUN_0202011C + add r3, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, sp, #0x2c + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] +_02011F80: + ldr r1, [r4, #0x0] + ldr r2, [r5, #0x18] + lsl r1, r1, #0x3 + add r1, r2, r1 + ldr r0, [sp, #0x2c] + lsl r1, r1, #0xc + add r0, r0, r1 + str r0, [sp, #0x2c] + ldr r1, [r4, #0x4] + ldr r2, [r5, #0x1c] + lsl r1, r1, #0x3 + add r1, r2, r1 + ldr r0, [sp, #0x30] + lsl r1, r1, #0xc + add r0, r0, r1 + str r0, [sp, #0x30] + add r0, sp, #0x24 + bl FUN_0201FF84 + add sp, #0x44 + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_02011FAC +FUN_02011FAC: ; 0x02011FAC + push {r4, lr} + mov r1, #0x14 + bl FUN_020169D8 + add r4, r0, #0x0 + bne _02011FBC + bl ErrorHandling +_02011FBC: + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02011FC8 +FUN_02011FC8: ; 0x02011FC8 + push {r4, lr} + add r4, r0, #0x0 + bne _02011FD2 + bl ErrorHandling +_02011FD2: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02011FDC +FUN_02011FDC: ; 0x02011FDC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + cmp r0, r5 + beq _02011FF2 +_02011FE6: + ldr r4, [r0, #0xc] + bl FUN_02011FC8 + add r0, r4, #0x0 + cmp r4, r5 + bne _02011FE6 +_02011FF2: + pop {r3-r5, pc} + + thumb_func_start FUN_02011FF4 +FUN_02011FF4: ; 0x02011FF4 + ldr r2, [r1, #0xc] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + ldr r2, [r1, #0xc] + str r0, [r2, #0x10] + str r0, [r1, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_02012004 +FUN_02012004: ; 0x02012004 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r6, [sp, #0x20] + str r1, [sp, #0x4] + add r5, r2, #0x0 + add r4, r3, #0x0 + str r0, [sp, #0x24] + mov r7, #0x0 +_02012018: + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + ldr r2, [r5, #0x0] + add r0, r0, r1 + ldr r1, [sp, #0x0] + add r1, r1, r2 + add r2, r6, #0x0 + blx memcpy + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x24] + add r7, r7, #0x1 + add r0, r1, r0 + str r0, [r5, #0x0] + ldr r0, [r4, #0x0] + add r0, r0, r6 + str r0, [r4, #0x0] + cmp r7, #0x8 + blt _02012018 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02012044 +FUN_02012044: ; 0x02012044 + push {r4-r6, lr} + add r5, r3, #0x0 + bl LoadFromNarc_2 + add r4, r0, #0x0 + bne _02012054 + bl ErrorHandling +_02012054: + add r0, r4, #0x0 + add r1, r5, #0x0 + blx FUN_020B0088 + add r6, r0, #0x0 + cmp r5, #0x0 + bne _02012066 + bl ErrorHandling +_02012066: + cmp r6, #0x0 + bne _0201206E + bl ErrorHandling +_0201206E: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02012078 +FUN_02012078: ; 0x02012078 + push {r4-r7, lr} + sub sp, #0x2c + ldr r4, [sp, #0x40] + str r0, [sp, #0x8] + add r6, r0, r2 + ldrh r0, [r4, #0x2] + str r1, [sp, #0xc] + add r5, r3, #0x0 + cmp r0, r6 + bge _02012090 + bl ErrorHandling +_02012090: + ldr r0, [sp, #0xc] + ldrh r1, [r4, #0x0] + add r0, r0, r5 + str r0, [sp, #0x14] + cmp r1, r0 + bge _020120A0 + bl ErrorHandling +_020120A0: + ldr r0, [r4, #0x14] + str r0, [sp, #0x20] + ldr r0, [sp, #0x44] + str r0, [sp, #0x1c] + ldrh r0, [r4, #0x2] + lsl r7, r0, #0x2 + ldr r0, [sp, #0xc] + add r1, r0, #0x0 + mul r1, r7 + ldr r0, [sp, #0x8] + str r1, [sp, #0x18] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x18] + str r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x14] + cmp r1, r0 + bge _0201210A +_020120CC: + ldr r4, [sp, #0x8] + add r0, r4, #0x0 + cmp r0, r6 + bge _020120F8 + ldr r0, [sp, #0x18] + lsl r1, r0, #0x3 + ldr r0, [sp, #0x10] + add r5, r0, r1 +_020120DC: + str r5, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + add r2, sp, #0x28 + add r3, sp, #0x24 + str r7, [sp, #0x4] + bl FUN_02012004 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _020120DC +_020120F8: + ldr r0, [sp, #0x18] + add r0, r0, r7 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + add r1, r0, #0x1 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + blt _020120CC +_0201210A: + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02012110 +FUN_02012110: ; 0x02012110 + push {r4-r5} + sub sp, #0x8 + ldr r2, _02012148 ; =0x020ED3B0 + add r1, sp, #0x0 + ldr r3, [r2, #0x0] + ldr r2, [r2, #0x4] + str r3, [sp, #0x0] + str r2, [sp, #0x4] + ldr r2, _0201214C ; =0x000001EF + mov r5, #0x0 + add r3, r2, #0x0 +_02012126: + ldr r4, [r1, #0x0] + cmp r4, r3 + beq _02012140 + cmp r4, r0 + bne _02012138 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r5} + bx lr +_02012138: + add r5, r5, #0x1 + add r1, r1, #0x4 + cmp r5, r2 + blt _02012126 +_02012140: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r5} + bx lr + .balign 4 +_02012148: .word 0x020ED3B0 +_0201214C: .word 0x000001EF + + thumb_func_start FUN_02012150 +FUN_02012150: ; 0x02012150 + push {r3-r4, lr} + sub sp, #0xc + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [sp, #0x8] + add r3, sp, #0x8 + bl FUN_02012044 + ldr r0, [sp, #0x8] + ldr r0, [r0, #0x14] + bl FUN_02008A74 + ldr r0, [sp, #0x34] + bl FUN_02012110 + ldr r1, [sp, #0x30] + cmp r1, #0x2 + bne _02012184 + cmp r0, #0x1 + bne _02012184 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r0, [r0, #0x14] + ldr r2, [sp, #0x2c] + bl FUN_02008904 +_02012184: + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x18] + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x1c] + str r0, [sp, #0x4] + ldr r3, [sp, #0x20] + add r0, r4, #0x0 + bl FUN_02012078 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0201219C +FUN_0201219C: ; 0x0201219C + push {r4-r7, lr} + sub sp, #0x24 + add r7, r1, #0x0 + add r5, r2, #0x0 + ldr r2, [sp, #0x3c] + ldr r1, [sp, #0x40] + add r6, r0, #0x0 + mul r1, r2 + add r0, r5, #0x0 + lsl r1, r1, #0x5 + str r3, [sp, #0x20] + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [sp, #0x38] + ldr r3, [sp, #0x20] + str r0, [sp, #0x0] + ldr r0, [sp, #0x3c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x40] + add r2, r5, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x44] + str r4, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x48] + str r0, [sp, #0x14] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x18] + ldr r0, [sp, #0x50] + str r0, [sp, #0x1c] + add r0, r6, #0x0 + bl FUN_02012150 + add r0, r4, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start FUN_020121E8 +FUN_020121E8: ; 0x020121E8 + push {r3-r7, lr} + sub sp, #0x30 + str r3, [sp, #0x8] + ldr r3, [sp, #0x48] + str r3, [sp, #0x48] + mov r3, #0x0 + str r3, [sp, #0x2c] + bl LoadFromNarc_2 + str r0, [sp, #0x20] + cmp r0, #0x0 + bne _02012204 + bl ErrorHandling +_02012204: + ldr r0, [sp, #0x20] + add r1, sp, #0x2c + blx FUN_020B0088 + cmp r0, #0x0 + bne _02012214 + bl ErrorHandling +_02012214: + ldr r1, [sp, #0x4c] + ldr r0, [sp, #0x8] + add r6, r0, r1 + ldr r0, [sp, #0x2c] + ldrh r0, [r0, #0x2] + cmp r0, r6 + bge _02012226 + bl ErrorHandling +_02012226: + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x48] + add r0, r0, r1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + ldrh r1, [r0, #0x0] + ldr r0, [sp, #0x10] + cmp r1, r0 + bge _0201223C + bl ErrorHandling +_0201223C: + ldr r0, [sp, #0x2c] + ldr r0, [r0, #0x14] + str r0, [sp, #0x1c] + bl FUN_02008A74 + ldr r0, [sp, #0x54] + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + ldrh r0, [r0, #0x2] + lsl r7, r0, #0x2 + ldr r0, [sp, #0x48] + add r1, r0, #0x0 + mul r1, r7 + ldr r0, [sp, #0x8] + str r1, [sp, #0x14] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + add r0, r1, r0 + str r0, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x10] + cmp r1, r0 + bge _020122AE +_02012270: + ldr r4, [sp, #0x8] + add r0, r4, #0x0 + cmp r0, r6 + bge _0201229C + ldr r0, [sp, #0x14] + lsl r1, r0, #0x3 + ldr r0, [sp, #0xc] + add r5, r0, r1 +_02012280: + str r5, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, sp, #0x28 + add r3, sp, #0x24 + str r7, [sp, #0x4] + bl FUN_02012004 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _02012280 +_0201229C: + ldr r0, [sp, #0x14] + add r0, r0, r7 + str r0, [sp, #0x14] + ldr r0, [sp, #0x48] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x48] + cmp r1, r0 + blt _02012270 +_020122AE: + ldr r0, [sp, #0x20] + bl FUN_02016A18 + add sp, #0x30 + pop {r3-r7, pc} + + thumb_func_start FUN_020122B8 +FUN_020122B8: ; 0x020122B8 + push {r4-r7, lr} + sub sp, #0x14 + add r7, r1, #0x0 + add r5, r2, #0x0 + ldr r2, [sp, #0x2c] + ldr r1, [sp, #0x30] + add r6, r0, #0x0 + mul r1, r2 + add r0, r5, #0x0 + lsl r1, r1, #0x5 + str r3, [sp, #0x10] + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + add r2, r5, #0x0 + str r0, [sp, #0x8] + add r0, r6, #0x0 + str r4, [sp, #0xc] + bl FUN_020121E8 + add r0, r4, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_020122F4 +FUN_020122F4: ; 0x020122F4 + push {r3-r7, lr} + sub sp, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x44] + ldr r1, [sp, #0x38] + str r0, [sp, #0x18] + ldr r0, [sp, #0x48] + str r2, [sp, #0x4] + str r0, [sp, #0x14] + add r0, r2, #0x0 + add r7, r0, r1 + ldr r1, [sp, #0x3c] + add r0, r3, #0x0 + add r0, r0, r1 + add r1, r3, #0x0 + str r3, [sp, #0x8] + ldr r5, [sp, #0x40] + str r0, [sp, #0x10] + cmp r1, r0 + bge _0201236C + add r0, r3, #0x0 + lsl r0, r0, #0x5 + str r0, [sp, #0xc] + add r0, r2, #0x0 + lsl r0, r0, #0x5 + str r0, [sp, #0x1c] +_02012328: + ldr r6, [sp, #0x4] + add r0, r6, #0x0 + cmp r0, r7 + bge _0201235A + ldr r1, [sp, #0x0] + ldr r0, [sp, #0xc] + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x1c] + add r4, r0, r2 +_0201233C: + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x14] + mov r2, #0x20 + add r0, r0, r1 + ldr r1, [sp, #0x18] + add r1, r1, r4 + blx memcpy + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + add r0, #0x20 + str r0, [r5, #0x0] + add r4, #0x20 + cmp r6, r7 + blt _0201233C +_0201235A: + ldr r0, [sp, #0xc] + add r0, #0x20 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x8] + cmp r1, r0 + blt _02012328 +_0201236C: + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_02012370 +FUN_02012370: ; 0x02012370 + push {r3-r4, lr} + sub sp, #0x14 + add r4, r2, #0x0 + ldr r2, [r4, #0x8] + str r2, [sp, #0x0] + ldr r2, [r4, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x20] + str r3, [sp, #0x8] + str r2, [sp, #0xc] + ldr r2, [sp, #0x24] + str r2, [sp, #0x10] + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x4] + bl FUN_020122F4 + add sp, #0x14 + pop {r3-r4, pc} + + thumb_func_start FUN_02012394 +FUN_02012394: ; 0x02012394 + push {r4-r7, lr} + sub sp, #0x7c + str r0, [sp, #0xc] + ldr r0, [sp, #0x9c] + mov r12, r3 + add r5, r2, #0x0 + ldr r6, [sp, #0x94] + ldr r7, [sp, #0x98] + ldr r3, _020123FC ; =0x020ED3D8 + str r1, [sp, #0x10] + str r0, [sp, #0x9c] + add r2, sp, #0x1c + mov r4, #0xc +_020123AE: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r4, r4, #0x1 + bne _020123AE + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xc] + add r2, r5, #0x0 + mov r3, r12 + str r7, [sp, #0x8] + bl FUN_020122B8 + str r0, [sp, #0x14] + mov r4, #0x0 + add r5, sp, #0x1c +_020123D4: + ldr r0, [sp, #0x14] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x9c] + add r2, r5, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r3, sp, #0x18 + bl FUN_02012370 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x6 + blt _020123D4 + ldr r0, [sp, #0x14] + bl FUN_02016A18 + add sp, #0x7c + pop {r4-r7, pc} + nop +_020123FC: .word 0x020ED3D8 + + thumb_func_start FUN_02012400 +FUN_02012400: ; 0x02012400 + push {r4, lr} + sub sp, #0x10 + ldr r4, [r3, #0x4] + str r4, [sp, #0x0] + ldr r4, [r3, #0x8] + str r4, [sp, #0x4] + ldr r4, [r3, #0xc] + str r4, [sp, #0x8] + ldr r4, [sp, #0x18] + str r4, [sp, #0xc] + ldr r3, [r3, #0x0] + bl FUN_02012394 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012420 +FUN_02012420: ; 0x02012420 + push {r4-r7, lr} + sub sp, #0x14 + ldr r4, _02012448 ; =0x020ED3B8 + add r5, r3, #0x0 + add r3, sp, #0x4 + add r7, r0, #0x0 + mov r12, r1 + add r6, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r7, #0x0 + mov r1, r12 + add r3, r6, #0x0 + str r5, [sp, #0x0] + bl FUN_02012400 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02012448: .word 0x020ED3B8 + + thumb_func_start FUN_0201244C +FUN_0201244C: ; 0x0201244C + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x32 + add r7, r2, #0x0 + add r5, r0, #0x0 + add r0, r7, #0x0 + lsl r1, r1, #0x6 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + add r3, r4, #0x0 + bl FUN_02012420 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02012470 +FUN_02012470: ; 0x02012470 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r7, #0x0 + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl LoadFromNarc_2 + add r1, sp, #0x0 + add r5, r0, #0x0 + blx FUN_020B0138 + cmp r0, #0x1 + beq _0201249C + bl ErrorHandling +_0201249C: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + blx MIi_CpuCopy16 + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020124B4 +FUN_020124B4: ; 0x020124B4 + push {r4-r7, lr} + sub sp, #0x8c + str r0, [sp, #0x1c] + ldr r0, [sp, #0xac] + mov r12, r3 + add r5, r2, #0x0 + ldr r6, [sp, #0xa4] + ldr r7, [sp, #0xa8] + ldr r3, _0201252C ; =0x020ED438 + str r1, [sp, #0x20] + str r0, [sp, #0xac] + add r2, sp, #0x2c + mov r4, #0xc +_020124CE: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r4, r4, #0x1 + bne _020124CE + mov r0, #0x0 + str r0, [sp, #0x28] + ldr r0, [sp, #0xa0] + ldr r1, [sp, #0x20] + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xb0] + str r7, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0xb4] + add r2, r5, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0xb8] + mov r3, r12 + str r0, [sp, #0x14] + ldr r0, [sp, #0xbc] + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + bl FUN_0201219C + str r0, [sp, #0x24] + mov r4, #0x0 + add r5, sp, #0x2c +_02012504: + ldr r0, [sp, #0x24] + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0xac] + add r2, r5, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r3, sp, #0x28 + bl FUN_02012370 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x6 + blt _02012504 + ldr r0, [sp, #0x24] + bl FUN_02016A18 + add sp, #0x8c + pop {r4-r7, pc} + nop +_0201252C: .word 0x020ED438 + + thumb_func_start FUN_02012530 +FUN_02012530: ; 0x02012530 + push {r4, lr} + sub sp, #0x20 + ldr r4, [r3, #0x4] + str r4, [sp, #0x0] + ldr r4, [r3, #0x8] + str r4, [sp, #0x4] + ldr r4, [r3, #0xc] + str r4, [sp, #0x8] + ldr r4, [sp, #0x28] + str r4, [sp, #0xc] + ldr r4, [sp, #0x2c] + str r4, [sp, #0x10] + ldr r4, [sp, #0x30] + str r4, [sp, #0x14] + ldr r4, [sp, #0x34] + str r4, [sp, #0x18] + ldr r4, [sp, #0x38] + str r4, [sp, #0x1c] + ldr r3, [r3, #0x0] + bl FUN_020124B4 + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012560 +FUN_02012560: ; 0x02012560 + push {r4-r7, lr} + sub sp, #0x24 + ldr r4, _02012598 ; =0x020ED3C8 + add r5, r3, #0x0 + add r3, sp, #0x14 + add r7, r0, #0x0 + mov r12, r1 + add r6, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [sp, #0x38] + str r5, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x3c] + mov r1, r12 + str r0, [sp, #0x8] + ldr r0, [sp, #0x40] + add r3, r6, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x44] + str r0, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_02012530 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02012598: .word 0x020ED3C8 + + thumb_func_start FUN_0201259C +FUN_0201259C: ; 0x0201259C + push {r3, lr} + blx RTC_Init + ldr r3, _020125CC ; =0x021C4808 + mov r0, #0x0 + add r2, r3, #0x0 + add r1, r0, #0x0 + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + stmia r2!, {r0-r1} + ldr r1, _020125D0 ; =0x021C4808 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + add r0, r3, #0x0 + bl FUN_02012634 + pop {r3, pc} + .balign 4 +_020125CC: .word 0x021C4808 +_020125D0: .word 0x021C4808 + + thumb_func_start FUN_020125D4 +FUN_020125D4: ; 0x020125D4 + push {r3, lr} + ldr r0, _020125F4 ; =0x021C4808 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020125F2 + ldr r1, [r0, #0x8] + add r1, r1, #0x1 + str r1, [r0, #0x8] + cmp r1, #0xa + ble _020125F2 + mov r1, #0x0 + str r1, [r0, #0x8] + ldr r0, _020125F8 ; =0x021C4808 + bl FUN_02012634 +_020125F2: + pop {r3, pc} + .balign 4 +_020125F4: .word 0x021C4808 +_020125F8: .word 0x021C4808 + + thumb_func_start FUN_020125FC +FUN_020125FC: ; 0x020125FC + push {r4, lr} + add r4, r1, #0x0 + str r0, [r4, #0xc] + cmp r0, #0x0 + beq _0201260A + bl ErrorHandling +_0201260A: + add r3, r4, #0x0 + mov r0, #0x1 + add r2, r4, #0x0 + add r3, #0x2c + str r0, [r4, #0x0] + ldmia r3!, {r0-r1} + add r2, #0x10 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + add r3, r4, #0x0 + add r3, #0x3c + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x20 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + pop {r4, pc} + + thumb_func_start FUN_02012634 +FUN_02012634: ; 0x02012634 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x1 + str r0, [r4, #0x4] + add r0, r4, #0x0 + add r1, r4, #0x0 + ldr r2, _02012658 ; =FUN_020125FC + add r0, #0x2c + add r1, #0x3c + add r3, r4, #0x0 + blx RTC_GetDateTimeAsync + str r0, [r4, #0xc] + cmp r0, #0x0 + beq _02012656 + bl ErrorHandling +_02012656: + pop {r4, pc} + .balign 4 +_02012658: .word FUN_020125FC + + thumb_func_start FUN_0201265C +FUN_0201265C: ; 0x0201265C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02012684 ; =0x021C4808 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _0201266E + bl ErrorHandling +_0201266E: + ldr r2, _02012688 ; =0x021C4818 + ldmia r2!, {r0-r1} + stmia r5!, {r0-r1} + ldmia r2!, {r0-r1} + ldr r2, _0201268C ; =0x021C4828 + stmia r5!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 +_02012684: .word 0x021C4808 +_02012688: .word 0x021C4818 +_0201268C: .word 0x021C4828 + + thumb_func_start FUN_02012690 +FUN_02012690: ; 0x02012690 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020126AC ; =0x021C4808 + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _020126A0 + bl ErrorHandling +_020126A0: + ldr r2, _020126B0 ; =0x021C4828 + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] + pop {r4, pc} + .balign 4 +_020126AC: .word 0x021C4808 +_020126B0: .word 0x021C4828 + + thumb_func_start FUN_020126B4 +FUN_020126B4: ; 0x020126B4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020126D0 ; =0x021C4808 + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _020126C4 + bl ErrorHandling +_020126C4: + ldr r2, _020126D4 ; =0x021C4818 + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + pop {r4, pc} + .balign 4 +_020126D0: .word 0x021C4808 +_020126D4: .word 0x021C4818 + + thumb_func_start FUN_020126D8 +FUN_020126D8: ; 0x020126D8 + push {r3-r4} + ldr r4, _020126F8 ; =0x021C4828 + mov r0, #0x3c + ldr r1, [r4, #0x4] + ldr r3, [r4, #0x8] + add r2, r1, #0x0 + mul r2, r0 + mov r0, #0xe1 + ldr r1, [r4, #0x0] + lsl r0, r0, #0x4 + mul r0, r1 + add r0, r2, r0 + add r0, r3, r0 + pop {r3-r4} + bx lr + nop +_020126F8: .word 0x021C4828 + + thumb_func_start FUN_020126FC +FUN_020126FC: ; 0x020126FC + ldr r3, _02012704 ; =RTC_ConvertDateTimeToSecond + ldr r0, _02012708 ; =0x021C4818 + ldr r1, _0201270C ; =0x021C4828 + bx r3 + .balign 4 +_02012704: .word RTC_ConvertDateTimeToSecond +_02012708: .word 0x021C4818 +_0201270C: .word 0x021C4828 + + thumb_func_start FUN_02012710 +FUN_02012710: ; 0x02012710 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r2, [r5, #0x4] + ldr r0, _02012778 ; =0x020ED4B2 + lsl r1, r2, #0x1 + ldrh r0, [r0, r1] + ldr r3, [r5, #0x8] + add r4, r3, r0 + cmp r2, #0x3 + blo _02012752 + ldr r6, [r5, #0x0] + mov r0, #0x1e + lsr r2, r6, #0x1f + lsl r1, r6, #0x1e + sub r1, r1, r2 + ror r1, r0 + add r0, r2, r1 + bne _02012742 + add r0, r6, #0x0 + mov r1, #0x64 + blx _s32_div_f + cmp r1, #0x0 + bne _02012750 +_02012742: + mov r1, #0x19 + add r0, r6, #0x0 + lsl r1, r1, #0x4 + blx _s32_div_f + cmp r1, #0x0 + bne _02012752 +_02012750: + add r4, r4, #0x1 +_02012752: + add r6, r5, #0x0 + add r3, sp, #0x0 + add r2, r3, #0x0 + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r0, r2, #0x0 + blx RTC_ConvertDateToDay + add r0, r5, #0x0 + blx RTC_ConvertDateToDay + add r0, r4, #0x0 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_02012778: .word 0x020ED4B2 + + thumb_func_start FUN_0201277C +FUN_0201277C: ; 0x0201277C + push {r3, lr} + bl FUN_02012794 + cmp r0, #0x3 + beq _0201278A + cmp r0, #0x4 + bne _0201278E +_0201278A: + mov r0, #0x1 + pop {r3, pc} +_0201278E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02012794 +FUN_02012794: ; 0x02012794 + push {lr} + sub sp, #0xc + add r0, sp, #0x0 + bl FUN_02012690 + ldr r0, [sp, #0x0] + bl FUN_020127A8 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_020127A8 +FUN_020127A8: ; 0x020127A8 + push {r4, lr} + add r4, r0, #0x0 + bmi _020127B2 + cmp r4, #0x18 + blt _020127B6 +_020127B2: + bl ErrorHandling +_020127B6: + ldr r0, _020127BC ; =0x020ED4CC + ldrb r0, [r0, r4] + pop {r4, pc} + .balign 4 +_020127BC: .word 0x020ED4CC + + thumb_func_start FUN_020127C0 +FUN_020127C0: ; 0x020127C0 + push {r4-r7, lr} + sub sp, #0x24 + add r6, r3, #0x0 + ldr r3, _0201282C ; =0x020ED4A4 + add r4, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r2, sp, #0x14 + ldmia r3!, {r0-r1} + str r2, [sp, #0x0] + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r3, _02012830 ; =0x020ED498 + add r2, sp, #0x8 + ldmia r3!, {r0-r1} + str r2, [sp, #0x4] + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r1, [sp, #0x4] + str r0, [r2, #0x0] + ldr r0, [sp, #0x0] + blx RTC_ConvertDateTimeToSecond + add r2, r1, #0x0 + add r3, r0, #0x0 + mov r1, #0x0 + ldr r0, _02012834 ; =0xBC19137F + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _02012804 + bl ErrorHandling +_02012804: + sub r0, r4, r5 + mov r12, r7 + mov r0, r12 + sbc r0, r6 + bge _02012818 + sub r0, r5, r4 + sbc r6, r7 + add sp, #0x24 + add r1, r6, #0x0 + pop {r4-r7, pc} +_02012818: + ldr r0, _02012834 ; =0xBC19137F + mov r1, #0x0 + sub r0, r0, r4 + sbc r1, r7 + add r0, r5, r0 + adc r6, r1 + add r1, r6, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0201282C: .word 0x020ED4A4 +_02012830: .word 0x020ED498 +_02012834: .word 0xBC19137F + + thumb_func_start FUN_02012838 +FUN_02012838: ; 0x02012838 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x3 + bl FUN_02016998 + cmp r0, #0x0 + beq _0201286E + mov r2, #0x0 + cmp r5, #0x0 + bls _02012862 + add r3, r0, #0x0 + add r1, r2, #0x0 +_02012856: + str r1, [r3, #0x0] + str r1, [r3, #0x4] + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, r5 + blo _02012856 +_02012862: + mov r1, #0x0 + lsl r2, r2, #0x3 + mvn r1, r1 + str r1, [r0, r2] + add r1, r0, r2 + str r4, [r1, #0x4] +_0201286E: + pop {r3-r5, pc} + + thumb_func_start FUN_02012870 +FUN_02012870: ; 0x02012870 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201291C + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02012880 +FUN_02012880: ; 0x02012880 + push {r3-r7, lr} + add r6, r1, #0x0 + add r1, sp, #0x0 + add r7, r2, #0x0 + add r5, r3, #0x0 + bl FUN_020128E0 + add r4, r0, #0x0 + beq _0201289E + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_0200A914 + str r0, [r4, #0x0] + str r5, [r4, #0x4] +_0201289E: + pop {r3-r7, pc} + + thumb_func_start FUN_020128A0 +FUN_020128A0: ; 0x020128A0 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r1, #0x0 + add r1, sp, #0x0 + add r5, r2, #0x0 + bl FUN_020128E0 + add r4, r0, #0x0 + beq _020128BE + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_02021ACC + str r0, [r4, #0x0] + str r5, [r4, #0x4] +_020128BE: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_020128C4 +FUN_020128C4: ; 0x020128C4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r1, #0x0 + add r1, sp, #0x0 + bl FUN_020128E0 + cmp r0, #0x0 + beq _020128DC + ldr r1, [r4, #0x0] + str r1, [r0, #0x0] + ldr r1, [r4, #0x4] + str r1, [r0, #0x4] +_020128DC: + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_020128E0 +FUN_020128E0: ; 0x020128E0 + push {r4, lr} + ldr r3, [r0, #0x0] + cmp r3, #0x0 + beq _02012900 + mov r2, #0x0 + mvn r2, r2 +_020128EC: + cmp r3, r2 + bne _020128F8 + bl ErrorHandling + mov r0, #0x0 + pop {r4, pc} +_020128F8: + add r0, #0x8 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + bne _020128EC +_02012900: + mov r2, #0x0 + mvn r2, r2 + add r4, r0, #0x0 + cmp r3, r2 + beq _02012912 +_0201290A: + add r0, #0x8 + ldr r3, [r0, #0x0] + cmp r3, r2 + bne _0201290A +_02012912: + ldr r0, [r0, #0x4] + str r0, [r1, #0x0] + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201291C +FUN_0201291C: ; 0x0201291C + push {r4-r6, lr} + add r5, r0, #0x0 + mov r0, #0x0 + ldr r1, [r5, #0x0] + mvn r0, r0 + cmp r1, r0 + beq _02012942 + mov r4, #0x0 + add r6, r0, #0x0 +_0201292E: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02012942 + bl FUN_02021A20 + str r4, [r5, #0x0] + add r5, #0x8 + ldr r0, [r5, #0x0] + cmp r0, r6 + bne _0201292E +_02012942: + pop {r4-r6, pc} + + thumb_func_start FUN_02012944 +FUN_02012944: ; 0x02012944 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0xc + add r4, r2, #0x0 + bl FUN_02016998 + mov r1, #0x0 + 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] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + mov r1, #0x1 + strb r1, [r0, #0x9] + str r5, [r0, #0x0] + str r4, [r0, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_02012974 +FUN_02012974: ; 0x02012974 + push {r4, lr} + add r4, r0, #0x0 + bne _0201297E + bl ErrorHandling +_0201297E: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012988 +FUN_02012988: ; 0x02012988 + push {r4, lr} + add r4, r0, #0x0 + bne _02012992 + bl ErrorHandling +_02012992: + ldrb r0, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201299C +FUN_0201299C: ; 0x0201299C + push {r4, lr} + add r4, r0, #0x0 + bne _020129A6 + bl ErrorHandling +_020129A6: + ldrb r1, [r4, #0x8] + mov r0, #0x1 + eor r0, r1 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020129B4 +FUN_020129B4: ; 0x020129B4 + cmp r0, #0x0 + beq _020129C6 + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _020129C6 + ldrb r2, [r0, #0x8] + mov r1, #0x1 + eor r1, r2 + strb r1, [r0, #0x8] +_020129C6: + bx lr + + thumb_func_start FUN_020129C8 +FUN_020129C8: ; 0x020129C8 + push {r3, lr} + mov r0, #0x0 + blx MI_StopDma + mov r0, #0x0 + blx MI_WaitDma + pop {r3, pc} + + thumb_func_start FUN_020129D8 +FUN_020129D8: ; 0x020129D8 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r3, #0x1 + bne _020129F2 + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + blx MI_HBlankDmaCopy32 + pop {r4-r6, pc} +_020129F2: + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r3, r4, #0x0 + blx MI_HBlankDmaCopy16 + pop {r4-r6, pc} + + thumb_func_start FUN_02012A00 +FUN_02012A00: ; 0x02012A00 + push {r3-r5, lr} + ldr r1, _02012A2C ; =0x0000079C + add r5, r0, #0x0 + bl FUN_02016998 + ldr r2, _02012A2C ; =0x0000079C + mov r1, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r2, #0x3 + lsl r2, r2, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r4, r2 + bl FUN_02012944 + mov r1, #0x6 + lsl r1, r1, #0x8 + str r0, [r4, r1] + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02012A2C: .word 0x0000079C + + thumb_func_start FUN_02012A30 +FUN_02012A30: ; 0x02012A30 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r5, #0x0 + bne _02012A42 + bl ErrorHandling +_02012A42: + ldr r0, _02012AB0 ; =0x00000604 + ldr r0, [r5, r0] + cmp r0, #0x0 + beq _02012A4E + bl ErrorHandling +_02012A4E: + ldr r0, _02012AB4 ; =0x0000078C + mov r2, #0x0 + strb r4, [r5, r0] + add r1, r0, #0x1 + strb r6, [r5, r1] + add r1, r0, #0x0 + add r1, #0xc + strh r2, [r5, r1] + add r2, sp, #0x8 + mov r1, #0x14 + ldrsh r2, [r2, r1] + add r1, r0, #0x0 + add r1, #0xe + strh r2, [r5, r1] + add r1, r0, #0x4 + ldr r2, [sp, #0x20] + add r0, #0x8 + str r2, [r5, r1] + ldr r1, [sp, #0x24] + ldr r3, [sp, #0x18] + str r1, [r5, r0] + ldr r0, _02012AB8 ; =0x0000060C + mov r1, #0xc0 + add r0, r5, r0 + add r2, r7, #0x0 + bl FUN_02012B88 + ldr r0, _02012ABC ; =FUN_02012BE4 + ldr r2, [sp, #0x28] + add r1, r5, #0x0 + bl FUN_0200CA44 + ldr r1, _02012AB0 ; =0x00000604 + mov r2, #0x3 + str r0, [r5, r1] + ldr r0, _02012AC0 ; =0x00000794 + add r1, r5, #0x0 + ldr r0, [r5, r0] + lsl r2, r2, #0x8 + blx MIi_CpuClear32 + ldr r0, _02012AC0 ; =0x00000794 + mov r2, #0x3 + lsl r2, r2, #0x8 + ldr r0, [r5, r0] + add r1, r5, r2 + blx MIi_CpuClear32 + pop {r3-r7, pc} + .balign 4 +_02012AB0: .word 0x00000604 +_02012AB4: .word 0x0000078C +_02012AB8: .word 0x0000060C +_02012ABC: .word FUN_02012BE4 +_02012AC0: .word 0x00000794 + + thumb_func_start FUN_02012AC4 +FUN_02012AC4: ; 0x02012AC4 + push {r4, lr} + add r4, r0, #0x0 + bne _02012ACE + bl ErrorHandling +_02012ACE: + ldr r0, _02012AF8 ; =0x00000604 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02012AF4 + bl FUN_0200CAB4 + ldr r0, _02012AF8 ; =0x00000604 + mov r1, #0x0 + str r1, [r4, r0] + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02012988 + ldr r1, _02012AFC ; =0x00000794 + mov r2, #0x3 + ldr r1, [r4, r1] + lsl r2, r2, #0x8 + blx Call_FillMemWithValue +_02012AF4: + pop {r4, pc} + nop +_02012AF8: .word 0x00000604 +_02012AFC: .word 0x00000794 + + thumb_func_start FUN_02012B00 +FUN_02012B00: ; 0x02012B00 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02012AC4 + bl FUN_02012C90 + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_02012974 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02012B20 +FUN_02012B20: ; 0x02012B20 + mov r1, #0x6 + lsl r1, r1, #0x8 + ldr r3, _02012B2C ; =FUN_02012988 + ldr r0, [r0, r1] + bx r3 + nop +_02012B2C: .word FUN_02012988 + + thumb_func_start FUN_02012B30 +FUN_02012B30: ; 0x02012B30 + push {r4, lr} + add r4, r0, #0x0 + beq _02012B5E + ldr r0, _02012B60 ; =0x00000604 + ldr r1, [r4, r0] + cmp r1, #0x0 + beq _02012B5E + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_020129B4 + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_02012988 + add r1, r0, #0x0 + ldr r0, _02012B64 ; =0x00000794 + mov r2, #0x3 + ldr r0, [r4, r0] + lsl r2, r2, #0x8 + blx MIi_CpuClear32 +_02012B5E: + pop {r4, pc} + .balign 4 +_02012B60: .word 0x00000604 +_02012B64: .word 0x00000794 + + thumb_func_start FUN_02012B68 +FUN_02012B68: ; 0x02012B68 + push {r4, lr} + add r4, r0, #0x0 + beq _02012B80 + ldr r0, _02012B84 ; =0x00000604 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02012B80 + bl FUN_02012C90 + add r0, r4, #0x0 + bl FUN_02012C98 +_02012B80: + pop {r4, pc} + nop +_02012B84: .word 0x00000604 + + thumb_func_start FUN_02012B88 +FUN_02012B88: ; 0x02012B88 + push {r4-r7, lr} + sub sp, #0xc + mov r4, #0x0 + add r7, r1, #0x0 + add r5, r0, #0x0 + add r6, r4, #0x0 + str r2, [sp, #0x0] + cmp r7, #0x0 + bls _02012BD6 + asr r0, r3, #0x1f + str r3, [sp, #0x4] + str r0, [sp, #0x8] +_02012BA0: + asr r0, r4, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02012BDC ; =0x020FFA38 + ldr r2, [sp, #0x4] + ldrsh r0, [r0, r1] + ldr r3, [sp, #0x8] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02012BE0 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r0, r0, #0xc + strh r0, [r5, #0x0] + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r5, r5, #0x2 + cmp r6, r7 + blo _02012BA0 +_02012BD6: + add sp, #0xc + pop {r4-r7, pc} + nop +_02012BDC: .word 0x020FFA38 +_02012BE0: .word 0x00000000 + + thumb_func_start FUN_02012BE4 +FUN_02012BE4: ; 0x02012BE4 + push {r3-r7, lr} + mov r0, #0x6 + add r6, r1, #0x0 + lsl r0, r0, #0x8 + ldr r0, [r6, r0] + bl FUN_02012988 + add r5, r0, #0x0 + ldr r0, _02012C80 ; =0x00000798 + mov r1, #0x64 + ldrsh r0, [r6, r0] + blx _s32_div_f + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + ldr r0, _02012C84 ; =0x0000078C + ldrb r4, [r6, r0] + add r0, r0, #0x1 + ldrb r0, [r6, r0] + cmp r4, r0 + bgt _02012C4C + lsl r0, r4, #0x2 + add r5, r5, r0 +_02012C12: + ldr r2, [r5, #0x0] + lsl r0, r2, #0x10 + asr r7, r0, #0x10 + lsl r0, r3, #0x1 + add r1, r6, r0 + ldr r0, _02012C88 ; =0x0000060C + ldrsh r0, [r1, r0] + add r0, r7, r0 + lsl r0, r0, #0x10 + asr r1, r0, #0x10 + lsr r0, r2, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r1, #0x10 + orr r0, r1 + stmia r5!, {r0} + add r0, r3, #0x1 + mov r1, #0xc0 + blx _s32_div_f + lsl r0, r1, #0x18 + lsr r3, r0, #0x18 + ldr r0, _02012C8C ; =0x0000078D + add r4, r4, #0x1 + ldrb r0, [r6, r0] + cmp r4, r0 + ble _02012C12 +_02012C4C: + ldr r1, _02012C80 ; =0x00000798 + add r0, r1, #0x2 + ldrsh r2, [r6, r1] + ldrsh r0, [r6, r0] + add r4, r6, r1 + add r0, r2, r0 + strh r0, [r4, #0x0] + ldrsh r0, [r6, r1] + mov r1, #0x4b + lsl r1, r1, #0x8 + cmp r0, r1 + blt _02012C70 + mov r0, #0x0 + ldrsh r0, [r4, r0] + blx _s32_div_f + strh r1, [r4, #0x0] + pop {r3-r7, pc} +_02012C70: + cmp r0, #0x0 + bge _02012C7C + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, r1 + strh r0, [r4, #0x0] +_02012C7C: + pop {r3-r7, pc} + nop +_02012C80: .word 0x00000798 +_02012C84: .word 0x0000078C +_02012C88: .word 0x0000060C +_02012C8C: .word 0x0000078D + + thumb_func_start FUN_02012C90 +FUN_02012C90: ; 0x02012C90 + ldr r3, _02012C94 ; =FUN_020129C8 + bx r3 + .balign 4 +_02012C94: .word FUN_020129C8 + + thumb_func_start FUN_02012C98 +FUN_02012C98: ; 0x02012C98 + push {r3-r5, lr} + add r4, r0, #0x0 + bne _02012CA2 + bl ErrorHandling +_02012CA2: + mov r0, #0x6 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + bl FUN_0201299C + mov r1, #0x3 + lsl r1, r1, #0x8 + add r5, r0, #0x0 + blx DC_FlushRange + mov r1, #0x79 + lsl r1, r1, #0x4 + ldr r1, [r4, r1] + add r0, r5, #0x0 + mov r2, #0x4 + mov r3, #0x1 + bl FUN_020129D8 + pop {r3-r5, pc} + + thumb_func_start FUN_02012CC8 +FUN_02012CC8: ; 0x02012CC8 + mov r1, #0x0 + ldr r2, _02012CD8 ; =0x021C4858 + add r0, r1, #0x0 +_02012CCE: + add r1, r1, #0x1 + stmia r2!, {r0} + cmp r1, #0x10 + blt _02012CCE + bx lr + .balign 4 +_02012CD8: .word 0x021C4858 + + thumb_func_start FUN_02012CDC +FUN_02012CDC: ; 0x02012CDC + push {r3-r7, lr} + sub sp, #0x10 + str r1, [sp, #0x8] + ldr r1, _02012DD0 ; =0x021C4858 + add r7, r0, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0xc] + mov r5, #0x0 +_02012CEC: + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _02012CFA + add r5, r5, #0x1 + add r1, r1, #0x4 + cmp r5, #0x10 + blt _02012CEC +_02012CFA: + cmp r5, #0x10 + blt _02012D04 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_02012D04: + ldr r0, [sp, #0x2c] + mov r1, #0xdc + bl FUN_02016998 + add r4, r0, #0x0 + bne _02012D14 + bl ErrorHandling +_02012D14: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0xdc + blx Call_FillMemWithValue + add r2, r4, #0x0 + ldr r0, [sp, #0x8] + str r7, [r4, #0x18] + ldr r3, _02012DD4 ; =0x020ED4FC + str r0, [r4, #0x1c] + ldmia r3!, {r0-r1} + add r2, #0x34 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r3, _02012DD8 ; =0x020ED4E4 + str r0, [r2, #0x0] + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x40 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r3, _02012DDC ; =0x020ED4F0 + str r0, [r2, #0x0] + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x4c + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + mov r1, #0x0 + str r0, [r2, #0x0] + ldr r2, [sp, #0xc] + add r0, r6, #0x0 + blx Call_FillMemWithValue + ldr r0, [sp, #0xc] + str r6, [r4, #0xc] + str r6, [r4, #0x10] + add r0, r6, r0 + str r0, [r4, #0x14] + add r0, r4, #0x0 + add r0, #0xda + strb r5, [r0, #0x0] + ldr r0, _02012DD0 ; =0x021C4858 + lsl r5, r5, #0x2 + str r4, [r0, r5] + ldr r0, [sp, #0x28] + cmp r0, #0x1 + bne _02012DA8 + ldr r0, [sp, #0x2c] + bl FUN_0201EB64 + str r0, [r4, #0x20] + mov r3, #0x0 + str r3, [r4, #0x24] + str r3, [r4, #0x28] + mov r0, #0x2 + str r3, [r4, #0x2c] + lsl r0, r0, #0xc + strh r0, [r4, #0x30] + str r3, [sp, #0x0] + ldr r0, [r4, #0x20] + ldr r1, _02012DD4 ; =0x020ED4FC + str r0, [sp, #0x4] + ldrh r2, [r4, #0x30] + ldr r0, _02012DDC ; =0x020ED4F0 + bl FUN_0201ED5C + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0xdb + strb r1, [r0, #0x0] + ldr r0, [r4, #0x20] + bl FUN_0201EB8C +_02012DA8: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x3f + str r0, [sp, #0x4] + ldr r0, _02012DE0 ; =0x020ED508 + mov r1, #0x14 + ldr r0, [r0, r5] + mov r2, #0xc8 + mov r3, #0x5 + blx FUN_0208B4A0 + str r0, [r4, #0x0] + ldr r1, _02012DD8 ; =0x020ED4E4 + add r0, r4, #0x0 + bl FUN_020133FC + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_02012DD0: .word 0x021C4858 +_02012DD4: .word 0x020ED4FC +_02012DD8: .word 0x020ED4E4 +_02012DDC: .word 0x020ED4F0 +_02012DE0: .word 0x020ED508 + + thumb_func_start FUN_02012DE4 +FUN_02012DE4: ; 0x02012DE4 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020133D0 + add r0, r5, #0x0 + add r0, #0xd8 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + tst r0, r1 + beq _02012E02 + add r0, r5, #0x0 + add r0, #0x58 + blx FUN_020AE8CC + b _02012E22 +_02012E02: + mov r0, #0x2 + tst r0, r1 + beq _02012E22 + mov r6, #0x0 + add r4, r5, #0x0 + add r7, r6, #0x0 +_02012E0E: + ldr r0, [r4, #0x58] + cmp r0, #0x0 + beq _02012E1A + blx FUN_020AF894 + str r7, [r4, #0x58] +_02012E1A: + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x10 + blt _02012E0E +_02012E22: + add r0, r5, #0x0 + add r0, #0xd8 + ldrb r1, [r0, #0x0] + mov r0, #0x4 + tst r0, r1 + beq _02012E38 + add r0, r5, #0x0 + add r0, #0x98 + blx FUN_020AEC7C + b _02012E60 +_02012E38: + mov r0, #0x8 + tst r0, r1 + beq _02012E60 + mov r6, #0x0 + add r4, r5, #0x0 + add r7, r6, #0x0 +_02012E44: + add r0, r4, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02012E58 + blx FUN_020AFA80 + add r0, r4, #0x0 + add r0, #0x98 + str r7, [r0, #0x0] +_02012E58: + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x10 + blt _02012E44 +_02012E60: + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0xd8 + strb r1, [r0, #0x0] + str r1, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _02012E78 + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r5, #0x4] +_02012E78: + ldr r2, _02012EA8 ; =0x021C4858 + mov r1, #0x0 +_02012E7C: + ldr r0, [r2, #0x0] + cmp r0, r5 + bne _02012E8C + ldr r0, _02012EA8 ; =0x021C4858 + mov r2, #0x0 + lsl r1, r1, #0x2 + str r2, [r0, r1] + b _02012E94 +_02012E8C: + add r1, r1, #0x1 + add r2, r2, #0x4 + cmp r1, #0x10 + blt _02012E7C +_02012E94: + ldr r0, [r5, #0x20] + cmp r0, #0x0 + beq _02012E9E + bl FUN_0201EB70 +_02012E9E: + add r0, r5, #0x0 + bl FUN_02016A18 + pop {r3-r7, pc} + nop +_02012EA8: .word 0x021C4858 + + thumb_func_start FUN_02012EAC +FUN_02012EAC: ; 0x02012EAC + push {r3-r5, lr} + ldr r5, _02012EC8 ; =0x021C4858 + mov r4, #0x0 +_02012EB2: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02012EBC + bl FUN_02012DE4 +_02012EBC: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x10 + blt _02012EB2 + pop {r3-r5, pc} + nop +_02012EC8: .word 0x021C4858 + + thumb_func_start FUN_02012ECC +FUN_02012ECC: ; 0x02012ECC + push {r4, lr} + ldr r1, _02012EF4 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x8] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012EE4 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012EE4: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012EF0 + bl ErrorHandling +_02012EF0: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012EF4: .word 0x021C4850 + + thumb_func_start FUN_02012EF8 +FUN_02012EF8: ; 0x02012EF8 + push {r4, lr} + ldr r1, _02012F20 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0xc] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012F10 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012F10: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012F1C + bl ErrorHandling +_02012F1C: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012F20: .word 0x021C4850 + + thumb_func_start FUN_02012F24 +FUN_02012F24: ; 0x02012F24 + push {r4, lr} + ldr r1, _02012F4C ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x10] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012F3C + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012F3C: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012F48 + bl ErrorHandling +_02012F48: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012F4C: .word 0x021C4850 + + thumb_func_start FUN_02012F50 +FUN_02012F50: ; 0x02012F50 + push {r4, lr} + ldr r1, _02012F78 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x14] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012F68 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012F68: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012F74 + bl ErrorHandling +_02012F74: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012F78: .word 0x021C4850 + + thumb_func_start FUN_02012F7C +FUN_02012F7C: ; 0x02012F7C + push {r4, lr} + ldr r1, _02012FA4 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x18] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012F94 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012F94: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012FA0 + bl ErrorHandling +_02012FA0: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012FA4: .word 0x021C4850 + + thumb_func_start FUN_02012FA8 +FUN_02012FA8: ; 0x02012FA8 + push {r4, lr} + ldr r1, _02012FD0 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x1c] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012FC0 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012FC0: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012FCC + bl ErrorHandling +_02012FCC: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012FD0: .word 0x021C4850 + + thumb_func_start FUN_02012FD4 +FUN_02012FD4: ; 0x02012FD4 + push {r4, lr} + ldr r1, _02012FFC ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x20] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02012FEC + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02012FEC: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02012FF8 + bl ErrorHandling +_02012FF8: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02012FFC: .word 0x021C4850 + + thumb_func_start FUN_02013000 +FUN_02013000: ; 0x02013000 + push {r4, lr} + ldr r1, _02013028 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x24] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02013018 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02013018: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02013024 + bl ErrorHandling +_02013024: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02013028: .word 0x021C4850 + + thumb_func_start FUN_0201302C +FUN_0201302C: ; 0x0201302C + push {r4, lr} + ldr r1, _02013054 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x28] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02013044 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02013044: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02013050 + bl ErrorHandling +_02013050: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02013054: .word 0x021C4850 + + thumb_func_start FUN_02013058 +FUN_02013058: ; 0x02013058 + push {r4, lr} + ldr r1, _02013080 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x2c] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02013070 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02013070: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _0201307C + bl ErrorHandling +_0201307C: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02013080: .word 0x021C4850 + + thumb_func_start FUN_02013084 +FUN_02013084: ; 0x02013084 + push {r4, lr} + ldr r1, _020130AC ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x30] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _0201309C + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_0201309C: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _020130A8 + bl ErrorHandling +_020130A8: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_020130AC: .word 0x021C4850 + + thumb_func_start FUN_020130B0 +FUN_020130B0: ; 0x020130B0 + push {r4, lr} + ldr r1, _020130D8 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x34] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _020130C8 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_020130C8: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _020130D4 + bl ErrorHandling +_020130D4: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_020130D8: .word 0x021C4850 + + thumb_func_start FUN_020130DC +FUN_020130DC: ; 0x020130DC + push {r4, lr} + ldr r1, _02013104 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x38] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _020130F4 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_020130F4: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02013100 + bl ErrorHandling +_02013100: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02013104: .word 0x021C4850 + + thumb_func_start FUN_02013108 +FUN_02013108: ; 0x02013108 + push {r4, lr} + ldr r1, _02013130 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x3c] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02013120 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02013120: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _0201312C + bl ErrorHandling +_0201312C: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02013130: .word 0x021C4850 + + thumb_func_start FUN_02013134 +FUN_02013134: ; 0x02013134 + push {r4, lr} + ldr r1, _0201315C ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x40] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _0201314C + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_0201314C: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02013158 + bl ErrorHandling +_02013158: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_0201315C: .word 0x021C4850 + + thumb_func_start FUN_02013160 +FUN_02013160: ; 0x02013160 + push {r4, lr} + ldr r1, _02013188 ; =0x021C4850 + mov r2, #0x3 + ldr r1, [r1, #0x44] + ldr r4, [r1, #0x10] + add r0, r4, r0 + add r3, r0, #0x0 + and r3, r2 + beq _02013178 + mov r2, #0x4 + sub r2, r2, r3 + add r0, r0, r2 +_02013178: + str r0, [r1, #0x10] + ldr r1, [r1, #0x14] + cmp r0, r1 + blo _02013184 + bl ErrorHandling +_02013184: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02013188: .word 0x021C4850 + + thumb_func_start FUN_0201318C +FUN_0201318C: ; 0x0201318C + ldr r3, _02013190 ; =LoadFromNarc_2 + bx r3 + .balign 4 +_02013190: .word LoadFromNarc_2 + + thumb_func_start FUN_02013194 +FUN_02013194: ; 0x02013194 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + add r4, r2, #0x0 + add r7, r3, #0x0 + cmp r0, #0x0 + bne _020131A8 + bl ErrorHandling +_020131A8: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _020131B2 + bl ErrorHandling +_020131B2: + add r0, r5, #0x0 + add r0, #0xd8 + strb r4, [r0, #0x0] + mov r0, #0x1 + tst r0, r4 + beq _020131C8 + add r0, r5, #0x0 + add r0, #0x58 + blx FUN_020AE918 + b _020131DE +_020131C8: + mov r0, #0x2 + tst r0, r4 + beq _020131DE + mov r1, #0x0 + add r2, r5, #0x0 + add r0, r1, #0x0 +_020131D4: + add r1, r1, #0x1 + str r0, [r2, #0x58] + add r2, r2, #0x4 + cmp r1, #0x10 + blt _020131D4 +_020131DE: + mov r0, #0x4 + tst r0, r4 + beq _020131EE + add r0, r5, #0x0 + add r0, #0x98 + blx FUN_020AEC98 + b _02013208 +_020131EE: + mov r0, #0x8 + tst r0, r4 + beq _02013208 + mov r2, #0x0 + add r3, r5, #0x0 + add r1, r2, #0x0 +_020131FA: + add r0, r3, #0x0 + add r0, #0x98 + add r2, r2, #0x1 + add r3, r3, #0x4 + str r1, [r0, #0x0] + cmp r2, #0x10 + blt _020131FA +_02013208: + str r6, [r5, #0x4] + cmp r7, #0x1 + bne _02013216 + add r0, r5, #0x0 + bl FUN_02013228 + pop {r3-r7, pc} +_02013216: + ldr r0, _02013224 ; =FUN_02013268 + add r1, r5, #0x0 + mov r2, #0x5 + bl FUN_0200CA98 + pop {r3-r7, pc} + nop +_02013224: .word FUN_02013268 + + thumb_func_start FUN_02013228 +FUN_02013228: ; 0x02013228 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + blx FUN_0208B128 + ldr r0, _02013264 ; =0x021C4850 + str r4, [r0, #0x0] + ldr r1, [r4, #0x18] + ldr r0, [r4, #0x0] + cmp r1, #0x0 + bne _02013246 + blx FUN_0208AF94 + b _0201324A +_02013246: + blx FUN_0208B05C +_0201324A: + ldr r1, [r4, #0x1c] + ldr r0, [r4, #0x0] + cmp r1, #0x0 + bne _02013258 + blx FUN_0208AF80 + b _0201325C +_02013258: + blx FUN_0208AFA8 +_0201325C: + ldr r0, _02013264 ; =0x021C4850 + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r4, pc} + .balign 4 +_02013264: .word 0x021C4850 + + thumb_func_start FUN_02013268 +FUN_02013268: ; 0x02013268 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02013228 + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201327C +FUN_0201327C: ; 0x0201327C + push {r4, lr} + add r4, r0, #0x0 + bne _02013286 + bl ErrorHandling +_02013286: + ldr r0, _020132B8 ; =0x021C4850 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02013292 + bl ErrorHandling +_02013292: + ldr r0, _020132B8 ; =0x021C4850 + mov r1, #0x0 + ldr r3, [r0, #0x0] + add r2, r3, #0x0 +_0201329A: + ldr r0, [r2, #0x58] + cmp r0, #0x0 + bne _020132A8 + lsl r0, r1, #0x2 + add r0, r3, r0 + str r4, [r0, #0x58] + pop {r4, pc} +_020132A8: + add r1, r1, #0x1 + add r2, r2, #0x4 + cmp r1, #0x10 + blt _0201329A + bl ErrorHandling + pop {r4, pc} + nop +_020132B8: .word 0x021C4850 + + thumb_func_start FUN_020132BC +FUN_020132BC: ; 0x020132BC + push {r4, lr} + add r4, r0, #0x0 + bne _020132C6 + bl ErrorHandling +_020132C6: + ldr r0, _020132FC ; =0x021C4850 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020132D2 + bl ErrorHandling +_020132D2: + ldr r0, _020132FC ; =0x021C4850 + mov r1, #0x0 + ldr r3, [r0, #0x0] + add r2, r3, #0x0 +_020132DA: + add r0, r2, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020132EE + lsl r0, r1, #0x2 + add r0, r3, r0 + add r0, #0x98 + str r4, [r0, #0x0] + pop {r4, pc} +_020132EE: + add r1, r1, #0x1 + add r2, r2, #0x4 + cmp r1, #0x10 + blt _020132DA + bl ErrorHandling + pop {r4, pc} + .balign 4 +_020132FC: .word 0x021C4850 + + thumb_func_start FUN_02013300 +FUN_02013300: ; 0x02013300 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x20] + cmp r1, #0x0 + beq _0201331C + add r0, #0xdb + ldrb r0, [r0, #0x0] + bl FUN_0201EE2C + ldr r0, [r4, #0x20] + bl FUN_0201EB8C + bl FUN_0201EBA4 +_0201331C: + blx FUN_020B849C + ldr r0, [r4, #0x0] + ldr r1, _02013338 ; =0x021CED64 + blx FUN_0208AD80 + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _02013332 + bl FUN_0201EB98 +_02013332: + blx FUN_020B849C + pop {r4, pc} + .balign 4 +_02013338: .word 0x021CED64 + + thumb_func_start FUN_0201333C +FUN_0201333C: ; 0x0201333C + ldr r3, _02013344 ; =0x0208AE48 + ldr r0, [r0, #0x0] + bx r3 + nop +_02013344: .word 0x0208AE48 + + thumb_func_start FUN_02013348 +FUN_02013348: ; 0x02013348 + mov r0, #0x0 + ldr r3, _02013360 ; =0x021C4858 + add r2, r0, #0x0 +_0201334E: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _02013356 + add r0, r0, #0x1 +_02013356: + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, #0x10 + blt _0201334E + bx lr + .balign 4 +_02013360: .word 0x021C4858 + + thumb_func_start FUN_02013364 +FUN_02013364: ; 0x02013364 + push {r4-r6, lr} + mov r4, #0x0 + ldr r5, _02013384 ; =0x021C4858 + add r6, r4, #0x0 +_0201336C: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02013378 + bl FUN_02013300 + add r4, r4, #0x1 +_02013378: + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, #0x10 + blt _0201336C + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02013384: .word 0x021C4858 + + thumb_func_start FUN_02013388 +FUN_02013388: ; 0x02013388 + push {r4-r6, lr} + mov r4, #0x0 + ldr r5, _020133A8 ; =0x021C4858 + add r6, r4, #0x0 +_02013390: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _0201339C + bl FUN_0201333C + add r4, r4, #0x1 +_0201339C: + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, #0x10 + blt _02013390 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_020133A8: .word 0x021C4858 + + thumb_func_start FUN_020133AC +FUN_020133AC: ; 0x020133AC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020133C4 ; =0x021C4850 + str r3, [r0, #0x4] + ldr r0, [r4, #0x0] + blx FUN_0208ACEC + ldr r1, _020133C4 ; =0x021C4850 + mov r2, #0x0 + str r2, [r1, #0x4] + str r0, [r4, #0x8] + pop {r4, pc} + .balign 4 +_020133C4: .word 0x021C4850 + + thumb_func_start FUN_020133C8 +FUN_020133C8: ; 0x020133C8 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_020133D0 +FUN_020133D0: ; 0x020133D0 + ldr r3, _020133D8 ; =0x0208AC14 + ldr r0, [r0, #0x0] + bx r3 + nop +_020133D8: .word 0x0208AC14 + + thumb_func_start FUN_020133DC +FUN_020133DC: ; 0x020133DC + ldr r3, _020133E4 ; =0x0208AC58 + ldr r0, [r0, #0x0] + bx r3 + nop +_020133E4: .word 0x0208AC58 + + thumb_func_start FUN_020133E8 +FUN_020133E8: ; 0x020133E8 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_020133EC +FUN_020133EC: ; 0x020133EC + add r2, r0, #0x0 + add r2, #0x40 + add r3, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_020133FC +FUN_020133FC: ; 0x020133FC + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r3, r4, #0x0 + add r2, r5, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x40 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldr r1, [r5, #0x20] + add r0, r4, #0x0 + bl FUN_0201EC58 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201341C +FUN_0201341C: ; 0x0201341C + ldr r0, _02013424 ; =0x021C4850 + ldr r0, [r0, #0x4] + bx lr + nop +_02013424: .word 0x021C4850 + + thumb_func_start FUN_02013428 +FUN_02013428: ; 0x02013428 + ldr r2, _02013438 ; =0x020ED4E4 + add r3, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + nop +_02013438: .word 0x020ED4E4 + + thumb_func_start FUN_0201343C +FUN_0201343C: ; 0x0201343C + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start FUN_02013440 +FUN_02013440: ; 0x02013440 + add r0, #0xdb + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02013448 +FUN_02013448: ; 0x02013448 + add r0, #0xdb + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02013450 +FUN_02013450: ; 0x02013450 + ldr r0, [r0, #0x20] + ldr r0, [r0, #0x0] + str r1, [r0, #0x10] + bx lr + + thumb_func_start FUN_02013458 +FUN_02013458: ; 0x02013458 + push {r4-r7} + ldr r0, [r0, #0x20] + add r4, r1, #0x0 + ldrh r2, [r0, #0x1c] + cmp r2, #0x0 + bne _0201346A + mov r0, #0x0 + pop {r4-r7} + bx lr +_0201346A: + mov r1, #0x0 + cmp r2, #0x0 + ble _020134F4 + ldr r3, [r0, #0x18] + ldr r7, _020134FC ; =0x020908DC + ldr r0, _02013500 ; =0x020909A4 +_02013476: + cmp r3, #0x0 + beq _020134EC + cmp r4, #0x5 + bhi _020134E6 + add r5, r4, r4 + add r5, pc + ldrh r5, [r5, #0x6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_0201348A: ; jump table (using 16-bit offset) + .short _02013496 - _0201348A - 2; case 0 + .short _020134A2 - _0201348A - 2; case 1 + .short _020134AE - _0201348A - 2; case 2 + .short _020134BC - _0201348A - 2; case 3 + .short _020134CA - _0201348A - 2; case 4 + .short _020134D8 - _0201348A - 2; case 5 +_02013496: + ldr r5, [r3, #0x0] + cmp r5, r0 + bne _020134EC + ldr r0, [r3, #0x4] + pop {r4-r7} + bx lr +_020134A2: + ldr r5, [r3, #0x0] + cmp r5, r7 + bne _020134EC + ldr r0, [r3, #0x4] + pop {r4-r7} + bx lr +_020134AE: + ldr r6, [r3, #0x0] + ldr r5, _02013504 ; =0x02090858 + cmp r6, r5 + bne _020134EC + ldr r0, [r3, #0x4] + pop {r4-r7} + bx lr +_020134BC: + ldr r6, [r3, #0x0] + ldr r5, _02013508 ; =0x02090780 + cmp r6, r5 + bne _020134EC + ldr r0, [r3, #0x4] + pop {r4-r7} + bx lr +_020134CA: + ldr r6, [r3, #0x0] + ldr r5, _0201350C ; =0x02090664 + cmp r6, r5 + bne _020134EC + ldr r0, [r3, #0x4] + pop {r4-r7} + bx lr +_020134D8: + ldr r6, [r3, #0x0] + ldr r5, _02013510 ; =0x020905D0 + cmp r6, r5 + bne _020134EC + ldr r0, [r3, #0x4] + pop {r4-r7} + bx lr +_020134E6: + mov r0, #0x0 + pop {r4-r7} + bx lr +_020134EC: + add r1, r1, #0x1 + add r3, #0x8 + cmp r1, r2 + blt _02013476 +_020134F4: + mov r0, #0x0 + pop {r4-r7} + bx lr + nop +_020134FC: .word 0x020908DC +_02013500: .word 0x020909A4 +_02013504: .word 0x02090858 +_02013508: .word 0x02090780 +_0201350C: .word 0x02090664 +_02013510: .word 0x020905D0 + + thumb_func_start FUN_02013514 +FUN_02013514: ; 0x02013514 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x0 + bl FUN_02013458 + cmp r0, #0x0 + beq _0201352E + ldrh r1, [r4, #0x0] + strh r1, [r0, #0x0] + ldrh r1, [r4, #0x2] + strh r1, [r0, #0x2] + ldrh r1, [r4, #0x4] + strh r1, [r0, #0x4] +_0201352E: + pop {r4, pc} + + thumb_func_start FUN_02013530 +FUN_02013530: ; 0x02013530 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x2 + bl FUN_02013458 + add r2, r0, #0x0 + beq _02013546 + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] +_02013546: + pop {r4, pc} + + thumb_func_start FUN_02013548 +FUN_02013548: ; 0x02013548 + push {r3-r4, lr} + sub sp, #0xc + add r4, r1, #0x0 + mov r1, #0x2 + bl FUN_02013458 + add r2, r0, #0x0 + bne _0201356E + add r2, sp, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r0, [r2, #0x4] + str r0, [r2, #0x8] + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + add sp, #0xc + str r0, [r4, #0x0] + pop {r3-r4, pc} +_0201356E: + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201357C +FUN_0201357C: ; 0x0201357C + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x2 + bl FUN_02013458 + cmp r0, #0x0 + beq _02013590 + mov r1, #0x0 + ldrsh r1, [r4, r1] + strh r1, [r0, #0xc] +_02013590: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02013594 +FUN_02013594: ; 0x02013594 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x2 + bl FUN_02013458 + cmp r0, #0x0 + bne _020135A8 + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4, pc} +_020135A8: + mov r1, #0xc + ldrsh r0, [r0, r1] + strh r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_020135B0 +FUN_020135B0: ; 0x020135B0 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x3 + bl FUN_02013458 + cmp r0, #0x0 + beq _020135C2 + ldrh r1, [r4, #0x0] + strh r1, [r0, #0x0] +_020135C2: + pop {r4, pc} + + thumb_func_start FUN_020135C4 +FUN_020135C4: ; 0x020135C4 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x3 + bl FUN_02013458 + cmp r0, #0x0 + bne _020135D8 + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4, pc} +_020135D8: + ldrh r0, [r0, #0x0] + strh r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020135E0 +FUN_020135E0: ; 0x020135E0 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x3 + bl FUN_02013458 + cmp r0, #0x0 + beq _020135F2 + ldrh r1, [r4, #0x0] + strh r1, [r0, #0x2] +_020135F2: + pop {r4, pc} + + thumb_func_start FUN_020135F4 +FUN_020135F4: ; 0x020135F4 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x3 + bl FUN_02013458 + cmp r0, #0x0 + bne _02013608 + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4, pc} +_02013608: + ldrh r0, [r0, #0x2] + strh r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02013610 +FUN_02013610: ; 0x02013610 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x5 + bl FUN_02013458 + add r2, r0, #0x0 + beq _02013626 + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] +_02013626: + pop {r4, pc} + + thumb_func_start FUN_02013628 +FUN_02013628: ; 0x02013628 + push {r3-r4, lr} + sub sp, #0xc + add r4, r1, #0x0 + mov r1, #0x5 + bl FUN_02013458 + add r2, r0, #0x0 + bne _0201364E + add r2, sp, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r0, [r2, #0x4] + str r0, [r2, #0x8] + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + add sp, #0xc + str r0, [r4, #0x0] + pop {r3-r4, pc} +_0201364E: + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201365C +FUN_0201365C: ; 0x0201365C + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x5 + bl FUN_02013458 + cmp r0, #0x0 + beq _02013670 + mov r1, #0x0 + ldrsh r1, [r4, r1] + strh r1, [r0, #0xc] +_02013670: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02013674 +FUN_02013674: ; 0x02013674 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x5 + bl FUN_02013458 + cmp r0, #0x0 + bne _02013688 + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4, pc} +_02013688: + mov r1, #0xc + ldrsh r0, [r0, r1] + strh r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02013690 +FUN_02013690: ; 0x02013690 + push {r3-r5, lr} + mov r1, #0x8 + add r5, r0, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + beq _020136B2 + ldr r0, _020136B8 ; =0x0001020F + add r1, r5, #0x0 + str r0, [r4, #0x0] + mov r0, #0x4 + bl FUN_020219F4 + ldr r1, _020136BC ; =0x020ED548 + str r0, [r4, #0x4] + bl FUN_02021E28 +_020136B2: + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_020136B8: .word 0x0001020F +_020136BC: .word 0x020ED548 + + thumb_func_start FUN_020136C0 +FUN_020136C0: ; 0x020136C0 + push {r4, lr} + add r4, r0, #0x0 + bne _020136CA + bl ErrorHandling +_020136CA: + cmp r4, #0x0 + beq _020136DE + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020136D8 + bl FUN_02021A20 +_020136D8: + add r0, r4, #0x0 + bl FUN_02016A18 +_020136DE: + pop {r4, pc} + + thumb_func_start FUN_020136E0 +FUN_020136E0: ; 0x020136E0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020136EE + bl ErrorHandling +_020136EE: + cmp r5, #0x0 + beq _020136F4 + str r4, [r5, #0x0] +_020136F4: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020136F8 +FUN_020136F8: ; 0x020136F8 + push {r4-r6, lr} + sub sp, #0x10 + add r6, r0, #0x0 + str r3, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, [r6, #0x0] + add r5, r1, #0x0 + str r0, [sp, #0x8] + mov r1, #0x0 + add r4, r2, #0x0 + str r1, [sp, #0xc] + ldr r2, [r6, #0x4] + add r0, r5, #0x0 + add r3, r4, #0x0 + bl FUN_0201BDE0 + add r0, r5, #0x0 + bl FUN_02019548 + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_02013724 +FUN_02013724: ; 0x02013724 + ldr r1, _02013738 ; =0x0000FFFF + mov r2, #0x0 + strh r1, [r0, #0x0] +_0201372A: + add r2, r2, #0x1 + strh r1, [r0, #0x4] + add r0, r0, #0x2 + cmp r2, #0x2 + blt _0201372A + bx lr + nop +_02013738: .word 0x0000FFFF + + thumb_func_start FUN_0201373C +FUN_0201373C: ; 0x0201373C + strh r1, [r0, #0x0] + mov r2, #0x0 + ldr r1, _02013750 ; =0x0000FFFF + strh r2, [r0, #0x2] +_02013744: + add r2, r2, #0x1 + strh r1, [r0, #0x4] + add r0, r0, #0x2 + cmp r2, #0x2 + blt _02013744 + bx lr + .balign 4 +_02013750: .word 0x0000FFFF + + thumb_func_start FUN_02013754 +FUN_02013754: ; 0x02013754 + push {r4, lr} + mov r1, #0x4 + add r4, r0, #0x0 + bl FUN_0201373C + mov r0, #0x5 + strh r0, [r4, #0x2] + pop {r4, pc} + + thumb_func_start FUN_02013764 +FUN_02013764: ; 0x02013764 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + cmp r6, #0x4 + blo _02013772 + bl ErrorHandling +_02013772: + cmp r6, #0x4 + bhs _020137B8 + mov r0, #0xa + add r4, r6, #0x0 + mul r4, r0 + ldr r1, _020137BC ; =0x020ED556 + add r0, r5, #0x0 + ldrb r1, [r1, r4] + bl FUN_0201373C + ldr r0, _020137C0 ; =0x020ED557 + mov r1, #0x0 + ldrb r0, [r0, r4] + mvn r1, r1 + strh r0, [r5, #0x2] + ldr r0, _020137C4 ; =0x020ED558 + ldrsh r0, [r0, r4] + cmp r0, r1 + beq _020137A2 + ldr r1, _020137C8 ; =0x020ED55A + ldrh r1, [r1, r4] + bl FUN_02013A9C + strh r0, [r5, #0x4] +_020137A2: + ldr r0, _020137CC ; =0x020ED55C + mov r1, #0x0 + ldrsh r0, [r0, r4] + mvn r1, r1 + cmp r0, r1 + beq _020137B8 + ldr r1, _020137D0 ; =0x020ED55E + ldrh r1, [r1, r4] + bl FUN_02013A9C + strh r0, [r5, #0x6] +_020137B8: + pop {r4-r6, pc} + nop +_020137BC: .word 0x020ED556 +_020137C0: .word 0x020ED557 +_020137C4: .word 0x020ED558 +_020137C8: .word 0x020ED55A +_020137CC: .word 0x020ED55C +_020137D0: .word 0x020ED55E + + thumb_func_start FUN_020137D4 +FUN_020137D4: ; 0x020137D4 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r0, r1, #0x0 + str r1, [sp, #0x4] + bl FUN_0200AA80 + ldr r5, [sp, #0x0] + ldr r7, _02013838 ; =0x0000FFFF + add r6, r0, #0x0 + mov r4, #0x0 +_020137EA: + ldrh r2, [r5, #0x4] + cmp r2, r7 + beq _02013800 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0200B518 + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, #0x2 + blt _020137EA +_02013800: + ldr r2, [sp, #0x0] + mov r0, #0x1 + ldrh r2, [r2, #0x0] + mov r1, #0x1a + lsl r3, r2, #0x1 + ldr r2, _0201383C ; =0x020ED54C + ldrh r2, [r2, r3] + ldr r3, [sp, #0x4] + bl FUN_0200A86C + add r5, r0, #0x0 + ldr r2, [sp, #0x0] + ldr r3, [sp, #0x4] + ldrh r2, [r2, #0x2] + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0200A9C4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + add r0, r6, #0x0 + bl FUN_0200AB18 + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02013838: .word 0x0000FFFF +_0201383C: .word 0x020ED54C + + thumb_func_start FUN_02013840 +FUN_02013840: ; 0x02013840 + push {r4, lr} + add r4, r0, #0x0 + add r3, r1, #0x0 + ldrh r1, [r4, #0x0] + mov r0, #0x1a + lsl r2, r1, #0x1 + ldr r1, _02013858 ; =0x020ED54C + ldrh r1, [r1, r2] + ldrh r2, [r4, #0x2] + bl FUN_0200A738 + pop {r4, pc} + .balign 4 +_02013858: .word 0x020ED54C + + thumb_func_start FUN_0201385C +FUN_0201385C: ; 0x0201385C + ldrh r1, [r0, #0x0] + ldr r0, _0201386C ; =0x0000FFFF + cmp r1, r0 + beq _02013868 + mov r0, #0x1 + bx lr +_02013868: + mov r0, #0x0 + bx lr + .balign 4 +_0201386C: .word 0x0000FFFF + + thumb_func_start FUN_02013870 +FUN_02013870: ; 0x02013870 + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x0] + ldrh r1, [r4, #0x2] + bl FUN_020138A0 + mov r3, #0x0 + cmp r0, #0x0 + bls _02013896 + ldr r1, _0201389C ; =0x0000FFFF +_02013884: + ldrh r2, [r4, #0x4] + cmp r2, r1 + bne _0201388E + mov r0, #0x0 + pop {r4, pc} +_0201388E: + add r3, r3, #0x1 + add r4, r4, #0x2 + cmp r3, r0 + blo _02013884 +_02013896: + mov r0, #0x1 + pop {r4, pc} + nop +_0201389C: .word 0x0000FFFF + + thumb_func_start FUN_020138A0 +FUN_020138A0: ; 0x020138A0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x5 + blo _020138AE + bl ErrorHandling +_020138AE: + add r0, r5, #0x0 + bl FUN_02013974 + cmp r4, r0 + blo _020138BC + bl ErrorHandling +_020138BC: + ldr r1, _02013910 ; =0x020ED54C + lsl r2, r5, #0x1 + ldrh r1, [r1, r2] + mov r0, #0x1a + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200A738 + str r0, [sp, #0x0] + bl FUN_02021F2C + add r4, r0, #0x0 + ldrh r1, [r4, #0x0] + ldr r0, _02013914 ; =0x0000FFFF + mov r5, #0x0 + cmp r1, r0 + beq _02013904 + add r7, r0, #0x0 + sub r6, r0, #0x1 +_020138E2: + cmp r1, r6 + bne _020138FC + add r0, r4, #0x0 + bl FUN_0201B8F8 + cmp r0, #0x0 + beq _020138F2 + add r5, r5, #0x1 +_020138F2: + add r0, r4, #0x0 + bl FUN_0201B8B8 + add r4, r0, #0x0 + b _020138FE +_020138FC: + add r4, r4, #0x2 +_020138FE: + ldrh r1, [r4, #0x0] + cmp r1, r7 + bne _020138E2 +_02013904: + ldr r0, [sp, #0x0] + bl FUN_02021A20 + add r0, r5, #0x0 + pop {r3-r7, pc} + nop +_02013910: .word 0x020ED54C +_02013914: .word 0x0000FFFF + + thumb_func_start FUN_02013918 +FUN_02013918: ; 0x02013918 + lsl r1, r1, #0x1 + add r0, r0, r1 + ldrh r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02013920 +FUN_02013920: ; 0x02013920 + ldrh r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02013924 +FUN_02013924: ; 0x02013924 + ldrh r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_02013928 +FUN_02013928: ; 0x02013928 + push {r3-r4} + ldrh r3, [r0, #0x0] + ldrh r2, [r1, #0x0] + cmp r3, r2 + bne _0201393A + ldrh r3, [r0, #0x2] + ldrh r2, [r1, #0x2] + cmp r3, r2 + beq _02013940 +_0201393A: + mov r0, #0x0 + pop {r3-r4} + bx lr +_02013940: + mov r4, #0x0 +_02013942: + ldrh r3, [r0, #0x4] + ldrh r2, [r1, #0x4] + cmp r3, r2 + beq _02013950 + mov r0, #0x0 + pop {r3-r4} + bx lr +_02013950: + add r4, r4, #0x1 + add r1, r1, #0x2 + add r0, r0, #0x2 + cmp r4, #0x2 + blt _02013942 + mov r0, #0x1 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02013960 +FUN_02013960: ; 0x02013960 + ldrh r2, [r1, #0x0] + strh r2, [r0, #0x0] + ldrh r2, [r1, #0x2] + strh r2, [r0, #0x2] + ldrh r2, [r1, #0x4] + strh r2, [r0, #0x4] + ldrh r1, [r1, #0x6] + strh r1, [r0, #0x6] + bx lr + .balign 4 + + thumb_func_start FUN_02013974 +FUN_02013974: ; 0x02013974 + cmp r0, #0x5 + bhs _0201397C + mov r0, #0x14 + bx lr +_0201397C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02013980 +FUN_02013980: ; 0x02013980 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x5 + blo _02013990 + bl ErrorHandling +_02013990: + strh r4, [r5, #0x0] + strh r6, [r5, #0x2] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02013998 +FUN_02013998: ; 0x02013998 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x2 + blo _020139A8 + bl ErrorHandling +_020139A8: + lsl r0, r4, #0x1 + add r0, r5, r0 + strh r6, [r0, #0x4] + pop {r4-r6, pc} + + thumb_func_start FUN_020139B0 +FUN_020139B0: ; 0x020139B0 + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x0] + ldrh r1, [r4, #0x2] + bl FUN_020138A0 + cmp r0, #0x2 + bhs _020139D0 + lsl r1, r0, #0x1 + add r2, r4, r1 + ldr r1, _020139D4 ; =0x0000FFFF +_020139C6: + add r0, r0, #0x1 + strh r1, [r2, #0x4] + add r2, r2, #0x2 + cmp r0, #0x2 + blo _020139C6 +_020139D0: + pop {r4, pc} + nop +_020139D4: .word 0x0000FFFF + + thumb_func_start FUN_020139D8 +FUN_020139D8: ; 0x020139D8 + push {r3-r7, lr} + mov r1, #0x30 + add r6, r0, #0x0 + bl FUN_02016998 + ldr r4, _02013A0C ; =0x020ED5C0 + str r0, [sp, #0x0] + mov r7, #0x0 + add r5, r0, #0x0 +_020139EA: + ldr r0, [sp, #0x0] + mov r1, #0x1a + str r6, [r0, #0x0] + ldrh r2, [r4, #0x0] + mov r0, #0x1 + add r3, r6, #0x0 + bl FUN_0200A86C + str r0, [r5, #0x4] + add r7, r7, #0x1 + add r4, r4, #0x2 + add r5, r5, #0x4 + cmp r7, #0xb + blt _020139EA + ldr r0, [sp, #0x0] + pop {r3-r7, pc} + nop +_02013A0C: .word 0x020ED5C0 + + thumb_func_start FUN_02013A10 +FUN_02013A10: ; 0x02013A10 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r4, #0x0 + add r5, r6, #0x0 +_02013A18: + ldr r0, [r5, #0x4] + bl FUN_0200A8B8 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0xb + blt _02013A18 + add r0, r6, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02013A30 +FUN_02013A30: ; 0x02013A30 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r2, #0x0 + add r0, r1, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x0 + bl FUN_02013AEC + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x0] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x4] + add r2, r4, #0x0 + bl FUN_0200A8E0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02013A58 +FUN_02013A58: ; 0x02013A58 + push {r3-r4, lr} + sub sp, #0xc + add r4, r1, #0x0 + ldr r1, _02013A94 ; =0x0000FFFF + cmp r0, r1 + beq _02013A88 + add r1, sp, #0x8 + add r2, sp, #0x4 + bl FUN_02013AEC + ldr r0, [sp, #0x8] + mov r3, #0x0 + lsl r1, r0, #0x1 + ldr r0, _02013A98 ; =0x020ED5C0 + ldrh r0, [r0, r1] + str r0, [sp, #0x8] + str r4, [sp, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x4] + mov r0, #0x1a + bl FUN_0200A648 + add sp, #0xc + pop {r3-r4, pc} +_02013A88: + add r0, r4, #0x0 + bl FUN_02021A4C + add sp, #0xc + pop {r3-r4, pc} + nop +_02013A94: .word 0x0000FFFF +_02013A98: .word 0x020ED5C0 + + thumb_func_start FUN_02013A9C +FUN_02013A9C: ; 0x02013A9C + push {r4-r5} + ldr r4, _02013AE0 ; =0x020ED5C0 + mov r2, #0x0 +_02013AA2: + ldrh r3, [r4, #0x0] + cmp r0, r3 + bne _02013AD0 + mov r4, #0x0 + add r3, r4, #0x0 + cmp r2, #0x0 + bls _02013AC6 + ldr r0, _02013AE4 ; =0x020ED5D6 +_02013AB2: + lsl r5, r4, #0x1 + ldrh r5, [r0, r5] + add r4, r4, #0x1 + lsl r4, r4, #0x10 + add r3, r3, r5 + lsl r3, r3, #0x10 + lsr r4, r4, #0x10 + lsr r3, r3, #0x10 + cmp r4, r2 + blo _02013AB2 +_02013AC6: + add r0, r3, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4-r5} + bx lr +_02013AD0: + add r2, r2, #0x1 + add r4, r4, #0x2 + cmp r2, #0xb + blo _02013AA2 + ldr r0, _02013AE8 ; =0x0000FFFF + pop {r4-r5} + bx lr + nop +_02013AE0: .word 0x020ED5C0 +_02013AE4: .word 0x020ED5D6 +_02013AE8: .word 0x0000FFFF + + thumb_func_start FUN_02013AEC +FUN_02013AEC: ; 0x02013AEC + push {r3-r6} + ldr r3, _02013B20 ; =0x00000FFF + ldr r6, _02013B24 ; =0x020ED5D6 + and r3, r0 + mov r0, #0x0 + add r5, r0, #0x0 +_02013AF8: + ldrh r4, [r6, #0x0] + add r0, r0, r4 + cmp r3, r0 + bhs _02013B12 + str r5, [r1, #0x0] + ldr r1, _02013B24 ; =0x020ED5D6 + lsl r4, r5, #0x1 + ldrh r1, [r1, r4] + sub r0, r0, r1 + sub r0, r3, r0 + str r0, [r2, #0x0] + pop {r3-r6} + bx lr +_02013B12: + add r5, r5, #0x1 + add r6, r6, #0x2 + cmp r5, #0xb + blo _02013AF8 + pop {r3-r6} + bx lr + nop +_02013B20: .word 0x00000FFF +_02013B24: .word 0x020ED5D6 + + thumb_func_start FUN_02013B28 +FUN_02013B28: ; 0x02013B28 + mov r0, #0x8 + bx lr + + thumb_func_start FUN_02013B2C +FUN_02013B2C: ; 0x02013B2C + push {r3, lr} + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r3, _02013B54 ; =0x020ED5B4 + str r2, [r0, #0x4] +_02013B36: + ldrb r1, [r3, #0x0] + cmp r1, #0x2 + bne _02013B48 + ldr r1, _02013B58 ; =0x020ED5B5 + lsl r2, r2, #0x1 + ldrb r1, [r1, r2] + bl FUN_02013C18 + pop {r3, pc} +_02013B48: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0x6 + blo _02013B36 + pop {r3, pc} + nop +_02013B54: .word 0x020ED5B4 +_02013B58: .word 0x020ED5B5 + + thumb_func_start FUN_02013B5C +FUN_02013B5C: ; 0x02013B5C + ldr r3, _02013B64 ; =FUN_02022610 + mov r1, #0x22 + bx r3 + nop +_02013B64: .word FUN_02022610 + + thumb_func_start FUN_02013B68 +FUN_02013B68: ; 0x02013B68 + ldr r0, [r0, #0x4] + add r2, r0, #0x0 + lsr r2, r1 + mov r0, #0x1 + and r0, r2 + bx lr + + thumb_func_start FUN_02013B74 +FUN_02013B74: ; 0x02013B74 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r2, #0x0 + ldr r3, [r5, #0x4] + add r4, r2, #0x0 + mov r0, #0x1 +_02013B80: + add r1, r3, #0x0 + lsr r1, r2 + tst r1, r0 + bne _02013B8A + add r4, r4, #0x1 +_02013B8A: + add r2, r2, #0x1 + cmp r2, #0x20 + blo _02013B80 + cmp r4, #0x0 + beq _02013BC4 + bl FUN_0201B9EC + add r1, r4, #0x0 + blx _u32_div_f + ldr r4, [r5, #0x4] + mov r0, #0x0 + mov r2, #0x1 +_02013BA4: + add r3, r4, #0x0 + lsr r3, r0 + tst r3, r2 + bne _02013BBE + cmp r1, #0x0 + bne _02013BBC + mov r1, #0x1 + ldr r2, [r5, #0x4] + lsl r1, r0 + orr r1, r2 + str r1, [r5, #0x4] + pop {r3-r5, pc} +_02013BBC: + sub r1, r1, #0x1 +_02013BBE: + add r0, r0, #0x1 + cmp r0, #0x20 + blo _02013BA4 +_02013BC4: + mov r0, #0x20 + pop {r3-r5, pc} + + thumb_func_start FUN_02013BC8 +FUN_02013BC8: ; 0x02013BC8 + ldr r3, [r0, #0x4] + mov r2, #0x0 + mov r0, #0x1 +_02013BCE: + add r1, r3, #0x0 + lsr r1, r2 + tst r1, r0 + bne _02013BDA + mov r0, #0x0 + bx lr +_02013BDA: + add r2, r2, #0x1 + cmp r2, #0x20 + blo _02013BCE + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02013BE4 +FUN_02013BE4: ; 0x02013BE4 + push {r3-r4} + mov r3, #0x0 + ldr r4, _02013C08 ; =0x020ED5D6 + add r2, r3, #0x0 +_02013BEC: + ldrh r1, [r4, #0x0] + add r2, r2, #0x1 + add r4, r4, #0x2 + add r1, r3, r1 + lsl r1, r1, #0x10 + lsr r3, r1, #0x10 + cmp r2, #0x9 + blt _02013BEC + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3-r4} + bx lr + nop +_02013C08: .word 0x020ED5D6 + + thumb_func_start FUN_02013C0C +FUN_02013C0C: ; 0x02013C0C + ldr r0, [r0, #0x0] + add r2, r0, #0x0 + lsr r2, r1 + mov r0, #0x1 + and r0, r2 + bx lr + + thumb_func_start FUN_02013C18 +FUN_02013C18: ; 0x02013C18 + mov r2, #0x1 + ldr r3, [r0, #0x0] + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02013C28 +FUN_02013C28: ; 0x02013C28 + push {r4-r7} + mov r3, #0x0 + ldr r5, _02013C64 ; =0x020ED5EC + add r2, r3, #0x0 +_02013C30: + ldr r7, [r5, #0x4] + add r4, r2, #0x0 + cmp r7, #0x0 + ble _02013C54 + ldr r6, [r5, #0x0] +_02013C3A: + ldrh r1, [r6, #0x0] + cmp r0, r1 + bne _02013C4C + ldr r0, _02013C68 ; =0x020ED5F0 + lsl r1, r3, #0x3 + ldr r0, [r0, r1] + sub r0, r0, #0x1 + pop {r4-r7} + bx lr +_02013C4C: + add r4, r4, #0x1 + add r6, r6, #0x2 + cmp r4, r7 + blt _02013C3A +_02013C54: + add r3, r3, #0x1 + add r5, #0x8 + cmp r3, #0xc + blo _02013C30 + mov r0, #0x0 + pop {r4-r7} + bx lr + nop +_02013C64: .word 0x020ED5EC +_02013C68: .word 0x020ED5F0 + + thumb_func_start FUN_02013C6C +FUN_02013C6C: ; 0x02013C6C + push {r3-r7, lr} + ldr r3, _02013CC8 ; =0x020ED5EC + add r6, r1, #0x0 + mov r7, #0x0 +_02013C74: + ldr r5, [r3, #0x4] + mov r2, #0x0 + cmp r5, #0x0 + ble _02013CBC + ldr r4, [r3, #0x0] +_02013C7E: + ldrh r1, [r4, #0x0] + cmp r0, r1 + bne _02013CB4 + ldr r2, _02013CCC ; =0x020ED5F0 + lsl r1, r7, #0x3 + ldr r2, [r2, r1] + mov r0, #0x0 + cmp r2, #0x0 + beq _02013CAC + ldr r2, _02013CC8 ; =0x020ED5EC + add r2, r2, r1 + ldr r2, [r2, #0x4] +_02013C96: + cmp r6, #0x0 + bne _02013CA4 + ldr r2, _02013CC8 ; =0x020ED5EC + lsl r0, r0, #0x1 + ldr r1, [r2, r1] + ldrh r0, [r1, r0] + pop {r3-r7, pc} +_02013CA4: + sub r6, r6, #0x1 + add r0, r0, #0x1 + cmp r2, #0x0 + bne _02013C96 +_02013CAC: + bl ErrorHandling + ldr r0, _02013CD0 ; =0x0000FFFF + pop {r3-r7, pc} +_02013CB4: + add r2, r2, #0x1 + add r4, r4, #0x2 + cmp r2, r5 + blt _02013C7E +_02013CBC: + add r7, r7, #0x1 + add r3, #0x8 + cmp r7, #0xc + blo _02013C74 + pop {r3-r7, pc} + nop +_02013CC8: .word 0x020ED5EC +_02013CCC: .word 0x020ED5F0 +_02013CD0: .word 0x0000FFFF + + thumb_func_start FUN_02013CD4 +FUN_02013CD4: ; 0x02013CD4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0x0 + bne _02013CE8 + bl ErrorHandling +_02013CE8: + ldr r0, [r5, #0x0] + ldr r1, [r5, #0xc] + bl FUN_02013F68 + str r0, [r4, #0x0] + ldr r0, [r5, #0x0] + str r0, [r4, #0x4] + ldr r0, [r5, #0x4] + ldr r1, [r5, #0xc] + bl FUN_02013F98 + str r0, [r4, #0x8] + ldr r0, [r5, #0x4] + str r0, [r4, #0xc] + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + bl FUN_02013FC8 + str r0, [r4, #0x10] + ldr r0, [r5, #0x8] + str r0, [r4, #0x14] + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02013D18 +FUN_02013D18: ; 0x02013D18 + push {r4, lr} + add r4, r0, #0x0 + bne _02013D22 + bl ErrorHandling +_02013D22: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02013D2C + bl ErrorHandling +_02013D2C: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + bne _02013D36 + bl ErrorHandling +_02013D36: + ldr r0, [r4, #0x10] + cmp r0, #0x0 + bne _02013D40 + bl ErrorHandling +_02013D40: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + ldr r0, [r4, #0x8] + bl FUN_02016A18 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02013D5C +FUN_02013D5C: ; 0x02013D5C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _02013D90 ; =0x04000444 + mov r6, #0x0 + str r6, [r0, #0x0] + ldr r0, [r5, #0x4] + cmp r0, #0x0 + ble _02013D86 + add r4, r6, #0x0 +_02013D6E: + ldr r0, [r5, #0x0] + add r0, r0, r4 + ldr r1, [r0, #0x20] + cmp r1, #0x0 + beq _02013D7C + bl FUN_020140D8 +_02013D7C: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0x40 + cmp r6, r0 + blt _02013D6E +_02013D86: + ldr r0, _02013D94 ; =0x04000448 + mov r1, #0x1 + str r1, [r0, #0x0] + pop {r4-r6, pc} + nop +_02013D90: .word 0x04000444 +_02013D94: .word 0x04000448 + + thumb_func_start FUN_02013D98 +FUN_02013D98: ; 0x02013D98 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02014024 + add r4, r0, #0x0 + bne _02013DAA + bl ErrorHandling +_02013DAA: + ldr r0, [r5, #0x4] + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _02013DB6 + bl ErrorHandling +_02013DB6: + ldr r0, [r5, #0x4] + bl FUN_0201407C + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _02013DC6 + bl ErrorHandling +_02013DC6: + ldr r0, [r5, #0x4] + ldr r1, [r4, #0x0] + add r2, r4, #0x4 + bl FUN_020140A4 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02013DD4 +FUN_02013DD4: ; 0x02013DD4 + push {r4, lr} + ldr r1, _02013DE8 ; =0x021064BC + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + blx r1 + add r0, r4, #0x0 + bl FUN_02013F50 + pop {r4, pc} + .balign 4 +_02013DE8: .word 0x021064BC + + thumb_func_start FUN_02013DEC +FUN_02013DEC: ; 0x02013DEC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r6, #0x0 + cmp r0, #0x0 + ble _02013E12 + add r4, r6, #0x0 +_02013DFA: + ldr r1, [r5, #0x8] + ldr r0, [r1, r4] + cmp r0, #0x0 + beq _02013E08 + add r0, r1, r4 + bl FUN_02013DD4 +_02013E08: + ldr r0, [r5, #0xc] + add r6, r6, #0x1 + add r4, #0x28 + cmp r6, r0 + blt _02013DFA +_02013E12: + pop {r4-r6, pc} + + thumb_func_start FUN_02013E14 +FUN_02013E14: ; 0x02013E14 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02014050 + add r4, r0, #0x0 + bne _02013E26 + bl ErrorHandling +_02013E26: + ldr r0, [r5, #0x8] + bl FUN_02014090 + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _02013E36 + bl ErrorHandling +_02013E36: + ldr r0, [r5, #0x4] + ldr r1, [r4, #0x0] + add r2, r4, #0x4 + bl FUN_020140B4 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02013E44 +FUN_02013E44: ; 0x02013E44 + push {r4, lr} + ldr r1, _02013E58 ; =0x021064C4 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + blx r1 + add r0, r4, #0x0 + bl FUN_02013F5C + pop {r4, pc} + .balign 4 +_02013E58: .word 0x021064C4 + + thumb_func_start FUN_02013E5C +FUN_02013E5C: ; 0x02013E5C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x14] + mov r6, #0x0 + cmp r0, #0x0 + ble _02013E82 + add r4, r6, #0x0 +_02013E6A: + ldr r1, [r5, #0x10] + ldr r0, [r1, r4] + cmp r0, #0x0 + beq _02013E78 + add r0, r1, r4 + bl FUN_02013E44 +_02013E78: + ldr r0, [r5, #0x14] + add r6, r6, #0x1 + add r4, #0x18 + cmp r6, r0 + blt _02013E6A +_02013E82: + pop {r4-r6, pc} + + thumb_func_start FUN_02013E84 +FUN_02013E84: ; 0x02013E84 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02013FF8 + add r4, r0, #0x0 + bne _02013E96 + bl ErrorHandling +_02013E96: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02014218 + mov r0, #0x1 + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02013EA8 +FUN_02013EA8: ; 0x02013EA8 + ldr r3, _02013EAC ; =FUN_02013F30 + bx r3 + .balign 4 +_02013EAC: .word FUN_02013F30 + + thumb_func_start FUN_02013EB0 +FUN_02013EB0: ; 0x02013EB0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02013EBE + bl ErrorHandling +_02013EBE: + str r4, [r5, #0x20] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02013EC4 +FUN_02013EC4: ; 0x02013EC4 + strh r1, [r0, #0x0] + strh r2, [r0, #0x2] + bx lr + .balign 4 + + thumb_func_start FUN_02013ECC +FUN_02013ECC: ; 0x02013ECC + ldrh r1, [r0, #0x2] + ldrh r0, [r0, #0x0] + lsl r1, r1, #0x10 + orr r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_02013ED8 +FUN_02013ED8: ; 0x02013ED8 + strh r1, [r0, #0x4] + strh r2, [r0, #0x6] + bx lr + .balign 4 + + thumb_func_start FUN_02013EE0 +FUN_02013EE0: ; 0x02013EE0 + str r1, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + .balign 4 + + thumb_func_start FUN_02013EE8 +FUN_02013EE8: ; 0x02013EE8 + strh r1, [r0, #0x8] + strh r2, [r0, #0xa] + bx lr + .balign 4 + + thumb_func_start FUN_02013EF0 +FUN_02013EF0: ; 0x02013EF0 + ldrh r1, [r0, #0xa] + ldrh r0, [r0, #0x8] + lsl r1, r1, #0x10 + orr r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_02013EFC +FUN_02013EFC: ; 0x02013EFC + str r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_02013F00 +FUN_02013F00: ; 0x02013F00 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start FUN_02013F04 +FUN_02013F04: ; 0x02013F04 + add r0, #0x3e + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02013F0C +FUN_02013F0C: ; 0x02013F0C + strh r1, [r0, #0x3c] + bx lr + + thumb_func_start FUN_02013F10 +FUN_02013F10: ; 0x02013F10 + str r1, [r0, #0x24] + bx lr + + thumb_func_start FUN_02013F14 +FUN_02013F14: ; 0x02013F14 + str r1, [r0, #0x28] + bx lr + + thumb_func_start FUN_02013F18 +FUN_02013F18: ; 0x02013F18 + str r1, [r0, #0x2c] + bx lr + + thumb_func_start FUN_02013F1C +FUN_02013F1C: ; 0x02013F1C + str r1, [r0, #0x30] + bx lr + + thumb_func_start FUN_02013F20 +FUN_02013F20: ; 0x02013F20 + cmp r1, #0x0 + bne _02013F28 + str r2, [r0, #0x34] + bx lr +_02013F28: + str r2, [r0, #0x38] + bx lr + + thumb_func_start FUN_02013F2C +FUN_02013F2C: ; 0x02013F2C + str r1, [r0, #0x18] + bx lr + + thumb_func_start FUN_02013F30 +FUN_02013F30: ; 0x02013F30 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x40 + blx Call_FillMemWithValue + add r0, r4, #0x0 + mov r1, #0x1f + add r0, #0x3e + strb r1, [r0, #0x0] + ldr r0, _02013F4C ; =0x00007FFF + strh r0, [r4, #0x3c] + pop {r4, pc} + nop +_02013F4C: .word 0x00007FFF + + thumb_func_start FUN_02013F50 +FUN_02013F50: ; 0x02013F50 + ldr r3, _02013F58 ; =FUN_020B1A24 + mov r1, #0x0 + stmia r0!, {r1} + bx r3 + .balign 4 +_02013F58: .word FUN_020B1A24 + + thumb_func_start FUN_02013F5C +FUN_02013F5C: ; 0x02013F5C + ldr r3, _02013F64 ; =FUN_020B19DC + mov r1, #0x0 + stmia r0!, {r1} + bx r3 + .balign 4 +_02013F64: .word FUN_020B19DC + + thumb_func_start FUN_02013F68 +FUN_02013F68: ; 0x02013F68 + push {r3-r7, lr} + add r6, r0, #0x0 + add r0, r1, #0x0 + lsl r1, r6, #0x6 + bl FUN_02016998 + add r7, r0, #0x0 + bne _02013F7C + bl ErrorHandling +_02013F7C: + mov r4, #0x0 + cmp r6, #0x0 + ble _02013F92 + add r5, r7, #0x0 +_02013F84: + add r0, r5, #0x0 + bl FUN_02013F30 + add r4, r4, #0x1 + add r5, #0x40 + cmp r4, r6 + blt _02013F84 +_02013F92: + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02013F98 +FUN_02013F98: ; 0x02013F98 + push {r3-r7, lr} + add r6, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x28 + mul r1, r6 + bl FUN_02016998 + add r7, r0, #0x0 + bne _02013FAE + bl ErrorHandling +_02013FAE: + mov r4, #0x0 + cmp r6, #0x0 + ble _02013FC4 + add r5, r7, #0x0 +_02013FB6: + add r0, r5, #0x0 + bl FUN_02013F50 + add r4, r4, #0x1 + add r5, #0x28 + cmp r4, r6 + blt _02013FB6 +_02013FC4: + add r0, r7, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02013FC8 +FUN_02013FC8: ; 0x02013FC8 + push {r3-r7, lr} + add r6, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x18 + mul r1, r6 + bl FUN_02016998 + add r7, r0, #0x0 + bne _02013FDE + bl ErrorHandling +_02013FDE: + mov r4, #0x0 + cmp r6, #0x0 + ble _02013FF4 + add r5, r7, #0x0 +_02013FE6: + add r0, r5, #0x0 + bl FUN_02013F5C + add r4, r4, #0x1 + add r5, #0x18 + cmp r4, r6 + blt _02013FE6 +_02013FF4: + add r0, r7, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02013FF8 +FUN_02013FF8: ; 0x02013FF8 + push {r3-r4} + ldr r4, [r0, #0x4] + mov r1, #0x0 + cmp r4, #0x0 + ble _0201401C + ldr r3, [r0, #0x0] + add r2, r3, #0x0 +_02014006: + ldr r0, [r2, #0x1c] + cmp r0, #0x0 + bne _02014014 + lsl r0, r1, #0x6 + add r0, r3, r0 + pop {r3-r4} + bx lr +_02014014: + add r1, r1, #0x1 + add r2, #0x40 + cmp r1, r4 + blt _02014006 +_0201401C: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02014024 +FUN_02014024: ; 0x02014024 + push {r3-r4} + ldr r4, [r0, #0x4] + mov r1, #0x0 + cmp r4, #0x0 + ble _0201404A + ldr r3, [r0, #0x8] + add r2, r3, #0x0 +_02014032: + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _02014042 + mov r0, #0x28 + mul r0, r1 + add r0, r3, r0 + pop {r3-r4} + bx lr +_02014042: + add r1, r1, #0x1 + add r2, #0x28 + cmp r1, r4 + blt _02014032 +_0201404A: + mov r0, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02014050 +FUN_02014050: ; 0x02014050 + push {r3-r4} + ldr r4, [r0, #0x4] + mov r1, #0x0 + cmp r4, #0x0 + ble _02014076 + ldr r3, [r0, #0x10] + add r2, r3, #0x0 +_0201405E: + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _0201406E + mov r0, #0x18 + mul r0, r1 + add r0, r3, r0 + pop {r3-r4} + bx lr +_0201406E: + add r1, r1, #0x1 + add r2, #0x18 + cmp r1, r4 + blt _0201405E +_02014076: + mov r0, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201407C +FUN_0201407C: ; 0x0201407C + push {r3, lr} + ldr r3, _0201408C ; =0x021064B8 + mov r1, #0x0 + ldr r0, [r0, #0x10] + ldr r3, [r3, #0x0] + add r2, r1, #0x0 + blx r3 + pop {r3, pc} + .balign 4 +_0201408C: .word 0x021064B8 + + thumb_func_start FUN_02014090 +FUN_02014090: ; 0x02014090 + push {r3, lr} + ldr r3, _020140A0 ; =0x021064C0 + mov r1, #0x0 + ldr r3, [r3, #0x0] + lsl r0, r0, #0x5 + add r2, r1, #0x0 + blx r3 + pop {r3, pc} + .balign 4 +_020140A0: .word 0x021064C0 + + thumb_func_start FUN_020140A4 +FUN_020140A4: ; 0x020140A4 + push {r3, lr} + lsl r1, r1, #0x10 + add r3, r2, #0x0 + lsr r1, r1, #0xd + mov r2, #0x0 + blx FUN_020B1528 + pop {r3, pc} + + thumb_func_start FUN_020140B4 +FUN_020140B4: ; 0x020140B4 + push {r3-r5, lr} + add r3, r2, #0x0 + ldr r2, _020140D4 ; =0xFFFF0000 + add r5, r0, #0x0 + and r2, r1 + lsr r2, r2, #0x10 + lsl r1, r1, #0x10 + ldr r4, [r5, #0x8] + lsl r2, r2, #0x3 + str r2, [r5, #0x8] + lsr r1, r1, #0xd + mov r2, #0x0 + blx FUN_020B1240 + str r4, [r5, #0x8] + pop {r3-r5, pc} + .balign 4 +_020140D4: .word 0xFFFF0000 + + thumb_func_start FUN_020140D8 +FUN_020140D8: ; 0x020140D8 + push {r3-r7, lr} + sub sp, #0x18 + ldr r7, _020141F8 ; =0x04000444 + mov r6, #0x0 + add r5, r0, #0x0 + str r6, [r7, #0x0] + ldrh r1, [r5, #0x3c] + ldr r0, _020141FC ; =0x7FFF8000 + orr r0, r1 + str r0, [r7, #0x7c] + add r0, r7, #0x0 + ldr r1, _02014200 ; =0x00004210 + add r0, #0x80 + str r1, [r0, #0x0] + ldr r3, [r5, #0x24] + ldr r4, [r3, #0x8] + ldr r2, [r3, #0x10] + ldr r1, [r3, #0x4] + ldr r0, [r3, #0x0] + lsl r3, r2, #0x1d + lsl r2, r1, #0x17 + lsl r1, r0, #0x14 + ldr r0, [r5, #0x28] + lsl r4, r4, #0x1a + lsr r0, r0, #0x3 + orr r4, r0 + mov r0, #0x1 + lsl r0, r0, #0x1e + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + str r0, [r7, #0x64] + ldr r0, [r5, #0x24] + ldr r0, [r0, #0x8] + cmp r0, #0x2 + bne _02014124 + mov r6, #0x1 +_02014124: + ldr r0, [r5, #0x30] + ldr r1, [r5, #0x2c] + lsl r0, r0, #0x5 + add r1, r1, r0 + mov r0, #0x4 + sub r0, r0, r6 + lsr r1, r0 + ldr r2, _02014204 ; =0x040004AC + add r0, r5, #0x0 + str r1, [r2, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + sub r2, #0x8 + lsl r1, r0, #0x10 + mov r0, #0xc0 + orr r0, r1 + str r0, [r2, #0x0] + ldr r0, [r5, #0x34] + cmp r0, #0x0 + beq _02014156 + mov r0, #0x8 + ldrsh r0, [r5, r0] + mov r7, #0x0 + str r0, [sp, #0x14] + b _0201415E +_02014156: + mov r0, #0x8 + ldrsh r7, [r5, r0] + mov r0, #0x0 + str r0, [sp, #0x14] +_0201415E: + ldr r0, [r5, #0x38] + cmp r0, #0x0 + beq _0201416C + mov r0, #0xa + ldrsh r6, [r5, r0] + mov r4, #0x0 + b _02014172 +_0201416C: + mov r0, #0xa + ldrsh r4, [r5, r0] + mov r6, #0x0 +_02014172: + ldr r0, [r5, #0x14] + mov r1, #0x6 + lsl r2, r0, #0xc + mov r0, #0x2 + ldrsh r0, [r5, r0] + ldrsh r1, [r5, r1] + mov r3, #0x4 + ldrsh r3, [r5, r3] + add r0, r0, r1 + lsl r1, r0, #0xc + mov r0, #0x0 + ldrsh r0, [r5, r0] + add r0, r0, r3 + ldr r3, _02014208 ; =0x04000470 + lsl r0, r0, #0xc + str r0, [r3, #0x0] + str r1, [r3, #0x0] + str r2, [r3, #0x0] + ldr r0, [r5, #0x18] + ldr r1, _0201420C ; =0x020FFA38 + asr r0, r0, #0x4 + lsl r2, r0, #0x1 + lsl r0, r2, #0x1 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r0, [r1, r0] + ldrsh r1, [r1, r2] + blx G3_RotZ + ldr r2, [r5, #0x10] + ldr r0, [r5, #0xc] + ldr r1, _02014210 ; =0x0400046C + mov r3, #0x8 + str r0, [r1, #0x0] + str r2, [r1, #0x0] + lsr r0, r1, #0xe + str r0, [r1, #0x0] + mov r2, #0x4 + mov r0, #0x6 + ldrsh r2, [r5, r2] + ldrsh r0, [r5, r0] + neg r2, r2 + neg r0, r0 + lsl r2, r2, #0xc + lsl r0, r0, #0xc + str r2, [r1, #0x4] + str r0, [r1, #0x4] + mov r0, #0x0 + str r0, [r1, #0x4] + mov r1, #0xa + ldrsh r1, [r5, r1] + add r2, r0, #0x0 + str r1, [sp, #0x0] + ldr r1, [sp, #0x14] + str r1, [sp, #0x4] + str r6, [sp, #0x8] + str r7, [sp, #0xc] + str r4, [sp, #0x10] + ldrsh r3, [r5, r3] + add r1, r0, #0x0 + blx FUN_020B0250 + ldr r0, _02014214 ; =0x04000448 + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_020141F8: .word 0x04000444 +_020141FC: .word 0x7FFF8000 +_02014200: .word 0x00004210 +_02014204: .word 0x040004AC +_02014208: .word 0x04000470 +_0201420C: .word 0x020FFA38 +_02014210: .word 0x0400046C +_02014214: .word 0x04000448 + + thumb_func_start FUN_02014218 +FUN_02014218: ; 0x02014218 + push {r3-r7, lr} + add r5, r1, #0x0 + ldr r1, [r5, #0x4] + add r7, r0, #0x0 + ldr r2, [r1, #0x10] + mov r6, #0x8 + mov r0, #0x0 + cmp r2, #0x0 + ble _02014236 +_0201422A: + ldr r2, [r5, #0x4] + add r0, r0, #0x1 + ldr r2, [r2, #0x10] + lsl r6, r6, #0x1 + cmp r0, r2 + blt _0201422A +_02014236: + ldr r1, [r1, #0x14] + mov r4, #0x8 + mov r0, #0x0 + cmp r1, #0x0 + ble _0201424C +_02014240: + ldr r1, [r5, #0x4] + add r0, r0, #0x1 + ldr r1, [r1, #0x14] + lsl r4, r4, #0x1 + cmp r0, r1 + blt _02014240 +_0201424C: + mov r1, #0xc + mov r2, #0xe + ldrsh r1, [r5, r1] + ldrsh r2, [r5, r2] + add r0, r7, #0x0 + bl FUN_02013EC4 + lsr r1, r6, #0x1f + lsr r2, r4, #0x1f + add r1, r6, r1 + add r2, r4, r2 + lsl r1, r1, #0xf + lsl r2, r2, #0xf + add r0, r7, #0x0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_02013ED8 + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [r7, #0xc] + str r0, [r7, #0x10] + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02013EE8 + ldr r1, [r5, #0x18] + add r0, r7, #0x0 + bl FUN_02013EFC + ldr r1, [r5, #0x14] + add r0, r7, #0x0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02013F04 + ldr r1, [r5, #0x4] + add r0, r7, #0x0 + add r1, #0x10 + bl FUN_02013F10 + ldr r0, [r5, #0x4] + mov r1, #0x0 + add r0, r0, #0x4 + blx FUN_020B1A14 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02013F14 + ldr r0, [r5, #0x8] + mov r1, #0x0 + add r0, r0, #0x4 + blx FUN_020B19C4 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02013F18 + ldrh r1, [r5, #0x1c] + add r0, r7, #0x0 + bl FUN_02013F1C + mov r1, #0x0 + add r0, r7, #0x0 + add r2, r1, #0x0 + bl FUN_02013F20 + add r0, r7, #0x0 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_02013F20 + ldrh r1, [r5, #0x10] + add r0, r7, #0x0 + bl FUN_02013F2C + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020142EC +FUN_020142EC: ; 0x020142EC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + ldr r0, _02014394 ; =FUN_020143DC + mov r1, #0x50 + mov r2, #0x0 + bl FUN_020061E8 + str r0, [sp, #0x4] + bl FUN_0201B6C8 + add r4, r0, #0x0 + cmp r5, #0x0 + beq _02014330 + cmp r6, #0x0 + bne _02014320 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020031FC + str r0, [sp, #0x0] + ldr r0, _02014398 ; =FUN_020144E0 + str r0, [r4, #0x4] + b _0201434A +_02014320: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020031FC + str r0, [sp, #0x0] + ldr r0, _0201439C ; =FUN_020144FC + str r0, [r4, #0x4] + b _0201434A +_02014330: + cmp r6, #0x0 + bne _02014340 + bl FUN_020222E8 + str r0, [sp, #0x0] + ldr r0, _020143A0 ; =FUN_020144B0 + str r0, [r4, #0x4] + b _0201434A +_02014340: + bl FUN_020222F8 + str r0, [sp, #0x0] + ldr r0, _020143A4 ; =FUN_020144C8 + str r0, [r4, #0x4] +_0201434A: + ldr r1, [sp, #0x0] + lsl r0, r7, #0x5 + str r0, [sp, #0x8] + add r0, r1, r0 + add r1, r4, #0x0 + add r1, #0xc + mov r2, #0x20 + blx MIi_CpuCopy16 + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x8] + mov r2, #0x20 + add r0, r1, r0 + add r1, r4, #0x0 + add r1, #0x2c + blx MIi_CpuCopy16 + ldr r0, [sp, #0x4] + mov r1, #0x1 + str r0, [r4, #0x0] + add r0, r4, #0x0 + str r5, [r4, #0x8] + add r0, #0x4c + strb r6, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x4d + strb r7, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x4e + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x4f + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02014394: .word FUN_020143DC +_02014398: .word FUN_020144E0 +_0201439C: .word FUN_020144FC +_020143A0: .word FUN_020144B0 +_020143A4: .word FUN_020144C8 + + thumb_func_start FUN_020143A8 +FUN_020143A8: ; 0x020143A8 + cmp r1, #0x0 + beq _020143B6 + cmp r1, #0x1 + beq _020143BE + cmp r1, #0x2 + beq _020143C6 + bx lr +_020143B6: + mov r1, #0x0 + add r0, #0x4e + strb r1, [r0, #0x0] + bx lr +_020143BE: + mov r1, #0x2 + add r0, #0x4e + strb r1, [r0, #0x0] + bx lr +_020143C6: + mov r1, #0x3 + add r0, #0x4e + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020143D0 +FUN_020143D0: ; 0x020143D0 + ldr r3, _020143D8 ; =FUN_0200621C + ldr r0, [r0, #0x0] + bx r3 + nop +_020143D8: .word FUN_0200621C + + thumb_func_start FUN_020143DC +FUN_020143DC: ; 0x020143DC + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x4e + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bhi _02014452 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020143F8: ; jump table (using 16-bit offset) + .short _02014400 - _020143F8 - 2; case 0 + .short _02014410 - _020143F8 - 2; case 1 + .short _02014452 - _020143F8 - 2; case 2 + .short _02014444 - _020143F8 - 2; case 3 +_02014400: + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x4f + strb r1, [r0, #0x0] + mov r0, #0x1 + add r4, #0x4e + strb r0, [r4, #0x0] + pop {r3-r5, pc} +_02014410: + add r0, r4, #0x0 + bl FUN_02014454 + cmp r0, #0x1 + bne _02014424 + add r1, r4, #0x0 + ldr r2, [r4, #0x4] + add r0, r4, #0x0 + add r1, #0x2c + blx r2 +_02014424: + add r0, r4, #0x0 + add r0, #0x4f + ldrb r0, [r0, #0x0] + add r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x4f + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x4f + ldrb r0, [r0, #0x0] + cmp r0, #0x20 + bne _02014452 + mov r0, #0x0 + add r4, #0x4f + strb r0, [r4, #0x0] + pop {r3-r5, pc} +_02014444: + ldr r2, [r4, #0x4] + add r0, r4, #0x0 + add r1, #0xc + blx r2 + add r0, r5, #0x0 + bl FUN_0200621C +_02014452: + pop {r3-r5, pc} + + thumb_func_start FUN_02014454 +FUN_02014454: ; 0x02014454 + push {r4-r5} + add r1, r0, #0x0 + add r1, #0x4f + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02014482 + mov r1, #0x1e + mov r4, #0x0 + mov r3, #0x1 + lsl r1, r1, #0xa +_02014468: + add r2, r3, #0x0 + lsl r2, r4 + tst r2, r1 + beq _02014474 + ldrh r2, [r0, #0xc] + strh r2, [r0, #0x2c] +_02014474: + add r4, r4, #0x1 + add r0, r0, #0x2 + cmp r4, #0x10 + blo _02014468 + mov r0, #0x1 + pop {r4-r5} + bx lr +_02014482: + cmp r1, #0x18 + bne _020144AA + mov r1, #0x1e + mov r5, #0x0 + add r4, r0, #0x0 + mov r3, #0x1 + lsl r1, r1, #0xa +_02014490: + add r2, r3, #0x0 + lsl r2, r5 + tst r2, r1 + beq _0201449C + ldrh r2, [r0, #0x2a] + strh r2, [r4, #0x2c] +_0201449C: + add r5, r5, #0x1 + add r4, r4, #0x2 + cmp r5, #0x10 + blo _02014490 + mov r0, #0x1 + pop {r4-r5} + bx lr +_020144AA: + mov r0, #0x0 + pop {r4-r5} + bx lr + + thumb_func_start FUN_020144B0 +FUN_020144B0: ; 0x020144B0 + push {r3, lr} + add r3, r0, #0x0 + add r3, #0x4d + ldrb r3, [r3, #0x0] + mov r0, #0x0 + mov r2, #0x20 + lsl r3, r3, #0x15 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020144C8 +FUN_020144C8: ; 0x020144C8 + push {r3, lr} + add r3, r0, #0x0 + add r3, #0x4d + ldrb r3, [r3, #0x0] + mov r0, #0x4 + mov r2, #0x20 + lsl r3, r3, #0x15 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020144E0 +FUN_020144E0: ; 0x020144E0 + push {r3, lr} + add r3, r0, #0x0 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [r3, #0x8] + add r3, #0x4d + ldrb r3, [r3, #0x0] + mov r2, #0x0 + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl FUN_02003054 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020144FC +FUN_020144FC: ; 0x020144FC + push {r3, lr} + add r3, r0, #0x0 + mov r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [r3, #0x8] + add r3, #0x4d + ldrb r3, [r3, #0x0] + mov r2, #0x1 + lsl r3, r3, #0x14 + lsr r3, r3, #0x10 + bl FUN_02003054 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02014518 +FUN_02014518: ; 0x02014518 + push {r3-r7, lr} + mov r1, #0x78 + add r7, r0, #0x0 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x78 + add r6, r0, #0x0 + blx MI_CpuFill8 + ldr r2, _02014560 ; =0x0000019E + mov r0, #0x0 + mov r1, #0x1a + add r3, r7, #0x0 + bl FUN_0200A86C + str r0, [r6, #0x0] + mov r4, #0x0 + add r5, r6, #0x0 +_0201453E: + mov r0, #0x16 + add r1, r7, #0x0 + bl FUN_020219F4 + str r0, [r5, #0x4] + ldr r0, [r6, #0x0] + ldr r2, [r5, #0x4] + add r1, r4, #0x0 + bl FUN_0200A8E0 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x1d + blt _0201453E + add r0, r6, #0x0 + pop {r3-r7, pc} + nop +_02014560: .word 0x0000019E + + thumb_func_start FUN_02014564 +FUN_02014564: ; 0x02014564 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r6, #0x0 + mov r4, #0x1c + add r5, #0x70 +_0201456E: + ldr r0, [r5, #0x4] + bl FUN_02021A20 + sub r5, r5, #0x4 + sub r4, r4, #0x1 + bpl _0201456E + ldr r0, [r6, #0x0] + bl FUN_0200A8B8 + add r0, r6, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + + thumb_func_start FUN_02014588 +FUN_02014588: ; 0x02014588 + lsl r1, r1, #0x2 + add r0, r0, r1 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02014590 +FUN_02014590: ; 0x02014590 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x9c + bl FUN_02016998 + add r1, r5, #0x0 + add r4, r0, #0x0 + bl FUN_020146F0 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020145A8 +FUN_020145A8: ; 0x020145A8 + push {r4, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x9b + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, #0x1 + bne _020145BE + bl FUN_020146C4 +_020145BE: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020145C8 +FUN_020145C8: ; 0x020145C8 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r2, [r4, #0x0] + add r5, r0, #0x0 + str r2, [r5, #0x7c] + add r2, r5, #0x0 + ldr r3, [r4, #0x4] + add r2, #0x80 + str r3, [r2, #0x0] + add r2, r5, #0x0 + ldrb r3, [r4, #0x10] + add r2, #0x98 + strb r3, [r2, #0x0] + add r2, r5, #0x0 + ldrb r3, [r4, #0x11] + add r2, #0x99 + strb r3, [r2, #0x0] + bl FUN_02014730 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02014754 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02014784 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02014814 + add r0, r5, #0x0 + add r0, #0x9b + ldrb r1, [r0, #0x0] + mov r0, #0xf + bic r1, r0 + mov r0, #0x1 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x9b + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x9b + ldrb r1, [r0, #0x0] + mov r0, #0xf0 + add r5, #0x9b + bic r1, r0 + mov r0, #0x80 + orr r0, r1 + strb r0, [r5, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02014630 +FUN_02014630: ; 0x02014630 + push {r4, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x9b + ldrb r2, [r1, #0x0] + mov r1, #0xf0 + bic r2, r1 + mov r1, #0x80 + orr r2, r1 + add r1, r4, #0x0 + add r1, #0x9b + strb r2, [r1, #0x0] + bl FUN_0201466C + cmp r0, #0x0 + bne _0201466A + add r1, r4, #0x0 + add r1, #0x9b + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + bne _0201466A + add r4, #0x9a + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _02014668 + mov r0, #0x3 + pop {r4, pc} +_02014668: + mov r0, #0x4 +_0201466A: + pop {r4, pc} + + thumb_func_start FUN_0201466C +FUN_0201466C: ; 0x0201466C + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x9b + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #0x1 + beq _02014680 + bl ErrorHandling +_02014680: + add r0, r4, #0x0 + add r0, #0x9a + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bne _02014690 + ldr r0, [r4, #0x0] + bl FUN_02022144 +_02014690: + add r1, r4, #0x0 + add r1, #0x9a + ldrb r2, [r1, #0x0] + mov r0, #0x0 + cmp r2, #0x3 + beq _020146AA + add r1, r4, #0x0 + mov r0, #0x38 + add r1, #0xc + mul r0, r2 + add r0, r1, r0 + bl FUN_02014930 +_020146AA: + cmp r0, #0x1 + bne _020146BE + add r4, #0x9a + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _020146BA + mov r0, #0x1 + pop {r4, pc} +_020146BA: + mov r0, #0x2 + pop {r4, pc} +_020146BE: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020146C4 +FUN_020146C4: ; 0x020146C4 + push {r4-r6, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_0202212C + add r5, r6, #0x0 + mov r4, #0x0 + add r5, #0xc +_020146D4: + add r0, r5, #0x0 + bl FUN_02014970 + add r4, r4, #0x1 + add r5, #0x38 + cmp r4, #0x2 + blt _020146D4 + add r0, r6, #0x0 + add r6, #0x84 + ldr r1, [r6, #0x0] + bl FUN_020146F0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020146F0 +FUN_020146F0: ; 0x020146F0 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x0 + mov r2, #0x9c + blx Call_FillMemWithValue + add r0, r5, #0x0 + add r0, #0x9b + ldrb r1, [r0, #0x0] + mov r0, #0xf + bic r1, r0 + add r0, r5, #0x0 + add r0, #0x9b + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x84 + str r4, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x3 + add r0, #0x9a + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x9b + ldrb r1, [r0, #0x0] + mov r0, #0xf0 + add r5, #0x9b + bic r1, r0 + mov r0, #0x80 + orr r0, r1 + strb r0, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_02014730 +FUN_02014730: ; 0x02014730 + push {r3, lr} + sub sp, #0x8 + add r3, r0, #0x0 + ldr r0, [r1, #0x8] + mov r1, #0x1 + str r0, [sp, #0x0] + add r0, r3, #0x0 + add r0, #0x84 + ldr r0, [r0, #0x0] + str r0, [sp, #0x4] + ldr r2, [r3, #0x7c] + add r3, #0x80 + ldr r3, [r3, #0x0] + mov r0, #0x54 + bl FUN_02014A3C + add sp, #0x8 + pop {r3, pc} + + thumb_func_start FUN_02014754 +FUN_02014754: ; 0x02014754 + push {r3, lr} + sub sp, #0x8 + add r3, r1, #0x0 + add r1, r0, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + cmp r1, #0x4 + bhs _02014768 + mov r2, #0x0 + b _0201476A +_02014768: + mov r2, #0x4 +_0201476A: + mov r1, #0x40 + str r1, [sp, #0x0] + add r0, #0x84 + ldr r0, [r0, #0x0] + mov r1, #0x0 + str r0, [sp, #0x4] + ldr r3, [r3, #0xc] + mov r0, #0x54 + lsl r3, r3, #0x5 + bl FUN_02014A8C + add sp, #0x8 + pop {r3, pc} + + thumb_func_start FUN_02014784 +FUN_02014784: ; 0x02014784 + push {r3-r7, lr} + sub sp, #0x30 + add r7, r0, #0x0 + mov r3, #0x0 + add r4, r7, #0x0 +_0201478E: + add r0, r4, #0x0 + add r3, r3, #0x1 + lsl r2, r3, #0xc + add r0, #0x88 + add r4, r4, #0x4 + str r2, [r0, #0x0] + cmp r3, #0x4 + blt _0201478E + ldr r0, [r7, #0x7c] + mov r5, #0x0 + str r0, [sp, #0x0] + add r0, r7, #0x0 + add r0, #0x80 + ldr r0, [r0, #0x0] + add r4, r7, #0x0 + str r0, [sp, #0x4] + mov r0, #0x54 + str r0, [sp, #0x8] + ldr r0, [r1, #0x8] + add r6, r5, #0x0 + str r0, [sp, #0x1c] + ldr r0, [r1, #0xc] + add r4, #0xc + str r0, [sp, #0x20] + add r0, r7, #0x0 + add r0, #0x88 + str r0, [sp, #0x24] + mov r0, #0x4 + str r0, [sp, #0x28] + add r0, r7, #0x0 + add r0, #0x98 + ldrb r1, [r0, #0x0] + add r0, sp, #0x20 + strb r1, [r0, #0xc] +_020147D2: + mov r1, #0x0 + mov r2, #0x2 + add r3, sp, #0x0 +_020147D8: + add r0, r5, r2 + str r0, [r3, #0xc] + add r1, r1, #0x1 + add r2, r2, #0x2 + add r3, r3, #0x4 + cmp r1, #0x4 + blt _020147D8 + add r0, r7, #0x0 + add r0, #0x99 + ldrb r0, [r0, #0x0] + add r2, r7, #0x0 + add r2, #0x84 + add r1, r0, r6 + add r0, sp, #0x20 + strb r1, [r0, #0xd] + ldr r0, [sp, #0x20] + add r1, sp, #0x0 + add r0, r0, r5 + str r0, [sp, #0x20] + ldr r2, [r2, #0x0] + add r0, r4, #0x0 + bl FUN_020148A8 + add r5, r5, #0x1 + add r6, r6, #0x4 + add r4, #0x38 + cmp r5, #0x2 + blt _020147D2 + add sp, #0x30 + pop {r3-r7, pc} + + thumb_func_start FUN_02014814 +FUN_02014814: ; 0x02014814 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r4, #0x0 +_02014820: + add r3, r4, #0x0 + add r3, #0x99 + ldrb r3, [r3, #0x0] + add r0, r0, #0x1 + lsl r3, r3, #0x3 + add r3, r3, r1 + strb r3, [r2, #0x4] + add r3, r4, #0x0 + add r3, #0x99 + ldrb r3, [r3, #0x0] + lsl r3, r3, #0x3 + add r3, r3, r1 + add r3, #0x20 + strb r3, [r2, #0x5] + add r3, r4, #0x0 + add r3, #0x98 + ldrb r3, [r3, #0x0] + add r1, #0x20 + lsl r3, r3, #0x3 + strb r3, [r2, #0x6] + add r3, r4, #0x0 + add r3, #0x98 + ldrb r3, [r3, #0x0] + lsl r3, r3, #0x3 + add r3, #0x30 + strb r3, [r2, #0x7] + add r2, r2, #0x4 + cmp r0, #0x2 + blt _02014820 + add r0, r4, #0x0 + add r0, #0x84 + ldr r0, [r0, #0x0] + ldr r2, _02014874 ; =FUN_02014878 + str r0, [sp, #0x0] + add r0, r4, #0x4 + mov r1, #0x2 + add r3, r4, #0x0 + bl FUN_020220C4 + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_02014874: .word FUN_02014878 + + thumb_func_start FUN_02014878 +FUN_02014878: ; 0x02014878 + push {r4, lr} + add r3, r2, #0x0 + add r3, #0x9b + ldrb r3, [r3, #0x0] + mov r4, #0xf0 + bic r3, r4 + lsl r4, r1, #0x18 + lsr r4, r4, #0x18 + lsl r4, r4, #0x1c + lsr r4, r4, #0x18 + orr r4, r3 + add r3, r2, #0x0 + add r3, #0x9b + strb r4, [r3, #0x0] + cmp r1, #0x0 + bne _020148A2 + add r2, #0x9a + strb r0, [r2, #0x0] + ldr r0, _020148A4 ; =0x000005E4 + bl FUN_020054C8 +_020148A2: + pop {r4, pc} + .balign 4 +_020148A4: .word 0x000005E4 + + thumb_func_start FUN_020148A8 +FUN_020148A8: ; 0x020148A8 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r1, #0x0 + str r2, [sp, #0x8] + str r0, [sp, #0x4] + ldr r1, [r5, #0x24] + ldr r2, [r5, #0x28] + add r0, #0x28 + bl FUN_020149FC + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x4] + ldr r6, [sp, #0x4] + str r1, [r0, #0x0] + ldr r1, [r5, #0x4] + ldr r4, [sp, #0x4] + str r1, [r0, #0x4] + add r0, r5, #0x0 + add r0, #0x2c + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r6, #0x18 + add r0, #0x34 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x2d + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r7, r5, #0x0 + add r0, #0x35 + strb r1, [r0, #0x0] + mov r0, #0x0 + str r0, [sp, #0xc] +_020148EA: + ldr r0, [sp, #0x8] + mov r2, #0x1 + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + ldr r1, [r7, #0xc] + add r3, r6, #0x0 + bl FUN_02006BDC + str r0, [r4, #0x8] + ldr r0, [r4, #0x18] + ldr r1, [r5, #0x1c] + bl FUN_02014BA4 + ldr r0, [r4, #0x18] + ldr r1, [r5, #0x20] + bl FUN_02014BC4 + ldr r0, [sp, #0xc] + add r6, r6, #0x4 + add r0, r0, #0x1 + add r7, r7, #0x4 + add r4, r4, #0x4 + str r0, [sp, #0xc] + cmp r0, #0x4 + blt _020148EA + ldr r0, [sp, #0x4] + bl FUN_020149D0 + ldr r0, [sp, #0x4] + mov r1, #0x0 + add r0, #0x36 + str r0, [sp, #0x4] + strb r1, [r0, #0x0] + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_02014930 +FUN_02014930: ; 0x02014930 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x28 + bl FUN_02014A10 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x36 + ldrb r0, [r0, #0x0] + cmp r0, r4 + beq _02014952 + add r0, r5, #0x0 + bl FUN_020149D0 + add r0, r5, #0x0 + add r0, #0x36 + strb r4, [r0, #0x0] +_02014952: + ldr r0, [r5, #0x2c] + sub r0, r0, #0x1 + cmp r4, r0 + bne _0201495E + mov r0, #0x1 + pop {r3-r5, pc} +_0201495E: + add r5, #0x28 + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0xc + bl FUN_02014A08 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02014970 +FUN_02014970: ; 0x02014970 + push {r4-r6, lr} + sub sp, #0x10 + add r6, r0, #0x0 + add r0, #0x35 + ldrb r0, [r0, #0x0] + ldr r1, [r6, #0x18] + add r3, r6, #0x0 + str r0, [sp, #0x0] + ldrh r0, [r1, #0x0] + mov r2, #0x0 + add r3, #0x34 + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + ldrh r0, [r1, #0x2] + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + str r2, [sp, #0xc] + ldr r1, [r6, #0x4] + ldrb r3, [r3, #0x0] + lsl r1, r1, #0x18 + ldr r0, [r6, #0x0] + lsr r1, r1, #0x18 + bl FUN_02018540 + ldr r1, [r6, #0x4] + ldr r0, [r6, #0x0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0201AC68 + mov r4, #0x0 + add r5, r6, #0x0 +_020149B4: + ldr r0, [r5, #0x8] + bl FUN_02016A18 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _020149B4 + add r0, r6, #0x0 + mov r1, #0x0 + mov r2, #0x38 + blx Call_FillMemWithValue + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_020149D0 +FUN_020149D0: ; 0x020149D0 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, #0x28 + bl FUN_02014A10 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x35 + ldrb r0, [r0, #0x0] + lsl r2, r2, #0x2 + add r2, r4, r2 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + add r4, #0x34 + ldrb r3, [r4, #0x0] + ldr r2, [r2, #0x18] + bl FUN_02014B58 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_020149FC +FUN_020149FC: ; 0x020149FC + str r1, [r0, #0x0] + str r2, [r0, #0x4] + mov r1, #0x0 + str r1, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_02014A08 +FUN_02014A08: ; 0x02014A08 + ldr r2, [r0, #0x8] + add r1, r2, r1 + str r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_02014A10 +FUN_02014A10: ; 0x02014A10 + push {r4-r5} + ldr r5, [r0, #0x4] + mov r2, #0x0 + cmp r5, #0x0 + bls _02014A34 + ldr r3, [r0, #0x0] + ldr r4, [r0, #0x8] +_02014A1E: + ldr r1, [r3, #0x0] + cmp r1, r4 + blt _02014A2A + add r0, r2, #0x0 + pop {r4-r5} + bx lr +_02014A2A: + ldr r1, [r0, #0x4] + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, r1 + blo _02014A1E +_02014A34: + sub r0, r5, #0x1 + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_02014A3C +FUN_02014A3C: ; 0x02014A3C + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + str r1, [sp, #0x4] + ldr r0, [sp, #0x24] + mov r1, #0x14 + add r5, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r2, r4, #0x0 + mov r1, #0x14 + mov r0, #0x0 +_02014A58: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _02014A58 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x4] + str r0, [sp, #0x0] + add r0, r7, #0x0 + mov r2, #0x1 + add r3, r4, #0x4 + bl FUN_02006BB0 + str r0, [r4, #0x8] + str r5, [r4, #0x0] + ldr r0, [sp, #0x20] + str r6, [r4, #0xc] + str r0, [r4, #0x10] + ldr r0, _02014A88 ; =FUN_02014AD4 + add r1, r4, #0x0 + mov r2, #0x80 + bl FUN_0200CA98 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02014A88: .word FUN_02014AD4 + + thumb_func_start FUN_02014A8C +FUN_02014A8C: ; 0x02014A8C + push {r3-r7, lr} + add r7, r0, #0x0 + str r1, [sp, #0x0] + ldr r0, [sp, #0x1c] + mov r1, #0x14 + add r5, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r2, r4, #0x0 + mov r1, #0x14 + mov r0, #0x0 +_02014AA6: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _02014AA6 + ldr r1, [sp, #0x0] + ldr r3, [sp, #0x1c] + add r0, r7, #0x0 + add r2, r4, #0x0 + bl FUN_02006C08 + str r0, [r4, #0x4] + str r5, [r4, #0x8] + ldr r0, [sp, #0x18] + str r6, [r4, #0xc] + str r0, [r4, #0x10] + ldr r0, _02014AD0 ; =FUN_02014B10 + add r1, r4, #0x0 + mov r2, #0x80 + bl FUN_0200CA98 + pop {r3-r7, pc} + .balign 4 +_02014AD0: .word FUN_02014B10 + + thumb_func_start FUN_02014AD4 +FUN_02014AD4: ; 0x02014AD4 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, [r4, #0x4] + add r5, r0, #0x0 + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + blx DC_FlushRange + ldr r3, [r4, #0x4] + ldr r0, [r4, #0x10] + str r0, [sp, #0x0] + ldr r1, [r4, #0xc] + ldr r2, [r3, #0x14] + lsl r1, r1, #0x18 + ldr r0, [r4, #0x0] + ldr r3, [r3, #0x10] + lsr r1, r1, #0x18 + bl FUN_02017E14 + add r0, r5, #0x0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x8] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02014B10 +FUN_02014B10: ; 0x02014B10 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x10] + ldr r0, [r0, #0xc] + blx DC_FlushRange + ldr r0, [r4, #0x8] + cmp r0, #0x0 + bne _02014B34 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0xc] + ldr r0, [r0, #0xc] + ldr r2, [r4, #0x10] + blx GX_LoadBGPltt + b _02014B44 +_02014B34: + cmp r0, #0x4 + bne _02014B44 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0xc] + ldr r0, [r0, #0xc] + ldr r2, [r4, #0x10] + blx GXS_LoadBGPltt +_02014B44: + add r0, r5, #0x0 + bl FUN_0200CAB4 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + + thumb_func_start FUN_02014B58 +FUN_02014B58: ; 0x02014B58 + push {r3-r6, lr} + sub sp, #0x1c + add r4, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + ldrh r6, [r1, #0x0] + ldrh r3, [r1, #0x2] + lsl r2, r2, #0x18 + lsl r6, r6, #0x15 + lsr r6, r6, #0x18 + lsl r3, r3, #0x15 + str r6, [sp, #0x0] + lsr r3, r3, #0x18 + str r3, [sp, #0x4] + add r1, #0xc + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r6, [sp, #0x14] + str r3, [sp, #0x18] + ldr r3, [sp, #0x30] + lsl r1, r4, #0x18 + lsl r3, r3, #0x18 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + add r5, r0, #0x0 + bl FUN_02018170 + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_0201AC68 + add sp, #0x1c + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02014BA4 +FUN_02014BA4: ; 0x02014BA4 + push {r3-r4} + ldr r2, [r0, #0x8] + add r0, #0xc + lsr r4, r2, #0x1 + mov r3, #0x0 + cmp r4, #0x0 + ble _02014BC0 +_02014BB2: + ldrh r2, [r0, #0x0] + add r3, r3, #0x1 + add r2, r2, r1 + strh r2, [r0, #0x0] + add r0, r0, #0x2 + cmp r3, r4 + blt _02014BB2 +_02014BC0: + pop {r3-r4} + bx lr + + thumb_func_start FUN_02014BC4 +FUN_02014BC4: ; 0x02014BC4 + push {r4-r5} + ldr r2, [r0, #0x8] + add r0, #0xc + lsr r3, r2, #0x1 + mov r2, #0x0 + cmp r3, #0x0 + ble _02014BEA + ldr r4, _02014BF0 ; =0x00000FFF + lsl r1, r1, #0xc +_02014BD6: + ldrh r5, [r0, #0x0] + add r2, r2, #0x1 + and r5, r4 + strh r5, [r0, #0x0] + ldrh r5, [r0, #0x0] + orr r5, r1 + strh r5, [r0, #0x0] + add r0, r0, #0x2 + cmp r2, r3 + blt _02014BD6 +_02014BEA: + pop {r4-r5} + bx lr + nop +_02014BF0: .word 0x00000FFF + + thumb_func_start FUN_02014BF4 +FUN_02014BF4: ; 0x02014BF4 + push {r3-r7, lr} + add r7, r1, #0x0 + mov r1, #0xc + add r5, r0, #0x0 + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + strb r6, [r4, #0x8] + mov r0, #0x1d + strb r7, [r4, #0x9] + lsl r0, r0, #0x4 + add r6, r7, #0x0 + mul r6, r0 + add r0, r5, #0x0 + add r1, r6, #0x0 + str r5, [r4, #0x4] + bl FUN_02016998 + mov r1, #0x0 + add r2, r6, #0x0 + str r0, [r4, #0x0] + blx MI_CpuFill8 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02014C28 +FUN_02014C28: ; 0x02014C28 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02014C3C +FUN_02014C3C: ; 0x02014C3C + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x19 + blo _02014C48 + bl ErrorHandling +_02014C48: + ldr r0, _02014C50 ; =0x020ED64C + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_02014C50: .word 0x020ED64C + + thumb_func_start FUN_02014C54 +FUN_02014C54: ; 0x02014C54 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + str r3, [sp, #0x4] + add r0, r2, #0x0 + ldrh r6, [r0, #0x0] + ldrh r0, [r0, #0x2] + add r7, r1, #0x0 + ldrb r1, [r5, #0x9] + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + str r2, [sp, #0x0] + cmp r0, r1 + blo _02014C74 + bl ErrorHandling +_02014C74: + ldr r0, [sp, #0x4] + mov r1, #0x1d + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, #0x0] + mul r4, r1 + add r0, r0, r4 + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _02014C8C + bl ErrorHandling +_02014C8C: + ldr r0, [r5, #0x0] + mov r2, #0x1d + add r0, r0, r4 + mov r1, #0x0 + lsl r2, r2, #0x4 + blx MI_CpuFill8 + ldr r0, [r5, #0x0] + mov r1, #0x1 + add r0, r0, r4 + str r1, [r0, #0x10] + ldr r0, [r5, #0x0] + cmp r6, #0x86 + str r7, [r0, r4] + blt _02014CAE + mov r6, #0x0 + str r6, [sp, #0x8] +_02014CAE: + ldr r0, [r5, #0x0] + add r0, r0, r4 + str r6, [r0, #0x14] + ldrb r0, [r5, #0x8] + cmp r0, #0x0 + beq _02014CC0 + ldr r0, [sp, #0x0] + ldrb r2, [r0, #0x4] + b _02014CC2 +_02014CC0: + mov r2, #0x0 +_02014CC2: + ldr r0, [r5, #0x0] + add r1, r0, r4 + mov r0, #0x73 + lsl r0, r0, #0x2 + strb r2, [r1, r0] + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + add r1, r1, r4 + ldr r1, [r1, #0x14] + mov r0, #0x5e + bl FUN_02006528 + ldr r1, [r5, #0x0] + mov r2, #0x0 + add r1, r1, r4 + str r0, [r1, #0x8] + ldr r0, [r5, #0x0] + mov r6, #0x1c + add r1, r0, r4 + ldr r0, [r1, #0x8] + str r0, [r1, #0xc] + ldr r0, [r5, #0x0] + add r0, r0, r4 + str r2, [r0, #0x1c] + ldr r0, [r5, #0x0] + add r0, r0, r4 + str r2, [r0, #0x20] + ldr r0, [r5, #0x0] + add r1, r0, r4 + ldr r0, _02014D74 ; =0x000001CD + strb r2, [r1, r0] + ldr r1, [r5, #0x0] + add r3, r1, r4 + add r1, r0, #0x1 + strb r6, [r3, r1] + ldr r1, [r5, #0x0] + add r0, r0, #0x2 + add r1, r1, r4 + strb r2, [r1, r0] + ldr r1, [r5, #0x0] + ldr r0, _02014D78 ; =FUN_02014DD8 + add r1, r1, r4 + bl FUN_0200CA44 + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x4] + ldr r0, [r5, #0x0] + add r1, r0, r4 + ldr r0, [sp, #0x8] + str r0, [r1, #0x54] + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_0200782C + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x58] + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_0200782C + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x5c] + ldr r1, [r5, #0x0] + mov r0, #0x0 + add r1, r1, r4 + str r0, [r1, #0x60] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x64] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x68] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x6c] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x70] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x74] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x78] + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02014D74: .word 0x000001CD +_02014D78: .word FUN_02014DD8 + + thumb_func_start FUN_02014D7C +FUN_02014D7C: ; 0x02014D7C + push {r3-r5, lr} + add r5, r0, #0x0 + ldrb r0, [r5, #0x9] + add r4, r1, #0x0 + cmp r4, r0 + blo _02014D8C + bl ErrorHandling +_02014D8C: + mov r0, #0x1d + lsl r0, r0, #0x4 + ldr r1, [r5, #0x0] + mul r0, r4 + add r0, r1, r0 + ldr r0, [r0, #0x20] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02014D9C +FUN_02014D9C: ; 0x02014D9C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x1d + lsl r0, r0, #0x4 + add r4, r1, #0x0 + mul r4, r0 + ldr r0, [r5, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _02014DD6 + bl FUN_0200CAB4 + ldr r1, [r5, #0x0] + mov r0, #0x0 + add r1, r1, r4 + str r0, [r1, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x1 + add r1, r1, r4 + str r2, [r1, #0x20] + ldr r1, [r5, #0x0] + add r1, r1, r4 + str r0, [r1, #0x10] + ldr r0, [r5, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x8] + bl FUN_02016A18 +_02014DD6: + pop {r3-r5, pc} + + thumb_func_start FUN_02014DD8 +FUN_02014DD8: ; 0x02014DD8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x54] + cmp r0, #0x0 + bne _02014DEC + add r0, r4, #0x0 + bl FUN_02014E10 + b _02014DF0 +_02014DEC: + sub r0, r0, #0x1 + str r0, [r4, #0x54] +_02014DF0: + ldr r0, [r4, #0x1c] + cmp r0, #0x0 + beq _02014E0E + mov r0, #0x1 + str r0, [r4, #0x20] + mov r0, #0x0 + str r0, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_0200CAB4 + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x8] + bl FUN_02016A18 +_02014E0E: + pop {r3-r5, pc} + + thumb_func_start FUN_02014E10 +FUN_02014E10: ; 0x02014E10 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r6, #0x0 + str r6, [r5, #0x18] + add r7, r5, #0x0 + str r6, [r5, #0x44] + add r4, r6, #0x0 + add r7, #0x7c +_02014E20: + mov r0, #0x54 + add r1, r4, #0x0 + mul r1, r0 + add r0, r7, r1 + ldr r1, [r7, r1] + cmp r1, #0x0 + beq _02014E4E + add r1, r0, #0x0 + add r1, #0x2d + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02014E40 + ldr r2, [r0, #0x50] + add r1, r5, #0x0 + blx r2 + b _02014E54 +_02014E40: + add r1, r0, #0x0 + add r1, #0x2d + ldrb r1, [r1, #0x0] + add r0, #0x2d + sub r1, r1, #0x1 + strb r1, [r0, #0x0] + b _02014E54 +_02014E4E: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_02014E54: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x4 + blo _02014E20 + cmp r6, #0x4 + bne _02014E68 + ldr r0, _02014EFC ; =0x000001CD + mov r1, #0x0 + strb r1, [r5, r0] +_02014E68: + ldr r0, _02014EFC ; =0x000001CD + ldrb r1, [r5, r0] + cmp r1, #0x0 + beq _02014E7E + add r0, r5, #0x0 + bl FUN_020156E8 + add r0, r5, #0x0 + bl FUN_02015730 + pop {r3-r7, pc} +_02014E7E: + add r0, r0, #0x2 + ldrb r0, [r5, r0] + cmp r0, #0x0 + beq _02014E96 + ldr r0, [r5, #0x0] + bl FUN_02007F20 + cmp r0, #0x0 + bne _02014EF8 + ldr r0, _02014F00 ; =0x000001CF + mov r1, #0x0 + strb r1, [r5, r0] +_02014E96: + add r6, r5, #0x0 + add r4, r5, #0x0 + ldr r7, _02014F04 ; =0x020ED6A4 + add r6, #0xc + add r4, #0x44 +_02014EA0: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x0] + cmp r0, #0x22 + blo _02014EB2 + bl ErrorHandling +_02014EB2: + ldr r1, [r5, #0xc] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + lsl r1, r1, #0x2 + ldr r1, [r7, r1] + blx r1 + ldr r0, [r5, #0x1c] + cmp r0, #0x0 + bne _02014EF8 + ldr r0, [r6, #0x0] + add r0, r0, #0x4 + str r0, [r6, #0x0] + ldr r0, [r5, #0x18] + cmp r0, #0x0 + bne _02014EF8 + ldr r0, _02014EFC ; =0x000001CD + ldrb r0, [r5, r0] + cmp r0, #0x0 + beq _02014EE6 + add r0, r5, #0x0 + bl FUN_020156E8 + add r0, r5, #0x0 + bl FUN_02015730 + pop {r3-r7, pc} +_02014EE6: + mov r0, #0x1 + ldr r1, [r5, #0x44] + lsl r0, r0, #0x8 + cmp r1, r0 + blt _02014EA0 + bl ErrorHandling + mov r0, #0x1 + str r0, [r5, #0x1c] +_02014EF8: + pop {r3-r7, pc} + nop +_02014EFC: .word 0x000001CD +_02014F00: .word 0x000001CF +_02014F04: .word 0x020ED6A4 + + thumb_func_start FUN_02014F08 +FUN_02014F08: ; 0x02014F08 + push {r4, lr} + lsl r1, r1, #0x2 + ldr r4, [r0, r1] + cmp r2, #0x1 + beq _02014F16 + bl ErrorHandling +_02014F16: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02014F1C +FUN_02014F1C: ; 0x02014F1C + ldr r3, _02014F24 ; =FUN_02014F08 + add r2, r1, #0x0 + mov r1, #0x0 + bx r3 + .balign 4 +_02014F24: .word FUN_02014F08 + + thumb_func_start FUN_02014F28 +FUN_02014F28: ; 0x02014F28 + ldr r3, _02014F30 ; =0x02014F1D + mov r1, #0x1 + bx r3 + nop +_02014F30: .word 0x02014F1D + + thumb_func_start FUN_02014F34 +FUN_02014F34: ; 0x02014F34 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r3, #0x0 + add r0, #0x7c + mov r2, #0x54 +_02014F3E: + add r1, r3, #0x0 + mul r1, r2 + add r4, r0, r1 + ldr r1, [r0, r1] + cmp r1, #0x0 + bne _02014F68 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x54 + blx MI_CpuFill8 + mov r0, #0x1 + str r0, [r4, #0x0] + mov r0, #0xc + add r1, r5, #0x0 + mul r1, r0 + ldr r0, _02014F7C ; =0x020ED668 + ldr r0, [r0, r1] + str r0, [r4, #0x50] + add r0, r4, #0x0 + pop {r3-r5, pc} +_02014F68: + add r1, r3, #0x1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x4 + blo _02014F3E + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02014F7C: .word 0x020ED668 + + thumb_func_start FUN_02014F80 +FUN_02014F80: ; 0x02014F80 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, [r0, #0xc] + add r1, r1, #0x4 + str r1, [r0, #0xc] + add r0, r1, #0x0 + bl FUN_02014F28 + str r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02014F94 +FUN_02014F94: ; 0x02014F94 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, [r0, #0xc] + add r1, r1, #0x4 + str r1, [r0, #0xc] + add r0, r1, #0x0 + bl FUN_02014F28 + strb r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02014FA8 +FUN_02014FA8: ; 0x02014FA8 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, [r0, #0xc] + add r1, r1, #0x4 + str r1, [r0, #0xc] + add r0, r1, #0x0 + bl FUN_02014F28 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x0] + cmp r0, #0x8 + blo _02014FC4 + bl ErrorHandling +_02014FC4: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02014FC8 +FUN_02014FC8: ; 0x02014FC8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02014FA8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02014FA8 + pop {r3-r5, pc} + + thumb_func_start FUN_02014FDC +FUN_02014FDC: ; 0x02014FDC + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02014FA8 + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x12 + bne _0201501C + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x2 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x2] + add r1, r6, #0x0 + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02014F80 + add sp, #0x4 + pop {r3-r6, pc} +_0201501C: + cmp r0, #0x13 + bne _02015048 + add r1, sp, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x2 + add r2, #0x1 + bl FUN_02014FC8 + add r0, sp, #0x0 + ldrb r1, [r0, #0x2] + add sp, #0x4 + lsl r1, r1, #0x2 + add r1, r5, r1 + ldr r1, [r1, #0x24] + str r1, [r4, #0x0] + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [r6, #0x0] + pop {r3-r6, pc} +_02015048: + bl ErrorHandling + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_02015050 +FUN_02015050: ; 0x02015050 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02014FA8 + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x1 + bl FUN_02014F94 + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + cmp r0, #0x12 + bne _02015082 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02014F80 + b _020150A2 +_02015082: + cmp r0, #0x13 + bne _0201509E + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x3] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [r4, #0x0] + b _020150A2 +_0201509E: + bl ErrorHandling +_020150A2: + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x12 + bne _020150B6 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02014F80 + add sp, #0x4 + pop {r3-r6, pc} +_020150B6: + cmp r0, #0x13 + bne _020150D4 + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x2 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x2] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [r6, #0x0] + pop {r3-r6, pc} +_020150D4: + bl ErrorHandling + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_020150DC +FUN_020150DC: ; 0x020150DC + push {r3-r7, lr} + sub sp, #0x8 + add r4, r2, #0x0 + add r2, sp, #0x0 + add r2, #0x3 + add r5, r0, #0x0 + add r6, r3, #0x0 + bl FUN_02014FC8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x3] + add r1, sp, #0x0 + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r7, [r0, #0x24] + add r0, r5, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x14 + bne _02015112 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02014F80 + b _02015132 +_02015112: + cmp r0, #0x15 + bne _0201512E + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x2 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [r6, #0x0] + b _02015132 +_0201512E: + bl ErrorHandling +_02015132: + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x14 + bne _0201514C + add r0, r5, #0x0 + add r1, sp, #0x4 + bl FUN_02014F80 + b _0201516C +_0201514C: + cmp r0, #0x15 + bne _02015168 + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x1 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x4] + b _0201516C +_02015168: + bl ErrorHandling +_0201516C: + ldr r0, [sp, #0x4] + add r0, r7, r0 + lsr r2, r0, #0x1f + lsl r1, r0, #0x10 + sub r1, r1, r2 + mov r0, #0x10 + ror r1, r0 + add r0, r2, r1 + str r0, [r4, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02015184 +FUN_02015184: ; 0x02015184 + ldr r2, [r0, #0x0] + ldr r0, [r1, #0x0] + sub r0, r2, r0 + bpl _02015190 + mov r0, #0xf + bx lr +_02015190: + cmp r0, #0x0 + ble _02015198 + mov r0, #0x10 + bx lr +_02015198: + mov r0, #0x11 + bx lr + + thumb_func_start FUN_0201519C +FUN_0201519C: ; 0x0201519C + add r2, r0, #0x0 + ldr r0, [r2, #0x0] + ldr r2, [r2, #0x74] + mov r1, #0x1 + neg r3, r2 + asr r2, r3, #0x2 + lsr r2, r2, #0x1d + add r2, r3, r2 + ldr r3, _020151B4 ; =FUN_020079E0 + asr r2, r2, #0x3 + bx r3 + nop +_020151B4: .word FUN_020079E0 + + thumb_func_start FUN_020151B8 +FUN_020151B8: ; 0x020151B8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020151D0 + mov r0, #0x1 + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + pop {r4, pc} + + thumb_func_start FUN_020151C8 +FUN_020151C8: ; 0x020151C8 + mov r1, #0x1 + str r1, [r0, #0x18] + bx lr + .balign 4 + + thumb_func_start FUN_020151D0 +FUN_020151D0: ; 0x020151D0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r2, [r4, #0x58] + mov r1, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x0] + ldr r2, [r4, #0x5c] + mov r1, #0x1 + bl FUN_02007558 + ldr r0, [r4, #0x0] + mov r1, #0x9 + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x0] + mov r1, #0xa + mov r2, #0x0 + bl FUN_02007558 + mov r1, #0xc + add r2, r1, #0x0 + ldr r0, [r4, #0x0] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0x0 + ldr r0, [r4, #0x0] + add r2, #0xf3 + bl FUN_02007558 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02015218 +FUN_02015218: ; 0x02015218 + push {r3-r4, lr} + sub sp, #0x4 + add r1, sp, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + add r4, r0, #0x0 + bl FUN_02014FC8 + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + ldrb r0, [r0, #0x1] + lsl r1, r1, #0x2 + add r1, r4, r1 + lsl r0, r0, #0x2 + ldr r1, [r1, #0x24] + add r0, r4, r0 + str r1, [r0, #0x24] + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02015240 +FUN_02015240: ; 0x02015240 + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_02014FDC + ldr r1, [sp, #0x8] + ldr r0, [sp, #0x4] + add r1, r1, r0 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x2 + add r0, r4, r0 + str r1, [r0, #0x24] + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_02015264 +FUN_02015264: ; 0x02015264 + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_02014FDC + ldr r1, [sp, #0x8] + ldr r0, [sp, #0x4] + add r2, r1, #0x0 + mul r2, r0 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x2 + add r0, r4, r0 + str r2, [r0, #0x24] + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201528C +FUN_0201528C: ; 0x0201528C + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_02015050 + ldr r1, [sp, #0x8] + ldr r0, [sp, #0x4] + sub r1, r1, r0 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x2 + add r0, r4, r0 + str r1, [r0, #0x24] + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_020152B0 +FUN_020152B0: ; 0x020152B0 + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_02015050 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + blx _s32_div_f + add r1, sp, #0x0 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x2 + add r1, r4, r1 + str r0, [r1, #0x24] + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_020152D8 +FUN_020152D8: ; 0x020152D8 + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_02015050 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + blx _s32_div_f + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x2 + add r0, r4, r0 + str r1, [r0, #0x24] + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02015300 +FUN_02015300: ; 0x02015300 + push {r3-r5, lr} + sub sp, #0x10 + add r1, sp, #0x0 + add r5, r0, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x14 + bne _02015334 + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x3] + add r1, sp, #0x8 + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_02014F80 + b _02015362 +_02015334: + cmp r0, #0x15 + bne _0201535E + add r1, sp, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3 + add r2, #0x2 + bl FUN_02014FC8 + add r0, sp, #0x0 + ldrb r1, [r0, #0x3] + lsl r1, r1, #0x2 + add r1, r5, r1 + ldr r1, [r1, #0x24] + str r1, [sp, #0xc] + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x8] + b _02015362 +_0201535E: + bl ErrorHandling +_02015362: + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x1 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + cmp r0, #0x11 + bls _02015378 + bl ErrorHandling +_02015378: + add r0, sp, #0xc + add r1, sp, #0x8 + bl FUN_02015184 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x14 + bne _020153A6 + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3 + bl FUN_02014FA8 + add r0, r5, #0x0 + add r1, sp, #0x4 + bl FUN_02014F80 + b _020153CA +_020153A6: + cmp r0, #0x15 + bne _020153C6 + add r1, sp, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3 + add r2, #0x2 + bl FUN_02014FC8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x4] + b _020153CA +_020153C6: + bl ErrorHandling +_020153CA: + add r0, sp, #0x0 + ldrb r1, [r0, #0x1] + cmp r1, r4 + bne _020153DC + ldrb r0, [r0, #0x3] + ldr r1, [sp, #0x4] + lsl r0, r0, #0x2 + add r0, r5, r0 + str r1, [r0, #0x24] +_020153DC: + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_020153E0 +FUN_020153E0: ; 0x020153E0 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r1, sp, #0x0 + bl FUN_02014FA8 + ldr r0, [r4, #0xc] + add r0, r0, #0x4 + str r0, [r4, #0xc] + bl FUN_02014F28 + add r1, sp, #0x0 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x2 + add r1, r4, r1 + str r0, [r1, #0x24] + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02015404 +FUN_02015404: ; 0x02015404 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x50] + cmp r0, #0x0 + beq _02015412 + bl ErrorHandling +_02015412: + ldr r0, [r4, #0xc] + add r0, r0, #0x4 + str r0, [r4, #0xc] + str r0, [r4, #0x50] + ldr r0, [r4, #0xc] + bl FUN_02014F28 + str r0, [r4, #0x48] + mov r0, #0x0 + str r0, [r4, #0x4c] + pop {r4, pc} + + thumb_func_start FUN_02015428 +FUN_02015428: ; 0x02015428 + ldr r1, [r0, #0x4c] + add r2, r1, #0x1 + str r2, [r0, #0x4c] + ldr r1, [r0, #0x48] + cmp r2, r1 + blt _0201543E + mov r1, #0x0 + str r1, [r0, #0x50] + str r1, [r0, #0x4c] + str r1, [r0, #0x48] + bx lr +_0201543E: + ldr r1, [r0, #0x50] + str r1, [r0, #0xc] + bx lr + + thumb_func_start FUN_02015444 +FUN_02015444: ; 0x02015444 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r1, sp, #0x4 + bl FUN_02014F80 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02014FA8 + add r2, sp, #0x0 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r1, [sp, #0x4] + lsl r2, r2, #0x2 + add r2, r4, r2 + ldr r2, [r2, #0x24] + bl FUN_02007558 + add sp, #0x8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02015470 +FUN_02015470: ; 0x02015470 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r1, sp, #0x4 + bl FUN_02014F80 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02014FA8 + add r2, sp, #0x0 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r1, [sp, #0x4] + lsl r2, r2, #0x2 + add r2, r4, r2 + ldr r2, [r2, #0x24] + bl FUN_020079E0 + add sp, #0x8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201549C +FUN_0201549C: ; 0x0201549C + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x8 + add r4, r0, #0x0 + bl FUN_02014F80 + add r1, sp, #0x0 + add r0, r4, #0x0 + add r1, #0x1 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + cmp r0, #0x14 + bne _020154C4 + add r0, r4, #0x0 + add r1, sp, #0x4 + bl FUN_02014F80 + b _020154E4 +_020154C4: + cmp r0, #0x15 + bne _020154E0 + add r1, sp, #0x0 + add r0, r4, #0x0 + add r1, #0x2 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x4] + b _020154E4 +_020154E0: + bl ErrorHandling +_020154E4: + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x16 + bne _02015502 + ldr r0, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x4] + bl FUN_02007558 + add sp, #0xc + pop {r3-r4, pc} +_02015502: + cmp r0, #0x17 + bne _02015514 + ldr r0, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x4] + bl FUN_020079E0 + add sp, #0xc + pop {r3-r4, pc} +_02015514: + bl ErrorHandling + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0201551C +FUN_0201551C: ; 0x0201551C + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_020150DC + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x4] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _0201554C ; =0x020FFA38 + ldrsh r0, [r0, r1] + mul r0, r2 + asr r1, r0, #0xc + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x2 + add r0, r4, r0 + str r1, [r0, #0x24] + add sp, #0xc + pop {r3-r4, pc} + nop +_0201554C: .word 0x020FFA38 + + thumb_func_start FUN_02015550 +FUN_02015550: ; 0x02015550 + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_020150DC + ldr r1, [sp, #0x8] + ldr r0, [sp, #0x4] + asr r1, r1, #0x4 + lsl r1, r1, #0x1 + add r1, r1, #0x1 + lsl r2, r1, #0x1 + ldr r1, _02015584 ; =0x020FFA38 + ldrsh r1, [r1, r2] + mul r1, r0 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + asr r1, r1, #0xc + lsl r0, r0, #0x2 + add r0, r4, r0 + str r1, [r0, #0x24] + add sp, #0xc + pop {r3-r4, pc} + nop +_02015584: .word 0x020FFA38 + + thumb_func_start FUN_02015588 +FUN_02015588: ; 0x02015588 + push {r3-r4, lr} + sub sp, #0x4 + add r1, sp, #0x0 + add r4, r0, #0x0 + add r1, #0x1 + bl FUN_02014FA8 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + cmp r1, #0x8 + bne _020155B4 + ldrb r0, [r0, #0x1] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + str r0, [r4, #0x60] + pop {r3-r4, pc} +_020155B4: + cmp r1, #0x9 + bne _020155C6 + ldrb r0, [r0, #0x1] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + str r0, [r4, #0x64] + pop {r3-r4, pc} +_020155C6: + bl ErrorHandling + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_020155D0 +FUN_020155D0: ; 0x020155D0 + push {r3-r4, lr} + sub sp, #0x4 + add r1, sp, #0x0 + add r4, r0, #0x0 + add r1, #0x1 + bl FUN_02014FA8 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + cmp r1, #0x8 + bne _02015600 + ldrb r0, [r0, #0x1] + ldr r1, [r4, #0x60] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + add r0, r1, r0 + str r0, [r4, #0x60] + pop {r3-r4, pc} +_02015600: + cmp r1, #0x9 + bne _02015616 + ldrb r0, [r0, #0x1] + ldr r1, [r4, #0x64] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + add r0, r1, r0 + str r0, [r4, #0x64] + pop {r3-r4, pc} +_02015616: + bl ErrorHandling + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02015620 +FUN_02015620: ; 0x02015620 + push {r3-r5, lr} + sub sp, #0x8 + add r1, sp, #0x0 + add r1, #0x3 + add r5, r0, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x3] + cmp r0, #0x8 + bne _0201563C + add r4, r5, #0x0 + add r4, #0x60 + b _0201567C +_0201563C: + cmp r0, #0x9 + bne _02015646 + add r4, r5, #0x0 + add r4, #0x64 + b _0201567C +_02015646: + cmp r0, #0xa + bne _02015650 + add r4, r5, #0x0 + add r4, #0x68 + b _0201567C +_02015650: + cmp r0, #0xb + bne _0201565A + add r4, r5, #0x0 + add r4, #0x6c + b _0201567C +_0201565A: + cmp r0, #0xc + bne _02015664 + add r4, r5, #0x0 + add r4, #0x70 + b _0201567C +_02015664: + cmp r0, #0xd + bne _0201566E + add r4, r5, #0x0 + add r4, #0x74 + b _0201567C +_0201566E: + cmp r0, #0xe + bne _02015678 + add r4, r5, #0x0 + add r4, #0x78 + b _0201567C +_02015678: + bl ErrorHandling +_0201567C: + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x1 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + cmp r0, #0x14 + bne _02015698 + add r0, r5, #0x0 + add r1, sp, #0x4 + bl FUN_02014F80 + b _020156B8 +_02015698: + cmp r0, #0x15 + bne _020156B4 + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x2 + bl FUN_02014FA8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x4] + b _020156B8 +_020156B4: + bl ErrorHandling +_020156B8: + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02014F94 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x16 + bne _020156D0 + ldr r0, [sp, #0x4] + add sp, #0x8 + str r0, [r4, #0x0] + pop {r3-r5, pc} +_020156D0: + cmp r0, #0x17 + bne _020156E0 + ldr r0, [sp, #0x4] + ldr r1, [r4, #0x0] + add sp, #0x8 + add r0, r1, r0 + str r0, [r4, #0x0] + pop {r3-r5, pc} +_020156E0: + bl ErrorHandling + add sp, #0x8 + pop {r3-r5, pc} + + thumb_func_start FUN_020156E8 +FUN_020156E8: ; 0x020156E8 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r0, #0x73 + lsl r0, r0, #0x2 + ldrb r0, [r4, r0] + cmp r0, #0x0 + ldr r0, [r4, #0x0] + beq _0201570A + ldr r3, [r4, #0x60] + ldr r2, [r4, #0x68] + ldr r5, [r4, #0x58] + add r2, r3, r2 + mov r1, #0x0 + sub r2, r5, r2 + bl FUN_02007558 + b _0201571A +_0201570A: + ldr r3, [r4, #0x58] + ldr r2, [r4, #0x60] + ldr r5, [r4, #0x68] + add r2, r3, r2 + mov r1, #0x0 + add r2, r5, r2 + bl FUN_02007558 +_0201571A: + ldr r3, [r4, #0x5c] + ldr r2, [r4, #0x64] + ldr r5, [r4, #0x6c] + add r2, r3, r2 + ldr r0, [r4, #0x0] + mov r1, #0x1 + add r2, r5, r2 + bl FUN_02007558 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02015730 +FUN_02015730: ; 0x02015730 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0xc + add r2, r1, #0x0 + ldr r3, [r4, #0x70] + add r2, #0xf4 + ldr r0, [r4, #0x0] + add r2, r3, r2 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0x0 + ldr r3, [r4, #0x74] + add r2, #0xf3 + ldr r0, [r4, #0x0] + add r2, r3, r2 + bl FUN_02007558 + ldr r2, [r4, #0x78] + ldr r0, [r4, #0x0] + lsl r2, r2, #0x10 + mov r1, #0x9 + lsr r2, r2, #0x10 + bl FUN_02007558 + ldr r0, _02015794 ; =0x000001CE + ldrb r0, [r4, r0] + cmp r0, #0x1b + bne _02015778 + ldr r0, [r4, #0x74] + cmp r0, #0x0 + bge _02015792 + add r0, r4, #0x0 + bl FUN_0201519C + pop {r4, pc} +_02015778: + cmp r0, #0x1d + bne _0201578A + ldr r0, [r4, #0x74] + cmp r0, #0x0 + beq _02015792 + add r0, r4, #0x0 + bl FUN_0201519C + pop {r4, pc} +_0201578A: + cmp r0, #0x1c + beq _02015792 + bl ErrorHandling +_02015792: + pop {r4, pc} + .balign 4 +_02015794: .word 0x000001CE + + thumb_func_start FUN_02015798 +FUN_02015798: ; 0x02015798 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r1, sp, #0x0 + bl FUN_02014FA8 + ldr r0, [r4, #0xc] + add r0, r0, #0x4 + str r0, [r4, #0xc] + bl FUN_02014F28 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x8 + beq _020157BA + cmp r0, #0xa + bne _020157CA +_020157BA: + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + str r0, [r4, #0x68] + pop {r3-r4, pc} +_020157CA: + cmp r0, #0x9 + beq _020157D2 + cmp r0, #0xb + bne _020157E2 +_020157D2: + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + add sp, #0x4 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x24] + str r0, [r4, #0x6c] + pop {r3-r4, pc} +_020157E2: + bl ErrorHandling + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_020157EC +FUN_020157EC: ; 0x020157EC + push {r4, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x54 + bl FUN_02014F80 + mov r0, #0x1 + str r0, [r4, #0x18] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02015800 +FUN_02015800: ; 0x02015800 + push {r3-r4, lr} + sub sp, #0xc + add r1, sp, #0x4 + add r1, #0x2 + add r4, r0, #0x0 + bl FUN_02014F94 + add r1, sp, #0x4 + add r0, r4, #0x0 + add r1, #0x1 + bl FUN_02014F94 + add r0, r4, #0x0 + add r1, sp, #0x4 + bl FUN_02014F94 + add r0, r4, #0x0 + add r1, sp, #0x8 + bl FUN_02014F80 + ldr r0, [sp, #0x8] + add r3, sp, #0x4 + str r0, [sp, #0x0] + ldrb r1, [r3, #0x2] + ldrb r2, [r3, #0x1] + ldrb r3, [r3, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02007E68 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02015840 +FUN_02015840: ; 0x02015840 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02007F20 + cmp r0, #0x0 + beq _02015856 + ldr r0, _02015858 ; =0x000001CF + mov r1, #0x1 + strb r1, [r4, r0] + str r1, [r4, #0x18] +_02015856: + pop {r4, pc} + .balign 4 +_02015858: .word 0x000001CF + + thumb_func_start FUN_0201585C +FUN_0201585C: ; 0x0201585C + ldr r1, _02015864 ; =0x000001CD + mov r2, #0x1 + strb r2, [r0, r1] + bx lr + .balign 4 +_02015864: .word 0x000001CD + + thumb_func_start FUN_02015868 +FUN_02015868: ; 0x02015868 + push {r4, lr} + ldr r1, _0201589C ; =0x000001CE + add r4, r0, #0x0 + add r1, r4, r1 + bl FUN_02014F94 + ldr r0, _0201589C ; =0x000001CE + mov r1, #0x1 + ldrb r0, [r4, r0] + add r2, r1, #0x0 + cmp r0, #0x1b + beq _02015886 + cmp r0, #0x1d + beq _02015886 + mov r2, #0x0 +_02015886: + cmp r2, #0x0 + bne _02015890 + cmp r0, #0x1c + beq _02015890 + mov r1, #0x0 +_02015890: + cmp r1, #0x0 + bne _02015898 + bl ErrorHandling +_02015898: + pop {r4, pc} + nop +_0201589C: .word 0x000001CE + + thumb_func_start FUN_020158A0 +FUN_020158A0: ; 0x020158A0 + ldr r3, _020158A8 ; =FUN_0201598C + mov r1, #0x0 + bx r3 + nop +_020158A8: .word FUN_0201598C + + thumb_func_start FUN_020158AC +FUN_020158AC: ; 0x020158AC + ldr r3, _020158B4 ; =FUN_0201598C + mov r1, #0x1 + bx r3 + nop +_020158B4: .word FUN_0201598C + + thumb_func_start FUN_020158B8 +FUN_020158B8: ; 0x020158B8 + ldr r3, _020158C0 ; =FUN_0201598C + mov r1, #0x2 + bx r3 + nop +_020158C0: .word FUN_0201598C + + thumb_func_start FUN_020158C4 +FUN_020158C4: ; 0x020158C4 + ldr r3, _020158CC ; =FUN_0201598C + mov r1, #0x3 + bx r3 + nop +_020158CC: .word FUN_0201598C + + thumb_func_start FUN_020158D0 +FUN_020158D0: ; 0x020158D0 + ldr r3, _020158D8 ; =FUN_0201598C + mov r1, #0x4 + bx r3 + nop +_020158D8: .word FUN_0201598C + + thumb_func_start FUN_020158DC +FUN_020158DC: ; 0x020158DC + push {r3, lr} + cmp r0, #0x18 + bne _020158E8 + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + pop {r3, pc} +_020158E8: + cmp r0, #0x19 + bne _020158F6 + ldr r1, [r1, #0x0] + ldr r0, [r2, #0x0] + add r0, r1, r0 + str r0, [r3, #0x0] + pop {r3, pc} +_020158F6: + cmp r0, #0x1a + bne _02015904 + ldr r1, [r3, #0x0] + ldr r0, [r2, #0x0] + add r0, r1, r0 + str r0, [r3, #0x0] + pop {r3, pc} +_02015904: + bl ErrorHandling + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201590C +FUN_0201590C: ; 0x0201590C + push {r3, lr} + sub r0, #0x23 + cmp r0, #0x4 + bhi _02015984 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02015920: ; jump table (using 16-bit offset) + .short _0201592A - _02015920 - 2; case 0 + .short _0201593C - _02015920 - 2; case 1 + .short _0201594E - _02015920 - 2; case 2 + .short _02015960 - _02015920 - 2; case 3 + .short _02015972 - _02015920 - 2; case 4 +_0201592A: + add r0, r1, #0x0 + add r0, #0x3c + str r0, [r1, #0x24] + add r0, r2, #0x0 + add r0, #0x68 + str r0, [r1, #0x28] + ldr r0, [r2, #0x68] + str r0, [r1, #0x30] + pop {r3, pc} +_0201593C: + add r0, r1, #0x0 + add r0, #0x40 + str r0, [r1, #0x24] + add r0, r2, #0x0 + add r0, #0x6c + str r0, [r1, #0x28] + ldr r0, [r2, #0x6c] + str r0, [r1, #0x30] + pop {r3, pc} +_0201594E: + add r0, r1, #0x0 + add r0, #0x44 + str r0, [r1, #0x24] + add r0, r2, #0x0 + add r0, #0x70 + str r0, [r1, #0x28] + ldr r0, [r2, #0x70] + str r0, [r1, #0x30] + pop {r3, pc} +_02015960: + add r0, r1, #0x0 + add r0, #0x48 + str r0, [r1, #0x24] + add r0, r2, #0x0 + add r0, #0x74 + str r0, [r1, #0x28] + ldr r0, [r2, #0x74] + str r0, [r1, #0x30] + pop {r3, pc} +_02015972: + add r0, r1, #0x0 + add r0, #0x4c + str r0, [r1, #0x24] + add r0, r2, #0x0 + add r0, #0x78 + str r0, [r1, #0x28] + ldr r0, [r2, #0x78] + str r0, [r1, #0x30] + pop {r3, pc} +_02015984: + bl ErrorHandling + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201598C +FUN_0201598C: ; 0x0201598C + push {r3-r7, lr} + sub sp, #0x8 + add r6, r1, #0x0 + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + add r5, r0, #0x0 + bl FUN_02014F34 + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + add r1, #0x2c + bl FUN_02014F94 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + add r1, #0x2d + bl FUN_02014F94 + mov r0, #0xc + mul r0, r6 + ldr r1, _02015A28 ; =0x020ED66C + str r0, [sp, #0x0] + ldr r0, [r1, r0] + mov r4, #0x0 + cmp r0, #0x0 + ble _020159E2 + ldr r1, _02015A2C ; =0x020ED668 + ldr r0, [sp, #0x0] + add r6, r1, r0 + ldr r0, [sp, #0x4] + add r7, r0, #0x4 +_020159CC: + lsl r1, r4, #0x2 + add r0, r5, #0x0 + add r1, r7, r1 + bl FUN_02014F80 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [r6, #0x4] + cmp r4, r0 + blt _020159CC +_020159E2: + ldr r1, _02015A30 ; =0x020ED670 + ldr r0, [sp, #0x0] + add r2, r5, #0x0 + ldr r0, [r1, r0] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x4] + add r0, r0, r1 + ldr r0, [r0, #0x4] + ldr r1, [sp, #0x4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201590C + ldr r0, [sp, #0x4] + add r0, #0x2d + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02015A14 + ldr r0, [sp, #0x4] + add r1, r5, #0x0 + add r2, r0, #0x0 + ldr r2, [r2, #0x50] + blx r2 + add sp, #0x8 + pop {r3-r7, pc} +_02015A14: + ldr r0, [sp, #0x4] + add r0, #0x2d + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + ldr r0, [sp, #0x4] + add r0, #0x2d + str r0, [sp, #0x4] + strb r1, [r0, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02015A28: .word 0x020ED66C +_02015A2C: .word 0x020ED668 +_02015A30: .word 0x020ED670 + + thumb_func_start FUN_02015A34 +FUN_02015A34: ; 0x02015A34 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x10] + add r0, r0, #0x1 + ldr r2, [r4, #0x14] + mul r0, r1 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [r4, #0x4] + sub r0, #0x1e + cmp r0, #0x3 + bhi _02015AC0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02015A5C: ; jump table (using 16-bit offset) + .short _02015A64 - _02015A5C - 2; case 0 + .short _02015A78 - _02015A5C - 2; case 1 + .short _02015A90 - _02015A5C - 2; case 2 + .short _02015AA6 - _02015A5C - 2; case 3 +_02015A64: + asr r0, r1, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02015AE8 ; =0x020FFA38 + ldr r2, [r4, #0xc] + ldrsh r0, [r0, r1] + mul r0, r2 + asr r1, r0, #0xc + ldr r0, [r4, #0x24] + str r1, [r0, #0x0] + b _02015AC4 +_02015A78: + asr r1, r1, #0x4 + lsl r1, r1, #0x1 + add r1, r1, #0x1 + lsl r2, r1, #0x1 + ldr r1, _02015AE8 ; =0x020FFA38 + ldr r0, [r4, #0xc] + ldrsh r1, [r1, r2] + mul r1, r0 + ldr r0, [r4, #0x24] + asr r1, r1, #0xc + str r1, [r0, #0x0] + b _02015AC4 +_02015A90: + asr r0, r1, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02015AE8 ; =0x020FFA38 + ldr r2, [r4, #0xc] + ldrsh r0, [r0, r1] + mul r0, r2 + asr r0, r0, #0xc + neg r1, r0 + ldr r0, [r4, #0x24] + str r1, [r0, #0x0] + b _02015AC4 +_02015AA6: + asr r1, r1, #0x4 + lsl r1, r1, #0x1 + add r1, r1, #0x1 + lsl r2, r1, #0x1 + ldr r1, _02015AE8 ; =0x020FFA38 + ldr r0, [r4, #0xc] + ldrsh r1, [r1, r2] + mul r1, r0 + asr r0, r1, #0xc + neg r1, r0 + ldr r0, [r4, #0x24] + str r1, [r0, #0x0] + b _02015AC4 +_02015AC0: + bl ErrorHandling +_02015AC4: + add r0, r4, #0x0 + add r0, #0x2c + ldrb r0, [r0, #0x0] + add r1, r4, #0x0 + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r1, #0x30 + bl FUN_020158DC + ldr r0, [r4, #0x1c] + add r1, r0, #0x1 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x18] + cmp r1, r0 + blt _02015AE6 + mov r0, #0x0 + str r0, [r4, #0x0] +_02015AE6: + pop {r4, pc} + .balign 4 +_02015AE8: .word 0x020FFA38 + + thumb_func_start FUN_02015AEC +FUN_02015AEC: ; 0x02015AEC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x10] + add r0, r0, #0x1 + mul r0, r1 + ldr r1, [r4, #0x18] + blx _s32_div_f + ldr r1, [r4, #0x14] + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [r4, #0x4] + sub r0, #0x1e + cmp r0, #0x3 + bhi _02015B7E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02015B1A: ; jump table (using 16-bit offset) + .short _02015B22 - _02015B1A - 2; case 0 + .short _02015B36 - _02015B1A - 2; case 1 + .short _02015B4E - _02015B1A - 2; case 2 + .short _02015B64 - _02015B1A - 2; case 3 +_02015B22: + asr r0, r1, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02015BA8 ; =0x020FFA38 + ldr r2, [r4, #0xc] + ldrsh r0, [r0, r1] + mul r0, r2 + asr r1, r0, #0xc + ldr r0, [r4, #0x24] + str r1, [r0, #0x0] + b _02015B82 +_02015B36: + asr r1, r1, #0x4 + lsl r1, r1, #0x1 + add r1, r1, #0x1 + lsl r2, r1, #0x1 + ldr r1, _02015BA8 ; =0x020FFA38 + ldr r0, [r4, #0xc] + ldrsh r1, [r1, r2] + mul r1, r0 + ldr r0, [r4, #0x24] + asr r1, r1, #0xc + str r1, [r0, #0x0] + b _02015B82 +_02015B4E: + asr r0, r1, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02015BA8 ; =0x020FFA38 + ldr r2, [r4, #0xc] + ldrsh r0, [r0, r1] + mul r0, r2 + asr r0, r0, #0xc + neg r1, r0 + ldr r0, [r4, #0x24] + str r1, [r0, #0x0] + b _02015B82 +_02015B64: + asr r1, r1, #0x4 + lsl r1, r1, #0x1 + add r1, r1, #0x1 + lsl r2, r1, #0x1 + ldr r1, _02015BA8 ; =0x020FFA38 + ldr r0, [r4, #0xc] + ldrsh r1, [r1, r2] + mul r1, r0 + asr r0, r1, #0xc + neg r1, r0 + ldr r0, [r4, #0x24] + str r1, [r0, #0x0] + b _02015B82 +_02015B7E: + bl ErrorHandling +_02015B82: + add r0, r4, #0x0 + add r0, #0x2c + ldrb r0, [r0, #0x0] + add r1, r4, #0x0 + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r1, #0x30 + bl FUN_020158DC + ldr r0, [r4, #0x1c] + add r1, r0, #0x1 + str r1, [r4, #0x1c] + ldr r0, [r4, #0x18] + cmp r1, r0 + blt _02015BA4 + mov r0, #0x0 + str r0, [r4, #0x0] +_02015BA4: + pop {r4, pc} + nop +_02015BA8: .word 0x020FFA38 + + thumb_func_start FUN_02015BAC +FUN_02015BAC: ; 0x02015BAC + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x24] + ldr r3, [r4, #0xc] + ldr r2, [r4, #0x14] + ldr r5, [r4, #0x8] + mul r2, r3 + ldr r0, [r1, #0x0] + add r2, r5, r2 + add r0, r0, r2 + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x2c + add r1, r4, #0x0 + ldrb r0, [r0, #0x0] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r1, #0x30 + bl FUN_020158DC + ldr r0, [r4, #0x14] + add r1, r0, #0x1 + str r1, [r4, #0x14] + ldr r0, [r4, #0x10] + cmp r1, r0 + blt _02015BE4 + mov r0, #0x0 + str r0, [r4, #0x0] +_02015BE4: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02015BE8 +FUN_02015BE8: ; 0x02015BE8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x10] + add r1, r0, #0x1 + ldr r0, [r4, #0x8] + mul r0, r1 + ldr r1, [r4, #0xc] + blx _s32_div_f + ldr r1, [r4, #0x24] + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x2c + add r1, r4, #0x0 + ldrb r0, [r0, #0x0] + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r1, #0x30 + bl FUN_020158DC + ldr r0, [r4, #0x10] + add r1, r0, #0x1 + str r1, [r4, #0x10] + ldr r0, [r4, #0xc] + cmp r1, r0 + blt _02015C20 + mov r0, #0x0 + str r0, [r4, #0x0] +_02015C20: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02015C24 +FUN_02015C24: ; 0x02015C24 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x14] + ldr r2, [r4, #0x8] + mul r0, r1 + ldr r1, [r4, #0x24] + add r2, r2, r0 + ldr r0, [r1, #0x0] + add r0, r0, r2 + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x2c + ldrb r0, [r0, #0x0] + cmp r0, #0x18 + beq _02015C48 + cmp r0, #0x1a + bne _02015C6E +_02015C48: + cmp r2, #0x0 + ldr r2, [r4, #0x10] + bge _02015C5E + ldr r1, [r4, #0x24] + ldr r0, [r1, #0x0] + cmp r0, r2 + bgt _02015CA4 + str r2, [r1, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + b _02015CA4 +_02015C5E: + ldr r1, [r4, #0x24] + ldr r0, [r1, #0x0] + cmp r0, r2 + blt _02015CA4 + str r2, [r1, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + b _02015CA4 +_02015C6E: + cmp r0, #0x19 + bne _02015CA0 + ldr r1, [r4, #0x24] + ldr r3, [r4, #0x30] + ldr r0, [r1, #0x0] + add r3, r3, r0 + cmp r2, #0x0 + ldr r2, [r4, #0x10] + bge _02015C90 + cmp r3, r2 + bgt _02015CA4 + sub r2, r2, r3 + add r0, r0, r2 + str r0, [r1, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + b _02015CA4 +_02015C90: + cmp r3, r2 + blt _02015CA4 + sub r2, r3, r2 + sub r0, r0, r2 + str r0, [r1, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + b _02015CA4 +_02015CA0: + bl ErrorHandling +_02015CA4: + add r0, r4, #0x0 + add r0, #0x2c + ldrb r0, [r0, #0x0] + add r1, r4, #0x0 + ldr r2, [r4, #0x24] + ldr r3, [r4, #0x28] + add r1, #0x30 + bl FUN_020158DC + ldr r0, [r4, #0x14] + add r0, r0, #0x1 + str r0, [r4, #0x14] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02015CC0 +FUN_02015CC0: ; 0x02015CC0 + ldr r3, _02015CDC ; =0x020ED72C + mov r2, #0x0 +_02015CC4: + ldrh r1, [r3, #0x2] + cmp r0, r1 + bhs _02015CCE + add r0, r2, #0x0 + bx lr +_02015CCE: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0x2 + blt _02015CC4 + add r0, r2, #0x0 + bx lr + nop +_02015CDC: .word 0x020ED72C + + thumb_func_start FUN_02015CE0 +FUN_02015CE0: ; 0x02015CE0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02015CC0 + lsl r1, r0, #0x1 + ldr r0, _02015CF4 ; =0x020ED72C + ldrh r0, [r0, r1] + sub r0, r4, r0 + pop {r4, pc} + nop +_02015CF4: .word 0x020ED72C + + thumb_func_start FUN_02015CF8 +FUN_02015CF8: ; 0x02015CF8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x3 + blt _02015D06 + bl ErrorHandling +_02015D06: + ldr r0, _02015D10 ; =0x020ED72C + lsl r1, r5, #0x1 + ldrh r0, [r0, r1] + add r0, r4, r0 + pop {r3-r5, pc} + .balign 4 +_02015D10: .word 0x020ED72C + + thumb_func_start FUN_02015D14 +FUN_02015D14: ; 0x02015D14 + cmp r0, #0x7 + bhi _02015D34 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02015D24: ; jump table (using 16-bit offset) + .short _02015D34 - _02015D24 - 2; case 0 + .short _02015D34 - _02015D24 - 2; case 1 + .short _02015D38 - _02015D24 - 2; case 2 + .short _02015D3E - _02015D24 - 2; case 3 + .short _02015D38 - _02015D24 - 2; case 4 + .short _02015D42 - _02015D24 - 2; case 5 + .short _02015D34 - _02015D24 - 2; case 6 + .short _02015D38 - _02015D24 - 2; case 7 +_02015D34: + mov r0, #0xea + bx lr +_02015D38: + mov r0, #0x6d + lsl r0, r0, #0x2 + bx lr +_02015D3E: + ldr r0, _02015D48 ; =0x000001B7 + bx lr +_02015D42: + ldr r0, _02015D4C ; =0x000001B6 + bx lr + nop +_02015D48: .word 0x000001B7 +_02015D4C: .word 0x000001B6 + + thumb_func_start FUN_02015D50 +FUN_02015D50: ; 0x02015D50 + cmp r0, #0x7 + bhi _02015D70 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02015D60: ; jump table (using 16-bit offset) + .short _02015D70 - _02015D60 - 2; case 0 + .short _02015D70 - _02015D60 - 2; case 1 + .short _02015D74 - _02015D60 - 2; case 2 + .short _02015D78 - _02015D60 - 2; case 3 + .short _02015D74 - _02015D60 - 2; case 4 + .short _02015D7E - _02015D60 - 2; case 5 + .short _02015D70 - _02015D60 - 2; case 6 + .short _02015D74 - _02015D60 - 2; case 7 +_02015D70: + mov r0, #0xeb + bx lr +_02015D74: + ldr r0, _02015D84 ; =0x000001B5 + bx lr +_02015D78: + mov r0, #0x6e + lsl r0, r0, #0x2 + bx lr +_02015D7E: + mov r0, #0x6d + lsl r0, r0, #0x2 + bx lr + .balign 4 +_02015D84: .word 0x000001B5 + + thumb_func_start FUN_02015D88 +FUN_02015D88: ; 0x02015D88 + push {r3-r7, lr} + sub sp, #0x10 + add r6, r3, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + str r2, [sp, #0x8] + cmp r6, #0x1 + beq _02015D9C + mov r2, #0x1 + b _02015D9E +_02015D9C: + mov r2, #0x0 +_02015D9E: + ldr r0, [sp, #0x8] + mov r4, #0x0 + sub r0, r0, #0x1 + str r0, [sp, #0xc] + beq _02015E18 + ldr r1, _02015E28 ; =0x020ED734 + lsl r0, r2, #0x1 + ldr r5, [sp, #0x4] + add r7, r1, r0 +_02015DB0: + ldr r0, [sp, #0x0] + ldrb r0, [r0, r4] + cmp r0, #0xff + beq _02015E18 + cmp r0, #0xf7 + blo _02015DEA + ldr r0, [sp, #0x8] + sub r3, r0, #0x1 + cmp r3, #0xa + blo _02015DC6 + mov r3, #0xa +_02015DC6: + mov r1, #0x0 + cmp r3, #0x0 + ble _02015DDC + mov r0, #0x6b + ldr r2, [sp, #0x4] + lsl r0, r0, #0x2 +_02015DD2: + add r1, r1, #0x1 + strh r0, [r2, #0x0] + add r2, r2, #0x2 + cmp r1, r3 + blt _02015DD2 +_02015DDC: + ldr r0, [sp, #0x4] + ldr r2, _02015E2C ; =0x0000FFFF + lsl r1, r1, #0x1 + strh r2, [r0, r1] + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_02015DEA: + lsl r0, r0, #0x2 + ldrh r0, [r7, r0] + cmp r0, #0xea + beq _02015DF8 + cmp r0, #0xeb + beq _02015E02 + b _02015E0C +_02015DF8: + add r0, r6, #0x0 + bl FUN_02015D14 + strh r0, [r5, #0x0] + b _02015E0E +_02015E02: + add r0, r6, #0x0 + bl FUN_02015D50 + strh r0, [r5, #0x0] + b _02015E0E +_02015E0C: + strh r0, [r5, #0x0] +_02015E0E: + ldr r0, [sp, #0xc] + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, r0 + blo _02015DB0 +_02015E18: + ldr r2, _02015E2C ; =0x0000FFFF + ldr r0, [sp, #0x4] + lsl r1, r4, #0x1 + strh r2, [r0, r1] + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + nop +_02015E28: .word 0x020ED734 +_02015E2C: .word 0x0000FFFF + + thumb_func_start FUN_02015E30 +FUN_02015E30: ; 0x02015E30 + ldr r0, _02015E38 ; =0x021C4898 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_02015E38: .word 0x021C4898 + + thumb_func_start FUN_02015E3C +FUN_02015E3C: ; 0x02015E3C + push {r3, lr} + ldr r1, _02015E5C ; =0x021C4898 + mov r2, #0x1 + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r1, #0x10] + str r2, [r1, #0x14] + str r2, [r1, #0x8] + str r2, [r1, #0xc] + str r0, [r1, #0x4] + bl FUN_02020BF4 + ldr r2, _02015E5C ; =0x021C4898 + str r0, [r2, #0x18] + str r1, [r2, #0x1c] + pop {r3, pc} + .balign 4 +_02015E5C: .word 0x021C4898 + + thumb_func_start FUN_02015E60 +FUN_02015E60: ; 0x02015E60 + push {r3-r5, lr} + ldr r0, _02015E9C ; =0x021C4898 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02015E9A + bl FUN_02020BF4 + ldr r2, _02015E9C ; =0x021C4898 + ldr r3, [r2, #0x18] + ldr r2, [r2, #0x1c] + sub r0, r0, r3 + sbc r1, r2 + bl FUN_02020C14 + add r5, r1, #0x0 + ldr r1, _02015E9C ; =0x021C4898 + add r4, r0, #0x0 + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + sub r0, r3, r4 + sbc r2, r5 + bhs _02015E9A + ldr r0, [r1, #0x4] + sub r1, r4, r3 + bl FUN_02029E54 + ldr r0, _02015E9C ; =0x021C4898 + str r4, [r0, #0x8] + str r5, [r0, #0xc] +_02015E9A: + pop {r3-r5, pc} + .balign 4 +_02015E9C: .word 0x021C4898 + + thumb_func_start FUN_02015EA0 +FUN_02015EA0: ; 0x02015EA0 + push {r3, lr} + ldr r3, _02015EC8 ; =0x027E0000 + ldr r1, _02015ECC ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + mov r0, #0x3 + blx MI_WaitDma + ldr r0, _02015ED0 ; =0x021C48B8 + ldr r0, [r0, #0x1c] + bl FUN_0201B5CC + ldr r0, _02015ED0 ; =0x021C48B8 + ldr r1, [r0, #0x30] + add r1, r1, #0x1 + str r1, [r0, #0x30] + pop {r3, pc} + nop +_02015EC8: .word 0x027E0000 +_02015ECC: .word 0x00003FF8 +_02015ED0: .word 0x021C48B8 + + thumb_func_start FUN_02015ED4 +FUN_02015ED4: ; 0x02015ED4 + ldr r3, _02015EE8 ; =0x027E0000 + ldr r1, _02015EEC ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + ldr r3, _02015EF0 ; =MI_WaitDma + mov r0, #0x3 + bx r3 + nop +_02015EE8: .word 0x027E0000 +_02015EEC: .word 0x00003FF8 +_02015EF0: .word MI_WaitDma + + thumb_func_start FUN_02015EF4 +FUN_02015EF4: ; 0x02015EF4 + push {r3, lr} + mov r0, #0x1 + blx OS_DisableIrqMask + ldr r1, _02015F0C ; =FUN_02015ED4 + mov r0, #0x1 + blx OS_SetIrqFunction + mov r0, #0x1 + blx OS_EnableIrqMask + pop {r3, pc} + .balign 4 +_02015F0C: .word FUN_02015ED4 + + thumb_func_start FUN_02015F10 +FUN_02015F10: ; 0x02015F10 + ldr r2, _02015F18 ; =0x021C48B8 + str r0, [r2, #0x0] + str r1, [r2, #0x4] + bx lr + .balign 4 +_02015F18: .word 0x021C48B8 + + thumb_func_start FUN_02015F1C +FUN_02015F1C: ; 0x02015F1C + push {r3, lr} + mov r0, #0x0 + bl FUN_02015F80 + ldr r0, _02015F30 ; =0x021C48B8 + mov r1, #0x0 + str r1, [r0, #0x8] + str r1, [r0, #0xc] + pop {r3, pc} + nop +_02015F30: .word 0x021C48B8 + + thumb_func_start FUN_02015F34 +FUN_02015F34: ; 0x02015F34 + push {r3, lr} + cmp r0, #0x0 + bne _02015F4C + mov r0, #0x0 + bl FUN_02015F80 + ldr r0, _02015F68 ; =0x021C48B8 + mov r1, #0x0 + str r1, [r0, #0x8] + str r1, [r0, #0xc] + mov r0, #0x1 + pop {r3, pc} +_02015F4C: + ldr r2, _02015F68 ; =0x021C48B8 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + bne _02015F62 + str r1, [r2, #0xc] + str r0, [r2, #0x8] + mov r0, #0x1 + bl FUN_02015F80 + mov r0, #0x1 + pop {r3, pc} +_02015F62: + mov r0, #0x0 + pop {r3, pc} + nop +_02015F68: .word 0x021C48B8 + + thumb_func_start FUN_02015F6C +FUN_02015F6C: ; 0x02015F6C + push {r3, lr} + ldr r0, _02015F7C ; =0x021C48B8 + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _02015F7A + ldr r0, [r0, #0xc] + blx r1 +_02015F7A: + pop {r3, pc} + .balign 4 +_02015F7C: .word 0x021C48B8 + + thumb_func_start FUN_02015F80 +FUN_02015F80: ; 0x02015F80 + push {r3, lr} + ldr r2, _02015FC0 ; =0x04000208 + ldrh r1, [r2, #0x0] + mov r1, #0x0 + strh r1, [r2, #0x0] + cmp r0, #0x0 + bne _02015F9E + ldr r0, [r2, #0x8] + mov r0, #0x2 + blx OS_DisableIrqMask + mov r0, #0x0 + blx GX_HBlankIntr + b _02015FB4 +_02015F9E: + ldr r0, [r2, #0x8] + ldr r1, _02015FC4 ; =FUN_02015F6C + mov r0, #0x2 + blx OS_SetIrqFunction + mov r0, #0x2 + blx OS_EnableIrqMask + mov r0, #0x1 + blx GX_HBlankIntr +_02015FB4: + ldr r1, _02015FC0 ; =0x04000208 + ldrh r0, [r1, #0x0] + mov r0, #0x1 + strh r0, [r1, #0x0] + pop {r3, pc} + nop +_02015FC0: .word 0x04000208 +_02015FC4: .word FUN_02015F6C + + thumb_func_start FUN_02015FC8 +FUN_02015FC8: ; 0x02015FC8 + push {r3, lr} + sub sp, #0x30 + add r0, sp, #0x10 + blx OS_GetLowEntropyData + add r0, sp, #0x0 + add r1, sp, #0x10 + mov r2, #0x20 + blx MATH_CalcMD5 + mov r3, #0x0 + add r1, r3, #0x0 + add r2, sp, #0x0 +_02015FE2: + ldrb r0, [r2, #0x0] + add r1, r1, #0x1 + add r2, r2, #0x1 + add r3, r3, r0 + cmp r1, #0x10 + blo _02015FE2 + lsl r0, r3, #0x18 + lsr r3, r0, #0x18 + mov r0, #0x3 + tst r0, r3 + beq _02016002 + mov r0, #0x3 +_02015FFA: + add r3, r3, #0x1 + add r1, r3, #0x0 + tst r1, r0 + bne _02015FFA +_02016002: + ldr r0, _02016010 ; =0x020EDB10 + mov r1, #0x4 + mov r2, #0x5c + bl FUN_020166C8 + add sp, #0x30 + pop {r3, pc} + .balign 4 +_02016010: .word 0x020EDB10 + + thumb_func_start InitSystemForTheGame +InitSystemForTheGame: ; 0x02016014 + push {r3-r5, lr} + blx OS_Init + blx FX_Init + ldr r2, _02016124 ; =0x04000304 + ldr r0, _02016128 ; =0xFFFFFDF1 + ldrh r1, [r2, #0x0] + and r1, r0 + ldr r0, _0201612C ; =0x0000020E + orr r0, r1 + strh r0, [r2, #0x0] + blx GX_Init + blx OS_InitTick + bl FUN_02015FC8 + mov r0, #0xa0 + bl FUN_0201B578 + add r1, r0, #0x0 + mov r0, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo + add r1, r0, #0x0 + mov r0, #0xa0 + bl FUN_0201B580 + ldr r1, _02016130 ; =0x021C48B8 + str r0, [r1, #0x18] + mov r0, #0x10 + bl FUN_0201B578 + add r1, r0, #0x0 + mov r0, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo + add r1, r0, #0x0 + mov r0, #0x10 + bl FUN_0201B580 + ldr r1, _02016130 ; =0x021C48B8 + str r0, [r1, #0x1c] + mov r0, #0x20 + bl FUN_0201B578 + add r1, r0, #0x0 + mov r0, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo + add r1, r0, #0x0 + mov r0, #0x20 + bl FUN_0201B580 + ldr r1, _02016130 ; =0x021C48B8 + str r0, [r1, #0x20] + mov r0, #0x4 + bl FUN_0201B578 + add r1, r0, #0x0 + mov r0, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo + add r1, r0, #0x0 + mov r0, #0x4 + bl FUN_0201B580 + ldr r1, _02016130 ; =0x021C48B8 + str r0, [r1, #0x24] + blx GX_DispOff + ldr r2, _02016134 ; =0x04001000 + ldr r0, _02016138 ; =0xFFFEFFFF + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + ldr r2, _02016124 ; =0x04000304 + ldrh r1, [r2, #0x0] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2, #0x0] + ldr r1, _0201613C ; =FUN_02015EA0 + mov r0, #0x1 + blx OS_SetIrqFunction + mov r0, #0x1 + blx OS_EnableIrqMask + mov r0, #0x1 + lsl r0, r0, #0x12 + blx OS_EnableIrqMask + ldr r1, _02016140 ; =0x04000208 + ldrh r0, [r1, #0x0] + mov r0, #0x1 + strh r0, [r1, #0x0] + blx GX_VBlankIntr + mov r0, #0x1 + blx FS_Init + bl FUN_02022450 + mov r0, #0x0 + add r1, r0, #0x0 + blx FS_TryLoadTable + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo + add r5, r0, #0x0 + bne _02016108 + bl ErrorHandling +_02016108: + add r0, r5, #0x0 + add r1, r4, #0x0 + blx FS_TryLoadTable + ldr r0, _02016130 ; =0x021C48B8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x8] + str r1, [r0, #0x10] + str r1, [r0, #0x14] + str r1, [r0, #0x2c] + ldr r0, _02016144 ; =0x021C4918 + strb r1, [r0, #0x5] + pop {r3-r5, pc} + .balign 4 +_02016124: .word 0x04000304 +_02016128: .word 0xFFFFFDF1 +_0201612C: .word 0x0000020E +_02016130: .word 0x021C48B8 +_02016134: .word 0x04001000 +_02016138: .word 0xFFFEFFFF +_0201613C: .word FUN_02015EA0 +_02016140: .word 0x04000208 +_02016144: .word 0x021C4918 + + thumb_func_start InitGraphicMemory +InitGraphicMemory: ; 0x02016148 + push {r3, lr} + ldr r0, _02016198 ; =0x000001FF + blx GX_SetBankForLCDC + mov r1, #0x1a + mov r2, #0x29 + mov r0, #0x0 + lsl r1, r1, #0x16 + lsl r2, r2, #0xe + blx MIi_CpuClearFast + blx GX_DisableBankForLCDC + mov r1, #0x7 + mov r2, #0x1 + mov r0, #0xc0 + lsl r1, r1, #0x18 + lsl r2, r2, #0xa + blx MIi_CpuClearFast + mov r2, #0x1 + ldr r1, _0201619C ; =0x07000400 + mov r0, #0xc0 + lsl r2, r2, #0xa + blx MIi_CpuClearFast + mov r1, #0x5 + mov r2, #0x1 + mov r0, #0x0 + lsl r1, r1, #0x18 + lsl r2, r2, #0xa + blx MIi_CpuClearFast + mov r2, #0x1 + ldr r1, _020161A0 ; =0x05000400 + mov r0, #0x0 + lsl r2, r2, #0xa + blx MIi_CpuClearFast + pop {r3, pc} + .balign 4 +_02016198: .word 0x000001FF +_0201619C: .word 0x07000400 +_020161A0: .word 0x05000400 + + thumb_func_start FUN_020161A4 +FUN_020161A4: ; 0x020161A4 + push {r4-r6, lr} + sub sp, #0x48 + add r6, r0, #0x0 + add r4, r1, #0x0 + add r0, sp, #0x0 + blx FS_InitFile + add r0, sp, #0x0 + add r1, r4, #0x0 + blx FS_OpenFile + cmp r0, #0x0 + beq _020161F0 + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x24] + sub r5, r1, r0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + beq _020161E8 + add r0, sp, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + blx FS_ReadFile + cmp r5, r0 + beq _020161E8 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02016A8C + mov r4, #0x0 +_020161E8: + add r0, sp, #0x0 + blx FS_CloseFile + b _020161F2 +_020161F0: + mov r4, #0x0 +_020161F2: + add r0, r4, #0x0 + add sp, #0x48 + pop {r4-r6, pc} + + thumb_func_start FUN_020161F8 +FUN_020161F8: ; 0x020161F8 + push {r3-r5, lr} + sub sp, #0x48 + add r5, r0, #0x0 + add r0, sp, #0x0 + add r4, r1, #0x0 + blx FS_InitFile + add r0, sp, #0x0 + add r1, r5, #0x0 + blx FS_OpenFile + cmp r0, #0x0 + beq _0201622A + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x24] + sub r2, r1, r0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _02016224 + add r0, sp, #0x0 + blx FS_ReadFile +_02016224: + add r0, sp, #0x0 + blx FS_CloseFile +_0201622A: + add sp, #0x48 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02016230 +FUN_02016230: ; 0x02016230 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + blx strlen + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + lsr r2, r3, #0x1f + lsl r1, r3, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + beq _02016258 + lsr r0, r3, #0x2 + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + b _0201625E +_02016258: + lsl r0, r3, #0xe + lsr r0, r0, #0x10 + str r0, [sp, #0x4] +_0201625E: + ldr r0, [sp, #0x4] + mov r7, #0x0 + mov r12, r7 + cmp r0, #0x0 + ble _0201629A + add r6, r7, #0x0 + add r4, r7, #0x0 +_0201626C: + ldr r2, [sp, #0x0] + mov r1, #0x0 + add r0, r1, #0x0 + add r2, r2, r6 + add r3, r1, #0x0 +_02016276: + ldrsb r5, [r2, r4] + cmp r5, #0x0 + beq _0201628A + lsl r5, r3 + add r0, r0, #0x1 + orr r1, r5 + add r2, r2, #0x1 + add r3, #0x8 + cmp r0, #0x4 + blt _02016276 +_0201628A: + mov r0, r12 + eor r7, r1 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + add r6, r6, #0x4 + mov r12, r1 + cmp r1, r0 + blt _0201626C +_0201629A: + add r0, r7, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_020162A0 +FUN_020162A0: ; 0x020162A0 + ldr r3, _020162C4 ; =0x021C4928 + mov r2, #0x0 +_020162A4: + ldr r1, [r3, #0x4] + cmp r0, r1 + bne _020162B4 + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _020162B4 + add r0, r2, #0x0 + bx lr +_020162B4: + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, #0x80 + blt _020162A4 + mov r0, #0x0 + mvn r0, r0 + bx lr + nop +_020162C4: .word 0x021C4928 + + thumb_func_start FUN_020162C8 +FUN_020162C8: ; 0x020162C8 + push {r3-r4} + ldr r3, _020162F4 ; =0x021C4928 + mov r4, #0x0 +_020162CE: + ldr r2, [r3, #0x0] + cmp r2, #0x0 + bne _020162E4 + ldr r2, _020162F4 ; =0x021C4928 + lsl r3, r4, #0x3 + str r0, [r2, r3] + ldr r0, _020162F8 ; =0x021C492C + str r1, [r0, r3] + add r0, r4, #0x0 + pop {r3-r4} + bx lr +_020162E4: + add r4, r4, #0x1 + add r3, #0x8 + cmp r4, #0x80 + blt _020162CE + mov r0, #0x0 + mvn r0, r0 + pop {r3-r4} + bx lr + .balign 4 +_020162F4: .word 0x021C4928 +_020162F8: .word 0x021C492C + + thumb_func_start FUN_020162FC +FUN_020162FC: ; 0x020162FC + push {r3-r7, lr} + mov r6, #0x0 + ldr r5, _02016320 ; =0x021C4D20 + mov r4, #0x7f + sub r7, r6, #0x1 +_02016306: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02016314 + bl FUN_02016A18 + str r6, [r5, #0x0] + str r6, [r5, #0x4] +_02016314: + sub r4, r4, #0x1 + sub r5, #0x8 + cmp r4, r7 + bgt _02016306 + pop {r3-r7, pc} + nop +_02016320: .word 0x021C4D20 + + thumb_func_start FUN_02016324 +FUN_02016324: ; 0x02016324 + push {r3-r7, lr} + sub sp, #0x68 + add r2, r0, #0x0 + mov r5, #0x0 + ldrsb r0, [r2, r5] + add r4, r1, #0x0 + cmp r0, #0x21 + add r0, sp, #0x0 + bne _02016340 + add r1, r2, #0x1 + blx strcpy + mov r5, #0x1 + b _02016346 +_02016340: + add r1, r2, #0x0 + blx strcpy +_02016346: + add r0, sp, #0x0 + bl FUN_02016230 + add r7, r0, #0x0 + bl FUN_020162A0 + cmp r0, #0x0 + blt _02016362 + cmp r5, #0x0 + bne _02016362 + lsl r1, r0, #0x3 + ldr r0, _020163B8 ; =0x021C4928 + ldr r4, [r0, r1] + b _020163B2 +_02016362: + add r0, sp, #0x20 + blx FS_InitFile + add r0, sp, #0x20 + add r1, sp, #0x0 + blx FS_OpenFile + cmp r0, #0x0 + beq _020163B0 + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x44] + sub r6, r1, r0 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + beq _0201639C + add r0, sp, #0x20 + add r1, r4, #0x0 + add r2, r6, #0x0 + blx FS_ReadFile + cmp r6, r0 + beq _0201639C + add r0, r4, #0x0 + bl FUN_02016A18 + mov r4, #0x0 +_0201639C: + add r0, sp, #0x20 + blx FS_CloseFile + cmp r5, #0x0 + bne _020163B2 + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_020162C8 + b _020163B2 +_020163B0: + mov r4, #0x0 +_020163B2: + add r0, r4, #0x0 + add sp, #0x68 + pop {r3-r7, pc} + .balign 4 +_020163B8: .word 0x021C4928 + + thumb_func_start FUN_020163BC +FUN_020163BC: ; 0x020163BC + push {r3, lr} + sub sp, #0x8 + ldr r0, _0201641C ; =0x021C48B8 + mov r2, #0x0 + str r2, [r0, #0x34] + str r2, [r0, #0x38] + str r2, [r0, #0x3c] + str r2, [r0, #0x40] + str r2, [r0, #0x44] + str r2, [r0, #0x48] + str r2, [r0, #0x4c] + str r2, [r0, #0x50] + mov r1, #0x8 + str r1, [r0, #0x54] + mov r1, #0xf + str r1, [r0, #0x58] + ldr r0, _02016420 ; =0x021C48F8 + strh r2, [r0, #0x1c] + strh r2, [r0, #0x1e] + strh r2, [r0, #0x20] + strh r2, [r0, #0x22] + ldr r0, _02016424 ; =0x021C4918 + strb r2, [r0, #0x4] + blx TP_Init + add r0, sp, #0x0 + blx TP_GetUserInfo + cmp r0, #0x1 + add r0, sp, #0x0 + bne _02016402 + blx TP_SetCalibrateParam + add sp, #0x8 + pop {r3, pc} +_02016402: + ldr r1, _02016428 ; =0x000002AE + strh r1, [r0, #0x0] + ldr r1, _0201642C ; =0x0000058C + strh r1, [r0, #0x2] + ldr r1, _02016430 ; =0x00000E25 + strh r1, [r0, #0x4] + ldr r1, _02016434 ; =0x00001208 + strh r1, [r0, #0x6] + add r0, sp, #0x0 + blx TP_SetCalibrateParam + add sp, #0x8 + pop {r3, pc} + .balign 4 +_0201641C: .word 0x021C48B8 +_02016420: .word 0x021C48F8 +_02016424: .word 0x021C4918 +_02016428: .word 0x000002AE +_0201642C: .word 0x0000058C +_02016430: .word 0x00000E25 +_02016434: .word 0x00001208 + + thumb_func_start FUN_02016438 +FUN_02016438: ; 0x02016438 + ldr r1, _02016440 ; =0x021C4918 + strb r0, [r1, #0x6] + bx lr + nop +_02016440: .word 0x021C4918 + + thumb_func_start FUN_02016444 +FUN_02016444: ; 0x02016444 + ldr r1, _02016450 ; =0x021C4918 + ldrb r2, [r1, #0x7] + orr r0, r2 + strb r0, [r1, #0x7] + bx lr + nop +_02016450: .word 0x021C4918 + + thumb_func_start FUN_02016454 +FUN_02016454: ; 0x02016454 + ldr r1, _02016460 ; =0x021C4918 + mvn r0, r0 + ldrb r2, [r1, #0x7] + and r0, r2 + strb r0, [r1, #0x7] + bx lr + .balign 4 +_02016460: .word 0x021C4918 + + thumb_func_start FUN_02016464 +FUN_02016464: ; 0x02016464 + push {r4, lr} + sub sp, #0x10 + ldr r2, _02016550 ; =0x027FFFA8 + mov r0, #0x2 + ldrh r1, [r2, #0x0] + lsl r0, r0, #0xe + and r0, r1 + asr r0, r0, #0xf + beq _0201648A + ldr r0, _02016554 ; =0x021C48B8 + mov r1, #0x0 + str r1, [r0, #0x48] + str r1, [r0, #0x44] + str r1, [r0, #0x4c] + ldr r0, _02016558 ; =0x021C48F8 + add sp, #0x10 + strh r1, [r0, #0x20] + strh r1, [r0, #0x22] + pop {r4, pc} +_0201648A: + ldr r0, _0201655C ; =0x04000130 + ldrh r1, [r0, #0x0] + ldrh r0, [r2, #0x0] + orr r1, r0 + ldr r0, _02016560 ; =0x00002FFF + eor r1, r0 + and r0, r1 + ldr r1, _02016554 ; =0x021C48B8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + ldr r2, [r1, #0x38] + add r3, r0, #0x0 + eor r3, r2 + and r3, r0 + str r3, [r1, #0x3c] + str r3, [r1, #0x40] + cmp r0, #0x0 + beq _020164C2 + cmp r2, r0 + bne _020164C2 + ldr r2, [r1, #0x50] + sub r2, r2, #0x1 + str r2, [r1, #0x50] + bne _020164C8 + str r0, [r1, #0x40] + ldr r2, [r1, #0x54] + str r2, [r1, #0x50] + b _020164C8 +_020164C2: + ldr r1, _02016554 ; =0x021C48B8 + ldr r2, [r1, #0x58] + str r2, [r1, #0x50] +_020164C8: + ldr r1, _02016554 ; =0x021C48B8 + str r0, [r1, #0x38] + ldr r2, [r1, #0x3c] + str r2, [r1, #0x48] + str r0, [r1, #0x44] + ldr r0, [r1, #0x40] + str r0, [r1, #0x4c] + bl FUN_02016568 + ldr r0, _02016564 ; =0x021C4918 + ldrb r0, [r0, #0x4] + cmp r0, #0x0 + bne _020164F4 + add r4, sp, #0x8 +_020164E4: + blx TP_RequestSamplingAsync + add r0, r4, #0x0 + blx TP_WaitRawResult + cmp r0, #0x0 + bne _020164E4 + b _020164FA +_020164F4: + add r0, sp, #0x8 + blx TP_GetLatestRawPointInAuto +_020164FA: + add r0, sp, #0x0 + add r1, sp, #0x8 + blx TP_GetCalibratedPoint + add r1, sp, #0x0 + ldrh r3, [r1, #0x6] + cmp r3, #0x0 + bne _02016516 + ldrh r2, [r1, #0x0] + ldr r0, _02016558 ; =0x021C48F8 + strh r2, [r0, #0x1c] + ldrh r1, [r1, #0x2] + strh r1, [r0, #0x1e] + b _0201653A +_02016516: + ldr r0, _02016558 ; =0x021C48F8 + ldrh r2, [r0, #0x22] + cmp r2, #0x0 + beq _02016536 + cmp r3, #0x1 + beq _0201652A + cmp r3, #0x2 + beq _02016530 + cmp r3, #0x3 + b _0201653A +_0201652A: + ldrh r1, [r1, #0x2] + strh r1, [r0, #0x1e] + b _0201653A +_02016530: + ldrh r1, [r1, #0x0] + strh r1, [r0, #0x1c] + b _0201653A +_02016536: + mov r0, #0x0 + strh r0, [r1, #0x4] +_0201653A: + add r0, sp, #0x0 + ldrh r2, [r0, #0x4] + ldr r0, _02016558 ; =0x021C48F8 + ldrh r1, [r0, #0x22] + eor r1, r2 + and r1, r2 + strh r1, [r0, #0x20] + strh r2, [r0, #0x22] + add sp, #0x10 + pop {r4, pc} + nop +_02016550: .word 0x027FFFA8 +_02016554: .word 0x021C48B8 +_02016558: .word 0x021C48F8 +_0201655C: .word 0x04000130 +_02016560: .word 0x00002FFF +_02016564: .word 0x021C4918 + + thumb_func_start FUN_02016568 +FUN_02016568: ; 0x02016568 + ldr r0, _02016690 ; =0x021C48B8 + ldr r1, [r0, #0x34] + cmp r1, #0x3 + bls _02016572 + b _0201668C +_02016572: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0201657E: ; jump table (using 16-bit offset) + .short _0201668C - _0201657E - 2; case 0 + .short _02016586 - _0201657E - 2; case 1 + .short _020165BC - _0201657E - 2; case 2 + .short _02016642 - _0201657E - 2; case 3 +_02016586: + ldr r2, [r0, #0x48] + mov r1, #0x8 + add r3, r2, #0x0 + tst r3, r1 + beq _02016596 + lsl r1, r1, #0x7 + orr r1, r2 + str r1, [r0, #0x48] +_02016596: + ldr r1, _02016690 ; =0x021C48B8 + mov r0, #0x8 + ldr r2, [r1, #0x44] + add r3, r2, #0x0 + tst r3, r0 + beq _020165A8 + lsl r0, r0, #0x7 + orr r0, r2 + str r0, [r1, #0x44] +_020165A8: + ldr r1, _02016690 ; =0x021C48B8 + mov r0, #0x8 + ldr r2, [r1, #0x4c] + add r3, r2, #0x0 + tst r3, r0 + beq _0201668C + lsl r0, r0, #0x7 + orr r0, r2 + str r0, [r1, #0x4c] + bx lr +_020165BC: + ldr r3, [r0, #0x48] + mov r0, #0x1 + lsl r0, r0, #0xa + add r2, r3, #0x0 + mov r1, #0x0 + tst r2, r0 + beq _020165CE + lsl r0, r0, #0x1 + orr r1, r0 +_020165CE: + mov r0, #0x2 + lsl r0, r0, #0xa + add r2, r3, #0x0 + tst r2, r0 + beq _020165DC + lsr r0, r0, #0x1 + orr r1, r0 +_020165DC: + ldr r2, _02016690 ; =0x021C48B8 + ldr r0, _02016694 ; =0x0000F3FF + ldr r3, [r2, #0x48] + and r0, r3 + orr r0, r1 + str r0, [r2, #0x48] + ldr r3, [r2, #0x44] + mov r1, #0x1 + lsl r1, r1, #0xa + add r2, r3, #0x0 + mov r0, #0x0 + tst r2, r1 + beq _020165FA + lsl r1, r1, #0x1 + orr r0, r1 +_020165FA: + mov r1, #0x2 + lsl r1, r1, #0xa + add r2, r3, #0x0 + tst r2, r1 + beq _02016608 + lsr r1, r1, #0x1 + orr r0, r1 +_02016608: + ldr r2, _02016690 ; =0x021C48B8 + ldr r1, _02016694 ; =0x0000F3FF + ldr r3, [r2, #0x44] + and r1, r3 + orr r0, r1 + str r0, [r2, #0x44] + ldr r3, [r2, #0x4c] + mov r1, #0x1 + lsl r1, r1, #0xa + add r2, r3, #0x0 + mov r0, #0x0 + tst r2, r1 + beq _02016626 + lsl r1, r1, #0x1 + orr r0, r1 +_02016626: + mov r1, #0x2 + lsl r1, r1, #0xa + add r2, r3, #0x0 + tst r2, r1 + beq _02016634 + lsr r1, r1, #0x1 + orr r0, r1 +_02016634: + ldr r2, _02016690 ; =0x021C48B8 + ldr r1, _02016694 ; =0x0000F3FF + ldr r3, [r2, #0x4c] + and r1, r3 + orr r0, r1 + str r0, [r2, #0x4c] + bx lr +_02016642: + mov r1, #0x2 + ldr r2, [r0, #0x48] + lsl r1, r1, #0x8 + tst r1, r2 + beq _02016652 + mov r1, #0x1 + orr r1, r2 + str r1, [r0, #0x48] +_02016652: + ldr r1, _02016690 ; =0x021C48B8 + mov r0, #0x2 + ldr r2, [r1, #0x44] + lsl r0, r0, #0x8 + tst r0, r2 + beq _02016664 + mov r0, #0x1 + orr r0, r2 + str r0, [r1, #0x44] +_02016664: + ldr r1, _02016690 ; =0x021C48B8 + mov r0, #0x2 + ldr r2, [r1, #0x4c] + lsl r0, r0, #0x8 + tst r0, r2 + beq _02016676 + mov r0, #0x1 + orr r0, r2 + str r0, [r1, #0x4c] +_02016676: + ldr r1, _02016690 ; =0x021C48B8 + ldr r0, _02016698 ; =0x0000FCFF + ldr r2, [r1, #0x48] + and r2, r0 + str r2, [r1, #0x48] + ldr r2, [r1, #0x44] + and r2, r0 + str r2, [r1, #0x44] + ldr r2, [r1, #0x4c] + and r0, r2 + str r0, [r1, #0x4c] +_0201668C: + bx lr + nop +_02016690: .word 0x021C48B8 +_02016694: .word 0x0000F3FF +_02016698: .word 0x0000FCFF + + thumb_func_start FUN_0201669C +FUN_0201669C: ; 0x0201669C + ldr r2, _020166A4 ; =0x021C48B8 + str r0, [r2, #0x54] + str r1, [r2, #0x58] + bx lr + .balign 4 +_020166A4: .word 0x021C48B8 + + thumb_func_start FUN_020166A8 +FUN_020166A8: ; 0x020166A8 + ldr r1, _020166B4 ; =0x021C4918 + ldrb r2, [r1, #0x8] + orr r0, r2 + strb r0, [r1, #0x8] + bx lr + nop +_020166B4: .word 0x021C4918 + + thumb_func_start FUN_020166B8 +FUN_020166B8: ; 0x020166B8 + ldr r1, _020166C4 ; =0x021C4918 + mvn r0, r0 + ldrb r2, [r1, #0x8] + and r0, r2 + strb r0, [r1, #0x8] + bx lr + .balign 4 +_020166C4: .word 0x021C4918 + + thumb_func_start FUN_020166C8 +FUN_020166C8: ; 0x020166C8 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + str r0, [sp, #0x4] + add r0, #0x18 + add r6, r2, #0x0 + str r0, [sp, #0x4] + cmp r6, r0 + bhs _020166E0 + add r6, r0, #0x0 +_020166E0: + cmp r3, #0x0 + beq _020166FE + mov r0, #0x3 + tst r0, r3 + beq _020166F4 + mov r0, #0x3 +_020166EC: + add r3, r3, #0x1 + add r1, r3, #0x0 + tst r1, r0 + bne _020166EC +_020166F4: + mov r0, #0x0 + add r1, r3, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo +_020166FE: + ldr r1, [sp, #0x4] + lsl r7, r6, #0x1 + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r1, #0x1 + lsl r1, r1, #0x2 + add r1, r7, r1 + mov r0, #0x0 + add r1, r6, r1 + mov r2, #0x4 + blx OS_AllocFromArenaLo + ldr r1, _020167F0 ; =0x021C4D28 + str r0, [r1, #0x0] + ldr r1, [sp, #0x4] + add r1, r1, #0x1 + lsl r1, r1, #0x2 + add r1, r0, r1 + ldr r0, _020167F0 ; =0x021C4D28 + str r1, [r0, #0x4] + ldr r0, [sp, #0x4] + lsl r0, r0, #0x2 + add r2, r1, r0 + ldr r1, _020167F0 ; =0x021C4D28 + str r2, [r1, #0x8] + add r1, r2, r0 + ldr r0, _020167F0 ; =0x021C4D28 + str r1, [r0, #0xc] + add r1, r1, r7 + str r1, [r0, #0x10] + strh r6, [r0, #0x14] + strh r4, [r0, #0x16] + ldr r0, [sp, #0x4] + mov r7, #0x0 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, _020167F0 ; =0x021C4D28 + cmp r4, #0x0 + strh r1, [r0, #0x1a] + strh r1, [r0, #0x18] + bls _020167A0 + str r7, [sp, #0x0] +_02016752: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _0201675C + cmp r0, #0x2 + beq _02016768 +_0201675C: + ldr r1, [r5, #0x0] + mov r0, #0x0 + mov r2, #0x4 + blx OS_AllocFromArenaLo + b _02016772 +_02016768: + ldr r1, [r5, #0x0] + mov r0, #0x2 + mov r2, #0x4 + blx OS_AllocFromArenaHi +_02016772: + cmp r0, #0x0 + beq _0201678E + ldr r1, [r5, #0x0] + mov r2, #0x0 + blx tempName_NNS_FndCreateExpHeapEx + ldr r1, _020167F0 ; =0x021C4D28 + ldr r2, [r1, #0x0] + ldr r1, [sp, #0x0] + str r0, [r2, r1] + ldr r0, _020167F0 ; =0x021C4D28 + ldr r0, [r0, #0x10] + strb r7, [r0, r7] + b _02016792 +_0201678E: + bl ErrorHandling +_02016792: + ldr r0, [sp, #0x0] + add r7, r7, #0x1 + add r0, r0, #0x4 + add r5, #0x8 + str r0, [sp, #0x0] + cmp r7, r4 + blo _02016752 +_020167A0: + ldr r0, [sp, #0x4] + add r1, r0, #0x1 + cmp r4, r1 + bhs _020167C0 + ldr r3, _020167F0 ; =0x021C4D28 + lsl r2, r4, #0x2 + mov r0, #0x0 +_020167AE: + ldr r5, [r3, #0x0] + str r0, [r5, r2] + ldrh r7, [r3, #0x1a] + ldr r5, [r3, #0x10] + add r2, r2, #0x4 + strb r7, [r5, r4] + add r4, r4, #0x1 + cmp r4, r1 + blo _020167AE +_020167C0: + cmp r4, r6 + bhs _020167D2 + ldr r0, _020167F0 ; =0x021C4D28 +_020167C6: + ldrh r2, [r0, #0x1a] + ldr r1, [r0, #0x10] + strb r2, [r1, r4] + add r4, r4, #0x1 + cmp r4, r6 + blo _020167C6 +_020167D2: + mov r4, #0x0 + cmp r6, #0x0 + bls _020167EA + ldr r0, _020167F0 ; =0x021C4D28 + add r3, r4, #0x0 + add r2, r4, #0x0 +_020167DE: + ldr r1, [r0, #0xc] + add r4, r4, #0x1 + strh r2, [r1, r3] + add r3, r3, #0x2 + cmp r4, r6 + blo _020167DE +_020167EA: + add sp, #0x8 + pop {r3-r7, pc} + nop +_020167F0: .word 0x021C4D28 + + thumb_func_start FUN_020167F4 +FUN_020167F4: ; 0x020167F4 + ldr r1, _02016818 ; =0x021C4D28 + ldrh r0, [r1, #0x16] + ldrh r3, [r1, #0x18] + cmp r0, r3 + bge _02016812 + ldr r2, [r1, #0x0] + lsl r1, r0, #0x2 + add r2, r2, r1 +_02016804: + ldr r1, [r2, #0x0] + cmp r1, #0x0 + beq _02016816 + add r0, r0, #0x1 + add r2, r2, #0x4 + cmp r0, r3 + blt _02016804 +_02016812: + mov r0, #0x0 + mvn r0, r0 +_02016816: + bx lr + .balign 4 +_02016818: .word 0x021C4D28 + + thumb_func_start FUN_0201681C +FUN_0201681C: ; 0x0201681C + push {r3, lr} + mov r3, #0x4 + bl FUN_02016834 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02016828 +FUN_02016828: ; 0x02016828 + push {r3, lr} + mov r3, #0x3 + mvn r3, r3 + bl FUN_02016834 + pop {r3, pc} + + thumb_func_start FUN_02016834 +FUN_02016834: ; 0x02016834 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r5, r1, #0x0 + str r2, [sp, #0x0] + add r7, r3, #0x0 + blx OS_GetProcMode + cmp r0, #0x12 + bne _0201684C + bl ErrorHandling +_0201684C: + ldr r1, _020168CC ; =0x021C4D28 + ldr r0, [r1, #0x10] + ldrh r3, [r1, #0x1a] + ldrb r2, [r0, r5] + cmp r3, r2 + bne _020168C2 + ldrb r0, [r0, r4] + ldr r1, [r1, #0x0] + lsl r0, r0, #0x2 + ldr r6, [r1, r0] + cmp r6, #0x0 + beq _020168BC + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + add r2, r7, #0x0 + blx tempName_NNS_FndAllocFromExpHeapEx + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _020168B6 + bl FUN_020167F4 + add r7, r0, #0x0 + bmi _020168B0 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x0] + mov r2, #0x0 + lsl r4, r7, #0x2 + blx tempName_NNS_FndCreateExpHeapEx + ldr r1, _020168CC ; =0x021C4D28 + ldr r2, [r1, #0x0] + str r0, [r2, r4] + ldr r0, [r1, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + beq _020168AA + ldr r0, [r1, #0x4] + str r6, [r0, r4] + ldr r0, [sp, #0x4] + ldr r2, [r1, #0x8] + add sp, #0x8 + str r0, [r2, r4] + ldr r0, [r1, #0x10] + strb r7, [r0, r5] + mov r0, #0x1 + pop {r3-r7, pc} +_020168AA: + bl ErrorHandling + b _020168C6 +_020168B0: + bl ErrorHandling + b _020168C6 +_020168B6: + bl ErrorHandling + b _020168C6 +_020168BC: + bl ErrorHandling + b _020168C6 +_020168C2: + bl ErrorHandling +_020168C6: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020168CC: .word 0x021C4D28 + + thumb_func_start FUN_020168D0 +FUN_020168D0: ; 0x020168D0 + push {r4, lr} + add r4, r0, #0x0 + blx OS_GetProcMode + cmp r0, #0x12 + bne _020168E0 + bl ErrorHandling +_020168E0: + ldr r0, _02016940 ; =0x021C4D28 + ldr r1, [r0, #0x0] + ldr r0, [r0, #0x10] + ldrb r0, [r0, r4] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0201693E + blx thunk_FUN_020adc8c + ldr r1, _02016940 ; =0x021C4D28 + ldr r0, [r1, #0x10] + ldrb r0, [r0, r4] + lsl r2, r0, #0x2 + ldr r0, [r1, #0x4] + ldr r1, [r1, #0x8] + ldr r0, [r0, r2] + ldr r1, [r1, r2] + cmp r0, #0x0 + beq _02016912 + cmp r1, #0x0 + beq _02016912 + blx FUN_020ADDF0 + b _02016916 +_02016912: + bl ErrorHandling +_02016916: + ldr r1, _02016940 ; =0x021C4D28 + mov r0, #0x0 + ldr r2, [r1, #0x10] + ldr r3, [r1, #0x0] + ldrb r2, [r2, r4] + lsl r2, r2, #0x2 + str r0, [r3, r2] + ldr r2, [r1, #0x10] + ldr r3, [r1, #0x4] + ldrb r2, [r2, r4] + lsl r2, r2, #0x2 + str r0, [r3, r2] + ldr r2, [r1, #0x10] + ldr r3, [r1, #0x8] + ldrb r2, [r2, r4] + lsl r2, r2, #0x2 + str r0, [r3, r2] + ldrh r2, [r1, #0x1a] + ldr r0, [r1, #0x10] + strb r2, [r0, r4] +_0201693E: + pop {r4, pc} + .balign 4 +_02016940: .word 0x021C4D28 + + thumb_func_start FUN_02016944 +FUN_02016944: ; 0x02016944 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + cmp r5, #0x0 + bne _02016956 + bl ErrorHandling +_02016956: + blx OS_DisableInterrupts + add r4, #0x10 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + blx tempName_NNS_FndAllocFromExpHeapEx + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + blx OS_RestoreInterrupts + cmp r4, #0x0 + beq _02016984 + ldr r1, [r4, #0xc] + mov r0, #0xff + bic r1, r0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + orr r0, r1 + str r0, [r4, #0xc] + add r4, #0x10 +_02016984: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02016988 +FUN_02016988: ; 0x02016988 + push {r3, lr} + bl FUN_02031810 + cmp r0, #0x0 + beq _02016996 + bl FUN_0208A9B8 +_02016996: + pop {r3, pc} + + thumb_func_start FUN_02016998 +FUN_02016998: ; 0x02016998 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _020169D4 ; =0x021C4D28 + mov r4, #0x0 + ldrh r2, [r0, #0x14] + cmp r5, r2 + bhs _020169BA + ldr r2, [r0, #0x0] + ldr r0, [r0, #0x10] + add r3, r5, #0x0 + ldrb r0, [r0, r5] + lsl r0, r0, #0x2 + ldr r0, [r2, r0] + mov r2, #0x4 + bl FUN_02016944 + add r4, r0, #0x0 +_020169BA: + cmp r4, #0x0 + beq _020169CC + ldr r0, _020169D4 ; =0x021C4D28 + lsl r1, r5, #0x1 + ldr r2, [r0, #0xc] + ldrh r0, [r2, r1] + add r0, r0, #0x1 + strh r0, [r2, r1] + b _020169D0 +_020169CC: + bl FUN_02016988 +_020169D0: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_020169D4: .word 0x021C4D28 + + thumb_func_start FUN_020169D8 +FUN_020169D8: ; 0x020169D8 + push {r3-r5, lr} + ldr r2, _02016A14 ; =0x021C4D28 + add r5, r0, #0x0 + ldrh r0, [r2, #0x14] + mov r4, #0x0 + cmp r5, r0 + bhs _020169FA + ldr r0, [r2, #0x0] + ldr r2, [r2, #0x10] + add r3, r5, #0x0 + ldrb r2, [r2, r5] + lsl r2, r2, #0x2 + ldr r0, [r0, r2] + sub r2, r4, #0x4 + bl FUN_02016944 + add r4, r0, #0x0 +_020169FA: + cmp r4, #0x0 + beq _02016A0C + ldr r0, _02016A14 ; =0x021C4D28 + lsl r1, r5, #0x1 + ldr r2, [r0, #0xc] + ldrh r0, [r2, r1] + add r0, r0, #0x1 + strh r0, [r2, r1] + b _02016A10 +_02016A0C: + bl FUN_02016988 +_02016A10: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02016A14: .word 0x021C4D28 + + thumb_func_start FUN_02016A18 +FUN_02016A18: ; 0x02016A18 + push {r3-r7, lr} + add r6, r0, #0x0 + sub r0, r6, #0x4 + ldr r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, _02016A88 ; =0x021C4D28 + ldrh r1, [r0, #0x14] + cmp r4, r1 + bhs _02016A80 + ldr r1, [r0, #0x0] + ldr r0, [r0, #0x10] + ldrb r0, [r0, r4] + lsl r0, r0, #0x2 + ldr r7, [r1, r0] + cmp r7, #0x0 + bne _02016A3E + bl ErrorHandling +_02016A3E: + ldr r0, _02016A88 ; =0x021C4D28 + lsl r5, r4, #0x1 + ldr r0, [r0, #0xc] + ldrh r0, [r0, r5] + cmp r0, #0x0 + bne _02016A50 + add r0, r4, #0x0 + bl FUN_02016B90 +_02016A50: + ldr r0, _02016A88 ; =0x021C4D28 + ldr r0, [r0, #0xc] + ldrh r0, [r0, r5] + cmp r0, #0x0 + bne _02016A5E + bl ErrorHandling +_02016A5E: + ldr r0, _02016A88 ; =0x021C4D28 + ldr r1, [r0, #0xc] + ldrh r0, [r1, r5] + sub r0, r0, #0x1 + strh r0, [r1, r5] + blx OS_DisableInterrupts + sub r6, #0x10 + add r4, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + blx FUN_020ADDF0 + add r0, r4, #0x0 + blx OS_RestoreInterrupts + pop {r3-r7, pc} +_02016A80: + bl ErrorHandling + pop {r3-r7, pc} + nop +_02016A88: .word 0x021C4D28 + + thumb_func_start FUN_02016A8C +FUN_02016A8C: ; 0x02016A8C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + blx OS_GetProcMode + cmp r0, #0x12 + bne _02016A9E + bl ErrorHandling +_02016A9E: + ldr r0, _02016AF4 ; =0x021C4D28 + ldrh r1, [r0, #0x14] + cmp r5, r1 + bhs _02016AEE + ldr r1, [r0, #0x0] + ldr r0, [r0, #0x10] + ldrb r0, [r0, r5] + lsl r0, r0, #0x2 + ldr r6, [r1, r0] + cmp r6, #0x0 + bne _02016AB8 + bl ErrorHandling +_02016AB8: + sub r0, r4, #0x4 + ldr r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, r5 + beq _02016AC8 + bl ErrorHandling +_02016AC8: + sub r4, #0x10 + add r0, r6, #0x0 + add r1, r4, #0x0 + blx FUN_020ADDF0 + ldr r0, _02016AF4 ; =0x021C4D28 + lsl r4, r5, #0x1 + ldr r0, [r0, #0xc] + ldrh r0, [r0, r4] + cmp r0, #0x0 + bne _02016AE2 + bl ErrorHandling +_02016AE2: + ldr r0, _02016AF4 ; =0x021C4D28 + ldr r1, [r0, #0xc] + ldrh r0, [r1, r4] + sub r0, r0, #0x1 + strh r0, [r1, r4] + pop {r4-r6, pc} +_02016AEE: + bl ErrorHandling + pop {r4-r6, pc} + .balign 4 +_02016AF4: .word 0x021C4D28 + + thumb_func_start FUN_02016AF8 +FUN_02016AF8: ; 0x02016AF8 + push {r3, lr} + ldr r1, _02016B1C ; =0x021C4D28 + ldrh r2, [r1, #0x14] + cmp r0, r2 + bhs _02016B12 + ldr r2, [r1, #0x0] + ldr r1, [r1, #0x10] + ldrb r0, [r1, r0] + lsl r0, r0, #0x2 + ldr r0, [r2, r0] + blx FUN_020ADDC8 + pop {r3, pc} +_02016B12: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + nop +_02016B1C: .word 0x021C4D28 + + thumb_func_start FUN_02016B20 +FUN_02016B20: ; 0x02016B20 + push {r4, lr} + ldr r4, _02016B40 ; =0x021C4D28 + ldrh r3, [r4, #0x14] + cmp r1, r3 + bhs _02016B3A + ldr r3, [r4, #0x0] + ldr r4, [r4, #0x10] + ldrb r1, [r4, r1] + lsl r1, r1, #0x2 + ldr r1, [r3, r1] + blx FUN_020AE82C + pop {r4, pc} +_02016B3A: + bl ErrorHandling + pop {r4, pc} + .balign 4 +_02016B40: .word 0x021C4D28 + + thumb_func_start FUN_02016B44 +FUN_02016B44: ; 0x02016B44 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + blx OS_GetProcMode + cmp r0, #0x12 + bne _02016B56 + bl ErrorHandling +_02016B56: + add r0, r5, #0x0 + sub r0, #0x10 + blx FUN_020ADDC0 + add r4, #0x10 + cmp r0, r4 + blo _02016B84 + sub r2, r5, #0x4 + ldr r0, _02016B8C ; =0x021C4D28 + ldr r2, [r2, #0x0] + ldr r1, [r0, #0x0] + lsl r2, r2, #0x18 + ldr r0, [r0, #0x10] + lsr r2, r2, #0x18 + ldrb r0, [r0, r2] + sub r5, #0x10 + add r2, r4, #0x0 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + add r1, r5, #0x0 + blx FUN_020ADE2C + pop {r3-r5, pc} +_02016B84: + bl ErrorHandling + pop {r3-r5, pc} + nop +_02016B8C: .word 0x021C4D28 + + thumb_func_start FUN_02016B90 +FUN_02016B90: ; 0x02016B90 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02016B94 +FUN_02016B94: ; 0x02016B94 + push {r3-r5, lr} + mov r1, #0x5a + lsl r1, r1, #0x2 + add r5, r0, #0x0 + bl FUN_02016998 + mov r2, #0x5a + mov r1, #0x0 + lsl r2, r2, #0x2 + add r4, r0, #0x0 + blx Call_FillMemWithValue + str r5, [r4, #0x0] + mov r0, #0x0 + strh r0, [r4, #0x4] + strh r0, [r4, #0x6] + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02016BB8 +FUN_02016BB8: ; 0x02016BB8 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02016BBC +FUN_02016BBC: ; 0x02016BBC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0xc] + blx GX_SetGraphicsMode + ldr r0, [r4, #0x8] + blx GXS_SetGraphicsMode + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02016BF0 ; =0xC7FFFFFF + and r1, r0 + str r1, [r2, #0x0] + ldr r1, [r2, #0x0] + asr r0, r0, #0x3 + and r0, r1 + str r0, [r2, #0x0] + bl FUN_0201E6D8 + bl FUN_0201E740 + pop {r4, pc} + nop +_02016BF0: .word 0xC7FFFFFF + + thumb_func_start FUN_02016BF4 +FUN_02016BF4: ; 0x02016BF4 + push {r3, lr} + add r2, r0, #0x0 + cmp r1, #0x0 + bne _02016C0C + ldr r0, [r2, #0x0] + ldr r1, [r2, #0x4] + ldr r2, [r2, #0xc] + blx GX_SetGraphicsMode + bl FUN_0201E6D8 + pop {r3, pc} +_02016C0C: + ldr r0, [r2, #0x8] + blx GXS_SetGraphicsMode + bl FUN_0201E740 + pop {r3, pc} + + thumb_func_start FUN_02016C18 +FUN_02016C18: ; 0x02016C18 + push {r3-r7, lr} + sub sp, #0x18 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + add r4, r2, #0x0 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x10] + ldr r1, [sp, #0x8] + bl FUN_020177DC + add r5, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r0, #0x7 + bls _02016C36 + b _0201705A +_02016C36: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02016C42: ; jump table (using 16-bit offset) + .short _02016C52 - _02016C42 - 2; case 0 + .short _02016CAA - _02016C42 - 2; case 1 + .short _02016D02 - _02016C42 - 2; case 2 + .short _02016DA4 - _02016C42 - 2; case 3 + .short _02016E46 - _02016C42 - 2; case 4 + .short _02016E9E - _02016C42 - 2; case 5 + .short _02016EF6 - _02016C42 - 2; case 6 + .short _02016F98 - _02016C42 - 2; case 7 +_02016C52: + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0xc] + ldr r2, _02016FB4 ; =0x04000008 + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0xc] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016CA0 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016CA0: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016CAA: + mov r0, #0x2 + mov r1, #0x1 + bl FUN_0201E6E4 + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0x10] + ldr r2, _02016FB8 ; =0x0400000A + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0x10] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016CF8 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016CF8: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016D02: + mov r0, #0x4 + mov r1, #0x1 + bl FUN_0201E6E4 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016D18 + cmp r0, #0x1 + beq _02016D3A + cmp r0, #0x2 + beq _02016D5C +_02016D18: + ldrb r1, [r4, #0x12] + ldr r7, _02016FBC ; =0x0400000C + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016D7C +_02016D3A: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, _02016FBC ; =0x0400000C + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016D7C +_02016D5C: + ldrb r1, [r4, #0x12] + ldr r7, _02016FBC ; =0x0400000C + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016D7C: + ldr r0, _02016FBC ; =0x0400000C + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016D9A + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016D9A: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016DA4: + mov r0, #0x8 + mov r1, #0x1 + bl FUN_0201E6E4 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016DBA + cmp r0, #0x1 + beq _02016DDC + cmp r0, #0x2 + beq _02016DFE +_02016DBA: + ldrb r1, [r4, #0x12] + ldr r7, _02016FC0 ; =0x0400000E + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016E1E +_02016DDC: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, _02016FC0 ; =0x0400000E + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016E1E +_02016DFE: + ldrb r1, [r4, #0x12] + ldr r7, _02016FC0 ; =0x0400000E + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016E1E: + ldr r0, _02016FC0 ; =0x0400000E + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016E3C + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016E3C: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016E46: + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E74C + ldrb r3, [r4, #0x14] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + ldrb r2, [r4, #0x13] + lsl r6, r3, #0xd + lsl r0, r0, #0x7 + lsl r3, r2, #0x2 + str r0, [sp, #0x14] + ldr r2, _02016FC4 ; =0x04001008 + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r1, r0 + ldr r0, [sp, #0x14] + orr r0, r1 + orr r0, r7 + orr r0, r3 + orr r0, r6 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016E94 + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016E94: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016E9E: + mov r0, #0x2 + mov r1, #0x1 + bl FUN_0201E74C + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrb r3, [r4, #0x14] + lsl r0, r0, #0x7 + mov r12, r0 + ldr r2, _02016FC8 ; =0x0400100A + lsl r7, r1, #0x8 + ldrh r1, [r2, #0x0] + mov r0, #0x43 + lsl r3, r3, #0xd + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + mov r1, r12 + orr r0, r1 + orr r0, r7 + orr r0, r6 + orr r0, r3 + strh r0, [r2, #0x0] + ldrh r1, [r2, #0x0] + mov r0, #0x3 + bic r1, r0 + ldrb r0, [r4, #0x15] + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02016EEC + ldrh r1, [r2, #0x0] + mov r0, #0x40 + orr r0, r1 + strh r0, [r2, #0x0] + b _0201705A +_02016EEC: + ldrh r1, [r2, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r2, #0x0] + b _0201705A +_02016EF6: + mov r0, #0x4 + mov r1, #0x1 + bl FUN_0201E74C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016F0C + cmp r0, #0x1 + beq _02016F2E + cmp r0, #0x2 + beq _02016F50 +_02016F0C: + ldrb r1, [r4, #0x12] + ldr r7, _02016FCC ; =0x0400100C + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016F70 +_02016F2E: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, _02016FCC ; =0x0400100C + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02016F70 +_02016F50: + ldrb r1, [r4, #0x12] + ldr r7, _02016FCC ; =0x0400100C + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02016F70: + ldr r0, _02016FCC ; =0x0400100C + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02016F8E + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02016F8E: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] + b _0201705A +_02016F98: + mov r0, #0x8 + mov r1, #0x1 + bl FUN_0201E74C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02016FAE + cmp r0, #0x1 + beq _02016FF2 + cmp r0, #0x2 + beq _02017014 +_02016FAE: + ldrb r1, [r4, #0x12] + ldr r7, _02016FD0 ; =0x0400100E + b _02016FD4 + .balign 4 +_02016FB4: .word 0x04000008 +_02016FB8: .word 0x0400000A +_02016FBC: .word 0x0400000C +_02016FC0: .word 0x0400000E +_02016FC4: .word 0x04001008 +_02016FC8: .word 0x0400100A +_02016FCC: .word 0x0400100C +_02016FD0: .word 0x0400100E +_02016FD4: + ldrb r2, [r4, #0x13] + lsl r3, r1, #0x8 + ldrb r0, [r4, #0x11] + lsl r6, r2, #0x2 + ldrh r1, [r7, #0x0] + lsl r2, r0, #0x7 + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02017034 +_02016FF2: + ldrb r2, [r4, #0x13] + ldrb r1, [r4, #0x12] + ldrb r0, [r4, #0x16] + lsl r3, r2, #0x2 + ldr r7, _020170F0 ; =0x0400100E + lsl r2, r1, #0x8 + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] + b _02017034 +_02017014: + ldrb r1, [r4, #0x12] + ldr r7, _020170F0 ; =0x0400100E + ldrb r0, [r4, #0x16] + lsl r3, r1, #0x8 + ldrb r2, [r4, #0x13] + lsl r6, r0, #0xd + ldrh r1, [r7, #0x0] + mov r0, #0x43 + lsl r2, r2, #0x2 + and r0, r1 + lsl r1, r5, #0xe + orr r0, r1 + orr r0, r2 + orr r0, r3 + orr r0, r6 + strh r0, [r7, #0x0] +_02017034: + ldr r0, _020170F0 ; =0x0400100E + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + ldrb r1, [r4, #0x15] + orr r1, r2 + strh r1, [r0, #0x0] + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _02017052 + ldrh r2, [r0, #0x0] + mov r1, #0x40 + orr r1, r2 + strh r1, [r0, #0x0] + b _0201705A +_02017052: + ldrh r2, [r0, #0x0] + mov r1, #0x40 + bic r2, r1 + strh r2, [r0, #0x0] +_0201705A: + ldr r0, [sp, #0x4] + mov r1, #0x2c + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mul r5, r1 + add r2, r0, r5 + mov r3, #0x0 + mov r0, #0x1 + strh r3, [r2, #0x20] + lsl r0, r0, #0xc + str r0, [r2, #0x24] + str r0, [r2, #0x28] + str r3, [r2, #0x2c] + str r3, [r2, #0x30] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020170A2 + ldr r0, [sp, #0x0] + ldr r6, [sp, #0x0] + ldr r0, [r0, #0x0] + add r6, #0x8 + bl FUN_02016998 + str r0, [r6, r5] + ldr r1, [r6, r5] + ldr r2, [r4, #0x8] + mov r0, #0x0 + blx MIi_CpuClear16 + ldr r0, [sp, #0x0] + ldr r2, [r4, #0x8] + add r1, r0, r5 + str r2, [r1, #0xc] + ldr r0, [r4, #0xc] + str r0, [r1, #0x10] + b _020170A8 +_020170A2: + str r3, [r2, #0x8] + str r3, [r2, #0xc] + str r3, [r2, #0x10] +_020170A8: + ldr r0, [sp, #0x0] + ldrb r1, [r4, #0x10] + add r0, r0, r5 + strb r1, [r0, #0x1d] + ldr r1, [sp, #0x8] + strb r1, [r0, #0x1c] + ldrb r1, [r4, #0x11] + strb r1, [r0, #0x1e] + ldr r1, [sp, #0x8] + cmp r1, #0x0 + bne _020170CA + ldrb r1, [r4, #0x11] + cmp r1, #0x0 + bne _020170CA + mov r1, #0x20 + strb r1, [r0, #0x1f] + b _020170D2 +_020170CA: + ldr r0, [sp, #0x0] + mov r1, #0x40 + add r0, r0, r5 + strb r1, [r0, #0x1f] +_020170D2: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [r4, #0x0] + mov r2, #0x0 + bl FUN_020179E0 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r3, [r4, #0x4] + mov r2, #0x3 + bl FUN_020179E0 + add sp, #0x18 + pop {r3-r7, pc} + nop +_020170F0: .word 0x0400100E + + thumb_func_start FUN_020170F4 +FUN_020170F4: ; 0x020170F4 + push {r3-r7, lr} + sub sp, #0x20 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r1, r2, #0x0 + add r0, r3, #0x0 + cmp r1, #0x0 + bne _0201710C + mov r2, #0x2c + mul r2, r4 + add r2, r5, r2 + strb r0, [r2, #0x1e] +_0201710C: + cmp r4, #0x7 + bls _02017112 + b _020177C4 +_02017112: + add r2, r4, r4 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0201711E: ; jump table (using 16-bit offset) + .short _0201712E - _0201711E - 2; case 0 + .short _0201719A - _0201711E - 2; case 1 + .short _02017206 - _0201711E - 2; case 2 + .short _0201733A - _0201711E - 2; case 3 + .short _0201746E - _0201711E - 2; case 4 + .short _020174F4 - _0201711E - 2; case 5 + .short _02017560 - _0201711E - 2; case 6 + .short _02017694 - _0201711E - 2; case 7 +_0201712E: + ldr r2, _02017480 ; =0x04000008 + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x1e] + bne _0201714A + ldrh r3, [r2, #0x1e] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x1e] + b _0201715C +_0201714A: + cmp r1, #0x2 + bne _0201715C + ldrh r3, [r2, #0x1e] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x1e] +_0201715C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1e] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, _02017480 ; =0x04000008 + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_0201719A: + ldr r2, _02017488 ; =0x0400000A + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x1c] + bne _020171B6 + ldrh r3, [r2, #0x1c] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x1c] + b _020171C8 +_020171B6: + cmp r1, #0x2 + bne _020171C8 + ldrh r3, [r2, #0x1c] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x1c] +_020171C8: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1c] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, _02017488 ; =0x0400000A + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_02017206: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _0201721A + cmp r3, #0x1 + beq _0201727A + cmp r3, #0x2 + beq _020172DA +_0201721A: + ldr r3, _0201748C ; =0x0400000C + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x1a] + bne _02017236 + ldrh r4, [r3, #0x1a] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x1a] + b _02017248 +_02017236: + cmp r1, #0x2 + bne _02017248 + ldrh r4, [r3, #0x1a] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x1a] +_02017248: + add r0, sp, #0x0 + ldrh r3, [r0, #0x1a] + add r2, r5, r2 + ldr r6, _0201748C ; =0x0400000C + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201727A: + ldr r2, _0201748C ; =0x0400000C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x18] + bne _02017296 + ldrh r3, [r2, #0x18] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x18] + b _020172A8 +_02017296: + cmp r1, #0x2 + bne _020172A8 + ldrh r3, [r2, #0x18] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x18] +_020172A8: + add r0, sp, #0x0 + ldrh r3, [r0, #0x18] + ldr r6, _0201748C ; =0x0400000C + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020172DA: + ldr r2, _0201748C ; =0x0400000C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x16] + bne _020172F6 + ldrh r3, [r2, #0x16] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x16] + b _02017308 +_020172F6: + cmp r1, #0x2 + bne _02017308 + ldrh r3, [r2, #0x16] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x16] +_02017308: + add r0, sp, #0x0 + ldrh r3, [r0, #0x16] + ldr r6, _0201748C ; =0x0400000C + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201733A: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _0201734E + cmp r3, #0x1 + beq _020173AE + cmp r3, #0x2 + beq _0201740E +_0201734E: + ldr r3, _02017490 ; =0x0400000E + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x14] + bne _0201736A + ldrh r4, [r3, #0x14] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x14] + b _0201737C +_0201736A: + cmp r1, #0x2 + bne _0201737C + ldrh r4, [r3, #0x14] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x14] +_0201737C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x14] + add r2, r5, r2 + ldr r6, _02017490 ; =0x0400000E + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020173AE: + ldr r2, _02017490 ; =0x0400000E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x12] + bne _020173CA + ldrh r3, [r2, #0x12] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x12] + b _020173DC +_020173CA: + cmp r1, #0x2 + bne _020173DC + ldrh r3, [r2, #0x12] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x12] +_020173DC: + add r0, sp, #0x0 + ldrh r3, [r0, #0x12] + ldr r6, _02017490 ; =0x0400000E + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201740E: + ldr r2, _02017490 ; =0x0400000E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x10] + bne _0201742A + ldrh r3, [r2, #0x10] + ldr r1, _02017484 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x10] + b _0201743C +_0201742A: + cmp r1, #0x2 + bne _0201743C + ldrh r3, [r2, #0x10] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x10] +_0201743C: + add r0, sp, #0x0 + ldrh r3, [r0, #0x10] + ldr r6, _02017490 ; =0x0400000E + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_0201746E: + ldr r2, _02017494 ; =0x04001008 + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0xe] + bne _020174A4 + ldrh r3, [r2, #0xe] + ldr r1, _02017484 ; =0xFFFFE0FF + b _02017498 + .balign 4 +_02017480: .word 0x04000008 +_02017484: .word 0xFFFFE0FF +_02017488: .word 0x0400000A +_0201748C: .word 0x0400000C +_02017490: .word 0x0400000E +_02017494: .word 0x04001008 +_02017498: + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0xe] + b _020174B6 +_020174A4: + cmp r1, #0x2 + bne _020174B6 + ldrh r3, [r2, #0xe] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0xe] +_020174B6: + add r0, sp, #0x0 + ldrh r3, [r0, #0xe] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, _020177C8 ; =0x04001008 + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_020174F4: + ldr r2, _020177CC ; =0x0400100A + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0xc] + bne _02017510 + ldrh r3, [r2, #0xc] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0xc] + b _02017522 +_02017510: + cmp r1, #0x2 + bne _02017522 + ldrh r3, [r2, #0xc] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0xc] +_02017522: + add r0, sp, #0x0 + ldrh r3, [r0, #0xc] + add sp, #0x20 + lsl r0, r3, #0x12 + lsr r6, r0, #0x1f + lsl r0, r3, #0x1a + lsr r2, r0, #0x1c + lsl r0, r3, #0x13 + lsr r1, r0, #0x1b + mov r0, #0x2c + mul r0, r4 + add r0, r5, r0 + lsl r3, r3, #0x10 + lsr r5, r3, #0x1e + lsl r3, r2, #0x2 + ldrb r0, [r0, #0x1e] + lsl r2, r1, #0x8 + lsl r4, r6, #0xd + lsl r1, r0, #0x7 + ldr r0, _020177CC ; =0x0400100A + mov r6, #0x43 + ldrh r7, [r0, #0x0] + lsl r5, r5, #0xe + and r6, r7 + orr r5, r6 + orr r1, r5 + orr r1, r2 + orr r1, r3 + orr r1, r4 + strh r1, [r0, #0x0] + pop {r3-r7, pc} +_02017560: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _02017574 + cmp r3, #0x1 + beq _020175D4 + cmp r3, #0x2 + beq _02017634 +_02017574: + ldr r3, _020177D4 ; =0x0400100C + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0xa] + bne _02017590 + ldrh r4, [r3, #0xa] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0xa] + b _020175A2 +_02017590: + cmp r1, #0x2 + bne _020175A2 + ldrh r4, [r3, #0xa] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0xa] +_020175A2: + add r0, sp, #0x0 + ldrh r3, [r0, #0xa] + add r2, r5, r2 + ldr r6, _020177D4 ; =0x0400100C + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_020175D4: + ldr r2, _020177D4 ; =0x0400100C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x8] + bne _020175F0 + ldrh r3, [r2, #0x8] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x8] + b _02017602 +_020175F0: + cmp r1, #0x2 + bne _02017602 + ldrh r3, [r2, #0x8] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x8] +_02017602: + add r0, sp, #0x0 + ldrh r3, [r0, #0x8] + ldr r6, _020177D4 ; =0x0400100C + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017634: + ldr r2, _020177D4 ; =0x0400100C + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x6] + bne _02017650 + ldrh r3, [r2, #0x6] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x6] + b _02017662 +_02017650: + cmp r1, #0x2 + bne _02017662 + ldrh r3, [r2, #0x6] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x6] +_02017662: + add r0, sp, #0x0 + ldrh r3, [r0, #0x6] + ldr r6, _020177D4 ; =0x0400100C + add sp, #0x20 + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017694: + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldrb r3, [r3, #0x1c] + cmp r3, #0x0 + beq _020176A8 + cmp r3, #0x1 + beq _02017708 + cmp r3, #0x2 + beq _02017768 +_020176A8: + ldr r3, _020177D8 ; =0x0400100E + cmp r1, #0x1 + ldrh r4, [r3, #0x0] + add r3, sp, #0x0 + strh r4, [r3, #0x4] + bne _020176C4 + ldrh r4, [r3, #0x4] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r4 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r3, #0x4] + b _020176D6 +_020176C4: + cmp r1, #0x2 + bne _020176D6 + ldrh r4, [r3, #0x4] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r4, r1 + lsr r0, r0, #0x1a + orr r0, r4 + strh r0, [r3, #0x4] +_020176D6: + add r0, sp, #0x0 + ldrh r3, [r0, #0x4] + add r2, r5, r2 + ldr r6, _020177D8 ; =0x0400100E + lsl r0, r3, #0x1a + ldrb r4, [r2, #0x1e] + lsr r1, r0, #0x1c + lsl r0, r3, #0x13 + lsl r2, r3, #0x10 + lsr r3, r2, #0x1e + ldrh r5, [r6, #0x0] + lsr r0, r0, #0x1b + lsl r2, r1, #0x2 + lsl r1, r0, #0x8 + lsl r0, r4, #0x7 + mov r4, #0x43 + and r4, r5 + lsl r3, r3, #0xe + orr r3, r4 + orr r0, r3 + orr r0, r1 + orr r0, r2 + add sp, #0x20 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017708: + ldr r2, _020177D8 ; =0x0400100E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x2] + bne _02017724 + ldrh r3, [r2, #0x2] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x2] + b _02017736 +_02017724: + cmp r1, #0x2 + bne _02017736 + ldrh r3, [r2, #0x2] + mov r1, #0x3c + lsl r0, r0, #0x1c + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x2] +_02017736: + add r0, sp, #0x0 + ldrh r3, [r0, #0x2] + ldr r6, _020177D8 ; =0x0400100E + add sp, #0x20 + lsl r1, r3, #0x13 + lsl r0, r3, #0x1a + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsr r0, r0, #0x1c + lsl r1, r0, #0x2 + lsl r0, r4, #0x8 + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] + pop {r3-r7, pc} +_02017768: + ldr r2, _020177D8 ; =0x0400100E + cmp r1, #0x1 + ldrh r3, [r2, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x0] + bne _02017784 + ldrh r3, [r2, #0x0] + ldr r1, _020177D0 ; =0xFFFFE0FF + lsl r0, r0, #0x1b + and r1, r3 + lsr r0, r0, #0x13 + orr r0, r1 + strh r0, [r2, #0x0] + b _02017796 +_02017784: + cmp r1, #0x2 + bne _02017796 + ldrh r3, [r2, #0x0] + mov r1, #0x38 + lsl r0, r0, #0x1d + bic r3, r1 + lsr r0, r0, #0x1a + orr r0, r3 + strh r0, [r2, #0x0] +_02017796: + add r0, sp, #0x0 + ldrh r3, [r0, #0x0] + ldr r6, _020177D8 ; =0x0400100E + lsl r1, r3, #0x13 + lsr r4, r1, #0x1b + lsl r1, r3, #0x12 + lsr r2, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r3, #0x10 + lsr r3, r1, #0x1e + lsl r1, r4, #0x8 + lsr r0, r0, #0x1d + ldrh r5, [r6, #0x0] + mov r4, #0x43 + lsl r3, r3, #0xe + and r4, r5 + lsl r0, r0, #0x2 + orr r3, r4 + orr r0, r3 + lsl r2, r2, #0xd + orr r0, r1 + orr r0, r2 + strh r0, [r6, #0x0] +_020177C4: + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_020177C8: .word 0x04001008 +_020177CC: .word 0x0400100A +_020177D0: .word 0xFFFFE0FF +_020177D4: .word 0x0400100C +_020177D8: .word 0x0400100E + + thumb_func_start FUN_020177DC +FUN_020177DC: ; 0x020177DC + cmp r1, #0x0 + beq _020177EA + cmp r1, #0x1 + beq _0201780A + cmp r1, #0x2 + beq _0201782A + b _0201784A +_020177EA: + cmp r0, #0x1 + bne _020177F2 + mov r0, #0x0 + bx lr +_020177F2: + cmp r0, #0x2 + bne _020177FA + mov r0, #0x2 + bx lr +_020177FA: + cmp r0, #0x3 + bne _02017802 + mov r0, #0x1 + bx lr +_02017802: + cmp r0, #0x4 + bne _0201784A + mov r0, #0x3 + bx lr +_0201780A: + cmp r0, #0x0 + bne _02017812 + mov r0, #0x0 + bx lr +_02017812: + cmp r0, #0x1 + bne _0201781A + mov r0, #0x1 + bx lr +_0201781A: + cmp r0, #0x4 + bne _02017822 + mov r0, #0x2 + bx lr +_02017822: + cmp r0, #0x5 + bne _0201784A + mov r0, #0x3 + bx lr +_0201782A: + cmp r0, #0x0 + bne _02017832 + mov r0, #0x0 + bx lr +_02017832: + cmp r0, #0x1 + bne _0201783A + mov r0, #0x1 + bx lr +_0201783A: + cmp r0, #0x4 + bne _02017842 + mov r0, #0x2 + bx lr +_02017842: + cmp r0, #0x5 + bne _0201784A + mov r0, #0x3 + bx lr +_0201784A: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02017850 +FUN_02017850: ; 0x02017850 + cmp r0, #0x5 + bhi _0201789E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02017860: ; jump table (using 16-bit offset) + .short _0201786C - _02017860 - 2; case 0 + .short _02017874 - _02017860 - 2; case 1 + .short _0201787C - _02017860 - 2; case 2 + .short _02017886 - _02017860 - 2; case 3 + .short _02017890 - _02017860 - 2; case 4 + .short _02017898 - _02017860 - 2; case 5 +_0201786C: + mov r0, #0x10 + strb r0, [r1, #0x0] + strb r0, [r2, #0x0] + bx lr +_02017874: + mov r0, #0x20 + strb r0, [r1, #0x0] + strb r0, [r2, #0x0] + bx lr +_0201787C: + mov r0, #0x20 + strb r0, [r1, #0x0] + mov r0, #0x40 + strb r0, [r2, #0x0] + bx lr +_02017886: + mov r0, #0x40 + strb r0, [r1, #0x0] + mov r0, #0x20 + strb r0, [r2, #0x0] + bx lr +_02017890: + mov r0, #0x40 + strb r0, [r1, #0x0] + strb r0, [r2, #0x0] + bx lr +_02017898: + mov r0, #0x80 + strb r0, [r1, #0x0] + strb r0, [r2, #0x0] +_0201789E: + bx lr + + thumb_func_start FUN_020178A0 +FUN_020178A0: ; 0x020178A0 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r2, #0x2c + add r5, r1, #0x0 + mul r5, r2 + add r4, #0x8 + ldr r0, [r4, r5] + cmp r0, #0x0 + beq _020178BA + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, r5] +_020178BA: + pop {r3-r5, pc} + + thumb_func_start FUN_020178BC +FUN_020178BC: ; 0x020178BC + cmp r0, #0x7 + bhi _0201795A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020178CC: ; jump table (using 16-bit offset) + .short _020178DC - _020178CC - 2; case 0 + .short _020178EC - _020178CC - 2; case 1 + .short _020178FC - _020178CC - 2; case 2 + .short _0201790C - _020178CC - 2; case 3 + .short _0201791C - _020178CC - 2; case 4 + .short _0201792C - _020178CC - 2; case 5 + .short _0201793C - _020178CC - 2; case 6 + .short _0201794C - _020178CC - 2; case 7 +_020178DC: + ldr r2, _0201795C ; =0x04000008 + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_020178EC: + ldr r2, _02017960 ; =0x0400000A + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_020178FC: + ldr r2, _02017964 ; =0x0400000C + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_0201790C: + ldr r2, _02017968 ; =0x0400000E + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_0201791C: + ldr r2, _0201796C ; =0x04001008 + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_0201792C: + ldr r2, _02017970 ; =0x0400100A + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_0201793C: + ldr r2, _02017974 ; =0x0400100C + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_0201794C: + ldr r2, _02017978 ; =0x0400100E + mov r0, #0x3 + ldrh r3, [r2, #0x0] + bic r3, r0 + add r0, r3, #0x0 + orr r0, r1 + strh r0, [r2, #0x0] +_0201795A: + bx lr + .balign 4 +_0201795C: .word 0x04000008 +_02017960: .word 0x0400000A +_02017964: .word 0x0400000C +_02017968: .word 0x0400000E +_0201796C: .word 0x04001008 +_02017970: .word 0x0400100A +_02017974: .word 0x0400100C +_02017978: .word 0x0400100E + + thumb_func_start FUN_0201797C +FUN_0201797C: ; 0x0201797C + push {r3, lr} + cmp r0, #0x7 + bhi _020179DC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0201798E: ; jump table (using 16-bit offset) + .short _0201799E - _0201798E - 2; case 0 + .short _020179A6 - _0201798E - 2; case 1 + .short _020179AE - _0201798E - 2; case 2 + .short _020179B6 - _0201798E - 2; case 3 + .short _020179BE - _0201798E - 2; case 4 + .short _020179C6 - _0201798E - 2; case 5 + .short _020179CE - _0201798E - 2; case 6 + .short _020179D6 - _0201798E - 2; case 7 +_0201799E: + mov r0, #0x1 + bl FUN_0201E6E4 + pop {r3, pc} +_020179A6: + mov r0, #0x2 + bl FUN_0201E6E4 + pop {r3, pc} +_020179AE: + mov r0, #0x4 + bl FUN_0201E6E4 + pop {r3, pc} +_020179B6: + mov r0, #0x8 + bl FUN_0201E6E4 + pop {r3, pc} +_020179BE: + mov r0, #0x1 + bl FUN_0201E74C + pop {r3, pc} +_020179C6: + mov r0, #0x2 + bl FUN_0201E74C + pop {r3, pc} +_020179CE: + mov r0, #0x4 + bl FUN_0201E74C + pop {r3, pc} +_020179D6: + mov r0, #0x8 + bl FUN_0201E74C +_020179DC: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020179E0 +FUN_020179E0: ; 0x020179E0 + push {r4-r6, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + mov r0, #0x2c + add r6, r5, #0x0 + mul r6, r0 + add r0, r4, #0x0 + add r0, #0x8 + add r1, r2, #0x0 + add r2, r3, #0x0 + add r0, r0, r6 + bl FUN_02017B8C + add r0, r4, r6 + ldr r1, [r0, #0x14] + ldr r0, [r0, #0x18] + cmp r5, #0x7 + bls _02017A06 + b _02017B1C +_02017A06: + add r2, r5, r5 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02017A12: ; jump table (using 16-bit offset) + .short _02017A22 - _02017A12 - 2; case 0 + .short _02017A38 - _02017A12 - 2; case 1 + .short _02017A4E - _02017A12 - 2; case 2 + .short _02017A78 - _02017A12 - 2; case 3 + .short _02017AA2 - _02017A12 - 2; case 4 + .short _02017AB8 - _02017A12 - 2; case 5 + .short _02017ACE - _02017A12 - 2; case 6 + .short _02017AF6 - _02017A12 - 2; case 7 +_02017A22: + ldr r2, _02017B20 ; =0x000001FF + add r3, r1, #0x0 + lsl r1, r0, #0x10 + lsl r0, r2, #0x10 + and r3, r2 + and r0, r1 + add r1, r3, #0x0 + orr r1, r0 + ldr r0, _02017B24 ; =0x04000010 + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017A38: + ldr r2, _02017B20 ; =0x000001FF + add r3, r1, #0x0 + lsl r1, r0, #0x10 + lsl r0, r2, #0x10 + and r3, r2 + and r0, r1 + add r1, r3, #0x0 + orr r1, r0 + ldr r0, _02017B28 ; =0x04000014 + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017A4E: + add r2, r4, #0x0 + add r2, #0x74 + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _02017A6E + ldr r2, _02017B20 ; =0x000001FF + add r3, r1, #0x0 + lsl r1, r0, #0x10 + lsl r0, r2, #0x10 + and r3, r2 + and r0, r1 + add r1, r3, #0x0 + orr r1, r0 + ldr r0, _02017B2C ; =0x04000018 + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017A6E: + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02017C6C + pop {r4-r6, pc} +_02017A78: + add r2, r4, #0x0 + add r2, #0xa0 + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _02017A98 + ldr r2, _02017B20 ; =0x000001FF + add r3, r1, #0x0 + lsl r1, r0, #0x10 + lsl r0, r2, #0x10 + and r3, r2 + and r0, r1 + add r1, r3, #0x0 + orr r1, r0 + ldr r0, _02017B30 ; =0x0400001C + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017A98: + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02017C6C + pop {r4-r6, pc} +_02017AA2: + ldr r2, _02017B20 ; =0x000001FF + add r3, r1, #0x0 + lsl r1, r0, #0x10 + lsl r0, r2, #0x10 + and r3, r2 + and r0, r1 + add r1, r3, #0x0 + orr r1, r0 + ldr r0, _02017B34 ; =0x04001010 + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017AB8: + ldr r2, _02017B20 ; =0x000001FF + add r3, r1, #0x0 + lsl r1, r0, #0x10 + lsl r0, r2, #0x10 + and r3, r2 + and r0, r1 + add r1, r3, #0x0 + orr r1, r0 + ldr r0, _02017B38 ; =0x04001014 + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017ACE: + mov r2, #0x49 + lsl r2, r2, #0x2 + ldrb r3, [r4, r2] + cmp r3, #0x0 + bne _02017AEC + add r2, #0xdb + and r2, r1 + lsl r1, r0, #0x10 + ldr r0, _02017B3C ; =0x01FF0000 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _02017B40 ; =0x04001018 + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017AEC: + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02017C6C + pop {r4-r6, pc} +_02017AF6: + mov r2, #0x15 + lsl r2, r2, #0x4 + ldrb r3, [r4, r2] + cmp r3, #0x0 + bne _02017B14 + add r2, #0xaf + and r2, r1 + lsl r1, r0, #0x10 + ldr r0, _02017B3C ; =0x01FF0000 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _02017B44 ; =0x0400101C + str r1, [r0, #0x0] + pop {r4-r6, pc} +_02017B14: + add r0, r4, #0x0 + mov r1, #0x7 + bl FUN_02017C6C +_02017B1C: + pop {r4-r6, pc} + nop +_02017B20: .word 0x000001FF +_02017B24: .word 0x04000010 +_02017B28: .word 0x04000014 +_02017B2C: .word 0x04000018 +_02017B30: .word 0x0400001C +_02017B34: .word 0x04001010 +_02017B38: .word 0x04001014 +_02017B3C: .word 0x01FF0000 +_02017B40: .word 0x04001018 +_02017B44: .word 0x0400101C + + thumb_func_start FUN_02017B48 +FUN_02017B48: ; 0x02017B48 + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldr r0, [r0, #0x14] + bx lr + .balign 4 + + thumb_func_start FUN_02017B54 +FUN_02017B54: ; 0x02017B54 + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldr r0, [r0, #0x18] + bx lr + .balign 4 + + thumb_func_start FUN_02017B60 +FUN_02017B60: ; 0x02017B60 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x0 + mov r0, #0x2c + add r1, #0x8 + mul r0, r4 + add r0, r1, r0 + add r1, r2, #0x0 + add r2, r3, #0x0 + bl FUN_02017B8C + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x10] + str r0, [sp, #0x0] + ldr r3, [sp, #0x14] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02017BD0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02017B8C +FUN_02017B8C: ; 0x02017B8C + cmp r1, #0x5 + bhi _02017BCE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02017B9C: ; jump table (using 16-bit offset) + .short _02017BA8 - _02017B9C - 2; case 0 + .short _02017BAC - _02017B9C - 2; case 1 + .short _02017BB4 - _02017B9C - 2; case 2 + .short _02017BBC - _02017B9C - 2; case 3 + .short _02017BC0 - _02017B9C - 2; case 4 + .short _02017BC8 - _02017B9C - 2; case 5 +_02017BA8: + str r2, [r0, #0xc] + bx lr +_02017BAC: + ldr r1, [r0, #0xc] + add r1, r1, r2 + str r1, [r0, #0xc] + bx lr +_02017BB4: + ldr r1, [r0, #0xc] + sub r1, r1, r2 + str r1, [r0, #0xc] + bx lr +_02017BBC: + str r2, [r0, #0x10] + bx lr +_02017BC0: + ldr r1, [r0, #0x10] + add r1, r1, r2 + str r1, [r0, #0x10] + bx lr +_02017BC8: + ldr r1, [r0, #0x10] + sub r1, r1, r2 + str r1, [r0, #0x10] +_02017BCE: + bx lr + + thumb_func_start FUN_02017BD0 +FUN_02017BD0: ; 0x02017BD0 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r3, [sp, #0x18] + cmp r4, #0x7 + bhi _02017C58 + add r5, r4, r4 + add r5, pc + ldrh r5, [r5, #0x6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_02017BEC: ; jump table (using 16-bit offset) + .short _02017C58 - _02017BEC - 2; case 0 + .short _02017C58 - _02017BEC - 2; case 1 + .short _02017BFC - _02017BEC - 2; case 2 + .short _02017C14 - _02017BEC - 2; case 3 + .short _02017C58 - _02017BEC - 2; case 4 + .short _02017C58 - _02017BEC - 2; case 5 + .short _02017C2C - _02017BEC - 2; case 6 + .short _02017C44 - _02017BEC - 2; case 7 +_02017BFC: + mov r5, #0x2c + mul r5, r4 + add r4, r0, r5 + ldr r0, [r4, #0x14] + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldr r0, _02017C5C ; =0x04000020 + blx G2x_SetBGyAffine_ + add sp, #0x8 + pop {r3-r5, pc} +_02017C14: + mov r5, #0x2c + mul r5, r4 + add r4, r0, r5 + ldr r0, [r4, #0x14] + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldr r0, _02017C60 ; =0x04000030 + blx G2x_SetBGyAffine_ + add sp, #0x8 + pop {r3-r5, pc} +_02017C2C: + mov r5, #0x2c + mul r5, r4 + add r4, r0, r5 + ldr r0, [r4, #0x14] + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldr r0, _02017C64 ; =0x04001020 + blx G2x_SetBGyAffine_ + add sp, #0x8 + pop {r3-r5, pc} +_02017C44: + mov r5, #0x2c + mul r5, r4 + add r4, r0, r5 + ldr r0, [r4, #0x14] + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldr r0, _02017C68 ; =0x04001030 + blx G2x_SetBGyAffine_ +_02017C58: + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02017C5C: .word 0x04000020 +_02017C60: .word 0x04000030 +_02017C64: .word 0x04001020 +_02017C68: .word 0x04001030 + + thumb_func_start FUN_02017C6C +FUN_02017C6C: ; 0x02017C6C + push {r4-r5, lr} + sub sp, #0x14 + mov r2, #0x1 + lsl r2, r2, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r1, #0x0 + add r0, sp, #0x4 + add r3, r2, #0x0 + str r1, [sp, #0x0] + bl FUN_0201BB74 + mov r3, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, sp, #0x4 + str r3, [sp, #0x0] + bl FUN_02017BD0 + add sp, #0x14 + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_02017C98 +FUN_02017C98: ; 0x02017C98 + push {r3-r5, lr} + cmp r2, #0x0 + bne _02017CA4 + blx MI_UncompressLZ8 + pop {r3-r5, pc} +_02017CA4: + mov r4, #0x3 + add r3, r0, #0x0 + tst r3, r4 + bne _02017CCA + add r3, r1, #0x0 + tst r3, r4 + bne _02017CCA + lsl r3, r2, #0x10 + lsr r3, r3, #0x10 + lsr r4, r3, #0x1f + lsl r5, r3, #0x1e + sub r5, r5, r4 + mov r3, #0x1e + ror r5, r3 + add r3, r4, r5 + bne _02017CCA + blx MIi_CpuCopy32 + pop {r3-r5, pc} +_02017CCA: + blx MIi_CpuCopy16 + pop {r3-r5, pc} + + thumb_func_start FUN_02017CD0 +FUN_02017CD0: ; 0x02017CD0 + push {r3, lr} + mov r2, #0x2c + mul r2, r1 + add r3, r0, r2 + ldr r2, [r3, #0x10] + str r2, [sp, #0x0] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + bl FUN_02017CE8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02017CE8 +FUN_02017CE8: ; 0x02017CE8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0x0] + cmp r3, #0x0 + bne _02017D56 + mov r0, #0x2c + add r7, r4, #0x0 + mul r7, r0 + add r0, r5, r7 + ldr r0, [r0, #0x8] + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02017D26 + ldr r1, [sp, #0x4] + add r0, r6, #0x0 + add r2, r3, #0x0 + bl FUN_02017C98 + add r3, r5, r7 + ldr r2, [r3, #0x10] + ldr r1, [sp, #0x4] + ldr r3, [r3, #0xc] + add r0, r4, #0x0 + lsl r2, r2, #0x1 + bl FUN_02017D68 + add sp, #0x8 + pop {r3-r7, pc} +_02017D26: + ldr r0, [r6, #0x0] + lsr r7, r0, #0x8 + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + bl FUN_020169D8 + add r5, r0, #0x0 + ldr r2, [sp, #0x0] + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02017C98 + ldr r2, [sp, #0x20] + add r0, r4, #0x0 + add r1, r5, #0x0 + lsl r2, r2, #0x1 + add r3, r7, #0x0 + bl FUN_02017D68 + add r0, r5, #0x0 + bl FUN_02016A18 + add sp, #0x8 + pop {r3-r7, pc} +_02017D56: + ldr r2, [sp, #0x20] + add r0, r4, #0x0 + add r1, r6, #0x0 + lsl r2, r2, #0x1 + bl FUN_02017D68 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02017D68 +FUN_02017D68: ; 0x02017D68 + push {r3-r7, lr} + add r4, r1, #0x0 + add r6, r3, #0x0 + add r7, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + add r5, r2, #0x0 + blx DC_FlushRange + cmp r7, #0x7 + bhi _02017DF8 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02017D8A: ; jump table (using 16-bit offset) + .short _02017D9A - _02017D8A - 2; case 0 + .short _02017DA6 - _02017D8A - 2; case 1 + .short _02017DB2 - _02017D8A - 2; case 2 + .short _02017DBE - _02017D8A - 2; case 3 + .short _02017DCA - _02017D8A - 2; case 4 + .short _02017DD6 - _02017D8A - 2; case 5 + .short _02017DE2 - _02017D8A - 2; case 6 + .short _02017DEE - _02017D8A - 2; case 7 +_02017D9A: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG0Scr + pop {r3-r7, pc} +_02017DA6: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG1Scr + pop {r3-r7, pc} +_02017DB2: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG2Scr + pop {r3-r7, pc} +_02017DBE: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG3Scr + pop {r3-r7, pc} +_02017DCA: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG0Scr + pop {r3-r7, pc} +_02017DD6: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG1Scr + pop {r3-r7, pc} +_02017DE2: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG2Scr + pop {r3-r7, pc} +_02017DEE: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG3Scr +_02017DF8: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02017DFC +FUN_02017DFC: ; 0x02017DFC + push {r4, lr} + add r4, r0, #0x0 + add r0, r2, #0x0 + mov r2, #0x2c + mul r2, r1 + add r1, r4, r2 + ldr r1, [r1, #0x8] + add r2, r3, #0x0 + bl FUN_02017C98 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02017E14 +FUN_02017E14: ; 0x02017E14 + push {r3-r4, lr} + sub sp, #0x4 + mov r4, #0x2c + mul r4, r1 + add r4, r0, r4 + ldrb r4, [r4, #0x1e] + cmp r4, #0x0 + bne _02017E32 + ldr r4, [sp, #0x10] + lsl r4, r4, #0x5 + str r4, [sp, #0x0] + bl FUN_02017E40 + add sp, #0x4 + pop {r3-r4, pc} +_02017E32: + ldr r4, [sp, #0x10] + lsl r4, r4, #0x6 + str r4, [sp, #0x0] + bl FUN_02017E40 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02017E40 +FUN_02017E40: ; 0x02017E40 + push {r3-r7, lr} + add r7, r1, #0x0 + add r5, r2, #0x0 + str r3, [sp, #0x0] + cmp r3, #0x0 + bne _02017E78 + ldr r1, [r5, #0x0] + ldr r0, [r0, #0x0] + lsr r4, r1, #0x8 + add r1, r4, #0x0 + bl FUN_020169D8 + add r6, r0, #0x0 + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02017C98 + ldr r2, [sp, #0x18] + add r0, r7, #0x0 + add r1, r6, #0x0 + add r3, r4, #0x0 + bl FUN_02017E84 + add r0, r6, #0x0 + bl FUN_02016A18 + pop {r3-r7, pc} +_02017E78: + ldr r2, [sp, #0x18] + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_02017E84 + pop {r3-r7, pc} + + thumb_func_start FUN_02017E84 +FUN_02017E84: ; 0x02017E84 + push {r3-r7, lr} + add r4, r1, #0x0 + add r6, r3, #0x0 + add r7, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + add r5, r2, #0x0 + blx DC_FlushRange + cmp r7, #0x7 + bhi _02017F14 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02017EA6: ; jump table (using 16-bit offset) + .short _02017EB6 - _02017EA6 - 2; case 0 + .short _02017EC2 - _02017EA6 - 2; case 1 + .short _02017ECE - _02017EA6 - 2; case 2 + .short _02017EDA - _02017EA6 - 2; case 3 + .short _02017EE6 - _02017EA6 - 2; case 4 + .short _02017EF2 - _02017EA6 - 2; case 5 + .short _02017EFE - _02017EA6 - 2; case 6 + .short _02017F0A - _02017EA6 - 2; case 7 +_02017EB6: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG0Char + pop {r3-r7, pc} +_02017EC2: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG1Char + pop {r3-r7, pc} +_02017ECE: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG2Char + pop {r3-r7, pc} +_02017EDA: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GX_LoadBG3Char + pop {r3-r7, pc} +_02017EE6: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG0Char + pop {r3-r7, pc} +_02017EF2: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG1Char + pop {r3-r7, pc} +_02017EFE: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG2Char + pop {r3-r7, pc} +_02017F0A: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + blx GXS_LoadBG3Char +_02017F14: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02017F18 +FUN_02017F18: ; 0x02017F18 + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r0, r3, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_020169D8 + add r4, r0, #0x0 + mov r1, #0x0 + add r2, r5, #0x0 + blx Call_FillMemWithValue + add r0, r6, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + add r3, r5, #0x0 + bl FUN_02017E84 + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_02016A8C + pop {r3-r7, pc} + + thumb_func_start FUN_02017F48 +FUN_02017F48: ; 0x02017F48 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r1, #0x0 + add r4, r0, #0x0 + mov r1, #0x2c + add r6, r7, #0x0 + add r4, #0x1f + mul r6, r1 + ldrb r1, [r4, r6] + ldr r0, [r0, #0x0] + add r5, r2, #0x0 + mul r1, r3 + str r1, [sp, #0x0] + bl FUN_020169D8 + str r0, [sp, #0x4] + ldrb r0, [r4, r6] + cmp r0, #0x20 + bne _02017F82 + lsl r2, r5, #0xc + lsl r1, r5, #0x8 + lsl r0, r5, #0x4 + orr r1, r2 + orr r0, r1 + add r1, r5, #0x0 + orr r1, r0 + lsl r0, r1, #0x10 + add r5, r1, #0x0 + b _02017F8C +_02017F82: + lsl r2, r5, #0x18 + lsl r1, r5, #0x10 + lsl r0, r5, #0x8 + orr r1, r2 + orr r0, r1 +_02017F8C: + orr r5, r0 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + blx MIi_CpuClearFast + lsl r0, r7, #0x18 + ldrb r2, [r4, r6] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x4] + mul r2, r3 + ldr r3, [sp, #0x0] + lsr r0, r0, #0x18 + bl FUN_02017E84 + ldr r0, [sp, #0x4] + bl FUN_02016A18 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02017FB4 +FUN_02017FB4: ; 0x02017FB4 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r7, r3, #0x0 + blx DC_FlushRange + cmp r6, #0x4 + bhs _02017FD6 + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r4, #0x0 + blx GX_LoadBGPltt + pop {r3-r7, pc} +_02017FD6: + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r4, #0x0 + blx GXS_LoadBGPltt + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02017FE4 +FUN_02017FE4: ; 0x02017FE4 + push {r0-r3} + push {r3, lr} + add r1, sp, #0xc + mov r2, #0x2 + mov r3, #0x0 + bl FUN_02017FB4 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 + + thumb_func_start FUN_02017FFC +FUN_02017FFC: ; 0x02017FFC + cmp r2, #0x5 + bhi _02018066 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0201800C: ; jump table (using 16-bit offset) + .short _02018018 - _0201800C - 2; case 0 + .short _02018022 - _0201800C - 2; case 1 + .short _02018022 - _0201800C - 2; case 2 + .short _0201802C - _0201800C - 2; case 3 + .short _02018042 - _0201800C - 2; case 4 + .short _02018064 - _0201800C - 2; case 5 +_02018018: + lsl r1, r1, #0x4 + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02018022: + lsl r1, r1, #0x5 + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_0201802C: + mov r2, #0x1f + add r3, r0, #0x0 + and r3, r2 + mov r2, #0x1f + bic r0, r2 + add r0, r1, r0 + lsl r0, r0, #0x5 + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02018042: + asr r2, r1, #0x5 + asr r3, r0, #0x5 + lsl r2, r2, #0x1 + add r2, r3, r2 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + lsl r2, r2, #0x1a + lsr r3, r2, #0x10 + mov r2, #0x1f + and r2, r0 + lsl r0, r1, #0x1b + lsr r0, r0, #0x16 + add r0, r2, r0 + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02018064: + mov r0, #0x0 +_02018066: + bx lr + + thumb_func_start FUN_02018068 +FUN_02018068: ; 0x02018068 + push {r3-r7} + sub sp, #0x4 + str r3, [sp, #0x0] + add r6, r2, #0x0 + ldr r5, [sp, #0x0] + add r4, r6, #0x0 + sub r4, #0x20 + sub r5, #0x20 + mov r2, #0x0 + lsl r4, r4, #0x10 + lsl r5, r5, #0x10 + add r3, r2, #0x0 + asr r4, r4, #0x10 + asr r7, r5, #0x10 + lsr r5, r0, #0x5 + beq _0201808E + add r2, r2, #0x1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 +_0201808E: + lsr r5, r1, #0x5 + beq _02018098 + add r2, r2, #0x2 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 +_02018098: + cmp r2, #0x3 + bhi _02018140 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_020180A8: ; jump table (using 16-bit offset) + .short _020180B0 - _020180A8 - 2; case 0 + .short _020180CE - _020180A8 - 2; case 1 + .short _020180F4 - _020180A8 - 2; case 2 + .short _02018120 - _020180A8 - 2; case 3 +_020180B0: + cmp r4, #0x0 + blt _020180C0 + lsl r1, r1, #0x5 + add r0, r0, r1 + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + b _02018140 +_020180C0: + add r2, r1, #0x0 + mul r2, r6 + add r0, r0, r2 + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + b _02018140 +_020180CE: + cmp r7, #0x0 + blt _020180D8 + mov r2, #0x1 + lsl r2, r2, #0xa + b _020180DC +_020180D8: + ldr r2, [sp, #0x0] + lsl r2, r2, #0x5 +_020180DC: + add r2, r3, r2 + lsl r2, r2, #0x10 + lsr r3, r2, #0x10 + mov r2, #0x1f + and r2, r0 + add r0, r1, #0x0 + mul r0, r4 + add r0, r2, r0 + add r0, r3, r0 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + b _02018140 +_020180F4: + lsl r2, r6, #0x5 + add r2, r3, r2 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + cmp r4, #0x0 + blt _0201810E + lsl r1, r1, #0x1b + lsr r1, r1, #0x16 + add r0, r0, r1 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + b _02018140 +_0201810E: + mov r3, #0x1f + and r1, r3 + add r3, r1, #0x0 + mul r3, r6 + add r0, r0, r3 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + b _02018140 +_02018120: + add r2, r6, r7 + lsl r2, r2, #0x5 + add r2, r3, r2 + add r5, r0, #0x0 + mov r3, #0x1f + add r0, r1, #0x0 + and r0, r3 + add r1, r0, #0x0 + lsl r2, r2, #0x10 + and r5, r3 + mul r1, r4 + lsr r2, r2, #0x10 + add r0, r5, r1 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 +_02018140: + add r0, r3, #0x0 + add sp, #0x4 + pop {r3-r7} + bx lr + + thumb_func_start FUN_02018148 +FUN_02018148: ; 0x02018148 + push {r3-r6, lr} + sub sp, #0x1c + add r6, sp, #0x20 + ldrb r5, [r6, #0x14] + str r5, [sp, #0x0] + ldrb r4, [r6, #0x18] + str r4, [sp, #0x4] + str r2, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r5, [sp, #0x14] + str r4, [sp, #0x18] + add r2, r3, #0x0 + ldrb r3, [r6, #0x10] + bl FUN_02018170 + add sp, #0x1c + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02018170 +FUN_02018170: ; 0x02018170 + push {r4-r5, lr} + sub sp, #0x1c + add r4, r2, #0x0 + add r2, r3, #0x0 + mov r3, #0x2c + add r5, r1, #0x0 + mul r5, r3 + add r1, r0, r5 + ldrb r1, [r1, #0x1c] + add r3, sp, #0x18 + cmp r1, #0x1 + beq _020181BA + ldrb r1, [r3, #0x14] + add r0, #0x8 + add r0, r0, r5 + str r1, [sp, #0x0] + ldr r1, [sp, #0x30] + str r1, [sp, #0x4] + ldrb r1, [r3, #0x1c] + str r1, [sp, #0x8] + add r1, sp, #0x38 + ldrb r1, [r1, #0x0] + str r1, [sp, #0xc] + add r1, sp, #0x3c + ldrb r1, [r1, #0x0] + str r1, [sp, #0x10] + add r1, sp, #0x40 + ldrb r1, [r1, #0x0] + str r1, [sp, #0x14] + mov r1, #0x0 + str r1, [sp, #0x18] + ldrb r3, [r3, #0x10] + add r1, r4, #0x0 + bl FUN_02018268 + add sp, #0x1c + pop {r4-r5, pc} +_020181BA: + ldrb r1, [r3, #0x14] + add r0, #0x8 + add r0, r0, r5 + str r1, [sp, #0x0] + ldr r1, [sp, #0x30] + str r1, [sp, #0x4] + ldrb r1, [r3, #0x1c] + str r1, [sp, #0x8] + add r1, sp, #0x38 + ldrb r1, [r1, #0x0] + str r1, [sp, #0xc] + add r1, sp, #0x3c + ldrb r1, [r1, #0x0] + str r1, [sp, #0x10] + add r1, sp, #0x40 + ldrb r1, [r1, #0x0] + str r1, [sp, #0x14] + mov r1, #0x0 + str r1, [sp, #0x18] + ldrb r3, [r3, #0x10] + add r1, r4, #0x0 + bl FUN_020183DC + add sp, #0x1c + pop {r4-r5, pc} + + thumb_func_start FUN_020181EC +FUN_020181EC: ; 0x020181EC + push {r4-r5, lr} + sub sp, #0x1c + add r4, r2, #0x0 + add r2, r3, #0x0 + mov r3, #0x2c + add r5, r1, #0x0 + mul r5, r3 + add r1, r0, r5 + ldrb r1, [r1, #0x1c] + add r3, sp, #0x18 + cmp r1, #0x1 + beq _02018236 + ldrb r1, [r3, #0x14] + add r0, #0x8 + add r0, r0, r5 + str r1, [sp, #0x0] + ldr r1, [sp, #0x30] + str r1, [sp, #0x4] + ldrb r1, [r3, #0x1c] + str r1, [sp, #0x8] + add r1, sp, #0x38 + ldrb r1, [r1, #0x0] + str r1, [sp, #0xc] + add r1, sp, #0x3c + ldrb r1, [r1, #0x0] + str r1, [sp, #0x10] + add r1, sp, #0x40 + ldrb r1, [r1, #0x0] + str r1, [sp, #0x14] + mov r1, #0x1 + str r1, [sp, #0x18] + ldrb r3, [r3, #0x10] + add r1, r4, #0x0 + bl FUN_02018268 + add sp, #0x1c + pop {r4-r5, pc} +_02018236: + ldrb r1, [r3, #0x14] + add r0, #0x8 + add r0, r0, r5 + str r1, [sp, #0x0] + ldr r1, [sp, #0x30] + str r1, [sp, #0x4] + ldrb r1, [r3, #0x1c] + str r1, [sp, #0x8] + add r1, sp, #0x38 + ldrb r1, [r1, #0x0] + str r1, [sp, #0xc] + add r1, sp, #0x3c + ldrb r1, [r1, #0x0] + str r1, [sp, #0x10] + add r1, sp, #0x40 + ldrb r1, [r1, #0x0] + str r1, [sp, #0x14] + mov r1, #0x1 + str r1, [sp, #0x18] + ldrb r3, [r3, #0x10] + add r1, r4, #0x0 + bl FUN_020183DC + add sp, #0x1c + pop {r4-r5, pc} + + thumb_func_start FUN_02018268 +FUN_02018268: ; 0x02018268 + push {r4-r7, lr} + sub sp, #0x44 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r7, r0, #0x0 + ldr r0, [sp, #0x58] + add r6, r3, #0x0 + str r0, [sp, #0x58] + ldr r0, [sp, #0x5c] + ldr r4, [sp, #0x68] + str r0, [sp, #0x5c] + ldr r0, [sp, #0x6c] + str r0, [sp, #0x6c] + ldr r0, [r7, #0x0] + str r0, [sp, #0x2c] + cmp r0, #0x0 + bne _0201828C + b _020183D6 +_0201828C: + ldrb r0, [r7, #0x15] + add r1, sp, #0x40 + add r1, #0x1 + add r2, sp, #0x40 + bl FUN_02017850 + add r0, sp, #0x70 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201833A + mov r0, #0x0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x58] + cmp r0, #0x0 + bls _020182CA + add r1, sp, #0x48 + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x1c] + ldrb r0, [r1, #0x18] + str r0, [sp, #0x18] + lsl r1, r0, #0x1 + ldr r0, [sp, #0x5c] + add r0, r0, r1 + str r0, [sp, #0x14] +_020182BC: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x28] + add r0, r1, r0 + add r1, sp, #0x40 + ldrb r1, [r1, #0x0] + cmp r0, r1 + blt _020182CC +_020182CA: + b _020183D6 +_020182CC: + ldr r2, [sp, #0x1c] + ldr r1, [sp, #0x28] + add r2, r2, r1 + ldr r1, [sp, #0x6c] + cmp r2, r1 + bge _020183D6 + mov r5, #0x0 + cmp r6, #0x0 + bls _02018326 + add r1, r4, #0x0 + mul r1, r2 + lsl r2, r1, #0x1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0x18 + add r1, r1, r2 + lsr r0, r0, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x30] +_020182F0: + add r1, sp, #0x40 + ldr r0, [sp, #0x0] + ldrb r1, [r1, #0x1] + add r0, r0, r5 + cmp r0, r1 + bge _02018326 + ldr r1, [sp, #0x18] + add r1, r1, r5 + cmp r1, r4 + bge _02018326 + ldrb r2, [r7, #0x15] + lsl r0, r0, #0x18 + ldr r1, [sp, #0x30] + lsr r0, r0, #0x18 + bl FUN_02017FFC + ldr r1, [sp, #0x10] + lsl r2, r5, #0x1 + ldrh r1, [r1, r2] + lsl r2, r0, #0x1 + ldr r0, [sp, #0x2c] + strh r1, [r0, r2] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _020182F0 +_02018326: + ldr r0, [sp, #0x28] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + str r1, [sp, #0x28] + ldr r0, [sp, #0x58] + cmp r1, r0 + blo _020182BC + add sp, #0x44 + pop {r4-r7, pc} +_0201833A: + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x58] + cmp r0, #0x0 + bls _020183D6 + add r1, sp, #0x48 + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x24] + ldrb r0, [r1, #0x18] + str r0, [sp, #0x20] +_0201834E: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + add r1, r1, r0 + add r0, sp, #0x40 + ldrb r0, [r0, #0x0] + cmp r1, r0 + bge _020183D6 + ldr r2, [sp, #0x24] + ldr r0, [sp, #0x8] + add r0, r2, r0 + ldr r2, [sp, #0x6c] + cmp r0, r2 + bge _020183D6 + mov r5, #0x0 + cmp r6, #0x0 + bls _020183C6 + lsl r1, r1, #0x18 + lsl r0, r0, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + str r1, [sp, #0x34] + str r0, [sp, #0x3c] +_0201837A: + add r1, sp, #0x40 + ldr r0, [sp, #0x0] + ldrb r1, [r1, #0x1] + add r0, r0, r5 + cmp r0, r1 + bge _020183C6 + ldr r1, [sp, #0x20] + add r1, r1, r5 + str r1, [sp, #0xc] + cmp r1, r4 + bge _020183C6 + ldrb r2, [r7, #0x15] + lsl r0, r0, #0x18 + ldr r1, [sp, #0x34] + lsr r0, r0, #0x18 + bl FUN_02017FFC + str r0, [sp, #0x38] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x3c] + lsl r0, r0, #0x18 + ldr r3, [sp, #0x6c] + lsr r0, r0, #0x18 + add r2, r4, #0x0 + bl FUN_02018068 + lsl r1, r0, #0x1 + ldr r0, [sp, #0x5c] + ldrh r0, [r0, r1] + ldr r1, [sp, #0x38] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x2c] + strh r0, [r1, r2] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _0201837A +_020183C6: + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + str r1, [sp, #0x8] + ldr r0, [sp, #0x58] + cmp r1, r0 + blo _0201834E +_020183D6: + add sp, #0x44 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020183DC +FUN_020183DC: ; 0x020183DC + push {r4-r7, lr} + sub sp, #0x44 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r7, r0, #0x0 + ldr r0, [sp, #0x58] + add r6, r3, #0x0 + str r0, [sp, #0x58] + ldr r0, [sp, #0x5c] + ldr r4, [sp, #0x68] + str r0, [sp, #0x5c] + ldr r0, [sp, #0x6c] + str r0, [sp, #0x6c] + ldr r0, [r7, #0x0] + str r0, [sp, #0x2c] + cmp r0, #0x0 + bne _02018400 + b _0201853C +_02018400: + ldrb r0, [r7, #0x15] + add r1, sp, #0x40 + add r1, #0x1 + add r2, sp, #0x40 + bl FUN_02017850 + add r0, sp, #0x70 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _020184A4 + mov r0, #0x0 + str r0, [sp, #0x28] + ldr r0, [sp, #0x58] + cmp r0, #0x0 + bhi _02018420 + b _0201853C +_02018420: + add r1, sp, #0x48 + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x1c] + ldrb r0, [r1, #0x18] + ldr r1, [sp, #0x5c] + str r0, [sp, #0x18] + add r0, r1, r0 + str r0, [sp, #0x14] +_02018430: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x28] + add r0, r1, r0 + add r1, sp, #0x40 + ldrb r1, [r1, #0x0] + cmp r0, r1 + bge _0201853C + ldr r2, [sp, #0x1c] + ldr r1, [sp, #0x28] + add r2, r2, r1 + ldr r1, [sp, #0x6c] + cmp r2, r1 + bge _0201853C + mov r5, #0x0 + cmp r6, #0x0 + bls _02018490 + ldr r1, [sp, #0x14] + mul r2, r4 + lsl r0, r0, #0x18 + add r1, r1, r2 + lsr r0, r0, #0x18 + str r1, [sp, #0x10] + str r0, [sp, #0x30] +_0201845E: + add r1, sp, #0x40 + ldr r0, [sp, #0x0] + ldrb r1, [r1, #0x1] + add r0, r0, r5 + cmp r0, r1 + bge _02018490 + ldr r1, [sp, #0x18] + add r1, r1, r5 + cmp r1, r4 + bge _02018490 + ldrb r2, [r7, #0x15] + lsl r0, r0, #0x18 + ldr r1, [sp, #0x30] + lsr r0, r0, #0x18 + bl FUN_02017FFC + ldr r1, [sp, #0x10] + ldrb r2, [r1, r5] + ldr r1, [sp, #0x2c] + strb r2, [r1, r0] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _0201845E +_02018490: + ldr r0, [sp, #0x28] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + str r1, [sp, #0x28] + ldr r0, [sp, #0x58] + cmp r1, r0 + blo _02018430 + add sp, #0x44 + pop {r4-r7, pc} +_020184A4: + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x58] + cmp r0, #0x0 + bls _0201853C + add r1, sp, #0x48 + ldrb r0, [r1, #0x1c] + str r0, [sp, #0x24] + ldrb r0, [r1, #0x18] + str r0, [sp, #0x20] +_020184B8: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + add r1, r1, r0 + add r0, sp, #0x40 + ldrb r0, [r0, #0x0] + cmp r1, r0 + bge _0201853C + ldr r2, [sp, #0x24] + ldr r0, [sp, #0x8] + add r0, r2, r0 + ldr r2, [sp, #0x6c] + cmp r0, r2 + bge _0201853C + mov r5, #0x0 + cmp r6, #0x0 + bls _0201852C + lsl r1, r1, #0x18 + lsl r0, r0, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + str r1, [sp, #0x34] + str r0, [sp, #0x3c] +_020184E4: + add r1, sp, #0x40 + ldr r0, [sp, #0x0] + ldrb r1, [r1, #0x1] + add r0, r0, r5 + cmp r0, r1 + bge _0201852C + ldr r1, [sp, #0x20] + add r1, r1, r5 + str r1, [sp, #0xc] + cmp r1, r4 + bge _0201852C + ldrb r2, [r7, #0x15] + lsl r0, r0, #0x18 + ldr r1, [sp, #0x34] + lsr r0, r0, #0x18 + bl FUN_02017FFC + str r0, [sp, #0x38] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x3c] + lsl r0, r0, #0x18 + ldr r3, [sp, #0x6c] + lsr r0, r0, #0x18 + add r2, r4, #0x0 + bl FUN_02018068 + ldr r1, [sp, #0x5c] + ldrb r2, [r1, r0] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x38] + strb r2, [r1, r0] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r6 + blo _020184E4 +_0201852C: + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + str r1, [sp, #0x8] + ldr r0, [sp, #0x58] + cmp r1, r0 + blo _020184B8 +_0201853C: + add sp, #0x44 + pop {r4-r7, pc} + + thumb_func_start FUN_02018540 +FUN_02018540: ; 0x02018540 + push {r4-r5, lr} + sub sp, #0xc + add r4, r2, #0x0 + add r2, r3, #0x0 + mov r3, #0x2c + add r5, r1, #0x0 + mul r5, r3 + add r1, r0, r5 + ldrb r1, [r1, #0x1c] + add r3, sp, #0x8 + cmp r1, #0x1 + beq _02018574 + ldrb r1, [r3, #0x14] + add r0, #0x8 + add r0, r0, r5 + str r1, [sp, #0x0] + ldrb r1, [r3, #0x18] + str r1, [sp, #0x4] + ldrb r1, [r3, #0x1c] + str r1, [sp, #0x8] + ldrb r3, [r3, #0x10] + add r1, r4, #0x0 + bl FUN_02018590 + add sp, #0xc + pop {r4-r5, pc} +_02018574: + ldrb r1, [r3, #0x14] + add r0, #0x8 + add r0, r0, r5 + str r1, [sp, #0x0] + ldrb r1, [r3, #0x18] + str r1, [sp, #0x4] + lsl r1, r4, #0x18 + ldrb r3, [r3, #0x10] + lsr r1, r1, #0x18 + bl FUN_02018640 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_02018590 +FUN_02018590: ; 0x02018590 + push {r4-r7, lr} + sub sp, #0x1c + str r2, [sp, #0x4] + str r3, [sp, #0x8] + ldr r4, [r0, #0x0] + add r7, r1, #0x0 + str r0, [sp, #0x0] + ldr r6, [sp, #0x38] + cmp r4, #0x0 + beq _0201863A + ldrb r0, [r0, #0x15] + add r1, sp, #0x18 + add r1, #0x1 + add r2, sp, #0x18 + bl FUN_02017850 + add r0, sp, #0x20 + ldrb r2, [r0, #0x14] + ldr r1, [sp, #0x8] + add r1, r1, r2 + ldr r2, [sp, #0x8] + str r1, [sp, #0xc] + cmp r2, r1 + bge _0201863A + ldrb r2, [r0, #0x10] + ldr r0, [sp, #0x4] + lsl r1, r6, #0xc + add r0, r0, r2 + add r1, r1, r7 + str r0, [sp, #0x10] + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x14] +_020185D2: + add r0, sp, #0x18 + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, r1 + bhs _0201863A + ldr r5, [sp, #0x4] + ldr r0, [sp, #0x10] + add r1, r5, #0x0 + cmp r1, r0 + bge _0201862A +_020185E6: + add r0, sp, #0x18 + ldrb r0, [r0, #0x1] + cmp r5, r0 + bhs _0201862A + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x8] + ldrb r2, [r2, #0x15] + add r0, r5, #0x0 + bl FUN_02017FFC + cmp r6, #0x11 + bne _02018604 + lsl r0, r0, #0x1 + strh r7, [r4, r0] + b _0201861E +_02018604: + cmp r6, #0x10 + bne _02018618 + lsl r0, r0, #0x1 + ldrh r2, [r4, r0] + mov r1, #0xf + lsl r1, r1, #0xc + and r1, r2 + add r1, r7, r1 + strh r1, [r4, r0] + b _0201861E +_02018618: + lsl r1, r0, #0x1 + ldr r0, [sp, #0x14] + strh r0, [r4, r1] +_0201861E: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x10] + cmp r5, r0 + blt _020185E6 +_0201862A: + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0xc] + str r1, [sp, #0x8] + cmp r1, r0 + blt _020185D2 +_0201863A: + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02018640 +FUN_02018640: ; 0x02018640 + push {r4-r7, lr} + sub sp, #0x14 + str r1, [sp, #0x0] + add r7, r0, #0x0 + str r2, [sp, #0x4] + ldr r0, [r7, #0x0] + add r5, r3, #0x0 + str r0, [sp, #0xc] + cmp r0, #0x0 + beq _020186B0 + ldrb r0, [r7, #0x15] + add r1, sp, #0x10 + add r1, #0x1 + add r2, sp, #0x10 + bl FUN_02017850 + add r1, sp, #0x18 + ldrb r0, [r1, #0x14] + add r0, r5, r0 + str r0, [sp, #0x8] + cmp r5, r0 + bge _020186B0 + ldrb r1, [r1, #0x10] + ldr r0, [sp, #0x4] + add r6, r0, r1 +_02018672: + add r0, sp, #0x10 + ldrb r0, [r0, #0x0] + cmp r5, r0 + bhs _020186B0 + ldr r4, [sp, #0x4] + add r0, r4, #0x0 + cmp r0, r6 + bge _020186A4 +_02018682: + add r0, sp, #0x10 + ldrb r0, [r0, #0x1] + cmp r4, r0 + bhs _020186A4 + ldrb r2, [r7, #0x15] + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02017FFC + ldr r2, [sp, #0x0] + ldr r1, [sp, #0xc] + strb r2, [r1, r0] + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, r6 + blt _02018682 +_020186A4: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x8] + cmp r5, r0 + blt _02018672 +_020186B0: + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_020186B4 +FUN_020186B4: ; 0x020186B4 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + mov r0, #0x2c + add r7, r1, #0x0 + mul r7, r0 + str r2, [sp, #0x0] + add r0, r5, r7 + ldr r4, [r0, #0x8] + add r6, r3, #0x0 + cmp r4, #0x0 + beq _0201873C + ldrb r0, [r0, #0x1d] + add r1, sp, #0x10 + add r1, #0x1 + add r2, sp, #0x10 + bl FUN_02017850 + add r0, sp, #0x18 + ldrb r1, [r0, #0x14] + add r1, r6, r1 + str r1, [sp, #0x4] + cmp r6, r1 + bge _0201873C + add r1, r5, r7 + str r1, [sp, #0xc] + ldrb r1, [r0, #0x18] + lsl r1, r1, #0xc + str r1, [sp, #0x8] + ldrb r1, [r0, #0x10] + ldr r0, [sp, #0x0] + add r7, r0, r1 +_020186F4: + add r0, sp, #0x10 + ldrb r0, [r0, #0x0] + cmp r6, r0 + bhs _0201873C + ldr r5, [sp, #0x0] + add r0, r5, #0x0 + cmp r0, r7 + bge _02018730 +_02018704: + add r0, sp, #0x10 + ldrb r0, [r0, #0x1] + cmp r5, r0 + bhs _02018730 + ldr r2, [sp, #0xc] + add r0, r5, #0x0 + ldrb r2, [r2, #0x1d] + add r1, r6, #0x0 + bl FUN_02017FFC + lsl r0, r0, #0x1 + ldrh r2, [r4, r0] + ldr r1, _02018740 ; =0x00000FFF + and r2, r1 + ldr r1, [sp, #0x8] + orr r1, r2 + strh r1, [r4, r0] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, r7 + blt _02018704 +_02018730: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [sp, #0x4] + cmp r6, r0 + blt _020186F4 +_0201873C: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02018740: .word 0x00000FFF + + thumb_func_start FUN_02018744 +FUN_02018744: ; 0x02018744 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x2c + mul r0, r4 + add r2, r5, r0 + ldr r1, [r2, #0x8] + cmp r1, #0x0 + beq _02018766 + ldr r2, [r2, #0xc] + mov r0, #0x0 + blx MIi_CpuClear16 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02017CD0 +_02018766: + pop {r3-r5, pc} + + thumb_func_start FUN_02018768 +FUN_02018768: ; 0x02018768 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x2c + mul r0, r4 + add r3, r5, r0 + ldr r1, [r3, #0x8] + cmp r1, #0x0 + beq _0201878A + add r0, r2, #0x0 + ldr r2, [r3, #0xc] + blx MIi_CpuClear16 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02017CD0 +_0201878A: + pop {r3-r5, pc} + + thumb_func_start FUN_0201878C +FUN_0201878C: ; 0x0201878C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x2c + mul r0, r4 + add r3, r5, r0 + ldr r1, [r3, #0x8] + cmp r1, #0x0 + beq _020187AE + add r0, r2, #0x0 + ldr r2, [r3, #0xc] + blx MIi_CpuClear16 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201AC68 +_020187AE: + pop {r3-r5, pc} + + thumb_func_start FUN_020187B0 +FUN_020187B0: ; 0x020187B0 + push {r3, lr} + cmp r0, #0x7 + bhi _02018802 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020187C2: ; jump table (using 16-bit offset) + .short _020187D2 - _020187C2 - 2; case 0 + .short _020187D8 - _020187C2 - 2; case 1 + .short _020187DE - _020187C2 - 2; case 2 + .short _020187E4 - _020187C2 - 2; case 3 + .short _020187EA - _020187C2 - 2; case 4 + .short _020187F0 - _020187C2 - 2; case 5 + .short _020187F6 - _020187C2 - 2; case 6 + .short _020187FC - _020187C2 - 2; case 7 +_020187D2: + blx G2_GetBG0CharPtr + pop {r3, pc} +_020187D8: + blx G2_GetBG1CharPtr + pop {r3, pc} +_020187DE: + blx G2_GetBG2CharPtr + pop {r3, pc} +_020187E4: + blx G2_GetBG3CharPtr + pop {r3, pc} +_020187EA: + blx G2S_GetBG0CharPtr + pop {r3, pc} +_020187F0: + blx G2S_GetBG1CharPtr + pop {r3, pc} +_020187F6: + blx G2S_GetBG2CharPtr + pop {r3, pc} +_020187FC: + blx G2S_GetBG3CharPtr + pop {r3, pc} +_02018802: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02018808 +FUN_02018808: ; 0x02018808 + push {r4-r7} + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + mov r4, #0x0 + cmp r1, #0x0 + bls _02018842 + mov r5, #0xf + add r6, r5, #0x0 +_02018818: + ldrb r7, [r0, r4] + and r7, r6 + strb r7, [r2, #0x0] + ldrb r7, [r2, #0x0] + cmp r7, #0x0 + beq _02018828 + add r7, r7, r3 + strb r7, [r2, #0x0] +_02018828: + ldrb r7, [r0, r4] + asr r7, r7, #0x4 + and r7, r5 + strb r7, [r2, #0x1] + ldrb r7, [r2, #0x1] + cmp r7, #0x0 + beq _0201883A + add r7, r7, r3 + strb r7, [r2, #0x1] +_0201883A: + add r4, r4, #0x1 + add r2, r2, #0x2 + cmp r4, r1 + blo _02018818 +_02018842: + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02018848 +FUN_02018848: ; 0x02018848 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + add r0, r3, #0x0 + lsl r1, r5, #0x1 + add r7, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02018808 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201886C +FUN_0201886C: ; 0x0201886C + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldr r0, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_02018878 +FUN_02018878: ; 0x02018878 + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrh r0, [r0, #0x20] + bx lr + .balign 4 + + thumb_func_start FUN_02018884 +FUN_02018884: ; 0x02018884 + sub sp, #0x20 + cmp r1, #0x7 + bls _0201888C + b _02018A38 +_0201888C: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02018898: ; jump table (using 16-bit offset) + .short _020188A8 - _02018898 - 2; case 0 + .short _020188BC - _02018898 - 2; case 1 + .short _020188D0 - _02018898 - 2; case 2 + .short _02018920 - _02018898 - 2; case 3 + .short _02018970 - _02018898 - 2; case 4 + .short _02018984 - _02018898 - 2; case 5 + .short _02018998 - _02018898 - 2; case 6 + .short _020189E8 - _02018898 - 2; case 7 +_020188A8: + ldr r0, _02018A40 ; =0x04000008 + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1e] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188BC: + ldr r0, _02018A44 ; =0x0400000A + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1c] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188D0: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020188E4 + cmp r0, #0x1 + beq _020188F8 + cmp r0, #0x2 + beq _0201890C +_020188E4: + ldr r0, _02018A48 ; =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x1a] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020188F8: + ldr r0, _02018A48 ; =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x18] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_0201890C: + ldr r0, _02018A48 ; =0x0400000C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x16] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018920: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _02018934 + cmp r0, #0x1 + beq _02018948 + cmp r0, #0x2 + beq _0201895C +_02018934: + ldr r0, _02018A4C ; =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x14] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018948: + ldr r0, _02018A4C ; =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x12] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_0201895C: + ldr r0, _02018A4C ; =0x0400000E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x10] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018970: + ldr r0, _02018A50 ; =0x04001008 + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xe] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018984: + ldr r0, _02018A54 ; =0x0400100A + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xc] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018998: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020189AC + cmp r0, #0x1 + beq _020189C0 + cmp r0, #0x2 + beq _020189D4 +_020189AC: + ldr r0, _02018A58 ; =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0xa] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189C0: + ldr r0, _02018A58 ; =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x8] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189D4: + ldr r0, _02018A58 ; =0x0400100C + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x6] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_020189E8: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1c] + cmp r0, #0x0 + beq _020189FC + cmp r0, #0x1 + beq _02018A10 + cmp r0, #0x2 + beq _02018A24 +_020189FC: + ldr r0, _02018A5C ; =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x4] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A10: + ldr r0, _02018A5C ; =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x2] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A24: + ldr r0, _02018A5C ; =0x0400100E + ldrh r1, [r0, #0x0] + add r0, sp, #0x0 + add sp, #0x20 + strh r1, [r0, #0x0] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr +_02018A38: + mov r0, #0x0 + add sp, #0x20 + bx lr + nop +_02018A40: .word 0x04000008 +_02018A44: .word 0x0400000A +_02018A48: .word 0x0400000C +_02018A4C: .word 0x0400000E +_02018A50: .word 0x04001008 +_02018A54: .word 0x0400100A +_02018A58: .word 0x0400100C +_02018A5C: .word 0x0400100E + + thumb_func_start FUN_02018A60 +FUN_02018A60: ; 0x02018A60 + push {r3-r7, lr} + sub sp, #0x68 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + add r2, sp, #0x70 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x10] + str r1, [sp, #0x4] + ldrh r2, [r2, #0x18] + str r0, [sp, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0x4] + ldr r0, [sp, #0x10] + sub r3, r1, r0 + cmp r3, r2 + bge _02018A88 + ldr r0, [sp, #0x8] + add r0, r0, r3 + str r0, [sp, #0x50] + b _02018A8E +_02018A88: + ldr r0, [sp, #0x8] + add r0, r2, r0 + str r0, [sp, #0x50] +_02018A8E: + ldr r2, [sp, #0x4] + add r3, sp, #0x70 + ldrh r0, [r3, #0x14] + ldrh r2, [r2, #0x6] + ldrh r3, [r3, #0x1c] + sub r4, r2, r0 + cmp r4, r3 + bge _02018AA6 + ldr r2, [sp, #0xc] + add r2, r2, r4 + str r2, [sp, #0x4c] + b _02018AAC +_02018AA6: + ldr r2, [sp, #0xc] + add r2, r3, r2 + str r2, [sp, #0x4c] +_02018AAC: + ldr r2, [sp, #0x0] + mov r3, #0x7 + ldrh r4, [r2, #0x4] + add r2, r4, #0x0 + and r2, r3 + add r2, r4, r2 + asr r2, r2, #0x3 + str r2, [sp, #0x48] + add r2, r1, #0x0 + and r2, r3 + add r1, r1, r2 + asr r1, r1, #0x3 + str r1, [sp, #0x44] + add r1, sp, #0x70 + ldrh r1, [r1, #0x20] + ldr r2, _02018C98 ; =0x0000FFFF + str r1, [sp, #0x38] + cmp r1, r2 + bne _02018BB4 + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + cmp r2, r1 + bge _02018ADE + cmp r2, r1 + blt _02018AE0 +_02018ADE: + b _02018C92 +_02018AE0: + add r1, r2, #0x0 + lsl r1, r1, #0x2 + lsl r0, r0, #0x2 + str r1, [sp, #0x28] + str r0, [sp, #0x24] +_02018AEA: + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x50] + add r1, r3, #0x0 + ldr r4, [sp, #0x10] + cmp r1, r0 + bge _02018B96 + cmp r1, r0 + bge _02018B96 + add r0, r3, #0x0 + lsl r5, r0, #0x2 + add r0, r4, #0x0 + lsl r6, r0, #0x2 + ldr r0, _02018C9C ; =0x00003FE0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x48] + and r1, r0 + mul r2, r1 + str r2, [sp, #0x20] + ldr r2, [sp, #0x28] + mov r1, #0x1c + and r2, r1 + str r2, [sp, #0x1c] + ldr r2, [sp, #0x24] + and r0, r2 + ldr r2, [sp, #0x44] + mul r2, r0 + ldr r0, [sp, #0x24] + str r2, [sp, #0x18] + and r0, r1 + str r0, [sp, #0x14] +_02018B26: + ldr r0, [sp, #0x4] + asr r2, r4, #0x1 + mov r1, #0x3 + ldr r0, [r0, #0x0] + and r1, r2 + add r1, r0, r1 + ldr r0, _02018C9C ; =0x00003FE0 + and r0, r6 + add r1, r1, r0 + ldr r0, [sp, #0x18] + add r6, r6, #0x4 + add r0, r1, r0 + str r0, [sp, #0x64] + lsl r0, r4, #0x1f + lsr r2, r0, #0x1d + ldr r0, [sp, #0x0] + asr r1, r3, #0x1 + ldr r7, [r0, #0x0] + mov r0, #0x3 + and r0, r1 + ldr r1, _02018C9C ; =0x00003FE0 + add r4, r4, #0x1 + and r1, r5 + str r1, [sp, #0x54] + add r1, r7, r0 + ldr r0, [sp, #0x54] + add r5, r5, #0x4 + add r1, r0, r1 + ldr r0, [sp, #0x20] + add r1, r0, r1 + ldr r0, [sp, #0x1c] + ldrb r1, [r0, r1] + lsl r0, r3, #0x1f + lsr r0, r0, #0x1d + asr r1, r0 + mov r0, #0xf + and r0, r1 + add r7, r0, #0x0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x64] + lsl r7, r2 + ldrb r0, [r0, r1] + add r3, r3, #0x1 + str r0, [sp, #0x58] + mov r0, #0xf0 + asr r0, r2 + ldr r1, [sp, #0x58] + add r2, r7, #0x0 + and r0, r1 + orr r2, r0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x64] + strb r2, [r0, r1] + ldr r0, [sp, #0x50] + cmp r3, r0 + blt _02018B26 +_02018B96: + ldr r0, [sp, #0x28] + add r0, r0, #0x4 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0x24] + ldr r0, [sp, #0x4c] + cmp r1, r0 + blt _02018AEA + add sp, #0x68 + pop {r3-r7, pc} +_02018BB4: + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x4c] + cmp r2, r1 + bge _02018C92 + cmp r2, r1 + bge _02018C92 + add r1, r2, #0x0 + lsl r1, r1, #0x2 + lsl r0, r0, #0x2 + str r1, [sp, #0x40] + str r0, [sp, #0x3c] +_02018BCA: + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x50] + add r1, r3, #0x0 + ldr r4, [sp, #0x10] + cmp r1, r0 + bge _02018C78 + cmp r1, r0 + bge _02018C78 + add r0, r3, #0x0 + lsl r1, r0, #0x2 + add r0, r4, #0x0 + lsl r2, r0, #0x2 + ldr r0, _02018C9C ; =0x00003FE0 + ldr r5, [sp, #0x40] + ldr r6, [sp, #0x48] + and r5, r0 + mul r6, r5 + str r6, [sp, #0x34] + ldr r6, [sp, #0x40] + mov r5, #0x1c + and r6, r5 + str r6, [sp, #0x30] + ldr r6, [sp, #0x3c] + and r0, r6 + ldr r6, [sp, #0x44] + mul r6, r0 + ldr r0, [sp, #0x3c] + str r6, [sp, #0x2c] + and r0, r5 + str r0, [sp, #0x60] +_02018C06: + ldr r0, [sp, #0x4] + asr r6, r4, #0x1 + mov r5, #0x3 + and r5, r6 + ldr r0, [r0, #0x0] + asr r6, r3, #0x1 + add r5, r0, r5 + ldr r0, _02018C9C ; =0x00003FE0 + and r0, r2 + add r5, r5, r0 + ldr r0, [sp, #0x2c] + add r5, r5, r0 + ldr r0, [sp, #0x0] + ldr r7, [r0, #0x0] + mov r0, #0x3 + and r0, r6 + ldr r6, _02018C9C ; =0x00003FE0 + and r6, r1 + str r6, [sp, #0x5c] + add r6, r7, r0 + ldr r0, [sp, #0x5c] + add r6, r0, r6 + ldr r0, [sp, #0x34] + add r6, r0, r6 + ldr r0, [sp, #0x30] + ldrb r6, [r0, r6] + lsl r0, r3, #0x1f + lsr r0, r0, #0x1d + asr r6, r0 + mov r0, #0xf + and r0, r6 + ldr r6, [sp, #0x38] + cmp r0, r6 + beq _02018C6A + lsl r6, r4, #0x1f + lsr r7, r6, #0x1d + lsl r0, r7 + mov lr, r0 + ldr r0, [sp, #0x60] + ldrb r0, [r5, r0] + mov r12, r0 + mov r0, #0xf0 + add r6, r0, #0x0 + asr r6, r7 + mov r0, r12 + and r0, r6 + mov r6, lr + orr r6, r0 + ldr r0, [sp, #0x60] + strb r6, [r5, r0] +_02018C6A: + ldr r0, [sp, #0x50] + add r3, r3, #0x1 + add r1, r1, #0x4 + add r2, r2, #0x4 + add r4, r4, #0x1 + cmp r3, r0 + blt _02018C06 +_02018C78: + ldr r0, [sp, #0x40] + add r0, r0, #0x4 + str r0, [sp, #0x40] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x4c] + cmp r1, r0 + blt _02018BCA +_02018C92: + add sp, #0x68 + pop {r3-r7, pc} + nop +_02018C98: .word 0x0000FFFF +_02018C9C: .word 0x00003FE0 + + thumb_func_start FUN_02018CA0 +FUN_02018CA0: ; 0x02018CA0 + push {r3-r7, lr} + sub sp, #0x50 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + add r2, sp, #0x58 + str r0, [sp, #0x0] + ldrh r0, [r2, #0x10] + str r1, [sp, #0x4] + ldrh r2, [r2, #0x18] + str r0, [sp, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0x4] + ldr r0, [sp, #0x10] + sub r3, r1, r0 + cmp r3, r2 + bge _02018CC6 + ldr r0, [sp, #0x8] + add r0, r0, r3 + b _02018CCA +_02018CC6: + ldr r0, [sp, #0x8] + add r0, r2, r0 +_02018CCA: + ldr r2, [sp, #0x4] + add r3, sp, #0x58 + mov r12, r0 + ldrh r0, [r3, #0x14] + ldrh r2, [r2, #0x6] + ldrh r3, [r3, #0x1c] + sub r4, r2, r0 + cmp r4, r3 + bge _02018CE2 + ldr r2, [sp, #0xc] + add r2, r2, r4 + b _02018CE6 +_02018CE2: + ldr r2, [sp, #0xc] + add r2, r3, r2 +_02018CE6: + mov lr, r2 + ldr r2, [sp, #0x0] + mov r3, #0x7 + ldrh r4, [r2, #0x4] + add r2, r4, #0x0 + and r2, r3 + add r2, r4, r2 + asr r2, r2, #0x3 + str r2, [sp, #0x4c] + add r2, r1, #0x0 + and r2, r3 + add r1, r1, r2 + asr r1, r1, #0x3 + str r1, [sp, #0x48] + add r1, sp, #0x58 + ldrh r1, [r1, #0x20] + ldr r2, _02018E80 ; =0x0000FFFF + str r1, [sp, #0x3c] + cmp r1, r2 + bne _02018DC6 + ldr r2, [sp, #0xc] + mov r1, lr + cmp r2, r1 + bge _02018D1C + mov r1, lr + cmp r2, r1 + blt _02018D1E +_02018D1C: + b _02018E7C +_02018D1E: + add r1, r2, #0x0 + lsl r1, r1, #0x3 + lsl r0, r0, #0x3 + str r1, [sp, #0x28] + str r0, [sp, #0x24] +_02018D28: + ldr r1, [sp, #0x8] + mov r0, r12 + add r2, r1, #0x0 + ldr r7, [sp, #0x10] + cmp r2, r0 + bge _02018DA8 + mov r0, r12 + cmp r2, r0 + bge _02018DA8 + add r0, r1, #0x0 + lsl r2, r0, #0x3 + add r0, r7, #0x0 + lsl r3, r0, #0x3 + ldr r6, _02018E84 ; =0x00007FC0 + ldr r0, [sp, #0x28] + ldr r4, [sp, #0x4c] + and r0, r6 + mul r4, r0 + str r4, [sp, #0x20] + ldr r0, [sp, #0x28] + mov r5, #0x38 + and r0, r5 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x48] + and r0, r6 + mul r4, r0 + ldr r0, [sp, #0x24] + str r4, [sp, #0x18] + and r0, r5 + str r0, [sp, #0x14] +_02018D66: + ldr r0, [sp, #0x0] + add r5, r1, #0x0 + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, _02018E84 ; =0x00007FC0 + add r0, r0, r5 + and r4, r2 + add r4, r4, r0 + ldr r0, [sp, #0x20] + add r5, r7, #0x0 + add r4, r0, r4 + ldr r0, [sp, #0x1c] + add r1, r1, #0x1 + ldrb r6, [r0, r4] + ldr r0, [sp, #0x4] + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, _02018E84 ; =0x00007FC0 + add r0, r0, r5 + and r4, r3 + add r4, r4, r0 + ldr r0, [sp, #0x18] + add r2, #0x8 + add r4, r0, r4 + ldr r0, [sp, #0x14] + add r3, #0x8 + strb r6, [r0, r4] + mov r0, r12 + add r7, r7, #0x1 + cmp r1, r0 + blt _02018D66 +_02018DA8: + ldr r0, [sp, #0x28] + add r0, #0x8 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + ldr r1, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0x24] + mov r0, lr + cmp r1, r0 + blt _02018D28 + add sp, #0x50 + pop {r3-r7, pc} +_02018DC6: + ldr r2, [sp, #0xc] + mov r1, lr + cmp r2, r1 + bge _02018E7C + mov r1, lr + cmp r2, r1 + bge _02018E7C + add r1, r2, #0x0 + lsl r1, r1, #0x3 + lsl r0, r0, #0x3 + str r1, [sp, #0x44] + str r0, [sp, #0x40] +_02018DDE: + ldr r2, [sp, #0x8] + mov r0, r12 + add r1, r2, #0x0 + ldr r3, [sp, #0x10] + cmp r1, r0 + bge _02018E62 + mov r0, r12 + cmp r1, r0 + bge _02018E62 + add r0, r2, #0x0 + lsl r6, r0, #0x3 + add r0, r3, #0x0 + lsl r1, r0, #0x3 + ldr r7, _02018E84 ; =0x00007FC0 + ldr r0, [sp, #0x44] + ldr r4, [sp, #0x4c] + and r0, r7 + mul r4, r0 + str r4, [sp, #0x38] + ldr r0, [sp, #0x44] + mov r5, #0x38 + and r0, r5 + str r0, [sp, #0x34] + ldr r0, [sp, #0x40] + ldr r4, [sp, #0x48] + and r0, r7 + mul r4, r0 + ldr r0, [sp, #0x40] + str r4, [sp, #0x30] + and r0, r5 + str r0, [sp, #0x2c] +_02018E1C: + ldr r0, [sp, #0x4] + mov r4, #0x7 + ldr r0, [r0, #0x0] + and r4, r3 + add r0, r0, r4 + ldr r4, _02018E84 ; =0x00007FC0 + add r5, r2, #0x0 + and r4, r1 + add r4, r0, r4 + ldr r0, [sp, #0x30] + add r7, r4, r0 + ldr r0, [sp, #0x0] + mov r4, #0x7 + and r5, r4 + ldr r0, [r0, #0x0] + ldr r4, _02018E84 ; =0x00007FC0 + add r0, r0, r5 + and r4, r6 + add r4, r4, r0 + ldr r0, [sp, #0x38] + add r4, r0, r4 + ldr r0, [sp, #0x34] + ldrb r0, [r0, r4] + ldr r4, [sp, #0x3c] + cmp r0, r4 + beq _02018E54 + ldr r4, [sp, #0x2c] + strb r0, [r7, r4] +_02018E54: + add r2, r2, #0x1 + mov r0, r12 + add r6, #0x8 + add r1, #0x8 + add r3, r3, #0x1 + cmp r2, r0 + blt _02018E1C +_02018E62: + ldr r0, [sp, #0x44] + add r0, #0x8 + str r0, [sp, #0x44] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x40] + ldr r1, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0x40] + mov r0, lr + cmp r1, r0 + blt _02018DDE +_02018E7C: + add sp, #0x50 + pop {r3-r7, pc} + .balign 4 +_02018E80: .word 0x0000FFFF +_02018E84: .word 0x00007FC0 + + thumb_func_start FUN_02018E88 +FUN_02018E88: ; 0x02018E88 + push {r4-r7, lr} + sub sp, #0x14 + str r1, [sp, #0x4] + str r2, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x4] + add r6, r0, r3 + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + cmp r6, r0 + ble _02018EA4 + add r6, r0, #0x0 +_02018EA4: + add r1, sp, #0x18 + ldrh r2, [r1, #0x10] + ldr r1, [sp, #0x8] + add r1, r1, r2 + mov r12, r1 + ldr r1, [sp, #0x0] + ldrh r2, [r1, #0x6] + mov r1, r12 + cmp r1, r2 + ble _02018EBA + mov r12, r2 +_02018EBA: + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + mov lr, r0 + ldr r1, [sp, #0x8] + mov r0, r12 + cmp r1, r0 + bge _02018F44 + add r0, r1, #0x0 + lsl r0, r0, #0x2 + str r0, [sp, #0xc] + ldr r0, [sp, #0x2c] + lsl r0, r0, #0x4 + str r0, [sp, #0x10] +_02018ED8: + ldr r1, [sp, #0x4] + add r0, r1, #0x0 + cmp r0, r6 + bge _02018F32 + lsl r5, r0, #0x2 + ldr r2, _02018F48 ; =0x00003FE0 + ldr r0, [sp, #0xc] + and r0, r2 + add r7, r0, #0x0 + mov r2, lr + mul r7, r2 + ldr r0, [sp, #0xc] + mov r2, #0x1c + and r2, r0 +_02018EF4: + ldr r0, [sp, #0x0] + asr r3, r1, #0x1 + ldr r4, [r0, #0x0] + mov r0, #0x3 + and r0, r3 + ldr r3, _02018F48 ; =0x00003FE0 + add r0, r4, r0 + and r3, r5 + add r0, r0, r3 + add r0, r0, r7 + mov r3, #0x1 + tst r3, r1 + ldrb r4, [r0, r2] + beq _02018F1C + mov r3, #0xf + and r3, r4 + strb r3, [r0, r2] + ldrb r4, [r0, r2] + ldr r3, [sp, #0x10] + b _02018F26 +_02018F1C: + mov r3, #0xf0 + and r3, r4 + strb r3, [r0, r2] + ldrb r4, [r0, r2] + ldr r3, [sp, #0x2c] +_02018F26: + orr r3, r4 + add r1, r1, #0x1 + strb r3, [r0, r2] + add r5, r5, #0x4 + cmp r1, r6 + blt _02018EF4 +_02018F32: + ldr r0, [sp, #0xc] + add r0, r0, #0x4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r1, r0, #0x1 + mov r0, r12 + str r1, [sp, #0x8] + cmp r1, r0 + blt _02018ED8 +_02018F44: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02018F48: .word 0x00003FE0 + + thumb_func_start FUN_02018F4C +FUN_02018F4C: ; 0x02018F4C + push {r4-r7, lr} + sub sp, #0x14 + str r1, [sp, #0x4] + str r2, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x4] + add r5, r0, r3 + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + cmp r5, r0 + ble _02018F68 + add r5, r0, #0x0 +_02018F68: + add r1, sp, #0x18 + ldrh r2, [r1, #0x10] + ldr r1, [sp, #0x8] + add r1, r1, r2 + mov lr, r1 + ldr r1, [sp, #0x0] + ldrh r2, [r1, #0x6] + mov r1, lr + cmp r1, r2 + ble _02018F7E + mov lr, r2 +_02018F7E: + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x10] + ldr r1, [sp, #0x8] + mov r0, lr + cmp r1, r0 + bge _02018FEA + add r0, r1, #0x0 + lsl r0, r0, #0x3 + str r0, [sp, #0xc] + ldr r0, [sp, #0x4] + lsl r0, r0, #0x3 + mov r12, r0 +_02018F9C: + ldr r2, [sp, #0x4] + add r0, r2, #0x0 + cmp r0, r5 + bge _02018FD8 + ldr r1, [sp, #0xc] + ldr r0, _02018FF0 ; =0x00007FC0 + mov r3, r12 + and r0, r1 + add r7, r0, #0x0 + ldr r1, [sp, #0x10] + mov r0, #0x38 + mul r7, r1 + ldr r1, [sp, #0xc] + add r6, r1, #0x0 + and r6, r0 +_02018FBA: + ldr r0, [sp, #0x0] + ldr r4, _02018FF0 ; =0x00007FC0 + ldr r1, [r0, #0x0] + mov r0, #0x7 + and r0, r2 + and r4, r3 + add r0, r1, r0 + add r0, r4, r0 + add r1, r7, r0 + ldr r0, [sp, #0x2c] + add r2, r2, #0x1 + strb r0, [r6, r1] + add r3, #0x8 + cmp r2, r5 + blt _02018FBA +_02018FD8: + ldr r0, [sp, #0xc] + add r0, #0x8 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r1, r0, #0x1 + mov r0, lr + str r1, [sp, #0x8] + cmp r1, r0 + blt _02018F9C +_02018FEA: + add sp, #0x14 + pop {r4-r7, pc} + nop +_02018FF0: .word 0x00007FC0 + + thumb_func_start FUN_02018FF4 +FUN_02018FF4: ; 0x02018FF4 + push {r4-r6, lr} + add r5, r1, #0x0 + lsl r1, r5, #0x4 + bl FUN_02016998 + add r6, r0, #0x0 + mov r4, #0x0 + cmp r5, #0x0 + ble _02019018 +_02019006: + lsl r0, r4, #0x4 + add r0, r6, r0 + bl FUN_0201901C + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blt _02019006 +_02019018: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0201901C +FUN_0201901C: ; 0x0201901C + mov r3, #0x0 + str r3, [r0, #0x0] + mov r1, #0xff + strb r1, [r0, #0x4] + strb r3, [r0, #0x5] + strb r3, [r0, #0x6] + strb r3, [r0, #0x7] + strb r3, [r0, #0x8] + strb r3, [r0, #0x9] + ldrh r2, [r0, #0xa] + ldr r1, _02019044 ; =0xFFFF8000 + and r2, r1 + strh r2, [r0, #0xa] + str r3, [r0, #0xc] + ldrh r2, [r0, #0xa] + sub r1, r1, #0x1 + and r1, r2 + strh r1, [r0, #0xa] + bx lr + nop +_02019044: .word 0xFFFF8000 + + thumb_func_start FUN_02019048 +FUN_02019048: ; 0x02019048 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0201905A + ldrb r1, [r0, #0x4] + cmp r1, #0xff + beq _0201905A + ldr r0, [r0, #0xc] + cmp r0, #0x0 + bne _0201905E +_0201905A: + mov r0, #0x0 + bx lr +_0201905E: + mov r0, #0x1 + bx lr + .balign 4 + + thumb_func_start FUN_02019064 +FUN_02019064: ; 0x02019064 + push {r3-r7, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + mov r0, #0x2c + add r7, r6, #0x0 + mul r7, r0 + add r4, r1, #0x0 + str r3, [sp, #0x0] + add r1, r5, r7 + ldr r0, [r1, #0x8] + cmp r0, #0x0 + beq _020190E0 + add r3, sp, #0x8 + ldrb r2, [r1, #0x1f] + ldrb r1, [r3, #0x14] + ldrb r3, [r3, #0x18] + ldr r0, [r5, #0x0] + mul r3, r1 + add r1, r2, #0x0 + mul r1, r3 + bl FUN_02016998 + add r1, r0, #0x0 + beq _020190E0 + str r5, [r4, #0x0] + strb r6, [r4, #0x4] + ldr r0, [sp, #0x0] + add r3, sp, #0x8 + strb r0, [r4, #0x5] + ldrb r0, [r3, #0x10] + ldr r2, _020190E4 ; =0xFFFF8000 + strb r0, [r4, #0x6] + ldrb r0, [r3, #0x14] + strb r0, [r4, #0x7] + ldrb r0, [r3, #0x18] + strb r0, [r4, #0x8] + ldrb r0, [r3, #0x1c] + strb r0, [r4, #0x9] + ldrh r0, [r4, #0xa] + ldrh r3, [r3, #0x20] + and r0, r2 + lsr r2, r2, #0x11 + and r2, r3 + orr r0, r2 + strh r0, [r4, #0xa] + str r1, [r4, #0xc] + add r0, r5, r7 + ldrb r0, [r0, #0x1e] + cmp r0, #0x0 + bne _020190CC + mov r2, #0x0 + b _020190CE +_020190CC: + mov r2, #0x1 +_020190CE: + ldrh r1, [r4, #0xa] + ldr r0, _020190E8 ; =0xFFFF7FFF + and r1, r0 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x1f + lsr r0, r0, #0x10 + orr r0, r1 + strh r0, [r4, #0xa] +_020190E0: + pop {r3-r7, pc} + nop +_020190E4: .word 0xFFFF8000 +_020190E8: .word 0xFFFF7FFF + + thumb_func_start FUN_020190EC +FUN_020190EC: ; 0x020190EC + push {r3-r7, lr} + sub sp, #0x8 + str r3, [sp, #0x0] + add r5, r0, #0x0 + ldr r0, [sp, #0x24] + add r6, r2, #0x0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x0] + add r4, r1, #0x0 + mul r0, r6 + lsl r0, r0, #0x5 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x4] + bl FUN_02016998 + ldr r1, [sp, #0x24] + add r7, r0, #0x0 + lsl r2, r1, #0x4 + orr r1, r2 + lsl r1, r1, #0x18 + ldr r2, [sp, #0x4] + lsr r1, r1, #0x18 + blx Call_FillMemWithValue + cmp r7, #0x0 + beq _02019148 + str r5, [r4, #0x0] + strb r6, [r4, #0x7] + ldr r0, [sp, #0x0] + strb r0, [r4, #0x8] + ldrh r1, [r4, #0xa] + ldr r0, _0201914C ; =0xFFFF8000 + add r3, r1, #0x0 + add r1, sp, #0x10 + ldrh r2, [r1, #0x10] + lsr r1, r0, #0x11 + and r3, r0 + and r1, r2 + orr r1, r3 + strh r1, [r4, #0xa] + str r7, [r4, #0xc] + ldrh r1, [r4, #0xa] + sub r0, r0, #0x1 + and r0, r1 + strh r0, [r4, #0xa] +_02019148: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0201914C: .word 0xFFFF8000 + + thumb_func_start FUN_02019150 +FUN_02019150: ; 0x02019150 + push {lr} + sub sp, #0x14 + add r3, r2, #0x0 + ldrb r2, [r3, #0x2] + str r2, [sp, #0x0] + ldrb r2, [r3, #0x3] + str r2, [sp, #0x4] + ldrb r2, [r3, #0x4] + str r2, [sp, #0x8] + ldrb r2, [r3, #0x5] + str r2, [sp, #0xc] + ldrh r2, [r3, #0x6] + str r2, [sp, #0x10] + ldrb r2, [r3, #0x0] + ldrb r3, [r3, #0x1] + bl FUN_02019064 + add sp, #0x14 + pop {pc} + .balign 4 + + thumb_func_start FUN_02019178 +FUN_02019178: ; 0x02019178 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + mov r2, #0x0 + str r2, [r4, #0x0] + mov r0, #0xff + strb r0, [r4, #0x4] + strb r2, [r4, #0x5] + strb r2, [r4, #0x6] + strb r2, [r4, #0x7] + strb r2, [r4, #0x8] + strb r2, [r4, #0x9] + ldrh r1, [r4, #0xa] + ldr r0, _020191A0 ; =0xFFFF8000 + and r0, r1 + strh r0, [r4, #0xa] + str r2, [r4, #0xc] + pop {r4, pc} + .balign 4 +_020191A0: .word 0xFFFF8000 + + thumb_func_start FUN_020191A4 +FUN_020191A4: ; 0x020191A4 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + mov r4, #0x0 + cmp r6, #0x0 + ble _020191C8 +_020191B0: + lsl r0, r4, #0x4 + add r0, r5, r0 + ldr r0, [r0, #0xc] + cmp r0, #0x0 + beq _020191BE + bl FUN_02016A18 +_020191BE: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r6 + blt _020191B0 +_020191C8: + add r0, r5, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + + thumb_func_start FUN_020191D0 +FUN_020191D0: ; 0x020191D0 + push {r4, lr} + add r4, r0, #0x0 + bne _020191DA + bl ErrorHandling +_020191DA: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _020191E4 + bl ErrorHandling +_020191E4: + ldrb r0, [r4, #0x4] + cmp r0, #0x8 + blo _020191EE + bl ErrorHandling +_020191EE: + ldrb r1, [r4, #0x4] + mov r0, #0x2c + ldr r2, [r4, #0x0] + mul r0, r1 + add r0, r2, r0 + ldrb r0, [r0, #0x1c] + cmp r0, #0x3 + blo _02019202 + bl ErrorHandling +_02019202: + ldrb r2, [r4, #0x4] + mov r1, #0x2c + ldr r3, [r4, #0x0] + mul r1, r2 + add r1, r3, r1 + ldrb r1, [r1, #0x1c] + add r0, r4, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0201921C ; =0x020EDB68 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0201921C: .word 0x020EDB68 + + thumb_func_start FUN_02019220 +FUN_02019220: ; 0x02019220 + push {r4, lr} + add r4, r0, #0x0 + bne _0201922A + bl ErrorHandling +_0201922A: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02019234 + bl ErrorHandling +_02019234: + ldrb r0, [r4, #0x4] + cmp r0, #0x8 + blo _0201923E + bl ErrorHandling +_0201923E: + ldrb r1, [r4, #0x4] + mov r0, #0x2c + ldr r2, [r4, #0x0] + mul r0, r1 + add r0, r2, r0 + ldrb r0, [r0, #0x1c] + cmp r0, #0x3 + blo _02019252 + bl ErrorHandling +_02019252: + ldrb r2, [r4, #0x4] + mov r1, #0x2c + ldr r3, [r4, #0x0] + mul r1, r2 + add r1, r3, r1 + ldrb r1, [r1, #0x1c] + add r0, r4, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0201926C ; =0x020EDB5C + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0201926C: .word 0x020EDB5C + + thumb_func_start FUN_02019270 +FUN_02019270: ; 0x02019270 + push {r3, lr} + ldrb r2, [r0, #0x4] + mov r1, #0x2c + ldr r3, [r0, #0x0] + mul r1, r2 + add r1, r3, r1 + ldrb r1, [r1, #0x1c] + lsl r2, r1, #0x2 + ldr r1, _02019288 ; =0x020EDB38 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + .balign 4 +_02019288: .word 0x020EDB38 + + thumb_func_start FUN_0201928C +FUN_0201928C: ; 0x0201928C + push {r4-r6, lr} + add r5, r0, #0x0 + ldrb r6, [r5, #0x7] + ldrb r4, [r5, #0x8] + strb r1, [r5, #0x7] + strb r2, [r5, #0x8] + ldrb r3, [r5, #0x4] + mov r2, #0x2c + ldr r1, [r5, #0x0] + mul r2, r3 + add r1, r1, r2 + ldrb r1, [r1, #0x1c] + lsl r2, r1, #0x2 + ldr r1, _020192B4 ; =0x020EDB38 + ldr r1, [r1, r2] + blx r1 + strb r6, [r5, #0x7] + strb r4, [r5, #0x8] + pop {r4-r6, pc} + nop +_020192B4: .word 0x020EDB38 + + thumb_func_start FUN_020192B8 +FUN_020192B8: ; 0x020192B8 + push {r3, lr} + ldrb r2, [r0, #0x4] + mov r1, #0x2c + ldr r3, [r0, #0x0] + mul r1, r2 + add r1, r3, r1 + ldrb r1, [r1, #0x1c] + lsl r2, r1, #0x2 + ldr r1, _020192D0 ; =0x020EDB74 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + .balign 4 +_020192D0: .word 0x020EDB74 + + thumb_func_start FUN_020192D4 +FUN_020192D4: ; 0x020192D4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldrb r1, [r5, #0x4] + mov r0, #0x2c + ldr r2, [r5, #0x0] + mul r0, r1 + add r0, r2, r0 + ldr r0, [r0, #0x8] + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02019354 + ldrh r0, [r5, #0xa] + ldrb r1, [r5, #0x5] + lsl r0, r0, #0x11 + lsr r3, r0, #0x11 + ldrb r0, [r5, #0x7] + add r7, r1, r0 + ldrb r0, [r5, #0x6] + ldrb r1, [r5, #0x8] + mov r12, r0 + add r0, r0, r1 + mov r1, r12 + mov lr, r0 + cmp r1, r0 + bhs _02019354 +_02019308: + ldrb r2, [r5, #0x5] + cmp r2, r7 + bhs _02019348 + mov r0, r12 + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + lsl r1, r0, #0x1 + ldr r0, [sp, #0x4] + add r0, r0, r1 + mov r1, r12 + str r0, [sp, #0x0] + mov r0, #0x20 + add r6, r1, #0x0 + and r6, r0 +_02019324: + ldrb r0, [r5, #0x9] + mov r4, #0x20 + add r1, r3, #0x0 + lsl r0, r0, #0xc + and r4, r2 + orr r1, r0 + mov r0, #0x1f + add r4, r6, r4 + and r0, r2 + lsl r4, r4, #0x5 + add r0, r0, r4 + lsl r4, r0, #0x1 + ldr r0, [sp, #0x0] + add r2, r2, #0x1 + strh r1, [r0, r4] + add r3, r3, #0x1 + cmp r2, r7 + blo _02019324 +_02019348: + mov r0, r12 + add r1, r0, #0x1 + mov r0, lr + mov r12, r1 + cmp r1, r0 + blo _02019308 +_02019354: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02019358 +FUN_02019358: ; 0x02019358 + push {r4-r7} + ldrb r3, [r0, #0x4] + mov r1, #0x2c + add r2, r3, #0x0 + mul r2, r1 + ldr r1, [r0, #0x0] + add r1, r1, r2 + ldr r3, [r1, #0x8] + cmp r3, #0x0 + beq _020193AC + ldrb r2, [r1, #0x1d] + ldr r1, _020193B0 ; =0x020EDB30 + ldrb r6, [r1, r2] + ldrb r1, [r0, #0x6] + add r2, r1, #0x0 + mul r2, r6 + add r2, r3, r2 + ldrb r1, [r0, #0x5] + mov r3, #0x0 + add r4, r2, r1 + ldrh r1, [r0, #0xa] + lsl r1, r1, #0x11 + lsr r5, r1, #0x11 + ldrb r1, [r0, #0x8] + cmp r1, #0x0 + ble _020193AC + add r1, r3, #0x0 +_0201938E: + ldrb r7, [r0, #0x7] + add r2, r1, #0x0 + cmp r7, #0x0 + ble _020193A2 +_02019396: + strb r5, [r4, r2] + ldrb r7, [r0, #0x7] + add r2, r2, #0x1 + add r5, r5, #0x1 + cmp r2, r7 + blt _02019396 +_020193A2: + ldrb r2, [r0, #0x8] + add r3, r3, #0x1 + add r4, r4, r6 + cmp r3, r2 + blt _0201938E +_020193AC: + pop {r4-r7} + bx lr + .balign 4 +_020193B0: .word 0x020EDB30 + + thumb_func_start FUN_020193B4 +FUN_020193B4: ; 0x020193B4 + push {r4-r7, lr} + sub sp, #0xc + ldrb r2, [r0, #0x4] + str r0, [sp, #0x0] + mov r0, #0x2c + add r1, r2, #0x0 + mul r1, r0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r1, r0, r1 + ldr r0, [r1, #0x8] + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _0201943C + ldrb r1, [r1, #0x1d] + ldr r0, _02019440 ; =0x020EDB30 + ldrb r0, [r0, r1] + str r0, [sp, #0x8] + ldr r0, [sp, #0x0] + ldrb r1, [r0, #0x5] + ldrb r0, [r0, #0x7] + add r2, r1, r0 + ldr r0, [sp, #0x0] + ldrb r0, [r0, #0x6] + mov r12, r0 + ldr r0, [sp, #0x0] + ldrb r1, [r0, #0x8] + mov r0, r12 + add r0, r0, r1 + mov r1, r12 + mov lr, r0 + cmp r1, r0 + bhs _0201943C + mov r6, #0x0 + mov r7, #0x20 +_020193FA: + ldr r0, [sp, #0x0] + ldrb r1, [r0, #0x5] + cmp r1, r2 + bhs _02019430 + mov r3, r12 + mov r0, #0x1f + and r3, r0 + ldr r0, [sp, #0x8] + mul r0, r3 + lsl r3, r0, #0x1 + ldr r0, [sp, #0x4] + add r5, r0, r3 + mov r3, r12 + mov r0, #0x20 + and r3, r0 +_02019418: + add r4, r1, #0x0 + and r4, r7 + mov r0, #0x1f + add r4, r3, r4 + and r0, r1 + lsl r4, r4, #0x5 + add r0, r0, r4 + lsl r0, r0, #0x1 + add r1, r1, #0x1 + strh r6, [r5, r0] + cmp r1, r2 + blo _02019418 +_02019430: + mov r0, r12 + add r1, r0, #0x1 + mov r0, lr + mov r12, r1 + cmp r1, r0 + blo _020193FA +_0201943C: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02019440: .word 0x020EDB30 + + thumb_func_start FUN_02019444 +FUN_02019444: ; 0x02019444 + push {r4-r7} + ldrb r3, [r0, #0x4] + mov r1, #0x2c + add r2, r3, #0x0 + mul r2, r1 + ldr r1, [r0, #0x0] + add r1, r1, r2 + ldr r3, [r1, #0x8] + cmp r3, #0x0 + beq _02019492 + ldrb r2, [r1, #0x1d] + ldr r1, _02019498 ; =0x020EDB30 + mov r4, #0x0 + ldrb r6, [r1, r2] + ldrb r1, [r0, #0x6] + add r2, r1, #0x0 + mul r2, r6 + ldrb r1, [r0, #0x5] + add r2, r3, r2 + add r5, r2, r1 + ldrb r1, [r0, #0x8] + cmp r1, #0x0 + ble _02019492 + add r1, r4, #0x0 + add r2, r4, #0x0 +_02019476: + ldrb r7, [r0, #0x7] + add r3, r2, #0x0 + cmp r7, #0x0 + ble _02019488 +_0201947E: + strb r1, [r5, r3] + ldrb r7, [r0, #0x7] + add r3, r3, #0x1 + cmp r3, r7 + blt _0201947E +_02019488: + ldrb r3, [r0, #0x8] + add r4, r4, #0x1 + add r5, r5, r6 + cmp r4, r3 + blt _02019476 +_02019492: + pop {r4-r7} + bx lr + nop +_02019498: .word 0x020EDB30 + + thumb_func_start FUN_0201949C +FUN_0201949C: ; 0x0201949C + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl FUN_020192D4 + add r0, r4, #0x0 + bl FUN_02019548 + ldrb r1, [r4, #0x4] + mov r0, #0x2c + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [r4, #0x0] + add r3, r0, r2 + ldr r2, [r3, #0x10] + str r2, [sp, #0x0] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + bl FUN_02017CE8 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_020194C8 +FUN_020194C8: ; 0x020194C8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020192D4 + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0201AC68 + add r0, r4, #0x0 + bl FUN_02019548 + pop {r4, pc} + + thumb_func_start FUN_020194E0 +FUN_020194E0: ; 0x020194E0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02019358 + ldrb r1, [r4, #0x4] + mov r0, #0x2c + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [r4, #0x0] + add r3, r0, r2 + ldr r2, [r3, #0x10] + str r2, [sp, #0x0] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + bl FUN_02017CE8 + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x11 + lsr r0, r0, #0x11 + str r0, [sp, #0x0] + ldrb r5, [r4, #0x7] + ldrb r3, [r4, #0x8] + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + mul r3, r5 + ldr r2, [r4, #0xc] + lsl r3, r3, #0x6 + bl FUN_02017E14 + pop {r3-r5, pc} + + thumb_func_start FUN_0201951C +FUN_0201951C: ; 0x0201951C + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02019358 + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0201AC68 + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x11 + lsr r0, r0, #0x11 + str r0, [sp, #0x0] + ldrb r5, [r4, #0x7] + ldrb r3, [r4, #0x8] + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + mul r3, r5 + ldr r2, [r4, #0xc] + lsl r3, r3, #0x6 + bl FUN_02017E14 + pop {r3-r5, pc} + + thumb_func_start FUN_02019548 +FUN_02019548: ; 0x02019548 + push {r3-r5, lr} + add r3, r0, #0x0 + ldrh r2, [r3, #0xa] + ldrb r1, [r3, #0x4] + mov r4, #0x2c + lsl r2, r2, #0x11 + ldr r0, [r3, #0x0] + lsr r2, r2, #0x11 + str r2, [sp, #0x0] + mul r4, r1 + add r4, r0, r4 + ldr r2, [r3, #0xc] + ldrb r5, [r3, #0x7] + ldrb r3, [r3, #0x8] + ldrb r4, [r4, #0x1f] + mul r3, r5 + mul r3, r4 + bl FUN_02017E14 + pop {r3-r5, pc} + + thumb_func_start FUN_02019570 +FUN_02019570: ; 0x02019570 + push {r3, lr} + ldrb r2, [r0, #0x4] + mov r1, #0x2c + ldr r3, [r0, #0x0] + mul r1, r2 + add r1, r3, r1 + ldrb r1, [r1, #0x1c] + lsl r2, r1, #0x2 + ldr r1, _02019588 ; =0x020EDB50 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + .balign 4 +_02019588: .word 0x020EDB50 + + thumb_func_start FUN_0201958C +FUN_0201958C: ; 0x0201958C + push {r3, lr} + ldrb r2, [r0, #0x4] + mov r1, #0x2c + ldr r3, [r0, #0x0] + mul r1, r2 + add r1, r3, r1 + ldrb r1, [r1, #0x1c] + lsl r2, r1, #0x2 + ldr r1, _020195A4 ; =0x020EDB44 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + .balign 4 +_020195A4: .word 0x020EDB44 + + thumb_func_start FUN_020195A8 +FUN_020195A8: ; 0x020195A8 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl FUN_020193B4 + ldrb r1, [r4, #0x4] + mov r0, #0x2c + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [r4, #0x0] + add r3, r0, r2 + ldr r2, [r3, #0x10] + str r2, [sp, #0x0] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + bl FUN_02017CE8 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_020195D0 +FUN_020195D0: ; 0x020195D0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020193B4 + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0201AC68 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020195E4 +FUN_020195E4: ; 0x020195E4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl FUN_02019444 + ldrb r1, [r4, #0x4] + mov r0, #0x2c + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [r4, #0x0] + add r3, r0, r2 + ldr r2, [r3, #0x10] + str r2, [sp, #0x0] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + bl FUN_02017CE8 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201960C +FUN_0201960C: ; 0x0201960C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02019444 + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0201AC68 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02019620 +FUN_02019620: ; 0x02019620 + push {r3-r5, lr} + add r4, r0, #0x0 + ldrb r2, [r4, #0x4] + mov r0, #0x2c + ldr r3, [r4, #0x0] + mul r0, r2 + add r0, r3, r0 + ldrb r2, [r0, #0x1f] + cmp r2, #0x20 + bne _0201963C + lsl r0, r1, #0x4 + orr r0, r1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 +_0201963C: + lsl r3, r1, #0x18 + lsl r0, r1, #0x10 + orr r0, r3 + lsl r5, r1, #0x8 + orr r0, r5 + orr r0, r1 + ldr r1, [r4, #0xc] + ldrb r3, [r4, #0x8] + ldrb r4, [r4, #0x7] + mul r2, r4 + mul r2, r3 + blx MIi_CpuClearFast + pop {r3-r5, pc} + + thumb_func_start FUN_02019658 +FUN_02019658: ; 0x02019658 + push {r4-r5, lr} + sub sp, #0x1c + add r4, sp, #0x18 + ldrh r5, [r4, #0x10] + str r5, [sp, #0x0] + ldrh r5, [r4, #0x14] + str r5, [sp, #0x4] + ldrh r5, [r4, #0x18] + str r5, [sp, #0x8] + ldrh r5, [r4, #0x1c] + str r5, [sp, #0xc] + ldrh r5, [r4, #0x20] + str r5, [sp, #0x10] + ldrh r4, [r4, #0x24] + str r4, [sp, #0x14] + mov r4, #0x0 + str r4, [sp, #0x18] + bl FUN_02019684 + add sp, #0x1c + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_02019684 +FUN_02019684: ; 0x02019684 + push {r4-r5, lr} + sub sp, #0x24 + str r1, [sp, #0x1c] + add r4, sp, #0x20 + ldrh r5, [r4, #0x10] + add r1, sp, #0x14 + strh r5, [r1, #0xc] + ldrh r5, [r4, #0x14] + strh r5, [r1, #0xe] + ldr r5, [r0, #0xc] + str r5, [sp, #0x14] + ldrb r5, [r0, #0x7] + lsl r5, r5, #0x3 + strh r5, [r1, #0x4] + ldrb r5, [r0, #0x8] + lsl r5, r5, #0x3 + strh r5, [r1, #0x6] + ldrb r5, [r0, #0x4] + ldr r1, [r0, #0x0] + mov r0, #0x2c + mul r0, r5 + add r0, r1, r0 + ldrb r0, [r0, #0x1e] + add r1, sp, #0x14 + cmp r0, #0x0 + ldrh r0, [r4, #0x18] + bne _020196D6 + str r0, [sp, #0x0] + ldrh r0, [r4, #0x1c] + str r0, [sp, #0x4] + ldrh r0, [r4, #0x20] + str r0, [sp, #0x8] + ldrh r0, [r4, #0x24] + str r0, [sp, #0xc] + ldrh r0, [r4, #0x28] + str r0, [sp, #0x10] + add r0, sp, #0x1c + bl FUN_02018A60 + add sp, #0x24 + pop {r4-r5, pc} +_020196D6: + str r0, [sp, #0x0] + ldrh r0, [r4, #0x1c] + str r0, [sp, #0x4] + ldrh r0, [r4, #0x20] + str r0, [sp, #0x8] + ldrh r0, [r4, #0x24] + str r0, [sp, #0xc] + ldrh r0, [r4, #0x28] + str r0, [sp, #0x10] + add r0, sp, #0x1c + bl FUN_02018CA0 + add sp, #0x24 + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_020196F4 +FUN_020196F4: ; 0x020196F4 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r1, #0x0 + ldr r1, [r0, #0xc] + add r4, r2, #0x0 + str r1, [sp, #0x8] + ldrb r1, [r0, #0x7] + add r2, r3, #0x0 + lsl r3, r1, #0x3 + add r1, sp, #0x8 + strh r3, [r1, #0x4] + ldrb r3, [r0, #0x8] + lsl r3, r3, #0x3 + strh r3, [r1, #0x6] + ldrb r3, [r0, #0x4] + ldr r1, [r0, #0x0] + mov r0, #0x2c + mul r0, r3 + add r0, r1, r0 + ldrb r0, [r0, #0x1e] + add r3, sp, #0x10 + cmp r0, #0x0 + bne _02019736 + ldrh r0, [r3, #0x14] + add r1, r4, #0x0 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldrh r3, [r3, #0x10] + add r0, sp, #0x8 + bl FUN_02018E88 + add sp, #0x10 + pop {r3-r5, pc} +_02019736: + ldrh r0, [r3, #0x14] + add r1, r4, #0x0 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldrh r3, [r3, #0x10] + add r0, sp, #0x8 + bl FUN_02018F4C + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201974C +FUN_0201974C: ; 0x0201974C + push {r4-r7, lr} + sub sp, #0x1fc + sub sp, #0x118 + add r5, r0, #0x0 + ldr r0, [sp, #0x330] + str r1, [sp, #0x0] + str r0, [sp, #0x330] + add r1, sp, #0x318 + ldrh r1, [r1, #0x10] + ldr r0, [r5, #0xc] + str r1, [sp, #0x5c] + ldrb r1, [r5, #0x7] + str r0, [sp, #0x278] + ldrb r0, [r5, #0x8] + lsl r1, r1, #0x13 + lsr r4, r1, #0x10 + ldr r1, [sp, #0x5c] + lsl r0, r0, #0x13 + sub r1, r4, r1 + lsr r0, r0, #0x10 + str r4, [sp, #0x58] + str r1, [sp, #0x8] + cmp r1, r2 + blt _0201977E + str r2, [sp, #0x8] +_0201977E: + add r1, sp, #0x318 + ldrh r1, [r1, #0x14] + sub r0, r0, r1 + str r1, [sp, #0x48] + str r0, [sp, #0x4] + cmp r0, r3 + blt _0201978E + str r3, [sp, #0x4] +_0201978E: + ldr r0, [sp, #0x8] + mov r4, #0x0 + cmp r0, #0x8 + ble _0201979E + mov r0, #0x1 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0201979E: + ldr r0, [sp, #0x4] + cmp r0, #0x8 + ble _020197AC + mov r0, #0x2 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_020197AC: + ldrh r0, [r5, #0xa] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1f + beq _020197B8 + bl FUN_0201A12C +_020197B8: + cmp r4, #0x3 + bls _020197C0 + bl FUN_0201A8BC +_020197C0: + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020197CC: ; jump table (using 16-bit offset) + .short _020197D4 - _020197CC - 2; case 0 + .short _020198D6 - _020197CC - 2; case 1 + .short _02019AE6 - _020197CC - 2; case 2 + .short _02019D06 - _020197CC - 2; case 3 +_020197D4: + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x70] + mov r0, #0x0 + str r0, [sp, #0x274] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bgt _020197EA + bl FUN_0201A8BC +_020197EA: + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x6c] +_020197F6: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x70] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x26c] + ldr r0, [sp, #0x274] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x270] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _020198AA + ble _020198AA + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x6c] + lsl r5, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0x68] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + ldr r5, [sp, #0x6c] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x64] + str r0, [sp, #0x60] +_02019848: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019B68 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x68] + str r5, [sp, #0x27c] + add r0, r5, r0 + ldr r5, [sp, #0x26c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _0201989C + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x280] + ldrb r5, [r0, r7] + str r5, [sp, #0x284] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x284] + and r6, r5 + ldr r5, [sp, #0x280] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x270] + cmp r0, #0x0 + beq _0201989C + ldr r6, [sp, #0x27c] + ldr r0, [sp, #0x64] + add r6, r6, r0 + ldr r0, [sp, #0x60] + strb r5, [r0, r6] +_0201989C: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019848 +_020198AA: + ldr r0, [sp, #0x270] + cmp r0, #0x0 + beq _020198B8 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _020198BE +_020198B8: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_020198BE: + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x274] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x274] + cmp r1, r0 + blt _020197F6 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_020198D6: + ldr r0, [sp, #0x0] + str r0, [sp, #0x25c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x264] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x54] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x84] + mov r0, #0x0 + str r0, [sp, #0x268] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _020199D2 + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x80] +_02019902: + ldr r0, [sp, #0x25c] + ldr r1, [sp, #0x84] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x258] + ldr r0, [sp, #0x268] + ldr r6, [sp, #0x80] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x260] + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x264] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x264] + str r6, [sp, #0x7c] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + ldr r5, [sp, #0x80] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x78] + str r0, [sp, #0x74] +_0201994C: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019B68 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x7c] + str r5, [sp, #0x288] + add r0, r5, r0 + ldr r5, [sp, #0x258] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _020199A0 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x28c] + ldrb r5, [r0, r7] + str r5, [sp, #0x290] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x290] + and r6, r5 + ldr r5, [sp, #0x28c] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x260] + cmp r0, #0x0 + beq _020199A0 + ldr r6, [sp, #0x288] + ldr r0, [sp, #0x78] + add r6, r6, r0 + ldr r0, [sp, #0x74] + strb r5, [r0, r6] +_020199A0: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _0201994C + ldr r0, [sp, #0x260] + cmp r0, #0x0 + beq _020199BA + ldr r0, [sp, #0x264] + add r0, r0, #0x2 + str r0, [sp, #0x264] + b _020199C0 +_020199BA: + ldr r0, [sp, #0x264] + add r0, r0, #0x1 + str r0, [sp, #0x264] +_020199C0: + ldr r0, [sp, #0x25c] + add r0, r0, #0x4 + str r0, [sp, #0x25c] + ldr r0, [sp, #0x268] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x268] + cmp r1, r0 + blt _02019902 +_020199D2: + ldr r0, [sp, #0x0] + add r0, #0x20 + str r0, [sp, #0x0] + ldr r0, [sp, #0x54] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x98] + mov r0, #0x0 + str r0, [sp, #0x254] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bgt _020199EE + bl FUN_0201A8BC +_020199EE: + ldr r0, [sp, #0x5c] + mov r1, #0x7 + add r0, #0x8 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x94] +_02019A00: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x98] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x24c] + ldr r0, [sp, #0x254] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x250] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x294] + sub r0, #0x8 + str r0, [sp, #0x294] + cmp r0, #0x0 + ble _02019ABA + ble _02019ABA + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x94] + lsl r5, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0x90] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + ldr r5, [sp, #0x94] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0x8c] + str r0, [sp, #0x88] +_02019A58: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019B68 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0x90] + str r5, [sp, #0x298] + add r0, r5, r0 + ldr r5, [sp, #0x24c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019AAC + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x29c] + ldrb r5, [r0, r7] + str r5, [sp, #0x2a0] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2a0] + and r6, r5 + ldr r5, [sp, #0x29c] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x250] + cmp r0, #0x0 + beq _02019AAC + ldr r6, [sp, #0x298] + ldr r0, [sp, #0x8c] + add r6, r6, r0 + ldr r0, [sp, #0x88] + strb r5, [r0, r6] +_02019AAC: + ldr r0, [sp, #0x294] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019A58 +_02019ABA: + ldr r0, [sp, #0x250] + cmp r0, #0x0 + beq _02019AC8 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _02019ACE +_02019AC8: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019ACE: + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x254] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x254] + cmp r1, r0 + blt _02019A00 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_02019AE6: + ldr r0, [sp, #0x0] + mov r1, #0x7 + str r0, [sp, #0x23c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x244] + mov r0, #0x0 + str r0, [sp, #0x248] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xa8] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x40] +_02019B06: + ldr r0, [sp, #0x23c] + ldr r1, [sp, #0xa8] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x238] + ldr r0, [sp, #0x248] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x240] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _02019BC2 + ble _02019BC2 + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x244] + ldr r6, [sp, #0x40] + lsl r5, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x244] + str r6, [sp, #0xa4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019B68 ; =0x00003FE0 + ldr r5, [sp, #0x40] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xa0] + str r0, [sp, #0x9c] +_02019B58: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019B68 ; =0x00003FE0 + b _02019B6C + nop +_02019B68: .word 0x00003FE0 +_02019B6C: + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xa4] + str r5, [sp, #0x2a4] + add r0, r5, r0 + ldr r5, [sp, #0x238] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019BB4 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2a8] + ldrb r5, [r0, r7] + str r5, [sp, #0x2ac] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2ac] + and r6, r5 + ldr r5, [sp, #0x2a8] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x240] + cmp r0, #0x0 + beq _02019BB4 + ldr r6, [sp, #0x2a4] + ldr r0, [sp, #0xa0] + add r6, r6, r0 + ldr r0, [sp, #0x9c] + strb r5, [r0, r6] +_02019BB4: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019B58 +_02019BC2: + ldr r0, [sp, #0x240] + cmp r0, #0x0 + beq _02019BD0 + ldr r0, [sp, #0x244] + add r0, r0, #0x2 + str r0, [sp, #0x244] + b _02019BD6 +_02019BD0: + ldr r0, [sp, #0x244] + add r0, r0, #0x1 + str r0, [sp, #0x244] +_02019BD6: + ldr r0, [sp, #0x23c] + add r0, r0, #0x4 + str r0, [sp, #0x23c] + ldr r0, [sp, #0x248] + add r0, r0, #0x1 + str r0, [sp, #0x248] + cmp r0, #0x8 + blt _02019B06 + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r0, #0x40 + str r0, [sp, #0x0] + ldr r0, [sp, #0x48] + mov r1, #0x1 + add r0, #0x8 + str r0, [sp, #0x48] +_02019BF6: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _02019C04 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019C04: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _02019BF6 + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xb8] + mov r0, #0x0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + bgt _02019C24 + bl FUN_0201A8BC +_02019C24: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0xb8] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x230] + ldr r0, [sp, #0x20] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x234] + ldr r0, [sp, #0x8] + mov r1, #0x0 + cmp r0, #0x0 + ble _02019CD8 + ble _02019CD8 + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x40] + lsl r5, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0xb4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + ldr r5, [sp, #0x40] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xb0] + str r0, [sp, #0xac] +_02019C76: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019F88 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xb4] + str r5, [sp, #0x2b0] + add r0, r5, r0 + ldr r5, [sp, #0x230] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019CCA + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2b4] + ldrb r5, [r0, r7] + str r5, [sp, #0x2b8] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2b8] + and r6, r5 + ldr r5, [sp, #0x2b4] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x234] + cmp r0, #0x0 + beq _02019CCA + ldr r6, [sp, #0x2b0] + ldr r0, [sp, #0xb0] + add r6, r6, r0 + ldr r0, [sp, #0xac] + strb r5, [r0, r6] +_02019CCA: + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019C76 +_02019CD8: + ldr r0, [sp, #0x234] + cmp r0, #0x0 + beq _02019CE6 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _02019CEC +_02019CE6: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_02019CEC: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x20] + cmp r0, r1 + blt _02019C24 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} +_02019D06: + ldr r0, [sp, #0x0] + str r0, [sp, #0x220] + ldr r0, [sp, #0x48] + str r0, [sp, #0x228] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x22c] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x38] +_02019D2A: + ldr r0, [sp, #0x220] + ldr r1, [sp, #0x3c] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x21c] + ldr r0, [sp, #0x22c] + ldr r6, [sp, #0x38] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x224] + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x228] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x228] + str r6, [sp, #0xc4] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + str r3, [sp, #0x34] + add r4, r1, #0x0 + str r5, [sp, #0xc0] + str r0, [sp, #0xbc] +_02019D76: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019F88 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xc4] + str r5, [sp, #0x2bc] + add r0, r5, r0 + ldr r5, [sp, #0x21c] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019DCA + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2c0] + ldrb r5, [r0, r7] + str r5, [sp, #0x2c4] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2c4] + and r6, r5 + ldr r5, [sp, #0x2c0] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x224] + cmp r0, #0x0 + beq _02019DCA + ldr r6, [sp, #0x2bc] + ldr r0, [sp, #0xc0] + add r6, r6, r0 + ldr r0, [sp, #0xbc] + strb r5, [r0, r6] +_02019DCA: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _02019D76 + ldr r0, [sp, #0x224] + cmp r0, #0x0 + beq _02019DE4 + ldr r0, [sp, #0x228] + add r0, r0, #0x2 + str r0, [sp, #0x228] + b _02019DEA +_02019DE4: + ldr r0, [sp, #0x228] + add r0, r0, #0x1 + str r0, [sp, #0x228] +_02019DEA: + ldr r0, [sp, #0x220] + add r0, r0, #0x4 + str r0, [sp, #0x220] + ldr r0, [sp, #0x22c] + add r0, r0, #0x1 + str r0, [sp, #0x22c] + cmp r0, #0x8 + blt _02019D2A + ldr r0, [sp, #0x0] + str r0, [sp, #0x20c] + add r0, #0x20 + str r0, [sp, #0x20c] + ldr r0, [sp, #0x48] + str r0, [sp, #0x214] + mov r0, #0x0 + str r0, [sp, #0x218] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xd4] + add r0, #0x8 + str r0, [sp, #0xd4] +_02019E12: + ldr r0, [sp, #0x20c] + ldr r1, [sp, #0x3c] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0xd4] + str r0, [sp, #0x208] + ldr r0, [sp, #0x218] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x210] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x2c8] + sub r0, #0x8 + str r0, [sp, #0x2c8] + cmp r0, #0x0 + ble _02019ECC + ble _02019ECC + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x214] + ldr r6, [sp, #0x38] + lsl r5, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x214] + str r6, [sp, #0xd0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xcc] + str r0, [sp, #0xc8] +_02019E6A: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019F88 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xd0] + str r5, [sp, #0x2cc] + add r0, r5, r0 + ldr r5, [sp, #0x208] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019EBE + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2d0] + ldrb r5, [r0, r7] + str r5, [sp, #0x2d4] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2d4] + and r6, r5 + ldr r5, [sp, #0x2d0] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x210] + cmp r0, #0x0 + beq _02019EBE + ldr r6, [sp, #0x2cc] + ldr r0, [sp, #0xcc] + add r6, r6, r0 + ldr r0, [sp, #0xc8] + strb r5, [r0, r6] +_02019EBE: + ldr r0, [sp, #0x2c8] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _02019E6A +_02019ECC: + ldr r0, [sp, #0x210] + cmp r0, #0x0 + beq _02019EDA + ldr r0, [sp, #0x214] + add r0, r0, #0x2 + str r0, [sp, #0x214] + b _02019EE0 +_02019EDA: + ldr r0, [sp, #0x214] + add r0, r0, #0x1 + str r0, [sp, #0x214] +_02019EE0: + ldr r0, [sp, #0x20c] + add r0, r0, #0x4 + str r0, [sp, #0x20c] + ldr r0, [sp, #0x218] + add r0, r0, #0x1 + str r0, [sp, #0x218] + cmp r0, #0x8 + blt _02019E12 + ldr r0, [sp, #0x0] + mov r2, #0x0 + str r0, [sp, #0x1fc] + add r0, #0x40 + str r0, [sp, #0x1fc] + ldr r0, [sp, #0x48] + mov r1, #0x1 + add r0, #0x8 + str r0, [sp, #0x48] + str r0, [sp, #0x204] +_02019F04: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _02019F12 + ldr r0, [sp, #0x204] + add r0, r0, #0x1 + str r0, [sp, #0x204] +_02019F12: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _02019F04 + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + str r0, [sp, #0x50] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xe4] + mov r0, #0x0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A008 +_02019F30: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0xe4] + ldr r0, [r0, #0x0] + ldr r6, [sp, #0x38] + str r0, [sp, #0x1f8] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x200] + ldr r0, [sp, #0x204] + mov r1, #0x0 + lsl r5, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x204] + str r6, [sp, #0xe0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _02019F88 ; =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + ldr r3, [sp, #0x34] + add r4, r1, #0x0 + str r5, [sp, #0xdc] + str r0, [sp, #0xd8] +_02019F78: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _02019F88 ; =0x00003FE0 + b _02019F8C + nop +_02019F88: .word 0x00003FE0 +_02019F8C: + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xe0] + str r5, [sp, #0x2d8] + add r0, r5, r0 + ldr r5, [sp, #0x1f8] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _02019FD4 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2dc] + ldrb r5, [r0, r7] + str r5, [sp, #0x2e0] + mov r5, #0xf0 + asr r5, r6 + ldr r6, [sp, #0x2e0] + and r6, r5 + ldr r5, [sp, #0x2dc] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x200] + cmp r0, #0x0 + beq _02019FD4 + ldr r6, [sp, #0x2d8] + ldr r0, [sp, #0xdc] + add r6, r6, r0 + ldr r0, [sp, #0xd8] + strb r5, [r0, r6] +_02019FD4: + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, #0x8 + blt _02019F78 + ldr r0, [sp, #0x200] + cmp r0, #0x0 + beq _02019FEE + ldr r0, [sp, #0x204] + add r0, r0, #0x2 + str r0, [sp, #0x204] + b _02019FF4 +_02019FEE: + ldr r0, [sp, #0x204] + add r0, r0, #0x1 + str r0, [sp, #0x204] +_02019FF4: + ldr r0, [sp, #0x1fc] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x1fc] + ldr r0, [sp, #0x1c] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1c] + cmp r0, r1 + blt _02019F30 +_0201A008: + ldr r0, [sp, #0x0] + mov r2, #0x0 + add r0, #0x60 + str r0, [sp, #0x0] + mov r1, #0x1 +_0201A012: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _0201A020 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A020: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _0201A012 + ldr r0, [sp, #0x50] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xf4] + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + bgt _0201A03E + bl FUN_0201A8BC +_0201A03E: + ldr r0, [sp, #0x5c] + add r0, #0x8 + str r0, [sp, #0x5c] +_0201A044: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0xf4] + ldr r0, [r0, #0x0] + ldr r2, [sp, #0x5c] + str r0, [sp, #0x1f0] + ldr r0, [sp, #0x18] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1f4] + ldr r0, [sp, #0x8] + mov r1, #0x0 + str r0, [sp, #0x2e4] + sub r0, #0x8 + str r0, [sp, #0x2e4] + cmp r0, #0x0 + ble _0201A0FE + ble _0201A0FE + add r0, r2, #0x0 + lsl r3, r0, #0x2 + ldr r0, [sp, #0x48] + ldr r6, [sp, #0x38] + lsl r5, r0, #0x2 + ldr r0, _0201A3A8 ; =0x00003FE0 + add r7, r5, #0x0 + and r0, r5 + mul r6, r0 + mov r0, #0x1c + and r7, r0 + ldr r0, [sp, #0x48] + str r6, [sp, #0xf0] + add r0, r0, #0x1 + lsl r6, r0, #0x2 + ldr r0, _0201A3A8 ; =0x00003FE0 + ldr r5, [sp, #0x38] + and r0, r6 + mul r5, r0 + mov r0, #0x1c + and r0, r6 + add r4, r1, #0x0 + str r5, [sp, #0xec] + str r0, [sp, #0xe8] +_0201A09C: + asr r5, r2, #0x1 + mov r0, #0x3 + and r5, r0 + ldr r0, [sp, #0x278] + add r0, r0, r5 + ldr r5, _0201A3A8 ; =0x00003FE0 + and r5, r3 + add r5, r0, r5 + ldr r0, [sp, #0xf0] + str r5, [sp, #0x2e8] + add r0, r5, r0 + ldr r5, [sp, #0x1f0] + add r6, r5, #0x0 + lsr r6, r4 + mov r5, #0xf + and r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + beq _0201A0F0 + lsl r6, r2, #0x1f + lsr r6, r6, #0x1d + lsl r5, r6 + str r5, [sp, #0x2ec] + ldrb r5, [r0, r7] + mov r12, r5 + mov r5, #0xf0 + asr r5, r6 + mov r6, r12 + and r6, r5 + ldr r5, [sp, #0x2ec] + orr r5, r6 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + strb r5, [r0, r7] + ldr r0, [sp, #0x1f4] + cmp r0, #0x0 + beq _0201A0F0 + ldr r6, [sp, #0x2e8] + ldr r0, [sp, #0xec] + add r6, r6, r0 + ldr r0, [sp, #0xe8] + strb r5, [r0, r6] +_0201A0F0: + ldr r0, [sp, #0x2e4] + add r1, r1, #0x1 + add r4, r4, #0x4 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r1, r0 + blt _0201A09C +_0201A0FE: + ldr r0, [sp, #0x1f4] + cmp r0, #0x0 + beq _0201A10C + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A112 +_0201A10C: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A112: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x18] + cmp r0, r1 + blt _0201A044 + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} + + thumb_func_start FUN_0201A12C +FUN_0201A12C: ; 0x0201A12C + lsl r1, r2, #0x2 + mul r1, r3 + ldr r3, [r5, #0x0] + ldrb r2, [r5, #0x9] + ldr r0, [sp, #0x0] + ldr r3, [r3, #0x0] + lsl r1, r1, #0x3 + bl FUN_02018848 + str r0, [sp, #0x1ec] + cmp r4, #0x3 + bhi _0201A21E + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0201A150: ; jump table (using 16-bit offset) + .short _0201A158 - _0201A150 - 2; case 0 + .short _0201A220 - _0201A150 - 2; case 1 + .short _0201A3CA - _0201A150 - 2; case 2 + .short _0201A56E - _0201A150 - 2; case 3 +_0201A158: + ldr r0, [sp, #0x330] + ldr r7, [sp, #0x1ec] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10c] + mov r0, #0x0 + str r0, [sp, #0x1e8] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A21E + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x108] +_0201A178: + ldr r1, [sp, #0x10c] + ldr r0, [sp, #0x1e8] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x310] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A1FC + ble _0201A1FC + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x108] + lsl r1, r0, #0x3 + ldr r0, _0201A3AC ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x100] + ldr r0, [sp, #0x48] + str r2, [sp, #0x104] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A3AC ; =0x00007FC0 + ldr r2, [sp, #0x108] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0xfc] + str r0, [sp, #0xf8] +_0201A1C4: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A3AC ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x104] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A1F0 + ldr r0, [sp, #0x100] + strb r1, [r2, r0] + ldr r0, [sp, #0x310] + cmp r0, #0x0 + beq _0201A1F0 + ldr r0, [sp, #0xfc] + add r2, r3, r0 + ldr r0, [sp, #0xf8] + strb r1, [r0, r2] +_0201A1F0: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A1C4 +_0201A1FC: + ldr r0, [sp, #0x310] + cmp r0, #0x0 + beq _0201A20A + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A210 +_0201A20A: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A210: + ldr r0, [sp, #0x1e8] + add r7, #0x8 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1e8] + cmp r1, r0 + blt _0201A178 +_0201A21E: + b _0201A8B6 +_0201A220: + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + str r0, [sp, #0x1e0] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x124] + mov r0, #0x0 + str r0, [sp, #0x1e4] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A2E6 + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x120] +_0201A24A: + ldr r1, [sp, #0x124] + ldr r0, [sp, #0x1e4] + ldr r5, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x30c] + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1e0] + ldr r2, [sp, #0x120] + lsl r1, r0, #0x3 + ldr r0, _0201A3AC ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x118] + ldr r0, [sp, #0x1e0] + str r2, [sp, #0x11c] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A3AC ; =0x00007FC0 + ldr r2, [sp, #0x120] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + mov r4, #0x0 + str r2, [sp, #0x114] + str r0, [sp, #0x110] +_0201A28E: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A3AC ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x11c] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A2BA + ldr r0, [sp, #0x118] + strb r1, [r2, r0] + ldr r0, [sp, #0x30c] + cmp r0, #0x0 + beq _0201A2BA + ldr r0, [sp, #0x114] + add r2, r3, r0 + ldr r0, [sp, #0x110] + strb r1, [r0, r2] +_0201A2BA: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A28E + ldr r0, [sp, #0x30c] + cmp r0, #0x0 + beq _0201A2D2 + ldr r0, [sp, #0x1e0] + add r0, r0, #0x2 + str r0, [sp, #0x1e0] + b _0201A2D8 +_0201A2D2: + ldr r0, [sp, #0x1e0] + add r0, r0, #0x1 + str r0, [sp, #0x1e0] +_0201A2D8: + ldr r0, [sp, #0x1e4] + add r7, #0x8 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1e4] + cmp r1, r0 + blt _0201A24A +_0201A2E6: + ldr r0, [sp, #0x1ec] + str r0, [sp, #0x308] + add r0, #0x40 + str r0, [sp, #0x308] + ldr r0, [sp, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x13c] + mov r0, #0x0 + str r0, [sp, #0x1dc] + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201A3C8 + ldr r0, [sp, #0x5c] + mov r1, #0x7 + add r0, #0x8 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x138] +_0201A312: + ldr r1, [sp, #0x13c] + ldr r0, [sp, #0x1dc] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1d8] + ldr r5, [sp, #0x5c] + cmp r7, #0x0 + ble _0201A398 + ble _0201A398 + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x138] + lsl r1, r0, #0x3 + ldr r0, _0201A3AC ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x130] + ldr r0, [sp, #0x48] + str r2, [sp, #0x134] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A3AC ; =0x00007FC0 + ldr r2, [sp, #0x138] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x12c] + str r0, [sp, #0x128] +_0201A360: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A3AC ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x134] + add r2, r3, r0 + ldr r0, [sp, #0x308] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A38E + ldr r0, [sp, #0x130] + strb r1, [r2, r0] + ldr r0, [sp, #0x1d8] + cmp r0, #0x0 + beq _0201A38E + ldr r0, [sp, #0x12c] + add r2, r3, r0 + ldr r0, [sp, #0x128] + strb r1, [r0, r2] +_0201A38E: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A360 +_0201A398: + ldr r0, [sp, #0x1d8] + cmp r0, #0x0 + beq _0201A3B0 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A3B6 + nop +_0201A3A8: .word 0x00003FE0 +_0201A3AC: .word 0x00007FC0 +_0201A3B0: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A3B6: + ldr r0, [sp, #0x308] + add r0, #0x8 + str r0, [sp, #0x308] + ldr r0, [sp, #0x1dc] + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x1dc] + cmp r1, r0 + blt _0201A312 +_0201A3C8: + b _0201A8B6 +_0201A3CA: + ldr r0, [sp, #0x48] + mov r1, #0x7 + str r0, [sp, #0x1d0] + mov r0, #0x0 + str r0, [sp, #0x1d4] + ldr r0, [sp, #0x330] + ldr r7, [sp, #0x1ec] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x150] + ldr r0, [sp, #0x58] + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x30] +_0201A3E8: + ldr r1, [sp, #0x150] + ldr r0, [sp, #0x1d4] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x304] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A46C + ble _0201A46C + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1d0] + ldr r2, [sp, #0x30] + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x148] + ldr r0, [sp, #0x1d0] + str r2, [sp, #0x14c] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + ldr r2, [sp, #0x30] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x144] + str r0, [sp, #0x140] +_0201A434: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A748 ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x14c] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A460 + ldr r0, [sp, #0x148] + strb r1, [r2, r0] + ldr r0, [sp, #0x304] + cmp r0, #0x0 + beq _0201A460 + ldr r0, [sp, #0x144] + add r2, r3, r0 + ldr r0, [sp, #0x140] + strb r1, [r0, r2] +_0201A460: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A434 +_0201A46C: + ldr r0, [sp, #0x304] + cmp r0, #0x0 + beq _0201A47A + ldr r0, [sp, #0x1d0] + add r0, r0, #0x2 + str r0, [sp, #0x1d0] + b _0201A480 +_0201A47A: + ldr r0, [sp, #0x1d0] + add r0, r0, #0x1 + str r0, [sp, #0x1d0] +_0201A480: + ldr r0, [sp, #0x1d4] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1d4] + cmp r0, #0x8 + blt _0201A3E8 + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + add r0, #0x8 + str r0, [sp, #0x48] + add r7, #0x80 + mov r0, #0x0 + mov r2, #0x1 +_0201A49A: + ldr r1, [sp, #0x330] + asr r1, r0 + tst r1, r2 + beq _0201A4A8 + ldr r1, [sp, #0x48] + add r1, r1, #0x1 + str r1, [sp, #0x48] +_0201A4A8: + add r0, r0, #0x1 + cmp r0, #0x8 + blt _0201A49A + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x164] + mov r0, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A56C +_0201A4C4: + ldr r1, [sp, #0x164] + ldr r0, [sp, #0x14] + mov r4, #0x0 + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x300] + ldr r0, [sp, #0x8] + ldr r5, [sp, #0x5c] + cmp r0, #0x0 + ble _0201A548 + ble _0201A548 + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x30] + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x15c] + ldr r0, [sp, #0x48] + str r2, [sp, #0x160] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + ldr r2, [sp, #0x30] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x158] + str r0, [sp, #0x154] +_0201A510: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A748 ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x160] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A53C + ldr r0, [sp, #0x15c] + strb r1, [r2, r0] + ldr r0, [sp, #0x300] + cmp r0, #0x0 + beq _0201A53C + ldr r0, [sp, #0x158] + add r2, r3, r0 + ldr r0, [sp, #0x154] + strb r1, [r0, r2] +_0201A53C: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r0 + blt _0201A510 +_0201A548: + ldr r0, [sp, #0x300] + cmp r0, #0x0 + beq _0201A556 + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A55C +_0201A556: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A55C: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r0, r0, #0x1 + sub r1, #0x8 + add r7, #0x8 + str r0, [sp, #0x14] + cmp r0, r1 + blt _0201A4C4 +_0201A56C: + b _0201A8B6 +_0201A56E: + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + str r0, [sp, #0x1c8] + ldr r0, [sp, #0x330] + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x0 + str r0, [sp, #0x1cc] + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x58] + mov r1, #0x7 + and r1, r0 + add r0, r0, r1 + asr r0, r0, #0x3 + str r0, [sp, #0x28] +_0201A590: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1cc] + ldr r5, [sp, #0x5c] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2fc] + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1c8] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x170] + ldr r0, [sp, #0x1c8] + str r2, [sp, #0x174] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + mov r4, #0x0 + str r6, [sp, #0x24] + str r2, [sp, #0x16c] + str r0, [sp, #0x168] +_0201A5D6: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A748 ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x174] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A602 + ldr r0, [sp, #0x170] + strb r1, [r2, r0] + ldr r0, [sp, #0x2fc] + cmp r0, #0x0 + beq _0201A602 + ldr r0, [sp, #0x16c] + add r2, r3, r0 + ldr r0, [sp, #0x168] + strb r1, [r0, r2] +_0201A602: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A5D6 + ldr r0, [sp, #0x2fc] + cmp r0, #0x0 + beq _0201A61A + ldr r0, [sp, #0x1c8] + add r0, r0, #0x2 + str r0, [sp, #0x1c8] + b _0201A620 +_0201A61A: + ldr r0, [sp, #0x1c8] + add r0, r0, #0x1 + str r0, [sp, #0x1c8] +_0201A620: + ldr r0, [sp, #0x1cc] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1cc] + cmp r0, #0x8 + blt _0201A590 + ldr r0, [sp, #0x1ec] + str r0, [sp, #0x2f8] + add r0, #0x40 + str r0, [sp, #0x2f8] + ldr r0, [sp, #0x48] + str r0, [sp, #0x1c0] + mov r0, #0x0 + str r0, [sp, #0x1c4] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x188] + add r0, #0x8 + str r0, [sp, #0x188] +_0201A644: + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x1c4] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1bc] + ldr r5, [sp, #0x188] + cmp r7, #0x0 + ble _0201A6CA + ble _0201A6CA + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x1c0] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x180] + ldr r0, [sp, #0x1c0] + str r2, [sp, #0x184] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x17c] + str r0, [sp, #0x178] +_0201A692: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A748 ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x184] + add r2, r3, r0 + ldr r0, [sp, #0x2f8] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A6C0 + ldr r0, [sp, #0x180] + strb r1, [r2, r0] + ldr r0, [sp, #0x1bc] + cmp r0, #0x0 + beq _0201A6C0 + ldr r0, [sp, #0x17c] + add r2, r3, r0 + ldr r0, [sp, #0x178] + strb r1, [r0, r2] +_0201A6C0: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A692 +_0201A6CA: + ldr r0, [sp, #0x1bc] + cmp r0, #0x0 + beq _0201A6D8 + ldr r0, [sp, #0x1c0] + add r0, r0, #0x2 + str r0, [sp, #0x1c0] + b _0201A6DE +_0201A6D8: + ldr r0, [sp, #0x1c0] + add r0, r0, #0x1 + str r0, [sp, #0x1c0] +_0201A6DE: + ldr r0, [sp, #0x2f8] + add r0, #0x8 + str r0, [sp, #0x2f8] + ldr r0, [sp, #0x1c4] + add r0, r0, #0x1 + str r0, [sp, #0x1c4] + cmp r0, #0x8 + blt _0201A644 + ldr r0, [sp, #0x48] + ldr r7, [sp, #0x1ec] + add r0, #0x8 + add r7, #0x80 + str r0, [sp, #0x48] + str r0, [sp, #0x1b8] + mov r0, #0x0 + mov r2, #0x1 +_0201A6FE: + ldr r1, [sp, #0x330] + asr r1, r0 + tst r1, r2 + beq _0201A70C + ldr r1, [sp, #0x1b8] + add r1, r1, #0x1 + str r1, [sp, #0x1b8] +_0201A70C: + add r0, r0, #0x1 + cmp r0, #0x8 + blt _0201A6FE + ldr r0, [sp, #0x330] + asr r0, r0, #0x8 + str r0, [sp, #0x44] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x19c] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A7CE +_0201A72A: + ldr r1, [sp, #0x19c] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x28] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2f4] + ldr r0, [sp, #0x1b8] + mov r3, #0x38 + lsl r1, r0, #0x3 + ldr r0, _0201A748 ; =0x00007FC0 + b _0201A74C + nop +_0201A748: .word 0x00007FC0 +_0201A74C: + ldr r5, [sp, #0x5c] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x194] + ldr r0, [sp, #0x1b8] + str r2, [sp, #0x198] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A8C4 ; =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + ldr r6, [sp, #0x24] + mov r4, #0x0 + str r2, [sp, #0x190] + str r0, [sp, #0x18c] +_0201A774: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A8C4 ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x198] + ldrb r1, [r7, r4] + add r2, r3, r0 + cmp r1, #0x0 + beq _0201A7A0 + ldr r0, [sp, #0x194] + strb r1, [r2, r0] + ldr r0, [sp, #0x2f4] + cmp r0, #0x0 + beq _0201A7A0 + ldr r0, [sp, #0x190] + add r2, r3, r0 + ldr r0, [sp, #0x18c] + strb r1, [r0, r2] +_0201A7A0: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, #0x8 + blt _0201A774 + ldr r0, [sp, #0x2f4] + cmp r0, #0x0 + beq _0201A7B8 + ldr r0, [sp, #0x1b8] + add r0, r0, #0x2 + str r0, [sp, #0x1b8] + b _0201A7BE +_0201A7B8: + ldr r0, [sp, #0x1b8] + add r0, r0, #0x1 + str r0, [sp, #0x1b8] +_0201A7BE: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x4] + add r0, r0, #0x1 + sub r1, #0x8 + add r7, #0x8 + str r0, [sp, #0x10] + cmp r0, r1 + blt _0201A72A +_0201A7CE: + ldr r0, [sp, #0x1ec] + mov r2, #0x0 + str r0, [sp, #0x2f0] + add r0, #0xc0 + str r0, [sp, #0x2f0] + mov r1, #0x1 +_0201A7DA: + ldr r0, [sp, #0x330] + asr r0, r2 + tst r0, r1 + beq _0201A7E8 + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A7E8: + add r2, r2, #0x1 + cmp r2, #0x8 + blt _0201A7DA + ldr r0, [sp, #0x44] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1b0] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x4] + sub r0, #0x8 + cmp r0, #0x0 + ble _0201A8B6 + ldr r0, [sp, #0x5c] + add r0, #0x8 + str r0, [sp, #0x5c] +_0201A808: + ldr r1, [sp, #0x1b0] + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x8] + asr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r7, #0x8 + mov r4, #0x0 + str r0, [sp, #0x1b4] + ldr r5, [sp, #0x5c] + cmp r7, #0x0 + ble _0201A88E + ble _0201A88E + add r0, r5, #0x0 + lsl r6, r0, #0x3 + ldr r0, [sp, #0x48] + ldr r2, [sp, #0x28] + lsl r1, r0, #0x3 + ldr r0, _0201A8C4 ; =0x00007FC0 + mov r3, #0x38 + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r0, [sp, #0x1a8] + ldr r0, [sp, #0x48] + str r2, [sp, #0x1ac] + add r0, r0, #0x1 + lsl r1, r0, #0x3 + ldr r0, _0201A8C4 ; =0x00007FC0 + ldr r2, [sp, #0x28] + and r0, r1 + mul r2, r0 + add r0, r1, #0x0 + and r0, r3 + str r2, [sp, #0x1a4] + str r0, [sp, #0x1a0] +_0201A856: + mov r0, #0x7 + add r1, r5, #0x0 + and r1, r0 + ldr r0, [sp, #0x278] + add r1, r0, r1 + ldr r0, _0201A8C4 ; =0x00007FC0 + and r0, r6 + add r3, r1, r0 + ldr r0, [sp, #0x1ac] + add r2, r3, r0 + ldr r0, [sp, #0x2f0] + ldrb r1, [r0, r4] + cmp r1, #0x0 + beq _0201A884 + ldr r0, [sp, #0x1a8] + strb r1, [r2, r0] + ldr r0, [sp, #0x1b4] + cmp r0, #0x0 + beq _0201A884 + ldr r0, [sp, #0x1a4] + add r2, r3, r0 + ldr r0, [sp, #0x1a0] + strb r1, [r0, r2] +_0201A884: + add r4, r4, #0x1 + add r6, #0x8 + add r5, r5, #0x1 + cmp r4, r7 + blt _0201A856 +_0201A88E: + ldr r0, [sp, #0x1b4] + cmp r0, #0x0 + beq _0201A89C + ldr r0, [sp, #0x48] + add r0, r0, #0x2 + str r0, [sp, #0x48] + b _0201A8A2 +_0201A89C: + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] +_0201A8A2: + ldr r0, [sp, #0x2f0] + ldr r1, [sp, #0x4] + add r0, #0x8 + str r0, [sp, #0x2f0] + ldr r0, [sp, #0xc] + sub r1, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, r1 + blt _0201A808 +_0201A8B6: + ldr r0, [sp, #0x1ec] + bl FUN_02016A18 + + thumb_func_start FUN_0201A8BC +FUN_0201A8BC: ; 0x0201A8BC + add sp, #0x1fc + add sp, #0x118 + pop {r4-r7, pc} + nop +_0201A8C4: .word 0x00007FC0 + + thumb_func_start FUN_0201A8C8 +FUN_0201A8C8: ; 0x0201A8C8 + push {r4-r6, lr} + ldrb r6, [r0, #0x4] + mov r5, #0x2c + ldr r4, [r0, #0x0] + mul r5, r6 + add r4, r4, r5 + ldrb r4, [r4, #0x1e] + cmp r4, #0x0 + bne _0201A8E0 + bl FUN_0201A8E8 + pop {r4-r6, pc} +_0201A8E0: + bl FUN_0201A9D4 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0201A8E8 +FUN_0201A8E8: ; 0x0201A8E8 + push {r3-r7, lr} + sub sp, #0x10 + add r6, r3, #0x0 + add r4, r0, #0x0 + add r0, r1, #0x0 + lsl r3, r6, #0x18 + lsl r1, r6, #0x10 + str r2, [sp, #0x0] + orr r1, r3 + lsl r5, r6, #0x8 + orr r1, r5 + orr r1, r6 + str r1, [sp, #0x4] + ldrb r1, [r4, #0x7] + ldrb r3, [r4, #0x8] + ldr r2, [r4, #0xc] + str r1, [sp, #0x8] + mul r1, r3 + lsl r1, r1, #0x5 + str r1, [sp, #0xc] + cmp r0, #0x3 + bhi _0201A9CE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0201A920: ; jump table (using 16-bit offset) + .short _0201A928 - _0201A920 - 2; case 0 + .short _0201A976 - _0201A920 - 2; case 1 + .short _0201A9CE - _0201A920 - 2; case 2 + .short _0201A9CE - _0201A920 - 2; case 3 +_0201A928: + add r0, r1, #0x0 + mov r7, #0x0 + cmp r0, #0x0 + ble _0201A9CE + mov r0, #0x7 + mov lr, r0 +_0201A934: + ldr r3, [sp, #0x0] + mov r4, #0x0 + add r5, r7, #0x0 +_0201A93A: + mov r0, #0x7 + add r6, r3, #0x0 + and r6, r0 + add r1, r3, #0x0 + mov r0, lr + bic r1, r0 + ldr r0, [sp, #0x8] + mul r1, r0 + add r0, r6, #0x0 + orr r0, r1 + lsl r0, r0, #0x2 + add r1, r7, r0 + ldr r0, [sp, #0xc] + cmp r1, r0 + bge _0201A95C + ldr r0, [r2, r1] + b _0201A95E +_0201A95C: + ldr r0, [sp, #0x4] +_0201A95E: + add r4, r4, #0x1 + str r0, [r2, r5] + add r3, r3, #0x1 + add r5, r5, #0x4 + cmp r4, #0x8 + blt _0201A93A + ldr r0, [sp, #0xc] + add r7, #0x20 + cmp r7, r0 + blt _0201A934 + add sp, #0x10 + pop {r3-r7, pc} +_0201A976: + add r0, r1, #0x0 + sub r0, r0, #0x4 + add r2, r2, r0 + add r0, r1, #0x0 + mov r7, #0x0 + cmp r0, #0x0 + ble _0201A9CE + mov r0, #0x7 + mov r12, r0 +_0201A988: + ldr r4, [sp, #0x0] + mov r5, #0x0 + add r3, r7, #0x0 +_0201A98E: + mov r0, #0x7 + add r6, r4, #0x0 + and r6, r0 + add r1, r4, #0x0 + mov r0, r12 + bic r1, r0 + ldr r0, [sp, #0x8] + mul r1, r0 + add r0, r6, #0x0 + orr r0, r1 + lsl r0, r0, #0x2 + add r1, r7, r0 + ldr r0, [sp, #0xc] + cmp r1, r0 + bge _0201A9B6 + sub r0, r2, r1 + ldr r1, [r0, #0x0] + sub r0, r2, r3 + str r1, [r0, #0x0] + b _0201A9BC +_0201A9B6: + ldr r0, [sp, #0x4] + sub r1, r2, r3 + str r0, [r1, #0x0] +_0201A9BC: + add r5, r5, #0x1 + add r4, r4, #0x1 + add r3, r3, #0x4 + cmp r5, #0x8 + blt _0201A98E + ldr r0, [sp, #0xc] + add r7, #0x20 + cmp r7, r0 + blt _0201A988 +_0201A9CE: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201A9D4 +FUN_0201A9D4: ; 0x0201A9D4 + push {r3-r7, lr} + sub sp, #0x20 + add r6, r3, #0x0 + add r4, r0, #0x0 + str r2, [sp, #0x0] + lsl r2, r6, #0x18 + lsl r0, r6, #0x10 + orr r0, r2 + ldrb r2, [r4, #0x7] + ldr r3, [r4, #0xc] + lsl r5, r6, #0x8 + orr r0, r5 + ldrb r4, [r4, #0x8] + str r2, [sp, #0x10] + orr r0, r6 + mul r2, r4 + lsl r2, r2, #0x6 + str r2, [sp, #0x1c] + cmp r1, #0x3 + bls _0201A9FE + b _0201AB04 +_0201A9FE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0201AA0A: ; jump table (using 16-bit offset) + .short _0201AA12 - _0201AA0A - 2; case 0 + .short _0201AA80 - _0201AA0A - 2; case 1 + .short _0201AB04 - _0201AA0A - 2; case 2 + .short _0201AB04 - _0201AA0A - 2; case 3 +_0201AA12: + mov r1, #0x0 + str r1, [sp, #0xc] + add r1, r2, #0x0 + cmp r1, #0x0 + ble _0201AB04 + add r1, r1, #0x4 + str r1, [sp, #0x14] + mov r1, #0x7 + mov lr, r1 +_0201AA24: + ldr r4, [sp, #0x0] + ldr r5, [sp, #0xc] + mov r7, #0x0 +_0201AA2A: + mov r1, #0x7 + add r6, r4, #0x0 + and r6, r1 + add r2, r4, #0x0 + mov r1, lr + bic r2, r1 + ldr r1, [sp, #0x10] + mul r2, r1 + add r1, r6, #0x0 + orr r1, r2 + lsl r2, r1, #0x3 + ldr r1, [sp, #0xc] + add r1, r1, r2 + ldr r2, [sp, #0x1c] + cmp r1, r2 + bge _0201AA50 + ldr r2, [r3, r1] + str r2, [r3, r5] + b _0201AA52 +_0201AA50: + str r0, [r3, r5] +_0201AA52: + add r2, r1, #0x4 + ldr r1, [sp, #0x14] + cmp r2, r1 + bge _0201AA62 + ldr r2, [r3, r2] + add r1, r5, #0x4 + str r2, [r3, r1] + b _0201AA66 +_0201AA62: + add r1, r5, #0x4 + str r0, [r3, r1] +_0201AA66: + add r7, r7, #0x1 + add r4, r4, #0x1 + add r5, #0x8 + cmp r7, #0x8 + blt _0201AA2A + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x1c] + add r2, #0x40 + str r2, [sp, #0xc] + cmp r2, r1 + blt _0201AA24 + add sp, #0x20 + pop {r3-r7, pc} +_0201AA80: + add r1, r2, #0x0 + sub r1, #0x8 + add r3, r3, r1 + mov r1, #0x0 + str r1, [sp, #0x8] + add r1, r2, #0x0 + cmp r1, #0x0 + ble _0201AB04 +_0201AA90: + mov r1, #0x0 + str r1, [sp, #0x4] + ldr r1, [sp, #0x1c] + ldr r5, [sp, #0x0] + sub r1, r1, #0x4 + str r1, [sp, #0x18] + mov r1, #0x7 + ldr r4, [sp, #0x8] + mov r12, r1 +_0201AAA2: + mov r1, #0x7 + add r6, r5, #0x0 + and r6, r1 + add r2, r5, #0x0 + mov r1, r12 + bic r2, r1 + ldr r1, [sp, #0x10] + mul r2, r1 + add r1, r6, #0x0 + orr r1, r2 + lsl r2, r1, #0x3 + ldr r1, [sp, #0x8] + add r6, r1, r2 + ldr r1, [sp, #0x1c] + cmp r6, r1 + bge _0201AACC + sub r1, r3, r6 + ldr r2, [r1, #0x0] + sub r1, r3, r4 + str r2, [r1, #0x0] + b _0201AAD0 +_0201AACC: + sub r1, r3, r4 + str r0, [r1, #0x0] +_0201AAD0: + ldr r1, [sp, #0x18] + sub r2, r6, #0x4 + cmp r2, r1 + bge _0201AAE4 + sub r1, r3, r2 + sub r2, r4, #0x4 + ldr r1, [r1, #0x0] + sub r2, r3, r2 + str r1, [r2, #0x0] + b _0201AAEA +_0201AAE4: + sub r1, r4, #0x4 + sub r1, r3, r1 + str r0, [r1, #0x0] +_0201AAEA: + ldr r1, [sp, #0x4] + add r5, r5, #0x1 + add r1, r1, #0x1 + add r4, #0x8 + str r1, [sp, #0x4] + cmp r1, #0x8 + blt _0201AAA2 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x1c] + add r2, #0x40 + str r2, [sp, #0x8] + cmp r2, r1 + blt _0201AA90 +_0201AB04: + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_0201AB08 +FUN_0201AB08: ; 0x0201AB08 + ldrb r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0201AB0C +FUN_0201AB0C: ; 0x0201AB0C + ldrb r0, [r0, #0x7] + bx lr + + thumb_func_start FUN_0201AB10 +FUN_0201AB10: ; 0x0201AB10 + ldrb r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_0201AB14 +FUN_0201AB14: ; 0x0201AB14 + ldrb r0, [r0, #0x5] + bx lr + + thumb_func_start FUN_0201AB18 +FUN_0201AB18: ; 0x0201AB18 + ldrb r0, [r0, #0x6] + bx lr + + thumb_func_start FUN_0201AB1C +FUN_0201AB1C: ; 0x0201AB1C + strb r1, [r0, #0x5] + bx lr + + thumb_func_start FUN_0201AB20 +FUN_0201AB20: ; 0x0201AB20 + strb r1, [r0, #0x6] + bx lr + + thumb_func_start FUN_0201AB24 +FUN_0201AB24: ; 0x0201AB24 + strb r1, [r0, #0x9] + bx lr + + thumb_func_start FUN_0201AB28 +FUN_0201AB28: ; 0x0201AB28 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + bl FUN_020161A4 + add r1, sp, #0x0 + str r0, [r4, #0x0] + blx FUN_020B0030 + ldr r0, [sp, #0x0] + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_0201AB44 +FUN_0201AB44: ; 0x0201AB44 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + bl FUN_020161A4 + add r1, sp, #0x0 + str r0, [r4, #0x0] + blx FUN_020B0138 + ldr r0, [sp, #0x0] + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_0201AB60 +FUN_0201AB60: ; 0x0201AB60 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201AC78 + add r0, r4, #0x0 + bl FUN_0201AB78 + mov r0, #0x0 + strh r0, [r4, #0x4] + strh r0, [r4, #0x6] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201AB78 +FUN_0201AB78: ; 0x0201AB78 + push {r4, lr} + add r4, r0, #0x0 + ldrh r1, [r4, #0x6] + mov r0, #0x1 + tst r0, r1 + beq _0201AB92 + ldr r2, [r4, #0x10] + ldr r1, [r4, #0x8] + ldr r3, [r4, #0xc] + mov r0, #0x0 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201AB92: + ldrh r1, [r4, #0x6] + mov r0, #0x2 + tst r0, r1 + beq _0201ABA8 + ldr r2, [r4, #0x3c] + ldr r1, [r4, #0x34] + ldr r3, [r4, #0x38] + mov r0, #0x1 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201ABA8: + ldrh r1, [r4, #0x6] + mov r0, #0x4 + tst r0, r1 + beq _0201ABBE + ldr r2, [r4, #0x68] + ldr r1, [r4, #0x60] + ldr r3, [r4, #0x64] + mov r0, #0x2 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201ABBE: + ldrh r1, [r4, #0x6] + mov r0, #0x8 + tst r0, r1 + beq _0201ABE0 + add r2, r4, #0x0 + add r1, r4, #0x0 + add r2, #0x94 + add r3, r4, #0x0 + add r1, #0x8c + ldr r2, [r2, #0x0] + add r3, #0x90 + ldr r1, [r1, #0x0] + ldr r3, [r3, #0x0] + mov r0, #0x3 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201ABE0: + ldrh r1, [r4, #0x6] + mov r0, #0x10 + tst r0, r1 + beq _0201AC02 + add r2, r4, #0x0 + add r1, r4, #0x0 + add r2, #0xc0 + add r3, r4, #0x0 + add r1, #0xb8 + ldr r2, [r2, #0x0] + add r3, #0xbc + ldr r1, [r1, #0x0] + ldr r3, [r3, #0x0] + mov r0, #0x4 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201AC02: + ldrh r1, [r4, #0x6] + mov r0, #0x20 + tst r0, r1 + beq _0201AC24 + add r2, r4, #0x0 + add r1, r4, #0x0 + add r2, #0xec + add r3, r4, #0x0 + add r1, #0xe4 + ldr r2, [r2, #0x0] + add r3, #0xe8 + ldr r1, [r1, #0x0] + ldr r3, [r3, #0x0] + mov r0, #0x5 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201AC24: + ldrh r0, [r4, #0x6] + mov r3, #0x40 + tst r0, r3 + beq _0201AC44 + add r2, r3, #0x0 + add r1, r3, #0x0 + add r2, #0xd8 + add r1, #0xd0 + ldr r2, [r4, r2] + add r3, #0xd4 + ldr r1, [r4, r1] + ldr r3, [r4, r3] + mov r0, #0x6 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201AC44: + ldrh r0, [r4, #0x6] + mov r3, #0x80 + tst r0, r3 + beq _0201AC64 + add r2, r3, #0x0 + add r1, r3, #0x0 + add r2, #0xc4 + add r1, #0xbc + ldr r2, [r4, r2] + add r3, #0xc0 + ldr r1, [r4, r1] + ldr r3, [r4, r3] + mov r0, #0x7 + lsl r2, r2, #0x1 + bl FUN_02017D68 +_0201AC64: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201AC68 +FUN_0201AC68: ; 0x0201AC68 + ldrh r3, [r0, #0x6] + mov r2, #0x1 + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + strh r1, [r0, #0x6] + bx lr + .balign 4 + + thumb_func_start FUN_0201AC78 +FUN_0201AC78: ; 0x0201AC78 + push {r4, lr} + sub sp, #0x48 + add r4, r0, #0x0 + ldrh r1, [r4, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201AC9E + ldr r1, [r4, #0x14] + ldr r0, _0201AEB0 ; =0x000001FF + add r2, r1, #0x0 + ldr r1, [r4, #0x18] + and r2, r0 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _0201AEB4 ; =0x04000010 + str r1, [r0, #0x0] +_0201AC9E: + ldrh r1, [r4, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201ACBE + ldr r1, [r4, #0x40] + ldr r0, _0201AEB0 ; =0x000001FF + add r2, r1, #0x0 + ldr r1, [r4, #0x44] + and r2, r0 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _0201AEB8 ; =0x04000014 + str r1, [r0, #0x0] +_0201ACBE: + ldrh r1, [r4, #0x4] + mov r0, #0x4 + tst r0, r1 + beq _0201AD1E + add r0, r4, #0x0 + add r0, #0x74 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201ACEA + ldr r1, [r4, #0x6c] + ldr r0, _0201AEB0 ; =0x000001FF + add r2, r1, #0x0 + ldr r1, [r4, #0x70] + and r2, r0 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _0201AEBC ; =0x04000018 + str r1, [r0, #0x0] + b _0201AD1E +_0201ACEA: + mov r0, #0x2 + str r0, [sp, #0x0] + add r1, r4, #0x0 + add r1, #0x78 + add r3, r4, #0x0 + add r3, #0x80 + ldrh r1, [r1, #0x0] + ldr r2, [r4, #0x7c] + ldr r3, [r3, #0x0] + add r0, sp, #0x38 + bl FUN_0201BB74 + ldr r0, [r4, #0x6c] + add r2, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x70] + add r3, r4, #0x0 + str r0, [sp, #0x4] + add r2, #0x84 + add r3, #0x88 + ldr r0, _0201AEC0 ; =0x04000020 + ldr r2, [r2, #0x0] + ldr r3, [r3, #0x0] + add r1, sp, #0x38 + blx G2x_SetBGyAffine_ +_0201AD1E: + ldrh r1, [r4, #0x4] + mov r0, #0x8 + tst r0, r1 + beq _0201AD8E + add r0, r4, #0x0 + add r0, #0xa0 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201AD4E + add r0, r4, #0x0 + add r2, r4, #0x0 + add r0, #0x98 + add r2, #0x9c + ldr r2, [r2, #0x0] + ldr r0, [r0, #0x0] + ldr r1, _0201AEB0 ; =0x000001FF + lsl r2, r2, #0x10 + and r0, r1 + lsl r1, r1, #0x10 + and r1, r2 + orr r1, r0 + ldr r0, _0201AEC4 ; =0x0400001C + str r1, [r0, #0x0] + b _0201AD8E +_0201AD4E: + mov r0, #0x2 + add r1, r4, #0x0 + str r0, [sp, #0x0] + add r1, #0xa4 + add r2, r4, #0x0 + add r3, r4, #0x0 + add r2, #0xa8 + add r3, #0xac + ldrh r1, [r1, #0x0] + ldr r2, [r2, #0x0] + ldr r3, [r3, #0x0] + add r0, sp, #0x28 + bl FUN_0201BB74 + add r0, r4, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + add r2, r4, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r0, #0x9c + ldr r0, [r0, #0x0] + add r3, r4, #0x0 + str r0, [sp, #0x4] + add r2, #0xb0 + add r3, #0xb4 + ldr r0, _0201AEC8 ; =0x04000030 + ldr r2, [r2, #0x0] + ldr r3, [r3, #0x0] + add r1, sp, #0x28 + blx G2x_SetBGyAffine_ +_0201AD8E: + ldrh r1, [r4, #0x4] + mov r0, #0x10 + tst r0, r1 + beq _0201ADB2 + add r0, r4, #0x0 + add r2, r4, #0x0 + add r0, #0xc4 + add r2, #0xc8 + ldr r2, [r2, #0x0] + ldr r0, [r0, #0x0] + ldr r1, _0201AEB0 ; =0x000001FF + lsl r2, r2, #0x10 + and r0, r1 + lsl r1, r1, #0x10 + and r1, r2 + orr r1, r0 + ldr r0, _0201AECC ; =0x04001010 + str r1, [r0, #0x0] +_0201ADB2: + ldrh r1, [r4, #0x4] + mov r0, #0x20 + tst r0, r1 + beq _0201ADD6 + add r0, r4, #0x0 + add r2, r4, #0x0 + add r0, #0xf0 + add r2, #0xf4 + ldr r2, [r2, #0x0] + ldr r0, [r0, #0x0] + ldr r1, _0201AEB0 ; =0x000001FF + lsl r2, r2, #0x10 + and r0, r1 + lsl r1, r1, #0x10 + and r1, r2 + orr r1, r0 + ldr r0, _0201AED0 ; =0x04001014 + str r1, [r0, #0x0] +_0201ADD6: + ldrh r0, [r4, #0x4] + mov r3, #0x40 + tst r0, r3 + beq _0201AE3E + add r0, r3, #0x0 + add r0, #0xe4 + ldrb r0, [r4, r0] + cmp r0, #0x0 + bne _0201AE04 + ldr r1, _0201AEB0 ; =0x000001FF + add r3, #0xdc + add r2, r1, #0x0 + sub r2, #0xdf + ldr r0, [r4, r3] + ldr r2, [r4, r2] + and r0, r1 + lsl r2, r2, #0x10 + lsl r1, r1, #0x10 + and r1, r2 + orr r1, r0 + ldr r0, _0201AED4 ; =0x04001018 + str r1, [r0, #0x0] + b _0201AE3E +_0201AE04: + mov r0, #0x2 + add r1, r3, #0x0 + add r2, r3, #0x0 + str r0, [sp, #0x0] + add r1, #0xe8 + add r2, #0xec + add r3, #0xf0 + ldrh r1, [r4, r1] + ldr r2, [r4, r2] + ldr r3, [r4, r3] + add r0, sp, #0x18 + bl FUN_0201BB74 + mov r3, #0x47 + lsl r3, r3, #0x2 + ldr r0, [r4, r3] + add r2, r3, #0x0 + str r0, [sp, #0x0] + add r0, r3, #0x4 + ldr r0, [r4, r0] + add r2, #0x18 + str r0, [sp, #0x4] + add r3, #0x1c + ldr r0, _0201AED8 ; =0x04001020 + ldr r2, [r4, r2] + ldr r3, [r4, r3] + add r1, sp, #0x18 + blx G2x_SetBGyAffine_ +_0201AE3E: + ldrh r0, [r4, #0x4] + mov r3, #0x80 + tst r0, r3 + beq _0201AEAC + add r0, r3, #0x0 + add r0, #0xd0 + ldrb r0, [r4, r0] + cmp r0, #0x0 + bne _0201AE72 + add r3, #0xc8 + ldr r1, [r4, r3] + ldr r0, _0201AEB0 ; =0x000001FF + add r2, r1, #0x0 + add r1, r0, #0x0 + sub r1, #0xb3 + ldr r1, [r4, r1] + and r2, r0 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _0201AEDC ; =0x0400101C + add sp, #0x48 + str r1, [r0, #0x0] + pop {r4, pc} +_0201AE72: + mov r0, #0x2 + add r1, r3, #0x0 + add r2, r3, #0x0 + str r0, [sp, #0x0] + add r1, #0xd4 + add r2, #0xd8 + add r3, #0xdc + ldrh r1, [r4, r1] + ldr r2, [r4, r2] + ldr r3, [r4, r3] + add r0, sp, #0x8 + bl FUN_0201BB74 + mov r3, #0x52 + lsl r3, r3, #0x2 + ldr r0, [r4, r3] + add r2, r3, #0x0 + str r0, [sp, #0x0] + add r0, r3, #0x4 + ldr r0, [r4, r0] + add r2, #0x18 + str r0, [sp, #0x4] + add r3, #0x1c + ldr r0, _0201AEE0 ; =0x04001030 + ldr r2, [r4, r2] + ldr r3, [r4, r3] + add r1, sp, #0x8 + blx G2x_SetBGyAffine_ +_0201AEAC: + add sp, #0x48 + pop {r4, pc} + .balign 4 +_0201AEB0: .word 0x000001FF +_0201AEB4: .word 0x04000010 +_0201AEB8: .word 0x04000014 +_0201AEBC: .word 0x04000018 +_0201AEC0: .word 0x04000020 +_0201AEC4: .word 0x0400001C +_0201AEC8: .word 0x04000030 +_0201AECC: .word 0x04001010 +_0201AED0: .word 0x04001014 +_0201AED4: .word 0x04001018 +_0201AED8: .word 0x04001020 +_0201AEDC: .word 0x0400101C +_0201AEE0: .word 0x04001030 + + thumb_func_start FUN_0201AEE4 +FUN_0201AEE4: ; 0x0201AEE4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x0 + mov r0, #0x2c + add r1, #0x8 + mul r0, r4 + add r0, r1, r0 + add r1, r2, #0x0 + add r2, r3, #0x0 + bl FUN_02017B8C + mov r0, #0x1 + ldrh r1, [r5, #0x4] + lsl r0, r4 + orr r0, r1 + strh r0, [r5, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_0201AF08 +FUN_0201AF08: ; 0x0201AF08 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x0 + mov r0, #0x2c + add r1, #0x8 + mul r0, r4 + add r0, r1, r0 + add r1, r2, #0x0 + add r2, r3, #0x0 + bl FUN_0201AF2C + mov r0, #0x1 + ldrh r1, [r5, #0x4] + lsl r0, r4 + orr r0, r1 + strh r0, [r5, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_0201AF2C +FUN_0201AF2C: ; 0x0201AF2C + cmp r1, #0x0 + beq _0201AF3A + cmp r1, #0x1 + beq _0201AF3E + cmp r1, #0x2 + beq _0201AF46 + bx lr +_0201AF3A: + strh r2, [r0, #0x18] + bx lr +_0201AF3E: + ldrh r1, [r0, #0x18] + add r1, r1, r2 + strh r1, [r0, #0x18] + bx lr +_0201AF46: + ldrh r1, [r0, #0x18] + sub r1, r1, r2 + strh r1, [r0, #0x18] + bx lr + .balign 4 + + thumb_func_start FUN_0201AF50 +FUN_0201AF50: ; 0x0201AF50 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x0 + mov r0, #0x2c + add r1, #0x8 + mul r0, r4 + add r0, r1, r0 + add r1, r2, #0x0 + add r2, r3, #0x0 + bl FUN_0201AF74 + mov r0, #0x1 + ldrh r1, [r5, #0x4] + lsl r0, r4 + orr r0, r1 + strh r0, [r5, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_0201AF74 +FUN_0201AF74: ; 0x0201AF74 + sub r1, #0x9 + cmp r1, #0x5 + bhi _0201AFB8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0201AF86: ; jump table (using 16-bit offset) + .short _0201AF92 - _0201AF86 - 2; case 0 + .short _0201AF96 - _0201AF86 - 2; case 1 + .short _0201AF9E - _0201AF86 - 2; case 2 + .short _0201AFA6 - _0201AF86 - 2; case 3 + .short _0201AFAA - _0201AF86 - 2; case 4 + .short _0201AFB2 - _0201AF86 - 2; case 5 +_0201AF92: + str r2, [r0, #0x24] + bx lr +_0201AF96: + ldr r1, [r0, #0x24] + add r1, r1, r2 + str r1, [r0, #0x24] + bx lr +_0201AF9E: + ldr r1, [r0, #0x24] + sub r1, r1, r2 + str r1, [r0, #0x24] + bx lr +_0201AFA6: + str r2, [r0, #0x28] + bx lr +_0201AFAA: + ldr r1, [r0, #0x28] + add r1, r1, r2 + str r1, [r0, #0x28] + bx lr +_0201AFB2: + ldr r1, [r0, #0x28] + sub r1, r1, r2 + str r1, [r0, #0x28] +_0201AFB8: + bx lr + .balign 4 + + thumb_func_start FUN_0201AFBC +FUN_0201AFBC: ; 0x0201AFBC + push {r4-r7, lr} + sub sp, #0x1c + str r1, [sp, #0x0] + add r7, r0, #0x0 + str r2, [sp, #0x4] + ldr r0, [sp, #0x30] + str r3, [sp, #0x8] + str r0, [sp, #0x30] + ldr r0, [sp, #0x0] + add r4, r7, #0x0 + mov r1, #0x2c + add r5, r0, #0x0 + mul r5, r1 + add r4, #0x8 + ldr r0, [r4, r5] + cmp r0, #0x0 + bne _0201AFE4 + add sp, #0x1c + mov r0, #0x0 + pop {r4-r7, pc} +_0201AFE4: + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x8] + add r2, r7, r5 + lsl r0, r0, #0x15 + lsl r1, r1, #0x15 + ldrb r2, [r2, #0x1d] + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + bl FUN_02017FFC + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_020187B0 + str r0, [sp, #0x18] + ldr r1, [sp, #0x4] + mov r0, #0x7 + and r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x14] + ldr r1, [sp, #0x8] + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r7, r5 + str r0, [sp, #0x10] + ldrb r0, [r1, #0x1e] + cmp r0, #0x0 + bne _0201B096 + ldr r0, [r4, r5] + mov r1, #0x40 + str r0, [sp, #0xc] + ldr r0, [r7, #0x0] + bl FUN_020169D8 + add r4, r0, #0x0 + lsl r0, r6, #0x1 + ldr r1, [sp, #0xc] + mov r12, r0 + ldrh r0, [r1, r0] + mov r3, #0x0 + mov r6, #0xf + lsl r0, r0, #0x16 + lsr r1, r0, #0x11 + ldr r0, [sp, #0x18] + add r2, r0, r1 +_0201B042: + ldrb r5, [r2, r3] + lsl r0, r3, #0x1 + add r1, r4, r0 + and r5, r6 + strb r5, [r4, r0] + ldrb r0, [r2, r3] + asr r0, r0, #0x4 + strb r0, [r1, #0x1] + add r0, r3, #0x1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0x20 + blo _0201B042 + ldr r2, [sp, #0xc] + mov r1, r12 + ldrh r1, [r2, r1] + add r0, r7, #0x0 + asr r2, r1, #0xa + mov r1, #0x3 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r4, #0x0 + bl FUN_0201B118 + ldr r0, [sp, #0x10] + lsl r1, r0, #0x3 + ldr r0, [sp, #0x14] + add r0, r0, r1 + ldrb r5, [r4, r0] + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x30] + ldrh r2, [r0, #0x0] + mov r0, #0x1 + add r1, r0, #0x0 + lsl r1, r5 + tst r1, r2 + beq _0201B10C + add sp, #0x1c + pop {r4-r7, pc} +_0201B096: + ldrb r0, [r1, #0x1c] + cmp r0, #0x1 + beq _0201B0E0 + ldr r0, [r7, #0x0] + ldr r4, [r4, r5] + mov r1, #0x40 + bl FUN_020169D8 + lsl r6, r6, #0x1 + ldrh r1, [r4, r6] + add r5, r0, #0x0 + lsl r1, r1, #0x16 + lsr r2, r1, #0x10 + ldr r1, [sp, #0x18] + add r1, r1, r2 + mov r2, #0x40 + blx memcpy + ldrh r1, [r4, r6] + add r0, r7, #0x0 + asr r2, r1, #0xa + mov r1, #0x3 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r5, #0x0 + bl FUN_0201B118 + ldr r0, [sp, #0x10] + lsl r1, r0, #0x3 + ldr r0, [sp, #0x14] + add r0, r0, r1 + ldrb r4, [r5, r0] + add r0, r5, #0x0 + bl FUN_02016A18 + b _0201B0F4 +_0201B0E0: + ldr r1, [r4, r5] + ldr r0, [sp, #0x10] + ldrb r1, [r1, r6] + lsl r0, r0, #0x3 + lsl r2, r1, #0x6 + ldr r1, [sp, #0x14] + add r1, r1, r2 + add r1, r0, r1 + ldr r0, [sp, #0x18] + ldrb r4, [r0, r1] +_0201B0F4: + ldr r0, [sp, #0x30] + ldrh r2, [r0, #0x0] + lsl r0, r2, #0x18 + lsr r1, r0, #0x18 + ldr r0, _0201B114 ; =0x0000FFFF +_0201B0FE: + cmp r2, r0 + beq _0201B10C + cmp r4, r1 + bne _0201B0FE + add sp, #0x1c + mov r0, #0x1 + pop {r4-r7, pc} +_0201B10C: + mov r0, #0x0 + add sp, #0x1c + pop {r4-r7, pc} + nop +_0201B114: .word 0x0000FFFF + + thumb_func_start FUN_0201B118 +FUN_0201B118: ; 0x0201B118 + push {r3-r7, lr} + str r1, [sp, #0x0] + ldr r1, [sp, #0x0] + add r7, r2, #0x0 + cmp r1, #0x0 + beq _0201B1A4 + ldr r0, [r0, #0x0] + mov r1, #0x40 + bl FUN_020169D8 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + mov r1, #0x1 + tst r0, r1 + beq _0201B166 + mov r0, #0x0 + mov r5, #0x7 +_0201B13A: + lsl r3, r0, #0x3 + add r2, r7, r3 + mov r1, #0x0 + add r3, r4, r3 +_0201B142: + sub r6, r5, r1 + ldrb r6, [r2, r6] + strb r6, [r3, r1] + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x8 + blo _0201B142 + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x8 + blo _0201B13A + add r0, r7, #0x0 + add r1, r4, #0x0 + mov r2, #0x40 + blx memcpy +_0201B166: + ldr r0, [sp, #0x0] + mov r1, #0x2 + tst r0, r1 + beq _0201B19E + mov r5, #0x0 + mov r6, #0x7 +_0201B172: + lsl r0, r5, #0x3 + add r3, r4, r0 + sub r0, r6, r5 + lsl r0, r0, #0x3 + add r2, r7, r0 + mov r1, #0x8 +_0201B17E: + ldrb r0, [r2, #0x0] + add r2, r2, #0x1 + strb r0, [r3, #0x0] + add r3, r3, #0x1 + sub r1, r1, #0x1 + bne _0201B17E + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x8 + blo _0201B172 + add r0, r7, #0x0 + add r1, r4, #0x0 + mov r2, #0x40 + blx memcpy +_0201B19E: + add r0, r4, #0x0 + bl FUN_02016A18 +_0201B1A4: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201B1A8 +FUN_0201B1A8: ; 0x0201B1A8 + push {r3-r5, lr} + add r5, r3, #0x0 + add r4, r2, #0x0 + bl FUN_020161A4 + str r0, [r5, #0x0] + blx FUN_020BC0FC + cmp r0, #0x0 + beq _0201B1D2 + bl FUN_0201B254 + cmp r0, #0x0 + bne _0201B1D2 + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x8] + blx DC_FlushRange + ldr r0, [r5, #0x0] + blx FUN_020BB59C +_0201B1D2: + ldr r0, [r5, #0x0] + blx FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201B1E4 +FUN_0201B1E4: ; 0x0201B1E4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + blx FUN_020BC0FC + cmp r0, #0x0 + beq _0201B20A + bl FUN_0201B254 + cmp r0, #0x0 + bne _0201B20A + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x8] + blx DC_FlushRange + ldr r0, [r5, #0x0] + blx FUN_020BB59C +_0201B20A: + ldr r0, [r5, #0x0] + blx FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201B21C +FUN_0201B21C: ; 0x0201B21C + push {r3-r5, lr} + add r4, r3, #0x0 + add r5, r2, #0x0 + ldr r3, [sp, #0x10] + add r2, r4, #0x0 + bl FUN_0201B1A8 + ldr r1, [r4, #0x0] + add r0, r5, #0x0 + blx FUN_020B80B4 + pop {r3-r5, pc} + + thumb_func_start FUN_0201B234 +FUN_0201B234: ; 0x0201B234 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r2, #0x0 + bl FUN_0201B1E4 + cmp r4, #0x0 + bne _0201B24A + bl ErrorHandling +_0201B24A: + ldr r1, [r4, #0x0] + add r0, r5, #0x0 + blx FUN_020B80B4 + pop {r3-r5, pc} + + thumb_func_start FUN_0201B254 +FUN_0201B254: ; 0x0201B254 + ldrh r2, [r0, #0x10] + mov r1, #0x1 + tst r2, r1 + bne _0201B262 + ldrh r0, [r0, #0x20] + tst r0, r1 + beq _0201B266 +_0201B262: + mov r0, #0x1 + bx lr +_0201B266: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0201B26C +FUN_0201B26C: ; 0x0201B26C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + blx FUN_020B8474 + ldr r1, _0201B2A0 ; =0x021CEDD4 + add r0, r4, #0x0 + blx MI_Copy36B + ldr r1, _0201B2A4 ; =0x021CED98 + mov r0, #0xa4 + ldr r2, [r1, #0x7c] + bic r2, r0 + add r0, r6, #0x0 + str r2, [r1, #0x7c] + blx FUN_020B844C + blx FUN_020B849C + add r0, r5, #0x0 + blx FUN_020BAC98 + pop {r4-r6, pc} + nop +_0201B2A0: .word 0x021CEDD4 +_0201B2A4: .word 0x021CED98 + + thumb_func_start FUN_0201B2A8 +FUN_0201B2A8: ; 0x0201B2A8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + blx FUN_020B8474 + ldr r1, _0201B2E4 ; =0x021CEDD4 + add r0, r4, #0x0 + blx MI_Copy36B + ldr r1, _0201B2E8 ; =0x021CED98 + mov r0, #0xa4 + ldr r2, [r1, #0x7c] + bic r2, r0 + str r2, [r1, #0x7c] + add r0, r6, #0x0 + blx FUN_020B844C + blx FUN_020B849C + mov r1, #0x0 + ldr r0, [r5, #0x4] + add r2, r1, #0x0 + mov r3, #0x1 + blx FUN_020BAFB8 + blx FUN_020BB394 + pop {r4-r6, pc} + .balign 4 +_0201B2E4: .word 0x021CEDD4 +_0201B2E8: .word 0x021CED98 + + thumb_func_start FUN_0201B2EC +FUN_0201B2EC: ; 0x0201B2EC + push {r3, lr} + sub sp, #0x8 + mov r1, #0x4 + str r1, [sp, #0x0] + ldr r1, _0201B30C ; =FUN_0201B314 + mov r2, #0x2 + str r1, [sp, #0x4] + mov r1, #0x0 + add r3, r1, #0x0 + bl FUN_02022318 + ldr r1, _0201B310 ; =0x021C4D44 + str r0, [r1, #0x0] + add sp, #0x8 + pop {r3, pc} + nop +_0201B30C: .word FUN_0201B314 +_0201B310: .word 0x021C4D44 + + thumb_func_start FUN_0201B314 +FUN_0201B314: ; 0x0201B314 + push {r3, lr} + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldr r0, _0201B380 ; =0x04000008 + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strh r1, [r0, #0x0] + add r0, #0x58 + ldrh r2, [r0, #0x0] + ldr r1, _0201B384 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0, #0x0] + add r2, r1, #0x2 + ldrh r3, [r0, #0x0] + add r1, r1, #0x2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0, #0x0] + ldrh r3, [r0, #0x0] + ldr r2, _0201B388 ; =0x0000CFFB + and r3, r2 + strh r3, [r0, #0x0] + ldrh r3, [r0, #0x0] + sub r2, #0x1c + and r3, r1 + mov r1, #0x8 + orr r1, r3 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + and r1, r2 + strh r1, [r0, #0x0] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + blx G3X_SetFog + mov r0, #0x0 + ldr r2, _0201B38C ; =0x00007FFF + add r1, r0, #0x0 + mov r3, #0x3f + str r0, [sp, #0x0] + blx G3X_SetClearColor + ldr r1, _0201B390 ; =0xBFFF0000 + ldr r0, _0201B394 ; =0x04000580 + str r1, [r0, #0x0] + pop {r3, pc} + .balign 4 +_0201B380: .word 0x04000008 +_0201B384: .word 0xFFFFCFFD +_0201B388: .word 0x0000CFFB +_0201B38C: .word 0x00007FFF +_0201B390: .word 0xBFFF0000 +_0201B394: .word 0x04000580 + + thumb_func_start FUN_0201B398 +FUN_0201B398: ; 0x0201B398 + ldr r0, _0201B3A0 ; =0x021C4D44 + ldr r3, _0201B3A4 ; =FUN_020223BC + ldr r0, [r0, #0x0] + bx r3 + .balign 4 +_0201B3A0: .word 0x021C4D44 +_0201B3A4: .word FUN_020223BC + + thumb_func_start FUN_0201B3A8 +FUN_0201B3A8: ; 0x0201B3A8 + push {r4, lr} + add r4, r1, #0x0 + blx FUN_020BC13C + cmp r4, #0x0 + beq _0201B3BE + add r1, r4, #0x0 + blx FUN_020B7790 + mov r0, #0x1 + pop {r4, pc} +_0201B3BE: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201B3C4 +FUN_0201B3C4: ; 0x0201B3C4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bne _0201B3D2 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0201B3D2: + mov r1, #0x0 + str r1, [r5, #0x8] + mov r1, #0x1 + str r1, [sp, #0x8] + str r1, [sp, #0x4] + str r1, [sp, #0x0] + cmp r5, #0x0 + beq _0201B4D0 + blx FUN_020B7E1C + add r6, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7E10 + add r4, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7CE4 + str r0, [sp, #0xc] + cmp r6, #0x0 + beq _0201B412 + ldr r3, _0201B4D8 ; =0x021064B8 + mov r1, #0x0 + ldr r3, [r3, #0x0] + add r0, r6, #0x0 + add r2, r1, #0x0 + blx r3 + add r7, r0, #0x0 + bne _0201B414 + mov r0, #0x0 + str r0, [sp, #0x8] + b _0201B414 +_0201B412: + mov r7, #0x0 +_0201B414: + cmp r4, #0x0 + beq _0201B42E + ldr r3, _0201B4D8 ; =0x021064B8 + add r0, r4, #0x0 + ldr r3, [r3, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + add r6, r0, #0x0 + bne _0201B430 + mov r0, #0x0 + str r0, [sp, #0x4] + b _0201B430 +_0201B42E: + mov r6, #0x0 +_0201B430: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + beq _0201B450 + ldr r3, _0201B4DC ; =0x021064C0 + mov r1, #0x2 + ldrh r2, [r5, #0x20] + lsl r1, r1, #0xe + ldr r3, [r3, #0x0] + and r1, r2 + mov r2, #0x0 + blx r3 + add r4, r0, #0x0 + bne _0201B452 + mov r0, #0x0 + str r0, [sp, #0x0] + b _0201B452 +_0201B450: + mov r4, #0x0 +_0201B452: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _0201B46E + ldr r1, _0201B4E0 ; =0x021064BC + add r0, r7, #0x0 + ldr r1, [r1, #0x0] + blx r1 + cmp r0, #0x0 + beq _0201B468 + bl ErrorHandling +_0201B468: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0201B46E: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0201B48A + ldr r1, _0201B4E0 ; =0x021064BC + add r0, r6, #0x0 + ldr r1, [r1, #0x0] + blx r1 + cmp r0, #0x0 + beq _0201B484 + bl ErrorHandling +_0201B484: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0201B48A: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _0201B4A6 + ldr r1, _0201B4E4 ; =0x021064C4 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + blx r1 + cmp r0, #0x0 + beq _0201B4A0 + bl ErrorHandling +_0201B4A0: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0201B4A6: + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + blx FUN_020B7DFC + add r0, r5, #0x0 + add r1, r4, #0x0 + blx FUN_020B7CDC + ldr r1, [r5, #0x4] + add r0, r5, #0x0 + blx DC_FlushRange + add r0, r5, #0x0 + mov r1, #0x1 + blx FUN_020B7D28 + add r0, r5, #0x0 + mov r1, #0x1 + blx FUN_020B7C78 +_0201B4D0: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + nop +_0201B4D8: .word 0x021064B8 +_0201B4DC: .word 0x021064C0 +_0201B4E0: .word 0x021064BC +_0201B4E4: .word 0x021064C4 + + thumb_func_start FUN_0201B4E8 +FUN_0201B4E8: ; 0x0201B4E8 + str r0, [r1, #0x0] + add r0, r0, #0x4 + str r0, [r1, #0x8] + str r0, [r1, #0x4] + mov r0, #0x0 + str r0, [r1, #0xc] + str r0, [r1, #0x10] + str r0, [r1, #0x14] + bx lr + .balign 4 + + thumb_func_start FUN_0201B4FC +FUN_0201B4FC: ; 0x0201B4FC + push {r3-r7, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + ble _0201B52A + add r4, r7, #0x0 + add r6, r7, #0x0 +_0201B50C: + ldr r1, [r5, #0x24] + add r0, r5, #0x0 + add r1, r1, r4 + bl FUN_0201B4E8 + ldr r0, [r5, #0x24] + add r7, r7, #0x1 + add r1, r0, r4 + ldr r0, [r5, #0x20] + add r4, #0x1c + str r1, [r0, r6] + ldrh r0, [r5, #0x0] + add r6, r6, #0x4 + cmp r7, r0 + blt _0201B50C +_0201B52A: + mov r0, #0x0 + strh r0, [r5, #0x2] + pop {r3-r7, pc} + + thumb_func_start FUN_0201B530 +FUN_0201B530: ; 0x0201B530 + ldrh r3, [r0, #0x2] + ldrh r1, [r0, #0x0] + cmp r3, r1 + bne _0201B53C + mov r0, #0x0 + bx lr +_0201B53C: + ldr r2, [r0, #0x20] + lsl r1, r3, #0x2 + ldr r2, [r2, r1] + add r1, r3, #0x1 + strh r1, [r0, #0x2] + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0201B54C +FUN_0201B54C: ; 0x0201B54C + ldrh r2, [r0, #0x2] + cmp r2, #0x0 + bne _0201B556 + mov r0, #0x0 + bx lr +_0201B556: + str r0, [r1, #0x0] + add r2, r0, #0x4 + str r2, [r1, #0x8] + str r2, [r1, #0x4] + mov r2, #0x0 + str r2, [r1, #0xc] + str r2, [r1, #0x10] + str r2, [r1, #0x14] + ldrh r2, [r0, #0x2] + sub r2, r2, #0x1 + strh r2, [r0, #0x2] + ldr r2, [r0, #0x20] + ldrh r0, [r0, #0x2] + lsl r0, r0, #0x2 + str r1, [r2, r0] + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0201B578 +FUN_0201B578: ; 0x0201B578 + lsl r0, r0, #0x5 + add r0, #0x34 + bx lr + .balign 4 + + thumb_func_start FUN_0201B580 +FUN_0201B580: ; 0x0201B580 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bne _0201B58C + bl ErrorHandling +_0201B58C: + add r1, r4, #0x0 + add r1, #0x34 + lsl r0, r5, #0x2 + str r1, [r4, #0x20] + add r0, r1, r0 + str r0, [r4, #0x24] + strh r5, [r4, #0x0] + mov r0, #0x0 + strh r0, [r4, #0x2] + str r0, [r4, #0x28] + add r0, r4, #0x0 + bl FUN_0201B5AC + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201B5AC +FUN_0201B5AC: ; 0x0201B5AC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201B4FC + str r4, [r4, #0x4] + add r0, r4, #0x4 + str r0, [r4, #0xc] + str r0, [r4, #0x8] + mov r0, #0x0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0xc] + str r0, [r4, #0x2c] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201B5CC +FUN_0201B5CC: ; 0x0201B5CC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x28] + cmp r0, #0x0 + bne _0201B608 + ldr r1, [r5, #0xc] + add r4, r5, #0x4 + str r1, [r5, #0x2c] + cmp r1, r4 + beq _0201B604 + mov r6, #0x0 +_0201B5E2: + ldr r0, [r1, #0x8] + str r0, [r5, #0x30] + ldr r0, [r5, #0x2c] + ldr r1, [r0, #0x18] + cmp r1, #0x0 + bne _0201B5FA + ldr r2, [r0, #0x14] + cmp r2, #0x0 + beq _0201B5FC + ldr r1, [r0, #0x10] + blx r2 + b _0201B5FC +_0201B5FA: + str r6, [r0, #0x18] +_0201B5FC: + ldr r1, [r5, #0x30] + str r1, [r5, #0x2c] + cmp r1, r4 + bne _0201B5E2 +_0201B604: + mov r0, #0x0 + str r0, [r1, #0x14] +_0201B608: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0201B60C +FUN_0201B60C: ; 0x0201B60C + push {r3-r5, lr} + add r4, r0, #0x0 + mov r5, #0x1 + str r5, [r4, #0x28] + bl FUN_0201B620 + mov r1, #0x0 + str r1, [r4, #0x28] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201B620 +FUN_0201B620: ; 0x0201B620 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0201B530 + cmp r0, #0x0 + bne _0201B636 + mov r0, #0x0 + pop {r3-r7, pc} +_0201B636: + str r4, [r0, #0xc] + str r7, [r0, #0x10] + str r6, [r0, #0x14] + ldr r2, [r5, #0x2c] + ldr r1, [r2, #0x14] + cmp r1, #0x0 + beq _0201B656 + ldr r1, [r2, #0xc] + cmp r1, r4 + bhi _0201B650 + mov r1, #0x1 + str r1, [r0, #0x18] + b _0201B65A +_0201B650: + mov r1, #0x0 + str r1, [r0, #0x18] + b _0201B65A +_0201B656: + mov r1, #0x0 + str r1, [r0, #0x18] +_0201B65A: + ldr r3, [r5, #0xc] + add r2, r5, #0x4 + cmp r3, r2 + beq _0201B686 + ldr r4, [r0, #0xc] +_0201B664: + ldr r1, [r3, #0xc] + cmp r1, r4 + bls _0201B680 + ldr r1, [r3, #0x4] + str r1, [r0, #0x4] + str r3, [r0, #0x8] + ldr r1, [r3, #0x4] + str r0, [r1, #0x8] + str r0, [r3, #0x4] + ldr r1, [r5, #0x30] + cmp r3, r1 + bne _0201B69E + str r0, [r5, #0x30] + pop {r3-r7, pc} +_0201B680: + ldr r3, [r3, #0x8] + cmp r3, r2 + bne _0201B664 +_0201B686: + ldr r2, [r5, #0x30] + add r1, r5, #0x4 + cmp r2, r1 + bne _0201B690 + str r0, [r5, #0x30] +_0201B690: + ldr r1, [r5, #0x8] + str r1, [r0, #0x4] + add r1, r5, #0x4 + str r1, [r0, #0x8] + ldr r1, [r5, #0x8] + str r0, [r1, #0x8] + str r0, [r5, #0x8] +_0201B69E: + pop {r3-r7, pc} + + thumb_func_start FUN_0201B6A0 +FUN_0201B6A0: ; 0x0201B6A0 + add r1, r0, #0x0 + ldr r2, [r1, #0x0] + ldr r0, [r2, #0x30] + cmp r0, r1 + bne _0201B6AE + ldr r0, [r1, #0x8] + str r0, [r2, #0x30] +_0201B6AE: + ldr r2, [r1, #0x8] + ldr r0, [r1, #0x4] + ldr r3, _0201B6C0 ; =0x0201B54D + str r2, [r0, #0x8] + ldr r2, [r1, #0x4] + ldr r0, [r1, #0x8] + str r2, [r0, #0x4] + ldr r0, [r1, #0x0] + bx r3 + .balign 4 +_0201B6C0: .word 0x0201B54D + + thumb_func_start FUN_0201B6C4 +FUN_0201B6C4: ; 0x0201B6C4 + str r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_0201B6C8 +FUN_0201B6C8: ; 0x0201B6C8 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_0201B6CC +FUN_0201B6CC: ; 0x0201B6CC + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_0201B6D0 +FUN_0201B6D0: ; 0x0201B6D0 + push {r4-r7, lr} + sub sp, #0x34 + add r6, r1, #0x0 + add r4, r0, #0x0 + add r5, r2, #0x0 + ldmia r6!, {r0-r1} + add r2, sp, #0x1c + stmia r2!, {r0-r1} + ldr r0, [r6, #0x0] + add r4, #0x14 + str r0, [r2, #0x0] + mov r0, #0x20 + ldrsh r0, [r4, r0] + add r7, r3, #0x0 + mov r1, #0x1a + str r0, [sp, #0x0] + mov r0, #0x22 + ldrsh r0, [r4, r0] + mov r2, #0x1c + mov r3, #0x1e + str r0, [sp, #0x4] + add r0, sp, #0x28 + str r0, [sp, #0x8] + mov r0, #0x18 + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldrsh r3, [r4, r3] + bl FUN_0201B808 + add r0, sp, #0x1c + blx FUN_020B8474 + ldr r1, _0201B764 ; =0x021CEDD4 + add r0, r5, #0x0 + blx MI_Copy36B + ldr r1, _0201B768 ; =0x021CED98 + mov r0, #0xa4 + ldr r2, [r1, #0x7c] + bic r2, r0 + add r0, r7, #0x0 + str r2, [r1, #0x7c] + blx FUN_020B844C + blx FUN_020B849C + mov r1, #0x0 + mov r0, #0x11 + add r2, r1, #0x0 + blx FUN_020BB1C0 + ldr r0, [r4, #0x24] + add r1, sp, #0x10 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + mov r0, #0x1b + mov r2, #0x3 + blx FUN_020BB1C0 + add r0, sp, #0x28 + bl FUN_0201B82C + add r4, r0, #0x0 + mov r2, #0x1 + mov r0, #0x12 + add r1, sp, #0xc + str r2, [sp, #0xc] + blx FUN_020BB1C0 + add r0, r4, #0x0 + add sp, #0x34 + pop {r4-r7, pc} + .balign 4 +_0201B764: .word 0x021CEDD4 +_0201B768: .word 0x021CED98 + + thumb_func_start FUN_0201B76C +FUN_0201B76C: ; 0x0201B76C + push {r3-r5, lr} + sub sp, #0x28 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x2 + ldrsh r0, [r4, r0] + str r0, [sp, #0x0] + mov r0, #0x4 + ldrsh r0, [r4, r0] + str r0, [sp, #0x4] + add r0, sp, #0x1c + str r0, [sp, #0x8] + mov r0, #0x0 + ldrsh r3, [r4, r0] + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_0201B808 + add r0, r5, #0x0 + blx FUN_020B8474 + blx FUN_020B849C + mov r1, #0x0 + mov r0, #0x11 + add r2, r1, #0x0 + blx FUN_020BB1C0 + ldr r0, [r4, #0x10] + lsl r2, r0, #0xc + ldr r0, [r4, #0xc] + lsl r1, r0, #0xc + ldr r0, [r4, #0x8] + lsl r0, r0, #0xc + str r0, [sp, #0x10] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + mov r0, #0x1b + add r1, sp, #0x10 + mov r2, #0x3 + blx FUN_020BB1C0 + add r0, sp, #0x1c + bl FUN_0201B82C + add r4, r0, #0x0 + mov r2, #0x1 + mov r0, #0x12 + add r1, sp, #0xc + str r2, [sp, #0xc] + blx FUN_020BB1C0 + add r0, r4, #0x0 + add sp, #0x28 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201B7DC +FUN_0201B7DC: ; 0x0201B7DC + push {r4-r6, lr} + add r6, r3, #0x0 + add r4, r2, #0x0 + add r2, r6, #0x0 + add r5, r1, #0x0 + add r1, r6, #0x0 + add r2, #0x8 + bl FUN_0201B880 + add r2, r6, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x2 + add r2, #0xc + bl FUN_0201B880 + add r1, r6, #0x4 + add r6, #0x10 + add r0, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0201B880 + pop {r4-r6, pc} + + thumb_func_start FUN_0201B808 +FUN_0201B808: ; 0x0201B808 + push {r3-r4} + ldr r4, [sp, #0x10] + strh r0, [r4, #0x0] + strh r1, [r4, #0x2] + ldr r1, _0201B828 ; =0xFFFFFFF8 + strh r2, [r4, #0x4] + strh r3, [r4, #0x6] + add r1, sp + mov r0, #0x10 + ldrsh r0, [r1, r0] + strh r0, [r4, #0x8] + mov r0, #0x14 + ldrsh r0, [r1, r0] + strh r0, [r4, #0xa] + pop {r3-r4} + bx lr + .balign 4 +_0201B828: .word 0xFFFFFFF8 + + thumb_func_start FUN_0201B82C +FUN_0201B82C: ; 0x0201B82C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r0, _0201B87C ; =0x000030C1 + mov r2, #0x1 + str r0, [sp, #0x4] + mov r0, #0x29 + add r1, sp, #0x4 + str r2, [sp, #0x8] + blx FUN_020BB1C0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x40 + add r1, sp, #0x0 + mov r2, #0x1 + blx FUN_020BB1C0 + mov r1, #0x0 + mov r0, #0x41 + add r2, r1, #0x0 + blx FUN_020BB1C0 + mov r0, #0x70 + add r1, r4, #0x0 + mov r2, #0x3 + blx FUN_020BB1C0 + blx FUN_020BB394 + add r4, sp, #0x8 +_0201B86A: + add r0, r4, #0x0 + blx G3X_GetBoxTestResult + cmp r0, #0x0 + bne _0201B86A + ldr r0, [sp, #0x8] + add sp, #0xc + pop {r3-r4, pc} + nop +_0201B87C: .word 0x000030C1 + + thumb_func_start FUN_0201B880 +FUN_0201B880: ; 0x0201B880 + push {r3-r4} + ldr r4, _0201B8B4 ; =0x00007FFF + mov r3, #0x0 + cmp r0, r4 + blo _0201B896 +_0201B88A: + add r3, r3, #0x1 + lsl r3, r3, #0x18 + lsr r0, r0, #0x1 + lsr r3, r3, #0x18 + cmp r0, r4 + bhs _0201B88A +_0201B896: + strh r0, [r1, #0x0] + mov r0, #0x1 + mov r1, #0x0 + str r0, [r2, #0x0] + cmp r3, #0x0 + ble _0201B8AE +_0201B8A2: + ldr r0, [r2, #0x0] + add r1, r1, #0x1 + lsl r0, r0, #0x1 + str r0, [r2, #0x0] + cmp r1, r3 + blt _0201B8A2 +_0201B8AE: + pop {r3-r4} + bx lr + nop +_0201B8B4: .word 0x00007FFF + + thumb_func_start FUN_0201B8B8 +FUN_0201B8B8: ; 0x0201B8B8 + push {r4, lr} + add r4, r0, #0x0 + ldrh r1, [r4, #0x0] + ldr r0, _0201B8DC ; =0x0000FFFE + cmp r1, r0 + beq _0201B8C8 + bl ErrorHandling +_0201B8C8: + ldrh r1, [r4, #0x0] + ldr r0, _0201B8DC ; =0x0000FFFE + cmp r1, r0 + bne _0201B8D8 + ldrh r0, [r4, #0x4] + add r1, r4, #0x6 + lsl r0, r0, #0x1 + add r4, r1, r0 +_0201B8D8: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_0201B8DC: .word 0x0000FFFE + + thumb_func_start FUN_0201B8E0 +FUN_0201B8E0: ; 0x0201B8E0 + push {r4, lr} + add r4, r0, #0x0 + ldrh r1, [r4, #0x0] + ldr r0, _0201B8F4 ; =0x0000FFFE + cmp r1, r0 + beq _0201B8F0 + bl ErrorHandling +_0201B8F0: + ldrh r0, [r4, #0x2] + pop {r4, pc} + .balign 4 +_0201B8F4: .word 0x0000FFFE + + thumb_func_start FUN_0201B8F8 +FUN_0201B8F8: ; 0x0201B8F8 + push {r3, lr} + bl FUN_0201B8E0 + mov r1, #0xff + lsl r1, r1, #0x8 + and r1, r0 + mov r0, #0x1 + lsl r0, r0, #0x8 + cmp r1, r0 + bne _0201B910 + mov r0, #0x1 + pop {r3, pc} +_0201B910: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0201B914 +FUN_0201B914: ; 0x0201B914 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldrh r1, [r5, #0x0] + ldr r0, _0201B938 ; =0x0000FFFE + cmp r1, r0 + beq _0201B926 + bl ErrorHandling +_0201B926: + ldrh r0, [r5, #0x4] + cmp r4, r0 + blo _0201B930 + bl ErrorHandling +_0201B930: + lsl r0, r4, #0x1 + add r0, r5, r0 + ldrh r0, [r0, #0x6] + pop {r3-r5, pc} + .balign 4 +_0201B938: .word 0x0000FFFE + + thumb_func_start FUN_0201B93C +FUN_0201B93C: ; 0x0201B93C + mov r1, #0x5a + lsl r1, r1, #0x2 + cmp r0, r1 + blo _0201B948 + mov r0, #0x0 + bx lr +_0201B948: + lsl r1, r0, #0x2 + ldr r0, _0201B950 ; =0x020EDF50 + ldr r0, [r0, r1] + bx lr + .balign 4 +_0201B950: .word 0x020EDF50 + + thumb_func_start FUN_0201B954 +FUN_0201B954: ; 0x0201B954 + mov r1, #0x5a + lsl r1, r1, #0x2 + cmp r0, r1 + blo _0201B960 + mov r0, #0x0 + bx lr +_0201B960: + add r0, #0x5a + lsl r1, r0, #0x2 + ldr r0, _0201B96C ; =0x020EDF50 + ldr r0, [r0, r1] + bx lr + nop +_0201B96C: .word 0x020EDF50 + + thumb_func_start FUN_0201B970 +FUN_0201B970: ; 0x0201B970 + push {r3, lr} + mov r1, #0x5a + lsl r1, r1, #0x2 + blx _s32_div_f + ldr r0, _0201B984 ; =0x020EDF50 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r3, pc} + nop +_0201B984: .word 0x020EDF50 + + thumb_func_start FUN_0201B988 +FUN_0201B988: ; 0x0201B988 + push {r3, lr} + mov r1, #0x5a + lsl r1, r1, #0x2 + blx _s32_div_f + add r1, #0x5a + ldr r0, _0201B99C ; =0x020EDF50 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r3, pc} + .balign 4 +_0201B99C: .word 0x020EDF50 + + thumb_func_start FUN_0201B9A0 +FUN_0201B9A0: ; 0x0201B9A0 + push {r3, lr} + mov r1, #0x5a + lsl r1, r1, #0x2 + blx _s32_div_f + ldr r0, _0201B9B4 ; =0x020EDC7E + lsl r1, r1, #0x1 + ldrh r0, [r0, r1] + pop {r3, pc} + nop +_0201B9B4: .word 0x020EDC7E + + thumb_func_start FUN_0201B9B8 +FUN_0201B9B8: ; 0x0201B9B8 + push {r3, lr} + lsl r0, r0, #0x4 + mov r1, #0x5a + lsr r0, r0, #0x10 + lsl r1, r1, #0x2 + blx _s32_div_f + ldr r0, _0201B9D0 ; =0x020EDF50 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r3, pc} + nop +_0201B9D0: .word 0x020EDF50 + + thumb_func_start FUN_0201B9D4 +FUN_0201B9D4: ; 0x0201B9D4 + ldr r0, _0201B9DC ; =0x021C4D48 + ldr r0, [r0, #0x0] + bx lr + nop +_0201B9DC: .word 0x021C4D48 + + thumb_func_start FUN_0201B9E0 +FUN_0201B9E0: ; 0x0201B9E0 + ldr r1, _0201B9E8 ; =0x021C4D48 + str r0, [r1, #0x0] + bx lr + nop +_0201B9E8: .word 0x021C4D48 + + thumb_func_start FUN_0201B9EC +FUN_0201B9EC: ; 0x0201B9EC + ldr r1, _0201BA04 ; =0x021C4D48 + ldr r0, _0201BA08 ; =0x41C64E6D + ldr r2, [r1, #0x0] + add r3, r2, #0x0 + mul r3, r0 + ldr r0, _0201BA0C ; =0x00006073 + add r0, r3, r0 + str r0, [r1, #0x0] + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + .balign 4 +_0201BA04: .word 0x021C4D48 +_0201BA08: .word 0x41C64E6D +_0201BA0C: .word 0x00006073 + + thumb_func_start FUN_0201BA10 +FUN_0201BA10: ; 0x0201BA10 + ldr r1, _0201BA18 ; =0x6C078965 + mul r1, r0 + add r0, r1, #0x1 + bx lr + .balign 4 +_0201BA18: .word 0x6C078965 + + thumb_func_start FUN_0201BA1C +FUN_0201BA1C: ; 0x0201BA1C + push {r4-r5} + ldr r1, _0201BA50 ; =0x021C4D48 + mov r4, #0x27 + str r0, [r1, #0x4] + ldr r1, _0201BA54 ; =0x02105BA8 + mov r0, #0x1 + str r0, [r1, #0x0] + ldr r1, _0201BA58 ; =0x021C4D50 + ldr r3, _0201BA5C ; =0x6C078965 + lsl r4, r4, #0x4 +_0201BA30: + sub r2, r1, #0x4 + ldr r5, [r2, #0x0] + lsr r2, r5, #0x1e + eor r2, r5 + add r5, r2, #0x0 + mul r5, r3 + add r2, r0, r5 + add r0, r0, #0x1 + stmia r1!, {r2} + cmp r0, r4 + blt _0201BA30 + ldr r1, _0201BA54 ; =0x02105BA8 + str r0, [r1, #0x0] + pop {r4-r5} + bx lr + nop +_0201BA50: .word 0x021C4D48 +_0201BA54: .word 0x02105BA8 +_0201BA58: .word 0x021C4D50 +_0201BA5C: .word 0x6C078965 + + thumb_func_start FUN_0201BA60 +FUN_0201BA60: ; 0x0201BA60 + push {r3-r7, lr} + ldr r0, _0201BB44 ; =0x02105BA8 + ldr r1, [r0, #0x0] + mov r0, #0x27 + lsl r0, r0, #0x4 + cmp r1, r0 + blt _0201BB18 + add r0, r0, #0x1 + cmp r1, r0 + bne _0201BA7A + ldr r0, _0201BB48 ; =0x00001571 + bl FUN_0201BA1C +_0201BA7A: + ldr r4, _0201BB4C ; =0x021C4D4C + ldr r1, _0201BB50 ; =0x02105BAC + ldr r5, _0201BB54 ; =0x7FFFFFFF + ldr r6, _0201BB58 ; =0x00000634 + mov r0, #0x0 +_0201BA84: + mov r2, #0x2 + ldr r3, [r4, #0x0] + lsl r2, r2, #0x1e + and r3, r2 + ldr r2, [r4, #0x4] + add r0, r0, #0x1 + and r2, r5 + orr r3, r2 + lsr r7, r3, #0x1 + lsl r3, r3, #0x1f + ldr r2, [r4, r6] + lsr r3, r3, #0x1d + ldr r3, [r1, r3] + eor r2, r7 + eor r2, r3 + stmia r4!, {r2} + cmp r0, #0xe3 + blt _0201BA84 + ldr r1, _0201BB5C ; =0x0000026F + cmp r0, r1 + bge _0201BAE4 + ldr r2, _0201BB4C ; =0x021C4D4C + lsl r1, r0, #0x2 + add r1, r2, r1 + mov r2, #0xe3 + ldr r4, _0201BB50 ; =0x02105BAC + ldr r3, _0201BB5C ; =0x0000026F + lsl r2, r2, #0x2 +_0201BABC: + mov r5, #0x2 + ldr r6, [r1, #0x0] + lsl r5, r5, #0x1e + and r5, r6 + ldr r7, [r1, #0x4] + ldr r6, _0201BB54 ; =0x7FFFFFFF + add r0, r0, #0x1 + and r6, r7 + orr r6, r5 + lsr r5, r6, #0x1 + sub r7, r1, r2 + lsl r6, r6, #0x1f + ldr r7, [r7, #0x0] + lsr r6, r6, #0x1d + ldr r6, [r4, r6] + eor r5, r7 + eor r5, r6 + stmia r1!, {r5} + cmp r0, r3 + blt _0201BABC +_0201BAE4: + ldr r2, _0201BB60 ; =0x021C56C8 + mov r0, #0x2 + ldr r1, [r2, #0x40] + lsl r0, r0, #0x1e + add r3, r1, #0x0 + ldr r1, _0201BB64 ; =0x021C4D48 + and r3, r0 + ldr r1, [r1, #0x4] + sub r0, r0, #0x1 + and r0, r1 + add r4, r3, #0x0 + orr r4, r0 + ldr r0, _0201BB68 ; =0x021C5348 + ldr r1, [r0, #0x34] + lsr r0, r4, #0x1 + add r3, r1, #0x0 + eor r3, r0 + lsl r0, r4, #0x1f + lsr r1, r0, #0x1d + ldr r0, _0201BB50 ; =0x02105BAC + ldr r0, [r0, r1] + mov r1, #0x0 + eor r0, r3 + str r0, [r2, #0x40] + ldr r0, _0201BB44 ; =0x02105BA8 + str r1, [r0, #0x0] +_0201BB18: + ldr r0, _0201BB44 ; =0x02105BA8 + ldr r2, [r0, #0x0] + add r1, r2, #0x1 + str r1, [r0, #0x0] + ldr r0, _0201BB4C ; =0x021C4D4C + lsl r1, r2, #0x2 + ldr r1, [r0, r1] + lsr r0, r1, #0xb + add r2, r1, #0x0 + eor r2, r0 + ldr r0, _0201BB6C ; =0x9D2C5680 + lsl r1, r2, #0x7 + and r0, r1 + eor r2, r0 + ldr r0, _0201BB70 ; =0xEFC60000 + lsl r1, r2, #0xf + and r0, r1 + add r1, r2, #0x0 + eor r1, r0 + lsr r0, r1, #0x12 + eor r0, r1 + pop {r3-r7, pc} + .balign 4 +_0201BB44: .word 0x02105BA8 +_0201BB48: .word 0x00001571 +_0201BB4C: .word 0x021C4D4C +_0201BB50: .word 0x02105BAC +_0201BB54: .word 0x7FFFFFFF +_0201BB58: .word 0x00000634 +_0201BB5C: .word 0x0000026F +_0201BB60: .word 0x021C56C8 +_0201BB64: .word 0x021C4D48 +_0201BB68: .word 0x021C5348 +_0201BB6C: .word 0x9D2C5680 +_0201BB70: .word 0xEFC60000 + + thumb_func_start FUN_0201BB74 +FUN_0201BB74: ; 0x0201BB74 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, sp, #0x0 + ldrb r0, [r0, #0x10] + add r4, r2, #0x0 + add r6, r3, #0x0 + cmp r0, #0x1 + bne _0201BB8E + ldr r0, _0201BBC8 ; =0x0000FFFF + mul r0, r1 + lsl r0, r0, #0x8 + lsr r1, r0, #0x10 + b _0201BBA2 +_0201BB8E: + cmp r0, #0x2 + bne _0201BBA2 + ldr r0, _0201BBC8 ; =0x0000FFFF + mul r0, r1 + mov r1, #0x5a + lsl r1, r1, #0x2 + blx _u32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_0201BBA2: + asr r0, r1, #0x4 + lsl r3, r0, #0x1 + lsl r1, r3, #0x1 + ldr r2, _0201BBCC ; =0x020FFA38 + add r3, r3, #0x1 + lsl r3, r3, #0x1 + ldrsh r1, [r2, r1] + ldrsh r2, [r2, r3] + add r0, r5, #0x0 + bl FUN_020C3EA4 + add r0, r5, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + blx FUN_020C3EB0 + pop {r4-r6, pc} + nop +_0201BBC8: .word 0x0000FFFF +_0201BBCC: .word 0x020FFA38 + + thumb_func_start FUN_0201BBD0 +FUN_0201BBD0: ; 0x0201BBD0 + push {r3-r7, lr} + sub sp, #0x38 + lsl r5, r0, #0xc + lsl r4, r1, #0xc + mov r1, #0x0 + lsl r0, r2, #0xc + lsl r6, r3, #0xc + str r1, [sp, #0x34] + str r0, [sp, #0x0] + str r0, [sp, #0x20] + str r1, [sp, #0x28] + str r1, [sp, #0x8] + str r1, [sp, #0xc] + asr r1, r5, #0x1f + add r0, r5, #0x0 + asr r3, r6, #0x1f + add r2, r6, #0x0 + str r5, [sp, #0x2c] + str r4, [sp, #0x30] + str r6, [sp, #0x24] + blx _ll_mul + str r0, [sp, #0x4] + add r2, r4, #0x0 + ldr r0, [sp, #0x20] + add r7, r1, #0x0 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #0x2 + ldr r3, [sp, #0x4] + lsl r2, r2, #0xa + add r3, r3, r2 + ldr r2, _0201BC80 ; =0x00000000 + str r4, [sp, #0x2c] + adc r7, r2 + lsl r2, r7, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + mov r2, #0x2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _0201BC80 ; =0x00000000 + str r5, [sp, #0x30] + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + sub r2, r3, r0 + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r2, [sp, #0x10] + add r0, r1, r0 + add r7, r2, r0 + mov r0, #0x0 + str r0, [sp, #0x34] + add r0, sp, #0x2c + add r1, sp, #0x14 + blx VEC_Normalize + mov r1, #0x0 + ldr r0, [sp, #0x0] + str r1, [sp, #0x34] + str r0, [sp, #0x20] + str r1, [sp, #0x28] + add r0, sp, #0x20 + add r1, sp, #0x2c + add r2, sp, #0x8 + str r5, [sp, #0x2c] + str r4, [sp, #0x30] + str r6, [sp, #0x24] + blx VEC_Subtract + add r0, sp, #0x14 + add r1, sp, #0x8 + blx VEC_DotProduct + asr r0, r0, #0xc + bpl _0201BC72 + neg r0, r0 +_0201BC72: + cmp r7, #0x0 + bgt _0201BC7C + mov r1, #0x0 + mvn r1, r1 + mul r0, r1 +_0201BC7C: + add sp, #0x38 + pop {r3-r7, pc} + .balign 4 +_0201BC80: .word 0x00000000 + + thumb_func_start FUN_0201BC84 +FUN_0201BC84: ; 0x0201BC84 + push {r3-r5, lr} + lsl r0, r0, #0xd + add r4, r1, #0x0 + ldr r2, _0201BCB4 ; =0x0000323D + asr r1, r0, #0x1f + mov r3, #0x0 + blx _ll_mul + add r5, r0, #0x0 + ldr r0, _0201BCB8 ; =0x0000FFFF + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + mul r0, r4 + add r2, r5, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + asr r1, r2, #0xc + blx _s32_div_f + pop {r3-r5, pc} + nop +_0201BCB4: .word 0x0000323D +_0201BCB8: .word 0x0000FFFF + + thumb_func_start FUN_0201BCBC +FUN_0201BCBC: ; 0x0201BCBC + ldr r1, _0201BCC4 ; =0x02105BB4 + str r0, [r1, #0x0] + bx lr + nop +_0201BCC4: .word 0x02105BB4 + + thumb_func_start FUN_0201BCC8 +FUN_0201BCC8: ; 0x0201BCC8 + push {r4-r6, lr} + ldr r4, _0201BCF8 ; =0x021C5714 + mov r5, #0x0 +_0201BCCE: + ldr r3, [r4, #0x0] + cmp r3, #0x0 + bne _0201BCE8 + ldr r6, _0201BCF8 ; =0x021C5714 + lsl r4, r5, #0x2 + bl FUN_0200CA7C + str r0, [r6, r4] + ldr r0, [r6, r4] + cmp r0, #0x0 + bne _0201BCF0 + mov r5, #0x8 + b _0201BCF0 +_0201BCE8: + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, #0x8 + blt _0201BCCE +_0201BCF0: + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + pop {r4-r6, pc} + nop +_0201BCF8: .word 0x021C5714 + + thumb_func_start FUN_0201BCFC +FUN_0201BCFC: ; 0x0201BCFC + push {r4-r6, lr} + add r5, r0, #0x0 + cmp r5, #0x8 + blo _0201BD08 + bl ErrorHandling +_0201BD08: + ldr r6, _0201BD40 ; =0x021C5714 + lsl r4, r5, #0x2 + ldr r0, [r6, r4] + cmp r0, #0x0 + bne _0201BD16 + bl ErrorHandling +_0201BD16: + cmp r5, #0x8 + bhs _0201BD3C + ldr r0, [r6, r4] + cmp r0, #0x0 + beq _0201BD3C + bl FUN_0201B6C8 + add r5, r0, #0x0 + beq _0201BD32 + bl FUN_0201C238 + add r0, r5, #0x0 + bl FUN_02016A18 +_0201BD32: + ldr r0, [r6, r4] + bl FUN_0200CAB4 + mov r0, #0x0 + str r0, [r6, r4] +_0201BD3C: + pop {r4-r6, pc} + nop +_0201BD40: .word 0x021C5714 + + thumb_func_start FUN_0201BD44 +FUN_0201BD44: ; 0x0201BD44 + lsl r1, r0, #0x2 + ldr r0, _0201BD58 ; =0x021C5714 + ldr r0, [r0, r1] + cmp r0, #0x0 + beq _0201BD52 + mov r0, #0x1 + bx lr +_0201BD52: + mov r0, #0x0 + bx lr + nop +_0201BD58: .word 0x021C5714 + + thumb_func_start FUN_0201BD5C +FUN_0201BD5C: ; 0x0201BD5C + mov r1, #0x0 + ldr r2, _0201BD6C ; =0x021C5714 + add r0, r1, #0x0 +_0201BD62: + add r1, r1, #0x1 + stmia r2!, {r0} + cmp r1, #0x8 + blt _0201BD62 + bx lr + .balign 4 +_0201BD6C: .word 0x021C5714 + + thumb_func_start FUN_0201BD70 +FUN_0201BD70: ; 0x0201BD70 + push {r3, lr} + bl FUN_0201BD44 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + + thumb_func_start FUN_0201BD7C +FUN_0201BD7C: ; 0x0201BD7C + ldr r3, _0201BD80 ; =FUN_0201BCFC + bx r3 + .balign 4 +_0201BD80: .word FUN_0201BCFC + + thumb_func_start FUN_0201BD84 +FUN_0201BD84: ; 0x0201BD84 + push {r3, lr} + sub sp, #0x18 + str r0, [sp, #0x4] + lsl r0, r3, #0x18 + lsr r3, r0, #0x18 + ldr r0, [sp, #0x20] + str r2, [sp, #0x0] + add r2, sp, #0x0 + strb r1, [r2, #0x9] + lsl r0, r0, #0x18 + strb r3, [r2, #0xa] + lsr r0, r0, #0x18 + strb r0, [r2, #0xb] + strb r3, [r2, #0xc] + strb r0, [r2, #0xd] + ldr r0, _0201BDDC ; =0x02105BB4 + lsl r1, r1, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r1 + ldrb r0, [r1, #0x2] + strb r0, [r2, #0xe] + ldrb r0, [r1, #0x3] + strb r0, [r2, #0xf] + ldrb r0, [r1, #0x4] + strb r0, [r2, #0x10] + ldrb r0, [r1, #0x5] + strb r0, [r2, #0x11] + ldrb r0, [r1, #0x6] + strb r0, [r2, #0x12] + ldrb r0, [r1, #0x7] + ldr r1, [sp, #0x24] + strb r0, [r2, #0x13] + mov r0, #0x0 + strh r0, [r2, #0x14] + strb r0, [r2, #0x16] + mov r0, #0xff + strb r0, [r2, #0x17] + ldr r2, [sp, #0x28] + add r0, sp, #0x0 + bl FUN_0201BE98 + add sp, #0x18 + pop {r3, pc} + nop +_0201BDDC: .word 0x02105BB4 + + thumb_func_start FUN_0201BDE0 +FUN_0201BDE0: ; 0x0201BDE0 + push {r3, lr} + sub sp, #0x18 + str r0, [sp, #0x4] + lsl r0, r3, #0x18 + lsr r3, r0, #0x18 + ldr r0, [sp, #0x20] + str r2, [sp, #0x0] + add r2, sp, #0x0 + strb r1, [r2, #0x9] + lsl r0, r0, #0x18 + strb r3, [r2, #0xa] + lsr r0, r0, #0x18 + strb r0, [r2, #0xb] + strb r3, [r2, #0xc] + strb r0, [r2, #0xd] + ldr r0, _0201BE38 ; =0x02105BB4 + lsl r1, r1, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r1 + ldrb r0, [r1, #0x2] + strb r0, [r2, #0xe] + ldrb r0, [r1, #0x3] + strb r0, [r2, #0xf] + ldrb r0, [r1, #0x4] + ldr r1, [sp, #0x28] + strb r0, [r2, #0x10] + lsr r0, r1, #0x10 + strb r0, [r2, #0x11] + lsr r0, r1, #0x8 + strb r0, [r2, #0x13] + strb r1, [r2, #0x12] + mov r0, #0x0 + strh r0, [r2, #0x14] + strb r0, [r2, #0x16] + mov r0, #0xff + strb r0, [r2, #0x17] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x2c] + add r0, sp, #0x0 + bl FUN_0201BE98 + add sp, #0x18 + pop {r3, pc} + nop +_0201BE38: .word 0x02105BB4 + + thumb_func_start FUN_0201BE3C +FUN_0201BE3C: ; 0x0201BE3C + push {r3, lr} + sub sp, #0x18 + str r0, [sp, #0x4] + lsl r0, r3, #0x18 + lsr r3, r0, #0x18 + ldr r0, [sp, #0x20] + str r2, [sp, #0x0] + add r2, sp, #0x0 + strb r1, [r2, #0x9] + lsl r0, r0, #0x18 + strb r3, [r2, #0xa] + lsr r0, r0, #0x18 + strb r0, [r2, #0xb] + strb r3, [r2, #0xc] + strb r0, [r2, #0xd] + ldr r0, [sp, #0x2c] + strb r0, [r2, #0xe] + ldr r0, [sp, #0x30] + strb r0, [r2, #0xf] + ldr r0, _0201BE94 ; =0x02105BB4 + ldr r3, [r0, #0x0] + lsl r0, r1, #0x3 + add r0, r3, r0 + ldrb r0, [r0, #0x4] + ldr r1, [sp, #0x28] + strb r0, [r2, #0x10] + lsr r0, r1, #0x10 + strb r0, [r2, #0x11] + lsr r0, r1, #0x8 + strb r0, [r2, #0x13] + strb r1, [r2, #0x12] + mov r0, #0x0 + strh r0, [r2, #0x14] + strb r0, [r2, #0x16] + mov r0, #0xff + strb r0, [r2, #0x17] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x34] + add r0, sp, #0x0 + bl FUN_0201BE98 + add sp, #0x18 + pop {r3, pc} + nop +_0201BE94: .word 0x02105BB4 + + thumb_func_start FUN_0201BE98 +FUN_0201BE98: ; 0x0201BE98 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _0201BFD0 ; =0x02105BB4 + add r6, r1, #0x0 + ldr r0, [r0, #0x0] + add r5, r2, #0x0 + cmp r0, #0x0 + bne _0201BEAC + mov r0, #0xff + pop {r3-r7, pc} +_0201BEAC: + mov r0, #0x0 + mov r1, #0x30 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x1 + add r0, #0x23 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + add r0, #0x24 + strb r3, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x25 + ldrb r2, [r0, #0x0] + mov r0, #0x7f + bic r2, r0 + lsl r0, r6, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x7f + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x25 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x26 + strb r3, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x27 + strb r3, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x29 + strb r3, [r0, #0x0] + add r1, r3, #0x0 +_0201BEF4: + add r0, r4, r3 + add r3, r3, #0x1 + strb r1, [r0, #0x1c] + cmp r3, #0x7 + blt _0201BEF4 + add r3, r7, #0x0 + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + bl FUN_02021F2C + str r0, [r4, #0x0] + ldr r0, _0201BFD4 ; =0x021C570C + str r5, [r4, #0x18] + mov r1, #0x0 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_0201C1A8 + cmp r6, #0xff + beq _0201BF74 + cmp r6, #0x0 + beq _0201BF74 + add r0, r4, #0x0 + add r0, #0x25 + ldrb r2, [r0, #0x0] + mov r1, #0x7f + add r0, r2, #0x0 + bic r0, r1 + lsl r1, r2, #0x19 + lsr r1, r1, #0x19 + add r1, #0xff + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + mov r1, #0x7f + and r1, r2 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x25 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x25 + ldrb r1, [r0, #0x0] + mov r0, #0x80 + mov r2, #0x1 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x25 + strb r1, [r0, #0x0] + ldr r0, _0201BFD8 ; =FUN_0201BFDC + add r1, r4, #0x0 + bl FUN_0201BCC8 + add r1, r4, #0x0 + add r1, #0x28 + strb r0, [r1, #0x0] + add r4, #0x28 + ldrb r0, [r4, #0x0] + pop {r3-r7, pc} +_0201BF74: + add r0, r4, #0x0 + add r0, #0x25 + ldrb r1, [r0, #0x0] + mov r0, #0x7f + mov r5, #0x0 + bic r1, r0 + add r0, r4, #0x0 + add r0, #0x25 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x25 + ldrb r1, [r0, #0x0] + mov r0, #0x80 + bic r1, r0 + add r0, r4, #0x0 + add r0, #0x25 + strb r1, [r0, #0x0] + ldrb r0, [r7, #0x11] + ldrb r1, [r7, #0x12] + ldrb r2, [r7, #0x13] + bl FUN_0201C05C + mov r7, #0x1 + lsl r7, r7, #0xa +_0201BFA4: + add r0, r4, #0x0 + bl FUN_0201C048 + cmp r0, #0x1 + beq _0201BFB4 + add r5, r5, #0x1 + cmp r5, r7 + blo _0201BFA4 +_0201BFB4: + cmp r6, #0xff + beq _0201BFBE + ldr r0, [r4, #0x4] + bl FUN_020191D0 +_0201BFBE: + add r0, r4, #0x0 + bl FUN_0201C238 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x8 + pop {r3-r7, pc} + nop +_0201BFD0: .word 0x02105BB4 +_0201BFD4: .word 0x021C570C +_0201BFD8: .word FUN_0201BFDC + + thumb_func_start FUN_0201BFDC +FUN_0201BFDC: ; 0x0201BFDC + push {r4, lr} + ldr r0, _0201C044 ; =0x021C570C + add r4, r1, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201C042 + add r0, r4, #0x0 + add r0, #0x29 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201C036 + mov r0, #0x0 + strh r0, [r4, #0x2a] + ldrb r0, [r4, #0x11] + ldrb r1, [r4, #0x12] + ldrb r2, [r4, #0x13] + bl FUN_0201C05C + add r0, r4, #0x0 + bl FUN_0201C048 + cmp r0, #0x0 + beq _0201C014 + cmp r0, #0x1 + beq _0201C02C + cmp r0, #0x3 + beq _0201C01A + pop {r4, pc} +_0201C014: + ldr r0, [r4, #0x4] + bl FUN_020191D0 +_0201C01A: + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _0201C042 + ldrh r1, [r4, #0x2a] + add r0, r4, #0x0 + blx r2 + add r4, #0x29 + strb r0, [r4, #0x0] + pop {r4, pc} +_0201C02C: + add r4, #0x28 + ldrb r0, [r4, #0x0] + bl FUN_0201BCFC + pop {r4, pc} +_0201C036: + ldrh r1, [r4, #0x2a] + ldr r2, [r4, #0x18] + add r0, r4, #0x0 + blx r2 + add r4, #0x29 + strb r0, [r4, #0x0] +_0201C042: + pop {r4, pc} + .balign 4 +_0201C044: .word 0x021C570C + + thumb_func_start FUN_0201C048 +FUN_0201C048: ; 0x0201C048 + push {r4, lr} + add r4, r0, #0x0 +_0201C04C: + ldrb r0, [r4, #0x9] + add r1, r4, #0x0 + bl FUN_02002DB0 + cmp r0, #0x2 + beq _0201C04C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201C05C +FUN_0201C05C: ; 0x0201C05C + push {r3-r7, lr} + sub sp, #0x30 + ldr r3, _0201C0F8 ; =0x021C570C + mov r5, #0x0 + str r5, [sp, #0x20] + str r0, [sp, #0x24] + str r2, [sp, #0x28] + str r1, [sp, #0x2c] + strh r1, [r3, #0x6] + strh r0, [r3, #0x2] + add r0, sp, #0x20 + strh r2, [r3, #0x4] + str r5, [sp, #0x14] + str r0, [sp, #0x8] + mov r12, r0 + mov lr, r0 + str r0, [sp, #0x18] +_0201C07E: + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + str r0, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r0, [r0, #0x0] + str r0, [sp, #0x1c] +_0201C08C: + mov r0, #0x0 + str r0, [sp, #0xc] + mov r0, lr + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + ldr r0, [r0, #0x0] + lsl r7, r0, #0x4 +_0201C09A: + ldr r0, [sp, #0x0] + mov r3, #0x0 + ldr r0, [r0, #0x0] + mov r4, r12 + lsl r6, r0, #0x8 +_0201C0A4: + ldr r0, [r4, #0x0] + add r1, r7, #0x0 + lsl r0, r0, #0xc + orr r0, r6 + orr r1, r0 + ldr r0, [sp, #0x1c] + add r3, r3, #0x1 + add r2, r0, #0x0 + orr r2, r1 + lsl r1, r5, #0x1 + ldr r0, _0201C0FC ; =0x021C5734 + add r5, r5, #0x1 + add r4, r4, #0x4 + strh r2, [r0, r1] + cmp r3, #0x4 + blt _0201C0A4 + ldr r0, [sp, #0x0] + add r0, r0, #0x4 + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, #0x4 + blt _0201C09A + ldr r0, [sp, #0x4] + add r0, r0, #0x4 + str r0, [sp, #0x4] + ldr r0, [sp, #0x10] + add r0, r0, #0x1 + str r0, [sp, #0x10] + cmp r0, #0x4 + blt _0201C08C + ldr r0, [sp, #0x8] + add r0, r0, #0x4 + str r0, [sp, #0x8] + ldr r0, [sp, #0x14] + add r0, r0, #0x1 + str r0, [sp, #0x14] + cmp r0, #0x4 + blt _0201C07E + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_0201C0F8: .word 0x021C570C +_0201C0FC: .word 0x021C5734 + + thumb_func_start FUN_0201C100 +FUN_0201C100: ; 0x0201C100 + ldrh r2, [r0, #0x0] + lsr r2, r2, #0x8 + lsl r3, r2, #0x1 + ldr r2, _0201C1A4 ; =0x021C5734 + ldrh r3, [r2, r3] + strh r3, [r1, #0x0] + ldrh r3, [r0, #0x0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0x2] + ldrh r3, [r0, #0x2] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0x4] + ldrh r3, [r0, #0x2] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0x6] + ldrh r3, [r0, #0x4] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0x8] + ldrh r3, [r0, #0x4] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0xa] + ldrh r3, [r0, #0x6] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0xc] + ldrh r3, [r0, #0x6] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0xe] + ldrh r3, [r0, #0x8] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0x10] + ldrh r3, [r0, #0x8] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0x12] + ldrh r3, [r0, #0xa] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0x14] + ldrh r3, [r0, #0xa] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0x16] + ldrh r3, [r0, #0xc] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0x18] + ldrh r3, [r0, #0xc] + lsl r3, r3, #0x18 + lsr r3, r3, #0x17 + ldrh r3, [r2, r3] + strh r3, [r1, #0x1a] + ldrh r3, [r0, #0xe] + lsr r3, r3, #0x8 + lsl r3, r3, #0x1 + ldrh r3, [r2, r3] + strh r3, [r1, #0x1c] + ldrh r0, [r0, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x17 + ldrh r0, [r2, r0] + strh r0, [r1, #0x1e] + bx lr + .balign 4 +_0201C1A4: .word 0x021C5734 + + thumb_func_start FUN_0201C1A8 +FUN_0201C1A8: ; 0x0201C1A8 + mov r1, #0x0 + str r1, [r0, #0x2c] + bx lr + .balign 4 + + thumb_func_start FUN_0201C1B0 +FUN_0201C1B0: ; 0x0201C1B0 + push {r3-r5, lr} + sub sp, #0x8 + mov r1, #0x6 + mov r0, #0x0 + lsl r1, r1, #0x8 + bl FUN_02016998 + mov r2, #0x0 + add r5, r0, #0x0 + str r2, [sp, #0x0] + mov r0, #0xe + mov r1, #0x5 + add r3, sp, #0x4 + bl FUN_02006BB0 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + mov r2, #0x6 + ldr r0, [r0, #0x14] + add r1, r5, #0x0 + lsl r2, r2, #0x8 + blx MIi_CpuCopy32 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201C1EC +FUN_0201C1EC: ; 0x0201C1EC + push {r3-r7, lr} + sub sp, #0x18 + add r4, r0, #0x0 + ldr r0, [r4, #0x2c] + add r7, r3, #0x0 + ldr r5, [r4, #0x4] + cmp r0, #0x0 + bne _0201C202 + bl FUN_0201C1B0 + str r0, [r4, #0x2c] +_0201C202: + mov r0, #0x6 + lsl r0, r0, #0x6 + add r6, r7, #0x0 + mul r6, r0 + add r0, r5, #0x0 + ldr r4, [r4, #0x2c] + bl FUN_0201AB0C + sub r0, r0, #0x3 + lsl r0, r0, #0x13 + mov r1, #0x18 + lsr r2, r0, #0x10 + str r1, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + str r2, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + add r0, r5, #0x0 + add r1, r4, r6 + add r3, r2, #0x0 + bl FUN_02019658 + add sp, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_0201C238 +FUN_0201C238: ; 0x0201C238 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x2c] + cmp r0, #0x0 + beq _0201C24A + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x2c] +_0201C24A: + pop {r4, pc} + + thumb_func_start FUN_0201C24C +FUN_0201C24C: ; 0x0201C24C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0201C298 ; =0x021C5934 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201C25E + bl ErrorHandling +_0201C25E: + add r0, r4, #0x0 + mov r1, #0xc + bl FUN_02016998 + ldr r1, _0201C298 ; =0x021C5934 + cmp r0, #0x0 + str r0, [r1, #0x0] + bne _0201C272 + bl ErrorHandling +_0201C272: + add r0, r4, #0x0 + lsl r1, r5, #0x4 + bl FUN_02016998 + ldr r1, _0201C298 ; =0x021C5934 + ldr r2, [r1, #0x0] + str r0, [r2, #0x8] + ldr r0, [r1, #0x0] + mov r2, #0x0 + str r5, [r0, #0x0] + ldr r0, [r1, #0x0] + str r2, [r0, #0x4] + ldr r1, [r1, #0x0] + ldr r0, [r1, #0x8] + ldr r1, [r1, #0x0] + blx FUN_020AEF1C + pop {r3-r5, pc} + nop +_0201C298: .word 0x021C5934 + + thumb_func_start FUN_0201C29C +FUN_0201C29C: ; 0x0201C29C + push {r3, lr} + ldr r0, _0201C2C4 ; =0x021C5934 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201C2AA + bl ErrorHandling +_0201C2AA: + ldr r0, _0201C2C4 ; =0x021C5934 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x8] + bl FUN_02016A18 + ldr r0, _0201C2C4 ; =0x021C5934 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0201C2C4 ; =0x021C5934 + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r3, pc} + .balign 4 +_0201C2C4: .word 0x021C5934 + + thumb_func_start FUN_0201C2C8 +FUN_0201C2C8: ; 0x0201C2C8 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0201C308 ; =0x021C5934 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r0, #0x0 + bne _0201C2DE + bl ErrorHandling +_0201C2DE: + ldr r1, _0201C308 ; =0x021C5934 + ldr r0, [r1, #0x0] + ldr r2, [r0, #0x4] + add r2, r2, #0x1 + str r2, [r0, #0x4] + ldr r0, [r1, #0x0] + ldr r1, [r0, #0x4] + ldr r0, [r0, #0x0] + cmp r1, r0 + blo _0201C2FA + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} +_0201C2FA: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + blx FUN_020AEE40 + pop {r3-r7, pc} + .balign 4 +_0201C308: .word 0x021C5934 + + thumb_func_start FUN_0201C30C +FUN_0201C30C: ; 0x0201C30C + push {r3, lr} + ldr r0, _0201C324 ; =0x021C5934 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201C322 + blx FUN_020AEEB8 + ldr r0, _0201C324 ; =0x021C5934 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x4] +_0201C322: + pop {r3, pc} + .balign 4 +_0201C324: .word 0x021C5934 + + thumb_func_start FUN_0201C328 +FUN_0201C328: ; 0x0201C328 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x30 + mul r1, r4 + bl FUN_02016998 + ldr r2, _0201C344 ; =FUN_0201C358 + add r1, r4, #0x0 + add r5, r0, #0x0 + blx FUN_020B4568 + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 +_0201C344: .word FUN_0201C358 + + thumb_func_start FUN_0201C348 +FUN_0201C348: ; 0x0201C348 + ldr r3, _0201C34C ; =FUN_020B442C + bx r3 + .balign 4 +_0201C34C: .word FUN_020B442C + + thumb_func_start FUN_0201C350 +FUN_0201C350: ; 0x0201C350 + ldr r3, _0201C354 ; =FUN_02016A18 + bx r3 + .balign 4 +_0201C354: .word FUN_02016A18 + + thumb_func_start FUN_0201C358 +FUN_0201C358: ; 0x0201C358 + push {r3, lr} + bl FUN_0201C2C8 + pop {r3, pc} + + thumb_func_start FUN_0201C360 +FUN_0201C360: ; 0x0201C360 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x8 + bl FUN_02016998 + mov r1, #0x14 + add r4, r0, #0x0 + add r0, r6, #0x0 + mul r1, r5 + bl FUN_02016998 + str r0, [r4, #0x0] + mov r6, #0x0 + str r5, [r4, #0x4] + cmp r5, #0x0 + ble _0201C398 + add r5, r6, #0x0 +_0201C386: + ldr r0, [r4, #0x0] + add r0, r0, r5 + bl FUN_0201C444 + ldr r0, [r4, #0x4] + add r6, r6, #0x1 + add r5, #0x14 + cmp r6, r0 + blt _0201C386 +_0201C398: + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0201C39C +FUN_0201C39C: ; 0x0201C39C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201C414 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201C3B4 +FUN_0201C3B4: ; 0x0201C3B4 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + mov r4, #0x0 + add r7, r2, #0x0 + mov r12, r1 + add r6, r3, #0x0 + add r2, r4, #0x0 + cmp r0, #0x0 + ble _0201C3E2 + ldr r5, [r5, #0x0] + add r3, r5, #0x0 +_0201C3CC: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + bne _0201C3DA + mov r0, #0x14 + mul r0, r2 + add r4, r5, r0 + b _0201C3E2 +_0201C3DA: + add r2, r2, #0x1 + add r3, #0x14 + cmp r2, r0 + blt _0201C3CC +_0201C3E2: + cmp r4, #0x0 + bne _0201C3EA + mov r0, #0x0 + pop {r3-r7, pc} +_0201C3EA: + mov r0, r12 + str r0, [r4, #0x0] + str r7, [r4, #0x4] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x18] + str r6, [r4, #0x8] + str r0, [r4, #0xc] + mov r0, #0xff + strb r0, [r4, #0x10] + lsl r1, r1, #0x4 + strb r0, [r4, #0x11] + add r0, r4, #0x0 + lsr r1, r1, #0x10 + bl FUN_0201C454 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0201C40C +FUN_0201C40C: ; 0x0201C40C + ldr r3, _0201C410 ; =FUN_0201C444 + bx r3 + .balign 4 +_0201C410: .word FUN_0201C444 + + thumb_func_start FUN_0201C414 +FUN_0201C414: ; 0x0201C414 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _0201C434 + add r4, r6, #0x0 +_0201C422: + ldr r0, [r5, #0x0] + add r0, r0, r4 + bl FUN_0201C444 + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0x14 + cmp r6, r0 + blt _0201C422 +_0201C434: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0201C438 +FUN_0201C438: ; 0x0201C438 + ldr r3, _0201C440 ; =FUN_0201C454 + lsl r1, r1, #0x4 + lsr r1, r1, #0x10 + bx r3 + .balign 4 +_0201C440: .word FUN_0201C454 + + thumb_func_start FUN_0201C444 +FUN_0201C444: ; 0x0201C444 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + str r1, [r0, #0xc] + strb r1, [r0, #0x10] + strb r1, [r0, #0x11] + bx lr + + thumb_func_start FUN_0201C454 +FUN_0201C454: ; 0x0201C454 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02022244 + add r2, sp, #0x0 + strb r0, [r2, #0x0] + lsr r0, r0, #0x8 + strb r0, [r2, #0x1] + ldrb r0, [r2, #0x0] + add r1, sp, #0x0 + add r1, #0x2 + strb r0, [r2, #0x2] + ldrb r0, [r2, #0x1] + strb r0, [r2, #0x3] + ldrb r3, [r4, #0x10] + ldrb r0, [r2, #0x2] + cmp r3, r0 + beq _0201C482 + add r0, r4, #0x0 + bl FUN_0201C49C +_0201C482: + add r0, sp, #0x0 + ldrb r1, [r4, #0x11] + ldrb r0, [r0, #0x3] + cmp r1, r0 + beq _0201C496 + add r1, sp, #0x0 + add r0, r4, #0x0 + add r1, #0x2 + bl FUN_0201C4C8 +_0201C496: + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201C49C +FUN_0201C49C: ; 0x0201C49C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201C4F4 + ldr r3, [r5, #0x8] + add r2, r0, #0x0 + lsl r1, r3, #0x10 + ldr r6, _0201C4C4 ; =0x7FFF0000 + mov r0, #0x0 + and r3, r6 + lsr r3, r3, #0x10 + lsr r1, r1, #0xd + lsl r3, r3, #0x4 + bl FUN_0201C2C8 + ldrb r0, [r4, #0x0] + strb r0, [r5, #0x10] + pop {r4-r6, pc} + nop +_0201C4C4: .word 0x7FFF0000 + + thumb_func_start FUN_0201C4C8 +FUN_0201C4C8: ; 0x0201C4C8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201C500 + ldr r3, [r5, #0xc] + add r2, r0, #0x0 + lsl r1, r3, #0x10 + ldr r6, _0201C4F0 ; =0xFFFF0000 + mov r0, #0x1 + and r3, r6 + lsr r3, r3, #0x10 + lsr r1, r1, #0xd + lsl r3, r3, #0x3 + bl FUN_0201C2C8 + ldrb r0, [r4, #0x1] + strb r0, [r5, #0x11] + pop {r4-r6, pc} + nop +_0201C4F0: .word 0xFFFF0000 + + thumb_func_start FUN_0201C4F4 +FUN_0201C4F4: ; 0x0201C4F4 + ldr r3, _0201C4FC ; =0x0201C50D + ldr r0, [r0, #0x4] + ldrb r1, [r1, #0x0] + bx r3 + .balign 4 +_0201C4FC: .word 0x0201C50D + + thumb_func_start FUN_0201C500 +FUN_0201C500: ; 0x0201C500 + ldr r3, _0201C508 ; =0x0201C541 + ldr r0, [r0, #0x4] + ldrb r1, [r1, #0x1] + bx r3 + .balign 4 +_0201C508: .word 0x0201C541 + + thumb_func_start FUN_0201C50C +FUN_0201C50C: ; 0x0201C50C + push {r3-r4} + add r2, r0, #0x0 + add r2, #0x42 + ldrh r2, [r2, #0x0] + add r4, r0, #0x0 + add r4, #0x3c + add r3, r4, r2 + ldrh r2, [r4, r2] + add r3, r3, #0x4 + mul r1, r2 + add r3, r3, r1 + bne _0201C52A + mov r0, #0x0 + pop {r3-r4} + bx lr +_0201C52A: + ldr r1, [r0, #0x14] + add r2, r0, r1 + ldr r1, [r3, #0x0] + ldr r0, [r0, #0x8] + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r0, r1, r0 + lsl r0, r0, #0x3 + add r0, r2, r0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201C540 +FUN_0201C540: ; 0x0201C540 + push {r3-r4} + ldrh r2, [r0, #0x34] + add r4, r0, r2 + ldrh r2, [r4, #0x6] + add r3, r4, r2 + ldrh r2, [r4, r2] + add r3, r3, #0x4 + mul r1, r2 + add r2, r3, r1 + bne _0201C55A + mov r0, #0x0 + pop {r3-r4} + bx lr +_0201C55A: + ldr r1, [r0, #0x38] + add r1, r0, r1 + ldrh r0, [r2, #0x0] + lsl r0, r0, #0x3 + add r0, r1, r0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201C568 +FUN_0201C568: ; 0x0201C568 + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x8] + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r1, #0xd + lsr r0, r0, #0xd + add r0, r1, r0 + bx lr + + thumb_func_start FUN_0201C578 +FUN_0201C578: ; 0x0201C578 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_0201C750 + add r0, r4, #0x0 + add r0, #0x3c + add r1, sp, #0x0 + blx FUN_020BC2A0 + add r1, r0, #0x0 + bne _0201C598 + add sp, #0x10 + mov r0, #0x0 + pop {r4, pc} +_0201C598: + add r0, r4, #0x0 + bl FUN_0201C568 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201C5A4 +FUN_0201C5A4: ; 0x0201C5A4 + push {r3, lr} + ldr r0, [r1, #0x0] + mov r1, #0x7 + lsl r1, r1, #0x1a + and r1, r0 + lsr r1, r1, #0x1a + cmp r1, #0x4 + bhi _0201C5DA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0201C5C0: ; jump table (using 16-bit offset) + .short _0201C5DA - _0201C5C0 - 2; case 0 + .short _0201C5D6 - _0201C5C0 - 2; case 1 + .short _0201C5CA - _0201C5C0 - 2; case 2 + .short _0201C5CE - _0201C5C0 - 2; case 3 + .short _0201C5D2 - _0201C5C0 - 2; case 4 +_0201C5CA: + mov r1, #0x4 + b _0201C5DE +_0201C5CE: + mov r1, #0x2 + b _0201C5DE +_0201C5D2: + mov r1, #0x1 + b _0201C5DE +_0201C5D6: + mov r1, #0x1 + b _0201C5DE +_0201C5DA: + mov r0, #0x0 + pop {r3, pc} +_0201C5DE: + mov r3, #0x7 + lsl r3, r3, #0x14 + add r2, r0, #0x0 + and r2, r3 + lsl r3, r3, #0x3 + and r0, r3 + lsr r2, r2, #0x14 + lsr r0, r0, #0x17 + lsl r2, r2, #0x4 + lsl r0, r0, #0x4 + mul r0, r2 + blx _u32_div_f + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201C5FC +FUN_0201C5FC: ; 0x0201C5FC + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_0201C750 + add r0, r4, #0x0 + add r0, #0x3c + add r1, sp, #0x0 + blx FUN_020BC2A0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0201C5A4 + add sp, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201C620 +FUN_0201C620: ; 0x0201C620 + ldrb r3, [r0, #0x0] + strb r3, [r1, #0x0] + ldrb r0, [r0, #0x1] + strb r0, [r2, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0201C62C +FUN_0201C62C: ; 0x0201C62C + ldrb r3, [r0, #0x2] + strb r3, [r1, #0x0] + ldrb r0, [r0, #0x3] + strb r0, [r2, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0201C638 +FUN_0201C638: ; 0x0201C638 + push {r4-r5} + ldr r5, _0201C6B0 ; =0xFFFFFFF8 + ldr r4, [sp, #0xc] + add r5, sp + ldrb r5, [r5, #0x18] + cmp r5, #0x3 + bhi _0201C678 + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #0x6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_0201C652: ; jump table (using 16-bit offset) + .short _0201C65A - _0201C652 - 2; case 0 + .short _0201C662 - _0201C652 - 2; case 1 + .short _0201C66A - _0201C652 - 2; case 2 + .short _0201C672 - _0201C652 - 2; case 3 +_0201C65A: + lsl r4, r4, #0x3 + add r4, r0, r4 + ldrb r4, [r4, #0x4] + b _0201C678 +_0201C662: + lsl r4, r4, #0x3 + add r4, r0, r4 + ldrb r4, [r4, #0x5] + b _0201C678 +_0201C66A: + lsl r4, r4, #0x3 + add r4, r0, r4 + ldrb r4, [r4, #0x6] + b _0201C678 +_0201C672: + lsl r4, r4, #0x3 + add r4, r0, r4 + ldrb r4, [r4, #0x7] +_0201C678: + cmp r1, #0x0 + beq _0201C682 + lsl r5, r4, #0x3 + ldrb r5, [r0, r5] + strb r5, [r1, #0x0] +_0201C682: + cmp r2, #0x0 + beq _0201C68E + lsl r1, r4, #0x3 + add r1, r0, r1 + ldrb r1, [r1, #0x1] + strb r1, [r2, #0x0] +_0201C68E: + cmp r3, #0x0 + beq _0201C69A + lsl r1, r4, #0x3 + add r1, r0, r1 + ldrb r1, [r1, #0x2] + strb r1, [r3, #0x0] +_0201C69A: + ldr r2, [sp, #0x8] + cmp r2, #0x0 + beq _0201C6A8 + lsl r1, r4, #0x3 + add r0, r0, r1 + ldrb r0, [r0, #0x3] + strb r0, [r2, #0x0] +_0201C6A8: + add r0, r4, #0x0 + pop {r4-r5} + bx lr + nop +_0201C6B0: .word 0xFFFFFFF8 + + thumb_func_start FUN_0201C6B4 +FUN_0201C6B4: ; 0x0201C6B4 + mov r2, #0x0 + ldrsb r1, [r0, r2] + cmp r1, #0x0 + beq _0201C6C4 +_0201C6BC: + add r2, r2, #0x1 + ldrsb r1, [r0, r2] + cmp r1, #0x0 + bne _0201C6BC +_0201C6C4: + add r0, r2, #0x0 + bx lr + + thumb_func_start FUN_0201C6C8 +FUN_0201C6C8: ; 0x0201C6C8 + push {r4-r5} + mov r4, #0x1 + mov r3, #0x0 + lsl r4, r4, #0x8 +_0201C6D0: + ldrsb r5, [r0, r3] + strb r5, [r1, r3] + ldrsb r5, [r0, r3] + cmp r2, r5 + beq _0201C6DE + cmp r5, #0x0 + bne _0201C6FE +_0201C6DE: + mov r4, #0x0 + strb r4, [r1, r3] + cmp r2, #0xd + bne _0201C6F6 + add r1, r3, #0x1 + ldrsb r1, [r0, r1] + cmp r1, #0xa + bne _0201C6F6 + add r1, r3, #0x2 + add r0, r0, r1 + pop {r4-r5} + bx lr +_0201C6F6: + add r1, r3, #0x1 + add r0, r0, r1 + pop {r4-r5} + bx lr +_0201C6FE: + add r3, r3, #0x1 + cmp r3, r4 + blt _0201C6D0 + mov r0, #0x0 + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_0201C70C +FUN_0201C70C: ; 0x0201C70C + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_0201C6B4 + mov r5, #0x1 + mov r6, #0x0 + sub r3, r0, #0x1 + bmi _0201C74A + sub r1, r6, #0x1 + mov r0, #0xa +_0201C720: + ldrsb r2, [r4, r3] + cmp r2, #0x30 + blt _0201C732 + cmp r2, #0x39 + bgt _0201C732 + sub r2, #0x30 + mul r2, r5 + add r6, r6, r2 + b _0201C744 +_0201C732: + cmp r3, #0x0 + bne _0201C73E + cmp r2, #0x2d + bne _0201C744 + mul r6, r1 + b _0201C744 +_0201C73E: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_0201C744: + mul r5, r0 + sub r3, r3, #0x1 + bpl _0201C720 +_0201C74A: + add r0, r6, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0201C750 +FUN_0201C750: ; 0x0201C750 + push {r3-r5, lr} + mov r2, #0x0 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r1, r2, #0x0 +_0201C75A: + lsl r0, r2, #0x2 + str r1, [r5, r0] + add r0, r2, #0x1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #0x4 + blo _0201C75A + add r0, r4, #0x0 + bl FUN_0201C6B4 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r2, _0201C788 ; =0x00000000 + beq _0201C784 +_0201C776: + ldrsb r0, [r4, r2] + strb r0, [r5, r2] + add r0, r2, #0x1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, r1 + blo _0201C776 +_0201C784: + pop {r3-r5, pc} + nop +_0201C788: .word 0x00000000 + + thumb_func_start FUN_0201C78C +FUN_0201C78C: ; 0x0201C78C + ldr r1, _0201C79C ; =0x00000121 + cmp r0, r1 + bhs _0201C796 + mov r0, #0x1 + bx lr +_0201C796: + mov r0, #0x0 + bx lr + nop +_0201C79C: .word 0x00000121 + + thumb_func_start FUN_0201C7A0 +FUN_0201C7A0: ; 0x0201C7A0 + cmp r0, r1 + blt _0201C7A6 + add r0, r1, #0x0 +_0201C7A6: + bx lr + + thumb_func_start FUN_0201C7A8 +FUN_0201C7A8: ; 0x0201C7A8 + cmp r0, r1 + bgt _0201C7AE + add r0, r1, #0x0 +_0201C7AE: + bx lr + + thumb_func_start FUN_0201C7B0 +FUN_0201C7B0: ; 0x0201C7B0 + push {r3-r7, lr} + sub sp, #0x30 + add r4, r1, #0x0 + add r1, sp, #0x24 + blx VEC_Normalize + add r0, r4, #0x0 + add r1, sp, #0x18 + blx VEC_Normalize + ldr r0, [sp, #0x24] + ldr r4, [sp, #0x18] + str r0, [sp, #0x0] + asr r0, r0, #0x1f + str r0, [sp, #0x4] + ldr r0, [sp, #0x20] + asr r6, r4, #0x1f + str r0, [sp, #0x8] + asr r0, r0, #0x1f + str r0, [sp, #0xc] + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x8] + asr r7, r0, #0x1f + ldr r3, [sp, #0xc] + add r1, r7, #0x0 + str r0, [sp, #0x10] + blx _ll_mul + str r0, [sp, #0x14] + add r5, r1, #0x0 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r2, r4, #0x0 + add r3, r6, #0x0 + blx _ll_mul + mov r2, #0x2 + ldr r3, [sp, #0x14] + lsl r2, r2, #0xa + add r3, r3, r2 + ldr r2, _0201C874 ; =0x00000000 + adc r5, r2 + lsl r2, r5, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + mov r2, #0x2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _0201C874 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + add r5, r3, r0 + ldr r0, [sp, #0x10] + add r1, r7, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + blx _ll_mul + add r6, r0, #0x0 + add r4, r1, #0x0 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x8] + ldr r3, [sp, #0xc] + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r6, r6, r2 + adc r4, r3 + lsl r4, r4, #0x14 + lsr r6, r6, #0xc + orr r6, r4 + add r4, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r4, #0xc + orr r1, r0 + sub r0, r6, r1 + cmp r5, #0x0 + bne _0201C86A + cmp r0, #0x0 + ble _0201C862 + add sp, #0x30 + lsl r0, r2, #0x3 + pop {r3-r7, pc} +_0201C862: + mov r0, #0x3 + add sp, #0x30 + lsl r0, r0, #0xe + pop {r3-r7, pc} +_0201C86A: + add r1, r5, #0x0 + blx FX_Modf + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_0201C874: .word 0x00000000 + + thumb_func_start FUN_0201C878 +FUN_0201C878: ; 0x0201C878 + push {r0-r3} + push {r4-r7, lr} + sub sp, #0x54 + ldr r0, [sp, #0x7c] + ldr r2, [sp, #0x80] + str r0, [sp, #0x8] + ldr r0, [sp, #0x94] + ldr r1, [sp, #0x8c] + str r0, [sp, #0xc] + ldr r0, [sp, #0x88] + ldr r4, [sp, #0x70] + str r0, [sp, #0x10] + sub r0, r2, r1 + str r0, [sp, #0x14] + asr r0, r0, #0x1f + str r0, [sp, #0x18] + ldr r0, [sp, #0x8] + asr r0, r0, #0x1f + str r0, [sp, #0x1c] + ldr r0, [sp, #0x74] + sub r3, r0, r2 + sub r0, r1, r0 + str r3, [sp, #0x20] + asr r3, r3, #0x1f + str r3, [sp, #0x24] + ldr r3, [sp, #0xc] + str r0, [sp, #0x2c] + asr r0, r0, #0x1f + str r0, [sp, #0x30] + ldr r0, [sp, #0x10] + asr r3, r3, #0x1f + str r3, [sp, #0x28] + asr r0, r0, #0x1f + ldr r3, [sp, #0x68] + str r0, [sp, #0x34] + asr r0, r4, #0x1f + str r0, [sp, #0x38] + sub r2, r2, r3 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x1c] + asr r3, r2, #0x1f + blx _ll_mul + add r7, r0, #0x0 + add r6, r1, #0x0 + ldr r3, [sp, #0x68] + ldr r2, [sp, #0x74] + ldr r0, [sp, #0x10] + sub r2, r3, r2 + ldr r1, [sp, #0x34] + asr r3, r2, #0x1f + blx _ll_mul + add r5, r1, #0x0 + str r0, [sp, #0x3c] + ldr r1, [sp, #0x38] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + add r0, r4, #0x0 + blx _ll_mul + mov r2, #0x2 + str r0, [sp, #0x4c] + add r0, r1, #0x0 + mov r1, #0x0 + lsl r2, r2, #0xa + add r3, r7, r2 + adc r6, r1 + lsl r2, r6, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + mov r2, #0x2 + ldr r6, [sp, #0x3c] + lsl r2, r2, #0xa + add r2, r6, r2 + adc r5, r1 + mov r6, #0x2 + lsl r5, r5, #0x14 + lsr r2, r2, #0xc + orr r2, r5 + ldr r5, [sp, #0x4c] + lsl r6, r6, #0xa + add r5, r5, r6 + adc r0, r1 + lsl r0, r0, #0x14 + lsr r1, r5, #0xc + orr r1, r0 + add r0, r2, r1 + add r0, r3, r0 + str r0, [sp, #0x4] + ldr r3, [sp, #0x8c] + ldr r2, [sp, #0x68] + ldr r0, [sp, #0x10] + sub r2, r3, r2 + ldr r1, [sp, #0x34] + asr r3, r2, #0x1f + blx _ll_mul + add r7, r0, #0x0 + add r6, r1, #0x0 + ldr r3, [sp, #0x68] + ldr r2, [sp, #0x80] + ldr r0, [sp, #0xc] + sub r2, r3, r2 + ldr r1, [sp, #0x28] + asr r3, r2, #0x1f + blx _ll_mul + str r0, [sp, #0x40] + add r5, r1, #0x0 + ldr r1, [sp, #0x38] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + add r0, r4, #0x0 + blx _ll_mul + mov r2, #0x2 + str r0, [sp, #0x50] + add r0, r1, #0x0 + mov r1, #0x0 + lsl r2, r2, #0xa + add r3, r7, r2 + adc r6, r1 + lsl r2, r6, #0x14 + lsr r3, r3, #0xc + orr r3, r2 + mov r2, #0x2 + ldr r6, [sp, #0x40] + lsl r2, r2, #0xa + add r2, r6, r2 + adc r5, r1 + mov r6, #0x2 + lsl r5, r5, #0x14 + lsr r2, r2, #0xc + orr r2, r5 + ldr r5, [sp, #0x50] + lsl r6, r6, #0xa + add r5, r5, r6 + adc r0, r1 + lsl r0, r0, #0x14 + lsr r1, r5, #0xc + orr r1, r0 + add r0, r2, r1 + add r0, r3, r0 + str r0, [sp, #0x0] + ldr r3, [sp, #0x74] + ldr r2, [sp, #0x68] + ldr r0, [sp, #0xc] + sub r2, r3, r2 + ldr r1, [sp, #0x28] + asr r3, r2, #0x1f + blx _ll_mul + add r7, r0, #0x0 + add r6, r1, #0x0 + ldr r3, [sp, #0x68] + ldr r2, [sp, #0x8c] + ldr r0, [sp, #0x8] + sub r2, r3, r2 + ldr r1, [sp, #0x1c] + asr r3, r2, #0x1f + blx _ll_mul + add r5, r1, #0x0 + str r0, [sp, #0x44] + ldr r1, [sp, #0x38] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + add r0, r4, #0x0 + blx _ll_mul + mov r3, #0x2 + mov r2, #0x0 + lsl r3, r3, #0xa + add r4, r7, r3 + adc r6, r2 + lsl r3, r6, #0x14 + lsr r4, r4, #0xc + orr r4, r3 + mov r3, #0x2 + ldr r6, [sp, #0x44] + lsl r3, r3, #0xa + add r3, r6, r3 + adc r5, r2 + lsl r5, r5, #0x14 + lsr r3, r3, #0xc + orr r3, r5 + mov r5, #0x2 + lsl r5, r5, #0xa + add r5, r0, r5 + adc r1, r2 + lsl r0, r1, #0x14 + lsr r1, r5, #0xc + orr r1, r0 + add r0, r3, r1 + add r6, r4, r0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + blx _ll_mul + add r7, r0, #0x0 + add r5, r1, #0x0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + blx _ll_mul + str r0, [sp, #0x48] + add r4, r1, #0x0 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + blx _ll_mul + mov r12, r0 + mov r0, #0x2 + add r2, r1, #0x0 + mov r1, #0x0 + lsl r0, r0, #0xa + add r0, r7, r0 + adc r5, r1 + lsl r3, r5, #0x14 + lsr r0, r0, #0xc + orr r0, r3 + mov r3, #0x2 + ldr r5, [sp, #0x48] + lsl r3, r3, #0xa + add r3, r5, r3 + adc r4, r1 + lsl r4, r4, #0x14 + lsr r3, r3, #0xc + orr r3, r4 + mov r4, #0x2 + lsl r4, r4, #0xa + mov r5, r12 + add r4, r5, r4 + adc r2, r1 + lsl r2, r2, #0x14 + lsr r4, r4, #0xc + orr r4, r2 + add r2, r3, r4 + add r0, r0, r2 + bpl _0201CA72 + add sp, #0x54 + add r0, r1, #0x0 + pop {r4-r7} + pop {r3} + add sp, #0x10 + bx r3 +_0201CA72: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bge _0201CA84 + add sp, #0x54 + add r0, r1, #0x0 + pop {r4-r7} + pop {r3} + add sp, #0x10 + bx r3 +_0201CA84: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bge _0201CA96 + add sp, #0x54 + add r0, r1, #0x0 + pop {r4-r7} + pop {r3} + add sp, #0x10 + bx r3 +_0201CA96: + cmp r6, #0x0 + blt _0201CA9C + mov r1, #0x1 +_0201CA9C: + add r0, r1, #0x0 + add sp, #0x54 + pop {r4-r7} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_0201CAA8 +FUN_0201CAA8: ; 0x0201CAA8 + push {r4-r5, lr} + sub sp, #0x24 + add r4, r1, #0x0 + ldr r1, [r4, #0x0] + ldr r3, _0201CB1C ; =0x020FFA38 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + asr r1, r1, #0x4 + lsl r2, r1, #0x1 + lsl r1, r2, #0x1 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r5, r0, #0x0 + bl MTX_RotX33_ + ldr r0, [r4, #0x4] + ldr r3, _0201CB1C ; =0x020FFA38 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #0x4 + lsl r2, r0, #0x1 + lsl r1, r2, #0x1 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0x0 + bl MTX_RotY33_ + add r0, r5, #0x0 + add r1, sp, #0x0 + add r2, r5, #0x0 + blx MTX_Concat33 + ldr r0, [r4, #0x8] + ldr r3, _0201CB1C ; =0x020FFA38 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #0x4 + lsl r2, r0, #0x1 + lsl r1, r2, #0x1 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, sp, #0x0 + bl MTX_RotZ33_ + add r0, r5, #0x0 + add r1, sp, #0x0 + add r2, r5, #0x0 + blx MTX_Concat33 + add sp, #0x24 + pop {r4-r5, pc} + nop +_0201CB1C: .word 0x020FFA38 + + thumb_func_start FUN_0201CB20 +FUN_0201CB20: ; 0x0201CB20 + push {r4-r7, lr} + sub sp, #0x24 + add r6, r1, #0x0 + add r5, r2, #0x0 + lsl r1, r6, #0x2 + ldr r2, _0201CB78 ; =0x020EDF50 + add r6, #0x5a + add r4, r3, #0x0 + lsl r3, r6, #0x2 + ldr r1, [r2, r1] + ldr r2, [r2, r3] + add r7, r0, #0x0 + bl MTX_RotX33_ + lsl r1, r5, #0x2 + ldr r3, _0201CB78 ; =0x020EDF50 + add r5, #0x5a + lsl r2, r5, #0x2 + ldr r1, [r3, r1] + ldr r2, [r3, r2] + add r0, sp, #0x0 + bl MTX_RotY33_ + add r0, r7, #0x0 + add r1, sp, #0x0 + add r2, r7, #0x0 + blx MTX_Concat33 + lsl r1, r4, #0x2 + ldr r3, _0201CB78 ; =0x020EDF50 + add r4, #0x5a + lsl r2, r4, #0x2 + ldr r1, [r3, r1] + ldr r2, [r3, r2] + add r0, sp, #0x0 + bl MTX_RotZ33_ + add r0, r7, #0x0 + add r1, sp, #0x0 + add r2, r7, #0x0 + blx MTX_Concat33 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_0201CB78: .word 0x020EDF50 + + thumb_func_start FUN_0201CB7C +FUN_0201CB7C: ; 0x0201CB7C + push {r3-r7, lr} + asr r0, r0, #0x4 + add r7, r2, #0x0 + lsl r2, r0, #0x1 + add r6, r1, #0x0 + lsl r0, r2, #0x1 + ldr r1, _0201CBE8 ; =0x020FFA38 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r0, [r1, r0] + ldrsh r1, [r1, r2] + add r5, r3, #0x0 + ldr r4, [sp, #0x18] + blx FX_Div + add r2, r0, #0x0 + asr r1, r6, #0x1f + add r0, r6, #0x0 + asr r3, r2, #0x1f + blx _ll_mul + mov r6, #0x2 + mov r2, #0x0 + lsl r6, r6, #0xa + add r0, r0, r6 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r3, r0, #0x1f + lsr r1, r0, #0x13 + lsl r3, r3, #0xd + orr r3, r1 + lsl r0, r0, #0xd + add r0, r0, r6 + adc r3, r2 + lsl r1, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0x1f + asr r3, r7, #0x1f + add r2, r7, #0x0 + str r0, [r4, #0x0] + blx _ll_mul + mov r3, #0x0 + add r2, r6, #0x0 + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #0x0] + pop {r3-r7, pc} + .balign 4 +_0201CBE8: .word 0x020FFA38 + + thumb_func_start FUN_0201CBEC +FUN_0201CBEC: ; 0x0201CBEC + push {r3, lr} + sub r0, r0, r2 + sub r2, r1, r3 + add r1, r0, #0x0 + mul r1, r0 + add r0, r2, #0x0 + mul r0, r2 + add r0, r1, r0 + lsl r0, r0, #0xc + blx FX_Sqrt + asr r0, r0, #0xc + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201CC08 +FUN_0201CC08: ; 0x0201CC08 + push {r3, lr} + ldr r0, _0201CC20 ; =0x021C5978 + ldrh r0, [r0, #0x1a] + cmp r0, #0x0 + beq _0201CC16 + bl ErrorHandling +_0201CC16: + ldr r0, _0201CC20 ; =0x021C5978 + mov r1, #0x0 + strh r1, [r0, #0x18] + strh r1, [r0, #0x1a] + pop {r3, pc} + .balign 4 +_0201CC20: .word 0x021C5978 + + thumb_func_start FUN_0201CC24 +FUN_0201CC24: ; 0x0201CC24 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r0, _0201CC74 ; =0x021C5978 + ldrh r0, [r0, #0x1a] + cmp r0, #0x0 + beq _0201CC36 + bl ErrorHandling +_0201CC36: + cmp r4, #0x5 + bhs _0201CC3E + cmp r4, #0x0 + bne _0201CC44 +_0201CC3E: + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_0201CC44: + ldr r0, _0201CC74 ; =0x021C5978 + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0201CC52 + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_0201CC52: + add r0, r4, #0x0 + bl FUN_0201CE2C + cmp r0, #0x1 + bne _0201CC70 + mov r2, #0x0 + str r2, [sp, #0x0] + lsl r0, r4, #0x1 + str r0, [sp, #0x4] + mov r0, #0x2 + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_0201CC78 + mov r0, #0x1 +_0201CC70: + add sp, #0x8 + pop {r4, pc} + .balign 4 +_0201CC74: .word 0x021C5978 + + thumb_func_start FUN_0201CC78 +FUN_0201CC78: ; 0x0201CC78 + push {r4, lr} + ldr r4, _0201CC9C ; =0x021C5978 + strh r0, [r4, #0x18] + ldr r0, _0201CCA0 ; =0x021C4918 + strb r1, [r0, #0x4] + ldr r0, _0201CCA4 ; =0x021C5938 + ldr r1, [sp, #0xc] + str r2, [r0, #0x0] + str r3, [r0, #0x4] + str r1, [r0, #0x8] + ldr r1, [sp, #0x8] + str r1, [r0, #0x54] + ldr r0, _0201CCA8 ; =0x021C5944 + mov r1, #0x9 + bl FUN_0201CCAC + pop {r4, pc} + nop +_0201CC9C: .word 0x021C5978 +_0201CCA0: .word 0x021C4918 +_0201CCA4: .word 0x021C5938 +_0201CCA8: .word 0x021C5944 + + thumb_func_start FUN_0201CCAC +FUN_0201CCAC: ; 0x0201CCAC + mov r3, #0x0 + cmp r1, #0x0 + ble _0201CCBE + add r2, r3, #0x0 +_0201CCB4: + add r3, r3, #0x1 + strh r2, [r0, #0x4] + add r0, #0x8 + cmp r3, r1 + blt _0201CCB4 +_0201CCBE: + bx lr + + thumb_func_start FUN_0201CCC0 +FUN_0201CCC0: ; 0x0201CCC0 + push {r4-r6, lr} + ldr r0, _0201CD00 ; =0x021C5978 + mov r5, #0x0 + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + bne _0201CCD0 + mov r0, #0x1 + pop {r4-r6, pc} +_0201CCD0: + mov r4, #0x4 + add r6, r4, #0x0 +_0201CCD4: + blx TP_RequestAutoSamplingStopAsync + add r0, r4, #0x0 + blx TP_WaitBusy + add r0, r6, #0x0 + blx TP_CheckError + cmp r0, #0x0 + beq _0201CCEA + add r5, r5, #0x1 +_0201CCEA: + cmp r0, #0x0 + beq _0201CCF2 + cmp r5, #0x5 + bls _0201CCD4 +_0201CCF2: + cmp r5, #0x5 + bls _0201CCFA + mov r0, #0x2 + pop {r4-r6, pc} +_0201CCFA: + mov r0, #0x1 + pop {r4-r6, pc} + nop +_0201CD00: .word 0x021C5978 + + thumb_func_start FUN_0201CD04 +FUN_0201CD04: ; 0x0201CD04 + push {r4, lr} + sub sp, #0x8 + ldr r0, _0201CD34 ; =0x021C5978 + ldrh r0, [r0, #0x1a] + cmp r0, #0x0 + beq _0201CD14 + bl ErrorHandling +_0201CD14: + bl FUN_0201CCC0 + add r4, r0, #0x0 + cmp r4, #0x1 + bne _0201CD2E + mov r0, #0x0 + str r0, [sp, #0x0] + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + str r0, [sp, #0x4] + bl FUN_0201CC78 +_0201CD2E: + add r0, r4, #0x0 + add sp, #0x8 + pop {r4, pc} + .balign 4 +_0201CD34: .word 0x021C5978 + + thumb_func_start FUN_0201CD38 +FUN_0201CD38: ; 0x0201CD38 + push {r3-r7, lr} + add r4, r0, #0x0 + ldr r0, _0201CD8C ; =0x021C5978 + add r6, r1, #0x0 + ldrh r0, [r0, #0x1a] + add r7, r2, #0x0 + mov r5, #0x3 + cmp r0, #0x0 + beq _0201CD4E + bl ErrorHandling +_0201CD4E: + ldr r0, _0201CD8C ; =0x021C5978 + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0201CD88 + blx TP_GetLatestIndexInAuto + add r5, r0, #0x0 + ldr r0, _0201CD90 ; =0x021C5944 + mov r1, #0x9 + bl FUN_0201CD94 + cmp r4, #0x0 + beq _0201CD70 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0201CFD0 +_0201CD70: + ldr r0, _0201CD8C ; =0x021C5978 + ldrh r0, [r0, #0x18] + cmp r0, #0x1 + bne _0201CD86 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r7, #0x0 + bl FUN_0201CE70 + add r5, r0, #0x0 + b _0201CD88 +_0201CD86: + mov r5, #0x1 +_0201CD88: + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 +_0201CD8C: .word 0x021C5978 +_0201CD90: .word 0x021C5944 + + thumb_func_start FUN_0201CD94 +FUN_0201CD94: ; 0x0201CD94 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r7, #0x0 + str r1, [sp, #0x0] + add r0, r1, #0x0 + beq _0201CDCA + add r4, r5, #0x0 + add r6, sp, #0x4 +_0201CDA6: + add r0, sp, #0x4 + add r1, r5, #0x0 + blx TP_GetCalibratedPoint + ldrh r0, [r6, #0x0] + add r7, r7, #0x1 + add r5, #0x8 + strh r0, [r4, #0x0] + ldrh r0, [r6, #0x2] + strh r0, [r4, #0x2] + ldrh r0, [r6, #0x4] + strh r0, [r4, #0x4] + ldrh r0, [r6, #0x6] + strh r0, [r4, #0x6] + ldr r0, [sp, #0x0] + add r4, #0x8 + cmp r7, r0 + blo _0201CDA6 +_0201CDCA: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0201CDD0 +FUN_0201CDD0: ; 0x0201CDD0 + push {r3, lr} + ldr r0, _0201CDFC ; =0x021C5978 + ldrh r1, [r0, #0x1a] + cmp r1, #0x0 + beq _0201CDF8 + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0201CDF8 + ldr r0, _0201CE00 ; =0x021C5938 + ldr r0, [r0, #0x8] + lsr r0, r0, #0x1 + bl FUN_0201CE2C + cmp r0, #0x1 + beq _0201CDF2 + bl ErrorHandling +_0201CDF2: + ldr r0, _0201CDFC ; =0x021C5978 + mov r1, #0x0 + strh r1, [r0, #0x1a] +_0201CDF8: + pop {r3, pc} + nop +_0201CDFC: .word 0x021C5978 +_0201CE00: .word 0x021C5938 + + thumb_func_start FUN_0201CE04 +FUN_0201CE04: ; 0x0201CE04 + push {r3, lr} + ldr r0, _0201CE28 ; =0x021C5978 + ldrh r1, [r0, #0x1a] + cmp r1, #0x1 + beq _0201CE26 + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0201CE26 + bl FUN_0201CCC0 + cmp r0, #0x1 + beq _0201CE20 + bl ErrorHandling +_0201CE20: + ldr r0, _0201CE28 ; =0x021C5978 + mov r1, #0x1 + strh r1, [r0, #0x1a] +_0201CE26: + pop {r3, pc} + .balign 4 +_0201CE28: .word 0x021C5978 + + thumb_func_start FUN_0201CE2C +FUN_0201CE2C: ; 0x0201CE2C + push {r3-r7, lr} + mov r5, #0x0 + lsl r0, r0, #0x10 + ldr r7, _0201CE6C ; =0x021C5944 + add r6, r5, #0x0 + lsr r4, r0, #0x10 +_0201CE38: + add r0, r6, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + mov r3, #0x9 + blx TP_RequestAutoSamplingStartAsync + mov r0, #0x2 + blx TP_WaitBusy + mov r0, #0x2 + blx TP_CheckError + cmp r0, #0x0 + beq _0201CE56 + add r5, r5, #0x1 +_0201CE56: + cmp r0, #0x0 + beq _0201CE5E + cmp r5, #0x5 + ble _0201CE38 +_0201CE5E: + cmp r5, #0x5 + ble _0201CE66 + mov r0, #0x2 + pop {r3-r7, pc} +_0201CE66: + mov r0, #0x1 + pop {r3-r7, pc} + nop +_0201CE6C: .word 0x021C5944 + + thumb_func_start FUN_0201CE70 +FUN_0201CE70: ; 0x0201CE70 + push {r3, lr} + cmp r0, #0x5 + bhi _0201CE9A + add r3, r0, r0 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0201CE82: ; jump table (using 16-bit offset) + .short _0201CE9A - _0201CE82 - 2; case 0 + .short _0201CE8E - _0201CE82 - 2; case 1 + .short _0201CE9A - _0201CE82 - 2; case 2 + .short _0201CE8E - _0201CE82 - 2; case 3 + .short _0201CE94 - _0201CE82 - 2; case 4 + .short _0201CE94 - _0201CE82 - 2; case 5 +_0201CE8E: + bl FUN_0201CEA0 + pop {r3, pc} +_0201CE94: + bl FUN_0201CF58 + pop {r3, pc} +_0201CE9A: + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201CEA0 +FUN_0201CEA0: ; 0x0201CEA0 + push {r3-r7, lr} + sub sp, #0x8 + ldr r5, _0201CF50 ; =0x021C5938 + str r1, [sp, #0x4] + ldr r1, [r5, #0x8] + str r0, [sp, #0x0] + add r7, r2, #0x0 + mov r4, #0x0 + cmp r1, #0x0 + bls _0201CF46 +_0201CEB4: + ldr r0, [sp, #0x4] + sub r0, r0, r1 + add r0, r4, r0 + add r0, r0, #0x1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + bpl _0201CEC8 + add r0, #0x9 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 +_0201CEC8: + lsl r1, r0, #0x3 + ldr r0, _0201CF54 ; =0x021C5938 + add r1, r0, r1 + ldrh r0, [r1, #0x10] + cmp r0, #0x1 + bne _0201CF3E + ldrh r0, [r1, #0x12] + cmp r0, #0x0 + bne _0201CF3E + ldr r2, [r5, #0x54] + ldr r0, [r5, #0x0] + lsl r2, r2, #0x3 + add r2, r0, r2 + add r0, r2, #0x0 + sub r0, #0x8 + ldrh r3, [r1, #0xc] + ldrh r0, [r0, #0x0] + cmp r0, r3 + blt _0201CEF2 + sub r3, r0, r3 + b _0201CEF4 +_0201CEF2: + sub r3, r3, r0 +_0201CEF4: + sub r6, r2, #0x6 + ldrh r0, [r1, #0xe] + ldrh r6, [r6, #0x0] + cmp r6, r0 + blt _0201CF02 + sub r0, r6, r0 + b _0201CF04 +_0201CF02: + sub r0, r0, r6 +_0201CF04: + cmp r3, r7 + bhs _0201CF0C + cmp r0, r7 + blo _0201CF3E +_0201CF0C: + ldrh r0, [r1, #0xc] + strh r0, [r2, #0x0] + ldrh r0, [r1, #0xe] + strh r0, [r2, #0x2] + ldrh r0, [r1, #0x10] + strh r0, [r2, #0x4] + ldrh r0, [r1, #0x12] + strh r0, [r2, #0x6] + ldr r0, [r5, #0x54] + add r0, r0, #0x1 + str r0, [r5, #0x54] + ldr r1, [r5, #0x4] + cmp r0, r1 + blo _0201CF3E + ldr r2, [sp, #0x0] + cmp r2, #0x1 + bne _0201CF36 + blx _u32_div_f + str r1, [r5, #0x54] + b _0201CF3E +_0201CF36: + mov r0, #0x0 + add sp, #0x8 + mvn r0, r0 + pop {r3-r7, pc} +_0201CF3E: + ldr r1, [r5, #0x8] + add r4, r4, #0x1 + cmp r4, r1 + blo _0201CEB4 +_0201CF46: + ldr r0, _0201CF50 ; =0x021C5938 + ldr r0, [r0, #0x54] + add sp, #0x8 + pop {r3-r7, pc} + nop +_0201CF50: .word 0x021C5938 +_0201CF54: .word 0x021C5938 + + thumb_func_start FUN_0201CF58 +FUN_0201CF58: ; 0x0201CF58 + push {r3-r7, lr} + ldr r5, _0201CFC8 ; =0x021C5938 + str r1, [sp, #0x0] + ldr r1, [r5, #0x8] + add r7, r0, #0x0 + mov r4, #0x0 + cmp r1, #0x0 + bls _0201CFC0 +_0201CF68: + ldr r0, [sp, #0x0] + sub r0, r0, r1 + add r0, r4, r0 + add r0, r0, #0x1 + lsl r0, r0, #0x10 + asr r1, r0, #0x10 + bpl _0201CF7C + add r1, #0x9 + lsl r0, r1, #0x10 + asr r1, r0, #0x10 +_0201CF7C: + ldr r0, [r5, #0x54] + lsl r1, r1, #0x3 + lsl r3, r0, #0x3 + ldr r0, _0201CFCC ; =0x021C5938 + ldr r6, [r5, #0x0] + add r2, r0, r1 + ldrh r0, [r2, #0xc] + add r1, r6, r3 + strh r0, [r6, r3] + ldrh r0, [r2, #0xe] + strh r0, [r1, #0x2] + ldrh r0, [r2, #0x10] + strh r0, [r1, #0x4] + ldrh r0, [r2, #0x12] + strh r0, [r1, #0x6] + ldr r0, [r5, #0x54] + add r0, r0, #0x1 + str r0, [r5, #0x54] + ldr r1, [r5, #0x4] + cmp r0, r1 + blo _0201CFB8 + cmp r7, #0x4 + bne _0201CFB2 + blx _u32_div_f + str r1, [r5, #0x54] + b _0201CFB8 +_0201CFB2: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0201CFB8: + ldr r1, [r5, #0x8] + add r4, r4, #0x1 + cmp r4, r1 + blo _0201CF68 +_0201CFC0: + ldr r0, _0201CFC8 ; =0x021C5938 + ldr r0, [r0, #0x54] + pop {r3-r7, pc} + nop +_0201CFC8: .word 0x021C5938 +_0201CFCC: .word 0x021C5938 + + thumb_func_start FUN_0201CFD0 +FUN_0201CFD0: ; 0x0201CFD0 + push {r4-r7} + mov r2, #0x0 + strh r2, [r0, #0x0] + add r3, r0, #0x0 + add r6, r2, #0x0 +_0201CFDA: + strh r6, [r3, #0x8] + strh r6, [r3, #0x6] + strh r6, [r3, #0x2] + strh r6, [r3, #0x4] + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, #0x8 + blt _0201CFDA + ldr r2, _0201D038 ; =0x021C5938 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + bls _0201D034 + ldr r4, _0201D03C ; =0x021C5938 +_0201CFF4: + sub r3, r1, r3 + add r3, r6, r3 + add r3, r3, #0x1 + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + bpl _0201D006 + add r3, #0x9 + lsl r3, r3, #0x10 + asr r3, r3, #0x10 +_0201D006: + lsl r3, r3, #0x3 + add r5, r4, r3 + ldrh r3, [r5, #0x12] + cmp r3, #0x0 + bne _0201D02C + ldrh r3, [r0, #0x0] + ldrh r7, [r5, #0xc] + lsl r3, r3, #0x3 + add r3, r0, r3 + strh r7, [r3, #0x2] + ldrh r7, [r5, #0xe] + strh r7, [r3, #0x4] + ldrh r7, [r5, #0x10] + strh r7, [r3, #0x6] + ldrh r5, [r5, #0x12] + strh r5, [r3, #0x8] + ldrh r3, [r0, #0x0] + add r3, r3, #0x1 + strh r3, [r0, #0x0] +_0201D02C: + ldr r3, [r2, #0x8] + add r6, r6, #0x1 + cmp r6, r3 + blo _0201CFF4 +_0201D034: + pop {r4-r7} + bx lr + .balign 4 +_0201D038: .word 0x021C5938 +_0201D03C: .word 0x021C5938 + + thumb_func_start FUN_0201D040 +FUN_0201D040: ; 0x0201D040 + ldr r1, _0201D054 ; =0x04001000 + ldr r2, [r1, #0x0] + ldr r1, _0201D058 ; =0x00300010 + lsl r3, r1, #0x16 + ldr r3, [r3, #0x0] + and r2, r1 + and r1, r3 + ldr r3, _0201D05C ; =FUN_0201D060 + bx r3 + nop +_0201D054: .word 0x04001000 +_0201D058: .word 0x00300010 +_0201D05C: .word FUN_0201D060 + + thumb_func_start FUN_0201D060 +FUN_0201D060: ; 0x0201D060 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _0201D120 ; =0x021C5994 + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + str r2, [sp, #0x4] + cmp r0, #0x0 + bne _0201D11A + ldr r0, [r5, #0xc] + mov r1, #0x3c + bl FUN_02016998 + add r1, r0, #0x0 + ldr r0, _0201D120 ; =0x021C5994 + mov r2, #0x3c + str r1, [r0, #0x0] + mov r0, #0x0 + blx MIi_CpuClear32 + ldr r1, _0201D120 ; =0x021C5994 + ldr r2, [r5, #0x0] + ldr r0, [r1, #0x0] + str r2, [r0, #0x4] + ldr r1, [r1, #0x0] + ldr r0, [r5, #0xc] + ldr r2, [r1, #0x4] + mov r1, #0x54 + mul r1, r2 + bl FUN_02016998 + ldr r7, _0201D120 ; =0x021C5994 + mov r6, #0x0 + ldr r1, [r7, #0x0] + str r0, [r1, #0x0] + ldr r0, [r5, #0x0] + cmp r0, #0x0 + ble _0201D0C2 + add r4, r6, #0x0 +_0201D0AE: + ldr r0, [r7, #0x0] + ldr r0, [r0, #0x0] + add r0, r0, r4 + bl FUN_0201D690 + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + add r4, #0x54 + cmp r6, r0 + blt _0201D0AE +_0201D0C2: + ldr r0, [sp, #0x0] + bl FUN_0201DED0 + ldr r1, _0201D120 ; =0x021C5994 + ldr r1, [r1, #0x0] + str r0, [r1, #0x2c] + ldr r0, [sp, #0x4] + bl FUN_0201DED0 + ldr r2, _0201D120 ; =0x021C5994 + mov r3, #0x1 + ldr r1, [r2, #0x0] + lsl r3, r3, #0x1a + str r0, [r1, #0x30] + ldr r0, [r3, #0x0] + ldr r1, _0201D124 ; =0xFFCFFFEF + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + and r4, r1 + orr r0, r4 + str r0, [r3, #0x0] + ldr r3, _0201D128 ; =0x04001000 + ldr r0, [r3, #0x0] + and r1, r0 + ldr r0, [sp, #0x4] + orr r0, r1 + str r0, [r3, #0x0] + ldr r1, [r2, #0x0] + ldr r0, [r5, #0x4] + ldr r1, [r1, #0x2c] + bl FUN_0201DF2C + ldr r1, _0201D120 ; =0x021C5994 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + ldr r0, [r5, #0x8] + ldr r1, [r1, #0x30] + bl FUN_0201DF2C + add r1, r0, #0x0 + ldr r2, [r5, #0xc] + add r0, r4, #0x0 + bl FUN_0201DC58 +_0201D11A: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0201D120: .word 0x021C5994 +_0201D124: .word 0xFFCFFFEF +_0201D128: .word 0x04001000 + + thumb_func_start FUN_0201D12C +FUN_0201D12C: ; 0x0201D12C + push {r3, lr} + ldr r0, _0201D164 ; =0x021C5994 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201D162 + ldr r0, [r0, #0x34] + bl FUN_0201DCC0 + ldr r0, _0201D164 ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0201DCC0 + bl FUN_0201D374 + ldr r0, _0201D164 ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0201D164 ; =0x021C5994 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0201D164 ; =0x021C5994 + mov r1, #0x0 + str r1, [r0, #0x0] +_0201D162: + pop {r3, pc} + .balign 4 +_0201D164: .word 0x021C5994 + + thumb_func_start FUN_0201D168 +FUN_0201D168: ; 0x0201D168 + push {r3, lr} + ldr r0, _0201D190 ; =0x021C5994 + mov r2, #0x0 + ldr r1, [r0, #0x0] + str r2, [r1, #0xc] + ldr r1, [r0, #0x0] + str r2, [r1, #0x10] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_0201DD00 + ldr r0, _0201D190 ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0201DD00 + bl FUN_0201DAE8 + pop {r3, pc} + nop +_0201D190: .word 0x021C5994 + + thumb_func_start FUN_0201D194 +FUN_0201D194: ; 0x0201D194 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r3, r1, #0x0 + cmp r2, #0x1 + add r0, sp, #0x4 + bne _0201D1CA + str r0, [sp, #0x0] + ldr r0, _0201D1F4 ; =0x021C5994 + add r2, r3, #0x0 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x1c] + add r3, sp, #0x8 + bl FUN_0201DFF0 + ldr r3, [sp, #0x4] + cmp r3, #0x0 + ble _0201D1F0 + mov r2, #0x0 + str r2, [sp, #0x0] + ldr r1, [sp, #0x8] + mov r0, #0x1 + bl FUN_0201D948 + add sp, #0xc + pop {r3-r4, pc} +_0201D1CA: + str r0, [sp, #0x0] + ldr r0, _0201D1F4 ; =0x021C5994 + add r2, r3, #0x0 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x20] + add r3, sp, #0x8 + bl FUN_0201DFF0 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _0201D1F0 + str r0, [sp, #0x0] + mov r1, #0x0 + ldr r2, [sp, #0x8] + mov r0, #0x2 + add r3, r1, #0x0 + bl FUN_0201D948 +_0201D1F0: + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_0201D1F4: .word 0x021C5994 + + thumb_func_start FUN_0201D1F8 +FUN_0201D1F8: ; 0x0201D1F8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x8] + bl FUN_0201D2AC + cmp r0, #0x1 + bne _0201D20A + bl ErrorHandling +_0201D20A: + bl FUN_0201DAAC + add r4, r0, #0x0 + bne _0201D21A + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0201D21A: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201D6B4 + cmp r0, #0x0 + bne _0201D22A + mov r0, #0x0 + pop {r3-r5, pc} +_0201D22A: + add r0, r4, #0x0 + bl FUN_0201D724 + cmp r0, #0x0 + bne _0201D23E + ldr r0, [r4, #0xc] + bl FUN_0201D324 + mov r0, #0x0 + pop {r3-r5, pc} +_0201D23E: + ldr r0, _0201D24C ; =0x021C5994 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x8] + add r0, r0, #0x1 + str r0, [r1, #0x8] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0201D24C: .word 0x021C5994 + + thumb_func_start FUN_0201D250 +FUN_0201D250: ; 0x0201D250 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x8] + bl FUN_0201D2AC + cmp r0, #0x1 + bne _0201D262 + bl ErrorHandling +_0201D262: + bl FUN_0201DAAC + add r4, r0, #0x0 + bne _0201D272 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0201D272: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201D6B4 + cmp r0, #0x0 + bne _0201D282 + mov r0, #0x0 + pop {r3-r5, pc} +_0201D282: + mov r0, #0x1 + str r0, [r4, #0x40] + add r0, r4, #0x0 + bl FUN_0201D724 + cmp r0, #0x0 + bne _0201D29A + ldr r0, [r4, #0xc] + bl FUN_0201D324 + mov r0, #0x0 + pop {r3-r5, pc} +_0201D29A: + ldr r0, _0201D2A8 ; =0x021C5994 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x8] + add r0, r0, #0x1 + str r0, [r1, #0x8] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0201D2A8: .word 0x021C5994 + + thumb_func_start FUN_0201D2AC +FUN_0201D2AC: ; 0x0201D2AC + push {r3-r4} + ldr r1, _0201D2D8 ; =0x021C5994 + mov r2, #0x0 + ldr r4, [r1, #0x0] + ldr r1, [r4, #0x4] + cmp r1, #0x0 + ble _0201D2D2 + ldr r3, [r4, #0x0] +_0201D2BC: + ldr r1, [r3, #0xc] + cmp r0, r1 + bne _0201D2C8 + mov r0, #0x1 + pop {r3-r4} + bx lr +_0201D2C8: + ldr r1, [r4, #0x4] + add r2, r2, #0x1 + add r3, #0x54 + cmp r2, r1 + blt _0201D2BC +_0201D2D2: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 +_0201D2D8: .word 0x021C5994 + + thumb_func_start FUN_0201D2DC +FUN_0201D2DC: ; 0x0201D2DC + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + bne _0201D2E8 + bl ErrorHandling +_0201D2E8: + add r0, r4, #0x0 + bl FUN_0201D7F8 + add r4, r0, #0x0 + bne _0201D2F6 + bl ErrorHandling +_0201D2F6: + str r5, [r4, #0x0] + ldr r1, [r4, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201D30C + ldr r1, [r4, #0x34] + ldr r2, [r5, #0x14] + ldr r3, [r5, #0x10] + mov r0, #0x13 + bl FUN_0201C2C8 +_0201D30C: + ldr r1, [r4, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201D320 + ldr r1, [r4, #0x38] + ldr r2, [r5, #0x14] + ldr r3, [r5, #0x10] + mov r0, #0x23 + bl FUN_0201C2C8 +_0201D320: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201D324 +FUN_0201D324: ; 0x0201D324 + push {r3-r7, lr} + add r6, r0, #0x0 + mov r5, #0x1 + mov r7, #0x0 +_0201D32C: + add r0, r6, #0x0 + bl FUN_0201D7F8 + add r4, r0, #0x0 + bne _0201D33A + bl ErrorHandling +_0201D33A: + add r0, r4, #0x0 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x4 + bne _0201D34E + add r0, r4, #0x0 + add r0, #0x10 + bl FUN_0201D4F0 + b _0201D350 +_0201D34E: + add r5, r7, #0x0 +_0201D350: + cmp r5, #0x0 + bne _0201D32C + add r0, r4, #0x0 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201D36E + add r0, r4, #0x0 + bl FUN_0201D7E0 + ldr r0, _0201D370 ; =0x021C5994 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x8] + sub r0, r0, #0x1 + str r0, [r1, #0x8] +_0201D36E: + pop {r3-r7, pc} + .balign 4 +_0201D370: .word 0x021C5994 + + thumb_func_start FUN_0201D374 +FUN_0201D374: ; 0x0201D374 + push {r4-r6, lr} + ldr r6, _0201D3AC ; =0x021C5994 + mov r4, #0x0 + ldr r1, [r6, #0x0] + ldr r0, [r1, #0x4] + cmp r0, #0x0 + ble _0201D3AA + add r5, r4, #0x0 +_0201D384: + ldr r1, [r1, #0x0] + add r0, r1, r5 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201D39E + add r0, r1, r5 + bl FUN_0201D7E0 + ldr r1, [r6, #0x0] + ldr r0, [r1, #0x8] + sub r0, r0, #0x1 + str r0, [r1, #0x8] +_0201D39E: + ldr r1, [r6, #0x0] + add r4, r4, #0x1 + ldr r0, [r1, #0x4] + add r5, #0x54 + cmp r4, r0 + blt _0201D384 +_0201D3AA: + pop {r4-r6, pc} + .balign 4 +_0201D3AC: .word 0x021C5994 + + thumb_func_start FUN_0201D3B0 +FUN_0201D3B0: ; 0x0201D3B0 + push {r4, lr} + bl FUN_0201D7F8 + add r4, r0, #0x0 + bne _0201D3BE + bl ErrorHandling +_0201D3BE: + add r0, r4, #0x0 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201D3CC + mov r0, #0x0 + pop {r4, pc} +_0201D3CC: + add r4, #0x10 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201D3D4 +FUN_0201D3D4: ; 0x0201D3D4 + push {r3-r5, lr} + sub sp, #0x18 + add r5, r1, #0x0 + bl FUN_0201D7F8 + add r4, r0, #0x0 + bne _0201D3E6 + bl ErrorHandling +_0201D3E6: + add r0, r4, #0x0 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201D3F6 + add sp, #0x18 + mov r0, #0x0 + pop {r3-r5, pc} +_0201D3F6: + add r0, sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + ldr r0, [r4, #0x4] + add r1, sp, #0x14 + add r2, sp, #0x10 + add r3, r5, #0x0 + bl FUN_0201D86C + add r0, r4, #0x0 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bne _0201D41A + add sp, #0x18 + mov r0, #0x0 + pop {r3-r5, pc} +_0201D41A: + add r0, r4, #0x0 + mov r1, #0x3 + add r0, #0x3c + strb r1, [r0, #0x0] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + add r0, r4, #0x0 + bl FUN_0201D918 + mov r0, #0x1 + str r0, [r4, #0x48] + ldr r0, [sp, #0xc] + str r0, [r4, #0x4c] + ldr r0, [sp, #0x8] + str r0, [r4, #0x50] + add r0, r4, #0x0 + bl FUN_0201DA38 + ldr r0, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + bl FUN_0201D948 + add r4, #0x10 + add r0, r4, #0x0 + add sp, #0x18 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201D458 +FUN_0201D458: ; 0x0201D458 + push {r3-r5, lr} + sub sp, #0x18 + bl FUN_0201D6D8 + add r4, r0, #0x0 + bne _0201D468 + bl ErrorHandling +_0201D468: + bl FUN_0201DAAC + add r5, r0, #0x0 + bne _0201D474 + bl ErrorHandling +_0201D474: + add r0, r4, #0x0 + add r0, #0x3c + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _0201D484 + add sp, #0x18 + mov r0, #0x0 + pop {r3-r5, pc} +_0201D484: + add r3, r5, #0x0 + mov r2, #0xa +_0201D488: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0201D488 + ldr r0, [r4, #0x0] + mov r1, #0x4 + str r0, [r3, #0x0] + add r0, r5, #0x0 + add r0, #0x3c + strb r1, [r0, #0x0] + ldr r0, [r5, #0x4] + mov r1, #0x1 + tst r1, r0 + beq _0201D4A8 + ldr r3, [r5, #0x4c] + b _0201D4AA +_0201D4A8: + ldr r3, [r5, #0x50] +_0201D4AA: + add r1, sp, #0xc + str r1, [sp, #0x0] + add r1, sp, #0x8 + str r1, [sp, #0x4] + add r1, sp, #0x14 + add r2, sp, #0x10 + bl FUN_0201D86C + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_0201D918 + mov r0, #0x1 + str r0, [r5, #0x48] + ldr r0, [sp, #0xc] + str r0, [r5, #0x4c] + ldr r0, [sp, #0x8] + str r0, [r5, #0x50] + add r0, r5, #0x0 + bl FUN_0201DA38 + ldr r0, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [r5, #0x4] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + bl FUN_0201D948 + add r5, #0x10 + add r0, r5, #0x0 + add sp, #0x18 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201D4F0 +FUN_0201D4F0: ; 0x0201D4F0 + push {r4-r6, lr} + ldr r2, _0201D564 ; =0x021C5994 + mov r1, #0x0 + ldr r5, [r2, #0x0] + ldr r4, [r5, #0x4] + cmp r4, #0x0 + ble _0201D52E + ldr r2, [r5, #0x0] + add r3, r1, #0x0 +_0201D502: + add r6, r2, #0x0 + add r6, #0x3c + ldrb r6, [r6, #0x0] + cmp r6, #0x3 + beq _0201D518 + ldr r6, [r5, #0x0] + add r6, r6, r3 + add r6, #0x3c + ldrb r6, [r6, #0x0] + cmp r6, #0x4 + bne _0201D522 +_0201D518: + ldr r6, [r5, #0x0] + add r6, r6, r3 + add r6, #0x10 + cmp r6, r0 + beq _0201D52E +_0201D522: + ldr r6, [r5, #0x4] + add r1, r1, #0x1 + add r2, #0x54 + add r3, #0x54 + cmp r1, r6 + blt _0201D502 +_0201D52E: + cmp r1, r4 + bge _0201D562 + mov r0, #0x54 + add r4, r1, #0x0 + mul r4, r0 + ldr r0, [r5, #0x0] + add r0, r0, r4 + bl FUN_0201DE4C + ldr r0, _0201D564 ; =0x021C5994 + ldr r1, [r0, #0x0] + ldr r2, [r1, #0x0] + add r2, #0x3c + ldrb r1, [r2, r4] + cmp r1, #0x3 + bne _0201D554 + mov r0, #0x2 + strb r0, [r2, r4] + pop {r4-r6, pc} +_0201D554: + mov r1, #0x0 + strb r1, [r2, r4] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + add r0, r0, r4 + bl FUN_0201D690 +_0201D562: + pop {r4-r6, pc} + .balign 4 +_0201D564: .word 0x021C5994 + + thumb_func_start FUN_0201D568 +FUN_0201D568: ; 0x0201D568 + push {r3-r7, lr} + sub sp, #0x18 + add r6, r0, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + cmp r1, #0x0 + bne _0201D5A0 + add r1, r5, #0x0 + add r2, sp, #0x14 + add r3, sp, #0x10 + bl FUN_0201DF44 + add r7, r0, #0x0 + beq _0201D5E0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0201DF94 + str r5, [r4, #0x8] + str r6, [r4, #0x0] + cmp r5, #0x1 + bne _0201D59A + ldr r0, [sp, #0x14] + str r0, [r4, #0x4] + b _0201D5E0 +_0201D59A: + ldr r0, [sp, #0x10] + str r0, [r4, #0x4] + b _0201D5E0 +_0201D5A0: + add r0, sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, sp, #0x14 + add r2, sp, #0x10 + add r3, r6, #0x0 + bl FUN_0201D86C + add r7, r0, #0x0 + beq _0201D5E0 + ldr r0, [sp, #0x8] + str r0, [sp, #0x0] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_0201D948 + str r5, [r4, #0x8] + cmp r5, #0x1 + bne _0201D5D8 + ldr r0, [sp, #0xc] + str r0, [r4, #0x0] + ldr r0, [sp, #0x14] + str r0, [r4, #0x4] + b _0201D5E0 +_0201D5D8: + ldr r0, [sp, #0x8] + str r0, [r4, #0x0] + ldr r0, [sp, #0x10] + str r0, [r4, #0x4] +_0201D5E0: + add r0, r7, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201D5E8 +FUN_0201D5E8: ; 0x0201D5E8 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x8] + mov r0, #0x1 + tst r0, r1 + beq _0201D61E + ldr r1, _0201D654 ; =0x021C5994 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x2c] + bl FUN_0201DF2C + add r5, r0, #0x0 + ldr r0, _0201D654 ; =0x021C5994 + ldr r1, [r4, #0x4] + ldr r2, [r0, #0x0] + ldr r0, [r2, #0x1c] + sub r0, r1, r0 + ldr r1, [r2, #0x2c] + bl FUN_0201DF2C + ldr r2, _0201D654 ; =0x021C5994 + add r1, r5, #0x0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x34] + bl FUN_0201DDFC +_0201D61E: + ldr r1, [r4, #0x8] + mov r0, #0x2 + tst r0, r1 + beq _0201D650 + ldr r1, _0201D654 ; =0x021C5994 + ldr r0, [r4, #0x0] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x30] + bl FUN_0201DF2C + add r5, r0, #0x0 + ldr r0, _0201D654 ; =0x021C5994 + ldr r1, [r4, #0x4] + ldr r2, [r0, #0x0] + ldr r0, [r2, #0x20] + sub r0, r1, r0 + ldr r1, [r2, #0x30] + bl FUN_0201DF2C + ldr r2, _0201D654 ; =0x021C5994 + add r1, r5, #0x0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x38] + bl FUN_0201DDFC +_0201D650: + pop {r3-r5, pc} + nop +_0201D654: .word 0x021C5994 + + thumb_func_start FUN_0201D658 +FUN_0201D658: ; 0x0201D658 + push {r3, lr} + ldr r0, _0201D670 ; =0x021C5994 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201D666 + bl ErrorHandling +_0201D666: + ldr r1, _0201D670 ; =0x021C5994 + mov r2, #0x0 + ldr r0, [r1, #0x0] + str r2, [r1, #0x0] + pop {r3, pc} + .balign 4 +_0201D670: .word 0x021C5994 + + thumb_func_start FUN_0201D674 +FUN_0201D674: ; 0x0201D674 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0201D68C ; =0x021C5994 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201D684 + bl ErrorHandling +_0201D684: + ldr r0, _0201D68C ; =0x021C5994 + str r4, [r0, #0x0] + pop {r4, pc} + nop +_0201D68C: .word 0x021C5994 + + thumb_func_start FUN_0201D690 +FUN_0201D690: ; 0x0201D690 + mov r2, #0x0 + str r2, [r0, #0x0] + str r2, [r0, #0x4] + strb r2, [r0, #0x8] + sub r1, r2, #0x1 + str r1, [r0, #0xc] + str r2, [r0, #0x34] + add r1, r0, #0x0 + str r2, [r0, #0x38] + add r1, #0x3c + strb r2, [r1, #0x0] + str r2, [r0, #0x40] + ldr r3, _0201D6B0 ; =FUN_020B1A24 + add r0, #0x10 + bx r3 + nop +_0201D6B0: .word FUN_020B1A24 + + thumb_func_start FUN_0201D6B4 +FUN_0201D6B4: ; 0x0201D6B4 + ldr r2, [r0, #0x0] + str r2, [r1, #0x0] + ldr r2, [r0, #0x8] + str r2, [r1, #0xc] + ldr r2, [r0, #0x4] + str r2, [r1, #0x4] + ldr r2, [r1, #0x0] + ldr r2, [r2, #0xc] + lsr r2, r2, #0x8 + strb r2, [r1, #0x8] + ldr r0, [r0, #0xc] + str r0, [r1, #0x44] + mov r0, #0x0 + str r0, [r1, #0x48] + str r0, [r1, #0x4c] + str r0, [r1, #0x50] + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0201D6D8 +FUN_0201D6D8: ; 0x0201D6D8 + push {r3-r6} + ldr r2, _0201D720 ; =0x021C5994 + mov r1, #0x0 + ldr r5, [r2, #0x0] + ldr r4, [r5, #0x4] + cmp r4, #0x0 + ble _0201D70A + ldr r2, [r5, #0x0] + add r3, r1, #0x0 +_0201D6EA: + add r6, r2, #0x0 + add r6, #0x3c + ldrb r6, [r6, #0x0] + cmp r6, #0x0 + beq _0201D6FE + ldr r6, [r5, #0x0] + add r6, r6, r3 + add r6, #0x10 + cmp r6, r0 + beq _0201D70A +_0201D6FE: + ldr r6, [r5, #0x4] + add r1, r1, #0x1 + add r2, #0x54 + add r3, #0x54 + cmp r1, r6 + blt _0201D6EA +_0201D70A: + cmp r1, r4 + blt _0201D714 + mov r0, #0x0 + pop {r3-r6} + bx lr +_0201D714: + mov r0, #0x54 + ldr r2, [r5, #0x0] + mul r0, r1 + add r0, r2, r0 + pop {r3-r6} + bx lr + .balign 4 +_0201D720: .word 0x021C5994 + + thumb_func_start FUN_0201D724 +FUN_0201D724: ; 0x0201D724 + push {r3, lr} + ldrb r1, [r0, #0x8] + mov r2, #0x1 + cmp r1, #0x0 + beq _0201D736 + mov r1, #0x2 + add r0, #0x3c + strb r1, [r0, #0x0] + b _0201D750 +_0201D736: + add r1, r0, #0x0 + add r1, #0x3c + strb r2, [r1, #0x0] + ldr r1, [r0, #0x44] + cmp r1, #0x0 + bne _0201D74A + bl FUN_0201D754 + add r2, r0, #0x0 + b _0201D750 +_0201D74A: + bl FUN_0201D788 + add r2, r0, #0x0 +_0201D750: + add r0, r2, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0201D754 +FUN_0201D754: ; 0x0201D754 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x4] + ldr r0, [r0, #0x10] + add r2, sp, #0x4 + add r3, sp, #0x0 + bl FUN_0201DF44 + add r4, r0, #0x0 + beq _0201D780 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0201D858 + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x4] + ldr r0, [r0, #0x10] + bl FUN_0201DF94 +_0201D780: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201D788 +FUN_0201D788: ; 0x0201D788 + push {r4, lr} + sub sp, #0x18 + add r4, r0, #0x0 + add r0, sp, #0xc + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + ldr r3, [r4, #0x0] + ldr r0, [r4, #0x4] + ldr r3, [r3, #0x10] + add r1, sp, #0x14 + add r2, sp, #0x10 + bl FUN_0201D86C + cmp r0, #0x0 + bne _0201D7AE + add sp, #0x18 + mov r0, #0x0 + pop {r4, pc} +_0201D7AE: + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + add r0, r4, #0x0 + bl FUN_0201D918 + mov r0, #0x1 + str r0, [r4, #0x48] + ldr r0, [sp, #0xc] + str r0, [r4, #0x4c] + ldr r0, [sp, #0x8] + str r0, [r4, #0x50] + add r0, r4, #0x0 + bl FUN_0201D9B0 + ldr r0, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + bl FUN_0201D948 + mov r0, #0x1 + add sp, #0x18 + pop {r4, pc} + + thumb_func_start FUN_0201D7E0 +FUN_0201D7E0: ; 0x0201D7E0 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x48] + cmp r1, #0x0 + beq _0201D7EE + bl FUN_0201DE4C +_0201D7EE: + add r0, r4, #0x0 + bl FUN_0201D690 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201D7F8 +FUN_0201D7F8: ; 0x0201D7F8 + push {r4-r5} + ldr r2, _0201D82C ; =0x021C5994 + mov r1, #0x0 + ldr r5, [r2, #0x0] + ldr r2, [r5, #0x4] + cmp r2, #0x0 + ble _0201D824 + ldr r2, [r5, #0x0] + add r4, r2, #0x0 +_0201D80A: + ldr r3, [r4, #0xc] + cmp r0, r3 + bne _0201D81A + mov r0, #0x54 + mul r0, r1 + add r0, r2, r0 + pop {r4-r5} + bx lr +_0201D81A: + ldr r3, [r5, #0x4] + add r1, r1, #0x1 + add r4, #0x54 + cmp r1, r3 + blt _0201D80A +_0201D824: + mov r0, #0x0 + pop {r4-r5} + bx lr + nop +_0201D82C: .word 0x021C5994 + + thumb_func_start FUN_0201D830 +FUN_0201D830: ; 0x0201D830 + cmp r1, #0x1 + bne _0201D83C + mov r1, #0x1 + lsl r1, r1, #0x1a + ldr r2, [r1, #0x0] + b _0201D840 +_0201D83C: + ldr r1, _0201D850 ; =0x04001000 + ldr r2, [r1, #0x0] +_0201D840: + ldr r1, _0201D854 ; =0x00300010 + and r2, r1 + ldr r1, [r0, #0x0] + str r2, [r1, #0x8] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x8] + bx lr + nop +_0201D850: .word 0x04001000 +_0201D854: .word 0x00300010 + + thumb_func_start FUN_0201D858 +FUN_0201D858: ; 0x0201D858 + push {r3, lr} + str r1, [r0, #0x34] + str r2, [r0, #0x38] + ldrb r1, [r0, #0x8] + cmp r1, #0x0 + bne _0201D868 + bl FUN_0201D9B0 +_0201D868: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201D86C +FUN_0201D86C: ; 0x0201D86C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [sp, #0x1c] + add r6, r2, #0x0 + str r0, [sp, #0x1c] + mov r2, #0x1 + add r0, r5, #0x0 + add r4, r1, #0x0 + str r3, [sp, #0x0] + ldr r7, [sp, #0x18] + tst r0, r2 + beq _0201D8C4 + ldr r1, _0201D914 ; =0x021C5994 + add r0, r3, #0x0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x2c] + bl FUN_0201DF10 + ldr r1, _0201D914 ; =0x021C5994 + str r0, [r7, #0x0] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x2c] + bl FUN_0201DF2C + ldr r1, _0201D914 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x34] + bl FUN_0201DD74 + mov r1, #0x0 + mvn r1, r1 + str r0, [r4, #0x0] + cmp r0, r1 + bne _0201D8B8 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} +_0201D8B8: + ldr r1, _0201D914 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x2c] + bl FUN_0201DF3C + str r0, [r4, #0x0] +_0201D8C4: + mov r0, #0x2 + tst r0, r5 + beq _0201D90E + ldr r1, _0201D914 ; =0x021C5994 + ldr r0, [sp, #0x0] + ldr r1, [r1, #0x0] + mov r2, #0x1 + ldr r1, [r1, #0x30] + bl FUN_0201DF10 + ldr r1, [sp, #0x1c] + str r0, [r1, #0x0] + ldr r1, _0201D914 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x30] + bl FUN_0201DF2C + ldr r1, _0201D914 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x38] + bl FUN_0201DD74 + mov r1, #0x0 + mvn r1, r1 + str r0, [r6, #0x0] + cmp r0, r1 + bne _0201D902 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} +_0201D902: + ldr r1, _0201D914 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x30] + bl FUN_0201DF3C + str r0, [r6, #0x0] +_0201D90E: + mov r0, #0x1 + pop {r3-r7, pc} + nop +_0201D914: .word 0x021C5994 + + thumb_func_start FUN_0201D918 +FUN_0201D918: ; 0x0201D918 + push {r3-r4} + ldr r4, [r0, #0x4] + mov r3, #0x1 + tst r3, r4 + beq _0201D92C + ldr r3, _0201D944 ; =0x021C5994 + ldr r3, [r3, #0x0] + ldr r3, [r3, #0x1c] + add r1, r1, r3 + str r1, [r0, #0x34] +_0201D92C: + ldr r3, [r0, #0x4] + mov r1, #0x2 + tst r1, r3 + beq _0201D93E + ldr r1, _0201D944 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x20] + add r1, r2, r1 + str r1, [r0, #0x38] +_0201D93E: + pop {r3-r4} + bx lr + nop +_0201D944: .word 0x021C5994 + + thumb_func_start FUN_0201D948 +FUN_0201D948: ; 0x0201D948 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x1 + add r4, r1, #0x0 + add r6, r2, #0x0 + tst r0, r5 + beq _0201D97C + ldr r1, _0201D9AC ; =0x021C5994 + add r0, r3, #0x0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x2c] + bl FUN_0201DF2C + ldr r1, _0201D9AC ; =0x021C5994 + add r7, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x2c] + bl FUN_0201DF2C + ldr r2, _0201D9AC ; =0x021C5994 + add r1, r7, #0x0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x34] + bl FUN_0201DD18 +_0201D97C: + mov r0, #0x2 + tst r0, r5 + beq _0201D9A8 + ldr r1, _0201D9AC ; =0x021C5994 + ldr r0, [sp, #0x18] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x30] + bl FUN_0201DF2C + ldr r1, _0201D9AC ; =0x021C5994 + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + add r0, r6, #0x0 + ldr r1, [r1, #0x30] + bl FUN_0201DF2C + ldr r2, _0201D9AC ; =0x021C5994 + add r1, r4, #0x0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x38] + bl FUN_0201DD18 +_0201D9A8: + pop {r3-r7, pc} + nop +_0201D9AC: .word 0x021C5994 + + thumb_func_start FUN_0201D9B0 +FUN_0201D9B0: ; 0x0201D9B0 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x10 + blx FUN_020B1A24 + ldr r1, [r4, #0x4] + cmp r1, #0x3 + beq _0201D9C8 + add r0, r4, #0x0 + bl FUN_0201D9DC + pop {r4, pc} +_0201D9C8: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0201D9DC + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0201D9DC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201D9DC +FUN_0201D9DC: ; 0x0201D9DC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x40] + add r4, r1, #0x0 + cmp r2, #0x0 + beq _0201D9EE + bl FUN_0201D830 + b _0201D9F0 +_0201D9EE: + add r0, r4, #0x0 +_0201D9F0: + cmp r4, #0x1 + bne _0201D9FE + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r5, #0x34] + ldr r2, [r2, #0x0] + b _0201DA04 +_0201D9FE: + ldr r2, _0201DA34 ; =0x04001000 + ldr r1, [r5, #0x38] + ldr r2, [r2, #0x0] +_0201DA04: + cmp r0, #0x0 + ldr r0, [r5, #0x0] + bne _0201DA16 + add r5, #0x10 + add r2, r4, #0x0 + add r3, r5, #0x0 + blx FUN_020B1528 + b _0201DA20 +_0201DA16: + add r5, #0x10 + add r2, r4, #0x0 + add r3, r5, #0x0 + blx FUN_020B1768 +_0201DA20: + cmp r4, #0x1 + bne _0201DA2C + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r0, [r0, #0x0] + pop {r3-r5, pc} +_0201DA2C: + ldr r0, _0201DA34 ; =0x04001000 + ldr r0, [r0, #0x0] + pop {r3-r5, pc} + nop +_0201DA34: .word 0x04001000 + + thumb_func_start FUN_0201DA38 +FUN_0201DA38: ; 0x0201DA38 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x10 + blx FUN_020B1A24 + ldr r1, [r4, #0x4] + cmp r1, #0x3 + beq _0201DA50 + add r0, r4, #0x0 + bl FUN_0201DA64 + pop {r4, pc} +_0201DA50: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0201DA64 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0201DA64 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201DA64 +FUN_0201DA64: ; 0x0201DA64 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0x40] + add r4, r1, #0x0 + cmp r2, #0x0 + beq _0201DA74 + bl FUN_0201D830 +_0201DA74: + cmp r4, #0x1 + bne _0201DA82 + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r5, #0x34] + ldr r0, [r0, #0x0] + b _0201DA88 +_0201DA82: + ldr r0, _0201DAA8 ; =0x04001000 + ldr r1, [r5, #0x38] + ldr r0, [r0, #0x0] +_0201DA88: + ldr r0, [r5, #0x0] + add r5, #0x10 + add r2, r4, #0x0 + add r3, r5, #0x0 + blx FUN_020B1340 + cmp r4, #0x1 + bne _0201DAA0 + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r0, [r0, #0x0] + pop {r3-r5, pc} +_0201DAA0: + ldr r0, _0201DAA8 ; =0x04001000 + ldr r0, [r0, #0x0] + pop {r3-r5, pc} + nop +_0201DAA8: .word 0x04001000 + + thumb_func_start FUN_0201DAAC +FUN_0201DAAC: ; 0x0201DAAC + push {r3-r4} + ldr r1, _0201DAE4 ; =0x021C5994 + mov r0, #0x0 + ldr r4, [r1, #0x0] + ldr r1, [r4, #0x4] + cmp r1, #0x0 + ble _0201DADC + ldr r1, [r4, #0x0] + add r3, r1, #0x0 +_0201DABE: + add r2, r3, #0x0 + add r2, #0x3c + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _0201DAD2 + mov r2, #0x54 + mul r2, r0 + add r0, r1, r2 + pop {r3-r4} + bx lr +_0201DAD2: + ldr r2, [r4, #0x4] + add r0, r0, #0x1 + add r3, #0x54 + cmp r0, r2 + blt _0201DABE +_0201DADC: + mov r0, #0x0 + pop {r3-r4} + bx lr + nop +_0201DAE4: .word 0x021C5994 + + thumb_func_start FUN_0201DAE8 +FUN_0201DAE8: ; 0x0201DAE8 + push {r3, lr} + blx GX_GetBankForOBJ + cmp r0, #0x30 + bgt _0201DB18 + bge _0201DB60 + cmp r0, #0x10 + bgt _0201DB12 + bge _0201DB54 + cmp r0, #0x3 + bhi _0201DB90 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0201DB0A: ; jump table (using 16-bit offset) + .short _0201DB32 - _0201DB0A - 2; case 0 + .short _0201DB78 - _0201DB0A - 2; case 1 + .short _0201DB78 - _0201DB0A - 2; case 2 + .short _0201DB84 - _0201DB0A - 2; case 3 +_0201DB12: + cmp r0, #0x20 + beq _0201DB3C + b _0201DB90 +_0201DB18: + cmp r0, #0x50 + bgt _0201DB24 + bge _0201DB60 + cmp r0, #0x40 + beq _0201DB3C + b _0201DB90 +_0201DB24: + cmp r0, #0x60 + bgt _0201DB2C + beq _0201DB48 + b _0201DB90 +_0201DB2C: + cmp r0, #0x70 + beq _0201DB6C + b _0201DB90 +_0201DB32: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x14] + b _0201DB98 +_0201DB3C: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xe + str r1, [r0, #0x14] + b _0201DB98 +_0201DB48: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xe + str r1, [r0, #0x14] + b _0201DB98 +_0201DB54: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x10 + str r1, [r0, #0x14] + b _0201DB98 +_0201DB60: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x5 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xe + str r1, [r0, #0x14] + b _0201DB98 +_0201DB6C: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x6 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xe + str r1, [r0, #0x14] + b _0201DB98 +_0201DB78: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x10 + str r1, [r0, #0x14] + b _0201DB98 +_0201DB84: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x12 + str r1, [r0, #0x14] + b _0201DB98 +_0201DB90: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x14] +_0201DB98: + blx GX_GetBankForSubOBJ + cmp r0, #0x0 + beq _0201DBAE + cmp r0, #0x8 + beq _0201DBC2 + mov r1, #0x1 + lsl r1, r1, #0x8 + cmp r0, r1 + beq _0201DBB8 + b _0201DBCE +_0201DBAE: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x18] + b _0201DBD6 +_0201DBB8: + ldr r0, _0201DC38 ; =0x021C5994 + lsl r1, r1, #0x6 + ldr r0, [r0, #0x0] + str r1, [r0, #0x18] + b _0201DBD6 +_0201DBC2: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x10 + str r1, [r0, #0x18] + b _0201DBD6 +_0201DBCE: + ldr r0, _0201DC38 ; =0x021C5994 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x18] +_0201DBD6: + ldr r0, _0201DC38 ; =0x021C5994 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x24] + ldr r1, [r1, #0x2c] + bl FUN_0201DF3C + ldr r1, _0201DC38 ; =0x021C5994 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x14] + sub r0, r2, r0 + str r0, [r3, #0x1c] + ldr r1, [r1, #0x0] + ldr r0, [r1, #0x28] + ldr r1, [r1, #0x30] + bl FUN_0201DF3C + ldr r1, _0201DC38 ; =0x021C5994 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x18] + sub r0, r2, r0 + str r0, [r3, #0x20] + ldr r1, [r1, #0x0] + mov r2, #0x0 + ldr r0, [r1, #0x1c] + cmp r0, #0x0 + blt _0201DC12 + ldr r0, [r1, #0x20] + cmp r0, #0x0 + blt _0201DC12 + mov r2, #0x1 +_0201DC12: + cmp r2, #0x0 + bne _0201DC1A + bl ErrorHandling +_0201DC1A: + ldr r0, _0201DC38 ; =0x021C5994 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x1c] + cmp r0, #0x0 + blt _0201DC2E + ldr r0, [r1, #0x20] + cmp r0, #0x0 + blt _0201DC2E + mov r2, #0x1 +_0201DC2E: + cmp r2, #0x0 + bne _0201DC36 + bl ErrorHandling +_0201DC36: + pop {r3, pc} + .balign 4 +_0201DC38: .word 0x021C5994 + + thumb_func_start FUN_0201DC3C +FUN_0201DC3C: ; 0x0201DC3C + push {r3, lr} + ldr r0, _0201DC54 ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bl FUN_0201DD00 + ldr r0, _0201DC54 ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0201DD00 + pop {r3, pc} + .balign 4 +_0201DC54: .word 0x021C5994 + + thumb_func_start FUN_0201DC58 +FUN_0201DC58: ; 0x0201DC58 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _0201DCBC ; =0x021C5994 + add r4, r1, #0x0 + ldr r1, [r0, #0x0] + add r6, r2, #0x0 + str r5, [r1, #0x24] + ldr r1, [r0, #0x0] + str r4, [r1, #0x28] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + cmp r0, #0x0 + beq _0201DC76 + bl FUN_02016A18 +_0201DC76: + ldr r0, _0201DCBC ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x38] + cmp r0, #0x0 + beq _0201DC84 + bl FUN_02016A18 +_0201DC84: + ldr r0, _0201DCBC ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x24] + cmp r0, #0x0 + beq _0201DC9C + add r0, r6, #0x0 + lsr r1, r5, #0x3 + bl FUN_02016998 + ldr r1, _0201DCBC ; =0x021C5994 + ldr r1, [r1, #0x0] + str r0, [r1, #0x34] +_0201DC9C: + ldr r0, _0201DCBC ; =0x021C5994 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + cmp r0, #0x0 + beq _0201DCB4 + add r0, r6, #0x0 + lsr r1, r4, #0x3 + bl FUN_02016998 + ldr r1, _0201DCBC ; =0x021C5994 + ldr r1, [r1, #0x0] + str r0, [r1, #0x38] +_0201DCB4: + bl FUN_0201DC3C + pop {r4-r6, pc} + nop +_0201DCBC: .word 0x021C5994 + + thumb_func_start FUN_0201DCC0 +FUN_0201DCC0: ; 0x0201DCC0 + push {r3, lr} + cmp r0, #0x0 + beq _0201DCE2 + ldr r1, _0201DCE4 ; =0x021C5994 + ldr r2, [r1, #0x0] + ldr r1, [r2, #0x34] + cmp r0, r1 + bne _0201DCDA + mov r1, #0x0 + str r1, [r2, #0x24] + bl FUN_02016A18 + pop {r3, pc} +_0201DCDA: + mov r1, #0x0 + str r1, [r2, #0x28] + bl FUN_02016A18 +_0201DCE2: + pop {r3, pc} + .balign 4 +_0201DCE4: .word 0x021C5994 + + thumb_func_start FUN_0201DCE8 +FUN_0201DCE8: ; 0x0201DCE8 + ldr r1, _0201DCFC ; =0x021C5994 + ldr r2, [r1, #0x0] + ldr r1, [r2, #0x34] + cmp r0, r1 + bne _0201DCF6 + ldr r0, [r2, #0x24] + bx lr +_0201DCF6: + ldr r0, [r2, #0x28] + bx lr + nop +_0201DCFC: .word 0x021C5994 + + thumb_func_start FUN_0201DD00 +FUN_0201DD00: ; 0x0201DD00 + push {r4, lr} + add r4, r0, #0x0 + beq _0201DD16 + bl FUN_0201DCE8 + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x0 + lsr r2, r2, #0x3 + blx Call_FillMemWithValue +_0201DD16: + pop {r4, pc} + + thumb_func_start FUN_0201DD18 +FUN_0201DD18: ; 0x0201DD18 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + beq _0201DD6E + add r0, r4, #0x0 + bl FUN_0201DCE8 + add r6, r5, r6 + add r7, r0, #0x0 + cmp r5, r6 + bhs _0201DD6E +_0201DD32: + cmp r5, r7 + bhs _0201DD6E + add r0, r5, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x0 + bl FUN_0201DFE4 + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + lsl r0, r1 + ldr r1, [sp, #0x4] + ldrb r1, [r4, r1] + tst r0, r1 + beq _0201DD54 + bl ErrorHandling +_0201DD54: + add r2, sp, #0x0 + ldrb r3, [r2, #0x0] + ldr r1, [sp, #0x4] + mov r2, #0x1 + lsl r2, r3 + lsl r2, r2, #0x18 + ldrb r0, [r4, r1] + lsr r2, r2, #0x18 + add r5, r5, #0x1 + orr r0, r2 + strb r0, [r4, r1] + cmp r5, r6 + blo _0201DD32 +_0201DD6E: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201DD74 +FUN_0201DD74: ; 0x0201DD74 + push {r3-r7, lr} + sub sp, #0x10 + add r7, r0, #0x0 + str r1, [sp, #0x0] + cmp r1, #0x0 + beq _0201DDF2 + add r0, r1, #0x0 + bl FUN_0201DCE8 + mov r6, #0x0 + str r0, [sp, #0x4] + cmp r0, #0x0 + bls _0201DDF2 +_0201DD8E: + add r0, r6, #0x0 + add r1, sp, #0xc + add r2, sp, #0x8 + bl FUN_0201DFE4 + add r0, sp, #0x8 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + mov r4, #0x0 + lsl r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + b _0201DDD0 +_0201DDA8: + add r5, r6, r4 + add r0, r5, #0x0 + add r1, sp, #0xc + add r2, sp, #0x8 + bl FUN_0201DFE4 + add r0, sp, #0x8 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + lsl r0, r1 + lsl r0, r0, #0x18 + ldr r1, [sp, #0x4] + lsr r0, r0, #0x18 + cmp r5, r1 + blo _0201DDCE + mov r0, #0x0 + add sp, #0x10 + mvn r0, r0 + pop {r3-r7, pc} +_0201DDCE: + add r4, r4, #0x1 +_0201DDD0: + ldr r2, [sp, #0xc] + ldr r1, [sp, #0x0] + ldrb r1, [r1, r2] + tst r0, r1 + bne _0201DDDE + cmp r4, r7 + bls _0201DDA8 +_0201DDDE: + cmp r4, r7 + bls _0201DDE8 + add sp, #0x10 + add r0, r6, #0x0 + pop {r3-r7, pc} +_0201DDE8: + add r0, r6, r4 + add r6, r0, #0x1 + ldr r0, [sp, #0x4] + cmp r6, r0 + blo _0201DD8E +_0201DDF2: + mov r0, #0x0 + mvn r0, r0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201DDFC +FUN_0201DDFC: ; 0x0201DDFC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r2, #0x0 + beq _0201DE46 + add r6, r5, r1 + cmp r5, r6 + bhs _0201DE46 + add r7, sp, #0x0 +_0201DE0E: + add r0, r5, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x0 + bl FUN_0201DFE4 + ldrb r1, [r7, #0x0] + mov r0, #0x1 + lsl r0, r1 + ldr r1, [sp, #0x4] + ldrb r1, [r4, r1] + tst r0, r1 + bne _0201DE2A + bl ErrorHandling +_0201DE2A: + ldrb r0, [r7, #0x0] + mov r1, #0x1 + ldr r3, [sp, #0x4] + lsl r1, r0 + mov r0, #0xff + eor r0, r1 + lsl r0, r0, #0x18 + ldrb r2, [r4, r3] + lsr r0, r0, #0x18 + add r5, r5, #0x1 + and r0, r2 + strb r0, [r4, r3] + cmp r5, r6 + blo _0201DE0E +_0201DE46: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201DE4C +FUN_0201DE4C: ; 0x0201DE4C + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + mov r1, #0x1 + tst r0, r1 + beq _0201DE8A + add r0, r4, #0x0 + add r0, #0x10 + blx FUN_020B1A14 + ldr r1, _0201DECC ; =0x021C5994 + ldr r2, [r1, #0x0] + ldr r1, [r2, #0x1c] + sub r0, r0, r1 + ldr r1, [r2, #0x2c] + bl FUN_0201DF2C + ldr r1, _0201DECC ; =0x021C5994 + add r5, r0, #0x0 + ldr r1, [r1, #0x0] + ldr r0, [r4, #0x4c] + ldr r1, [r1, #0x2c] + bl FUN_0201DF2C + ldr r2, _0201DECC ; =0x021C5994 + add r1, r0, #0x0 + ldr r2, [r2, #0x0] + add r0, r5, #0x0 + ldr r2, [r2, #0x34] + bl FUN_0201DDFC +_0201DE8A: + ldr r0, [r4, #0x4] + mov r1, #0x2 + tst r0, r1 + beq _0201DEC4 + add r0, r4, #0x0 + add r0, #0x10 + blx FUN_020B1A14 + ldr r1, _0201DECC ; =0x021C5994 + ldr r2, [r1, #0x0] + ldr r1, [r2, #0x20] + sub r0, r0, r1 + ldr r1, [r2, #0x30] + bl FUN_0201DF2C + ldr r1, _0201DECC ; =0x021C5994 + add r5, r0, #0x0 + ldr r1, [r1, #0x0] + ldr r0, [r4, #0x50] + ldr r1, [r1, #0x30] + bl FUN_0201DF2C + ldr r2, _0201DECC ; =0x021C5994 + add r1, r0, #0x0 + ldr r2, [r2, #0x0] + add r0, r5, #0x0 + ldr r2, [r2, #0x38] + bl FUN_0201DDFC +_0201DEC4: + mov r0, #0x0 + str r0, [r4, #0x48] + pop {r3-r5, pc} + nop +_0201DECC: .word 0x021C5994 + + thumb_func_start FUN_0201DED0 +FUN_0201DED0: ; 0x0201DED0 + ldr r1, _0201DF04 ; =0x00100010 + cmp r0, r1 + bgt _0201DEDE + bge _0201DEF4 + cmp r0, #0x10 + beq _0201DEF0 + b _0201DF00 +_0201DEDE: + ldr r1, _0201DF08 ; =0x00200010 + cmp r0, r1 + bgt _0201DEE8 + beq _0201DEF8 + b _0201DF00 +_0201DEE8: + ldr r1, _0201DF0C ; =0x00300010 + cmp r0, r1 + beq _0201DEFC + b _0201DF00 +_0201DEF0: + mov r0, #0x1 + bx lr +_0201DEF4: + mov r0, #0x2 + bx lr +_0201DEF8: + mov r0, #0x4 + bx lr +_0201DEFC: + mov r0, #0x8 + bx lr +_0201DF00: + mov r0, #0x1 + bx lr + .balign 4 +_0201DF04: .word 0x00100010 +_0201DF08: .word 0x00200010 +_0201DF0C: .word 0x00300010 + + thumb_func_start FUN_0201DF10 +FUN_0201DF10: ; 0x0201DF10 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + blx _s32_div_f + cmp r1, #0x0 + beq _0201DF28 + sub r5, r5, r1 + cmp r6, #0x1 + bne _0201DF28 + add r5, r5, r4 +_0201DF28: + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0201DF2C +FUN_0201DF2C: ; 0x0201DF2C + asr r2, r0, #0x4 + lsr r2, r2, #0x1b + add r2, r0, r2 + ldr r3, _0201DF38 ; =_s32_div_f + asr r0, r2, #0x5 + bx r3 + .balign 4 +_0201DF38: .word _s32_div_f + + thumb_func_start FUN_0201DF3C +FUN_0201DF3C: ; 0x0201DF3C + mul r1, r0 + lsl r0, r1, #0x5 + bx lr + .balign 4 + + thumb_func_start FUN_0201DF44 +FUN_0201DF44: ; 0x0201DF44 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r1, r2, #0x0 + mov r0, #0x1 + add r2, r4, #0x0 + add r7, r3, #0x0 + tst r2, r0 + beq _0201DF6E + ldr r2, _0201DF90 ; =0x021C5994 + ldr r2, [r2, #0x0] + ldr r6, [r2, #0xc] + ldr r2, [r2, #0x1c] + add r3, r6, r5 + cmp r3, r2 + bls _0201DF6C + bl ErrorHandling + mov r0, #0x0 + b _0201DF6E +_0201DF6C: + str r6, [r1, #0x0] +_0201DF6E: + mov r1, #0x2 + tst r1, r4 + beq _0201DF8C + ldr r1, _0201DF90 ; =0x021C5994 + ldr r1, [r1, #0x0] + ldr r3, [r1, #0x10] + ldr r1, [r1, #0x20] + add r2, r3, r5 + cmp r2, r1 + bls _0201DF8A + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} +_0201DF8A: + str r3, [r7, #0x0] +_0201DF8C: + pop {r3-r7, pc} + nop +_0201DF90: .word 0x021C5994 + + thumb_func_start FUN_0201DF94 +FUN_0201DF94: ; 0x0201DF94 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r2, #0x1 + add r0, r4, #0x0 + tst r0, r2 + beq _0201DFBC + ldr r0, _0201DFE0 ; =0x021C5994 + ldr r3, [r0, #0x0] + ldr r1, [r3, #0xc] + add r1, r1, r5 + str r1, [r3, #0xc] + ldr r1, [r0, #0x0] + ldr r0, [r1, #0xc] + ldr r1, [r1, #0x2c] + bl FUN_0201DF10 + ldr r1, _0201DFE0 ; =0x021C5994 + ldr r1, [r1, #0x0] + str r0, [r1, #0xc] +_0201DFBC: + mov r0, #0x2 + tst r0, r4 + beq _0201DFDE + ldr r0, _0201DFE0 ; =0x021C5994 + ldr r2, [r0, #0x0] + ldr r1, [r2, #0x10] + add r1, r1, r5 + str r1, [r2, #0x10] + ldr r1, [r0, #0x0] + mov r2, #0x1 + ldr r0, [r1, #0x10] + ldr r1, [r1, #0x30] + bl FUN_0201DF10 + ldr r1, _0201DFE0 ; =0x021C5994 + ldr r1, [r1, #0x0] + str r0, [r1, #0x10] +_0201DFDE: + pop {r3-r5, pc} + .balign 4 +_0201DFE0: .word 0x021C5994 + + thumb_func_start FUN_0201DFE4 +FUN_0201DFE4: ; 0x0201DFE4 + asr r3, r0, #0x3 + str r3, [r1, #0x0] + mov r1, #0x7 + and r0, r1 + strb r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_0201DFF0 +FUN_0201DFF0: ; 0x0201DFF0 + push {r3-r4} + sub r0, r1, r0 + ldr r4, [sp, #0x8] + str r0, [r3, #0x0] + bpl _0201E006 + add r0, r2, r0 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r3, #0x0] + pop {r3-r4} + bx lr +_0201E006: + str r2, [r4, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201E00C +FUN_0201E00C: ; 0x0201E00C + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, _0201E064 ; =0x021C5998 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0201E060 + add r0, r4, #0x0 + mov r1, #0x28 + bl FUN_02016998 + add r1, r0, #0x0 + ldr r0, _0201E064 ; =0x021C5998 + mov r2, #0x28 + str r1, [r0, #0x0] + mov r0, #0x0 + blx MIi_CpuClear32 + ldr r0, _0201E064 ; =0x021C5998 + mov r1, #0x30 + ldr r0, [r0, #0x0] + mul r1, r6 + str r6, [r0, #0x4] + add r0, r4, #0x0 + bl FUN_02016998 + ldr r7, _0201E064 ; =0x021C5998 + mov r4, #0x0 + ldr r1, [r7, #0x0] + cmp r6, #0x0 + str r0, [r1, #0x0] + ble _0201E060 + add r5, r4, #0x0 +_0201E04E: + ldr r0, [r7, #0x0] + ldr r0, [r0, #0x0] + add r0, r0, r5 + bl FUN_0201E2F8 + add r4, r4, #0x1 + add r5, #0x30 + cmp r4, r6 + blt _0201E04E +_0201E060: + pop {r3-r7, pc} + nop +_0201E064: .word 0x021C5998 + + thumb_func_start FUN_0201E068 +FUN_0201E068: ; 0x0201E068 + cmp r1, #0x1 + bne _0201E078 + ldr r1, _0201E088 ; =0x021C5998 + ldr r2, [r1, #0x0] + ldrh r1, [r2, #0x24] + orr r0, r1 + strh r0, [r2, #0x24] + bx lr +_0201E078: + cmp r1, #0x2 + bne _0201E086 + ldr r1, _0201E088 ; =0x021C5998 + ldr r2, [r1, #0x0] + ldrh r1, [r2, #0x26] + orr r0, r1 + strh r0, [r2, #0x26] +_0201E086: + bx lr + .balign 4 +_0201E088: .word 0x021C5998 + + thumb_func_start FUN_0201E08C +FUN_0201E08C: ; 0x0201E08C + push {r3, lr} + ldr r0, _0201E0B4 ; =0x021C5998 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201E0B2 + bl FUN_0201E1F0 + ldr r0, _0201E0B4 ; =0x021C5998 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0201E0B4 ; =0x021C5998 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0201E0B4 ; =0x021C5998 + mov r1, #0x0 + str r1, [r0, #0x0] +_0201E0B2: + pop {r3, pc} + .balign 4 +_0201E0B4: .word 0x021C5998 + + thumb_func_start FUN_0201E0B8 +FUN_0201E0B8: ; 0x0201E0B8 + bx lr + .balign 4 + + thumb_func_start FUN_0201E0BC +FUN_0201E0BC: ; 0x0201E0BC + push {r3, lr} + ldr r0, _0201E0E0 ; =0x021C5998 + mov r2, #0x0 + ldr r1, [r0, #0x0] + str r2, [r1, #0xc] + ldr r1, [r0, #0x0] + str r2, [r1, #0x10] + ldr r1, [r0, #0x0] + str r2, [r1, #0x14] + ldr r0, [r0, #0x0] + str r2, [r0, #0x18] + bl FUN_0201E464 + ldr r0, _0201E0E0 ; =0x021C5998 + ldr r0, [r0, #0x0] + bl FUN_0201E574 + pop {r3, pc} + .balign 4 +_0201E0E0: .word 0x021C5998 + + thumb_func_start FUN_0201E0E4 +FUN_0201E0E4: ; 0x0201E0E4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0201E428 + add r4, r0, #0x0 + bne _0201E0F8 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0201E0F8: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201E2C4 + cmp r0, #0x0 + bne _0201E108 + mov r0, #0x0 + pop {r3-r5, pc} +_0201E108: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201E314 + cmp r0, #0x0 + bne _0201E11E + ldr r0, [r5, #0xc] + bl FUN_0201E1C8 + mov r0, #0x0 + pop {r3-r5, pc} +_0201E11E: + add r0, r4, #0x0 + bl FUN_0201E57C + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0201E128 +FUN_0201E128: ; 0x0201E128 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0201E428 + add r4, r0, #0x0 + bne _0201E13C + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0201E13C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201E2C4 + cmp r0, #0x0 + bne _0201E14C + mov r0, #0x0 + pop {r3-r5, pc} +_0201E14C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201E36C + cmp r0, #0x0 + bne _0201E162 + ldr r0, [r5, #0xc] + bl FUN_0201E1C8 + mov r0, #0x0 + pop {r3-r5, pc} +_0201E162: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201E168 +FUN_0201E168: ; 0x0201E168 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + bne _0201E174 + bl ErrorHandling +_0201E174: + add r0, r4, #0x0 + bl FUN_0201E3F0 + add r4, r0, #0x0 + bne _0201E182 + bl ErrorHandling +_0201E182: + str r5, [r4, #0x0] + ldr r1, [r4, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201E19A + ldr r3, [r4, #0x8] + ldr r1, [r4, #0x24] + ldr r2, [r5, #0xc] + mov r0, #0xe + lsl r3, r3, #0x5 + bl FUN_0201C2C8 +_0201E19A: + ldr r1, [r4, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201E1B0 + ldr r3, [r4, #0x8] + ldr r1, [r4, #0x28] + ldr r2, [r5, #0xc] + mov r0, #0x1e + lsl r3, r3, #0x5 + bl FUN_0201C2C8 +_0201E1B0: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201E1B4 +FUN_0201E1B4: ; 0x0201E1B4 + push {r3, lr} + bl FUN_0201E3F0 + cmp r0, #0x0 + beq _0201E1C2 + mov r0, #0x1 + pop {r3, pc} +_0201E1C2: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201E1C8 +FUN_0201E1C8: ; 0x0201E1C8 + push {r4, lr} + bl FUN_0201E3F0 + add r4, r0, #0x0 + bne _0201E1D6 + bl ErrorHandling +_0201E1D6: + add r0, r4, #0x0 + add r0, #0x2c + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _0201E1EC + add r0, r4, #0x0 + bl FUN_0201E5B8 + add r0, r4, #0x0 + bl FUN_0201E2BC +_0201E1EC: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201E1F0 +FUN_0201E1F0: ; 0x0201E1F0 + push {r4-r6, lr} + ldr r6, _0201E22C ; =0x021C5998 + mov r4, #0x0 + ldr r1, [r6, #0x0] + ldr r0, [r1, #0x4] + cmp r0, #0x0 + ble _0201E228 + add r5, r4, #0x0 +_0201E200: + ldr r1, [r1, #0x0] + add r0, r1, r5 + add r0, #0x2c + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _0201E21C + add r0, r1, r5 + bl FUN_0201E5B8 + ldr r0, [r6, #0x0] + ldr r0, [r0, #0x0] + add r0, r0, r5 + bl FUN_0201E2BC +_0201E21C: + ldr r1, [r6, #0x0] + add r4, r4, #0x1 + ldr r0, [r1, #0x4] + add r5, #0x30 + cmp r4, r0 + blt _0201E200 +_0201E228: + pop {r4-r6, pc} + nop +_0201E22C: .word 0x021C5998 + + thumb_func_start FUN_0201E230 +FUN_0201E230: ; 0x0201E230 + push {r3, lr} + bl FUN_0201E3F0 + cmp r0, #0x0 + bne _0201E244 + bne _0201E240 + bl ErrorHandling +_0201E240: + mov r0, #0x0 + pop {r3, pc} +_0201E244: + add r1, r0, #0x0 + add r1, #0x2c + ldrb r1, [r1, #0x0] + cmp r1, #0x1 + bne _0201E252 + add r0, #0x10 + pop {r3, pc} +_0201E252: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201E258 +FUN_0201E258: ; 0x0201E258 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0201E3F0 + cmp r0, #0x0 + bne _0201E26E + bne _0201E26A + bl ErrorHandling +_0201E26A: + mov r0, #0x0 + pop {r4, pc} +_0201E26E: + add r1, r0, #0x0 + add r1, #0x2c + ldrb r1, [r1, #0x0] + cmp r1, #0x1 + beq _0201E27C + mov r0, #0x0 + pop {r4, pc} +_0201E27C: + ldr r1, [r0, #0x0] + ldr r1, [r1, #0x4] + cmp r1, #0x0 + beq _0201E288 + mov r1, #0x1 + str r1, [r4, #0x18] +_0201E288: + add r0, #0x10 + pop {r4, pc} + + thumb_func_start FUN_0201E28C +FUN_0201E28C: ; 0x0201E28C + push {r4, lr} + ldr r2, [r0, #0x4] + cmp r2, #0x0 + beq _0201E29A + mov r4, #0x2 + lsl r4, r4, #0x8 + b _0201E2A6 +_0201E29A: + ldr r2, [r0, #0x0] + cmp r2, #0x4 + bne _0201E2A4 + mov r4, #0x0 + b _0201E2A6 +_0201E2A4: + mov r4, #0x20 +_0201E2A6: + cmp r4, #0x0 + beq _0201E2B6 + blx FUN_020B19C4 + add r1, r4, #0x0 + blx _u32_div_f + pop {r4, pc} +_0201E2B6: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201E2BC +FUN_0201E2BC: ; 0x0201E2BC + ldr r3, _0201E2C0 ; =FUN_0201E2F8 + bx r3 + .balign 4 +_0201E2C0: .word FUN_0201E2F8 + + thumb_func_start FUN_0201E2C4 +FUN_0201E2C4: ; 0x0201E2C4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0201E1B4 + cmp r0, #0x1 + bne _0201E2E0 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0201E2E0: + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + str r0, [r4, #0xc] + ldr r0, [r5, #0x4] + add r1, #0x2c + str r0, [r4, #0x4] + mov r0, #0x1 + strb r0, [r1, #0x0] + ldr r1, [r5, #0x8] + str r1, [r4, #0x8] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201E2F8 +FUN_0201E2F8: ; 0x0201E2F8 + push {r4, lr} + mov r1, #0x0 + mov r2, #0x30 + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0xc] + add r4, #0x10 + add r0, r4, #0x0 + blx FUN_020B19DC + pop {r4, pc} + + thumb_func_start FUN_0201E314 +FUN_0201E314: ; 0x0201E314 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r1, #0x0 + ldr r0, [r6, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0201E334 + ldr r0, _0201E368 ; =0x021C5998 + ldr r0, [r0, #0x0] + add r4, r0, #0x0 + add r5, r0, #0x0 + ldr r3, [r0, #0x1c] + add r4, #0x14 + add r5, #0x18 + ldr r0, [r0, #0x20] + b _0201E344 +_0201E334: + ldr r0, _0201E368 ; =0x021C5998 + mov r3, #0x2 + ldr r5, [r0, #0x0] + lsl r3, r3, #0x8 + add r4, r5, #0x0 + add r4, #0xc + add r5, #0x10 + add r0, r3, #0x0 +_0201E344: + str r0, [sp, #0x0] + ldr r1, [r4, #0x0] + ldr r2, [r5, #0x0] + add r0, r6, #0x0 + bl FUN_0201E5F4 + add r0, r6, #0x0 + bl FUN_0201E4AC + add r0, r6, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0201E640 + mov r0, #0x1 + add sp, #0x4 + pop {r3-r6, pc} + nop +_0201E368: .word 0x021C5998 + + thumb_func_start FUN_0201E36C +FUN_0201E36C: ; 0x0201E36C + push {r4-r6, lr} + add r5, r1, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0201E37C + bl ErrorHandling +_0201E37C: + ldr r1, [r5, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201E39E + ldr r0, _0201E3EC ; =0x021C5998 + ldr r1, [r5, #0x8] + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x24] + bl FUN_0201E534 + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + bne _0201E39E + mov r0, #0x0 + pop {r4-r6, pc} +_0201E39E: + ldr r1, [r5, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201E3C0 + ldr r0, _0201E3EC ; =0x021C5998 + ldr r1, [r5, #0x8] + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x26] + bl FUN_0201E534 + add r4, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _0201E3C0 + mov r0, #0x0 + pop {r4-r6, pc} +_0201E3C0: + ldr r1, [r5, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201E3CA + str r6, [r5, #0x24] +_0201E3CA: + ldr r1, [r5, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201E3D4 + str r4, [r5, #0x28] +_0201E3D4: + ldr r0, [r5, #0x8] + lsl r1, r0, #0x5 + ldr r0, [r5, #0x0] + str r1, [r0, #0x8] + add r0, r5, #0x0 + bl FUN_0201E4BC + add r0, r5, #0x0 + bl FUN_0201E57C + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0201E3EC: .word 0x021C5998 + + thumb_func_start FUN_0201E3F0 +FUN_0201E3F0: ; 0x0201E3F0 + push {r4-r5} + ldr r2, _0201E424 ; =0x021C5998 + mov r1, #0x0 + ldr r5, [r2, #0x0] + ldr r2, [r5, #0x4] + cmp r2, #0x0 + ble _0201E41C + ldr r2, [r5, #0x0] + add r4, r2, #0x0 +_0201E402: + ldr r3, [r4, #0xc] + cmp r0, r3 + bne _0201E412 + mov r0, #0x30 + mul r0, r1 + add r0, r2, r0 + pop {r4-r5} + bx lr +_0201E412: + ldr r3, [r5, #0x4] + add r1, r1, #0x1 + add r4, #0x30 + cmp r1, r3 + blt _0201E402 +_0201E41C: + mov r0, #0x0 + pop {r4-r5} + bx lr + nop +_0201E424: .word 0x021C5998 + + thumb_func_start FUN_0201E428 +FUN_0201E428: ; 0x0201E428 + push {r3-r4} + ldr r1, _0201E460 ; =0x021C5998 + mov r0, #0x0 + ldr r4, [r1, #0x0] + ldr r1, [r4, #0x4] + cmp r1, #0x0 + ble _0201E458 + ldr r1, [r4, #0x0] + add r3, r1, #0x0 +_0201E43A: + add r2, r3, #0x0 + add r2, #0x2c + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _0201E44E + mov r2, #0x30 + mul r2, r0 + add r0, r1, r2 + pop {r3-r4} + bx lr +_0201E44E: + ldr r2, [r4, #0x4] + add r0, r0, #0x1 + add r3, #0x30 + cmp r0, r2 + blt _0201E43A +_0201E458: + mov r0, #0x0 + pop {r3-r4} + bx lr + nop +_0201E460: .word 0x021C5998 + + thumb_func_start FUN_0201E464 +FUN_0201E464: ; 0x0201E464 + push {r3, lr} + blx GX_GetBankForOBJExtPltt + cmp r0, #0x20 + beq _0201E472 + cmp r0, #0x40 + bne _0201E47E +_0201E472: + ldr r0, _0201E4A8 ; =0x021C5998 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xc + str r1, [r0, #0x1c] + b _0201E486 +_0201E47E: + ldr r0, _0201E4A8 ; =0x021C5998 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x1c] +_0201E486: + blx GX_GetBankForSubOBJExtPltt + mov r1, #0x1 + lsl r1, r1, #0x8 + cmp r0, r1 + bne _0201E49C + ldr r0, _0201E4A8 ; =0x021C5998 + lsl r1, r1, #0x5 + ldr r0, [r0, #0x0] + str r1, [r0, #0x20] + pop {r3, pc} +_0201E49C: + ldr r0, _0201E4A8 ; =0x021C5998 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x20] + pop {r3, pc} + nop +_0201E4A8: .word 0x021C5998 + + thumb_func_start FUN_0201E4AC +FUN_0201E4AC: ; 0x0201E4AC + ldr r1, [r0, #0x8] + ldr r3, _0201E4B8 ; =FUN_0201E4BC + lsl r2, r1, #0x5 + ldr r1, [r0, #0x0] + str r2, [r1, #0x8] + bx r3 + .balign 4 +_0201E4B8: .word FUN_0201E4BC + + thumb_func_start FUN_0201E4BC +FUN_0201E4BC: ; 0x0201E4BC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x10 + blx FUN_020B19DC + ldr r0, [r4, #0x4] + mov r2, #0x1 + tst r0, r2 + beq _0201E4DA + add r3, r4, #0x0 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x24] + add r3, #0x10 + blx FUN_020B1240 +_0201E4DA: + ldr r0, [r4, #0x4] + mov r2, #0x2 + tst r0, r2 + beq _0201E4EE + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x28] + add r4, #0x10 + add r3, r4, #0x0 + blx FUN_020B1240 +_0201E4EE: + pop {r4, pc} + + thumb_func_start FUN_0201E4F0 +FUN_0201E4F0: ; 0x0201E4F0 + push {r4-r7} + mov r3, #0x0 + cmp r1, #0x0 + ble _0201E50E + mov r5, #0x1 +_0201E4FA: + ldrh r7, [r0, #0x0] + add r4, r2, r3 + add r6, r5, #0x0 + lsl r6, r4 + add r4, r7, #0x0 + orr r4, r6 + add r3, r3, #0x1 + strh r4, [r0, #0x0] + cmp r3, r1 + blt _0201E4FA +_0201E50E: + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_0201E514 +FUN_0201E514: ; 0x0201E514 + push {r4-r7} + mov r4, #0x0 + cmp r1, #0x0 + ble _0201E530 + mov r6, #0x1 +_0201E51E: + add r5, r2, r4 + add r7, r6, #0x0 + ldrh r3, [r0, #0x0] + lsl r7, r5 + bic r3, r7 + add r4, r4, #0x1 + strh r3, [r0, #0x0] + cmp r4, r1 + blt _0201E51E +_0201E530: + pop {r4-r7} + bx lr + + thumb_func_start FUN_0201E534 +FUN_0201E534: ; 0x0201E534 + push {r4-r7} + mov r3, #0x0 + mov r6, #0x1 + add r2, r3, #0x0 +_0201E53C: + add r4, r2, #0x0 + b _0201E546 +_0201E540: + cmp r5, #0x10 + bge _0201E554 + add r4, r4, #0x1 +_0201E546: + add r5, r3, r4 + add r7, r6, #0x0 + lsl r7, r5 + tst r7, r0 + bne _0201E554 + cmp r4, r1 + blt _0201E540 +_0201E554: + cmp r4, r1 + bge _0201E560 + add r3, r3, r4 + add r3, r3, #0x1 + cmp r3, #0x10 + blt _0201E53C +_0201E560: + cmp r3, #0x10 + blt _0201E56C + mov r0, #0x0 + mvn r0, r0 + pop {r4-r7} + bx lr +_0201E56C: + lsl r0, r3, #0x5 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_0201E574 +FUN_0201E574: ; 0x0201E574 + mov r1, #0x0 + strh r1, [r0, #0x24] + strh r1, [r0, #0x26] + bx lr + + thumb_func_start FUN_0201E57C +FUN_0201E57C: ; 0x0201E57C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201E598 + ldr r0, _0201E5B4 ; =0x021C5998 + ldr r2, [r4, #0x24] + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x8] + add r0, #0x24 + lsr r2, r2, #0x5 + bl FUN_0201E4F0 +_0201E598: + ldr r1, [r4, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201E5B0 + ldr r0, _0201E5B4 ; =0x021C5998 + ldr r2, [r4, #0x28] + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x8] + add r0, #0x26 + lsr r2, r2, #0x5 + bl FUN_0201E4F0 +_0201E5B0: + pop {r4, pc} + nop +_0201E5B4: .word 0x021C5998 + + thumb_func_start FUN_0201E5B8 +FUN_0201E5B8: ; 0x0201E5B8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + mov r0, #0x1 + tst r0, r1 + beq _0201E5D4 + ldr r0, _0201E5F0 ; =0x021C5998 + ldr r2, [r4, #0x24] + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x8] + add r0, #0x24 + lsr r2, r2, #0x5 + bl FUN_0201E514 +_0201E5D4: + ldr r1, [r4, #0x4] + mov r0, #0x2 + tst r0, r1 + beq _0201E5EC + ldr r0, _0201E5F0 ; =0x021C5998 + ldr r2, [r4, #0x28] + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x8] + add r0, #0x26 + lsr r2, r2, #0x5 + bl FUN_0201E514 +_0201E5EC: + pop {r4, pc} + nop +_0201E5F0: .word 0x021C5998 + + thumb_func_start FUN_0201E5F4 +FUN_0201E5F4: ; 0x0201E5F4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + ldr r2, [r5, #0x4] + mov r0, #0x1 + tst r2, r0 + beq _0201E61A + ldr r2, [r5, #0x8] + lsl r2, r2, #0x5 + add r2, r1, r2 + cmp r2, r3 + bls _0201E618 + bl ErrorHandling + bl FUN_0201E0B8 + mov r0, #0x0 + b _0201E61A +_0201E618: + str r1, [r5, #0x24] +_0201E61A: + ldr r2, [r5, #0x4] + mov r1, #0x2 + tst r1, r2 + beq _0201E63C + ldr r1, [r5, #0x8] + lsl r1, r1, #0x5 + add r2, r4, r1 + ldr r1, [sp, #0x10] + cmp r2, r1 + bls _0201E63A + bl ErrorHandling + bl FUN_0201E0B8 + mov r0, #0x0 + pop {r3-r5, pc} +_0201E63A: + str r4, [r5, #0x28] +_0201E63C: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201E640 +FUN_0201E640: ; 0x0201E640 + push {r3-r4} + ldr r4, [r0, #0x4] + mov r3, #0x1 + tst r3, r4 + beq _0201E654 + ldr r3, [r0, #0x8] + ldr r4, [r1, #0x0] + lsl r3, r3, #0x5 + add r3, r4, r3 + str r3, [r1, #0x0] +_0201E654: + ldr r3, [r0, #0x4] + mov r1, #0x2 + tst r1, r3 + beq _0201E666 + ldr r0, [r0, #0x8] + ldr r1, [r2, #0x0] + lsl r0, r0, #0x5 + add r0, r1, r0 + str r0, [r2, #0x0] +_0201E666: + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0201E66C +FUN_0201E66C: ; 0x0201E66C + push {r4, lr} + add r4, r0, #0x0 + blx GX_ResetBankForBG + blx GX_ResetBankForBGExtPltt + blx GX_ResetBankForSubBG + blx FUN_020C6034 + blx GX_ResetBankForOBJ + blx GX_ResetBankForOBJExtPltt + blx FUN_020C605C + blx GX_ResetBankForSubOBJ + blx GX_ResetBankForTex + blx GX_ResetBankForTexPltt + ldr r0, [r4, #0x0] + blx GX_SetBankForBG + ldr r0, [r4, #0x4] + blx GX_SetBankForBGExtPltt + ldr r0, [r4, #0x8] + blx GX_SetBankForSubBG + ldr r0, [r4, #0xc] + blx GX_SetBankForSubBGExtPltt + ldr r0, [r4, #0x10] + blx GX_SetBankForOBJ + ldr r0, [r4, #0x14] + blx GX_SetBankForOBJExtPltt + ldr r0, [r4, #0x18] + blx GX_SetBankForSubOBJ + ldr r0, [r4, #0x1c] + blx GX_SetBankForSubOBJExtPltt + ldr r0, [r4, #0x20] + blx GX_SetBankForTex + ldr r0, [r4, #0x24] + blx GX_SetBankForTexPltt + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201E6D8 +FUN_0201E6D8: ; 0x0201E6D8 + ldr r0, _0201E6E0 ; =0x021C599C + mov r1, #0x0 + str r1, [r0, #0x4] + bx lr + .balign 4 +_0201E6E0: .word 0x021C599C + + thumb_func_start FUN_0201E6E4 +FUN_0201E6E4: ; 0x0201E6E4 + cmp r1, #0x1 + bne _0201E6F2 + ldr r1, _0201E718 ; =0x021C599C + ldr r1, [r1, #0x4] + tst r1, r0 + beq _0201E6FA + bx lr +_0201E6F2: + ldr r1, _0201E718 ; =0x021C599C + ldr r1, [r1, #0x4] + tst r1, r0 + beq _0201E714 +_0201E6FA: + ldr r1, _0201E718 ; =0x021C599C + ldr r2, [r1, #0x4] + add r3, r2, #0x0 + eor r3, r0 + mov r2, #0x1 + lsl r2, r2, #0x1a + str r3, [r1, #0x4] + ldr r1, [r2, #0x0] + ldr r0, _0201E71C ; =0xFFFFE0FF + and r1, r0 + lsl r0, r3, #0x8 + orr r0, r1 + str r0, [r2, #0x0] +_0201E714: + bx lr + nop +_0201E718: .word 0x021C599C +_0201E71C: .word 0xFFFFE0FF + + thumb_func_start FUN_0201E720 +FUN_0201E720: ; 0x0201E720 + ldr r1, _0201E738 ; =0x021C599C + mov r3, #0x1 + str r0, [r1, #0x4] + lsl r3, r3, #0x1a + ldr r2, [r3, #0x0] + ldr r1, _0201E73C ; =0xFFFFE0FF + lsl r0, r0, #0x8 + and r1, r2 + orr r0, r1 + str r0, [r3, #0x0] + bx lr + nop +_0201E738: .word 0x021C599C +_0201E73C: .word 0xFFFFE0FF + + thumb_func_start FUN_0201E740 +FUN_0201E740: ; 0x0201E740 + ldr r0, _0201E748 ; =0x021C599C + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_0201E748: .word 0x021C599C + + thumb_func_start FUN_0201E74C +FUN_0201E74C: ; 0x0201E74C + cmp r1, #0x1 + bne _0201E75A + ldr r1, _0201E77C ; =0x021C599C + ldr r1, [r1, #0x0] + tst r1, r0 + beq _0201E762 + bx lr +_0201E75A: + ldr r1, _0201E77C ; =0x021C599C + ldr r1, [r1, #0x0] + tst r1, r0 + beq _0201E77A +_0201E762: + ldr r1, _0201E77C ; =0x021C599C + ldr r2, [r1, #0x0] + add r3, r2, #0x0 + eor r3, r0 + ldr r2, _0201E780 ; =0x04001000 + str r3, [r1, #0x0] + ldr r1, [r2, #0x0] + ldr r0, _0201E784 ; =0xFFFFE0FF + and r1, r0 + lsl r0, r3, #0x8 + orr r0, r1 + str r0, [r2, #0x0] +_0201E77A: + bx lr + .balign 4 +_0201E77C: .word 0x021C599C +_0201E780: .word 0x04001000 +_0201E784: .word 0xFFFFE0FF + + thumb_func_start FUN_0201E788 +FUN_0201E788: ; 0x0201E788 + push {r3, lr} + blx GX_DispOn + ldr r2, _0201E79C ; =0x04001000 + mov r0, #0x1 + ldr r1, [r2, #0x0] + lsl r0, r0, #0x10 + orr r0, r1 + str r0, [r2, #0x0] + pop {r3, pc} + .balign 4 +_0201E79C: .word 0x04001000 + + thumb_func_start FUN_0201E7A0 +FUN_0201E7A0: ; 0x0201E7A0 + ldr r0, _0201E7C0 ; =0x021C4918 + ldr r2, _0201E7C4 ; =0x04000304 + ldrb r0, [r0, #0x5] + cmp r0, #0x0 + bne _0201E7B4 + ldrh r1, [r2, #0x0] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2, #0x0] + bx lr +_0201E7B4: + ldrh r1, [r2, #0x0] + ldr r0, _0201E7C8 ; =0xFFFF7FFF + and r0, r1 + strh r0, [r2, #0x0] + bx lr + nop +_0201E7C0: .word 0x021C4918 +_0201E7C4: .word 0x04000304 +_0201E7C8: .word 0xFFFF7FFF + + thumb_func_start FUN_0201E7CC +FUN_0201E7CC: ; 0x0201E7CC + ldr r0, _0201E7D4 ; =0x021C599C + ldr r0, [r0, #0x4] + bx lr + nop +_0201E7D4: .word 0x021C599C + + thumb_func_start FUN_0201E7D8 +FUN_0201E7D8: ; 0x0201E7D8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x3e] + ldr r2, [r5, #0x38] + ldrh r4, [r5, #0x3c] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _0201E8B4 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + asr r2, r4, #0x4 + lsl r2, r2, #0x1 + add r2, r2, #0x1 + lsl r3, r2, #0x1 + ldr r2, _0201E8B4 ; =0x020FFA38 + lsl r1, r1, #0x14 + ldrsh r2, [r2, r3] + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [r5, #0x14] + ldrh r0, [r5, #0x3e] + ldr r2, [r5, #0x38] + asr r0, r0, #0x4 + lsl r0, r0, #0x1 + add r0, r0, #0x1 + lsl r1, r0, #0x1 + ldr r0, _0201E8B4 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + lsl r2, r2, #0xa + mov r3, #0x0 + add r0, r0, r2 + adc r1, r3 + ldrh r2, [r5, #0x3c] + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + asr r2, r2, #0x4 + lsl r2, r2, #0x1 + add r2, r2, #0x1 + lsl r3, r2, #0x1 + ldr r2, _0201E8B4 ; =0x020FFA38 + orr r0, r1 + ldrsh r2, [r2, r3] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + neg r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r1, [r5, #0x1c] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _0201E8B4 ; =0x020FFA38 + ldr r2, [r5, #0x38] + ldrsh r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + add r0, r5, #0x0 + str r1, [r5, #0x18] + add r0, #0x14 + add r5, #0x20 + add r1, r5, #0x0 + add r2, r0, #0x0 + blx VEC_Add + pop {r3-r5, pc} + nop +_0201E8B4: .word 0x020FFA38 + + thumb_func_start FUN_0201E8B8 +FUN_0201E8B8: ; 0x0201E8B8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x3e] + ldr r2, [r5, #0x38] + ldrh r4, [r5, #0x3c] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _0201E998 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + asr r2, r4, #0x4 + lsl r2, r2, #0x1 + add r2, r2, #0x1 + lsl r3, r2, #0x1 + ldr r2, _0201E998 ; =0x020FFA38 + lsl r1, r1, #0x14 + ldrsh r2, [r2, r3] + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + neg r0, r1 + str r0, [r5, #0x20] + ldrh r0, [r5, #0x3e] + ldr r2, [r5, #0x38] + asr r0, r0, #0x4 + lsl r0, r0, #0x1 + add r0, r0, #0x1 + lsl r1, r0, #0x1 + ldr r0, _0201E998 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + lsl r2, r2, #0xa + mov r3, #0x0 + add r0, r0, r2 + adc r1, r3 + ldrh r2, [r5, #0x3c] + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + asr r2, r2, #0x4 + lsl r2, r2, #0x1 + add r2, r2, #0x1 + lsl r3, r2, #0x1 + ldr r2, _0201E998 ; =0x020FFA38 + orr r0, r1 + ldrsh r2, [r2, r3] + asr r1, r0, #0x1f + asr r3, r2, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + neg r0, r1 + str r0, [r5, #0x28] + neg r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _0201E998 ; =0x020FFA38 + ldr r2, [r5, #0x38] + ldrsh r0, [r0, r1] + asr r3, r2, #0x1f + asr r1, r0, #0x1f + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + neg r0, r1 + str r0, [r5, #0x24] + add r0, r5, #0x0 + add r0, #0x20 + add r5, #0x14 + add r1, r5, #0x0 + add r2, r0, #0x0 + blx VEC_Add + pop {r3-r5, pc} + .balign 4 +_0201E998: .word 0x020FFA38 + + thumb_func_start FUN_0201E99C +FUN_0201E99C: ; 0x0201E99C + add r2, r1, #0x0 + add r2, #0x46 + strh r0, [r2, #0x0] + asr r0, r0, #0x4 + lsl r3, r0, #0x1 + ldr r2, _0201E9E0 ; =0x020FFA38 + lsl r0, r3, #0x1 + ldrsh r0, [r2, r0] + str r0, [r1, #0x0] + add r0, r3, #0x1 + lsl r0, r0, #0x1 + ldrsh r0, [r2, r0] + mov r2, #0x0 + str r0, [r1, #0x4] + ldr r0, _0201E9E4 ; =0x00001555 + str r0, [r1, #0x8] + mov r0, #0x96 + lsl r0, r0, #0xc + str r0, [r1, #0xc] + mov r0, #0xe1 + lsl r0, r0, #0xe + str r0, [r1, #0x10] + mov r0, #0x1 + str r2, [r1, #0x2c] + lsl r0, r0, #0xc + str r0, [r1, #0x30] + str r2, [r1, #0x34] + str r2, [r1, #0x54] + str r2, [r1, #0x58] + str r2, [r1, #0x5c] + str r2, [r1, #0x60] + str r2, [r1, #0x64] + bx lr + nop +_0201E9E0: .word 0x020FFA38 +_0201E9E4: .word 0x00001555 + + thumb_func_start FUN_0201E9E8 +FUN_0201E9E8: ; 0x0201E9E8 + ldr r2, [r0, #0x58] + cmp r2, #0x0 + bne _0201E9F2 + mov r2, #0x0 + str r2, [r1, #0x0] +_0201E9F2: + ldr r2, [r0, #0x5c] + cmp r2, #0x0 + bne _0201E9FC + mov r2, #0x0 + str r2, [r1, #0x4] +_0201E9FC: + ldr r0, [r0, #0x60] + cmp r0, #0x0 + bne _0201EA06 + mov r0, #0x0 + str r0, [r1, #0x8] +_0201EA06: + bx lr + + thumb_func_start FUN_0201EA08 +FUN_0201EA08: ; 0x0201EA08 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r7, [r5, #0x64] + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r7, #0x0 + bne _0201EA20 + ldmia r4!, {r0-r1} + stmia r6!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r6, #0x0] + pop {r3-r7, pc} +_0201EA20: + add r0, r7, #0x0 + str r0, [sp, #0x0] + add r0, #0x8 + str r0, [sp, #0x0] + ldr r0, [r7, #0x10] + cmp r0, #0x0 + bne _0201EA48 + add r3, r4, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldr r0, [r5, #0x64] + ldr r2, [r7, #0x4] + ldr r1, [r0, #0xc] + cmp r2, r1 + bne _0201EA5C + mov r1, #0x1 + str r1, [r0, #0x10] + b _0201EA5C +_0201EA48: + ldr r2, [r7, #0x4] + mov r1, #0xc + mul r1, r2 + ldr r0, [r7, #0x20] + add r2, r6, #0x0 + add r3, r0, r1 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] +_0201EA5C: + ldr r1, [r5, #0x64] + ldr r0, [r7, #0x4] + ldr r1, [r1, #0x0] + add r0, r0, #0x1 + blx _s32_div_f + str r1, [r7, #0x4] + ldr r1, [sp, #0x0] + ldr r0, [r5, #0x64] + ldr r2, [r1, #0x0] + mov r1, #0xc + ldr r0, [r0, #0x20] + mul r1, r2 + add r3, r4, #0x0 + add r2, r0, r1 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r5, #0x64] + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + add r0, r0, #0x1 + blx _s32_div_f + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + ldr r0, [r5, #0x64] + ldr r0, [r0, #0x14] + cmp r0, #0x0 + bne _0201EAA0 + ldr r0, [r4, #0x0] + str r0, [r6, #0x0] +_0201EAA0: + ldr r0, [r5, #0x64] + ldr r0, [r0, #0x18] + cmp r0, #0x0 + bne _0201EAAC + ldr r0, [r4, #0x4] + str r0, [r6, #0x4] +_0201EAAC: + ldr r0, [r5, #0x64] + ldr r0, [r0, #0x1c] + cmp r0, #0x0 + bne _0201EAB8 + ldr r0, [r4, #0x8] + str r0, [r6, #0x8] +_0201EAB8: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201EABC +FUN_0201EABC: ; 0x0201EABC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [sp, #0x18] + add r7, r1, #0x0 + str r0, [sp, #0x18] + ldr r0, [r0, #0x54] + add r6, r2, #0x0 + str r3, [sp, #0x0] + cmp r0, #0x0 + beq _0201EB46 + add r0, r7, #0x1 + cmp r0, r5 + ble _0201EADA + bl ErrorHandling +_0201EADA: + ldr r0, [sp, #0x0] + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0xc + ldr r0, [sp, #0x0] + mul r1, r5 + bl FUN_02016998 + mov r1, #0x0 + str r0, [r4, #0x20] + cmp r5, #0x0 + ble _0201EB12 + add r2, r1, #0x0 + add r0, r1, #0x0 +_0201EAFA: + ldr r3, [r4, #0x20] + add r1, r1, #0x1 + str r0, [r3, r2] + ldr r3, [r4, #0x20] + add r3, r3, r2 + str r0, [r3, #0x4] + ldr r3, [r4, #0x20] + add r3, r3, r2 + str r0, [r3, #0x8] + add r2, #0xc + cmp r1, r5 + blt _0201EAFA +_0201EB12: + str r5, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + str r7, [r4, #0x8] + str r7, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + mov r0, #0x1 + add r1, r6, #0x0 + tst r1, r0 + beq _0201EB2E + str r0, [r4, #0x14] +_0201EB2E: + mov r0, #0x2 + tst r0, r6 + beq _0201EB38 + mov r0, #0x1 + str r0, [r4, #0x18] +_0201EB38: + mov r0, #0x4 + tst r0, r6 + beq _0201EB42 + mov r0, #0x1 + str r0, [r4, #0x1c] +_0201EB42: + ldr r0, [sp, #0x18] + str r4, [r0, #0x64] +_0201EB46: + pop {r3-r7, pc} + + thumb_func_start FUN_0201EB48 +FUN_0201EB48: ; 0x0201EB48 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x64] + cmp r0, #0x0 + beq _0201EB62 + ldr r0, [r0, #0x20] + bl FUN_02016A18 + ldr r0, [r4, #0x64] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x64] +_0201EB62: + pop {r4, pc} + + thumb_func_start FUN_0201EB64 +FUN_0201EB64: ; 0x0201EB64 + ldr r3, _0201EB6C ; =FUN_02016998 + mov r1, #0x68 + bx r3 + nop +_0201EB6C: .word FUN_02016998 + + thumb_func_start FUN_0201EB70 +FUN_0201EB70: ; 0x0201EB70 + ldr r3, _0201EB74 ; =FUN_02016A18 + bx r3 + .balign 4 +_0201EB74: .word FUN_02016A18 + + thumb_func_start FUN_0201EB78 +FUN_0201EB78: ; 0x0201EB78 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0xd +_0201EB80: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0201EB80 + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201EB8C +FUN_0201EB8C: ; 0x0201EB8C + ldr r1, _0201EB94 ; =0x021C59A4 + str r0, [r1, #0x0] + bx lr + nop +_0201EB94: .word 0x021C59A4 + + thumb_func_start FUN_0201EB98 +FUN_0201EB98: ; 0x0201EB98 + ldr r0, _0201EBA0 ; =0x021C59A4 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_0201EBA0: .word 0x021C59A4 + + thumb_func_start FUN_0201EBA4 +FUN_0201EBA4: ; 0x0201EBA4 + push {r3-r6, lr} + sub sp, #0x1c + ldr r0, _0201EC40 ; =0x021C59A4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0201EC3A + ldr r0, [r1, #0x54] + cmp r0, #0x0 + beq _0201EBEE + add r1, #0x48 + add r2, sp, #0x10 + blx VEC_Subtract + ldr r0, _0201EC40 ; =0x021C59A4 + add r1, sp, #0x10 + ldr r0, [r0, #0x0] + bl FUN_0201E9E8 + ldr r0, _0201EC40 ; =0x021C59A4 + add r1, sp, #0x10 + ldr r0, [r0, #0x0] + add r2, sp, #0x4 + bl FUN_0201EA08 + ldr r1, _0201EC40 ; =0x021C59A4 + add r0, sp, #0x4 + ldr r1, [r1, #0x0] + bl FUN_0201EF70 + ldr r0, _0201EC40 ; =0x021C59A4 + ldr r3, [r0, #0x0] + ldr r2, [r3, #0x54] + add r3, #0x48 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] +_0201EBEE: + ldr r0, _0201EC40 ; =0x021C59A4 + ldr r5, _0201EC44 ; =0x021CEF58 + ldr r4, [r0, #0x0] + add r3, r4, #0x0 + add r2, r4, #0x0 + add r4, #0x14 + add r6, r4, #0x0 + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + add r2, #0x2c + str r0, [r5, #0x0] + add r6, r2, #0x0 + ldr r5, _0201EC48 ; =0x021CEF64 + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + add r3, #0x20 + str r0, [r5, #0x0] + add r6, r3, #0x0 + ldr r5, _0201EC4C ; =0x021CEF70 + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + add r1, r2, #0x0 + str r0, [r5, #0x0] + ldr r0, _0201EC50 ; =0x021CED64 + add r2, r3, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + blx G3i_LookAt_ + ldr r1, _0201EC54 ; =0x021CED98 + mov r0, #0xe8 + ldr r2, [r1, #0x7c] + bic r2, r0 + str r2, [r1, #0x7c] +_0201EC3A: + add sp, #0x1c + pop {r3-r6, pc} + nop +_0201EC40: .word 0x021C59A4 +_0201EC44: .word 0x021CEF58 +_0201EC48: .word 0x021CEF64 +_0201EC4C: .word 0x021CEF70 +_0201EC50: .word 0x021CED64 +_0201EC54: .word 0x021CED98 + + thumb_func_start FUN_0201EC58 +FUN_0201EC58: ; 0x0201EC58 + add r3, r0, #0x0 + add r2, r1, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x2c + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_0201EC68 +FUN_0201EC68: ; 0x0201EC68 + push {r3-r4} + add r3, r1, #0x0 + add r4, r0, #0x0 + str r4, [r3, #0x54] + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + add r2, #0x48 + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] + mov r0, #0x1 + str r0, [r3, #0x58] + str r0, [r3, #0x5c] + str r0, [r3, #0x60] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201EC88 +FUN_0201EC88: ; 0x0201EC88 + mov r1, #0x0 + str r1, [r0, #0x54] + str r1, [r0, #0x58] + str r1, [r0, #0x5c] + str r1, [r0, #0x60] + bx lr + + thumb_func_start FUN_0201EC94 +FUN_0201EC94: ; 0x0201EC94 + str r0, [r2, #0xc] + add r0, r2, #0x0 + str r1, [r2, #0x10] + add r0, #0x44 + ldr r3, _0201ECA4 ; =FUN_0201EE2C + ldrb r0, [r0, #0x0] + add r1, r2, #0x0 + bx r3 + .balign 4 +_0201ECA4: .word FUN_0201EE2C + + thumb_func_start FUN_0201ECA8 +FUN_0201ECA8: ; 0x0201ECA8 + push {r3-r7, lr} + ldr r4, [sp, #0x20] + add r5, r0, #0x0 + add r7, r1, #0x0 + add r0, r3, #0x0 + add r1, r4, #0x0 + add r6, r2, #0x0 + bl FUN_0201E99C + add r3, r5, #0x0 + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x20 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + str r7, [r4, #0x38] + ldrh r0, [r6, #0x0] + strh r0, [r4, #0x3c] + ldrh r0, [r6, #0x2] + strh r0, [r4, #0x3e] + add r0, r4, #0x0 + ldrh r1, [r6, #0x4] + add r0, #0x40 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + ldrh r1, [r6, #0x6] + add r0, #0x42 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_0201E7D8 + add r0, sp, #0x8 + ldrb r0, [r0, #0x10] + add r1, r4, #0x0 + bl FUN_0201EE2C + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + beq _0201ED0E + str r5, [r4, #0x54] + add r2, r4, #0x0 + ldmia r5!, {r0-r1} + add r2, #0x48 + stmia r2!, {r0-r1} + ldr r0, [r5, #0x0] + str r0, [r2, #0x0] + mov r0, #0x1 + str r0, [r4, #0x58] + str r0, [r4, #0x5c] + str r0, [r4, #0x60] +_0201ED0E: + pop {r3-r7, pc} + + thumb_func_start FUN_0201ED10 +FUN_0201ED10: ; 0x0201ED10 + push {r3-r7, lr} + ldr r4, [sp, #0x1c] + add r6, r0, #0x0 + add r7, r1, #0x0 + add r0, r3, #0x0 + add r1, r4, #0x0 + add r5, r2, #0x0 + bl FUN_0201E99C + add r2, r4, #0x0 + ldmia r6!, {r0-r1} + add r2, #0x14 + stmia r2!, {r0-r1} + ldr r0, [r6, #0x0] + str r0, [r2, #0x0] + str r7, [r4, #0x38] + ldrh r0, [r5, #0x0] + strh r0, [r4, #0x3c] + ldrh r0, [r5, #0x2] + strh r0, [r4, #0x3e] + add r0, r4, #0x0 + ldrh r1, [r5, #0x4] + add r0, #0x40 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + ldrh r1, [r5, #0x6] + add r0, #0x42 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_0201E8B8 + add r0, sp, #0x8 + ldrb r0, [r0, #0x10] + add r1, r4, #0x0 + bl FUN_0201EE2C + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201ED5C +FUN_0201ED5C: ; 0x0201ED5C + push {r4-r7, lr} + sub sp, #0x3c + ldr r4, [sp, #0x54] + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r2, #0x0 + add r1, r4, #0x0 + add r7, r3, #0x0 + bl FUN_0201E99C + add r3, r5, #0x0 + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x20 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r3, r6, #0x0 + str r0, [r2, #0x0] + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x14 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r1, r5, #0x0 + str r0, [r2, #0x0] + add r0, r6, #0x0 + add r2, sp, #0x30 + blx VEC_Subtract + add r0, sp, #0x30 + blx VEC_Mag + str r0, [r4, #0x38] + mov r6, #0x0 + add r0, sp, #0x24 + str r6, [r0, #0x0] + str r6, [r0, #0x4] + str r6, [r0, #0x8] + add r0, sp, #0x18 + str r6, [r0, #0x0] + str r6, [r0, #0x4] + str r6, [r0, #0x8] + add r0, sp, #0xc + str r6, [r0, #0x0] + str r6, [r0, #0x4] + str r6, [r0, #0x8] + mov r0, #0x1 + lsl r0, r0, #0xc + add r3, sp, #0x30 + str r0, [sp, #0x8] + ldmia r3!, {r0-r1} + add r2, sp, #0xc + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r6, [sp, #0x0] + str r0, [r2, #0x0] + str r6, [sp, #0x4] + str r6, [sp, #0x10] + add r0, sp, #0x0 + add r1, sp, #0xc + bl FUN_0201C7B0 + strh r0, [r4, #0x3e] + add r1, r6, #0x0 + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [sp, #0x0] + ldr r0, [sp, #0x38] + str r1, [sp, #0x4] + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + str r1, [sp, #0x8] + str r0, [sp, #0x14] + str r1, [sp, #0x10] + add r0, sp, #0x0 + add r1, sp, #0xc + bl FUN_0201C7B0 + strh r0, [r4, #0x3c] + add r0, r4, #0x0 + add r1, r6, #0x0 + add r0, #0x40 + strh r1, [r0, #0x0] + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_0201EE2C + ldr r0, [sp, #0x50] + cmp r0, #0x0 + beq _0201EE26 + str r5, [r4, #0x54] + add r2, r4, #0x0 + ldmia r5!, {r0-r1} + add r2, #0x48 + stmia r2!, {r0-r1} + ldr r0, [r5, #0x0] + str r0, [r2, #0x0] + mov r0, #0x1 + str r0, [r4, #0x58] + str r0, [r4, #0x5c] + str r0, [r4, #0x60] +_0201EE26: + add sp, #0x3c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0201EE2C +FUN_0201EE2C: ; 0x0201EE2C + push {r3-r6, lr} + sub sp, #0x14 + add r5, r1, #0x0 + cmp r0, #0x0 + bne _0201EE6C + ldr r0, [r5, #0x10] + str r0, [sp, #0x0] + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, _0201EEE4 ; =0x021CED20 + str r0, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + ldr r3, [r5, #0xc] + blx G3i_PerspectiveW_ + ldr r1, _0201EEE8 ; =0x021CED98 + mov r0, #0x50 + ldr r2, [r1, #0x7c] + add r5, #0x44 + bic r2, r0 + str r2, [r1, #0x7c] + mov r1, #0x0 + ldr r0, _0201EEEC ; =0x02105BB8 + strb r1, [r5, #0x0] + str r1, [r0, #0x0] + add sp, #0x14 + pop {r3-r6, pc} +_0201EE6C: + ldr r4, [r5, #0x38] + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x4] + blx FX_Div + asr r1, r0, #0x1f + asr r3, r4, #0x1f + add r2, r4, #0x0 + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsr r4, r2, #0xc + lsl r0, r1, #0x14 + orr r4, r0 + ldr r2, [r5, #0x8] + asr r1, r4, #0x1f + add r0, r4, #0x0 + asr r3, r2, #0x1f + blx _ll_mul + mov r6, #0x2 + mov r2, #0x0 + lsl r6, r6, #0xa + add r3, r0, r6 + adc r1, r2 + lsl r0, r1, #0x14 + lsr r3, r3, #0xc + orr r3, r0 + ldr r0, [r5, #0xc] + neg r1, r4 + str r0, [sp, #0x0] + ldr r0, [r5, #0x10] + str r0, [sp, #0x4] + lsl r0, r6, #0x1 + str r0, [sp, #0x8] + str r2, [sp, #0xc] + ldr r0, _0201EEE4 ; =0x021CED20 + neg r2, r3 + str r0, [sp, #0x10] + add r0, r4, #0x0 + blx G3i_OrthoW_ + ldr r1, _0201EEE8 ; =0x021CED98 + mov r0, #0x50 + ldr r2, [r1, #0x7c] + add r5, #0x44 + bic r2, r0 + str r2, [r1, #0x7c] + mov r0, #0x1 + strb r0, [r5, #0x0] + ldr r0, _0201EEEC ; =0x02105BB8 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, #0x14 + pop {r3-r6, pc} + nop +_0201EEE4: .word 0x021CED20 +_0201EEE8: .word 0x021CED98 +_0201EEEC: .word 0x02105BB8 + + thumb_func_start FUN_0201EEF0 +FUN_0201EEF0: ; 0x0201EEF0 + add r2, r1, #0x0 + add r2, #0x46 + strh r0, [r2, #0x0] + add r0, r1, #0x0 + add r0, #0x46 + ldrh r0, [r0, #0x0] + ldr r3, _0201EF24 ; =FUN_0201EE2C + asr r0, r0, #0x4 + lsl r2, r0, #0x2 + ldr r0, _0201EF28 ; =0x020FFA38 + ldrsh r2, [r0, r2] + str r2, [r1, #0x0] + add r2, r1, #0x0 + add r2, #0x46 + ldrh r2, [r2, #0x0] + asr r2, r2, #0x4 + lsl r2, r2, #0x1 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r0, [r0, r2] + str r0, [r1, #0x4] + add r0, r1, #0x0 + add r0, #0x44 + ldrb r0, [r0, #0x0] + bx r3 + nop +_0201EF24: .word FUN_0201EE2C +_0201EF28: .word 0x020FFA38 + + thumb_func_start FUN_0201EF2C +FUN_0201EF2C: ; 0x0201EF2C + add r2, r1, #0x0 + add r2, #0x46 + ldrh r2, [r2, #0x0] + ldr r3, _0201EF68 ; =FUN_0201EE2C + add r2, r2, r0 + add r0, r1, #0x0 + add r0, #0x46 + strh r2, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0x46 + ldrh r0, [r0, #0x0] + asr r0, r0, #0x4 + lsl r2, r0, #0x2 + ldr r0, _0201EF6C ; =0x020FFA38 + ldrsh r2, [r0, r2] + str r2, [r1, #0x0] + add r2, r1, #0x0 + add r2, #0x46 + ldrh r2, [r2, #0x0] + asr r2, r2, #0x4 + lsl r2, r2, #0x1 + add r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrsh r0, [r0, r2] + str r0, [r1, #0x4] + add r0, r1, #0x0 + add r0, #0x44 + ldrb r0, [r0, #0x0] + bx r3 + nop +_0201EF68: .word FUN_0201EE2C +_0201EF6C: .word 0x020FFA38 + + thumb_func_start FUN_0201EF70 +FUN_0201EF70: ; 0x0201EF70 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x14 + add r1, r5, #0x0 + add r2, r0, #0x0 + blx VEC_Add + add r4, #0x20 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + blx VEC_Add + pop {r3-r5, pc} + + thumb_func_start FUN_0201EF90 +FUN_0201EF90: ; 0x0201EF90 + ldrh r2, [r0, #0x0] + strh r2, [r1, #0x3c] + ldrh r2, [r0, #0x2] + strh r2, [r1, #0x3e] + add r2, r1, #0x0 + ldrh r3, [r0, #0x4] + add r2, #0x40 + strh r3, [r2, #0x0] + ldrh r2, [r0, #0x6] + add r0, r1, #0x0 + add r0, #0x42 + strh r2, [r0, #0x0] + ldr r3, _0201EFB0 ; =FUN_0201E7D8 + add r0, r1, #0x0 + bx r3 + nop +_0201EFB0: .word FUN_0201E7D8 + + thumb_func_start FUN_0201EFB4 +FUN_0201EFB4: ; 0x0201EFB4 + ldrh r3, [r1, #0x3c] + ldrh r2, [r0, #0x0] + add r2, r3, r2 + strh r2, [r1, #0x3c] + ldrh r3, [r1, #0x3e] + ldrh r2, [r0, #0x2] + add r2, r3, r2 + strh r2, [r1, #0x3e] + add r2, r1, #0x0 + add r2, #0x40 + ldrh r2, [r2, #0x0] + ldrh r0, [r0, #0x4] + ldr r3, _0201EFDC ; =FUN_0201E8B8 + add r2, r2, r0 + add r0, r1, #0x0 + add r0, #0x40 + strh r2, [r0, #0x0] + add r0, r1, #0x0 + bx r3 + nop +_0201EFDC: .word FUN_0201E8B8 + + thumb_func_start FUN_0201EFE0 +FUN_0201EFE0: ; 0x0201EFE0 + ldr r3, _0201EFE8 ; =FUN_0201E7D8 + str r0, [r1, #0x38] + add r0, r1, #0x0 + bx r3 + .balign 4 +_0201EFE8: .word FUN_0201E7D8 + + thumb_func_start FUN_0201EFEC +FUN_0201EFEC: ; 0x0201EFEC + push {r4, lr} + add r3, r1, #0x0 + add r4, r0, #0x0 + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + add r2, #0x20 + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] + add r0, r3, #0x0 + bl FUN_0201E7D8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F008 +FUN_0201F008: ; 0x0201F008 + add r0, #0x46 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0201F010 +FUN_0201F010: ; 0x0201F010 + ldr r0, [r0, #0x38] + bx lr + + thumb_func_start FUN_0201F014 +FUN_0201F014: ; 0x0201F014 + ldrh r2, [r1, #0x3c] + strh r2, [r0, #0x0] + ldrh r2, [r1, #0x3e] + strh r2, [r0, #0x2] + add r2, r1, #0x0 + add r2, #0x40 + ldrh r2, [r2, #0x0] + add r1, #0x42 + strh r2, [r0, #0x4] + ldrh r1, [r1, #0x0] + strh r1, [r0, #0x6] + bx lr + + thumb_func_start FUN_0201F02C +FUN_0201F02C: ; 0x0201F02C + add r2, r1, #0x0 + add r2, #0x20 + add r3, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_0201F03C +FUN_0201F03C: ; 0x0201F03C + add r2, r1, #0x0 + add r2, #0x14 + add r3, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_0201F04C +FUN_0201F04C: ; 0x0201F04C + add r3, r0, #0x0 + add r2, r1, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x20 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_0201F05C +FUN_0201F05C: ; 0x0201F05C + add r3, r0, #0x0 + add r2, r1, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x14 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_0201F06C +FUN_0201F06C: ; 0x0201F06C + mov r2, #0x0 + strb r2, [r0, #0x0] + strb r2, [r0, #0x1] + str r2, [r0, #0x4] + add r1, r0, #0x0 + str r2, [r0, #0x8] + add r1, #0xc4 + str r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0xc8 + str r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0xcc + str r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0xd0 + str r2, [r1, #0x0] + strb r2, [r0, #0x3] + bx lr + .balign 4 + + thumb_func_start FUN_0201F094 +FUN_0201F094: ; 0x0201F094 + mov r3, #0x0 + str r3, [r0, #0x1c] + str r3, [r0, #0x20] + str r3, [r0, #0x78] + add r1, r0, #0x0 + str r3, [r0, #0x7c] + add r1, #0x80 + str r3, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x84 + add r2, r0, #0x0 + str r3, [r1, #0x0] + add r2, #0x94 + mov r1, #0x10 +_0201F0B0: + strb r3, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0201F0B0 + add r2, r0, #0x0 + mov r1, #0x0 + add r2, #0x88 + str r1, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0x8c + str r1, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0x90 + str r1, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0xa4 + str r1, [r2, #0x0] + str r1, [r0, #0x0] + str r1, [r0, #0x4] + mov r2, #0x1 + str r1, [r0, #0x8] + lsl r2, r2, #0xc + str r2, [r0, #0xc] + str r2, [r0, #0x10] + str r2, [r0, #0x14] + add r2, r0, #0x0 + add r2, #0xaa + strh r1, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0xa8 + strb r1, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0xb0 + str r1, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0xb4 + str r1, [r2, #0x0] + strb r1, [r0, #0x18] + bx lr + .balign 4 + + thumb_func_start FUN_0201F100 +FUN_0201F100: ; 0x0201F100 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, _0201F13C ; =0x021C59A8 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201F112 + bl ErrorHandling +_0201F112: + mov r1, #0xd4 + add r0, r4, #0x0 + mul r1, r6 + bl FUN_02016998 + ldr r7, _0201F13C ; =0x021C59A8 + mov r4, #0x0 + str r0, [r7, #0x0] + str r6, [r7, #0x4] + cmp r6, #0x0 + ble _0201F13A + add r5, r4, #0x0 +_0201F12A: + ldr r0, [r7, #0x0] + add r0, r0, r5 + bl FUN_0201F06C + add r4, r4, #0x1 + add r5, #0xd4 + cmp r4, r6 + blt _0201F12A +_0201F13A: + pop {r3-r7, pc} + .balign 4 +_0201F13C: .word 0x021C59A8 + + thumb_func_start FUN_0201F140 +FUN_0201F140: ; 0x0201F140 + push {r4-r6, lr} + ldr r6, _0201F174 ; =0x021C59A8 + mov r4, #0x0 + ldr r0, [r6, #0x4] + cmp r0, #0x0 + ble _0201F160 + add r5, r4, #0x0 +_0201F14E: + ldr r0, [r6, #0x0] + add r0, r0, r5 + bl FUN_0201F23C + ldr r0, [r6, #0x4] + add r4, r4, #0x1 + add r5, #0xd4 + cmp r4, r0 + blt _0201F14E +_0201F160: + ldr r0, _0201F174 ; =0x021C59A8 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0201F174 ; =0x021C59A8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + pop {r4-r6, pc} + nop +_0201F174: .word 0x021C59A8 + + thumb_func_start FUN_0201F178 +FUN_0201F178: ; 0x0201F178 + push {r3-r7, lr} + ldr r6, _0201F1B0 ; =0x021C59A8 + mov r4, #0x0 + ldr r0, [r6, #0x4] + cmp r0, #0x0 + ble _0201F1AC + add r5, r4, #0x0 + mov r7, #0x2 +_0201F188: + ldr r0, [r6, #0x0] + add r0, r0, r5 + ldrb r1, [r0, #0x1] + cmp r1, #0x1 + bne _0201F196 + bl FUN_0201F318 +_0201F196: + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldrb r0, [r1, #0x3] + cmp r0, #0x1 + bne _0201F1A2 + strb r7, [r1, #0x3] +_0201F1A2: + ldr r0, [r6, #0x4] + add r4, r4, #0x1 + add r5, #0xd4 + cmp r4, r0 + blt _0201F188 +_0201F1AC: + pop {r3-r7, pc} + nop +_0201F1B0: .word 0x021C59A8 + + thumb_func_start FUN_0201F1B4 +FUN_0201F1B4: ; 0x0201F1B4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0201F2E4 + add r4, r0, #0x0 + bne _0201F1C8 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0201F1C8: + mov r0, #0x1 + strb r0, [r4, #0x0] + strb r0, [r4, #0x1] + ldr r2, [r5, #0x0] + mov r1, #0xb8 + ldr r0, [r5, #0x4] + mul r1, r2 + bl FUN_02016998 + str r0, [r4, #0x4] + ldr r0, [r5, #0x0] + str r0, [r4, #0x8] + add r0, r4, #0x0 + add r0, #0xc + bl FUN_0201F094 + add r1, r4, #0x0 + add r0, r4, #0x0 + add r1, #0xc + add r0, #0xbc + str r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0xc0 + str r1, [r0, #0x0] + ldr r1, [r5, #0x0] + ldr r0, [r5, #0x4] + lsl r1, r1, #0x2 + bl FUN_02016998 + add r1, r4, #0x0 + add r1, #0xc4 + str r0, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_0201FABC + ldr r0, [r5, #0x4] + mov r1, #0x10 + bl FUN_02016998 + add r1, r4, #0x0 + add r1, #0xcc + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0xcc + ldr r0, [r0, #0x0] + ldr r1, [r5, #0x4] + mov r2, #0x4 + bl FUN_02016B20 + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x4] + bl FUN_0201C360 + add r1, r4, #0x0 + add r1, #0xd0 + str r0, [r1, #0x0] + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0201F23C +FUN_0201F23C: ; 0x0201F23C + push {r4, lr} + add r4, r0, #0x0 + bne _0201F24A + bl ErrorHandling + mov r0, #0x0 + pop {r4, pc} +_0201F24A: + ldrb r1, [r4, #0x0] + cmp r1, #0x0 + beq _0201F27E + bl FUN_0201F284 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + add r0, r4, #0x0 + add r0, #0xc4 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + add r0, #0xcc + ldr r0, [r0, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + bl FUN_0201C39C + add r0, r4, #0x0 + bl FUN_0201F06C +_0201F27E: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F284 +FUN_0201F284: ; 0x0201F284 + push {r3-r5, lr} + cmp r0, #0x0 + bne _0201F294 + bne _0201F290 + bl ErrorHandling +_0201F290: + mov r0, #0x0 + pop {r3-r5, pc} +_0201F294: + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + beq _0201F2BA + add r1, r0, #0x0 + add r1, #0xbc + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + add r4, #0xc + cmp r1, r4 + beq _0201F2BA +_0201F2A8: + add r0, r1, #0x0 + add r0, #0xb0 + ldr r5, [r0, #0x0] + add r0, r1, #0x0 + bl FUN_0201F744 + add r1, r5, #0x0 + cmp r5, r4 + bne _0201F2A8 +_0201F2BA: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F2C0 +FUN_0201F2C0: ; 0x0201F2C0 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F2CA + bl ErrorHandling +_0201F2CA: + ldrb r0, [r4, #0x3] + cmp r0, #0x0 + bne _0201F2D4 + mov r0, #0x0 + pop {r4, pc} +_0201F2D4: + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0201F2D8 +FUN_0201F2D8: ; 0x0201F2D8 + ldrb r1, [r0, #0x3] + cmp r1, #0x2 + bne _0201F2E2 + mov r1, #0x0 + strb r1, [r0, #0x3] +_0201F2E2: + bx lr + + thumb_func_start FUN_0201F2E4 +FUN_0201F2E4: ; 0x0201F2E4 + push {r3-r4} + ldr r0, _0201F314 ; =0x021C59A8 + mov r1, #0x0 + ldr r3, [r0, #0x4] + cmp r3, #0x0 + ble _0201F30C + ldr r4, [r0, #0x0] + add r2, r4, #0x0 +_0201F2F4: + ldrb r0, [r2, #0x0] + cmp r0, #0x0 + bne _0201F304 + mov r0, #0xd4 + mul r0, r1 + add r0, r4, r0 + pop {r3-r4} + bx lr +_0201F304: + add r1, r1, #0x1 + add r2, #0xd4 + cmp r1, r3 + blt _0201F2F4 +_0201F30C: + mov r0, #0x0 + pop {r3-r4} + bx lr + nop +_0201F314: .word 0x021C59A8 + + thumb_func_start FUN_0201F318 +FUN_0201F318: ; 0x0201F318 + push {r3-r6, lr} + sub sp, #0x24 + add r5, r0, #0x0 + bne _0201F324 + bl ErrorHandling +_0201F324: + add r0, sp, #0x0 + blx MTX_Identity33_ + add r0, r5, #0x0 + add r0, #0xbc + ldr r4, [r0, #0x0] + add r5, #0xc + cmp r4, r5 + beq _0201F37E + add r6, sp, #0x0 +_0201F338: + ldrb r0, [r4, #0x18] + cmp r0, #0x1 + bne _0201F376 + add r0, r4, #0x0 + bl FUN_0201FC54 + add r0, r4, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bne _0201F356 + add r0, r4, #0x0 + bl FUN_0201F90C + b _0201F360 +_0201F356: + cmp r0, #0x2 + bne _0201F360 + add r0, r4, #0x0 + bl FUN_0201F8F0 +_0201F360: + add r0, r4, #0x0 + add r3, r4, #0x0 + add r0, #0x24 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, #0xc + bl FUN_0201B26C + add r0, r4, #0x0 + bl FUN_0201FC70 +_0201F376: + add r4, #0xb0 + ldr r4, [r4, #0x0] + cmp r4, r5 + bne _0201F338 +_0201F37E: + add sp, #0x24 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0201F384 +FUN_0201F384: ; 0x0201F384 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r6, [r5, #0x1c] + add r4, r1, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0201F5B8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201F5D4 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0201F648 + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _0201F3BA + add r6, #0xc + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0201FB58 +_0201F3BA: + add r0, r5, #0x0 + mov r1, #0x2 + add r0, #0xa8 + strb r1, [r0, #0x0] + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r0, [r5, #0x20] + add r0, r5, #0x0 + add r0, #0xaa + strh r1, [r0, #0x0] + add r5, #0xac + str r1, [r5, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0201F3D4 +FUN_0201F3D4: ; 0x0201F3D4 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r6, [r5, #0x1c] + add r4, r1, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0201F5B8 + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0201F3FE + add r0, r5, #0x0 + add r1, r5, #0x0 + add r2, r5, #0x0 + add r0, #0x88 + add r1, #0x8c + add r2, #0x90 + bl FUN_0201F524 +_0201F3FE: + add r0, r5, #0x0 + ldr r1, [r4, #0x1c] + add r0, #0x88 + str r1, [r0, #0x0] + add r0, r5, #0x0 + ldr r1, [r4, #0x20] + add r0, #0x8c + str r1, [r0, #0x0] + add r0, r5, #0x0 + ldr r1, [r4, #0x24] + add r0, #0x90 + str r1, [r0, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201F69C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201F6C8 + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _0201F43A + add r6, #0xc + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0201FB58 +_0201F43A: + add r0, r5, #0x0 + mov r1, #0x3 + add r0, #0xa8 + strb r1, [r0, #0x0] + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r0, [r5, #0x20] + add r0, r5, #0x0 + add r0, #0xaa + strh r1, [r0, #0x0] + add r5, #0xac + str r1, [r5, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0201F454 +FUN_0201F454: ; 0x0201F454 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + blx FUN_020B7E1C + str r0, [sp, #0x8] + add r0, r5, #0x0 + blx FUN_020B7E10 + str r0, [sp, #0x4] + add r0, r5, #0x0 + blx FUN_020B7CE4 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _0201F492 + ldr r3, _0201F4E4 ; =0x021064B8 + mov r1, #0x0 + ldr r3, [r3, #0x0] + add r2, r1, #0x0 + blx r3 + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _0201F496 + bl ErrorHandling + b _0201F496 +_0201F492: + mov r0, #0x0 + str r0, [r4, #0x0] +_0201F496: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _0201F4B2 + ldr r3, _0201F4E4 ; =0x021064B8 + mov r1, #0x1 + ldr r3, [r3, #0x0] + mov r2, #0x0 + blx r3 + str r0, [r6, #0x0] + cmp r0, #0x0 + bne _0201F4B6 + bl ErrorHandling + b _0201F4B6 +_0201F4B2: + mov r0, #0x0 + str r0, [r6, #0x0] +_0201F4B6: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _0201F4DA + ldr r3, _0201F4E8 ; =0x021064C0 + mov r1, #0x2 + ldrh r2, [r5, #0x20] + lsl r1, r1, #0xe + ldr r3, [r3, #0x0] + and r1, r2 + mov r2, #0x0 + blx r3 + str r0, [r7, #0x0] + cmp r0, #0x0 + bne _0201F4DE + bl ErrorHandling + add sp, #0xc + pop {r4-r7, pc} +_0201F4DA: + mov r0, #0x0 + str r0, [r7, #0x0] +_0201F4DE: + add sp, #0xc + pop {r4-r7, pc} + nop +_0201F4E4: .word 0x021064B8 +_0201F4E8: .word 0x021064C0 + + thumb_func_start FUN_0201F4EC +FUN_0201F4EC: ; 0x0201F4EC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r3, #0x0 + blx FUN_020B7CF0 + add r0, r5, #0x0 + blx FUN_020B7C58 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201F500 +FUN_0201F500: ; 0x0201F500 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, [r2, #0x0] + ldr r2, [r3, #0x0] + add r5, r0, #0x0 + blx FUN_020B7DFC + ldr r1, [sp, #0x10] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + blx FUN_020B7CDC + add r0, r4, #0x0 + add r1, r5, #0x0 + blx FUN_020B7790 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F524 +FUN_0201F524: ; 0x0201F524 + push {r3-r5, lr} + ldr r0, [r0, #0x0] + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r0, #0x0 + beq _0201F536 + ldr r1, _0201F550 ; =0x021064BC + ldr r1, [r1, #0x0] + blx r1 +_0201F536: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _0201F542 + ldr r1, _0201F550 ; =0x021064BC + ldr r1, [r1, #0x0] + blx r1 +_0201F542: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0201F54E + ldr r1, _0201F554 ; =0x021064C4 + ldr r1, [r1, #0x0] + blx r1 +_0201F54E: + pop {r3-r5, pc} + .balign 4 +_0201F550: .word 0x021064BC +_0201F554: .word 0x021064C4 + + thumb_func_start FUN_0201F558 +FUN_0201F558: ; 0x0201F558 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r4, #0x0 + beq _0201F568 + cmp r5, #0x0 + bne _0201F56E +_0201F568: + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0201F56E: + blx FUN_020B7E1C + str r0, [sp, #0x0] + add r0, r4, #0x0 + blx FUN_020B7E10 + str r0, [sp, #0x4] + add r0, r4, #0x0 + blx FUN_020B7CE4 + add r4, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7E1C + add r6, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7E10 + add r7, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7CE4 + ldr r1, [sp, #0x0] + cmp r1, r6 + bne _0201F5AA + ldr r1, [sp, #0x4] + cmp r1, r7 + bne _0201F5AA + cmp r4, r0 + beq _0201F5B0 +_0201F5AA: + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0201F5B0: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201F5B8 +FUN_0201F5B8: ; 0x0201F5B8 + push {r4, lr} + add r4, r1, #0x0 + add r0, r4, #0x0 + add r0, #0xa4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0201F5D0 + bl FUN_0201C40C + mov r0, #0x0 + add r4, #0xa4 + str r0, [r4, #0x0] +_0201F5D0: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F5D4 +FUN_0201F5D4: ; 0x0201F5D4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x80 + ldr r4, [r0, #0x0] + add r0, r1, #0x0 + add r1, r5, #0x0 + add r2, r5, #0x0 + add r1, #0x7c + add r2, #0x80 + bl FUN_0201FB9C + str r0, [r5, #0x78] + add r0, r5, #0x0 + ldr r1, [r5, #0x7c] + add r0, #0x24 + blx FUN_020B80B4 + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _0201F60E + add r1, r5, #0x0 + add r1, #0x80 + ldr r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_0201F558 + b _0201F610 +_0201F60E: + mov r0, #0x0 +_0201F610: + cmp r0, #0x0 + bne _0201F644 + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0201F62E + add r0, r5, #0x0 + add r1, r5, #0x0 + add r2, r5, #0x0 + add r0, #0x88 + add r1, #0x8c + add r2, #0x90 + bl FUN_0201F524 +_0201F62E: + add r0, r5, #0x0 + add r0, #0x80 + add r1, r5, #0x0 + add r2, r5, #0x0 + add r5, #0x90 + ldr r0, [r0, #0x0] + add r1, #0x88 + add r2, #0x8c + add r3, r5, #0x0 + bl FUN_0201F454 +_0201F644: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F648 +FUN_0201F648: ; 0x0201F648 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r2, #0x0 + add r6, r0, #0x0 + add r5, r1, #0x0 + add r0, r4, #0x0 + bl FUN_0201FBCC + add r1, r5, #0x0 + add r1, #0x84 + add r3, r5, #0x0 + add r3, #0x94 + str r0, [r1, #0x0] + add r4, #0xc + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r5, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + add r1, r2, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r0, #0xac + ldr r0, [r0, #0x0] + add r2, r5, #0x0 + add r3, r5, #0x0 + str r0, [sp, #0x4] + add r6, #0xd0 + add r2, #0x84 + add r3, #0x88 + ldr r0, [r6, #0x0] + ldr r2, [r2, #0x0] + ldr r3, [r3, #0x0] + bl FUN_0201C3B4 + add r5, #0xa4 + str r0, [r5, #0x0] + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_0201F69C +FUN_0201F69C: ; 0x0201F69C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x0 + add r2, r5, #0x0 + add r0, r4, #0x0 + add r1, #0x7c + add r2, #0x80 + bl FUN_0201FB9C + str r0, [r5, #0x78] + add r0, r5, #0x0 + ldr r1, [r5, #0x7c] + add r0, #0x24 + blx FUN_020B80B4 + add r0, r4, #0x0 + bl FUN_0201FBCC + add r5, #0x84 + str r0, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201F6C8 +FUN_0201F6C8: ; 0x0201F6C8 + push {r3-r4} + add r4, r0, #0x0 + add r2, r4, #0x0 + add r3, r1, #0x0 + add r3, #0xc + add r2, #0x94 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r0, #0x0 + add r4, #0xa4 + str r0, [r4, #0x0] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0201F6E8 +FUN_0201F6E8: ; 0x0201F6E8 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r6, [r5, #0x0] + cmp r6, #0x0 + bne _0201F6F6 + mov r0, #0x0 + pop {r4-r6, pc} +_0201F6F6: + add r0, r6, #0x0 + bl FUN_0201FAF4 + add r4, r0, #0x0 + bne _0201F704 + mov r0, #0x0 + pop {r4-r6, pc} +_0201F704: + add r3, r5, #0x0 + str r6, [r4, #0x1c] + add r3, #0x8 + ldmia r3!, {r0-r1} + add r2, r4, #0x0 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r3, r5, #0x0 + str r0, [r2, #0x0] + add r3, #0x14 + add r2, r4, #0x0 + ldmia r3!, {r0-r1} + add r2, #0xc + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + mov r1, #0x0 + str r0, [r2, #0x0] + add r0, r4, #0x0 + add r0, #0xaa + strh r1, [r0, #0x0] + mov r1, #0x1 + add r0, r4, #0x0 + strb r1, [r4, #0x18] + add r0, #0xa8 + strb r1, [r0, #0x0] + ldr r1, [r5, #0x4] + add r0, r4, #0x0 + bl FUN_0201FBD8 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0201F744 +FUN_0201F744: ; 0x0201F744 + push {r3-r5, lr} + add r5, r0, #0x0 + bne _0201F74E + bl ErrorHandling +_0201F74E: + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _0201F75C + bl ErrorHandling +_0201F75C: + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + ldr r4, [r5, #0x1c] + cmp r0, #0x0 + bne _0201F76C + mov r0, #0x0 + pop {r3-r5, pc} +_0201F76C: + add r0, r5, #0x0 + bl FUN_0201FB7C + add r0, r5, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0201F78C + add r0, r5, #0x0 + add r1, r5, #0x0 + add r2, r5, #0x0 + add r0, #0x88 + add r1, #0x8c + add r2, #0x90 + bl FUN_0201F524 +_0201F78C: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0201F5B8 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0201FB20 + mov r0, #0x1 + strb r0, [r4, #0x3] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F7A4 +FUN_0201F7A4: ; 0x0201F7A4 + push {r3-r4} + add r4, r0, #0x0 + str r1, [r4, #0x0] + str r2, [r4, #0x4] + str r3, [r4, #0x8] + ldr r3, [sp, #0x8] + add r2, r4, #0x0 + add r2, #0xc + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r0, #0x0 + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0201F7C8 +FUN_0201F7C8: ; 0x0201F7C8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r4, #0x0 + bne _0201F7D6 + bl ErrorHandling +_0201F7D6: + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r5, #0x0] + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201F7E0 +FUN_0201F7E0: ; 0x0201F7E0 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F7EA + bl ErrorHandling +_0201F7EA: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F7F0 +FUN_0201F7F0: ; 0x0201F7F0 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r4, #0x0 + bne _0201F7FE + bl ErrorHandling +_0201F7FE: + ldmia r5!, {r0-r1} + add r4, #0xc + stmia r4!, {r0-r1} + ldr r0, [r5, #0x0] + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F80C +FUN_0201F80C: ; 0x0201F80C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0201F81A + bl ErrorHandling +_0201F81A: + strb r4, [r5, #0x18] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F820 +FUN_0201F820: ; 0x0201F820 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F82A + bl ErrorHandling +_0201F82A: + ldrb r0, [r4, #0x18] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F830 +FUN_0201F830: ; 0x0201F830 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0201F83E + bl ErrorHandling +_0201F83E: + add r5, #0xaa + strh r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201F844 +FUN_0201F844: ; 0x0201F844 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F84E + bl ErrorHandling +_0201F84E: + add r4, #0xaa + ldrh r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_0201F854 +FUN_0201F854: ; 0x0201F854 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0201F862 + bl ErrorHandling +_0201F862: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0201FBFC + pop {r3-r5, pc} + + thumb_func_start FUN_0201F86C +FUN_0201F86C: ; 0x0201F86C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0201F87A + bl ErrorHandling +_0201F87A: + add r5, #0xac + str r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0201F880 +FUN_0201F880: ; 0x0201F880 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F88A + bl ErrorHandling +_0201F88A: + add r4, #0xac + ldr r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_0201F890 +FUN_0201F890: ; 0x0201F890 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0201F89E + bl ErrorHandling +_0201F89E: + add r1, r5, #0x0 + add r1, #0xaa + ldrh r1, [r1, #0x0] + add r0, r5, #0x0 + bl FUN_0201FBEC + add r1, r5, #0x0 + add r1, #0xac + str r0, [r1, #0x0] + add r0, r5, #0x0 + add r0, #0xac + ldr r0, [r0, #0x0] + add r5, #0xac + add r0, r0, r4 + str r0, [r5, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201F8C0 +FUN_0201F8C0: ; 0x0201F8C0 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F8CA + bl ErrorHandling +_0201F8CA: + add r1, r4, #0x0 + add r1, #0xaa + ldrh r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_0201FBEC + add r4, #0xac + ldr r1, [r4, #0x0] + sub r0, r1, r0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F8E0 +FUN_0201F8E0: ; 0x0201F8E0 + push {r4, lr} + add r4, r0, #0x0 + bne _0201F8EA + bl ErrorHandling +_0201F8EA: + ldr r0, [r4, #0x7c] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201F8F0 +FUN_0201F8F0: ; 0x0201F8F0 + push {r3, lr} + add r1, r0, #0x0 + add r0, #0xa8 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0201F90A + add r0, r1, #0x0 + add r0, #0xa4 + add r1, #0xac + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + bl FUN_0201C438 +_0201F90A: + pop {r3, pc} + + thumb_func_start FUN_0201F90C +FUN_0201F90C: ; 0x0201F90C + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0xac + ldr r1, [r1, #0x0] + add r0, #0x94 + lsl r1, r1, #0x4 + lsr r1, r1, #0x10 + bl FUN_02022244 + add r2, sp, #0x0 + strb r0, [r2, #0x0] + lsr r0, r0, #0x8 + strb r0, [r2, #0x1] + ldrb r0, [r2, #0x0] + add r1, r4, #0x0 + add r1, #0x84 + strb r0, [r2, #0x2] + ldrb r0, [r2, #0x1] + strb r0, [r2, #0x3] + ldrb r2, [r2, #0x2] + ldr r0, [r4, #0x7c] + ldr r1, [r1, #0x0] + bl FUN_0201F954 + add r2, sp, #0x0 + ldr r0, [r4, #0x7c] + add r4, #0x84 + ldrb r2, [r2, #0x3] + ldr r1, [r4, #0x0] + bl FUN_0201FA04 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201F954 +FUN_0201F954: ; 0x0201F954 + push {r3-r7, lr} + ldr r3, [r0, #0x8] + mov r5, #0x0 + add r6, r0, r3 + ldrh r0, [r0, r3] + add r3, r1, #0x0 + add r1, #0x42 + ldrh r1, [r1, #0x0] + add r3, #0x3c + add r4, r6, r0 + add r0, r3, r1 + ldrh r1, [r3, r1] + mul r2, r1 + add r0, r0, r2 + ldr r0, [r0, #0x4] + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldrb r0, [r4, #0x1] + cmp r0, #0x0 + ble _0201F9A2 +_0201F97C: + ldrh r0, [r4, #0x6] + add r1, r4, r0 + ldrh r0, [r4, r0] + add r2, r1, #0x4 + add r1, r0, #0x0 + mul r1, r5 + add r1, r2, r1 + ldrb r2, [r1, #0x3] + mov r0, #0x1 + tst r0, r2 + beq _0201F99A + add r0, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0201F9A4 +_0201F99A: + ldrb r0, [r4, #0x1] + add r5, r5, #0x1 + cmp r5, r0 + blt _0201F97C +_0201F9A2: + pop {r3-r7, pc} + + thumb_func_start FUN_0201F9A4 +FUN_0201F9A4: ; 0x0201F9A4 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r0, r1, #0x0 + ldrh r0, [r0, #0x0] + str r1, [sp, #0x0] + add r7, r2, #0x0 + add r0, r6, r0 + str r0, [sp, #0x4] + add r0, r1, #0x0 + ldrb r0, [r0, #0x2] + mov r4, #0x0 + cmp r0, #0x0 + ble _0201F9FC + add r0, r6, #0x4 + str r0, [sp, #0x8] +_0201F9C4: + ldrh r2, [r6, #0xa] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x8] + add r0, r0, r2 + ldrh r2, [r1, r2] + ldr r1, [sp, #0x4] + ldrb r1, [r1, r4] + mul r1, r2 + add r0, r0, r1 + ldr r0, [r0, #0x4] + add r5, r6, r0 + ldr r0, [r5, #0x14] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r0, r7 + ldr r0, _0201FA00 ; =0x0000FFFF + cmp r1, r0 + bls _0201F9EC + bl ErrorHandling +_0201F9EC: + ldr r0, [r5, #0x14] + add r4, r4, #0x1 + add r0, r0, r7 + str r0, [r5, #0x14] + ldr r0, [sp, #0x0] + ldrb r0, [r0, #0x2] + cmp r4, r0 + blt _0201F9C4 +_0201F9FC: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0201FA00: .word 0x0000FFFF + + thumb_func_start FUN_0201FA04 +FUN_0201FA04: ; 0x0201FA04 + push {r3-r7, lr} + ldr r3, [r0, #0x8] + add r7, r0, r3 + ldrh r0, [r7, #0x2] + add r4, r7, r0 + ldrh r0, [r1, #0x34] + add r5, r1, r0 + ldrh r0, [r5, #0x6] + add r1, r5, r0 + ldrh r0, [r5, r0] + add r3, r1, #0x4 + add r1, r0, #0x0 + mul r1, r2 + add r0, r3, r1 + ldrh r6, [r3, r1] + ldrh r1, [r0, #0x2] + mov r0, #0x1 + tst r0, r1 + bne _0201FA2C + lsr r6, r6, #0x1 +_0201FA2C: + ldrb r0, [r4, #0x1] + mov r5, #0x0 + cmp r0, #0x0 + bls _0201FA5A +_0201FA34: + ldrh r0, [r4, #0x6] + add r1, r4, r0 + ldrh r0, [r4, r0] + add r2, r1, #0x4 + add r1, r0, #0x0 + mul r1, r5 + add r1, r2, r1 + ldrb r2, [r1, #0x3] + mov r0, #0x1 + tst r0, r2 + beq _0201FA52 + add r0, r7, #0x0 + add r2, r6, #0x0 + bl FUN_0201FA5C +_0201FA52: + ldrb r0, [r4, #0x1] + add r5, r5, #0x1 + cmp r5, r0 + blo _0201FA34 +_0201FA5A: + pop {r3-r7, pc} + + thumb_func_start FUN_0201FA5C +FUN_0201FA5C: ; 0x0201FA5C + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r0, r1, #0x0 + ldrh r0, [r0, #0x0] + str r1, [sp, #0x0] + add r7, r2, #0x0 + add r0, r6, r0 + str r0, [sp, #0x4] + add r0, r1, #0x0 + ldrb r0, [r0, #0x2] + mov r4, #0x0 + cmp r0, #0x0 + bls _0201FAB4 + add r0, r6, #0x4 + str r0, [sp, #0x8] +_0201FA7C: + ldrh r2, [r6, #0xa] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x8] + add r0, r0, r2 + ldrh r2, [r1, r2] + ldr r1, [sp, #0x4] + ldrb r1, [r1, r4] + mul r1, r2 + add r0, r0, r1 + ldr r0, [r0, #0x4] + add r5, r6, r0 + ldrh r1, [r5, #0x1c] + ldr r0, _0201FAB8 ; =0x00001FFF + and r0, r1 + add r1, r0, r7 + ldr r0, _0201FAB8 ; =0x00001FFF + cmp r1, r0 + bls _0201FAA4 + bl ErrorHandling +_0201FAA4: + ldrh r0, [r5, #0x1c] + add r4, r4, #0x1 + add r0, r0, r7 + strh r0, [r5, #0x1c] + ldr r0, [sp, #0x0] + ldrb r0, [r0, #0x2] + cmp r4, r0 + blo _0201FA7C +_0201FAB4: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0201FAB8: .word 0x00001FFF + + thumb_func_start FUN_0201FABC +FUN_0201FABC: ; 0x0201FABC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x8] + mov r7, #0x0 + cmp r0, #0x0 + ble _0201FAEC + add r4, r7, #0x0 + add r6, r7, #0x0 +_0201FACC: + ldr r0, [r5, #0x4] + add r0, r0, r4 + bl FUN_0201F094 + ldr r0, [r5, #0x4] + add r7, r7, #0x1 + add r1, r0, r4 + add r0, r5, #0x0 + add r0, #0xc4 + ldr r0, [r0, #0x0] + add r4, #0xb8 + str r1, [r0, r6] + ldr r0, [r5, #0x8] + add r6, r6, #0x4 + cmp r7, r0 + blt _0201FACC +_0201FAEC: + mov r0, #0x0 + add r5, #0xc8 + str r0, [r5, #0x0] + pop {r3-r7, pc} + + thumb_func_start FUN_0201FAF4 +FUN_0201FAF4: ; 0x0201FAF4 + add r1, r0, #0x0 + add r1, #0xc8 + ldr r3, [r1, #0x0] + ldr r1, [r0, #0x8] + cmp r3, r1 + blt _0201FB04 + mov r0, #0x0 + bx lr +_0201FB04: + add r1, r0, #0x0 + add r1, #0xc4 + ldr r2, [r1, #0x0] + lsl r1, r3, #0x2 + ldr r2, [r2, r1] + add r1, r0, #0x0 + add r1, #0xc8 + ldr r1, [r1, #0x0] + add r0, #0xc8 + add r1, r1, #0x1 + str r1, [r0, #0x0] + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0201FB20 +FUN_0201FB20: ; 0x0201FB20 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0xc8 + ldr r0, [r0, #0x0] + add r4, r1, #0x0 + cmp r0, #0x0 + bgt _0201FB32 + mov r0, #0x0 + pop {r3-r5, pc} +_0201FB32: + add r0, r4, #0x0 + bl FUN_0201F094 + add r0, r5, #0x0 + add r0, #0xc8 + ldr r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r5, #0x0 + add r0, #0xc8 + str r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xc4 + add r5, #0xc8 + ldr r1, [r0, #0x0] + ldr r0, [r5, #0x0] + lsl r0, r0, #0x2 + str r4, [r1, r0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0201FB58 +FUN_0201FB58: ; 0x0201FB58 + add r2, r0, #0x0 + add r2, #0xb4 + ldr r3, [r2, #0x0] + add r2, r1, #0x0 + add r2, #0xb4 + str r3, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0xb4 + ldr r2, [r2, #0x0] + add r2, #0xb0 + str r1, [r2, #0x0] + add r2, r1, #0x0 + add r2, #0xb0 + str r0, [r2, #0x0] + add r0, #0xb4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0201FB7C +FUN_0201FB7C: ; 0x0201FB7C + add r1, r0, #0x0 + add r1, #0xb0 + ldr r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0xb4 + ldr r1, [r1, #0x0] + add r1, #0xb0 + str r2, [r1, #0x0] + add r1, r0, #0x0 + add r0, #0xb0 + add r1, #0xb4 + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + add r0, #0xb4 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0201FB9C +FUN_0201FB9C: ; 0x0201FB9C + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x0 + add r5, r2, #0x0 + bl FUN_0201FC90 + add r7, r0, #0x0 + blx FUN_020BC13C + add r4, r0, #0x0 + ldrh r0, [r4, #0xe] + add r0, r4, r0 + ldr r0, [r0, #0xc] + add r0, r4, r0 + str r0, [r6, #0x0] + cmp r5, #0x0 + beq _0201FBC6 + add r0, r7, #0x0 + blx FUN_020BC0FC + str r0, [r5, #0x0] +_0201FBC6: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0201FBCC +FUN_0201FBCC: ; 0x0201FBCC + ldr r3, _0201FBD4 ; =FUN_0201FC90 + mov r1, #0x1 + bx r3 + nop +_0201FBD4: .word FUN_0201FC90 + + thumb_func_start FUN_0201FBD8 +FUN_0201FBD8: ; 0x0201FBD8 + push {r3, lr} + ldr r2, [r1, #0x1c] + cmp r2, #0x0 + bne _0201FBE6 + bl FUN_0201F384 + pop {r3, pc} +_0201FBE6: + bl FUN_0201F3D4 + pop {r3, pc} + + thumb_func_start FUN_0201FBEC +FUN_0201FBEC: ; 0x0201FBEC + push {r3, lr} + ldr r0, [r0, #0x20] + bl FUN_0201FCA8 + ldr r0, [r0, #0x0] + lsl r0, r0, #0xc + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0201FBFC +FUN_0201FBFC: ; 0x0201FBFC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r1, r5, #0x0 + add r1, #0xaa + ldrh r1, [r1, #0x0] + ldr r0, [r5, #0x20] + bl FUN_0201FCA8 + add r5, #0xac + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0201FC1C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0201FC1C +FUN_0201FC1C: ; 0x0201FC1C + push {r3-r6} + ldr r4, [r0, #0x0] + ldr r6, [r1, #0x0] + lsl r4, r4, #0xc + mov r3, #0x0 + cmp r4, r6 + bgt _0201FC32 + ldr r5, [r0, #0x4] + lsl r5, r5, #0xc + cmp r5, r6 + bge _0201FC36 +_0201FC32: + str r4, [r1, #0x0] + b _0201FC4E +_0201FC36: + add r2, r6, r2 + cmp r5, r2 + bge _0201FC4C + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _0201FC46 + str r4, [r1, #0x0] + b _0201FC4E +_0201FC46: + mov r3, #0x1 + str r5, [r1, #0x0] + b _0201FC4E +_0201FC4C: + str r2, [r1, #0x0] +_0201FC4E: + add r0, r3, #0x0 + pop {r3-r6} + bx lr + + thumb_func_start FUN_0201FC54 +FUN_0201FC54: ; 0x0201FC54 + push {r3, lr} + add r3, r0, #0x0 + add r0, #0x90 + str r0, [sp, #0x0] + add r0, r3, #0x0 + add r0, #0x80 + add r2, r3, #0x0 + ldr r1, [r3, #0x78] + ldr r0, [r0, #0x0] + add r2, #0x88 + add r3, #0x8c + bl FUN_0201F500 + pop {r3, pc} + + thumb_func_start FUN_0201FC70 +FUN_0201FC70: ; 0x0201FC70 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r0, [r4, #0x78] + blx FUN_020B772C + add r4, #0x80 + ldr r0, [r4, #0x0] + add r1, sp, #0x4 + add r2, sp, #0x8 + add r3, sp, #0x0 + bl FUN_0201F4EC + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0201FC90 +FUN_0201FC90: ; 0x0201FC90 + cmp r1, #0x0 + beq _0201FC9A + cmp r1, #0x1 + beq _0201FC9E + b _0201FCA2 +_0201FC9A: + ldr r0, [r0, #0x0] + bx lr +_0201FC9E: + ldr r0, [r0, #0x4] + bx lr +_0201FCA2: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0201FCA8 +FUN_0201FCA8: ; 0x0201FCA8 + mov r2, #0xc + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start FUN_0201FCB0 +FUN_0201FCB0: ; 0x0201FCB0 + push {r3-r5, lr} + add r5, r0, #0x0 + bne _0201FCBA + bl ErrorHandling +_0201FCBA: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _0201FCC4 + bl ErrorHandling +_0201FCC4: + mov r1, #0x49 + ldr r0, [r5, #0x8] + lsl r1, r1, #0x2 + bl FUN_02016998 + add r4, r0, #0x0 + bne _0201FCD6 + bl ErrorHandling +_0201FCD6: + add r0, r4, #0x0 + bl FUN_0201FE44 + ldr r2, [r5, #0x0] + ldr r0, [r5, #0x8] + lsl r1, r2, #0x6 + add r1, r2, r1 + lsl r1, r1, #0x2 + bl FUN_02016998 + str r0, [r4, #0x0] + cmp r0, #0x0 + bne _0201FCF4 + bl ErrorHandling +_0201FCF4: + ldr r0, [r5, #0x0] + str r0, [r4, #0x4] + ldr r1, [r5, #0x0] + ldr r0, [r5, #0x8] + lsl r1, r1, #0x2 + bl FUN_02016998 + str r0, [r4, #0x8] + cmp r0, #0x0 + bne _0201FD0C + bl ErrorHandling +_0201FD0C: + add r0, r4, #0x0 + bl FUN_0202083C + add r0, r4, #0x0 + add r0, #0x10 + bl FUN_0201FE6C + add r2, r4, #0x0 + mov r1, #0x43 + lsl r1, r1, #0x2 + add r2, #0x10 + str r2, [r4, r1] + add r0, r1, #0x4 + str r2, [r4, r0] + ldr r0, [r5, #0x4] + add r1, #0x8 + str r0, [r4, r1] + ldr r0, [r5, #0x8] + ldr r1, _0201FD54 ; =0x02105BBC + bl FUN_020161A4 + mov r1, #0x46 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r1, r1, #0x4 + add r1, r4, r1 + blx thunk_FUN_020afda0_2 + mov r0, #0x12 + mov r1, #0x1 + lsl r0, r0, #0x4 + str r1, [r4, r0] + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_0201FD54: .word 0x02105BBC + + thumb_func_start FUN_0201FD58 +FUN_0201FD58: ; 0x0201FD58 + push {r4, lr} + add r4, r0, #0x0 + bne _0201FD62 + mov r0, #0x0 + pop {r4, pc} +_0201FD62: + ldr r1, [r4, #0x0] + cmp r1, #0x0 + bne _0201FD6C + mov r0, #0x1 + pop {r4, pc} +_0201FD6C: + bl FUN_0201FDB4 + mov r0, #0x46 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, [r4, #0x8] + bl FUN_02016A18 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_0201FE44 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201FD98 +FUN_0201FD98: ; 0x0201FD98 + cmp r0, #0x0 + bne _0201FDA0 + mov r0, #0x0 + bx lr +_0201FDA0: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _0201FDAA + mov r0, #0x0 + bx lr +_0201FDAA: + mov r2, #0x12 + lsl r2, r2, #0x4 + str r1, [r0, r2] + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0201FDB4 +FUN_0201FDB4: ; 0x0201FDB4 + push {r4-r6, lr} + cmp r0, #0x0 + bne _0201FDBE + mov r0, #0x0 + pop {r4-r6, pc} +_0201FDBE: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _0201FDC8 + mov r0, #0x1 + pop {r4-r6, pc} +_0201FDC8: + mov r1, #0x11 + lsl r1, r1, #0x4 + add r4, r0, #0x0 + ldr r1, [r0, r1] + add r4, #0x10 + cmp r1, r4 + beq _0201FDE8 + mov r6, #0x1 + lsl r6, r6, #0x8 +_0201FDDA: + ldr r5, [r1, r6] + add r0, r1, #0x0 + bl FUN_0201FFC8 + add r1, r5, #0x0 + cmp r5, r4 + bne _0201FDDA +_0201FDE8: + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0201FDEC +FUN_0201FDEC: ; 0x0201FDEC + push {r3-r7, lr} + add r5, r0, #0x0 + bne _0201FDF6 + bl ErrorHandling +_0201FDF6: + mov r0, #0x12 + lsl r0, r0, #0x4 + ldr r1, [r5, r0] + cmp r1, #0x0 + beq _0201FE38 + sub r0, #0x10 + add r6, r5, #0x0 + ldr r4, [r5, r0] + add r6, #0x10 + cmp r4, r6 + beq _0201FE38 + ldr r7, _0201FE3C ; =0x020EE658 +_0201FE0E: + add r2, r4, #0x0 + add r2, #0x34 + ldrb r2, [r2, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r7, r2] + blx r2 + add r1, r4, #0x0 + add r1, #0x35 + ldrb r1, [r1, #0x0] + add r0, r4, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0201FE40 ; =0x020EE660 + ldr r1, [r1, r2] + blx r1 + mov r0, #0x1 + lsl r0, r0, #0x8 + ldr r4, [r4, r0] + cmp r4, r6 + bne _0201FE0E +_0201FE38: + pop {r3-r7, pc} + nop +_0201FE3C: .word 0x020EE658 +_0201FE40: .word 0x020EE660 + + thumb_func_start FUN_0201FE44 +FUN_0201FE44: ; 0x0201FE44 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + str r1, [r4, #0x0] + str r1, [r4, #0x4] + str r1, [r4, #0x8] + mov r0, #0x45 + str r1, [r4, #0xc] + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r4, #0x0 + add r0, #0x10 + bl FUN_0201FE6C + mov r0, #0x12 + mov r1, #0x0 + lsl r0, r0, #0x4 + str r1, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201FE6C +FUN_0201FE6C: ; 0x0201FE6C + push {r4, lr} + mov r2, #0x41 + add r4, r0, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + str r1, [r4, #0x3c] + blx Call_FillMemWithValue + add r0, r4, #0x0 + add r0, #0xb4 + blx FUN_020B1A24 + add r0, r4, #0x0 + add r0, #0xd8 + blx FUN_020B19DC + mov r0, #0x0 + str r0, [r4, #0x30] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201FE94 +FUN_0201FE94: ; 0x0201FE94 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02020874 + add r4, r0, #0x0 + bne _0201FEA6 + mov r0, #0x0 + pop {r4-r6, pc} +_0201FEA6: + ldr r0, [r5, #0x0] + add r6, r5, #0x0 + str r0, [r4, #0x3c] + add r0, r4, #0x0 + mov r2, #0x0 + add r0, #0xf0 + add r6, #0x8 + strh r2, [r0, #0x0] + ldmia r6!, {r0-r1} + add r3, r4, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r6, #0x0] + add r6, r5, #0x0 + str r0, [r3, #0x0] + add r6, #0x14 + add r3, r4, #0x0 + ldmia r6!, {r0-r1} + add r3, #0x18 + stmia r3!, {r0-r1} + ldr r0, [r6, #0x0] + str r0, [r3, #0x0] + ldrh r0, [r5, #0x20] + strh r0, [r4, #0x24] + add r0, r4, #0x0 + ldr r1, [r5, #0x28] + add r0, #0xf8 + str r1, [r0, #0x0] + add r0, r4, #0x0 + ldr r1, [r5, #0x24] + add r0, #0xf4 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x26 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x27 + strb r2, [r0, #0x0] + str r2, [r4, #0x2c] + add r0, r4, #0x0 + str r2, [r4, #0x30] + mov r1, #0x11 + add r0, #0x28 + strb r1, [r0, #0x0] + mov r0, #0x45 + ldr r1, [r5, #0x0] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + add r1, r4, #0x0 + add r1, #0x26 + ldrb r1, [r1, #0x0] + blx FUN_020B502C + add r0, r4, #0x0 + add r0, #0x27 + ldrb r2, [r0, #0x0] + mov r0, #0x45 + ldr r1, [r5, #0x0] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + mov r1, #0x1 + mov r3, #0x2 + and r1, r2 + and r2, r3 + blx FUN_020B4F38 + add r0, r4, #0x0 + mov r2, #0x1 + add r0, #0x34 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x35 + strb r1, [r0, #0x0] + lsl r0, r2, #0xd + str r0, [r4, #0x38] + ldr r0, [r5, #0x0] + ldr r1, [r5, #0x4] + ldr r3, [r5, #0x2c] + add r2, r4, #0x0 + bl FUN_02020434 + cmp r0, #0x0 + bne _0201FF56 + add r0, r4, #0x0 + bl FUN_0201FFC8 + mov r0, #0x0 + pop {r4-r6, pc} +_0201FF56: + add r1, r4, #0x0 + add r1, #0xf8 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r0, #0xd8 + bl FUN_020205E8 + add r1, r4, #0x0 + add r1, #0x2a + strb r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x2a + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x29 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02020788 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0201FF84 +FUN_0201FF84: ; 0x0201FF84 + push {r4, lr} + sub sp, #0x30 + add r2, r0, #0x0 + ldr r0, [r2, #0x0] + add r4, r2, #0x0 + str r0, [sp, #0x0] + ldr r0, [r2, #0x4] + add r4, #0x8 + str r0, [sp, #0x4] + ldmia r4!, {r0-r1} + add r3, sp, #0x8 + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + mov r1, #0x0 + str r0, [r3, #0x0] + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + add r0, sp, #0x0 + strh r1, [r0, #0x20] + ldr r0, [r2, #0x14] + str r0, [sp, #0x24] + ldr r0, [r2, #0x18] + str r0, [sp, #0x28] + ldr r0, [r2, #0x1c] + str r0, [sp, #0x2c] + add r0, sp, #0x0 + bl FUN_0201FE94 + add sp, #0x30 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0201FFC8 +FUN_0201FFC8: ; 0x0201FFC8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0xec + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _02020040 + add r1, r5, #0x0 + add r1, #0xfc + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _0201FFE4 + bl FUN_02020820 +_0201FFE4: + add r0, r5, #0x0 + add r0, #0xec + ldr r0, [r0, #0x0] + cmp r0, #0x3 + bne _0202000E + add r1, r5, #0x0 + add r1, #0xf8 + add r0, r5, #0x0 + add r4, r5, #0x0 + ldr r1, [r1, #0x0] + add r0, #0xb4 + add r4, #0x40 + blx FUN_020B1A14 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _0202000E + ldr r0, [r4, #0x5c] + blx FUN_020B4358 +_0202000E: + add r0, r5, #0x0 + add r0, #0xec + ldr r0, [r0, #0x0] + cmp r0, #0x2 + bne _02020030 + add r4, r5, #0x0 + add r4, #0x40 + ldr r0, [r4, #0x70] + cmp r0, #0x0 + beq _02020026 + bl FUN_02016A18 +_02020026: + ldr r0, [r4, #0x74] + cmp r0, #0x0 + beq _02020030 + bl FUN_02016A18 +_02020030: + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0xec + str r1, [r0, #0x0] + ldr r0, [r5, #0x3c] + add r1, r5, #0x0 + bl FUN_02020890 +_02020040: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02020044 +FUN_02020044: ; 0x02020044 + add r2, r1, #0x0 + add r3, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020054 +FUN_02020054: ; 0x02020054 + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0xc + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02020064 +FUN_02020064: ; 0x02020064 + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x18 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02020074 +FUN_02020074: ; 0x02020074 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02020064 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020200EC + pop {r3-r5, pc} + + thumb_func_start FUN_02020088 +FUN_02020088: ; 0x02020088 + strh r1, [r0, #0x24] + bx lr + + thumb_func_start FUN_0202008C +FUN_0202008C: ; 0x0202008C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02020088 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020200EC + pop {r3-r5, pc} + + thumb_func_start FUN_020200A0 +FUN_020200A0: ; 0x020200A0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020200AE + bl ErrorHandling +_020200AE: + cmp r4, #0x2 + blt _020200B6 + bl ErrorHandling +_020200B6: + add r5, #0x34 + strb r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_020200BC +FUN_020200BC: ; 0x020200BC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020200CA + bl ErrorHandling +_020200CA: + cmp r4, #0x2 + blt _020200D2 + bl ErrorHandling +_020200D2: + add r5, #0x35 + strb r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_020200D8 +FUN_020200D8: ; 0x020200D8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020200E6 + bl ErrorHandling +_020200E6: + str r4, [r5, #0x38] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020200EC +FUN_020200EC: ; 0x020200EC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020200FA + bl ErrorHandling +_020200FA: + add r5, #0x26 + strb r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_02020100 +FUN_02020100: ; 0x02020100 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0202010E + bl ErrorHandling +_0202010E: + add r0, r5, #0x0 + add r0, #0x27 + strb r4, [r0, #0x0] + mov r0, #0x0 + add r5, #0x26 + strb r0, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0202011C +FUN_0202011C: ; 0x0202011C + bx lr + .balign 4 + + thumb_func_start FUN_02020120 +FUN_02020120: ; 0x02020120 + add r0, #0x18 + bx lr + + thumb_func_start FUN_02020124 +FUN_02020124: ; 0x02020124 + ldrh r0, [r0, #0x24] + bx lr + + thumb_func_start FUN_02020128 +FUN_02020128: ; 0x02020128 + add r0, #0x34 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020130 +FUN_02020130: ; 0x02020130 + push {r4, lr} + lsl r2, r1, #0x10 + lsr r3, r2, #0x10 + add r2, r0, #0x0 + add r2, #0xf0 + strh r3, [r2, #0x0] + add r2, r0, #0x0 + add r2, #0xec + ldr r2, [r2, #0x0] + cmp r2, #0x1 + beq _0202014A + cmp r2, #0x3 + bne _02020168 +_0202014A: + add r4, r0, #0x0 + add r4, #0x40 + lsl r1, r1, #0x10 + ldr r0, [r4, #0x4] + lsr r1, r1, #0x10 + blx FUN_020AFC04 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x8 + blx FUN_020B1EE4 + mov r0, #0x1 + str r0, [r4, #0x10] + pop {r4, pc} +_02020168: + add r4, r0, #0x0 + add r4, #0x40 + ldr r0, [r4, #0x6c] + add r1, r3, #0x0 + blx FUN_020AFC04 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x8 + blx FUN_020B242C + mov r0, #0x1 + str r0, [r4, #0x10] + pop {r4, pc} + + thumb_func_start FUN_02020184 +FUN_02020184: ; 0x02020184 + push {r3, lr} + add r2, r0, #0x0 + add r2, #0xf0 + ldrh r2, [r2, #0x0] + cmp r2, r1 + beq _02020194 + bl FUN_02020130 +_02020194: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02020198 +FUN_02020198: ; 0x02020198 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0xec + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _020201A8 + cmp r0, #0x3 + bne _020201C2 +_020201A8: + add r5, r4, #0x0 + add r5, #0x40 + add r0, r5, #0x0 + add r0, #0x8 + blx FUN_020B0448 + mov r0, #0x1 + str r0, [r5, #0x10] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02020208 + pop {r3-r5, pc} +_020201C2: + add r5, r4, #0x0 + add r5, #0x40 + add r0, r5, #0x0 + add r0, #0x8 + blx FUN_020B0448 + mov r0, #0x1 + str r0, [r5, #0x10] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02020208 + pop {r3-r5, pc} + + thumb_func_start FUN_020201DC +FUN_020201DC: ; 0x020201DC + add r0, #0xf0 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020201E4 +FUN_020201E4: ; 0x020201E4 + push {r3, lr} + add r2, r0, #0x0 + add r2, #0xec + ldr r2, [r2, #0x0] + cmp r2, #0x1 + beq _020201F4 + cmp r2, #0x3 + bne _020201FE +_020201F4: + add r0, #0x40 + add r0, #0x8 + blx FUN_020B1EC4 + pop {r3, pc} +_020201FE: + add r0, #0x40 + add r0, #0x8 + blx FUN_020B224C + pop {r3, pc} + + thumb_func_start FUN_02020208 +FUN_02020208: ; 0x02020208 + push {r3, lr} + add r2, r0, #0x0 + add r2, #0xec + ldr r2, [r2, #0x0] + cmp r2, #0x1 + beq _02020218 + cmp r2, #0x3 + bne _02020222 +_02020218: + add r0, #0x40 + add r0, #0x8 + blx FUN_020B1EA4 + pop {r3, pc} +_02020222: + add r0, #0x40 + add r0, #0x8 + blx FUN_020B2194 + pop {r3, pc} + + thumb_func_start FUN_0202022C +FUN_0202022C: ; 0x0202022C + ldr r3, _02020234 ; =0x020B04FC + add r0, #0x40 + add r0, #0x8 + bx r3 + .balign 4 +_02020234: .word 0x020B04FC + + thumb_func_start FUN_02020238 +FUN_02020238: ; 0x02020238 + add r0, #0xf2 + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020240 +FUN_02020240: ; 0x02020240 + add r0, #0xf2 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020248 +FUN_02020248: ; 0x02020248 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020256 + bl ErrorHandling +_02020256: + add r0, r5, #0x0 + add r0, #0x29 + strb r4, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x28 + ldrb r1, [r0, #0x0] + mov r0, #0x2 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x28 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x28 + ldrb r1, [r0, #0x0] + mov r0, #0x10 + add r5, #0x28 + bic r1, r0 + strb r1, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0202027C +FUN_0202027C: ; 0x0202027C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02020248 + add r1, r4, #0x0 + add r1, #0xf8 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r0, #0xd8 + bl FUN_020205E8 + add r1, r4, #0x0 + add r1, #0x29 + ldrb r1, [r1, #0x0] + add r4, #0x29 + add r0, r1, r0 + strb r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_020202A0 +FUN_020202A0: ; 0x020202A0 + add r0, #0x29 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020202A8 +FUN_020202A8: ; 0x020202A8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020202B6 + bl ErrorHandling +_020202B6: + add r0, r5, #0x0 + add r0, #0x2a + strb r4, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x28 + ldrb r1, [r0, #0x0] + mov r0, #0x10 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x28 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x28 + ldrb r1, [r0, #0x0] + mov r0, #0x2 + add r5, #0x28 + bic r1, r0 + strb r1, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_020202DC +FUN_020202DC: ; 0x020202DC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020202A8 + add r1, r4, #0x0 + add r1, #0xf8 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r0, #0xd8 + bl FUN_020205E8 + add r1, r4, #0x0 + add r1, #0x2a + ldrb r1, [r1, #0x0] + add r4, #0x2a + add r0, r1, r0 + strb r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02020300 +FUN_02020300: ; 0x02020300 + push {r4, lr} + add r4, r0, #0x0 + bne _0202030A + bl ErrorHandling +_0202030A: + add r4, #0x2a + ldrb r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02020310 +FUN_02020310: ; 0x02020310 + push {r3-r5, lr} + add r5, r0, #0x0 + add r2, r5, #0x0 + ldr r4, [r5, #0x3c] + add r2, #0xf4 + strh r1, [r2, #0x0] + bl FUN_02020820 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02020788 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202032C +FUN_0202032C: ; 0x0202032C + add r0, #0xf4 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020334 +FUN_02020334: ; 0x02020334 + push {r3-r4} + add r3, r0, #0x0 + add r4, r1, #0x0 + add r3, #0xb4 + mov r2, #0x4 +_0202033E: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0202033E + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02020350 +FUN_02020350: ; 0x02020350 + add r0, #0xb4 + bx lr + + thumb_func_start FUN_02020354 +FUN_02020354: ; 0x02020354 + add r0, #0xd8 + bx lr + + thumb_func_start FUN_02020358 +FUN_02020358: ; 0x02020358 + str r1, [r0, #0x2c] + cmp r1, #0x1 + bne _0202036E + add r1, r0, #0x0 + add r1, #0x28 + ldrb r2, [r1, #0x0] + mov r1, #0x4 + add r0, #0x28 + orr r1, r2 + strb r1, [r0, #0x0] + bx lr +_0202036E: + add r1, r0, #0x0 + add r1, #0x28 + ldrb r2, [r1, #0x0] + mov r1, #0x4 + eor r1, r2 + add r0, #0x28 + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020380 +FUN_02020380: ; 0x02020380 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020388 +FUN_02020388: ; 0x02020388 + push {r4, lr} + add r4, r0, #0x0 + bne _02020392 + bl ErrorHandling +_02020392: + ldr r0, [r4, #0x50] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020398 +FUN_02020398: ; 0x02020398 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r4, #0x0 + bne _020203A6 + bl ErrorHandling +_020203A6: + str r5, [r4, #0x30] + cmp r5, #0x0 + bne _020203BC + add r0, r4, #0x0 + add r0, #0x28 + ldrb r1, [r0, #0x0] + mov r0, #0x8 + add r4, #0x28 + eor r0, r1 + strb r0, [r4, #0x0] + pop {r3-r5, pc} +_020203BC: + add r0, r4, #0x0 + add r0, #0x28 + ldrb r1, [r0, #0x0] + mov r0, #0x8 + orr r0, r1 + add r4, #0x28 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_020203CC +FUN_020203CC: ; 0x020203CC + push {r4, lr} + mov r1, #0x1 + lsl r1, r1, #0xa + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0xb + mov r2, #0x1 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + lsl r2, r2, #0xa + blx MIi_CpuClear16 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xa + blx DC_FlushRange + mov r2, #0x1 + add r0, r4, #0x0 + mov r1, #0x0 + lsl r2, r2, #0xa + blx GX_LoadOAM + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02020404 +FUN_02020404: ; 0x02020404 + push {r4, lr} + mov r1, #0x1 + lsl r1, r1, #0xa + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0xb + mov r2, #0x1 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + lsl r2, r2, #0xa + blx MIi_CpuClear16 + mov r2, #0x1 + add r0, r4, #0x0 + mov r1, #0x0 + lsl r2, r2, #0xa + blx GXS_LoadOAM + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020434 +FUN_02020434: ; 0x02020434 + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + add r4, r2, #0x0 + add r0, r5, #0x0 + add r7, r3, #0x0 + bl FUN_020204DC + add r1, r4, #0x0 + add r1, #0xec + str r0, [r1, #0x0] + add r3, r4, #0x0 + ldr r6, [r5, #0x0] + add r3, #0xb4 + mov r2, #0x4 +_02020452: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02020452 + ldr r0, [r6, #0x0] + add r2, r4, #0x0 + str r0, [r3, #0x0] + ldr r3, [r5, #0x8] + add r2, #0xd8 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r1, r4, #0x0 + str r0, [r2, #0x0] + ldr r0, [r5, #0xc] + bl FUN_020204F4 + ldr r0, [r5, #0x10] + cmp r0, #0x0 + beq _02020486 + add r1, r4, #0x0 + bl FUN_020204F8 + b _02020494 +_02020486: + mov r1, #0x47 + ldr r0, [sp, #0x0] + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + add r1, r4, #0x0 + bl FUN_020204F8 +_02020494: + add r0, r4, #0x0 + add r0, #0xec + ldr r0, [r0, #0x0] + cmp r0, #0x2 + bne _020204B8 + ldr r0, [r5, #0x14] + add r1, r4, #0x0 + bl FUN_020204FC + ldr r0, [r5, #0x18] + add r1, r4, #0x0 + bl FUN_02020504 + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_02020588 + b _020204D0 +_020204B8: + cmp r0, #0x3 + bne _020204C8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0202052C + b _020204D0 +_020204C8: + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_0202050C +_020204D0: + add r5, #0x20 + ldrb r0, [r5, #0x0] + add r4, #0xf2 + strb r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_020204DC +FUN_020204DC: ; 0x020204DC + ldr r1, [r0, #0x14] + cmp r1, #0x0 + beq _020204E6 + mov r0, #0x2 + bx lr +_020204E6: + ldr r0, [r0, #0x1c] + cmp r0, #0x1 + bne _020204F0 + mov r0, #0x3 + bx lr +_020204F0: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020204F4 +FUN_020204F4: ; 0x020204F4 + str r0, [r1, #0x40] + bx lr + + thumb_func_start FUN_020204F8 +FUN_020204F8: ; 0x020204F8 + str r0, [r1, #0x44] + bx lr + + thumb_func_start FUN_020204FC +FUN_020204FC: ; 0x020204FC + add r1, #0xa8 + str r0, [r1, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02020504 +FUN_02020504: ; 0x02020504 + add r1, #0xac + str r0, [r1, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202050C +FUN_0202050C: ; 0x0202050C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r5, #0x0 + add r4, #0x40 + ldr r0, [r4, #0x4] + mov r1, #0x0 + blx FUN_020AFC04 + add r4, #0x8 + add r1, r0, #0x0 + ldr r2, [r5, #0x40] + add r0, r4, #0x0 + blx FUN_020B1F80 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202052C +FUN_0202052C: ; 0x0202052C + push {r4-r7, lr} + sub sp, #0x1c + add r6, r1, #0x0 + add r4, r6, #0x0 + add r4, #0x40 + add r5, r0, #0x0 + blx FUN_020B43A4 + str r0, [r4, #0x5c] + ldr r0, [r4, #0x4] + mov r1, #0x0 + ldr r5, [r5, #0x4] + blx FUN_020AFC04 + str r0, [sp, #0x18] + add r0, r6, #0x0 + add r0, #0xb4 + mov r1, #0x1 + blx FUN_020B1A14 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r0, #0xb4 + mov r1, #0x2 + blx FUN_020B1A14 + mov r1, #0x0 + mvn r1, r1 + str r1, [sp, #0x0] + str r7, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r5, #0x14] + ldr r1, [sp, #0x18] + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x10] + str r0, [sp, #0x14] + add r0, r4, #0x0 + ldr r2, [r6, #0x40] + ldr r3, [r4, #0x5c] + add r0, #0x8 + blx FUN_020B1EFC + add sp, #0x1c + pop {r4-r7, pc} + + thumb_func_start FUN_02020588 +FUN_02020588: ; 0x02020588 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r5, #0x0 + add r4, #0x40 + ldr r0, [r4, #0x6c] + add r7, r1, #0x0 + mov r1, #0x0 + blx FUN_020AFC04 + str r0, [sp, #0xc] + ldr r0, [r4, #0x68] + blx FUN_020B23D8 + add r6, r0, #0x0 + mov r1, #0x28 + add r0, r7, #0x0 + mul r1, r6 + bl FUN_02016998 + mov r1, #0x54 + str r0, [r4, #0x70] + add r0, r7, #0x0 + mul r1, r6 + bl FUN_02016998 + str r0, [r4, #0x74] + ldr r0, [r4, #0x4] + add r3, r6, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x40] + str r0, [sp, #0x4] + ldr r0, [r4, #0x68] + str r0, [sp, #0x8] + add r0, r4, #0x0 + ldr r1, [r4, #0x70] + ldr r2, [r4, #0x74] + add r0, #0x8 + blx FUN_020B20C8 + add r4, #0x8 + ldr r1, [sp, #0xc] + add r0, r4, #0x0 + blx FUN_020B242C + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020205E8 +FUN_020205E8: ; 0x020205E8 + push {r4, lr} + ldr r2, [r0, #0x4] + cmp r2, #0x0 + beq _020205F6 + mov r4, #0x2 + lsl r4, r4, #0x8 + b _02020602 +_020205F6: + ldr r2, [r0, #0x0] + cmp r2, #0x4 + bne _02020600 + mov r4, #0x0 + b _02020602 +_02020600: + mov r4, #0x20 +_02020602: + cmp r4, #0x0 + beq _02020612 + blx FUN_020B19C4 + add r1, r4, #0x0 + blx _u32_div_f + pop {r4, pc} +_02020612: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020618 +FUN_02020618: ; 0x02020618 + push {r3-r6, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r3, r4, #0x0 + add r5, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, sp, #0x0 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r1, r4, #0x0 + str r0, [r2, #0x0] + mov r0, #0x45 + lsl r0, r0, #0x2 + add r2, r4, #0x0 + ldr r0, [r5, r0] + add r1, #0xb4 + add r2, #0xd8 + blx thunk_FUN_020b5040 + mov r0, #0x45 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + blx FUN_020B326C + blx FUN_020B2B58 + add r1, r4, #0x0 + mov r0, #0x45 + add r1, #0x26 + lsl r0, r0, #0x2 + ldrb r1, [r1, #0x0] + ldr r0, [r5, r0] + blx FUN_020B502C + add r0, r4, #0x0 + add r0, #0x26 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02020680 + add r0, r4, #0x0 + add r0, #0x27 + ldrb r2, [r0, #0x0] + mov r0, #0x45 + lsl r0, r0, #0x2 + mov r1, #0x1 + ldr r0, [r5, r0] + mov r3, #0x2 + and r1, r2 + and r2, r3 + blx FUN_020B4F38 + b _0202068E +_02020680: + mov r0, #0x45 + lsl r0, r0, #0x2 + mov r1, #0x0 + ldr r0, [r5, r0] + add r2, r1, #0x0 + blx FUN_020B4F38 +_0202068E: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x8] + blx FUN_020B2A08 + add r0, r4, #0x0 + add r0, #0x26 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _020206DC + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + blx FUN_020B2A08 + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x1c] + ldr r2, [r4, #0x20] + blx FUN_020B28B4 + ldrh r0, [r4, #0x24] + ldr r2, _02020770 ; =0x020FFA38 + asr r0, r0, #0x4 + lsl r1, r0, #0x1 + lsl r0, r1, #0x1 + add r1, r1, #0x1 + lsl r1, r1, #0x1 + ldrsh r0, [r2, r0] + ldrsh r1, [r2, r1] + blx FUN_020B2794 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + neg r0, r0 + neg r1, r1 + neg r2, r2 + blx FUN_020B2A08 +_020206DC: + add r0, r4, #0x0 + add r0, #0x28 + ldrb r3, [r0, #0x0] + mov r0, #0x45 + lsl r0, r0, #0x2 + ldr r2, [r5, r0] + add r1, r2, #0x0 + add r1, #0x84 + ldr r1, [r1, #0x0] + add r2, #0x84 + orr r1, r3 + str r1, [r2, #0x0] + add r1, r4, #0x0 + add r1, #0x28 + ldrb r1, [r1, #0x0] + mvn r6, r1 + ldr r1, [r5, r0] + add r2, r1, #0x0 + add r2, #0x84 + ldr r3, [r2, #0x0] + mvn r2, r6 + and r2, r3 + add r1, #0x84 + str r2, [r1, #0x0] + add r1, r4, #0x0 + add r1, #0x29 + ldrb r2, [r1, #0x0] + ldr r1, [r5, r0] + add r1, #0x8a + strh r2, [r1, #0x0] + add r1, r4, #0x0 + add r1, #0x2a + ldrb r2, [r1, #0x0] + ldr r1, [r5, r0] + add r1, #0x94 + strh r2, [r1, #0x0] + ldr r1, [r5, r0] + ldr r2, [r4, #0x2c] + add r1, #0x90 + str r2, [r1, #0x0] + ldr r1, [r5, r0] + ldr r2, [r4, #0x30] + add r1, #0x8c + str r2, [r1, #0x0] + add r1, r4, #0x0 + add r1, #0xf2 + ldr r0, [r5, r0] + ldrb r1, [r1, #0x0] + add r0, #0x88 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0xec + ldr r0, [r0, #0x0] + cmp r0, #0x1 + beq _0202074E + cmp r0, #0x3 + bne _0202075A +_0202074E: + add r4, #0x40 + add r4, #0x8 + add r0, r4, #0x0 + blx FUN_020B317C + b _02020764 +_0202075A: + add r4, #0x40 + add r4, #0x8 + add r0, r4, #0x0 + blx FUN_020B2D9C +_02020764: + blx FUN_020B2B08 + blx FUN_020B31F0 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 +_02020770: .word 0x020FFA38 + + thumb_func_start FUN_02020774 +FUN_02020774: ; 0x02020774 + bx lr + .balign 4 + + thumb_func_start FUN_02020778 +FUN_02020778: ; 0x02020778 + ldr r3, _02020780 ; =FUN_020201E4 + ldr r1, [r0, #0x38] + bx r3 + nop +_02020780: .word FUN_020201E4 + + thumb_func_start FUN_02020784 +FUN_02020784: ; 0x02020784 + bx lr + .balign 4 + + thumb_func_start FUN_02020788 +FUN_02020788: ; 0x02020788 + push {r4-r7} + mov r2, #0x11 + lsl r2, r2, #0x4 + add r4, r0, #0x0 + ldr r5, [r0, r2] + add r4, #0x10 + cmp r5, r4 + bne _020207AC + str r1, [r0, r2] + sub r3, r2, #0x4 + str r1, [r0, r3] + add r0, r1, #0x0 + add r0, #0xfc + str r4, [r0, #0x0] + sub r2, #0x10 + str r4, [r1, r2] + pop {r4-r7} + bx lr +_020207AC: + add r3, r1, #0x0 + add r3, #0xf4 + ldrh r6, [r3, #0x0] + sub r3, r2, #0x4 + ldr r3, [r0, r3] + add r7, r3, #0x0 + add r7, #0xf4 + ldrh r7, [r7, #0x0] + cmp r7, r6 + bhi _020207DE + add r5, r1, #0x0 + add r5, #0xfc + str r3, [r5, #0x0] + sub r3, r2, #0x4 + ldr r5, [r0, r3] + add r3, r2, #0x0 + sub r3, #0x10 + str r1, [r5, r3] + add r3, r2, #0x0 + sub r3, #0x10 + str r4, [r1, r3] + sub r2, r2, #0x4 + str r1, [r0, r2] + pop {r4-r7} + bx lr +_020207DE: + cmp r5, r4 + beq _0202081A + add r0, r2, #0x0 + sub r0, #0x10 +_020207E6: + add r2, r5, #0x0 + add r2, #0xf4 + ldrh r2, [r2, #0x0] + cmp r2, r6 + bls _02020814 + add r0, r5, #0x0 + add r0, #0xfc + mov r2, #0x1 + ldr r0, [r0, #0x0] + lsl r2, r2, #0x8 + str r1, [r0, r2] + add r0, r5, #0x0 + add r0, #0xfc + ldr r3, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0xfc + str r3, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xfc + str r1, [r0, #0x0] + str r5, [r1, r2] + pop {r4-r7} + bx lr +_02020814: + ldr r5, [r5, r0] + cmp r5, r4 + bne _020207E6 +_0202081A: + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02020820 +FUN_02020820: ; 0x02020820 + mov r2, #0x1 + add r1, r0, #0x0 + lsl r2, r2, #0x8 + add r1, #0xfc + ldr r3, [r0, r2] + ldr r1, [r1, #0x0] + str r3, [r1, r2] + add r1, r0, #0x0 + add r1, #0xfc + ldr r0, [r0, r2] + ldr r1, [r1, #0x0] + add r0, #0xfc + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202083C +FUN_0202083C: ; 0x0202083C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + mov r7, #0x0 + cmp r0, #0x0 + ble _0202086C + add r4, r7, #0x0 + add r6, r7, #0x0 +_0202084C: + ldr r0, [r5, #0x0] + add r0, r0, r4 + bl FUN_0201FE6C + ldr r0, [r5, #0x0] + add r7, r7, #0x1 + add r1, r0, r4 + ldr r0, [r5, #0x8] + str r1, [r0, r6] + mov r0, #0x41 + lsl r0, r0, #0x2 + add r4, r4, r0 + ldr r0, [r5, #0x4] + add r6, r6, #0x4 + cmp r7, r0 + blt _0202084C +_0202086C: + mov r0, #0x0 + str r0, [r5, #0xc] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02020874 +FUN_02020874: ; 0x02020874 + ldr r3, [r0, #0xc] + ldr r1, [r0, #0x4] + cmp r3, r1 + blt _02020880 + mov r0, #0x0 + bx lr +_02020880: + ldr r2, [r0, #0x8] + lsl r1, r3, #0x2 + ldr r2, [r2, r1] + add r1, r3, #0x1 + str r1, [r0, #0xc] + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02020890 +FUN_02020890: ; 0x02020890 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + cmp r0, #0x0 + bgt _020208A0 + mov r0, #0x0 + pop {r3-r5, pc} +_020208A0: + add r0, r4, #0x0 + bl FUN_0201FE6C + ldr r0, [r5, #0xc] + sub r0, r0, #0x1 + str r0, [r5, #0xc] + ldr r1, [r5, #0x8] + lsl r0, r0, #0x2 + str r4, [r1, r0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020208B8 +FUN_020208B8: ; 0x020208B8 + push {r4-r7} + ldrb r3, [r0, #0x0] + mov r4, #0x0 + cmp r3, #0xff + beq _020208FA +_020208C2: + ldrb r7, [r0, #0x2] + ldrb r3, [r0, #0x3] + ldrb r5, [r0, #0x0] + sub r6, r1, r7 + sub r3, r3, r7 + cmp r6, r3 + bhs _020208D4 + mov r6, #0x1 + b _020208D6 +_020208D4: + mov r6, #0x0 +_020208D6: + ldrb r7, [r0, #0x1] + sub r3, r2, r5 + sub r5, r7, r5 + cmp r3, r5 + bhs _020208E4 + mov r3, #0x1 + b _020208E6 +_020208E4: + mov r3, #0x0 +_020208E6: + tst r3, r6 + beq _020208F0 + add r0, r4, #0x0 + pop {r4-r7} + bx lr +_020208F0: + add r0, r0, #0x4 + ldrb r3, [r0, #0x0] + add r4, r4, #0x1 + cmp r3, #0xff + bne _020208C2 +_020208FA: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02020904 +FUN_02020904: ; 0x02020904 + push {r3-r4} + ldrb r3, [r0, #0x1] + sub r4, r3, r1 + ldrb r1, [r0, #0x2] + sub r3, r1, r2 + ldrb r2, [r0, #0x3] + add r1, r4, #0x0 + add r0, r3, #0x0 + mul r1, r4 + mul r0, r3 + add r1, r1, r0 + add r0, r2, #0x0 + mul r0, r2 + cmp r1, r0 + bhs _02020928 + mov r0, #0x1 + pop {r3-r4} + bx lr +_02020928: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02020930 +FUN_02020930: ; 0x02020930 + push {r4-r5} + ldrb r5, [r0, #0x2] + ldrb r3, [r0, #0x0] + sub r4, r1, r5 + ldrb r1, [r0, #0x3] + sub r1, r1, r5 + cmp r4, r1 + bhs _02020944 + mov r4, #0x1 + b _02020946 +_02020944: + mov r4, #0x0 +_02020946: + ldrb r0, [r0, #0x1] + sub r1, r2, r3 + sub r0, r0, r3 + cmp r1, r0 + bhs _02020954 + mov r0, #0x1 + b _02020956 +_02020954: + mov r0, #0x0 +_02020956: + tst r0, r4 + beq _02020960 + mov r0, #0x1 + pop {r4-r5} + bx lr +_02020960: + mov r0, #0x0 + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_02020968 +FUN_02020968: ; 0x02020968 + push {r3, lr} + ldr r2, _02020984 ; =0x021C48F8 + ldrh r1, [r2, #0x22] + cmp r1, #0x0 + beq _0202097C + ldrh r1, [r2, #0x1c] + ldrh r2, [r2, #0x1e] + bl FUN_020208B8 + pop {r3, pc} +_0202097C: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + nop +_02020984: .word 0x021C48F8 + + thumb_func_start FUN_02020988 +FUN_02020988: ; 0x02020988 + push {r3, lr} + ldr r2, _020209A4 ; =0x021C48F8 + ldrh r1, [r2, #0x20] + cmp r1, #0x0 + beq _0202099C + ldrh r1, [r2, #0x1c] + ldrh r2, [r2, #0x1e] + bl FUN_020208B8 + pop {r3, pc} +_0202099C: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + nop +_020209A4: .word 0x021C48F8 + + thumb_func_start FUN_020209A8 +FUN_020209A8: ; 0x020209A8 + push {r3-r7, lr} + ldr r7, _020209F0 ; =0x021C48F8 + add r5, r0, #0x0 + ldrh r0, [r7, #0x22] + cmp r0, #0x0 + beq _020209EA + mov r6, #0x0 + add r4, r5, #0x0 +_020209B8: + ldrb r0, [r5, #0x0] + cmp r0, #0xfe + bne _020209D0 + ldrh r1, [r7, #0x1c] + ldrh r2, [r7, #0x1e] + add r0, r4, #0x0 + bl FUN_02020904 + cmp r0, #0x0 + beq _020209E2 + add r0, r6, #0x0 + pop {r3-r7, pc} +_020209D0: + ldrh r1, [r7, #0x1c] + ldrh r2, [r7, #0x1e] + add r0, r4, #0x0 + bl FUN_02020930 + cmp r0, #0x0 + beq _020209E2 + add r0, r6, #0x0 + pop {r3-r7, pc} +_020209E2: + add r5, r5, #0x4 + add r4, r4, #0x4 + add r6, r6, #0x1 + b _020209B8 +_020209EA: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + .balign 4 +_020209F0: .word 0x021C48F8 + + thumb_func_start FUN_020209F4 +FUN_020209F4: ; 0x020209F4 + push {r3-r7, lr} + ldr r7, _02020A3C ; =0x021C48F8 + add r5, r0, #0x0 + ldrh r0, [r7, #0x20] + cmp r0, #0x0 + beq _02020A36 + mov r6, #0x0 + add r4, r5, #0x0 +_02020A04: + ldrb r0, [r5, #0x0] + cmp r0, #0xfe + bne _02020A1C + ldrh r1, [r7, #0x1c] + ldrh r2, [r7, #0x1e] + add r0, r4, #0x0 + bl FUN_02020904 + cmp r0, #0x0 + beq _02020A2E + add r0, r6, #0x0 + pop {r3-r7, pc} +_02020A1C: + ldrh r1, [r7, #0x1c] + ldrh r2, [r7, #0x1e] + add r0, r4, #0x0 + bl FUN_02020930 + cmp r0, #0x0 + beq _02020A2E + add r0, r6, #0x0 + pop {r3-r7, pc} +_02020A2E: + add r5, r5, #0x4 + add r4, r4, #0x4 + add r6, r6, #0x1 + b _02020A04 +_02020A36: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + .balign 4 +_02020A3C: .word 0x021C48F8 + + thumb_func_start FUN_02020A40 +FUN_02020A40: ; 0x02020A40 + push {r3, lr} + ldr r2, _02020A68 ; =0x021C48F8 + ldrh r1, [r2, #0x22] + cmp r1, #0x0 + beq _02020A62 + ldrb r1, [r0, #0x0] + cmp r1, #0xfe + ldrh r1, [r2, #0x1c] + bne _02020A5A + ldrh r2, [r2, #0x1e] + bl FUN_02020904 + pop {r3, pc} +_02020A5A: + ldrh r2, [r2, #0x1e] + bl FUN_02020930 + pop {r3, pc} +_02020A62: + mov r0, #0x0 + pop {r3, pc} + nop +_02020A68: .word 0x021C48F8 + + thumb_func_start FUN_02020A6C +FUN_02020A6C: ; 0x02020A6C + push {r3, lr} + ldr r2, _02020A94 ; =0x021C48F8 + ldrh r1, [r2, #0x20] + cmp r1, #0x0 + beq _02020A8E + ldrb r1, [r0, #0x0] + cmp r1, #0xfe + ldrh r1, [r2, #0x1c] + bne _02020A86 + ldrh r2, [r2, #0x1e] + bl FUN_02020904 + pop {r3, pc} +_02020A86: + ldrh r2, [r2, #0x1e] + bl FUN_02020930 + pop {r3, pc} +_02020A8E: + mov r0, #0x0 + pop {r3, pc} + nop +_02020A94: .word 0x021C48F8 + + thumb_func_start FUN_02020A98 +FUN_02020A98: ; 0x02020A98 + ldr r0, _02020AA0 ; =0x021C48F8 + ldrh r0, [r0, #0x22] + bx lr + nop +_02020AA0: .word 0x021C48F8 + + thumb_func_start FUN_02020AA4 +FUN_02020AA4: ; 0x02020AA4 + ldr r0, _02020AAC ; =0x021C48F8 + ldrh r0, [r0, #0x20] + bx lr + nop +_02020AAC: .word 0x021C48F8 + + thumb_func_start FUN_02020AB0 +FUN_02020AB0: ; 0x02020AB0 + ldr r2, _02020AC8 ; =0x021C48F8 + ldrh r3, [r2, #0x22] + cmp r3, #0x0 + beq _02020AC4 + ldrh r3, [r2, #0x1c] + str r3, [r0, #0x0] + ldrh r0, [r2, #0x1e] + str r0, [r1, #0x0] + mov r0, #0x1 + bx lr +_02020AC4: + mov r0, #0x0 + bx lr + .balign 4 +_02020AC8: .word 0x021C48F8 + + thumb_func_start FUN_02020ACC +FUN_02020ACC: ; 0x02020ACC + ldr r2, _02020AE4 ; =0x021C48F8 + ldrh r3, [r2, #0x20] + cmp r3, #0x0 + beq _02020AE0 + ldrh r3, [r2, #0x1c] + str r3, [r0, #0x0] + ldrh r0, [r2, #0x1e] + str r0, [r1, #0x0] + mov r0, #0x1 + bx lr +_02020AE0: + mov r0, #0x0 + bx lr + .balign 4 +_02020AE4: .word 0x021C48F8 + + thumb_func_start FUN_02020AE8 +FUN_02020AE8: ; 0x02020AE8 + push {r3, lr} + ldrb r3, [r0, #0x0] + cmp r3, #0xfe + bne _02020AF6 + bl FUN_02020904 + pop {r3, pc} +_02020AF6: + bl FUN_02020930 + pop {r3, pc} + + thumb_func_start FUN_02020AFC +FUN_02020AFC: ; 0x02020AFC + push {r3, lr} + ldr r0, _02020B24 ; =0x021C59B0 + mov r2, #0x0 + str r2, [r0, #0x4] + str r2, [r0, #0x8] + ldr r1, _02020B28 ; =0x0400010E + str r2, [r0, #0x0] + strh r2, [r1, #0x0] + sub r0, r1, #0x2 + strh r2, [r0, #0x0] + mov r0, #0xc1 + strh r0, [r1, #0x0] + ldr r1, _02020B2C ; =FUN_02020B30 + mov r0, #0x40 + blx OS_SetIrqFunction + mov r0, #0x40 + blx OS_EnableIrqMask + pop {r3, pc} + .balign 4 +_02020B24: .word 0x021C59B0 +_02020B28: .word 0x0400010E +_02020B2C: .word FUN_02020B30 + + thumb_func_start FUN_02020B30 +FUN_02020B30: ; 0x02020B30 + ldr r0, _02020B68 ; =0x021C59B0 + mov r3, #0x0 + ldr r1, [r0, #0x4] + ldr r2, [r0, #0x8] + add r1, r1, #0x1 + adc r2, r3 + str r1, [r0, #0x4] + str r2, [r0, #0x8] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02020B54 + ldr r2, _02020B6C ; =0x0400010E + strh r3, [r2, #0x0] + sub r1, r2, #0x2 + strh r3, [r1, #0x0] + mov r1, #0xc1 + strh r1, [r2, #0x0] + str r3, [r0, #0x0] +_02020B54: + ldr r3, _02020B70 ; =0x027E0000 + ldr r1, _02020B74 ; =0x00003FF8 + mov r0, #0x40 + ldr r2, [r3, r1] + orr r2, r0 + str r2, [r3, r1] + ldr r3, _02020B78 ; =OS_SetIrqFunction + ldr r1, _02020B7C ; =FUN_02020B30 + bx r3 + nop +_02020B68: .word 0x021C59B0 +_02020B6C: .word 0x0400010E +_02020B70: .word 0x027E0000 +_02020B74: .word 0x00003FF8 +_02020B78: .word OS_SetIrqFunction +_02020B7C: .word FUN_02020B30 + + thumb_func_start FUN_02020B80 +FUN_02020B80: ; 0x02020B80 + push {r4-r5, lr} + sub sp, #0xc + blx OS_DisableInterrupts + ldr r1, _02020BE4 ; =0x0400010C + add r3, sp, #0x0 + ldrh r1, [r1, #0x0] + ldr r2, _02020BE8 ; =0x0000FFFF + strh r1, [r3, #0x0] + ldr r1, _02020BEC ; =0x021C59B0 + ldr r5, [r1, #0x4] + ldr r4, [r1, #0x8] + mov r1, #0x0 + mvn r1, r1 + and r1, r5 + str r1, [sp, #0x4] + and r2, r4 + ldr r1, _02020BF0 ; =0x04000214 + str r2, [sp, #0x8] + ldr r2, [r1, #0x0] + mov r1, #0x40 + tst r2, r1 + beq _02020BC4 + ldrh r2, [r3, #0x0] + lsl r1, r1, #0x9 + tst r1, r2 + bne _02020BC4 + ldr r2, [sp, #0x4] + mov r1, #0x0 + ldr r3, [sp, #0x8] + add r2, r2, #0x1 + adc r3, r1 + str r2, [sp, #0x4] + str r3, [sp, #0x8] +_02020BC4: + blx OS_RestoreInterrupts + ldr r2, [sp, #0x4] + ldr r1, [sp, #0x8] + lsr r0, r2, #0x10 + lsl r1, r1, #0x10 + orr r1, r0 + add r0, sp, #0x0 + lsl r3, r2, #0x10 + ldrh r2, [r0, #0x0] + asr r0, r2, #0x1f + orr r1, r0 + add r0, r3, #0x0 + orr r0, r2 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_02020BE4: .word 0x0400010C +_02020BE8: .word 0x0000FFFF +_02020BEC: .word 0x021C59B0 +_02020BF0: .word 0x04000214 + + thumb_func_start FUN_02020BF4 +FUN_02020BF4: ; 0x02020BF4 + ldr r3, _02020BF8 ; =FUN_02020B80 + bx r3 + .balign 4 +_02020BF8: .word FUN_02020B80 + + thumb_func_start FUN_02020BFC +FUN_02020BFC: ; 0x02020BFC + push {r3, lr} + lsr r2, r0, #0x1a + lsl r1, r1, #0x6 + orr r1, r2 + ldr r2, _02020C10 ; =0x000082EA + lsl r0, r0, #0x6 + mov r3, #0x0 + blx _ll_udiv + pop {r3, pc} + .balign 4 +_02020C10: .word 0x000082EA + + thumb_func_start FUN_02020C14 +FUN_02020C14: ; 0x02020C14 + push {r3, lr} + lsr r2, r0, #0x1a + lsl r1, r1, #0x6 + orr r1, r2 + ldr r2, _02020C28 ; =0x01FF6210 + lsl r0, r0, #0x6 + mov r3, #0x0 + blx _ll_udiv + pop {r3, pc} + .balign 4 +_02020C28: .word 0x01FF6210 + + thumb_func_start ErrorHandling +ErrorHandling: ; 0x02020C2C + push {r3, lr} + bl FUN_02031810 + cmp r0, #0x0 + beq _02020C42 + blx OS_GetProcMode + cmp r0, #0x12 + beq _02020C42 + bl FUN_0208A9B8 +_02020C42: + pop {r3, pc} + + thumb_func_start FUN_02020C44 +FUN_02020C44: ; 0x02020C44 + push {r3-r7, lr} + add r4, r1, #0x0 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xc + bl FUN_02016998 + add r6, r0, #0x0 + bne _02020C5A + bl ErrorHandling +_02020C5A: + add r0, r4, #0x0 + lsl r1, r7, #0x3 + bl FUN_02016998 + str r0, [r6, #0x0] + cmp r0, #0x0 + bne _02020C6C + bl ErrorHandling +_02020C6C: + mov r4, #0x0 + cmp r7, #0x0 + ble _02020C84 + add r5, r4, #0x0 +_02020C74: + ldr r0, [r6, #0x0] + add r0, r0, r5 + bl FUN_02020E78 + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, r7 + blt _02020C74 +_02020C84: + str r7, [r6, #0x4] + mov r0, #0x0 + str r0, [r6, #0x8] + add r0, r6, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02020C90 +FUN_02020C90: ; 0x02020C90 + push {r4, lr} + add r4, r0, #0x0 + bne _02020C9A + bl ErrorHandling +_02020C9A: + add r0, r4, #0x0 + bl FUN_02020D9C + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020CB0 +FUN_02020CB0: ; 0x02020CB0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020CBE + bl ErrorHandling +_02020CBE: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02020DD8 + cmp r0, #0x0 + bne _02020CCE + mov r0, #0x1 + pop {r3-r5, pc} +_02020CCE: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02020CD4 +FUN_02020CD4: ; 0x02020CD4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + add r6, r2, #0x0 + cmp r5, #0x0 + bne _02020CE4 + bl ErrorHandling +_02020CE4: + add r0, r5, #0x0 + bl FUN_02020E48 + add r4, r0, #0x0 + bne _02020CF2 + bl ErrorHandling +_02020CF2: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02020CB0 + cmp r0, #0x1 + beq _02020D02 + bl ErrorHandling +_02020D02: + str r7, [r4, #0x4] + str r6, [r4, #0x0] + ldr r0, [r5, #0x8] + add r0, r0, #0x1 + str r0, [r5, #0x8] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02020D10 +FUN_02020D10: ; 0x02020D10 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + cmp r5, #0x0 + bne _02020D22 + bl ErrorHandling +_02020D22: + cmp r6, #0x0 + bne _02020D2A + bl ErrorHandling +_02020D2A: + add r0, r5, #0x0 + bl FUN_02020E48 + add r4, r0, #0x0 + bne _02020D38 + bl ErrorHandling +_02020D38: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02020CB0 + cmp r0, #0x1 + beq _02020D48 + bl ErrorHandling +_02020D48: + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_020161A4 + str r0, [r4, #0x4] + cmp r0, #0x0 + bne _02020D5A + bl ErrorHandling +_02020D5A: + str r7, [r4, #0x0] + ldr r0, [r5, #0x8] + add r0, r0, #0x1 + str r0, [r5, #0x8] + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02020D68 +FUN_02020D68: ; 0x02020D68 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020D76 + bl ErrorHandling +_02020D76: + cmp r4, #0x0 + bne _02020D7E + bl ErrorHandling +_02020D7E: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02020D8C + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x4] +_02020D8C: + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0x0] + ldr r0, [r5, #0x8] + sub r0, r0, #0x1 + str r0, [r5, #0x8] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02020D9C +FUN_02020D9C: ; 0x02020D9C + push {r3-r7, lr} + add r5, r0, #0x0 + bne _02020DA6 + bl ErrorHandling +_02020DA6: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + bne _02020DB0 + bl ErrorHandling +_02020DB0: + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + ble _02020DD6 + add r4, r6, #0x0 + sub r7, r6, #0x1 +_02020DBC: + ldr r1, [r5, #0x0] + ldr r0, [r1, r4] + cmp r0, r7 + beq _02020DCC + add r0, r5, #0x0 + add r1, r1, r4 + bl FUN_02020D68 +_02020DCC: + ldr r0, [r5, #0x4] + add r6, r6, #0x1 + add r4, #0x8 + cmp r6, r0 + blt _02020DBC +_02020DD6: + pop {r3-r7, pc} + + thumb_func_start FUN_02020DD8 +FUN_02020DD8: ; 0x02020DD8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020DE6 + bl ErrorHandling +_02020DE6: + ldr r6, [r5, #0x4] + mov r1, #0x0 + cmp r6, #0x0 + ble _02020E06 + ldr r3, [r5, #0x0] + add r2, r3, #0x0 +_02020DF2: + ldr r0, [r2, #0x0] + cmp r4, r0 + bne _02020DFE + lsl r0, r1, #0x3 + add r0, r3, r0 + pop {r4-r6, pc} +_02020DFE: + add r1, r1, #0x1 + add r2, #0x8 + cmp r1, r6 + blt _02020DF2 +_02020E06: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02020E0C +FUN_02020E0C: ; 0x02020E0C + push {r4, lr} + add r4, r0, #0x0 + bne _02020E16 + bl ErrorHandling +_02020E16: + ldr r0, [r4, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020E1C +FUN_02020E1C: ; 0x02020E1C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020E2A + bl ErrorHandling +_02020E2A: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _02020E34 + bl FUN_02016A18 +_02020E34: + str r4, [r5, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_02020E38 +FUN_02020E38: ; 0x02020E38 + push {r4, lr} + add r4, r0, #0x0 + bne _02020E42 + bl ErrorHandling +_02020E42: + ldr r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020E48 +FUN_02020E48: ; 0x02020E48 + push {r3-r5, lr} + add r4, r0, #0x0 + bne _02020E52 + bl ErrorHandling +_02020E52: + ldr r5, [r4, #0x4] + mov r2, #0x0 + cmp r5, #0x0 + ble _02020E74 + ldr r4, [r4, #0x0] + sub r0, r2, #0x1 + add r3, r4, #0x0 +_02020E60: + ldr r1, [r3, #0x0] + cmp r1, r0 + bne _02020E6C + lsl r0, r2, #0x3 + add r0, r4, r0 + pop {r3-r5, pc} +_02020E6C: + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, r5 + blt _02020E60 +_02020E74: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02020E78 +FUN_02020E78: ; 0x02020E78 + push {r4, lr} + add r4, r0, #0x0 + bne _02020E82 + bl ErrorHandling +_02020E82: + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02020E90 +FUN_02020E90: ; 0x02020E90 + push {r3-r7, lr} + add r4, r1, #0x0 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_02016998 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02020C44 + mov r1, #0x18 + str r0, [r7, #0x0] + add r0, r4, #0x0 + mul r1, r6 + bl FUN_02016998 + mov r4, #0x0 + str r0, [r7, #0x4] + cmp r6, #0x0 + ble _02020ECE + add r5, r4, #0x0 +_02020EBE: + ldr r0, [r7, #0x4] + add r0, r0, r5 + bl FUN_0202120C + add r4, r4, #0x1 + add r5, #0x18 + cmp r4, r6 + blt _02020EBE +_02020ECE: + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02020ED4 +FUN_02020ED4: ; 0x02020ED4 + push {r4, lr} + add r4, r0, #0x0 + bne _02020EDE + bl ErrorHandling +_02020EDE: + add r0, r4, #0x0 + bl FUN_02021010 + ldr r0, [r4, #0x0] + bl FUN_02020C90 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02020EF8 +FUN_02020EF8: ; 0x02020EF8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020F06 + bl ErrorHandling +_02020F06: + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02020CB0 + pop {r3-r5, pc} + + thumb_func_start FUN_02020F10 +FUN_02020F10: ; 0x02020F10 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r3, #0x0 + str r2, [sp, #0x0] + cmp r5, #0x0 + bne _02020F22 + bl ErrorHandling +_02020F22: + add r0, r5, #0x0 + bl FUN_020211DC + add r4, r0, #0x0 + strh r7, [r4, #0x16] + ldrh r0, [r4, #0x16] + cmp r0, #0x1 + bne _02020F40 + ldr r1, [sp, #0x18] + add r0, r6, #0x0 + bl FUN_02021310 + add r1, r0, #0x0 + str r6, [r4, #0x10] + b _02020F46 +_02020F40: + mov r0, #0x0 + add r1, r6, #0x0 + str r0, [r4, #0x10] +_02020F46: + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x0] + bl FUN_02020CD4 + str r0, [r4, #0x0] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02020F54 +FUN_02020F54: ; 0x02020F54 + push {r3-r4, lr} + sub sp, #0x4 + ldr r4, [sp, #0x10] + str r4, [sp, #0x0] + bl FUN_02020F10 + add r4, r0, #0x0 + bl FUN_02021174 + add r0, r4, #0x0 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02020F6C +FUN_02020F6C: ; 0x02020F6C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020F7A + bl ErrorHandling +_02020F7A: + cmp r4, #0x0 + bne _02020F82 + bl ErrorHandling +_02020F82: + ldrh r0, [r4, #0x16] + cmp r0, #0x1 + bne _02020F98 + ldrh r0, [r4, #0x14] + cmp r0, #0x0 + bne _02020F98 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0x0 + strh r0, [r4, #0x16] +_02020F98: + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _02020FA4 + ldr r0, [r5, #0x0] + bl FUN_02020D68 +_02020FA4: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02020FB8 + ldr r1, _02020FE8 ; =0x021064BC + ldr r1, [r1, #0x0] + blx r1 + cmp r0, #0x0 + beq _02020FB8 + bl ErrorHandling +_02020FB8: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _02020FCC + ldr r1, _02020FE8 ; =0x021064BC + ldr r1, [r1, #0x0] + blx r1 + cmp r0, #0x0 + beq _02020FCC + bl ErrorHandling +_02020FCC: + ldr r0, [r4, #0xc] + cmp r0, #0x0 + beq _02020FE0 + ldr r1, _02020FEC ; =0x021064C4 + ldr r1, [r1, #0x0] + blx r1 + cmp r0, #0x0 + beq _02020FE0 + bl ErrorHandling +_02020FE0: + add r0, r4, #0x0 + bl FUN_0202120C + pop {r3-r5, pc} + .balign 4 +_02020FE8: .word 0x021064BC +_02020FEC: .word 0x021064C4 + + thumb_func_start FUN_02020FF0 +FUN_02020FF0: ; 0x02020FF0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02020FFE + bl ErrorHandling +_02020FFE: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02021050 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02020F6C + pop {r3-r5, pc} + + thumb_func_start FUN_02021010 +FUN_02021010: ; 0x02021010 + push {r4-r6, lr} + add r5, r0, #0x0 + bne _0202101A + bl ErrorHandling +_0202101A: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _02021024 + bl ErrorHandling +_02021024: + ldr r0, [r5, #0x0] + mov r6, #0x0 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + ble _0202104C + add r4, r6, #0x0 +_02021030: + ldr r1, [r5, #0x4] + ldr r0, [r1, r4] + cmp r0, #0x0 + beq _02021040 + add r0, r5, #0x0 + add r1, r1, r4 + bl FUN_02020F6C +_02021040: + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + ldr r0, [r0, #0x4] + add r4, #0x18 + cmp r6, r0 + blt _02021030 +_0202104C: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02021050 +FUN_02021050: ; 0x02021050 + push {r3-r7, lr} + add r6, r0, #0x0 + add r7, r1, #0x0 + cmp r6, #0x0 + bne _0202105E + bl ErrorHandling +_0202105E: + ldr r0, [r6, #0x0] + mov r4, #0x0 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + ble _02021092 + add r5, r4, #0x0 +_0202106A: + ldr r1, [r6, #0x4] + ldr r0, [r1, r5] + cmp r0, #0x0 + beq _02021086 + add r0, r1, r5 + bl FUN_02021098 + cmp r0, r7 + bne _02021086 + mov r0, #0x18 + ldr r1, [r6, #0x4] + mul r0, r4 + add r0, r1, r0 + pop {r3-r7, pc} +_02021086: + ldr r0, [r6, #0x0] + add r4, r4, #0x1 + ldr r0, [r0, #0x4] + add r5, #0x18 + cmp r4, r0 + blt _0202106A +_02021092: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02021098 +FUN_02021098: ; 0x02021098 + push {r4, lr} + add r4, r0, #0x0 + bne _020210A2 + bl ErrorHandling +_020210A2: + ldr r0, [r4, #0x0] + bl FUN_02020E38 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020210AC +FUN_020210AC: ; 0x020210AC + push {r4, lr} + add r4, r0, #0x0 + bne _020210B6 + bl ErrorHandling +_020210B6: + add r0, r4, #0x0 + bl FUN_02021220 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020210C0 +FUN_020210C0: ; 0x020210C0 + push {r4, lr} + add r4, r0, #0x0 + bne _020210CA + bl ErrorHandling +_020210CA: + ldrh r0, [r4, #0x14] + cmp r0, #0x0 + beq _020210D4 + bl ErrorHandling +_020210D4: + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _020210E0 + bl ErrorHandling + pop {r4, pc} +_020210E0: + add r0, r4, #0x0 + bl FUN_02021230 + add r1, r4, #0x0 + bl FUN_020212B8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020210F0 +FUN_020210F0: ; 0x020210F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _020210FE + bl ErrorHandling +_020210FE: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02021050 + bl FUN_020210C0 + pop {r3-r5, pc} + + thumb_func_start FUN_0202110C +FUN_0202110C: ; 0x0202110C + push {r4, lr} + add r4, r0, #0x0 + bne _02021116 + bl ErrorHandling +_02021116: + ldrh r0, [r4, #0x16] + cmp r0, #0x0 + bne _02021122 + bl ErrorHandling + pop {r4, pc} +_02021122: + ldrh r0, [r4, #0x14] + cmp r0, #0x0 + beq _0202112E + bl ErrorHandling + pop {r4, pc} +_0202112E: + add r0, r4, #0x0 + bl FUN_02021230 + bl FUN_020212F8 + add r0, r4, #0x0 + bl FUN_02021220 + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + ldr r3, [r4, #0xc] + bl FUN_020212E4 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x10] + mov r0, #0x1 + strh r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start FUN_02021158 +FUN_02021158: ; 0x02021158 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021166 + bl ErrorHandling +_02021166: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02021050 + bl FUN_0202110C + pop {r3-r5, pc} + + thumb_func_start FUN_02021174 +FUN_02021174: ; 0x02021174 + push {r4, lr} + add r4, r0, #0x0 + bne _0202117E + bl ErrorHandling +_0202117E: + ldrh r0, [r4, #0x14] + cmp r0, #0x0 + beq _02021188 + bl ErrorHandling +_02021188: + ldr r0, [r4, #0xc] + cmp r0, #0x0 + beq _02021194 + bl ErrorHandling + pop {r4, pc} +_02021194: + add r0, r4, #0x0 + bl FUN_02021230 + add r2, r4, #0x0 + add r1, r4, #0x4 + add r4, #0xc + add r2, #0x8 + add r3, r4, #0x0 + bl FUN_02021248 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020211AC +FUN_020211AC: ; 0x020211AC + push {r4, lr} + add r4, r0, #0x0 + bne _020211B6 + bl ErrorHandling +_020211B6: + ldr r0, [r4, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020211BC +FUN_020211BC: ; 0x020211BC + push {r4, lr} + add r4, r0, #0x0 + bne _020211C6 + bl ErrorHandling +_020211C6: + ldr r0, [r4, #0x8] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020211CC +FUN_020211CC: ; 0x020211CC + push {r4, lr} + add r4, r0, #0x0 + bne _020211D6 + bl ErrorHandling +_020211D6: + ldr r0, [r4, #0xc] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020211DC +FUN_020211DC: ; 0x020211DC + push {r3-r4} + ldr r1, [r0, #0x0] + mov r2, #0x0 + ldr r4, [r1, #0x4] + cmp r4, #0x0 + ble _02021204 + ldr r3, [r0, #0x4] +_020211EA: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + bne _020211FC + ldr r1, [r0, #0x4] + mov r0, #0x18 + mul r0, r2 + add r0, r1, r0 + pop {r3-r4} + bx lr +_020211FC: + add r2, r2, #0x1 + add r3, #0x18 + cmp r2, r4 + blt _020211EA +_02021204: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0202120C +FUN_0202120C: ; 0x0202120C + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + str r1, [r0, #0xc] + strh r1, [r0, #0x14] + str r1, [r0, #0x10] + strh r1, [r0, #0x14] + bx lr + .balign 4 + + thumb_func_start FUN_02021220 +FUN_02021220: ; 0x02021220 + push {r3, lr} + ldr r0, [r0, #0x0] + bl FUN_02020E0C + blx FUN_020BC0FC + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02021230 +FUN_02021230: ; 0x02021230 + push {r3, lr} + ldrh r1, [r0, #0x16] + cmp r1, #0x0 + bne _02021240 + ldr r0, [r0, #0x0] + bl FUN_02020E0C + b _02021242 +_02021240: + ldr r0, [r0, #0x10] +_02021242: + blx FUN_020BC0FC + pop {r3, pc} + + thumb_func_start FUN_02021248 +FUN_02021248: ; 0x02021248 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + str r3, [sp, #0x8] + blx FUN_020B7E1C + add r7, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7E10 + add r6, r0, #0x0 + add r0, r5, #0x0 + blx FUN_020B7CE4 + add r4, r0, #0x0 + cmp r7, #0x0 + beq _0202127E + ldr r3, _020212B0 ; =0x021064B8 + mov r1, #0x0 + ldr r3, [r3, #0x0] + add r0, r7, #0x0 + add r2, r1, #0x0 + blx r3 + ldr r1, [sp, #0x0] + str r0, [r1, #0x0] +_0202127E: + cmp r6, #0x0 + beq _02021292 + ldr r3, _020212B0 ; =0x021064B8 + add r0, r6, #0x0 + ldr r3, [r3, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + ldr r1, [sp, #0x4] + str r0, [r1, #0x0] +_02021292: + cmp r4, #0x0 + beq _020212AC + ldr r3, _020212B4 ; =0x021064C0 + mov r1, #0x2 + ldrh r2, [r5, #0x20] + lsl r1, r1, #0xe + ldr r3, [r3, #0x0] + and r1, r2 + add r0, r4, #0x0 + mov r2, #0x0 + blx r3 + ldr r1, [sp, #0x8] + str r0, [r1, #0x0] +_020212AC: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_020212B0: .word 0x021064B8 +_020212B4: .word 0x021064C0 + + thumb_func_start FUN_020212B8 +FUN_020212B8: ; 0x020212B8 + push {r4, lr} + add r3, r1, #0x0 + ldr r1, [r3, #0x4] + ldr r2, [r3, #0x8] + ldr r3, [r3, #0xc] + add r4, r0, #0x0 + bl FUN_020212E4 + ldr r1, [r4, #0x4] + add r0, r4, #0x0 + blx DC_FlushRange + add r0, r4, #0x0 + mov r1, #0x1 + blx FUN_020B7D28 + add r0, r4, #0x0 + mov r1, #0x1 + blx FUN_020B7C78 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020212E4 +FUN_020212E4: ; 0x020212E4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r3, #0x0 + blx FUN_020B7DFC + add r0, r5, #0x0 + add r1, r4, #0x0 + blx FUN_020B7CDC + pop {r3-r5, pc} + + thumb_func_start FUN_020212F8 +FUN_020212F8: ; 0x020212F8 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x0 + blx FUN_020B7CF0 + add r0, r4, #0x0 + blx FUN_020B7C58 + add sp, #0x8 + pop {r4, pc} + + thumb_func_start FUN_02021310 +FUN_02021310: ; 0x02021310 + push {r4-r6, lr} + add r6, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02021334 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02016998 + add r1, r6, #0x0 + add r2, r5, #0x0 + add r4, r0, #0x0 + blx memcpy + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02021334 +FUN_02021334: ; 0x02021334 + push {r3-r5, lr} + add r5, r0, #0x0 + blx FUN_020BC0FC + add r4, r0, #0x0 + bne _02021344 + bl ErrorHandling +_02021344: + ldr r0, [r4, #0x14] + add r0, r4, r0 + sub r0, r0, r5 + pop {r3-r5, pc} + + thumb_func_start FUN_0202134C +FUN_0202134C: ; 0x0202134C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + blx FUN_020B33A0 + add r5, #0x80 + str r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0202135C +FUN_0202135C: ; 0x0202135C + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + blx FUN_020B3334 + add r2, r5, #0x0 + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r6, [r5, #0x28] + ldr r0, [sp, #0x18] + str r7, [r5, #0x2c] + str r0, [r5, #0x34] + ldr r0, [sp, #0x1c] + str r0, [r5, #0x14] + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _0202138C + add r1, r5, #0x0 + blx FUN_020B3390 +_0202138C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02021390 +FUN_02021390: ; 0x02021390 + add r3, r0, #0x0 + add r2, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + bx lr + .balign 4 + + thumb_func_start FUN_020213A0 +FUN_020213A0: ; 0x020213A0 + push {r3-r7, lr} + sub sp, #0x60 + add r5, r1, #0x0 + add r6, r2, #0x0 + ldr r4, [r5, #0x10] + ldr r3, [r6, #0x0] + add r2, r0, #0x0 + sub r3, r4, r3 + ldrh r1, [r0, #0x2] + mov r0, #0x3f + str r3, [sp, #0x18] + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1a + ldr r4, [r5, #0x14] + ldr r3, [r6, #0x4] + add r2, #0x8 + sub r3, r4, r3 + str r3, [sp, #0x14] + asr r3, r1, #0xb + mov r1, #0x1 + and r1, r3 + lsr r0, r0, #0x18 + cmp r1, #0x1 + bne _020213F4 + mov r0, #0x6 + ldrsh r0, [r2, r0] + lsl r4, r0, #0xc + mov r0, #0x2 + ldrsh r0, [r2, r0] + lsl r0, r0, #0xc + str r0, [sp, #0x10] + mov r0, #0x4 + ldrsh r0, [r2, r0] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + mov r0, #0x0 + ldrsh r0, [r2, r0] + lsl r0, r0, #0xc + str r0, [sp, #0x8] + b _02021400 +_020213F4: + neg r1, r0 + lsl r0, r0, #0xc + lsl r4, r1, #0xc + str r0, [sp, #0x10] + str r4, [sp, #0xc] + str r0, [sp, #0x8] +_02021400: + ldr r0, [r5, #0xc] + str r0, [sp, #0x1c] + asr r0, r0, #0x1f + str r0, [sp, #0x20] + asr r0, r4, #0x1f + str r0, [sp, #0x24] + ldr r0, [r5, #0x4] + ldr r1, [sp, #0x24] + str r0, [sp, #0x28] + asr r0, r0, #0x1f + str r0, [sp, #0x2c] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r4, #0x0 + blx _ll_mul + add r7, r1, #0x0 + str r0, [sp, #0x30] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r4, #0x0 + blx _ll_mul + add r2, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x2 + ldr r1, [sp, #0x30] + mov r4, #0x0 + lsl r0, r0, #0xa + add r0, r1, r0 + adc r7, r4 + lsl r1, r7, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + mov r1, #0x2 + lsl r1, r1, #0xa + add r2, r2, r1 + adc r3, r4 + lsl r1, r3, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + add r1, r0, r2 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x28] + add r0, r0, r1 + str r0, [sp, #0x5c] + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x2c] + asr r0, r0, #0x1f + str r0, [sp, #0x34] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x34] + blx _ll_mul + str r0, [sp, #0x38] + add r4, r1, #0x0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + blx _ll_mul + mov r2, #0x2 + ldr r3, [sp, #0x38] + lsl r2, r2, #0xa + add r2, r3, r2 + ldr r3, _0202158C ; =0x00000000 + adc r4, r3 + lsl r3, r4, #0x14 + lsr r2, r2, #0xc + orr r2, r3 + mov r3, #0x2 + lsl r3, r3, #0xa + add r3, r0, r3 + ldr r0, _0202158C ; =0x00000000 + adc r1, r0 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + ldr r0, [sp, #0x14] + add r1, r2, r1 + add r4, r0, r1 + ldr r0, [r5, #0x8] + str r0, [sp, #0x3c] + asr r0, r0, #0x1f + str r0, [sp, #0x40] + ldr r0, [sp, #0xc] + asr r0, r0, #0x1f + str r0, [sp, #0x44] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x44] + str r0, [sp, #0x48] + asr r0, r0, #0x1f + str r0, [sp, #0x4c] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x48] + ldr r3, [sp, #0x4c] + blx _ll_mul + str r0, [sp, #0x50] + add r5, r1, #0x0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x44] + ldr r2, [sp, #0x3c] + ldr r3, [sp, #0x40] + blx _ll_mul + mov r2, #0x2 + ldr r3, [sp, #0x50] + lsl r2, r2, #0xa + add r2, r3, r2 + ldr r3, _0202158C ; =0x00000000 + adc r5, r3 + lsl r3, r5, #0x14 + lsr r2, r2, #0xc + orr r2, r3 + mov r3, #0x2 + lsl r3, r3, #0xa + add r3, r0, r3 + ldr r0, _0202158C ; =0x00000000 + adc r1, r0 + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + ldr r0, [sp, #0x18] + add r1, r2, r1 + add r5, r0, r1 + ldr r0, [sp, #0x8] + asr r0, r0, #0x1f + str r0, [sp, #0x54] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x54] + ldr r2, [sp, #0x48] + ldr r3, [sp, #0x4c] + blx _ll_mul + str r0, [sp, #0x58] + str r1, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x54] + ldr r2, [sp, #0x3c] + ldr r3, [sp, #0x40] + blx _ll_mul + mov r12, r0 + add r2, r1, #0x0 + mov r0, #0x2 + ldr r1, [sp, #0x58] + lsl r0, r0, #0xa + add r3, r1, r0 + ldr r1, [sp, #0x4] + ldr r0, _0202158C ; =0x00000000 + adc r1, r0 + str r1, [sp, #0x4] + lsl r0, r1, #0x14 + lsr r1, r3, #0xc + orr r1, r0 + mov r0, #0x2 + lsl r0, r0, #0xa + mov r3, r12 + add r0, r3, r0 + ldr r3, _0202158C ; =0x00000000 + adc r2, r3 + lsl r2, r2, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + add r1, r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldr r1, [sp, #0x5c] + cmp r4, r1 + bge _02021560 + add r1, r4, #0x0 + ldr r4, [sp, #0x5c] + str r1, [sp, #0x5c] +_02021560: + cmp r0, r5 + bge _0202156A + add r1, r0, #0x0 + add r0, r5, #0x0 + add r5, r1, #0x0 +_0202156A: + cmp r4, #0x0 + ble _02021586 + ldr r2, [r6, #0xc] + ldr r1, [sp, #0x5c] + cmp r1, r2 + bge _02021586 + cmp r0, #0x0 + ble _02021586 + ldr r0, [r6, #0x8] + cmp r5, r0 + bge _02021586 + add sp, #0x60 + mov r0, #0x1 + pop {r3-r7, pc} +_02021586: + mov r0, #0x0 + add sp, #0x60 + pop {r3-r7, pc} + .balign 4 +_0202158C: .word 0x00000000 + + thumb_func_start FUN_02021590 +FUN_02021590: ; 0x02021590 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r6, r1, #0x0 + ldr r0, [sp, #0x20] + mov r1, #0x78 + add r7, r2, #0x0 + str r3, [sp, #0x4] + bl FUN_02016998 + add r4, r0, #0x0 + beq _020215C0 + ldr r1, [sp, #0x20] + ldr r3, [sp, #0x4] + str r1, [sp, #0x0] + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_02021600 + ldr r2, [sp, #0x20] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_020216D4 +_020215C0: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020215C8 +FUN_020215C8: ; 0x020215C8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02021728 + add r0, r4, #0x0 + bl FUN_020216B8 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020215E0 +FUN_020215E0: ; 0x020215E0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + add r6, r2, #0x0 + cmp r1, r4 + beq _020215FC + bl FUN_02021728 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020216D4 +_020215FC: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02021600 +FUN_02021600: ; 0x02021600 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r0, r1, #0x0 + ldr r1, [sp, #0x18] + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02006670 + str r0, [r5, #0x54] + cmp r0, #0x0 + beq _020216A6 + add r1, r5, #0x0 + add r1, #0x5c + str r1, [sp, #0x0] + add r1, r4, #0x0 + mov r2, #0x0 + mov r3, #0x10 + bl FUN_02006814 + str r6, [r5, #0x6c] + cmp r6, #0x0 + beq _02021638 + mov r0, #0x0 + str r0, [r5, #0x74] + ldr r0, _020216AC ; =FUN_0202192C + str r0, [r5, #0x70] + b _02021660 +_02021638: + ldr r0, [r5, #0x60] + cmp r0, #0x0 + bne _02021642 + bl ErrorHandling +_02021642: + ldr r0, [sp, #0x18] + ldr r1, [r5, #0x64] + bl FUN_02016998 + str r0, [r5, #0x74] + ldr r0, _020216B0 ; =FUN_02021924 + add r1, r4, #0x0 + str r0, [r5, #0x70] + ldr r0, [r5, #0x74] + str r0, [sp, #0x0] + ldr r0, [r5, #0x54] + ldr r2, [r5, #0x60] + ldr r3, [r5, #0x64] + bl FUN_02006814 +_02021660: + add r0, r5, #0x0 + add r0, #0x6a + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bhi _02021674 + add r0, r5, #0x0 + add r0, #0x6b + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bls _02021678 +_02021674: + bl ErrorHandling +_02021678: + add r0, r5, #0x0 + add r0, #0x6a + ldrb r0, [r0, #0x0] + ldr r2, _020216B4 ; =0x020EE668 + sub r0, r0, #0x1 + lsl r3, r0, #0x1 + add r0, r5, #0x0 + add r0, #0x6b + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r2, r3 + ldrb r0, [r1, r0] + str r0, [r5, #0x8] + add r0, r5, #0x0 + add r0, #0x6b + ldrb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x6a + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x4 + mul r0, r1 + str r0, [r5, #0xc] + str r4, [r5, #0x58] +_020216A6: + add sp, #0x4 + pop {r3-r6, pc} + nop +_020216AC: .word FUN_0202192C +_020216B0: .word FUN_02021924 +_020216B4: .word 0x020EE668 + + thumb_func_start FUN_020216B8 +FUN_020216B8: ; 0x020216B8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x74] + cmp r0, #0x0 + beq _020216C6 + bl FUN_02016A18 +_020216C6: + ldr r0, [r4, #0x54] + cmp r0, #0x0 + beq _020216D0 + bl FUN_020066F4 +_020216D0: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020216D4 +FUN_020216D4: ; 0x020216D4 + push {r3, lr} + add r3, r1, #0x0 + add r1, r2, #0x0 + str r3, [r0, #0x0] + ldr r2, _020216E8 ; =0x020EE66C + lsl r3, r3, #0x2 + ldr r2, [r2, r3] + blx r2 + pop {r3, pc} + nop +_020216E8: .word 0x020EE66C + + thumb_func_start FUN_020216EC +FUN_020216EC: ; 0x020216EC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0xc] + ldr r0, [r5, #0x64] + add r4, r2, #0x0 + mul r4, r0 + add r0, r1, #0x0 + add r1, r4, #0x0 + bl FUN_02016998 + str r0, [r5, #0x10] + ldr r0, _02021718 ; =FUN_02021774 + add r3, r4, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x10] + str r0, [sp, #0x0] + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x58] + ldr r2, [r5, #0x5c] + bl FUN_02006814 + pop {r3-r5, pc} + .balign 4 +_02021718: .word FUN_02021774 + + thumb_func_start FUN_0202171C +FUN_0202171C: ; 0x0202171C + ldr r1, _02021724 ; =FUN_0202181C + str r1, [r0, #0x4] + bx lr + nop +_02021724: .word FUN_0202181C + + thumb_func_start FUN_02021728 +FUN_02021728: ; 0x02021728 + push {r3, lr} + ldr r1, [r0, #0x0] + lsl r2, r1, #0x2 + ldr r1, _02021738 ; =0x020EE674 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_02021738: .word 0x020EE674 + + thumb_func_start FUN_0202173C +FUN_0202173C: ; 0x0202173C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x10] + pop {r4, pc} + + thumb_func_start FUN_0202174C +FUN_0202174C: ; 0x0202174C + bx lr + .balign 4 + + thumb_func_start FUN_02021750 +FUN_02021750: ; 0x02021750 + push {r3, lr} + ldr r3, [r0, #0x64] + cmp r1, r3 + bhi _02021764 + sub r1, r1, #0x1 + lsl r1, r1, #0x10 + ldr r3, [r0, #0x4] + lsr r1, r1, #0x10 + blx r3 + pop {r3, pc} +_02021764: + add r0, r2, #0x0 + mov r1, #0x0 + add r0, #0x80 + strb r1, [r0, #0x0] + add r2, #0x81 + strb r1, [r2, #0x0] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02021774 +FUN_02021774: ; 0x02021774 + push {r3-r7, lr} + str r1, [sp, #0x0] + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r1, [r7, #0xc] + add r5, r0, #0x0 + ldr r0, [r7, #0x8] + add r6, r2, #0x0 + mul r5, r1 + ldr r4, [r7, #0x10] + cmp r0, #0x3 + bhi _02021802 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02021798: ; jump table (using 16-bit offset) + .short _020217A0 - _02021798 - 2; case 0 + .short _020217AA - _02021798 - 2; case 1 + .short _020217C0 - _02021798 - 2; case 2 + .short _020217D6 - _02021798 - 2; case 3 +_020217A0: + add r0, r4, r5 + add r1, r6, #0x0 + bl FUN_0201C100 + b _02021802 +_020217AA: + add r0, r4, r5 + add r1, r6, #0x0 + bl FUN_0201C100 + add r0, r4, r5 + add r1, r6, #0x0 + add r0, #0x10 + add r1, #0x40 + bl FUN_0201C100 + b _02021802 +_020217C0: + add r0, r4, r5 + add r1, r6, #0x0 + bl FUN_0201C100 + add r0, r4, r5 + add r1, r6, #0x0 + add r0, #0x10 + add r1, #0x20 + bl FUN_0201C100 + b _02021802 +_020217D6: + add r0, r4, r5 + add r1, r6, #0x0 + bl FUN_0201C100 + add r0, r4, r5 + add r1, r6, #0x0 + add r0, #0x10 + add r1, #0x20 + bl FUN_0201C100 + add r0, r4, r5 + add r1, r6, #0x0 + add r0, #0x20 + add r1, #0x40 + bl FUN_0201C100 + add r0, r4, r5 + add r1, r6, #0x0 + add r0, #0x30 + add r1, #0x60 + bl FUN_0201C100 +_02021802: + ldr r1, [sp, #0x0] + ldr r2, [r7, #0x70] + add r0, r7, #0x0 + blx r2 + add r1, r6, #0x0 + add r1, #0x80 + add r7, #0x69 + strb r0, [r1, #0x0] + ldrb r0, [r7, #0x0] + add r6, #0x81 + strb r0, [r6, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202181C +FUN_0202181C: ; 0x0202181C + push {r3-r7, lr} + add r4, r0, #0x0 + ldr r6, [r4, #0xc] + add r0, #0x14 + str r0, [sp, #0x0] + add r7, r1, #0x0 + add r5, r2, #0x0 + add r2, r7, #0x0 + ldr r3, [r4, #0x5c] + mul r2, r6 + add r2, r3, r2 + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x58] + add r3, r6, #0x0 + bl FUN_02006814 + ldr r0, [r4, #0x8] + cmp r0, #0x3 + bhi _020218C0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202184E: ; jump table (using 16-bit offset) + .short _02021856 - _0202184E - 2; case 0 + .short _02021862 - _0202184E - 2; case 1 + .short _0202187A - _0202184E - 2; case 2 + .short _02021892 - _0202184E - 2; case 3 +_02021856: + add r0, r4, #0x0 + add r0, #0x14 + add r1, r5, #0x0 + bl FUN_0201C100 + b _020218C0 +_02021862: + add r0, r4, #0x0 + add r0, #0x14 + add r1, r5, #0x0 + bl FUN_0201C100 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r0, #0x24 + add r1, #0x40 + bl FUN_0201C100 + b _020218C0 +_0202187A: + add r0, r4, #0x0 + add r0, #0x14 + add r1, r5, #0x0 + bl FUN_0201C100 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r0, #0x24 + add r1, #0x20 + bl FUN_0201C100 + b _020218C0 +_02021892: + add r0, r4, #0x0 + add r0, #0x14 + add r1, r5, #0x0 + bl FUN_0201C100 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r0, #0x24 + add r1, #0x20 + bl FUN_0201C100 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r0, #0x34 + add r1, #0x40 + bl FUN_0201C100 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r0, #0x44 + add r1, #0x60 + bl FUN_0201C100 +_020218C0: + ldr r2, [r4, #0x70] + add r0, r4, #0x0 + add r1, r7, #0x0 + blx r2 + add r1, r5, #0x0 + add r1, #0x80 + add r4, #0x69 + strb r0, [r1, #0x0] + ldrb r0, [r4, #0x0] + add r5, #0x81 + strb r0, [r5, #0x0] + pop {r3-r7, pc} + + thumb_func_start FUN_020218D8 +FUN_020218D8: ; 0x020218D8 + push {r3-r7, lr} + add r4, r1, #0x0 + ldrh r1, [r4, #0x0] + add r5, r0, #0x0 + ldr r0, _0202191C ; =0x0000FFFF + add r7, r2, #0x0 + mov r6, #0x0 + cmp r1, r0 + beq _02021916 +_020218EA: + ldr r0, _02021920 ; =0x0000FFFE + cmp r1, r0 + bne _02021900 + add r0, r4, #0x0 + bl FUN_0201B8B8 + add r4, r0, #0x0 + ldrh r1, [r4, #0x0] + ldr r0, _0202191C ; =0x0000FFFF + cmp r1, r0 + beq _02021916 +_02021900: + ldr r2, [r5, #0x70] + add r0, r5, #0x0 + sub r1, r1, #0x1 + blx r2 + add r4, r4, #0x2 + add r0, r7, r0 + add r6, r6, r0 + ldrh r1, [r4, #0x0] + ldr r0, _0202191C ; =0x0000FFFF + cmp r1, r0 + bne _020218EA +_02021916: + sub r0, r6, r7 + pop {r3-r7, pc} + nop +_0202191C: .word 0x0000FFFF +_02021920: .word 0x0000FFFE + + thumb_func_start FUN_02021924 +FUN_02021924: ; 0x02021924 + ldr r0, [r0, #0x74] + ldrb r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_0202192C +FUN_0202192C: ; 0x0202192C + add r0, #0x68 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02021934 +FUN_02021934: ; 0x02021934 + push {r3-r7, lr} + add r5, r1, #0x0 + ldrh r1, [r5, #0x0] + add r7, r0, #0x0 + mov r4, #0x0 + ldr r0, _02021994 ; =0x0000FFFF + add r6, r2, #0x0 + str r4, [sp, #0x0] + cmp r1, r0 + beq _02021986 +_02021948: + ldr r0, _02021998 ; =0x0000FFFE + cmp r1, r0 + bne _02021958 + add r0, r5, #0x0 + bl FUN_0201B8B8 + add r5, r0, #0x0 + b _0202197E +_02021958: + mov r0, #0xe + lsl r0, r0, #0xc + cmp r1, r0 + bne _02021970 + ldr r0, [sp, #0x0] + sub r1, r4, r6 + cmp r0, r1 + bhs _0202196A + str r1, [sp, #0x0] +_0202196A: + mov r4, #0x0 + add r5, r5, #0x2 + b _0202197E +_02021970: + ldr r2, [r7, #0x70] + add r0, r7, #0x0 + sub r1, r1, #0x1 + blx r2 + add r0, r6, r0 + add r4, r4, r0 + add r5, r5, #0x2 +_0202197E: + ldrh r1, [r5, #0x0] + ldr r0, _02021994 ; =0x0000FFFF + cmp r1, r0 + bne _02021948 +_02021986: + ldr r0, [sp, #0x0] + sub r1, r4, r6 + cmp r0, r1 + bhs _02021990 + str r1, [sp, #0x0] +_02021990: + ldr r0, [sp, #0x0] + pop {r3-r7, pc} + .balign 4 +_02021994: .word 0x0000FFFF +_02021998: .word 0x0000FFFE + + thumb_func_start FUN_0202199C +FUN_0202199C: ; 0x0202199C + push {r3-r7, lr} + add r5, r1, #0x0 + ldrh r1, [r5, #0x0] + add r6, r0, #0x0 + ldr r0, _020219EC ; =0x0000FFFF + mov r4, #0x0 + cmp r1, r0 + beq _020219E8 + sub r7, r0, #0x1 +_020219AE: + cmp r1, r7 + bne _020219D4 + add r0, r5, #0x0 + bl FUN_0201B8E0 + ldr r1, _020219F0 ; =0x00000203 + cmp r0, r1 + bne _020219CA + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0201B914 + add r4, r0, #0x0 + sub r4, #0xc +_020219CA: + add r0, r5, #0x0 + bl FUN_0201B8B8 + add r5, r0, #0x0 + b _020219E0 +_020219D4: + ldr r2, [r6, #0x70] + add r0, r6, #0x0 + sub r1, r1, #0x1 + blx r2 + add r4, r4, r0 + add r5, r5, #0x2 +_020219E0: + ldrh r1, [r5, #0x0] + ldr r0, _020219EC ; =0x0000FFFF + cmp r1, r0 + bne _020219AE +_020219E8: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_020219EC: .word 0x0000FFFF +_020219F0: .word 0x00000203 + + thumb_func_start FUN_020219F4 +FUN_020219F4: ; 0x020219F4 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + lsl r1, r4, #0x1 + add r1, #0xa + bl FUN_02016998 + cmp r0, #0x0 + beq _02021A14 + ldr r1, _02021A18 ; =0xB6F8D2EC + str r1, [r0, #0x4] + strh r4, [r0, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2] + ldr r1, _02021A1C ; =0x0000FFFF + strh r1, [r0, #0x8] +_02021A14: + pop {r4, pc} + nop +_02021A18: .word 0xB6F8D2EC +_02021A1C: .word 0x0000FFFF + + thumb_func_start FUN_02021A20 +FUN_02021A20: ; 0x02021A20 + push {r4, lr} + add r4, r0, #0x0 + bne _02021A2A + bl ErrorHandling +_02021A2A: + ldr r1, [r4, #0x4] + ldr r0, _02021A44 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021A36 + bl ErrorHandling +_02021A36: + ldr r0, _02021A48 ; =0xB6F8D2ED + str r0, [r4, #0x4] + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + nop +_02021A44: .word 0xB6F8D2EC +_02021A48: .word 0xB6F8D2ED + + thumb_func_start FUN_02021A4C +FUN_02021A4C: ; 0x02021A4C + push {r4, lr} + add r4, r0, #0x0 + bne _02021A56 + bl ErrorHandling +_02021A56: + ldr r1, [r4, #0x4] + ldr r0, _02021A6C ; =0xB6F8D2EC + cmp r1, r0 + beq _02021A62 + bl ErrorHandling +_02021A62: + mov r0, #0x0 + strh r0, [r4, #0x2] + ldr r0, _02021A70 ; =0x0000FFFF + strh r0, [r4, #0x8] + pop {r4, pc} + .balign 4 +_02021A6C: .word 0xB6F8D2EC +_02021A70: .word 0x0000FFFF + + thumb_func_start FUN_02021A74 +FUN_02021A74: ; 0x02021A74 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021A82 + bl ErrorHandling +_02021A82: + ldr r1, [r5, #0x4] + ldr r0, _02021AC8 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021A8E + bl ErrorHandling +_02021A8E: + cmp r4, #0x0 + bne _02021A96 + bl ErrorHandling +_02021A96: + ldr r1, [r4, #0x4] + ldr r0, _02021AC8 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021AA2 + bl ErrorHandling +_02021AA2: + ldrh r2, [r4, #0x2] + ldrh r0, [r5, #0x0] + cmp r0, r2 + bls _02021AC0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r2, #0x1 + add r0, #0x8 + add r1, #0x8 + lsl r2, r2, #0x1 + blx memcpy + ldrh r0, [r4, #0x2] + strh r0, [r5, #0x2] + pop {r3-r5, pc} +_02021AC0: + bl ErrorHandling + pop {r3-r5, pc} + nop +_02021AC8: .word 0xB6F8D2EC + + thumb_func_start FUN_02021ACC +FUN_02021ACC: ; 0x02021ACC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021ADA + bl ErrorHandling +_02021ADA: + ldr r1, [r5, #0x4] + ldr r0, _02021B00 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021AE6 + bl ErrorHandling +_02021AE6: + ldrh r0, [r5, #0x2] + add r1, r4, #0x0 + add r0, r0, #0x1 + bl FUN_020219F4 + add r4, r0, #0x0 + beq _02021AFA + add r1, r5, #0x0 + bl FUN_02021A74 +_02021AFA: + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_02021B00: .word 0xB6F8D2EC + + thumb_func_start FUN_02021B04 +FUN_02021B04: ; 0x02021B04 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [sp, #0x20] + add r6, r1, #0x0 + add r7, r3, #0x0 + str r2, [sp, #0x0] + str r0, [sp, #0x20] + cmp r5, #0x0 + bne _02021B1C + bl ErrorHandling +_02021B1C: + ldr r1, [r5, #0x4] + ldr r0, _02021C1C ; =0xB6F8D2EC + cmp r1, r0 + beq _02021B28 + bl ErrorHandling +_02021B28: + cmp r6, #0x0 + bge _02021B30 + mov r4, #0x1 + b _02021B32 +_02021B30: + mov r4, #0x0 +_02021B32: + ldr r0, [sp, #0x0] + ldrh r1, [r5, #0x0] + add r0, r0, r4 + cmp r1, r0 + bls _02021C14 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + bne _02021B48 + ldr r0, _02021C20 ; =0x020EE67C + str r0, [sp, #0x4] + b _02021B4C +_02021B48: + ldr r0, _02021C24 ; =0x020EE690 + str r0, [sp, #0x4] +_02021B4C: + add r0, r5, #0x0 + bl FUN_02021A4C + cmp r4, #0x0 + beq _02021B74 + mov r0, #0x0 + mvn r0, r0 + mul r6, r0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + bne _02021B66 + mov r0, #0xf1 + b _02021B68 +_02021B66: + ldr r0, _02021C28 ; =0x000001BE +_02021B68: + ldrh r2, [r5, #0x2] + add r1, r2, #0x1 + strh r1, [r5, #0x2] + lsl r1, r2, #0x1 + add r1, r5, r1 + strh r0, [r1, #0x8] +_02021B74: + ldr r0, [sp, #0x0] + lsl r1, r0, #0x2 + ldr r0, _02021C2C ; =0x020EE6A0 + ldr r4, [r0, r1] + cmp r4, #0x0 + beq _02021C06 +_02021B80: + add r0, r6, #0x0 + add r1, r4, #0x0 + blx _u32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, r4, #0x0 + mul r0, r1 + sub r6, r6, r0 + cmp r7, #0x2 + bne _02021BB4 + cmp r1, #0xa + bhs _02021BA2 + ldr r0, [sp, #0x4] + lsl r1, r1, #0x1 + ldrh r1, [r0, r1] + b _02021BA4 +_02021BA2: + mov r1, #0xe2 +_02021BA4: + ldrh r0, [r5, #0x2] + add r2, r0, #0x0 + add r2, r2, #0x1 + lsl r0, r0, #0x1 + strh r2, [r5, #0x2] + add r0, r5, r0 + strh r1, [r0, #0x8] + b _02021BFA +_02021BB4: + cmp r1, #0x0 + bne _02021BBC + cmp r4, #0x1 + bne _02021BDC +_02021BBC: + mov r7, #0x2 + cmp r1, #0xa + bhs _02021BCA + ldr r0, [sp, #0x4] + lsl r1, r1, #0x1 + ldrh r1, [r0, r1] + b _02021BCC +_02021BCA: + mov r1, #0xe2 +_02021BCC: + ldrh r0, [r5, #0x2] + add r2, r0, #0x0 + add r2, r2, #0x1 + lsl r0, r0, #0x1 + strh r2, [r5, #0x2] + add r0, r5, r0 + strh r1, [r0, #0x8] + b _02021BFA +_02021BDC: + cmp r7, #0x1 + bne _02021BFA + ldr r0, [sp, #0x20] + cmp r0, #0x0 + bne _02021BEA + mov r1, #0x1 + b _02021BEC +_02021BEA: + ldr r1, _02021C30 ; =0x000001E2 +_02021BEC: + ldrh r0, [r5, #0x2] + add r2, r0, #0x0 + add r2, r2, #0x1 + lsl r0, r0, #0x1 + strh r2, [r5, #0x2] + add r0, r5, r0 + strh r1, [r0, #0x8] +_02021BFA: + add r0, r4, #0x0 + mov r1, #0xa + blx _u32_div_f + add r4, r0, #0x0 + bne _02021B80 +_02021C06: + ldrh r0, [r5, #0x2] + ldr r1, _02021C34 ; =0x0000FFFF + add sp, #0x8 + lsl r0, r0, #0x1 + add r0, r5, r0 + strh r1, [r0, #0x8] + pop {r3-r7, pc} +_02021C14: + bl ErrorHandling + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02021C1C: .word 0xB6F8D2EC +_02021C20: .word 0x020EE67C +_02021C24: .word 0x020EE690 +_02021C28: .word 0x000001BE +_02021C2C: .word 0x020EE6A0 +_02021C30: .word 0x000001E2 +_02021C34: .word 0x0000FFFF + + thumb_func_start FUN_02021C38 +FUN_02021C38: ; 0x02021C38 + push {r3-r7, lr} + sub sp, #0x10 + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x8] + str r1, [sp, #0xc] + add r5, r1, #0x0 + ldrh r1, [r0, #0x2] + mov r7, #0x1 + cmp r1, #0x12 + bls _02021C56 + ldr r0, [sp, #0x8] + add sp, #0x10 + add r1, r0, #0x0 + pop {r3-r7, pc} +_02021C56: + sub r1, r1, #0x1 + str r1, [sp, #0x4] + bmi _02021CCC + lsl r1, r1, #0x1 + add r4, r0, r1 +_02021C60: + ldrh r6, [r4, #0x8] + mov r3, #0xa + mov r0, #0x0 + add r1, r6, #0x0 + sub r1, #0xa2 + asr r2, r1, #0x1f + sub r3, r1, r3 + mov r12, r2 + mov r3, r12 + sbc r3, r0 + blo _02021C98 + ldr r0, _02021CDC ; =0x00000121 + mov r3, #0xa + sub r1, r6, r0 + asr r2, r1, #0x1f + mov r0, #0x0 + sub r3, r1, r3 + mov r12, r2 + mov r3, r12 + sbc r3, r0 + blo _02021C98 + ldr r0, [sp, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + add sp, #0x10 + pop {r3-r7, pc} +_02021C98: + add r0, r1, #0x0 + add r1, r2, #0x0 + add r2, r7, #0x0 + add r3, r5, #0x0 + blx _ll_mul + add r2, r1, #0x0 + ldr r1, [sp, #0x8] + add r0, r1, r0 + str r0, [sp, #0x8] + ldr r0, [sp, #0xc] + adc r0, r2 + str r0, [sp, #0xc] + add r0, r7, #0x0 + add r1, r5, #0x0 + mov r2, #0xa + mov r3, #0x0 + blx _ll_mul + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + add r5, r1, #0x0 + sub r4, r4, #0x2 + sub r0, r0, #0x1 + str r0, [sp, #0x4] + bpl _02021C60 +_02021CCC: + ldr r0, [sp, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + add sp, #0x10 + pop {r3-r7, pc} + nop +_02021CDC: .word 0x00000121 + + thumb_func_start FUN_02021CE0 +FUN_02021CE0: ; 0x02021CE0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021CEE + bl ErrorHandling +_02021CEE: + ldr r1, [r5, #0x4] + ldr r0, _02021D34 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021CFA + bl ErrorHandling +_02021CFA: + cmp r4, #0x0 + bne _02021D02 + bl ErrorHandling +_02021D02: + ldr r1, [r4, #0x4] + ldr r0, _02021D34 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021D0E + bl ErrorHandling +_02021D0E: + ldrh r1, [r5, #0x8] + ldrh r0, [r4, #0x8] + cmp r1, r0 + bne _02021D2E + ldr r0, _02021D38 ; =0x0000FFFF +_02021D18: + ldrh r1, [r5, #0x8] + cmp r1, r0 + bne _02021D22 + mov r0, #0x0 + pop {r3-r5, pc} +_02021D22: + add r5, r5, #0x2 + add r4, r4, #0x2 + ldrh r2, [r5, #0x8] + ldrh r1, [r4, #0x8] + cmp r2, r1 + beq _02021D18 +_02021D2E: + mov r0, #0x1 + pop {r3-r5, pc} + nop +_02021D34: .word 0xB6F8D2EC +_02021D38: .word 0x0000FFFF + + thumb_func_start FUN_02021D3C +FUN_02021D3C: ; 0x02021D3C + push {r4, lr} + add r4, r0, #0x0 + bne _02021D46 + bl ErrorHandling +_02021D46: + ldr r1, [r4, #0x4] + ldr r0, _02021D58 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021D52 + bl ErrorHandling +_02021D52: + ldrh r0, [r4, #0x2] + pop {r4, pc} + nop +_02021D58: .word 0xB6F8D2EC + + thumb_func_start FUN_02021D5C +FUN_02021D5C: ; 0x02021D5C + push {r3-r5, lr} + add r4, r0, #0x0 + bne _02021D66 + bl ErrorHandling +_02021D66: + ldr r1, [r4, #0x4] + ldr r0, _02021D98 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021D72 + bl ErrorHandling +_02021D72: + ldrh r1, [r4, #0x2] + mov r3, #0x0 + mov r0, #0x1 + cmp r1, #0x0 + ble _02021D94 + mov r1, #0xe + add r5, r4, #0x0 + lsl r1, r1, #0xc +_02021D82: + ldrh r2, [r5, #0x8] + cmp r2, r1 + bne _02021D8A + add r0, r0, #0x1 +_02021D8A: + ldrh r2, [r4, #0x2] + add r3, r3, #0x1 + add r5, r5, #0x2 + cmp r3, r2 + blt _02021D82 +_02021D94: + pop {r3-r5, pc} + nop +_02021D98: .word 0xB6F8D2EC + + thumb_func_start FUN_02021D9C +FUN_02021D9C: ; 0x02021D9C + push {r3-r7, lr} + add r5, r1, #0x0 + add r7, r0, #0x0 + add r6, r2, #0x0 + cmp r5, #0x0 + bne _02021DAC + bl ErrorHandling +_02021DAC: + ldr r1, [r5, #0x4] + ldr r0, _02021E24 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021DB8 + bl ErrorHandling +_02021DB8: + cmp r7, #0x0 + bne _02021DC0 + bl ErrorHandling +_02021DC0: + ldr r1, [r7, #0x4] + ldr r0, _02021E24 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021DCC + bl ErrorHandling +_02021DCC: + mov r4, #0x0 + cmp r6, #0x0 + beq _02021DF6 + ldrh r0, [r5, #0x2] + cmp r0, #0x0 + ble _02021DF6 + mov r1, #0xe + add r0, r5, #0x0 + lsl r1, r1, #0xc +_02021DDE: + ldrh r2, [r0, #0x8] + cmp r2, r1 + bne _02021DEC + sub r6, r6, #0x1 + bne _02021DEC + add r4, r4, #0x1 + b _02021DF6 +_02021DEC: + ldrh r2, [r5, #0x2] + add r4, r4, #0x1 + add r0, r0, #0x2 + cmp r4, r2 + blt _02021DDE +_02021DF6: + add r0, r7, #0x0 + bl FUN_02021A4C + ldrh r0, [r5, #0x2] + cmp r4, r0 + bge _02021E20 + lsl r0, r4, #0x1 + add r6, r5, r0 +_02021E06: + ldrh r1, [r6, #0x8] + mov r0, #0xe + lsl r0, r0, #0xc + cmp r1, r0 + beq _02021E20 + add r0, r7, #0x0 + bl FUN_02021FB0 + ldrh r0, [r5, #0x2] + add r4, r4, #0x1 + add r6, r6, #0x2 + cmp r4, r0 + blt _02021E06 +_02021E20: + pop {r3-r7, pc} + nop +_02021E24: .word 0xB6F8D2EC + + thumb_func_start FUN_02021E28 +FUN_02021E28: ; 0x02021E28 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021E36 + bl ErrorHandling +_02021E36: + ldr r1, [r5, #0x4] + ldr r0, _02021E84 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021E42 + bl ErrorHandling +_02021E42: + mov r0, #0x0 + strh r0, [r5, #0x2] + ldrh r1, [r4, #0x0] + ldr r0, _02021E88 ; =0x0000FFFF + cmp r1, r0 + beq _02021E76 + add r1, r0, #0x0 +_02021E50: + ldrh r2, [r5, #0x0] + ldrh r0, [r5, #0x2] + sub r2, r2, #0x1 + cmp r0, r2 + blt _02021E60 + bl ErrorHandling + b _02021E76 +_02021E60: + add r2, r0, #0x0 + add r2, r2, #0x1 + strh r2, [r5, #0x2] + ldrh r2, [r4, #0x0] + lsl r0, r0, #0x1 + add r0, r5, r0 + add r4, r4, #0x2 + strh r2, [r0, #0x8] + ldrh r0, [r4, #0x0] + cmp r0, r1 + bne _02021E50 +_02021E76: + ldrh r0, [r5, #0x2] + ldr r1, _02021E88 ; =0x0000FFFF + lsl r0, r0, #0x1 + add r0, r5, r0 + strh r1, [r0, #0x8] + pop {r3-r5, pc} + nop +_02021E84: .word 0xB6F8D2EC +_02021E88: .word 0x0000FFFF + + thumb_func_start FUN_02021E8C +FUN_02021E8C: ; 0x02021E8C + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + add r4, r2, #0x0 + cmp r5, #0x0 + bne _02021E9C + bl ErrorHandling +_02021E9C: + ldr r1, [r5, #0x4] + ldr r0, _02021EE8 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021EA8 + bl ErrorHandling +_02021EA8: + ldrh r0, [r5, #0x0] + cmp r4, r0 + bhi _02021EE2 + lsl r6, r4, #0x1 + add r0, r5, #0x0 + add r0, #0x8 + add r1, r7, #0x0 + add r2, r6, #0x0 + blx memcpy + mov r2, #0x0 + cmp r4, #0x0 + bls _02021ED4 + ldr r0, _02021EEC ; =0x0000FFFF + add r3, r5, #0x0 +_02021EC6: + ldrh r1, [r3, #0x8] + cmp r1, r0 + beq _02021ED4 + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, r4 + blo _02021EC6 +_02021ED4: + strh r2, [r5, #0x2] + cmp r2, r4 + bne _02021EE6 + ldr r1, _02021EEC ; =0x0000FFFF + add r0, r5, r6 + strh r1, [r0, #0x6] + pop {r3-r7, pc} +_02021EE2: + bl ErrorHandling +_02021EE6: + pop {r3-r7, pc} + .balign 4 +_02021EE8: .word 0xB6F8D2EC +_02021EEC: .word 0x0000FFFF + + thumb_func_start FUN_02021EF0 +FUN_02021EF0: ; 0x02021EF0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + cmp r5, #0x0 + bne _02021F00 + bl ErrorHandling +_02021F00: + ldr r1, [r5, #0x4] + ldr r0, _02021F28 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021F0C + bl ErrorHandling +_02021F0C: + ldrh r0, [r5, #0x2] + add r2, r0, #0x1 + cmp r2, r4 + bhi _02021F22 + add r5, #0x8 + add r0, r6, #0x0 + add r1, r5, #0x0 + lsl r2, r2, #0x1 + blx memcpy + pop {r4-r6, pc} +_02021F22: + bl ErrorHandling + pop {r4-r6, pc} + .balign 4 +_02021F28: .word 0xB6F8D2EC + + thumb_func_start FUN_02021F2C +FUN_02021F2C: ; 0x02021F2C + push {r4, lr} + add r4, r0, #0x0 + bne _02021F36 + bl ErrorHandling +_02021F36: + ldr r1, [r4, #0x4] + ldr r0, _02021F48 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021F42 + bl ErrorHandling +_02021F42: + add r4, #0x8 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02021F48: .word 0xB6F8D2EC + + thumb_func_start FUN_02021F4C +FUN_02021F4C: ; 0x02021F4C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021F5A + bl ErrorHandling +_02021F5A: + ldr r1, [r5, #0x4] + ldr r0, _02021FAC ; =0xB6F8D2EC + cmp r1, r0 + beq _02021F66 + bl ErrorHandling +_02021F66: + cmp r4, #0x0 + bne _02021F6E + bl ErrorHandling +_02021F6E: + ldr r1, [r4, #0x4] + ldr r0, _02021FAC ; =0xB6F8D2EC + cmp r1, r0 + beq _02021F7A + bl ErrorHandling +_02021F7A: + ldrh r2, [r4, #0x2] + ldrh r0, [r5, #0x2] + add r1, r0, r2 + add r3, r1, #0x1 + ldrh r1, [r5, #0x0] + cmp r3, r1 + bgt _02021FA6 + add r1, r5, #0x0 + add r1, #0x8 + lsl r0, r0, #0x1 + add r0, r1, r0 + add r1, r4, #0x0 + add r2, r2, #0x1 + add r1, #0x8 + lsl r2, r2, #0x1 + blx memcpy + ldrh r1, [r5, #0x2] + ldrh r0, [r4, #0x2] + add r0, r1, r0 + strh r0, [r5, #0x2] + pop {r3-r5, pc} +_02021FA6: + bl ErrorHandling + pop {r3-r5, pc} + .balign 4 +_02021FAC: .word 0xB6F8D2EC + + thumb_func_start FUN_02021FB0 +FUN_02021FB0: ; 0x02021FB0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02021FBE + bl ErrorHandling +_02021FBE: + ldr r1, [r5, #0x4] + ldr r0, _02021FF0 ; =0xB6F8D2EC + cmp r1, r0 + beq _02021FCA + bl ErrorHandling +_02021FCA: + ldrh r2, [r5, #0x2] + ldrh r0, [r5, #0x0] + add r1, r2, #0x1 + cmp r1, r0 + bge _02021FE8 + lsl r0, r2, #0x1 + strh r1, [r5, #0x2] + add r0, r5, r0 + strh r4, [r0, #0x8] + ldrh r0, [r5, #0x2] + ldr r1, _02021FF4 ; =0x0000FFFF + lsl r0, r0, #0x1 + add r0, r5, r0 + strh r1, [r0, #0x8] + pop {r3-r5, pc} +_02021FE8: + bl ErrorHandling + pop {r3-r5, pc} + nop +_02021FF0: .word 0xB6F8D2EC +_02021FF4: .word 0x0000FFFF + + thumb_func_start FUN_02021FF8 +FUN_02021FF8: ; 0x02021FF8 + push {r4, lr} + add r4, r0, #0x0 + bne _02022002 + bl ErrorHandling +_02022002: + ldr r1, [r4, #0x4] + ldr r0, _02022028 ; =0xB6F8D2EC + cmp r1, r0 + beq _0202200E + bl ErrorHandling +_0202200E: + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _02022026 + ldrh r1, [r4, #0x8] + ldr r0, _0202202C ; =0x00000145 + cmp r1, r0 + blo _02022026 + add r0, #0x19 + cmp r1, r0 + bhi _02022026 + sub r1, #0x1a + strh r1, [r4, #0x8] +_02022026: + pop {r4, pc} + .balign 4 +_02022028: .word 0xB6F8D2EC +_0202202C: .word 0x00000145 + + thumb_func_start FUN_02022030 +FUN_02022030: ; 0x02022030 + ldrh r1, [r0, #0x2] + cmp r1, #0x0 + beq _02022044 + ldrh r1, [r0, #0x8] + mov r0, #0xf1 + lsl r0, r0, #0x8 + cmp r1, r0 + bne _02022044 + mov r0, #0x1 + bx lr +_02022044: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02022048 +FUN_02022048: ; 0x02022048 + push {r3-r7, lr} + add r4, r1, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02022030 + cmp r0, #0x0 + beq _020220B2 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x0] + ldrh r0, [r0, #0x2] + add r1, #0x8 + ldr r7, _020220BC ; =0x000001FF + lsl r0, r0, #0x1 + add r3, r1, r0 + mov r0, #0x0 + add r4, #0xa + add r1, r0, #0x0 +_0202206C: + ldrh r2, [r4, #0x0] + asr r2, r0 + and r2, r7 + lsl r2, r2, #0x10 + add r0, #0x9 + lsr r2, r2, #0x10 + cmp r0, #0xf + blt _02022094 + add r4, r4, #0x2 + sub r0, #0xf + beq _02022094 + ldrh r6, [r4, #0x0] + mov r5, #0x9 + sub r5, r5, r0 + lsl r6, r5 + ldr r5, _020220BC ; =0x000001FF + and r5, r6 + orr r2, r5 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 +_02022094: + ldr r5, _020220BC ; =0x000001FF + cmp r2, r5 + beq _020220A2 + strh r2, [r3, #0x0] + add r3, r3, #0x2 + add r1, r1, #0x1 + b _0202206C +_020220A2: + ldr r0, _020220C0 ; =0x0000FFFF + strh r0, [r3, #0x0] + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x2] + add r1, r0, r1 + ldr r0, [sp, #0x0] + strh r1, [r0, #0x2] + pop {r3-r7, pc} +_020220B2: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_02021F4C + pop {r3-r7, pc} + .balign 4 +_020220BC: .word 0x000001FF +_020220C0: .word 0x0000FFFF + + thumb_func_start FUN_020220C4 +FUN_020220C4: ; 0x020220C4 + push {r3-r7, lr} + add r7, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0x0] + cmp r7, #0x0 + bne _020220D6 + bl ErrorHandling +_020220D6: + ldr r0, [sp, #0x18] + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0x0 + beq _0202211C + str r5, [r4, #0x0] + str r7, [r4, #0x4] + ldr r0, [sp, #0x0] + str r6, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x18] + lsl r1, r7, #0x2 + bl FUN_02016998 + str r0, [r4, #0x10] + cmp r0, #0x0 + beq _02022114 + mov r6, #0x0 + cmp r7, #0x0 + bls _0202211C + add r5, r6, #0x0 +_02022102: + ldr r0, [r4, #0x10] + add r0, r0, r5 + bl FUN_02022120 + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, r7 + blo _02022102 + b _0202211C +_02022114: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r4, #0x0 +_0202211C: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02022120 +FUN_02022120: ; 0x02022120 + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strh r1, [r0, #0x2] + bx lr + .balign 4 + + thumb_func_start FUN_0202212C +FUN_0202212C: ; 0x0202212C + push {r4, lr} + add r4, r0, #0x0 + bne _02022136 + bl ErrorHandling +_02022136: + ldr r0, [r4, #0x10] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02022144 +FUN_02022144: ; 0x02022144 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_02020A98 + str r0, [sp, #0x0] + cmp r0, #0x0 + beq _02022190 + bl FUN_02020AA4 + str r0, [sp, #0x4] + ldr r0, [r5, #0x4] + mov r6, #0x0 + cmp r0, #0x0 + bls _020221AE + add r4, r6, #0x0 +_02022164: + ldr r0, [r5, #0x10] + add r0, r0, r4 + ldrb r0, [r0, #0x1] + cmp r0, #0x0 + ldr r0, [r5, #0x0] + beq _02022178 + add r0, r0, r4 + bl FUN_02020A40 + b _0202217E +_02022178: + add r0, r0, r4 + bl FUN_02020A6C +_0202217E: + ldr r1, [r5, #0x10] + add r6, r6, #0x1 + add r1, r1, r4 + strb r0, [r1, #0x1] + ldr r0, [r5, #0x4] + add r4, r4, #0x4 + cmp r6, r0 + blo _02022164 + b _020221AE +_02022190: + ldr r0, [r5, #0x4] + mov r3, #0x0 + str r3, [sp, #0x4] + cmp r0, #0x0 + bls _020221AE + add r2, r3, #0x0 + add r1, r3, #0x0 +_0202219E: + ldr r0, [r5, #0x10] + add r3, r3, #0x1 + add r0, r0, r2 + strb r1, [r0, #0x1] + ldr r0, [r5, #0x4] + add r2, r2, #0x4 + cmp r3, r0 + blo _0202219E +_020221AE: + mov r4, #0x0 + cmp r0, #0x0 + bls _020221E4 + add r7, r4, #0x0 +_020221B6: + ldr r3, [r5, #0x10] + ldr r1, [sp, #0x0] + add r0, r3, r7 + ldrb r3, [r3, r7] + ldr r2, [sp, #0x4] + lsl r6, r3, #0x2 + ldr r3, _020221E8 ; =0x020EE6CC + ldr r3, [r3, r6] + blx r3 + add r1, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + beq _020221DA + ldr r2, [r5, #0xc] + ldr r3, [r5, #0x8] + add r0, r4, #0x0 + blx r3 +_020221DA: + ldr r0, [r5, #0x4] + add r4, r4, #0x1 + add r7, r7, #0x4 + cmp r4, r0 + blo _020221B6 +_020221E4: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020221E8: .word 0x020EE6CC + + thumb_func_start FUN_020221EC +FUN_020221EC: ; 0x020221EC + push {r3, lr} + ldrb r1, [r0, #0x1] + cmp r1, #0x0 + beq _02022202 + cmp r2, #0x0 + beq _02022202 + mov r1, #0x1 + bl FUN_0202223C + mov r0, #0x0 + pop {r3, pc} +_02022202: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + + thumb_func_start FUN_02022208 +FUN_02022208: ; 0x02022208 + push {r3, lr} + ldrb r2, [r0, #0x1] + cmp r2, #0x0 + beq _02022220 + ldrh r2, [r0, #0x2] + ldr r1, _02022238 ; =0x0000FFFF + cmp r2, r1 + bhs _0202221C + add r1, r2, #0x1 + strh r1, [r0, #0x2] +_0202221C: + mov r0, #0x2 + pop {r3, pc} +_02022220: + cmp r1, #0x0 + beq _0202222E + mov r1, #0x0 + bl FUN_0202223C + mov r0, #0x3 + pop {r3, pc} +_0202222E: + mov r1, #0x0 + bl FUN_0202223C + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_02022238: .word 0x0000FFFF + + thumb_func_start FUN_0202223C +FUN_0202223C: ; 0x0202223C + strb r1, [r0, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2] + bx lr + + thumb_func_start FUN_02022244 +FUN_02022244: ; 0x02022244 + push {r3-r4} + ldr r3, [r0, #0xc] + mov r2, #0x0 + sub r3, r3, #0x1 + beq _02022262 + ldr r4, [r0, #0x0] +_02022250: + ldrh r3, [r4, #0x2] + cmp r3, r1 + bhi _02022262 + ldr r3, [r0, #0xc] + add r2, r2, #0x1 + sub r3, r3, #0x1 + add r4, r4, #0x2 + cmp r2, r3 + blo _02022250 +_02022262: + ldr r1, [r0, #0x4] + ldrb r3, [r1, r2] + add r1, sp, #0x0 + strb r3, [r1, #0x0] + ldr r0, [r0, #0x8] + ldrb r2, [r0, r2] + strb r2, [r1, #0x1] + ldrb r0, [r1, #0x0] + lsl r1, r2, #0x8 + orr r0, r1 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0202227C +FUN_0202227C: ; 0x0202227C + ldr r2, [r0, #0x0] + str r2, [r1, #0xc] + add r2, r0, #0x4 + str r2, [r1, #0x0] + ldr r0, [r1, #0xc] + lsl r0, r0, #0x1 + add r2, r2, r0 + str r2, [r1, #0x4] + ldr r0, [r1, #0xc] + add r0, r2, r0 + str r0, [r1, #0x8] + bx lr + + thumb_func_start FUN_02022294 +FUN_02022294: ; 0x02022294 + ldr r0, _020222A4 ; =0x021C59BC + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + ldr r0, _020222A8 ; =0x021C59BC + str r1, [r0, #0x0] + bx lr + .balign 4 +_020222A4: .word 0x021C59BC +_020222A8: .word 0x021C59BC + + thumb_func_start FUN_020222AC +FUN_020222AC: ; 0x020222AC + ldr r3, _020222B0 ; =G3X_ResetMtxStack + bx r3 + .balign 4 +_020222B0: .word G3X_ResetMtxStack + + thumb_func_start FUN_020222B4 +FUN_020222B4: ; 0x020222B4 + ldr r2, _020222C0 ; =0x021C59BC + str r0, [r2, #0x4] + str r1, [r2, #0x8] + mov r0, #0x1 + str r0, [r2, #0x0] + bx lr + .balign 4 +_020222C0: .word 0x021C59BC + + thumb_func_start FUN_020222C4 +FUN_020222C4: ; 0x020222C4 + ldr r0, _020222E0 ; =0x021C59BC + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _020222DC + ldr r1, [r0, #0x8] + ldr r2, [r0, #0x4] + lsl r1, r1, #0x1 + orr r2, r1 + ldr r1, _020222E4 ; =0x04000540 + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] +_020222DC: + bx lr + nop +_020222E0: .word 0x021C59BC +_020222E4: .word 0x04000540 + + thumb_func_start FUN_020222E8 +FUN_020222E8: ; 0x020222E8 + mov r0, #0x5 + lsl r0, r0, #0x18 + bx lr + .balign 4 + + thumb_func_start FUN_020222F0 +FUN_020222F0: ; 0x020222F0 + mov r0, #0x2 + lsl r0, r0, #0x8 + bx lr + .balign 4 + + thumb_func_start FUN_020222F8 +FUN_020222F8: ; 0x020222F8 + ldr r0, _020222FC ; =0x05000400 + bx lr + .balign 4 +_020222FC: .word 0x05000400 + + thumb_func_start FUN_02022300 +FUN_02022300: ; 0x02022300 + mov r0, #0x2 + lsl r0, r0, #0x8 + bx lr + .balign 4 + + thumb_func_start FUN_02022308 +FUN_02022308: ; 0x02022308 + ldr r0, _0202230C ; =0x05000200 + bx lr + .balign 4 +_0202230C: .word 0x05000200 + + thumb_func_start FUN_02022310 +FUN_02022310: ; 0x02022310 + ldr r0, _02022314 ; =0x05000600 + bx lr + .balign 4 +_02022314: .word 0x05000600 + + thumb_func_start FUN_02022318 +FUN_02022318: ; 0x02022318 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r1, #0x0 + mov r1, #0xc + add r6, r0, #0x0 + add r5, r2, #0x0 + str r3, [sp, #0x4] + bl FUN_02016998 + add r4, r0, #0x0 + str r6, [r4, #0x0] + blx FUN_020BB7F4 + blx G3X_InitMtxStack + mov r1, #0x2 + ldr r0, _020223B8 ; =0x04000540 + cmp r7, #0x0 + str r1, [r0, #0x0] + bne _02022364 + lsl r0, r5, #0x7 + blx FUN_020AFA28 + add r6, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + bl FUN_02016998 + str r0, [r4, #0x8] + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r2, [r4, #0x8] + lsl r0, r5, #0x11 + mov r1, #0x0 + add r3, r6, #0x0 + blx FUN_020AF9C4 + b _0202236E +_02022364: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1 + blx FUN_020AEB70 +_0202236E: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _02022398 + ldr r0, [sp, #0x20] + lsl r0, r0, #0x8 + blx FUN_020AFBFC + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r5, #0x0 + bl FUN_02016998 + str r0, [r4, #0x4] + ldr r0, [sp, #0x20] + ldr r1, [r4, #0x4] + lsl r0, r0, #0xd + add r2, r5, #0x0 + mov r3, #0x1 + blx FUN_020AFBA8 + b _020223A4 +_02022398: + ldr r0, [sp, #0x20] + mov r1, #0x1 + lsl r0, r0, #0x1d + lsr r0, r0, #0x10 + blx FUN_020AEB70 +_020223A4: + ldr r0, [sp, #0x24] + cmp r0, #0x0 + beq _020223AE + blx r0 + b _020223B2 +_020223AE: + bl FUN_020223D4 +_020223B2: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020223B8: .word 0x04000540 + + thumb_func_start FUN_020223BC +FUN_020223BC: ; 0x020223BC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + ldr r0, [r4, #0x8] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_020223D4 +FUN_020223D4: ; 0x020223D4 + push {r3, lr} + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldr r0, _02022438 ; =0x04000008 + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + strh r2, [r0, #0x0] + add r0, #0x58 + ldrh r2, [r0, #0x0] + ldr r1, _0202243C ; =0xFFFFCFFD + and r1, r2 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + ldr r2, _02022440 ; =0x0000CFEF + and r1, r2 + strh r1, [r0, #0x0] + add r1, r2, #0x0 + ldrh r3, [r0, #0x0] + add r1, #0xc + and r1, r3 + strh r1, [r0, #0x0] + add r1, r2, #0x0 + ldrh r3, [r0, #0x0] + add r1, #0x8 + sub r2, #0x10 + and r1, r3 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + and r1, r2 + strh r1, [r0, #0x0] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + blx G3X_SetFog + mov r0, #0x0 + ldr r2, _02022444 ; =0x00007FFF + add r1, r0, #0x0 + mov r3, #0x3f + str r0, [sp, #0x0] + blx G3X_SetClearColor + ldr r1, _02022448 ; =0xBFFF0000 + ldr r0, _0202244C ; =0x04000580 + str r1, [r0, #0x0] + pop {r3, pc} + .balign 4 +_02022438: .word 0x04000008 +_0202243C: .word 0xFFFFCFFD +_02022440: .word 0x0000CFEF +_02022444: .word 0x00007FFF +_02022448: .word 0xBFFF0000 +_0202244C: .word 0x04000580 + + thumb_func_start FUN_02022450 +FUN_02022450: ; 0x02022450 + push {r3, lr} + blx FS_IsAvailable + cmp r0, #0x0 + bne _02022460 + blx OS_Terminate + pop {r3, pc} +_02022460: + ldr r0, _020224BC ; =0x027FF00C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0202248A + blx CARD_Init + mov r2, #0x16 + ldr r0, _020224C0 ; =0x027FFE00 + ldr r1, _020224C4 ; =0x027FF000 + lsl r2, r2, #0x4 + blx MI_CpuCopy8 + mov r2, #0x16 + ldr r0, _020224C0 ; =0x027FFE00 + ldr r1, _020224C8 ; =0x027FFA80 + lsl r2, r2, #0x4 + blx MI_CpuCopy8 + ldr r1, _020224CC ; =0x4A414441 + ldr r0, _020224BC ; =0x027FF00C + str r1, [r0, #0x0] +_0202248A: + ldr r0, _020224D0 ; =0x020EE6D4 + mov r1, #0x3 + blx FS_FindArchive + ldr r1, _020224C4 ; =0x027FF000 + ldr r2, [r1, #0x48] + str r2, [r0, #0x2c] + ldr r2, [r1, #0x4c] + str r2, [r0, #0x30] + ldr r2, [r1, #0x40] + str r2, [r0, #0x34] + ldr r2, [r1, #0x44] + str r2, [r0, #0x38] + ldr r2, [r1, #0xc] + ldr r0, _020224CC ; =0x4A414441 + cmp r2, r0 + bne _020224B4 + ldrh r1, [r1, #0x10] + ldr r0, _020224D4 ; =0x00003130 + cmp r1, r0 + beq _020224B8 +_020224B4: + blx OS_Terminate +_020224B8: + pop {r3, pc} + nop +_020224BC: .word 0x027FF00C +_020224C0: .word 0x027FFE00 +_020224C4: .word 0x027FF000 +_020224C8: .word 0x027FFA80 +_020224CC: .word 0x4A414441 +_020224D0: .word 0x020EE6D4 +_020224D4: .word 0x00003130 + + thumb_func_start FUN_020224D8 +FUN_020224D8: ; 0x020224D8 + push {r4, lr} + sub sp, #0x48 + add r4, r0, #0x0 + add r0, sp, #0x0 + blx FS_InitFile + add r0, sp, #0x0 + add r1, r4, #0x0 + blx FS_OpenFile + cmp r0, #0x0 + beq _020224FC + ldr r1, [sp, #0x24] + ldr r0, _02022500 ; =0x027FFC2C + str r1, [r0, #0x0] + mov r0, #0x0 + blx OS_ResetSystem +_020224FC: + add sp, #0x48 + pop {r4, pc} + .balign 4 +_02022500: .word 0x027FFC2C + + thumb_func_start FUN_02022504 +FUN_02022504: ; 0x02022504 + ldr r3, _0202250C ; =FUN_02022610 + mov r1, #0x1b + bx r3 + nop +_0202250C: .word FUN_02022610 + + thumb_func_start FUN_02022510 +FUN_02022510: ; 0x02022510 + ldr r3, _02022518 ; =FUN_02022610 + mov r1, #0x23 + bx r3 + nop +_02022518: .word FUN_02022610 + + thumb_func_start FUN_0202251C +FUN_0202251C: ; 0x0202251C + ldr r3, _02022524 ; =FUN_02022610 + mov r1, #0x1f + bx r3 + nop +_02022524: .word FUN_02022610 + + thumb_func_start FUN_02022528 +FUN_02022528: ; 0x02022528 + ldr r3, _02022530 ; =FUN_02022610 + mov r1, #0x20 + bx r3 + nop +_02022530: .word FUN_02022610 + + thumb_func_start FUN_02022534 +FUN_02022534: ; 0x02022534 + push {r3, lr} + add r3, r2, #0x0 + mov r2, #0x0 + bl FUN_02023408 + pop {r3, pc} + + thumb_func_start FUN_02022540 +FUN_02022540: ; 0x02022540 + ldr r3, _02022548 ; =FUN_020232BC + add r2, r1, #0x0 + mov r1, #0x0 + bx r3 + .balign 4 +_02022548: .word FUN_020232BC + + thumb_func_start FUN_0202254C +FUN_0202254C: ; 0x0202254C + push {r4, lr} + ldr r1, _020225E0 ; =0x000204A8 + mov r0, #0x1 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r2, _020225E0 ; =0x000204A8 + mov r0, #0x0 + add r1, r4, #0x0 + blx MIi_CpuClearFast + ldr r0, _020225E4 ; =0x021C59C8 + str r4, [r0, #0x0] + bl FUN_02023570 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + mov r0, #0x1 + str r0, [r4, #0x8] + str r0, [r4, #0xc] + add r0, r4, #0x0 + ldr r1, _020225E8 ; =0x00001021 + add r0, #0x14 + blx MATHi_CRC16InitTable + ldr r0, _020225EC ; =0x00020224 + add r0, r4, r0 + bl FUN_020230E4 + ldr r0, _020225F0 ; =0x00020464 + ldr r1, _020225EC ; =0x00020224 + add r0, r4, r0 + add r1, r4, r1 + bl FUN_02023160 + ldr r1, _020225F4 ; =0x00020218 + mov r0, #0x0 + add r1, r4, r1 + mov r2, #0x8 + blx MIi_CpuClearFast + add r0, r4, #0x0 + bl FUN_02022AD8 + str r0, [r4, #0x10] + cmp r0, #0x3 + bhi _020225DA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020225B8: ; jump table (using 16-bit offset) + .short _020225D4 - _020225B8 - 2; case 0 + .short _020225C0 - _020225B8 - 2; case 1 + .short _020225C4 - _020225B8 - 2; case 2 + .short _020225D4 - _020225B8 - 2; case 3 +_020225C0: + mov r0, #0x0 + str r0, [r4, #0xc] +_020225C4: + add r0, r4, #0x0 + bl FUN_02022D08 + mov r0, #0x1 + str r0, [r4, #0x4] + mov r0, #0x0 + str r0, [r4, #0x8] + b _020225DA +_020225D4: + add r0, r4, #0x0 + bl FUN_020227DC +_020225DA: + add r0, r4, #0x0 + pop {r4, pc} + nop +_020225E0: .word 0x000204A8 +_020225E4: .word 0x021C59C8 +_020225E8: .word 0x00001021 +_020225EC: .word 0x00020224 +_020225F0: .word 0x00020464 +_020225F4: .word 0x00020218 + + thumb_func_start FUN_020225F8 +FUN_020225F8: ; 0x020225F8 + push {r3, lr} + ldr r0, _0202260C ; =0x021C59C8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02022606 + bl ErrorHandling +_02022606: + ldr r0, _0202260C ; =0x021C59C8 + ldr r0, [r0, #0x0] + pop {r3, pc} + .balign 4 +_0202260C: .word 0x021C59C8 + + thumb_func_start FUN_02022610 +FUN_02022610: ; 0x02022610 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x24 + blt _0202261E + bl ErrorHandling +_0202261E: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r2, r5, r0 + lsl r0, r4, #0x4 + add r1, r5, r0 + ldr r0, _02022630 ; =0x0002022C + ldr r0, [r1, r0] + add r0, r2, r0 + pop {r3-r5, pc} + .balign 4 +_02022630: .word 0x0002022C + + thumb_func_start FUN_02022634 +FUN_02022634: ; 0x02022634 + ldr r3, _02022638 ; =FUN_02022610 + bx r3 + .balign 4 +_02022638: .word FUN_02022610 + + thumb_func_start FUN_0202263C +FUN_0202263C: ; 0x0202263C + push {r3-r7, lr} + mov r1, #0x1 + str r0, [sp, #0x0] + mov r0, #0x3 + lsl r1, r1, #0xc + bl FUN_020169D8 + add r6, r0, #0x0 + mov r0, #0x1 + bl FUN_02016444 + ldr r1, _020226F4 ; =0x00020220 + ldr r0, [sp, #0x0] + ldrb r0, [r0, r1] + cmp r0, #0x0 + bne _02022660 + mov r2, #0x1 + b _02022662 +_02022660: + mov r2, #0x0 +_02022662: + ldr r0, [sp, #0x0] + mov r1, #0x0 + bl FUN_02023074 + ldr r1, _020226F8 ; =0x00020221 + ldr r0, [sp, #0x0] + ldrb r0, [r0, r1] + cmp r0, #0x0 + bne _02022678 + mov r2, #0x1 + b _0202267A +_02022678: + mov r2, #0x0 +_0202267A: + ldr r0, [sp, #0x0] + mov r1, #0x1 + bl FUN_02023074 + ldr r0, [sp, #0x0] + ldr r3, _020226F4 ; =0x00020220 + add r2, r0, #0x0 + ldrb r2, [r2, r3] + mov r1, #0x0 + bl FUN_02023074 + ldr r0, [sp, #0x0] + ldr r3, _020226F8 ; =0x00020221 + add r2, r0, #0x0 + ldrb r2, [r2, r3] + mov r1, #0x1 + bl FUN_02023074 + mov r0, #0x0 + mov r2, #0x1 + mvn r0, r0 + add r1, r6, #0x0 + lsl r2, r2, #0xc + blx MIi_CpuClearFast + mov r4, #0x0 + mov r7, #0x1 + add r5, r4, #0x0 + lsl r7, r7, #0xc +_020226B4: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020235D0 + add r0, r4, #0x0 + add r0, #0x40 + lsl r0, r0, #0xc + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020235D0 + mov r0, #0x1 + lsl r0, r0, #0xc + add r4, r4, #0x1 + add r5, r5, r0 + cmp r4, #0x40 + blt _020226B4 + add r0, r6, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x0] + bl FUN_020227DC + ldr r0, [sp, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + mov r0, #0x1 + bl FUN_02016454 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_020226F4: .word 0x00020220 +_020226F8: .word 0x00020221 + + thumb_func_start FUN_020226FC +FUN_020226FC: ; 0x020226FC + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + bne _0202270A + mov r0, #0x0 + pop {r4, pc} +_0202270A: + bl FUN_02022D08 + cmp r0, #0x0 + beq _0202271C + mov r0, #0x1 + str r0, [r4, #0x4] + mov r1, #0x0 + str r1, [r4, #0x8] + pop {r4, pc} +_0202271C: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02022720 +FUN_02022720: ; 0x02022720 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _0202272E + mov r0, #0x3 + pop {r4, pc} +_0202272E: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _02022784 + mov r0, #0x1 + bl FUN_02016444 + ldr r0, _02022798 ; =0x00020220 + ldrb r0, [r4, r0] + cmp r0, #0x0 + bne _02022746 + mov r2, #0x1 + b _02022748 +_02022746: + mov r2, #0x0 +_02022748: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02023074 + ldr r0, _0202279C ; =0x00020221 + ldrb r0, [r4, r0] + cmp r0, #0x0 + bne _0202275C + mov r2, #0x1 + b _0202275E +_0202275C: + mov r2, #0x0 +_0202275E: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02023074 + ldr r2, _02022798 ; =0x00020220 + add r0, r4, #0x0 + ldrb r2, [r4, r2] + mov r1, #0x0 + bl FUN_02023074 + ldr r2, _0202279C ; =0x00020221 + add r0, r4, #0x0 + ldrb r2, [r4, r2] + mov r1, #0x1 + bl FUN_02023074 + mov r0, #0x1 + bl FUN_02016454 +_02022784: + add r0, r4, #0x0 + bl FUN_02023044 + cmp r0, #0x2 + bne _02022796 + mov r1, #0x1 + str r1, [r4, #0x4] + mov r1, #0x0 + str r1, [r4, #0x8] +_02022796: + pop {r4, pc} + .balign 4 +_02022798: .word 0x00020220 +_0202279C: .word 0x00020221 + + thumb_func_start FUN_020227A0 +FUN_020227A0: ; 0x020227A0 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x2 + blt _020227AE + bl ErrorHandling +_020227AE: + ldr r0, [r5, #0x8] + cmp r0, #0x0 + beq _020227B8 + bl ErrorHandling +_020227B8: + ldr r0, [r5, #0x4] + cmp r0, #0x1 + beq _020227C2 + bl ErrorHandling +_020227C2: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02022840 +_020227CA: + add r0, r5, #0x0 + bl FUN_02022854 + cmp r0, #0x0 + beq _020227CA + cmp r0, #0x1 + beq _020227CA + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020227DC +FUN_020227DC: ; 0x020227DC + add r2, r0, #0x0 + mov r0, #0x1 + str r0, [r2, #0x8] + str r0, [r2, #0xc] + mov r0, #0x85 + ldr r1, _020227F4 ; =0x00020224 + lsl r0, r0, #0x2 + ldr r3, _020227F8 ; =FUN_020231F4 + add r0, r2, r0 + add r1, r2, r1 + bx r3 + nop +_020227F4: .word 0x00020224 +_020227F8: .word FUN_020231F4 + + thumb_func_start FUN_020227FC +FUN_020227FC: ; 0x020227FC + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02022800 +FUN_02022800: ; 0x02022800 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_02022804 +FUN_02022804: ; 0x02022804 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02022808 +FUN_02022808: ; 0x02022808 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_0202280C +FUN_0202280C: ; 0x0202280C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02022808 + cmp r0, #0x0 + beq _02022826 + add r0, r4, #0x0 + bl FUN_02022804 + cmp r0, #0x0 + beq _02022826 + mov r0, #0x1 + pop {r4, pc} +_02022826: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202282C +FUN_0202282C: ; 0x0202282C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_02022830 +FUN_02022830: ; 0x02022830 + ldr r0, _0202283C ; =0x021C59C8 + mov r1, #0x1 + ldr r0, [r0, #0x0] + str r1, [r0, #0xc] + bx lr + nop +_0202283C: .word 0x021C59C8 + + thumb_func_start FUN_02022840 +FUN_02022840: ; 0x02022840 + add r2, r1, #0x0 + ldr r1, _0202284C ; =0x0002047C + ldr r3, _02022850 ; =FUN_02022DFC + add r1, r0, r1 + bx r3 + nop +_0202284C: .word 0x0002047C +_02022850: .word FUN_02022DFC + + thumb_func_start FUN_02022854 +FUN_02022854: ; 0x02022854 + push {r3-r5, lr} + ldr r1, _02022878 ; =0x0002047C + add r5, r0, #0x0 + add r1, r5, r1 + bl FUN_02022E78 + add r4, r0, #0x0 + beq _02022874 + cmp r4, #0x1 + beq _02022874 + ldr r1, _02022878 ; =0x0002047C + add r0, r5, #0x0 + add r1, r5, r1 + add r2, r4, #0x0 + bl FUN_02022F80 +_02022874: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02022878: .word 0x0002047C + + thumb_func_start FUN_0202287C +FUN_0202287C: ; 0x0202287C + ldr r1, _02022884 ; =0x0002047C + ldr r3, _02022888 ; =FUN_02022FF0 + add r1, r0, r1 + bx r3 + .balign 4 +_02022884: .word 0x0002047C +_02022888: .word FUN_02022FF0 + + thumb_func_start FUN_0202288C +FUN_0202288C: ; 0x0202288C + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_02022898 +FUN_02022898: ; 0x02022898 + ldr r3, _020228A0 ; =MATH_CalcCRC16CCITT + add r0, #0x14 + sub r2, #0x14 + bx r3 + .balign 4 +_020228A0: .word MATH_CalcCRC16CCITT + + thumb_func_start FUN_020228A4 +FUN_020228A4: ; 0x020228A4 + cmp r0, #0x0 + bne _020228AC + mov r2, #0x0 + b _020228B0 +_020228AC: + mov r2, #0x1 + lsl r2, r2, #0x12 +_020228B0: + ldr r0, [r1, #0x4] + add r0, r2, r0 + bx lr + .balign 4 + + thumb_func_start FUN_020228B8 +FUN_020228B8: ; 0x020228B8 + push {r3-r5, lr} + ldr r3, _020228DC ; =0x00020464 + add r3, r0, r3 + mov r0, #0xc + mul r0, r2 + add r5, r3, r0 + ldr r0, [r5, #0x4] + add r4, r1, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + bne _020228D2 + bl ErrorHandling +_020228D2: + ldr r0, [r5, #0x8] + add r0, r4, r0 + sub r0, #0x14 + pop {r3-r5, pc} + nop +_020228DC: .word 0x00020464 + + thumb_func_start FUN_020228E0 +FUN_020228E0: ; 0x020228E0 + push {r3-r7, lr} + ldr r4, _02022934 ; =0x00020464 + add r3, r0, #0x0 + add r3, r3, r4 + add r5, r2, #0x0 + mov r4, #0xc + mul r4, r5 + str r0, [sp, #0x0] + add r7, r1, #0x0 + add r6, r3, r4 + bl FUN_020228B8 + add r4, r0, #0x0 + ldr r2, [r6, #0x8] + ldr r0, [r4, #0x8] + ldr r1, [r6, #0x4] + cmp r0, r2 + beq _02022908 + mov r0, #0x0 + pop {r3-r7, pc} +_02022908: + ldr r3, [r4, #0xc] + ldr r0, _02022938 ; =0x20060623 + cmp r3, r0 + beq _02022914 + mov r0, #0x0 + pop {r3-r7, pc} +_02022914: + ldrb r0, [r4, #0x10] + cmp r0, r5 + beq _0202291E + mov r0, #0x0 + pop {r3-r7, pc} +_0202291E: + ldr r0, [sp, #0x0] + add r1, r7, r1 + bl FUN_02022898 + ldrh r1, [r4, #0x12] + cmp r1, r0 + bne _02022930 + mov r0, #0x1 + pop {r3-r7, pc} +_02022930: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02022934: .word 0x00020464 +_02022938: .word 0x20060623 + + thumb_func_start FUN_0202293C +FUN_0202293C: ; 0x0202293C + push {r3-r7, lr} + add r7, r2, #0x0 + add r6, r1, #0x0 + add r5, r0, #0x0 + str r3, [sp, #0x0] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, r3, #0x0 + bl FUN_020228B8 + add r4, r0, #0x0 + ldr r2, [sp, #0x0] + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_020228E0 + str r0, [r5, #0x0] + ldr r0, [r4, #0x0] + str r0, [r5, #0x4] + ldr r0, [r4, #0x4] + str r0, [r5, #0x8] + pop {r3-r7, pc} + + thumb_func_start FUN_02022968 +FUN_02022968: ; 0x02022968 + push {r3-r7, lr} + ldr r3, _020229AC ; =0x00020464 + add r5, r0, #0x0 + add r7, r2, #0x0 + mov r4, #0xc + add r3, r5, r3 + mul r4, r7 + str r1, [sp, #0x0] + add r6, r3, r4 + bl FUN_020228B8 + ldr r2, _020229B0 ; =0x00020214 + add r4, r0, #0x0 + ldr r0, [r5, r2] + ldr r1, [r6, #0x4] + add r2, r2, #0x4 + str r0, [r4, #0x0] + lsl r0, r7, #0x2 + add r0, r5, r0 + ldr r0, [r0, r2] + ldr r2, [sp, #0x0] + str r0, [r4, #0x4] + ldr r0, [r6, #0x8] + add r1, r2, r1 + str r0, [r4, #0x8] + ldr r0, _020229B4 ; =0x20060623 + str r0, [r4, #0xc] + strb r7, [r4, #0x10] + ldr r2, [r6, #0x8] + add r0, r5, #0x0 + bl FUN_02022898 + strh r0, [r4, #0x12] + pop {r3-r7, pc} + .balign 4 +_020229AC: .word 0x00020464 +_020229B0: .word 0x00020214 +_020229B4: .word 0x20060623 + + thumb_func_start FUN_020229B8 +FUN_020229B8: ; 0x020229B8 + mov r2, #0x0 + mvn r2, r2 + cmp r0, r2 + bne _020229C8 + cmp r1, #0x0 + bne _020229C8 + add r0, r2, #0x0 + bx lr +_020229C8: + cmp r0, #0x0 + bne _020229D8 + mov r2, #0x0 + mvn r2, r2 + cmp r1, r2 + bne _020229D8 + mov r0, #0x1 + bx lr +_020229D8: + cmp r0, r1 + bls _020229E0 + mov r0, #0x1 + bx lr +_020229E0: + cmp r0, r1 + bhs _020229E8 + mov r0, #0x1 + b _020229EA +_020229E8: + mov r0, #0x0 +_020229EA: + neg r0, r0 + bx lr + .balign 4 + + thumb_func_start FUN_020229F0 +FUN_020229F0: ; 0x020229F0 + push {r3-r7, lr} + add r7, r0, #0x0 + add r6, r1, #0x0 + ldr r0, [r7, #0x4] + ldr r1, [r6, #0x4] + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_020229B8 + str r0, [sp, #0x0] + ldr r0, [r7, #0x8] + ldr r1, [r6, #0x8] + bl FUN_020229B8 + ldr r2, [r7, #0x0] + cmp r2, #0x0 + beq _02022A6A + ldr r1, [r6, #0x0] + cmp r1, #0x0 + beq _02022A6A + ldr r1, [sp, #0x0] + cmp r1, #0x0 + ble _02022A30 + cmp r0, #0x0 + bgt _02022A26 + bl ErrorHandling +_02022A26: + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x1 + str r0, [r4, #0x0] + b _02022A66 +_02022A30: + bge _02022A44 + cmp r0, #0x0 + blt _02022A3A + bl ErrorHandling +_02022A3A: + mov r0, #0x1 + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + b _02022A66 +_02022A44: + cmp r0, #0x0 + ble _02022A52 + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x1 + str r0, [r4, #0x0] + b _02022A66 +_02022A52: + bge _02022A5E + mov r0, #0x1 + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + b _02022A66 +_02022A5E: + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x1 + str r0, [r4, #0x0] +_02022A66: + mov r0, #0x2 + pop {r3-r7, pc} +_02022A6A: + cmp r2, #0x0 + beq _02022A80 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + bne _02022A80 + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x2 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_02022A80: + cmp r2, #0x0 + bne _02022A94 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _02022A94 + mov r0, #0x1 + str r0, [r5, #0x0] + mov r1, #0x2 + str r1, [r4, #0x0] + pop {r3-r7, pc} +_02022A94: + mov r0, #0x2 + str r0, [r5, #0x0] + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02022AA0 +FUN_02022AA0: ; 0x02022AA0 + push {r3-r6} + mov r4, #0xc + add r5, r3, #0x0 + mul r5, r4 + add r6, r1, r5 + ldr r5, [r6, #0x4] + ldr r1, _02022AD4 ; =0x00020214 + str r5, [r0, r1] + ldr r6, [r6, #0x8] + add r5, r1, #0x4 + str r6, [r0, r5] + ldr r5, [sp, #0x10] + mul r4, r5 + add r2, r2, r4 + ldr r4, [r2, #0x8] + add r2, r1, #0x0 + add r2, #0x8 + str r4, [r0, r2] + add r2, r1, #0x0 + add r2, #0xc + strb r3, [r0, r2] + add r1, #0xd + strb r5, [r0, r1] + pop {r3-r6} + bx lr + nop +_02022AD4: .word 0x00020214 + + thumb_func_start FUN_02022AD8 +FUN_02022AD8: ; 0x02022AD8 + push {r3-r6, lr} + sub sp, #0x44 + mov r1, #0x2 + add r5, r0, #0x0 + mov r0, #0x3 + lsl r1, r1, #0x10 + bl FUN_020169D8 + mov r1, #0x2 + add r6, r0, #0x0 + mov r0, #0x3 + lsl r1, r1, #0x10 + bl FUN_020169D8 + mov r2, #0x2 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r6, #0x0 + lsl r2, r2, #0x10 + bl FUN_020235EC + cmp r0, #0x0 + add r0, sp, #0x2c + beq _02022B20 + add r1, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + bl FUN_0202293C + add r0, sp, #0x14 + add r1, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x1 + bl FUN_0202293C + b _02022B2A +_02022B20: + bl FUN_0202288C + add r0, sp, #0x14 + bl FUN_0202288C +_02022B2A: + mov r0, #0x1 + lsl r0, r0, #0x12 + add r1, r4, #0x0 + lsr r2, r0, #0x1 + bl FUN_020235EC + cmp r0, #0x0 + add r0, sp, #0x38 + beq _02022B54 + add r1, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0202293C + add r0, sp, #0x20 + add r1, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x1 + bl FUN_0202293C + b _02022B5E +_02022B54: + bl FUN_0202288C + add r0, sp, #0x20 + bl FUN_0202288C +_02022B5E: + add r0, r6, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, sp, #0x2c + add r1, sp, #0x38 + add r2, sp, #0x10 + add r3, sp, #0x8 + bl FUN_020229F0 + add r4, r0, #0x0 + add r0, sp, #0x14 + add r1, sp, #0x20 + add r2, sp, #0xc + add r3, sp, #0x4 + bl FUN_020229F0 + cmp r4, #0x0 + bne _02022B92 + cmp r0, #0x0 + bne _02022B92 + add sp, #0x44 + mov r0, #0x0 + pop {r3-r6, pc} +_02022B92: + cmp r4, #0x0 + beq _02022B9A + cmp r0, #0x0 + bne _02022BA0 +_02022B9A: + add sp, #0x44 + mov r0, #0x3 + pop {r3-r6, pc} +_02022BA0: + cmp r4, #0x2 + bne _02022BE4 + cmp r0, #0x2 + bne _02022BE4 + ldr r3, [sp, #0x10] + ldr r1, [sp, #0xc] + mov r2, #0xc + add r4, r3, #0x0 + mul r4, r2 + add r0, sp, #0x30 + ldr r0, [r0, r4] + add r4, r1, #0x0 + mul r4, r2 + add r2, sp, #0x18 + ldr r2, [r2, r4] + cmp r0, r2 + str r1, [sp, #0x0] + add r1, sp, #0x2c + bne _02022BD4 + add r0, r5, #0x0 + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x1 + pop {r3-r6, pc} +_02022BD4: + ldr r3, [sp, #0x8] + add r0, r5, #0x0 + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x2 + pop {r3-r6, pc} +_02022BE4: + cmp r4, #0x1 + bne _02022C3A + cmp r0, #0x2 + bne _02022C3A + ldr r3, [sp, #0x10] + ldr r0, [sp, #0xc] + mov r4, #0xc + add r2, r3, #0x0 + add r6, r0, #0x0 + mul r2, r4 + add r1, sp, #0x30 + ldr r2, [r1, r2] + mul r6, r4 + add r1, sp, #0x18 + ldr r6, [r1, r6] + cmp r2, r6 + bne _02022C18 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, sp, #0x2c + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x2 + pop {r3-r6, pc} +_02022C18: + ldr r0, [sp, #0x4] + mul r4, r0 + ldr r1, [r1, r4] + cmp r2, r1 + bne _02022C34 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, sp, #0x2c + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x2 + pop {r3-r6, pc} +_02022C34: + add sp, #0x44 + mov r0, #0x3 + pop {r3-r6, pc} +_02022C3A: + cmp r4, #0x2 + bne _02022C7E + cmp r0, #0x1 + bne _02022C7E + ldr r3, [sp, #0x10] + ldr r1, [sp, #0xc] + mov r2, #0xc + add r4, r3, #0x0 + mul r4, r2 + add r0, sp, #0x30 + ldr r0, [r0, r4] + add r4, r1, #0x0 + mul r4, r2 + add r2, sp, #0x18 + ldr r2, [r2, r4] + cmp r0, r2 + str r1, [sp, #0x0] + add r1, sp, #0x2c + bne _02022C6E + add r0, r5, #0x0 + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x1 + pop {r3-r6, pc} +_02022C6E: + ldr r3, [sp, #0x8] + add r0, r5, #0x0 + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x2 + pop {r3-r6, pc} +_02022C7E: + cmp r4, #0x1 + bne _02022CBC + cmp r0, #0x1 + bne _02022CBC + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + cmp r2, r0 + bne _02022CBC + add r3, r2, #0x0 + mov r1, #0xc + mul r3, r1 + add r2, sp, #0x30 + mul r1, r0 + add r0, sp, #0x18 + ldr r2, [r2, r3] + ldr r0, [r0, r1] + cmp r2, r0 + beq _02022CA6 + bl ErrorHandling +_02022CA6: + ldr r0, [sp, #0xc] + add r1, sp, #0x2c + str r0, [sp, #0x0] + ldr r3, [sp, #0x10] + add r0, r5, #0x0 + add r2, sp, #0x14 + bl FUN_02022AA0 + add sp, #0x44 + mov r0, #0x1 + pop {r3-r6, pc} +_02022CBC: + ldr r1, [sp, #0x10] + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + add r1, sp, #0x30 + ldr r3, [r1, r2] + ldr r1, [sp, #0xc] + add r2, r1, #0x0 + mul r2, r0 + add r0, sp, #0x18 + ldr r0, [r0, r2] + cmp r3, r0 + beq _02022CDA + bl ErrorHandling +_02022CDA: + ldr r0, [sp, #0xc] + add r1, sp, #0x2c + str r0, [sp, #0x0] + ldr r3, [sp, #0x10] + add r0, r5, #0x0 + add r2, sp, #0x14 + bl FUN_02022AA0 + mov r0, #0x2 + add sp, #0x44 + pop {r3-r6, pc} + + thumb_func_start FUN_02022CF0 +FUN_02022CF0: ; 0x02022CF0 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_020228A4 + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r1, r4, r1 + bl FUN_020235EC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02022D08 +FUN_02022D08: ; 0x02022D08 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02022D4C ; =0x00020464 + mov r7, #0x85 + mov r4, #0x0 + add r6, r5, r0 + lsl r7, r7, #0x2 +_02022D16: + ldr r0, _02022D50 ; =0x00020220 + add r1, r5, r4 + ldrb r0, [r1, r0] + add r1, r6, #0x0 + add r2, r5, r7 + bl FUN_02022CF0 + cmp r0, #0x0 + bne _02022D2C + mov r0, #0x0 + pop {r3-r7, pc} +_02022D2C: + add r0, r5, #0x0 + add r1, r5, r7 + add r2, r4, #0x0 + bl FUN_020228E0 + cmp r0, #0x0 + bne _02022D3E + mov r0, #0x0 + pop {r3-r7, pc} +_02022D3E: + add r4, r4, #0x1 + add r6, #0xc + cmp r4, #0x2 + blt _02022D16 + mov r0, #0x1 + pop {r3-r7, pc} + nop +_02022D4C: .word 0x00020464 +_02022D50: .word 0x00020220 + + thumb_func_start FUN_02022D54 +FUN_02022D54: ; 0x02022D54 + push {r4-r6, lr} + add r3, r1, #0x0 + ldr r1, _02022D90 ; =0x00020464 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r2, r5, r1 + mov r1, #0xc + mul r1, r3 + add r4, r2, r1 + mov r1, #0x85 + lsl r1, r1, #0x2 + add r1, r5, r1 + add r2, r3, #0x0 + bl FUN_02022968 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_020228A4 + mov r1, #0x85 + lsl r1, r1, #0x2 + add r2, r5, r1 + ldr r1, [r4, #0x4] + add r1, r2, r1 + ldr r2, [r4, #0x8] + sub r2, #0x14 + bl FUN_02023668 + pop {r4-r6, pc} + nop +_02022D90: .word 0x00020464 + + thumb_func_start FUN_02022D94 +FUN_02022D94: ; 0x02022D94 + push {r4-r6, lr} + add r6, r0, #0x0 + ldr r0, _02022DC4 ; =0x00020464 + add r3, r6, r0 + mov r0, #0xc + mul r0, r1 + add r4, r3, r0 + add r0, r2, #0x0 + add r1, r4, #0x0 + ldr r5, [r4, #0x8] + bl FUN_020228A4 + mov r1, #0x2 + lsl r1, r1, #0x8 + add r2, r6, r1 + ldr r1, [r4, #0x4] + add r0, r5, r0 + add r1, r2, r1 + sub r0, #0x14 + add r1, r1, r5 + mov r2, #0x14 + bl FUN_02023668 + pop {r4-r6, pc} + .balign 4 +_02022DC4: .word 0x00020464 + + thumb_func_start FUN_02022DC8 +FUN_02022DC8: ; 0x02022DC8 + push {r4-r6, lr} + add r6, r0, #0x0 + ldr r0, _02022DF8 ; =0x00020464 + add r3, r6, r0 + mov r0, #0xc + mul r0, r1 + add r4, r3, r0 + add r0, r2, #0x0 + add r1, r4, #0x0 + ldr r5, [r4, #0x8] + bl FUN_020228A4 + mov r1, #0x82 + lsl r1, r1, #0x2 + add r2, r6, r1 + ldr r1, [r4, #0x4] + add r0, r5, r0 + add r1, r2, r1 + sub r0, #0xc + add r1, r1, r5 + mov r2, #0x8 + bl FUN_02023668 + pop {r4-r6, pc} + .balign 4 +_02022DF8: .word 0x00020464 + + thumb_func_start FUN_02022DFC +FUN_02022DFC: ; 0x02022DFC + push {r3-r7, lr} + ldr r7, _02022E70 ; =0x00020218 + add r4, r1, #0x0 + mov r12, r2 + mov r1, #0x0 + add r2, r0, #0x0 + add r3, r4, #0x0 + add r6, r7, #0x0 +_02022E0C: + ldr r5, _02022E70 ; =0x00020218 + add r1, r1, #0x1 + ldr r5, [r2, r5] + str r5, [r3, #0x1c] + ldr r5, [r2, r7] + add r3, r3, #0x4 + add r5, r5, #0x1 + str r5, [r2, r6] + add r2, r2, #0x4 + cmp r1, #0x2 + blt _02022E0C + mov r1, #0x0 + str r1, [r4, #0x14] + mov r2, r12 + str r1, [r4, #0x0] + cmp r2, #0x2 + bne _02022E58 + ldr r2, [r0, #0xc] + cmp r2, #0x0 + beq _02022E4E + mov r2, #0x1 + str r2, [r4, #0x0] + ldr r2, _02022E74 ; =0x00020214 + ldr r3, [r0, r2] + str r3, [r4, #0x18] + ldr r3, [r0, r2] + add r3, r3, #0x1 + str r3, [r0, r2] + str r1, [r4, #0x4] + str r1, [r4, #0x8] + mov r0, #0x2 + str r0, [r4, #0xc] + b _02022E66 +_02022E4E: + str r1, [r4, #0x4] + str r1, [r4, #0x8] + mov r0, #0x1 + str r0, [r4, #0xc] + b _02022E66 +_02022E58: + mov r0, r12 + str r0, [r4, #0x4] + mov r0, r12 + str r0, [r4, #0x8] + mov r0, r12 + add r0, r0, #0x1 + str r0, [r4, #0xc] +_02022E66: + mov r0, #0x1 + bl FUN_02016444 + pop {r3-r7, pc} + nop +_02022E70: .word 0x00020218 +_02022E74: .word 0x00020214 + + thumb_func_start FUN_02022E78 +FUN_02022E78: ; 0x02022E78 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x5 + bhi _02022F78 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02022E90: ; jump table (using 16-bit offset) + .short _02022E9C - _02022E90 - 2; case 0 + .short _02022EC0 - _02022E90 - 2; case 1 + .short _02022EDC - _02022E90 - 2; case 2 + .short _02022F00 - _02022E90 - 2; case 3 + .short _02022F2A - _02022E90 - 2; case 4 + .short _02022F4E - _02022E90 - 2; case 5 +_02022E9C: + ldr r1, [r4, #0x8] + ldr r0, _02022F7C ; =0x00020220 + add r2, r5, r1 + ldrb r0, [r2, r0] + cmp r0, #0x0 + bne _02022EAC + mov r2, #0x1 + b _02022EAE +_02022EAC: + mov r2, #0x0 +_02022EAE: + lsl r2, r2, #0x18 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02022D54 + str r0, [r4, #0x10] + ldr r0, [r4, #0x14] + add r0, r0, #0x1 + str r0, [r4, #0x14] +_02022EC0: + ldr r0, [r4, #0x10] + add r1, sp, #0x0 + bl FUN_020236E4 + cmp r0, #0x0 + beq _02022F78 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _02022ED6 + mov r0, #0x3 + pop {r3-r5, pc} +_02022ED6: + ldr r0, [r4, #0x14] + add r0, r0, #0x1 + str r0, [r4, #0x14] +_02022EDC: + ldr r1, [r4, #0x8] + ldr r0, _02022F7C ; =0x00020220 + add r2, r5, r1 + ldrb r0, [r2, r0] + cmp r0, #0x0 + bne _02022EEC + mov r2, #0x1 + b _02022EEE +_02022EEC: + mov r2, #0x0 +_02022EEE: + lsl r2, r2, #0x18 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02022DC8 + str r0, [r4, #0x10] + ldr r0, [r4, #0x14] + add r0, r0, #0x1 + str r0, [r4, #0x14] +_02022F00: + ldr r0, [r4, #0x10] + add r1, sp, #0x0 + bl FUN_020236E4 + cmp r0, #0x0 + beq _02022F78 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _02022F16 + mov r0, #0x3 + pop {r3-r5, pc} +_02022F16: + ldr r0, [r4, #0x14] + add r0, r0, #0x1 + str r0, [r4, #0x14] + ldr r0, [r4, #0x8] + add r1, r0, #0x1 + ldr r0, [r4, #0xc] + cmp r1, r0 + bne _02022F2A + mov r0, #0x1 + pop {r3-r5, pc} +_02022F2A: + ldr r1, [r4, #0x8] + ldr r0, _02022F7C ; =0x00020220 + add r2, r5, r1 + ldrb r0, [r2, r0] + cmp r0, #0x0 + bne _02022F3A + mov r2, #0x1 + b _02022F3C +_02022F3A: + mov r2, #0x0 +_02022F3C: + lsl r2, r2, #0x18 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02022D94 + str r0, [r4, #0x10] + ldr r0, [r4, #0x14] + add r0, r0, #0x1 + str r0, [r4, #0x14] +_02022F4E: + ldr r0, [r4, #0x10] + add r1, sp, #0x0 + bl FUN_020236E4 + cmp r0, #0x0 + beq _02022F78 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _02022F64 + mov r0, #0x3 + pop {r3-r5, pc} +_02022F64: + ldr r0, [r4, #0x8] + add r1, r0, #0x1 + str r1, [r4, #0x8] + ldr r0, [r4, #0xc] + cmp r1, r0 + bne _02022F74 + mov r0, #0x2 + pop {r3-r5, pc} +_02022F74: + mov r0, #0x0 + str r0, [r4, #0x14] +_02022F78: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02022F7C: .word 0x00020220 + + thumb_func_start FUN_02022F80 +FUN_02022F80: ; 0x02022F80 + push {r3-r7, lr} + add r3, r0, #0x0 + add r0, r1, #0x0 + cmp r2, #0x3 + bne _02022FAA + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02022F96 + ldr r2, [r0, #0x18] + ldr r1, _02022FE4 ; =0x00020214 + str r2, [r3, r1] +_02022F96: + ldr r1, _02022FE8 ; =0x00020218 + mov r4, #0x0 +_02022F9A: + ldr r2, [r0, #0x1c] + add r4, r4, #0x1 + str r2, [r3, r1] + add r0, r0, #0x4 + add r3, r3, #0x4 + cmp r4, #0x2 + blt _02022F9A + b _02022FDA +_02022FAA: + ldr r6, [r0, #0x4] + ldr r1, [r0, #0xc] + cmp r6, r1 + bge _02022FD0 + ldr r1, _02022FEC ; =0x00020220 + mov r7, #0x1 + add r2, r1, #0x0 +_02022FB8: + add r5, r3, r6 + ldrb r4, [r5, r2] + cmp r4, #0x0 + bne _02022FC4 + add r4, r7, #0x0 + b _02022FC6 +_02022FC4: + mov r4, #0x0 +_02022FC6: + strb r4, [r5, r1] + ldr r4, [r0, #0xc] + add r6, r6, #0x1 + cmp r6, r4 + blt _02022FB8 +_02022FD0: + mov r0, #0x1 + str r0, [r3, #0x4] + mov r0, #0x0 + str r0, [r3, #0x8] + str r0, [r3, #0xc] +_02022FDA: + mov r0, #0x1 + bl FUN_02016454 + pop {r3-r7, pc} + nop +_02022FE4: .word 0x00020214 +_02022FE8: .word 0x00020218 +_02022FEC: .word 0x00020220 + + thumb_func_start FUN_02022FF0 +FUN_02022FF0: ; 0x02022FF0 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _02023000 + ldr r2, [r4, #0x18] + ldr r1, _0202303C ; =0x00020214 + str r2, [r0, r1] +_02023000: + ldr r1, _02023040 ; =0x00020218 + mov r3, #0x0 + add r5, r4, #0x0 +_02023006: + ldr r2, [r5, #0x1c] + add r3, r3, #0x1 + str r2, [r0, r1] + add r5, r5, #0x4 + add r0, r0, #0x4 + cmp r3, #0x2 + blt _02023006 + blx CARD_TryWaitBackupAsync + cmp r0, #0x0 + bne _02023034 + blx CARD_CancelBackupAsync + ldr r0, [r4, #0x10] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + blx CARD_UnlockBackup + ldr r0, [r4, #0x10] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + blx OS_ReleaseLockID +_02023034: + mov r0, #0x1 + bl FUN_02016454 + pop {r3-r5, pc} + .balign 4 +_0202303C: .word 0x00020214 +_02023040: .word 0x00020218 + + thumb_func_start FUN_02023044 +FUN_02023044: ; 0x02023044 + push {r3-r6, lr} + sub sp, #0x24 + add r1, sp, #0x0 + mov r2, #0x2 + add r5, r0, #0x0 + bl FUN_02022DFC + add r6, sp, #0x0 +_02023054: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02022E78 + add r4, r0, #0x0 + beq _02023054 + cmp r4, #0x1 + beq _02023054 + add r0, r5, #0x0 + add r1, sp, #0x0 + add r2, r4, #0x0 + bl FUN_02022F80 + add r0, r4, #0x0 + add sp, #0x24 + pop {r3-r6, pc} + + thumb_func_start FUN_02023074 +FUN_02023074: ; 0x02023074 + push {r4-r5, lr} + sub sp, #0x14 + add r4, r2, #0x0 + ldr r2, _020230A8 ; =0x00020464 + add r2, r0, r2 + mov r0, #0xc + mul r0, r1 + add r5, r2, r0 + add r0, sp, #0x0 + mov r1, #0xff + mov r2, #0x14 + blx MI_CpuFill8 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020228A4 + ldr r1, [r5, #0x8] + mov r2, #0x14 + add r0, r1, r0 + sub r0, #0x14 + add r1, sp, #0x0 + bl FUN_020235D0 + add sp, #0x14 + pop {r4-r5, pc} + .balign 4 +_020230A8: .word 0x00020464 + + thumb_func_start FUN_020230AC +FUN_020230AC: ; 0x020230AC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _020230DC ; =0x020EE6DC + ldr r4, _020230E0 ; =0x020EE700 + ldr r0, [r0, #0x0] + cmp r5, r0 + blt _020230BE + bl ErrorHandling +_020230BE: + lsl r0, r5, #0x4 + add r0, r4, r0 + ldr r0, [r0, #0x8] + blx r0 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1e + sub r2, r2, r3 + mov r1, #0x1e + ror r2, r1 + add r2, r3, r2 + mov r1, #0x4 + sub r1, r1, r2 + add r0, r0, r1 + pop {r3-r5, pc} + nop +_020230DC: .word 0x020EE6DC +_020230E0: .word 0x020EE700 + + thumb_func_start FUN_020230E4 +FUN_020230E4: ; 0x020230E4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _02023158 ; =0x020EE6DC + ldr r4, _0202315C ; =0x020EE700 + ldr r0, [r0, #0x0] + mov r7, #0x0 + str r0, [sp, #0x0] + cmp r0, #0x24 + beq _020230FC + bl ErrorHandling +_020230FC: + ldr r0, [sp, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + ble _02023148 + sub r0, r0, #0x1 + str r0, [sp, #0x4] +_02023108: + ldr r0, [r4, #0x0] + cmp r6, r0 + beq _02023112 + bl ErrorHandling +_02023112: + ldr r0, [r4, #0x0] + str r0, [r5, #0x0] + add r0, r6, #0x0 + bl FUN_020230AC + str r0, [r5, #0x4] + str r7, [r5, #0x8] + mov r0, #0x0 + strh r0, [r5, #0xc] + ldr r0, [r4, #0x4] + strh r0, [r5, #0xe] + ldr r0, [r5, #0x4] + add r7, r7, r0 + ldr r0, [sp, #0x4] + cmp r6, r0 + beq _0202313A + ldr r1, [r4, #0x4] + ldr r0, [r4, #0x14] + cmp r1, r0 + beq _0202313C +_0202313A: + add r7, #0x14 +_0202313C: + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r4, #0x10 + add r5, #0x10 + cmp r6, r0 + blt _02023108 +_02023148: + mov r0, #0x2 + lsl r0, r0, #0x10 + cmp r7, r0 + ble _02023154 + bl ErrorHandling +_02023154: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02023158: .word 0x020EE6DC +_0202315C: .word 0x020EE700 + + thumb_func_start FUN_02023160 +FUN_02023160: ; 0x02023160 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + mov r12, r0 + add r3, r0, #0x0 + add r6, r0, #0x0 + ldr r0, _020231EC ; =0x020EE6DC + ldr r4, [sp, #0x0] + ldr r7, [r0, #0x0] + add r5, r1, #0x0 +_02023178: + add r2, r4, #0x0 + strb r6, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x8] + add r2, #0x8 + b _02023190 +_02023184: + ldr r0, [r5, #0x4] + ldr r1, [r2, #0x0] + add r5, #0x10 + add r0, r1, r0 + str r0, [r2, #0x0] + add r3, r3, #0x1 +_02023190: + ldrh r0, [r5, #0xe] + cmp r6, r0 + bne _0202319A + cmp r3, r7 + blt _02023184 +_0202319A: + ldr r0, [r4, #0x8] + add r6, r6, #0x1 + add r0, #0x14 + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + strb r0, [r4, #0x1] + mov r0, r12 + str r0, [r4, #0x4] + ldr r1, [r4, #0x8] + ldr r0, _020231F0 ; =0x00000FFF + add r0, r1, r0 + lsr r0, r0, #0xc + strb r0, [r4, #0x2] + ldrb r1, [r4, #0x2] + ldr r0, [sp, #0x4] + add r0, r0, r1 + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + mov r1, r12 + add r0, r1, r0 + add r4, #0xc + mov r12, r0 + cmp r6, #0x2 + blt _02023178 + ldr r0, [sp, #0x0] + ldrb r1, [r0, #0xd] + ldrb r0, [r0, #0xe] + add r1, r1, r0 + ldr r0, [sp, #0x4] + cmp r0, r1 + beq _020231DC + bl ErrorHandling +_020231DC: + ldr r0, [sp, #0x4] + cmp r0, #0x20 + ble _020231E6 + bl ErrorHandling +_020231E6: + add sp, #0x8 + pop {r3-r7, pc} + nop +_020231EC: .word 0x020EE6DC +_020231F0: .word 0x00000FFF + + thumb_func_start FUN_020231F4 +FUN_020231F4: ; 0x020231F4 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r0, #0x0 + mov r2, #0x2 + add r5, r1, #0x0 + mov r0, #0x0 + add r1, r6, #0x0 + lsl r2, r2, #0x10 + ldr r4, _02023240 ; =0x020EE700 + blx MIi_CpuClearFast + ldr r0, _02023244 ; =0x020EE6DC + mov r7, #0x0 + ldr r0, [r0, #0x0] + str r0, [sp, #0x0] + cmp r0, #0x0 + ble _0202323A +_02023216: + ldr r0, [r5, #0x8] + ldr r2, [r5, #0x4] + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + mov r0, #0x0 + add r1, r6, r1 + blx MIi_CpuClearFast + ldr r0, [sp, #0x4] + ldr r1, [r4, #0xc] + add r0, r6, r0 + blx r1 + ldr r0, [sp, #0x0] + add r7, r7, #0x1 + add r5, #0x10 + add r4, #0x10 + cmp r7, r0 + blt _02023216 +_0202323A: + add sp, #0x8 + pop {r3-r7, pc} + nop +_02023240: .word 0x020EE700 +_02023244: .word 0x020EE6DC + + thumb_func_start FUN_02023248 +FUN_02023248: ; 0x02023248 + push {r3-r5, lr} + ldr r5, _0202326C ; =0x20060623 + add r4, r1, r3 + str r5, [r1, r3] + ldr r5, _02023270 ; =0x000204A4 + ldr r5, [r0, r5] + add r0, #0x14 + add r5, r5, #0x1 + str r5, [r4, #0x4] + str r3, [r4, #0x8] + add r3, #0xe + strh r2, [r4, #0xc] + add r2, r3, #0x0 + blx MATH_CalcCRC16CCITT + strh r0, [r4, #0xe] + pop {r3-r5, pc} + nop +_0202326C: .word 0x20060623 +_02023270: .word 0x000204A4 + + thumb_func_start FUN_02023274 +FUN_02023274: ; 0x02023274 + push {r4-r6, lr} + ldr r6, [r1, r3] + ldr r5, _020232B0 ; =0x20060623 + add r4, r1, r3 + cmp r6, r5 + beq _02023284 + mov r0, #0x0 + pop {r4-r6, pc} +_02023284: + ldr r5, [r4, #0x8] + cmp r5, r3 + beq _0202328E + mov r0, #0x0 + pop {r4-r6, pc} +_0202328E: + ldrh r5, [r4, #0xc] + cmp r5, r2 + beq _02023298 + mov r0, #0x0 + pop {r4-r6, pc} +_02023298: + add r3, #0xe + add r0, #0x14 + add r2, r3, #0x0 + blx MATH_CalcCRC16CCITT + ldrh r1, [r4, #0xe] + cmp r1, r0 + bne _020232AC + mov r0, #0x1 + pop {r4-r6, pc} +_020232AC: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_020232B0: .word 0x20060623 + + thumb_func_start FUN_020232B4 +FUN_020232B4: ; 0x020232B4 + add r0, r0, r1 + ldr r0, [r0, #0x4] + bx lr + .balign 4 + + thumb_func_start FUN_020232BC +FUN_020232BC: ; 0x020232BC + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + mov r0, #0x1 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02016444 + ldr r0, _020233FC ; =0x020EE6D8 + ldr r0, [r0, #0x0] + cmp r5, r0 + blt _020232D8 + bl ErrorHandling +_020232D8: + ldr r1, _02023400 ; =0x020EE6E0 + lsl r0, r5, #0x4 + add r4, r1, r0 + ldr r0, [r1, r0] + cmp r0, r5 + beq _020232E8 + bl ErrorHandling +_020232E8: + ldr r0, [r4, #0x8] + blx r0 + str r0, [sp, #0x4] + add r0, #0x10 + str r0, [sp, #0x4] + ldr r0, _02023404 ; =0x000204A0 + ldr r0, [r7, r0] + cmp r0, #0x1 + ldr r0, [r4, #0x8] + bne _0202336E + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023248 + ldr r0, [r4, #0x4] + ldr r2, [sp, #0x4] + lsl r0, r0, #0xc + add r1, r6, #0x0 + bl FUN_020235D0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023274 + cmp r0, #0x1 + beq _02023330 + bl ErrorHandling +_02023330: + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023248 + ldr r0, [r4, #0x4] + ldr r2, [sp, #0x4] + add r0, #0x40 + lsl r0, r0, #0xc + add r1, r6, #0x0 + bl FUN_020235D0 + ldr r1, [sp, #0x0] + orr r0, r1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023274 + cmp r0, #0x1 + beq _020233DE + bl ErrorHandling + b _020233DE +_0202336E: + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023248 + ldr r0, [r4, #0x4] + ldr r2, [sp, #0x4] + add r0, #0x40 + lsl r0, r0, #0xc + add r1, r6, #0x0 + bl FUN_020235D0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023274 + cmp r0, #0x1 + beq _020233A4 + bl ErrorHandling +_020233A4: + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023248 + ldr r0, [r4, #0x4] + ldr r2, [sp, #0x4] + lsl r0, r0, #0xc + add r1, r6, #0x0 + bl FUN_020235D0 + ldr r1, [sp, #0x0] + orr r0, r1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02023274 + cmp r0, #0x1 + beq _020233DE + bl ErrorHandling +_020233DE: + ldr r0, [sp, #0x0] + cmp r0, #0x1 + bne _020233F0 + mov r0, #0x1 + bl FUN_02016454 + add sp, #0x8 + mov r0, #0x2 + pop {r3-r7, pc} +_020233F0: + mov r0, #0x1 + bl FUN_02016454 + mov r0, #0x3 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020233FC: .word 0x020EE6D8 +_02023400: .word 0x020EE6E0 +_02023404: .word 0x000204A0 + + thumb_func_start FUN_02023408 +FUN_02023408: ; 0x02023408 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + ldr r0, _02023564 ; =0x020EE6D8 + add r7, r2, #0x0 + ldr r0, [r0, #0x0] + add r6, r1, #0x0 + str r3, [sp, #0x0] + cmp r7, r0 + blt _02023420 + bl ErrorHandling +_02023420: + ldr r1, _02023568 ; =0x020EE6E0 + lsl r0, r7, #0x4 + add r4, r1, r0 + ldr r0, [r1, r0] + cmp r0, r7 + beq _02023430 + bl ErrorHandling +_02023430: + ldr r0, [r4, #0x8] + blx r0 + str r0, [sp, #0x10] + add r0, #0x10 + str r0, [sp, #0x10] + ldr r1, [sp, #0x10] + add r0, r6, #0x0 + bl FUN_02016998 + add r6, r0, #0x0 + ldr r0, [r4, #0x4] + ldr r2, [sp, #0x10] + lsl r0, r0, #0xc + add r1, r6, #0x0 + bl FUN_020235EC + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02023274 + str r0, [sp, #0xc] + ldr r0, [r4, #0x8] + blx r0 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020232B4 + str r0, [sp, #0x8] + ldr r0, [r4, #0x4] + ldr r2, [sp, #0x10] + add r0, #0x40 + lsl r0, r0, #0xc + add r1, r6, #0x0 + bl FUN_020235EC + ldr r0, [r4, #0x8] + blx r0 + add r3, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02023274 + add r7, r0, #0x0 + ldr r0, [r4, #0x8] + blx r0 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020232B4 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0xc] + cmp r0, #0x1 + bne _020234CC + cmp r7, #0x0 + bne _020234CC + ldr r0, _0202356C ; =0x000204A0 + mov r1, #0x0 + str r1, [r5, r0] + add r1, r0, #0x4 + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x10] + str r0, [r5, r1] + ldr r0, [r4, #0x4] + add r1, r6, #0x0 + lsl r0, r0, #0xc + bl FUN_020235EC + add sp, #0x14 + add r0, r6, #0x0 + pop {r4-r7, pc} +_020234CC: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _020234F6 + cmp r7, #0x1 + bne _020234F6 + ldr r0, _0202356C ; =0x000204A0 + mov r1, #0x1 + str r1, [r5, r0] + add r1, r0, #0x4 + ldr r0, [sp, #0x4] + ldr r2, [sp, #0x10] + str r0, [r5, r1] + ldr r0, [r4, #0x4] + add r1, r6, #0x0 + add r0, #0x40 + lsl r0, r0, #0xc + bl FUN_020235EC + add sp, #0x14 + add r0, r6, #0x0 + pop {r4-r7, pc} +_020234F6: + ldr r0, [sp, #0xc] + cmp r0, #0x1 + bne _0202354C + cmp r7, #0x1 + bne _0202354C + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + bl FUN_020229B8 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + ldr r0, _0202356C ; =0x000204A0 + beq _0202352E + mov r1, #0x0 + str r1, [r5, r0] + add r1, r0, #0x4 + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x10] + str r0, [r5, r1] + ldr r0, [r4, #0x4] + add r1, r6, #0x0 + lsl r0, r0, #0xc + bl FUN_020235EC + add sp, #0x14 + add r0, r6, #0x0 + pop {r4-r7, pc} +_0202352E: + mov r1, #0x1 + str r1, [r5, r0] + add r1, r0, #0x4 + ldr r0, [sp, #0x4] + ldr r2, [sp, #0x10] + str r0, [r5, r1] + ldr r0, [r4, #0x4] + add r1, r6, #0x0 + add r0, #0x40 + lsl r0, r0, #0xc + bl FUN_020235EC + add sp, #0x14 + add r0, r6, #0x0 + pop {r4-r7, pc} +_0202354C: + ldr r0, [sp, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + ldr r0, _0202356C ; =0x000204A0 + mov r1, #0x0 + str r1, [r5, r0] + add r0, r0, #0x4 + str r1, [r5, r0] + add r0, r6, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + nop +_02023564: .word 0x020EE6D8 +_02023568: .word 0x020EE6E0 +_0202356C: .word 0x000204A0 + + thumb_func_start FUN_02023570 +FUN_02023570: ; 0x02023570 + push {r3-r5, lr} + blx OS_GetLockID + add r4, r0, #0x0 + mov r0, #0x2 + mvn r0, r0 + cmp r4, r0 + bne _02023584 + bl ErrorHandling +_02023584: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx CARD_LockBackup + ldr r0, _020235C8 ; =0x00001302 + blx CARD_IdentifyBackup + cmp r0, #0x0 + beq _0202359A + ldr r5, _020235C8 ; =0x00001302 + b _020235AA +_0202359A: + ldr r0, _020235CC ; =0x00001202 + blx CARD_IdentifyBackup + cmp r0, #0x0 + beq _020235A8 + ldr r5, _020235CC ; =0x00001202 + b _020235AA +_020235A8: + mov r5, #0x0 +_020235AA: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx CARD_UnlockBackup + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx OS_ReleaseLockID + cmp r5, #0x0 + beq _020235C2 + mov r0, #0x1 + pop {r3-r5, pc} +_020235C2: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_020235C8: .word 0x00001302 +_020235CC: .word 0x00001202 + + thumb_func_start FUN_020235D0 +FUN_020235D0: ; 0x020235D0 + push {r3-r5, lr} + bl FUN_02023668 + add r5, r0, #0x0 + add r4, sp, #0x0 +_020235DA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020236E4 + cmp r0, #0x0 + beq _020235DA + ldr r0, [sp, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020235EC +FUN_020235EC: ; 0x020235EC + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + blx OS_GetLockID + add r4, r0, #0x0 + mov r0, #0x2 + mvn r0, r0 + cmp r4, r0 + bne _02023608 + bl ErrorHandling +_02023608: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx CARD_LockBackup + mov r3, #0x0 + str r3, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x6 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + str r3, [sp, #0x10] + blx CARDi_RequestStreamCommand + blx CARD_WaitBackupAsync + add r5, r0, #0x0 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx CARD_UnlockBackup + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx OS_ReleaseLockID + cmp r5, #0x0 + bne _02023652 + ldr r0, _02023658 ; =0x021C59C8 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + mov r0, #0x1 + bl FUN_02089D90 +_02023652: + add r0, r5, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02023658: .word 0x021C59C8 + + thumb_func_start FUN_0202365C +FUN_0202365C: ; 0x0202365C + ldr r0, _02023664 ; =0x021C59C8 + mov r1, #0x1 + str r1, [r0, #0x4] + bx lr + .balign 4 +_02023664: .word 0x021C59C8 + + thumb_func_start FUN_02023668 +FUN_02023668: ; 0x02023668 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + blx OS_GetLockID + add r4, r0, #0x0 + mov r0, #0x2 + mvn r0, r0 + cmp r4, r0 + bne _02023684 + bl ErrorHandling +_02023684: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + blx CARD_LockBackup + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r1, #0x6 + str r1, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + add r1, sp, #0x14 + mov r2, #0x4 + add r3, r0, #0x0 + str r0, [sp, #0x10] + blx CARDi_RequestStreamCommand + cmp r0, #0x0 + bne _020236B2 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02023740 +_020236B2: + ldr r0, _020236DC ; =0x021C59C8 + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x7 + str r0, [sp, #0x8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #0x2 + str r0, [sp, #0x10] + ldr r3, _020236E0 ; =FUN_0202365C + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r7, #0x0 + blx CARDi_RequestStreamCommand + add r0, r4, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_020236DC: .word 0x021C59C8 +_020236E0: .word FUN_0202365C + + thumb_func_start FUN_020236E4 +FUN_020236E4: ; 0x020236E4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0202373C ; =0x021C59C8 + add r4, r1, #0x0 + ldr r0, [r0, #0x4] + cmp r0, #0x1 + bne _02023738 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + blx CARD_UnlockBackup + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + blx OS_ReleaseLockID + blx CARD_GetResultCode + cmp r0, #0x0 + beq _02023714 + cmp r0, #0x4 + beq _0202371E + cmp r0, #0x6 + beq _02023728 + b _0202371A +_02023714: + mov r0, #0x1 + str r0, [r4, #0x0] + b _02023734 +_0202371A: + bl ErrorHandling +_0202371E: + mov r1, #0x0 + add r0, r5, #0x0 + str r1, [r4, #0x0] + bl FUN_02023740 +_02023728: + mov r0, #0x0 + str r0, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02023740 +_02023734: + mov r0, #0x1 + pop {r3-r5, pc} +_02023738: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0202373C: .word 0x021C59C8 + + thumb_func_start FUN_02023740 +FUN_02023740: ; 0x02023740 + push {r3-r5, lr} + add r5, r0, #0x0 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + add r4, r1, #0x0 + blx CARD_UnlockBackup + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + blx OS_ReleaseLockID + ldr r0, _02023768 ; =0x021C59C8 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + mov r0, #0x1 + add r1, r4, #0x0 + bl FUN_0208A0B8 + pop {r3-r5, pc} + .balign 4 +_02023768: .word 0x021C59C8 + + thumb_func_start FUN_0202376C +FUN_0202376C: ; 0x0202376C + mov r0, #0x5c + bx lr + + thumb_func_start FUN_02023770 +FUN_02023770: ; 0x02023770 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x5c + blx MIi_CpuClearFast + add r4, #0x10 + add r0, r4, #0x0 + bl FUN_02023840 + pop {r4, pc} + + thumb_func_start FUN_02023788 +FUN_02023788: ; 0x02023788 + ldr r3, _02023790 ; =FUN_02022610 + mov r1, #0x0 + bx r3 + nop +_02023790: .word FUN_02022610 + + thumb_func_start FUN_02023794 +FUN_02023794: ; 0x02023794 + push {r3, lr} + bl FUN_02023788 + add r0, #0x10 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020237A0 +FUN_020237A0: ; 0x020237A0 + push {r4, lr} + sub sp, #0x50 + add r4, r0, #0x0 + blx OS_GetOwnerRtcOffset + str r0, [r4, #0x0] + add r0, r4, #0x0 + add r0, #0x8 + str r1, [r4, #0x4] + blx OS_GetMacAddress + add r0, sp, #0x0 + blx OS_GetOwnerInfo + add r0, sp, #0x0 + ldrb r1, [r0, #0x2] + strb r1, [r4, #0xe] + ldrb r0, [r0, #0x3] + strb r0, [r4, #0xf] + add sp, #0x50 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020237CC +FUN_020237CC: ; 0x020237CC + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, sp, #0x0 + blx OS_GetMacAddress + mov r2, #0x0 + add r3, sp, #0x0 +_020237DC: + add r0, r4, r2 + ldrb r1, [r3, #0x0] + ldrb r0, [r0, #0x8] + cmp r1, r0 + beq _020237EC + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_020237EC: + add r2, r2, #0x1 + add r3, r3, #0x1 + cmp r2, #0x6 + blt _020237DC + mov r0, #0x1 + add sp, #0x8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020237FC +FUN_020237FC: ; 0x020237FC + push {r4, lr} + add r4, r0, #0x0 + blx OS_GetOwnerRtcOffset + ldr r3, [r4, #0x0] + ldr r2, [r4, #0x4] + eor r0, r3 + eor r1, r2 + orr r0, r1 + bne _02023814 + mov r0, #0x1 + pop {r4, pc} +_02023814: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02023818 +FUN_02023818: ; 0x02023818 + ldrb r0, [r0, #0xe] + bx lr + + thumb_func_start FUN_0202381C +FUN_0202381C: ; 0x0202381C + ldrb r0, [r0, #0xf] + bx lr + + thumb_func_start FUN_02023820 +FUN_02023820: ; 0x02023820 + add r0, #0x48 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02023828 +FUN_02023828: ; 0x02023828 + add r0, #0x48 + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02023830 +FUN_02023830: ; 0x02023830 + ldr r0, [r0, #0x4c] + bx lr + + thumb_func_start FUN_02023834 +FUN_02023834: ; 0x02023834 + ldr r2, [r0, #0x4c] + cmp r2, #0x0 + bne _0202383C + str r1, [r0, #0x4c] +_0202383C: + bx lr + .balign 4 + + thumb_func_start FUN_02023840 +FUN_02023840: ; 0x02023840 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x1 + add r1, r4, #0x0 + str r0, [r4, #0x0] + add r0, r4, #0x4 + add r1, #0x14 + bl FUN_0201265C + add r0, r4, #0x4 + blx RTC_ConvertDateToDay + add r1, r4, #0x0 + str r0, [r4, #0x20] + add r0, r4, #0x4 + add r1, #0x14 + blx RTC_ConvertDateTimeToSecond + str r0, [r4, #0x24] + str r1, [r4, #0x28] + mov r0, #0x0 + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + str r0, [r4, #0x34] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02023874 +FUN_02023874: ; 0x02023874 + ldr r0, [r0, #0x34] + cmp r0, #0x0 + beq _0202387E + mov r0, #0x1 + bx lr +_0202387E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02023884 +FUN_02023884: ; 0x02023884 + mov r2, #0x5a + ldr r3, [r0, #0x34] + lsl r2, r2, #0x4 + cmp r3, r2 + bls _02023890 + str r2, [r0, #0x34] +_02023890: + ldr r2, [r0, #0x34] + cmp r2, r1 + bhs _0202389C + mov r1, #0x0 + str r1, [r0, #0x34] + bx lr +_0202389C: + sub r1, r2, r1 + str r1, [r0, #0x34] + bx lr + .balign 4 + + thumb_func_start FUN_020238A4 +FUN_020238A4: ; 0x020238A4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x5a + lsl r0, r0, #0x4 + add r1, r4, #0x0 + str r0, [r4, #0x34] + add r0, r4, #0x4 + add r1, #0x14 + bl FUN_0201265C + add r0, r4, #0x4 + blx RTC_ConvertDateToDay + str r0, [r4, #0x20] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020238C4 +FUN_020238C4: ; 0x020238C4 + mov r0, #0x2c + bx lr + + thumb_func_start FUN_020238C8 +FUN_020238C8: ; 0x020238C8 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x2c + blx MIi_CpuClearFast + add r0, r4, #0x0 + bl FUN_02024F50 + add r0, r4, #0x4 + bl FUN_02023948 + add r0, r4, #0x0 + add r0, #0x24 + bl FUN_02028910 + add r4, #0x26 + add r0, r4, #0x0 + bl FUN_02029E48 + pop {r4, pc} + + thumb_func_start FUN_020238F4 +FUN_020238F4: ; 0x020238F4 + push {r3, lr} + mov r1, #0x1 + bl FUN_02022610 + add r0, r0, #0x4 + pop {r3, pc} + + thumb_func_start LoadPlayerDataAddress +LoadPlayerDataAddress: ; 0x02023900 + ldr r3, _02023908 ; =FUN_02022610 + mov r1, #0x1 + bx r3 + nop +_02023908: .word FUN_02022610 + + thumb_func_start FUN_0202390C +FUN_0202390C: ; 0x0202390C + push {r3, lr} + mov r1, #0x1 + bl FUN_02022610 + add r0, #0x24 + pop {r3, pc} + + thumb_func_start FUN_02023918 +FUN_02023918: ; 0x02023918 + push {r3, lr} + mov r1, #0x1 + bl FUN_02022610 + add r0, #0x26 + pop {r3, pc} + + thumb_func_start FUN_02023924 +FUN_02023924: ; 0x02023924 + mov r0, #0x20 + bx lr + + thumb_func_start FUN_02023928 +FUN_02023928: ; 0x02023928 + push {r4, lr} + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_02023948 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202393C +FUN_0202393C: ; 0x0202393C + ldr r3, _02023944 ; =MI_CpuCopy8 + mov r2, #0x20 + bx r3 + nop +_02023944: .word MI_CpuCopy8 + + thumb_func_start FUN_02023948 +FUN_02023948: ; 0x02023948 + push {r4, lr} + mov r1, #0x0 + mov r2, #0x20 + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x2 + strb r0, [r4, #0x19] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202395C +FUN_0202395C: ; 0x0202395C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl StringLength + cmp r0, #0x8 + blt _02023970 + bl ErrorHandling +_02023970: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl StringCopy + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202397C +FUN_0202397C: ; 0x0202397C + ldr r3, _02023988 ; =FUN_02021EF0 + add r2, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + mov r2, #0x8 + bx r3 + .balign 4 +_02023988: .word FUN_02021EF0 + + thumb_func_start FUN_0202398C +FUN_0202398C: ; 0x0202398C + bx lr + .balign 4 + + thumb_func_start FUN_02023990 +FUN_02023990: ; 0x02023990 + ldr r3, _0202399C ; =FUN_02021E28 + add r2, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + bx r3 + nop +_0202399C: .word FUN_02021E28 + + thumb_func_start FUN_020239A0 +FUN_020239A0: ; 0x020239A0 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x8 + bl FUN_020219F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02023990 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020239B8 +FUN_020239B8: ; 0x020239B8 + str r1, [r0, #0x10] + bx lr + + thumb_func_start FUN_020239BC +FUN_020239BC: ; 0x020239BC + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_020239C0 +FUN_020239C0: ; 0x020239C0 + ldr r0, [r0, #0x10] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + + thumb_func_start FUN_020239C8 +FUN_020239C8: ; 0x020239C8 + strb r1, [r0, #0x18] + bx lr + + thumb_func_start FUN_020239CC +FUN_020239CC: ; 0x020239CC + ldrb r0, [r0, #0x18] + bx lr + + thumb_func_start FUN_020239D0 +FUN_020239D0: ; 0x020239D0 + ldrb r3, [r0, #0x1a] + mov r0, #0x1 + add r2, r0, #0x0 + lsl r2, r1 + add r1, r3, #0x0 + tst r1, r2 + bne _020239E0 + mov r0, #0x0 +_020239E0: + bx lr + .balign 4 + + thumb_func_start FUN_020239E4 +FUN_020239E4: ; 0x020239E4 + ldrb r3, [r0, #0x1a] + mov r2, #0x1 + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + strb r1, [r0, #0x1a] + bx lr + .balign 4 + + thumb_func_start FUN_020239F4 +FUN_020239F4: ; 0x020239F4 + ldrb r3, [r0, #0x1a] + mov r2, #0x0 + cmp r3, #0x0 + beq _02023A0A + mov r0, #0x1 +_020239FE: + add r1, r3, #0x0 + tst r1, r0 + beq _02023A06 + add r2, r2, #0x1 +_02023A06: + lsr r3, r3, #0x1 + bne _020239FE +_02023A0A: + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02023A10 +FUN_02023A10: ; 0x02023A10 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start FUN_02023A14 +FUN_02023A14: ; 0x02023A14 + ldr r2, _02023A24 ; =0x000F423F + cmp r1, r2 + bls _02023A1C + add r1, r2, #0x0 +_02023A1C: + str r1, [r0, #0x14] + add r0, r1, #0x0 + bx lr + nop +_02023A24: .word 0x000F423F + + thumb_func_start FUN_02023A28 +FUN_02023A28: ; 0x02023A28 + ldrb r0, [r0, #0x1b] + bx lr + + thumb_func_start FUN_02023A2C +FUN_02023A2C: ; 0x02023A2C + strb r1, [r0, #0x1b] + bx lr + + thumb_func_start FUN_02023A30 +FUN_02023A30: ; 0x02023A30 + ldr r2, _02023A50 ; =0x000F423F + cmp r1, r2 + bls _02023A3A + str r2, [r0, #0x14] + b _02023A40 +_02023A3A: + ldr r2, [r0, #0x14] + add r1, r2, r1 + str r1, [r0, #0x14] +_02023A40: + ldr r2, [r0, #0x14] + ldr r1, _02023A50 ; =0x000F423F + cmp r2, r1 + bls _02023A4A + str r1, [r0, #0x14] +_02023A4A: + ldr r0, [r0, #0x14] + bx lr + nop +_02023A50: .word 0x000F423F + + thumb_func_start FUN_02023A54 +FUN_02023A54: ; 0x02023A54 + ldr r2, [r0, #0x14] + cmp r2, r1 + bhs _02023A5E + mov r1, #0x0 + b _02023A60 +_02023A5E: + sub r1, r2, r1 +_02023A60: + str r1, [r0, #0x14] + ldr r0, [r0, #0x14] + bx lr + .balign 4 + + thumb_func_start FUN_02023A68 +FUN_02023A68: ; 0x02023A68 + ldrb r0, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02023A6C +FUN_02023A6C: ; 0x02023A6C + strb r1, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02023A70 +FUN_02023A70: ; 0x02023A70 + ldrb r0, [r0, #0x19] + bx lr + + thumb_func_start FUN_02023A74 +FUN_02023A74: ; 0x02023A74 + strb r1, [r0, #0x19] + bx lr + + thumb_func_start FUN_02023A78 +FUN_02023A78: ; 0x02023A78 + ldrb r2, [r0, #0x1d] + mov r1, #0x1 + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strb r1, [r0, #0x1d] + bx lr + .balign 4 + + thumb_func_start FUN_02023A88 +FUN_02023A88: ; 0x02023A88 + ldrb r0, [r0, #0x1d] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_02023A90 +FUN_02023A90: ; 0x02023A90 + ldrb r2, [r0, #0x1d] + mov r1, #0x2 + orr r1, r2 + strb r1, [r0, #0x1d] + bx lr + .balign 4 + + thumb_func_start FUN_02023A9C +FUN_02023A9C: ; 0x02023A9C + ldrb r0, [r0, #0x1d] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_02023AA4 +FUN_02023AA4: ; 0x02023AA4 + push {r3-r5, lr} + mov r2, #0x7 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl StringNotEqualN + cmp r0, #0x0 + bne _02023AC0 + ldr r1, [r5, #0x10] + ldr r0, [r4, #0x10] + cmp r1, r0 + bne _02023AC0 + mov r0, #0x1 + pop {r3-r5, pc} +_02023AC0: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02023AC4 +FUN_02023AC4: ; 0x02023AC4 + mov r0, #0x20 + bx lr + + thumb_func_start FUN_02023AC8 +FUN_02023AC8: ; 0x02023AC8 + mov r0, #0x20 + bx lr + + thumb_func_start FUN_02023ACC +FUN_02023ACC: ; 0x02023ACC + ldr r3, _02023AD4 ; =MI_CpuCopy8 + mov r2, #0x20 + bx r3 + nop +_02023AD4: .word MI_CpuCopy8 + + thumb_func_start FUN_02023AD8 +FUN_02023AD8: ; 0x02023AD8 + ldr r3, _02023AE0 ; =Call_FillMemWithValue + mov r1, #0x0 + mov r2, #0x20 + bx r3 + .balign 4 +_02023AE0: .word Call_FillMemWithValue + + thumb_func_start FUN_02023AE4 +FUN_02023AE4: ; 0x02023AE4 + ldr r3, _02023AF0 ; =FUN_02021E8C + add r2, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + mov r2, #0xc + bx r3 + .balign 4 +_02023AF0: .word FUN_02021E8C + + thumb_func_start FUN_02023AF4 +FUN_02023AF4: ; 0x02023AF4 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x18 + bl FUN_020219F4 + add r1, r5, #0x0 + add r4, r0, #0x0 + bl FUN_02021E28 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02023B0C +FUN_02023B0C: ; 0x02023B0C + mov r2, #0x0 + cmp r1, #0xc + bhi _02023B9E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02023B1E: ; jump table (using 16-bit offset) + .short _02023B9E - _02023B1E - 2; case 0 + .short _02023B38 - _02023B1E - 2; case 1 + .short _02023B3C - _02023B1E - 2; case 2 + .short _02023B40 - _02023B1E - 2; case 3 + .short _02023B44 - _02023B1E - 2; case 4 + .short _02023B4C - _02023B1E - 2; case 5 + .short _02023B52 - _02023B1E - 2; case 6 + .short _02023B66 - _02023B1E - 2; case 7 + .short _02023B6C - _02023B1E - 2; case 8 + .short _02023B80 - _02023B1E - 2; case 9 + .short _02023B88 - _02023B1E - 2; case 10 + .short _02023B90 - _02023B1E - 2; case 11 + .short _02023B98 - _02023B1E - 2; case 12 +_02023B38: + ldrb r2, [r0, #0x1a] + b _02023B9E +_02023B3C: + ldrb r2, [r0, #0x1b] + b _02023B9E +_02023B40: + ldrh r2, [r0, #0x18] + b _02023B9E +_02023B44: + ldrb r0, [r0, #0x1e] + lsl r0, r0, #0x1f + lsr r2, r0, #0x1f + b _02023B9E +_02023B4C: + mov r1, #0x1c + ldrsb r2, [r0, r1] + b _02023B9E +_02023B52: + mov r1, #0x1c + ldrsb r0, [r0, r1] + cmp r0, #0x0 + ble _02023B5E + mov r2, #0x1 + b _02023B9E +_02023B5E: + bge _02023B9E + add r2, r1, #0x0 + sub r2, #0x1d + b _02023B9E +_02023B66: + mov r1, #0x1d + ldrsb r2, [r0, r1] + b _02023B9E +_02023B6C: + mov r1, #0x1d + ldrsb r0, [r0, r1] + cmp r0, #0x0 + ble _02023B78 + mov r2, #0x1 + b _02023B9E +_02023B78: + bge _02023B9E + add r2, r1, #0x0 + sub r2, #0x1e + b _02023B9E +_02023B80: + ldrb r0, [r0, #0x1e] + lsl r0, r0, #0x1c + lsr r2, r0, #0x1f + b _02023B9E +_02023B88: + ldrb r0, [r0, #0x1e] + lsl r0, r0, #0x1d + lsr r2, r0, #0x1f + b _02023B9E +_02023B90: + ldrb r0, [r0, #0x1e] + lsl r0, r0, #0x1e + lsr r2, r0, #0x1f + b _02023B9E +_02023B98: + ldrb r0, [r0, #0x1e] + lsl r0, r0, #0x1b + lsr r2, r0, #0x1f +_02023B9E: + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02023BA4 +FUN_02023BA4: ; 0x02023BA4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x1 + blt _02023BB2 + bl ErrorHandling +_02023BB2: + add r0, r4, #0x0 + mov r1, #0xd + bl FUN_02022610 + add r4, r0, #0x0 + lsl r5, r5, #0x5 + add r0, r4, r5 + mov r1, #0x1 + bl FUN_02023B0C + cmp r0, #0x0 + beq _02023BCE + add r0, r4, r5 + pop {r3-r5, pc} +_02023BCE: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02023BD4 +FUN_02023BD4: ; 0x02023BD4 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0xd + bl FUN_02022610 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02023ACC + pop {r4, pc} + + thumb_func_start FUN_02023BE8 +FUN_02023BE8: ; 0x02023BE8 + push {r3, lr} + cmp r1, #0x5 + bhs _02023BF6 + ldr r2, _02023C00 ; =0x02105BD4 + lsl r0, r1, #0x5 + add r0, r2, r0 + pop {r3, pc} +_02023BF6: + mov r1, #0xd + bl FUN_02022610 + pop {r3, pc} + nop +_02023C00: .word 0x02105BD4 + + thumb_func_start FUN_02023C04 +FUN_02023C04: ; 0x02023C04 + push {r4-r6, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + cmp r5, #0x5 + bhs _02023C2C + ldr r2, _02023C3C ; =0x0000013A + mov r0, #0x0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, #0x38 + add r6, r0, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_0200A8B8 + pop {r4-r6, pc} +_02023C2C: + mov r1, #0x0 + bl FUN_02023BA4 + add r1, r4, #0x0 + bl FUN_02023AE4 + pop {r4-r6, pc} + nop +_02023C3C: .word 0x0000013A + + thumb_func_start FUN_02023C40 +FUN_02023C40: ; 0x02023C40 + mov r0, #0x1e + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02023C48 +FUN_02023C48: ; 0x02023C48 + push {r4, lr} + mov r2, #0x1e + add r4, r0, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x4 + blx Call_FillMemWithValue + add r0, r4, #0x0 + bl FUN_020669A0 + add r0, r4, #0x0 + add r0, #0xec + bl FUN_020669A0 + mov r0, #0x76 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r0, #0x4 + strb r1, [r4, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02023C74 +FUN_02023C74: ; 0x02023C74 + mov r2, #0xec + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start FUN_02023C7C +FUN_02023C7C: ; 0x02023C7C + bx lr + .balign 4 + + thumb_func_start FUN_02023C80 +FUN_02023C80: ; 0x02023C80 + add r0, #0x88 + bx lr + + thumb_func_start FUN_02023C84 +FUN_02023C84: ; 0x02023C84 + add r0, #0xe8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02023C8C +FUN_02023C8C: ; 0x02023C8C + bx lr + .balign 4 + + thumb_func_start FUN_02023C90 +FUN_02023C90: ; 0x02023C90 + mov r1, #0x76 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_02023C98 +FUN_02023C98: ; 0x02023C98 + mov r1, #0x77 + lsl r1, r1, #0x2 + ldrb r0, [r0, r1] + bx lr + + thumb_func_start FUN_02023CA0 +FUN_02023CA0: ; 0x02023CA0 + add r0, #0xe8 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02023CA8 +FUN_02023CA8: ; 0x02023CA8 + add r2, r0, #0x0 + add r2, #0xe8 + ldr r2, [r2, #0x0] + add r0, #0xe8 + add r1, r2, r1 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02023CB8 +FUN_02023CB8: ; 0x02023CB8 + mov r2, #0x76 + lsl r2, r2, #0x2 + str r1, [r0, r2] + bx lr + + thumb_func_start FUN_02023CC0 +FUN_02023CC0: ; 0x02023CC0 + mov r2, #0x77 + lsl r2, r2, #0x2 + strb r1, [r0, r2] + bx lr + + thumb_func_start FUN_02023CC8 +FUN_02023CC8: ; 0x02023CC8 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0xc + mov r2, #0x0 + bl FUN_020672BC + add r5, #0xec + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xc + mov r2, #0x0 + bl FUN_020672BC + cmp r4, r0 + beq _02023CEA + mov r0, #0x1 + pop {r3-r5, pc} +_02023CEA: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02023CF0 +FUN_02023CF0: ; 0x02023CF0 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x1d +_02023CF8: + ldmia r3!, {r0-r1} + stmia r4!, {r0-r1} + sub r2, r2, #0x1 + bne _02023CF8 + ldr r0, [r3, #0x0] + str r0, [r4, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_02023D08 +FUN_02023D08: ; 0x02023D08 + push {r3-r4} + mov r1, #0x0 + add r2, r0, #0x0 + add r4, r1, #0x0 +_02023D10: + add r1, r1, #0x1 + strh r4, [r2, #0x38] + add r2, r2, #0x2 + cmp r1, #0x8 + blt _02023D10 + add r3, r0, #0x0 + mov r2, #0x0 +_02023D1E: + add r1, r3, #0x0 + add r1, #0x48 + add r4, r4, #0x1 + add r3, r3, #0x2 + strh r2, [r1, #0x0] + cmp r4, #0xb + blt _02023D1E + ldr r1, _02023D38 ; =0x0000FFFF + strh r1, [r0, #0x38] + add r0, #0x48 + strh r1, [r0, #0x0] + pop {r3-r4} + bx lr + .balign 4 +_02023D38: .word 0x0000FFFF + + thumb_func_start FUN_02023D3C +FUN_02023D3C: ; 0x02023D3C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020669A0 + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0xe8 + add r4, #0x88 + str r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_02023D08 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02023D58 +FUN_02023D58: ; 0x02023D58 + ldr r3, _02023D60 ; =FUN_02022610 + mov r1, #0x8 + bx r3 + nop +_02023D60: .word FUN_02022610 + + thumb_func_start FUN_02023D64 +FUN_02023D64: ; 0x02023D64 + mov r0, #0x4f + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_02023D6C +FUN_02023D6C: ; 0x02023D6C + push {r4, lr} + mov r1, #0x4f + lsl r1, r1, #0x2 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_02024378 + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02023D80 +FUN_02023D80: ; 0x02023D80 + ldr r3, _02023D88 ; =MI_CpuCopy8 + mov r2, #0x4f + lsl r2, r2, #0x2 + bx r3 + .balign 4 +_02023D88: .word MI_CpuCopy8 + + thumb_func_start FUN_02023D8C +FUN_02023D8C: ; 0x02023D8C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02023DE8 ; =0x000001A6 + add r4, r1, #0x0 + cmp r4, r0 + beq _02023DA2 + add r0, r0, #0x1 + cmp r4, r0 + beq _02023DA2 + bl ErrorHandling +_02023DA2: + lsl r1, r4, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x0 + bne _02023DB4 + mov r0, #0x0 + pop {r3-r5, pc} +_02023DB4: + ldr r0, _02023DE8 ; =0x000001A6 + cmp r4, r0 + bne _02023DBE + sub r0, #0x9e + b _02023DC0 +_02023DBE: + sub r0, #0x9d +_02023DC0: + add r0, r5, r0 + ldrb r1, [r0, #0x0] + mov r2, #0x1 + add r0, r1, #0x0 + tst r0, r2 + bne _02023DCE + mov r2, #0x0 +_02023DCE: + mov r0, #0x2 + tst r0, r1 + beq _02023DD8 + mov r0, #0x1 + b _02023DDA +_02023DD8: + mov r0, #0x0 +_02023DDA: + cmp r2, r0 + bne _02023DE2 + mov r0, #0x1 + pop {r3-r5, pc} +_02023DE2: + mov r0, #0x2 + pop {r3-r5, pc} + nop +_02023DE8: .word 0x000001A6 + + thumb_func_start FUN_02023DEC +FUN_02023DEC: ; 0x02023DEC + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _02023E6C ; =0x000001A6 + add r6, r1, #0x0 + add r5, r2, #0x0 + cmp r6, r0 + beq _02023E04 + add r0, r0, #0x1 + cmp r6, r0 + beq _02023E04 + bl ErrorHandling +_02023E04: + lsl r1, r6, #0x10 + add r0, r7, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x0 + bne _02023E16 + mov r0, #0x0 + pop {r3-r7, pc} +_02023E16: + ldr r0, _02023E6C ; =0x000001A6 + cmp r6, r0 + bne _02023E20 + sub r0, #0x9e + b _02023E22 +_02023E20: + sub r0, #0x9d +_02023E22: + add r4, r7, r0 + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_02023D8C + mov r6, #0x0 + cmp r0, #0x0 + bls _02023E66 + mov r1, #0x1 +_02023E34: + add r2, r6, #0x1 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + sub r2, r2, #0x1 + lsl r2, r2, #0x10 + lsr r3, r2, #0x10 + add r7, r3, #0x0 + mov r2, #0x7 + asr r3, r3, #0x3 + and r7, r2 + add r2, r1, #0x0 + ldrb r3, [r4, r3] + lsl r2, r7 + tst r2, r3 + beq _02023E56 + add r2, r1, #0x0 + b _02023E58 +_02023E56: + mov r2, #0x0 +_02023E58: + cmp r2, r5 + bne _02023E60 + mov r0, #0x1 + pop {r3-r7, pc} +_02023E60: + add r6, r6, #0x1 + cmp r6, r0 + blo _02023E34 +_02023E66: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_02023E6C: .word 0x000001A6 + + thumb_func_start FUN_02023E70 +FUN_02023E70: ; 0x02023E70 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, _02023F28 ; =0x000001A6 + add r5, r1, #0x0 + add r7, r2, #0x0 + cmp r5, r0 + beq _02023E88 + add r0, r0, #0x1 + cmp r5, r0 + beq _02023E88 + bl ErrorHandling +_02023E88: + lsl r2, r7, #0x18 + add r0, r6, #0x0 + add r1, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02023DEC + cmp r0, #0x0 + bne _02023F26 + ldr r0, _02023F28 ; =0x000001A6 + cmp r5, r0 + bne _02023EA2 + sub r0, #0x9e + b _02023EA4 +_02023EA2: + sub r0, #0x9d +_02023EA4: + add r4, r6, r0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02023D8C + add r5, r0, #0x0 + cmp r5, #0x2 + bge _02023F26 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x2 + blo _02023EC6 + bl ErrorHandling +_02023EC6: + sub r0, r6, #0x1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r2, r1, #0x0 + mov r0, #0x7 + and r2, r0 + asr r1, r1, #0x3 + mov r3, #0x1 + lsl r3, r2 + ldrb r0, [r4, r1] + mvn r3, r3 + and r0, r3 + strb r0, [r4, r1] + lsl r0, r7, #0x18 + lsr r6, r0, #0x18 + add r0, r6, #0x0 + ldrb r3, [r4, r1] + lsl r0, r2 + orr r0, r3 + strb r0, [r4, r1] + cmp r5, #0x0 + bne _02023F26 + add r0, r5, #0x2 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r6, #0x2 + blo _02023F00 + bl ErrorHandling +_02023F00: + sub r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #0x7 + add r1, r2, #0x0 + and r1, r0 + asr r0, r2, #0x3 + mov r2, #0x1 + lsl r2, r1 + ldrb r3, [r4, r0] + mvn r2, r2 + and r2, r3 + strb r2, [r4, r0] + add r2, r6, #0x0 + ldrb r3, [r4, r0] + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + strb r1, [r4, r0] +_02023F26: + pop {r3-r7, pc} + .balign 4 +_02023F28: .word 0x000001A6 + + thumb_func_start FUN_02023F2C +FUN_02023F2C: ; 0x02023F2C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x67 + add r4, r1, #0x0 + lsl r0, r0, #0x2 + cmp r4, r0 + beq _02023F44 + add r0, r0, #0x1 + cmp r4, r0 + beq _02023F44 + bl ErrorHandling +_02023F44: + lsl r1, r4, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x0 + bne _02023F56 + mov r0, #0x0 + pop {r3-r5, pc} +_02023F56: + mov r0, #0x67 + lsl r0, r0, #0x2 + cmp r4, r0 + bne _02023F62 + sub r0, #0x92 + b _02023F64 +_02023F62: + sub r0, #0x91 +_02023F64: + add r1, r5, r0 + mov r0, #0x0 + mov r3, #0x3 +_02023F6A: + lsl r2, r0, #0x10 + lsr r5, r2, #0x10 + asr r2, r5, #0x2 + ldrb r4, [r1, r2] + lsl r2, r5, #0x1e + lsr r2, r2, #0x1d + asr r4, r2 + add r2, r4, #0x0 + and r2, r3 + cmp r2, #0x3 + beq _02023F86 + add r0, r0, #0x1 + cmp r0, #0x3 + blt _02023F6A +_02023F86: + pop {r3-r5, pc} + + thumb_func_start FUN_02023F88 +FUN_02023F88: ; 0x02023F88 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r0, #0x67 + add r5, r1, #0x0 + lsl r0, r0, #0x2 + add r4, r2, #0x0 + cmp r5, r0 + beq _02023FA2 + add r0, r0, #0x1 + cmp r5, r0 + beq _02023FA2 + bl ErrorHandling +_02023FA2: + lsl r1, r5, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x0 + bne _02023FB4 + mov r0, #0x0 + pop {r4-r6, pc} +_02023FB4: + mov r0, #0x67 + lsl r0, r0, #0x2 + cmp r5, r0 + bne _02023FC0 + sub r0, #0x92 + b _02023FC2 +_02023FC0: + sub r0, #0x91 +_02023FC2: + add r1, r6, r0 + mov r0, #0x0 + mov r3, #0x3 +_02023FC8: + lsl r2, r0, #0x10 + lsr r6, r2, #0x10 + asr r2, r6, #0x2 + ldrb r5, [r1, r2] + lsl r2, r6, #0x1e + lsr r2, r2, #0x1d + asr r5, r2 + add r2, r5, #0x0 + and r2, r3 + cmp r2, r4 + bne _02023FE2 + mov r0, #0x1 + pop {r4-r6, pc} +_02023FE2: + add r0, r0, #0x1 + cmp r0, #0x3 + blt _02023FC8 + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02023FEC +FUN_02023FEC: ; 0x02023FEC + push {r3-r7, lr} + add r6, r0, #0x0 + mov r0, #0x67 + add r5, r1, #0x0 + lsl r0, r0, #0x2 + add r7, r2, #0x0 + cmp r5, r0 + beq _02024006 + add r0, r0, #0x1 + cmp r5, r0 + beq _02024006 + bl ErrorHandling +_02024006: + lsl r2, r7, #0x18 + add r0, r6, #0x0 + add r1, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02023F88 + cmp r0, #0x0 + bne _02024064 + mov r0, #0x67 + lsl r0, r0, #0x2 + cmp r5, r0 + bne _02024022 + sub r0, #0x92 + b _02024024 +_02024022: + sub r0, #0x91 +_02024024: + add r4, r6, r0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02023F2C + add r5, r0, #0x0 + cmp r5, #0x3 + bge _02024064 + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x4 + blo _02024040 + bl ErrorHandling +_02024040: + lsl r0, r5, #0x10 + lsr r2, r0, #0x10 + lsl r0, r2, #0x1e + lsr r1, r0, #0x1d + asr r0, r2, #0x2 + mov r2, #0x3 + lsl r2, r1 + ldrb r3, [r4, r0] + mvn r2, r2 + and r2, r3 + strb r2, [r4, r0] + lsl r2, r7, #0x18 + lsr r2, r2, #0x18 + ldrb r3, [r4, r0] + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + strb r1, [r4, r0] +_02024064: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02024068 +FUN_02024068: ; 0x02024068 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r6, #0x4 + blo _02024078 + bl ErrorHandling +_02024078: + cmp r4, #0xf + bls _02024080 + bl ErrorHandling +_02024080: + cmp r6, #0x2 + bhs _0202409E + lsl r0, r6, #0x2 + add r0, #0x18 + mov r1, #0xf + lsl r1, r0 + ldr r2, [r5, #0x40] + mvn r1, r1 + and r2, r1 + add r1, r4, #0x0 + lsl r1, r0 + add r0, r2, #0x0 + orr r0, r1 + str r0, [r5, #0x40] + pop {r4-r6, pc} +_0202409E: + sub r0, r6, #0x2 + lsl r0, r0, #0x18 + add r1, r5, #0x0 + lsr r0, r0, #0x16 + add r1, #0x80 + ldr r2, [r1, #0x0] + add r0, #0x18 + mov r1, #0xf + lsl r1, r0 + mvn r1, r1 + and r2, r1 + add r1, r5, #0x0 + add r1, #0x80 + str r2, [r1, #0x0] + add r1, r5, #0x0 + add r1, #0x80 + ldr r2, [r1, #0x0] + add r1, r4, #0x0 + lsl r1, r0 + add r0, r2, #0x0 + orr r0, r1 + add r5, #0x80 + str r0, [r5, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020240D0 +FUN_020240D0: ; 0x020240D0 + push {r3-r6} + mov r3, #0xf + mov r1, #0x0 + add r4, r3, #0x0 +_020240D8: + lsl r2, r1, #0x18 + lsr r6, r2, #0x18 + cmp r6, #0x2 + bhs _020240EE + lsl r2, r6, #0x2 + ldr r5, [r0, #0x40] + add r2, #0x18 + lsr r5, r2 + add r2, r5, #0x0 + and r2, r4 + b _02024102 +_020240EE: + add r2, r0, #0x0 + add r2, #0x80 + ldr r5, [r2, #0x0] + sub r2, r6, #0x2 + lsl r2, r2, #0x18 + lsr r2, r2, #0x16 + add r2, #0x18 + lsr r5, r2 + add r2, r5, #0x0 + and r2, r3 +_02024102: + cmp r2, #0xf + beq _0202410C + add r1, r1, #0x1 + cmp r1, #0x4 + blt _020240D8 +_0202410C: + add r0, r1, #0x0 + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_02024114 +FUN_02024114: ; 0x02024114 + push {r4-r7} + mov r2, #0xf + mov r6, #0x0 + add r3, r2, #0x0 +_0202411C: + lsl r4, r6, #0x18 + lsr r5, r4, #0x18 + cmp r5, #0x2 + bhs _02024134 + ldr r7, [r0, #0x40] + lsl r4, r5, #0x2 + add r4, #0x18 + add r5, r7, #0x0 + lsr r5, r4 + add r4, r5, #0x0 + and r4, r3 + b _02024146 +_02024134: + add r4, r0, #0x0 + sub r5, r5, #0x2 + add r4, #0x80 + lsl r5, r5, #0x18 + lsr r5, r5, #0x16 + ldr r4, [r4, #0x0] + add r5, #0x18 + lsr r4, r5 + and r4, r2 +_02024146: + cmp r1, r4 + bne _02024150 + mov r0, #0x1 + pop {r4-r7} + bx lr +_02024150: + add r6, r6, #0x1 + cmp r6, #0x4 + blt _0202411C + mov r0, #0x0 + pop {r4-r7} + bx lr + + thumb_func_start FUN_0202415C +FUN_0202415C: ; 0x0202415C + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, _02024198 ; =0x00000182 + cmp r6, r0 + bne _02024196 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02024114 + cmp r0, #0x0 + bne _02024196 + add r0, r5, #0x0 + bl FUN_020240D0 + add r2, r0, #0x0 + lsl r2, r2, #0x18 + add r0, r5, #0x0 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + bl FUN_02024068 +_02024196: + pop {r4-r6, pc} + .balign 4 +_02024198: .word 0x00000182 + + thumb_func_start FUN_0202419C +FUN_0202419C: ; 0x0202419C + push {r4-r6, lr} + add r5, r0, #0x0 + mov r4, #0x0 + mov r6, #0xf +_020241A4: + lsl r2, r4, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + bl FUN_02024068 + add r4, r4, #0x1 + cmp r4, #0x4 + blt _020241A4 + pop {r4-r6, pc} + + thumb_func_start FUN_020241B8 +FUN_020241B8: ; 0x020241B8 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0xc9 + bne _02024210 + add r0, r2, #0x0 + bl FUN_020690CC + lsl r1, r0, #0x18 + lsr r3, r1, #0x18 + mov r1, #0x43 + mov r4, #0x0 + add r6, r5, #0x0 + lsl r1, r1, #0x2 +_020241D4: + ldrb r2, [r6, r1] + cmp r3, r2 + bne _020241DE + mov r1, #0x1 + b _020241E8 +_020241DE: + add r4, r4, #0x1 + add r6, r6, #0x1 + cmp r4, #0x1c + blt _020241D4 + mov r1, #0x0 +_020241E8: + cmp r1, #0x0 + bne _02024290 + mov r1, #0x43 + mov r3, #0x0 + add r4, r5, #0x0 + lsl r1, r1, #0x2 +_020241F4: + ldrb r2, [r4, r1] + cmp r2, #0xff + beq _02024202 + add r3, r3, #0x1 + add r4, r4, #0x1 + cmp r3, #0x1c + blt _020241F4 +_02024202: + cmp r3, #0x1c + bge _02024290 + mov r1, #0x43 + add r2, r5, r3 + lsl r1, r1, #0x2 + strb r0, [r2, r1] + pop {r4-r6, pc} +_02024210: + mov r6, #0x67 + lsl r6, r6, #0x2 + cmp r4, r6 + bne _0202422E + add r0, r2, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02023FEC + pop {r4-r6, pc} +_0202422E: + add r3, r6, #0x1 + cmp r4, r3 + bne _0202424A + add r0, r2, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02023FEC + pop {r4-r6, pc} +_0202424A: + add r3, r6, #0x0 + add r3, #0xa + cmp r4, r3 + bne _02024268 + add r0, r2, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02023E70 + pop {r4-r6, pc} +_02024268: + add r3, r6, #0x0 + add r3, #0xb + cmp r4, r3 + bne _02024286 + add r0, r2, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02023E70 + pop {r4-r6, pc} +_02024286: + sub r6, #0x1a + cmp r4, r6 + bne _02024290 + bl FUN_0202415C +_02024290: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02024294 +FUN_02024294: ; 0x02024294 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r0, r1, #0x0 + bl FUN_02087A50 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02087A1C + cmp r4, #0xe + beq _020242C0 + cmp r0, #0x6 + beq _020242C0 + ldr r1, _020242C4 ; =0x00000129 + add r3, r5, r1 + ldrb r2, [r3, r4] + mov r1, #0x1 + lsl r1, r0 + add r0, r2, #0x0 + orr r0, r1 + strb r0, [r3, r4] +_020242C0: + pop {r4-r6, pc} + nop +_020242C4: .word 0x00000129 + + thumb_func_start FUN_020242C8 +FUN_020242C8: ; 0x020242C8 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x12 + add r4, r2, #0x0 + bl FUN_02068678 + cmp r0, #0xff + bne _020242EA + cmp r4, #0x0 + bne _020242E4 + mov r0, #0x2 + pop {r4-r6, pc} +_020242E4: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_020242EA: + sub r0, r6, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r1, #0x1 + mov r0, #0x7 + add r3, r2, #0x0 + and r3, r0 + add r0, r1, #0x0 + lsl r0, r3 + asr r3, r2, #0x3 + add r3, r5, r3 + add r3, #0x84 + ldrb r3, [r3, #0x0] + tst r0, r3 + bne _0202430A + mov r1, #0x0 +_0202430A: + lsl r0, r1, #0x18 + lsr r1, r0, #0x18 + cmp r4, #0x1 + bne _0202433A + add r4, r2, #0x0 + asr r2, r2, #0x3 + add r2, r5, r2 + mov r0, #0x7 + add r2, #0xc4 + mov r3, #0x1 + and r4, r0 + add r0, r3, #0x0 + ldrb r2, [r2, #0x0] + lsl r0, r4 + tst r0, r2 + bne _0202432C + mov r3, #0x0 +_0202432C: + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + cmp r0, r1 + bne _0202433C + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_0202433A: + add r0, r1, #0x0 +_0202433C: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02024340 +FUN_02024340: ; 0x02024340 + push {r4-r5} + mov r3, #0x0 + ldr r5, _02024360 ; =0x020EE942 + mov r4, #0x1 + add r1, r3, #0x0 +_0202434A: + ldrh r2, [r5, #0x0] + cmp r0, r2 + bne _02024352 + add r4, r1, #0x0 +_02024352: + add r3, r3, #0x1 + add r5, r5, #0x2 + cmp r3, #0xb + blt _0202434A + add r0, r4, #0x0 + pop {r4-r5} + bx lr + .balign 4 +_02024360: .word 0x020EE942 + + thumb_func_start FUN_02024364 +FUN_02024364: ; 0x02024364 + ldr r1, _02024374 ; =0x000001EA + mov r2, #0x1 + cmp r0, r1 + bne _0202436E + mov r2, #0x0 +_0202436E: + add r0, r2, #0x0 + bx lr + nop +_02024374: .word 0x000001EA + + thumb_func_start FUN_02024378 +FUN_02024378: ; 0x02024378 + push {r4, lr} + mov r2, #0x4f + mov r1, #0x0 + lsl r2, r2, #0x2 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, _020243C0 ; =0xBEEFCAFE + mov r1, #0x0 + str r0, [r4, #0x0] + ldr r0, _020243C4 ; =0x00000139 + mov r2, #0x1c + strb r1, [r4, r0] + sub r0, #0x2d + add r0, r4, r0 + mov r1, #0xff + blx Call_FillMemWithValue + mov r1, #0xff + add r0, r1, #0x0 + add r0, #0x9 + strb r1, [r4, r0] + add r0, r1, #0x0 + add r0, #0xa + strb r1, [r4, r0] + add r0, r1, #0x0 + add r0, #0xb + strb r1, [r4, r0] + add r0, r1, #0x0 + add r0, #0xc + strb r1, [r4, r0] + add r0, r4, #0x0 + bl FUN_0202419C + pop {r4, pc} + nop +_020243C0: .word 0xBEEFCAFE +_020243C4: .word 0x00000139 + + thumb_func_start FUN_020243C8 +FUN_020243C8: ; 0x020243C8 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r1, [r6, #0x0] + ldr r0, _020243FC ; =0xBEEFCAFE + cmp r1, r0 + beq _020243D8 + bl ErrorHandling +_020243D8: + ldr r7, _02024400 ; =0x000001ED + mov r5, #0x0 + mov r4, #0x1 +_020243DE: + lsl r1, r4, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_02024594 + cmp r0, #0x1 + bne _020243EE + add r5, r5, #0x1 +_020243EE: + add r4, r4, #0x1 + cmp r4, r7 + ble _020243DE + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + pop {r3-r7, pc} + nop +_020243FC: .word 0xBEEFCAFE +_02024400: .word 0x000001ED + + thumb_func_start FUN_02024404 +FUN_02024404: ; 0x02024404 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r1, [r6, #0x0] + ldr r0, _02024438 ; =0xBEEFCAFE + cmp r1, r0 + beq _02024414 + bl ErrorHandling +_02024414: + ldr r7, _0202443C ; =0x000001ED + mov r5, #0x0 + mov r4, #0x1 +_0202441A: + lsl r1, r4, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x1 + bne _0202442A + add r5, r5, #0x1 +_0202442A: + add r4, r4, #0x1 + cmp r4, r7 + ble _0202441A + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + pop {r3-r7, pc} + nop +_02024438: .word 0xBEEFCAFE +_0202443C: .word 0x000001ED + + thumb_func_start FUN_02024440 +FUN_02024440: ; 0x02024440 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02024CA4 + cmp r0, #0x0 + beq _02024454 + add r0, r4, #0x0 + bl FUN_02024404 + pop {r4, pc} +_02024454: + add r0, r4, #0x0 + bl FUN_020244A4 + pop {r4, pc} + + thumb_func_start FUN_0202445C +FUN_0202445C: ; 0x0202445C + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r1, [r6, #0x0] + ldr r0, _0202449C ; =0xBEEFCAFE + cmp r1, r0 + beq _0202446C + bl ErrorHandling +_0202446C: + ldr r7, _020244A0 ; =0x000001ED + mov r5, #0x0 + mov r4, #0x1 +_02024472: + lsl r1, r4, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_02024594 + cmp r0, #0x1 + bne _0202448E + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069B40 + cmp r0, #0x0 + beq _0202448E + add r5, r5, #0x1 +_0202448E: + add r4, r4, #0x1 + cmp r4, r7 + ble _02024472 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + pop {r3-r7, pc} + nop +_0202449C: .word 0xBEEFCAFE +_020244A0: .word 0x000001ED + + thumb_func_start FUN_020244A4 +FUN_020244A4: ; 0x020244A4 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r1, [r6, #0x0] + ldr r0, _020244E4 ; =0xBEEFCAFE + cmp r1, r0 + beq _020244B4 + bl ErrorHandling +_020244B4: + ldr r7, _020244E8 ; =0x000001ED + mov r5, #0x0 + mov r4, #0x1 +_020244BA: + lsl r1, r4, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x1 + bne _020244D6 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069B40 + cmp r0, #0x0 + beq _020244D6 + add r5, r5, #0x1 +_020244D6: + add r4, r4, #0x1 + cmp r4, r7 + ble _020244BA + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + pop {r3-r7, pc} + nop +_020244E4: .word 0xBEEFCAFE +_020244E8: .word 0x000001ED + + thumb_func_start FUN_020244EC +FUN_020244EC: ; 0x020244EC + push {r3, lr} + bl FUN_02024518 + ldr r1, _02024500 ; =0x000001E2 + cmp r0, r1 + blo _020244FC + mov r0, #0x1 + pop {r3, pc} +_020244FC: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02024500: .word 0x000001E2 + + thumb_func_start FUN_02024504 +FUN_02024504: ; 0x02024504 + push {r3, lr} + bl FUN_02024550 + cmp r0, #0x96 + blo _02024512 + mov r0, #0x1 + pop {r3, pc} +_02024512: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02024518 +FUN_02024518: ; 0x02024518 + push {r3-r7, lr} + ldr r7, _0202454C ; =0x000001ED + add r6, r0, #0x0 + mov r5, #0x0 + mov r4, #0x1 +_02024522: + lsl r1, r4, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_02024594 + cmp r0, #0x1 + bne _02024542 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02024340 + cmp r0, #0x1 + bne _02024542 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_02024542: + add r4, r4, #0x1 + cmp r4, r7 + ble _02024522 + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 +_0202454C: .word 0x000001ED + + thumb_func_start FUN_02024550 +FUN_02024550: ; 0x02024550 + push {r3-r7, lr} + ldr r7, _02024590 ; =0x000001ED + add r6, r0, #0x0 + mov r5, #0x0 + mov r4, #0x1 +_0202455A: + lsl r1, r4, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_020245F0 + cmp r0, #0x1 + bne _02024586 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069B40 + cmp r0, #0x0 + beq _02024586 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02024364 + cmp r0, #0x1 + bne _02024586 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_02024586: + add r4, r4, #0x1 + cmp r4, r7 + ble _0202455A + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 +_02024590: .word 0x000001ED + + thumb_func_start FUN_02024594 +FUN_02024594: ; 0x02024594 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020245E8 ; =0xBEEFCAFE + cmp r1, r0 + beq _020245A6 + bl ErrorHandling +_020245A6: + cmp r4, #0x0 + beq _020245B0 + ldr r0, _020245EC ; =0x000001ED + cmp r4, r0 + bls _020245B8 +_020245B0: + bl ErrorHandling + mov r0, #0x1 + b _020245BA +_020245B8: + mov r0, #0x0 +_020245BA: + cmp r0, #0x0 + beq _020245C2 + mov r0, #0x0 + pop {r3-r5, pc} +_020245C2: + sub r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #0x1 + mov r1, #0x7 + and r1, r2 + add r3, r0, #0x0 + lsl r3, r1 + asr r1, r2, #0x3 + add r2, r5, r1 + ldrb r1, [r2, #0x4] + tst r1, r3 + beq _020245E4 + add r2, #0x44 + ldrb r1, [r2, #0x0] + tst r1, r3 + bne _020245E6 +_020245E4: + mov r0, #0x0 +_020245E6: + pop {r3-r5, pc} + .balign 4 +_020245E8: .word 0xBEEFCAFE +_020245EC: .word 0x000001ED + + thumb_func_start FUN_020245F0 +FUN_020245F0: ; 0x020245F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02024640 ; =0xBEEFCAFE + cmp r1, r0 + beq _02024602 + bl ErrorHandling +_02024602: + cmp r4, #0x0 + beq _0202460C + ldr r0, _02024644 ; =0x000001ED + cmp r4, r0 + bls _02024614 +_0202460C: + bl ErrorHandling + mov r0, #0x1 + b _02024616 +_02024614: + mov r0, #0x0 +_02024616: + cmp r0, #0x0 + beq _0202461E + mov r0, #0x0 + pop {r3-r5, pc} +_0202461E: + sub r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r3, r0, #0x10 + mov r0, #0x1 + mov r1, #0x7 + and r1, r3 + add r2, r0, #0x0 + lsl r2, r1 + asr r1, r3, #0x3 + add r1, r5, r1 + add r1, #0x44 + ldrb r1, [r1, #0x0] + tst r1, r2 + bne _0202463C + mov r0, #0x0 +_0202463C: + pop {r3-r5, pc} + nop +_02024640: .word 0xBEEFCAFE +_02024644: .word 0x000001ED + + thumb_func_start FUN_02024648 +FUN_02024648: ; 0x02024648 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02024670 ; =0xBEEFCAFE + cmp r1, r0 + beq _0202465A + bl ErrorHandling +_0202465A: + cmp r4, #0x0 + bne _02024666 + mov r0, #0x41 + lsl r0, r0, #0x2 + ldr r6, [r5, r0] + b _0202466A +_02024666: + bl ErrorHandling +_0202466A: + add r0, r6, #0x0 + pop {r4-r6, pc} + nop +_02024670: .word 0xBEEFCAFE + + thumb_func_start FUN_02024674 +FUN_02024674: ; 0x02024674 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020246D4 ; =0xBEEFCAFE + add r6, r2, #0x0 + cmp r1, r0 + beq _02024688 + bl ErrorHandling +_02024688: + cmp r4, #0x0 + beq _02024692 + ldr r0, _020246D8 ; =0x000001ED + cmp r4, r0 + bls _0202469A +_02024692: + bl ErrorHandling + mov r0, #0x1 + b _0202469C +_0202469A: + mov r0, #0x0 +_0202469C: + cmp r0, #0x0 + beq _020246A6 + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} +_020246A6: + sub r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + add r3, r2, #0x0 + asr r2, r2, #0x3 + add r2, r5, r2 + mov r0, #0x7 + add r2, #0x44 + mov r1, #0x1 + and r3, r0 + ldrb r2, [r2, #0x0] + lsl r1, r3 + tst r1, r2 + beq _020246CE + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020242C8 + pop {r4-r6, pc} +_020246CE: + sub r0, #0x8 + pop {r4-r6, pc} + nop +_020246D4: .word 0xBEEFCAFE +_020246D8: .word 0x000001ED + + thumb_func_start FUN_020246DC +FUN_020246DC: ; 0x020246DC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02024718 ; =0xBEEFCAFE + cmp r1, r0 + beq _020246EE + bl ErrorHandling +_020246EE: + mov r0, #0x43 + mov r2, #0x0 + lsl r0, r0, #0x2 +_020246F4: + add r1, r5, r2 + ldrb r1, [r1, r0] + cmp r1, #0xff + beq _02024702 + add r2, r2, #0x1 + cmp r2, #0x1c + blt _020246F4 +_02024702: + cmp r2, r4 + bgt _0202470C + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0202470C: + mov r0, #0x43 + add r1, r5, r4 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + pop {r3-r5, pc} + nop +_02024718: .word 0xBEEFCAFE + + thumb_func_start FUN_0202471C +FUN_0202471C: ; 0x0202471C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024744 ; =0xBEEFCAFE + cmp r1, r0 + beq _0202472C + bl ErrorHandling +_0202472C: + mov r1, #0x43 + mov r0, #0x0 + lsl r1, r1, #0x2 +_02024732: + add r2, r4, r0 + ldrb r2, [r2, r1] + cmp r2, #0xff + beq _02024740 + add r0, r0, #0x1 + cmp r0, #0x1c + blt _02024732 +_02024740: + pop {r4, pc} + nop +_02024744: .word 0xBEEFCAFE + + thumb_func_start FUN_02024748 +FUN_02024748: ; 0x02024748 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _0202479C ; =0xBEEFCAFE + cmp r1, r0 + beq _0202475A + bl ErrorHandling +_0202475A: + ldr r1, _020247A0 ; =0x000001A6 + add r0, r5, #0x0 + bl FUN_02023D8C + cmp r0, r4 + bgt _0202476C + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0202476C: + cmp r4, #0x2 + blt _02024774 + bl ErrorHandling +_02024774: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + sub r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #0x1 + mov r1, #0x7 + and r1, r2 + add r3, r0, #0x0 + lsl r3, r1 + asr r1, r2, #0x3 + add r2, r5, r1 + mov r1, #0x42 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + tst r1, r3 + bne _0202479A + mov r0, #0x0 +_0202479A: + pop {r3-r5, pc} + .balign 4 +_0202479C: .word 0xBEEFCAFE +_020247A0: .word 0x000001A6 + + thumb_func_start FUN_020247A4 +FUN_020247A4: ; 0x020247A4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _020247C0 ; =0xBEEFCAFE + cmp r1, r0 + beq _020247B4 + bl ErrorHandling +_020247B4: + ldr r1, _020247C4 ; =0x000001A6 + add r0, r4, #0x0 + bl FUN_02023D8C + pop {r4, pc} + nop +_020247C0: .word 0xBEEFCAFE +_020247C4: .word 0x000001A6 + + thumb_func_start FUN_020247C8 +FUN_020247C8: ; 0x020247C8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _0202481C ; =0xBEEFCAFE + cmp r1, r0 + beq _020247DA + bl ErrorHandling +_020247DA: + ldr r1, _02024820 ; =0x000001A7 + add r0, r5, #0x0 + bl FUN_02023D8C + cmp r0, r4 + bgt _020247EC + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_020247EC: + cmp r4, #0x2 + blt _020247F4 + bl ErrorHandling +_020247F4: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + sub r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + mov r0, #0x1 + mov r1, #0x7 + and r1, r2 + add r3, r0, #0x0 + lsl r3, r1 + asr r1, r2, #0x3 + add r2, r5, r1 + ldr r1, _02024824 ; =0x00000109 + ldrb r1, [r2, r1] + tst r1, r3 + bne _02024818 + mov r0, #0x0 +_02024818: + pop {r3-r5, pc} + nop +_0202481C: .word 0xBEEFCAFE +_02024820: .word 0x000001A7 +_02024824: .word 0x00000109 + + thumb_func_start FUN_02024828 +FUN_02024828: ; 0x02024828 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024844 ; =0xBEEFCAFE + cmp r1, r0 + beq _02024838 + bl ErrorHandling +_02024838: + ldr r1, _02024848 ; =0x000001A7 + add r0, r4, #0x0 + bl FUN_02023D8C + pop {r4, pc} + nop +_02024844: .word 0xBEEFCAFE +_02024848: .word 0x000001A7 + + thumb_func_start FUN_0202484C +FUN_0202484C: ; 0x0202484C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02024894 ; =0xBEEFCAFE + cmp r1, r0 + beq _0202485E + bl ErrorHandling +_0202485E: + mov r1, #0x67 + add r0, r5, #0x0 + lsl r1, r1, #0x2 + bl FUN_02023F2C + cmp r0, r4 + bgt _02024872 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_02024872: + cmp r4, #0x3 + blt _0202487A + bl ErrorHandling +_0202487A: + lsl r0, r4, #0x10 + lsr r2, r0, #0x10 + asr r0, r2, #0x2 + add r1, r5, r0 + ldr r0, _02024898 ; =0x0000010A + ldrb r1, [r1, r0] + lsl r0, r2, #0x1e + lsr r0, r0, #0x1d + asr r1, r0 + mov r0, #0x3 + and r0, r1 + pop {r3-r5, pc} + nop +_02024894: .word 0xBEEFCAFE +_02024898: .word 0x0000010A + + thumb_func_start FUN_0202489C +FUN_0202489C: ; 0x0202489C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _020248B8 ; =0xBEEFCAFE + cmp r1, r0 + beq _020248AC + bl ErrorHandling +_020248AC: + mov r1, #0x67 + add r0, r4, #0x0 + lsl r1, r1, #0x2 + bl FUN_02023F2C + pop {r4, pc} + .balign 4 +_020248B8: .word 0xBEEFCAFE + + thumb_func_start FUN_020248BC +FUN_020248BC: ; 0x020248BC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02024900 ; =0xBEEFCAFE + cmp r1, r0 + beq _020248CE + bl ErrorHandling +_020248CE: + ldr r1, _02024904 ; =0x0000019D + add r0, r5, #0x0 + bl FUN_02023F2C + cmp r0, r4 + bgt _020248E0 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_020248E0: + cmp r4, #0x3 + blt _020248E8 + bl ErrorHandling +_020248E8: + lsl r0, r4, #0x10 + lsr r2, r0, #0x10 + asr r0, r2, #0x2 + add r1, r5, r0 + ldr r0, _02024908 ; =0x0000010B + ldrb r1, [r1, r0] + lsl r0, r2, #0x1e + lsr r0, r0, #0x1d + asr r1, r0 + mov r0, #0x3 + and r0, r1 + pop {r3-r5, pc} + .balign 4 +_02024900: .word 0xBEEFCAFE +_02024904: .word 0x0000019D +_02024908: .word 0x0000010B + + thumb_func_start FUN_0202490C +FUN_0202490C: ; 0x0202490C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024928 ; =0xBEEFCAFE + cmp r1, r0 + beq _0202491C + bl ErrorHandling +_0202491C: + ldr r1, _0202492C ; =0x0000019D + add r0, r4, #0x0 + bl FUN_02023F2C + pop {r4, pc} + nop +_02024928: .word 0xBEEFCAFE +_0202492C: .word 0x0000019D + + thumb_func_start FUN_02024930 +FUN_02024930: ; 0x02024930 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _0202496C ; =0xBEEFCAFE + cmp r1, r0 + beq _02024942 + bl ErrorHandling +_02024942: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x2 + bhs _02024958 + lsl r0, r0, #0x2 + ldr r1, [r5, #0x40] + add r0, #0x18 + lsr r1, r0 + mov r0, #0xf + and r0, r1 + pop {r3-r5, pc} +_02024958: + add r5, #0x80 + sub r0, r0, #0x2 + lsl r0, r0, #0x18 + ldr r1, [r5, #0x0] + lsr r0, r0, #0x16 + add r0, #0x18 + lsr r1, r0 + mov r0, #0xf + and r0, r1 + pop {r3-r5, pc} + .balign 4 +_0202496C: .word 0xBEEFCAFE + + thumb_func_start FUN_02024970 +FUN_02024970: ; 0x02024970 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024988 ; =0xBEEFCAFE + cmp r1, r0 + beq _02024980 + bl ErrorHandling +_02024980: + add r0, r4, #0x0 + bl FUN_020240D0 + pop {r4, pc} + .balign 4 +_02024988: .word 0xBEEFCAFE + + thumb_func_start FUN_0202498C +FUN_0202498C: ; 0x0202498C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x0] + add r0, r1, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + mov r1, #0x0 + ldr r0, [sp, #0x0] + add r2, r1, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_020689E0 + add r6, r0, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02024AE4 ; =0xBEEFCAFE + cmp r1, r0 + beq _020249C4 + bl ErrorHandling +_020249C4: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _020249D0 + ldr r1, _02024AE8 ; =0x000001ED + cmp r0, r1 + bls _020249D8 +_020249D0: + bl ErrorHandling + mov r0, #0x1 + b _020249DA +_020249D8: + mov r0, #0x0 +_020249DA: + cmp r0, #0x0 + bne _02024ADE + ldr r0, [sp, #0x4] + mov r2, #0x1 + sub r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + mov r0, #0x7 + and r0, r4 + add r1, r2, #0x0 + lsl r1, r0 + asr r0, r4, #0x3 + add r3, r5, r0 + add r3, #0x44 + ldrb r3, [r3, #0x0] + tst r3, r1 + bne _02024A70 + ldr r1, _02024AEC ; =0x00000147 + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _02024A08 + sub r1, #0x43 + str r7, [r5, r1] +_02024A08: + lsl r0, r6, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x2 + bls _02024A14 + bl ErrorHandling +_02024A14: + cmp r6, #0x2 + bne _02024A1A + mov r6, #0x0 +_02024A1A: + cmp r6, #0x2 + blo _02024A22 + bl ErrorHandling +_02024A22: + add r2, r5, #0x0 + mov r0, #0x7 + add r3, r4, #0x0 + and r3, r0 + mov r0, #0x1 + lsl r0, r3 + add r2, #0xc4 + asr r1, r4, #0x3 + ldrb r7, [r2, r1] + mvn r0, r0 + and r0, r7 + strb r0, [r2, r1] + add r0, r6, #0x0 + ldrb r7, [r2, r1] + lsl r0, r3 + orr r0, r7 + strb r0, [r2, r1] + cmp r6, #0x2 + blo _02024A4C + bl ErrorHandling +_02024A4C: + add r1, r5, #0x0 + mov r0, #0x7 + add r2, r4, #0x0 + and r2, r0 + mov r3, #0x1 + lsl r3, r2 + add r1, #0x84 + asr r0, r4, #0x3 + ldrb r7, [r1, r0] + mvn r3, r3 + lsl r6, r2 + and r3, r7 + strb r3, [r1, r0] + ldrb r3, [r1, r0] + add r2, r3, #0x0 + orr r2, r6 + strb r2, [r1, r0] + b _02024AC0 +_02024A70: + add r0, r5, r0 + add r0, #0x84 + ldrb r0, [r0, #0x0] + tst r0, r1 + bne _02024A7C + mov r2, #0x0 +_02024A7C: + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + cmp r0, r6 + beq _02024AC0 + lsl r0, r6, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x2 + bls _02024A90 + bl ErrorHandling +_02024A90: + cmp r6, #0x2 + bne _02024A96 + mov r6, #0x0 +_02024A96: + cmp r6, #0x2 + blo _02024A9E + bl ErrorHandling +_02024A9E: + add r1, r5, #0x0 + mov r0, #0x7 + add r2, r4, #0x0 + and r2, r0 + mov r3, #0x1 + lsl r3, r2 + add r1, #0xc4 + asr r0, r4, #0x3 + ldrb r7, [r1, r0] + mvn r3, r3 + lsl r6, r2 + and r3, r7 + strb r3, [r1, r0] + ldrb r3, [r1, r0] + add r2, r3, #0x0 + orr r2, r6 + strb r2, [r1, r0] +_02024AC0: + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_020241B8 + mov r1, #0x7 + add r5, #0x44 + asr r0, r4, #0x3 + ldrb r3, [r5, r0] + mov r2, #0x1 + and r1, r4 + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + strb r1, [r5, r0] +_02024ADE: + add sp, #0x8 + pop {r3-r7, pc} + nop +_02024AE4: .word 0xBEEFCAFE +_02024AE8: .word 0x000001ED +_02024AEC: .word 0x00000147 + + thumb_func_start FUN_02024AF0 +FUN_02024AF0: ; 0x02024AF0 + push {r4-r7, lr} + sub sp, #0x14 + add r4, r0, #0x0 + str r1, [sp, #0x0] + add r0, r1, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0x0] + mov r1, #0xc + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + mov r1, #0x0 + ldr r0, [sp, #0x0] + add r2, r1, #0x0 + bl FUN_020671BC + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + bl FUN_020689E0 + add r7, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024C78 ; =0xBEEFCAFE + cmp r1, r0 + beq _02024B32 + bl ErrorHandling +_02024B32: + cmp r6, #0x0 + beq _02024B3C + ldr r0, _02024C7C ; =0x000001ED + cmp r6, r0 + bls _02024B44 +_02024B3C: + bl ErrorHandling + mov r0, #0x1 + b _02024B46 +_02024B44: + mov r0, #0x0 +_02024B46: + cmp r0, #0x0 + beq _02024B4C + b _02024C72 +_02024B4C: + sub r0, r6, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + mov r0, #0x1 + mov r1, #0x7 + and r1, r5 + add r2, r0, #0x0 + asr r3, r5, #0x3 + lsl r2, r1 + add r1, r4, r3 + add r1, #0x44 + ldrb r1, [r1, #0x0] + tst r1, r2 + bne _02024BEA + ldr r1, _02024C80 ; =0x00000147 + cmp r6, r1 + bne _02024B74 + ldr r0, [sp, #0x4] + sub r1, #0x43 + str r0, [r4, r1] +_02024B74: + lsl r0, r7, #0x18 + lsr r7, r0, #0x18 + cmp r7, #0x2 + bls _02024B80 + bl ErrorHandling +_02024B80: + cmp r7, #0x2 + bne _02024B86 + mov r7, #0x0 +_02024B86: + cmp r7, #0x2 + blo _02024B8E + bl ErrorHandling +_02024B8E: + mov r0, #0x7 + and r0, r5 + str r0, [sp, #0x10] + add r0, r4, #0x0 + add r0, #0xc4 + asr r3, r5, #0x3 + ldrb r1, [r0, r3] + mov r2, #0x1 + str r1, [sp, #0xc] + ldr r1, [sp, #0x10] + lsl r2, r1 + ldr r1, [sp, #0xc] + mvn r2, r2 + and r1, r2 + strb r1, [r0, r3] + ldrb r1, [r0, r3] + add r2, r7, #0x0 + mov r12, r1 + ldr r1, [sp, #0x10] + lsl r2, r1 + mov r1, r12 + orr r1, r2 + strb r1, [r0, r3] + cmp r7, #0x2 + blo _02024BC4 + bl ErrorHandling +_02024BC4: + add r1, r4, #0x0 + mov r0, #0x7 + add r2, r5, #0x0 + and r2, r0 + mov r3, #0x1 + lsl r3, r2 + add r1, #0x84 + asr r0, r5, #0x3 + ldrb r5, [r1, r0] + mvn r3, r3 + and r3, r5 + strb r3, [r1, r0] + add r5, r7, #0x0 + ldrb r3, [r1, r0] + lsl r5, r2 + add r2, r3, #0x0 + orr r2, r5 + strb r2, [r1, r0] + b _02024C3C +_02024BEA: + add r1, r4, r3 + add r1, #0x84 + ldrb r1, [r1, #0x0] + tst r1, r2 + bne _02024BF6 + mov r0, #0x0 +_02024BF6: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, r7 + beq _02024C3C + lsl r0, r7, #0x18 + lsr r7, r0, #0x18 + cmp r7, #0x2 + bls _02024C0A + bl ErrorHandling +_02024C0A: + cmp r7, #0x2 + bne _02024C10 + mov r7, #0x0 +_02024C10: + cmp r7, #0x2 + blo _02024C18 + bl ErrorHandling +_02024C18: + add r1, r4, #0x0 + mov r0, #0x7 + add r2, r5, #0x0 + and r2, r0 + mov r3, #0x1 + lsl r3, r2 + add r1, #0xc4 + asr r0, r5, #0x3 + ldrb r5, [r1, r0] + mvn r3, r3 + and r3, r5 + strb r3, [r1, r0] + add r5, r7, #0x0 + ldrb r3, [r1, r0] + lsl r5, r2 + add r2, r3, #0x0 + orr r2, r5 + strb r2, [r1, r0] +_02024C3C: + ldr r2, [sp, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020241B8 + ldr r2, [sp, #0x8] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02024294 + sub r0, r6, #0x1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r1, r4, #0x4 + asr r0, r6, #0x3 + mov r2, #0x7 + ldrb r5, [r1, r0] + mov r3, #0x1 + and r2, r6 + lsl r3, r2 + add r2, r5, #0x0 + orr r2, r3 + add r4, #0x44 + strb r2, [r1, r0] + ldrb r1, [r4, r0] + orr r1, r3 + strb r1, [r4, r0] +_02024C72: + add sp, #0x14 + pop {r4-r7, pc} + nop +_02024C78: .word 0xBEEFCAFE +_02024C7C: .word 0x000001ED +_02024C80: .word 0x00000147 + + thumb_func_start FUN_02024C84 +FUN_02024C84: ; 0x02024C84 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024C9C ; =0xBEEFCAFE + cmp r1, r0 + beq _02024C94 + bl ErrorHandling +_02024C94: + ldr r0, _02024CA0 ; =0x00000139 + mov r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} + .balign 4 +_02024C9C: .word 0xBEEFCAFE +_02024CA0: .word 0x00000139 + + thumb_func_start FUN_02024CA4 +FUN_02024CA4: ; 0x02024CA4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024CBC ; =0xBEEFCAFE + cmp r1, r0 + beq _02024CB4 + bl ErrorHandling +_02024CB4: + ldr r0, _02024CC0 ; =0x00000139 + ldrb r0, [r4, r0] + pop {r4, pc} + nop +_02024CBC: .word 0xBEEFCAFE +_02024CC0: .word 0x00000139 + + thumb_func_start FUN_02024CC4 +FUN_02024CC4: ; 0x02024CC4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024CDC ; =0xBEEFCAFE + cmp r1, r0 + beq _02024CD4 + bl ErrorHandling +_02024CD4: + mov r0, #0x4a + lsl r0, r0, #0x2 + ldrb r0, [r4, r0] + pop {r4, pc} + .balign 4 +_02024CDC: .word 0xBEEFCAFE + + thumb_func_start FUN_02024CE0 +FUN_02024CE0: ; 0x02024CE0 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024CFC ; =0xBEEFCAFE + cmp r1, r0 + beq _02024CF0 + bl ErrorHandling +_02024CF0: + mov r0, #0x4a + mov r1, #0x1 + lsl r0, r0, #0x2 + strb r1, [r4, r0] + pop {r4, pc} + nop +_02024CFC: .word 0xBEEFCAFE + + thumb_func_start FUN_02024D00 +FUN_02024D00: ; 0x02024D00 + push {r4-r6, lr} + add r6, r2, #0x0 + add r4, r0, #0x0 + add r5, r1, #0x0 + cmp r6, #0x8 + blo _02024D10 + bl ErrorHandling +_02024D10: + ldr r1, [r4, #0x0] + ldr r0, _02024D44 ; =0xBEEFCAFE + cmp r1, r0 + beq _02024D1C + bl ErrorHandling +_02024D1C: + add r0, r5, #0x0 + bl FUN_02087A50 + add r5, r0, #0x0 + cmp r5, #0xe + bne _02024D2C + mov r0, #0x0 + pop {r4-r6, pc} +_02024D2C: + add r0, r6, #0x0 + bl FUN_02087A1C + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02024D48 ; =0x00000129 + add r1, r4, r5 + ldrb r0, [r1, r0] + and r0, r2 + pop {r4-r6, pc} + nop +_02024D44: .word 0xBEEFCAFE +_02024D48: .word 0x00000129 + + thumb_func_start FUN_02024D4C +FUN_02024D4C: ; 0x02024D4C + ldr r1, _02024D54 ; =0x00000137 + mov r2, #0x1 + strb r2, [r0, r1] + bx lr + .balign 4 +_02024D54: .word 0x00000137 + + thumb_func_start FUN_02024D58 +FUN_02024D58: ; 0x02024D58 + ldr r1, _02024D60 ; =0x00000137 + ldrb r0, [r0, r1] + bx lr + nop +_02024D60: .word 0x00000137 + + thumb_func_start FUN_02024D64 +FUN_02024D64: ; 0x02024D64 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024D7C ; =0xBEEFCAFE + cmp r1, r0 + beq _02024D74 + bl ErrorHandling +_02024D74: + mov r0, #0x4e + lsl r0, r0, #0x2 + ldrb r0, [r4, r0] + pop {r4, pc} + .balign 4 +_02024D7C: .word 0xBEEFCAFE + + thumb_func_start FUN_02024D80 +FUN_02024D80: ; 0x02024D80 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02024D9C ; =0xBEEFCAFE + cmp r1, r0 + beq _02024D90 + bl ErrorHandling +_02024D90: + mov r0, #0x4e + mov r1, #0x1 + lsl r0, r0, #0x2 + strb r1, [r4, r0] + pop {r4, pc} + nop +_02024D9C: .word 0xBEEFCAFE + + thumb_func_start FUN_02024DA0 +FUN_02024DA0: ; 0x02024DA0 + ldr r3, _02024DA8 ; =FUN_02022610 + mov r1, #0x7 + bx r3 + nop +_02024DA8: .word FUN_02022610 + + thumb_func_start FUN_02024DAC +FUN_02024DAC: ; 0x02024DAC + push {r3-r5, lr} + add r4, r2, #0x0 + ldr r2, _02024E60 ; =0x0000019D + add r5, r0, #0x0 + cmp r1, r2 + bgt _02024DD6 + sub r3, r2, #0x1 + cmp r1, r3 + blt _02024DC6 + beq _02024E24 + cmp r1, r2 + beq _02024E36 + b _02024E5A +_02024DC6: + cmp r1, #0xc9 + bgt _02024DCE + beq _02024DEE + b _02024E5A +_02024DCE: + sub r2, #0x1b + cmp r1, r2 + beq _02024E48 + b _02024E5A +_02024DD6: + add r3, r2, #0x0 + add r3, #0x9 + cmp r1, r3 + bgt _02024DE6 + add r2, #0x9 + cmp r1, r2 + beq _02024E00 + b _02024E5A +_02024DE6: + add r2, #0xa + cmp r1, r2 + beq _02024E12 + b _02024E5A +_02024DEE: + bl FUN_0202471C + cmp r4, r0 + bhs _02024E5A + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020246DC + pop {r3-r5, pc} +_02024E00: + bl FUN_020247A4 + cmp r4, r0 + bhs _02024E5A + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02024748 + pop {r3-r5, pc} +_02024E12: + bl FUN_02024828 + cmp r4, r0 + bhs _02024E5A + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020247C8 + pop {r3-r5, pc} +_02024E24: + bl FUN_0202489C + cmp r4, r0 + bhs _02024E5A + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202484C + pop {r3-r5, pc} +_02024E36: + bl FUN_0202490C + cmp r4, r0 + bhs _02024E5A + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020248BC + pop {r3-r5, pc} +_02024E48: + bl FUN_02024970 + cmp r4, r0 + bhs _02024E5A + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02024930 + pop {r3-r5, pc} +_02024E5A: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02024E60: .word 0x0000019D + + thumb_func_start FUN_02024E64 +FUN_02024E64: ; 0x02024E64 + ldr r0, _02024E68 ; =0x0000074C + bx lr + .balign 4 +_02024E68: .word 0x0000074C + + thumb_func_start FUN_02024E6C +FUN_02024E6C: ; 0x02024E6C + push {r4, lr} + add r4, r0, #0x0 + ldr r2, _02024EA4 ; =0x0000074C + mov r0, #0x0 + add r1, r4, #0x0 + blx MIi_CpuClearFast + add r0, r4, #0x0 + bl FUN_020250A4 + mov r0, #0x7 + lsl r0, r0, #0x8 + add r0, r4, r0 + bl FUN_02025484 + ldr r1, _02024EA8 ; =0x00000724 + ldr r0, _02024EAC ; =0x0000FFFF + add r1, r4, r1 + mov r2, #0x8 + blx MIi_CpuClear16 + ldr r1, _02024EB0 ; =0x00000734 + ldr r0, _02024EAC ; =0x0000FFFF + add r1, r4, r1 + mov r2, #0xb + blx MIi_CpuClear16 + pop {r4, pc} + .balign 4 +_02024EA4: .word 0x0000074C +_02024EA8: .word 0x00000724 +_02024EAC: .word 0x0000FFFF +_02024EB0: .word 0x00000734 + + thumb_func_start FUN_02024EB4 +FUN_02024EB4: ; 0x02024EB4 + ldr r3, _02024EBC ; =FUN_02022610 + mov r1, #0xa + bx r3 + nop +_02024EBC: .word FUN_02022610 + + thumb_func_start FUN_02024EC0 +FUN_02024EC0: ; 0x02024EC0 + ldr r3, _02024EC8 ; =0x02022635 + mov r1, #0xa + bx r3 + nop +_02024EC8: .word 0x02022635 + + thumb_func_start FUN_02024ECC +FUN_02024ECC: ; 0x02024ECC + ldr r3, _02024ED4 ; =FUN_02022610 + mov r1, #0xa + bx r3 + nop +_02024ED4: .word FUN_02022610 + + thumb_func_start FUN_02024ED8 +FUN_02024ED8: ; 0x02024ED8 + push {r3, lr} + mov r1, #0xa + bl FUN_02022610 + mov r1, #0x7 + lsl r1, r1, #0x8 + add r0, r0, r1 + pop {r3, pc} + + thumb_func_start FUN_02024EE8 +FUN_02024EE8: ; 0x02024EE8 + ldr r1, _02024EF0 ; =0x00000724 + add r0, r0, r1 + bx lr + nop +_02024EF0: .word 0x00000724 + + thumb_func_start FUN_02024EF4 +FUN_02024EF4: ; 0x02024EF4 + add r2, r0, #0x0 + add r0, r1, #0x0 + ldr r1, _02024F04 ; =0x00000724 + ldr r3, _02024F08 ; =FUN_02021EF0 + add r1, r2, r1 + mov r2, #0x8 + bx r3 + nop +_02024F04: .word 0x00000724 +_02024F08: .word FUN_02021EF0 + + thumb_func_start FUN_02024F0C +FUN_02024F0C: ; 0x02024F0C + ldr r1, _02024F14 ; =0x00000734 + add r0, r0, r1 + bx lr + nop +_02024F14: .word 0x00000734 + + thumb_func_start FUN_02024F18 +FUN_02024F18: ; 0x02024F18 + add r2, r0, #0x0 + add r0, r1, #0x0 + ldr r1, _02024F28 ; =0x00000734 + ldr r3, _02024F2C ; =FUN_02021EF0 + add r1, r2, r1 + mov r2, #0xb + bx r3 + nop +_02024F28: .word 0x00000734 +_02024F2C: .word FUN_02021EF0 + + thumb_func_start FUN_02024F30 +FUN_02024F30: ; 0x02024F30 + push {r4, lr} + mov r1, #0x2 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_02024F50 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02024F44 +FUN_02024F44: ; 0x02024F44 + ldr r3, _02024F4C ; =MI_CpuCopy8 + mov r2, #0x2 + bx r3 + nop +_02024F4C: .word MI_CpuCopy8 + + thumb_func_start FUN_02024F50 +FUN_02024F50: ; 0x02024F50 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x2 + blx MI_CpuFill8 + ldrh r1, [r4, #0x0] + mov r0, #0xf + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strh r0, [r4, #0x0] + ldrh r1, [r4, #0x0] + mov r0, #0x30 + bic r1, r0 + strh r1, [r4, #0x0] + ldrh r1, [r4, #0x0] + mov r0, #0x40 + bic r1, r0 + strh r1, [r4, #0x0] + ldrh r1, [r4, #0x0] + mov r0, #0x80 + bic r1, r0 + strh r1, [r4, #0x0] + ldrh r1, [r4, #0x0] + ldr r0, _02024F94 ; =0xFFFFFCFF + and r0, r1 + strh r0, [r4, #0x0] + ldrh r1, [r4, #0x0] + ldr r0, _02024F98 ; =0xFFFF83FF + and r0, r1 + strh r0, [r4, #0x0] + pop {r4, pc} + nop +_02024F94: .word 0xFFFFFCFF +_02024F98: .word 0xFFFF83FF + + thumb_func_start FUN_02024F9C +FUN_02024F9C: ; 0x02024F9C + push {r3, lr} + cmp r0, #0x0 + beq _02024FAC + bl LoadPlayerDataAddress + bl FUN_02025064 + add r1, r0, #0x0 +_02024FAC: + cmp r1, #0x0 + beq _02024FCA + cmp r1, #0x1 + beq _02024FBA + cmp r1, #0x2 + beq _02024FC2 + b _02024FCA +_02024FBA: + ldr r0, _02024FD4 ; =0x021C48B8 + mov r1, #0x1 + str r1, [r0, #0x34] + pop {r3, pc} +_02024FC2: + ldr r0, _02024FD4 ; =0x021C48B8 + mov r1, #0x3 + str r1, [r0, #0x34] + pop {r3, pc} +_02024FCA: + ldr r0, _02024FD4 ; =0x021C48B8 + mov r1, #0x0 + str r1, [r0, #0x34] + pop {r3, pc} + nop +_02024FD4: .word 0x021C48B8 + + thumb_func_start FUN_02024FD8 +FUN_02024FD8: ; 0x02024FD8 + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bx lr + + thumb_func_start FUN_02024FE0 +FUN_02024FE0: ; 0x02024FE0 + ldrh r3, [r0, #0x0] + mov r2, #0xf + lsl r1, r1, #0x10 + bic r3, r2 + lsr r2, r1, #0x10 + mov r1, #0xf + and r1, r2 + orr r1, r3 + strh r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02024FF4 +FUN_02024FF4: ; 0x02024FF4 + push {r3, lr} + bl FUN_02024FD8 + cmp r0, #0x0 + bne _02025002 + mov r0, #0x8 + pop {r3, pc} +_02025002: + cmp r0, #0x1 + bne _0202500A + mov r0, #0x4 + pop {r3, pc} +_0202500A: + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02025010 +FUN_02025010: ; 0x02025010 + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + bx lr + + thumb_func_start FUN_02025018 +FUN_02025018: ; 0x02025018 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1e + ldrh r3, [r0, #0x0] + mov r2, #0x30 + lsr r1, r1, #0x1a + bic r3, r2 + orr r1, r3 + strh r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202502C +FUN_0202502C: ; 0x0202502C + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_02025034 +FUN_02025034: ; 0x02025034 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1f + ldrh r3, [r0, #0x0] + mov r2, #0x80 + lsr r1, r1, #0x18 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02025048 +FUN_02025048: ; 0x02025048 + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_02025050 +FUN_02025050: ; 0x02025050 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1f + ldrh r3, [r0, #0x0] + mov r2, #0x40 + lsr r1, r1, #0x19 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02025064 +FUN_02025064: ; 0x02025064 + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1e + bx lr + + thumb_func_start FUN_0202506C +FUN_0202506C: ; 0x0202506C + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1e + ldrh r3, [r0, #0x0] + ldr r2, _02025080 ; =0xFFFFFCFF + lsr r1, r1, #0x16 + and r2, r3 + orr r1, r2 + strh r1, [r0, #0x0] + bx lr + .balign 4 +_02025080: .word 0xFFFFFCFF + + thumb_func_start FUN_02025084 +FUN_02025084: ; 0x02025084 + ldrh r0, [r0, #0x0] + lsl r0, r0, #0x11 + lsr r0, r0, #0x1b + bx lr + + thumb_func_start FUN_0202508C +FUN_0202508C: ; 0x0202508C + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1b + ldrh r3, [r0, #0x0] + ldr r2, _020250A0 ; =0xFFFF83FF + lsr r1, r1, #0x11 + and r2, r3 + orr r1, r2 + strh r1, [r0, #0x0] + bx lr + .balign 4 +_020250A0: .word 0xFFFF83FF + + thumb_func_start FUN_020250A4 +FUN_020250A4: ; 0x020250A4 + push {r4, lr} + mov r2, #0x7 + mov r1, #0x0 + lsl r2, r2, #0x8 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r1, #0x0 + add r0, r1, #0x0 +_020250B6: + strb r0, [r4, #0x1] + strb r0, [r4, #0x0] + add r1, r1, #0x1 + add r4, #0xe + cmp r1, #0x80 + blt _020250B6 + pop {r4, pc} + + thumb_func_start FUN_020250C4 +FUN_020250C4: ; 0x020250C4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, r1, #0x0 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + bl FUN_02025128 + mov r4, #0x0 + str r0, [sp, #0x8] + add r6, r4, #0x0 + b _02025112 +_020250DC: + add r0, r5, #0x0 + bl FUN_02025184 + ldr r0, [sp, #0x0] + lsl r1, r6, #0x1 + add r7, r0, r1 + ldrh r0, [r0, r1] + sub r0, #0x94 + strb r0, [r5, #0x0] + mov r0, #0x5 + strb r0, [r5, #0x1] + ldrb r1, [r5, #0x0] + ldrb r2, [r5, #0xc] + ldr r0, [sp, #0x8] + bl FUN_020251B0 + lsl r0, r0, #0x2 + strh r0, [r5, #0x2] + ldrh r0, [r7, #0x2] + add r6, r6, #0x2 + add r4, r4, #0x1 + strh r0, [r5, #0x8] + mov r0, #0x64 + strb r0, [r5, #0xa] + mov r0, #0x3 + strb r0, [r5, #0xb] + add r5, #0xe +_02025112: + cmp r4, #0x80 + blt _020250DC + ldr r0, [sp, #0x4] + cmp r4, r0 + blt _020250DC + ldr r0, [sp, #0x8] + bl FUN_02016A18 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02025128 +FUN_02025128: ; 0x02025128 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + bl FUN_02085258 + str r0, [sp, #0x0] + add r0, r7, #0x0 + mov r1, #0xc0 + bl FUN_02016998 + str r0, [sp, #0x4] + mov r6, #0x0 + add r5, r0, #0x0 +_02025142: + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02085264 + add r4, r0, #0x0 + mov r1, #0x3 + bl FUN_02085290 + strb r0, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02085290 + strb r0, [r5, #0x1] + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02085290 + strb r0, [r5, #0x2] + add r0, r4, #0x0 + bl FUN_02016A18 + add r6, r6, #0x1 + add r5, r5, #0x3 + cmp r6, #0x40 + blt _02025142 + ldr r0, [sp, #0x0] + bl FUN_0208526C + ldr r0, [sp, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02025184 +FUN_02025184: ; 0x02025184 + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strh r1, [r0, #0x2] + strh r1, [r0, #0x4] + strb r1, [r0, #0x6] + strh r1, [r0, #0x8] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + strb r1, [r0, #0xc] + strb r1, [r0, #0xd] + bx lr + + thumb_func_start FUN_0202519C +FUN_0202519C: ; 0x0202519C + ldrb r2, [r0, #0xb] + ldrb r0, [r0, #0x0] + sub r3, r0, #0x1 + lsl r0, r3, #0x1 + add r0, r3, r0 + add r0, r1, r0 + ldrb r0, [r0, #0x2] + mul r0, r2 + bx lr + .balign 4 + + thumb_func_start FUN_020251B0 +FUN_020251B0: ; 0x020251B0 + sub r3, r1, #0x1 + lsl r1, r3, #0x1 + add r1, r3, r1 + ldrb r1, [r0, r1] + mov r0, #0x3c + mul r0, r1 + cmp r2, #0x1 + bne _020251CE + lsl r1, r0, #0x1 + add r1, r0, r1 + asr r0, r1, #0x1 + lsr r0, r0, #0x1e + add r0, r1, r0 + asr r0, r0, #0x2 + bx lr +_020251CE: + cmp r2, #0x2 + bne _020251DA + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r1, r1, #0x1 + add r0, r0, r1 +_020251DA: + bx lr + + thumb_func_start FUN_020251DC +FUN_020251DC: ; 0x020251DC + sub r3, r1, #0x1 + lsl r1, r3, #0x1 + add r1, r3, r1 + add r0, r0, r1 + ldrb r0, [r0, #0x1] + cmp r2, #0x2 + bne _020251F2 + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #0x1 + bx lr +_020251F2: + cmp r2, #0x1 + bne _020251FE + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r1, r1, #0x1 + add r0, r0, r1 +_020251FE: + bx lr + + thumb_func_start FUN_02025200 +FUN_02025200: ; 0x02025200 + ldrb r0, [r0, #0xc] + cmp r0, #0x3 + bne _0202520A + mov r0, #0x6 + bx lr +_0202520A: + mov r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02025210 +FUN_02025210: ; 0x02025210 + ldrb r0, [r0, #0xc] + cmp r0, #0x4 + bne _0202521A + mov r0, #0xf + bx lr +_0202521A: + mov r0, #0xa + bx lr + .balign 4 + + thumb_func_start FUN_02025220 +FUN_02025220: ; 0x02025220 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02025200 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02025210 + add r1, r4, #0x3 + mul r0, r1 + add r0, r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_02025238 +FUN_02025238: ; 0x02025238 + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0x1] + bx lr + .balign 4 + + thumb_func_start FUN_02025244 +FUN_02025244: ; 0x02025244 + mov r2, #0xe + mul r2, r1 + ldrb r0, [r0, r2] + bx lr + + thumb_func_start FUN_0202524C +FUN_0202524C: ; 0x0202524C + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0xa] + cmp r0, #0x0 + bne _0202525C + mov r0, #0x0 + bx lr +_0202525C: + cmp r0, #0x32 + bgt _02025264 + mov r0, #0x1 + bx lr +_02025264: + mov r0, #0x2 + bx lr + + thumb_func_start FUN_02025268 +FUN_02025268: ; 0x02025268 + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0xb] + bx lr + .balign 4 + + thumb_func_start FUN_02025274 +FUN_02025274: ; 0x02025274 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0xe + mul r4, r0 + strb r3, [r5, r4] + mov r0, #0x1 + add r6, r5, r4 + strb r0, [r6, #0x1] + add r0, r2, #0x0 + ldrb r2, [r6, #0xc] + add r1, r3, #0x0 + bl FUN_020251B0 + add r1, r6, #0x0 + strh r0, [r1, #0x2] + mov r0, #0x0 + strh r0, [r1, #0x4] + strb r0, [r1, #0x6] + strh r0, [r1, #0x8] + mov r0, #0x64 + strb r0, [r1, #0xa] + mov r0, #0x5 + strb r0, [r1, #0xb] + mov r0, #0x1 + strb r0, [r1, #0xd] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020252AC +FUN_020252AC: ; 0x020252AC + mov r2, #0xe + mul r2, r1 + mov r3, #0x64 + add r0, r0, r2 + strb r3, [r0, #0xa] + bx lr + + thumb_func_start FUN_020252B8 +FUN_020252B8: ; 0x020252B8 + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0xd] + bx lr + .balign 4 + + thumb_func_start FUN_020252C4 +FUN_020252C4: ; 0x020252C4 + mov r3, #0xe + mul r3, r1 + add r0, r0, r3 + strb r2, [r0, #0xd] + bx lr + .balign 4 + + thumb_func_start FUN_020252D0 +FUN_020252D0: ; 0x020252D0 + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrb r0, [r0, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_020252DC +FUN_020252DC: ; 0x020252DC + mov r3, #0xe + mul r3, r1 + add r0, r0, r3 + strb r2, [r0, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_020252E8 +FUN_020252E8: ; 0x020252E8 + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrh r0, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_020252F4 +FUN_020252F4: ; 0x020252F4 + push {r4, lr} + mov r2, #0xe + mul r2, r1 + add r0, r0, r2 + ldrh r4, [r0, #0x8] + bl FUN_02025184 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02025308 +FUN_02025308: ; 0x02025308 + push {r4, lr} + add r4, r0, #0x0 + ldrb r2, [r4, #0x1] + cmp r2, #0x5 + bhi _02025370 + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0202531E: ; jump table (using 16-bit offset) + .short _0202532A - _0202531E - 2; case 0 + .short _02025330 - _0202531E - 2; case 1 + .short _02025330 - _0202531E - 2; case 2 + .short _02025330 - _0202531E - 2; case 3 + .short _02025336 - _0202531E - 2; case 4 + .short _0202534E - _0202531E - 2; case 5 +_0202532A: + bl ErrorHandling + pop {r4, pc} +_02025330: + add r0, r2, #0x1 + strb r0, [r4, #0x1] + pop {r4, pc} +_02025336: + bl FUN_0202519C + strh r0, [r4, #0x8] + ldrh r0, [r4, #0x8] + cmp r0, #0x2 + bhs _02025346 + mov r0, #0x2 + strh r0, [r4, #0x8] +_02025346: + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] + pop {r4, pc} +_0202534E: + mov r1, #0x0 + strh r1, [r4, #0x8] + mov r1, #0x2 + strb r1, [r4, #0x1] + mov r1, #0x5 + strb r1, [r4, #0xb] + ldrb r1, [r4, #0x6] + add r1, r1, #0x1 + strb r1, [r4, #0x6] + bl FUN_02025210 + ldrb r1, [r4, #0x6] + cmp r1, r0 + bne _02025370 + add r0, r4, #0x0 + bl FUN_02025184 +_02025370: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02025374 +FUN_02025374: ; 0x02025374 + push {r3-r7, lr} + add r5, r0, #0x0 + ldrb r0, [r5, #0x1] + add r7, r2, #0x0 + cmp r0, #0x5 + beq _020253DE + add r0, r1, #0x0 + ldrb r1, [r5, #0x0] + ldrb r2, [r5, #0xc] + bl FUN_020251DC + add r6, r0, #0x0 + ldrh r0, [r5, #0x4] + mov r1, #0x3c + str r0, [sp, #0x0] + add r0, r7, r0 + blx _s32_div_f + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + mov r1, #0x3c + add r0, r7, r0 + blx _s32_div_f + strh r1, [r5, #0x4] + cmp r4, #0x0 + beq _020253DE + ldrb r1, [r5, #0xa] + add r0, r6, #0x0 + mul r0, r4 + cmp r1, r0 + blt _020253BA + sub r0, r1, r0 + strb r0, [r5, #0xa] + pop {r3-r7, pc} +_020253BA: + cmp r1, #0x0 + beq _020253CE + sub r0, r6, #0x1 + add r0, r1, r0 + add r1, r6, #0x0 + blx _s32_div_f + sub r4, r4, r0 + mov r0, #0x0 + strb r0, [r5, #0xa] +_020253CE: + ldrb r0, [r5, #0xb] + cmp r0, r4 + ble _020253DA + sub r0, r0, r4 + strb r0, [r5, #0xb] + pop {r3-r7, pc} +_020253DA: + mov r0, #0x0 + strb r0, [r5, #0xb] +_020253DE: + pop {r3-r7, pc} + + thumb_func_start FUN_020253E0 +FUN_020253E0: ; 0x020253E0 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + str r0, [sp, #0x0] +_020253EC: + ldrb r1, [r5, #0x0] + cmp r1, #0x0 + beq _02025474 + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + beq _02025474 + ldrb r0, [r5, #0xd] + cmp r0, #0x0 + beq _02025474 + ldrb r2, [r5, #0xc] + add r0, r6, #0x0 + bl FUN_020251B0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02025220 + mul r0, r4 + cmp r7, r0 + blt _0202541C + add r0, r5, #0x0 + bl FUN_02025184 + b _02025474 +_0202541C: + add r4, r7, #0x0 + b _0202546A +_02025420: + ldrh r2, [r5, #0x2] + cmp r2, r4 + ble _02025438 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02025374 + ldrh r0, [r5, #0x2] + sub r0, r0, r4 + strh r0, [r5, #0x2] + b _02025474 +_02025438: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02025374 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02025308 + ldrh r0, [r5, #0x2] + ldrb r1, [r5, #0x0] + ldrb r2, [r5, #0xc] + sub r4, r4, r0 + add r0, r6, #0x0 + bl FUN_020251B0 + strh r0, [r5, #0x2] + ldrb r0, [r5, #0x1] + cmp r0, #0x5 + bne _0202546A + add r0, r5, #0x0 + bl FUN_02025200 + ldrh r1, [r5, #0x2] + mul r0, r1 + strh r0, [r5, #0x2] +_0202546A: + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + beq _02025474 + cmp r4, #0x0 + bne _02025420 +_02025474: + ldr r0, [sp, #0x0] + add r5, #0xe + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, #0x80 + blt _020253EC + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02025484 +FUN_02025484: ; 0x02025484 + ldr r3, _0202548C ; =MI_CpuFill8 + mov r1, #0x0 + mov r2, #0x24 + bx r3 + .balign 4 +_0202548C: .word MI_CpuFill8 + + thumb_func_start FUN_02025490 +FUN_02025490: ; 0x02025490 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02025484 + str r4, [r5, #0x0] + add r0, r5, #0x4 + pop {r3-r5, pc} + + thumb_func_start FUN_020254A0 +FUN_020254A0: ; 0x020254A0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, r1 + beq _020254AE + bl ErrorHandling +_020254AE: + add r0, r4, #0x4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020254B4 +FUN_020254B4: ; 0x020254B4 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_020254B8 +FUN_020254B8: ; 0x020254B8 + mov r0, #0x22 + lsl r0, r0, #0x6 + bx lr + .balign 4 + + thumb_func_start FUN_020254C0 +FUN_020254C0: ; 0x020254C0 + ldr r3, _020254C8 ; =FUN_02022610 + mov r1, #0x9 + bx r3 + nop +_020254C8: .word FUN_02022610 + + thumb_func_start FUN_020254CC +FUN_020254CC: ; 0x020254CC + push {r3-r7, lr} + mov r4, #0x0 + ldr r6, _020254EC ; =0x0000FFFF + add r5, r0, #0x0 + add r7, r4, #0x0 +_020254D6: + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x88 + blx Call_FillMemWithValue + strh r6, [r5, #0x0] + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x10 + blt _020254D6 + pop {r3-r7, pc} + .balign 4 +_020254EC: .word 0x0000FFFF + + thumb_func_start FUN_020254F0 +FUN_020254F0: ; 0x020254F0 + mov r2, #0x88 + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start FUN_020254F8 +FUN_020254F8: ; 0x020254F8 + add r0, r0, r1 + add r0, #0x68 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02025500 +FUN_02025500: ; 0x02025500 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl StringNotEqual + cmp r0, #0x0 + bne _0202551A + ldr r1, [r5, #0x10] + ldr r0, [r4, #0x10] + cmp r1, r0 + bne _0202551A + mov r0, #0x1 + pop {r3-r5, pc} +_0202551A: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02025520 +FUN_02025520: ; 0x02025520 + push {r4-r7, lr} + sub sp, #0x2c + str r1, [sp, #0x4] + mov r1, #0x22 + str r0, [sp, #0x0] + add r0, r3, #0x0 + lsl r1, r1, #0x6 + str r2, [sp, #0x8] + bl FUN_02016998 + str r0, [sp, #0x10] + bl FUN_020254CC + mov r0, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + ble _02025578 + ldr r7, [sp, #0x4] + add r6, sp, #0x18 +_02025548: + mov r0, #0x0 + mvn r0, r0 + ldr r5, [sp, #0x0] + str r0, [r6, #0x0] + mov r4, #0x0 +_02025552: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02025500 + cmp r0, #0x0 + beq _02025560 + str r4, [r6, #0x0] +_02025560: + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x10 + blt _02025552 + ldr r0, [sp, #0x14] + add r6, r6, #0x4 + add r1, r0, #0x1 + ldr r0, [sp, #0x8] + add r7, #0x88 + str r1, [sp, #0x14] + cmp r1, r0 + blt _02025548 +_02025578: + ldr r0, [sp, #0x8] + mov r4, #0x0 + str r4, [sp, #0xc] + cmp r0, #0x0 + ble _020255BE + ldr r5, [sp, #0x10] + add r6, sp, #0x18 +_02025586: + ldr r3, [sp, #0x4] + add r7, r5, #0x0 + mov r2, #0x11 +_0202558C: + ldmia r3!, {r0-r1} + stmia r7!, {r0-r1} + sub r2, r2, #0x1 + bne _0202558C + ldr r1, [r6, #0x0] + cmp r1, #0x0 + blt _020255A6 + add r2, r1, #0x0 + mov r0, #0x88 + mul r2, r0 + ldr r1, _02025610 ; =0x0000FFFF + ldr r0, [sp, #0x0] + strh r1, [r0, r2] +_020255A6: + ldr r0, [sp, #0x4] + add r5, #0x88 + add r0, #0x88 + str r0, [sp, #0x4] + ldr r0, [sp, #0xc] + add r4, r4, #0x1 + add r1, r0, #0x1 + ldr r0, [sp, #0x8] + add r6, r6, #0x4 + str r1, [sp, #0xc] + cmp r1, r0 + blt _02025586 +_020255BE: + mov r0, #0x0 + mov r12, r0 + mov r0, #0x88 + add r1, r4, #0x0 + mul r1, r0 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x0] + add r5, r0, r1 +_020255CE: + ldrh r1, [r3, #0x0] + ldr r0, _02025610 ; =0x0000FFFF + cmp r1, r0 + beq _020255EC + add r6, r3, #0x0 + add r7, r5, #0x0 + mov r2, #0x11 +_020255DC: + ldmia r6!, {r0-r1} + stmia r7!, {r0-r1} + sub r2, r2, #0x1 + bne _020255DC + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x10 + bge _020255F8 +_020255EC: + mov r0, r12 + add r0, r0, #0x1 + add r3, #0x88 + mov r12, r0 + cmp r0, #0x10 + blt _020255CE +_020255F8: + mov r2, #0x22 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x10] + lsl r2, r2, #0x6 + blx memcpy + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add sp, #0x2c + pop {r4-r7, pc} + nop +_02025610: .word 0x0000FFFF + + thumb_func_start FUN_02025614 +FUN_02025614: ; 0x02025614 + push {r3-r6} + mov r3, #0x0 + add r4, r0, #0x0 +_0202561A: + ldr r2, [r4, #0x10] + cmp r1, r2 + bne _02025626 + mov r0, #0x1 + pop {r3-r6} + bx lr +_02025626: + add r3, r3, #0x1 + add r4, #0x88 + cmp r3, #0x10 + blt _0202561A + mov r6, #0x0 + add r3, r6, #0x0 +_02025632: + add r4, r3, #0x0 + add r5, r0, #0x0 +_02025636: + ldr r2, [r5, #0x18] + cmp r1, r2 + bne _02025642 + add r0, r6, #0x2 + pop {r3-r6} + bx lr +_02025642: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x10 + blt _02025636 + add r6, r6, #0x1 + add r0, #0x88 + cmp r6, #0x10 + blt _02025632 + mov r0, #0x0 + pop {r3-r6} + bx lr + + thumb_func_start FUN_02025658 +FUN_02025658: ; 0x02025658 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x0] + strb r0, [r4, #0x4] + ldr r0, _020256A0 ; =0x020ECAC4 + mov r1, #0x8 + ldrb r0, [r0, #0x0] + strb r0, [r4, #0x5] + ldr r0, _020256A4 ; =0x020ECAC0 + ldrb r0, [r0, #0x0] + strb r0, [r4, #0x6] + mov r0, #0xff + strb r0, [r4, #0x7] + add r0, r4, #0x0 + add r0, #0x8 + bl StringFillEOS + ldr r0, _020256A8 ; =0x0000FFFF + mov r1, #0x0 + add r2, r4, #0x0 +_02025682: + add r1, r1, #0x1 + strh r0, [r2, #0x18] + add r2, r2, #0x2 + cmp r1, #0x3 + blt _02025682 + mov r5, #0x0 + add r4, #0x20 +_02025690: + add r0, r4, #0x0 + bl FUN_02013724 + add r5, r5, #0x1 + add r4, #0x8 + cmp r5, #0x3 + blt _02025690 + pop {r3-r5, pc} + .balign 4 +_020256A0: .word 0x020ECAC4 +_020256A4: .word 0x020ECAC0 +_020256A8: .word 0x0000FFFF + + thumb_func_start FUN_020256AC +FUN_020256AC: ; 0x020256AC + ldrb r0, [r0, #0x7] + cmp r0, #0xb + bhi _020256B6 + mov r0, #0x1 + bx lr +_020256B6: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_020256BC +FUN_020256BC: ; 0x020256BC + push {r4, lr} + mov r1, #0x38 + bl FUN_020169D8 + add r4, r0, #0x0 + bl FUN_02025658 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020256D0 +FUN_020256D0: ; 0x020256D0 + ldr r3, _020256D8 ; =MI_CpuCopy8 + mov r2, #0x38 + bx r3 + nop +_020256D8: .word MI_CpuCopy8 + + thumb_func_start FUN_020256DC +FUN_020256DC: ; 0x020256DC + push {r4-r7, lr} + sub sp, #0x14 + add r7, r3, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + bl FUN_02025658 + add r0, r7, #0x0 + strb r6, [r5, #0x7] + bl FUN_0206BB1C + str r0, [sp, #0x0] + add r0, r7, #0x0 + bl FUN_020238F4 + add r6, r0, #0x0 + bl FUN_0202398C + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x8 + bl StringCopy + add r0, r6, #0x0 + bl FUN_020239CC + strb r0, [r5, #0x4] + add r0, r6, #0x0 + bl FUN_020239BC + str r0, [r5, #0x0] + ldr r0, [sp, #0x0] + mov r6, #0x0 + bl FUN_0206B9AC + cmp r4, r0 + bge _020257AE + add r5, #0x18 +_0202572A: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r7, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + add r0, r7, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0xc] + add r0, r7, #0x0 + bl FUN_0206B6C8 + str r0, [sp, #0x10] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x8] + bl FUN_0206B7BC + lsl r3, r6, #0x1 + ldrh r1, [r5, r3] + add r7, r0, #0x0 + ldr r0, _020257B4 ; =0xFFFFF000 + add r2, r1, #0x0 + and r2, r0 + ldr r0, [sp, #0x10] + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, _020257B8 ; =0x00000FFF + and r0, r1 + orr r0, r2 + strh r0, [r5, r3] + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldrh r1, [r5, r3] + ldr r0, _020257BC ; =0xFFFF0FFF + and r0, r1 + lsl r1, r7, #0x1c + lsr r1, r1, #0x10 + orr r0, r1 + strh r0, [r5, r3] + cmp r6, #0x3 + bhs _020257AE + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x0] + bl FUN_0206B9AC + cmp r4, r0 + blt _0202572A +_020257AE: + add sp, #0x14 + pop {r4-r7, pc} + nop +_020257B4: .word 0xFFFFF000 +_020257B8: .word 0x00000FFF +_020257BC: .word 0xFFFF0FFF + + thumb_func_start FUN_020257C0 +FUN_020257C0: ; 0x020257C0 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_020257C4 +FUN_020257C4: ; 0x020257C4 + add r0, #0x8 + bx lr + + thumb_func_start FUN_020257C8 +FUN_020257C8: ; 0x020257C8 + ldrb r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_020257CC +FUN_020257CC: ; 0x020257CC + ldrb r0, [r0, #0x7] + bx lr + + thumb_func_start FUN_020257D0 +FUN_020257D0: ; 0x020257D0 + cmp r1, #0xc + bhs _020257D6 + strb r1, [r0, #0x7] +_020257D6: + bx lr + + thumb_func_start FUN_020257D8 +FUN_020257D8: ; 0x020257D8 + ldrb r0, [r0, #0x5] + bx lr + + thumb_func_start FUN_020257DC +FUN_020257DC: ; 0x020257DC + ldrb r0, [r0, #0x6] + bx lr + + thumb_func_start FUN_020257E0 +FUN_020257E0: ; 0x020257E0 + cmp r1, #0x3 + bhs _02025810 + cmp r2, #0x0 + beq _020257F0 + cmp r2, #0x1 + beq _020257FC + cmp r2, #0x2 + b _02025808 +_020257F0: + lsl r1, r1, #0x1 + add r0, r0, r1 + ldrh r0, [r0, #0x18] + lsl r0, r0, #0x14 + lsr r0, r0, #0x14 + bx lr +_020257FC: + lsl r1, r1, #0x1 + add r0, r0, r1 + ldrh r0, [r0, #0x18] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1c + bx lr +_02025808: + lsl r1, r1, #0x1 + add r0, r0, r1 + ldrh r0, [r0, #0x18] + bx lr +_02025810: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02025814 +FUN_02025814: ; 0x02025814 + cmp r1, #0x3 + bhs _02025820 + add r0, #0x20 + lsl r1, r1, #0x3 + add r0, r0, r1 + bx lr +_02025820: + add r0, #0x20 + bx lr + + thumb_func_start FUN_02025824 +FUN_02025824: ; 0x02025824 + push {r3, lr} + cmp r2, #0x3 + bhs _02025834 + add r0, #0x20 + lsl r2, r2, #0x3 + add r0, r0, r2 + bl FUN_02013960 +_02025834: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02025838 +FUN_02025838: ; 0x02025838 + ldr r3, _02025840 ; =FUN_02022610 + mov r1, #0xf + bx r3 + nop +_02025840: .word FUN_02022610 + + thumb_func_start FUN_02025844 +FUN_02025844: ; 0x02025844 + mov r0, #0x46 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_0202584C +FUN_0202584C: ; 0x0202584C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_02025852: + add r0, r5, #0x0 + bl FUN_02025658 + add r4, r4, #0x1 + add r5, #0x38 + cmp r4, #0x14 + blt _02025852 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02025864 +FUN_02025864: ; 0x02025864 + push {r3, lr} + cmp r1, #0x0 + bne _02025872 + mov r1, #0x14 + bl FUN_020258F0 + pop {r3, pc} +_02025872: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + + thumb_func_start FUN_02025878 +FUN_02025878: ; 0x02025878 + push {r3, lr} + bl FUN_02025940 + cmp r0, #0x0 + beq _02025886 + bl FUN_02025658 +_02025886: + pop {r3, pc} + + thumb_func_start FUN_02025888 +FUN_02025888: ; 0x02025888 + push {r4, lr} + add r4, r3, #0x0 + bl FUN_02025940 + add r1, r0, #0x0 + beq _0202589A + add r0, r4, #0x0 + bl FUN_020256D0 +_0202589A: + pop {r4, pc} + + thumb_func_start FUN_0202589C +FUN_0202589C: ; 0x0202589C + push {r3, lr} + cmp r1, #0x0 + bne _020258AA + mov r1, #0x14 + bl FUN_02025918 + pop {r3, pc} +_020258AA: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020258B0 +FUN_020258B0: ; 0x020258B0 + push {r3-r5, lr} + add r5, r3, #0x0 + bl FUN_02025940 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020256BC + add r5, r0, #0x0 + cmp r4, #0x0 + beq _020258CE + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020256D0 +_020258CE: + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020258D4 +FUN_020258D4: ; 0x020258D4 + push {r4, lr} + add r4, r3, #0x0 + bl FUN_02025940 + cmp r0, #0x0 + bne _020258E8 + add r0, r4, #0x0 + bl FUN_02025658 + pop {r4, pc} +_020258E8: + add r1, r4, #0x0 + bl FUN_020256D0 + pop {r4, pc} + + thumb_func_start FUN_020258F0 +FUN_020258F0: ; 0x020258F0 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + mov r4, #0x0 + cmp r6, #0x0 + ble _02025912 +_020258FC: + add r0, r5, #0x0 + bl FUN_020256AC + cmp r0, #0x0 + bne _0202590A + add r0, r4, #0x0 + pop {r4-r6, pc} +_0202590A: + add r4, r4, #0x1 + add r5, #0x38 + cmp r4, r6 + blt _020258FC +_02025912: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r6, pc} + + thumb_func_start FUN_02025918 +FUN_02025918: ; 0x02025918 + push {r3-r7, lr} + mov r4, #0x0 + add r7, r1, #0x0 + add r5, r0, #0x0 + add r6, r4, #0x0 + cmp r7, #0x0 + ble _0202593A +_02025926: + add r0, r5, #0x0 + bl FUN_020256AC + cmp r0, #0x0 + beq _02025932 + add r4, r4, #0x1 +_02025932: + add r6, r6, #0x1 + add r5, #0x38 + cmp r6, r7 + blt _02025926 +_0202593A: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02025940 +FUN_02025940: ; 0x02025940 + mov r3, #0x0 + cmp r1, #0x0 + bne _02025950 + cmp r2, #0x14 + bge _02025950 + mov r1, #0x38 + mul r1, r2 + add r3, r0, r1 +_02025950: + add r0, r3, #0x0 + bx lr + + thumb_func_start FUN_02025954 +FUN_02025954: ; 0x02025954 + ldr r0, _02025958 ; =0x000009B4 + bx lr + .balign 4 +_02025958: .word 0x000009B4 + + thumb_func_start FUN_0202595C +FUN_0202595C: ; 0x0202595C + mov r0, #0x94 + bx lr + + thumb_func_start FUN_02025960 +FUN_02025960: ; 0x02025960 + mov r0, #0x3c + bx lr + + thumb_func_start FUN_02025964 +FUN_02025964: ; 0x02025964 + push {r4, lr} + mov r1, #0x3c + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x3c + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202597C +FUN_0202597C: ; 0x0202597C + push {r4-r7, lr} + sub sp, #0x1c + add r4, r0, #0x0 + add r0, sp, #0xc + add r1, sp, #0x0 + bl FUN_0201265C + ldr r0, _020259D8 ; =0x021C48B8 + ldr r6, [sp, #0xc] + ldr r1, [sp, #0x8] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x5 + add r5, r1, r0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r0, r0, r6 + lsl r0, r0, #0x5 + add r0, r1, r0 + mov r7, #0x0 + ldr r2, [sp, #0x0] + lsl r0, r0, #0x5 + add r0, r2, r0 + ldr r3, [sp, #0x4] + lsl r0, r0, #0x5 + add r0, r3, r0 + lsl r0, r0, #0x5 + add r5, r5, r0 + ldr r2, _020259DC ; =0x000009B4 + add r0, r4, #0x0 + add r1, r7, #0x0 + blx MI_CpuFill8 + add r0, r4, #0x0 + add r0, #0x94 + mov r1, #0x9b + str r5, [r0, #0x0] + lsl r1, r1, #0x4 + ldrb r2, [r4, r1] + mov r0, #0xf + bic r2, r0 + mov r0, #0x1 + orr r0, r2 + strb r0, [r4, r1] + add sp, #0x1c + pop {r4-r7, pc} + nop +_020259D8: .word 0x021C48B8 +_020259DC: .word 0x000009B4 + + thumb_func_start FUN_020259E0 +FUN_020259E0: ; 0x020259E0 + mov r1, #0x9 + mov r3, #0x0 + lsl r1, r1, #0x8 +_020259E6: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + bne _020259F2 + add r0, r3, #0x0 + bx lr +_020259F2: + add r3, r3, #0x1 + cmp r3, #0x28 + blt _020259E6 + mov r0, #0x0 + mvn r0, r0 + bx lr + .balign 4 + + thumb_func_start FUN_02025A00 +FUN_02025A00: ; 0x02025A00 + mov r1, #0x95 + mov r3, #0x0 + lsl r1, r1, #0x4 +_02025A06: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + bne _02025A12 + add r0, r3, #0x0 + bx lr +_02025A12: + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02025A06 + mov r0, #0x0 + mvn r0, r0 + bx lr + .balign 4 + + thumb_func_start FUN_02025A20 +FUN_02025A20: ; 0x02025A20 + ldr r1, _02025A3C ; =0x00000928 + mov r3, #0x0 +_02025A24: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + bne _02025A30 + add r0, r3, #0x0 + bx lr +_02025A30: + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02025A24 + mov r0, #0x0 + mvn r0, r0 + bx lr + .balign 4 +_02025A3C: .word 0x00000928 + + thumb_func_start FUN_02025A40 +FUN_02025A40: ; 0x02025A40 + ldr r1, _02025A5C ; =0x000008D8 + mov r3, #0x0 +_02025A44: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + bne _02025A50 + add r0, r3, #0x0 + bx lr +_02025A50: + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02025A44 + mov r0, #0x0 + mvn r0, r0 + bx lr + .balign 4 +_02025A5C: .word 0x000008D8 + + thumb_func_start FUN_02025A60 +FUN_02025A60: ; 0x02025A60 + push {r4-r7, lr} + sub sp, #0x14 + str r1, [sp, #0x0] + bl FUN_02026CC4 + ldr r1, _02025B50 ; =0x020EE958 + add r6, r0, #0x0 + ldrb r2, [r1, #0x0] + add r0, sp, #0x8 + strb r2, [r0, #0x6] + ldrb r2, [r1, #0x1] + strb r2, [r0, #0x7] + ldrb r2, [r1, #0x2] + strb r2, [r0, #0x8] + ldrb r2, [r1, #0x3] + strb r2, [r0, #0x9] + ldrb r2, [r1, #0x4] + strb r2, [r0, #0xa] + ldrb r2, [r1, #0x5] + strb r2, [r0, #0xb] + ldrb r2, [r1, #0x6] + strb r2, [r0, #0x0] + ldrb r2, [r1, #0x7] + strb r2, [r0, #0x1] + ldrb r2, [r1, #0x8] + strb r2, [r0, #0x2] + ldrb r2, [r1, #0x9] + strb r2, [r0, #0x3] + ldrb r2, [r1, #0xa] + strb r2, [r0, #0x4] + ldrb r1, [r1, #0xb] + strb r1, [r0, #0x5] + ldr r0, [sp, #0x0] + cmp r0, #0x0 + ble _02025B4C + str r0, [sp, #0x4] + cmp r0, #0x63 + ble _02025AB0 + mov r0, #0x63 + str r0, [sp, #0x4] +_02025AB0: + add r0, r6, #0x0 + add r0, #0x94 + ldr r3, [r0, #0x0] + mov r0, #0x0 + mov r12, r0 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ble _02025B28 + add r7, sp, #0xc + add r7, #0x2 +_02025AC4: + mov r2, #0x0 +_02025AC6: + ldr r0, _02025B54 ; =0x0000055C + add r4, r6, r2 + ldrb r5, [r4, r0] + cmp r5, #0x0 + beq _02025B16 + ldr r0, _02025B58 ; =0x5D588B65 + ldrb r1, [r7, r5] + mul r0, r3 + ldr r3, _02025B5C ; =0x00269EC3 + add r3, r0, r3 + cmp r1, #0x0 + bne _02025AE2 + lsr r0, r3, #0x10 + b _02025AE8 +_02025AE2: + lsr r0, r3, #0x10 + mul r1, r0 + lsr r0, r1, #0x10 +_02025AE8: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x8 + ldrb r0, [r0, r5] + add r0, r0, r1 + mov r1, #0x17 + lsl r1, r1, #0x6 + ldrb r1, [r4, r1] + add r1, r0, r1 + cmp r1, #0x63 + bge _02025B0E + mov r1, #0x17 + lsl r1, r1, #0x6 + ldrb r1, [r4, r1] + add r1, r1, r0 + mov r0, #0x17 + lsl r0, r0, #0x6 + strb r1, [r4, r0] + b _02025B16 +_02025B0E: + mov r0, #0x17 + mov r1, #0x63 + lsl r0, r0, #0x6 + strb r1, [r4, r0] +_02025B16: + add r2, r2, #0x1 + cmp r2, #0x64 + blt _02025AC6 + mov r0, r12 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + mov r12, r1 + cmp r1, r0 + blt _02025AC4 +_02025B28: + add r0, r6, #0x0 + add r0, #0x94 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x0] + add r0, r1, r0 + bl FUN_0201BA10 + add r1, r6, #0x0 + add r1, #0x94 + str r0, [r1, #0x0] + mov r1, #0x9b + lsl r1, r1, #0x4 + ldrb r2, [r6, r1] + mov r0, #0xf + bic r2, r0 + mov r0, #0x1 + orr r0, r2 + strb r0, [r6, r1] +_02025B4C: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02025B50: .word 0x020EE958 +_02025B54: .word 0x0000055C +_02025B58: .word 0x5D588B65 +_02025B5C: .word 0x00269EC3 + + thumb_func_start FUN_02025B60 +FUN_02025B60: ; 0x02025B60 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r2, #0x0 + bl FUN_02026CC4 + cmp r4, #0x0 + blt _02025B90 + cmp r5, #0x0 + bne _02025B90 + add r1, r0, #0x0 + add r1, #0x98 + ldr r1, [r1, #0x0] + cmp r1, r4 + bge _02025B84 + mov r1, #0x0 + add r0, #0x98 + str r1, [r0, #0x0] + pop {r3-r5, pc} +_02025B84: + add r1, r0, #0x0 + add r1, #0x98 + ldr r1, [r1, #0x0] + add r0, #0x98 + sub r1, r1, r4 + str r1, [r0, #0x0] +_02025B90: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02025B94 +FUN_02025B94: ; 0x02025B94 + push {r3, lr} + bl FUN_02026CC4 + add r1, r0, #0x0 + add r1, #0x98 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _02025BB6 + add r1, r0, #0x0 + add r1, #0x9c + ldrb r1, [r1, #0x0] + cmp r1, #0x2 + bne _02025BB6 + add r1, r0, #0x0 + mov r2, #0x0 + add r1, #0x9c + strb r2, [r1, #0x0] +_02025BB6: + add r1, r0, #0x0 + add r1, #0x98 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _02025BD4 + add r1, r0, #0x0 + add r1, #0x9c + ldrb r1, [r1, #0x0] + cmp r1, #0x1 + bne _02025BD4 + mov r2, #0x5a + add r1, r0, #0x0 + lsl r2, r2, #0x4 + add r1, #0x98 + str r2, [r1, #0x0] +_02025BD4: + add r1, r0, #0x0 + add r1, #0x9c + ldrb r1, [r1, #0x0] + cmp r1, #0x1 + bne _02025BE4 + mov r1, #0x2 + add r0, #0x9c + strb r1, [r0, #0x0] +_02025BE4: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02025BE8 +FUN_02025BE8: ; 0x02025BE8 + push {r3, lr} + bl FUN_02026CC4 + add r1, r0, #0x0 + add r1, #0x9c + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02025BFE + mov r1, #0x1 + add r0, #0x9c + strb r1, [r0, #0x0] +_02025BFE: + pop {r3, pc} + + thumb_func_start FUN_02025C00 +FUN_02025C00: ; 0x02025C00 + push {r3, lr} + bl FUN_02026CC4 + add r1, r0, #0x0 + add r1, #0x9c + ldrb r1, [r1, #0x0] + cmp r1, #0x1 + bne _02025C16 + mov r1, #0x0 + add r0, #0x9c + strb r1, [r0, #0x0] +_02025C16: + pop {r3, pc} + + thumb_func_start FUN_02025C18 +FUN_02025C18: ; 0x02025C18 + push {r3, lr} + bl FUN_02026CC4 + add r0, #0x9c + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + beq _02025C2A + mov r0, #0x1 + pop {r3, pc} +_02025C2A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02025C30 +FUN_02025C30: ; 0x02025C30 + mov r1, #0x1 + add r0, #0x9d + strb r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02025C38 +FUN_02025C38: ; 0x02025C38 + add r0, #0x9d + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02025C40 +FUN_02025C40: ; 0x02025C40 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _02025CD0 ; =0x0000010E + add r6, r1, #0x0 + ldrb r0, [r7, r0] + mov r4, #0x0 + add r5, r7, #0x0 + str r0, [sp, #0x0] +_02025C50: + add r0, r6, #0x0 + bl FUN_020239BC + add r1, r5, #0x0 + add r1, #0xa0 + ldr r1, [r1, #0x0] + cmp r1, r0 + beq _02025CCC + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x5 + blt _02025C50 + ldr r0, [sp, #0x0] + cmp r0, #0x5 + blt _02025C72 + bl ErrorHandling +_02025C72: + add r0, r6, #0x0 + bl FUN_0202398C + ldr r1, [sp, #0x0] + add r2, r7, #0x0 + add r2, #0xb4 + lsl r1, r1, #0x4 + add r1, r2, r1 + mov r2, #0x10 + blx MI_CpuCopy8 + add r0, r6, #0x0 + bl FUN_020239BC + ldr r1, [sp, #0x0] + lsl r1, r1, #0x2 + add r1, r7, r1 + add r1, #0xa0 + str r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_02023A70 + ldr r1, [sp, #0x0] + add r2, r7, r1 + mov r1, #0x41 + lsl r1, r1, #0x2 + strb r0, [r2, r1] + add r0, r6, #0x0 + bl FUN_02023A68 + ldr r1, [sp, #0x0] + add r2, r7, r1 + ldr r1, _02025CD4 ; =0x00000109 + strb r0, [r2, r1] + add r0, r1, #0x5 + ldrb r0, [r7, r0] + add r2, r0, #0x1 + add r0, r1, #0x5 + strb r2, [r7, r0] + ldrb r0, [r7, r0] + cmp r0, #0x5 + blo _02025CCC + mov r2, #0x0 + add r0, r1, #0x5 + strb r2, [r7, r0] +_02025CCC: + pop {r3-r7, pc} + nop +_02025CD0: .word 0x0000010E +_02025CD4: .word 0x00000109 + + thumb_func_start FUN_02025CD8 +FUN_02025CD8: ; 0x02025CD8 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02025D38 ; =0x0000010E + ldrb r0, [r5, r0] + sub r0, r0, r2 + sub r4, r0, #0x1 + bpl _02025CE8 + add r4, r4, #0x5 +_02025CE8: + add r7, r5, #0x0 + lsl r0, r4, #0x4 + add r7, #0xb4 + str r0, [sp, #0x0] + ldrh r0, [r7, r0] + cmp r0, #0x0 + beq _02025D32 + add r0, r1, #0x0 + bl FUN_02023928 + ldr r1, [sp, #0x0] + add r6, r0, #0x0 + add r1, r7, r1 + bl FUN_0202395C + ldr r1, _02025D3C ; =0x00000109 + add r2, r5, r4 + ldrb r1, [r2, r1] + add r0, r6, #0x0 + bl FUN_02023A6C + mov r1, #0x41 + add r2, r5, r4 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + add r0, r6, #0x0 + bl FUN_02023A74 + lsl r1, r4, #0x2 + add r1, r5, r1 + add r1, #0xa0 + ldr r1, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_020239B8 + add r0, r6, #0x0 + pop {r3-r7, pc} +_02025D32: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_02025D38: .word 0x0000010E +_02025D3C: .word 0x00000109 + + thumb_func_start FUN_02025D40 +FUN_02025D40: ; 0x02025D40 + add r0, #0x94 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02025D48 +FUN_02025D48: ; 0x02025D48 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0xb + bge _02025D54 + bl ErrorHandling +_02025D54: + cmp r4, #0x3c + blt _02025D5C + bl ErrorHandling +_02025D5C: + sub r4, #0xb + ldr r0, _02025D68 ; =0x02105C74 + lsl r1, r4, #0x1 + ldrh r0, [r0, r1] + pop {r4, pc} + nop +_02025D68: .word 0x02105C74 + + thumb_func_start FUN_02025D6C +FUN_02025D6C: ; 0x02025D6C + push {r4-r5} + mov r2, #0x81 + mov r5, #0x0 + lsl r2, r2, #0x4 +_02025D74: + add r4, r0, r5 + ldrb r3, [r4, r2] + cmp r3, #0x0 + bne _02025D88 + mov r0, #0x81 + lsl r0, r0, #0x4 + strb r1, [r4, r0] + mov r0, #0x1 + pop {r4-r5} + bx lr +_02025D88: + add r5, r5, #0x1 + cmp r5, #0xc8 + blt _02025D74 + mov r0, #0x0 + pop {r4-r5} + bx lr + + thumb_func_start FUN_02025D94 +FUN_02025D94: ; 0x02025D94 + mov r1, #0x81 + mov r3, #0x0 + lsl r1, r1, #0x4 +_02025D9A: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + bne _02025DA6 + mov r0, #0x1 + bx lr +_02025DA6: + add r3, r3, #0x1 + cmp r3, #0xc8 + blt _02025D9A + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02025DB0 +FUN_02025DB0: ; 0x02025DB0 + mov r1, #0x81 + mov r3, #0x0 + lsl r1, r1, #0x4 +_02025DB6: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + beq _02025DC4 + add r3, r3, #0x1 + cmp r3, #0xc8 + blt _02025DB6 +_02025DC4: + add r0, r3, #0x0 + bx lr + + thumb_func_start FUN_02025DC8 +FUN_02025DC8: ; 0x02025DC8 + add r1, r0, r1 + mov r0, #0x81 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02025DD4 +FUN_02025DD4: ; 0x02025DD4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02025F0C + cmp r0, #0x0 + beq _02025DE6 + bl ErrorHandling +_02025DE6: + mov r0, #0x81 + add r1, r5, r4 + lsl r0, r0, #0x4 + add r6, r4, #0x0 + ldrb r7, [r1, r0] + cmp r4, #0xc7 + bge _02025E06 + mov r1, #0x81 + add r0, r0, #0x1 + lsl r1, r1, #0x4 +_02025DFA: + add r3, r5, r6 + ldrb r2, [r3, r0] + add r6, r6, #0x1 + cmp r6, #0xc7 + strb r2, [r3, r1] + blt _02025DFA +_02025E06: + ldr r0, _02025E1C ; =0x000008D7 + mov r2, #0x0 + strb r2, [r5, r0] + add r0, r5, #0x0 + add r1, r4, #0x0 + sub r2, r2, #0x1 + bl FUN_02025F58 + add r0, r7, #0x0 + pop {r3-r7, pc} + nop +_02025E1C: .word 0x000008D7 + + thumb_func_start FUN_02025E20 +FUN_02025E20: ; 0x02025E20 + push {r4-r7, lr} + sub sp, #0xd4 + mov r4, #0x0 + add r5, r0, #0x0 + sub r0, r4, #0x1 + str r0, [sp, #0x4] + mov r0, #0x81 + lsl r0, r0, #0x4 + str r1, [sp, #0x8] + str r2, [sp, #0x0] + add r0, r5, r0 + add r1, sp, #0xc + mov r2, #0xc8 + blx MI_CpuCopy8 + ldr r2, [sp, #0x8] + add r1, sp, #0xc + add r0, r4, #0x0 + add r7, r1, r2 +_02025E46: + ldr r2, [sp, #0x8] + cmp r0, r2 + beq _02025E58 + ldrb r6, [r1, #0x0] + mov r2, #0x81 + add r3, r5, r4 + lsl r2, r2, #0x4 + strb r6, [r3, r2] + add r4, r4, #0x1 +_02025E58: + ldr r2, [sp, #0x0] + cmp r0, r2 + bne _02025E6A + ldrb r6, [r7, #0x0] + mov r2, #0x81 + add r3, r5, r4 + lsl r2, r2, #0x4 + strb r6, [r3, r2] + add r4, r4, #0x1 +_02025E6A: + add r0, r0, #0x1 + add r1, r1, #0x1 + cmp r0, #0xc8 + blt _02025E46 + ldr r0, [sp, #0x8] + mov r3, #0x0 + add r2, r0, #0x1 + mov r0, #0x9a + lsl r0, r0, #0x4 +_02025E7C: + add r1, r5, r3 + ldrb r1, [r1, r0] + cmp r2, r1 + bne _02025E88 + str r3, [sp, #0x4] + b _02025E8E +_02025E88: + add r3, r3, #0x1 + cmp r3, #0xf + blt _02025E7C +_02025E8E: + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_02025F58 + mov r2, #0x0 + ldr r1, [sp, #0x8] + add r0, r5, #0x0 + mvn r2, r2 + bl FUN_02025F58 + mov r1, #0x0 + ldr r0, [sp, #0x4] + mvn r1, r1 + cmp r0, r1 + beq _02025ED6 + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x8] + cmp r0, r1 + bge _02025EC8 + add r0, r1, #0x0 + add r2, r0, #0x1 + ldr r0, [sp, #0x4] + add sp, #0xd4 + add r1, r5, r0 + mov r0, #0x9a + lsl r0, r0, #0x4 + strb r2, [r1, r0] + pop {r4-r7, pc} +_02025EC8: + add r0, r1, #0x0 + add r2, r0, #0x2 + ldr r0, [sp, #0x4] + add r1, r5, r0 + mov r0, #0x9a + lsl r0, r0, #0x4 + strb r2, [r1, r0] +_02025ED6: + add sp, #0xd4 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02025EDC +FUN_02025EDC: ; 0x02025EDC + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r6, #0x1 + bge _02025EEC + bl ErrorHandling +_02025EEC: + cmp r6, #0xf + ble _02025EF4 + bl ErrorHandling +_02025EF4: + sub r0, r6, #0x1 + add r1, r5, r0 + mov r0, #0x9a + add r2, r4, #0x1 + lsl r0, r0, #0x4 + strb r2, [r1, r0] + mov r0, #0x81 + add r1, r5, r4 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02025F0C +FUN_02025F0C: ; 0x02025F0C + push {r3-r4} + add r3, r1, #0x1 + mov r1, #0x9a + mov r4, #0x0 + lsl r1, r1, #0x4 +_02025F16: + add r2, r0, r4 + ldrb r2, [r2, r1] + cmp r3, r2 + bne _02025F24 + mov r0, #0x1 + pop {r3-r4} + bx lr +_02025F24: + add r4, r4, #0x1 + cmp r4, #0xf + blt _02025F16 + mov r0, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02025F30 +FUN_02025F30: ; 0x02025F30 + sub r1, r1, #0x1 + cmp r1, #0xf + bge _02025F40 + add r1, r0, r1 + mov r0, #0x9a + mov r2, #0x0 + lsl r0, r0, #0x4 + strb r2, [r1, r0] +_02025F40: + bx lr + .balign 4 + + thumb_func_start FUN_02025F44 +FUN_02025F44: ; 0x02025F44 + mov r1, #0x9a + lsl r1, r1, #0x4 + add r0, r0, r1 + ldr r3, _02025F54 ; =MI_CpuFill8 + mov r1, #0x0 + mov r2, #0xf + bx r3 + nop +_02025F54: .word MI_CpuFill8 + + thumb_func_start FUN_02025F58 +FUN_02025F58: ; 0x02025F58 + push {r4-r7} + mov r6, #0x9a + lsl r6, r6, #0x4 + mov r4, #0x0 + add r1, r1, #0x1 + add r7, r6, #0x0 +_02025F64: + add r3, r0, r4 + ldrb r5, [r3, r7] + cmp r5, r1 + ble _02025F76 + mov r5, #0x9a + lsl r5, r5, #0x4 + ldrb r5, [r3, r5] + add r5, r5, r2 + strb r5, [r3, r6] +_02025F76: + add r4, r4, #0x1 + cmp r4, #0xf + blt _02025F64 + pop {r4-r7} + bx lr + + thumb_func_start FUN_02025F80 +FUN_02025F80: ; 0x02025F80 + mov r1, #0x9 + mov r3, #0x0 + lsl r1, r1, #0x8 +_02025F86: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + beq _02025F94 + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02025F86 +_02025F94: + add r0, r3, #0x0 + bx lr + + thumb_func_start FUN_02025F98 +FUN_02025F98: ; 0x02025F98 + add r1, r0, r1 + mov r0, #0x9 + lsl r0, r0, #0x8 + ldrb r0, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02025FA4 +FUN_02025FA4: ; 0x02025FA4 + push {r3-r6} + mov r2, #0x9 + add r3, r0, r1 + lsl r2, r2, #0x8 + ldrb r2, [r3, r2] + cmp r1, #0x27 + bge _02025FC2 + ldr r3, _02025FD0 ; =0x00000901 + sub r4, r3, #0x1 +_02025FB6: + add r6, r0, r1 + ldrb r5, [r6, r3] + add r1, r1, #0x1 + cmp r1, #0x27 + strb r5, [r6, r4] + blt _02025FB6 +_02025FC2: + ldr r1, _02025FD4 ; =0x00000927 + mov r3, #0x0 + strb r3, [r0, r1] + add r0, r2, #0x0 + pop {r3-r6} + bx lr + nop +_02025FD0: .word 0x00000901 +_02025FD4: .word 0x00000927 + + thumb_func_start FUN_02025FD8 +FUN_02025FD8: ; 0x02025FD8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020259E0 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02025FF6 + add r1, r5, r0 + mov r0, #0x9 + lsl r0, r0, #0x8 + strb r4, [r1, r0] + mov r0, #0x1 + pop {r3-r5, pc} +_02025FF6: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02025FFC +FUN_02025FFC: ; 0x02025FFC + push {r3-r7, lr} + sub sp, #0x30 + add r5, r0, #0x0 + mov r0, #0x9 + lsl r0, r0, #0x8 + str r1, [sp, #0x4] + str r2, [sp, #0x0] + add r0, r5, r0 + add r1, sp, #0x8 + mov r2, #0x28 + mov r4, #0x0 + blx MI_CpuCopy8 + ldr r2, [sp, #0x4] + add r1, sp, #0x8 + add r0, r4, #0x0 + add r7, r1, r2 +_0202601E: + ldr r2, [sp, #0x4] + cmp r0, r2 + beq _02026030 + ldrb r6, [r1, #0x0] + mov r2, #0x9 + add r3, r5, r4 + lsl r2, r2, #0x8 + strb r6, [r3, r2] + add r4, r4, #0x1 +_02026030: + ldr r2, [sp, #0x0] + cmp r0, r2 + bne _02026042 + ldrb r6, [r7, #0x0] + mov r2, #0x9 + add r3, r5, r4 + lsl r2, r2, #0x8 + strb r6, [r3, r2] + add r4, r4, #0x1 +_02026042: + add r0, r0, #0x1 + add r1, r1, #0x1 + cmp r0, #0x28 + blt _0202601E + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02026050 +FUN_02026050: ; 0x02026050 + mov r1, #0x95 + mov r3, #0x0 + lsl r1, r1, #0x4 +_02026056: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + beq _02026064 + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02026056 +_02026064: + add r0, r3, #0x0 + bx lr + + thumb_func_start FUN_02026068 +FUN_02026068: ; 0x02026068 + add r1, r0, r1 + mov r0, #0x95 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02026074 +FUN_02026074: ; 0x02026074 + add r1, r0, r1 + ldr r0, _0202607C ; =0x00000978 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_0202607C: .word 0x00000978 + + thumb_func_start FUN_02026080 +FUN_02026080: ; 0x02026080 + push {r4-r7} + add r2, r0, #0x0 + mov r0, #0x95 + add r3, r2, r1 + lsl r0, r0, #0x4 + ldrb r0, [r3, r0] + cmp r1, #0x27 + mov r12, r0 + bge _020260AE + ldr r7, _020260BC ; =0x00000951 + add r4, r7, #0x0 + add r5, r7, #0x0 + sub r3, r7, #0x1 + add r4, #0x28 + add r5, #0x27 +_0202609E: + add r0, r2, r1 + ldrb r6, [r0, r7] + add r1, r1, #0x1 + cmp r1, #0x27 + strb r6, [r0, r3] + ldrb r6, [r0, r4] + strb r6, [r0, r5] + blt _0202609E +_020260AE: + ldr r0, _020260C0 ; =0x00000977 + mov r1, #0x0 + strb r1, [r2, r0] + mov r0, r12 + pop {r4-r7} + bx lr + nop +_020260BC: .word 0x00000951 +_020260C0: .word 0x00000977 + + thumb_func_start FUN_020260C4 +FUN_020260C4: ; 0x020260C4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02025A00 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _020260E8 + add r1, r5, r0 + mov r0, #0x95 + lsl r0, r0, #0x4 + strb r4, [r1, r0] + add r0, #0x28 + strb r6, [r1, r0] + mov r0, #0x1 + pop {r4-r6, pc} +_020260E8: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020260EC +FUN_020260EC: ; 0x020260EC + push {r4-r7, lr} + sub sp, #0x5c + add r7, r0, #0x0 + mov r0, #0x95 + lsl r0, r0, #0x4 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r0, r7, r0 + add r1, sp, #0x34 + mov r2, #0x28 + mov r4, #0x0 + blx MI_CpuCopy8 + ldr r0, _02026168 ; =0x00000978 + add r1, sp, #0xc + add r0, r7, r0 + mov r2, #0x28 + blx MI_CpuCopy8 + ldr r3, [sp, #0x0] + add r1, sp, #0x34 + add r3, r1, r3 + mov r12, r3 + ldr r3, [sp, #0x0] + add r2, sp, #0xc + add r3, r2, r3 + add r0, r4, #0x0 + str r3, [sp, #0x8] +_02026124: + ldr r3, [sp, #0x0] + cmp r0, r3 + beq _0202613C + ldrb r5, [r1, #0x0] + mov r3, #0x95 + add r6, r7, r4 + lsl r3, r3, #0x4 + strb r5, [r6, r3] + ldrb r5, [r2, #0x0] + add r3, #0x28 + add r4, r4, #0x1 + strb r5, [r6, r3] +_0202613C: + ldr r3, [sp, #0x4] + cmp r0, r3 + bne _02026158 + mov r3, r12 + ldrb r5, [r3, #0x0] + mov r3, #0x95 + add r6, r7, r4 + lsl r3, r3, #0x4 + strb r5, [r6, r3] + ldr r3, [sp, #0x8] + add r4, r4, #0x1 + ldrb r5, [r3, #0x0] + ldr r3, _02026168 ; =0x00000978 + strb r5, [r6, r3] +_02026158: + add r0, r0, #0x1 + add r1, r1, #0x1 + add r2, r2, #0x1 + cmp r0, #0x28 + blt _02026124 + add sp, #0x5c + pop {r4-r7, pc} + nop +_02026168: .word 0x00000978 + + thumb_func_start FUN_0202616C +FUN_0202616C: ; 0x0202616C + ldr r1, _02026184 ; =0x00000928 + mov r3, #0x0 +_02026170: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + beq _0202617E + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02026170 +_0202617E: + add r0, r3, #0x0 + bx lr + nop +_02026184: .word 0x00000928 + + thumb_func_start FUN_02026188 +FUN_02026188: ; 0x02026188 + add r1, r0, r1 + ldr r0, _02026190 ; =0x00000928 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_02026190: .word 0x00000928 + + thumb_func_start FUN_02026194 +FUN_02026194: ; 0x02026194 + push {r3-r6} + ldr r2, _020261BC ; =0x00000928 + add r3, r0, r1 + ldrb r2, [r3, r2] + cmp r1, #0x27 + bge _020261B0 + ldr r3, _020261C0 ; =0x00000929 + sub r4, r3, #0x1 +_020261A4: + add r6, r0, r1 + ldrb r5, [r6, r3] + add r1, r1, #0x1 + cmp r1, #0x27 + strb r5, [r6, r4] + blt _020261A4 +_020261B0: + ldr r1, _020261C4 ; =0x0000094F + mov r3, #0x0 + strb r3, [r0, r1] + add r0, r2, #0x0 + pop {r3-r6} + bx lr + .balign 4 +_020261BC: .word 0x00000928 +_020261C0: .word 0x00000929 +_020261C4: .word 0x0000094F + + thumb_func_start FUN_020261C8 +FUN_020261C8: ; 0x020261C8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02025A20 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _020261E4 + add r1, r5, r0 + ldr r0, _020261E8 ; =0x00000928 + strb r4, [r1, r0] + mov r0, #0x1 + pop {r3-r5, pc} +_020261E4: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_020261E8: .word 0x00000928 + + thumb_func_start FUN_020261EC +FUN_020261EC: ; 0x020261EC + push {r3-r7, lr} + sub sp, #0x30 + add r5, r0, #0x0 + ldr r0, _02026238 ; =0x00000928 + str r1, [sp, #0x4] + str r2, [sp, #0x0] + add r0, r5, r0 + add r1, sp, #0x8 + mov r2, #0x28 + mov r4, #0x0 + blx MI_CpuCopy8 + ldr r2, [sp, #0x4] + add r1, sp, #0x8 + add r0, r4, #0x0 + add r7, r1, r2 +_0202620C: + ldr r2, [sp, #0x4] + cmp r0, r2 + beq _0202621C + ldrb r6, [r1, #0x0] + ldr r2, _02026238 ; =0x00000928 + add r3, r5, r4 + strb r6, [r3, r2] + add r4, r4, #0x1 +_0202621C: + ldr r2, [sp, #0x0] + cmp r0, r2 + bne _0202622C + ldrb r6, [r7, #0x0] + ldr r2, _02026238 ; =0x00000928 + add r3, r5, r4 + strb r6, [r3, r2] + add r4, r4, #0x1 +_0202622C: + add r0, r0, #0x1 + add r1, r1, #0x1 + cmp r0, #0x28 + blt _0202620C + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_02026238: .word 0x00000928 + + thumb_func_start FUN_0202623C +FUN_0202623C: ; 0x0202623C + ldr r1, _02026254 ; =0x000008D8 + mov r3, #0x0 +_02026240: + add r2, r0, r3 + ldrb r2, [r2, r1] + cmp r2, #0x0 + beq _0202624E + add r3, r3, #0x1 + cmp r3, #0x28 + blt _02026240 +_0202624E: + add r0, r3, #0x0 + bx lr + nop +_02026254: .word 0x000008D8 + + thumb_func_start FUN_02026258 +FUN_02026258: ; 0x02026258 + add r1, r0, r1 + ldr r0, _02026260 ; =0x000008D8 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_02026260: .word 0x000008D8 + + thumb_func_start FUN_02026264 +FUN_02026264: ; 0x02026264 + push {r3-r6} + ldr r2, _0202628C ; =0x000008D8 + add r3, r0, r1 + ldrb r2, [r3, r2] + cmp r1, #0x27 + bge _02026280 + ldr r3, _02026290 ; =0x000008D9 + sub r4, r3, #0x1 +_02026274: + add r6, r0, r1 + ldrb r5, [r6, r3] + add r1, r1, #0x1 + cmp r1, #0x27 + strb r5, [r6, r4] + blt _02026274 +_02026280: + ldr r1, _02026294 ; =0x000008FF + mov r3, #0x0 + strb r3, [r0, r1] + add r0, r2, #0x0 + pop {r3-r6} + bx lr + .balign 4 +_0202628C: .word 0x000008D8 +_02026290: .word 0x000008D9 +_02026294: .word 0x000008FF + + thumb_func_start FUN_02026298 +FUN_02026298: ; 0x02026298 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02025A40 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _020262B4 + add r1, r5, r0 + ldr r0, _020262B8 ; =0x000008D8 + strb r4, [r1, r0] + mov r0, #0x1 + pop {r3-r5, pc} +_020262B4: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_020262B8: .word 0x000008D8 + + thumb_func_start FUN_020262BC +FUN_020262BC: ; 0x020262BC + push {r3-r7, lr} + sub sp, #0x30 + add r5, r0, #0x0 + ldr r0, _02026308 ; =0x000008D8 + str r1, [sp, #0x4] + str r2, [sp, #0x0] + add r0, r5, r0 + add r1, sp, #0x8 + mov r2, #0x28 + mov r4, #0x0 + blx MI_CpuCopy8 + ldr r2, [sp, #0x4] + add r1, sp, #0x8 + add r0, r4, #0x0 + add r7, r1, r2 +_020262DC: + ldr r2, [sp, #0x4] + cmp r0, r2 + beq _020262EC + ldrb r6, [r1, #0x0] + ldr r2, _02026308 ; =0x000008D8 + add r3, r5, r4 + strb r6, [r3, r2] + add r4, r4, #0x1 +_020262EC: + ldr r2, [sp, #0x0] + cmp r0, r2 + bne _020262FC + ldrb r6, [r7, #0x0] + ldr r2, _02026308 ; =0x000008D8 + add r3, r5, r4 + strb r6, [r3, r2] + add r4, r4, #0x1 +_020262FC: + add r0, r0, #0x1 + add r1, r1, #0x1 + cmp r0, #0x28 + blt _020262DC + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_02026308: .word 0x000008D8 + + thumb_func_start FUN_0202630C +FUN_0202630C: ; 0x0202630C + push {r3-r7, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r6, r3, #0x0 + cmp r4, #0x40 + blt _0202631E + bl ErrorHandling +_0202631E: + ldr r0, _02026350 ; =0x0000010F + add r1, r5, r4 + strb r7, [r1, r0] + lsl r1, r4, #0x1 + add r1, r4, r1 + add r2, r0, #0x0 + add r1, r5, r1 + add r2, #0x40 + strb r6, [r1, r2] + mov r2, #0xf + lsl r2, r2, #0x8 + add r3, r6, #0x0 + and r3, r2 + asr r4, r3, #0x8 + ldr r3, [sp, #0x18] + and r2, r3 + asr r2, r2, #0x4 + add r4, r4, r2 + add r2, r0, #0x0 + add r2, #0x41 + strb r4, [r1, r2] + add r0, #0x42 + strb r3, [r1, r0] + pop {r3-r7, pc} + nop +_02026350: .word 0x0000010F + + thumb_func_start FUN_02026354 +FUN_02026354: ; 0x02026354 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x40 + blt _02026362 + bl ErrorHandling +_02026362: + ldr r0, _0202636C ; =0x0000010F + add r1, r5, r4 + ldrb r0, [r1, r0] + pop {r3-r5, pc} + nop +_0202636C: .word 0x0000010F + + thumb_func_start FUN_02026370 +FUN_02026370: ; 0x02026370 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x40 + blt _0202637E + bl ErrorHandling +_0202637E: + lsl r0, r4, #0x1 + add r0, r4, r0 + add r1, r5, r0 + ldr r0, _02026398 ; =0x0000014F + ldrb r2, [r1, r0] + add r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x8 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + pop {r3-r5, pc} + .balign 4 +_02026398: .word 0x0000014F + + thumb_func_start FUN_0202639C +FUN_0202639C: ; 0x0202639C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x40 + blt _020263AA + bl ErrorHandling +_020263AA: + lsl r0, r4, #0x1 + add r0, r4, r0 + add r1, r5, r0 + ldr r0, _020263C4 ; =0x00000151 + ldrb r2, [r1, r0] + sub r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x4 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + pop {r3-r5, pc} + .balign 4 +_020263C4: .word 0x00000151 + + thumb_func_start FUN_020263C8 +FUN_020263C8: ; 0x020263C8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x40 + blt _020263D6 + bl ErrorHandling +_020263D6: + ldr r0, _020263F0 ; =0x0000010F + mov r1, #0x0 + add r2, r5, r4 + strb r1, [r2, r0] + add r0, #0x40 + add r2, r5, r0 + lsl r0, r4, #0x1 + add r0, r4, r0 + add r0, r2, r0 + mov r2, #0x3 + blx MI_CpuFill8 + pop {r3-r5, pc} + .balign 4 +_020263F0: .word 0x0000010F + + thumb_func_start FUN_020263F4 +FUN_020263F4: ; 0x020263F4 + push {r3-r7, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r6, r3, #0x0 + cmp r4, #0x10 + blt _02026406 + bl ErrorHandling +_02026406: + lsl r2, r4, #0x1 + ldr r1, _02026440 ; =0x0000050C + add r0, r5, r4 + add r2, r4, r2 + add r4, r5, r2 + add r2, r1, #0x0 + mov r5, #0xf + strb r7, [r0, r1] + add r2, #0x10 + strb r6, [r4, r2] + lsl r5, r5, #0x8 + add r2, r6, #0x0 + and r2, r5 + asr r3, r2, #0x8 + ldr r2, [sp, #0x18] + and r5, r2 + asr r5, r5, #0x4 + add r5, r3, r5 + add r3, r1, #0x0 + add r3, #0x11 + strb r5, [r4, r3] + add r3, r1, #0x0 + add r3, #0x12 + strb r2, [r4, r3] + ldr r2, [sp, #0x1c] + add r1, #0x40 + strb r2, [r0, r1] + pop {r3-r7, pc} + nop +_02026440: .word 0x0000050C + + thumb_func_start FUN_02026444 +FUN_02026444: ; 0x02026444 + add r1, r0, r1 + ldr r0, _0202644C ; =0x0000050C + ldrb r0, [r1, r0] + bx lr + .balign 4 +_0202644C: .word 0x0000050C + + thumb_func_start FUN_02026450 +FUN_02026450: ; 0x02026450 + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r0, r1 + ldr r0, _0202646C ; =0x0000051C + ldrb r2, [r1, r0] + add r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x8 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + bx lr + nop +_0202646C: .word 0x0000051C + + thumb_func_start FUN_02026470 +FUN_02026470: ; 0x02026470 + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r0, r1 + ldr r0, _0202648C ; =0x0000051E + ldrb r2, [r1, r0] + sub r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x4 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + bx lr + nop +_0202648C: .word 0x0000051E + + thumb_func_start FUN_02026490 +FUN_02026490: ; 0x02026490 + add r1, r0, r1 + ldr r0, _02026498 ; =0x0000054C + ldrb r0, [r1, r0] + bx lr + .balign 4 +_02026498: .word 0x0000054C + + thumb_func_start FUN_0202649C +FUN_0202649C: ; 0x0202649C + push {r3-r7, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r3, #0x0 + cmp r4, #0x64 + blt _020264AE + bl ErrorHandling +_020264AE: + ldr r1, _020264E8 ; =0x0000055C + add r0, r5, r4 + strb r6, [r0, r1] + lsl r1, r4, #0x1 + add r1, r4, r1 + add r4, r5, r1 + mov r5, #0xf + lsl r5, r5, #0x8 + add r2, r7, #0x0 + and r2, r5 + asr r3, r2, #0x8 + ldr r2, [sp, #0x18] + ldr r1, _020264EC ; =0x00000688 + and r5, r2 + asr r5, r5, #0x4 + add r5, r3, r5 + strb r7, [r4, r1] + add r3, r1, #0x1 + strb r5, [r4, r3] + add r3, r1, #0x2 + strb r2, [r4, r3] + add r2, r1, #0x0 + ldr r3, [sp, #0x1c] + sub r2, #0x64 + strb r3, [r0, r2] + ldr r2, [sp, #0x20] + sub r1, #0xc8 + strb r2, [r0, r1] + pop {r3-r7, pc} + .balign 4 +_020264E8: .word 0x0000055C +_020264EC: .word 0x00000688 + + thumb_func_start FUN_020264F0 +FUN_020264F0: ; 0x020264F0 + add r1, r0, r1 + ldr r0, _020264F8 ; =0x0000055C + ldrb r0, [r1, r0] + bx lr + .balign 4 +_020264F8: .word 0x0000055C + + thumb_func_start FUN_020264FC +FUN_020264FC: ; 0x020264FC + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r0, r1 + ldr r0, _02026518 ; =0x00000688 + ldrb r2, [r1, r0] + add r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x8 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + bx lr + nop +_02026518: .word 0x00000688 + + thumb_func_start FUN_0202651C +FUN_0202651C: ; 0x0202651C + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r0, r1 + ldr r0, _02026538 ; =0x0000068A + ldrb r2, [r1, r0] + sub r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x4 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + bx lr + nop +_02026538: .word 0x0000068A + + thumb_func_start FUN_0202653C +FUN_0202653C: ; 0x0202653C + add r1, r0, r1 + ldr r0, _02026544 ; =0x00000624 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_02026544: .word 0x00000624 + + thumb_func_start FUN_02026548 +FUN_02026548: ; 0x02026548 + add r1, r0, r1 + mov r0, #0x17 + lsl r0, r0, #0x6 + ldrb r0, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02026554 +FUN_02026554: ; 0x02026554 + push {r4-r7} + ldr r3, _020265B0 ; =0x00000211 + add r7, r0, #0x0 + mov r12, r1 + mov r0, #0x0 + add r1, r7, #0x0 + sub r4, r3, #0x1 + sub r5, r3, #0x2 +_02026564: + ldrb r6, [r1, r5] + cmp r6, #0x0 + bne _020265A0 + ldrb r6, [r1, r4] + cmp r6, #0x0 + bne _020265A0 + ldrb r6, [r1, r3] + cmp r6, #0x0 + bne _020265A0 + lsl r1, r0, #0x1 + add r1, r0, r1 + mov r5, #0xf + ldr r4, _020265B4 ; =0x0000020F + add r1, r7, r1 + mov r3, r12 + strb r3, [r1, r4] + lsl r5, r5, #0x8 + mov r3, r12 + and r3, r5 + asr r6, r3, #0x8 + add r3, r2, #0x0 + and r3, r5 + asr r3, r3, #0x4 + add r5, r6, r3 + add r3, r4, #0x1 + strb r5, [r1, r3] + add r3, r4, #0x2 + strb r2, [r1, r3] + pop {r4-r7} + bx lr +_020265A0: + add r0, r0, #0x1 + add r1, r1, #0x3 + cmp r0, #0xff + blt _02026564 + mov r0, #0x0 + pop {r4-r7} + bx lr + nop +_020265B0: .word 0x00000211 +_020265B4: .word 0x0000020F + + thumb_func_start FUN_020265B8 +FUN_020265B8: ; 0x020265B8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0xff + blt _020265C6 + bl ErrorHandling +_020265C6: + ldr r0, _020265DC ; =0x0000020F + mov r2, #0x3 + add r1, r5, r0 + lsl r0, r4, #0x1 + add r0, r4, r0 + add r0, r1, r0 + mov r1, #0x0 + blx MI_CpuFill8 + pop {r3-r5, pc} + nop +_020265DC: .word 0x0000020F + + thumb_func_start FUN_020265E0 +FUN_020265E0: ; 0x020265E0 + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r0, r1 + ldr r0, _020265FC ; =0x0000020F + ldrb r2, [r1, r0] + add r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x8 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + bx lr + nop +_020265FC: .word 0x0000020F + + thumb_func_start FUN_02026600 +FUN_02026600: ; 0x02026600 + lsl r2, r1, #0x1 + add r1, r1, r2 + add r1, r0, r1 + ldr r0, _0202661C ; =0x00000211 + ldrb r2, [r1, r0] + sub r0, r0, #0x1 + ldrb r0, [r1, r0] + lsl r1, r0, #0x4 + mov r0, #0xf + lsl r0, r0, #0x8 + and r0, r1 + add r0, r2, r0 + bx lr + nop +_0202661C: .word 0x00000211 + + thumb_func_start FUN_02026620 +FUN_02026620: ; 0x02026620 + mov r1, #0x9b + lsl r1, r1, #0x4 + ldrb r0, [r0, r1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + bne _02026630 + mov r0, #0x1 + bx lr +_02026630: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02026634 +FUN_02026634: ; 0x02026634 + mov r2, #0x9b + lsl r2, r2, #0x4 + ldrb r3, [r0, r2] + mov r1, #0xf0 + bic r3, r1 + mov r1, #0x10 + orr r1, r3 + strb r1, [r0, r2] + bx lr + .balign 4 + + thumb_func_start FUN_02026648 +FUN_02026648: ; 0x02026648 + mov r1, #0x9b + lsl r1, r1, #0x4 + ldrb r0, [r0, r1] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bx lr + + thumb_func_start FUN_02026654 +FUN_02026654: ; 0x02026654 + mov r2, #0x9b + lsl r2, r2, #0x4 + ldrb r3, [r0, r2] + mov r1, #0xf + bic r3, r1 + strb r3, [r0, r2] + bx lr + .balign 4 + + thumb_func_start FUN_02026664 +FUN_02026664: ; 0x02026664 + push {r3-r4} + cmp r1, #0x2c + blt _0202667E + cmp r1, #0x3b + bgt _0202667E + ldr r2, _02026684 ; =0x0000080C + mov r3, #0x1 + sub r1, #0x2c + ldr r4, [r0, r2] + lsl r3, r1 + add r1, r4, #0x0 + orr r1, r3 + str r1, [r0, r2] +_0202667E: + pop {r3-r4} + bx lr + nop +_02026684: .word 0x0000080C + + thumb_func_start FUN_02026688 +FUN_02026688: ; 0x02026688 + cmp r1, #0x2c + blt _02026690 + cmp r1, #0x3b + ble _02026694 +_02026690: + mov r0, #0x1 + bx lr +_02026694: + ldr r2, _020266AC ; =0x0000080C + sub r1, #0x2c + ldr r3, [r0, r2] + mov r0, #0x1 + add r2, r0, #0x0 + lsl r2, r1 + add r1, r3, #0x0 + tst r1, r2 + beq _020266A8 + mov r0, #0x0 +_020266A8: + bx lr + nop +_020266AC: .word 0x0000080C + + thumb_func_start FUN_020266B0 +FUN_020266B0: ; 0x020266B0 + ldr r1, _020266C4 ; =0x000009AF + ldrb r2, [r0, r1] + cmp r2, #0x63 + blo _020266BE + mov r2, #0x0 + strb r2, [r0, r1] + bx lr +_020266BE: + add r2, r2, #0x1 + strb r2, [r0, r1] + bx lr + .balign 4 +_020266C4: .word 0x000009AF + + thumb_func_start FUN_020266C8 +FUN_020266C8: ; 0x020266C8 + ldr r1, _020266D0 ; =0x000009AF + ldrb r0, [r0, r1] + bx lr + nop +_020266D0: .word 0x000009AF + + thumb_func_start FUN_020266D4 +FUN_020266D4: ; 0x020266D4 + ldr r3, _020266DC ; =MI_CpuFill8 + mov r1, #0x0 + mov r2, #0x94 + bx r3 + .balign 4 +_020266DC: .word MI_CpuFill8 + + thumb_func_start FUN_020266E0 +FUN_020266E0: ; 0x020266E0 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x2d + blx MI_CpuFill8 + add r0, r4, #0x0 + add r0, #0x2d + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x8c + strh r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x8e + strh r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x90 + strb r1, [r0, #0x0] + add r4, #0x91 + strb r1, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02026714 +FUN_02026714: ; 0x02026714 + mov r1, #0x0 + add r0, #0x91 + strb r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202671C +FUN_0202671C: ; 0x0202671C + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + cmp r4, #0x20 + blt _0202672E + bl ErrorHandling +_0202672E: + cmp r6, #0x20 + blt _02026736 + bl ErrorHandling +_02026736: + ldr r0, [sp, #0x18] + cmp r0, #0x20 + blt _02026740 + bl ErrorHandling +_02026740: + cmp r5, #0x0 + bne _02026748 + bl ErrorHandling +_02026748: + cmp r4, #0x0 + beq _02026774 + cmp r4, #0x10 + bge _02026762 + sub r1, r4, #0x1 + lsl r0, r1, #0x1 + add r0, r1, r0 + strb r6, [r5, r0] + ldr r1, [sp, #0x18] + add r0, r5, r0 + strb r1, [r0, #0x1] + strb r7, [r0, #0x2] + pop {r3-r7, pc} +_02026762: + sub r4, #0x10 + lsl r2, r4, #0x1 + add r0, r5, r2 + add r0, #0x2d + strb r6, [r0, #0x0] + add r0, r5, r2 + ldr r1, [sp, #0x18] + add r0, #0x2e + strb r1, [r0, #0x0] +_02026774: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02026778 +FUN_02026778: ; 0x02026778 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_020267C4 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r3, r7, #0x0 + str r4, [sp, #0x0] + bl FUN_0202671C + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02026798 +FUN_02026798: ; 0x02026798 + add r0, #0x88 + ldr r0, [r0, #0x0] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + cmp r0, #0x32 + blt _020267A8 + mov r0, #0x5 + bx lr +_020267A8: + cmp r0, #0xa + blt _020267B0 + mov r0, #0x4 + bx lr +_020267B0: + cmp r0, #0x3 + blt _020267B8 + mov r0, #0x3 + bx lr +_020267B8: + cmp r0, #0x1 + blt _020267C0 + mov r0, #0x2 + bx lr +_020267C0: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020267C4 +FUN_020267C4: ; 0x020267C4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x20 + blt _020267D2 + bl ErrorHandling +_020267D2: + cmp r5, #0x0 + bne _020267DE + add r0, r4, #0x0 + bl FUN_02026798 + pop {r3-r5, pc} +_020267DE: + cmp r5, #0x10 + bge _020267EE + sub r1, r5, #0x1 + lsl r0, r1, #0x1 + add r0, r1, r0 + add r0, r4, r0 + ldrb r0, [r0, #0x2] + pop {r3-r5, pc} +_020267EE: + sub r5, #0x10 + lsl r1, r5, #0x1 + add r0, r4, r1 + add r0, #0x2d + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202680A + add r0, r4, r1 + add r0, #0x2e + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202680A + mov r0, #0x6 + pop {r3-r5, pc} +_0202680A: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02026810 +FUN_02026810: ; 0x02026810 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x20 + blt _0202681E + bl ErrorHandling +_0202681E: + cmp r5, #0x0 + bne _02026826 + mov r0, #0xf + pop {r3-r5, pc} +_02026826: + cmp r5, #0x10 + bge _02026834 + sub r1, r5, #0x1 + lsl r0, r1, #0x1 + add r0, r1, r0 + ldrb r0, [r4, r0] + pop {r3-r5, pc} +_02026834: + sub r5, #0x10 + lsl r0, r5, #0x1 + add r0, r4, r0 + add r0, #0x2d + ldrb r0, [r0, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_02026840 +FUN_02026840: ; 0x02026840 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x20 + blt _0202684E + bl ErrorHandling +_0202684E: + cmp r5, #0x0 + bne _02026856 + mov r0, #0xc + pop {r3-r5, pc} +_02026856: + cmp r5, #0x10 + bge _02026866 + sub r1, r5, #0x1 + lsl r0, r1, #0x1 + add r0, r1, r0 + add r0, r4, r0 + ldrb r0, [r0, #0x1] + pop {r3-r5, pc} +_02026866: + sub r5, #0x10 + lsl r0, r5, #0x1 + add r0, r4, r0 + add r0, #0x2e + ldrb r0, [r0, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02026874 +FUN_02026874: ; 0x02026874 + add r0, #0x88 + ldr r0, [r0, #0x0] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + cmp r0, #0x32 + blo _02026884 + mov r0, #0x0 + bx lr +_02026884: + cmp r0, #0xa + blo _0202688C + mov r0, #0x6 + bx lr +_0202688C: + cmp r0, #0x3 + blo _02026894 + mov r0, #0xb + bx lr +_02026894: + cmp r0, #0x1 + blo _0202689C + mov r0, #0xf + bx lr +_0202689C: + mov r0, #0x10 + bx lr + + thumb_func_start FUN_020268A0 +FUN_020268A0: ; 0x020268A0 + add r0, #0x88 + ldr r0, [r0, #0x0] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + cmp r0, #0x32 + blo _020268B0 + mov r0, #0xf + bx lr +_020268B0: + cmp r0, #0xa + blo _020268B8 + mov r0, #0xf + bx lr +_020268B8: + cmp r0, #0x3 + blo _020268C0 + mov r0, #0xf + bx lr +_020268C0: + cmp r0, #0x1 + blo _020268C8 + mov r0, #0xc + bx lr +_020268C8: + mov r0, #0xa + bx lr + + thumb_func_start FUN_020268CC +FUN_020268CC: ; 0x020268CC + ldr r0, [r0, #0x0] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_020268D4 +FUN_020268D4: ; 0x020268D4 + push {r3, lr} + bl FUN_020269A0 + cmp r0, #0x4 + bne _020268E2 + mov r0, #0x1 + pop {r3, pc} +_020268E2: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020268E8 +FUN_020268E8: ; 0x020268E8 + ldr r3, [r0, #0x0] + ldr r2, _020268F8 ; =0xFFF00000 + and r3, r2 + ldr r2, _020268FC ; =0x000FFFFF + and r1, r2 + orr r1, r3 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020268F8: .word 0xFFF00000 +_020268FC: .word 0x000FFFFF + + thumb_func_start FUN_02026900 +FUN_02026900: ; 0x02026900 + ldr r0, [r0, #0x4] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026908 +FUN_02026908: ; 0x02026908 + push {r3-r4} + ldr r2, [r0, #0x4] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _0202692C ; =0x000F423F + cmp r4, r1 + bhs _02026926 + ldr r1, _02026930 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026934 ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x4] +_02026926: + pop {r3-r4} + bx lr + nop +_0202692C: .word 0x000F423F +_02026930: .word 0xFFF00000 +_02026934: .word 0x000FFFFF + + thumb_func_start FUN_02026938 +FUN_02026938: ; 0x02026938 + ldr r0, [r0, #0x8] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026940 +FUN_02026940: ; 0x02026940 + push {r3-r4} + ldr r2, [r0, #0x8] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026964 ; =0x000F423F + cmp r4, r1 + bhs _0202695E + ldr r1, _02026968 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _0202696C ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x8] +_0202695E: + pop {r3-r4} + bx lr + nop +_02026964: .word 0x000F423F +_02026968: .word 0xFFF00000 +_0202696C: .word 0x000FFFFF + + thumb_func_start FUN_02026970 +FUN_02026970: ; 0x02026970 + push {r3-r4} + ldr r2, [r0, #0xc] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026994 ; =0x000F423F + cmp r4, r1 + bhs _0202698E + ldr r1, _02026998 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _0202699C ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0xc] +_0202698E: + pop {r3-r4} + bx lr + nop +_02026994: .word 0x000F423F +_02026998: .word 0xFFF00000 +_0202699C: .word 0x000FFFFF + + thumb_func_start FUN_020269A0 +FUN_020269A0: ; 0x020269A0 + ldr r0, [r0, #0x38] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + cmp r0, #0x32 + blt _020269AE + mov r0, #0x4 + bx lr +_020269AE: + cmp r0, #0xa + blt _020269B6 + mov r0, #0x3 + bx lr +_020269B6: + cmp r0, #0x3 + blt _020269BE + mov r0, #0x2 + bx lr +_020269BE: + cmp r0, #0x1 + blt _020269C6 + mov r0, #0x1 + bx lr +_020269C6: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_020269CC +FUN_020269CC: ; 0x020269CC + ldr r0, [r0, #0x38] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_020269D4 +FUN_020269D4: ; 0x020269D4 + push {r3-r4} + ldr r2, [r0, #0x38] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _020269F8 ; =0x000F423F + cmp r4, r1 + bhs _020269F2 + ldr r1, _020269FC ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026A00 ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x38] +_020269F2: + pop {r3-r4} + bx lr + nop +_020269F8: .word 0x000F423F +_020269FC: .word 0xFFF00000 +_02026A00: .word 0x000FFFFF + + thumb_func_start FUN_02026A04 +FUN_02026A04: ; 0x02026A04 + ldr r0, [r0, #0x10] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026A0C +FUN_02026A0C: ; 0x02026A0C + push {r4-r5} + cmp r1, #0x0 + ble _02026A2C + ldr r4, [r0, #0x10] + lsl r2, r4, #0xc + lsr r5, r2, #0xc + ldr r2, _02026A44 ; =0x000F423F + sub r3, r2, r1 + cmp r5, r3 + bls _02026A2C + ldr r1, _02026A48 ; =0xFFF00000 + and r1, r4 + orr r1, r2 + str r1, [r0, #0x10] + pop {r4-r5} + bx lr +_02026A2C: + ldr r3, [r0, #0x10] + ldr r2, _02026A48 ; =0xFFF00000 + and r2, r3 + lsl r3, r3, #0xc + lsr r3, r3, #0xc + add r3, r3, r1 + ldr r1, _02026A4C ; =0x000FFFFF + and r1, r3 + orr r1, r2 + str r1, [r0, #0x10] + pop {r4-r5} + bx lr + .balign 4 +_02026A44: .word 0x000F423F +_02026A48: .word 0xFFF00000 +_02026A4C: .word 0x000FFFFF + + thumb_func_start FUN_02026A50 +FUN_02026A50: ; 0x02026A50 + ldr r0, [r0, #0x14] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026A58 +FUN_02026A58: ; 0x02026A58 + push {r4-r5} + cmp r1, #0x0 + ble _02026A78 + ldr r4, [r0, #0x14] + lsl r2, r4, #0xc + lsr r5, r2, #0xc + ldr r2, _02026A90 ; =0x000F423F + sub r3, r2, r1 + cmp r5, r3 + bls _02026A78 + ldr r1, _02026A94 ; =0xFFF00000 + and r1, r4 + orr r1, r2 + str r1, [r0, #0x14] + pop {r4-r5} + bx lr +_02026A78: + ldr r3, [r0, #0x14] + ldr r2, _02026A94 ; =0xFFF00000 + and r2, r3 + lsl r3, r3, #0xc + lsr r3, r3, #0xc + add r3, r3, r1 + ldr r1, _02026A98 ; =0x000FFFFF + and r1, r3 + orr r1, r2 + str r1, [r0, #0x14] + pop {r4-r5} + bx lr + .balign 4 +_02026A90: .word 0x000F423F +_02026A94: .word 0xFFF00000 +_02026A98: .word 0x000FFFFF + + thumb_func_start FUN_02026A9C +FUN_02026A9C: ; 0x02026A9C + push {r4-r5} + cmp r1, #0x0 + ble _02026ABC + ldr r4, [r0, #0x18] + lsl r2, r4, #0xc + lsr r5, r2, #0xc + ldr r2, _02026AD4 ; =0x000F423F + sub r3, r2, r1 + cmp r5, r3 + bls _02026ABC + ldr r1, _02026AD8 ; =0xFFF00000 + and r1, r4 + orr r1, r2 + str r1, [r0, #0x18] + pop {r4-r5} + bx lr +_02026ABC: + ldr r3, [r0, #0x18] + ldr r2, _02026AD8 ; =0xFFF00000 + and r2, r3 + lsl r3, r3, #0xc + lsr r3, r3, #0xc + add r3, r3, r1 + ldr r1, _02026ADC ; =0x000FFFFF + and r1, r3 + orr r1, r2 + str r1, [r0, #0x18] + pop {r4-r5} + bx lr + .balign 4 +_02026AD4: .word 0x000F423F +_02026AD8: .word 0xFFF00000 +_02026ADC: .word 0x000FFFFF + + thumb_func_start FUN_02026AE0 +FUN_02026AE0: ; 0x02026AE0 + ldr r0, [r0, #0x1c] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026AE8 +FUN_02026AE8: ; 0x02026AE8 + push {r3-r4} + ldr r2, [r0, #0x1c] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026B0C ; =0x000F423F + cmp r4, r1 + bhs _02026B06 + ldr r1, _02026B10 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026B14 ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x1c] +_02026B06: + pop {r3-r4} + bx lr + nop +_02026B0C: .word 0x000F423F +_02026B10: .word 0xFFF00000 +_02026B14: .word 0x000FFFFF + + thumb_func_start FUN_02026B18 +FUN_02026B18: ; 0x02026B18 + ldr r0, [r0, #0x20] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026B20 +FUN_02026B20: ; 0x02026B20 + push {r3-r4} + ldr r2, [r0, #0x20] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026B44 ; =0x000F423F + cmp r4, r1 + bhs _02026B3E + ldr r1, _02026B48 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026B4C ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x20] +_02026B3E: + pop {r3-r4} + bx lr + nop +_02026B44: .word 0x000F423F +_02026B48: .word 0xFFF00000 +_02026B4C: .word 0x000FFFFF + + thumb_func_start FUN_02026B50 +FUN_02026B50: ; 0x02026B50 + ldr r0, [r0, #0x24] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026B58 +FUN_02026B58: ; 0x02026B58 + push {r3-r4} + ldr r2, [r0, #0x24] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026B7C ; =0x000F423F + cmp r4, r1 + bhs _02026B76 + ldr r1, _02026B80 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026B84 ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x24] +_02026B76: + pop {r3-r4} + bx lr + nop +_02026B7C: .word 0x000F423F +_02026B80: .word 0xFFF00000 +_02026B84: .word 0x000FFFFF + + thumb_func_start FUN_02026B88 +FUN_02026B88: ; 0x02026B88 + ldr r0, [r0, #0x28] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026B90 +FUN_02026B90: ; 0x02026B90 + push {r3-r4} + ldr r2, [r0, #0x28] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026BB4 ; =0x000F423F + cmp r4, r1 + bhs _02026BAE + ldr r1, _02026BB8 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026BBC ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x28] +_02026BAE: + pop {r3-r4} + bx lr + nop +_02026BB4: .word 0x000F423F +_02026BB8: .word 0xFFF00000 +_02026BBC: .word 0x000FFFFF + + thumb_func_start FUN_02026BC0 +FUN_02026BC0: ; 0x02026BC0 + ldr r0, [r0, #0x2c] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026BC8 +FUN_02026BC8: ; 0x02026BC8 + push {r3-r4} + ldr r2, [r0, #0x2c] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026BEC ; =0x000F423F + cmp r4, r1 + bhs _02026BE6 + ldr r1, _02026BF0 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026BF4 ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x2c] +_02026BE6: + pop {r3-r4} + bx lr + nop +_02026BEC: .word 0x000F423F +_02026BF0: .word 0xFFF00000 +_02026BF4: .word 0x000FFFFF + + thumb_func_start FUN_02026BF8 +FUN_02026BF8: ; 0x02026BF8 + ldr r0, [r0, #0x30] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026C00 +FUN_02026C00: ; 0x02026C00 + push {r3-r4} + ldr r2, [r0, #0x30] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026C24 ; =0x000F423F + cmp r4, r1 + bhs _02026C1E + ldr r1, _02026C28 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026C2C ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x30] +_02026C1E: + pop {r3-r4} + bx lr + nop +_02026C24: .word 0x000F423F +_02026C28: .word 0xFFF00000 +_02026C2C: .word 0x000FFFFF + + thumb_func_start FUN_02026C30 +FUN_02026C30: ; 0x02026C30 + ldr r0, [r0, #0x34] + lsl r0, r0, #0xc + lsr r0, r0, #0xc + bx lr + + thumb_func_start FUN_02026C38 +FUN_02026C38: ; 0x02026C38 + push {r3-r4} + ldr r2, [r0, #0x34] + lsl r1, r2, #0xc + lsr r4, r1, #0xc + ldr r1, _02026C5C ; =0x000F423F + cmp r4, r1 + bhs _02026C56 + ldr r1, _02026C60 ; =0xFFF00000 + add r3, r2, #0x0 + and r3, r1 + ldr r1, _02026C64 ; =0x000FFFFF + add r2, r4, #0x1 + and r1, r2 + orr r1, r3 + str r1, [r0, #0x34] +_02026C56: + pop {r3-r4} + bx lr + nop +_02026C5C: .word 0x000F423F +_02026C60: .word 0xFFF00000 +_02026C64: .word 0x000FFFFF + + thumb_func_start FUN_02026C68 +FUN_02026C68: ; 0x02026C68 + push {r3-r4} + add r4, r0, #0x0 + add r4, #0x8c + strh r1, [r4, #0x0] + add r1, r0, #0x0 + add r1, #0x8e + strh r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x90 + strb r3, [r1, #0x0] + mov r1, #0x1 + add r0, #0x91 + strb r1, [r0, #0x0] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02026C88 +FUN_02026C88: ; 0x02026C88 + add r0, #0x8c + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02026C90 +FUN_02026C90: ; 0x02026C90 + add r0, #0x8e + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02026C98 +FUN_02026C98: ; 0x02026C98 + add r0, #0x90 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02026CA0 +FUN_02026CA0: ; 0x02026CA0 + add r0, #0x91 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02026CA8 +FUN_02026CA8: ; 0x02026CA8 + ldr r3, _02026CB0 ; =FUN_02022610 + mov r1, #0xc + bx r3 + nop +_02026CB0: .word FUN_02022610 + + thumb_func_start FUN_02026CB4 +FUN_02026CB4: ; 0x02026CB4 + push {r3, lr} + mov r1, #0xc + bl FUN_02022610 + add r0, #0x50 + pop {r3, pc} + + thumb_func_start FUN_02026CC0 +FUN_02026CC0: ; 0x02026CC0 + add r0, #0x50 + bx lr + + thumb_func_start FUN_02026CC4 +FUN_02026CC4: ; 0x02026CC4 + ldr r3, _02026CCC ; =FUN_02022610 + mov r1, #0xc + bx r3 + nop +_02026CCC: .word FUN_02022610 + + thumb_func_start FUN_02026CD0 +FUN_02026CD0: ; 0x02026CD0 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + add r7, r3, #0x0 + bl FUN_020671BC + add r2, r5, #0x0 + strh r0, [r5, #0x8] + add r0, r4, #0x0 + mov r1, #0x74 + add r2, #0xa + bl FUN_020671BC + mov r1, #0x0 + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_020671BC + str r0, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020671BC + str r0, [r5, #0x4] + add r0, r4, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x33 + strb r0, [r1, #0x0] + add r0, r5, #0x0 + add r0, #0x31 + strb r6, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x32 + strb r7, [r0, #0x0] + add r1, sp, #0x8 + mov r0, #0x10 + ldrsb r0, [r1, r0] + add r5, #0x30 + strb r0, [r5, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02026D34 +FUN_02026D34: ; 0x02026D34 + push {r3-r6, lr} + sub sp, #0xc + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r4, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + bl FUN_021DB858 + add r0, r4, #0x0 + bl FUN_021DB7E8 + add r4, r0, #0x0 + mov r0, #0x1 + ldr r1, [sp, #0x4] + lsl r0, r0, #0x8 + cmp r1, r0 + blt _02026D5E + bl ErrorHandling +_02026D5E: + mov r0, #0x1 + ldr r1, [sp, #0x8] + lsl r0, r0, #0x8 + cmp r1, r0 + blt _02026D6C + bl ErrorHandling +_02026D6C: + mov r0, #0x7f + mvn r0, r0 + cmp r4, r0 + bgt _02026D78 + bl ErrorHandling +_02026D78: + lsl r0, r4, #0x18 + asr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02026CD0 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02026D98 +FUN_02026D98: ; 0x02026D98 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + add r1, r5, #0x0 + add r4, r2, #0x0 + add r1, #0x20 + mov r2, #0x8 + bl FUN_02021EF0 + add r5, #0x34 + strb r4, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_02026DB0 +FUN_02026DB0: ; 0x02026DB0 + strb r1, [r0, #0x0] + ldr r1, _02026DC0 ; =0xFFFFFFF0 + strb r2, [r0, #0x1] + strb r3, [r0, #0x2] + add r1, sp + ldrb r1, [r1, #0x10] + strb r1, [r0, #0x3] + bx lr + .balign 4 +_02026DC0: .word 0xFFFFFFF0 + + thumb_func_start FUN_02026DC4 +FUN_02026DC4: ; 0x02026DC4 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x3d + blo _02026DD4 + bl ErrorHandling +_02026DD4: + lsr r2, r4, #0x1f + lsl r1, r4, #0x1d + sub r1, r1, r2 + mov r0, #0x1d + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1a + lsr r1, r0, #0x18 + lsr r0, r4, #0x3 + lsl r0, r0, #0x18 + mov r2, #0xf + lsr r0, r0, #0x16 + lsl r2, r1 + ldr r3, [r5, r0] + mvn r2, r2 + and r2, r3 + str r2, [r5, r0] + add r2, r6, #0x0 + ldr r3, [r5, r0] + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + str r1, [r5, r0] + pop {r4-r6, pc} + + thumb_func_start FUN_02026E08 +FUN_02026E08: ; 0x02026E08 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3d + blo _02026E16 + bl ErrorHandling +_02026E16: + lsr r3, r4, #0x1f + lsl r2, r4, #0x1d + lsr r0, r4, #0x3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x16 + sub r2, r2, r3 + mov r1, #0x1d + ror r2, r1 + add r1, r3, r2 + lsl r1, r1, #0x18 + ldr r0, [r5, r0] + lsr r1, r1, #0x18 + lsl r1, r1, #0x1a + add r2, r0, #0x0 + lsr r1, r1, #0x18 + lsr r2, r1 + mov r0, #0xf + and r0, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x9 + bls _02026E44 + mov r0, #0x9 +_02026E44: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02026E48 +FUN_02026E48: ; 0x02026E48 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x2 + blo _02026E58 + bl ErrorHandling +_02026E58: + lsr r2, r6, #0x1f + lsl r1, r6, #0x1b + sub r1, r1, r2 + mov r0, #0x1b + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + lsr r0, r6, #0x5 + lsl r0, r0, #0x18 + mov r2, #0x1 + lsr r0, r0, #0x16 + lsl r2, r1 + ldr r3, [r5, r0] + mvn r2, r2 + and r2, r3 + str r2, [r5, r0] + add r2, r4, #0x0 + ldr r3, [r5, r0] + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + str r1, [r5, r0] + pop {r4-r6, pc} + + thumb_func_start FUN_02026E88 +FUN_02026E88: ; 0x02026E88 + lsr r2, r1, #0x5 + lsl r2, r2, #0x18 + lsr r2, r2, #0x16 + ldr r3, [r0, r2] + lsr r2, r1, #0x1f + lsl r1, r1, #0x1b + sub r1, r1, r2 + mov r0, #0x1b + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, r3, #0x0 + lsr r1, r0 + mov r0, #0x1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .balign 4 + + thumb_func_start FUN_02026EB0 +FUN_02026EB0: ; 0x02026EB0 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x12 + bls _02026EC0 + bl ErrorHandling +_02026EC0: + lsr r2, r6, #0x1f + lsl r1, r6, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1b + lsr r1, r0, #0x18 + lsr r0, r6, #0x2 + lsl r0, r0, #0x18 + mov r2, #0xff + lsr r0, r0, #0x16 + lsl r2, r1 + ldr r3, [r5, r0] + mvn r2, r2 + and r2, r3 + str r2, [r5, r0] + add r2, r4, #0x0 + ldr r3, [r5, r0] + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + str r1, [r5, r0] + pop {r4-r6, pc} + + thumb_func_start FUN_02026EF4 +FUN_02026EF4: ; 0x02026EF4 + lsr r2, r1, #0x2 + lsl r2, r2, #0x18 + lsr r2, r2, #0x16 + ldr r0, [r0, r2] + lsr r3, r1, #0x1f + lsl r2, r1, #0x1e + sub r2, r2, r3 + mov r1, #0x1e + ror r2, r1 + add r1, r3, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1b + lsr r1, r1, #0x18 + lsr r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start FUN_02026F18 +FUN_02026F18: ; 0x02026F18 + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_02026F20: + lsl r1, r4, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + bl FUN_02026EF4 + cmp r0, #0x12 + beq _02026F30 + add r5, r5, #0x1 +_02026F30: + add r4, r4, #0x1 + cmp r4, #0x12 + blt _02026F20 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + pop {r4-r6, pc} + + thumb_func_start FUN_02026F3C +FUN_02026F3C: ; 0x02026F3C + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0x2 + add r4, r2, #0x0 + bl FUN_02068E14 + mov r1, #0x80 + strb r1, [r5, #0x0] + mov r1, #0x28 + sub r1, r1, r0 + mov r0, #0x8d + sub r0, r0, r1 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x0] + add r0, #0x28 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02026F60 +FUN_02026F60: ; 0x02026F60 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r6, _02026FC8 ; =0x00001234 + mov r4, #0x0 + add r5, r7, #0x0 +_02026F6A: + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0x74 + blx Call_FillMemWithValue + str r6, [r5, #0x0] + add r4, r4, #0x1 + add r5, #0x74 + cmp r4, #0xb + blt _02026F6A + ldr r0, _02026FCC ; =0x000004FC + mov r6, #0x0 + add r4, r7, r0 + add r5, r7, #0x0 +_02026F86: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x98 + blx Call_FillMemWithValue + ldr r1, _02026FC8 ; =0x00001234 + ldr r0, _02026FCC ; =0x000004FC + add r6, r6, #0x1 + str r1, [r5, r0] + add r4, #0x98 + add r5, #0x98 + cmp r6, #0x5 + blt _02026F86 + ldr r0, _02026FD0 ; =0x000007F4 + mov r1, #0x0 + add r0, r7, r0 + mov r2, #0x40 + blx Call_FillMemWithValue + ldr r5, _02026FD4 ; =0x0000081C + mov r4, #0x0 + mov r6, #0x12 +_02026FB2: + lsl r2, r4, #0x18 + add r0, r7, r5 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + bl FUN_02026EB0 + add r4, r4, #0x1 + cmp r4, #0x12 + blt _02026FB2 + pop {r3-r7, pc} + nop +_02026FC8: .word 0x00001234 +_02026FCC: .word 0x000004FC +_02026FD0: .word 0x000007F4 +_02026FD4: .word 0x0000081C + + thumb_func_start FUN_02026FD8 +FUN_02026FD8: ; 0x02026FD8 + ldr r0, _02026FDC ; =0x00000834 + bx lr + .balign 4 +_02026FDC: .word 0x00000834 + + thumb_func_start FUN_02026FE0 +FUN_02026FE0: ; 0x02026FE0 + mov r0, #0x74 + bx lr + + thumb_func_start FUN_02026FE4 +FUN_02026FE4: ; 0x02026FE4 + mov r0, #0x98 + bx lr + + thumb_func_start FUN_02026FE8 +FUN_02026FE8: ; 0x02026FE8 + push {r4, lr} + mov r1, #0x98 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x98 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, _02027004 ; =0x00001234 + str r0, [r4, #0x0] + add r0, r4, #0x0 + pop {r4, pc} + nop +_02027004: .word 0x00001234 + + thumb_func_start FUN_02027008 +FUN_02027008: ; 0x02027008 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + cmp r6, #0xb + blt _02027016 + bl ErrorHandling +_02027016: + mov r0, #0x74 + add r4, r6, #0x0 + mul r4, r0 + ldr r1, [r5, r4] + ldr r0, _0202703C ; =0x00001234 + cmp r1, r0 + beq _0202702A + ldr r0, _02027040 ; =0x00002345 + cmp r1, r0 + bne _0202702E +_0202702A: + mov r0, #0x1 + b _02027030 +_0202702E: + mov r0, #0x0 +_02027030: + cmp r0, #0x0 + bne _02027038 + bl ErrorHandling +_02027038: + add r0, r5, r4 + pop {r4-r6, pc} + .balign 4 +_0202703C: .word 0x00001234 +_02027040: .word 0x00002345 + + thumb_func_start FUN_02027044 +FUN_02027044: ; 0x02027044 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + cmp r6, #0x5 + blt _02027052 + bl ErrorHandling +_02027052: + mov r0, #0x98 + add r4, r6, #0x0 + mul r4, r0 + ldr r0, _02027080 ; =0x000004FC + add r1, r5, r4 + ldr r1, [r1, r0] + ldr r0, _02027084 ; =0x00001234 + cmp r1, r0 + beq _0202706A + ldr r0, _02027088 ; =0x00002345 + cmp r1, r0 + bne _0202706E +_0202706A: + mov r0, #0x1 + b _02027070 +_0202706E: + mov r0, #0x0 +_02027070: + cmp r0, #0x0 + bne _02027078 + bl ErrorHandling +_02027078: + ldr r0, _02027080 ; =0x000004FC + add r0, r5, r0 + add r0, r0, r4 + pop {r4-r6, pc} + .balign 4 +_02027080: .word 0x000004FC +_02027084: .word 0x00001234 +_02027088: .word 0x00002345 + + thumb_func_start FUN_0202708C +FUN_0202708C: ; 0x0202708C + ldr r1, _02027094 ; =0x000007F4 + add r0, r0, r1 + bx lr + nop +_02027094: .word 0x000007F4 + + thumb_func_start FUN_02027098 +FUN_02027098: ; 0x02027098 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0xb + blt _020270A6 + bl ErrorHandling +_020270A6: + mov r0, #0x74 + mul r0, r4 + add r0, r5, r0 + bl FUN_0202729C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020270B4 +FUN_020270B4: ; 0x020270B4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x5 + blt _020270C2 + bl ErrorHandling +_020270C2: + ldr r0, _020270D4 ; =0x000004FC + add r1, r5, r0 + mov r0, #0x98 + mul r0, r4 + add r0, r1, r0 + bl FUN_020276D8 + pop {r3-r5, pc} + nop +_020270D4: .word 0x000004FC + + thumb_func_start FUN_020270D8 +FUN_020270D8: ; 0x020270D8 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r2, #0x0 + mov r4, #0x1 + bl FUN_02027114 + cmp r6, #0x3d + bhs _020270F2 + add r0, r0, r5 + cmp r0, #0x9 + bls _020270FA + mov r4, #0x0 + b _020270FA +_020270F2: + add r0, r0, r5 + cmp r0, #0x1 + bls _020270FA + mov r4, #0x0 +_020270FA: + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02027100 +FUN_02027100: ; 0x02027100 + push {r3, lr} + bl FUN_0202714C + cmp r0, #0x12 + beq _0202710E + mov r0, #0x1 + pop {r3, pc} +_0202710E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02027114 +FUN_02027114: ; 0x02027114 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x64 + blo _02027122 + bl ErrorHandling +_02027122: + cmp r5, #0x3d + bhs _02027132 + lsl r1, r5, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + bl FUN_02026E08 + pop {r3-r5, pc} +_02027132: + bhs _02027138 + bl ErrorHandling +_02027138: + sub r5, #0x3d + lsl r0, r5, #0x18 + lsr r1, r0, #0x18 + add r4, #0x20 + lsl r1, r1, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + bl FUN_02026E88 + pop {r3-r5, pc} + + thumb_func_start FUN_0202714C +FUN_0202714C: ; 0x0202714C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x12 + blo _0202715A + bl ErrorHandling +_0202715A: + add r5, #0x28 + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_02026EF4 + pop {r3-r5, pc} + + thumb_func_start FUN_02027168 +FUN_02027168: ; 0x02027168 + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_02027170: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02027114 + add r4, r4, #0x1 + add r5, r5, r0 + cmp r4, #0x64 + blt _02027170 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02027184 +FUN_02027184: ; 0x02027184 + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_0202718C: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202714C + cmp r0, #0x12 + beq _0202719A + add r5, r5, #0x1 +_0202719A: + add r4, r4, #0x1 + cmp r4, #0x12 + blt _0202718C + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020271A4 +FUN_020271A4: ; 0x020271A4 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x64 + blo _020271B4 + bl ErrorHandling +_020271B4: + cmp r4, #0x3d + bhs _020271DA + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_02026E08 + add r0, r0, r6 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, #0x9 + bls _020271CE + mov r1, #0x9 +_020271CE: + lsl r2, r4, #0x18 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02026DC4 + pop {r4-r6, pc} +_020271DA: + add r0, r5, #0x0 + lsl r1, r4, #0x18 + add r0, #0x20 + lsr r1, r1, #0x18 + bl FUN_02026E88 + add r0, r0, r6 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x1 + bls _020271F2 + mov r6, #0x1 +_020271F2: + cmp r4, #0x3d + bhs _020271FA + bl ErrorHandling +_020271FA: + sub r4, #0x3d + lsl r0, r4, #0x18 + lsr r2, r0, #0x18 + add r5, #0x20 + lsl r2, r2, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + bl FUN_02026E48 + pop {r4-r6, pc} + + thumb_func_start FUN_02027210 +FUN_02027210: ; 0x02027210 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x64 + blo _02027220 + bl ErrorHandling +_02027220: + cmp r4, #0x3d + bhs _02027248 + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_02026E08 + cmp r0, r6 + bls _0202723A + sub r0, r0, r6 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + b _0202723C +_0202723A: + mov r1, #0x0 +_0202723C: + lsl r2, r4, #0x18 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02026DC4 + pop {r4-r6, pc} +_02027248: + bhs _0202724E + bl ErrorHandling +_0202724E: + sub r4, #0x3d + lsl r0, r4, #0x18 + lsr r2, r0, #0x18 + add r5, #0x20 + lsl r2, r2, #0x18 + add r0, r5, #0x0 + mov r1, #0x0 + lsr r2, r2, #0x18 + bl FUN_02026E48 + pop {r4-r6, pc} + + thumb_func_start FUN_02027264 +FUN_02027264: ; 0x02027264 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x12 + blo _02027272 + bl ErrorHandling +_02027272: + add r0, r5, #0x0 + lsl r1, r4, #0x18 + add r0, #0x28 + lsr r1, r1, #0x18 + bl FUN_02026EF4 + cmp r0, #0x12 + bne _02027298 + add r0, r5, #0x0 + add r0, #0x28 + bl FUN_02026F18 + lsl r2, r4, #0x18 + add r5, #0x28 + add r1, r0, #0x0 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02026EB0 +_02027298: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202729C +FUN_0202729C: ; 0x0202729C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _020272CC ; =0x00001234 + cmp r1, r0 + beq _020272AE + ldr r0, _020272D0 ; =0x00002345 + cmp r1, r0 + bne _020272B2 +_020272AE: + mov r0, #0x1 + b _020272B4 +_020272B2: + mov r0, #0x0 +_020272B4: + cmp r0, #0x0 + bne _020272BC + bl ErrorHandling +_020272BC: + ldr r1, [r4, #0x0] + ldr r0, _020272D0 ; =0x00002345 + cmp r1, r0 + bne _020272C8 + mov r0, #0x1 + pop {r4, pc} +_020272C8: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_020272CC: .word 0x00001234 +_020272D0: .word 0x00002345 + + thumb_func_start FUN_020272D4 +FUN_020272D4: ; 0x020272D4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027304 ; =0x00001234 + cmp r1, r0 + beq _020272E6 + ldr r0, _02027308 ; =0x00002345 + cmp r1, r0 + bne _020272EA +_020272E6: + mov r0, #0x1 + b _020272EC +_020272EA: + mov r0, #0x0 +_020272EC: + cmp r0, #0x0 + bne _020272F4 + bl ErrorHandling +_020272F4: + ldr r0, _02027308 ; =0x00002345 + str r0, [r4, #0x0] + ldr r0, _0202730C ; =0x020ECAC4 + add r4, #0x71 + ldrb r0, [r0, #0x0] + strb r0, [r4, #0x0] + pop {r4, pc} + nop +_02027304: .word 0x00001234 +_02027308: .word 0x00002345 +_0202730C: .word 0x020ECAC4 + + thumb_func_start FUN_02027310 +FUN_02027310: ; 0x02027310 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027340 ; =0x00001234 + cmp r1, r0 + beq _02027322 + ldr r0, _02027344 ; =0x00002345 + cmp r1, r0 + bne _02027326 +_02027322: + mov r0, #0x1 + b _02027328 +_02027326: + mov r0, #0x0 +_02027328: + cmp r0, #0x0 + bne _02027330 + bl ErrorHandling +_02027330: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x74 + blx Call_FillMemWithValue + ldr r0, _02027340 ; =0x00001234 + str r0, [r4, #0x0] + pop {r4, pc} + .balign 4 +_02027340: .word 0x00001234 +_02027344: .word 0x00002345 + + thumb_func_start FUN_02027348 +FUN_02027348: ; 0x02027348 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027378 ; =0x00001234 + add r6, r2, #0x0 + cmp r1, r0 + beq _0202735E + ldr r0, _0202737C ; =0x00002345 + cmp r1, r0 + bne _02027362 +_0202735E: + mov r0, #0x1 + b _02027364 +_02027362: + mov r0, #0x0 +_02027364: + cmp r0, #0x0 + bne _0202736C + bl ErrorHandling +_0202736C: + add r0, r5, #0x4 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02026D34 + pop {r4-r6, pc} + .balign 4 +_02027378: .word 0x00001234 +_0202737C: .word 0x00002345 + + thumb_func_start FUN_02027380 +FUN_02027380: ; 0x02027380 + push {r4-r7, lr} + sub sp, #0x14 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x4] + add r6, r2, #0x0 + bl FUN_02013ECC + add r1, sp, #0xc + strh r0, [r1, #0x0] + lsr r0, r0, #0x10 + strh r0, [r1, #0x2] + ldrh r0, [r1, #0x0] + strh r0, [r1, #0x4] + ldrh r0, [r1, #0x2] + strh r0, [r1, #0x6] + ldr r0, [r4, #0x4] + bl FUN_02013F00 + str r0, [sp, #0x8] + cmp r6, #0xa + blt _020273B0 + bl ErrorHandling +_020273B0: + add r1, sp, #0xc + mov r0, #0x4 + ldrsh r1, [r1, r0] + add r0, #0xfc + cmp r1, r0 + blt _020273C0 + bl ErrorHandling +_020273C0: + add r1, sp, #0xc + mov r0, #0x6 + ldrsh r7, [r1, r0] + add r0, #0xfa + cmp r7, r0 + blt _020273D0 + bl ErrorHandling +_020273D0: + mov r1, #0x7f + ldr r0, [sp, #0x8] + mvn r1, r1 + cmp r0, r1 + bgt _020273DE + bl ErrorHandling +_020273DE: + mov r0, #0x1 + lsl r0, r6 + ldr r1, [r5, #0x3c] + str r0, [sp, #0x4] + tst r0, r1 + beq _020273EE + bl ErrorHandling +_020273EE: + ldr r1, [r5, #0x0] + ldr r0, _02027440 ; =0x00001234 + cmp r1, r0 + beq _020273FC + ldr r0, _02027444 ; =0x00002345 + cmp r1, r0 + bne _02027400 +_020273FC: + mov r0, #0x1 + b _02027402 +_02027400: + mov r0, #0x0 +_02027402: + cmp r0, #0x0 + bne _0202740A + bl ErrorHandling +_0202740A: + ldr r0, [sp, #0x8] + add r1, r5, #0x0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r3, sp, #0xc + mov r2, #0x4 + ldrsh r2, [r3, r2] + lsl r3, r7, #0x18 + add r1, #0x48 + lsl r0, r6, #0x2 + add r0, r1, r0 + ldr r1, [r4, #0x0] + lsl r2, r2, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02026DB0 + ldr r1, [r5, #0x3c] + ldr r0, [sp, #0x4] + orr r0, r1 + str r0, [r5, #0x3c] + add sp, #0x14 + pop {r4-r7, pc} + nop +_02027440: .word 0x00001234 +_02027444: .word 0x00002345 + + thumb_func_start FUN_02027448 +FUN_02027448: ; 0x02027448 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027470 ; =0x00001234 + cmp r1, r0 + beq _0202745C + ldr r0, _02027474 ; =0x00002345 + cmp r1, r0 + bne _02027460 +_0202745C: + mov r0, #0x1 + b _02027462 +_02027460: + mov r0, #0x0 +_02027462: + cmp r0, #0x0 + bne _0202746A + bl ErrorHandling +_0202746A: + add r5, #0x70 + strb r4, [r5, #0x0] + pop {r3-r5, pc} + .balign 4 +_02027470: .word 0x00001234 +_02027474: .word 0x00002345 + + thumb_func_start FUN_02027478 +FUN_02027478: ; 0x02027478 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020274B0 ; =0x00001234 + cmp r1, r0 + beq _0202748C + ldr r0, _020274B4 ; =0x00002345 + cmp r1, r0 + bne _02027490 +_0202748C: + mov r0, #0x1 + b _02027492 +_02027490: + mov r0, #0x0 +_02027492: + cmp r0, #0x0 + bne _0202749A + bl ErrorHandling +_0202749A: + add r0, r5, #0x0 + add r0, #0x40 + bl FUN_02013724 + add r5, #0x40 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_02013998 + pop {r3-r5, pc} + .balign 4 +_020274B0: .word 0x00001234 +_020274B4: .word 0x00002345 + + thumb_func_start FUN_020274B8 +FUN_020274B8: ; 0x020274B8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020274E8 ; =0x00001234 + cmp r1, r0 + beq _020274CC + ldr r0, _020274EC ; =0x00002345 + cmp r1, r0 + bne _020274D0 +_020274CC: + mov r0, #0x1 + b _020274D2 +_020274D0: + mov r0, #0x0 +_020274D2: + cmp r0, #0x0 + bne _020274DA + bl ErrorHandling +_020274DA: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x74 + blx memcpy + pop {r3-r5, pc} + nop +_020274E8: .word 0x00001234 +_020274EC: .word 0x00002345 + + thumb_func_start FUN_020274F0 +FUN_020274F0: ; 0x020274F0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027520 ; =0x00001234 + add r6, r2, #0x0 + cmp r1, r0 + beq _02027506 + ldr r0, _02027524 ; =0x00002345 + cmp r1, r0 + bne _0202750A +_02027506: + mov r0, #0x1 + b _0202750C +_0202750A: + mov r0, #0x0 +_0202750C: + cmp r0, #0x0 + bne _02027514 + bl ErrorHandling +_02027514: + add r0, r5, #0x4 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02026D98 + pop {r4-r6, pc} + .balign 4 +_02027520: .word 0x00001234 +_02027524: .word 0x00002345 + + thumb_func_start FUN_02027528 +FUN_02027528: ; 0x02027528 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0xa + blt _02027536 + bl ErrorHandling +_02027536: + ldr r1, [r5, #0x0] + ldr r0, _0202755C ; =0x00001234 + cmp r1, r0 + beq _02027544 + ldr r0, _02027560 ; =0x00002345 + cmp r1, r0 + bne _02027548 +_02027544: + mov r0, #0x1 + b _0202754A +_02027548: + mov r0, #0x0 +_0202754A: + cmp r0, #0x0 + bne _02027552 + bl ErrorHandling +_02027552: + mov r0, #0x1 + ldr r1, [r5, #0x3c] + lsl r0, r4 + and r0, r1 + pop {r3-r5, pc} + .balign 4 +_0202755C: .word 0x00001234 +_02027560: .word 0x00002345 + + thumb_func_start FUN_02027564 +FUN_02027564: ; 0x02027564 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027588 ; =0x00001234 + cmp r1, r0 + beq _02027576 + ldr r0, _0202758C ; =0x00002345 + cmp r1, r0 + bne _0202757A +_02027576: + mov r0, #0x1 + b _0202757C +_0202757A: + mov r0, #0x0 +_0202757C: + cmp r0, #0x0 + bne _02027584 + bl ErrorHandling +_02027584: + add r0, r4, #0x4 + pop {r4, pc} + .balign 4 +_02027588: .word 0x00001234 +_0202758C: .word 0x00002345 + + thumb_func_start FUN_02027590 +FUN_02027590: ; 0x02027590 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0xa + blt _0202759E + bl ErrorHandling +_0202759E: + mov r0, #0x1 + ldr r1, [r5, #0x3c] + lsl r0, r4 + tst r0, r1 + bne _020275AC + bl ErrorHandling +_020275AC: + ldr r1, [r5, #0x0] + ldr r0, _020275D0 ; =0x00001234 + cmp r1, r0 + beq _020275BA + ldr r0, _020275D4 ; =0x00002345 + cmp r1, r0 + bne _020275BE +_020275BA: + mov r0, #0x1 + b _020275C0 +_020275BE: + mov r0, #0x0 +_020275C0: + cmp r0, #0x0 + bne _020275C8 + bl ErrorHandling +_020275C8: + add r5, #0x48 + lsl r0, r4, #0x2 + add r0, r5, r0 + pop {r3-r5, pc} + .balign 4 +_020275D0: .word 0x00001234 +_020275D4: .word 0x00002345 + + thumb_func_start FUN_020275D8 +FUN_020275D8: ; 0x020275D8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027600 ; =0x00001234 + cmp r1, r0 + beq _020275EA + ldr r0, _02027604 ; =0x00002345 + cmp r1, r0 + bne _020275EE +_020275EA: + mov r0, #0x1 + b _020275F0 +_020275EE: + mov r0, #0x0 +_020275F0: + cmp r0, #0x0 + bne _020275F8 + bl ErrorHandling +_020275F8: + add r0, r4, #0x4 + bl FUN_02027C84 + pop {r4, pc} + .balign 4 +_02027600: .word 0x00001234 +_02027604: .word 0x00002345 + + thumb_func_start FUN_02027608 +FUN_02027608: ; 0x02027608 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027634 ; =0x00001234 + cmp r1, r0 + beq _0202761C + ldr r0, _02027638 ; =0x00002345 + cmp r1, r0 + bne _02027620 +_0202761C: + mov r0, #0x1 + b _02027622 +_02027620: + mov r0, #0x0 +_02027622: + cmp r0, #0x0 + bne _0202762A + bl ErrorHandling +_0202762A: + add r0, r5, #0x4 + add r1, r4, #0x0 + bl FUN_02027C88 + pop {r3-r5, pc} + .balign 4 +_02027634: .word 0x00001234 +_02027638: .word 0x00002345 + + thumb_func_start FUN_0202763C +FUN_0202763C: ; 0x0202763C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027664 ; =0x00001234 + cmp r1, r0 + beq _0202764E + ldr r0, _02027668 ; =0x00002345 + cmp r1, r0 + bne _02027652 +_0202764E: + mov r0, #0x1 + b _02027654 +_02027652: + mov r0, #0x0 +_02027654: + cmp r0, #0x0 + bne _0202765C + bl ErrorHandling +_0202765C: + add r0, r4, #0x4 + bl FUN_02027C98 + pop {r4, pc} + .balign 4 +_02027664: .word 0x00001234 +_02027668: .word 0x00002345 + + thumb_func_start FUN_0202766C +FUN_0202766C: ; 0x0202766C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027694 ; =0x00001234 + cmp r1, r0 + beq _0202767E + ldr r0, _02027698 ; =0x00002345 + cmp r1, r0 + bne _02027682 +_0202767E: + mov r0, #0x1 + b _02027684 +_02027682: + mov r0, #0x0 +_02027684: + cmp r0, #0x0 + bne _0202768C + bl ErrorHandling +_0202768C: + add r4, #0x70 + ldrb r0, [r4, #0x0] + pop {r4, pc} + nop +_02027694: .word 0x00001234 +_02027698: .word 0x00002345 + + thumb_func_start FUN_0202769C +FUN_0202769C: ; 0x0202769C + ldr r3, _020276A4 ; =FUN_02013918 + add r0, #0x40 + mov r1, #0x0 + bx r3 + .balign 4 +_020276A4: .word FUN_02013918 + + thumb_func_start FUN_020276A8 +FUN_020276A8: ; 0x020276A8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _020276D0 ; =0x00001234 + cmp r1, r0 + beq _020276BA + ldr r0, _020276D4 ; =0x00002345 + cmp r1, r0 + bne _020276BE +_020276BA: + mov r0, #0x1 + b _020276C0 +_020276BE: + mov r0, #0x0 +_020276C0: + cmp r0, #0x0 + bne _020276C8 + bl ErrorHandling +_020276C8: + add r4, #0x71 + ldrb r0, [r4, #0x0] + pop {r4, pc} + nop +_020276D0: .word 0x00001234 +_020276D4: .word 0x00002345 + + thumb_func_start FUN_020276D8 +FUN_020276D8: ; 0x020276D8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027708 ; =0x00001234 + cmp r1, r0 + beq _020276EA + ldr r0, _0202770C ; =0x00002345 + cmp r1, r0 + bne _020276EE +_020276EA: + mov r0, #0x1 + b _020276F0 +_020276EE: + mov r0, #0x0 +_020276F0: + cmp r0, #0x0 + bne _020276F8 + bl ErrorHandling +_020276F8: + ldr r1, [r4, #0x0] + ldr r0, _0202770C ; =0x00002345 + cmp r1, r0 + bne _02027704 + mov r0, #0x1 + pop {r4, pc} +_02027704: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_02027708: .word 0x00001234 +_0202770C: .word 0x00002345 + + thumb_func_start FUN_02027710 +FUN_02027710: ; 0x02027710 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027738 ; =0x00001234 + cmp r1, r0 + beq _02027722 + ldr r0, _0202773C ; =0x00002345 + cmp r1, r0 + bne _02027726 +_02027722: + mov r0, #0x1 + b _02027728 +_02027726: + mov r0, #0x0 +_02027728: + cmp r0, #0x0 + bne _02027730 + bl ErrorHandling +_02027730: + ldr r0, _0202773C ; =0x00002345 + str r0, [r4, #0x0] + pop {r4, pc} + nop +_02027738: .word 0x00001234 +_0202773C: .word 0x00002345 + + thumb_func_start FUN_02027740 +FUN_02027740: ; 0x02027740 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027770 ; =0x00001234 + cmp r1, r0 + beq _02027752 + ldr r0, _02027774 ; =0x00002345 + cmp r1, r0 + bne _02027756 +_02027752: + mov r0, #0x1 + b _02027758 +_02027756: + mov r0, #0x0 +_02027758: + cmp r0, #0x0 + bne _02027760 + bl ErrorHandling +_02027760: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x98 + blx Call_FillMemWithValue + ldr r0, _02027770 ; =0x00001234 + str r0, [r4, #0x0] + pop {r4, pc} + .balign 4 +_02027770: .word 0x00001234 +_02027774: .word 0x00002345 + + thumb_func_start FUN_02027778 +FUN_02027778: ; 0x02027778 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020277AC ; =0x00001234 + add r6, r2, #0x0 + cmp r1, r0 + beq _0202778E + ldr r0, _020277B0 ; =0x00002345 + cmp r1, r0 + bne _02027792 +_0202778E: + mov r0, #0x1 + b _02027794 +_02027792: + mov r0, #0x0 +_02027794: + cmp r0, #0x0 + bne _0202779C + bl ErrorHandling +_0202779C: + add r5, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02026D34 + pop {r4-r6, pc} + nop +_020277AC: .word 0x00001234 +_020277B0: .word 0x00002345 + + thumb_func_start FUN_020277B4 +FUN_020277B4: ; 0x020277B4 + push {r4-r7, lr} + sub sp, #0x14 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x4] + add r6, r2, #0x0 + bl FUN_02013ECC + add r1, sp, #0xc + strh r0, [r1, #0x0] + lsr r0, r0, #0x10 + strh r0, [r1, #0x2] + ldrh r0, [r1, #0x0] + strh r0, [r1, #0x4] + ldrh r0, [r1, #0x2] + strh r0, [r1, #0x6] + ldr r0, [r4, #0x4] + bl FUN_02013F00 + str r0, [sp, #0x8] + cmp r6, #0x14 + blt _020277E4 + bl ErrorHandling +_020277E4: + add r1, sp, #0xc + mov r0, #0x4 + ldrsh r1, [r1, r0] + add r0, #0xfc + cmp r1, r0 + blt _020277F4 + bl ErrorHandling +_020277F4: + add r1, sp, #0xc + mov r0, #0x6 + ldrsh r7, [r1, r0] + add r0, #0xfa + cmp r7, r0 + blt _02027804 + bl ErrorHandling +_02027804: + mov r1, #0x7f + ldr r0, [sp, #0x8] + mvn r1, r1 + cmp r0, r1 + bgt _02027812 + bl ErrorHandling +_02027812: + mov r0, #0x1 + lsl r0, r6 + ldr r1, [r5, #0x40] + str r0, [sp, #0x4] + tst r0, r1 + beq _02027822 + bl ErrorHandling +_02027822: + ldr r1, [r5, #0x0] + ldr r0, _02027874 ; =0x00001234 + cmp r1, r0 + beq _02027830 + ldr r0, _02027878 ; =0x00002345 + cmp r1, r0 + bne _02027834 +_02027830: + mov r0, #0x1 + b _02027836 +_02027834: + mov r0, #0x0 +_02027836: + cmp r0, #0x0 + bne _0202783E + bl ErrorHandling +_0202783E: + ldr r0, [sp, #0x8] + add r1, r5, #0x0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r3, sp, #0xc + mov r2, #0x4 + ldrsh r2, [r3, r2] + lsl r3, r7, #0x18 + add r1, #0x44 + lsl r0, r6, #0x2 + add r0, r1, r0 + ldr r1, [r4, #0x0] + lsl r2, r2, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02026DB0 + ldr r1, [r5, #0x40] + ldr r0, [sp, #0x4] + orr r0, r1 + str r0, [r5, #0x40] + add sp, #0x14 + pop {r4-r7, pc} + nop +_02027874: .word 0x00001234 +_02027878: .word 0x00002345 + + thumb_func_start FUN_0202787C +FUN_0202787C: ; 0x0202787C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020278A4 ; =0x00001234 + cmp r1, r0 + beq _02027890 + ldr r0, _020278A8 ; =0x00002345 + cmp r1, r0 + bne _02027894 +_02027890: + mov r0, #0x1 + b _02027896 +_02027894: + mov r0, #0x0 +_02027896: + cmp r0, #0x0 + bne _0202789E + bl ErrorHandling +_0202789E: + add r5, #0x94 + strb r4, [r5, #0x0] + pop {r3-r5, pc} + .balign 4 +_020278A4: .word 0x00001234 +_020278A8: .word 0x00002345 + + thumb_func_start FUN_020278AC +FUN_020278AC: ; 0x020278AC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _020278D4 ; =0x00001234 + cmp r1, r0 + beq _020278C0 + ldr r0, _020278D8 ; =0x00002345 + cmp r1, r0 + bne _020278C4 +_020278C0: + mov r0, #0x1 + b _020278C6 +_020278C4: + mov r0, #0x0 +_020278C6: + cmp r0, #0x0 + bne _020278CE + bl ErrorHandling +_020278CE: + str r4, [r5, #0x4] + pop {r3-r5, pc} + nop +_020278D4: .word 0x00001234 +_020278D8: .word 0x00002345 + + thumb_func_start FUN_020278DC +FUN_020278DC: ; 0x020278DC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _0202790C ; =0x00001234 + cmp r1, r0 + beq _020278F0 + ldr r0, _02027910 ; =0x00002345 + cmp r1, r0 + bne _020278F4 +_020278F0: + mov r0, #0x1 + b _020278F6 +_020278F4: + mov r0, #0x0 +_020278F6: + cmp r0, #0x0 + bne _020278FE + bl ErrorHandling +_020278FE: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x98 + blx memcpy + pop {r3-r5, pc} + nop +_0202790C: .word 0x00001234 +_02027910: .word 0x00002345 + + thumb_func_start FUN_02027914 +FUN_02027914: ; 0x02027914 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _0202795C ; =0x00001234 + add r6, r2, #0x0 + cmp r1, r0 + beq _0202792C + ldr r0, _02027960 ; =0x00002345 + cmp r1, r0 + bne _02027930 +_0202792C: + mov r0, #0x1 + b _02027932 +_02027930: + mov r0, #0x0 +_02027932: + cmp r0, #0x0 + bne _0202793A + bl ErrorHandling +_0202793A: + add r1, sp, #0x4 + add r0, r4, #0x0 + add r1, #0x1 + add r2, sp, #0x4 + bl FUN_02026F3C + add r5, #0x8 + str r6, [sp, #0x0] + add r3, sp, #0x4 + ldrb r2, [r3, #0x1] + ldrb r3, [r3, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02026CD0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0202795C: .word 0x00001234 +_02027960: .word 0x00002345 + + thumb_func_start FUN_02027964 +FUN_02027964: ; 0x02027964 + push {r4-r7, lr} + sub sp, #0xc + str r3, [sp, #0x4] + add r6, r1, #0x0 + add r5, r0, #0x0 + add r7, r2, #0x0 + ldr r4, [sp, #0x24] + cmp r6, #0x14 + blo _0202797A + bl ErrorHandling +_0202797A: + cmp r7, #0x64 + blo _02027982 + bl ErrorHandling +_02027982: + mov r1, #0x1 + ldr r0, [sp, #0x4] + lsl r1, r1, #0x8 + cmp r0, r1 + blt _02027990 + bl ErrorHandling +_02027990: + add r0, sp, #0x10 + ldrb r1, [r0, #0x10] + mov r0, #0x1 + lsl r0, r0, #0x8 + cmp r1, r0 + blt _020279A0 + bl ErrorHandling +_020279A0: + mov r0, #0x7f + mvn r0, r0 + cmp r4, r0 + bgt _020279AC + bl ErrorHandling +_020279AC: + mov r0, #0x1 + lsl r0, r6 + ldr r1, [r5, #0x40] + str r0, [sp, #0x8] + tst r0, r1 + beq _020279BC + bl ErrorHandling +_020279BC: + ldr r1, [r5, #0x0] + ldr r0, _02027A0C ; =0x00001234 + cmp r1, r0 + beq _020279CA + ldr r0, _02027A10 ; =0x00002345 + cmp r1, r0 + bne _020279CE +_020279CA: + mov r0, #0x1 + b _020279D0 +_020279CE: + mov r0, #0x0 +_020279D0: + cmp r0, #0x0 + bne _020279D8 + bl ErrorHandling +_020279D8: + mov r0, #0x38 + ldrsb r0, [r5, r0] + cmp r0, r4 + blt _020279E6 + add r0, r0, #0x1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_020279E6: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + add r3, sp, #0x10 + add r1, r5, #0x0 + ldrb r3, [r3, #0x10] + add r1, #0x44 + lsl r0, r6, #0x2 + add r0, r1, r0 + ldr r2, [sp, #0x4] + add r1, r7, #0x0 + bl FUN_02026DB0 + ldr r1, [r5, #0x40] + ldr r0, [sp, #0x8] + orr r0, r1 + str r0, [r5, #0x40] + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02027A0C: .word 0x00001234 +_02027A10: .word 0x00002345 + + thumb_func_start FUN_02027A14 +FUN_02027A14: ; 0x02027A14 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x14 + blt _02027A22 + bl ErrorHandling +_02027A22: + ldr r1, [r5, #0x0] + ldr r0, _02027A50 ; =0x00001234 + cmp r1, r0 + beq _02027A30 + ldr r0, _02027A54 ; =0x00002345 + cmp r1, r0 + bne _02027A34 +_02027A30: + mov r0, #0x1 + b _02027A36 +_02027A34: + mov r0, #0x0 +_02027A36: + cmp r0, #0x0 + bne _02027A3E + bl ErrorHandling +_02027A3E: + mov r0, #0x1 + add r1, r0, #0x0 + ldr r2, [r5, #0x40] + lsl r1, r4 + tst r1, r2 + bne _02027A4C + mov r0, #0x0 +_02027A4C: + pop {r3-r5, pc} + nop +_02027A50: .word 0x00001234 +_02027A54: .word 0x00002345 + + thumb_func_start FUN_02027A58 +FUN_02027A58: ; 0x02027A58 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027A8C ; =0x00001234 + add r6, r2, #0x0 + cmp r1, r0 + beq _02027A6E + ldr r0, _02027A90 ; =0x00002345 + cmp r1, r0 + bne _02027A72 +_02027A6E: + mov r0, #0x1 + b _02027A74 +_02027A72: + mov r0, #0x0 +_02027A74: + cmp r0, #0x0 + bne _02027A7C + bl ErrorHandling +_02027A7C: + add r5, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02026D98 + pop {r4-r6, pc} + nop +_02027A8C: .word 0x00001234 +_02027A90: .word 0x00002345 + + thumb_func_start FUN_02027A94 +FUN_02027A94: ; 0x02027A94 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027ABC ; =0x00001234 + cmp r1, r0 + beq _02027AA6 + ldr r0, _02027AC0 ; =0x00002345 + cmp r1, r0 + bne _02027AAA +_02027AA6: + mov r0, #0x1 + b _02027AAC +_02027AAA: + mov r0, #0x0 +_02027AAC: + cmp r0, #0x0 + bne _02027AB4 + bl ErrorHandling +_02027AB4: + add r4, #0x8 + add r0, r4, #0x0 + pop {r4, pc} + nop +_02027ABC: .word 0x00001234 +_02027AC0: .word 0x00002345 + + thumb_func_start FUN_02027AC4 +FUN_02027AC4: ; 0x02027AC4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x14 + blt _02027AD2 + bl ErrorHandling +_02027AD2: + mov r0, #0x1 + ldr r1, [r5, #0x40] + lsl r0, r4 + tst r0, r1 + bne _02027AE0 + bl ErrorHandling +_02027AE0: + ldr r1, [r5, #0x0] + ldr r0, _02027B04 ; =0x00001234 + cmp r1, r0 + beq _02027AEE + ldr r0, _02027B08 ; =0x00002345 + cmp r1, r0 + bne _02027AF2 +_02027AEE: + mov r0, #0x1 + b _02027AF4 +_02027AF2: + mov r0, #0x0 +_02027AF4: + cmp r0, #0x0 + bne _02027AFC + bl ErrorHandling +_02027AFC: + add r5, #0x44 + lsl r0, r4, #0x2 + add r0, r5, r0 + pop {r3-r5, pc} + .balign 4 +_02027B04: .word 0x00001234 +_02027B08: .word 0x00002345 + + thumb_func_start FUN_02027B0C +FUN_02027B0C: ; 0x02027B0C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027B3C ; =0x00001234 + cmp r1, r0 + beq _02027B20 + ldr r0, _02027B40 ; =0x00002345 + cmp r1, r0 + bne _02027B24 +_02027B20: + mov r0, #0x1 + b _02027B26 +_02027B24: + mov r0, #0x0 +_02027B26: + cmp r0, #0x0 + bne _02027B2E + bl ErrorHandling +_02027B2E: + add r5, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02027C88 + pop {r3-r5, pc} + nop +_02027B3C: .word 0x00001234 +_02027B40: .word 0x00002345 + + thumb_func_start FUN_02027B44 +FUN_02027B44: ; 0x02027B44 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027B70 ; =0x00001234 + cmp r1, r0 + beq _02027B56 + ldr r0, _02027B74 ; =0x00002345 + cmp r1, r0 + bne _02027B5A +_02027B56: + mov r0, #0x1 + b _02027B5C +_02027B5A: + mov r0, #0x0 +_02027B5C: + cmp r0, #0x0 + bne _02027B64 + bl ErrorHandling +_02027B64: + add r4, #0x8 + add r0, r4, #0x0 + bl FUN_02027C98 + pop {r4, pc} + nop +_02027B70: .word 0x00001234 +_02027B74: .word 0x00002345 + + thumb_func_start FUN_02027B78 +FUN_02027B78: ; 0x02027B78 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x0] + ldr r0, _02027BD4 ; =0x00001234 + cmp r1, r0 + beq _02027B8E + ldr r0, _02027BD8 ; =0x00002345 + cmp r1, r0 + bne _02027B92 +_02027B8E: + mov r0, #0x1 + b _02027B94 +_02027B92: + mov r0, #0x0 +_02027B94: + cmp r0, #0x0 + bne _02027B9C + bl ErrorHandling +_02027B9C: + mov r1, #0x1 + str r1, [sp, #0x0] + ldr r0, [r5, #0x8] + mov r2, #0x0 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r5, #0xc] + add r3, r2, #0x0 + str r0, [sp, #0xc] + ldrh r1, [r5, #0x10] + add r0, r4, #0x0 + bl FUN_02066ACC + add r2, r5, #0x0 + add r0, r4, #0x0 + mov r1, #0x74 + add r2, #0x12 + bl FUN_02067830 + add r5, #0x3b + add r0, r4, #0x0 + mov r1, #0x70 + add r2, r5, #0x0 + bl FUN_02067830 + add sp, #0x10 + pop {r3-r5, pc} + nop +_02027BD4: .word 0x00001234 +_02027BD8: .word 0x00002345 + + thumb_func_start FUN_02027BDC +FUN_02027BDC: ; 0x02027BDC + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x14 + blt _02027BEA + bl ErrorHandling +_02027BEA: + mov r0, #0x1 + ldr r1, [r5, #0x40] + lsl r0, r4 + tst r0, r1 + bne _02027BF8 + bl ErrorHandling +_02027BF8: + ldr r1, [r5, #0x0] + ldr r0, _02027C20 ; =0x00001234 + cmp r1, r0 + beq _02027C06 + ldr r0, _02027C24 ; =0x00002345 + cmp r1, r0 + bne _02027C0A +_02027C06: + mov r0, #0x1 + b _02027C0C +_02027C0A: + mov r0, #0x0 +_02027C0C: + cmp r0, #0x0 + bne _02027C14 + bl ErrorHandling +_02027C14: + add r5, #0x44 + lsl r0, r4, #0x2 + add r0, r5, r0 + bl FUN_02027CF8 + pop {r3-r5, pc} + .balign 4 +_02027C20: .word 0x00001234 +_02027C24: .word 0x00002345 + + thumb_func_start FUN_02027C28 +FUN_02027C28: ; 0x02027C28 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027C50 ; =0x00001234 + cmp r1, r0 + beq _02027C3A + ldr r0, _02027C54 ; =0x00002345 + cmp r1, r0 + bne _02027C3E +_02027C3A: + mov r0, #0x1 + b _02027C40 +_02027C3E: + mov r0, #0x0 +_02027C40: + cmp r0, #0x0 + bne _02027C48 + bl ErrorHandling +_02027C48: + add r4, #0x94 + ldrb r0, [r4, #0x0] + pop {r4, pc} + nop +_02027C50: .word 0x00001234 +_02027C54: .word 0x00002345 + + thumb_func_start FUN_02027C58 +FUN_02027C58: ; 0x02027C58 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02027C7C ; =0x00001234 + cmp r1, r0 + beq _02027C6A + ldr r0, _02027C80 ; =0x00002345 + cmp r1, r0 + bne _02027C6E +_02027C6A: + mov r0, #0x1 + b _02027C70 +_02027C6E: + mov r0, #0x0 +_02027C70: + cmp r0, #0x0 + bne _02027C78 + bl ErrorHandling +_02027C78: + ldr r0, [r4, #0x4] + pop {r4, pc} + .balign 4 +_02027C7C: .word 0x00001234 +_02027C80: .word 0x00002345 + + thumb_func_start FUN_02027C84 +FUN_02027C84: ; 0x02027C84 + ldrh r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_02027C88 +FUN_02027C88: ; 0x02027C88 + add r2, r0, #0x0 + ldr r3, _02027C94 ; =FUN_02021E28 + add r2, #0x20 + add r0, r1, #0x0 + add r1, r2, #0x0 + bx r3 + .balign 4 +_02027C94: .word FUN_02021E28 + + thumb_func_start FUN_02027C98 +FUN_02027C98: ; 0x02027C98 + add r0, #0x34 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02027CA0 +FUN_02027CA0: ; 0x02027CA0 + mov r1, #0x30 + ldrsb r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_02027CA8 +FUN_02027CA8: ; 0x02027CA8 + add r0, #0x31 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02027CB0 +FUN_02027CB0: ; 0x02027CB0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02027CB8 +FUN_02027CB8: ; 0x02027CB8 + push {r3-r5, lr} + sub sp, #0x10 + add r4, r1, #0x0 + mov r1, #0x1 + add r5, r0, #0x0 + str r1, [sp, #0x0] + ldr r0, [r5, #0x0] + mov r2, #0x0 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r5, #0x4] + add r3, r2, #0x0 + str r0, [sp, #0xc] + ldrh r1, [r5, #0x8] + add r0, r4, #0x0 + bl FUN_02066ACC + add r2, r5, #0x0 + add r0, r4, #0x0 + mov r1, #0x74 + add r2, #0xa + bl FUN_02067830 + add r5, #0x33 + add r0, r4, #0x0 + mov r1, #0x70 + add r2, r5, #0x0 + bl FUN_02067830 + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02027CF8 +FUN_02027CF8: ; 0x02027CF8 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02027CFC +FUN_02027CFC: ; 0x02027CFC + ldrb r0, [r0, #0x1] + bx lr + + thumb_func_start FUN_02027D00 +FUN_02027D00: ; 0x02027D00 + ldrb r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_02027D04 +FUN_02027D04: ; 0x02027D04 + mov r1, #0x3 + ldrsb r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_02027D0C +FUN_02027D0C: ; 0x02027D0C + push {r4-r7, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0xc + add r7, r0, #0x0 + mov r0, #0x1 + add r4, r1, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_0202729C + cmp r0, #0x1 + bne _02027D6A + ldr r1, _02027D78 ; =0xEDB88320 + add r0, sp, #0x4 + blx MATHi_CRC32InitTableRev + add r0, sp, #0x4 + add r1, r4, #0x0 + mov r2, #0x74 + blx MATH_CalcCRC32 + add r6, r0, #0x0 + mov r5, #0x0 +_02027D3C: + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_02027008 + add r4, r0, #0x0 + ldr r1, _02027D78 ; =0xEDB88320 + add r0, sp, #0x4 + blx MATHi_CRC32InitTableRev + add r0, sp, #0x4 + add r1, r4, #0x0 + mov r2, #0x74 + blx MATH_CalcCRC32 + cmp r0, r6 + bne _02027D62 + mov r0, #0x0 + str r0, [sp, #0x0] + b _02027D6E +_02027D62: + add r5, r5, #0x1 + cmp r5, #0xb + blt _02027D3C + b _02027D6E +_02027D6A: + mov r0, #0x0 + str r0, [sp, #0x0] +_02027D6E: + ldr r0, [sp, #0x0] + add sp, #0x1fc + add sp, #0x1fc + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02027D78: .word 0xEDB88320 + + thumb_func_start FUN_02027D7C +FUN_02027D7C: ; 0x02027D7C + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + mov r7, #0x0 + ldr r0, [sp, #0x0] + str r1, [sp, #0x4] + add r5, r2, #0x0 + add r6, r7, #0x0 + str r3, [sp, #0x8] + cmp r0, #0x0 + ble _02027DB6 + add r4, r3, #0x0 +_02027D94: + ldr r0, [sp, #0x4] + cmp r6, r0 + beq _02027DAC + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _02027DAC + add r0, r5, #0x0 + bl FUN_02027D0C + cmp r0, #0x1 + bne _02027DAC + add r7, r7, #0x1 +_02027DAC: + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _02027D94 +_02027DB6: + mov r4, #0xa +_02027DB8: + add r1, r4, r7 + cmp r1, #0xb + bge _02027DD6 + add r0, r5, #0x0 + bl FUN_02027008 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02027008 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020274B8 +_02027DD6: + sub r4, r4, #0x1 + cmp r4, #0x1 + bge _02027DB8 + ldr r0, [sp, #0x0] + mov r6, #0x1 + mov r4, #0x0 + cmp r0, #0x0 + ble _02027E1E +_02027DE6: + ldr r0, [sp, #0x4] + cmp r4, r0 + beq _02027E10 + ldr r0, [sp, #0x8] + ldr r7, [r0, #0x0] + cmp r7, #0x0 + beq _02027E10 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02027D0C + cmp r0, #0x1 + bne _02027E10 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02027008 + add r1, r7, #0x0 + add r6, r6, #0x1 + bl FUN_020274B8 +_02027E10: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r0, r0, #0x4 + str r0, [sp, #0x8] + ldr r0, [sp, #0x0] + cmp r4, r0 + blt _02027DE6 +_02027E1E: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02027E24 +FUN_02027E24: ; 0x02027E24 + ldr r3, _02027E2C ; =FUN_02022610 + mov r1, #0xe + bx r3 + nop +_02027E2C: .word FUN_02022610 + + thumb_func_start FUN_02027E30 +FUN_02027E30: ; 0x02027E30 + mov r0, #0x8 + bx lr + + thumb_func_start FUN_02027E34 +FUN_02027E34: ; 0x02027E34 + ldrb r0, [r0, #0x0] + cmp r0, #0x1e + beq _02027E3E + mov r0, #0x1 + bx lr +_02027E3E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02027E44 +FUN_02027E44: ; 0x02027E44 + mov r1, #0x1e + strb r1, [r0, #0x0] + mov r1, #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] + bx lr + .balign 4 + + thumb_func_start FUN_02027E5C +FUN_02027E5C: ; 0x02027E5C + push {r4, lr} + mov r1, #0x8 + bl FUN_020169D8 + add r4, r0, #0x0 + bl FUN_02027E44 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02027E70 +FUN_02027E70: ; 0x02027E70 + ldrb r2, [r0, #0x0] + strb r2, [r1, #0x0] + ldrb r2, [r0, #0x1] + strb r2, [r1, #0x1] + ldrb r2, [r0, #0x2] + strb r2, [r1, #0x2] + ldrb r2, [r0, #0x3] + strb r2, [r1, #0x3] + ldrb r2, [r0, #0x4] + strb r2, [r1, #0x4] + ldrb r2, [r0, #0x5] + strb r2, [r1, #0x5] + ldrb r2, [r0, #0x6] + strb r2, [r1, #0x6] + ldrb r0, [r0, #0x7] + strb r0, [r1, #0x7] + bx lr + .balign 4 + + thumb_func_start FUN_02027E94 +FUN_02027E94: ; 0x02027E94 + cmp r1, #0x6 + bhi _02027ECA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02027EA4: ; jump table (using 16-bit offset) + .short _02027EB2 - _02027EA4 - 2; case 0 + .short _02027EB6 - _02027EA4 - 2; case 1 + .short _02027EBA - _02027EA4 - 2; case 2 + .short _02027EBE - _02027EA4 - 2; case 3 + .short _02027EC2 - _02027EA4 - 2; case 4 + .short _02027EC6 - _02027EA4 - 2; case 5 + .short _02027ECA - _02027EA4 - 2; case 6 +_02027EB2: + ldrb r0, [r0, #0x0] + bx lr +_02027EB6: + ldrb r0, [r0, #0x1] + bx lr +_02027EBA: + ldrb r0, [r0, #0x2] + bx lr +_02027EBE: + ldrb r0, [r0, #0x3] + bx lr +_02027EC2: + ldrb r0, [r0, #0x4] + bx lr +_02027EC6: + ldrb r0, [r0, #0x5] + bx lr +_02027ECA: + ldrb r0, [r0, #0x6] + bx lr + .balign 4 + + thumb_func_start FUN_02027ED0 +FUN_02027ED0: ; 0x02027ED0 + push {r3-r7, lr} + add r5, r0, #0x0 + str r1, [sp, #0x0] + mov r4, #0x0 + mov r6, #0x2 + mov r7, #0x5 +_02027EDC: + bl FUN_0201B9EC + add r1, r7, #0x0 + blx _s32_div_f + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + add r1, r5, r0 + ldrb r0, [r1, #0x1] + cmp r0, #0x0 + bne _02027EF6 + strb r6, [r1, #0x1] + add r4, r4, #0x1 +_02027EF6: + cmp r4, #0x3 + blt _02027EDC + mov r0, #0x1b + strb r0, [r5, #0x0] + ldr r0, [sp, #0x0] + strb r0, [r5, #0x6] + pop {r3-r7, pc} + + thumb_func_start FUN_02027F04 +FUN_02027F04: ; 0x02027F04 + push {r3-r7, lr} + sub sp, #0x8 + mov r12, r2 + mov r2, #0x0 + add r6, r2, #0x0 + mov r5, #0x1b + cmp r3, #0x0 + beq _02027F20 + mov r1, r12 + bl FUN_02027ED0 + add sp, #0x8 + add r0, r5, #0x0 + pop {r3-r7, pc} +_02027F20: + add r4, r2, #0x0 + add r7, sp, #0x0 +_02027F24: + ldrb r3, [r1, r4] + cmp r3, #0x0 + beq _02027F34 + cmp r3, #0x32 + blo _02027F30 + mov r6, #0x1 +_02027F30: + strb r4, [r7, r2] + add r2, r2, #0x1 +_02027F34: + add r4, r4, #0x1 + cmp r4, #0x5 + blt _02027F24 + cmp r2, #0x5 + bhi _02027F9C + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02027F4A: ; jump table (using 16-bit offset) + .short _02027F56 - _02027F4A - 2; case 0 + .short _02027F62 - _02027F4A - 2; case 1 + .short _02027F70 - _02027F4A - 2; case 2 + .short _02027F96 - _02027F4A - 2; case 3 + .short _02027F9A - _02027F4A - 2; case 4 + .short _02027F9A - _02027F4A - 2; case 5 +_02027F56: + mov r1, r12 + bl FUN_02027ED0 + add sp, #0x8 + mov r0, #0x1b + pop {r3-r7, pc} +_02027F62: + add r2, sp, #0x0 + ldrb r3, [r2, #0x0] + mov r2, #0x6 + mul r2, r3 + lsl r2, r2, #0x18 + lsr r5, r2, #0x18 + b _02027F9C +_02027F70: + add r2, sp, #0x0 + ldrb r3, [r2, #0x1] + ldrb r2, [r2, #0x0] + ldrb r4, [r1, r3] + ldrb r5, [r1, r2] + cmp r5, r4 + blo _02027F8A + lsl r4, r2, #0x2 + add r2, r2, r4 + add r2, r3, r2 + lsl r2, r2, #0x18 + lsr r5, r2, #0x18 + b _02027F9C +_02027F8A: + lsl r4, r3, #0x2 + add r3, r3, r4 + add r2, r2, r3 + lsl r2, r2, #0x18 + lsr r5, r2, #0x18 + b _02027F9C +_02027F96: + mov r5, #0x19 + b _02027F9C +_02027F9A: + mov r5, #0x1a +_02027F9C: + cmp r6, #0x0 + beq _02027FA2 + mov r5, #0x1c +_02027FA2: + mov r4, #0x0 +_02027FA4: + ldrb r3, [r1, r4] + add r2, r0, r4 + add r4, r4, #0x1 + strb r3, [r2, #0x1] + cmp r4, #0x5 + blt _02027FA4 + strb r5, [r0, #0x0] + mov r1, r12 + strb r1, [r0, #0x6] + add r0, r5, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02027FBC +FUN_02027FBC: ; 0x02027FBC + ldrb r2, [r0, #0x0] + strb r2, [r1, #0x0] + ldrb r2, [r0, #0x1] + strb r2, [r1, #0x1] + ldrb r2, [r0, #0x2] + strb r2, [r1, #0x2] + ldrb r2, [r0, #0x3] + strb r2, [r1, #0x3] + ldrb r2, [r0, #0x4] + strb r2, [r1, #0x4] + ldrb r2, [r0, #0x5] + strb r2, [r1, #0x5] + ldrb r0, [r0, #0x6] + strb r0, [r1, #0x6] + bx lr + .balign 4 + + thumb_func_start FUN_02027FDC +FUN_02027FDC: ; 0x02027FDC + push {r4, lr} + add r4, r0, #0x0 + ldrb r0, [r4, #0x0] + mov r1, #0x5 + blx _s32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x5 + bhi _0202801C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02027FFC: ; jump table (using 16-bit offset) + .short _02028008 - _02027FFC - 2; case 0 + .short _0202800C - _02027FFC - 2; case 1 + .short _02028010 - _02027FFC - 2; case 2 + .short _02028014 - _02027FFC - 2; case 3 + .short _02028018 - _02027FFC - 2; case 4 + .short _0202801C - _02027FFC - 2; case 5 +_02028008: + ldrb r0, [r4, #0x1] + b _0202803E +_0202800C: + ldrb r0, [r4, #0x2] + b _0202803E +_02028010: + ldrb r0, [r4, #0x3] + b _0202803E +_02028014: + ldrb r0, [r4, #0x4] + b _0202803E +_02028018: + ldrb r0, [r4, #0x5] + b _0202803E +_0202801C: + ldrb r0, [r4, #0x1] + ldrb r1, [r4, #0x2] + cmp r0, r1 + bhs _02028026 + add r0, r1, #0x0 +_02028026: + ldrb r1, [r4, #0x3] + cmp r0, r1 + bhs _0202802E + add r0, r1, #0x0 +_0202802E: + ldrb r1, [r4, #0x4] + cmp r0, r1 + bhs _02028036 + add r0, r1, #0x0 +_02028036: + ldrb r1, [r4, #0x5] + cmp r0, r1 + bhs _0202803E + add r0, r1, #0x0 +_0202803E: + cmp r0, #0x63 + bls _02028044 + mov r0, #0x63 +_02028044: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02028048 +FUN_02028048: ; 0x02028048 + ldr r3, _02028050 ; =FUN_02022610 + mov r1, #0x10 + bx r3 + nop +_02028050: .word FUN_02022610 + + thumb_func_start FUN_02028054 +FUN_02028054: ; 0x02028054 + mov r0, #0x32 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_0202805C +FUN_0202805C: ; 0x0202805C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_02028062: + add r0, r5, #0x0 + bl FUN_02027E44 + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, #0x64 + blt _02028062 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02028074 +FUN_02028074: ; 0x02028074 + mov r2, #0x0 +_02028076: + lsl r1, r2, #0x3 + ldrb r1, [r0, r1] + cmp r1, #0x1e + bne _02028082 + add r0, r2, #0x0 + bx lr +_02028082: + add r1, r2, #0x1 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + cmp r2, #0x64 + blo _02028076 + ldr r0, _02028090 ; =0x0000FFFF + bx lr + .balign 4 +_02028090: .word 0x0000FFFF + + thumb_func_start FUN_02028094 +FUN_02028094: ; 0x02028094 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02028074 + ldr r1, _020280B4 ; =0x0000FFFF + add r4, r0, #0x0 + cmp r4, r1 + beq _020280B2 + lsl r1, r4, #0x3 + add r0, r6, #0x0 + add r1, r5, r1 + bl FUN_02027E70 + add r0, r4, #0x0 +_020280B2: + pop {r4-r6, pc} + .balign 4 +_020280B4: .word 0x0000FFFF + + thumb_func_start FUN_020280B8 +FUN_020280B8: ; 0x020280B8 + push {r3, lr} + cmp r1, #0x64 + blo _020280C2 + mov r0, #0x0 + pop {r3, pc} +_020280C2: + lsl r1, r1, #0x3 + add r0, r0, r1 + bl FUN_02027E44 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020280D0 +FUN_020280D0: ; 0x020280D0 + cmp r1, #0x64 + bhs _020280EA +_020280D4: + lsl r2, r1, #0x3 + ldrb r2, [r0, r2] + cmp r2, #0x1e + beq _020280E0 + add r0, r1, #0x0 + bx lr +_020280E0: + add r1, r1, #0x1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, #0x64 + blo _020280D4 +_020280EA: + ldr r0, _020280F0 ; =0x0000FFFF + bx lr + nop +_020280F0: .word 0x0000FFFF + + thumb_func_start FUN_020280F4 +FUN_020280F4: ; 0x020280F4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r0, #0x0 + mov r7, #0x64 + str r0, [sp, #0x4] +_02028100: + ldr r0, [sp, #0x4] + lsl r0, r0, #0x3 + ldrb r0, [r5, r0] + cmp r0, #0x1e + bne _0202815C + ldr r6, [sp, #0x4] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020280D0 + add r4, r0, #0x0 + ldr r0, _02028170 ; =0x0000FFFF + cmp r4, r0 + beq _0202816A + ldr r0, [sp, #0x4] + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + cmp r4, r7 + bhs _02028154 + cmp r4, r7 + bhs _02028154 +_0202812E: + lsl r0, r4, #0x3 + lsl r1, r6, #0x3 + str r0, [sp, #0x8] + add r0, r5, r0 + add r1, r5, r1 + bl FUN_02027E70 + ldr r0, [sp, #0x8] + add r0, r5, r0 + bl FUN_02027E44 + add r0, r6, #0x1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r7 + blo _0202812E +_02028154: + ldr r0, [sp, #0x0] + sub r0, r7, r0 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 +_0202815C: + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + cmp r0, r7 + blo _02028100 +_0202816A: + add sp, #0xc + pop {r4-r7, pc} + nop +_02028170: .word 0x0000FFFF + + thumb_func_start FUN_02028174 +FUN_02028174: ; 0x02028174 + push {r3, lr} + cmp r1, #0x64 + blo _02028182 + add r0, r2, #0x0 + bl FUN_02027E44 + pop {r3, pc} +_02028182: + lsl r1, r1, #0x3 + add r0, r0, r1 + add r1, r2, #0x0 + bl FUN_02027E70 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02028190 +FUN_02028190: ; 0x02028190 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + bl FUN_02027E5C + add r6, r0, #0x0 + cmp r4, #0x64 + blo _020281AA + bl FUN_02027E44 + mov r0, #0x0 + pop {r4-r6, pc} +_020281AA: + lsl r0, r4, #0x3 + add r0, r5, r0 + add r1, r6, #0x0 + bl FUN_02027E70 + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020281B8 +FUN_020281B8: ; 0x020281B8 + push {r4-r6, lr} + mov r4, #0x0 + add r6, r0, #0x0 + add r5, r4, #0x0 +_020281C0: + lsl r0, r5, #0x3 + add r0, r6, r0 + bl FUN_02027E34 + cmp r0, #0x0 + beq _020281D2 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020281D2: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _020281C0 + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020281E0 +FUN_020281E0: ; 0x020281E0 + mov r0, #0x1f + lsl r0, r0, #0x6 + bx lr + .balign 4 + + thumb_func_start FUN_020281E8 +FUN_020281E8: ; 0x020281E8 + push {r3-r7, lr} + add r7, r0, #0x0 + mov r2, #0x1f + mov r0, #0x0 + add r1, r7, #0x0 + lsl r2, r2, #0x6 + blx MIi_CpuClearFast + mov r0, #0x1d + lsl r0, r0, #0x4 + add r1, r0, #0x0 + add r2, r0, #0x0 + ldr r4, _02028224 ; =0x0000FFFF + mov r5, #0x0 + add r6, r7, #0x0 + mov r3, #0x2 + sub r1, #0x10 + add r2, #0x1e +_0202820C: + strh r4, [r6, r0] + strh r4, [r6, r1] + strb r3, [r6, r2] + add r5, r5, #0x1 + add r6, #0x30 + cmp r5, #0x20 + blt _0202820C + add r0, r7, #0x0 + bl FUN_0203380C + pop {r3-r7, pc} + nop +_02028224: .word 0x0000FFFF + + thumb_func_start FUN_02028228 +FUN_02028228: ; 0x02028228 + bx lr + .balign 4 + + thumb_func_start FUN_0202822C +FUN_0202822C: ; 0x0202822C + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r7, r2, #0x0 + cmp r4, #0x20 + blt _0202823C + bl ErrorHandling +_0202823C: + cmp r7, #0x8 + bhi _020282D0 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202824C: ; jump table (using 16-bit offset) + .short _0202825E - _0202824C - 2; case 0 + .short _0202826C - _0202824C - 2; case 1 + .short _0202827A - _0202824C - 2; case 2 + .short _02028286 - _0202824C - 2; case 3 + .short _02028294 - _0202824C - 2; case 4 + .short _020282A0 - _0202824C - 2; case 5 + .short _020282AE - _0202824C - 2; case 6 + .short _020282C6 - _0202824C - 2; case 7 + .short _020282BA - _0202824C - 2; case 8 +_0202825E: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x1e + lsl r0, r0, #0x4 + ldr r6, [r1, r0] + b _020282D0 +_0202826C: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x79 + lsl r0, r0, #0x2 + ldrh r6, [r1, r0] + b _020282D0 +_0202827A: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _020282D4 ; =0x000001E6 + ldrh r6, [r1, r0] + b _020282D0 +_02028286: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x7a + lsl r0, r0, #0x2 + ldrh r6, [r1, r0] + b _020282D0 +_02028294: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _020282D8 ; =0x000001EA + ldrh r6, [r1, r0] + b _020282D0 +_020282A0: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x7b + lsl r0, r0, #0x2 + ldrb r6, [r1, r0] + b _020282D0 +_020282AE: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _020282DC ; =0x000001ED + ldrb r6, [r1, r0] + b _020282D0 +_020282BA: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _020282E0 ; =0x000001EE + ldrb r6, [r1, r0] + b _020282D0 +_020282C6: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _020282E4 ; =0x000001EF + ldrb r6, [r1, r0] +_020282D0: + add r0, r6, #0x0 + pop {r3-r7, pc} + .balign 4 +_020282D4: .word 0x000001E6 +_020282D8: .word 0x000001EA +_020282DC: .word 0x000001ED +_020282E0: .word 0x000001EE +_020282E4: .word 0x000001EF + + thumb_func_start FUN_020282E8 +FUN_020282E8: ; 0x020282E8 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + cmp r4, #0x20 + blt _020282FA + bl ErrorHandling +_020282FA: + cmp r7, #0x8 + bhi _02028378 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202830A: ; jump table (using 16-bit offset) + .short _0202831C - _0202830A - 2; case 0 + .short _0202832A - _0202830A - 2; case 1 + .short _02028330 - _0202830A - 2; case 2 + .short _02028336 - _0202830A - 2; case 3 + .short _0202833C - _0202830A - 2; case 4 + .short _02028348 - _0202830A - 2; case 5 + .short _02028356 - _0202830A - 2; case 6 + .short _0202836E - _0202830A - 2; case 7 + .short _02028362 - _0202830A - 2; case 8 +_0202831C: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x1e + lsl r0, r0, #0x4 + str r6, [r1, r0] + pop {r3-r7, pc} +_0202832A: + bl ErrorHandling + pop {r3-r7, pc} +_02028330: + bl ErrorHandling + pop {r3-r7, pc} +_02028336: + bl ErrorHandling + pop {r3-r7, pc} +_0202833C: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _0202837C ; =0x000001EA + strh r6, [r1, r0] + pop {r3-r7, pc} +_02028348: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x7b + lsl r0, r0, #0x2 + strb r6, [r1, r0] + pop {r3-r7, pc} +_02028356: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _02028380 ; =0x000001ED + strb r6, [r1, r0] + pop {r3-r7, pc} +_02028362: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _02028384 ; =0x000001EE + strb r6, [r1, r0] + pop {r3-r7, pc} +_0202836E: + mov r0, #0x30 + mul r0, r4 + add r1, r5, r0 + ldr r0, _02028388 ; =0x000001EF + strb r6, [r1, r0] +_02028378: + pop {r3-r7, pc} + nop +_0202837C: .word 0x000001EA +_02028380: .word 0x000001ED +_02028384: .word 0x000001EE +_02028388: .word 0x000001EF + + thumb_func_start FUN_0202838C +FUN_0202838C: ; 0x0202838C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x20 + blt _0202839A + bl ErrorHandling +_0202839A: + mov r0, #0xc + add r5, #0x40 + mul r0, r4 + add r0, r5, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_020283A4 +FUN_020283A4: ; 0x020283A4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x20 + blt _020283B2 + bl ErrorHandling +_020283B2: + mov r0, #0x1d + lsl r0, r0, #0x4 + add r1, r5, r0 + mov r0, #0x30 + mul r0, r4 + add r0, r1, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_020283C0 +FUN_020283C0: ; 0x020283C0 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x20 + blt _020283D0 + bl ErrorHandling +_020283D0: + mov r1, #0x1d + lsl r1, r1, #0x4 + add r2, r5, r1 + mov r1, #0x30 + mul r1, r4 + add r1, r2, r1 + add r0, r6, #0x0 + mov r2, #0x10 + bl FUN_02021EF0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020283E8 +FUN_020283E8: ; 0x020283E8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x20 + blt _020283F6 + bl ErrorHandling +_020283F6: + mov r0, #0x7 + lsl r0, r0, #0x6 + add r1, r5, r0 + mov r0, #0x30 + mul r0, r4 + add r0, r1, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_02028404 +FUN_02028404: ; 0x02028404 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x20 + blt _02028414 + bl ErrorHandling +_02028414: + mov r1, #0x7 + lsl r1, r1, #0x6 + add r2, r5, r1 + mov r1, #0x30 + mul r1, r4 + add r1, r2, r1 + add r0, r6, #0x0 + mov r2, #0x10 + bl FUN_02021EF0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202842C +FUN_0202842C: ; 0x0202842C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x20 + blt _0202843A + bl ErrorHandling +_0202843A: + mov r0, #0xc + add r5, #0x40 + mul r0, r4 + add r0, r5, r0 + blx FUN_0209700C + pop {r3-r5, pc} + + thumb_func_start FUN_02028448 +FUN_02028448: ; 0x02028448 + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_02028450: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202842C + cmp r0, #0x0 + beq _0202845E + add r5, r5, #0x1 +_0202845E: + add r4, r4, #0x1 + cmp r4, #0x20 + blt _02028450 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02028468 +FUN_02028468: ; 0x02028468 + push {r4-r7, lr} + sub sp, #0xc + add r5, r1, #0x0 + str r0, [sp, #0x0] + cmp r5, #0x20 + blt _02028478 + bl ErrorHandling +_02028478: + cmp r5, #0x1f + bge _020284D2 + mov r1, #0x7 + ldr r0, [sp, #0x0] + lsl r1, r1, #0x6 + add r0, r0, r1 + str r0, [sp, #0x4] + mov r0, #0x30 + add r1, r5, #0x0 + mul r1, r0 + ldr r0, [sp, #0x4] + add r6, r0, r1 + ldr r0, [sp, #0x0] + add r1, r5, #0x0 + str r0, [sp, #0x8] + add r0, #0x40 + str r0, [sp, #0x8] + mov r0, #0xc + mul r1, r0 + ldr r0, [sp, #0x8] + add r4, r0, r1 +_020284A2: + add r7, r5, #0x1 + mov r0, #0x30 + add r1, r7, #0x0 + mul r1, r0 + ldr r0, [sp, #0x4] + mov r2, #0x30 + add r0, r0, r1 + add r1, r6, #0x0 + blx MI_CpuCopy8 + mov r0, #0xc + add r1, r7, #0x0 + mul r1, r0 + ldr r0, [sp, #0x8] + mov r2, #0xc + add r0, r0, r1 + add r1, r4, #0x0 + blx MI_CpuCopy8 + add r5, r5, #0x1 + add r6, #0x30 + add r4, #0xc + cmp r5, #0x1f + blt _020284A2 +_020284D2: + mov r2, #0x7 + ldr r1, [sp, #0x0] + lsl r2, r2, #0x6 + add r2, r1, r2 + mov r1, #0x5d + lsl r1, r1, #0x4 + add r1, r2, r1 + mov r0, #0x0 + mov r2, #0x30 + blx MIi_CpuClearFast + ldr r2, [sp, #0x0] + mov r1, #0x5d + add r2, #0x40 + lsl r1, r1, #0x2 + add r1, r2, r1 + mov r0, #0x0 + mov r2, #0xc + blx MIi_CpuClearFast + mov r2, #0x7a + lsl r2, r2, #0x4 + add r1, r2, #0x0 + ldr r3, _02028514 ; =0x0000FFFF + ldr r0, [sp, #0x0] + sub r1, #0x10 + strh r3, [r0, r2] + strh r3, [r0, r1] + mov r1, #0x2 + add r2, #0x1e + strb r1, [r0, r2] + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02028514: .word 0x0000FFFF + + thumb_func_start FUN_02028518 +FUN_02028518: ; 0x02028518 + push {r4-r7, lr} + sub sp, #0xc + str r2, [sp, #0x4] + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + mov r2, #0x30 + add r5, r0, #0x0 + mov r0, #0x7 + lsl r0, r0, #0x6 + add r3, r1, #0x0 + mul r5, r2 + add r4, r7, r0 + mul r3, r2 + str r1, [sp, #0x0] + add r0, r4, r5 + add r1, r4, r3 + blx MI_CpuCopy8 + ldr r0, [sp, #0x4] + add r6, r7, #0x0 + mov r3, #0xc + add r1, r0, #0x0 + mul r1, r3 + add r6, #0x40 + str r1, [sp, #0x8] + add r0, r6, r1 + ldr r1, [sp, #0x0] + add r2, r1, #0x0 + mul r2, r3 + add r1, r6, r2 + add r2, r3, #0x0 + blx MI_CpuCopy8 + mov r0, #0x0 + add r1, r4, r5 + mov r2, #0x30 + blx MIi_CpuClearFast + ldr r1, [sp, #0x8] + mov r0, #0x0 + add r1, r6, r1 + mov r2, #0xc + blx MIi_CpuClearFast + mov r0, #0x1d + ldr r1, _02028588 ; =0x0000FFFF + add r2, r7, r5 + lsl r0, r0, #0x4 + strh r1, [r2, r0] + strh r1, [r4, r5] + mov r1, #0x2 + add r0, #0x1e + strb r1, [r2, r0] + add sp, #0xc + pop {r4-r7, pc} + nop +_02028588: .word 0x0000FFFF + + thumb_func_start FUN_0202858C +FUN_0202858C: ; 0x0202858C + push {r3-r7, lr} + mov r5, #0x0 + mvn r5, r5 + add r6, r0, #0x0 + mov r4, #0x0 + add r7, r5, #0x0 +_02028598: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202842C + cmp r0, #0x0 + beq _020285BC + mov r0, #0x0 + mvn r0, r0 + cmp r5, r0 + beq _020285C6 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02028518 + add r4, r7, #0x0 + add r5, r7, #0x0 + b _020285C6 +_020285BC: + mov r0, #0x0 + mvn r0, r0 + cmp r5, r0 + bne _020285C6 + add r5, r4, #0x0 +_020285C6: + add r4, r4, #0x1 + cmp r4, #0x20 + blt _02028598 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020285D0 +FUN_020285D0: ; 0x020285D0 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, sp, #0x0 + bl FUN_020126B4 + mov r0, #0x30 + add r2, r4, #0x0 + mul r2, r0 + mov r0, #0x7d + ldr r1, [sp, #0x0] + lsl r0, r0, #0x4 + add r1, r1, r0 + ldr r0, _02028604 ; =0x000001EA + add r3, r5, r2 + strh r1, [r3, r0] + add r1, r0, #0x2 + ldr r2, [sp, #0x4] + add r0, r0, #0x3 + strb r2, [r3, r1] + ldr r1, [sp, #0x8] + strb r1, [r3, r0] + add sp, #0x10 + pop {r3-r5, pc} + nop +_02028604: .word 0x000001EA + + thumb_func_start FUN_02028608 +FUN_02028608: ; 0x02028608 + push {r4-r6, lr} + mov r5, #0x79 + add r4, r0, #0x0 + mov r0, #0x30 + lsl r5, r5, #0x2 + mul r0, r1 + add r5, r4, r5 + ldrh r6, [r5, r0] + add r2, r6, r2 + strh r2, [r5, r0] + ldrh r6, [r5, r0] + ldr r2, _0202865C ; =0x0000270F + cmp r6, r2 + bls _02028626 + strh r2, [r5, r0] +_02028626: + ldr r2, _02028660 ; =0x000001E6 + add r2, r4, r2 + ldrh r5, [r2, r0] + add r3, r5, r3 + strh r3, [r2, r0] + ldrh r5, [r2, r0] + ldr r3, _0202865C ; =0x0000270F + cmp r5, r3 + bls _0202863A + strh r3, [r2, r0] +_0202863A: + mov r2, #0x7a + lsl r2, r2, #0x2 + add r2, r4, r2 + ldrh r5, [r2, r0] + ldr r3, [sp, #0x10] + add r3, r5, r3 + strh r3, [r2, r0] + ldrh r5, [r2, r0] + ldr r3, _0202865C ; =0x0000270F + cmp r5, r3 + bls _02028652 + strh r3, [r2, r0] +_02028652: + add r0, r4, #0x0 + bl FUN_020285D0 + pop {r4-r6, pc} + nop +_0202865C: .word 0x0000270F +_02028660: .word 0x000001E6 + + thumb_func_start FUN_02028664 +FUN_02028664: ; 0x02028664 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r3, #0x79 + mov r0, #0x30 + add r4, r1, #0x0 + mul r4, r0 + lsl r3, r3, #0x2 + mul r0, r2 + add r2, r5, r3 + add r6, r5, r4 + ldrh r1, [r2, r0] + ldrh r3, [r6, r3] + add r1, r1, r3 + strh r1, [r2, r0] + ldrh r3, [r2, r0] + ldr r1, _020286E0 ; =0x0000270F + cmp r3, r1 + bls _0202868A + strh r1, [r2, r0] +_0202868A: + ldr r3, _020286E4 ; =0x000001E6 + add r6, r5, r4 + add r2, r5, r3 + ldrh r1, [r2, r0] + ldrh r3, [r6, r3] + add r1, r1, r3 + strh r1, [r2, r0] + ldrh r3, [r2, r0] + ldr r1, _020286E0 ; =0x0000270F + cmp r3, r1 + bls _020286A2 + strh r1, [r2, r0] +_020286A2: + mov r3, #0x7a + lsl r3, r3, #0x2 + add r2, r5, r3 + add r6, r5, r4 + ldrh r1, [r2, r0] + ldrh r3, [r6, r3] + add r1, r1, r3 + strh r1, [r2, r0] + ldrh r3, [r2, r0] + ldr r1, _020286E0 ; =0x0000270F + cmp r3, r1 + bls _020286BC + strh r1, [r2, r0] +_020286BC: + mov r0, #0x7 + lsl r0, r0, #0x6 + add r6, r5, r0 + mov r0, #0x0 + add r1, r6, r4 + mov r2, #0x30 + blx MIi_CpuClearFast + mov r0, #0x1d + ldr r1, _020286E8 ; =0x0000FFFF + add r2, r5, r4 + lsl r0, r0, #0x4 + strh r1, [r2, r0] + strh r1, [r6, r4] + mov r1, #0x2 + add r0, #0x1e + strb r1, [r2, r0] + pop {r4-r6, pc} + .balign 4 +_020286E0: .word 0x0000270F +_020286E4: .word 0x000001E6 +_020286E8: .word 0x0000FFFF + + thumb_func_start FUN_020286EC +FUN_020286EC: ; 0x020286EC + ldr r3, _020286F4 ; =FUN_02022610 + mov r1, #0x1d + bx r3 + nop +_020286F4: .word FUN_02022610 + + thumb_func_start FUN_020286F8 +FUN_020286F8: ; 0x020286F8 + mov r0, #0x42 + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_02028700 +FUN_02028700: ; 0x02028700 + push {r4-r5} + add r5, r2, #0x0 + mov r3, #0x2c + add r2, r1, #0x0 + mul r2, r3 + mul r5, r3 + add r4, r0, r2 + add r3, r0, r5 + mov r2, #0x5 +_02028712: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02028712 + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_02028724 +FUN_02028724: ; 0x02028724 + push {r4, lr} + add r4, r0, #0x0 + mov r2, #0x42 + mov r0, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + blx MIi_CpuClearFast + ldr r0, _0202874C ; =0x0000FFFF + mov r1, #0x0 + add r2, r4, #0x0 +_0202873A: + strh r0, [r2, #0x0] + strh r0, [r2, #0x10] + add r1, r1, #0x1 + add r2, #0x2c + cmp r1, #0x6 + blt _0202873A + ldr r0, _02028750 ; =0x021C59D0 + str r4, [r0, #0x0] + pop {r4, pc} + .balign 4 +_0202874C: .word 0x0000FFFF +_02028750: .word 0x021C59D0 + + thumb_func_start FUN_02028754 +FUN_02028754: ; 0x02028754 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r7, #0x0 +_0202875C: + mov r4, #0x0 + cmp r6, #0x0 + bls _02028770 +_02028762: + ldr r0, [r5, #0x28] + bl FUN_0201BA10 + add r4, r4, #0x1 + str r0, [r5, #0x28] + cmp r4, r6 + blo _02028762 +_02028770: + add r7, r7, #0x1 + add r5, #0x2c + cmp r7, #0x6 + blo _0202875C + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202877C +FUN_0202877C: ; 0x0202877C + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + ldr r0, [r0, #0x24] + bx lr + .balign 4 + + thumb_func_start FUN_02028788 +FUN_02028788: ; 0x02028788 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x2c + add r4, r1, #0x0 + mul r4, r0 + add r0, r5, r4 + str r2, [r0, #0x24] + add r0, r2, #0x0 + bl FUN_0201BA10 + add r1, r5, r4 + str r0, [r1, #0x28] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020287A4 +FUN_020287A4: ; 0x020287A4 + ldr r0, [r0, #0x54] + bx lr + + thumb_func_start FUN_020287A8 +FUN_020287A8: ; 0x020287A8 + cmp r2, #0x0 + bne _020287B4 + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + bx lr +_020287B4: + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + add r0, #0x10 + bx lr + .balign 4 + + thumb_func_start FUN_020287C0 +FUN_020287C0: ; 0x020287C0 + push {r4, lr} + add r4, r0, #0x0 + cmp r2, #0x0 + bne _020287D8 + mov r2, #0x2c + mul r2, r1 + add r1, r4, r2 + add r0, r3, #0x0 + mov r2, #0x8 + bl FUN_02021EF0 + pop {r4, pc} +_020287D8: + mov r2, #0x2c + mul r2, r1 + add r1, r4, r2 + add r0, r3, #0x0 + add r1, #0x10 + mov r2, #0x8 + bl FUN_02021EF0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020287EC +FUN_020287EC: ; 0x020287EC + mov r3, #0x2c + mul r3, r1 + add r0, r0, r3 + add r0, #0x20 + strb r2, [r0, #0x0] + bx lr + + thumb_func_start FUN_020287F8 +FUN_020287F8: ; 0x020287F8 + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + add r0, #0x20 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02028804 +FUN_02028804: ; 0x02028804 + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + add r0, #0x21 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02028810 +FUN_02028810: ; 0x02028810 + mov r3, #0x2c + mul r3, r1 + add r0, r0, r3 + add r0, #0x21 + strb r2, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202881C +FUN_0202881C: ; 0x0202881C + ldr r3, _02028824 ; =FUN_02022610 + mov r1, #0x11 + bx r3 + nop +_02028824: .word FUN_02022610 + + thumb_func_start FUN_02028828 +FUN_02028828: ; 0x02028828 + push {r3, lr} + mov r2, #0x2c + mul r2, r1 + add r0, r0, r2 + bl FUN_0202888C + cmp r0, #0x0 + bne _0202883C + mov r0, #0x1 + pop {r3, pc} +_0202883C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02028840 +FUN_02028840: ; 0x02028840 + mov r2, #0x2c + add r3, r0, #0x0 + mul r2, r1 + add r1, r3, r2 + ldr r3, _02028850 ; =FUN_020288AC + add r0, #0x2c + bx r3 + nop +_02028850: .word FUN_020288AC + + thumb_func_start FUN_02028854 +FUN_02028854: ; 0x02028854 + push {r3-r7, lr} + add r6, r1, #0x0 + ldrh r1, [r6, #0x0] + add r5, r0, #0x0 + ldr r0, _02028888 ; =0x0000FFFF + cmp r1, r0 + bne _02028866 + mov r0, #0x0 + pop {r3-r7, pc} +_02028866: + mov r4, #0x0 + mov r7, #0x8 +_0202886A: + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r7, #0x0 + bl StringNotEqualN + cmp r0, #0x0 + bne _0202887C + mov r0, #0x1 + pop {r3-r7, pc} +_0202887C: + add r4, r4, #0x1 + add r5, #0x2c + cmp r4, #0x6 + blt _0202886A + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02028888: .word 0x0000FFFF + + thumb_func_start FUN_0202888C +FUN_0202888C: ; 0x0202888C + ldrh r2, [r0, #0x0] + ldr r1, _020288A8 ; =0x0000FFFF + cmp r2, r1 + bne _02028898 + mov r0, #0x1 + bx lr +_02028898: + ldrh r0, [r0, #0x10] + cmp r0, r1 + bne _020288A2 + mov r0, #0x1 + bx lr +_020288A2: + mov r0, #0x0 + bx lr + nop +_020288A8: .word 0x0000FFFF + + thumb_func_start FUN_020288AC +FUN_020288AC: ; 0x020288AC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, #0x10 + add r1, #0x10 + mov r2, #0x8 + bl StringNotEqualN + cmp r0, #0x0 + beq _020288C4 + mov r0, #0x0 + pop {r3-r5, pc} +_020288C4: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x8 + bl StringNotEqualN + cmp r0, #0x0 + beq _020288D6 + mov r0, #0x0 + pop {r3-r5, pc} +_020288D6: + add r0, r5, #0x0 + add r0, #0x20 + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r1, r0 + beq _020288EA + mov r0, #0x0 + pop {r3-r5, pc} +_020288EA: + add r0, r5, #0x0 + add r0, #0x21 + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r1, r0 + beq _020288FE + mov r0, #0x0 + pop {r3-r5, pc} +_020288FE: + ldr r1, [r5, #0x24] + ldr r0, [r4, #0x24] + cmp r1, r0 + bne _0202890A + mov r0, #0x1 + pop {r3-r5, pc} +_0202890A: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02028910 +FUN_02028910: ; 0x02028910 + mov r1, #0x0 + strh r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02028918 +FUN_02028918: ; 0x02028918 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0202892C ; =0x0000C350 + add r4, r1, #0x0 + cmp r4, r0 + bls _02028928 + bl ErrorHandling +_02028928: + strh r4, [r5, #0x0] + pop {r3-r5, pc} + .balign 4 +_0202892C: .word 0x0000C350 + + thumb_func_start FUN_02028930 +FUN_02028930: ; 0x02028930 + ldrh r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02028934 +FUN_02028934: ; 0x02028934 + ldrh r3, [r0, #0x0] + ldr r2, _02028950 ; =0x0000C350 + cmp r3, r2 + blo _02028940 + mov r0, #0x0 + bx lr +_02028940: + add r1, r3, r1 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + cmp r1, r2 + bls _0202894C + strh r2, [r0, #0x0] +_0202894C: + mov r0, #0x1 + bx lr + .balign 4 +_02028950: .word 0x0000C350 + + thumb_func_start FUN_02028954 +FUN_02028954: ; 0x02028954 + ldrh r0, [r0, #0x0] + add r1, r1, r0 + ldr r0, _02028968 ; =0x0000C350 + cmp r1, r0 + bhi _02028962 + mov r0, #0x1 + bx lr +_02028962: + mov r0, #0x0 + bx lr + nop +_02028968: .word 0x0000C350 + + thumb_func_start FUN_0202896C +FUN_0202896C: ; 0x0202896C + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhs _02028976 + mov r0, #0x0 + bx lr +_02028976: + sub r1, r2, r1 + strh r1, [r0, #0x0] + mov r0, #0x1 + bx lr + .balign 4 + + thumb_func_start FUN_02028980 +FUN_02028980: ; 0x02028980 + mov r0, #0x46 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02028988 +FUN_02028988: ; 0x02028988 + ldr r3, _02028990 ; =Call_FillMemWithValue + mov r1, #0x0 + mov r2, #0x70 + bx r3 + .balign 4 +_02028990: .word Call_FillMemWithValue + + thumb_func_start FUN_02028994 +FUN_02028994: ; 0x02028994 + ldr r3, _020289A0 ; =Call_FillMemWithValue + mov r2, #0x46 + mov r1, #0x0 + lsl r2, r2, #0x4 + bx r3 + nop +_020289A0: .word Call_FillMemWithValue + + thumb_func_start FUN_020289A4 +FUN_020289A4: ; 0x020289A4 + ldr r3, _020289AC ; =FUN_02022610 + mov r1, #0x12 + bx r3 + nop +_020289AC: .word FUN_02022610 + + thumb_func_start FUN_020289B0 +FUN_020289B0: ; 0x020289B0 + push {r3-r7, lr} + sub sp, #0x10 + add r7, r0, #0x0 + cmp r1, #0x1 + beq _020289C0 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_020289C0: + add r0, sp, #0x0 + bl FUN_020126B4 + ldr r0, [r7, #0x0] + lsl r1, r0, #0x15 + lsr r3, r1, #0x1c + beq _02028A18 + lsl r1, r0, #0x19 + lsr r2, r1, #0x19 + ldr r1, [sp, #0x0] + cmp r2, r1 + bne _020289F2 + ldr r1, [sp, #0x4] + cmp r3, r1 + bne _020289F2 + lsl r1, r0, #0xd + lsr r2, r1, #0x1b + ldr r1, [sp, #0x8] + cmp r2, r1 + bne _020289F2 + lsl r0, r0, #0x12 + lsr r1, r0, #0x1d + ldr r0, [sp, #0xc] + cmp r1, r0 + beq _02028A18 +_020289F2: + mov r0, #0x3f + lsl r0, r0, #0x4 + mov r5, #0x9 + add r6, r7, r0 +_020289FA: + add r4, r6, #0x0 + sub r4, #0x70 + add r3, r6, #0x0 + mov r2, #0xe +_02028A02: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02028A02 + sub r5, r5, #0x1 + sub r6, #0x70 + cmp r5, #0x1 + bge _020289FA + add r0, r7, #0x0 + bl FUN_02028988 +_02028A18: + add r0, r7, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02028A20 +FUN_02028A20: ; 0x02028A20 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0x0 + cmp r1, #0x1 + beq _02028A30 + add sp, #0x20 + mov r0, #0x0 + pop {r4, pc} +_02028A30: + add r0, sp, #0x0 + bl FUN_020126B4 + ldr r0, [r4, #0x0] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1c + str r0, [sp, #0x14] + ldr r0, [r4, #0x0] + lsl r0, r0, #0xd + lsr r0, r0, #0x1b + str r0, [sp, #0x18] + ldr r0, [r4, #0x0] + lsl r0, r0, #0x12 + lsr r0, r0, #0x1d + str r0, [sp, #0x1c] + add r0, sp, #0x0 + bl FUN_02012710 + add r4, r0, #0x0 + add r0, sp, #0x10 + bl FUN_02012710 + ldr r2, [sp, #0x4] + sub r0, r4, r0 + cmp r2, #0xc + bne _02028A7E + ldr r1, [sp, #0x8] + cmp r1, #0x1f + bne _02028A7E + ldr r1, [sp, #0x14] + cmp r1, #0x1 + bne _02028A7E + ldr r1, [sp, #0x18] + cmp r1, #0x1 + beq _02028A94 +_02028A7E: + cmp r2, #0x1 + bne _02028AAC + ldr r1, [sp, #0x8] + cmp r1, #0x1 + bne _02028AAC + ldr r1, [sp, #0x14] + cmp r1, #0xc + bne _02028AAC + ldr r1, [sp, #0x18] + cmp r1, #0x1f + bne _02028AAC +_02028A94: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x10] + sub r1, r1, r0 + cmp r1, #0x2 + bge _02028AA6 + mov r0, #0x1 + mvn r0, r0 + cmp r1, r0 + bgt _02028ACC +_02028AA6: + add sp, #0x20 + mov r0, #0x1 + pop {r4, pc} +_02028AAC: + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + ble _02028AB8 + cmp r0, #0x2 + blt _02028ABE +_02028AB8: + add sp, #0x20 + mov r0, #0x1 + pop {r4, pc} +_02028ABE: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x10] + cmp r1, r0 + beq _02028ACC + add sp, #0x20 + mov r0, #0x1 + pop {r4, pc} +_02028ACC: + mov r0, #0x0 + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02028AD4 +FUN_02028AD4: ; 0x02028AD4 + push {r4, lr} + add r4, r1, #0x0 + cmp r0, #0x0 + beq _02028B12 + cmp r2, #0x4 + bhi _02028B12 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02028AEC: ; jump table (using 16-bit offset) + .short _02028AF6 - _02028AEC - 2; case 0 + .short _02028AFC - _02028AEC - 2; case 1 + .short _02028B02 - _02028AEC - 2; case 2 + .short _02028B08 - _02028AEC - 2; case 3 + .short _02028B0E - _02028AEC - 2; case 4 +_02028AF6: + bl FUN_02028B1C + b _02028B12 +_02028AFC: + bl FUN_02028B5C + b _02028B12 +_02028B02: + bl FUN_02028BF0 + b _02028B12 +_02028B08: + bl FUN_02028BFC + b _02028B12 +_02028B0E: + bl FUN_02028C08 +_02028B12: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02028B1C +FUN_02028B1C: ; 0x02028B1C + push {r4-r5} + ldr r3, [r0, #0x0] + lsl r2, r3, #0x19 + lsr r5, r2, #0x19 + ldr r2, [r1, #0x0] + lsl r4, r2, #0x19 + lsr r4, r4, #0x19 + cmp r5, r4 + bne _02028B52 + lsl r4, r3, #0x15 + lsr r5, r4, #0x1c + lsl r4, r2, #0x15 + lsr r4, r4, #0x1c + cmp r5, r4 + bne _02028B52 + lsl r4, r3, #0xd + lsr r5, r4, #0x1b + lsl r4, r2, #0xd + lsr r4, r4, #0x1b + cmp r5, r4 + bne _02028B52 + lsl r3, r3, #0x12 + lsl r2, r2, #0x12 + lsr r3, r3, #0x1d + lsr r2, r2, #0x1d + cmp r3, r2 + beq _02028B56 +_02028B52: + ldr r1, [r1, #0x0] + str r1, [r0, #0x0] +_02028B56: + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_02028B5C +FUN_02028B5C: ; 0x02028B5C + push {r3, lr} + ldrb r2, [r1, #0x0] + cmp r2, #0x23 + bhi _02028BEE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02028B70: ; jump table (using 16-bit offset) + .short _02028BEE - _02028B70 - 2; case 0 + .short _02028BB8 - _02028B70 - 2; case 1 + .short _02028BB8 - _02028B70 - 2; case 2 + .short _02028BB8 - _02028B70 - 2; case 3 + .short _02028BB8 - _02028B70 - 2; case 4 + .short _02028BB8 - _02028B70 - 2; case 5 + .short _02028BB8 - _02028B70 - 2; case 6 + .short _02028BB8 - _02028B70 - 2; case 7 + .short _02028BB8 - _02028B70 - 2; case 8 + .short _02028BC0 - _02028B70 - 2; case 9 + .short _02028BC0 - _02028B70 - 2; case 10 + .short _02028BC8 - _02028B70 - 2; case 11 + .short _02028BD0 - _02028B70 - 2; case 12 + .short _02028BD8 - _02028B70 - 2; case 13 + .short _02028BD8 - _02028B70 - 2; case 14 + .short _02028BD8 - _02028B70 - 2; case 15 + .short _02028BB8 - _02028B70 - 2; case 16 + .short _02028BB8 - _02028B70 - 2; case 17 + .short _02028BE0 - _02028B70 - 2; case 18 + .short _02028BE8 - _02028B70 - 2; case 19 + .short _02028BE8 - _02028B70 - 2; case 20 + .short _02028BE8 - _02028B70 - 2; case 21 + .short _02028BE8 - _02028B70 - 2; case 22 + .short _02028BE8 - _02028B70 - 2; case 23 + .short _02028BE8 - _02028B70 - 2; case 24 + .short _02028BE8 - _02028B70 - 2; case 25 + .short _02028BE8 - _02028B70 - 2; case 26 + .short _02028BE8 - _02028B70 - 2; case 27 + .short _02028BE8 - _02028B70 - 2; case 28 + .short _02028BE8 - _02028B70 - 2; case 29 + .short _02028BE8 - _02028B70 - 2; case 30 + .short _02028BEE - _02028B70 - 2; case 31 + .short _02028BE8 - _02028B70 - 2; case 32 + .short _02028BE8 - _02028B70 - 2; case 33 + .short _02028BB8 - _02028B70 - 2; case 34 + .short _02028BB8 - _02028B70 - 2; case 35 +_02028BB8: + add r0, r0, #0x4 + bl FUN_02028CE8 + pop {r3, pc} +_02028BC0: + add r0, r0, #0x4 + bl FUN_02028D98 + pop {r3, pc} +_02028BC8: + add r0, r0, #0x4 + bl FUN_02028D44 + pop {r3, pc} +_02028BD0: + add r0, r0, #0x4 + bl FUN_02028D24 + pop {r3, pc} +_02028BD8: + add r0, r0, #0x4 + bl FUN_02028DFC + pop {r3, pc} +_02028BE0: + add r0, r0, #0x4 + bl FUN_02028E44 + pop {r3, pc} +_02028BE8: + add r0, r0, #0x4 + bl FUN_02028E8C +_02028BEE: + pop {r3, pc} + + thumb_func_start FUN_02028BF0 +FUN_02028BF0: ; 0x02028BF0 + ldrh r2, [r1, #0x0] + strh r2, [r0, #0x14] + ldrh r1, [r1, #0x2] + strh r1, [r0, #0x16] + bx lr + .balign 4 + + thumb_func_start FUN_02028BFC +FUN_02028BFC: ; 0x02028BFC + ldrh r2, [r1, #0x0] + strh r2, [r0, #0x18] + ldrh r1, [r1, #0x2] + strh r1, [r0, #0x1a] + bx lr + .balign 4 + + thumb_func_start FUN_02028C08 +FUN_02028C08: ; 0x02028C08 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + bl FUN_02028CA8 + ldrb r1, [r4, #0x0] + cmp r1, #0x10 + bhi _02028C6E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02028C24: ; jump table (using 16-bit offset) + .short _02028C6E - _02028C24 - 2; case 0 + .short _02028C46 - _02028C24 - 2; case 1 + .short _02028C46 - _02028C24 - 2; case 2 + .short _02028C46 - _02028C24 - 2; case 3 + .short _02028C46 - _02028C24 - 2; case 4 + .short _02028C46 - _02028C24 - 2; case 5 + .short _02028C4E - _02028C24 - 2; case 6 + .short _02028C56 - _02028C24 - 2; case 7 + .short _02028C5E - _02028C24 - 2; case 8 + .short _02028C56 - _02028C24 - 2; case 9 + .short _02028C5E - _02028C24 - 2; case 10 + .short _02028C46 - _02028C24 - 2; case 11 + .short _02028C5E - _02028C24 - 2; case 12 + .short _02028C68 - _02028C24 - 2; case 13 + .short _02028C5E - _02028C24 - 2; case 14 + .short _02028C56 - _02028C24 - 2; case 15 + .short _02028C5E - _02028C24 - 2; case 16 +_02028C46: + add r1, r4, #0x0 + bl FUN_02028ED4 + pop {r3-r5, pc} +_02028C4E: + add r1, r4, #0x0 + bl FUN_02028F10 + pop {r3-r5, pc} +_02028C56: + add r1, r4, #0x0 + bl FUN_02028F2C + pop {r3-r5, pc} +_02028C5E: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02028F60 + pop {r3-r5, pc} +_02028C68: + add r1, r4, #0x0 + bl FUN_02028F94 +_02028C6E: + pop {r3-r5, pc} + + thumb_func_start FUN_02028C70 +FUN_02028C70: ; 0x02028C70 + push {r3-r4} + mov r3, #0x0 + add r4, r0, #0x0 + mov r1, #0x3f +_02028C78: + ldr r2, [r4, #0x0] + tst r2, r1 + bne _02028C86 + lsl r1, r3, #0x2 + add r0, r0, r1 + pop {r3-r4} + bx lr +_02028C86: + add r3, r3, #0x1 + add r4, r4, #0x4 + cmp r3, #0x4 + blo _02028C78 + mov r3, #0x0 + add r2, r0, #0x0 +_02028C92: + ldr r1, [r2, #0x4] + add r3, r3, #0x1 + stmia r2!, {r1} + cmp r3, #0x3 + blo _02028C92 + lsl r2, r3, #0x2 + mov r1, #0x0 + str r1, [r0, r2] + add r0, r0, r2 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02028CA8 +FUN_02028CA8: ; 0x02028CA8 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 +_02028CB0: + ldrb r0, [r2, #0x1c] + cmp r0, #0x0 + bne _02028CC0 + mov r0, #0x2a + add r4, #0x1c + mul r0, r1 + add r0, r4, r0 + pop {r4, pc} +_02028CC0: + add r1, r1, #0x1 + add r2, #0x2a + cmp r1, #0x2 + blo _02028CB0 + add r0, r4, #0x0 + add r1, r4, #0x0 + add r0, #0x1c + add r1, #0x46 + mov r2, #0x2a + blx memcpy + add r4, #0x46 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x2a + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02028CE8 +FUN_02028CE8: ; 0x02028CE8 + push {r4, lr} + add r4, r1, #0x0 + mov r2, #0x0 + add r3, r0, #0x0 +_02028CF0: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _02028CFE + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, #0x4 + blo _02028CF0 +_02028CFE: + cmp r2, #0x0 + beq _02028D14 + lsl r2, r2, #0x2 + add r2, r0, r2 + sub r2, r2, #0x4 + ldr r3, [r2, #0x0] + mov r2, #0x3f + ldrb r1, [r4, #0x0] + and r2, r3 + cmp r1, r2 + beq _02028D20 +_02028D14: + bl FUN_02028C70 + ldrb r2, [r4, #0x0] + mov r1, #0x3f + and r1, r2 + str r1, [r0, #0x0] +_02028D20: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02028D24 +FUN_02028D24: ; 0x02028D24 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02028C70 + ldrb r2, [r4, #0x0] + mov r1, #0x3f + and r1, r2 + ldrh r2, [r4, #0x2] + lsl r3, r2, #0x10 + ldrh r2, [r4, #0x4] + lsl r2, r2, #0x16 + lsr r2, r2, #0x10 + orr r2, r3 + orr r1, r2 + str r1, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02028D44 +FUN_02028D44: ; 0x02028D44 + push {r3-r5, lr} + add r4, r1, #0x0 + mov r2, #0x0 + mov r3, #0x3f +_02028D4C: + lsl r1, r2, #0x2 + ldr r5, [r0, r1] + and r5, r3 + cmp r5, #0xb + bne _02028D72 + mov r3, #0x0 + str r3, [r0, r1] + cmp r2, #0x3 + bhs _02028D7C +_02028D5E: + lsl r3, r2, #0x2 + add r1, r0, r3 + ldr r1, [r1, #0x4] + str r1, [r0, r3] + add r1, r2, #0x1 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + cmp r2, #0x3 + blo _02028D5E + b _02028D7C +_02028D72: + add r1, r2, #0x1 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + cmp r2, #0x4 + blo _02028D4C +_02028D7C: + bl FUN_02028C70 + ldrb r2, [r4, #0x0] + mov r1, #0x3f + and r1, r2 + ldrh r2, [r4, #0x2] + lsl r3, r2, #0x10 + ldrh r2, [r4, #0x4] + lsl r2, r2, #0x16 + lsr r2, r2, #0x10 + orr r2, r3 + orr r1, r2 + str r1, [r0, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_02028D98 +FUN_02028D98: ; 0x02028D98 + push {r4-r6, lr} + add r4, r1, #0x0 + mov r6, #0x0 + mov r1, #0x3f +_02028DA0: + lsl r5, r6, #0x2 + ldr r3, [r0, r5] + add r2, r3, #0x0 + and r2, r1 + cmp r2, #0x9 + bne _02028DD4 + lsr r3, r3, #0x10 + lsl r3, r3, #0x10 + ldrh r2, [r4, #0x2] + lsr r3, r3, #0x10 + cmp r2, r3 + bne _02028DD4 + mov r1, #0x0 + str r1, [r0, r5] + cmp r6, #0x3 + bhs _02028DDE +_02028DC0: + lsl r2, r6, #0x2 + add r1, r0, r2 + ldr r1, [r1, #0x4] + str r1, [r0, r2] + add r1, r6, #0x1 + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + cmp r6, #0x3 + blo _02028DC0 + b _02028DDE +_02028DD4: + add r2, r6, #0x1 + lsl r2, r2, #0x10 + lsr r6, r2, #0x10 + cmp r6, #0x4 + blo _02028DA0 +_02028DDE: + bl FUN_02028C70 + ldrb r2, [r4, #0x0] + mov r1, #0x3f + and r1, r2 + ldrh r2, [r4, #0x2] + lsl r3, r2, #0x10 + ldrh r2, [r4, #0x4] + lsl r2, r2, #0x16 + lsr r2, r2, #0x10 + orr r2, r3 + orr r1, r2 + str r1, [r0, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02028DFC +FUN_02028DFC: ; 0x02028DFC + push {r4, lr} + add r4, r1, #0x0 + mov r2, #0x0 + add r3, r0, #0x0 +_02028E04: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _02028E12 + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, #0x4 + blo _02028E04 +_02028E12: + cmp r2, #0x0 + beq _02028E30 + lsl r1, r2, #0x2 + add r1, r0, r1 + sub r1, r1, #0x4 + ldr r3, [r1, #0x0] + mov r1, #0x3f + ldrb r2, [r4, #0x0] + and r1, r3 + cmp r2, r1 + bne _02028E30 + ldrh r2, [r4, #0x2] + lsr r1, r3, #0x10 + cmp r2, r1 + beq _02028E42 +_02028E30: + bl FUN_02028C70 + ldrh r1, [r4, #0x2] + ldrb r2, [r4, #0x0] + lsl r3, r1, #0x10 + mov r1, #0x3f + and r1, r2 + orr r1, r3 + str r1, [r0, #0x0] +_02028E42: + pop {r4, pc} + + thumb_func_start FUN_02028E44 +FUN_02028E44: ; 0x02028E44 + push {r4, lr} + add r4, r1, #0x0 + mov r2, #0x0 + add r3, r0, #0x0 +_02028E4C: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _02028E5A + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, #0x4 + blo _02028E4C +_02028E5A: + cmp r2, #0x0 + beq _02028E78 + lsl r1, r2, #0x2 + add r1, r0, r1 + sub r1, r1, #0x4 + ldr r3, [r1, #0x0] + mov r1, #0x3f + ldrb r2, [r4, #0x0] + and r1, r3 + cmp r2, r1 + bne _02028E78 + ldrh r2, [r4, #0x6] + lsr r1, r3, #0x10 + cmp r2, r1 + beq _02028E8A +_02028E78: + bl FUN_02028C70 + ldrh r1, [r4, #0x6] + ldrb r2, [r4, #0x0] + lsl r3, r1, #0x10 + mov r1, #0x3f + and r1, r2 + orr r1, r3 + str r1, [r0, #0x0] +_02028E8A: + pop {r4, pc} + + thumb_func_start FUN_02028E8C +FUN_02028E8C: ; 0x02028E8C + push {r4, lr} + add r4, r1, #0x0 + mov r2, #0x0 + add r3, r0, #0x0 +_02028E94: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _02028EA2 + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, #0x4 + blo _02028E94 +_02028EA2: + cmp r2, #0x0 + beq _02028EC0 + lsl r1, r2, #0x2 + add r1, r0, r1 + sub r1, r1, #0x4 + ldr r3, [r1, #0x0] + mov r1, #0x3f + ldrb r2, [r4, #0x0] + and r1, r3 + cmp r2, r1 + bne _02028EC0 + ldrh r2, [r4, #0x2] + lsr r1, r3, #0x10 + cmp r2, r1 + beq _02028ED2 +_02028EC0: + bl FUN_02028C70 + ldrh r1, [r4, #0x2] + ldrb r2, [r4, #0x0] + lsl r3, r1, #0x10 + mov r1, #0x3f + and r1, r2 + orr r1, r3 + str r1, [r0, #0x0] +_02028ED2: + pop {r4, pc} + + thumb_func_start FUN_02028ED4 +FUN_02028ED4: ; 0x02028ED4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldrb r0, [r4, #0x0] + strb r0, [r5, #0x0] + ldrb r3, [r4, #0x1] + lsl r1, r3, #0x1c + lsr r2, r1, #0x1a + lsl r1, r3, #0x1b + lsr r1, r1, #0x1f + lsl r0, r3, #0x1a + lsl r1, r1, #0x1 + orr r1, r2 + lsr r0, r0, #0x1f + orr r0, r1 + strb r0, [r5, #0x1] + add r0, r4, #0x2 + add r1, r5, #0x2 + mov r2, #0x8 + bl FUN_020292D4 + add r4, #0x12 + add r5, #0x12 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x8 + bl FUN_020292D4 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02028F10 +FUN_02028F10: ; 0x02028F10 + add r2, r0, #0x0 + ldrb r0, [r1, #0x0] + ldr r3, _02028F28 ; =FUN_020292D4 + strb r0, [r2, #0x0] + ldrb r0, [r1, #0x1] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + strb r0, [r2, #0x1] + add r0, r1, #0x2 + add r1, r2, #0x2 + mov r2, #0x8 + bx r3 + .balign 4 +_02028F28: .word FUN_020292D4 + + thumb_func_start FUN_02028F2C +FUN_02028F2C: ; 0x02028F2C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldrb r0, [r4, #0x0] + mov r2, #0x8 + strb r0, [r5, #0x0] + ldrb r0, [r4, #0x1] + lsl r1, r0, #0x1b + lsr r1, r1, #0x1f + lsl r0, r0, #0x18 + lsl r1, r1, #0x2 + lsr r0, r0, #0x1e + orr r0, r1 + strb r0, [r5, #0x1] + add r0, r4, #0x2 + add r1, r5, #0x2 + bl FUN_020292D4 + add r4, #0x22 + add r5, #0x12 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0xc + bl FUN_020292D4 + pop {r3-r5, pc} + + thumb_func_start FUN_02028F60 +FUN_02028F60: ; 0x02028F60 + push {r4, lr} + add r4, r1, #0x0 + mov r3, #0x0 + add r2, r0, #0x0 +_02028F68: + ldrb r1, [r2, #0x1c] + cmp r1, #0x0 + beq _02028F76 + add r3, r3, #0x1 + add r2, #0x2a + cmp r3, #0x2 + blo _02028F68 +_02028F76: + cmp r3, #0x0 + beq _02028F8A + mov r1, #0x2a + mul r1, r3 + add r1, r0, r1 + sub r1, #0xe + ldrb r2, [r4, #0x0] + ldrb r1, [r1, #0x0] + cmp r2, r1 + beq _02028F92 +_02028F8A: + bl FUN_02028CA8 + ldrb r1, [r4, #0x0] + strb r1, [r0, #0x0] +_02028F92: + pop {r4, pc} + + thumb_func_start FUN_02028F94 +FUN_02028F94: ; 0x02028F94 + ldrb r2, [r1, #0x0] + strb r2, [r0, #0x0] + ldrb r1, [r1, #0x1] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + strb r1, [r0, #0x1] + bx lr + .balign 4 + + thumb_func_start FUN_02028FA4 +FUN_02028FA4: ; 0x02028FA4 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_020126B4 + ldr r2, [r4, #0x0] + mov r0, #0x7f + bic r2, r0 + ldr r1, [sp, #0x0] + mov r0, #0x7f + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + str r1, [r4, #0x0] + add r2, r1, #0x0 + ldr r1, [sp, #0x4] + ldr r0, _02029008 ; =0xFFFFF87F + lsl r1, r1, #0x1c + and r2, r0 + lsr r1, r1, #0x15 + orr r2, r1 + ldr r1, _0202900C ; =0xFFF83FFF + str r2, [r4, #0x0] + and r2, r1 + ldr r1, [sp, #0x8] + lsr r0, r0, #0xd + lsl r1, r1, #0x1b + lsr r1, r1, #0xd + orr r2, r1 + ldr r1, _02029010 ; =0xFFFFC7FF + str r2, [r4, #0x0] + and r2, r1 + ldr r1, [sp, #0xc] + lsl r1, r1, #0x1d + lsr r1, r1, #0x12 + orr r1, r2 + and r1, r0 + lsl r0, r5, #0x13 + orr r0, r1 + str r0, [r4, #0x0] + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r5, pc} + nop +_02029008: .word 0xFFFFF87F +_0202900C: .word 0xFFF83FFF +_02029010: .word 0xFFFFC7FF + + thumb_func_start FUN_02029014 +FUN_02029014: ; 0x02029014 + push {r3, lr} + mov r1, #0x8 + bl FUN_02016998 + mov r1, #0x0 + 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] + pop {r3, pc} + + thumb_func_start FUN_02029030 +FUN_02029030: ; 0x02029030 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x1 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0202903C +FUN_0202903C: ; 0x0202903C + push {r3, lr} + bl FUN_02029014 + mov r1, #0x2 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029048 +FUN_02029048: ; 0x02029048 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x3 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029054 +FUN_02029054: ; 0x02029054 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x4 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029060 +FUN_02029060: ; 0x02029060 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x5 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0202906C +FUN_0202906C: ; 0x0202906C + push {r3, lr} + bl FUN_02029014 + mov r1, #0x6 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029078 +FUN_02029078: ; 0x02029078 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x7 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029084 +FUN_02029084: ; 0x02029084 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x8 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029090 +FUN_02029090: ; 0x02029090 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0x9 + strb r1, [r0, #0x0] + strh r4, [r0, #0x2] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020290A4 +FUN_020290A4: ; 0x020290A4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + bl FUN_02029014 + mov r1, #0xa + strb r1, [r0, #0x0] + strh r5, [r0, #0x2] + strh r4, [r0, #0x4] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020290BC +FUN_020290BC: ; 0x020290BC + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0xb + strb r1, [r0, #0x0] + strh r4, [r0, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020290D0 +FUN_020290D0: ; 0x020290D0 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0xc + strb r1, [r0, #0x0] + strh r4, [r0, #0x4] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020290E4 +FUN_020290E4: ; 0x020290E4 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0xd + strb r1, [r0, #0x0] + strh r4, [r0, #0x2] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020290F8 +FUN_020290F8: ; 0x020290F8 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0xe + strb r1, [r0, #0x0] + strh r4, [r0, #0x2] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202910C +FUN_0202910C: ; 0x0202910C + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0xf + strb r1, [r0, #0x0] + strh r4, [r0, #0x2] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02029120 +FUN_02029120: ; 0x02029120 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x10 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0202912C +FUN_0202912C: ; 0x0202912C + push {r3, lr} + bl FUN_02029014 + mov r1, #0x11 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029138 +FUN_02029138: ; 0x02029138 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02029014 + mov r1, #0x12 + strb r1, [r0, #0x0] + strh r4, [r0, #0x6] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202914C +FUN_0202914C: ; 0x0202914C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + add r4, r1, #0x0 + bl FUN_02029014 + add r5, #0x13 + strb r5, [r0, #0x0] + strh r4, [r0, #0x2] + pop {r3-r5, pc} + + thumb_func_start FUN_02029160 +FUN_02029160: ; 0x02029160 + push {r3, lr} + bl FUN_02029014 + mov r1, #0x22 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0202916C +FUN_0202916C: ; 0x0202916C + push {r3, lr} + bl FUN_02029014 + mov r1, #0x23 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029178 +FUN_02029178: ; 0x02029178 + push {r3, lr} + mov r1, #0x4 + bl FUN_02016998 + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strb r1, [r0, #0x2] + strb r1, [r0, #0x3] + pop {r3, pc} + + thumb_func_start FUN_0202918C +FUN_0202918C: ; 0x0202918C + push {r3-r7, lr} + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02029178 + add r4, r0, #0x0 + mov r0, #0x1 + strb r0, [r4, #0x0] + strh r5, [r4, #0x2] + ldrb r1, [r4, #0x1] + mov r0, #0xc0 + bic r1, r0 + lsl r0, r6, #0x1e + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x3c + bic r1, r0 + lsl r0, r7, #0x1c + lsr r0, r0, #0x1a + orr r0, r1 + strb r0, [r4, #0x1] + ldr r0, [sp, #0x0] + bl FUN_02029EC0 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _020291DA + cmp r0, #0x2 + beq _020291DA + cmp r0, #0x4 + bne _020291E4 +_020291DA: + ldrb r1, [r4, #0x1] + mov r0, #0x3 + bic r1, r0 + strb r1, [r4, #0x1] + b _02029206 +_020291E4: + cmp r0, #0x1 + beq _020291EC + cmp r0, #0x3 + bne _020291FA +_020291EC: + ldrb r1, [r4, #0x1] + mov r0, #0x3 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strb r0, [r4, #0x1] + b _02029206 +_020291FA: + ldrb r1, [r4, #0x1] + mov r0, #0x3 + bic r1, r0 + mov r0, #0x2 + orr r0, r1 + strb r0, [r4, #0x1] +_02029206: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202920C +FUN_0202920C: ; 0x0202920C + push {r3-r7, lr} + str r0, [sp, #0x0] + ldr r0, [sp, #0x18] + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02029178 + add r4, r0, #0x0 + mov r0, #0x2 + strb r0, [r4, #0x0] + strh r5, [r4, #0x2] + ldrb r1, [r4, #0x1] + mov r0, #0xc0 + bic r1, r0 + lsl r0, r6, #0x1e + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x3c + bic r1, r0 + lsl r0, r7, #0x1c + lsr r0, r0, #0x1a + orr r0, r1 + strb r0, [r4, #0x1] + ldr r0, [sp, #0x0] + bl FUN_02029EC0 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + beq _0202925C + cmp r0, #0x3 + beq _0202925C + cmp r0, #0x5 + bne _02029266 +_0202925C: + ldrb r1, [r4, #0x1] + mov r0, #0x3 + bic r1, r0 + strb r1, [r4, #0x1] + b _02029288 +_02029266: + cmp r0, #0x2 + beq _0202926E + cmp r0, #0x4 + bne _0202927C +_0202926E: + ldrb r1, [r4, #0x1] + mov r0, #0x3 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strb r0, [r4, #0x1] + b _02029288 +_0202927C: + ldrb r1, [r4, #0x1] + mov r0, #0x3 + bic r1, r0 + mov r0, #0x2 + orr r0, r1 + strb r0, [r4, #0x1] +_02029288: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0202928C +FUN_0202928C: ; 0x0202928C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x4 + bl FUN_02016998 + ldrh r2, [r0, #0x0] + mov r1, #0x1 + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strh r1, [r0, #0x0] + strh r5, [r0, #0x2] + ldrh r2, [r0, #0x0] + ldr r1, _020292B8 ; =0xFFFF0001 + and r2, r1 + lsl r1, r4, #0x11 + lsr r1, r1, #0x10 + orr r1, r2 + strh r1, [r0, #0x0] + pop {r3-r5, pc} + .balign 4 +_020292B8: .word 0xFFFF0001 + + thumb_func_start FUN_020292BC +FUN_020292BC: ; 0x020292BC + push {r4, lr} + mov r1, #0x3a + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x3a + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020292D4 +FUN_020292D4: ; 0x020292D4 + push {r4-r5} + mov r4, #0x0 + cmp r2, #0x0 + bls _020292EA + ldr r3, _02029308 ; =0x0000FFFF + add r5, r1, #0x0 +_020292E0: + add r4, r4, #0x1 + strh r3, [r5, #0x0] + add r5, r5, #0x2 + cmp r4, r2 + blo _020292E0 +_020292EA: + mov r5, #0x0 + cmp r2, #0x0 + bls _02029304 + ldr r3, _02029308 ; =0x0000FFFF +_020292F2: + ldrh r4, [r0, #0x0] + cmp r4, r3 + beq _02029304 + add r5, r5, #0x1 + strh r4, [r1, #0x0] + add r0, r0, #0x2 + add r1, r1, #0x2 + cmp r5, r2 + blo _020292F2 +_02029304: + pop {r4-r5} + bx lr + .balign 4 +_02029308: .word 0x0000FFFF + + thumb_func_start FUN_0202930C +FUN_0202930C: ; 0x0202930C + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, r3, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0x1 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0xf + mov r2, #0x8 + bic r0, r1 + mov r1, #0xf + and r1, r6 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x10 + bic r1, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202934C +FUN_0202934C: ; 0x0202934C + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, r3, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0x2 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0xf + mov r2, #0x8 + bic r0, r1 + mov r1, #0xf + and r1, r6 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x10 + bic r1, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202938C +FUN_0202938C: ; 0x0202938C + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, [sp, #0x1c] + str r1, [sp, #0x0] + add r5, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0x3 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0xf + bic r0, r1 + add r1, sp, #0x8 + ldrb r2, [r1, #0x10] + mov r1, #0xf + and r1, r2 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r0, [r4, #0x1] + mov r1, #0x10 + mov r2, #0x8 + bic r0, r1 + lsl r1, r5, #0x1f + lsr r1, r1, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x20 + bic r1, r0 + lsl r0, r6, #0x1f + lsr r0, r0, #0x1a + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r1, r4, #0x0 + ldr r0, [sp, #0x0] + add r1, #0x12 + mov r2, #0x8 + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020293EC +FUN_020293EC: ; 0x020293EC + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, r3, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0x4 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0xf + mov r2, #0x8 + bic r0, r1 + mov r1, #0xf + and r1, r6 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x10 + bic r1, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202942C +FUN_0202942C: ; 0x0202942C + push {r4-r6, lr} + add r6, r0, #0x0 + add r0, r2, #0x0 + add r5, r1, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0x6 + strb r0, [r4, #0x0] + ldrb r1, [r4, #0x1] + mov r0, #0x10 + mov r2, #0x8 + bic r1, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r6, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202945C +FUN_0202945C: ; 0x0202945C + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, [sp, #0x18] + add r5, r1, #0x0 + str r2, [sp, #0x0] + add r6, r3, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0x7 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0x10 + mov r2, #0x8 + bic r0, r1 + lsl r1, r5, #0x1f + lsr r1, r1, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0xc0 + bic r1, r0 + lsl r0, r6, #0x1e + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r1, r4, #0x0 + ldr r0, [sp, #0x0] + add r1, #0x22 + mov r2, #0xc + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020294A8 +FUN_020294A8: ; 0x020294A8 + push {r3, lr} + bl FUN_020292BC + mov r1, #0x8 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_020294B4 +FUN_020294B4: ; 0x020294B4 + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, r3, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0xb + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0xf + mov r2, #0x8 + bic r0, r1 + mov r1, #0xf + and r1, r6 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0x10 + bic r1, r0 + lsl r0, r5, #0x1f + lsr r0, r0, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020294F4 +FUN_020294F4: ; 0x020294F4 + push {r3, lr} + bl FUN_020292BC + mov r1, #0xc + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029500 +FUN_02029500: ; 0x02029500 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_020292BC + mov r1, #0xd + strb r1, [r0, #0x0] + ldrb r2, [r0, #0x1] + mov r1, #0xf + bic r2, r1 + mov r1, #0xf + and r1, r4 + orr r1, r2 + strb r1, [r0, #0x1] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02029520 +FUN_02029520: ; 0x02029520 + push {r3, lr} + bl FUN_020292BC + mov r1, #0xe + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0202952C +FUN_0202952C: ; 0x0202952C + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, [sp, #0x18] + add r5, r1, #0x0 + str r2, [sp, #0x0] + add r6, r3, #0x0 + bl FUN_020292BC + add r4, r0, #0x0 + mov r0, #0xf + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + mov r1, #0x10 + mov r2, #0x8 + bic r0, r1 + lsl r1, r5, #0x1f + lsr r1, r1, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r1, [r4, #0x1] + mov r0, #0xc0 + bic r1, r0 + lsl r0, r6, #0x1e + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_020292D4 + add r1, r4, #0x0 + ldr r0, [sp, #0x0] + add r1, #0x22 + mov r2, #0xc + bl FUN_020292D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02029578 +FUN_02029578: ; 0x02029578 + push {r3, lr} + bl FUN_020292BC + mov r1, #0x10 + strb r1, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_02029584 +FUN_02029584: ; 0x02029584 + push {r3, lr} + cmp r2, #0x4 + bhi _020295DA + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02029596: ; jump table (using 16-bit offset) + .short _020295A0 - _02029596 - 2; case 0 + .short _020295AC - _02029596 - 2; case 1 + .short _020295B8 - _02029596 - 2; case 2 + .short _020295C4 - _02029596 - 2; case 3 + .short _020295D0 - _02029596 - 2; case 4 +_020295A0: + mov r2, #0x70 + mul r2, r3 + add r0, r0, r2 + bl FUN_020295DC + pop {r3, pc} +_020295AC: + mov r2, #0x70 + mul r2, r3 + add r0, r0, r2 + bl FUN_020295E4 + pop {r3, pc} +_020295B8: + mov r2, #0x70 + mul r2, r3 + add r0, r0, r2 + bl FUN_02029690 + pop {r3, pc} +_020295C4: + mov r2, #0x70 + mul r2, r3 + add r0, r0, r2 + bl FUN_0202969C + pop {r3, pc} +_020295D0: + mov r2, #0x70 + mul r2, r3 + add r0, r0, r2 + bl FUN_020296A8 +_020295DA: + pop {r3, pc} + + thumb_func_start FUN_020295DC +FUN_020295DC: ; 0x020295DC + ldr r0, [r0, #0x0] + str r0, [r1, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020295E4 +FUN_020295E4: ; 0x020295E4 + push {r3-r7, lr} + mov r6, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r7, r6, #0x0 +_020295EE: + strb r7, [r4, #0x0] + strb r7, [r4, #0x1] + strb r7, [r4, #0x2] + strb r7, [r4, #0x3] + strb r7, [r4, #0x4] + strb r7, [r4, #0x5] + strb r7, [r4, #0x6] + strb r7, [r4, #0x7] + ldr r0, [r5, #0x4] + mov r1, #0x3f + and r1, r0 + cmp r1, #0x23 + bhi _02029682 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02029614: ; jump table (using 16-bit offset) + .short _02029682 - _02029614 - 2; case 0 + .short _0202965C - _02029614 - 2; case 1 + .short _0202965C - _02029614 - 2; case 2 + .short _0202965C - _02029614 - 2; case 3 + .short _0202965C - _02029614 - 2; case 4 + .short _0202965C - _02029614 - 2; case 5 + .short _0202965C - _02029614 - 2; case 6 + .short _0202965C - _02029614 - 2; case 7 + .short _0202965C - _02029614 - 2; case 8 + .short _02029664 - _02029614 - 2; case 9 + .short _02029664 - _02029614 - 2; case 10 + .short _02029664 - _02029614 - 2; case 11 + .short _02029664 - _02029614 - 2; case 12 + .short _0202966C - _02029614 - 2; case 13 + .short _0202966C - _02029614 - 2; case 14 + .short _0202966C - _02029614 - 2; case 15 + .short _0202965C - _02029614 - 2; case 16 + .short _0202965C - _02029614 - 2; case 17 + .short _02029674 - _02029614 - 2; case 18 + .short _0202967C - _02029614 - 2; case 19 + .short _0202967C - _02029614 - 2; case 20 + .short _0202967C - _02029614 - 2; case 21 + .short _0202967C - _02029614 - 2; case 22 + .short _0202967C - _02029614 - 2; case 23 + .short _0202967C - _02029614 - 2; case 24 + .short _0202967C - _02029614 - 2; case 25 + .short _0202967C - _02029614 - 2; case 26 + .short _0202967C - _02029614 - 2; case 27 + .short _0202967C - _02029614 - 2; case 28 + .short _0202967C - _02029614 - 2; case 29 + .short _0202967C - _02029614 - 2; case 30 + .short _02029682 - _02029614 - 2; case 31 + .short _0202967C - _02029614 - 2; case 32 + .short _0202967C - _02029614 - 2; case 33 + .short _0202965C - _02029614 - 2; case 34 + .short _0202965C - _02029614 - 2; case 35 +_0202965C: + add r1, r4, #0x0 + bl FUN_02029730 + b _02029682 +_02029664: + add r1, r4, #0x0 + bl FUN_02029738 + b _02029682 +_0202966C: + add r1, r4, #0x0 + bl FUN_02029750 + b _02029682 +_02029674: + add r1, r4, #0x0 + bl FUN_0202975C + b _02029682 +_0202967C: + add r1, r4, #0x0 + bl FUN_02029768 +_02029682: + add r6, r6, #0x1 + add r4, #0x8 + add r5, r5, #0x4 + cmp r6, #0x4 + blo _020295EE + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02029690 +FUN_02029690: ; 0x02029690 + ldrh r2, [r0, #0x14] + strh r2, [r1, #0x0] + ldrh r0, [r0, #0x16] + strh r0, [r1, #0x2] + bx lr + .balign 4 + + thumb_func_start FUN_0202969C +FUN_0202969C: ; 0x0202969C + ldrh r2, [r0, #0x18] + strh r2, [r1, #0x0] + ldrh r0, [r0, #0x1a] + strh r0, [r1, #0x2] + bx lr + .balign 4 + + thumb_func_start FUN_020296A8 +FUN_020296A8: ; 0x020296A8 + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r6, #0x0 + add r4, r1, #0x0 + mov r7, #0x0 + add r5, #0x1c +_020296B4: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x3a + blx Call_FillMemWithValue + ldrb r0, [r6, #0x1c] + cmp r0, #0x10 + bhi _02029722 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020296D0: ; jump table (using 16-bit offset) + .short _02029722 - _020296D0 - 2; case 0 + .short _020296F2 - _020296D0 - 2; case 1 + .short _020296F2 - _020296D0 - 2; case 2 + .short _020296F2 - _020296D0 - 2; case 3 + .short _020296F2 - _020296D0 - 2; case 4 + .short _020296F2 - _020296D0 - 2; case 5 + .short _020296FC - _020296D0 - 2; case 6 + .short _02029706 - _020296D0 - 2; case 7 + .short _02029710 - _020296D0 - 2; case 8 + .short _02029706 - _020296D0 - 2; case 9 + .short _02029710 - _020296D0 - 2; case 10 + .short _020296F2 - _020296D0 - 2; case 11 + .short _02029710 - _020296D0 - 2; case 12 + .short _0202971A - _020296D0 - 2; case 13 + .short _02029710 - _020296D0 - 2; case 14 + .short _02029706 - _020296D0 - 2; case 15 + .short _02029710 - _020296D0 - 2; case 16 +_020296F2: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029774 + b _02029722 +_020296FC: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020297E4 + b _02029722 +_02029706: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029808 + b _02029722 +_02029710: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029860 + b _02029722 +_0202971A: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029868 +_02029722: + add r7, r7, #0x1 + add r4, #0x3a + add r6, #0x2a + add r5, #0x2a + cmp r7, #0x2 + blo _020296B4 + pop {r3-r7, pc} + + thumb_func_start FUN_02029730 +FUN_02029730: ; 0x02029730 + mov r2, #0x3f + and r0, r2 + strb r0, [r1, #0x0] + bx lr + + thumb_func_start FUN_02029738 +FUN_02029738: ; 0x02029738 + mov r2, #0x3f + and r2, r0 + strb r2, [r1, #0x0] + lsr r3, r0, #0x6 + ldr r2, _0202974C ; =0x000003FF + lsr r0, r0, #0x10 + and r2, r3 + strh r2, [r1, #0x4] + strh r0, [r1, #0x2] + bx lr + .balign 4 +_0202974C: .word 0x000003FF + + thumb_func_start FUN_02029750 +FUN_02029750: ; 0x02029750 + mov r2, #0x3f + and r2, r0 + strb r2, [r1, #0x0] + lsr r0, r0, #0x10 + strh r0, [r1, #0x2] + bx lr + + thumb_func_start FUN_0202975C +FUN_0202975C: ; 0x0202975C + mov r2, #0x3f + and r2, r0 + strb r2, [r1, #0x0] + lsr r0, r0, #0x10 + strh r0, [r1, #0x6] + bx lr + + thumb_func_start FUN_02029768 +FUN_02029768: ; 0x02029768 + mov r2, #0x3f + and r2, r0 + strb r2, [r1, #0x0] + lsr r0, r0, #0x10 + strh r0, [r1, #0x2] + bx lr + + thumb_func_start FUN_02029774 +FUN_02029774: ; 0x02029774 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrb r0, [r5, #0x0] + add r4, r1, #0x0 + mov r1, #0xf + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + bic r0, r1 + ldrb r1, [r5, #0x1] + asr r2, r1, #0x2 + mov r1, #0x1f + and r1, r2 + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + mov r1, #0xf + and r1, r2 + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r0, [r4, #0x1] + mov r1, #0x10 + mov r2, #0x1 + bic r0, r1 + ldrb r1, [r5, #0x1] + asr r1, r1, #0x1 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r0, [r4, #0x1] + mov r1, #0x20 + bic r0, r1 + ldrb r1, [r5, #0x1] + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1a + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r5, #0x2 + add r1, r4, #0x2 + mov r2, #0x8 + bl FUN_020292D4 + add r5, #0x12 + add r4, #0x12 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x8 + bl FUN_020292D4 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020297E4 +FUN_020297E4: ; 0x020297E4 + ldrb r2, [r0, #0x0] + strb r2, [r1, #0x0] + ldrb r3, [r1, #0x1] + mov r2, #0x10 + bic r3, r2 + ldrb r2, [r0, #0x1] + add r0, r0, #0x2 + lsl r2, r2, #0x1f + lsr r2, r2, #0x1b + orr r2, r3 + strb r2, [r1, #0x1] + ldr r3, _02029804 ; =FUN_020292D4 + add r1, r1, #0x2 + mov r2, #0x8 + bx r3 + nop +_02029804: .word FUN_020292D4 + + thumb_func_start FUN_02029808 +FUN_02029808: ; 0x02029808 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrb r0, [r5, #0x0] + add r4, r1, #0x0 + mov r1, #0x10 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x1] + bic r0, r1 + ldrb r1, [r5, #0x1] + asr r2, r1, #0x2 + mov r1, #0x1 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1b + orr r0, r1 + strb r0, [r4, #0x1] + ldrb r0, [r4, #0x1] + mov r1, #0xc0 + ldrb r2, [r5, #0x1] + bic r0, r1 + mov r1, #0x3 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1e + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r4, #0x1] + add r0, r5, #0x2 + add r1, r4, #0x2 + mov r2, #0x8 + bl FUN_020292D4 + add r5, #0x12 + add r4, #0x22 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0xc + bl FUN_020292D4 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02029860 +FUN_02029860: ; 0x02029860 + ldrb r0, [r0, #0x0] + strb r0, [r1, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02029868 +FUN_02029868: ; 0x02029868 + ldrb r2, [r0, #0x0] + strb r2, [r1, #0x0] + ldrb r3, [r1, #0x1] + mov r2, #0xf + bic r3, r2 + ldrb r2, [r0, #0x1] + mov r0, #0xf + and r0, r2 + orr r0, r3 + strb r0, [r1, #0x1] + bx lr + .balign 4 + + thumb_func_start FUN_02029880 +FUN_02029880: ; 0x02029880 + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + mov r0, #0x0 + add r4, r3, #0x0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + str r1, [sp, #0x0] + add r5, r2, #0x0 + ldr r6, [sp, #0x20] + bl FUN_02034930 + cmp r0, #0x1 + bne _020298BA + add r0, r5, #0x0 + bl FUN_02034964 + cmp r0, #0x1 + bne _02029942 + add r0, r4, #0x0 + bl FUN_02034824 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r6, #0x0 + bl FUN_020290F8 + str r0, [sp, #0x4] + b _02029942 +_020298BA: + add r0, r4, #0x0 + bl FUN_02034944 + cmp r0, #0x1 + bne _0202991A + add r0, r5, #0x0 + bl FUN_02034964 + cmp r0, #0x1 + bne _02029942 + ldr r0, _02029958 ; =0x0000019E + cmp r4, r0 + bne _020298DE + add r0, r6, #0x0 + bl FUN_02029030 + str r0, [sp, #0x4] + b _02029942 +_020298DE: + add r0, #0x8 + cmp r4, r0 + bne _020298EE + add r0, r6, #0x0 + bl FUN_0202903C + str r0, [sp, #0x4] + b _02029942 +_020298EE: + add r0, r4, #0x0 + bl FUN_02034824 + add r7, r0, #0x0 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + ldr r5, _0202995C ; =0x020EE9A4 + mov r4, #0x0 + str r0, [sp, #0x8] +_02029900: + ldr r0, [r5, #0x0] + cmp r7, r0 + bne _02029910 + ldr r0, [sp, #0x8] + add r1, r6, #0x0 + bl FUN_0202910C + str r0, [sp, #0x4] +_02029910: + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, #0x1b + blo _02029900 + b _02029942 +_0202991A: + add r0, r4, #0x0 + bl FUN_02034964 + cmp r0, #0x1 + bne _02029942 + add r0, r5, #0x0 + bl FUN_02034944 + cmp r0, #0x1 + bne _02029942 + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_02029988 + cmp r0, #0xff + beq _02029942 + add r1, r6, #0x0 + bl FUN_02029090 + str r0, [sp, #0x4] +_02029942: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _02029952 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r2, #0x1 + bl FUN_02028AD4 +_02029952: + add sp, #0xc + pop {r4-r7, pc} + nop +_02029958: .word 0x0000019E +_0202995C: .word 0x020EE9A4 + + thumb_func_start FUN_02029960 +FUN_02029960: ; 0x02029960 + ldr r3, _02029980 ; =0x020EE9A4 + mov r2, #0x0 +_02029964: + ldr r1, [r3, #0x0] + cmp r0, r1 + bne _02029972 + ldr r0, _02029984 ; =0x020EE9A8 + lsl r1, r2, #0x3 + ldr r0, [r0, r1] + bx lr +_02029972: + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, #0x1b + blo _02029964 + mov r0, #0x0 + bx lr + nop +_02029980: .word 0x020EE9A4 +_02029984: .word 0x020EE9A8 + + thumb_func_start FUN_02029988 +FUN_02029988: ; 0x02029988 + push {r3-r5, lr} + ldr r2, _020299B8 ; =0x020EE964 + mov r4, #0x0 +_0202998E: + lsl r3, r4, #0x3 + add r5, r2, r3 + ldrh r5, [r5, #0x4] + cmp r1, r5 + bne _020299A8 + ldr r1, _020299BC ; =0x020EE96A + ldrh r1, [r1, r3] + bl FUN_020239D0 + cmp r0, #0x0 + bne _020299B2 + add r0, r4, #0x0 + pop {r3-r5, pc} +_020299A8: + add r3, r4, #0x1 + lsl r3, r3, #0x18 + lsr r4, r3, #0x18 + cmp r4, #0x8 + blo _0202998E +_020299B2: + mov r0, #0xff + pop {r3-r5, pc} + nop +_020299B8: .word 0x020EE964 +_020299BC: .word 0x020EE96A + + thumb_func_start FUN_020299C0 +FUN_020299C0: ; 0x020299C0 + push {r4, lr} + add r4, r0, #0x0 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + add r1, r2, #0x0 + bl FUN_020290E4 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_02028AD4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020299DC +FUN_020299DC: ; 0x020299DC + push {r3-r7, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r7, r1, #0x0 + add r6, r3, #0x0 + bl FUN_02029A48 + cmp r0, #0x8 + bhs _02029A04 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020290A4 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_02028AD4 + pop {r3-r7, pc} +_02029A04: + bne _02029A1A + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020290BC + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_02028AD4 + pop {r3-r7, pc} +_02029A1A: + cmp r0, #0x9 + bne _02029A32 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020290D0 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_02028AD4 + pop {r3-r7, pc} +_02029A32: + add r0, r7, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0202928C + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x3 + bl FUN_02028AD4 + pop {r3-r7, pc} + + thumb_func_start FUN_02029A48 +FUN_02029A48: ; 0x02029A48 + ldr r2, _02029A7C ; =0x020EE964 + mov r3, #0x0 +_02029A4C: + lsl r1, r3, #0x3 + ldr r1, [r2, r1] + cmp r0, r1 + bne _02029A58 + add r0, r3, #0x0 + bx lr +_02029A58: + add r1, r3, #0x1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x8 + blo _02029A4C + ldr r1, _02029A80 ; =0x00000105 + sub r2, r0, r1 + cmp r2, #0x3 + bhi _02029A6E + mov r0, #0x8 + bx lr +_02029A6E: + add r1, r1, #0x6 + cmp r0, r1 + bne _02029A78 + mov r0, #0x9 + bx lr +_02029A78: + mov r0, #0xa + bx lr + .balign 4 +_02029A7C: .word 0x020EE964 +_02029A80: .word 0x00000105 + + thumb_func_start FUN_02029A84 +FUN_02029A84: ; 0x02029A84 + mov r0, #0x62 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02029A8C +FUN_02029A8C: ; 0x02029A8C + push {r4-r6, lr} + mov r2, #0x62 + add r4, r0, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x4 + blx Call_FillMemWithValue + add r0, r4, #0x0 + bl FUN_02029ACC + add r5, r0, #0x0 + mov r4, #0x0 + mov r6, #0x8c +_02029AA6: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02029AD8 + add r4, r4, #0x1 + cmp r4, #0x8 + blt _02029AA6 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02029ABC +FUN_02029ABC: ; 0x02029ABC + ldr r3, _02029AC4 ; =FUN_02022610 + mov r1, #0x13 + bx r3 + nop +_02029AC4: .word FUN_02022610 + + thumb_func_start FUN_02029AC8 +FUN_02029AC8: ; 0x02029AC8 + add r0, #0x20 + bx lr + + thumb_func_start FUN_02029ACC +FUN_02029ACC: ; 0x02029ACC + bx lr + .balign 4 + + thumb_func_start FUN_02029AD0 +FUN_02029AD0: ; 0x02029AD0 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02029AD8 +FUN_02029AD8: ; 0x02029AD8 + lsl r0, r0, #0x2 + str r1, [r2, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02029AE0 +FUN_02029AE0: ; 0x02029AE0 + ldr r0, _02029AE4 ; =0x00000FF8 + bx lr + .balign 4 +_02029AE4: .word 0x00000FF8 + + thumb_func_start FUN_02029AE8 +FUN_02029AE8: ; 0x02029AE8 + ldr r3, _02029AF4 ; =MIi_CpuClear32 + add r1, r0, #0x0 + mov r0, #0x0 + ldr r2, _02029AF8 ; =0x00000FF8 + bx r3 + nop +_02029AF4: .word MIi_CpuClear32 +_02029AF8: .word 0x00000FF8 + + thumb_func_start FUN_02029AFC +FUN_02029AFC: ; 0x02029AFC + ldr r3, _02029B04 ; =FUN_02022610 + mov r1, #0x1e + bx r3 + nop +_02029B04: .word FUN_02022610 + + thumb_func_start FUN_02029B08 +FUN_02029B08: ; 0x02029B08 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r0, #0x1 + add r5, r1, #0x0 + lsl r0, r0, #0x8 + add r4, r2, #0x0 + cmp r5, r0 + blt _02029B1C + bl ErrorHandling +_02029B1C: + cmp r4, #0x40 + blt _02029B24 + bl ErrorHandling +_02029B24: + strb r5, [r6, #0x5] + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x3 + strb r4, [r6, #0x6] + bl FUN_02029B90 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02029B38 +FUN_02029B38: ; 0x02029B38 + ldrb r0, [r0, #0x5] + bx lr + + thumb_func_start FUN_02029B3C +FUN_02029B3C: ; 0x02029B3C + ldrb r0, [r0, #0x6] + bx lr + + thumb_func_start FUN_02029B40 +FUN_02029B40: ; 0x02029B40 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r0, #0x1 + add r5, r1, #0x0 + lsl r0, r0, #0x8 + add r4, r2, #0x0 + cmp r5, r0 + blt _02029B54 + bl ErrorHandling +_02029B54: + cmp r4, #0x40 + blt _02029B5C + bl ErrorHandling +_02029B5C: + cmp r5, #0x0 + bne _02029B64 + mov r0, #0x0 + pop {r4-r6, pc} +_02029B64: + asr r0, r4, #0x1 + lsr r0, r0, #0x1e + add r0, r4, r0 + asr r1, r0, #0x2 + sub r0, r5, #0x1 + lsl r0, r0, #0x4 + add r0, r1, r0 + add r0, r6, r0 + ldrb r3, [r0, #0x7] + lsr r2, r4, #0x1f + lsl r1, r4, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x1 + add r1, r3, #0x0 + asr r1, r0 + mov r0, #0x3 + and r0, r1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02029B90 +FUN_02029B90: ; 0x02029B90 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + str r3, [sp, #0x0] + cmp r3, #0x4 + blt _02029BA2 + bl ErrorHandling +_02029BA2: + mov r0, #0x1 + lsl r0, r0, #0x8 + cmp r5, r0 + blt _02029BAE + bl ErrorHandling +_02029BAE: + cmp r4, #0x40 + blt _02029BB6 + bl ErrorHandling +_02029BB6: + cmp r5, #0x0 + beq _02029BFE + asr r0, r4, #0x1 + lsr r0, r0, #0x1e + add r0, r4, r0 + asr r2, r0, #0x2 + sub r0, r5, #0x1 + lsl r0, r0, #0x4 + add r0, r2, r0 + lsr r2, r4, #0x1f + lsl r4, r4, #0x1e + sub r4, r4, r2 + mov r3, #0x1e + ror r4, r3 + add r2, r2, r4 + lsl r6, r2, #0x1 + mov r2, #0x3 + add r3, r2, #0x0 + add r1, r7, #0x7 + ldrb r4, [r1, r0] + lsl r3, r6 + mov r2, #0xff + eor r2, r3 + and r2, r4 + ldr r3, [sp, #0x0] + strb r2, [r1, r0] + ldrb r2, [r1, r0] + lsl r3, r6 + orr r2, r3 + strb r2, [r1, r0] + cmp r5, #0x67 + beq _02029BFE + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_02029C04 +_02029BFE: + pop {r3-r7, pc} + + thumb_func_start FUN_02029C00 +FUN_02029C00: ; 0x02029C00 + ldrb r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02029C04 +FUN_02029C04: ; 0x02029C04 + strb r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_02029C08 +FUN_02029C08: ; 0x02029C08 + push {r3-r7, lr} + mov lr, r0 + mov r0, #0x3 + mov r7, #0x0 + mov r4, #0x2 + mov r6, #0xff + add r3, r0, #0x0 +_02029C16: + mov r1, lr + add r1, r1, r7 + ldrb r2, [r1, #0x7] + mov r12, r1 + mov r1, #0x0 +_02029C20: + add r5, r2, #0x0 + asr r5, r1 + and r5, r3 + cmp r5, #0x1 + bne _02029C40 + add r5, r0, #0x0 + lsl r5, r1 + eor r5, r6 + and r2, r5 + lsl r2, r2, #0x18 + lsr r5, r2, #0x18 + add r2, r4, #0x0 + lsl r2, r1 + orr r2, r5 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 +_02029C40: + add r1, r1, #0x2 + cmp r1, #0x8 + blt _02029C20 + mov r1, r12 + strb r2, [r1, #0x7] + mov r1, #0xff + add r7, r7, #0x1 + lsl r1, r1, #0x4 + cmp r7, r1 + blt _02029C16 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02029C58 +FUN_02029C58: ; 0x02029C58 + mov r0, #0x17 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02029C60 +FUN_02029C60: ; 0x02029C60 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02029C58 + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x0 + blx MI_CpuFill8 + pop {r4, pc} + + thumb_func_start FUN_02029C74 +FUN_02029C74: ; 0x02029C74 + ldr r3, _02029C7C ; =MI_CpuCopy8 + mov r2, #0x18 + bx r3 + nop +_02029C7C: .word MI_CpuCopy8 + + thumb_func_start FUN_02029C80 +FUN_02029C80: ; 0x02029C80 + ldr r3, _02029C88 ; =FUN_02022610 + mov r1, #0x15 + bx r3 + nop +_02029C88: .word FUN_02022610 + + thumb_func_start FUN_02029C8C +FUN_02029C8C: ; 0x02029C8C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0xc + blt _02029C9A + bl ErrorHandling +_02029C9A: + mov r0, #0x18 + mul r0, r4 + add r0, r5, r0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02029CA4 +FUN_02029CA4: ; 0x02029CA4 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r6, #0xc + blt _02029CB4 + bl ErrorHandling +_02029CB4: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02029C8C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02029C74 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02029CC8 +FUN_02029CC8: ; 0x02029CC8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x8 + blt _02029CD6 + bl ErrorHandling +_02029CD6: + lsl r0, r4, #0x1 + add r0, r4, r0 + add r0, r5, r0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02029CE0 +FUN_02029CE0: ; 0x02029CE0 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02029CE4 +FUN_02029CE4: ; 0x02029CE4 + ldrb r0, [r0, #0x1] + bx lr + + thumb_func_start FUN_02029CE8 +FUN_02029CE8: ; 0x02029CE8 + ldrb r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_02029CEC +FUN_02029CEC: ; 0x02029CEC + mov r1, #0x12 + lsl r1, r1, #0x4 + add r0, r0, r1 + bx lr + + thumb_func_start FUN_02029CF4 +FUN_02029CF4: ; 0x02029CF4 + ldrb r0, [r0, r1] + bx lr + + thumb_func_start FUN_02029CF8 +FUN_02029CF8: ; 0x02029CF8 + mov r3, #0x0 + add r2, r1, #0x1 +_02029CFC: + ldrb r1, [r0, #0x0] + cmp r2, r1 + bne _02029D06 + mov r0, #0x1 + bx lr +_02029D06: + add r3, r3, #0x1 + add r0, r0, #0x3 + cmp r3, #0x8 + blt _02029CFC + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02029D14 +FUN_02029D14: ; 0x02029D14 + push {r4-r7} + mov r6, #0x0 + add r4, r6, #0x0 + add r2, r1, #0x1 + add r3, r6, #0x0 +_02029D1E: + add r5, r3, #0x0 + add r7, r0, #0x0 +_02029D22: + ldrb r1, [r7, #0x0] + cmp r2, r1 + bne _02029D2A + add r6, r6, #0x1 +_02029D2A: + add r5, r5, #0x1 + add r7, r7, #0x3 + cmp r5, #0x8 + blt _02029D22 + add r4, r4, #0x1 + add r0, #0x18 + cmp r4, #0xc + blt _02029D1E + add r0, r6, #0x0 + pop {r4-r7} + bx lr + + thumb_func_start FUN_02029D40 +FUN_02029D40: ; 0x02029D40 + strb r2, [r0, r1] + bx lr + + thumb_func_start FUN_02029D44 +FUN_02029D44: ; 0x02029D44 + push {r4-r6, lr} + add r5, r1, #0x0 + sub r1, r5, #0x1 + add r6, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02029D14 + mov r1, #0x12 + lsl r1, r1, #0x4 + add r2, r6, r1 + sub r1, r5, #0x1 + ldrb r3, [r2, r1] + add r0, r0, r3 + cmp r4, #0x0 + bge _02029D6E + add r0, r4, r3 + bmi _02029D6A + strb r0, [r2, r1] + b _02029D7E +_02029D6A: + mov r0, #0x0 + pop {r4-r6, pc} +_02029D6E: + add r0, r0, r4 + cmp r0, #0x63 + bgt _02029D7A + add r0, r3, r4 + strb r0, [r2, r1] + b _02029D7E +_02029D7A: + mov r0, #0x0 + pop {r4-r6, pc} +_02029D7E: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02029D84 +FUN_02029D84: ; 0x02029D84 + push {r4-r6, lr} + add r5, r1, #0x0 + sub r1, r5, #0x1 + add r6, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02029D14 + cmp r4, #0x0 + bge _02029DAC + mov r0, #0x12 + lsl r0, r0, #0x4 + add r2, r6, r0 + sub r1, r5, #0x1 + ldrb r0, [r2, r1] + add r0, r4, r0 + bmi _02029DA8 + strb r0, [r2, r1] + b _02029DD0 +_02029DA8: + mov r0, #0x0 + pop {r4-r6, pc} +_02029DAC: + add r0, r0, r4 + cmp r0, #0x63 + bgt _02029DCC + mov r0, #0x12 + lsl r0, r0, #0x4 + add r2, r6, r0 + sub r1, r5, #0x1 + ldrb r0, [r2, r1] + add r0, r0, r4 + strb r0, [r2, r1] + ldrb r0, [r2, r1] + cmp r0, #0x63 + blo _02029DD0 + mov r0, #0x63 + strb r0, [r2, r1] + b _02029DD0 +_02029DCC: + mov r0, #0x0 + pop {r4-r6, pc} +_02029DD0: + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_02029DD4 +FUN_02029DD4: ; 0x02029DD4 + push {r4-r6, lr} + add r5, r1, #0x0 + sub r1, r5, #0x1 + add r6, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02029D14 + sub r1, r5, #0x1 + add r2, r6, r1 + mov r1, #0x12 + lsl r1, r1, #0x4 + ldrb r1, [r2, r1] + add r0, r0, r1 + cmp r4, #0x0 + bge _02029DFE + add r0, r4, r1 + bmi _02029DFA + mov r0, #0x1 + pop {r4-r6, pc} +_02029DFA: + mov r0, #0x0 + pop {r4-r6, pc} +_02029DFE: + add r0, r0, r4 + cmp r0, #0x63 + bgt _02029E08 + mov r0, #0x1 + pop {r4-r6, pc} +_02029E08: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02029E0C +FUN_02029E0C: ; 0x02029E0C + push {r4-r6, lr} + add r6, r0, #0x0 + mov r5, #0x0 + mov r4, #0x1 +_02029E14: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02029E2C + cmp r0, #0x0 + beq _02029E22 + add r5, r5, #0x1 +_02029E22: + add r4, r4, #0x1 + cmp r4, #0x51 + blt _02029E14 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02029E2C +FUN_02029E2C: ; 0x02029E2C + push {r3-r5, lr} + add r5, r1, #0x0 + sub r1, r5, #0x1 + add r4, r0, #0x0 + bl FUN_02029D14 + sub r1, r5, #0x1 + add r2, r4, r1 + mov r1, #0x12 + lsl r1, r1, #0x4 + ldrb r1, [r2, r1] + add r0, r0, r1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02029E48 +FUN_02029E48: ; 0x02029E48 + mov r1, #0x0 + strh r1, [r0, #0x0] + strb r1, [r0, #0x2] + strb r1, [r0, #0x3] + bx lr + .balign 4 + + thumb_func_start FUN_02029E54 +FUN_02029E54: ; 0x02029E54 + push {r3-r7, lr} + add r5, r0, #0x0 + ldrh r6, [r5, #0x0] + ldr r0, _02029EB8 ; =0x000003E7 + cmp r6, r0 + bne _02029E6C + ldrb r0, [r5, #0x2] + cmp r0, #0x3b + bne _02029E6C + ldrb r0, [r5, #0x3] + cmp r0, #0x3b + beq _02029EB4 +_02029E6C: + ldrb r0, [r5, #0x3] + ldrb r4, [r5, #0x2] + add r7, r0, r1 + cmp r7, #0x3b + bls _02029EAE + add r0, r7, #0x0 + mov r1, #0x3c + blx _u32_div_f + add r4, r4, r0 + add r0, r7, #0x0 + mov r1, #0x3c + blx _u32_div_f + add r7, r1, #0x0 + cmp r4, #0x3b + bls _02029EAE + add r0, r4, #0x0 + mov r1, #0x3c + blx _u32_div_f + add r6, r6, r0 + add r0, r4, #0x0 + mov r1, #0x3c + blx _u32_div_f + ldr r0, _02029EB8 ; =0x000003E7 + add r4, r1, #0x0 + cmp r6, r0 + blo _02029EAE + mov r4, #0x3b + add r6, r0, #0x0 + add r7, r4, #0x0 +_02029EAE: + strh r6, [r5, #0x0] + strb r4, [r5, #0x2] + strb r7, [r5, #0x3] +_02029EB4: + pop {r3-r7, pc} + nop +_02029EB8: .word 0x000003E7 + + thumb_func_start FUN_02029EBC +FUN_02029EBC: ; 0x02029EBC + ldrh r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02029EC0 +FUN_02029EC0: ; 0x02029EC0 + ldrb r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_02029EC4 +FUN_02029EC4: ; 0x02029EC4 + mov r0, #0xfb + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_02029ECC +FUN_02029ECC: ; 0x02029ECC + push {r4, lr} + add r4, r0, #0x0 + mov r2, #0xfb + mov r0, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + blx MIi_CpuClear32 + mov r0, #0x0 + str r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02029EE4 +FUN_02029EE4: ; 0x02029EE4 + push {r4, lr} + mov r1, #0xfb + lsl r1, r1, #0x2 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_02029ECC + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02029EF8 +FUN_02029EF8: ; 0x02029EF8 + ldr r3, _02029F00 ; =FUN_02022610 + mov r1, #0x16 + bx r3 + nop +_02029F00: .word FUN_02022610 + + thumb_func_start FUN_02029F04 +FUN_02029F04: ; 0x02029F04 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02029F08 +FUN_02029F08: ; 0x02029F08 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02029F10 +FUN_02029F10: ; 0x02029F10 + add r0, r0, #0x4 + bx lr + + thumb_func_start FUN_02029F14 +FUN_02029F14: ; 0x02029F14 + push {r4-r7} + mov r5, #0x0 + mov r2, #0xfa + add r4, r5, #0x0 + mov r6, #0xf + lsl r2, r2, #0x2 +_02029F20: + ldrsb r7, [r1, r4] + add r3, r0, r5 + and r7, r6 + lsl r7, r7, #0x18 + lsr r7, r7, #0x18 + sub r7, #0x8 + lsl r7, r7, #0x18 + asr r7, r7, #0x14 + strb r7, [r0, r5] + ldrsb r7, [r1, r4] + add r4, r4, #0x1 + add r5, r5, #0x2 + lsl r7, r7, #0x14 + lsr r7, r7, #0x18 + sub r7, #0x8 + lsl r7, r7, #0x18 + asr r7, r7, #0x14 + strb r7, [r3, #0x1] + cmp r4, r2 + blt _02029F20 + pop {r4-r7} + bx lr + + thumb_func_start FUN_02029F4C +FUN_02029F4C: ; 0x02029F4C + push {r4-r7} + add r3, r0, #0x0 + add r2, r1, #0x0 + mov r0, #0x1 + mov r1, #0x0 + str r0, [r3, #0x0] + add r0, r1, #0x0 +_02029F5A: + ldrsb r4, [r2, r0] + add r6, r3, r1 + add r7, r2, r0 + asr r5, r4, #0x3 + lsr r5, r5, #0x1c + add r5, r4, r5 + lsl r4, r5, #0x14 + asr r4, r4, #0x18 + add r4, #0x8 + strb r4, [r6, #0x4] + mov r4, #0x4 + ldrsb r5, [r6, r4] + mov r4, #0x1 + ldrsb r4, [r7, r4] + add r0, r0, #0x2 + add r1, r1, #0x1 + asr r7, r4, #0x3 + lsr r7, r7, #0x1c + add r7, r4, r7 + lsl r4, r7, #0x14 + asr r4, r4, #0x18 + add r4, #0x8 + lsl r4, r4, #0x18 + lsr r4, r4, #0x14 + orr r4, r5 + strb r4, [r6, #0x4] + mov r4, #0x7d + lsl r4, r4, #0x4 + cmp r0, r4 + blt _02029F5A + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02029F9C +FUN_02029F9C: ; 0x02029F9C + add r2, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + mov r2, #0xfb + ldr r3, _02029FAC ; =MIi_CpuCopyFast + lsl r2, r2, #0x2 + bx r3 + nop +_02029FAC: .word MIi_CpuCopyFast + + thumb_func_start FUN_02029FB0 +FUN_02029FB0: ; 0x02029FB0 + mov r0, #0x53 + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_02029FB8 +FUN_02029FB8: ; 0x02029FB8 + ldr r3, _02029FC4 ; =MIi_CpuClear32 + mov r2, #0x53 + add r1, r0, #0x0 + mov r0, #0x0 + lsl r2, r2, #0x2 + bx r3 + .balign 4 +_02029FC4: .word MIi_CpuClear32 + + thumb_func_start FUN_02029FC8 +FUN_02029FC8: ; 0x02029FC8 + ldr r3, _02029FD0 ; =FUN_02022610 + mov r1, #0x14 + bx r3 + nop +_02029FD0: .word FUN_02022610 + + thumb_func_start FUN_02029FD4 +FUN_02029FD4: ; 0x02029FD4 + push {r3, lr} + cmp r1, #0x2c + bge _02029FE0 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r3, pc} +_02029FE0: + cmp r1, #0x79 + bge _02029FF0 + sub r1, #0x2c + lsl r1, r1, #0x1 + add r0, r0, r1 + add r0, #0xb0 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02029FF0: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02029FF8 +FUN_02029FF8: ; 0x02029FF8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x2c + bge _0202A008 + lsl r0, r4, #0x2 + str r2, [r5, r0] + b _0202A01E +_0202A008: + cmp r4, #0x79 + bge _0202A01A + add r0, r4, #0x0 + sub r0, #0x2c + lsl r0, r0, #0x1 + add r0, r5, r0 + add r0, #0xb0 + strh r2, [r0, #0x0] + b _0202A01E +_0202A01A: + bl ErrorHandling +_0202A01E: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029FD4 + pop {r3-r5, pc} + + thumb_func_start FUN_0202A028 +FUN_0202A028: ; 0x0202A028 + push {r3, lr} + cmp r0, #0x2c + bge _0202A03E + ldr r1, _0202A05C ; =0x02105CD8 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202A03A + ldr r0, _0202A060 ; =0x3B9AC9FF + pop {r3, pc} +_0202A03A: + ldr r0, _0202A064 ; =0x000F423F + pop {r3, pc} +_0202A03E: + cmp r0, #0x79 + bge _0202A052 + ldr r1, _0202A05C ; =0x02105CD8 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202A04E + ldr r0, _0202A068 ; =0x0000FFFF + pop {r3, pc} +_0202A04E: + ldr r0, _0202A06C ; =0x0000270F + pop {r3, pc} +_0202A052: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + nop +_0202A05C: .word 0x02105CD8 +_0202A060: .word 0x3B9AC9FF +_0202A064: .word 0x000F423F +_0202A068: .word 0x0000FFFF +_0202A06C: .word 0x0000270F + + thumb_func_start FUN_0202A070 +FUN_0202A070: ; 0x0202A070 + lsl r1, r0, #0x1 + ldr r0, _0202A078 ; =0x020EEA7C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_0202A078: .word 0x020EEA7C + + thumb_func_start FUN_0202A07C +FUN_0202A07C: ; 0x0202A07C + push {r4-r6, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r4, r2, #0x0 + bl FUN_0202A028 + add r2, r0, #0x0 + cmp r4, r2 + bhs _0202A09C + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02029FF8 + pop {r4-r6, pc} +_0202A09C: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02029FF8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202A0A8 +FUN_0202A0A8: ; 0x0202A0A8 + push {r3-r7, lr} + add r6, r1, #0x0 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r5, r2, #0x0 + bl FUN_0202A028 + add r4, r0, #0x0 + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_02029FD4 + cmp r5, r4 + bls _0202A0C6 + add r5, r4, #0x0 +_0202A0C6: + cmp r0, r5 + bhs _0202A0D6 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02029FF8 + pop {r3-r7, pc} +_0202A0D6: + cmp r0, r4 + bls _0202A0E4 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02029FF8 +_0202A0E4: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202A0E8 +FUN_0202A0E8: ; 0x0202A0E8 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0202A028 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02029FD4 + add r2, r0, #0x1 + cmp r2, r4 + bhs _0202A10E + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02029FF8 + pop {r4-r6, pc} +_0202A10E: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02029FF8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202A11C +FUN_0202A11C: ; 0x0202A11C + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r7, r2, #0x0 + bl FUN_0202A028 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029FD4 + add r2, r0, r7 + cmp r2, r6 + bhs _0202A144 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029FF8 + pop {r3-r7, pc} +_0202A144: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02029FF8 + pop {r3-r7, pc} + + thumb_func_start FUN_0202A150 +FUN_0202A150: ; 0x0202A150 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0202A028 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02029FD4 + cmp r0, r4 + bhi _0202A16C + add r4, r0, #0x0 +_0202A16C: + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0202A170 +FUN_0202A170: ; 0x0202A170 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x26 + blt _0202A17E + bl ErrorHandling +_0202A17E: + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0202A150 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202A070 + ldr r2, _0202A1B4 ; =0x05F5E0FF + add r0, r6, r0 + cmp r0, r2 + bls _0202A1A0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0202A07C + pop {r4-r6, pc} +_0202A1A0: + add r0, r4, #0x0 + bl FUN_0202A070 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0202A11C + pop {r4-r6, pc} + nop +_0202A1B4: .word 0x05F5E0FF + + thumb_func_start FUN_0202A1B8 +FUN_0202A1B8: ; 0x0202A1B8 + ldr r3, _0202A1C0 ; =FUN_0202A150 + mov r1, #0x0 + bx r3 + nop +_0202A1C0: .word FUN_0202A150 + + thumb_func_start FUN_0202A1C4 +FUN_0202A1C4: ; 0x0202A1C4 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + bl FUN_02024594 + cmp r0, #0x0 + bne _0202A1DC + add r0, r4, #0x0 + mov r1, #0x16 + bl FUN_0202A170 +_0202A1DC: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202A1E0 +FUN_0202A1E0: ; 0x0202A1E0 + mov r0, #0xe4 + bx lr + + thumb_func_start FUN_0202A1E4 +FUN_0202A1E4: ; 0x0202A1E4 + ldr r3, _0202A1EC ; =MI_CpuFill8 + mov r1, #0x0 + mov r2, #0x3c + bx r3 + .balign 4 +_0202A1EC: .word MI_CpuFill8 + + thumb_func_start FUN_0202A1F0 +FUN_0202A1F0: ; 0x0202A1F0 + push {r4, lr} + mov r2, #0x5a + mov r1, #0x0 + lsl r2, r2, #0x2 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x1 + strb r0, [r4, #0x3] + pop {r4, pc} + + thumb_func_start FUN_0202A204 +FUN_0202A204: ; 0x0202A204 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_02013764 + add r0, r4, #0x0 + add r0, #0x8 + mov r1, #0x1 + bl FUN_02013764 + add r0, r4, #0x0 + add r0, #0x10 + mov r1, #0x2 + bl FUN_02013764 + add r4, #0x18 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02013764 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202A230 +FUN_0202A230: ; 0x0202A230 + ldr r3, _0202A238 ; =MI_CpuFill8 + mov r1, #0x0 + ldr r2, _0202A23C ; =0x00000B3C + bx r3 + .balign 4 +_0202A238: .word MI_CpuFill8 +_0202A23C: .word 0x00000B3C + + thumb_func_start FUN_0202A240 +FUN_0202A240: ; 0x0202A240 + push {r3, lr} + cmp r1, #0xa + bhi _0202A2BE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0202A252: ; jump table (using 16-bit offset) + .short _0202A268 - _0202A252 - 2; case 0 + .short _0202A270 - _0202A252 - 2; case 1 + .short _0202A274 - _0202A252 - 2; case 2 + .short _0202A278 - _0202A252 - 2; case 3 + .short _0202A27C - _0202A252 - 2; case 4 + .short _0202A280 - _0202A252 - 2; case 5 + .short _0202A28E - _0202A252 - 2; case 6 + .short _0202A29C - _0202A252 - 2; case 7 + .short _0202A2A4 - _0202A252 - 2; case 8 + .short _0202A2B2 - _0202A252 - 2; case 9 + .short _0202A2BA - _0202A252 - 2; case 10 +_0202A268: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1d + pop {r3, pc} +_0202A270: + ldrb r0, [r0, #0x2] + pop {r3, pc} +_0202A274: + ldrb r0, [r0, #0x3] + pop {r3, pc} +_0202A278: + ldrh r0, [r0, #0x4] + pop {r3, pc} +_0202A27C: + ldrh r0, [r0, #0x6] + pop {r3, pc} +_0202A280: + add r1, r2, #0x0 + add r0, #0x8 + mov r2, #0x4 + blx MI_CpuCopy8 + mov r0, #0x0 + pop {r3, pc} +_0202A28E: + add r1, r2, #0x0 + add r0, #0x2c + mov r2, #0x10 + blx MI_CpuCopy8 + mov r0, #0x0 + pop {r3, pc} +_0202A29C: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + pop {r3, pc} +_0202A2A4: + add r1, r2, #0x0 + add r0, #0xc + mov r2, #0x1c + blx MI_CpuCopy8 + mov r0, #0x0 + pop {r3, pc} +_0202A2B2: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1d + pop {r3, pc} +_0202A2BA: + ldr r0, [r0, #0x28] + pop {r3, pc} +_0202A2BE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202A2C4 +FUN_0202A2C4: ; 0x0202A2C4 + push {r4, lr} + add r3, r0, #0x0 + cmp r1, #0xa + bhi _0202A36A + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202A2D8: ; jump table (using 16-bit offset) + .short _0202A2EE - _0202A2D8 - 2; case 0 + .short _0202A300 - _0202A2D8 - 2; case 1 + .short _0202A306 - _0202A2D8 - 2; case 2 + .short _0202A30C - _0202A2D8 - 2; case 3 + .short _0202A312 - _0202A2D8 - 2; case 4 + .short _0202A318 - _0202A2D8 - 2; case 5 + .short _0202A326 - _0202A2D8 - 2; case 6 + .short _0202A334 - _0202A2D8 - 2; case 7 + .short _0202A346 - _0202A2D8 - 2; case 8 + .short _0202A35A - _0202A2D8 - 2; case 9 + .short _0202A354 - _0202A2D8 - 2; case 10 +_0202A2EE: + ldrb r1, [r3, #0x0] + mov r0, #0x1c + bic r1, r0 + ldrb r0, [r2, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1b + orr r0, r1 + strb r0, [r3, #0x0] + pop {r4, pc} +_0202A300: + ldrb r0, [r2, #0x0] + strb r0, [r3, #0x2] + pop {r4, pc} +_0202A306: + ldrb r0, [r2, #0x0] + strb r0, [r3, #0x3] + pop {r4, pc} +_0202A30C: + ldrh r0, [r2, #0x0] + strh r0, [r3, #0x4] + pop {r4, pc} +_0202A312: + ldrh r0, [r2, #0x0] + strh r0, [r3, #0x6] + pop {r4, pc} +_0202A318: + add r3, #0x8 + add r0, r2, #0x0 + add r1, r3, #0x0 + mov r2, #0x4 + blx MI_CpuCopy8 + pop {r4, pc} +_0202A326: + add r3, #0x2c + add r0, r2, #0x0 + add r1, r3, #0x0 + mov r2, #0x10 + blx MI_CpuCopy8 + pop {r4, pc} +_0202A334: + ldrb r4, [r3, #0x0] + ldrb r1, [r2, #0x0] + mov r0, #0x1 + bic r4, r0 + mov r0, #0x1 + and r0, r1 + orr r0, r4 + strb r0, [r3, #0x0] + pop {r4, pc} +_0202A346: + add r3, #0xc + add r0, r2, #0x0 + add r1, r3, #0x0 + mov r2, #0x1c + blx MI_CpuCopy8 + pop {r4, pc} +_0202A354: + ldr r0, [r2, #0x0] + str r0, [r3, #0x28] + pop {r4, pc} +_0202A35A: + ldrb r1, [r3, #0x0] + mov r0, #0xe0 + bic r1, r0 + ldrb r0, [r2, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r3, #0x0] +_0202A36A: + pop {r4, pc} + + thumb_func_start FUN_0202A36C +FUN_0202A36C: ; 0x0202A36C + push {r3-r4} + ldrb r4, [r0, #0x3] + add r1, r4, r1 + cmp r1, #0xff + bge _0202A378 + strb r1, [r0, #0x3] +_0202A378: + ldrh r1, [r0, #0x4] + add r2, r1, r2 + ldr r1, _0202A394 ; =0x0000FFFF + cmp r2, r1 + bge _0202A384 + strh r2, [r0, #0x4] +_0202A384: + ldrh r1, [r0, #0x6] + add r2, r1, r3 + ldr r1, _0202A394 ; =0x0000FFFF + cmp r2, r1 + bge _0202A390 + strh r2, [r0, #0x6] +_0202A390: + pop {r3-r4} + bx lr + .balign 4 +_0202A394: .word 0x0000FFFF + + thumb_func_start FUN_0202A398 +FUN_0202A398: ; 0x0202A398 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_0202A3A0 +FUN_0202A3A0: ; 0x0202A3A0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + ldrb r3, [r0, #0x0] + mov r2, #0x2 + lsr r1, r1, #0x1e + bic r3, r2 + orr r1, r3 + strb r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202A3B4 +FUN_0202A3B4: ; 0x0202A3B4 + cmp r2, #0x6 + bhi _0202A402 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0202A3C4: ; jump table (using 16-bit offset) + .short _0202A402 - _0202A3C4 - 2; case 0 + .short _0202A3D2 - _0202A3C4 - 2; case 1 + .short _0202A402 - _0202A3C4 - 2; case 2 + .short _0202A402 - _0202A3C4 - 2; case 3 + .short _0202A402 - _0202A3C4 - 2; case 4 + .short _0202A3E0 - _0202A3C4 - 2; case 5 + .short _0202A3F2 - _0202A3C4 - 2; case 6 +_0202A3D2: + ldr r2, _0202A408 ; =0x0000270F + cmp r1, r2 + bls _0202A3DC + strh r2, [r0, #0x0] + b _0202A402 +_0202A3DC: + strh r1, [r0, #0x0] + b _0202A402 +_0202A3E0: + ldrh r2, [r0, #0x0] + add r2, r2, r1 + ldr r1, _0202A408 ; =0x0000270F + cmp r2, r1 + ble _0202A3EE + strh r1, [r0, #0x0] + b _0202A402 +_0202A3EE: + strh r2, [r0, #0x0] + b _0202A402 +_0202A3F2: + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhs _0202A3FE + mov r1, #0x0 + strh r1, [r0, #0x0] + b _0202A402 +_0202A3FE: + sub r1, r2, r1 + strh r1, [r0, #0x0] +_0202A402: + ldrh r0, [r0, #0x0] + bx lr + nop +_0202A408: .word 0x0000270F + + thumb_func_start FUN_0202A40C +FUN_0202A40C: ; 0x0202A40C + cmp r1, #0x2 + beq _0202A416 + cmp r1, #0x3 + beq _0202A424 + b _0202A440 +_0202A416: + mov r1, #0x0 + strb r1, [r0, #0x2] + ldrh r2, [r0, #0x8] + mov r1, #0x10 + bic r2, r1 + strh r2, [r0, #0x8] + b _0202A440 +_0202A424: + ldrh r1, [r0, #0x8] + lsl r1, r1, #0x1b + lsr r1, r1, #0x1f + beq _0202A434 + ldrb r1, [r0, #0x2] + add r1, r1, #0x1 + strb r1, [r0, #0x2] + b _0202A440 +_0202A434: + mov r1, #0x1 + strb r1, [r0, #0x2] + ldrh r2, [r0, #0x8] + mov r1, #0x10 + orr r1, r2 + strh r1, [r0, #0x8] +_0202A440: + ldrb r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_0202A444 +FUN_0202A444: ; 0x0202A444 + cmp r1, #0x2 + beq _0202A452 + cmp r1, #0x3 + beq _0202A458 + cmp r1, #0x4 + beq _0202A464 + b _0202A46E +_0202A452: + mov r1, #0x1 + strb r1, [r0, #0x3] + b _0202A46E +_0202A458: + ldrb r1, [r0, #0x3] + cmp r1, #0xa + bhs _0202A46E + add r1, r1, #0x1 + strb r1, [r0, #0x3] + b _0202A46E +_0202A464: + ldrb r1, [r0, #0x3] + cmp r1, #0x1 + bls _0202A46E + sub r1, r1, #0x1 + strb r1, [r0, #0x3] +_0202A46E: + ldrb r0, [r0, #0x3] + bx lr + .balign 4 + + thumb_func_start FUN_0202A474 +FUN_0202A474: ; 0x0202A474 + push {r3, lr} + add r3, r0, #0x0 + cmp r1, #0x0 + bne _0202A48A + add r3, #0xc0 + add r0, r2, #0x0 + add r1, r3, #0x0 + mov r2, #0xa8 + blx MI_CpuCopy8 + pop {r3, pc} +_0202A48A: + add r3, #0x18 + add r0, r2, #0x0 + add r1, r3, #0x0 + mov r2, #0xa8 + blx MI_CpuCopy8 + pop {r3, pc} + + thumb_func_start FUN_0202A498 +FUN_0202A498: ; 0x0202A498 + push {r3, lr} + cmp r1, #0x0 + bne _0202A4AA + add r1, r2, #0x0 + add r0, #0xc0 + mov r2, #0xa8 + blx MI_CpuCopy8 + pop {r3, pc} +_0202A4AA: + add r1, r2, #0x0 + add r0, #0x18 + mov r2, #0xa8 + blx MI_CpuCopy8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202A4B8 +FUN_0202A4B8: ; 0x0202A4B8 + push {r4-r6, lr} + add r6, r0, #0x0 + ldrb r0, [r1, #0x2] + mov r2, #0xfa + lsl r2, r2, #0x2 + sub r0, r0, #0x1 + add r3, r0, #0x0 + mul r3, r2 + lsl r0, r3, #0x10 + lsr r4, r0, #0x10 + ldrh r3, [r1, #0x4] + mov r0, #0xa + ldrb r5, [r1, #0x3] + mul r0, r3 + mov r3, #0x14 + mul r3, r5 + lsl r0, r0, #0x10 + lsl r3, r3, #0x10 + lsr r0, r0, #0x10 + lsr r3, r3, #0x10 + add r3, r0, r3 + add r0, r2, #0x0 + sub r0, #0x32 + cmp r3, r0 + ble _0202A4EE + mov r5, #0x0 + b _0202A4F6 +_0202A4EE: + sub r2, #0x32 + sub r0, r2, r3 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_0202A4F6: + ldrh r1, [r1, #0x6] + ldr r0, _0202A51C ; =0x000003CA + cmp r1, r0 + bls _0202A502 + mov r1, #0x0 + b _0202A510 +_0202A502: + add r0, #0x1e + sub r0, r0, r1 + mov r1, #0x1e + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_0202A510: + add r0, r4, r5 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + strh r0, [r6, #0x16] + pop {r4-r6, pc} + .balign 4 +_0202A51C: .word 0x000003CA + + thumb_func_start FUN_0202A520 +FUN_0202A520: ; 0x0202A520 + ldrh r0, [r0, #0x16] + bx lr + + thumb_func_start FUN_0202A524 +FUN_0202A524: ; 0x0202A524 + push {r3, lr} + ldrh r0, [r0, #0x16] + mov r1, #0xfa + lsl r1, r1, #0x2 + blx _s32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202A538 +FUN_0202A538: ; 0x0202A538 + push {r4-r5} + cmp r1, #0x5 + bne _0202A544 + mov r0, #0x0 + pop {r4-r5} + bx lr +_0202A544: + cmp r2, #0x2 + beq _0202A54E + cmp r2, #0x3 + beq _0202A558 + b _0202A56A +_0202A54E: + lsl r2, r1, #0x1 + mov r3, #0x0 + add r2, r0, r2 + strh r3, [r2, #0xc] + b _0202A56A +_0202A558: + add r5, r0, #0x0 + add r5, #0xc + lsl r4, r1, #0x1 + ldrh r3, [r5, r4] + ldr r2, _0202A574 ; =0x0000FFFE + cmp r3, r2 + bhs _0202A56A + add r2, r3, #0x1 + strh r2, [r5, r4] +_0202A56A: + lsl r1, r1, #0x1 + add r0, r0, r1 + ldrh r0, [r0, #0xc] + pop {r4-r5} + bx lr + .balign 4 +_0202A574: .word 0x0000FFFE + + thumb_func_start FUN_0202A578 +FUN_0202A578: ; 0x0202A578 + push {r3-r4} + mov r3, #0x1 + mov r4, #0x0 + cmp r1, #0x0 + bls _0202A590 +_0202A582: + add r4, r4, #0x1 + lsl r4, r4, #0x10 + lsl r3, r3, #0x11 + lsr r4, r4, #0x10 + lsr r3, r3, #0x10 + cmp r4, r1 + blo _0202A582 +_0202A590: + cmp r2, #0x0 + beq _0202A5B4 + cmp r2, #0x1 + beq _0202A5AC + cmp r2, #0x2 + bne _0202A5C2 + ldr r1, _0202A5C8 ; =0x0000FFFF + eor r1, r3 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldrh r1, [r0, #0x8] + and r1, r2 + strh r1, [r0, #0x8] + b _0202A5C2 +_0202A5AC: + ldrh r1, [r0, #0x8] + orr r1, r3 + strh r1, [r0, #0x8] + b _0202A5C2 +_0202A5B4: + ldrh r0, [r0, #0x8] + add r2, r0, #0x0 + asr r2, r1 + mov r0, #0x1 + and r0, r2 + pop {r3-r4} + bx lr +_0202A5C2: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 +_0202A5C8: .word 0x0000FFFF + + thumb_func_start FUN_0202A5CC +FUN_0202A5CC: ; 0x0202A5CC + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_0202A5D0 +FUN_0202A5D0: ; 0x0202A5D0 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0202A5D4 +FUN_0202A5D4: ; 0x0202A5D4 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0x17 + add r4, r2, #0x0 + bl FUN_02022610 + mov r1, #0x69 + lsl r1, r1, #0x2 + add r1, r0, r1 + lsl r0, r5, #0x3 + add r0, r1, r0 + add r1, r4, #0x0 + bl FUN_02013960 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202A5F4 +FUN_0202A5F4: ; 0x0202A5F4 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x17 + bl FUN_02022610 + mov r1, #0x69 + lsl r1, r1, #0x2 + add r1, r0, r1 + lsl r0, r4, #0x3 + add r0, r1, r0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202A60C +FUN_0202A60C: ; 0x0202A60C + push {r3-r6} + add r4, r3, #0x0 + mov r3, #0x1 + cmp r2, #0x0 + beq _0202A66C + cmp r2, #0xc8 + bhi _0202A66C + cmp r1, #0x0 + beq _0202A66C + cmp r1, #0xa + bhi _0202A66C + sub r5, r2, #0x1 + sub r2, r1, #0x1 + mov r1, #0xc8 + mul r1, r2 + add r1, r5, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + lsr r6, r1, #0x1f + lsl r5, r1, #0x1d + sub r5, r5, r6 + mov r2, #0x1d + ror r5, r2 + add r2, r6, r5 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + lsl r3, r2 + lsl r2, r3, #0x18 + lsl r1, r1, #0x15 + lsr r5, r2, #0x18 + add r3, r0, #0x4 + lsr r2, r1, #0x18 + ldrb r1, [r3, r2] + orr r1, r5 + strb r1, [r3, r2] + ldr r3, [r4, #0x0] + ldr r1, [r4, #0x8] + lsl r5, r3, #0x18 + ldr r3, [r4, #0x4] + lsl r1, r1, #0x18 + lsl r3, r3, #0x18 + lsr r3, r3, #0x8 + ldr r2, [r4, #0xc] + lsr r1, r1, #0x10 + orr r3, r5 + orr r1, r3 + orr r1, r2 + str r1, [r0, #0x0] +_0202A66C: + pop {r3-r6} + bx lr + + thumb_func_start FUN_0202A670 +FUN_0202A670: ; 0x0202A670 + push {r4, lr} + add r4, r0, #0x0 + add r0, r4, #0x4 + mov r1, #0x0 + mov r2, #0xfa + blx MI_CpuFill8 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x4 + blx MI_CpuFill8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202A68C +FUN_0202A68C: ; 0x0202A68C + ldr r3, [r0, #0x0] + ldr r2, [r1, #0x0] + cmp r3, r2 + bls _0202A698 + mov r0, #0x1 + bx lr +_0202A698: + ldr r3, [r0, #0x4] + ldr r2, [r1, #0x4] + cmp r3, r2 + bls _0202A6A4 + mov r0, #0x1 + bx lr +_0202A6A4: + ldr r2, [r0, #0x8] + ldr r0, [r1, #0x8] + cmp r2, r0 + bls _0202A6B0 + mov r0, #0x1 + bx lr +_0202A6B0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0202A6B4 +FUN_0202A6B4: ; 0x0202A6B4 + push {r3-r7, lr} + sub sp, #0x10 + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r7, #0x1 + cmp r6, #0xc8 + bhi _0202A6C8 + cmp r4, #0xa + bls _0202A6CE +_0202A6C8: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202A6CE: + ldr r0, [r5, #0x0] + lsr r1, r0, #0x18 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + lsr r1, r0, #0x10 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x4] + lsr r1, r0, #0x8 + lsl r1, r1, #0x18 + lsl r0, r0, #0x18 + lsr r1, r1, #0x18 + lsr r0, r0, #0x18 + str r1, [sp, #0x8] + str r0, [sp, #0xc] + add r0, r3, #0x0 + add r1, sp, #0x0 + bl FUN_0202A68C + cmp r0, #0x0 + beq _0202A706 + add r0, r5, #0x0 + bl FUN_0202A670 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202A706: + sub r1, r4, #0x1 + mov r0, #0xc8 + mul r0, r1 + sub r2, r6, #0x1 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1d + lsl r0, r0, #0x15 + lsr r0, r0, #0x18 + add r0, r5, r0 + sub r2, r2, r3 + mov r1, #0x1d + ror r2, r1 + add r1, r3, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, r7, #0x0 + lsl r2, r1 + lsl r1, r2, #0x18 + ldrb r0, [r0, #0x4] + lsr r1, r1, #0x18 + tst r0, r1 + beq _0202A73E + add sp, #0x10 + add r0, r7, #0x0 + pop {r3-r7, pc} +_0202A73E: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0202A744 +FUN_0202A744: ; 0x0202A744 + add r0, #0xfe + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202A74C +FUN_0202A74C: ; 0x0202A74C + add r0, #0xff + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202A754 +FUN_0202A754: ; 0x0202A754 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x41 + add r4, r2, #0x0 + lsl r1, r1, #0x2 + ldr r2, _0202A77C ; =0x0000063C + add r1, r5, r1 + add r6, r3, #0x0 + blx MI_CpuCopy8 + ldr r0, _0202A780 ; =0x00000101 + strb r4, [r5, r0] + sub r0, r0, #0x1 + strb r6, [r5, r0] + mov r0, #0x1 + add r5, #0xfe + strb r0, [r5, #0x0] + pop {r4-r6, pc} + nop +_0202A77C: .word 0x0000063C +_0202A780: .word 0x00000101 + + thumb_func_start FUN_0202A784 +FUN_0202A784: ; 0x0202A784 + ldr r2, _0202A794 ; =0x00000101 + ldrb r3, [r0, r2] + sub r2, r2, #0x1 + strb r3, [r1, #0x0] + ldrb r0, [r0, r2] + strb r0, [r1, #0x1] + bx lr + nop +_0202A794: .word 0x00000101 + + thumb_func_start FUN_0202A798 +FUN_0202A798: ; 0x0202A798 + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x41 + lsl r1, r1, #0x2 + add r5, r0, r1 + mov r0, #0xe4 + add r4, r2, #0x0 + mul r4, r0 + ldr r0, _0202A834 ; =0x00002710 + add r7, r6, #0x0 + str r0, [r6, #0x0] + add r0, r5, r4 + add r0, #0xc9 + ldrb r0, [r0, #0x0] + add r7, #0x30 + strh r0, [r6, #0x4] + add r0, r5, r4 + add r0, #0xc8 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0202A7EE + mov r0, #0x0 + mov r1, #0x1a + mov r2, #0x11 + mov r3, #0xb + bl FUN_0200A86C + add r1, r5, r4 + add r1, #0xc8 + ldrb r1, [r1, #0x0] + add r2, r6, #0x0 + str r0, [sp, #0x0] + lsl r1, r1, #0x1e + lsr r1, r1, #0x1f + add r1, #0x16 + add r2, #0x8 + bl FUN_0200A968 + ldr r0, [sp, #0x0] + bl FUN_0200A8B8 + b _0202A7FC +_0202A7EE: + add r0, r5, r4 + add r1, r6, #0x0 + add r0, #0xa8 + add r1, #0x8 + mov r2, #0x10 + blx MI_CpuCopy8 +_0202A7FC: + add r0, r5, r4 + add r1, r6, #0x0 + add r0, #0xca + add r1, #0x18 + mov r2, #0x8 + blx MI_CpuCopy8 + add r0, r5, r4 + add r1, r6, #0x0 + add r0, #0xd2 + add r1, #0x20 + mov r2, #0x8 + blx MI_CpuCopy8 + add r0, r5, r4 + add r6, #0x28 + add r0, #0xda + add r1, r6, #0x0 + mov r2, #0x8 + blx MI_CpuCopy8 + add r0, r5, r4 + add r1, r7, #0x0 + mov r2, #0xa8 + blx MI_CpuCopy8 + pop {r3-r7, pc} + nop +_0202A834: .word 0x00002710 + + thumb_func_start FUN_0202A838 +FUN_0202A838: ; 0x0202A838 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x1d + add r4, r2, #0x0 + lsl r1, r1, #0x6 + mov r2, #0xff + add r1, r5, r1 + lsl r2, r2, #0x2 + add r6, r3, #0x0 + blx MI_CpuCopy8 + ldr r0, _0202A860 ; =0x00000103 + strb r4, [r5, r0] + sub r0, r0, #0x1 + strb r6, [r5, r0] + mov r0, #0x1 + add r5, #0xff + strb r0, [r5, #0x0] + pop {r4-r6, pc} + .balign 4 +_0202A860: .word 0x00000103 + + thumb_func_start FUN_0202A864 +FUN_0202A864: ; 0x0202A864 + ldr r2, _0202A874 ; =0x00000103 + ldrb r3, [r0, r2] + sub r2, r2, #0x1 + strb r3, [r1, #0x0] + ldrb r0, [r0, r2] + strb r0, [r1, #0x1] + bx lr + nop +_0202A874: .word 0x00000103 + + thumb_func_start FUN_0202A878 +FUN_0202A878: ; 0x0202A878 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0xff + lsl r1, r1, #0x2 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x1d + lsl r0, r0, #0x6 + mov r2, #0xff + add r0, r5, r0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + blx MI_CpuCopy8 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0202A89C +FUN_0202A89C: ; 0x0202A89C + mov r0, #0xd + lsl r0, r0, #0x8 + bx lr + .balign 4 + + thumb_func_start FUN_0202A8A4 +FUN_0202A8A4: ; 0x0202A8A4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0202A1E4 + add r0, r4, #0x0 + add r0, #0x3c + bl FUN_0202A1F0 + mov r0, #0x69 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0202A204 + mov r0, #0x71 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0202A230 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202A8CC +FUN_0202A8CC: ; 0x0202A8CC + ldr r3, _0202A8D4 ; =FUN_02022610 + mov r1, #0x17 + bx r3 + nop +_0202A8D4: .word FUN_02022610 + + thumb_func_start FUN_0202A8D8 +FUN_0202A8D8: ; 0x0202A8D8 + push {r3, lr} + mov r1, #0x17 + bl FUN_02022610 + add r0, #0x3c + pop {r3, pc} + + thumb_func_start FUN_0202A8E4 +FUN_0202A8E4: ; 0x0202A8E4 + push {r3, lr} + mov r1, #0x17 + bl FUN_02022610 + mov r1, #0x71 + lsl r1, r1, #0x2 + add r0, r0, r1 + pop {r3, pc} + + thumb_func_start FUN_0202A8F4 +FUN_0202A8F4: ; 0x0202A8F4 + mov r0, #0xe + bx lr + + thumb_func_start FUN_0202A8F8 +FUN_0202A8F8: ; 0x0202A8F8 + mov r1, #0x0 + 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] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + strb r1, [r0, #0xc] + strb r1, [r0, #0xd] + bx lr + + thumb_func_start FUN_0202A918 +FUN_0202A918: ; 0x0202A918 + ldr r3, _0202A920 ; =FUN_02022610 + mov r1, #0x18 + bx r3 + nop +_0202A920: .word FUN_02022610 + + thumb_func_start FUN_0202A924 +FUN_0202A924: ; 0x0202A924 + mov r0, #0x45 + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_0202A92C +FUN_0202A92C: ; 0x0202A92C + push {r4, lr} + mov r2, #0x45 + add r4, r0, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + blx Call_FillMemWithValue + bl FUN_0201BA60 + str r0, [r4, #0x0] + bl FUN_0201BA60 + str r0, [r4, #0x4] + mov r1, #0x0 + add r3, r4, #0x0 + ldr r0, _0202A980 ; =0x0000FFFF + str r1, [r4, #0x8] + strh r0, [r4, #0xc] + strh r0, [r4, #0xe] + mov r0, #0x15 + add r3, #0x10 + strb r0, [r4, #0x10] + add r2, r1, #0x0 +_0202A95A: + str r2, [r3, #0x4] + strb r2, [r3, #0x8] + strb r2, [r3, #0x9] + strb r2, [r3, #0xa] + strb r2, [r3, #0xb] + add r1, r1, #0x1 + add r3, #0x8 + cmp r1, #0x15 + blt _0202A95A + ldr r0, _0202A984 ; =0x0000010F + strb r2, [r4, r0] + add r1, r0, #0x1 + strb r2, [r4, r1] + add r1, r0, #0x2 + strb r2, [r4, r1] + add r0, r0, #0x3 + strb r2, [r4, r0] + pop {r4, pc} + nop +_0202A980: .word 0x0000FFFF +_0202A984: .word 0x0000010F + + thumb_func_start FUN_0202A988 +FUN_0202A988: ; 0x0202A988 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + bx lr + .balign 4 + + thumb_func_start FUN_0202A990 +FUN_0202A990: ; 0x0202A990 + push {r3, lr} + cmp r1, #0x1 + beq _0202A99C + cmp r1, #0x2 + beq _0202A9A0 + b _0202A9A4 +_0202A99C: + ldr r0, [r0, #0x0] + pop {r3, pc} +_0202A9A0: + ldr r0, [r0, #0x4] + pop {r3, pc} +_0202A9A4: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0202A9AC +FUN_0202A9AC: ; 0x0202A9AC + add r0, #0xbc + bx lr + + thumb_func_start FUN_0202A9B0 +FUN_0202A9B0: ; 0x0202A9B0 + ldr r3, _0202A9B8 ; =FUN_02022610 + mov r1, #0x19 + bx r3 + nop +_0202A9B8: .word FUN_02022610 + + thumb_func_start FUN_0202A9BC +FUN_0202A9BC: ; 0x0202A9BC + add r0, #0x10 + bx lr + + thumb_func_start FUN_0202A9C0 +FUN_0202A9C0: ; 0x0202A9C0 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202A9C4 +FUN_0202A9C4: ; 0x0202A9C4 + strb r0, [r1, #0x0] + bx lr + + thumb_func_start FUN_0202A9C8 +FUN_0202A9C8: ; 0x0202A9C8 + add r1, r1, #0x4 + lsl r0, r0, #0x3 + add r0, r1, r0 + bx lr + + thumb_func_start FUN_0202A9D0 +FUN_0202A9D0: ; 0x0202A9D0 + push {r3-r7, lr} + add r5, r1, #0x0 + bl FUN_0202A9B0 + add r6, r0, #0x0 + mov r4, #0x0 + add r6, #0x10 + add r7, r4, #0x0 +_0202A9E0: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add r1, r6, #0x0 + bl FUN_0202A9C8 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0202A9F8 + sub r1, r1, r5 + str r1, [r0, #0x0] + bpl _0202A9F8 + str r7, [r0, #0x0] +_0202A9F8: + add r4, r4, #0x1 + cmp r4, #0x15 + blt _0202A9E0 + pop {r3-r7, pc} + + thumb_func_start FUN_0202AA00 +FUN_0202AA00: ; 0x0202AA00 + push {r3, lr} + bl FUN_0202A9B0 + ldr r1, _0202AA10 ; =0x0000010F + mov r2, #0x1 + strb r2, [r0, r1] + pop {r3, pc} + nop +_0202AA10: .word 0x0000010F + + thumb_func_start FUN_0202AA14 +FUN_0202AA14: ; 0x0202AA14 + ldr r1, _0202AA1C ; =0x0000010F + ldrb r0, [r0, r1] + bx lr + nop +_0202AA1C: .word 0x0000010F + + thumb_func_start FUN_0202AA20 +FUN_0202AA20: ; 0x0202AA20 + add r2, r0, #0x0 + add r2, #0xc8 + ldr r3, [r2, #0x0] + cmp r3, r1 + beq _0202AA34 + add r2, r0, #0x0 + add r2, #0xcc + str r3, [r2, #0x0] + add r0, #0xc8 + str r1, [r0, #0x0] +_0202AA34: + bx lr + .balign 4 + + thumb_func_start FUN_0202AA38 +FUN_0202AA38: ; 0x0202AA38 + add r0, #0xcc + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202AA40 +FUN_0202AA40: ; 0x0202AA40 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + blo _0202AA4E + bl ErrorHandling +_0202AA4E: + mov r0, #0x43 + add r1, r5, r4 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_0202AA58 +FUN_0202AA58: ; 0x0202AA58 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x3 + blo _0202AA68 + bl ErrorHandling +_0202AA68: + mov r0, #0x43 + add r1, r5, r4 + lsl r0, r0, #0x2 + strb r6, [r1, r0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202AA74 +FUN_0202AA74: ; 0x0202AA74 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + blo _0202AA82 + bl ErrorHandling +_0202AA82: + mov r0, #0x14 + mul r0, r4 + add r0, r5, r0 + add r0, #0xe2 + ldrb r0, [r0, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202AA90 +FUN_0202AA90: ; 0x0202AA90 + ldr r2, [r0, #0x0] + mov r1, #0x14 + mov r0, #0x0 +_0202AA96: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0202AA96 + bx lr + + thumb_func_start FUN_0202AAA0 +FUN_0202AAA0: ; 0x0202AAA0 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + blo _0202AAAE + bl ErrorHandling +_0202AAAE: + mov r0, #0x14 + add r5, #0xd0 + mul r0, r4 + add r0, r5, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_0202AAB8 +FUN_0202AAB8: ; 0x0202AAB8 + cmp r1, #0x8 + bhi _0202AAF8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0202AAC8: ; jump table (using 16-bit offset) + .short _0202AAF8 - _0202AAC8 - 2; case 0 + .short _0202AADA - _0202AAC8 - 2; case 1 + .short _0202AADE - _0202AAC8 - 2; case 2 + .short _0202AAE2 - _0202AAC8 - 2; case 3 + .short _0202AAE6 - _0202AAC8 - 2; case 4 + .short _0202AAEA - _0202AAC8 - 2; case 5 + .short _0202AAEE - _0202AAC8 - 2; case 6 + .short _0202AAF2 - _0202AAC8 - 2; case 7 + .short _0202AAF6 - _0202AAC8 - 2; case 8 +_0202AADA: + ldr r0, [r0, #0x0] + bx lr +_0202AADE: + ldr r0, [r0, #0x4] + bx lr +_0202AAE2: + ldr r0, [r0, #0x8] + bx lr +_0202AAE6: + ldrh r0, [r0, #0xc] + bx lr +_0202AAEA: + ldrh r0, [r0, #0xe] + bx lr +_0202AAEE: + ldrb r0, [r0, #0x10] + bx lr +_0202AAF2: + ldrb r0, [r0, #0x11] + bx lr +_0202AAF6: + ldrb r0, [r0, #0x12] +_0202AAF8: + bx lr + .balign 4 + + thumb_func_start FUN_0202AAFC +FUN_0202AAFC: ; 0x0202AAFC + cmp r1, #0x8 + bhi _0202AB3C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0202AB0C: ; jump table (using 16-bit offset) + .short _0202AB3C - _0202AB0C - 2; case 0 + .short _0202AB1E - _0202AB0C - 2; case 1 + .short _0202AB22 - _0202AB0C - 2; case 2 + .short _0202AB26 - _0202AB0C - 2; case 3 + .short _0202AB2A - _0202AB0C - 2; case 4 + .short _0202AB2E - _0202AB0C - 2; case 5 + .short _0202AB32 - _0202AB0C - 2; case 6 + .short _0202AB36 - _0202AB0C - 2; case 7 + .short _0202AB3A - _0202AB0C - 2; case 8 +_0202AB1E: + str r2, [r0, #0x0] + bx lr +_0202AB22: + str r2, [r0, #0x4] + bx lr +_0202AB26: + str r2, [r0, #0x8] + bx lr +_0202AB2A: + strh r2, [r0, #0xc] + bx lr +_0202AB2E: + strh r2, [r0, #0xe] + bx lr +_0202AB32: + strb r2, [r0, #0x10] + bx lr +_0202AB36: + strb r2, [r0, #0x11] + bx lr +_0202AB3A: + strb r2, [r0, #0x12] +_0202AB3C: + bx lr + .balign 4 + + thumb_func_start FUN_0202AB40 +FUN_0202AB40: ; 0x0202AB40 + ldr r1, _0202AB48 ; =0x00000111 + add r0, r0, r1 + bx lr + nop +_0202AB48: .word 0x00000111 + + thumb_func_start FUN_0202AB4C +FUN_0202AB4C: ; 0x0202AB4C + mov r1, #0x11 + lsl r1, r1, #0x4 + add r0, r0, r1 + bx lr + + thumb_func_start FUN_0202AB54 +FUN_0202AB54: ; 0x0202AB54 + mov r1, #0x11 + lsl r1, r1, #0x4 + ldrb r0, [r0, r1] + cmp r0, #0x0 + bne _0202AB62 + mov r0, #0x1 + bx lr +_0202AB62: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0202AB68 +FUN_0202AB68: ; 0x0202AB68 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x2 + bls _0202AB76 + bl ErrorHandling +_0202AB76: + ldr r0, _0202AB7C ; =0x00000112 + strb r4, [r5, r0] + pop {r3-r5, pc} + .balign 4 +_0202AB7C: .word 0x00000112 + + thumb_func_start FUN_0202AB80 +FUN_0202AB80: ; 0x0202AB80 + ldr r1, _0202AB88 ; =0x00000112 + ldrb r0, [r0, r1] + bx lr + nop +_0202AB88: .word 0x00000112 + + thumb_func_start FUN_0202AB8C +FUN_0202AB8C: ; 0x0202AB8C + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0202A9B0 + ldrh r1, [r0, #0xc] + strh r1, [r5, #0x0] + ldrh r0, [r0, #0xe] + strh r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0202ABA0 +FUN_0202ABA0: ; 0x0202ABA0 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_0202A9B0 + add r4, r0, #0x0 + cmp r5, #0x10 + blo _0202ABB2 + bl ErrorHandling +_0202ABB2: + ldrh r0, [r4, #0xc] + strh r0, [r4, #0xe] + strh r5, [r4, #0xc] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202ABBC +FUN_0202ABBC: ; 0x0202ABBC + ldr r3, _0202ABC4 ; =FUN_02022610 + mov r1, #0x1a + bx r3 + nop +_0202ABC4: .word FUN_02022610 + + thumb_func_start FUN_0202ABC8 +FUN_0202ABC8: ; 0x0202ABC8 + mov r0, #0xf4 + bx lr + + thumb_func_start FUN_0202ABCC +FUN_0202ABCC: ; 0x0202ABCC + ldr r3, _0202ABD8 ; =MIi_CpuClearFast + add r1, r0, #0x0 + mov r0, #0x0 + mov r2, #0xf4 + bx r3 + nop +_0202ABD8: .word MIi_CpuClearFast + + thumb_func_start FUN_0202ABDC +FUN_0202ABDC: ; 0x0202ABDC + add r0, #0xec + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202ABE4 +FUN_0202ABE4: ; 0x0202ABE4 + add r0, #0xec + strh r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202ABEC +FUN_0202ABEC: ; 0x0202ABEC + ldr r3, _0202ABF4 ; =MIi_CpuCopyFast + mov r2, #0xec + bx r3 + nop +_0202ABF4: .word MIi_CpuCopyFast + + thumb_func_start FUN_0202ABF8 +FUN_0202ABF8: ; 0x0202ABF8 + ldr r3, _0202AC04 ; =MIi_CpuCopyFast + add r2, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + mov r2, #0xec + bx r3 + .balign 4 +_0202AC04: .word MIi_CpuCopyFast + + thumb_func_start FUN_0202AC08 +FUN_0202AC08: ; 0x0202AC08 + add r0, #0xf0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202AC10 +FUN_0202AC10: ; 0x0202AC10 + add r0, #0xf0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202AC18 +FUN_0202AC18: ; 0x0202AC18 + add r0, #0xee + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0202AC20 +FUN_0202AC20: ; 0x0202AC20 + ldr r0, _0202AC24 ; =0x00001354 + bx lr + .balign 4 +_0202AC24: .word 0x00001354 + + thumb_func_start FUN_0202AC28 +FUN_0202AC28: ; 0x0202AC28 + bx lr + .balign 4 + + thumb_func_start FUN_0202AC2C +FUN_0202AC2C: ; 0x0202AC2C + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x8 + blt _0202AC3A + bl ErrorHandling +_0202AC3A: + mov r0, #0x1 + lsl r0, r0, #0x8 + add r6, r5, r0 + lsl r3, r4, #0x2 + ldr r2, [r6, r3] + ldr r1, _0202AC60 ; =0xEDB88320 + cmp r2, r1 + bne _0202AC58 + add r0, #0x2c + add r1, r5, r0 + lsl r0, r4, #0x6 + add r0, r4, r0 + lsl r0, r0, #0x2 + add r0, r1, r0 + pop {r4-r6, pc} +_0202AC58: + mov r0, #0x0 + str r0, [r6, r3] + pop {r4-r6, pc} + nop +_0202AC60: .word 0xEDB88320 + + thumb_func_start FUN_0202AC64 +FUN_0202AC64: ; 0x0202AC64 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + blt _0202AC72 + bl ErrorHandling +_0202AC72: + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x12 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0202AC8E + ldr r0, _0202AC94 ; =0x0000094C + add r1, r5, r0 + mov r0, #0xd6 + lsl r0, r0, #0x2 + mul r0, r4 + add r0, r1, r0 + pop {r3-r5, pc} +_0202AC8E: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0202AC94: .word 0x0000094C + + thumb_func_start FUN_0202AC98 +FUN_0202AC98: ; 0x0202AC98 + push {r3-r7, lr} + add r5, r0, #0x0 + str r1, [sp, #0x0] + add r7, r2, #0x0 + bl FUN_0202ADF0 + cmp r0, #0x0 + bne _0202ACAC + mov r0, #0x0 + pop {r3-r7, pc} +_0202ACAC: + mov r0, #0x1 + mov r4, #0x0 + add r2, r5, #0x0 + lsl r0, r0, #0x8 +_0202ACB4: + ldr r1, [r2, r0] + cmp r1, #0x0 + bne _0202ACF6 + lsl r0, r4, #0x6 + mov r2, #0x4b + add r0, r4, r0 + lsl r2, r2, #0x2 + lsl r6, r0, #0x2 + add r1, r5, r2 + ldr r0, [sp, #0x0] + add r1, r1, r6 + sub r2, #0x28 + blx MI_CpuCopy8 + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x1 + ldr r2, _0202AD04 ; =0xEDB88320 + lsl r0, r0, #0x8 + str r2, [r1, r0] + add r0, #0x2e + add r1, r5, r0 + ldrh r0, [r1, r6] + mov r2, #0x3 + bic r0, r2 + lsl r2, r7, #0x10 + lsr r3, r2, #0x10 + mov r2, #0x3 + and r2, r3 + orr r0, r2 + strh r0, [r1, r6] + mov r0, #0x1 + pop {r3-r7, pc} +_0202ACF6: + add r4, r4, #0x1 + add r2, r2, #0x4 + cmp r4, #0x8 + blt _0202ACB4 + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0202AD04: .word 0xEDB88320 + + thumb_func_start FUN_0202AD08 +FUN_0202AD08: ; 0x0202AD08 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_0202AE0C + cmp r0, #0x0 + bne _0202AD1A + mov r0, #0x0 + pop {r4-r6, pc} +_0202AD1A: + ldr r0, _0202AD88 ; =0x00000152 + ldrb r0, [r6, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _0202AD34 + add r0, r5, #0x0 + bl FUN_0202ADF0 + cmp r0, #0x0 + bne _0202AD34 + mov r0, #0x0 + pop {r4-r6, pc} +_0202AD34: + mov r0, #0x12 + mov r4, #0x0 + add r2, r5, #0x0 + lsl r0, r0, #0x4 +_0202AD3C: + ldr r1, [r2, r0] + cmp r1, #0x0 + bne _0202AD7C + ldr r1, _0202AD8C ; =0x0000094C + mov r2, #0xd6 + add r3, r5, r1 + lsl r2, r2, #0x2 + add r1, r4, #0x0 + mul r1, r2 + add r0, r6, #0x0 + add r1, r3, r1 + blx MI_CpuCopy8 + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x12 + ldr r2, _0202AD90 ; =0xEDB88320 + lsl r0, r0, #0x4 + str r2, [r1, r0] + add r0, #0x32 + ldrb r0, [r6, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _0202AD78 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x1 + bl FUN_0202AC98 +_0202AD78: + mov r0, #0x1 + pop {r4-r6, pc} +_0202AD7C: + add r4, r4, #0x1 + add r2, r2, #0x4 + cmp r4, #0x3 + blt _0202AD3C + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0202AD88: .word 0x00000152 +_0202AD8C: .word 0x0000094C +_0202AD90: .word 0xEDB88320 + + thumb_func_start FUN_0202AD94 +FUN_0202AD94: ; 0x0202AD94 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + sub r0, r4, #0x1 + cmp r0, #0x8 + blt _0202ADA4 + bl ErrorHandling +_0202ADA4: + sub r4, r4, #0x1 + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x1 + mov r2, #0x0 + lsl r0, r0, #0x8 + str r2, [r1, r0] + add r0, #0x2e + add r3, r5, r0 + lsl r0, r4, #0x6 + add r0, r4, r0 + lsl r2, r0, #0x2 + ldrh r1, [r3, r2] + mov r0, #0x3 + bic r1, r0 + strh r1, [r3, r2] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0202ADC8 +FUN_0202ADC8: ; 0x0202ADC8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + blt _0202ADD6 + bl ErrorHandling +_0202ADD6: + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x12 + mov r2, #0x0 + lsl r0, r0, #0x4 + str r2, [r1, r0] + add r0, r5, #0x0 + add r1, r4, #0x1 + bl FUN_0202AEC4 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202ADF0 +FUN_0202ADF0: ; 0x0202ADF0 + mov r1, #0x1 + mov r3, #0x0 + lsl r1, r1, #0x8 +_0202ADF6: + ldr r2, [r0, r1] + cmp r2, #0x0 + bne _0202AE00 + mov r0, #0x1 + bx lr +_0202AE00: + add r3, r3, #0x1 + add r0, r0, #0x4 + cmp r3, #0x8 + blt _0202ADF6 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0202AE0C +FUN_0202AE0C: ; 0x0202AE0C + mov r1, #0x12 + mov r3, #0x0 + lsl r1, r1, #0x4 +_0202AE12: + ldr r2, [r0, r1] + cmp r2, #0x0 + bne _0202AE1C + mov r0, #0x1 + bx lr +_0202AE1C: + add r3, r3, #0x1 + add r0, r0, #0x4 + cmp r3, #0x3 + blt _0202AE12 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0202AE28 +FUN_0202AE28: ; 0x0202AE28 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x8 + blt _0202AE36 + bl ErrorHandling +_0202AE36: + lsl r0, r5, #0x2 + add r1, r4, r0 + mov r0, #0x1 + lsl r0, r0, #0x8 + ldr r0, [r1, r0] + cmp r0, #0x0 + bne _0202AE48 + mov r0, #0x0 + pop {r3-r5, pc} +_0202AE48: + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0202AE4C +FUN_0202AE4C: ; 0x0202AE4C + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x3 + blt _0202AE5A + bl ErrorHandling +_0202AE5A: + lsl r0, r5, #0x2 + add r1, r4, r0 + mov r0, #0x12 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + bne _0202AE6C + mov r0, #0x0 + pop {r3-r5, pc} +_0202AE6C: + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0202AE70 +FUN_0202AE70: ; 0x0202AE70 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_0202AE76: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202AE4C + cmp r0, #0x1 + bne _0202AE86 + mov r0, #0x1 + pop {r3-r5, pc} +_0202AE86: + add r4, r4, #0x1 + cmp r4, #0x3 + blt _0202AE76 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0202AE90 +FUN_0202AE90: ; 0x0202AE90 + push {r3-r4} + cmp r1, #0x0 + beq _0202AEB8 + ldr r2, _0202AEC0 ; =0x0000012E + mov r3, #0x0 + add r4, r0, r2 + add r0, r2, #0x0 + sub r0, #0x2a +_0202AEA0: + ldrh r2, [r4, #0x0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1e + cmp r1, r2 + bne _0202AEB0 + mov r0, #0x1 + pop {r3-r4} + bx lr +_0202AEB0: + add r3, r3, #0x1 + add r4, r4, r0 + cmp r3, #0x8 + blt _0202AEA0 +_0202AEB8: + mov r0, #0x0 + pop {r3-r4} + bx lr + nop +_0202AEC0: .word 0x0000012E + + thumb_func_start FUN_0202AEC4 +FUN_0202AEC4: ; 0x0202AEC4 + push {r3-r5, lr} + cmp r1, #0x0 + beq _0202AEEE + ldr r3, _0202AEF0 ; =0x0000012E + mov r4, #0x41 + mov r2, #0x0 + add r3, r0, r3 + lsl r4, r4, #0x2 +_0202AED4: + ldrh r5, [r3, #0x0] + lsl r5, r5, #0x1e + lsr r5, r5, #0x1e + cmp r1, r5 + bne _0202AEE6 + add r1, r2, #0x1 + bl FUN_0202AD94 + pop {r3-r5, pc} +_0202AEE6: + add r2, r2, #0x1 + add r3, r3, r4 + cmp r2, #0x8 + blt _0202AED4 +_0202AEEE: + pop {r3-r5, pc} + .balign 4 +_0202AEF0: .word 0x0000012E + + thumb_func_start FUN_0202AEF4 +FUN_0202AEF4: ; 0x0202AEF4 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x2 + add r4, r1, #0x0 + lsl r0, r0, #0xa + cmp r4, r0 + blt _0202AF06 + bl ErrorHandling +_0202AF06: + mov r0, #0x1 + mov r1, #0x7 + add r2, r4, #0x0 + and r2, r1 + add r1, r0, #0x0 + lsl r1, r2 + asr r2, r4, #0x2 + lsr r2, r2, #0x1d + add r2, r4, r2 + asr r2, r2, #0x3 + ldrb r2, [r5, r2] + tst r1, r2 + bne _0202AF22 + mov r0, #0x0 +_0202AF22: + pop {r3-r5, pc} + + thumb_func_start FUN_0202AF24 +FUN_0202AF24: ; 0x0202AF24 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x2 + add r4, r1, #0x0 + lsl r0, r0, #0xa + cmp r4, r0 + blt _0202AF36 + bl ErrorHandling +_0202AF36: + asr r0, r4, #0x2 + lsr r0, r0, #0x1d + add r0, r4, r0 + asr r0, r0, #0x3 + mov r1, #0x7 + ldrb r3, [r5, r0] + mov r2, #0x1 + and r1, r4 + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + strb r1, [r5, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_0202AF50 +FUN_0202AF50: ; 0x0202AF50 + ldr r3, _0202AF58 ; =FUN_0202AEF4 + ldr r1, _0202AF5C ; =0x000007FF + bx r3 + nop +_0202AF58: .word FUN_0202AEF4 +_0202AF5C: .word 0x000007FF + + thumb_func_start FUN_0202AF60 +FUN_0202AF60: ; 0x0202AF60 + ldr r3, _0202AF68 ; =FUN_0202AF24 + ldr r1, _0202AF6C ; =0x000007FF + bx r3 + nop +_0202AF68: .word FUN_0202AF24 +_0202AF6C: .word 0x000007FF + + thumb_func_start FUN_0202AF70 +FUN_0202AF70: ; 0x0202AF70 + push {r3, lr} + ldr r1, _0202AF84 ; =0x021C59D4 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _0202AF82 + bl FUN_0202251C + ldr r1, _0202AF84 ; =0x021C59D4 + str r0, [r1, #0x0] +_0202AF82: + pop {r3, pc} + .balign 4 +_0202AF84: .word 0x021C59D4 + + thumb_func_start FUN_0202AF88 +FUN_0202AF88: ; 0x0202AF88 + ldr r0, _0202AF98 ; =0x021C59D4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0202AF94 + mov r1, #0x0 + str r1, [r0, #0x0] +_0202AF94: + bx lr + nop +_0202AF98: .word 0x021C59D4 + + thumb_func_start FUN_0202AF9C +FUN_0202AF9C: ; 0x0202AF9C + push {r3-r5, lr} + ldr r4, _0202AFBC ; =0x021C59D4 + mov r5, #0x0 +_0202AFA2: + ldr r0, [r4, #0x0] + add r1, r5, #0x0 + bl FUN_0202AE28 + cmp r0, #0x1 + bne _0202AFB2 + add r0, r5, #0x1 + pop {r3-r5, pc} +_0202AFB2: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0202AFA2 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0202AFBC: .word 0x021C59D4 + + thumb_func_start FUN_0202AFC0 +FUN_0202AFC0: ; 0x0202AFC0 + push {r4, lr} + add r4, r0, #0x0 + bne _0202AFCA + mov r0, #0x0 + pop {r4, pc} +_0202AFCA: + sub r0, r4, #0x1 + cmp r0, #0x8 + blt _0202AFD4 + bl ErrorHandling +_0202AFD4: + ldr r0, _0202AFF8 ; =0x021C59D4 + sub r1, r4, #0x1 + ldr r0, [r0, #0x0] + bl FUN_0202AE28 + cmp r0, #0x1 + bne _0202AFF4 + ldr r0, _0202AFF8 ; =0x021C59D4 + sub r1, r4, #0x1 + ldr r0, [r0, #0x0] + bl FUN_0202AC2C + cmp r0, #0x0 + beq _0202AFF4 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0202AFF4: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0202AFF8: .word 0x021C59D4 + + thumb_func_start FUN_0202AFFC +FUN_0202AFFC: ; 0x0202AFFC + cmp r0, #0x0 + beq _0202B016 + ldr r1, _0202B01C ; =0x021C59D4 + ldr r2, [r1, #0x0] + mov r1, #0x13 + lsl r1, r1, #0x4 + add r2, r2, r1 + sub r1, r0, #0x1 + lsl r0, r1, #0x6 + add r0, r1, r0 + lsl r0, r0, #0x2 + add r0, r2, r0 + bx lr +_0202B016: + mov r0, #0x0 + bx lr + nop +_0202B01C: .word 0x021C59D4 + + thumb_func_start FUN_0202B020 +FUN_0202B020: ; 0x0202B020 + add r1, r0, #0x0 + ldr r0, _0202B02C ; =0x021C59D4 + ldr r3, _0202B030 ; =FUN_0202AD94 + ldr r0, [r0, #0x0] + bx r3 + nop +_0202B02C: .word 0x021C59D4 +_0202B030: .word FUN_0202AD94 + + thumb_func_start FUN_0202B034 +FUN_0202B034: ; 0x0202B034 + ldr r0, _0202B038 ; =0x00002AB0 + bx lr + .balign 4 +_0202B038: .word 0x00002AB0 + + thumb_func_start FUN_0202B03C +FUN_0202B03C: ; 0x0202B03C + ldr r3, _0202B048 ; =MIi_CpuClear32 + add r1, r0, #0x0 + mov r0, #0x0 + ldr r2, _0202B04C ; =0x00002AB0 + bx r3 + nop +_0202B048: .word MIi_CpuClear32 +_0202B04C: .word 0x00002AB0 + + thumb_func_start FUN_0202B050 +FUN_0202B050: ; 0x0202B050 + push {r3-r7, lr} + sub sp, #0x18 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + str r2, [sp, #0x8] + cmp r0, #0x0 + bne _0202B062 + bl ErrorHandling +_0202B062: + ldr r1, _0202B1E0 ; =0x00002AA8 + ldr r0, [sp, #0x0] + ldr r0, [r0, r1] + cmp r0, #0x1e + blo _0202B070 + bl ErrorHandling +_0202B070: + ldr r1, _0202B1E4 ; =0x00002AAC + ldr r0, [sp, #0x0] + ldr r2, [r0, r1] + ldr r0, _0202B1E8 ; =0x0000270F + cmp r2, r0 + blo _0202B07E + b _0202B1DC +_0202B07E: + ldr r0, [sp, #0x0] + sub r1, r1, #0x4 + ldr r1, [r0, r1] + mov r0, #0x5b + lsl r0, r0, #0x2 + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x0] + add r0, r0, r2 + str r0, [sp, #0x14] + ldr r0, [sp, #0x4] + bl FUN_0206B9AC + str r0, [sp, #0x10] + mov r0, #0xb + mov r1, #0x0 + bl FUN_020219F4 + mov r2, #0x5a + add r6, r0, #0x0 + ldr r1, [sp, #0x14] + mov r0, #0x0 + lsl r2, r2, #0x2 + blx MIi_CpuClear16 + ldr r0, [sp, #0x10] + mov r7, #0x0 + cmp r0, #0x0 + ble _0202B18E + ldr r5, [sp, #0x14] +_0202B0BA: + ldr r0, [sp, #0x4] + add r1, r7, #0x0 + bl FUN_0206B9B0 + add r4, r0, #0x0 + bl FUN_020669D4 + str r0, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0202B17E + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r5, #0x2] + add r0, r4, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + mov r1, #0x0 + strb r0, [r5, #0x3] + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_020671BC + str r0, [r5, #0x4] + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020671BC + str r0, [r5, #0x8] + add r0, r4, #0x0 + mov r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x32] + add r0, r4, #0x0 + mov r1, #0x37 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x34] + add r0, r4, #0x0 + mov r1, #0x38 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x36] + add r0, r4, #0x0 + mov r1, #0x39 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x38] + cmp r6, #0x0 + beq _0202B176 + add r0, r4, #0x0 + mov r1, #0x76 + add r2, r6, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r0, r6, #0x0 + add r1, #0xc + mov r2, #0xb + bl FUN_02021EF0 + add r0, r4, #0x0 + mov r1, #0x90 + add r2, r6, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r0, r6, #0x0 + add r1, #0x22 + mov r2, #0x8 + bl FUN_02021EF0 + b _0202B17C +_0202B176: + ldr r0, _0202B1EC ; =0x0000FFFF + strh r0, [r5, #0xc] + strh r0, [r5, #0x22] +_0202B17C: + add r5, #0x3c +_0202B17E: + ldr r1, [sp, #0xc] + add r0, r4, #0x0 + bl FUN_02066A20 + ldr r0, [sp, #0x10] + add r7, r7, #0x1 + cmp r7, r0 + blt _0202B0BA +_0202B18E: + ldr r0, [sp, #0x8] + mov r1, #0x5a + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x14] + lsl r1, r1, #0x2 + strh r2, [r0, r1] + ldr r0, [sp, #0x8] + add r2, r1, #0x2 + ldr r3, [r0, #0x4] + ldr r0, [sp, #0x14] + add r1, r1, #0x3 + strb r3, [r0, r2] + ldr r0, [sp, #0x8] + ldr r2, [r0, #0x8] + ldr r0, [sp, #0x14] + strb r2, [r0, r1] + ldr r1, _0202B1E0 ; =0x00002AA8 + ldr r0, [sp, #0x0] + ldr r0, [r0, r1] + add r2, r0, #0x1 + ldr r0, [sp, #0x0] + str r2, [r0, r1] + ldr r0, [r0, r1] + cmp r0, #0x1e + blo _0202B1C6 + ldr r0, [sp, #0x0] + mov r2, #0x0 + str r2, [r0, r1] +_0202B1C6: + ldr r1, _0202B1E4 ; =0x00002AAC + ldr r0, [sp, #0x0] + ldr r0, [r0, r1] + add r2, r0, #0x1 + ldr r0, [sp, #0x0] + cmp r6, #0x0 + str r2, [r0, r1] + beq _0202B1DC + add r0, r6, #0x0 + bl FUN_02021A20 +_0202B1DC: + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_0202B1E0: .word 0x00002AA8 +_0202B1E4: .word 0x00002AAC +_0202B1E8: .word 0x0000270F +_0202B1EC: .word 0x0000FFFF + + thumb_func_start FUN_0202B1F0 +FUN_0202B1F0: ; 0x0202B1F0 + push {r4, lr} + add r4, r0, #0x0 + bne _0202B1FA + bl ErrorHandling +_0202B1FA: + ldr r0, _0202B214 ; =0x00002AA8 + ldr r0, [r4, r0] + cmp r0, #0x1e + blo _0202B206 + bl ErrorHandling +_0202B206: + ldr r0, _0202B218 ; =0x00002AAC + ldr r0, [r4, r0] + cmp r0, #0x1e + blo _0202B210 + mov r0, #0x1e +_0202B210: + pop {r4, pc} + nop +_0202B214: .word 0x00002AA8 +_0202B218: .word 0x00002AAC + + thumb_func_start FUN_0202B21C +FUN_0202B21C: ; 0x0202B21C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0202B22A + bl ErrorHandling +_0202B22A: + ldr r0, _0202B248 ; =0x00002AA8 + ldr r0, [r5, r0] + cmp r0, #0x1e + blo _0202B236 + bl ErrorHandling +_0202B236: + cmp r4, #0x1e + blt _0202B23E + bl ErrorHandling +_0202B23E: + ldr r0, _0202B24C ; =0x00002AAC + ldr r0, [r5, r0] + sub r0, r0, r4 + pop {r3-r5, pc} + nop +_0202B248: .word 0x00002AA8 +_0202B24C: .word 0x00002AAC + + thumb_func_start FUN_0202B250 +FUN_0202B250: ; 0x0202B250 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0202B25E + bl ErrorHandling +_0202B25E: + ldr r0, _0202B298 ; =0x00002AA8 + ldr r0, [r5, r0] + cmp r0, #0x1e + blo _0202B26A + bl ErrorHandling +_0202B26A: + cmp r4, #0x1e + blt _0202B272 + bl ErrorHandling +_0202B272: + ldr r0, _0202B298 ; =0x00002AA8 + ldr r0, [r5, r0] + sub r0, r0, #0x1 + sub r2, r0, r4 + bpl _0202B27E + add r2, #0x1e +_0202B27E: + mov r1, #0x5b + lsl r1, r1, #0x2 + mul r1, r2 + mov r0, #0x0 + add r2, r5, r1 +_0202B288: + ldrh r1, [r2, #0x0] + cmp r1, #0x0 + beq _0202B296 + add r0, r0, #0x1 + add r2, #0x3c + cmp r0, #0x6 + blo _0202B288 +_0202B296: + pop {r3-r5, pc} + .balign 4 +_0202B298: .word 0x00002AA8 + + thumb_func_start FUN_0202B29C +FUN_0202B29C: ; 0x0202B29C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + cmp r5, #0x0 + bne _0202B2AE + bl ErrorHandling +_0202B2AE: + ldr r0, _0202B318 ; =0x00002AA8 + ldr r0, [r5, r0] + cmp r0, #0x1e + blo _0202B2BA + bl ErrorHandling +_0202B2BA: + cmp r6, #0x1e + blt _0202B2C2 + bl ErrorHandling +_0202B2C2: + ldr r0, _0202B318 ; =0x00002AA8 + ldr r0, [r5, r0] + sub r0, r0, #0x1 + sub r1, r0, r6 + bpl _0202B2CE + add r1, #0x1e +_0202B2CE: + mov r0, #0x5b + lsl r0, r0, #0x2 + mul r0, r1 + add r1, r5, r0 + mov r0, #0x3c + mul r0, r7 + add r5, r1, r0 + ldrh r0, [r1, r0] + add r1, r5, #0x0 + add r1, #0xc + strh r0, [r4, #0x10] + ldrb r0, [r5, #0x2] + strb r0, [r4, #0x12] + ldr r0, [r5, #0x4] + str r0, [r4, #0x8] + ldr r0, [r5, #0x8] + str r0, [r4, #0xc] + ldrb r0, [r5, #0x3] + strb r0, [r4, #0x13] + ldr r0, [r4, #0x0] + bl FUN_02021E28 + add r1, r5, #0x0 + ldr r0, [r4, #0x4] + add r1, #0x22 + bl FUN_02021E28 + mov r1, #0x0 +_0202B306: + ldrh r0, [r5, #0x32] + add r1, r1, #0x1 + add r5, r5, #0x2 + strh r0, [r4, #0x14] + add r4, r4, #0x2 + cmp r1, #0x4 + blt _0202B306 + pop {r3-r7, pc} + nop +_0202B318: .word 0x00002AA8 + + thumb_func_start FUN_0202B31C +FUN_0202B31C: ; 0x0202B31C + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + cmp r5, #0x0 + bne _0202B32C + bl ErrorHandling +_0202B32C: + ldr r0, _0202B370 ; =0x00002AA8 + ldr r0, [r5, r0] + cmp r0, #0x1e + blo _0202B338 + bl ErrorHandling +_0202B338: + cmp r6, #0x1e + blt _0202B340 + bl ErrorHandling +_0202B340: + ldr r0, _0202B370 ; =0x00002AA8 + ldr r0, [r5, r0] + sub r0, r0, #0x1 + sub r2, r0, r6 + bpl _0202B34C + add r2, #0x1e +_0202B34C: + mov r0, #0x5b + lsl r0, r0, #0x2 + add r1, r2, #0x0 + mul r1, r0 + add r2, r5, r1 + sub r1, r0, #0x4 + ldrh r1, [r2, r1] + str r1, [r4, #0x0] + sub r1, r0, #0x2 + ldrb r1, [r2, r1] + sub r0, r0, #0x1 + str r1, [r4, #0x4] + ldrb r0, [r2, r0] + str r0, [r4, #0x8] + mov r0, #0x0 + str r0, [r4, #0xc] + pop {r4-r6, pc} + nop +_0202B370: .word 0x00002AA8 + + thumb_func_start FUN_0202B374 +FUN_0202B374: ; 0x0202B374 + ldr r0, _0202B378 ; =0x00000B88 + bx lr + .balign 4 +_0202B378: .word 0x00000B88 + + thumb_func_start FUN_0202B37C +FUN_0202B37C: ; 0x0202B37C + ldr r3, _0202B388 ; =MIi_CpuClearFast + add r1, r0, #0x0 + mov r0, #0x0 + ldr r2, _0202B38C ; =0x00000B88 + bx r3 + nop +_0202B388: .word MIi_CpuClearFast +_0202B38C: .word 0x00000B88 + + thumb_func_start FUN_0202B390 +FUN_0202B390: ; 0x0202B390 + push {r4, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + mov r0, #0x0 + add r1, #0xc + mov r2, #0xc0 + blx MIi_CpuClearFast + add r1, r4, #0x0 + mov r0, #0x0 + add r1, #0xcc + mov r2, #0xc0 + blx MIi_CpuClearFast + mov r1, #0x63 + lsl r1, r1, #0x2 + mov r0, #0x0 + add r1, r4, r1 + mov r2, #0xc0 + blx MIi_CpuClearFast + add r0, r4, #0x0 + bl FUN_0202B3F8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202B3C4 +FUN_0202B3C4: ; 0x0202B3C4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, r1 + ble _0202B3D4 + sub r0, r0, r1 + str r0, [r4, #0x4] + pop {r4, pc} +_0202B3D4: + add r0, r2, #0x0 + mov r1, #0xf + blx _s32_div_f + mov r0, #0xf + sub r1, r0, r1 + str r1, [r4, #0x4] + bne _0202B3E6 + str r0, [r4, #0x4] +_0202B3E6: + mov r1, #0x0 + strb r1, [r4, #0x8] + add r0, r1, #0x0 +_0202B3EC: + strb r0, [r4, r1] + add r1, r1, #0x1 + cmp r1, #0x4 + blt _0202B3EC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202B3F8 +FUN_0202B3F8: ; 0x0202B3F8 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0202B40C + add r0, r4, #0x0 + bl FUN_0202B430 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202B40C +FUN_0202B40C: ; 0x0202B40C + strb r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_0202B410 +FUN_0202B410: ; 0x0202B410 + ldrb r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_0202B414 +FUN_0202B414: ; 0x0202B414 + push {r3, lr} + mov r3, #0x0 +_0202B418: + ldrb r2, [r0, r3] + cmp r2, #0x0 + bne _0202B422 + strb r1, [r0, r3] + pop {r3, pc} +_0202B422: + add r3, r3, #0x1 + cmp r3, #0x4 + blt _0202B418 + bl ErrorHandling + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202B430 +FUN_0202B430: ; 0x0202B430 + mov r2, #0x0 + add r1, r2, #0x0 +_0202B434: + strb r1, [r0, r2] + add r2, r2, #0x1 + cmp r2, #0x4 + blt _0202B434 + bx lr + .balign 4 + + thumb_func_start FUN_0202B440 +FUN_0202B440: ; 0x0202B440 + mov r3, #0x0 +_0202B442: + ldrb r2, [r0, r3] + cmp r1, r2 + bne _0202B44C + mov r0, #0x1 + bx lr +_0202B44C: + add r3, r3, #0x1 + cmp r3, #0x4 + blt _0202B442 + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0202B458 +FUN_0202B458: ; 0x0202B458 + mov r2, #0x0 + add r3, r2, #0x0 +_0202B45C: + ldrb r1, [r0, r2] + cmp r1, #0x0 + beq _0202B464 + add r3, r3, #0x1 +_0202B464: + add r2, r2, #0x1 + cmp r2, #0x4 + blt _0202B45C + add r0, r3, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0202B470 +FUN_0202B470: ; 0x0202B470 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, sp, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020126B4 + ldr r0, [sp, #0x8] + ldr r3, [sp, #0x4] + lsl r0, r0, #0x18 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x0] + lsl r3, r3, #0x18 + lsl r0, r0, #0x18 + lsr r3, r3, #0x8 + orr r0, r3 + ldr r2, [sp, #0xc] + orr r0, r1 + orr r0, r2 + str r0, [r5, #0x4] + strb r4, [r5, #0x0] + mov r0, #0x0 + strb r0, [r5, #0x1] + add r5, #0x8 + add r0, r6, #0x0 + add r1, r5, #0x0 + mov r2, #0x28 + blx MIi_CpuCopyFast + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_0202B4B0 +FUN_0202B4B0: ; 0x0202B4B0 + push {r3-r5, lr} + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0202B548 + mov r2, #0x0 + add r3, r0, #0x0 +_0202B4BE: + ldrb r1, [r3, #0x0] + cmp r5, r1 + bne _0202B4E0 + mov r1, #0x30 + mul r1, r2 + add r0, r0, r1 + ldrb r1, [r0, #0x1] + cmp r1, #0x3 + blo _0202B4DC + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0202B470 + mov r0, #0x1 + pop {r3-r5, pc} +_0202B4DC: + mov r0, #0x0 + pop {r3-r5, pc} +_0202B4E0: + add r2, r2, #0x1 + add r3, #0x30 + cmp r2, #0x4 + blt _0202B4BE + mov r1, #0x0 + add r3, r0, #0x0 +_0202B4EC: + ldrb r2, [r3, #0x0] + cmp r2, #0x0 + bne _0202B504 + mov r2, #0x30 + mul r2, r1 + add r0, r0, r2 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0202B470 + mov r0, #0x1 + pop {r3-r5, pc} +_0202B504: + add r1, r1, #0x1 + add r3, #0x30 + cmp r1, #0x4 + blt _0202B4EC + mov r1, #0x0 + add r3, r0, #0x0 +_0202B510: + ldrb r2, [r3, #0x1] + cmp r2, #0x3 + blo _0202B528 + mov r2, #0x30 + mul r2, r1 + add r0, r0, r2 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0202B470 + mov r0, #0x1 + pop {r3-r5, pc} +_0202B528: + add r1, r1, #0x1 + add r3, #0x30 + cmp r1, #0x4 + blt _0202B510 + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0202B534 +FUN_0202B534: ; 0x0202B534 + add r0, #0x8 + bx lr + + thumb_func_start FUN_0202B538 +FUN_0202B538: ; 0x0202B538 + ldrb r0, [r0, #0x6] + bx lr + + thumb_func_start FUN_0202B53C +FUN_0202B53C: ; 0x0202B53C + ldrb r0, [r0, #0x5] + bx lr + + thumb_func_start FUN_0202B540 +FUN_0202B540: ; 0x0202B540 + add r0, #0x18 + bx lr + + thumb_func_start FUN_0202B544 +FUN_0202B544: ; 0x0202B544 + bx lr + .balign 4 + + thumb_func_start FUN_0202B548 +FUN_0202B548: ; 0x0202B548 + push {r4, lr} + mov r4, #0x0 + cmp r1, #0x4 + bhi _0202B57E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0202B55C: ; jump table (using 16-bit offset) + .short _0202B57E - _0202B55C - 2; case 0 + .short _0202B566 - _0202B55C - 2; case 1 + .short _0202B56E - _0202B55C - 2; case 2 + .short _0202B574 - _0202B55C - 2; case 3 + .short _0202B57A - _0202B55C - 2; case 4 +_0202B566: + mov r1, #0x63 + lsl r1, r1, #0x2 + add r4, r0, r1 + b _0202B57E +_0202B56E: + add r4, r0, #0x0 + add r4, #0xc + b _0202B57E +_0202B574: + add r4, r0, #0x0 + add r4, #0xcc + b _0202B57E +_0202B57A: + bl ErrorHandling +_0202B57E: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202B584 +FUN_0202B584: ; 0x0202B584 + push {r4, lr} + mov r4, #0x0 + cmp r1, #0x4 + bhi _0202B5BA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0202B598: ; jump table (using 16-bit offset) + .short _0202B5BA - _0202B598 - 2; case 0 + .short _0202B5B0 - _0202B598 - 2; case 1 + .short _0202B5A2 - _0202B598 - 2; case 2 + .short _0202B5AA - _0202B598 - 2; case 3 + .short _0202B5B6 - _0202B598 - 2; case 4 +_0202B5A2: + mov r1, #0x93 + lsl r1, r1, #0x2 + add r4, r0, r1 + b _0202B5BA +_0202B5AA: + ldr r1, _0202B5C0 ; =0x000006CC + add r4, r0, r1 + b _0202B5BA +_0202B5B0: + ldr r1, _0202B5C4 ; =0x0000090C + add r4, r0, r1 + b _0202B5BA +_0202B5B6: + bl ErrorHandling +_0202B5BA: + add r0, r4, #0x0 + pop {r4, pc} + nop +_0202B5C0: .word 0x000006CC +_0202B5C4: .word 0x0000090C + + thumb_func_start FUN_0202B5C8 +FUN_0202B5C8: ; 0x0202B5C8 + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0202B5CC +FUN_0202B5CC: ; 0x0202B5CC + ldrb r1, [r0, #0x1] + cmp r1, #0x3 + bhs _0202B5D6 + add r1, r1, #0x1 + strb r1, [r0, #0x1] +_0202B5D6: + bx lr + + thumb_func_start FUN_0202B5D8 +FUN_0202B5D8: ; 0x0202B5D8 + add r0, #0x8 + bx lr + + thumb_func_start FUN_0202B5DC +FUN_0202B5DC: ; 0x0202B5DC + push {r4-r7} + mov r5, #0x0 + add r4, r5, #0x0 + ldr r6, [sp, #0x10] + cmp r1, #0x0 + ble _0202B616 +_0202B5E8: + ldrb r7, [r0, #0x0] + cmp r2, r7 + bne _0202B60E + ldrb r7, [r0, #0x1] + cmp r3, #0x0 + beq _0202B600 + cmp r7, #0x0 + beq _0202B600 + add r7, r4, #0x1 + strb r7, [r6, r5] + add r5, r5, #0x1 + b _0202B60E +_0202B600: + cmp r3, #0x0 + bne _0202B60E + cmp r7, #0x0 + bne _0202B60E + add r7, r4, #0x1 + strb r7, [r6, r5] + add r5, r5, #0x1 +_0202B60E: + add r4, r4, #0x1 + add r0, #0x30 + cmp r4, r1 + blt _0202B5E8 +_0202B616: + add r0, r5, #0x0 + pop {r4-r7} + bx lr + + thumb_func_start FUN_0202B61C +FUN_0202B61C: ; 0x0202B61C + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + mov r5, #0x0 + add r0, r1, #0x0 + add r4, r5, #0x0 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + str r3, [sp, #0x8] + ldr r7, [sp, #0x20] + cmp r0, #0x0 + ble _0202B672 +_0202B634: + ldrb r2, [r6, #0x18] + ldr r1, [sp, #0x4] + ldrb r0, [r6, #0x19] + cmp r1, r2 + bne _0202B668 + ldr r1, [sp, #0x8] + cmp r1, #0x0 + beq _0202B654 + cmp r0, #0x0 + beq _0202B654 + add r0, r4, #0x1 + bl FUN_0202B830 + strb r0, [r7, r5] + add r5, r5, #0x1 + b _0202B668 +_0202B654: + ldr r1, [sp, #0x8] + cmp r1, #0x0 + bne _0202B668 + cmp r0, #0x0 + bne _0202B668 + add r0, r4, #0x1 + bl FUN_0202B830 + strb r0, [r7, r5] + add r5, r5, #0x1 +_0202B668: + ldr r0, [sp, #0x0] + add r4, r4, #0x1 + add r6, #0x48 + cmp r4, r0 + blt _0202B634 +_0202B672: + add r0, r5, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0202B678 +FUN_0202B678: ; 0x0202B678 + push {r3-r5, lr} + ldr r5, [sp, #0x10] + ldr r4, [sp, #0x14] + cmp r1, #0x4 + bhi _0202B702 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0202B68E: ; jump table (using 16-bit offset) + .short _0202B702 - _0202B68E - 2; case 0 + .short _0202B6DA - _0202B68E - 2; case 1 + .short _0202B698 - _0202B68E - 2; case 2 + .short _0202B6BA - _0202B68E - 2; case 3 + .short _0202B6FE - _0202B68E - 2; case 4 +_0202B698: + cmp r3, #0x0 + str r4, [sp, #0x0] + beq _0202B6AA + add r0, #0xc + mov r1, #0x4 + add r3, r5, #0x0 + bl FUN_0202B5DC + pop {r3-r5, pc} +_0202B6AA: + mov r1, #0x93 + lsl r1, r1, #0x2 + add r0, r0, r1 + mov r1, #0x10 + add r3, r5, #0x0 + bl FUN_0202B61C + pop {r3-r5, pc} +_0202B6BA: + cmp r3, #0x0 + str r4, [sp, #0x0] + beq _0202B6CC + add r0, #0xcc + mov r1, #0x4 + add r3, r5, #0x0 + bl FUN_0202B5DC + pop {r3-r5, pc} +_0202B6CC: + ldr r1, _0202B708 ; =0x000006CC + add r3, r5, #0x0 + add r0, r0, r1 + mov r1, #0x8 + bl FUN_0202B61C + pop {r3-r5, pc} +_0202B6DA: + cmp r3, #0x0 + str r4, [sp, #0x0] + beq _0202B6F0 + mov r1, #0x63 + lsl r1, r1, #0x2 + add r0, r0, r1 + mov r1, #0x4 + add r3, r5, #0x0 + bl FUN_0202B5DC + pop {r3-r5, pc} +_0202B6F0: + ldr r1, _0202B70C ; =0x0000090C + add r3, r5, #0x0 + add r0, r0, r1 + mov r1, #0x8 + bl FUN_0202B61C + pop {r3-r5, pc} +_0202B6FE: + mov r0, #0x0 + pop {r3-r5, pc} +_0202B702: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0202B708: .word 0x000006CC +_0202B70C: .word 0x0000090C + + thumb_func_start FUN_0202B710 +FUN_0202B710: ; 0x0202B710 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r6, r1, #0x0 + add r5, r2, #0x0 + add r0, sp, #0x8 + mov r1, #0x0 + mov r2, #0x4 + blx MI_CpuFill8 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + mov r3, #0x1 + bl FUN_0202B678 + cmp r0, #0x0 + beq _0202B742 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0202B742: + mov r3, #0x1 + str r3, [sp, #0x0] + add r0, sp, #0x8 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_0202B678 + cmp r0, #0x0 + beq _0202B79E + add r0, sp, #0x8 + ldrb r0, [r0, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + beq _0202B798 + add r5, sp, #0x8 +_0202B764: + ldrb r2, [r5, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0202B7C8 + ldrb r0, [r0, #0x1] + cmp r0, #0x3 + blo _0202B77A + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0202B77A: + add r7, r7, #0x1 + add r5, r5, #0x1 + cmp r7, #0x4 + bge _0202B786 + mov r1, #0x1 + b _0202B788 +_0202B786: + mov r1, #0x0 +_0202B788: + ldrb r0, [r5, #0x0] + cmp r0, #0x0 + beq _0202B792 + mov r0, #0x1 + b _0202B794 +_0202B792: + mov r0, #0x0 +_0202B794: + tst r0, r1 + bne _0202B764 +_0202B798: + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0202B79E: + mov r5, #0x1 +_0202B7A0: + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_0202B7C8 + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + beq _0202B7B6 + ldrb r0, [r0, #0x1] + cmp r0, #0x3 + blo _0202B7BC +_0202B7B6: + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0202B7BC: + add r5, r5, #0x1 + cmp r5, #0x4 + ble _0202B7A0 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0202B7C8 +FUN_0202B7C8: ; 0x0202B7C8 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r6, r1, #0x0 + bl FUN_0202B820 + cmp r0, #0x1 + beq _0202B7DE + bl ErrorHandling +_0202B7DE: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0202B548 + mov r1, #0x80 + bic r4, r1 + sub r2, r4, #0x1 + mov r1, #0x30 + mul r1, r2 + add r0, r0, r1 + pop {r4-r6, pc} + + thumb_func_start FUN_0202B7F4 +FUN_0202B7F4: ; 0x0202B7F4 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r6, r1, #0x0 + bl FUN_0202B820 + cmp r0, #0x0 + beq _0202B80A + bl ErrorHandling +_0202B80A: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0202B584 + mov r1, #0x80 + bic r4, r1 + sub r2, r4, #0x1 + mov r1, #0x48 + mul r1, r2 + add r0, r0, r1 + pop {r4-r6, pc} + + thumb_func_start FUN_0202B820 +FUN_0202B820: ; 0x0202B820 + mov r1, #0x80 + tst r0, r1 + bne _0202B82A + mov r0, #0x1 + bx lr +_0202B82A: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0202B830 +FUN_0202B830: ; 0x0202B830 + mov r1, #0x80 + orr r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_0202B838 +FUN_0202B838: ; 0x0202B838 + ldr r1, _0202B840 ; =0x00000B4C + add r0, r0, r1 + bx lr + nop +_0202B840: .word 0x00000B4C + + thumb_func_start FUN_0202B844 +FUN_0202B844: ; 0x0202B844 + ldr r1, _0202B84C ; =0x00000B56 + add r0, r0, r1 + bx lr + nop +_0202B84C: .word 0x00000B56 + + thumb_func_start FUN_0202B850 +FUN_0202B850: ; 0x0202B850 + ldr r1, _0202B858 ; =0x00000B7A + add r0, r0, r1 + bx lr + nop +_0202B858: .word 0x00000B7A + + thumb_func_start FUN_0202B85C +FUN_0202B85C: ; 0x0202B85C + ldr r1, _0202B864 ; =0x00000B7C + add r0, r0, r1 + bx lr + nop +_0202B864: .word 0x00000B7C + + thumb_func_start FUN_0202B868 +FUN_0202B868: ; 0x0202B868 + mov r1, #0x2e + lsl r1, r1, #0x6 + add r0, r0, r1 + bx lr + + thumb_func_start FUN_0202B870 +FUN_0202B870: ; 0x0202B870 + lsl r1, r0, #0x1 + ldr r0, _0202B878 ; =0x020EEAC8 + ldrb r0, [r0, r1] + bx lr + .balign 4 +_0202B878: .word 0x020EEAC8 + + thumb_func_start FUN_0202B87C +FUN_0202B87C: ; 0x0202B87C + lsl r1, r0, #0x1 + ldr r0, _0202B884 ; =0x020EEAC9 + ldrb r0, [r0, r1] + bx lr + .balign 4 +_0202B884: .word 0x020EEAC9 + + thumb_func_start FUN_0202B888 +FUN_0202B888: ; 0x0202B888 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + ldr r3, _0202B898 ; =StringFillEOS + add r0, #0x8 + mov r1, #0x8 + bx r3 + nop +_0202B898: .word StringFillEOS + + thumb_func_start FUN_0202B89C +FUN_0202B89C: ; 0x0202B89C + push {r3, lr} + add r0, #0x8 + bl StringLength + cmp r0, #0x0 + beq _0202B8AC + mov r0, #0x1 + pop {r3, pc} +_0202B8AC: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0202B8B0 +FUN_0202B8B0: ; 0x0202B8B0 + mov r0, #0xea + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_0202B8B8 +FUN_0202B8B8: ; 0x0202B8B8 + push {r3-r7, lr} + mov r2, #0xea + mov r1, #0x0 + lsl r2, r2, #0x4 + add r6, r0, #0x0 + blx MI_CpuFill8 + mov r7, #0x0 +_0202B8C8: + mov r4, #0x0 + add r5, r6, #0x0 +_0202B8CC: + add r0, r5, #0x0 + bl FUN_0202B888 + add r4, r4, #0x1 + add r5, #0x18 + cmp r4, #0x6 + blt _0202B8CC + add r7, r7, #0x1 + add r6, #0x90 + cmp r7, #0x1a + blt _0202B8C8 + pop {r3-r7, pc} + + thumb_func_start FUN_0202B8E4 +FUN_0202B8E4: ; 0x0202B8E4 + ldr r3, _0202B8EC ; =FUN_02022610 + mov r1, #0x1c + bx r3 + nop +_0202B8EC: .word FUN_02022610 + + thumb_func_start FUN_0202B8F0 +FUN_0202B8F0: ; 0x0202B8F0 + push {r4-r6, lr} + cmp r2, #0x6 + blo _0202B8FE + blo _0202B930 + bl ErrorHandling + pop {r4-r6, pc} +_0202B8FE: + mov r3, #0x90 + mul r3, r1 + add r3, r0, r3 + cmp r2, #0x5 + bge _0202B928 + mov r0, #0x18 + mul r0, r2 + add r6, r3, r0 +_0202B90E: + add r5, r6, #0x0 + add r5, #0x18 + add r4, r6, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + add r2, r2, #0x1 + add r6, #0x18 + stmia r4!, {r0-r1} + cmp r2, #0x5 + blt _0202B90E +_0202B928: + add r3, #0x78 + add r0, r3, #0x0 + bl FUN_0202B888 +_0202B930: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202B934 +FUN_0202B934: ; 0x0202B934 + mov r0, #0x4e + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_0202B93C +FUN_0202B93C: ; 0x0202B93C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + bl FUN_02029FC8 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x34 + bl FUN_020169D8 + str r0, [sp, #0x4] + add r5, r0, #0x0 + ldr r0, _0202B9E8 ; =0x020EEAD0 + mov r6, #0x0 + str r0, [sp, #0x0] +_0202B95A: + cmp r6, #0x5 + beq _0202B968 + cmp r6, #0xa + beq _0202B988 + cmp r6, #0xb + beq _0202B9A0 + b _0202B9C8 +_0202B968: + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_0202A150 + add r7, r0, #0x0 + beq _0202B984 + add r0, r4, #0x0 + mov r1, #0x1d + bl FUN_0202A150 + add r1, r7, #0x0 + blx _u32_div_f + add r7, r0, #0x0 +_0202B984: + str r7, [r5, #0x0] + b _0202B9D4 +_0202B988: + add r0, r4, #0x0 + mov r1, #0x41 + bl FUN_0202A150 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x42 + bl FUN_0202A150 + add r0, r7, r0 + str r0, [r5, #0x0] + b _0202B9D4 +_0202B9A0: + add r0, r4, #0x0 + mov r1, #0x3f + bl FUN_0202A150 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x40 + bl FUN_0202A150 + add r1, r7, r0 + beq _0202B9C4 + ldr r0, [sp, #0x4] + ldr r2, [r0, #0x28] + mov r0, #0x64 + mul r0, r2 + blx _u32_div_f + add r1, r0, #0x0 +_0202B9C4: + str r1, [r5, #0x0] + b _0202B9D4 +_0202B9C8: + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0202A150 + str r0, [r5, #0x0] +_0202B9D4: + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r0, r0, #0x4 + add r5, r5, #0x4 + str r0, [sp, #0x0] + cmp r6, #0xd + blt _0202B95A + ldr r0, [sp, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0202B9E8: .word 0x020EEAD0 + + thumb_func_start FUN_0202B9EC +FUN_0202B9EC: ; 0x0202B9EC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020238F4 + mov r1, #0x4e + add r6, r0, #0x0 + add r0, r4, #0x0 + lsl r1, r1, #0x2 + bl FUN_020169D8 + mov r2, #0x4e + mov r1, #0x0 + lsl r2, r2, #0x2 + str r0, [sp, #0x4] + blx MI_CpuFill8 + add r0, r5, #0x0 + bl FUN_0202881C + mov r1, #0x1 + bl FUN_0202877C + str r0, [sp, #0x8] + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_020239A0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202B93C + ldr r4, [sp, #0x4] + str r0, [sp, #0x0] + mov r6, #0x0 + add r5, r0, #0x0 +_0202BA38: + ldr r0, [sp, #0x8] + add r1, r4, #0x0 + str r0, [r4, #0x0] + add r0, r7, #0x0 + add r1, #0x8 + mov r2, #0x8 + bl FUN_02021EF0 + ldr r0, [r5, #0x0] + add r6, r6, #0x1 + str r0, [r4, #0x4] + add r4, #0x18 + add r5, r5, #0x4 + cmp r6, #0xd + blt _0202BA38 + ldr r0, [sp, #0x0] + bl FUN_02016A18 + add r0, r7, #0x0 + bl FUN_02021A20 + ldr r0, [sp, #0x4] + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0202BA68 +FUN_0202BA68: ; 0x0202BA68 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_0202BA6E: + add r0, r5, #0x0 + bl FUN_0202B888 + add r4, r4, #0x1 + add r5, #0x18 + cmp r4, #0x6 + blt _0202BA6E + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202BA80 +FUN_0202BA80: ; 0x0202BA80 + push {r3, lr} + ldr r3, [r0, #0x0] + ldr r2, [r1, #0x0] + cmp r3, r2 + beq _0202BA8E + mov r0, #0x0 + pop {r3, pc} +_0202BA8E: + add r0, #0x8 + add r1, #0x8 + bl StringNotEqual + cmp r0, #0x0 + bne _0202BA9E + mov r0, #0x1 + pop {r3, pc} +_0202BA9E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202BAA4 +FUN_0202BAA4: ; 0x0202BAA4 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x4] + add r7, r1, #0x0 + mov r4, #0x0 + cmp r0, #0x0 + ble _0202BACE + add r5, r6, #0x0 +_0202BAB4: + ldr r0, [r5, #0xc] + add r1, r7, #0x0 + bl FUN_0202BA80 + cmp r0, #0x0 + beq _0202BAC4 + mov r0, #0x1 + pop {r3-r7, pc} +_0202BAC4: + ldr r0, [r6, #0x4] + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r0 + blt _0202BAB4 +_0202BACE: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202BAD4 +FUN_0202BAD4: ; 0x0202BAD4 + push {r4-r7, lr} + sub sp, #0xc + add r6, r1, #0x0 + add r5, r0, #0x0 + str r2, [sp, #0x0] + add r0, r6, #0x0 + mov r1, #0x0 + mov r2, #0xe0 + add r4, r3, #0x0 + blx MI_CpuFill8 + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + cmp r0, #0x0 + bne _0202BB64 + mov r2, #0x90 + add r0, r4, #0x0 + mul r0, r2 + add r1, r6, #0x0 + add r0, r5, r0 + add r1, #0x50 + str r0, [sp, #0x8] + blx MI_CpuCopy8 + add r1, sp, #0x10 + ldrb r3, [r1, #0x18] + mov r0, #0x0 + cmp r3, #0x0 + ble _0202BB2E + mov r2, #0x18 + ldr r1, [sp, #0x24] + mul r2, r4 +_0202BB14: + ldr r5, [r6, #0x4] + add r0, r0, #0x1 + add r4, r5, #0x0 + add r4, r4, #0x1 + str r4, [r6, #0x4] + ldr r4, [r1, #0x0] + lsl r5, r5, #0x2 + add r4, r4, r2 + add r5, r6, r5 + str r4, [r5, #0xc] + add r1, r1, #0x4 + cmp r0, r3 + blt _0202BB14 +_0202BB2E: + add r4, r6, #0x0 + add r4, #0x50 + mov r7, #0x0 + add r5, r4, #0x0 +_0202BB36: + add r0, r4, #0x0 + bl FUN_0202B89C + cmp r0, #0x0 + beq _0202BB58 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0202BAA4 + cmp r0, #0x0 + bne _0202BB58 + ldr r1, [r6, #0x0] + add r0, r1, #0x1 + str r0, [r6, #0x0] + lsl r0, r1, #0x2 + add r0, r6, r0 + str r4, [r0, #0x38] +_0202BB58: + add r7, r7, #0x1 + add r4, #0x18 + add r5, #0x18 + cmp r7, #0x6 + blt _0202BB36 + b _0202BBF8 +_0202BB64: + add r0, r4, #0x0 + add r0, #0xd + mov r2, #0x90 + add r1, r0, #0x0 + mul r1, r2 + add r0, r5, r1 + add r1, r6, #0x0 + add r1, #0x50 + str r0, [sp, #0x8] + blx MI_CpuCopy8 + add r0, sp, #0x10 + ldrb r2, [r0, #0x18] + mov r3, #0x0 + cmp r2, #0x0 + ble _0202BBB2 + mov r1, #0x18 + ldr r0, [sp, #0x24] + mul r1, r4 +_0202BB8A: + ldr r4, [r0, #0x0] + ldr r5, [r1, r4] + cmp r5, #0x0 + beq _0202BBAA + ldr r4, [sp, #0x0] + cmp r4, r5 + bne _0202BBAA + ldr r5, [r6, #0x4] + add r4, r5, #0x0 + add r4, r4, #0x1 + str r4, [r6, #0x4] + ldr r4, [r0, #0x0] + lsl r5, r5, #0x2 + add r4, r4, r1 + add r5, r6, r5 + str r4, [r5, #0xc] +_0202BBAA: + add r3, r3, #0x1 + add r0, r0, #0x4 + cmp r3, r2 + blt _0202BB8A +_0202BBB2: + add r4, r6, #0x0 + mov r0, #0x0 + add r4, #0x50 + str r0, [sp, #0x4] + add r5, r6, #0x0 + add r7, r4, #0x0 +_0202BBBE: + add r0, r4, #0x0 + bl FUN_0202B89C + cmp r0, #0x0 + beq _0202BBE8 + ldr r1, [r5, #0x50] + ldr r0, [sp, #0x0] + cmp r0, r1 + bne _0202BBE8 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_0202BAA4 + cmp r0, #0x0 + bne _0202BBE8 + ldr r1, [r6, #0x0] + add r0, r1, #0x1 + str r0, [r6, #0x0] + lsl r0, r1, #0x2 + add r0, r6, r0 + str r4, [r0, #0x38] +_0202BBE8: + ldr r0, [sp, #0x4] + add r4, #0x18 + add r0, r0, #0x1 + add r5, #0x18 + add r7, #0x18 + str r0, [sp, #0x4] + cmp r0, #0x6 + blt _0202BBBE +_0202BBF8: + ldr r1, [r6, #0x4] + ldr r0, [r6, #0x0] + mov r2, #0x0 + add r0, r1, r0 + str r0, [r6, #0x8] + ldr r0, [r6, #0x0] + cmp r0, #0x0 + ble _0202BC20 + add r1, r6, #0x0 +_0202BC0A: + ldr r3, [r6, #0x4] + ldr r0, [r1, #0x38] + add r3, r2, r3 + lsl r3, r3, #0x2 + add r3, r6, r3 + str r0, [r3, #0xc] + ldr r0, [r6, #0x0] + add r2, r2, #0x1 + add r1, r1, #0x4 + cmp r2, r0 + blt _0202BC0A +_0202BC20: + mov r0, #0x0 + mov r12, r0 + ldr r0, [r6, #0x8] + sub r5, r0, #0x1 + cmp r5, #0x0 + ble _0202BC64 + add r3, r6, #0x0 +_0202BC2E: + mov r0, r12 + cmp r5, r0 + ble _0202BC52 + lsl r0, r5, #0x2 + add r4, r6, r0 +_0202BC38: + ldr r2, [r4, #0xc] + ldr r7, [r3, #0xc] + ldr r0, [r2, #0x4] + ldr r1, [r7, #0x4] + cmp r1, r0 + bhs _0202BC48 + str r2, [r3, #0xc] + str r7, [r4, #0xc] +_0202BC48: + sub r5, r5, #0x1 + mov r0, r12 + sub r4, r4, #0x4 + cmp r5, r0 + bgt _0202BC38 +_0202BC52: + mov r0, r12 + add r0, r0, #0x1 + mov r12, r0 + ldr r0, [r6, #0x8] + add r3, r3, #0x4 + sub r5, r0, #0x1 + mov r0, r12 + cmp r0, r5 + blt _0202BC2E +_0202BC64: + ldr r0, [sp, #0x8] + bl FUN_0202BA68 + mov r3, #0x0 + add r2, r6, #0x0 + b _0202BC8A +_0202BC70: + ldr r5, [r2, #0xc] + ldr r4, [sp, #0x8] + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [sp, #0x8] + add r2, r2, #0x4 + add r0, #0x18 + str r0, [sp, #0x8] + add r3, r3, #0x1 +_0202BC8A: + cmp r3, #0x6 + bge _0202BC94 + ldr r0, [r6, #0x8] + cmp r3, r0 + blt _0202BC70 +_0202BC94: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0202BC98 +FUN_0202BC98: ; 0x0202BC98 + push {r4-r7, lr} + sub sp, #0x14 + add r7, r0, #0x0 + add r5, r1, #0x0 + ldr r0, [sp, #0x2c] + mov r1, #0xe0 + str r2, [sp, #0x10] + add r4, r3, #0x0 + bl FUN_020169D8 + add r6, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + add r0, sp, #0x18 + ldrb r0, [r0, #0x10] + add r1, r6, #0x0 + add r2, r5, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x2c] + str r0, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_0202BAD4 + cmp r5, #0x0 + beq _0202BCEA + mov r0, #0x1 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + add r0, sp, #0x18 + ldrb r0, [r0, #0x10] + add r1, r6, #0x0 + add r2, r5, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x2c] + str r0, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_0202BAD4 +_0202BCEA: + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0202BCF4 +FUN_0202BCF4: ; 0x0202BCF4 + push {r4-r7, lr} + sub sp, #0x24 + add r6, r1, #0x0 + ldr r1, [sp, #0x38] + add r4, r0, #0x0 + add r5, r2, #0x0 + add r7, r3, #0x0 + str r1, [sp, #0x38] + bl FUN_0202B8E4 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_0202881C + mov r1, #0x1 + bl FUN_0202877C + mov r4, #0x0 + add r3, r4, #0x0 + str r0, [sp, #0xc] + cmp r5, #0x0 + bls _0202BD44 +_0202BD20: + cmp r3, r6 + beq _0202BD3A + lsl r0, r3, #0x2 + ldr r2, [r7, r0] + cmp r2, #0x0 + beq _0202BD3A + add r1, r4, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + lsl r1, r0, #0x2 + add r0, sp, #0x10 + str r2, [r0, r1] +_0202BD3A: + add r0, r3, #0x1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, r5 + blo _0202BD20 +_0202BD44: + cmp r4, #0x0 + beq _0202BD68 + mov r5, #0x0 + add r6, sp, #0x10 +_0202BD4C: + ldr r0, [sp, #0x38] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + add r2, r5, #0x0 + add r3, r6, #0x0 + bl FUN_0202BC98 + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0xd + blo _0202BD4C +_0202BD68: + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start FUN_0202BD6C +FUN_0202BD6C: ; 0x0202BD6C + push {r3-r7, lr} + sub sp, #0x10 + str r2, [sp, #0x0] + add r4, r0, #0x0 + add r5, r1, #0x0 + bl FUN_020238F4 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + mov r1, #0x4c + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x4c + add r7, r0, #0x0 + blx MI_CpuFill8 + add r0, r4, #0x0 + bl FUN_0202881C + mov r1, #0x1 + bl FUN_0202877C + str r0, [sp, #0xc] + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_0202B93C + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_0202B870 + str r0, [r7, #0x0] + add r0, r5, #0x0 + bl FUN_0202B87C + ldr r1, [r7, #0x0] + mov r6, #0x0 + cmp r1, #0x0 + ble _0202BDE2 + lsl r1, r0, #0x2 + ldr r0, [sp, #0x8] + add r4, r7, #0x0 + add r5, r0, r1 +_0202BDC4: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x0] + str r0, [r4, #0x4] + ldr r0, [r5, #0x0] + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + bl FUN_020239A0 + str r0, [r4, #0xc] + ldr r0, [r7, #0x0] + add r6, r6, #0x1 + add r4, #0xc + add r5, r5, #0x4 + cmp r6, r0 + blt _0202BDC4 +_0202BDE2: + ldr r0, [sp, #0x8] + bl FUN_02016A18 + add r0, r7, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202BDF0 +FUN_0202BDF0: ; 0x0202BDF0 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + str r1, [sp, #0x0] + add r0, r7, #0x0 + mov r1, #0x4c + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x4c + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [sp, #0x0] + mov r1, #0x90 + mul r1, r0 + mov r6, #0x0 + add r5, r5, r1 +_0202BE14: + add r0, r5, #0x0 + bl FUN_0202B89C + cmp r0, #0x0 + beq _0202BE60 + ldr r2, [r4, #0x0] + mov r1, #0xc + mul r1, r2 + ldr r0, [r5, #0x0] + add r1, r4, r1 + str r0, [r1, #0x4] + ldr r2, [r4, #0x0] + mov r1, #0xc + mul r1, r2 + ldr r0, [r5, #0x4] + add r1, r4, r1 + str r0, [r1, #0x8] + mov r0, #0x8 + add r1, r7, #0x0 + bl FUN_020219F4 + ldr r2, [r4, #0x0] + mov r1, #0xc + mul r1, r2 + add r1, r4, r1 + str r0, [r1, #0xc] + ldr r1, [r4, #0x0] + mov r0, #0xc + mul r0, r1 + add r0, r4, r0 + add r1, r5, #0x0 + ldr r0, [r0, #0xc] + add r1, #0x8 + bl FUN_02021E28 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] +_0202BE60: + add r6, r6, #0x1 + add r5, #0x18 + cmp r6, #0x6 + blt _0202BE14 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0202BE6C +FUN_0202BE6C: ; 0x0202BE6C + push {r4-r6, lr} + add r6, r0, #0x0 + mov r4, #0x0 + add r5, r6, #0x0 +_0202BE74: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _0202BE7E + bl FUN_02021A20 +_0202BE7E: + add r4, r4, #0x1 + add r5, #0xc + cmp r4, #0x6 + blt _0202BE74 + add r0, r6, #0x0 + mov r1, #0x0 + mov r2, #0x4c + blx MI_CpuFill8 + add r0, r6, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + + thumb_func_start FUN_0202BE98 +FUN_0202BE98: ; 0x0202BE98 + ldr r0, _0202BE9C ; =0x00000688 + bx lr + .balign 4 +_0202BE9C: .word 0x00000688 + + thumb_func_start FUN_0202BEA0 +FUN_0202BEA0: ; 0x0202BEA0 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r2, _0202BED8 ; =0x00000688 + mov r0, #0x0 + add r1, r5, #0x0 + blx MIi_CpuClearFast + mov r4, #0x0 + mov r6, #0xab + add r7, r4, #0x0 +_0202BEB4: + add r0, r5, #0x0 + bl FUN_02066978 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0202BECC + bl ErrorHandling +_0202BECC: + add r4, r4, #0x1 + add r5, #0xec + cmp r4, #0x6 + blt _0202BEB4 + pop {r3-r7, pc} + nop +_0202BED8: .word 0x00000688 + + thumb_func_start FUN_0202BEDC +FUN_0202BEDC: ; 0x0202BEDC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r2, _0202BF14 ; =0x00000588 + mov r0, #0x0 + add r1, r5, #0x0 + blx MIi_CpuClearFast + mov r4, #0x0 + mov r6, #0xab + add r7, r4, #0x0 +_0202BEF0: + add r0, r5, #0x0 + bl FUN_02066978 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0202BF08 + bl ErrorHandling +_0202BF08: + add r4, r4, #0x1 + add r5, #0xec + cmp r4, #0x6 + blt _0202BEF0 + pop {r3-r7, pc} + nop +_0202BF14: .word 0x00000588 + + thumb_func_start FUN_0202BF18 +FUN_0202BF18: ; 0x0202BF18 + push {r4-r7} + add r2, r0, #0x0 + ldr r3, _0202BF70 ; =0x00000588 + mov r0, #0x0 + add r5, r2, #0x0 +_0202BF22: + ldr r4, [r5, r3] + cmp r1, r4 + beq _0202BF6C + add r0, r0, #0x1 + add r5, r5, #0x4 + cmp r0, #0x14 + blt _0202BF22 + ldr r1, _0202BF70 ; =0x00000588 + mov r0, #0x0 + add r4, r2, #0x0 +_0202BF36: + ldr r3, [r4, r1] + cmp r3, #0x0 + beq _0202BF6C + add r0, r0, #0x1 + add r4, r4, #0x4 + cmp r0, #0x14 + blt _0202BF36 + mov r3, #0x0 + ldr r4, _0202BF74 ; =0x7FFFFFFF + add r5, r3, #0x0 +_0202BF4A: + ldr r0, _0202BF78 ; =0x000005D8 + ldr r1, [r2, r0] + add r0, r0, #0x4 + ldr r0, [r2, r0] + sub r6, r1, r4 + mov r12, r0 + mov r6, r12 + sbc r6, r3 + bge _0202BF62 + add r4, r1, #0x0 + add r3, r0, #0x0 + add r7, r5, #0x0 +_0202BF62: + add r5, r5, #0x1 + add r2, #0x8 + cmp r5, #0x14 + blt _0202BF4A + add r0, r7, #0x0 +_0202BF6C: + pop {r4-r7} + bx lr + .balign 4 +_0202BF70: .word 0x00000588 +_0202BF74: .word 0x7FFFFFFF +_0202BF78: .word 0x000005D8 + + thumb_func_start FUN_0202BF7C +FUN_0202BF7C: ; 0x0202BF7C + add r3, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0xec + mul r1, r2 + add r1, r3, r1 + ldr r3, _0202BF8C ; =FUN_02069A64 + bx r3 + nop +_0202BF8C: .word FUN_02069A64 + + thumb_func_start FUN_0202BF90 +FUN_0202BF90: ; 0x0202BF90 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0202BF18 + add r6, r0, #0x0 + lsl r0, r6, #0x2 + add r1, r5, r0 + ldr r0, _0202BFCC ; =0x00000588 + str r4, [r1, r0] + bl FUN_020126FC + lsl r2, r6, #0x3 + add r3, r5, r2 + ldr r2, _0202BFD0 ; =0x000005D8 + str r0, [r3, r2] + add r0, r2, #0x4 + str r1, [r3, r0] + blx OS_GetOwnerRtcOffset + ldr r2, _0202BFD4 ; =0x00000678 + str r0, [r5, r2] + add r0, r2, #0x4 + add r2, #0x8 + str r1, [r5, r0] + add r0, r5, r2 + blx OS_GetMacAddress + pop {r4-r6, pc} + nop +_0202BFCC: .word 0x00000588 +_0202BFD0: .word 0x000005D8 +_0202BFD4: .word 0x00000678 + + thumb_func_start FUN_0202BFD8 +FUN_0202BFD8: ; 0x0202BFD8 + push {r4-r6, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + add r4, r2, #0x0 + cmp r5, #0x6 + blt _0202BFE8 + bl ErrorHandling +_0202BFE8: + mov r0, #0xec + mul r0, r5 + add r3, r6, r0 + mov r2, #0x1d +_0202BFF0: + ldmia r3!, {r0-r1} + stmia r4!, {r0-r1} + sub r2, r2, #0x1 + bne _0202BFF0 + ldr r0, [r3, #0x0] + str r0, [r4, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202C000 +FUN_0202C000: ; 0x0202C000 + push {r3-r7, lr} + mov r4, #0x0 + add r5, r0, #0x0 + add r6, r4, #0x0 + mov r7, #0xab +_0202C00A: + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0202C01A + add r4, r4, #0x1 +_0202C01A: + add r6, r6, #0x1 + add r5, #0xec + cmp r6, #0x6 + blt _0202C00A + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202C028 +FUN_0202C028: ; 0x0202C028 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020126FC + ldr r1, _0202C058 ; =0x00000588 + mov r3, #0x0 + add r6, r5, #0x0 +_0202C038: + ldr r2, [r6, r1] + cmp r4, r2 + bne _0202C04A + lsl r1, r3, #0x3 + add r2, r5, r1 + ldr r1, _0202C05C ; =0x000005D8 + ldr r1, [r2, r1] + sub r0, r0, r1 + pop {r4-r6, pc} +_0202C04A: + add r3, r3, #0x1 + add r6, r6, #0x4 + cmp r3, #0x14 + blt _0202C038 + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0202C058: .word 0x00000588 +_0202C05C: .word 0x000005D8 + + thumb_func_start FUN_0202C060 +FUN_0202C060: ; 0x0202C060 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, sp, #0x0 + blx OS_GetMacAddress + mov r0, #0x1a + mov r3, #0x0 + add r5, sp, #0x0 + lsl r0, r0, #0x6 +_0202C074: + add r1, r4, r3 + ldrb r2, [r5, #0x0] + ldrb r1, [r1, r0] + cmp r2, r1 + beq _0202C084 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_0202C084: + add r3, r3, #0x1 + add r5, r5, #0x1 + cmp r3, #0x6 + blt _0202C074 + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202C094 +FUN_0202C094: ; 0x0202C094 + push {r4, lr} + add r4, r0, #0x0 + blx OS_GetOwnerRtcOffset + ldr r2, _0202C0B4 ; =0x00000678 + ldr r3, [r4, r2] + add r2, r2, #0x4 + ldr r2, [r4, r2] + eor r0, r3 + eor r1, r2 + orr r0, r1 + bne _0202C0B0 + mov r0, #0x1 + pop {r4, pc} +_0202C0B0: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0202C0B4: .word 0x00000678 + + thumb_func_start FUN_0202C0B8 +FUN_0202C0B8: ; 0x0202C0B8 + push {r3-r4} + mov r4, #0x0 + mov r1, #0x1a + add r3, r4, #0x0 + lsl r1, r1, #0x6 +_0202C0C2: + add r2, r0, r3 + ldrb r2, [r2, r1] + add r3, r3, #0x1 + orr r4, r2 + cmp r3, #0x6 + blt _0202C0C2 + cmp r4, #0x0 + bne _0202C0D8 + mov r0, #0x1 + pop {r3-r4} + bx lr +_0202C0D8: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0202C0E0 +FUN_0202C0E0: ; 0x0202C0E0 + mov r0, #0x28 + bx lr + + thumb_func_start FUN_0202C0E4 +FUN_0202C0E4: ; 0x0202C0E4 + push {r4-r5} + mov r4, #0x0 + add r1, r4, #0x0 + add r2, r4, #0x0 +_0202C0EC: + add r3, r2, #0x0 + add r5, r0, #0x0 +_0202C0F0: + add r3, r3, #0x1 + strh r1, [r5, #0x0] + add r5, r5, #0x2 + cmp r3, #0x4 + blt _0202C0F0 + add r4, r4, #0x1 + add r0, #0x8 + cmp r4, #0x5 + blt _0202C0EC + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_0202C108 +FUN_0202C108: ; 0x0202C108 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0x21 + add r4, r2, #0x0 + bl FUN_02022610 + lsl r1, r5, #0x3 + add r3, r0, r1 + lsl r2, r4, #0x1 + ldrh r1, [r3, r2] + ldr r0, _0202C128 ; =0x0000270F + cmp r1, r0 + bhs _0202C126 + add r0, r1, #0x1 + strh r0, [r3, r2] +_0202C126: + pop {r3-r5, pc} + .balign 4 +_0202C128: .word 0x0000270F + + thumb_func_start FUN_0202C12C +FUN_0202C12C: ; 0x0202C12C + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0x21 + add r4, r2, #0x0 + bl FUN_02022610 + lsl r2, r5, #0x3 + lsl r1, r4, #0x1 + add r0, r0, r2 + ldrh r0, [r1, r0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202C144 +FUN_0202C144: ; 0x0202C144 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0202C194 + add r0, r5, #0x0 + bl FUN_02024DA0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02029FC8 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + lsl r2, r2, #0x10 + add r0, r7, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x10 + bl FUN_0202A1C4 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02024AF0 + add r0, r5, #0x0 + bl FUN_0204C1A8 + add r1, r4, #0x0 + bl FUN_0204C104 +_0202C194: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202C198 +FUN_0202C198: ; 0x0202C198 + ldr r1, _0202C1A4 ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202C1A8 ; =0x00001310 + str r0, [r2, r1] + bx lr + nop +_0202C1A4: .word 0x021C59D8 +_0202C1A8: .word 0x00001310 + + thumb_func_start FUN_0202C1AC +FUN_0202C1AC: ; 0x0202C1AC + ldr r1, _0202C1C0 ; =0x021C59D8 + ldr r3, [r1, #0x4] + ldr r1, _0202C1C4 ; =0x00001310 + ldr r2, [r3, r1] + sub r2, #0x9 + cmp r2, #0x1 + bls _0202C1BE + add r1, #0x20 + str r0, [r3, r1] +_0202C1BE: + bx lr + .balign 4 +_0202C1C0: .word 0x021C59D8 +_0202C1C4: .word 0x00001310 + + thumb_func_start FUN_0202C1C8 +FUN_0202C1C8: ; 0x0202C1C8 + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r1, _0202C1F0 ; =0x021C59D8 + ldr r0, _0202C1F4 ; =FUN_0202C1F8 + ldr r1, [r1, #0x4] + blx WM_SetParentParameter + cmp r0, #0x2 + beq _0202C1EC + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x0 + pop {r3, pc} +_0202C1EC: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202C1F0: .word 0x021C59D8 +_0202C1F4: .word FUN_0202C1F8 + + thumb_func_start FUN_0202C1F8 +FUN_0202C1F8: ; 0x0202C1F8 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202C20C + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r3, pc} +_0202C20C: + bl FUN_0202C21C + cmp r0, #0x0 + bne _0202C21A + mov r0, #0x9 + bl FUN_0202C198 +_0202C21A: + pop {r3, pc} + + thumb_func_start FUN_0202C21C +FUN_0202C21C: ; 0x0202C21C + push {r4, lr} + ldr r0, _0202C278 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C27C ; =0x00001310 + ldr r0, [r1, r0] + sub r0, r0, #0x4 + cmp r0, #0x2 + bhi _0202C230 + mov r0, #0x1 + pop {r4, pc} +_0202C230: + blx WMi_GetStatusAddress + add r4, r0, #0x0 + mov r0, #0x66 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x4 + blx DC_InvalidateRange + mov r0, #0x66 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r4, r0 + mov r1, #0x4 + blx DC_FlushRange + ldr r0, _0202C280 ; =FUN_0202C288 + blx WM_StartParent + cmp r0, #0x2 + beq _0202C264 + bl FUN_0202C1AC + mov r0, #0x0 + pop {r4, pc} +_0202C264: + ldr r2, _0202C278 ; =0x021C59D8 + ldr r1, _0202C284 ; =0x0000132C + ldr r0, [r2, #0x4] + mov r3, #0x0 + strh r3, [r0, r1] + ldr r2, [r2, #0x4] + mov r0, #0x1 + add r1, r1, #0x2 + strh r0, [r2, r1] + pop {r4, pc} + .balign 4 +_0202C278: .word 0x021C59D8 +_0202C27C: .word 0x00001310 +_0202C280: .word FUN_0202C288 +_0202C284: .word 0x0000132C + + thumb_func_start FUN_0202C288 +FUN_0202C288: ; 0x0202C288 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x10] + mov r1, #0x1 + lsl r1, r0 + lsl r0, r1, #0x10 + lsr r4, r0, #0x10 + ldrh r0, [r5, #0x2] + cmp r0, #0x0 + beq _0202C2A8 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r4-r6, pc} +_0202C2A8: + ldrh r0, [r5, #0x8] + cmp r0, #0x7 + bgt _0202C2C0 + bge _0202C2DA + cmp r0, #0x2 + bgt _0202C378 + cmp r0, #0x0 + blt _0202C378 + beq _0202C36A + cmp r0, #0x2 + beq _0202C2CC + pop {r4-r6, pc} +_0202C2C0: + cmp r0, #0x9 + bgt _0202C2C8 + beq _0202C34C + pop {r4-r6, pc} +_0202C2C8: + cmp r0, #0x1a + pop {r4-r6, pc} +_0202C2CC: + ldr r0, _0202C37C ; =0x021C59D8 + ldr r2, [r0, #0x4] + ldr r0, _0202C380 ; =0x00001345 + ldrb r1, [r2, r0] + add r1, r1, #0x1 + strb r1, [r2, r0] + pop {r4-r6, pc} +_0202C2DA: + ldr r0, _0202C37C ; =0x021C59D8 + ldr r2, [r0, #0x4] + ldr r0, _0202C384 ; =0x00001343 + ldrb r1, [r2, r0] + cmp r1, #0x1 + beq _0202C318 + sub r0, r0, #0x1 + ldrb r0, [r2, r0] + cmp r0, #0x1 + beq _0202C318 + bl FUN_0202CBA0 + ldr r1, _0202C37C ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202C388 ; =0x00001334 + ldrb r1, [r2, r1] + cmp r0, r1 + bge _0202C318 + bl FUN_02033534 + ldrb r1, [r5, #0x14] + cmp r1, r0 + bne _0202C318 + add r1, r5, #0x0 + ldr r0, _0202C38C ; =0x02105D54 + add r1, #0x15 + mov r2, #0x3 + blx memcmp + cmp r0, #0x0 + beq _0202C330 +_0202C318: + ldrh r1, [r5, #0x10] + mov r0, #0x0 + blx WM_Disconnect + cmp r0, #0x2 + beq _0202C378 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r4-r6, pc} +_0202C330: + ldr r1, _0202C37C ; =0x021C59D8 + ldr r0, _0202C390 ; =0x0000132E + ldr r3, [r1, #0x4] + ldrh r2, [r3, r0] + orr r2, r4 + strh r2, [r3, r0] + ldr r1, [r1, #0x4] + sub r0, r0, #0x6 + ldr r1, [r1, r0] + cmp r1, #0x0 + beq _0202C378 + ldrh r0, [r5, #0x10] + blx r1 + pop {r4-r6, pc} +_0202C34C: + ldr r2, _0202C37C ; =0x021C59D8 + ldr r1, _0202C390 ; =0x0000132E + ldr r0, [r2, #0x4] + mvn r3, r4 + ldrh r6, [r0, r1] + and r3, r6 + strh r3, [r0, r1] + ldr r0, [r2, #0x4] + sub r1, #0xa + ldr r1, [r0, r1] + cmp r1, #0x0 + beq _0202C378 + ldrh r0, [r5, #0x10] + blx r1 + pop {r4-r6, pc} +_0202C36A: + bl FUN_0202C394 + cmp r0, #0x0 + bne _0202C378 + mov r0, #0x9 + bl FUN_0202C198 +_0202C378: + pop {r4-r6, pc} + nop +_0202C37C: .word 0x021C59D8 +_0202C380: .word 0x00001345 +_0202C384: .word 0x00001343 +_0202C388: .word 0x00001334 +_0202C38C: .word 0x02105D54 +_0202C390: .word 0x0000132E + + thumb_func_start FUN_0202C394 +FUN_0202C394: ; 0x0202C394 + push {r4, lr} + sub sp, #0x8 + ldr r0, _0202C3F0 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C3F4 ; =0x00001310 + ldr r0, [r1, r0] + sub r0, r0, #0x4 + cmp r0, #0x2 + bhi _0202C3AC + add sp, #0x8 + mov r0, #0x1 + pop {r4, pc} +_0202C3AC: + mov r0, #0x4 + bl FUN_0202C198 + ldr r0, _0202C3F0 ; =0x021C59D8 + ldr r2, _0202C3F8 ; =0x00001304 + ldr r4, [r0, #0x4] + ldr r3, _0202C3FC ; =0x00001020 + ldr r0, [r4, r2] + add r2, r2, #0x4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r2, [r4, r2] + add r1, r4, r3 + lsl r2, r2, #0x10 + sub r3, #0xe0 + ldr r0, _0202C400 ; =FUN_0202C404 + lsr r2, r2, #0x10 + add r3, r4, r3 + blx WM_StartMP + cmp r0, #0x2 + beq _0202C3E8 + bl FUN_0202C1AC + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_0202C3E8: + mov r0, #0x1 + add sp, #0x8 + pop {r4, pc} + nop +_0202C3F0: .word 0x021C59D8 +_0202C3F4: .word 0x00001310 +_0202C3F8: .word 0x00001304 +_0202C3FC: .word 0x00001020 +_0202C400: .word FUN_0202C404 + + thumb_func_start FUN_0202C404 +FUN_0202C404: ; 0x0202C404 + push {r3, lr} + ldrh r1, [r0, #0x2] + cmp r1, #0x0 + beq _0202C41A + add r0, r1, #0x0 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r3, pc} +_0202C41A: + ldrh r0, [r0, #0x4] + sub r0, #0xa + cmp r0, #0x3 + bhi _0202C454 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202C42E: ; jump table (using 16-bit offset) + .short _0202C436 - _0202C42E - 2; case 0 + .short _0202C454 - _0202C42E - 2; case 1 + .short _0202C454 - _0202C42E - 2; case 2 + .short _0202C454 - _0202C42E - 2; case 3 +_0202C436: + ldr r0, _0202C458 ; =0x021C59D8 + ldr r2, [r0, #0x4] + ldr r0, _0202C45C ; =0x00001314 + ldr r1, [r2, r0] + cmp r1, #0x2 + bne _0202C44E + sub r0, r0, #0x4 + ldr r0, [r2, r0] + cmp r0, #0x4 + beq _0202C44E + cmp r0, #0x6 + beq _0202C454 +_0202C44E: + mov r0, #0x4 + bl FUN_0202C198 +_0202C454: + pop {r3, pc} + nop +_0202C458: .word 0x021C59D8 +_0202C45C: .word 0x00001314 + + thumb_func_start FUN_0202C460 +FUN_0202C460: ; 0x0202C460 + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202C480 ; =FUN_0202C484 + blx WM_EndMP + cmp r0, #0x2 + beq _0202C47A + bl FUN_0202C1AC + mov r0, #0x0 + pop {r3, pc} +_0202C47A: + mov r0, #0x1 + pop {r3, pc} + nop +_0202C480: .word FUN_0202C484 + + thumb_func_start FUN_0202C484 +FUN_0202C484: ; 0x0202C484 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202C496 + bl FUN_0202C1AC + bl FUN_0202D0D8 + pop {r3, pc} +_0202C496: + bl FUN_0202C4A4 + cmp r0, #0x0 + bne _0202C4A2 + bl FUN_0202D0D8 +_0202C4A2: + pop {r3, pc} + + thumb_func_start FUN_0202C4A4 +FUN_0202C4A4: ; 0x0202C4A4 + push {r3, lr} + ldr r0, _0202C4BC ; =FUN_0202C4C0 + blx WM_EndParent + cmp r0, #0x2 + beq _0202C4B8 + bl FUN_0202C1AC + mov r0, #0x0 + pop {r3, pc} +_0202C4B8: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202C4BC: .word FUN_0202C4C0 + + thumb_func_start FUN_0202C4C0 +FUN_0202C4C0: ; 0x0202C4C0 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202C4CE + bl FUN_0202C1AC + pop {r3, pc} +_0202C4CE: + mov r0, #0x1 + bl FUN_0202C198 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202C4D8 +FUN_0202C4D8: ; 0x0202C4D8 + push {r3-r7, lr} + add r6, r2, #0x0 + ldr r2, _0202C564 ; =0x021C59D8 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r3, #0x2 + ldr r0, [r2, #0x4] + ldr r1, _0202C568 ; =0x00001308 + lsl r3, r3, #0x8 + str r3, [r0, r1] + ldr r2, [r2, #0x4] + mov r0, #0x40 + sub r1, r1, #0x4 + str r0, [r2, r1] + mov r0, #0x2 + bl FUN_0202C198 + ldr r1, _0202C564 ; =0x021C59D8 + ldr r0, _0202C56C ; =0x00001256 + ldr r3, [r1, #0x4] + mov r2, #0x1 + strh r2, [r3, r0] + add r7, r0, #0x0 + ldrh r3, [r4, #0x4] + ldr r2, [r1, #0x4] + add r7, #0x96 + strh r3, [r2, r7] + add r7, r0, #0x0 + ldrh r3, [r4, #0x2] + ldr r2, [r1, #0x4] + add r7, #0x94 + strh r3, [r2, r7] + add r2, r0, #0x0 + ldrh r4, [r4, #0x0] + ldr r3, [r1, #0x4] + add r2, #0x92 + strh r4, [r3, r2] + add r2, r0, #0x0 + ldr r3, [r1, #0x4] + add r2, #0xbe + str r5, [r3, r2] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + mov r2, #0x0 + add r3, #0xaa + str r2, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + add r3, #0xb6 + strh r6, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + add r3, #0x8e + strh r2, [r4, r3] + ldr r2, [r1, #0x4] + add r0, #0xb8 + mov r1, #0x1 + strh r1, [r2, r0] + bl FUN_0202C5D8 + cmp r0, #0x0 + bne _0202C55E + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x0 + pop {r3-r7, pc} +_0202C55E: + mov r0, #0x1 + pop {r3-r7, pc} + nop +_0202C564: .word 0x021C59D8 +_0202C568: .word 0x00001308 +_0202C56C: .word 0x00001256 + + thumb_func_start FUN_0202C570 +FUN_0202C570: ; 0x0202C570 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r0, #0x2 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0202C198 + ldr r1, _0202C5D4 ; =0x021C59D8 + mov r0, #0x13 + ldr r2, [r1, #0x4] + lsl r0, r0, #0x8 + str r5, [r2, r0] + add r2, r0, #0x0 + ldr r3, [r1, #0x4] + add r2, #0xc + strh r6, [r3, r2] + add r3, r0, #0x0 + ldr r5, [r1, #0x4] + mov r2, #0x0 + sub r3, #0x1c + strh r2, [r5, r3] + add r3, r0, #0x0 + ldr r5, [r1, #0x4] + add r3, #0xe + strh r2, [r5, r3] + add r2, r0, #0x0 + ldrh r5, [r4, #0x4] + ldr r3, [r1, #0x4] + sub r2, #0x14 + strh r5, [r3, r2] + add r2, r0, #0x0 + ldrh r5, [r4, #0x2] + ldr r3, [r1, #0x4] + sub r2, #0x16 + strh r5, [r3, r2] + ldrh r2, [r4, #0x0] + ldr r1, [r1, #0x4] + sub r0, #0x18 + strh r2, [r1, r0] + bl FUN_0202C5D8 + cmp r0, #0x0 + bne _0202C5D0 + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x0 + pop {r4-r6, pc} +_0202C5D0: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0202C5D4: .word 0x021C59D8 + + thumb_func_start FUN_0202C5D8 +FUN_0202C5D8: ; 0x0202C5D8 + push {r3-r7, lr} + blx WM_GetAllowedChannel + add r5, r0, #0x0 + mov r0, #0x2 + lsl r0, r0, #0xe + cmp r5, r0 + bne _0202C5F8 + mov r0, #0x3 + bl FUN_0202C1AC + mov r0, #0x1 + bl FUN_020336A0 + mov r0, #0x0 + pop {r3-r7, pc} +_0202C5F8: + cmp r5, #0x0 + bne _0202C60C + mov r0, #0x16 + bl FUN_0202C1AC + mov r0, #0x1 + bl FUN_020336A0 + mov r0, #0x0 + pop {r3-r7, pc} +_0202C60C: + ldr r1, _0202C684 ; =0x021C59D8 + ldr r0, _0202C688 ; =0x0000130C + ldr r3, [r1, #0x4] + ldrh r2, [r3, r0] + cmp r2, #0x0 + bne _0202C64C + add r7, r0, #0x0 + mov r3, #0x1 + add r2, r3, #0x0 + sub r7, #0x28 + sub r0, #0x28 +_0202C622: + ldr r4, [r1, #0x4] + ldr r6, _0202C68C ; =0x000012E4 + ldrh r6, [r4, r6] + add r6, r6, #0x1 + strh r6, [r4, r7] + ldr r4, [r1, #0x4] + ldrh r6, [r4, r0] + cmp r6, #0x10 + bls _0202C638 + ldr r6, _0202C68C ; =0x000012E4 + strh r3, [r4, r6] +_0202C638: + ldr r6, [r1, #0x4] + ldr r4, _0202C68C ; =0x000012E4 + ldrh r4, [r6, r4] + add r6, r2, #0x0 + sub r4, r4, #0x1 + lsl r6, r4 + add r4, r5, #0x0 + tst r4, r6 + bne _0202C650 + b _0202C622 +_0202C64C: + sub r0, #0x28 + strh r2, [r3, r0] +_0202C650: + blx WM_GetDispersionScanPeriod + ldr r2, _0202C684 ; =0x021C59D8 + ldr r1, _0202C690 ; =0x000012E6 + ldr r3, [r2, #0x4] + strh r0, [r3, r1] + add r0, r1, #0x0 + ldr r3, [r2, #0x4] + sub r0, #0xc6 + add r4, r3, r0 + sub r0, r1, #0x6 + str r4, [r3, r0] + ldr r2, [r2, #0x4] + sub r1, r1, #0x6 + ldr r0, _0202C694 ; =FUN_0202C698 + add r1, r2, r1 + blx WM_StartScan + cmp r0, #0x2 + beq _0202C680 + bl FUN_0202C1AC + mov r0, #0x0 + pop {r3-r7, pc} +_0202C680: + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0202C684: .word 0x021C59D8 +_0202C688: .word 0x0000130C +_0202C68C: .word 0x000012E4 +_0202C690: .word 0x000012E6 +_0202C694: .word FUN_0202C698 + + thumb_func_start FUN_0202C698 +FUN_0202C698: ; 0x0202C698 + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _0202C6AE + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C6AE: + ldr r0, _0202C760 ; =0x021C59D8 + ldr r2, [r0, #0x4] + ldr r0, _0202C764 ; =0x00001310 + ldr r1, [r2, r0] + cmp r1, #0x2 + beq _0202C6D0 + mov r1, #0x0 + sub r0, r0, #0x2 + strh r1, [r2, r0] + bl FUN_0202C794 + cmp r0, #0x0 + bne _0202C75C + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C6D0: + ldrh r1, [r4, #0x8] + cmp r1, #0x3 + beq _0202C75C + cmp r1, #0x4 + beq _0202C74E + cmp r1, #0x5 + bne _0202C74E + sub r0, #0xf0 + add r0, r2, r0 + mov r1, #0xc0 + blx DC_InvalidateRange + ldr r0, _0202C760 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C768 ; =0x00001320 + ldr r2, [r1, r0] + cmp r2, #0x0 + beq _0202C704 + ldrh r0, [r4, #0x36] + cmp r0, #0x8 + blo _0202C704 + add r1, r4, #0x0 + add r1, #0x48 + ldrb r1, [r1, #0x4] + ldr r0, [r4, #0x3c] + blx r2 +_0202C704: + ldrh r0, [r4, #0x36] + cmp r0, #0x8 + blo _0202C74E + ldr r0, _0202C760 ; =0x021C59D8 + ldr r2, [r4, #0x3c] + ldr r0, [r0, #0x4] + ldr r1, [r0, #0x8] + cmp r2, r1 + bne _0202C74E + add r4, #0x43 + ldrb r2, [r4, #0x0] + mov r1, #0x3 + and r1, r2 + cmp r1, #0x1 + bne _0202C74E + mov r1, #0x13 + lsl r1, r1, #0x8 + ldr r2, [r0, r1] + cmp r2, #0x0 + beq _0202C732 + sub r1, #0xe0 + add r0, r0, r1 + blx r2 +_0202C732: + ldr r0, _0202C760 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C76C ; =0x0000130E + ldrh r0, [r1, r0] + cmp r0, #0x0 + beq _0202C74E + bl FUN_0202C794 + cmp r0, #0x0 + bne _0202C75C + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C74E: + bl FUN_0202C5D8 + cmp r0, #0x0 + bne _0202C75C + mov r0, #0x9 + bl FUN_0202C198 +_0202C75C: + pop {r4, pc} + nop +_0202C760: .word 0x021C59D8 +_0202C764: .word 0x00001310 +_0202C768: .word 0x00001320 +_0202C76C: .word 0x0000130E + + thumb_func_start FUN_0202C770 +FUN_0202C770: ; 0x0202C770 + push {r3, lr} + ldr r0, _0202C78C ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C790 ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x2 + beq _0202C782 + mov r0, #0x0 + pop {r3, pc} +_0202C782: + mov r0, #0x3 + bl FUN_0202C198 + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202C78C: .word 0x021C59D8 +_0202C790: .word 0x00001310 + + thumb_func_start FUN_0202C794 +FUN_0202C794: ; 0x0202C794 + push {r3, lr} + ldr r0, _0202C7AC ; =FUN_0202C7B0 + blx WM_EndScan + cmp r0, #0x2 + beq _0202C7A8 + bl FUN_0202C1AC + mov r0, #0x0 + pop {r3, pc} +_0202C7A8: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202C7AC: .word FUN_0202C7B0 + + thumb_func_start FUN_0202C7B0 +FUN_0202C7B0: ; 0x0202C7B0 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202C7BE + bl FUN_0202C1AC + pop {r3, pc} +_0202C7BE: + mov r0, #0x1 + bl FUN_0202C198 + ldr r0, _0202C7E0 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C7E4 ; =0x0000130E + ldrh r0, [r1, r0] + cmp r0, #0x0 + beq _0202C7DE + bl FUN_0202C7E8 + cmp r0, #0x0 + bne _0202C7DE + mov r0, #0x9 + bl FUN_0202C198 +_0202C7DE: + pop {r3, pc} + .balign 4 +_0202C7E0: .word 0x021C59D8 +_0202C7E4: .word 0x0000130E + + thumb_func_start FUN_0202C7E8 +FUN_0202C7E8: ; 0x0202C7E8 + push {lr} + sub sp, #0x24 + ldr r0, _0202C844 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C848 ; =0x00001310 + ldr r0, [r1, r0] + sub r0, r0, #0x4 + cmp r0, #0x2 + bhi _0202C800 + add sp, #0x24 + mov r0, #0x1 + pop {pc} +_0202C800: + mov r0, #0x3 + bl FUN_0202C198 + add r1, sp, #0x4 + ldr r0, _0202C84C ; =0x02105D54 + add r1, #0x1 + mov r2, #0x3 + blx MI_CpuCopy8 + bl FUN_02033534 + add r1, sp, #0x4 + strb r0, [r1, #0x0] + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, _0202C844 ; =0x021C59D8 + ldr r0, _0202C850 ; =FUN_0202C858 + ldr r2, [r1, #0x4] + ldr r1, _0202C854 ; =0x00001220 + mov r3, #0x1 + add r1, r2, r1 + add r2, sp, #0x4 + blx WM_StartConnectEx + cmp r0, #0x2 + beq _0202C83E + bl FUN_0202C1AC + add sp, #0x24 + mov r0, #0x0 + pop {pc} +_0202C83E: + mov r0, #0x1 + add sp, #0x24 + pop {pc} + .balign 4 +_0202C844: .word 0x021C59D8 +_0202C848: .word 0x00001310 +_0202C84C: .word 0x02105D54 +_0202C850: .word FUN_0202C858 +_0202C854: .word 0x00001220 + + thumb_func_start FUN_0202C858 +FUN_0202C858: ; 0x0202C858 + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _0202C894 + bl FUN_0202C1AC + ldrh r0, [r4, #0x2] + cmp r0, #0xc + bne _0202C874 + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C874: + cmp r0, #0xb + bne _0202C880 + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C880: + cmp r0, #0x1 + bne _0202C88C + mov r0, #0x8 + bl FUN_0202C198 + pop {r4, pc} +_0202C88C: + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C894: + ldrh r0, [r4, #0x8] + cmp r0, #0x8 + beq _0202C8FA + cmp r0, #0x7 + bne _0202C8DA + ldr r0, _0202C8FC ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202C900 ; =0x00001335 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202C8B8 + mov r0, #0x14 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C8B8: + mov r0, #0x4 + bl FUN_0202C198 + bl FUN_0202C908 + cmp r0, #0x0 + bne _0202C8CE + mov r0, #0x3 + bl FUN_0202C198 + pop {r4, pc} +_0202C8CE: + ldr r0, _0202C8FC ; =0x021C59D8 + ldrh r2, [r4, #0xa] + ldr r1, [r0, #0x4] + ldr r0, _0202C904 ; =0x0000132C + strh r2, [r1, r0] + pop {r4, pc} +_0202C8DA: + cmp r0, #0x6 + beq _0202C8FA + cmp r0, #0x9 + bne _0202C8F0 + mov r0, #0x14 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r4, pc} +_0202C8F0: + cmp r0, #0x1a + beq _0202C8FA + mov r0, #0x9 + bl FUN_0202C198 +_0202C8FA: + pop {r4, pc} + .balign 4 +_0202C8FC: .word 0x021C59D8 +_0202C900: .word 0x00001335 +_0202C904: .word 0x0000132C + + thumb_func_start FUN_0202C908 +FUN_0202C908: ; 0x0202C908 + push {r4, lr} + sub sp, #0x8 + ldr r0, _0202C948 ; =0x021C59D8 + ldr r2, _0202C94C ; =0x00001304 + ldr r4, [r0, #0x4] + ldr r3, _0202C950 ; =0x00001020 + ldr r0, [r4, r2] + add r1, r4, r3 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r2, r2, #0x4 + ldr r2, [r4, r2] + sub r3, #0xe0 + lsl r2, r2, #0x10 + ldr r0, _0202C954 ; =FUN_0202C958 + lsr r2, r2, #0x10 + add r3, r4, r3 + blx WM_StartMP + cmp r0, #0x2 + beq _0202C942 + bl FUN_0202C1AC + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_0202C942: + mov r0, #0x1 + add sp, #0x8 + pop {r4, pc} + .balign 4 +_0202C948: .word 0x021C59D8 +_0202C94C: .word 0x00001304 +_0202C950: .word 0x00001020 +_0202C954: .word FUN_0202C958 + + thumb_func_start FUN_0202C958 +FUN_0202C958: ; 0x0202C958 + push {r3, lr} + ldrh r1, [r0, #0x2] + cmp r1, #0x0 + beq _0202C97A + cmp r1, #0xf + beq _0202C9B0 + cmp r1, #0x9 + beq _0202C9B0 + cmp r1, #0xd + beq _0202C9B0 + add r0, r1, #0x0 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + pop {r3, pc} +_0202C97A: + ldrh r0, [r0, #0x4] + sub r0, #0xa + cmp r0, #0x3 + bhi _0202C9B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202C98E: ; jump table (using 16-bit offset) + .short _0202C996 - _0202C98E - 2; case 0 + .short _0202C9B0 - _0202C98E - 2; case 1 + .short _0202C9B0 - _0202C98E - 2; case 2 + .short _0202C9B0 - _0202C98E - 2; case 3 +_0202C996: + ldr r0, _0202C9B4 ; =0x021C59D8 + ldr r2, [r0, #0x4] + ldr r0, _0202C9B8 ; =0x00001314 + ldr r1, [r2, r0] + cmp r1, #0x3 + bne _0202C9AA + sub r0, r0, #0x4 + ldr r0, [r2, r0] + cmp r0, #0x6 + beq _0202C9B0 +_0202C9AA: + mov r0, #0x4 + bl FUN_0202C198 +_0202C9B0: + pop {r3, pc} + nop +_0202C9B4: .word 0x021C59D8 +_0202C9B8: .word 0x00001314 + + thumb_func_start FUN_0202C9BC +FUN_0202C9BC: ; 0x0202C9BC + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202C9DC ; =FUN_0202C9E0 + blx WM_EndMP + cmp r0, #0x2 + beq _0202C9D6 + bl FUN_0202C1AC + mov r0, #0x0 + pop {r3, pc} +_0202C9D6: + mov r0, #0x1 + pop {r3, pc} + nop +_0202C9DC: .word FUN_0202C9E0 + + thumb_func_start FUN_0202C9E0 +FUN_0202C9E0: ; 0x0202C9E0 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202C9F2 + bl FUN_0202C1AC + bl FUN_0202D100 + pop {r3, pc} +_0202C9F2: + bl FUN_0202CA04 + cmp r0, #0x0 + bne _0202CA00 + mov r0, #0x9 + bl FUN_0202C198 +_0202CA00: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202CA04 +FUN_0202CA04: ; 0x0202CA04 + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202CA28 ; =FUN_0202CA2C + mov r1, #0x0 + blx WM_Disconnect + cmp r0, #0x2 + beq _0202CA24 + bl FUN_0202C1AC + bl FUN_0202D0D8 + mov r0, #0x0 + pop {r3, pc} +_0202CA24: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202CA28: .word FUN_0202CA2C + + thumb_func_start FUN_0202CA2C +FUN_0202CA2C: ; 0x0202CA2C + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202CA3A + bl FUN_0202C1AC + pop {r3, pc} +_0202CA3A: + mov r0, #0x1 + bl FUN_0202C198 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202CA44 +FUN_0202CA44: ; 0x0202CA44 + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202CA64 ; =FUN_0202CA68 + blx WM_Reset + cmp r0, #0x2 + beq _0202CA5E + bl FUN_0202C1AC + mov r0, #0x0 + pop {r3, pc} +_0202CA5E: + mov r0, #0x1 + pop {r3, pc} + nop +_0202CA64: .word FUN_0202CA68 + + thumb_func_start FUN_0202CA68 +FUN_0202CA68: ; 0x0202CA68 + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _0202CA80 + mov r0, #0x9 + bl FUN_0202C198 + ldrh r0, [r4, #0x2] + bl FUN_0202C1AC + pop {r4, pc} +_0202CA80: + mov r0, #0x1 + bl FUN_0202C198 + pop {r4, pc} + + thumb_func_start FUN_0202CA88 +FUN_0202CA88: ; 0x0202CA88 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r0, _0202CAD0 ; =0x021C59D8 + add r6, r1, #0x0 + add r4, r2, #0x0 + ldr r1, [r0, #0x4] + mov r0, #0x3d + lsl r0, r0, #0x6 + ldr r2, _0202CAD4 ; =0x00001304 + add r0, r1, r0 + ldr r1, [r1, r2] + add r7, r3, #0x0 + blx DC_FlushRange + ldr r0, _0202CAD8 ; =0x0000FFFF + add r1, r7, #0x0 + str r0, [sp, #0x0] + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + ldr r0, _0202CADC ; =FUN_0202CAE0 + add r2, r5, #0x0 + add r3, r6, #0x0 + blx WM_SetMPDataToPortEx + cmp r0, #0x2 + bne _0202CACA + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0202CACA: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0202CAD0: .word 0x021C59D8 +_0202CAD4: .word 0x00001304 +_0202CAD8: .word 0x0000FFFF +_0202CADC: .word FUN_0202CAE0 + + thumb_func_start FUN_0202CAE0 +FUN_0202CAE0: ; 0x0202CAE0 + push {r3, lr} + ldrh r1, [r0, #0x2] + cmp r1, #0x0 + beq _0202CAF4 + cmp r1, #0xf + beq _0202CAF4 + add r0, r1, #0x0 + bl FUN_0202C1AC + pop {r3, pc} +_0202CAF4: + ldr r2, [r0, #0x20] + cmp r2, #0x0 + beq _0202CB06 + cmp r1, #0x0 + bne _0202CB02 + mov r0, #0x1 + b _0202CB04 +_0202CB02: + mov r0, #0x0 +_0202CB04: + blx r2 +_0202CB06: + pop {r3, pc} + + thumb_func_start FUN_0202CB08 +FUN_0202CB08: ; 0x0202CB08 + push {r3, lr} + add r2, r0, #0x0 + ldrh r0, [r2, #0x2] + cmp r0, #0x0 + beq _0202CB18 + bl FUN_0202C1AC + pop {r3, pc} +_0202CB18: + ldr r0, _0202CB48 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202CB4C ; =0x00001318 + ldr r3, [r1, r0] + cmp r3, #0x0 + beq _0202CB44 + ldrh r0, [r2, #0x4] + cmp r0, #0x19 + beq _0202CB44 + cmp r0, #0x15 + bne _0202CB38 + ldrh r0, [r2, #0x12] + ldr r1, [r2, #0xc] + ldrh r2, [r2, #0x10] + blx r3 + pop {r3, pc} +_0202CB38: + cmp r0, #0x9 + bne _0202CB44 + ldrh r0, [r2, #0x12] + mov r1, #0x0 + add r2, r1, #0x0 + blx r3 +_0202CB44: + pop {r3, pc} + nop +_0202CB48: .word 0x021C59D8 +_0202CB4C: .word 0x00001318 + + thumb_func_start FUN_0202CB50 +FUN_0202CB50: ; 0x0202CB50 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202CB60 + mov r0, #0xa + bl FUN_0202C198 + pop {r3, pc} +_0202CB60: + mov r0, #0x0 + add r1, r0, #0x0 + blx FUN_02090CC8 + mov r0, #0x0 + bl FUN_0202C198 + pop {r3, pc} + + thumb_func_start FUN_0202CB70 +FUN_0202CB70: ; 0x0202CB70 + ldr r1, _0202CB78 ; =0x021C59D8 + ldr r1, [r1, #0x4] + str r0, [r1, #0x8] + bx lr + .balign 4 +_0202CB78: .word 0x021C59D8 + + thumb_func_start FUN_0202CB7C +FUN_0202CB7C: ; 0x0202CB7C + ldr r2, _0202CB88 ; =0x021C59D8 + ldr r3, [r2, #0x4] + str r0, [r3, #0x0] + ldr r0, [r2, #0x4] + strh r1, [r0, #0x4] + bx lr + .balign 4 +_0202CB88: .word 0x021C59D8 + + thumb_func_start FUN_0202CB8C +FUN_0202CB8C: ; 0x0202CB8C + ldr r0, _0202CB98 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202CB9C ; =0x0000132E + ldrh r0, [r1, r0] + bx lr + nop +_0202CB98: .word 0x021C59D8 +_0202CB9C: .word 0x0000132E + + thumb_func_start FUN_0202CBA0 +FUN_0202CBA0: ; 0x0202CBA0 + push {r3-r4} + ldr r0, _0202CBCC ; =0x021C59D8 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202CBD0 ; =0x0000132E + add r3, r2, #0x0 + ldrh r4, [r1, r0] + mov r1, #0x1 +_0202CBB0: + add r0, r4, #0x0 + tst r0, r1 + beq _0202CBB8 + add r2, r2, #0x1 +_0202CBB8: + lsl r0, r4, #0xf + add r3, r3, #0x1 + lsr r4, r0, #0x10 + cmp r3, #0x10 + blt _0202CBB0 + lsl r0, r2, #0x10 + lsr r0, r0, #0x10 + pop {r3-r4} + bx lr + nop +_0202CBCC: .word 0x021C59D8 +_0202CBD0: .word 0x0000132E + + thumb_func_start FUN_0202CBD4 +FUN_0202CBD4: ; 0x0202CBD4 + ldr r0, _0202CBE0 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202CBE4 ; =0x00001310 + ldr r0, [r1, r0] + bx lr + nop +_0202CBE0: .word 0x021C59D8 +_0202CBE4: .word 0x00001310 + + thumb_func_start FUN_0202CBE8 +FUN_0202CBE8: ; 0x0202CBE8 + ldr r0, _0202CBF4 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202CBF8 ; =0x00001330 + ldr r0, [r1, r0] + bx lr + nop +_0202CBF4: .word 0x021C59D8 +_0202CBF8: .word 0x00001330 + + thumb_func_start FUN_0202CBFC +FUN_0202CBFC: ; 0x0202CBFC + push {r3-r5, lr} + sub sp, #0x8 + add r0, sp, #0x0 + blx OS_GetMacAddress + ldr r0, _0202CC84 ; =0x027FFC3C + ldr r3, [r0, #0x0] + add r0, sp, #0x0 + ldrh r2, [r0, #0x4] + ldrh r1, [r0, #0x2] + ldrh r0, [r0, #0x0] + add r0, r0, r3 + add r0, r1, r0 + add r1, r2, r0 + ldr r3, _0202CC88 ; =0x021C59D8 + ldr r2, _0202CC8C ; =0x00001338 + ldr r0, [r3, #0x4] + str r1, [r0, r2] + ldr r0, [r3, #0x4] + ldr r1, _0202CC90 ; =0x00010DCD + ldr r4, [r0, r2] + add r5, r4, #0x0 + mul r5, r1 + ldr r1, _0202CC94 ; =0x00003039 + mov r4, #0x0 + add r1, r5, r1 + str r1, [r0, r2] + ldr r1, [r3, #0x4] + add r0, r2, #0x4 + strh r4, [r1, r0] + ldr r1, [r3, #0x4] + mov r4, #0x65 + add r0, r2, #0x6 + strh r4, [r1, r0] + mov r0, #0x3 + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_0202CC98 + cmp r0, #0x18 + bne _0202CC68 + mov r0, #0x18 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_020336A0 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_0202CC68: + cmp r0, #0x2 + beq _0202CC7C + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_0202CC7C: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + nop +_0202CC84: .word 0x027FFC3C +_0202CC88: .word 0x021C59D8 +_0202CC8C: .word 0x00001338 +_0202CC90: .word 0x00010DCD +_0202CC94: .word 0x00003039 + + thumb_func_start FUN_0202CC98 +FUN_0202CC98: ; 0x0202CC98 + push {r4, lr} + add r4, r0, #0x0 + blx WM_GetAllowedChannel + mov r1, #0x2 + lsl r1, r1, #0xe + cmp r0, r1 + bne _0202CCBE + mov r0, #0x3 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_020336A0 + mov r0, #0x3 + pop {r4, pc} +_0202CCBE: + cmp r0, #0x0 + bne _0202CCD8 + mov r0, #0x16 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_020336A0 + mov r0, #0x18 + pop {r4, pc} +_0202CCD8: + mov r2, #0x1 + sub r1, r4, #0x1 + lsl r2, r1 + add r1, r2, #0x0 + tst r1, r0 + bne _0202CD00 + mov r2, #0x1 +_0202CCE6: + add r1, r4, #0x1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r4, #0x10 + bls _0202CCF4 + mov r0, #0x18 + pop {r4, pc} +_0202CCF4: + sub r1, r4, #0x1 + add r3, r2, #0x0 + lsl r3, r1 + add r1, r3, #0x0 + tst r1, r0 + beq _0202CCE6 +_0202CD00: + ldr r0, _0202CD10 ; =FUN_0202CD14 + add r1, r4, #0x0 + bl FUN_0202CD90 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} + nop +_0202CD10: .word FUN_0202CD14 + + thumb_func_start FUN_0202CD14 +FUN_0202CD14: ; 0x0202CD14 + push {r3-r5, lr} + ldrh r1, [r0, #0x2] + cmp r1, #0x0 + beq _0202CD30 + add r0, r1, #0x0 + bl FUN_0202C1AC + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_020336A0 + pop {r3-r5, pc} +_0202CD30: + ldr r2, _0202CD88 ; =0x021C59D8 + ldrh r1, [r0, #0x8] + ldrh r5, [r0, #0xa] + ldr r0, [r2, #0x4] + ldr r3, _0202CD8C ; =0x0000133E + ldrh r4, [r0, r3] + cmp r4, r5 + bls _0202CD50 + strh r5, [r0, r3] + mov r4, #0x1 + sub r0, r1, #0x1 + lsl r4, r0 + ldr r2, [r2, #0x4] + add r0, r3, #0x2 + strh r4, [r2, r0] + b _0202CD64 +_0202CD50: + cmp r4, r5 + bne _0202CD64 + add r2, r3, #0x2 + ldrh r5, [r0, r2] + mov r4, #0x1 + sub r2, r1, #0x1 + lsl r4, r2 + orr r4, r5 + add r2, r3, #0x2 + strh r4, [r0, r2] +_0202CD64: + add r0, r1, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202CC98 + cmp r0, #0x18 + bne _0202CD7A + mov r0, #0x7 + bl FUN_0202C198 + pop {r3-r5, pc} +_0202CD7A: + cmp r0, #0x2 + beq _0202CD84 + mov r0, #0x9 + bl FUN_0202C198 +_0202CD84: + pop {r3-r5, pc} + nop +_0202CD88: .word 0x021C59D8 +_0202CD8C: .word 0x0000133E + + thumb_func_start FUN_0202CD90 +FUN_0202CD90: ; 0x0202CD90 + push {r3, lr} + add r3, r1, #0x0 + mov r1, #0x1e + str r1, [sp, #0x0] + mov r1, #0x3 + mov r2, #0x11 + blx WM_MeasureChannel + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202CDA4 +FUN_0202CDA4: ; 0x0202CDA4 + push {r3, lr} + mov r0, #0x1 + bl FUN_0202C198 + ldr r0, _0202CDC8 ; =0x021C59D8 + ldr r1, [r0, #0x4] + mov r0, #0x4d + lsl r0, r0, #0x6 + ldrh r0, [r1, r0] + bl FUN_0202CDD0 + ldr r2, _0202CDC8 ; =0x021C59D8 + ldr r1, _0202CDCC ; =0x0000133C + ldr r3, [r2, #0x4] + strh r0, [r3, r1] + ldr r0, [r2, #0x4] + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_0202CDC8: .word 0x021C59D8 +_0202CDCC: .word 0x0000133C + + thumb_func_start FUN_0202CDD0 +FUN_0202CDD0: ; 0x0202CDD0 + push {r4-r7} + add r4, r0, #0x0 + mov r0, #0x0 + add r3, r0, #0x0 + add r2, r0, #0x0 + mov r1, #0x1 +_0202CDDC: + add r5, r1, #0x0 + lsl r5, r2 + tst r5, r4 + beq _0202CDF0 + add r0, r2, #0x1 + add r3, r3, #0x1 + lsl r0, r0, #0x10 + lsl r3, r3, #0x10 + asr r0, r0, #0x10 + lsr r3, r3, #0x10 +_0202CDF0: + add r2, r2, #0x1 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + cmp r2, #0x10 + blt _0202CDDC + cmp r3, #0x1 + bls _0202CE4E + ldr r5, _0202CE54 ; =0x021C59D8 + ldr r2, _0202CE58 ; =0x00001338 + ldr r0, [r5, #0x4] + ldr r1, _0202CE5C ; =0x00010DCD + ldr r6, [r0, r2] + add r7, r6, #0x0 + mul r7, r1 + ldr r1, _0202CE60 ; =0x00003039 + add r1, r7, r1 + str r1, [r0, r2] + ldr r0, [r5, #0x4] + mov r1, #0x1 + ldr r0, [r0, r2] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mul r0, r3 + lsl r0, r0, #0x8 + lsr r2, r0, #0x10 + mov r3, #0x0 +_0202CE24: + add r0, r4, #0x0 + tst r0, r1 + beq _0202CE3E + cmp r2, #0x0 + bne _0202CE38 + add r0, r3, #0x1 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + pop {r4-r7} + bx lr +_0202CE38: + sub r0, r2, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_0202CE3E: + lsl r0, r4, #0xf + lsr r4, r0, #0x10 + add r0, r3, #0x1 + lsl r0, r0, #0x10 + asr r3, r0, #0x10 + cmp r3, #0x10 + blt _0202CE24 + mov r0, #0x0 +_0202CE4E: + pop {r4-r7} + bx lr + nop +_0202CE54: .word 0x021C59D8 +_0202CE58: .word 0x00001338 +_0202CE5C: .word 0x00010DCD +_0202CE60: .word 0x00003039 + + thumb_func_start FUN_0202CE64 +FUN_0202CE64: ; 0x0202CE64 + push {r3-r5, lr} + lsl r1, r0, #0x1b + lsr r2, r1, #0x1b + beq _0202CE72 + mov r1, #0x20 + sub r1, r1, r2 + add r0, r0, r1 +_0202CE72: + ldr r2, _0202CEE4 ; =0x021C59D8 + ldr r1, _0202CEE8 ; =0x00001308 + str r0, [r2, #0x4] + mov r3, #0x0 + str r3, [r0, r1] + ldr r4, [r2, #0x4] + sub r0, r1, #0x4 + str r3, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x10 + str r3, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x24 + strh r3, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + mov r5, #0x1 + add r0, #0x26 + strh r5, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x28 + str r3, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x8 + str r3, [r4, r0] + ldr r0, [r2, #0x4] + mov r5, #0x8 + str r3, [r0, #0x0] + ldr r0, [r2, #0x4] + strh r3, [r0, #0x4] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x14 + str r3, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x2c + strb r5, [r4, r0] + add r0, r1, #0x0 + ldr r4, [r2, #0x4] + add r0, #0x2d + strb r3, [r4, r0] + ldr r0, [r2, #0x4] + add r1, #0x3a + strb r3, [r0, r1] + bl FUN_0202CF0C + cmp r0, #0x0 + bne _0202CEE0 + mov r0, #0x0 + pop {r3-r5, pc} +_0202CEE0: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0202CEE4: .word 0x021C59D8 +_0202CEE8: .word 0x00001308 + + thumb_func_start FUN_0202CEEC +FUN_0202CEEC: ; 0x0202CEEC + mov r0, #0x4e + lsl r0, r0, #0x6 + bx lr + .balign 4 + + thumb_func_start FUN_0202CEF4 +FUN_0202CEF4: ; 0x0202CEF4 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x8 + bne _0202CF08 + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x19 + bl FUN_0202C1AC +_0202CF08: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202CF0C +FUN_0202CF0C: ; 0x0202CF0C + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202CF38 ; =0x021C59D8 + ldr r1, _0202CF3C ; =FUN_0202CF40 + ldr r0, [r0, #0x4] + mov r2, #0x2 + add r0, #0x40 + blx WM_Initialize + cmp r0, #0x2 + beq _0202CF34 + bl FUN_0202C1AC + mov r0, #0xa + bl FUN_0202C198 + mov r0, #0x0 + pop {r3, pc} +_0202CF34: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202CF38: .word 0x021C59D8 +_0202CF3C: .word FUN_0202CF40 + + thumb_func_start FUN_0202CF40 +FUN_0202CF40: ; 0x0202CF40 + push {r3, lr} + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + beq _0202CF5A + bl FUN_0202C1AC + mov r0, #0xa + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_020336A0 + pop {r3, pc} +_0202CF5A: + ldr r0, _0202CF80 ; =FUN_0202CEF4 + blx WM_SetIndCallback + cmp r0, #0x0 + beq _0202CF76 + bl FUN_0202C1AC + mov r0, #0xa + bl FUN_0202C198 + mov r0, #0x1 + bl FUN_020336A0 + pop {r3, pc} +_0202CF76: + mov r0, #0x1 + bl FUN_0202C198 + pop {r3, pc} + nop +_0202CF80: .word FUN_0202CEF4 + + thumb_func_start FUN_0202CF84 +FUN_0202CF84: ; 0x0202CF84 + push {r3-r7, lr} + add r6, r1, #0x0 + ldr r1, _0202D02C ; =0x021C59D8 + add r5, r0, #0x0 + add r7, r2, #0x0 + mov r0, #0x7 + ldr r2, [r1, #0x4] + ldr r1, _0202D030 ; =0x00001308 + lsl r0, r0, #0x6 + str r0, [r2, r1] + ldr r0, _0202D02C ; =0x021C59D8 + add r4, r3, #0x0 + ldr r2, [r0, #0x4] + sub r0, r1, #0x4 + mov r3, #0xe0 + str r3, [r2, r0] + ldr r0, _0202D02C ; =0x021C59D8 + add r1, #0xc + ldr r0, [r0, #0x4] + str r5, [r0, r1] + mov r0, #0x3 + bl FUN_0202C198 + ldr r1, _0202D02C ; =0x021C59D8 + cmp r5, #0x0 + ldr r0, [r1, #0x4] + strh r6, [r0, #0xc] + ldr r0, [r1, #0x4] + strh r7, [r0, #0x32] + add r0, sp, #0x8 + ldrh r2, [r0, #0x10] + ldr r0, [r1, #0x4] + strh r2, [r0, #0x18] + beq _0202CFCE + cmp r5, #0x4 + beq _0202CFE8 + b _0202CFF4 +_0202CFCE: + ldr r0, [r1, #0x4] + mov r2, #0xc0 + strh r2, [r0, #0x34] + cmp r4, #0x5 + blo _0202CFE0 + ldr r0, [r1, #0x4] + mov r2, #0xc + strh r2, [r0, #0x36] + b _0202CFF4 +_0202CFE0: + ldr r0, [r1, #0x4] + mov r2, #0x26 + strh r2, [r0, #0x36] + b _0202CFF4 +_0202CFE8: + ldr r0, [r1, #0x4] + mov r2, #0x64 + strh r2, [r0, #0x34] + ldr r0, [r1, #0x4] + mov r2, #0xc + strh r2, [r0, #0x36] +_0202CFF4: + ldr r1, _0202D02C ; =0x021C59D8 + ldr r0, [r1, #0x4] + strh r4, [r0, #0x10] + ldr r2, [r1, #0x4] + mov r0, #0x0 + strh r0, [r2, #0x16] + ldr r2, [r1, #0x4] + cmp r5, #0x2 + strh r0, [r2, #0x12] + ldr r2, [sp, #0x1c] + ldr r1, [r1, #0x4] + strh r2, [r1, #0xe] + bne _0202D010 + mov r0, #0x1 +_0202D010: + ldr r1, _0202D02C ; =0x021C59D8 + cmp r5, #0x0 + ldr r1, [r1, #0x4] + strh r0, [r1, #0x14] + beq _0202D022 + cmp r5, #0x2 + beq _0202D022 + cmp r5, #0x4 + bne _0202D028 +_0202D022: + bl FUN_0202C1C8 + pop {r3-r7, pc} +_0202D028: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0202D02C: .word 0x021C59D8 +_0202D030: .word 0x00001308 + + thumb_func_start FUN_0202D034 +FUN_0202D034: ; 0x0202D034 + push {r4-r6, lr} + ldr r2, _0202D094 ; =0x021C59D8 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r3, #0x2 + ldr r0, [r2, #0x4] + ldr r1, _0202D098 ; =0x00001308 + lsl r3, r3, #0x8 + str r3, [r0, r1] + sub r0, r1, #0x4 + ldr r3, [r2, #0x4] + mov r6, #0x40 + str r6, [r3, r0] + ldr r0, [r2, #0x4] + add r1, #0xc + str r5, [r0, r1] + mov r0, #0x3 + bl FUN_0202C198 + cmp r5, #0x1 + beq _0202D066 + cmp r5, #0x3 + beq _0202D066 + cmp r5, #0x5 + bne _0202D08E +_0202D066: + ldr r1, _0202D094 ; =0x021C59D8 + add r0, r4, #0x0 + ldr r2, [r1, #0x4] + ldr r1, _0202D09C ; =0x00001220 + add r1, r2, r1 + mov r2, #0xc0 + blx MI_CpuCopy8 + ldr r0, _0202D094 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D09C ; =0x00001220 + add r0, r1, r0 + mov r1, #0xc0 + blx DC_FlushRange + blx DC_WaitWriteBufferEmpty + bl FUN_0202C7E8 + pop {r4-r6, pc} +_0202D08E: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0202D094: .word 0x021C59D8 +_0202D098: .word 0x00001308 +_0202D09C: .word 0x00001220 + + thumb_func_start FUN_0202D0A0 +FUN_0202D0A0: ; 0x0202D0A0 + push {r3, lr} + ldr r2, _0202D0C4 ; =0x021C59D8 + ldr r3, [r2, #0x4] + ldr r2, _0202D0C8 ; =0x00001318 + str r0, [r3, r2] + lsl r0, r1, #0x10 + ldr r1, _0202D0CC ; =FUN_0202CB08 + lsr r0, r0, #0x10 + mov r2, #0x0 + blx WM_SetPortCallback + cmp r0, #0x0 + beq _0202D0C2 + mov r0, #0x9 + bl FUN_0202C198 +_0202D0C0: + b _0202D0C0 +_0202D0C2: + pop {r3, pc} + .balign 4 +_0202D0C4: .word 0x021C59D8 +_0202D0C8: .word 0x00001318 +_0202D0CC: .word FUN_0202CB08 + + thumb_func_start FUN_0202D0D0 +FUN_0202D0D0: ; 0x0202D0D0 + push {r3, lr} + bl FUN_0202CA88 + pop {r3, pc} + + thumb_func_start FUN_0202D0D8 +FUN_0202D0D8: ; 0x0202D0D8 + push {r3, lr} + ldr r0, _0202D0F8 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D0FC ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x2 + bne _0202D0E8 +_0202D0E6: + b _0202D0E6 +_0202D0E8: + bl FUN_0202CA44 + cmp r0, #0x0 + bne _0202D0F6 + mov r0, #0xa + bl FUN_0202C198 +_0202D0F6: + pop {r3, pc} + .balign 4 +_0202D0F8: .word 0x021C59D8 +_0202D0FC: .word 0x00001310 + + thumb_func_start FUN_0202D100 +FUN_0202D100: ; 0x0202D100 + push {r3, lr} + ldr r0, _0202D16C ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D170 ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x1 + beq _0202D16A + cmp r0, #0x6 + beq _0202D126 + cmp r0, #0x5 + beq _0202D126 + cmp r0, #0x4 + beq _0202D126 + mov r0, #0x3 + bl FUN_0202C198 + bl FUN_0202D0D8 + pop {r3, pc} +_0202D126: + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202D16C ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D174 ; =0x00001314 + ldr r0, [r1, r0] + cmp r0, #0x5 + bhi _0202D16A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202D144: ; jump table (using 16-bit offset) + .short _0202D15E - _0202D144 - 2; case 0 + .short _0202D150 - _0202D144 - 2; case 1 + .short _0202D16A - _0202D144 - 2; case 2 + .short _0202D16A - _0202D144 - 2; case 3 + .short _0202D15E - _0202D144 - 2; case 4 + .short _0202D150 - _0202D144 - 2; case 5 +_0202D150: + bl FUN_0202C9BC + cmp r0, #0x0 + bne _0202D16A + bl FUN_0202D0D8 + pop {r3, pc} +_0202D15E: + bl FUN_0202C460 + cmp r0, #0x0 + bne _0202D16A + bl FUN_0202D0D8 +_0202D16A: + pop {r3, pc} + .balign 4 +_0202D16C: .word 0x021C59D8 +_0202D170: .word 0x00001310 +_0202D174: .word 0x00001314 + + thumb_func_start FUN_0202D178 +FUN_0202D178: ; 0x0202D178 + push {r3, lr} + mov r0, #0x3 + bl FUN_0202C198 + ldr r0, _0202D198 ; =FUN_0202CB50 + blx WM_End + cmp r0, #0x2 + beq _0202D194 + mov r0, #0x9 + bl FUN_0202C198 + mov r0, #0x0 + pop {r3, pc} +_0202D194: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202D198: .word FUN_0202CB50 + + thumb_func_start FUN_0202D19C +FUN_0202D19C: ; 0x0202D19C + ldr r0, _0202D1A8 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D1AC ; =0x0000132C + ldrh r0, [r1, r0] + bx lr + nop +_0202D1A8: .word 0x021C59D8 +_0202D1AC: .word 0x0000132C + + thumb_func_start FUN_0202D1B0 +FUN_0202D1B0: ; 0x0202D1B0 + ldr r1, _0202D1C0 ; =0x021C59D8 + ldr r2, [r1, #0x4] + cmp r2, #0x0 + beq _0202D1BC + ldr r1, _0202D1C4 ; =0x00001334 + strb r0, [r2, r1] +_0202D1BC: + bx lr + nop +_0202D1C0: .word 0x021C59D8 +_0202D1C4: .word 0x00001334 + + thumb_func_start FUN_0202D1C8 +FUN_0202D1C8: ; 0x0202D1C8 + ldr r0, _0202D1DC ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D1E0 ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x1 + bne _0202D1D8 + mov r0, #0x1 + bx lr +_0202D1D8: + mov r0, #0x0 + bx lr + .balign 4 +_0202D1DC: .word 0x021C59D8 +_0202D1E0: .word 0x00001310 + + thumb_func_start FUN_0202D1E4 +FUN_0202D1E4: ; 0x0202D1E4 + ldr r0, _0202D1F8 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D1FC ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x3 + bne _0202D1F4 + mov r0, #0x1 + bx lr +_0202D1F4: + mov r0, #0x0 + bx lr + .balign 4 +_0202D1F8: .word 0x021C59D8 +_0202D1FC: .word 0x00001310 + + thumb_func_start FUN_0202D200 +FUN_0202D200: ; 0x0202D200 + ldr r0, _0202D214 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D218 ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x9 + bne _0202D210 + mov r0, #0x1 + bx lr +_0202D210: + mov r0, #0x0 + bx lr + .balign 4 +_0202D214: .word 0x021C59D8 +_0202D218: .word 0x00001310 + + thumb_func_start FUN_0202D21C +FUN_0202D21C: ; 0x0202D21C + ldr r0, _0202D238 ; =0x021C59D8 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0202D234 + ldr r0, _0202D23C ; =0x00001310 + ldr r0, [r1, r0] + cmp r0, #0x2 + bne _0202D230 + mov r0, #0x1 + bx lr +_0202D230: + mov r0, #0x0 + bx lr +_0202D234: + mov r0, #0x0 + bx lr + .balign 4 +_0202D238: .word 0x021C59D8 +_0202D23C: .word 0x00001310 + + thumb_func_start FUN_0202D240 +FUN_0202D240: ; 0x0202D240 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r0, #0x0 + ldr r0, _0202D274 ; =0x021C59D8 + add r5, r1, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202D278 ; =0x00001310 + add r4, r2, #0x0 + ldr r0, [r1, r0] + cmp r0, #0x4 + bne _0202D26E + lsl r0, r3, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + lsl r2, r5, #0x10 + str r0, [sp, #0x4] + mov r0, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x10 + add r3, r4, #0x0 + blx WM_SetGameInfo +_0202D26E: + add sp, #0x8 + pop {r4-r6, pc} + nop +_0202D274: .word 0x021C59D8 +_0202D278: .word 0x00001310 + + thumb_func_start FUN_0202D27C +FUN_0202D27C: ; 0x0202D27C + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _0202D28C + ldr r0, _0202D290 ; =0x021C59D8 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _0202D294 ; =0x00001344 + strb r2, [r1, r0] +_0202D28C: + bx lr + nop +_0202D290: .word 0x021C59D8 +_0202D294: .word 0x00001344 + + thumb_func_start FUN_0202D298 +FUN_0202D298: ; 0x0202D298 + push {r4, lr} + ldr r2, _0202D2C4 ; =0x021C59D8 + add r1, r0, #0x0 + ldr r3, [r2, #0x4] + ldr r0, _0202D2C8 ; =0x00001344 + mov r4, #0x0 + strb r4, [r3, r0] + ldr r2, [r2, #0x4] + sub r0, #0x34 + ldr r0, [r2, r0] + cmp r0, #0x4 + bne _0202D2BE + ldr r0, _0202D2CC ; =FUN_0202D27C + blx WM_SetEntry + cmp r0, #0x2 + bne _0202D2BE + mov r0, #0x1 + pop {r4, pc} +_0202D2BE: + mov r0, #0x0 + pop {r4, pc} + nop +_0202D2C4: .word 0x021C59D8 +_0202D2C8: .word 0x00001344 +_0202D2CC: .word FUN_0202D27C + + thumb_func_start FUN_0202D2D0 +FUN_0202D2D0: ; 0x0202D2D0 + ldr r0, _0202D2EC ; =0x021C59D8 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0202D2E8 + ldr r0, _0202D2F0 ; =0x00001345 + ldrb r0, [r1, r0] + cmp r0, #0x6 + blo _0202D2E4 + mov r0, #0x1 + bx lr +_0202D2E4: + mov r0, #0x0 + bx lr +_0202D2E8: + mov r0, #0x0 + bx lr + .balign 4 +_0202D2EC: .word 0x021C59D8 +_0202D2F0: .word 0x00001345 + + thumb_func_start FUN_0202D2F4 +FUN_0202D2F4: ; 0x0202D2F4 + ldr r0, _0202D300 ; =0x021C59D8 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202D304 ; =0x00001345 + strb r2, [r1, r0] + bx lr + .balign 4 +_0202D300: .word 0x021C59D8 +_0202D304: .word 0x00001345 + + thumb_func_start FUN_0202D308 +FUN_0202D308: ; 0x0202D308 + ldr r1, _0202D314 ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202D318 ; =0x00001320 + str r0, [r2, r1] + bx lr + nop +_0202D314: .word 0x021C59D8 +_0202D318: .word 0x00001320 + + thumb_func_start FUN_0202D31C +FUN_0202D31C: ; 0x0202D31C + ldr r1, _0202D328 ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202D32C ; =0x00001324 + str r0, [r2, r1] + bx lr + nop +_0202D328: .word 0x021C59D8 +_0202D32C: .word 0x00001324 + + thumb_func_start FUN_0202D330 +FUN_0202D330: ; 0x0202D330 + ldr r1, _0202D33C ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202D340 ; =0x00001328 + str r0, [r2, r1] + bx lr + nop +_0202D33C: .word 0x021C59D8 +_0202D340: .word 0x00001328 + + thumb_func_start FUN_0202D344 +FUN_0202D344: ; 0x0202D344 + ldr r1, _0202D350 ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202D354 ; =0x00001342 + strb r0, [r2, r1] + bx lr + nop +_0202D350: .word 0x021C59D8 +_0202D354: .word 0x00001342 + + thumb_func_start FUN_0202D358 +FUN_0202D358: ; 0x0202D358 + ldr r0, _0202D364 ; =0x021C59D8 + ldr r1, [r0, #0x4] + ldr r0, _0202D368 ; =0x00001342 + ldrb r0, [r1, r0] + bx lr + nop +_0202D364: .word 0x021C59D8 +_0202D368: .word 0x00001342 + + thumb_func_start FUN_0202D36C +FUN_0202D36C: ; 0x0202D36C + ldr r1, _0202D378 ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202D37C ; =0x00001343 + strb r0, [r2, r1] + bx lr + nop +_0202D378: .word 0x021C59D8 +_0202D37C: .word 0x00001343 + + thumb_func_start FUN_0202D380 +FUN_0202D380: ; 0x0202D380 + ldr r1, _0202D38C ; =0x021C59D8 + ldr r2, [r1, #0x4] + ldr r1, _0202D390 ; =0x00001335 + strb r0, [r2, r1] + bx lr + nop +_0202D38C: .word 0x021C59D8 +_0202D390: .word 0x00001335 + + thumb_func_start FUN_0202D394 +FUN_0202D394: ; 0x0202D394 + str r1, [r0, #0x0] + strh r2, [r0, #0xa] + mov r1, #0x0 + strh r1, [r0, #0x4] + strh r1, [r0, #0x6] + strh r1, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_0202D3A4 +FUN_0202D3A4: ; 0x0202D3A4 + push {r3-r7, lr} + str r2, [sp, #0x0] + add r5, r0, #0x0 + add r7, r1, #0x0 + bl FUN_0202D498 + ldr r1, [sp, #0x0] + cmp r0, r1 + bgt _0202D3BC + bl FUN_02031454 + pop {r3-r7, pc} +_0202D3BC: + mov r0, #0x8 + ldrsh r4, [r5, r0] + ldrsh r1, [r5, r0] + ldr r0, [sp, #0x0] + mov r6, #0x0 + add r0, r1, r0 + cmp r4, r0 + bge _0202D3F2 +_0202D3CC: + cmp r7, #0x0 + bne _0202D3D4 + bl ErrorHandling +_0202D3D4: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202D4A8 + ldrb r2, [r7, r6] + ldr r1, [r5, #0x0] + add r4, r4, #0x1 + strb r2, [r1, r0] + mov r0, #0x8 + ldrsh r1, [r5, r0] + ldr r0, [sp, #0x0] + add r6, r6, #0x1 + add r0, r1, r0 + cmp r4, r0 + blt _0202D3CC +_0202D3F2: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202D4A8 + strh r0, [r5, #0x8] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202D400 +FUN_0202D400: ; 0x0202D400 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0202D42C + mov r1, #0x4 + add r4, r0, #0x0 + ldrsh r1, [r5, r1] + add r0, r5, #0x0 + add r1, r1, r4 + bl FUN_0202D4A8 + strh r0, [r5, #0x4] + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0202D41C +FUN_0202D41C: ; 0x0202D41C + push {r3, lr} + add r1, sp, #0x0 + mov r2, #0x1 + bl FUN_0202D400 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0202D42C +FUN_0202D42C: ; 0x0202D42C + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x4 + ldrsh r4, [r5, r0] + add r7, r2, #0x0 + str r1, [sp, #0x0] + add r0, r4, r7 + mov r6, #0x0 + cmp r4, r0 + bge _0202D472 +_0202D440: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202D4A8 + mov r1, #0x6 + ldrsh r1, [r5, r1] + cmp r1, r0 + bne _0202D454 + add r0, r6, #0x0 + pop {r3-r7, pc} +_0202D454: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202D4A8 + ldr r1, [r5, #0x0] + add r4, r4, #0x1 + ldrb r1, [r1, r0] + ldr r0, [sp, #0x0] + strb r1, [r0, r6] + mov r0, #0x4 + ldrsh r0, [r5, r0] + add r6, r6, #0x1 + add r0, r0, r7 + cmp r4, r0 + blt _0202D440 +_0202D472: + add r0, r6, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202D478 +FUN_0202D478: ; 0x0202D478 + mov r1, #0x4 + mov r3, #0x6 + ldrsh r1, [r0, r1] + ldrsh r2, [r0, r3] + cmp r1, r2 + ble _0202D490 + mov r2, #0xa + ldrsh r2, [r0, r2] + ldrsh r0, [r0, r3] + add r0, r2, r0 + sub r0, r0, r1 + bx lr +_0202D490: + ldrsh r0, [r0, r3] + sub r0, r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_0202D498 +FUN_0202D498: ; 0x0202D498 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0202D478 + mov r1, #0xa + ldrsh r1, [r4, r1] + sub r0, r1, r0 + pop {r4, pc} + + thumb_func_start FUN_0202D4A8 +FUN_0202D4A8: ; 0x0202D4A8 + push {r3, lr} + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0xa + ldrsh r1, [r2, r1] + blx _s32_div_f + add r0, r1, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202D4BC +FUN_0202D4BC: ; 0x0202D4BC + mov r1, #0x8 + ldrsh r1, [r0, r1] + strh r1, [r0, #0x6] + bx lr + + thumb_func_start FUN_0202D4C4 +FUN_0202D4C4: ; 0x0202D4C4 + ldr r3, [r0, #0x1c] + mov r2, #0x0 + ldr r1, [r0, #0x18] + cmp r3, #0x0 + ble _0202D4E0 +_0202D4CE: + ldrb r0, [r1, #0xe] + cmp r0, #0x0 + bne _0202D4D8 + add r0, r1, #0x0 + bx lr +_0202D4D8: + add r2, r2, #0x1 + add r1, #0x10 + cmp r2, r3 + blt _0202D4CE +_0202D4E0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0202D4E4 +FUN_0202D4E4: ; 0x0202D4E4 + ldr r3, [r0, #0x1c] + mov r2, #0x0 + ldr r1, [r0, #0x18] + cmp r3, #0x0 + ble _0202D500 +_0202D4EE: + ldrb r0, [r1, #0xe] + cmp r0, #0x0 + beq _0202D4F8 + mov r0, #0x0 + bx lr +_0202D4F8: + add r2, r2, #0x1 + add r1, #0x10 + cmp r2, r3 + blt _0202D4EE +_0202D500: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0202D504 +FUN_0202D504: ; 0x0202D504 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0202D522 + ldr r1, [r1, #0x8] + cmp r1, #0x0 + beq _0202D518 + str r1, [r0, #0x0] + mov r0, #0x0 + str r0, [r1, #0x4] + b _0202D51E +_0202D518: + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_0202D51E: + mov r0, #0x1 + bx lr +_0202D522: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0202D528 +FUN_0202D528: ; 0x0202D528 + ldr r2, [r0, #0x0] + strb r1, [r2, #0x0] + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + sub r1, r1, #0x1 + str r1, [r0, #0x4] + bne _0202D53E + mov r0, #0x1 + bx lr +_0202D53E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0202D544 +FUN_0202D544: ; 0x0202D544 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrb r0, [r5, #0xe] + add r4, r1, #0x0 + bl FUN_0202D9A0 + add r6, r0, #0x0 + ldr r0, _0202D5B8 ; =0x0000FFFF + cmp r6, r0 + ldr r0, [r4, #0x4] + bne _0202D56A + cmp r0, #0x3 + bge _0202D57A + ldrb r1, [r5, #0xf] + mov r0, #0x1 + bic r1, r0 + strb r1, [r5, #0xf] + mov r0, #0x1 + pop {r4-r6, pc} +_0202D56A: + cmp r0, #0x1 + bge _0202D57A + ldrb r1, [r5, #0xf] + mov r0, #0x1 + bic r1, r0 + strb r1, [r5, #0xf] + mov r0, #0x1 + pop {r4-r6, pc} +_0202D57A: + ldrb r1, [r5, #0xe] + add r0, r4, #0x0 + bl FUN_0202D528 + ldr r0, _0202D5B8 ; =0x0000FFFF + cmp r6, r0 + bne _0202D5A4 + ldrh r1, [r5, #0xc] + add r0, r4, #0x0 + asr r1, r1, #0x8 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0202D528 + ldrh r1, [r5, #0xc] + add r0, r4, #0x0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0202D528 + b _0202D5A6 +_0202D5A4: + strh r6, [r5, #0xc] +_0202D5A6: + ldrb r1, [r5, #0xf] + mov r0, #0x1 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strb r0, [r5, #0xf] + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0202D5B8: .word 0x0000FFFF + + thumb_func_start FUN_0202D5BC +FUN_0202D5BC: ; 0x0202D5BC + push {r3-r7, lr} + add r5, r0, #0x0 + ldrb r0, [r5, #0xe] + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0202D9A0 + ldr r1, _0202D680 ; =0x0000FFFF + cmp r0, r1 + bne _0202D5D6 + mov r2, #0x3 + b _0202D5D8 +_0202D5D6: + mov r2, #0x1 +_0202D5D8: + ldrh r0, [r5, #0xc] + ldr r1, [r4, #0x4] + add r0, r0, r2 + cmp r1, r0 + bge _0202D5EA + cmp r7, #0x0 + bne _0202D5EA + mov r0, #0x0 + pop {r3-r7, pc} +_0202D5EA: + ldrb r0, [r5, #0xf] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + cmp r0, #0x1 + beq _0202D604 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202D544 + cmp r0, #0x0 + beq _0202D604 + mov r0, #0x0 + pop {r3-r7, pc} +_0202D604: + ldrh r3, [r5, #0xc] + ldr r2, [r4, #0x4] + cmp r2, r3 + ldrb r0, [r5, #0xf] + bge _0202D64E + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _0202D61E + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_0202D400 + b _0202D634 +_0202D61E: + mov r3, #0x0 + cmp r2, #0x0 + ble _0202D634 +_0202D624: + ldr r0, [r5, #0x0] + ldrb r1, [r0, r3] + ldr r0, [r4, #0x0] + strb r1, [r0, r3] + ldr r0, [r4, #0x4] + add r3, r3, #0x1 + cmp r3, r0 + blt _0202D624 +_0202D634: + ldr r1, [r5, #0x0] + ldr r0, [r4, #0x4] + add r0, r1, r0 + str r0, [r5, #0x0] + ldrh r1, [r5, #0xc] + ldr r0, [r4, #0x4] + sub r0, r1, r0 + strh r0, [r5, #0xc] + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0x4] + mov r0, #0x1 + pop {r3-r7, pc} +_0202D64E: + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + beq _0202D660 + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + add r2, r3, #0x0 + bl FUN_0202D400 + b _0202D66A +_0202D660: + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x0] + add r2, r3, #0x0 + blx MI_CpuCopy8 +_0202D66A: + ldrh r0, [r5, #0xc] + ldr r1, [r4, #0x0] + add r0, r1, r0 + str r0, [r4, #0x0] + ldrh r0, [r5, #0xc] + ldr r1, [r4, #0x4] + sub r0, r1, r0 + str r0, [r4, #0x4] + mov r0, #0x1 + pop {r3-r7, pc} + nop +_0202D680: .word 0x0000FFFF + + thumb_func_start FUN_0202D684 +FUN_0202D684: ; 0x0202D684 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r7, r3, #0x0 + bl FUN_0202D4C4 + add r4, r0, #0x0 + bne _0202D69E + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0202D69E: + ldr r0, _0202D710 ; =0x0000FFFE + cmp r7, r0 + blt _0202D6A8 + bl ErrorHandling +_0202D6A8: + ldr r0, [sp, #0x0] + bl FUN_0202D9A0 + add r6, r0, #0x0 + ldr r0, _0202D714 ; =0x0000FFFF + cmp r6, r0 + bne _0202D6B8 + add r6, r7, #0x0 +_0202D6B8: + ldr r0, [sp, #0x24] + cmp r0, #0x0 + beq _0202D6EA + ldr r0, [r5, #0x14] + bl FUN_0202D498 + add r1, r6, #0x3 + cmp r1, r0 + blt _0202D6D0 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0202D6D0: + ldr r0, [r5, #0x14] + ldr r1, [sp, #0x4] + ldr r3, _0202D718 ; =0x00000109 + add r2, r6, #0x0 + bl FUN_0202D3A4 + ldr r0, [r5, #0x14] + bl FUN_0202D4BC + ldrb r1, [r4, #0xf] + mov r0, #0x2 + orr r0, r1 + strb r0, [r4, #0xf] +_0202D6EA: + ldr r0, [sp, #0x0] + strh r6, [r4, #0xc] + strb r0, [r4, #0xe] + ldr r0, [sp, #0x4] + str r0, [r4, #0x0] + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _0202D700 + str r4, [r5, #0x4] + str r4, [r5, #0x0] + b _0202D708 +_0202D700: + str r4, [r0, #0x8] + ldr r0, [r5, #0x4] + str r0, [r4, #0x4] + str r4, [r5, #0x4] +_0202D708: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0202D710: .word 0x0000FFFE +_0202D714: .word 0x0000FFFF +_0202D718: .word 0x00000109 + + thumb_func_start FUN_0202D71C +FUN_0202D71C: ; 0x0202D71C + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _0202D726 + add r0, r1, #0x0 + bx lr +_0202D726: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0202D730 + add r0, r1, #0x0 + bx lr +_0202D730: + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _0202D738 + mov r0, #0x0 +_0202D738: + bx lr + .balign 4 + + thumb_func_start FUN_0202D73C +FUN_0202D73C: ; 0x0202D73C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _0202D74C + mov r0, #0x0 + str r0, [r4, #0x10] + pop {r4, pc} +_0202D74C: + bl FUN_0202D504 + cmp r0, #0x0 + bne _0202D75C + add r4, #0x8 + add r0, r4, #0x0 + bl FUN_0202D504 +_0202D75C: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202D760 +FUN_0202D760: ; 0x0202D760 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x4] + mov r7, #0x1 + str r2, [sp, #0x0] + cmp r0, #0x0 + ble _0202D7B6 +_0202D770: + add r0, r5, #0x0 + bl FUN_0202D71C + add r6, r0, #0x0 + beq _0202D7B6 + add r0, r5, #0x0 + bl FUN_0202D73C + ldr r2, [r5, #0x14] + add r0, r6, #0x0 + add r1, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0202D5BC + cmp r0, #0x0 + bne _0202D794 + str r6, [r5, #0x10] + b _0202D7B6 +_0202D794: + mov r0, #0x0 + ldr r1, [r4, #0x4] + mvn r0, r0 + cmp r1, r0 + bne _0202D7A4 + str r6, [r5, #0x10] + mov r0, #0x0 + pop {r3-r7, pc} +_0202D7A4: + add r0, r6, #0x0 + mov r1, #0x0 + mov r2, #0x10 + blx MI_CpuFill8 + ldr r0, [r4, #0x4] + ldr r7, [sp, #0x0] + cmp r0, #0x0 + bgt _0202D770 +_0202D7B6: + ldr r0, [r4, #0x4] + mov r2, #0x0 + cmp r0, #0x0 + ble _0202D7D2 + mov r1, #0xee +_0202D7C0: + ldr r0, [r4, #0x0] + add r2, r2, #0x1 + strb r1, [r0, #0x0] + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [r4, #0x4] + cmp r2, r0 + blt _0202D7C0 +_0202D7D2: + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202D7D8 +FUN_0202D7D8: ; 0x0202D7D8 + push {r3-r7, lr} + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r1, #0x0 + mov r2, #0x20 + add r5, r0, #0x0 + blx MI_CpuFill8 + lsl r7, r4, #0x4 + mov r0, #0xf + add r1, r7, #0x0 + bl FUN_02016998 + mov r1, #0x0 + add r2, r7, #0x0 + str r0, [r5, #0x18] + blx MI_CpuFill8 + str r4, [r5, #0x1c] + str r6, [r5, #0x14] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0202D804 +FUN_0202D804: ; 0x0202D804 + push {r4, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x1c] + ldr r0, [r4, #0x18] + mov r1, #0x0 + lsl r2, r2, #0x4 + blx MI_CpuFill8 + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x4] + str r0, [r4, #0x8] + str r0, [r4, #0xc] + str r0, [r4, #0x10] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202D824 +FUN_0202D824: ; 0x0202D824 + ldr r3, _0202D82C ; =FUN_02016A18 + ldr r0, [r0, #0x18] + bx r3 + nop +_0202D82C: .word FUN_02016A18 + + thumb_func_start FUN_0202D830 +FUN_0202D830: ; 0x0202D830 + push {r3-r4} + ldr r4, [r0, #0x1c] + mov r2, #0x0 + ldr r3, [r0, #0x18] + cmp r4, #0x0 + ble _0202D850 +_0202D83C: + ldrb r0, [r3, #0xe] + cmp r0, r1 + bne _0202D848 + mov r0, #0x1 + pop {r3-r4} + bx lr +_0202D848: + add r2, r2, #0x1 + add r3, #0x10 + cmp r2, r4 + blt _0202D83C +_0202D850: + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0202D858 +FUN_0202D858: ; 0x0202D858 + push {r3-r4, lr} + sub sp, #0x1c + ldr r3, _0202D880 ; =0x020EEB04 + add r4, r0, #0x0 + add r2, sp, #0x0 + mov r1, #0x1a +_0202D864: + ldrb r0, [r3, #0x0] + add r3, r3, #0x1 + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0202D864 + cmp r4, #0x1a + blo _0202D878 + bl ErrorHandling +_0202D878: + add r0, sp, #0x0 + ldrb r0, [r0, r4] + add sp, #0x1c + pop {r3-r4, pc} + .balign 4 +_0202D880: .word 0x020EEB04 + + thumb_func_start FUN_0202D884 +FUN_0202D884: ; 0x0202D884 + push {r3-r4, lr} + sub sp, #0x1c + ldr r3, _0202D8AC ; =0x020EEB1E + add r4, r0, #0x0 + add r2, sp, #0x0 + mov r1, #0x1a +_0202D890: + ldrb r0, [r3, #0x0] + add r3, r3, #0x1 + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0202D890 + cmp r4, #0x1a + blo _0202D8A4 + bl ErrorHandling +_0202D8A4: + add r0, sp, #0x0 + ldrb r0, [r0, r4] + add sp, #0x1c + pop {r3-r4, pc} + .balign 4 +_0202D8AC: .word 0x020EEB1E + + thumb_func_start FUN_0202D8B0 +FUN_0202D8B0: ; 0x0202D8B0 + cmp r0, #0xd + bgt _0202D8C4 + cmp r0, #0x7 + blt _0202D8CC + beq _0202D8C8 + cmp r0, #0x9 + beq _0202D8C8 + cmp r0, #0xd + beq _0202D8C8 + b _0202D8CC +_0202D8C4: + cmp r0, #0x12 + bne _0202D8CC +_0202D8C8: + mov r0, #0x1 + bx lr +_0202D8CC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0202D8D0 +FUN_0202D8D0: ; 0x0202D8D0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _0202D914 ; =0x021C59E0 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + add r6, r2, #0x0 + cmp r0, #0x0 + bne _0202D8EC + mov r0, #0xf + mov r1, #0x18 + bl FUN_02016998 + ldr r1, _0202D914 ; =0x021C59E0 + str r0, [r1, #0x0] +_0202D8EC: + ldr r0, _0202D914 ; =0x021C59E0 + mov r3, #0x0 + ldr r1, [r0, #0x0] + add r2, r3, #0x0 + str r5, [r1, #0x0] + ldr r1, [r0, #0x0] + str r4, [r1, #0x4] + ldr r1, [r0, #0x0] + str r6, [r1, #0x8] +_0202D8FE: + ldr r1, [r0, #0x0] + add r1, r1, r3 + add r3, r3, #0x1 + strb r2, [r1, #0xc] + cmp r3, #0x8 + blt _0202D8FE + ldr r0, _0202D914 ; =0x021C59E0 + ldr r0, [r0, #0x0] + strb r2, [r0, #0x14] + pop {r4-r6, pc} + nop +_0202D914: .word 0x021C59E0 + + thumb_func_start FUN_0202D918 +FUN_0202D918: ; 0x0202D918 + push {r3, lr} + ldr r0, _0202D930 ; =0x021C59E0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202D92C + bl FUN_02016A18 + ldr r0, _0202D930 ; =0x021C59E0 + mov r1, #0x0 + str r1, [r0, #0x0] +_0202D92C: + pop {r3, pc} + nop +_0202D930: .word 0x021C59E0 + + thumb_func_start FUN_0202D934 +FUN_0202D934: ; 0x0202D934 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r4, #0x16 + bge _0202D94C + mov r0, #0xc + mul r1, r0 + ldr r0, _0202D998 ; =0x020EEB38 + ldr r4, [r0, r1] + b _0202D974 +_0202D94C: + ldr r0, _0202D99C ; =0x021C59E0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0202D958 + bl ErrorHandling +_0202D958: + ldr r0, _0202D99C ; =0x021C59E0 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x4] + add r0, #0x16 + cmp r4, r0 + ble _0202D96A + bl FUN_02031454 + pop {r3-r7, pc} +_0202D96A: + ldr r1, [r1, #0x0] + sub r4, #0x16 + mov r0, #0xc + mul r0, r4 + ldr r4, [r1, r0] +_0202D974: + cmp r4, #0x0 + beq _0202D996 + ldr r0, _0202D99C ; =0x021C59E0 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + beq _0202D98C + ldr r3, [r3, #0x8] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + blx r4 + pop {r3-r7, pc} +_0202D98C: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + mov r3, #0x0 + blx r4 +_0202D996: + pop {r3-r7, pc} + .balign 4 +_0202D998: .word 0x020EEB38 +_0202D99C: .word 0x021C59E0 + + thumb_func_start FUN_0202D9A0 +FUN_0202D9A0: ; 0x0202D9A0 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 + cmp r5, #0x16 + bge _0202D9B6 + mov r0, #0xc + add r1, r5, #0x0 + mul r1, r0 + ldr r0, _0202D9FC ; =0x020EEB3C + ldr r0, [r0, r1] + b _0202D9EE +_0202D9B6: + ldr r0, _0202DA00 ; =0x021C59E0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0202D9C2 + bl ErrorHandling +_0202D9C2: + ldr r0, _0202DA00 ; =0x021C59E0 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _0202D9D2 + bl FUN_02031454 + mov r0, #0x0 + pop {r3-r5, pc} +_0202D9D2: + ldr r0, [r1, #0x4] + add r0, #0x16 + cmp r5, r0 + ble _0202D9E2 + bl FUN_02031454 + mov r0, #0x0 + pop {r3-r5, pc} +_0202D9E2: + ldr r1, [r1, #0x0] + sub r5, #0x16 + mov r0, #0xc + mul r0, r5 + add r0, r1, r0 + ldr r0, [r0, #0x4] +_0202D9EE: + cmp r0, #0x0 + beq _0202D9F6 + blx r0 + add r4, r0, #0x0 +_0202D9F6: + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_0202D9FC: .word 0x020EEB3C +_0202DA00: .word 0x021C59E0 + + thumb_func_start FUN_0202DA04 +FUN_0202DA04: ; 0x0202DA04 + cmp r0, #0x16 + bge _0202DA1C + mov r1, #0xc + mul r1, r0 + ldr r0, _0202DA38 ; =0x020EEB40 + ldr r0, [r0, r1] + cmp r0, #0x0 + beq _0202DA18 + mov r0, #0x1 + bx lr +_0202DA18: + mov r0, #0x0 + bx lr +_0202DA1C: + ldr r1, _0202DA3C ; =0x021C59E0 + sub r0, #0x16 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x0] + mov r1, #0xc + mul r1, r0 + add r0, r2, r1 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0202DA34 + mov r0, #0x1 + bx lr +_0202DA34: + mov r0, #0x0 + bx lr + .balign 4 +_0202DA38: .word 0x020EEB40 +_0202DA3C: .word 0x021C59E0 + + thumb_func_start FUN_0202DA40 +FUN_0202DA40: ; 0x0202DA40 + push {r3-r5, lr} + add r3, r0, #0x0 + cmp r3, #0x16 + bge _0202DA58 + mov r4, #0xc + mul r4, r3 + ldr r3, _0202DA70 ; =0x020EEB40 + add r0, r1, #0x0 + ldr r3, [r3, r4] + mov r1, #0x0 + blx r3 + pop {r3-r5, pc} +_0202DA58: + ldr r0, _0202DA74 ; =0x021C59E0 + sub r3, #0x16 + ldr r4, [r0, #0x0] + add r0, r1, #0x0 + ldr r1, [r4, #0x8] + ldr r5, [r4, #0x0] + mov r4, #0xc + mul r4, r3 + add r3, r5, r4 + ldr r3, [r3, #0x8] + blx r3 + pop {r3-r5, pc} + .balign 4 +_0202DA70: .word 0x020EEB40 +_0202DA74: .word 0x021C59E0 + + thumb_func_start FUN_0202DA78 +FUN_0202DA78: ; 0x0202DA78 + ldr r0, _0202DA7C ; =0x0000FFFF + bx lr + .balign 4 +_0202DA7C: .word 0x0000FFFF + + thumb_func_start FUN_0202DA80 +FUN_0202DA80: ; 0x0202DA80 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0202DA84 +FUN_0202DA84: ; 0x0202DA84 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0202DA88 +FUN_0202DA88: ; 0x0202DA88 + mov r0, #0x2 + bx lr + + thumb_func_start FUN_0202DA8C +FUN_0202DA8C: ; 0x0202DA8C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _0202DACA + ldr r4, _0202DACC ; =0x021C59E0 + mov r1, #0x1 + ldr r0, [r4, #0x0] + add r0, r0, r5 + strb r1, [r0, #0xc] + mov r5, #0x0 +_0202DAA4: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202DABA + ldr r0, [r4, #0x0] + add r0, r0, r5 + ldrb r0, [r0, #0xc] + cmp r0, #0x0 + beq _0202DACA +_0202DABA: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0202DAA4 + mov r1, #0x0 + mov r0, #0xe + add r2, r1, #0x0 + bl FUN_02030BC4 +_0202DACA: + pop {r3-r5, pc} + .balign 4 +_0202DACC: .word 0x021C59E0 + + thumb_func_start FUN_0202DAD0 +FUN_0202DAD0: ; 0x0202DAD0 + ldr r0, _0202DAF0 ; =0x021C59E0 + mov r3, #0x0 + ldr r1, [r0, #0x0] + str r3, [r1, #0x0] + ldr r1, [r0, #0x0] + str r3, [r1, #0x4] + ldr r1, [r0, #0x0] + str r3, [r1, #0x8] + ldr r0, [r0, #0x0] + mov r1, #0x1 + strb r1, [r0, #0x14] + ldr r3, _0202DAF4 ; =FUN_020311D0 + mov r0, #0xf + add r1, r2, #0x0 + bx r3 + nop +_0202DAF0: .word 0x021C59E0 +_0202DAF4: .word FUN_020311D0 + + thumb_func_start FUN_0202DAF8 +FUN_0202DAF8: ; 0x0202DAF8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _0202DB0E + ldr r0, _0202DB10 ; =0x021C59E0 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, r4 + strb r1, [r0, #0xc] +_0202DB0E: + pop {r4, pc} + .balign 4 +_0202DB10: .word 0x021C59E0 + + thumb_func_start FUN_0202DB14 +FUN_0202DB14: ; 0x0202DB14 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + str r1, [sp, #0x4] + bl FUN_020238F4 + str r0, [sp, #0x8] + ldr r0, _0202DBA0 ; =0x021C59E4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0202DB9A + mov r1, #0xe9 + mov r0, #0xf + lsl r1, r1, #0x2 + bl FUN_02016998 + ldr r1, _0202DBA0 ; =0x021C59E4 + mov r2, #0xe9 + str r0, [r1, #0x0] + mov r1, #0x0 + lsl r2, r2, #0x2 + blx MI_CpuFill8 + mov r6, #0x0 + ldr r7, _0202DBA0 ; =0x021C59E4 + add r4, r6, #0x0 + add r5, r6, #0x0 +_0202DB4A: + ldr r1, [r7, #0x0] + add r0, r1, #0x0 + add r0, #0x28 + add r2, r0, r4 + mov r0, #0xd2 + add r1, r1, r5 + lsl r0, r0, #0x2 + str r2, [r1, r0] + add r0, r6, #0x0 + bl FUN_0202DE78 + add r6, r6, #0x1 + add r4, #0x68 + add r5, r5, #0x4 + cmp r6, #0x8 + blt _0202DB4A + ldr r2, _0202DBA0 ; =0x021C59E4 + mov r1, #0x3a + ldr r3, [r2, #0x0] + mov r0, #0x0 + lsl r1, r1, #0x4 + strb r0, [r3, r1] + ldr r4, [r2, #0x0] + add r3, r1, #0x1 + strb r0, [r4, r3] + add r3, r1, #0x2 + ldr r4, [r2, #0x0] + sub r1, #0x58 + strb r0, [r4, r3] + ldr r3, [r2, #0x0] + ldr r0, [sp, #0x0] + str r0, [r3, #0x4] + ldr r3, [r2, #0x0] + ldr r0, [sp, #0x4] + str r0, [r3, #0x0] + ldr r2, [r2, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [r2, r1] + bl FUN_0202393C +_0202DB9A: + add sp, #0xc + pop {r4-r7, pc} + nop +_0202DBA0: .word 0x021C59E4 + + thumb_func_start FUN_0202DBA4 +FUN_0202DBA4: ; 0x0202DBA4 + push {r3-r5, lr} + ldr r1, _0202DBDC ; =0x021C59E4 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _0202DBD8 + mov r4, #0x0 + mov r0, #0xd2 + add r5, r4, #0x0 + add r3, r4, #0x0 + lsl r0, r0, #0x2 +_0202DBB8: + ldr r2, [r1, #0x0] + add r4, r4, #0x1 + add r2, r2, r5 + add r5, r5, #0x4 + str r3, [r2, r0] + cmp r4, #0x8 + blt _0202DBB8 + ldr r0, _0202DBDC ; =0x021C59E4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202DBD2 + bl FUN_02016A18 +_0202DBD2: + ldr r0, _0202DBDC ; =0x021C59E4 + mov r1, #0x0 + str r1, [r0, #0x0] +_0202DBD8: + pop {r3-r5, pc} + nop +_0202DBDC: .word 0x021C59E4 + + thumb_func_start FUN_0202DBE0 +FUN_0202DBE0: ; 0x0202DBE0 + push {r3-r7, lr} + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0202DCD8 ; =0x021C59E4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_0202881C + add r7, r0, #0x0 + ldr r0, _0202DCD8 ; =0x021C59E4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_020286EC + str r0, [sp, #0x0] + ldr r0, _0202DCD8 ; =0x021C59E4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_02029AFC + add r6, r0, #0x0 + ldr r0, _0202DCD8 ; =0x021C59E4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_020238F4 + ldr r1, _0202DCD8 ; =0x021C59E4 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x2 + add r2, r2, r1 + mov r1, #0xd2 + lsl r1, r1, #0x2 + ldr r1, [r2, r1] + bl FUN_0202393C + mov r0, #0x68 + add r5, r4, #0x0 + mul r5, r0 + ldr r0, _0202DCD8 ; =0x021C59E4 + ldr r0, [r0, #0x0] + add r0, #0x64 + add r0, r0, r5 + blx OS_GetMacAddress + add r0, r7, #0x0 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_020287A8 + ldr r1, _0202DCD8 ; =0x021C59E4 + mov r2, #0x10 + ldr r1, [r1, #0x0] + add r1, #0x54 + add r1, r1, r5 + blx MI_CpuCopy8 + add r0, r6, #0x0 + bl FUN_02029B38 + ldr r1, _0202DCD8 ; =0x021C59E4 + ldr r1, [r1, #0x0] + add r1, r1, r5 + add r1, #0x6b + strb r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_02029B3C + ldr r2, _0202DCD8 ; =0x021C59E4 + ldr r1, [r2, #0x0] + add r1, r1, r5 + add r1, #0x6c + strb r0, [r1, #0x0] + ldr r0, [r2, #0x0] + ldr r0, [r0, #0x4] + bl FUN_02025C18 + ldr r2, _0202DCD8 ; =0x021C59E4 + ldr r1, [r2, #0x0] + add r1, r1, r5 + add r1, #0x6d + strb r0, [r1, #0x0] + ldr r2, [r2, #0x0] + mov r0, #0x1 + add r2, #0x6d + ldrb r1, [r2, r5] + sub r0, r0, r1 + strb r0, [r2, r5] + ldr r0, [sp, #0x0] + bl FUN_02028228 + ldr r1, _0202DCD8 ; =0x021C59E4 + ldr r1, [r1, #0x0] + add r1, #0x48 + add r1, r1, r5 + blx FUN_02096CCC + ldr r0, _0202DCD8 ; =0x021C59E4 + mov r1, #0x0 + ldr r0, [r0, #0x0] + mov r2, #0x20 + add r0, #0x8 + add r0, r0, r5 + blx MI_CpuFill8 + ldr r0, _0202DCD8 ; =0x021C59E4 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _0202DCC4 + add r1, #0x8 + add r1, r1, r5 + bl FUN_02023ACC +_0202DCC4: + ldr r1, _0202DCD8 ; =0x021C59E4 + mov r0, #0x3 + ldr r1, [r1, #0x0] + mov r2, #0x68 + add r1, #0x8 + add r1, r1, r5 + bl FUN_02030ADC + pop {r3-r7, pc} + nop +_0202DCD8: .word 0x021C59E4 + + thumb_func_start FUN_0202DCDC +FUN_0202DCDC: ; 0x0202DCDC + mov r0, #0x68 + bx lr + + thumb_func_start FUN_0202DCE0 +FUN_0202DCE0: ; 0x0202DCE0 + ldr r0, _0202DCF4 ; =0x021C59E4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0202DCF0 + mov r0, #0x3a + mov r1, #0x1 + lsl r0, r0, #0x4 + strb r1, [r2, r0] +_0202DCF0: + bx lr + nop +_0202DCF4: .word 0x021C59E4 + + thumb_func_start FUN_0202DCF8 +FUN_0202DCF8: ; 0x0202DCF8 + ldr r0, _0202DD04 ; =0x021C59E4 + ldr r1, [r0, #0x0] + mov r0, #0x3a + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_0202DD04: .word 0x021C59E4 + + thumb_func_start FUN_0202DD08 +FUN_0202DD08: ; 0x0202DD08 + push {r3-r5, lr} + ldr r1, _0202DD78 ; =0x021C59E4 + add r4, r2, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _0202DD74 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202DD74 + ldr r1, _0202DD78 ; =0x021C59E4 + mov r2, #0x68 + ldr r5, [r1, #0x0] + add r1, r4, #0x0 + add r1, #0x62 + ldrb r1, [r1, #0x0] + add r5, #0x8 + add r0, r4, #0x0 + add r3, r1, #0x0 + mul r3, r2 + add r1, r5, r3 + blx MI_CpuCopy8 + add r4, #0x62 + ldr r2, _0202DD78 ; =0x021C59E4 + ldrb r3, [r4, #0x0] + ldr r0, [r2, #0x0] + ldr r1, _0202DD7C ; =0x000003A2 + strb r3, [r0, r1] + add r0, r1, #0x0 + ldr r3, [r2, #0x0] + sub r0, #0xa + add r4, r3, r0 + ldrb r3, [r3, r1] + ldrb r0, [r4, r3] + cmp r0, #0x2 + bhs _0202DD74 + mov r0, #0x1 + strb r0, [r4, r3] + ldr r0, [r2, #0x0] + ldrb r4, [r0, r1] + bl FUN_02031190 + cmp r4, r0 + bne _0202DD74 + ldr r0, _0202DD78 ; =0x021C59E4 + mov r2, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0xe6 + lsl r0, r0, #0x2 + strb r2, [r1, r0] +_0202DD74: + pop {r3-r5, pc} + nop +_0202DD78: .word 0x021C59E4 +_0202DD7C: .word 0x000003A2 + + thumb_func_start FUN_0202DD80 +FUN_0202DD80: ; 0x0202DD80 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0202DDE0 ; =0x021C59E4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0202DDDC + mov r3, #0x68 + add r4, r5, #0x0 + add r0, r2, #0x0 + mul r4, r3 + add r1, #0x8 + add r1, r1, r4 + add r2, r3, #0x0 + blx MI_CpuCopy8 + ldr r0, _0202DDE0 ; =0x021C59E4 + add r1, r5, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x64 + add r0, r0, r4 + bl FUN_0202EFAC + ldr r0, _0202DDE0 ; =0x021C59E4 + mov r2, #0x1 + ldr r0, [r0, #0x0] + add r1, r0, r5 + mov r0, #0xe6 + lsl r0, r0, #0x2 + strb r2, [r1, r0] + bl FUN_02031190 + cmp r5, r0 + bne _0202DDD2 + ldr r0, _0202DDE0 ; =0x021C59E4 + mov r2, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r5 + mov r0, #0xe6 + lsl r0, r0, #0x2 + strb r2, [r1, r0] + pop {r3-r5, pc} +_0202DDD2: + ldr r0, _0202DDE0 ; =0x021C59E4 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0202DDE4 ; =0x000003A1 + strb r2, [r1, r0] +_0202DDDC: + pop {r3-r5, pc} + nop +_0202DDE0: .word 0x021C59E4 +_0202DDE4: .word 0x000003A1 + + thumb_func_start FUN_0202DDE8 +FUN_0202DDE8: ; 0x0202DDE8 + push {r3-r7, lr} + ldr r0, _0202DE70 ; =0x021C59E4 + ldr r1, [r0, #0x0] + ldr r0, _0202DE74 ; =0x000003A1 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0202DDFA + mov r0, #0x0 + pop {r3-r7, pc} +_0202DDFA: + mov r0, #0x5 + bl FUN_02031354 + cmp r0, #0x0 + bne _0202DE6C + mov r4, #0x0 + add r5, r4, #0x0 + add r7, r4, #0x0 +_0202DE0A: + ldr r0, _0202DE70 ; =0x021C59E4 + ldr r2, [r0, #0x0] + mov r0, #0xe6 + add r1, r2, r4 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202DE4A + add r0, r2, r5 + add r0, #0x6a + strb r4, [r0, #0x0] + ldr r0, _0202DE70 ; =0x021C59E4 + ldr r6, [r0, #0x0] + bl FUN_02023924 + add r2, r0, #0x0 + mov r0, #0xd2 + add r1, r6, r7 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + add r6, #0x28 + add r1, r6, r5 + blx MI_CpuCopy8 + ldr r1, _0202DE70 ; =0x021C59E4 + mov r0, #0x4 + ldr r1, [r1, #0x0] + mov r2, #0x68 + add r1, #0x8 + add r1, r1, r5 + bl FUN_02031000 +_0202DE4A: + add r4, r4, #0x1 + add r5, #0x68 + add r7, r7, #0x4 + cmp r4, #0x8 + blt _0202DE0A + mov r1, #0x0 + mov r0, #0x5 + add r2, r1, #0x0 + bl FUN_02031000 + ldr r0, _0202DE70 ; =0x021C59E4 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0202DE74 ; =0x000003A1 + strb r2, [r1, r0] + mov r0, #0x1 + pop {r3-r7, pc} +_0202DE6C: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0202DE70: .word 0x021C59E4 +_0202DE74: .word 0x000003A1 + + thumb_func_start FUN_0202DE78 +FUN_0202DE78: ; 0x0202DE78 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0202DEA0 ; =0x021C59E4 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x2 + add r1, r1, r0 + mov r0, #0xd2 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_02023948 + ldr r0, _0202DEA0 ; =0x021C59E4 + mov r2, #0x0 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0xe6 + lsl r0, r0, #0x2 + strb r2, [r1, r0] + pop {r4, pc} + nop +_0202DEA0: .word 0x021C59E4 + + thumb_func_start FUN_0202DEA4 +FUN_0202DEA4: ; 0x0202DEA4 + ldr r1, _0202DEBC ; =0x021C59E4 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _0202DEB8 + mov r0, #0x1 + bx lr +_0202DEB8: + mov r0, #0x0 + bx lr + .balign 4 +_0202DEBC: .word 0x021C59E4 + + thumb_func_start FUN_0202DEC0 +FUN_0202DEC0: ; 0x0202DEC0 + ldr r1, _0202DEDC ; =0x021C59E4 + mov r2, #0x1 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0x2 + beq _0202DED8 + cmp r0, #0x1 + beq _0202DED8 + mov r2, #0x0 +_0202DED8: + add r0, r2, #0x0 + bx lr + .balign 4 +_0202DEDC: .word 0x021C59E4 + + thumb_func_start FUN_0202DEE0 +FUN_0202DEE0: ; 0x0202DEE0 + ldr r1, _0202DEF0 ; =0x021C59E4 + mov r2, #0x2 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #0x2 + strb r2, [r1, r0] + bx lr + .balign 4 +_0202DEF0: .word 0x021C59E4 + + thumb_func_start FUN_0202DEF4 +FUN_0202DEF4: ; 0x0202DEF4 + ldr r1, _0202DF04 ; =0x021C59E4 + mov r2, #0x3 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0xe6 + lsl r0, r0, #0x2 + strb r2, [r1, r0] + bx lr + .balign 4 +_0202DF04: .word 0x021C59E4 + + thumb_func_start FUN_0202DF08 +FUN_0202DF08: ; 0x0202DF08 + ldr r1, _0202DF24 ; =0x021C59E4 + mov r0, #0x0 + ldr r3, [r1, #0x0] + mov r1, #0xe6 + lsl r1, r1, #0x2 +_0202DF12: + ldrb r2, [r3, r1] + cmp r2, #0x1 + beq _0202DF22 + add r0, r0, #0x1 + add r3, r3, #0x1 + cmp r0, #0x8 + blt _0202DF12 + mov r0, #0xff +_0202DF22: + bx lr + .balign 4 +_0202DF24: .word 0x021C59E4 + + thumb_func_start FUN_0202DF28 +FUN_0202DF28: ; 0x0202DF28 + push {r3-r4} + ldr r1, _0202DF50 ; =0x021C59E4 + mov r0, #0x0 + ldr r4, [r1, #0x0] + mov r1, #0xe6 + add r3, r0, #0x0 + lsl r1, r1, #0x2 +_0202DF36: + ldrb r2, [r4, r1] + cmp r2, #0x2 + beq _0202DF40 + cmp r2, #0x3 + bne _0202DF42 +_0202DF40: + add r0, r0, #0x1 +_0202DF42: + add r3, r3, #0x1 + add r4, r4, #0x1 + cmp r3, #0x8 + blt _0202DF36 + pop {r3-r4} + bx lr + nop +_0202DF50: .word 0x021C59E4 + + thumb_func_start FUN_0202DF54 +FUN_0202DF54: ; 0x0202DF54 + push {r4-r6, lr} + ldr r0, _0202DFA0 ; =0x021C59E4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202DF9C + bl FUN_02030F20 + cmp r0, #0x0 + beq _0202DF9C + mov r6, #0xe6 + ldr r4, _0202DFA0 ; =0x021C59E4 + mov r5, #0x0 + lsl r6, r6, #0x2 +_0202DF6E: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0202DF96 + cmp r5, #0x0 + bne _0202DF86 + bl FUN_02031280 + cmp r0, #0x0 + bne _0202DF96 +_0202DF86: + ldr r0, [r4, #0x0] + add r0, r0, r5 + ldrb r0, [r0, r6] + cmp r0, #0x0 + beq _0202DF96 + add r0, r5, #0x0 + bl FUN_0202DE78 +_0202DF96: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0202DF6E +_0202DF9C: + pop {r4-r6, pc} + nop +_0202DFA0: .word 0x021C59E4 + + thumb_func_start FUN_0202DFA4 +FUN_0202DFA4: ; 0x0202DFA4 + ldr r1, _0202DFD4 ; =0x021C59E4 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bne _0202DFB0 + mov r0, #0x0 + bx lr +_0202DFB0: + mov r1, #0xe6 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x1 + beq _0202DFC4 + cmp r1, #0x2 + beq _0202DFC4 + cmp r1, #0x3 + bne _0202DFD0 +_0202DFC4: + lsl r0, r0, #0x2 + add r1, r3, r0 + mov r0, #0xd2 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bx lr +_0202DFD0: + mov r0, #0x0 + bx lr + .balign 4 +_0202DFD4: .word 0x021C59E4 + + thumb_func_start FUN_0202DFD8 +FUN_0202DFD8: ; 0x0202DFD8 + ldr r1, _0202DFF8 ; =0x021C59E4 + ldr r3, [r1, #0x0] + mov r1, #0xe6 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202DFF2 + mov r1, #0x68 + add r3, #0x48 + mul r1, r0 + add r0, r3, r1 + bx lr +_0202DFF2: + mov r0, #0x0 + bx lr + nop +_0202DFF8: .word 0x021C59E4 + + thumb_func_start FUN_0202DFFC +FUN_0202DFFC: ; 0x0202DFFC + ldr r1, _0202E01C ; =0x021C59E4 + ldr r3, [r1, #0x0] + mov r1, #0xe6 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202E016 + mov r1, #0x68 + add r3, #0x54 + mul r1, r0 + add r0, r3, r1 + bx lr +_0202E016: + mov r0, #0x0 + bx lr + nop +_0202E01C: .word 0x021C59E4 + + thumb_func_start FUN_0202E020 +FUN_0202E020: ; 0x0202E020 + ldr r1, _0202E040 ; =0x021C59E4 + ldr r3, [r1, #0x0] + mov r1, #0xe6 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202E03C + mov r1, #0x68 + mul r1, r0 + add r0, r3, r1 + add r0, #0x6b + ldrb r0, [r0, #0x0] + bx lr +_0202E03C: + mov r0, #0x0 + bx lr + .balign 4 +_0202E040: .word 0x021C59E4 + + thumb_func_start FUN_0202E044 +FUN_0202E044: ; 0x0202E044 + ldr r1, _0202E064 ; =0x021C59E4 + ldr r3, [r1, #0x0] + mov r1, #0xe6 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202E060 + mov r1, #0x68 + mul r1, r0 + add r0, r3, r1 + add r0, #0x6c + ldrb r0, [r0, #0x0] + bx lr +_0202E060: + mov r0, #0x0 + bx lr + .balign 4 +_0202E064: .word 0x021C59E4 + + thumb_func_start FUN_0202E068 +FUN_0202E068: ; 0x0202E068 + ldr r1, _0202E088 ; =0x021C59E4 + ldr r3, [r1, #0x0] + mov r1, #0xe6 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202E084 + mov r1, #0x68 + mul r1, r0 + add r0, r3, r1 + add r0, #0x6d + ldrb r0, [r0, #0x0] + bx lr +_0202E084: + mov r0, #0x0 + bx lr + .balign 4 +_0202E088: .word 0x021C59E4 + + thumb_func_start FUN_0202E08C +FUN_0202E08C: ; 0x0202E08C + push {r4-r6, lr} + mov r4, #0x0 + add r5, r4, #0x0 + add r6, r4, #0x0 +_0202E094: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202E0E8 + ldr r0, _0202E0F4 ; =0x021C59E4 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0xe6 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202E0E8 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202E0E8 + ldr r0, _0202E0F4 ; =0x021C59E4 + ldr r1, _0202E0F8 ; =0x00000399 + ldr r0, [r0, #0x0] + add r2, r0, r4 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202E0E8 + add r1, r6, #0x0 + add r2, r0, r5 +_0202E0D0: + add r3, r2, #0x0 + add r3, #0x70 + ldrb r0, [r2, #0x8] + ldrb r3, [r3, #0x0] + cmp r0, r3 + beq _0202E0E0 + mov r0, #0x0 + pop {r4-r6, pc} +_0202E0E0: + add r1, r1, #0x1 + add r2, r2, #0x1 + cmp r1, #0x20 + blt _0202E0D0 +_0202E0E8: + add r4, r4, #0x1 + add r5, #0x68 + cmp r4, #0x7 + blt _0202E094 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_0202E0F4: .word 0x021C59E4 +_0202E0F8: .word 0x00000399 + + thumb_func_start FUN_0202E0FC +FUN_0202E0FC: ; 0x0202E0FC + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _0202E1B4 ; =0x021C59E4 + add r6, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202E1B0 + cmp r7, #0x2 + beq _0202E11C + bl FUN_02031190 + bl FUN_020313CC + mov r1, #0x1 + and r0, r1 + str r0, [sp, #0x0] +_0202E11C: + mov r4, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _0202E1B0 + add r5, r4, #0x0 +_0202E128: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202E1A4 + ldr r0, _0202E1B4 ; =0x021C59E4 + mov r1, #0xe6 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x2 + add r2, r0, r4 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0202E1A4 + cmp r7, #0x0 + bne _0202E16E + add r0, r4, #0x0 + bl FUN_020313CC + mov r1, #0x1 + and r1, r0 + ldr r0, [sp, #0x0] + cmp r0, r1 + beq _0202E1A4 + ldr r0, _0202E1B4 ; =0x021C59E4 + mov r1, #0xda + ldr r0, [r0, #0x0] + lsl r1, r1, #0x2 + add r0, r0, r5 + ldrh r1, [r0, r1] + add r2, r1, r6 + mov r1, #0xda + lsl r1, r1, #0x2 + strh r2, [r0, r1] + b _0202E1A4 +_0202E16E: + cmp r7, #0x1 + bne _0202E194 + add r0, r4, #0x0 + bl FUN_020313CC + mov r1, #0x1 + and r1, r0 + ldr r0, [sp, #0x0] + cmp r0, r1 + beq _0202E1A4 + ldr r0, _0202E1B4 ; =0x021C59E4 + ldr r1, _0202E1B8 ; =0x0000036A + ldr r0, [r0, #0x0] + add r0, r0, r5 + ldrh r1, [r0, r1] + add r2, r1, r6 + ldr r1, _0202E1B8 ; =0x0000036A + strh r2, [r0, r1] + b _0202E1A4 +_0202E194: + mov r1, #0xdb + add r0, r0, r5 + lsl r1, r1, #0x2 + ldrh r1, [r0, r1] + add r2, r1, r6 + mov r1, #0xdb + lsl r1, r1, #0x2 + strh r2, [r0, r1] +_0202E1A4: + add r5, r5, #0x6 + add r4, r4, #0x1 + bl FUN_02030F20 + cmp r4, r0 + blt _0202E128 +_0202E1B0: + pop {r3-r7, pc} + nop +_0202E1B4: .word 0x021C59E4 +_0202E1B8: .word 0x0000036A + + thumb_func_start FUN_0202E1BC +FUN_0202E1BC: ; 0x0202E1BC + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + bl FUN_020286EC + str r0, [sp, #0x4] + mov r4, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _0202E224 + add r5, r4, #0x0 +_0202E1D4: + add r0, r4, #0x0 + bl FUN_0202DFD8 + add r1, r0, #0x0 + beq _0202E218 + add r0, r7, #0x0 + add r2, sp, #0x8 + bl FUN_02033874 + cmp r0, #0x0 + beq _0202E1EE + cmp r0, #0x1 + bne _0202E218 +_0202E1EE: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bge _0202E1F8 + bl ErrorHandling +_0202E1F8: + ldr r0, _0202E254 ; =0x021C59E4 + mov r2, #0xda + ldr r0, [r0, #0x0] + ldr r3, _0202E258 ; =0x0000036A + add r6, r0, r5 + mov r0, #0xdb + lsl r0, r0, #0x2 + ldrh r0, [r6, r0] + lsl r2, r2, #0x2 + str r0, [sp, #0x0] + ldrh r2, [r6, r2] + ldrh r3, [r6, r3] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x8] + bl FUN_02028608 +_0202E218: + add r5, r5, #0x6 + add r4, r4, #0x1 + bl FUN_02030F20 + cmp r4, r0 + blt _0202E1D4 +_0202E224: + mov r3, #0xda + mov r2, #0x0 + lsl r3, r3, #0x2 + ldr r6, _0202E254 ; =0x021C59E4 + add r1, r2, #0x0 + add r0, r2, #0x0 + add r4, r3, #0x2 + add r5, r3, #0x4 +_0202E234: + ldr r7, [r6, #0x0] + add r2, r2, #0x1 + add r7, r7, r1 + strh r0, [r7, r3] + ldr r7, [r6, #0x0] + add r7, r7, r1 + strh r0, [r7, r4] + ldr r7, [r6, #0x0] + add r7, r7, r1 + add r1, r1, #0x6 + strh r0, [r7, r5] + cmp r2, #0x8 + blt _0202E234 + add sp, #0xc + pop {r4-r7, pc} + nop +_0202E254: .word 0x021C59E4 +_0202E258: .word 0x0000036A + + thumb_func_start FUN_0202E25C +FUN_0202E25C: ; 0x0202E25C + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x1 + bne _0202E26E + mov r0, #0x0 + mov r1, #0x1 + bl FUN_0202E0FC + b _0202E27E +_0202E26E: + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0202E27E + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0202E0FC +_0202E27E: + add r0, r4, #0x0 + bl FUN_0202E1BC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202E288 +FUN_0202E288: ; 0x0202E288 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x2 + bl FUN_0202E0FC + add r0, r4, #0x0 + bl FUN_0202E1BC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0202E29C +FUN_0202E29C: ; 0x0202E29C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0202E334 ; =0x021C59E8 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _0202E332 + mov r1, #0xdb + mov r0, #0xf + lsl r1, r1, #0x4 + bl FUN_02016998 + ldr r1, _0202E334 ; =0x021C59E8 + mov r2, #0xdb + str r0, [r1, #0x8] + mov r1, #0x0 + lsl r2, r2, #0x4 + blx MI_CpuFill8 + bl FUN_0202CEEC + add r1, r0, #0x0 + mov r0, #0xf + bl FUN_02016998 + ldr r1, _0202E334 ; =0x021C59E8 + ldr r2, [r1, #0x8] + ldr r1, _0202E338 ; =0x00000CA4 + str r0, [r2, r1] + bl FUN_0202CEEC + add r2, r0, #0x0 + ldr r0, _0202E334 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E338 ; =0x00000CA4 + ldr r0, [r1, r0] + mov r1, #0x0 + blx MI_CpuFill8 + bl FUN_02023AC4 + add r1, r0, #0x0 + mov r0, #0xf + bl FUN_02016998 + ldr r1, _0202E334 ; =0x021C59E8 + ldr r2, [r1, #0x8] + ldr r1, _0202E33C ; =0x00000CBC + str r0, [r2, r1] + bl FUN_02023AC4 + add r2, r0, #0x0 + ldr r0, _0202E334 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E33C ; =0x00000CBC + ldr r0, [r1, r0] + mov r1, #0x0 + blx MI_CpuFill8 + ldr r2, _0202E334 ; =0x021C59E8 + mov r1, #0x33 + ldr r3, _0202E340 ; =0x00000333 + ldr r0, [r2, #0x8] + lsl r1, r1, #0x6 + str r3, [r0, r1] + add r0, r1, #0x0 + ldr r3, [r2, #0x8] + sub r0, #0x8 + str r4, [r3, r0] + ldr r0, [r2, #0x8] + sub r1, #0x18 + add r0, r0, r1 + bl FUN_02013724 + bl FUN_0202E500 +_0202E332: + pop {r4, pc} + .balign 4 +_0202E334: .word 0x021C59E8 +_0202E338: .word 0x00000CA4 +_0202E33C: .word 0x00000CBC +_0202E340: .word 0x00000333 + + thumb_func_start FUN_0202E344 +FUN_0202E344: ; 0x0202E344 + ldr r0, _0202E354 ; =0x021C59E8 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0202E350 + mov r0, #0x1 + bx lr +_0202E350: + mov r0, #0x0 + bx lr + .balign 4 +_0202E354: .word 0x021C59E8 + + thumb_func_start FUN_0202E358 +FUN_0202E358: ; 0x0202E358 + push {r4-r5} + mov r5, #0x0 + cmp r2, #0x0 + ble _0202E378 +_0202E360: + ldrb r4, [r0, #0x0] + ldrb r3, [r1, #0x0] + cmp r4, r3 + beq _0202E36E + mov r0, #0x0 + pop {r4-r5} + bx lr +_0202E36E: + add r5, r5, #0x1 + add r0, r0, #0x1 + add r1, r1, #0x1 + cmp r5, r2 + blt _0202E360 +_0202E378: + mov r0, #0x1 + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_0202E380 +FUN_0202E380: ; 0x0202E380 + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02033534 + add r5, r0, #0x0 + bl FUN_0203354C + add r4, r7, #0x0 + add r6, r0, #0x0 + add r4, #0x50 + cmp r5, #0xe + beq _0202E3C2 + ldrb r0, [r4, #0x4] + bl FUN_0202D8B0 + cmp r0, #0x0 + beq _0202E3AC + add r0, r5, #0x0 + bl FUN_0202D8B0 + cmp r0, #0x0 + bne _0202E3C2 +_0202E3AC: + add r0, r4, #0x0 + add r0, #0x54 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202E3BC + ldrb r0, [r4, #0x4] + cmp r0, #0xa + beq _0202E460 +_0202E3BC: + ldrb r0, [r4, #0x4] + cmp r0, r5 + bne _0202E460 +_0202E3C2: + cmp r5, #0xe + beq _0202E3CC + ldrb r0, [r4, #0x5] + cmp r0, r6 + bne _0202E460 +_0202E3CC: + mov r6, #0x0 + add r4, r6, #0x0 + add r5, r6, #0x0 +_0202E3D2: + ldr r0, _0202E464 ; =0x021C59E8 + ldr r1, _0202E468 ; =0x00000C84 + ldr r0, [r0, #0x8] + add r2, r0, r4 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202E412 + add r0, #0x58 + add r0, r0, r5 + add r1, r7, #0x4 + mov r2, #0x6 + bl FUN_0202E358 + cmp r0, #0x0 + beq _0202E412 + ldr r2, _0202E464 ; =0x021C59E8 + lsl r1, r6, #0x1 + ldr r3, [r2, #0x8] + mov r0, #0x96 + add r3, r3, r1 + ldr r1, _0202E468 ; =0x00000C84 + strh r0, [r3, r1] + ldr r3, [r2, #0x8] + mov r2, #0xc0 + add r1, r6, #0x0 + add r3, #0x54 + mul r1, r2 + add r0, r7, #0x0 + add r1, r3, r1 + blx MI_CpuCopy8 + pop {r3-r7, pc} +_0202E412: + add r6, r6, #0x1 + add r4, r4, #0x2 + add r5, #0xc0 + cmp r6, #0x10 + blt _0202E3D2 + ldr r0, _0202E464 ; =0x021C59E8 + ldr r2, _0202E468 ; =0x00000C84 + ldr r0, [r0, #0x8] + mov r1, #0x0 + add r4, r0, #0x0 +_0202E426: + ldrh r3, [r4, r2] + cmp r3, #0x0 + beq _0202E434 + add r1, r1, #0x1 + add r4, r4, #0x2 + cmp r1, #0x10 + blt _0202E426 +_0202E434: + cmp r1, #0x10 + bge _0202E460 + lsl r2, r1, #0x1 + add r2, r0, r2 + ldr r0, _0202E468 ; =0x00000C84 + mov r3, #0x96 + strh r3, [r2, r0] + ldr r2, _0202E464 ; =0x021C59E8 + add r3, r1, #0x0 + ldr r4, [r2, #0x8] + mov r2, #0xc0 + add r4, #0x54 + mul r3, r2 + add r0, r7, #0x0 + add r1, r4, r3 + blx MI_CpuCopy8 + ldr r0, _0202E464 ; =0x021C59E8 + mov r2, #0x1 + ldr r1, [r0, #0x8] + ldr r0, _0202E46C ; =0x00000CB4 + strb r2, [r1, r0] +_0202E460: + pop {r3-r7, pc} + nop +_0202E464: .word 0x021C59E8 +_0202E468: .word 0x00000C84 +_0202E46C: .word 0x00000CB4 + + thumb_func_start FUN_0202E470 +FUN_0202E470: ; 0x0202E470 + push {r3, lr} + cmp r1, #0x0 + beq _0202E47A + blx OS_Terminate +_0202E47A: + ldr r0, _0202E484 ; =0x021C59E8 + mov r1, #0x2 + str r1, [r0, #0x4] + pop {r3, pc} + nop +_0202E484: .word 0x021C59E8 + + thumb_func_start FUN_0202E488 +FUN_0202E488: ; 0x0202E488 + ldr r0, _0202E494 ; =0x021C59E8 + mov r1, #0x0 + str r1, [r0, #0x4] + ldr r3, _0202E498 ; =FUN_02016454 + mov r0, #0x4 + bx r3 + .balign 4 +_0202E494: .word 0x021C59E8 +_0202E498: .word FUN_02016454 + + thumb_func_start FUN_0202E49C +FUN_0202E49C: ; 0x0202E49C + push {r3, lr} + mov r0, #0x4 + bl FUN_02016444 + ldr r0, _0202E4C0 ; =0x021C59E8 + mov r1, #0x1 + str r1, [r0, #0x4] + ldr r1, _0202E4C4 ; =FUN_0202E470 + mov r0, #0x8 + mov r2, #0x0 + blx FUN_02090DB8 + cmp r0, #0x1 + beq _0202E4BC + blx OS_Terminate +_0202E4BC: + pop {r3, pc} + nop +_0202E4C0: .word 0x021C59E8 +_0202E4C4: .word FUN_0202E470 + + thumb_func_start FUN_0202E4C8 +FUN_0202E4C8: ; 0x0202E4C8 + ldr r0, _0202E4D8 ; =0x021C59E8 + ldr r0, [r0, #0x4] + cmp r0, #0x2 + bne _0202E4D4 + mov r0, #0x1 + bx lr +_0202E4D4: + mov r0, #0x0 + bx lr + .balign 4 +_0202E4D8: .word 0x021C59E8 + + thumb_func_start FUN_0202E4DC +FUN_0202E4DC: ; 0x0202E4DC + ldr r0, _0202E4EC ; =0x021C59E8 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0202E4E8 + mov r0, #0x1 + bx lr +_0202E4E8: + mov r0, #0x0 + bx lr + .balign 4 +_0202E4EC: .word 0x021C59E8 + + thumb_func_start FUN_0202E4F0 +FUN_0202E4F0: ; 0x0202E4F0 + ldr r3, _0202E4F8 ; =FUN_02090CC8 + ldr r0, _0202E4FC ; =FUN_0202E488 + mov r1, #0x0 + bx r3 + .balign 4 +_0202E4F8: .word FUN_02090CC8 +_0202E4FC: .word FUN_0202E488 + + thumb_func_start FUN_0202E500 +FUN_0202E500: ; 0x0202E500 + push {r3, lr} + ldr r1, _0202E534 ; =0x021C59E8 + mov r0, #0xcb + ldr r2, [r1, #0x8] + mov r3, #0x0 + lsl r0, r0, #0x4 + str r3, [r2, r0] + ldr r1, [r1, #0x8] + sub r0, #0xc + ldr r2, [r1, r0] + mov r0, #0x1f + add r1, r2, #0x0 + and r1, r0 + mov r0, #0x20 + sub r0, r0, r1 + add r0, r2, r0 + bl FUN_0202CE64 + ldr r0, _0202E534 ; =0x021C59E8 + ldr r1, [r0, #0x8] + mov r0, #0x33 + lsl r0, r0, #0x6 + ldr r0, [r1, r0] + bl FUN_0202CB70 + pop {r3, pc} + .balign 4 +_0202E534: .word 0x021C59E8 + + thumb_func_start FUN_0202E538 +FUN_0202E538: ; 0x0202E538 + push {r3-r5, lr} + mov r4, #0x0 + ldr r2, _0202E564 ; =0x021C59E8 + ldr r0, _0202E568 ; =0x00000C84 + add r5, r4, #0x0 + add r1, r4, #0x0 +_0202E544: + ldr r3, [r2, #0x8] + add r4, r4, #0x1 + add r3, r3, r5 + add r5, r5, #0x2 + strh r1, [r3, r0] + cmp r4, #0x10 + blt _0202E544 + ldr r0, _0202E564 ; =0x021C59E8 + mov r2, #0x3 + ldr r0, [r0, #0x8] + lsl r2, r2, #0xa + add r0, #0x54 + blx MI_CpuFill8 + pop {r3-r5, pc} + nop +_0202E564: .word 0x021C59E8 +_0202E568: .word 0x00000C84 + + thumb_func_start FUN_0202E56C +FUN_0202E56C: ; 0x0202E56C + push {r3-r4} + ldr r1, _0202E58C ; =0x021C59E8 + lsl r0, r0, #0x18 + ldr r2, [r1, #0x8] + ldr r4, _0202E590 ; =0x00000DAD + lsr r0, r0, #0x18 + ldrb r1, [r2, r4] + mov r3, #0x8 + lsl r0, r0, #0x1f + bic r1, r3 + lsr r0, r0, #0x1c + orr r0, r1 + strb r0, [r2, r4] + pop {r3-r4} + bx lr + nop +_0202E58C: .word 0x021C59E8 +_0202E590: .word 0x00000DAD + + thumb_func_start FUN_0202E594 +FUN_0202E594: ; 0x0202E594 + push {r4-r5} + ldr r1, _0202E5F0 ; =0x021C59E8 + ldr r0, _0202E5F4 ; =0x00000CB4 + ldr r3, [r1, #0x8] + mov r2, #0x0 + strb r2, [r3, r0] + add r3, r0, #0x0 + ldr r5, [r1, #0x8] + add r3, #0xf9 + ldrb r4, [r5, r3] + mov r3, #0x1 + bic r4, r3 + add r3, r0, #0x0 + add r3, #0xf9 + strb r4, [r5, r3] + add r3, r0, #0x0 + ldr r5, [r1, #0x8] + add r3, #0xf9 + ldrb r4, [r5, r3] + mov r3, #0x4 + bic r4, r3 + add r3, r0, #0x0 + add r3, #0xf9 + strb r4, [r5, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x8] + add r3, #0xf6 + strb r2, [r4, r3] + add r3, r0, #0x0 + ldr r5, [r1, #0x8] + add r3, #0xf9 + ldrb r4, [r5, r3] + mov r3, #0x10 + bic r4, r3 + add r3, r0, #0x0 + add r3, #0xf9 + strb r4, [r5, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x8] + add r3, #0xf8 + strb r2, [r4, r3] + ldr r1, [r1, #0x8] + add r0, #0xf7 + strb r2, [r1, r0] + pop {r4-r5} + bx lr + .balign 4 +_0202E5F0: .word 0x021C59E8 +_0202E5F4: .word 0x00000CB4 + + thumb_func_start FUN_0202E5F8 +FUN_0202E5F8: ; 0x0202E5F8 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0202E594 + add r0, r5, #0x0 + bl FUN_0202E56C + bl FUN_0202D2F4 + ldr r0, _0202E65C ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E660 ; =0x00000DAB + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0202E62A + ldr r0, _0202E664 ; =FUN_020303BC + mov r1, #0xe + bl FUN_0202D0A0 + ldr r0, _0202E65C ; =0x021C59E8 + mov r2, #0x1 + ldr r1, [r0, #0x8] + ldr r0, _0202E660 ; =0x00000DAB + strb r2, [r1, r0] +_0202E62A: + ldr r0, _0202E65C ; =0x021C59E8 + ldr r3, _0202E668 ; =0x00000DAD + ldr r1, [r0, #0x8] + mov r2, #0x20 + ldrb r0, [r1, r3] + bic r0, r2 + lsl r2, r4, #0x18 + lsr r2, r2, #0x18 + lsl r2, r2, #0x1f + lsr r2, r2, #0x1a + orr r0, r2 + strb r0, [r1, r3] + bl FUN_0202CBD4 + cmp r0, #0x1 + bne _0202E656 + bl FUN_0202CBFC + cmp r0, #0x0 + beq _0202E656 + mov r0, #0x1 + pop {r3-r5, pc} +_0202E656: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0202E65C: .word 0x021C59E8 +_0202E660: .word 0x00000DAB +_0202E664: .word FUN_020303BC +_0202E668: .word 0x00000DAD + + thumb_func_start FUN_0202E66C +FUN_0202E66C: ; 0x0202E66C + push {r4, lr} + sub sp, #0x8 + add r4, r1, #0x0 + bl FUN_0202E594 + cmp r4, #0x0 + beq _0202E67E + bl FUN_0202E538 +_0202E67E: + ldr r0, _0202E6DC ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E6E0 ; =0x00000DAB + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0202E69C + ldr r0, _0202E6E4 ; =FUN_02030238 + mov r1, #0xe + bl FUN_0202D0A0 + ldr r0, _0202E6DC ; =0x021C59E8 + mov r2, #0x1 + ldr r1, [r0, #0x8] + ldr r0, _0202E6E0 ; =0x00000DAB + strb r2, [r1, r0] +_0202E69C: + bl FUN_0202CBD4 + cmp r0, #0x1 + bne _0202E6D4 + ldr r2, _0202E6E8 ; =0x020EEC40 + add r0, sp, #0x0 + ldrb r3, [r2, #0x0] + add r1, sp, #0x0 + strb r3, [r0, #0x0] + ldrb r3, [r2, #0x1] + strb r3, [r0, #0x1] + ldrb r3, [r2, #0x2] + strb r3, [r0, #0x2] + ldrb r3, [r2, #0x3] + strb r3, [r0, #0x3] + ldrb r3, [r2, #0x4] + ldrb r2, [r2, #0x5] + strb r3, [r0, #0x4] + strb r2, [r0, #0x5] + ldr r0, _0202E6EC ; =FUN_0202E380 + mov r2, #0x0 + bl FUN_0202C570 + cmp r0, #0x0 + beq _0202E6D4 + add sp, #0x8 + mov r0, #0x1 + pop {r4, pc} +_0202E6D4: + mov r0, #0x0 + add sp, #0x8 + pop {r4, pc} + nop +_0202E6DC: .word 0x021C59E8 +_0202E6E0: .word 0x00000DAB +_0202E6E4: .word FUN_02030238 +_0202E6E8: .word 0x020EEC40 +_0202E6EC: .word FUN_0202E380 + + thumb_func_start FUN_0202E6F0 +FUN_0202E6F0: ; 0x0202E6F0 + push {r3, lr} + ldr r0, _0202E77C ; =0x021C59E8 + ldr r1, [r0, #0x8] + cmp r1, #0x0 + bne _0202E6FE + mov r0, #0x1 + pop {r3, pc} +_0202E6FE: + ldr r0, _0202E780 ; =0x00000DAC + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202E710 + cmp r0, #0x1 + beq _0202E740 + cmp r0, #0x2 + beq _0202E758 + b _0202E776 +_0202E710: + bl FUN_0202D21C + cmp r0, #0x0 + beq _0202E728 + bl FUN_0202C770 + ldr r0, _0202E77C ; =0x021C59E8 + mov r2, #0x1 + ldr r1, [r0, #0x8] + ldr r0, _0202E780 ; =0x00000DAC + strb r2, [r1, r0] + b _0202E776 +_0202E728: + bl FUN_0202D1E4 + cmp r0, #0x0 + bne _0202E776 + bl FUN_0202D100 + ldr r0, _0202E77C ; =0x021C59E8 + mov r2, #0x2 + ldr r1, [r0, #0x8] + ldr r0, _0202E780 ; =0x00000DAC + strb r2, [r1, r0] + b _0202E776 +_0202E740: + bl FUN_0202D1E4 + cmp r0, #0x0 + bne _0202E776 + bl FUN_0202D100 + ldr r0, _0202E77C ; =0x021C59E8 + mov r2, #0x2 + ldr r1, [r0, #0x8] + ldr r0, _0202E780 ; =0x00000DAC + strb r2, [r1, r0] + b _0202E776 +_0202E758: + bl FUN_0202D1C8 + cmp r0, #0x0 + beq _0202E764 + mov r0, #0x1 + pop {r3, pc} +_0202E764: + bl FUN_0202D200 + cmp r0, #0x0 + beq _0202E776 + ldr r0, _0202E77C ; =0x021C59E8 + mov r2, #0x1 + ldr r1, [r0, #0x8] + ldr r0, _0202E780 ; =0x00000DAC + strb r2, [r1, r0] +_0202E776: + mov r0, #0x0 + pop {r3, pc} + nop +_0202E77C: .word 0x021C59E8 +_0202E780: .word 0x00000DAC + + thumb_func_start FUN_0202E784 +FUN_0202E784: ; 0x0202E784 + push {r3, lr} + ldr r0, _0202E7A8 ; =0x021C59E8 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + beq _0202E7A2 + ldr r0, _0202E7AC ; =0x00000DAA + ldrb r1, [r2, r0] + cmp r1, #0x0 + bne _0202E7A2 + mov r1, #0x1 + strb r1, [r2, r0] + bl FUN_0202D100 + mov r0, #0x1 + pop {r3, pc} +_0202E7A2: + mov r0, #0x0 + pop {r3, pc} + nop +_0202E7A8: .word 0x021C59E8 +_0202E7AC: .word 0x00000DAA + + thumb_func_start FUN_0202E7B0 +FUN_0202E7B0: ; 0x0202E7B0 + push {r3, lr} + ldr r1, _0202E7D0 ; =0x021C59E8 + ldr r2, [r1, #0x8] + cmp r2, #0x0 + beq _0202E7CE + cmp r0, #0x0 + ldr r0, _0202E7D4 ; =0x00000DAA + beq _0202E7C6 + mov r1, #0x2 + strb r1, [r2, r0] + pop {r3, pc} +_0202E7C6: + mov r1, #0x0 + strb r1, [r2, r0] + bl FUN_0202E500 +_0202E7CE: + pop {r3, pc} + .balign 4 +_0202E7D0: .word 0x021C59E8 +_0202E7D4: .word 0x00000DAA + + thumb_func_start FUN_0202E7D8 +FUN_0202E7D8: ; 0x0202E7D8 + push {r3, lr} + ldr r0, _0202E804 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E808 ; =0x00000CBC + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r0, _0202E804 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E80C ; =0x00000CA4 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r0, _0202E804 ; =0x021C59E8 + ldr r0, [r0, #0x8] + bl FUN_02016A18 + ldr r0, _0202E804 ; =0x021C59E8 + mov r1, #0x0 + str r1, [r0, #0x8] + pop {r3, pc} + nop +_0202E804: .word 0x021C59E8 +_0202E808: .word 0x00000CBC +_0202E80C: .word 0x00000CA4 + + thumb_func_start FUN_0202E810 +FUN_0202E810: ; 0x0202E810 + push {r4, lr} + bl FUN_02030F40 + cmp r0, #0x0 + bne _0202E81E + mov r0, #0x0 + pop {r4, pc} +_0202E81E: + ldr r1, _0202E83C ; =0x021C59E8 + mov r0, #0x0 + ldr r4, [r1, #0x8] + ldr r1, _0202E840 ; =0x00000C84 + add r3, r0, #0x0 +_0202E828: + ldrh r2, [r4, r1] + cmp r2, #0x0 + beq _0202E830 + add r0, r0, #0x1 +_0202E830: + add r3, r3, #0x1 + add r4, r4, #0x2 + cmp r3, #0x10 + blt _0202E828 + pop {r4, pc} + nop +_0202E83C: .word 0x021C59E8 +_0202E840: .word 0x00000C84 + + thumb_func_start FUN_0202E844 +FUN_0202E844: ; 0x0202E844 + push {r3-r5, lr} + ldr r1, _0202E870 ; =0x021C59E8 + mov r4, #0x0 + ldr r5, [r1, #0x8] + ldr r1, _0202E874 ; =0x00000C84 + add r3, r4, #0x0 +_0202E850: + ldrh r2, [r5, r1] + cmp r2, #0x0 + beq _0202E860 + cmp r4, r0 + bne _0202E85E + add r0, r3, #0x0 + pop {r3-r5, pc} +_0202E85E: + add r4, r4, #0x1 +_0202E860: + add r3, r3, #0x1 + add r5, r5, #0x2 + cmp r3, #0x10 + blt _0202E850 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0202E870: .word 0x021C59E8 +_0202E874: .word 0x00000C84 + + thumb_func_start FUN_0202E878 +FUN_0202E878: ; 0x0202E878 + ldr r0, _0202E884 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202E888 ; =0x00000CB4 + ldrb r0, [r1, r0] + bx lr + nop +_0202E884: .word 0x021C59E8 +_0202E888: .word 0x00000CB4 + + thumb_func_start FUN_0202E88C +FUN_0202E88C: ; 0x0202E88C + ldr r0, _0202E898 ; =0x021C59E8 + mov r2, #0x0 + ldr r1, [r0, #0x8] + ldr r0, _0202E89C ; =0x00000CB4 + strb r2, [r1, r0] + bx lr + .balign 4 +_0202E898: .word 0x021C59E8 +_0202E89C: .word 0x00000CB4 + + thumb_func_start FUN_0202E8A0 +FUN_0202E8A0: ; 0x0202E8A0 + ldr r1, _0202E8C8 ; =0x021C59E8 + ldr r3, [r1, #0x8] + lsl r1, r0, #0x1 + add r2, r3, r1 + ldr r1, _0202E8CC ; =0x00000C84 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202E8C2 + mov r1, #0xc0 + mul r1, r0 + add r0, r3, r1 + add r0, #0xaa + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0202E8C4 + mov r0, #0x1 + bx lr +_0202E8C2: + mov r0, #0x0 +_0202E8C4: + bx lr + nop +_0202E8C8: .word 0x021C59E8 +_0202E8CC: .word 0x00000C84 + + thumb_func_start FUN_0202E8D0 +FUN_0202E8D0: ; 0x0202E8D0 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0xf +_0202E8D6: + add r0, r4, #0x0 + bl FUN_0202E8A0 + cmp r0, r5 + ble _0202E8E8 + cmp r0, #0x8 + bge _0202E8E8 + add r0, r4, #0x0 + pop {r3-r5, pc} +_0202E8E8: + sub r4, r4, #0x1 + bpl _0202E8D6 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202E8F4 +FUN_0202E8F4: ; 0x0202E8F4 + push {r3-r7, lr} + bl FUN_0202E810 + cmp r0, #0x0 + bne _0202E904 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0202E904: + mov r5, #0x2d + ldr r7, _0202E948 ; =0x021C59E8 + mov r6, #0xf + mov r4, #0x1e + lsl r5, r5, #0x6 +_0202E90E: + ldr r0, [r7, #0x8] + ldr r1, _0202E94C ; =0x00000C84 + add r2, r0, r4 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202E938 + add r0, #0x58 + add r0, r0, r5 + bl FUN_0202EFE4 + cmp r0, #0x0 + beq _0202E938 + add r0, r6, #0x0 + bl FUN_0202E8A0 + cmp r0, #0x1 + ble _0202E938 + cmp r0, #0x8 + bge _0202E938 + add r0, r6, #0x0 + pop {r3-r7, pc} +_0202E938: + sub r4, r4, #0x2 + sub r5, #0xc0 + sub r6, r6, #0x1 + bpl _0202E90E + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + nop +_0202E948: .word 0x021C59E8 +_0202E94C: .word 0x00000C84 + + thumb_func_start FUN_0202E950 +FUN_0202E950: ; 0x0202E950 + push {r3-r7, lr} + bl FUN_0202E810 + cmp r0, #0x0 + bne _0202E960 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0202E960: + mov r5, #0x2d + ldr r7, _0202E9A4 ; =0x021C59E8 + mov r6, #0xf + mov r4, #0x1e + lsl r5, r5, #0x6 +_0202E96A: + ldr r0, [r7, #0x8] + ldr r1, _0202E9A8 ; =0x00000C84 + add r2, r0, r4 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202E986 + add r0, #0x58 + add r0, r0, r5 + bl FUN_0202EFE4 + cmp r0, #0x0 + beq _0202E986 + add r0, r6, #0x0 + pop {r3-r7, pc} +_0202E986: + sub r4, r4, #0x2 + sub r5, #0xc0 + sub r6, r6, #0x1 + bpl _0202E96A + mov r0, #0x1 + bl FUN_0202E8D0 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + bne _0202E9A2 + mov r0, #0x0 + bl FUN_0202E8D0 +_0202E9A2: + pop {r3-r7, pc} + .balign 4 +_0202E9A4: .word 0x021C59E8 +_0202E9A8: .word 0x00000C84 + + thumb_func_start FUN_0202E9AC +FUN_0202E9AC: ; 0x0202E9AC + push {r4-r6, lr} + add r4, r1, #0x0 + ldr r1, _0202E9E0 ; =0x021C59E8 + mov r5, #0x0 + ldr r6, [r1, #0x8] + ldr r1, _0202E9E4 ; =0x00000C84 + add r3, r5, #0x0 +_0202E9BA: + ldrh r2, [r6, r1] + cmp r2, #0x0 + beq _0202E9D4 + cmp r0, r5 + bne _0202E9D2 + add r0, r3, #0x0 + bl FUN_0202EF84 + add r1, r4, #0x0 + bl FUN_0202393C + pop {r4-r6, pc} +_0202E9D2: + add r5, r5, #0x1 +_0202E9D4: + add r3, r3, #0x1 + add r6, r6, #0x2 + cmp r3, #0x10 + blt _0202E9BA + pop {r4-r6, pc} + nop +_0202E9E0: .word 0x021C59E8 +_0202E9E4: .word 0x00000C84 + + thumb_func_start FUN_0202E9E8 +FUN_0202E9E8: ; 0x0202E9E8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0202CBD4 + cmp r0, #0x2 + bne _0202E9FC + bl FUN_0202C770 + mov r0, #0x0 + pop {r3-r5, pc} +_0202E9FC: + bl FUN_0202CBD4 + cmp r0, #0x1 + bne _0202EA48 + bl FUN_02033534 + mov r1, #0xc0 + add r4, r5, #0x0 + mul r4, r1 + ldr r1, _0202EA4C ; =0x021C59E8 + ldr r3, [r1, #0x8] + add r1, r3, r4 + add r1, #0x8a + ldrh r2, [r1, #0x0] + ldr r1, _0202EA50 ; =0x00000DA8 + strb r2, [r3, r1] + bl FUN_0202D8B0 + cmp r0, #0x0 + beq _0202EA36 + ldr r1, _0202EA4C ; =0x021C59E8 + mov r0, #0x1 + ldr r1, [r1, #0x8] + mov r2, #0x0 + add r1, #0x58 + add r1, r1, r4 + bl FUN_0202C4D8 + b _0202EA44 +_0202EA36: + ldr r1, _0202EA4C ; =0x021C59E8 + mov r0, #0x1 + ldr r1, [r1, #0x8] + add r1, #0x54 + add r1, r1, r4 + bl FUN_0202D034 +_0202EA44: + mov r0, #0x1 + pop {r3-r5, pc} +_0202EA48: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0202EA4C: .word 0x021C59E8 +_0202EA50: .word 0x00000DA8 + + thumb_func_start FUN_0202EA54 +FUN_0202EA54: ; 0x0202EA54 + push {r4-r7} + mov r4, #0x0 + ldr r1, _0202EA90 ; =0x021C59E8 + ldr r0, _0202EA94 ; =0x00000C84 + add r5, r4, #0x0 + mov r2, #0x1 +_0202EA60: + ldr r3, [r1, #0x8] + add r3, r3, r5 + ldrh r6, [r3, r0] + cmp r6, #0x0 + beq _0202EA84 + beq _0202EA84 + ldr r6, _0202EA94 ; =0x00000C84 + ldrh r6, [r3, r6] + sub r7, r6, #0x1 + ldr r6, _0202EA94 ; =0x00000C84 + strh r7, [r3, r6] + ldr r3, [r1, #0x8] + add r7, r3, r5 + ldrh r6, [r7, r6] + cmp r6, #0x0 + bne _0202EA84 + ldr r6, _0202EA98 ; =0x00000CB4 + strb r2, [r3, r6] +_0202EA84: + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, #0x10 + blt _0202EA60 + pop {r4-r7} + bx lr + .balign 4 +_0202EA90: .word 0x021C59E8 +_0202EA94: .word 0x00000C84 +_0202EA98: .word 0x00000CB4 + + thumb_func_start FUN_0202EA9C +FUN_0202EA9C: ; 0x0202EA9C + push {r3-r5, lr} + bl FUN_02033534 + add r5, r0, #0x0 + bl FUN_0202EF70 + add r4, r0, #0x0 + cmp r5, #0xf + beq _0202EB24 + ldr r0, _0202EB6C ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EB70 ; =0x00000CC4 + add r5, r1, r0 + bl FUN_02023AC4 + cmp r0, #0x20 + ble _0202EAC2 + bl ErrorHandling +_0202EAC2: + bl FUN_02023924 + cmp r0, #0x20 + beq _0202EACE + bl ErrorHandling +_0202EACE: + bl FUN_02023924 + add r1, r5, #0x0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, #0x10 + blx MI_CpuCopy8 + bl FUN_02023AC4 + add r2, r0, #0x0 + ldr r0, _0202EB6C ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EB74 ; =0x00000CBC + ldr r0, [r1, r0] + add r1, r5, #0x0 + add r1, #0x30 + blx MI_CpuCopy8 + add r0, r4, #0x0 + bl FUN_020239BC + str r0, [r5, #0x0] + bl FUN_02033534 + strb r0, [r5, #0x4] + bl FUN_0203354C + strb r0, [r5, #0x5] + ldr r0, _0202EB6C ; =0x021C59E8 + mov r2, #0x8 + ldr r1, [r0, #0x8] + ldr r0, _0202EB78 ; =0x00000CA8 + add r0, r1, r0 + add r1, r5, #0x0 + add r1, #0x8 + blx MI_CpuCopy8 + bl FUN_0202D358 + add r5, #0x54 + strb r0, [r5, #0x0] + b _0202EB4E +_0202EB24: + ldr r1, _0202EB6C ; =0x021C59E8 + ldr r4, [r1, #0x8] + ldr r1, _0202EB70 ; =0x00000CC4 + add r5, r4, r1 + bl FUN_020239BC + ldr r1, _0202EB70 ; =0x00000CC4 + str r0, [r4, r1] + bl FUN_02033534 + strb r0, [r5, #0x4] + bl FUN_0203354C + strb r0, [r5, #0x5] + ldr r0, _0202EB6C ; =0x021C59E8 + add r5, #0x8 + ldr r0, [r0, #0x8] + add r1, r5, #0x0 + mov r2, #0x54 + blx MI_CpuCopy8 +_0202EB4E: + ldr r0, _0202EB6C ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EB70 ; =0x00000CC4 + add r0, r1, r0 + mov r1, #0x5c + blx DC_FlushRange + ldr r0, _0202EB6C ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EB70 ; =0x00000CC4 + add r0, r1, r0 + mov r1, #0x5c + bl FUN_0202CB7C + pop {r3-r5, pc} + .balign 4 +_0202EB6C: .word 0x021C59E8 +_0202EB70: .word 0x00000CC4 +_0202EB74: .word 0x00000CBC +_0202EB78: .word 0x00000CA8 + + thumb_func_start FUN_0202EB7C +FUN_0202EB7C: ; 0x0202EB7C + push {r4, lr} + ldr r0, _0202EBC8 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EBCC ; =0x00000CC4 + add r4, r1, r0 + bl FUN_0202EDB8 + ldrb r1, [r4, #0x6] + cmp r1, r0 + beq _0202EBC6 + bl FUN_0202EDB8 + strb r0, [r4, #0x6] + ldr r0, _0202EBC8 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EBCC ; =0x00000CC4 + add r0, r1, r0 + mov r1, #0x5c + blx DC_FlushRange + ldr r0, _0202EBC8 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EBCC ; =0x00000CC4 + add r0, r1, r0 + mov r1, #0x5c + bl FUN_0202CB7C + ldr r3, _0202EBC8 ; =0x021C59E8 + ldr r2, _0202EBCC ; =0x00000CC4 + ldr r4, [r3, #0x8] + ldrh r3, [r3, #0x0] + add r0, r4, r2 + sub r2, r2, #0x4 + ldr r2, [r4, r2] + mov r1, #0x5c + bl FUN_0202D240 +_0202EBC6: + pop {r4, pc} + .balign 4 +_0202EBC8: .word 0x021C59E8 +_0202EBCC: .word 0x00000CC4 + + thumb_func_start FUN_0202EBD0 +FUN_0202EBD0: ; 0x0202EBD0 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_0202CBD4 + add r5, r0, #0x0 + bl FUN_0202DF54 + bl FUN_0202EB7C + bl FUN_0202D19C + cmp r0, #0x0 + bne _0202EC0C + bl FUN_0202EE24 + cmp r0, #0x0 + bne _0202EC0C + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r2, [r0, #0x8] + ldr r0, _0202ED54 ; =0x00000DAD + ldrb r1, [r2, r0] + lsl r3, r1, #0x1d + lsr r3, r3, #0x1f + beq _0202EC0C + mov r3, #0x1 + bic r1, r3 + mov r3, #0x1 + orr r1, r3 + strb r1, [r2, r0] +_0202EC0C: + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r1, _0202ED58 ; =0x0000FFFF + ldr r3, [r0, #0x8] + ldr r0, _0202ED5C ; =0x00000DA6 + ldrh r2, [r3, r0] + cmp r2, r1 + bne _0202EC1C + strh r4, [r3, r0] +_0202EC1C: + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r2, [r0, #0x8] + ldr r0, _0202ED54 ; =0x00000DAD + ldrb r1, [r2, r0] + lsl r3, r1, #0x1e + lsr r3, r3, #0x1f + beq _0202EC3C + sub r3, r0, #0x7 + ldrh r3, [r2, r3] + cmp r3, r4 + bls _0202EC3C + mov r3, #0x1 + bic r1, r3 + mov r3, #0x1 + orr r1, r3 + strb r1, [r2, r0] +_0202EC3C: + bl FUN_0202CBE8 + cmp r0, #0x19 + bne _0202EC4A + mov r0, #0x0 + bl FUN_020335D0 +_0202EC4A: + cmp r5, #0x9 + bhi _0202ED4C + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0202EC5A: ; jump table (using 16-bit offset) + .short _0202EC6E - _0202EC5A - 2; case 0 + .short _0202EC8E - _0202EC5A - 2; case 1 + .short _0202ED4C - _0202EC5A - 2; case 2 + .short _0202ED4C - _0202EC5A - 2; case 3 + .short _0202ED4C - _0202EC5A - 2; case 4 + .short _0202ED4C - _0202EC5A - 2; case 5 + .short _0202ED4C - _0202EC5A - 2; case 6 + .short _0202ECD2 - _0202EC5A - 2; case 7 + .short _0202ECB8 - _0202EC5A - 2; case 8 + .short _0202ECB8 - _0202EC5A - 2; case 9 +_0202EC6E: + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r2, [r0, #0x8] + ldr r0, _0202ED60 ; =0x00000DAA + ldrb r1, [r2, r0] + cmp r1, #0x1 + bne _0202EC82 + bl FUN_0202E7D8 + add sp, #0x8 + pop {r3-r5, pc} +_0202EC82: + cmp r1, #0x2 + bne _0202ED4C + mov r1, #0x3 + strb r1, [r2, r0] + add sp, #0x8 + pop {r3-r5, pc} +_0202EC8E: + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202ED60 ; =0x00000DAA + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _0202ECA2 + bl FUN_0202D178 + cmp r0, #0x0 + bne _0202ED4C +_0202ECA2: + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202ED60 ; =0x00000DAA + ldrb r0, [r1, r0] + cmp r0, #0x2 + bne _0202ED4C + bl FUN_0202D178 + add sp, #0x8 + cmp r0, #0x0 + pop {r3-r5, pc} +_0202ECB8: + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r3, [r0, #0x8] + cmp r3, #0x0 + beq _0202ED4C + ldr r1, _0202ED54 ; =0x00000DAD + mov r0, #0x1 + ldrb r2, [r3, r1] + add sp, #0x8 + bic r2, r0 + mov r0, #0x1 + orr r0, r2 + strb r0, [r3, r1] + pop {r3-r5, pc} +_0202ECD2: + bl FUN_0202CDA4 + ldr r3, _0202ED50 ; =0x021C59E8 + ldr r2, _0202ED64 ; =0x00000DA9 + ldr r4, [r3, #0x8] + ldrb r1, [r4, r2] + cmp r1, #0x0 + bne _0202ECEE + sub r1, r2, #0x5 + strh r0, [r4, r1] + ldr r0, [r3, #0x8] + mov r1, #0x5 + strb r1, [r0, r2] + b _0202ECF2 +_0202ECEE: + sub r0, r1, #0x1 + strb r0, [r4, r2] +_0202ECF2: + ldr r1, _0202ED50 ; =0x021C59E8 + ldr r0, _0202ED68 ; =0x00000DA4 + ldr r2, [r1, #0x8] + ldrh r5, [r2, r0] + add r0, #0x9 + ldrb r0, [r2, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _0202ED0A + ldrh r0, [r1, #0x0] + add r0, r0, #0x1 + strh r0, [r1, #0x0] +_0202ED0A: + bl FUN_0202EA9C + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r4, r0, #0x0 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202EEE8 + str r0, [sp, #0x0] + ldr r1, _0202ED50 ; =0x021C59E8 + ldr r0, _0202ED54 ; =0x00000DAD + ldr r2, [r1, #0x8] + add r3, r4, #0x0 + ldrb r0, [r2, r0] + add r2, r5, #0x0 + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + str r0, [sp, #0x4] + ldrh r1, [r1, #0x0] + mov r0, #0x0 + bl FUN_0202CF84 + ldr r0, _0202ED50 ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202ED6C ; =0x00000DA8 + strb r5, [r1, r0] +_0202ED4C: + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_0202ED50: .word 0x021C59E8 +_0202ED54: .word 0x00000DAD +_0202ED58: .word 0x0000FFFF +_0202ED5C: .word 0x00000DA6 +_0202ED60: .word 0x00000DAA +_0202ED64: .word 0x00000DA9 +_0202ED68: .word 0x00000DA4 +_0202ED6C: .word 0x00000DA8 + + thumb_func_start FUN_0202ED70 +FUN_0202ED70: ; 0x0202ED70 + push {r3, lr} + ldr r1, _0202ED80 ; =0x021C59E8 + ldr r1, [r1, #0x8] + cmp r1, #0x0 + beq _0202ED7E + bl FUN_0202EBD0 +_0202ED7E: + pop {r3, pc} + .balign 4 +_0202ED80: .word 0x021C59E8 + + thumb_func_start FUN_0202ED84 +FUN_0202ED84: ; 0x0202ED84 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0202EDB4 ; =0x021C59E8 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _0202ED94 + mov r0, #0x0 + pop {r4, pc} +_0202ED94: + bl FUN_0202CBD4 + cmp r0, #0x4 + beq _0202EDA0 + mov r0, #0x0 + pop {r4, pc} +_0202EDA0: + bl FUN_0202CB8C + mov r2, #0x1 + add r1, r2, #0x0 + lsl r1, r4 + tst r0, r1 + bne _0202EDB0 + mov r2, #0x0 +_0202EDB0: + add r0, r2, #0x0 + pop {r4, pc} + .balign 4 +_0202EDB4: .word 0x021C59E8 + + thumb_func_start FUN_0202EDB8 +FUN_0202EDB8: ; 0x0202EDB8 + push {r3-r5, lr} + mov r4, #0x0 + add r5, r4, #0x0 +_0202EDBE: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202ED84 + cmp r0, #0x0 + beq _0202EDCC + add r4, r4, #0x1 +_0202EDCC: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0202EDBE + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202EDD8 +FUN_0202EDD8: ; 0x0202EDD8 + ldr r0, _0202EDF0 ; =0x021C59E8 + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _0202EDEC + ldr r0, _0202EDF4 ; =0x00000DAA + ldrb r0, [r1, r0] + cmp r0, #0x3 + bne _0202EDEC + mov r0, #0x1 + bx lr +_0202EDEC: + mov r0, #0x0 + bx lr + .balign 4 +_0202EDF0: .word 0x021C59E8 +_0202EDF4: .word 0x00000DAA + + thumb_func_start FUN_0202EDF8 +FUN_0202EDF8: ; 0x0202EDF8 + ldr r0, _0202EE08 ; =0x021C59E8 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0202EE04 + mov r0, #0x1 + bx lr +_0202EE04: + mov r0, #0x0 + bx lr + .balign 4 +_0202EE08: .word 0x021C59E8 + + thumb_func_start FUN_0202EE0C +FUN_0202EE0C: ; 0x0202EE0C + push {r3, lr} + ldr r0, _0202EE20 ; =0x021C59E8 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0202EE1C + bl FUN_0202D1C8 + pop {r3, pc} +_0202EE1C: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0202EE20: .word 0x021C59E8 + + thumb_func_start FUN_0202EE24 +FUN_0202EE24: ; 0x0202EE24 + push {r3, lr} + ldr r0, _0202EE3C ; =0x021C59E8 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0202EE38 + bl FUN_0202CB8C + ldr r1, _0202EE40 ; =0x0000FFFE + and r0, r1 + pop {r3, pc} +_0202EE38: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0202EE3C: .word 0x021C59E8 +_0202EE40: .word 0x0000FFFE + + thumb_func_start FUN_0202EE44 +FUN_0202EE44: ; 0x0202EE44 + push {r3, lr} + bl FUN_0202EE60 + cmp r0, #0x0 + beq _0202EE5A + bl FUN_0202CBE8 + cmp r0, #0x14 + bne _0202EE5A + mov r0, #0x1 + pop {r3, pc} +_0202EE5A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202EE60 +FUN_0202EE60: ; 0x0202EE60 + ldr r0, _0202EE7C ; =0x021C59E8 + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _0202EE76 + ldr r0, _0202EE80 ; =0x00000DAD + ldrb r0, [r1, r0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + beq _0202EE76 + mov r0, #0x1 + bx lr +_0202EE76: + mov r0, #0x0 + bx lr + nop +_0202EE7C: .word 0x021C59E8 +_0202EE80: .word 0x00000DAD + + thumb_func_start FUN_0202EE84 +FUN_0202EE84: ; 0x0202EE84 + push {r3-r4} + ldr r1, _0202EEA8 ; =0x021C59E8 + ldr r2, [r1, #0x8] + cmp r2, #0x0 + beq _0202EEA2 + ldr r4, _0202EEAC ; =0x00000DAD + lsl r0, r0, #0x18 + ldrb r1, [r2, r4] + lsr r0, r0, #0x18 + mov r3, #0x4 + lsl r0, r0, #0x1f + bic r1, r3 + lsr r0, r0, #0x1d + orr r0, r1 + strb r0, [r2, r4] +_0202EEA2: + pop {r3-r4} + bx lr + nop +_0202EEA8: .word 0x021C59E8 +_0202EEAC: .word 0x00000DAD + + thumb_func_start FUN_0202EEB0 +FUN_0202EEB0: ; 0x0202EEB0 + push {r4-r5} + ldr r5, _0202EEDC ; =0x021C59E8 + ldr r2, [r5, #0x8] + cmp r2, #0x0 + beq _0202EED6 + ldr r4, _0202EEE0 ; =0x00000DAD + lsl r0, r0, #0x18 + ldrb r1, [r2, r4] + lsr r0, r0, #0x18 + mov r3, #0x2 + lsl r0, r0, #0x1f + bic r1, r3 + lsr r0, r0, #0x1e + orr r0, r1 + strb r0, [r2, r4] + ldr r2, _0202EEE4 ; =0x0000FFFF + ldr r1, [r5, #0x8] + sub r0, r4, #0x7 + strh r2, [r1, r0] +_0202EED6: + pop {r4-r5} + bx lr + nop +_0202EEDC: .word 0x021C59E8 +_0202EEE0: .word 0x00000DAD +_0202EEE4: .word 0x0000FFFF + + thumb_func_start FUN_0202EEE8 +FUN_0202EEE8: ; 0x0202EEE8 + push {r3-r5, lr} + add r5, r0, #0x0 + blx WM_GetDispersionBeaconPeriod + add r4, r0, #0x0 + cmp r5, #0x1a + blo _0202EEFA + bl ErrorHandling +_0202EEFA: + cmp r5, #0xa + bne _0202EF04 + lsl r0, r4, #0xe + lsr r0, r0, #0x10 + pop {r3-r5, pc} +_0202EF04: + cmp r5, #0x9 + beq _0202EF0C + cmp r5, #0xd + bne _0202EF12 +_0202EF0C: + lsl r0, r4, #0xe + lsr r0, r0, #0x10 + pop {r3-r5, pc} +_0202EF12: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0202EF18 +FUN_0202EF18: ; 0x0202EF18 + ldr r1, _0202EF3C ; =0x021C59E8 + ldr r3, [r1, #0x8] + cmp r3, #0x0 + beq _0202EF36 + lsl r1, r0, #0x1 + add r2, r3, r1 + ldr r1, _0202EF40 ; =0x00000C84 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202EF36 + mov r1, #0xc0 + add r3, #0x54 + mul r1, r0 + add r0, r3, r1 + bx lr +_0202EF36: + mov r0, #0x0 + bx lr + nop +_0202EF3C: .word 0x021C59E8 +_0202EF40: .word 0x00000C84 + + thumb_func_start FUN_0202EF44 +FUN_0202EF44: ; 0x0202EF44 + ldr r1, _0202EF68 ; =0x021C59E8 + ldr r3, [r1, #0x8] + cmp r3, #0x0 + beq _0202EF62 + lsl r1, r0, #0x1 + add r2, r3, r1 + ldr r1, _0202EF6C ; =0x00000C84 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202EF62 + mov r1, #0xc0 + add r3, #0xa4 + mul r1, r0 + add r0, r3, r1 + bx lr +_0202EF62: + mov r0, #0x0 + bx lr + nop +_0202EF68: .word 0x021C59E8 +_0202EF6C: .word 0x00000C84 + + thumb_func_start FUN_0202EF70 +FUN_0202EF70: ; 0x0202EF70 + ldr r0, _0202EF7C ; =0x021C59E8 + ldr r1, [r0, #0x8] + ldr r0, _0202EF80 ; =0x00000CB8 + ldr r0, [r1, r0] + bx lr + nop +_0202EF7C: .word 0x021C59E8 +_0202EF80: .word 0x00000CB8 + + thumb_func_start FUN_0202EF84 +FUN_0202EF84: ; 0x0202EF84 + ldr r1, _0202EFA4 ; =0x021C59E8 + ldr r3, [r1, #0x8] + lsl r1, r0, #0x1 + add r2, r3, r1 + ldr r1, _0202EFA8 ; =0x00000C84 + ldrh r1, [r2, r1] + cmp r1, #0x0 + bne _0202EF98 + mov r0, #0x0 + bx lr +_0202EF98: + mov r1, #0xc0 + add r3, #0xa4 + mul r1, r0 + add r0, r3, r1 + add r0, #0x10 + bx lr + .balign 4 +_0202EFA4: .word 0x021C59E8 +_0202EFA8: .word 0x00000C84 + + thumb_func_start FUN_0202EFAC +FUN_0202EFAC: ; 0x0202EFAC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0202EFDC ; =0x021C59E8 + add r4, r1, #0x0 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0202EFD8 + cmp r4, #0x8 + blt _0202EFC2 + bl ErrorHandling +_0202EFC2: + ldr r1, _0202EFDC ; =0x021C59E8 + add r0, r5, #0x0 + ldr r2, [r1, #0x8] + ldr r1, _0202EFE0 ; =0x00000C54 + add r3, r2, r1 + mov r2, #0x6 + add r1, r4, #0x0 + mul r1, r2 + add r1, r3, r1 + blx MI_CpuCopy8 +_0202EFD8: + pop {r3-r5, pc} + nop +_0202EFDC: .word 0x021C59E8 +_0202EFE0: .word 0x00000C54 + + thumb_func_start FUN_0202EFE4 +FUN_0202EFE4: ; 0x0202EFE4 + push {r4-r5} + ldr r2, _0202F034 ; =0x021C59E8 + mov r1, #0x0 + ldr r3, [r2, #0x8] + ldr r2, _0202F038 ; =0x00000C54 + add r2, r3, r2 + ldrb r3, [r0, #0x0] +_0202EFF2: + ldrb r4, [r2, #0x0] + cmp r4, r3 + bne _0202F026 + ldrb r5, [r2, #0x1] + ldrb r4, [r0, #0x1] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x2] + ldrb r4, [r0, #0x2] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x3] + ldrb r4, [r0, #0x3] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x4] + ldrb r4, [r0, #0x4] + cmp r5, r4 + bne _0202F026 + ldrb r5, [r2, #0x5] + ldrb r4, [r0, #0x5] + cmp r5, r4 + bne _0202F026 + mov r0, #0x1 + pop {r4-r5} + bx lr +_0202F026: + add r1, r1, #0x1 + add r2, r2, #0x6 + cmp r1, #0x8 + blt _0202EFF2 + mov r0, #0x0 + pop {r4-r5} + bx lr + .balign 4 +_0202F034: .word 0x021C59E8 +_0202F038: .word 0x00000C54 + + thumb_func_start FUN_0202F03C +FUN_0202F03C: ; 0x0202F03C + ldr r0, _0202F054 ; =0x021C59E8 + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _0202F04E + ldr r0, _0202F058 ; =0x00000DAD + ldrb r0, [r1, r0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + bx lr +_0202F04E: + mov r0, #0x0 + bx lr + nop +_0202F054: .word 0x021C59E8 +_0202F058: .word 0x00000DAD + + thumb_func_start FUN_0202F05C +FUN_0202F05C: ; 0x0202F05C + ldr r0, _0202F070 ; =0x021C59E8 + ldr r3, [r0, #0x8] + cmp r3, #0x0 + beq _0202F06E + ldr r1, _0202F074 ; =0x00000DAD + mov r0, #0x10 + ldrb r2, [r3, r1] + orr r0, r2 + strb r0, [r3, r1] +_0202F06E: + bx lr + .balign 4 +_0202F070: .word 0x021C59E8 +_0202F074: .word 0x00000DAD + + thumb_func_start FUN_0202F078 +FUN_0202F078: ; 0x0202F078 + ldr r1, _0202F088 ; =0x021C59E8 + ldr r3, _0202F08C ; =MI_CpuCopy8 + ldr r2, [r1, #0x8] + ldr r1, _0202F090 ; =0x00000CA8 + add r1, r2, r1 + mov r2, #0x8 + bx r3 + nop +_0202F088: .word 0x021C59E8 +_0202F08C: .word MI_CpuCopy8 +_0202F090: .word 0x00000CA8 + + thumb_func_start FUN_0202F094 +FUN_0202F094: ; 0x0202F094 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02023AC4 + ldr r1, _0202F0B0 ; =0x021C59E8 + add r2, r0, #0x0 + ldr r3, [r1, #0x8] + ldr r1, _0202F0B4 ; =0x00000CBC + add r0, r4, #0x0 + ldr r1, [r3, r1] + blx MI_CpuCopy8 + pop {r4, pc} + nop +_0202F0B0: .word 0x021C59E8 +_0202F0B4: .word 0x00000CBC + + thumb_func_start FUN_0202F0B8 +FUN_0202F0B8: ; 0x0202F0B8 + push {r4, lr} + bl FUN_0202EA9C + ldr r3, _0202F0D4 ; =0x021C59E8 + ldr r2, _0202F0D8 ; =0x00000CC4 + ldr r4, [r3, #0x8] + ldrh r3, [r3, #0x0] + add r0, r4, r2 + sub r2, r2, #0x4 + ldr r2, [r4, r2] + mov r1, #0x5c + bl FUN_0202D240 + pop {r4, pc} + .balign 4 +_0202F0D4: .word 0x021C59E8 +_0202F0D8: .word 0x00000CC4 + + thumb_func_start FUN_0202F0DC +FUN_0202F0DC: ; 0x0202F0DC + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_0202F0E4: + add r0, r4, #0x0 + bl FUN_0202EF44 + cmp r0, #0x0 + beq _0202F0F8 + ldrb r1, [r0, #0x4] + cmp r1, r6 + bne _0202F0F8 + ldrb r0, [r0, #0x6] + add r5, r5, r0 +_0202F0F8: + add r4, r4, #0x1 + cmp r4, #0x10 + blt _0202F0E4 + add r0, r5, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0202F104 +FUN_0202F104: ; 0x0202F104 + ldr r3, _0202F108 ; =FUN_0202D2D0 + bx r3 + .balign 4 +_0202F108: .word FUN_0202D2D0 + + thumb_func_start FUN_0202F10C +FUN_0202F10C: ; 0x0202F10C + push {r3, lr} + ldr r1, _0202F120 ; =0x021C59E8 + mov r2, #0x54 + ldr r1, [r1, #0x8] + blx MI_CpuCopy8 + bl FUN_0202F0B8 + pop {r3, pc} + nop +_0202F120: .word 0x021C59E8 + + thumb_func_start FUN_0202F124 +FUN_0202F124: ; 0x0202F124 + ldr r1, _0202F148 ; =0x021C59E8 + ldr r3, [r1, #0x8] + cmp r3, #0x0 + beq _0202F144 + lsl r1, r0, #0x1 + add r2, r3, r1 + ldr r1, _0202F14C ; =0x00000C84 + ldrh r1, [r2, r1] + cmp r1, #0x0 + beq _0202F144 + mov r1, #0xc0 + add r3, #0xa4 + mul r1, r0 + add r0, r3, r1 + add r0, #0x8 + bx lr +_0202F144: + mov r0, #0x0 + bx lr + .balign 4 +_0202F148: .word 0x021C59E8 +_0202F14C: .word 0x00000C84 + + thumb_func_start FUN_0202F150 +FUN_0202F150: ; 0x0202F150 + push {r4-r6, lr} + add r6, r1, #0x0 + mov r4, #0x0 + ldr r1, _0202F2BC ; =0x021C59F4 + cmp r0, #0x0 + strb r4, [r1, #0x0] + beq _0202F25C + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r5, r0, #0x1 + ldr r0, _0202F2BC ; =0x021C59F4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0202F178 + mov r0, #0x1 + pop {r4-r6, pc} +_0202F178: + mov r0, #0xf + bl FUN_02031480 + ldr r1, _0202F2C0 ; =0x0000068C + mov r0, #0xf + bl FUN_02016998 + ldr r1, _0202F2BC ; =0x021C59F4 + ldr r2, _0202F2C0 ; =0x0000068C + str r0, [r1, #0x4] + add r1, r4, #0x0 + blx MI_CpuFill8 + ldr r2, _0202F2BC ; =0x021C59F4 + ldr r1, _0202F2C4 ; =0x00000658 + ldr r0, [r2, #0x4] + add r6, #0x40 + str r6, [r0, r1] + add r0, r1, #0x0 + ldr r3, [r2, #0x4] + add r6, r4, #0x0 + add r0, #0x25 + strb r6, [r3, r0] + add r0, r1, #0x0 + ldr r3, [r2, #0x4] + mov r6, #0x1b + add r0, #0x26 + strb r6, [r3, r0] + ldr r2, [r2, #0x4] + mov r0, #0xf + ldr r1, [r2, r1] + lsl r1, r1, #0x1 + bl FUN_02016998 + ldr r2, _0202F2BC ; =0x021C59F4 + ldr r1, _0202F2C8 ; =0x0000045C + ldr r3, [r2, #0x4] + str r0, [r3, r1] + ldr r2, [r2, #0x4] + ldr r1, _0202F2C4 ; =0x00000658 + mov r0, #0xf + ldr r1, [r2, r1] + bl FUN_02016998 + ldr r2, _0202F2BC ; =0x021C59F4 + mov r1, #0x46 + ldr r3, [r2, #0x4] + lsl r1, r1, #0x4 + str r0, [r3, r1] + ldr r2, [r2, #0x4] + ldr r1, _0202F2C4 ; =0x00000658 + mov r0, #0xf + ldr r1, [r2, r1] + mul r1, r5 + bl FUN_02016998 + ldr r2, _0202F2BC ; =0x021C59F4 + ldr r1, _0202F2CC ; =0x00000458 + ldr r3, [r2, #0x4] + str r0, [r3, r1] + ldr r2, [r2, #0x4] + ldr r1, _0202F2C4 ; =0x00000658 + mov r0, #0xf + ldr r1, [r2, r1] + mul r1, r5 + bl FUN_02016998 + ldr r1, _0202F2BC ; =0x021C59F4 + ldr r2, [r1, #0x4] + ldr r1, _0202F2D0 ; =0x00000454 + str r0, [r2, r1] + bl FUN_02033534 + cmp r0, #0xa + ldr r2, _0202F2D4 ; =0x0000054C + bne _0202F236 + ldr r0, _0202F2BC ; =0x021C59F4 + mov r1, #0x64 + ldr r3, [r0, #0x4] + add r0, r3, r2 + sub r2, #0xe8 + add r2, r3, r2 + bl FUN_0202D7D8 + ldr r0, _0202F2BC ; =0x021C59F4 + mov r1, #0x32 + ldr r3, [r0, #0x4] + ldr r2, _0202F2D8 ; =0x0000056C + lsl r1, r1, #0x4 + add r0, r3, r2 + sub r2, #0x90 + add r2, r3, r2 + bl FUN_0202D7D8 + b _0202F268 +_0202F236: + ldr r0, _0202F2BC ; =0x021C59F4 + mov r1, #0x14 + ldr r3, [r0, #0x4] + add r0, r3, r2 + sub r2, #0xe8 + add r2, r3, r2 + bl FUN_0202D7D8 + ldr r0, _0202F2BC ; =0x021C59F4 + add r1, r6, #0x0 + ldr r3, [r0, #0x4] + ldr r2, _0202F2D8 ; =0x0000056C + add r1, #0xfd + add r0, r3, r2 + sub r2, #0x90 + add r2, r3, r2 + bl FUN_0202D7D8 + b _0202F268 +_0202F25C: + ldr r0, [r1, #0x4] + mov r4, #0x1 + cmp r0, #0x0 + bne _0202F268 + bl ErrorHandling +_0202F268: + ldr r2, _0202F2BC ; =0x021C59F4 + ldr r1, _0202F2DC ; =0x0000065C + ldr r3, [r2, #0x4] + mov r0, #0x0 + strh r0, [r3, r1] + mov r5, #0xff + add r1, #0x1b +_0202F276: + ldr r3, [r2, #0x4] + add r3, r3, r0 + add r0, r0, #0x1 + strb r5, [r3, r1] + cmp r0, #0x4 + blt _0202F276 + cmp r4, #0x0 + bne _0202F28A + bl FUN_0202F2F0 +_0202F28A: + ldr r0, _0202F2BC ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202F2E0 ; =0x000005F8 + add r0, r1, r0 + bl FUN_020312BC + cmp r4, #0x0 + bne _0202F2AC + mov r1, #0x0 + ldr r0, _0202F2E4 ; =FUN_0202FB20 + add r2, r1, #0x0 + bl FUN_0200CA60 + ldr r1, _0202F2BC ; =0x021C59F4 + ldr r2, [r1, #0x4] + ldr r1, _0202F2E8 ; =0x00000548 + str r0, [r2, r1] +_0202F2AC: + ldr r0, _0202F2BC ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202F2EC ; =0x00000687 + strb r2, [r1, r0] + mov r0, #0x1 + pop {r4-r6, pc} + nop +_0202F2BC: .word 0x021C59F4 +_0202F2C0: .word 0x0000068C +_0202F2C4: .word 0x00000658 +_0202F2C8: .word 0x0000045C +_0202F2CC: .word 0x00000458 +_0202F2D0: .word 0x00000454 +_0202F2D4: .word 0x0000054C +_0202F2D8: .word 0x0000056C +_0202F2DC: .word 0x0000065C +_0202F2E0: .word 0x000005F8 +_0202F2E4: .word FUN_0202FB20 +_0202F2E8: .word 0x00000548 +_0202F2EC: .word 0x00000687 + + thumb_func_start FUN_0202F2F0 +FUN_0202F2F0: ; 0x0202F2F0 + push {r3-r7, lr} + ldr r3, _0202F54C ; =0x021C59F4 + ldr r2, _0202F550 ; =0x0000062C + ldr r1, [r3, #0x4] + mov r0, #0x0 + strb r0, [r1, r2] + ldr r4, [r3, #0x4] + add r1, r2, #0x1 + strb r0, [r4, r1] + add r1, r2, #0x0 + ldr r4, [r3, #0x4] + add r1, #0x53 + strb r0, [r4, r1] + ldr r1, [r3, #0x4] + add r2, #0x54 + strb r0, [r1, r2] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r6, r0, #0x1 + ldr r0, _0202F54C ; =0x021C59F4 + ldr r2, _0202F554 ; =0x00000658 + ldr r3, [r0, #0x4] + ldr r0, _0202F558 ; =0x00000458 + mov r1, #0x0 + ldr r0, [r3, r0] + ldr r3, [r3, r2] + add r2, r3, #0x0 + mul r2, r6 + blx MI_CpuFill8 + mov r4, #0x0 + cmp r6, #0x0 + ble _0202F360 + ldr r7, _0202F54C ; =0x021C59F4 + add r5, r4, #0x0 +_0202F33E: + ldr r3, [r7, #0x4] + ldr r0, _0202F554 ; =0x00000658 + ldr r1, _0202F558 ; =0x00000458 + ldr r2, [r3, r0] + ldr r0, _0202F55C ; =0x000004E8 + add r0, r3, r0 + ldr r3, [r3, r1] + add r1, r4, #0x0 + mul r1, r2 + add r0, r0, r5 + add r1, r3, r1 + bl FUN_0202D394 + add r4, r4, #0x1 + add r5, #0xc + cmp r4, r6 + blt _0202F33E +_0202F360: + ldr r0, _0202F54C ; =0x021C59F4 + ldr r2, _0202F554 ; =0x00000658 + ldr r3, [r0, #0x4] + ldr r0, _0202F560 ; =0x00000454 + mov r1, #0x0 + ldr r0, [r3, r0] + ldr r3, [r3, r2] + add r2, r3, #0x0 + mul r2, r6 + blx MI_CpuFill8 + mov r5, #0x0 + cmp r6, #0x0 + ble _0202F3A2 + ldr r7, _0202F54C ; =0x021C59F4 + add r4, r5, #0x0 +_0202F380: + ldr r3, [r7, #0x4] + ldr r0, _0202F554 ; =0x00000658 + ldr r1, _0202F560 ; =0x00000454 + ldr r2, [r3, r0] + ldr r0, _0202F564 ; =0x0000047C + add r0, r3, r0 + ldr r3, [r3, r1] + add r1, r5, #0x0 + mul r1, r2 + add r0, r0, r4 + add r1, r3, r1 + bl FUN_0202D394 + add r5, r5, #0x1 + add r4, #0xc + cmp r5, r6 + blt _0202F380 +_0202F3A2: + ldr r0, _0202F54C ; =0x021C59F4 + mov r2, #0x6 + ldr r1, [r0, #0x4] + mov r0, #0xb5 + lsl r0, r0, #0x2 + add r0, r1, r0 + mov r1, #0x0 + lsl r2, r2, #0x6 + blx MI_CpuFill8 + ldr r0, _0202F54C ; =0x021C59F4 + mov r1, #0xb5 + ldr r2, [r0, #0x4] + ldr r0, _0202F568 ; =0x000004DC + lsl r1, r1, #0x2 + add r0, r2, r0 + add r1, r2, r1 + mov r2, #0x6 + lsl r2, r2, #0x6 + bl FUN_0202D394 + mov r0, #0xee + add r2, r0, #0x0 + mov r3, #0x85 + ldr r4, _0202F54C ; =0x021C59F4 + mov r1, #0x0 + add r2, #0x66 + lsl r3, r3, #0x2 +_0202F3DA: + ldr r5, [r4, #0x4] + add r5, r5, r1 + strb r0, [r5, r2] + ldr r5, [r4, #0x4] + add r5, r5, r1 + add r1, r1, #0x1 + strb r0, [r5, r3] + cmp r1, #0xc0 + blt _0202F3DA + ldr r0, _0202F54C ; =0x021C59F4 + mov r2, #0x42 + ldr r0, [r0, #0x4] + mov r1, #0x0 + add r0, #0x4c + lsl r2, r2, #0x2 + blx MI_CpuFill8 + ldr r0, _0202F54C ; =0x021C59F4 + mov r2, #0x42 + ldr r1, [r0, #0x4] + ldr r0, _0202F56C ; =0x00000464 + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, #0x4c + bl FUN_0202D394 + ldr r1, _0202F54C ; =0x021C59F4 + mov r2, #0xff + ldr r0, [r1, #0x4] + mov r3, #0x1 + strb r2, [r0, #0x0] + ldr r0, [r1, #0x4] + add r0, #0x26 + strb r2, [r0, #0x0] + mov r2, #0xee +_0202F420: + ldr r0, [r1, #0x4] + strb r2, [r0, r3] + ldr r0, [r1, #0x4] + add r0, r0, r3 + add r0, #0x26 + add r3, r3, #0x1 + strb r2, [r0, #0x0] + cmp r3, #0x26 + blt _0202F420 + ldr r0, _0202F54C ; =0x021C59F4 + ldr r2, _0202F554 ; =0x00000658 + ldr r3, [r0, #0x4] + ldr r0, _0202F570 ; =0x0000045C + ldr r2, [r3, r2] + ldr r0, [r3, r0] + mov r1, #0x0 + lsl r2, r2, #0x1 + blx MI_CpuFill8 + ldr r0, _0202F54C ; =0x021C59F4 + mov r1, #0x47 + ldr r3, [r0, #0x4] + ldr r2, _0202F554 ; =0x00000658 + lsl r1, r1, #0x4 + add r0, r3, r1 + sub r1, #0x14 + ldr r2, [r3, r2] + ldr r1, [r3, r1] + lsl r2, r2, #0x1 + bl FUN_0202D394 + mov r2, #0x0 + ldr r0, _0202F54C ; =0x021C59F4 + ldr r1, _0202F574 ; =0x00000684 + ldr r3, [r0, #0x4] + mov r12, r2 + strb r2, [r3, r1] + ldr r3, [r0, #0x4] + add r1, r1, #0x1 + strb r2, [r3, r1] + add r1, r2, #0x0 + add r7, r2, #0x0 + add r6, r2, #0x0 +_0202F476: + ldr r3, [r0, #0x4] + add r4, r3, r2 + ldr r3, _0202F578 ; =0x0000065F + strb r6, [r4, r3] + ldr r3, [r0, #0x4] + ldr r4, _0202F57C ; =0x00000667 + add r5, r3, r2 + mov r3, #0x1 + strb r3, [r5, r4] + ldr r3, [r0, #0x4] + add r4, #0x8 + add r5, r3, r2 + mov r3, #0x1 + strb r3, [r5, r4] + ldr r4, [r0, #0x4] + mov r3, r12 + add r4, r4, r3 + mov r3, #0x61 + lsl r3, r3, #0x4 + strh r6, [r4, r3] + ldr r3, [r0, #0x4] + mov r4, #0xee + add r5, r3, r1 + ldr r3, _0202F580 ; =0x00000596 + add r2, r2, #0x1 + strb r4, [r5, r3] + ldr r3, [r0, #0x4] + ldr r4, _0202F584 ; =0x0000FFFF + add r5, r3, r1 + ldr r3, _0202F588 ; =0x00000594 + strh r4, [r5, r3] + ldr r3, [r0, #0x4] + add r4, r3, r1 + mov r3, #0x59 + lsl r3, r3, #0x4 + str r6, [r4, r3] + ldr r3, [r0, #0x4] + add r4, r3, r1 + ldr r3, _0202F58C ; =0x0000058C + add r1, #0xc + str r6, [r4, r3] + ldr r3, [r0, #0x4] + add r4, r3, r7 + ldr r3, _0202F590 ; =0x00000638 + add r7, r7, #0x4 + str r6, [r4, r3] + mov r3, r12 + add r3, r3, #0x2 + mov r12, r3 + cmp r2, #0x8 + blt _0202F476 + ldr r1, _0202F54C ; =0x021C59F4 + ldr r0, _0202F594 ; =0x00000634 + ldr r2, [r1, #0x4] + sub r3, r0, #0x4 + str r6, [r2, r0] + ldr r4, [r1, #0x4] + mov r2, #0x1 + str r2, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + sub r3, #0x3e + mov r2, #0xee + strb r2, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + ldr r2, _0202F584 ; =0x0000FFFF + sub r3, #0x40 + strh r2, [r4, r3] + add r2, r0, #0x0 + ldr r3, [r1, #0x4] + sub r2, #0x44 + str r6, [r3, r2] + add r2, r0, #0x0 + ldr r3, [r1, #0x4] + sub r2, #0x48 + str r6, [r3, r2] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + add r3, #0x4e + mov r2, #0x1 + strb r2, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + add r3, #0x4f + strb r2, [r4, r3] + ldr r2, _0202F598 ; =0x02105D58 + mov r3, #0x4 + strb r3, [r2, #0x1] + strb r3, [r2, #0x0] + ldr r1, [r1, #0x4] + sub r0, #0xe8 + add r0, r1, r0 + bl FUN_0202D804 + ldr r0, _0202F54C ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202F59C ; =0x0000056C + add r0, r1, r0 + bl FUN_0202D804 + ldr r0, _0202F54C ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202F5A0 ; =0x00000688 + strb r2, [r1, r0] + pop {r3-r7, pc} + .balign 4 +_0202F54C: .word 0x021C59F4 +_0202F550: .word 0x0000062C +_0202F554: .word 0x00000658 +_0202F558: .word 0x00000458 +_0202F55C: .word 0x000004E8 +_0202F560: .word 0x00000454 +_0202F564: .word 0x0000047C +_0202F568: .word 0x000004DC +_0202F56C: .word 0x00000464 +_0202F570: .word 0x0000045C +_0202F574: .word 0x00000684 +_0202F578: .word 0x0000065F +_0202F57C: .word 0x00000667 +_0202F580: .word 0x00000596 +_0202F584: .word 0x0000FFFF +_0202F588: .word 0x00000594 +_0202F58C: .word 0x0000058C +_0202F590: .word 0x00000638 +_0202F594: .word 0x00000634 +_0202F598: .word 0x02105D58 +_0202F59C: .word 0x0000056C +_0202F5A0: .word 0x00000688 + + thumb_func_start FUN_0202F5A4 +FUN_0202F5A4: ; 0x0202F5A4 + push {r3-r7, lr} + ldr r1, _0202F7D4 ; =0x021C59F4 + ldr r0, _0202F7D8 ; =0x0000062C + ldr r2, [r1, #0x4] + mov r3, #0x0 + strb r3, [r2, r0] + ldr r1, [r1, #0x4] + add r0, r0, #0x1 + strb r3, [r1, r0] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r6, r0, #0x1 + ldr r0, _0202F7D4 ; =0x021C59F4 + ldr r2, _0202F7DC ; =0x00000658 + ldr r3, [r0, #0x4] + ldr r0, _0202F7E0 ; =0x00000458 + mov r1, #0x0 + ldr r0, [r3, r0] + ldr r3, [r3, r2] + add r2, r3, #0x0 + mul r2, r6 + blx MI_CpuFill8 + mov r4, #0x0 + cmp r6, #0x0 + ble _0202F606 + ldr r7, _0202F7D4 ; =0x021C59F4 + add r5, r4, #0x0 +_0202F5E4: + ldr r3, [r7, #0x4] + ldr r0, _0202F7DC ; =0x00000658 + ldr r1, _0202F7E0 ; =0x00000458 + ldr r2, [r3, r0] + ldr r0, _0202F7E4 ; =0x000004E8 + add r0, r3, r0 + ldr r3, [r3, r1] + add r1, r4, #0x0 + mul r1, r2 + add r0, r0, r5 + add r1, r3, r1 + bl FUN_0202D394 + add r4, r4, #0x1 + add r5, #0xc + cmp r4, r6 + blt _0202F5E4 +_0202F606: + ldr r0, _0202F7D4 ; =0x021C59F4 + ldr r2, _0202F7DC ; =0x00000658 + ldr r3, [r0, #0x4] + ldr r0, _0202F7E8 ; =0x00000454 + mov r1, #0x0 + ldr r0, [r3, r0] + ldr r3, [r3, r2] + add r2, r3, #0x0 + mul r2, r6 + blx MI_CpuFill8 + mov r5, #0x0 + cmp r6, #0x0 + ble _0202F648 + ldr r7, _0202F7D4 ; =0x021C59F4 + add r4, r5, #0x0 +_0202F626: + ldr r3, [r7, #0x4] + ldr r0, _0202F7DC ; =0x00000658 + ldr r1, _0202F7E8 ; =0x00000454 + ldr r2, [r3, r0] + ldr r0, _0202F7EC ; =0x0000047C + add r0, r3, r0 + ldr r3, [r3, r1] + add r1, r5, #0x0 + mul r1, r2 + add r0, r0, r4 + add r1, r3, r1 + bl FUN_0202D394 + add r5, r5, #0x1 + add r4, #0xc + cmp r5, r6 + blt _0202F626 +_0202F648: + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r2, #0x6 + ldr r1, [r0, #0x4] + mov r0, #0xb5 + lsl r0, r0, #0x2 + add r0, r1, r0 + mov r1, #0x0 + lsl r2, r2, #0x6 + blx MI_CpuFill8 + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r1, #0xb5 + ldr r2, [r0, #0x4] + ldr r0, _0202F7F0 ; =0x000004DC + lsl r1, r1, #0x2 + add r0, r2, r0 + add r1, r2, r1 + mov r2, #0x6 + lsl r2, r2, #0x6 + bl FUN_0202D394 + mov r0, #0xee + add r2, r0, #0x0 + mov r3, #0x85 + ldr r4, _0202F7D4 ; =0x021C59F4 + mov r1, #0x0 + add r2, #0x66 + lsl r3, r3, #0x2 +_0202F680: + ldr r5, [r4, #0x4] + add r5, r5, r1 + strb r0, [r5, r2] + ldr r5, [r4, #0x4] + add r5, r5, r1 + add r1, r1, #0x1 + strb r0, [r5, r3] + cmp r1, #0xc0 + blt _0202F680 + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r2, #0x42 + ldr r0, [r0, #0x4] + mov r1, #0x0 + add r0, #0x4c + lsl r2, r2, #0x2 + blx MI_CpuFill8 + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r2, #0x42 + ldr r1, [r0, #0x4] + ldr r0, _0202F7F4 ; =0x00000464 + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, #0x4c + bl FUN_0202D394 + ldr r1, _0202F7D4 ; =0x021C59F4 + mov r2, #0xff + ldr r0, [r1, #0x4] + mov r3, #0x1 + strb r2, [r0, #0x0] + ldr r0, [r1, #0x4] + add r0, #0x26 + strb r2, [r0, #0x0] + mov r2, #0xee +_0202F6C6: + ldr r0, [r1, #0x4] + strb r2, [r0, r3] + ldr r0, [r1, #0x4] + add r0, r0, r3 + add r0, #0x26 + add r3, r3, #0x1 + strb r2, [r0, #0x0] + cmp r3, #0x26 + blt _0202F6C6 + ldr r0, _0202F7D4 ; =0x021C59F4 + ldr r2, _0202F7DC ; =0x00000658 + ldr r3, [r0, #0x4] + ldr r0, _0202F7F8 ; =0x0000045C + ldr r2, [r3, r2] + ldr r0, [r3, r0] + mov r1, #0x0 + lsl r2, r2, #0x1 + blx MI_CpuFill8 + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r1, #0x47 + ldr r3, [r0, #0x4] + ldr r2, _0202F7DC ; =0x00000658 + lsl r1, r1, #0x4 + add r0, r3, r1 + sub r1, #0x14 + ldr r2, [r3, r2] + ldr r1, [r3, r1] + lsl r2, r2, #0x1 + bl FUN_0202D394 + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r3, #0x0 + ldr r2, [r0, #0x4] + ldr r1, _0202F7FC ; =0x00000684 + add r7, r3, #0x0 + strb r3, [r2, r1] + ldr r2, [r0, #0x4] + add r1, r1, #0x1 + strb r3, [r2, r1] + add r1, r3, #0x0 + add r2, r3, #0x0 +_0202F71A: + ldr r4, [r0, #0x4] + add r5, r4, r3 + ldr r4, _0202F800 ; =0x0000065F + strb r7, [r5, r4] + ldr r4, [r0, #0x4] + ldr r5, _0202F804 ; =0x00000667 + add r6, r4, r3 + mov r4, #0x1 + strb r4, [r6, r5] + ldr r4, [r0, #0x4] + add r5, #0x8 + add r6, r4, r3 + mov r4, #0x1 + strb r4, [r6, r5] + ldr r4, [r0, #0x4] + add r3, r3, #0x1 + add r5, r4, r1 + mov r4, #0x61 + lsl r4, r4, #0x4 + strh r7, [r5, r4] + ldr r4, [r0, #0x4] + ldr r5, _0202F808 ; =0x00000596 + add r6, r4, r2 + mov r4, #0xee + strb r4, [r6, r5] + ldr r4, [r0, #0x4] + ldr r5, _0202F80C ; =0x0000FFFF + add r6, r4, r2 + ldr r4, _0202F810 ; =0x00000594 + add r1, r1, #0x2 + strh r5, [r6, r4] + ldr r4, [r0, #0x4] + add r5, r4, r2 + mov r4, #0x59 + lsl r4, r4, #0x4 + str r7, [r5, r4] + ldr r4, [r0, #0x4] + add r5, r4, r2 + ldr r4, _0202F814 ; =0x0000058C + add r2, #0xc + str r7, [r5, r4] + cmp r3, #0x8 + blt _0202F71A + ldr r1, _0202F7D4 ; =0x021C59F4 + add r0, r4, #0x0 + ldr r3, [r1, #0x4] + add r0, #0xa4 + mov r2, #0x1 + str r2, [r3, r0] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + sub r3, #0x3a + mov r2, #0xee + strb r2, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + ldr r2, _0202F80C ; =0x0000FFFF + sub r3, #0x3c + strh r2, [r4, r3] + add r2, r0, #0x0 + ldr r3, [r1, #0x4] + sub r2, #0x40 + str r7, [r3, r2] + add r2, r0, #0x0 + ldr r3, [r1, #0x4] + sub r2, #0x44 + str r7, [r3, r2] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + add r3, #0x52 + mov r2, #0x1 + strb r2, [r4, r3] + add r3, r0, #0x0 + ldr r4, [r1, #0x4] + add r3, #0x53 + strb r2, [r4, r3] + ldr r1, [r1, #0x4] + sub r0, #0xe4 + add r0, r1, r0 + bl FUN_0202D804 + ldr r0, _0202F7D4 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202F818 ; =0x0000056C + add r0, r1, r0 + bl FUN_0202D804 + ldr r0, _0202F7D4 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202F81C ; =0x00000688 + strb r2, [r1, r0] + pop {r3-r7, pc} + .balign 4 +_0202F7D4: .word 0x021C59F4 +_0202F7D8: .word 0x0000062C +_0202F7DC: .word 0x00000658 +_0202F7E0: .word 0x00000458 +_0202F7E4: .word 0x000004E8 +_0202F7E8: .word 0x00000454 +_0202F7EC: .word 0x0000047C +_0202F7F0: .word 0x000004DC +_0202F7F4: .word 0x00000464 +_0202F7F8: .word 0x0000045C +_0202F7FC: .word 0x00000684 +_0202F800: .word 0x0000065F +_0202F804: .word 0x00000667 +_0202F808: .word 0x00000596 +_0202F80C: .word 0x0000FFFF +_0202F810: .word 0x00000594 +_0202F814: .word 0x0000058C +_0202F818: .word 0x0000056C +_0202F81C: .word 0x00000688 + + thumb_func_start FUN_0202F820 +FUN_0202F820: ; 0x0202F820 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _0202F8B8 ; =0x021C59F4 + ldr r3, _0202F8BC ; =0x0000065F + ldr r1, [r0, #0x4] + mov r2, #0x0 + add r1, r1, r5 + strb r2, [r1, r3] + ldr r4, [r0, #0x4] + mov r1, #0x1 + add r6, r4, r5 + add r4, r3, #0x0 + add r4, #0x8 + strb r1, [r6, r4] + ldr r6, [r0, #0x4] + lsl r4, r5, #0x2 + add r6, r6, r4 + add r4, r3, #0x0 + sub r4, #0x27 + str r2, [r6, r4] + ldr r2, [r0, #0x4] + add r4, r2, r5 + add r2, r3, #0x0 + add r2, #0x10 + strb r1, [r4, r2] + ldr r1, [r0, #0x4] + sub r0, r3, #0x7 + ldr r2, [r1, r0] + ldr r3, _0202F8C0 ; =0x0000047C + mov r0, #0xc + add r4, r5, #0x0 + mul r4, r0 + add r0, r1, r3 + sub r3, #0x28 + ldr r3, [r1, r3] + add r1, r5, #0x0 + mul r1, r2 + add r0, r0, r4 + add r1, r3, r1 + bl FUN_0202D394 + ldr r0, _0202F8B8 ; =0x021C59F4 + ldr r3, _0202F8C4 ; =0x000004E8 + ldr r1, [r0, #0x4] + ldr r0, _0202F8C8 ; =0x00000658 + ldr r2, [r1, r0] + add r0, r1, r3 + sub r3, #0x90 + ldr r3, [r1, r3] + add r1, r5, #0x0 + mul r1, r2 + add r0, r0, r4 + add r1, r3, r1 + bl FUN_0202D394 + ldr r3, _0202F8B8 ; =0x021C59F4 + ldr r2, _0202F8CC ; =0x00000596 + ldr r0, [r3, #0x4] + mov r1, #0xee + add r0, r0, r4 + strb r1, [r0, r2] + ldr r0, [r3, #0x4] + ldr r5, _0202F8D0 ; =0x0000FFFF + add r1, r0, r4 + sub r0, r2, #0x2 + strh r5, [r1, r0] + ldr r1, [r3, #0x4] + mov r0, #0x0 + add r5, r1, r4 + sub r1, r2, #0x6 + str r0, [r5, r1] + ldr r1, [r3, #0x4] + sub r2, #0xa + add r1, r1, r4 + str r0, [r1, r2] + pop {r4-r6, pc} + .balign 4 +_0202F8B8: .word 0x021C59F4 +_0202F8BC: .word 0x0000065F +_0202F8C0: .word 0x0000047C +_0202F8C4: .word 0x000004E8 +_0202F8C8: .word 0x00000658 +_0202F8CC: .word 0x00000596 +_0202F8D0: .word 0x0000FFFF + + thumb_func_start FUN_0202F8D4 +FUN_0202F8D4: ; 0x0202F8D4 + push {r4-r6, lr} + ldr r4, _0202F908 ; =0x021C59F4 + ldr r6, _0202F90C ; =0x00000667 + mov r5, #0x1 +_0202F8DC: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0202F900 + ldr r0, [r4, #0x4] + add r0, r0, r5 + ldrb r0, [r0, r6] + cmp r0, #0x0 + bne _0202F900 + bl FUN_02031280 + cmp r0, #0x0 + bne _0202F900 + add r0, r5, #0x0 + bl FUN_0202F820 +_0202F900: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0202F8DC + pop {r4-r6, pc} + .balign 4 +_0202F908: .word 0x021C59F4 +_0202F90C: .word 0x00000667 + + thumb_func_start FUN_0202F910 +FUN_0202F910: ; 0x0202F910 + ldr r3, _0202F914 ; =FUN_0202F820 + bx r3 + .balign 4 +_0202F914: .word FUN_0202F820 + + thumb_func_start FUN_0202F918 +FUN_0202F918: ; 0x0202F918 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + mov r4, #0x1 + bl FUN_02033534 + cmp r0, #0x13 + bge _0202F93E + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0202E5F8 + add r4, r0, #0x0 + ldr r0, _0202F94C ; =FUN_0202F910 + bl FUN_0202D330 +_0202F93E: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_0202F150 + add r0, r4, #0x0 + pop {r3-r7, pc} + nop +_0202F94C: .word FUN_0202F910 + + thumb_func_start FUN_0202F950 +FUN_0202F950: ; 0x0202F950 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + mov r4, #0x1 + bl FUN_02033534 + cmp r0, #0x13 + bge _0202F96C + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0202E66C + add r4, r0, #0x0 +_0202F96C: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_0202F150 + ldr r0, _0202F980 ; =0x02105D58 + mov r1, #0x4 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + pop {r3-r7, pc} + nop +_0202F980: .word 0x02105D58 + + thumb_func_start FUN_0202F984 +FUN_0202F984: ; 0x0202F984 + push {r4, lr} + mov r4, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _0202F99A + ldr r0, _0202F9D4 ; =0x02105D58 + ldrb r0, [r0, #0x1] + cmp r0, #0x4 + beq _0202F9A2 + pop {r4, pc} +_0202F99A: + ldr r0, _0202F9D4 ; =0x02105D58 + ldrb r0, [r0, #0x0] + cmp r0, #0x4 + bne _0202F9D0 +_0202F9A2: + ldr r0, _0202F9D8 ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _0202F9DC ; =0x0000067D + ldrb r1, [r2, r0] + cmp r1, #0x2 + bne _0202F9B4 + mov r1, #0x0 + strb r1, [r2, r0] + mov r4, #0x1 +_0202F9B4: + ldr r0, _0202F9D8 ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _0202F9DC ; =0x0000067D + ldrb r1, [r2, r0] + cmp r1, #0x3 + bne _0202F9C4 + mov r4, #0x1 + strb r4, [r2, r0] +_0202F9C4: + cmp r4, #0x0 + beq _0202F9CC + bl FUN_0202F5A4 +_0202F9CC: + bl FUN_02031088 +_0202F9D0: + pop {r4, pc} + nop +_0202F9D4: .word 0x02105D58 +_0202F9D8: .word 0x021C59F4 +_0202F9DC: .word 0x0000067D + + thumb_func_start FUN_0202F9E0 +FUN_0202F9E0: ; 0x0202F9E0 + ldr r1, _0202FA08 ; =0x021C59F4 + ldr r3, [r1, #0x4] + ldr r1, _0202FA0C ; =0x0000067D + ldrb r2, [r3, r1] + cmp r2, #0x0 + bne _0202F9F6 + cmp r0, #0x1 + bne _0202F9F6 + mov r0, #0x3 + strb r0, [r3, r1] + bx lr +_0202F9F6: + cmp r2, #0x1 + bne _0202FA04 + cmp r0, #0x0 + bne _0202FA04 + ldr r0, _0202FA0C ; =0x0000067D + mov r1, #0x2 + strb r1, [r3, r0] +_0202FA04: + bx lr + nop +_0202FA08: .word 0x021C59F4 +_0202FA0C: .word 0x0000067D + + thumb_func_start FUN_0202FA10 +FUN_0202FA10: ; 0x0202FA10 + ldr r3, _0202FA18 ; =FUN_0202F9E0 + mov r0, #0x1 + bx r3 + nop +_0202FA18: .word FUN_0202F9E0 + + thumb_func_start FUN_0202FA1C +FUN_0202FA1C: ; 0x0202FA1C + ldr r3, _0202FA24 ; =FUN_0202F9E0 + mov r0, #0x0 + bx r3 + nop +_0202FA24: .word FUN_0202F9E0 + + thumb_func_start FUN_0202FA28 +FUN_0202FA28: ; 0x0202FA28 + ldr r0, _0202FA40 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FA44 ; =0x0000067D + ldrb r0, [r1, r0] + cmp r0, #0x2 + bne _0202FA38 + mov r0, #0x1 + bx lr +_0202FA38: + cmp r0, #0x3 + bne _0202FA3E + mov r0, #0x0 +_0202FA3E: + bx lr + .balign 4 +_0202FA40: .word 0x021C59F4 +_0202FA44: .word 0x0000067D + + thumb_func_start FUN_0202FA48 +FUN_0202FA48: ; 0x0202FA48 + push {r3, lr} + bl FUN_0202FA28 + cmp r0, #0x1 + bne _0202FA56 + mov r0, #0x1 + pop {r3, pc} +_0202FA56: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202FA5C +FUN_0202FA5C: ; 0x0202FA5C + push {r4, lr} + ldr r0, _0202FB00 ; =0x021C59F4 + mov r4, #0x0 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0202FA82 + bl FUN_02033534 + cmp r0, #0x13 + blt _0202FA78 + bl FUN_021D83C0 + mov r4, #0x1 + b _0202FA82 +_0202FA78: + bl FUN_0202E784 + cmp r0, #0x0 + beq _0202FA82 + mov r4, #0x1 +_0202FA82: + cmp r4, #0x0 + beq _0202FAFE + bl FUN_020314D0 + bl FUN_0202DBA4 + ldr r0, _0202FB00 ; =0x021C59F4 + mov r1, #0x0 + strb r1, [r0, #0x0] + ldr r1, [r0, #0x4] + ldr r0, _0202FB04 ; =0x00000548 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r1, _0202FB00 ; =0x021C59F4 + ldr r0, _0202FB04 ; =0x00000548 + ldr r2, [r1, #0x4] + mov r3, #0x0 + str r3, [r2, r0] + ldr r1, [r1, #0x4] + sub r0, #0xec + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r0, _0202FB00 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x46 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r0, _0202FB00 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FB08 ; =0x00000458 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r0, _0202FB00 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FB0C ; =0x00000454 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r0, _0202FB00 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FB10 ; =0x0000056C + add r0, r1, r0 + bl FUN_0202D824 + ldr r0, _0202FB00 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FB14 ; =0x0000054C + add r0, r1, r0 + bl FUN_0202D824 + ldr r0, _0202FB00 ; =0x021C59F4 + ldr r0, [r0, #0x4] + bl FUN_02016A18 + ldr r0, _0202FB00 ; =0x021C59F4 + mov r1, #0x0 + str r1, [r0, #0x4] +_0202FAFE: + pop {r4, pc} + .balign 4 +_0202FB00: .word 0x021C59F4 +_0202FB04: .word 0x00000548 +_0202FB08: .word 0x00000458 +_0202FB0C: .word 0x00000454 +_0202FB10: .word 0x0000056C +_0202FB14: .word 0x0000054C + + thumb_func_start FUN_0202FB18 +FUN_0202FB18: ; 0x0202FB18 + ldr r3, _0202FB1C ; =FUN_0202E9E8 + bx r3 + .balign 4 +_0202FB1C: .word FUN_0202E9E8 + + thumb_func_start FUN_0202FB20 +FUN_0202FB20: ; 0x0202FB20 + push {r3, lr} + ldr r0, _0202FB54 ; =0x021C59F4 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202FB52 + bl FUN_0203050C + bl FUN_02031190 + cmp r0, #0x0 + bne _0202FB40 + mov r0, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0202FB48 +_0202FB40: + bl FUN_02031280 + cmp r0, #0x0 + beq _0202FB4C +_0202FB48: + bl FUN_0202FEEC +_0202FB4C: + ldr r0, _0202FB54 ; =0x021C59F4 + mov r1, #0x0 + strb r1, [r0, #0x0] +_0202FB52: + pop {r3, pc} + .balign 4 +_0202FB54: .word 0x021C59F4 + + thumb_func_start FUN_0202FB58 +FUN_0202FB58: ; 0x0202FB58 + push {r3, lr} + bl FUN_0202F03C + cmp r0, #0x0 + beq _0202FB7C + bl FUN_02031190 + cmp r0, #0x0 + bne _0202FB78 + bl FUN_0202EE24 + cmp r0, #0x0 + bne _0202FB7C + bl FUN_0202FA5C + pop {r3, pc} +_0202FB78: + bl FUN_0202FA5C +_0202FB7C: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0202FB80 +FUN_0202FB80: ; 0x0202FB80 + push {r4, lr} + bl FUN_02031CDC + ldr r1, _0202FC48 ; =0x021C59F4 + ldr r2, [r1, #0x4] + cmp r2, #0x0 + beq _0202FC34 + ldr r0, _0202FC4C ; =0x0000068A + ldrb r0, [r2, r0] + cmp r0, #0x0 + bne _0202FC16 + mov r0, #0x0 + strb r0, [r1, #0x0] + bl FUN_0202F984 + ldr r0, _0202FC48 ; =0x021C59F4 + ldr r1, _0202FC50 ; =0x021C48B8 + ldr r0, [r0, #0x4] + ldr r2, _0202FC54 ; =0x00000628 + ldr r3, [r1, #0x44] + ldr r1, _0202FC58 ; =0x00007FFF + ldrh r4, [r0, r2] + and r1, r3 + orr r1, r4 + strh r1, [r0, r2] + bl FUN_02030674 + bl FUN_0202FCCC + ldr r0, _0202FC48 ; =0x021C59F4 + ldr r1, _0202FC54 ; =0x00000628 + ldr r3, [r0, #0x4] + mov r0, #0x2 + ldrh r2, [r3, r1] + lsl r0, r0, #0xe + and r0, r2 + strh r0, [r3, r1] + bl FUN_0202FA28 + cmp r0, #0x0 + bne _0202FBD6 + bl FUN_02030DA4 +_0202FBD6: + bl FUN_02031190 + cmp r0, #0x0 + bne _0202FBE8 + mov r0, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0202FBF0 +_0202FBE8: + bl FUN_02031280 + cmp r0, #0x0 + beq _0202FBF4 +_0202FBF0: + bl FUN_02030074 +_0202FBF4: + bl FUN_02031190 + cmp r0, #0x0 + beq _0202FC0C + bl FUN_0202FA28 + cmp r0, #0x1 + beq _0202FC0C + bl FUN_02031280 + cmp r0, #0x0 + beq _0202FC10 +_0202FC0C: + bl FUN_02030DFC +_0202FC10: + ldr r0, _0202FC48 ; =0x021C59F4 + mov r1, #0x1 + strb r1, [r0, #0x0] +_0202FC16: + ldr r0, _0202FC48 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FC5C ; =0x0000065C + ldrh r0, [r1, r0] + bl FUN_0202ED70 + bl FUN_02031190 + cmp r0, #0x0 + bne _0202FC2E + bl FUN_0202F8D4 +_0202FC2E: + bl FUN_0202FB58 + b _0202FC3A +_0202FC34: + mov r0, #0x0 + bl FUN_0202ED70 +_0202FC3A: + mov r0, #0x0 + bl FUN_020335F4 + bl FUN_020315A4 + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0202FC48: .word 0x021C59F4 +_0202FC4C: .word 0x0000068A +_0202FC50: .word 0x021C48B8 +_0202FC54: .word 0x00000628 +_0202FC58: .word 0x00007FFF +_0202FC5C: .word 0x0000065C + + thumb_func_start FUN_0202FC60 +FUN_0202FC60: ; 0x0202FC60 + push {r4, lr} + ldr r0, _0202FC7C ; =0x021C59F4 + mov r1, #0x0 + ldrb r4, [r0, #0x0] + strb r1, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0202FC74 + bl FUN_0202F2F0 +_0202FC74: + ldr r0, _0202FC7C ; =0x021C59F4 + strb r4, [r0, #0x0] + pop {r4, pc} + nop +_0202FC7C: .word 0x021C59F4 + + thumb_func_start FUN_0202FC80 +FUN_0202FC80: ; 0x0202FC80 + push {r4, lr} + ldr r0, _0202FCA0 ; =0x021C59F4 + mov r1, #0x0 + ldrb r4, [r0, #0x0] + strb r1, [r0, #0x0] + ldr r2, [r0, #0x4] + cmp r2, #0x0 + beq _0202FC9A + ldr r0, _0202FCA4 ; =0x0000067D + mov r1, #0x1 + strb r1, [r2, r0] + bl FUN_0202F2F0 +_0202FC9A: + ldr r0, _0202FCA0 ; =0x021C59F4 + strb r4, [r0, #0x0] + pop {r4, pc} + .balign 4 +_0202FCA0: .word 0x021C59F4 +_0202FCA4: .word 0x0000067D + + thumb_func_start FUN_0202FCA8 +FUN_0202FCA8: ; 0x0202FCA8 + push {r4, lr} + ldr r0, _0202FCC8 ; =0x021C59F4 + mov r1, #0x0 + ldrb r4, [r0, #0x0] + strb r1, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0202FCC0 + bl FUN_0202F2F0 + bl FUN_0202E538 +_0202FCC0: + ldr r0, _0202FCC8 ; =0x021C59F4 + strb r4, [r0, #0x0] + pop {r4, pc} + nop +_0202FCC8: .word 0x021C59F4 + + thumb_func_start FUN_0202FCCC +FUN_0202FCCC: ; 0x0202FCCC + push {r3, lr} + ldr r0, _0202FE14 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FE18 ; =0x00000683 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0202FD40 + bl FUN_02033534 + cmp r0, #0x13 + blt _0202FD06 + ldr r0, _0202FE14 ; =0x021C59F4 + ldr r1, _0202FE1C ; =0x00000687 + ldr r0, [r0, #0x4] + ldrb r1, [r0, r1] + cmp r1, #0x0 + beq _0202FCF8 + mov r1, #0x26 + bl FUN_021D78FC + cmp r0, #0x0 + bne _0202FCFA +_0202FCF8: + b _0202FE10 +_0202FCFA: + ldr r0, _0202FE14 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202FE18 ; =0x00000683 + strb r2, [r1, r0] + pop {r3, pc} +_0202FD06: + bl FUN_0202CBD4 + cmp r0, #0x4 + bne _0202FD1A + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0202FD22 +_0202FD1A: + bl FUN_02031280 + cmp r0, #0x0 + beq _0202FE10 +_0202FD22: + ldr r0, _0202FE20 ; =0x02105D58 + mov r1, #0x0 + strb r1, [r0, #0x0] + bl FUN_0203050C + ldr r0, _0202FE20 ; =0x02105D58 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0202FE10 + ldr r0, _0202FE14 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0202FE18 ; =0x00000683 + strb r2, [r1, r0] + pop {r3, pc} +_0202FD40: + bl FUN_02033534 + cmp r0, #0x13 + blt _0202FDB2 + ldr r0, _0202FE14 ; =0x021C59F4 + ldr r2, _0202FE1C ; =0x00000687 + ldr r0, [r0, #0x4] + ldrb r1, [r0, r2] + cmp r1, #0x0 + beq _0202FE10 + add r1, r2, #0x0 + sub r1, #0x57 + ldr r1, [r0, r1] + cmp r1, #0x0 + beq _0202FD7A + sub r2, #0x53 + ldr r1, [r0, r2] + cmp r1, #0x3 + bgt _0202FE10 + ldr r1, _0202FE20 ; =0x02105D58 + ldrb r1, [r1, #0x0] + cmp r1, #0x4 + bne _0202FD90 + bl FUN_02030930 + ldr r0, _0202FE20 ; =0x02105D58 + mov r1, #0x2 + strb r1, [r0, #0x0] + b _0202FD90 +_0202FD7A: + ldr r1, _0202FE20 ; =0x02105D58 + ldrb r1, [r1, #0x0] + cmp r1, #0x4 + bne _0202FD90 + bl FUN_02030930 + cmp r0, #0x0 + beq _0202FE10 + ldr r0, _0202FE20 ; =0x02105D58 + mov r1, #0x2 + strb r1, [r0, #0x0] +_0202FD90: + ldr r0, _0202FE14 ; =0x021C59F4 + mov r1, #0x26 + ldr r0, [r0, #0x4] + bl FUN_021D78FC + cmp r0, #0x0 + beq _0202FE10 + ldr r0, _0202FE20 ; =0x02105D58 + mov r1, #0x4 + strb r1, [r0, #0x0] + ldr r0, _0202FE14 ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _0202FE24 ; =0x00000634 + ldr r1, [r2, r0] + add r1, r1, #0x1 + str r1, [r2, r0] + pop {r3, pc} +_0202FDB2: + bl FUN_0202CBD4 + cmp r0, #0x4 + bne _0202FDC6 + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0202FDCE +_0202FDC6: + bl FUN_02031280 + cmp r0, #0x0 + beq _0202FE10 +_0202FDCE: + ldr r0, _0202FE20 ; =0x02105D58 + ldrb r0, [r0, #0x0] + cmp r0, #0x4 + bne _0202FE10 + ldr r0, _0202FE14 ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _0202FE24 ; =0x00000634 + ldr r1, [r2, r0] + cmp r1, #0x3 + bgt _0202FE10 + add r0, #0x4b + ldrb r1, [r2, r0] + mov r0, #0x26 + mul r0, r1 + add r0, r2, r0 + bl FUN_02030930 + ldr r0, _0202FE14 ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _0202FE28 ; =0x0000067F + ldrb r1, [r2, r0] + mov r0, #0x1 + sub r1, r0, r1 + mov r0, #0x26 + mul r0, r1 + add r0, r2, r0 + bl FUN_02030930 + ldr r0, _0202FE20 ; =0x02105D58 + mov r1, #0x0 + strb r1, [r0, #0x0] + bl FUN_0203050C +_0202FE10: + pop {r3, pc} + nop +_0202FE14: .word 0x021C59F4 +_0202FE18: .word 0x00000683 +_0202FE1C: .word 0x00000687 +_0202FE20: .word 0x02105D58 +_0202FE24: .word 0x00000634 +_0202FE28: .word 0x0000067F + + thumb_func_start FUN_0202FE2C +FUN_0202FE2C: ; 0x0202FE2C + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0xc] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0202FED0 + ldr r0, [sp, #0x0] + mov r1, #0xc0 + add r6, r0, #0x0 + add r4, r7, #0x0 + add r5, r7, #0x0 + mul r6, r1 +_0202FE66: + ldr r0, _0202FEE4 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0202FEE8 ; =0x0000047C + add r0, r1, r0 + add r0, r0, r4 + bl FUN_0202D4BC + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FE90 + ldr r0, _0202FEE4 ; =0x021C59F4 + mov r1, #0xe + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r2, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0202FE90: + ldr r0, _0202FEE4 ; =0x021C59F4 + mov r2, #0x55 + ldr r1, [r0, #0x4] + ldr r0, _0202FEE8 ; =0x0000047C + lsl r2, r2, #0x2 + add r0, r1, r0 + add r1, r1, r2 + add r1, r1, r6 + ldr r2, [sp, #0xc] + add r0, r0, r4 + add r1, r1, r5 + bl FUN_0202D400 + ldr r0, _0202FEE4 ; =0x021C59F4 + ldr r0, [r0, #0x4] + add r0, r6, r0 + add r1, r5, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0xe + bne _0202FEC2 + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0202FEC2: + ldr r0, [sp, #0xc] + add r7, r7, #0x1 + add r5, r5, r0 + ldr r0, [sp, #0x8] + add r4, #0xc + cmp r7, r0 + blt _0202FE66 +_0202FED0: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + cmp r1, r0 + bne _0202FEDE + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0202FEDE: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0202FEE4: .word 0x021C59F4 +_0202FEE8: .word 0x0000047C + + thumb_func_start FUN_0202FEEC +FUN_0202FEEC: ; 0x0202FEEC + push {r3-r7, lr} + ldr r0, _02030064 ; =0x021C59F4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0202FEFE + bl FUN_02033534 + cmp r0, #0x13 + blt _0202FF00 +_0202FEFE: + b _02030062 +_0202FF00: + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + str r0, [sp, #0x0] + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r6, r0, #0x1 + ldr r0, _02030068 ; =0x02105D58 + ldrb r1, [r0, #0x1] + cmp r1, #0x2 + beq _0202FF2C + ldrb r0, [r0, #0x1] + cmp r0, #0x0 + beq _0202FF2C + b _02030062 +_0202FF2C: + ldr r0, _02030068 ; =0x02105D58 + ldrb r1, [r0, #0x1] + add r1, r1, #0x1 + strb r1, [r0, #0x1] + bl FUN_0202FA28 + cmp r0, #0x1 + bne _0202FF4A + ldr r0, _02030064 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x1a + lsl r0, r0, #0x6 + ldrb r0, [r1, r0] + bl FUN_0202FE2C +_0202FF4A: + bl FUN_0202CBD4 + cmp r0, #0x4 + bne _0202FF86 + bl FUN_02031280 + cmp r0, #0x0 + bne _0202FF86 + ldr r0, _02030064 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x55 + lsl r0, r0, #0x2 + add r3, r1, r0 + mov r0, #0x1a + lsl r0, r0, #0x6 + ldrb r0, [r1, r0] + mov r1, #0xc0 + add r2, r0, #0x0 + mul r2, r1 + add r0, r3, r2 + ldr r3, _0203006C ; =FUN_020304F0 + mov r2, #0xe + bl FUN_0202D0D0 + cmp r0, #0x0 + bne _0202FF86 + ldr r0, _02030068 ; =0x02105D58 + ldrb r1, [r0, #0x1] + sub r1, r1, #0x1 + strb r1, [r0, #0x1] +_0202FF86: + ldr r0, _02030068 ; =0x02105D58 + ldrb r1, [r0, #0x1] + cmp r1, #0x1 + beq _0202FF94 + ldrb r0, [r0, #0x1] + cmp r0, #0x3 + bne _0203000A +_0202FF94: + mov r4, #0x0 + cmp r6, #0x0 + ble _0202FFDC + ldr r7, _02030064 ; =0x021C59F4 + add r5, r4, #0x0 +_0202FF9E: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0202FFBA + ldr r0, [r7, #0x4] + ldr r1, _02030070 ; =0x00000638 + add r0, r0, r5 + ldr r1, [r0, r1] + add r2, r1, #0x1 + ldr r1, _02030070 ; =0x00000638 + str r2, [r0, r1] + b _0202FFD4 +_0202FFBA: + bl FUN_02031280 + cmp r0, #0x0 + beq _0202FFD4 + cmp r4, #0x0 + bne _0202FFD4 + ldr r0, [r7, #0x4] + ldr r1, _02030070 ; =0x00000638 + add r0, r0, r5 + ldr r1, [r0, r1] + add r2, r1, #0x1 + ldr r1, _02030070 ; =0x00000638 + str r2, [r0, r1] +_0202FFD4: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _0202FF9E +_0202FFDC: + ldr r0, _02030064 ; =0x021C59F4 + mov r1, #0x55 + ldr r2, [r0, #0x4] + lsl r1, r1, #0x2 + add r4, r2, r1 + mov r1, #0x1a + lsl r1, r1, #0x6 + ldrb r1, [r2, r1] + mov r2, #0xc0 + mov r0, #0x0 + add r3, r1, #0x0 + mul r3, r2 + add r1, r4, r3 + bl FUN_0203026C + ldr r0, _02030064 ; =0x021C59F4 + mov r1, #0x1a + ldr r3, [r0, #0x4] + lsl r1, r1, #0x6 + ldrb r2, [r3, r1] + mov r0, #0x1 + sub r0, r0, r2 + strb r0, [r3, r1] +_0203000A: + mov r5, #0x0 + cmp r6, #0x0 + ble _0203004A + add r4, r5, #0x0 + mov r7, #0xff +_02030014: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + bne _02030040 + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02030040 + ldr r0, _02030064 ; =0x021C59F4 + mov r1, #0x1a + ldr r0, [r0, #0x4] + lsl r1, r1, #0x6 + ldrb r2, [r0, r1] + mov r1, #0xc0 + mul r1, r2 + add r0, r0, r1 + add r1, r4, r0 + mov r0, #0x55 + lsl r0, r0, #0x2 + strb r7, [r1, r0] +_02030040: + ldr r0, [sp, #0x0] + add r5, r5, #0x1 + add r4, r4, r0 + cmp r5, r6 + blt _02030014 +_0203004A: + bl FUN_0202CBD4 + cmp r0, #0x4 + bne _0203005A + bl FUN_02031280 + cmp r0, #0x0 + beq _02030062 +_0203005A: + ldr r0, _02030068 ; =0x02105D58 + ldrb r1, [r0, #0x1] + add r1, r1, #0x1 + strb r1, [r0, #0x1] +_02030062: + pop {r3-r7, pc} + .balign 4 +_02030064: .word 0x021C59F4 +_02030068: .word 0x02105D58 +_0203006C: .word FUN_020304F0 +_02030070: .word 0x00000638 + + thumb_func_start FUN_02030074 +FUN_02030074: ; 0x02030074 + push {r3-r7, lr} + ldr r0, _02030228 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0203022C ; =0x00000683 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _020300DC + bl FUN_02033534 + cmp r0, #0x13 + blt _020300B4 + mov r0, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + beq _020300DC + ldr r0, _02030228 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x55 + lsl r0, r0, #0x2 + add r0, r1, r0 + mov r1, #0x4c + bl FUN_021D79B4 + cmp r0, #0x0 + beq _020300DC + ldr r0, _02030228 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0203022C ; =0x00000683 + strb r2, [r1, r0] + pop {r3-r7, pc} +_020300B4: + bl FUN_0202CBD4 + cmp r0, #0x4 + beq _020300C4 + bl FUN_02031280 + cmp r0, #0x0 + beq _020300DC +_020300C4: + bl FUN_0202FEEC + ldr r0, _02030230 ; =0x02105D58 + ldrb r0, [r0, #0x1] + cmp r0, #0x2 + bne _020300DC + ldr r0, _02030228 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0203022C ; =0x00000683 + strb r2, [r1, r0] + pop {r3-r7, pc} +_020300DC: + bl FUN_02033534 + cmp r0, #0x13 + blt _02030184 + mov r0, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + bne _020300F0 + b _02030224 +_020300F0: + ldr r0, _02030228 ; =0x021C59F4 + mov r1, #0x63 + ldr r2, [r0, #0x4] + lsl r1, r1, #0x4 + ldr r0, [r2, r1] + cmp r0, #0x0 + beq _02030130 + add r0, r1, #0x0 + add r0, #0xc + ldr r0, [r2, r0] + cmp r0, #0x3 + bgt _02030110 + add r1, #0x8 + ldr r0, [r2, r1] + cmp r0, #0x3 + ble _02030112 +_02030110: + b _02030224 +_02030112: + ldr r0, _02030230 ; =0x02105D58 + ldrb r0, [r0, #0x1] + cmp r0, #0x4 + bne _02030150 + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02030128 + mov r0, #0x0 + bl FUN_0202FE2C +_02030128: + ldr r0, _02030230 ; =0x02105D58 + mov r1, #0x2 + strb r1, [r0, #0x1] + b _02030150 +_02030130: + ldr r0, _02030230 ; =0x02105D58 + ldrb r0, [r0, #0x1] + cmp r0, #0x4 + bne _0203014A + bl FUN_0202FA28 + cmp r0, #0x1 + bne _0203014A + mov r0, #0x0 + bl FUN_0202FE2C + cmp r0, #0x0 + beq _02030224 +_0203014A: + ldr r0, _02030230 ; =0x02105D58 + mov r1, #0x2 + strb r1, [r0, #0x1] +_02030150: + ldr r0, _02030228 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x55 + lsl r0, r0, #0x2 + add r0, r1, r0 + mov r1, #0x4c + bl FUN_021D79B4 + cmp r0, #0x0 + beq _02030224 + ldr r0, _02030230 ; =0x02105D58 + mov r1, #0x4 + strb r1, [r0, #0x1] + ldr r1, _02030228 ; =0x021C59F4 + ldr r0, _02030234 ; =0x00000638 + ldr r3, [r1, #0x4] + ldr r2, [r3, r0] + add r2, r2, #0x1 + str r2, [r3, r0] + ldr r2, [r1, #0x4] + add r1, r0, #0x4 + ldr r1, [r2, r1] + add r0, r0, #0x4 + add r1, r1, #0x1 + str r1, [r2, r0] + pop {r3-r7, pc} +_02030184: + bl FUN_0202CBD4 + cmp r0, #0x4 + beq _02030194 + bl FUN_02031280 + cmp r0, #0x0 + beq _02030224 +_02030194: + ldr r0, _02030230 ; =0x02105D58 + ldrb r0, [r0, #0x1] + cmp r0, #0x4 + bne _02030224 + ldr r6, _02030228 ; =0x021C59F4 + ldr r7, _02030234 ; =0x00000638 + mov r4, #0x1 + mov r5, #0x4 +_020301A4: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _020301BC + ldr r0, [r6, #0x4] + add r0, r0, r5 + ldr r0, [r0, r7] + cmp r0, #0x3 + ble _020301D2 + pop {r3-r7, pc} +_020301BC: + cmp r4, #0x0 + bne _020301D2 + bl FUN_02031280 + cmp r0, #0x0 + beq _020301D2 + ldr r1, [r6, #0x4] + ldr r0, _02030234 ; =0x00000638 + ldr r0, [r1, r0] + cmp r0, #0x3 + bgt _02030224 +_020301D2: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x8 + blt _020301A4 + bl FUN_0202FA28 + cmp r0, #0x0 + bne _0203021A + ldr r0, _02030228 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x55 + lsl r0, r0, #0x2 + add r2, r1, r0 + mov r0, #0x1a + lsl r0, r0, #0x6 + ldrb r1, [r1, r0] + mov r0, #0xc0 + mul r0, r1 + add r0, r2, r0 + bl FUN_02030A00 + ldr r0, _02030228 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x55 + lsl r0, r0, #0x2 + add r2, r1, r0 + mov r0, #0x1a + lsl r0, r0, #0x6 + ldrb r1, [r1, r0] + mov r0, #0x1 + sub r1, r0, r1 + mov r0, #0xc0 + mul r0, r1 + add r0, r2, r0 + bl FUN_02030A00 +_0203021A: + ldr r0, _02030230 ; =0x02105D58 + mov r1, #0x0 + strb r1, [r0, #0x1] + bl FUN_0202FEEC +_02030224: + pop {r3-r7, pc} + nop +_02030228: .word 0x021C59F4 +_0203022C: .word 0x00000683 +_02030230: .word 0x02105D58 +_02030234: .word 0x00000638 + + thumb_func_start FUN_02030238 +FUN_02030238: ; 0x02030238 + push {r4-r6, lr} + ldr r4, _02030264 ; =0x021C59F4 + ldr r3, _02030268 ; =0x0000066F + ldr r5, [r4, #0x4] + ldrb r6, [r5, r3] + cmp r6, #0x0 + beq _0203025C + add r0, r3, #0x0 + sub r0, #0x3b + ldr r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r3, #0x0 + sub r0, #0x3b + str r1, [r5, r0] + ldr r0, [r4, #0x4] + mov r1, #0x0 + strb r1, [r0, r3] + pop {r4-r6, pc} +_0203025C: + bl FUN_0203026C + pop {r4-r6, pc} + nop +_02030264: .word 0x021C59F4 +_02030268: .word 0x0000066F + + thumb_func_start FUN_0203026C +FUN_0203026C: ; 0x0203026C + push {r3-r7, lr} + sub sp, #0x8 + ldr r0, _020303A0 ; =0x021C59F4 + add r5, r1, #0x0 + ldr r2, [r0, #0x4] + ldr r0, _020303A4 ; =0x00000634 + ldr r1, [r2, r0] + sub r1, r1, #0x1 + str r1, [r2, r0] + cmp r5, #0x0 + beq _02030290 + ldrb r0, [r5, #0x0] + cmp r0, #0xb + bne _02030296 + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02030292 +_02030290: + b _0203039C +_02030292: + add r5, r5, #0x1 + b _0203029E +_02030296: + bl FUN_0202FA28 + cmp r0, #0x0 + beq _0203039C +_0203029E: + ldr r0, _020303A0 ; =0x021C59F4 + ldr r1, _020303A8 ; =0x00000682 + ldr r0, [r0, #0x4] + ldrb r1, [r0, r1] + cmp r1, #0x0 + beq _020302B2 + ldrb r2, [r5, #0x0] + mov r1, #0x1 + tst r1, r2 + bne _0203039C +_020302B2: + ldr r1, _020303A8 ; =0x00000682 + mov r2, #0x0 + strb r2, [r0, r1] + bl FUN_0202FA28 + cmp r0, #0x1 + bne _0203036E + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + add r6, r0, #0x0 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + mov r4, #0x0 + str r0, [sp, #0x4] + cmp r0, #0x0 + ble _0203039C + sub r0, r6, #0x1 + add r7, r4, #0x0 + str r0, [sp, #0x0] +_020302EA: + ldrb r0, [r5, #0x0] + cmp r0, #0xff + bne _02030302 + ldr r0, _020303A0 ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _020303AC ; =0x0000065C + lsl r2, r4 + ldrh r0, [r1, r0] + mvn r2, r2 + and r2, r0 + b _02030310 +_02030302: + ldr r0, _020303A0 ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _020303AC ; =0x0000065C + lsl r2, r4 + ldrh r0, [r1, r0] + orr r2, r0 +_02030310: + ldr r0, _020303AC ; =0x0000065C + strh r2, [r1, r0] + ldrb r2, [r5, #0x0] + cmp r2, #0xff + bne _0203031E + add r5, r5, r6 + b _02030360 +_0203031E: + cmp r2, #0xe + bne _02030326 + add r5, r5, r6 + b _02030360 +_02030326: + ldr r0, _020303A0 ; =0x021C59F4 + ldr r3, [r0, #0x4] + ldr r0, _020303B0 ; =0x00000667 + add r1, r3, r4 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0203033E + mov r0, #0x1 + tst r0, r2 + beq _0203033E + add r5, r5, r6 + b _02030360 +_0203033E: + ldr r0, _020303B4 ; =0x000004E8 + add r5, r5, #0x1 + add r0, r3, r0 + ldr r2, [sp, #0x0] + ldr r3, _020303B8 ; =0x000005E6 + add r0, r0, r7 + add r1, r5, #0x0 + bl FUN_0202D3A4 + ldr r0, [sp, #0x0] + mov r1, #0x0 + add r5, r5, r0 + ldr r0, _020303A0 ; =0x021C59F4 + ldr r0, [r0, #0x4] + add r2, r0, r4 + ldr r0, _020303B0 ; =0x00000667 + strb r1, [r2, r0] +_02030360: + ldr r0, [sp, #0x4] + add r4, r4, #0x1 + add r7, #0xc + cmp r4, r0 + blt _020302EA + add sp, #0x8 + pop {r3-r7, pc} +_0203036E: + ldr r0, _020303A0 ; =0x021C59F4 + ldrb r2, [r5, #0x1] + ldr r1, [r0, #0x4] + ldr r3, _020303AC ; =0x0000065C + strh r2, [r1, r3] + ldr r2, [r0, #0x4] + ldrh r1, [r2, r3] + lsl r1, r1, #0x8 + strh r1, [r2, r3] + ldr r4, [r0, #0x4] + ldrb r1, [r5, #0x2] + ldrh r2, [r4, r3] + add r1, r2, r1 + strh r1, [r4, r3] + ldr r1, [r0, #0x4] + mov r0, #0x47 + lsl r0, r0, #0x4 + add r0, r1, r0 + ldrb r2, [r5, #0x3] + add r1, r5, #0x4 + sub r3, #0x5d + bl FUN_0202D3A4 +_0203039C: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020303A0: .word 0x021C59F4 +_020303A4: .word 0x00000634 +_020303A8: .word 0x00000682 +_020303AC: .word 0x0000065C +_020303B0: .word 0x00000667 +_020303B4: .word 0x000004E8 +_020303B8: .word 0x000005E6 + + thumb_func_start FUN_020303BC +FUN_020303BC: ; 0x020303BC + push {r4-r6, lr} + ldr r3, _020303EC ; =0x021C59F4 + ldr r6, _020303F0 ; =0x0000066F + ldr r5, [r3, #0x4] + add r4, r5, r0 + ldrb r4, [r4, r6] + cmp r4, #0x0 + beq _020303E4 + add r1, r6, #0x0 + sub r1, #0x37 + add r4, r5, r1 + lsl r2, r0, #0x2 + ldr r1, [r4, r2] + sub r1, r1, #0x1 + str r1, [r4, r2] + ldr r1, [r3, #0x4] + mov r2, #0x0 + add r0, r1, r0 + strb r2, [r0, r6] + pop {r4-r6, pc} +_020303E4: + bl FUN_020303F4 + pop {r4-r6, pc} + nop +_020303EC: .word 0x021C59F4 +_020303F0: .word 0x0000066F + + thumb_func_start FUN_020303F4 +FUN_020303F4: ; 0x020303F4 + push {r4-r6, lr} + ldr r3, _020304B8 ; =0x021C59F4 + add r5, r0, #0x0 + ldr r0, [r3, #0x4] + ldr r2, _020304BC ; =0x00000638 + add r4, r1, #0x0 + add r1, r0, r2 + lsl r0, r5, #0x2 + ldr r6, [r1, r0] + sub r6, r6, #0x1 + str r6, [r1, r0] + cmp r4, #0x0 + beq _020304B4 + ldr r0, [r3, #0x4] + add r2, #0x2f + add r0, r0, r2 + ldrb r1, [r0, r5] + cmp r1, #0x0 + beq _02030422 + ldrb r2, [r4, #0x0] + mov r1, #0x1 + tst r1, r2 + bne _020304B4 +_02030422: + mov r1, #0x0 + strb r1, [r0, r5] + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02030478 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + add r6, r0, #0x0 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + ldrb r1, [r4, #0x0] + mov r0, #0x2 + tst r0, r1 + bne _02030468 + ldr r0, _020304B8 ; =0x021C59F4 + ldr r3, _020304C0 ; =0x0000065E + ldr r1, [r0, #0x4] + ldr r0, _020304C4 ; =0x0000047C + add r2, r6, #0x0 + add r1, r1, r0 + mov r0, #0xc + mul r0, r5 + add r0, r1, r0 + add r1, r4, #0x0 + bl FUN_0202D3A4 +_02030468: + ldr r0, _020304B8 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _020304C8 ; =0x0000065F + add r1, r1, r0 + ldrb r0, [r1, r5] + add r0, r0, #0x1 + strb r0, [r1, r5] + pop {r4-r6, pc} +_02030478: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020307E4 + ldrb r1, [r4, #0x0] + mov r0, #0x2 + tst r0, r1 + bne _020304B4 + mov r0, #0xc + add r6, r5, #0x0 + mul r6, r0 + ldr r0, _020304B8 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _020304CC ; =0x000004E8 + add r0, r1, r0 + add r0, r0, r6 + bl FUN_0202D498 + cmp r0, #0xb + blt _020304B4 + ldr r0, _020304B8 ; =0x021C59F4 + ldr r3, _020304D0 ; =0x0000066E + ldr r1, [r0, #0x4] + ldr r0, _020304CC ; =0x000004E8 + mov r2, #0xb + add r0, r1, r0 + add r0, r0, r6 + add r1, r4, #0x1 + bl FUN_0202D3A4 +_020304B4: + pop {r4-r6, pc} + nop +_020304B8: .word 0x021C59F4 +_020304BC: .word 0x00000638 +_020304C0: .word 0x0000065E +_020304C4: .word 0x0000047C +_020304C8: .word 0x0000065F +_020304CC: .word 0x000004E8 +_020304D0: .word 0x0000066E + + thumb_func_start FUN_020304D4 +FUN_020304D4: ; 0x020304D4 + push {r3, lr} + cmp r0, #0x0 + beq _020304E4 + ldr r0, _020304EC ; =0x02105D58 + ldrb r1, [r0, #0x0] + add r1, r1, #0x1 + strb r1, [r0, #0x0] + pop {r3, pc} +_020304E4: + bl ErrorHandling + pop {r3, pc} + nop +_020304EC: .word 0x02105D58 + + thumb_func_start FUN_020304F0 +FUN_020304F0: ; 0x020304F0 + push {r3, lr} + cmp r0, #0x0 + beq _02030500 + ldr r0, _02030508 ; =0x02105D58 + ldrb r1, [r0, #0x1] + add r1, r1, #0x1 + strb r1, [r0, #0x1] + pop {r3, pc} +_02030500: + bl ErrorHandling + pop {r3, pc} + nop +_02030508: .word 0x02105D58 + + thumb_func_start FUN_0203050C +FUN_0203050C: ; 0x0203050C + push {r4, lr} + ldr r0, _02030660 ; =0x021C59F4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0203051E + bl FUN_02033534 + cmp r0, #0x13 + blt _02030520 +_0203051E: + b _0203065E +_02030520: + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + add r4, r0, #0x0 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + bl FUN_02031280 + cmp r0, #0x0 + beq _02030594 + ldr r0, _02030664 ; =0x02105D58 + ldrb r1, [r0, #0x0] + cmp r1, #0x2 + beq _02030550 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02030594 +_02030550: + ldr r0, _02030664 ; =0x02105D58 + ldrb r1, [r0, #0x0] + add r1, r1, #0x1 + strb r1, [r0, #0x0] + mov r0, #0x1 + bl FUN_020304D4 + ldr r0, _02030660 ; =0x021C59F4 + ldr r1, _02030668 ; =0x0000067F + ldr r3, [r0, #0x4] + mov r0, #0x0 + ldrb r2, [r3, r1] + mov r1, #0x26 + mul r1, r2 + lsl r2, r4, #0x10 + add r1, r3, r1 + lsr r2, r2, #0x10 + bl FUN_020303F4 + ldr r2, _02030660 ; =0x021C59F4 + ldr r1, _02030668 ; =0x0000067F + ldr r4, [r2, #0x4] + mov r0, #0x1 + ldrb r3, [r4, r1] + sub r0, r0, r3 + strb r0, [r4, r1] + add r0, r1, #0x0 + ldr r2, [r2, #0x4] + sub r0, #0x4b + ldr r0, [r2, r0] + sub r1, #0x4b + add r0, r0, #0x1 + str r0, [r2, r1] + pop {r4, pc} +_02030594: + bl FUN_0202CBD4 + cmp r0, #0x4 + bne _0203065E + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _020305AE + bl FUN_02031190 + pop {r4, pc} +_020305AE: + ldr r0, _02030664 ; =0x02105D58 + ldrb r1, [r0, #0x0] + cmp r1, #0x2 + beq _020305BC + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203065E +_020305BC: + bl FUN_02031190 + cmp r0, #0x0 + beq _02030612 + ldr r0, _02030664 ; =0x02105D58 + ldr r3, _0203066C ; =FUN_020304D4 + ldrb r1, [r0, #0x0] + add r1, r1, #0x1 + strb r1, [r0, #0x0] + ldr r0, _02030660 ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _02030668 ; =0x0000067F + ldrb r1, [r2, r0] + mov r0, #0x26 + mul r0, r1 + lsl r1, r4, #0x10 + add r0, r2, r0 + lsr r1, r1, #0x10 + mov r2, #0xe + bl FUN_0202D0D0 + cmp r0, #0x0 + bne _020305F4 + ldr r0, _02030664 ; =0x02105D58 + ldrb r1, [r0, #0x0] + sub r1, r1, #0x1 + strb r1, [r0, #0x0] + pop {r4, pc} +_020305F4: + ldr r2, _02030660 ; =0x021C59F4 + ldr r1, _02030668 ; =0x0000067F + ldr r4, [r2, #0x4] + mov r0, #0x1 + ldrb r3, [r4, r1] + sub r0, r0, r3 + strb r0, [r4, r1] + add r0, r1, #0x0 + ldr r2, [r2, #0x4] + sub r0, #0x4b + ldr r0, [r2, r0] + sub r1, #0x4b + add r0, r0, #0x1 + str r0, [r2, r1] + pop {r4, pc} +_02030612: + bl FUN_0202CB8C + ldr r1, _02030670 ; =0x0000FFFE + tst r0, r1 + beq _0203065E + ldr r0, _02030664 ; =0x02105D58 + ldrb r1, [r0, #0x0] + add r1, r1, #0x1 + strb r1, [r0, #0x0] + mov r0, #0x1 + bl FUN_020304D4 + ldr r0, _02030660 ; =0x021C59F4 + ldr r1, _02030668 ; =0x0000067F + ldr r3, [r0, #0x4] + mov r0, #0x0 + ldrb r2, [r3, r1] + mov r1, #0x26 + mul r1, r2 + lsl r2, r4, #0x10 + add r1, r3, r1 + lsr r2, r2, #0x10 + bl FUN_020303F4 + ldr r2, _02030660 ; =0x021C59F4 + ldr r1, _02030668 ; =0x0000067F + ldr r4, [r2, #0x4] + mov r0, #0x1 + ldrb r3, [r4, r1] + sub r0, r0, r3 + strb r0, [r4, r1] + add r0, r1, #0x0 + ldr r2, [r2, #0x4] + sub r0, #0x4b + ldr r0, [r2, r0] + sub r1, #0x4b + add r0, r0, #0x1 + str r0, [r2, r1] +_0203065E: + pop {r4, pc} + .balign 4 +_02030660: .word 0x021C59F4 +_02030664: .word 0x02105D58 +_02030668: .word 0x0000067F +_0203066C: .word FUN_020304D4 +_02030670: .word 0x0000FFFE + + thumb_func_start FUN_02030674 +FUN_02030674: ; 0x02030674 + push {r3-r7, lr} + ldr r7, _02030798 ; =0x021C59F4 + mov r6, #0x0 + ldr r5, [r7, #0x4] + ldr r2, _0203079C ; =0x0000062C + add r4, r6, #0x0 + ldrb r0, [r5, r2] + cmp r0, #0x0 + beq _02030690 + sub r1, r2, #0x4 + ldrh r1, [r5, r1] + mov r3, #0xf0 + tst r3, r1 + bne _02030692 +_02030690: + b _02030794 +_02030692: + cmp r0, #0x2 + bne _020306D0 + mov r0, #0x20 + tst r0, r1 + beq _020306A4 + mov r0, #0x10 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306A4: + mov r0, #0x10 + tst r0, r1 + beq _020306B2 + mov r0, #0x20 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306B2: + mov r0, #0x40 + tst r0, r1 + beq _020306C0 + mov r0, #0x80 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_020306C0: + mov r0, #0x80 + tst r0, r1 + beq _0203077E + mov r0, #0x40 + orr r0, r4 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203077E +_020306D0: + add r0, r2, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _020306F2 + add r4, r0, #0x0 + add r0, r2, #0x1 + ldrsb r0, [r5, r0] + sub r1, r0, #0x1 + add r0, r2, #0x1 + strb r1, [r5, r0] + ldr r1, [r7, #0x4] + ldrsb r0, [r1, r0] + cmp r0, #0x0 + bge _0203077E + add r0, r2, #0x2 + strh r6, [r1, r0] + b _0203077E +_020306F2: + add r0, r2, #0x0 + sub r0, #0x34 + add r6, r5, r0 + sub r2, #0x34 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r5, r2] + ldr r3, [r6, #0x4] + blx _ll_mul + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + ldr r2, _020307A0 ; =0x000005F8 + str r0, [r5, r2] + mov r2, #0x0 + str r1, [r6, #0x4] + lsr r0, r1, #0x1e + lsl r1, r2, #0x2 + orr r1, r0 + cmp r1, #0x3 + bhi _02030746 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02030730: ; jump table (using 16-bit offset) + .short _02030738 - _02030730 - 2; case 0 + .short _0203073C - _02030730 - 2; case 1 + .short _02030740 - _02030730 - 2; case 2 + .short _02030744 - _02030730 - 2; case 3 +_02030738: + mov r4, #0x20 + b _02030746 +_0203073C: + mov r4, #0x10 + b _02030746 +_02030740: + mov r4, #0x40 + b _02030746 +_02030744: + mov r4, #0x80 +_02030746: + ldr r0, _02030798 ; =0x021C59F4 + ldr r5, [r0, #0x4] + ldr r0, _020307A0 ; =0x000005F8 + add r6, r5, r0 + ldr r0, [r6, #0x8] + ldr r1, [r6, #0xc] + ldr r2, [r6, #0x0] + ldr r3, [r6, #0x4] + blx _ll_mul + ldr r3, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r3, r0 + adc r2, r1 + ldr r1, _020307A0 ; =0x000005F8 + mov r3, #0x0 + str r0, [r5, r1] + str r2, [r6, #0x4] + lsr r0, r2, #0x1c + lsl r2, r3, #0x4 + orr r2, r0 + add r0, r1, #0x0 + add r0, #0x35 + strb r2, [r5, r0] + ldr r0, _02030798 ; =0x021C59F4 + add r1, #0x36 + ldr r0, [r0, #0x4] + strh r4, [r0, r1] +_0203077E: + ldr r2, _02030798 ; =0x021C59F4 + ldr r1, _020307A4 ; =0x00000628 + ldr r5, [r2, #0x4] + mov r0, #0xf0 + ldrh r3, [r5, r1] + bic r3, r0 + strh r3, [r5, r1] + ldr r2, [r2, #0x4] + ldrh r0, [r2, r1] + add r0, r0, r4 + strh r0, [r2, r1] +_02030794: + pop {r3-r7, pc} + nop +_02030798: .word 0x021C59F4 +_0203079C: .word 0x0000062C +_020307A0: .word 0x000005F8 +_020307A4: .word 0x00000628 + + thumb_func_start FUN_020307A8 +FUN_020307A8: ; 0x020307A8 + ldr r0, _020307B4 ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _020307B8 ; =0x0000062C + strb r2, [r1, r0] + bx lr + .balign 4 +_020307B4: .word 0x021C59F4 +_020307B8: .word 0x0000062C + + thumb_func_start FUN_020307BC +FUN_020307BC: ; 0x020307BC + ldr r0, _020307C8 ; =0x021C59F4 + mov r2, #0x2 + ldr r1, [r0, #0x4] + ldr r0, _020307CC ; =0x0000062C + strb r2, [r1, r0] + bx lr + .balign 4 +_020307C8: .word 0x021C59F4 +_020307CC: .word 0x0000062C + + thumb_func_start FUN_020307D0 +FUN_020307D0: ; 0x020307D0 + ldr r0, _020307DC ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _020307E0 ; =0x0000062C + strb r2, [r1, r0] + bx lr + .balign 4 +_020307DC: .word 0x021C59F4 +_020307E0: .word 0x0000062C + + thumb_func_start FUN_020307E4 +FUN_020307E4: ; 0x020307E4 + push {r4-r7} + ldr r4, _02030868 ; =0x021C59F4 + lsl r6, r1, #0x1 + ldr r2, [r4, #0x4] + mov r5, #0x0 + add r3, r2, r6 + mov r2, #0x61 + lsl r2, r2, #0x4 + strh r5, [r3, r2] + ldrb r5, [r0, #0x0] + mov r3, #0x10 + add r7, r5, #0x0 + and r7, r3 + cmp r7, #0x10 + bne _02030860 + mov r7, #0xc + and r5, r7 + lsl r5, r5, #0x18 + lsr r5, r5, #0x18 + bne _0203081A + ldr r3, [r4, #0x4] + add r4, r3, r2 + ldrh r3, [r4, r6] + mov r2, #0x40 + orr r2, r3 + strh r2, [r4, r6] + b _0203084C +_0203081A: + cmp r5, #0x4 + bne _0203082C + ldr r3, [r4, #0x4] + add r4, r3, r2 + ldrh r3, [r4, r6] + mov r2, #0x80 + orr r2, r3 + strh r2, [r4, r6] + b _0203084C +_0203082C: + cmp r5, #0x8 + bne _0203083E + ldr r3, [r4, #0x4] + add r4, r3, r2 + ldrh r3, [r4, r6] + mov r2, #0x20 + orr r2, r3 + strh r2, [r4, r6] + b _0203084C +_0203083E: + cmp r5, #0xc + bne _0203084C + ldr r4, [r4, #0x4] + add r4, r4, r2 + ldrh r2, [r4, r6] + orr r2, r3 + strh r2, [r4, r6] +_0203084C: + ldrb r0, [r0, #0x0] + asr r2, r0, #0x5 + mov r0, #0x7 + and r2, r0 + ldr r0, _02030868 ; =0x021C59F4 + ldr r0, [r0, #0x4] + add r1, r0, r1 + mov r0, #0x62 + lsl r0, r0, #0x4 + strb r2, [r1, r0] +_02030860: + mov r0, #0x1 + pop {r4-r7} + bx lr + nop +_02030868: .word 0x021C59F4 + + thumb_func_start FUN_0203086C +FUN_0203086C: ; 0x0203086C + bx lr + .balign 4 + + thumb_func_start FUN_02030870 +FUN_02030870: ; 0x02030870 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0203091C ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02030920 ; =0x0000062A + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _02030884 + mov r0, #0x0 + pop {r4, pc} +_02030884: + bl FUN_02030FE0 + cmp r0, #0x0 + bne _02030890 + mov r0, #0x0 + pop {r4, pc} +_02030890: + ldr r0, _0203091C ; =0x021C59F4 + ldr r2, [r0, #0x4] + ldr r0, _02030924 ; =0x00000681 + ldrb r1, [r2, r0] + cmp r1, #0x0 + beq _020308A0 + sub r1, r1, #0x1 + strb r1, [r2, r0] +_020308A0: + ldr r1, _0203091C ; =0x021C59F4 + ldr r0, _02030928 ; =0x00000628 + ldr r2, [r1, #0x4] + mov r3, #0x40 + ldrh r2, [r2, r0] + tst r3, r2 + beq _020308C0 + ldrb r3, [r4, #0x0] + mov r2, #0x10 + add r0, #0x59 + orr r2, r3 + strb r2, [r4, #0x0] + ldr r1, [r1, #0x4] + mov r2, #0x8 + strb r2, [r1, r0] + b _02030906 +_020308C0: + mov r3, #0x80 + tst r3, r2 + beq _020308D8 + ldrb r3, [r4, #0x0] + mov r2, #0x14 + add r0, #0x59 + orr r2, r3 + strb r2, [r4, #0x0] + ldr r1, [r1, #0x4] + mov r2, #0x8 + strb r2, [r1, r0] + b _02030906 +_020308D8: + mov r3, #0x20 + tst r3, r2 + beq _020308F0 + ldrb r3, [r4, #0x0] + mov r2, #0x18 + add r0, #0x59 + orr r2, r3 + strb r2, [r4, #0x0] + ldr r1, [r1, #0x4] + mov r2, #0x8 + strb r2, [r1, r0] + b _02030906 +_020308F0: + mov r3, #0x10 + tst r2, r3 + beq _02030906 + ldrb r3, [r4, #0x0] + mov r2, #0x1c + add r0, #0x59 + orr r2, r3 + strb r2, [r4, #0x0] + ldr r1, [r1, #0x4] + mov r2, #0x8 + strb r2, [r1, r0] +_02030906: + ldr r0, _0203091C ; =0x021C59F4 + ldrb r2, [r4, #0x0] + ldr r1, [r0, #0x4] + ldr r0, _0203092C ; =0x0000062B + ldrb r0, [r1, r0] + lsl r0, r0, #0x5 + orr r0, r2 + strb r0, [r4, #0x0] + mov r0, #0x0 + pop {r4, pc} + nop +_0203091C: .word 0x021C59F4 +_02030920: .word 0x0000062A +_02030924: .word 0x00000681 +_02030928: .word 0x00000628 +_0203092C: .word 0x0000062B + + thumb_func_start FUN_02030930 +FUN_02030930: ; 0x02030930 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02031228 + add r5, r0, #0x0 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + ldr r0, _020309F0 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _020309F4 ; =0x00000684 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02030960 + mov r0, #0x0 + b _02030962 +_02030960: + mov r0, #0x1 +_02030962: + strb r0, [r4, #0x0] + bl FUN_0202FA28 + cmp r0, #0x0 + bne _02030972 + add r0, r4, #0x0 + bl FUN_02030870 +_02030972: + ldr r1, _020309F0 ; =0x021C59F4 + ldr r0, _020309F4 ; =0x00000684 + ldr r2, [r1, #0x4] + mov r3, #0x0 + strb r3, [r2, r0] + ldr r1, [r1, #0x4] + ldr r0, _020309F8 ; =0x0000054C + add r0, r1, r0 + bl FUN_0202D4E4 + cmp r0, #0x0 + beq _0203099E + ldrb r1, [r4, #0x0] + mov r0, #0x2 + orr r0, r1 + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x0] + cmp r0, #0x2 + bne _020309E8 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_0203099E: + sub r0, r5, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x1 + str r0, [sp, #0x0] + ldr r0, _020309F0 ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _020309F8 ; =0x0000054C + add r0, r1, r0 + add r1, sp, #0x0 + bl FUN_0202D760 + cmp r0, #0x0 + bne _020309C4 + ldr r0, _020309F0 ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _020309F4 ; =0x00000684 + strb r2, [r1, r0] +_020309C4: + bl FUN_0202FA28 + cmp r0, #0x1 + bne _020309E8 + ldr r2, _020309F0 ; =0x021C59F4 + ldr r1, _020309FC ; =0x0000065E + ldr r3, [r2, #0x4] + ldrb r0, [r3, r1] + add r0, r0, #0x1 + strb r0, [r3, r1] + ldr r2, [r2, #0x4] + ldrb r0, [r4, #0x0] + ldrb r1, [r2, r1] + lsl r2, r1, #0x4 + mov r1, #0xf0 + and r1, r2 + orr r0, r1 + strb r0, [r4, #0x0] +_020309E8: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + nop +_020309F0: .word 0x021C59F4 +_020309F4: .word 0x00000684 +_020309F8: .word 0x0000054C +_020309FC: .word 0x0000065E + + thumb_func_start FUN_02030A00 +FUN_02030A00: ; 0x02030A00 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + mov r0, #0xb + strb r0, [r4, #0x0] + ldr r0, _02030A6C ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02030A70 ; =0x00000685 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02030A1A + mov r0, #0x0 + b _02030A1C +_02030A1A: + mov r0, #0x1 +_02030A1C: + strb r0, [r4, #0x1] + bl FUN_0202CB8C + asr r1, r0, #0x8 + strb r1, [r4, #0x2] + strb r0, [r4, #0x3] + mov r0, #0xbb + str r0, [sp, #0x4] + add r0, r4, #0x5 + str r0, [sp, #0x0] + ldr r0, _02030A6C ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02030A74 ; =0x0000056C + add r0, r1, r0 + add r1, sp, #0x0 + bl FUN_0202D760 + cmp r0, #0x0 + beq _02030A5A + ldr r0, _02030A6C ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02030A70 ; =0x00000685 + strb r2, [r1, r0] + ldr r1, [sp, #0x4] + mov r0, #0xbb + sub r0, r0, r1 + add sp, #0x8 + strb r0, [r4, #0x4] + pop {r4, pc} +_02030A5A: + ldr r0, _02030A6C ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _02030A70 ; =0x00000685 + strb r2, [r1, r0] + mov r0, #0xbb + strb r0, [r4, #0x4] + add sp, #0x8 + pop {r4, pc} + .balign 4 +_02030A6C: .word 0x021C59F4 +_02030A70: .word 0x00000685 +_02030A74: .word 0x0000056C + + thumb_func_start FUN_02030A78 +FUN_02030A78: ; 0x02030A78 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _02030A9C + bl FUN_02031280 + cmp r0, #0x0 + bne _02030A9C + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02030A9C: + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, _02030AD4 ; =0x021C59F4 + add r2, r4, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02030AD8 ; =0x0000054C + add r3, r6, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + bl FUN_0202D684 + cmp r0, #0x0 + beq _02030AC0 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02030AC0: + bl FUN_02033534 + cmp r0, #0xa + bne _02030ACC + bl FUN_02031454 +_02030ACC: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + nop +_02030AD4: .word 0x021C59F4 +_02030AD8: .word 0x0000054C + + thumb_func_start FUN_02030ADC +FUN_02030ADC: ; 0x02030ADC + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _02030B00 + bl FUN_02031280 + cmp r0, #0x0 + bne _02030B00 + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02030B00: + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _02030B34 ; =0x021C59F4 + add r2, r4, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02030B38 ; =0x0000054C + add r3, r6, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + bl FUN_0202D684 + cmp r0, #0x0 + beq _02030B22 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02030B22: + bl FUN_02033534 + cmp r0, #0xa + bne _02030B2E + bl FUN_02031454 +_02030B2E: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_02030B34: .word 0x021C59F4 +_02030B38: .word 0x0000054C + + thumb_func_start FUN_02030B3C +FUN_02030B3C: ; 0x02030B3C + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _02030B58 + bl ErrorHandling + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02030B58: + mov r0, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + bne _02030B70 + bl FUN_02031280 + cmp r0, #0x0 + bne _02030B70 + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02030B70: + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02030B86 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02030A78 + add sp, #0x8 + pop {r4-r6, pc} +_02030B86: + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, _02030BBC ; =0x021C59F4 + add r2, r4, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02030BC0 ; =0x0000056C + add r3, r6, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + bl FUN_0202D684 + cmp r0, #0x0 + beq _02030BAA + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02030BAA: + bl FUN_02033534 + cmp r0, #0xa + bne _02030BB6 + bl FUN_02031454 +_02030BB6: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_02030BBC: .word 0x021C59F4 +_02030BC0: .word 0x0000056C + + thumb_func_start FUN_02030BC4 +FUN_02030BC4: ; 0x02030BC4 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _02030BE0 + bl FUN_02031454 + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02030BE0: + mov r0, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + bne _02030BF8 + bl FUN_02031280 + cmp r0, #0x0 + bne _02030BF8 + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02030BF8: + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02030C0E + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02030ADC + add sp, #0x8 + pop {r4-r6, pc} +_02030C0E: + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _02030C44 ; =0x021C59F4 + add r2, r4, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02030C48 ; =0x0000056C + add r3, r6, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + bl FUN_0202D684 + cmp r0, #0x0 + beq _02030C30 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02030C30: + bl FUN_02033534 + cmp r0, #0xa + bne _02030C3C + bl FUN_02031454 +_02030C3C: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + nop +_02030C44: .word 0x021C59F4 +_02030C48: .word 0x0000056C + + thumb_func_start FUN_02030C4C +FUN_02030C4C: ; 0x02030C4C + ldr r3, _02030C54 ; =FUN_02030BC4 + mov r2, #0x0 + bx r3 + nop +_02030C54: .word FUN_02030BC4 + + thumb_func_start FUN_02030C58 +FUN_02030C58: ; 0x02030C58 + ldr r0, _02030C64 ; =0x021C59F4 + ldr r3, _02030C68 ; =FUN_0202D498 + ldr r1, [r0, #0x4] + ldr r0, _02030C6C ; =0x00000464 + add r0, r1, r0 + bx r3 + .balign 4 +_02030C64: .word 0x021C59F4 +_02030C68: .word FUN_0202D498 +_02030C6C: .word 0x00000464 + + thumb_func_start FUN_02030C70 +FUN_02030C70: ; 0x02030C70 + push {r4, lr} + ldr r4, [sp, #0x8] + bl FUN_0202D934 + mov r0, #0xee + strb r0, [r4, #0xa] + ldr r0, _02030C88 ; =0x0000FFFF + strh r0, [r4, #0x8] + mov r0, #0x0 + str r0, [r4, #0x4] + str r0, [r4, #0x0] + pop {r4, pc} + .balign 4 +_02030C88: .word 0x0000FFFF + + thumb_func_start FUN_02030C8C +FUN_02030C8C: ; 0x02030C8C + push {r4-r7, lr} + sub sp, #0x14 + add r6, r0, #0x0 + str r1, [sp, #0x4] + str r2, [sp, #0x8] + ldr r5, [sp, #0x28] + bl FUN_0202D478 + cmp r0, #0x0 + beq _02030D94 +_02030CA0: + ldrb r7, [r5, #0xa] + cmp r7, #0xee + bne _02030CB2 + add r0, r6, #0x0 + bl FUN_0202D41C + add r7, r0, #0x0 + cmp r7, #0xee + beq _02030D8A +_02030CB2: + mov r0, #0x4 + ldrsh r0, [r6, r0] + strb r7, [r5, #0xa] + ldrh r4, [r5, #0x8] + str r0, [sp, #0x10] + ldr r0, _02030D98 ; =0x0000FFFF + cmp r4, r0 + bne _02030D06 + add r0, r7, #0x0 + bl FUN_0202D9A0 + add r4, r0, #0x0 + ldr r0, _02030D9C ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02030DA0 ; =0x00000689 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02030D94 + ldr r0, _02030D98 ; =0x0000FFFF + cmp r4, r0 + bne _02030D04 + add r0, r6, #0x0 + bl FUN_0202D478 + cmp r0, #0x1 + bge _02030CEE + ldr r0, [sp, #0x10] + add sp, #0x14 + strh r0, [r6, #0x4] + pop {r4-r7, pc} +_02030CEE: + add r0, r6, #0x0 + bl FUN_0202D41C + lsl r4, r0, #0x8 + add r0, r6, #0x0 + bl FUN_0202D41C + add r4, r4, r0 + mov r0, #0x4 + ldrsh r0, [r6, r0] + str r0, [sp, #0x10] +_02030D04: + strh r4, [r5, #0x8] +_02030D06: + add r0, r7, #0x0 + bl FUN_0202DA04 + cmp r0, #0x0 + beq _02030D5E + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _02030D22 + ldrh r2, [r5, #0x8] + ldr r1, [sp, #0x4] + add r0, r7, #0x0 + bl FUN_0202DA40 + str r0, [r5, #0x4] +_02030D22: + ldr r2, [r5, #0x0] + ldr r1, [sp, #0x8] + add r0, r6, #0x0 + sub r2, r4, r2 + bl FUN_0202D400 + ldr r2, [r5, #0x4] + str r0, [sp, #0xc] + cmp r2, #0x0 + beq _02030D42 + ldr r1, [r5, #0x0] + ldr r0, [sp, #0x8] + add r1, r2, r1 + ldr r2, [sp, #0xc] + blx MI_CpuCopy8 +_02030D42: + ldr r1, [r5, #0x0] + ldr r0, [sp, #0xc] + add r0, r1, r0 + str r0, [r5, #0x0] + cmp r0, r4 + blt _02030D8A + str r5, [sp, #0x0] + ldr r0, [sp, #0x4] + ldr r3, [r5, #0x4] + add r1, r7, #0x0 + add r2, r4, #0x0 + bl FUN_02030C70 + b _02030D8A +_02030D5E: + add r0, r6, #0x0 + bl FUN_0202D478 + cmp r0, r4 + blt _02030D82 + ldr r1, [sp, #0x8] + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0202D400 + ldr r0, [sp, #0x4] + ldr r3, [sp, #0x8] + add r1, r7, #0x0 + add r2, r4, #0x0 + str r5, [sp, #0x0] + bl FUN_02030C70 + b _02030D8A +_02030D82: + ldr r0, [sp, #0x10] + add sp, #0x14 + strh r0, [r6, #0x4] + pop {r4-r7, pc} +_02030D8A: + add r0, r6, #0x0 + bl FUN_0202D478 + cmp r0, #0x0 + bne _02030CA0 +_02030D94: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02030D98: .word 0x0000FFFF +_02030D9C: .word 0x021C59F4 +_02030DA0: .word 0x00000689 + + thumb_func_start FUN_02030DA4 +FUN_02030DA4: ; 0x02030DA4 + push {r3, lr} + ldr r0, _02030DF0 ; =0x021C59F4 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _02030DEE + ldr r0, _02030DF4 ; =0x0000068B + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02030DEE + mov r0, #0x47 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_0202D4BC + ldr r0, _02030DF0 ; =0x021C59F4 + ldr r1, [r0, #0x4] + mov r0, #0x47 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_0202D478 + cmp r0, #0x0 + ble _02030DEE + ldr r0, _02030DF0 ; =0x021C59F4 + mov r2, #0x47 + ldr r3, [r0, #0x4] + ldr r0, _02030DF8 ; =0x000005EC + lsl r2, r2, #0x4 + add r0, r3, r0 + str r0, [sp, #0x0] + add r0, r3, r2 + sub r2, #0x10 + ldr r2, [r3, r2] + mov r1, #0x0 + mov r3, #0x1 + bl FUN_02030C8C +_02030DEE: + pop {r3, pc} + .balign 4 +_02030DF0: .word 0x021C59F4 +_02030DF4: .word 0x0000068B +_02030DF8: .word 0x000005EC + + thumb_func_start FUN_02030DFC +FUN_02030DFC: ; 0x02030DFC + push {r3-r7, lr} + ldr r0, _02030E6C ; =0x021C59F4 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _02030E68 + ldr r0, _02030E70 ; =0x0000068B + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02030E68 + bl FUN_02033534 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r7, r0, #0x1 + mov r4, #0x0 + cmp r7, #0x0 + ble _02030E68 + ldr r6, _02030E6C ; =0x021C59F4 + add r5, r4, #0x0 +_02030E26: + ldr r1, [r6, #0x4] + ldr r0, _02030E74 ; =0x000004E8 + add r0, r1, r0 + add r0, r0, r5 + bl FUN_0202D4BC + ldr r1, [r6, #0x4] + ldr r0, _02030E74 ; =0x000004E8 + add r0, r1, r0 + add r0, r0, r5 + bl FUN_0202D478 + cmp r0, #0x0 + ble _02030E60 + ldr r3, [r6, #0x4] + ldr r0, _02030E78 ; =0x0000058C + mov r2, #0x46 + add r0, r3, r0 + add r0, r0, r5 + str r0, [sp, #0x0] + ldr r0, _02030E74 ; =0x000004E8 + lsl r2, r2, #0x4 + add r0, r3, r0 + ldr r2, [r3, r2] + add r0, r0, r5 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_02030C8C +_02030E60: + add r4, r4, #0x1 + add r5, #0xc + cmp r4, r7 + blt _02030E26 +_02030E68: + pop {r3-r7, pc} + nop +_02030E6C: .word 0x021C59F4 +_02030E70: .word 0x0000068B +_02030E74: .word 0x000004E8 +_02030E78: .word 0x0000058C + + thumb_func_start FUN_02030E7C +FUN_02030E7C: ; 0x02030E7C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02030F14 ; =0x021C59F4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + bne _02030E8C + mov r0, #0x0 + pop {r4, pc} +_02030E8C: + bl FUN_02033534 + cmp r0, #0x13 + blt _02030EC0 + ldr r0, _02030F14 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02030F18 ; =0x00000687 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _02030EBC + bl FUN_021D8018 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02030EBC + cmp r4, #0x0 + bne _02030EB4 + mov r0, #0x1 + pop {r4, pc} +_02030EB4: + cmp r4, #0x1 + bne _02030EBC + mov r0, #0x1 + pop {r4, pc} +_02030EBC: + mov r0, #0x0 + pop {r4, pc} +_02030EC0: + bl FUN_02030F40 + cmp r0, #0x0 + bne _02030ECC + mov r0, #0x0 + pop {r4, pc} +_02030ECC: + bl FUN_0202CBD4 + cmp r0, #0x4 + beq _02030ED8 + mov r0, #0x0 + pop {r4, pc} +_02030ED8: + bl FUN_02031190 + cmp r4, r0 + bne _02030EE4 + mov r0, #0x1 + pop {r4, pc} +_02030EE4: + bl FUN_02031190 + cmp r0, #0x0 + bne _02030EFE + bl FUN_0202CB8C + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r4 + tst r0, r2 + beq _02030F10 + add r0, r1, #0x0 + pop {r4, pc} +_02030EFE: + ldr r0, _02030F14 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02030F1C ; =0x0000065C + ldrh r2, [r1, r0] + mov r0, #0x1 + add r1, r0, #0x0 + lsl r1, r4 + tst r1, r2 + bne _02030F12 +_02030F10: + mov r0, #0x0 +_02030F12: + pop {r4, pc} + .balign 4 +_02030F14: .word 0x021C59F4 +_02030F18: .word 0x00000687 +_02030F1C: .word 0x0000065C + + thumb_func_start FUN_02030F20 +FUN_02030F20: ; 0x02030F20 + push {r3-r5, lr} + mov r4, #0x0 + add r5, r4, #0x0 +_02030F26: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _02030F34 + add r4, r4, #0x1 +_02030F34: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _02030F26 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02030F40 +FUN_02030F40: ; 0x02030F40 + push {r3, lr} + ldr r0, _02030F5C ; =0x021C59F4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _02030F56 + bl FUN_02033534 + cmp r0, #0x13 + blt _02030F56 + mov r0, #0x1 + pop {r3, pc} +_02030F56: + bl FUN_0202EDF8 + pop {r3, pc} + .balign 4 +_02030F5C: .word 0x021C59F4 + + thumb_func_start FUN_02030F60 +FUN_02030F60: ; 0x02030F60 + ldr r1, _02030F6C ; =0x021C59F4 + ldr r2, [r1, #0x4] + ldr r1, _02030F70 ; =0x0000062B + strb r0, [r2, r1] + bx lr + nop +_02030F6C: .word 0x021C59F4 +_02030F70: .word 0x0000062B + + thumb_func_start FUN_02030F74 +FUN_02030F74: ; 0x02030F74 + ldr r1, _02030F84 ; =0x021C59F4 + ldr r1, [r1, #0x4] + add r1, r1, r0 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + bx lr + nop +_02030F84: .word 0x021C59F4 + + thumb_func_start FUN_02030F88 +FUN_02030F88: ; 0x02030F88 + ldr r1, _02030FA4 ; =0x021C59F4 + ldr r2, [r1, #0x4] + cmp r2, #0x0 + bne _02030F94 + mov r0, #0x0 + bx lr +_02030F94: + mov r1, #0x61 + lsl r1, r1, #0x4 + add r3, r2, r1 + lsl r2, r0, #0x1 + ldrh r0, [r3, r2] + mov r1, #0x0 + strh r1, [r3, r2] + bx lr + .balign 4 +_02030FA4: .word 0x021C59F4 + + thumb_func_start FUN_02030FA8 +FUN_02030FA8: ; 0x02030FA8 + ldr r0, _02030FC0 ; =0x021C59F4 + ldr r3, [r0, #0x4] + cmp r3, #0x0 + beq _02030FBC + ldr r1, _02030FC4 ; =0x00000628 + mov r0, #0x2 + ldrh r2, [r3, r1] + lsl r0, r0, #0xe + orr r0, r2 + strh r0, [r3, r1] +_02030FBC: + bx lr + nop +_02030FC0: .word 0x021C59F4 +_02030FC4: .word 0x00000628 + + thumb_func_start FUN_02030FC8 +FUN_02030FC8: ; 0x02030FC8 + ldr r0, _02030FD8 ; =0x021C59F4 + ldr r2, [r0, #0x4] + cmp r2, #0x0 + beq _02030FD6 + ldr r0, _02030FDC ; =0x00000628 + mov r1, #0x0 + strh r1, [r2, r0] +_02030FD6: + bx lr + .balign 4 +_02030FD8: .word 0x021C59F4 +_02030FDC: .word 0x00000628 + + thumb_func_start FUN_02030FE0 +FUN_02030FE0: ; 0x02030FE0 + ldr r0, _02030FF8 ; =0x021C59F4 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _02030FF4 + ldr r0, _02030FFC ; =0x00000628 + ldrh r1, [r1, r0] + mov r0, #0x2 + lsl r0, r0, #0xe + and r0, r1 + bx lr +_02030FF4: + mov r0, #0x1 + bx lr + .balign 4 +_02030FF8: .word 0x021C59F4 +_02030FFC: .word 0x00000628 + + thumb_func_start FUN_02031000 +FUN_02031000: ; 0x02031000 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0202FA28 + cmp r0, #0x1 + bne _02031030 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, _02031050 ; =0x021C59F4 + add r2, r4, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02031054 ; =0x0000054C + add r3, r6, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + bl FUN_0202D684 + add sp, #0x8 + pop {r4-r6, pc} +_02031030: + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, _02031050 ; =0x021C59F4 + add r2, r4, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02031058 ; =0x0000056C + add r3, r6, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + bl FUN_0202D684 + add sp, #0x8 + pop {r4-r6, pc} + nop +_02031050: .word 0x021C59F4 +_02031054: .word 0x0000054C +_02031058: .word 0x0000056C + + thumb_func_start FUN_0203105C +FUN_0203105C: ; 0x0203105C + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _02031080 ; =0x021C59F4 + add r4, r1, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02031084 ; =0x0000054C + add r3, r2, #0x0 + add r0, r1, r0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0202D684 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02031080: .word 0x021C59F4 +_02031084: .word 0x0000054C + + thumb_func_start FUN_02031088 +FUN_02031088: ; 0x02031088 + push {r3, lr} + ldr r0, _02031100 ; =0x021C59F4 + ldr r2, [r0, #0x4] + cmp r2, #0x0 + beq _020310FC + ldr r1, _02031104 ; =0x0000067B + ldrb r0, [r2, r1] + cmp r0, #0x1 + beq _020310A0 + cmp r0, #0x3 + beq _020310D8 + pop {r3, pc} +_020310A0: + bl FUN_0202FA28 + cmp r0, #0x1 + bne _020310B8 + ldr r1, _02031100 ; =0x021C59F4 + mov r0, #0xb + ldr r2, [r1, #0x4] + ldr r1, _02031108 ; =0x0000067C + add r1, r2, r1 + bl FUN_020311D0 + b _020310C8 +_020310B8: + ldr r1, _02031100 ; =0x021C59F4 + mov r0, #0xb + ldr r2, [r1, #0x4] + ldr r1, _02031108 ; =0x0000067C + add r1, r2, r1 + mov r2, #0x1 + bl FUN_02030BC4 +_020310C8: + cmp r0, #0x0 + beq _020310FC + ldr r0, _02031100 ; =0x021C59F4 + mov r2, #0x2 + ldr r1, [r0, #0x4] + ldr r0, _02031104 ; =0x0000067B + strb r2, [r1, r0] + pop {r3, pc} +_020310D8: + add r1, r1, #0x1 + mov r0, #0xc + add r1, r2, r1 + bl FUN_020311D0 + cmp r0, #0x0 + beq _020310FC + ldr r0, _02031100 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02031108 ; =0x0000067C + ldrb r0, [r1, r0] + bl FUN_0202F9E0 + ldr r0, _02031100 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _02031104 ; =0x0000067B + strb r2, [r1, r0] +_020310FC: + pop {r3, pc} + nop +_02031100: .word 0x021C59F4 +_02031104: .word 0x0000067B +_02031108: .word 0x0000067C + + thumb_func_start FUN_0203110C +FUN_0203110C: ; 0x0203110C + push {r4, lr} + add r4, r2, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _0203112A + ldr r1, _0203112C ; =0x021C59F4 + ldr r0, _02031130 ; =0x0000067B + ldr r2, [r1, #0x4] + mov r3, #0x1 + strb r3, [r2, r0] + ldrb r2, [r4, #0x0] + ldr r1, [r1, #0x4] + add r0, r0, #0x1 + strb r2, [r1, r0] +_0203112A: + pop {r4, pc} + .balign 4 +_0203112C: .word 0x021C59F4 +_02031130: .word 0x0000067B + + thumb_func_start FUN_02031134 +FUN_02031134: ; 0x02031134 + push {r4, lr} + add r4, r2, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _02031152 + ldr r1, _02031154 ; =0x021C59F4 + ldrb r3, [r4, #0x0] + ldr r2, [r1, #0x4] + ldr r0, _02031158 ; =0x0000067C + strb r3, [r2, r0] + ldr r1, [r1, #0x4] + mov r2, #0x3 + sub r0, r0, #0x1 + strb r2, [r1, r0] +_02031152: + pop {r4, pc} + .balign 4 +_02031154: .word 0x021C59F4 +_02031158: .word 0x0000067C + + thumb_func_start FUN_0203115C +FUN_0203115C: ; 0x0203115C + push {r4, lr} + add r4, r2, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _02031184 + ldr r0, _02031188 ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _0203118C ; =0x0000067B + ldrb r0, [r1, r0] + cmp r0, #0x2 + bne _02031184 + ldrb r0, [r4, #0x0] + bl FUN_0202F9E0 + ldr r0, _02031188 ; =0x021C59F4 + mov r2, #0x0 + ldr r1, [r0, #0x4] + ldr r0, _0203118C ; =0x0000067B + strb r2, [r1, r0] +_02031184: + pop {r4, pc} + nop +_02031188: .word 0x021C59F4 +_0203118C: .word 0x0000067B + + thumb_func_start FUN_02031190 +FUN_02031190: ; 0x02031190 + push {r3, lr} + ldr r0, _020311CC ; =0x021C59F4 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _020311C6 + bl FUN_02033534 + cmp r0, #0x13 + blt _020311B4 + bl FUN_021D8018 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _020311C6 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} +_020311B4: + bl FUN_02031280 + cmp r0, #0x0 + beq _020311C0 + mov r0, #0x0 + pop {r3, pc} +_020311C0: + bl FUN_0202D19C + pop {r3, pc} +_020311C6: + mov r0, #0x0 + pop {r3, pc} + nop +_020311CC: .word 0x021C59F4 + + thumb_func_start FUN_020311D0 +FUN_020311D0: ; 0x020311D0 + ldr r3, _020311D8 ; =FUN_02030ADC + mov r2, #0x0 + bx r3 + nop +_020311D8: .word FUN_02030ADC + + thumb_func_start FUN_020311DC +FUN_020311DC: ; 0x020311DC + ldr r3, _020311E4 ; =FUN_02030ADC + mov r1, #0x0 + add r2, r1, #0x0 + bx r3 + .balign 4 +_020311E4: .word FUN_02030ADC + + thumb_func_start FUN_020311E8 +FUN_020311E8: ; 0x020311E8 + ldr r3, _020311EC ; =FUN_0202EE24 + bx r3 + .balign 4 +_020311EC: .word FUN_0202EE24 + + thumb_func_start FUN_020311F0 +FUN_020311F0: ; 0x020311F0 + push {r3, lr} + bl FUN_02031280 + cmp r0, #0x0 + beq _020311FE + mov r0, #0x0 + pop {r3, pc} +_020311FE: + ldr r0, _02031220 ; =0x021C59F4 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0203121A + ldr r0, _02031224 ; =0x00000689 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0203121A + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_020334E8 + mov r0, #0x1 + pop {r3, pc} +_0203121A: + bl FUN_0202EE60 + pop {r3, pc} + .balign 4 +_02031220: .word 0x021C59F4 +_02031224: .word 0x00000689 + + thumb_func_start FUN_02031228 +FUN_02031228: ; 0x02031228 + push {r3, lr} + bl FUN_0202D858 + cmp r0, #0x5 + blo _02031236 + mov r0, #0xc + pop {r3, pc} +_02031236: + bl FUN_0202FA28 + cmp r0, #0x0 + bne _02031242 + mov r0, #0xc + pop {r3, pc} +_02031242: + mov r0, #0x26 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02031248 +FUN_02031248: ; 0x02031248 + push {r3, lr} + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D858 + add r0, r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02031258 +FUN_02031258: ; 0x02031258 + push {r3, lr} + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0202D884 + add r0, r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02031268 +FUN_02031268: ; 0x02031268 + ldr r1, _02031278 ; =0x021C59F4 + ldr r2, [r1, #0x4] + cmp r2, #0x0 + beq _02031274 + ldr r1, _0203127C ; =0x00000686 + strb r0, [r2, r1] +_02031274: + bx lr + nop +_02031278: .word 0x021C59F4 +_0203127C: .word 0x00000686 + + thumb_func_start FUN_02031280 +FUN_02031280: ; 0x02031280 + ldr r0, _02031294 ; =0x021C59F4 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0203128E + ldr r0, _02031298 ; =0x00000686 + ldrb r0, [r1, r0] + bx lr +_0203128E: + mov r0, #0x0 + bx lr + nop +_02031294: .word 0x021C59F4 +_02031298: .word 0x00000686 + + thumb_func_start FUN_0203129C +FUN_0203129C: ; 0x0203129C + push {r3, lr} + bl FUN_0202F03C + cmp r0, #0x0 + bne _020312B6 + bl FUN_02031190 + cmp r0, #0x0 + bne _020312B6 + mov r0, #0x2 + add r1, sp, #0x0 + bl FUN_02030C4C +_020312B6: + bl FUN_0202F05C + pop {r3, pc} + + thumb_func_start FUN_020312BC +FUN_020312BC: ; 0x020312BC + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x10 + add r1, sp, #0x4 + bl FUN_0201265C + ldr r0, _02031340 ; =0x021C48B8 + ldr r6, [sp, #0x10] + mov r5, #0x0 + lsr r7, r6, #0x1c + lsl r5, r5, #0x4 + ldr r1, [sp, #0xc] + ldr r0, [r0, #0x2c] + lsl r6, r6, #0x4 + add r3, r1, r0 + ldr r0, [sp, #0x18] + orr r5, r7 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x4] + add r6, r0, r6 + ldr r0, _02031344 ; =0x00000000 + ldr r2, [sp, #0x8] + adc r0, r5 + lsr r5, r6, #0x1b + lsl r0, r0, #0x5 + orr r0, r5 + ldr r5, [sp, #0x0] + lsl r6, r6, #0x5 + add r6, r5, r6 + ldr r5, _02031344 ; =0x00000000 + adc r5, r0 + lsr r0, r6, #0x1b + lsl r5, r5, #0x5 + orr r5, r0 + lsl r0, r6, #0x5 + add r6, r1, r0 + ldr r1, _02031344 ; =0x00000000 + adc r1, r5 + lsr r0, r6, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + lsl r0, r6, #0x6 + add r5, r2, r0 + ldr r2, _02031344 ; =0x00000000 + adc r2, r1 + lsr r0, r5, #0x1a + lsl r1, r2, #0x6 + orr r1, r0 + lsl r0, r5, #0x6 + add r2, r3, r0 + ldr r0, _02031344 ; =0x00000000 + str r2, [r4, #0x0] + adc r0, r1 + str r0, [r4, #0x4] + ldr r1, _02031348 ; =0x6C078965 + ldr r0, _0203134C ; =0x5D588B65 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, _02031350 ; =0x00269EC3 + str r0, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_02031340: .word 0x021C48B8 +_02031344: .word 0x00000000 +_02031348: .word 0x6C078965 +_0203134C: .word 0x5D588B65 +_02031350: .word 0x00269EC3 + + thumb_func_start FUN_02031354 +FUN_02031354: ; 0x02031354 + add r1, r0, #0x0 + ldr r0, _02031364 ; =0x021C59F4 + ldr r3, _02031368 ; =FUN_0202D830 + ldr r2, [r0, #0x4] + ldr r0, _0203136C ; =0x0000056C + add r0, r2, r0 + bx r3 + nop +_02031364: .word 0x021C59F4 +_02031368: .word FUN_0202D830 +_0203136C: .word 0x0000056C + + thumb_func_start FUN_02031370 +FUN_02031370: ; 0x02031370 + ldr r0, _0203137C ; =0x021C59F4 + ldr r3, _02031380 ; =FUN_0202D4E4 + ldr r1, [r0, #0x4] + ldr r0, _02031384 ; =0x0000056C + add r0, r1, r0 + bx r3 + .balign 4 +_0203137C: .word 0x021C59F4 +_02031380: .word FUN_0202D4E4 +_02031384: .word 0x0000056C + + thumb_func_start FUN_02031388 +FUN_02031388: ; 0x02031388 + ldr r0, _02031394 ; =0x021C59F4 + ldr r3, _02031398 ; =FUN_0202D4E4 + ldr r1, [r0, #0x4] + ldr r0, _0203139C ; =0x0000054C + add r0, r1, r0 + bx r3 + .balign 4 +_02031394: .word 0x021C59F4 +_02031398: .word FUN_0202D4E4 +_0203139C: .word 0x0000054C + + thumb_func_start FUN_020313A0 +FUN_020313A0: ; 0x020313A0 + ldr r1, _020313AC ; =0x021C59F4 + ldr r2, [r1, #0x4] + ldr r1, _020313B0 ; =0x00000687 + strb r0, [r2, r1] + bx lr + nop +_020313AC: .word 0x021C59F4 +_020313B0: .word 0x00000687 + + thumb_func_start FUN_020313B4 +FUN_020313B4: ; 0x020313B4 + ldr r2, _020313C4 ; =0x021C59F4 + ldr r2, [r2, #0x4] + cmp r2, #0x0 + beq _020313C2 + add r2, r2, r1 + ldr r1, _020313C8 ; =0x00000677 + strb r0, [r2, r1] +_020313C2: + bx lr + .balign 4 +_020313C4: .word 0x021C59F4 +_020313C8: .word 0x00000677 + + thumb_func_start FUN_020313CC +FUN_020313CC: ; 0x020313CC + ldr r1, _020313E4 ; =0x021C59F4 + ldr r1, [r1, #0x4] + cmp r1, #0x0 + beq _020313E0 + add r2, r1, r0 + ldr r1, _020313E8 ; =0x00000677 + ldrb r1, [r2, r1] + cmp r1, #0xff + beq _020313E0 + add r0, r1, #0x0 +_020313E0: + bx lr + nop +_020313E4: .word 0x021C59F4 +_020313E8: .word 0x00000677 + + thumb_func_start FUN_020313EC +FUN_020313EC: ; 0x020313EC + push {r3, lr} + bl FUN_02033534 + cmp r0, #0x13 + bge _020313FA + mov r0, #0x0 + pop {r3, pc} +_020313FA: + bl FUN_021D8624 + pop {r3, pc} + + thumb_func_start FUN_02031400 +FUN_02031400: ; 0x02031400 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02033534 + cmp r0, #0x13 + blt _02031430 + ldr r2, _02031434 ; =0x021C59F4 + mov r1, #0x63 + ldr r0, [r2, #0x4] + lsl r1, r1, #0x4 + str r4, [r0, r1] + cmp r4, #0x0 + beq _02031430 + ldr r3, [r2, #0x4] + mov r4, #0x0 + add r0, r1, #0x4 + str r4, [r3, r0] + add r0, r1, #0x0 + ldr r3, [r2, #0x4] + add r0, #0x8 + str r4, [r3, r0] + ldr r0, [r2, #0x4] + add r1, #0xc + str r4, [r0, r1] +_02031430: + pop {r4, pc} + nop +_02031434: .word 0x021C59F4 + + thumb_func_start FUN_02031438 +FUN_02031438: ; 0x02031438 + ldr r0, _0203144C ; =0x021C59F4 + ldr r1, [r0, #0x4] + ldr r0, _02031450 ; =0x00000681 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _02031448 + mov r0, #0x1 + bx lr +_02031448: + mov r0, #0x0 + bx lr + .balign 4 +_0203144C: .word 0x021C59F4 +_02031450: .word 0x00000681 + + thumb_func_start FUN_02031454 +FUN_02031454: ; 0x02031454 + ldr r0, _02031460 ; =0x021C59F4 + mov r2, #0x1 + ldr r1, [r0, #0x4] + ldr r0, _02031464 ; =0x00000689 + strb r2, [r1, r0] + bx lr + .balign 4 +_02031460: .word 0x021C59F4 +_02031464: .word 0x00000689 + + thumb_func_start FUN_02031468 +FUN_02031468: ; 0x02031468 + ldr r0, _02031478 ; =0x021C59F4 + ldr r2, [r0, #0x4] + cmp r2, #0x0 + beq _02031476 + ldr r0, _0203147C ; =0x0000068A + mov r1, #0x1 + strb r1, [r2, r0] +_02031476: + bx lr + .balign 4 +_02031478: .word 0x021C59F4 +_0203147C: .word 0x0000068A + + thumb_func_start FUN_02031480 +FUN_02031480: ; 0x02031480 + push {r4, lr} + ldr r1, _020314C8 ; =0x021C59FC + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _0203149C + ldr r1, _020314CC ; =0x00000253 + bl FUN_02016998 + ldr r1, _020314C8 ; =0x021C59FC + ldr r2, _020314CC ; =0x00000253 + str r0, [r1, #0x0] + mov r1, #0x0 + blx MI_CpuFill8 +_0203149C: + ldr r1, _020314C8 ; =0x021C59FC + mov r3, #0x0 + mov r0, #0xff +_020314A2: + ldr r2, [r1, #0x0] + add r2, r2, r3 + add r3, r3, #0x1 + strb r0, [r2, #0x10] + cmp r3, #0x8 + blt _020314A2 + ldr r3, _020314C8 ; =0x021C59FC + mov r1, #0x25 + ldr r2, [r3, #0x0] + lsl r1, r1, #0x4 + strb r0, [r2, r1] + ldr r4, [r3, #0x0] + add r2, r1, #0x1 + strb r0, [r4, r2] + ldr r2, [r3, #0x0] + mov r4, #0x0 + add r0, r1, #0x2 + strb r4, [r2, r0] + pop {r4, pc} + .balign 4 +_020314C8: .word 0x021C59FC +_020314CC: .word 0x00000253 + + thumb_func_start FUN_020314D0 +FUN_020314D0: ; 0x020314D0 + push {r3, lr} + ldr r0, _020314E4 ; =0x021C59FC + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _020314E4 ; =0x021C59FC + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r3, pc} + nop +_020314E4: .word 0x021C59FC + + thumb_func_start FUN_020314E8 +FUN_020314E8: ; 0x020314E8 + ldr r0, _020314F8 ; =0x021C59FC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020314F4 + mov r0, #0x1 + bx lr +_020314F4: + mov r0, #0x0 + bx lr + .balign 4 +_020314F8: .word 0x021C59FC + + thumb_func_start FUN_020314FC +FUN_020314FC: ; 0x020314FC + push {r3-r6, lr} + sub sp, #0x4 + ldrb r1, [r2, #0x0] + add r5, r0, #0x0 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + bl FUN_02031190 + cmp r0, #0x0 + bne _02031556 + add r0, sp, #0x0 + strb r5, [r0, #0x1] + ldrb r1, [r0, #0x0] + strb r1, [r0, #0x2] + add r1, sp, #0x0 + mov r0, #0x12 + add r1, #0x1 + bl FUN_02030C4C + ldr r6, _0203155C ; =0x021C59FC + add r4, sp, #0x0 + ldr r0, [r6, #0x0] + ldrb r1, [r4, #0x0] + add r0, r0, r5 + mov r5, #0x0 + strb r1, [r0, #0x10] +_02031530: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + beq _02031548 + ldr r0, [r6, #0x0] + ldrb r1, [r4, #0x0] + add r0, r0, r5 + ldrb r0, [r0, #0x10] + cmp r1, r0 + bne _02031556 +_02031548: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _02031530 + mov r0, #0x11 + add r1, sp, #0x0 + bl FUN_02030C4C +_02031556: + add sp, #0x4 + pop {r3-r6, pc} + nop +_0203155C: .word 0x021C59FC + + thumb_func_start FUN_02031560 +FUN_02031560: ; 0x02031560 + ldr r0, _02031570 ; =0x021C59FC + ldrb r3, [r2, #0x1] + ldr r1, [r0, #0x0] + ldrb r0, [r2, #0x0] + add r0, r1, r0 + strb r3, [r0, #0x10] + bx lr + nop +_02031570: .word 0x021C59FC + + thumb_func_start FUN_02031574 +FUN_02031574: ; 0x02031574 + ldr r0, _02031584 ; =0x021C59FC + ldrb r2, [r2, #0x0] + ldr r1, [r0, #0x0] + mov r0, #0x25 + lsl r0, r0, #0x4 + strb r2, [r1, r0] + bx lr + nop +_02031584: .word 0x021C59FC + + thumb_func_start FUN_02031588 +FUN_02031588: ; 0x02031588 + ldr r2, _0203159C ; =0x021C59FC + ldr r1, _020315A0 ; =0x00000251 + ldr r3, [r2, #0x0] + strb r0, [r3, r1] + ldr r2, [r2, #0x0] + mov r3, #0x1 + add r0, r1, #0x1 + strb r3, [r2, r0] + bx lr + nop +_0203159C: .word 0x021C59FC +_020315A0: .word 0x00000251 + + thumb_func_start FUN_020315A4 +FUN_020315A4: ; 0x020315A4 + push {r3, lr} + ldr r0, _020315D0 ; =0x021C59FC + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _020315CE + ldr r1, _020315D4 ; =0x00000252 + ldrb r0, [r2, r1] + cmp r0, #0x0 + beq _020315CE + sub r1, r1, #0x1 + mov r0, #0x10 + add r1, r2, r1 + bl FUN_020311D0 + cmp r0, #0x0 + beq _020315CE + ldr r0, _020315D0 ; =0x021C59FC + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _020315D4 ; =0x00000252 + strb r2, [r1, r0] +_020315CE: + pop {r3, pc} + .balign 4 +_020315D0: .word 0x021C59FC +_020315D4: .word 0x00000252 + + thumb_func_start FUN_020315D8 +FUN_020315D8: ; 0x020315D8 + ldr r1, _020315F8 ; =0x021C59FC + ldr r2, [r1, #0x0] + cmp r2, #0x0 + bne _020315E4 + mov r0, #0x1 + bx lr +_020315E4: + mov r1, #0x25 + lsl r1, r1, #0x4 + ldrb r1, [r2, r1] + cmp r1, r0 + bne _020315F2 + mov r0, #0x1 + bx lr +_020315F2: + mov r0, #0x0 + bx lr + nop +_020315F8: .word 0x021C59FC + + thumb_func_start FUN_020315FC +FUN_020315FC: ; 0x020315FC + ldr r1, _02031608 ; =0x021C59FC + ldr r1, [r1, #0x0] + add r0, r1, r0 + ldrb r0, [r0, #0x10] + bx lr + nop +_02031608: .word 0x021C59FC + + thumb_func_start FUN_0203160C +FUN_0203160C: ; 0x0203160C + push {r3-r4} + lsl r4, r0, #0x1 + ldr r0, _02031624 ; =0x021C59FC + ldrb r3, [r2, #0x0] + ldr r1, [r0, #0x0] + strb r3, [r1, r4] + ldr r0, [r0, #0x0] + ldrb r1, [r2, #0x1] + add r0, r0, r4 + strb r1, [r0, #0x1] + pop {r3-r4} + bx lr + .balign 4 +_02031624: .word 0x021C59FC + + thumb_func_start FUN_02031628 +FUN_02031628: ; 0x02031628 + mov r0, #0x2 + bx lr + + thumb_func_start FUN_0203162C +FUN_0203162C: ; 0x0203162C + push {r3, lr} + add r2, sp, #0x0 + strb r0, [r2, #0x0] + strb r1, [r2, #0x1] + mov r0, #0x13 + add r1, sp, #0x0 + bl FUN_020311D0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02031640 +FUN_02031640: ; 0x02031640 + ldr r2, _02031664 ; =0x021C59FC + ldr r3, [r2, #0x0] + cmp r3, #0x0 + bne _0203164E + mov r0, #0x0 + mvn r0, r0 + bx lr +_0203164E: + lsl r2, r0, #0x1 + ldrb r0, [r3, r2] + cmp r1, r0 + bne _0203165C + add r0, r3, r2 + ldrb r0, [r0, #0x1] + bx lr +_0203165C: + mov r0, #0x0 + mvn r0, r0 + bx lr + nop +_02031664: .word 0x021C59FC + + thumb_func_start FUN_02031668 +FUN_02031668: ; 0x02031668 + push {r3-r7, lr} + mov r4, #0x0 + ldr r6, _02031688 ; =0x021C59FC + add r5, r4, #0x0 + add r7, r4, #0x0 +_02031672: + ldr r0, [r6, #0x0] + add r1, r7, #0x0 + add r0, r0, r5 + mov r2, #0x2 + blx MI_CpuFill8 + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, #0x8 + blt _02031672 + pop {r3-r7, pc} + .balign 4 +_02031688: .word 0x021C59FC + + thumb_func_start FUN_0203168C +FUN_0203168C: ; 0x0203168C + push {r3-r4} + mov r4, #0x0 + mov r0, #0x92 + ldr r1, _020316A8 ; =0x021C59FC + add r3, r4, #0x0 + lsl r0, r0, #0x2 +_02031698: + ldr r2, [r1, #0x0] + add r2, r2, r4 + add r4, r4, #0x1 + strb r3, [r2, r0] + cmp r4, #0x8 + blt _02031698 + pop {r3-r4} + bx lr + .balign 4 +_020316A8: .word 0x021C59FC + + thumb_func_start FUN_020316AC +FUN_020316AC: ; 0x020316AC + push {r4, lr} + ldr r2, _020316DC ; =0x021C59FC + ldr r3, [r2, #0x0] + cmp r3, #0x0 + beq _020316D8 + add r4, r0, #0x0 + mov r2, #0x46 + mul r4, r2 + add r3, #0x18 + add r0, r1, #0x0 + add r1, r3, r4 + blx MI_CpuCopy8 + ldr r1, _020316DC ; =0x021C59FC + mov r0, #0x14 + ldr r1, [r1, #0x0] + add r1, #0x18 + add r1, r1, r4 + bl FUN_020311D0 + mov r0, #0x1 + pop {r4, pc} +_020316D8: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_020316DC: .word 0x021C59FC + + thumb_func_start FUN_020316E0 +FUN_020316E0: ; 0x020316E0 + ldr r1, _02031700 ; =0x021C59FC + ldr r3, [r1, #0x0] + mov r1, #0x92 + add r2, r3, r0 + lsl r1, r1, #0x2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _020316FA + mov r1, #0x46 + add r3, #0x18 + mul r1, r0 + add r0, r3, r1 + bx lr +_020316FA: + mov r0, #0x0 + bx lr + nop +_02031700: .word 0x021C59FC + + thumb_func_start FUN_02031704 +FUN_02031704: ; 0x02031704 + push {r3-r5, lr} + ldr r3, _0203172C ; =0x021C59FC + add r1, r0, #0x0 + ldr r0, [r3, #0x0] + mov r5, #0x1 + add r4, r0, r1 + mov r0, #0x92 + lsl r0, r0, #0x2 + strb r5, [r4, r0] + ldr r4, [r3, #0x0] + add r0, r2, #0x0 + mov r2, #0x46 + add r3, r1, #0x0 + add r4, #0x18 + mul r3, r2 + add r1, r4, r3 + blx MI_CpuCopy8 + pop {r3-r5, pc} + nop +_0203172C: .word 0x021C59FC + + thumb_func_start FUN_02031730 +FUN_02031730: ; 0x02031730 + mov r0, #0x46 + bx lr + + thumb_func_start FUN_02031734 +FUN_02031734: ; 0x02031734 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _020317BC ; =0x021C5A00 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020317B8 + bl FUN_0202E49C + mov r0, #0xf + mov r1, #0x50 + bl FUN_02016998 + ldr r1, _020317BC ; =0x021C5A00 + mov r2, #0x50 + str r0, [r1, #0x0] + mov r1, #0x0 + blx MI_CpuFill8 + ldr r0, _020317BC ; =0x021C5A00 + mov r2, #0x32 + ldr r1, [r0, #0x0] + strh r2, [r1, #0x3a] + ldr r1, [r0, #0x0] + mov r2, #0x1 + add r1, #0x43 + strb r2, [r1, #0x0] + ldr r0, [r0, #0x0] + str r5, [r0, #0x28] + add r0, r5, #0x0 + bl FUN_020238F4 + ldr r1, _020317BC ; =0x021C5A00 + ldr r2, [r1, #0x0] + str r0, [r2, #0x2c] + ldr r0, [r1, #0x0] + mov r2, #0x2 + add r0, #0x3c + strb r2, [r0, #0x0] + ldr r0, [r1, #0x0] + mov r2, #0x0 + add r0, #0x3d + strb r2, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, #0x48 + strb r2, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, #0x3f + strb r4, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, #0xc + bl FUN_020312BC + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_0202D8D0 + cmp r4, #0x9 + beq _020317B8 + cmp r4, #0x11 + beq _020317B8 + cmp r4, #0xf + beq _020317B8 + bl FUN_02033E74 +_020317B8: + pop {r3-r5, pc} + nop +_020317BC: .word 0x021C5A00 + + thumb_func_start FUN_020317C0 +FUN_020317C0: ; 0x020317C0 + push {r3, lr} + ldr r0, _0203180C ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0203180A + bl FUN_0202D918 + ldr r0, _0203180C ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020317DC + bl FUN_02016A18 +_020317DC: + ldr r0, _0203180C ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3f + ldrb r0, [r0, #0x0] + cmp r0, #0x13 + blo _020317EE + mov r0, #0x31 + bl FUN_020168D0 +_020317EE: + bl FUN_02033ED0 + bl FUN_0202E4F0 + ldr r0, _0203180C ; =0x021C5A00 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + mov r0, #0xf + bl FUN_020168D0 + ldr r0, _0203180C ; =0x021C5A00 + mov r1, #0x0 + str r1, [r0, #0x0] +_0203180A: + pop {r3, pc} + .balign 4 +_0203180C: .word 0x021C5A00 + + thumb_func_start FUN_02031810 +FUN_02031810: ; 0x02031810 + ldr r0, _02031820 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0203181C + mov r0, #0x1 + bx lr +_0203181C: + mov r0, #0x0 + bx lr + .balign 4 +_02031820: .word 0x021C5A00 + + thumb_func_start FUN_02031824 +FUN_02031824: ; 0x02031824 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02031858 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02031856 + mov r2, #0xe + mov r0, #0x3 + mov r1, #0xf + lsl r2, r2, #0xc + bl FUN_02016828 + add r0, r4, #0x0 + mov r1, #0xa + bl FUN_02031734 + ldr r0, _02031858 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x40 + strb r1, [r0, #0x0] + ldr r0, _0203185C ; =FUN_02031D30 + mov r1, #0x32 + bl FUN_02031D20 +_02031856: + pop {r4, pc} + .balign 4 +_02031858: .word 0x021C5A00 +_0203185C: .word FUN_02031D30 + + thumb_func_start FUN_02031860 +FUN_02031860: ; 0x02031860 + push {r3, lr} + ldr r0, _02031878 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031876 + bl FUN_02031468 + ldr r0, _0203187C ; =FUN_020323CC + mov r1, #0x0 + bl FUN_02031D20 +_02031876: + pop {r3, pc} + .balign 4 +_02031878: .word 0x021C5A00 +_0203187C: .word FUN_020323CC + + thumb_func_start FUN_02031880 +FUN_02031880: ; 0x02031880 + push {r3, lr} + bl FUN_0202FC60 + bl FUN_02031190 + ldr r1, _0203189C ; =0x021C5A00 + ldr r1, [r1, #0x0] + strh r0, [r1, #0x38] + ldr r0, _020318A0 ; =FUN_020321B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + nop +_0203189C: .word 0x021C5A00 +_020318A0: .word FUN_020321B8 + + thumb_func_start FUN_020318A4 +FUN_020318A4: ; 0x020318A4 + ldr r1, _020318B0 ; =0x021C5A00 + ldr r1, [r1, #0x0] + add r1, #0x4f + strb r0, [r1, #0x0] + bx lr + nop +_020318B0: .word 0x021C5A00 + + thumb_func_start FUN_020318B4 +FUN_020318B4: ; 0x020318B4 + ldr r3, _020318BC ; =FUN_02031D20 + ldr r0, _020318C0 ; =FUN_02032028 + mov r1, #0x0 + bx r3 + .balign 4 +_020318BC: .word FUN_02031D20 +_020318C0: .word FUN_02032028 + + thumb_func_start FUN_020318C4 +FUN_020318C4: ; 0x020318C4 + push {r4} + sub sp, #0xc + ldr r4, _0203190C ; =0x020EEC50 + add r3, sp, #0x0 + ldmia r4!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + ldr r0, _02031910 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r0, #0x0 + bne _020318E8 + add sp, #0xc + mov r0, #0x0 + pop {r4} + bx lr +_020318E8: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02031904 +_020318EE: + ldr r0, [r2, #0x0] + cmp r1, r0 + bne _020318FC + add sp, #0xc + mov r0, #0x1 + pop {r4} + bx lr +_020318FC: + add r2, r2, #0x4 + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _020318EE +_02031904: + mov r0, #0x0 + add sp, #0xc + pop {r4} + bx lr + .balign 4 +_0203190C: .word 0x020EEC50 +_02031910: .word 0x021C5A00 + + thumb_func_start FUN_02031914 +FUN_02031914: ; 0x02031914 + ldr r3, _0203191C ; =FUN_02031D20 + ldr r0, _02031920 ; =FUN_02032178 + mov r1, #0x0 + bx r3 + .balign 4 +_0203191C: .word FUN_02031D20 +_02031920: .word FUN_02032178 + + thumb_func_start FUN_02031924 +FUN_02031924: ; 0x02031924 + ldr r0, _02031930 ; =0x021C5A00 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x4c + strb r1, [r0, #0x0] + bx lr + .balign 4 +_02031930: .word 0x021C5A00 + + thumb_func_start FUN_02031934 +FUN_02031934: ; 0x02031934 + push {r3, lr} + bl FUN_0202E49C + ldr r0, _02031944 ; =FUN_02032194 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02031944: .word FUN_02032194 + + thumb_func_start FUN_02031948 +FUN_02031948: ; 0x02031948 + push {r3-r7, lr} + add r6, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _02031980 + ldr r2, _02031984 ; =0x00007080 + mov r0, #0x3 + mov r1, #0xf + bl FUN_02016828 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02031734 + ldr r0, _02031988 ; =0x021C5A00 + ldr r1, [r0, #0x0] + add r1, #0x40 + strb r5, [r1, #0x0] + ldr r0, [r0, #0x0] + mov r1, #0x0 + str r4, [r0, #0x30] + ldr r0, _0203198C ; =FUN_020321D0 + bl FUN_02031D20 +_02031980: + pop {r3-r7, pc} + nop +_02031984: .word 0x00007080 +_02031988: .word 0x021C5A00 +_0203198C: .word FUN_020321D0 + + thumb_func_start FUN_02031990 +FUN_02031990: ; 0x02031990 + push {r3-r7, lr} + add r6, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _020319C8 + ldr r2, _020319CC ; =0x00007080 + mov r0, #0x3 + mov r1, #0xf + bl FUN_02016828 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02031734 + ldr r0, _020319D0 ; =0x021C5A00 + ldr r1, [r0, #0x0] + add r1, #0x40 + strb r5, [r1, #0x0] + ldr r0, [r0, #0x0] + mov r1, #0x0 + str r4, [r0, #0x30] + ldr r0, _020319D4 ; =FUN_0203224C + bl FUN_02031D20 +_020319C8: + pop {r3-r7, pc} + nop +_020319CC: .word 0x00007080 +_020319D0: .word 0x021C5A00 +_020319D4: .word FUN_0203224C + + thumb_func_start FUN_020319D8 +FUN_020319D8: ; 0x020319D8 + ldr r1, _020319E8 ; =0x021C5A00 + ldr r3, _020319EC ; =FUN_02031D20 + ldr r1, [r1, #0x0] + add r1, #0x3e + strb r0, [r1, #0x0] + ldr r0, _020319F0 ; =FUN_02032298 + mov r1, #0x0 + bx r3 + .balign 4 +_020319E8: .word 0x021C5A00 +_020319EC: .word FUN_02031D20 +_020319F0: .word FUN_02032298 + + thumb_func_start FUN_020319F4 +FUN_020319F4: ; 0x020319F4 + push {r3, lr} + bl FUN_0202FCA8 + ldr r0, _02031A04 ; =FUN_02032364 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02031A04: .word FUN_02032364 + + thumb_func_start FUN_02031A08 +FUN_02031A08: ; 0x02031A08 + push {r3, lr} + ldr r0, _02031A1C ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031A1A + ldr r0, _02031A20 ; =FUN_02032440 + mov r1, #0x5 + bl FUN_02031D20 +_02031A1A: + pop {r3, pc} + .balign 4 +_02031A1C: .word 0x021C5A00 +_02031A20: .word FUN_02032440 + + thumb_func_start FUN_02031A24 +FUN_02031A24: ; 0x02031A24 + ldr r3, _02031A28 ; =FUN_0202D298 + bx r3 + .balign 4 +_02031A28: .word FUN_0202D298 + + thumb_func_start FUN_02031A2C +FUN_02031A2C: ; 0x02031A2C + push {r4} + sub sp, #0xc + ldr r4, _02031A74 ; =0x020EEC5C + add r3, sp, #0x0 + ldmia r4!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + ldr r0, _02031A78 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r0, #0x0 + bne _02031A50 + add sp, #0xc + mov r0, #0x0 + pop {r4} + bx lr +_02031A50: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02031A6C +_02031A56: + ldr r0, [r2, #0x0] + cmp r1, r0 + bne _02031A64 + add sp, #0xc + mov r0, #0x1 + pop {r4} + bx lr +_02031A64: + add r2, r2, #0x4 + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _02031A56 +_02031A6C: + mov r0, #0x0 + add sp, #0xc + pop {r4} + bx lr + .balign 4 +_02031A74: .word 0x020EEC5C +_02031A78: .word 0x021C5A00 + + thumb_func_start FUN_02031A7C +FUN_02031A7C: ; 0x02031A7C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02031ABC ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02031ABA + ldr r2, _02031AC0 ; =0x00007080 + mov r0, #0x3 + mov r1, #0xf + bl FUN_02016828 + cmp r0, #0x0 + bne _02031A9A + bl FUN_020335E0 +_02031A9A: + add r0, r4, #0x0 + mov r1, #0x9 + bl FUN_02031734 + ldr r0, _02031ABC ; =0x021C5A00 + mov r2, #0x9 + ldr r1, [r0, #0x0] + add r1, #0x3f + strb r2, [r1, #0x0] + ldr r0, [r0, #0x0] + mov r1, #0x0 + add r0, #0x40 + strb r1, [r0, #0x0] + ldr r0, _02031AC4 ; =FUN_02032478 + bl FUN_02031D20 +_02031ABA: + pop {r4, pc} + .balign 4 +_02031ABC: .word 0x021C5A00 +_02031AC0: .word 0x00007080 +_02031AC4: .word FUN_02032478 + + thumb_func_start FUN_02031AC8 +FUN_02031AC8: ; 0x02031AC8 + push {r3, lr} + ldr r1, _02031AEC ; =0x021C5A00 + ldr r2, [r1, #0x0] + add r2, #0x3e + strb r0, [r2, #0x0] + ldr r0, [r1, #0x0] + mov r2, #0x3 + strh r2, [r0, #0x38] + mov r0, #0x1 + bl FUN_0202D344 + bl FUN_02033E74 + ldr r0, _02031AF0 ; =FUN_02032628 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02031AEC: .word 0x021C5A00 +_02031AF0: .word FUN_02032628 + + thumb_func_start FUN_02031AF4 +FUN_02031AF4: ; 0x02031AF4 + ldr r0, _02031B20 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02031B02 + mov r0, #0x0 + mvn r0, r0 + bx lr +_02031B02: + ldr r1, [r0, #0x24] + ldr r0, _02031B24 ; =FUN_0203279C + cmp r1, r0 + bne _02031B0E + mov r0, #0x1 + bx lr +_02031B0E: + ldr r0, _02031B28 ; =FUN_020327B4 + cmp r1, r0 + bne _02031B18 + mov r0, #0x1 + b _02031B1A +_02031B18: + mov r0, #0x0 +_02031B1A: + neg r0, r0 + bx lr + nop +_02031B20: .word 0x021C5A00 +_02031B24: .word FUN_0203279C +_02031B28: .word FUN_020327B4 + + thumb_func_start FUN_02031B2C +FUN_02031B2C: ; 0x02031B2C + ldr r0, _02031B48 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02031B38 + mov r0, #0x0 + bx lr +_02031B38: + ldr r1, [r0, #0x24] + ldr r0, _02031B4C ; =FUN_020327FC + cmp r1, r0 + bne _02031B44 + mov r0, #0x1 + bx lr +_02031B44: + mov r0, #0x0 + bx lr + .balign 4 +_02031B48: .word 0x021C5A00 +_02031B4C: .word FUN_020327FC + + thumb_func_start FUN_02031B50 +FUN_02031B50: ; 0x02031B50 + push {r3, lr} + mov r0, #0x0 + bl FUN_0202D344 + ldr r0, _02031BC4 ; =0x021C5A00 + ldr r1, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0x44 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _02031B78 + add r0, r1, #0x0 + add r0, #0x45 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _02031B78 + add r1, #0x3f + ldrb r0, [r1, #0x0] + cmp r0, #0x9 + bne _02031B80 +_02031B78: + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_020334E8 +_02031B80: + bl FUN_02033ED0 + ldr r0, _02031BC4 ; =0x021C5A00 + mov r2, #0x9 + ldr r1, [r0, #0x0] + add r1, #0x3f + strb r2, [r1, #0x0] + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r1, #0x48 + strb r2, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, #0x3c + ldrb r0, [r0, #0x0] + bl FUN_0202D1B0 + bl FUN_02031190 + cmp r0, #0x0 + bne _02031BB8 + mov r0, #0x1 + bl FUN_0202D36C + ldr r0, _02031BC8 ; =FUN_020323DC + mov r1, #0xf + bl FUN_02031D20 + pop {r3, pc} +_02031BB8: + ldr r0, _02031BCC ; =FUN_02032424 + mov r1, #0x5 + bl FUN_02031D20 + pop {r3, pc} + nop +_02031BC4: .word 0x021C5A00 +_02031BC8: .word FUN_020323DC +_02031BCC: .word FUN_02032424 + + thumb_func_start FUN_02031BD0 +FUN_02031BD0: ; 0x02031BD0 + ldr r0, _02031BEC ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02031BDC + mov r0, #0x1 + bx lr +_02031BDC: + ldr r1, [r0, #0x24] + ldr r0, _02031BF0 ; =FUN_020324F8 + cmp r1, r0 + beq _02031BE8 + mov r0, #0x1 + bx lr +_02031BE8: + mov r0, #0x0 + bx lr + .balign 4 +_02031BEC: .word 0x021C5A00 +_02031BF0: .word FUN_020324F8 + + thumb_func_start FUN_02031BF4 +FUN_02031BF4: ; 0x02031BF4 + push {r3, lr} + ldr r0, _02031C08 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031C06 + ldr r0, _02031C0C ; =FUN_02032440 + mov r1, #0x5 + bl FUN_02031D20 +_02031C06: + pop {r3, pc} + .balign 4 +_02031C08: .word 0x021C5A00 +_02031C0C: .word FUN_02032440 + + thumb_func_start FUN_02031C10 +FUN_02031C10: ; 0x02031C10 + push {r3, lr} + ldr r0, _02031C28 ; =0x021C5A00 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02031C24 + mov r0, #0x1 + add r1, #0x48 + strb r0, [r1, #0x0] + bl FUN_0202D344 +_02031C24: + pop {r3, pc} + nop +_02031C28: .word 0x021C5A00 + + thumb_func_start FUN_02031C2C +FUN_02031C2C: ; 0x02031C2C + push {r3, lr} + ldr r0, _02031C4C ; =0x021C5A00 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02031C48 + mov r0, #0x1 + add r1, #0x48 + strb r0, [r1, #0x0] + bl FUN_0202D344 + ldr r0, _02031C50 ; =FUN_02032850 + mov r1, #0x0 + bl FUN_02031D20 +_02031C48: + pop {r3, pc} + nop +_02031C4C: .word 0x021C5A00 +_02031C50: .word FUN_02032850 + + thumb_func_start FUN_02031C54 +FUN_02031C54: ; 0x02031C54 + ldr r0, _02031C60 ; =0x021C5A00 + mov r1, #0x12 + ldr r0, [r0, #0x0] + add r0, #0x3f + strb r1, [r0, #0x0] + bx lr + .balign 4 +_02031C60: .word 0x021C5A00 + + thumb_func_start FUN_02031C64 +FUN_02031C64: ; 0x02031C64 + ldr r0, _02031C70 ; =0x021C5A00 + mov r1, #0x9 + ldr r0, [r0, #0x0] + add r0, #0x3f + strb r1, [r0, #0x0] + bx lr + .balign 4 +_02031C70: .word 0x021C5A00 + + thumb_func_start FUN_02031C74 +FUN_02031C74: ; 0x02031C74 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _02031C9C + ldr r2, _02031CA0 ; =0x00007080 + mov r0, #0x3 + mov r1, #0xf + bl FUN_02016828 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02031734 + ldr r0, _02031CA4 ; =FUN_02032E00 + mov r1, #0x0 + bl FUN_02031D20 +_02031C9C: + pop {r3-r5, pc} + nop +_02031CA0: .word 0x00007080 +_02031CA4: .word FUN_02032E00 + + thumb_func_start FUN_02031CA8 +FUN_02031CA8: ; 0x02031CA8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _02031CD0 + ldr r2, _02031CD4 ; =0x00007080 + mov r0, #0x3 + mov r1, #0xf + bl FUN_02016828 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02031734 + ldr r0, _02031CD8 ; =FUN_02032E48 + mov r1, #0x0 + bl FUN_02031D20 +_02031CD0: + pop {r3-r5, pc} + nop +_02031CD4: .word 0x00007080 +_02031CD8: .word FUN_02032E48 + + thumb_func_start FUN_02031CDC +FUN_02031CDC: ; 0x02031CDC + push {r3, lr} + ldr r0, _02031D1C ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031CEE + ldr r0, [r0, #0x24] + cmp r0, #0x0 + beq _02031CEE + blx r0 +_02031CEE: + bl FUN_02033590 + cmp r0, #0x0 + beq _02031D04 + blx FUN_021DDB08 + mov r1, #0x3 + sub r0, r1, r0 + bl FUN_02033EEC + pop {r3, pc} +_02031D04: + bl FUN_0202EDF8 + cmp r0, #0x0 + beq _02031D18 + blx WM_GetLinkLevel + mov r1, #0x3 + sub r0, r1, r0 + bl FUN_02033EEC +_02031D18: + pop {r3, pc} + nop +_02031D1C: .word 0x021C5A00 + + thumb_func_start FUN_02031D20 +FUN_02031D20: ; 0x02031D20 + ldr r2, _02031D2C ; =0x021C5A00 + ldr r3, [r2, #0x0] + str r0, [r3, #0x24] + ldr r0, [r2, #0x0] + strh r1, [r0, #0x3a] + bx lr + .balign 4 +_02031D2C: .word 0x021C5A00 + + thumb_func_start FUN_02031D30 +FUN_02031D30: ; 0x02031D30 + push {r3-r5, lr} + ldr r0, _02031DF8 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02031D42 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3-r5, pc} +_02031D42: + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _02031DF6 + ldr r0, _02031DF8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02031DF8 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202DB14 + mov r0, #0x1 + bl FUN_02031268 + bl FUN_02030FA8 + ldr r0, _02031DF8 ; =0x021C5A00 + ldr r1, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0x4a + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031DC8 + add r1, #0x43 + ldrb r1, [r1, #0x0] + mov r0, #0x1 + mov r2, #0x7d + lsl r2, r2, #0x2 + add r3, r0, #0x0 + bl FUN_0202F918 + cmp r0, #0x0 + beq _02031DF6 + ldr r0, _02031DF8 ; =0x021C5A00 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 + add r4, #0xc + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #0xc] + ldr r3, [r4, #0x4] + blx _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #0xc] + str r3, [r4, #0x4] + add r0, r3, #0x0 + mov r1, #0x0 + mov r2, #0x14 + mov r3, #0x0 + blx _ll_mul + mov r0, #0x0 + add r5, #0x43 + strb r0, [r5, #0x0] + ldr r0, _02031DFC ; =FUN_020320C4 + add r1, #0x14 + bl FUN_02031D20 + pop {r3-r5, pc} +_02031DC8: + mov r0, #0x1 + mov r2, #0x7d + add r1, r0, #0x0 + lsl r2, r2, #0x2 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02031DF6 + ldr r0, _02031DF8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x4c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031DEE + ldr r0, _02031E00 ; =FUN_020323B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3-r5, pc} +_02031DEE: + ldr r0, _02031E04 ; =FUN_02031EE0 + mov r1, #0x40 + bl FUN_02031D20 +_02031DF6: + pop {r3-r5, pc} + .balign 4 +_02031DF8: .word 0x021C5A00 +_02031DFC: .word FUN_020320C4 +_02031E00: .word FUN_020323B8 +_02031E04: .word FUN_02031EE0 + + thumb_func_start FUN_02031E08 +FUN_02031E08: ; 0x02031E08 + push {r3-r5, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _02031E7C + mov r0, #0x1 + bl FUN_02031268 + bl FUN_02030FA8 + ldr r0, _02031E80 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x4a + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02031E32 + ldr r0, _02031E84 ; =FUN_02032058 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3-r5, pc} +_02031E32: + mov r2, #0x7d + mov r0, #0x0 + mov r1, #0x1 + lsl r2, r2, #0x2 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02031E7C + ldr r0, _02031E80 ; =0x021C5A00 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 + add r4, #0xc + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #0xc] + ldr r3, [r4, #0x4] + blx _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #0xc] + mov r1, #0x0 + str r3, [r4, #0x4] + lsr r0, r3, #0x1a + lsl r1, r1, #0x6 + orr r1, r0 + ldrh r0, [r5, #0x38] + cmp r0, #0x0 + beq _02031E76 + lsl r1, r0, #0x6 + mov r0, #0x0 + strh r0, [r5, #0x38] +_02031E76: + ldr r0, _02031E88 ; =FUN_02031EE0 + bl FUN_02031D20 +_02031E7C: + pop {r3-r5, pc} + nop +_02031E80: .word 0x021C5A00 +_02031E84: .word FUN_02032058 +_02031E88: .word FUN_02031EE0 + + thumb_func_start FUN_02031E8C +FUN_02031E8C: ; 0x02031E8C + push {r3-r5, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _02031ED6 + mov r0, #0x0 + mov r2, #0x7d + add r1, r0, #0x0 + lsl r2, r2, #0x2 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02031ED6 + ldr r0, _02031ED8 ; =0x021C5A00 + ldr r4, [r0, #0x0] + add r5, r4, #0x0 + add r5, #0xc + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #0xc] + ldr r3, [r5, #0x4] + blx _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + mov r1, #0x0 + lsr r2, r3, #0x1b + lsl r1, r1, #0x5 + orr r1, r2 + ldr r0, _02031EDC ; =FUN_02031EE0 + add r1, #0x10 + str r3, [r5, #0x4] + bl FUN_02031D20 +_02031ED6: + pop {r3-r5, pc} + .balign 4 +_02031ED8: .word 0x021C5A00 +_02031EDC: .word FUN_02031EE0 + + thumb_func_start FUN_02031EE0 +FUN_02031EE0: ; 0x02031EE0 + push {r3, lr} + bl FUN_0202EA54 + ldr r0, _02031F54 ; =0x021C5A00 + ldr r1, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0x4f + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02031F50 + add r1, #0x4b + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + bne _02031F50 + bl FUN_0202E8F4 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02031F1A + ldr r1, _02031F54 ; =0x021C5A00 + ldr r1, [r1, #0x0] + add r1, #0x3e + strb r0, [r1, #0x0] + ldr r0, _02031F58 ; =FUN_02031F60 + mov r1, #0x20 + bl FUN_02031D20 + pop {r3, pc} +_02031F1A: + ldr r0, _02031F54 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02031F2A + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_02031F2A: + bl FUN_0202E950 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02031F48 + ldr r1, _02031F54 ; =0x021C5A00 + ldr r1, [r1, #0x0] + add r1, #0x3e + strb r0, [r1, #0x0] + ldr r0, _02031F58 ; =FUN_02031F60 + mov r1, #0x20 + bl FUN_02031D20 + pop {r3, pc} +_02031F48: + ldr r0, _02031F5C ; =FUN_02032028 + mov r1, #0x0 + bl FUN_02031D20 +_02031F50: + pop {r3, pc} + nop +_02031F54: .word 0x021C5A00 +_02031F58: .word FUN_02031F60 +_02031F5C: .word FUN_02032028 + + thumb_func_start FUN_02031F60 +FUN_02031F60: ; 0x02031F60 + push {r3, lr} + bl FUN_0202EA54 + ldr r0, _02031FBC ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202E8A0 + cmp r0, #0x0 + beq _02031F90 + ldr r0, _02031FBC ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202FB18 + cmp r0, #0x0 + beq _02031F90 + ldr r0, _02031FC0 ; =FUN_02031FC8 + mov r1, #0x64 + bl FUN_02031D20 + pop {r3, pc} +_02031F90: + bl FUN_020311F0 + cmp r0, #0x0 + beq _02031FA2 + ldr r0, _02031FC4 ; =FUN_02032028 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02031FA2: + ldr r0, _02031FBC ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02031FB2 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_02031FB2: + ldr r0, _02031FC4 ; =FUN_02032028 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02031FBC: .word 0x021C5A00 +_02031FC0: .word FUN_02031FC8 +_02031FC4: .word FUN_02032028 + + thumb_func_start FUN_02031FC8 +FUN_02031FC8: ; 0x02031FC8 + push {r3, lr} + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _02031FEE + bl FUN_0202FC60 + mov r0, #0x0 + bl FUN_02031268 + bl FUN_02030FA8 + ldr r0, _0203201C ; =FUN_0203213C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02031FEE: + bl FUN_020311F0 + cmp r0, #0x0 + beq _02032000 + ldr r0, _02032020 ; =FUN_02032028 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032000: + ldr r0, _02032024 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02032010 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_02032010: + ldr r0, _02032020 ; =FUN_02032028 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + nop +_0203201C: .word FUN_0203213C +_02032020: .word FUN_02032028 +_02032024: .word 0x021C5A00 + + thumb_func_start FUN_02032028 +FUN_02032028: ; 0x02032028 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203203A + ldr r0, _0203203C ; =FUN_02032058 + mov r1, #0x0 + bl FUN_02031D20 +_0203203A: + pop {r3, pc} + .balign 4 +_0203203C: .word FUN_02032058 + + thumb_func_start FUN_02032040 +FUN_02032040: ; 0x02032040 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _02032052 + ldr r0, _02032054 ; =FUN_02031E8C + mov r1, #0x0 + bl FUN_02031D20 +_02032052: + pop {r3, pc} + .balign 4 +_02032054: .word FUN_02031E8C + + thumb_func_start FUN_02032058 +FUN_02032058: ; 0x02032058 + push {r3-r5, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _020320BA + mov r0, #0x1 + bl FUN_02031268 + ldr r1, _020320BC ; =0x021C5A00 + mov r2, #0x7d + ldr r1, [r1, #0x0] + mov r0, #0x0 + add r1, #0x43 + ldrb r1, [r1, #0x0] + lsl r2, r2, #0x2 + mov r3, #0x1 + bl FUN_0202F918 + cmp r0, #0x0 + beq _020320BA + ldr r0, _020320BC ; =0x021C5A00 + ldr r5, [r0, #0x0] + add r4, r5, #0x0 + add r4, #0xc + ldr r0, [r4, #0x8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #0xc] + ldr r3, [r4, #0x4] + blx _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #0xc] + str r3, [r4, #0x4] + add r0, r3, #0x0 + mov r1, #0x0 + mov r2, #0x14 + mov r3, #0x0 + blx _ll_mul + mov r0, #0x0 + add r5, #0x43 + strb r0, [r5, #0x0] + ldr r0, _020320C0 ; =FUN_020320C4 + add r1, #0x14 + bl FUN_02031D20 +_020320BA: + pop {r3-r5, pc} + .balign 4 +_020320BC: .word 0x021C5A00 +_020320C0: .word FUN_020320C4 + + thumb_func_start FUN_020320C4 +FUN_020320C4: ; 0x020320C4 + push {r3, lr} + bl FUN_020311E8 + cmp r0, #0x0 + beq _020320E2 + ldr r0, _0203210C ; =0x021C5A00 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] + ldr r0, _02032110 ; =FUN_02032118 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020320E2: + ldr r0, _0203210C ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _020320F2 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_020320F2: + add r1, #0x4a + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + bne _0203210A + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203210A + ldr r0, _02032114 ; =FUN_02032040 + mov r1, #0x2 + bl FUN_02031D20 +_0203210A: + pop {r3, pc} + .balign 4 +_0203210C: .word 0x021C5A00 +_02032110: .word FUN_02032118 +_02032114: .word FUN_02032040 + + thumb_func_start FUN_02032118 +FUN_02032118: ; 0x02032118 + push {r3, lr} + mov r0, #0x0 + bl FUN_02031268 + mov r0, #0x1 + bl FUN_0202EE84 + bl FUN_02030FA8 + ldr r0, _02032134 ; =FUN_02032138 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02032134: .word FUN_02032138 + + thumb_func_start FUN_02032138 +FUN_02032138: ; 0x02032138 + bx lr + .balign 4 + + thumb_func_start FUN_0203213C +FUN_0203213C: ; 0x0203213C + bx lr + .balign 4 + + thumb_func_start FUN_02032140 +FUN_02032140: ; 0x02032140 + push {r3, lr} + ldr r0, _02032170 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3f + ldrb r0, [r0, #0x0] + cmp r0, #0x13 + bhs _02032166 + bl FUN_0202EE0C + cmp r0, #0x0 + beq _0203216E + mov r0, #0x1 + bl FUN_02031268 + bl FUN_02030FA8 + mov r0, #0x1 + bl FUN_0202E7B0 +_02032166: + ldr r0, _02032174 ; =FUN_020323B8 + mov r1, #0x0 + bl FUN_02031D20 +_0203216E: + pop {r3, pc} + .balign 4 +_02032170: .word 0x021C5A00 +_02032174: .word FUN_020323B8 + + thumb_func_start FUN_02032178 +FUN_02032178: ; 0x02032178 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203218E + bl FUN_0202FC60 + ldr r0, _02032190 ; =FUN_02032140 + mov r1, #0x0 + bl FUN_02031D20 +_0203218E: + pop {r3, pc} + .balign 4 +_02032190: .word FUN_02032140 + + thumb_func_start FUN_02032194 +FUN_02032194: ; 0x02032194 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _020321B0 + mov r0, #0x0 + bl FUN_0202E7B0 + bl FUN_0202FC60 + ldr r0, _020321B4 ; =FUN_02031E08 + mov r1, #0x0 + bl FUN_02031D20 +_020321B0: + pop {r3, pc} + nop +_020321B4: .word FUN_02031E08 + + thumb_func_start FUN_020321B8 +FUN_020321B8: ; 0x020321B8 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _020321CA + ldr r0, _020321CC ; =FUN_02031E08 + mov r1, #0x0 + bl FUN_02031D20 +_020321CA: + pop {r3, pc} + .balign 4 +_020321CC: .word FUN_02031E08 + + thumb_func_start FUN_020321D0 +FUN_020321D0: ; 0x020321D0 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _0203220C + ldr r0, _02032210 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02032210 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x28] + ldr r1, [r1, #0x30] + bl FUN_0202DB14 + mov r0, #0x1 + add r1, r0, #0x0 + lsl r2, r0, #0x9 + add r3, r0, #0x0 + bl FUN_0202F918 + cmp r0, #0x0 + beq _0203220C + bl FUN_0202FA10 + ldr r0, _02032214 ; =FUN_02032218 + mov r1, #0x0 + bl FUN_02031D20 +_0203220C: + pop {r3, pc} + nop +_02032210: .word 0x021C5A00 +_02032214: .word FUN_02032218 + + thumb_func_start FUN_02032218 +FUN_02032218: ; 0x02032218 + push {r3, lr} + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0203222E + ldr r0, _02032230 ; =FUN_02032234 + mov r1, #0x0 + bl FUN_02031D20 +_0203222E: + pop {r3, pc} + .balign 4 +_02032230: .word FUN_02032234 + + thumb_func_start FUN_02032234 +FUN_02032234: ; 0x02032234 + push {r3, lr} + bl FUN_02030F40 + cmp r0, #0x0 + bne _02032246 + ldr r0, _02032248 ; =FUN_020323BC + mov r1, #0x0 + bl FUN_02031D20 +_02032246: + pop {r3, pc} + .balign 4 +_02032248: .word FUN_020323BC + + thumb_func_start FUN_0203224C +FUN_0203224C: ; 0x0203224C + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _02032286 + ldr r0, _02032288 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02032288 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x28] + ldr r1, [r1, #0x30] + bl FUN_0202DB14 + mov r0, #0x1 + add r1, r0, #0x0 + lsl r2, r0, #0x9 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02032286 + bl FUN_0202FA10 + ldr r0, _0203228C ; =FUN_02032290 + mov r1, #0x0 + bl FUN_02031D20 +_02032286: + pop {r3, pc} + .balign 4 +_02032288: .word 0x021C5A00 +_0203228C: .word FUN_02032290 + + thumb_func_start FUN_02032290 +FUN_02032290: ; 0x02032290 + ldr r3, _02032294 ; =FUN_0202EA54 + bx r3 + .balign 4 +_02032294: .word FUN_0202EA54 + + thumb_func_start FUN_02032298 +FUN_02032298: ; 0x02032298 + push {r3, lr} + bl FUN_0202EA54 + ldr r0, _020322B8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202FB18 + cmp r0, #0x0 + beq _020322B6 + ldr r0, _020322BC ; =FUN_020322C0 + mov r1, #0xa + bl FUN_02031D20 +_020322B6: + pop {r3, pc} + .balign 4 +_020322B8: .word 0x021C5A00 +_020322BC: .word FUN_020322C0 + + thumb_func_start FUN_020322C0 +FUN_020322C0: ; 0x020322C0 + push {r3, lr} + bl FUN_020311F0 + cmp r0, #0x0 + beq _020322D2 + ldr r0, _020322F0 ; =FUN_020322F8 + mov r1, #0x0 + bl FUN_02031D20 +_020322D2: + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _020322EE + bl FUN_02031190 + cmp r0, #0x0 + beq _020322EE + ldr r0, _020322F4 ; =FUN_0203234C + mov r1, #0x0 + bl FUN_02031D20 +_020322EE: + pop {r3, pc} + .balign 4 +_020322F0: .word FUN_020322F8 +_020322F4: .word FUN_0203234C + + thumb_func_start FUN_020322F8 +FUN_020322F8: ; 0x020322F8 + push {r3, lr} + bl FUN_0202E6F0 + ldr r0, _02032308 ; =FUN_0203230C + mov r1, #0x2 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02032308: .word FUN_0203230C + + thumb_func_start FUN_0203230C +FUN_0203230C: ; 0x0203230C + push {r3, lr} + ldr r0, _02032344 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _0203231E + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_0203231E: + bl FUN_0202EE0C + cmp r0, #0x0 + beq _02032340 + mov r1, #0x1 + mov r0, #0x0 + lsl r2, r1, #0x9 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02032340 + bl FUN_0202FA10 + ldr r0, _02032348 ; =FUN_02032298 + mov r1, #0xa + bl FUN_02031D20 +_02032340: + pop {r3, pc} + nop +_02032344: .word 0x021C5A00 +_02032348: .word FUN_02032298 + + thumb_func_start FUN_0203234C +FUN_0203234C: ; 0x0203234C + push {r3, lr} + bl FUN_02030F40 + cmp r0, #0x0 + bne _0203235E + ldr r0, _02032360 ; =FUN_020323BC + mov r1, #0x0 + bl FUN_02031D20 +_0203235E: + pop {r3, pc} + .balign 4 +_02032360: .word FUN_020323BC + + thumb_func_start FUN_02032364 +FUN_02032364: ; 0x02032364 + push {r3, lr} + bl FUN_0202E6F0 + ldr r0, _02032374 ; =FUN_02032378 + mov r1, #0x2 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02032374: .word FUN_02032378 + + thumb_func_start FUN_02032378 +FUN_02032378: ; 0x02032378 + push {r3, lr} + ldr r0, _020323B0 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _0203238A + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_0203238A: + bl FUN_0202EE0C + cmp r0, #0x0 + beq _020323AC + mov r1, #0x1 + mov r0, #0x0 + lsl r2, r1, #0x9 + bl FUN_0202F950 + cmp r0, #0x0 + beq _020323AC + bl FUN_0202FA10 + ldr r0, _020323B4 ; =FUN_02032290 + mov r1, #0xa + bl FUN_02031D20 +_020323AC: + pop {r3, pc} + nop +_020323B0: .word 0x021C5A00 +_020323B4: .word FUN_02032290 + + thumb_func_start FUN_020323B8 +FUN_020323B8: ; 0x020323B8 + bx lr + .balign 4 + + thumb_func_start FUN_020323BC +FUN_020323BC: ; 0x020323BC + push {r3, lr} + bl FUN_02030F40 + cmp r0, #0x0 + bne _020323CA + bl FUN_020317C0 +_020323CA: + pop {r3, pc} + + thumb_func_start FUN_020323CC +FUN_020323CC: ; 0x020323CC + ldr r3, _020323D4 ; =FUN_02031D20 + ldr r0, _020323D8 ; =FUN_02032440 + mov r1, #0x5 + bx r3 + .balign 4 +_020323D4: .word FUN_02031D20 +_020323D8: .word FUN_02032440 + + thumb_func_start FUN_020323DC +FUN_020323DC: ; 0x020323DC + push {r3, lr} + bl FUN_02030F20 + cmp r0, #0x1 + bgt _020323F8 + mov r0, #0x0 + bl FUN_0202D36C + bl FUN_0202FC80 + ldr r0, _0203241C ; =FUN_020324F8 + mov r1, #0x0 + bl FUN_02031D20 +_020323F8: + ldr r0, _02032420 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02032408 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_02032408: + mov r0, #0x0 + bl FUN_0202D36C + bl FUN_0202FC80 + ldr r0, _0203241C ; =FUN_020324F8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_0203241C: .word FUN_020324F8 +_02032420: .word 0x021C5A00 + + thumb_func_start FUN_02032424 +FUN_02032424: ; 0x02032424 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203243A + bl FUN_0202FC60 + ldr r0, _0203243C ; =FUN_020324F8 + mov r1, #0x0 + bl FUN_02031D20 +_0203243A: + pop {r3, pc} + .balign 4 +_0203243C: .word FUN_020324F8 + + thumb_func_start FUN_02032440 +FUN_02032440: ; 0x02032440 + push {r3, lr} + ldr r0, _02032470 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02032450 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] +_02032450: + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203246E + ldr r0, _02032470 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3a] + cmp r0, #0x0 + bne _0203246E + bl FUN_0202FA5C + ldr r0, _02032474 ; =FUN_020323BC + mov r1, #0x0 + bl FUN_02031D20 +_0203246E: + pop {r3, pc} + .balign 4 +_02032470: .word 0x021C5A00 +_02032474: .word FUN_020323BC + + thumb_func_start FUN_02032478 +FUN_02032478: ; 0x02032478 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _020324BE + ldr r0, _020324C0 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _020324C0 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3c + ldrb r0, [r0, #0x0] + bl FUN_0202D1B0 + ldr r0, _020324C0 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202DB14 + mov r0, #0x1 + add r1, r0, #0x0 + lsl r2, r0, #0x9 + bl FUN_0202F950 + cmp r0, #0x0 + beq _020324BE + bl FUN_0202FA10 + ldr r0, _020324C4 ; =FUN_020324C8 + mov r1, #0x40 + bl FUN_02031D20 +_020324BE: + pop {r3, pc} + .balign 4 +_020324C0: .word 0x021C5A00 +_020324C4: .word FUN_020324C8 + + thumb_func_start FUN_020324C8 +FUN_020324C8: ; 0x020324C8 + push {r3, lr} + bl FUN_0202EA54 + ldr r0, _020324F0 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _020324DE + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_020324DE: + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _020324EE + ldr r0, _020324F4 ; =FUN_02032510 + mov r1, #0x0 + bl FUN_02031D20 +_020324EE: + pop {r3, pc} + .balign 4 +_020324F0: .word 0x021C5A00 +_020324F4: .word FUN_02032510 + + thumb_func_start FUN_020324F8 +FUN_020324F8: ; 0x020324F8 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203250A + ldr r0, _0203250C ; =FUN_02032510 + mov r1, #0x0 + bl FUN_02031D20 +_0203250A: + pop {r3, pc} + .balign 4 +_0203250C: .word FUN_02032510 + + thumb_func_start FUN_02032510 +FUN_02032510: ; 0x02032510 + push {r3-r5, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _02032568 + ldr r1, _0203256C ; =0x021C5A00 + mov r2, #0x2 + ldr r1, [r1, #0x0] + mov r0, #0x0 + add r1, #0x43 + ldrb r1, [r1, #0x0] + lsl r2, r2, #0x8 + mov r3, #0x1 + bl FUN_0202F918 + cmp r0, #0x0 + beq _02032568 + ldr r0, _0203256C ; =0x021C5A00 + ldr r4, [r0, #0x0] + add r5, r4, #0x0 + add r5, #0xc + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #0xc] + ldr r3, [r5, #0x4] + blx _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + str r3, [r5, #0x4] + bl FUN_0202FA10 + ldr r0, _0203256C ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] + ldr r0, _02032570 ; =FUN_02032578 + ldr r1, _02032574 ; =0x00002710 + bl FUN_02031D20 +_02032568: + pop {r3-r5, pc} + nop +_0203256C: .word 0x021C5A00 +_02032570: .word FUN_02032578 +_02032574: .word 0x00002710 + + thumb_func_start FUN_02032578 +FUN_02032578: ; 0x02032578 + push {r3, lr} + bl FUN_0202F104 + cmp r0, #0x0 + bne _020325B2 + bl FUN_020311E8 + cmp r0, #0x0 + beq _020325A2 + ldr r0, _020325C4 ; =0x021C5A00 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] + bl FUN_02033E74 + ldr r0, _020325C8 ; =FUN_020327FC + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020325A2: + ldr r0, _020325C4 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _020325B2 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_020325B2: + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _020325C2 + ldr r0, _020325CC ; =FUN_020325D0 + mov r1, #0x0 + bl FUN_02031D20 +_020325C2: + pop {r3, pc} + .balign 4 +_020325C4: .word 0x021C5A00 +_020325C8: .word FUN_020327FC +_020325CC: .word FUN_020325D0 + + thumb_func_start FUN_020325D0 +FUN_020325D0: ; 0x020325D0 + push {r3-r5, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _0203261C + mov r0, #0x0 + mov r2, #0x2 + add r1, r0, #0x0 + lsl r2, r2, #0x8 + bl FUN_0202F950 + cmp r0, #0x0 + beq _0203261C + bl FUN_0202FA10 + ldr r0, _02032620 ; =0x021C5A00 + ldr r4, [r0, #0x0] + add r5, r4, #0x0 + add r5, #0xc + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #0xc] + ldr r3, [r5, #0x4] + blx _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #0xc] + mov r1, #0x0 + ldr r0, _02032624 ; =FUN_020324C8 + lsr r2, r3, #0x1b + lsl r1, r1, #0x5 + orr r1, r2 + str r3, [r5, #0x4] + bl FUN_02031D20 +_0203261C: + pop {r3-r5, pc} + nop +_02032620: .word 0x021C5A00 +_02032624: .word FUN_020324C8 + + thumb_func_start FUN_02032628 +FUN_02032628: ; 0x02032628 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203263A + ldr r0, _0203263C ; =FUN_02032640 + mov r1, #0x0 + bl FUN_02031D20 +_0203263A: + pop {r3, pc} + .balign 4 +_0203263C: .word FUN_02032640 + + thumb_func_start FUN_02032640 +FUN_02032640: ; 0x02032640 + push {r3, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _02032666 + mov r0, #0x0 + mov r2, #0x2 + add r1, r0, #0x0 + lsl r2, r2, #0x8 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02032666 + bl FUN_0202FA10 + ldr r0, _02032668 ; =FUN_0203266C + mov r1, #0x64 + bl FUN_02031D20 +_02032666: + pop {r3, pc} + .balign 4 +_02032668: .word FUN_0203266C + + thumb_func_start FUN_0203266C +FUN_0203266C: ; 0x0203266C + push {r3, lr} + ldr r0, _020326C4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202E8A0 + cmp r0, #0x0 + beq _02032698 + ldr r0, _020326C4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202FB18 + cmp r0, #0x0 + beq _02032698 + ldr r0, _020326C8 ; =FUN_020326D0 + mov r1, #0x64 + bl FUN_02031D20 + pop {r3, pc} +_02032698: + bl FUN_020311F0 + cmp r0, #0x0 + beq _020326AA + ldr r0, _020326CC ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020326AA: + ldr r0, _020326C4 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _020326BA + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_020326BA: + ldr r0, _020326CC ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_020326C4: .word 0x021C5A00 +_020326C8: .word FUN_020326D0 +_020326CC: .word FUN_020327B8 + + thumb_func_start FUN_020326D0 +FUN_020326D0: ; 0x020326D0 + push {r3, lr} + bl FUN_020311F0 + cmp r0, #0x0 + beq _020326E4 + ldr r0, _02032728 ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020326E4: + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0203270C + ldr r0, _0203272C ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x3d + strb r1, [r0, #0x0] + ldr r1, _02032730 ; =0x02105D5C + mov r0, #0x6 + bl FUN_020311D0 + ldr r0, _02032734 ; =FUN_02032738 + mov r1, #0x78 + bl FUN_02031D20 + pop {r3, pc} +_0203270C: + ldr r0, _0203272C ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _0203271C + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_0203271C: + ldr r0, _02032728 ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + nop +_02032728: .word FUN_020327B8 +_0203272C: .word 0x021C5A00 +_02032730: .word 0x02105D5C +_02032734: .word FUN_02032738 + + thumb_func_start FUN_02032738 +FUN_02032738: ; 0x02032738 + push {r3, lr} + bl FUN_020311F0 + cmp r0, #0x0 + beq _0203274C + ldr r0, _0203278C ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_0203274C: + ldr r0, _02032790 ; =0x021C5A00 + ldr r1, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0x3d + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _02032764 + ldr r0, _02032794 ; =FUN_020327B4 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032764: + cmp r0, #0x1 + bne _02032776 + bl FUN_0202DBE0 + ldr r0, _02032798 ; =FUN_0203279C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032776: + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + beq _02032782 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_02032782: + ldr r0, _0203278C ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_0203278C: .word FUN_020327B8 +_02032790: .word 0x021C5A00 +_02032794: .word FUN_020327B4 +_02032798: .word FUN_0203279C + + thumb_func_start FUN_0203279C +FUN_0203279C: ; 0x0203279C + push {r3, lr} + bl FUN_020311F0 + cmp r0, #0x0 + beq _020327AE + ldr r0, _020327B0 ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 +_020327AE: + pop {r3, pc} + .balign 4 +_020327B0: .word FUN_020327B8 + + thumb_func_start FUN_020327B4 +FUN_020327B4: ; 0x020327B4 + bx lr + .balign 4 + + thumb_func_start FUN_020327B8 +FUN_020327B8: ; 0x020327B8 + push {r3, lr} + ldr r0, _020327F0 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x3d + strb r1, [r0, #0x0] + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _020327EC + ldr r0, _020327F0 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x38] + cmp r0, #0x0 + beq _020327E4 + sub r0, r0, #0x1 + strh r0, [r1, #0x38] + ldr r0, _020327F4 ; =FUN_02032640 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020327E4: + ldr r0, _020327F8 ; =FUN_020327B4 + mov r1, #0x0 + bl FUN_02031D20 +_020327EC: + pop {r3, pc} + nop +_020327F0: .word 0x021C5A00 +_020327F4: .word FUN_02032640 +_020327F8: .word FUN_020327B4 + + thumb_func_start FUN_020327FC +FUN_020327FC: ; 0x020327FC + push {r3, lr} + bl FUN_020311E8 + cmp r0, #0x0 + bne _02032820 + bl FUN_02033510 + cmp r0, #0x0 + bne _0203282C + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _0203282C + ldr r0, _02032848 ; =FUN_020325D0 + mov r1, #0x0 + bl FUN_02031D20 + b _0203282C +_02032820: + bl FUN_02031190 + cmp r0, #0x0 + bne _0203282C + bl FUN_0202DDE8 +_0203282C: + bl FUN_020311F0 + cmp r0, #0x0 + beq _02032844 + bl FUN_02033510 + cmp r0, #0x0 + bne _02032844 + ldr r0, _0203284C ; =FUN_020327B8 + mov r1, #0x0 + bl FUN_02031D20 +_02032844: + pop {r3, pc} + nop +_02032848: .word FUN_020325D0 +_0203284C: .word FUN_020327B8 + + thumb_func_start FUN_02032850 +FUN_02032850: ; 0x02032850 + push {r3, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _0203287E + ldr r1, _02032880 ; =0x021C5A00 + mov r0, #0x0 + ldr r1, [r1, #0x0] + mov r2, #0x2 + add r1, #0x43 + ldrb r1, [r1, #0x0] + lsl r2, r2, #0x8 + add r3, r0, #0x0 + bl FUN_0202F918 + cmp r0, #0x0 + beq _0203287E + bl FUN_0202FA10 + ldr r0, _02032884 ; =FUN_020323B8 + mov r1, #0x0 + bl FUN_02031D20 +_0203287E: + pop {r3, pc} + .balign 4 +_02032880: .word 0x021C5A00 +_02032884: .word FUN_020323B8 + + thumb_func_start FUN_02032888 +FUN_02032888: ; 0x02032888 + push {r3, lr} + ldr r0, _020328BC ; =0x021C5A00 + mov r1, #0xd + ldr r0, [r0, #0x0] + add r0, #0x3f + strb r1, [r0, #0x0] + bl FUN_02031190 + cmp r0, #0x0 + add r0, sp, #0x0 + bne _020328AE + mov r1, #0x0 + strb r1, [r0, #0x1] + add r1, sp, #0x0 + mov r0, #0xa + add r1, #0x1 + bl FUN_020311D0 + pop {r3, pc} +_020328AE: + mov r1, #0x0 + strb r1, [r0, #0x0] + mov r0, #0xa + add r1, sp, #0x0 + bl FUN_020311D0 + pop {r3, pc} + .balign 4 +_020328BC: .word 0x021C5A00 + + thumb_func_start FUN_020328C0 +FUN_020328C0: ; 0x020328C0 + ldr r1, _020328D8 ; =0x021C5A00 + ldr r3, _020328DC ; =FUN_02031D20 + ldr r2, [r1, #0x0] + add r2, #0x3e + strb r0, [r2, #0x0] + ldr r0, [r1, #0x0] + mov r2, #0x3 + strh r2, [r0, #0x38] + ldr r0, _020328E0 ; =FUN_02032924 + mov r1, #0x0 + bx r3 + nop +_020328D8: .word 0x021C5A00 +_020328DC: .word FUN_02031D20 +_020328E0: .word FUN_02032924 + + thumb_func_start FUN_020328E4 +FUN_020328E4: ; 0x020328E4 + ldr r0, _020328F0 ; =0x021C5A00 + mov r1, #0x7 + ldr r0, [r0, #0x0] + add r0, #0x3f + strb r1, [r0, #0x0] + bx lr + .balign 4 +_020328F0: .word 0x021C5A00 + + thumb_func_start FUN_020328F4 +FUN_020328F4: ; 0x020328F4 + push {r3, lr} + ldr r1, _0203291C ; =0x021C5A00 + ldr r2, [r1, #0x0] + add r2, #0x3e + strb r0, [r2, #0x0] + ldr r0, [r1, #0x0] + mov r2, #0x7 + add r0, #0x3f + strb r2, [r0, #0x0] + ldr r0, [r1, #0x0] + mov r2, #0x3 + strh r2, [r0, #0x38] + bl FUN_02033E74 + ldr r0, _02032920 ; =FUN_02032628 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + nop +_0203291C: .word 0x021C5A00 +_02032920: .word FUN_02032628 + + thumb_func_start FUN_02032924 +FUN_02032924: ; 0x02032924 + push {r3, lr} + bl FUN_0202E6F0 + cmp r0, #0x0 + beq _02032936 + ldr r0, _02032938 ; =FUN_0203293C + mov r1, #0x0 + bl FUN_02031D20 +_02032936: + pop {r3, pc} + .balign 4 +_02032938: .word FUN_0203293C + + thumb_func_start FUN_0203293C +FUN_0203293C: ; 0x0203293C + push {r3, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _0203296C + ldr r0, _02032970 ; =0x021C5A00 + mov r2, #0x2 + ldr r0, [r0, #0x0] + mov r1, #0xd + add r0, #0x3f + strb r1, [r0, #0x0] + mov r0, #0x0 + add r1, r0, #0x0 + lsl r2, r2, #0x8 + bl FUN_0202F950 + cmp r0, #0x0 + beq _0203296C + bl FUN_0202FA1C + ldr r0, _02032974 ; =FUN_02032978 + mov r1, #0x64 + bl FUN_02031D20 +_0203296C: + pop {r3, pc} + nop +_02032970: .word 0x021C5A00 +_02032974: .word FUN_02032978 + + thumb_func_start FUN_02032978 +FUN_02032978: ; 0x02032978 + push {r3, lr} + ldr r0, _020329E4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202E8A0 + cmp r0, #0x0 + beq _020329A4 + ldr r0, _020329E4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_0202FB18 + cmp r0, #0x0 + beq _020329A4 + ldr r0, _020329E8 ; =FUN_020329F4 + mov r1, #0x64 + bl FUN_02031D20 + pop {r3, pc} +_020329A4: + bl FUN_020311F0 + cmp r0, #0x0 + bne _020329B6 + ldr r0, _020329E4 ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x0 + bne _020329DC +_020329B6: + ldr r0, _020329E4 ; =0x021C5A00 + ldr r2, [r0, #0x0] + ldrh r1, [r2, #0x38] + sub r1, r1, #0x1 + strh r1, [r2, #0x38] + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x38] + cmp r0, #0x0 + bne _020329D2 + ldr r0, _020329EC ; =FUN_020327B4 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020329D2: + ldr r0, _020329F0 ; =FUN_02032924 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020329DC: + beq _020329E2 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] +_020329E2: + pop {r3, pc} + .balign 4 +_020329E4: .word 0x021C5A00 +_020329E8: .word FUN_020329F4 +_020329EC: .word FUN_020327B4 +_020329F0: .word FUN_02032924 + + thumb_func_start FUN_020329F4 +FUN_020329F4: ; 0x020329F4 + push {r3, lr} + ldr r0, _02032A7C ; =0x021C5A00 + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3a] + cmp r0, #0x5a + bls _02032A06 + sub r0, r0, #0x1 + strh r0, [r1, #0x3a] + pop {r3, pc} +_02032A06: + bl FUN_020311F0 + cmp r0, #0x0 + beq _02032A34 + ldr r0, _02032A7C ; =0x021C5A00 + ldr r2, [r0, #0x0] + ldrh r1, [r2, #0x38] + sub r1, r1, #0x1 + strh r1, [r2, #0x38] + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x38] + cmp r0, #0x0 + bne _02032A2A + ldr r0, _02032A80 ; =FUN_020327B4 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032A2A: + ldr r0, _02032A84 ; =FUN_02032924 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032A34: + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _02032A4A + ldr r0, _02032A88 ; =FUN_0203279C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032A4A: + ldr r0, _02032A7C ; =0x021C5A00 + ldr r2, [r0, #0x0] + ldrh r1, [r2, #0x3a] + cmp r1, #0x0 + beq _02032A5A + sub r0, r1, #0x1 + strh r0, [r2, #0x3a] + pop {r3, pc} +_02032A5A: + ldrh r1, [r2, #0x38] + sub r1, r1, #0x1 + strh r1, [r2, #0x38] + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x38] + cmp r0, #0x0 + bne _02032A72 + ldr r0, _02032A80 ; =FUN_020327B4 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032A72: + ldr r0, _02032A84 ; =FUN_02032924 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} + .balign 4 +_02032A7C: .word 0x021C5A00 +_02032A80: .word FUN_020327B4 +_02032A84: .word FUN_02032924 +_02032A88: .word FUN_0203279C + + thumb_func_start FUN_02032A8C +FUN_02032A8C: ; 0x02032A8C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _02032ADA + ldr r6, _02032ADC ; =0x02105D5C + mov r3, #0x1 + mov r2, #0x0 +_02032AA0: + ldrb r1, [r6, #0x0] + ldrb r0, [r4, r2] + cmp r1, r0 + beq _02032AAC + mov r3, #0x0 + b _02032AB4 +_02032AAC: + add r2, r2, #0x1 + add r6, r6, #0x1 + cmp r2, #0x6 + blo _02032AA0 +_02032AB4: + cmp r3, #0x0 + beq _02032AD0 + ldr r0, _02032AE0 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02032AD0 + ldr r1, _02032AE4 ; =0x02105D6C + mov r0, #0x7 + strb r5, [r1, #0x0] + bl FUN_02030C4C + pop {r4-r6, pc} +_02032AD0: + ldr r1, _02032AE8 ; =0x02105D64 + mov r0, #0x7 + strb r5, [r1, #0x0] + bl FUN_02030C4C +_02032ADA: + pop {r4-r6, pc} + .balign 4 +_02032ADC: .word 0x02105D5C +_02032AE0: .word 0x021C5A00 +_02032AE4: .word 0x02105D6C +_02032AE8: .word 0x02105D64 + + thumb_func_start FUN_02032AEC +FUN_02032AEC: ; 0x02032AEC + push {r3-r5, lr} + mov r4, #0x1 + ldr r5, _02032B5C ; =0x02105D6D + add r3, r4, #0x0 +_02032AF4: + ldrb r1, [r5, #0x0] + ldrb r0, [r2, r3] + cmp r1, r0 + beq _02032B00 + mov r4, #0x0 + b _02032B08 +_02032B00: + add r3, r3, #0x1 + add r5, r5, #0x1 + cmp r3, #0x6 + blo _02032AF4 +_02032B08: + cmp r4, #0x0 + beq _02032B22 + ldrb r4, [r2, #0x0] + bl FUN_02031190 + cmp r4, r0 + bne _02032B58 + ldr r0, _02032B60 ; =0x021C5A00 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x3d + strb r1, [r0, #0x0] + pop {r3-r5, pc} +_02032B22: + mov r4, #0x1 + ldr r3, _02032B64 ; =0x02105D65 + add r5, r4, #0x0 +_02032B28: + ldrb r1, [r3, #0x0] + ldrb r0, [r2, r5] + cmp r1, r0 + beq _02032B34 + mov r4, #0x0 + b _02032B3C +_02032B34: + add r5, r5, #0x1 + add r3, r3, #0x1 + cmp r5, #0x6 + blo _02032B28 +_02032B3C: + cmp r4, #0x0 + beq _02032B58 + ldrb r4, [r2, #0x0] + bl FUN_02031190 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r4, r0 + bne _02032B58 + ldr r0, _02032B60 ; =0x021C5A00 + mov r1, #0x2 + ldr r0, [r0, #0x0] + add r0, #0x3d + strb r1, [r0, #0x0] +_02032B58: + pop {r3-r5, pc} + nop +_02032B5C: .word 0x02105D6D +_02032B60: .word 0x021C5A00 +_02032B64: .word 0x02105D65 + + thumb_func_start FUN_02032B68 +FUN_02032B68: ; 0x02032B68 + mov r0, #0x6 + bx lr + + thumb_func_start FUN_02032B6C +FUN_02032B6C: ; 0x02032B6C + push {r3, lr} + ldr r1, _02032B80 ; =0x021C5A00 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _02032B7E + add r1, #0x3c + strb r0, [r1, #0x0] + bl FUN_0202D1B0 +_02032B7E: + pop {r3, pc} + .balign 4 +_02032B80: .word 0x021C5A00 + + thumb_func_start FUN_02032B84 +FUN_02032B84: ; 0x02032B84 + ldr r3, _02032B88 ; =FUN_0202EA54 + bx r3 + .balign 4 +_02032B88: .word FUN_0202EA54 + + thumb_func_start FUN_02032B8C +FUN_02032B8C: ; 0x02032B8C + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _02032BC6 + ldr r0, _02032BC8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02032BC8 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202DB14 + mov r0, #0x1 + add r1, r0, #0x0 + mov r2, #0x20 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02032BC6 + bl FUN_0202FA10 + ldr r0, _02032BCC ; =FUN_02032B84 + mov r1, #0x0 + bl FUN_02031D20 +_02032BC6: + pop {r3, pc} + .balign 4 +_02032BC8: .word 0x021C5A00 +_02032BCC: .word FUN_02032B84 + + thumb_func_start FUN_02032BD0 +FUN_02032BD0: ; 0x02032BD0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _02032C00 + mov r2, #0x7 + mov r0, #0x3 + mov r1, #0xf + lsl r2, r2, #0xc + bl FUN_02016828 + add r0, r4, #0x0 + mov r1, #0xe + bl FUN_02031734 + ldr r0, _02032C04 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x40 + strb r1, [r0, #0x0] + ldr r0, _02032C08 ; =FUN_02032B8C + bl FUN_02031D20 +_02032C00: + pop {r4, pc} + nop +_02032C04: .word 0x021C5A00 +_02032C08: .word FUN_02032B8C + + thumb_func_start FUN_02032C0C +FUN_02032C0C: ; 0x02032C0C + push {r3, lr} + ldr r0, _02032C20 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02032C1E + ldr r0, _02032C24 ; =FUN_02032440 + mov r1, #0x5 + bl FUN_02031D20 +_02032C1E: + pop {r3, pc} + .balign 4 +_02032C20: .word 0x021C5A00 +_02032C24: .word FUN_02032440 + + thumb_func_start FUN_02032C28 +FUN_02032C28: ; 0x02032C28 + sub sp, #0x8 + ldr r1, _02032C64 ; =0x020EEC48 + add r0, sp, #0x0 + ldr r2, [r1, #0x0] + ldr r1, [r1, #0x4] + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, _02032C68 ; =0x021C5A00 + ldr r1, [r1, #0x0] + ldr r3, [r1, #0x24] + cmp r1, #0x0 + bne _02032C46 + mov r0, #0x0 + add sp, #0x8 + bx lr +_02032C46: + cmp r2, #0x0 + beq _02032C5E +_02032C4A: + ldr r1, [r0, #0x0] + cmp r3, r1 + bne _02032C56 + mov r0, #0x1 + add sp, #0x8 + bx lr +_02032C56: + add r0, r0, #0x4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _02032C4A +_02032C5E: + mov r0, #0x0 + add sp, #0x8 + bx lr + .balign 4 +_02032C64: .word 0x020EEC48 +_02032C68: .word 0x021C5A00 + + thumb_func_start FUN_02032C6C +FUN_02032C6C: ; 0x02032C6C + ldr r2, _02032CE4 ; =0x00400131 + cmp r0, r2 + bhi _02032C7C + bhs _02032CBA + ldr r2, _02032CE8 ; =0x00000333 + cmp r0, r2 + beq _02032C8E + bx lr +_02032C7C: + ldr r1, _02032CEC ; =0x00400286 + cmp r0, r1 + bhi _02032C86 + beq _02032CCE + bx lr +_02032C86: + add r1, #0x92 + cmp r0, r1 + beq _02032CA6 + bx lr +_02032C8E: + cmp r1, #0xf + bne _02032CE0 + ldr r0, _02032CF0 ; =0x021C5A00 + ldr r2, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x49 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + add r2, #0x49 + orr r0, r1 + strb r0, [r2, #0x0] + bx lr +_02032CA6: + ldr r0, _02032CF0 ; =0x021C5A00 + ldr r2, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x49 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + add r2, #0x49 + orr r0, r1 + strb r0, [r2, #0x0] + bx lr +_02032CBA: + ldr r0, _02032CF0 ; =0x021C5A00 + ldr r2, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x49 + ldrb r1, [r0, #0x0] + mov r0, #0x2 + add r2, #0x49 + orr r0, r1 + strb r0, [r2, #0x0] + bx lr +_02032CCE: + ldr r0, _02032CF0 ; =0x021C5A00 + ldr r2, [r0, #0x0] + add r0, r2, #0x0 + add r0, #0x49 + ldrb r1, [r0, #0x0] + mov r0, #0x4 + add r2, #0x49 + orr r0, r1 + strb r0, [r2, #0x0] +_02032CE0: + bx lr + nop +_02032CE4: .word 0x00400131 +_02032CE8: .word 0x00000333 +_02032CEC: .word 0x00400286 +_02032CF0: .word 0x021C5A00 + + thumb_func_start FUN_02032CF4 +FUN_02032CF4: ; 0x02032CF4 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _02032D34 + ldr r0, _02032D38 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02032D38 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202DB14 + ldr r0, _02032D3C ; =FUN_02032C6C + bl FUN_0202D308 + mov r0, #0x1 + add r1, r0, #0x0 + mov r2, #0x20 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02032D34 + bl FUN_0202FA10 + ldr r0, _02032D40 ; =FUN_02032B84 + mov r1, #0x0 + bl FUN_02031D20 +_02032D34: + pop {r3, pc} + nop +_02032D38: .word 0x021C5A00 +_02032D3C: .word FUN_02032C6C +_02032D40: .word FUN_02032B84 + + thumb_func_start FUN_02032D44 +FUN_02032D44: ; 0x02032D44 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _02032D74 + mov r2, #0x7 + mov r0, #0x3 + mov r1, #0xf + lsl r2, r2, #0xc + bl FUN_02016828 + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_02031734 + ldr r0, _02032D78 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x40 + strb r1, [r0, #0x0] + ldr r0, _02032D7C ; =FUN_02032CF4 + bl FUN_02031D20 +_02032D74: + pop {r4, pc} + nop +_02032D78: .word 0x021C5A00 +_02032D7C: .word FUN_02032CF4 + + thumb_func_start FUN_02032D80 +FUN_02032D80: ; 0x02032D80 + push {r3, lr} + ldr r0, _02032D94 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02032D92 + ldr r0, _02032D98 ; =FUN_02032440 + mov r1, #0x5 + bl FUN_02031D20 +_02032D92: + pop {r3, pc} + .balign 4 +_02032D94: .word 0x021C5A00 +_02032D98: .word FUN_02032440 + + thumb_func_start FUN_02032D9C +FUN_02032D9C: ; 0x02032D9C + ldr r0, _02032DA8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x49 + ldrb r0, [r0, #0x0] + bx lr + nop +_02032DA8: .word 0x021C5A00 + + thumb_func_start FUN_02032DAC +FUN_02032DAC: ; 0x02032DAC + push {r3, lr} + bl FUN_02031468 + ldr r0, _02032DF4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02032DBE + mov r0, #0x1 + pop {r3, pc} +_02032DBE: + add r0, #0x3f + ldrb r0, [r0, #0x0] + add r0, #0xe8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bhi _02032DD4 + bl FUN_021D83C0 + mov r0, #0x1 + pop {r3, pc} +_02032DD4: + bl FUN_02033590 + cmp r0, #0x0 + beq _02032DE6 + ldr r0, _02032DF8 ; =FUN_0203318C + mov r1, #0x0 + bl FUN_02031D20 + b _02032DEE +_02032DE6: + ldr r0, _02032DFC ; =FUN_02032178 + mov r1, #0x0 + bl FUN_02031D20 +_02032DEE: + mov r0, #0x0 + pop {r3, pc} + nop +_02032DF4: .word 0x021C5A00 +_02032DF8: .word FUN_0203318C +_02032DFC: .word FUN_02032178 + + thumb_func_start FUN_02032E00 +FUN_02032E00: ; 0x02032E00 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _02032E3C + ldr r0, _02032E40 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02032E40 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202DB14 + mov r0, #0x1 + add r1, r0, #0x0 + lsl r2, r0, #0x9 + add r3, r0, #0x0 + bl FUN_0202F918 + cmp r0, #0x0 + beq _02032E3C + bl FUN_0202FA10 + ldr r0, _02032E44 ; =FUN_02032218 + mov r1, #0x0 + bl FUN_02031D20 +_02032E3C: + pop {r3, pc} + nop +_02032E40: .word 0x021C5A00 +_02032E44: .word FUN_02032218 + + thumb_func_start FUN_02032E48 +FUN_02032E48: ; 0x02032E48 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _02032E82 + ldr r0, _02032E84 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x2c] + bl FUN_0202E29C + ldr r0, _02032E84 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202DB14 + mov r0, #0x1 + add r1, r0, #0x0 + lsl r2, r0, #0x9 + bl FUN_0202F950 + cmp r0, #0x0 + beq _02032E82 + bl FUN_0202FA10 + ldr r0, _02032E88 ; =FUN_02032290 + mov r1, #0x0 + bl FUN_02031D20 +_02032E82: + pop {r3, pc} + .balign 4 +_02032E84: .word 0x021C5A00 +_02032E88: .word FUN_02032290 + + thumb_func_start FUN_02032E8C +FUN_02032E8C: ; 0x02032E8C + bx lr + .balign 4 + + thumb_func_start FUN_02032E90 +FUN_02032E90: ; 0x02032E90 + push {r3, lr} + bl FUN_021D7F8C + cmp r0, #0x0 + bge _02032EA2 + ldr r0, _02032EA4 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 +_02032EA2: + pop {r3, pc} + .balign 4 +_02032EA4: .word FUN_02032E8C + + thumb_func_start FUN_02032EA8 +FUN_02032EA8: ; 0x02032EA8 + bx lr + .balign 4 + + thumb_func_start FUN_02032EAC +FUN_02032EAC: ; 0x02032EAC + bx lr + .balign 4 + + thumb_func_start FUN_02032EB0 +FUN_02032EB0: ; 0x02032EB0 + push {r3, lr} + mov r0, #0x1 + bl FUN_020313A0 + bl FUN_021D7F8C + cmp r0, #0xa + blt _02032ECA + ldr r0, _02032F0C ; =FUN_02032EAC + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032ECA: + cmp r0, #0x0 + bge _02032ED8 + ldr r0, _02032F10 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032ED8: + cmp r0, #0x1 + bne _02032EE6 + ldr r0, _02032F14 ; =FUN_02032E90 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032EE6: + cmp r0, #0x2 + bne _02032F08 + ldr r0, _02032F18 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x44 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02032F00 + ldr r0, _02032F10 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032F00: + ldr r0, _02032F1C ; =FUN_02032EA8 + mov r1, #0x0 + bl FUN_02031D20 +_02032F08: + pop {r3, pc} + nop +_02032F0C: .word FUN_02032EAC +_02032F10: .word FUN_02032E8C +_02032F14: .word FUN_02032E90 +_02032F18: .word 0x021C5A00 +_02032F1C: .word FUN_02032EA8 + + thumb_func_start FUN_02032F20 +FUN_02032F20: ; 0x02032F20 + add r1, r0, #0x2 + cmp r1, #0x1 + bls _02032F28 + neg r0, r0 +_02032F28: + ldr r1, _02032F30 ; =0x021C5A00 + ldr r1, [r1, #0x0] + str r0, [r1, #0x34] + bx lr + .balign 4 +_02032F30: .word 0x021C5A00 + + thumb_func_start FUN_02032F34 +FUN_02032F34: ; 0x02032F34 + push {r3, lr} + mov r0, #0x0 + bl FUN_021D7800 + cmp r0, #0xa + blt _02032F4A + ldr r0, _02032F88 ; =FUN_02032EAC + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032F4A: + cmp r0, #0x0 + bge _02032F5C + bl FUN_02032F20 + ldr r0, _02032F8C ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032F5C: + cmp r0, #0x1 + bne _02032F6A + ldr r0, _02032F90 ; =FUN_02032EB0 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032F6A: + cmp r0, #0x2 + bne _02032F78 + ldr r0, _02032F94 ; =FUN_02032EA8 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032F78: + cmp r0, #0x3 + bne _02032F84 + ldr r0, _02032F88 ; =FUN_02032EAC + mov r1, #0x0 + bl FUN_02031D20 +_02032F84: + pop {r3, pc} + nop +_02032F88: .word FUN_02032EAC +_02032F8C: .word FUN_02032E8C +_02032F90: .word FUN_02032EB0 +_02032F94: .word FUN_02032EA8 + + thumb_func_start FUN_02032F98 +FUN_02032F98: ; 0x02032F98 + push {r3, lr} + mov r0, #0x1 + bl FUN_021D7800 + cmp r0, #0x0 + bge _02032FB2 + bl FUN_02032F20 + ldr r0, _02032FD0 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02032FB2: + ldr r0, _02032FD4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x42 + ldrb r0, [r0, #0x0] + bl FUN_021D8494 + cmp r0, #0x0 + beq _02032FCE + bl FUN_0202FC60 + ldr r0, _02032FD8 ; =FUN_02032F34 + mov r1, #0x0 + bl FUN_02031D20 +_02032FCE: + pop {r3, pc} + .balign 4 +_02032FD0: .word FUN_02032E8C +_02032FD4: .word 0x021C5A00 +_02032FD8: .word FUN_02032F34 + + thumb_func_start FUN_02032FDC +FUN_02032FDC: ; 0x02032FDC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02032FFC ; =FUN_020303BC + ldr r1, _02033000 ; =FUN_02030238 + bl FUN_021D77C4 + ldr r0, _02033004 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x42 + strb r4, [r0, #0x0] + ldr r0, _02033008 ; =FUN_02032F98 + bl FUN_02031D20 + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_02032FFC: .word FUN_020303BC +_02033000: .word FUN_02030238 +_02033004: .word 0x021C5A00 +_02033008: .word FUN_02032F98 + + thumb_func_start FUN_0203300C +FUN_0203300C: ; 0x0203300C + ldr r0, _02033048 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + ldr r0, _0203304C ; =FUN_02032F34 + cmp r1, r0 + bne _0203301C + mov r0, #0x0 + bx lr +_0203301C: + ldr r0, _02033050 ; =FUN_02032EB0 + cmp r1, r0 + bne _02033026 + mov r0, #0x1 + bx lr +_02033026: + ldr r0, _02033054 ; =FUN_02032E90 + cmp r1, r0 + bne _02033030 + mov r0, #0x3 + bx lr +_02033030: + ldr r0, _02033058 ; =FUN_02032EA8 + cmp r1, r0 + bne _0203303A + mov r0, #0x4 + bx lr +_0203303A: + ldr r0, _0203305C ; =FUN_02032EAC + cmp r1, r0 + bne _02033044 + mov r0, #0x5 + bx lr +_02033044: + mov r0, #0x2 + bx lr + .balign 4 +_02033048: .word 0x021C5A00 +_0203304C: .word FUN_02032F34 +_02033050: .word FUN_02032EB0 +_02033054: .word FUN_02032E90 +_02033058: .word FUN_02032EA8 +_0203305C: .word FUN_02032EAC + + thumb_func_start FUN_02033060 +FUN_02033060: ; 0x02033060 + push {r3, lr} + ldr r0, _02033090 ; =FUN_020303BC + ldr r1, _02033094 ; =FUN_02030238 + bl FUN_021D77C4 + mov r0, #0x0 + mvn r0, r0 + bl FUN_021D8494 + cmp r0, #0x0 + beq _0203308C + ldr r0, _02033098 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x4d + strb r1, [r0, #0x0] + bl FUN_0202FC60 + ldr r0, _0203309C ; =FUN_02032F34 + mov r1, #0x0 + bl FUN_02031D20 +_0203308C: + pop {r3, pc} + nop +_02033090: .word FUN_020303BC +_02033094: .word FUN_02030238 +_02033098: .word 0x021C5A00 +_0203309C: .word FUN_02032F34 + + thumb_func_start FUN_020330A0 +FUN_020330A0: ; 0x020330A0 + push {r3, lr} + mov r0, #0x0 + bl FUN_020313A0 + ldr r0, _020330D8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x41 + ldrb r0, [r0, #0x0] + bl FUN_021D82BC + cmp r0, #0x0 + beq _020330C6 + bl FUN_021D836C + ldr r0, _020330DC ; =FUN_02033060 + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_020330C6: + bl FUN_021D7F8C + cmp r0, #0x0 + bge _020330D6 + ldr r0, _020330E0 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 +_020330D6: + pop {r3, pc} + .balign 4 +_020330D8: .word 0x021C5A00 +_020330DC: .word FUN_02033060 +_020330E0: .word FUN_02032E8C + + thumb_func_start FUN_020330E4 +FUN_020330E4: ; 0x020330E4 + push {r3, lr} + bl FUN_02031190 + cmp r0, #0x0 + bne _02033100 + ldr r0, _02033120 ; =0x021C5A00 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x41 + strb r1, [r0, #0x0] + ldr r0, _02033124 ; =FUN_020330A0 + bl FUN_02031D20 + b _02033112 +_02033100: + ldr r0, _02033120 ; =0x021C5A00 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x41 + strb r1, [r0, #0x0] + ldr r0, _02033124 ; =FUN_020330A0 + mov r1, #0x0 + bl FUN_02031D20 +_02033112: + ldr r0, _02033120 ; =0x021C5A00 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x4d + strb r1, [r0, #0x0] + pop {r3, pc} + nop +_02033120: .word 0x021C5A00 +_02033124: .word FUN_020330A0 + + thumb_func_start FUN_02033128 +FUN_02033128: ; 0x02033128 + ldr r0, _02033134 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x4d + ldrb r0, [r0, #0x0] + bx lr + nop +_02033134: .word 0x021C5A00 + + thumb_func_start FUN_02033138 +FUN_02033138: ; 0x02033138 + ldr r0, _0203314C ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + ldr r0, _02033150 ; =FUN_02033060 + cmp r1, r0 + bne _02033148 + mov r0, #0x1 + bx lr +_02033148: + mov r0, #0x0 + bx lr + .balign 4 +_0203314C: .word 0x021C5A00 +_02033150: .word FUN_02033060 + + thumb_func_start FUN_02033154 +FUN_02033154: ; 0x02033154 + ldr r0, _02033174 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + ldr r0, _02033178 ; =FUN_02032F34 + cmp r1, r0 + bne _02033164 + mov r0, #0x1 + bx lr +_02033164: + ldr r0, _0203317C ; =FUN_02033060 + cmp r1, r0 + bne _0203316E + mov r0, #0x1 + bx lr +_0203316E: + mov r0, #0x0 + bx lr + nop +_02033174: .word 0x021C5A00 +_02033178: .word FUN_02032F34 +_0203317C: .word FUN_02033060 + + thumb_func_start FUN_02033180 +FUN_02033180: ; 0x02033180 + ldr r0, _02033188 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x34] + bx lr + .balign 4 +_02033188: .word 0x021C5A00 + + thumb_func_start FUN_0203318C +FUN_0203318C: ; 0x0203318C + push {r3, lr} + mov r0, #0x0 + bl FUN_020313A0 + mov r0, #0x0 + bl FUN_021D82BC + cmp r0, #0x0 + beq _020331AA + bl FUN_021D836C + ldr r0, _020331BC ; =FUN_02032440 + mov r1, #0x0 + bl FUN_02031D20 +_020331AA: + bl FUN_021D7F8C + cmp r0, #0x0 + bge _020331BA + ldr r0, _020331C0 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 +_020331BA: + pop {r3, pc} + .balign 4 +_020331BC: .word FUN_02032440 +_020331C0: .word FUN_02032E8C + + thumb_func_start FUN_020331C4 +FUN_020331C4: ; 0x020331C4 + push {r3, lr} + ldr r0, _020331E0 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020331DC + mov r0, #0x1 + bl FUN_020166B8 + ldr r0, _020331E4 ; =FUN_02032440 + mov r1, #0x5 + bl FUN_02031D20 +_020331DC: + pop {r3, pc} + nop +_020331E0: .word 0x021C5A00 +_020331E4: .word FUN_02032440 + + thumb_func_start FUN_020331E8 +FUN_020331E8: ; 0x020331E8 + push {r3, lr} + ldr r0, _02033200 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020331FE + mov r1, #0x0 + add r0, #0x41 + strb r1, [r0, #0x0] + ldr r0, _02033204 ; =FUN_020330A0 + bl FUN_02031D20 +_020331FE: + pop {r3, pc} + .balign 4 +_02033200: .word 0x021C5A00 +_02033204: .word FUN_020330A0 + + thumb_func_start FUN_02033208 +FUN_02033208: ; 0x02033208 + push {r3, lr} + ldr r0, _02033234 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033232 + bl FUN_02031190 + cmp r0, #0x0 + bne _02033220 + mov r1, #0x0 + ldr r0, _02033234 ; =0x021C5A00 + b _02033224 +_02033220: + ldr r0, _02033234 ; =0x021C5A00 + mov r1, #0x1 +_02033224: + ldr r0, [r0, #0x0] + add r0, #0x41 + strb r1, [r0, #0x0] + ldr r0, _02033238 ; =FUN_020330A0 + mov r1, #0x0 + bl FUN_02031D20 +_02033232: + pop {r3, pc} + .balign 4 +_02033234: .word 0x021C5A00 +_02033238: .word FUN_020330A0 + + thumb_func_start FUN_0203323C +FUN_0203323C: ; 0x0203323C + push {r3, lr} + bl FUN_02031190 + add r1, sp, #0x0 + strb r0, [r1, #0x0] + mov r0, #0x15 + add r1, sp, #0x0 + bl FUN_020311D0 + pop {r3, pc} + + thumb_func_start FUN_02033250 +FUN_02033250: ; 0x02033250 + ldr r0, _0203327C ; =0x021C5A00 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _02033276 + ldr r1, [r2, #0x24] + ldr r0, _02033280 ; =FUN_02032E8C + cmp r1, r0 + bne _02033264 + mov r0, #0x1 + bx lr +_02033264: + ldr r0, _02033284 ; =FUN_02032E90 + cmp r1, r0 + bne _02033276 + add r2, #0x44 + ldrb r0, [r2, #0x0] + cmp r0, #0x0 + beq _02033276 + mov r0, #0x1 + bx lr +_02033276: + mov r0, #0x0 + bx lr + nop +_0203327C: .word 0x021C5A00 +_02033280: .word FUN_02032E8C +_02033284: .word FUN_02032E90 + + thumb_func_start FUN_02033288 +FUN_02033288: ; 0x02033288 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020332D8 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020332D6 + mov r1, #0xf + add r2, r1, #0x0 + mov r0, #0x3 + add r2, #0xf1 + bl FUN_02016828 + mov r0, #0xf + mov r1, #0x50 + bl FUN_02016998 + ldr r1, _020332D8 ; =0x021C5A00 + mov r2, #0x50 + str r0, [r1, #0x0] + mov r1, #0x0 + blx MI_CpuFill8 + ldr r0, _020332D8 ; =0x021C5A00 + mov r2, #0x18 + ldr r1, [r0, #0x0] + add r1, #0x3f + strb r2, [r1, #0x0] + ldr r2, [r0, #0x0] + mov r1, #0x1 + add r2, #0x46 + strb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + str r4, [r0, #0x28] + mov r0, #0x0 + bl FUN_020334E8 + mov r0, #0x1 + bl FUN_020166A8 +_020332D6: + pop {r4, pc} + .balign 4 +_020332D8: .word 0x021C5A00 + + thumb_func_start FUN_020332DC +FUN_020332DC: ; 0x020332DC + push {r3, lr} + ldr r0, _0203330C ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033308 + mov r0, #0x1 + bl FUN_020166B8 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_020334E8 + ldr r0, _0203330C ; =0x021C5A00 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0203330C ; =0x021C5A00 + mov r1, #0x0 + str r1, [r0, #0x0] + mov r0, #0xf + bl FUN_020168D0 +_02033308: + pop {r3, pc} + nop +_0203330C: .word 0x021C5A00 + + thumb_func_start FUN_02033310 +FUN_02033310: ; 0x02033310 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02033360 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203335E + mov r1, #0xf + add r2, r1, #0x0 + mov r0, #0x3 + add r2, #0xf1 + bl FUN_02016828 + mov r0, #0xf + mov r1, #0x50 + bl FUN_02016998 + ldr r1, _02033360 ; =0x021C5A00 + mov r2, #0x50 + str r0, [r1, #0x0] + mov r1, #0x0 + blx MI_CpuFill8 + ldr r0, _02033360 ; =0x021C5A00 + mov r2, #0x19 + ldr r1, [r0, #0x0] + add r1, #0x3f + strb r2, [r1, #0x0] + ldr r2, [r0, #0x0] + mov r1, #0x1 + add r2, #0x46 + strb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + str r4, [r0, #0x28] + mov r0, #0x0 + bl FUN_020334E8 + mov r0, #0x1 + bl FUN_020166A8 +_0203335E: + pop {r4, pc} + .balign 4 +_02033360: .word 0x021C5A00 + + thumb_func_start FUN_02033364 +FUN_02033364: ; 0x02033364 + push {r3, lr} + ldr r0, _02033394 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033390 + mov r0, #0x1 + bl FUN_020166B8 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_020334E8 + ldr r0, _02033394 ; =0x021C5A00 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _02033394 ; =0x021C5A00 + mov r1, #0x0 + str r1, [r0, #0x0] + mov r0, #0xf + bl FUN_020168D0 +_02033390: + pop {r3, pc} + nop +_02033394: .word 0x021C5A00 + + thumb_func_start FUN_02033398 +FUN_02033398: ; 0x02033398 + push {r3, lr} + sub sp, #0x8 + ldr r0, _020333EC ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020333AA + add sp, #0x8 + mov r0, #0x0 + pop {r3, pc} +_020333AA: + add r0, #0x3f + ldrb r0, [r0, #0x0] + cmp r0, #0x18 + bne _020333C8 + add r0, sp, #0x4 + add r1, sp, #0x0 + blx FUN_021DD718 + cmp r0, #0x0 + beq _020333E4 + blx FUN_021DD6F0 + add sp, #0x8 + mov r0, #0x1 + pop {r3, pc} +_020333C8: + cmp r0, #0x19 + bne _020333E4 + add r0, sp, #0x4 + add r1, sp, #0x0 + blx FUN_021DD718 + cmp r0, #0x0 + beq _020333E4 + ldr r0, [sp, #0x0] + cmp r0, #0x7 + bne _020333E4 + add sp, #0x8 + mov r0, #0x1 + pop {r3, pc} +_020333E4: + mov r0, #0x0 + add sp, #0x8 + pop {r3, pc} + nop +_020333EC: .word 0x021C5A00 + + thumb_func_start FUN_020333F0 +FUN_020333F0: ; 0x020333F0 + push {r3, lr} + bl FUN_021D76AC + cmp r0, #0x0 + bge _02033408 + bl FUN_02032F20 + ldr r0, _02033414 ; =FUN_02032E8C + mov r1, #0x0 + bl FUN_02031D20 + pop {r3, pc} +_02033408: + ble _02033412 + ldr r0, _02033418 ; =FUN_02033060 + mov r1, #0x0 + bl FUN_02031D20 +_02033412: + pop {r3, pc} + .balign 4 +_02033414: .word FUN_02032E8C +_02033418: .word FUN_02033060 + + thumb_func_start FUN_0203341C +FUN_0203341C: ; 0x0203341C + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _0203345E + mov r1, #0x31 + mov r0, #0x3 + lsl r2, r1, #0xc + bl FUN_02016828 + mov r0, #0x1 + add r1, r0, #0x0 + lsl r2, r0, #0x9 + add r3, r0, #0x0 + bl FUN_0202F918 + cmp r0, #0x0 + beq _0203345E + ldr r0, _02033460 ; =0x021C5A00 + mov r1, #0x31 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_021D74E0 + ldr r0, _02033464 ; =FUN_020335D0 + bl FUN_021D83A8 + bl FUN_0202FA10 + ldr r0, _02033468 ; =FUN_020333F0 + mov r1, #0x0 + bl FUN_02031D20 +_0203345E: + pop {r3, pc} + .balign 4 +_02033460: .word 0x021C5A00 +_02033464: .word FUN_020335D0 +_02033468: .word FUN_020333F0 + + thumb_func_start FUN_0203346C +FUN_0203346C: ; 0x0203346C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020238F4 + bl FUN_02030F40 + cmp r0, #0x0 + beq _02033482 + mov r0, #0x0 + pop {r3-r5, pc} +_02033482: + mov r0, #0x1 + bl FUN_020166A8 + ldr r2, _020334D0 ; =0x00007080 + mov r0, #0x3 + mov r1, #0xf + bl FUN_02016828 + add r0, r5, #0x0 + mov r1, #0x17 + bl FUN_02031734 + mov r0, #0xf + add r1, r4, #0x0 + bl FUN_02016998 + ldr r1, _020334D4 ; =0x021C5A00 + ldr r2, [r1, #0x0] + str r0, [r2, #0x0] + ldr r0, [r1, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r2, r4, #0x0 + blx MI_CpuFill8 + ldr r0, _020334D4 ; =0x021C5A00 + mov r1, #0x0 + ldr r2, [r0, #0x0] + add r2, #0x40 + strb r1, [r2, #0x0] + ldr r0, [r0, #0x0] + str r5, [r0, #0x28] + ldr r0, _020334D8 ; =FUN_0203341C + bl FUN_02031D20 + ldr r0, _020334D4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + pop {r3-r5, pc} + .balign 4 +_020334D0: .word 0x00007080 +_020334D4: .word 0x021C5A00 +_020334D8: .word FUN_0203341C + + thumb_func_start FUN_020334DC +FUN_020334DC: ; 0x020334DC + ldr r0, _020334E4 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020334E4: .word 0x021C5A00 + + thumb_func_start FUN_020334E8 +FUN_020334E8: ; 0x020334E8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0203350C ; =0x021C5A00 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _020334FE + add r2, #0x44 + strb r4, [r2, #0x0] + ldr r0, [r0, #0x0] + add r0, #0x45 + strb r1, [r0, #0x0] +_020334FE: + add r0, r4, #0x0 + bl FUN_0202EE84 + add r0, r4, #0x0 + bl FUN_0202EEB0 + pop {r4, pc} + .balign 4 +_0203350C: .word 0x021C5A00 + + thumb_func_start FUN_02033510 +FUN_02033510: ; 0x02033510 + ldr r0, _02033530 ; =0x021C5A00 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0203352C + add r0, r1, #0x0 + add r0, #0x4e + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033526 + mov r0, #0x1 + bx lr +_02033526: + add r1, #0x45 + ldrb r0, [r1, #0x0] + bx lr +_0203352C: + mov r0, #0x0 + bx lr + .balign 4 +_02033530: .word 0x021C5A00 + + thumb_func_start FUN_02033534 +FUN_02033534: ; 0x02033534 + ldr r0, _02033548 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033542 + add r0, #0x3f + ldrb r0, [r0, #0x0] + bx lr +_02033542: + mov r0, #0x1 + bx lr + nop +_02033548: .word 0x021C5A00 + + thumb_func_start FUN_0203354C +FUN_0203354C: ; 0x0203354C + ldr r0, _02033560 ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0203355A + add r0, #0x40 + ldrb r0, [r0, #0x0] + bx lr +_0203355A: + mov r0, #0x0 + bx lr + nop +_02033560: .word 0x021C5A00 + + thumb_func_start FUN_02033564 +FUN_02033564: ; 0x02033564 + ldr r1, _02033570 ; =0x021C5A00 + ldr r3, _02033574 ; =MI_CpuCopy8 + ldr r1, [r1, #0x0] + mov r2, #0x6 + add r1, r1, #0x4 + bx r3 + .balign 4 +_02033570: .word 0x021C5A00 +_02033574: .word MI_CpuCopy8 + + thumb_func_start FUN_02033578 +FUN_02033578: ; 0x02033578 + add r1, r0, #0x0 + ldr r0, _02033588 ; =0x021C5A00 + ldr r3, _0203358C ; =MI_CpuCopy8 + ldr r0, [r0, #0x0] + mov r2, #0x6 + add r0, r0, #0x4 + bx r3 + nop +_02033588: .word 0x021C5A00 +_0203358C: .word MI_CpuCopy8 + + thumb_func_start FUN_02033590 +FUN_02033590: ; 0x02033590 + push {r3, lr} + bl FUN_02033534 + cmp r0, #0x13 + blt _0203359E + mov r0, #0x1 + pop {r3, pc} +_0203359E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020335A4 +FUN_020335A4: ; 0x020335A4 + ldr r1, _020335B4 ; =0x021C5A00 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _020335B0 + add r1, #0x47 + strb r0, [r1, #0x0] +_020335B0: + bx lr + nop +_020335B4: .word 0x021C5A00 + + thumb_func_start FUN_020335B8 +FUN_020335B8: ; 0x020335B8 + ldr r0, _020335CC ; =0x021C5A00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020335C6 + add r0, #0x47 + ldrb r0, [r0, #0x0] + bx lr +_020335C6: + mov r0, #0x0 + bx lr + nop +_020335CC: .word 0x021C5A00 + + thumb_func_start FUN_020335D0 +FUN_020335D0: ; 0x020335D0 + push {r3, lr} + add r2, r0, #0x0 + mov r0, #0x0 + mov r1, #0x1 + bl FUN_02033F70 +_020335DC: + b _020335DC + .balign 4 + + thumb_func_start FUN_020335E0 +FUN_020335E0: ; 0x020335E0 + push {r3, lr} + mov r0, #0x0 + mov r1, #0x4 + add r2, r0, #0x0 + bl FUN_02033F70 +_020335EC: + b _020335EC + .balign 4 + + thumb_func_start FUN_020335F0 +FUN_020335F0: ; 0x020335F0 + bx lr + .balign 4 + + thumb_func_start FUN_020335F4 +FUN_020335F4: ; 0x020335F4 + push {r3, lr} + bl FUN_02033510 + cmp r0, #0x0 + beq _0203366C + bl FUN_020311F0 + cmp r0, #0x0 + bne _02033622 + bl FUN_02033250 + cmp r0, #0x0 + bne _02033622 + bl FUN_02033398 + cmp r0, #0x0 + bne _02033622 + ldr r0, _02033670 ; =0x021C5A00 + ldr r0, [r0, #0x0] + add r0, #0x4e + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0203366C +_02033622: + bl FUN_020335B8 + cmp r0, #0x0 + bne _0203366C + bl FUN_0200541C + ldr r0, _02033670 ; =0x021C5A00 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x28] + bl FUN_0202287C + ldr r1, _02033674 ; =0x021C4918 + mov r0, #0x1 + strb r0, [r1, #0x4] + ldr r1, _02033670 ; =0x021C5A00 + ldr r2, [r1, #0x0] + add r1, r2, #0x0 + add r1, #0x4e + ldrb r1, [r1, #0x0] + cmp r1, #0x3 + bne _02033654 + mov r0, #0x3 + bl FUN_020335A4 + pop {r3, pc} +_02033654: + add r2, #0x3f + ldrb r1, [r2, #0x0] + cmp r1, #0x19 + beq _02033660 + cmp r1, #0xf + bne _02033668 +_02033660: + mov r0, #0x2 + bl FUN_020335A4 + pop {r3, pc} +_02033668: + bl FUN_020335A4 +_0203366C: + pop {r3, pc} + nop +_02033670: .word 0x021C5A00 +_02033674: .word 0x021C4918 + + thumb_func_start FUN_02033678 +FUN_02033678: ; 0x02033678 + push {r3, lr} + bl FUN_0202EDD8 + cmp r0, #0x0 + bne _0203368A + bl FUN_02031810 + cmp r0, #0x0 + bne _0203368E +_0203368A: + mov r0, #0x1 + pop {r3, pc} +_0203368E: + bl FUN_0202E344 + cmp r0, #0x0 + bne _0203369A + mov r0, #0x1 + pop {r3, pc} +_0203369A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020336A0 +FUN_020336A0: ; 0x020336A0 + push {r3, lr} + ldr r1, _020336BC ; =0x021C5A00 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _020336B6 + add r1, #0x4e + strb r0, [r1, #0x0] + bl FUN_02031468 + mov r0, #0x1 + pop {r3, pc} +_020336B6: + mov r0, #0x0 + pop {r3, pc} + nop +_020336BC: .word 0x021C5A00 + + thumb_func_start FUN_020336C0 +FUN_020336C0: ; 0x020336C0 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020336C8 +FUN_020336C8: ; 0x020336C8 + push {r4-r6, lr} + add r4, r2, #0x0 + add r6, r1, #0x0 + ldr r1, [r4, #0x0] + add r5, r0, #0x0 + cmp r1, #0x6 + bhi _02033774 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020336E2: ; jump table (using 16-bit offset) + .short _020336F0 - _020336E2 - 2; case 0 + .short _020336FC - _020336E2 - 2; case 1 + .short _02033714 - _020336E2 - 2; case 2 + .short _0203373A - _020336E2 - 2; case 3 + .short _0203374A - _020336E2 - 2; case 4 + .short _0203376A - _020336E2 - 2; case 5 + .short _02033770 - _020336E2 - 2; case 6 +_020336F0: + mov r0, #0x6f + bl FUN_02031588 + mov r0, #0x1 + str r0, [r4, #0x0] + b _02033774 +_020336FC: + mov r0, #0x6f + bl FUN_020315D8 + cmp r0, #0x0 + beq _02033774 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02022840 + mov r0, #0x2 + str r0, [r4, #0x0] + b _02033774 +_02033714: + bl FUN_02022854 + add r5, r0, #0x0 + cmp r5, #0x2 + bne _02033722 + bl ErrorHandling +_02033722: + cmp r5, #0x3 + bne _0203372A + bl ErrorHandling +_0203372A: + cmp r5, #0x1 + bne _02033774 + mov r0, #0x3 + str r0, [r4, #0x0] + mov r0, #0x70 + bl FUN_02031588 + b _02033774 +_0203373A: + mov r0, #0x70 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02033774 + mov r0, #0x4 + str r0, [r4, #0x0] + b _02033774 +_0203374A: + bl FUN_02022854 + add r5, r0, #0x0 + cmp r5, #0x3 + bne _02033758 + bl ErrorHandling +_02033758: + cmp r5, #0x1 + bne _02033760 + bl ErrorHandling +_02033760: + cmp r5, #0x2 + bne _02033774 + mov r0, #0x5 + str r0, [r4, #0x0] + b _02033774 +_0203376A: + mov r0, #0x6 + str r0, [r4, #0x0] + b _02033774 +_02033770: + mov r0, #0x1 + pop {r4-r6, pc} +_02033774: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02033778 +FUN_02033778: ; 0x02033778 + push {r3-r7, lr} + str r0, [sp, #0x0] + bl FUN_02030F20 + add r7, r0, #0x0 + mov r0, #0x0 + bl FUN_0202DFA4 + cmp r0, #0x0 + beq _020337C6 + mov r5, #0x0 + cmp r7, #0x0 + ble _020337C6 +_02033792: + bl FUN_02031190 + cmp r5, r0 + beq _020337C0 + add r0, r5, #0x0 + bl FUN_0202E020 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202E044 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202DFA4 + bl FUN_02023A70 + add r3, r0, #0x0 + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020337C8 +_020337C0: + add r5, r5, #0x1 + cmp r5, r7 + blt _02033792 +_020337C6: + pop {r3-r7, pc} + + thumb_func_start FUN_020337C8 +FUN_020337C8: ; 0x020337C8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02029B40 + cmp r0, #0x0 + bne _020337E4 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + mov r3, #0x1 + bl FUN_02029B90 +_020337E4: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020337E8 +FUN_020337E8: ; 0x020337E8 + push {r3-r5, lr} + mov r1, #0x72 + lsl r1, r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, #0x1f + mov r1, #0x1f + bic r0, r1 + blx FUN_02096B14 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203380C +FUN_0203380C: ; 0x0203380C + push {r4, lr} + bl FUN_02028228 + add r4, r0, #0x0 + blx FUN_02096FB0 + cmp r0, #0x0 + bne _0203382A + ldr r1, _0203382C ; =0x4144414A + add r0, r4, #0x0 + blx thunk_FUN_02097190 + add r0, r4, #0x0 + blx thunk_FUN_02096e4c +_0203382A: + pop {r4, pc} + .balign 4 +_0203382C: .word 0x4144414A + + thumb_func_start FUN_02033830 +FUN_02033830: ; 0x02033830 + push {r3-r4, lr} + sub sp, #0xc + bl FUN_02028228 + add r4, r0, #0x0 + add r1, sp, #0x0 + blx FUN_02096CCC + add r0, r4, #0x0 + add r1, sp, #0x0 + blx FUN_02096DA0 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0203384C +FUN_0203384C: ; 0x0203384C + push {r4, lr} + bl FUN_020286EC + bl FUN_02028228 + add r4, r0, #0x0 + blx FUN_02096F80 + cmp r0, #0x0 + beq _0203386E + add r0, r4, #0x0 + blx FUN_02096F18 + cmp r0, #0x0 + beq _0203386E + mov r0, #0x1 + pop {r4, pc} +_0203386E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02033874 +FUN_02033874: ; 0x02033874 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r5, r1, #0x0 + str r2, [sp, #0x0] + bl FUN_020286EC + bl FUN_02028228 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020286EC + mov r1, #0x0 + bl FUN_0202838C + add r4, r0, #0x0 + mov r1, #0x0 + ldr r0, [sp, #0x0] + mvn r1, r1 + str r1, [r0, #0x0] + add r0, r5, #0x0 + blx FUN_0209700C + cmp r0, #0x0 + bne _020338AE + add sp, #0x8 + mov r0, #0x3 + pop {r3-r7, pc} +_020338AE: + mov r7, #0x0 +_020338B0: + add r0, r5, #0x0 + add r1, r4, #0x0 + blx FUN_02096B78 + cmp r0, #0x0 + beq _020338C6 + ldr r0, [sp, #0x0] + add sp, #0x8 + str r7, [r0, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} +_020338C6: + add r0, r6, #0x0 + add r1, r5, #0x0 + blx FUN_02096DA0 + cmp r0, #0x0 + ble _020338F4 + add r0, r6, #0x0 + add r1, r5, #0x0 + blx FUN_02096DA0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r1, r4, #0x0 + blx FUN_02096DA0 + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _020338F4 + ldr r0, [sp, #0x0] + add sp, #0x8 + str r7, [r0, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_020338F4: + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bge _0203390A + add r0, r4, #0x0 + blx FUN_0209700C + cmp r0, #0x0 + bne _0203390A + ldr r0, [sp, #0x0] + str r7, [r0, #0x0] +_0203390A: + add r7, r7, #0x1 + add r4, #0xc + cmp r7, #0x20 + blt _020338B0 + mov r0, #0x2 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02033918 +FUN_02033918: ; 0x02033918 + push {r3-r7, lr} + sub sp, #0x18 + add r4, r0, #0x0 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r6, r3, #0x0 + bl FUN_020286EC + bl FUN_02028228 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020286EC + mov r1, #0x0 + bl FUN_0202838C + add r5, r0, #0x0 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r7, #0x0 + blx FUN_020973B4 + cmp r0, #0x0 + bne _02033950 + add sp, #0x18 + mov r0, #0x3 + pop {r3-r7, pc} +_02033950: + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, sp, #0xc + blx FUN_02096D2C + add r0, r7, #0x0 + add r1, sp, #0xc + blx FUN_02096DA0 + cmp r0, #0x0 + bgt _0203396C + add sp, #0x18 + mov r0, #0x3 + pop {r3-r7, pc} +_0203396C: + mov r0, #0x0 + mvn r0, r0 + str r0, [r6, #0x0] + mov r4, #0x0 +_02033974: + add r0, r7, #0x0 + add r1, sp, #0xc + blx FUN_02096DA0 + str r0, [sp, #0x8] + add r0, r7, #0x0 + add r1, r5, #0x0 + blx FUN_02096DA0 + ldr r1, [sp, #0x8] + cmp r1, r0 + bne _02033994 + add sp, #0x18 + str r4, [r6, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} +_02033994: + ldr r0, [r6, #0x0] + cmp r0, #0x0 + bge _020339A6 + add r0, r5, #0x0 + blx FUN_0209700C + cmp r0, #0x0 + bne _020339A6 + str r4, [r6, #0x0] +_020339A6: + add r4, r4, #0x1 + add r5, #0xc + cmp r4, #0x20 + blt _02033974 + mov r0, #0x2 + add sp, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_020339B4 +FUN_020339B4: ; 0x020339B4 + push {r4-r7, lr} + sub sp, #0x14 + add r6, r1, #0x0 + mov r1, #0x0 + add r5, r0, #0x0 + str r2, [sp, #0x4] + str r1, [sp, #0xc] + bl FUN_020286EC + mov r1, #0x0 + bl FUN_0202838C + str r0, [sp, #0x8] + mov r4, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _02033A68 +_020339D8: + bl FUN_02031190 + cmp r4, r0 + beq _02033A5C + add r0, r4, #0x0 + bl FUN_0202DFD8 + add r7, r0, #0x0 + beq _02033A5C + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x10 + bl FUN_02033874 + str r0, [r6, #0x0] + cmp r0, #0x3 + bne _020339FE + bl ErrorHandling +_020339FE: + ldr r0, [r6, #0x0] + cmp r0, #0x0 + bne _02033A1C + mov r0, #0x2 + str r0, [sp, #0x0] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02033A70 + add r0, r5, #0x0 + bl FUN_0202E1BC + b _02033A5C +_02033A1C: + cmp r0, #0x1 + bne _02033A54 + bl FUN_02033590 + cmp r0, #0x0 + bne _02033A5C + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02033A70 + ldr r2, [sp, #0x10] + mov r1, #0xc + add r3, r2, #0x0 + mul r3, r1 + ldr r1, [sp, #0x8] + add r0, r7, #0x0 + add r1, r1, r3 + mov r2, #0xc + blx MI_CpuCopy8 + add r0, r5, #0x0 + bl FUN_0202E1BC + b _02033A5C +_02033A54: + cmp r0, #0x2 + bne _02033A5C + mov r0, #0x1 + str r0, [sp, #0xc] +_02033A5C: + add r6, r6, #0x4 + add r4, r4, #0x1 + bl FUN_02030F20 + cmp r4, r0 + blt _020339D8 +_02033A68: + ldr r0, [sp, #0xc] + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02033A70 +FUN_02033A70: ; 0x02033A70 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r2, #0x0 + str r0, [sp, #0x0] + add r7, r1, #0x0 + str r3, [sp, #0x4] + bl FUN_020286EC + add r1, r5, #0x0 + add r4, r0, #0x0 + bl FUN_0202838C + str r0, [sp, #0x8] + add r0, r7, #0x0 + bl FUN_0202DFA4 + add r6, r0, #0x0 + ldr r0, [sp, #0x28] + cmp r0, #0x2 + beq _02033AA6 + add r0, r7, #0x0 + bl FUN_0202DFD8 + ldr r1, [sp, #0x8] + mov r2, #0xc + blx MI_CpuCopy8 +_02033AA6: + ldr r0, [sp, #0x28] + cmp r0, #0x0 + bne _02033AEC + ldr r1, [sp, #0x4] + add r0, r6, #0x0 + bl FUN_020239A0 + str r0, [sp, #0xc] + ldr r2, [sp, #0xc] + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020283C0 + ldr r0, [sp, #0xc] + bl FUN_02021A20 + add r0, r6, #0x0 + bl FUN_020239CC + add r3, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x8 + bl FUN_020282E8 + add r0, r6, #0x0 + bl FUN_020239BC + add r3, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_020282E8 + b _02033B22 +_02033AEC: + cmp r0, #0x1 + bne _02033B22 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x8 + bl FUN_0202822C + cmp r0, #0x2 + bne _02033B22 + add r0, r6, #0x0 + bl FUN_020239CC + add r3, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x8 + bl FUN_020282E8 + add r0, r6, #0x0 + bl FUN_020239BC + add r3, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_020282E8 +_02033B22: + ldr r1, [sp, #0x4] + mov r0, #0x78 + bl FUN_020219F4 + str r0, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_0202DFFC + add r1, r0, #0x0 + ldr r0, [sp, #0x10] + bl FUN_02021E28 + ldr r2, [sp, #0x10] + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02028404 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r6, #0x0 + bl FUN_02023A28 + add r3, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x7 + bl FUN_020282E8 + ldr r0, [sp, #0x0] + bl FUN_0202E1BC + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02033B68 +FUN_02033B68: ; 0x02033B68 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r2, #0x0 + mov r2, #0x7 + add r6, r3, #0x0 + ldr r1, [sp, #0x10] + mov r0, #0x1 + lsl r2, r2, #0x6 + add r3, r4, #0x0 + bl FUN_02033D3C + ldr r1, [sp, #0x10] + mov r0, #0x1 + add r2, r4, #0x0 + bl FUN_02033D9C + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_020169D8 + add r4, r0, #0x0 + ldr r0, _02033BC4 ; =FUN_02033BC8 + add r1, r4, #0x0 + mov r2, #0x5 + bl FUN_0200CA98 + str r0, [r4, #0x18] + strh r5, [r4, #0xc] + strh r6, [r4, #0xe] + mov r1, #0x0 + str r1, [r4, #0x0] + mov r0, #0x3 + str r0, [r4, #0x4] + ldr r0, [sp, #0x14] + str r0, [r4, #0x14] + ldr r0, [sp, #0x10] + str r1, [r4, #0x8] + strb r0, [r4, #0x10] + strb r1, [r4, #0x12] + mov r0, #0x7 + strb r1, [r4, #0x11] + lsl r0, r0, #0x18 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + pop {r4-r6, pc} + nop +_02033BC4: .word FUN_02033BC8 + + thumb_func_start FUN_02033BC8 +FUN_02033BC8: ; 0x02033BC8 + push {r3-r7, lr} + add r5, r1, #0x0 + ldrb r0, [r5, #0x11] + cmp r0, #0x1 + beq _02033BD8 + cmp r0, #0x2 + beq _02033BEE + b _02033C04 +_02033BD8: + ldr r0, _02033CB0 ; =0x04000304 + ldrh r1, [r0, #0x0] + lsr r0, r0, #0xb + and r0, r1 + asr r0, r0, #0xf + cmp r0, #0x1 + bne _02033BEA + mov r6, #0x1 + b _02033C06 +_02033BEA: + mov r6, #0x2 + b _02033C06 +_02033BEE: + ldr r0, _02033CB0 ; =0x04000304 + ldrh r1, [r0, #0x0] + lsr r0, r0, #0xb + and r0, r1 + asr r0, r0, #0xf + cmp r0, #0x1 + bne _02033C00 + mov r6, #0x2 + b _02033C06 +_02033C00: + mov r6, #0x1 + b _02033C06 +_02033C04: + mov r6, #0x1 +_02033C06: + ldr r4, [r5, #0x4] + cmp r6, #0x1 + bne _02033C1E + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + ldr r0, _02033CB4 ; =0x00300010 + add r7, r1, #0x0 + and r7, r0 + blx GX_GetBankForOBJ + b _02033C2C +_02033C1E: + ldr r0, _02033CB8 ; =0x04001000 + ldr r1, [r0, #0x0] + ldr r0, _02033CB4 ; =0x00300010 + add r7, r1, #0x0 + and r7, r0 + blx GX_GetBankForSubOBJ +_02033C2C: + cmp r7, #0x10 + beq _02033C38 + ldr r1, _02033CBC ; =0x00200010 + cmp r7, r1 + beq _02033C54 + b _02033C6C +_02033C38: + cmp r0, #0x40 + beq _02033C40 + cmp r0, #0x20 + bne _02033C4A +_02033C40: + mov r0, #0x1f + lsl r1, r4, #0x2 + lsl r0, r0, #0x4 + add r1, r1, r0 + b _02033C74 +_02033C4A: + mov r0, #0x3f + lsl r1, r4, #0x2 + lsl r0, r0, #0x4 + add r1, r1, r0 + b _02033C74 +_02033C54: + cmp r0, #0x30 + beq _02033C5C + cmp r0, #0x50 + bne _02033C64 +_02033C5C: + mov r0, #0x9f + lsl r0, r0, #0x2 + add r1, r4, r0 + b _02033C74 +_02033C64: + mov r0, #0xff + lsl r0, r0, #0x2 + add r1, r4, r0 + b _02033C74 +_02033C6C: + mov r0, #0xfe + lsl r1, r4, #0x1 + lsl r0, r0, #0x2 + add r1, r1, r0 +_02033C74: + cmp r6, #0x1 + bne _02033C7E + mov r2, #0x7 + lsl r2, r2, #0x18 + b _02033C80 +_02033C7E: + ldr r2, _02033CC0 ; =0x07000400 +_02033C80: + ldrh r3, [r5, #0xe] + ldrh r0, [r5, #0xc] + lsl r3, r3, #0x18 + lsr r4, r3, #0x18 + mov r3, #0x1 + lsl r0, r0, #0x17 + lsl r3, r3, #0x1e + lsr r0, r0, #0x7 + orr r3, r4 + orr r0, r3 + str r0, [r2, #0x0] + mov r0, #0xe + lsl r0, r0, #0xc + orr r0, r1 + strh r0, [r2, #0x4] + ldr r1, [r5, #0x1c] + cmp r2, r1 + beq _02033CAE + ldr r0, _02033CC4 ; =0x40000200 + str r0, [r1, #0x0] + mov r0, #0x0 + strh r0, [r1, #0x4] + str r2, [r5, #0x1c] +_02033CAE: + pop {r3-r7, pc} + .balign 4 +_02033CB0: .word 0x04000304 +_02033CB4: .word 0x00300010 +_02033CB8: .word 0x04001000 +_02033CBC: .word 0x00200010 +_02033CC0: .word 0x07000400 +_02033CC4: .word 0x40000200 + + thumb_func_start FUN_02033CC8 +FUN_02033CC8: ; 0x02033CC8 + cmp r1, #0x4 + bge _02033CD2 + str r1, [r0, #0x4] + mov r1, #0x0 + str r1, [r0, #0x8] +_02033CD2: + bx lr + + thumb_func_start FUN_02033CD4 +FUN_02033CD4: ; 0x02033CD4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x18] + bl FUN_0200CAB4 + mov r0, #0x7 + ldr r2, _02033D00 ; =0x40000200 + lsl r0, r0, #0x18 + str r2, [r0, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x4] + ldrb r0, [r4, #0x12] + cmp r0, #0x0 + beq _02033CF6 + ldr r0, _02033D04 ; =0x07000400 + str r2, [r0, #0x0] + strh r1, [r0, #0x4] +_02033CF6: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + nop +_02033D00: .word 0x40000200 +_02033D04: .word 0x07000400 + + thumb_func_start FUN_02033D08 +FUN_02033D08: ; 0x02033D08 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r2, #0x7 + ldrb r1, [r5, #0x10] + mov r0, #0x2 + lsl r2, r2, #0x6 + add r3, r6, #0x0 + bl FUN_02033D3C + ldrb r1, [r5, #0x10] + mov r0, #0x2 + add r2, r6, #0x0 + bl FUN_02033D9C + cmp r4, #0x0 + beq _02033D30 + mov r0, #0x1 + b _02033D32 +_02033D30: + mov r0, #0x2 +_02033D32: + strb r0, [r5, #0x11] + mov r0, #0x1 + strb r0, [r5, #0x12] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02033D3C +FUN_02033D3C: ; 0x02033D3C + push {r3-r5, lr} + sub sp, #0x8 + mov r1, #0x96 + add r5, r0, #0x0 + add r0, r3, #0x0 + lsl r1, r1, #0x2 + add r4, r2, #0x0 + bl FUN_020169D8 + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02033D92 + ldr r0, _02033D98 ; =0x02105D88 + add r1, sp, #0x4 + bl FUN_020161F8 + mov r1, #0x96 + ldr r0, [sp, #0x4] + lsl r1, r1, #0x2 + blx DC_FlushRange + ldr r0, [sp, #0x4] + add r1, sp, #0x0 + blx FUN_020B0138 + cmp r5, #0x1 + bne _02033D80 + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + blx GX_LoadOBJPltt + b _02033D8C +_02033D80: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0xc] + mov r2, #0x20 + blx GXS_LoadOBJPltt +_02033D8C: + ldr r0, [sp, #0x4] + bl FUN_02016A18 +_02033D92: + add sp, #0x8 + pop {r3-r5, pc} + nop +_02033D98: .word 0x02105D88 + + thumb_func_start FUN_02033D9C +FUN_02033D9C: ; 0x02033D9C + push {r3-r5, lr} + sub sp, #0x8 + add r4, r1, #0x0 + mov r1, #0x96 + add r5, r0, #0x0 + add r0, r2, #0x0 + lsl r1, r1, #0x2 + bl FUN_020169D8 + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02033E58 + cmp r4, #0x0 + add r1, sp, #0x4 + beq _02033DC2 + ldr r0, _02033E5C ; =0x02105D98 + bl FUN_020161F8 + b _02033DC8 +_02033DC2: + ldr r0, _02033E60 ; =0x02105DA8 + bl FUN_020161F8 +_02033DC8: + mov r1, #0x96 + ldr r0, [sp, #0x4] + lsl r1, r1, #0x2 + blx DC_FlushRange + ldr r0, [sp, #0x4] + add r1, sp, #0x0 + blx FUN_020B0088 + cmp r5, #0x1 + bne _02033DF0 + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + ldr r0, _02033E64 ; =0x00300010 + add r4, r1, #0x0 + and r4, r0 + blx GX_GetBankForOBJ + b _02033E00 +_02033DF0: + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + ldr r0, _02033E64 ; =0x00300010 + add r4, r1, #0x0 + and r4, r0 + blx GX_GetBankForOBJ +_02033E00: + cmp r4, #0x10 + beq _02033E0C + ldr r1, _02033E68 ; =0x00200010 + cmp r4, r1 + beq _02033E20 + b _02033E30 +_02033E0C: + cmp r0, #0x40 + beq _02033E14 + cmp r0, #0x20 + bne _02033E1A +_02033E14: + mov r1, #0x3e + lsl r1, r1, #0x8 + b _02033E34 +_02033E1A: + mov r1, #0x7e + lsl r1, r1, #0x8 + b _02033E34 +_02033E20: + cmp r0, #0x30 + beq _02033E28 + cmp r0, #0x50 + bne _02033E2C +_02033E28: + ldr r1, _02033E6C ; =0x00013E00 + b _02033E34 +_02033E2C: + ldr r1, _02033E70 ; =0x0001FE00 + b _02033E34 +_02033E30: + mov r1, #0xfe + lsl r1, r1, #0x8 +_02033E34: + cmp r5, #0x1 + bne _02033E46 + ldr r0, [sp, #0x0] + mov r2, #0x2 + ldr r0, [r0, #0x14] + lsl r2, r2, #0x8 + blx GX_LoadOBJ + b _02033E52 +_02033E46: + ldr r0, [sp, #0x0] + mov r2, #0x2 + ldr r0, [r0, #0x14] + lsl r2, r2, #0x8 + blx GXS_LoadOBJ +_02033E52: + ldr r0, [sp, #0x4] + bl FUN_02016A18 +_02033E58: + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02033E5C: .word 0x02105D98 +_02033E60: .word 0x02105DA8 +_02033E64: .word 0x00300010 +_02033E68: .word 0x00200010 +_02033E6C: .word 0x00013E00 +_02033E70: .word 0x0001FE00 + + thumb_func_start FUN_02033E74 +FUN_02033E74: ; 0x02033E74 + push {r4, lr} + mov r4, #0x0 + bl FUN_02033590 + cmp r0, #0x0 + beq _02033E82 + mov r4, #0x1 +_02033E82: + mov r0, #0xf0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_02033E90 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02033E90 +FUN_02033E90: ; 0x02033E90 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0202E4DC + cmp r0, #0x0 + beq _02033EC4 + ldr r0, _02033EC8 ; =0x021C5A04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033EAE + bl FUN_02033ED0 +_02033EAE: + ldr r0, _02033ECC ; =0x02105D74 + str r4, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x0 + mov r1, #0x5b + add r2, r5, #0x0 + add r3, r6, #0x0 + bl FUN_02033B68 + ldr r1, _02033EC8 ; =0x021C5A04 + str r0, [r1, #0x0] +_02033EC4: + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_02033EC8: .word 0x021C5A04 +_02033ECC: .word 0x02105D74 + + thumb_func_start FUN_02033ED0 +FUN_02033ED0: ; 0x02033ED0 + push {r3, lr} + ldr r0, _02033EE8 ; =0x021C5A04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033EE4 + bl FUN_02033CD4 + ldr r0, _02033EE8 ; =0x021C5A04 + mov r1, #0x0 + str r1, [r0, #0x0] +_02033EE4: + pop {r3, pc} + nop +_02033EE8: .word 0x021C5A04 + + thumb_func_start FUN_02033EEC +FUN_02033EEC: ; 0x02033EEC + push {r3, lr} + add r1, r0, #0x0 + ldr r0, _02033F00 ; =0x021C5A04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033EFC + bl FUN_02033CC8 +_02033EFC: + pop {r3, pc} + nop +_02033F00: .word 0x021C5A04 + + thumb_func_start FUN_02033F04 +FUN_02033F04: ; 0x02033F04 + push {r3, lr} + add r3, r0, #0x0 + ldr r0, _02033F1C ; =0x021C5A04 + add r2, r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02033F18 + add r1, r3, #0x0 + bl FUN_02033D08 +_02033F18: + pop {r3, pc} + nop +_02033F1C: .word 0x021C5A04 + + thumb_func_start FUN_02033F20 +FUN_02033F20: ; 0x02033F20 + push {r3, lr} + bl FUN_02030F40 + cmp r0, #0x0 + beq _02033F40 + bl FUN_02030F20 + cmp r0, #0x1 + bgt _02033F3A + bl FUN_02033590 + cmp r0, #0x0 + beq _02033F4C +_02033F3A: + bl FUN_02033E74 + pop {r3, pc} +_02033F40: + bl FUN_02033590 + cmp r0, #0x0 + beq _02033F4C + bl FUN_02033E74 +_02033F4C: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02033F50 +FUN_02033F50: ; 0x02033F50 + ldr r3, _02033F64 ; =0x027E0000 + ldr r1, _02033F68 ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + ldr r3, _02033F6C ; =MI_WaitDma + mov r0, #0x3 + bx r3 + nop +_02033F64: .word 0x027E0000 +_02033F68: .word 0x00003FF8 +_02033F6C: .word MI_WaitDma + + thumb_func_start FUN_02033F70 +FUN_02033F70: ; 0x02033F70 + push {r3-r7, lr} + sub sp, #0x28 + add r4, r0, #0x0 + str r2, [sp, #0xc] + cmp r1, #0x4 + bhi _02033F92 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02033F88: ; jump table (using 16-bit offset) + .short _02033F92 - _02033F88 - 2; case 0 + .short _02033F96 - _02033F88 - 2; case 1 + .short _02033F9A - _02033F88 - 2; case 2 + .short _02033F9E - _02033F88 - 2; case 3 + .short _02033FA2 - _02033F88 - 2; case 4 +_02033F92: + mov r5, #0x1 + b _02033FA4 +_02033F96: + mov r5, #0x2 + b _02033FA4 +_02033F9A: + mov r5, #0x3 + b _02033FA4 +_02033F9E: + mov r5, #0x4 + b _02033FA4 +_02033FA2: + mov r5, #0x5 +_02033FA4: + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + blx OS_DisableIrqMask + ldr r1, _02034154 ; =FUN_02033F50 + mov r0, #0x1 + blx OS_SetIrqFunction + mov r0, #0x1 + blx OS_EnableIrqMask + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02034158 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0203415C ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + ldr r0, _02034160 ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r3, _02034164 ; =0x04000050 + mov r1, #0x0 + strh r1, [r3, #0x0] + ldr r0, _02034168 ; =0x04001050 + sub r3, #0x50 + strh r1, [r0, #0x0] + ldr r2, [r3, #0x0] + ldr r1, _0203416C ; =0xFFFF1FFF + sub r0, #0x50 + and r2, r1 + str r2, [r3, #0x0] + ldr r2, [r0, #0x0] + and r1, r2 + str r1, [r0, #0x0] + ldr r0, _02034170 ; =0x020EECD0 + bl FUN_0201E66C + add r0, r4, #0x0 + bl FUN_02016B94 + add r6, r0, #0x0 + ldr r0, _02034174 ; =0x020EECA4 + bl FUN_02016BBC + mov r1, #0x0 + ldr r2, _02034178 ; =0x020EECB4 + add r0, r6, #0x0 + add r3, r1, #0x0 + bl FUN_02016C18 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r2, _0203417C ; =0x000001F7 + add r0, r6, #0x0 + mov r3, #0x2 + str r4, [sp, #0x4] + bl FUN_0200CB00 + mov r0, #0x0 + mov r1, #0x20 + add r2, r4, #0x0 + bl FUN_02002ED0 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + add r3, r4, #0x0 + bl FUN_02017F18 + ldr r1, _02034180 ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _02034180 ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc8 + add r3, r4, #0x0 + bl FUN_0200A86C + str r0, [sp, #0x10] + mov r0, #0x6 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + bl FUN_020219F4 + add r7, r0, #0x0 + mov r0, #0x6 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + bl FUN_020219F4 + str r0, [sp, #0x14] + bl FUN_0201BD5C + add r0, r4, #0x0 + bl FUN_0200AA80 + add r4, r0, #0x0 + ldr r2, _02034184 ; =0x020EEC9C + add r0, r6, #0x0 + add r1, sp, #0x18 + bl FUN_02019150 + mov r0, #0xd0 + str r0, [sp, #0x0] + mov r0, #0x90 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x18 + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r2, _0203417C ; =0x000001F7 + add r0, sp, #0x18 + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200CCA4 + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r2, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x0 + mov r3, #0x5 + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x14] + add r1, r5, #0x0 + bl FUN_0200A8E0 + ldr r2, [sp, #0x14] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_0200B7B8 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, sp, #0x18 + add r2, r7, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r7, #0x0 + bl FUN_02021A20 + bl FUN_0201E788 + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + add r0, sp, #0x18 + bl FUN_02019178 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + add r0, r4, #0x0 + bl FUN_0200AB18 + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0x28 + pop {r3-r7, pc} + nop +_02034154: .word FUN_02033F50 +_02034158: .word 0xFFFFE0FF +_0203415C: .word 0x04001000 +_02034160: .word 0x021C4918 +_02034164: .word 0x04000050 +_02034168: .word 0x04001050 +_0203416C: .word 0xFFFF1FFF +_02034170: .word 0x020EECD0 +_02034174: .word 0x020EECA4 +_02034178: .word 0x020EECB4 +_0203417C: .word 0x000001F7 +_02034180: .word 0x00006C21 +_02034184: .word 0x020EEC9C + + thumb_func_start FUN_02034188 +FUN_02034188: ; 0x02034188 + push {r4-r7, lr} + sub sp, #0x24 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + bl FUN_02015EF4 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02034368 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0203436C ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + ldr r0, _02034370 ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r3, _02034374 ; =0x04000050 + mov r0, #0x0 + strh r0, [r3, #0x0] + ldr r2, _02034378 ; =0x04001050 + sub r3, #0x50 + strh r0, [r2, #0x0] + ldr r1, [r3, #0x0] + ldr r0, _0203437C ; =0xFFFF1FFF + sub r2, #0x50 + and r1, r0 + str r1, [r3, #0x0] + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + ldr r0, _02034380 ; =0x020EED2C + bl FUN_0201E66C + add r0, r4, #0x0 + bl FUN_02016B94 + str r0, [sp, #0x10] + ldr r0, _02034384 ; =0x020EED00 + bl FUN_02016BBC + mov r1, #0x0 + ldr r0, [sp, #0x10] + ldr r2, _02034388 ; =0x020EED10 + add r3, r1, #0x0 + bl FUN_02016C18 + ldr r0, [sp, #0x10] + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [sp, #0x10] + ldr r2, _0203438C ; =0x000001F7 + mov r3, #0x2 + str r4, [sp, #0x4] + bl FUN_0200CB00 + mov r0, #0x0 + mov r1, #0x20 + add r2, r4, #0x0 + bl FUN_02002ED0 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + add r3, r4, #0x0 + bl FUN_02017F18 + ldr r1, _02034390 ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _02034390 ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + ldr r2, _02034394 ; =0x00000265 + mov r0, #0x1 + mov r1, #0x1a + add r3, r4, #0x0 + bl FUN_0200A86C + str r0, [sp, #0xc] + mov r0, #0x6 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + bl FUN_0201BD5C + ldr r0, [sp, #0x10] + ldr r2, _02034398 ; =0x020EECF8 + add r1, sp, #0x14 + bl FUN_02019150 + mov r0, #0xd0 + str r0, [sp, #0x0] + mov r0, #0x90 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x14 + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r2, _0203438C ; =0x000001F7 + add r0, sp, #0x14 + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200CCA4 + ldr r0, [sp, #0xc] + mov r1, #0xf + add r2, r4, #0x0 + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, sp, #0x14 + add r2, r4, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r4, #0x0 + bl FUN_02021A20 + bl FUN_0201E788 + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + ldr r4, _0203439C ; =0x04000130 + ldr r6, _020343A0 ; =0x027FFFA8 + mov r7, #0x1 +_020342E4: + ldrh r1, [r4, #0x0] + ldrh r0, [r6, #0x0] + orr r1, r0 + ldr r0, _020343A4 ; =0x00002FFF + eor r1, r0 + and r0, r1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + bl FUN_02000FE8 + add r0, r5, #0x0 + tst r0, r7 + bne _02034308 + mov r0, #0x1 + add r1, r0, #0x0 + blx OS_WaitIrq + b _020342E4 +_02034308: + add r0, sp, #0x14 + bl FUN_02019178 + ldr r0, [sp, #0xc] + bl FUN_0200A8B8 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0201797C + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x3 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x4 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x5 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x6 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x7 + mov r1, #0x0 + bl FUN_0201797C + ldr r0, [sp, #0x10] + mov r1, #0x0 + bl FUN_020178A0 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add sp, #0x24 + pop {r4-r7, pc} + nop +_02034368: .word 0xFFFFE0FF +_0203436C: .word 0x04001000 +_02034370: .word 0x021C4918 +_02034374: .word 0x04000050 +_02034378: .word 0x04001050 +_0203437C: .word 0xFFFF1FFF +_02034380: .word 0x020EED2C +_02034384: .word 0x020EED00 +_02034388: .word 0x020EED10 +_0203438C: .word 0x000001F7 +_02034390: .word 0x00006C21 +_02034394: .word 0x00000265 +_02034398: .word 0x020EECF8 +_0203439C: .word 0x04000130 +_020343A0: .word 0x027FFFA8 +_020343A4: .word 0x00002FFF + + thumb_func_start FUN_020343A8 +FUN_020343A8: ; 0x020343A8 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + str r2, [sp, #0x0] + mov r2, #0x0 + strb r2, [r4, #0x1] + mov r0, #0xe1 + ldr r7, _02034488 ; =0x0000070A + ldr r6, _0203448C ; =0x00000A8E + mov r12, r1 + strb r2, [r4, #0x0] + add r3, r4, #0x0 + add r5, r2, #0x0 + lsl r0, r0, #0x2 +_020343C4: + add r1, r4, r2 + strh r5, [r3, #0x2] + strb r5, [r1, r7] + strh r5, [r3, r6] + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, r0 + blt _020343C4 + ldr r0, _02034490 ; =0x00001196 + mov r2, #0x0 +_020343D8: + add r1, r4, r5 + add r5, r5, #0x1 + strb r2, [r1, r0] + cmp r5, #0x10 + blt _020343D8 + mov r0, #0x29 + mov r1, r12 + mov r2, #0xb + bl FUN_02006528 + add r6, r0, #0x0 + ldrb r0, [r6, #0x0] + add r5, r6, #0x5 + strb r0, [r4, #0x1] + ldrb r0, [r6, #0x1] + strb r0, [r4, #0x0] + ldrb r0, [r6, #0x2] + str r0, [sp, #0x8] + ldrb r0, [r6, #0x3] + str r0, [sp, #0x4] + ldrb r7, [r6, #0x4] + cmp r7, #0x10 + bls _0203440A + bl ErrorHandling +_0203440A: + ldr r1, _02034490 ; =0x00001196 + add r0, r5, #0x0 + add r1, r4, r1 + add r2, r7, #0x0 + blx MI_CpuCopy8 + ldr r0, [sp, #0x8] + add r5, r5, r7 + cmp r0, #0x0 + beq _0203443A + ldrb r3, [r4, #0x1] + ldrb r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x2 + mul r2, r3 + lsl r2, r2, #0x1 + blx MI_CpuCopy8 + ldrb r1, [r4, #0x1] + ldrb r0, [r4, #0x0] + mul r0, r1 + lsl r0, r0, #0x1 + add r5, r5, r0 + b _0203444E +_0203443A: + ldrb r3, [r4, #0x1] + ldrb r2, [r4, #0x0] + ldr r0, [sp, #0x0] + add r1, r4, #0x2 + lsl r0, r0, #0x10 + mul r2, r3 + lsr r0, r0, #0x10 + lsl r2, r2, #0x1 + blx MIi_CpuClear16 +_0203444E: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _0203446C + ldrb r3, [r4, #0x1] + ldrb r2, [r4, #0x0] + ldr r1, _02034488 ; =0x0000070A + add r0, r5, #0x0 + add r1, r4, r1 + mul r2, r3 + blx MI_CpuCopy8 + ldrb r1, [r4, #0x1] + ldrb r0, [r4, #0x0] + mul r0, r1 + add r5, r5, r0 +_0203446C: + ldrb r3, [r4, #0x1] + ldrb r2, [r4, #0x0] + ldr r1, _0203448C ; =0x00000A8E + add r0, r5, #0x0 + mul r2, r3 + add r1, r4, r1 + lsl r2, r2, #0x1 + blx MI_CpuCopy8 + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02034488: .word 0x0000070A +_0203448C: .word 0x00000A8E +_02034490: .word 0x00001196 + + thumb_func_start FUN_02034494 +FUN_02034494: ; 0x02034494 + push {r3, lr} + ldr r1, _020344A8 ; =0x000011AA + mov r0, #0xb + bl FUN_02016998 + mov r1, #0x0 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + strb r1, [r0, #0x2] + pop {r3, pc} + .balign 4 +_020344A8: .word 0x000011AA + + thumb_func_start FUN_020344AC +FUN_020344AC: ; 0x020344AC + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0203474C + add r6, r0, #0x0 + add r0, r4, #0x4 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_020343A8 + strb r6, [r4, #0x2] + ldrb r0, [r4, #0x4] + strb r0, [r4, #0x1] + ldrb r0, [r4, #0x5] + strb r0, [r4, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020344D0 +FUN_020344D0: ; 0x020344D0 + ldr r3, _020344D4 ; =FUN_02016A18 + bx r3 + .balign 4 +_020344D4: .word FUN_02016A18 + + thumb_func_start FUN_020344D8 +FUN_020344D8: ; 0x020344D8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldrb r1, [r4, #0x0] + ldrb r0, [r4, #0x1] + mul r0, r1 + cmp r5, r0 + blt _020344EC + bl ErrorHandling +_020344EC: + lsl r0, r5, #0x1 + add r1, r4, r0 + ldr r0, _020344F8 ; =0x00000A92 + ldrh r0, [r1, r0] + pop {r3-r5, pc} + nop +_020344F8: .word 0x00000A92 + + thumb_func_start FUN_020344FC +FUN_020344FC: ; 0x020344FC + push {r4, lr} + add r4, r0, #0x0 + bne _02034506 + bl ErrorHandling +_02034506: + ldrb r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203450C +FUN_0203450C: ; 0x0203450C + push {r4, lr} + add r4, r0, #0x0 + bne _02034516 + bl ErrorHandling +_02034516: + ldrb r0, [r4, #0x1] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203451C +FUN_0203451C: ; 0x0203451C + push {r3-r7, lr} + add r7, r0, #0x0 + ldrb r0, [r7, #0x1] + add r5, r1, #0x0 + add r4, r2, #0x0 + ldrb r6, [r7, #0x0] + str r0, [sp, #0x0] + cmp r5, #0x0 + blt _02034532 + cmp r5, r6 + blt _02034536 +_02034532: + bl ErrorHandling +_02034536: + cmp r4, #0x0 + blt _02034540 + ldr r0, [sp, #0x0] + cmp r4, r0 + blt _02034544 +_02034540: + bl ErrorHandling +_02034544: + add r0, r4, #0x0 + mul r0, r6 + add r0, r5, r0 + lsl r0, r0, #0x1 + add r0, r7, r0 + ldrh r0, [r0, #0x6] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02034554 +FUN_02034554: ; 0x02034554 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + ldrb r1, [r5, #0x0] + ldrb r0, [r5, #0x1] + mul r0, r1 + cmp r4, #0x0 + blt _02034568 + cmp r4, r0 + blt _0203456C +_02034568: + bl ErrorHandling +_0203456C: + lsl r0, r4, #0x1 + add r0, r5, r0 + ldrh r0, [r0, #0x6] + pop {r3-r5, pc} + + thumb_func_start FUN_02034574 +FUN_02034574: ; 0x02034574 + ldrb r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_02034578 +FUN_02034578: ; 0x02034578 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [sp, #0x10] + add r4, r2, #0x0 + add r6, r3, #0x0 + cmp r4, r0 + blt _0203458A + bl ErrorHandling +_0203458A: + ldr r0, [sp, #0x10] + mul r0, r6 + add r4, r4, r0 + mov r0, #0xe1 + lsl r0, r0, #0x2 + cmp r4, r0 + blt _0203459C + bl ErrorHandling +_0203459C: + ldr r0, _020345A4 ; =0x0000070E + add r1, r5, r4 + ldrb r0, [r1, r0] + pop {r4-r6, pc} + .balign 4 +_020345A4: .word 0x0000070E + + thumb_func_start FUN_020345A8 +FUN_020345A8: ; 0x020345A8 + push {r3-r5, lr} + ldr r1, _020345D8 ; =0x00000708 + add r4, r0, #0x0 + bl FUN_02016998 + add r5, r0, #0x0 + mov r0, #0x29 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_02006528 + add r4, r0, #0x0 + ldrb r1, [r4, #0x4] + add r0, r4, #0x5 + ldr r2, _020345D8 ; =0x00000708 + add r0, r0, r1 + add r1, r5, #0x0 + blx MI_CpuCopy8 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 +_020345D8: .word 0x00000708 + + thumb_func_start FUN_020345DC +FUN_020345DC: ; 0x020345DC + push {r4, lr} + add r4, r0, #0x0 + bne _020345E6 + bl ErrorHandling +_020345E6: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020345F0 +FUN_020345F0: ; 0x020345F0 + mov r3, #0x1e + mul r3, r2 + add r1, r1, r3 + lsl r1, r1, #0x1 + ldrh r0, [r0, r1] + bx lr + + thumb_func_start FUN_020345FC +FUN_020345FC: ; 0x020345FC + push {r3-r5, lr} + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1fc + sub sp, #0x1c8 + add r3, r0, #0x0 + add r5, r1, #0x0 + lsl r1, r3, #0x10 + add r4, r2, #0x0 + add r0, sp, #0x0 + lsr r1, r1, #0x10 + mov r2, #0x0 + bl FUN_020343A8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + cmp r5, r0 + blt _0203462E + bl ErrorHandling +_0203462E: + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r4, r0 + blt _0203463A + bl ErrorHandling +_0203463A: + add r0, sp, #0x0 + ldrb r0, [r0, #0x1] + mul r0, r4 + add r0, r5, r0 + lsl r1, r0, #0x1 + add r0, sp, #0x0 + add r0, #0x2 + ldrh r0, [r0, r1] + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1fc + add sp, #0x1c8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02034660 +FUN_02034660: ; 0x02034660 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bne _0203466C + bl ErrorHandling +_0203466C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020344D8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02034678 +FUN_02034678: ; 0x02034678 + push {r4-r7} + ldr r1, _020346C4 ; =0x00000A92 + ldrb r7, [r0, #0x0] + add r2, r0, r1 + ldr r1, _020346C8 ; =0x0000070E + add r1, r0, r1 + ldrb r0, [r0, #0x2] + cmp r0, #0x0 + bne _020346BE + mov r0, #0x15 + add r6, r7, #0x0 + mul r6, r0 + add r5, r6, #0x0 + add r5, #0x17 + mov r4, #0xb0 + lsl r0, r5, #0x1 + add r6, #0x18 + strh r4, [r2, r0] + lsl r0, r6, #0x1 + strh r4, [r2, r0] + mov r0, #0x16 + add r3, r7, #0x0 + mul r3, r0 + add r0, r3, #0x0 + add r0, #0x17 + lsl r7, r0, #0x1 + add r3, #0x18 + strh r4, [r2, r7] + lsl r7, r3, #0x1 + strh r4, [r2, r7] + mov r2, #0x2 + strb r2, [r1, r5] + strb r2, [r1, r6] + strb r2, [r1, r0] + strb r2, [r1, r3] +_020346BE: + pop {r4-r7} + bx lr + nop +_020346C4: .word 0x00000A92 +_020346C8: .word 0x0000070E + + thumb_func_start FUN_020346CC +FUN_020346CC: ; 0x020346CC + push {r3-r4} + ldr r1, _0203470C ; =0x00000A92 + add r2, r0, r1 + ldrb r1, [r0, #0x0] + ldrb r0, [r0, #0x2] + cmp r0, #0x0 + bne _02034706 + mov r0, #0xf + mul r0, r1 + add r0, #0x1c + mov r3, #0x77 + lsl r0, r0, #0x1 + strh r3, [r2, r0] + lsl r0, r1, #0x4 + add r3, r0, #0x0 + add r3, #0x1b + mov r4, #0x78 + lsl r3, r3, #0x1 + strh r4, [r2, r3] + add r3, r0, #0x0 + add r3, #0x1c + add r0, r1, r0 + add r0, #0x1b + mov r4, #0x79 + lsl r3, r3, #0x1 + strh r4, [r2, r3] + mov r3, #0x7a + lsl r0, r0, #0x1 + strh r3, [r2, r0] +_02034706: + pop {r3-r4} + bx lr + nop +_0203470C: .word 0x00000A92 + + thumb_func_start FUN_02034710 +FUN_02034710: ; 0x02034710 + push {r3, lr} + ldr r1, _02034720 ; =0x0000022F + cmp r0, r1 + blo _0203471E + bl ErrorHandling + mov r0, #0x3 +_0203471E: + pop {r3, pc} + .balign 4 +_02034720: .word 0x0000022F + + thumb_func_start FUN_02034724 +FUN_02034724: ; 0x02034724 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034734 ; =0x020EEDBC + ldrb r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034734: .word 0x020EEDBC + + thumb_func_start FUN_02034738 +FUN_02034738: ; 0x02034738 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034748 ; =0x020EEDBD + ldrb r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034748: .word 0x020EEDBD + + thumb_func_start FUN_0203474C +FUN_0203474C: ; 0x0203474C + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _0203476C ; =0x020EEDBE + ldrh r0, [r0, r1] + cmp r0, #0x16 + bne _02034768 + ldr r1, _02034770 ; =0x020ECAC0 + ldrb r1, [r1, #0x0] + cmp r1, #0xb + bne _02034768 + mov r0, #0x17 +_02034768: + pop {r3, pc} + nop +_0203476C: .word 0x020EEDBE +_02034770: .word 0x020ECAC0 + + thumb_func_start FUN_02034774 +FUN_02034774: ; 0x02034774 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034784 ; =0x020EEDC4 + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034784: .word 0x020EEDC4 + + thumb_func_start FUN_02034788 +FUN_02034788: ; 0x02034788 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034798 ; =0x020EEDC0 + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034798: .word 0x020EEDC0 + + thumb_func_start FUN_0203479C +FUN_0203479C: ; 0x0203479C + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020347AC ; =0x020EEDC2 + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_020347AC: .word 0x020EEDC2 + + thumb_func_start FUN_020347B0 +FUN_020347B0: ; 0x020347B0 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020347C0 ; =0x020EEDC6 + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_020347C0: .word 0x020EEDC6 + + thumb_func_start FUN_020347C4 +FUN_020347C4: ; 0x020347C4 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020347D4 ; =0x020EEDC8 + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_020347D4: .word 0x020EEDC8 + + thumb_func_start FUN_020347D8 +FUN_020347D8: ; 0x020347D8 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020347F4 ; =0x020EEDCA + ldrh r1, [r0, r1] + ldr r0, _020347F8 ; =0x0000FFFF + cmp r1, r0 + beq _020347F0 + mov r0, #0x1 + pop {r3, pc} +_020347F0: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_020347F4: .word 0x020EEDCA +_020347F8: .word 0x0000FFFF + + thumb_func_start FUN_020347FC +FUN_020347FC: ; 0x020347FC + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _0203480C ; =0x020EEDCA + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_0203480C: .word 0x020EEDCA + + thumb_func_start FUN_02034810 +FUN_02034810: ; 0x02034810 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034820 ; =0x020EEDCC + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034820: .word 0x020EEDCC + + thumb_func_start FUN_02034824 +FUN_02034824: ; 0x02034824 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034834 ; =0x020EEDCE + ldrh r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034834: .word 0x020EEDCE + + thumb_func_start FUN_02034838 +FUN_02034838: ; 0x02034838 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034848 ; =0x020EEDD0 + ldrb r0, [r0, r1] + pop {r3, pc} + .balign 4 +_02034848: .word 0x020EEDD0 + + thumb_func_start FUN_0203484C +FUN_0203484C: ; 0x0203484C + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _0203485C ; =0x020EEDD1 + ldrb r0, [r0, r1] + pop {r3, pc} + .balign 4 +_0203485C: .word 0x020EEDD1 + + thumb_func_start FUN_02034860 +FUN_02034860: ; 0x02034860 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034878 ; =0x020EEDBC + add r0, r0, r1 + ldrb r0, [r0, #0x17] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + pop {r3, pc} + nop +_02034878: .word 0x020EEDBC + + thumb_func_start FUN_0203487C +FUN_0203487C: ; 0x0203487C + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _02034894 ; =0x020EEDBC + add r0, r0, r1 + ldrb r0, [r0, #0x17] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + pop {r3, pc} + nop +_02034894: .word 0x020EEDBC + + thumb_func_start FUN_02034898 +FUN_02034898: ; 0x02034898 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020348B0 ; =0x020EEDBC + add r0, r0, r1 + ldrb r0, [r0, #0x17] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + pop {r3, pc} + nop +_020348B0: .word 0x020EEDBC + + thumb_func_start FUN_020348B4 +FUN_020348B4: ; 0x020348B4 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020348CC ; =0x020EEDBC + add r0, r0, r1 + ldrb r0, [r0, #0x17] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + pop {r3, pc} + nop +_020348CC: .word 0x020EEDBC + + thumb_func_start FUN_020348D0 +FUN_020348D0: ; 0x020348D0 + push {r3, lr} + bl FUN_02034710 + mov r1, #0x18 + mul r1, r0 + ldr r0, _020348E0 ; =0x020EEDD2 + ldrb r0, [r0, r1] + pop {r3, pc} + .balign 4 +_020348E0: .word 0x020EEDD2 + + thumb_func_start FUN_020348E4 +FUN_020348E4: ; 0x020348E4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02034898 + cmp r0, #0x0 + bne _020348F4 + mov r0, #0x0 + pop {r4, pc} +_020348F4: + add r0, r4, #0x0 + bl FUN_020348D0 + cmp r0, #0x1 + beq _02034902 + mov r0, #0x1 + pop {r4, pc} +_02034902: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02034908 +FUN_02034908: ; 0x02034908 + push {r3, lr} + bl FUN_0203474C + cmp r0, #0x0 + bne _02034916 + mov r0, #0x1 + pop {r3, pc} +_02034916: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0203491C +FUN_0203491C: ; 0x0203491C + push {r3, lr} + bl FUN_020348D0 + cmp r0, #0x5 + bne _0203492A + mov r0, #0x1 + pop {r3, pc} +_0203492A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02034930 +FUN_02034930: ; 0x02034930 + push {r3, lr} + bl FUN_020348D0 + cmp r0, #0x3 + bne _0203493E + mov r0, #0x1 + pop {r3, pc} +_0203493E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02034944 +FUN_02034944: ; 0x02034944 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020348D0 + cmp r0, #0x4 + beq _0203495A + add r0, r4, #0x0 + bl FUN_020348D0 + cmp r0, #0x5 + bne _0203495E +_0203495A: + mov r0, #0x1 + pop {r4, pc} +_0203495E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02034964 +FUN_02034964: ; 0x02034964 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020348D0 + cmp r0, #0x1 + beq _0203497A + add r0, r4, #0x0 + bl FUN_020348D0 + cmp r0, #0x2 + bne _0203497E +_0203497A: + mov r0, #0x1 + pop {r4, pc} +_0203497E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02034984 +FUN_02034984: ; 0x02034984 + push {r3, lr} + bl FUN_0203491C + cmp r0, #0x0 + beq _02034992 + mov r0, #0x1 + pop {r3, pc} +_02034992: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02034998 +FUN_02034998: ; 0x02034998 + ldr r1, _020349A8 ; =0x000001D2 + cmp r0, r1 + bne _020349A2 + mov r0, #0x1 + bx lr +_020349A2: + mov r0, #0x0 + bx lr + nop +_020349A8: .word 0x000001D2 + + thumb_func_start FUN_020349AC +FUN_020349AC: ; 0x020349AC + cmp r0, #0xdb + bne _020349B4 + mov r0, #0x1 + bx lr +_020349B4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020349B8 +FUN_020349B8: ; 0x020349B8 + ldr r1, _020349C8 ; =0x0000011F + cmp r0, r1 + bne _020349C2 + mov r0, #0x1 + bx lr +_020349C2: + mov r0, #0x0 + bx lr + nop +_020349C8: .word 0x0000011F + + thumb_func_start FUN_020349CC +FUN_020349CC: ; 0x020349CC + cmp r0, #0xfd + bne _020349D4 + mov r0, #0x1 + bx lr +_020349D4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020349D8 +FUN_020349D8: ; 0x020349D8 + cmp r0, #0xdc + bne _020349E0 + mov r0, #0x1 + bx lr +_020349E0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020349E4 +FUN_020349E4: ; 0x020349E4 + ldr r3, _02034A00 ; =0x020EED54 + mov r2, #0x0 +_020349E8: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _020349F2 + mov r0, #0x1 + bx lr +_020349F2: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0x12 + blo _020349E8 + mov r0, #0x0 + bx lr + nop +_02034A00: .word 0x020EED54 + + thumb_func_start FUN_02034A04 +FUN_02034A04: ; 0x02034A04 + ldr r3, _02034A24 ; =0x020EED78 + mov r2, #0x0 +_02034A08: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _02034A18 + add r0, r2, #0x1 + lsl r1, r0, #0x1 + ldr r0, _02034A24 ; =0x020EED78 + ldrh r0, [r0, r1] + bx lr +_02034A18: + add r2, r2, #0x2 + add r3, r3, #0x4 + cmp r2, #0x22 + blo _02034A08 + mov r0, #0x0 + bx lr + .balign 4 +_02034A24: .word 0x020EED78 + + thumb_func_start FUN_02034A28 +FUN_02034A28: ; 0x02034A28 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x14] + add r4, r1, #0x0 + cmp r0, #0x0 + beq _02034A38 + bl ErrorHandling +_02034A38: + ldr r1, _02034A44 ; =0x00000AC8 + add r0, r4, #0x0 + bl FUN_02016998 + str r0, [r5, #0x14] + pop {r3-r5, pc} + .balign 4 +_02034A44: .word 0x00000AC8 + + thumb_func_start FUN_02034A48 +FUN_02034A48: ; 0x02034A48 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _02034A56 + bl ErrorHandling +_02034A56: + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02034A60 +FUN_02034A60: ; 0x02034A60 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x14] + add r4, r1, #0x0 + cmp r0, #0x0 + bne _02034A70 + bl ErrorHandling +_02034A70: + ldr r0, [r5, #0x14] + add r1, r4, #0x0 + bl FUN_02034A98 + ldr r0, [r5, #0x14] + bl FUN_02034C50 + mov r0, #0x92 + ldr r1, [r5, #0x14] + lsl r0, r0, #0x4 + add r0, r1, r0 + add r1, r4, #0x0 + bl FUN_02034CB4 + ldr r0, [r5, #0x14] + add r1, r4, #0x0 + bl FUN_02034CEC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02034A98 +FUN_02034A98: ; 0x02034A98 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02034810 + add r4, r0, #0x0 + mov r0, #0x20 + add r1, r4, #0x0 + bl LoadFromNARC_7 + mov r1, #0x2 + lsl r1, r1, #0xa + cmp r0, r1 + blo _02034AB8 + bl ErrorHandling +_02034AB8: + add r5, #0x20 + add r0, r5, #0x0 + mov r1, #0x20 + add r2, r4, #0x0 + bl LoadFromNARC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02034AC8 +FUN_02034AC8: ; 0x02034AC8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x14] + ldr r4, [r0, #0x4] + cmp r0, #0x0 + bne _02034AD8 + bl ErrorHandling +_02034AD8: + cmp r4, #0x0 + beq _02034AEC + ldr r1, [r5, #0x1c] + ldr r3, [r5, #0x14] + ldr r0, [r5, #0x34] + ldr r1, [r1, #0x0] + ldr r3, [r3, #0x14] + add r2, r4, #0x0 + bl FUN_02057BAC +_02034AEC: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02034AF0 +FUN_02034AF0: ; 0x02034AF0 + ldr r0, [r0, #0x14] + ldr r0, [r0, #0x10] + bx lr + .balign 4 + + thumb_func_start FUN_02034AF8 +FUN_02034AF8: ; 0x02034AF8 + ldr r0, [r0, #0x14] + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034B00 +FUN_02034B00: ; 0x02034B00 + ldr r2, [r0, #0x14] + ldr r0, [r2, #0x8] + cmp r1, r0 + blo _02034B0C + mov r0, #0x0 + bx lr +_02034B0C: + mov r0, #0xc + ldr r2, [r2, #0x18] + mul r0, r1 + add r0, r2, r0 + bx lr + .balign 4 + + thumb_func_start FUN_02034B18 +FUN_02034B18: ; 0x02034B18 + push {r4-r7} + ldr r5, [r0, #0x14] + mov r3, #0x0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + bls _02034B4A + ldr r6, [r5, #0x18] + add r4, r3, #0x0 + add r0, r6, #0x0 +_02034B2A: + ldrh r7, [r0, #0x0] + cmp r1, r7 + bne _02034B3E + add r7, r6, r4 + ldrh r7, [r7, #0x2] + cmp r2, r7 + bne _02034B3E + add r0, r3, #0x0 + pop {r4-r7} + bx lr +_02034B3E: + ldr r7, [r5, #0x8] + add r3, r3, #0x1 + add r0, #0xc + add r4, #0xc + cmp r3, r7 + blo _02034B2A +_02034B4A: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02034B54 +FUN_02034B54: ; 0x02034B54 + ldr r0, [r0, #0x14] + ldr r0, [r0, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_02034B5C +FUN_02034B5C: ; 0x02034B5C + ldr r0, [r0, #0x14] + ldr r0, [r0, #0x1c] + bx lr + .balign 4 + + thumb_func_start FUN_02034B64 +FUN_02034B64: ; 0x02034B64 + ldr r0, [r0, #0x14] + ldr r0, [r0, #0x4] + bx lr + .balign 4 + + thumb_func_start FUN_02034B6C +FUN_02034B6C: ; 0x02034B6C + ldr r0, [r0, #0x14] + ldr r0, [r0, #0x14] + bx lr + .balign 4 + + thumb_func_start FUN_02034B74 +FUN_02034B74: ; 0x02034B74 + push {r3-r7, lr} + ldr r0, [r0, #0x14] + add r4, r1, #0x0 + ldr r5, [r0, #0x4] + add r7, r2, #0x0 + add r1, r3, #0x0 + mov r2, #0x0 + ldr r3, [r0, #0x14] + cmp r5, #0x0 + bls _02034BA4 + add r6, r3, #0x0 +_02034B8A: + ldrh r0, [r6, #0x0] + cmp r4, r0 + bne _02034B9C + lsl r0, r2, #0x5 + add r0, r3, r0 + strh r7, [r0, #0x18] + strh r1, [r0, #0x1a] + mov r0, #0x1 + pop {r3-r7, pc} +_02034B9C: + add r2, r2, #0x1 + add r6, #0x20 + cmp r2, r5 + blo _02034B8A +_02034BA4: + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02034BAC +FUN_02034BAC: ; 0x02034BAC + push {r4-r6, lr} + ldr r0, [r0, #0x14] + mov r3, #0x0 + ldr r5, [r0, #0x4] + ldr r4, [r0, #0x14] + cmp r5, #0x0 + bls _02034BD4 + add r6, r4, #0x0 +_02034BBC: + ldrh r0, [r6, #0x0] + cmp r1, r0 + bne _02034BCC + lsl r0, r3, #0x5 + add r0, r4, r0 + strh r2, [r0, #0xc] + mov r0, #0x1 + pop {r4-r6, pc} +_02034BCC: + add r3, r3, #0x1 + add r6, #0x20 + cmp r3, r5 + blo _02034BBC +_02034BD4: + bl ErrorHandling + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02034BDC +FUN_02034BDC: ; 0x02034BDC + push {r4-r6, lr} + ldr r0, [r0, #0x14] + mov r3, #0x0 + ldr r5, [r0, #0x4] + ldr r4, [r0, #0x14] + cmp r5, #0x0 + bls _02034C04 + add r6, r4, #0x0 +_02034BEC: + ldrh r0, [r6, #0x0] + cmp r1, r0 + bne _02034BFC + lsl r0, r3, #0x5 + add r0, r4, r0 + strh r2, [r0, #0x4] + mov r0, #0x1 + pop {r4-r6, pc} +_02034BFC: + add r3, r3, #0x1 + add r6, #0x20 + cmp r3, r5 + blo _02034BEC +_02034C04: + bl ErrorHandling + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02034C0C +FUN_02034C0C: ; 0x02034C0C + push {r3-r4} + ldr r0, [r0, #0x14] + ldr r4, [r0, #0x18] + mov r0, #0xc + mul r0, r1 + strh r2, [r4, r0] + add r0, r4, r0 + strh r3, [r0, #0x2] + mov r0, #0x1 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02034C24 +FUN_02034C24: ; 0x02034C24 + ldr r0, [r0, #0x14] + ldr r3, [r0, #0x18] + mov r0, #0xc + mul r0, r1 + add r0, r3, r0 + strh r2, [r0, #0x4] + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02034C34 +FUN_02034C34: ; 0x02034C34 + push {r4-r6, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02034AF0 + mov r1, #0x14 + mul r1, r5 + add r0, r0, r1 + str r4, [r0, #0x4] + str r6, [r0, #0x8] + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02034C50 +FUN_02034C50: ; 0x02034C50 + add r1, r0, #0x0 + ldr r2, [r0, #0x20] + add r1, #0x20 + add r1, r1, #0x4 + str r2, [r0, #0x0] + cmp r2, #0x0 + beq _02034C62 + str r1, [r0, #0x10] + b _02034C66 +_02034C62: + mov r2, #0x0 + str r2, [r0, #0x10] +_02034C66: + ldr r3, [r0, #0x0] + mov r2, #0x14 + mul r2, r3 + add r3, r1, r2 + ldr r2, [r1, r2] + add r1, r3, #0x4 + str r2, [r0, #0x4] + cmp r2, #0x0 + beq _02034C7C + str r1, [r0, #0x14] + b _02034C80 +_02034C7C: + mov r2, #0x0 + str r2, [r0, #0x14] +_02034C80: + ldr r2, [r0, #0x4] + lsl r2, r2, #0x5 + add r3, r1, r2 + ldr r2, [r1, r2] + add r1, r3, #0x4 + str r2, [r0, #0x8] + cmp r2, #0x0 + beq _02034C94 + str r1, [r0, #0x18] + b _02034C98 +_02034C94: + mov r2, #0x0 + str r2, [r0, #0x18] +_02034C98: + ldr r3, [r0, #0x8] + mov r2, #0xc + mul r2, r3 + add r3, r1, r2 + ldr r1, [r1, r2] + str r1, [r0, #0xc] + cmp r1, #0x0 + beq _02034CAE + add r1, r3, #0x4 + str r1, [r0, #0x1c] + bx lr +_02034CAE: + mov r1, #0x0 + str r1, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02034CB4 +FUN_02034CB4: ; 0x02034CB4 + push {r3-r5, lr} + mov r2, #0x6a + add r4, r1, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + add r5, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + bl FUN_020347D8 + cmp r0, #0x0 + beq _02034CDE + add r0, r4, #0x0 + bl FUN_020347FC + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x25 + bl LoadFromNARC +_02034CDE: + pop {r3-r5, pc} + + thumb_func_start FUN_02034CE0 +FUN_02034CE0: ; 0x02034CE0 + ldr r1, [r0, #0x14] + mov r0, #0x92 + lsl r0, r0, #0x4 + add r0, r1, r0 + bx lr + .balign 4 + + thumb_func_start FUN_02034CEC +FUN_02034CEC: ; 0x02034CEC + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0203479C + mov r1, #0x82 + lsl r1, r1, #0x4 + mov r2, #0x1 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r5, r1 + lsl r2, r2, #0x8 + blx MIi_CpuClearFast + mov r0, #0xa + add r1, r4, #0x0 + bl LoadFromNARC_7 + mov r1, #0x1 + lsl r1, r1, #0x8 + cmp r0, r1 + blo _02034D1C + bl ErrorHandling +_02034D1C: + mov r0, #0x82 + lsl r0, r0, #0x4 + add r0, r5, r0 + mov r1, #0xa + add r2, r4, #0x0 + bl LoadFromNARC + pop {r3-r5, pc} + + thumb_func_start FUN_02034D2C +FUN_02034D2C: ; 0x02034D2C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _02034D3A + bl ErrorHandling +_02034D3A: + mov r0, #0x82 + ldr r1, [r4, #0x14] + lsl r0, r0, #0x4 + add r0, r1, r0 + pop {r4, pc} + + thumb_func_start FUN_02034D44 +FUN_02034D44: ; 0x02034D44 + push {r4-r7} + ldr r0, [r0, #0x14] + mov r3, #0x0 + ldr r4, [r0, #0x4] + cmp r4, #0x0 + bls _02034D76 + ldr r6, [r0, #0x14] + add r5, r3, #0x0 + add r4, r6, #0x0 +_02034D56: + ldrh r7, [r4, #0x18] + cmp r1, r7 + bne _02034D6A + add r7, r6, r5 + ldrh r7, [r7, #0x1a] + cmp r2, r7 + bne _02034D6A + mov r0, #0x0 + pop {r4-r7} + bx lr +_02034D6A: + ldr r7, [r0, #0x4] + add r3, r3, #0x1 + add r4, #0x20 + add r5, #0x20 + cmp r3, r7 + blo _02034D56 +_02034D76: + mov r0, #0x1 + pop {r4-r7} + bx lr + + thumb_func_start FUN_02034D7C +FUN_02034D7C: ; 0x02034D7C + mov r0, #0xa0 + bx lr + + thumb_func_start FUN_02034D80 +FUN_02034D80: ; 0x02034D80 + mov r0, #0x5 + lsl r0, r0, #0xa + bx lr + .balign 4 + + thumb_func_start FUN_02034D88 +FUN_02034D88: ; 0x02034D88 + ldr r3, _02034D94 ; =MIi_CpuClear32 + mov r2, #0x5 + add r1, r0, #0x0 + mov r0, #0x0 + lsl r2, r2, #0xa + bx r3 + .balign 4 +_02034D94: .word MIi_CpuClear32 + + thumb_func_start FUN_02034D98 +FUN_02034D98: ; 0x02034D98 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0xa0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + add r0, #0x6c + bl FUN_0204ADE0 + add r0, r4, #0x0 + add r0, #0x8c + bl FUN_02055468 + bl FUN_02034E8C + add r4, #0x68 + strh r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02034DC0 +FUN_02034DC0: ; 0x02034DC0 + bx lr + .balign 4 + + thumb_func_start FUN_02034DC4 +FUN_02034DC4: ; 0x02034DC4 + add r0, #0x14 + bx lr + + thumb_func_start FUN_02034DC8 +FUN_02034DC8: ; 0x02034DC8 + add r0, #0x28 + bx lr + + thumb_func_start FUN_02034DCC +FUN_02034DCC: ; 0x02034DCC + add r0, #0x50 + bx lr + + thumb_func_start FUN_02034DD0 +FUN_02034DD0: ; 0x02034DD0 + add r0, #0x3c + bx lr + + thumb_func_start FUN_02034DD4 +FUN_02034DD4: ; 0x02034DD4 + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x3c + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02034DE8 +FUN_02034DE8: ; 0x02034DE8 + add r0, #0x64 + bx lr + + thumb_func_start FUN_02034DEC +FUN_02034DEC: ; 0x02034DEC + add r0, #0x66 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034DF4 +FUN_02034DF4: ; 0x02034DF4 + add r0, #0x66 + strh r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034DFC +FUN_02034DFC: ; 0x02034DFC + add r0, #0x68 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034E04 +FUN_02034E04: ; 0x02034E04 + add r0, #0x68 + strh r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034E0C +FUN_02034E0C: ; 0x02034E0C + add r0, #0x6c + bx lr + + thumb_func_start FUN_02034E10 +FUN_02034E10: ; 0x02034E10 + add r0, #0x6a + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034E18 +FUN_02034E18: ; 0x02034E18 + add r0, #0x6a + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02034E20 +FUN_02034E20: ; 0x02034E20 + add r0, #0x8c + bx lr + + thumb_func_start FUN_02034E24 +FUN_02034E24: ; 0x02034E24 + add r0, #0x98 + bx lr + + thumb_func_start FUN_02034E28 +FUN_02034E28: ; 0x02034E28 + add r0, #0x96 + bx lr + + thumb_func_start FUN_02034E2C +FUN_02034E2C: ; 0x02034E2C + add r0, #0x94 + bx lr + + thumb_func_start FUN_02034E30 +FUN_02034E30: ; 0x02034E30 + ldr r3, _02034E38 ; =FUN_02022610 + mov r1, #0x6 + bx r3 + nop +_02034E38: .word FUN_02022610 + + thumb_func_start FUN_02034E3C +FUN_02034E3C: ; 0x02034E3C + ldr r3, _02034E44 ; =FUN_02022610 + mov r1, #0xb + bx r3 + nop +_02034E44: .word FUN_02022610 + + thumb_func_start FUN_02034E48 +FUN_02034E48: ; 0x02034E48 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02034E3C + add r2, r0, #0x0 + ldr r1, [r4, #0x34] + add r0, r4, #0x0 + mov r3, #0x40 + bl FUN_02057800 + pop {r4, pc} + + thumb_func_start FUN_02034E60 +FUN_02034E60: ; 0x02034E60 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02034E3C + add r1, r0, #0x0 + ldr r0, [r4, #0x34] + mov r2, #0x40 + bl FUN_0205785C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02034E78 +FUN_02034E78: ; 0x02034E78 + push {r3, lr} + cmp r0, #0x0 + ble _02034E82 + cmp r0, #0x14 + bls _02034E88 +_02034E82: + bl ErrorHandling + mov r0, #0x1 +_02034E88: + sub r0, r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_02034E8C +FUN_02034E8C: ; 0x02034E8C + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02034E90 +FUN_02034E90: ; 0x02034E90 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02034E78 + lsl r1, r0, #0x4 + ldr r0, _02034EB8 ; =0x020F222A + ldrh r0, [r0, r1] + str r0, [r4, #0x0] + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0x4] + ldr r0, _02034EBC ; =0x020F222C + ldrh r0, [r0, r1] + str r0, [r4, #0x8] + ldr r0, _02034EC0 ; =0x020F222E + ldrh r0, [r0, r1] + str r0, [r4, #0xc] + mov r0, #0x1 + str r0, [r4, #0x10] + pop {r4, pc} + .balign 4 +_02034EB8: .word 0x020F222A +_02034EBC: .word 0x020F222C +_02034EC0: .word 0x020F222E + + thumb_func_start FUN_02034EC4 +FUN_02034EC4: ; 0x02034EC4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02034E78 + lsl r1, r0, #0x4 + ldr r0, _02034EEC ; =0x020F2224 + ldrh r0, [r0, r1] + str r0, [r4, #0x0] + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0x4] + ldr r0, _02034EF0 ; =0x020F2226 + ldrh r0, [r0, r1] + str r0, [r4, #0x8] + ldr r0, _02034EF4 ; =0x020F2228 + ldrh r0, [r0, r1] + str r0, [r4, #0xc] + mov r0, #0x0 + str r0, [r4, #0x10] + pop {r4, pc} + .balign 4 +_02034EEC: .word 0x020F2224 +_02034EF0: .word 0x020F2226 +_02034EF4: .word 0x020F2228 + + thumb_func_start FUN_02034EF8 +FUN_02034EF8: ; 0x02034EF8 + ldr r3, _02034F18 ; =0x020F2224 + mov r2, #0x0 +_02034EFC: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _02034F0C + ldrb r1, [r3, #0xc] + cmp r1, #0x0 + beq _02034F0C + add r0, r2, #0x1 + bx lr +_02034F0C: + add r2, r2, #0x1 + add r3, #0x10 + cmp r2, #0x14 + blo _02034EFC + mov r0, #0x0 + bx lr + .balign 4 +_02034F18: .word 0x020F2224 + + thumb_func_start FUN_02034F1C +FUN_02034F1C: ; 0x02034F1C + ldr r3, _02034F3C ; =0x020F2224 + mov r2, #0x0 +_02034F20: + ldrh r1, [r3, #0x6] + cmp r0, r1 + bne _02034F30 + ldrb r1, [r3, #0xc] + cmp r1, #0x0 + beq _02034F30 + add r0, r2, #0x1 + bx lr +_02034F30: + add r2, r2, #0x1 + add r3, #0x10 + cmp r2, #0x14 + blo _02034F20 + mov r0, #0x0 + bx lr + .balign 4 +_02034F3C: .word 0x020F2224 + + thumb_func_start FUN_02034F40 +FUN_02034F40: ; 0x02034F40 + push {r3-r6} + asr r3, r1, #0x4 + lsr r3, r3, #0x1b + add r3, r1, r3 + asr r1, r2, #0x4 + lsr r1, r1, #0x1b + add r1, r2, r1 + mov r4, #0x0 + asr r2, r1, #0x5 + ldr r5, _02034F84 ; =0x020F2224 + asr r3, r3, #0x5 + add r1, r4, #0x0 +_02034F58: + ldrh r6, [r5, #0x6] + cmp r0, r6 + bne _02034F76 + ldrh r6, [r5, #0x8] + add r4, r1, #0x1 + lsr r6, r6, #0x5 + cmp r3, r6 + bne _02034F76 + ldrh r6, [r5, #0xa] + lsr r6, r6, #0x5 + cmp r2, r6 + bne _02034F76 + add r0, r4, #0x0 + pop {r3-r6} + bx lr +_02034F76: + add r1, r1, #0x1 + add r5, #0x10 + cmp r1, #0x14 + blo _02034F58 + add r0, r4, #0x0 + pop {r3-r6} + bx lr + .balign 4 +_02034F84: .word 0x020F2224 + + thumb_func_start FUN_02034F88 +FUN_02034F88: ; 0x02034F88 + push {r4, lr} + ldr r3, _02034FB8 ; =0x020F2224 + mov r4, #0x0 +_02034F8E: + ldrh r2, [r3, #0x6] + cmp r1, r2 + bne _02034FAE + ldrb r2, [r3, #0xd] + cmp r2, #0x0 + beq _02034FAE + ldr r0, [r0, #0xc] + bl FUN_020462AC + ldr r2, _02034FBC ; =0x020F2232 + lsl r3, r4, #0x4 + ldrh r2, [r2, r3] + mov r1, #0x1 + bl FUN_0205F2E4 + pop {r4, pc} +_02034FAE: + add r4, r4, #0x1 + add r3, #0x10 + cmp r4, #0x14 + blo _02034F8E + pop {r4, pc} + .balign 4 +_02034FB8: .word 0x020F2224 +_02034FBC: .word 0x020F2232 + + thumb_func_start FUN_02034FC0 +FUN_02034FC0: ; 0x02034FC0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02034E78 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + ldr r2, _02034FE0 ; =0x020F2232 + lsl r3, r4, #0x4 + ldrh r2, [r2, r3] + mov r1, #0x2 + bl FUN_0205F2E4 + pop {r3-r5, pc} + .balign 4 +_02034FE0: .word 0x020F2232 + + thumb_func_start FUN_02034FE4 +FUN_02034FE4: ; 0x02034FE4 + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02034838 + add r4, r0, #0x0 + cmp r4, #0x18 + blt _0203505C + ldr r0, [r7, #0xc] + bl FUN_02023794 + add r6, r0, #0x0 + add r0, r6, #0x4 + bl FUN_02012710 + sub r5, r0, #0x1 + bmi _0203500C + ldr r0, _02035060 ; =0x0000016E + cmp r5, r0 + blt _02035010 +_0203500C: + bl ErrorHandling +_02035010: + ldr r0, [r6, #0x8] + cmp r0, #0x2 + bls _02035044 + ldr r6, [r6, #0x4] + mov r0, #0x3 + tst r0, r6 + bne _0203502A + add r0, r6, #0x0 + mov r1, #0x64 + blx _u32_div_f + cmp r1, #0x0 + bne _02035038 +_0203502A: + mov r1, #0x19 + add r0, r6, #0x0 + lsl r1, r1, #0x4 + blx _u32_div_f + cmp r1, #0x0 + bne _0203503C +_02035038: + mov r0, #0x1 + b _0203503E +_0203503C: + mov r0, #0x0 +_0203503E: + cmp r0, #0x0 + bne _02035044 + add r5, r5, #0x1 +_02035044: + add r0, r7, #0x0 + bl FUN_0204B33C + cmp r0, #0x0 + beq _02035050 + mov r5, #0x1 +_02035050: + lsl r0, r5, #0x2 + sub r4, #0x18 + add r0, r5, r0 + add r1, r4, r0 + ldr r0, _02035064 ; =0x020F2364 + ldrb r0, [r0, r1] +_0203505C: + pop {r3-r7, pc} + nop +_02035060: .word 0x0000016E +_02035064: .word 0x020F2364 + + thumb_func_start FUN_02035068 +FUN_02035068: ; 0x02035068 + push {r3, lr} + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + cmp r0, #0x0 + beq _0203507A + mov r0, #0x1 + pop {r3, pc} +_0203507A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02035080 +FUN_02035080: ; 0x02035080 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02035254 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + bne _020350A6 + add r0, r5, #0x0 + bl FUN_020352C4 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _020350E6 +_020350A6: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _020350C2 + add r0, r5, #0x0 + bl FUN_020352C8 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _020350E6 +_020350C2: + add r0, r5, #0x0 + bl FUN_02060144 + cmp r0, #0x1 + bne _020350DA + add r0, r5, #0x0 + bl FUN_020352CC + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _020350E6 +_020350DA: + add r0, r5, #0x0 + bl FUN_02035270 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] +_020350E6: + mov r0, #0x71 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + ldr r0, [r5, #0x38] + bl FUN_02055B30 + cmp r0, #0x1 + bne _02035106 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_02055B8C +_02035106: + ldr r1, _02035114 ; =FUN_020352E4 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463CC + pop {r3-r5, pc} + nop +_02035114: .word FUN_020352E4 + + thumb_func_start FUN_02035118 +FUN_02035118: ; 0x02035118 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02035254 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020352D4 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + mov r2, #0x1 + add r0, r1, #0x4 + str r2, [r4, r0] + ldr r0, [r5, #0x38] + bl FUN_02055B30 + cmp r0, #0x1 + bne _0203514C + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_02055B8C +_0203514C: + ldr r1, _02035158 ; =FUN_020352E4 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463CC + pop {r3-r5, pc} + .balign 4 +_02035158: .word FUN_020352E4 + + thumb_func_start FUN_0203515C +FUN_0203515C: ; 0x0203515C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02035254 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020352DC + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + mov r2, #0x0 + add r0, r1, #0x4 + str r2, [r4, r0] + ldr r0, [r5, #0x38] + bl FUN_02055B30 + cmp r0, #0x1 + bne _02035190 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_02055B8C +_02035190: + ldr r1, _0203519C ; =FUN_020352E4 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463CC + pop {r3-r5, pc} + .balign 4 +_0203519C: .word FUN_020352E4 + + thumb_func_start FUN_020351A0 +FUN_020351A0: ; 0x020351A0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0203524C ; =0x000005FD + bl FUN_020054C8 + bl FUN_02035254 + add r4, r0, #0x0 + mov r0, #0x71 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + bne _020351D4 + add r0, r5, #0x0 + bl FUN_020352C4 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _02035240 +_020351D4: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _020351F0 + add r0, r5, #0x0 + bl FUN_020352C8 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _02035240 +_020351F0: + add r0, r5, #0x0 + bl FUN_02060144 + cmp r0, #0x1 + bne _02035208 + add r0, r5, #0x0 + bl FUN_020352CC + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _02035240 +_02035208: + ldr r0, [r5, #0x6c] + cmp r0, #0x3 + bne _0203521C + add r0, r5, #0x0 + bl FUN_020352DC + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + b _02035240 +_0203521C: + cmp r0, #0x2 + bne _02035234 + add r0, r5, #0x0 + bl FUN_020352D4 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] + mov r2, #0x1 + add r0, r1, #0x4 + str r2, [r4, r0] + b _02035240 +_02035234: + add r0, r5, #0x0 + bl FUN_02035270 + mov r1, #0x7 + lsl r1, r1, #0x6 + str r0, [r4, r1] +_02035240: + ldr r0, [r5, #0x10] + ldr r1, _02035250 ; =FUN_020352E4 + add r2, r4, #0x0 + bl FUN_020463EC + pop {r3-r5, pc} + .balign 4 +_0203524C: .word 0x000005FD +_02035250: .word FUN_020352E4 + + thumb_func_start FUN_02035254 +FUN_02035254: ; 0x02035254 + push {r3, lr} + mov r1, #0x2 + mov r0, #0xb + lsl r1, r1, #0x8 + bl FUN_02016998 + mov r2, #0x0 + strh r2, [r0, #0x2a] + mov r1, #0x7e + strh r2, [r0, #0x28] + lsl r1, r1, #0x2 + str r2, [r0, r1] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02035270 +FUN_02035270: ; 0x02035270 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r4, #0x0 + bl FUN_02024DA0 + bl FUN_02024D64 + cmp r0, #0x0 + bne _02035288 + mov r0, #0x1 + orr r4, r0 +_02035288: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F388 + cmp r0, #0x0 + bne _0203529A + mov r0, #0x2 + orr r4, r0 +_0203529A: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ECE0 + cmp r0, #0x0 + bne _020352AC + mov r0, #0x4 + orr r4, r0 +_020352AC: + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_020349CC + cmp r0, #0x1 + bne _020352BC + mov r0, #0x6 + orr r4, r0 +_020352BC: + mov r0, #0x6 + lsl r0, r0, #0x6 + orr r0, r4 + pop {r3-r5, pc} + + thumb_func_start FUN_020352C4 +FUN_020352C4: ; 0x020352C4 + mov r0, #0x90 + bx lr + + thumb_func_start FUN_020352C8 +FUN_020352C8: ; 0x020352C8 + mov r0, #0x94 + bx lr + + thumb_func_start FUN_020352CC +FUN_020352CC: ; 0x020352CC + ldr r0, _020352D0 ; =0x00000195 + bx lr + .balign 4 +_020352D0: .word 0x00000195 + + thumb_func_start FUN_020352D4 +FUN_020352D4: ; 0x020352D4 + mov r0, #0x11 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_020352DC +FUN_020352DC: ; 0x020352DC + ldr r0, _020352E0 ; =0x00000191 + bx lr + .balign 4 +_020352E0: .word 0x00000191 + + thumb_func_start FUN_020352E4 +FUN_020352E4: ; 0x020352E4 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldrh r1, [r4, #0x2a] + cmp r1, #0xf + bhi _02035362 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02035308: ; jump table (using 16-bit offset) + .short _02035328 - _02035308 - 2; case 0 + .short _02035358 - _02035308 - 2; case 1 + .short _02035368 - _02035308 - 2; case 2 + .short _02035370 - _02035308 - 2; case 3 + .short _02035378 - _02035308 - 2; case 4 + .short _02035380 - _02035308 - 2; case 5 + .short _02035388 - _02035308 - 2; case 6 + .short _02035390 - _02035308 - 2; case 7 + .short _020353C0 - _02035308 - 2; case 8 + .short _020353D6 - _02035308 - 2; case 9 + .short _020353F6 - _02035308 - 2; case 10 + .short _02035412 - _02035308 - 2; case 11 + .short _02035398 - _02035308 - 2; case 12 + .short _02035440 - _02035308 - 2; case 13 + .short _02035478 - _02035308 - 2; case 14 + .short _02035432 - _02035308 - 2; case 15 +_02035328: + ldr r0, [r5, #0x34] + bl FUN_02058780 + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_0205CE80 + mov r1, #0x7a + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02063964 + add r0, r6, #0x0 + bl FUN_0203549C + add r0, r6, #0x0 + bl FUN_02035734 + mov r0, #0x1 + strh r0, [r4, #0x2a] + b _02035484 +_02035358: + add r0, r6, #0x0 + bl FUN_020358E4 + cmp r0, #0x0 + beq _02035364 +_02035362: + b _02035484 +_02035364: + mov r0, #0x0 + pop {r4-r6, pc} +_02035368: + add r0, r6, #0x0 + bl FUN_02035CA0 + b _02035484 +_02035370: + add r0, r6, #0x0 + bl FUN_02035CDC + b _02035484 +_02035378: + add r0, r6, #0x0 + bl FUN_020365F0 + b _02035484 +_02035380: + add r0, r6, #0x0 + bl FUN_02036644 + b _02035484 +_02035388: + add r0, r6, #0x0 + bl FUN_02036E08 + b _02035484 +_02035390: + add r0, r6, #0x0 + bl FUN_02036F1C + b _02035484 +_02035398: + add r0, r5, #0x0 + bl FUN_020464A4 + cmp r0, #0x0 + beq _02035484 + ldr r0, [r5, #0x34] + bl FUN_02058780 + add r0, r6, #0x0 + bl FUN_0203549C + add r0, r6, #0x0 + bl FUN_02035734 + mov r0, #0x1 + bl FUN_021D7CA4 + mov r0, #0xe + strh r0, [r4, #0x2a] + b _02035484 +_020353C0: + add r0, r5, #0x0 + bl FUN_020464A4 + cmp r0, #0x0 + beq _02035484 + mov r0, #0x1 + bl FUN_021D7CA4 + mov r0, #0x9 + strh r0, [r4, #0x2a] + b _02035484 +_020353D6: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02035484 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0203598C + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [r5, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r4-r6, pc} +_020353F6: + add r0, r5, #0x0 + bl FUN_020464A4 + cmp r0, #0x0 + beq _02035484 + ldr r0, [r5, #0x34] + bl FUN_02058780 + mov r0, #0x1 + bl FUN_021D7CA4 + mov r0, #0xb + strh r0, [r4, #0x2a] + b _02035484 +_02035412: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02035484 + mov r2, #0x72 + lsl r2, r2, #0x2 + ldr r1, [r4, r2] + add r2, #0x30 + ldr r2, [r4, r2] + add r0, r6, #0x0 + bl FUN_020463EC + add r0, r4, #0x0 + bl FUN_02016A18 + b _02035484 +_02035432: + bl FUN_02016A18 + ldr r0, [r5, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r4-r6, pc} +_02035440: + add r1, r5, #0x0 + bl FUN_0203598C + add r0, r4, #0x0 + bl FUN_02035718 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200CCF8 + add r0, r4, #0x0 + bl FUN_02019178 + add r0, r6, #0x0 + bl FUN_020358A0 + ldr r0, [r5, #0x8] + mov r1, #0x3 + bl FUN_0201AC68 + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [r5, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r4-r6, pc} +_02035478: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02035484 + mov r0, #0x1 + strh r0, [r4, #0x2a] +_02035484: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _02035496 + add r0, r4, #0x0 + bl FUN_02035BB0 + ldr r0, [r4, #0x38] + bl FUN_0201FDEC +_02035496: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0203549C +FUN_0203549C: ; 0x0203549C + push {r3-r7, lr} + sub sp, #0x30 + add r4, r0, #0x0 + bl FUN_02046528 + str r0, [sp, #0x1c] + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r1, r4, #0x0 + add r1, #0x30 + bl FUN_0203566C + str r0, [sp, #0x14] + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0xb + str r0, [sp, #0x4] + ldr r0, [sp, #0x14] + mov r2, #0x3 + lsl r1, r0, #0x1 + add r0, r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02035658 ; =0x0000023B + add r1, r4, #0x0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + mov r3, #0x14 + ldr r0, [r0, #0x8] + bl FUN_02019064 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r3, #0xb + ldr r0, [sp, #0x1c] + str r3, [sp, #0x4] + ldr r0, [r0, #0x8] + ldr r2, _0203565C ; =0x000003D9 + mov r1, #0x3 + bl FUN_0200CB00 + ldr r2, _0203565C ; =0x000003D9 + add r0, r4, #0x0 + mov r1, #0x1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02035660 ; =0x00000143 + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + mov r1, #0xb + bl FUN_02012838 + str r0, [r4, #0x24] + mov r5, #0x0 + ldr r0, [sp, #0x14] + strh r5, [r4, #0x28] + cmp r0, #0x0 + bls _020355BC +_02035526: + add r0, r4, r5 + add r0, #0x30 + ldrb r3, [r0, #0x0] + cmp r3, #0x3 + bne _02035594 + mov r0, #0xb + bl FUN_0200AA80 + add r6, r0, #0x0 + mov r0, #0x8 + mov r1, #0xb + bl FUN_020219F4 + add r1, r4, r5 + add r1, #0x30 + ldrb r1, [r1, #0x0] + add r7, r0, #0x0 + ldr r0, [sp, #0x18] + lsl r2, r1, #0x3 + ldr r1, _02035664 ; =0x020F2ACC + ldr r1, [r1, r2] + bl FUN_0200A914 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r2, [sp, #0x20] + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_0200B7B8 + add r2, r4, r5 + add r2, #0x30 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x24] + add r1, r7, #0x0 + bl FUN_020128A0 + ldr r0, [sp, #0x20] + bl FUN_02021A20 + add r0, r7, #0x0 + bl FUN_02021A20 + add r0, r6, #0x0 + bl FUN_0200AB18 + b _020355A2 +_02035594: + ldr r2, _02035664 ; =0x020F2ACC + lsl r6, r3, #0x3 + ldr r0, [r4, #0x24] + ldr r1, [sp, #0x18] + ldr r2, [r2, r6] + bl FUN_02012880 +_020355A2: + ldr r0, [sp, #0x1c] + add r0, #0x8c + ldr r1, [r0, #0x0] + add r0, r4, r5 + add r0, #0x30 + ldrb r0, [r0, #0x0] + cmp r1, r0 + bne _020355B4 + strh r5, [r4, #0x28] +_020355B4: + ldr r0, [sp, #0x14] + add r5, r5, #0x1 + cmp r5, r0 + blo _02035526 +_020355BC: + ldrh r0, [r4, #0x28] + add r0, r4, r0 + add r0, #0x30 + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x1c] + add r0, #0x8c + str r1, [r0, #0x0] + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 + ldr r0, [r4, #0x24] + mov r1, #0x1 + str r0, [sp, #0x24] + str r4, [sp, #0x28] + add r0, sp, #0x24 + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + ldr r1, [sp, #0x14] + strb r1, [r0, #0xa] + ldrb r2, [r0, #0xb] + mov r1, #0xf + bic r2, r1 + mov r1, #0x8 + orr r1, r2 + strb r1, [r0, #0xb] + ldrb r2, [r0, #0xb] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x10 + orr r1, r2 + strb r1, [r0, #0xb] + ldr r1, [sp, #0x14] + ldrb r2, [r0, #0xb] + cmp r1, #0x4 + blo _0203560E + mov r1, #0xc0 + bic r2, r1 + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, #0xb] + b _02035614 +_0203560E: + mov r1, #0xc0 + bic r2, r1 + strb r2, [r0, #0xb] +_02035614: + mov r0, #0xb + str r0, [sp, #0x0] + ldr r0, _02035668 ; =0x00000402 + mov r1, #0x1c + str r0, [sp, #0x4] + ldrh r3, [r4, #0x28] + add r0, sp, #0x24 + mov r2, #0x4 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02001B8C + str r0, [r4, #0x20] + add r0, r4, #0x0 + bl FUN_02019220 + ldr r0, [sp, #0x1c] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + bl FUN_020239CC + add r3, r0, #0x0 + add r0, r4, #0x0 + add r4, #0x30 + lsl r3, r3, #0x18 + ldr r2, [sp, #0x14] + add r1, r4, #0x0 + lsr r3, r3, #0x18 + bl FUN_020359B8 + add sp, #0x30 + pop {r3-r7, pc} + nop +_02035658: .word 0x0000023B +_0203565C: .word 0x000003D9 +_02035660: .word 0x00000143 +_02035664: .word 0x020F2ACC +_02035668: .word 0x00000402 + + thumb_func_start FUN_0203566C +FUN_0203566C: ; 0x0203566C + push {r3-r4} + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + sub r3, #0xc0 + mov r2, #0x0 + tst r3, r4 + bne _02035682 + mov r3, #0x8 + strb r3, [r1, #0x0] + add r2, r2, #0x1 +_02035682: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x80 + tst r3, r4 + bne _02035694 + mov r3, #0x7 + strb r3, [r1, r2] + add r2, r2, #0x1 +_02035694: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x1 + tst r3, r4 + bne _020356A6 + mov r3, #0x0 + strb r3, [r1, r2] + add r2, r2, #0x1 +_020356A6: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x2 + tst r3, r4 + bne _020356B8 + mov r3, #0x1 + strb r3, [r1, r2] + add r2, r2, #0x1 +_020356B8: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x4 + tst r3, r4 + bne _020356CA + mov r3, #0x2 + strb r3, [r1, r2] + add r2, r2, #0x1 +_020356CA: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x8 + tst r3, r4 + bne _020356DC + mov r3, #0x3 + strb r3, [r1, r2] + add r2, r2, #0x1 +_020356DC: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x10 + tst r3, r4 + bne _020356EE + mov r3, #0x4 + strb r3, [r1, r2] + add r2, r2, #0x1 +_020356EE: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r4, [r0, r3] + mov r3, #0x20 + tst r3, r4 + bne _02035700 + mov r3, #0x5 + strb r3, [r1, r2] + add r2, r2, #0x1 +_02035700: + mov r3, #0x7 + lsl r3, r3, #0x6 + ldr r3, [r0, r3] + mov r0, #0x40 + tst r0, r3 + bne _02035712 + mov r0, #0x6 + strb r0, [r1, r2] + add r2, r2, #0x1 +_02035712: + add r0, r2, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02035718 +FUN_02035718: ; 0x02035718 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02035B78 + ldr r0, [r4, #0x20] + mov r1, #0x0 + bl FUN_02001C5C + ldr r0, [r4, #0x24] + bl FUN_02012870 + mov r0, #0x0 + str r0, [r4, #0x20] + pop {r4, pc} + + thumb_func_start FUN_02035734 +FUN_02035734: ; 0x02035734 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + bne _0203575A + mov r6, #0x0 + b _0203576C +_0203575A: + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + beq _0203576A + b _0203588E +_0203576A: + mov r6, #0x1 +_0203576C: + mov r3, #0x1 + str r3, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02035894 ; =0x0000032D + add r1, r5, #0x0 + str r0, [sp, #0x10] + ldr r0, [r4, #0x8] + add r1, #0x10 + mov r2, #0x3 + bl FUN_02019064 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r3, #0xb + str r3, [sp, #0x4] + ldr r0, [r4, #0x8] + ldr r2, _02035898 ; =0x000003D9 + mov r1, #0x3 + bl FUN_0200CB00 + add r0, r5, #0x0 + ldr r2, _02035898 ; =0x000003D9 + add r0, #0x10 + mov r1, #0x1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0x0 + add r0, #0x10 + mov r1, #0xf + bl FUN_02019620 + ldr r2, _0203589C ; =0x00000143 + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp, #0x1c] + cmp r6, #0x0 + bne _020357D0 + mov r1, #0x9 + bl FUN_0200A914 + b _020357D6 +_020357D0: + mov r1, #0xa + bl FUN_0200A914 +_020357D6: + mov r1, #0x0 + add r7, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x10 + add r2, r7, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r7, #0x0 + bl FUN_02021A20 + mov r0, #0xb + bl FUN_0200AA80 + add r7, r0, #0x0 + mov r0, #0x20 + mov r1, #0xb + bl FUN_020219F4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + mov r1, #0xb + bl FUN_0200A914 + str r0, [sp, #0x14] + cmp r6, #0x0 + bne _02035834 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034E24 + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrh r2, [r2, #0x0] + add r0, r7, #0x0 + mov r3, #0x2 + bl FUN_0200AD38 + b _0203584C +_02035834: + add r0, r4, #0x0 + bl FUN_0204BAB0 + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r3, #0x2 + bl FUN_0200AD38 +_0203584C: + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r0, r7, #0x0 + bl FUN_0200B7B8 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r1, #0x0 + add r0, r5, #0x0 + ldr r2, [sp, #0x18] + add r0, #0x10 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r7, #0x0 + bl FUN_0200AB18 + ldr r0, [sp, #0x1c] + bl FUN_0200A8B8 + add r5, #0x10 + add r0, r5, #0x0 + bl FUN_02019220 +_0203588E: + add sp, #0x20 + pop {r3-r7, pc} + nop +_02035894: .word 0x0000032D +_02035898: .word 0x000003D9 +_0203589C: .word 0x00000143 + + thumb_func_start FUN_020358A0 +FUN_020358A0: ; 0x020358A0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x0 + bne _020358CE + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x0 + beq _020358E0 +_020358CE: + add r0, r5, #0x0 + add r0, #0x10 + mov r1, #0x1 + bl FUN_0200CCF8 + add r5, #0x10 + add r0, r5, #0x0 + bl FUN_02019178 +_020358E0: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020358E4 +FUN_020358E4: ; 0x020358E4 + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r0, [r5, #0x20] + bl FUN_02001E5C + add r6, r0, #0x0 + mov r1, #0x5e + ldr r0, [r5, #0x20] + lsl r1, r1, #0x4 + bl FUN_02001D2C + str r0, [r5, #0x2c] + ldr r0, [r5, #0x20] + bl FUN_02001E5C + strh r0, [r5, #0x28] + ldrh r1, [r5, #0x28] + cmp r6, r1 + beq _0203593A + mov r0, #0x67 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_02035BE8 + ldrh r2, [r5, #0x28] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02035C44 + ldrh r0, [r5, #0x28] + add r4, #0x8c + add r0, r5, r0 + add r0, #0x30 + ldrb r0, [r0, #0x0] + str r0, [r4, #0x0] +_0203593A: + ldrh r0, [r5, #0x28] + add r0, r0, #0x1 + lsl r0, r0, #0x2 + add r1, r5, r0 + mov r0, #0x67 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + ldr r0, [r0, #0x0] + bl FUN_02035C78 + mov r1, #0x1 + ldr r2, [r5, #0x2c] + mvn r1, r1 + cmp r2, r1 + beq _02035960 + add r0, r1, #0x1 + cmp r2, r0 + beq _02035982 + b _02035966 +_02035960: + mov r0, #0xd + strh r0, [r5, #0x2a] + b _02035982 +_02035966: + ldr r0, _02035988 ; =0x020F2AD0 + lsl r2, r2, #0x3 + ldr r2, [r0, r2] + cmp r2, r1 + bne _02035976 + mov r0, #0xd + strh r0, [r5, #0x2a] + b _02035982 +_02035976: + add r0, r1, #0x1 + cmp r2, r0 + beq _02035982 + add r0, r7, #0x0 + blx r2 + pop {r3-r7, pc} +_02035982: + mov r0, #0x1 + pop {r3-r7, pc} + nop +_02035988: .word 0x020F2AD0 + + thumb_func_start FUN_0203598C +FUN_0203598C: ; 0x0203598C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0202EDF8 + cmp r0, #0x0 + beq _020359B4 + mov r0, #0x71 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + cmp r0, #0x0 + beq _020359B4 + ldr r0, [r4, #0x7c] + bl FUN_02052F74 + bl FUN_02031B50 + mov r0, #0x0 + bl FUN_02052B74 +_020359B4: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020359B8 +FUN_020359B8: ; 0x020359B8 + push {r4-r7, lr} + sub sp, #0xb4 + ldr r4, _02035B60 ; =0x020F2AB4 + str r3, [sp, #0x18] + add r3, sp, #0x9c + str r2, [sp, #0x14] + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [sp, #0xc] + add r1, r2, #0x0 + add r0, #0x38 + mov r2, #0x8 + mov r3, #0xb + bl FUN_021D959C + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, _02035B64 ; =0x000034D8 + mov r1, #0x42 + str r0, [sp, #0x8] + ldr r0, [sp, #0xc] + mov r2, #0x5 + add r0, #0x38 + mov r3, #0x0 + bl FUN_021D967C + ldr r0, _02035B64 ; =0x000034D8 + mov r1, #0x42 + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + mov r2, #0x1 + add r0, #0x38 + mov r3, #0x0 + bl FUN_021D96F4 + ldr r0, _02035B64 ; =0x000034D8 + mov r2, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x38 + add r3, r2, #0x0 + bl FUN_021D9708 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _02035B64 ; =0x000034D8 + mov r1, #0x42 + str r0, [sp, #0x4] + ldr r0, [sp, #0xc] + mov r2, #0x2 + add r0, #0x38 + mov r3, #0x0 + bl FUN_021D971C + ldr r0, [sp, #0xc] + ldr r1, _02035B68 ; =0x020F2B14 + add r0, #0x38 + bl FUN_021D9820 + mov r2, #0x67 + ldr r1, [sp, #0xc] + lsl r2, r2, #0x2 + str r0, [r1, r2] + add r0, r1, #0x0 + ldr r0, [r0, r2] + ldrh r1, [r1, #0x28] + ldr r0, [r0, #0x0] + bl FUN_02035BE8 + ldr r0, _02035B6C ; =0x000034D9 + mov r1, #0x42 + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + mov r2, #0x4 + add r0, #0x38 + mov r3, #0x0 + bl FUN_021D96F4 + ldr r0, _02035B6C ; =0x000034D9 + mov r1, #0x42 + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + mov r2, #0x3 + add r0, #0x38 + mov r3, #0x0 + bl FUN_021D9708 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _02035B6C ; =0x000034D9 + mov r1, #0x42 + str r0, [sp, #0x4] + ldr r0, [sp, #0xc] + mov r2, #0x6 + add r0, #0x38 + mov r3, #0x0 + bl FUN_021D971C + ldr r0, [sp, #0x14] + mov r4, #0x0 + cmp r0, #0x0 + bls _02035B2C + ldr r5, [sp, #0xc] + ldr r3, _02035B70 ; =0x020F2B48 + add r7, r4, #0x0 + add r2, sp, #0x28 + mov r6, #0x6 +_02035AA2: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r6, r6, #0x1 + bne _02035AA2 + ldr r0, [r3, #0x0] + ldr r3, _02035B74 ; =0x020F2AA8 + str r0, [r2, #0x0] + ldmia r3!, {r0-r1} + add r2, sp, #0x1c + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] +_02035ABA: + add r6, sp, #0x28 + add r3, sp, #0x68 + mov r2, #0x6 +_02035AC0: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02035AC0 + ldr r0, [r6, #0x0] + add r1, sp, #0x68 + str r0, [r3, #0x0] + mov r0, #0x2 + ldrsh r0, [r1, r0] + add r0, r0, r7 + strh r0, [r1, #0x2] + ldr r0, [sp, #0x10] + ldrb r2, [r0, r4] + cmp r2, #0x2 + bne _02035AEA + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _02035AEA + mov r0, #0x1b + strh r0, [r1, #0x6] + b _02035AF2 +_02035AEA: + lsl r0, r2, #0x1 + add r1, r2, r0 + add r0, sp, #0x68 + strh r1, [r0, #0x6] +_02035AF2: + ldr r0, [sp, #0xc] + add r1, sp, #0x68 + add r0, #0x38 + bl FUN_021D9820 + mov r1, #0x1a + lsl r1, r1, #0x4 + add r2, sp, #0x5c + add r3, sp, #0x1c + str r0, [r5, r1] + ldmia r3!, {r0-r1} + add r6, r2, #0x0 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r1, r6, #0x0 + str r0, [r2, #0x0] + mov r0, #0x1a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r2, #0x1 + ldr r0, [r0, #0x0] + bl FUN_02020074 + ldr r0, [sp, #0x14] + add r4, r4, #0x1 + add r7, #0x18 + add r5, r5, #0x4 + cmp r4, r0 + blo _02035ABA +_02035B2C: + ldr r0, [sp, #0xc] + mov r2, #0x1 + ldrh r0, [r0, #0x28] + add r0, r0, #0x1 + lsl r1, r0, #0x2 + ldr r0, [sp, #0xc] + add r1, r0, r1 + mov r0, #0x67 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + mov r1, #0x2 + ldr r0, [r0, #0x0] + bl FUN_02035C18 + ldr r0, [sp, #0x14] + mov r1, #0x6f + add r2, r0, #0x1 + ldr r0, [sp, #0xc] + lsl r1, r1, #0x2 + str r2, [r0, r1] + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + add sp, #0xb4 + pop {r4-r7, pc} + .balign 4 +_02035B60: .word 0x020F2AB4 +_02035B64: .word 0x000034D8 +_02035B68: .word 0x020F2B14 +_02035B6C: .word 0x000034D9 +_02035B70: .word 0x020F2B48 +_02035B74: .word 0x020F2AA8 + + thumb_func_start FUN_02035B78 +FUN_02035B78: ; 0x02035B78 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x6f + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r4, #0x0 + cmp r0, #0x0 + bls _02035BA6 + mov r7, #0x67 + lsl r7, r7, #0x2 + add r6, r7, #0x0 + add r6, #0x20 +_02035B90: + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, r7] + bl FUN_0200C3DC + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _02035B90 +_02035BA6: + add r5, #0x38 + add r0, r5, #0x0 + bl FUN_021D99F8 + pop {r3-r7, pc} + + thumb_func_start FUN_02035BB0 +FUN_02035BB0: ; 0x02035BB0 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x6f + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r4, #0x0 + cmp r0, #0x0 + bls _02035BE4 + mov r7, #0x67 + lsl r7, r7, #0x2 + add r6, r7, #0x0 + add r6, #0x20 +_02035BC8: + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, r7] + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _02035BC8 +_02035BE4: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02035BE8 +FUN_02035BE8: ; 0x02035BE8 + push {r3-r6, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0202011C + add r6, r0, #0x0 + add r3, sp, #0x0 + ldmia r6!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r6, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + mov r0, #0x18 + mul r0, r4 + add r0, #0x14 + lsl r0, r0, #0xc + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02020044 + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_02035C18 +FUN_02035C18: ; 0x02035C18 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020201DC + mov r1, #0x3 + blx _u32_div_f + add r2, r0, #0x0 + lsl r1, r2, #0x1 + add r1, r2, r1 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02020130 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0202027C + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02035C44 +FUN_02035C44: ; 0x02035C44 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x1 + lsl r0, r0, #0x2 + add r1, r5, r0 + mov r0, #0x67 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + mov r1, #0x0 + add r4, r2, #0x0 + ldr r0, [r0, #0x0] + add r2, r1, #0x0 + bl FUN_02035C18 + add r0, r4, #0x1 + lsl r0, r0, #0x2 + add r1, r5, r0 + mov r0, #0x67 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r2, r1, #0x0 + bl FUN_02035C18 + pop {r3-r5, pc} + + thumb_func_start FUN_02035C78 +FUN_02035C78: ; 0x02035C78 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020201DC + mov r1, #0x3 + blx _u32_div_f + cmp r1, #0x1 + bne _02035C9E + add r0, r4, #0x0 + bl FUN_02020388 + cmp r0, #0x0 + bne _02035C9E + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x1 + bl FUN_02035C18 +_02035C9E: + pop {r4, pc} + + thumb_func_start FUN_02035CA0 +FUN_02035CA0: ; 0x02035CA0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0200E308 + cmp r0, #0x0 + beq _02035CD8 + add r0, r5, #0x0 + bl FUN_02046528 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + bl FUN_02035718 + add r0, r4, #0x0 + bl FUN_02019178 + add r0, r5, #0x0 + bl FUN_020358A0 + mov r1, #0x72 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r5, #0x0 + blx r1 + mov r0, #0x3 + strh r0, [r4, #0x2a] +_02035CD8: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02035CDC +FUN_02035CDC: ; 0x02035CDC + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _02035D02 + mov r1, #0x72 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r5, #0x0 + blx r1 +_02035D02: + pop {r4-r6, pc} + + thumb_func_start FUN_02035D04 +FUN_02035D04: ; 0x02035D04 + mov r2, #0x72 + lsl r2, r2, #0x2 + str r1, [r0, r2] + mov r1, #0x3 + strh r1, [r0, #0x2a] + bx lr + + thumb_func_start FUN_02035D10 +FUN_02035D10: ; 0x02035D10 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x72 + ldr r1, _02035D30 ; =FUN_02035D34 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x2 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r4, pc} + nop +_02035D30: .word FUN_02035D34 + + thumb_func_start FUN_02035D34 +FUN_02035D34: ; 0x02035D34 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + mov r0, #0xb + mov r1, #0x20 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0x0] + ldr r0, [r5, #0xc] + bl FUN_020238F4 + str r0, [sp, #0x4] + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + str r0, [r4, #0x0] + ldr r0, [sp, #0x4] + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_0204B2A4 + str r0, [r4, #0x8] + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_0205F524 + str r0, [r4, #0xc] + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_0205F524 + str r0, [r4, #0x10] + add r0, r7, #0x0 + mov r1, #0x2 + bl FUN_0205F524 + str r0, [r4, #0x14] + add r0, r7, #0x0 + mov r1, #0x3 + bl FUN_0205F524 + str r0, [r4, #0x18] + add r0, r5, #0x0 + add r0, #0xb0 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + str r0, [r4, #0x1c] + add r0, r5, #0x0 + bl FUN_02038690 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r4, [r6, r0] + ldr r1, _02035DC4 ; =FUN_02035DC8 + sub r0, #0x30 + str r1, [r6, r0] + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02035DC4: .word FUN_02035DC8 + + thumb_func_start FUN_02035DC8 +FUN_02035DC8: ; 0x02035DC8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + cmp r1, #0x0 + beq _02035DF0 + mov r0, #0xb + bl FUN_02016A8C +_02035DF0: + mov r0, #0xc + strh r0, [r4, #0x2a] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02035DF8 +FUN_02035DF8: ; 0x02035DF8 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x72 + ldr r1, _02035E18 ; =FUN_02035E1C + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x2 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r4, pc} + nop +_02035E18: .word FUN_02035E1C + + thumb_func_start FUN_02035E1C +FUN_02035E1C: ; 0x02035E1C + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + mov r1, #0x7a + add r4, r0, #0x0 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + mov r2, #0x0 + bl FUN_020379C8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, _02035E4C ; =FUN_02035E50 + sub r1, #0x30 + str r0, [r4, r1] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02035E4C: .word FUN_02035E50 + + thumb_func_start FUN_02035E50 +FUN_02035E50: ; 0x02035E50 + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r2, #0x40 + add r6, r0, #0x0 + blx memcpy + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r6, #0x0 + add r0, #0x23 + ldrb r0, [r0, #0x0] + cmp r0, #0x17 + bls _02035E90 + b _020361E6 +_02035E90: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02035E9C: ; jump table (using 16-bit offset) + .short _020361E6 - _02035E9C - 2; case 0 + .short _02035ECC - _02035E9C - 2; case 1 + .short _020361E6 - _02035E9C - 2; case 2 + .short _020360EA - _02035E9C - 2; case 3 + .short _02035F4A - _02035E9C - 2; case 4 + .short _02035FD0 - _02035E9C - 2; case 5 + .short _02036056 - _02035E9C - 2; case 6 + .short _020360AC - _02035E9C - 2; case 7 + .short _02036144 - _02035E9C - 2; case 8 + .short _02036170 - _02035E9C - 2; case 9 + .short _020361CA - _02035E9C - 2; case 10 + .short _020361A4 - _02035E9C - 2; case 11 + .short _020361A4 - _02035E9C - 2; case 12 + .short _020361A4 - _02035E9C - 2; case 13 + .short _020361A4 - _02035E9C - 2; case 14 + .short _020361A4 - _02035E9C - 2; case 15 + .short _020361A4 - _02035E9C - 2; case 16 + .short _020361A4 - _02035E9C - 2; case 17 + .short _020361A4 - _02035E9C - 2; case 18 + .short _020361A4 - _02035E9C - 2; case 19 + .short _020361A4 - _02035E9C - 2; case 20 + .short _020361A4 - _02035E9C - 2; case 21 + .short _020361A4 - _02035E9C - 2; case 22 + .short _020361A4 - _02035E9C - 2; case 23 +_02035ECC: + mov r0, #0xb + mov r1, #0x30 + bl FUN_02016998 + add r7, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r7, #0x0] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r7, #0x4] + mov r0, #0x1 + strb r0, [r7, #0x11] + add r0, r6, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + strb r0, [r7, #0x14] + ldr r0, [r7, #0x0] + bl FUN_0206B9AC + strb r0, [r7, #0x13] + mov r0, #0x0 + strh r0, [r7, #0x18] + strb r0, [r7, #0x12] + ldr r0, [r5, #0xc] + bl FUN_0202A918 + str r0, [r7, #0x20] + ldr r0, [r5, #0xc] + bl FUN_0206BB28 + str r0, [r7, #0x1c] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + str r0, [r7, #0x2c] + mov r0, #0x0 + str r0, [r7, #0x28] + ldr r1, _0203626C ; =0x020F2A9C + add r0, r7, #0x0 + bl FUN_0207B000 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0207C2A4 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_0203796C + mov r0, #0x7e + lsl r0, r0, #0x2 + str r7, [r4, r0] + ldr r1, _02036270 ; =FUN_0203684C + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_02035F4A: + mov r0, #0xb + mov r1, #0x30 + bl FUN_02016998 + add r7, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r7, #0x0] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r7, #0x4] + mov r1, #0x1 + add r0, r6, #0x0 + strb r1, [r7, #0x11] + add r0, #0x22 + ldrb r0, [r0, #0x0] + strb r0, [r7, #0x14] + strb r1, [r7, #0x13] + ldrh r0, [r6, #0x26] + strh r0, [r7, #0x18] + mov r0, #0x2 + strb r0, [r7, #0x12] + ldr r0, [r5, #0xc] + bl FUN_0206BB28 + str r0, [r7, #0x1c] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + str r0, [r7, #0x2c] + mov r0, #0x0 + str r0, [r7, #0x28] + ldr r1, _02036274 ; =0x020F2A8C + add r0, r7, #0x0 + bl FUN_0207B000 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0207C2A4 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_0203796C + mov r0, #0xb + mov r1, #0x4 + bl FUN_02016998 + ldrh r1, [r6, #0x24] + strh r1, [r0, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2] + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + sub r0, r1, #0x4 + str r7, [r4, r0] + ldr r1, _02036270 ; =FUN_0203684C + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_02035FD0: + mov r0, #0xb + mov r1, #0x30 + bl FUN_02016998 + add r7, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r7, #0x0] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r7, #0x4] + mov r1, #0x1 + add r0, r6, #0x0 + strb r1, [r7, #0x11] + add r0, #0x22 + ldrb r0, [r0, #0x0] + strb r0, [r7, #0x14] + strb r1, [r7, #0x13] + ldrh r0, [r6, #0x26] + strh r0, [r7, #0x18] + mov r0, #0x2 + strb r0, [r7, #0x12] + ldr r0, [r5, #0xc] + bl FUN_0206BB28 + str r0, [r7, #0x1c] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + str r0, [r7, #0x2c] + mov r0, #0x0 + str r0, [r7, #0x28] + ldr r1, _02036274 ; =0x020F2A8C + add r0, r7, #0x0 + bl FUN_0207B000 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0207C2A4 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_0203796C + mov r0, #0xb + mov r1, #0x4 + bl FUN_02016998 + mov r1, #0x0 + strh r1, [r0, #0x0] + ldr r1, [r6, #0x34] + strh r1, [r0, #0x2] + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + sub r0, r1, #0x4 + str r7, [r4, r0] + ldr r1, _02036270 ; =FUN_0203684C + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_02036056: + ldrh r0, [r6, #0x24] + bl FUN_0206EAB8 + add r3, r0, #0x0 + mov r0, #0xb + add r2, r6, #0x0 + str r0, [sp, #0x0] + add r2, #0x22 + ldrb r2, [r2, #0x0] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_02037F2C + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r6, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0xa + ldrh r0, [r6, #0x24] + bne _02036090 + add r2, r6, #0x0 + add r2, #0x22 + ldrb r2, [r2, #0x0] + mov r1, #0x0 + bl FUN_02036BC4 + b _0203609C +_02036090: + add r2, r6, #0x0 + add r2, #0x22 + ldrb r2, [r2, #0x0] + mov r1, #0x1 + bl FUN_02036BC4 +_0203609C: + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036278 ; =FUN_02036BDC + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_020360AC: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r1, r6, #0x0 + add r1, #0x22 + ldrb r1, [r1, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0xb + bl FUN_02037F90 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r2, r6, #0x0 + add r2, #0x22 + ldrh r0, [r6, #0x24] + ldrb r2, [r2, #0x0] + mov r1, #0x2 + bl FUN_02036BC4 + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036278 ; =FUN_02036BDC + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_020360EA: + mov r0, #0xb + mov r1, #0x4 + bl FUN_02016998 + add r1, r6, #0x0 + add r1, #0x22 + ldrb r1, [r1, #0x0] + str r1, [r0, #0x0] + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r7, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + ldr r1, _0203627C ; =0x020F2A90 + add r0, r7, #0x0 + mov r2, #0xb + bl FUN_0206EFEC + mov r1, #0x7e + lsl r1, r1, #0x2 + add r3, r5, #0x0 + str r0, [r4, r1] + add r3, #0x94 + ldr r0, [r4, r1] + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x0] + mov r2, #0x1 + bl FUN_0206E314 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_0203781C + ldr r1, _02036280 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_02036144: + mov r0, #0xb + mov r1, #0xc + bl FUN_02016998 + ldrh r1, [r6, #0x24] + strh r1, [r0, #0x2] + mov r1, #0x3 + strb r1, [r0, #0x1] + add r1, r6, #0x0 + add r1, #0x22 + ldrb r1, [r1, #0x0] + strb r1, [r0, #0x0] + ldrh r1, [r6, #0x38] + strh r1, [r0, #0x4] + ldr r1, [r6, #0x3c] + str r1, [r0, #0x8] + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x6 + strh r0, [r4, #0x2a] + b _0203625E +_02036170: + mov r0, #0xb + mov r1, #0xc + bl FUN_02016998 + add r7, r0, #0x0 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034A04 + strh r0, [r7, #0x2] + mov r0, #0x0 + strb r0, [r7, #0x1] + add r0, r6, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + strb r0, [r7, #0x0] + ldrh r0, [r6, #0x38] + strh r0, [r7, #0x4] + ldr r0, [r6, #0x3c] + str r0, [r7, #0x8] + mov r0, #0x7e + lsl r0, r0, #0x2 + str r7, [r4, r0] + mov r0, #0x6 + strh r0, [r4, #0x2a] + b _0203625E +_020361A4: + sub r0, #0xb + add r1, sp, #0x4 + strh r0, [r1, #0x6] + add r0, r6, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + strh r0, [r1, #0x4] + str r7, [sp, #0x4] + ldrh r1, [r1, #0x6] + mov r0, #0x0 + bl FUN_02063948 + mov r1, #0x7a + lsl r1, r1, #0x2 + add r2, r0, #0x0 + add r0, sp, #0x4 + add r1, r4, r1 + blx r2 + b _0203625E +_020361CA: + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036280 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_020361E6: + add r0, r6, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x5 + beq _02036200 + cmp r0, #0x6 + beq _02036200 + cmp r0, #0x7 + beq _02036200 + cmp r0, #0x10 + beq _02036200 + cmp r0, #0x8 + bne _02036234 +_02036200: + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r2, #0x7e + lsl r2, r2, #0x2 + str r0, [r4, r2] + add r0, r6, #0x0 + add r0, #0x22 + ldrb r1, [r0, #0x0] + ldr r0, [r4, r2] + cmp r1, #0x6 + blo _02036226 + mov r1, #0x0 + bl FUN_0206E358 + b _0203622A +_02036226: + bl FUN_0206E358 +_0203622A: + ldr r1, _02036280 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_02036234: + cmp r0, #0x9 + bne _02036254 + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036280 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203625E +_02036254: + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0xc + strh r0, [r4, #0x2a] +_0203625E: + add r0, r6, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_0203626C: .word 0x020F2A9C +_02036270: .word FUN_0203684C +_02036274: .word 0x020F2A8C +_02036278: .word FUN_02036BDC +_0203627C: .word 0x020F2A90 +_02036280: .word FUN_020362E4 + + thumb_func_start FUN_02036284 +FUN_02036284: ; 0x02036284 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x72 + ldr r1, _020362A4 ; =FUN_020362A8 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x2 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r4, pc} + nop +_020362A4: .word FUN_020362A8 + + thumb_func_start FUN_020362A8 +FUN_020362A8: ; 0x020362A8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + mov r1, #0x73 + add r4, r0, #0x0 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0x0 + bl FUN_0206E358 + mov r0, #0x72 + ldr r1, _020362E0 ; =FUN_020362E4 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_020362E0: .word FUN_020362E4 + + thumb_func_start FUN_020362E4 +FUN_020362E4: ; 0x020362E4 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0xb + bl FUN_0206E2F0 + str r0, [sp, #0x8] + bl FUN_0206E308 + mov r1, #0x7e + lsl r1, r1, #0x2 + add r2, r0, #0x0 + ldr r0, [sp, #0x8] + ldr r1, [r4, r1] + blx memcpy + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, [sp, #0x8] + bl FUN_0206E384 + cmp r0, #0x5 + bls _02036328 + b _020364EE +_02036328: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02036334: ; jump table (using 16-bit offset) + .short _02036340 - _02036334 - 2; case 0 + .short _0203637A - _02036334 - 2; case 1 + .short _0203638A - _02036334 - 2; case 2 + .short _020364EE - _02036334 - 2; case 3 + .short _020363F6 - _02036334 - 2; case 4 + .short _020364EE - _02036334 - 2; case 5 +_02036340: + ldr r0, [sp, #0x8] + bl FUN_0206E37C + add r1, sp, #0x10 + strh r0, [r1, #0x4] + ldr r0, [sp, #0x8] + bl FUN_0206E38C + add r1, sp, #0x10 + strb r0, [r1, #0x6] + str r5, [sp, #0x10] + ldrh r0, [r1, #0x4] + mov r1, #0x6 + mov r2, #0xb + bl FUN_0206E7B8 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + mov r0, #0x0 + lsr r1, r1, #0x10 + bl FUN_0205CE48 + mov r1, #0x73 + lsl r1, r1, #0x2 + add r2, r0, #0x0 + add r0, sp, #0x10 + add r1, r4, r1 + blx r2 + b _020364F8 +_0203637A: + ldr r0, [sp, #0x8] + bl FUN_0206E37C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0203695C + b _020364F8 +_0203638A: + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r5, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + str r0, [r5, #0x0] + ldr r0, [r6, #0xc] + bl FUN_0206F158 + str r0, [r5, #0x4] + ldr r0, [r6, #0xc] + bl FUN_02025838 + str r0, [r5, #0x8] + ldr r0, [r6, #0xc] + bl LoadPlayerDataAddress + str r0, [r5, #0xc] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r4, r0 + str r0, [r5, #0x18] + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x9 + add r0, #0x20 + strb r1, [r0, #0x0] + ldr r0, [sp, #0x8] + bl FUN_0206E37C + strh r0, [r5, #0x24] + ldr r1, _02036504 ; =0x020F96DC + add r0, r6, #0x0 + add r2, r5, #0x0 + bl FUN_020373D4 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r5, [r4, r0] + ldr r1, _02036508 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 + b _020364F8 +_020363F6: + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + str r0, [sp, #0x4] + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldr r7, [r0, #0x0] + ldr r0, [sp, #0x8] + bl FUN_0206E37C + add r5, r0, #0x0 + ldr r0, [sp, #0x4] + add r1, r7, #0x0 + bl FUN_0206B9B0 + str r0, [sp, #0xc] + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_0206EA98 + cmp r0, #0x1 + bne _02036474 + ldr r0, [sp, #0xc] + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02036474 + add r0, r5, #0x0 + bl FUN_0206EAB8 + add r3, r0, #0x0 + mov r0, #0xb + lsl r2, r7, #0x18 + str r0, [sp, #0x0] + add r0, r6, #0x0 + mov r1, #0x2 + lsr r2, r2, #0x18 + bl FUN_02037F2C + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + lsl r2, r7, #0x18 + add r0, r5, #0x0 + mov r1, #0x0 + lsr r2, r2, #0x18 + bl FUN_02036BC4 + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _0203650C ; =FUN_02036BDC + add r0, r4, #0x0 + bl FUN_02035D04 + b _020364F8 +_02036474: + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r5, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [sp, #0x4] + str r0, [r5, #0x0] + ldr r0, [r6, #0xc] + bl FUN_0206F158 + str r0, [r5, #0x4] + ldr r0, [r6, #0xc] + bl FUN_02025838 + str r0, [r5, #0x8] + ldr r0, [r6, #0xc] + bl LoadPlayerDataAddress + str r0, [r5, #0xc] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r4, r0 + str r0, [r5, #0x18] + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + ldr r0, [sp, #0x8] + bl FUN_0206E37C + strh r0, [r5, #0x24] + add r0, r5, #0x0 + add r0, #0x22 + strb r7, [r0, #0x0] + str r6, [r5, #0x1c] + ldrh r0, [r5, #0x24] + cmp r0, #0x0 + bne _020364CC + mov r1, #0x0 + b _020364CE +_020364CC: + mov r1, #0xa +_020364CE: + add r0, r5, #0x0 + add r0, #0x20 + strb r1, [r0, #0x0] + ldr r1, _02036504 ; =0x020F96DC + add r0, r6, #0x0 + add r2, r5, #0x0 + bl FUN_020373D4 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r5, [r4, r0] + ldr r1, _02036508 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 + b _020364F8 +_020364EE: + add r0, r6, #0x0 + bl FUN_0204649C + mov r0, #0xc + strh r0, [r4, #0x2a] +_020364F8: + ldr r0, [sp, #0x8] + bl FUN_02016A18 + mov r0, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_02036504: .word 0x020F96DC +_02036508: .word FUN_02035E50 +_0203650C: .word FUN_02036BDC + + thumb_func_start FUN_02036510 +FUN_02036510: ; 0x02036510 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x72 + ldr r1, _02036530 ; =FUN_02036534 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x2 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r4, pc} + nop +_02036530: .word FUN_02036534 + + thumb_func_start FUN_02036534 +FUN_02036534: ; 0x02036534 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0xb + bl FUN_02065054 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + str r5, [sp, #0x0] + ldr r0, [r4, r1] + mov r2, #0x0 + str r0, [sp, #0x4] + mov r0, #0x1 + add r1, r0, #0x0 + mov r3, #0xff + bl FUN_02064E90 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02038680 + mov r0, #0x72 + ldr r1, _02036580 ; =FUN_02036584 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02036580: .word FUN_02036584 + + thumb_func_start FUN_02036584 +FUN_02036584: ; 0x02036584 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + mov r1, #0x7e + add r4, r0, #0x0 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02065314 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02065070 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0xc + strh r0, [r4, #0x2a] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020365BC +FUN_020365BC: ; 0x020365BC + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + bl FUN_02035718 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200CCF8 + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0201AC68 + add r0, r4, #0x0 + bl FUN_02019178 + add r0, r5, #0x0 + bl FUN_020358A0 + mov r0, #0x4 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020365F0 +FUN_020365F0: ; 0x020365F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + ldr r0, [r0, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + beq _02036618 + mov r2, #0x0 + ldr r1, _0203663C ; =0x000007F2 + add r0, r5, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + b _02036636 +_02036618: + mov r0, #0x20 + mov r1, #0x8 + bl FUN_02016998 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r3, [r4, r1] + mov r2, #0x0 + strh r2, [r3, #0x4] + ldr r1, _02036640 ; =0x000007D5 + add r0, r5, #0x0 + add r3, r3, #0x4 + bl FUN_02038CD8 +_02036636: + mov r0, #0x5 + strh r0, [r4, #0x2a] + pop {r3-r5, pc} + .balign 4 +_0203663C: .word 0x000007F2 +_02036640: .word 0x000007D5 + + thumb_func_start FUN_02036644 +FUN_02036644: ; 0x02036644 + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r5, [r4, r0] + ldr r0, [r6, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + beq _0203666C + mov r0, #0x0 + strh r0, [r4, #0x2a] + pop {r4-r6, pc} +_0203666C: + ldrh r0, [r5, #0x4] + cmp r0, #0x0 + bne _02036676 + mov r0, #0x0 + b _02036678 +_02036676: + mov r0, #0xf +_02036678: + strh r0, [r4, #0x2a] + add r0, r5, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02036684 +FUN_02036684: ; 0x02036684 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x72 + ldr r1, _020366A4 ; =FUN_020366A8 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x2 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r4, pc} + nop +_020366A4: .word FUN_020366A8 + + thumb_func_start FUN_020366A8 +FUN_020366A8: ; 0x020366A8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02037EF8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, _020366D0 ; =FUN_020366D4 + sub r1, #0x30 + str r0, [r4, r1] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_020366D0: .word FUN_020366D4 + + thumb_func_start FUN_020366D4 +FUN_020366D4: ; 0x020366D4 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0xc + strh r0, [r4, #0x2a] + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02036700 +FUN_02036700: ; 0x02036700 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x72 + ldr r1, _02036720 ; =FUN_02036724 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x2 + strh r0, [r4, #0x2a] + mov r0, #0x1 + pop {r4, pc} + nop +_02036720: .word FUN_02036724 + + thumb_func_start FUN_02036724 +FUN_02036724: ; 0x02036724 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r2, [r5, #0xc] + mov r0, #0x2 + mov r1, #0x0 + mov r3, #0xb + bl FUN_02085338 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, sp, #0x0 + mov r1, #0x4 + bl FUN_0201373C + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r1, sp, #0x0 + bl FUN_020853BC + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02037E80 + mov r0, #0x72 + ldr r1, _02036778 ; =FUN_0203677C + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r0, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02036778: .word FUN_0203677C + + thumb_func_start FUN_0203677C +FUN_0203677C: ; 0x0203677C + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020853E4 + cmp r0, #0x0 + bne _020367C6 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, sp, #0x0 + bl FUN_020853FC + bl FUN_0202EDF8 + cmp r0, #0x0 + beq _020367C0 + add r0, sp, #0x0 + bl FUN_02052DE8 + ldr r0, [r4, #0x78] + add r1, sp, #0x0 + bl FUN_02052CD8 +_020367C0: + mov r0, #0x8 + strh r0, [r5, #0x2a] + b _020367CA +_020367C6: + mov r0, #0xc + strh r0, [r5, #0x2a] +_020367CA: + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020853A8 + add r0, r4, #0x0 + bl FUN_0204649C + ldr r0, [r4, #0x7c] + bl FUN_02052F74 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020367E8 +FUN_020367E8: ; 0x020367E8 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + bl FUN_02035718 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0200CCF8 + ldrb r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0201AC68 + add r0, r4, #0x0 + bl FUN_02019178 + add r0, r5, #0x0 + bl FUN_020358A0 + ldr r0, [r6, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + bne _02036834 + ldr r1, _02036848 ; =0x00002275 + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + b _0203683E +_02036834: + add r0, r5, #0x0 + mov r1, #0x4 + mov r2, #0x0 + bl FUN_02038D10 +_0203683E: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_02036848: .word 0x00002275 + + thumb_func_start FUN_0203684C +FUN_0203684C: ; 0x0203684C + push {r3-r7, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x30 + bl FUN_02016998 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r2, #0x30 + add r7, r0, #0x0 + blx memcpy + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldrb r0, [r7, #0x12] + cmp r0, #0x2 + bne _0203692E + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x7f + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r2, #0x40 + str r1, [sp, #0x0] + mov r1, #0x0 + add r5, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + str r0, [r5, #0x0] + ldr r0, [r6, #0xc] + bl FUN_0206F158 + str r0, [r5, #0x4] + ldr r0, [r6, #0xc] + bl FUN_02025838 + str r0, [r5, #0x8] + ldr r0, [r6, #0xc] + bl LoadPlayerDataAddress + str r0, [r5, #0xc] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r4, r0 + add r1, r5, #0x0 + str r0, [r5, #0x18] + mov r0, #0x0 + add r1, #0x21 + strb r0, [r1, #0x0] + ldr r1, [sp, #0x0] + str r6, [r5, #0x1c] + ldrh r1, [r1, #0x0] + cmp r1, #0x0 + beq _020368E2 + add r1, r5, #0x0 + mov r2, #0x7 + add r1, #0x20 + strb r2, [r1, #0x0] + b _020368EE +_020368E2: + add r0, r5, #0x0 + mov r1, #0x8 + add r0, #0x20 + strb r1, [r0, #0x0] + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x2] +_020368EE: + str r0, [r5, #0x34] + ldr r0, [sp, #0x0] + add r2, r5, #0x0 + ldrh r0, [r0, #0x0] + strh r0, [r5, #0x24] + add r0, r5, #0x0 + ldrb r1, [r7, #0x14] + add r0, #0x22 + strb r1, [r0, #0x0] + ldrh r0, [r7, #0x18] + strh r0, [r5, #0x26] + add r0, r5, #0x0 + ldrb r1, [r7, #0x16] + add r0, #0x28 + strb r1, [r0, #0x0] + ldr r1, _02036954 ; =0x020F96DC + add r0, r6, #0x0 + bl FUN_020373D4 + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r5, [r4, r0] + ldr r1, _02036958 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 + b _0203694A +_0203692E: + mov r1, #0x7a + lsl r1, r1, #0x2 + ldrb r2, [r7, #0x14] + add r0, r6, #0x0 + add r1, r4, r1 + bl FUN_020379C8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036958 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 +_0203694A: + add r0, r7, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02036954: .word 0x020F96DC +_02036958: .word FUN_02035E50 + + thumb_func_start FUN_0203695C +FUN_0203695C: ; 0x0203695C + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02046528 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + mov r0, #0xb + bl FUN_020851B8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x0] + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020851DC + mov r5, #0x0 + add r4, r5, #0x0 +_0203699A: + add r0, r4, #0x0 + bl FUN_0206EB1C + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + mov r2, #0x1 + mov r3, #0xb + bl FUN_0206EE50 + cmp r0, #0x1 + bne _020369C6 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020851DC + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_020369C6: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x40 + blo _0203699A + ldr r0, [sp, #0x4] + add r3, sp, #0x8 + add r0, #0x94 + ldr r0, [r0, #0x0] + mov r1, #0x4 + add r2, sp, #0x8 + add r3, #0x1 + bl FUN_0206F17C + mov r0, #0x7e + add r2, sp, #0x8 + lsl r0, r0, #0x2 + ldrb r1, [r2, #0x1] + add r3, r5, #0x3 + lsl r3, r3, #0x18 + ldrb r2, [r2, #0x0] + ldr r0, [r6, r0] + lsr r3, r3, #0x18 + bl FUN_020851F8 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r0, [sp, #0x4] + ldr r1, [r6, r1] + bl FUN_0203791C + ldr r1, _02036A10 ; =FUN_02036A14 + add r0, r6, #0x0 + bl FUN_02035D04 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02036A10: .word FUN_02036A14 + + thumb_func_start FUN_02036A14 +FUN_02036A14: ; 0x02036A14 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + add r1, sp, #0x0 + ldr r0, [r4, r0] + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_0208524C + add r0, r5, #0x0 + add r3, sp, #0x0 + add r0, #0x94 + ldrb r2, [r3, #0x0] + ldrb r3, [r3, #0x1] + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_0206F190 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r0, #0xb + bl FUN_02016A8C + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036A74 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02036A74: .word FUN_020362E4 + + thumb_func_start FUN_02036A78 +FUN_02036A78: ; 0x02036A78 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + mov r1, #0x7e + add r4, r0, #0x0 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r0, #0xb + bl FUN_02016A8C + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036AB4 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02036AB4: .word FUN_020362E4 + + thumb_func_start FUN_02036AB8 +FUN_02036AB8: ; 0x02036AB8 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + mov r0, #0xb + ldr r7, [r1, #0x0] + bl FUN_02016A8C + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r5, [r4, r0] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + bne _02036B0E + mov r0, #0xb + add r1, r5, #0x0 + bl FUN_02016A8C + mov r1, #0x7a + lsl r1, r1, #0x2 + lsl r2, r7, #0x18 + add r0, r6, #0x0 + add r1, r4, r1 + lsr r2, r2, #0x18 + bl FUN_020379C8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036B88 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 + b _02036B82 +_02036B0E: + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + add r2, r0, #0x0 + ldr r0, [r5, #0x14] + add r1, r6, #0x0 + lsl r0, r0, #0x5 + add r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x0] + ldr r0, [r5, #0x18] + lsl r0, r0, #0x5 + add r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + str r0, [sp, #0x4] + ldr r3, [r5, #0x1c] + mov r0, #0xb + lsl r3, r3, #0x10 + lsr r3, r3, #0x10 + bl FUN_02063888 + ldr r1, [r5, #0x1c] + add r7, r0, #0x0 + lsl r1, r1, #0x10 + mov r0, #0x1 + lsr r1, r1, #0x10 + mov r2, #0xb + bl FUN_0202914C + add r1, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + mov r2, #0x1 + bl FUN_02028AD4 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r0, #0xb + bl FUN_02016A8C + add r0, r6, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02036B8C ; =FUN_020638BC + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r7, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] +_02036B82: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02036B88: .word FUN_02035E50 +_02036B8C: .word FUN_020638BC + + thumb_func_start FUN_02036B90 +FUN_02036B90: ; 0x02036B90 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + mov r1, #0x73 + add r4, r0, #0x0 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036BC0 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02036BC0: .word FUN_020362E4 + + thumb_func_start FUN_02036BC4 +FUN_02036BC4: ; 0x02036BC4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0xb + mov r1, #0x4 + add r6, r2, #0x0 + bl FUN_02016998 + strh r5, [r0, #0x0] + strb r6, [r0, #0x2] + strb r4, [r0, #0x3] + pop {r4-r6, pc} + + thumb_func_start FUN_02036BDC +FUN_02036BDC: ; 0x02036BDC + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r6, [r4, r0] + ldrb r1, [r6, #0x3] + cmp r1, #0x3 + bhi _02036CD4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02036C06: ; jump table (using 16-bit offset) + .short _02036C58 - _02036C06 - 2; case 0 + .short _02036C98 - _02036C06 - 2; case 1 + .short _02036C32 - _02036C06 - 2; case 2 + .short _02036C0E - _02036C06 - 2; case 3 +_02036C0E: + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_0208562C + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036CE4 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + b _02036CD4 +_02036C32: + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_0208562C + mov r1, #0x7a + lsl r1, r1, #0x2 + ldrb r2, [r6, #0x2] + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_020379C8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036CE8 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 + b _02036CD4 +_02036C58: + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_020855E4 + cmp r0, #0x1 + bne _02036C70 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0xc + bl FUN_02036CEC + b _02036CD4 +_02036C70: + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0208562C + mov r1, #0x7a + lsl r1, r1, #0x2 + ldrb r2, [r6, #0x2] + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_020379C8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036CE8 ; =FUN_02035E50 + add r0, r4, #0x0 + bl FUN_02035D04 + b _02036CD4 +_02036C98: + sub r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_020855E4 + cmp r0, #0x1 + bne _02036CB0 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0xb + bl FUN_02036CEC + b _02036CD4 +_02036CB0: + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0208562C + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036CE4 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 +_02036CD4: + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02036CE4: .word FUN_020362E4 +_02036CE8: .word FUN_02035E50 + + thumb_func_start FUN_02036CEC +FUN_02036CEC: ; 0x02036CEC + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x7f + add r6, r1, #0x0 + str r2, [sp, #0x0] + lsl r0, r0, #0x2 + ldr r7, [r6, r0] + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02025838 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r6, r0 + str r0, [r4, #0x18] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + ldrh r0, [r7, #0x0] + strh r0, [r4, #0x24] + add r0, r4, #0x0 + ldrb r1, [r7, #0x2] + add r0, #0x22 + strb r1, [r0, #0x0] + add r1, r4, #0x0 + ldr r0, [sp, #0x0] + add r1, #0x20 + strb r0, [r1, #0x0] + str r5, [r4, #0x1c] + ldrb r1, [r7, #0x2] + ldr r0, [r4, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + bl FUN_0208560C + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + bl FUN_0208562C + ldr r1, _02036D8C ; =0x020F96DC + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r4, [r6, r0] + ldr r1, _02036D90 ; =FUN_02035E50 + add r0, r6, #0x0 + bl FUN_02035D04 + pop {r3-r7, pc} + nop +_02036D8C: .word 0x020F96DC +_02036D90: .word FUN_02035E50 + + thumb_func_start FUN_02036D94 +FUN_02036D94: ; 0x02036D94 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02087E14 + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036DD0 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02036DD0: .word FUN_020362E4 + + thumb_func_start FUN_02036DD4 +FUN_02036DD4: ; 0x02036DD4 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + mov r1, #0x73 + add r4, r0, #0x0 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _02036E04 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02036E04: .word FUN_020362E4 + + thumb_func_start FUN_02036E08 +FUN_02036E08: ; 0x02036E08 + push {r3-r7, lr} + sub sp, #0x48 + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r5, [r6, r0] + bl FUN_0200541C + mov r0, #0x3 + mov r1, #0x49 + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + ldrb r1, [r5, #0x0] + str r0, [sp, #0x20] + bl FUN_0206B9B0 + str r0, [sp, #0x24] + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + ldr r0, [r4, #0xc] + bne _02036E9E + bl LoadPlayerDataAddress + str r0, [sp, #0x28] + ldr r0, [r4, #0xc] + bl FUN_02079C70 + add r7, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0x2c] + ldr r0, [r4, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x30] + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + str r0, [sp, #0x34] + ldr r0, [r4, #0xc] + bl FUN_0204C1A8 + ldr r1, [sp, #0x2c] + str r7, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x30] + ldr r3, [sp, #0x28] + str r1, [sp, #0x8] + ldr r1, [sp, #0x34] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x8] + ldr r1, [sp, #0x24] + str r0, [sp, #0x14] + mov r0, #0x1 + str r0, [sp, #0x18] + mov r0, #0x49 + str r0, [sp, #0x1c] + ldrh r2, [r5, #0x4] + ldr r0, [sp, #0x20] + bl FUN_0206C700 + b _02036EF2 +_02036E9E: + bl LoadPlayerDataAddress + str r0, [sp, #0x38] + ldr r0, [r4, #0xc] + bl FUN_02079C70 + add r7, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0x3c] + ldr r0, [r4, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x40] + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + str r0, [sp, #0x44] + ldr r0, [r4, #0xc] + bl FUN_0204C1A8 + ldr r1, [sp, #0x3c] + str r7, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x40] + ldr r3, [sp, #0x38] + str r1, [sp, #0x8] + ldr r1, [sp, #0x44] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [r5, #0x8] + ldr r1, [sp, #0x24] + str r0, [sp, #0x14] + mov r0, #0x0 + str r0, [sp, #0x18] + mov r0, #0x49 + str r0, [sp, #0x1c] + ldrh r2, [r5, #0x4] + ldr r0, [sp, #0x20] + bl FUN_0206C700 +_02036EF2: + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x4 + bl FUN_02016998 + ldrb r1, [r5, #0x0] + str r1, [r0, #0x0] + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r6, r1] + sub r0, r1, #0x4 + ldr r0, [r6, r0] + bl FUN_02016A18 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r4, [r6, r0] + mov r0, #0x7 + strh r0, [r6, #0x2a] + add sp, #0x48 + pop {r3-r7, pc} + + thumb_func_start FUN_02036F1C +FUN_02036F1C: ; 0x02036F1C + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0206C91C + cmp r0, #0x1 + bne _02036F98 + mov r0, #0x7e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0206C92C + mov r0, #0x49 + bl FUN_020168D0 + ldr r0, _02036F9C ; =0x00000475 + mov r1, #0x0 + bl FUN_02005350 + mov r0, #0x0 + bl FUN_0200415C + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0204ADBC + mov r1, #0x73 + lsl r1, r1, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + bl FUN_02037844 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + ldr r1, [r1, #0x0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0206E358 + mov r0, #0x7f + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r1, _02036FA0 ; =FUN_020362E4 + add r0, r4, #0x0 + bl FUN_02035D04 +_02036F98: + pop {r3-r5, pc} + nop +_02036F9C: .word 0x00000475 +_02036FA0: .word FUN_020362E4 + + thumb_func_start FUN_02036FA4 +FUN_02036FA4: ; 0x02036FA4 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x38] + add r4, r1, #0x0 + add r5, r2, #0x0 + bl FUN_020552F8 + add r7, r0, #0x0 + ldr r0, [r6, #0x38] + bl FUN_02055320 + str r0, [r4, #0x0] + ldr r0, [r6, #0x38] + bl FUN_0205532C + str r0, [r5, #0x0] + cmp r7, #0x3 + bhi _02036FFA + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02036FD4: ; jump table (using 16-bit offset) + .short _02036FDC - _02036FD4 - 2; case 0 + .short _02036FE4 - _02036FD4 - 2; case 1 + .short _02036FEC - _02036FD4 - 2; case 2 + .short _02036FF4 - _02036FD4 - 2; case 3 +_02036FDC: + ldr r0, [r5, #0x0] + sub r0, r0, #0x1 + str r0, [r5, #0x0] + b _02036FFA +_02036FE4: + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02036FFA +_02036FEC: + ldr r0, [r4, #0x0] + sub r0, r0, #0x1 + str r0, [r4, #0x0] + b _02036FFA +_02036FF4: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] +_02036FFA: + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02037000 +FUN_02037000: ; 0x02037000 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_020553A0 + bl FUN_02058BE4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058BE4 + cmp r4, r0 + bne _0203701C + mov r0, #0x1 + b _0203701E +_0203701C: + mov r0, #0x0 +_0203701E: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3-r5, pc} + + thumb_func_start FUN_02037024 +FUN_02037024: ; 0x02037024 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r1, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x0 + add r5, r0, #0x0 + bl FUN_02036FA4 + add r4, r0, #0x0 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0204A6E0 + bl FUN_020547A4 + cmp r0, #0x1 + bne _0203707E + cmp r4, #0x3 + bhi _0203707E + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02037058: ; jump table (using 16-bit offset) + .short _02037060 - _02037058 - 2; case 0 + .short _02037068 - _02037058 - 2; case 1 + .short _02037070 - _02037058 - 2; case 2 + .short _02037078 - _02037058 - 2; case 3 +_02037060: + ldr r0, [sp, #0x0] + sub r0, r0, #0x1 + str r0, [sp, #0x0] + b _0203707E +_02037068: + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + b _0203707E +_02037070: + ldr r0, [sp, #0x4] + sub r0, r0, #0x1 + str r0, [sp, #0x4] + b _0203707E +_02037078: + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] +_0203707E: + ldr r0, [r5, #0x34] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + bl FUN_02058D74 + str r0, [r6, #0x0] + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02037090 +FUN_02037090: ; 0x02037090 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + bl FUN_02037024 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020370B8 + bl FUN_020588D4 + cmp r0, #0x1 + bne _020370B8 + ldr r0, [r5, #0x38] + ldr r1, [r4, #0x0] + bl FUN_02037000 + cmp r0, #0x1 + bne _020370B8 + mov r0, #0x1 + pop {r3-r5, pc} +_020370B8: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020370BC +FUN_020370BC: ; 0x020370BC + push {r3-r7, lr} + sub sp, #0x10 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r1, sp, #0xc + add r2, sp, #0x8 + add r6, r0, #0x0 + bl FUN_02036FA4 + ldr r0, [sp, #0x4] + mov r7, #0x0 + cmp r0, #0x0 + ble _02037130 + ldr r4, [sp, #0x0] + add r5, r4, #0x0 +_020370DA: + ldr r1, [sp, #0xc] + ldr r0, [r4, #0x4] + cmp r1, r0 + bne _02037124 + ldr r1, [sp, #0x8] + ldr r0, [r4, #0x8] + cmp r1, r0 + bne _02037124 + ldrh r0, [r4, #0x2] + cmp r0, #0x2 + bne _0203710A + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0203713C + cmp r0, #0x1 + bne _02037124 + mov r0, #0x14 + add r1, r7, #0x0 + mul r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x10 + ldrh r0, [r0, r1] + pop {r3-r7, pc} +_0203710A: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02037168 + cmp r0, #0x1 + bne _02037124 + mov r0, #0x14 + add r1, r7, #0x0 + mul r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x10 + ldrh r0, [r0, r1] + pop {r3-r7, pc} +_02037124: + ldr r0, [sp, #0x4] + add r7, r7, #0x1 + add r4, #0x14 + add r5, #0x14 + cmp r7, r0 + blt _020370DA +_02037130: + ldr r0, _02037138 ; =0x0000FFFF + add sp, #0x10 + pop {r3-r7, pc} + nop +_02037138: .word 0x0000FFFF + + thumb_func_start FUN_0203713C +FUN_0203713C: ; 0x0203713C + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r1, #0x2] + cmp r0, #0x2 + beq _0203714A + mov r0, #0x0 + pop {r4, pc} +_0203714A: + ldrh r0, [r1, #0x0] + bl FUN_02039694 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02039528 + cmp r0, #0x1 + beq _02037160 + mov r0, #0x1 + b _02037162 +_02037160: + mov r0, #0x0 +_02037162: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} + + thumb_func_start FUN_02037168 +FUN_02037168: ; 0x02037168 + push {r4, lr} + add r4, r1, #0x0 + ldrh r1, [r4, #0x10] + cmp r1, #0x4 + bne _02037176 + mov r0, #0x1 + pop {r4, pc} +_02037176: + ldr r0, [r0, #0x38] + bl FUN_020552F8 + cmp r0, #0x3 + bhi _020371CC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0203718C: ; jump table (using 16-bit offset) + .short _02037194 - _0203718C - 2; case 0 + .short _020371A2 - _0203718C - 2; case 1 + .short _020371B0 - _0203718C - 2; case 2 + .short _020371BE - _0203718C - 2; case 3 +_02037194: + ldrh r0, [r4, #0x10] + cmp r0, #0x0 + beq _0203719E + cmp r0, #0x6 + bne _020371CC +_0203719E: + mov r0, #0x1 + pop {r4, pc} +_020371A2: + ldrh r0, [r4, #0x10] + cmp r0, #0x3 + beq _020371AC + cmp r0, #0x6 + bne _020371CC +_020371AC: + mov r0, #0x1 + pop {r4, pc} +_020371B0: + ldrh r0, [r4, #0x10] + cmp r0, #0x2 + beq _020371BA + cmp r0, #0x5 + bne _020371CC +_020371BA: + mov r0, #0x1 + pop {r4, pc} +_020371BE: + ldrh r0, [r4, #0x10] + cmp r0, #0x1 + beq _020371C8 + cmp r0, #0x5 + bne _020371CC +_020371C8: + mov r0, #0x1 + pop {r4, pc} +_020371CC: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_020371D0 +FUN_020371D0: ; 0x020371D0 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + add r6, r1, #0x0 + add r4, r2, #0x0 + bl FUN_020552F8 + cmp r0, #0x0 + beq _020371EA + add sp, #0x8 + ldr r0, _0203722C ; =0x0000FFFF + pop {r4-r6, pc} +_020371EA: + add r0, r5, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x0 + bl FUN_02036FA4 + mov r0, #0x0 + cmp r4, #0x0 + ble _02037224 + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + add r1, r6, #0x0 +_02037200: + ldr r5, [r1, #0x4] + cmp r2, r5 + bne _0203721C + ldr r5, [r1, #0x8] + cmp r3, r5 + bne _0203721C + ldrh r5, [r1, #0x2] + cmp r5, #0x1 + bne _0203721C + mov r1, #0x14 + mul r1, r0 + add sp, #0x8 + ldrh r0, [r6, r1] + pop {r4-r6, pc} +_0203721C: + add r0, r0, #0x1 + add r1, #0x14 + cmp r0, r4 + blt _02037200 +_02037224: + ldr r0, _0203722C ; =0x0000FFFF + add sp, #0x8 + pop {r4-r6, pc} + nop +_0203722C: .word 0x0000FFFF + + thumb_func_start FUN_02037230 +FUN_02037230: ; 0x02037230 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + add r4, r1, #0x0 + bl FUN_020552F8 + cmp r0, #0x0 + beq _02037244 + mov r0, #0x0 + pop {r3-r5, pc} +_02037244: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02037090 + cmp r0, #0x1 + bne _02037260 + ldr r0, [r4, #0x0] + bl FUN_02058458 + sub r0, #0x5b + cmp r0, #0x5 + bhi _02037260 + mov r0, #0x1 + pop {r3-r5, pc} +_02037260: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02037264 +FUN_02037264: ; 0x02037264 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + ldr r0, [r0, #0x38] + str r1, [sp, #0x4] + str r2, [sp, #0x8] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r4, r0, #0x0 + ldr r0, [sp, #0x8] + mov r7, #0x0 + cmp r0, #0x0 + ble _020372C8 + ldr r5, [sp, #0x4] +_0203728A: + ldrh r1, [r5, #0x2] + cmp r6, r1 + blt _020372BE + ldrh r0, [r5, #0x6] + add r0, r1, r0 + cmp r6, r0 + bge _020372BE + ldrh r1, [r5, #0x4] + cmp r4, r1 + blt _020372BE + ldrh r0, [r5, #0x8] + add r0, r1, r0 + cmp r4, r0 + bge _020372BE + ldrh r1, [r5, #0xe] + ldr r0, [sp, #0x0] + bl FUN_020394F0 + ldrh r1, [r5, #0xc] + cmp r1, r0 + bne _020372BE + ldr r0, [sp, #0x4] + lsl r1, r7, #0x4 + add sp, #0xc + ldrh r0, [r0, r1] + pop {r4-r7, pc} +_020372BE: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + add r5, #0x10 + cmp r7, r0 + blt _0203728A +_020372C8: + ldr r0, _020372D0 ; =0x0000FFFF + add sp, #0xc + pop {r4-r7, pc} + nop +_020372D0: .word 0x0000FFFF + + thumb_func_start FUN_020372D4 +FUN_020372D4: ; 0x020372D4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0200628C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02037400 + ldr r1, _02037300 ; =0x021C5A08 + str r0, [r1, #0x0] + ldr r1, [r4, #0x4] + cmp r1, #0x0 + beq _020372F4 + bl FUN_02048FC8 + b _020372F8 +_020372F4: + bl FUN_02048EC8 +_020372F8: + mov r0, #0x0 + str r0, [r4, #0x4] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_02037300: .word 0x021C5A08 + + thumb_func_start FUN_02037304 +FUN_02037304: ; 0x02037304 + push {r3, lr} + bl FUN_02037400 + ldr r1, _02037318 ; =0x021C5A08 + str r0, [r1, #0x0] + bl FUN_02048D90 + mov r0, #0x1 + pop {r3, pc} + nop +_02037318: .word 0x021C5A08 + + thumb_func_start FUN_0203731C +FUN_0203731C: ; 0x0203731C + push {r3, lr} + bl FUN_02006278 + bl FUN_02037524 + cmp r0, #0x0 + beq _0203732E + mov r0, #0x1 + pop {r3, pc} +_0203732E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02037334 +FUN_02037334: ; 0x02037334 + push {r3, lr} + bl FUN_020374B0 + ldr r0, _02037348 ; =0x0000003F + ldr r1, _0203734C ; =0x021DBAB8 + bl FUN_02000E7C + mov r0, #0x1 + pop {r3, pc} + nop +_02037348: .word 0x0000003F +_0203734C: .word 0x021DBAB8 + + thumb_func_start FUN_02037350 +FUN_02037350: ; 0x02037350 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _02037360 + bl ErrorHandling +_02037360: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0203736C + bl ErrorHandling +_0203736C: + ldr r0, _0203738C ; =0x00000005 + mov r1, #0x2 + bl FUN_02005FDC + mov r1, #0x0 + str r1, [r4, #0x64] + ldr r0, [r4, #0x0] + mov r2, #0xb + str r1, [r0, #0x8] + ldr r0, _02037390 ; =0x021F64C8 + add r1, r4, #0x0 + bl FUN_02006234 + ldr r1, [r4, #0x0] + str r0, [r1, #0x0] + pop {r4, pc} + .balign 4 +_0203738C: .word 0x00000005 +_02037390: .word 0x021F64C8 + + thumb_func_start FUN_02037394 +FUN_02037394: ; 0x02037394 + mov r1, #0x0 + str r1, [r0, #0x64] + bx lr + .balign 4 + + thumb_func_start FUN_0203739C +FUN_0203739C: ; 0x0203739C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020373A8 + mov r0, #0x1 + bx lr +_020373A8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020373AC +FUN_020373AC: ; 0x020373AC + ldr r1, [r0, #0x0] + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _020373BE + ldr r0, [r0, #0x64] + cmp r0, #0x0 + beq _020373BE + mov r0, #0x1 + bx lr +_020373BE: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_020373C4 +FUN_020373C4: ; 0x020373C4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _020373D0 + mov r0, #0x1 + bx lr +_020373D0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020373D4 +FUN_020373D4: ; 0x020373D4 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + ldr r0, [r0, #0x4] + add r6, r2, #0x0 + cmp r0, #0x0 + beq _020373E8 + bl ErrorHandling +_020373E8: + add r0, r5, #0x0 + bl FUN_02037394 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r2, #0xb + bl FUN_02006234 + ldr r1, [r5, #0x0] + str r0, [r1, #0x4] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02037400 +FUN_02037400: ; 0x02037400 + push {r3-r5, lr} + mov r2, #0x7 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0xb + lsl r2, r2, #0xe + bl FUN_0201681C + mov r1, #0x20 + mov r0, #0x3 + lsl r2, r1, #0x9 + bl FUN_0201681C + mov r2, #0x3 + mov r0, #0x0 + mov r1, #0x5b + lsl r2, r2, #0x8 + bl FUN_0201681C + add r0, r5, #0x0 + mov r1, #0xb8 + mov r2, #0xb + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0xb8 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0xb + mov r1, #0x10 + bl FUN_02016998 + str r0, [r4, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + ldr r0, [r4, #0x0] + str r1, [r0, #0x4] + ldr r0, [r4, #0x0] + str r1, [r0, #0x8] + ldr r0, [r4, #0x0] + str r1, [r0, #0xc] + add r0, r5, #0x0 + bl FUN_0200628C + ldr r0, [r0, #0x8] + str r0, [r4, #0xc] + mov r0, #0x0 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DC0 + str r0, [r4, #0x1c] + bl FUN_02034494 + str r0, [r4, #0x28] + add r0, r4, #0x0 + mov r1, #0xb + bl FUN_02034A28 + mov r0, #0xb + bl FUN_0206F164 + add r1, r4, #0x0 + add r1, #0x94 + str r0, [r1, #0x0] + mov r0, #0xb + bl FUN_0205DD18 + add r1, r4, #0x0 + add r1, #0x90 + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD40 + mov r0, #0xb + bl FUN_0208A300 + add r1, r4, #0x0 + add r1, #0xb0 + str r0, [r1, #0x0] + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020374B0 +FUN_020374B0: ; 0x020374B0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + ldr r0, [r4, #0x28] + bl FUN_020344D0 + add r0, r4, #0x0 + bl FUN_02034A48 + add r0, r4, #0x0 + add r0, #0x94 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD38 + add r0, r4, #0x0 + add r0, #0xb0 + ldr r0, [r0, #0x0] + bl FUN_0208A320 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_0200627C + mov r0, #0x5b + bl FUN_020168D0 + mov r0, #0xb + bl FUN_020168D0 + mov r0, #0x20 + bl FUN_020168D0 + pop {r3-r5, pc} + + thumb_func_start FUN_02037504 +FUN_02037504: ; 0x02037504 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02037520 + bl FUN_02006290 + cmp r0, #0x0 + beq _02037520 + ldr r0, [r4, #0x0] + bl FUN_02006260 + mov r0, #0x0 + str r0, [r4, #0x0] +_02037520: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02037524 +FUN_02037524: ; 0x02037524 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02037594 + add r0, r4, #0x0 + bl FUN_02046420 + cmp r0, #0x1 + bne _02037546 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02037546 + mov r1, #0x0 + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_021EFA9C +_02037546: + ldr r0, [r4, #0x0] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02037562 + bl FUN_02037504 + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0203756E + ldr r0, _02037590 ; =0x00000005 + bl FUN_02005F60 + b _0203756E +_02037562: + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0203756E + add r0, r0, #0x4 + bl FUN_02037504 +_0203756E: + ldr r1, [r4, #0x0] + ldr r0, [r1, #0xc] + cmp r0, #0x0 + beq _0203758C + ldr r0, [r4, #0x10] + cmp r0, #0x0 + bne _0203758C + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _0203758C + ldr r0, [r1, #0x4] + cmp r0, #0x0 + bne _0203758C + mov r0, #0x1 + pop {r4, pc} +_0203758C: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_02037590: .word 0x00000005 + + thumb_func_start FUN_02037594 +FUN_02037594: ; 0x02037594 + push {r3-r5, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + mov r5, #0x0 + ldr r1, [r1, #0x8] + cmp r1, #0x0 + bne _020375B4 + ldr r1, [r4, #0x64] + cmp r1, #0x0 + beq _020375B4 + bl FUN_0204646C + cmp r0, #0x0 + bne _020375B4 + mov r5, #0x1 +_020375B4: + cmp r5, #0x0 + beq _020375D4 + ldr r0, [r4, #0x38] + bl FUN_02055A38 + ldr r3, _02037758 ; =0x021C48B8 + add r0, sp, #0x8 + ldr r2, [r3, #0x48] + ldr r3, [r3, #0x44] + lsl r2, r2, #0x10 + lsl r3, r3, #0x10 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_021D8164 +_020375D4: + ldr r0, [r4, #0x1c] + ldr r2, [r4, #0x6c] + ldr r1, [r0, #0x0] + ldr r0, _0203775C ; =0x00000146 + cmp r1, r0 + bne _020375E2 + mov r2, #0x0 +_020375E2: + cmp r2, #0x4 + bhi _020376E2 + add r0, r2, r2 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020375F2: ; jump table (using 16-bit offset) + .short _020376E2 - _020375F2 - 2; case 0 + .short _020375FC - _020375F2 - 2; case 1 + .short _02037646 - _020375F2 - 2; case 2 + .short _0203761C - _020375F2 - 2; case 3 + .short _02037672 - _020375F2 - 2; case 4 +_020375FC: + cmp r5, #0x0 + beq _02037610 + bl FUN_0204E2FC + cmp r0, #0x0 + beq _02037610 + add r0, sp, #0x8 + add r1, r4, #0x0 + bl FUN_021D85FC +_02037610: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0204D6C0 + add sp, #0x10 + pop {r3-r5, pc} +_0203761C: + cmp r5, #0x0 + beq _0203763A + bl FUN_0204E2FC + cmp r0, #0x0 + beq _02037638 + add r0, sp, #0x8 + add r1, r4, #0x0 + bl FUN_021D865C + cmp r0, #0x1 + bne _0203763A + mov r5, #0x0 + b _0203763A +_02037638: + mov r5, #0x0 +_0203763A: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0204D6C0 + add sp, #0x10 + pop {r3-r5, pc} +_02037646: + cmp r5, #0x0 + bne _0203764C + b _02037754 +_0203764C: + add r0, sp, #0x8 + add r1, r4, #0x0 + bl FUN_021D8758 + cmp r0, #0x1 + beq _02037754 + add r3, sp, #0x8 + ldrh r0, [r3, #0x6] + mov r2, #0x0 + str r0, [sp, #0x0] + str r2, [sp, #0x4] + ldrh r3, [r3, #0x4] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x24] + sub r2, r2, #0x1 + bl FUN_020557F4 + add sp, #0x10 + pop {r3-r5, pc} +_02037672: + cmp r5, #0x0 + beq _02037754 + add r0, sp, #0x8 + add r1, r4, #0x0 + bl FUN_021D8820 + cmp r0, #0x1 + bne _020376A6 + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x8] + bl FUN_021E32F0 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_021E81BC + ldr r0, [r4, #0x38] + bl FUN_021E7138 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_021EFA9C + add sp, #0x10 + pop {r3-r5, pc} +_020376A6: + ldr r0, _02037758 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _020376B8 + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x8] + bl FUN_021E32F0 +_020376B8: + mov r5, #0x0 + bl FUN_02037790 + cmp r0, #0x0 + beq _020376C8 + bl FUN_02252534 + add r5, r0, #0x0 +_020376C8: + add r3, sp, #0x8 + ldrh r0, [r3, #0x6] + mov r2, #0x0 + mvn r2, r2 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldrh r3, [r3, #0x4] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x24] + bl FUN_020557F4 + add sp, #0x10 + pop {r3-r5, pc} +_020376E2: + cmp r5, #0x0 + beq _02037754 + add r0, sp, #0x8 + add r1, r4, #0x0 + bl FUN_021D8320 + cmp r0, #0x1 + bne _0203771C + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x8] + bl FUN_021E32F0 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_021E81BC + ldr r0, [r4, #0x38] + bl FUN_02055B14 + ldr r0, [r4, #0x38] + bl FUN_021E7138 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_021EFA9C + add sp, #0x10 + pop {r3-r5, pc} +_0203771C: + ldr r0, _02037758 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _0203772E + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x8] + bl FUN_021E32F0 +_0203772E: + mov r5, #0x0 + bl FUN_02037790 + cmp r0, #0x0 + beq _0203773E + bl FUN_02252534 + add r5, r0, #0x0 +_0203773E: + add r3, sp, #0x8 + ldrh r0, [r3, #0x6] + mov r2, #0x0 + mvn r2, r2 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldrh r3, [r3, #0x4] + ldr r0, [r4, #0x38] + ldr r1, [r4, #0x24] + bl FUN_020557F4 +_02037754: + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_02037758: .word 0x021C48B8 +_0203775C: .word 0x00000146 + + thumb_func_start FUN_02037760 +FUN_02037760: ; 0x02037760 + ldr r0, _02037770 ; =0x021C5A08 + ldr r3, _02037774 ; =FUN_02030FC8 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x0] + str r1, [r0, #0x8] + bx r3 + nop +_02037770: .word 0x021C5A08 +_02037774: .word FUN_02030FC8 + + thumb_func_start FUN_02037778 +FUN_02037778: ; 0x02037778 + ldr r0, _02037788 ; =0x021C5A08 + ldr r3, _0203778C ; =FUN_02030FA8 + ldr r0, [r0, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x8] + bx r3 + nop +_02037788: .word 0x021C5A08 +_0203778C: .word FUN_02030FA8 + + thumb_func_start FUN_02037790 +FUN_02037790: ; 0x02037790 + ldr r0, _020377A4 ; =0x021C5A08 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + bne _0203779E + mov r0, #0x0 + bx lr +_0203779E: + ldr r0, [r0, #0x14] + bx lr + nop +_020377A4: .word 0x021C5A08 + + thumb_func_start FUN_020377A8 +FUN_020377A8: ; 0x020377A8 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_020377AC +FUN_020377AC: ; 0x020377AC + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_020377B0 +FUN_020377B0: ; 0x020377B0 + ldr r2, _020377C4 ; =0x020F2B9C + add r3, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + nop +_020377C4: .word 0x020F2B9C + + thumb_func_start FUN_020377C8 +FUN_020377C8: ; 0x020377C8 + ldr r2, _020377DC ; =0x020F2BB0 + add r3, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + nop +_020377DC: .word 0x020F2BB0 + + thumb_func_start FUN_020377E0 +FUN_020377E0: ; 0x020377E0 + push {r3, lr} + bl FUN_02034E30 + bl FUN_02034DC0 + bl FUN_020377B0 + pop {r3, pc} + + thumb_func_start FUN_020377F0 +FUN_020377F0: ; 0x020377F0 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020377F4 +FUN_020377F4: ; 0x020377F4 + push {r3, lr} + bl FUN_0222D5C0 + cmp r0, #0x0 + beq _02037802 + mov r0, #0x1 + pop {r3, pc} +_02037802: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02037808 +FUN_02037808: ; 0x02037808 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0203780C +FUN_0203780C: ; 0x0203780C + ldr r3, _02037814 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037818 ; =0x020F2D94 + bx r3 + .balign 4 +_02037814: .word FUN_020373D4 +_02037818: .word 0x020F2D94 + + thumb_func_start FUN_0203781C +FUN_0203781C: ; 0x0203781C + push {r4-r6, lr} + sub sp, #0x10 + ldr r5, _02037840 ; =0x020F2D74 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r2, r1, #0x0 + add r3, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r0, r6, #0x0 + add r1, r3, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02037840: .word 0x020F2D74 + + thumb_func_start FUN_02037844 +FUN_02037844: ; 0x02037844 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r6, r1, #0x0 + bl FUN_0206F158 + ldr r1, _02037898 ; =0x020F2BDC + mov r2, #0xb + bl FUN_0206EFEC + add r3, r5, #0x0 + add r3, #0x94 + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x0] + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_0206E314 + ldr r1, [r5, #0x6c] + add r0, r4, #0x0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206E360 + ldr r0, [r5, #0x38] + bl FUN_020553C4 + cmp r0, #0x1 + bne _02037884 + add r0, r4, #0x0 + bl FUN_0206E340 +_02037884: + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0206E354 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0203781C + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02037898: .word 0x020F2BDC + + thumb_func_start FUN_0203789C +FUN_0203789C: ; 0x0203789C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_0206F158 + add r6, r0, #0x0 + cmp r4, #0x0 + beq _020378B4 + cmp r4, #0x1 + beq _020378BC + b _020378C4 +_020378B4: + ldr r1, _020378F0 ; =0x020F2BC8 + ldr r0, _020378F4 ; =0x02105DB8 + str r1, [r0, #0x0] + b _020378C8 +_020378BC: + ldr r1, _020378F8 ; =0x020F2BC4 + ldr r0, _020378F4 ; =0x02105DB8 + str r1, [r0, #0x0] + b _020378C8 +_020378C4: + bl ErrorHandling +_020378C8: + ldr r1, _020378F4 ; =0x02105DB8 + add r0, r6, #0x0 + ldr r1, [r1, #0x0] + mov r2, #0x20 + bl FUN_0206EFEC + add r3, r5, #0x0 + add r3, #0x94 + ldr r1, [r5, #0xc] + ldr r3, [r3, #0x0] + add r4, r0, #0x0 + mov r2, #0x3 + bl FUN_0206E314 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0203781C + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_020378F0: .word 0x020F2BC8 +_020378F4: .word 0x02105DB8 +_020378F8: .word 0x020F2BC4 + + thumb_func_start FUN_020378FC +FUN_020378FC: ; 0x020378FC + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0206E37C + add r4, r0, #0x0 + beq _02037916 + add r0, r5, #0x0 + bl FUN_0206E384 + cmp r0, #0x5 + bne _02037916 + bl ErrorHandling +_02037916: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0203791C +FUN_0203791C: ; 0x0203791C + push {r4-r6, lr} + sub sp, #0x10 + ldr r5, _02037940 ; =0x020F2D44 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r2, r1, #0x0 + add r3, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r0, r6, #0x0 + add r1, r3, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02037940: .word 0x020F2D44 + + thumb_func_start FUN_02037944 +FUN_02037944: ; 0x02037944 + push {r3-r5, lr} + sub sp, #0x10 + ldr r4, _02037968 ; =0x020F2D24 + add r3, sp, #0x0 + add r5, r0, #0x0 + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r1, r2, #0x0 + ldr r2, [r5, #0xc] + add r0, r5, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r3-r5, pc} + nop +_02037968: .word 0x020F2D24 + + thumb_func_start FUN_0203796C +FUN_0203796C: ; 0x0203796C + ldr r3, _02037974 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037978 ; =0x020FA6E8 + bx r3 + .balign 4 +_02037974: .word FUN_020373D4 +_02037978: .word 0x020FA6E8 + + thumb_func_start FUN_0203797C +FUN_0203797C: ; 0x0203797C + push {r3-r7, lr} + add r5, r1, #0x0 + mov r1, #0x40 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x40 + blx MIi_CpuClearFast + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02025838 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + add r0, r4, #0x0 + add r0, #0x21 + strb r6, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x20 + strb r7, [r0, #0x0] + str r5, [r4, #0x1c] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020379C8 +FUN_020379C8: ; 0x020379C8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r2, #0x0 + mov r2, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + add r1, r5, #0x0 + add r3, r2, #0x0 + bl FUN_0203797C + add r4, r0, #0x0 + str r6, [r4, #0x18] + add r0, #0x22 + strb r7, [r0, #0x0] + ldr r1, _020379F4 ; =0x020F96DC + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + nop +_020379F4: .word 0x020F96DC + + thumb_func_start FUN_020379F8 +FUN_020379F8: ; 0x020379F8 + push {r3-r5, lr} + mov r0, #0xb + mov r2, #0x0 + mov r3, #0x3 + add r5, r1, #0x0 + bl FUN_0203797C + add r4, r0, #0x0 + ldr r1, _02037A18 ; =0x020F96DC + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_02037A18: .word 0x020F96DC + + thumb_func_start FUN_02037A1C +FUN_02037A1C: ; 0x02037A1C + push {r3-r5, lr} + mov r0, #0xb + mov r2, #0x0 + mov r3, #0x13 + add r5, r1, #0x0 + bl FUN_0203797C + add r4, r0, #0x0 + ldr r1, _02037A3C ; =0x020F96DC + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_02037A3C: .word 0x020F96DC + + thumb_func_start FUN_02037A40 +FUN_02037A40: ; 0x02037A40 + add r0, #0x22 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02037A48 +FUN_02037A48: ; 0x02037A48 + push {r4-r6, lr} + add r4, r2, #0x0 + mov r0, #0xb + mov r2, #0x0 + mov r3, #0x12 + add r5, r1, #0x0 + bl FUN_0203797C + add r6, r0, #0x0 + add r0, #0x22 + strb r4, [r0, #0x0] + ldr r1, _02037A6C ; =0x020F96DC + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_020373D4 + add r0, r6, #0x0 + pop {r4-r6, pc} + .balign 4 +_02037A6C: .word 0x020F96DC + + thumb_func_start FUN_02037A70 +FUN_02037A70: ; 0x02037A70 + add r0, #0x23 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02037A78 +FUN_02037A78: ; 0x02037A78 + ldrb r0, [r0, #0x14] + bx lr + + thumb_func_start FUN_02037A7C +FUN_02037A7C: ; 0x02037A7C + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046530 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x4 + bhi _02037B3A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02037AA8: ; jump table (using 16-bit offset) + .short _02037AB2 - _02037AA8 - 2; case 0 + .short _02037AC2 - _02037AA8 - 2; case 1 + .short _02037AF8 - _02037AA8 - 2; case 2 + .short _02037B1A - _02037AA8 - 2; case 3 + .short _02037B30 - _02037AA8 - 2; case 4 +_02037AB2: + ldr r1, _02037B40 ; =0x020F96DC + ldr r2, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_020373D4 + mov r0, #0x1 + str r0, [r5, #0x0] + b _02037B3A +_02037AC2: + add r0, r6, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _02037B3A + ldr r0, [r4, #0x4] + add r0, #0x22 + ldrb r0, [r0, #0x0] + cmp r0, #0x6 + beq _02037AE6 + cmp r0, #0x7 + bne _02037AF2 + mov r0, #0x2 + bl FUN_020527D8 + mov r0, #0x4 + str r0, [r5, #0x0] + b _02037B3A +_02037AE6: + mov r0, #0x1 + bl FUN_020527D8 + mov r0, #0x4 + str r0, [r5, #0x0] + b _02037B3A +_02037AF2: + mov r0, #0x2 + str r0, [r5, #0x0] + b _02037B3A +_02037AF8: + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + mov r2, #0x0 + bl FUN_02037C7C + str r0, [r4, #0x8] + ldr r1, [r4, #0x4] + add r1, #0x22 + ldrb r1, [r1, #0x0] + strb r1, [r0, #0x14] + ldr r1, [r4, #0x8] + add r0, r6, #0x0 + bl FUN_0203796C + mov r0, #0x3 + str r0, [r5, #0x0] + b _02037B3A +_02037B1A: + add r0, r6, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _02037B3A + ldr r0, [r4, #0x8] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r5, #0x0] + b _02037B3A +_02037B30: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r4-r6, pc} +_02037B3A: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02037B40: .word 0x020F96DC + + thumb_func_start FUN_02037B44 +FUN_02037B44: ; 0x02037B44 + push {r3-r7, lr} + add r5, r1, #0x0 + add r7, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r2, #0x0 + mov r3, #0x2 + str r5, [r4, #0x0] + bl FUN_0203797C + add r5, r0, #0x0 + add r0, #0x32 + ldrb r1, [r0, #0x0] + mov r0, #0xf + add r2, r4, #0x0 + bic r1, r0 + mov r0, #0x2 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x32 + ldrb r1, [r0, #0x0] + mov r0, #0xf0 + bic r1, r0 + mov r0, #0x20 + orr r1, r0 + add r0, r5, #0x0 + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x1e + add r0, #0x33 + strb r1, [r0, #0x0] + mov r0, #0x0 + str r0, [r5, #0x14] + ldr r1, _02037BAC ; =FUN_02037A7C + add r0, r7, #0x0 + str r5, [r4, #0x4] + bl FUN_0204640C + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 +_02037BAC: .word FUN_02037A7C + + thumb_func_start FUN_02037BB0 +FUN_02037BB0: ; 0x02037BB0 + push {r3-r7, lr} + add r5, r2, #0x0 + add r6, r3, #0x0 + mov r0, #0xb + mov r2, #0x0 + mov r3, #0xd + add r7, r1, #0x0 + bl FUN_0203797C + add r4, r0, #0x0 + ldr r1, [sp, #0x1c] + add r0, #0x22 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x2 + add r0, #0x29 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x2a + strb r5, [r0, #0x0] + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bne _02037BE6 + add r0, r4, #0x0 + add r0, #0x2b + strb r6, [r0, #0x0] + b _02037BEE +_02037BE6: + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x2b + strb r1, [r0, #0x0] +_02037BEE: + ldr r1, _02037BFC ; =0x020F96DC + add r0, r7, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_02037BFC: .word 0x020F96DC + + thumb_func_start FUN_02037C00 +FUN_02037C00: ; 0x02037C00 + push {r4-r6, lr} + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x30 + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x4] + mov r0, #0x1 + strb r0, [r4, #0x11] + strb r6, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9AC + strb r0, [r4, #0x13] + mov r0, #0x0 + strh r0, [r4, #0x18] + strb r0, [r4, #0x12] + ldr r0, [r5, #0xc] + bl FUN_0202A918 + str r0, [r4, #0x20] + ldr r0, [r5, #0xc] + bl FUN_0206BB28 + str r0, [r4, #0x1c] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + str r0, [r4, #0x2c] + mov r0, #0x0 + str r0, [r4, #0x28] + ldr r1, _02037C74 ; =0x020F2A9C + add r0, r4, #0x0 + bl FUN_0207B000 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0207C2A4 + ldr r1, _02037C78 ; =0x020FA6E8 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02037C74: .word 0x020F2A9C +_02037C78: .word 0x020FA6E8 + + thumb_func_start FUN_02037C7C +FUN_02037C7C: ; 0x02037C7C + push {r4-r6, lr} + ldr r5, [r0, #0xc] + add r0, r1, #0x0 + mov r1, #0x30 + add r6, r2, #0x0 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x30 + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r5, #0x0 + bl LoadPlayerDataAddress + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_0206BB1C + str r0, [r4, #0x0] + mov r0, #0x1 + strb r0, [r4, #0x11] + mov r0, #0x0 + strb r0, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9AC + strb r0, [r4, #0x13] + mov r0, #0x0 + strh r0, [r4, #0x18] + strb r6, [r4, #0x12] + add r0, r5, #0x0 + bl FUN_0206BB28 + str r0, [r4, #0x1c] + add r0, r5, #0x0 + bl FUN_02079C70 + str r0, [r4, #0x2c] + add r0, r5, #0x0 + bl FUN_0202A918 + str r0, [r4, #0x20] + ldr r1, _02037CEC ; =0x020F2BD0 + add r0, r4, #0x0 + bl FUN_0207B000 + add r0, r5, #0x0 + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0207C2A4 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02037CEC: .word 0x020F2BD0 + + thumb_func_start FUN_02037CF0 +FUN_02037CF0: ; 0x02037CF0 + push {r4-r6, lr} + add r5, r1, #0x0 + mov r1, #0x30 + add r6, r2, #0x0 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x30 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x4] + mov r0, #0x1 + strb r0, [r4, #0x11] + strb r6, [r4, #0x14] + strb r0, [r4, #0x13] + mov r0, #0x0 + strh r0, [r4, #0x18] + mov r0, #0x2 + strb r0, [r4, #0x12] + ldr r0, [r5, #0xc] + bl FUN_0206BB28 + str r0, [r4, #0x1c] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + str r0, [r4, #0x2c] + ldr r1, _02037D58 ; =0x020F2BCC + add r0, r4, #0x0 + bl FUN_0207B000 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0207C2A4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0203796C + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02037D58: .word 0x020F2BCC + + thumb_func_start FUN_02037D5C +FUN_02037D5C: ; 0x02037D5C + ldrb r0, [r0, #0x16] + bx lr + + thumb_func_start FUN_02037D60 +FUN_02037D60: ; 0x02037D60 + ldr r3, _02037D68 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037D6C ; =0x020F2CF4 + bx r3 + .balign 4 +_02037D68: .word FUN_020373D4 +_02037D6C: .word 0x020F2CF4 + + thumb_func_start FUN_02037D70 +FUN_02037D70: ; 0x02037D70 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046528 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _02037D9A + cmp r1, #0x1 + beq _02037DA8 + cmp r1, #0x2 + beq _02037DB8 + b _02037E12 +_02037D9A: + ldr r1, [r5, #0xc] + bl FUN_02037E80 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02037E12 +_02037DA8: + bl FUN_0204647C + cmp r0, #0x0 + bne _02037E12 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02037E12 +_02037DB8: + ldr r0, [r5, #0xc] + bl FUN_020853E4 + cmp r0, #0x0 + bne _02037DCC + ldr r0, [r5, #0xc] + bl FUN_020853E8 + cmp r0, #0x0 + bne _02037DD4 +_02037DCC: + ldr r0, [r5, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x0] + b _02037E00 +_02037DD4: + ldr r0, [r5, #0x0] + mov r1, #0x1 + strh r1, [r0, #0x0] + ldr r0, [r5, #0x8] + cmp r0, #0x0 + ldr r0, [r5, #0xc] + bne _02037DEC + bl FUN_020853EC + ldr r1, [r5, #0x4] + strh r0, [r1, #0x0] + b _02037E00 +_02037DEC: + add r1, sp, #0x0 + bl FUN_020853F0 + add r0, sp, #0x0 + ldrh r2, [r0, #0x0] + ldr r1, [r5, #0x4] + strh r2, [r1, #0x0] + ldrh r1, [r0, #0x2] + ldr r0, [r5, #0x8] + strh r1, [r0, #0x0] +_02037E00: + ldr r0, [r5, #0xc] + bl FUN_020853A8 + add r0, r5, #0x0 + bl FUN_02016A18 + add sp, #0x4 + mov r0, #0x1 + pop {r3-r6, pc} +_02037E12: + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_02037E18 +FUN_02037E18: ; 0x02037E18 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r5, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + mov r0, #0x20 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r6, #0x0 + str r0, [r4, #0x0] + str r5, [r4, #0x4] + str r6, [r4, #0x8] + bne _02037E56 + mov r0, #0x0 + ldr r2, [r7, #0xc] + add r1, r0, #0x0 + mov r3, #0x20 + bl FUN_02085338 + str r0, [r4, #0xc] + ldrh r1, [r5, #0x0] + bl FUN_020853B0 + b _02037E6C +_02037E56: + ldr r2, [r7, #0xc] + mov r0, #0x1 + mov r1, #0x0 + mov r3, #0x20 + bl FUN_02085338 + str r0, [r4, #0xc] + ldrh r1, [r5, #0x0] + ldrh r2, [r6, #0x0] + bl FUN_020853B4 +_02037E6C: + ldr r0, [sp, #0x0] + ldr r1, _02037E7C ; =FUN_02037D70 + add r2, r4, #0x0 + bl FUN_0204640C + add sp, #0x8 + pop {r3-r7, pc} + nop +_02037E7C: .word FUN_02037D70 + + thumb_func_start FUN_02037E80 +FUN_02037E80: ; 0x02037E80 + ldr r3, _02037E88 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037E8C ; =0x020F2CE4 + bx r3 + .balign 4 +_02037E88: .word FUN_020373D4 +_02037E8C: .word 0x020F2CE4 + + thumb_func_start FUN_02037E90 +FUN_02037E90: ; 0x02037E90 + push {r4-r6, lr} + sub sp, #0x10 + ldr r5, _02037EB4 ; =0x020F2CD4 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r2, r1, #0x0 + add r3, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r0, r6, #0x0 + add r1, r3, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02037EB4: .word 0x020F2CD4 + + thumb_func_start FUN_02037EB8 +FUN_02037EB8: ; 0x02037EB8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E0C + mov r1, #0x5 + mov r0, #0xb + lsl r1, r1, #0x6 + bl FUN_020169D8 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_0205F7A0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02037E90 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02037EE8 +FUN_02037EE8: ; 0x02037EE8 + ldr r3, _02037EF0 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037EF4 ; =0x020F2CC4 + bx r3 + .balign 4 +_02037EF0: .word FUN_020373D4 +_02037EF4: .word 0x020F2CC4 + + thumb_func_start FUN_02037EF8 +FUN_02037EF8: ; 0x02037EF8 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x2 + bl FUN_020169D8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020377AC + bl LoadPlayerDataAddress + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02037EE8 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02037F1C +FUN_02037F1C: ; 0x02037F1C + ldr r3, _02037F24 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037F28 ; =0x020FCAC8 + bx r3 + .balign 4 +_02037F24: .word FUN_020373D4 +_02037F28: .word 0x020FCAC8 + + thumb_func_start FUN_02037F2C +FUN_02037F2C: ; 0x02037F2C + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_020377AC + mov r1, #0xb + str r1, [sp, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_020854E0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02037F1C + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02037F58 +FUN_02037F58: ; 0x02037F58 + push {r3-r7, lr} + add r5, r1, #0x0 + add r7, r0, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + cmp r5, #0x3 + bne _02037F74 + bl FUN_020377AC + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020855B0 + b _02037F82 +_02037F74: + bl FUN_020377AC + add r1, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_02085538 +_02037F82: + add r4, r0, #0x0 + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_02037F1C + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02037F90 +FUN_02037F90: ; 0x02037F90 + push {r4-r6, lr} + add r4, r1, #0x0 + add r6, r2, #0x0 + add r5, r0, #0x0 + bl FUN_020377AC + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02085578 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02037F1C + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02037FB4 +FUN_02037FB4: ; 0x02037FB4 + ldr r3, _02037FBC ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02037FC0 ; =0x020FD1B0 + bx r3 + .balign 4 +_02037FBC: .word FUN_020373D4 +_02037FC0: .word 0x020FD1B0 + + thumb_func_start FUN_02037FC4 +FUN_02037FC4: ; 0x02037FC4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + bl FUN_020377AC + add r1, r5, #0x0 + bl FUN_02087D00 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02037FB4 + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02037FE4 +FUN_02037FE4: ; 0x02037FE4 + push {r4-r6, lr} + sub sp, #0x10 + ldr r5, _02038008 ; =0x020F2CB4 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r2, r1, #0x0 + add r3, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r0, r6, #0x0 + add r1, r3, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02038008: .word 0x020F2CB4 + + thumb_func_start FUN_0203800C +FUN_0203800C: ; 0x0203800C + push {r3-r7, lr} + add r5, r1, #0x0 + mov r1, #0x20 + add r7, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x20 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r5, #0x0 + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + str r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02027E24 + str r0, [sp, #0x0] + mov r1, #0x0 + bl FUN_02027008 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_0202708C + str r7, [r4, #0x4] + str r0, [r4, #0x8] + add r0, r5, #0x0 + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + add r0, r5, #0x0 + bl FUN_02029FC8 + str r0, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_020238F4 + str r0, [r4, #0x14] + ldr r0, [sp, #0x18] + str r6, [r4, #0x18] + str r0, [r4, #0x1c] + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02038070 +FUN_02038070: ; 0x02038070 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _0203808E + cmp r0, #0x1 + beq _0203809E + b _020380C8 +_0203808E: + ldr r1, [r5, #0xc] + add r0, r4, #0x0 + bl FUN_0203811C + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _020380C8 +_0203809E: + add r0, r4, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _020380C8 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _020380B2 + mov r1, #0x1 + b _020380B4 +_020380B2: + mov r1, #0x0 +_020380B4: + ldr r0, [r5, #0x4] + strh r1, [r0, #0x0] + ldr r0, [r5, #0xc] + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_020380C8: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020380CC +FUN_020380CC: ; 0x020380CC + push {r3-r7, lr} + sub sp, #0x8 + add r6, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x20 + mov r1, #0x10 + add r7, r2, #0x0 + str r3, [sp, #0x4] + bl FUN_02016998 + add r4, r0, #0x0 + add r2, r4, #0x0 + mov r1, #0x10 + mov r0, #0x0 +_020380E8: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _020380E8 + add r0, sp, #0x10 + ldrh r0, [r0, #0x10] + add r3, r4, #0x0 + add r1, r7, #0x0 + str r0, [sp, #0x0] + ldr r2, [sp, #0x4] + mov r0, #0x20 + add r3, #0x8 + bl FUN_0203800C + str r0, [r4, #0xc] + ldr r1, _02038118 ; =FUN_02038070 + add r0, r6, #0x0 + add r2, r4, #0x0 + str r5, [r4, #0x4] + bl FUN_0204640C + add sp, #0x8 + pop {r3-r7, pc} + nop +_02038118: .word FUN_02038070 + + thumb_func_start FUN_0203811C +FUN_0203811C: ; 0x0203811C + push {r3, lr} + add r2, r1, #0x0 + ldr r1, _0203812C ; =0x02105DDC + bl FUN_020373D4 + mov r0, #0x1 + pop {r3, pc} + nop +_0203812C: .word 0x02105DDC + + thumb_func_start FUN_02038130 +FUN_02038130: ; 0x02038130 + push {r3, lr} + add r2, r1, #0x0 + ldr r1, _02038140 ; =0x02105DCC + bl FUN_020373D4 + mov r0, #0x1 + pop {r3, pc} + nop +_02038140: .word 0x02105DCC + + thumb_func_start FUN_02038144 +FUN_02038144: ; 0x02038144 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020238F4 + str r0, [r5, #0x4] + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + str r0, [r5, #0x8] + ldr r0, [r4, #0xc] + mov r1, #0x9 + bl FUN_02022610 + str r0, [r5, #0xc] + ldr r0, [r4, #0xc] + bl FUN_02029AFC + str r0, [r5, #0x14] + ldr r0, [r4, #0xc] + bl LoadPlayerDataAddress + str r0, [r5, #0x18] + ldr r0, [r4, #0xc] + bl FUN_02024DA0 + str r0, [r5, #0x24] + ldr r0, [r4, #0xc] + bl FUN_0206BB28 + str r0, [r5, #0x30] + ldr r0, [r4, #0xc] + str r0, [r5, #0x10] + add r0, r4, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + str r0, [r5, #0x1c] + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + str r0, [r5, #0x20] + bl FUN_02023924 + add r1, r0, #0x0 + mov r0, #0x20 + bl FUN_02016998 + str r0, [r5, #0x38] + bl FUN_020690C4 + add r1, r0, #0x0 + mov r0, #0x20 + bl FUN_02016998 + str r0, [r5, #0x3c] + bl FUN_020690C4 + add r1, r0, #0x0 + mov r0, #0x20 + bl FUN_02016998 + str r0, [r5, #0x40] + str r4, [r5, #0x0] + mov r0, #0x0 + str r0, [r5, #0x34] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020381CC +FUN_020381CC: ; 0x020381CC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020381DE + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x38] +_020381DE: + ldr r0, [r4, #0x3c] + cmp r0, #0x0 + beq _020381EC + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x3c] +_020381EC: + ldr r0, [r4, #0x40] + cmp r0, #0x0 + beq _020381FA + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x40] +_020381FA: + pop {r4, pc} + + thumb_func_start FUN_020381FC +FUN_020381FC: ; 0x020381FC + push {r4-r7, lr} + sub sp, #0x34 + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x7 + bls _02038218 + b _020383C8 +_02038218: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02038224: ; jump table (using 16-bit offset) + .short _02038234 - _02038224 - 2; case 0 + .short _0203824A - _02038224 - 2; case 1 + .short _02038258 - _02038224 - 2; case 2 + .short _0203826A - _02038224 - 2; case 3 + .short _02038288 - _02038224 - 2; case 4 + .short _020382F6 - _02038224 - 2; case 5 + .short _02038386 - _02038224 - 2; case 6 + .short _020383B2 - _02038224 - 2; case 7 +_02038234: + bl FUN_02033590 + cmp r0, #0x0 + bne _02038242 + add r0, r6, #0x0 + bl FUN_0204AF3C +_02038242: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020383C8 +_0203824A: + add r0, r4, #0x4 + add r1, r5, #0x0 + bl FUN_02038144 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] +_02038258: + ldr r1, _020383D0 ; =0x02105DBC + add r0, r6, #0x0 + add r2, r4, #0x4 + bl FUN_02046500 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020383C8 +_0203826A: + ldr r1, [r4, #0x2c] + cmp r1, #0x0 + bne _02038282 + add r0, r4, #0x4 + bl FUN_020381CC + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x34 + mov r0, #0x1 + pop {r4-r7, pc} +_02038282: + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020383C8 +_02038288: + ldr r0, [r4, #0x3c] + str r0, [r4, #0x50] + ldr r0, [r4, #0x40] + bl FUN_020690E4 + str r0, [r4, #0x48] + ldr r0, [r4, #0x44] + bl FUN_020690E4 + str r0, [r4, #0x4c] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x5c] + mov r0, #0x1 + str r0, [r4, #0x58] + add r0, r5, #0x0 + bl FUN_0204B2A4 + cmp r0, #0x4 + bhi _020382C8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020382BE: ; jump table (using 16-bit offset) + .short _020382C8 - _020382BE - 2; case 0 + .short _020382C8 - _020382BE - 2; case 1 + .short _020382CE - _020382BE - 2; case 2 + .short _020382D4 - _020382BE - 2; case 3 + .short _020382D4 - _020382BE - 2; case 4 +_020382C8: + mov r0, #0x0 + str r0, [r4, #0x54] + b _020382D8 +_020382CE: + mov r0, #0x1 + str r0, [r4, #0x54] + b _020382D8 +_020382D4: + mov r0, #0x2 + str r0, [r4, #0x54] +_020382D8: + bl FUN_02033590 + cmp r0, #0x0 + beq _020382E4 + mov r0, #0x3 + str r0, [r4, #0x54] +_020382E4: + add r2, r4, #0x0 + ldr r1, _020383D4 ; =0x020F2CA4 + add r0, r6, #0x0 + add r2, #0x48 + bl FUN_02046500 + mov r0, #0x5 + str r0, [r4, #0x0] + b _020383C8 +_020382F6: + ldr r0, [r4, #0x44] + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + add r3, r0, #0x0 + add r0, sp, #0x30 + str r0, [sp, #0x0] + lsl r3, r3, #0x10 + ldr r1, [r4, #0x44] + mov r0, #0x0 + mov r2, #0x1 + lsr r3, r3, #0x10 + bl FUN_02069168 + str r0, [sp, #0x20] + cmp r0, #0x0 + beq _02038380 + mov r0, #0x3 + mov r1, #0x1a + lsl r2, r0, #0x10 + bl FUN_0201681C + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x24] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + add r7, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x28] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + str r0, [sp, #0x2c] + ldr r0, [r5, #0xc] + bl FUN_0204C1A8 + str r6, [sp, #0x0] + ldr r1, [sp, #0x28] + str r7, [sp, #0x4] + str r1, [sp, #0x8] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x20] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, [sp, #0x30] + ldr r3, [sp, #0x24] + str r0, [sp, #0x14] + mov r0, #0x4 + str r0, [sp, #0x18] + mov r0, #0x1a + str r0, [sp, #0x1c] + ldr r1, [r4, #0x44] + mov r0, #0x0 + bl FUN_0206C700 + str r0, [r4, #0x60] + mov r0, #0x6 + str r0, [r4, #0x0] + b _020383C8 +_02038380: + mov r0, #0x7 + str r0, [r4, #0x0] + b _020383C8 +_02038386: + ldr r0, [r4, #0x60] + bl FUN_0206C91C + cmp r0, #0x0 + beq _020383C8 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x30] + bl FUN_0206B9B0 + add r1, r0, #0x0 + ldr r0, [r4, #0x44] + bl FUN_02069B88 + ldr r0, [r4, #0x60] + bl FUN_0206C92C + mov r0, #0x1a + bl FUN_020168D0 + mov r0, #0x7 + str r0, [r4, #0x0] + b _020383C8 +_020383B2: + ldr r0, [r4, #0x38] + add r0, r0, #0x1 + str r0, [r4, #0x38] + mov r0, #0x2 + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x10 + bl FUN_0202A170 +_020383C8: + mov r0, #0x0 + add sp, #0x34 + pop {r4-r7, pc} + nop +_020383D0: .word 0x02105DBC +_020383D4: .word 0x020F2CA4 + + thumb_func_start FUN_020383D8 +FUN_020383D8: ; 0x020383D8 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x20 + mov r1, #0x68 + bl FUN_02016998 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + ldr r1, _020383F4 ; =FUN_020381FC + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + .balign 4 +_020383F4: .word FUN_020381FC + + thumb_func_start FUN_020383F8 +FUN_020383F8: ; 0x020383F8 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x20 + mov r1, #0xc + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [r5, #0x7c] + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x8] + ldr r1, _02038428 ; =0x020F2C94 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + pop {r3-r5, pc} + nop +_02038428: .word 0x020F2C94 + + thumb_func_start FUN_0203842C +FUN_0203842C: ; 0x0203842C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + str r0, [r4, #0x0] + ldr r0, [r5, #0x7c] + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + str r0, [r4, #0xc] + add r0, r5, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + ldr r1, _02038468 ; =0x020F2D04 + str r0, [r4, #0x10] + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02038468: .word 0x020F2D04 + + thumb_func_start FUN_0203846C +FUN_0203846C: ; 0x0203846C + ldr r3, _02038474 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02038478 ; =0x020F2D54 + bx r3 + .balign 4 +_02038474: .word FUN_020373D4 +_02038478: .word 0x020F2D54 + + thumb_func_start FUN_0203847C +FUN_0203847C: ; 0x0203847C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x3 + bhi _02038544 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020384A0: ; jump table (using 16-bit offset) + .short _020384A8 - _020384A0 - 2; case 0 + .short _020384B6 - _020384A0 - 2; case 1 + .short _020384C8 - _020384A0 - 2; case 2 + .short _020384D6 - _020384A0 - 2; case 3 +_020384A8: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02038544 +_020384B6: + ldr r1, _02038548 ; =0x020FA5FC + ldr r2, [r4, #0xc] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02038544 +_020384C8: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02038544 +_020384D6: + ldr r1, [r4, #0xc] + ldr r0, [r1, #0x0] + cmp r0, #0x1 + bne _020384F2 + ldr r0, [r1, #0x18] + ldr r1, [r4, #0x10] + bl FUN_02021CE0 + cmp r0, #0x0 + bne _02038514 + ldr r0, [r4, #0xc] + mov r1, #0x1 + str r1, [r0, #0x14] + b _02038514 +_020384F2: + cmp r0, #0x5 + bne _02038514 + ldr r0, [r1, #0x18] + bl FUN_02021F2C + add r7, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_0202881C + add r1, r7, #0x0 + bl FUN_02028854 + cmp r0, #0x0 + beq _02038514 + ldr r0, [r4, #0xc] + mov r1, #0x2 + str r1, [r0, #0x14] +_02038514: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x14] + cmp r0, #0x0 + bne _02038522 + add r0, r5, #0x0 + bl FUN_0203854C +_02038522: + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _0203852E + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x14] + strh r0, [r1, #0x0] +_0203852E: + ldr r0, [r4, #0xc] + bl FUN_02077AC4 + ldr r0, [r4, #0x10] + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02038544: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02038548: .word 0x020FA5FC + + thumb_func_start FUN_0203854C +FUN_0203854C: ; 0x0203854C + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x0] + cmp r0, #0x6 + bhi _020385CA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02038572: ; jump table (using 16-bit offset) + .short _02038580 - _02038572 - 2; case 0 + .short _02038590 - _02038572 - 2; case 1 + .short _020385CA - _02038572 - 2; case 2 + .short _020385CA - _02038572 - 2; case 3 + .short _020385CA - _02038572 - 2; case 4 + .short _020385A8 - _02038572 - 2; case 5 + .short _020385BC - _02038572 - 2; case 6 +_02038580: + ldr r0, [r5, #0xc] + bl FUN_020238F4 + ldr r1, [r4, #0xc] + add r1, #0x1c + bl FUN_0202395C + pop {r3-r5, pc} +_02038590: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + ldr r1, [r4, #0x4] + bl FUN_0206B9B0 + ldr r2, [r4, #0xc] + mov r1, #0x75 + add r2, #0x1c + bl FUN_02067830 + pop {r3-r5, pc} +_020385A8: + ldr r0, [r5, #0xc] + bl FUN_0202881C + ldr r3, [r4, #0xc] + mov r1, #0x0 + ldr r3, [r3, #0x18] + add r2, r1, #0x0 + bl FUN_020287C0 + pop {r3-r5, pc} +_020385BC: + ldr r0, [r5, #0xc] + bl FUN_02024EB4 + ldr r1, [r4, #0xc] + ldr r1, [r1, #0x18] + bl FUN_02024F18 +_020385CA: + pop {r3-r5, pc} + + thumb_func_start FUN_020385CC +FUN_020385CC: ; 0x020385CC + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x4] + add r6, r1, #0x0 + str r2, [sp, #0x8] + str r3, [sp, #0xc] + ldr r5, [sp, #0x2c] + bl FUN_02046528 + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x14 + bl FUN_020169D8 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r0, [sp, #0x28] + str r0, [r4, #0x4] + ldr r0, [sp, #0x30] + str r0, [r4, #0x8] + ldr r0, [r7, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x0] + ldr r2, [sp, #0x8] + ldr r3, [sp, #0xc] + mov r0, #0xb + add r1, r6, #0x0 + bl FUN_02077A84 + str r0, [r4, #0xc] + mov r0, #0xc + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0x10] + cmp r6, #0x1 + beq _02038620 + cmp r6, #0x5 + beq _02038656 + b _02038660 +_02038620: + ldr r0, [r7, #0xc] + bl FUN_0206BB1C + ldr r1, [r4, #0x4] + bl FUN_0206B9B0 + mov r1, #0x6f + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + ldr r1, [r4, #0xc] + mov r2, #0x0 + str r0, [r1, #0x10] + add r0, r6, #0x0 + mov r1, #0x70 + bl FUN_020671BC + ldr r1, [r4, #0xc] + cmp r5, #0x0 + str r0, [r1, #0x8] + beq _0203866E + ldr r0, [r4, #0x10] + add r1, r5, #0x0 + bl FUN_02021E28 + b _0203866E +_02038656: + ldr r0, [r4, #0x10] + add r1, r5, #0x0 + bl FUN_02021E28 + b _0203866E +_02038660: + cmp r5, #0x0 + beq _0203866E + ldr r0, [r4, #0xc] + add r1, r5, #0x0 + ldr r0, [r0, #0x18] + bl FUN_02021E28 +_0203866E: + ldr r0, [sp, #0x4] + ldr r1, _0203867C ; =FUN_0203847C + add r2, r4, #0x0 + bl FUN_0204640C + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0203867C: .word FUN_0203847C + + thumb_func_start FUN_02038680 +FUN_02038680: ; 0x02038680 + ldr r3, _02038688 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _0203868C ; =0x020F2C54 + bx r3 + .balign 4 +_02038688: .word FUN_020373D4 +_0203868C: .word 0x020F2C54 + + thumb_func_start FUN_02038690 +FUN_02038690: ; 0x02038690 + push {r3, lr} + add r2, r1, #0x0 + ldr r1, _020386A0 ; =0x020F2C44 + bl FUN_020373D4 + mov r0, #0x1 + pop {r3, pc} + nop +_020386A0: .word 0x020F2C44 + + thumb_func_start FUN_020386A4 +FUN_020386A4: ; 0x020386A4 + ldr r3, _020386AC ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _020386B0 ; =0x020F2C34 + bx r3 + .balign 4 +_020386AC: .word FUN_020373D4 +_020386B0: .word 0x020F2C34 + + thumb_func_start FUN_020386B4 +FUN_020386B4: ; 0x020386B4 + push {r3-r5, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02029ABC + ldr r5, _020386DC ; =0x020F2C24 + add r3, sp, #0x0 + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r1, r2, #0x0 + ldr r2, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_020386DC: .word 0x020F2C24 + + thumb_func_start FUN_020386E0 +FUN_020386E0: ; 0x020386E0 + push {r4-r6, lr} + sub sp, #0x10 + ldr r3, _0203878C ; =0x020F2C64 + add r2, sp, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r0, #0xb + mov r1, #0x44 + bl FUN_020169D8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202ABBC + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_02023788 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + mov r1, #0x2 + bl FUN_02022610 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl FUN_02022510 + str r0, [r4, #0xc] + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + str r0, [r4, #0x10] + ldr r0, [r5, #0xc] + bl FUN_020286EC + str r0, [r4, #0x14] + ldr r0, [r5, #0xc] + bl FUN_02029AFC + str r0, [r4, #0x18] + ldr r0, [r5, #0xc] + bl FUN_020238F4 + str r0, [r4, #0x1c] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x24] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + str r0, [r4, #0x28] + add r0, r5, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + str r0, [r4, #0x2c] + ldr r0, [r5, #0xc] + bl FUN_02079C70 + str r0, [r4, #0x3c] + ldr r0, [r5, #0xc] + str r0, [r4, #0x20] + ldr r0, [r5, #0xc] + bl FUN_0206BB28 + str r0, [r4, #0x34] + ldr r0, [r4, #0x14] + bl FUN_02033830 + str r0, [r4, #0x38] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x30] + add r0, r5, #0x0 + add r1, sp, #0x0 + add r2, r4, #0x0 + str r6, [r4, #0x40] + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0203878C: .word 0x020F2C64 + + thumb_func_start FUN_02038790 +FUN_02038790: ; 0x02038790 + push {r3-r7, lr} + sub sp, #0x10 + ldr r3, _02038800 ; =0x020F2C74 + add r7, r2, #0x0 + add r2, sp, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r0, #0xb + mov r1, #0x28 + bl FUN_020169D8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202A8D8 + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0202A8E4 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02023788 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x10] + ldr r0, [r5, #0xc] + bl FUN_020286EC + bl FUN_02028228 + str r0, [r4, #0x14] + ldr r0, [r5, #0xc] + str r0, [r4, #0xc] + ldr r0, [r5, #0xc] + bl FUN_020286EC + bl FUN_02033830 + str r0, [r4, #0x1c] + str r6, [r4, #0x18] + add r0, r5, #0x0 + add r1, sp, #0x0 + add r2, r4, #0x0 + str r7, [r4, #0x24] + bl FUN_020373D4 + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02038800: .word 0x020F2C74 + + thumb_func_start FUN_02038804 +FUN_02038804: ; 0x02038804 + ldr r3, _0203880C ; =FUN_020373D4 + ldr r1, _02038810 ; =0x020F2D14 + ldr r2, [r0, #0xc] + bx r3 + .balign 4 +_0203880C: .word FUN_020373D4 +_02038810: .word 0x020F2D14 + + thumb_func_start FUN_02038814 +FUN_02038814: ; 0x02038814 + ldr r3, _0203881C ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02038820 ; =0x020F2D64 + bx r3 + .balign 4 +_0203881C: .word FUN_020373D4 +_02038820: .word 0x020F2D64 + + thumb_func_start FUN_02038824 +FUN_02038824: ; 0x02038824 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r1, #0xb + add r2, sp, #0x0 + bl FUN_02022534 + ldr r1, [sp, #0x0] + add r4, r0, #0x0 + cmp r1, #0x2 + bne _02038842 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_02038842: + ldr r1, _02038850 ; =0x020F2BF4 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02038850: .word 0x020F2BF4 + + thumb_func_start FUN_02038854 +FUN_02038854: ; 0x02038854 + ldr r3, _0203885C ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _02038860 ; =0x020F2C04 + bx r3 + .balign 4 +_0203885C: .word FUN_020373D4 +_02038860: .word 0x020F2C04 + + thumb_func_start FUN_02038864 +FUN_02038864: ; 0x02038864 + push {r4-r6, lr} + sub sp, #0x10 + ldr r5, _02038888 ; =0x020F2C84 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r2, r1, #0x0 + add r3, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r0, r6, #0x0 + add r1, r3, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02038888: .word 0x020F2C84 + + thumb_func_start FUN_0203888C +FUN_0203888C: ; 0x0203888C + push {r4-r6, lr} + sub sp, #0x10 + ldr r5, _020388B0 ; =0x020F2D84 + add r4, sp, #0x0 + add r6, r0, #0x0 + add r2, r1, #0x0 + add r3, r4, #0x0 + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + add r0, r6, #0x0 + add r1, r3, #0x0 + bl FUN_020373D4 + add sp, #0x10 + pop {r4-r6, pc} + nop +_020388B0: .word 0x020F2D84 + + thumb_func_start FUN_020388B4 +FUN_020388B4: ; 0x020388B4 + push {r3-r5, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + bl FUN_021ED49C + add r5, r0, #0x0 + bne _020388CC + bl ErrorHandling +_020388CC: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020613CC + str r5, [sp, #0x0] + ldr r0, [r4, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x4] + ldr r0, [r4, #0xc] + bl FUN_020238F4 + str r0, [sp, #0x8] + ldr r1, [r4, #0x1c] + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0204AB58 + add r1, sp, #0x0 + strh r0, [r1, #0xc] + ldr r0, [r4, #0x10] + add r1, sp, #0x0 + bl FUN_020863DC + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02038900 +FUN_02038900: ; 0x02038900 + push {r3, lr} + add r2, r1, #0x0 + ldr r1, _02038910 ; =0x020F2C14 + bl FUN_020373D4 + mov r0, #0x1 + pop {r3, pc} + nop +_02038910: .word 0x020F2C14 + + thumb_func_start FUN_02038914 +FUN_02038914: ; 0x02038914 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046530 + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _02038944 + cmp r0, #0x1 + beq _02038956 + b _020389C6 +_02038944: + add r5, #0xc + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02038900 + ldr r0, [r6, #0x0] + add r0, r0, #0x1 + str r0, [r6, #0x0] + b _020389C6 +_02038956: + add r0, r4, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _020389C6 + ldr r0, [r4, #0xc] + bl FUN_0202390C + str r0, [sp, #0x0] + bl FUN_020126FC + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + add r6, r1, #0x0 + bl FUN_02028930 + str r0, [sp, #0x8] + ldr r0, [r5, #0x4] + ldr r1, [r5, #0x8] + ldr r2, [sp, #0x4] + add r3, r6, #0x0 + bl FUN_020127C0 + mov r2, #0x3c + mov r3, #0x0 + blx _ll_sdiv + add r3, r0, #0x0 + ldr r1, [sp, #0x8] + ldr r2, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02061A8C + ldr r0, [r4, #0xc] + bl FUN_0202390C + ldr r1, [r5, #0x0] + bl FUN_02028918 + add r0, r7, #0x0 + bl FUN_0205F6C8 + ldr r1, [r5, #0x18] + cmp r1, r0 + ble _020389BA + lsl r1, r1, #0x10 + add r0, r7, #0x0 + lsr r1, r1, #0x10 + bl FUN_0205F6D8 +_020389BA: + add r0, r5, #0x0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_020389C6: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_020389CC +FUN_020389CC: ; 0x020389CC + push {r3-r7, lr} + add r7, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x0] + mov r0, #0x20 + add r1, r0, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + str r4, [r4, #0xc] + ldr r0, [r5, #0xc] + bl FUN_0202390C + bl FUN_02028930 + str r0, [r4, #0x0] + bl FUN_020126FC + str r0, [r4, #0x4] + str r1, [r4, #0x8] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + str r0, [r4, #0x14] + mov r0, #0x0 + str r0, [r4, #0x18] + ldr r0, [sp, #0x0] + bl FUN_02025084 + str r0, [r4, #0x1c] + lsl r1, r6, #0x18 + ldr r0, [r5, #0xc] + lsr r1, r1, #0x18 + bl FUN_02038A3C + str r0, [r4, #0x10] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x5 + bl FUN_0202A170 + ldr r1, _02038A38 ; =FUN_02038914 + add r0, r7, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_02038A38: .word FUN_02038914 + + thumb_func_start FUN_02038A3C +FUN_02038A3C: ; 0x02038A3C + push {r4-r7, lr} + sub sp, #0x14 + str r1, [sp, #0x0] + bl FUN_0202881C + add r4, r0, #0x0 + bl FUN_0201B9D4 + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_020287A4 + bl FUN_0201B9E0 + ldr r0, _02038AAC ; =0x020F2BE8 + add r1, sp, #0x8 + mov r2, #0xc + blx MI_CpuCopy8 + mov r4, #0x0 + mov r7, #0xc + add r6, sp, #0x8 +_02038A68: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0xc + bhs _02038A92 +_02038A72: + bl FUN_0201B9EC + add r1, r7, #0x0 + blx _s32_div_f + lsl r0, r1, #0x18 + lsr r2, r0, #0x18 + ldrb r1, [r6, r4] + ldrb r0, [r6, r2] + strb r0, [r6, r4] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + strb r1, [r6, r2] + cmp r5, #0xc + blo _02038A72 +_02038A92: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0xc + blo _02038A68 + ldr r0, [sp, #0x4] + bl FUN_0201B9E0 + ldr r0, [sp, #0x0] + add r1, sp, #0x8 + ldrb r0, [r1, r0] + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02038AAC: .word 0x020F2BE8 + + thumb_func_start FUN_02038AB0 +FUN_02038AB0: ; 0x02038AB0 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + bl FUN_0224D79C + cmp r0, #0x1 + bne _02038ACA + add r0, r4, #0x0 + bl FUN_0224D76C + mov r0, #0x1 + pop {r4, pc} +_02038ACA: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02038AD0 +FUN_02038AD0: ; 0x02038AD0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r2, r0, #0x0 + ldr r1, [r2, #0xc] + ldr r2, [r2, #0x8] + mov r0, #0x4 + bl FUN_0224D70C + add r2, r0, #0x0 + ldr r1, _02038AF0 ; =FUN_02038AB0 + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + .balign 4 +_02038AF0: .word FUN_02038AB0 + + thumb_func_start FUN_02038AF4 +FUN_02038AF4: ; 0x02038AF4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x8 + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + str r6, [r4, #0x4] + ldr r0, [r5, #0xc] + ldr r1, _02038B18 ; =0x020F2DA4 + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02038B18: .word 0x020F2DA4 diff --git a/arm9/asm/unk_02038C78.s b/arm9/asm/unk_02038C78.s new file mode 100644 index 00000000..785e5b48 --- /dev/null +++ b/arm9/asm/unk_02038C78.s @@ -0,0 +1,1744 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_02038C78 +FUN_02038C78: ; 0x02038C78 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02038E20 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_02038E60 + ldr r1, _02038CA4 ; =FUN_02038D48 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463CC + pop {r3-r7, pc} + nop +_02038CA4: .word FUN_02038D48 + + thumb_func_start FUN_02038CA8 +FUN_02038CA8: ; 0x02038CA8 + push {r4-r6, lr} + ldr r0, [r0, #0x10] + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_0204652C + ldr r2, [sp, #0x1c] + mov r1, #0x1c + add r3, r2, #0x0 + add r0, #0x50 + mul r3, r1 + add r1, r0, r3 + str r4, [r0, r3] + ldr r0, [sp, #0x10] + str r6, [r1, #0x4] + str r0, [r1, #0x8] + ldr r0, [sp, #0x14] + str r0, [r1, #0xc] + ldr r0, [sp, #0x18] + str r0, [r1, #0x10] + str r5, [r1, #0x14] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02038CD8 +FUN_02038CD8: ; 0x02038CD8 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r7, r1, #0x0 + str r2, [sp, #0x4] + add r5, r3, #0x0 + bl FUN_02046528 + str r0, [sp, #0x8] + bl FUN_02038E20 + add r4, r0, #0x0 + ldr r0, [sp, #0x8] + ldr r3, [sp, #0x4] + add r1, r4, #0x0 + add r2, r7, #0x0 + str r5, [sp, #0x0] + bl FUN_02038E60 + ldr r1, _02038D0C ; =FUN_02038D48 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02038D0C: .word FUN_02038D48 + + thumb_func_start FUN_02038D10 +FUN_02038D10: ; 0x02038D10 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02046528 + str r0, [sp, #0x4] + bl FUN_02038E20 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_02038E60 + ldr r1, _02038D44 ; =FUN_02038D48 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463EC + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02038D44: .word FUN_02038D48 + + thumb_func_start FUN_02038D48 +FUN_02038D48: ; 0x02038D48 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + ldrb r1, [r4, #0x4] + str r0, [sp, #0x0] + cmp r1, #0x0 + beq _02038D68 + cmp r1, #0x1 + beq _02038D9E + b _02038E1A +_02038D68: + ldrh r1, [r4, #0xa] + bl FUN_02038EB0 + str r0, [r4, #0x38] + mov r0, #0x1 + strb r0, [r4, #0x9] + mov r0, #0x8 + mov r1, #0x40 + mov r2, #0xb + bl FUN_0200AA90 + str r0, [r4, #0x40] + mov r0, #0x1 + lsl r0, r0, #0xa + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0x44] + mov r0, #0x1 + lsl r0, r0, #0xa + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0x48] + ldrb r0, [r4, #0x4] + add r0, r0, #0x1 + strb r0, [r4, #0x4] +_02038D9E: + mov r0, #0x0 + add r7, r4, #0x0 + str r0, [sp, #0x4] + add r5, r4, #0x0 + add r7, #0x9 +_02038DA8: + ldr r6, [r5, #0x38] + cmp r6, #0x0 + beq _02038DD2 + add r0, r6, #0x0 + bl RunScriptCommand + cmp r0, #0x0 + bne _02038DD2 + add r0, r6, #0x0 + bl FUN_02038E48 + ldrb r0, [r4, #0x9] + cmp r0, #0x0 + bne _02038DC8 + bl ErrorHandling +_02038DC8: + mov r0, #0x0 + str r0, [r5, #0x38] + ldrb r0, [r7, #0x0] + sub r0, r0, #0x1 + strb r0, [r7, #0x0] +_02038DD2: + ldr r0, [sp, #0x4] + add r5, r5, #0x4 + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, #0x2 + blt _02038DA8 + ldrb r0, [r4, #0x9] + cmp r0, #0x0 + bne _02038E1A + add r0, r4, #0x0 + add r0, #0xa4 + ldr r5, [r0, #0x0] + ldr r0, [r4, #0x40] + bl FUN_0200AB18 + ldr r0, [r4, #0x44] + bl FUN_02021A20 + ldr r0, [r4, #0x48] + bl FUN_02021A20 + mov r0, #0x0 + str r0, [r4, #0x0] + add r0, r4, #0x0 + bl FUN_02016A18 + cmp r5, #0x0 + beq _02038E14 + ldr r0, [sp, #0x0] + blx r5 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_02038E14: + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02038E1A: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02038E20 +FUN_02038E20: ; 0x02038E20 + push {r4, lr} + mov r0, #0xb + mov r1, #0xdc + bl FUN_02016998 + add r4, r0, #0x0 + bne _02038E32 + bl ErrorHandling +_02038E32: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0xdc + blx Call_FillMemWithValue + ldr r0, _02038E44 ; =0x0003643F + str r0, [r4, #0x0] + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_02038E44: .word 0x0003643F + + thumb_func_start FUN_02038E48 +FUN_02038E48: ; 0x02038E48 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x78] + bl FUN_0200A8B8 + ldr r0, [r4, #0x7c] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02038E60 +FUN_02038E60: ; 0x02038E60 + push {r3-r7, lr} + add r5, r1, #0x0 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x36 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02039300 + str r0, [sp, #0x0] + ldr r0, [r7, #0x38] + bl FUN_020552F8 + str r0, [r5, #0x28] + str r6, [r5, #0x2c] + ldr r0, [sp, #0x18] + strh r4, [r5, #0xa] + str r0, [r5, #0x34] + cmp r6, #0x0 + beq _02038E92 + add r0, r6, #0x0 + bl FUN_02058448 + ldr r1, [sp, #0x0] + strh r0, [r1, #0x0] +_02038E92: + mov r0, #0x7d + lsl r0, r0, #0x6 + cmp r4, r0 + blo _02038EA8 + ldr r0, _02038EAC ; =0x0000225F + cmp r4, r0 + bhi _02038EA8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020396E8 +_02038EA8: + pop {r3-r7, pc} + nop +_02038EAC: .word 0x0000225F + + thumb_func_start FUN_02038EB0 +FUN_02038EB0: ; 0x02038EB0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x84 + bl FUN_02016998 + add r4, r0, #0x0 + bne _02038EC6 + bl ErrorHandling +_02038EC6: + ldr r2, _02038EE4 ; =0x020F34DC + ldr r1, _02038EE8 ; =gScriptCmdTable + ldr r2, [r2, #0x0] + add r0, r4, #0x0 + bl InitScriptContext + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + bl FUN_02038EEC + add r0, r4, #0x0 + pop {r4-r6, pc} + nop +_02038EE4: .word 0x020F34DC +_02038EE8: .word gScriptCmdTable + + thumb_func_start FUN_02038EEC +FUN_02038EEC: ; 0x02038EEC + push {r4-r6, lr} + add r4, r1, #0x0 + add r3, r4, #0x0 + add r5, r0, #0x0 + add r3, #0x80 + str r5, [r3, #0x0] + bl FUN_02038F18 + add r6, r0, #0x0 + ldr r1, [r4, #0x7c] + add r0, r4, #0x0 + bl SetupBytecodeScript + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02039484 + ldr r1, [r5, #0x10] + add r0, r4, #0x0 + bl FUN_02038B6C + pop {r4-r6, pc} + + thumb_func_start FUN_02038F18 +FUN_02038F18: ; 0x02038F18 + push {r3-r5, lr} + ldr r3, _02039210 ; =0x0000283C + add r4, r2, #0x0 + cmp r4, r3 + blo _02038F36 + mov r3, #0x1f + ldr r2, _02039214 ; =0x000003D1 + lsl r3, r3, #0x4 + bl FUN_020392B4 + ldr r0, _02039210 ; =0x0000283C + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038F36: + add r2, r3, #0x0 + sub r2, #0x64 + cmp r4, r2 + blo _02038F52 + ldr r2, _02039218 ; =0x00000175 + add r3, r2, #0x0 + sub r3, #0x29 + bl FUN_020392B4 + ldr r0, _0203921C ; =0x000027D8 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038F52: + add r2, r3, #0x0 + sub r2, #0x96 + cmp r4, r2 + blo _02038F6C + ldr r2, _02039220 ; =0x00000412 + ldr r3, _02039224 ; =0x00000232 + bl FUN_020392B4 + ldr r0, _02039228 ; =0x000027A6 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038F6C: + sub r3, #0xc8 + cmp r4, r3 + blo _02038F84 + ldr r2, _0203922C ; =0x00000411 + ldr r3, _02039230 ; =0x00000233 + bl FUN_020392B4 + ldr r0, _02039234 ; =0x00002774 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038F84: + ldr r3, _02039238 ; =0x00002710 + cmp r4, r3 + blo _02038F9E + ldr r2, _0203923C ; =0x00000177 + add r3, r2, #0x0 + sub r3, #0x29 + bl FUN_020392B4 + ldr r0, _02039238 ; =0x00002710 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038F9E: + add r2, r3, #0x0 + sub r2, #0x32 + cmp r4, r2 + blo _02038FBC + mov r2, #0x5e + lsl r2, r2, #0x2 + add r3, r2, #0x0 + sub r3, #0x29 + bl FUN_020392B4 + ldr r0, _02039240 ; =0x000026DE + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038FBC: + add r2, r3, #0x0 + sub r2, #0x64 + cmp r4, r2 + blo _02038FD6 + ldr r2, _02039244 ; =0x0000016D + mov r3, #0xc7 + bl FUN_020392B4 + ldr r0, _02039248 ; =0x000026AC + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038FD6: + add r2, r3, #0x0 + sub r2, #0xc8 + cmp r4, r2 + blo _02038FF0 + mov r2, #0xce + mov r3, #0xcb + bl FUN_020392B4 + ldr r0, _0203924C ; =0x00002648 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02038FF0: + ldr r5, _02039250 ; =0x000025E4 + cmp r4, r5 + blo _0203900A + ldr r2, _02039254 ; =0x00000183 + add r3, r2, #0x0 + sub r3, #0x9 + bl FUN_020392B4 + add r0, r5, #0x0 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_0203900A: + add r2, r5, #0x0 + sub r2, #0x64 + cmp r4, r2 + blo _02039026 + ldr r2, _02039258 ; =0x00000179 + mov r3, #0xc7 + bl FUN_020392B4 + add r0, r5, #0x0 + sub r0, #0x64 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039026: + sub r5, #0xc8 + cmp r4, r5 + blo _02039042 + mov r2, #0x1d + lsl r2, r2, #0x4 + add r3, r2, #0x0 + add r3, #0x1c + bl FUN_020392B4 + ldr r0, _0203925C ; =0x0000251C + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039042: + ldr r5, _02039260 ; =0x000024B8 + cmp r4, r5 + blo _0203905C + ldr r2, _02039264 ; =0x00000187 + add r3, r2, #0x0 + sub r3, #0xa + bl FUN_020392B4 + add r0, r5, #0x0 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_0203905C: + add r2, r5, #0x0 + sub r2, #0x64 + cmp r4, r2 + blo _0203907C + mov r2, #0x5d + lsl r2, r2, #0x2 + add r3, r2, #0x0 + sub r3, #0x2b + bl FUN_020392B4 + add r0, r5, #0x0 + sub r0, #0x64 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_0203907C: + sub r5, #0xc8 + cmp r4, r5 + blo _02039098 + mov r2, #0x61 + lsl r2, r2, #0x2 + add r3, r2, #0x0 + sub r3, #0x9 + bl FUN_020392B4 + ldr r0, _02039268 ; =0x000023F0 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039098: + ldr r2, _0203926C ; =0x0000238C + cmp r4, r2 + blo _020390B0 + mov r2, #0x0 + mov r3, #0x9 + bl FUN_020392B4 + ldr r0, _0203926C ; =0x0000238C + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020390B0: + add r5, r2, #0x0 + sub r5, #0x64 + cmp r4, r5 + blo _020390CA + mov r2, #0xcf + add r3, r2, #0x0 + bl FUN_020392B4 + ldr r0, _02039270 ; =0x00002328 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020390CA: + add r5, r2, #0x0 + sub r5, #0x82 + cmp r4, r5 + blo _020390E4 + ldr r2, _02039274 ; =0x00000186 + mov r3, #0x7 + bl FUN_020392B4 + ldr r0, _02039278 ; =0x0000230A + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020390E4: + add r5, r2, #0x0 + sub r5, #0x96 + cmp r4, r5 + blo _02039100 + ldr r2, _0203927C ; =0x000001CF + add r3, r2, #0x0 + add r3, #0x17 + bl FUN_020392B4 + ldr r0, _02039280 ; =0x000022F6 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039100: + sub r2, #0xc8 + cmp r4, r2 + blo _0203911A + ldr r2, _02039284 ; =0x00000185 + add r3, r2, #0x0 + sub r3, #0x9 + bl FUN_020392B4 + ldr r0, _02039288 ; =0x000022C4 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_0203911A: + ldr r2, _0203928C ; =0x00002260 + cmp r4, r2 + blo _02039134 + ldr r2, _02039290 ; =0x000001CE + add r3, r2, #0x0 + add r3, #0x17 + bl FUN_020392B4 + ldr r0, _0203928C ; =0x00002260 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039134: + mov r2, #0x7d + lsl r2, r2, #0x6 + cmp r4, r2 + blo _02039152 + ldr r2, _02039294 ; =0x00000176 + add r3, r2, #0x0 + sub r3, #0x29 + bl FUN_020392B4 + mov r0, #0x7d + lsl r0, r0, #0x6 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039152: + ldr r5, _02039298 ; =0x00001B58 + cmp r4, r5 + blo _0203916C + ldr r2, _0203929C ; =0x00000172 + add r3, r2, #0x0 + sub r3, #0x2d + bl FUN_020392B4 + add r0, r5, #0x0 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_0203916C: + lsr r5, r3, #0x1 + cmp r4, r5 + blo _02039186 + mov r2, #0x41 + lsl r2, r2, #0x4 + mov r3, #0xc7 + bl FUN_020392B4 + ldr r0, _020392A0 ; =0x00001388 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_02039186: + ldr r5, _020392A4 ; =0x00000BB8 + cmp r4, r5 + blo _020391A0 + mov r2, #0x41 + lsl r2, r2, #0x4 + mov r3, #0xc7 + bl FUN_020392B4 + add r0, r5, #0x0 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020391A0: + sub r5, #0xc8 + cmp r4, r5 + blo _020391BC + ldr r2, _020392A8 ; =0x0000017A + add r3, r2, #0x0 + sub r3, #0x1c + bl FUN_020392B4 + mov r0, #0xaf + lsl r0, r0, #0x4 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020391BC: + lsr r3, r3, #0x2 + cmp r4, r3 + blo _020391D4 + mov r2, #0x1 + mov r3, #0xd + bl FUN_020392B4 + ldr r0, _020392AC ; =0x000009C4 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020391D4: + lsr r2, r2, #0x2 + cmp r4, r2 + blo _020391EE + mov r2, #0xcd + mov r3, #0xc7 + bl FUN_020392B4 + mov r0, #0x7d + lsl r0, r0, #0x4 + sub r0, r4, r0 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020391EE: + cmp r4, #0x1 + blo _020391FE + bl FUN_020392D8 + sub r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0203920A +_020391FE: + ldr r2, _020392B0 ; =0x00000171 + add r3, r2, #0x0 + sub r3, #0x34 + bl FUN_020392B4 + mov r4, #0x0 +_0203920A: + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_02039210: .word 0x0000283C +_02039214: .word 0x000003D1 +_02039218: .word 0x00000175 +_0203921C: .word 0x000027D8 +_02039220: .word 0x00000412 +_02039224: .word 0x00000232 +_02039228: .word 0x000027A6 +_0203922C: .word 0x00000411 +_02039230: .word 0x00000233 +_02039234: .word 0x00002774 +_02039238: .word 0x00002710 +_0203923C: .word 0x00000177 +_02039240: .word 0x000026DE +_02039244: .word 0x0000016D +_02039248: .word 0x000026AC +_0203924C: .word 0x00002648 +_02039250: .word 0x000025E4 +_02039254: .word 0x00000183 +_02039258: .word 0x00000179 +_0203925C: .word 0x0000251C +_02039260: .word 0x000024B8 +_02039264: .word 0x00000187 +_02039268: .word 0x000023F0 +_0203926C: .word 0x0000238C +_02039270: .word 0x00002328 +_02039274: .word 0x00000186 +_02039278: .word 0x0000230A +_0203927C: .word 0x000001CF +_02039280: .word 0x000022F6 +_02039284: .word 0x00000185 +_02039288: .word 0x000022C4 +_0203928C: .word 0x00002260 +_02039290: .word 0x000001CE +_02039294: .word 0x00000176 +_02039298: .word 0x00001B58 +_0203929C: .word 0x00000172 +_020392A0: .word 0x00001388 +_020392A4: .word 0x00000BB8 +_020392A8: .word 0x0000017A +_020392AC: .word 0x000009C4 +_020392B0: .word 0x00000171 + + thumb_func_start FUN_020392B4 +FUN_020392B4: ; 0x020392B4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r1, r2, #0x0 + add r4, r3, #0x0 + mov r0, #0xa + mov r2, #0xb + bl LoadFromNarc_2 + str r0, [r5, #0x7c] + mov r0, #0x1 + mov r1, #0x1a + add r2, r4, #0x0 + mov r3, #0xb + bl FUN_0200A86C + str r0, [r5, #0x78] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020392D8 +FUN_020392D8: ; 0x020392D8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x1c] + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + bl FUN_0203949C + str r0, [r4, #0x7c] + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_020394B0 + add r2, r0, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0xb + bl FUN_0200A86C + str r0, [r4, #0x78] + pop {r3-r5, pc} + + thumb_func_start FUN_02039300 +FUN_02039300: ; 0x02039300 + push {r3, lr} + cmp r1, #0x36 + bls _02039308 + b _02039430 +_02039308: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02039314: ; jump table (using 16-bit offset) + .short _02039382 - _02039314 - 2; case 0 + .short _02039386 - _02039314 - 2; case 1 + .short _0203938A - _02039314 - 2; case 2 + .short _0203938E - _02039314 - 2; case 3 + .short _02039392 - _02039314 - 2; case 4 + .short _02039396 - _02039314 - 2; case 5 + .short _0203939A - _02039314 - 2; case 6 + .short _0203939E - _02039314 - 2; case 7 + .short _020393A2 - _02039314 - 2; case 8 + .short _020393A6 - _02039314 - 2; case 9 + .short _020393AA - _02039314 - 2; case 10 + .short _020393AE - _02039314 - 2; case 11 + .short _020393B2 - _02039314 - 2; case 12 + .short _020393B6 - _02039314 - 2; case 13 + .short _020393BA - _02039314 - 2; case 14 + .short _020393BE - _02039314 - 2; case 15 + .short _020393C2 - _02039314 - 2; case 16 + .short _020393C6 - _02039314 - 2; case 17 + .short _020393CA - _02039314 - 2; case 18 + .short _020393CE - _02039314 - 2; case 19 + .short _020393D2 - _02039314 - 2; case 20 + .short _020393D6 - _02039314 - 2; case 21 + .short _020393DA - _02039314 - 2; case 22 + .short _020393DE - _02039314 - 2; case 23 + .short _020393E2 - _02039314 - 2; case 24 + .short _020393E6 - _02039314 - 2; case 25 + .short _020393EA - _02039314 - 2; case 26 + .short _020393EE - _02039314 - 2; case 27 + .short _020393F2 - _02039314 - 2; case 28 + .short _020393F6 - _02039314 - 2; case 29 + .short _020393FA - _02039314 - 2; case 30 + .short _020393FE - _02039314 - 2; case 31 + .short _02039402 - _02039314 - 2; case 32 + .short _02039406 - _02039314 - 2; case 33 + .short _0203940A - _02039314 - 2; case 34 + .short _0203940E - _02039314 - 2; case 35 + .short _02039412 - _02039314 - 2; case 36 + .short _02039416 - _02039314 - 2; case 37 + .short _0203941A - _02039314 - 2; case 38 + .short _0203941E - _02039314 - 2; case 39 + .short _02039422 - _02039314 - 2; case 40 + .short _02039426 - _02039314 - 2; case 41 + .short _02039426 - _02039314 - 2; case 42 + .short _02039426 - _02039314 - 2; case 43 + .short _02039426 - _02039314 - 2; case 44 + .short _02039426 - _02039314 - 2; case 45 + .short _02039426 - _02039314 - 2; case 46 + .short _02039426 - _02039314 - 2; case 47 + .short _02039426 - _02039314 - 2; case 48 + .short _02039426 - _02039314 - 2; case 49 + .short _02039426 - _02039314 - 2; case 50 + .short _02039426 - _02039314 - 2; case 51 + .short _02039426 - _02039314 - 2; case 52 + .short _02039426 - _02039314 - 2; case 53 + .short _02039426 - _02039314 - 2; case 54 +_02039382: + add r0, #0x10 + pop {r3, pc} +_02039386: + add r0, #0x14 + pop {r3, pc} +_0203938A: + add r0, #0x24 + pop {r3, pc} +_0203938E: + add r0, r0, #0x5 + pop {r3, pc} +_02039392: + add r0, r0, #0x6 + pop {r3, pc} +_02039396: + add r0, r0, #0x7 + pop {r3, pc} +_0203939A: + add r0, #0x8 + pop {r3, pc} +_0203939E: + add r0, #0x9 + pop {r3, pc} +_020393A2: + add r0, #0xa + pop {r3, pc} +_020393A6: + add r0, #0x28 + pop {r3, pc} +_020393AA: + add r0, #0x2c + pop {r3, pc} +_020393AE: + add r0, #0x30 + pop {r3, pc} +_020393B2: + add r0, #0x34 + pop {r3, pc} +_020393B6: + add r0, #0x38 + pop {r3, pc} +_020393BA: + add r0, #0x3c + pop {r3, pc} +_020393BE: + add r0, #0x40 + pop {r3, pc} +_020393C2: + add r0, #0x44 + pop {r3, pc} +_020393C6: + add r0, #0x48 + pop {r3, pc} +_020393CA: + add r0, #0x4c + pop {r3, pc} +_020393CE: + add r0, #0xa8 + pop {r3, pc} +_020393D2: + add r0, #0xac + pop {r3, pc} +_020393D6: + add r0, #0xb0 + pop {r3, pc} +_020393DA: + add r0, #0xb4 + pop {r3, pc} +_020393DE: + add r0, #0xc + pop {r3, pc} +_020393E2: + add r0, #0x50 + pop {r3, pc} +_020393E6: + add r0, #0x54 + pop {r3, pc} +_020393EA: + add r0, #0x58 + pop {r3, pc} +_020393EE: + add r0, #0x5c + pop {r3, pc} +_020393F2: + add r0, #0x60 + pop {r3, pc} +_020393F6: + add r0, #0x64 + pop {r3, pc} +_020393FA: + add r0, #0x68 + pop {r3, pc} +_020393FE: + add r0, #0x6c + pop {r3, pc} +_02039402: + add r0, #0x70 + pop {r3, pc} +_02039406: + add r0, #0x74 + pop {r3, pc} +_0203940A: + add r0, #0x78 + pop {r3, pc} +_0203940E: + add r0, #0x7c + pop {r3, pc} +_02039412: + add r0, #0x80 + pop {r3, pc} +_02039416: + add r0, #0x84 + pop {r3, pc} +_0203941A: + add r0, #0xb8 + pop {r3, pc} +_0203941E: + add r0, #0xc8 + pop {r3, pc} +_02039422: + add r0, #0xd8 + pop {r3, pc} +_02039426: + sub r1, #0x29 + add r0, #0x88 + lsl r1, r1, #0x1 + add r0, r0, r1 + pop {r3, pc} +_02039430: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02039438 +FUN_02039438: ; 0x02039438 + push {r3-r5, lr} + ldr r0, [r0, #0x10] + add r5, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _0203945C ; =0x0003643F + cmp r1, r0 + beq _02039450 + bl ErrorHandling +_02039450: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02039300 + pop {r3-r5, pc} + nop +_0203945C: .word 0x0003643F + + thumb_func_start FUN_02039460 +FUN_02039460: ; 0x02039460 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02035068 + cmp r0, #0x1 + bne _0203947C + ldr r0, _02039480 ; =FUN_020351A0 + add r4, #0xa4 + str r0, [r4, #0x0] +_0203947C: + pop {r3-r5, pc} + nop +_02039480: .word FUN_020351A0 + + thumb_func_start FUN_02039484 +FUN_02039484: ; 0x02039484 + push {r4, lr} + add r4, r0, #0x0 + ldr r2, [r4, #0x8] + lsl r1, r1, #0x2 + add r1, r2, r1 + str r1, [r4, #0x8] + bl ScriptReadWord + ldr r1, [r4, #0x8] + add r0, r1, r0 + str r0, [r4, #0x8] + pop {r4, pc} + + thumb_func_start FUN_0203949C +FUN_0203949C: ; 0x0203949C + push {r3, lr} + bl FUN_02034788 + add r1, r0, #0x0 + mov r0, #0xa + mov r2, #0xb + bl LoadFromNarc_2 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020394B0 +FUN_020394B0: ; 0x020394B0 + ldr r3, _020394B4 ; =FUN_02034774 + bx r3 + .balign 4 +_020394B4: .word FUN_02034774 + + thumb_func_start FUN_020394B8 +FUN_020394B8: ; 0x020394B8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + mov r1, #0x1 + lsl r1, r1, #0xe + cmp r4, r1 + bhs _020394D0 + mov r0, #0x0 + pop {r3-r5, pc} +_020394D0: + lsl r1, r1, #0x1 + cmp r4, r1 + bhs _020394DE + add r1, r4, #0x0 + bl FUN_02046380 + pop {r3-r5, pc} +_020394DE: + ldr r1, _020394EC ; =0x00007FD7 + add r0, r5, #0x0 + sub r1, r4, r1 + bl FUN_02039438 + pop {r3-r5, pc} + nop +_020394EC: .word 0x00007FD7 + + thumb_func_start FUN_020394F0 +FUN_020394F0: ; 0x020394F0 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020394B8 + cmp r0, #0x0 + beq _020394FE + ldrh r4, [r0, #0x0] +_020394FE: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039504 +FUN_02039504: ; 0x02039504 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x10 + blo _02039512 + bl ErrorHandling +_02039512: + ldr r1, _02039524 ; =0x00004020 + add r0, r5, #0x0 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_020394F0 + pop {r3-r5, pc} + nop +_02039524: .word 0x00004020 + + thumb_func_start FUN_02039528 +FUN_02039528: ; 0x02039528 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + add r1, r4, #0x0 + bl FUN_020462B8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203953C +FUN_0203953C: ; 0x0203953C + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + add r1, r4, #0x0 + bl FUN_020462E4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039550 +FUN_02039550: ; 0x02039550 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + add r1, r4, #0x0 + bl FUN_0204630C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039564 +FUN_02039564: ; 0x02039564 + push {r4, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0x1 + add r4, r0, #0x0 + bl FUN_02046338 + mov r1, #0x0 + 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 r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xe + bl FUN_02046380 + mov r1, #0x0 + mov r2, #0x40 + blx Call_FillMemWithValue + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203959C +FUN_0203959C: ; 0x0203959C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0xaa + lsl r1, r1, #0x4 + bl FUN_02046338 + mov r2, #0x18 + mov r1, #0x0 +_020395B0: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _020395B0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020395BC +FUN_020395BC: ; 0x020395BC + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x29 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02039438 + strh r4, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x2a + bl FUN_02039438 + strh r6, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x2b + bl FUN_02039438 + strh r7, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x2c + bl FUN_02039438 + add r1, sp, #0x8 + ldrh r1, [r1, #0x10] + strh r1, [r0, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020395F4 +FUN_020395F4: ; 0x020395F4 + ldr r1, _02039610 ; =0x00001388 + cmp r0, r1 + bhs _02039604 + ldr r1, _02039614 ; =0x00000BB7 + sub r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02039604: + sub r1, r1, #0x1 + sub r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + nop +_02039610: .word 0x00001388 +_02039614: .word 0x00000BB7 + + thumb_func_start FUN_02039618 +FUN_02039618: ; 0x02039618 + ldr r1, _02039628 ; =0x00001388 + cmp r0, r1 + blo _02039622 + mov r0, #0x1 + bx lr +_02039622: + mov r0, #0x0 + bx lr + nop +_02039628: .word 0x00001388 + + thumb_func_start FUN_0203962C +FUN_0203962C: ; 0x0203962C + push {r3, lr} + mov r1, #0x9 + bl FUN_0206AC74 + cmp r0, #0x0 + beq _0203963C + mov r0, #0x1 + pop {r3, pc} +_0203963C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02039640 +FUN_02039640: ; 0x02039640 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + mov r1, #0x55 + lsl r1, r1, #0x4 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_020462B8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203965C +FUN_0203965C: ; 0x0203965C + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + mov r1, #0x55 + lsl r1, r1, #0x4 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_020462E4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039678 +FUN_02039678: ; 0x02039678 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + mov r1, #0x55 + lsl r1, r1, #0x4 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0204630C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02039694 +FUN_02039694: ; 0x02039694 + ldr r1, _020396A0 ; =0x00001C66 + sub r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + nop +_020396A0: .word 0x00001C66 + + thumb_func_start FUN_020396A4 +FUN_020396A4: ; 0x020396A4 + mov r1, #0x7d + lsl r1, r1, #0x6 + sub r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + + thumb_func_start FUN_020396B0 +FUN_020396B0: ; 0x020396B0 + push {r4, lr} + ldr r4, _020396E4 ; =0x020F2DB4 + bl FUN_020396A4 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + mov r1, #0x0 + add r2, r4, #0x0 +_020396C0: + ldrh r0, [r2, #0x6] + cmp r3, r0 + beq _020396CE + add r1, r1, #0x1 + add r2, #0x8 + cmp r1, #0xe5 + blo _020396C0 +_020396CE: + cmp r1, #0xe5 + blo _020396DA + bl ErrorHandling + mov r0, #0x0 + pop {r4, pc} +_020396DA: + lsl r0, r1, #0x3 + add r0, r4, r0 + ldrb r0, [r0, #0x3] + pop {r4, pc} + nop +_020396E4: .word 0x020F2DB4 + + thumb_func_start FUN_020396E8 +FUN_020396E8: ; 0x020396E8 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + mov r1, #0x29 + bl FUN_02039300 + add r7, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2a + bl FUN_02039300 + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2b + bl FUN_02039300 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020396A4 + lsl r0, r0, #0x18 + ldr r2, _02039750 ; =0x020F2DB4 + lsr r3, r0, #0x18 + mov r1, #0x0 +_02039718: + ldrh r0, [r2, #0x6] + cmp r3, r0 + beq _02039726 + add r1, r1, #0x1 + add r2, #0x8 + cmp r1, #0xe5 + blo _02039718 +_02039726: + cmp r1, #0xe5 + blo _02039732 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} +_02039732: + lsl r0, r1, #0x3 + ldr r1, _02039750 ; =0x020F2DB4 + ldrh r1, [r1, r0] + strh r1, [r7, #0x0] + ldr r1, _02039750 ; =0x020F2DB4 + add r0, r1, r0 + ldrb r0, [r0, #0x2] + strh r0, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_02039694 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + nop +_02039750: .word 0x020F2DB4 + + thumb_func_start FUN_02039754 +FUN_02039754: ; 0x02039754 + push {r4-r7, lr} + sub sp, #0x24 + str r0, [sp, #0x0] + add r4, r1, #0x0 + mov r6, #0x0 + bl FUN_02034AF8 + add r5, r0, #0x0 + add r2, r5, #0x1 + mov r1, #0x6 + add r0, r4, #0x0 + mul r1, r2 + bl FUN_02016998 + str r0, [sp, #0x1c] + cmp r5, #0x0 + bne _02039786 + mov r2, #0xff + add r1, r0, #0x0 + strb r2, [r1, #0x4] + ldr r2, _02039870 ; =0x0000FFFF + add sp, #0x24 + strh r2, [r1, #0x0] + strh r2, [r1, #0x2] + pop {r4-r7, pc} +_02039786: + ldr r0, [sp, #0x0] + bl FUN_02034AF0 + add r4, r0, #0x0 + bne _020397A0 + ldr r0, [sp, #0x1c] + mov r1, #0xff + strb r1, [r0, #0x4] + ldr r1, _02039870 ; =0x0000FFFF + add sp, #0x24 + strh r1, [r0, #0x0] + strh r1, [r0, #0x2] + pop {r4-r7, pc} +_020397A0: + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055320 + str r0, [sp, #0x18] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0205532C + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + sub r0, r0, #0x7 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + add r0, r0, #0x7 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + sub r0, r0, #0x7 + str r0, [sp, #0x8] + ldr r0, [sp, #0x14] + add r0, r0, #0x6 + str r0, [sp, #0x4] + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bge _020397D6 + add r0, r6, #0x0 + str r0, [sp, #0x10] +_020397D6: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bge _020397E0 + mov r0, #0x0 + str r0, [sp, #0x8] +_020397E0: + add r0, r5, #0x1 + mov r7, #0x0 + str r0, [sp, #0x20] + cmp r0, #0x0 + ble _02039856 + ldr r5, [sp, #0x1c] +_020397EC: + ldrh r0, [r4, #0x2] + cmp r0, #0x2 + bne _0203984C + ldrh r0, [r4, #0x0] + bl FUN_02039694 + add r1, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02039528 + cmp r0, #0x0 + bne _0203984C + ldr r1, [r4, #0x4] + ldr r0, [sp, #0x10] + cmp r1, r0 + blt _0203984C + ldr r0, [sp, #0xc] + cmp r1, r0 + bgt _0203984C + ldr r1, [r4, #0x8] + ldr r0, [sp, #0x8] + cmp r1, r0 + blt _0203984C + ldr r0, [sp, #0x4] + cmp r1, r0 + bgt _0203984C + ldrh r0, [r4, #0x0] + bl FUN_020396B0 + strb r0, [r5, #0x4] + ldr r1, [r4, #0x4] + ldr r0, [sp, #0x18] + sub r1, r0, r1 + mov r0, #0x7 + sub r0, r0, r1 + blx abs + strh r0, [r5, #0x0] + ldr r1, [r4, #0x8] + ldr r0, [sp, #0x14] + sub r1, r0, r1 + mov r0, #0x7 + sub r0, r0, r1 + blx abs + strh r0, [r5, #0x2] + add r5, r5, #0x6 + add r6, r6, #0x1 +_0203984C: + ldr r0, [sp, #0x20] + add r7, r7, #0x1 + add r4, #0x14 + cmp r7, r0 + blt _020397EC +_02039856: + mov r0, #0x6 + add r3, r6, #0x0 + mul r3, r0 + ldr r0, [sp, #0x1c] + mov r1, #0xff + add r2, r0, r3 + strb r1, [r2, #0x4] + ldr r1, _02039870 ; =0x0000FFFF + strh r1, [r0, r3] + strh r1, [r2, #0x2] + add sp, #0x24 + pop {r4-r7, pc} + nop +_02039870: .word 0x0000FFFF + + thumb_func_start FUN_02039874 +FUN_02039874: ; 0x02039874 + ldr r3, _0203987C ; =FUN_02039880 + mov r1, #0x96 + lsl r1, r1, #0x6 + bx r3 + .balign 4 +_0203987C: .word FUN_02039880 + + thumb_func_start FUN_02039880 +FUN_02039880: ; 0x02039880 + push {r4, lr} + bl FUN_02038EB0 + add r4, r0, #0x0 +_02039888: + add r0, r4, #0x0 + bl RunScriptCommand + cmp r0, #0x1 + beq _02039888 + add r0, r4, #0x0 + bl FUN_02038E48 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0203989C +FUN_0203989C: ; 0x0203989C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02034D2C + add r1, r0, #0x0 + bne _020398AE + mov r0, #0x0 + pop {r3-r5, pc} +_020398AE: + cmp r4, #0x1 + bne _020398BC + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02039914 + b _020398C2 +_020398BC: + add r1, r4, #0x0 + bl _020398EC +_020398C2: + add r1, r0, #0x0 + ldr r0, _020398E8 ; =0x0000FFFF + cmp r1, r0 + bne _020398CE + mov r0, #0x0 + pop {r3-r5, pc} +_020398CE: + cmp r4, #0x1 + bne _020398DC + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038C78 + b _020398E2 +_020398DC: + add r0, r5, #0x0 + bl FUN_02039880 +_020398E2: + mov r0, #0x1 + pop {r3-r5, pc} + nop +_020398E8: .word 0x0000FFFF +_020398EC: + ldrb r2, [r0, #0x0] + cmp r2, #0x0 + bne _020398F6 + ldr r0, _02039910 ; =0x0000FFFF + bx lr +_020398F6: + cmp r2, r1 + bne _02039908 + ldrb r1, [r0, #0x1] + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x8 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr +_02039908: + add r0, r0, #0x5 + b _020398EC +_0203990C: ; 0x0203990C + bx lr + nop +_02039910: .word 0x0000FFFF + + thumb_func_start FUN_02039914 +FUN_02039914: ; 0x02039914 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 +_0203991A: + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _02039924 + ldr r0, _0203999C ; =0x0000FFFF + pop {r3-r7, pc} +_02039924: + cmp r0, r2 + bne _02039940 + ldrb r0, [r4, #0x4] + ldrb r2, [r4, #0x2] + ldrb r3, [r4, #0x1] + lsl r1, r0, #0x18 + ldrb r0, [r4, #0x3] + lsl r2, r2, #0x8 + add r2, r3, r2 + lsl r0, r0, #0x10 + add r0, r0, r2 + add r1, r1, r0 + add r0, r4, #0x5 + b _02039944 +_02039940: + add r4, r4, #0x5 + b _0203991A +_02039944: + cmp r1, #0x0 + bne _0203994C + ldr r0, _0203999C ; =0x0000FFFF + pop {r3-r7, pc} +_0203994C: + add r4, r0, r1 +_0203994E: + ldrb r1, [r4, #0x0] + cmp r1, #0x0 + bne _02039958 + ldr r0, _0203999C ; =0x0000FFFF + pop {r3-r7, pc} +_02039958: + ldrb r0, [r4, #0x1] + lsl r0, r0, #0x8 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + bne _02039968 + ldr r0, _0203999C ; =0x0000FFFF + pop {r3-r7, pc} +_02039968: + ldrb r0, [r4, #0x3] + ldrb r2, [r4, #0x2] + lsl r0, r0, #0x8 + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + bl FUN_020394F0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020394F0 + cmp r7, r0 + bne _02039996 + ldrb r0, [r4, #0x5] + ldrb r1, [r4, #0x4] + lsl r0, r0, #0x8 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3-r7, pc} +_02039996: + add r4, r4, #0x6 + b _0203994E + pop {r3-r7, pc} + .balign 4 +_0203999C: .word 0x0000FFFF diff --git a/arm9/asm/unk_02046030.s b/arm9/asm/unk_02046030.s new file mode 100644 index 00000000..30b8ee4c --- /dev/null +++ b/arm9/asm/unk_02046030.s @@ -0,0 +1,142185 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + thumb_func_start FUN_02046030 +FUN_02046030: ; 0x02046030 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0xc + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + strb r0, [r2, #0x0] + strb r0, [r2, #0x1] + strb r0, [r2, #0x2] + strb r0, [r2, #0x3] + strb r0, [r2, #0x4] + strb r0, [r2, #0x5] + strb r0, [r2, #0x6] + strb r0, [r2, #0x7] + strb r0, [r2, #0x8] + strb r0, [r2, #0x9] + strb r0, [r2, #0xa] + strb r0, [r2, #0xb] + ldr r0, [r4, #0x10] + ldr r1, _02046064 ; =FUN_02046068 + bl FUN_0204640C + pop {r4, pc} + nop +_02046064: .word FUN_02046068 + + thumb_func_start FUN_02046068 +FUN_02046068: ; 0x02046068 + push {r4-r6, lr} + sub sp, #0x38 + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + ldrb r1, [r4, #0x8] + cmp r1, #0xb + bls _0204608A + b _020461F8 +_0204608A: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02046096: ; jump table (using 16-bit offset) + .short _020460AE - _02046096 - 2; case 0 + .short _020460D4 - _02046096 - 2; case 1 + .short _020460E2 - _02046096 - 2; case 2 + .short _0204610A - _02046096 - 2; case 3 + .short _02046118 - _02046096 - 2; case 4 + .short _02046150 - _02046096 - 2; case 5 + .short _02046160 - _02046096 - 2; case 6 + .short _0204618A - _02046096 - 2; case 7 + .short _02046198 - _02046096 - 2; case 8 + .short _020461C0 - _02046096 - 2; case 9 + .short _020461CE - _02046096 - 2; case 10 + .short _020461E4 - _02046096 - 2; case 11 +_020460AE: + ldr r0, [r5, #0x38] + bl FUN_02055320 + strh r0, [r4, #0x4] + ldr r0, [r5, #0x38] + bl FUN_0205532C + strh r0, [r4, #0x6] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0206367C + add r0, r6, #0x0 + bl FUN_0204AFC8 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_020460D4: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_020460E2: + bl FUN_0205F1C4 + mov r0, #0xac + str r0, [sp, #0x24] + sub r0, #0xad + str r0, [sp, #0x28] + ldr r0, _02046200 ; =0x0000034F + add r1, sp, #0x24 + str r0, [sp, #0x2c] + ldr r0, _02046204 ; =0x00000231 + str r0, [sp, #0x30] + mov r0, #0x1 + str r0, [sp, #0x34] + add r0, r6, #0x0 + bl FUN_02049160 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_0204610A: + add r0, r6, #0x0 + bl FUN_0204AF84 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_02046118: + ldr r0, [r5, #0x38] + mov r1, #0x1 + bl FUN_02046214 + add r0, r5, #0x0 + bl FUN_02046224 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r3, _02046208 ; =0x0000FFFF + add r0, r6, #0x0 + mov r1, #0x3 + mov r2, #0x11 + bl FUN_0204C1B4 + ldr r0, _0204620C ; =0x00000679 + bl FUN_020054C8 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_02046150: + ldr r0, _02046210 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #0x3 + tst r0, r2 + beq _020461F8 + add r0, r1, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_02046160: + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r3, _02046208 ; =0x0000FFFF + add r0, r6, #0x0 + mov r1, #0x3 + mov r2, #0x10 + bl FUN_0204C1B4 + ldr r0, _0204620C ; =0x00000679 + bl FUN_020054C8 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_0204618A: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_02046198: + bl FUN_0205F1D4 + ldrh r2, [r4, #0x6] + ldrh r1, [r4, #0x4] + mov r0, #0xa4 + str r0, [sp, #0x10] + sub r0, #0xa5 + str r0, [sp, #0x14] + mov r0, #0x0 + str r1, [sp, #0x18] + str r0, [sp, #0x20] + str r2, [sp, #0x1c] + add r0, r6, #0x0 + add r1, sp, #0x10 + bl FUN_02049160 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_020461C0: + add r0, r6, #0x0 + bl FUN_0204AF84 + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_020461CE: + ldr r0, [r5, #0x38] + mov r1, #0x0 + bl FUN_02046214 + add r0, r6, #0x0 + bl FUN_0204B00C + ldrb r0, [r4, #0x8] + add r0, r0, #0x1 + strb r0, [r4, #0x8] + b _020461F8 +_020461E4: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0206367C + add sp, #0x38 + mov r0, #0x1 + pop {r4-r6, pc} +_020461F8: + mov r0, #0x0 + add sp, #0x38 + pop {r4-r6, pc} + nop +_02046200: .word 0x0000034F +_02046204: .word 0x00000231 +_02046208: .word 0x0000FFFF +_0204620C: .word 0x00000679 +_02046210: .word 0x021C48B8 + + thumb_func_start FUN_02046214 +FUN_02046214: ; 0x02046214 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + bl FUN_0205889C + pop {r4, pc} + + thumb_func_start FUN_02046224 +FUN_02046224: ; 0x02046224 + push {r3-r4, lr} + sub sp, #0x14 + add r4, r0, #0x0 + ldr r0, _02046278 ; =0x000008C1 + ldr r1, [r4, #0x20] + bl FUN_0201EEF0 + ldr r0, _0204627C ; =0x000F81B8 + ldr r1, [r4, #0x20] + bl FUN_0201EFE0 + ldr r0, _02046280 ; =0x0350523D + str r0, [sp, #0x8] + ldr r0, _02046284 ; =0x0015EDB7 + str r0, [sp, #0xc] + ldr r0, _02046288 ; =0x023DA40E + str r0, [sp, #0x10] + ldr r1, [r4, #0x20] + add r0, sp, #0x8 + bl FUN_0201F04C + ldr r1, _0204628C ; =0x00000823 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + mov r1, #0x52 + lsl r1, r1, #0x4 + strh r1, [r0, #0x2] + mov r1, #0x0 + strh r1, [r0, #0x4] + ldr r1, [r4, #0x20] + add r0, sp, #0x0 + bl FUN_0201EF90 + mov r0, #0x3 + ldr r1, _02046290 ; =0x0061C000 + ldr r2, [r4, #0x20] + lsl r0, r0, #0xe + bl FUN_0201EC94 + add sp, #0x14 + pop {r3-r4, pc} + nop +_02046278: .word 0x000008C1 +_0204627C: .word 0x000F81B8 +_02046280: .word 0x0350523D +_02046284: .word 0x0015EDB7 +_02046288: .word 0x023DA40E +_0204628C: .word 0x00000823 +_02046290: .word 0x0061C000 + + thumb_func_start FUN_02046294 +FUN_02046294: ; 0x02046294 + mov r0, #0xeb + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_0204629C +FUN_0204629C: ; 0x0204629C + ldr r3, _020462A8 ; =Call_FillMemWithValue + mov r2, #0xeb + mov r1, #0x0 + lsl r2, r2, #0x2 + bx r3 + nop +_020462A8: .word Call_FillMemWithValue + + thumb_func_start FUN_020462AC +FUN_020462AC: ; 0x020462AC + ldr r3, _020462B4 ; =FUN_02022610 + mov r1, #0x4 + bx r3 + nop +_020462B4: .word FUN_02022610 + + thumb_func_start FUN_020462B8 +FUN_020462B8: ; 0x020462B8 + push {r3-r5, lr} + add r4, r1, #0x0 + bl FUN_02046338 + cmp r0, #0x0 + beq _020462DE + lsr r3, r4, #0x1f + lsl r2, r4, #0x1d + ldrb r5, [r0, #0x0] + sub r2, r2, r3 + mov r1, #0x1d + ror r2, r1 + mov r0, #0x1 + add r1, r3, r2 + add r2, r0, #0x0 + lsl r2, r1 + add r1, r5, #0x0 + tst r1, r2 + bne _020462E0 +_020462DE: + mov r0, #0x0 +_020462E0: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020462E4 +FUN_020462E4: ; 0x020462E4 + push {r4-r6, lr} + add r4, r1, #0x0 + bl FUN_02046338 + cmp r0, #0x0 + beq _02046308 + lsr r5, r4, #0x1f + lsl r3, r4, #0x1d + sub r3, r3, r5 + mov r2, #0x1d + ror r3, r2 + mov r6, #0x1 + add r2, r5, r3 + add r3, r6, #0x0 + ldrb r1, [r0, #0x0] + lsl r3, r2 + orr r1, r3 + strb r1, [r0, #0x0] +_02046308: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204630C +FUN_0204630C: ; 0x0204630C + push {r4-r6, lr} + add r4, r1, #0x0 + bl FUN_02046338 + cmp r0, #0x0 + beq _02046334 + lsr r5, r4, #0x1f + lsl r3, r4, #0x1d + sub r3, r3, r5 + mov r2, #0x1d + ror r3, r2 + mov r6, #0x1 + add r2, r5, r3 + add r3, r6, #0x0 + lsl r3, r2 + mov r2, #0xff + ldrb r1, [r0, #0x0] + eor r2, r3 + and r1, r2 + strb r1, [r0, #0x0] +_02046334: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02046338 +FUN_02046338: ; 0x02046338 + push {r3-r5, lr} + add r5, r0, #0x0 + cmp r1, #0x0 + bne _02046344 + mov r0, #0x0 + pop {r3-r5, pc} +_02046344: + mov r0, #0x1 + lsl r0, r0, #0xe + cmp r1, r0 + bhs _02046364 + mov r0, #0x5b + lsr r4, r1, #0x3 + lsl r0, r0, #0x2 + cmp r4, r0 + blt _0204635A + bl ErrorHandling +_0204635A: + mov r0, #0x9 + lsl r0, r0, #0x6 + add r0, r5, r0 + add r0, r0, r4 + pop {r3-r5, pc} +_02046364: + sub r1, r1, r0 + asr r0, r1, #0x2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r4, r0, #0x3 + cmp r4, #0x8 + blt _02046376 + bl ErrorHandling +_02046376: + ldr r0, _0204637C ; =0x021C5A14 + add r0, r0, r4 + pop {r3-r5, pc} + .balign 4 +_0204637C: .word 0x021C5A14 + + thumb_func_start FUN_02046380 +FUN_02046380: ; 0x02046380 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x1 + lsl r0, r0, #0xe + sub r4, r1, r0 + mov r0, #0x12 + lsl r0, r0, #0x4 + cmp r4, r0 + blt _02046396 + bl ErrorHandling +_02046396: + lsl r0, r4, #0x1 + add r0, r5, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_0204639C +FUN_0204639C: ; 0x0204639C + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x20 + add r6, r1, #0x0 + add r1, r0, #0x0 + add r7, r2, #0x0 + bl FUN_020169D8 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x0] + str r6, [r4, #0x4] + str r0, [r4, #0x8] + str r7, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + mov r0, #0x20 + mov r1, #0x4 + str r5, [r4, #0x18] + bl FUN_020169D8 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020463CC +FUN_020463CC: ; 0x020463CC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r0, #0x0 + beq _020463DE + bl ErrorHandling +_020463DE: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0204639C + str r0, [r5, #0x10] + pop {r4-r6, pc} + + thumb_func_start FUN_020463EC +FUN_020463EC: ; 0x020463EC + push {r4, lr} + add r4, r0, #0x0 + str r1, [r4, #0x4] + mov r0, #0x0 + str r0, [r4, #0x8] + str r2, [r4, #0xc] + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _02046400 + beq _0204640A +_02046400: + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x10] + str r0, [r4, #0x14] +_0204640A: + pop {r4, pc} + + thumb_func_start FUN_0204640C +FUN_0204640C: ; 0x0204640C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x18] + bl FUN_0204639C + str r4, [r0, #0x0] + ldr r1, [r4, #0x18] + str r0, [r1, #0x10] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02046420 +FUN_02046420: ; 0x02046420 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + cmp r0, #0x0 + bne _0204642E + mov r0, #0x0 + pop {r3-r5, pc} +_0204642E: + ldr r1, [r0, #0x4] + blx r1 + cmp r0, #0x1 + bne _02046466 +_02046436: + ldr r0, [r5, #0x10] + ldr r4, [r0, #0x0] + ldr r0, [r0, #0x14] + cmp r0, #0x0 + beq _02046444 + bl FUN_02016A18 +_02046444: + ldr r0, [r5, #0x10] + ldr r0, [r0, #0x1c] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_02016A18 + str r4, [r5, #0x10] + cmp r4, #0x0 + bne _0204645C + mov r0, #0x1 + pop {r3-r5, pc} +_0204645C: + ldr r0, [r5, #0x10] + ldr r1, [r0, #0x4] + blx r1 + cmp r0, #0x1 + beq _02046436 +_02046466: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204646C +FUN_0204646C: ; 0x0204646C + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _02046476 + mov r0, #0x1 + bx lr +_02046476: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0204647C +FUN_0204647C: ; 0x0204647C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + bne _02046492 + add r0, r4, #0x0 + bl FUN_020373C4 + cmp r0, #0x0 + beq _02046496 +_02046492: + mov r0, #0x1 + pop {r4, pc} +_02046496: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204649C +FUN_0204649C: ; 0x0204649C + ldr r3, _020464A0 ; =FUN_02037350 + bx r3 + .balign 4 +_020464A0: .word FUN_02037350 + + thumb_func_start FUN_020464A4 +FUN_020464A4: ; 0x020464A4 + push {r3, lr} + bl FUN_020373AC + cmp r0, #0x0 + beq _020464B2 + mov r0, #0x1 + pop {r3, pc} +_020464B2: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020464B8 +FUN_020464B8: ; 0x020464B8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020464D6 + cmp r0, #0x1 + beq _020464E8 + b _020464FC +_020464D6: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_020373D4 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020464FC +_020464E8: + add r0, r5, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _020464FC + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_020464FC: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02046500 +FUN_02046500: ; 0x02046500 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x20 + mov r1, #0xc + add r4, r2, #0x0 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r5, [r2, #0x4] + ldr r1, _02046524 ; =FUN_020464B8 + add r0, r6, #0x0 + str r4, [r2, #0x8] + bl FUN_0204640C + pop {r4-r6, pc} + .balign 4 +_02046524: .word FUN_020464B8 + + thumb_func_start FUN_02046528 +FUN_02046528: ; 0x02046528 + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start FUN_0204652C +FUN_0204652C: ; 0x0204652C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_02046530 +FUN_02046530: ; 0x02046530 + add r0, #0x8 + bx lr + + thumb_func_start FUN_02046534 +FUN_02046534: ; 0x02046534 + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0204653C +FUN_0204653C: ; 0x0204653C + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02046562 + cmp r0, #0x1 + beq _02046572 + b _02046580 +_02046562: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0203780C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046580 +_02046572: + add r0, r5, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _02046580 + mov r0, #0x1 + pop {r4-r6, pc} +_02046580: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02046584 +FUN_02046584: ; 0x02046584 + ldr r3, _0204658C ; =FUN_0204640C + add r2, r1, #0x0 + ldr r1, _02046590 ; =FUN_0204653C + bx r3 + .balign 4 +_0204658C: .word FUN_0204640C +_02046590: .word FUN_0204653C + + thumb_func_start FUN_02046594 +FUN_02046594: ; 0x02046594 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x14 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_020169D8 + str r4, [r0, #0x0] + cmp r4, #0x0 + beq _020465B0 + mov r1, #0x0 + str r1, [r4, #0x0] +_020465B0: + str r6, [r0, #0x4] + str r7, [r0, #0x8] + str r5, [r0, #0x10] + pop {r3-r7, pc} + + thumb_func_start FUN_020465B8 +FUN_020465B8: ; 0x020465B8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x10] + bl FUN_02047964 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020465CC +FUN_020465CC: ; 0x020465CC + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _020465D8 + ldr r1, [r0, #0x10] + ldr r1, [r1, #0x14] + str r1, [r2, #0x0] +_020465D8: + ldr r0, [r0, #0x10] + ldr r3, _020465E0 ; =FUN_020480B8 + ldr r0, [r0, #0x14] + bx r3 + .balign 4 +_020465E0: .word FUN_020480B8 + + thumb_func_start FUN_020465E4 +FUN_020465E4: ; 0x020465E4 + push {r3, lr} + mov r2, #0x2 + ldr r3, [r0, #0x0] + lsl r2, r2, #0x1e + tst r2, r3 + bne _020465F4 + bl FUN_02047F38 +_020465F4: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020465F8 +FUN_020465F8: ; 0x020465F8 + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x5 + bhi _020466F8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02046624: ; jump table (using 16-bit offset) + .short _02046630 - _02046624 - 2; case 0 + .short _02046648 - _02046624 - 2; case 1 + .short _02046656 - _02046624 - 2; case 2 + .short _02046666 - _02046624 - 2; case 3 + .short _020466DA - _02046624 - 2; case 4 + .short _020466EE - _02046624 - 2; case 5 +_02046630: + ldr r0, [r6, #0x34] + bl FUN_02058780 + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r7, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020466F8 +_02046648: + add r0, r7, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020466F8 +_02046656: + ldr r1, [r5, #0x10] + add r0, r7, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020466F8 +_02046666: + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + bl FUN_020465E4 + ldr r2, [r5, #0x10] + ldr r1, [r2, #0x0] + cmp r1, #0x0 + beq _02046682 + mov r0, #0x1 + lsl r0, r0, #0x8 + cmp r1, r0 + beq _02046682 + cmp r1, #0x4a + bne _02046690 +_02046682: + mov r1, #0x4d + lsl r1, r1, #0x2 + ldr r1, [r2, r1] + ldr r2, [r2, #0x14] + add r0, r6, #0x0 + bl FUN_02061080 +_02046690: + add r0, r5, #0x0 + bl FUN_020465CC + cmp r0, #0x0 + bne _020466A4 + add r0, r5, #0x0 + bl FUN_020465B8 + mov r0, #0x1 + pop {r3-r7, pc} +_020466A4: + ldr r0, [r6, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x0 + beq _020466BC + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + bl FUN_02085140 +_020466BC: + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_020472F4 + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_020473CC + add r0, r7, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020466F8 +_020466DA: + ldr r0, [r6, #0x34] + bl FUN_020587B0 + add r0, r7, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020466F8 +_020466EE: + add r0, r5, #0x0 + bl FUN_020465B8 + mov r0, #0x1 + pop {r3-r7, pc} +_020466F8: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020466FC +FUN_020466FC: ; 0x020466FC + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r3, [sp, #0x8] + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _02046718 ; =FUN_020465F8 + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + .balign 4 +_02046718: .word FUN_020465F8 + + thumb_func_start FUN_0204671C +FUN_0204671C: ; 0x0204671C + push {r3, lr} + mov r2, #0xf + and r0, r2 + cmp r0, #0x6 + bhi _02046754 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02046732: ; jump table (using 16-bit offset) + .short _02046754 - _02046732 - 2; case 0 + .short _02046740 - _02046732 - 2; case 1 + .short _0204674A - _02046732 - 2; case 2 + .short _02046754 - _02046732 - 2; case 3 + .short _02046754 - _02046732 - 2; case 4 + .short _0204674A - _02046732 - 2; case 5 + .short _02046740 - _02046732 - 2; case 6 +_02046740: + ldr r0, [r1, #0xc] + mov r1, #0x1 + bl FUN_0202E25C + pop {r3, pc} +_0204674A: + ldr r0, [r1, #0xc] + sub r2, #0x10 + add r1, r2, #0x0 + bl FUN_0202E25C +_02046754: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02046758 +FUN_02046758: ; 0x02046758 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x5 + bhi _020467F6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02046784: ; jump table (using 16-bit offset) + .short _02046790 - _02046784 - 2; case 0 + .short _020467A2 - _02046784 - 2; case 1 + .short _020467B0 - _02046784 - 2; case 2 + .short _020467C0 - _02046784 - 2; case 3 + .short _020467EC - _02046784 - 2; case 4 + .short _020467EC - _02046784 - 2; case 5 +_02046790: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r6, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020467F6 +_020467A2: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020467F6 +_020467B0: + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020467F6 +_020467C0: + ldr r0, [r5, #0x10] + add r1, r7, #0x0 + ldr r0, [r0, #0x14] + bl FUN_0204671C + ldr r0, [r5, #0x10] + add r1, r7, #0x0 + bl FUN_02047FA4 + ldr r0, [r7, #0xc] + bl FUN_02029FC8 + mov r1, #0x15 + bl FUN_0202A170 + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020467F6 +_020467EC: + add r0, r5, #0x0 + bl FUN_020465B8 + mov r0, #0x1 + pop {r3-r7, pc} +_020467F6: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020467FC +FUN_020467FC: ; 0x020467FC + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02046826 + cmp r0, #0x1 + beq _02046844 + cmp r0, #0x2 + beq _0204686A + b _02046874 +_02046826: + ldr r1, [r5, #0x8] + mov r0, #0x5 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x1 + bl FUN_0200433C + ldr r1, [r5, #0x10] + add r0, r7, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046874 +_02046844: + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + ldr r0, [r0, #0x14] + bl FUN_0204671C + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + bl FUN_02047FA4 + ldr r0, [r6, #0xc] + bl FUN_02029FC8 + mov r1, #0x15 + bl FUN_0202A170 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046874 +_0204686A: + add r0, r5, #0x0 + bl FUN_020465B8 + mov r0, #0x1 + pop {r3-r7, pc} +_02046874: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02046878 +FUN_02046878: ; 0x02046878 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x5 + bhi _02046922 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020468A4: ; jump table (using 16-bit offset) + .short _020468B0 - _020468A4 - 2; case 0 + .short _020468C2 - _020468A4 - 2; case 1 + .short _020468D0 - _020468A4 - 2; case 2 + .short _020468E0 - _020468A4 - 2; case 3 + .short _0204690A - _020468A4 - 2; case 4 + .short _02046918 - _020468A4 - 2; case 5 +_020468B0: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r6, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046922 +_020468C2: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046922 +_020468D0: + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046922 +_020468E0: + ldr r0, [r5, #0x10] + add r1, r7, #0x0 + bl FUN_02047FA4 + mov r1, #0x4e + ldr r2, [r5, #0x10] + lsl r1, r1, #0x2 + add r0, r7, #0x0 + add r1, r2, r1 + bl FUN_02060044 + add r0, r5, #0x0 + bl FUN_020465CC + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046922 +_0204690A: + add r0, r6, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046922 +_02046918: + add r0, r5, #0x0 + bl FUN_020465B8 + mov r0, #0x1 + pop {r3-r7, pc} +_02046922: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02046928 +FUN_02046928: ; 0x02046928 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r3, [sp, #0x8] + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _02046944 ; =FUN_02046878 + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + .balign 4 +_02046944: .word FUN_02046878 + + thumb_func_start FUN_02046948 +FUN_02046948: ; 0x02046948 + push {r3-r7, lr} + add r4, r1, #0x0 + add r7, r0, #0x0 + add r5, r2, #0x0 + bl FUN_02046528 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02244558 + add r4, r0, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + str r5, [sp, #0x0] + bl FUN_02046928 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204697C +FUN_0204697C: ; 0x0204697C + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x14 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_020169D8 + str r4, [r0, #0xc] + cmp r4, #0x0 + beq _02046998 + mov r1, #0x0 + str r1, [r4, #0x0] +_02046998: + str r6, [r0, #0x4] + str r7, [r0, #0x8] + str r5, [r0, #0x10] + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r3-r7, pc} + + thumb_func_start FUN_020469A4 +FUN_020469A4: ; 0x020469A4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x10] + bl FUN_02047964 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020469B8 +FUN_020469B8: ; 0x020469B8 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x0 + beq _020469F2 + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _02046A18 ; =FUN_02046C1C + add r0, r5, #0x0 + bl FUN_020463CC + pop {r4-r6, pc} +_020469F2: + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0204697C + add r2, r0, #0x0 + ldr r1, _02046A1C ; =FUN_02046A88 + add r0, r5, #0x0 + bl FUN_020463CC + pop {r4-r6, pc} + .balign 4 +_02046A18: .word FUN_02046C1C +_02046A1C: .word FUN_02046A88 + + thumb_func_start FUN_02046A20 +FUN_02046A20: ; 0x02046A20 + push {r4-r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x0 + beq _02046A5A + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _02046A80 ; =FUN_02046C1C + add r0, r5, #0x0 + bl FUN_020463EC + pop {r4-r6, pc} +_02046A5A: + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_0204697C + add r2, r0, #0x0 + ldr r1, _02046A84 ; =FUN_02046A88 + add r0, r5, #0x0 + bl FUN_020463EC + pop {r4-r6, pc} + .balign 4 +_02046A80: .word FUN_02046C1C +_02046A84: .word FUN_02046A88 + + thumb_func_start FUN_02046A88 +FUN_02046A88: ; 0x02046A88 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x6 + bls _02046AA2 + b _02046C12 +_02046AA2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02046AAE: ; jump table (using 16-bit offset) + .short _02046ABC - _02046AAE - 2; case 0 + .short _02046AE0 - _02046AAE - 2; case 1 + .short _02046AEE - _02046AAE - 2; case 2 + .short _02046AFE - _02046AAE - 2; case 3 + .short _02046BAE - _02046AAE - 2; case 4 + .short _02046BC4 - _02046AAE - 2; case 5 + .short _02046BF4 - _02046AAE - 2; case 6 +_02046ABC: + ldr r0, [r5, #0x34] + bl FUN_02058780 + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x7 + bl FUN_0202A0E8 + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r6, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046C12 +_02046AE0: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046C12 +_02046AEE: + ldr r1, [r4, #0x10] + add r0, r6, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046C12 +_02046AFE: + ldr r0, [r4, #0x10] + add r1, r5, #0x0 + bl FUN_020465E4 + mov r1, #0x4d + ldr r2, [r4, #0x10] + lsl r1, r1, #0x2 + ldr r1, [r2, r1] + ldr r2, [r2, #0x14] + add r0, r5, #0x0 + bl FUN_02061080 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x14] + bl FUN_020480B8 + cmp r0, #0x0 + bne _02046B3E + add r0, r4, #0x0 + bl FUN_020469A4 + add r5, #0x90 + ldr r0, [r5, #0x0] + bl FUN_0205DD40 + ldr r1, _02046C18 ; =FUN_0204837C + add r0, r6, #0x0 + mov r2, #0x0 + bl FUN_020463EC + mov r0, #0x0 + pop {r4-r6, pc} +_02046B3E: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x0 + beq _02046B56 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + bl FUN_02085140 +_02046B56: + ldr r1, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_020472F4 + ldr r1, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_020473CC + add r0, r5, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205E128 + cmp r0, #0x0 + beq _02046BA0 + add r0, r5, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205E0A4 + cmp r0, #0x0 + beq _02046B98 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x14] + cmp r0, #0x1 + beq _02046BA0 + cmp r0, #0x4 + beq _02046BA0 + add r5, #0x90 + ldr r0, [r5, #0x0] + bl FUN_0205DD40 + b _02046BA0 +_02046B98: + add r5, #0x90 + ldr r0, [r5, #0x0] + bl FUN_0205DD40 +_02046BA0: + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046C12 +_02046BAE: + ldr r1, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_02248724 + add r0, r6, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046C12 +_02046BC4: + add r0, r5, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205E128 + cmp r0, #0x0 + beq _02046BEC + ldr r1, [r4, #0x10] + add r2, r5, #0x0 + add r2, #0x90 + ldr r1, [r1, #0x14] + ldr r2, [r2, #0x0] + add r0, r5, #0x0 + bl FUN_0205DED4 + add r0, r5, #0x0 + add r5, #0x90 + ldr r1, [r5, #0x0] + bl FUN_0205DF44 +_02046BEC: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046C12 +_02046BF4: + add r0, r5, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DF9C + cmp r0, #0x0 + beq _02046C12 + ldr r0, [r5, #0x34] + bl FUN_020587B0 + add r0, r4, #0x0 + bl FUN_020469A4 + mov r0, #0x1 + pop {r4-r6, pc} +_02046C12: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02046C18: .word FUN_0204837C + + thumb_func_start FUN_02046C1C +FUN_02046C1C: ; 0x02046C1C + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_02034E30 + bl FUN_02034E24 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + cmp r0, #0x7 + bls _02046C4C + b _02046DA0 +_02046C4C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02046C58: ; jump table (using 16-bit offset) + .short _02046C68 - _02046C58 - 2; case 0 + .short _02046C8C - _02046C58 - 2; case 1 + .short _02046C9A - _02046C58 - 2; case 2 + .short _02046CAA - _02046C58 - 2; case 3 + .short _02046D0E - _02046C58 - 2; case 4 + .short _02046D1C - _02046C58 - 2; case 5 + .short _02046D30 - _02046C58 - 2; case 6 + .short _02046D94 - _02046C58 - 2; case 7 +_02046C68: + ldr r0, [r6, #0x34] + bl FUN_02058780 + ldr r0, [r6, #0xc] + bl FUN_02029FC8 + mov r1, #0x7 + bl FUN_0202A0E8 + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r7, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046C8C: + add r0, r7, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046C9A: + ldr r1, [r5, #0x10] + add r0, r7, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046CAA: + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + bl FUN_020465E4 + ldr r0, [r5, #0x10] + ldr r0, [r0, #0x14] + cmp r0, #0x4 + bne _02046CD4 + ldr r0, [r6, #0xc] + bl FUN_02022504 + str r0, [sp, #0x4] + ldr r0, [r5, #0x10] + mov r1, #0x0 + ldr r0, [r0, #0x8] + bl FUN_0206B9B0 + add r1, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02060FE0 +_02046CD4: + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_020472F4 + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02046CFE + ldr r0, [r5, #0x10] + ldr r0, [r0, #0x14] + cmp r0, #0x4 + beq _02046CFE + ldr r0, [r6, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02049160 +_02046CFE: + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_020473CC + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046D0E: + add r0, r7, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046D1C: + ldr r0, [r6, #0x34] + bl FUN_020587B0 + add r0, r7, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046D30: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02046D5C + ldr r0, [r5, #0x10] + ldr r0, [r0, #0x14] + cmp r0, #0x4 + bne _02046D4E + mov r2, #0x0 + ldr r1, _02046DA8 ; =0x00002262 + add r0, r7, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + b _02046D8C +_02046D4E: + mov r2, #0x0 + ldr r1, _02046DAC ; =0x00002269 + add r0, r7, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + b _02046D8C +_02046D5C: + ldr r0, [r6, #0xc] + bl FUN_02022510 + str r0, [sp, #0x8] + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + add r5, r0, #0x0 + ldr r0, [sp, #0x8] + bl FUN_0206B334 + cmp r0, #0x12 + bne _02046D8C + add r0, r5, #0x0 + bl FUN_0206B9AC + cmp r0, #0x6 + bne _02046D8C + mov r2, #0x0 + ldr r1, _02046DB0 ; =0x00002276 + add r0, r7, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 +_02046D8C: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046DA0 +_02046D94: + add r0, r5, #0x0 + bl FUN_020465B8 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02046DA0: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_02046DA8: .word 0x00002262 +_02046DAC: .word 0x00002269 +_02046DB0: .word 0x00002276 + + thumb_func_start FUN_02046DB4 +FUN_02046DB4: ; 0x02046DB4 + push {r3-r7, lr} + add r7, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD40 + mov r0, #0xb + mov r1, #0x0 + bl FUN_020476CC + add r1, r5, #0x0 + add r4, r0, #0x0 + bl FUN_02047BB0 + mov r0, #0x15 + mov r1, #0x0 + lsl r0, r0, #0x4 + str r1, [r4, r0] + add r0, r0, #0x4 + str r1, [r4, r0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0223CCDC + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x7 + bl FUN_0202A0E8 + add r0, r4, #0x0 + bl FUN_020475A0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r3, r0, #0x0 + add r0, r7, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + str r6, [sp, #0x0] + bl FUN_020466FC + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02046E18 +FUN_02046E18: ; 0x02046E18 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x4] + add r7, r1, #0x0 + str r2, [sp, #0x8] + add r6, r3, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD40 + mov r0, #0xb + mov r1, #0x0 + bl FUN_020476CC + add r1, r5, #0x0 + add r4, r0, #0x0 + bl FUN_02047BB0 + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + add r1, r7, #0x0 + add r3, r4, #0x0 + bl FUN_0223CD7C + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _02046E60 + mov r1, #0x63 + lsl r1, r1, #0x2 + ldr r2, [r4, r1] + mov r0, #0x8 + orr r0, r2 + str r0, [r4, r1] +_02046E60: + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x7 + bl FUN_0202A0E8 + add r0, r4, #0x0 + bl FUN_020475A0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r3, r0, #0x0 + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + add r2, r5, #0x0 + str r6, [sp, #0x0] + bl FUN_020466FC + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02046E8C +FUN_02046E8C: ; 0x02046E8C + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x6 + bhi _02046F6C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02046EB8: ; jump table (using 16-bit offset) + .short _02046EC6 - _02046EB8 - 2; case 0 + .short _02046EEA - _02046EB8 - 2; case 1 + .short _02046EF8 - _02046EB8 - 2; case 2 + .short _02046F08 - _02046EB8 - 2; case 3 + .short _02046F28 - _02046EB8 - 2; case 4 + .short _02046F36 - _02046EB8 - 2; case 5 + .short _02046F4A - _02046EB8 - 2; case 6 +_02046EC6: + ldr r0, [r6, #0x34] + bl FUN_02058780 + ldr r0, [r6, #0xc] + bl FUN_02029FC8 + mov r1, #0x7 + bl FUN_0202A0E8 + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r7, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046F6C +_02046EEA: + add r0, r7, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046F6C +_02046EF8: + ldr r1, [r5, #0x10] + add r0, r7, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046F6C +_02046F08: + ldr r0, [r5, #0x10] + add r1, r6, #0x0 + bl FUN_020465E4 + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_0204BAA0 + ldr r1, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_020472F4 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046F6C +_02046F28: + add r0, r7, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046F6C +_02046F36: + ldr r0, [r6, #0x34] + bl FUN_020587B0 + add r0, r7, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02046F6C +_02046F4A: + add r0, r5, #0x0 + bl FUN_020465B8 + add r0, r6, #0x0 + bl FUN_0204BAB0 + cmp r0, #0x0 + bne _02046F68 + add r0, r7, #0x0 + mov r1, #0x3 + mov r2, #0x0 + bl FUN_02038D10 + mov r0, #0x0 + pop {r3-r7, pc} +_02046F68: + mov r0, #0x1 + pop {r3-r7, pc} +_02046F6C: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02046F70 +FUN_02046F70: ; 0x02046F70 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _02046F9C ; =FUN_02046E8C + add r0, r5, #0x0 + bl FUN_020463CC + pop {r4-r6, pc} + .balign 4 +_02046F9C: .word FUN_02046E8C + + thumb_func_start FUN_02046FA0 +FUN_02046FA0: ; 0x02046FA0 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x4] + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x0 + bl FUN_020476CC + add r4, r0, #0x0 + add r1, r5, #0x0 + bl FUN_02047BB0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + add r3, r4, #0x0 + bl FUN_0223CD7C + mov r0, #0x63 + mov r1, #0x1 + lsl r0, r0, #0x2 + str r1, [r4, r0] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x7 + bl FUN_0202A0E8 + add r0, r4, #0x0 + bl FUN_020475A0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r3, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_020466FC + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02047004 +FUN_02047004: ; 0x02047004 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x6 + bhi _020470A6 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02047030: ; jump table (using 16-bit offset) + .short _0204703E - _02047030 - 2; case 0 + .short _02047056 - _02047030 - 2; case 1 + .short _02047064 - _02047030 - 2; case 2 + .short _02047074 - _02047030 - 2; case 3 + .short _0204707A - _02047030 - 2; case 4 + .short _02047088 - _02047030 - 2; case 5 + .short _0204709C - _02047030 - 2; case 6 +_0204703E: + ldr r0, [r7, #0x34] + bl FUN_02058780 + ldr r1, [r6, #0x4] + ldr r2, [r6, #0x8] + add r0, r5, #0x0 + bl FUN_0204AEF8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020470A6 +_02047056: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020470A6 +_02047064: + ldr r1, [r6, #0x10] + add r0, r5, #0x0 + bl FUN_02046584 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020470A6 +_02047074: + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020470A6 +_0204707A: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020470A6 +_02047088: + ldr r0, [r7, #0x34] + bl FUN_020587B0 + add r0, r5, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020470A6 +_0204709C: + add r0, r6, #0x0 + bl FUN_020465B8 + mov r0, #0x1 + pop {r3-r7, pc} +_020470A6: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020470AC +FUN_020470AC: ; 0x020470AC + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r1, r0, #0x0 + mov r0, #0xb + bl FUN_02047814 + add r4, r0, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _020470E4 ; =FUN_02047004 + add r0, r5, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + nop +_020470E4: .word FUN_02047004 + + thumb_func_start FUN_020470E8 +FUN_020470E8: ; 0x020470E8 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x4] + add r6, r1, #0x0 + add r5, r2, #0x0 + str r3, [sp, #0x8] + bl FUN_02046528 + add r7, r0, #0x0 + cmp r5, #0x0 + beq _02047110 + cmp r6, r5 + beq _02047110 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _0204710C + mov r4, #0x13 + b _0204711A +_0204710C: + mov r4, #0x4b + b _0204711A +_02047110: + cmp r6, r5 + bne _02047118 + mov r4, #0x3 + b _0204711A +_02047118: + mov r4, #0x1 +_0204711A: + add r0, r7, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205DD40 + mov r0, #0xb + add r1, r4, #0x0 + bl FUN_020476CC + add r4, r0, #0x0 + add r1, r7, #0x0 + bl FUN_02047BB0 + str r6, [r4, #0x1c] + ldr r0, [sp, #0x8] + str r5, [r4, #0x24] + str r0, [r4, #0x20] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x20] + add r0, r4, #0x0 + bl FUN_0206ABC4 + ldr r0, [r7, #0xc] + bl FUN_02029FC8 + mov r1, #0x8 + bl FUN_0202A0E8 + add r0, r4, #0x0 + bl FUN_020475A0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r3, r0, #0x0 + ldr r0, [sp, #0x24] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r2, r5, #0x0 + bl FUN_020466FC + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02047174 +FUN_02047174: ; 0x02047174 + push {r3-r7, lr} + add r5, r2, #0x0 + add r7, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + mov r0, #0xb + add r1, r5, #0x0 + bl FUN_020476CC + add r5, r0, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02047F1C + add r0, r5, #0x0 + bl FUN_020475A0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _020471BC ; =FUN_02046758 + add r0, r7, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + nop +_020471BC: .word FUN_02046758 + + thumb_func_start FUN_020471C0 +FUN_020471C0: ; 0x020471C0 + push {r3-r7, lr} + str r0, [sp, #0x0] + add r5, r1, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + cmp r4, #0x0 + beq _020471DE + mov r0, #0xb + mov r1, #0x5 + bl FUN_020476CC + b _020471E6 +_020471DE: + mov r0, #0xb + mov r1, #0x7 + bl FUN_020476CC +_020471E6: + add r4, r0, #0x0 + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02047BC0 + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r1, _0204721C ; =FUN_020467FC + str r5, [r2, #0xc] + bl FUN_0204640C + pop {r3-r7, pc} + nop +_0204721C: .word FUN_020467FC + + thumb_func_start FUN_02047220 +FUN_02047220: ; 0x02047220 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02047246 + cmp r0, #0x1 + beq _02047258 + b _02047262 +_02047246: + ldr r1, _02047268 ; =FUN_02046758 + add r0, r5, #0x0 + add r2, r7, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02047262 +_02047258: + add r0, r6, #0x0 + bl FUN_0204FF5C + mov r0, #0x1 + pop {r3-r7, pc} +_02047262: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_02047268: .word FUN_02046758 + + thumb_func_start FUN_0204726C +FUN_0204726C: ; 0x0204726C + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + add r1, r2, #0x0 + bl FUN_020476CC + add r4, r0, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_02047F1C + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _020472AC ; =FUN_02047220 + add r0, r5, #0x0 + bl FUN_020463CC + pop {r4-r6, pc} + nop +_020472AC: .word FUN_02047220 + + thumb_func_start FUN_020472B0 +FUN_020472B0: ; 0x020472B0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + add r1, r2, #0x0 + bl FUN_020476CC + add r4, r0, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + bl FUN_02047D48 + add r0, r4, #0x0 + bl FUN_020475A0 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020475B0 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x0 + bl FUN_02046594 + add r2, r0, #0x0 + ldr r1, _020472F0 ; =FUN_02047220 + add r0, r5, #0x0 + bl FUN_020463CC + pop {r4-r6, pc} + .balign 4 +_020472F0: .word FUN_02047220 + + thumb_func_start FUN_020472F4 +FUN_020472F4: ; 0x020472F4 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r1, #0x0] + mov r3, #0x4 + ldr r2, [r1, #0x14] + tst r3, r0 + bne _020473C8 + mov r3, #0x80 + add r5, r0, #0x0 + tst r5, r3 + bne _020473C8 + cmp r0, #0x0 + beq _02047318 + add r3, #0x80 + cmp r0, r3 + beq _02047318 + cmp r0, #0x4a + bne _02047364 +_02047318: + cmp r2, #0x1 + bne _0204732A + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + mov r1, #0x8 + bl FUN_0202A170 + pop {r3-r5, pc} +_0204732A: + cmp r2, #0x4 + bne _020473C8 + ldr r0, [r1, #0x8] + mov r1, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x0 + mov r0, #0x0 + bl FUN_0206BB48 + cmp r0, #0x0 + ldr r0, [r4, #0xc] + beq _02047358 + bl FUN_02029FC8 + mov r1, #0x9 + bl FUN_0202A170 + pop {r3-r5, pc} +_02047358: + bl FUN_02029FC8 + mov r1, #0xa + bl FUN_0202A170 + pop {r3-r5, pc} +_02047364: + mov r3, #0x1 + tst r3, r0 + bne _02047370 + mov r3, #0x10 + tst r3, r0 + beq _02047382 +_02047370: + cmp r2, #0x1 + bne _020473C8 + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + mov r1, #0xb + bl FUN_0202A170 + pop {r3-r5, pc} +_02047382: + mov r3, #0x20 + add r5, r0, #0x0 + tst r5, r3 + bne _02047390 + lsl r3, r3, #0x4 + tst r0, r3 + beq _020473C8 +_02047390: + cmp r2, #0x4 + bne _020473C8 + ldr r0, [r1, #0x8] + mov r1, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x0 + mov r0, #0x0 + bl FUN_0206BB48 + cmp r0, #0x0 + ldr r0, [r4, #0xc] + beq _020473BE + bl FUN_02029FC8 + mov r1, #0x9 + bl FUN_0202A170 + pop {r3-r5, pc} +_020473BE: + bl FUN_02029FC8 + mov r1, #0xa + bl FUN_0202A170 +_020473C8: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020473CC +FUN_020473CC: ; 0x020473CC + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x4 + ldr r1, [r4, #0x14] + tst r2, r0 + bne _020473EC + mov r3, #0x80 + add r2, r0, #0x0 + tst r2, r3 + bne _020473EC + lsl r2, r3, #0x2 + tst r2, r0 + beq _020473EE +_020473EC: + b _020474FC +_020473EE: + cmp r0, #0x0 + beq _02047400 + add r3, #0x80 + cmp r0, r3 + beq _02047400 + cmp r0, #0x4a + beq _02047400 + cmp r0, #0x20 + bne _020474D2 +_02047400: + cmp r1, #0x1 + bne _02047470 + add r0, r5, #0x0 + add r0, #0x76 + ldrh r0, [r0, #0x0] + add r1, r0, #0x1 + add r0, r5, #0x0 + add r0, #0x76 + strh r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x76 + ldrh r0, [r0, #0x0] + cmp r0, #0x5 + blo _020474FC + ldr r0, [r4, #0x8] + mov r1, #0x0 + bl FUN_0206B9B0 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02023918 + str r0, [sp, #0x4] + add r0, r6, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r3, #0xb + str r3, [sp, #0x0] + lsl r3, r3, #0x5 + ldr r3, [r4, r3] + lsl r1, r7, #0x10 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x4] + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0202920C + add r5, #0x98 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x2 + bl FUN_02028AD4 + add sp, #0xc + pop {r4-r7, pc} +_02047470: + cmp r1, #0x4 + bne _020474FC + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + lsl r0, r0, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x4] + bl FUN_0206B9B0 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02023918 + str r0, [sp, #0x8] + add r0, r6, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r3, #0xb + str r3, [sp, #0x0] + lsl r3, r3, #0x5 + ldr r3, [r4, r3] + lsl r1, r7, #0x10 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + ldr r0, [sp, #0x8] + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0202918C + add r5, #0x98 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x2 + bl FUN_02028AD4 + add sp, #0xc + pop {r4-r7, pc} +_020474D2: + mov r2, #0x1 + tst r2, r0 + bne _020474DE + mov r2, #0x10 + tst r0, r2 + beq _020474FC +_020474DE: + cmp r1, #0x1 + bne _020474FC + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + ldr r2, [r4, #0x1c] + add r0, #0x98 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r0, #0x0] + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #0xb + bl FUN_020299DC +_020474FC: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02047500 +FUN_02047500: ; 0x02047500 + push {r4, lr} + ldr r4, [r0, #0x0] + mov r1, #0x1 + tst r1, r4 + beq _02047546 + add r0, #0x5d + ldrb r0, [r0, #0x0] + bl FUN_020475C0 + mov r1, #0x80 + tst r1, r4 + beq _0204752A + cmp r0, #0x1c + beq _02047558 + mov r0, #0x2 + tst r0, r4 + beq _02047526 + mov r0, #0x1a + pop {r4, pc} +_02047526: + mov r0, #0x18 + pop {r4, pc} +_0204752A: + add r1, r0, #0x0 + sub r1, #0x15 + cmp r1, #0x2 + bls _02047558 + mov r1, #0x2 + tst r1, r4 + beq _0204753C + mov r0, #0x1a + pop {r4, pc} +_0204753C: + mov r1, #0x4 + tst r1, r4 + beq _02047558 + mov r0, #0x19 + pop {r4, pc} +_02047546: + ldr r0, [r0, #0x8] + bl FUN_02047668 + cmp r0, #0x1e + blo _02047558 + mov r1, #0x2 + tst r1, r4 + beq _02047558 + mov r0, #0x1b +_02047558: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204755C +FUN_0204755C: ; 0x0204755C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x1f + blo _0204756A + bl ErrorHandling +_0204756A: + ldr r0, _02047580 ; =0x020F457C + lsl r1, r5, #0x2 + ldrh r0, [r0, r1] + ldr r1, _02047584 ; =0x0000FFFF + cmp r0, r1 + bne _0204757C + add r0, r4, #0x0 + bl FUN_021E495C +_0204757C: + pop {r3-r5, pc} + nop +_02047580: .word 0x020F457C +_02047584: .word 0x0000FFFF + + thumb_func_start FUN_02047588 +FUN_02047588: ; 0x02047588 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x1f + blo _02047594 + bl ErrorHandling +_02047594: + ldr r0, _0204759C ; =0x020F457E + lsl r1, r4, #0x2 + ldrh r0, [r0, r1] + pop {r4, pc} + .balign 4 +_0204759C: .word 0x020F457E + + thumb_func_start FUN_020475A0 +FUN_020475A0: ; 0x020475A0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02047500 + add r1, r4, #0x0 + bl FUN_0204755C + pop {r4, pc} + + thumb_func_start FUN_020475B0 +FUN_020475B0: ; 0x020475B0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02047500 + add r1, r4, #0x0 + bl FUN_02047588 + pop {r4, pc} + + thumb_func_start FUN_020475C0 +FUN_020475C0: ; 0x020475C0 + sub r0, #0x3e + mov r1, #0x1d + cmp r0, #0x23 + bhi _02047662 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020475D4: ; jump table (using 16-bit offset) + .short _0204761C - _020475D4 - 2; case 0 + .short _02047650 - _020475D4 - 2; case 1 + .short _02047634 - _020475D4 - 2; case 2 + .short _0204763C - _020475D4 - 2; case 3 + .short _02047640 - _020475D4 - 2; case 4 + .short _02047644 - _020475D4 - 2; case 5 + .short _02047648 - _020475D4 - 2; case 6 + .short _0204764C - _020475D4 - 2; case 7 + .short _02047662 - _020475D4 - 2; case 8 + .short _02047662 - _020475D4 - 2; case 9 + .short _02047658 - _020475D4 - 2; case 10 + .short _0204765C - _020475D4 - 2; case 11 + .short _02047620 - _020475D4 - 2; case 12 + .short _02047624 - _020475D4 - 2; case 13 + .short _02047628 - _020475D4 - 2; case 14 + .short _0204762C - _020475D4 - 2; case 15 + .short _02047630 - _020475D4 - 2; case 16 + .short _02047638 - _020475D4 - 2; case 17 + .short _02047662 - _020475D4 - 2; case 18 + .short _02047662 - _020475D4 - 2; case 19 + .short _02047662 - _020475D4 - 2; case 20 + .short _02047662 - _020475D4 - 2; case 21 + .short _02047662 - _020475D4 - 2; case 22 + .short _02047662 - _020475D4 - 2; case 23 + .short _02047654 - _020475D4 - 2; case 24 + .short _02047658 - _020475D4 - 2; case 25 + .short _02047658 - _020475D4 - 2; case 26 + .short _0204765C - _020475D4 - 2; case 27 + .short _02047662 - _020475D4 - 2; case 28 + .short _02047662 - _020475D4 - 2; case 29 + .short _02047662 - _020475D4 - 2; case 30 + .short _02047662 - _020475D4 - 2; case 31 + .short _02047662 - _020475D4 - 2; case 32 + .short _02047662 - _020475D4 - 2; case 33 + .short _02047662 - _020475D4 - 2; case 34 + .short _02047660 - _020475D4 - 2; case 35 +_0204761C: + mov r1, #0x0 + b _02047662 +_02047620: + mov r1, #0x1 + b _02047662 +_02047624: + mov r1, #0x2 + b _02047662 +_02047628: + mov r1, #0x3 + b _02047662 +_0204762C: + mov r1, #0x4 + b _02047662 +_02047630: + mov r1, #0x5 + b _02047662 +_02047634: + mov r1, #0x6 + b _02047662 +_02047638: + mov r1, #0x7 + b _02047662 +_0204763C: + mov r1, #0x8 + b _02047662 +_02047640: + mov r1, #0x9 + b _02047662 +_02047644: + mov r1, #0xa + b _02047662 +_02047648: + mov r1, #0xb + b _02047662 +_0204764C: + mov r1, #0xc + b _02047662 +_02047650: + mov r1, #0xd + b _02047662 +_02047654: + mov r1, #0x17 + b _02047662 +_02047658: + mov r1, #0x16 + b _02047662 +_0204765C: + mov r1, #0x15 + b _02047662 +_02047660: + mov r1, #0x1c +_02047662: + add r0, r1, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02047668 +FUN_02047668: ; 0x02047668 + push {r4, lr} + mov r4, #0x1e + bl FUN_0204A1D8 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020476C8 ; =0x000001DF + sub r0, r0, r1 + cmp r0, #0xe + bhi _020476C4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204768C: ; jump table (using 16-bit offset) + .short _020476B2 - _0204768C - 2; case 0 + .short _020476BA - _0204768C - 2; case 1 + .short _020476B6 - _0204768C - 2; case 2 + .short _020476BA - _0204768C - 2; case 3 + .short _020476BE - _0204768C - 2; case 4 + .short _020476BE - _0204768C - 2; case 5 + .short _020476B2 - _0204768C - 2; case 6 + .short _020476B2 - _0204768C - 2; case 7 + .short _020476B2 - _0204768C - 2; case 8 + .short _020476AE - _0204768C - 2; case 9 + .short _020476C4 - _0204768C - 2; case 10 + .short _020476C4 - _0204768C - 2; case 11 + .short _020476B2 - _0204768C - 2; case 12 + .short _020476AA - _0204768C - 2; case 13 + .short _020476C2 - _0204768C - 2; case 14 +_020476AA: + mov r4, #0xe + b _020476C4 +_020476AE: + mov r4, #0x14 + b _020476C4 +_020476B2: + mov r4, #0x13 + b _020476C4 +_020476B6: + mov r4, #0x11 + b _020476C4 +_020476BA: + mov r4, #0x10 + b _020476C4 +_020476BE: + mov r4, #0xf + b _020476C4 +_020476C2: + mov r4, #0x12 +_020476C4: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 +_020476C8: .word 0x000001DF + + thumb_func_start FUN_020476CC +FUN_020476CC: ; 0x020476CC + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0x67 + lsl r1, r1, #0x2 + add r5, r0, #0x0 + bl FUN_02016998 + mov r2, #0x67 + mov r1, #0x0 + lsl r2, r2, #0x2 + add r7, r0, #0x0 + blx MI_CpuFill8 + mov r1, #0x63 + str r4, [r7, #0x0] + mov r0, #0x0 + lsl r1, r1, #0x2 + str r0, [r7, r1] + add r4, r7, #0x0 + str r0, [sp, #0x0] + str r0, [r7, #0x14] + add r6, r7, #0x0 + add r4, #0x28 +_020476FA: + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x34 + str r0, [r6, #0x18] + blx MIi_CpuClear32 + ldr r0, [sp, #0x0] + add r6, r6, #0x4 + add r0, r0, #0x1 + add r4, #0x34 + str r0, [sp, #0x0] + cmp r0, #0x4 + blt _020476FA + mov r0, #0x15 + lsl r0, r0, #0x4 + mov r6, #0x0 + str r6, [r7, r0] + mov r2, #0xc + add r1, r0, #0x4 + str r2, [r7, r1] + add r1, r0, #0x0 + add r1, #0x8 + str r6, [r7, r1] + add r1, r0, #0x0 + add r1, #0x10 + str r6, [r7, r1] + add r1, r0, #0x0 + add r1, #0x14 + str r6, [r7, r1] + add r1, r0, #0x0 + mov r2, #0x1 + add r1, #0x18 + str r2, [r7, r1] + add r1, r0, #0x0 + add r1, #0x1c + str r2, [r7, r1] + add r0, #0x24 + str r6, [r7, r0] + add r4, r7, #0x0 +_02047748: + add r0, r5, #0x0 + bl FUN_0206B8AC + str r0, [r4, #0x4] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x4 + blt _02047748 + mov r6, #0x0 + add r4, r7, #0x0 +_0204775C: + add r0, r5, #0x0 + bl FUN_02023928 + add r1, r4, #0x0 + add r1, #0xf8 + add r6, r6, #0x1 + add r4, r4, #0x4 + str r0, [r1, #0x0] + cmp r6, #0x4 + blt _0204775C + mov r6, #0x0 + add r4, r7, #0x0 +_02047774: + add r0, r5, #0x0 + bl FUN_02029EE4 + mov r1, #0x46 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x4 + blt _02047774 + add r0, r5, #0x0 + bl FUN_0206EB88 + mov r1, #0x42 + lsl r1, r1, #0x2 + str r0, [r7, r1] + add r0, r5, #0x0 + bl FUN_02023D6C + mov r1, #0x11 + lsl r1, r1, #0x4 + str r0, [r7, r1] + add r0, r5, #0x0 + bl FUN_02024F30 + mov r1, #0x13 + lsl r1, r1, #0x4 + str r0, [r7, r1] + add r0, r5, #0x0 + bl FUN_02061008 + mov r2, #0x4d + lsl r2, r2, #0x2 + str r0, [r7, r2] + add r0, r2, #0x0 + mov r1, #0x0 + sub r0, #0x28 + str r1, [r7, r0] + add r0, r2, #0x0 + add r0, #0x5c + str r1, [r7, r0] + add r0, r2, #0x0 + sub r0, #0x8 + str r1, [r7, r0] + add r0, r2, #0x0 + add r0, #0x10 + str r1, [r7, r0] + add r0, r2, #0x0 + add r0, #0x14 + str r1, [r7, r0] + add r0, r2, #0x0 + add r0, #0x60 + str r1, [r7, r0] + add r0, r2, #0x4 + add r0, r7, r0 + mov r2, #0xc + blx MI_CpuFill8 + add r0, r7, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020477EC +FUN_020477EC: ; 0x020477EC + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x20 + bl FUN_020476CC + mov r1, #0x19 + lsl r1, r1, #0x4 + str r4, [r0, r1] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02047800 +FUN_02047800: ; 0x02047800 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x2 + lsl r1, r1, #0x8 + bl FUN_020476CC + mov r1, #0x19 + lsl r1, r1, #0x4 + str r4, [r0, r1] + pop {r4, pc} + + thumb_func_start FUN_02047814 +FUN_02047814: ; 0x02047814 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r1, #0x0 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + mov r1, #0x1 + str r0, [sp, #0x14] + add r0, r6, #0x0 + lsl r1, r1, #0xa + bl FUN_020476CC + add r4, r0, #0x0 + ldr r2, _0204795C ; =0x000001F1 + mov r0, #0x1 + mov r1, #0x1a + add r3, r6, #0x0 + bl FUN_0200A86C + str r0, [sp, #0x18] + mov r0, #0x8 + add r1, r6, #0x0 + bl FUN_020219F4 + add r7, r0, #0x0 + ldr r0, [sp, #0x10] + bl FUN_020239CC + add r2, r0, #0x0 + mov r1, #0x1 + eor r1, r2 + ldr r0, [sp, #0x18] + add r2, r7, #0x0 + bl FUN_0200A8E0 + add r0, r7, #0x0 + bl FUN_02021F2C + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_0202395C + add r0, r7, #0x0 + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 + ldr r0, [sp, #0x10] + bl FUN_020239CC + add r2, r0, #0x0 + add r0, r4, #0x0 + add r0, #0xf8 + mov r1, #0x1 + ldr r0, [r0, #0x0] + eor r1, r2 + bl FUN_020239C8 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0204806C + mov r1, #0x13 + lsl r1, r1, #0x4 + ldr r0, [sp, #0x14] + ldr r1, [r4, r1] + bl FUN_02024F44 + add r0, r5, #0x0 + bl FUN_0204B2A4 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r4, r1] + sub r1, #0x58 + ldr r0, [r4, r1] + mov r1, #0x4 + mov r2, #0x14 + add r3, r6, #0x0 + bl FUN_0206ED38 + add r0, r6, #0x0 + bl FUN_020669C0 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F3C0 + mov r2, #0x0 + str r2, [sp, #0x0] + add r1, r0, #0x0 + str r2, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + str r2, [sp, #0xc] + add r0, r6, #0x0 + mov r2, #0x5 + mov r3, #0x20 + bl FUN_02066ACC + ldr r0, [r4, #0x4] + add r1, r6, #0x0 + bl FUN_0206B900 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x2 + str r2, [sp, #0x8] + str r0, [sp, #0xc] + ldr r1, _02047960 ; =0x0000018F + add r0, r6, #0x0 + mov r3, #0x20 + bl FUN_02066ACC + ldr r0, [r4, #0x8] + add r1, r6, #0x0 + bl FUN_0206B900 + add r0, r6, #0x0 + bl FUN_02016A18 + ldr r0, [r5, #0xc] + bl FUN_02022510 + mov r1, #0x45 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r5, #0x0 + add r0, #0x94 + ldr r0, [r0, #0x0] + sub r1, #0x8 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x51 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r5, #0x0 + add r0, #0x98 + ldr r2, [r0, #0x0] + add r0, r1, #0x4 + str r2, [r4, r0] + ldr r0, [r5, #0x1c] + add r1, #0x18 + ldr r0, [r0, #0x0] + str r0, [r4, r1] + add r0, r4, #0x0 + bl FUN_020480E4 + add r0, r4, #0x0 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 +_0204795C: .word 0x000001F1 +_02047960: .word 0x0000018F + + thumb_func_start FUN_02047964 +FUN_02047964: ; 0x02047964 + push {r3-r7, lr} + add r7, r0, #0x0 + mov r4, #0x0 + add r5, r7, #0x0 +_0204796C: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _02047976 + bl ErrorHandling +_02047976: + ldr r0, [r5, #0x4] + bl FUN_02016A18 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _0204796C + mov r5, #0x0 + add r4, r7, #0x0 +_02047988: + add r0, r4, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02047996 + bl ErrorHandling +_02047996: + add r0, r4, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, #0x4 + blt _02047988 + mov r6, #0x46 + mov r5, #0x0 + add r4, r7, #0x0 + lsl r6, r6, #0x2 +_020479B0: + ldr r0, [r4, r6] + cmp r0, #0x0 + bne _020479BA + bl ErrorHandling +_020479BA: + mov r0, #0x46 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, #0x4 + blt _020479B0 + mov r0, #0x42 + lsl r0, r0, #0x2 + ldr r0, [r7, r0] + bl FUN_02016A18 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldr r0, [r7, r0] + bl FUN_02016A18 + mov r0, #0x13 + lsl r0, r0, #0x4 + ldr r0, [r7, r0] + bl FUN_02016A18 + mov r0, #0x4d + lsl r0, r0, #0x2 + ldr r0, [r7, r0] + bl FUN_02061020 + add r0, r7, #0x0 + bl FUN_02016A18 + pop {r3-r7, pc} + + thumb_func_start FUN_020479FC +FUN_020479FC: ; 0x020479FC + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x4 + blt _02047A0C + bl ErrorHandling +_02047A0C: + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, #0x4] + add r1, r6, #0x0 + bl FUN_0206B900 + cmp r0, #0x0 + bne _02047A20 + bl ErrorHandling +_02047A20: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02047A24 +FUN_02047A24: ; 0x02047A24 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x4 + blt _02047A34 + bl ErrorHandling +_02047A34: + lsl r1, r4, #0x2 + add r1, r5, r1 + ldr r1, [r1, #0x4] + add r0, r6, #0x0 + bl FUN_0206BAD0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02047A44 +FUN_02047A44: ; 0x02047A44 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x4 + blt _02047A54 + bl ErrorHandling +_02047A54: + lsl r1, r4, #0x2 + add r1, r5, r1 + add r1, #0xf8 + ldr r1, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_0202393C + pop {r4-r6, pc} + + thumb_func_start FUN_02047A64 +FUN_02047A64: ; 0x02047A64 + lsl r2, r2, #0x2 + add r2, r0, r2 + mov r0, #0x46 + lsl r0, r0, #0x2 + ldr r3, _02047A74 ; =FUN_02029F9C + ldr r0, [r2, r0] + bx r3 + nop +_02047A74: .word FUN_02029F9C + + thumb_func_start FUN_02047A78 +FUN_02047A78: ; 0x02047A78 + push {r4-r7, lr} + sub sp, #0x14 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020238F4 + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + add r7, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x0] + ldr r0, [r4, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0x4] + ldr r0, [r4, #0xc] + bl FUN_02029EF8 + str r0, [sp, #0x8] + ldr r0, [r4, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + bl FUN_02034E30 + str r0, [sp, #0x10] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204806C + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r2, #0x0 + bl FUN_02047A44 + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_02047A24 + mov r1, #0x42 + lsl r1, r1, #0x2 + ldr r0, [sp, #0x0] + ldr r1, [r5, r1] + bl FUN_0206EBB4 + mov r1, #0x11 + lsl r1, r1, #0x4 + ldr r0, [sp, #0x4] + ldr r1, [r5, r1] + bl FUN_02023D80 + mov r1, #0x13 + lsl r1, r1, #0x4 + ldr r0, [sp, #0xc] + ldr r1, [r5, r1] + bl FUN_02024F44 + ldr r1, [sp, #0x8] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02047A64 + ldr r0, [r4, #0xc] + bl FUN_02022510 + mov r1, #0x45 + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + mov r1, #0x56 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r0, r4, #0x0 + bl FUN_0204B2A4 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r5, r1] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034A04 + mov r1, #0x59 + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_02079C70 + mov r1, #0x5a + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F1B4 + mov r1, #0x5b + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [sp, #0x10] + bl FUN_02034DEC + mov r1, #0x5d + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r0, r4, #0x0 + add r0, #0x94 + ldr r0, [r0, #0x0] + sub r1, #0x68 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_0204C1A8 + mov r1, #0x4a + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_02029AFC + mov r1, #0x4b + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + mov r1, #0x51 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r0, r4, #0x0 + add r0, #0x98 + ldr r2, [r0, #0x0] + add r0, r1, #0x4 + str r2, [r5, r0] + ldr r0, [r4, #0xc] + bl FUN_020254C0 + mov r1, #0x53 + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r4, #0x1c] + add r1, #0x10 + ldr r0, [r0, #0x0] + str r0, [r5, r1] + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02047BB0 +FUN_02047BB0: ; 0x02047BB0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02047A78 + add r0, r4, #0x0 + bl FUN_020480E4 + pop {r4, pc} + + thumb_func_start FUN_02047BC0 +FUN_02047BC0: ; 0x02047BC0 + push {r4-r7, lr} + sub sp, #0x1c + add r6, r0, #0x0 + add r0, r1, #0x0 + ldr r0, [r0, #0xc] + str r1, [sp, #0x0] + add r7, r2, #0x0 + bl FUN_020238F4 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + str r0, [sp, #0x14] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x10] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029EF8 + str r0, [sp, #0x8] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x4] + mov r0, #0x15 + mov r1, #0x6 + lsl r0, r0, #0x4 + str r1, [r6, r0] + mov r1, #0x9 + add r0, r0, #0x4 + str r1, [r6, r0] + add r0, r6, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_02047A44 + mov r0, #0xb + bl FUN_020669C0 + add r5, r0, #0x0 + ldr r0, [sp, #0x14] + bl FUN_0206B9AC + add r1, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0206B8CC + ldr r0, [sp, #0x14] + mov r4, #0x0 + bl FUN_0206B9AC + cmp r0, #0x0 + ble _02047C98 +_02047C40: + ldr r0, [sp, #0x14] + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r1, r5, #0x0 + bl FUN_02069B88 + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + cmp r7, r0 + beq _02047C82 + cmp r7, #0x0 + beq _02047C82 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r1, r7, #0x0 + bl FUN_02068758 + str r0, [sp, #0x18] + add r0, r5, #0x0 + mov r1, #0x8 + add r2, sp, #0x18 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 +_02047C82: + add r0, r6, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_020479FC + ldr r0, [sp, #0x14] + add r4, r4, #0x1 + bl FUN_0206B9AC + cmp r4, r0 + blt _02047C40 +_02047C98: + add r0, r5, #0x0 + bl FUN_02016A18 + mov r1, #0x42 + lsl r1, r1, #0x2 + ldr r0, [sp, #0x10] + ldr r1, [r6, r1] + bl FUN_0206EBB4 + mov r1, #0x11 + lsl r1, r1, #0x4 + ldr r0, [sp, #0xc] + ldr r1, [r6, r1] + bl FUN_02023D80 + mov r1, #0x13 + lsl r1, r1, #0x4 + ldr r0, [sp, #0x4] + ldr r1, [r6, r1] + bl FUN_02024F44 + ldr r1, [sp, #0x8] + add r0, r6, #0x0 + mov r2, #0x0 + bl FUN_02047A64 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022510 + mov r1, #0x45 + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + bl FUN_0204B2A4 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + sub r1, #0x54 + add r0, #0x94 + ldr r0, [r0, #0x0] + str r0, [r6, r1] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0204C1A8 + mov r1, #0x4a + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029AFC + mov r1, #0x4b + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x51 + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + add r0, #0x98 + ldr r2, [r0, #0x0] + add r0, r1, #0x4 + str r2, [r6, r0] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020254C0 + mov r1, #0x53 + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + add r1, #0x10 + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + str r0, [r6, r1] + add r0, r6, #0x0 + bl FUN_020480E4 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02047D48 +FUN_02047D48: ; 0x02047D48 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + add r0, r1, #0x0 + ldr r0, [r0, #0xc] + str r1, [sp, #0x0] + str r2, [sp, #0x4] + add r7, r3, #0x0 + bl FUN_020238F4 + str r0, [sp, #0x20] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029EF8 + str r0, [sp, #0x14] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x10] + ldr r0, [sp, #0x0] + mov r1, #0x6 + add r0, #0xac + ldr r0, [r0, #0x0] + mov r2, #0x0 + str r0, [sp, #0xc] + mov r0, #0x15 + lsl r0, r0, #0x4 + str r1, [r5, r0] + mov r1, #0x9 + add r0, r0, #0x4 + str r1, [r5, r0] + ldr r1, [sp, #0x20] + add r0, r5, #0x0 + bl FUN_02047A44 + cmp r7, #0x0 + bne _02047DB6 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02047A24 + b _02047E14 +_02047DB6: + mov r4, #0x0 + add r1, r4, #0x0 +_02047DBA: + ldrb r0, [r7, r1] + cmp r0, #0x0 + beq _02047DC2 + add r4, r4, #0x1 +_02047DC2: + add r1, r1, #0x1 + cmp r1, #0x6 + blt _02047DBA + cmp r4, #0x0 + bne _02047DD8 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02047A24 + b _02047E14 +_02047DD8: + mov r0, #0xb + bl FUN_020669C0 + str r0, [sp, #0x8] + ldr r0, [r5, #0x4] + add r1, r4, #0x0 + bl FUN_0206B8CC + mov r6, #0x0 + cmp r4, #0x0 + ble _02047E0E +_02047DEE: + ldrb r1, [r7, r6] + ldr r0, [sp, #0x4] + sub r1, r1, #0x1 + bl FUN_0206B9B0 + ldr r1, [sp, #0x8] + bl FUN_02069B88 + ldr r1, [sp, #0x8] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_020479FC + add r6, r6, #0x1 + cmp r6, r4 + blt _02047DEE +_02047E0E: + ldr r0, [sp, #0x8] + bl FUN_02016A18 +_02047E14: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + beq _02047E2C + mov r1, #0xc + bl FUN_02023B0C + cmp r0, #0x0 + beq _02047E2C + mov r0, #0x65 + mov r1, #0x1 + lsl r0, r0, #0x2 + str r1, [r5, r0] +_02047E2C: + mov r1, #0x42 + lsl r1, r1, #0x2 + ldr r0, [sp, #0x1c] + ldr r1, [r5, r1] + bl FUN_0206EBB4 + mov r1, #0x11 + lsl r1, r1, #0x4 + ldr r0, [sp, #0x18] + ldr r1, [r5, r1] + bl FUN_02023D80 + mov r1, #0x13 + lsl r1, r1, #0x4 + ldr r0, [sp, #0x10] + ldr r1, [r5, r1] + bl FUN_02024F44 + ldr r1, [sp, #0x14] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02047A64 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02022510 + mov r1, #0x45 + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [sp, #0x0] + bl FUN_0204B2A4 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r5, r1] + ldr r0, [sp, #0x0] + sub r1, #0x54 + add r0, #0x94 + ldr r0, [r0, #0x0] + str r0, [r5, r1] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029AFC + mov r1, #0x4b + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x51 + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [sp, #0x0] + add r0, #0x98 + ldr r2, [r0, #0x0] + add r0, r1, #0x4 + str r2, [r5, r0] + ldr r0, [sp, #0x0] + add r1, #0x18 + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + str r0, [r5, r1] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020254C0 + mov r1, #0x53 + lsl r1, r1, #0x2 + str r0, [r5, r1] + bl FUN_02033534 + bl FUN_0202D8B0 + cmp r0, #0x0 + beq _02047F10 + ldr r0, [sp, #0x20] + bl FUN_02023A28 + add r4, r0, #0x0 + ldr r0, [sp, #0x20] + bl FUN_020239CC + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020536D0 + add r1, r5, #0x0 + add r1, #0x29 + strb r0, [r1, #0x0] + add r0, r5, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_0202398C + add r1, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x3c + bl StringCopy + add r3, r5, #0x0 + add r3, #0x28 + add r5, #0x90 + mov r2, #0x6 +_02047F00: + ldmia r3!, {r0-r1} + stmia r5!, {r0-r1} + sub r2, r2, #0x1 + bne _02047F00 + ldr r0, [r3, #0x0] + add sp, #0x24 + str r0, [r5, #0x0] + pop {r4-r7, pc} +_02047F10: + add r0, r5, #0x0 + bl FUN_020480E4 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02047F1C +FUN_02047F1C: ; 0x02047F1C + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + add r6, r2, #0x0 + bl FUN_0206BB1C + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r3, r6, #0x0 + bl FUN_02047D48 + pop {r4-r6, pc} + + thumb_func_start FUN_02047F38 +FUN_02047F38: ; 0x02047F38 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r7, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [sp, #0x0] + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + str r0, [sp, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E24 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + add r1, r6, #0x0 + bl FUN_0202393C + ldr r0, [r4, #0x4] + add r1, r7, #0x0 + bl FUN_0206BAD0 + mov r0, #0x42 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x0] + bl FUN_0206EBB4 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + ldr r1, [sp, #0x4] + bl FUN_02023D80 + mov r0, #0x19 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + strh r0, [r5, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02047FA4 +FUN_02047FA4: ; 0x02047FA4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + ldr r0, [r5, #0xc] + bl FUN_0206F158 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + add r1, r0, #0x0 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02023D80 + pop {r3-r5, pc} + + thumb_func_start FUN_02047FD0 +FUN_02047FD0: ; 0x02047FD0 + push {r3-r5, lr} + ldr r2, [r0, #0x1c] + add r4, r1, #0x0 + ldr r1, [r2, #0x8] + ldr r2, [r2, #0xc] + bl FUN_0204A6E0 + add r5, r0, #0x0 + bl FUN_020548F0 + cmp r0, #0x0 + beq _02047FEC + mov r0, #0x8 + pop {r3-r5, pc} +_02047FEC: + add r0, r5, #0x0 + bl FUN_0205478C + cmp r0, #0x0 + bne _02048000 + add r0, r5, #0x0 + bl FUN_02054798 + cmp r0, #0x0 + beq _02048004 +_02048000: + mov r0, #0x2 + pop {r3-r5, pc} +_02048004: + add r0, r5, #0x0 + bl FUN_02054830 + cmp r0, #0x0 + beq _02048012 + mov r0, #0x1 + pop {r3-r5, pc} +_02048012: + add r0, r5, #0x0 + bl FUN_020549AC + cmp r0, #0x0 + beq _02048020 + mov r0, #0x6 + pop {r3-r5, pc} +_02048020: + add r0, r5, #0x0 + bl FUN_02054974 + cmp r0, #0x0 + bne _02048034 + add r0, r5, #0x0 + bl FUN_02054990 + cmp r0, #0x0 + beq _02048038 +_02048034: + mov r0, #0xa + pop {r3-r5, pc} +_02048038: + add r0, r5, #0x0 + bl FUN_02054A3C + cmp r0, #0x0 + beq _02048046 + mov r0, #0x5 + pop {r3-r5, pc} +_02048046: + add r0, r5, #0x0 + bl FUN_0205481C + cmp r0, #0x0 + beq _02048054 + mov r0, #0x7 + pop {r3-r5, pc} +_02048054: + cmp r4, #0xc + bhs _02048060 + ldr r0, _02048068 ; =0x020F45F8 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r3-r5, pc} +_02048060: + bl ErrorHandling + mov r0, #0xc + pop {r3-r5, pc} + .balign 4 +_02048068: .word 0x020F45F8 + + thumb_func_start FUN_0204806C +FUN_0204806C: ; 0x0204806C + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034E20 + add r6, r0, #0x0 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034860 + mov r1, #0x15 + lsl r1, r1, #0x4 + str r0, [r5, r1] + ldr r0, [r6, #0x4] + cmp r0, #0x2 + bne _02048096 + mov r0, #0x1 + str r0, [r5, r1] +_02048096: + mov r1, #0x15 + lsl r1, r1, #0x4 + ldr r1, [r5, r1] + add r0, r4, #0x0 + bl FUN_02047FD0 + mov r1, #0x55 + lsl r1, r1, #0x2 + str r0, [r5, r1] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020480AC +FUN_020480AC: ; 0x020480AC + mov r1, #0x55 + mov r2, #0x7 + lsl r1, r1, #0x2 + str r2, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_020480B8 +FUN_020480B8: ; 0x020480B8 + cmp r0, #0x2 + beq _020480C0 + cmp r0, #0x3 + bne _020480C4 +_020480C0: + mov r0, #0x0 + bx lr +_020480C4: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020480C8 +FUN_020480C8: ; 0x020480C8 + cmp r0, #0x1 + beq _020480D0 + cmp r0, #0x4 + bne _020480D4 +_020480D0: + mov r0, #0x0 + bx lr +_020480D4: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020480D8 +FUN_020480D8: ; 0x020480D8 + cmp r0, #0x4 + bne _020480E0 + mov r0, #0x0 + bx lr +_020480E0: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020480E4 +FUN_020480E4: ; 0x020480E4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_020239CC + add r1, r4, #0x0 + add r1, #0x29 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_0202398C + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x3c + bl StringCopy + add r3, r4, #0x0 + add r3, #0x28 + add r4, #0x90 + mov r2, #0x6 +_02048112: + ldmia r3!, {r0-r1} + stmia r4!, {r0-r1} + sub r2, r2, #0x1 + bne _02048112 + ldr r0, [r3, #0x0] + str r0, [r4, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02048120 +FUN_02048120: ; 0x02048120 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r0, _02048158 ; =0x020F465C + bl FUN_0201E66C + ldr r0, _0204815C ; =0x020F4630 + bl FUN_02016BBC + ldr r2, _02048160 ; =0x020F4640 + add r0, r4, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl FUN_02016C18 + mov r0, #0x20 + str r0, [sp, #0x0] + mov r0, #0xb + mov r3, #0x1a + str r0, [sp, #0x4] + mov r0, #0xe + mov r1, #0x6 + mov r2, #0x0 + lsl r3, r3, #0x4 + bl FUN_02006930 + add sp, #0x8 + pop {r4, pc} + .balign 4 +_02048158: .word 0x020F465C +_0204815C: .word 0x020F4630 +_02048160: .word 0x020F4640 + + thumb_func_start FUN_02048164 +FUN_02048164: ; 0x02048164 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0x0 + bne _0204817A + bl ErrorHandling +_0204817A: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x24 + blx Call_FillMemWithValue + mov r0, #0x0 + str r0, [r4, #0x0] + str r5, [r4, #0x4] + mov r0, #0xb + bl FUN_02016B94 + str r0, [r4, #0x8] + bl FUN_02048120 + mov r2, #0x52 + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + mov r3, #0xb + bl FUN_0200A86C + str r0, [r4, #0x1c] + mov r0, #0xb + bl FUN_0200AA80 + str r0, [r4, #0x20] + add r1, r4, #0x0 + ldr r0, [r4, #0x8] + ldr r2, _02048208 ; =0x020F4628 + add r1, #0xc + bl FUN_02019150 + add r0, r5, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + add r2, r0, #0x0 + ldr r0, [r4, #0x20] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r5, #0x1c] + ldr r1, [r0, #0x0] + ldr r0, _0204820C ; =0x0000019E + cmp r1, r0 + bne _020481E6 + mov r2, #0x0 + add r0, r4, #0x0 + mov r1, #0x4 + add r3, r2, #0x0 + bl FUN_020482F4 + b _020481F2 +_020481E6: + mov r2, #0x0 + add r0, r4, #0x0 + mov r1, #0x3 + add r3, r2, #0x0 + bl FUN_020482F4 +_020481F2: + add r0, r4, #0x0 + add r0, #0xc + bl FUN_020191D0 + ldr r1, _02048210 ; =FUN_02048214 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + nop +_02048208: .word 0x020F4628 +_0204820C: .word 0x0000019E +_02048210: .word FUN_02048214 + + thumb_func_start FUN_02048214 +FUN_02048214: ; 0x02048214 + push {r3-r4, lr} + sub sp, #0xc + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x4 + bhi _020482EA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02048230: ; jump table (using 16-bit offset) + .short _0204823A - _02048230 - 2; case 0 + .short _02048258 - _02048230 - 2; case 1 + .short _02048268 - _02048230 - 2; case 2 + .short _02048298 - _02048230 - 2; case 3 + .short _020482B2 - _02048230 - 2; case 4 +_0204823A: + mov r0, #0x8 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x20 + str r0, [sp, #0x8] + mov r0, #0x3 + mov r2, #0x2a + mov r3, #0x0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020482EA +_02048258: + bl FUN_0200E308 + cmp r0, #0x0 + beq _020482EA + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020482EA +_02048268: + ldr r0, _020482F0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + bne _02048278 + mov r0, #0x2 + tst r0, r1 + beq _020482EA +_02048278: + mov r0, #0x8 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x20 + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020482EA +_02048298: + bl FUN_0200E308 + cmp r0, #0x0 + beq _020482EA + add r0, r4, #0x0 + add r0, #0xc + mov r1, #0x0 + bl FUN_02019620 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020482EA +_020482B2: + add r0, r4, #0x0 + add r0, #0xc + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r4, #0x0 + add r0, #0xc + bl FUN_02019178 + ldr r0, [r4, #0x20] + bl FUN_0200AB18 + ldr r0, [r4, #0x1c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x8] + mov r1, #0x3 + bl FUN_020178A0 + ldr r0, [r4, #0x8] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r3-r4, pc} +_020482EA: + mov r0, #0x0 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_020482F0: .word 0x021C48B8 + + thumb_func_start FUN_020482F4 +FUN_020482F4: ; 0x020482F4 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + mov r0, #0x1 + str r1, [sp, #0x10] + lsl r0, r0, #0xa + mov r1, #0xb + add r7, r3, #0x0 + bl FUN_020219F4 + add r6, r0, #0x0 + mov r0, #0x1 + lsl r0, r0, #0xa + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r0, #0xc + mov r1, #0x0 + bl FUN_02019620 + ldr r0, [r5, #0x1c] + ldr r1, [sp, #0x10] + add r2, r6, #0x0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x20] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0200B7B8 + mov r0, #0x0 + add r1, r4, #0x0 + add r2, r0, #0x0 + bl FUN_02002F08 + add r3, r0, #0x0 + str r7, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _02048378 ; =0x000F0200 + mov r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + str r1, [sp, #0xc] + ldrb r5, [r5, #0x13] + add r0, #0xc + add r2, r4, #0x0 + lsl r5, r5, #0x3 + sub r3, r5, r3 + lsl r3, r3, #0x18 + lsr r3, r3, #0x19 + sub r3, r3, #0x4 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_0201BDE0 + add r0, r6, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02048378: .word 0x000F0200 + + thumb_func_start FUN_0204837C +FUN_0204837C: ; 0x0204837C + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x6 + bhi _02048488 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020483A2: ; jump table (using 16-bit offset) + .short _020483B0 - _020483A2 - 2; case 0 + .short _020483E8 - _020483A2 - 2; case 1 + .short _020483F8 - _020483A2 - 2; case 2 + .short _0204840C - _020483A2 - 2; case 3 + .short _02048434 - _020483A2 - 2; case 4 + .short _02048442 - _020483A2 - 2; case 5 + .short _02048482 - _020483A2 - 2; case 6 +_020483B0: + ldr r0, [r6, #0xc] + bl FUN_02034E30 + add r7, r0, #0x0 + bl FUN_02034DFC + add r1, sp, #0x4 + str r0, [sp, #0x0] + bl FUN_02034EC4 + add r0, r7, #0x0 + bl FUN_02034DCC + add r1, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02034E90 + add r0, r5, #0x0 + add r1, sp, #0x4 + bl FUN_02049160 + add r0, r6, #0x0 + bl FUN_020637F0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048488 +_020483E8: + mov r0, #0x0 + mov r1, #0x14 + bl FUN_020053CC + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048488 +_020483F8: + bl FUN_02005404 + cmp r0, #0x0 + bne _02048488 + bl FUN_0204AB0C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048488 +_0204840C: + mov r0, #0xf + mvn r0, r0 + mov r1, #0x37 + mov r2, #0x1 + bl FUN_0200A274 + mov r0, #0xf + mvn r0, r0 + mov r1, #0x3f + mov r2, #0x2 + bl FUN_0200A274 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02048164 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048488 +_02048434: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048488 +_02048442: + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + bl FUN_02034E8C + add r7, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_02034E30 + bl FUN_02034DFC + cmp r7, r0 + bne _0204846E + mov r2, #0x0 + ldr r1, _02048490 ; =0x000007E4 + add r0, r5, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + b _0204847A +_0204846E: + mov r2, #0x0 + ldr r1, _02048494 ; =0x000007E5 + add r0, r5, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 +_0204847A: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048488 +_02048482: + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02048488: + mov r0, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + nop +_02048490: .word 0x000007E4 +_02048494: .word 0x000007E5 + + thumb_func_start FUN_02048498 +FUN_02048498: ; 0x02048498 + ldr r3, _020484A0 ; =FUN_0204640C + ldr r1, _020484A4 ; =FUN_0204837C + mov r2, #0x0 + bx r3 + .balign 4 +_020484A0: .word FUN_0204640C +_020484A4: .word FUN_0204837C + + thumb_func_start FUN_020484A8 +FUN_020484A8: ; 0x020484A8 + push {r3-r6, lr} + sub sp, #0x14 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r6, r1, #0x0 + mov r1, #0xb + add r2, sp, #0x0 + bl FUN_02022534 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + cmp r0, #0x1 + bne _020484C6 + cmp r6, #0x0 + bne _020484CC +_020484C6: + add r0, r4, #0x0 + bl FUN_0202B03C +_020484CC: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r6, r0, #0x0 + add r0, sp, #0x4 + bl FUN_020126B4 + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, sp, #0x4 + bl FUN_0202B050 + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + bl FUN_02022540 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x14 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_020484F8 +FUN_020484F8: ; 0x020484F8 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x9 + bhi _02048554 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02048526: ; jump table (using 16-bit offset) + .short _0204853A - _02048526 - 2; case 0 + .short _0204854A - _02048526 - 2; case 1 + .short _02048586 - _02048526 - 2; case 2 + .short _020485AE - _02048526 - 2; case 3 + .short _020485C0 - _02048526 - 2; case 4 + .short _020485F6 - _02048526 - 2; case 5 + .short _02048612 - _02048526 - 2; case 6 + .short _02048624 - _02048526 - 2; case 7 + .short _02048644 - _02048526 - 2; case 8 + .short _02048666 - _02048526 - 2; case 9 +_0204853A: + add r0, r6, #0x0 + add r1, r5, #0x4 + bl FUN_02038814 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_0204854A: + add r0, r6, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _02048556 +_02048554: + b _02048688 +_02048556: + mov r1, #0x4 + mov r0, #0x3 + lsl r2, r1, #0xf + bl FUN_0201681C + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02048764 + mov r0, #0x8 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x20 + str r0, [sp, #0x8] + mov r0, #0x3 + add r2, r1, #0x0 + mov r3, #0x0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_02048586: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02048688 + ldr r0, [r6, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + bne _020485A8 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_020487E4 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_020485A8: + mov r0, #0x7 + str r0, [r4, #0x0] + b _02048688 +_020485AE: + add r0, r5, #0x0 + bl FUN_02048838 + cmp r0, #0x0 + beq _02048688 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_020485C0: + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + bl FUN_02085140 + bl FUN_02022830 + ldr r0, [r6, #0xc] + bl FUN_02022720 + add r7, r0, #0x0 + ldr r1, [r5, #0x0] + add r0, r6, #0x0 + bl FUN_020484A8 + add r0, r5, #0x0 + bl FUN_02048848 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r7, #0x0 + bl FUN_02048864 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_020485F6: + add r0, r5, #0x0 + bl FUN_02048838 + cmp r0, #0x0 + beq _02048688 + ldr r0, _02048690 ; =0x0000061B + bl FUN_020054C8 + mov r0, #0x12 + str r0, [r5, #0x38] + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_02048612: + ldr r1, [r5, #0x38] + cmp r1, #0x0 + beq _0204861E + sub r0, r1, #0x1 + str r0, [r5, #0x38] + b _02048688 +_0204861E: + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_02048624: + mov r0, #0x8 + str r0, [sp, #0x0] + mov r1, #0x0 + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x20 + str r0, [sp, #0x8] + mov r0, #0x3 + add r2, r1, #0x0 + add r3, r1, #0x0 + bl FUN_0200E1D0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_02048644: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02048688 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_020488D4 + add r5, #0x10 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02038854 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048688 +_02048666: + add r0, r6, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _02048688 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x4 + bl FUN_020168D0 + mov r0, #0x0 + blx OS_ResetSystem + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02048688: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_02048690: .word 0x0000061B + + thumb_func_start FUN_02048694 +FUN_02048694: ; 0x02048694 + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + mov r0, #0x20 + mov r1, #0x3c + bl FUN_02016998 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020238F4 + str r0, [sp, #0x0] + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + str r0, [sp, #0x8] + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + str r0, [sp, #0x4] + add r0, r6, #0x0 + bl FUN_0205ED0C + str r0, [r5, #0x0] + ldr r0, [r4, #0xc] + bl FUN_020238F4 + str r0, [r5, #0x4] + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + str r0, [r5, #0x8] + ldr r0, [r4, #0xc] + bl FUN_02023918 + str r0, [r5, #0xc] + ldr r0, [r4, #0xc] + bl FUN_020238F4 + bl FUN_020239CC + str r0, [r5, #0x10] + add r0, r6, #0x0 + bl FUN_0205ED0C + str r0, [r5, #0x14] + ldr r0, [r4, #0xc] + bl FUN_02024DA0 + str r0, [r5, #0x18] + add r0, r6, #0x0 + bl FUN_0205ED0C + cmp r0, #0x0 + bne _0204871E + add r0, r4, #0x0 + bl FUN_0204B328 +_0204871E: + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + bl FUN_0204A25C + ldr r0, [sp, #0x8] + bl FUN_020377B0 + ldr r0, [sp, #0x4] + bl FUN_020377C8 + add r0, r6, #0x0 + bl FUN_0205F154 + add r0, r6, #0x0 + bl FUN_0205ECFC + ldr r0, [sp, #0x0] + bl FUN_02023A78 + ldr r0, [r4, #0xc] + bl FUN_02029FC8 + mov r1, #0x2e + bl FUN_0202A0E8 + ldr r1, _02048760 ; =FUN_020484F8 + add r0, r7, #0x0 + add r2, r5, #0x0 + bl FUN_0204640C + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02048760: .word FUN_020484F8 + + thumb_func_start FUN_02048764 +FUN_02048764: ; 0x02048764 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r1, #0x2c] + str r0, [r1, #0x30] + add r1, #0x1c + add r0, r1, #0x0 + bl FUN_0201901C + ldr r0, _020487D4 ; =0x020F46B0 + bl FUN_0201E66C + ldr r2, _020487D8 ; =0x04000304 + ldrh r1, [r2, #0x0] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2, #0x0] + ldr r0, _020487DC ; =0x020F4684 + bl FUN_02016BBC + mov r0, #0x3 + mov r1, #0x0 + bl FUN_02017FE4 + ldr r0, [r4, #0x8] + ldr r2, _020487E0 ; =0x020F4694 + mov r1, #0x3 + mov r3, #0x0 + bl FUN_02016C18 + mov r1, #0x20 + mov r0, #0x3 + mov r2, #0x0 + add r3, r1, #0x0 + bl FUN_02017F18 + mov r2, #0x0 + str r2, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x8] + mov r1, #0x3 + add r3, r2, #0x0 + bl FUN_02018540 + ldr r0, [r4, #0x8] + mov r1, #0x3 + bl FUN_02017CD0 + add sp, #0x10 + pop {r4, pc} + nop +_020487D4: .word 0x020F46B0 +_020487D8: .word 0x04000304 +_020487DC: .word 0x020F4684 +_020487E0: .word 0x020F4694 + + thumb_func_start FUN_020487E4 +FUN_020487E4: ; 0x020487E4 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl LoadPlayerDataAddress + add r6, r0, #0x0 + mov r0, #0x1a + mov r1, #0xc7 + mov r2, #0xf + mov r3, #0x20 + bl FUN_0200A738 + str r0, [r4, #0x2c] + add r1, r4, #0x0 + ldr r0, [r5, #0x8] + add r1, #0x1c + mov r2, #0x3 + bl FUN_020545B8 + add r0, r4, #0x0 + add r0, #0x1c + add r1, r6, #0x0 + bl FUN_02054608 + add r0, r4, #0x0 + ldr r1, [r4, #0x2c] + add r0, #0x1c + add r2, r6, #0x0 + mov r3, #0x1 + bl FUN_02054658 + str r0, [r4, #0x34] + add r0, r4, #0x0 + ldr r1, _02048834 ; =0x000003E2 + add r0, #0x1c + bl FUN_0200D858 + str r0, [r4, #0x30] + pop {r4-r6, pc} + .balign 4 +_02048834: .word 0x000003E2 + + thumb_func_start FUN_02048838 +FUN_02048838: ; 0x02048838 + ldr r0, [r0, #0x34] + ldr r3, _02048844 ; =FUN_020546C8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx r3 + nop +_02048844: .word FUN_020546C8 + + thumb_func_start FUN_02048848 +FUN_02048848: ; 0x02048848 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x2c] + bl FUN_02021A20 + ldr r0, [r4, #0x30] + bl FUN_0200DBFC + add r4, #0x1c + add r0, r4, #0x0 + bl FUN_0205464C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02048864 +FUN_02048864: ; 0x02048864 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc7 + mov r3, #0x4 + bl FUN_0200A86C + add r7, r0, #0x0 + cmp r6, #0x2 + bne _020488AC + mov r0, #0x4 + bl FUN_0200AA80 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r2, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0200ABC0 + add r0, r6, #0x0 + add r1, r7, #0x0 + mov r2, #0x10 + mov r3, #0x4 + bl FUN_0200A9C4 + str r0, [r4, #0x2c] + add r0, r6, #0x0 + bl FUN_0200AB18 + b _020488B4 +_020488AC: + mov r1, #0x12 + bl FUN_0200A914 + str r0, [r4, #0x2c] +_020488B4: + add r0, r7, #0x0 + bl FUN_0200A8B8 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + add r0, r4, #0x0 + ldr r1, [r4, #0x2c] + add r0, #0x1c + mov r3, #0x1 + bl FUN_02054658 + str r0, [r4, #0x34] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020488D4 +FUN_020488D4: ; 0x020488D4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020488E4 + bl FUN_02021A20 +_020488E4: + add r0, r4, #0x0 + add r0, #0x1c + bl FUN_02019048 + cmp r0, #0x0 + beq _020488F8 + add r4, #0x1c + add r0, r4, #0x0 + bl FUN_02019178 +_020488F8: + ldr r0, [r5, #0x8] + mov r1, #0x3 + bl FUN_020178A0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02048904 +FUN_02048904: ; 0x02048904 + ldr r1, [r0, #0x1c] + ldr r2, _02048950 ; =0x0000014B + ldr r1, [r1, #0x0] + cmp r1, r2 + bgt _0204892C + sub r2, r2, #0x5 + sub r2, r1, r2 + bmi _02048936 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02048920: ; jump table (using 16-bit offset) + .short _02048932 - _02048920 - 2; case 0 + .short _02048932 - _02048920 - 2; case 1 + .short _02048932 - _02048920 - 2; case 2 + .short _02048932 - _02048920 - 2; case 3 + .short _02048932 - _02048920 - 2; case 4 + .short _02048932 - _02048920 - 2; case 5 +_0204892C: + ldr r2, _02048954 ; =0x000001ED + cmp r1, r2 + bne _02048936 +_02048932: + mov r2, #0x1 + b _02048938 +_02048936: + mov r2, #0x0 +_02048938: + cmp r2, #0x0 + bne _02048946 + ldr r1, [r0, #0x6c] + cmp r1, #0x4 + bne _02048946 + mov r1, #0x0 + str r1, [r0, #0x6c] +_02048946: + cmp r2, #0x0 + beq _0204894E + mov r1, #0x4 + str r1, [r0, #0x6c] +_0204894E: + bx lr + .balign 4 +_02048950: .word 0x0000014B +_02048954: .word 0x000001ED + + thumb_func_start FUN_02048958 +FUN_02048958: ; 0x02048958 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_02034E30 + add r6, r0, #0x0 + bl FUN_02034DC8 + add r2, r0, #0x0 + cmp r4, #0x0 + beq _0204898C + ldr r3, [r5, #0x1c] + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldr r2, [r5, #0x1c] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] +_0204898C: + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + bl FUN_02034A60 + ldr r0, [r5, #0x1c] + ldr r1, [r0, #0x4] + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + beq _020489DA + add r0, r5, #0x0 + bl FUN_02034B00 + ldrh r2, [r0, #0x0] + ldr r1, [r5, #0x1c] + str r2, [r1, #0x8] + ldrh r2, [r0, #0x2] + ldr r1, [r5, #0x1c] + str r2, [r1, #0xc] + ldrh r1, [r0, #0x6] + mov r0, #0x1 + lsl r0, r0, #0x8 + cmp r1, r0 + bne _020489DA + add r0, r6, #0x0 + bl FUN_02034DD0 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02034DC4 + add r2, r0, #0x0 + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r4, #0x0] +_020489DA: + pop {r4-r6, pc} + + thumb_func_start FUN_020489DC +FUN_020489DC: ; 0x020489DC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x6c] + cmp r0, #0x5 + blt _020489EA + bl ErrorHandling +_020489EA: + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x0] + lsl r0, r0, #0x10 + lsr r1, r0, #0x1c + ldr r0, _020489F8 ; =0x021C4918 + strb r1, [r0, #0x5] + pop {r4, pc} + .balign 4 +_020489F8: .word 0x021C4918 + + thumb_func_start FUN_020489FC +FUN_020489FC: ; 0x020489FC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, [r5, #0x1c] + add r4, r1, #0x0 + ldr r7, [r0, #0x0] + ldr r0, [r5, #0xc] + bl FUN_02034E30 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_0204AB44 + add r0, r5, #0x0 + bl FUN_02039564 + cmp r4, #0x0 + bne _02048A28 + add r0, r5, #0x0 + bl FUN_020636DC + b _02048A2E +_02048A28: + add r0, r5, #0x0 + bl FUN_02063684 +_02048A2E: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F408 + cmp r4, #0x0 + bne _02048A42 + add r0, r5, #0x0 + bl FUN_0204B0F8 +_02048A42: + cmp r4, #0x0 + bne _02048A50 + ldr r0, [r5, #0xc] + bl FUN_02024ED8 + bl FUN_02025484 +_02048A50: + ldr r0, [r5, #0xc] + bl FUN_020462AC + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02034FE4 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0xe + bne _02048A72 + ldr r0, [sp, #0x0] + bl FUN_0205F2C4 + cmp r0, #0x1 + beq _02048A80 +_02048A72: + cmp r6, #0x10 + bne _02048A82 + ldr r0, [sp, #0x0] + bl FUN_0205F294 + cmp r0, #0x1 + bne _02048A82 +_02048A80: + mov r6, #0x0 +_02048A82: + ldr r0, [sp, #0x4] + add r1, r6, #0x0 + bl FUN_02034DF4 + cmp r4, #0x0 + beq _02048AA6 + ldr r0, [sp, #0x4] + bl FUN_02034E10 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0203484C + cmp r6, r0 + beq _02048AB4 + bl ErrorHandling + b _02048AB4 +_02048AA6: + add r0, r7, #0x0 + bl FUN_0203484C + add r1, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02034E18 +_02048AB4: + cmp r4, #0x0 + bne _02048ACA + add r0, r7, #0x0 + bl FUN_02034EF8 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _02048ACA + ldr r0, [sp, #0x4] + bl FUN_02034E04 +_02048ACA: + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0203989C + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0x74 + strh r1, [r0, #0x0] + add r5, #0x76 + strh r1, [r5, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02048AE4 +FUN_02048AE4: ; 0x02048AE4 + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r1, #0x40 + mov r2, #0x5 + bl FUN_02057380 + str r0, [r5, #0x34] + ldr r0, [r5, #0xc] + bl FUN_020238F4 + bl FUN_020239CC + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E20 + ldr r3, [r5, #0x1c] + ldr r1, [r0, #0x4] + str r1, [sp, #0x0] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r5, #0x34] + ldr r1, [r3, #0x8] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_02055068 + str r0, [r5, #0x38] + add r0, r5, #0x0 + bl FUN_02034AC8 + ldr r0, [r5, #0x34] + bl FUN_02058768 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_02048B34 +FUN_02048B34: ; 0x02048B34 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204CC48 + ldr r0, [r4, #0x38] + bl FUN_02055160 + ldr r0, [r4, #0x34] + bl FUN_0205771C + ldr r0, [r4, #0x34] + bl FUN_020573AC + pop {r4, pc} + + thumb_func_start FUN_02048B50 +FUN_02048B50: ; 0x02048B50 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x40 + mov r2, #0x5 + bl FUN_02057380 + str r0, [r5, #0x34] + add r0, r5, #0x0 + bl FUN_02034E60 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E20 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + bl FUN_020239CC + add r2, r0, #0x0 + ldr r0, [r5, #0x34] + add r1, r4, #0x0 + bl FUN_020550A4 + str r0, [r5, #0x38] + ldr r0, [r5, #0x34] + bl FUN_02058768 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02048B90 +FUN_02048B90: ; 0x02048B90 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02048904 + ldr r0, [r4, #0x58] + cmp r0, #0x0 + beq _02048BA2 + bl ErrorHandling +_02048BA2: + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x28] + ldr r0, [r0, #0x0] + bl FUN_020344AC + ldr r0, [r4, #0xc] + bl FUN_020462AC + mov r1, #0x3 + bl FUN_0205F524 + cmp r0, #0x0 + beq _02048BC2 + ldr r0, [r4, #0x28] + bl FUN_020346CC +_02048BC2: + ldr r0, [r4, #0xc] + bl FUN_020462AC + mov r1, #0x2 + bl FUN_0205F524 + cmp r0, #0x0 + bne _02048BD8 + ldr r0, [r4, #0x28] + bl FUN_02034678 +_02048BD8: + ldr r0, [r4, #0x6c] + cmp r0, #0x5 + blt _02048BE2 + bl ErrorHandling +_02048BE2: + ldr r0, [r4, #0x6c] + ldr r1, _02048C28 ; =0x020F46E0 + lsl r0, r0, #0x3 + add r0, r1, r0 + str r0, [r4, #0x70] + ldr r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + str r0, [r4, #0x5c] + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + str r0, [r4, #0x18] + ldr r1, [r4, #0x70] + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r0, #0x58 + lsl r1, r1, #0x14 + lsr r1, r1, #0x1c + bl FUN_0204A690 + ldr r0, [r4, #0x70] + ldr r1, [r0, #0x0] + lsl r0, r1, #0xc + lsr r0, r0, #0x1c + beq _02048C24 + lsr r1, r1, #0x18 + lsl r1, r1, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + bl FUN_0204A368 +_02048C24: + pop {r4, pc} + nop +_02048C28: .word 0x020F46E0 + + thumb_func_start FUN_02048C2C +FUN_02048C2C: ; 0x02048C2C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x58] + cmp r0, #0x0 + bne _02048C3A + bl ErrorHandling +_02048C3A: + mov r0, #0x0 + str r0, [r4, #0x58] + mov r0, #0x5 + str r0, [r4, #0x18] + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x0] + lsl r0, r0, #0xc + lsr r0, r0, #0x1c + beq _02048C52 + add r0, r4, #0x0 + bl FUN_0204A390 +_02048C52: + mov r0, #0x0 + str r0, [r4, #0x70] + pop {r4, pc} + + thumb_func_start FUN_02048C58 +FUN_02048C58: ; 0x02048C58 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02048C7E + ldr r0, [r4, #0x1c] + mov r1, #0xb + ldr r0, [r0, #0x0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02028FA4 + add r4, #0x98 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x0 + bl FUN_02028AD4 +_02048C7E: + pop {r4, pc} + + thumb_func_start FUN_02048C80 +FUN_02048C80: ; 0x02048C80 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x98 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02048CAE + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + ldr r0, [r0, #0x0] + mov r1, #0xb + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02028FA4 + add r4, #0x98 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x0 + bl FUN_02028AD4 +_02048CAE: + pop {r4, pc} + + thumb_func_start FUN_02048CB0 +FUN_02048CB0: ; 0x02048CB0 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r6, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_02055320 + ldr r1, [r4, #0x1c] + ldr r1, [r1, #0x0] + str r1, [r5, #0x0] + mov r1, #0x0 + mvn r1, r1 + str r1, [r5, #0x4] + str r0, [r5, #0x8] + str r6, [r5, #0xc] + mov r0, #0x1 + str r0, [r5, #0x10] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02048CDC +FUN_02048CDC: ; 0x02048CDC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_020349E4 + cmp r0, #0x0 + beq _02048CFE + ldr r1, [r4, #0x1c] + ldr r0, [r1, #0x8] + cmp r0, #0x7 + bne _02048CFE + ldr r0, [r1, #0xc] + cmp r0, #0x6 + bne _02048CFE + mov r0, #0x1 + pop {r4, pc} +_02048CFE: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02048D04 +FUN_02048D04: ; 0x02048D04 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + str r0, [r4, #0x0] + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0x4] + mov r0, #0x8 + str r0, [r4, #0x8] + mov r0, #0x2 + str r0, [r4, #0xc] + mov r0, #0x1 + str r0, [r4, #0x10] + pop {r3-r5, pc} + + thumb_func_start FUN_02048D34 +FUN_02048D34: ; 0x02048D34 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02048D56 + cmp r0, #0x1 + beq _02048D7A + cmp r0, #0x2 + beq _02048D88 + b _02048D8C +_02048D56: + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + bl FUN_02048958 + add r0, r5, #0x0 + bl FUN_02048B90 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020489FC + add r0, r5, #0x0 + bl FUN_02048AE4 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048D8C +_02048D7A: + add r0, r6, #0x0 + bl FUN_0204B0E8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02048D8C +_02048D88: + mov r0, #0x1 + pop {r4-r6, pc} +_02048D8C: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02048D90 +FUN_02048D90: ; 0x02048D90 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + str r1, [r4, #0x6c] + bl FUN_02039874 + ldr r1, _02048DA8 ; =FUN_02048D34 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_020463CC + pop {r4, pc} + .balign 4 +_02048DA8: .word FUN_02048D34 + + thumb_func_start FUN_02048DAC +FUN_02048DAC: ; 0x02048DAC + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02046530 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x4 + bhi _02048EC2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02048DD8: ; jump table (using 16-bit offset) + .short _02048DE2 - _02048DD8 - 2; case 0 + .short _02048E10 - _02048DD8 - 2; case 1 + .short _02048EA4 - _02048DD8 - 2; case 2 + .short _02048EB0 - _02048DD8 - 2; case 3 + .short _02048EB4 - _02048DD8 - 2; case 4 +_02048DE2: + ldr r0, [r4, #0xc] + bl FUN_02025B94 + add r0, r6, #0x0 + mov r1, #0x2 + bl FUN_0205F2D4 + add r7, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020289A4 + add r1, r7, #0x0 + bl FUN_02028A20 + cmp r0, #0x0 + beq _02048E10 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02037944 + mov r0, #0x4 + str r0, [r5, #0x0] + b _02048EC2 +_02048E10: + add r0, r6, #0x0 + mov r1, #0x2 + bl FUN_0205F2D4 + add r7, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020289A4 + add r1, r7, #0x0 + bl FUN_020289B0 + add r1, r4, #0x0 + add r1, #0x98 + str r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_0205F174 + cmp r0, #0x0 + beq _02048E78 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02048CDC + cmp r0, #0x0 + beq _02048E4E + add r0, r4, #0x0 + bl FUN_02048D04 +_02048E4E: + add r0, r6, #0x0 + bl FUN_0205F164 + add r0, r7, #0x0 + bl FUN_02034DD0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02048958 + add r0, r4, #0x0 + bl FUN_02048B90 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020489FC + add r0, r4, #0x0 + bl FUN_02048AE4 + b _02048E92 +_02048E78: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02048958 + add r0, r4, #0x0 + bl FUN_02048B90 + add r0, r4, #0x0 + bl FUN_0204B0F8 + add r0, r4, #0x0 + bl FUN_02048B50 +_02048E92: + add r0, r4, #0x0 + bl FUN_02048C58 + add r0, r4, #0x0 + bl FUN_02063808 + mov r0, #0x2 + str r0, [r5, #0x0] + b _02048EC2 +_02048EA4: + add r0, r7, #0x0 + bl FUN_0204B0E8 + mov r0, #0x3 + str r0, [r5, #0x0] + b _02048EC2 +_02048EB0: + mov r0, #0x1 + pop {r3-r7, pc} +_02048EB4: + add r0, r4, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _02048EC2 + mov r0, #0x1 + str r0, [r5, #0x0] +_02048EC2: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02048EC8 +FUN_02048EC8: ; 0x02048EC8 + ldr r3, _02048ED4 ; =FUN_020463CC + mov r2, #0x0 + str r2, [r0, #0x6c] + ldr r1, _02048ED8 ; =FUN_02048DAC + bx r3 + nop +_02048ED4: .word FUN_020463CC +_02048ED8: .word FUN_02048DAC + + thumb_func_start FUN_02048EDC +FUN_02048EDC: ; 0x02048EDC + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + str r0, [sp, #0x0] + add r0, r7, #0x0 + bl FUN_02046530 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x5 + bhi _02048FC4 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02048F10: ; jump table (using 16-bit offset) + .short _02048F1C - _02048F10 - 2; case 0 + .short _02048F54 - _02048F10 - 2; case 1 + .short _02048F7E - _02048F10 - 2; case 2 + .short _02048F9A - _02048F10 - 2; case 3 + .short _02048FAE - _02048F10 - 2; case 4 + .short _02048FBA - _02048F10 - 2; case 5 +_02048F1C: + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + ldr r0, [r4, #0xc] + bl FUN_02025B94 + ldr r0, [sp, #0x0] + mov r1, #0x2 + bl FUN_0205F2D4 + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020289A4 + add r1, r6, #0x0 + bl FUN_020289B0 + add r4, #0x98 + str r0, [r4, #0x0] + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02048FC4 +_02048F54: + add r0, r4, #0x0 + add r1, r6, #0x4 + bl FUN_02048958 + add r0, r4, #0x0 + bl FUN_02048B90 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020489FC + add r0, r4, #0x0 + bl FUN_02048AE4 + add r0, r4, #0x0 + bl FUN_02048C80 + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02048FC4 +_02048F7E: + add r0, r4, #0x0 + bl FUN_020520AC + str r0, [r4, #0x78] + bl FUN_02052EE8 + str r0, [r4, #0x7c] + add r0, r7, #0x0 + bl FUN_0204AF84 + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02048FC4 +_02048F9A: + mov r1, #0x0 + str r1, [r6, #0x0] + add r0, r4, #0x0 + add r2, r6, #0x0 + bl FUN_021E7750 + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02048FC4 +_02048FAE: + ldr r1, [r6, #0x0] + cmp r1, #0x0 + beq _02048FC4 + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02048FC4 +_02048FBA: + add r0, r6, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02048FC4: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02048FC8 +FUN_02048FC8: ; 0x02048FC8 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034998 + cmp r0, #0x0 + bne _02049000 + add r0, r4, #0x0 + bl FUN_02048CDC + cmp r0, #0x0 + beq _02048FF8 + ldr r0, [r4, #0xc] + bl FUN_020462AC + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02048D04 + add r0, r5, #0x0 + bl FUN_0205F154 + b _02049000 +_02048FF8: + add r0, r4, #0x0 + bl FUN_02048EC8 + pop {r3-r5, pc} +_02049000: + mov r0, #0xb + mov r1, #0x18 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r1, #0x0 + ldr r0, _02049030 ; =0x000001D2 + str r1, [r2, #0x0] + str r0, [r2, #0x4] + sub r0, r1, #0x1 + str r0, [r2, #0x8] + mov r0, #0x8 + str r0, [r2, #0xc] + mov r0, #0xe + str r0, [r2, #0x10] + str r1, [r2, #0x14] + mov r0, #0x2 + str r0, [r4, #0x6c] + ldr r1, _02049034 ; =FUN_02048EDC + add r0, r4, #0x0 + bl FUN_020463CC + pop {r3-r5, pc} + nop +_02049030: .word 0x000001D2 +_02049034: .word FUN_02048EDC + + thumb_func_start FUN_02049038 +FUN_02049038: ; 0x02049038 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x3 + bhi _020490B6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0204905C: ; jump table (using 16-bit offset) + .short _02049064 - _0204905C - 2; case 0 + .short _02049080 - _0204905C - 2; case 1 + .short _02049090 - _0204905C - 2; case 2 + .short _020490AE - _0204905C - 2; case 3 +_02049064: + ldr r0, _020490BC ; =0x00000603 + bl FUN_020054C8 + ldr r1, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_0204AD60 + add r0, r5, #0x0 + bl FUN_0204B090 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020490B6 +_02049080: + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020490B6 +_02049090: + bl FUN_02005404 + cmp r0, #0x0 + bne _020490B6 + ldr r1, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_0204AD8C + add r0, r5, #0x0 + bl FUN_0204B0E8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020490B6 +_020490AE: + bl FUN_02016A18 + mov r0, #0x1 + pop {r4-r6, pc} +_020490B6: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_020490BC: .word 0x00000603 + + thumb_func_start FUN_020490C0 +FUN_020490C0: ; 0x020490C0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0xb + mov r1, #0x1c + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + ldmia r4!, {r0-r1} + add r3, r2, #0x4 + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + ldr r1, _020490EC ; =FUN_02049038 + str r0, [r3, #0x0] + add r0, r5, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + .balign 4 +_020490EC: .word FUN_02049038 + + thumb_func_start FUN_020490F0 +FUN_020490F0: ; 0x020490F0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02049112 + cmp r0, #0x1 + beq _02049126 + cmp r0, #0x2 + beq _0204914C + b _0204915C +_02049112: + add r0, r5, #0x0 + bl FUN_02048B34 + add r0, r5, #0x0 + bl FUN_02048C2C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204915C +_02049126: + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_02048958 + add r0, r5, #0x0 + bl FUN_02048B90 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020489FC + add r5, #0x90 + ldr r0, [r5, #0x0] + bl FUN_0205DD40 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204915C +_0204914C: + add r0, r5, #0x0 + bl FUN_02048AE4 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0204915C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02049160 +FUN_02049160: ; 0x02049160 + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + beq _02049186 + bl ErrorHandling + pop {r3-r7, pc} +_02049186: + mov r0, #0x0 + str r0, [r4, #0x0] + ldmia r5!, {r0-r1} + add r2, r4, #0x4 + stmia r2!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r5, #0x0] + ldr r1, _020491A4 ; =FUN_020490F0 + str r0, [r2, #0x0] + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_020491A4: .word FUN_020490F0 + + thumb_func_start FUN_020491A8 +FUN_020491A8: ; 0x020491A8 + push {lr} + sub sp, #0x14 + str r1, [sp, #0x0] + ldr r1, [sp, #0x18] + str r2, [sp, #0x4] + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + str r3, [sp, #0x8] + str r1, [sp, #0x10] + add r1, sp, #0x0 + bl FUN_02049160 + add sp, #0x14 + pop {pc} + + thumb_func_start FUN_020491C4 +FUN_020491C4: ; 0x020491C4 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x3 + bhi _0204923C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020491E8: ; jump table (using 16-bit offset) + .short _020491F0 - _020491E8 - 2; case 0 + .short _02049206 - _020491E8 - 2; case 1 + .short _02049216 - _020491E8 - 2; case 2 + .short _02049234 - _020491E8 - 2; case 3 +_020491F0: + ldr r1, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_0204AD60 + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204923C +_02049206: + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204923C +_02049216: + bl FUN_02005404 + cmp r0, #0x0 + bne _0204923C + ldr r1, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_0204AD8C + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204923C +_02049234: + bl FUN_02016A18 + mov r0, #0x1 + pop {r4-r6, pc} +_0204923C: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02049240 +FUN_02049240: ; 0x02049240 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x18 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r5, [r2, #0x4] + str r4, [r2, #0x8] + ldr r0, [sp, #0x18] + str r6, [r2, #0xc] + str r0, [r2, #0x10] + ldr r0, [sp, #0x1c] + ldr r1, _02049270 ; =FUN_020491C4 + str r0, [r2, #0x14] + add r0, r7, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_02049270: .word FUN_020491C4 + + thumb_func_start FUN_02049274 +FUN_02049274: ; 0x02049274 + push {r4-r5, lr} + sub sp, #0x14 + add r4, r0, #0x0 + ldr r0, [sp, #0x20] + str r1, [sp, #0x0] + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + mov r1, #0x20 + str r0, [sp, #0x10] + mov r0, #0xb + str r2, [sp, #0x4] + str r3, [sp, #0x8] + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + add r3, r2, #0x0 + add r5, sp, #0x0 + str r0, [r2, #0x4] + ldmia r5!, {r0-r1} + add r3, #0x8 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + ldr r1, _020492B8 ; =FUN_02049304 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_020463CC + add sp, #0x14 + pop {r4-r5, pc} + nop +_020492B8: .word FUN_02049304 + + thumb_func_start FUN_020492BC +FUN_020492BC: ; 0x020492BC + push {r4-r5, lr} + sub sp, #0x14 + add r4, r0, #0x0 + ldr r0, [sp, #0x20] + str r1, [sp, #0x0] + str r0, [sp, #0xc] + ldr r0, [sp, #0x24] + mov r1, #0x20 + str r0, [sp, #0x10] + mov r0, #0xb + str r2, [sp, #0x4] + str r3, [sp, #0x8] + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + add r3, r2, #0x0 + add r5, sp, #0x0 + str r0, [r2, #0x4] + ldmia r5!, {r0-r1} + add r3, #0x8 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + ldr r1, _02049300 ; =FUN_02049304 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_020463EC + add sp, #0x14 + pop {r4-r5, pc} + nop +_02049300: .word FUN_02049304 + + thumb_func_start FUN_02049304 +FUN_02049304: ; 0x02049304 + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r5, r4, #0x0 + ldr r1, [r4, #0x0] + add r5, #0x8 + cmp r1, #0x3 + bhi _02049390 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0204932C: ; jump table (using 16-bit offset) + .short _02049334 - _0204932C - 2; case 0 + .short _0204934A - _0204932C - 2; case 1 + .short _02049364 - _0204932C - 2; case 2 + .short _02049388 - _0204932C - 2; case 3 +_02049334: + ldr r1, [r5, #0x0] + add r0, r6, #0x0 + bl FUN_0204AD60 + add r0, r7, #0x0 + bl FUN_02049394 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049390 +_0204934A: + ldr r0, [r6, #0x38] + mov r1, #0x0 + bl FUN_020553A8 + add r1, r4, #0x0 + add r0, r7, #0x0 + add r1, #0x8 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049390 +_02049364: + bl FUN_02005404 + cmp r0, #0x0 + bne _02049390 + ldr r1, [r5, #0x0] + add r0, r6, #0x0 + bl FUN_0204AD8C + add r0, r6, #0x0 + bl FUN_020637A8 + add r0, r7, #0x0 + bl FUN_020493D0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049390 +_02049388: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02049390: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02049394 +FUN_02049394: ; 0x02049394 + ldr r3, _0204939C ; =FUN_0204640C + ldr r1, _020493A0 ; =FUN_020493A4 + mov r2, #0x0 + bx r3 + .balign 4 +_0204939C: .word FUN_0204640C +_020493A0: .word FUN_020493A4 + + thumb_func_start FUN_020493A4 +FUN_020493A4: ; 0x020493A4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020493BA + cmp r0, #0x1 + beq _020493C8 + b _020493CC +_020493BA: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020493CC +_020493C8: + mov r0, #0x1 + pop {r3-r5, pc} +_020493CC: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020493D0 +FUN_020493D0: ; 0x020493D0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204652C + add r2, r0, #0x0 + ldr r1, _020493E4 ; =FUN_020493E8 + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + .balign 4 +_020493E4: .word FUN_020493E8 + + thumb_func_start FUN_020493E8 +FUN_020493E8: ; 0x020493E8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _02049408 + cmp r1, #0x1 + beq _02049416 + cmp r1, #0x2 + beq _02049428 + b _0204942C +_02049408: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204942C +_02049416: + bl FUN_021E331C + add r0, r5, #0x0 + bl FUN_02049430 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204942C +_02049428: + mov r0, #0x1 + pop {r3-r5, pc} +_0204942C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02049430 +FUN_02049430: ; 0x02049430 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + bne _02049452 + bl ErrorHandling + pop {r4-r6, pc} +_02049452: + ldr r0, [r5, #0x38] + bl FUN_020553E8 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_022483BC + str r0, [r4, #0x4] + ldr r1, _02049470 ; =FUN_02049474 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + nop +_02049470: .word FUN_02049474 + + thumb_func_start FUN_02049474 +FUN_02049474: ; 0x02049474 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + bl FUN_022483E0 + cmp r0, #0x1 + bne _02049490 + ldr r0, [r4, #0x4] + bl FUN_022483EC + mov r0, #0x1 + pop {r4, pc} +_02049490: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02049494 +FUN_02049494: ; 0x02049494 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x20 + add r4, r2, #0x0 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r4, [r2, #0x4] + str r0, [r2, #0x8] + add r3, r2, #0x0 + ldmia r5!, {r0-r1} + add r3, #0xc + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + ldr r1, _020494C8 ; =FUN_020494CC + str r0, [r3, #0x0] + add r0, r6, #0x0 + bl FUN_020463EC + pop {r4-r6, pc} + .balign 4 +_020494C8: .word FUN_020494CC + + thumb_func_start FUN_020494CC +FUN_020494CC: ; 0x020494CC + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r6, r4, #0x0 + ldr r1, [r4, #0x0] + add r6, #0xc + cmp r1, #0x3 + bhi _02049570 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020494F4: ; jump table (using 16-bit offset) + .short _020494FC - _020494F4 - 2; case 0 + .short _02049512 - _020494F4 - 2; case 1 + .short _0204952C - _020494F4 - 2; case 2 + .short _02049568 - _020494F4 - 2; case 3 +_020494FC: + ldr r1, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_0204AD60 + add r0, r7, #0x0 + bl FUN_02049574 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049570 +_02049512: + ldr r0, [r5, #0x38] + mov r1, #0x0 + bl FUN_020553A8 + add r1, r4, #0x0 + add r0, r7, #0x0 + add r1, #0xc + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049570 +_0204952C: + bl FUN_02005404 + cmp r0, #0x0 + bne _02049570 + ldr r1, [r6, #0x0] + add r0, r5, #0x0 + bl FUN_0204AD8C + ldr r0, [r4, #0x4] + cmp r0, #0x2 + bne _0204954A + add r0, r5, #0x0 + bl FUN_020637C4 + b _0204955A +_0204954A: + cmp r0, #0x1 + bhi _02049556 + add r0, r5, #0x0 + bl FUN_020637E0 + b _0204955A +_02049556: + bl ErrorHandling +_0204955A: + add r0, r7, #0x0 + bl FUN_020495B0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049570 +_02049568: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02049570: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02049574 +FUN_02049574: ; 0x02049574 + ldr r3, _0204957C ; =FUN_0204640C + ldr r1, _02049580 ; =FUN_02049584 + mov r2, #0x0 + bx r3 + .balign 4 +_0204957C: .word FUN_0204640C +_02049580: .word FUN_02049584 + + thumb_func_start FUN_02049584 +FUN_02049584: ; 0x02049584 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0204959A + cmp r0, #0x1 + beq _020495A8 + b _020495AC +_0204959A: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020495AC +_020495A8: + mov r0, #0x1 + pop {r3-r5, pc} +_020495AC: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020495B0 +FUN_020495B0: ; 0x020495B0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204652C + add r2, r0, #0x0 + ldr r1, _020495C4 ; =FUN_020495C8 + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + .balign 4 +_020495C4: .word FUN_020495C8 + + thumb_func_start FUN_020495C8 +FUN_020495C8: ; 0x020495C8 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020495F0 + cmp r0, #0x1 + beq _020495FE + cmp r0, #0x2 + beq _02049612 + b _02049616 +_020495F0: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049616 +_020495FE: + add r0, r6, #0x0 + bl FUN_021E331C + add r0, r5, #0x0 + bl FUN_0204961C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049616 +_02049612: + mov r0, #0x1 + pop {r4-r6, pc} +_02049616: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204961C +FUN_0204961C: ; 0x0204961C + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + bne _0204963E + bl ErrorHandling + pop {r4-r6, pc} +_0204963E: + ldr r2, [r6, #0x4] + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_0224C8C8 + add r2, r0, #0x0 + ldr r1, _02049654 ; =0x0224C8E9 + add r0, r5, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + .balign 4 +_02049654: .word 0x0224C8E9 + + thumb_func_start FUN_02049658 +FUN_02049658: ; 0x02049658 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r5, r4, #0x0 + ldr r1, [r4, #0x0] + add r5, #0x8 + cmp r1, #0x6 + bhi _02049712 + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02049680: ; jump table (using 16-bit offset) + .short _0204968E - _02049680 - 2; case 0 + .short _020496A0 - _02049680 - 2; case 1 + .short _020496BC - _02049680 - 2; case 2 + .short _020496CC - _02049680 - 2; case 3 + .short _020496EA - _02049680 - 2; case 4 + .short _020496FE - _02049680 - 2; case 5 + .short _0204970A - _02049680 - 2; case 6 +_0204968E: + add r0, r7, #0x0 + mov r1, #0x1 + add r2, r4, #0x4 + bl FUN_021E7750 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049712 +_020496A0: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02049712 + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_0204AD60 + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049712 +_020496BC: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049712 +_020496CC: + bl FUN_02005404 + cmp r0, #0x0 + bne _02049712 + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_0204AD8C + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049712 +_020496EA: + mov r1, #0x0 + str r1, [r4, #0x4] + add r0, r7, #0x0 + add r2, r4, #0x4 + bl FUN_021E7750 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049712 +_020496FE: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02049712 + add r0, r1, #0x1 + str r0, [r4, #0x0] + b _02049712 +_0204970A: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02049712: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02049718 +FUN_02049718: ; 0x02049718 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0xb + mov r1, #0x1c + add r6, r2, #0x0 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x1c + add r7, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + mov r1, #0x0 + add r2, r7, #0x0 + str r4, [sp, #0x0] + str r6, [sp, #0x4] + add r3, sp, #0x0 + str r1, [sp, #0x8] + str r1, [sp, #0xc] + str r0, [sp, #0x10] + ldmia r3!, {r0-r1} + add r2, #0x8 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r1, _02049768 ; =FUN_02049658 + str r0, [r2, #0x0] + add r0, r5, #0x0 + add r2, r7, #0x0 + bl FUN_020463CC + add sp, #0x14 + pop {r4-r7, pc} + nop +_02049768: .word FUN_02049658 + + thumb_func_start FUN_0204976C +FUN_0204976C: ; 0x0204976C + push {r4-r6, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x40 + bl FUN_020169D8 + add r5, r0, #0x0 + mov r1, #0x0 + str r1, [r5, #0x0] + str r1, [r5, #0x4] + ldr r0, [r6, #0x6c] + cmp r0, #0x1 + bne _020497A4 + ldr r0, [r4, #0x0] + str r0, [r5, #0x8] + sub r0, r1, #0x1 + str r0, [r5, #0xc] + ldr r0, [r4, #0x8] + str r0, [r5, #0x10] + ldr r0, [r4, #0xc] + str r0, [r5, #0x14] + b _02049820 +_020497A4: + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02048CB0 + mov r0, #0x2 + str r0, [r5, #0x8] + sub r0, r0, #0x3 + str r0, [r5, #0xc] + ldr r1, [r4, #0x8] + asr r0, r1, #0x4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #0x5 + ldr r1, [r4, #0xc] + sub r6, r0, #0x1 + asr r0, r1, #0x4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r0, r0, #0x5 + sub r4, r0, #0x6 + cmp r6, #0x0 + bge _020497D4 + bl ErrorHandling +_020497D4: + cmp r4, #0x0 + bge _020497DC + bl ErrorHandling +_020497DC: + lsr r2, r6, #0x1f + lsl r1, r6, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + bne _020497EE + mov r0, #0x8 + b _020497F0 +_020497EE: + mov r0, #0x17 +_020497F0: + lsr r3, r4, #0x1f + lsl r2, r4, #0x1f + sub r2, r2, r3 + mov r1, #0x1f + ror r2, r1 + add r1, r3, r2 + bne _02049802 + mov r1, #0x8 + b _02049804 +_02049802: + mov r1, #0x17 +_02049804: + lsr r2, r6, #0x1f + add r2, r6, r2 + asr r2, r2, #0x1 + add r6, r2, #0x1 + lsr r2, r4, #0x1f + add r2, r4, r2 + asr r2, r2, #0x1 + add r3, r2, #0x3 + lsl r2, r6, #0x5 + add r0, r0, r2 + str r0, [r5, #0x10] + lsl r0, r3, #0x5 + add r0, r1, r0 + str r0, [r5, #0x14] +_02049820: + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02049824 +FUN_02049824: ; 0x02049824 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0204976C + add r4, r0, #0x0 + beq _02049840 + add r0, r5, #0x0 + bl FUN_02049BE8 + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463CC +_02049840: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02049844 +FUN_02049844: ; 0x02049844 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0xc + bhi _0204992C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204986A: ; jump table (using 16-bit offset) + .short _02049884 - _0204986A - 2; case 0 + .short _020498DC - _0204986A - 2; case 1 + .short _02049918 - _0204986A - 2; case 2 + .short _0204995E - _0204986A - 2; case 3 + .short _020499A2 - _0204986A - 2; case 4 + .short _020499D0 - _0204986A - 2; case 5 + .short _020499E2 - _0204986A - 2; case 6 + .short _020499F2 - _0204986A - 2; case 7 + .short _02049A06 - _0204986A - 2; case 8 + .short _02049A14 - _0204986A - 2; case 9 + .short _02049A42 - _0204986A - 2; case 10 + .short _02049A64 - _0204986A - 2; case 11 + .short _02049A96 - _0204986A - 2; case 12 +_02049884: + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xcf + mov r3, #0xb + bl FUN_0200A86C + add r6, r0, #0x0 + mov r1, #0x7c + bl FUN_0200A914 + str r0, [r4, #0x34] + add r0, r6, #0x0 + bl FUN_0200A8B8 + add r1, r4, #0x0 + ldr r0, [r5, #0x8] + add r1, #0x24 + mov r2, #0x3 + bl FUN_020545B8 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x24 + bl FUN_02054608 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + add r0, r4, #0x0 + ldr r1, [r4, #0x34] + add r0, #0x24 + mov r3, #0x1 + bl FUN_02054658 + add r1, r4, #0x0 + add r1, #0x38 + strb r0, [r1, #0x0] + mov r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_020498DC: + add r0, r4, #0x0 + add r0, #0x38 + ldrb r0, [r0, #0x0] + bl FUN_020546C8 + cmp r0, #0x1 + bne _0204992C + ldr r0, [r4, #0x34] + bl FUN_02021A20 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r3, #0xb + str r3, [sp, #0x4] + ldr r0, [r5, #0x8] + ldr r2, _02049AB8 ; =0x000003D9 + mov r1, #0x3 + bl FUN_0200CB00 + mov r3, #0xb + str r3, [sp, #0x0] + ldr r0, [r5, #0x8] + ldr r1, _02049ABC ; =0x020F46D8 + ldr r2, _02049AB8 ; =0x000003D9 + bl FUN_02002198 + str r0, [r4, #0x3c] + mov r0, #0x2 + str r0, [r4, #0x0] + b _02049AB2 +_02049918: + ldr r0, [r4, #0x3c] + mov r1, #0xb + bl FUN_020021AC + cmp r0, #0x0 + beq _0204992E + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _02049946 +_0204992C: + b _02049AB2 +_0204992E: + add r0, r4, #0x0 + add r0, #0x24 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r4, #0x0 + add r0, #0x24 + bl FUN_02019178 + mov r0, #0x3 + str r0, [r4, #0x0] + b _02049AB2 +_02049946: + add r0, r4, #0x0 + add r0, #0x24 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r4, #0x0 + add r0, #0x24 + bl FUN_02019178 + mov r0, #0x5 + str r0, [r4, #0x0] + b _02049AB2 +_0204995E: + ldr r0, [r5, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + beq _02049976 + mov r2, #0x0 + ldr r1, _02049AC0 ; =0x000007F2 + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + b _0204999C +_02049976: + ldr r0, [r5, #0xc] + bl FUN_02025BE8 + add r0, r5, #0x0 + mov r1, #0xb + mov r2, #0x3 + bl FUN_021E8588 + str r0, [r4, #0x20] + bl FUN_021E84F4 + add r3, r4, #0x0 + mov r2, #0x0 + ldr r1, _02049AC4 ; =0x000007D5 + add r0, r6, #0x0 + add r3, #0x1c + strh r2, [r4, #0x1c] + bl FUN_02038CD8 +_0204999C: + mov r0, #0x4 + str r0, [r4, #0x0] + b _02049AB2 +_020499A2: + ldr r0, [r5, #0xc] + bl FUN_0202280C + cmp r0, #0x0 + beq _020499B2 + mov r0, #0x5 + str r0, [r4, #0x0] + b _02049AB2 +_020499B2: + ldr r0, [r4, #0x20] + bl FUN_021E856C + ldr r0, [r4, #0x20] + bl FUN_021E85E4 + ldrh r0, [r4, #0x1c] + cmp r0, #0x0 + bne _020499CA + mov r0, #0x5 + str r0, [r4, #0x0] + b _02049AB2 +_020499CA: + mov r0, #0x6 + str r0, [r4, #0x0] + b _02049AB2 +_020499D0: + ldr r0, [r5, #0x34] + bl FUN_020587B0 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_020499E2: + mov r0, #0x0 + mov r1, #0x1e + bl FUN_020053CC + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_020499F2: + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_02049C0C + cmp r0, #0x0 + beq _02049AB2 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_02049A06: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_02049A14: + mov r0, #0x1 + str r0, [r5, #0x6c] + ldr r0, _02049AC8 ; =0x00000012 + mov r1, #0x2 + bl FUN_02005FDC + add r0, r5, #0x0 + bl FUN_0204FC5C + ldr r0, [r4, #0x14] + mov r2, #0x1 + str r0, [sp, #0x0] + str r2, [sp, #0x4] + ldr r1, [r4, #0x8] + ldr r3, [r4, #0x10] + add r0, r6, #0x0 + sub r2, r2, #0x2 + bl FUN_020491A8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_02049A42: + bl FUN_02005404 + cmp r0, #0x0 + bne _02049AB2 + mov r0, #0x0 + bl FUN_0200415C + add r0, r5, #0x0 + bl FUN_0204AB44 + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_02049A64: + add r0, r6, #0x0 + mov r1, #0x1 + bl FUN_02049C0C + cmp r0, #0x0 + beq _02049AB2 + bl FUN_0204FCA0 + add r0, r5, #0x0 + bl FUN_02244824 + mov r1, #0x0 + str r0, [r5, #0x68] + mov r0, #0x2 + add r2, r1, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1e + sub r2, #0x10 + mov r3, #0x19 + bl FUN_0200A208 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049AB2 +_02049A96: + mov r0, #0x2 + bl FUN_0200A344 + cmp r0, #0x0 + beq _02049AB2 + mov r0, #0x1 + bl FUN_02247970 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02049AB2: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_02049AB8: .word 0x000003D9 +_02049ABC: .word 0x020F46D8 +_02049AC0: .word 0x000007F2 +_02049AC4: .word 0x000007D5 +_02049AC8: .word 0x00000012 + + thumb_func_start FUN_02049ACC +FUN_02049ACC: ; 0x02049ACC + push {r4-r6, lr} + sub sp, #0x8 + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x7 + bhi _02049BDC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02049AF2: ; jump table (using 16-bit offset) + .short _02049B02 - _02049AF2 - 2; case 0 + .short _02049B2C - _02049AF2 - 2; case 1 + .short _02049B54 - _02049AF2 - 2; case 2 + .short _02049B68 - _02049AF2 - 2; case 3 + .short _02049B76 - _02049AF2 - 2; case 4 + .short _02049B9C - _02049AF2 - 2; case 5 + .short _02049BBE - _02049AF2 - 2; case 6 + .short _02049BD2 - _02049AF2 - 2; case 7 +_02049B02: + mov r0, #0x0 + bl FUN_02247970 + bl FUN_0204FCD8 + ldr r0, [r5, #0x68] + bl FUN_0224484C + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1e + add r1, r0, #0x0 + sub r1, #0x2e + mov r2, #0x0 + mov r3, #0x1 + bl FUN_0200A208 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049B2C: + mov r0, #0x2 + bl FUN_0200A344 + cmp r0, #0x0 + beq _02049BDC + ldr r0, [r5, #0x68] + cmp r0, #0x0 + bne _02049BDC + bl FUN_02030F40 + cmp r0, #0x0 + bne _02049BDC + mov r0, #0x0 + mov r1, #0x1e + bl FUN_020053CC + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049B54: + add r0, r6, #0x0 + mov r1, #0x2 + bl FUN_02049C0C + cmp r0, #0x0 + beq _02049BDC + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049B68: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049B76: + mov r0, #0x0 + str r0, [r5, #0x6c] + ldr r0, _02049BE4 ; =0x00000012 + bl FUN_02005F60 + ldr r0, [r4, #0x14] + mov r2, #0x1 + str r0, [sp, #0x0] + str r2, [sp, #0x4] + ldr r1, [r4, #0x8] + ldr r3, [r4, #0x10] + add r0, r6, #0x0 + sub r2, r2, #0x2 + bl FUN_020491A8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049B9C: + bl FUN_02005404 + cmp r0, #0x0 + bne _02049BDC + mov r0, #0x0 + bl FUN_0200415C + add r0, r5, #0x0 + bl FUN_0204AB44 + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049BBE: + add r0, r6, #0x0 + mov r1, #0x3 + bl FUN_02049C0C + cmp r0, #0x0 + beq _02049BDC + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049BDC +_02049BD2: + bl FUN_02016A18 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02049BDC: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + nop +_02049BE4: .word 0x00000012 + + thumb_func_start FUN_02049BE8 +FUN_02049BE8: ; 0x02049BE8 + push {r3, lr} + ldr r0, [r0, #0x6c] + cmp r0, #0x0 + bne _02049BF4 + ldr r0, _02049C04 ; =FUN_02049844 + pop {r3, pc} +_02049BF4: + cmp r0, #0x1 + bne _02049BFC + ldr r0, _02049C08 ; =FUN_02049ACC + pop {r3, pc} +_02049BFC: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02049C04: .word FUN_02049844 +_02049C08: .word FUN_02049ACC + + thumb_func_start FUN_02049C0C +FUN_02049C0C: ; 0x02049C0C + push {r3-r7, lr} + add r4, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + mov r5, #0x0 + cmp r0, #0x0 + beq _02049C2E + cmp r0, #0x1 + beq _02049C44 + b _02049C4E +_02049C2E: + add r2, r4, #0x0 + str r5, [r4, #0x18] + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, #0x18 + bl FUN_02053C98 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02049C4E +_02049C44: + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _02049C4E + str r5, [r4, #0x4] + mov r5, #0x1 +_02049C4E: + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02049C54 +FUN_02049C54: ; 0x02049C54 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02049C76 + cmp r0, #0x1 + beq _02049C84 + cmp r0, #0x2 + beq _02049C9C + b _02049CAC +_02049C76: + add r0, r5, #0x0 + bl FUN_02048B34 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049CAC +_02049C84: + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_02048958 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0203989C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049CAC +_02049C9C: + add r0, r5, #0x0 + bl FUN_02048AE4 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_02049CAC: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02049CB0 +FUN_02049CB0: ; 0x02049CB0 + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + beq _02049CD6 + bl ErrorHandling + pop {r3-r7, pc} +_02049CD6: + mov r0, #0x0 + str r0, [r4, #0x0] + ldmia r5!, {r0-r1} + add r2, r4, #0x4 + stmia r2!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r5, #0x0] + ldr r1, _02049CF4 ; =FUN_02049C54 + str r0, [r2, #0x0] + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_02049CF4: .word FUN_02049C54 + + thumb_func_start FUN_02049CF8 +FUN_02049CF8: ; 0x02049CF8 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x5 + bhi _02049D98 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02049D24: ; jump table (using 16-bit offset) + .short _02049D30 - _02049D24 - 2; case 0 + .short _02049D4C - _02049D24 - 2; case 1 + .short _02049D60 - _02049D24 - 2; case 2 + .short _02049D72 - _02049D24 - 2; case 3 + .short _02049D80 - _02049D24 - 2; case 4 + .short _02049D8E - _02049D24 - 2; case 5 +_02049D30: + ldr r1, [r5, #0x8] + add r0, r7, #0x0 + mov r2, #0x0 + bl FUN_0204ACA8 + add r0, r7, #0x0 + mov r1, #0x1 + add r2, r5, #0x4 + bl FUN_021E7750 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049D98 +_02049D4C: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _02049D98 + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049D98 +_02049D60: + add r5, #0x8 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049D98 +_02049D72: + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049D98 +_02049D80: + add r0, r6, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049D98 +_02049D8E: + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02049D98: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02049D9C +FUN_02049D9C: ; 0x02049D9C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x1c + bl FUN_020169D8 + add r6, r0, #0x0 + mov r1, #0x0 + mov r2, #0x1c + blx MI_CpuFill8 + add r2, r6, #0x0 + ldmia r4!, {r0-r1} + add r2, #0x8 + stmia r2!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] + add r0, r5, #0x0 + bl FUN_020520F8 + ldr r0, [r5, #0x7c] + bl FUN_02052FA4 + mov r0, #0x0 + str r0, [r5, #0x6c] + ldr r1, _02049DF0 ; =FUN_02049CF8 + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_020463CC + mov r0, #0x0 + str r0, [r5, #0x78] + pop {r4-r6, pc} + nop +_02049DF0: .word FUN_02049CF8 + + thumb_func_start FUN_02049DF4 +FUN_02049DF4: ; 0x02049DF4 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x6 + bhi _02049E9E + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02049E20: ; jump table (using 16-bit offset) + .short _02049E2E - _02049E20 - 2; case 0 + .short _02049E46 - _02049E20 - 2; case 1 + .short _02049E54 - _02049E20 - 2; case 2 + .short _02049E66 - _02049E20 - 2; case 3 + .short _02049E74 - _02049E20 - 2; case 4 + .short _02049E88 - _02049E20 - 2; case 5 + .short _02049E94 - _02049E20 - 2; case 6 +_02049E2E: + ldr r1, [r5, #0x8] + add r0, r7, #0x0 + mov r2, #0x0 + bl FUN_0204ACA8 + add r0, r6, #0x0 + bl FUN_0204AFC8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049E9E +_02049E46: + add r0, r6, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049E9E +_02049E54: + add r5, #0x8 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049E9E +_02049E66: + add r0, r6, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049E9E +_02049E74: + mov r1, #0x0 + str r1, [r5, #0x4] + add r0, r7, #0x0 + add r2, r5, #0x4 + bl FUN_021E7750 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049E9E +_02049E88: + ldr r1, [r5, #0x4] + cmp r1, #0x0 + beq _02049E9E + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049E9E +_02049E94: + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_02049E9E: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02049EA4 +FUN_02049EA4: ; 0x02049EA4 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x1c + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x1c + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_02048CB0 + ldr r0, _02049F08 ; =0x000001D2 + str r0, [r4, #0x8] + mov r0, #0x0 + mvn r0, r0 + str r0, [r4, #0xc] + mov r0, #0x8 + str r0, [r4, #0x10] + mov r0, #0xe + str r0, [r4, #0x14] + mov r0, #0x0 + str r0, [r4, #0x18] + add r0, r5, #0x0 + bl FUN_020520AC + str r0, [r5, #0x78] + bl FUN_02052EE8 + str r0, [r5, #0x7c] + mov r0, #0x2 + str r0, [r5, #0x6c] + ldr r1, _02049F0C ; =FUN_02049DF4 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_02049F08: .word 0x000001D2 +_02049F0C: .word FUN_02049DF4 + + thumb_func_start FUN_02049F10 +FUN_02049F10: ; 0x02049F10 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x3 + bhi _02049F8E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02049F34: ; jump table (using 16-bit offset) + .short _02049F3C - _02049F34 - 2; case 0 + .short _02049F58 - _02049F34 - 2; case 1 + .short _02049F68 - _02049F34 - 2; case 2 + .short _02049F86 - _02049F34 - 2; case 3 +_02049F3C: + ldr r0, _02049F94 ; =0x00000603 + bl FUN_020054C8 + ldr r1, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_0204AD60 + add r0, r5, #0x0 + bl FUN_0204B090 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049F8E +_02049F58: + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049F8E +_02049F68: + bl FUN_02005404 + cmp r0, #0x0 + bne _02049F8E + ldr r1, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_0204AD8C + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02049F8E +_02049F86: + bl FUN_02016A18 + mov r0, #0x1 + pop {r4-r6, pc} +_02049F8E: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02049F94: .word 0x00000603 + + thumb_func_start FUN_02049F98 +FUN_02049F98: ; 0x02049F98 + push {r3-r7, lr} + sub sp, #0x18 + str r0, [sp, #0x0] + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r1, r4, #0x0 + bl FUN_02048CB0 + mov r0, #0x3 + str r0, [r4, #0x6c] + mov r0, #0xb + mov r1, #0x1c + bl FUN_020169D8 + add r2, r0, #0x0 + ldr r0, [sp, #0x30] + str r5, [sp, #0x4] + str r0, [sp, #0x10] + ldr r0, [sp, #0x34] + str r6, [sp, #0x8] + str r0, [sp, #0x14] + mov r0, #0x0 + str r7, [sp, #0xc] + add r4, sp, #0x4 + str r0, [r2, #0x0] + ldmia r4!, {r0-r1} + add r3, r2, #0x4 + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + ldr r1, _02049FF8 ; =FUN_02049F10 + str r0, [r3, #0x0] + ldr r0, [sp, #0x0] + bl FUN_0204640C + add sp, #0x18 + pop {r3-r7, pc} + nop +_02049FF8: .word FUN_02049F10 + + thumb_func_start FUN_02049FFC +FUN_02049FFC: ; 0x02049FFC + push {r4, lr} + bl FUN_02046528 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r1, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x10] + bl FUN_020490C0 + pop {r4, pc} + + thumb_func_start FUN_0204A01C +FUN_0204A01C: ; 0x0204A01C + push {r4, lr} + mov r1, #0xa2 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204A030 + mov r0, #0x0 + pop {r4, pc} +_0204A030: + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204A042 + mov r0, #0x1 + pop {r4, pc} +_0204A042: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204A048 +FUN_0204A048: ; 0x0204A048 + push {r3-r7, lr} + sub sp, #0x20 + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x10] + bl FUN_020238F4 + str r0, [sp, #0x14] + add r0, r6, #0x0 + bl FUN_0206BB1C + str r0, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_020669C0 + add r4, r0, #0x0 + bl FUN_02066978 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r4, #0x0 + add r1, r7, #0x0 + mov r3, #0x20 + bl FUN_02066ACC + ldr r0, [sp, #0x40] + ldr r1, [sp, #0x14] + str r0, [sp, #0x0] + ldr r3, [sp, #0x3c] + add r0, r4, #0x0 + mov r2, #0x4 + str r5, [sp, #0x4] + bl FUN_0206A014 + add r0, sp, #0x28 + ldrh r0, [r0, #0x10] + mov r1, #0x6 + add r2, sp, #0x1c + str r0, [sp, #0x1c] + add r0, r4, #0x0 + bl FUN_02067830 + ldr r0, [sp, #0x18] + add r1, r4, #0x0 + bl FUN_0206B900 + add r5, r0, #0x0 + beq _0204A0BC + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202C144 +_0204A0BC: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A0C8 +FUN_0204A0C8: ; 0x0204A0C8 + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r0, r4, #0x0 + add r5, r2, #0x0 + add r7, r3, #0x0 + bl FUN_020238F4 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_0206BB1C + add r6, r0, #0x0 + mov r0, #0x20 + bl FUN_020669C0 + add r4, r0, #0x0 + bl FUN_02066978 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + bl FUN_02015CF8 + mov r1, #0x4 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + ldr r3, [sp, #0x8] + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r7, #0x0 + bl FUN_021ECF14 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0206B900 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0204A120 +FUN_0204A120: ; 0x0204A120 + push {r3-r5, lr} + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0206B9B0 + lsl r2, r5, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + bl FUN_020697CC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204A138 +FUN_0204A138: ; 0x0204A138 + push {r3-r7, lr} + str r0, [sp, #0x0] + add r5, r1, #0x0 + bl FUN_0206B9AC + add r7, r0, #0x0 + mov r6, #0x0 + cmp r7, #0x0 + ble _0204A1A2 +_0204A14A: + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204A19C + add r0, r4, #0x0 + mov r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _0204A198 + add r0, r4, #0x0 + mov r1, #0x37 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _0204A198 + add r0, r4, #0x0 + mov r1, #0x38 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _0204A198 + add r0, r4, #0x0 + mov r1, #0x39 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + bne _0204A19C +_0204A198: + add r0, r6, #0x0 + pop {r3-r7, pc} +_0204A19C: + add r6, r6, #0x1 + cmp r6, r7 + blt _0204A14A +_0204A1A2: + mov r0, #0xff + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204A1A8 +FUN_0204A1A8: ; 0x0204A1A8 + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_0206B9AC + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 + cmp r6, #0x0 + ble _0204A1D2 +_0204A1BA: + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_0206B9B0 + bl FUN_0204A01C + cmp r0, #0x0 + beq _0204A1CC + add r5, r5, #0x1 +_0204A1CC: + add r4, r4, #0x1 + cmp r4, r6 + blt _0204A1BA +_0204A1D2: + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204A1D8 +FUN_0204A1D8: ; 0x0204A1D8 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_0206B9AC + add r5, r0, #0x0 + mov r4, #0x0 + cmp r5, #0x0 + ble _0204A204 +_0204A1E8: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r7, r0, #0x0 + bl FUN_0204A01C + cmp r0, #0x0 + beq _0204A1FE + add r0, r7, #0x0 + pop {r3-r7, pc} +_0204A1FE: + add r4, r4, #0x1 + cmp r4, r5 + blt _0204A1E8 +_0204A204: + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A20C +FUN_0204A20C: ; 0x0204A20C + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_0206B9AC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r4, _0204A244 ; =0x00000000 + beq _0204A240 +_0204A21C: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r7, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204A236 + add r0, r7, #0x0 + pop {r3-r7, pc} +_0204A236: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blo _0204A21C +_0204A240: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204A244: .word 0x00000000 + + thumb_func_start FUN_0204A248 +FUN_0204A248: ; 0x0204A248 + push {r3, lr} + bl FUN_0204A1A8 + cmp r0, #0x2 + blt _0204A256 + mov r0, #0x1 + pop {r3, pc} +_0204A256: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204A25C +FUN_0204A25C: ; 0x0204A25C + push {r3-r7, lr} + mov r2, #0x1 + add r1, sp, #0x0 + add r7, r0, #0x0 + strb r2, [r1, #0x0] + bl FUN_0206B9AC + add r6, r0, #0x0 + mov r5, #0x0 + cmp r6, #0x0 + ble _0204A298 +_0204A272: + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x4c + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0204A292 + add r0, r4, #0x0 + mov r1, #0x19 + add r2, sp, #0x0 + bl FUN_02067830 +_0204A292: + add r5, r5, #0x1 + cmp r5, r6 + blt _0204A272 +_0204A298: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204A29C +FUN_0204A29C: ; 0x0204A29C + push {r3-r7, lr} + sub sp, #0x10 + mov r7, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r6, r7, #0x0 + bl FUN_0206B9AC + add r4, r7, #0x0 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _0204A310 +_0204A2B4: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r5, r0, #0x0 + bl FUN_0204A01C + cmp r0, #0x0 + beq _0204A308 + add r0, r5, #0x0 + mov r1, #0x9f + mov r2, #0x0 + bl FUN_020671BC + mov r1, #0x88 + tst r0, r1 + beq _0204A308 + add r0, r5, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0xc] + cmp r0, #0x1 + bls _0204A2EA + sub r0, r0, #0x1 + str r0, [sp, #0xc] +_0204A2EA: + add r0, r5, #0x0 + mov r1, #0xa2 + add r2, sp, #0xc + bl FUN_02067830 + ldr r0, [sp, #0xc] + cmp r0, #0x1 + bne _0204A306 + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x7 + add r6, r6, #0x1 + bl FUN_020688E8 +_0204A306: + add r7, r7, #0x1 +_0204A308: + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + cmp r4, r0 + blt _0204A2B4 +_0204A310: + cmp r6, #0x0 + beq _0204A31A + add sp, #0x10 + mov r0, #0x2 + pop {r3-r7, pc} +_0204A31A: + cmp r7, #0x0 + beq _0204A324 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204A324: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204A32C +FUN_0204A32C: ; 0x0204A32C + push {r3-r4, lr} + sub sp, #0x4 + mov r1, #0x9f + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + mov r1, #0x88 + tst r0, r1 + beq _0204A362 + add r0, r4, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _0204A362 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x9f + add r2, sp, #0x0 + bl FUN_02067830 + add sp, #0x4 + mov r0, #0x1 + pop {r3-r4, pc} +_0204A362: + mov r0, #0x0 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_0204A368 +FUN_0204A368: ; 0x0204A368 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x54] + add r4, r1, #0x0 + cmp r0, #0x0 + bne _0204A388 + ldr r1, _0204A38C ; =0x000080E2 + mov r0, #0xb + bl FUN_02016998 + str r0, [r5, #0x54] + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x54] + add r2, r4, #0x0 + bl FUN_0204A3B0 +_0204A388: + pop {r3-r5, pc} + nop +_0204A38C: .word 0x000080E2 + + thumb_func_start FUN_0204A390 +FUN_0204A390: ; 0x0204A390 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x54] + cmp r0, #0x0 + beq _0204A3A2 + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x54] +_0204A3A2: + pop {r4, pc} + + thumb_func_start FUN_0204A3A4 +FUN_0204A3A4: ; 0x0204A3A4 + ldrb r0, [r1, r0] + add r2, r1, #0x0 + add r2, #0xe2 + lsl r0, r0, #0xb + add r0, r2, r0 + bx lr + + thumb_func_start FUN_0204A3B0 +FUN_0204A3B0: ; 0x0204A3B0 + push {r4-r7, lr} + sub sp, #0x3c + str r1, [sp, #0x8] + str r2, [sp, #0xc] + str r0, [sp, #0x4] + mov r2, #0x0 + add r1, sp, #0x18 + strb r2, [r1, #0x0] + bl FUN_020344FC + add r6, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_0203450C + str r0, [sp, #0x10] + mov r0, #0x0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + cmp r0, #0x0 + ble _0204A410 + ldr r7, [sp, #0x14] +_0204A3DA: + mov r5, #0x0 + cmp r6, #0x0 + ble _0204A402 +_0204A3E0: + add r0, r5, r7 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_020344D8 + add r1, sp, #0x18 + add r1, #0x2 + add r2, sp, #0x18 + bl FUN_0204A45C + ldr r1, [sp, #0x8] + add r5, r5, #0x1 + strb r0, [r1, r4] + cmp r5, r6 + blt _0204A3E0 +_0204A402: + ldr r0, [sp, #0x14] + add r7, r7, r6 + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + str r1, [sp, #0x14] + cmp r1, r0 + blt _0204A3DA +_0204A410: + mov r0, #0x43 + mov r1, #0xb + bl FUN_02006670 + add r7, r0, #0x0 + ldr r0, [sp, #0xc] + mov r6, #0x0 + cmp r0, #0x0 + ble _0204A452 + ldr r0, [sp, #0x8] + add r4, sp, #0x18 + add r0, #0xe2 + add r4, #0x2 + add r5, r6, #0x0 + str r0, [sp, #0x8] +_0204A42E: + ldr r0, [sp, #0x8] + lsl r1, r5, #0x1 + add r0, r0, r1 + str r0, [sp, #0x0] + ldrh r1, [r4, #0x0] + mov r2, #0x10 + add r0, r7, #0x0 + lsl r3, r2, #0x7 + bl FUN_02006814 + mov r0, #0x1 + lsl r0, r0, #0xa + add r5, r5, r0 + ldr r0, [sp, #0xc] + add r6, r6, #0x1 + add r4, r4, #0x2 + cmp r6, r0 + blt _0204A42E +_0204A452: + add r0, r7, #0x0 + bl FUN_020066F4 + add sp, #0x3c + pop {r4-r7, pc} + + thumb_func_start FUN_0204A45C +FUN_0204A45C: ; 0x0204A45C + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + ldrb r0, [r7, #0x0] + add r6, r1, #0x0 + mov r4, #0x0 + cmp r0, #0x0 + bls _0204A482 +_0204A46C: + lsl r1, r4, #0x1 + ldrh r1, [r6, r1] + cmp r5, r1 + bne _0204A478 + add r0, r4, #0x0 + pop {r3-r7, pc} +_0204A478: + add r1, r4, #0x1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, r0 + blo _0204A46C +_0204A482: + cmp r4, #0x10 + blo _0204A48A + bl ErrorHandling +_0204A48A: + lsl r0, r4, #0x1 + strh r5, [r6, r0] + ldrb r0, [r7, #0x0] + add r0, r0, #0x1 + strb r0, [r7, #0x0] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A498 +FUN_0204A498: ; 0x0204A498 + cmp r0, r1 + blt _0204A4A0 + sub r0, r0, r1 + bx lr +_0204A4A0: + sub r0, r1, r0 + bx lr + + thumb_func_start FUN_0204A4A4 +FUN_0204A4A4: ; 0x0204A4A4 + push {r3-r7, lr} + sub sp, #0x38 + add r4, r2, #0x0 + add r6, r3, #0x0 + add r5, r0, #0x0 + mov r0, #0x0 + str r4, [sp, #0x2c] + str r6, [sp, #0x34] + str r0, [sp, #0x10] + str r0, [sp, #0x30] + ldr r0, [r5, #0x24] + str r1, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r5, #0x28] + bl FUN_020344FC + str r0, [sp, #0x24] + lsl r0, r0, #0x5 + str r0, [sp, #0xc] + asr r0, r4, #0xf + lsr r0, r0, #0x10 + add r0, r4, r0 + asr r7, r0, #0x10 + asr r0, r6, #0xf + lsr r0, r0, #0x10 + add r0, r6, r0 + asr r0, r0, #0x10 + str r0, [sp, #0x1c] + add r2, r5, #0x0 + add r2, #0x9c + ldr r1, [sp, #0x1c] + ldr r2, [r2, #0x0] + add r0, r7, #0x0 + add r3, sp, #0x28 + bl FUN_021F4520 + str r0, [sp, #0x20] + lsr r0, r7, #0x5 + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x1c] + lsr r0, r0, #0x5 + str r0, [sp, #0x14] + ldr r0, [sp, #0x18] + lsl r0, r0, #0x5 + add r0, #0x10 + lsl r0, r0, #0x10 + sub r0, r4, r0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x14] + lsl r0, r0, #0x5 + add r0, #0x10 + lsl r0, r0, #0x10 + sub r0, r6, r0 + str r0, [sp, #0x34] + ldr r0, [sp, #0xc] + mul r0, r1 + ldr r1, [sp, #0xc] + add r0, r7, r0 + bl FUN_021EF620 + ldr r2, [sp, #0x14] + add r1, r0, #0x0 + add r3, r2, #0x0 + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x8] + mul r3, r0 + ldr r0, [sp, #0x18] + add r0, r0, r3 + bl FUN_021EF654 + add r1, r0, #0x0 + cmp r1, #0x3 + bls _0204A53C + mov r4, #0x0 + b _0204A558 +_0204A53C: + lsl r1, r1, #0x18 + ldr r0, [sp, #0x8] + lsr r1, r1, #0x18 + bl FUN_021EF8C8 + add r3, r0, #0x0 + add r0, sp, #0x30 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x34] + bl FUN_021F3DA4 + add r4, r0, #0x0 +_0204A558: + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _0204A5A4 + add r0, sp, #0x28 + add r5, #0x9c + ldrb r0, [r0, #0x0] + ldr r1, [r5, #0x0] + bl FUN_021F4568 + add r5, r0, #0x0 + cmp r4, #0x0 + beq _0204A59E + ldr r0, [sp, #0x30] + str r0, [sp, #0x10] + cmp r5, r0 + bgt _0204A57C + mov r1, #0x1 + b _0204A5B2 +_0204A57C: + ldr r1, [sp, #0x4] + bl FUN_0204A498 + add r4, r0, #0x0 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_0204A498 + cmp r4, r0 + bgt _0204A598 + ldr r0, [sp, #0x30] + mov r1, #0x1 + str r0, [sp, #0x10] + b _0204A5B2 +_0204A598: + str r5, [sp, #0x10] + mov r1, #0x2 + b _0204A5B2 +_0204A59E: + mov r1, #0x2 + str r5, [sp, #0x10] + b _0204A5B2 +_0204A5A4: + cmp r4, #0x0 + beq _0204A5B0 + ldr r0, [sp, #0x30] + mov r1, #0x1 + str r0, [sp, #0x10] + b _0204A5B2 +_0204A5B0: + mov r1, #0x0 +_0204A5B2: + ldr r0, [sp, #0x50] + cmp r0, #0x0 + beq _0204A5BA + strb r1, [r0, #0x0] +_0204A5BA: + ldr r0, [sp, #0x10] + add sp, #0x38 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A5C0 +FUN_0204A5C0: ; 0x0204A5C0 + push {r3, lr} + asr r1, r2, #0xf + lsr r1, r1, #0x10 + add r1, r2, r1 + asr r2, r3, #0xf + lsr r2, r2, #0x10 + add r2, r3, r2 + ldr r0, [r0, #0x24] + asr r1, r1, #0x10 + asr r2, r2, #0x10 + mov r3, #0x0 + bl FUN_021EF844 + ldr r1, [sp, #0x8] + cmp r1, #0x0 + beq _0204A5EE + cmp r0, #0x0 + beq _0204A5E8 + mov r1, #0x1 + b _0204A5EA +_0204A5E8: + mov r1, #0x0 +_0204A5EA: + ldr r0, [sp, #0x8] + strb r1, [r0, #0x0] +_0204A5EE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204A5F4 +FUN_0204A5F4: ; 0x0204A5F4 + push {r3-r7, lr} + ldr r7, [r0, #0x24] + add r4, r3, #0x0 + add r0, r7, #0x0 + add r3, sp, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_021EF844 + cmp r0, #0x0 + bne _0204A612 + mov r0, #0xff + strh r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r7, pc} +_0204A612: + add r1, sp, #0x0 + ldrb r1, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_021EF8DC + lsr r2, r5, #0x1f + lsl r1, r5, #0x1b + sub r1, r1, r2 + mov r3, #0x1b + ror r1, r3 + add r1, r2, r1 + lsr r5, r6, #0x1f + lsl r2, r6, #0x1b + sub r2, r2, r5 + ror r2, r3 + add r2, r5, r2 + lsl r2, r2, #0x5 + add r1, r1, r2 + lsl r1, r1, #0x1 + ldrh r0, [r0, r1] + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A640 +FUN_0204A640: ; 0x0204A640 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x28] + add r4, r2, #0x0 + add r5, r1, #0x0 + add r7, r3, #0x0 + bl FUN_020344FC + asr r2, r4, #0x4 + asr r1, r5, #0x4 + lsr r2, r2, #0x1b + lsr r1, r1, #0x1b + add r2, r4, r2 + add r1, r5, r1 + asr r2, r2, #0x5 + asr r1, r1, #0x5 + mul r0, r2 + add r0, r1, r0 + ldr r1, [r6, #0x54] + bl FUN_0204A3A4 + lsr r2, r5, #0x1f + lsl r1, r5, #0x1b + sub r1, r1, r2 + mov r3, #0x1b + ror r1, r3 + add r1, r2, r1 + lsr r5, r4, #0x1f + lsl r2, r4, #0x1b + sub r2, r2, r5 + ror r2, r3 + add r2, r5, r2 + lsl r2, r2, #0x5 + add r1, r1, r2 + lsl r1, r1, #0x1 + ldrh r0, [r0, r1] + strh r0, [r7, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204A690 +FUN_0204A690: ; 0x0204A690 + push {r3, lr} + cmp r1, #0x0 + bne _0204A69C + ldr r1, _0204A6AC ; =0x020F4708 + str r1, [r0, #0x0] + pop {r3, pc} +_0204A69C: + cmp r1, #0x1 + bne _0204A6A6 + ldr r1, _0204A6B0 ; =0x020F4710 + str r1, [r0, #0x0] + pop {r3, pc} +_0204A6A6: + bl ErrorHandling + pop {r3, pc} + .balign 4 +_0204A6AC: .word 0x020F4708 +_0204A6B0: .word 0x020F4710 + + thumb_func_start FUN_0204A6B4 +FUN_0204A6B4: ; 0x0204A6B4 + push {r3-r4, lr} + sub sp, #0x4 + ldr r4, [r0, #0x58] + add r3, sp, #0x0 + ldr r4, [r4, #0x4] + blx r4 + cmp r0, #0x0 + beq _0204A6DA + add r0, sp, #0x0 + ldrh r0, [r0, #0x0] + asr r0, r0, #0xf + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x1 + and r1, r0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x1 + beq _0204A6DC +_0204A6DA: + mov r0, #0x0 +_0204A6DC: + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_0204A6E0 +FUN_0204A6E0: ; 0x0204A6E0 + push {r3-r4, lr} + sub sp, #0x4 + ldr r4, [r0, #0x58] + add r3, sp, #0x0 + ldr r4, [r4, #0x4] + blx r4 + cmp r0, #0x0 + beq _0204A700 + add r0, sp, #0x0 + ldrh r0, [r0, #0x0] + add sp, #0x4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3-r4, pc} +_0204A700: + mov r0, #0xff + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0204A708 +FUN_0204A708: ; 0x0204A708 + push {r3-r4, lr} + sub sp, #0x4 + ldr r4, [sp, #0x10] + str r4, [sp, #0x0] + ldr r4, [r0, #0x58] + ldr r4, [r4, #0x0] + blx r4 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0204A71C +FUN_0204A71C: ; 0x0204A71C + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, [sp, #0x10] + mov r5, #0x2 + str r1, [sp, #0x0] + ldr r1, [r4, #0x4] + lsl r2, r2, #0x10 + lsl r5, r5, #0xe + lsl r3, r3, #0x10 + add r2, r2, r5 + add r3, r3, r5 + bl FUN_0204A708 + ldr r1, [r4, #0x4] + cmp r0, r1 + bge _0204A744 + mov r4, #0x0 + add r2, r1, #0x0 + mvn r4, r4 + b _0204A754 +_0204A744: + cmp r0, r1 + ble _0204A750 + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r4, #0x1 + b _0204A754 +_0204A750: + mov r0, #0x0 + pop {r3-r5, pc} +_0204A754: + sub r1, r2, r0 + mov r0, #0x5 + lsl r0, r0, #0xe + cmp r1, r0 + blt _0204A768 + cmp r4, #0x0 + bne _0204A76A + bl ErrorHandling + b _0204A76A +_0204A768: + mov r4, #0x0 +_0204A76A: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204A770 +FUN_0204A770: ; 0x0204A770 + push {r3-r7, lr} + sub sp, #0x8 + add r6, sp, #0x4 + add r5, r0, #0x0 + add r4, r2, #0x0 + add r7, r3, #0x0 + str r6, [sp, #0x0] + bl FUN_0204A71C + ldr r1, [sp, #0x20] + cmp r1, #0x0 + beq _0204A78A + strb r0, [r1, #0x0] +_0204A78A: + cmp r0, #0x0 + bne _0204A7C2 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6B4 + add r6, r0, #0x0 + bne _0204A7BC + add r0, sp, #0x4 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0204A7BC + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6E0 + bl FUN_020548B4 + cmp r0, #0x0 + beq _0204A7BC + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0204A7BC: + add sp, #0x8 + add r0, r6, #0x0 + pop {r3-r7, pc} +_0204A7C2: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A7C8 +FUN_0204A7C8: ; 0x0204A7C8 + push {r3-r7, lr} + sub sp, #0x10 + add r6, sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x4] + add r4, r2, #0x0 + add r7, r3, #0x0 + str r6, [sp, #0x0] + bl FUN_0204A71C + ldr r1, [sp, #0x28] + cmp r1, #0x0 + beq _0204A7E4 + strb r0, [r1, #0x0] +_0204A7E4: + cmp r0, #0x0 + bne _0204A83A + add r0, sp, #0xc + str r0, [sp, #0x0] + ldr r3, [sp, #0x4] + add r0, r5, #0x0 + ldr r3, [r3, #0x4] + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0205CE00 + cmp r0, #0x0 + bne _0204A834 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6B4 + str r0, [sp, #0xc] + cmp r0, #0x0 + bne _0204A82E + add r0, sp, #0x8 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0204A82E + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6E0 + bl FUN_020548B4 + cmp r0, #0x0 + beq _0204A82E + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204A82E: + ldr r0, [sp, #0xc] + add sp, #0x10 + pop {r3-r7, pc} +_0204A834: + ldr r0, [sp, #0xc] + add sp, #0x10 + pop {r3-r7, pc} +_0204A83A: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0204A840 +FUN_0204A840: ; 0x0204A840 + push {r3-r7, lr} + add r6, r0, r2 + ldr r0, [sp, #0x18] + add r4, r1, r3 + add r0, r6, r0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + ldr r5, [sp, #0x20] + add r7, r4, r0 + cmp r6, #0x0 + blt _0204A864 + cmp r4, #0x0 + blt _0204A864 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + blt _0204A864 + cmp r7, #0x0 + bge _0204A868 +_0204A864: + bl ErrorHandling +_0204A868: + lsl r0, r6, #0x10 + str r0, [r5, #0x0] + lsl r0, r4, #0x10 + str r0, [r5, #0x4] + ldr r0, [sp, #0x0] + lsl r0, r0, #0x10 + str r0, [r5, #0x8] + lsl r0, r7, #0x10 + str r0, [r5, #0xc] + pop {r3-r7, pc} + + thumb_func_start FUN_0204A87C +FUN_0204A87C: ; 0x0204A87C + push {r4-r5, lr} + sub sp, #0xc + add r3, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + add r0, sp, #0x0 + add r1, r3, #0x0 + bl FUN_021E7EA0 + ldr r1, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, [sp, #0x8] + add r0, r1, r0 + str r0, [sp, #0x0] + ldr r1, [r4, #0x8] + add r2, r2, r1 + str r2, [sp, #0x8] + ldr r1, [r5, #0x0] + cmp r1, r0 + bgt _0204A8BC + ldr r1, [r5, #0x8] + cmp r0, r1 + bgt _0204A8BC + ldr r0, [r5, #0x4] + cmp r0, r2 + bgt _0204A8BC + ldr r0, [r5, #0xc] + cmp r2, r0 + bgt _0204A8BC + add sp, #0xc + mov r0, #0x1 + pop {r4-r5, pc} +_0204A8BC: + mov r0, #0x0 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0204A8C4 +FUN_0204A8C4: ; 0x0204A8C4 + push {r4-r7, lr} + sub sp, #0x1c + str r0, [sp, #0x0] + mov r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x4] + str r0, [sp, #0x8] +_0204A8D4: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [r1, #0x24] + add r2, sp, #0xc + bl FUN_021EF604 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x8] + ldr r0, [r0, #0x24] + bl FUN_021EF824 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x28] + bl FUN_020344FC + add r1, r0, #0x0 + add r0, r4, #0x0 + add r2, sp, #0x10 + bl FUN_0204AAD4 + mov r5, #0x0 +_0204A900: + ldr r0, [sp, #0xc] + add r1, r5, #0x0 + bl FUN_021E7ED0 + add r1, r7, #0x0 + add r2, sp, #0x10 + add r4, r0, #0x0 + bl FUN_0204A87C + cmp r0, #0x0 + beq _0204A92E + add r0, r4, #0x0 + bl FUN_021E7EC4 + cmp r0, r6 + bne _0204A92E + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _0204A928 + str r4, [r0, #0x0] +_0204A928: + add sp, #0x1c + mov r0, #0x1 + pop {r4-r7, pc} +_0204A92E: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x20 + blo _0204A900 + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + cmp r0, #0x4 + blo _0204A8D4 + mov r0, #0x0 + add sp, #0x1c + pop {r4-r7, pc} + + thumb_func_start FUN_0204A94C +FUN_0204A94C: ; 0x0204A94C + push {r4-r7, lr} + sub sp, #0x1c + str r0, [sp, #0x0] + mov r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + str r3, [sp, #0x4] + str r0, [sp, #0x8] +_0204A95C: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [r1, #0x24] + add r2, sp, #0xc + bl FUN_021EF604 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x8] + ldr r0, [r0, #0x24] + bl FUN_021EF824 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x28] + bl FUN_020344FC + add r1, r0, #0x0 + add r0, r6, #0x0 + add r2, sp, #0x10 + bl FUN_0204AAD4 + mov r6, #0x0 +_0204A988: + ldr r0, [sp, #0xc] + add r1, r6, #0x0 + bl FUN_021E7ED0 + ldr r1, [sp, #0x4] + add r2, sp, #0x10 + add r7, r0, #0x0 + bl FUN_0204A87C + cmp r0, #0x0 + beq _0204A9D2 + add r0, r7, #0x0 + bl FUN_021E7EC4 + mov r1, #0x0 + cmp r4, #0x0 + bls _0204A9D2 +_0204A9AA: + lsl r2, r1, #0x2 + ldr r2, [r5, r2] + cmp r0, r2 + bne _0204A9C8 + ldr r1, [sp, #0x30] + cmp r1, #0x0 + beq _0204A9BA + str r7, [r1, #0x0] +_0204A9BA: + ldr r1, [sp, #0x34] + cmp r1, #0x0 + beq _0204A9C2 + str r0, [r1, #0x0] +_0204A9C2: + add sp, #0x1c + mov r0, #0x1 + pop {r4-r7, pc} +_0204A9C8: + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r4 + blo _0204A9AA +_0204A9D2: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x20 + blo _0204A988 + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + cmp r0, #0x4 + blo _0204A95C + mov r0, #0x0 + add sp, #0x1c + pop {r4-r7, pc} + + thumb_func_start FUN_0204A9F0 +FUN_0204A9F0: ; 0x0204A9F0 + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + add r5, r1, #0x0 + str r2, [sp, #0x4] + str r3, [sp, #0x8] + mov r7, #0x0 +_0204A9FE: + ldr r1, [sp, #0x0] + add r0, r7, #0x0 + ldr r1, [r1, #0x24] + add r2, sp, #0xc + bl FUN_021EF604 + mov r4, #0x0 +_0204AA0C: + ldr r0, [sp, #0xc] + add r1, r4, #0x0 + bl FUN_021E7ED0 + add r6, r0, #0x0 + bl FUN_021E7EC4 + cmp r0, r5 + bne _0204AA40 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _0204AA26 + str r6, [r0, #0x0] +_0204AA26: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _0204AA3A + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, #0x24] + bl FUN_021EF824 + ldr r1, [sp, #0x8] + str r0, [r1, #0x0] +_0204AA3A: + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204AA40: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x20 + blo _0204AA0C + add r0, r7, #0x1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + cmp r7, #0x4 + blo _0204A9FE + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204AA5C +FUN_0204AA5C: ; 0x0204AA5C + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + str r3, [sp, #0x4] + str r0, [sp, #0x8] +_0204AA6C: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [r1, #0x24] + add r2, sp, #0xc + bl FUN_021EF604 + mov r6, #0x0 +_0204AA7A: + ldr r0, [sp, #0xc] + add r1, r6, #0x0 + bl FUN_021E7ED0 + add r7, r0, #0x0 + bl FUN_021E7EC4 + mov r1, #0x0 + cmp r4, #0x0 + bls _0204AAB6 +_0204AA8E: + lsl r2, r1, #0x2 + ldr r2, [r5, r2] + cmp r0, r2 + bne _0204AAAC + ldr r1, [sp, #0x4] + cmp r1, #0x0 + beq _0204AA9E + str r7, [r1, #0x0] +_0204AA9E: + ldr r1, [sp, #0x28] + cmp r1, #0x0 + beq _0204AAA6 + str r0, [r1, #0x0] +_0204AAA6: + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204AAAC: + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r4 + blo _0204AA8E +_0204AAB6: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x20 + blo _0204AA7A + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + cmp r0, #0x4 + blo _0204AA6C + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0204AAD4 +FUN_0204AAD4: ; 0x0204AAD4 + push {r4-r6, lr} + add r4, r2, #0x0 + mov r2, #0x1 + lsl r2, r2, #0x14 + str r2, [r4, #0x0] + add r5, r0, #0x0 + add r6, r1, #0x0 + str r2, [r4, #0x8] + blx _s32_div_f + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + ldr r0, [r4, #0x0] + lsl r1, r1, #0x15 + add r0, r0, r1 + str r0, [r4, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + ldr r1, [r4, #0x8] + lsl r0, r0, #0x15 + add r0, r1, r0 + str r0, [r4, #0x8] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204AB0C +FUN_0204AB0C: ; 0x0204AB0C + push {r3, lr} + bl FUN_0200541C + bl FUN_02004810 + mov r0, #0x0 + bl FUN_0200415C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204AB20 +FUN_0204AB20: ; 0x0204AB20 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_02034E30 + bl FUN_02034DE8 + strh r4, [r0, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204AB34 +FUN_0204AB34: ; 0x0204AB34 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DE8 + ldrh r0, [r0, #0x0] + pop {r3, pc} + + thumb_func_start FUN_0204AB44 +FUN_0204AB44: ; 0x0204AB44 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DE8 + mov r1, #0x0 + strh r1, [r0, #0x0] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204AB58 +FUN_0204AB58: ; 0x0204AB58 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + add r4, r1, #0x0 + bl FUN_020553C4 + cmp r0, #0x2 + bne _0204AB6C + ldr r0, _0204ABA0 ; =0x0000047F + pop {r3-r5, pc} +_0204AB6C: + add r0, r5, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + bl FUN_0205E128 + cmp r0, #0x1 + bne _0204AB7E + ldr r0, _0204ABA4 ; =0x0000047E + pop {r3-r5, pc} +_0204AB7E: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204ABA8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204AB34 + cmp r0, #0x0 + beq _0204AB9A + add r0, r5, #0x0 + bl FUN_0204AB34 + add r4, r0, #0x0 +_0204AB9A: + add r0, r4, #0x0 + pop {r3-r5, pc} + nop +_0204ABA0: .word 0x0000047F +_0204ABA4: .word 0x0000047E + + thumb_func_start FUN_0204ABA8 +FUN_0204ABA8: ; 0x0204ABA8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201277C + cmp r0, #0x0 + bne _0204ABBE + add r0, r4, #0x0 + bl FUN_020347B0 + b _0204ABC4 +_0204ABBE: + add r0, r4, #0x0 + bl FUN_020347C4 +_0204ABC4: + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r1, r4, #0x0 + bl FUN_0205EF20 + cmp r0, #0x0 + beq _0204ABD8 + add r6, r0, #0x0 +_0204ABD8: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0204ABDC +FUN_0204ABDC: ; 0x0204ABDC + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + add r4, r1, #0x0 + add r7, r2, #0x0 + bl FUN_020553C4 + add r6, r0, #0x0 + bl FUN_02004104 + cmp r0, #0x1 + bne _0204ABFC + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0204ABFC: + add r0, r5, #0x0 + bl FUN_02004124 + cmp r4, r0 + bne _0204AC0C + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0204AC0C: + bl FUN_02004810 + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x10 + add r3, sp, #0xc + bl FUN_0204ACCC + cmp r6, #0x1 + beq _0204AC22 + bne _0204AC3A +_0204AC22: + mov r0, #0x1e + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + mov r0, #0x4 + add r1, r4, #0x0 + bl FUN_02004E08 + b _0204AC4C +_0204AC3A: + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0xc] + mov r0, #0x4 + add r1, r4, #0x0 + bl FUN_02004DCC +_0204AC4C: + mov r0, #0x1 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0204AC54 +FUN_0204AC54: ; 0x0204AC54 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02004104 + cmp r0, #0x1 + bne _0204AC6C + add sp, #0x10 + mov r0, #0x0 + pop {r4-r6, pc} +_0204AC6C: + add r0, r5, #0x0 + bl FUN_02004124 + cmp r4, r0 + bne _0204AC7C + add sp, #0x10 + mov r0, #0x0 + pop {r4-r6, pc} +_0204AC7C: + bl FUN_02004810 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, sp, #0xc + add r3, sp, #0x8 + bl FUN_0204ACCC + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + mov r0, #0x4 + add r1, r4, #0x0 + bl FUN_02004DCC + mov r0, #0x1 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204ACA8 +FUN_0204ACA8: ; 0x0204ACA8 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + bl FUN_0204AB58 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204AD44 + bl FUN_0200414C + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_0204AC54 + pop {r3-r7, pc} + + thumb_func_start FUN_0204ACCC +FUN_0204ACCC: ; 0x0204ACCC + cmp r1, #0x3 + bhi _0204AD0A + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204ACDC: ; jump table (using 16-bit offset) + .short _0204ACE4 - _0204ACDC - 2; case 0 + .short _0204ACEE - _0204ACDC - 2; case 1 + .short _0204ACF8 - _0204ACDC - 2; case 2 + .short _0204AD02 - _0204ACDC - 2; case 3 +_0204ACE4: + mov r0, #0x1e + str r0, [r2, #0x0] + mov r0, #0x0 + str r0, [r3, #0x0] + bx lr +_0204ACEE: + mov r0, #0x3c + str r0, [r2, #0x0] + mov r0, #0x0 + str r0, [r3, #0x0] + bx lr +_0204ACF8: + mov r0, #0x3c + str r0, [r2, #0x0] + mov r0, #0xf + str r0, [r3, #0x0] + bx lr +_0204AD02: + mov r0, #0x3c + str r0, [r2, #0x0] + mov r0, #0x0 + str r0, [r3, #0x0] +_0204AD0A: + bx lr + + thumb_func_start FUN_0204AD0C +FUN_0204AD0C: ; 0x0204AD0C + push {r3-r5, lr} + mov r1, #0x1 + bl FUN_0206AC74 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, _0204AD38 ; =0x0000044D + ldr r2, _0204AD3C ; =0x020F4718 + mov r4, #0x0 +_0204AD1E: + lsl r3, r4, #0x2 + ldrh r1, [r2, r3] + cmp r5, r1 + bne _0204AD2C + ldr r0, _0204AD40 ; =0x020F471A + ldrh r0, [r0, r3] + pop {r3-r5, pc} +_0204AD2C: + add r1, r4, #0x1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r4, #0x4e + blo _0204AD1E + pop {r3-r5, pc} + .balign 4 +_0204AD38: .word 0x0000044D +_0204AD3C: .word 0x020F4718 +_0204AD40: .word 0x020F471A + + thumb_func_start FUN_0204AD44 +FUN_0204AD44: ; 0x0204AD44 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201277C + cmp r0, #0x0 + bne _0204AD58 + add r0, r4, #0x0 + bl FUN_020347B0 + pop {r4, pc} +_0204AD58: + add r0, r4, #0x0 + bl FUN_020347C4 + pop {r4, pc} + + thumb_func_start FUN_0204AD60 +FUN_0204AD60: ; 0x0204AD60 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02004104 + cmp r0, #0x1 + beq _0204AD88 + bl FUN_02004124 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0204ABA8 + cmp r4, r0 + beq _0204AD88 + mov r0, #0x0 + mov r1, #0x28 + bl FUN_020053CC +_0204AD88: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204AD8C +FUN_0204AD8C: ; 0x0204AD8C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02004104 + cmp r0, #0x1 + beq _0204ADB8 + mov r0, #0x0 + bl FUN_0200415C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204ABA8 + add r4, r0, #0x0 + bl FUN_0200414C + mov r0, #0x4 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_0200433C +_0204ADB8: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204ADBC +FUN_0204ADBC: ; 0x0204ADBC + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0204AB58 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204ABA8 + bl FUN_0200414C + mov r0, #0x4 + add r1, r6, #0x0 + mov r2, #0x1 + bl FUN_0200433C + pop {r4-r6, pc} + + thumb_func_start FUN_0204ADE0 +FUN_0204ADE0: ; 0x0204ADE0 + mov r3, #0x0 + add r2, r3, #0x0 +_0204ADE4: + lsl r1, r3, #0x2 + add r1, r0, r1 + strb r2, [r1, #0x6] + strb r2, [r1, #0x7] + strb r2, [r1, #0x8] + strb r2, [r1, #0x9] + add r1, r3, #0x1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x6 + blo _0204ADE4 + str r2, [r0, #0x0] + strb r2, [r0, #0x4] + strb r2, [r0, #0x5] + bx lr + .balign 4 + + thumb_func_start FUN_0204AE04 +FUN_0204AE04: ; 0x0204AE04 + push {r4, lr} + add r4, r0, #0x0 + asr r0, r1, #0x4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r1, r2, #0x4 + lsr r1, r1, #0x1b + add r1, r2, r1 + lsl r0, r0, #0x13 + lsl r1, r1, #0x13 + ldrb r2, [r4, #0x4] + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + cmp r0, r2 + bne _0204AE28 + ldrb r2, [r4, #0x5] + cmp r1, r2 + beq _0204AE58 +_0204AE28: + ldr r2, [r4, #0x0] + lsl r2, r2, #0x2 + add r2, r4, r2 + strb r0, [r2, #0x6] + ldr r0, [r4, #0x0] + lsl r0, r0, #0x2 + add r0, r4, r0 + strb r1, [r0, #0x7] + ldr r0, [r4, #0x0] + mov r1, #0xff + lsl r0, r0, #0x2 + add r0, r4, r0 + strb r1, [r0, #0x8] + ldr r0, [r4, #0x0] + mov r1, #0x1 + lsl r0, r0, #0x2 + add r0, r4, r0 + strb r1, [r0, #0x9] + ldr r0, [r4, #0x0] + mov r1, #0x6 + add r0, r0, #0x1 + blx _s32_div_f + str r1, [r4, #0x0] +_0204AE58: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204AE5C +FUN_0204AE5C: ; 0x0204AE5C + push {r4, lr} + add r4, r0, #0x0 + lsl r0, r1, #0x18 + lsl r1, r2, #0x18 + ldrb r2, [r4, #0x4] + lsr r0, r0, #0x18 + lsr r1, r1, #0x18 + cmp r0, r2 + bne _0204AE74 + ldrb r2, [r4, #0x5] + cmp r1, r2 + beq _0204AEA6 +_0204AE74: + ldr r2, [r4, #0x0] + lsl r2, r2, #0x2 + add r2, r4, r2 + strb r0, [r2, #0x6] + ldr r2, [r4, #0x0] + lsl r2, r2, #0x2 + add r2, r4, r2 + strb r1, [r2, #0x7] + ldr r2, [r4, #0x0] + lsl r2, r2, #0x2 + add r2, r4, r2 + strb r3, [r2, #0x8] + ldr r2, [r4, #0x0] + mov r3, #0x1 + lsl r2, r2, #0x2 + add r2, r4, r2 + strb r3, [r2, #0x9] + strb r0, [r4, #0x4] + strb r1, [r4, #0x5] + ldr r0, [r4, #0x0] + mov r1, #0x6 + add r0, r0, #0x1 + blx _s32_div_f + str r1, [r4, #0x0] +_0204AEA6: + pop {r4, pc} + + thumb_func_start FUN_0204AEA8 +FUN_0204AEA8: ; 0x0204AEA8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _0204AEC6 + cmp r1, #0x1 + beq _0204AEE6 + b _0204AEF4 +_0204AEC6: + ldr r0, [r4, #0x8] + add r1, r5, #0x0 + add r2, r4, #0x4 + bl FUN_021E3444 + ldr r1, [r4, #0xc] + mov r0, #0x5 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x1 + bl FUN_0200433C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204AEF4 +_0204AEE6: + ldr r1, [r4, #0x4] + cmp r1, #0x1 + bne _0204AEF4 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0204AEF4: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0204AEF8 +FUN_0204AEF8: ; 0x0204AEF8 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x10 + add r4, r2, #0x0 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r0, [r2, #0x4] + str r5, [r2, #0x8] + ldr r1, _0204AF20 ; =FUN_0204AEA8 + add r0, r6, #0x0 + str r4, [r2, #0xc] + bl FUN_0204640C + pop {r4-r6, pc} + nop +_0204AF20: .word FUN_0204AEA8 + + thumb_func_start FUN_0204AF24 +FUN_0204AF24: ; 0x0204AF24 + push {r3, lr} + bl FUN_02046528 + bl FUN_0203739C + cmp r0, #0x0 + bne _0204AF36 + mov r0, #0x1 + pop {r3, pc} +_0204AF36: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204AF3C +FUN_0204AF3C: ; 0x0204AF3C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + bne _0204AF54 + bl ErrorHandling + pop {r3-r5, pc} +_0204AF54: + add r0, r4, #0x0 + bl FUN_02037394 + ldr r1, _0204AF68 ; =FUN_0204AF24 + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + nop +_0204AF68: .word FUN_0204AF24 + + thumb_func_start FUN_0204AF6C +FUN_0204AF6C: ; 0x0204AF6C + push {r3, lr} + bl FUN_02046528 + bl FUN_020464A4 + cmp r0, #0x0 + beq _0204AF7E + mov r0, #0x1 + pop {r3, pc} +_0204AF7E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204AF84 +FUN_0204AF84: ; 0x0204AF84 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + bl FUN_0203739C + cmp r0, #0x0 + beq _0204AF9C + bl ErrorHandling + pop {r3-r5, pc} +_0204AF9C: + add r0, r4, #0x0 + bl FUN_0204649C + ldr r1, _0204AFB0 ; =FUN_0204AF6C + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + nop +_0204AFB0: .word FUN_0204AF6C + + thumb_func_start FUN_0204AFB4 +FUN_0204AFB4: ; 0x0204AFB4 + push {r3, lr} + bl FUN_0200E308 + cmp r0, #0x0 + beq _0204AFC2 + mov r0, #0x1 + pop {r3, pc} +_0204AFC2: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204AFC8 +FUN_0204AFC8: ; 0x0204AFC8 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_02046528 + bl FUN_0203739C + cmp r0, #0x0 + bne _0204AFE2 + bl ErrorHandling + add sp, #0xc + pop {r3-r4, pc} +_0204AFE2: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + ldr r1, _0204B008 ; =FUN_0204AFB4 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_0204640C + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_0204B008: .word FUN_0204AFB4 + + thumb_func_start FUN_0204B00C +FUN_0204B00C: ; 0x0204B00C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_02046528 + bl FUN_0203739C + cmp r0, #0x0 + bne _0204B026 + bl ErrorHandling + add sp, #0xc + pop {r3-r4, pc} +_0204B026: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r2, r1, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + ldr r1, _0204B04C ; =FUN_0204AFB4 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_0204640C + add sp, #0xc + pop {r3-r4, pc} + nop +_0204B04C: .word FUN_0204AFB4 + + thumb_func_start FUN_0204B050 +FUN_0204B050: ; 0x0204B050 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0204B06A + cmp r0, #0x1 + beq _0204B078 + cmp r0, #0x2 + beq _0204B086 + b _0204B08A +_0204B06A: + add r0, r5, #0x0 + bl FUN_0204AFC8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204B08A +_0204B078: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204B08A +_0204B086: + mov r0, #0x1 + pop {r3-r5, pc} +_0204B08A: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B090 +FUN_0204B090: ; 0x0204B090 + ldr r3, _0204B098 ; =FUN_0204640C + ldr r1, _0204B09C ; =FUN_0204B050 + mov r2, #0x0 + bx r3 + .balign 4 +_0204B098: .word FUN_0204640C +_0204B09C: .word FUN_0204B050 + + thumb_func_start FUN_0204B0A0 +FUN_0204B0A0: ; 0x0204B0A0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046530 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + beq _0204B0C0 + cmp r1, #0x1 + beq _0204B0CE + cmp r1, #0x2 + beq _0204B0E0 + b _0204B0E4 +_0204B0C0: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204B0E4 +_0204B0CE: + bl FUN_021E331C + add r0, r5, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204B0E4 +_0204B0E0: + mov r0, #0x1 + pop {r3-r5, pc} +_0204B0E4: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0204B0E8 +FUN_0204B0E8: ; 0x0204B0E8 + ldr r3, _0204B0F0 ; =FUN_0204640C + ldr r1, _0204B0F4 ; =FUN_0204B0A0 + mov r2, #0x0 + bx r3 + .balign 4 +_0204B0F0: .word FUN_0204640C +_0204B0F4: .word FUN_0204B0A0 + + thumb_func_start FUN_0204B0F8 +FUN_0204B0F8: ; 0x0204B0F8 + push {r4-r5, lr} + sub sp, #0x1c + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02023794 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0204B12A + add r0, sp, #0xc + add r1, sp, #0x0 + bl FUN_0201265C + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, sp, #0xc + bl FUN_0204B130 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, sp, #0xc + add r3, sp, #0x0 + bl FUN_0204B158 +_0204B12A: + add sp, #0x1c + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B130 +FUN_0204B130: ; 0x0204B130 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r0, r2, #0x0 + blx RTC_ConvertDateToDay + ldr r1, [r5, #0x20] + add r4, r0, #0x0 + cmp r4, r1 + bhs _0204B148 + str r4, [r5, #0x20] + pop {r4-r6, pc} +_0204B148: + cmp r4, r1 + bls _0204B156 + add r0, r6, #0x0 + sub r1, r4, r1 + bl FUN_0204B1DC + str r4, [r5, #0x20] +_0204B156: + pop {r4-r6, pc} + + thumb_func_start FUN_0204B158 +FUN_0204B158: ; 0x0204B158 + push {r4-r7, lr} + sub sp, #0xc + add r4, r2, #0x0 + str r0, [sp, #0x0] + add r6, r3, #0x0 + add r5, r1, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + blx RTC_ConvertDateTimeToSecond + str r1, [sp, #0x8] + add r1, r5, #0x0 + add r7, r0, #0x0 + add r0, r5, #0x4 + add r1, #0x14 + blx RTC_ConvertDateTimeToSecond + add r2, r1, #0x0 + sub r1, r7, r0 + ldr r1, [sp, #0x8] + sbc r1, r2 + bge _0204B19C + add r2, r5, #0x4 + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r6!, {r0-r1} + add r5, #0x14 + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + add sp, #0xc + str r0, [r5, #0x0] + pop {r4-r7, pc} +_0204B19C: + ldr r1, [sp, #0x8] + sub r0, r7, r0 + sbc r1, r2 + mov r2, #0x3c + mov r3, #0x0 + str r1, [sp, #0x8] + blx _ll_sdiv + add r7, r0, #0x0 + cmp r7, #0x0 + ble _0204B1D8 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02023884 + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_0204B270 + add r2, r5, #0x4 + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r6!, {r0-r1} + add r5, #0x14 + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + str r0, [r5, #0x0] +_0204B1D8: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0204B1DC +FUN_0204B1DC: ; 0x0204B1DC + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + bl FUN_020377AC + add r1, r4, #0x0 + bl FUN_02025A60 + add r0, r5, #0x0 + bl FUN_0203959C + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + bl FUN_02060344 + ldr r0, [r5, #0xc] + bl FUN_0202881C + add r1, r4, #0x0 + bl FUN_02028754 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0202881C + bl FUN_020287A4 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0202A988 + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_02069D50 + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r6, r0, #0x0 + bl FUN_0205F594 + cmp r0, r4 + ble _0204B244 + sub r0, r0, r4 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + b _0204B246 +_0204B244: + mov r1, #0x0 +_0204B246: + add r0, r6, #0x0 + bl FUN_0205F5A4 + lsl r1, r4, #0x10 + ldr r0, [r5, #0xc] + lsr r1, r1, #0x10 + bl FUN_0205F618 + ldr r0, [r5, #0xc] + bl FUN_0205F668 + ldr r0, [r5, #0xc] + bl FUN_0206007C + ldr r0, [r5, #0xc] + bl FUN_02029AFC + bl FUN_02029C08 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204B270 +FUN_0204B270: ; 0x0204B270 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0204B3D0 + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + bl FUN_0202A9D0 + add r0, r5, #0x0 + bl FUN_0204B33C + add r2, r0, #0x0 + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + bl FUN_02025B60 + ldr r0, [r5, #0xc] + bl FUN_02022504 + ldr r2, [r6, #0x4] + add r1, r4, #0x0 + bl FUN_0202B3C4 + pop {r4-r6, pc} + + thumb_func_start FUN_0204B2A4 +FUN_0204B2A4: ; 0x0204B2A4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + ldr r0, [r0, #0x14] + bl FUN_020127A8 + pop {r3, pc} + + thumb_func_start FUN_0204B2B4 +FUN_0204B2B4: ; 0x0204B2B4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + ldr r0, [r0, #0x8] + pop {r3, pc} + + thumb_func_start FUN_0204B2C0 +FUN_0204B2C0: ; 0x0204B2C0 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + ldr r0, [r0, #0xc] + pop {r3, pc} + + thumb_func_start FUN_0204B2CC +FUN_0204B2CC: ; 0x0204B2CC + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + ldr r0, [r0, #0x10] + pop {r3, pc} + + thumb_func_start FUN_0204B2D8 +FUN_0204B2D8: ; 0x0204B2D8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + ldr r0, [r0, #0x14] + pop {r3, pc} + + thumb_func_start FUN_0204B2E4 +FUN_0204B2E4: ; 0x0204B2E4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + ldr r0, [r0, #0x18] + pop {r3, pc} + + thumb_func_start FUN_0204B2F0 +FUN_0204B2F0: ; 0x0204B2F0 + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_02023794 + add r3, r0, #0x0 + ldr r2, [r3, #0x24] + ldr r3, [r3, #0x28] + add r0, r5, #0x0 + add r1, r4, #0x0 + blx RTC_ConvertSecondToDateTime + pop {r3-r5, pc} + + thumb_func_start FUN_0204B30C +FUN_0204B30C: ; 0x0204B30C + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_02023794 + add r3, r0, #0x0 + ldr r2, [r3, #0x2c] + ldr r3, [r3, #0x30] + add r0, r5, #0x0 + add r1, r4, #0x0 + blx RTC_ConvertSecondToDateTime + pop {r3-r5, pc} + + thumb_func_start FUN_0204B328 +FUN_0204B328: ; 0x0204B328 + push {r4, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + add r4, r0, #0x0 + bl FUN_020126FC + str r0, [r4, #0x2c] + str r1, [r4, #0x30] + pop {r4, pc} + + thumb_func_start FUN_0204B33C +FUN_0204B33C: ; 0x0204B33C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02023794 + bl FUN_02023874 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204B34C +FUN_0204B34C: ; 0x0204B34C + cmp r0, #0x0 + bne _0204B354 + mov r0, #0x0 + bx lr +_0204B354: + add r0, #0x94 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + + thumb_func_start FUN_0204B35C +FUN_0204B35C: ; 0x0204B35C + cmp r0, #0x0 + bne _0204B364 + mov r0, #0x0 + bx lr +_0204B364: + sub r0, #0x94 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + + thumb_func_start FUN_0204B36C +FUN_0204B36C: ; 0x0204B36C + cmp r0, #0x0 + bne _0204B374 + mov r0, #0x0 + bx lr +_0204B374: + add r0, #0x5e + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + + thumb_func_start FUN_0204B37C +FUN_0204B37C: ; 0x0204B37C + cmp r0, #0x0 + bne _0204B384 + mov r0, #0x0 + bx lr +_0204B384: + sub r0, #0x5e + bx lr + + thumb_func_start FUN_0204B388 +FUN_0204B388: ; 0x0204B388 + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x64 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x64 + blx MI_CpuFill8 + str r6, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_02025128 + str r0, [r4, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204B410 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204B3B8 +FUN_0204B3B8: ; 0x0204B3B8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204B444 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204B3D0 +FUN_0204B3D0: ; 0x0204B3D0 + push {r4-r6, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + add r6, r1, #0x0 + cmp r0, #0x0 + bne _0204B3FA + mov r0, #0xb + bl FUN_02025128 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_02024ECC + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_020253E0 + add r0, r5, #0x0 + bl FUN_02016A18 + pop {r4-r6, pc} +_0204B3FA: + ldr r0, [r0, #0x18] + ldr r5, [r0, #0x4] + ldr r0, [r4, #0xc] + bl FUN_02024ECC + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_020253E0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204B410 +FUN_0204B410: ; 0x0204B410 + push {r3-r5, lr} + ldr r4, [r0, #0x3c] + add r5, r1, #0x0 + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_021E4C54 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02016998 + str r0, [r5, #0x60] + ldr r2, [r5, #0x60] + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_021E4C60 + add r0, r5, #0x0 + add r1, r5, #0x0 + add r5, #0x60 + add r0, #0x8 + add r1, #0x5c + add r2, r5, #0x0 + bl FUN_0201B234 + pop {r3-r5, pc} + + thumb_func_start FUN_0204B444 +FUN_0204B444: ; 0x0204B444 + ldr r3, _0204B44C ; =0x021E4C01 + ldr r0, [r0, #0x60] + bx r3 + nop +_0204B44C: .word 0x021E4C01 + + thumb_func_start FUN_0204B450 +FUN_0204B450: ; 0x0204B450 + push {r3-r5, lr} + sub sp, #0x30 + ldr r3, _0204B48C ; =0x020F4860 + add r5, r0, #0x0 + add r4, r1, #0x0 + ldmia r3!, {r0-r1} + add r2, sp, #0x24 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + add r0, sp, #0x0 + blx MTX_Identity33_ + ldr r0, [r5, #0x4] + add r1, r4, #0x0 + ldr r0, [r0, #0x18] + add r2, sp, #0x0 + ldr r0, [r0, #0x5c] + add r3, sp, #0x24 + bl FUN_0201B6D0 + cmp r0, #0x0 + beq _0204B484 + add sp, #0x30 + mov r0, #0x1 + pop {r3-r5, pc} +_0204B484: + mov r0, #0x0 + add sp, #0x30 + pop {r3-r5, pc} + nop +_0204B48C: .word 0x020F4860 + + thumb_func_start FUN_0204B490 +FUN_0204B490: ; 0x0204B490 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02024ECC + add r4, r0, #0x0 + ldr r0, [r5, #0x34] + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + bne _0204B4F8 + mov r6, #0x0 + mov r7, #0x1 +_0204B4B6: + ldr r0, [sp, #0x0] + bl FUN_02058458 + bl FUN_0205C334 + cmp r0, #0x1 + bne _0204B4E8 + ldr r0, [sp, #0x0] + bl FUN_02058B7C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204B450 + cmp r0, #0x0 + beq _0204B4E8 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r2, r7, #0x0 + bl FUN_020252C4 +_0204B4E8: + ldr r0, [r5, #0x34] + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + beq _0204B4B6 +_0204B4F8: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0204B4FC +FUN_0204B4FC: ; 0x0204B4FC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r7, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_02058510 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02025244 + str r0, [sp, #0x4] + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020252E8 + add r6, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_0204B34C + str r0, [sp, #0x8] + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02025268 + add r2, r0, #0x0 + lsl r2, r2, #0x18 + lsl r3, r6, #0x10 + ldr r1, [sp, #0x8] + add r0, r5, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x10 + bl FUN_020616A4 + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_020252F4 + add r0, r7, #0x0 + bl FUN_0205C374 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_0204B34C + lsl r2, r6, #0x10 + add r1, r0, #0x0 + add r0, r4, #0x0 + lsr r2, r2, #0x10 + mov r3, #0x4 + bl FUN_0206ED38 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0204B57C +FUN_0204B57C: ; 0x0204B57C + push {r4-r6, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + add r5, r2, #0x0 + bl FUN_02024ECC + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204B37C + add r2, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_020252DC + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204B5A8 +FUN_0204B5A8: ; 0x0204B5A8 + push {r3-r7, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02024ECC + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204B35C + ldr r2, [r4, #0x4] + add r3, r0, #0x0 + ldr r2, [r2, #0x18] + add r0, r7, #0x0 + ldr r2, [r2, #0x4] + add r1, r5, #0x0 + bl FUN_02025274 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204B5DC +FUN_0204B5DC: ; 0x0204B5DC + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020252AC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B5FC +FUN_0204B5FC: ; 0x0204B5FC + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02025238 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B61C +FUN_0204B61C: ; 0x0204B61C + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02025244 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B63C +FUN_0204B63C: ; 0x0204B63C + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02025244 + bl FUN_0204B34C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B660 +FUN_0204B660: ; 0x0204B660 + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020252D0 + bl FUN_0204B36C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B684 +FUN_0204B684: ; 0x0204B684 + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202524C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B6A4 +FUN_0204B6A4: ; 0x0204B6A4 + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020252E8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B6C4 +FUN_0204B6C4: ; 0x0204B6C4 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + ldr r4, _0204B708 ; =0x00000000 + beq _0204B6D8 + add r0, r5, #0x0 + bl FUN_02058458 + cmp r0, #0x64 + beq _0204B6DC +_0204B6D8: + mov r0, #0x0 + pop {r4-r6, pc} +_0204B6DC: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0204B5FC + cmp r0, #0x0 + bne _0204B6FE + mov r0, #0x1 + orr r4, r0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0204B660 + cmp r0, #0x0 + bne _0204B702 + mov r0, #0x2 + orr r4, r0 + b _0204B702 +_0204B6FE: + mov r0, #0x4 + orr r4, r0 +_0204B702: + add r0, r4, #0x0 + pop {r4-r6, pc} + nop +_0204B708: .word 0x00000000 + + thumb_func_start FUN_0204B70C +FUN_0204B70C: ; 0x0204B70C + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, [r7, #0x38] + add r5, r2, #0x0 + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r7, #0x38] + bl FUN_0205532C + add r4, r0, #0x0 + cmp r5, #0x2 + bne _0204B72A + sub r6, r6, #0x1 + b _0204B746 +_0204B72A: + cmp r5, #0x3 + bne _0204B732 + add r6, r6, #0x1 + b _0204B746 +_0204B732: + cmp r5, #0x0 + bne _0204B73A + sub r4, r4, #0x1 + b _0204B746 +_0204B73A: + cmp r5, #0x1 + bne _0204B742 + add r4, r4, #0x1 + b _0204B746 +_0204B742: + bl ErrorHandling +_0204B746: + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204A6B4 + cmp r0, #0x0 + beq _0204B758 + mov r0, #0x1 + pop {r3-r7, pc} +_0204B758: + ldr r0, [r7, #0x34] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02058D74 + cmp r0, #0x0 + beq _0204B76A + mov r0, #0x1 + pop {r3-r7, pc} +_0204B76A: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204B770 +FUN_0204B770: ; 0x0204B770 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + add r6, r1, #0x0 + bl FUN_02055320 + add r4, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0x0 + cmp r6, #0x2 + bne _0204B78E + sub r4, r4, #0x1 + b _0204B794 +_0204B78E: + cmp r6, #0x3 + bne _0204B794 + add r4, r4, #0x1 +_0204B794: + ldr r0, [r5, #0x34] + add r1, r4, #0x0 + sub r2, r2, #0x1 + bl FUN_02058D74 + pop {r4-r6, pc} + + thumb_func_start FUN_0204B7A0 +FUN_0204B7A0: ; 0x0204B7A0 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + add r6, r1, #0x0 + bl FUN_02055320 + add r7, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r4, r0, #0x0 + ldr r0, [r6, #0x4] + cmp r0, #0x0 + bne _0204B7C0 + sub r4, r4, #0x1 + b _0204B7CC +_0204B7C0: + cmp r0, #0x1 + bne _0204B7C8 + add r4, r4, #0x1 + b _0204B7CC +_0204B7C8: + bl ErrorHandling +_0204B7CC: + ldr r0, [r5, #0x34] + add r1, r7, #0x0 + add r2, r4, #0x0 + bl FUN_02058D74 + pop {r3-r7, pc} + + thumb_func_start FUN_0204B7D8 +FUN_0204B7D8: ; 0x0204B7D8 + push {r3, lr} + bl FUN_02058458 + cmp r0, #0x64 + bne _0204B7E6 + mov r0, #0x1 + pop {r3, pc} +_0204B7E6: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204B7EC +FUN_0204B7EC: ; 0x0204B7EC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204B7A0 + add r1, r0, #0x0 + beq _0204B7FE + add r0, r4, #0x0 + bl FUN_0204B5DC +_0204B7FE: + pop {r4, pc} + + thumb_func_start FUN_0204B800 +FUN_0204B800: ; 0x0204B800 + push {r3-r5, lr} + ldr r0, [r0, #0x38] + add r4, r2, #0x0 + add r5, r1, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + bl FUN_0205AEA4 + str r0, [r5, #0xc] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204B818 +FUN_0204B818: ; 0x0204B818 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x4 + bls _0204B832 + b _0204B98E +_0204B832: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204B83E: ; jump table (using 16-bit offset) + .short _0204B848 - _0204B83E - 2; case 0 + .short _0204B866 - _0204B83E - 2; case 1 + .short _0204B876 - _0204B83E - 2; case 2 + .short _0204B93A - _0204B83E - 2; case 3 + .short _0204B972 - _0204B83E - 2; case 4 +_0204B848: + ldr r0, [r5, #0x38] + mov r1, #0x10 + bl FUN_021E5FD8 + ldr r0, [r5, #0x38] + bl FUN_021E5FE0 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + bl FUN_02058914 + mov r0, #0x1 + str r0, [r4, #0x0] + b _0204B98E +_0204B866: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204B7EC + mov r0, #0x0 + str r0, [r4, #0x8] + mov r0, #0x2 + str r0, [r4, #0x0] +_0204B876: + ldr r0, _0204B994 ; =0x021C48B8 + mov r1, #0x20 + ldr r0, [r0, #0x44] + tst r1, r0 + beq _0204B8B8 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0204B770 + cmp r0, #0x0 + beq _0204B894 + bl FUN_0204B7D8 + cmp r0, #0x0 + bne _0204B89A +_0204B894: + mov r0, #0x4 + str r0, [r4, #0x0] + b _0204B98E +_0204B89A: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_0204B70C + cmp r0, #0x0 + bne _0204B922 + ldr r2, _0204B998 ; =0x020F4850 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204B800 + mov r0, #0x3 + str r0, [r4, #0x0] + b _0204B98E +_0204B8B8: + mov r1, #0x10 + tst r1, r0 + beq _0204B8F6 + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0204B770 + cmp r0, #0x0 + beq _0204B8D2 + bl FUN_0204B7D8 + cmp r0, #0x0 + bne _0204B8D8 +_0204B8D2: + mov r0, #0x4 + str r0, [r4, #0x0] + b _0204B98E +_0204B8D8: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x3 + bl FUN_0204B70C + cmp r0, #0x0 + bne _0204B922 + ldr r2, _0204B99C ; =0x020F4858 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204B800 + mov r0, #0x3 + str r0, [r4, #0x0] + b _0204B98E +_0204B8F6: + mov r1, #0x40 + tst r1, r0 + beq _0204B910 + ldr r1, [r4, #0x4] + cmp r1, #0x1 + bne _0204B910 + ldr r0, [r5, #0x38] + mov r1, #0x0 + bl FUN_02055304 + mov r0, #0x4 + str r0, [r4, #0x0] + b _0204B98E +_0204B910: + mov r1, #0x80 + tst r0, r1 + beq _0204B922 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + bne _0204B922 + mov r0, #0x4 + str r0, [r4, #0x0] + b _0204B98E +_0204B922: + ldr r0, [r4, #0x8] + add r0, r0, #0x1 + str r0, [r4, #0x8] + cmp r0, #0x5a + ble _0204B98E + ldr r0, [r5, #0x38] + ldr r1, [r4, #0x4] + bl FUN_02055304 + mov r0, #0x4 + str r0, [r4, #0x0] + b _0204B98E +_0204B93A: + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0x0 + beq _0204B98E + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204B7A0 + cmp r0, #0x0 + beq _0204B964 + bl FUN_0204B7D8 + cmp r0, #0x0 + beq _0204B964 + mov r0, #0x1 + str r0, [r4, #0x0] + b _0204B98E +_0204B964: + ldr r0, [r5, #0x38] + ldr r1, [r4, #0x4] + bl FUN_02055304 + mov r0, #0x4 + str r0, [r4, #0x0] + b _0204B98E +_0204B972: + ldr r0, [r5, #0x38] + ldr r1, [r4, #0x4] + bl FUN_02055304 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + bl FUN_02058908 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0204B98E: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0204B994: .word 0x021C48B8 +_0204B998: .word 0x020F4850 +_0204B99C: .word 0x020F4858 + + thumb_func_start FUN_0204B9A0 +FUN_0204B9A0: ; 0x0204B9A0 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x20 + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0xc] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + str r0, [r4, #0x4] + ldr r0, [r5, #0x10] + ldr r1, _0204B9C8 ; =FUN_0204B818 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + .balign 4 +_0204B9C8: .word FUN_0204B818 + + thumb_func_start FUN_0204B9CC +FUN_0204B9CC: ; 0x0204B9CC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_020553C4 + bl FUN_02055648 + add r1, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_021E5FD8 + ldr r0, [r4, #0x38] + bl FUN_021E5FE0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204B9EC +FUN_0204B9EC: ; 0x0204B9EC + push {r4, lr} + ldr r1, _0204BA14 ; =0x021C5A1C + add r4, r0, #0x0 + mov r0, #0x0 + mov r2, #0x4c + blx MIi_CpuClearFast + ldr r1, _0204BA14 ; =0x021C5A1C + add r0, r4, #0x0 + bl FUN_0204BB20 + ldr r0, _0204BA14 ; =0x021C5A1C + bl FUN_0204BBC4 + bl FUN_020126FC + ldr r2, _0204BA18 ; =0x021C5A1C + str r0, [r2, #0x40] + str r1, [r2, #0x44] + pop {r4, pc} + .balign 4 +_0204BA14: .word 0x021C5A1C +_0204BA18: .word 0x021C5A1C + + thumb_func_start FUN_0204BA1C +FUN_0204BA1C: ; 0x0204BA1C + push {r3-r5, lr} + ldr r0, [r0, #0xc] + ldr r4, _0204BA60 ; =0x021C5A1C + bl FUN_02029FC8 + add r5, r0, #0x0 + bl FUN_020126FC + add r3, r1, #0x0 + ldr r1, _0204BA64 ; =0x021C5A1C + add r2, r0, #0x0 + ldr r0, [r1, #0x40] + ldr r1, [r1, #0x44] + bl FUN_020127C0 + mov r2, #0xfa + mov r3, #0x0 + lsl r2, r2, #0x2 + sub r2, r0, r2 + sbc r1, r3 + bge _0204BA50 + mov r1, #0xfa + lsl r1, r1, #0x2 + sub r0, r1, r0 + lsl r0, r0, #0x1 + b _0204BA52 +_0204BA50: + mov r0, #0x0 +_0204BA52: + str r0, [r4, #0x48] + add r0, r5, #0x0 + mov r1, #0x11 + bl FUN_0202A170 + pop {r3-r5, pc} + nop +_0204BA60: .word 0x021C5A1C +_0204BA64: .word 0x021C5A1C + + thumb_func_start FUN_0204BA68 +FUN_0204BA68: ; 0x0204BA68 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _0204BA8C ; =0x021C5A1C + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0204BBE8 + cmp r0, #0x1 + bne _0204BA88 + ldr r1, _0204BA8C ; =0x021C5A1C + add r0, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_0204BC48 + pop {r4-r6, pc} +_0204BA88: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0204BA8C: .word 0x021C5A1C + + thumb_func_start FUN_0204BA90 +FUN_0204BA90: ; 0x0204BA90 + ldr r3, _0204BA98 ; =FUN_0204BD40 + ldr r1, _0204BA9C ; =0x021C5A1C + bx r3 + nop +_0204BA98: .word FUN_0204BD40 +_0204BA9C: .word 0x021C5A1C + + thumb_func_start FUN_0204BAA0 +FUN_0204BAA0: ; 0x0204BAA0 + ldr r3, _0204BAA8 ; =FUN_0204BD18 + ldr r2, _0204BAAC ; =0x021C5A1C + bx r3 + nop +_0204BAA8: .word FUN_0204BD18 +_0204BAAC: .word 0x021C5A1C + + thumb_func_start FUN_0204BAB0 +FUN_0204BAB0: ; 0x0204BAB0 + push {r3, lr} + ldr r0, _0204BAC0 ; =0x021C5A1C + bl FUN_0204BBA8 + mov r1, #0x6 + sub r0, r1, r0 + pop {r3, pc} + nop +_0204BAC0: .word 0x021C5A1C + + thumb_func_start FUN_0204BAC4 +FUN_0204BAC4: ; 0x0204BAC4 + ldr r3, _0204BACC ; =FUN_0204BD8C + ldr r0, _0204BAD0 ; =0x021C5A1C + bx r3 + nop +_0204BACC: .word FUN_0204BD8C +_0204BAD0: .word 0x021C5A1C + + thumb_func_start FUN_0204BAD4 +FUN_0204BAD4: ; 0x0204BAD4 + ldr r3, _0204BADC ; =0x0204BE11 + ldr r0, _0204BAE0 ; =0x021C5A1C + bx r3 + nop +_0204BADC: .word 0x0204BE11 +_0204BAE0: .word 0x021C5A1C + + thumb_func_start FUN_0204BAE4 +FUN_0204BAE4: ; 0x0204BAE4 + ldr r3, _0204BAEC ; =FUN_0204BDA0 + ldr r0, _0204BAF0 ; =0x021C5A1C + bx r3 + nop +_0204BAEC: .word FUN_0204BDA0 +_0204BAF0: .word 0x021C5A1C + + thumb_func_start FUN_0204BAF4 +FUN_0204BAF4: ; 0x0204BAF4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + beq _0204BB04 + ldr r0, _0204BB1C ; =0x000001ED + cmp r5, r0 + bls _0204BB08 +_0204BB04: + bl ErrorHandling +_0204BB08: + mov r3, #0x6 + add r0, r4, #0x0 + sub r4, r5, #0x1 + str r3, [sp, #0x0] + mov r1, #0x83 + mov r2, #0x0 + mul r3, r4 + bl FUN_02006548 + pop {r3-r5, pc} + .balign 4 +_0204BB1C: .word 0x000001ED + + thumb_func_start FUN_0204BB20 +FUN_0204BB20: ; 0x0204BB20 + push {r3-r7, lr} + sub sp, #0x10 + ldr r0, [r0, #0xc] + str r1, [sp, #0x0] + bl FUN_02022528 + str r0, [sp, #0x4] + mov r0, #0x4 + bl FUN_020669C0 + ldr r5, [sp, #0x0] + add r4, r0, #0x0 + mov r6, #0x0 + add r7, sp, #0x8 +_0204BB3C: + ldr r0, [sp, #0x0] + add r2, r4, #0x0 + add r1, r0, r6 + add r1, #0x30 + mov r0, #0x0 + strb r0, [r1, #0x0] + ldr r0, [sp, #0x4] + add r1, r6, #0x0 + bl FUN_0202BFD8 + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + strh r0, [r5, #0x0] + add r1, sp, #0x8 + bl FUN_0204BAF4 + ldrb r0, [r7, #0x0] + cmp r0, #0x0 + beq _0204BB6E + b _0204BB72 +_0204BB6E: + ldrb r0, [r7, #0x1] + add r0, r0, #0x4 +_0204BB72: + strb r0, [r5, #0x2] + ldrb r0, [r7, #0x3] + mov r1, #0xb0 + mov r2, #0x0 + strb r0, [r5, #0x3] + ldrb r0, [r7, #0x2] + strh r0, [r5, #0x4] + add r0, r4, #0x0 + bl FUN_020671BC + strb r0, [r5, #0x6] + add r0, r4, #0x0 + mov r1, #0xb1 + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r5, #0x7] + add r6, r6, #0x1 + add r5, #0x8 + cmp r6, #0x6 + blt _0204BB3C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204BBA8 +FUN_0204BBA8: ; 0x0204BBA8 + mov r3, #0x0 + add r2, r3, #0x0 +_0204BBAC: + add r1, r0, r2 + add r1, #0x30 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204BBB8 + add r3, r3, #0x1 +_0204BBB8: + add r2, r2, #0x1 + cmp r2, #0x6 + blt _0204BBAC + add r0, r3, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0204BBC4 +FUN_0204BBC4: ; 0x0204BBC4 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_0201B9EC + ldr r1, _0204BBE4 ; =0x0000199A + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0xa + blo _0204BBDE + bl ErrorHandling +_0204BBDE: + add r0, r5, #0x5 + str r0, [r4, #0x38] + pop {r3-r5, pc} + .balign 4 +_0204BBE4: .word 0x0000199A + + thumb_func_start FUN_0204BBE8 +FUN_0204BBE8: ; 0x0204BBE8 + push {r3, lr} + ldr r1, [r0, #0x38] + sub r1, r1, #0x1 + str r1, [r0, #0x38] + bne _0204BBFA + bl FUN_0204BBC4 + mov r0, #0x1 + pop {r3, pc} +_0204BBFA: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204BC00 +FUN_0204BC00: ; 0x0204BC00 + push {r4-r6, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0204A6E0 + add r4, r0, #0x0 + cmp r5, #0x20 + blt _0204BC14 + mov r5, #0x1 + b _0204BC16 +_0204BC14: + mov r5, #0x0 +_0204BC16: + cmp r6, #0x20 + bge _0204BC1E + mov r0, #0x0 + b _0204BC20 +_0204BC1E: + mov r0, #0x2 +_0204BC20: + add r5, r5, r0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_0205478C + cmp r0, #0x0 + beq _0204BC32 + add r0, r5, #0x1 + pop {r4-r6, pc} +_0204BC32: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_0205481C + cmp r0, #0x0 + beq _0204BC42 + add r0, r5, #0x5 + pop {r4-r6, pc} +_0204BC42: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204BC48 +FUN_0204BC48: ; 0x0204BC48 + push {r3-r7, lr} + add r5, r1, #0x0 + add r1, r2, #0x0 + add r2, r3, #0x0 + mov r6, #0x0 + bl FUN_0204BC00 + add r7, r0, #0x0 + bne _0204BC5E + add r0, r6, #0x0 + pop {r3-r7, pc} +_0204BC5E: + add r0, r6, #0x0 + add r1, r5, #0x0 +_0204BC62: + add r2, r5, r0 + add r2, #0x30 + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _0204BC76 + ldrb r2, [r1, #0x2] + cmp r7, r2 + bne _0204BC76 + ldrb r2, [r1, #0x3] + add r6, r6, r2 +_0204BC76: + add r0, r0, #0x1 + add r1, #0x8 + cmp r0, #0x6 + blt _0204BC62 + cmp r6, #0x0 + bne _0204BC86 + mov r0, #0x0 + pop {r3-r7, pc} +_0204BC86: + add r0, r6, #0x0 + add r0, #0x14 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _0204BC94 + bl ErrorHandling +_0204BC94: + add r0, r6, #0x0 + add r0, #0x14 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1 + bhi _0204BCA4 + mov r4, #0x0 + b _0204BCD8 +_0204BCA4: + bl FUN_0201B9EC + add r1, r6, #0x0 + add r1, #0x14 + add r4, r0, #0x0 + lsl r1, r1, #0x10 + ldr r0, _0204BD14 ; =0x0000FFFF + lsr r1, r1, #0x10 + blx _s32_div_f + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r4, #0x0 + lsr r1, r1, #0x10 + blx _s32_div_f + lsl r0, r0, #0x10 + add r6, #0x14 + lsr r4, r0, #0x10 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + cmp r4, r0 + blo _0204BCD8 + bl ErrorHandling +_0204BCD8: + cmp r4, #0x14 + bge _0204BCE0 + mov r0, #0x0 + pop {r3-r7, pc} +_0204BCE0: + sub r4, #0x14 + mov r1, #0x0 + add r0, r5, #0x0 +_0204BCE6: + add r2, r5, r1 + add r2, #0x30 + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _0204BD04 + ldrb r2, [r0, #0x2] + cmp r7, r2 + bne _0204BD04 + ldrb r2, [r0, #0x3] + cmp r4, r2 + bge _0204BD02 + str r1, [r5, #0x3c] + mov r0, #0x1 + pop {r3-r7, pc} +_0204BD02: + sub r4, r4, r2 +_0204BD04: + add r1, r1, #0x1 + add r0, #0x8 + cmp r1, #0x6 + blt _0204BCE6 + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204BD14: .word 0x0000FFFF + + thumb_func_start FUN_0204BD18 +FUN_0204BD18: ; 0x0204BD18 + push {r4, lr} + ldr r0, [r1, #0x14] + add r4, r2, #0x0 + cmp r0, #0x4 + beq _0204BD28 + cmp r0, #0x5 + beq _0204BD3E + b _0204BD3A +_0204BD28: + add r0, r4, #0x0 + bl FUN_0204BBA8 + add r1, r0, #0x1 + ldr r0, [r4, #0x3c] + add r0, r4, r0 + add r0, #0x30 + strb r1, [r0, #0x0] + pop {r4, pc} +_0204BD3A: + bl ErrorHandling +_0204BD3E: + pop {r4, pc} + + thumb_func_start FUN_0204BD40 +FUN_0204BD40: ; 0x0204BD40 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x20 + add r6, r1, #0x0 + bl FUN_020669C0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02022528 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0204BAB0 + add r1, r0, #0x0 + mov r0, #0xb + bl FUN_02047800 + add r1, r5, #0x0 + add r7, r0, #0x0 + bl FUN_02047BB0 + ldr r0, [sp, #0x0] + ldr r1, [r6, #0x3c] + add r2, r4, #0x0 + bl FUN_0202BFD8 + add r0, r7, #0x0 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020479FC + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204BD8C +FUN_0204BD8C: ; 0x0204BD8C + mov r3, #0x0 + add r2, r3, #0x0 +_0204BD90: + ldrh r1, [r0, #0x4] + add r2, r2, #0x1 + add r0, #0x8 + add r3, r3, r1 + cmp r2, #0x6 + blt _0204BD90 + add r0, r3, #0x0 + bx lr + + thumb_func_start FUN_0204BDA0 +FUN_0204BDA0: ; 0x0204BDA0 + push {r4-r7} + mov r3, #0x0 + add r5, r0, #0x0 + add r4, r3, #0x0 + mov r0, #0x1 +_0204BDAA: + mov r1, #0x0 +_0204BDAC: + add r2, r5, r1 + add r2, #0x30 + ldrb r2, [r2, #0x0] + cmp r0, r2 + bne _0204BDEC + lsl r1, r1, #0x3 + add r2, r5, r1 + ldrb r1, [r2, #0x6] + ldrb r2, [r2, #0x7] + cmp r0, #0x1 + beq _0204BDD8 + mov r6, r12 + cmp r6, r1 + beq _0204BDD8 + mov r6, r12 + cmp r6, r2 + beq _0204BDD8 + cmp r7, r1 + beq _0204BDD8 + cmp r7, r2 + beq _0204BDD8 + add r4, #0xc8 +_0204BDD8: + mov r6, #0x1 + mov r12, r1 + lsl r6, r1 + add r1, r3, #0x0 + mov r3, #0x1 + lsl r3, r2 + orr r1, r6 + add r7, r2, #0x0 + orr r3, r1 + b _0204BDF2 +_0204BDEC: + add r1, r1, #0x1 + cmp r1, #0x6 + blt _0204BDAC +_0204BDF2: + add r0, r0, #0x1 + cmp r0, #0x7 + blt _0204BDAA + cmp r3, #0x0 + beq _0204BE0A + mov r0, #0x1 +_0204BDFE: + add r1, r3, #0x0 + tst r1, r0 + beq _0204BE06 + add r4, #0x32 +_0204BE06: + lsr r3, r3, #0x1 + bne _0204BDFE +_0204BE0A: + add r0, r4, #0x0 + pop {r4-r7} + bx lr + + thumb_func_start FUN_0204BE10 +FUN_0204BE10: ; 0x0204BE10 + ldr r0, [r0, #0x48] + bx lr + + thumb_func_start FUN_0204BE14 +FUN_0204BE14: ; 0x0204BE14 + mov r0, #0xe8 + bx lr + + thumb_func_start FUN_0204BE18 +FUN_0204BE18: ; 0x0204BE18 + push {r3-r5, lr} + mov r2, #0x0 + add r3, r2, #0x0 +_0204BE1E: + add r1, r0, r2 + add r2, r2, #0x1 + strb r3, [r1, #0x3] + cmp r2, #0x20 + blt _0204BE1E + strb r3, [r0, #0x1] + strb r3, [r0, #0x2] + ldrb r1, [r0, #0x0] + mov r2, #0x1 + bic r1, r2 + strb r1, [r0, #0x0] + ldrb r4, [r0, #0x0] + mov r1, #0x38 + bic r4, r1 + strb r4, [r0, #0x0] + ldrb r4, [r0, #0x0] + mov r1, #0x2 + bic r4, r1 + strb r4, [r0, #0x0] + str r3, [r0, #0x24] + ldrh r1, [r0, #0x28] + bic r1, r2 + strh r1, [r0, #0x28] + ldrh r2, [r0, #0x28] + mov r1, #0x3e + bic r2, r1 + strh r2, [r0, #0x28] + ldrh r2, [r0, #0x28] + ldr r1, _0204BEB0 ; =0xFFFFF03F + and r1, r2 + strh r1, [r0, #0x28] + add r1, r0, #0x0 + mov r2, #0x1 + add r1, #0xa8 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0xa4 + str r3, [r1, #0x0] + ldr r1, _0204BEB4 ; =0x020F486C + add r2, r0, #0x0 +_0204BE6E: + ldrb r5, [r1, #0x0] + add r4, r2, #0x0 + add r4, #0xa9 + strb r5, [r4, #0x0] + add r4, r2, #0x0 + ldrb r5, [r1, #0x1] + add r4, #0xaa + add r3, r3, #0x1 + strb r5, [r4, #0x0] + add r1, r1, #0x2 + add r2, r2, #0x2 + cmp r3, #0x6 + blt _0204BE6E + mov r4, #0x0 + add r3, r0, #0x0 + add r1, r4, #0x0 +_0204BE8E: + add r2, r3, #0x0 + add r2, #0xb6 + strh r1, [r2, #0x0] + add r2, r3, #0x0 + add r2, #0xb8 + add r4, r4, #0x1 + add r3, r3, #0x4 + strh r1, [r2, #0x0] + cmp r4, #0xc + blt _0204BE8E + ldrb r3, [r0, #0x0] + mov r2, #0x4 + bic r3, r2 + strb r3, [r0, #0x0] + bl FUN_0204BED8 + pop {r3-r5, pc} + .balign 4 +_0204BEB0: .word 0xFFFFF03F +_0204BEB4: .word 0x020F486C + + thumb_func_start FUN_0204BEB8 +FUN_0204BEB8: ; 0x0204BEB8 + ldrb r2, [r0, #0x0] + mov r1, #0x1 + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0204BEC8 +FUN_0204BEC8: ; 0x0204BEC8 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_0204BED0 +FUN_0204BED0: ; 0x0204BED0 + add r0, r0, r1 + ldrb r0, [r0, #0x3] + bx lr + .balign 4 + + thumb_func_start FUN_0204BED8 +FUN_0204BED8: ; 0x0204BED8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bmi _0204BEE4 + cmp r4, #0x19 + blt _0204BEE8 +_0204BEE4: + bl ErrorHandling +_0204BEE8: + mov r0, #0x1 + ldrsb r1, [r5, r0] + cmp r1, #0x19 + bge _0204BF10 + add r2, r5, #0x3 + ldrb r1, [r2, r4] + cmp r1, #0x0 + bne _0204BF10 + strb r0, [r2, r4] + ldrsb r0, [r5, r0] + add r0, r0, #0x1 + strb r0, [r5, #0x1] + cmp r4, #0x3 + bne _0204BF0C + ldrb r1, [r5, #0x0] + mov r0, #0x2 + orr r0, r1 + strb r0, [r5, #0x0] +_0204BF0C: + mov r0, #0x1 + pop {r3-r5, pc} +_0204BF10: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0204BF14 +FUN_0204BF14: ; 0x0204BF14 + mov r1, #0x2 + ldrsb r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_0204BF1C +FUN_0204BF1C: ; 0x0204BF1C + push {r3-r4} + mov r1, #0x2 + ldrsb r3, [r0, r1] + mov r2, #0x0 + add r4, r3, #0x0 +_0204BF26: + add r3, r3, #0x1 + cmp r3, #0x19 + blt _0204BF2E + add r3, r2, #0x0 +_0204BF2E: + cmp r3, r4 + beq _0204BF3A + add r1, r0, r3 + ldrb r1, [r1, #0x3] + cmp r1, #0x0 + beq _0204BF26 +_0204BF3A: + mov r1, #0x2 + strb r3, [r0, #0x2] + ldrsb r0, [r0, r1] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0204BF44 +FUN_0204BF44: ; 0x0204BF44 + push {r4, lr} + add r4, r0, #0x0 + bne _0204BF4E + bl ErrorHandling +_0204BF4E: + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1d + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204BF58 +FUN_0204BF58: ; 0x0204BF58 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _0204BF66 + bl ErrorHandling +_0204BF66: + cmp r4, #0x8 + blo _0204BF6E + bl ErrorHandling +_0204BF6E: + ldrb r1, [r5, #0x0] + mov r0, #0x38 + bic r1, r0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1d + lsr r0, r0, #0x1a + orr r0, r1 + strb r0, [r5, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204BF84 +FUN_0204BF84: ; 0x0204BF84 + ldr r0, [r0, #0x24] + bx lr + + thumb_func_start FUN_0204BF88 +FUN_0204BF88: ; 0x0204BF88 + ldrb r2, [r0, #0x0] + lsl r2, r2, #0x1e + lsr r2, r2, #0x1f + beq _0204BF92 + str r1, [r0, #0x24] +_0204BF92: + bx lr + + thumb_func_start FUN_0204BF94 +FUN_0204BF94: ; 0x0204BF94 + ldrh r0, [r0, #0x28] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_0204BF9C +FUN_0204BF9C: ; 0x0204BF9C + ldrh r3, [r0, #0x28] + lsl r3, r3, #0x1a + lsr r3, r3, #0x1b + str r3, [r1, #0x0] + ldrh r0, [r0, #0x28] + lsl r0, r0, #0x14 + lsr r0, r0, #0x1a + str r0, [r2, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0204BFB0 +FUN_0204BFB0: ; 0x0204BFB0 + push {r4-r5} + ldrh r4, [r0, #0x28] + mov r5, #0x1 + lsl r1, r1, #0x10 + bic r4, r5 + lsr r5, r1, #0x10 + mov r1, #0x1 + and r1, r5 + orr r1, r4 + strh r1, [r0, #0x28] + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + lsl r2, r2, #0x1b + ldrh r1, [r0, #0x28] + mov r4, #0x3e + lsr r2, r2, #0x1a + bic r1, r4 + orr r1, r2 + strh r1, [r0, #0x28] + ldrh r2, [r0, #0x28] + ldr r1, _0204BFEC ; =0xFFFFF03F + and r2, r1 + lsl r1, r3, #0x10 + lsr r1, r1, #0x10 + lsl r1, r1, #0x1a + lsr r1, r1, #0x14 + orr r1, r2 + strh r1, [r0, #0x28] + pop {r4-r5} + bx lr + .balign 4 +_0204BFEC: .word 0xFFFFF03F + + thumb_func_start FUN_0204BFF0 +FUN_0204BFF0: ; 0x0204BFF0 + push {r3-r4} + add r3, r0, #0x0 + add r3, #0xa8 + ldrb r3, [r3, #0x0] + cmp r3, r1 + bne _0204C016 + add r1, r0, #0x0 + add r1, #0xa4 + ldr r4, [r1, #0x0] + mov r3, #0x1 + sub r1, r2, #0x1 + add r2, r3, #0x0 + lsl r2, r1 + add r1, r4, #0x0 + orr r1, r2 + add r0, #0xa4 + str r1, [r0, #0x0] + pop {r3-r4} + bx lr +_0204C016: + add r3, r0, #0x0 + add r3, #0xa8 + strb r1, [r3, #0x0] + mov r3, #0x1 + sub r1, r2, #0x1 + add r2, r3, #0x0 + lsl r2, r1 + add r0, #0xa4 + str r2, [r0, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0204C02C +FUN_0204C02C: ; 0x0204C02C + push {r3-r4} + add r3, r0, #0x0 + add r3, #0xa8 + ldrb r3, [r3, #0x0] + cmp r3, r1 + bne _0204C052 + add r1, r0, #0x0 + add r1, #0xa4 + ldr r4, [r1, #0x0] + mov r3, #0x1 + sub r1, r2, #0x1 + add r2, r3, #0x0 + lsl r2, r1 + mvn r1, r2 + and r1, r4 + add r0, #0xa4 + str r1, [r0, #0x0] + pop {r3-r4} + bx lr +_0204C052: + add r2, r0, #0x0 + add r2, #0xa8 + strb r1, [r2, #0x0] + mov r1, #0x0 + add r0, #0xa4 + str r1, [r0, #0x0] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0204C064 +FUN_0204C064: ; 0x0204C064 + add r3, r0, #0x0 + add r3, #0xa8 + ldrb r3, [r3, #0x0] + cmp r3, r1 + bne _0204C07C + add r0, #0xa4 + ldr r1, [r0, #0x0] + sub r0, r2, #0x1 + lsr r1, r0 + mov r0, #0x1 + and r0, r1 + bx lr +_0204C07C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0204C080 +FUN_0204C080: ; 0x0204C080 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r4, #0x6 + blt _0204C092 + bl ErrorHandling +_0204C092: + lsl r1, r4, #0x1 + add r0, r5, r1 + add r0, #0xa9 + strb r6, [r0, #0x0] + add r0, r5, r1 + add r0, #0xaa + strb r7, [r0, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204C0A4 +FUN_0204C0A4: ; 0x0204C0A4 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r4, #0x6 + blt _0204C0B6 + bl ErrorHandling +_0204C0B6: + lsl r1, r4, #0x1 + add r0, r5, r1 + add r0, #0xa9 + ldrb r0, [r0, #0x0] + strb r0, [r6, #0x0] + add r0, r5, r1 + add r0, #0xaa + ldrb r0, [r0, #0x0] + strb r0, [r7, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204C0CC +FUN_0204C0CC: ; 0x0204C0CC + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bx lr + + thumb_func_start FUN_0204C0D4 +FUN_0204C0D4: ; 0x0204C0D4 + push {r3, lr} + ldrb r2, [r0, #0x0] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + beq _0204C0E6 + add r0, #0x2a + mov r2, #0x78 + blx MI_CpuCopy8 +_0204C0E6: + pop {r3, pc} + + thumb_func_start FUN_0204C0E8 +FUN_0204C0E8: ; 0x0204C0E8 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + add r1, r4, #0x0 + add r1, #0x2a + mov r2, #0x78 + blx MI_CpuCopy8 + ldrb r1, [r4, #0x0] + mov r0, #0x4 + orr r0, r1 + strb r0, [r4, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0204C104 +FUN_0204C104: ; 0x0204C104 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_0204C158 + cmp r0, #0xc + blt _0204C138 + mov r0, #0x0 + add r1, r5, #0x0 +_0204C116: + add r2, r1, #0x0 + add r2, #0xba + ldrh r3, [r2, #0x0] + add r2, r1, #0x0 + add r2, #0xb6 + strh r3, [r2, #0x0] + add r2, r1, #0x0 + add r2, #0xbc + ldrh r3, [r2, #0x0] + add r2, r1, #0x0 + add r2, #0xb8 + add r0, r0, #0x1 + add r1, r1, #0x4 + strh r3, [r2, #0x0] + cmp r0, #0xb + blt _0204C116 + mov r0, #0xb +_0204C138: + lsl r4, r0, #0x2 + add r0, r6, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r1, r5, r4 + add r1, #0xb6 + strh r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_0206B754 + add r1, r5, r4 + add r1, #0xb8 + strh r0, [r1, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_0204C158 +FUN_0204C158: ; 0x0204C158 + mov r2, #0x0 +_0204C15A: + add r1, r0, #0x0 + add r1, #0xb6 + ldrh r1, [r1, #0x0] + cmp r1, #0x0 + bne _0204C168 + add r0, r2, #0x0 + bx lr +_0204C168: + add r2, r2, #0x1 + add r0, r0, #0x4 + cmp r2, #0xc + blt _0204C15A + add r0, r2, #0x0 + bx lr + + thumb_func_start FUN_0204C174 +FUN_0204C174: ; 0x0204C174 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + cmp r4, #0xc + blt _0204C186 + bl ErrorHandling +_0204C186: + add r6, r5, #0x0 + lsl r4, r4, #0x2 + add r6, #0xb6 + ldrh r0, [r6, r4] + cmp r0, #0x0 + bne _0204C196 + bl ErrorHandling +_0204C196: + ldrh r0, [r6, r4] + str r0, [r7, #0x0] + add r0, r5, r4 + add r0, #0xb8 + ldrh r1, [r0, #0x0] + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0204C1A8 +FUN_0204C1A8: ; 0x0204C1A8 + ldr r3, _0204C1B0 ; =FUN_02022610 + mov r1, #0x5 + bx r3 + nop +_0204C1B0: .word FUN_02022610 + + thumb_func_start FUN_0204C1B4 +FUN_0204C1B4: ; 0x0204C1B4 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + ldr r0, [sp, #0x24] + mov r1, #0x20 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02016998 + add r2, r0, #0x0 + str r5, [r2, #0x4] + str r4, [r2, #0x8] + str r6, [r2, #0xc] + add r0, sp, #0x8 + ldrh r0, [r0, #0x10] + ldr r1, _0204C1F0 ; =FUN_0204C1F4 + strh r0, [r2, #0x10] + ldr r0, [sp, #0x1c] + str r0, [r2, #0x14] + ldr r0, [sp, #0x20] + str r0, [r2, #0x18] + ldr r0, [sp, #0x24] + str r0, [r2, #0x1c] + mov r0, #0x0 + str r0, [r2, #0x0] + add r0, r7, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + nop +_0204C1F0: .word FUN_0204C1F4 + + thumb_func_start FUN_0204C1F4 +FUN_0204C1F4: ; 0x0204C1F4 + push {r4-r5, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0204C214 + cmp r0, #0x1 + beq _0204C23C + b _0204C258 +_0204C214: + ldr r0, [r5, #0x4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + ldr r0, [r4, #0x14] + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + str r0, [sp, #0x4] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x8] + ldrh r3, [r4, #0x10] + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0xc] + bl FUN_0200E1D0 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C258 +_0204C23C: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0204C258 + ldr r0, [r5, #0x4] + ldr r0, [r0, #0x1c] + bl FUN_021F45E8 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r4-r5, pc} +_0204C258: + mov r0, #0x0 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0204C260 +FUN_0204C260: ; 0x0204C260 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x24 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r0, [r2, #0x4] + str r5, [r2, #0x8] + str r4, [r2, #0xc] + ldr r0, [sp, #0x18] + str r6, [r2, #0x10] + str r0, [r2, #0x14] + ldr r0, [sp, #0x1c] + ldr r1, _0204C298 ; =FUN_0204C380 + str r0, [r2, #0x18] + ldr r0, [sp, #0x20] + str r0, [r2, #0x20] + add r0, r7, #0x0 + bl FUN_020463CC + pop {r3-r7, pc} + nop +_0204C298: .word FUN_0204C380 + + thumb_func_start FUN_0204C29C +FUN_0204C29C: ; 0x0204C29C + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x24 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + bl FUN_020169D8 + add r6, r0, #0x0 + mov r4, #0x0 + str r4, [r6, #0x0] + str r4, [r6, #0x4] + ldr r0, [sp, #0x0] + str r5, [r6, #0x8] + str r0, [r6, #0xc] + ldr r0, [sp, #0x4] + str r0, [r6, #0x10] + ldr r0, [sp, #0x20] + str r0, [r6, #0x14] + ldr r0, [sp, #0x24] + str r0, [r6, #0x18] + ldr r0, [r7, #0x1c] + ldr r0, [r0, #0x0] + str r0, [sp, #0x8] + bl FUN_02034930 + cmp r0, #0x0 + beq _0204C308 + add r0, r5, #0x0 + bl FUN_02034930 + cmp r0, #0x0 + beq _0204C2E6 + mov r4, #0x6 + b _0204C36A +_0204C2E6: + add r0, r5, #0x0 + bl FUN_02034964 + cmp r0, #0x0 + beq _0204C2F4 + mov r4, #0x5 + b _0204C36A +_0204C2F4: + add r0, r5, #0x0 + bl FUN_02034944 + cmp r0, #0x0 + beq _0204C302 + mov r4, #0x6 + b _0204C36A +_0204C302: + bl ErrorHandling + b _0204C36A +_0204C308: + ldr r0, [sp, #0x8] + bl FUN_02034964 + cmp r0, #0x0 + beq _0204C334 + add r0, r5, #0x0 + bl FUN_02034930 + cmp r0, #0x0 + beq _0204C320 + mov r4, #0x4 + b _0204C36A +_0204C320: + add r0, r5, #0x0 + bl FUN_02034944 + cmp r0, #0x0 + beq _0204C32E + mov r4, #0x6 + b _0204C36A +_0204C32E: + bl ErrorHandling + b _0204C36A +_0204C334: + ldr r0, [sp, #0x8] + bl FUN_02034944 + cmp r0, #0x0 + beq _0204C366 + add r0, r5, #0x0 + bl FUN_02034964 + cmp r0, #0x0 + bne _0204C36A + add r0, r5, #0x0 + bl FUN_02034944 + cmp r0, #0x0 + beq _0204C356 + mov r4, #0x6 + b _0204C36A +_0204C356: + add r0, r5, #0x0 + bl FUN_02034930 + cmp r0, #0x0 + bne _0204C36A + bl ErrorHandling + b _0204C36A +_0204C366: + bl ErrorHandling +_0204C36A: + ldr r1, _0204C37C ; =FUN_0204C380 + add r0, r7, #0x0 + add r2, r6, #0x0 + str r4, [r6, #0x20] + bl FUN_020463CC + add sp, #0xc + pop {r4-r7, pc} + nop +_0204C37C: .word FUN_0204C380 + + thumb_func_start FUN_0204C380 +FUN_0204C380: ; 0x0204C380 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r6, r4, #0x0 + ldr r1, [r4, #0x0] + add r6, #0x8 + cmp r1, #0x6 + bhi _0204C458 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0204C3A8: ; jump table (using 16-bit offset) + .short _0204C3B6 - _0204C3A8 - 2; case 0 + .short _0204C3DA - _0204C3A8 - 2; case 1 + .short _0204C3E8 - _0204C3A8 - 2; case 2 + .short _0204C3F8 - _0204C3A8 - 2; case 3 + .short _0204C406 - _0204C3A8 - 2; case 4 + .short _0204C41E - _0204C3A8 - 2; case 5 + .short _0204C450 - _0204C3A8 - 2; case 6 +_0204C3B6: + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r6, #0x0] + add r0, r7, #0x0 + bl FUN_0204AD60 + ldr r1, [r4, #0x20] + add r0, r5, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0204C45C ; =0x020F4894 + ldr r1, [r1, r2] + add r2, r4, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C458 +_0204C3DA: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C458 +_0204C3E8: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02049160 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C458 +_0204C3F8: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C458 +_0204C406: + ldr r0, [r4, #0x20] + lsl r1, r0, #0x2 + ldr r0, _0204C460 ; =0x020F48B0 + ldr r1, [r0, r1] + cmp r1, #0x0 + beq _0204C416 + add r0, r7, #0x0 + blx r1 +_0204C416: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C458 +_0204C41E: + bl FUN_02005404 + cmp r0, #0x0 + bne _0204C458 + ldr r1, [r6, #0x0] + add r0, r7, #0x0 + bl FUN_0204AD8C + add r0, r7, #0x0 + bl FUN_021E331C + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r4, #0x20] + add r0, r5, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0204C464 ; =0x020F4878 + ldr r1, [r1, r2] + add r2, r4, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _0204C458 +_0204C450: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_0204C458: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204C45C: .word 0x020F4894 +_0204C460: .word 0x020F48B0 +_0204C464: .word 0x020F4878 + + thumb_func_start FUN_0204C468 +FUN_0204C468: ; 0x0204C468 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C484 + cmp r0, #0x1 + beq _0204C498 + b _0204C49C +_0204C484: + ldr r0, _0204C4A0 ; =0x00000603 + bl FUN_020054C8 + add r0, r5, #0x0 + bl FUN_0204AFC8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C49C +_0204C498: + mov r0, #0x1 + pop {r3-r5, pc} +_0204C49C: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0204C4A0: .word 0x00000603 + + thumb_func_start FUN_0204C4A4 +FUN_0204C4A4: ; 0x0204C4A4 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bhi _0204C522 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204C4C8: ; jump table (using 16-bit offset) + .short _0204C4D0 - _0204C4C8 - 2; case 0 + .short _0204C4F6 - _0204C4C8 - 2; case 1 + .short _0204C510 - _0204C4C8 - 2; case 2 + .short _0204C51E - _0204C4C8 - 2; case 3 +_0204C4D0: + bl FUN_021DA5B8 + str r0, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r1, r0, #0x0 + ldr r2, [r4, #0x1c] + add r0, r6, #0x0 + bl FUN_021DA5D0 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C522 +_0204C4F6: + ldr r1, [r4, #0x1c] + add r0, r5, #0x0 + bl FUN_021DA5D8 + cmp r0, #0x0 + beq _0204C522 + ldr r0, [r4, #0x1c] + bl FUN_021DA5C8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C522 +_0204C510: + add r0, r6, #0x0 + bl FUN_0204AFC8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C522 +_0204C51E: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C522: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204C528 +FUN_0204C528: ; 0x0204C528 + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C54A + cmp r0, #0x1 + beq _0204C570 + cmp r0, #0x2 + beq _0204C598 + b _0204C59C +_0204C54A: + bl FUN_021DA5B8 + str r0, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r1, r0, #0x0 + ldr r2, [r4, #0x1c] + add r0, r6, #0x0 + bl FUN_021DA5D0 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C59C +_0204C570: + ldr r0, [r5, #0x38] + ldr r6, [r4, #0x1c] + bl FUN_020552F8 + add r2, r0, #0x0 + lsl r2, r2, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + bl FUN_021DAC70 + cmp r0, #0x0 + beq _0204C59C + ldr r0, [r4, #0x1c] + bl FUN_021DA5C8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C59C +_0204C598: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C59C: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0204C5A0 +FUN_0204C5A0: ; 0x0204C5A0 + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bhi _0204C63C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204C5C4: ; jump table (using 16-bit offset) + .short _0204C5CC - _0204C5C4 - 2; case 0 + .short _0204C5FE - _0204C5C4 - 2; case 1 + .short _0204C61C - _0204C5C4 - 2; case 2 + .short _0204C630 - _0204C5C4 - 2; case 3 +_0204C5CC: + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + cmp r6, #0x2 + bne _0204C5E6 + mov r1, #0xa + bl FUN_0205ADDC + b _0204C5F6 +_0204C5E6: + cmp r6, #0x3 + bne _0204C5F2 + mov r1, #0xb + bl FUN_0205ADDC + b _0204C5F6 +_0204C5F2: + bl ErrorHandling +_0204C5F6: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C63C +_0204C5FE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0x0 + bl FUN_0205AE28 + cmp r0, #0x1 + bne _0204C63C + add r0, r5, #0x0 + bl FUN_0205AE50 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C63C +_0204C61C: + ldr r0, _0204C640 ; =0x00000603 + bl FUN_020054C8 + mov r0, #0x0 + bl FUN_021D7CA4 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C63C +_0204C630: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0204C63C + mov r0, #0x1 + pop {r4-r6, pc} +_0204C63C: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0204C640: .word 0x00000603 + + thumb_func_start FUN_0204C644 +FUN_0204C644: ; 0x0204C644 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r6, #0x38] + bl FUN_020553A0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C668 + cmp r0, #0x1 + beq _0204C67E + b _0204C682 +_0204C668: + bl FUN_021DB030 + add r2, r0, #0x0 + ldr r1, _0204C688 ; =0x021DB1D1 + add r0, r5, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C682 +_0204C67E: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C682: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0204C688: .word 0x021DB1D1 + + thumb_func_start FUN_0204C68C +FUN_0204C68C: ; 0x0204C68C + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r6, #0x38] + bl FUN_020553A0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C6B0 + cmp r0, #0x1 + beq _0204C6C6 + b _0204C6CA +_0204C6B0: + bl FUN_021DB030 + add r2, r0, #0x0 + ldr r1, _0204C6D0 ; =0x021DB145 + add r0, r5, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C6CA +_0204C6C6: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C6CA: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0204C6D0: .word 0x021DB145 + + thumb_func_start FUN_0204C6D4 +FUN_0204C6D4: ; 0x0204C6D4 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + cmp r0, #0x3 + bhi _0204C798 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204C6F8: ; jump table (using 16-bit offset) + .short _0204C700 - _0204C6F8 - 2; case 0 + .short _0204C74A - _0204C6F8 - 2; case 1 + .short _0204C770 - _0204C6F8 - 2; case 2 + .short _0204C794 - _0204C6F8 - 2; case 3 +_0204C700: + ldr r0, [r4, #0x38] + bl FUN_020553A0 + add r7, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_02055320 + str r0, [sp, #0x0] + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r2, r0, #0x0 + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_0204A6E0 + bl FUN_020547B0 + cmp r0, #0x0 + beq _0204C736 + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_0205889C + mov r0, #0x1 + str r0, [r5, #0x4] + b _0204C798 +_0204C736: + bl FUN_021DB030 + add r2, r0, #0x0 + ldr r1, _0204C79C ; =0x021DB251 + add r0, r6, #0x0 + bl FUN_0204640C + mov r0, #0x3 + str r0, [r5, #0x4] + b _0204C798 +_0204C74A: + bl FUN_021DA5B8 + str r0, [r5, #0x1c] + ldr r0, [r4, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r1, r0, #0x0 + ldr r2, [r5, #0x1c] + add r0, r6, #0x0 + bl FUN_021DA5D0 + ldr r0, [r5, #0x4] + add r0, r0, #0x1 + str r0, [r5, #0x4] + b _0204C798 +_0204C770: + ldr r5, [r5, #0x1c] + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_021DA7B4 + cmp r0, #0x0 + beq _0204C798 + add r0, r5, #0x0 + bl FUN_021DA5C8 + ldr r0, [r4, #0x38] + bl FUN_020553A0 + mov r1, #0x0 + bl FUN_0205889C + mov r0, #0x1 + pop {r3-r7, pc} +_0204C794: + mov r0, #0x1 + pop {r3-r7, pc} +_0204C798: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204C79C: .word 0x021DB251 + + thumb_func_start FUN_0204C7A0 +FUN_0204C7A0: ; 0x0204C7A0 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C7BE + cmp r0, #0x1 + beq _0204C814 + b _0204C818 +_0204C7BE: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r7, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + str r0, [sp, #0x0] + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0x0 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0204A6E0 + bl FUN_020547B0 + cmp r0, #0x0 + beq _0204C7FE + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_0205889C + mov r0, #0x1 + str r0, [r4, #0x4] + ldr r1, _0204C81C ; =FUN_0204C6D4 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_020463EC + b _0204C818 +_0204C7FE: + bl FUN_021DB030 + add r2, r0, #0x0 + ldr r1, _0204C820 ; =0x021DB381 + add r0, r6, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C818 +_0204C814: + mov r0, #0x1 + pop {r3-r7, pc} +_0204C818: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204C81C: .word FUN_0204C6D4 +_0204C820: .word 0x021DB381 + + thumb_func_start FUN_0204C824 +FUN_0204C824: ; 0x0204C824 + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C846 + cmp r0, #0x1 + beq _0204C86C + cmp r0, #0x2 + beq _0204C894 + b _0204C898 +_0204C846: + bl FUN_021DA5B8 + str r0, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r1, r0, #0x0 + ldr r2, [r4, #0x1c] + add r0, r6, #0x0 + bl FUN_021DA5D0 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C898 +_0204C86C: + ldr r0, [r5, #0x38] + ldr r6, [r4, #0x1c] + bl FUN_020552F8 + add r2, r0, #0x0 + lsl r2, r2, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + bl FUN_021DAAA4 + cmp r0, #0x0 + beq _0204C898 + ldr r0, [r4, #0x1c] + bl FUN_021DA5C8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C898 +_0204C894: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C898: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0204C89C +FUN_0204C89C: ; 0x0204C89C + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bhi _0204C936 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204C8C0: ; jump table (using 16-bit offset) + .short _0204C8C8 - _0204C8C0 - 2; case 0 + .short _0204C904 - _0204C8C0 - 2; case 1 + .short _0204C922 - _0204C8C0 - 2; case 2 + .short _0204C932 - _0204C8C0 - 2; case 3 +_0204C8C8: + mov r0, #0x1 + bl FUN_021D7CA4 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + cmp r0, #0x2 + bne _0204C8EA + add r0, r6, #0x0 + mov r1, #0xa + bl FUN_0205ADDC + b _0204C8FC +_0204C8EA: + cmp r0, #0x3 + bne _0204C8F8 + add r0, r6, #0x0 + mov r1, #0xb + bl FUN_0205ADDC + b _0204C8FC +_0204C8F8: + bl ErrorHandling +_0204C8FC: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C936 +_0204C904: + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r5, r0, #0x0 + bl FUN_0205AE28 + cmp r0, #0x1 + bne _0204C936 + add r0, r5, #0x0 + bl FUN_0205AE50 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C936 +_0204C922: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0204C936 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C936 +_0204C932: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C936: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0204C93C +FUN_0204C93C: ; 0x0204C93C + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r6, #0x38] + bl FUN_020553A0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0204C960 + cmp r0, #0x1 + beq _0204C976 + b _0204C97A +_0204C960: + bl FUN_021DB030 + add r2, r0, #0x0 + ldr r1, _0204C980 ; =0x021DB041 + add r0, r5, #0x0 + bl FUN_0204640C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0204C97A +_0204C976: + mov r0, #0x1 + pop {r4-r6, pc} +_0204C97A: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0204C980: .word 0x021DB041 + + thumb_func_start FUN_0204C984 +FUN_0204C984: ; 0x0204C984 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r4, r0, #0x0 + ldr r0, [r5, #0x38] + add r1, sp, #0x4 + bl FUN_02055350 + cmp r4, #0x3 + bne _0204C9AA + mov r0, #0x1 + ldr r1, [sp, #0x4] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x4] + b _0204C9B4 +_0204C9AA: + mov r0, #0x1 + ldr r1, [sp, #0x4] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x4] +_0204C9B4: + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_0204A708 + str r0, [sp, #0x8] + ldr r0, [r5, #0x38] + add r1, sp, #0x4 + add r2, r4, #0x0 + bl FUN_020554EC + ldr r0, [r5, #0x38] + bl FUN_02055360 + ldr r1, [r5, #0x20] + bl FUN_0201EFEC + ldr r0, [r5, #0x38] + bl FUN_02055360 + ldr r1, [r5, #0x20] + bl FUN_0201EC68 + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_0204C9EC +FUN_0204C9EC: ; 0x0204C9EC + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r4, r0, #0x0 + ldr r0, [r5, #0x38] + add r1, sp, #0x4 + bl FUN_02055350 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0204A6E0 + add r6, r0, #0x0 + bl FUN_020548D8 + cmp r0, #0x0 + beq _0204CA32 + mov r0, #0x1 + ldr r1, [sp, #0x4] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x4] + mov r4, #0x2 + b _0204CA48 +_0204CA32: + add r0, r6, #0x0 + bl FUN_020548E4 + cmp r0, #0x0 + beq _0204CA48 + mov r0, #0x1 + ldr r1, [sp, #0x4] + lsl r0, r0, #0x10 + sub r0, r1, r0 + str r0, [sp, #0x4] + mov r4, #0x3 +_0204CA48: + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_0204A708 + str r0, [sp, #0x8] + ldr r0, [r5, #0x38] + add r1, sp, #0x4 + add r2, r4, #0x0 + bl FUN_020554EC + ldr r0, [r5, #0x38] + bl FUN_02055360 + ldr r1, [r5, #0x20] + bl FUN_0201EFEC + ldr r0, [r5, #0x38] + bl FUN_02055360 + ldr r1, [r5, #0x20] + bl FUN_0201EC68 + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_0204CA80 +FUN_0204CA80: ; 0x0204CA80 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CA8C ; =0x020F48CC + ldrb r0, [r0, r1] + bx lr + nop +_0204CA8C: .word 0x020F48CC + + thumb_func_start FUN_0204CA90 +FUN_0204CA90: ; 0x0204CA90 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CA9C ; =0x020F48CD + ldrb r0, [r0, r1] + bx lr + nop +_0204CA9C: .word 0x020F48CD + + thumb_func_start FUN_0204CAA0 +FUN_0204CAA0: ; 0x0204CAA0 + mov r1, #0x1c + ldr r2, _0204CAAC ; =0x020F48CC + mul r1, r0 + add r0, r2, r1 + add r0, r0, #0x2 + bx lr + .balign 4 +_0204CAAC: .word 0x020F48CC + + thumb_func_start FUN_0204CAB0 +FUN_0204CAB0: ; 0x0204CAB0 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CABC ; =0x020F48D7 + ldrb r0, [r0, r1] + bx lr + nop +_0204CABC: .word 0x020F48D7 + + thumb_func_start FUN_0204CAC0 +FUN_0204CAC0: ; 0x0204CAC0 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CACC ; =0x020F48D8 + ldrb r0, [r0, r1] + bx lr + nop +_0204CACC: .word 0x020F48D8 + + thumb_func_start FUN_0204CAD0 +FUN_0204CAD0: ; 0x0204CAD0 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CADC ; =0x020F48D9 + ldrb r0, [r0, r1] + bx lr + nop +_0204CADC: .word 0x020F48D9 + + thumb_func_start FUN_0204CAE0 +FUN_0204CAE0: ; 0x0204CAE0 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CAEC ; =0x020F48DC + ldr r0, [r0, r1] + bx lr + nop +_0204CAEC: .word 0x020F48DC + + thumb_func_start FUN_0204CAF0 +FUN_0204CAF0: ; 0x0204CAF0 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CAFC ; =0x020F48E0 + ldr r0, [r0, r1] + bx lr + nop +_0204CAFC: .word 0x020F48E0 + + thumb_func_start FUN_0204CB00 +FUN_0204CB00: ; 0x0204CB00 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CB0C ; =0x020F48E4 + ldrb r0, [r0, r1] + bx lr + nop +_0204CB0C: .word 0x020F48E4 + + thumb_func_start FUN_0204CB10 +FUN_0204CB10: ; 0x0204CB10 + mov r1, #0x1c + mul r1, r0 + ldr r0, _0204CB1C ; =0x020F48E5 + ldrb r0, [r0, r1] + bx lr + nop +_0204CB1C: .word 0x020F48E5 + + thumb_func_start FUN_0204CB20 +FUN_0204CB20: ; 0x0204CB20 + push {r3-r7, lr} + add r4, r1, #0x0 + ldr r1, _0204CC34 ; =0x021C5A68 + add r5, r2, #0x0 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + beq _0204CB32 + mov r0, #0x0 + pop {r3-r7, pc} +_0204CB32: + bne _0204CB40 + mov r2, #0xb1 + str r0, [r1, #0x0] + mov r1, #0x0 + lsl r2, r2, #0x2 + blx MI_CpuFill8 +_0204CB40: + ldr r1, _0204CC34 ; =0x021C5A68 + ldr r0, _0204CC38 ; =0x000002BE + ldr r2, [r1, #0x0] + strb r5, [r2, r0] + mov r2, #0x0 + ldr r0, [r1, #0x0] + cmp r5, #0x0 + str r2, [r0, #0x4] + beq _0204CB6C + bl FUN_02244D1C + add r1, r0, #0x0 + mov r0, #0xf + bl FUN_02016998 + ldr r1, _0204CC34 ; =0x021C5A68 + ldr r2, [r1, #0x0] + str r0, [r2, #0x4] + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x4] + bl FUN_02244D20 +_0204CB6C: + ldr r0, _0204CC34 ; =0x021C5A68 + ldr r7, _0204CC3C ; =0x0000FFFF + ldr r1, [r0, #0x0] + str r4, [r1, #0x54] + mov r1, #0x0 + add r2, r1, #0x0 + add r3, r1, #0x0 +_0204CB7A: + ldr r4, [r0, #0x0] + add r5, r4, r2 + mov r4, #0x0 + add r5, #0xa6 + mvn r4, r4 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + add r4, r4, r2 + add r4, #0xa2 + strh r7, [r4, #0x0] + ldr r4, [r0, #0x0] + add r4, r4, r2 + add r4, #0xa4 + strh r7, [r4, #0x0] + ldr r4, [r0, #0x0] + add r5, r4, r2 + add r5, #0xa7 + mov r4, #0x2 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + add r5, r4, r2 + mov r4, #0x0 + add r5, #0x66 + mvn r4, r4 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + add r4, r4, r2 + add r4, #0x62 + strh r7, [r4, #0x0] + ldr r4, [r0, #0x0] + add r4, r4, r2 + add r4, #0x64 + strh r7, [r4, #0x0] + ldr r4, [r0, #0x0] + add r5, r4, r2 + add r5, #0x67 + mov r4, #0x2 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + ldr r5, _0204CC40 ; =0x00000102 + add r6, r4, r1 + mov r4, #0x0 + mvn r4, r4 + strb r4, [r6, r5] + ldr r4, [r0, #0x0] + add r2, #0x8 + add r5, r4, r1 + add r5, #0xe2 + mov r4, #0x0 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + add r5, r4, r1 + add r5, #0xea + mov r4, #0x1 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + add r5, r4, r1 + add r5, #0xf2 + mov r4, #0x0 + strb r4, [r5, #0x0] + ldr r4, [r0, #0x0] + mov r5, #0xff + add r6, r4, r3 + add r4, r5, #0x0 + add r4, #0x6b + add r1, r1, #0x1 + add r3, #0x22 + strh r5, [r6, r4] + cmp r1, #0x8 + blt _0204CB7A + ldr r2, _0204CC34 ; =0x021C5A68 + mov r1, #0xaf + ldr r3, [r2, #0x0] + lsl r1, r1, #0x2 + mov r0, #0x0 + strb r0, [r3, r1] + ldr r2, [r2, #0x0] + add r1, r1, #0x3 + strb r0, [r2, r1] + ldr r0, _0204CC44 ; =FUN_0204D4F0 + mov r1, #0x0 + mov r2, #0xc8 + bl FUN_0200CA44 + ldr r1, _0204CC34 ; =0x021C5A68 + ldr r1, [r1, #0x0] + str r0, [r1, #0x50] + bl FUN_02030FA8 + bl FUN_0204CF60 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0204CC34: .word 0x021C5A68 +_0204CC38: .word 0x000002BE +_0204CC3C: .word 0x0000FFFF +_0204CC40: .word 0x00000102 +_0204CC44: .word FUN_0204D4F0 + + thumb_func_start FUN_0204CC48 +FUN_0204CC48: ; 0x0204CC48 + push {r3-r7, lr} + ldr r4, _0204CC94 ; =0x021C5A68 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0204CC92 + ldr r6, _0204CC98 ; =0x000002BE + mov r5, #0x0 + mov r7, #0x1 +_0204CC58: + ldr r0, [r4, #0x0] + ldrb r0, [r0, r6] + cmp r0, #0x0 + beq _0204CC6E + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_0204D43C + b _0204CC7A +_0204CC6E: + lsl r0, r5, #0x18 + mov r1, #0x1 + lsr r0, r0, #0x18 + add r2, r1, #0x0 + bl FUN_0204D43C +_0204CC7A: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0204CC58 + ldr r0, _0204CC94 ; =0x021C5A68 + ldr r2, [r0, #0x0] + ldr r0, _0204CC98 ; =0x000002BE + ldrb r1, [r2, r0] + cmp r1, #0x0 + beq _0204CC92 + mov r1, #0x1 + sub r0, r0, #0x1 + strb r1, [r2, r0] +_0204CC92: + pop {r3-r7, pc} + .balign 4 +_0204CC94: .word 0x021C5A68 +_0204CC98: .word 0x000002BE + + thumb_func_start FUN_0204CC9C +FUN_0204CC9C: ; 0x0204CC9C + push {r3, lr} + ldr r1, _0204CCD8 ; =0x021C5A68 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + beq _0204CCD6 + ldr r0, _0204CCDC ; =0x000002BB + mov r2, #0x1 + strb r2, [r3, r0] + ldr r1, [r1, #0x0] + mov r2, #0x0 + add r0, r0, #0x2 + strb r2, [r1, r0] + bl FUN_0204CF60 + mov r0, #0x1 + bl FUN_0204D168 + ldr r0, _0204CCD8 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055320 + ldr r0, _0204CCD8 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_0205532C +_0204CCD6: + pop {r3, pc} + .balign 4 +_0204CCD8: .word 0x021C5A68 +_0204CCDC: .word 0x000002BB + + thumb_func_start FUN_0204CCE0 +FUN_0204CCE0: ; 0x0204CCE0 + push {r3-r7, lr} + ldr r7, _0204CD70 ; =0x021C5A68 + add r6, r0, #0x0 + ldr r0, [r7, #0x0] + cmp r0, #0x0 + beq _0204CD6E + mov r4, #0x0 + add r5, r4, #0x0 +_0204CCF0: + ldr r0, [r7, #0x0] + add r1, r0, r5 + mov r0, #0x9f + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204CD0E + bl FUN_02016A18 + ldr r0, [r7, #0x0] + mov r1, #0x0 + add r2, r0, r5 + mov r0, #0x9f + lsl r0, r0, #0x2 + str r1, [r2, r0] +_0204CD0E: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x5 + blt _0204CCF0 + ldr r0, _0204CD70 ; =0x021C5A68 + ldr r2, [r0, #0x0] + ldr r0, _0204CD74 ; =0x000002B2 + ldrh r1, [r2, r0] + cmp r1, #0x5 + blo _0204CD28 + ldr r0, [r2, #0x54] + bl FUN_02061B64 +_0204CD28: + mov r4, #0x0 + add r5, r4, #0x0 +_0204CD2C: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_0204D43C + add r4, r4, #0x1 + cmp r4, #0x8 + blt _0204CD2C + ldr r0, _0204CD70 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x50] + bl FUN_0200CAB4 + ldr r0, _0204CD70 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0204CD60 + bl FUN_02244D3C + ldr r0, _0204CD70 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_02016A18 +_0204CD60: + ldr r0, _0204CD70 ; =0x021C5A68 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0204CD70 ; =0x021C5A68 + mov r1, #0x0 + str r1, [r0, #0x0] +_0204CD6E: + pop {r3-r7, pc} + .balign 4 +_0204CD70: .word 0x021C5A68 +_0204CD74: .word 0x000002B2 + + thumb_func_start FUN_0204CD78 +FUN_0204CD78: ; 0x0204CD78 + push {r4, lr} + lsl r4, r0, #0x2 + ldr r0, _0204CDB0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x28] + cmp r0, #0x0 + beq _0204CDAC + bl FUN_020646A0 + cmp r0, #0x0 + beq _0204CD9E + ldr r0, _0204CDB0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x28] + bl FUN_02064520 + b _0204CDA2 +_0204CD9E: + bl ErrorHandling +_0204CDA2: + ldr r0, _0204CDB0 ; =0x021C5A68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, r4 + str r1, [r0, #0x28] +_0204CDAC: + pop {r4, pc} + nop +_0204CDB0: .word 0x021C5A68 + + thumb_func_start FUN_0204CDB4 +FUN_0204CDB4: ; 0x0204CDB4 + push {r3-r7, lr} + mov r4, #0x0 + ldr r6, _0204CED4 ; =0x021C5A68 + add r7, r4, #0x0 + add r5, r4, #0x0 +_0204CDBE: + add r0, r4, #0x0 + bl FUN_0204E778 + add r0, r4, #0x0 + bl FUN_0204CD78 + cmp r4, #0x0 + beq _0204CDD4 + add r0, r4, #0x0 + bl FUN_0204ED9C +_0204CDD4: + ldr r1, [r6, #0x0] + add r0, r1, r7 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204CDFA + ldr r2, [r1, #0x54] + ldr r2, [r2, #0x38] + cmp r2, r0 + beq _0204CDF2 + ldr r2, _0204CED8 ; =0x000002BE + ldrb r1, [r1, r2] + cmp r1, #0x0 + beq _0204CDF2 + bl FUN_02055168 +_0204CDF2: + ldr r0, [r6, #0x0] + add r1, r0, r7 + mov r0, #0x0 + str r0, [r1, #0x8] +_0204CDFA: + ldr r0, [r6, #0x0] + add r7, r7, #0x4 + add r1, r0, r4 + add r1, #0x48 + mov r0, #0x0 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + mov r0, #0x0 + add r1, #0xa6 + mvn r0, r0 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldr r0, _0204CEDC ; =0x0000FFFF + add r1, #0xa2 + strh r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldr r0, _0204CEDC ; =0x0000FFFF + add r1, #0xa4 + strh r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + add r1, #0xa7 + mov r0, #0x2 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + mov r0, #0x0 + add r1, #0x66 + mvn r0, r0 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldr r0, _0204CEDC ; =0x0000FFFF + add r1, #0x62 + strh r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldr r0, _0204CEDC ; =0x0000FFFF + add r1, #0x64 + strh r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r5 + add r1, #0x67 + mov r0, #0x2 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + mov r1, #0x0 + add r2, r0, r4 + ldr r0, _0204CEE0 ; =0x00000102 + mvn r1, r1 + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + mov r1, #0x0 + add r2, r0, r4 + ldr r0, _0204CEE4 ; =0x0000010A + add r5, #0x8 + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + add r1, r0, r4 + add r1, #0xe2 + mov r0, #0x0 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r4 + add r1, #0xea + mov r0, #0x1 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + add r1, r0, r4 + add r1, #0xf2 + mov r0, #0x0 + strb r0, [r1, #0x0] + ldr r0, [r6, #0x0] + mov r1, #0x0 + add r2, r0, r4 + ldr r0, _0204CEE8 ; =0x0000013A + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + add r2, r0, r4 + ldr r0, _0204CEEC ; =0x00000142 + add r4, r4, #0x1 + strb r1, [r2, r0] + cmp r4, #0x8 + blt _0204CDBE + ldr r0, _0204CED4 ; =0x021C5A68 + ldr r1, _0204CEF0 ; =0x000002BF + ldr r2, [r0, #0x0] + mov r0, #0x0 + strb r0, [r2, r1] + bl FUN_0204CF60 + ldr r0, _0204CED4 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x50] + cmp r0, #0x0 + bne _0204CED0 + ldr r0, _0204CEF4 ; =FUN_0204D4F0 + mov r1, #0x0 + mov r2, #0xc8 + bl FUN_0200CA44 + ldr r1, _0204CED4 ; =0x021C5A68 + ldr r1, [r1, #0x0] + str r0, [r1, #0x50] +_0204CED0: + pop {r3-r7, pc} + nop +_0204CED4: .word 0x021C5A68 +_0204CED8: .word 0x000002BE +_0204CEDC: .word 0x0000FFFF +_0204CEE0: .word 0x00000102 +_0204CEE4: .word 0x0000010A +_0204CEE8: .word 0x0000013A +_0204CEEC: .word 0x00000142 +_0204CEF0: .word 0x000002BF +_0204CEF4: .word FUN_0204D4F0 + + thumb_func_start FUN_0204CEF8 +FUN_0204CEF8: ; 0x0204CEF8 + push {r3, lr} + ldr r0, _0204CF20 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x50] + cmp r0, #0x0 + beq _0204CF16 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0204D4F0 + ldr r0, _0204CF20 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x50] + bl FUN_0200CAB4 +_0204CF16: + ldr r0, _0204CF20 ; =0x021C5A68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x50] + pop {r3, pc} + .balign 4 +_0204CF20: .word 0x021C5A68 + + thumb_func_start FUN_0204CF24 +FUN_0204CF24: ; 0x0204CF24 + push {r3-r5, lr} + ldr r0, _0204CF58 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204CF54 + mov r5, #0x0 + add r4, r5, #0x0 +_0204CF32: + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + add r1, r4, #0x0 + add r2, r4, #0x0 + bl FUN_0204D43C + add r0, r5, #0x0 + bl FUN_0204F69C + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0204CF32 + ldr r0, _0204CF58 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204CF5C ; =0x000002BD + strb r2, [r1, r0] +_0204CF54: + pop {r3-r5, pc} + nop +_0204CF58: .word 0x021C5A68 +_0204CF5C: .word 0x000002BD + + thumb_func_start FUN_0204CF60 +FUN_0204CF60: ; 0x0204CF60 + push {r4, lr} + bl FUN_02031190 + ldr r1, _0204D03C ; =0x021C5A68 + lsl r0, r0, #0x2 + ldr r2, [r1, #0x0] + ldr r1, [r2, #0x54] + add r0, r2, r0 + ldr r1, [r1, #0x38] + str r1, [r0, #0x8] + bl FUN_02031190 + ldr r1, _0204D03C ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0x48 + strb r2, [r0, #0x0] + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0204D03C ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055320 + ldr r1, _0204D03C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0xa2 + strh r0, [r1, #0x0] + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0204D03C ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_0205532C + ldr r1, _0204D03C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0xa4 + strh r0, [r1, #0x0] + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0204D03C ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + ldr r1, _0204D03C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0xa6 + strb r0, [r1, #0x0] + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0204D03C ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055320 + ldr r1, _0204D03C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0x62 + strh r0, [r1, #0x0] + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0204D03C ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_0205532C + ldr r1, _0204D03C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0x64 + strh r0, [r1, #0x0] + bl FUN_02031190 + add r4, r0, #0x0 + ldr r0, _0204D03C ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + ldr r1, _0204D03C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0x66 + strb r0, [r1, #0x0] + pop {r4, pc} + nop +_0204D03C: .word 0x021C5A68 + + thumb_func_start FUN_0204D040 +FUN_0204D040: ; 0x0204D040 + push {r3-r7, lr} + str r0, [sp, #0x0] + ldr r0, _0204D110 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0204D114 ; =0x000002BF + strb r2, [r1, r0] + bl FUN_02031190 + ldr r2, _0204D110 ; =0x021C5A68 + add r1, r0, #0x0 + ldr r4, [r2, #0x0] + lsl r6, r1, #0x2 + ldr r0, [r4, #0x54] + ldr r3, [r0, #0x38] + add r0, r4, r6 + str r3, [r0, #0x8] + ldr r0, [r2, #0x0] + mov r3, #0x1 + add r0, r0, r1 + add r0, #0x48 + strb r3, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r3, [r2, #0x0] + lsl r5, r0, #0x3 + add r0, r3, r5 + add r0, #0xa2 + lsl r4, r1, #0x3 + add r3, r3, r4 + ldrh r0, [r0, #0x0] + add r3, #0xa2 + strh r0, [r3, #0x0] + ldr r3, [r2, #0x0] + add r0, r3, r5 + add r0, #0xa4 + add r3, r3, r4 + ldrh r0, [r0, #0x0] + add r3, #0xa4 + strh r0, [r3, #0x0] + ldr r7, [r2, #0x0] + mov r0, #0xa6 + add r3, r7, r5 + ldrsb r0, [r3, r0] + add r3, r7, r4 + add r3, #0xa6 + strb r0, [r3, #0x0] + ldr r3, [r2, #0x0] + mov r7, #0x29 + add r0, r3, r5 + add r0, #0x62 + add r3, r3, r4 + ldrh r0, [r0, #0x0] + add r3, #0x62 + lsl r7, r7, #0x4 + strh r0, [r3, #0x0] + ldr r3, [r2, #0x0] + add r0, r3, r5 + add r0, #0x64 + add r3, r3, r4 + ldrh r0, [r0, #0x0] + add r3, #0x64 + strh r0, [r3, #0x0] + ldr r0, [r2, #0x0] + mov r3, #0x66 + add r5, r0, r5 + add r0, r0, r4 + ldrsb r5, [r5, r3] + add r0, #0x66 + strb r5, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r4, [r2, #0x0] + lsl r5, r0, #0x2 + add r0, r4, r5 + ldr r0, [r0, r7] + add r4, r4, r6 + str r0, [r4, r7] + ldr r0, [r2, #0x0] + mov r4, #0x0 + add r0, r0, r5 + str r4, [r0, r7] + ldr r2, [r2, #0x0] + add r0, r2, r6 + ldr r0, [r0, r7] + cmp r0, #0x0 + beq _0204D0F8 + add r3, #0xe4 + add r3, r2, r3 + mov r2, #0x22 + mul r2, r1 + add r1, r3, r2 + bl FUN_0202393C +_0204D0F8: + ldr r1, _0204D110 ; =0x021C5A68 + mov r0, #0xff + ldr r3, [r1, #0x0] + ldr r1, [sp, #0x0] + mov r2, #0x22 + mul r2, r1 + add r1, r0, #0x0 + add r2, r3, r2 + add r1, #0x6b + strh r0, [r2, r1] + pop {r3-r7, pc} + nop +_0204D110: .word 0x021C5A68 +_0204D114: .word 0x000002BF + + thumb_func_start FUN_0204D118 +FUN_0204D118: ; 0x0204D118 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _0204D160 ; =0x021C5A68 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + add r6, r2, #0x0 + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r1, sp, #0x0 + strb r4, [r1, #0x0] + asr r2, r4, #0x8 + strb r2, [r1, #0x1] + asr r2, r6, #0x8 + strb r6, [r1, #0x2] + strb r2, [r1, #0x3] + strb r0, [r1, #0x4] + cmp r5, #0x0 + beq _0204D14A + ldrb r2, [r1, #0x4] + mov r0, #0x80 + orr r0, r2 + strb r0, [r1, #0x4] +_0204D14A: + mov r0, #0x16 + add r1, sp, #0x0 + bl FUN_020311D0 + ldr r0, _0204D160 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204D164 ; =0x000002BB + strb r2, [r1, r0] + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0204D160: .word 0x021C5A68 +_0204D164: .word 0x000002BB + + thumb_func_start FUN_0204D168 +FUN_0204D168: ; 0x0204D168 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0204D194 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0x0 + ldr r0, _0204D194 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204D118 + pop {r3-r5, pc} + nop +_0204D194: .word 0x021C5A68 + + thumb_func_start FUN_0204D198 +FUN_0204D198: ; 0x0204D198 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02031190 + ldr r1, _0204D1C8 ; =0x021C5A68 + lsl r0, r0, #0x3 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0x62 + ldrh r4, [r0, #0x0] + bl FUN_02031190 + ldr r1, _0204D1C8 ; =0x021C5A68 + lsl r0, r0, #0x3 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0x64 + ldrh r2, [r0, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204D118 + pop {r3-r5, pc} + nop +_0204D1C8: .word 0x021C5A68 + + thumb_func_start FUN_0204D1CC +FUN_0204D1CC: ; 0x0204D1CC + push {r3-r5, lr} + sub sp, #0x8 + ldrh r2, [r1, #0x0] + mov r4, #0xf + lsl r4, r4, #0xc + ldrh r3, [r1, #0x2] + cmp r2, r4 + blo _0204D1DE + sub r2, r4, #0x1 +_0204D1DE: + mov r4, #0xf + lsl r4, r4, #0xc + cmp r3, r4 + blo _0204D1E8 + sub r3, r4, #0x1 +_0204D1E8: + mov r4, #0xf + and r0, r4 + add r4, sp, #0x0 + strb r0, [r4, #0x0] + strb r2, [r4, #0x1] + asr r2, r2, #0x8 + add r5, r2, #0x0 + mov r0, #0x1 + and r5, r0 + asr r2, r3, #0x7 + mov r0, #0x2 + and r0, r2 + add r0, r5, r0 + strb r0, [r4, #0x2] + strb r3, [r4, #0x3] + ldrb r0, [r1, #0x7] + cmp r0, #0x0 + beq _0204D214 + ldrb r2, [r4, #0x2] + mov r0, #0x80 + orr r0, r2 + strb r0, [r4, #0x2] +_0204D214: + mov r2, #0x4 + ldrsb r2, [r1, r2] + add r5, sp, #0x0 + ldrb r0, [r5, #0x0] + lsr r4, r2, #0x1f + lsl r3, r2, #0x1e + sub r3, r3, r4 + mov r2, #0x1e + ror r3, r2 + add r2, r4, r3 + lsl r2, r2, #0x4 + add r0, r0, r2 + strb r0, [r5, #0x0] + ldrb r0, [r1, #0x5] + ldrb r2, [r5, #0x0] + add r1, sp, #0x0 + lsl r0, r0, #0x6 + add r0, r2, r0 + strb r0, [r5, #0x0] + mov r0, #0x17 + mov r2, #0x0 + bl FUN_02030BC4 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0204D248 +FUN_0204D248: ; 0x0204D248 + push {r3-r5, lr} + ldr r0, _0204D2A8 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055370 + add r4, r0, #0x0 + ldr r0, _0204D2A8 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055378 + add r5, r0, #0x0 + cmp r4, #0x0 + bne _0204D292 + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0204D292 + ldr r0, _0204D2A8 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204D2AC ; =0x000002BA + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204D292 + mov r0, #0x1 + bl FUN_0204D168 + ldr r0, _0204D2A8 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204D2AC ; =0x000002BA + strb r2, [r1, r0] +_0204D292: + cmp r4, #0x1 + bne _0204D2A4 + cmp r5, #0x1 + bne _0204D2A4 + ldr r0, _0204D2A8 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0204D2AC ; =0x000002BA + strb r2, [r1, r0] +_0204D2A4: + pop {r3-r5, pc} + nop +_0204D2A8: .word 0x021C5A68 +_0204D2AC: .word 0x000002BA + + thumb_func_start FUN_0204D2B0 +FUN_0204D2B0: ; 0x0204D2B0 + push {r3-r7, lr} + mov r4, #0x0 + ldr r7, _0204D2FC ; =0x021C5A68 + add r5, r4, #0x0 + add r6, r4, #0x0 +_0204D2BA: + ldr r0, [r7, #0x0] + add r2, r0, r4 + add r1, r2, #0x0 + add r1, #0x48 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204D2E8 + ldr r3, _0204D300 ; =0x00000132 + add r1, r0, #0x0 + ldrb r3, [r2, r3] + add r1, #0x62 + cmp r3, #0x0 + bne _0204D2DC + ldr r3, _0204D304 ; =0x000002BB + ldrb r0, [r0, r3] + cmp r0, #0x0 + beq _0204D2E8 +_0204D2DC: + ldr r0, _0204D300 ; =0x00000132 + add r1, r1, r5 + strb r6, [r2, r0] + add r0, r4, #0x0 + bl FUN_0204D1CC +_0204D2E8: + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, #0x8 + blt _0204D2BA + ldr r0, _0204D2FC ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0204D304 ; =0x000002BB + strb r2, [r1, r0] + pop {r3-r7, pc} + .balign 4 +_0204D2FC: .word 0x021C5A68 +_0204D300: .word 0x00000132 +_0204D304: .word 0x000002BB + + thumb_func_start FUN_0204D308 +FUN_0204D308: ; 0x0204D308 + ldr r0, _0204D31C ; =0x021C5A68 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0204D318 + mov r0, #0xae + mov r1, #0x0 + lsl r0, r0, #0x2 + strb r1, [r2, r0] +_0204D318: + bx lr + nop +_0204D31C: .word 0x021C5A68 + + thumb_func_start FUN_0204D320 +FUN_0204D320: ; 0x0204D320 + mov r0, #0xb1 + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_0204D328 +FUN_0204D328: ; 0x0204D328 + push {r3-r7, lr} + sub sp, #0x10 + ldr r1, _0204D430 ; =0x021C5A68 + add r5, r0, #0x0 + ldr r2, [r1, #0x0] + lsl r6, r5, #0x2 + add r1, r2, r6 + ldr r1, [r1, #0x8] + cmp r1, #0x0 + bne _0204D42A + ldr r1, _0204D434 ; =0x000002BD + ldrb r1, [r2, r1] + cmp r1, #0x0 + bne _0204D42A + bl FUN_0202DFA4 + str r0, [sp, #0xc] + cmp r0, #0x0 + beq _0204D42A + ldr r0, _0204D430 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204D438 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204D37C + bl FUN_02031190 + cmp r5, r0 + beq _0204D37C + ldr r0, _0204D430 ; =0x021C5A68 + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r1, r1, #0x8 + ldr r0, [r0, #0x54] + add r1, r5, r1 + ldr r0, [r0, #0x34] + bl FUN_02058060 + cmp r0, #0x0 + beq _0204D37C + bl FUN_02057654 +_0204D37C: + ldr r0, _0204D430 ; =0x021C5A68 + lsl r4, r5, #0x3 + ldr r7, [r0, #0x0] + ldr r0, [sp, #0xc] + bl FUN_020239CC + mov r1, #0x0 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r7, #0x54] + add r7, r7, r4 + add r1, r7, #0x0 + add r2, r7, #0x0 + add r1, #0xa2 + add r2, #0xa4 + mov r3, #0xa6 + ldrh r1, [r1, #0x0] + ldrh r2, [r2, #0x0] + ldrsb r3, [r7, r3] + ldr r0, [r0, #0x34] + bl FUN_02055068 + add r7, r0, #0x0 + bne _0204D3B2 + bl ErrorHandling +_0204D3B2: + ldr r0, _0204D430 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r0, r0, r6 + str r7, [r0, #0x8] + add r0, r7, #0x0 + bl FUN_020553A0 + mov r1, #0x1 + lsl r1, r1, #0x8 + add r1, r5, r1 + bl FUN_02058444 + ldr r0, _0204D430 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204D438 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204D3DC + add r0, r5, #0x0 + bl FUN_0223E4D4 +_0204D3DC: + ldr r0, _0204D430 ; =0x021C5A68 + ldr r1, _0204D438 ; =0x000002BE + ldr r3, [r0, #0x0] + ldrb r2, [r3, r1] + cmp r2, #0x0 + beq _0204D41E + add r0, r3, r5 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204D41E + sub r0, r1, #0x1 + ldrb r0, [r3, r0] + cmp r0, #0x0 + bne _0204D40E + add r1, r3, r4 + ldr r0, [r3, #0x54] + add r3, r3, r4 + add r1, #0xa2 + add r3, #0xa4 + ldrh r1, [r1, #0x0] + ldrh r3, [r3, #0x0] + mov r2, #0x0 + bl FUN_021E5B30 +_0204D40E: + ldr r0, _0204D430 ; =0x021C5A68 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add sp, #0x10 + add r0, r0, r5 + add r0, #0x48 + strb r1, [r0, #0x0] + pop {r3-r7, pc} +_0204D41E: + cmp r2, #0x0 + bne _0204D42A + add r0, r3, r5 + mov r1, #0x1 + add r0, #0x48 + strb r1, [r0, #0x0] +_0204D42A: + add sp, #0x10 + pop {r3-r7, pc} + nop +_0204D430: .word 0x021C5A68 +_0204D434: .word 0x000002BD +_0204D438: .word 0x000002BE + + thumb_func_start FUN_0204D43C +FUN_0204D43C: ; 0x0204D43C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0204D4CC ; =0x021C5A68 + add r6, r1, #0x0 + ldr r0, [r0, #0x0] + add r7, r2, #0x0 + cmp r0, #0x0 + beq _0204D4C8 + add r0, #0x5a + mov r1, #0x0 + mov r2, #0x8 + blx MI_CpuFill8 + add r0, r5, #0x0 + bl FUN_0204CD78 + ldr r0, _0204D4CC ; =0x021C5A68 + lsl r4, r5, #0x2 + ldr r1, [r0, #0x0] + add r0, r1, r4 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204D492 + ldr r2, [r1, #0x54] + ldr r2, [r2, #0x38] + cmp r2, r0 + beq _0204D488 + ldr r2, _0204D4D0 ; =0x000002BE + ldrb r1, [r1, r2] + cmp r1, #0x0 + bne _0204D47E + cmp r7, #0x0 + beq _0204D484 +_0204D47E: + bl FUN_02055168 + b _0204D488 +_0204D484: + bl FUN_02055160 +_0204D488: + ldr r0, _0204D4CC ; =0x021C5A68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, r4 + str r1, [r0, #0x8] +_0204D492: + ldr r0, _0204D4CC ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r1, #0x48 + ldrb r0, [r1, r5] + cmp r0, #0x0 + beq _0204D4A6 + cmp r6, #0x0 + bne _0204D4A6 + mov r0, #0x0 + strb r0, [r1, r5] +_0204D4A6: + ldr r0, _0204D4CC ; =0x021C5A68 + mov r2, #0x1 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204D4D4 ; =0x00000132 + cmp r6, #0x0 + strb r2, [r1, r0] + bne _0204D4C8 + add r0, r5, #0x0 + bl FUN_0204ED9C + ldr r0, _0204D4CC ; =0x021C5A68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, r5 + add r0, #0xfa + strb r1, [r0, #0x0] +_0204D4C8: + pop {r3-r7, pc} + nop +_0204D4CC: .word 0x021C5A68 +_0204D4D0: .word 0x000002BE +_0204D4D4: .word 0x00000132 + + thumb_func_start FUN_0204D4D8 +FUN_0204D4D8: ; 0x0204D4D8 + ldr r1, _0204D4E8 ; =0x021C48B8 + mov r0, #0x2 + ldr r1, [r1, #0x44] + tst r1, r0 + beq _0204D4E4 + mov r0, #0x1 +_0204D4E4: + ldr r3, _0204D4EC ; =FUN_02030F60 + bx r3 + .balign 4 +_0204D4E8: .word 0x021C48B8 +_0204D4EC: .word FUN_02030F60 + + thumb_func_start FUN_0204D4F0 +FUN_0204D4F0: ; 0x0204D4F0 + push {r4-r6, lr} + add r4, r1, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + beq _0204D530 + bl FUN_0204D4D8 + bl FUN_02031190 + cmp r0, #0x0 + bne _0204D524 + add r0, r4, #0x0 + bl FUN_0204D2B0 + add r0, r4, #0x0 + bl FUN_0204D248 + ldr r0, _0204D560 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0204D52A + bl FUN_02244D58 + b _0204D52A +_0204D524: + add r0, r4, #0x0 + bl FUN_0204D248 +_0204D52A: + add r0, r4, #0x0 + bl FUN_0204D568 +_0204D530: + ldr r4, _0204D560 ; =0x021C5A68 + ldr r6, _0204D564 ; =0x000002BE + mov r5, #0x0 +_0204D536: + ldr r0, [r4, #0x0] + ldrb r0, [r0, r6] + cmp r0, #0x0 + beq _0204D556 + bl FUN_02031190 + cmp r0, #0x0 + bne _0204D556 + add r0, r5, #0x0 + bl FUN_0202DFA4 + cmp r0, #0x0 + bne _0204D556 + add r0, r5, #0x0 + bl FUN_02245358 +_0204D556: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0204D536 + pop {r4-r6, pc} + nop +_0204D560: .word 0x021C5A68 +_0204D564: .word 0x000002BE + + thumb_func_start FUN_0204D568 +FUN_0204D568: ; 0x0204D568 + push {r3-r7, lr} + ldr r4, _0204D608 ; =0x021C5A68 + ldr r7, _0204D60C ; =0x000002BE + mov r5, #0x0 + add r6, sp, #0x0 +_0204D572: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0204D5A0 + bl FUN_02031280 + cmp r0, #0x0 + beq _0204D58A + cmp r5, #0x0 + beq _0204D5A0 +_0204D58A: + bl FUN_02031190 + cmp r0, #0x0 + bne _0204D5A0 + ldr r0, [r4, #0x0] + ldrb r0, [r0, r7] + cmp r0, #0x0 + beq _0204D5A0 + add r0, r5, #0x0 + bl FUN_02247614 +_0204D5A0: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0204D5B8 + bl FUN_02031280 + cmp r0, #0x0 + beq _0204D5C6 + cmp r5, #0x0 + bne _0204D5C6 +_0204D5B8: + add r0, r5, #0x0 + bl FUN_0204DE30 + add r0, r5, #0x0 + bl FUN_0204EFCC + b _0204D600 +_0204D5C6: + ldr r0, [r4, #0x0] + add r0, r0, r5 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204D600 + bl FUN_02031190 + cmp r0, #0x0 + bne _0204D5F0 + ldr r1, [r4, #0x0] + ldr r0, _0204D60C ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204D5F0 + add r0, r5, #0x0 + bl FUN_0223EB8C + add r0, r5, #0x0 + bl FUN_0223CB08 +_0204D5F0: + strb r5, [r6, #0x0] + ldr r3, [r4, #0x0] + mov r0, #0x0 + ldr r3, [r3, #0x54] + mov r1, #0x1 + add r2, sp, #0x0 + bl FUN_0204DBCC +_0204D600: + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0204D572 + pop {r3-r7, pc} + .balign 4 +_0204D608: .word 0x021C5A68 +_0204D60C: .word 0x000002BE + + thumb_func_start FUN_0204D610 +FUN_0204D610: ; 0x0204D610 + ldr r0, _0204D624 ; =0x021C5A68 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0204D620 + mov r0, #0xaf + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + bx lr +_0204D620: + mov r0, #0x0 + bx lr + .balign 4 +_0204D624: .word 0x021C5A68 + + thumb_func_start FUN_0204D628 +FUN_0204D628: ; 0x0204D628 + push {r3, lr} + ldr r1, _0204D650 ; =0x021C5A68 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + beq _0204D64E + mov r1, #0xaf + lsl r1, r1, #0x2 + ldrb r2, [r3, r1] + cmp r2, r0 + beq _0204D63E + strb r0, [r3, r1] +_0204D63E: + ldr r1, _0204D650 ; =0x021C5A68 + mov r0, #0x3e + ldr r2, [r1, #0x0] + mov r1, #0xaf + lsl r1, r1, #0x2 + add r1, r2, r1 + bl FUN_020311D0 +_0204D64E: + pop {r3, pc} + .balign 4 +_0204D650: .word 0x021C5A68 + + thumb_func_start FUN_0204D654 +FUN_0204D654: ; 0x0204D654 + push {r4, lr} + ldr r2, _0204D678 ; =0x021C5A68 + ldr r4, [r2, #0x0] + cmp r4, #0x0 + beq _0204D674 + mov r1, #0xaf + lsl r1, r1, #0x2 + ldrb r3, [r4, r1] + cmp r3, r0 + beq _0204D674 + strb r0, [r4, r1] + ldr r2, [r2, #0x0] + mov r0, #0x3e + add r1, r2, r1 + bl FUN_020311D0 +_0204D674: + pop {r4, pc} + nop +_0204D678: .word 0x021C5A68 + + thumb_func_start FUN_0204D67C +FUN_0204D67C: ; 0x0204D67C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0204D6BC ; =0x021C5A68 + add r4, r2, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204D6B8 + cmp r1, #0x1 + beq _0204D692 + bl ErrorHandling +_0204D692: + cmp r5, #0x8 + blt _0204D69A + bl ErrorHandling +_0204D69A: + ldrb r0, [r4, #0x0] + mov r1, #0x1 + cmp r0, #0x1 + beq _0204D6A8 + cmp r0, #0x0 + beq _0204D6A8 + mov r1, #0x0 +_0204D6A8: + cmp r1, #0x0 + bne _0204D6B0 + bl ErrorHandling +_0204D6B0: + ldrb r1, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_0204EAD8 +_0204D6B8: + pop {r3-r5, pc} + nop +_0204D6BC: .word 0x021C5A68 + + thumb_func_start FUN_0204D6C0 +FUN_0204D6C0: ; 0x0204D6C0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0204D734 ; =0x021C5A68 + add r4, r1, #0x0 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0204D732 + ldr r0, _0204D738 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204D6E4 + add r0, r4, #0x0 + bl FUN_0204D654 + ldr r0, _0204D734 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204D73C ; =0x000002C1 + strb r4, [r1, r0] +_0204D6E4: + ldr r4, [r5, #0x38] + cmp r4, #0x0 + beq _0204D6F8 + bl FUN_02031190 + ldr r1, _0204D734 ; =0x021C5A68 + lsl r0, r0, #0x2 + ldr r1, [r1, #0x0] + add r0, r1, r0 + str r4, [r0, #0x8] +_0204D6F8: + bl FUN_02030F40 + cmp r0, #0x0 + beq _0204D712 + bl FUN_02031190 + cmp r0, #0x0 + bne _0204D712 + ldr r1, _0204D734 ; =0x021C5A68 + mov r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0204D89C +_0204D712: + bl FUN_02030F40 + cmp r0, #0x0 + beq _0204D732 + bl FUN_02031190 + cmp r0, #0x0 + bne _0204D732 + ldr r0, _0204D734 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204D738 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204D732 + bl FUN_0204EC28 +_0204D732: + pop {r3-r5, pc} + .balign 4 +_0204D734: .word 0x021C5A68 +_0204D738: .word 0x000002BE +_0204D73C: .word 0x000002C1 + + thumb_func_start FUN_0204D740 +FUN_0204D740: ; 0x0204D740 + mov r0, #0x20 + tst r0, r1 + beq _0204D74A + mov r0, #0x2 + bx lr +_0204D74A: + mov r0, #0x10 + tst r0, r1 + beq _0204D754 + mov r0, #0x3 + bx lr +_0204D754: + mov r0, #0x40 + tst r0, r1 + beq _0204D75E + mov r0, #0x0 + bx lr +_0204D75E: + mov r0, #0x80 + tst r1, r0 + beq _0204D768 + mov r0, #0x1 + bx lr +_0204D768: + sub r0, #0x81 + bx lr + + thumb_func_start FUN_0204D76C +FUN_0204D76C: ; 0x0204D76C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _0204D7AC ; =0x021C5A68 + add r6, r1, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_02034B64 + add r4, r0, #0x0 + ldr r0, _0204D7AC ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_02034B6C + mov r2, #0x0 + cmp r4, #0x0 + ble _0204D7A6 +_0204D78E: + ldrh r1, [r0, #0x18] + cmp r5, r1 + bne _0204D79E + ldrh r1, [r0, #0x1a] + cmp r6, r1 + bne _0204D79E + mov r0, #0x1 + pop {r4-r6, pc} +_0204D79E: + add r2, r2, #0x1 + add r0, #0x20 + cmp r2, r4 + blt _0204D78E +_0204D7A6: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0204D7AC: .word 0x021C5A68 + + thumb_func_start FUN_0204D7B0 +FUN_0204D7B0: ; 0x0204D7B0 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0204D824 ; =0x0000FFFF + add r6, r1, #0x0 + add r7, r2, #0x0 + cmp r5, r0 + beq _0204D812 + cmp r6, r0 + beq _0204D812 + mov r4, #0x0 +_0204D7C4: + cmp r4, r7 + beq _0204D7E0 + add r0, r4, #0x0 + bl FUN_0204E544 + cmp r5, r0 + bne _0204D7E0 + add r0, r4, #0x0 + bl FUN_0204E598 + cmp r6, r0 + bne _0204D7E0 + mov r0, #0x1 + pop {r3-r7, pc} +_0204D7E0: + add r4, r4, #0x1 + cmp r4, #0x8 + blt _0204D7C4 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0204D76C + cmp r0, #0x0 + beq _0204D7F6 + mov r0, #0x1 + pop {r3-r7, pc} +_0204D7F6: + ldr r0, _0204D828 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204D82C ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204D812 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02246F1C + cmp r0, #0x0 + bne _0204D812 + mov r0, #0x1 + pop {r3-r7, pc} +_0204D812: + ldr r0, _0204D828 ; =0x021C5A68 + add r1, r5, #0x0 + ldr r0, [r0, #0x0] + add r2, r6, #0x0 + ldr r0, [r0, #0x54] + bl FUN_0204A6B4 + pop {r3-r7, pc} + nop +_0204D824: .word 0x0000FFFF +_0204D828: .word 0x021C5A68 +_0204D82C: .word 0x000002BE + + thumb_func_start FUN_0204D830 +FUN_0204D830: ; 0x0204D830 + push {r3, lr} + add r1, r0, #0x0 + ldr r0, _0204D858 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _0204D852 + bl FUN_02244D40 + bl FUN_02244DA0 + cmp r0, #0x0 + bne _0204D84E + mov r0, #0x1 + pop {r3, pc} +_0204D84E: + mov r0, #0x0 + pop {r3, pc} +_0204D852: + mov r0, #0x0 + pop {r3, pc} + nop +_0204D858: .word 0x021C5A68 + + thumb_func_start FUN_0204D85C +FUN_0204D85C: ; 0x0204D85C + cmp r0, #0x5 + bge _0204D864 + mov r0, #0x8 + bx lr +_0204D864: + cmp r0, #0xa + bge _0204D86C + mov r0, #0x4 + bx lr +_0204D86C: + mov r0, #0x2 + bx lr + + thumb_func_start FUN_0204D870 +FUN_0204D870: ; 0x0204D870 + push {r3-r4, lr} + sub sp, #0x14 + ldr r3, _0204D898 ; =0x020F5824 + add r4, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, sp, #0x0 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + cmp r4, #0x5 + str r0, [r2, #0x0] + blt _0204D88E + bl ErrorHandling +_0204D88E: + lsl r1, r4, #0x2 + add r0, sp, #0x0 + ldr r0, [r0, r1] + add sp, #0x14 + pop {r3-r4, pc} + .balign 4 +_0204D898: .word 0x020F5824 + + thumb_func_start FUN_0204D89C +FUN_0204D89C: ; 0x0204D89C + push {r3-r7, lr} + sub sp, #0x18 + mov r5, #0x0 + add r0, r5, #0x0 + ldr r6, _0204DAF4 ; =0x021C5A68 + str r5, [sp, #0x4] + str r0, [sp, #0x0] +_0204D8AA: + ldr r0, [r6, #0x0] + add r1, r0, r5 + add r1, #0x48 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204D976 + add r1, r0, r5 + add r1, #0xe2 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204D976 + add r1, r0, r5 + add r1, #0xea + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204D976 + add r2, r0, #0x0 + ldr r1, [sp, #0x0] + add r2, #0x62 + ldr r0, [r0, #0x4] + add r4, r2, r1 + cmp r0, #0x0 + beq _0204D8E0 + add r1, r5, #0x0 + bl FUN_02244D40 + str r0, [sp, #0x4] +_0204D8E0: + ldr r1, [r6, #0x0] + ldr r0, _0204DAF8 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204D8F4 + add r0, r5, #0x0 + bl FUN_02245F4C + cmp r0, #0x0 + bne _0204D976 +_0204D8F4: + ldr r0, [r6, #0x0] + ldr r1, _0204DAFC ; =0x0000013A + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0x0 + beq _0204D90A + ldr r1, _0204DAFC ; =0x0000013A + ldrb r1, [r0, r1] + sub r2, r1, #0x1 + ldr r1, _0204DAFC ; =0x0000013A + strb r2, [r0, r1] +_0204D90A: + ldr r0, [r6, #0x0] + ldr r1, _0204DAFC ; =0x0000013A + add r2, r0, r5 + ldrb r1, [r2, r1] + cmp r1, #0x0 + bne _0204D93C + ldr r1, _0204DAF8 ; =0x000002BE + ldrb r0, [r0, r1] + cmp r0, #0x0 + beq _0204D93C + add r0, r5, #0x0 + bl FUN_0223F8D8 + cmp r0, #0x0 + bne _0204D976 + add r0, r5, #0x0 + bl FUN_0204D830 + cmp r0, #0x0 + bne _0204D93C + add r0, r5, #0x0 + bl FUN_02247544 + cmp r0, #0x0 + bne _0204D976 +_0204D93C: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _0204D94A + bl FUN_02244DB0 + cmp r0, #0x0 + beq _0204D976 +_0204D94A: + ldr r0, [r6, #0x0] + add r0, r0, r5 + add r0, #0xf2 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204D95A + mov r7, #0x0 + b _0204D962 +_0204D95A: + add r0, r5, #0x0 + bl FUN_02030F88 + add r7, r0, #0x0 +_0204D962: + add r0, r5, #0x0 + bl FUN_02030F74 + strb r0, [r4, #0x5] + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldr r0, _0204DAFC ; =0x0000013A + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204D978 +_0204D976: + b _0204DAE2 +_0204D978: + ldr r0, _0204DB00 ; =0x0000010A + ldr r2, _0204DB04 ; =0x0000012A + ldrb r0, [r1, r0] + ldrb r1, [r1, r2] + bl FUN_0204D85C + str r0, [sp, #0x10] + ldr r1, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_0204E084 + cmp r0, #0x0 + beq _0204D9A8 + ldr r0, [r6, #0x0] + ldr r1, [sp, #0x10] + add r2, r0, r5 + ldr r0, _0204DAFC ; =0x0000013A + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + mov r1, #0x1 + add r2, r0, r5 + ldr r0, _0204DB08 ; =0x00000132 + strb r1, [r2, r0] + b _0204DAE2 +_0204D9A8: + ldrb r0, [r4, #0x7] + cmp r0, #0x1 + bne _0204D9B8 + ldr r0, [r6, #0x0] + mov r1, #0x1 + add r2, r0, r5 + ldr r0, _0204DB08 ; =0x00000132 + strb r1, [r2, r0] +_0204D9B8: + mov r0, #0x0 + strb r0, [r4, #0x7] + ldr r0, [r6, #0x0] + ldr r1, _0204DB0C ; =0x00000122 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0x2 + bne _0204D9DE + add r1, sp, #0x14 + strb r5, [r1, #0x1] + ldr r1, _0204DB0C ; =0x00000122 + mov r2, #0x1 + strb r2, [r0, r1] + add r1, sp, #0x14 + mov r0, #0x28 + add r1, #0x1 + bl FUN_02030C4C + b _0204DAE2 +_0204D9DE: + add r0, r7, #0x0 + add r1, r7, #0x0 + bl FUN_0204D740 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204E62C + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_0204E664 + str r0, [sp, #0x8] + ldr r1, [sp, #0xc] + ldr r0, _0204DB10 ; =0x0000FFFF + cmp r1, r0 + beq _0204DAE2 + ldr r1, [sp, #0x8] + cmp r1, r0 + beq _0204DAE2 + mov r0, #0x0 + mvn r0, r0 + cmp r7, r0 + beq _0204DAE2 + mov r0, #0x4 + ldrsb r0, [r4, r0] + cmp r0, r7 + beq _0204DA44 + strb r7, [r4, #0x4] + ldr r0, [r6, #0x0] + mov r1, #0x4 + add r2, r0, r5 + ldr r0, _0204DAFC ; =0x0000013A + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + mov r1, #0x1 + add r2, r0, r5 + ldr r0, _0204DB08 ; =0x00000132 + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + ldr r1, _0204DB0C ; =0x00000122 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0x2 + bls _0204DAE2 + ldr r1, _0204DB0C ; =0x00000122 + ldrb r1, [r0, r1] + sub r2, r1, #0x1 + ldr r1, _0204DB0C ; =0x00000122 + strb r2, [r0, r1] + b _0204DAE2 +_0204DA44: + ldr r0, [r6, #0x0] + ldr r1, _0204DB0C ; =0x00000122 + add r2, r0, r5 + ldrb r1, [r2, r1] + cmp r1, #0x0 + bne _0204DAE2 + ldr r1, _0204DAF8 ; =0x000002BE + ldrb r0, [r0, r1] + cmp r0, #0x0 + beq _0204DA66 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_0224566C + cmp r0, #0x1 + beq _0204DAE2 +_0204DA66: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x8] + add r2, r5, #0x0 + bl FUN_0204D7B0 + cmp r0, #0x0 + beq _0204DA8E + mov r0, #0x1 + strb r0, [r4, #0x7] + ldr r0, [r6, #0x0] + mov r1, #0x1 + add r2, r0, r5 + ldr r0, _0204DB08 ; =0x00000132 + strb r1, [r2, r0] + ldr r0, [r6, #0x0] + mov r1, #0x4 + add r2, r0, r5 + ldr r0, _0204DAFC ; =0x0000013A + strb r1, [r2, r0] + b _0204DAE2 +_0204DA8E: + ldr r0, [r6, #0x0] + mov r1, #0x1 + add r2, r0, r5 + ldr r0, _0204DB08 ; =0x00000132 + strb r1, [r2, r0] + ldr r0, [sp, #0xc] + strh r0, [r4, #0x0] + ldr r0, [sp, #0x8] + strh r0, [r4, #0x2] + strb r7, [r4, #0x4] + ldrb r0, [r4, #0x5] + bl FUN_0204D870 + ldr r1, [r6, #0x0] + add r2, r1, r5 + ldr r1, _0204DAFC ; =0x0000013A + strb r0, [r2, r1] + ldr r0, [r6, #0x0] + sub r1, #0x20 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0x0 + beq _0204DAE2 + ldr r1, _0204DB14 ; =0x0000011A + ldrb r1, [r0, r1] + sub r2, r1, #0x1 + ldr r1, _0204DB14 ; =0x0000011A + strb r2, [r0, r1] + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldr r0, _0204DB14 ; =0x0000011A + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204DAE2 + mov r1, #0x1 + add r0, sp, #0x14 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r2, sp, #0x14 + mov r3, #0x0 + bl FUN_0224089C +_0204DAE2: + ldr r0, [sp, #0x0] + add r5, r5, #0x1 + add r0, #0x8 + str r0, [sp, #0x0] + cmp r5, #0x8 + bge _0204DAF0 + b _0204D8AA +_0204DAF0: + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_0204DAF4: .word 0x021C5A68 +_0204DAF8: .word 0x000002BE +_0204DAFC: .word 0x0000013A +_0204DB00: .word 0x0000010A +_0204DB04: .word 0x0000012A +_0204DB08: .word 0x00000132 +_0204DB0C: .word 0x00000122 +_0204DB10: .word 0x0000FFFF +_0204DB14: .word 0x0000011A + + thumb_func_start FUN_0204DB18 +FUN_0204DB18: ; 0x0204DB18 + push {r3-r7, lr} + ldr r5, _0204DBC0 ; =0x021C5A68 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + add r3, r2, #0x0 + cmp r0, #0x0 + beq _0204DBBC + add r2, r0, #0x0 + ldrb r4, [r3, #0x4] + add r2, #0x62 + lsl r1, r7, #0x3 + add r2, r2, r1 + mov r1, #0x80 + tst r1, r4 + beq _0204DB3E + ldr r1, _0204DBC4 ; =0x000002BB + mov r2, #0x1 + strb r2, [r0, r1] + pop {r3-r7, pc} +_0204DB3E: + mov r0, #0x4 + ldrsb r1, [r2, r0] + sub r0, r0, #0x5 + cmp r1, r0 + bne _0204DB5A + ldr r4, _0204DBC8 ; =0x00000132 + mov r1, #0x0 + mov r0, #0x1 +_0204DB4E: + ldr r6, [r5, #0x0] + add r6, r6, r1 + add r1, r1, #0x1 + strb r0, [r6, r4] + cmp r1, #0x8 + blt _0204DB4E +_0204DB5A: + mov r0, #0x0 + strh r0, [r2, #0x0] + strh r0, [r2, #0x2] + ldrh r1, [r2, #0x0] + ldrb r0, [r3, #0x0] + add r0, r1, r0 + strh r0, [r2, #0x0] + ldrb r1, [r3, #0x1] + ldrh r0, [r2, #0x0] + lsl r4, r1, #0x8 + mov r1, #0xff + lsl r1, r1, #0x8 + and r4, r1 + add r0, r0, r4 + strh r0, [r2, #0x0] + ldrh r4, [r2, #0x2] + ldrb r0, [r3, #0x2] + add r0, r4, r0 + strh r0, [r2, #0x2] + ldrb r4, [r3, #0x3] + ldrh r0, [r2, #0x2] + lsl r4, r4, #0x8 + and r1, r4 + add r0, r0, r1 + strh r0, [r2, #0x2] + ldrb r1, [r3, #0x4] + mov r0, #0xf + ldr r3, _0204DBC0 ; =0x021C5A68 + and r0, r1 + strb r0, [r2, #0x4] + ldr r1, [r3, #0x0] + mov r0, #0x1 + add r1, r1, r7 + add r1, #0x48 + strb r0, [r1, #0x0] + ldr r1, [r3, #0x0] + add r4, r1, r7 + ldr r1, _0204DBC8 ; =0x00000132 + strb r0, [r4, r1] + ldr r0, [r3, #0x0] + ldrh r1, [r2, #0x0] + ldrh r2, [r2, #0x2] + ldr r0, [r0, #0x54] + bl FUN_0204A6B4 + cmp r0, #0x0 + beq _0204DBBC + bl ErrorHandling +_0204DBBC: + pop {r3-r7, pc} + nop +_0204DBC0: .word 0x021C5A68 +_0204DBC4: .word 0x000002BB +_0204DBC8: .word 0x00000132 + + thumb_func_start FUN_0204DBCC +FUN_0204DBCC: ; 0x0204DBCC + push {r3-r5, lr} + ldr r0, _0204DC28 ; =0x021C5A68 + ldrb r4, [r2, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204DC24 + bl FUN_02031190 + cmp r4, r0 + beq _0204DC24 + ldr r0, _0204DC28 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204DC2C ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204DC14 + add r0, r4, #0x0 + bl FUN_0223E554 + ldr r0, _0204DC28 ; =0x021C5A68 + ldr r3, [r0, #0x0] + ldr r0, _0204DC30 ; =0x000002BD + ldrb r0, [r3, r0] + cmp r0, #0x0 + bne _0204DC14 + lsl r5, r4, #0x3 + add r1, r3, r5 + ldr r0, [r3, #0x54] + add r3, r3, r5 + add r1, #0xa2 + add r3, #0xa4 + ldrh r1, [r1, #0x0] + ldrh r3, [r3, #0x0] + mov r2, #0x0 + bl FUN_021E5B30 +_0204DC14: + mov r1, #0x0 + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_0204D43C + add r0, r4, #0x0 + bl FUN_0202DE78 +_0204DC24: + pop {r3-r5, pc} + nop +_0204DC28: .word 0x021C5A68 +_0204DC2C: .word 0x000002BE +_0204DC30: .word 0x000002BD + + thumb_func_start FUN_0204DC34 +FUN_0204DC34: ; 0x0204DC34 + mov r0, #0x5 + bx lr + + thumb_func_start FUN_0204DC38 +FUN_0204DC38: ; 0x0204DC38 + push {r3-r5, lr} + ldrb r1, [r2, #0x0] + mov r0, #0xf + add r3, r1, #0x0 + and r3, r0 + ldr r0, _0204DCB0 ; =0x021C5A68 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0204DCAC + ldrb r4, [r2, #0x2] + add r1, #0xa2 + lsl r0, r3, #0x3 + add r1, r1, r0 + mov r0, #0x80 + tst r0, r4 + beq _0204DC5C + mov r0, #0x1 + b _0204DC5E +_0204DC5C: + mov r0, #0x0 +_0204DC5E: + strb r0, [r1, #0x7] + mov r0, #0x0 + strh r0, [r1, #0x0] + strh r0, [r1, #0x2] + ldrh r4, [r1, #0x0] + ldrb r0, [r2, #0x1] + add r0, r4, r0 + strh r0, [r1, #0x0] + ldrb r4, [r2, #0x2] + ldrh r0, [r1, #0x0] + lsl r5, r4, #0x8 + mov r4, #0x1 + lsl r4, r4, #0x8 + and r5, r4 + add r0, r0, r5 + strh r0, [r1, #0x0] + ldrh r5, [r1, #0x2] + ldrb r0, [r2, #0x3] + add r0, r5, r0 + strh r0, [r1, #0x2] + ldrb r5, [r2, #0x2] + ldrh r0, [r1, #0x2] + lsl r5, r5, #0x7 + and r4, r5 + add r0, r0, r4 + strh r0, [r1, #0x2] + ldrb r0, [r2, #0x0] + asr r4, r0, #0x4 + mov r0, #0x3 + and r4, r0 + strb r4, [r1, #0x4] + ldrb r2, [r2, #0x0] + asr r2, r2, #0x6 + and r0, r2 + strb r0, [r1, #0x5] + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + bl FUN_0204D328 +_0204DCAC: + pop {r3-r5, pc} + nop +_0204DCB0: .word 0x021C5A68 + + thumb_func_start FUN_0204DCB4 +FUN_0204DCB4: ; 0x0204DCB4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0204DD10 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0x0 + ldr r0, _0204DD10 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_020377AC + bl FUN_02026CB4 + ldr r0, _0204DD10 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204DD14 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204DD0C + bl FUN_02031190 + cmp r5, r0 + bne _0204DD0C + add r0, r4, #0x0 + bl FUN_020266B0 + add r0, r4, #0x0 + bl FUN_020266C8 + cmp r0, #0x32 + bne _0204DD0C + ldr r0, _0204DD10 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x25 + bl FUN_0202A170 +_0204DD0C: + pop {r3-r5, pc} + nop +_0204DD10: .word 0x021C5A68 +_0204DD14: .word 0x000002BE + + thumb_func_start FUN_0204DD18 +FUN_0204DD18: ; 0x0204DD18 + push {r3-r7, lr} + sub sp, #0x10 + ldr r4, _0204DE24 ; =0x020F5808 + add r6, r3, #0x0 + add r5, r0, #0x0 + add r3, sp, #0x4 + mov r2, #0xc +_0204DD26: + ldrb r0, [r4, #0x0] + add r4, r4, #0x1 + strb r0, [r3, #0x0] + add r3, r3, #0x1 + sub r2, r2, #0x1 + bne _0204DD26 + ldr r0, _0204DE28 ; =0x021C5A68 + ldr r2, _0204DE2C ; =0x00000102 + ldr r0, [r0, #0x0] + add r3, r0, r5 + ldrsb r3, [r3, r2] + mov r2, #0x0 + mvn r2, r2 + cmp r3, r2 + beq _0204DD4E + lsl r7, r5, #0x2 + add r0, r0, r7 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _0204DD54 +_0204DD4E: + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0204DD54: + cmp r1, #0x0 + bne _0204DD5E + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204DD5E: + bl FUN_020553A0 + add r4, r0, #0x0 + ldr r0, _0204DE28 ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r7, #0x0 + add r0, r1, r0 + ldr r0, [r0, #0x8] + bl FUN_020552F8 + str r0, [sp, #0x0] + ldr r0, _0204DE28 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204DE2C ; =0x00000102 + ldrsb r0, [r1, r0] + bl FUN_0204F610 + ldr r1, [sp, #0x0] + cmp r1, r0 + beq _0204DDB4 + add r0, r4, #0x0 + mov r1, #0x80 + bl FUN_02058418 + ldr r0, _0204DE28 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204DE2C ; =0x00000102 + ldrsb r0, [r1, r0] + bl FUN_0204F610 + add r1, r0, #0x0 + ldr r0, _0204DE28 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r0, r0, r7 + ldr r0, [r0, #0x8] + bl FUN_02055304 + add r0, r4, #0x0 + mov r1, #0x80 + bl FUN_02058410 +_0204DDB4: + add r0, r4, #0x0 + bl FUN_0205AE28 + add r0, r4, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0204DE1C + add r0, r5, #0x0 + bl FUN_0204DCB4 + cmp r6, #0x0 + beq _0204DDD8 + cmp r6, #0x1 + beq _0204DDEE + cmp r6, #0x2 + beq _0204DE06 + b _0204DE1C +_0204DDD8: + ldr r1, _0204DE28 ; =0x021C5A68 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r2, r1, r5 + ldr r1, _0204DE2C ; =0x00000102 + ldrsb r2, [r2, r1] + add r1, sp, #0x4 + ldrb r1, [r1, r2] + bl FUN_0205ADDC + b _0204DE1C +_0204DDEE: + ldr r1, _0204DE28 ; =0x021C5A68 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r2, r1, r5 + ldr r1, _0204DE2C ; =0x00000102 + ldrsb r1, [r2, r1] + add r2, r1, #0x4 + add r1, sp, #0x4 + ldrb r1, [r1, r2] + bl FUN_0205ADDC + b _0204DE1C +_0204DE06: + ldr r1, _0204DE28 ; =0x021C5A68 + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + add r2, r1, r5 + ldr r1, _0204DE2C ; =0x00000102 + ldrsb r2, [r2, r1] + add r1, sp, #0x4 + add r2, #0x8 + ldrb r1, [r1, r2] + bl FUN_0205ADDC +_0204DE1C: + mov r0, #0x1 + add sp, #0x10 + pop {r3-r7, pc} + nop +_0204DE24: .word 0x020F5808 +_0204DE28: .word 0x021C5A68 +_0204DE2C: .word 0x00000102 + + thumb_func_start FUN_0204DE30 +FUN_0204DE30: ; 0x0204DE30 + push {r4-r7, lr} + sub sp, #0x1c + add r4, r0, #0x0 + ldr r0, _0204E06C ; =0x021C5A68 + lsl r1, r4, #0x3 + ldr r0, [r0, #0x0] + add r2, r0, #0x0 + add r2, #0xa2 + add r5, r2, r1 + ldr r1, _0204E070 ; =0x00000142 + add r2, r0, r1 + ldrb r1, [r2, r4] + cmp r1, #0x0 + beq _0204DE54 + sub r0, r1, #0x1 + add sp, #0x1c + strb r0, [r2, r4] + pop {r4-r7, pc} +_0204DE54: + ldrh r2, [r5, #0x0] + ldr r1, _0204E074 ; =0x0000FFFF + cmp r2, r1 + beq _0204DF08 + ldrh r2, [r5, #0x2] + cmp r2, r1 + beq _0204DF08 + ldr r1, _0204E078 ; =0x000002BD + ldrb r2, [r0, r1] + cmp r2, #0x0 + bne _0204DF08 + add r1, r1, #0x1 + ldrb r0, [r0, r1] + cmp r0, #0x0 + bne _0204DE86 + bl FUN_02031190 + cmp r4, r0 + bne _0204DE86 + ldr r0, _0204E06C ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E07C ; =0x000002C1 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204DF08 +_0204DE86: + ldr r0, _0204E06C ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x2 + add r0, r1, r0 + ldr r0, [r0, #0x8] + str r0, [sp, #0x18] + cmp r0, #0x0 + bne _0204DE98 + b _0204E068 +_0204DE98: + bl FUN_02055320 + ldrh r1, [r5, #0x0] + sub r0, r0, r1 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + bl FUN_0205532C + ldrh r1, [r5, #0x2] + sub r7, r0, r1 + ldr r0, [sp, #0x18] + bl FUN_020552F8 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + cmp r0, #0x0 + bne _0204DEC2 + cmp r7, #0x0 + bne _0204DEC2 + mov r6, #0x0 + b _0204DEEC +_0204DEC2: + ldr r0, [sp, #0x10] + blx abs + add r6, r0, #0x0 + add r0, r7, #0x0 + blx abs + cmp r6, r0 + ble _0204DEE2 + ldr r0, [sp, #0x10] + cmp r0, #0x0 + ble _0204DEDE + mov r6, #0x20 + b _0204DEEC +_0204DEDE: + mov r6, #0x10 + b _0204DEEC +_0204DEE2: + cmp r7, #0x0 + ble _0204DEEA + mov r6, #0x40 + b _0204DEEC +_0204DEEA: + mov r6, #0x80 +_0204DEEC: + add r0, r7, #0x0 + blx abs + ldr r0, [sp, #0x10] + blx abs + ldrb r3, [r5, #0x5] + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r6, #0x0 + bl FUN_0204DD18 + cmp r0, #0x0 + beq _0204DF0A +_0204DF08: + b _0204E068 +_0204DF0A: + ldrb r0, [r5, #0x5] + mov r7, #0xff + str r0, [sp, #0x14] + cmp r0, #0x3 + bhi _0204DF46 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204DF20: ; jump table (using 16-bit offset) + .short _0204DF28 - _0204DF20 - 2; case 0 + .short _0204DF2E - _0204DF20 - 2; case 1 + .short _0204DF3C - _0204DF20 - 2; case 2 + .short _0204DF42 - _0204DF20 - 2; case 3 +_0204DF28: + mov r0, #0x5 + str r0, [sp, #0x8] + b _0204DF46 +_0204DF2E: + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x2 + orr r0, r6 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _0204DF46 +_0204DF3C: + mov r0, #0x2 + str r0, [sp, #0x8] + b _0204DF46 +_0204DF42: + mov r0, #0x1 + str r0, [sp, #0x8] +_0204DF46: + ldr r0, _0204E06C ; =0x021C5A68 + ldr r1, [r0, #0x0] + mov r0, #0xb + lsl r0, r0, #0x6 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204DF6C + bl FUN_02031190 + cmp r4, r0 + bne _0204DF6C + ldr r0, _0204E06C ; =0x021C5A68 + ldr r2, [r0, #0x0] + mov r0, #0xb + lsl r0, r0, #0x6 + ldrb r1, [r2, r0] + sub r1, r1, #0x1 + strb r1, [r2, r0] + b _0204E00C +_0204DF6C: + bl FUN_02030FE0 + cmp r0, #0x0 + bne _0204DFA0 + ldr r0, _0204E06C ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E080 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204DFA0 + bl FUN_02031190 + cmp r4, r0 + bne _0204DFA0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x8] + add r1, r6, #0x0 + add r2, r6, #0x0 + bl FUN_02057194 + add r7, r0, #0x0 + b _0204E00C +_0204DFA0: + mov r0, #0x2 + add r1, r6, #0x0 + bic r1, r0 + bne _0204DFDE + ldrb r0, [r5, #0x7] + cmp r0, #0x0 + beq _0204DFDE + mov r0, #0x3 + str r0, [sp, #0x14] + mov r0, #0x4 + ldrsb r0, [r5, r0] + cmp r0, #0x3 + bhi _0204DFD2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0204DFC6: ; jump table (using 16-bit offset) + .short _0204DFCE - _0204DFC6 - 2; case 0 + .short _0204DFD2 - _0204DFC6 - 2; case 1 + .short _0204DFD6 - _0204DFC6 - 2; case 2 + .short _0204DFDA - _0204DFC6 - 2; case 3 +_0204DFCE: + mov r7, #0x1c + b _0204E00C +_0204DFD2: + mov r7, #0x1d + b _0204E00C +_0204DFD6: + mov r7, #0x1e + b _0204E00C +_0204DFDA: + mov r7, #0x1f + b _0204E00C +_0204DFDE: + cmp r1, #0x0 + bne _0204DFF6 + mov r0, #0x4 + ldrsb r0, [r5, r0] + ldr r1, [sp, #0xc] + cmp r0, r1 + beq _0204DFF6 + mov r1, #0x24 + bl FUN_0205AFDC + add r7, r0, #0x0 + b _0204E00C +_0204DFF6: + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x18] + ldr r3, [sp, #0x8] + add r1, r6, #0x0 + add r2, r6, #0x0 + bl FUN_02057194 + add r7, r0, #0x0 +_0204E00C: + ldr r0, [sp, #0x18] + bl FUN_02057254 + cmp r0, #0x0 + bne _0204E020 + ldr r0, [sp, #0x18] + bl FUN_020570C4 + cmp r0, #0x0 + beq _0204E068 +_0204E020: + cmp r7, #0xff + beq _0204E068 + ldr r0, [sp, #0x18] + add r1, r7, #0x0 + bl FUN_02057260 + mov r0, #0x2 + bic r6, r0 + beq _0204E068 + ldr r0, _0204E06C ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r4 + ldr r0, _0204E070 ; =0x00000142 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204E050 + ldr r0, [sp, #0x14] + bl FUN_0204D870 + ldr r1, _0204E06C ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r2, r1, r4 + ldr r1, _0204E070 ; =0x00000142 + strb r0, [r2, r1] +_0204E050: + ldr r0, _0204E06C ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E070 ; =0x00000142 + add r1, r1, r0 + ldrb r0, [r1, r4] + cmp r0, #0x0 + beq _0204E062 + sub r0, r0, #0x1 + strb r0, [r1, r4] +_0204E062: + add r0, r4, #0x0 + bl FUN_0204DCB4 +_0204E068: + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 +_0204E06C: .word 0x021C5A68 +_0204E070: .word 0x00000142 +_0204E074: .word 0x0000FFFF +_0204E078: .word 0x000002BD +_0204E07C: .word 0x000002C1 +_0204E080: .word 0x000002BE + + thumb_func_start FUN_0204E084 +FUN_0204E084: ; 0x0204E084 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r1, #0x0 + ldr r1, _0204E16C ; =0x021C5A68 + add r5, r0, #0x0 + ldr r2, [r1, #0x0] + ldr r1, _0204E170 ; =0x0000010A + add r2, r2, r1 + ldrb r1, [r2, r5] + cmp r1, #0x0 + bne _0204E0A0 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0204E0A0: + cmp r1, #0xff + bne _0204E0AA + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0204E0AA: + sub r1, r1, #0x1 + strb r1, [r2, r5] + cmp r4, #0x1 + bne _0204E0B8 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0204E0B8: + bl FUN_0204E544 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204E598 + str r0, [sp, #0x0] + ldr r0, _0204E16C ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204E174 ; =0x00000112 + ldrb r0, [r1, r0] + bl FUN_02059BF4 + add r7, r6, r0 + ldr r0, _0204E16C ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204E174 ; =0x00000112 + ldrb r0, [r1, r0] + bl FUN_02059C00 + ldr r1, [sp, #0x0] + add r6, r1, r0 + ldr r0, _0204E16C ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204E170 ; =0x0000010A + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204E110 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_0204D7B0 + cmp r0, #0x0 + beq _0204E110 + ldr r1, _0204E16C ; =0x021C5A68 + mov r0, #0x1 + ldr r1, [r1, #0x0] + add r2, r1, r5 + ldr r1, _0204E170 ; =0x0000010A + strb r0, [r2, r1] +_0204E110: + ldr r0, _0204E16C ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E170 ; =0x0000010A + add r2, r1, r5 + ldrb r0, [r2, r0] + cmp r0, #0x1 + bne _0204E124 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0204E124: + cmp r0, #0x0 + bne _0204E13E + mov r1, #0x1 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r2, sp, #0x4 + mov r3, #0x0 + bl FUN_0224089C + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0204E13E: + add r1, #0x62 + lsl r2, r5, #0x3 + add r0, r1, r2 + strh r7, [r1, r2] + strh r6, [r0, #0x2] + cmp r4, #0x2 + beq _0204E156 + cmp r4, #0x4 + beq _0204E15C + cmp r4, #0x8 + beq _0204E162 + b _0204E166 +_0204E156: + mov r1, #0x0 + strb r1, [r0, #0x5] + b _0204E166 +_0204E15C: + mov r1, #0x1 + strb r1, [r0, #0x5] + b _0204E166 +_0204E162: + mov r1, #0x2 + strb r1, [r0, #0x5] +_0204E166: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0204E16C: .word 0x021C5A68 +_0204E170: .word 0x0000010A +_0204E174: .word 0x00000112 + + thumb_func_start FUN_0204E178 +FUN_0204E178: ; 0x0204E178 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0204E1DC ; =0x021C5A68 + add r4, r1, #0x0 + ldr r1, [r0, #0x0] + lsl r0, r5, #0x3 + add r1, #0x62 + add r6, r1, r0 + add r0, r4, #0x0 + add r7, r2, #0x0 + bl FUN_0204F610 + ldr r1, _0204E1DC ; =0x021C5A68 + strb r0, [r6, #0x4] + ldr r0, [r1, #0x0] + add r2, r0, r5 + ldr r0, _0204E1E0 ; =0x00000112 + cmp r7, #0x0 + strb r4, [r2, r0] + beq _0204E1B6 + ldr r2, [r1, #0x0] + mov r3, #0x1 + add r2, r2, r5 + add r0, #0x18 + strb r3, [r2, r0] + ldr r0, [r1, #0x0] + mov r2, #0x2d + add r1, r0, r5 + add r0, r2, #0x0 + add r0, #0xdd + b _0204E1CA +_0204E1B6: + ldr r2, [r1, #0x0] + mov r3, #0x0 + add r2, r2, r5 + add r0, #0x18 + strb r3, [r2, r0] + ldr r0, [r1, #0x0] + mov r2, #0x1b + add r1, r0, r5 + add r0, r2, #0x0 + add r0, #0xef +_0204E1CA: + strb r2, [r1, r0] + ldr r0, _0204E1DC ; =0x021C5A68 + mov r2, #0x1 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204E1E4 ; =0x00000132 + strb r2, [r1, r0] + pop {r3-r7, pc} + nop +_0204E1DC: .word 0x021C5A68 +_0204E1E0: .word 0x00000112 +_0204E1E4: .word 0x00000132 + + thumb_func_start FUN_0204E1E8 +FUN_0204E1E8: ; 0x0204E1E8 + ldr r1, _0204E1F8 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r1, r1, r0 + ldr r0, _0204E1FC ; =0x0000010A + strb r2, [r1, r0] + bx lr + nop +_0204E1F8: .word 0x021C5A68 +_0204E1FC: .word 0x0000010A + + thumb_func_start FUN_0204E200 +FUN_0204E200: ; 0x0204E200 + ldr r1, _0204E210 ; =0x021C5A68 + mov r2, #0xff + ldr r1, [r1, #0x0] + add r1, r1, r0 + add r0, r2, #0x0 + add r0, #0xb + strb r2, [r1, r0] + bx lr + .balign 4 +_0204E210: .word 0x021C5A68 + + thumb_func_start FUN_0204E214 +FUN_0204E214: ; 0x0204E214 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _0204E24C ; =0x021C5A68 + add r4, r1, #0x0 + ldr r1, [r0, #0x0] + lsl r0, r5, #0x2 + add r0, r1, r0 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204E248 + bl FUN_020553A0 + mov r1, #0x80 + add r6, r0, #0x0 + bl FUN_02058410 + mov r1, #0x1 + add r0, r6, #0x0 + lsl r1, r1, #0x8 + bl FUN_02058410 + ldr r0, _0204E24C ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r5 + ldr r0, _0204E250 ; =0x00000102 + strb r4, [r1, r0] +_0204E248: + pop {r4-r6, pc} + nop +_0204E24C: .word 0x021C5A68 +_0204E250: .word 0x00000102 + + thumb_func_start FUN_0204E254 +FUN_0204E254: ; 0x0204E254 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _0204E2A0 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x2 + add r0, r1, r0 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204E29E + add r2, r1, r4 + ldr r1, _0204E2A4 ; =0x00000102 + ldrsb r2, [r2, r1] + mov r1, #0x0 + mvn r1, r1 + cmp r2, r1 + beq _0204E29E + bl FUN_020553A0 + add r5, r0, #0x0 + bl FUN_0205AE50 + add r0, r5, #0x0 + mov r1, #0x80 + bl FUN_02058418 + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x8 + bl FUN_02058418 + ldr r0, _0204E2A0 ; =0x021C5A68 + mov r2, #0x0 + ldr r0, [r0, #0x0] + mvn r2, r2 + add r1, r0, r4 + ldr r0, _0204E2A4 ; =0x00000102 + strb r2, [r1, r0] +_0204E29E: + pop {r3-r5, pc} + .balign 4 +_0204E2A0: .word 0x021C5A68 +_0204E2A4: .word 0x00000102 + + thumb_func_start FUN_0204E2A8 +FUN_0204E2A8: ; 0x0204E2A8 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_0204E2AC +FUN_0204E2AC: ; 0x0204E2AC + ldr r3, _0204E2B0 ; =FUN_0204F7FC + bx r3 + .balign 4 +_0204E2B0: .word FUN_0204F7FC + + thumb_func_start FUN_0204E2B4 +FUN_0204E2B4: ; 0x0204E2B4 + ldr r3, _0204E2B8 ; =FUN_0204F7FC + bx r3 + .balign 4 +_0204E2B8: .word FUN_0204F7FC + + thumb_func_start FUN_0204E2BC +FUN_0204E2BC: ; 0x0204E2BC + ldr r3, _0204E2C4 ; =FUN_0204F774 + mov r0, #0x2 + bx r3 + nop +_0204E2C4: .word FUN_0204F774 + + thumb_func_start FUN_0204E2C8 +FUN_0204E2C8: ; 0x0204E2C8 + ldr r3, _0204E2D0 ; =FUN_0204F774 + mov r0, #0x20 + bx r3 + nop +_0204E2D0: .word FUN_0204F774 + + thumb_func_start FUN_0204E2D4 +FUN_0204E2D4: ; 0x0204E2D4 + ldr r3, _0204E2DC ; =FUN_0204F774 + mov r0, #0x1 + bx r3 + nop +_0204E2DC: .word FUN_0204F774 + + thumb_func_start FUN_0204E2E0 +FUN_0204E2E0: ; 0x0204E2E0 + push {r3, lr} + add r1, sp, #0x0 + strb r0, [r1, #0x0] + mov r0, #0x1a + add r1, sp, #0x0 + bl FUN_02030C4C + pop {r3, pc} + + thumb_func_start FUN_0204E2F0 +FUN_0204E2F0: ; 0x0204E2F0 + ldr r3, _0204E2F8 ; =0x0223E4BD + ldrb r0, [r2, #0x0] + bx r3 + nop +_0204E2F8: .word 0x0223E4BD + + thumb_func_start FUN_0204E2FC +FUN_0204E2FC: ; 0x0204E2FC + push {r3, lr} + bl FUN_02031280 + cmp r0, #0x0 + beq _0204E30A + mov r0, #0x1 + pop {r3, pc} +_0204E30A: + ldr r0, _0204E344 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E316 + mov r0, #0x0 + pop {r3, pc} +_0204E316: + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0204E326 + mov r0, #0x0 + pop {r3, pc} +_0204E326: + ldr r0, _0204E344 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E348 ; =0x000002BE + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204E33E + bl FUN_0204FE5C + cmp r0, #0x0 + bne _0204E33E + mov r0, #0x0 + pop {r3, pc} +_0204E33E: + mov r0, #0x1 + pop {r3, pc} + nop +_0204E344: .word 0x021C5A68 +_0204E348: .word 0x000002BE + + thumb_func_start FUN_0204E34C +FUN_0204E34C: ; 0x0204E34C + ldr r1, _0204E358 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0x48 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 +_0204E358: .word 0x021C5A68 + + thumb_func_start FUN_0204E35C +FUN_0204E35C: ; 0x0204E35C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204E39C ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E36C + ldr r0, _0204E3A0 ; =0x0000FFFF + pop {r4, pc} +_0204E36C: + bl FUN_02031190 + cmp r4, r0 + bne _0204E382 + ldr r0, _0204E39C ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa2 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E382: + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E398 + ldr r0, _0204E39C ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa2 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E398: + ldr r0, _0204E3A0 ; =0x0000FFFF + pop {r4, pc} + .balign 4 +_0204E39C: .word 0x021C5A68 +_0204E3A0: .word 0x0000FFFF + + thumb_func_start FUN_0204E3A4 +FUN_0204E3A4: ; 0x0204E3A4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204E3E4 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E3B4 + ldr r0, _0204E3E8 ; =0x0000FFFF + pop {r4, pc} +_0204E3B4: + bl FUN_02031190 + cmp r4, r0 + bne _0204E3CA + ldr r0, _0204E3E4 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa4 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E3CA: + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E3E0 + ldr r0, _0204E3E4 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa4 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E3E0: + ldr r0, _0204E3E8 ; =0x0000FFFF + pop {r4, pc} + .balign 4 +_0204E3E4: .word 0x021C5A68 +_0204E3E8: .word 0x0000FFFF + + thumb_func_start FUN_0204E3EC +FUN_0204E3EC: ; 0x0204E3EC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204E438 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E3FC + ldr r0, _0204E43C ; =0x0000FFFF + pop {r4, pc} +_0204E3FC: + bl FUN_02031190 + cmp r4, r0 + bne _0204E412 + ldr r0, _0204E438 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa2 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E412: + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E428 + ldr r0, _0204E438 ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E42C +_0204E428: + ldr r0, _0204E43C ; =0x0000FFFF + pop {r4, pc} +_0204E42C: + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa2 + ldrh r0, [r0, #0x0] + pop {r4, pc} + nop +_0204E438: .word 0x021C5A68 +_0204E43C: .word 0x0000FFFF + + thumb_func_start FUN_0204E440 +FUN_0204E440: ; 0x0204E440 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204E48C ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E450 + ldr r0, _0204E490 ; =0x0000FFFF + pop {r4, pc} +_0204E450: + bl FUN_02031190 + cmp r4, r0 + bne _0204E466 + ldr r0, _0204E48C ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa4 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E466: + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E47C + ldr r0, _0204E48C ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E480 +_0204E47C: + ldr r0, _0204E490 ; =0x0000FFFF + pop {r4, pc} +_0204E480: + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0xa4 + ldrh r0, [r0, #0x0] + pop {r4, pc} + nop +_0204E48C: .word 0x021C5A68 +_0204E490: .word 0x0000FFFF + + thumb_func_start FUN_0204E494 +FUN_0204E494: ; 0x0204E494 + ldr r1, _0204E4AC ; =0x021C5A68 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204E4A6 + lsl r0, r0, #0x3 + add r0, r1, r0 + add r0, #0xa2 + ldrh r0, [r0, #0x0] + bx lr +_0204E4A6: + ldr r0, _0204E4B0 ; =0x0000FFFF + bx lr + nop +_0204E4AC: .word 0x021C5A68 +_0204E4B0: .word 0x0000FFFF + + thumb_func_start FUN_0204E4B4 +FUN_0204E4B4: ; 0x0204E4B4 + ldr r1, _0204E4CC ; =0x021C5A68 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204E4C6 + lsl r0, r0, #0x3 + add r0, r1, r0 + add r0, #0xa4 + ldrh r0, [r0, #0x0] + bx lr +_0204E4C6: + ldr r0, _0204E4D0 ; =0x0000FFFF + bx lr + nop +_0204E4CC: .word 0x021C5A68 +_0204E4D0: .word 0x0000FFFF + + thumb_func_start FUN_0204E4D4 +FUN_0204E4D4: ; 0x0204E4D4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204E3EC + ldr r1, _0204E504 ; =0x0000FFFF + cmp r0, r1 + bne _0204E4E6 + add r0, r1, #0x0 + pop {r4, pc} +_0204E4E6: + ldr r0, _0204E508 ; =0x021C5A68 + lsl r4, r4, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0xa6 + ldrsb r0, [r1, r0] + bl FUN_02059BF4 + ldr r1, _0204E508 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r4 + add r1, #0xa2 + ldrh r1, [r1, #0x0] + add r0, r1, r0 + pop {r4, pc} + .balign 4 +_0204E504: .word 0x0000FFFF +_0204E508: .word 0x021C5A68 + + thumb_func_start FUN_0204E50C +FUN_0204E50C: ; 0x0204E50C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204E440 + ldr r1, _0204E53C ; =0x0000FFFF + cmp r0, r1 + bne _0204E51E + add r0, r1, #0x0 + pop {r4, pc} +_0204E51E: + ldr r0, _0204E540 ; =0x021C5A68 + lsl r4, r4, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0xa6 + ldrsb r0, [r1, r0] + bl FUN_02059C00 + ldr r1, _0204E540 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r4 + add r1, #0xa4 + ldrh r1, [r1, #0x0] + add r0, r1, r0 + pop {r4, pc} + .balign 4 +_0204E53C: .word 0x0000FFFF +_0204E540: .word 0x021C5A68 + + thumb_func_start FUN_0204E544 +FUN_0204E544: ; 0x0204E544 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204E590 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E554 + ldr r0, _0204E594 ; =0x0000FFFF + pop {r4, pc} +_0204E554: + bl FUN_02031190 + cmp r4, r0 + bne _0204E56A + ldr r0, _0204E590 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0x62 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E56A: + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E580 + ldr r0, _0204E590 ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E584 +_0204E580: + ldr r0, _0204E594 ; =0x0000FFFF + pop {r4, pc} +_0204E584: + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0x62 + ldrh r0, [r0, #0x0] + pop {r4, pc} + nop +_0204E590: .word 0x021C5A68 +_0204E594: .word 0x0000FFFF + + thumb_func_start FUN_0204E598 +FUN_0204E598: ; 0x0204E598 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204E5E4 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E5A8 + ldr r0, _0204E5E8 ; =0x0000FFFF + pop {r4, pc} +_0204E5A8: + bl FUN_02031190 + cmp r4, r0 + bne _0204E5BE + ldr r0, _0204E5E4 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0x64 + ldrh r0, [r0, #0x0] + pop {r4, pc} +_0204E5BE: + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E5D4 + ldr r0, _0204E5E4 ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E5D8 +_0204E5D4: + ldr r0, _0204E5E8 ; =0x0000FFFF + pop {r4, pc} +_0204E5D8: + lsl r0, r4, #0x3 + add r0, r1, r0 + add r0, #0x64 + ldrh r0, [r0, #0x0] + pop {r4, pc} + nop +_0204E5E4: .word 0x021C5A68 +_0204E5E8: .word 0x0000FFFF + + thumb_func_start FUN_0204E5EC +FUN_0204E5EC: ; 0x0204E5EC + ldr r1, _0204E604 ; =0x021C5A68 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204E5FE + lsl r0, r0, #0x3 + add r0, r1, r0 + add r0, #0x62 + ldrh r0, [r0, #0x0] + bx lr +_0204E5FE: + ldr r0, _0204E608 ; =0x0000FFFF + bx lr + nop +_0204E604: .word 0x021C5A68 +_0204E608: .word 0x0000FFFF + + thumb_func_start FUN_0204E60C +FUN_0204E60C: ; 0x0204E60C + ldr r1, _0204E624 ; =0x021C5A68 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204E61E + lsl r0, r0, #0x3 + add r0, r1, r0 + add r0, #0x64 + ldrh r0, [r0, #0x0] + bx lr +_0204E61E: + ldr r0, _0204E628 ; =0x0000FFFF + bx lr + nop +_0204E624: .word 0x021C5A68 +_0204E628: .word 0x0000FFFF + + thumb_func_start FUN_0204E62C +FUN_0204E62C: ; 0x0204E62C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204E544 + ldr r1, _0204E65C ; =0x0000FFFF + cmp r0, r1 + bne _0204E63E + add r0, r1, #0x0 + pop {r4, pc} +_0204E63E: + ldr r0, _0204E660 ; =0x021C5A68 + lsl r4, r4, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0x66 + ldrsb r0, [r1, r0] + bl FUN_02059BF4 + ldr r1, _0204E660 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r4 + add r1, #0x62 + ldrh r1, [r1, #0x0] + add r0, r1, r0 + pop {r4, pc} + .balign 4 +_0204E65C: .word 0x0000FFFF +_0204E660: .word 0x021C5A68 + + thumb_func_start FUN_0204E664 +FUN_0204E664: ; 0x0204E664 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204E598 + ldr r1, _0204E694 ; =0x0000FFFF + cmp r0, r1 + bne _0204E676 + add r0, r1, #0x0 + pop {r4, pc} +_0204E676: + ldr r0, _0204E698 ; =0x021C5A68 + lsl r4, r4, #0x3 + ldr r0, [r0, #0x0] + add r1, r0, r4 + mov r0, #0x66 + ldrsb r0, [r1, r0] + bl FUN_02059C00 + ldr r1, _0204E698 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r4 + add r1, #0x64 + ldrh r1, [r1, #0x0] + add r0, r1, r0 + pop {r4, pc} + .balign 4 +_0204E694: .word 0x0000FFFF +_0204E698: .word 0x021C5A68 + + thumb_func_start FUN_0204E69C +FUN_0204E69C: ; 0x0204E69C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E6B6 + ldr r0, _0204E6C8 ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E6BC +_0204E6B6: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_0204E6BC: + lsl r0, r4, #0x3 + add r1, r1, r0 + mov r0, #0xa6 + ldrsb r0, [r1, r0] + pop {r4, pc} + nop +_0204E6C8: .word 0x021C5A68 + + thumb_func_start FUN_0204E6CC +FUN_0204E6CC: ; 0x0204E6CC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0204E2FC + cmp r0, #0x0 + beq _0204E6E6 + ldr r0, _0204E6F8 ; =0x021C5A68 + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x48 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204E6EC +_0204E6E6: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_0204E6EC: + lsl r0, r4, #0x3 + add r1, r1, r0 + mov r0, #0x66 + ldrsb r0, [r1, r0] + pop {r4, pc} + nop +_0204E6F8: .word 0x021C5A68 + + thumb_func_start FUN_0204E6FC +FUN_0204E6FC: ; 0x0204E6FC + push {r4, lr} + add r4, r1, #0x0 + ldr r1, _0204E728 ; =0x021C5A68 + lsl r0, r0, #0x3 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0x66 + ldrsb r0, [r1, r0] + bl FUN_0204F610 + ldr r2, _0204E728 ; =0x021C5A68 + lsl r1, r4, #0x3 + ldr r3, [r2, #0x0] + add r1, r3, r1 + add r1, #0x66 + strb r0, [r1, #0x0] + ldr r0, [r2, #0x0] + mov r3, #0x1 + add r1, r0, r4 + ldr r0, _0204E72C ; =0x00000132 + strb r3, [r1, r0] + pop {r4, pc} + .balign 4 +_0204E728: .word 0x021C5A68 +_0204E72C: .word 0x00000132 + + thumb_func_start FUN_0204E730 +FUN_0204E730: ; 0x0204E730 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, _0204E754 ; =0x021C5A68 + lsl r0, r0, #0x3 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0xa6 + ldrsb r0, [r1, r0] + bl FUN_0204F610 + ldr r1, _0204E754 ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x3 + add r1, r2, r1 + add r1, #0xa6 + strb r0, [r1, #0x0] + pop {r4, pc} + nop +_0204E754: .word 0x021C5A68 + + thumb_func_start FUN_0204E758 +FUN_0204E758: ; 0x0204E758 + push {r4, lr} + add r2, r0, #0x0 + ldr r0, _0204E774 ; =0x021C5A68 + add r4, r1, #0x0 + ldr r0, [r0, #0x0] + add r1, r2, #0x0 + ldr r0, [r0, #0x4] + bl FUN_02244D40 + add r1, r4, #0x0 + bl FUN_02244D98 + pop {r4, pc} + nop +_0204E774: .word 0x021C5A68 + + thumb_func_start FUN_0204E778 +FUN_0204E778: ; 0x0204E778 + push {r3, lr} + add r1, r0, #0x0 + ldr r0, _0204E790 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_02244D40 + mov r1, #0x0 + bl FUN_02244D98 + pop {r3, pc} + nop +_0204E790: .word 0x021C5A68 + + thumb_func_start FUN_0204E794 +FUN_0204E794: ; 0x0204E794 + push {r3-r7, lr} + sub sp, #0x8 + str r1, [sp, #0x0] + ldr r1, _0204E7C8 ; =0x021C5A68 + add r6, r3, #0x0 + ldr r4, [r1, #0x0] + lsl r7, r0, #0x3 + add r4, #0x62 + add r0, r6, #0x0 + str r2, [sp, #0x4] + add r5, r4, r7 + bl FUN_02059BF4 + ldr r1, [sp, #0x0] + add r0, r1, r0 + strh r0, [r4, r7] + add r0, r6, #0x0 + bl FUN_02059C00 + ldr r1, [sp, #0x4] + add r0, r1, r0 + strh r0, [r5, #0x2] + strb r6, [r5, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + nop +_0204E7C8: .word 0x021C5A68 + + thumb_func_start FUN_0204E7CC +FUN_0204E7CC: ; 0x0204E7CC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0204E848 ; =0x021C5A68 + add r6, r1, #0x0 + ldr r0, [r0, #0x0] + add r7, r2, #0x0 + str r3, [sp, #0x0] + cmp r0, #0x0 + beq _0204E844 + add r2, r0, #0x0 + add r2, #0xa2 + lsl r1, r5, #0x3 + add r4, r2, r1 + ldr r1, _0204E84C ; =0x000002BD + ldrb r1, [r0, r1] + cmp r1, #0x0 + bne _0204E7FA + ldrh r1, [r4, #0x0] + ldrh r3, [r4, #0x2] + ldr r0, [r0, #0x54] + mov r2, #0x0 + bl FUN_021E5B30 +_0204E7FA: + strh r6, [r4, #0x0] + ldr r0, [sp, #0x0] + strh r7, [r4, #0x2] + strb r0, [r4, #0x4] + ldr r0, _0204E848 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r5, #0x2 + add r0, r1, r0 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204E81A + ldr r3, [sp, #0x0] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02055514 +_0204E81A: + ldr r0, _0204E848 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E84C ; =0x000002BD + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204E832 + ldr r0, [r1, #0x54] + ldrh r1, [r4, #0x0] + ldrh r3, [r4, #0x2] + mov r2, #0x0 + bl FUN_021E5B30 +_0204E832: + ldr r0, _0204E848 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204E84C ; =0x000002BD + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0204E844 + add r0, r5, #0x0 + bl FUN_0204F0A8 +_0204E844: + pop {r3-r7, pc} + nop +_0204E848: .word 0x021C5A68 +_0204E84C: .word 0x000002BD + + thumb_func_start FUN_0204E850 +FUN_0204E850: ; 0x0204E850 + push {r3-r4, lr} + sub sp, #0x4 + mov r2, #0x2 + add r1, sp, #0x0 + add r4, r0, #0x0 + strb r2, [r1, #0x0] + strb r4, [r1, #0x1] + ldr r1, _0204E8AC ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r4 + add r1, #0xe2 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204E88A + bl FUN_0204D830 + cmp r0, #0x0 + bne _0204E88A + add r0, r4, #0x0 + bl FUN_0204EE9C + cmp r0, #0x0 + add r0, sp, #0x0 + beq _0204E886 + mov r1, #0x3 + strb r1, [r0, #0x0] + b _0204E88A +_0204E886: + mov r1, #0x1 + strb r1, [r0, #0x0] +_0204E88A: + mov r0, #0x1d + add r1, sp, #0x0 + mov r2, #0x2 + bl FUN_02030BC4 + cmp r0, #0x0 + beq _0204E8A8 + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + beq _0204E8A8 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0204EAD8 +_0204E8A8: + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0204E8AC: .word 0x021C5A68 + + thumb_func_start FUN_0204E8B0 +FUN_0204E8B0: ; 0x0204E8B0 + push {r3-r6} + ldr r2, _0204E8F8 ; =0x021C5A68 + ldr r3, [r2, #0x0] + cmp r3, #0x0 + bne _0204E8C0 + mov r0, #0xff + pop {r3-r6} + bx lr +_0204E8C0: + mov r2, #0x0 + add r4, r3, #0x0 +_0204E8C4: + add r5, r3, #0x0 + add r5, #0x48 + ldrb r5, [r5, #0x0] + cmp r5, #0x0 + beq _0204E8E8 + add r5, r4, #0x0 + add r5, #0x64 + ldrh r6, [r5, #0x0] + add r5, r4, #0x0 + add r5, #0x62 + ldrh r5, [r5, #0x0] + cmp r0, r5 + bne _0204E8E8 + cmp r1, r6 + bne _0204E8E8 + add r0, r2, #0x0 + pop {r3-r6} + bx lr +_0204E8E8: + add r2, r2, #0x1 + add r3, r3, #0x1 + add r4, #0x8 + cmp r2, #0x8 + blt _0204E8C4 + mov r0, #0xff + pop {r3-r6} + bx lr + .balign 4 +_0204E8F8: .word 0x021C5A68 + + thumb_func_start FUN_0204E8FC +FUN_0204E8FC: ; 0x0204E8FC + push {r4, lr} + add r4, r2, #0x0 + bl FUN_02030FE0 + cmp r0, #0x0 + beq _0204E962 + ldrb r0, [r4, #0x0] + cmp r0, #0x1 + bne _0204E936 + bl FUN_02031190 + ldrb r1, [r4, #0x1] + cmp r1, r0 + bne _0204E936 + ldr r1, _0204E964 ; =0x021C5A68 + mov r0, #0xae + ldr r3, [r1, #0x0] + lsl r0, r0, #0x2 + ldrb r2, [r3, r0] + cmp r2, #0x0 + bne _0204E962 + mov r2, #0x1 + strb r2, [r3, r0] + ldr r1, [r1, #0x0] + ldr r0, _0204E968 ; =FUN_0204D308 + ldr r1, [r1, #0x54] + bl FUN_022494C8 + pop {r4, pc} +_0204E936: + ldrb r0, [r4, #0x0] + cmp r0, #0x3 + bne _0204E962 + bl FUN_02031190 + ldrb r1, [r4, #0x1] + cmp r1, r0 + bne _0204E962 + ldr r1, _0204E964 ; =0x021C5A68 + mov r0, #0xae + ldr r3, [r1, #0x0] + lsl r0, r0, #0x2 + ldrb r2, [r3, r0] + cmp r2, #0x0 + bne _0204E962 + mov r2, #0x1 + strb r2, [r3, r0] + ldr r1, [r1, #0x0] + ldr r0, _0204E968 ; =FUN_0204D308 + ldr r1, [r1, #0x54] + bl FUN_0224A7C8 +_0204E962: + pop {r4, pc} + .balign 4 +_0204E964: .word 0x021C5A68 +_0204E968: .word FUN_0204D308 + + thumb_func_start FUN_0204E96C +FUN_0204E96C: ; 0x0204E96C + push {r4-r6, lr} + ldr r0, _0204EACC ; =0x021C5A68 + add r5, r2, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r6, r0, #0x0 + ldrb r0, [r5, #0x1] + cmp r0, #0x8 + blo _0204E988 + bl ErrorHandling +_0204E988: + ldrb r0, [r5, #0x0] + cmp r0, #0x4 + bne _0204E9AA + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204E9AA + bl FUN_0204F7E4 + bl FUN_0223D638 + ldr r3, _0204EAD0 ; =FUN_0204E2AC + mov r1, #0x48 + mov r2, #0x1 + bl FUN_0224DCB8 +_0204E9AA: + ldrb r0, [r5, #0x0] + cmp r0, #0x1 + bne _0204E9B8 + ldrb r0, [r5, #0x1] + ldrb r1, [r5, #0x2] + bl FUN_0204E730 +_0204E9B8: + ldrb r0, [r5, #0x0] + cmp r0, #0x1 + bne _0204EA7C + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204EA7C + ldr r2, _0204EACC ; =0x021C5A68 + ldrb r0, [r5, #0x2] + ldr r2, [r2, #0x0] + ldr r1, _0204EAD4 ; =FUN_0204D308 + ldr r2, [r2, #0x54] + bl FUN_02247A34 + ldr r0, _0204EACC ; =0x021C5A68 + ldrb r4, [r5, #0x1] + ldr r2, [r0, #0x0] + mov r3, #0xf + add r1, r2, #0x0 + add r1, #0x58 + ldrb r1, [r1, #0x0] + add r2, #0x58 + bic r1, r3 + mov r3, #0xf + and r3, r4 + orr r1, r3 + strb r1, [r2, #0x0] + ldr r2, [r0, #0x0] + mov r3, #0xf0 + add r1, r2, #0x0 + add r1, #0x58 + ldrb r1, [r1, #0x0] + add r2, #0x58 + bic r1, r3 + ldrb r3, [r5, #0x2] + lsl r3, r3, #0x1c + lsr r3, r3, #0x18 + orr r1, r3 + strb r1, [r2, #0x0] + ldr r3, [r0, #0x0] + add r1, r3, #0x0 + add r1, #0x59 + ldrb r2, [r1, #0x0] + mov r1, #0x1 + add r3, #0x59 + bic r2, r1 + strb r2, [r3, #0x0] + ldr r3, [r0, #0x0] + add r1, r3, #0x0 + add r1, #0x59 + ldrb r2, [r1, #0x0] + mov r1, #0x2 + add r3, #0x59 + bic r2, r1 + strb r2, [r3, #0x0] + ldrb r4, [r5, #0x2] + ldr r1, [r0, #0x0] + add r0, r1, r4 + add r0, #0x5a + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204EA7C + ldr r0, [r1, #0x54] + bl FUN_020377AC + bl FUN_02026CB4 + add r1, r4, #0x0 + bl FUN_02026908 + add r0, r6, #0x0 + bl FUN_0205F688 + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_0205F698 + add r0, r6, #0x0 + bl FUN_0205F6A8 + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_0205F6B8 + ldr r0, _0204EACC ; =0x021C5A68 + ldrb r1, [r5, #0x2] + ldr r2, [r0, #0x0] + add r2, #0x5a + ldrb r0, [r2, r1] + add r0, r0, #0x1 + strb r0, [r2, r1] +_0204EA7C: + ldrb r0, [r5, #0x0] + cmp r0, #0x1 + bne _0204EA9A + ldrb r4, [r5, #0x2] + bl FUN_02031190 + cmp r4, r0 + bne _0204EA9A + ldr r2, _0204EACC ; =0x021C5A68 + ldrb r1, [r5, #0x1] + ldr r2, [r2, #0x0] + add r0, r4, #0x0 + ldr r2, [r2, #0x54] + bl FUN_02248DF8 +_0204EA9A: + ldrb r0, [r5, #0x0] + cmp r0, #0x2 + bne _0204EABC + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204EABC + bl FUN_0204F7E4 + bl FUN_0223D638 + ldr r3, _0204EAD0 ; =FUN_0204E2AC + mov r1, #0x2 + mov r2, #0x1 + bl FUN_0224DCB8 +_0204EABC: + ldrb r0, [r5, #0x0] + cmp r0, #0x1 + bne _0204EACA + ldrb r0, [r5, #0x1] + ldrb r1, [r5, #0x2] + bl FUN_0223E4A8 +_0204EACA: + pop {r4-r6, pc} + .balign 4 +_0204EACC: .word 0x021C5A68 +_0204EAD0: .word FUN_0204E2AC +_0204EAD4: .word FUN_0204D308 + + thumb_func_start FUN_0204EAD8 +FUN_0204EAD8: ; 0x0204EAD8 + push {r3-r4} + ldr r3, _0204EB0C ; =0x021C5A68 + ldr r4, [r3, #0x0] + add r4, #0xe2 + ldrb r2, [r4, r0] + cmp r1, r2 + beq _0204EB08 + strb r1, [r4, r0] + ldr r2, [r3, #0x0] + lsl r1, r0, #0x3 + add r2, r2, r1 + mov r4, #0x0 + add r2, #0x69 + strb r4, [r2, #0x0] + ldr r2, [r3, #0x0] + mov r4, #0x1 + add r2, r2, r0 + ldr r0, _0204EB10 ; =0x00000132 + strb r4, [r2, r0] + ldr r0, [r3, #0x0] + mov r2, #0x2 + add r0, r0, r1 + add r0, #0x67 + strb r2, [r0, #0x0] +_0204EB08: + pop {r3-r4} + bx lr + .balign 4 +_0204EB0C: .word 0x021C5A68 +_0204EB10: .word 0x00000132 + + thumb_func_start FUN_0204EB14 +FUN_0204EB14: ; 0x0204EB14 + ldr r1, _0204EB3C ; =0x021C5A68 + ldr r2, [r1, #0x0] + ldr r1, _0204EB40 ; =0x000002C2 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _0204EB24 + mov r0, #0x0 + bx lr +_0204EB24: + add r1, r2, r0 + add r1, #0xea + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _0204EB36 + add r0, r2, r0 + add r0, #0xe2 + ldrb r0, [r0, #0x0] + bx lr +_0204EB36: + mov r0, #0x0 + bx lr + nop +_0204EB3C: .word 0x021C5A68 +_0204EB40: .word 0x000002C2 + + thumb_func_start FUN_0204EB44 +FUN_0204EB44: ; 0x0204EB44 + push {r3-r7, lr} + sub sp, #0x30 + ldr r1, _0204EBF8 ; =0x020F5800 + add r0, sp, #0x8 + ldrh r2, [r1, #0x0] + ldr r3, _0204EBFC ; =0x020F5814 + strh r2, [r0, #0x0] + ldrh r2, [r1, #0x2] + strh r2, [r0, #0x2] + ldrh r2, [r1, #0x4] + ldrh r1, [r1, #0x6] + strh r2, [r0, #0x4] + strh r1, [r0, #0x6] + add r2, sp, #0x20 + mov r1, #0x8 +_0204EB62: + ldrh r0, [r3, #0x0] + add r3, r3, #0x2 + strh r0, [r2, #0x0] + add r2, r2, #0x2 + sub r1, r1, #0x1 + bne _0204EB62 + bl FUN_02033534 + bl FUN_02031248 + add r6, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x0] + cmp r6, #0x2 + bne _0204EB86 + add r5, sp, #0x8 + b _0204EB88 +_0204EB86: + add r5, sp, #0x20 +_0204EB88: + mov r7, #0x0 + cmp r6, #0x0 + ble _0204EBD4 +_0204EB8E: + mov r4, #0x0 + cmp r6, #0x0 + ble _0204EBCC +_0204EB94: + add r0, r4, #0x0 + bl FUN_0204E3EC + ldrh r1, [r5, #0x0] + cmp r1, r0 + bne _0204EBC6 + add r0, r4, #0x0 + bl FUN_0204E440 + ldrh r1, [r5, #0x2] + cmp r1, r0 + bne _0204EBC6 + ldr r0, [sp, #0x4] + lsl r1, r4, #0x2 + add r0, r0, #0x1 + str r0, [sp, #0x4] + add r0, sp, #0x10 + str r7, [r0, r1] + bl FUN_02031190 + cmp r4, r0 + bne _0204EBCC + mov r0, #0x1 + str r0, [sp, #0x0] + b _0204EBCC +_0204EBC6: + add r4, r4, #0x1 + cmp r4, r6 + blt _0204EB94 +_0204EBCC: + add r7, r7, #0x1 + add r5, r5, #0x4 + cmp r7, r6 + blt _0204EB8E +_0204EBD4: + ldr r0, [sp, #0x4] + cmp r0, r6 + bne _0204EBF2 + mov r5, #0x0 + cmp r6, #0x0 + ble _0204EBF2 + add r4, sp, #0x10 +_0204EBE2: + ldr r0, [r4, #0x0] + add r1, r5, #0x0 + bl FUN_020313B4 + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, r6 + blt _0204EBE2 +_0204EBF2: + ldr r0, [sp, #0x0] + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_0204EBF8: .word 0x020F5800 +_0204EBFC: .word 0x020F5814 + + thumb_func_start FUN_0204EC00 +FUN_0204EC00: ; 0x0204EC00 + ldrb r2, [r2, #0x0] + cmp r2, #0x3 + bne _0204EC14 + ldr r1, _0204EC24 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0xf2 + strb r2, [r0, #0x0] + bx lr +_0204EC14: + ldr r1, _0204EC24 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0xad + lsl r0, r0, #0x2 + strb r2, [r1, r0] + bx lr + nop +_0204EC24: .word 0x021C5A68 + + thumb_func_start FUN_0204EC28 +FUN_0204EC28: ; 0x0204EC28 + push {r3-r7, lr} + sub sp, #0x8 + bl FUN_02033534 + bl FUN_02031248 + add r7, r0, #0x0 + cmp r7, #0x2 + bne _0204EC40 + ldr r0, _0204ECB4 ; =0x02105E5C + str r0, [sp, #0x0] + b _0204EC44 +_0204EC40: + ldr r0, _0204ECB8 ; =0x02105E64 + str r0, [sp, #0x0] +_0204EC44: + mov r1, #0x0 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + cmp r7, #0x0 + ble _0204ECAE +_0204EC4E: + ldr r0, _0204ECBC ; =0x021C5A68 + add r6, sp, #0x4 + ldr r1, [r0, #0x0] + ldrb r0, [r6, #0x0] + add r1, r1, r0 + mov r0, #0xad + lsl r0, r0, #0x2 + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _0204ECA0 + mov r4, #0x0 + cmp r7, #0x0 + ble _0204ECA0 + ldr r5, [sp, #0x0] +_0204EC6A: + ldrb r0, [r6, #0x0] + bl FUN_0204E544 + ldrh r1, [r5, #0x0] + cmp r1, r0 + bne _0204EC98 + ldrb r0, [r6, #0x0] + bl FUN_0204E598 + ldrh r1, [r5, #0x2] + cmp r1, r0 + bne _0204EC98 + ldr r0, _0204ECBC ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldrb r0, [r6, #0x0] + add r1, r1, r0 + add r1, #0xf2 + mov r0, #0x1 + strb r0, [r1, #0x0] + mov r0, #0x5f + add r1, sp, #0x4 + bl FUN_02030C4C +_0204EC98: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r7 + blt _0204EC6A +_0204ECA0: + add r0, sp, #0x4 + ldrb r1, [r0, #0x0] + add r1, r1, #0x1 + strb r1, [r0, #0x0] + ldrb r0, [r0, #0x0] + cmp r0, r7 + blt _0204EC4E +_0204ECAE: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0204ECB4: .word 0x02105E5C +_0204ECB8: .word 0x02105E64 +_0204ECBC: .word 0x021C5A68 + + thumb_func_start FUN_0204ECC0 +FUN_0204ECC0: ; 0x0204ECC0 + push {r4, lr} + bl FUN_02031190 + add r4, r0, #0x0 + bl FUN_0204E3EC + cmp r0, #0x8 + ble _0204ECE0 + mov r0, #0x2 + bl FUN_0204F6DC + mov r0, #0x2 + mov r1, #0x24 + bl FUN_0205AFDC + b _0204ECEE +_0204ECE0: + mov r0, #0x3 + bl FUN_0204F6DC + mov r0, #0x3 + mov r1, #0x24 + bl FUN_0205AFDC +_0204ECEE: + add r1, r0, #0x0 + ldr r0, _0204ED04 ; =0x021C5A68 + ldr r2, [r0, #0x0] + lsl r0, r4, #0x2 + add r0, r2, r0 + ldr r0, [r0, #0x8] + bl FUN_02057260 + bl FUN_0204FB14 + pop {r4, pc} + .balign 4 +_0204ED04: .word 0x021C5A68 + + thumb_func_start FUN_0204ED08 +FUN_0204ED08: ; 0x0204ED08 + push {r3-r7, lr} + sub sp, #0x8 + bl FUN_02033534 + bl FUN_02031248 + mov r3, #0x0 + str r0, [sp, #0x0] + cmp r0, #0x0 + ble _0204ED3C + ldr r0, _0204ED94 ; =0x021C5A68 + mov r1, #0x66 + add r2, r1, #0x0 + ldr r4, [r0, #0x0] + sub r2, #0x67 +_0204ED26: + ldrsb r0, [r4, r1] + cmp r0, r2 + bne _0204ED32 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0204ED32: + ldr r0, [sp, #0x0] + add r3, r3, #0x1 + add r4, #0x8 + cmp r3, r0 + blt _0204ED26 +_0204ED3C: + ldr r0, [sp, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + ble _0204ED8E + add r4, r5, #0x0 +_0204ED46: + ldr r0, _0204ED94 ; =0x021C5A68 + ldr r7, [r0, #0x0] + mov r0, #0x4 + add r7, #0x62 + add r6, r7, r4 + ldrsb r0, [r6, r0] + bl FUN_0204F610 + str r0, [sp, #0x4] + bl FUN_02059BF4 + ldrh r1, [r7, r4] + add r0, r1, r0 + strh r0, [r7, r4] + ldr r0, [sp, #0x4] + bl FUN_02059C00 + ldrh r1, [r6, #0x2] + add r0, r1, r0 + strh r0, [r6, #0x2] + mov r0, #0x2 + strb r0, [r6, #0x5] + ldr r0, _0204ED94 ; =0x021C5A68 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r2, r0, r5 + ldr r0, _0204ED98 ; =0x00000132 + strb r1, [r2, r0] + add r0, r5, #0x0 + bl FUN_0204EAD8 + ldr r0, [sp, #0x0] + add r5, r5, #0x1 + add r4, #0x8 + cmp r5, r0 + blt _0204ED46 +_0204ED8E: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0204ED94: .word 0x021C5A68 +_0204ED98: .word 0x00000132 + + thumb_func_start FUN_0204ED9C +FUN_0204ED9C: ; 0x0204ED9C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204EDE8 ; =0x021C5A68 + ldr r1, [r0, #0x0] + lsl r0, r4, #0x2 + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204EDE2 + bl FUN_02016A18 + ldr r2, _0204EDE8 ; =0x021C5A68 + lsl r1, r4, #0x2 + ldr r3, [r2, #0x0] + mov r0, #0x0 + add r3, r3, r1 + mov r1, #0x29 + lsl r1, r1, #0x4 + str r0, [r3, r1] + ldr r1, [r2, #0x0] + mov r3, #0xff + add r1, r1, r4 + add r1, #0xfa + strb r0, [r1, #0x0] + mov r0, #0x22 + ldr r1, [r2, #0x0] + mul r0, r4 + add r1, r1, r0 + add r0, r3, #0x0 + add r0, #0x6b + strh r3, [r1, r0] + mov r0, #0x1 + pop {r4, pc} +_0204EDE2: + mov r0, #0x0 + pop {r4, pc} + nop +_0204EDE8: .word 0x021C5A68 + + thumb_func_start FUN_0204EDEC +FUN_0204EDEC: ; 0x0204EDEC + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02031190 + cmp r7, r0 + bne _0204EE90 + ldr r0, _0204EE98 ; =0x021C5A68 + ldr r2, [r0, #0x0] + lsl r0, r7, #0x2 + add r1, r2, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204EE96 + ldr r0, [r2, #0x54] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x1c + bl FUN_0202A170 + ldr r0, _0204EE98 ; =0x021C5A68 + ldr r1, [r0, #0x0] + mov r0, #0xa3 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204EE2A + bl FUN_02016A18 +_0204EE2A: + mov r0, #0x9e + lsl r0, r0, #0x2 + ldr r2, _0204EE98 ; =0x021C5A68 + mov r5, #0x4 + mov r6, #0x10 + add r1, r0, #0x4 +_0204EE36: + ldr r3, [r2, #0x0] + sub r5, r5, #0x1 + add r4, r3, r6 + ldr r3, [r4, r0] + sub r6, r6, #0x4 + str r3, [r4, r1] + cmp r5, #0x1 + bge _0204EE36 + ldr r1, _0204EE98 ; =0x021C5A68 + mov r0, #0x29 + ldr r3, [r1, #0x0] + lsl r4, r7, #0x2 + add r2, r3, r4 + lsl r0, r0, #0x4 + ldr r2, [r2, r0] + sub r0, #0x14 + str r2, [r3, r0] + ldr r5, [r1, #0x0] + ldr r0, [r5, #0x54] + bl FUN_020377AC + bl FUN_02026CC4 + mov r1, #0x29 + add r2, r5, r4 + lsl r1, r1, #0x4 + ldr r1, [r2, r1] + bl FUN_02025C40 + ldr r1, _0204EE98 ; =0x021C5A68 + mov r3, #0x0 + ldr r0, [r1, #0x0] + add r2, r0, r4 + mov r0, #0x29 + lsl r0, r0, #0x4 + str r3, [r2, r0] + mov r0, #0x22 + ldr r1, [r1, #0x0] + mul r0, r7 + mov r2, #0xff + add r1, r1, r0 + add r0, r2, #0x0 + add r0, #0x6b + strh r2, [r1, r0] + pop {r3-r7, pc} +_0204EE90: + add r0, r7, #0x0 + bl FUN_0204ED9C +_0204EE96: + pop {r3-r7, pc} + .balign 4 +_0204EE98: .word 0x021C5A68 + + thumb_func_start FUN_0204EE9C +FUN_0204EE9C: ; 0x0204EE9C + ldr r1, _0204EEB8 ; =0x021C5A68 + lsl r0, r0, #0x2 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204EEB2 + mov r0, #0x1 + bx lr +_0204EEB2: + mov r0, #0x0 + bx lr + nop +_0204EEB8: .word 0x021C5A68 + + thumb_func_start FUN_0204EEBC +FUN_0204EEBC: ; 0x0204EEBC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0204EF48 ; =0x021C5A68 + add r6, r1, #0x0 + ldr r1, [r0, #0x0] + lsl r0, r5, #0x2 + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + bne _0204EF44 + add r0, r6, #0x0 + bl FUN_0202DFA4 + add r7, r0, #0x0 + beq _0204EF44 + mov r0, #0xf + lsl r4, r5, #0x2 + bl FUN_02023928 + mov r3, #0x29 + ldr r1, _0204EF48 ; =0x021C5A68 + add r2, r0, #0x0 + ldr r0, [r1, #0x0] + lsl r3, r3, #0x4 + add r0, r0, r4 + str r2, [r0, r3] + ldr r1, [r1, #0x0] + add r0, r7, #0x0 + add r1, r1, r4 + ldr r1, [r1, r3] + bl FUN_0202393C + ldr r1, _0204EF48 ; =0x021C5A68 + mov r2, #0x1 + ldr r0, [r1, #0x0] + ldr r3, _0204EF4C ; =0x0000016A + add r0, r0, r5 + add r0, #0xfa + strb r2, [r0, #0x0] + mov r0, #0x22 + add r2, r5, #0x0 + mul r2, r0 + ldr r0, [r1, #0x0] + add r0, r0, r2 + strh r5, [r0, r3] + ldr r1, [r1, #0x0] + sub r3, #0x20 + add r1, r1, r3 + add r0, r7, #0x0 + add r1, r1, r2 + bl FUN_0202393C + bl FUN_02031190 + cmp r6, r0 + bne _0204EF40 + ldr r0, _0204EF48 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0xc] + bl FUN_02026CB4 + bl FUN_02026BC8 +_0204EF40: + mov r0, #0x1 + pop {r3-r7, pc} +_0204EF44: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0204EF48: .word 0x021C5A68 +_0204EF4C: .word 0x0000016A + + thumb_func_start FUN_0204EF50 +FUN_0204EF50: ; 0x0204EF50 + push {r3-r7, lr} + ldr r4, _0204EFC4 ; =0x021C5A68 + mov r7, #0x29 + ldr r6, [r4, #0x0] + add r3, r0, #0x0 + lsl r7, r7, #0x4 + add r5, r6, r7 + lsl r0, r3, #0x2 + add r2, r1, #0x0 + ldr r1, [r5, r0] + cmp r1, #0x0 + bne _0204EFBE + lsl r1, r2, #0x2 + add r6, r6, r1 + ldr r6, [r6, r7] + cmp r6, #0x0 + beq _0204EFBE + str r6, [r5, r0] + ldr r5, [r4, #0x0] + mov r6, #0x0 + add r1, r5, r1 + str r6, [r1, r7] + ldr r1, [r4, #0x0] + mov r5, #0x1 + add r1, r1, r3 + add r1, #0xfa + strb r5, [r1, #0x0] + ldr r1, [r4, #0x0] + add r1, r1, r2 + add r1, #0xfa + strb r6, [r1, #0x0] + mov r1, #0x22 + ldr r5, [r4, #0x0] + mul r1, r3 + add r6, r5, r1 + ldr r5, _0204EFC8 ; =0x0000016A + strh r3, [r6, r5] + mov r6, #0x22 + mov r5, #0xff + mul r6, r2 + ldr r3, [r4, #0x0] + add r2, r5, #0x0 + add r3, r3, r6 + add r2, #0x6b + strh r5, [r3, r2] + ldr r2, [r4, #0x0] + add r5, #0x4b + add r0, r2, r0 + add r2, r2, r5 + ldr r0, [r0, r7] + add r1, r2, r1 + bl FUN_0202393C + mov r0, #0x1 + pop {r3-r7, pc} +_0204EFBE: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0204EFC4: .word 0x021C5A68 +_0204EFC8: .word 0x0000016A + + thumb_func_start FUN_0204EFCC +FUN_0204EFCC: ; 0x0204EFCC + push {r4, lr} + ldr r1, _0204F06C ; =0x021C5A68 + add r4, r0, #0x0 + ldr r3, [r1, #0x0] + ldr r1, _0204F070 ; =0x000002BD + ldrb r1, [r3, r1] + cmp r1, #0x0 + bne _0204F068 + lsl r1, r4, #0x2 + add r2, r3, r1 + ldr r1, [r2, #0x8] + cmp r1, #0x0 + beq _0204F068 + add r3, r3, r4 + add r3, #0xfa + ldrb r3, [r3, #0x0] + cmp r3, #0x3 + bhi _0204F068 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0204EFFC: ; jump table (using 16-bit offset) + .short _0204F064 - _0204EFFC - 2; case 0 + .short _0204F048 - _0204EFFC - 2; case 1 + .short _0204F02C - _0204EFFC - 2; case 2 + .short _0204F004 - _0204EFFC - 2; case 3 +_0204F004: + ldr r0, [r2, #0x28] + cmp r0, #0x0 + bne _0204F01E + add r0, r1, #0x0 + bl FUN_020553A0 + bl FUN_021E5970 + ldr r1, _0204F06C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x2 + add r1, r2, r1 + str r0, [r1, #0x28] +_0204F01E: + ldr r0, _0204F06C ; =0x021C5A68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, r4 + add r0, #0xfa + strb r1, [r0, #0x0] + pop {r4, pc} +_0204F02C: + ldr r0, [r2, #0x28] + cmp r0, #0x0 + bne _0204F068 + add r0, r1, #0x0 + bl FUN_020553A0 + bl FUN_021E57D4 + ldr r1, _0204F06C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x2 + add r1, r2, r1 + str r0, [r1, #0x28] + pop {r4, pc} +_0204F048: + ldr r0, [r2, #0x28] + cmp r0, #0x0 + bne _0204F068 + add r0, r1, #0x0 + bl FUN_020553A0 + bl FUN_021E5614 + ldr r1, _0204F06C ; =0x021C5A68 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x2 + add r1, r2, r1 + str r0, [r1, #0x28] + pop {r4, pc} +_0204F064: + bl FUN_0204CD78 +_0204F068: + pop {r4, pc} + nop +_0204F06C: .word 0x021C5A68 +_0204F070: .word 0x000002BD + + thumb_func_start FUN_0204F074 +FUN_0204F074: ; 0x0204F074 + ldr r1, _0204F088 ; =0x021C5A68 + ldr r2, [r1, #0x0] + add r2, #0xfa + ldrb r1, [r2, r0] + cmp r1, #0x1 + beq _0204F084 + mov r1, #0x2 + strb r1, [r2, r0] +_0204F084: + bx lr + nop +_0204F088: .word 0x021C5A68 + + thumb_func_start FUN_0204F08C +FUN_0204F08C: ; 0x0204F08C + ldr r1, _0204F0A0 ; =0x021C5A68 + ldr r2, [r1, #0x0] + add r2, #0xfa + ldrb r1, [r2, r0] + cmp r1, #0x1 + beq _0204F09C + mov r1, #0x3 + strb r1, [r2, r0] +_0204F09C: + ldr r3, _0204F0A4 ; =FUN_0204CD78 + bx r3 + .balign 4 +_0204F0A0: .word 0x021C5A68 +_0204F0A4: .word FUN_0204CD78 + + thumb_func_start FUN_0204F0A8 +FUN_0204F0A8: ; 0x0204F0A8 + ldr r1, _0204F0BC ; =0x021C5A68 + ldr r2, [r1, #0x0] + add r2, #0xfa + ldrb r1, [r2, r0] + cmp r1, #0x1 + beq _0204F0B8 + mov r1, #0x0 + strb r1, [r2, r0] +_0204F0B8: + ldr r3, _0204F0C0 ; =FUN_0204CD78 + bx r3 + .balign 4 +_0204F0BC: .word 0x021C5A68 +_0204F0C0: .word FUN_0204CD78 + + thumb_func_start FUN_0204F0C4 +FUN_0204F0C4: ; 0x0204F0C4 + mov r0, #0x3 + bx lr + + thumb_func_start FUN_0204F0C8 +FUN_0204F0C8: ; 0x0204F0C8 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, sp, #0x0 + strb r4, [r0, #0x1] + ldrb r1, [r2, #0x0] + cmp r1, #0x0 + beq _0204F0E0 + cmp r1, #0x3 + beq _0204F0F0 + add sp, #0x4 + pop {r3-r4, pc} +_0204F0E0: + mov r1, #0x0 + strb r1, [r0, #0x0] + mov r0, #0x55 + add r1, sp, #0x0 + bl FUN_02030C4C + add sp, #0x4 + pop {r3-r4, pc} +_0204F0F0: + mov r1, #0x3 + strb r1, [r0, #0x0] + mov r0, #0x55 + add r1, sp, #0x0 + bl FUN_02030C4C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0204EAD8 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_0204F108 +FUN_0204F108: ; 0x0204F108 + push {r3, lr} + bl FUN_02031190 + bl FUN_0204F0A8 + bl FUN_0223D648 + bl FUN_0224DD94 + mov r0, #0x4 + bl FUN_0204F774 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204F124 +FUN_0204F124: ; 0x0204F124 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + ldr r0, [r5, #0x4] + mov r4, #0x0 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r7, #0x0 + bl FUN_02030E7C + cmp r0, #0x0 + bne _0204F14A + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r6, #0x0 + bl FUN_0200CAB4 + pop {r3-r7, pc} +_0204F14A: + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + cmp r0, #0x3c + ble _0204F156 + mov r4, #0x1 +_0204F156: + cmp r4, #0x0 + beq _0204F172 + ldr r0, _0204F174 ; =0x021C5A68 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, r0, r7 + add r0, #0xea + strb r1, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r6, #0x0 + bl FUN_0200CAB4 +_0204F172: + pop {r3-r7, pc} + .balign 4 +_0204F174: .word 0x021C5A68 + + thumb_func_start FUN_0204F178 +FUN_0204F178: ; 0x0204F178 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_02016998 + add r1, r0, #0x0 + mov r2, #0x0 + str r2, [r1, #0x0] + ldr r0, _0204F1A8 ; =0x021C5A68 + str r4, [r1, #0x4] + ldr r0, [r0, #0x0] + add r0, r0, r4 + add r0, #0xea + strb r2, [r0, #0x0] + ldr r0, _0204F1AC ; =FUN_0204F124 + mov r2, #0x64 + bl FUN_0200CA44 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0204EAD8 + pop {r4, pc} + .balign 4 +_0204F1A8: .word 0x021C5A68 +_0204F1AC: .word FUN_0204F124 + + thumb_func_start FUN_0204F1B0 +FUN_0204F1B0: ; 0x0204F1B0 + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x1 + add r5, r0, #0x0 + tst r1, r2 + beq _0204F1C4 + mov r1, #0xb + add r0, sp, #0x0 + strb r1, [r0, #0x0] + b _0204F1F6 +_0204F1C4: + bl FUN_0204EE9C + cmp r0, #0x0 + beq _0204F1D4 + mov r1, #0xb + add r0, sp, #0x0 + strb r1, [r0, #0x0] + b _0204F1F6 +_0204F1D4: + cmp r4, #0xff + bne _0204F1DC + mov r0, #0x0 + pop {r3-r5, pc} +_0204F1DC: + add r0, r4, #0x0 + bl FUN_0204EE9C + cmp r0, #0x0 + bne _0204F1EA + mov r0, #0x0 + pop {r3-r5, pc} +_0204F1EA: + mov r1, #0x5 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_0204F178 +_0204F1F6: + add r0, sp, #0x0 + strb r5, [r0, #0x1] + strb r4, [r0, #0x2] + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0204EAD8 + mov r0, #0x55 + add r1, sp, #0x0 + bl FUN_02030C4C + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0204F210 +FUN_0204F210: ; 0x0204F210 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl FUN_0204EE9C + cmp r0, #0x0 + beq _0204F226 + mov r1, #0xc + add r0, sp, #0x0 + strb r1, [r0, #0x0] + b _0204F22C +_0204F226: + add sp, #0x4 + mov r0, #0x0 + pop {r3-r4, pc} +_0204F22C: + strb r4, [r0, #0x1] + mov r0, #0x55 + add r1, sp, #0x0 + bl FUN_02030C4C + mov r0, #0x1 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_0204F23C +FUN_0204F23C: ; 0x0204F23C + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0223E6B8 + mov r0, #0x0 + bl FUN_0204D628 + mov r0, #0x4 + bl FUN_0204F74C + bl FUN_0223D648 + add r6, r0, #0x0 + ldrb r0, [r5, #0x1] + bl FUN_0202DFA4 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0224DDB8 + cmp r4, #0x0 + beq _0204F29C + bl FUN_02031190 + ldr r1, _0204F2C8 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0xfa + strb r2, [r0, #0x0] + bl FUN_02031190 + bl FUN_0204F0A8 + bl FUN_02031190 + bl FUN_0204F074 + bl FUN_0223D648 + ldr r3, _0204F2CC ; =FUN_0204F108 + mov r1, #0xa + mov r2, #0x1 + bl FUN_0224DCB8 + b _0204F2AA +_0204F29C: + bl FUN_0223D648 + ldr r3, _0204F2CC ; =FUN_0204F108 + mov r1, #0xb + mov r2, #0x1 + bl FUN_0224DCB8 +_0204F2AA: + mov r0, #0xff + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r1, _0204F2D0 ; =0x00000424 + mov r0, #0x4 + mov r2, #0x3c + str r3, [sp, #0x4] + bl FUN_02004DCC + ldr r0, _0204F2D4 ; =0x000005F6 + bl FUN_020054C8 + add sp, #0x8 + pop {r4-r6, pc} + nop +_0204F2C8: .word 0x021C5A68 +_0204F2CC: .word FUN_0204F108 +_0204F2D0: .word 0x00000424 +_0204F2D4: .word 0x000005F6 + + thumb_func_start FUN_0204F2D8 +FUN_0204F2D8: ; 0x0204F2D8 + push {r4-r5, lr} + sub sp, #0xc + ldr r0, _0204F5E0 ; =0x021C5A68 + add r5, r2, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_020377AC + bl FUN_02026CB4 + add r4, r0, #0x0 + ldrb r0, [r5, #0x0] + cmp r0, #0x5 + bgt _0204F308 + cmp r0, #0x0 + blt _0204F346 + beq _0204F31E + cmp r0, #0x3 + bne _0204F300 + b _0204F4D2 +_0204F300: + cmp r0, #0x5 + beq _0204F370 + add sp, #0xc + pop {r4-r5, pc} +_0204F308: + cmp r0, #0xc + bgt _0204F346 + cmp r0, #0xb + blt _0204F346 + bne _0204F314 + b _0204F48C +_0204F314: + cmp r0, #0xc + bne _0204F31A + b _0204F4AE +_0204F31A: + add sp, #0xc + pop {r4-r5, pc} +_0204F31E: + ldr r1, _0204F5E0 ; =0x021C5A68 + ldrb r0, [r5, #0x1] + ldr r2, [r1, #0x0] + lsl r1, r0, #0x2 + add r2, r2, r1 + mov r1, #0x29 + lsl r1, r1, #0x4 + ldr r1, [r2, r1] + cmp r1, #0x0 + beq _0204F346 + bl FUN_0204ED9C + ldrb r0, [r5, #0x1] + bl FUN_0204F0A8 + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + beq _0204F348 +_0204F346: + b _0204F5DA +_0204F348: + bl FUN_0204F7E4 + bl FUN_0223D648 + ldr r3, _0204F5E4 ; =FUN_0204E2B4 + mov r1, #0x2 + mov r2, #0x1 + bl FUN_0224DCB8 + mov r0, #0xff + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r1, _0204F5E8 ; =0x00000424 + mov r0, #0x4 + mov r2, #0x3c + str r3, [sp, #0x4] + bl FUN_02004DCC + add sp, #0xc + pop {r4-r5, pc} +_0204F370: + ldrb r0, [r5, #0x1] + bl FUN_0202DFA4 + cmp r0, #0x0 + bne _0204F384 + ldrb r0, [r5, #0x2] + bl FUN_0204ED9C + add sp, #0xc + pop {r4-r5, pc} +_0204F384: + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldrb r0, [r5, #0x2] + lsl r0, r0, #0x2 + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + bne _0204F3AC + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + beq _0204F3A4 + b _0204F5DA +_0204F3A4: + bl FUN_0204F7FC + add sp, #0xc + pop {r4-r5, pc} +_0204F3AC: + ldrb r0, [r5, #0x1] + bl FUN_0202DFA4 + add r1, r0, #0x0 + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r2, [r0, #0x0] + ldrb r0, [r5, #0x2] + lsl r0, r0, #0x2 + add r2, r2, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r2, r0] + bl FUN_02023AA4 + cmp r0, #0x1 + bne _0204F41A + ldrb r0, [r5, #0x2] + bl FUN_0204ED9C + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204F3FC + add r0, r4, #0x0 + bl FUN_02026C00 + bl FUN_0204F7E4 + bl FUN_0223D648 + ldr r3, _0204F5EC ; =FUN_0204E2AC + mov r1, #0xd + mov r2, #0x1 + bl FUN_0224DCB8 + ldr r0, _0204F5F0 ; =0x00000625 + bl FUN_020054C8 + b _0204F410 +_0204F3FC: + bl FUN_02031190 + ldrb r1, [r5, #0x2] + cmp r1, r0 + bne _0204F410 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_0204F23C +_0204F410: + ldrb r0, [r5, #0x1] + bl FUN_022472AC + add sp, #0xc + pop {r4-r5, pc} +_0204F41A: + ldrb r0, [r5, #0x1] + ldrb r1, [r5, #0x2] + bl FUN_0204EF50 + cmp r0, #0x0 + beq _0204F4B8 + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204F46C + add r0, r4, #0x0 + bl FUN_02026970 + mov r0, #0x1 + bl FUN_0204F74C + bl FUN_0223D648 + add r4, r0, #0x0 + ldrb r0, [r5, #0x2] + bl FUN_0202DFA4 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0224DDB8 + bl FUN_0223D648 + ldr r3, _0204F5F4 ; =FUN_0204E2D4 + mov r1, #0xc + mov r2, #0x1 + bl FUN_0224DCB8 + ldr r0, _0204F5F8 ; =0x00000425 + bl FUN_0200521C + ldr r0, _0204F5F0 ; =0x00000625 + bl FUN_020054C8 + b _0204F480 +_0204F46C: + bl FUN_02031190 + ldrb r1, [r5, #0x2] + cmp r1, r0 + bne _0204F480 + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0204F23C +_0204F480: + ldrb r0, [r5, #0x1] + ldrb r1, [r5, #0x2] + bl FUN_02247294 + add sp, #0xc + pop {r4-r5, pc} +_0204F48C: + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204F4B8 + mov r0, #0x2 + bl FUN_0204F74C + bl FUN_0223D648 + ldr r3, _0204F5FC ; =FUN_0204E2BC + mov r1, #0x6 + mov r2, #0x1 + bl FUN_0224DCB8 + add sp, #0xc + pop {r4-r5, pc} +_0204F4AE: + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + beq _0204F4BA +_0204F4B8: + b _0204F5DA +_0204F4BA: + mov r0, #0x20 + bl FUN_0204F74C + bl FUN_0223D648 + ldr r3, _0204F600 ; =FUN_0204E2C8 + mov r1, #0x5 + mov r2, #0x1 + bl FUN_0224DCB8 + add sp, #0xc + pop {r4-r5, pc} +_0204F4D2: + ldr r0, _0204F5E0 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldrb r0, [r5, #0x1] + add r0, r1, r0 + add r0, #0xfa + strb r2, [r0, #0x0] + ldrb r0, [r5, #0x1] + bl FUN_0204F0A8 + bl FUN_02031190 + ldrb r1, [r5, #0x1] + cmp r1, r0 + bne _0204F58C + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_020377AC + bl FUN_02026CB4 + add r4, r0, #0x0 + bl FUN_020269A0 + add r1, sp, #0x8 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_020269D4 + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDF8 + ldr r0, _0204F5E0 ; =0x021C5A68 + ldrb r1, [r5, #0x1] + ldr r0, [r0, #0x0] + lsl r1, r1, #0x2 + add r2, r0, r1 + mov r1, #0x29 + lsl r1, r1, #0x4 + ldr r1, [r2, r1] + cmp r1, #0x0 + beq _0204F54A + ldr r0, [r0, #0x54] + bl FUN_0206189C + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r1, _0204F604 ; =0x0000FFFF + ldr r3, [r0, #0x0] + ldr r0, _0204F608 ; =0x000002B2 + ldrh r2, [r3, r0] + cmp r2, r1 + beq _0204F54A + add r1, r2, #0x1 + strh r1, [r3, r0] +_0204F54A: + bl FUN_0204F7E4 + ldr r0, _0204F60C ; =0x0000062B + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_020269A0 + add r1, sp, #0x8 + ldrb r1, [r1, #0x0] + cmp r1, r0 + bne _0204F572 + bl FUN_0223D648 + ldr r3, _0204F5EC ; =FUN_0204E2AC + mov r1, #0x7 + mov r2, #0x1 + bl FUN_0224DCB8 + b _0204F57A +_0204F572: + mov r0, #0x60 + add r1, sp, #0x8 + bl FUN_020311D0 +_0204F57A: + mov r0, #0xff + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r1, _0204F5E8 ; =0x00000424 + mov r0, #0x4 + mov r2, #0x3c + str r3, [sp, #0x4] + bl FUN_02004DCC +_0204F58C: + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldrb r0, [r5, #0x1] + lsl r0, r0, #0x2 + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204F5D4 + bl FUN_02031190 + bl FUN_0202DFA4 + add r1, r0, #0x0 + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r2, [r0, #0x0] + ldrb r0, [r5, #0x1] + lsl r0, r0, #0x2 + add r2, r2, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r2, r0] + bl FUN_02023AA4 + cmp r0, #0x1 + bne _0204F5D4 + ldrb r0, [r5, #0x1] + bl FUN_0202DFA4 + add r1, r0, #0x0 + ldr r0, _0204F5E0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + bl FUN_020618B8 +_0204F5D4: + ldrb r0, [r5, #0x1] + bl FUN_0204EDEC +_0204F5DA: + add sp, #0xc + pop {r4-r5, pc} + nop +_0204F5E0: .word 0x021C5A68 +_0204F5E4: .word FUN_0204E2B4 +_0204F5E8: .word 0x00000424 +_0204F5EC: .word FUN_0204E2AC +_0204F5F0: .word 0x00000625 +_0204F5F4: .word FUN_0204E2D4 +_0204F5F8: .word 0x00000425 +_0204F5FC: .word FUN_0204E2BC +_0204F600: .word FUN_0204E2C8 +_0204F604: .word 0x0000FFFF +_0204F608: .word 0x000002B2 +_0204F60C: .word 0x0000062B + + thumb_func_start FUN_0204F610 +FUN_0204F610: ; 0x0204F610 + push {r3, lr} + cmp r0, #0x0 + bne _0204F61A + mov r0, #0x1 + pop {r3, pc} +_0204F61A: + cmp r0, #0x1 + bne _0204F622 + mov r0, #0x0 + pop {r3, pc} +_0204F622: + cmp r0, #0x2 + bne _0204F62A + mov r0, #0x3 + pop {r3, pc} +_0204F62A: + cmp r0, #0x3 + bne _0204F632 + mov r0, #0x2 + pop {r3, pc} +_0204F632: + bl ErrorHandling + mov r0, #0x2 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204F63C +FUN_0204F63C: ; 0x0204F63C + push {r3-r4} + ldr r3, _0204F658 ; =0x021C5A68 + ldr r2, [r3, #0x0] + add r4, r2, r0 + ldr r2, _0204F65C ; =0x0000011A + strb r1, [r4, r2] + ldr r1, [r3, #0x0] + mov r4, #0xf + add r0, r1, r0 + add r2, #0x20 + strb r4, [r0, r2] + pop {r3-r4} + bx lr + nop +_0204F658: .word 0x021C5A68 +_0204F65C: .word 0x0000011A + + thumb_func_start FUN_0204F660 +FUN_0204F660: ; 0x0204F660 + ldr r1, _0204F670 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r1, r1, r0 + ldr r0, _0204F674 ; =0x0000011A + strb r2, [r1, r0] + bx lr + nop +_0204F670: .word 0x021C5A68 +_0204F674: .word 0x0000011A + + thumb_func_start FUN_0204F678 +FUN_0204F678: ; 0x0204F678 + push {r3-r4} + ldr r3, _0204F694 ; =0x021C5A68 + ldr r2, [r3, #0x0] + add r4, r2, r0 + ldr r2, _0204F698 ; =0x00000122 + strb r1, [r4, r2] + ldr r1, [r3, #0x0] + mov r4, #0xf + add r0, r1, r0 + add r2, #0x18 + strb r4, [r0, r2] + pop {r3-r4} + bx lr + nop +_0204F694: .word 0x021C5A68 +_0204F698: .word 0x00000122 + + thumb_func_start FUN_0204F69C +FUN_0204F69C: ; 0x0204F69C + ldr r1, _0204F6AC ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r1, r1, r0 + ldr r0, _0204F6B0 ; =0x00000122 + strb r2, [r1, r0] + bx lr + nop +_0204F6AC: .word 0x021C5A68 +_0204F6B0: .word 0x00000122 + + thumb_func_start FUN_0204F6B4 +FUN_0204F6B4: ; 0x0204F6B4 + ldr r1, _0204F6C0 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r0 + ldr r0, _0204F6C4 ; =0x00000142 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_0204F6C0: .word 0x021C5A68 +_0204F6C4: .word 0x00000142 + + thumb_func_start FUN_0204F6C8 +FUN_0204F6C8: ; 0x0204F6C8 + ldr r1, _0204F6D4 ; =0x021C5A68 + ldr r1, [r1, #0x0] + add r1, r1, r0 + ldr r0, _0204F6D8 ; =0x0000013A + ldrb r0, [r1, r0] + bx lr + .balign 4 +_0204F6D4: .word 0x021C5A68 +_0204F6D8: .word 0x0000013A + + thumb_func_start FUN_0204F6DC +FUN_0204F6DC: ; 0x0204F6DC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0204F708 ; =0x021C5A68 + add r1, r4, #0x0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x54] + ldr r0, [r0, #0x38] + bl FUN_02055304 + bl FUN_02031190 + ldr r1, _0204F708 ; =0x021C5A68 + lsl r0, r0, #0x3 + ldr r1, [r1, #0x0] + add r0, r1, r0 + add r0, #0xa6 + strb r4, [r0, #0x0] + mov r0, #0x0 + bl FUN_0204D168 + pop {r4, pc} + nop +_0204F708: .word 0x021C5A68 + + thumb_func_start FUN_0204F70C +FUN_0204F70C: ; 0x0204F70C + push {r4, lr} + ldr r3, _0204F728 ; =0x021C5A68 + lsl r2, r0, #0x3 + ldr r4, [r3, #0x0] + lsl r0, r0, #0x2 + add r2, r4, r2 + add r2, #0xa6 + strb r1, [r2, #0x0] + ldr r2, [r3, #0x0] + add r0, r2, r0 + ldr r0, [r0, #0x8] + bl FUN_02055304 + pop {r4, pc} + .balign 4 +_0204F728: .word 0x021C5A68 + + thumb_func_start FUN_0204F72C +FUN_0204F72C: ; 0x0204F72C + push {r3, lr} + ldr r1, _0204F748 ; =0x021C5A68 + lsl r0, r0, #0x2 + ldr r1, [r1, #0x0] + add r0, r1, r0 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204F742 + bl FUN_020552F8 + pop {r3, pc} +_0204F742: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + .balign 4 +_0204F748: .word 0x021C5A68 + + thumb_func_start FUN_0204F74C +FUN_0204F74C: ; 0x0204F74C + push {r3, lr} + cmp r0, #0x0 + beq _0204F75C + ldr r1, _0204F770 ; =0x021C5A68 + ldr r2, [r1, #0x0] + ldr r1, [r2, #0x0] + orr r0, r1 + str r0, [r2, #0x0] +_0204F75C: + bl FUN_02037760 + ldr r0, _0204F770 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + mov r0, #0xaf + lsl r0, r0, #0x2 + strb r2, [r1, r0] + pop {r3, pc} + nop +_0204F770: .word 0x021C5A68 + + thumb_func_start FUN_0204F774 +FUN_0204F774: ; 0x0204F774 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + beq _0204F788 + ldr r0, _0204F7D0 ; =0x021C5A68 + ldr r2, [r0, #0x0] + mvn r0, r4 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] +_0204F788: + ldr r0, _0204F7D0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x10 + bne _0204F7A0 + mov r1, #0x1 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + mov r0, #0x3e + add r1, sp, #0x0 + bl FUN_020311D0 +_0204F7A0: + ldr r0, _0204F7D0 ; =0x021C5A68 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0204F7CC + cmp r4, #0x10 + beq _0204F7BC + bl FUN_02037778 + mov r0, #0x1 + bl FUN_0204D628 + add sp, #0x4 + pop {r3-r4, pc} +_0204F7BC: + bl FUN_02037778 + ldr r0, _0204F7D0 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + mov r0, #0xaf + lsl r0, r0, #0x2 + strb r2, [r1, r0] +_0204F7CC: + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0204F7D0: .word 0x021C5A68 + + thumb_func_start FUN_0204F7D4 +FUN_0204F7D4: ; 0x0204F7D4 + ldr r0, _0204F7E0 ; =0x021C5A68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x0] + bx lr + nop +_0204F7E0: .word 0x021C5A68 + + thumb_func_start FUN_0204F7E4 +FUN_0204F7E4: ; 0x0204F7E4 + push {r3, lr} + bl FUN_02037760 + ldr r0, _0204F7F8 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + mov r0, #0xaf + lsl r0, r0, #0x2 + strb r2, [r1, r0] + pop {r3, pc} + .balign 4 +_0204F7F8: .word 0x021C5A68 + + thumb_func_start FUN_0204F7FC +FUN_0204F7FC: ; 0x0204F7FC + push {r3, lr} + bl FUN_02037778 + mov r0, #0x1 + bl FUN_0204D628 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0204F80C +FUN_0204F80C: ; 0x0204F80C + push {r3, lr} + ldr r0, _0204F850 ; =0x021C5A68 + ldr r2, [r0, #0x0] + ldr r0, _0204F854 ; =0x000002BF + ldrb r1, [r2, r0] + cmp r1, #0x0 + bne _0204F84C + sub r0, r0, #0x1 + ldrb r0, [r2, r0] + cmp r0, #0x0 + bne _0204F832 + bl FUN_0204F7FC + ldr r0, _0204F850 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204F854 ; =0x000002BF + strb r2, [r1, r0] + pop {r3, pc} +_0204F832: + bl FUN_02031190 + bl FUN_0223E734 + cmp r0, #0x0 + beq _0204F84C + bl FUN_0204F7FC + ldr r0, _0204F850 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204F854 ; =0x000002BF + strb r2, [r1, r0] +_0204F84C: + pop {r3, pc} + nop +_0204F850: .word 0x021C5A68 +_0204F854: .word 0x000002BF + + thumb_func_start FUN_0204F858 +FUN_0204F858: ; 0x0204F858 + push {r3, lr} + ldr r0, _0204F884 ; =0x021C5A68 + ldr r2, [r0, #0x0] + ldr r0, _0204F888 ; =0x000002BF + ldrb r1, [r2, r0] + cmp r1, #0x0 + bne _0204F880 + sub r0, r0, #0x1 + ldrb r0, [r2, r0] + cmp r0, #0x0 + beq _0204F880 + bl FUN_02031190 + bl FUN_0223E734 + cmp r0, #0x0 + bne _0204F880 + mov r0, #0x0 + bl FUN_0204D628 +_0204F880: + pop {r3, pc} + nop +_0204F884: .word 0x021C5A68 +_0204F888: .word 0x000002BF + + thumb_func_start FUN_0204F88C +FUN_0204F88C: ; 0x0204F88C + push {r3-r7, lr} + sub sp, #0x10 + ldr r0, _0204F908 ; =0x021C5A68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204F902 + mov r6, #0x0 + add r4, r6, #0x0 + add r5, r6, #0x0 +_0204F89E: + ldr r0, _0204F908 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0204F8F8 + bl FUN_02031190 + cmp r6, r0 + beq _0204F8F8 + ldr r0, _0204F908 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r0, r0, r4 + ldr r0, [r0, #0x8] + bl FUN_020553A0 + ldr r1, _0204F908 ; =0x021C5A68 + str r0, [sp, #0xc] + ldr r1, [r1, #0x0] + add r1, r1, r5 + add r2, r1, #0x0 + add r2, #0xa2 + ldrh r2, [r2, #0x0] + str r2, [sp, #0x8] + add r2, r1, #0x0 + add r2, #0xa4 + ldrh r7, [r2, #0x0] + mov r2, #0xa6 + ldrsb r1, [r1, r2] + str r1, [sp, #0x4] + ldr r1, [sp, #0x8] + bl FUN_02058B30 + ldr r0, [sp, #0xc] + add r1, r7, #0x0 + bl FUN_02058B50 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + mov r2, #0x0 + add r3, r7, #0x0 + bl FUN_02058E28 +_0204F8F8: + add r6, r6, #0x1 + add r4, r4, #0x4 + add r5, #0x8 + cmp r6, #0x8 + blt _0204F89E +_0204F902: + add sp, #0x10 + pop {r3-r7, pc} + nop +_0204F908: .word 0x021C5A68 + + thumb_func_start FUN_0204F90C +FUN_0204F90C: ; 0x0204F90C + push {r4-r5} + mov r3, #0xff + mov r4, #0x0 + add r0, r3, #0x0 + ldr r1, _0204F92C ; =0x021C5A68 + add r5, r4, #0x0 + add r0, #0x6b +_0204F91A: + ldr r2, [r1, #0x0] + add r4, r4, #0x1 + add r2, r2, r5 + add r5, #0x22 + strh r3, [r2, r0] + cmp r4, #0x8 + blt _0204F91A + pop {r4-r5} + bx lr + .balign 4 +_0204F92C: .word 0x021C5A68 + + thumb_func_start FUN_0204F930 +FUN_0204F930: ; 0x0204F930 + push {r3-r5, lr} + ldr r0, _0204F9B0 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0204F9B4 ; =0x000002B9 + strb r2, [r1, r0] + bl FUN_02031190 + ldr r1, _0204F9B0 ; =0x021C5A68 + lsl r0, r0, #0x2 + ldr r1, [r1, #0x0] + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204F96E + bl FUN_02031190 + ldr r1, _0204F9B0 ; =0x021C5A68 + add r3, r0, #0x0 + ldr r2, [r1, #0x0] + lsl r1, r3, #0x2 + add r2, r2, r1 + mov r1, #0x29 + lsl r1, r1, #0x4 + ldr r1, [r2, r1] + mov r0, #0x5b + bl FUN_020311D0 + pop {r3-r5, pc} +_0204F96E: + mov r0, #0xf + bl FUN_02023928 + add r4, r0, #0x0 + mov r0, #0x14 + mov r1, #0xf + bl FUN_020219F4 + add r5, r0, #0x0 + cmp r4, #0x0 + bne _0204F988 + bl ErrorHandling +_0204F988: + cmp r5, #0x0 + bne _0204F990 + bl ErrorHandling +_0204F990: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0202397C + mov r0, #0x5b + add r1, r4, #0x0 + bl FUN_020311D0 + add r0, r5, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + nop +_0204F9B0: .word 0x021C5A68 +_0204F9B4: .word 0x000002B9 + + thumb_func_start FUN_0204F9B8 +FUN_0204F9B8: ; 0x0204F9B8 + mov r0, #0x20 + bx lr + + thumb_func_start FUN_0204F9BC +FUN_0204F9BC: ; 0x0204F9BC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, sp, #0x4 + strb r5, [r0, #0x0] + ldr r0, _0204FA54 ; =0x021C5A68 + add r6, r2, #0x0 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0204FA4C + ldr r1, _0204FA58 ; =0x0000014A + mov r0, #0x22 + add r4, r5, #0x0 + mul r4, r0 + add r1, r2, r1 + add r0, r6, #0x0 + add r1, r1, r4 + bl FUN_0202393C + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_020239A0 + str r0, [sp, #0x0] + bl FUN_02021D3C + cmp r0, #0x0 + beq _0204F9FE + ldr r0, _0204FA54 ; =0x021C5A68 + ldr r0, [r0, #0x0] + add r1, r0, r4 + ldr r0, _0204FA5C ; =0x0000016A + strh r5, [r1, r0] +_0204F9FE: + mov r4, #0x0 + ldr r6, _0204FA54 ; =0x021C5A68 + ldr r7, _0204FA5C ; =0x0000016A + add r5, r4, #0x0 +_0204FA06: + ldr r0, [r6, #0x0] + add r1, r0, r5 + ldrh r0, [r1, r7] + cmp r0, #0xff + beq _0204FA26 + ldr r0, _0204FA5C ; =0x0000016A + strh r4, [r1, r0] + mov r0, #0x5c + add r1, r0, #0x0 + ldr r2, [r6, #0x0] + add r1, #0xee + add r1, r2, r1 + add r1, r1, r5 + mov r2, #0x22 + bl FUN_02030B3C +_0204FA26: + add r4, r4, #0x1 + add r5, #0x22 + cmp r4, #0x8 + blt _0204FA06 + mov r0, #0x5d + add r1, sp, #0x4 + mov r2, #0x1 + bl FUN_02030BC4 + ldr r0, [sp, #0x0] + bl FUN_02021A20 + ldr r0, _0204FA54 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204FA60 ; =0x000002C2 + add sp, #0x8 + strb r2, [r1, r0] + pop {r3-r7, pc} +_0204FA4C: + bl ErrorHandling + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0204FA54: .word 0x021C5A68 +_0204FA58: .word 0x0000014A +_0204FA5C: .word 0x0000016A +_0204FA60: .word 0x000002C2 + + thumb_func_start FUN_0204FA64 +FUN_0204FA64: ; 0x0204FA64 + ldr r0, _0204FA70 ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204FA74 ; =0x0000025A + add r0, r1, r0 + bx lr + nop +_0204FA70: .word 0x021C5A68 +_0204FA74: .word 0x0000025A + + thumb_func_start FUN_0204FA78 +FUN_0204FA78: ; 0x0204FA78 + push {r4-r6, lr} + ldr r0, _0204FAC8 ; =0x021C5A68 + add r6, r2, #0x0 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0204FAC4 + ldrh r5, [r6, #0x20] + lsl r0, r5, #0x2 + add r1, r1, r0 + mov r0, #0x29 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + cmp r0, #0x0 + beq _0204FA98 + bl FUN_02016A18 +_0204FA98: + mov r0, #0xf + lsl r4, r5, #0x2 + bl FUN_02023928 + ldr r2, _0204FAC8 ; =0x021C5A68 + ldr r1, [r2, #0x0] + add r3, r1, r4 + mov r1, #0x29 + lsl r1, r1, #0x4 + str r0, [r3, r1] + ldr r2, [r2, #0x0] + add r0, r6, #0x0 + add r2, r2, r4 + ldr r1, [r2, r1] + bl FUN_0202393C + ldr r0, _0204FAC8 ; =0x021C5A68 + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, r0, r5 + add r0, #0xfa + strb r1, [r0, #0x0] +_0204FAC4: + pop {r4-r6, pc} + nop +_0204FAC8: .word 0x021C5A68 + + thumb_func_start FUN_0204FACC +FUN_0204FACC: ; 0x0204FACC + mov r0, #0x22 + bx lr + + thumb_func_start FUN_0204FAD0 +FUN_0204FAD0: ; 0x0204FAD0 + push {r4, lr} + add r4, r2, #0x0 + bl FUN_02031190 + ldrb r1, [r4, #0x0] + cmp r1, r0 + bne _0204FAE8 + ldr r0, _0204FAF4 ; =0x021C5A68 + mov r2, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _0204FAF8 ; =0x000002B9 + strb r2, [r1, r0] +_0204FAE8: + ldr r0, _0204FAF4 ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0204FAFC ; =0x000002C2 + strb r2, [r1, r0] + pop {r4, pc} + .balign 4 +_0204FAF4: .word 0x021C5A68 +_0204FAF8: .word 0x000002B9 +_0204FAFC: .word 0x000002C2 + + thumb_func_start FUN_0204FB00 +FUN_0204FB00: ; 0x0204FB00 + ldr r0, _0204FB0C ; =0x021C5A68 + ldr r1, [r0, #0x0] + ldr r0, _0204FB10 ; =0x000002B9 + ldrb r0, [r1, r0] + bx lr + nop +_0204FB0C: .word 0x021C5A68 +_0204FB10: .word 0x000002B9 + + thumb_func_start FUN_0204FB14 +FUN_0204FB14: ; 0x0204FB14 + ldr r0, _0204FB24 ; =0x021C5A68 + mov r2, #0x8 + ldr r1, [r0, #0x0] + mov r0, #0xb + lsl r0, r0, #0x6 + strb r2, [r1, r0] + bx lr + nop +_0204FB24: .word 0x021C5A68 + + thumb_func_start FUN_0204FB28 +FUN_0204FB28: ; 0x0204FB28 + push {r3-r5, lr} + mov r4, #0x0 + bl FUN_02031190 + ldr r2, _0204FB9C ; =0x021C5A68 + lsl r1, r0, #0x2 + ldr r3, [r2, #0x0] + add r5, r3, r1 + mov r1, #0x29 + lsl r1, r1, #0x4 + ldr r3, [r5, r1] + cmp r3, #0x0 + beq _0204FB60 + add r4, r3, #0x0 + mov r3, #0x0 + str r3, [r5, r1] + ldr r1, [r2, #0x0] + add r1, r1, r0 + add r1, #0xfa + strb r3, [r1, #0x0] + ldr r3, [r2, #0x0] + mov r2, #0x22 + mul r2, r0 + mov r1, #0xff + add r0, r1, #0x0 + add r2, r3, r2 + add r0, #0x6b + strh r1, [r2, r0] +_0204FB60: + mov r5, #0x0 +_0204FB62: + add r0, r5, #0x0 + bl FUN_0204ED9C + add r5, r5, #0x1 + cmp r5, #0x8 + blt _0204FB62 + cmp r4, #0x0 + beq _0204FB9A + ldr r1, _0204FB9C ; =0x021C5A68 + mov r0, #0x29 + ldr r2, [r1, #0x0] + lsl r0, r0, #0x4 + str r4, [r2, r0] + ldr r0, [r1, #0x0] + mov r2, #0x1 + add r0, #0xfa + strb r2, [r0, #0x0] + ldr r2, [r1, #0x0] + ldr r1, _0204FBA0 ; =0x0000014A + add r0, r4, #0x0 + add r1, r2, r1 + bl FUN_0202393C + ldr r0, _0204FB9C ; =0x021C5A68 + mov r2, #0x0 + ldr r1, [r0, #0x0] + ldr r0, _0204FBA4 ; =0x0000016A + strh r2, [r1, r0] +_0204FB9A: + pop {r3-r5, pc} + .balign 4 +_0204FB9C: .word 0x021C5A68 +_0204FBA0: .word 0x0000014A +_0204FBA4: .word 0x0000016A + + thumb_func_start FUN_0204FBA8 +FUN_0204FBA8: ; 0x0204FBA8 + bx lr + .balign 4 + + thumb_func_start FUN_0204FBAC +FUN_0204FBAC: ; 0x0204FBAC + bx lr + .balign 4 + + thumb_func_start FUN_0204FBB0 +FUN_0204FBB0: ; 0x0204FBB0 + push {r4, lr} + ldr r1, _0204FC08 ; =0x021C5A6C + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _0204FC04 + bl FUN_0208881C + mov r0, #0xf + mov r1, #0x48 + bl FUN_02016998 + ldr r1, _0204FC08 ; =0x021C5A6C + mov r2, #0x48 + str r0, [r1, #0x0] + mov r1, #0x0 + blx MI_CpuFill8 + ldr r0, _0204FC08 ; =0x021C5A6C + mov r1, #0x32 + ldr r0, [r0, #0x0] + mov r2, #0xa + strh r1, [r0, #0x3c] + ldr r0, _0204FC0C ; =FUN_0205006C + mov r1, #0x0 + bl FUN_0200CA44 + ldr r1, _0204FC08 ; =0x021C5A6C + ldr r2, [r1, #0x0] + str r0, [r2, #0x38] + ldr r0, [r1, #0x0] + mov r2, #0x0 + str r4, [r0, #0x18] + ldr r0, [r1, #0x0] + str r2, [r0, #0x44] + bl FUN_0204FBA8 + ldr r0, _0204FC08 ; =0x021C5A6C + ldr r0, [r0, #0x0] + add r0, #0x1c + bl FUN_020312BC +_0204FC04: + pop {r4, pc} + nop +_0204FC08: .word 0x021C5A6C +_0204FC0C: .word FUN_0205006C + + thumb_func_start FUN_0204FC10 +FUN_0204FC10: ; 0x0204FC10 + push {r4-r6, lr} + ldr r0, _0204FC58 ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204FC56 + ldr r0, [r0, #0x38] + bl FUN_0200CAB4 + mov r4, #0x0 + ldr r6, _0204FC58 ; =0x021C5A6C + add r5, r4, #0x0 +_0204FC26: + ldr r0, [r6, #0x0] + ldr r0, [r0, r5] + cmp r0, #0x0 + beq _0204FC32 + bl FUN_02016A18 +_0204FC32: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _0204FC26 + ldr r0, _0204FC58 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x44] + cmp r0, #0x0 + beq _0204FC48 + bl FUN_02016A18 +_0204FC48: + ldr r0, _0204FC58 ; =0x021C5A6C + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, _0204FC58 ; =0x021C5A6C + mov r1, #0x0 + str r1, [r0, #0x0] +_0204FC56: + pop {r4-r6, pc} + .balign 4 +_0204FC58: .word 0x021C5A6C + + thumb_func_start FUN_0204FC5C +FUN_0204FC5C: ; 0x0204FC5C + push {r4, lr} + ldr r1, _0204FC9C ; =0x021C5A6C + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _0204FC9A + bl FUN_020377AC + bl FUN_02031824 + add r0, r4, #0x0 + bl FUN_0204FBB0 + mov r2, #0x3a + mov r0, #0x3 + mov r1, #0x21 + lsl r2, r2, #0xa + bl FUN_0201681C + ldr r0, _0204FC9C ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F194 + cmp r0, #0x0 + bne _0204FC9A + bl FUN_02031924 +_0204FC9A: + pop {r4, pc} + .balign 4 +_0204FC9C: .word 0x021C5A6C + + thumb_func_start FUN_0204FCA0 +FUN_0204FCA0: ; 0x0204FCA0 + push {r3, lr} + ldr r0, _0204FCD0 ; =0x021C5A6C + mov r2, #0x1 + ldr r1, [r0, #0x0] + add r1, #0x41 + strb r2, [r1, #0x0] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x24 + bl FUN_0202A170 + ldr r0, _0204FCD0 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + bl FUN_0223E060 + ldr r0, _0204FCD4 ; =FUN_020500A4 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0204FCD0: .word 0x021C5A6C +_0204FCD4: .word FUN_020500A4 + + thumb_func_start FUN_0204FCD8 +FUN_0204FCD8: ; 0x0204FCD8 + push {r3, lr} + ldr r0, _0204FCEC ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0204FCEA + ldr r0, _0204FCF0 ; =FUN_02050D54 + mov r1, #0x3 + bl FUN_02050094 +_0204FCEA: + pop {r3, pc} + .balign 4 +_0204FCEC: .word 0x021C5A6C +_0204FCF0: .word FUN_02050D54 + + thumb_func_start FUN_0204FCF4 +FUN_0204FCF4: ; 0x0204FCF4 + push {r3, lr} + bl FUN_02031914 + ldr r0, _0204FD04 ; =FUN_020504D8 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0204FD04: .word FUN_020504D8 + + thumb_func_start FUN_0204FD08 +FUN_0204FD08: ; 0x0204FD08 + push {r3, lr} + bl FUN_0202EDD8 + cmp r0, #0x0 + bne _0204FD1E + bl FUN_02245F1C + ldr r0, _0204FD20 ; =FUN_020500A4 + mov r1, #0x0 + bl FUN_02050094 +_0204FD1E: + pop {r3, pc} + .balign 4 +_0204FD20: .word FUN_020500A4 + + thumb_func_start FUN_0204FD24 +FUN_0204FD24: ; 0x0204FD24 + push {r3, lr} + bl FUN_02031934 + ldr r0, _0204FD34 ; =FUN_0204FD08 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0204FD34: .word FUN_0204FD08 + + thumb_func_start FUN_0204FD38 +FUN_0204FD38: ; 0x0204FD38 + push {r3-r7, lr} + sub sp, #0x10 + ldr r0, _0204FDBC ; =0x021C5A6C + add r2, sp, #0x0 + ldr r0, [r0, #0x0] + ldr r3, _0204FDC0 ; =0x020F5838 + ldr r5, [r0, #0x34] + add r6, r2, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, _0204FDC4 ; =FUN_020502AC + ldr r4, _0204FDC8 ; =FUN_02050548 + ldr r7, _0204FDCC ; =FUN_02050168 + cmp r5, r0 + bne _0204FD68 + ldr r0, _0204FDD0 ; =FUN_0205031C + mov r1, #0x0 + bl FUN_02050094 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204FD68: + cmp r4, r5 + bne _0204FD7A + ldr r0, _0204FDD4 ; =FUN_02050578 + mov r1, #0x0 + bl FUN_02050094 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204FD7A: + cmp r7, r5 + bne _0204FD8C + ldr r0, _0204FDD8 ; =FUN_020505E0 + mov r1, #0x0 + bl FUN_02050094 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204FD8C: + ldr r0, _0204FDDC ; =FUN_020504D0 + cmp r0, r5 + bne _0204FDA0 + ldr r0, _0204FDE0 ; =FUN_02050610 + mov r1, #0x0 + bl FUN_02050094 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204FDA0: + mov r1, #0x0 +_0204FDA2: + ldr r0, [r6, #0x0] + cmp r5, r0 + bne _0204FDAE + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0204FDAE: + add r1, r1, #0x1 + add r6, r6, #0x4 + cmp r1, #0x4 + blo _0204FDA2 + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0204FDBC: .word 0x021C5A6C +_0204FDC0: .word 0x020F5838 +_0204FDC4: .word FUN_020502AC +_0204FDC8: .word FUN_02050548 +_0204FDCC: .word FUN_02050168 +_0204FDD0: .word FUN_0205031C +_0204FDD4: .word FUN_02050578 +_0204FDD8: .word FUN_020505E0 +_0204FDDC: .word FUN_020504D0 +_0204FDE0: .word FUN_02050610 + + thumb_func_start FUN_0204FDE4 +FUN_0204FDE4: ; 0x0204FDE4 + push {r4, lr} + ldr r0, _0204FE38 ; =0x021C5A6C + ldr r3, _0204FE3C ; =FUN_0205058C + ldr r0, [r0, #0x0] + ldr r2, _0204FE40 ; =FUN_020505F4 + ldr r4, [r0, #0x34] + ldr r0, _0204FE44 ; =FUN_02050330 + ldr r1, _0204FE48 ; =FUN_02050624 + cmp r4, r0 + bne _0204FE04 + ldr r0, _0204FE4C ; =FUN_02050338 + mov r1, #0x0 + bl FUN_02050094 + mov r0, #0x1 + pop {r4, pc} +_0204FE04: + cmp r3, r4 + bne _0204FE14 + ldr r0, _0204FE50 ; =FUN_02050594 + mov r1, #0x0 + bl FUN_02050094 + mov r0, #0x1 + pop {r4, pc} +_0204FE14: + cmp r2, r4 + bne _0204FE24 + ldr r0, _0204FE54 ; =FUN_020505F8 + mov r1, #0x0 + bl FUN_02050094 + mov r0, #0x1 + pop {r4, pc} +_0204FE24: + cmp r1, r4 + bne _0204FE34 + ldr r0, _0204FE58 ; =FUN_02050628 + mov r1, #0x0 + bl FUN_02050094 + mov r0, #0x1 + pop {r4, pc} +_0204FE34: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0204FE38: .word 0x021C5A6C +_0204FE3C: .word FUN_0205058C +_0204FE40: .word FUN_020505F4 +_0204FE44: .word FUN_02050330 +_0204FE48: .word FUN_02050624 +_0204FE4C: .word FUN_02050338 +_0204FE50: .word FUN_02050594 +_0204FE54: .word FUN_020505F8 +_0204FE58: .word FUN_02050628 + + thumb_func_start FUN_0204FE5C +FUN_0204FE5C: ; 0x0204FE5C + push {r3-r4} + sub sp, #0x38 + ldr r4, _0204FEA8 ; =0x020F5848 + add r3, sp, #0x0 + mov r2, #0x7 +_0204FE66: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0204FE66 + ldr r0, _0204FEAC ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x34] + cmp r0, #0x0 + bne _0204FE80 + add sp, #0x38 + mov r0, #0x0 + pop {r3-r4} + bx lr +_0204FE80: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _0204FE9E + add r2, sp, #0x0 +_0204FE88: + ldr r0, [r2, #0x0] + cmp r1, r0 + bne _0204FE96 + add sp, #0x38 + mov r0, #0x1 + pop {r3-r4} + bx lr +_0204FE96: + add r2, r2, #0x4 + ldr r0, [r2, #0x0] + cmp r0, #0x0 + bne _0204FE88 +_0204FE9E: + mov r0, #0x0 + add sp, #0x38 + pop {r3-r4} + bx lr + nop +_0204FEA8: .word 0x020F5848 +_0204FEAC: .word 0x021C5A6C + + thumb_func_start FUN_0204FEB0 +FUN_0204FEB0: ; 0x0204FEB0 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _0204FEE8 + add r0, r5, #0x0 + bl FUN_020377AC + mov r1, #0x0 + add r3, r5, #0x0 + str r1, [sp, #0x0] + add r3, #0xac + ldr r3, [r3, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02031948 + add r0, r5, #0x0 + bl FUN_0204FBB0 + ldr r0, _0204FEEC ; =FUN_02050640 + mov r1, #0x0 + bl FUN_02050094 +_0204FEE8: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_0204FEEC: .word FUN_02050640 + + thumb_func_start FUN_0204FEF0 +FUN_0204FEF0: ; 0x0204FEF0 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _0204FF28 + add r0, r5, #0x0 + bl FUN_020377AC + mov r1, #0x0 + add r3, r5, #0x0 + str r1, [sp, #0x0] + add r3, #0xac + ldr r3, [r3, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02031990 + add r0, r5, #0x0 + bl FUN_0204FBB0 + ldr r0, _0204FF2C ; =FUN_02050668 + mov r1, #0x0 + bl FUN_02050094 +_0204FF28: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_0204FF2C: .word FUN_02050668 + + thumb_func_start FUN_0204FF30 +FUN_0204FF30: ; 0x0204FF30 + ldr r1, _0204FF40 ; =0x021C5A6C + ldr r3, _0204FF44 ; =FUN_02050094 + ldr r1, [r1, #0x0] + add r1, #0x3e + strb r0, [r1, #0x0] + ldr r0, _0204FF48 ; =FUN_02050688 + mov r1, #0x0 + bx r3 + .balign 4 +_0204FF40: .word 0x021C5A6C +_0204FF44: .word FUN_02050094 +_0204FF48: .word FUN_02050688 + + thumb_func_start FUN_0204FF4C +FUN_0204FF4C: ; 0x0204FF4C + ldr r3, _0204FF54 ; =FUN_02050094 + ldr r0, _0204FF58 ; =FUN_02050BBC + mov r1, #0x0 + bx r3 + .balign 4 +_0204FF54: .word FUN_02050094 +_0204FF58: .word FUN_02050BBC + + thumb_func_start FUN_0204FF5C +FUN_0204FF5C: ; 0x0204FF5C + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3BC + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3BC + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_020334E8 + bl FUN_02031810 + cmp r0, #0x0 + beq _02050014 + ldr r0, _02050018 ; =0x021C5A6C + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _0204FF9C + add r0, r4, #0x0 + bl FUN_0204FBB0 + ldr r0, _02050018 ; =0x021C5A6C + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x42 + strb r1, [r0, #0x0] + b _0204FFA2 +_0204FF9C: + mov r0, #0x0 + add r1, #0x42 + strb r0, [r1, #0x0] +_0204FFA2: + ldr r0, _02050018 ; =0x021C5A6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] + bl FUN_02031190 + str r0, [sp, #0x8] + bl FUN_02031190 + bl FUN_0202DFA4 + mov r4, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _0204FFEA + ldr r6, _02050018 ; =0x021C5A6C + add r5, r4, #0x0 + add r7, r4, #0x0 +_0204FFCA: + ldr r0, [r6, #0x0] + ldr r0, [r0, r5] + cmp r0, #0x0 + bne _0204FFDE + ldr r1, _0205001C ; =0x0000066C + add r0, r7, #0x0 + bl FUN_02016998 + ldr r1, [r6, #0x0] + str r0, [r1, r5] +_0204FFDE: + add r5, r5, #0x4 + add r4, r4, #0x1 + bl FUN_02030F20 + cmp r4, r0 + blt _0204FFCA +_0204FFEA: + ldr r0, _02050018 ; =0x021C5A6C + mov r3, #0xff + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x18] + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + str r0, [sp, #0x4] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_02064E90 + mov r0, #0x5f + bl FUN_02031588 + ldr r0, _02050020 ; =FUN_02050C14 + mov r1, #0x0 + bl FUN_02050094 +_02050014: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02050018: .word 0x021C5A6C +_0205001C: .word 0x0000066C +_02050020: .word FUN_02050C14 + + thumb_func_start FUN_02050024 +FUN_02050024: ; 0x02050024 + push {r3, lr} + ldr r0, _02050040 ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0205003E + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_020334E8 + ldr r0, _02050044 ; =FUN_02050DB0 + mov r1, #0x5 + bl FUN_02050094 +_0205003E: + pop {r3, pc} + .balign 4 +_02050040: .word 0x021C5A6C +_02050044: .word FUN_02050DB0 + + thumb_func_start FUN_02050048 +FUN_02050048: ; 0x02050048 + push {r3, lr} + ldr r0, _02050064 ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050060 + mov r0, #0x5b + bl FUN_02031588 + ldr r0, _02050068 ; =FUN_02050D88 + mov r1, #0x5 + bl FUN_02050094 +_02050060: + pop {r3, pc} + nop +_02050064: .word 0x021C5A6C +_02050068: .word FUN_02050D88 + + thumb_func_start FUN_0205006C +FUN_0205006C: ; 0x0205006C + push {r3, lr} + ldr r1, _02050090 ; =0x021C5A6C + ldr r2, [r1, #0x0] + cmp r2, #0x0 + bne _0205007C + bl FUN_0200CAB4 + pop {r3, pc} +_0205007C: + ldr r1, [r2, #0x34] + cmp r1, #0x0 + beq _0205008C + add r2, #0x40 + ldrb r0, [r2, #0x0] + cmp r0, #0x0 + bne _0205008C + blx r1 +_0205008C: + pop {r3, pc} + nop +_02050090: .word 0x021C5A6C + + thumb_func_start FUN_02050094 +FUN_02050094: ; 0x02050094 + ldr r2, _020500A0 ; =0x021C5A6C + ldr r3, [r2, #0x0] + str r0, [r3, #0x34] + ldr r0, [r2, #0x0] + strh r1, [r0, #0x3c] + bx lr + .balign 4 +_020500A0: .word 0x021C5A6C + + thumb_func_start FUN_020500A4 +FUN_020500A4: ; 0x020500A4 + push {r3, lr} + ldr r0, _02050108 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _020500B6 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_020500B6: + bl FUN_02030F40 + cmp r0, #0x0 + beq _02050104 + ldr r0, _02050108 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + bl FUN_0223E1E0 + bl FUN_0202DBE0 + mov r0, #0x0 + bl FUN_0204D168 + bl FUN_0223EF7C + bl FUN_02245FA0 + ldr r0, _02050108 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F194 + cmp r0, #0x0 + bne _020500F8 + ldr r0, _0205010C ; =FUN_02050114 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_020500F8: + bl FUN_0204F80C + ldr r0, _02050110 ; =FUN_02050144 + mov r1, #0x18 + bl FUN_02050094 +_02050104: + pop {r3, pc} + nop +_02050108: .word 0x021C5A6C +_0205010C: .word FUN_02050114 +_02050110: .word FUN_02050144 + + thumb_func_start FUN_02050114 +FUN_02050114: ; 0x02050114 + push {r3, lr} + ldr r0, _0205013C ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F194 + cmp r0, #0x0 + beq _0205013A + bl FUN_02031880 + bl FUN_0204F80C + ldr r0, _02050140 ; =FUN_02050168 + mov r1, #0x18 + bl FUN_02050094 +_0205013A: + pop {r3, pc} + .balign 4 +_0205013C: .word 0x021C5A6C +_02050140: .word FUN_02050168 + + thumb_func_start FUN_02050144 +FUN_02050144: ; 0x02050144 + push {r3, lr} + ldr r0, _02050160 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050156 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050156: + ldr r0, _02050164 ; =FUN_02050168 + mov r1, #0x18 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050160: .word 0x021C5A6C +_02050164: .word FUN_02050168 + + thumb_func_start FUN_02050168 +FUN_02050168: ; 0x02050168 + push {r3, lr} + bl FUN_0223DFB4 + bl FUN_0204F80C + bl FUN_020318C4 + cmp r0, #0x0 + beq _02050198 + bl FUN_02031190 + cmp r0, #0x0 + bne _02050190 + bl FUN_02245324 + ldr r0, _0205019C ; =FUN_0205024C + mov r1, #0x3c + bl FUN_02050094 + pop {r3, pc} +_02050190: + ldr r0, _020501A0 ; =FUN_020501A4 + mov r1, #0x78 + bl FUN_02050094 +_02050198: + pop {r3, pc} + nop +_0205019C: .word FUN_0205024C +_020501A0: .word FUN_020501A4 + + thumb_func_start FUN_020501A4 +FUN_020501A4: ; 0x020501A4 + push {r3, lr} + ldr r0, _02050240 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _020501B4 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] +_020501B4: + bl FUN_0202EE44 + cmp r0, #0x0 + bne _020501CE + bl FUN_020311F0 + cmp r0, #0x0 + bne _020501CE + ldr r0, _02050240 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3c] + cmp r0, #0x0 + bne _020501DC +_020501CE: + bl FUN_02031880 + ldr r0, _02050244 ; =FUN_020504A4 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_020501DC: + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0205023C + ldr r0, _02050240 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050202 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + bne _0205023C +_02050202: + bl FUN_0223E6B8 + mov r0, #0x0 + bl FUN_0204D040 + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_022408FC + mov r0, #0x0 + mov r1, #0x1 + bl FUN_0223FCE8 + mov r0, #0x0 + bl FUN_0202DE78 + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_0204D43C + bl FUN_0204F858 + ldr r0, _02050248 ; =FUN_02050350 + mov r1, #0xa + bl FUN_02050094 +_0205023C: + pop {r3, pc} + nop +_02050240: .word 0x021C5A6C +_02050244: .word FUN_020504A4 +_02050248: .word FUN_02050350 + + thumb_func_start FUN_0205024C +FUN_0205024C: ; 0x0205024C + push {r3, lr} + bl FUN_0223DFB4 + ldr r0, _020502A0 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050260 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] +_02050260: + bl FUN_020311E8 + cmp r0, #0x0 + bne _02050272 + ldr r0, _020502A0 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3c] + cmp r0, #0x0 + bne _0205029E +_02050272: + bl FUN_0223E6B8 + cmp r0, #0x0 + beq _0205027E + bl FUN_0204F7FC +_0205027E: + ldr r0, _020502A4 ; =0x02105E74 + bl FUN_0204FBAC + mov r0, #0x0 + bl FUN_0204D168 + bl FUN_0204F930 + bl FUN_02245FA0 + bl FUN_0223E7FC + ldr r0, _020502A8 ; =FUN_020502AC + mov r1, #0x0 + bl FUN_02050094 +_0205029E: + pop {r3, pc} + .balign 4 +_020502A0: .word 0x021C5A6C +_020502A4: .word 0x02105E74 +_020502A8: .word FUN_020502AC + + thumb_func_start FUN_020502AC +FUN_020502AC: ; 0x020502AC + push {r3, lr} + bl FUN_0223DFB4 + ldr r0, _02050314 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + bne _02050310 + bl FUN_020311F0 + cmp r0, #0x0 + bne _020502E2 + bl FUN_0202EE24 + cmp r0, #0x0 + beq _020502E2 + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + bne _02050310 + bl FUN_02031280 + cmp r0, #0x0 + bne _02050310 +_020502E2: + mov r0, #0x0 + bl FUN_02245358 + bl FUN_0204F90C + bl FUN_02247808 + mov r0, #0x2b + bl FUN_020311DC + bl FUN_02031190 + mov r1, #0x1 + bl FUN_0223FCE8 + bl FUN_0223E6B8 + bl FUN_020318B4 + ldr r0, _02050318 ; =FUN_02050458 + mov r1, #0x0 + bl FUN_02050094 +_02050310: + pop {r3, pc} + nop +_02050314: .word 0x021C5A6C +_02050318: .word FUN_02050458 + + thumb_func_start FUN_0205031C +FUN_0205031C: ; 0x0205031C + push {r3, lr} + bl FUN_0204CC48 + ldr r0, _0205032C ; =FUN_02050330 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0205032C: .word FUN_02050330 + + thumb_func_start FUN_02050330 +FUN_02050330: ; 0x02050330 + ldr r3, _02050334 ; =FUN_0223DFB4 + bx r3 + .balign 4 +_02050334: .word FUN_0223DFB4 + 1 + + thumb_func_start FUN_02050338 +FUN_02050338: ; 0x02050338 + push {r3, lr} + bl FUN_02245F1C + bl FUN_0204CC9C + ldr r0, _0205034C ; =FUN_020502AC + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0205034C: .word FUN_020502AC + + thumb_func_start FUN_02050350 +FUN_02050350: ; 0x02050350 + push {r3, lr} + ldr r0, _020503A8 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3c] + cmp r0, #0x9 + bne _02050364 + bl FUN_0202DBE0 + bl FUN_0223E7FC +_02050364: + ldr r0, _020503A8 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3c] + cmp r0, #0x1 + bne _02050374 + mov r0, #0x0 + bl FUN_0204D198 +_02050374: + ldr r0, _020503A8 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050384 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050384: + bl FUN_0202DCF8 + cmp r0, #0x0 + beq _020503A0 + ldr r0, _020503AC ; =0x02105E80 + bl FUN_0204FBAC + bl FUN_0204F930 + ldr r0, _020503B0 ; =FUN_020503B4 + mov r1, #0xc8 + bl FUN_02050094 + pop {r3, pc} +_020503A0: + bl FUN_02050548 + pop {r3, pc} + nop +_020503A8: .word 0x021C5A6C +_020503AC: .word 0x02105E80 +_020503B0: .word FUN_020503B4 + + thumb_func_start FUN_020503B4 +FUN_020503B4: ; 0x020503B4 + push {r3, lr} + bl FUN_0204FB00 + cmp r0, #0x0 + beq _020503CC + bl FUN_0223EF7C + ldr r0, _020503E8 ; =FUN_020503F0 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_020503CC: + bl FUN_02050548 + ldr r0, _020503EC ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _020503E0 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_020503E0: + bl FUN_02050510 + pop {r3, pc} + nop +_020503E8: .word FUN_020503F0 +_020503EC: .word 0x021C5A6C + + thumb_func_start FUN_020503F0 +FUN_020503F0: ; 0x020503F0 + push {r3, lr} + bl FUN_0223F4D8 + cmp r0, #0x0 + beq _02050412 + ldr r0, _02050418 ; =0x02105E94 + bl FUN_0204FBAC + bl FUN_0223F4F4 + bl FUN_02245FA0 + ldr r0, _0205041C ; =FUN_02050420 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_02050412: + bl FUN_02050548 + pop {r3, pc} + .balign 4 +_02050418: .word 0x02105E94 +_0205041C: .word FUN_02050420 + + thumb_func_start FUN_02050420 +FUN_02050420: ; 0x02050420 + push {r3, lr} + bl FUN_022461A4 + cmp r0, #0x0 + beq _0205044A + ldr r0, _02050450 ; =0x02105EB0 + bl FUN_0204FBAC + bl FUN_022461B8 + mov r0, #0x1 + bl FUN_0204D168 + mov r0, #0x1f + bl FUN_020311DC + ldr r0, _02050454 ; =FUN_02050548 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_0205044A: + bl FUN_02050548 + pop {r3, pc} + .balign 4 +_02050450: .word 0x02105EB0 +_02050454: .word FUN_02050548 + + thumb_func_start FUN_02050458 +FUN_02050458: ; 0x02050458 + push {r3, lr} + bl FUN_02031280 + cmp r0, #0x0 + beq _02050472 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0204EAD8 + ldr r0, _02050474 ; =FUN_02050478 + mov r1, #0x1e + bl FUN_02050094 +_02050472: + pop {r3, pc} + .balign 4 +_02050474: .word FUN_02050478 + + thumb_func_start FUN_02050478 +FUN_02050478: ; 0x02050478 + push {r3, lr} + ldr r0, _0205049C ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _0205048A + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_0205048A: + bl FUN_02031190 + cmp r0, #0x0 + bne _0205049A + ldr r0, _020504A0 ; =FUN_020500A4 + mov r1, #0x0 + bl FUN_02050094 +_0205049A: + pop {r3, pc} + .balign 4 +_0205049C: .word 0x021C5A6C +_020504A0: .word FUN_020500A4 + + thumb_func_start FUN_020504A4 +FUN_020504A4: ; 0x020504A4 + push {r3, lr} + ldr r0, _020504C8 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _020504B6 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_020504B6: + bl FUN_02031190 + cmp r0, #0x0 + bne _020504C6 + ldr r0, _020504CC ; =FUN_020500A4 + mov r1, #0x0 + bl FUN_02050094 +_020504C6: + pop {r3, pc} + .balign 4 +_020504C8: .word 0x021C5A6C +_020504CC: .word FUN_020500A4 + + thumb_func_start FUN_020504D0 +FUN_020504D0: ; 0x020504D0 + ldr r3, _020504D4 ; =FUN_0223DFB4 + bx r3 + .balign 4 +_020504D4: .word FUN_0223DFB4 + 1 + + thumb_func_start FUN_020504D8 +FUN_020504D8: ; 0x020504D8 + push {r3, lr} + bl FUN_02031190 + cmp r0, #0x0 + bne _02050506 + ldr r0, _02050508 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + bl FUN_0223E1E0 + bl FUN_0202DBE0 + mov r0, #0x0 + bl FUN_0204D168 + bl FUN_0223EF7C + bl FUN_02245FA0 + ldr r0, _0205050C ; =FUN_020504D0 + mov r1, #0x0 + bl FUN_02050094 +_02050506: + pop {r3, pc} + .balign 4 +_02050508: .word 0x021C5A6C +_0205050C: .word FUN_020504D0 + + thumb_func_start FUN_02050510 +FUN_02050510: ; 0x02050510 + push {r3, lr} + bl FUN_02031190 + mov r1, #0x1 + bl FUN_0223FCE8 + bl FUN_02031190 + mov r1, #0x1 + bl FUN_02247728 + bl FUN_0223CACC + bl FUN_0204CEF8 + bl FUN_0223E6B8 + bl FUN_02031880 + bl FUN_0204FB28 + ldr r0, _02050544 ; =FUN_020504A4 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050544: .word FUN_020504A4 + + thumb_func_start FUN_02050548 +FUN_02050548: ; 0x02050548 + push {r3, lr} + bl FUN_0223DFB4 + bl FUN_0204F80C + ldr r0, _02050574 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + bne _02050572 + bl FUN_0202EE44 + cmp r0, #0x0 + bne _0205056E + bl FUN_020311F0 + cmp r0, #0x0 + beq _02050572 +_0205056E: + bl FUN_02050510 +_02050572: + pop {r3, pc} + .balign 4 +_02050574: .word 0x021C5A6C + + thumb_func_start FUN_02050578 +FUN_02050578: ; 0x02050578 + push {r3, lr} + bl FUN_0204CC48 + ldr r0, _02050588 ; =FUN_0205058C + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050588: .word FUN_0205058C + + thumb_func_start FUN_0205058C +FUN_0205058C: ; 0x0205058C + ldr r3, _02050590 ; =0x02247831 + bx r3 + .balign 4 +_02050590: .word 0x02247831 + + thumb_func_start FUN_02050594 +FUN_02050594: ; 0x02050594 + push {r3, lr} + bl FUN_02245F1C + bl FUN_0204CC9C + bl FUN_0202EE44 + cmp r0, #0x0 + bne _020505AE + bl FUN_020311F0 + cmp r0, #0x0 + beq _020505CC +_020505AE: + bl FUN_022452A4 + bl FUN_0204CEF8 + bl FUN_0223E6B8 + bl FUN_02031880 + bl FUN_0204FB28 + ldr r0, _020505D8 ; =FUN_020504A4 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_020505CC: + ldr r0, _020505DC ; =FUN_02050548 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + nop +_020505D8: .word FUN_020504A4 +_020505DC: .word FUN_02050548 + + thumb_func_start FUN_020505E0 +FUN_020505E0: ; 0x020505E0 + push {r3, lr} + bl FUN_0204CC48 + ldr r0, _020505F0 ; =FUN_020505F4 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_020505F0: .word FUN_020505F4 + + thumb_func_start FUN_020505F4 +FUN_020505F4: ; 0x020505F4 + bx lr + .balign 4 + + thumb_func_start FUN_020505F8 +FUN_020505F8: ; 0x020505F8 + push {r3, lr} + bl FUN_02245F1C + bl FUN_0204CC9C + ldr r0, _0205060C ; =FUN_02050168 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0205060C: .word FUN_02050168 + + thumb_func_start FUN_02050610 +FUN_02050610: ; 0x02050610 + push {r3, lr} + bl FUN_0204CF24 + ldr r0, _02050620 ; =FUN_02050624 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050620: .word FUN_02050624 + + thumb_func_start FUN_02050624 +FUN_02050624: ; 0x02050624 + bx lr + .balign 4 + + thumb_func_start FUN_02050628 +FUN_02050628: ; 0x02050628 + push {r3, lr} + bl FUN_02245F1C + bl FUN_0204CC9C + ldr r0, _0205063C ; =FUN_020504D0 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_0205063C: .word FUN_020504D0 + + thumb_func_start FUN_02050640 +FUN_02050640: ; 0x02050640 + push {r3, lr} + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0x0 + beq _0205065E + bl FUN_02240834 + bl FUN_0202DBE0 + ldr r0, _02050660 ; =FUN_02050664 + mov r1, #0x0 + bl FUN_02050094 +_0205065E: + pop {r3, pc} + .balign 4 +_02050660: .word FUN_02050664 + + thumb_func_start FUN_02050664 +FUN_02050664: ; 0x02050664 + bx lr + .balign 4 + + thumb_func_start FUN_02050668 +FUN_02050668: ; 0x02050668 + push {r3, lr} + bl FUN_0202E4C8 + cmp r0, #0x0 + beq _0205067E + bl FUN_022407CC + ldr r0, _02050680 ; =FUN_02050684 + mov r1, #0x0 + bl FUN_02050094 +_0205067E: + pop {r3, pc} + .balign 4 +_02050680: .word FUN_02050684 + + thumb_func_start FUN_02050684 +FUN_02050684: ; 0x02050684 + bx lr + .balign 4 + + thumb_func_start FUN_02050688 +FUN_02050688: ; 0x02050688 + push {r3, lr} + ldr r0, _020506A0 ; =0x021C5A6C + ldr r0, [r0, #0x0] + add r0, #0x3e + ldrb r0, [r0, #0x0] + bl FUN_020319D8 + ldr r0, _020506A4 ; =FUN_020506A8 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_020506A0: .word 0x021C5A6C +_020506A4: .word FUN_020506A8 + + thumb_func_start FUN_020506A8 +FUN_020506A8: ; 0x020506A8 + push {r3, lr} + bl FUN_02031A2C + cmp r0, #0x0 + beq _020506BE + bl FUN_0202DBE0 + ldr r0, _020506C0 ; =FUN_020506C4 + mov r1, #0x0 + bl FUN_02050094 +_020506BE: + pop {r3, pc} + .balign 4 +_020506C0: .word FUN_020506C4 + + thumb_func_start FUN_020506C4 +FUN_020506C4: ; 0x020506C4 + bx lr + .balign 4 + + thumb_func_start FUN_020506C8 +FUN_020506C8: ; 0x020506C8 + push {r3, lr} + mov r0, #0x62 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050704 + bl FUN_0204D320 + add r1, r0, #0x0 + mov r0, #0xf + bl FUN_02016998 + ldr r1, _02050720 ; =0x021C5A6C + mov r2, #0x0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + bl FUN_0204CB20 + bl FUN_0204F80C + bl FUN_02030FC8 + mov r0, #0x5c + bl FUN_02031588 + ldr r0, _02050724 ; =FUN_02050728 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_02050704: + ldr r0, _02050720 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050714 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050714: + mov r0, #0x1e + strh r0, [r1, #0x3c] + mov r0, #0x62 + bl FUN_02031588 + pop {r3, pc} + .balign 4 +_02050720: .word 0x021C5A6C +_02050724: .word FUN_02050728 + + thumb_func_start FUN_02050728 +FUN_02050728: ; 0x02050728 + push {lr} + sub sp, #0xc + bl FUN_02031190 + cmp r0, #0x0 + bne _02050738 + bl FUN_0202DDE8 +_02050738: + mov r0, #0x5c + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050776 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r2, r1, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x0 + bl FUN_0200E388 + mov r0, #0x1 + bl FUN_0200E388 + bl FUN_0204CC9C + mov r0, #0x0 + bl FUN_0204D168 + ldr r0, _0205077C ; =FUN_020507B4 + mov r1, #0x1 + bl FUN_02050094 +_02050776: + add sp, #0xc + pop {pc} + nop +_0205077C: .word FUN_020507B4 + + thumb_func_start FUN_02050780 +FUN_02050780: ; 0x02050780 + push {r3, lr} + ldr r0, _020507AC ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050792 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050792: + mov r0, #0x1e + bl FUN_020315D8 + cmp r0, #0x0 + beq _020507A8 + bl FUN_02030FA8 + ldr r0, _020507B0 ; =FUN_02050930 + mov r1, #0x0 + bl FUN_02050094 +_020507A8: + pop {r3, pc} + nop +_020507AC: .word 0x021C5A6C +_020507B0: .word FUN_02050930 + + thumb_func_start FUN_020507B4 +FUN_020507B4: ; 0x020507B4 + push {r3, lr} + ldr r0, _020507F0 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _020507C6 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_020507C6: + bl FUN_02031190 + cmp r0, #0x0 + bne _020507DE + bl FUN_0204ED08 + cmp r0, #0x0 + beq _020507EC + mov r0, #0x1e + bl FUN_02031588 + b _020507E4 +_020507DE: + mov r0, #0x1e + bl FUN_02031588 +_020507E4: + ldr r0, _020507F4 ; =FUN_02050780 + mov r1, #0x14 + bl FUN_02050094 +_020507EC: + pop {r3, pc} + nop +_020507F0: .word 0x021C5A6C +_020507F4: .word FUN_02050780 + + thumb_func_start FUN_020507F8 +FUN_020507F8: ; 0x020507F8 + push {r3, lr} + mov r0, #0x62 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050830 + bl FUN_0204D320 + add r1, r0, #0x0 + mov r0, #0xf + bl FUN_02016998 + ldr r1, _0205084C ; =0x021C5A6C + mov r2, #0x0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + bl FUN_0204CB20 + bl FUN_0204F80C + mov r0, #0x5c + bl FUN_02031588 + ldr r0, _02050850 ; =FUN_02050854 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} +_02050830: + ldr r0, _0205084C ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050840 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050840: + mov r0, #0x1e + strh r0, [r1, #0x3c] + mov r0, #0x62 + bl FUN_02031588 + pop {r3, pc} + .balign 4 +_0205084C: .word 0x021C5A6C +_02050850: .word FUN_02050854 + + thumb_func_start FUN_02050854 +FUN_02050854: ; 0x02050854 + push {r3, lr} + sub sp, #0x10 + bl FUN_02031190 + cmp r0, #0x0 + bne _02050864 + bl FUN_0202DDE8 +_02050864: + mov r0, #0x5c + bl FUN_020315D8 + cmp r0, #0x0 + beq _020508B0 + bl FUN_0204CC9C + mov r0, #0x0 + bl FUN_0204D168 + mov r1, #0x1 + add r0, sp, #0xc + strb r1, [r0, #0x0] + mov r0, #0x5e + add r1, sp, #0xc + bl FUN_020311D0 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r2, r1, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x0 + bl FUN_0200E388 + mov r0, #0x1 + bl FUN_0200E388 + ldr r0, _020508B4 ; =FUN_02050A14 + mov r1, #0x0 + bl FUN_02050094 +_020508B0: + add sp, #0x10 + pop {r3, pc} + .balign 4 +_020508B4: .word FUN_02050A14 + + thumb_func_start FUN_020508B8 +FUN_020508B8: ; 0x020508B8 + push {r3-r7, lr} + mov r7, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _02050916 + ldr r6, _02050928 ; =0x021C5A6C +_020508C6: + bl FUN_02031190 + cmp r7, r0 + beq _0205090C + add r0, r7, #0x0 + bl FUN_020315FC + cmp r0, #0x5e + bne _0205090C + ldr r0, [r6, #0x0] + ldr r0, [r0, #0x18] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + bne _0205090C + mov r4, #0x0 + add r5, r4, #0x0 +_020508E6: + ldr r0, [r6, #0x0] + ldr r0, [r0, r5] + cmp r0, #0x0 + beq _020508F8 + bl FUN_02016A18 + ldr r1, [r6, #0x0] + mov r0, #0x0 + str r0, [r1, r5] +_020508F8: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _020508E6 + ldr r0, [r6, #0x0] + ldr r1, _0205092C ; =0x0000238E + ldr r0, [r0, #0x18] + mov r2, #0x0 + bl FUN_02038C78 +_0205090C: + add r7, r7, #0x1 + bl FUN_02030F20 + cmp r7, r0 + blt _020508C6 +_02050916: + ldr r1, _02050928 ; =0x021C5A6C + mov r0, #0x4 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + ldr r1, [r1, #0x8] + bl FUN_020335F0 + pop {r3-r7, pc} + nop +_02050928: .word 0x021C5A6C +_0205092C: .word 0x0000238E + + thumb_func_start FUN_02050930 +FUN_02050930: ; 0x02050930 + push {r3, lr} + bl FUN_0204EB44 + cmp r0, #0x0 + bne _0205095A + ldr r0, _02050960 ; =0x021C5A6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] + mov r1, #0x1 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + mov r0, #0x5e + add r1, sp, #0x0 + bl FUN_020311D0 + ldr r0, _02050964 ; =FUN_02050A14 + mov r1, #0x0 + bl FUN_02050094 +_0205095A: + bl FUN_020508B8 + pop {r3, pc} + .balign 4 +_02050960: .word 0x021C5A6C +_02050964: .word FUN_02050A14 + + thumb_func_start FUN_02050968 +FUN_02050968: ; 0x02050968 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + beq _02050986 + mov r0, #0xb + bl FUN_0206B8AC + ldr r1, _020509AC ; =0x021C5A6C + ldr r2, [r1, #0x0] + str r0, [r2, #0x44] + ldr r1, [r1, #0x0] + add r0, r4, #0x0 + ldr r1, [r1, #0x44] + bl FUN_0206BAD0 +_02050986: + cmp r5, #0x0 + beq _02050994 + ldr r0, _020509B0 ; =FUN_02050B8C + mov r1, #0x3 + bl FUN_02050094 + pop {r3-r5, pc} +_02050994: + mov r1, #0x3 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + mov r0, #0x5e + add r1, sp, #0x0 + bl FUN_020311D0 + ldr r0, _020509B4 ; =FUN_02050930 + mov r1, #0x0 + bl FUN_02050094 + pop {r3-r5, pc} + .balign 4 +_020509AC: .word 0x021C5A6C +_020509B0: .word FUN_02050B8C +_020509B4: .word FUN_02050930 + + thumb_func_start FUN_020509B8 +FUN_020509B8: ; 0x020509B8 + ldr r3, _020509C0 ; =FUN_02050094 + ldr r0, _020509C4 ; =FUN_02050930 + mov r1, #0x0 + bx r3 + .balign 4 +_020509C0: .word FUN_02050094 +_020509C4: .word FUN_02050930 + + thumb_func_start FUN_020509C8 +FUN_020509C8: ; 0x020509C8 + push {r3, lr} + bl FUN_02031438 + cmp r0, #0x0 + bne _02050A06 + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0x0 + bne _02050A06 + ldr r0, _02050A08 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _020509EE + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_020509EE: + bl FUN_0204F7E4 + ldr r0, _02050A08 ; =0x021C5A6C + ldr r1, _02050A0C ; =FUN_02050968 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x18] + bl FUN_02051880 + ldr r0, _02050A10 ; =FUN_020509B8 + mov r1, #0x0 + bl FUN_02050094 +_02050A06: + pop {r3, pc} + .balign 4 +_02050A08: .word 0x021C5A6C +_02050A0C: .word FUN_02050968 +_02050A10: .word FUN_020509B8 + + thumb_func_start FUN_02050A14 +FUN_02050A14: ; 0x02050A14 + push {r3, lr} + ldr r0, _02050A40 ; =0x021C5A6C + ldr r0, [r0, #0x0] + add r0, #0x43 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050A38 + ldr r0, _02050A44 ; =FUN_020509C8 + mov r1, #0x5 + bl FUN_02050094 + mov r1, #0x0 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + mov r0, #0x5e + add r1, sp, #0x0 + bl FUN_020311D0 +_02050A38: + bl FUN_020508B8 + pop {r3, pc} + nop +_02050A40: .word 0x021C5A6C +_02050A44: .word FUN_020509C8 + + thumb_func_start FUN_02050A48 +FUN_02050A48: ; 0x02050A48 + push {r4, lr} + add r4, r2, #0x0 + bl FUN_02031190 + ldrb r1, [r4, #0x0] + cmp r1, r0 + bne _02050A60 + ldr r0, _02050A64 ; =0x021C5A6C + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, #0x43 + strb r1, [r0, #0x0] +_02050A60: + pop {r4, pc} + nop +_02050A64: .word 0x021C5A6C + + thumb_func_start FUN_02050A68 +FUN_02050A68: ; 0x02050A68 + ldr r0, _02050A88 ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050A82 + ldr r1, [r0, #0x34] + ldr r0, _02050A8C ; =FUN_02050A14 + cmp r1, r0 + beq _02050A7E + ldr r0, _02050A90 ; =FUN_02050930 + cmp r1, r0 + bne _02050A82 +_02050A7E: + mov r0, #0x1 + bx lr +_02050A82: + mov r0, #0x0 + bx lr + nop +_02050A88: .word 0x021C5A6C +_02050A8C: .word FUN_02050A14 +_02050A90: .word FUN_02050930 + + thumb_func_start FUN_02050A94 +FUN_02050A94: ; 0x02050A94 + push {r4, lr} + sub sp, #0x8 + ldr r0, _02050B00 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050AAA + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + add sp, #0x8 + pop {r4, pc} +_02050AAA: + mov r4, #0x5 + bl FUN_02033534 + cmp r0, #0x2 + beq _02050AC0 + cmp r0, #0x4 + beq _02050ABC + cmp r0, #0x5 + bne _02050AC2 +_02050ABC: + mov r4, #0xf + b _02050AC2 +_02050AC0: + mov r4, #0x7 +_02050AC2: + add r0, sp, #0x0 + bl FUN_02033578 + ldr r0, _02050B00 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x44] + ldr r0, [r0, #0x18] + cmp r1, #0x0 + bne _02050ADE + add r1, sp, #0x0 + add r2, r4, #0x0 + bl FUN_0204726C + b _02050AF6 +_02050ADE: + add r2, r4, #0x0 + bl FUN_020472B0 + ldr r0, _02050B00 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x44] + bl FUN_02016A18 + ldr r0, _02050B00 ; =0x021C5A6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x44] +_02050AF6: + bl FUN_0204FC10 + add sp, #0x8 + pop {r4, pc} + nop +_02050B00: .word 0x021C5A6C + + thumb_func_start FUN_02050B04 +FUN_02050B04: ; 0x02050B04 + push {r3, lr} + bl FUN_0202FA48 + cmp r0, #0x0 + beq _02050B3E + ldr r0, _02050B40 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050B1C + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] +_02050B1C: + ldr r0, _02050B40 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3c] + cmp r0, #0x5a + bne _02050B2C + mov r0, #0x4 + bl FUN_02031588 +_02050B2C: + mov r0, #0x4 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050B3E + ldr r0, _02050B44 ; =FUN_02050A94 + mov r1, #0x0 + bl FUN_02050094 +_02050B3E: + pop {r3, pc} + .balign 4 +_02050B40: .word 0x021C5A6C +_02050B44: .word FUN_02050A94 + + thumb_func_start FUN_02050B48 +FUN_02050B48: ; 0x02050B48 + push {r3, lr} + ldr r0, _02050B68 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050B5A + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050B5A: + bl FUN_0202FA10 + ldr r0, _02050B6C ; =FUN_02050B04 + mov r1, #0x78 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050B68: .word 0x021C5A6C +_02050B6C: .word FUN_02050B04 + + thumb_func_start FUN_02050B70 +FUN_02050B70: ; 0x02050B70 + push {r3, lr} + mov r0, #0x3 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050B84 + ldr r0, _02050B88 ; =FUN_02050B48 + mov r1, #0x2 + bl FUN_02050094 +_02050B84: + pop {r3, pc} + nop +_02050B88: .word FUN_02050B48 + + thumb_func_start FUN_02050B8C +FUN_02050B8C: ; 0x02050B8C + push {r3, lr} + ldr r0, _02050BB4 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050B9E + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050B9E: + mov r0, #0x0 + bl FUN_0204CCE0 + mov r0, #0x3 + bl FUN_02031588 + ldr r0, _02050BB8 ; =FUN_02050B70 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050BB4: .word 0x021C5A6C +_02050BB8: .word FUN_02050B70 + + thumb_func_start FUN_02050BBC +FUN_02050BBC: ; 0x02050BBC + push {r3, lr} + bl FUN_020319F4 + ldr r0, _02050BCC ; =FUN_02050BD0 + mov r1, #0x2 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050BCC: .word FUN_02050BD0 + + thumb_func_start FUN_02050BD0 +FUN_02050BD0: ; 0x02050BD0 + push {r3, lr} + bl FUN_0202EE0C + cmp r0, #0x0 + beq _02050BE2 + ldr r0, _02050BE4 ; =FUN_020506A8 + mov r1, #0xa + bl FUN_02050094 +_02050BE2: + pop {r3, pc} + .balign 4 +_02050BE4: .word FUN_020506A8 + + thumb_func_start FUN_02050BE8 +FUN_02050BE8: ; 0x02050BE8 + ldr r1, _02050BF4 ; =0x021C5A6C + mov r2, #0x1 + ldr r1, [r1, #0x0] + add r0, r1, r0 + strb r2, [r0, #0x10] + bx lr + .balign 4 +_02050BF4: .word 0x021C5A6C + + thumb_func_start FUN_02050BF8 +FUN_02050BF8: ; 0x02050BF8 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x4 + blt _02050C04 + bl ErrorHandling +_02050C04: + ldr r0, _02050C10 ; =0x021C5A6C + ldr r1, [r0, #0x0] + lsl r0, r4, #0x2 + ldr r0, [r1, r0] + pop {r4, pc} + nop +_02050C10: .word 0x021C5A6C + + thumb_func_start FUN_02050C14 +FUN_02050C14: ; 0x02050C14 + push {r4, lr} + bl FUN_02031190 + add r4, r0, #0x0 + mov r0, #0x5f + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050C3E + ldr r1, _02050C40 ; =0x021C5A6C + mov r0, #0x58 + ldr r2, [r1, #0x0] + lsl r1, r4, #0x2 + ldr r1, [r2, r1] + ldr r2, _02050C44 ; =0x0000066C + bl FUN_02030A78 + ldr r0, _02050C48 ; =FUN_02050C4C + mov r1, #0x0 + bl FUN_02050094 +_02050C3E: + pop {r4, pc} + .balign 4 +_02050C40: .word 0x021C5A6C +_02050C44: .word 0x0000066C +_02050C48: .word FUN_02050C4C + + thumb_func_start FUN_02050C4C +FUN_02050C4C: ; 0x02050C4C + push {r3-r5, lr} + mov r4, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _02050C6E + ldr r5, _02050C80 ; =0x021C5A6C +_02050C5A: + ldr r0, [r5, #0x0] + add r0, r0, r4 + ldrb r0, [r0, #0x10] + cmp r0, #0x0 + beq _02050C7C + add r4, r4, #0x1 + bl FUN_02030F20 + cmp r4, r0 + blt _02050C5A +_02050C6E: + mov r0, #0x61 + bl FUN_02031588 + ldr r0, _02050C84 ; =FUN_02050CF4 + mov r1, #0x0 + bl FUN_02050094 +_02050C7C: + pop {r3-r5, pc} + nop +_02050C80: .word 0x021C5A6C +_02050C84: .word FUN_02050CF4 + + thumb_func_start FUN_02050C88 +FUN_02050C88: ; 0x02050C88 + push {r3, lr} + bl FUN_0202FA48 + cmp r0, #0x0 + bne _02050CC2 + ldr r0, _02050CC4 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050CA0 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] +_02050CA0: + ldr r0, _02050CC4 ; =0x021C5A6C + ldr r0, [r0, #0x0] + ldrh r0, [r0, #0x3c] + cmp r0, #0x5a + bne _02050CB0 + mov r0, #0x5 + bl FUN_02031588 +_02050CB0: + mov r0, #0x5 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050CC2 + ldr r0, _02050CC8 ; =FUN_02050D10 + mov r1, #0x0 + bl FUN_02050094 +_02050CC2: + pop {r3, pc} + .balign 4 +_02050CC4: .word 0x021C5A6C +_02050CC8: .word FUN_02050D10 + + thumb_func_start FUN_02050CCC +FUN_02050CCC: ; 0x02050CCC + push {r3, lr} + ldr r0, _02050CEC ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050CDE + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050CDE: + bl FUN_0202FA1C + ldr r0, _02050CF0 ; =FUN_02050C88 + mov r1, #0x78 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050CEC: .word 0x021C5A6C +_02050CF0: .word FUN_02050C88 + + thumb_func_start FUN_02050CF4 +FUN_02050CF4: ; 0x02050CF4 + push {r3, lr} + mov r0, #0x61 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050D08 + ldr r0, _02050D0C ; =FUN_02050CCC + mov r1, #0x2 + bl FUN_02050094 +_02050D08: + pop {r3, pc} + nop +_02050D0C: .word FUN_02050CCC + + thumb_func_start FUN_02050D10 +FUN_02050D10: ; 0x02050D10 + push {r3, lr} + ldr r0, _02050D48 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050D22 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050D22: + mov r0, #0x62 + bl FUN_02031588 + ldr r0, _02050D48 ; =0x021C5A6C + ldr r0, [r0, #0x0] + add r0, #0x42 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050D3E + ldr r0, _02050D4C ; =FUN_020506C8 + mov r1, #0x1e + bl FUN_02050094 + pop {r3, pc} +_02050D3E: + ldr r0, _02050D50 ; =FUN_020507F8 + mov r1, #0x1e + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050D48: .word 0x021C5A6C +_02050D4C: .word FUN_020506C8 +_02050D50: .word FUN_020507F8 + + thumb_func_start FUN_02050D54 +FUN_02050D54: ; 0x02050D54 + push {r3, lr} + ldr r0, _02050D84 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050D66 + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050D66: + bl FUN_0223E1A4 + bl FUN_02031860 + mov r0, #0x21 + bl FUN_020168D0 + ldr r0, _02050D84 ; =0x021C5A6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, #0x41 + strb r1, [r0, #0x0] + bl FUN_0204FC10 + pop {r3, pc} + .balign 4 +_02050D84: .word 0x021C5A6C + + thumb_func_start FUN_02050D88 +FUN_02050D88: ; 0x02050D88 + push {r3, lr} + mov r0, #0x5b + bl FUN_020315D8 + cmp r0, #0x0 + beq _02050DAA + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_020334E8 + mov r0, #0x1 + bl FUN_0204CCE0 + ldr r0, _02050DAC ; =FUN_02050DC8 + mov r1, #0x5 + bl FUN_02050094 +_02050DAA: + pop {r3, pc} + .balign 4 +_02050DAC: .word FUN_02050DC8 + + thumb_func_start FUN_02050DB0 +FUN_02050DB0: ; 0x02050DB0 + push {r3, lr} + mov r0, #0x1 + bl FUN_0204CCE0 + ldr r0, _02050DC4 ; =FUN_02050DC8 + mov r1, #0x5 + bl FUN_02050094 + pop {r3, pc} + nop +_02050DC4: .word FUN_02050DC8 + + thumb_func_start FUN_02050DC8 +FUN_02050DC8: ; 0x02050DC8 + push {r3, lr} + ldr r0, _02050DE8 ; =0x021C5A6C + ldr r1, [r0, #0x0] + ldrh r0, [r1, #0x3c] + cmp r0, #0x0 + beq _02050DDA + sub r0, r0, #0x1 + strh r0, [r1, #0x3c] + pop {r3, pc} +_02050DDA: + bl FUN_02031A08 + ldr r0, _02050DEC ; =FUN_0204FC10 + mov r1, #0x0 + bl FUN_02050094 + pop {r3, pc} + .balign 4 +_02050DE8: .word 0x021C5A6C +_02050DEC: .word FUN_0204FC10 + + thumb_func_start FUN_02050DF0 +FUN_02050DF0: ; 0x02050DF0 + push {r3, lr} + ldr r1, _02050E0C ; =0x021C5A6C + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _02050E02 + add r1, #0x41 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02050E06 +_02050E02: + mov r0, #0x0 + pop {r3, pc} +_02050E06: + bl FUN_0223E2AC + pop {r3, pc} + .balign 4 +_02050E0C: .word 0x021C5A6C + + thumb_func_start FUN_02050E10 +FUN_02050E10: ; 0x02050E10 + push {r3, lr} + ldr r0, _02050E28 ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050E26 + add r0, #0x41 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050E26 + bl FUN_0223E118 +_02050E26: + pop {r3, pc} + .balign 4 +_02050E28: .word 0x021C5A6C + + thumb_func_start FUN_02050E2C +FUN_02050E2C: ; 0x02050E2C + push {r3, lr} + ldr r0, _02050E44 ; =0x021C5A6C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050E42 + add r0, #0x41 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050E42 + bl FUN_0223E154 +_02050E42: + pop {r3, pc} + .balign 4 +_02050E44: .word 0x021C5A6C + + thumb_func_start FUN_02050E48 +FUN_02050E48: ; 0x02050E48 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + add r5, r1, #0x0 + ldr r0, [sp, #0x24] + mov r1, #0x30 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + ldr r6, [r5, #0xc] + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x30 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0207C2A4 + add r0, r6, #0x0 + bl FUN_0206BB28 + str r0, [r4, #0x1c] + add r0, r6, #0x0 + bl FUN_02079C70 + str r0, [r4, #0x2c] + add r0, r6, #0x0 + bl LoadPlayerDataAddress + str r0, [r4, #0x4] + ldr r0, [sp, #0x0] + str r0, [r4, #0x0] + mov r0, #0x1 + strb r0, [r4, #0x11] + ldr r0, [sp, #0x4] + strb r0, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9AC + strb r0, [r4, #0x13] + mov r0, #0x0 + strh r0, [r4, #0x18] + ldr r0, [sp, #0x20] + strb r0, [r4, #0x12] + add r0, r6, #0x0 + bl FUN_0202A918 + str r0, [r4, #0x20] + ldr r1, _02050ECC ; =0x020F5880 + add r0, r4, #0x0 + bl FUN_0207B000 + ldr r1, _02050ED0 ; =0x020FA6E8 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + str r4, [r7, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + nop +_02050ECC: .word 0x020F5880 +_02050ED0: .word 0x020FA6E8 + + thumb_func_start FUN_02050ED4 +FUN_02050ED4: ; 0x02050ED4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [r5, #0x24] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + ldr r0, [r5, #0x24] + add r0, #0xac + ldr r0, [r0, #0x0] + str r0, [r4, #0x14] + ldr r0, [r5, #0x24] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0x24] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x4] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x2 + add r0, #0x20 + strb r1, [r0, #0x0] + ldr r0, [r5, #0x24] + add r0, #0xac + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02050F64 + mov r1, #0x1 + bl FUN_02023B0C + add r1, r4, #0x0 + add r1, #0x32 + ldrb r1, [r1, #0x0] + mov r2, #0xf + lsl r0, r0, #0x18 + bic r1, r2 + lsr r2, r0, #0x18 + mov r0, #0xf + and r0, r2 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + mov r1, #0xf0 + bic r0, r1 + add r1, r4, #0x0 + add r1, #0x32 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + b _02050F84 +_02050F64: + add r0, r4, #0x0 + add r0, #0x32 + ldrb r1, [r0, #0x0] + mov r0, #0xf + bic r1, r0 + mov r0, #0x3 + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x32 + ldrb r1, [r0, #0x0] + mov r0, #0xf0 + bic r1, r0 + mov r0, #0x30 +_02050F84: + orr r1, r0 + add r0, r4, #0x0 + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x64 + add r0, #0x33 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x3c + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x22 + strb r1, [r0, #0x0] + mov r2, #0x0 +_02050FA2: + add r0, r5, r2 + add r0, #0x3d + ldrb r1, [r0, #0x0] + add r0, r4, r2 + add r0, #0x2c + add r2, r2, #0x1 + strb r1, [r0, #0x0] + cmp r2, #0x6 + blt _02050FA2 + ldr r0, [r5, #0x24] + ldr r1, _02050FC4 ; =0x020F96DC + add r2, r4, #0x0 + bl FUN_020373D4 + str r4, [r5, #0x4] + pop {r3-r5, pc} + nop +_02050FC4: .word 0x020F96DC + + thumb_func_start FUN_02050FC8 +FUN_02050FC8: ; 0x02050FC8 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _02050FDA + mov r0, #0x0 + pop {r4, pc} +_02050FDA: + ldr r0, [r4, #0x4] + add r1, r4, #0x0 + add r0, #0x2c + add r1, #0x3d + mov r2, #0x6 + blx MI_CpuCopy8 + ldr r0, [r4, #0x4] + add r0, #0x22 + ldrb r0, [r0, #0x0] + cmp r0, #0x6 + beq _02050FFC + cmp r0, #0x7 + bne _02051002 + mov r0, #0x0 + str r0, [r4, #0x38] + b _02051006 +_02050FFC: + mov r0, #0x1 + str r0, [r4, #0x38] + b _02051006 +_02051002: + mov r0, #0x2 + str r0, [r4, #0x38] +_02051006: + ldr r0, [r4, #0x4] + add r0, #0x22 + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x3c + strb r1, [r0, #0x0] + ldr r0, [r4, #0x4] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x4] + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_02051020 +FUN_02051020: ; 0x02051020 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _02051032 + mov r0, #0x0 + pop {r4, pc} +_02051032: + ldr r0, [r4, #0x0] + ldrb r1, [r0, #0x14] + add r0, r4, #0x0 + add r0, #0x3c + strb r1, [r0, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205104C +FUN_0205104C: ; 0x0205104C + push {r3, lr} + ldr r0, [r0, #0x24] + bl FUN_020464A4 + cmp r0, #0x0 + beq _02051066 + mov r0, #0x1 + bl FUN_021D7CA4 + bl FUN_0204CC9C + mov r0, #0x1 + pop {r3, pc} +_02051066: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205106C +FUN_0205106C: ; 0x0205106C + push {r3-r5, lr} + bl FUN_02030F20 + add r5, r0, #0x0 + mov r4, #0x0 + cmp r5, #0x0 + ble _0205108E +_0205107A: + add r0, r4, #0x0 + bl FUN_020315FC + cmp r0, #0x5e + bne _02051088 + mov r0, #0x1 + pop {r3-r5, pc} +_02051088: + add r4, r4, #0x1 + cmp r4, r5 + blt _0205107A +_0205108E: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02051094 +FUN_02051094: ; 0x02051094 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + ldr r1, [r4, #0x34] + cmp r1, #0x2c + bls _020510AE + b _020517B8 +_020510AE: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020510BA: ; jump table (using 16-bit offset) + .short _02051114 - _020510BA - 2; case 0 + .short _02051136 - _020510BA - 2; case 1 + .short _02051150 - _020510BA - 2; case 2 + .short _0205116A - _020510BA - 2; case 3 + .short _020511A6 - _020510BA - 2; case 4 + .short _020511F6 - _020510BA - 2; case 5 + .short _020517B8 - _020510BA - 2; case 6 + .short _020511E4 - _020510BA - 2; case 7 + .short _0205120C - _020510BA - 2; case 8 + .short _02051232 - _020510BA - 2; case 9 + .short _0205123E - _020510BA - 2; case 10 + .short _0205126A - _020510BA - 2; case 11 + .short _02051288 - _020510BA - 2; case 12 + .short _0205129C - _020510BA - 2; case 13 + .short _020512A8 - _020510BA - 2; case 14 + .short _020512CA - _020510BA - 2; case 15 + .short _020512E0 - _020510BA - 2; case 16 + .short _0205130E - _020510BA - 2; case 17 + .short _02051334 - _020510BA - 2; case 18 + .short _02051346 - _020510BA - 2; case 19 + .short _0205138A - _020510BA - 2; case 20 + .short _0205136A - _020510BA - 2; case 21 + .short _020513A6 - _020510BA - 2; case 22 + .short _020513B6 - _020510BA - 2; case 23 + .short _020513D4 - _020510BA - 2; case 24 + .short _020513F2 - _020510BA - 2; case 25 + .short _02051406 - _020510BA - 2; case 26 + .short _02051472 - _020510BA - 2; case 27 + .short _020514A8 - _020510BA - 2; case 28 + .short _020514BE - _020510BA - 2; case 29 + .short _02051508 - _020510BA - 2; case 30 + .short _02051540 - _020510BA - 2; case 31 + .short _02051566 - _020510BA - 2; case 32 + .short _02051686 - _020510BA - 2; case 33 + .short _020516B6 - _020510BA - 2; case 34 + .short _020516CE - _020510BA - 2; case 35 + .short _020515BA - _020510BA - 2; case 36 + .short _020515F8 - _020510BA - 2; case 37 + .short _02051614 - _020510BA - 2; case 38 + .short _020516DE - _020510BA - 2; case 39 + .short _020517B8 - _020510BA - 2; case 40 + .short _02051702 - _020510BA - 2; case 41 + .short _02051744 - _020510BA - 2; case 42 + .short _02051766 - _020510BA - 2; case 43 + .short _02051798 - _020510BA - 2; case 44 +_02051114: + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x43 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _020511DC + mov r0, #0x1 + str r0, [r4, #0x34] + bl FUN_0204ECC0 + b _020517B8 +_02051136: + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x2 + str r0, [r4, #0x34] + b _020517B8 +_02051150: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _020511DC + mov r0, #0x5d + bl FUN_02031588 + mov r0, #0x3 + str r0, [r4, #0x34] + b _020517B8 +_0205116A: + mov r0, #0x5d + bl FUN_020315D8 + cmp r0, #0x0 + beq _0205118A + mov r0, #0x7 + str r0, [r4, #0x34] + ldr r0, [r4, #0x24] + ldr r0, [r0, #0x34] + bl FUN_02058768 + ldr r1, [r4, #0x50] + ldr r2, [r4, #0x8] + mov r0, #0x1 + blx r2 + b _020517B8 +_0205118A: + ldr r0, _020514A4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x2 + tst r0, r1 + beq _020511DC + mov r0, #0x4 + str r0, [r4, #0x34] + mov r0, #0x5c + bl FUN_02031588 + mov r0, #0x5 + add r4, #0x43 + strb r0, [r4, #0x0] + b _020517B8 +_020511A6: + mov r0, #0x5d + bl FUN_020315D8 + cmp r0, #0x0 + beq _020511C4 + mov r0, #0x7 + str r0, [r4, #0x34] + ldr r0, [r4, #0x24] + ldr r0, [r0, #0x34] + bl FUN_02058768 + ldr r1, [r4, #0x50] + ldr r2, [r4, #0x8] + mov r0, #0x1 + blx r2 +_020511C4: + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x43 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _020511DE +_020511DC: + b _020517B8 +_020511DE: + mov r0, #0x8 + str r0, [r4, #0x34] + b _020517B8 +_020511E4: + add r0, r4, #0x0 + bl FUN_02051998 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r5, pc} +_020511F6: + add r0, r4, #0x0 + bl FUN_02051998 + add r0, r4, #0x0 + bl FUN_02016A18 + bl FUN_0204F7FC + add sp, #0x8 + mov r0, #0x1 + pop {r3-r5, pc} +_0205120C: + mov r0, #0x5d + bl FUN_020315D8 + cmp r0, #0x0 + beq _02051224 + mov r0, #0x5 + str r0, [r4, #0x34] + ldr r1, [r4, #0x50] + ldr r2, [r4, #0x8] + mov r0, #0x1 + blx r2 + b _020517B8 +_02051224: + ldr r1, [r4, #0x50] + ldr r2, [r4, #0x8] + mov r0, #0x0 + blx r2 + mov r0, #0x5 + str r0, [r4, #0x34] + b _020517B8 +_02051232: + mov r0, #0xa + str r0, [r4, #0x34] + mov r0, #0x5 + add r4, #0x44 + strb r0, [r4, #0x0] + b _020517B8 +_0205123E: + add r1, r4, #0x0 + add r1, #0x44 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + beq _02051256 + add r0, r4, #0x0 + add r0, #0x44 + ldrb r0, [r0, #0x0] + add r4, #0x44 + sub r0, r0, #0x1 + strb r0, [r4, #0x0] + b _020517B8 +_02051256: + ldr r0, [r0, #0x38] + bl FUN_020553A0 + bl FUN_0205AE28 + cmp r0, #0x0 + beq _020512FA + mov r0, #0xb + str r0, [r4, #0x34] + b _020517B8 +_0205126A: + bl FUN_0204ECC0 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0xd + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0xc + str r0, [r4, #0x34] + b _020517B8 +_02051288: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _020512FA + mov r0, #0xd + str r0, [r4, #0x34] + b _020517B8 +_0205129C: + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0xe + str r0, [r4, #0x34] + b _020517B8 +_020512A8: + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x43 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _020512FA + bl FUN_0204ECC0 + mov r0, #0xf + str r0, [r4, #0x34] + b _020517B8 +_020512CA: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02051810 + add r0, r4, #0x0 + mov r1, #0xb + bl FUN_02050ED4 + mov r0, #0x10 + str r0, [r4, #0x34] + b _020517B8 +_020512E0: + ldr r1, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_02050FC8 + cmp r0, #0x0 + beq _020512FA + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020512FC + cmp r0, #0x1 + beq _02051302 + cmp r0, #0x2 + beq _02051308 +_020512FA: + b _020517B8 +_020512FC: + mov r0, #0x14 + str r0, [r4, #0x34] + b _020517B8 +_02051302: + mov r0, #0x13 + str r0, [r4, #0x34] + b _020517B8 +_02051308: + mov r0, #0x11 + str r0, [r4, #0x34] + b _020517B8 +_0205130E: + ldr r0, [r4, #0x24] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0xb + str r0, [sp, #0x4] + add r3, r4, #0x0 + add r3, #0x3c + ldrb r3, [r3, #0x0] + ldr r1, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_02050E48 + mov r0, #0x12 + str r0, [r4, #0x34] + b _020517B8 +_02051334: + ldr r1, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_02051020 + cmp r0, #0x0 + beq _02051410 + mov r0, #0xf + str r0, [r4, #0x34] + b _020517B8 +_02051346: + ldr r0, [r4, #0x24] + bl FUN_0204649C + add r0, r4, #0x0 + add r0, #0x88 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _02051364 + add r0, r4, #0x0 + mov r1, #0x5 + add r0, #0x43 + strb r1, [r0, #0x0] + mov r0, #0x15 + str r0, [r4, #0x34] + b _020517B8 +_02051364: + mov r0, #0x1a + str r0, [r4, #0x34] + b _020517B8 +_0205136A: + add r0, r4, #0x0 + add r0, #0x3d + bl FUN_02033564 + add r0, r4, #0x0 + bl FUN_0205104C + cmp r0, #0x0 + beq _02051410 + add r0, r4, #0x0 + mov r1, #0x5 + add r0, #0x43 + strb r1, [r0, #0x0] + mov r0, #0x0 + str r0, [r4, #0x34] + b _020517B8 +_0205138A: + ldr r0, [r4, #0x24] + bl FUN_0204649C + add r0, r4, #0x0 + add r0, #0x88 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _020513A0 + mov r0, #0x16 + str r0, [r4, #0x34] + b _020517B8 +_020513A0: + mov r0, #0x1a + str r0, [r4, #0x34] + b _020517B8 +_020513A6: + add r0, r4, #0x0 + bl FUN_0205104C + cmp r0, #0x0 + beq _02051410 + mov r0, #0x8 + str r0, [r4, #0x34] + b _020517B8 +_020513B6: + add r0, r4, #0x0 + add r0, #0x44 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x44 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x44 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _02051410 + mov r0, #0x18 + str r0, [r4, #0x34] + b _020517B8 +_020513D4: + bl FUN_0204ECC0 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0x13 + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x19 + str r0, [r4, #0x34] + b _020517B8 +_020513F2: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _02051410 + mov r0, #0xd + str r0, [r4, #0x34] + b _020517B8 +_02051406: + add r0, r4, #0x0 + bl FUN_0205104C + cmp r0, #0x0 + bne _02051412 +_02051410: + b _020517B8 +_02051412: + bl FUN_0205106C + cmp r0, #0x0 + beq _02051420 + mov r0, #0x5 + str r0, [r4, #0x34] + b _020517B8 +_02051420: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _0205142A + mov r1, #0x1 + b _0205142C +_0205142A: + mov r1, #0x0 +_0205142C: + add r0, r4, #0x0 + add r0, #0x82 + strb r1, [r0, #0x0] + add r1, r4, #0x0 + add r1, #0x82 + ldrb r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_020519F0 + mov r0, #0x0 + bl FUN_02031588 + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x74] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0xe + bl FUN_0200A8E0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0xc] + bl FUN_0200B7B8 + ldr r1, [r4, #0x10] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x1b + str r0, [r4, #0x34] + b _020517B8 +_02051472: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _02051574 + bl FUN_0205106C + cmp r0, #0x0 + beq _0205148E + mov r0, #0x5 + str r0, [r4, #0x34] + b _020517B8 +_0205148E: + mov r0, #0x0 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02051574 + add r0, r4, #0x0 + bl FUN_02051A38 + mov r0, #0x1c + str r0, [r4, #0x34] + b _020517B8 + .balign 4 +_020514A4: .word 0x021C48B8 +_020514A8: + add r0, r4, #0x0 + bl FUN_02051A80 + cmp r0, #0x0 + beq _02051574 + mov r0, #0x1 + bl FUN_02031588 + mov r0, #0x1d + str r0, [r4, #0x34] + b _020517B8 +_020514BE: + mov r0, #0x1 + bl FUN_020315D8 + cmp r0, #0x0 + beq _02051574 + add r0, r4, #0x0 + bl FUN_02051A90 + add r1, r4, #0x0 + add r1, #0x83 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x82 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02051502 + add r0, r4, #0x0 + add r0, #0x83 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02051502 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0x14 + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x1e + str r0, [r4, #0x34] + b _020517B8 +_02051502: + mov r0, #0x2a + str r0, [r4, #0x34] + b _020517B8 +_02051508: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _02051574 + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x89 + strb r1, [r0, #0x0] + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0x11 + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x84 + strb r1, [r0, #0x0] + mov r0, #0x1f + str r0, [r4, #0x34] + b _020517B8 +_02051540: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _02051574 + add r0, r4, #0x0 + bl FUN_02051AF0 + add r1, r4, #0x0 + add r1, #0x84 + ldrb r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_02051B68 + mov r0, #0x20 + str r0, [r4, #0x34] + b _020517B8 +_02051566: + add r0, r4, #0x0 + bl FUN_02051D54 + cmp r0, #0x1 + beq _02051576 + cmp r0, #0x2 + beq _0205158C +_02051574: + b _020517B8 +_02051576: + add r0, r4, #0x0 + bl FUN_02051E24 + mov r0, #0x81 + ldrsb r1, [r4, r0] + add r0, r4, #0x0 + add r0, #0x84 + strb r1, [r0, #0x0] + mov r0, #0x24 + str r0, [r4, #0x34] + b _020517B8 +_0205158C: + add r0, r4, #0x0 + bl FUN_02051E24 + add r0, r4, #0x0 + mov r1, #0xff + add r0, #0x84 + strb r1, [r0, #0x0] + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0xf + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x2 + bl FUN_02031588 + mov r0, #0x27 + str r0, [r4, #0x34] + b _020517B8 +_020515BA: + add r1, r4, #0x0 + add r1, #0x84 + ldrb r1, [r1, #0x0] + ldr r0, [r4, #0x50] + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0x28] + mov r1, #0x1 + bl FUN_0200AC60 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0x12 + bl FUN_0200A8E0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0xc] + bl FUN_0200B7B8 + ldr r1, [r4, #0x10] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x25 + str r0, [r4, #0x34] + b _020517B8 +_020515F8: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _0205168E + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02051C88 + mov r0, #0x26 + str r0, [r4, #0x34] + b _020517B8 +_02051614: + add r0, r4, #0x0 + bl FUN_02051D54 + cmp r0, #0x1 + beq _02051642 + cmp r0, #0x2 + bne _0205168E + add r0, r4, #0x0 + bl FUN_02051E24 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0x11 + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x1f + str r0, [r4, #0x34] + b _020517B8 +_02051642: + mov r0, #0x81 + ldrsb r0, [r4, r0] + cmp r0, #0x1 + bne _0205167A + add r0, r4, #0x0 + bl FUN_02051E24 + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0xe + bl FUN_0200A8E0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0xc] + bl FUN_0200B7B8 + ldr r1, [r4, #0x10] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + mov r0, #0x2 + bl FUN_02031588 + mov r0, #0x27 + str r0, [r4, #0x34] + b _020517B8 +_0205167A: + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x21 + str r0, [r4, #0x34] + b _020517B8 +_02051686: + bl FUN_0200E308 + cmp r0, #0x0 + bne _02051690 +_0205168E: + b _020517B8 +_02051690: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02051810 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0xb + str r0, [sp, #0x4] + add r3, r4, #0x0 + add r3, #0x84 + ldrb r3, [r3, #0x0] + ldr r1, [r4, #0x24] + ldr r2, [r4, #0x50] + add r0, r4, #0x0 + bl FUN_02050E48 + mov r0, #0x22 + str r0, [r4, #0x34] + b _020517B8 +_020516B6: + ldr r1, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_02051020 + cmp r0, #0x0 + beq _020517B8 + ldr r0, [r4, #0x24] + bl FUN_0204649C + mov r0, #0x23 + str r0, [r4, #0x34] + b _020517B8 +_020516CE: + add r0, r4, #0x0 + bl FUN_0205104C + cmp r0, #0x0 + beq _020517B8 + mov r0, #0x24 + str r0, [r4, #0x34] + b _020517B8 +_020516DE: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _020517B8 + mov r0, #0x2 + bl FUN_020315D8 + cmp r0, #0x0 + beq _020517B8 + add r0, r4, #0x0 + bl FUN_02051AA4 + mov r0, #0x29 + str r0, [r4, #0x34] + b _020517B8 +_02051702: + add r0, r4, #0x0 + bl FUN_02051AE0 + cmp r0, #0x0 + beq _020517B8 + add r0, r4, #0x0 + add r0, #0x84 + ldrb r0, [r0, #0x0] + cmp r0, #0xff + bne _02051722 + mov r0, #0x4 + bl FUN_02031588 + mov r0, #0x2c + str r0, [r4, #0x34] + b _020517B8 +_02051722: + add r0, r4, #0x0 + add r0, #0x85 + ldrb r0, [r0, #0x0] + cmp r0, #0xff + bne _02051732 + mov r0, #0x2a + str r0, [r4, #0x34] + b _020517B8 +_02051732: + add r0, r4, #0x0 + bl FUN_02051B1C + mov r0, #0x5d + bl FUN_02031588 + mov r0, #0x2 + str r0, [r4, #0x34] + b _020517B8 +_02051744: + ldr r0, [r4, #0x2c] + ldr r2, [r4, #0xc] + mov r1, #0xf + bl FUN_0200A8E0 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + bl FUN_020517C0 + str r0, [r4, #0x30] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x43 + strb r1, [r0, #0x0] + mov r0, #0x2b + str r0, [r4, #0x34] + b _020517B8 +_02051766: + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _020517B8 + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + add r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x43 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x43 + ldrb r0, [r0, #0x0] + cmp r0, #0x3c + bls _020517B8 + mov r0, #0x4 + bl FUN_02031588 + mov r0, #0x2c + str r0, [r4, #0x34] + b _020517B8 +_02051798: + mov r0, #0x4 + bl FUN_020315D8 + cmp r0, #0x0 + beq _020517B8 + add r0, r4, #0x0 + add r0, #0x14 + mov r1, #0x0 + bl FUN_0200D0E0 + mov r0, #0x0 + ldr r2, [r4, #0x8] + add r1, r0, #0x0 + blx r2 + mov r0, #0x5 + str r0, [r4, #0x34] +_020517B8: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020517C0 +FUN_020517C0: ; 0x020517C0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r5, #0x0 + add r4, #0x14 + add r0, r4, #0x0 + add r6, r1, #0x0 + bl FUN_02019048 + cmp r0, #0x0 + bne _020517F2 + ldr r0, [r5, #0x24] + add r1, r4, #0x0 + ldr r0, [r0, #0x8] + mov r2, #0x3 + bl FUN_020545B8 + ldr r0, [r5, #0x24] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02054608 + b _020517F8 +_020517F2: + add r0, r4, #0x0 + bl FUN_0205464C +_020517F8: + ldr r0, [r5, #0x24] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r3, #0x1 + bl FUN_02054658 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02051810 +FUN_02051810: ; 0x02051810 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x14 + add r4, r1, #0x0 + bl FUN_02019048 + cmp r0, #0x0 + beq _02051846 + cmp r4, #0x0 + beq _02051836 + add r0, r5, #0x0 + add r0, #0x14 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r5, #0x0 + add r0, #0x14 + bl FUN_02019570 +_02051836: + add r0, r5, #0x0 + add r0, #0x14 + bl FUN_02019178 + add r0, r5, #0x0 + add r0, #0x14 + bl FUN_0201901C +_02051846: + add r0, r5, #0x0 + add r0, #0x54 + bl FUN_02019048 + cmp r0, #0x0 + beq _02051862 + add r0, r5, #0x0 + add r0, #0x54 + bl FUN_02019178 + add r0, r5, #0x0 + add r0, #0x54 + bl FUN_0201901C +_02051862: + add r0, r5, #0x0 + add r0, #0x64 + bl FUN_02019048 + cmp r0, #0x0 + beq _0205187E + add r0, r5, #0x0 + add r0, #0x64 + bl FUN_02019178 + add r5, #0x64 + add r0, r5, #0x0 + bl FUN_0201901C +_0205187E: + pop {r3-r5, pc} + + thumb_func_start FUN_02051880 +FUN_02051880: ; 0x02051880 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + add r6, r1, #0x0 + cmp r0, #0x0 + beq _0205188E + b _02051992 +_0205188E: + mov r0, #0xb + mov r1, #0x8c + bl FUN_020169D8 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x8c + blx MI_CpuFill8 + add r0, r4, #0x0 + mov r1, #0x5 + add r0, #0x43 + strb r1, [r0, #0x0] + str r5, [r4, #0x24] + str r6, [r4, #0x8] + mov r0, #0xb + bl FUN_0200AA80 + str r0, [r4, #0x28] + mov r0, #0x0 + mov r1, #0x1a + mov r2, #0x9 + mov r3, #0xb + bl FUN_0200A86C + str r0, [r4, #0x2c] + mov r0, #0xc8 + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0xc] + mov r0, #0xc8 + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0x10] + add r0, r4, #0x0 + add r0, #0x14 + bl FUN_0201901C + add r0, r4, #0x0 + add r0, #0x54 + bl FUN_0201901C + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_0201901C + mov r0, #0xb + bl FUN_02013690 + str r0, [r4, #0x78] + bl FUN_02033534 + add r1, r4, #0x0 + add r1, #0x88 + strb r0, [r1, #0x0] + mov r1, #0x0 + str r1, [r4, #0x4c] + str r1, [r4, #0x48] + add r0, r4, #0x0 + str r1, [r4, #0x50] + add r0, #0x89 + strb r1, [r0, #0x0] + bl FUN_02031190 + add r1, r4, #0x0 + add r1, #0x86 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x86 + ldrh r1, [r0, #0x0] + mov r0, #0x1 + eor r0, r1 + bl FUN_0202DFA4 + str r0, [r4, #0x74] + add r0, r4, #0x0 + add r0, #0x88 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _02051938 + cmp r0, #0x4 + beq _0205196E + b _02051974 +_02051938: + bl FUN_02051E54 + add r6, r0, #0x0 + mov r0, #0xb + add r1, r6, #0x0 + bl FUN_020169D8 + str r0, [r4, #0x4c] + mov r0, #0xb + add r1, r6, #0x0 + bl FUN_020169D8 + str r0, [r4, #0x48] + mov r0, #0xb + bl FUN_0206B8AC + mov r1, #0x3 + str r0, [r4, #0x50] + bl FUN_0206B8CC + add r0, r4, #0x0 + mov r1, #0x5 + add r0, #0x44 + strb r1, [r0, #0x0] + mov r0, #0x17 + str r0, [r4, #0x34] + b _02051988 +_0205196E: + mov r0, #0x9 + str r0, [r4, #0x34] + b _02051988 +_02051974: + ldr r0, [r4, #0x24] + add r0, #0xac + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02051984 + mov r0, #0x9 + str r0, [r4, #0x34] + b _02051988 +_02051984: + mov r0, #0x0 + str r0, [r4, #0x34] +_02051988: + ldr r1, _02051994 ; =FUN_02051094 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463CC +_02051992: + pop {r4-r6, pc} + .balign 4 +_02051994: .word FUN_02051094 + + thumb_func_start FUN_02051998 +FUN_02051998: ; 0x02051998 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x50] + cmp r0, #0x0 + beq _020519A6 + bl FUN_02016A18 +_020519A6: + ldr r0, [r4, #0x4c] + cmp r0, #0x0 + beq _020519B0 + bl FUN_02016A18 +_020519B0: + ldr r0, [r4, #0x48] + cmp r0, #0x0 + beq _020519BA + bl FUN_02016A18 +_020519BA: + ldr r0, [r4, #0x2c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x28] + bl FUN_0200AB18 + ldr r0, [r4, #0xc] + bl FUN_02021A20 + ldr r0, [r4, #0x10] + bl FUN_02021A20 + ldr r0, [r4, #0x78] + bl FUN_020136C0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02051810 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020519E4 +FUN_020519E4: ; 0x020519E4 + ldr r3, _020519EC ; =FUN_0204652C + ldr r0, [r0, #0x10] + bx r3 + nop +_020519EC: .word FUN_0204652C + + thumb_func_start FUN_020519F0 +FUN_020519F0: ; 0x020519F0 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, [r7, #0x24] + add r5, r1, #0x0 + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + str r0, [sp, #0x0] + ldr r4, [r7, #0x4c] + bl FUN_020690C4 + add r6, r0, #0x0 + lsl r0, r6, #0x1 + add r0, r6, r0 + str r5, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02051A34 + mov r5, #0x0 +_02051A16: + add r1, r7, r5 + add r1, #0x3d + ldrb r1, [r1, #0x0] + ldr r0, [sp, #0x0] + sub r1, r1, #0x1 + bl FUN_0206B9B0 + add r1, r4, #0x0 + add r2, r6, #0x0 + blx MI_CpuCopy8 + add r5, r5, #0x1 + add r4, r4, r6 + cmp r5, #0x3 + blt _02051A16 +_02051A34: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02051A38 +FUN_02051A38: ; 0x02051A38 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x89 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + tst r1, r0 + bne _02051A7C + ldr r4, [r5, #0x4c] + bl FUN_02051E54 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r0, #0x86 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02051A62 + mov r0, #0x6a + add r1, r4, #0x0 + bl FUN_02030B3C + b _02051A6A +_02051A62: + mov r0, #0x6a + add r1, r4, #0x0 + bl FUN_02030A78 +_02051A6A: + cmp r0, #0x0 + beq _02051A7C + add r1, r5, #0x0 + add r1, #0x89 + ldrb r2, [r1, #0x0] + mov r1, #0x1 + add r5, #0x89 + orr r1, r2 + strb r1, [r5, #0x0] +_02051A7C: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02051A80 +FUN_02051A80: ; 0x02051A80 + add r0, #0x89 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bne _02051A8C + mov r0, #0x1 + bx lr +_02051A8C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02051A90 +FUN_02051A90: ; 0x02051A90 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020690C4 + lsl r1, r0, #0x1 + ldr r2, [r4, #0x48] + add r0, r0, r1 + ldr r0, [r2, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02051AA4 +FUN_02051AA4: ; 0x02051AA4 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x86 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02051ABE + add r1, r4, #0x0 + mov r0, #0x6b + add r1, #0x84 + mov r2, #0x1 + bl FUN_02030BC4 + b _02051ACA +_02051ABE: + add r1, r4, #0x0 + mov r0, #0x6b + add r1, #0x84 + mov r2, #0x1 + bl FUN_02030ADC +_02051ACA: + cmp r0, #0x0 + beq _02051ADC + add r1, r4, #0x0 + add r1, #0x89 + ldrb r2, [r1, #0x0] + mov r1, #0x1 + add r4, #0x89 + orr r1, r2 + strb r1, [r4, #0x0] +_02051ADC: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02051AE0 +FUN_02051AE0: ; 0x02051AE0 + add r0, #0x89 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bne _02051AEC + mov r0, #0x1 + bx lr +_02051AEC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02051AF0 +FUN_02051AF0: ; 0x02051AF0 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_020690C4 + add r6, r0, #0x0 + ldr r0, [r5, #0x50] + mov r1, #0x3 + bl FUN_0206B8CC + mov r4, #0x0 +_02051B04: + add r1, r4, #0x0 + ldr r2, [r5, #0x48] + mul r1, r6 + ldr r0, [r5, #0x50] + add r1, r2, r1 + bl FUN_0206B900 + add r4, r4, #0x1 + cmp r4, #0x3 + blt _02051B04 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02051B1C +FUN_02051B1C: ; 0x02051B1C + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_020690C4 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r0, #0x84 + ldrb r0, [r0, #0x0] + ldr r2, [r6, #0x48] + ldr r3, [r6, #0x4c] + add r1, r0, #0x0 + mul r1, r4 + add r0, r2, r1 + add r1, r6, #0x0 + add r1, #0x85 + ldrb r1, [r1, #0x0] + add r2, r1, #0x0 + mul r2, r4 + add r1, r3, r2 + add r2, r4, #0x0 + blx MI_CpuCopy8 + ldr r0, [r6, #0x50] + mov r1, #0x3 + bl FUN_0206B8CC + mov r5, #0x0 +_02051B52: + add r1, r5, #0x0 + ldr r2, [r6, #0x4c] + mul r1, r4 + ldr r0, [r6, #0x50] + add r1, r2, r1 + bl FUN_0206B900 + add r5, r5, #0x1 + cmp r5, #0x3 + blt _02051B52 + pop {r4-r6, pc} + + thumb_func_start FUN_02051B68 +FUN_02051B68: ; 0x02051B68 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + str r0, [sp, #0x20] + add r0, #0x54 + str r1, [sp, #0x14] + str r0, [sp, #0x20] + bl FUN_02019048 + cmp r0, #0x0 + bne _02051C34 + ldr r2, _02051C84 ; =0x0000016A + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0x4 + bl FUN_0200A86C + str r0, [sp, #0x18] + bl FUN_020690C4 + str r0, [sp, #0x1c] + mov r0, #0x9 + str r0, [sp, #0x0] + mov r1, #0xa + str r1, [sp, #0x4] + mov r0, #0x8 + str r0, [sp, #0x8] + mov r0, #0xd + str r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r5, #0x24] + ldr r1, [sp, #0x20] + ldr r0, [r0, #0x8] + mov r2, #0x3 + mov r3, #0x15 + bl FUN_02019064 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + ldr r0, [r5, #0x24] + mov r1, #0x3 + ldr r0, [r0, #0x8] + mov r2, #0x1 + mov r3, #0xb + bl FUN_0200CB00 + ldr r0, [sp, #0x20] + mov r1, #0xf + bl FUN_02019620 + mov r7, #0x0 + add r6, r7, #0x0 + add r4, r7, #0x0 +_02051BD6: + ldr r0, [r5, #0x48] + mov r1, #0x5 + add r0, r0, r6 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x0 + ldr r0, [sp, #0x18] + ldr r2, [r5, #0xc] + bl FUN_0200A8E0 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x20] + ldr r2, [r5, #0xc] + mov r1, #0x0 + mov r3, #0x10 + bl FUN_0201BD84 + ldr r0, [sp, #0x1c] + add r7, r7, #0x1 + add r6, r6, r0 + add r4, #0x10 + cmp r7, #0x3 + blt _02051BD6 + ldr r0, [r5, #0x2c] + ldr r2, [r5, #0xc] + mov r1, #0x15 + bl FUN_0200A8E0 + lsl r0, r7, #0x4 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + ldr r0, [sp, #0x20] + ldr r2, [r5, #0xc] + mov r3, #0x10 + bl FUN_0201BD84 + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 +_02051C34: + mov r0, #0x10 + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + mov r2, #0x0 + ldrb r0, [r0, #0x8] + mov r1, #0xf + add r3, r2, #0x0 + lsl r0, r0, #0x13 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + ldr r0, [sp, #0x20] + bl FUN_020196F4 + ldr r3, [sp, #0x14] + add r1, r5, #0x0 + ldr r0, [r5, #0x78] + add r1, #0x54 + mov r2, #0x0 + lsl r3, r3, #0x4 + bl FUN_020136F8 + add r0, r5, #0x0 + add r0, #0x54 + mov r1, #0x0 + mov r2, #0x1 + mov r3, #0xb + bl FUN_0200CCA4 + add r1, r5, #0x0 + ldr r0, [sp, #0x14] + add r1, #0x81 + strb r0, [r1, #0x0] + add r0, r5, #0x0 + mov r1, #0x4 + add r0, #0x80 + strb r1, [r0, #0x0] + ldr r0, [sp, #0x20] + str r0, [r5, #0x7c] + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02051C84: .word 0x0000016A + + thumb_func_start FUN_02051C88 +FUN_02051C88: ; 0x02051C88 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r7, r5, #0x0 + add r7, #0x64 + add r0, r7, #0x0 + str r1, [sp, #0x14] + bl FUN_02019048 + cmp r0, #0x0 + bne _02051D0A + mov r0, #0xb + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x6 + str r0, [sp, #0x8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x5a + str r0, [sp, #0x10] + ldr r0, [r5, #0x24] + add r1, r7, #0x0 + ldr r0, [r0, #0x8] + mov r2, #0x3 + mov r3, #0x14 + bl FUN_02019064 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + ldr r0, [r5, #0x24] + mov r1, #0x3 + ldr r0, [r0, #0x8] + mov r2, #0x1 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r7, #0x0 + mov r1, #0xf + bl FUN_02019620 + mov r6, #0x0 + add r4, r6, #0x0 +_02051CE0: + add r1, r6, #0x0 + ldr r0, [r5, #0x2c] + ldr r2, [r5, #0xc] + add r1, #0x16 + bl FUN_0200A8E0 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r2, [r5, #0xc] + add r0, r7, #0x0 + mov r1, #0x0 + mov r3, #0x10 + bl FUN_0201BD84 + add r6, r6, #0x1 + add r4, #0x10 + cmp r6, #0x3 + blt _02051CE0 +_02051D0A: + add r0, r5, #0x0 + mov r1, #0x3 + add r0, #0x80 + strb r1, [r0, #0x0] + add r1, r5, #0x0 + ldr r0, [sp, #0x14] + str r7, [r5, #0x7c] + add r1, #0x81 + strb r0, [r1, #0x0] + mov r0, #0x10 + str r0, [sp, #0x0] + ldrb r0, [r7, #0x8] + mov r2, #0x0 + mov r1, #0xf + lsl r0, r0, #0x13 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + add r0, r7, #0x0 + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r3, [sp, #0x14] + ldr r0, [r5, #0x78] + ldr r1, [r5, #0x7c] + mov r2, #0x0 + lsl r3, r3, #0x4 + bl FUN_020136F8 + ldr r0, [r5, #0x7c] + mov r1, #0x0 + mov r2, #0x1 + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02051D54 +FUN_02051D54: ; 0x02051D54 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r0, _02051E1C ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _02051D7E + mov r0, #0x81 + ldrsb r0, [r4, r0] + cmp r0, #0x0 + bne _02051D74 + add r0, r4, #0x0 + add r0, #0x80 + ldrb r0, [r0, #0x0] + b _02051D74 +_02051D74: + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x81 + strb r1, [r0, #0x0] + b _02051DE0 +_02051D7E: + mov r1, #0x80 + tst r1, r0 + beq _02051DA2 + mov r0, #0x81 + ldrsb r1, [r4, r0] + add r0, r4, #0x0 + add r0, #0x80 + ldrb r0, [r0, #0x0] + sub r0, r0, #0x1 + cmp r1, r0 + bne _02051D98 + mov r1, #0x0 + b _02051D9A +_02051D98: + add r1, r1, #0x1 +_02051D9A: + add r0, r4, #0x0 + add r0, #0x81 + strb r1, [r0, #0x0] + b _02051DE0 +_02051DA2: + mov r1, #0x1 + tst r1, r0 + beq _02051DC8 + ldr r0, _02051E20 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x81 + ldrsb r1, [r4, r0] + add r4, #0x80 + ldrb r0, [r4, #0x0] + sub r0, r0, #0x1 + cmp r1, r0 + bge _02051DC2 + add sp, #0x8 + mov r0, #0x1 + pop {r4, pc} +_02051DC2: + add sp, #0x8 + mov r0, #0x2 + pop {r4, pc} +_02051DC8: + mov r1, #0x2 + tst r0, r1 + beq _02051DDA + ldr r0, _02051E20 ; =0x000005DC + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x2 + pop {r4, pc} +_02051DDA: + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_02051DE0: + ldr r0, _02051E20 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x7c] + mov r1, #0x10 + str r1, [sp, #0x0] + ldrb r1, [r0, #0x8] + mov r2, #0x0 + add r3, r2, #0x0 + lsl r1, r1, #0x13 + lsr r1, r1, #0x10 + str r1, [sp, #0x4] + mov r1, #0xf + bl FUN_020196F4 + mov r3, #0x81 + ldrsb r3, [r4, r3] + ldr r0, [r4, #0x78] + ldr r1, [r4, #0x7c] + mov r2, #0x0 + lsl r3, r3, #0x4 + bl FUN_020136F8 + ldr r0, [r4, #0x7c] + bl FUN_02019548 + mov r0, #0x0 + add sp, #0x8 + pop {r4, pc} + nop +_02051E1C: .word 0x021C48B8 +_02051E20: .word 0x000005DC + + thumb_func_start FUN_02051E24 +FUN_02051E24: ; 0x02051E24 + ldr r3, _02051E2C ; =FUN_0200CCF8 + ldr r0, [r0, #0x7c] + mov r1, #0x1 + bx r3 + .balign 4 +_02051E2C: .word FUN_0200CCF8 + + thumb_func_start FUN_02051E30 +FUN_02051E30: ; 0x02051E30 + push {r4, lr} + add r4, r0, #0x0 + add r0, r3, #0x0 + bl FUN_020519E4 + add r1, r0, #0x0 + add r1, #0x86 + ldrh r1, [r1, #0x0] + cmp r1, r4 + beq _02051E52 + add r1, r0, #0x0 + add r1, #0x89 + ldrb r2, [r1, #0x0] + mov r1, #0x2 + add r0, #0x89 + orr r1, r2 + strb r1, [r0, #0x0] +_02051E52: + pop {r4, pc} + + thumb_func_start FUN_02051E54 +FUN_02051E54: ; 0x02051E54 + push {r3, lr} + bl FUN_020690C4 + lsl r1, r0, #0x1 + add r0, r0, r1 + add r0, r0, #0x4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02051E64 +FUN_02051E64: ; 0x02051E64 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_020519E4 + add r1, r0, #0x0 + add r1, #0x86 + ldrh r1, [r1, #0x0] + cmp r1, r4 + beq _02051E7C + ldr r0, [r0, #0x48] + pop {r4, pc} +_02051E7C: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02051E80 +FUN_02051E80: ; 0x02051E80 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r3, #0x0 + add r4, r2, #0x0 + bl FUN_020519E4 + add r1, r0, #0x0 + add r1, #0x86 + ldrh r1, [r1, #0x0] + cmp r1, r5 + beq _02051EAC + ldrb r2, [r4, #0x0] + add r1, r0, #0x0 + add r1, #0x85 + strb r2, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x89 + ldrb r2, [r1, #0x0] + mov r1, #0x2 + add r0, #0x89 + orr r1, r2 + strb r1, [r0, #0x0] +_02051EAC: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02051EB0 +FUN_02051EB0: ; 0x02051EB0 + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r1, #0x0 + ldr r0, [r4, #0x24] + add r2, r1, #0x0 + bl FUN_02050BF8 + add r6, r0, #0x0 + ldr r0, [r4, #0x28] + cmp r0, #0x7 + bls _02051ED6 + b _02052036 +_02051ED6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02051EE2: ; jump table (using 16-bit offset) + .short _02051EF2 - _02051EE2 - 2; case 0 + .short _02051F7C - _02051EE2 - 2; case 1 + .short _02051FCC - _02051EE2 - 2; case 2 + .short _02051FDC - _02051EE2 - 2; case 3 + .short _02051FEC - _02051EE2 - 2; case 4 + .short _02051FFE - _02051EE2 - 2; case 5 + .short _0205200C - _02051EE2 - 2; case 6 + .short _02052028 - _02051EE2 - 2; case 7 +_02051EF2: + mov r0, #0x4 + bl FUN_0200AA80 + str r0, [r4, #0x18] + mov r0, #0x0 + mov r1, #0x1a + mov r2, #0x9 + mov r3, #0x4 + bl FUN_0200A86C + str r0, [r4, #0x1c] + mov r0, #0xc8 + mov r1, #0x4 + bl FUN_020219F4 + str r0, [r4, #0x0] + mov r0, #0xc8 + mov r1, #0x4 + bl FUN_020219F4 + str r0, [r4, #0x4] + ldrb r1, [r6, #0x3] + ldr r0, [r4, #0x1c] + ldr r2, [r4, #0x0] + add r1, r1, #0x2 + bl FUN_0200A8E0 + ldr r0, [r4, #0x24] + bl FUN_0202DFA4 + add r2, r0, #0x0 + ldr r0, [r4, #0x18] + mov r1, #0x0 + bl FUN_0200ABC0 + ldr r0, [r4, #0x18] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x0] + bl FUN_0200B7B8 + add r1, r4, #0x0 + ldr r0, [r5, #0x8] + add r1, #0x8 + mov r2, #0x3 + bl FUN_020545B8 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x8 + bl FUN_02054608 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + add r0, r4, #0x0 + ldr r1, [r4, #0x4] + add r0, #0x8 + mov r3, #0x1 + bl FUN_02054658 + str r0, [r4, #0x20] + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_02051F7C: + ldr r0, [r4, #0x20] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x0 + beq _0205203A + ldr r0, _02052040 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _0205203A + ldr r0, [r4, #0x1c] + bl FUN_0200A8B8 + ldr r0, [r4, #0x18] + bl FUN_0200AB18 + ldr r0, [r4, #0x0] + bl FUN_02021A20 + ldr r0, [r4, #0x4] + bl FUN_02021A20 + add r0, r4, #0x0 + add r0, #0x8 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r4, #0x0 + add r0, #0x8 + bl FUN_02019178 + mov r0, #0x0 + bl FUN_021D7CA4 + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_02051FCC: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0205203A + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_02051FDC: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02038680 + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_02051FEC: + add r0, r5, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _0205203A + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_02051FFE: + add r0, r5, #0x0 + bl FUN_0204649C + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_0205200C: + add r0, r5, #0x0 + bl FUN_020464A4 + cmp r0, #0x0 + bne _0205203A + mov r0, #0x1 + bl FUN_021D7CA4 + bl FUN_0204CC9C + ldr r0, [r4, #0x28] + add r0, r0, #0x1 + str r0, [r4, #0x28] + b _0205203A +_02052028: + bl FUN_0204F7FC + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r4-r6, pc} +_02052036: + mov r0, #0x1 + pop {r4-r6, pc} +_0205203A: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02052040: .word 0x021C48B8 + + thumb_func_start FUN_02052044 +FUN_02052044: ; 0x02052044 + push {r3-r7, lr} + str r0, [sp, #0x0] + bl FUN_02031190 + add r5, r0, #0x0 + bl FUN_0204E4D4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204E50C + add r6, r0, #0x0 + mov r4, #0x0 + bl FUN_02030F20 + cmp r0, #0x0 + ble _020520A6 +_02052066: + cmp r4, r5 + beq _0205209C + add r0, r4, #0x0 + bl FUN_0204E3EC + cmp r7, r0 + bne _0205209C + add r0, r4, #0x0 + bl FUN_0204E440 + cmp r6, r0 + bne _0205209C + mov r0, #0xb + mov r1, #0x2c + bl FUN_020169D8 + add r2, r0, #0x0 + str r4, [r2, #0x24] + mov r0, #0x0 + str r0, [r2, #0x28] + ldr r0, [sp, #0x0] + ldr r1, _020520A8 ; =FUN_02051EB0 + bl FUN_020463CC + bl FUN_02037760 + pop {r3-r7, pc} +_0205209C: + add r4, r4, #0x1 + bl FUN_02030F20 + cmp r4, r0 + blt _02052066 +_020520A6: + pop {r3-r7, pc} + .balign 4 +_020520A8: .word FUN_02051EB0 + + thumb_func_start FUN_020520AC +FUN_020520AC: ; 0x020520AC + push {r3-r5, lr} + add r4, r0, #0x0 + bne _020520B6 + bl ErrorHandling +_020520B6: + ldr r0, [r4, #0x78] + cmp r0, #0x0 + beq _020520C0 + mov r0, #0x0 + pop {r3-r5, pc} +_020520C0: + mov r2, #0x2a + mov r0, #0x3 + mov r1, #0x1f + lsl r2, r2, #0x6 + bl FUN_02016828 + add r0, r4, #0x0 + bl FUN_02052110 + add r5, r0, #0x0 + bne _020520D8 + ldr r5, [r4, #0x78] +_020520D8: + add r0, r4, #0x0 + bl FUN_0208881C + mov r0, #0x2 + bl FUN_02032B6C + ldr r1, _020520F4 ; =FUN_02052178 + add r0, r5, #0x0 + mov r2, #0x28 + bl FUN_02052300 + add r0, r5, #0x0 + pop {r3-r5, pc} + nop +_020520F4: .word FUN_02052178 + + thumb_func_start FUN_020520F8 +FUN_020520F8: ; 0x020520F8 + push {r3, lr} + ldr r0, [r0, #0x78] + cmp r0, #0x0 + beq _02052108 + ldr r1, _0205210C ; =FUN_02052348 + mov r2, #0x5 + bl FUN_02052300 +_02052108: + pop {r3, pc} + nop +_0205210C: .word FUN_02052348 + + thumb_func_start FUN_02052110 +FUN_02052110: ; 0x02052110 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x78] + cmp r1, #0x0 + beq _0205211E + mov r0, #0x0 + pop {r4-r6, pc} +_0205211E: + bl FUN_020377AC + add r6, r0, #0x0 + bl FUN_02031A7C + mov r1, #0x19 + mov r0, #0x1f + lsl r1, r1, #0x4 + bl FUN_02016998 + mov r2, #0x19 + mov r1, #0x0 + lsl r2, r2, #0x4 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x0 + str r0, [r4, #0x10] + mov r0, #0x28 + str r0, [r4, #0x14] + ldr r0, _02052174 ; =FUN_02052308 + add r1, r4, #0x0 + mov r2, #0xa + bl FUN_0200CA44 + str r0, [r4, #0xc] + str r5, [r4, #0x0] + str r6, [r4, #0x4] + add r0, r6, #0x0 + bl FUN_020238F4 + str r0, [r4, #0x8] + add r0, r4, #0x0 + bl FUN_02052E1C + mov r0, #0x15 + lsl r0, r0, #0x4 + add r0, r4, r0 + bl FUN_020312BC + add r0, r4, #0x0 + pop {r4-r6, pc} + nop +_02052174: .word FUN_02052308 + + thumb_func_start FUN_02052178 +FUN_02052178: ; 0x02052178 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_0202EDF8 + cmp r0, #0x0 + beq _020521A4 + add r0, sp, #0x0 + bl FUN_02013754 + add r0, sp, #0x0 + bl FUN_02052DE8 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02052CD8 + ldr r1, _020521A8 ; =FUN_020521AC + add r0, r4, #0x0 + mov r2, #0x28 + bl FUN_02052300 +_020521A4: + add sp, #0x8 + pop {r4, pc} + .balign 4 +_020521A8: .word FUN_020521AC + + thumb_func_start FUN_020521AC +FUN_020521AC: ; 0x020521AC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031B2C + cmp r0, #0x0 + beq _020521C8 + ldr r0, _02052208 ; =0x021C5A70 + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r1, _0205220C ; =FUN_0205225C + add r0, r4, #0x0 + bl FUN_02052300 + pop {r4, pc} +_020521C8: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _02052206 + mov r0, #0x2 + str r0, [r4, #0x28] + ldr r0, [r4, #0x20] + cmp r0, #0x1 + bne _020521EC + ldr r0, [r4, #0x30] + cmp r0, #0x5 + ldr r0, [r4, #0x18] + bne _020521E6 + bl FUN_020328F4 + b _020521FC +_020521E6: + bl FUN_02031AC8 + b _020521FC +_020521EC: + cmp r0, #0x2 + bne _020521FC + mov r0, #0x0 + bl FUN_02083D48 + ldr r0, [r4, #0x18] + bl FUN_020328C0 +_020521FC: + ldr r1, _02052210 ; =FUN_02052380 + add r0, r4, #0x0 + mov r2, #0xc + bl FUN_02052300 +_02052206: + pop {r4, pc} + .balign 4 +_02052208: .word 0x021C5A70 +_0205220C: .word FUN_0205225C +_02052210: .word FUN_02052380 + + thumb_func_start FUN_02052214 +FUN_02052214: ; 0x02052214 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031BD0 + cmp r0, #0x1 + bne _02052230 + ldr r0, [r4, #0x0] + bl FUN_0208881C + ldr r1, _02052234 ; =FUN_020521AC + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 +_02052230: + pop {r4, pc} + nop +_02052234: .word FUN_020521AC + + thumb_func_start FUN_02052238 +FUN_02052238: ; 0x02052238 + push {r3-r5, lr} + mov r5, #0x0 + mov r4, #0x1 +_0205223E: + add r0, r4, #0x0 + bl FUN_0202DFA4 + cmp r0, #0x0 + beq _0205224A + add r5, r5, #0x1 +_0205224A: + add r4, r4, #0x1 + cmp r4, #0x5 + blt _0205223E + cmp r5, #0x1 + blt _02052258 + mov r0, #0x1 + pop {r3-r5, pc} +_02052258: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205225C +FUN_0205225C: ; 0x0205225C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ble _0205226C + sub r0, r0, #0x1 + str r0, [r4, #0x14] + pop {r4, pc} +_0205226C: + ldr r0, _020522C4 ; =0x021C5A70 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + bl FUN_020311E8 + cmp r0, #0x0 + beq _020522A0 + bl FUN_02052238 + cmp r0, #0x1 + bne _020522A0 + bl FUN_0202DBE0 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_020334E8 + mov r0, #0xb + bl FUN_02052B74 + ldr r1, _020522C8 ; =FUN_020522D0 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02052300 +_020522A0: + bl FUN_02031B2C + cmp r0, #0x0 + bne _020522C2 + bl FUN_02031B50 + add r0, r4, #0x0 + bl FUN_02052E1C + mov r0, #0x0 + bl FUN_02052B74 + ldr r1, _020522CC ; =FUN_02052214 + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 +_020522C2: + pop {r4, pc} + .balign 4 +_020522C4: .word 0x021C5A70 +_020522C8: .word FUN_020522D0 +_020522CC: .word FUN_02052214 + + thumb_func_start FUN_020522D0 +FUN_020522D0: ; 0x020522D0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020311E8 + bl FUN_020311E8 + cmp r0, #0x0 + bne _020522FA + bl FUN_02031B50 + add r0, r4, #0x0 + bl FUN_02052E1C + mov r0, #0x0 + bl FUN_02052B74 + ldr r1, _020522FC ; =FUN_02052214 + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 +_020522FA: + pop {r4, pc} + .balign 4 +_020522FC: .word FUN_02052214 + + thumb_func_start FUN_02052300 +FUN_02052300: ; 0x02052300 + str r1, [r0, #0x10] + str r2, [r0, #0x14] + bx lr + .balign 4 + + thumb_func_start FUN_02052308 +FUN_02052308: ; 0x02052308 + push {r3-r7, lr} + str r1, [sp, #0x0] + cmp r1, #0x0 + bne _02052316 + bl FUN_0200CAB4 + pop {r3-r7, pc} +_02052316: + mov r7, #0x11 + ldr r5, _02052344 ; =0x021C5A7C + mov r6, #0x0 + add r4, r1, #0x0 + lsl r7, r7, #0x4 +_02052320: + add r0, r6, #0x0 + bl FUN_0202EF18 + mov r1, #0x11 + lsl r1, r1, #0x4 + str r0, [r4, r1] + ldr r0, [r4, r7] + add r6, r6, #0x1 + add r4, r4, #0x4 + stmia r5!, {r0} + cmp r6, #0x10 + blt _02052320 + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _02052342 + blx r1 +_02052342: + pop {r3-r7, pc} + .balign 4 +_02052344: .word 0x021C5A7C + + thumb_func_start FUN_02052348 +FUN_02052348: ; 0x02052348 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + beq _02052358 + sub r0, r0, #0x1 + str r0, [r4, #0x14] + pop {r4, pc} +_02052358: + bl FUN_02031BF4 + ldr r1, _02052368 ; =FUN_0205236C + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02052300 + pop {r4, pc} + .balign 4 +_02052368: .word FUN_0205236C + + thumb_func_start FUN_0205236C +FUN_0205236C: ; 0x0205236C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _0205237E + add r0, r4, #0x0 + bl FUN_020524A0 +_0205237E: + pop {r4, pc} + + thumb_func_start FUN_02052380 +FUN_02052380: ; 0x02052380 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031AF4 + cmp r0, #0x1 + bne _0205239C + bl FUN_0202DBE0 + ldr r1, _020523D4 ; =FUN_02052410 + add r0, r4, #0x0 + mov r2, #0x3 + bl FUN_02052300 + pop {r4, pc} +_0205239C: + bl FUN_020311E8 + cmp r0, #0x0 + beq _020523B4 + mov r2, #0x0 + str r2, [r4, #0x20] + mov r0, #0x3 + str r0, [r4, #0x1c] + ldr r1, _020523D8 ; =FUN_0205225C + add r0, r4, #0x0 + bl FUN_02052300 +_020523B4: + bl FUN_02031AF4 + cmp r0, #0x0 + beq _020523D2 + ldr r1, _020523DC ; =FUN_020523E0 + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 + mov r1, #0x0 + str r1, [r4, #0x24] + mov r0, #0x2 + str r0, [r4, #0x1c] + str r1, [r4, #0x20] + str r1, [r4, #0x44] +_020523D2: + pop {r4, pc} + .balign 4 +_020523D4: .word FUN_02052410 +_020523D8: .word FUN_0205225C +_020523DC: .word FUN_020523E0 + + thumb_func_start FUN_020523E0 +FUN_020523E0: ; 0x020523E0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204646C + cmp r0, #0x0 + bne _02052408 + bl FUN_02031B50 + add r0, r4, #0x0 + bl FUN_02052E1C + mov r0, #0x0 + bl FUN_02052B74 + ldr r1, _0205240C ; =FUN_02052214 + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 +_02052408: + pop {r4, pc} + nop +_0205240C: .word FUN_02052214 + + thumb_func_start FUN_02052410 +FUN_02052410: ; 0x02052410 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031AF4 + cmp r0, #0x1 + bne _02052444 + bl FUN_02031190 + bl FUN_0202DFA4 + cmp r0, #0x0 + beq _0205246C + mov r1, #0x0 + str r1, [r4, #0x20] + mov r0, #0x1 + str r0, [r4, #0x1c] + str r1, [r4, #0x44] + add r1, r0, #0x0 + bl FUN_020334E8 + ldr r1, _02052470 ; =FUN_02052478 + add r0, r4, #0x0 + mov r2, #0x3 + bl FUN_02052300 + pop {r4, pc} +_02052444: + bl FUN_02031AF4 + cmp r0, #0x0 + bne _0205246C + bl FUN_02031B50 + add r0, r4, #0x0 + bl FUN_02052E1C + ldr r1, _02052474 ; =FUN_02052214 + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 + mov r1, #0x0 + str r1, [r4, #0x24] + mov r0, #0x2 + str r0, [r4, #0x1c] + str r1, [r4, #0x20] + str r1, [r4, #0x44] +_0205246C: + pop {r4, pc} + nop +_02052470: .word FUN_02052478 +_02052474: .word FUN_02052214 + + thumb_func_start FUN_02052478 +FUN_02052478: ; 0x02052478 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031AF4 + cmp r0, #0x0 + bne _02052498 + bl FUN_02031B50 + add r0, r4, #0x0 + bl FUN_02052E1C + ldr r1, _0205249C ; =FUN_02052214 + add r0, r4, #0x0 + mov r2, #0x2 + bl FUN_02052300 +_02052498: + pop {r4, pc} + nop +_0205249C: .word FUN_02052214 + + thumb_func_start FUN_020524A0 +FUN_020524A0: ; 0x020524A0 + push {r4, lr} + add r4, r0, #0x0 + beq _020524B8 + ldr r0, [r4, #0xc] + bl FUN_0200CAB4 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1f + bl FUN_020168D0 +_020524B8: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020524BC +FUN_020524BC: ; 0x020524BC + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_020524C0 +FUN_020524C0: ; 0x020524C0 + lsl r1, r1, #0x2 + add r1, r0, r1 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + bx lr + + thumb_func_start FUN_020524CC +FUN_020524CC: ; 0x020524CC + push {r4-r6, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + sub r0, r5, #0x1 + bl FUN_0202EF84 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02052E10 + cmp r6, #0x0 + bne _020524E8 + mov r0, #0x5 + pop {r4-r6, pc} +_020524E8: + sub r0, r5, #0x1 + lsl r0, r0, #0x2 + add r1, r4, r0 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldr r1, [r1, r0] + ldr r0, _02052540 ; =0x021C5A70 + add r1, #0x50 + add r1, #0x30 + str r1, [r0, #0x4] + ldrb r0, [r1, #0x1c] + cmp r0, #0xb + bhi _0205253A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205250E: ; jump table (using 16-bit offset) + .short _02052526 - _0205250E - 2; case 0 + .short _0205252A - _0205250E - 2; case 1 + .short _0205252E - _0205250E - 2; case 2 + .short _02052532 - _0205250E - 2; case 3 + .short _02052536 - _0205250E - 2; case 4 + .short _02052536 - _0205250E - 2; case 5 + .short _02052536 - _0205250E - 2; case 6 + .short _02052536 - _0205250E - 2; case 7 + .short _02052536 - _0205250E - 2; case 8 + .short _0205253A - _0205250E - 2; case 9 + .short _0205253A - _0205250E - 2; case 10 + .short _02052536 - _0205250E - 2; case 11 +_02052526: + mov r0, #0x1 + pop {r4-r6, pc} +_0205252A: + mov r0, #0x2 + pop {r4-r6, pc} +_0205252E: + mov r0, #0x3 + pop {r4-r6, pc} +_02052532: + mov r0, #0x4 + pop {r4-r6, pc} +_02052536: + mov r0, #0x5 + pop {r4-r6, pc} +_0205253A: + mov r0, #0x5 + pop {r4-r6, pc} + nop +_02052540: .word 0x021C5A70 + + thumb_func_start FUN_02052544 +FUN_02052544: ; 0x02052544 + push {r4-r6, lr} + add r6, r1, #0x0 + add r4, r0, #0x0 + sub r0, r6, #0x1 + add r5, r2, #0x0 + bl FUN_0202EF84 + sub r0, r6, #0x1 + lsl r1, r0, #0x2 + add r2, r4, r1 + mov r1, #0x11 + lsl r1, r1, #0x4 + ldr r2, [r2, r1] + ldr r1, _02052600 ; =0x021C5A70 + add r2, #0x50 + add r2, #0x30 + str r2, [r1, #0x4] + ldrb r1, [r2, #0x1c] + cmp r1, #0xb + bhi _020525F8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02052578: ; jump table (using 16-bit offset) + .short _020525C6 - _02052578 - 2; case 0 + .short _020525DC - _02052578 - 2; case 1 + .short _020525AC - _02052578 - 2; case 2 + .short _02052590 - _02052578 - 2; case 3 + .short _020525F4 - _02052578 - 2; case 4 + .short _020525F4 - _02052578 - 2; case 5 + .short _020525F4 - _02052578 - 2; case 6 + .short _020525F4 - _02052578 - 2; case 7 + .short _020525F4 - _02052578 - 2; case 8 + .short _020525F8 - _02052578 - 2; case 9 + .short _020525F8 - _02052578 - 2; case 10 + .short _020525F4 - _02052578 - 2; case 11 +_02052590: + cmp r5, #0x4 + beq _02052598 + mov r0, #0x5 + pop {r4-r6, pc} +_02052598: + mov r1, #0x6 + str r1, [r4, #0x30] + str r0, [r4, #0x18] + mov r0, #0x2 + str r0, [r4, #0x20] + mov r0, #0x0 + str r0, [r4, #0x24] + str r0, [r4, #0x1c] + mov r0, #0x1 + pop {r4-r6, pc} +_020525AC: + cmp r5, #0x3 + beq _020525B4 + mov r0, #0x5 + pop {r4-r6, pc} +_020525B4: + mov r1, #0x5 + str r1, [r4, #0x30] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x20] + mov r1, #0x0 + str r1, [r4, #0x24] + str r1, [r4, #0x1c] + pop {r4-r6, pc} +_020525C6: + cmp r5, #0x1 + beq _020525CE + mov r0, #0x5 + pop {r4-r6, pc} +_020525CE: + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x20] + mov r1, #0x0 + str r1, [r4, #0x24] + str r1, [r4, #0x1c] + pop {r4-r6, pc} +_020525DC: + cmp r5, #0x2 + beq _020525E4 + mov r0, #0x5 + pop {r4-r6, pc} +_020525E4: + str r0, [r4, #0x18] + mov r0, #0x2 + str r0, [r4, #0x20] + mov r0, #0x0 + str r0, [r4, #0x24] + str r0, [r4, #0x1c] + mov r0, #0x1 + pop {r4-r6, pc} +_020525F4: + mov r0, #0x5 + pop {r4-r6, pc} +_020525F8: + bl ErrorHandling + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_02052600: .word 0x021C5A70 + + thumb_func_start FUN_02052604 +FUN_02052604: ; 0x02052604 + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02052608 +FUN_02052608: ; 0x02052608 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + beq _02052616 + mov r0, #0x7 + pop {r4, pc} +_02052616: + bl FUN_02030F20 + cmp r0, #0x2 + bge _02052622 + mov r0, #0x7 + pop {r4, pc} +_02052622: + bl FUN_02031190 + cmp r0, #0x0 + bne _02052636 + bl FUN_02031B2C + cmp r0, #0x1 + bne _02052642 + ldr r0, [r4, #0x40] + pop {r4, pc} +_02052636: + bl FUN_02031AF4 + cmp r0, #0x1 + bne _02052642 + ldr r0, [r4, #0x40] + pop {r4, pc} +_02052642: + mov r0, #0x7 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02052648 +FUN_02052648: ; 0x02052648 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031B2C + cmp r0, #0x1 + bne _02052658 + ldr r0, [r4, #0x30] + pop {r4, pc} +_02052658: + mov r0, #0x7 + pop {r4, pc} + + thumb_func_start FUN_0205265C +FUN_0205265C: ; 0x0205265C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + add r0, sp, #0x0 + strb r4, [r0, #0x2] + cmp r1, #0x0 + beq _02052670 + cmp r1, #0x1 + beq _02052688 + pop {r3-r5, pc} +_02052670: + ldr r1, [r5, #0x44] + cmp r1, #0x0 + bne _020526B0 + ldrb r0, [r0, #0x2] + add r1, sp, #0x0 + add r1, #0x2 + str r0, [r5, #0x34] + mov r0, #0x63 + mov r2, #0x1 + bl FUN_02030ADC + pop {r3-r5, pc} +_02052688: + cmp r4, #0x0 + bne _020526A0 + ldr r1, [r5, #0x30] + mov r2, #0x1 + strb r1, [r0, #0x1] + add r1, sp, #0x0 + mov r0, #0x67 + add r1, #0x1 + bl FUN_02030BC4 + str r4, [r5, #0x3c] + pop {r3-r5, pc} +_020526A0: + mov r1, #0x7 + strb r1, [r0, #0x0] + mov r0, #0x67 + add r1, sp, #0x0 + mov r2, #0x1 + bl FUN_02030BC4 + str r4, [r5, #0x3c] +_020526B0: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020526B4 +FUN_020526B4: ; 0x020526B4 + bx lr + .balign 4 + + thumb_func_start FUN_020526B8 +FUN_020526B8: ; 0x020526B8 + bx lr + .balign 4 + + thumb_func_start FUN_020526BC +FUN_020526BC: ; 0x020526BC + push {r4, lr} + add r4, r3, #0x0 + ldr r0, [r4, #0x78] + ldr r1, _020526D4 ; =FUN_020521AC + mov r2, #0x2 + bl FUN_02052300 + ldr r0, [r4, #0x78] + bl FUN_02052E1C + pop {r4, pc} + nop +_020526D4: .word FUN_020521AC + + thumb_func_start FUN_020526D8 +FUN_020526D8: ; 0x020526D8 + ldr r1, [r3, #0x78] + ldr r0, [r1, #0x44] + cmp r0, #0x0 + bne _020526EA + ldrb r0, [r2, #0x0] + str r0, [r1, #0x30] + ldrb r1, [r2, #0x0] + ldr r0, _020526EC ; =0x021C5A70 + str r1, [r0, #0x8] +_020526EA: + bx lr + .balign 4 +_020526EC: .word 0x021C5A70 + + thumb_func_start FUN_020526F0 +FUN_020526F0: ; 0x020526F0 + push {r3, lr} + ldr r0, [r3, #0x78] + mov r1, #0x1 + str r1, [r0, #0x2c] + ldrb r1, [r2, #0x0] + ldr r0, [r3, #0x78] + str r1, [r0, #0x40] + ldrb r0, [r2, #0x0] + cmp r0, #0x4 + bne _02052708 + bl FUN_02032888 +_02052708: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205270C +FUN_0205270C: ; 0x0205270C + ldr r0, [r3, #0x78] + mov r1, #0x1 + str r1, [r0, #0x44] + bx lr + + thumb_func_start FUN_02052714 +FUN_02052714: ; 0x02052714 + ldr r0, [r0, #0x44] + bx lr + + thumb_func_start FUN_02052718 +FUN_02052718: ; 0x02052718 + push {r4, lr} + ldr r0, [r0, #0x30] + add r4, r1, #0x0 + cmp r0, #0x0 + bne _02052730 + mov r1, #0x0 + mov r0, #0x68 + add r2, r1, #0x0 + bl FUN_02030ADC + add r0, r4, #0x0 + pop {r4, pc} +_02052730: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02052734 +FUN_02052734: ; 0x02052734 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02031190 + mov r1, #0x1 + eor r0, r1 + bl FUN_0202DFA4 + add r7, r0, #0x0 + ldr r0, _02052784 ; =0x0000066A + mov r1, #0x1 + strh r1, [r6, r0] + bl FUN_02031190 + cmp r5, r0 + beq _02052780 + add r0, r7, #0x0 + bl FUN_0202398C + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020239CC + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + mov r2, #0x1f + bl FUN_0202942C + add r4, #0x98 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x4 + bl FUN_02028AD4 +_02052780: + pop {r3-r7, pc} + nop +_02052784: .word 0x0000066A + + thumb_func_start FUN_02052788 +FUN_02052788: ; 0x02052788 + ldr r1, [r1, #0x78] + lsl r0, r0, #0x2 + add r1, r1, r0 + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02052798 +FUN_02052798: ; 0x02052798 + ldr r1, [r3, #0x78] + ldrb r2, [r2, #0x0] + add r1, r1, r0 + ldr r0, _020527A4 ; =0x00000176 + strb r2, [r1, r0] + bx lr + .balign 4 +_020527A4: .word 0x00000176 + + thumb_func_start FUN_020527A8 +FUN_020527A8: ; 0x020527A8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02031190 + ldr r2, _020527D4 ; =0x00000176 + add r1, r4, r0 + ldrb r1, [r1, r2] + cmp r1, #0x2 + bne _020527BE + mov r0, #0x1 + pop {r4, pc} +_020527BE: + mov r1, #0x1 + eor r0, r1 + add r0, r4, r0 + ldrb r0, [r0, r2] + cmp r0, #0x2 + bne _020527CE + mov r0, #0x2 + pop {r4, pc} +_020527CE: + mov r0, #0x0 + pop {r4, pc} + nop +_020527D4: .word 0x00000176 + + thumb_func_start FUN_020527D8 +FUN_020527D8: ; 0x020527D8 + push {r3, lr} + add r1, sp, #0x0 + strb r0, [r1, #0x0] + mov r0, #0x65 + add r1, sp, #0x0 + mov r2, #0x1 + bl FUN_02030ADC + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020527EC +FUN_020527EC: ; 0x020527EC + ldr r3, _02052810 ; =0x020F58D4 + mov r2, #0x0 +_020527F0: + ldrh r1, [r3, #0x0] + cmp r1, r0 + bgt _02052800 + add r1, r1, #0x4 + cmp r1, r0 + ble _02052800 + add r0, r2, #0x0 + bx lr +_02052800: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0xa + blt _020527F0 + mov r0, #0x0 + mvn r0, r0 + bx lr + nop +_02052810: .word 0x020F58D4 + + thumb_func_start FUN_02052814 +FUN_02052814: ; 0x02052814 + push {r4-r6, lr} + add r4, r1, #0x0 + add r6, r0, #0x0 + cmp r4, #0x9 + ble _02052834 + add r0, r4, #0x0 + bl FUN_020527EC + add r5, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _02052836 + bl ErrorHandling + b _02052836 +_02052834: + add r5, r4, #0x0 +_02052836: + add r0, r5, #0x0 + bl FUN_0202EF84 + lsl r1, r5, #0x2 + add r2, r6, r1 + mov r1, #0x11 + lsl r1, r1, #0x4 + ldr r5, [r2, r1] + add r5, #0x50 + add r5, #0x30 + cmp r0, #0x0 + bne _02052852 + mov r0, #0x28 + pop {r4-r6, pc} +_02052852: + cmp r4, #0x9 + ble _0205286C + sub r4, #0xa + lsr r2, r4, #0x1f + lsl r1, r4, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + add r0, r5, r0 + ldrb r0, [r0, #0x18] + asr r4, r0, #0x7 + b _02052872 +_0205286C: + bl FUN_020239CC + add r4, r0, #0x0 +_02052872: + ldrb r0, [r5, #0x1c] + cmp r0, #0xb + bhi _0205294C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02052884: ; jump table (using 16-bit offset) + .short _0205294C - _02052884 - 2; case 0 + .short _020528F8 - _02052884 - 2; case 1 + .short _02052914 - _02052884 - 2; case 2 + .short _02052930 - _02052884 - 2; case 3 + .short _0205289C - _02052884 - 2; case 4 + .short _020528A4 - _02052884 - 2; case 5 + .short _020528C0 - _02052884 - 2; case 6 + .short _020528DC - _02052884 - 2; case 7 + .short _020528F8 - _02052884 - 2; case 8 + .short _02052914 - _02052884 - 2; case 9 + .short _02052930 - _02052884 - 2; case 10 + .short _0205289C - _02052884 - 2; case 11 +_0205289C: + ldr r0, _02052950 ; =0x020F5894 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r4-r6, pc} +_020528A4: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + lsl r2, r0, #0x3 + ldr r0, _02052954 ; =0x020F58C4 + lsl r1, r4, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_020528C0: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r2, r0, #0x3 + ldr r0, _02052958 ; =0x020F5984 + lsl r1, r4, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_020528DC: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + lsl r2, r0, #0x3 + ldr r0, _0205295C ; =0x020F58B4 + lsl r1, r4, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_020528F8: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r2, r0, #0x3 + ldr r0, _02052960 ; =0x020F5964 + lsl r1, r4, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052914: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r2, r0, #0x3 + ldr r0, _02052964 ; =0x020F59A4 + lsl r1, r4, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052930: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r2, r0, #0x3 + ldr r0, _02052968 ; =0x020F59C4 + lsl r1, r4, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_0205294C: + mov r0, #0x28 + pop {r4-r6, pc} + .balign 4 +_02052950: .word 0x020F5894 +_02052954: .word 0x020F58C4 +_02052958: .word 0x020F5984 +_0205295C: .word 0x020F58B4 +_02052960: .word 0x020F5964 +_02052964: .word 0x020F59A4 +_02052968: .word 0x020F59C4 + + thumb_func_start FUN_0205296C +FUN_0205296C: ; 0x0205296C + push {r3-r7, lr} + str r0, [sp, #0x0] + bl FUN_02031190 + bl FUN_0202E020 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + bl FUN_02031190 + mov r1, #0x1 + eor r0, r1 + bl FUN_0202E020 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + bl FUN_02031190 + bl FUN_0202E044 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + bl FUN_02031190 + mov r1, #0x1 + eor r0, r1 + bl FUN_0202E044 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r4, #0x0 + bne _020529B0 + mov r0, #0xf + pop {r3-r7, pc} +_020529B0: + beq _020529CC + ldr r0, [sp, #0x0] + mov r1, #0x3 + add r2, r4, #0x0 + bl FUN_0200B4A0 + cmp r5, #0x0 + beq _020529CC + ldr r0, [sp, #0x0] + mov r1, #0x4 + add r2, r4, #0x0 + add r3, r5, #0x0 + bl FUN_0200B4D8 +_020529CC: + cmp r7, r4 + beq _020529E4 + cmp r5, #0x0 + bne _020529D8 + mov r0, #0xd + pop {r3-r7, pc} +_020529D8: + cmp r6, r5 + bne _020529E0 + mov r0, #0xd + pop {r3-r7, pc} +_020529E0: + mov r0, #0xc + pop {r3-r7, pc} +_020529E4: + cmp r6, r5 + beq _020529EC + mov r0, #0xe + pop {r3-r7, pc} +_020529EC: + mov r0, #0xf + pop {r3-r7, pc} + + thumb_func_start FUN_020529F0 +FUN_020529F0: ; 0x020529F0 + push {r3, lr} + cmp r0, #0x0 + beq _02052A02 + lsl r2, r0, #0x3 + ldr r0, _02052A0C ; =0x020F5A14 + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r3, pc} +_02052A02: + add r0, r2, #0x0 + bl FUN_0205296C + pop {r3, pc} + nop +_02052A0C: .word 0x020F5A14 + + thumb_func_start FUN_02052A10 +FUN_02052A10: ; 0x02052A10 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r3, #0x0 + cmp r4, #0x0 + bne _02052A24 + sub r1, r1, #0x1 + bl FUN_02052814 + pop {r4-r6, pc} +_02052A24: + sub r0, r1, #0x1 + bl FUN_0202EF84 + bl FUN_020239CC + add r1, r0, #0x0 + cmp r4, #0x18 + bhi _02052AFA + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02052A40: ; jump table (using 16-bit offset) + .short _02052AFA - _02052A40 - 2; case 0 + .short _02052A72 - _02052A40 - 2; case 1 + .short _02052A7E - _02052A40 - 2; case 2 + .short _02052AAA - _02052A40 - 2; case 3 + .short _02052AAA - _02052A40 - 2; case 4 + .short _02052AAA - _02052A40 - 2; case 5 + .short _02052AAA - _02052A40 - 2; case 6 + .short _02052AAA - _02052A40 - 2; case 7 + .short _02052AAA - _02052A40 - 2; case 8 + .short _02052A86 - _02052A40 - 2; case 9 + .short _02052AB8 - _02052A40 - 2; case 10 + .short _02052AB8 - _02052A40 - 2; case 11 + .short _02052AB8 - _02052A40 - 2; case 12 + .short _02052AC6 - _02052A40 - 2; case 13 + .short _02052AC6 - _02052A40 - 2; case 14 + .short _02052AC6 - _02052A40 - 2; case 15 + .short _02052AD4 - _02052A40 - 2; case 16 + .short _02052AD4 - _02052A40 - 2; case 17 + .short _02052AD4 - _02052A40 - 2; case 18 + .short _02052A9C - _02052A40 - 2; case 19 + .short _02052A9C - _02052A40 - 2; case 20 + .short _02052A9C - _02052A40 - 2; case 21 + .short _02052AE2 - _02052A40 - 2; case 22 + .short _02052AEA - _02052A40 - 2; case 23 + .short _02052AF2 - _02052A40 - 2; case 24 +_02052A72: + ldr r0, [r5, #0x34] + add r2, r6, #0x0 + sub r0, r0, #0x1 + bl FUN_020529F0 + pop {r4-r6, pc} +_02052A7E: + ldr r0, _02052B04 ; =0x020F58AC + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r4-r6, pc} +_02052A86: + ldr r0, [r5, #0x34] + cmp r0, #0x0 + bne _02052A90 + mov r0, #0x0 + pop {r4-r6, pc} +_02052A90: + lsl r2, r0, #0x3 + ldr r0, _02052B08 ; =0x020F59DC + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052A9C: + sub r4, #0x13 + ldr r0, _02052B0C ; =0x020F58E8 + lsl r2, r4, #0x3 + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052AAA: + sub r0, r4, #0x3 + lsl r2, r0, #0x3 + ldr r0, _02052B10 ; =0x020F5A44 + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052AB8: + sub r4, #0xa + ldr r0, _02052B14 ; =0x020F5900 + lsl r2, r4, #0x3 + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052AC6: + sub r4, #0xd + ldr r0, _02052B18 ; =0x020F5918 + lsl r2, r4, #0x3 + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052AD4: + sub r4, #0x10 + ldr r0, _02052B1C ; =0x020F5930 + lsl r2, r4, #0x3 + lsl r1, r1, #0x2 + add r0, r0, r2 + ldr r0, [r1, r0] + pop {r4-r6, pc} +_02052AE2: + ldr r0, _02052B20 ; =0x020F588C + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r4-r6, pc} +_02052AEA: + ldr r0, _02052B24 ; =0x020F58A4 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r4-r6, pc} +_02052AF2: + ldr r0, _02052B28 ; =0x020F589C + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + pop {r4-r6, pc} +_02052AFA: + bl ErrorHandling + mov r0, #0x28 + pop {r4-r6, pc} + nop +_02052B04: .word 0x020F58AC +_02052B08: .word 0x020F59DC +_02052B0C: .word 0x020F58E8 +_02052B10: .word 0x020F5A44 +_02052B14: .word 0x020F5900 +_02052B18: .word 0x020F5918 +_02052B1C: .word 0x020F5930 +_02052B20: .word 0x020F588C +_02052B24: .word 0x020F58A4 +_02052B28: .word 0x020F589C + + thumb_func_start FUN_02052B2C +FUN_02052B2C: ; 0x02052B2C + push {r3-r7, lr} + add r5, r0, #0x0 + mov r6, #0x1 +_02052B32: + add r0, r6, #0x0 + sub r4, r6, #0x1 + bl FUN_0202DFA4 + add r7, r0, #0x0 + beq _02052B60 + bl FUN_020239BC + lsl r1, r4, #0x2 + str r0, [r5, r1] + add r0, r7, #0x0 + bl FUN_02023A28 + str r0, [sp, #0x0] + add r0, r7, #0x0 + bl FUN_020239CC + lsl r1, r0, #0x7 + ldr r0, [sp, #0x0] + orr r1, r0 + add r0, r5, r4 + strb r1, [r0, #0x18] + b _02052B6A +_02052B60: + lsl r1, r4, #0x2 + mov r0, #0x0 + str r0, [r5, r1] + add r1, r5, r4 + strb r0, [r1, #0x18] +_02052B6A: + add r6, r6, #0x1 + cmp r6, #0x5 + blt _02052B32 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02052B74 +FUN_02052B74: ; 0x02052B74 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + cmp r4, #0xb + bhi _02052BFA + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02052B94: ; jump table (using 16-bit offset) + .short _02052BFA - _02052B94 - 2; case 0 + .short _02052BCA - _02052B94 - 2; case 1 + .short _02052BDE - _02052B94 - 2; case 2 + .short _02052BF2 - _02052B94 - 2; case 3 + .short _02052BFA - _02052B94 - 2; case 4 + .short _02052BB6 - _02052B94 - 2; case 5 + .short _02052BB6 - _02052B94 - 2; case 6 + .short _02052BB6 - _02052B94 - 2; case 7 + .short _02052BC0 - _02052B94 - 2; case 8 + .short _02052BD4 - _02052B94 - 2; case 9 + .short _02052BE8 - _02052B94 - 2; case 10 + .short _02052BAC - _02052B94 - 2; case 11 +_02052BAC: + add r0, sp, #0x0 + mov r1, #0x2 + bl FUN_02052B2C + b _02052BFA +_02052BB6: + add r0, sp, #0x0 + mov r1, #0x2 + bl FUN_02052B2C + b _02052BFA +_02052BC0: + add r0, sp, #0x0 + mov r1, #0x5 + bl FUN_02052B2C + b _02052BFA +_02052BCA: + add r0, sp, #0x0 + mov r1, #0x4 + bl FUN_02052B2C + b _02052BFA +_02052BD4: + add r0, sp, #0x0 + mov r1, #0x5 + bl FUN_02052B2C + b _02052BFA +_02052BDE: + add r0, sp, #0x0 + mov r1, #0x4 + bl FUN_02052B2C + b _02052BFA +_02052BE8: + add r0, sp, #0x0 + mov r1, #0x4 + bl FUN_02052B2C + b _02052BFA +_02052BF2: + add r0, sp, #0x0 + mov r1, #0x4 + bl FUN_02052B2C +_02052BFA: + add r0, sp, #0x0 + strb r4, [r0, #0x1c] + add r0, sp, #0x0 + bl FUN_0202F094 + bl FUN_0202F0B8 + add sp, #0x20 + pop {r4, pc} + + thumb_func_start FUN_02052C0C +FUN_02052C0C: ; 0x02052C0C + push {r4-r6, lr} + add r5, r0, #0x0 + mov r3, #0x0 + mov r0, #0x11 + add r6, r1, #0x0 + add r2, r3, #0x0 + add r4, r5, #0x0 + lsl r0, r0, #0x4 +_02052C1C: + ldr r1, [r4, r0] + cmp r1, #0x0 + beq _02052C24 + add r3, r3, #0x1 +_02052C24: + add r2, r2, #0x1 + add r4, r4, #0x4 + cmp r2, #0xa + blt _02052C1C + cmp r3, #0x0 + beq _02052C34 + mov r0, #0xa4 + pop {r4-r6, pc} +_02052C34: + mov r0, #0x5e + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_0201385C + cmp r0, #0x0 + bne _02052C46 + mov r0, #0xa5 + pop {r4-r6, pc} +_02052C46: + mov r0, #0x5e + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02013920 + cmp r0, #0x4 + beq _02052C78 + ldr r0, [r5, #0x8] + bl FUN_02023A28 + add r4, r0, #0x0 + ldr r0, [r5, #0x8] + bl FUN_020239CC + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_020536D0 + add r2, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0200B064 + mov r0, #0xa6 + pop {r4-r6, pc} +_02052C78: + mov r0, #0x5e + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02013924 + add r4, r0, #0x0 + cmp r4, #0x14 + blt _02052C8A + mov r4, #0x0 +_02052C8A: + mov r0, #0x5e + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x0 + bl FUN_02013918 + add r2, r0, #0x0 + ldr r0, _02052CB0 ; =0x0000FFFF + cmp r2, r0 + beq _02052CA6 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0200B518 +_02052CA6: + ldr r0, _02052CB4 ; =0x020F5A74 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r4-r6, pc} + nop +_02052CB0: .word 0x0000FFFF +_02052CB4: .word 0x020F5A74 + + thumb_func_start FUN_02052CB8 +FUN_02052CB8: ; 0x02052CB8 + push {r3-r4} + mov r3, #0x0 + strb r3, [r0, #0x1c] + add r4, r0, #0x0 + add r2, r3, #0x0 +_02052CC2: + stmia r4!, {r2} + add r1, r0, r3 + strb r2, [r1, #0x18] + strb r2, [r1, #0x10] + add r3, r3, #0x1 + strb r2, [r1, #0x14] + cmp r3, #0x4 + blt _02052CC2 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02052CD8 +FUN_02052CD8: ; 0x02052CD8 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x5e + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02013960 + mov r0, #0x6 + mov r1, #0x1 + lsl r0, r0, #0x6 + str r1, [r4, r0] + pop {r4, pc} + + thumb_func_start FUN_02052CF0 +FUN_02052CF0: ; 0x02052CF0 + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r2, [r0, r1] + cmp r2, #0x0 + bne _02052CFE + mov r0, #0x0 + bx lr +_02052CFE: + mov r2, #0x0 + str r2, [r0, r1] + sub r1, #0x8 + add r0, r0, r1 + bx lr + + thumb_func_start FUN_02052D08 +FUN_02052D08: ; 0x02052D08 + push {r4-r7, lr} + sub sp, #0xc + add r6, r2, #0x0 + mov r2, #0x9 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r3, [sp, #0x8] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x6 + mov r3, #0x4 + bl FUN_0200A86C + add r7, r0, #0x0 + cmp r4, #0x0 + bne _02052D30 + sub r0, r6, #0x1 + bl FUN_0202EF84 + b _02052D3C +_02052D30: + bl FUN_02031190 + mov r1, #0x1 + eor r0, r1 + bl FUN_0202DFA4 +_02052D3C: + add r4, r0, #0x0 + cmp r4, #0x0 + beq _02052DE0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_0200ABC0 + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200ABC0 + add r0, r4, #0x0 + bl FUN_02023A70 + add r4, r0, #0x0 + cmp r4, #0x1 + blt _02052D80 + cmp r4, #0x7 + bgt _02052D80 + sub r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x7 + bhs _02052D80 + lsl r1, r0, #0x2 + ldr r0, _02052DE4 ; =0x020F5948 + ldr r1, [r0, r1] + cmp r1, #0x0 + blt _02052D80 + ldr r0, [sp, #0x20] + bl FUN_02013C18 +_02052D80: + cmp r4, #0x7 + bhi _02052DB8 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02052D90: ; jump table (using 16-bit offset) + .short _02052DB8 - _02052D90 - 2; case 0 + .short _02052DA0 - _02052D90 - 2; case 1 + .short _02052DA4 - _02052D90 - 2; case 2 + .short _02052DA8 - _02052D90 - 2; case 3 + .short _02052DAC - _02052D90 - 2; case 4 + .short _02052DB0 - _02052D90 - 2; case 5 + .short _02052DB8 - _02052D90 - 2; case 6 + .short _02052DB4 - _02052D90 - 2; case 7 +_02052DA0: + mov r1, #0xd1 + b _02052DBA +_02052DA4: + mov r1, #0xd2 + b _02052DBA +_02052DA8: + mov r1, #0xd3 + b _02052DBA +_02052DAC: + mov r1, #0xd4 + b _02052DBA +_02052DB0: + mov r1, #0xd5 + b _02052DBA +_02052DB4: + mov r1, #0xd6 + b _02052DBA +_02052DB8: + mov r1, #0xd7 +_02052DBA: + add r0, r7, #0x0 + bl FUN_0200A914 + add r6, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x2 + add r2, r6, #0x0 + mov r3, #0x0 + str r4, [sp, #0x4] + bl FUN_0200ABB4 + add r0, r6, #0x0 + bl FUN_02016A18 + add r0, r7, #0x0 + bl FUN_0200A8B8 +_02052DE0: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02052DE4: .word 0x020F5948 + + thumb_func_start FUN_02052DE8 +FUN_02052DE8: ; 0x02052DE8 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_02052CB8 + mov r1, #0x0 + add r0, sp, #0x0 + strb r1, [r0, #0x1c] + add r0, r4, #0x0 + bl FUN_0202F078 + add r0, sp, #0x0 + bl FUN_0202F094 + bl FUN_0202F0B8 + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02052E10 +FUN_02052E10: ; 0x02052E10 + mov r1, #0x0 + str r1, [r0, #0x30] + str r1, [r0, #0x40] + str r1, [r0, #0x44] + bx lr + .balign 4 + + thumb_func_start FUN_02052E1C +FUN_02052E1C: ; 0x02052E1C + mov r2, #0x0 + str r2, [r0, #0x20] + str r2, [r0, #0x24] + str r2, [r0, #0x2c] + str r2, [r0, #0x30] + mov r1, #0x5d + str r2, [r0, #0x40] + lsl r1, r1, #0x2 + strh r2, [r0, r1] + add r1, #0xc + str r2, [r0, r1] + str r2, [r0, #0x44] + bx lr + .balign 4 + + thumb_func_start FUN_02052E38 +FUN_02052E38: ; 0x02052E38 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + mov r0, #0x0 + bl FUN_02065054 + mov r1, #0x61 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x0 + bl FUN_02065054 + mov r1, #0x62 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x0 + bl FUN_02065054 + mov r1, #0x63 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, #0x8] + bl FUN_020239CC + add r5, r0, #0x0 + ldr r0, [r4, #0x8] + bl FUN_02023A28 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_020536D0 + add r3, r0, #0x0 + ldr r0, [r4, #0x0] + lsl r3, r3, #0x18 + str r0, [sp, #0x0] + mov r0, #0x61 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + lsr r3, r3, #0x18 + str r0, [sp, #0x4] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_02064E90 + bl FUN_02031190 + mov r1, #0x1 + eor r0, r1 + lsl r0, r0, #0x2 + add r1, r4, r0 + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + add sp, #0x8 + pop {r3-r5, pc} + + thumb_func_start FUN_02052EAC +FUN_02052EAC: ; 0x02052EAC + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x63 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0x61 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02052ED0 +FUN_02052ED0: ; 0x02052ED0 + mov r1, #0x61 + add r2, r0, #0x0 + lsl r1, r1, #0x2 + ldr r1, [r2, r1] + ldr r3, _02052EE0 ; =FUN_02030A78 + mov r0, #0x69 + ldr r2, _02052EE4 ; =0x0000066C + bx r3 + .balign 4 +_02052EE0: .word FUN_02030A78 +_02052EE4: .word 0x0000066C + + thumb_func_start FUN_02052EE8 +FUN_02052EE8: ; 0x02052EE8 + push {r3-r5, lr} + ldr r1, _02052F58 ; =0x000004E8 + add r5, r0, #0x0 + mov r0, #0x1f + bl FUN_02016998 + add r4, r0, #0x0 + ldr r2, _02052F58 ; =0x000004E8 + mov r0, #0x0 + add r1, r4, #0x0 + blx MIi_CpuClearFast + mov r0, #0x4e + str r5, [r4, #0x0] + mov r1, #0x1 + lsl r0, r0, #0x4 + str r1, [r4, r0] + ldr r0, _02052F5C ; =FUN_02052FC8 + add r1, r4, #0x0 + mov r2, #0xb + bl FUN_0200CA44 + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_020524BC + ldr r1, _02052F60 ; =0x000004D4 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0x9 + ldr r0, [r0, #0xc] + bl FUN_02022610 + ldr r1, _02052F64 ; =0x000004D8 + ldr r2, _02052F68 ; =0x00002710 + str r0, [r4, r1] + sub r0, r1, #0x4 + ldr r0, [r4, r0] + mov r1, #0x59 + ldr r0, [r0, #0x38] + str r0, [r4, #0x8] + mov r0, #0xb + bl FUN_02016828 + mov r0, #0x59 + bl FUN_02053618 + ldr r1, _02052F6C ; =0x000004DC + str r0, [r4, r1] + add r0, r4, #0x0 + bl FUN_02052F8C + ldr r0, _02052F70 ; =0x021C5ABC + str r4, [r0, #0x0] + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_02052F58: .word 0x000004E8 +_02052F5C: .word FUN_02052FC8 +_02052F60: .word 0x000004D4 +_02052F64: .word 0x000004D8 +_02052F68: .word 0x00002710 +_02052F6C: .word 0x000004DC +_02052F70: .word 0x021C5ABC + + thumb_func_start FUN_02052F74 +FUN_02052F74: ; 0x02052F74 + mov r3, #0x0 + mov r1, #0x3 +_02052F78: + ldrb r2, [r0, #0xd] + cmp r2, #0x0 + beq _02052F80 + strb r1, [r0, #0xc] +_02052F80: + add r3, r3, #0x1 + add r0, #0x18 + cmp r3, #0x33 + blt _02052F78 + bx lr + .balign 4 + + thumb_func_start FUN_02052F8C +FUN_02052F8C: ; 0x02052F8C + mov r2, #0x0 + add r1, r2, #0x0 +_02052F90: + strb r1, [r0, #0xc] + strb r1, [r0, #0xd] + strb r1, [r0, #0xe] + strb r1, [r0, #0xf] + add r2, r2, #0x1 + add r0, #0x18 + cmp r2, #0x33 + blt _02052F90 + bx lr + .balign 4 + + thumb_func_start FUN_02052FA4 +FUN_02052FA4: ; 0x02052FA4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + bl FUN_0200CAB4 + ldr r0, _02052FC4 ; =0x000004DC + ldr r0, [r4, r0] + bl FUN_0205362C + mov r0, #0x59 + bl FUN_020168D0 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 +_02052FC4: .word 0x000004DC + + thumb_func_start FUN_02052FC8 +FUN_02052FC8: ; 0x02052FC8 + push {r3-r5, lr} + ldr r0, _02052FFC ; =0x000004D4 + add r5, r1, #0x0 + ldr r0, [r5, r0] + ldr r4, [r5, #0x0] + bl FUN_0204646C + cmp r0, #0x0 + bne _02052FF8 + ldr r3, _02052FFC ; =0x000004D4 + add r0, r5, #0x0 + ldr r2, [r5, r3] + add r3, r3, #0x4 + ldr r2, [r2, #0x34] + ldr r3, [r5, r3] + add r1, r4, #0x0 + bl FUN_0205312C + ldr r1, _02052FFC ; =0x000004D4 + add r0, r5, #0x0 + ldr r1, [r5, r1] + ldr r1, [r1, #0x34] + bl FUN_020531E4 +_02052FF8: + pop {r3-r5, pc} + nop +_02052FFC: .word 0x000004D4 + + thumb_func_start FUN_02053000 +FUN_02053000: ; 0x02053000 + push {r4-r7, lr} + sub sp, #0x14 + mov r5, #0x0 + str r0, [sp, #0x0] + str r3, [sp, #0x4] + cmp r2, #0x0 + bne _02053034 + ldr r0, _02053100 ; =0x020F58D4 + lsl r1, r1, #0x1 + ldrh r4, [r0, r1] + ldr r0, [sp, #0x0] + mov r6, #0x3 + add r0, #0xc + str r0, [sp, #0x0] +_0205301C: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02053104 + add r5, r5, #0x1 + add r4, r4, #0x1 + cmp r5, #0x4 + blt _0205301C + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_02053034: + add r0, r2, #0x0 + str r0, [sp, #0xc] + add r0, #0x50 + str r0, [sp, #0xc] + add r0, #0x30 + str r0, [sp, #0xc] + ldr r0, [r2, #0x50] + mov r2, #0x18 + add r3, r1, #0x0 + mul r3, r2 + ldr r2, [sp, #0x0] + add r2, r2, r3 + ldr r2, [r2, #0x18] + cmp r0, r2 + beq _02053078 + ldr r0, _02053100 ; =0x020F58D4 + lsl r1, r1, #0x1 + ldrh r4, [r0, r1] + ldr r0, [sp, #0x0] + mov r6, #0x3 + add r0, #0xc + str r0, [sp, #0x0] +_02053060: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02053104 + add r5, r5, #0x1 + add r4, r4, #0x1 + cmp r5, #0x4 + blt _02053060 + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_02053078: + ldr r0, _02053100 ; =0x020F58D4 + lsl r1, r1, #0x1 + ldrh r7, [r0, r1] + ldr r0, [sp, #0xc] + add r6, r5, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x0] + str r0, [sp, #0x10] + add r0, #0xc + str r0, [sp, #0x10] +_0205308C: + mov r0, #0x18 + add r1, r7, #0x0 + mul r1, r0 + ldr r0, [sp, #0x0] + add r4, r0, r1 + ldrb r0, [r4, #0xd] + cmp r0, #0x0 + beq _020530A6 + cmp r0, #0x2 + beq _020530CC + cmp r0, #0x4 + beq _020530E6 + b _020530EA +_020530A6: + ldr r0, [sp, #0xc] + add r1, r0, r6 + ldrb r0, [r1, #0x18] + cmp r0, #0x0 + beq _020530EA + mov r0, #0x2 + strb r0, [r4, #0xc] + ldrb r1, [r1, #0x18] + mov r0, #0x7f + and r0, r1 + strb r0, [r4, #0x14] + ldr r1, [sp, #0x8] + ldr r0, [sp, #0x4] + ldr r1, [r1, #0x0] + bl FUN_02025614 + strb r0, [r4, #0xe] + mov r5, #0x1 + b _020530EA +_020530CC: + ldr r0, [sp, #0xc] + add r0, r0, r6 + ldrb r0, [r0, #0x18] + cmp r0, #0x0 + bne _020530E2 + ldr r0, [sp, #0x10] + add r1, r7, #0x0 + mov r2, #0x3 + bl FUN_02053104 + b _020530EA +_020530E2: + mov r5, #0x1 + b _020530EA +_020530E6: + mov r0, #0x0 + strb r0, [r4, #0xc] +_020530EA: + ldr r0, [sp, #0x8] + add r6, r6, #0x1 + add r0, r0, #0x4 + add r7, r7, #0x1 + str r0, [sp, #0x8] + cmp r6, #0x4 + blt _0205308C + add r0, r5, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + nop +_02053100: .word 0x020F58D4 + + thumb_func_start FUN_02053104 +FUN_02053104: ; 0x02053104 + push {r4-r6, lr} + ldr r6, _02053124 ; =0x021C5ABC + mov r4, #0x18 + ldr r3, [r6, #0x0] + ldr r5, _02053128 ; =0x000004D4 + mul r4, r1 + ldr r3, [r3, r5] + strb r2, [r0, r4] + ldr r0, [r6, #0x0] + ldr r0, [r0, r5] + cmp r3, r0 + beq _02053120 + bl ErrorHandling +_02053120: + pop {r4-r6, pc} + nop +_02053124: .word 0x021C5ABC +_02053128: .word 0x000004D4 + + thumb_func_start FUN_0205312C +FUN_0205312C: ; 0x0205312C + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x0] + add r5, r0, #0x0 + str r0, [sp, #0x10] + add r0, #0xc + str r1, [sp, #0x4] + str r3, [sp, #0x8] + mov r4, #0x0 + str r0, [sp, #0x10] +_02053140: + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + bl FUN_020524C0 + add r6, r0, #0x0 + add r7, r6, #0x0 + add r7, #0x50 + add r0, r7, #0x0 + str r0, [sp, #0xc] + add r0, #0x10 + str r0, [sp, #0xc] + ldrb r0, [r5, #0xd] + cmp r0, #0x0 + beq _02053166 + cmp r0, #0x2 + beq _020531A2 + cmp r0, #0x4 + beq _020531D4 + b _020531D8 +_02053166: + cmp r6, #0x0 + beq _020531D8 + ldr r0, [sp, #0xc] + bl FUN_02023A28 + strb r0, [r5, #0x14] + ldr r0, [sp, #0xc] + bl FUN_020239BC + add r1, r0, #0x0 + ldr r0, [sp, #0x8] + bl FUN_02025614 + strb r0, [r5, #0xe] + ldr r0, [r7, #0x0] + ldr r3, [sp, #0x8] + str r0, [r5, #0x18] + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02053000 + cmp r0, #0x0 + beq _0205319C + mov r0, #0x2 + strb r0, [r5, #0xc] + b _020531D8 +_0205319C: + mov r0, #0x1 + strb r0, [r5, #0xc] + b _020531D8 +_020531A2: + cmp r6, #0x0 + beq _020531AE + ldr r1, [r7, #0x0] + ldr r0, [r5, #0x18] + cmp r1, r0 + beq _020531B8 +_020531AE: + ldr r0, [sp, #0x10] + add r1, r4, #0x0 + mov r2, #0x3 + bl FUN_02053104 +_020531B8: + ldr r0, [sp, #0x0] + ldr r3, [sp, #0x8] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02053000 + cmp r0, #0x0 + beq _020531D8 + ldrb r0, [r5, #0x15] + cmp r0, #0x1 + bne _020531D8 + mov r0, #0x3 + strb r0, [r5, #0xc] + b _020531D8 +_020531D4: + mov r0, #0x0 + strb r0, [r5, #0xc] +_020531D8: + add r4, r4, #0x1 + add r5, #0x18 + cmp r4, #0xa + blt _02053140 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_020531E4 +FUN_020531E4: ; 0x020531E4 + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + ldr r0, [r0, #0x8] + str r1, [sp, #0x4] + bl FUN_02055320 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x8] + bl FUN_0205532C + ldr r4, [sp, #0x0] + str r0, [sp, #0x8] + add r6, r4, #0x0 + mov r7, #0x0 + add r6, #0xc +_02053206: + ldr r0, [sp, #0x4] + add r1, r7, #0x1 + bl FUN_02058060 + add r5, r0, #0x0 + bne _02053216 + bl ErrorHandling +_02053216: + ldrb r0, [r4, #0xd] + cmp r0, #0x4 + bhi _0205330A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02053228: ; jump table (using 16-bit offset) + .short _02053232 - _02053228 - 2; case 0 + .short _02053252 - _02053228 - 2; case 1 + .short _020532B2 - _02053228 - 2; case 2 + .short _020532DA - _02053228 - 2; case 3 + .short _02053306 - _02053228 - 2; case 4 +_02053232: + add r0, r5, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0205330A + ldrb r0, [r4, #0xc] + sub r0, r0, #0x1 + cmp r0, #0x1 + bhi _0205330A + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0205339C + b _0205330A +_02053252: + add r0, r5, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0205330A + ldrb r0, [r4, #0xc] + cmp r0, #0x3 + bne _02053272 + mov r0, #0x0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xc] + add r0, r6, #0x0 + mov r1, #0x1 + bl FUN_0205333C + b _0205330A +_02053272: + add r0, r5, #0x0 + bl FUN_0205AE50 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020588EC + ldrb r0, [r4, #0xc] + cmp r0, #0x1 + bne _020532A8 + ldrb r0, [r4, #0x15] + cmp r0, #0x0 + bne _020532A8 + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_02058E90 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058534 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205853C + mov r0, #0x1 + strb r0, [r4, #0x15] +_020532A8: + mov r0, #0x2 + strb r0, [r4, #0xd] + mov r0, #0x0 + strb r0, [r4, #0xc] + b _0205330A +_020532B2: + add r0, r5, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0205330A + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02053478 + ldrb r0, [r4, #0xc] + cmp r0, #0x3 + bne _020532D2 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02053444 +_020532D2: + add r0, r6, #0x0 + bl FUN_02053378 + b _0205330A +_020532DA: + add r0, r5, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0205330A + add r0, r5, #0x0 + bl FUN_0205AE50 + mov r0, #0x4 + strb r0, [r4, #0xd] + mov r0, #0x0 + strb r0, [r4, #0xc] + strb r0, [r4, #0x15] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205889C + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020588B8 + b _0205330A +_02053306: + mov r0, #0x0 + strb r0, [r4, #0xd] +_0205330A: + add r7, r7, #0x1 + add r4, #0x18 + add r6, #0x18 + cmp r7, #0x32 + bge _02053316 + b _02053206 +_02053316: + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x8] + bl FUN_020553A0 + add r1, r0, #0x0 + ldr r2, _02053338 ; =0x000004BC + ldr r0, [sp, #0x0] + add r0, r0, r2 + bl FUN_02053478 + ldr r1, _02053338 ; =0x000004BC + ldr r0, [sp, #0x0] + add r0, r0, r1 + bl FUN_02053378 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02053338: .word 0x000004BC + + thumb_func_start FUN_0205333C +FUN_0205333C: ; 0x0205333C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + add r4, r1, #0x0 + cmp r0, #0x0 + beq _0205335A + bl FUN_020646A0 + cmp r0, #0x0 + beq _02053356 + ldr r0, [r5, #0x10] + bl FUN_02064520 +_02053356: + mov r0, #0x0 + str r0, [r5, #0x10] +_0205335A: + cmp r4, #0x0 + beq _02053376 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + beq _02053376 + bl FUN_020646A0 + cmp r0, #0x0 + beq _02053372 + ldr r0, [r5, #0x14] + bl FUN_02064520 +_02053372: + mov r0, #0x0 + str r0, [r5, #0x14] +_02053376: + pop {r3-r5, pc} + + thumb_func_start FUN_02053378 +FUN_02053378: ; 0x02053378 + push {r4, lr} + add r4, r0, #0x0 + ldrb r1, [r4, #0x4] + cmp r1, #0x0 + beq _02053398 + ldrh r1, [r4, #0x6] + sub r1, r1, #0x1 + strh r1, [r4, #0x6] + ldrh r1, [r4, #0x6] + cmp r1, #0x0 + bne _02053398 + mov r1, #0x0 + bl FUN_0205333C + mov r0, #0x0 + strb r0, [r4, #0x4] +_02053398: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205339C +FUN_0205339C: ; 0x0205339C + push {r3-r7, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + str r2, [sp, #0x4] + str r3, [sp, #0x8] + bl FUN_02058AFC + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B04 + str r0, [sp, #0xc] + add r0, r4, #0x0 + bl FUN_02058B0C + add r6, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r7, r0 + bne _020533CC + ldr r0, [sp, #0x8] + cmp r6, r0 + beq _0205343C +_020533CC: + ldr r0, _02053440 ; =0x0000064F + bl FUN_020054C8 + ldrb r1, [r5, #0x8] + add r0, r4, #0x0 + bl FUN_02057634 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205333C + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r2, [sp, #0xc] + add r0, r4, #0x0 + add r1, r7, #0x0 + add r3, r6, #0x0 + bl FUN_02058E28 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020584A4 + add r0, r4, #0x0 + mov r1, #0x44 + bl FUN_0205ADDC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205889C + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020588B8 + mov r1, #0x1 + strb r1, [r5, #0x1] + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + beq _0205343C + cmp r0, #0x1 + bne _0205342A + add r0, r4, #0x0 + bl FUN_02249668 + str r0, [r5, #0x14] + b _02053438 +_0205342A: + cmp r0, #0x2 + blo _02053438 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02249668 + str r0, [r5, #0x14] +_02053438: + mov r0, #0x0 + strb r0, [r5, #0x2] +_0205343C: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02053440: .word 0x0000064F + + thumb_func_start FUN_02053444 +FUN_02053444: ; 0x02053444 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x43 + bl FUN_0205ADDC + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020588EC + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058E90 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0205333C + mov r0, #0x0 + strb r0, [r4, #0x4] + strh r0, [r4, #0x6] + mov r0, #0x3 + strb r0, [r4, #0x1] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02053478 +FUN_02053478: ; 0x02053478 + push {r4, lr} + add r4, r0, #0x0 + ldrb r0, [r4, #0x3] + cmp r0, #0x1 + bne _0205349C + ldrb r0, [r4, #0x4] + cmp r0, #0x0 + bne _0205349C + add r0, r1, #0x0 + bl FUN_021EDA48 + str r0, [r4, #0x10] + mov r0, #0x1e + strh r0, [r4, #0x6] + mov r0, #0x0 + strb r0, [r4, #0x3] + mov r0, #0x1 + strb r0, [r4, #0x4] +_0205349C: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020534A0 +FUN_020534A0: ; 0x020534A0 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r0, #0x0 + cmp r5, r6 + bge _020534DA +_020534AC: + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_02058060 + add r4, r0, #0x0 + bne _020534BC + bl ErrorHandling +_020534BC: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0205889C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020588B8 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020588EC + add r5, r5, #0x1 + cmp r5, r6 + blt _020534AC +_020534DA: + pop {r3-r7, pc} + + thumb_func_start FUN_020534DC +FUN_020534DC: ; 0x020534DC + push {r3-r7, lr} + add r5, r1, #0x0 + mov r1, #0x0 + add r7, r0, #0x0 + bl FUN_02058060 + add r4, r0, #0x0 + bne _020534F0 + bl ErrorHandling +_020534F0: + add r0, r4, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _02053596 + bl FUN_02031B2C + cmp r0, #0x0 + bne _0205350A + bl FUN_02031AF4 + cmp r0, #0x0 + beq _0205358C +_0205350A: + mov r6, #0x0 + add r5, #0xc +_0205350E: + ldrb r0, [r5, #0x1] + cmp r0, #0x1 + bne _02053578 + add r0, r7, #0x0 + add r1, r6, #0x1 + bl FUN_02058060 + add r4, r0, #0x0 + bne _02053524 + bl ErrorHandling +_02053524: + ldrb r1, [r5, #0x8] + add r0, r4, #0x0 + bl FUN_02057634 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020584A4 + add r0, r4, #0x0 + mov r1, #0x44 + bl FUN_0205ADDC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205889C + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020588B8 + mov r0, #0x1 + strb r0, [r5, #0x1] + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + beq _02053578 + cmp r0, #0x1 + bne _02053566 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02249668 + str r0, [r5, #0x14] + b _02053574 +_02053566: + cmp r0, #0x2 + blo _02053574 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02249668 + str r0, [r5, #0x14] +_02053574: + mov r0, #0x0 + strb r0, [r5, #0x2] +_02053578: + add r6, r6, #0x1 + add r5, #0x18 + cmp r6, #0xa + blt _0205350E + add r0, r7, #0x0 + mov r1, #0xb + mov r2, #0x33 + bl FUN_020534A0 + pop {r3-r7, pc} +_0205358C: + add r0, r7, #0x0 + mov r1, #0x1 + mov r2, #0x33 + bl FUN_020534A0 +_02053596: + pop {r3-r7, pc} + + thumb_func_start FUN_02053598 +FUN_02053598: ; 0x02053598 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x8 + mov r1, #0x59 + bl FUN_020219F4 + str r0, [r4, #0x0] + mov r1, #0x0 + add r0, r4, #0x0 + str r1, [r4, #0x4] + add r0, #0x14 + str r1, [r4, #0x8] + bl FUN_0201373C + mov r0, #0x0 + str r0, [r4, #0x10] + str r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start FUN_020535BC +FUN_020535BC: ; 0x020535BC + push {r4-r6, lr} + add r6, r0, #0x0 + mov r4, #0x0 + add r5, r6, #0x0 +_020535C4: + add r0, r5, #0x0 + bl FUN_02053598 + add r4, r4, #0x1 + add r5, #0x1c + cmp r4, #0x1e + blt _020535C4 + mov r0, #0xd2 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r6, r0] + add r0, r0, #0x4 + str r1, [r6, r0] + pop {r4-r6, pc} + + thumb_func_start FUN_020535E0 +FUN_020535E0: ; 0x020535E0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020535F4 + bl FUN_02021A20 +_020535F4: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _020535FE + bl FUN_02021A20 +_020535FE: + pop {r4, pc} + + thumb_func_start FUN_02053600 +FUN_02053600: ; 0x02053600 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_02053606: + add r0, r5, #0x0 + bl FUN_020535E0 + add r4, r4, #0x1 + add r5, #0x1c + cmp r4, #0x1e + blt _02053606 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02053618 +FUN_02053618: ; 0x02053618 + push {r4, lr} + mov r1, #0x35 + lsl r1, r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_020535BC + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205362C +FUN_0205362C: ; 0x0205362C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02053600 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_0205363C +FUN_0205363C: ; 0x0205363C + push {r3-r7, lr} + add r7, r2, #0x0 + lsl r0, r0, #0x1d + ldr r2, _02053670 ; =0x020F5AC4 + lsr r0, r0, #0x19 + add r5, r2, r0 + lsl r2, r1, #0x3 + mov r1, #0xc + ldr r0, _02053674 ; =0x020F5B44 + mul r1, r2 + mov r4, #0x0 + add r6, r0, r1 +_02053654: + ldr r3, [r5, #0x0] + mov r2, #0xc + mul r2, r3 + add r2, r6, r2 + ldr r2, [r2, #0x4] + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_0200B064 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _02053654 + pop {r3-r7, pc} + .balign 4 +_02053670: .word 0x020F5AC4 +_02053674: .word 0x020F5B44 + + thumb_func_start FUN_02053678 +FUN_02053678: ; 0x02053678 + lsl r0, r0, #0x1d + lsr r3, r0, #0x19 + ldr r0, _02053694 ; =0x020F5AC4 + lsl r2, r2, #0x2 + add r0, r0, r3 + ldr r0, [r2, r0] + lsl r1, r1, #0x3 + add r1, r1, r0 + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + ldr r0, _02053698 ; =0x020F5B44 + ldr r0, [r0, r2] + bx lr + .balign 4 +_02053694: .word 0x020F5AC4 +_02053698: .word 0x020F5B44 + + thumb_func_start FUN_0205369C +FUN_0205369C: ; 0x0205369C + push {r3-r4} + lsl r4, r0, #0x3 + mov r0, #0xc + ldr r2, _020536C4 ; =0x020F5B44 + mul r0, r4 + mov r3, #0x0 + add r2, r2, r0 +_020536AA: + ldr r0, [r2, #0x0] + cmp r1, r0 + bne _020536B6 + add r0, r3, r4 + pop {r3-r4} + bx lr +_020536B6: + add r3, r3, #0x1 + add r2, #0xc + cmp r3, #0x8 + blt _020536AA + mov r0, #0x0 + pop {r3-r4} + bx lr + .balign 4 +_020536C4: .word 0x020F5B44 + + thumb_func_start FUN_020536C8 +FUN_020536C8: ; 0x020536C8 + ldr r3, _020536CC ; =FUN_0205369C + bx r3 + .balign 4 +_020536CC: .word FUN_0205369C + + thumb_func_start FUN_020536D0 +FUN_020536D0: ; 0x020536D0 + push {r4, lr} + add r4, r2, #0x0 + bl FUN_0205369C + cmp r4, #0x0 + beq _020536FE + cmp r4, #0x1 + beq _020536EE + cmp r4, #0x2 + bne _020536F8 + mov r1, #0xc + mul r1, r0 + ldr r0, _02053700 ; =0x020F5B48 + ldr r0, [r0, r1] + pop {r4, pc} +_020536EE: + mov r1, #0xc + mul r1, r0 + ldr r0, _02053704 ; =0x020F5B4C + ldr r0, [r0, r1] + pop {r4, pc} +_020536F8: + bl ErrorHandling + mov r0, #0x0 +_020536FE: + pop {r4, pc} + .balign 4 +_02053700: .word 0x020F5B48 +_02053704: .word 0x020F5B4C + + thumb_func_start FUN_02053708 +FUN_02053708: ; 0x02053708 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + mov r0, #0x56 + mov r1, #0x7 + add r2, sp, #0x0 + add r3, r5, #0x0 + bl FUN_02006C08 + mov r1, #0x9 + add r4, r0, #0x0 + add r0, r5, #0x0 + lsl r1, r1, #0x6 + bl FUN_02016998 + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x0 + ldr r3, [r0, #0xc] + mov r0, #0x1 + add r6, r5, #0x0 + lsl r0, r0, #0x8 +_02053734: + ldrh r1, [r3, #0x0] + add r2, r2, #0x1 + add r3, r3, #0x2 + strh r1, [r6, #0x0] + add r6, r6, #0x2 + cmp r2, r0 + blt _02053734 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02053750 +FUN_02053750: ; 0x02053750 + push {r3-r7, lr} + sub sp, #0x18 + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _02053762 + bl FUN_0201FDEC +_02053762: + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r0, [r4, r1] + cmp r0, #0x5 + bls _0205376E + b _020538B2 +_0205376E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205377A: ; jump table (using 16-bit offset) + .short _02053786 - _0205377A - 2; case 0 + .short _020537AA - _0205377A - 2; case 1 + .short _020537DA - _0205377A - 2; case 2 + .short _0205385C - _0205377A - 2; case 3 + .short _02053872 - _0205377A - 2; case 4 + .short _020538A2 - _0205377A - 2; case 5 +_02053786: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553A0 + bl FUN_02058914 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x38] + bl FUN_0205537C + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x18 + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r3-r7, pc} +_020537AA: + sub r1, #0x24 + add r0, r4, #0x0 + add r1, r4, r1 + mov r2, #0x0 + bl FUN_02053F38 + mov r1, #0x5b + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + mov r2, #0x1 + bl FUN_02053F38 + mov r0, #0x5f + mov r1, #0x2 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r1, r0, #0x4 + ldr r1, [r4, r1] + add r0, r0, #0x4 + add r1, r1, #0x1 + add sp, #0x18 + str r1, [r4, r0] + pop {r3-r7, pc} +_020537DA: + mov r0, #0x0 + str r0, [sp, #0xc] + sub r0, r1, #0x4 + ldr r0, [r4, r0] + cmp r0, #0x0 + ble _02053810 + sub r1, #0x24 + add r7, r4, r1 + add r6, r4, #0x0 + add r5, sp, #0x10 +_020537EE: + mov r1, #0x5a + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + add r0, r7, #0x0 + blx r1 + stmia r5!, {r0} + ldr r0, [sp, #0xc] + add r7, #0x10 + add r0, r0, #0x1 + str r0, [sp, #0xc] + mov r0, #0x5f + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldr r0, [sp, #0xc] + add r6, #0x10 + cmp r0, r1 + blt _020537EE +_02053810: + ldr r0, [sp, #0x10] + cmp r0, #0x2 + bne _0205382E + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 +_0205382E: + mov r0, #0x5f + lsl r0, r0, #0x2 + ldr r2, [r4, r0] + mov r3, #0x0 + cmp r2, #0x0 + ble _0205384A + add r1, sp, #0x10 +_0205383C: + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _0205384A + add r3, r3, #0x1 + add r1, r1, #0x4 + cmp r3, r2 + blt _0205383C +_0205384A: + cmp r3, r2 + bne _020538B2 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x18 + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r3-r7, pc} +_0205385C: + bl FUN_0200E308 + cmp r0, #0x0 + beq _020538B2 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x18 + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r3-r7, pc} +_02053872: + sub r0, r1, #0x4 + ldr r0, [r4, r0] + mov r6, #0x0 + cmp r0, #0x0 + ble _02053894 + sub r1, #0x24 + mov r7, #0x5f + add r5, r4, r1 + lsl r7, r7, #0x2 +_02053884: + add r0, r5, #0x0 + bl FUN_02054070 + ldr r0, [r4, r7] + add r6, r6, #0x1 + add r5, #0x10 + cmp r6, r0 + blt _02053884 +_02053894: + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x18 + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r3-r7, pc} +_020538A2: + add r1, #0x8 + ldr r0, [r4, r1] + mov r2, #0x1 + str r2, [r0, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02053D3C +_020538B2: + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020538B8 +FUN_020538B8: ; 0x020538B8 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r1, #0x0 + add r0, sp, #0xc + strh r1, [r0, #0x0] + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x5 + beq _020538D6 + ldr r0, [r4, #0x4] + bl FUN_0201FDEC +_020538D6: + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r0, [r4, r1] + cmp r0, #0x5 + bls _020538E2 + b _020539EA +_020538E2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020538EE: ; jump table (using 16-bit offset) + .short _020538FA - _020538EE - 2; case 0 + .short _02053912 - _020538EE - 2; case 1 + .short _0205396E - _020538EE - 2; case 2 + .short _020539A2 - _020538EE - 2; case 3 + .short _020539C4 - _020538EE - 2; case 4 + .short _020539DA - _020538EE - 2; case 5 +_020538FA: + ldr r0, [r4, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x38] + bl FUN_0205537C + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x10 + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r3-r5, pc} +_02053912: + mov r0, #0x4 + add r1, sp, #0xc + mov r2, #0x2 + mov r3, #0x0 + bl FUN_02017FB4 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E74C + mov r1, #0x57 + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + mov r2, #0x2 + bl FUN_02053F38 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x0 + add r2, r1, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + ldr r0, _020539F0 ; =0x0000062F + bl FUN_020054C8 + mov r0, #0x5f + mov r1, #0x1 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r1, r0, #0x4 + ldr r1, [r4, r1] + add r0, r0, #0x4 + add r1, r1, #0x1 + add sp, #0x10 + str r1, [r4, r0] + pop {r3-r5, pc} +_0205396E: + add r0, r1, #0x0 + sub r1, #0x18 + sub r0, #0x24 + ldr r1, [r4, r1] + add r0, r4, r0 + blx r1 + cmp r0, #0x0 + bne _020539EA + bl FUN_0200E308 + cmp r0, #0x0 + beq _020539EA + ldr r0, _020539F4 ; =0x00000631 + bl FUN_020054C8 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x10 + add r1, r1, #0x1 + str r1, [r4, r0] + mov r1, #0xfe + mvn r1, r1 + add r0, r0, #0x4 + str r1, [r4, r0] + pop {r3-r5, pc} +_020539A2: + add r0, r1, #0x4 + ldr r2, [r4, r0] + add r2, #0x10 + str r2, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x0 + ble _020539EA + ldr r0, [r4, r1] + add r0, r0, #0x1 + str r0, [r4, r1] + ldr r0, [r4, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x38] + bl FUN_0205537C + add sp, #0x10 + pop {r3-r5, pc} +_020539C4: + sub r1, #0x24 + add r0, r4, r1 + bl FUN_02054070 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0x10 + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r3-r5, pc} +_020539DA: + add r1, #0x8 + ldr r0, [r4, r1] + mov r2, #0x1 + str r2, [r0, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02053D3C +_020539EA: + add sp, #0x10 + pop {r3-r5, pc} + nop +_020539F0: .word 0x0000062F +_020539F4: .word 0x00000631 + + thumb_func_start FUN_020539F8 +FUN_020539F8: ; 0x020539F8 + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r0, #0x6 + add r4, r1, #0x0 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x6 + beq _02053A10 + ldr r0, [r4, #0x4] + bl FUN_0201FDEC +_02053A10: + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r0, [r4, r1] + cmp r0, #0x6 + bls _02053A1C + b _02053B30 +_02053A1C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02053A28: ; jump table (using 16-bit offset) + .short _02053A36 - _02053A28 - 2; case 0 + .short _02053A4E - _02053A28 - 2; case 1 + .short _02053A78 - _02053A28 - 2; case 2 + .short _02053AA0 - _02053A28 - 2; case 3 + .short _02053AE2 - _02053A28 - 2; case 4 + .short _02053B00 - _02053A28 - 2; case 5 + .short _02053B16 - _02053A28 - 2; case 6 +_02053A36: + ldr r0, [r4, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x38] + bl FUN_0205537C + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053A4E: + sub r1, #0x24 + add r0, r4, #0x0 + add r1, r4, r1 + mov r2, #0x3 + bl FUN_02053F38 + mov r0, #0x63 + lsl r0, r0, #0x4 + bl FUN_020054C8 + mov r0, #0x5f + mov r1, #0x1 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r1, r0, #0x4 + ldr r1, [r4, r1] + add r0, r0, #0x4 + add r1, r1, #0x1 + add sp, #0xc + str r1, [r4, r0] + pop {r4-r5, pc} +_02053A78: + add r0, r1, #0x4 + ldr r2, [r4, r0] + sub r2, #0x20 + str r2, [r4, r0] + ldr r1, [r4, r0] + mov r0, #0xfe + mvn r0, r0 + cmp r1, r0 + bge _02053B30 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053AA0: + add r0, r1, #0x0 + sub r1, #0x18 + sub r0, #0x24 + ldr r1, [r4, r1] + add r0, r4, r0 + blx r1 + add r5, r0, #0x0 + cmp r5, #0x2 + bne _02053AD0 + mov r1, #0x61 + mov r0, #0x0 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r1, #0x6 + str r1, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r1, #0x4 + str r1, [sp, #0x8] + ldr r3, _02053B34 ; =0x00007FFF + add r1, r0, #0x0 + add r2, r0, #0x0 + bl FUN_0200E1D0 +_02053AD0: + cmp r5, #0x0 + bne _02053B30 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053AE2: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02053B30 + mov r0, #0x61 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + sub r1, r0, #0x4 + ldr r1, [r4, r1] + sub r0, r0, #0x4 + add r1, r1, #0x1 + add sp, #0xc + str r1, [r4, r0] + pop {r4-r5, pc} +_02053B00: + sub r1, #0x24 + add r0, r4, r1 + bl FUN_02054070 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053B16: + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + str r1, [r0, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02053D3C +_02053B30: + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_02053B34: .word 0x00007FFF + + thumb_func_start FUN_02053B38 +FUN_02053B38: ; 0x02053B38 + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r0, #0x6 + add r4, r1, #0x0 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x6 + beq _02053B50 + ldr r0, [r4, #0x4] + bl FUN_0201FDEC +_02053B50: + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r0, [r4, r1] + cmp r0, #0x6 + bls _02053B5C + b _02053C8C +_02053B5C: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02053B68: ; jump table (using 16-bit offset) + .short _02053B76 - _02053B68 - 2; case 0 + .short _02053BB2 - _02053B68 - 2; case 1 + .short _02053BD6 - _02053B68 - 2; case 2 + .short _02053BF2 - _02053B68 - 2; case 3 + .short _02053C22 - _02053B68 - 2; case 4 + .short _02053C66 - _02053B68 - 2; case 5 + .short _02053C7C - _02053B68 - 2; case 6 +_02053B76: + ldr r0, [r4, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0x38] + bl FUN_0205537C + mov r1, #0x57 + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + mov r2, #0x4 + bl FUN_02053F38 + mov r1, #0x5b + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + mov r2, #0x5 + bl FUN_02053F38 + mov r0, #0x5f + mov r1, #0x2 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r1, r0, #0x4 + ldr r1, [r4, r1] + add r0, r0, #0x4 + add r1, r1, #0x1 + add sp, #0xc + str r1, [r4, r0] + pop {r4-r5, pc} +_02053BB2: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r3, _02053C90 ; =0x00007FFF + mov r0, #0x0 + add r2, r1, #0x0 + bl FUN_0200E1D0 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053BD6: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02053C8C + ldr r0, _02053C94 ; =0x00000632 + bl FUN_020054C8 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053BF2: + add r0, r1, #0x0 + sub r1, #0x18 + sub r0, #0x24 + ldr r1, [r4, r1] + add r0, r4, r0 + blx r1 + cmp r0, #0x0 + bne _02053C8C + ldr r0, [r4, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0x38] + bl FUN_0205537C + mov r0, #0x61 + mov r1, #0x6 + lsl r0, r0, #0x2 + str r1, [r4, r0] + sub r1, r0, #0x4 + ldr r1, [r4, r1] + sub r0, r0, #0x4 + add r1, r1, #0x1 + add sp, #0xc + str r1, [r4, r0] + pop {r4-r5, pc} +_02053C22: + add r0, r1, #0x0 + sub r1, #0x8 + sub r0, #0x14 + ldr r1, [r4, r1] + add r0, r4, r0 + blx r1 + add r5, r0, #0x0 + mov r0, #0x61 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + cmp r1, #0x0 + bgt _02053C50 + bne _02053C54 + sub r0, #0x28 + add r0, r4, r0 + bl FUN_02054070 + mov r0, #0x61 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + sub r1, r1, #0x1 + str r1, [r4, r0] + b _02053C54 +_02053C50: + sub r1, r1, #0x1 + str r1, [r4, r0] +_02053C54: + cmp r5, #0x0 + bne _02053C8C + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053C66: + sub r1, #0x14 + add r0, r4, r1 + bl FUN_02054070 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r1, [r4, r0] + add sp, #0xc + add r1, r1, #0x1 + str r1, [r4, r0] + pop {r4-r5, pc} +_02053C7C: + add r1, #0x8 + ldr r0, [r4, r1] + mov r2, #0x1 + str r2, [r0, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02053D3C +_02053C8C: + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_02053C90: .word 0x00007FFF +_02053C94: .word 0x00000632 + + thumb_func_start FUN_02053C98 +FUN_02053C98: ; 0x02053C98 + push {r3-r5, lr} + add r3, r1, #0x0 + add r4, r0, #0x0 + add r5, r2, #0x0 + cmp r3, #0x3 + bhi _02053CEE + add r1, r3, r3 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02053CB0: ; jump table (using 16-bit offset) + .short _02053CB8 - _02053CB0 - 2; case 0 + .short _02053CC6 - _02053CB0 - 2; case 1 + .short _02053CD4 - _02053CB0 - 2; case 2 + .short _02053CE2 - _02053CB0 - 2; case 3 +_02053CB8: + ldr r2, _02053CF8 ; =0x020F5C04 + ldr r0, _02053CFC ; =FUN_02053750 + ldrb r2, [r2, r3] + add r1, r4, #0x0 + bl FUN_02053D0C + b _02053CEE +_02053CC6: + ldr r2, _02053CF8 ; =0x020F5C04 + ldr r0, _02053D00 ; =FUN_020538B8 + ldrb r2, [r2, r3] + add r1, r4, #0x0 + bl FUN_02053D0C + b _02053CEE +_02053CD4: + ldr r2, _02053CF8 ; =0x020F5C04 + ldr r0, _02053D04 ; =FUN_020539F8 + ldrb r2, [r2, r3] + add r1, r4, #0x0 + bl FUN_02053D0C + b _02053CEE +_02053CE2: + ldr r2, _02053CF8 ; =0x020F5C04 + ldr r0, _02053D08 ; =FUN_02053B38 + ldrb r2, [r2, r3] + add r1, r4, #0x0 + bl FUN_02053D0C +_02053CEE: + mov r1, #0x62 + lsl r1, r1, #0x2 + str r5, [r0, r1] + str r4, [r0, #0x0] + pop {r3-r5, pc} + .balign 4 +_02053CF8: .word 0x020F5C04 +_02053CFC: .word FUN_02053750 +_02053D00: .word FUN_020538B8 +_02053D04: .word FUN_020539F8 +_02053D08: .word FUN_02053B38 + + thumb_func_start FUN_02053D0C +FUN_02053D0C: ; 0x02053D0C + push {r4-r6, lr} + add r5, r1, #0x0 + mov r1, #0x63 + add r6, r2, #0x0 + lsl r1, r1, #0x2 + mov r2, #0x5 + mov r3, #0x4 + bl FUN_020061E8 + bl FUN_0201B6C8 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + bl FUN_020239CC + add r1, r0, #0x0 + add r0, r4, #0x4 + add r2, r6, #0x0 + bl FUN_02053D50 + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02053D3C +FUN_02053D3C: ; 0x02053D3C + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x4 + bl FUN_02053D68 + add r0, r4, #0x0 + bl FUN_0200621C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02053D50 +FUN_02053D50: ; 0x02053D50 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02053D70 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02053D94 + pop {r4-r6, pc} + + thumb_func_start FUN_02053D68 +FUN_02053D68: ; 0x02053D68 + ldr r3, _02053D6C ; =FUN_02053EF0 + bx r3 + .balign 4 +_02053D6C: .word FUN_02053EF0 + + thumb_func_start FUN_02053D70 +FUN_02053D70: ; 0x02053D70 + push {r4, lr} + add r4, r0, #0x0 + add r1, r4, #0x0 + mov r0, #0x2 + add r1, #0x30 + mov r2, #0x4 + bl FUN_02008C9C + str r0, [r4, #0x0] + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E74C + pop {r4, pc} + + thumb_func_start FUN_02053D94 +FUN_02053D94: ; 0x02053D94 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + str r1, [sp, #0x10] + add r7, r2, #0x0 + mov r6, #0x0 + add r4, r5, #0x0 +_02053DA2: + mov r0, #0x2 + add r1, r6, #0x0 + mov r2, #0x4 + bl FUN_02008DEC + str r0, [r4, #0x8] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x4 + blt _02053DA2 + ldr r0, [sp, #0x10] + add r1, r5, #0x0 + lsl r0, r0, #0x2 + str r0, [sp, #0x14] + ldr r3, _02053E78 ; =0x02105EC8 + ldr r2, [sp, #0x14] + ldr r0, [r5, #0x8] + ldr r2, [r3, r2] + add r1, #0x18 + bl FUN_02053E8C + str r0, [r5, #0x20] + ldr r1, [r5, #0x18] + mov r6, #0x0 + ldr r0, [r1, #0x8] + cmp r0, #0x0 + ble _02053DF0 + add r4, r6, #0x0 +_02053DDA: + ldr r0, [r1, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_02009630 + ldr r1, [r5, #0x18] + add r6, r6, #0x1 + ldr r0, [r1, #0x8] + add r4, r4, #0x4 + cmp r6, r0 + blt _02053DDA +_02053DF0: + ldr r3, _02053E7C ; =0x02105ED0 + ldr r2, [sp, #0x14] + add r1, r5, #0x0 + ldr r0, [r5, #0xc] + ldr r2, [r3, r2] + add r1, #0x1c + bl FUN_02053E8C + str r0, [r5, #0x24] + ldr r1, [r5, #0x1c] + mov r6, #0x0 + ldr r0, [r1, #0x8] + cmp r0, #0x0 + ble _02053E24 + add r4, r6, #0x0 +_02053E0E: + ldr r0, [r1, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, r4] + bl FUN_02009630 + ldr r1, [r5, #0x1c] + add r6, r6, #0x1 + ldr r0, [r1, #0x8] + add r4, r4, #0x4 + cmp r6, r0 + blt _02053E0E +_02053E24: + ldr r0, [r5, #0x10] + ldr r2, _02053E80 ; =0x02105F48 + mov r1, #0x0 + bl FUN_02053E8C + str r0, [r5, #0x28] + ldr r0, [r5, #0x14] + ldr r2, _02053E84 ; =0x02105F64 + mov r1, #0x0 + bl FUN_02053E8C + str r0, [r5, #0x2c] + ldr r0, [r5, #0x18] + bl FUN_02009B44 + ldr r0, [r5, #0x1c] + bl FUN_02009DAC + ldr r1, _02053E88 ; =0x02105F80 + mov r0, #0x4 + bl FUN_020161A4 + ldr r1, [r5, #0x10] + add r4, r0, #0x0 + str r1, [sp, #0x0] + ldr r1, [r5, #0x14] + str r1, [sp, #0x4] + mov r1, #0x0 + str r1, [sp, #0x8] + str r1, [sp, #0xc] + ldr r2, [r5, #0x8] + ldr r3, [r5, #0xc] + mov r1, #0x4 + bl FUN_02008BE0 + str r0, [r5, #0x4] + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3-r7, pc} + nop +_02053E78: .word 0x02105EC8 +_02053E7C: .word 0x02105ED0 +_02053E80: .word 0x02105F48 +_02053E84: .word 0x02105F64 +_02053E88: .word 0x02105F80 + + thumb_func_start FUN_02053E8C +FUN_02053E8C: ; 0x02053E8C + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0200965C + add r1, r0, #0x0 + mov r0, #0x4 + bl FUN_020169D8 + add r4, r0, #0x0 + mov r0, #0x4 + add r1, r6, #0x0 + bl FUN_020161A4 + add r6, r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x4 + bl FUN_02009668 + add r0, r6, #0x0 + bl FUN_02016A18 + cmp r5, #0x0 + beq _02053ED0 + add r0, r4, #0x0 + bl FUN_020096CC + mov r1, #0x4 + bl FUN_02009424 + str r0, [r5, #0x0] + add r2, r0, #0x0 + b _02053ED2 +_02053ED0: + mov r2, #0x0 +_02053ED2: + add r0, r7, #0x0 + add r1, r4, #0x0 + mov r3, #0x4 + bl FUN_020093A8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020096B4 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02053EF0 +FUN_02053EF0: ; 0x02053EF0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0201FD58 + mov r0, #0x0 + str r0, [r5, #0x0] + ldr r0, [r5, #0x4] + bl FUN_02008C80 + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x18] + bl FUN_02009C30 + ldr r0, [r5, #0x1c] + bl FUN_02009E28 + mov r6, #0x0 + add r4, r5, #0x0 +_02053F18: + ldr r0, [r4, #0x18] + bl FUN_02009448 + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x2 + blt _02053F18 + mov r4, #0x0 +_02053F28: + ldr r0, [r5, #0x8] + bl FUN_02008E2C + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _02053F28 + pop {r4-r6, pc} + + thumb_func_start FUN_02053F38 +FUN_02053F38: ; 0x02053F38 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r4, #0x10 + mov r3, #0x0 +_02053F40: + strb r3, [r5, #0x0] + add r5, r5, #0x1 + sub r4, r4, #0x1 + bne _02053F40 + cmp r2, #0x5 + bhi _02053FB6 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02053F58: ; jump table (using 16-bit offset) + .short _02053F64 - _02053F58 - 2; case 0 + .short _02053F72 - _02053F58 - 2; case 1 + .short _02053F80 - _02053F58 - 2; case 2 + .short _02053F8E - _02053F58 - 2; case 3 + .short _02053F9C - _02053F58 - 2; case 4 + .short _02053FAA - _02053F58 - 2; case 5 +_02053F64: + ldr r2, _02053FC0 ; =FUN_02054088 + str r2, [r1, #0x4] + ldr r2, _02053FC4 ; =FUN_020540C8 + str r2, [r1, #0x8] + ldr r2, _02053FC8 ; =FUN_020540E8 + str r2, [r1, #0xc] + b _02053FB6 +_02053F72: + ldr r2, _02053FCC ; =FUN_02054168 + str r2, [r1, #0x4] + ldr r2, _02053FD0 ; =FUN_020541A4 + str r2, [r1, #0x8] + ldr r2, _02053FD4 ; =FUN_020541C4 + str r2, [r1, #0xc] + b _02053FB6 +_02053F80: + ldr r2, _02053FD8 ; =FUN_020541E8 + str r2, [r1, #0x4] + ldr r2, _02053FDC ; =FUN_02054228 + str r2, [r1, #0x8] + ldr r2, _02053FE0 ; =FUN_02054248 + str r2, [r1, #0xc] + b _02053FB6 +_02053F8E: + ldr r2, _02053FE4 ; =FUN_020542A4 + str r2, [r1, #0x4] + ldr r2, _02053FE8 ; =FUN_020542E8 + str r2, [r1, #0x8] + ldr r2, _02053FEC ; =FUN_02054308 + str r2, [r1, #0xc] + b _02053FB6 +_02053F9C: + ldr r2, _02053FF0 ; =FUN_020543D8 + str r2, [r1, #0x4] + ldr r2, _02053FF4 ; =FUN_0205442C + str r2, [r1, #0x8] + ldr r2, _02053FF8 ; =FUN_0205444C + str r2, [r1, #0xc] + b _02053FB6 +_02053FAA: + ldr r2, _02053FFC ; =FUN_02054508 + str r2, [r1, #0x4] + ldr r2, _02054000 ; =FUN_0205454C + str r2, [r1, #0x8] + ldr r2, _02054004 ; =FUN_0205456C + str r2, [r1, #0xc] +_02053FB6: + ldr r2, [r1, #0x4] + add r0, r0, #0x4 + blx r2 + pop {r3-r5, pc} + nop +_02053FC0: .word FUN_02054088 +_02053FC4: .word FUN_020540C8 +_02053FC8: .word FUN_020540E8 +_02053FCC: .word FUN_02054168 +_02053FD0: .word FUN_020541A4 +_02053FD4: .word FUN_020541C4 +_02053FD8: .word FUN_020541E8 +_02053FDC: .word FUN_02054228 +_02053FE0: .word FUN_02054248 +_02053FE4: .word FUN_020542A4 +_02053FE8: .word FUN_020542E8 +_02053FEC: .word FUN_02054308 +_02053FF0: .word FUN_020543D8 +_02053FF4: .word FUN_0205442C +_02053FF8: .word FUN_0205444C +_02053FFC: .word FUN_02054508 +_02054000: .word FUN_0205454C +_02054004: .word FUN_0205456C + + thumb_func_start FUN_02054008 +FUN_02054008: ; 0x02054008 + push {r3-r7, lr} + sub sp, #0x30 + add r5, r0, #0x0 + add r7, sp, #0x0 + add r6, r3, #0x0 + mov r0, #0x0 + add r4, r1, #0x0 + add r3, r7, #0x0 + add r1, r0, #0x0 + stmia r3!, {r0-r1} + stmia r3!, {r0-r1} + stmia r3!, {r0-r1} + stmia r3!, {r0-r1} + stmia r3!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r3, sp, #0x8 + str r0, [sp, #0x0] + ldr r0, [r5, #0x4] + ldr r1, [r0, #0x0] + mov r0, #0x24 + mul r0, r4 + add r0, r1, r0 + str r0, [sp, #0x4] + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + add r2, sp, #0x14 + str r0, [r3, #0x0] + ldr r3, _0205406C ; =0x020F5C08 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + ldr r0, [sp, #0x48] + str r6, [sp, #0x24] + str r0, [sp, #0x28] + mov r0, #0x4 + str r0, [sp, #0x2c] + add r0, r7, #0x0 + bl FUN_0201FE94 + add r4, r0, #0x0 + bne _02054064 + bl ErrorHandling +_02054064: + add r0, r4, #0x0 + add sp, #0x30 + pop {r3-r7, pc} + nop +_0205406C: .word 0x020F5C08 + + thumb_func_start FUN_02054070 +FUN_02054070: ; 0x02054070 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x8] + blx r1 + mov r1, #0x10 + mov r0, #0x0 +_0205407C: + strb r0, [r4, #0x0] + add r4, r4, #0x1 + sub r1, r1, #0x1 + bne _0205407C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02054088 +FUN_02054088: ; 0x02054088 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x4 + mov r1, #0x14 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r2, #0x14 + mov r1, #0x0 +_0205409C: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _0205409C + ldr r5, [r5, #0x0] + mov r0, #0x7 + lsl r0, r0, #0x10 + str r0, [r5, #0x0] + mov r0, #0x45 + lsl r0, r0, #0xc + str r0, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r2, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02054008 + str r0, [r5, #0xc] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020540C8 +FUN_020540C8: ; 0x020540C8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020540E4 + ldr r0, [r0, #0xc] + bl FUN_0201FFC8 + ldr r1, [r4, #0x0] + mov r0, #0x4 + bl FUN_02016A8C + mov r0, #0x0 + str r0, [r4, #0x0] +_020540E4: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020540E8 +FUN_020540E8: ; 0x020540E8 + push {r3-r6, lr} + sub sp, #0xc + ldr r4, [r0, #0x0] + mov r2, #0x2 + ldr r0, [r4, #0x10] + lsl r2, r2, #0xe + cmp r0, r2 + bgt _0205415E + add r6, r4, #0x0 + ldmia r6!, {r0-r1} + add r5, sp, #0x0 + add r3, r5, #0x0 + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + lsr r2, r2, #0x4 + str r0, [r5, #0x0] + ldr r0, [r4, #0x10] + ldr r1, [sp, #0x4] + asr r0, r0, #0x4 + lsl r5, r0, #0x2 + ldr r0, _02054164 ; =0x020FFA38 + ldrsh r5, [r0, r5] + asr r0, r5, #0x1f + lsr r6, r5, #0x10 + lsl r0, r0, #0x10 + orr r0, r6 + lsl r6, r5, #0x10 + mov r5, #0x0 + add r2, r6, r2 + adc r0, r5 + lsl r0, r0, #0x14 + lsr r2, r2, #0xc + orr r2, r0 + sub r0, r1, r2 + str r0, [sp, #0x4] + ldr r0, [r4, #0xc] + add r1, r3, #0x0 + bl FUN_02020044 + mov r1, #0x2 + ldr r0, [r4, #0x10] + lsl r1, r1, #0xa + add r0, r0, r1 + str r0, [r4, #0x10] + ldr r0, [r4, #0xc] + lsl r1, r1, #0x1 + bl FUN_020201E4 + mov r0, #0x2 + ldr r1, [r4, #0x10] + lsl r0, r0, #0xe + cmp r1, r0 + bne _02054158 + add sp, #0xc + mov r0, #0x2 + pop {r3-r6, pc} +_02054158: + add sp, #0xc + mov r0, #0x1 + pop {r3-r6, pc} +_0205415E: + mov r0, #0x0 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 +_02054164: .word 0x020FFA38 + + thumb_func_start FUN_02054168 +FUN_02054168: ; 0x02054168 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x4 + mov r1, #0x14 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r2, #0x14 + mov r1, #0x0 +_0205417C: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _0205417C + ldr r5, [r5, #0x0] + mov r0, #0x7 + lsl r0, r0, #0x10 + str r0, [r5, #0x0] + mov r0, #0x6 + lsl r0, r0, #0x10 + mov r1, #0x1 + str r0, [r5, #0x4] + add r0, r4, #0x0 + add r2, r5, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x0] + bl FUN_02054008 + str r0, [r5, #0xc] + pop {r3-r5, pc} + + thumb_func_start FUN_020541A4 +FUN_020541A4: ; 0x020541A4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020541C0 + ldr r0, [r0, #0xc] + bl FUN_0201FFC8 + ldr r1, [r4, #0x0] + mov r0, #0x4 + bl FUN_02016A8C + mov r0, #0x0 + str r0, [r4, #0x0] +_020541C0: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020541C4 +FUN_020541C4: ; 0x020541C4 + push {r4, lr} + ldr r4, [r0, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x7 + bge _020541E2 + mov r1, #0x1 + ldr r0, [r4, #0xc] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x1 + pop {r4, pc} +_020541E2: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020541E8 +FUN_020541E8: ; 0x020541E8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x4 + mov r1, #0x14 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r2, #0x14 + mov r1, #0x0 +_020541FC: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _020541FC + ldr r5, [r5, #0x0] + mov r0, #0x7 + lsl r0, r0, #0x10 + str r0, [r5, #0x0] + mov r0, #0x3 + lsl r0, r0, #0x12 + str r0, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r2, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02054008 + str r0, [r5, #0xc] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02054228 +FUN_02054228: ; 0x02054228 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02054244 + ldr r0, [r0, #0xc] + bl FUN_0201FFC8 + ldr r1, [r4, #0x0] + mov r0, #0x4 + bl FUN_02016A8C + mov r0, #0x0 + str r0, [r4, #0x0] +_02054244: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02054248 +FUN_02054248: ; 0x02054248 + push {r4, lr} + ldr r4, [r0, #0x0] + mov r0, #0x2 + ldr r1, [r4, #0x4] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r4, #0x4] + ldr r0, [r4, #0xc] + add r1, r4, #0x0 + bl FUN_02020044 + mov r1, #0x1 + ldr r0, [r4, #0xc] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x4] + cmp r0, #0x0 + bne _02054284 + mov r0, #0x6 + lsl r0, r0, #0x12 + cmp r1, r0 + blt _0205429A + ldr r0, _020542A0 ; =0xFFFE0000 + str r0, [r4, #0x4] + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _0205429A +_02054284: + mov r0, #0x45 + lsl r0, r0, #0xc + cmp r1, r0 + blt _0205429A + str r0, [r4, #0x4] + ldr r0, [r4, #0xc] + add r1, r4, #0x0 + bl FUN_02020044 + mov r0, #0x0 + pop {r4, pc} +_0205429A: + mov r0, #0x1 + pop {r4, pc} + nop +_020542A0: .word 0xFFFE0000 + + thumb_func_start FUN_020542A4 +FUN_020542A4: ; 0x020542A4 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x4 + mov r1, #0x18 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r2, #0x18 + mov r1, #0x0 +_020542B8: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _020542B8 + ldr r5, [r5, #0x0] + mov r0, #0x7 + lsl r0, r0, #0x10 + str r0, [r5, #0x0] + mov r0, #0x45 + lsl r0, r0, #0xc + str r0, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r2, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02054008 + mov r1, #0x1 + str r0, [r5, #0xc] + bl FUN_02020130 + pop {r3-r5, pc} + + thumb_func_start FUN_020542E8 +FUN_020542E8: ; 0x020542E8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02054304 + ldr r0, [r0, #0xc] + bl FUN_0201FFC8 + ldr r1, [r4, #0x0] + mov r0, #0x4 + bl FUN_02016A8C + mov r0, #0x0 + str r0, [r4, #0x0] +_02054304: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02054308 +FUN_02054308: ; 0x02054308 + push {r3-r5, lr} + ldr r4, [r0, #0x0] + mov r5, #0x1 + ldr r0, [r4, #0x10] + cmp r0, #0x4 + bhi _020543CC + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02054320: ; jump table (using 16-bit offset) + .short _0205432A - _02054320 - 2; case 0 + .short _02054348 - _02054320 - 2; case 1 + .short _02054376 - _02054320 - 2; case 2 + .short _020543A2 - _02054320 - 2; case 3 + .short _020543CA - _02054320 - 2; case 4 +_0205432A: + ldr r1, [r4, #0x14] + ldr r0, _020543D0 ; =0x00000333 + add r1, r1, r0 + str r1, [r4, #0x14] + ldr r0, [r4, #0xc] + bl FUN_020201E4 + ldr r1, [r4, #0x14] + lsl r0, r5, #0xd + cmp r1, r0 + blt _020543CC + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020543CC +_02054348: + ldr r1, [r4, #0x4] + ldr r0, _020543D4 ; =0xFFFE0000 + cmp r1, r0 + ble _02054368 + lsl r0, r5, #0xf + sub r0, r1, r0 + str r0, [r4, #0x4] + ldr r0, [r4, #0xc] + add r1, r4, #0x0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl FUN_020201E4 + b _020543CC +_02054368: + mov r0, #0x6 + lsl r0, r0, #0x12 + str r0, [r4, #0x4] + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020543CC +_02054376: + ldr r1, [r4, #0x4] + lsl r0, r5, #0xf + sub r0, r1, r0 + str r0, [r4, #0x4] + ldr r0, [r4, #0xc] + add r1, r4, #0x0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl FUN_020201E4 + mov r0, #0x4b + ldr r1, [r4, #0x4] + lsl r0, r0, #0xe + cmp r1, r0 + bge _020543CC + ldr r0, [r4, #0x10] + mov r5, #0x2 + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020543CC +_020543A2: + mov r1, #0x3 + ldr r2, [r4, #0x4] + lsl r1, r1, #0x12 + cmp r2, r1 + ble _020543C4 + lsl r0, r5, #0xf + sub r0, r2, r0 + str r0, [r4, #0x4] + ldr r0, [r4, #0xc] + add r1, r4, #0x0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl FUN_020201E4 + b _020543CC +_020543C4: + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020543CC +_020543CA: + mov r5, #0x0 +_020543CC: + add r0, r5, #0x0 + pop {r3-r5, pc} + .balign 4 +_020543D0: .word 0x00000333 +_020543D4: .word 0xFFFE0000 + + thumb_func_start FUN_020543D8 +FUN_020543D8: ; 0x020543D8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x4 + mov r1, #0x18 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r2, #0x18 + mov r1, #0x0 +_020543EC: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _020543EC + ldr r5, [r5, #0x0] + mov r0, #0x7 + lsl r0, r0, #0x10 + str r0, [r5, #0x0] + mov r0, #0x45 + lsl r0, r0, #0xc + str r0, [r5, #0x4] + mov r0, #0x1 + mov r1, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r2, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02054008 + mov r1, #0x1 + str r0, [r5, #0xc] + bl FUN_02020130 + mov r0, #0x2 + lsl r0, r0, #0xc + str r0, [r5, #0x14] + ldr r0, [r5, #0xc] + mov r1, #0x0 + bl FUN_020200A0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205442C +FUN_0205442C: ; 0x0205442C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02054448 + ldr r0, [r0, #0xc] + bl FUN_0201FFC8 + ldr r1, [r4, #0x0] + mov r0, #0x4 + bl FUN_02016A8C + mov r0, #0x0 + str r0, [r4, #0x0] +_02054448: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205444C +FUN_0205444C: ; 0x0205444C + push {r4-r7, lr} + sub sp, #0xc + ldr r4, [r0, #0x0] + mov r5, #0x1 + ldr r0, [r4, #0x10] + cmp r0, #0x3 + bhi _020544F8 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02054466: ; jump table (using 16-bit offset) + .short _0205446E - _02054466 - 2; case 0 + .short _0205447E - _02054466 - 2; case 1 + .short _020544DA - _02054466 - 2; case 2 + .short _020544F6 - _02054466 - 2; case 3 +_0205446E: + ldr r0, [r4, #0xc] + add r1, r5, #0x0 + bl FUN_020200A0 + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020544F8 +_0205447E: + ldr r2, [r4, #0x14] + lsl r1, r5, #0xf + cmp r2, r1 + bgt _020544D4 + add r6, r4, #0x0 + ldmia r6!, {r0-r1} + add r3, sp, #0x0 + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r6, #0x0] + mov r7, #0x0 + str r0, [r3, #0x0] + ldr r0, [r4, #0x14] + ldr r6, [sp, #0x4] + asr r0, r0, #0x4 + lsl r1, r0, #0x2 + ldr r0, _02054500 ; =0x020FFA38 + ldrsh r0, [r0, r1] + asr r3, r0, #0x1f + lsr r1, r0, #0xf + lsl r3, r3, #0x11 + orr r3, r1 + lsl r1, r0, #0x11 + lsl r0, r5, #0xb + add r0, r1, r0 + adc r3, r7 + lsl r1, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + sub r0, r6, r0 + str r0, [sp, #0x4] + ldr r0, [r4, #0xc] + add r1, r2, #0x0 + bl FUN_02020044 + ldr r0, [r4, #0x14] + lsl r1, r5, #0xc + add r0, r0, r1 + str r0, [r4, #0x14] + ldr r0, [r4, #0xc] + bl FUN_020201E4 + b _020544F8 +_020544D4: + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020544F8 +_020544DA: + ldr r1, [r4, #0x14] + ldr r0, _02054504 ; =0x00000666 + sub r1, r1, r0 + str r1, [r4, #0x14] + ldr r0, [r4, #0xc] + bl FUN_020201E4 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bgt _020544F8 + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + b _020544F8 +_020544F6: + mov r5, #0x0 +_020544F8: + add r0, r5, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_02054500: .word 0x020FFA38 +_02054504: .word 0x00000666 + + thumb_func_start FUN_02054508 +FUN_02054508: ; 0x02054508 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x4 + mov r1, #0x14 + bl FUN_02016998 + str r0, [r5, #0x0] + mov r2, #0x14 + mov r1, #0x0 +_0205451C: + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _0205451C + ldr r5, [r5, #0x0] + mov r0, #0x7 + lsl r0, r0, #0x10 + str r0, [r5, #0x0] + mov r0, #0x6 + lsl r0, r0, #0x10 + mov r1, #0x1 + str r0, [r5, #0x4] + add r0, r4, #0x0 + add r2, r5, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x0] + bl FUN_02054008 + mov r1, #0x1 + str r0, [r5, #0xc] + bl FUN_02020130 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205454C +FUN_0205454C: ; 0x0205454C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02054568 + ldr r0, [r0, #0xc] + bl FUN_0201FFC8 + ldr r1, [r4, #0x0] + mov r0, #0x4 + bl FUN_02016A8C + mov r0, #0x0 + str r0, [r4, #0x0] +_02054568: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205456C +FUN_0205456C: ; 0x0205456C + push {r4, lr} + ldr r4, [r0, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x8 + bge _0205458A + mov r1, #0x1 + ldr r0, [r4, #0xc] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, [r4, #0x10] + add r0, r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x1 + pop {r4, pc} +_0205458A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02054590 +FUN_02054590: ; 0x02054590 + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x1 + bne _0205459C + bl FUN_0201BD5C +_0205459C: + mov r1, #0x1a + add r0, r4, #0x0 + lsl r1, r1, #0x4 + mov r2, #0x4 + bl FUN_02002ED0 + mov r1, #0x6 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + mov r2, #0x4 + bl FUN_02002EEC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020545B8 +FUN_020545B8: ; 0x020545B8 + push {lr} + sub sp, #0x14 + cmp r2, #0x3 + bne _020545E0 + mov r2, #0x13 + str r2, [sp, #0x0] + mov r2, #0x1b + str r2, [sp, #0x4] + mov r2, #0x4 + str r2, [sp, #0x8] + mov r2, #0xc + str r2, [sp, #0xc] + ldr r2, _02054604 ; =0x0000032D + mov r3, #0x2 + str r2, [sp, #0x10] + mov r2, #0x3 + bl FUN_02019064 + add sp, #0x14 + pop {pc} +_020545E0: + mov r2, #0x13 + str r2, [sp, #0x0] + mov r2, #0x1b + str r2, [sp, #0x4] + mov r2, #0x4 + str r2, [sp, #0x8] + mov r2, #0xc + str r2, [sp, #0xc] + mov r2, #0x65 + lsl r2, r2, #0x2 + str r2, [sp, #0x10] + mov r2, #0x7 + mov r3, #0x2 + bl FUN_02019064 + add sp, #0x14 + pop {pc} + nop +_02054604: .word 0x0000032D + + thumb_func_start FUN_02054608 +FUN_02054608: ; 0x02054608 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r5, r0, #0x0 + bl FUN_0201AB08 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + ldr r2, _02054648 ; =0x000003E2 + add r1, r6, #0x0 + mov r3, #0xa + bl FUN_0200CD68 + add r0, r5, #0x0 + bl FUN_0205464C + ldr r2, _02054648 ; =0x000003E2 + add r0, r5, #0x0 + mov r1, #0x0 + mov r3, #0xa + bl FUN_0200D0BC + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_02054648: .word 0x000003E2 + + thumb_func_start FUN_0205464C +FUN_0205464C: ; 0x0205464C + ldr r3, _02054654 ; =FUN_02019620 + mov r1, #0xf + bx r3 + nop +_02054654: .word FUN_02019620 + + thumb_func_start FUN_02054658 +FUN_02054658: ; 0x02054658 + push {r3-r6, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, r3, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02002B60 + mov r0, #0x0 + bl FUN_02002B7C + mov r0, #0x0 + bl FUN_02002BB8 + add r0, r6, #0x0 + bl FUN_02024FF4 + mov r3, #0x0 + str r3, [sp, #0x0] + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + str r3, [sp, #0x8] + bl FUN_0201BD84 + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_02054690 +FUN_02054690: ; 0x02054690 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + add r6, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02002B60 + ldr r0, [sp, #0x24] + bl FUN_02002B7C + mov r0, #0x0 + bl FUN_02002BB8 + mov r3, #0x0 + str r3, [sp, #0x0] + str r4, [sp, #0x4] + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + str r3, [sp, #0x8] + bl FUN_0201BD84 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020546C8 +FUN_020546C8: ; 0x020546C8 + push {r3, lr} + bl FUN_0201BD70 + cmp r0, #0x0 + bne _020546D6 + mov r0, #0x1 + b _020546D8 +_020546D6: + mov r0, #0x0 +_020546D8: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020546E0 +FUN_020546E0: ; 0x020546E0 + push {r4-r5, lr} + sub sp, #0x14 + cmp r2, #0x1 + bhi _020546EE + mov r4, #0x9 + mov r5, #0x14 + b _020546F2 +_020546EE: + mov r4, #0x2 + mov r5, #0x1b +_020546F2: + cmp r3, #0x3 + bne _0205471A + mov r2, #0x13 + str r2, [sp, #0x0] + lsl r2, r5, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0x4] + mov r2, #0x4 + str r2, [sp, #0x8] + mov r2, #0x9 + str r2, [sp, #0xc] + ldr r2, _02054740 ; =0x0000032D + lsl r3, r4, #0x18 + str r2, [sp, #0x10] + mov r2, #0x3 + lsr r3, r3, #0x18 + bl FUN_02019064 + add sp, #0x14 + pop {r4-r5, pc} +_0205471A: + mov r2, #0x13 + str r2, [sp, #0x0] + lsl r2, r5, #0x18 + lsr r2, r2, #0x18 + str r2, [sp, #0x4] + mov r2, #0x4 + str r2, [sp, #0x8] + mov r2, #0x9 + str r2, [sp, #0xc] + mov r2, #0x65 + lsl r2, r2, #0x2 + lsl r3, r4, #0x18 + str r2, [sp, #0x10] + mov r2, #0x7 + lsr r3, r3, #0x18 + bl FUN_02019064 + add sp, #0x14 + pop {r4-r5, pc} + .balign 4 +_02054740: .word 0x0000032D + + thumb_func_start FUN_02054744 +FUN_02054744: ; 0x02054744 + push {r3-r6, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + bl FUN_0201AB08 + add r1, r0, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r0, [r5, #0x0] + ldr r2, _02054788 ; =0x00000399 + mov r3, #0x9 + bl FUN_0200D300 + add r0, r5, #0x0 + mov r1, #0xf + bl FUN_02019620 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r2, _02054788 ; =0x00000399 + add r0, r5, #0x0 + mov r1, #0x0 + mov r3, #0x9 + bl FUN_0200D6F8 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 +_02054788: .word 0x00000399 + + thumb_func_start FUN_0205478C +FUN_0205478C: ; 0x0205478C + cmp r0, #0x2 + bne _02054794 + mov r0, #0x1 + bx lr +_02054794: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054798 +FUN_02054798: ; 0x02054798 + cmp r0, #0x3 + bne _020547A0 + mov r0, #0x1 + bx lr +_020547A0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547A4 +FUN_020547A4: ; 0x020547A4 + cmp r0, #0x80 + bne _020547AC + mov r0, #0x1 + bx lr +_020547AC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547B0 +FUN_020547B0: ; 0x020547B0 + cmp r0, #0x69 + bne _020547B8 + mov r0, #0x1 + bx lr +_020547B8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547BC +FUN_020547BC: ; 0x020547BC + cmp r0, #0x62 + bne _020547C4 + mov r0, #0x1 + bx lr +_020547C4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547C8 +FUN_020547C8: ; 0x020547C8 + cmp r0, #0x63 + bne _020547D0 + mov r0, #0x1 + bx lr +_020547D0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547D4 +FUN_020547D4: ; 0x020547D4 + cmp r0, #0x64 + bne _020547DC + mov r0, #0x1 + bx lr +_020547DC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547E0 +FUN_020547E0: ; 0x020547E0 + cmp r0, #0x65 + bne _020547E8 + mov r0, #0x1 + bx lr +_020547E8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547EC +FUN_020547EC: ; 0x020547EC + cmp r0, #0x6c + bne _020547F4 + mov r0, #0x1 + bx lr +_020547F4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020547F8 +FUN_020547F8: ; 0x020547F8 + cmp r0, #0x6d + bne _02054800 + mov r0, #0x1 + bx lr +_02054800: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054804 +FUN_02054804: ; 0x02054804 + cmp r0, #0x6e + bne _0205480C + mov r0, #0x1 + bx lr +_0205480C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054810 +FUN_02054810: ; 0x02054810 + cmp r0, #0x6f + bne _02054818 + mov r0, #0x1 + bx lr +_02054818: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205481C +FUN_0205481C: ; 0x0205481C + ldr r1, _0205482C ; =0x020F5C14 + ldrb r1, [r1, r0] + mov r0, #0x1 + tst r1, r0 + bne _02054828 + mov r0, #0x0 +_02054828: + bx lr + nop +_0205482C: .word 0x020F5C14 + + thumb_func_start FUN_02054830 +FUN_02054830: ; 0x02054830 + cmp r0, #0x21 + bne _02054838 + mov r0, #0x1 + bx lr +_02054838: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205483C +FUN_0205483C: ; 0x0205483C + cmp r0, #0x17 + bne _02054844 + mov r0, #0x1 + bx lr +_02054844: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054848 +FUN_02054848: ; 0x02054848 + cmp r0, #0x3a + bne _02054850 + mov r0, #0x1 + bx lr +_02054850: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054854 +FUN_02054854: ; 0x02054854 + cmp r0, #0x3b + bne _0205485C + mov r0, #0x1 + bx lr +_0205485C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054860 +FUN_02054860: ; 0x02054860 + cmp r0, #0x39 + bne _02054868 + mov r0, #0x1 + bx lr +_02054868: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205486C +FUN_0205486C: ; 0x0205486C + cmp r0, #0x38 + bne _02054874 + mov r0, #0x1 + bx lr +_02054874: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054878 +FUN_02054878: ; 0x02054878 + cmp r0, #0x83 + bne _02054880 + mov r0, #0x1 + bx lr +_02054880: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054884 +FUN_02054884: ; 0x02054884 + cmp r0, #0x85 + bne _0205488C + mov r0, #0x1 + bx lr +_0205488C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054890 +FUN_02054890: ; 0x02054890 + cmp r0, #0x56 + bne _02054898 + mov r0, #0x1 + bx lr +_02054898: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205489C +FUN_0205489C: ; 0x0205489C + cmp r0, #0x57 + bne _020548A4 + mov r0, #0x1 + bx lr +_020548A4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548A8 +FUN_020548A8: ; 0x020548A8 + cmp r0, #0x58 + bne _020548B0 + mov r0, #0x1 + bx lr +_020548B0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548B4 +FUN_020548B4: ; 0x020548B4 + cmp r0, #0x59 + bne _020548BC + mov r0, #0x1 + bx lr +_020548BC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548C0 +FUN_020548C0: ; 0x020548C0 + cmp r0, #0x6a + bne _020548C8 + mov r0, #0x1 + bx lr +_020548C8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548CC +FUN_020548CC: ; 0x020548CC + cmp r0, #0x6b + bne _020548D4 + mov r0, #0x1 + bx lr +_020548D4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548D8 +FUN_020548D8: ; 0x020548D8 + cmp r0, #0x5e + bne _020548E0 + mov r0, #0x1 + bx lr +_020548E0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548E4 +FUN_020548E4: ; 0x020548E4 + cmp r0, #0x5f + bne _020548EC + mov r0, #0x1 + bx lr +_020548EC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548F0 +FUN_020548F0: ; 0x020548F0 + cmp r0, #0x20 + bne _020548F8 + mov r0, #0x1 + bx lr +_020548F8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020548FC +FUN_020548FC: ; 0x020548FC + cmp r0, #0x4b + bne _02054904 + mov r0, #0x1 + bx lr +_02054904: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054908 +FUN_02054908: ; 0x02054908 + cmp r0, #0x4c + bne _02054910 + mov r0, #0x1 + bx lr +_02054910: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054914 +FUN_02054914: ; 0x02054914 + cmp r0, #0xe0 + bne _0205491C + mov r0, #0x1 + bx lr +_0205491C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054920 +FUN_02054920: ; 0x02054920 + cmp r0, #0xea + bne _02054928 + mov r0, #0x1 + bx lr +_02054928: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205492C +FUN_0205492C: ; 0x0205492C + cmp r0, #0xe1 + bne _02054934 + mov r0, #0x1 + bx lr +_02054934: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054938 +FUN_02054938: ; 0x02054938 + cmp r0, #0xe2 + bne _02054940 + mov r0, #0x1 + bx lr +_02054940: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054944 +FUN_02054944: ; 0x02054944 + cmp r0, #0xe4 + bne _0205494C + mov r0, #0x1 + bx lr +_0205494C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054950 +FUN_02054950: ; 0x02054950 + cmp r0, #0xe5 + bne _02054958 + mov r0, #0x1 + bx lr +_02054958: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205495C +FUN_0205495C: ; 0x0205495C + cmp r0, #0xeb + bne _02054964 + mov r0, #0x1 + bx lr +_02054964: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054968 +FUN_02054968: ; 0x02054968 + cmp r0, #0xec + bne _02054970 + mov r0, #0x1 + bx lr +_02054970: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054974 +FUN_02054974: ; 0x02054974 + cmp r0, #0xa4 + beq _0205497C + cmp r0, #0xa5 + bne _02054980 +_0205497C: + mov r0, #0x1 + bx lr +_02054980: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054984 +FUN_02054984: ; 0x02054984 + cmp r0, #0xa5 + bne _0205498C + mov r0, #0x1 + bx lr +_0205498C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054990 +FUN_02054990: ; 0x02054990 + cmp r0, #0xa6 + beq _02054998 + cmp r0, #0xa7 + bne _0205499C +_02054998: + mov r0, #0x1 + bx lr +_0205499C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020549A0 +FUN_020549A0: ; 0x020549A0 + cmp r0, #0xa7 + bne _020549A8 + mov r0, #0x1 + bx lr +_020549A8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020549AC +FUN_020549AC: ; 0x020549AC + add r0, #0x5f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x7 + bhi _020549C6 + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + mov r0, #0x87 + tst r0, r2 + beq _020549C6 + add r3, r1, #0x0 +_020549C6: + add r0, r3, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_020549CC +FUN_020549CC: ; 0x020549CC + cmp r0, #0xa8 + bne _020549D4 + mov r0, #0x1 + bx lr +_020549D4: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020549D8 +FUN_020549D8: ; 0x020549D8 + cmp r0, #0xa1 + bne _020549E0 + mov r0, #0x1 + bx lr +_020549E0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020549E4 +FUN_020549E4: ; 0x020549E4 + cmp r0, #0xa2 + bne _020549EC + mov r0, #0x1 + bx lr +_020549EC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020549F0 +FUN_020549F0: ; 0x020549F0 + cmp r0, #0xa3 + bne _020549F8 + mov r0, #0x1 + bx lr +_020549F8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020549FC +FUN_020549FC: ; 0x020549FC + cmp r0, #0xd9 + beq _02054A04 + cmp r0, #0xda + bne _02054A08 +_02054A04: + mov r0, #0x1 + bx lr +_02054A08: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A0C +FUN_02054A0C: ; 0x02054A0C + cmp r0, #0xd9 + bne _02054A14 + mov r0, #0x1 + bx lr +_02054A14: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A18 +FUN_02054A18: ; 0x02054A18 + cmp r0, #0xda + bne _02054A20 + mov r0, #0x1 + bx lr +_02054A20: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A24 +FUN_02054A24: ; 0x02054A24 + cmp r0, #0xd7 + bne _02054A2C + mov r0, #0x1 + bx lr +_02054A2C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A30 +FUN_02054A30: ; 0x02054A30 + cmp r0, #0xd8 + bne _02054A38 + mov r0, #0x1 + bx lr +_02054A38: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A3C +FUN_02054A3C: ; 0x02054A3C + cmp r0, #0x8 + bne _02054A44 + mov r0, #0x1 + bx lr +_02054A44: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A48 +FUN_02054A48: ; 0x02054A48 + cmp r0, #0x13 + bne _02054A50 + mov r0, #0x1 + bx lr +_02054A50: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A54 +FUN_02054A54: ; 0x02054A54 + cmp r0, #0xdb + bne _02054A5C + mov r0, #0x1 + bx lr +_02054A5C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054A60 +FUN_02054A60: ; 0x02054A60 + add r0, #0xce + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x17 + bhi _02054A7A + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02054A80 ; =0x0080000D + tst r0, r2 + beq _02054A7A + add r3, r1, #0x0 +_02054A7A: + add r0, r3, #0x0 + bx lr + nop +_02054A80: .word 0x0080000D + + thumb_func_start FUN_02054A84 +FUN_02054A84: ; 0x02054A84 + add r0, #0xcd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x16 + bhi _02054A9E + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02054AA4 ; =0x00400019 + tst r0, r2 + beq _02054A9E + add r3, r1, #0x0 +_02054A9E: + add r0, r3, #0x0 + bx lr + nop +_02054AA4: .word 0x00400019 + + thumb_func_start FUN_02054AA8 +FUN_02054AA8: ; 0x02054AA8 + add r0, #0xcf + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x19 + bhi _02054AC2 + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02054AC8 ; =0x02000051 + tst r0, r2 + beq _02054AC2 + add r3, r1, #0x0 +_02054AC2: + add r0, r3, #0x0 + bx lr + nop +_02054AC8: .word 0x02000051 + + thumb_func_start FUN_02054ACC +FUN_02054ACC: ; 0x02054ACC + add r0, #0xd0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x1a + bhi _02054AE6 + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02054AEC ; =0x04000051 + tst r0, r2 + beq _02054AE6 + add r3, r1, #0x0 +_02054AE6: + add r0, r3, #0x0 + bx lr + nop +_02054AEC: .word 0x04000051 + + thumb_func_start FUN_02054AF0 +FUN_02054AF0: ; 0x02054AF0 + cmp r0, #0x16 + bne _02054AF8 + mov r0, #0x1 + bx lr +_02054AF8: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054AFC +FUN_02054AFC: ; 0x02054AFC + ldr r1, _02054B10 ; =0x020F5C14 + ldrb r1, [r1, r0] + mov r0, #0x2 + tst r0, r1 + beq _02054B0A + mov r0, #0x1 + bx lr +_02054B0A: + mov r0, #0x0 + bx lr + nop +_02054B10: .word 0x020F5C14 + + thumb_func_start FUN_02054B14 +FUN_02054B14: ; 0x02054B14 + cmp r0, #0x86 + bne _02054B1C + mov r0, #0x1 + bx lr +_02054B1C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B20 +FUN_02054B20: ; 0x02054B20 + cmp r0, #0x16 + beq _02054B28 + cmp r0, #0x10 + bne _02054B2C +_02054B28: + mov r0, #0x1 + bx lr +_02054B2C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B30 +FUN_02054B30: ; 0x02054B30 + cmp r0, #0x40 + bne _02054B38 + mov r0, #0x1 + bx lr +_02054B38: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B3C +FUN_02054B3C: ; 0x02054B3C + cmp r0, #0x41 + bne _02054B44 + mov r0, #0x1 + bx lr +_02054B44: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B48 +FUN_02054B48: ; 0x02054B48 + cmp r0, #0x42 + bne _02054B50 + mov r0, #0x1 + bx lr +_02054B50: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B54 +FUN_02054B54: ; 0x02054B54 + cmp r0, #0x43 + bne _02054B5C + mov r0, #0x1 + bx lr +_02054B5C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B60 +FUN_02054B60: ; 0x02054B60 + cmp r0, #0x67 + bne _02054B68 + mov r0, #0x1 + bx lr +_02054B68: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B6C +FUN_02054B6C: ; 0x02054B6C + cmp r0, #0x70 + bne _02054B74 + mov r0, #0x1 + bx lr +_02054B74: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054B78 +FUN_02054B78: ; 0x02054B78 + add r0, #0x8f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xc + bhi _02054B86 + mov r0, #0x1 + bx lr +_02054B86: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02054B8C +FUN_02054B8C: ; 0x02054B8C + add r0, #0x8d + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x9 + bhi _02054BA6 + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02054BAC ; =0x00000221 + tst r0, r2 + beq _02054BA6 + add r3, r1, #0x0 +_02054BA6: + add r0, r3, #0x0 + bx lr + nop +_02054BAC: .word 0x00000221 + + thumb_func_start FUN_02054BB0 +FUN_02054BB0: ; 0x02054BB0 + add r0, #0x8c + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r3, #0x0 + cmp r0, #0x9 + bhi _02054BCA + mov r1, #0x1 + add r2, r1, #0x0 + lsl r2, r0 + ldr r0, _02054BD0 ; =0x00000221 + tst r0, r2 + beq _02054BCA + add r3, r1, #0x0 +_02054BCA: + add r0, r3, #0x0 + bx lr + nop +_02054BD0: .word 0x00000221 + + thumb_func_start FUN_02054BD4 +FUN_02054BD4: ; 0x02054BD4 + cmp r0, #0x75 + bne _02054BDC + mov r0, #0x1 + bx lr +_02054BDC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054BE0 +FUN_02054BE0: ; 0x02054BE0 + add r0, #0x8a + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x3 + bhi _02054BEE + mov r0, #0x1 + bx lr +_02054BEE: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02054BF4 +FUN_02054BF4: ; 0x02054BF4 + add r0, #0x86 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x3 + bhi _02054C02 + mov r0, #0x1 + bx lr +_02054C02: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02054C08 +FUN_02054C08: ; 0x02054C08 + cmp r0, #0xff + bne _02054C10 + mov r0, #0x1 + bx lr +_02054C10: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02054C14 +FUN_02054C14: ; 0x02054C14 + push {r4, lr} + mov r1, #0xa + add r4, r0, #0x0 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C26 + mov r0, #0x1 + pop {r4, pc} +_02054C26: + add r0, r4, #0x0 + mov r1, #0x64 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C36 + mov r0, #0x2 + pop {r4, pc} +_02054C36: + mov r1, #0xfa + add r0, r4, #0x0 + lsl r1, r1, #0x2 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C48 + mov r0, #0x3 + pop {r4, pc} +_02054C48: + ldr r1, _02054C9C ; =0x00002710 + add r0, r4, #0x0 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C58 + mov r0, #0x4 + pop {r4, pc} +_02054C58: + ldr r1, _02054CA0 ; =0x000186A0 + add r0, r4, #0x0 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C68 + mov r0, #0x5 + pop {r4, pc} +_02054C68: + ldr r1, _02054CA4 ; =0x000F4240 + add r0, r4, #0x0 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C78 + mov r0, #0x6 + pop {r4, pc} +_02054C78: + ldr r1, _02054CA8 ; =0x00989680 + add r0, r4, #0x0 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C88 + mov r0, #0x7 + pop {r4, pc} +_02054C88: + ldr r1, _02054CAC ; =0x05F5E100 + add r0, r4, #0x0 + blx _u32_div_f + cmp r0, #0x0 + bne _02054C98 + mov r0, #0x8 + pop {r4, pc} +_02054C98: + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_02054C9C: .word 0x00002710 +_02054CA0: .word 0x000186A0 +_02054CA4: .word 0x000F4240 +_02054CA8: .word 0x00989680 +_02054CAC: .word 0x05F5E100 + + thumb_func_start FUN_02054CB0 +FUN_02054CB0: ; 0x02054CB0 + mov r1, #0x52 + lsl r1, r1, #0x2 + cmp r0, r1 + blo _02054CC2 + add r1, #0x63 + cmp r0, r1 + bhi _02054CC2 + mov r0, #0x1 + bx lr +_02054CC2: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02054CC8 +FUN_02054CC8: ; 0x02054CC8 + cmp r0, #0xe + bhi _02054CD0 + mov r0, #0x6 + bx lr +_02054CD0: + cmp r0, #0x18 + bhi _02054CD8 + mov r0, #0x7 + bx lr +_02054CD8: + cmp r0, #0x27 + bhi _02054CE0 + mov r0, #0x8 + bx lr +_02054CE0: + cmp r0, #0x3b + bhi _02054CE8 + mov r0, #0x9 + bx lr +_02054CE8: + cmp r0, #0x59 + bhi _02054CF0 + mov r0, #0xa + bx lr +_02054CF0: + cmp r0, #0x72 + bhi _02054CF8 + mov r0, #0xb + bx lr +_02054CF8: + cmp r0, #0x86 + bhi _02054D00 + mov r0, #0xc + bx lr +_02054D00: + cmp r0, #0x90 + bhi _02054D08 + mov r0, #0xd + bx lr +_02054D08: + cmp r0, #0x95 + bhi _02054D10 + mov r0, #0xe + bx lr +_02054D10: + cmp r1, #0x0 + beq _02054D18 + mov r0, #0x4 + bx lr +_02054D18: + mov r0, #0x5 + bx lr + + thumb_func_start FUN_02054D1C +FUN_02054D1C: ; 0x02054D1C + cmp r0, #0x27 + bhi _02054D24 + mov r0, #0x13 + bx lr +_02054D24: + cmp r0, #0x3b + bhi _02054D2C + mov r0, #0x14 + bx lr +_02054D2C: + cmp r0, #0x59 + bhi _02054D34 + mov r0, #0x15 + bx lr +_02054D34: + cmp r0, #0x77 + bhi _02054D3C + mov r0, #0x16 + bx lr +_02054D3C: + cmp r0, #0x95 + bhi _02054D44 + mov r0, #0x17 + bx lr +_02054D44: + cmp r0, #0xbd + bhi _02054D4C + mov r0, #0x18 + bx lr +_02054D4C: + cmp r0, #0xe5 + bhi _02054D54 + mov r0, #0x19 + bx lr +_02054D54: + ldr r2, _02054DE8 ; =0x0000010D + cmp r0, r2 + bhi _02054D5E + mov r0, #0x1a + bx lr +_02054D5E: + add r3, r2, #0x0 + add r3, #0x28 + cmp r0, r3 + bhi _02054D6A + mov r0, #0x1b + bx lr +_02054D6A: + add r3, r2, #0x0 + add r3, #0x50 + cmp r0, r3 + bhi _02054D76 + mov r0, #0x1c + bx lr +_02054D76: + add r3, r2, #0x0 + add r3, #0x6e + cmp r0, r3 + bhi _02054D82 + mov r0, #0x1d + bx lr +_02054D82: + add r3, r2, #0x0 + add r3, #0x8c + cmp r0, r3 + bhi _02054D8E + mov r0, #0x1e + bx lr +_02054D8E: + add r3, r2, #0x0 + add r3, #0xa0 + cmp r0, r3 + bhi _02054DA2 + cmp r1, #0x0 + beq _02054D9E + mov r0, #0x20 + bx lr +_02054D9E: + mov r0, #0x1f + bx lr +_02054DA2: + add r3, r2, #0x0 + add r3, #0xb4 + cmp r0, r3 + bhi _02054DAE + mov r0, #0x21 + bx lr +_02054DAE: + add r3, r2, #0x0 + add r3, #0xbe + cmp r0, r3 + bhi _02054DBA + mov r0, #0x22 + bx lr +_02054DBA: + add r3, r2, #0x0 + add r3, #0xc8 + cmp r0, r3 + bhi _02054DC6 + mov r0, #0x23 + bx lr +_02054DC6: + add r3, r2, #0x0 + add r3, #0xce + cmp r0, r3 + bhi _02054DD2 + mov r0, #0x24 + bx lr +_02054DD2: + add r2, #0xd4 + cmp r0, r2 + bhi _02054DDC + mov r0, #0x25 + bx lr +_02054DDC: + cmp r1, #0x0 + beq _02054DE4 + mov r0, #0x27 + bx lr +_02054DE4: + mov r0, #0x26 + bx lr + .balign 4 +_02054DE8: .word 0x0000010D + + thumb_func_start FUN_02054DEC +FUN_02054DEC: ; 0x02054DEC + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_0206BB1C + bl FUN_0206B9AC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r4, _02054E2C ; =0x00000000 + beq _02054E28 + mov r7, #0x4c +_02054E02: + add r0, r6, #0x0 + bl FUN_0206BB1C + add r1, r4, #0x0 + bl FUN_0206B9B0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02054E1E + add r0, r4, #0x0 + pop {r3-r7, pc} +_02054E1E: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blo _02054E02 +_02054E28: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02054E2C: .word 0x00000000 + + thumb_func_start FUN_02054E30 +FUN_02054E30: ; 0x02054E30 + push {r3-r7, lr} + sub sp, #0x10 + mov r7, #0x0 + bl FUN_0206BB1C + str r0, [sp, #0x0] + bl FUN_0206B9AC + add r4, r0, #0x0 + add r6, r7, #0x0 + cmp r4, #0x0 + ble _02054E64 + add r5, sp, #0x4 +_02054E4A: + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x0] + add r6, r6, #0x1 + add r5, r5, #0x2 + cmp r6, r4 + blt _02054E4A +_02054E64: + ldr r2, _02054E9C ; =0x020F5D14 + mov r6, #0x0 +_02054E68: + mov r1, #0x0 + cmp r4, #0x0 + ble _02054E84 + ldrh r5, [r2, #0x0] + add r3, sp, #0x4 +_02054E72: + ldrh r0, [r3, #0x0] + cmp r0, r5 + bne _02054E7C + add r7, r7, #0x1 + b _02054E84 +_02054E7C: + add r1, r1, #0x1 + add r3, r3, #0x2 + cmp r1, r4 + blt _02054E72 +_02054E84: + add r6, r6, #0x1 + add r2, r2, #0x2 + cmp r6, #0x3 + blt _02054E68 + cmp r7, #0x3 + bne _02054E96 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_02054E96: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02054E9C: .word 0x020F5D14 + + thumb_func_start FUN_02054EA0 +FUN_02054EA0: ; 0x02054EA0 + push {r4-r5, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_02046528 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0x2 + lsl r0, r0, #0xe + str r0, [sp, #0x0] + str r0, [sp, #0x8] + ldrh r0, [r4, #0xe] + ldr r5, [r4, #0x4] + bl FUN_0201B93C + asr r1, r0, #0x1f + asr r3, r5, #0x1f + add r2, r5, #0x0 + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [sp, #0x0] + ldrh r0, [r4, #0xe] + ldr r5, [r4, #0x8] + bl FUN_0201B93C + asr r1, r0, #0x1f + asr r3, r5, #0x1f + add r2, r5, #0x0 + blx _ll_mul + mov r2, #0x2 + mov r3, #0x0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + str r1, [sp, #0x8] + str r3, [sp, #0x4] + ldr r0, [r4, #0x0] + add r1, sp, #0x0 + bl FUN_02058BB4 + ldrh r1, [r4, #0xe] + ldrh r0, [r4, #0x10] + add r0, r1, r0 + strh r0, [r4, #0xe] + mov r0, #0x5a + ldrh r1, [r4, #0xe] + lsl r0, r0, #0x2 + cmp r1, r0 + blo _02054F28 + mov r0, #0x0 + strh r0, [r4, #0xe] + ldrh r0, [r4, #0xc] + sub r0, r0, #0x1 + strh r0, [r4, #0xc] +_02054F28: + ldrh r0, [r4, #0xc] + cmp r0, #0x0 + bne _02054F4A + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0x4] + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + add r1, sp, #0x0 + bl FUN_02058BB4 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r4-r5, pc} +_02054F4A: + mov r0, #0x0 + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_02054F50 +FUN_02054F50: ; 0x02054F50 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02046528 + str r0, [sp, #0x0] + mov r0, #0xb + mov r1, #0x14 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x14 + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, sp, #0x8 + ldrh r0, [r0, #0x10] + cmp r0, #0x0 + beq _02054F8A + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _02054F98 +_02054F8A: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_02054F98: + blx _ffix + str r0, [r4, #0x4] + add r0, sp, #0x8 + ldrh r0, [r0, #0x14] + cmp r0, #0x0 + beq _02054FB8 + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _02054FC6 +_02054FB8: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_02054FC6: + blx _ffix + str r0, [r4, #0x8] + strh r6, [r4, #0xc] + strh r7, [r4, #0x10] + ldr r0, [sp, #0x0] + str r5, [r4, #0x0] + ldr r0, [r0, #0x10] + ldr r1, _02054FE0 ; =FUN_02054EA0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_02054FE0: .word FUN_02054EA0 + + thumb_func_start FUN_02054FE4 +FUN_02054FE4: ; 0x02054FE4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldrb r1, [r4, #0x9] + ldr r0, [r4, #0x0] + bl FUN_0205889C + ldrb r1, [r4, #0x8] + add r0, r1, #0x1 + strb r0, [r4, #0x8] + ldrh r0, [r4, #0x6] + cmp r1, r0 + blt _02055028 + ldrb r1, [r4, #0x9] + mov r0, #0x1 + eor r0, r1 + strb r0, [r4, #0x9] + mov r0, #0x0 + strb r0, [r4, #0x8] + ldrh r1, [r4, #0x4] + sub r0, r1, #0x1 + strh r0, [r4, #0x4] + cmp r1, #0x0 + bne _02055028 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r4, pc} +_02055028: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205502C +FUN_0205502C: ; 0x0205502C + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02046528 + str r0, [sp, #0x0] + mov r0, #0xb + mov r1, #0xc + bl FUN_020169D8 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0xc + blx MI_CpuFill8 + strh r6, [r4, #0x4] + strh r7, [r4, #0x6] + str r5, [r4, #0x0] + mov r0, #0x0 + strb r0, [r4, #0x9] + ldr r0, [sp, #0x0] + ldr r1, _02055064 ; =FUN_02054FE4 + ldr r0, [r0, #0x10] + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_02055064: .word FUN_02054FE4 + + thumb_func_start FUN_02055068 +FUN_02055068: ; 0x02055068 + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + str r3, [sp, #0x8] + bl FUN_0205517C + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + add r6, r0, #0x0 + bl FUN_0205519C + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x24] + bl FUN_020555A0 + add r2, r0, #0x0 + str r5, [sp, #0x0] + ldr r3, [sp, #0x8] + add r0, r6, #0x0 + add r1, r7, #0x0 + str r4, [sp, #0x4] + bl FUN_02055208 + add r0, r6, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020550A4 +FUN_020550A4: ; 0x020550A4 + push {r3-r7, lr} + add r4, r1, #0x0 + add r7, r0, #0x0 + add r6, r2, #0x0 + bl FUN_0205517C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020554C8 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + add r2, r6, #0x0 + add r3, r4, #0x0 + bl FUN_0205519C + add r0, r7, #0x0 + bl FUN_020552E4 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_020555A0 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058454 + mov r1, #0x9 + add r0, r4, #0x0 + lsl r1, r1, #0xa + bl FUN_02058410 + mov r1, #0x6 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058418 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02058AC8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205539C + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02055108 +FUN_02055108: ; 0x02055108 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bne _02055118 + bl ErrorHandling +_02055118: + add r0, r4, #0x0 + bl FUN_02058578 + add r0, r5, #0x0 + bl FUN_021EDBC8 + add r0, r5, #0x0 + bl FUN_020553C4 + cmp r0, #0x2 + bne _0205515C + add r0, r5, #0x0 + bl FUN_02055320 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205532C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020552F8 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0224ABAC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02055450 +_0205515C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02055160 +FUN_02055160: ; 0x02055160 + ldr r3, _02055164 ; =FUN_02016A18 + bx r3 + .balign 4 +_02055164: .word FUN_02016A18 + + thumb_func_start FUN_02055168 +FUN_02055168: ; 0x02055168 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020553A0 + bl FUN_02057654 + add r0, r4, #0x0 + bl FUN_02055160 + pop {r4, pc} + + thumb_func_start FUN_0205517C +FUN_0205517C: ; 0x0205517C + push {r4, lr} + mov r0, #0xb + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0x0 + bne _0205518E + bl ErrorHandling +_0205518E: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x3c + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205519C +FUN_0205519C: ; 0x0205519C + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r1, r3, #0x0 + add r6, r2, #0x0 + bl FUN_02055458 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02055374 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020553A8 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020553E4 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020553DC + add r0, r5, #0x0 + bl FUN_02055410 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + bl FUN_0205542C + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + bl FUN_02055434 + add r0, r5, #0x0 + mov r1, #0xff + bl FUN_02055460 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020556C8 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205574C + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02055208 +FUN_02055208: ; 0x02055208 + push {r4-r5, lr} + sub sp, #0xc + add r4, r0, #0x0 + str r2, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r0, r1, #0x0 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + bl FUN_0205753C + add r5, r0, #0x0 + bne _02055228 + bl ErrorHandling +_02055228: + add r0, r5, #0x0 + mov r1, #0xff + bl FUN_02058444 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058484 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205848C + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058494 + mov r1, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020584EC + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_020584EC + add r0, r5, #0x0 + mov r1, #0x0 + mov r2, #0x2 + bl FUN_020584EC + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + bl FUN_02058534 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + bl FUN_0205853C + mov r1, #0x9 + add r0, r5, #0x0 + lsl r1, r1, #0xa + bl FUN_02058410 + mov r1, #0x6 + add r0, r5, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058418 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058AC8 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0205539C + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_020552A4 +FUN_020552A4: ; 0x020552A4 + push {r3-r7, lr} + sub sp, #0x8 + mov r1, #0x0 + str r1, [sp, #0x4] + str r1, [sp, #0x0] + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + add r5, r0, #0x0 + bl FUN_020580F4 + cmp r0, #0x0 + beq _020552DE + add r4, sp, #0x0 + add r6, sp, #0x4 + mov r7, #0x1 +_020552C4: + ldr r0, [sp, #0x0] + bl FUN_02058480 + cmp r0, #0x1 + beq _020552DE + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_020580F4 + cmp r0, #0x0 + bne _020552C4 +_020552DE: + ldr r0, [sp, #0x0] + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_020552E4 +FUN_020552E4: ; 0x020552E4 + push {r4, lr} + bl FUN_020552A4 + add r4, r0, #0x0 + bne _020552F2 + bl ErrorHandling +_020552F2: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020552F8 +FUN_020552F8: ; 0x020552F8 + push {r3, lr} + bl FUN_020553A0 + bl FUN_020584C4 + pop {r3, pc} + + thumb_func_start FUN_02055304 +FUN_02055304: ; 0x02055304 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + bl FUN_020584AC + pop {r4, pc} + + thumb_func_start FUN_02055314 +FUN_02055314: ; 0x02055314 + push {r3, lr} + bl FUN_020553A0 + bl FUN_020584D4 + pop {r3, pc} + + thumb_func_start FUN_02055320 +FUN_02055320: ; 0x02055320 + push {r3, lr} + bl FUN_020553A0 + bl FUN_02058B2C + pop {r3, pc} + + thumb_func_start FUN_0205532C +FUN_0205532C: ; 0x0205532C + push {r3, lr} + bl FUN_020553A0 + bl FUN_02058B4C + pop {r3, pc} + + thumb_func_start FUN_02055338 +FUN_02055338: ; 0x02055338 + push {r3, lr} + bl FUN_020553A0 + bl FUN_02058B14 + pop {r3, pc} + + thumb_func_start FUN_02055344 +FUN_02055344: ; 0x02055344 + push {r3, lr} + bl FUN_020553A0 + bl FUN_02058B24 + pop {r3, pc} + + thumb_func_start FUN_02055350 +FUN_02055350: ; 0x02055350 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + bl FUN_02058B5C + pop {r4, pc} + + thumb_func_start FUN_02055360 +FUN_02055360: ; 0x02055360 + push {r3, lr} + bl FUN_020553A4 + bl FUN_02058B7C + pop {r3, pc} + + thumb_func_start FUN_0205536C +FUN_0205536C: ; 0x0205536C + str r1, [r0, #0x10] + bx lr + + thumb_func_start FUN_02055370 +FUN_02055370: ; 0x02055370 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_02055374 +FUN_02055374: ; 0x02055374 + str r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_02055378 +FUN_02055378: ; 0x02055378 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start FUN_0205537C +FUN_0205537C: ; 0x0205537C + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020553A0 + cmp r4, #0x1 + bne _02055392 + mov r1, #0x2 + lsl r1, r1, #0x8 + bl FUN_02058418 + pop {r4, pc} +_02055392: + mov r1, #0x2 + lsl r1, r1, #0x8 + bl FUN_02058410 + pop {r4, pc} + + thumb_func_start FUN_0205539C +FUN_0205539C: ; 0x0205539C + str r1, [r0, #0x2c] + bx lr + + thumb_func_start FUN_020553A0 +FUN_020553A0: ; 0x020553A0 + ldr r0, [r0, #0x2c] + bx lr + + thumb_func_start FUN_020553A4 +FUN_020553A4: ; 0x020553A4 + ldr r0, [r0, #0x2c] + bx lr + + thumb_func_start FUN_020553A8 +FUN_020553A8: ; 0x020553A8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + blt _020553B6 + bl ErrorHandling +_020553B6: + add r0, r5, #0x0 + add r1, r4, #0x0 + str r4, [r5, #0x18] + bl FUN_020554DC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020553C4 +FUN_020553C4: ; 0x020553C4 + push {r4, lr} + add r4, r0, #0x0 + bne _020553CE + bl ErrorHandling +_020553CE: + ldr r0, [r4, #0x18] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020553D4 +FUN_020553D4: ; 0x020553D4 + ldr r2, [r0, #0x4] + orr r1, r2 + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_020553DC +FUN_020553DC: ; 0x020553DC + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_020553E0 +FUN_020553E0: ; 0x020553E0 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_020553E4 +FUN_020553E4: ; 0x020553E4 + str r1, [r0, #0x1c] + bx lr + + thumb_func_start FUN_020553E8 +FUN_020553E8: ; 0x020553E8 + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start FUN_020553EC +FUN_020553EC: ; 0x020553EC + ldr r2, [r0, #0x0] + orr r1, r2 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_020553F4 +FUN_020553F4: ; 0x020553F4 + ldr r2, [r0, #0x0] + mvn r1, r1 + and r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02055400 +FUN_02055400: ; 0x02055400 + ldr r0, [r0, #0x0] + and r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_02055408 +FUN_02055408: ; 0x02055408 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start FUN_0205540C +FUN_0205540C: ; 0x0205540C + str r1, [r0, #0x20] + bx lr + + thumb_func_start FUN_02055410 +FUN_02055410: ; 0x02055410 + ldr r3, _02055418 ; =FUN_020556F4 + mov r1, #0x0 + str r1, [r0, #0x20] + bx r3 + .balign 4 +_02055418: .word FUN_020556F4 + + thumb_func_start FUN_0205541C +FUN_0205541C: ; 0x0205541C + ldr r3, [r0, #0x20] + add r1, r3, r1 + str r1, [r0, #0x20] + cmp r1, r2 + ble _02055428 + str r2, [r0, #0x20] +_02055428: + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start FUN_0205542C +FUN_0205542C: ; 0x0205542C + str r1, [r0, #0x24] + bx lr + + thumb_func_start FUN_02055430 +FUN_02055430: ; 0x02055430 + ldr r0, [r0, #0x24] + bx lr + + thumb_func_start FUN_02055434 +FUN_02055434: ; 0x02055434 + str r1, [r0, #0x28] + bx lr + + thumb_func_start FUN_02055438 +FUN_02055438: ; 0x02055438 + ldr r0, [r0, #0x28] + bx lr + + thumb_func_start FUN_0205543C +FUN_0205543C: ; 0x0205543C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_0205542C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02055434 + pop {r3-r5, pc} + + thumb_func_start FUN_02055450 +FUN_02055450: ; 0x02055450 + str r1, [r0, #0x30] + bx lr + + thumb_func_start FUN_02055454 +FUN_02055454: ; 0x02055454 + ldr r0, [r0, #0x30] + bx lr + + thumb_func_start FUN_02055458 +FUN_02055458: ; 0x02055458 + str r1, [r0, #0x34] + bx lr + + thumb_func_start FUN_0205545C +FUN_0205545C: ; 0x0205545C + ldr r0, [r0, #0x34] + bx lr + + thumb_func_start FUN_02055460 +FUN_02055460: ; 0x02055460 + str r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_02055464 +FUN_02055464: ; 0x02055464 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_02055468 +FUN_02055468: ; 0x02055468 + mov r1, #0x0 + strh r1, [r0, #0x0] + strh r1, [r0, #0x2] + str r1, [r0, #0x4] + bx lr + .balign 4 + + thumb_func_start FUN_02055474 +FUN_02055474: ; 0x02055474 + cmp r0, #0x0 + beq _02055482 + ldrh r0, [r0, #0x2] + cmp r0, #0x1 + bne _02055482 + mov r0, #0x1 + bx lr +_02055482: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02055488 +FUN_02055488: ; 0x02055488 + cmp r1, #0x1 + bne _02055492 + mov r1, #0x1 + strh r1, [r0, #0x2] + bx lr +_02055492: + mov r1, #0x0 + strh r1, [r0, #0x2] + bx lr + + thumb_func_start FUN_02055498 +FUN_02055498: ; 0x02055498 + cmp r0, #0x0 + bne _020554A0 + mov r0, #0x0 + bx lr +_020554A0: + ldrh r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_020554A4 +FUN_020554A4: ; 0x020554A4 + cmp r0, #0x0 + beq _020554AA + strh r1, [r0, #0x0] +_020554AA: + bx lr + + thumb_func_start FUN_020554AC +FUN_020554AC: ; 0x020554AC + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0205545C + add r1, r4, #0x0 + bl FUN_020554A4 + pop {r4, pc} + + thumb_func_start FUN_020554BC +FUN_020554BC: ; 0x020554BC + push {r3, lr} + bl FUN_0205545C + bl FUN_02055498 + pop {r3, pc} + + thumb_func_start FUN_020554C8 +FUN_020554C8: ; 0x020554C8 + cmp r0, #0x0 + beq _020554D0 + ldr r0, [r0, #0x4] + bx lr +_020554D0: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020554D4 +FUN_020554D4: ; 0x020554D4 + cmp r0, #0x0 + beq _020554DA + str r1, [r0, #0x4] +_020554DA: + bx lr + + thumb_func_start FUN_020554DC +FUN_020554DC: ; 0x020554DC + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0205545C + add r1, r4, #0x0 + bl FUN_020554D4 + pop {r4, pc} + + thumb_func_start FUN_020554EC +FUN_020554EC: ; 0x020554EC + push {r4-r6, lr} + add r4, r1, #0x0 + add r6, r2, #0x0 + add r5, r0, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02058DBC + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02055374 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02055514 +FUN_02055514: ; 0x02055514 + push {r3-r7, lr} + add r6, r1, #0x0 + add r7, r2, #0x0 + add r5, r0, #0x0 + add r4, r3, #0x0 + bl FUN_020553A0 + add r1, r6, #0x0 + mov r2, #0x0 + add r3, r7, #0x0 + str r4, [sp, #0x0] + bl FUN_02058E28 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02055374 + pop {r3-r7, pc} + + thumb_func_start FUN_02055540 +FUN_02055540: ; 0x02055540 + push {r4-r5, lr} + sub sp, #0xc + add r5, r1, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + add r1, sp, #0x0 + bl FUN_02058B5C + add r0, r4, #0x0 + add r1, sp, #0x0 + str r5, [sp, #0x4] + bl FUN_02058B6C + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_02055560 +FUN_02055560: ; 0x02055560 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020553A0 + cmp r4, #0x1 + bne _02055574 + mov r1, #0x0 + bl FUN_02058960 + pop {r4, pc} +_02055574: + mov r1, #0x1 + bl FUN_02058960 + pop {r4, pc} + + thumb_func_start FUN_0205557C +FUN_0205557C: ; 0x0205557C + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + cmp r5, #0x1 + bne _02055598 + mov r1, #0x0 + bl FUN_02058960 + add r0, r4, #0x0 + bl FUN_02059D1C + pop {r3-r5, pc} +_02055598: + mov r1, #0x1 + bl FUN_02058960 + pop {r3-r5, pc} + + thumb_func_start FUN_020555A0 +FUN_020555A0: ; 0x020555A0 + push {r3, lr} + cmp r1, #0x0 + bne _020555F2 + cmp r0, #0x9 + bhi _0205563E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020555B6: ; jump table (using 16-bit offset) + .short _020555CA - _020555B6 - 2; case 0 + .short _020555CE - _020555B6 - 2; case 1 + .short _020555D2 - _020555B6 - 2; case 2 + .short _020555D6 - _020555B6 - 2; case 3 + .short _020555DA - _020555B6 - 2; case 4 + .short _020555DE - _020555B6 - 2; case 5 + .short _020555E2 - _020555B6 - 2; case 6 + .short _020555E6 - _020555B6 - 2; case 7 + .short _020555EA - _020555B6 - 2; case 8 + .short _020555EE - _020555B6 - 2; case 9 +_020555CA: + mov r0, #0x0 + pop {r3, pc} +_020555CE: + mov r0, #0x15 + pop {r3, pc} +_020555D2: + mov r0, #0xb2 + pop {r3, pc} +_020555D6: + mov r0, #0xb0 + pop {r3, pc} +_020555DA: + mov r0, #0xb4 + pop {r3, pc} +_020555DE: + mov r0, #0xba + pop {r3, pc} +_020555E2: + mov r0, #0xbc + pop {r3, pc} +_020555E6: + mov r0, #0xc4 + pop {r3, pc} +_020555EA: + mov r0, #0xc6 + pop {r3, pc} +_020555EE: + mov r0, #0xc8 + pop {r3, pc} +_020555F2: + cmp r0, #0x9 + bhi _0205563E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02055602: ; jump table (using 16-bit offset) + .short _02055616 - _02055602 - 2; case 0 + .short _0205561A - _02055602 - 2; case 1 + .short _0205561E - _02055602 - 2; case 2 + .short _02055622 - _02055602 - 2; case 3 + .short _02055626 - _02055602 - 2; case 4 + .short _0205562A - _02055602 - 2; case 5 + .short _0205562E - _02055602 - 2; case 6 + .short _02055632 - _02055602 - 2; case 7 + .short _02055636 - _02055602 - 2; case 8 + .short _0205563A - _02055602 - 2; case 9 +_02055616: + mov r0, #0x61 + pop {r3, pc} +_0205561A: + mov r0, #0x62 + pop {r3, pc} +_0205561E: + mov r0, #0xb3 + pop {r3, pc} +_02055622: + mov r0, #0xb1 + pop {r3, pc} +_02055626: + mov r0, #0xb5 + pop {r3, pc} +_0205562A: + mov r0, #0xbb + pop {r3, pc} +_0205562E: + mov r0, #0xbd + pop {r3, pc} +_02055632: + mov r0, #0xc5 + pop {r3, pc} +_02055636: + mov r0, #0xc7 + pop {r3, pc} +_0205563A: + mov r0, #0xc9 + pop {r3, pc} +_0205563E: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02055648 +FUN_02055648: ; 0x02055648 + push {r3, lr} + cmp r0, #0x9 + bhi _02055690 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205565A: ; jump table (using 16-bit offset) + .short _0205566E - _0205565A - 2; case 0 + .short _02055672 - _0205565A - 2; case 1 + .short _02055676 - _0205565A - 2; case 2 + .short _02055690 - _0205565A - 2; case 3 + .short _0205567A - _0205565A - 2; case 4 + .short _02055690 - _0205565A - 2; case 5 + .short _0205567E - _0205565A - 2; case 6 + .short _02055682 - _0205565A - 2; case 7 + .short _02055686 - _0205565A - 2; case 8 + .short _0205568A - _0205565A - 2; case 9 +_0205566E: + mov r0, #0x1 + pop {r3, pc} +_02055672: + mov r0, #0x2 + pop {r3, pc} +_02055676: + mov r0, #0x4 + pop {r3, pc} +_0205567A: + mov r0, #0x10 + pop {r3, pc} +_0205567E: + mov r0, #0x20 + pop {r3, pc} +_02055682: + mov r0, #0x40 + pop {r3, pc} +_02055686: + mov r0, #0x80 + pop {r3, pc} +_0205568A: + mov r0, #0x1 + lsl r0, r0, #0x8 + pop {r3, pc} +_02055690: + bl ErrorHandling + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_02055698 +FUN_02055698: ; 0x02055698 + ldr r0, [r0, #0x38] + bx lr + + thumb_func_start FUN_0205569C +FUN_0205569C: ; 0x0205569C + push {r3, lr} + cmp r1, #0x1 + bne _020556AA + mov r1, #0x1 + bl FUN_020553EC + pop {r3, pc} +_020556AA: + mov r1, #0x1 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020556B4 +FUN_020556B4: ; 0x020556B4 + push {r3, lr} + mov r1, #0x1 + bl FUN_02055400 + cmp r0, #0x0 + beq _020556C4 + mov r0, #0x1 + pop {r3, pc} +_020556C4: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020556C8 +FUN_020556C8: ; 0x020556C8 + push {r3, lr} + cmp r1, #0x1 + bne _020556D6 + mov r1, #0x2 + bl FUN_020553EC + pop {r3, pc} +_020556D6: + mov r1, #0x2 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020556E0 +FUN_020556E0: ; 0x020556E0 + push {r3, lr} + mov r1, #0x2 + bl FUN_02055400 + cmp r0, #0x0 + beq _020556F0 + mov r0, #0x1 + pop {r3, pc} +_020556F0: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020556F4 +FUN_020556F4: ; 0x020556F4 + push {r3, lr} + cmp r1, #0x1 + bne _02055702 + mov r1, #0x4 + bl FUN_020553EC + pop {r3, pc} +_02055702: + mov r1, #0x4 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205570C +FUN_0205570C: ; 0x0205570C + push {r3, lr} + mov r1, #0x4 + bl FUN_02055400 + cmp r0, #0x0 + beq _0205571C + mov r0, #0x1 + pop {r3, pc} +_0205571C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02055720 +FUN_02055720: ; 0x02055720 + push {r3, lr} + cmp r1, #0x1 + bne _0205572E + mov r1, #0x8 + bl FUN_020553EC + pop {r3, pc} +_0205572E: + mov r1, #0x8 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02055738 +FUN_02055738: ; 0x02055738 + push {r3, lr} + mov r1, #0x8 + bl FUN_02055400 + cmp r0, #0x0 + beq _02055748 + mov r0, #0x1 + pop {r3, pc} +_02055748: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205574C +FUN_0205574C: ; 0x0205574C + push {r3, lr} + cmp r1, #0x1 + bne _0205575A + mov r1, #0x10 + bl FUN_020553EC + pop {r3, pc} +_0205575A: + mov r1, #0x10 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02055764 +FUN_02055764: ; 0x02055764 + push {r3, lr} + mov r1, #0x10 + bl FUN_02055400 + cmp r0, #0x0 + beq _02055774 + mov r0, #0x1 + pop {r3, pc} +_02055774: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02055778 +FUN_02055778: ; 0x02055778 + push {r3, lr} + cmp r1, #0x1 + bne _02055786 + mov r1, #0x20 + bl FUN_020553EC + pop {r3, pc} +_02055786: + mov r1, #0x20 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02055790 +FUN_02055790: ; 0x02055790 + push {r3, lr} + mov r1, #0x20 + bl FUN_02055400 + cmp r0, #0x0 + beq _020557A0 + mov r0, #0x1 + pop {r3, pc} +_020557A0: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020557A4 +FUN_020557A4: ; 0x020557A4 + ldr r3, _020557AC ; =FUN_020553EC + mov r1, #0x40 + bx r3 + nop +_020557AC: .word FUN_020553EC + + thumb_func_start FUN_020557B0 +FUN_020557B0: ; 0x020557B0 + ldr r3, _020557B8 ; =FUN_020553F4 + mov r1, #0x40 + bx r3 + nop +_020557B8: .word FUN_020553F4 + + thumb_func_start FUN_020557BC +FUN_020557BC: ; 0x020557BC + push {r3, lr} + mov r1, #0x40 + bl FUN_02055400 + cmp r0, #0x0 + beq _020557CC + mov r0, #0x1 + pop {r3, pc} +_020557CC: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020557D0 +FUN_020557D0: ; 0x020557D0 + push {r3, lr} + cmp r1, #0x1 + bne _020557DE + mov r1, #0x80 + bl FUN_020553EC + pop {r3, pc} +_020557DE: + mov r1, #0x80 + bl FUN_020553F4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020557E8 +FUN_020557E8: ; 0x020557E8 + ldr r3, _020557F0 ; =FUN_02055400 + mov r1, #0x80 + bx r3 + nop +_020557F0: .word FUN_02055400 + + thumb_func_start FUN_020557F4 +FUN_020557F4: ; 0x020557F4 + push {r3-r7, lr} + add r7, r1, #0x0 + mov r1, #0x0 + add r4, r2, #0x0 + mvn r1, r1 + add r5, r0, #0x0 + add r6, r3, #0x0 + cmp r4, r1 + bne _02055812 + add r2, sp, #0x8 + ldrh r2, [r2, #0x10] + add r1, r6, #0x0 + bl FUN_02057060 + add r4, r0, #0x0 +_02055812: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020563F0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020558A0 + cmp r0, #0x0 + beq _02055896 + add r3, sp, #0x8 + ldrh r3, [r3, #0x10] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02055900 + add r0, r5, #0x0 + bl FUN_021E5FE0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02055BD4 + cmp r0, #0x1 + bne _0205584E + add r0, r5, #0x0 + bl FUN_021E7138 + pop {r3-r7, pc} +_0205584E: + add r0, r5, #0x0 + bl FUN_020553C4 + cmp r0, #0x0 + bne _02055878 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020561D0 + cmp r0, #0x0 + beq _0205586C + add r0, r5, #0x0 + bl FUN_021E7138 + b _02055878 +_0205586C: + ldr r0, [sp, #0x1c] + cmp r0, #0x1 + bne _02055878 + add r0, r5, #0x0 + bl FUN_021E70F0 +_02055878: + add r0, sp, #0x8 + ldrh r0, [r0, #0x10] + add r1, r7, #0x0 + add r2, r4, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r3, r6, #0x0 + bl FUN_02056110 + add r0, r5, #0x0 + bl FUN_02055928 + add r0, r5, #0x0 + bl FUN_02055968 +_02055896: + pop {r3-r7, pc} + + thumb_func_start FUN_02055898 +FUN_02055898: ; 0x02055898 + ldr r3, _0205589C ; =FUN_020558A0 + bx r3 + .balign 4 +_0205589C: .word FUN_020558A0 + + thumb_func_start FUN_020558A0 +FUN_020558A0: ; 0x020558A0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020553A0 + add r6, r0, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _020558B8 + mov r0, #0x1 + pop {r4-r6, pc} +_020558B8: + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _020558C4 + mov r0, #0x0 + pop {r4-r6, pc} +_020558C4: + add r0, r6, #0x0 + bl FUN_020586F0 + bl FUN_020570F0 + cmp r0, #0x1 + bne _020558FA + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02056B74 + cmp r0, #0x0 + bne _020558E4 + mov r0, #0x1 + pop {r4-r6, pc} +_020558E4: + cmp r0, #0x20 + bne _020558F6 + add r0, r5, #0x0 + bl FUN_020553C4 + cmp r0, #0x2 + bne _020558F6 + mov r0, #0x1 + pop {r4-r6, pc} +_020558F6: + mov r0, #0x0 + pop {r4-r6, pc} +_020558FA: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02055900 +FUN_02055900: ; 0x02055900 + push {r4-r6, lr} + add r6, r3, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02057028 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02057044 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205543C + add r0, r5, #0x0 + bl FUN_020557B0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02055928 +FUN_02055928: ; 0x02055928 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020557BC + cmp r0, #0x1 + bne _02055964 + add r0, r4, #0x0 + bl FUN_02055370 + cmp r0, #0x1 + bne _02055964 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020556C8 + add r0, r4, #0x0 + bl FUN_02055764 + cmp r0, #0x1 + bne _02055964 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205574C + add r0, r4, #0x0 + bl FUN_020553A0 + mov r1, #0x0 + bl FUN_02058A18 +_02055964: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02055968 +FUN_02055968: ; 0x02055968 + push {r4-r6, lr} + add r4, r0, #0x0 + bl FUN_02055370 + cmp r0, #0x1 + bne _02055A20 + add r0, r4, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r4, #0x0 + bl FUN_020586F0 + bl FUN_0205B020 + add r1, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0205599C + add r6, r5, #0x0 + b _020559A6 +_0205599C: + add r0, r4, #0x0 + bl FUN_02059C90 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_020559A6: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02059B2C + cmp r0, #0x1 + bne _020559B8 + ldr r0, _02055A24 ; =0x0000061F + bl FUN_020054C8 +_020559B8: + add r0, r5, #0x0 + bl FUN_02054AF0 + cmp r0, #0x1 + bne _020559C8 + ldr r0, _02055A28 ; =0x00000641 + bl FUN_020054C8 +_020559C8: + add r0, r5, #0x0 + bl FUN_0205483C + cmp r0, #0x1 + bne _020559D8 + ldr r0, _02055A2C ; =0x00000642 + bl FUN_020054C8 +_020559D8: + add r0, r5, #0x0 + bl FUN_02054830 + add r0, r5, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + bne _020559F8 + add r0, r5, #0x0 + bl FUN_02054984 + cmp r0, #0x1 + beq _020559F8 + ldr r0, _02055A30 ; =0x00000655 + bl FUN_020054C8 +_020559F8: + add r0, r4, #0x0 + bl FUN_020586F0 + bl FUN_020570F0 + cmp r0, #0x0 + bne _02055A20 + add r0, r5, #0x0 + bl FUN_02054798 + cmp r0, #0x1 + beq _02055A1A + add r0, r6, #0x0 + bl FUN_02054798 + cmp r0, #0x1 + bne _02055A20 +_02055A1A: + ldr r0, _02055A34 ; =0x00000653 + bl FUN_020054C8 +_02055A20: + pop {r4-r6, pc} + nop +_02055A24: .word 0x0000061F +_02055A28: .word 0x00000641 +_02055A2C: .word 0x00000642 +_02055A30: .word 0x00000655 +_02055A34: .word 0x00000653 + + thumb_func_start FUN_02055A38 +FUN_02055A38: ; 0x02055A38 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02055370 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02055378 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020553A0 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02055374 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + bl FUN_02055BEC + cmp r0, #0x0 + beq _02055A76 + cmp r0, #0x5 + beq _02055A76 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_02055374 + pop {r3-r7, pc} +_02055A76: + add r0, r7, #0x0 + bl FUN_0205AD98 + cmp r0, #0x0 + bne _02055AC2 + cmp r6, #0x0 + beq _02055B10 + cmp r6, #0x1 + beq _02055A8E + cmp r6, #0x2 + beq _02055AB8 + pop {r3-r7, pc} +_02055A8E: + add r0, r7, #0x0 + bl FUN_020586F0 + bl FUN_020570F0 + cmp r0, #0x1 + beq _02055B10 + cmp r4, #0x0 + beq _02055AA4 + cmp r4, #0x3 + bne _02055AAE +_02055AA4: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02055374 + pop {r3-r7, pc} +_02055AAE: + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_02055374 + pop {r3-r7, pc} +_02055AB8: + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_02055374 + pop {r3-r7, pc} +_02055AC2: + add r0, r7, #0x0 + bl FUN_0205AE28 + cmp r0, #0x1 + bne _02055B10 + cmp r6, #0x0 + beq _02055B10 + cmp r6, #0x1 + beq _02055ADA + cmp r6, #0x2 + beq _02055AF6 + pop {r3-r7, pc} +_02055ADA: + cmp r4, #0x0 + beq _02055B10 + cmp r4, #0x3 + bne _02055AEC + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02055374 + pop {r3-r7, pc} +_02055AEC: + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_02055374 + pop {r3-r7, pc} +_02055AF6: + cmp r4, #0x0 + beq _02055B10 + cmp r4, #0x3 + bne _02055B08 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02055374 + pop {r3-r7, pc} +_02055B08: + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_02055374 +_02055B10: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02055B14 +FUN_02055B14: ; 0x02055B14 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0205536C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02055374 + add r0, r4, #0x0 + bl FUN_02055410 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02055B30 +FUN_02055B30: ; 0x02055B30 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02055370 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02055378 + cmp r4, #0x0 + bne _02055B48 + mov r0, #0x1 + pop {r3-r5, pc} +_02055B48: + cmp r4, #0x2 + bne _02055B50 + mov r0, #0x1 + pop {r3-r5, pc} +_02055B50: + cmp r4, #0x1 + bne _02055B86 + cmp r0, #0x0 + beq _02055B5C + cmp r0, #0x3 + bne _02055B60 +_02055B5C: + mov r0, #0x1 + pop {r3-r5, pc} +_02055B60: + add r0, r5, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _02055B74 + mov r0, #0x1 + pop {r3-r5, pc} +_02055B74: + add r0, r4, #0x0 + bl FUN_020586F0 + bl FUN_020570F0 + cmp r0, #0x1 + bne _02055B86 + mov r0, #0x1 + pop {r3-r5, pc} +_02055B86: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02055B8C +FUN_02055B8C: ; 0x02055B8C + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0205536C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02055374 + add r0, r4, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + add r1, r5, #0x0 + bl FUN_020584AC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02059C60 + add r0, r4, #0x0 + bl FUN_0205AE80 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205ADDC + pop {r3-r5, pc} + + thumb_func_start FUN_02055BD4 +FUN_02055BD4: ; 0x02055BD4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02055BEC + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02055C4C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02055BEC +FUN_02055BEC: ; 0x02055BEC + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r4, #0x0 + bl FUN_020553A0 + bl FUN_02058720 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_0205733C + cmp r0, #0x1 + bne _02055C10 + mov r0, #0x5 + pop {r3-r7, pc} +_02055C10: + add r0, r5, #0x0 + bl FUN_020556E0 + cmp r0, #0x1 + bne _02055C1E + add r0, r4, #0x0 + pop {r3-r7, pc} +_02055C1E: + lsl r0, r7, #0x18 + ldr r5, _02055C44 ; =0x020F5D34 + lsr r6, r0, #0x18 +_02055C24: + ldr r1, [r5, #0x0] + add r0, r6, #0x0 + blx r1 + cmp r0, #0x1 + bne _02055C36 + ldr r0, _02055C48 ; =0x020F5D38 + lsl r1, r4, #0x3 + ldr r0, [r0, r1] + pop {r3-r7, pc} +_02055C36: + add r5, #0x8 + ldr r0, [r5, #0x0] + add r4, r4, #0x1 + cmp r0, #0x0 + bne _02055C24 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02055C44: .word 0x020F5D34 +_02055C48: .word 0x020F5D38 + + thumb_func_start FUN_02055C4C +FUN_02055C4C: ; 0x02055C4C + push {r3, lr} + add r3, r1, #0x0 + add r1, r2, #0x0 + ldr r2, _02055C68 ; =0x020F5D1C + lsl r3, r3, #0x2 + ldr r2, [r2, r3] + blx r2 + cmp r0, #0x1 + bne _02055C62 + mov r0, #0x1 + pop {r3, pc} +_02055C62: + mov r0, #0x0 + pop {r3, pc} + nop +_02055C68: .word 0x020F5D1C + + thumb_func_start FUN_02055C6C +FUN_02055C6C: ; 0x02055C6C + push {r3, lr} + bl FUN_02055FFC + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02055C78 +FUN_02055C78: ; 0x02055C78 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_020584D4 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056040 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02056B74 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02055D28 + add r0, r5, #0x0 + bl FUN_02055FFC + cmp r7, #0x1 + beq _02055CCA + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020556C8 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + mov r0, #0x0 + pop {r3-r7, pc} +_02055CCA: + add r0, r6, #0x0 + bl FUN_02059E74 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02056B74 + cmp r0, #0x0 + beq _02055CE4 + mov r0, #0x0 + pop {r3-r7, pc} +_02055CE4: + mov r1, #0x6 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058410 + add r0, r6, #0x0 + mov r1, #0x8 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020556C8 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x1 + pop {r3-r7, pc} +_02055D28: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_020560A0 + cmp r0, #0x0 + bne _02055D8E + add r0, r5, #0x0 + bl FUN_02055FFC + add r0, r6, #0x0 + bl FUN_02059E74 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02056B74 + cmp r0, #0x0 + beq _02055D54 + mov r0, #0x0 + pop {r3-r7, pc} +_02055D54: + mov r1, #0x6 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058410 + add r0, r6, #0x0 + mov r1, #0x8 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020556C8 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + b _02055DA0 +_02055D8E: + mov r1, #0x6 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058410 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020560D0 +_02055DA0: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_02055DAC +FUN_02055DAC: ; 0x02055DAC + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + bl FUN_020553A0 + add r6, r0, #0x0 + bl FUN_020584D4 + add r4, r0, #0x0 + ldr r0, _02055EF4 ; =0x00000654 + bl FUN_020054C8 + cmp r4, #0x0 + bne _02055E62 + add r0, r5, #0x0 + bl FUN_020553C4 + cmp r0, #0x1 + bne _02055DFE + add r0, r5, #0x0 + bl FUN_02055408 + cmp r0, #0x3 + blt _02055DFE + cmp r7, #0x0 + bne _02055DFE + add r0, r4, #0x0 + mov r1, #0x15 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x1 + pop {r3-r7, pc} +_02055DFE: + add r0, r4, #0x0 + bl FUN_02059E74 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02056B74 + cmp r0, #0x0 + beq _02055E18 + mov r0, #0x0 + pop {r3-r7, pc} +_02055E18: + mov r1, #0x6 + add r0, r6, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058410 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + bl FUN_02055410 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02055778 + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + mov r0, #0x1 + pop {r3-r7, pc} +_02055E62: + cmp r4, #0x1 + bne _02055EF0 + add r0, r5, #0x0 + bl FUN_02055790 + cmp r0, #0x0 + bne _02055EAC + add r0, r4, #0x0 + mov r1, #0x15 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + add r0, r5, #0x0 + bl FUN_020554BC + cmp r0, #0x1 + bne _02055E9C + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0205540C +_02055E9C: + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + mov r0, #0x1 + pop {r3-r7, pc} +_02055EAC: + mov r1, #0x6 + add r0, r6, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058410 + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02055778 + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + mov r0, #0x1 + pop {r3-r7, pc} +_02055EF0: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02055EF4: .word 0x00000654 + + thumb_func_start FUN_02055EF8 +FUN_02055EF8: ; 0x02055EF8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_020584D4 + add r0, r5, #0x0 + bl FUN_020554BC + cmp r0, #0x1 + bne _02055F22 + ldr r0, _02055F40 ; =0x00000656 + bl FUN_020054C8 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x5f + bl FUN_02056B5C + b _02055F2C +_02055F22: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x5d + bl FUN_02056B5C +_02055F2C: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020557D0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_02055F40: .word 0x00000656 + + thumb_func_start FUN_02055F44 +FUN_02055F44: ; 0x02055F44 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_020584D4 + add r0, r5, #0x0 + bl FUN_020554BC + cmp r0, #0x1 + bne _02055F6E + ldr r0, _02055F8C ; =0x00000656 + bl FUN_020054C8 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x5e + bl FUN_02056B5C + b _02055F78 +_02055F6E: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x5c + bl FUN_02056B5C +_02055F78: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020557D0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_02055F8C: .word 0x00000656 + + thumb_func_start FUN_02055F90 +FUN_02055F90: ; 0x02055F90 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_02056B74 + cmp r0, #0x0 + bne _02055FCE + mov r0, #0x1 + mov r1, #0x14 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0205540C + mov r0, #0x1 + pop {r3-r5, pc} +_02055FCE: + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + bl FUN_02055410 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020556F4 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02055FFC +FUN_02055FFC: ; 0x02055FFC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020556B4 + cmp r0, #0x1 + bne _0205603E + add r0, r4, #0x0 + bl FUN_020553A0 + mov r1, #0x6 + lsl r1, r1, #0x6 + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_020557E8 + cmp r0, #0x0 + bne _02056026 + add r0, r4, #0x0 + bl FUN_02055410 +_02056026: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205569C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020557D0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02055778 +_0205603E: + pop {r4, pc} + + thumb_func_start FUN_02056040 +FUN_02056040: ; 0x02056040 + push {r4-r6, lr} + sub sp, #0x18 + add r5, r1, #0x0 + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_02058738 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r1, sp, #0xc + bl FUN_02058B5C + add r4, sp, #0xc + add r3, sp, #0x0 + ldmia r4!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + add r1, r2, #0x0 + mov r2, #0x1 + str r0, [r3, #0x0] + add r0, r5, #0x0 + lsl r2, r2, #0xe + bl FUN_02059E28 + add r0, r6, #0x0 + add r1, sp, #0x0 + bl FUN_02059E9C + cmp r0, #0x0 + beq _02056088 + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x10] + cmp r0, r1 + bne _0205608E +_02056088: + add sp, #0x18 + mov r0, #0x0 + pop {r4-r6, pc} +_0205608E: + cmp r0, r1 + ble _02056098 + add sp, #0x18 + mov r0, #0x2 + pop {r4-r6, pc} +_02056098: + mov r0, #0x1 + add sp, #0x18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020560A0 +FUN_020560A0: ; 0x020560A0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02055408 + add r1, r0, #0x0 + cmp r4, #0x1 + bne _020560B8 + sub r1, r1, #0x1 + bpl _020560C4 + mov r0, #0x0 + pop {r3-r5, pc} +_020560B8: + cmp r4, #0x2 + bne _020560C4 + add r1, r1, #0x1 + cmp r1, #0x3 + ble _020560C4 + mov r1, #0x3 +_020560C4: + add r0, r5, #0x0 + bl FUN_0205540C + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020560D0 +FUN_020560D0: ; 0x020560D0 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_020553A0 + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r4, #0x10 + bl FUN_02055408 + cmp r0, #0x1 + beq _020560F2 + cmp r0, #0x2 + beq _020560F6 + cmp r0, #0x3 + beq _020560FA + b _020560FC +_020560F2: + mov r4, #0x50 + b _020560FC +_020560F6: + mov r4, #0x14 + b _020560FC +_020560FA: + mov r4, #0x14 +_020560FC: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02056B5C + pop {r3-r7, pc} + + thumb_func_start FUN_02056110 +FUN_02056110: ; 0x02056110 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r7, r1, #0x0 + str r2, [sp, #0x8] + add r5, r3, #0x0 + bl FUN_020553C4 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020553A0 + add r1, r0, #0x0 + cmp r4, #0x0 + beq _02056136 + cmp r4, #0x1 + beq _0205614C + cmp r4, #0x2 + bne _02056162 +_02056136: + str r5, [sp, #0x0] + add r0, sp, #0x10 + ldrh r0, [r0, #0x10] + ldr r3, [sp, #0x8] + add r2, r7, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + bl FUN_0205616C + add sp, #0xc + pop {r4-r7, pc} +_0205614C: + str r5, [sp, #0x0] + add r0, sp, #0x10 + ldrh r0, [r0, #0x10] + ldr r3, [sp, #0x8] + add r2, r7, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + bl FUN_020563A8 + add sp, #0xc + pop {r4-r7, pc} +_02056162: + bl ErrorHandling + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205616C +FUN_0205616C: ; 0x0205616C + push {r3-r6, lr} + sub sp, #0x4 + add r6, r3, #0x0 + add r4, r1, #0x0 + add r1, r6, #0x0 + add r5, r0, #0x0 + bl FUN_020561D0 + cmp r0, #0x0 + beq _0205618C + cmp r0, #0x1 + beq _020561A2 + cmp r0, #0x2 + beq _020561B8 + add sp, #0x4 + pop {r3-r6, pc} +_0205618C: + add r3, sp, #0x8 + ldrh r0, [r3, #0x14] + add r1, r4, #0x0 + add r2, r6, #0x0 + str r0, [sp, #0x0] + ldrh r3, [r3, #0x10] + add r0, r5, #0x0 + bl FUN_02056288 + add sp, #0x4 + pop {r3-r6, pc} +_020561A2: + add r3, sp, #0x8 + ldrh r0, [r3, #0x14] + add r1, r4, #0x0 + add r2, r6, #0x0 + str r0, [sp, #0x0] + ldrh r3, [r3, #0x10] + add r0, r5, #0x0 + bl FUN_020562A8 + add sp, #0x4 + pop {r3-r6, pc} +_020561B8: + add r3, sp, #0x8 + ldrh r0, [r3, #0x14] + add r1, r4, #0x0 + add r2, r6, #0x0 + str r0, [sp, #0x0] + ldrh r3, [r3, #0x10] + add r0, r5, #0x0 + bl FUN_02056384 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_020561D0 +FUN_020561D0: ; 0x020561D0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02056244 + add r4, r0, #0x0 + bl FUN_020561EC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205536C + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020561EC +FUN_020561EC: ; 0x020561EC + push {r3, lr} + cmp r0, #0x0 + beq _020561FC + cmp r0, #0x1 + beq _02056200 + cmp r0, #0x2 + beq _02056204 + b _02056208 +_020561FC: + mov r0, #0x0 + pop {r3, pc} +_02056200: + mov r0, #0x1 + pop {r3, pc} +_02056204: + mov r0, #0x2 + pop {r3, pc} +_02056208: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02056210 +FUN_02056210: ; 0x02056210 + push {r3-r5, lr} + add r5, r1, #0x0 + add r0, r5, #0x0 + add r4, r2, #0x0 + bl FUN_020549F0 + cmp r0, #0x1 + bne _02056224 + mov r0, #0x4 + pop {r3-r5, pc} +_02056224: + add r0, r5, #0x0 + bl FUN_020549E4 + cmp r0, #0x1 + bne _02056232 + mov r0, #0x8 + pop {r3-r5, pc} +_02056232: + add r0, r5, #0x0 + bl FUN_020549D8 + cmp r0, #0x1 + bne _0205623E + mov r4, #0xc +_0205623E: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02056244 +FUN_02056244: ; 0x02056244 + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x0 + mvn r1, r1 + add r5, r0, #0x0 + cmp r4, r1 + bne _0205625C + mov r1, #0x0 + bl FUN_0205536C + mov r0, #0x0 + pop {r3-r5, pc} +_0205625C: + bl FUN_020552F8 + cmp r0, r4 + beq _0205627A + add r0, r5, #0x0 + bl FUN_02055370 + cmp r0, #0x1 + beq _0205627A + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0205536C + mov r0, #0x2 + pop {r3-r5, pc} +_0205627A: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02056288 +FUN_02056288: ; 0x02056288 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020584C4 + mov r1, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020562A8 +FUN_020562A8: ; 0x020562A8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + str r2, [sp, #0x0] + bl FUN_02056B74 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020553C4 + cmp r0, #0x2 + beq _0205632A + mov r0, #0x4 + tst r0, r4 + beq _020562CA + mov r7, #0x38 + b _0205636C +_020562CA: + cmp r4, #0x0 + beq _020562E6 + mov r0, #0x8 + mov r7, #0x1c + tst r0, r4 + bne _020562DC + ldr r0, _02056380 ; =0x00000601 + bl FUN_020054C8 +_020562DC: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_020584CC + b _0205636C +_020562E6: + add r0, r5, #0x0 + mov r4, #0xc + bl FUN_0205545C + bl FUN_02055474 + cmp r0, #0x1 + bne _02056306 + add r1, sp, #0x8 + ldrh r1, [r1, #0x10] + add r0, r5, #0x0 + bl FUN_02057114 + cmp r0, #0x1 + bne _02056306 + mov r4, #0x58 +_02056306: + add r0, r6, #0x0 + bl FUN_02058720 + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + add r2, r4, #0x0 + bl FUN_02056210 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 + b _0205636C +_0205632A: + cmp r4, #0x0 + beq _02056332 + cmp r4, #0x20 + bne _02056356 +_02056332: + add r0, r6, #0x0 + bl FUN_02058720 + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + mov r2, #0xc + bl FUN_02056210 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 + b _0205636C +_02056356: + mov r0, #0x8 + mov r7, #0x1c + tst r0, r4 + bne _02056364 + ldr r0, _02056380 ; =0x00000601 + bl FUN_020054C8 +_02056364: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_020584CC +_0205636C: + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + pop {r3-r7, pc} + .balign 4 +_02056380: .word 0x00000601 + + thumb_func_start FUN_02056384 +FUN_02056384: ; 0x02056384 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, r6, #0x0 + mov r1, #0x28 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + pop {r4-r6, pc} + + thumb_func_start FUN_020563A8 +FUN_020563A8: ; 0x020563A8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_020554BC + cmp r0, #0x1 + add r0, sp, #0x10 + bne _020563D6 + ldrh r1, [r0, #0x10] + add r2, r6, #0x0 + add r3, r7, #0x0 + str r1, [sp, #0x0] + ldrh r0, [r0, #0x14] + add r1, r4, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_020567E4 + add sp, #0x8 + pop {r3-r7, pc} +_020563D6: + ldrh r1, [r0, #0x10] + add r2, r6, #0x0 + add r3, r7, #0x0 + str r1, [sp, #0x0] + ldrh r0, [r0, #0x14] + add r1, r4, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_020564C8 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020563F0 +FUN_020563F0: ; 0x020563F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020553C4 + cmp r0, #0x1 + bne _0205642C + mov r0, #0x2 + tst r0, r4 + beq _0205642C + add r0, r5, #0x0 + mov r4, #0x1 + bl FUN_020554BC + cmp r0, #0x1 + bne _02056412 + mov r4, #0x0 +_02056412: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020554AC + cmp r4, #0x0 + bne _02056426 + ldr r0, _02056430 ; =0x0000061C + bl FUN_020054C8 + pop {r3-r5, pc} +_02056426: + ldr r0, _02056434 ; =0x00000619 + bl FUN_020054C8 +_0205642C: + pop {r3-r5, pc} + nop +_02056430: .word 0x0000061C +_02056434: .word 0x00000619 + + thumb_func_start FUN_02056438 +FUN_02056438: ; 0x02056438 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r4, #0x4c + bl FUN_02055408 + cmp r0, #0x1 + beq _02056450 + cmp r0, #0x2 + beq _02056454 + cmp r0, #0x3 + beq _02056458 + b _0205645A +_02056450: + mov r4, #0x10 + b _0205645A +_02056454: + mov r4, #0x50 + b _0205645A +_02056458: + mov r4, #0x14 +_0205645A: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205AFDC + pop {r3-r5, pc} + + thumb_func_start FUN_02056464 +FUN_02056464: ; 0x02056464 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x1 + mov r2, #0x3 + bl FUN_0205541C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205570C + cmp r0, #0x0 + bne _02056488 + cmp r4, #0x2 + blt _02056488 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020556F4 +_02056488: + cmp r4, #0x3 + bne _02056490 + mov r0, #0x1 + pop {r3-r5, pc} +_02056490: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02056494 +FUN_02056494: ; 0x02056494 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r6, #0x1 + bl FUN_02055408 + sub r4, r0, #0x1 + bpl _020564A6 + mov r4, #0x0 + add r6, r4, #0x0 +_020564A6: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205540C + add r0, r5, #0x0 + bl FUN_0205570C + cmp r0, #0x1 + bne _020564C4 + cmp r4, #0x0 + bne _020564C4 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020556F4 +_020564C4: + add r0, r6, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020564C8 +FUN_020564C8: ; 0x020564C8 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r1, #0x0 + add r1, r3, #0x0 + add r6, r0, #0x0 + str r3, [sp, #0x4] + ldr r5, [sp, #0x20] + ldr r4, [sp, #0x24] + bl FUN_0205653C + cmp r0, #0x3 + bhi _02056538 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020564EC: ; jump table (using 16-bit offset) + .short _020564F4 - _020564EC - 2; case 0 + .short _02056506 - _020564EC - 2; case 1 + .short _02056518 - _020564EC - 2; case 2 + .short _0205652A - _020564EC - 2; case 3 +_020564F4: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_020565F0 + add sp, #0x8 + pop {r3-r7, pc} +_02056506: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056614 + add sp, #0x8 + pop {r3-r7, pc} +_02056518: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056704 + add sp, #0x8 + pop {r3-r7, pc} +_0205652A: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056740 +_02056538: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0205653C +FUN_0205653C: ; 0x0205653C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0205658C + add r4, r0, #0x0 + bl FUN_02056558 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205536C + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02056558 +FUN_02056558: ; 0x02056558 + push {r3, lr} + cmp r0, #0x3 + bhi _02056582 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205656A: ; jump table (using 16-bit offset) + .short _02056572 - _0205656A - 2; case 0 + .short _02056576 - _0205656A - 2; case 1 + .short _0205657A - _0205656A - 2; case 2 + .short _0205657E - _0205656A - 2; case 3 +_02056572: + mov r0, #0x0 + pop {r3, pc} +_02056576: + mov r0, #0x1 + pop {r3, pc} +_0205657A: + mov r0, #0x2 + pop {r3, pc} +_0205657E: + mov r0, #0x1 + pop {r3, pc} +_02056582: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205658C +FUN_0205658C: ; 0x0205658C + push {r4-r6, lr} + add r4, r1, #0x0 + mov r1, #0x0 + mvn r1, r1 + add r5, r0, #0x0 + cmp r4, r1 + bne _020565BA + bl FUN_0205570C + cmp r0, #0x1 + bne _020565AE + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x3 + pop {r4-r6, pc} +_020565AE: + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + mov r0, #0x0 + pop {r4-r6, pc} +_020565BA: + bl FUN_020552F8 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020556F4 + cmp r6, r4 + beq _020565E2 + add r0, r5, #0x0 + bl FUN_02055370 + cmp r0, #0x1 + beq _020565E2 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0205536C + mov r0, #0x2 + pop {r4-r6, pc} +_020565E2: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020565F0 +FUN_020565F0: ; 0x020565F0 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020584C4 + mov r1, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + bl FUN_02055410 + pop {r3-r5, pc} + + thumb_func_start FUN_02056614 +FUN_02056614: ; 0x02056614 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + str r2, [sp, #0x0] + bl FUN_02056B74 + add r4, r0, #0x0 + mov r0, #0x4 + tst r0, r4 + beq _02056638 + add r0, r5, #0x0 + mov r7, #0x38 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 + b _020566EA +_02056638: + mov r0, #0x10 + tst r0, r4 + beq _02056656 + add r0, r5, #0x0 + mov r7, #0x50 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + b _020566EA +_02056656: + mov r0, #0x40 + tst r0, r4 + beq _02056680 + add r0, r6, #0x0 + mov r7, #0x0 + bl FUN_020584D4 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + sub r1, r7, #0x1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + b _020566EA +_02056680: + cmp r4, #0x0 + beq _020566D4 + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020572EC + cmp r0, #0x0 + bne _020566B0 + mov r0, #0x8 + mov r7, #0x1c + tst r0, r4 + bne _020566A0 + ldr r0, _02056700 ; =0x00000601 + bl FUN_020054C8 +_020566A0: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + b _020566EA +_020566B0: + add r0, r6, #0x0 + mov r7, #0x0 + bl FUN_020584D4 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + sub r1, r7, #0x1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + b _020566EA +_020566D4: + add r0, r5, #0x0 + mov r7, #0x50 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0205540C +_020566EA: + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + pop {r3-r7, pc} + nop +_02056700: .word 0x00000601 + + thumb_func_start FUN_02056704 +FUN_02056704: ; 0x02056704 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02055410 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020572EC + cmp r0, #0x1 + beq _0205673E + add r0, r6, #0x0 + mov r1, #0x28 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 +_0205673E: + pop {r4-r6, pc} + + thumb_func_start FUN_02056740 +FUN_02056740: ; 0x02056740 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r7, r1, #0x0 + bl FUN_02056494 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02055314 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02056B74 + add r4, r0, #0x0 + mov r0, #0x4 + tst r0, r4 + beq _02056774 + add r0, r6, #0x0 + mov r1, #0x38 + bl FUN_0205AFDC + str r0, [sp, #0x4] + b _020567C4 +_02056774: + mov r0, #0x40 + tst r0, r4 + beq _0205678C + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0205AFDC + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02055410 + b _020567C4 +_0205678C: + cmp r4, #0x0 + beq _020567BA + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r6, #0x0 + mov r1, #0x1c + bl FUN_0205AFDC + str r0, [sp, #0x4] + mov r0, #0x8 + tst r0, r4 + bne _020567AA + ldr r0, _020567E0 ; =0x00000601 + bl FUN_020054C8 +_020567AA: + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + b _020567C4 +_020567BA: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056438 + str r0, [sp, #0x4] +_020567C4: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _020567D2 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020556F4 +_020567D2: + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02056B5C + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020567E0: .word 0x00000601 + + thumb_func_start FUN_020567E4 +FUN_020567E4: ; 0x020567E4 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r1, #0x0 + add r1, r3, #0x0 + add r6, r0, #0x0 + str r3, [sp, #0x4] + ldr r5, [sp, #0x20] + ldr r4, [sp, #0x24] + bl FUN_02056858 + cmp r0, #0x3 + bhi _02056854 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02056808: ; jump table (using 16-bit offset) + .short _02056810 - _02056808 - 2; case 0 + .short _02056822 - _02056808 - 2; case 1 + .short _02056834 - _02056808 - 2; case 2 + .short _02056846 - _02056808 - 2; case 3 +_02056810: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056914 + add sp, #0x8 + pop {r3-r7, pc} +_02056822: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056938 + add sp, #0x8 + pop {r3-r7, pc} +_02056834: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056A7C + add sp, #0x8 + pop {r3-r7, pc} +_02056846: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r3, r5, #0x0 + str r4, [sp, #0x0] + bl FUN_02056AB8 +_02056854: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02056858 +FUN_02056858: ; 0x02056858 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020568A8 + add r4, r0, #0x0 + bl FUN_02056874 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205536C + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02056874 +FUN_02056874: ; 0x02056874 + push {r3, lr} + cmp r0, #0x3 + bhi _0205689E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02056886: ; jump table (using 16-bit offset) + .short _0205688E - _02056886 - 2; case 0 + .short _02056892 - _02056886 - 2; case 1 + .short _02056896 - _02056886 - 2; case 2 + .short _0205689A - _02056886 - 2; case 3 +_0205688E: + mov r0, #0x0 + pop {r3, pc} +_02056892: + mov r0, #0x1 + pop {r3, pc} +_02056896: + mov r0, #0x2 + pop {r3, pc} +_0205689A: + mov r0, #0x1 + pop {r3, pc} +_0205689E: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020568A8 +FUN_020568A8: ; 0x020568A8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02055408 + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _020568D8 + cmp r6, #0x2 + bge _020568CC + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205536C + mov r0, #0x0 + pop {r4-r6, pc} +_020568CC: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x3 + pop {r4-r6, pc} +_020568D8: + add r0, r5, #0x0 + bl FUN_020552F8 + cmp r0, r4 + beq _02056908 + add r0, r5, #0x0 + bl FUN_02055370 + cmp r0, #0x1 + beq _02056908 + cmp r6, #0x2 + bge _020568FC + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0205536C + mov r0, #0x2 + pop {r4-r6, pc} +_020568FC: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x3 + pop {r4-r6, pc} +_02056908: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205536C + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_02056914 +FUN_02056914: ; 0x02056914 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020584C4 + mov r1, #0x0 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r5, #0x0 + bl FUN_02055410 + pop {r3-r5, pc} + + thumb_func_start FUN_02056938 +FUN_02056938: ; 0x02056938 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02056B74 + add r4, r0, #0x0 + mov r0, #0x4 + tst r0, r4 + beq _0205696A + add r0, r7, #0x0 + mov r1, #0x38 + bl FUN_0205AFDC + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02056464 + add r0, r5, #0x0 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 + b _02056A6C +_0205696A: + mov r0, #0x10 + tst r0, r4 + beq _020569BA + add r0, r5, #0x0 + bl FUN_02055408 + cmp r0, #0x3 + blt _02056994 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02056438 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_020557A4 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205569C + b _02056A6C +_02056994: + add r0, r7, #0x0 + mov r1, #0x1c + bl FUN_0205AFDC + str r0, [sp, #0x0] + mov r0, #0x8 + tst r0, r4 + bne _020569AA + ldr r0, _02056A78 ; =0x00000601 + bl FUN_020054C8 +_020569AA: + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + b _02056A6C +_020569BA: + mov r0, #0x40 + tst r0, r4 + beq _020569EC + add r0, r6, #0x0 + bl FUN_020584D4 + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0205AFDC + str r0, [sp, #0x0] + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + b _02056A6C +_020569EC: + cmp r4, #0x0 + beq _02056A50 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020572EC + cmp r0, #0x0 + bne _02056A24 + add r0, r7, #0x0 + mov r1, #0x1c + bl FUN_0205AFDC + str r0, [sp, #0x0] + mov r0, #0x8 + tst r0, r4 + bne _02056A14 + ldr r0, _02056A78 ; =0x00000601 + bl FUN_020054C8 +_02056A14: + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + b _02056A6C +_02056A24: + add r0, r6, #0x0 + bl FUN_020584D4 + add r4, r0, #0x0 + mov r1, #0x0 + bl FUN_0205AFDC + str r0, [sp, #0x0] + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + mov r1, #0x0 + mvn r1, r1 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0205543C + b _02056A6C +_02056A50: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02056438 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02056464 + add r0, r5, #0x0 + bl FUN_020572D4 + add r0, r5, #0x0 + bl FUN_020557A4 +_02056A6C: + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056B5C + pop {r3-r7, pc} + .balign 4 +_02056A78: .word 0x00000601 + + thumb_func_start FUN_02056A7C +FUN_02056A7C: ; 0x02056A7C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02055410 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020572EC + cmp r0, #0x1 + beq _02056AB6 + add r0, r6, #0x0 + mov r1, #0x28 + bl FUN_0205AFDC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056B5C + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 +_02056AB6: + pop {r4-r6, pc} + + thumb_func_start FUN_02056AB8 +FUN_02056AB8: ; 0x02056AB8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r7, r1, #0x0 + bl FUN_02056494 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02055314 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02056B74 + add r4, r0, #0x0 + mov r0, #0x4 + tst r0, r4 + beq _02056AEC + add r0, r6, #0x0 + mov r1, #0x38 + bl FUN_0205AFDC + str r0, [sp, #0x4] + b _02056B3C +_02056AEC: + mov r0, #0x40 + tst r0, r4 + beq _02056B04 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0205AFDC + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02055410 + b _02056B3C +_02056B04: + cmp r4, #0x0 + beq _02056B32 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r6, #0x0 + mov r1, #0x1c + bl FUN_0205AFDC + str r0, [sp, #0x4] + mov r0, #0x8 + tst r0, r4 + bne _02056B22 + ldr r0, _02056B58 ; =0x00000601 + bl FUN_020054C8 +_02056B22: + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_02055410 + b _02056B3C +_02056B32: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02056438 + str r0, [sp, #0x4] +_02056B3C: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _02056B4A + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020556F4 +_02056B4A: + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02056B5C + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02056B58: .word 0x00000601 + + thumb_func_start FUN_02056B5C +FUN_02056B5C: ; 0x02056B5C + push {r3-r5, lr} + add r4, r2, #0x0 + add r5, r1, #0x0 + add r1, r4, #0x0 + bl FUN_02055460 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205ADDC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02056B74 +FUN_02056B74: ; 0x02056B74 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + mov r4, #0x0 + bl FUN_02056C0C + mov r1, #0xa + str r0, [sp, #0x0] + tst r0, r1 + beq _02056BA0 + mov r0, #0x1 + orr r4, r0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02056D58 + cmp r0, #0x0 + beq _02056BA0 + mov r0, #0x8 + orr r4, r0 +_02056BA0: + ldr r0, [sp, #0x0] + mov r1, #0x4 + tst r0, r1 + beq _02056BAC + mov r0, #0x2 + orr r4, r0 +_02056BAC: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02056CCC + cmp r0, #0x0 + beq _02056BBE + mov r0, #0x4 + orr r4, r0 +_02056BBE: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02056E04 + cmp r0, #0x1 + bne _02056BD0 + mov r0, #0x10 + orr r4, r0 +_02056BD0: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02056E6C + cmp r0, #0x1 + bne _02056BE2 + mov r0, #0x20 + orr r4, r0 +_02056BE2: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02056EC8 + cmp r0, #0x1 + bne _02056BF4 + mov r0, #0x41 + orr r4, r0 +_02056BF4: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02056F78 + cmp r0, #0x1 + bne _02056C06 + mov r0, #0x1 + orr r4, r0 +_02056C06: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02056C0C +FUN_02056C0C: ; 0x02056C0C + push {r3-r7, lr} + sub sp, #0x28 + add r5, r1, #0x0 + str r2, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B2C + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02059BF4 + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_02058B3C + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_02058B4C + str r0, [sp, #0xc] + ldr r0, [sp, #0x4] + bl FUN_02059C00 + str r0, [sp, #0x10] + add r0, r5, #0x0 + add r1, sp, #0x1c + bl FUN_02058B5C + ldr r1, [sp, #0x14] + ldr r6, [sp, #0xc] + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + add r1, r7, r1 + add r3, r6, r3 + mov r4, #0x0 + bl FUN_02059A08 + cmp r0, #0x1 + bne _02056C60 + mov r0, #0x1 + orr r4, r0 +_02056C60: + add r0, r5, #0x0 + bl FUN_02058738 + ldr r2, [sp, #0x14] + add r1, sp, #0x18 + str r1, [sp, #0x0] + ldr r6, [sp, #0xc] + ldr r3, [sp, #0x10] + add r1, sp, #0x1c + add r2, r7, r2 + add r3, r6, r3 + bl FUN_0204A7C8 + cmp r0, #0x1 + bne _02056C90 + mov r0, #0x2 + orr r4, r0 + add r1, sp, #0x18 + mov r0, #0x0 + ldrsb r0, [r1, r0] + cmp r0, #0x0 + beq _02056C90 + mov r0, #0x8 + orr r4, r0 +_02056C90: + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r3, r2 + ldr r3, [sp, #0x4] + add r0, r5, #0x0 + add r1, r7, r1 + bl FUN_02059A60 + cmp r0, #0x1 + bne _02056CAA + mov r0, #0x2 + orr r4, r0 +_02056CAA: + add r0, r5, #0x0 + ldr r1, [sp, #0x14] + ldr r5, [sp, #0xc] + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x8] + add r1, r7, r1 + add r3, r5, r3 + bl FUN_0205995C + cmp r0, #0x1 + bne _02056CC4 + mov r0, #0x4 + orr r4, r0 +_02056CC4: + add r0, r4, #0x0 + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02056CCC +FUN_02056CCC: ; 0x02056CCC + push {r3-r7, lr} + mov r0, #0x0 + add r4, r2, #0x0 + mvn r0, r0 + add r5, r1, #0x0 + cmp r4, r0 + beq _02056D54 + add r0, r5, #0x0 + bl FUN_02058738 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059C00 + add r2, r0, #0x0 + ldr r0, [sp, #0x0] + add r1, r6, r7 + add r2, r5, r2 + bl FUN_0204A6E0 + cmp r4, #0x3 + bhi _02056D54 + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02056D1C: ; jump table (using 16-bit offset) + .short _02056D24 - _02056D1C - 2; case 0 + .short _02056D30 - _02056D1C - 2; case 1 + .short _02056D3C - _02056D1C - 2; case 2 + .short _02056D48 - _02056D1C - 2; case 3 +_02056D24: + bl FUN_02054848 + cmp r0, #0x1 + bne _02056D54 + mov r0, #0x1 + pop {r3-r7, pc} +_02056D30: + bl FUN_02054854 + cmp r0, #0x1 + bne _02056D54 + mov r0, #0x1 + pop {r3-r7, pc} +_02056D3C: + bl FUN_02054860 + cmp r0, #0x1 + bne _02056D54 + mov r0, #0x1 + pop {r3-r7, pc} +_02056D48: + bl FUN_0205486C + cmp r0, #0x1 + bne _02056D54 + mov r0, #0x1 + pop {r3-r7, pc} +_02056D54: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02056D58 +FUN_02056D58: ; 0x02056D58 + push {r3-r7, lr} + mov r0, #0x0 + add r4, r2, #0x0 + mvn r0, r0 + add r5, r1, #0x0 + cmp r4, r0 + beq _02056E00 + add r0, r5, #0x0 + bl FUN_02058738 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + str r0, [sp, #0x0] + ldr r2, [sp, #0x0] + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_0204A6E0 + add r5, r0, #0x0 + cmp r4, #0x3 + bhi _02056DD8 + add r1, r4, r4 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02056D9A: ; jump table (using 16-bit offset) + .short _02056DA2 - _02056D9A - 2; case 0 + .short _02056DAE - _02056D9A - 2; case 1 + .short _02056DBC - _02056D9A - 2; case 2 + .short _02056DCA - _02056D9A - 2; case 3 +_02056DA2: + bl FUN_020547D4 + cmp r0, #0x1 + bne _02056DAE + mov r0, #0x1 + pop {r3-r7, pc} +_02056DAE: + add r0, r5, #0x0 + bl FUN_020547E0 + cmp r0, #0x1 + bne _02056DBC + mov r0, #0x1 + pop {r3-r7, pc} +_02056DBC: + add r0, r5, #0x0 + bl FUN_020547C8 + cmp r0, #0x1 + bne _02056DCA + mov r0, #0x1 + pop {r3-r7, pc} +_02056DCA: + add r0, r5, #0x0 + bl FUN_020547BC + cmp r0, #0x1 + bne _02056DD8 + mov r0, #0x1 + pop {r3-r7, pc} +_02056DD8: + add r0, r4, #0x0 + bl FUN_02059BF4 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059C00 + add r3, r0, #0x0 + ldr r2, [sp, #0x0] + add r0, r7, #0x0 + add r1, r6, r5 + add r2, r2, r3 + bl FUN_0204A6E0 + bl FUN_020547B0 + cmp r0, #0x1 + bne _02056E00 + mov r0, #0x1 + pop {r3-r7, pc} +_02056E00: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02056E04 +FUN_02056E04: ; 0x02056E04 + push {r3-r7, lr} + mov r0, #0x0 + add r5, r2, #0x0 + mvn r0, r0 + add r4, r1, #0x0 + cmp r5, r0 + beq _02056E68 + add r0, r4, #0x0 + bl FUN_02058738 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B4C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02059C00 + add r2, r0, #0x0 + ldr r0, [sp, #0x0] + add r1, r6, r7 + add r2, r4, r2 + bl FUN_0204A6E0 + add r4, r0, #0x0 + cmp r5, #0x3 + bne _02056E56 + bl FUN_02054A24 + cmp r0, #0x0 + beq _02056E56 + mov r0, #0x1 + pop {r3-r7, pc} +_02056E56: + cmp r5, #0x2 + bne _02056E68 + add r0, r4, #0x0 + bl FUN_02054A30 + cmp r0, #0x0 + beq _02056E68 + mov r0, #0x1 + pop {r3-r7, pc} +_02056E68: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02056E6C +FUN_02056E6C: ; 0x02056E6C + push {r3-r7, lr} + sub sp, #0x8 + mov r0, #0x0 + add r4, r2, #0x0 + mvn r0, r0 + add r5, r1, #0x0 + cmp r4, r0 + beq _02056EC2 + add r0, r5, #0x0 + bl FUN_02058738 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02059C00 + add r3, r0, #0x0 + ldr r2, [sp, #0x4] + ldr r0, [sp, #0x0] + add r1, r6, r7 + add r2, r2, r3 + bl FUN_0204A6E0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02059AC4 + cmp r0, #0x0 + beq _02056EC2 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02056EC2: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02056EC8 +FUN_02056EC8: ; 0x02056EC8 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + mov r0, #0x0 + add r4, r2, #0x0 + mvn r0, r0 + add r5, r1, #0x0 + cmp r4, r0 + beq _02056F72 + add r0, r5, #0x0 + bl FUN_02058738 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_02059C00 + add r2, r0, #0x0 + ldr r3, [sp, #0x8] + ldr r0, [sp, #0x4] + add r1, r6, r7 + add r2, r3, r2 + bl FUN_0204A6E0 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_020553C4 + cmp r0, #0x1 + bne _02056F54 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059BB4 + cmp r0, #0x1 + bne _02056F36 + cmp r4, #0x1 + bls _02056F30 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02056F30: + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02056F36: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059BD4 + cmp r0, #0x1 + bne _02056F72 + sub r0, r4, #0x2 + cmp r0, #0x1 + bls _02056F4E + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02056F4E: + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02056F54: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059BB4 + cmp r0, #0x1 + beq _02056F6C + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059BD4 + cmp r0, #0x1 + bne _02056F72 +_02056F6C: + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02056F72: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02056F78 +FUN_02056F78: ; 0x02056F78 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + mov r1, #0x0 + add r4, r2, #0x0 + mvn r1, r1 + cmp r4, r1 + beq _0205701A + bl FUN_020553C4 + cmp r0, #0x1 + bne _0205701A + add r0, r5, #0x0 + bl FUN_02058738 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02059C00 + add r3, r0, #0x0 + ldr r2, [sp, #0x4] + ldr r0, [sp, #0x0] + add r1, r6, r7 + add r2, r2, r3 + bl FUN_0204A6E0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059AC4 + cmp r0, #0x0 + beq _02056FD8 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02056FD8: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059B2C + cmp r0, #0x0 + beq _02056FEA + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02056FEA: + add r0, r4, #0x0 + bl FUN_02054798 + cmp r0, #0x0 + beq _02056FFA + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02056FFA: + add r0, r4, #0x0 + bl FUN_02054974 + cmp r0, #0x0 + beq _0205700A + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0205700A: + add r0, r4, #0x0 + bl FUN_02054990 + cmp r0, #0x0 + beq _0205701A + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0205701A: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02057020 +FUN_02057020: ; 0x02057020 + ldr r3, _02057024 ; =FUN_02057060 + bx r3 + .balign 4 +_02057024: .word FUN_02057060 + + thumb_func_start FUN_02057028 +FUN_02057028: ; 0x02057028 + mov r1, #0x20 + tst r1, r0 + beq _02057032 + mov r0, #0x2 + bx lr +_02057032: + mov r1, #0x10 + tst r0, r1 + beq _0205703C + mov r1, #0x3 + b _0205703E +_0205703C: + sub r1, #0x11 +_0205703E: + add r0, r1, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02057044 +FUN_02057044: ; 0x02057044 + mov r1, #0x40 + tst r1, r0 + beq _0205704E + mov r0, #0x0 + bx lr +_0205704E: + mov r1, #0x80 + tst r0, r1 + beq _02057058 + mov r1, #0x1 + b _0205705A +_02057058: + sub r1, #0x81 +_0205705A: + add r0, r1, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02057060 +FUN_02057060: ; 0x02057060 + push {r3-r7, lr} + add r5, r2, #0x0 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02057028 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02057044 + mov r1, #0x0 + mvn r1, r1 + add r5, r0, #0x0 + cmp r4, r1 + beq _020570C0 + cmp r5, r1 + bne _02057086 + add r0, r4, #0x0 + pop {r3-r7, pc} +_02057086: + add r0, r6, #0x0 + bl FUN_02055314 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02055430 + str r0, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_02055438 + mov r1, #0x0 + mvn r1, r1 + cmp r7, r1 + beq _020570BE + ldr r1, [sp, #0x0] + cmp r4, r1 + bne _020570B2 + cmp r5, r0 + bne _020570B2 + add r0, r7, #0x0 + pop {r3-r7, pc} +_020570B2: + cmp r5, r0 + beq _020570BA + add r0, r5, #0x0 + pop {r3-r7, pc} +_020570BA: + add r0, r4, #0x0 + pop {r3-r7, pc} +_020570BE: + add r0, r5, #0x0 +_020570C0: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020570C4 +FUN_020570C4: ; 0x020570C4 + push {r4, lr} + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _020570D8 + mov r0, #0x1 + pop {r4, pc} +_020570D8: + add r0, r4, #0x0 + bl FUN_020586F0 + bl FUN_020570F0 + cmp r0, #0x1 + bne _020570EA + mov r0, #0x1 + pop {r4, pc} +_020570EA: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020570F0 +FUN_020570F0: ; 0x020570F0 + sub r0, #0x1c + cmp r0, #0x3 + bhi _0205710E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02057102: ; jump table (using 16-bit offset) + .short _0205710A - _02057102 - 2; case 0 + .short _0205710A - _02057102 - 2; case 1 + .short _0205710A - _02057102 - 2; case 2 + .short _0205710A - _02057102 - 2; case 3 +_0205710A: + mov r0, #0x1 + bx lr +_0205710E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02057114 +FUN_02057114: ; 0x02057114 + mov r0, #0x2 + tst r0, r1 + beq _0205711E + mov r0, #0x1 + bx lr +_0205711E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02057124 +FUN_02057124: ; 0x02057124 + push {r3, lr} + bl FUN_02055464 + sub r0, #0x58 + cmp r0, #0x3 + bhi _02057148 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205713C: ; jump table (using 16-bit offset) + .short _02057144 - _0205713C - 2; case 0 + .short _02057144 - _0205713C - 2; case 1 + .short _02057144 - _0205713C - 2; case 2 + .short _02057144 - _0205713C - 2; case 3 +_02057144: + mov r0, #0x1 + pop {r3, pc} +_02057148: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205714C +FUN_0205714C: ; 0x0205714C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020553C4 + cmp r0, #0x0 + beq _02057162 + cmp r0, #0x1 + beq _02057172 + cmp r0, #0x2 + bne _02057188 +_02057162: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02056244 + bl FUN_020561EC + add r4, r0, #0x0 + b _0205718E +_02057172: + add r0, r5, #0x0 + bl FUN_020554BC + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020568A8 + bl FUN_02056874 + add r4, r0, #0x0 + b _0205718E +_02057188: + mov r4, #0x0 + bl ErrorHandling +_0205718E: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02057194 +FUN_02057194: ; 0x02057194 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02057060 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0205714C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205536C + cmp r4, #0x0 + bne _020571C6 + add r0, r5, #0x0 + bl FUN_020552F8 + mov r1, #0x0 + bl FUN_0205AFDC + pop {r3-r7, pc} +_020571C6: + cmp r4, #0x2 + bne _020571D4 + ldr r0, [sp, #0x0] + mov r1, #0x28 + bl FUN_0205AFDC + pop {r3-r7, pc} +_020571D4: + add r0, r5, #0x0 + bl FUN_020553A0 + ldr r0, [sp, #0x1c] + mov r4, #0x4 + add r1, r0, #0x0 + tst r1, r4 + beq _020571E8 + mov r4, #0x38 + b _02057244 +_020571E8: + cmp r0, #0x0 + beq _020571FC + mov r1, #0x8 + mov r4, #0x1c + tst r0, r1 + bne _02057244 + ldr r0, _02057250 ; =0x00000601 + bl FUN_020054C8 + b _02057244 +_020571FC: + cmp r6, #0x5 + bhi _0205722E + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205720C: ; jump table (using 16-bit offset) + .short _02057218 - _0205720C - 2; case 0 + .short _0205721A - _0205720C - 2; case 1 + .short _0205721E - _0205720C - 2; case 2 + .short _02057222 - _0205720C - 2; case 3 + .short _02057226 - _0205720C - 2; case 4 + .short _0205722A - _0205720C - 2; case 5 +_02057218: + b _02057230 +_0205721A: + mov r4, #0x8 + b _02057230 +_0205721E: + mov r4, #0xc + b _02057230 +_02057222: + mov r4, #0x4c + b _02057230 +_02057226: + mov r4, #0x10 + b _02057230 +_0205722A: + mov r4, #0x14 + b _02057230 +_0205722E: + mov r4, #0x4 +_02057230: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _02057244 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02057114 + cmp r0, #0x1 + bne _02057244 + mov r4, #0x58 +_02057244: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_0205AFDC + pop {r3-r7, pc} + nop +_02057250: .word 0x00000601 + + thumb_func_start FUN_02057254 +FUN_02057254: ; 0x02057254 + push {r3, lr} + bl FUN_020553A0 + bl FUN_0205AD98 + pop {r3, pc} + + thumb_func_start FUN_02057260 +FUN_02057260: ; 0x02057260 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020553A0 + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02056B5C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02057278 +FUN_02057278: ; 0x02057278 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + bl FUN_02059C90 + pop {r4, pc} + + thumb_func_start FUN_02057288 +FUN_02057288: ; 0x02057288 + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + add r4, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02055320 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02059BF4 + add r0, r6, r0 + str r0, [r4, #0x0] + ldr r0, [sp, #0x0] + bl FUN_0205532C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02059C00 + add r0, r4, r0 + str r0, [r7, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020572B8 +FUN_020572B8: ; 0x020572B8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020552F8 + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_02057288 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020572D4 +FUN_020572D4: ; 0x020572D4 + push {r3, lr} + bl FUN_020553A0 + bl FUN_02058738 + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x5 + bl FUN_0202A0E8 + pop {r3, pc} + + thumb_func_start FUN_020572EC +FUN_020572EC: ; 0x020572EC + push {r4-r6, lr} + mov r0, #0x0 + add r4, r2, #0x0 + mvn r0, r0 + add r5, r1, #0x0 + cmp r4, r0 + beq _02057336 + add r0, r5, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059BB4 + cmp r0, #0x1 + bne _0205731C + cmp r4, #0x1 + bls _02057318 + mov r0, #0x1 + pop {r4-r6, pc} +_02057318: + mov r0, #0x0 + pop {r4-r6, pc} +_0205731C: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059BD4 + cmp r0, #0x1 + bne _02057336 + sub r0, r4, #0x2 + cmp r0, #0x1 + bls _02057332 + mov r0, #0x1 + pop {r4-r6, pc} +_02057332: + mov r0, #0x0 + pop {r4-r6, pc} +_02057336: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205733C +FUN_0205733C: ; 0x0205733C + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x0 + mvn r1, r1 + add r5, r0, #0x0 + cmp r2, r1 + beq _0205734E + mov r0, #0x0 + pop {r3-r5, pc} +_0205734E: + bl FUN_020553C4 + cmp r0, #0x1 + beq _0205735A + mov r0, #0x0 + pop {r3-r5, pc} +_0205735A: + add r0, r5, #0x0 + bl FUN_02055738 + cmp r0, #0x0 + bne _02057368 + mov r0, #0x0 + pop {r3-r5, pc} +_02057368: + add r0, r5, #0x0 + bl FUN_020553A0 + add r1, r4, #0x0 + bl FUN_02059B94 + cmp r0, #0x1 + bne _0205737C + mov r0, #0x1 + pop {r3-r5, pc} +_0205737C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02057380 +FUN_02057380: ; 0x02057380 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r7, r2, #0x0 + bl FUN_02057444 + add r4, r0, #0x0 + add r1, r6, #0x0 + bl FUN_020583E0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058364 + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_02058398 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020573AC +FUN_020573AC: ; 0x020573AC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020583CC + add r1, r0, #0x0 + mov r0, #0xb + bl FUN_02016A8C + mov r0, #0xb + add r1, r4, #0x0 + bl FUN_02016A8C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020573C8 +FUN_020573C8: ; 0x020573C8 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r5, r2, #0x0 + str r3, [sp, #0x4] + ldr r7, [sp, #0x20] + bl FUN_02058368 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_020583CC + add r4, r0, #0x0 + cmp r6, #0x0 + beq _02057430 +_020573E6: + add r0, r4, #0x0 + bl FUN_02058830 + cmp r0, #0x1 + bne _02057426 + ldr r2, [sp, #0x4] + add r0, r4, #0x0 + add r1, r5, #0x0 + add r3, r7, #0x0 + bl FUN_02057F90 + cmp r0, #0x0 + beq _02057408 + cmp r0, #0x1 + beq _02057426 + cmp r0, #0x2 + b _02057426 +_02057408: + add r0, r4, #0x0 + bl FUN_02058450 + cmp r5, r0 + beq _02057426 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xa + bl FUN_0205842C + cmp r0, #0x0 + bne _02057426 + add r0, r4, #0x0 + bl FUN_02057654 +_02057426: + mov r0, #0x4a + lsl r0, r0, #0x2 + add r4, r4, r0 + sub r6, r6, #0x1 + bne _020573E6 +_02057430: + ldr r0, [sp, #0x0] + bl FUN_020583A0 + add r1, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_021F2AF4 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02057444 +FUN_02057444: ; 0x02057444 + push {r4-r6, lr} + mov r1, #0x4b + add r4, r0, #0x0 + mov r0, #0xb + lsl r1, r1, #0x2 + bl FUN_02016998 + add r5, r0, #0x0 + bne _0205745A + bl ErrorHandling +_0205745A: + mov r2, #0x4b + add r0, r5, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + blx Call_FillMemWithValue + mov r0, #0x4a + lsl r0, r0, #0x2 + add r6, r4, #0x0 + mul r6, r0 + mov r0, #0xb + add r1, r6, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + bne _0205747E + bl ErrorHandling +_0205747E: + add r0, r4, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + blx Call_FillMemWithValue + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020583B4 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02057494 +FUN_02057494: ; 0x02057494 + push {r3-r7, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + add r7, r2, #0x0 + bl FUN_02058BFC + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02058CE0 + cmp r0, #0x0 + bne _020574C8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_02057C98 + add r4, r0, #0x0 + beq _020574E8 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02058214 + add r0, r4, #0x0 + pop {r3-r7, pc} +_020574C8: + add r0, r6, #0x0 + bl FUN_02058CFC + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02058010 + add r4, r0, #0x0 + beq _020574E8 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02058258 + add r0, r4, #0x0 + pop {r3-r7, pc} +_020574E8: + add r0, r5, #0x0 + bl FUN_02057C64 + add r4, r0, #0x0 + beq _0205753A + add r0, r5, #0x0 + bl FUN_020583E8 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02057D2C + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02057E90 + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_0205844C + add r0, r4, #0x0 + bl FUN_020581A4 + add r0, r4, #0x0 + bl FUN_020581B4 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02058410 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02057CF0 + add r0, r5, #0x0 + bl FUN_02058360 + bl FUN_0205836C + add r0, r4, #0x0 +_0205753A: + pop {r3-r7, pc} + + thumb_func_start FUN_0205753C +FUN_0205753C: ; 0x0205753C + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, sp, #0x0 + mov r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02058BF8 + ldr r1, [sp, #0x38] + add r0, sp, #0x0 + bl FUN_02058C00 + ldr r1, [sp, #0x3c] + add r0, sp, #0x0 + bl FUN_02058C08 + add r0, sp, #0x0 + mov r1, #0x0 + bl FUN_02058C10 + add r0, sp, #0x0 + mov r1, #0x0 + bl FUN_02058C18 + add r0, sp, #0x0 + mov r1, #0x0 + bl FUN_02058C20 + add r0, sp, #0x0 + add r1, r7, #0x0 + bl FUN_02058C28 + mov r1, #0x0 + add r0, sp, #0x0 + add r2, r1, #0x0 + bl FUN_02058C34 + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_02058C34 + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x2 + bl FUN_02058C34 + add r0, sp, #0x0 + mov r1, #0x0 + bl FUN_02058C7C + add r0, sp, #0x0 + mov r1, #0x0 + bl FUN_02058C88 + add r0, sp, #0x0 + add r1, r4, #0x0 + bl FUN_02058C94 + add r0, sp, #0x0 + add r1, r6, #0x0 + bl FUN_02058CA4 + add r0, sp, #0x0 + mov r1, #0x0 + bl FUN_02058C9C + ldr r2, [sp, #0x40] + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02057494 + add sp, #0x20 + pop {r3-r7, pc} + + thumb_func_start FUN_020575D4 +FUN_020575D4: ; 0x020575D4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + ldr r2, [sp, #0x18] + add r7, r3, #0x0 + mov r4, #0x0 + bl FUN_02058CAC + str r0, [sp, #0x0] + cmp r0, #0x0 + beq _02057610 + bl FUN_02058C1C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583E8 + lsl r1, r6, #0x10 + lsr r1, r1, #0x10 + bl FUN_02039528 + cmp r0, #0x0 + bne _02057610 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + add r2, r7, #0x0 + bl FUN_02057494 + add r4, r0, #0x0 +_02057610: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02057614 +FUN_02057614: ; 0x02057614 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058454 + add r0, r4, #0x0 + bl FUN_02058148 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xe + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_020581B4 + pop {r4, pc} + + thumb_func_start FUN_02057634 +FUN_02057634: ; 0x02057634 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _02057648 + add r0, r5, #0x0 + bl FUN_020576A8 +_02057648: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02057614 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02057654 +FUN_02057654: ; 0x02057654 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058578 + bl FUN_020587E0 + cmp r0, #0x1 + bne _0205766A + add r0, r4, #0x0 + bl FUN_020586B4 +_0205766A: + add r0, r4, #0x0 + bl FUN_02058660 + add r0, r4, #0x0 + bl FUN_02058564 + add r0, r4, #0x0 + bl FUN_02058580 + bl FUN_02058374 + add r0, r4, #0x0 + bl FUN_02057F80 + pop {r4, pc} + + thumb_func_start FUN_02057688 +FUN_02057688: ; 0x02057688 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02058490 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058738 + lsl r1, r5, #0x10 + lsr r1, r1, #0x10 + bl FUN_0203953C + add r0, r4, #0x0 + bl FUN_02057654 + pop {r3-r5, pc} + + thumb_func_start FUN_020576A8 +FUN_020576A8: ; 0x020576A8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058578 + bl FUN_020587E0 + cmp r0, #0x1 + bne _020576D6 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xe + bl FUN_02058424 + cmp r0, #0x0 + beq _020576CC + add r0, r4, #0x0 + bl FUN_020586B4 +_020576CC: + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xe + bl FUN_02058418 +_020576D6: + ldr r1, _02057708 ; =0x0000FFFF + add r0, r4, #0x0 + bl FUN_02058454 + ldr r1, _0205770C ; =FUN_02058ED8 + add r0, r4, #0x0 + bl FUN_02058684 + ldr r1, _02057710 ; =FUN_02058EDC + add r0, r4, #0x0 + bl FUN_02058698 + ldr r1, _02057710 ; =FUN_02058EDC + add r0, r4, #0x0 + bl FUN_020586AC + ldr r1, _02057714 ; =FUN_02058EE0 + add r0, r4, #0x0 + bl FUN_020586C0 + ldr r1, _02057718 ; =FUN_02058EE4 + add r0, r4, #0x0 + bl FUN_020586D4 + pop {r4, pc} + .balign 4 +_02057708: .word 0x0000FFFF +_0205770C: .word FUN_02058ED8 +_02057710: .word FUN_02058EDC +_02057714: .word FUN_02058EE0 +_02057718: .word FUN_02058EE4 + + thumb_func_start FUN_0205771C +FUN_0205771C: ; 0x0205771C + push {r3-r7, lr} + add r5, r0, #0x0 + mov r4, #0x0 + bl FUN_02058368 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + mov r7, #0x4a + add r5, r0, #0x0 + lsl r7, r7, #0x2 +_02057734: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058424 + cmp r0, #0x0 + beq _02057746 + add r0, r5, #0x0 + bl FUN_02057654 +_02057746: + add r4, r4, #0x1 + add r5, r5, r7 + cmp r4, r6 + blt _02057734 + pop {r3-r7, pc} + + thumb_func_start FUN_02057750 +FUN_02057750: ; 0x02057750 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020587E0 + cmp r0, #0x1 + beq _02057760 + bl ErrorHandling +_02057760: + add r0, r5, #0x0 + mov r4, #0x0 + bl FUN_02058368 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + mov r7, #0x4a + add r5, r0, #0x0 + lsl r7, r7, #0x2 +_02057776: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058424 + cmp r0, #0x0 + beq _0205779C + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0xe + bl FUN_02058424 + cmp r0, #0x0 + beq _0205779C + add r0, r5, #0x0 + bl FUN_020586C8 + add r0, r5, #0x0 + bl FUN_0205816C +_0205779C: + add r4, r4, #0x1 + add r5, r5, r7 + cmp r4, r6 + blt _02057776 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020577A8 +FUN_020577A8: ; 0x020577A8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020587E0 + cmp r0, #0x1 + beq _020577B8 + bl ErrorHandling +_020577B8: + add r0, r5, #0x0 + mov r4, #0x0 + bl FUN_02058368 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + mov r7, #0x4a + add r5, r0, #0x0 + lsl r7, r7, #0x2 +_020577CE: + add r0, r5, #0x0 + bl FUN_02058830 + cmp r0, #0x1 + bne _020577F6 + add r0, r5, #0x0 + bl FUN_02058884 + cmp r0, #0x1 + bne _020577EA + add r0, r5, #0x0 + bl FUN_020586DC + b _020577F0 +_020577EA: + add r0, r5, #0x0 + bl FUN_020581B4 +_020577F0: + add r0, r5, #0x0 + bl FUN_02058148 +_020577F6: + add r4, r4, #0x1 + add r5, r5, r7 + cmp r4, r6 + blt _020577CE + pop {r3-r7, pc} + + thumb_func_start FUN_02057800 +FUN_02057800: ; 0x02057800 + push {r3-r7, lr} + sub sp, #0x8 + add r7, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x0 + beq _02057846 +_02057820: + ldr r1, [sp, #0x0] + add r0, r7, #0x0 + add r2, r5, #0x0 + bl FUN_02057894 + sub r4, r4, #0x1 + add r5, #0x50 + cmp r4, #0x0 + bgt _02057836 + bl ErrorHandling +_02057836: + add r0, r6, #0x0 + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x0 + bne _02057820 +_02057846: + cmp r4, #0x0 + beq _02057856 + mov r2, #0x50 + add r0, r5, #0x0 + mov r1, #0x0 + mul r2, r4 + blx Call_FillMemWithValue +_02057856: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205785C +FUN_0205785C: ; 0x0205785C + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r7, r2, #0x0 + beq _02057892 +_02057866: + ldr r1, [r5, #0x0] + mov r0, #0x1 + tst r0, r1 + beq _0205788C + add r0, r6, #0x0 + bl FUN_02057C64 + add r4, r0, #0x0 + bne _0205787C + bl ErrorHandling +_0205787C: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020579C4 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02057AEC +_0205788C: + add r5, #0x50 + sub r7, r7, #0x1 + bne _02057866 +_02057892: + pop {r3-r7, pc} + + thumb_func_start FUN_02057894 +FUN_02057894: ; 0x02057894 + push {r3-r6, lr} + sub sp, #0xc + add r5, r1, #0x0 + add r6, r0, #0x0 + add r4, r2, #0x0 + add r0, r5, #0x0 + bl FUN_0205840C + str r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02058440 + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02058448 + strb r0, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02058450 + strh r0, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_02058458 + strh r0, [r4, #0x12] + add r0, r5, #0x0 + bl FUN_02058480 + strb r0, [r4, #0x9] + add r0, r5, #0x0 + bl FUN_02058488 + strh r0, [r4, #0x14] + add r0, r5, #0x0 + bl FUN_02058490 + strh r0, [r4, #0x16] + add r0, r5, #0x0 + bl FUN_02058498 + strh r0, [r4, #0x18] + add r0, r5, #0x0 + bl FUN_020584A0 + strb r0, [r4, #0xc] + add r0, r5, #0x0 + bl FUN_020584C4 + strb r0, [r4, #0xd] + add r0, r5, #0x0 + bl FUN_020584D4 + strb r0, [r4, #0xe] + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + strh r0, [r4, #0x1a] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058510 + strh r0, [r4, #0x1c] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_02058510 + strh r0, [r4, #0x1e] + add r0, r5, #0x0 + bl FUN_02058538 + strb r0, [r4, #0xa] + add r0, r5, #0x0 + bl FUN_02058540 + strb r0, [r4, #0xb] + add r0, r5, #0x0 + bl FUN_02058AFC + strh r0, [r4, #0x20] + add r0, r5, #0x0 + bl FUN_02058B04 + strh r0, [r4, #0x22] + add r0, r5, #0x0 + bl FUN_02058B0C + strh r0, [r4, #0x24] + add r0, r5, #0x0 + bl FUN_02058B2C + strh r0, [r4, #0x26] + add r0, r5, #0x0 + bl FUN_02058B3C + strh r0, [r4, #0x28] + add r0, r5, #0x0 + bl FUN_02058B4C + strh r0, [r4, #0x2a] + mov r0, #0x26 + mov r1, #0x2a + ldrsh r0, [r4, r0] + ldrsh r1, [r4, r1] + add r2, sp, #0x0 + bl FUN_02059E60 + add r0, r5, #0x0 + bl FUN_02058B80 + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058AE4 + add r2, r0, #0x0 + add r0, r6, #0x0 + add r1, sp, #0x0 + bl FUN_02059EC8 + cmp r0, #0x0 + bne _0205798E + add r0, r5, #0x0 + bl FUN_02058B80 + b _02057990 +_0205798E: + ldr r0, [sp, #0x4] +_02057990: + str r0, [r4, #0x2c] + add r0, r5, #0x0 + bl FUN_020585B0 + add r3, r4, #0x0 + add r3, #0x30 + mov r2, #0x10 +_0205799E: + ldrb r1, [r0, #0x0] + add r0, r0, #0x1 + strb r1, [r3, #0x0] + add r3, r3, #0x1 + sub r2, r2, #0x1 + bne _0205799E + add r0, r5, #0x0 + bl FUN_020585D8 + add r4, #0x40 + mov r2, #0x10 +_020579B4: + ldrb r1, [r0, #0x0] + add r0, r0, #0x1 + strb r1, [r4, #0x0] + add r4, r4, #0x1 + sub r2, r2, #0x1 + bne _020579B4 + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_020579C4 +FUN_020579C4: ; 0x020579C4 + push {r4-r5, lr} + sub sp, #0xc + add r4, r1, #0x0 + ldr r1, [r4, #0x0] + add r5, r0, #0x0 + bl FUN_02058408 + ldr r1, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_0205843C + ldrb r1, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02058444 + ldrh r1, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_0205844C + ldrh r1, [r4, #0x12] + add r0, r5, #0x0 + bl FUN_02058454 + ldrb r1, [r4, #0x9] + add r0, r5, #0x0 + bl FUN_0205847C + ldrh r1, [r4, #0x14] + add r0, r5, #0x0 + bl FUN_02058484 + ldrh r1, [r4, #0x16] + add r0, r5, #0x0 + bl FUN_0205848C + ldrh r1, [r4, #0x18] + add r0, r5, #0x0 + bl FUN_02058494 + mov r1, #0xc + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_0205849C + mov r1, #0xd + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_020584A4 + mov r1, #0xe + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_020584CC + mov r1, #0x1a + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_020584EC + mov r1, #0x1c + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_020584EC + mov r1, #0x1e + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + mov r2, #0x2 + bl FUN_020584EC + mov r1, #0xa + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058534 + mov r1, #0xb + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_0205853C + mov r1, #0x20 + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058B00 + mov r1, #0x22 + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058B08 + mov r1, #0x24 + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058B10 + mov r1, #0x26 + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058B30 + mov r1, #0x28 + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058B40 + mov r1, #0x2a + ldrsh r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02058B50 + add r1, sp, #0x0 + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + ldr r0, [r4, #0x2c] + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B6C + add r0, r5, #0x0 + bl FUN_020585B0 + add r3, r4, #0x0 + add r3, #0x30 + mov r2, #0x10 +_02057AC4: + ldrb r1, [r3, #0x0] + add r3, r3, #0x1 + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _02057AC4 + add r0, r5, #0x0 + bl FUN_020585D8 + add r4, #0x40 + mov r2, #0x10 +_02057ADA: + ldrb r1, [r4, #0x0] + add r4, r4, #0x1 + strb r1, [r0, #0x0] + add r0, r0, #0x1 + sub r2, r2, #0x1 + bne _02057ADA + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_02057AEC +FUN_02057AEC: ; 0x02057AEC + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02057B34 + add r0, r4, #0x0 + bl FUN_02057B54 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058570 + add r0, r4, #0x0 + bl FUN_02057EE0 + add r0, r4, #0x0 + bl FUN_0205AE80 + add r0, r4, #0x0 + bl FUN_020581B4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02057CF0 + add r0, r4, #0x0 + bl FUN_0205866C + add r0, r5, #0x0 + bl FUN_02058360 + bl FUN_0205836C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02057B34 +FUN_02057B34: ; 0x02057B34 + push {r4, lr} + mov r1, #0x5 + add r4, r0, #0x0 + bl FUN_02058410 + ldr r1, _02057B50 ; =0x00EF4248 + add r0, r4, #0x0 + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_0205815C + pop {r4, pc} + nop +_02057B50: .word 0x00EF4248 + + thumb_func_start FUN_02057B54 +FUN_02057B54: ; 0x02057B54 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + add r1, sp, #0x0 + bl FUN_02058B5C + add r0, r4, #0x0 + bl FUN_02058B2C + add r1, r0, #0x0 + mov r0, #0x2 + lsl r2, r1, #0x10 + lsl r0, r0, #0xe + add r0, r2, r0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02058B18 + add r0, r4, #0x0 + bl FUN_02058B3C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B20 + add r0, r4, #0x0 + bl FUN_02058B4C + add r1, r0, #0x0 + mov r0, #0x2 + lsl r2, r1, #0x10 + lsl r0, r0, #0xe + add r0, r2, r0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_02058B28 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02058B6C + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02057BAC +FUN_02057BAC: ; 0x02057BAC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r2, #0x0 + add r7, r0, #0x0 + add r4, r3, #0x0 + str r1, [sp, #0x0] + cmp r5, #0x0 + bne _02057BC0 + bl ErrorHandling +_02057BC0: + lsl r0, r5, #0x5 + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + mov r0, #0xb + bl FUN_020169D8 + add r6, r0, #0x0 + bne _02057BD4 + bl ErrorHandling +_02057BD4: + ldr r2, [sp, #0x4] + add r0, r6, #0x0 + add r1, r4, #0x0 + blx memcpy + mov r0, #0xb + mov r1, #0x14 + bl FUN_020169D8 + add r4, r0, #0x0 + bne _02057BEE + bl ErrorHandling +_02057BEE: + ldr r0, [sp, #0x0] + str r0, [r4, #0x0] + str r5, [r4, #0x4] + mov r0, #0x0 + str r0, [r4, #0x8] + str r7, [r4, #0xc] + add r0, r4, #0x0 + str r6, [r4, #0x10] + bl FUN_02057C08 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02057C08 +FUN_02057C08: ; 0x02057C08 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_020583E8 + add r6, r5, #0x0 + ldr r4, [r5, #0x10] + add r7, r0, #0x0 + add r6, #0x8 +_02057C1A: + add r0, r4, #0x0 + bl FUN_02058CE0 + cmp r0, #0x1 + beq _02057C30 + ldrh r1, [r4, #0x8] + add r0, r7, #0x0 + bl FUN_02039528 + cmp r0, #0x0 + bne _02057C42 +_02057C30: + ldr r0, [r5, #0xc] + ldr r2, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02057494 + cmp r0, #0x0 + bne _02057C42 + bl ErrorHandling +_02057C42: + ldr r0, [r6, #0x0] + add r4, #0x20 + add r0, r0, #0x1 + str r0, [r6, #0x0] + ldr r1, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r1, r0 + blt _02057C1A + ldr r1, [r5, #0x10] + mov r0, #0xb + bl FUN_02016A8C + mov r0, #0xb + add r1, r5, #0x0 + bl FUN_02016A8C + pop {r3-r7, pc} + + thumb_func_start FUN_02057C64 +FUN_02057C64: ; 0x02057C64 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r4, #0x0 + bl FUN_02058368 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + mov r7, #0x4a + add r5, r0, #0x0 + lsl r7, r7, #0x2 +_02057C7C: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058424 + cmp r0, #0x0 + bne _02057C8C + add r0, r5, #0x0 + pop {r3-r7, pc} +_02057C8C: + add r4, r4, #0x1 + add r5, r5, r7 + cmp r4, r6 + blt _02057C7C + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02057C98 +FUN_02057C98: ; 0x02057C98 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + mov r1, #0x0 + add r4, r2, #0x0 + str r1, [sp, #0x4] + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + add r6, r0, #0x0 + bl FUN_020580F4 + cmp r0, #0x1 + bne _02057CEA + add r7, sp, #0x0 +_02057CB6: + ldr r0, [sp, #0x0] + bl FUN_020589CC + cmp r0, #0x1 + bne _02057CDA + ldr r0, [sp, #0x0] + bl FUN_02058448 + cmp r5, r0 + bne _02057CDA + ldr r0, [sp, #0x0] + bl FUN_02058750 + cmp r4, r0 + bne _02057CDA + ldr r0, [sp, #0x0] + add sp, #0x8 + pop {r3-r7, pc} +_02057CDA: + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + beq _02057CB6 +_02057CEA: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02057CF0 +FUN_02057CF0: ; 0x02057CF0 + push {r3-r5, lr} + add r4, r1, #0x0 + bl FUN_0205839C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058480 + cmp r0, #0x30 + beq _02057D08 + cmp r0, #0x32 + bne _02057D0A +_02057D08: + add r5, r5, #0x2 +_02057D0A: + ldr r0, _02057D28 ; =FUN_0205832C + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0200CA44 + add r5, r0, #0x0 + bne _02057D1C + bl ErrorHandling +_02057D1C: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058554 + pop {r3-r5, pc} + nop +_02057D28: .word FUN_0205832C + + thumb_func_start FUN_02057D2C +FUN_02057D2C: ; 0x02057D2C + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r6, r2, #0x0 + bl FUN_02058BFC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058444 + add r0, r4, #0x0 + bl FUN_02058C04 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02058170 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058454 + add r0, r4, #0x0 + bl FUN_02058C0C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205847C + add r0, r4, #0x0 + bl FUN_02058C14 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058484 + add r0, r4, #0x0 + bl FUN_02058C1C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205848C + add r0, r4, #0x0 + bl FUN_02058C24 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058494 + add r0, r4, #0x0 + bl FUN_02058C2C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205849C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058C58 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_020584EC + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02058C58 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_020584EC + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02058C58 + add r1, r0, #0x0 + add r0, r5, #0x0 + mov r2, #0x2 + bl FUN_020584EC + add r0, r4, #0x0 + bl FUN_02058C80 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058534 + add r0, r4, #0x0 + bl FUN_02058C8C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205853C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02057DFC + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02057DFC +FUN_02057DFC: ; 0x02057DFC + push {r3-r6, lr} + sub sp, #0xc + add r6, r1, #0x0 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02058C98 + add r5, r0, #0x0 + mov r0, #0x2 + lsl r1, r5, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B00 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B18 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B30 + add r0, r6, #0x0 + bl FUN_02058CA0 + asr r1, r0, #0x3 + str r0, [sp, #0x4] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r5, r0, #0xc + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B08 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B20 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B40 + add r0, r6, #0x0 + bl FUN_02058CA8 + add r5, r0, #0x0 + mov r0, #0x2 + lsl r1, r5, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B10 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B28 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02058B50 + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02058B6C + add sp, #0xc + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02057E90 +FUN_02057E90: ; 0x02057E90 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, _02057EDC ; =0x00001801 + add r5, r0, #0x0 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_020581F8 + cmp r0, #0x1 + bne _02057EAE + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020589B0 +_02057EAE: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02058570 + add r0, r5, #0x0 + bl FUN_020584A0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020584A4 + add r0, r5, #0x0 + bl FUN_020584A0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_0205AE80 + pop {r3-r5, pc} + nop +_02057EDC: .word 0x00001801 + + thumb_func_start FUN_02057EE0 +FUN_02057EE0: ; 0x02057EE0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02058480 + bl FUN_02058D14 + add r4, r0, #0x0 + bl FUN_02058D2C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058630 + add r0, r4, #0x0 + bl FUN_02058D30 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058644 + add r0, r4, #0x0 + bl FUN_02058D34 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058658 + pop {r3-r5, pc} + + thumb_func_start FUN_02057F18 +FUN_02057F18: ; 0x02057F18 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02058458 + mov r1, #0x2 + lsl r1, r1, #0xc + cmp r0, r1 + bne _02057F2C + ldr r5, _02057F7C ; =0x021F9080 + b _02057F32 +_02057F2C: + bl FUN_02058D4C + add r5, r0, #0x0 +_02057F32: + add r0, r5, #0x0 + bl FUN_02058D38 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058684 + add r0, r5, #0x0 + bl FUN_02058D3C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058698 + add r0, r5, #0x0 + bl FUN_02058D40 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020586AC + add r0, r5, #0x0 + bl FUN_02058D44 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020586C0 + add r0, r5, #0x0 + bl FUN_02058D48 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020586D4 + pop {r3-r5, pc} + nop +_02057F7C: .word 0x021F9080 + + thumb_func_start FUN_02057F80 +FUN_02057F80: ; 0x02057F80 + ldr r3, _02057F8C ; =Call_FillMemWithValue + mov r2, #0x4a + mov r1, #0x0 + lsl r2, r2, #0x2 + bx r3 + nop +_02057F8C: .word Call_FillMemWithValue + + thumb_func_start FUN_02057F90 +FUN_02057F90: ; 0x02057F90 + push {r3-r7, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r4, r3, #0x0 + str r1, [sp, #0x0] + cmp r6, #0x0 + beq _0205800A +_02057F9E: + add r0, r4, #0x0 + bl FUN_02058BFC + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058448 + cmp r7, r0 + bne _02058002 + add r0, r4, #0x0 + bl FUN_02058CE0 + cmp r0, #0x1 + bne _02057FE8 + add r0, r4, #0x0 + bl FUN_02058CFC + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020589CC + cmp r0, #0x1 + bne _02057FDA + add r0, r5, #0x0 + bl FUN_02058750 + cmp r7, r0 + bne _02058002 + mov r0, #0x1 + pop {r3-r7, pc} +_02057FDA: + add r0, r5, #0x0 + bl FUN_02058450 + cmp r7, r0 + bne _02058002 + mov r0, #0x2 + pop {r3-r7, pc} +_02057FE8: + add r0, r5, #0x0 + bl FUN_020589CC + cmp r0, #0x1 + bne _02058002 + add r0, r5, #0x0 + bl FUN_02058750 + ldr r1, [sp, #0x0] + cmp r1, r0 + bne _02058002 + mov r0, #0x2 + pop {r3-r7, pc} +_02058002: + sub r6, r6, #0x1 + add r4, #0x20 + cmp r6, #0x0 + bne _02057F9E +_0205800A: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02058010 +FUN_02058010: ; 0x02058010 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + mov r1, #0x0 + add r4, r2, #0x0 + str r1, [sp, #0x4] + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + add r6, r0, #0x0 + bl FUN_020580F4 + cmp r0, #0x1 + bne _02058058 + add r7, sp, #0x0 +_0205802E: + ldr r0, [sp, #0x0] + bl FUN_02058448 + cmp r5, r0 + bne _02058048 + ldr r0, [sp, #0x0] + bl FUN_02058450 + cmp r4, r0 + bne _02058048 + ldr r0, [sp, #0x0] + add sp, #0x8 + pop {r3-r7, pc} +_02058048: + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + beq _0205802E +_02058058: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02058060 +FUN_02058060: ; 0x02058060 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + cmp r5, #0x0 + bne _0205806E + bl ErrorHandling +_0205806E: + add r0, r5, #0x0 + bl FUN_02058368 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583C4 + mov r7, #0x4a + add r5, r0, #0x0 + lsl r7, r7, #0x2 +_02058082: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205842C + cmp r0, #0x1 + bne _020580A6 + add r0, r5, #0x0 + bl FUN_020589CC + cmp r0, #0x0 + bne _020580A6 + add r0, r5, #0x0 + bl FUN_02058448 + cmp r6, r0 + bne _020580A6 + add r0, r5, #0x0 + pop {r3-r7, pc} +_020580A6: + sub r4, r4, #0x1 + add r5, r5, r7 + cmp r4, #0x0 + bgt _02058082 + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020580B4 +FUN_020580B4: ; 0x020580B4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02058368 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583C4 + mov r7, #0x4a + add r5, r0, #0x0 + lsl r7, r7, #0x2 +_020580CC: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205842C + cmp r0, #0x1 + bne _020580E6 + add r0, r5, #0x0 + bl FUN_02058480 + cmp r6, r0 + bne _020580E6 + add r0, r5, #0x0 + pop {r3-r7, pc} +_020580E6: + sub r4, r4, #0x1 + add r5, r5, r7 + cmp r4, #0x0 + bgt _020580CC + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020580F4 +FUN_020580F4: ; 0x020580F4 + push {r3-r7, lr} + add r5, r2, #0x0 + add r4, r0, #0x0 + str r1, [sp, #0x0] + add r6, r3, #0x0 + bl FUN_02058368 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, r7 + blt _0205810E + mov r0, #0x0 + pop {r3-r7, pc} +_0205810E: + add r0, r4, #0x0 + bl FUN_020583C4 + mov r1, #0x4a + ldr r2, [r5, #0x0] + lsl r1, r1, #0x2 + mul r1, r2 + add r4, r0, r1 +_0205811E: + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + add r0, r0, #0x1 + str r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02058424 + cmp r6, r0 + bne _02058138 + ldr r0, [sp, #0x0] + str r4, [r0, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_02058138: + mov r0, #0x4a + lsl r0, r0, #0x2 + add r4, r4, r0 + ldr r0, [r5, #0x0] + cmp r0, r7 + blt _0205811E + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02058148 +FUN_02058148: ; 0x02058148 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x4 + bl FUN_02058410 + add r0, r4, #0x0 + bl FUN_0205815C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205815C +FUN_0205815C: ; 0x0205815C + ldr r3, _02058164 ; =FUN_02058418 + ldr r1, _02058168 ; =0x05108000 + bx r3 + nop +_02058164: .word FUN_02058418 +_02058168: .word 0x05108000 + + thumb_func_start FUN_0205816C +FUN_0205816C: ; 0x0205816C + bx lr + .balign 4 + + thumb_func_start FUN_02058170 +FUN_02058170: ; 0x02058170 + push {r3, lr} + cmp r1, #0x65 + blt _02058186 + cmp r1, #0x75 + bgt _02058186 + sub r1, #0x65 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02039504 + add r1, r0, #0x0 +_02058186: + add r0, r1, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205818C +FUN_0205818C: ; 0x0205818C + push {r4, lr} + mov r1, #0x1 + lsl r1, r1, #0xc + add r4, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + beq _020581A2 + add r0, r4, #0x0 + bl FUN_02059D1C +_020581A2: + pop {r4, pc} + + thumb_func_start FUN_020581A4 +FUN_020581A4: ; 0x020581A4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02057EE0 + add r0, r4, #0x0 + bl FUN_02058EE8 + pop {r4, pc} + + thumb_func_start FUN_020581B4 +FUN_020581B4: ; 0x020581B4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058578 + bl FUN_020587E0 + cmp r0, #0x0 + beq _020581F6 + add r0, r4, #0x0 + bl FUN_0205818C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_021F2E0C + add r0, r4, #0x0 + bl FUN_02058884 + cmp r0, #0x0 + bne _020581F6 + add r0, r4, #0x0 + bl FUN_02057F18 + add r0, r4, #0x0 + bl FUN_0205868C + add r0, r4, #0x0 + bl FUN_02058878 +_020581F6: + pop {r4, pc} + + thumb_func_start FUN_020581F8 +FUN_020581F8: ; 0x020581F8 + push {r3, lr} + bl FUN_02058498 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, _02058210 ; =0x0000FFFF + cmp r1, r0 + bne _0205820C + mov r0, #0x1 + pop {r3, pc} +_0205820C: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02058210: .word 0x0000FFFF + + thumb_func_start FUN_02058214 +FUN_02058214: ; 0x02058214 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020589CC + cmp r0, #0x1 + beq _02058228 + bl ErrorHandling +_02058228: + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020589B0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0205844C + add r0, r4, #0x0 + bl FUN_02058C24 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058494 + add r0, r4, #0x0 + bl FUN_02058C1C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205848C + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02058258 +FUN_02058258: ; 0x02058258 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + add r4, r1, #0x0 + bl FUN_02058CE0 + cmp r0, #0x1 + beq _0205826E + bl ErrorHandling +_0205826E: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_020589B0 + add r0, r6, #0x0 + bl FUN_02058C24 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058494 + add r0, r6, #0x0 + bl FUN_02058CFC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205848C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205844C + pop {r4-r6, pc} + + thumb_func_start FUN_0205829C +FUN_0205829C: ; 0x0205829C + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02058744 + add r0, r0, r4 + pop {r4, pc} + + thumb_func_start FUN_020582A8 +FUN_020582A8: ; 0x020582A8 + push {r4-r6, lr} + add r6, r1, #0x0 + mov r1, #0x1 + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_0205842C + cmp r0, #0x0 + bne _020582BE + mov r0, #0x0 + pop {r4-r6, pc} +_020582BE: + add r0, r5, #0x0 + bl FUN_02058448 + cmp r6, r0 + beq _020582CC + mov r0, #0x0 + pop {r4-r6, pc} +_020582CC: + add r0, r5, #0x0 + bl FUN_02058450 + cmp r4, r0 + beq _020582F2 + add r0, r5, #0x0 + bl FUN_020589CC + cmp r0, #0x0 + bne _020582E4 + mov r0, #0x0 + pop {r4-r6, pc} +_020582E4: + add r0, r5, #0x0 + bl FUN_02058750 + cmp r4, r0 + beq _020582F2 + mov r0, #0x0 + pop {r4-r6, pc} +_020582F2: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020582F8 +FUN_020582F8: ; 0x020582F8 + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0x1 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0205842C + cmp r0, #0x0 + bne _02058310 + mov r0, #0x0 + pop {r3-r7, pc} +_02058310: + add r0, r5, #0x0 + bl FUN_0205845C + cmp r0, r4 + beq _0205831E + mov r0, #0x0 + pop {r3-r7, pc} +_0205831E: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020582A8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205832C +FUN_0205832C: ; 0x0205832C + push {r4, lr} + add r4, r1, #0x0 + add r0, r4, #0x0 + bl FUN_02058EF8 + add r0, r4, #0x0 + bl FUN_02058830 + cmp r0, #0x0 + beq _02058346 + add r0, r4, #0x0 + bl FUN_02058348 +_02058346: + pop {r4, pc} + + thumb_func_start FUN_02058348 +FUN_02058348: ; 0x02058348 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058578 + bl FUN_020587E0 + cmp r0, #0x1 + bne _0205835E + add r0, r4, #0x0 + bl FUN_021F1D8C +_0205835E: + pop {r4, pc} + + thumb_func_start FUN_02058360 +FUN_02058360: ; 0x02058360 + bx lr + .balign 4 + + thumb_func_start FUN_02058364 +FUN_02058364: ; 0x02058364 + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058368 +FUN_02058368: ; 0x02058368 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0205836C +FUN_0205836C: ; 0x0205836C + ldr r1, [r0, #0x8] + add r1, r1, #0x1 + str r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_02058374 +FUN_02058374: ; 0x02058374 + ldr r1, [r0, #0x8] + sub r1, r1, #0x1 + str r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_0205837C +FUN_0205837C: ; 0x0205837C + ldr r2, [r0, #0x0] + orr r1, r2 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02058384 +FUN_02058384: ; 0x02058384 + ldr r2, [r0, #0x0] + mvn r1, r1 + and r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058390 +FUN_02058390: ; 0x02058390 + ldr r0, [r0, #0x0] + and r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_02058398 +FUN_02058398: ; 0x02058398 + str r1, [r0, #0xc] + bx lr + + thumb_func_start FUN_0205839C +FUN_0205839C: ; 0x0205839C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_020583A0 +FUN_020583A0: ; 0x020583A0 + add r0, #0x18 + bx lr + + thumb_func_start FUN_020583A4 +FUN_020583A4: ; 0x020583A4 + mov r2, #0x12 + lsl r2, r2, #0x4 + str r1, [r0, r2] + bx lr + + thumb_func_start FUN_020583AC +FUN_020583AC: ; 0x020583AC + mov r1, #0x12 + lsl r1, r1, #0x4 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_020583B4 +FUN_020583B4: ; 0x020583B4 + mov r2, #0x49 + lsl r2, r2, #0x2 + str r1, [r0, r2] + bx lr + + thumb_func_start FUN_020583BC +FUN_020583BC: ; 0x020583BC + mov r1, #0x49 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_020583C4 +FUN_020583C4: ; 0x020583C4 + mov r1, #0x49 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_020583CC +FUN_020583CC: ; 0x020583CC + mov r1, #0x49 + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_020583D4 +FUN_020583D4: ; 0x020583D4 + mov r1, #0x4a + ldr r2, [r0, #0x0] + lsl r1, r1, #0x2 + add r1, r2, r1 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_020583E0 +FUN_020583E0: ; 0x020583E0 + mov r2, #0x4a + lsl r2, r2, #0x2 + str r1, [r0, r2] + bx lr + + thumb_func_start FUN_020583E8 +FUN_020583E8: ; 0x020583E8 + mov r1, #0x4a + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_020583F0 +FUN_020583F0: ; 0x020583F0 + str r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_020583F4 +FUN_020583F4: ; 0x020583F4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _02058402 + bl ErrorHandling +_02058402: + ldr r0, [r4, #0x14] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02058408 +FUN_02058408: ; 0x02058408 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0205840C +FUN_0205840C: ; 0x0205840C + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02058410 +FUN_02058410: ; 0x02058410 + ldr r2, [r0, #0x0] + orr r1, r2 + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02058418 +FUN_02058418: ; 0x02058418 + ldr r2, [r0, #0x0] + mvn r1, r1 + and r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058424 +FUN_02058424: ; 0x02058424 + ldr r0, [r0, #0x0] + and r0, r1 + bx lr + .balign 4 + + thumb_func_start FUN_0205842C +FUN_0205842C: ; 0x0205842C + ldr r0, [r0, #0x0] + tst r0, r1 + beq _02058436 + mov r0, #0x1 + bx lr +_02058436: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0205843C +FUN_0205843C: ; 0x0205843C + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058440 +FUN_02058440: ; 0x02058440 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058444 +FUN_02058444: ; 0x02058444 + str r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_02058448 +FUN_02058448: ; 0x02058448 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_0205844C +FUN_0205844C: ; 0x0205844C + str r1, [r0, #0xc] + bx lr + + thumb_func_start FUN_02058450 +FUN_02058450: ; 0x02058450 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_02058454 +FUN_02058454: ; 0x02058454 + str r1, [r0, #0x10] + bx lr + + thumb_func_start FUN_02058458 +FUN_02058458: ; 0x02058458 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_0205845C +FUN_0205845C: ; 0x0205845C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02058458 + add r4, r0, #0x0 + bl FUN_0205C334 + cmp r0, #0x1 + bne _02058476 + add r0, r5, #0x0 + bl FUN_0205C340 + add r4, r0, #0x0 +_02058476: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205847C +FUN_0205847C: ; 0x0205847C + str r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_02058480 +FUN_02058480: ; 0x02058480 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start FUN_02058484 +FUN_02058484: ; 0x02058484 + str r1, [r0, #0x18] + bx lr + + thumb_func_start FUN_02058488 +FUN_02058488: ; 0x02058488 + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start FUN_0205848C +FUN_0205848C: ; 0x0205848C + str r1, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02058490 +FUN_02058490: ; 0x02058490 + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02058494 +FUN_02058494: ; 0x02058494 + str r1, [r0, #0x20] + bx lr + + thumb_func_start FUN_02058498 +FUN_02058498: ; 0x02058498 + ldr r0, [r0, #0x20] + bx lr + + thumb_func_start FUN_0205849C +FUN_0205849C: ; 0x0205849C + str r1, [r0, #0x24] + bx lr + + thumb_func_start FUN_020584A0 +FUN_020584A0: ; 0x020584A0 + ldr r0, [r0, #0x24] + bx lr + + thumb_func_start FUN_020584A4 +FUN_020584A4: ; 0x020584A4 + ldr r2, [r0, #0x28] + str r2, [r0, #0x30] + str r1, [r0, #0x28] + bx lr + + thumb_func_start FUN_020584AC +FUN_020584AC: ; 0x020584AC + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x80 + add r5, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + bne _020584C2 + ldr r0, [r5, #0x28] + str r0, [r5, #0x30] + str r4, [r5, #0x28] +_020584C2: + pop {r3-r5, pc} + + thumb_func_start FUN_020584C4 +FUN_020584C4: ; 0x020584C4 + ldr r0, [r0, #0x28] + bx lr + + thumb_func_start FUN_020584C8 +FUN_020584C8: ; 0x020584C8 + ldr r0, [r0, #0x30] + bx lr + + thumb_func_start FUN_020584CC +FUN_020584CC: ; 0x020584CC + ldr r2, [r0, #0x2c] + str r2, [r0, #0x34] + str r1, [r0, #0x2c] + bx lr + + thumb_func_start FUN_020584D4 +FUN_020584D4: ; 0x020584D4 + ldr r0, [r0, #0x2c] + bx lr + + thumb_func_start FUN_020584D8 +FUN_020584D8: ; 0x020584D8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020584AC + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020584CC + pop {r3-r5, pc} + + thumb_func_start FUN_020584EC +FUN_020584EC: ; 0x020584EC + push {r3, lr} + cmp r2, #0x0 + beq _020584FC + cmp r2, #0x1 + beq _02058500 + cmp r2, #0x2 + beq _02058504 + b _02058508 +_020584FC: + str r1, [r0, #0x38] + pop {r3, pc} +_02058500: + str r1, [r0, #0x3c] + pop {r3, pc} +_02058504: + str r1, [r0, #0x40] + pop {r3, pc} +_02058508: + bl ErrorHandling + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058510 +FUN_02058510: ; 0x02058510 + push {r3, lr} + cmp r1, #0x0 + beq _02058520 + cmp r1, #0x1 + beq _02058524 + cmp r1, #0x2 + beq _02058528 + b _0205852C +_02058520: + ldr r0, [r0, #0x38] + pop {r3, pc} +_02058524: + ldr r0, [r0, #0x3c] + pop {r3, pc} +_02058528: + ldr r0, [r0, #0x40] + pop {r3, pc} +_0205852C: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02058534 +FUN_02058534: ; 0x02058534 + str r1, [r0, #0x44] + bx lr + + thumb_func_start FUN_02058538 +FUN_02058538: ; 0x02058538 + ldr r0, [r0, #0x44] + bx lr + + thumb_func_start FUN_0205853C +FUN_0205853C: ; 0x0205853C + str r1, [r0, #0x48] + bx lr + + thumb_func_start FUN_02058540 +FUN_02058540: ; 0x02058540 + ldr r0, [r0, #0x48] + bx lr + + thumb_func_start FUN_02058544 +FUN_02058544: ; 0x02058544 + add r0, #0xa0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0205854C +FUN_0205854C: ; 0x0205854C + add r0, #0xa0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058554 +FUN_02058554: ; 0x02058554 + add r0, #0xb0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0205855C +FUN_0205855C: ; 0x0205855C + add r0, #0xb0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058564 +FUN_02058564: ; 0x02058564 + push {r3, lr} + bl FUN_0205855C + bl FUN_0200CAB4 + pop {r3, pc} + + thumb_func_start FUN_02058570 +FUN_02058570: ; 0x02058570 + add r0, #0xb4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058578 +FUN_02058578: ; 0x02058578 + add r0, #0xb4 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058580 +FUN_02058580: ; 0x02058580 + ldr r3, _02058588 ; =FUN_02058360 + add r0, #0xb4 + ldr r0, [r0, #0x0] + bx r3 + .balign 4 +_02058588: .word FUN_02058360 + + thumb_func_start FUN_0205858C +FUN_0205858C: ; 0x0205858C + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x10 + ble _0205859A + bl ErrorHandling +_0205859A: + add r0, r4, #0x0 + bl FUN_020585B0 + mov r1, #0x0 + add r2, r5, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020585B0 +FUN_020585B0: ; 0x020585B0 + add r0, #0xd8 + bx lr + + thumb_func_start FUN_020585B4 +FUN_020585B4: ; 0x020585B4 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x10 + ble _020585C2 + bl ErrorHandling +_020585C2: + add r0, r4, #0x0 + bl FUN_020585D8 + mov r1, #0x0 + add r2, r5, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020585D8 +FUN_020585D8: ; 0x020585D8 + add r0, #0xe8 + bx lr + + thumb_func_start FUN_020585DC +FUN_020585DC: ; 0x020585DC + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x10 + ble _020585EA + bl ErrorHandling +_020585EA: + add r0, r4, #0x0 + bl FUN_02058600 + mov r1, #0x0 + add r2, r5, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02058600 +FUN_02058600: ; 0x02058600 + add r0, #0xf8 + bx lr + + thumb_func_start FUN_02058604 +FUN_02058604: ; 0x02058604 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + cmp r5, #0x20 + ble _02058612 + bl ErrorHandling +_02058612: + add r0, r4, #0x0 + bl FUN_02058628 + mov r1, #0x0 + add r2, r5, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02058628 +FUN_02058628: ; 0x02058628 + mov r1, #0x42 + lsl r1, r1, #0x2 + add r0, r0, r1 + bx lr + + thumb_func_start FUN_02058630 +FUN_02058630: ; 0x02058630 + add r0, #0xb8 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058638 +FUN_02058638: ; 0x02058638 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xb8 + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_02058644 +FUN_02058644: ; 0x02058644 + add r0, #0xbc + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0205864C +FUN_0205864C: ; 0x0205864C + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xbc + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_02058658 +FUN_02058658: ; 0x02058658 + add r0, #0xc0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058660 +FUN_02058660: ; 0x02058660 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xc0 + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_0205866C +FUN_0205866C: ; 0x0205866C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058480 + bl FUN_02058D14 + add r1, r0, #0x0 + ldr r1, [r1, #0x10] + add r0, r4, #0x0 + blx r1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02058684 +FUN_02058684: ; 0x02058684 + add r0, #0xc4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0205868C +FUN_0205868C: ; 0x0205868C + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xc4 + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_02058698 +FUN_02058698: ; 0x02058698 + add r0, #0xc8 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020586A0 +FUN_020586A0: ; 0x020586A0 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xc8 + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_020586AC +FUN_020586AC: ; 0x020586AC + add r0, #0xcc + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020586B4 +FUN_020586B4: ; 0x020586B4 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xcc + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_020586C0 +FUN_020586C0: ; 0x020586C0 + add r0, #0xd0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020586C8 +FUN_020586C8: ; 0x020586C8 + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xd0 + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_020586D4 +FUN_020586D4: ; 0x020586D4 + add r0, #0xd4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020586DC +FUN_020586DC: ; 0x020586DC + push {r3, lr} + add r1, r0, #0x0 + add r1, #0xd4 + ldr r1, [r1, #0x0] + blx r1 + pop {r3, pc} + + thumb_func_start FUN_020586E8 +FUN_020586E8: ; 0x020586E8 + add r0, #0xa4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020586F0 +FUN_020586F0: ; 0x020586F0 + add r0, #0xa4 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020586F8 +FUN_020586F8: ; 0x020586F8 + add r0, #0xa8 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058700 +FUN_02058700: ; 0x02058700 + add r1, r0, #0x0 + add r1, #0xa8 + ldr r1, [r1, #0x0] + add r0, #0xa8 + add r1, r1, #0x1 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058710 +FUN_02058710: ; 0x02058710 + add r0, #0xa8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058718 +FUN_02058718: ; 0x02058718 + add r0, #0xac + strh r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058720 +FUN_02058720: ; 0x02058720 + add r0, #0xac + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058728 +FUN_02058728: ; 0x02058728 + add r0, #0xae + strh r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058730 +FUN_02058730: ; 0x02058730 + add r0, #0xae + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02058738 +FUN_02058738: ; 0x02058738 + push {r3, lr} + bl FUN_02058580 + bl FUN_020583E8 + pop {r3, pc} + + thumb_func_start FUN_02058744 +FUN_02058744: ; 0x02058744 + push {r3, lr} + bl FUN_02058578 + bl FUN_0205839C + pop {r3, pc} + + thumb_func_start FUN_02058750 +FUN_02058750: ; 0x02058750 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020589CC + cmp r0, #0x1 + beq _02058760 + bl ErrorHandling +_02058760: + add r0, r4, #0x0 + bl FUN_02058490 + pop {r4, pc} + + thumb_func_start FUN_02058768 +FUN_02058768: ; 0x02058768 + ldr r3, _02058770 ; =FUN_0205837C + mov r1, #0x6 + bx r3 + nop +_02058770: .word FUN_0205837C + + thumb_func_start FUN_02058774 +FUN_02058774: ; 0x02058774 + ldr r3, _0205877C ; =FUN_02058384 + mov r1, #0x6 + bx r3 + nop +_0205877C: .word FUN_02058384 + + thumb_func_start FUN_02058780 +FUN_02058780: ; 0x02058780 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02058368 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + mov r6, #0x4a + add r5, r0, #0x0 + lsl r6, r6, #0x2 +_02058796: + add r0, r5, #0x0 + bl FUN_02058830 + cmp r0, #0x0 + beq _020587A6 + add r0, r5, #0x0 + bl FUN_02058908 +_020587A6: + add r5, r5, r6 + sub r4, r4, #0x1 + bne _02058796 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020587B0 +FUN_020587B0: ; 0x020587B0 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02058368 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + mov r6, #0x4a + add r5, r0, #0x0 + lsl r6, r6, #0x2 +_020587C6: + add r0, r5, #0x0 + bl FUN_02058830 + cmp r0, #0x0 + beq _020587D6 + add r0, r5, #0x0 + bl FUN_02058914 +_020587D6: + add r5, r5, r6 + sub r4, r4, #0x1 + bne _020587C6 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020587E0 +FUN_020587E0: ; 0x020587E0 + push {r3, lr} + mov r1, #0x1 + bl FUN_02058390 + cmp r0, #0x0 + beq _020587F0 + mov r0, #0x1 + pop {r3, pc} +_020587F0: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020587F4 +FUN_020587F4: ; 0x020587F4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02058578 + add r1, r4, #0x0 + bl FUN_02058390 + pop {r4, pc} + + thumb_func_start FUN_02058804 +FUN_02058804: ; 0x02058804 + push {r3, lr} + cmp r1, #0x0 + bne _02058812 + mov r1, #0x8 + bl FUN_0205837C + pop {r3, pc} +_02058812: + mov r1, #0x8 + bl FUN_02058384 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205881C +FUN_0205881C: ; 0x0205881C + push {r3, lr} + mov r1, #0x8 + bl FUN_02058390 + cmp r0, #0x0 + bne _0205882C + mov r0, #0x1 + pop {r3, pc} +_0205882C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02058830 +FUN_02058830: ; 0x02058830 + ldr r3, _02058838 ; =FUN_0205842C + mov r1, #0x1 + bx r3 + nop +_02058838: .word FUN_0205842C + + thumb_func_start FUN_0205883C +FUN_0205883C: ; 0x0205883C + ldr r3, _02058844 ; =FUN_02058410 + mov r1, #0x2 + bx r3 + nop +_02058844: .word FUN_02058410 + + thumb_func_start FUN_02058848 +FUN_02058848: ; 0x02058848 + ldr r3, _02058850 ; =FUN_02058418 + mov r1, #0x2 + bx r3 + nop +_02058850: .word FUN_02058418 + + thumb_func_start FUN_02058854 +FUN_02058854: ; 0x02058854 + ldr r3, _0205885C ; =FUN_0205842C + mov r1, #0x2 + bx r3 + nop +_0205885C: .word FUN_0205842C + + thumb_func_start FUN_02058860 +FUN_02058860: ; 0x02058860 + ldr r3, _02058868 ; =FUN_02058410 + mov r1, #0x4 + bx r3 + nop +_02058868: .word FUN_02058410 + + thumb_func_start FUN_0205886C +FUN_0205886C: ; 0x0205886C + ldr r3, _02058874 ; =FUN_02058418 + mov r1, #0x8 + bx r3 + nop +_02058874: .word FUN_02058418 + + thumb_func_start FUN_02058878 +FUN_02058878: ; 0x02058878 + ldr r3, _02058880 ; =FUN_02058410 + mov r1, #0x1 + lsl r1, r1, #0xe + bx r3 + .balign 4 +_02058880: .word FUN_02058410 + + thumb_func_start FUN_02058884 +FUN_02058884: ; 0x02058884 + ldr r3, _0205888C ; =FUN_0205842C + mov r1, #0x1 + lsl r1, r1, #0xe + bx r3 + .balign 4 +_0205888C: .word FUN_0205842C + + thumb_func_start FUN_02058890 +FUN_02058890: ; 0x02058890 + ldr r3, _02058898 ; =FUN_0205842C + mov r1, #0x2 + lsl r1, r1, #0x8 + bx r3 + .balign 4 +_02058898: .word FUN_0205842C + + thumb_func_start FUN_0205889C +FUN_0205889C: ; 0x0205889C + push {r3, lr} + cmp r1, #0x1 + bne _020588AC + mov r1, #0x2 + lsl r1, r1, #0x8 + bl FUN_02058410 + pop {r3, pc} +_020588AC: + mov r1, #0x2 + lsl r1, r1, #0x8 + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020588B8 +FUN_020588B8: ; 0x020588B8 + push {r3, lr} + cmp r1, #0x1 + bne _020588C8 + mov r1, #0x1 + lsl r1, r1, #0x12 + bl FUN_02058418 + pop {r3, pc} +_020588C8: + mov r1, #0x1 + lsl r1, r1, #0x12 + bl FUN_02058410 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020588D4 +FUN_020588D4: ; 0x020588D4 + push {r3, lr} + mov r1, #0x2 + lsl r1, r1, #0x12 + bl FUN_0205842C + cmp r0, #0x1 + beq _020588E6 + mov r0, #0x1 + pop {r3, pc} +_020588E6: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020588EC +FUN_020588EC: ; 0x020588EC + push {r3, lr} + cmp r1, #0x1 + bne _020588FC + mov r1, #0x2 + lsl r1, r1, #0x12 + bl FUN_02058410 + pop {r3, pc} +_020588FC: + mov r1, #0x2 + lsl r1, r1, #0x12 + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058908 +FUN_02058908: ; 0x02058908 + ldr r3, _02058910 ; =FUN_02058410 + mov r1, #0x40 + bx r3 + nop +_02058910: .word FUN_02058410 + + thumb_func_start FUN_02058914 +FUN_02058914: ; 0x02058914 + ldr r3, _0205891C ; =FUN_02058418 + mov r1, #0x40 + bx r3 + nop +_0205891C: .word FUN_02058418 + + thumb_func_start FUN_02058920 +FUN_02058920: ; 0x02058920 + push {r3, lr} + mov r1, #0x40 + bl FUN_0205842C + cmp r0, #0x1 + bne _02058930 + mov r0, #0x1 + pop {r3, pc} +_02058930: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02058934 +FUN_02058934: ; 0x02058934 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058578 + bl FUN_020587E0 + cmp r0, #0x0 + bne _02058948 + mov r0, #0x0 + pop {r4, pc} +_02058948: + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0xe + bl FUN_02058424 + cmp r0, #0x0 + beq _0205895A + mov r0, #0x1 + pop {r4, pc} +_0205895A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02058960 +FUN_02058960: ; 0x02058960 + push {r3, lr} + cmp r1, #0x1 + bne _02058970 + mov r1, #0x2 + lsl r1, r1, #0x16 + bl FUN_02058410 + pop {r3, pc} +_02058970: + mov r1, #0x2 + lsl r1, r1, #0x16 + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205897C +FUN_0205897C: ; 0x0205897C + push {r3, lr} + mov r1, #0x2 + lsl r1, r1, #0x16 + bl FUN_02058424 + cmp r0, #0x0 + beq _0205898E + mov r0, #0x1 + pop {r3, pc} +_0205898E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058994 +FUN_02058994: ; 0x02058994 + push {r3, lr} + cmp r1, #0x1 + bne _020589A4 + mov r1, #0x1 + lsl r1, r1, #0xa + bl FUN_02058410 + pop {r3, pc} +_020589A4: + mov r1, #0x1 + lsl r1, r1, #0xa + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020589B0 +FUN_020589B0: ; 0x020589B0 + push {r3, lr} + cmp r1, #0x1 + bne _020589C0 + mov r1, #0x2 + lsl r1, r1, #0x18 + bl FUN_02058410 + pop {r3, pc} +_020589C0: + mov r1, #0x2 + lsl r1, r1, #0x18 + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020589CC +FUN_020589CC: ; 0x020589CC + push {r3, lr} + mov r1, #0x2 + lsl r1, r1, #0x18 + bl FUN_02058424 + cmp r0, #0x0 + beq _020589DE + mov r0, #0x1 + pop {r3, pc} +_020589DE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020589E4 +FUN_020589E4: ; 0x020589E4 + push {r3, lr} + cmp r1, #0x1 + bne _020589F4 + mov r1, #0x1 + lsl r1, r1, #0x1a + bl FUN_02058410 + pop {r3, pc} +_020589F4: + mov r1, #0x1 + lsl r1, r1, #0x1a + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A00 +FUN_02058A00: ; 0x02058A00 + push {r3, lr} + mov r1, #0x1 + lsl r1, r1, #0x1a + bl FUN_02058424 + cmp r0, #0x0 + beq _02058A12 + mov r0, #0x1 + pop {r3, pc} +_02058A12: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A18 +FUN_02058A18: ; 0x02058A18 + push {r3, lr} + cmp r1, #0x1 + bne _02058A28 + mov r1, #0x2 + lsl r1, r1, #0x1a + bl FUN_02058410 + pop {r3, pc} +_02058A28: + mov r1, #0x2 + lsl r1, r1, #0x1a + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A34 +FUN_02058A34: ; 0x02058A34 + push {r3, lr} + mov r1, #0x2 + lsl r1, r1, #0x1a + bl FUN_02058424 + cmp r0, #0x0 + beq _02058A46 + mov r0, #0x1 + pop {r3, pc} +_02058A46: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A4C +FUN_02058A4C: ; 0x02058A4C + push {r3, lr} + cmp r1, #0x1 + bne _02058A5C + mov r1, #0x1 + lsl r1, r1, #0x1c + bl FUN_02058410 + pop {r3, pc} +_02058A5C: + mov r1, #0x1 + lsl r1, r1, #0x1c + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A68 +FUN_02058A68: ; 0x02058A68 + push {r3, lr} + mov r1, #0x1 + lsl r1, r1, #0x1c + bl FUN_02058424 + cmp r0, #0x0 + beq _02058A7A + mov r0, #0x1 + pop {r3, pc} +_02058A7A: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A80 +FUN_02058A80: ; 0x02058A80 + push {r3, lr} + cmp r1, #0x1 + bne _02058A90 + mov r1, #0x1 + lsl r1, r1, #0x18 + bl FUN_02058410 + pop {r3, pc} +_02058A90: + mov r1, #0x1 + lsl r1, r1, #0x18 + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058A9C +FUN_02058A9C: ; 0x02058A9C + push {r3, lr} + mov r1, #0x1 + lsl r1, r1, #0x18 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058AAE + mov r0, #0x1 + pop {r3, pc} +_02058AAE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058AB4 +FUN_02058AB4: ; 0x02058AB4 + push {r3, lr} + mov r1, #0x10 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058AC4 + mov r0, #0x1 + pop {r3, pc} +_02058AC4: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02058AC8 +FUN_02058AC8: ; 0x02058AC8 + push {r3, lr} + cmp r1, #0x1 + bne _02058AD8 + mov r1, #0x2 + lsl r1, r1, #0x1c + bl FUN_02058410 + pop {r3, pc} +_02058AD8: + mov r1, #0x2 + lsl r1, r1, #0x1c + bl FUN_02058418 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058AE4 +FUN_02058AE4: ; 0x02058AE4 + push {r3, lr} + mov r1, #0x2 + lsl r1, r1, #0x1c + bl FUN_02058424 + cmp r0, #0x0 + beq _02058AF6 + mov r0, #0x1 + pop {r3, pc} +_02058AF6: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058AFC +FUN_02058AFC: ; 0x02058AFC + ldr r0, [r0, #0x4c] + bx lr + + thumb_func_start FUN_02058B00 +FUN_02058B00: ; 0x02058B00 + str r1, [r0, #0x4c] + bx lr + + thumb_func_start FUN_02058B04 +FUN_02058B04: ; 0x02058B04 + ldr r0, [r0, #0x50] + bx lr + + thumb_func_start FUN_02058B08 +FUN_02058B08: ; 0x02058B08 + str r1, [r0, #0x50] + bx lr + + thumb_func_start FUN_02058B0C +FUN_02058B0C: ; 0x02058B0C + ldr r0, [r0, #0x54] + bx lr + + thumb_func_start FUN_02058B10 +FUN_02058B10: ; 0x02058B10 + str r1, [r0, #0x54] + bx lr + + thumb_func_start FUN_02058B14 +FUN_02058B14: ; 0x02058B14 + ldr r0, [r0, #0x58] + bx lr + + thumb_func_start FUN_02058B18 +FUN_02058B18: ; 0x02058B18 + str r1, [r0, #0x58] + bx lr + + thumb_func_start FUN_02058B1C +FUN_02058B1C: ; 0x02058B1C + ldr r0, [r0, #0x5c] + bx lr + + thumb_func_start FUN_02058B20 +FUN_02058B20: ; 0x02058B20 + str r1, [r0, #0x5c] + bx lr + + thumb_func_start FUN_02058B24 +FUN_02058B24: ; 0x02058B24 + ldr r0, [r0, #0x60] + bx lr + + thumb_func_start FUN_02058B28 +FUN_02058B28: ; 0x02058B28 + str r1, [r0, #0x60] + bx lr + + thumb_func_start FUN_02058B2C +FUN_02058B2C: ; 0x02058B2C + ldr r0, [r0, #0x64] + bx lr + + thumb_func_start FUN_02058B30 +FUN_02058B30: ; 0x02058B30 + str r1, [r0, #0x64] + bx lr + + thumb_func_start FUN_02058B34 +FUN_02058B34: ; 0x02058B34 + ldr r2, [r0, #0x64] + add r1, r2, r1 + str r1, [r0, #0x64] + bx lr + + thumb_func_start FUN_02058B3C +FUN_02058B3C: ; 0x02058B3C + ldr r0, [r0, #0x68] + bx lr + + thumb_func_start FUN_02058B40 +FUN_02058B40: ; 0x02058B40 + str r1, [r0, #0x68] + bx lr + + thumb_func_start FUN_02058B44 +FUN_02058B44: ; 0x02058B44 + ldr r2, [r0, #0x68] + add r1, r2, r1 + str r1, [r0, #0x68] + bx lr + + thumb_func_start FUN_02058B4C +FUN_02058B4C: ; 0x02058B4C + ldr r0, [r0, #0x6c] + bx lr + + thumb_func_start FUN_02058B50 +FUN_02058B50: ; 0x02058B50 + str r1, [r0, #0x6c] + bx lr + + thumb_func_start FUN_02058B54 +FUN_02058B54: ; 0x02058B54 + ldr r2, [r0, #0x6c] + add r1, r2, r1 + str r1, [r0, #0x6c] + bx lr + + thumb_func_start FUN_02058B5C +FUN_02058B5C: ; 0x02058B5C + add r2, r0, #0x0 + add r2, #0x70 + add r3, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_02058B6C +FUN_02058B6C: ; 0x02058B6C + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x70 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02058B7C +FUN_02058B7C: ; 0x02058B7C + add r0, #0x70 + bx lr + + thumb_func_start FUN_02058B80 +FUN_02058B80: ; 0x02058B80 + ldr r0, [r0, #0x74] + bx lr + + thumb_func_start FUN_02058B84 +FUN_02058B84: ; 0x02058B84 + add r2, r0, #0x0 + add r2, #0x7c + add r3, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_02058B94 +FUN_02058B94: ; 0x02058B94 + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x7c + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02058BA4 +FUN_02058BA4: ; 0x02058BA4 + add r2, r0, #0x0 + add r2, #0x88 + add r3, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_02058BB4 +FUN_02058BB4: ; 0x02058BB4 + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x88 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02058BC4 +FUN_02058BC4: ; 0x02058BC4 + add r2, r0, #0x0 + add r2, #0x94 + add r3, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_02058BD4 +FUN_02058BD4: ; 0x02058BD4 + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x94 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_02058BE4 +FUN_02058BE4: ; 0x02058BE4 + push {r3, lr} + bl FUN_02058B80 + asr r1, r0, #0x3 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058BF8 +FUN_02058BF8: ; 0x02058BF8 + strh r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_02058BFC +FUN_02058BFC: ; 0x02058BFC + ldrh r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02058C00 +FUN_02058C00: ; 0x02058C00 + strh r1, [r0, #0x2] + bx lr + + thumb_func_start FUN_02058C04 +FUN_02058C04: ; 0x02058C04 + ldrh r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_02058C08 +FUN_02058C08: ; 0x02058C08 + strh r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058C0C +FUN_02058C0C: ; 0x02058C0C + ldrh r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058C10 +FUN_02058C10: ; 0x02058C10 + strh r1, [r0, #0x6] + bx lr + + thumb_func_start FUN_02058C14 +FUN_02058C14: ; 0x02058C14 + ldrh r0, [r0, #0x6] + bx lr + + thumb_func_start FUN_02058C18 +FUN_02058C18: ; 0x02058C18 + strh r1, [r0, #0x8] + bx lr + + thumb_func_start FUN_02058C1C +FUN_02058C1C: ; 0x02058C1C + ldrh r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_02058C20 +FUN_02058C20: ; 0x02058C20 + strh r1, [r0, #0xa] + bx lr + + thumb_func_start FUN_02058C24 +FUN_02058C24: ; 0x02058C24 + ldrh r0, [r0, #0xa] + bx lr + + thumb_func_start FUN_02058C28 +FUN_02058C28: ; 0x02058C28 + strh r1, [r0, #0xc] + bx lr + + thumb_func_start FUN_02058C2C +FUN_02058C2C: ; 0x02058C2C + mov r1, #0xc + ldrsh r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_02058C34 +FUN_02058C34: ; 0x02058C34 + push {r3, lr} + cmp r2, #0x0 + beq _02058C44 + cmp r2, #0x1 + beq _02058C48 + cmp r2, #0x2 + beq _02058C4C + b _02058C50 +_02058C44: + strh r1, [r0, #0xe] + pop {r3, pc} +_02058C48: + strh r1, [r0, #0x10] + pop {r3, pc} +_02058C4C: + strh r1, [r0, #0x12] + pop {r3, pc} +_02058C50: + bl ErrorHandling + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02058C58 +FUN_02058C58: ; 0x02058C58 + push {r3, lr} + cmp r1, #0x0 + beq _02058C68 + cmp r1, #0x1 + beq _02058C6C + cmp r1, #0x2 + beq _02058C70 + b _02058C74 +_02058C68: + ldrh r0, [r0, #0xe] + pop {r3, pc} +_02058C6C: + ldrh r0, [r0, #0x10] + pop {r3, pc} +_02058C70: + ldrh r0, [r0, #0x12] + pop {r3, pc} +_02058C74: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02058C7C +FUN_02058C7C: ; 0x02058C7C + strh r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_02058C80 +FUN_02058C80: ; 0x02058C80 + mov r1, #0x14 + ldrsh r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_02058C88 +FUN_02058C88: ; 0x02058C88 + strh r1, [r0, #0x16] + bx lr + + thumb_func_start FUN_02058C8C +FUN_02058C8C: ; 0x02058C8C + mov r1, #0x16 + ldrsh r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_02058C94 +FUN_02058C94: ; 0x02058C94 + strh r1, [r0, #0x18] + bx lr + + thumb_func_start FUN_02058C98 +FUN_02058C98: ; 0x02058C98 + ldrh r0, [r0, #0x18] + bx lr + + thumb_func_start FUN_02058C9C +FUN_02058C9C: ; 0x02058C9C + str r1, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02058CA0 +FUN_02058CA0: ; 0x02058CA0 + ldr r0, [r0, #0x1c] + bx lr + + thumb_func_start FUN_02058CA4 +FUN_02058CA4: ; 0x02058CA4 + strh r1, [r0, #0x1a] + bx lr + + thumb_func_start FUN_02058CA8 +FUN_02058CA8: ; 0x02058CA8 + ldrh r0, [r0, #0x1a] + bx lr + + thumb_func_start FUN_02058CAC +FUN_02058CAC: ; 0x02058CAC + push {r3-r7, lr} + add r6, r0, #0x0 + add r7, r1, #0x0 + str r2, [sp, #0x0] + mov r4, #0x0 + add r5, r2, #0x0 +_02058CB8: + add r0, r5, #0x0 + bl FUN_02058CE0 + cmp r0, #0x0 + bne _02058CD4 + add r0, r5, #0x0 + bl FUN_02058BFC + cmp r6, r0 + bne _02058CD4 + ldr r0, [sp, #0x0] + lsl r1, r4, #0x5 + add r0, r0, r1 + pop {r3-r7, pc} +_02058CD4: + add r4, r4, #0x1 + add r5, #0x20 + cmp r4, r7 + blt _02058CB8 + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02058CE0 +FUN_02058CE0: ; 0x02058CE0 + push {r3, lr} + bl FUN_02058C24 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, _02058CF8 ; =0x0000FFFF + cmp r1, r0 + bne _02058CF4 + mov r0, #0x1 + pop {r3, pc} +_02058CF4: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02058CF8: .word 0x0000FFFF + + thumb_func_start FUN_02058CFC +FUN_02058CFC: ; 0x02058CFC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058CE0 + cmp r0, #0x1 + beq _02058D0C + bl ErrorHandling +_02058D0C: + add r0, r4, #0x0 + bl FUN_02058C1C + pop {r4, pc} + + thumb_func_start FUN_02058D14 +FUN_02058D14: ; 0x02058D14 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x37 + blo _02058D20 + bl ErrorHandling +_02058D20: + ldr r0, _02058D28 ; =0x020F6364 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02058D28: .word 0x020F6364 + + thumb_func_start FUN_02058D2C +FUN_02058D2C: ; 0x02058D2C + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058D30 +FUN_02058D30: ; 0x02058D30 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_02058D34 +FUN_02058D34: ; 0x02058D34 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_02058D38 +FUN_02058D38: ; 0x02058D38 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02058D3C +FUN_02058D3C: ; 0x02058D3C + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02058D40 +FUN_02058D40: ; 0x02058D40 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_02058D44 +FUN_02058D44: ; 0x02058D44 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_02058D48 +FUN_02058D48: ; 0x02058D48 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_02058D4C +FUN_02058D4C: ; 0x02058D4C + push {r3, lr} + ldr r3, _02058D6C ; =0x021F9494 + ldr r1, _02058D70 ; =0x0000FFFF +_02058D52: + ldr r2, [r3, #0x0] + cmp r2, r0 + bne _02058D5C + ldr r0, [r3, #0x4] + pop {r3, pc} +_02058D5C: + add r3, #0x8 + ldr r2, [r3, #0x0] + cmp r2, r1 + bne _02058D52 + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02058D6C: .word 0x021F9494 +_02058D70: .word 0x0000FFFF + + thumb_func_start FUN_02058D74 +FUN_02058D74: ; 0x02058D74 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02058368 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020583CC + add r5, r0, #0x0 +_02058D8A: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058DAE + add r0, r5, #0x0 + bl FUN_02058B2C + cmp r6, r0 + bne _02058DAE + add r0, r5, #0x0 + bl FUN_02058B4C + cmp r7, r0 + bne _02058DAE + add r0, r5, #0x0 + pop {r3-r7, pc} +_02058DAE: + mov r0, #0x4a + lsl r0, r0, #0x2 + add r5, r5, r0 + sub r4, r4, #0x1 + bne _02058D8A + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02058DBC +FUN_02058DBC: ; 0x02058DBC + push {r4-r6, lr} + add r4, r1, #0x0 + ldr r1, [r4, #0x0] + add r6, r2, #0x0 + asr r2, r1, #0x4 + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + add r5, r0, #0x0 + bl FUN_02058B30 + ldr r1, [r4, #0x4] + add r0, r5, #0x0 + asr r2, r1, #0x3 + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + bl FUN_02058B40 + ldr r1, [r4, #0x8] + add r0, r5, #0x0 + asr r2, r1, #0x4 + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + bl FUN_02058B50 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02058B6C + add r0, r5, #0x0 + bl FUN_02059C60 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584A4 + add r0, r5, #0x0 + bl FUN_0205AE80 + add r0, r5, #0x0 + mov r1, #0x4 + bl FUN_02058410 + add r0, r5, #0x0 + mov r1, #0xa + bl FUN_02058418 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02058E28 +FUN_02058E28: ; 0x02058E28 + push {r3-r6, lr} + sub sp, #0xc + add r4, r2, #0x0 + mov r2, #0x2 + add r6, r3, #0x0 + lsl r3, r1, #0x10 + lsl r2, r2, #0xe + add r2, r3, r2 + add r5, r0, #0x0 + str r2, [sp, #0x0] + bl FUN_02058B30 + lsl r0, r4, #0xf + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02058B40 + mov r0, #0x2 + lsl r1, r6, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02058B50 + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02058B6C + add r0, r5, #0x0 + bl FUN_02059C60 + ldr r1, [sp, #0x20] + add r0, r5, #0x0 + bl FUN_020584A4 + add r0, r5, #0x0 + mov r1, #0x4 + bl FUN_02058410 + add r0, r5, #0x0 + mov r1, #0xa + bl FUN_02058418 + add r0, r5, #0x0 + bl FUN_0205AE80 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02058E90 +FUN_02058E90: ; 0x02058E90 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02058660 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205847C + add r0, r5, #0x0 + bl FUN_02057EE0 + add r0, r5, #0x0 + bl FUN_02058EE8 + pop {r3-r5, pc} + + thumb_func_start FUN_02058EB0 +FUN_02058EB0: ; 0x02058EB0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058444 + add r0, r4, #0x0 + bl FUN_02058860 + add r0, r4, #0x0 + bl FUN_0205815C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02058EC8 +FUN_02058EC8: ; 0x02058EC8 + bx lr + .balign 4 + + thumb_func_start FUN_02058ECC +FUN_02058ECC: ; 0x02058ECC + bx lr + .balign 4 + + thumb_func_start FUN_02058ED0 +FUN_02058ED0: ; 0x02058ED0 + bx lr + .balign 4 + + thumb_func_start FUN_02058ED4 +FUN_02058ED4: ; 0x02058ED4 + bx lr + .balign 4 + + thumb_func_start FUN_02058ED8 +FUN_02058ED8: ; 0x02058ED8 + bx lr + .balign 4 + + thumb_func_start FUN_02058EDC +FUN_02058EDC: ; 0x02058EDC + bx lr + .balign 4 + + thumb_func_start FUN_02058EE0 +FUN_02058EE0: ; 0x02058EE0 + bx lr + .balign 4 + + thumb_func_start FUN_02058EE4 +FUN_02058EE4: ; 0x02058EE4 + bx lr + .balign 4 + + thumb_func_start FUN_02058EE8 +FUN_02058EE8: ; 0x02058EE8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058638 + add r0, r4, #0x0 + bl FUN_0205BEF8 + pop {r4, pc} + + thumb_func_start FUN_02058EF8 +FUN_02058EF8: ; 0x02058EF8 + push {r4, lr} + mov r1, #0x2 + add r4, r0, #0x0 + bl FUN_020587F4 + cmp r0, #0x0 + bne _02058F5C + add r0, r4, #0x0 + bl FUN_02058F94 + add r0, r4, #0x0 + bl FUN_02058FAC + add r0, r4, #0x0 + bl FUN_02058FD0 + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058F2C + add r0, r4, #0x0 + bl FUN_0205B058 + b _02058F50 +_02058F2C: + add r0, r4, #0x0 + bl FUN_02058920 + cmp r0, #0x0 + bne _02058F50 + add r0, r4, #0x0 + bl FUN_02058F60 + cmp r0, #0x1 + bne _02058F50 + add r0, r4, #0x0 + bl FUN_0205BF00 + cmp r0, #0x0 + bne _02058F50 + add r0, r4, #0x0 + bl FUN_0205864C +_02058F50: + add r0, r4, #0x0 + bl FUN_02058FF4 + add r0, r4, #0x0 + bl FUN_0205902C +_02058F5C: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02058F60 +FUN_02058F60: ; 0x02058F60 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058854 + cmp r0, #0x1 + bne _02058F70 + mov r0, #0x1 + pop {r4, pc} +_02058F70: + mov r1, #0x6 + add r0, r4, #0x0 + lsl r1, r1, #0xa + bl FUN_02058424 + cmp r0, #0x0 + bne _02058F82 + mov r0, #0x1 + pop {r4, pc} +_02058F82: + add r0, r4, #0x0 + bl FUN_02058480 + cmp r0, #0x32 + bne _02058F90 + mov r0, #0x1 + pop {r4, pc} +_02058F90: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02058F94 +FUN_02058F94: ; 0x02058F94 + push {r4, lr} + mov r1, #0x1 + lsl r1, r1, #0xc + add r4, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058FAA + add r0, r4, #0x0 + bl FUN_02059D1C +_02058FAA: + pop {r4, pc} + + thumb_func_start FUN_02058FAC +FUN_02058FAC: ; 0x02058FAC + push {r4, lr} + mov r1, #0x2 + lsl r1, r1, #0xa + add r4, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058FCC + add r0, r4, #0x0 + bl FUN_02059DB4 + cmp r0, #0x1 + bne _02058FCC + add r0, r4, #0x0 + bl FUN_02058860 +_02058FCC: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02058FD0 +FUN_02058FD0: ; 0x02058FD0 + push {r4, lr} + mov r1, #0x4 + add r4, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + beq _02058FE4 + add r0, r4, #0x0 + bl FUN_02059064 +_02058FE4: + ldr r1, _02058FF0 ; =0x00010004 + add r0, r4, #0x0 + bl FUN_02058418 + pop {r4, pc} + nop +_02058FF0: .word 0x00010004 + + thumb_func_start FUN_02058FF4 +FUN_02058FF4: ; 0x02058FF4 + push {r4, lr} + mov r1, #0x1 + lsl r1, r1, #0x10 + add r4, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + beq _0205900C + add r0, r4, #0x0 + bl FUN_020591A8 + b _0205901E +_0205900C: + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02058424 + cmp r0, #0x0 + beq _0205901E + add r0, r4, #0x0 + bl FUN_020590F4 +_0205901E: + ldr r1, _02059028 ; =0x00010004 + add r0, r4, #0x0 + bl FUN_02058418 + pop {r4, pc} + .balign 4 +_02059028: .word 0x00010004 + + thumb_func_start FUN_0205902C +FUN_0205902C: ; 0x0205902C + push {r4, lr} + mov r1, #0x2 + lsl r1, r1, #0x10 + add r4, r0, #0x0 + bl FUN_02058424 + cmp r0, #0x0 + beq _02059044 + add r0, r4, #0x0 + bl FUN_0205928C + b _02059056 +_02059044: + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_02058424 + cmp r0, #0x0 + beq _02059056 + add r0, r4, #0x0 + bl FUN_02059214 +_02059056: + ldr r1, _02059060 ; =0x00020008 + add r0, r4, #0x0 + bl FUN_02058418 + pop {r4, pc} + .balign 4 +_02059060: .word 0x00020008 + + thumb_func_start FUN_02059064 +FUN_02059064: ; 0x02059064 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02059DB4 + add r0, r5, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _020590F2 + add r0, r5, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0x0 + bl FUN_02058730 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + bl FUN_021F1DC8 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059838 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205941C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020594C0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059500 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205931C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059678 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020596A8 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020597A8 +_020590F2: + pop {r3-r7, pc} + + thumb_func_start FUN_020590F4 +FUN_020590F4: ; 0x020590F4 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02059DB4 + add r0, r5, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _020591A6 + add r0, r5, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0x0 + bl FUN_02058730 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + bl FUN_021F1DC8 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059838 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059434 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205944C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020594C0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059508 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059690 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020596C0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020596D8 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059740 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020597A8 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059870 +_020591A6: + pop {r3-r7, pc} + + thumb_func_start FUN_020591A8 +FUN_020591A8: ; 0x020591A8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02059DB4 + add r0, r5, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _02059212 + add r0, r5, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0x0 + bl FUN_02058730 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + bl FUN_021F1DC8 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059838 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059508 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020597A8 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020594F4 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059870 +_02059212: + pop {r3-r7, pc} + + thumb_func_start FUN_02059214 +FUN_02059214: ; 0x02059214 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02059DB4 + add r0, r5, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _0205928A + add r0, r5, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0x0 + bl FUN_02058730 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + bl FUN_021F1DC8 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205931C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205970C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059774 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020594C0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059804 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020595A4 +_0205928A: + pop {r3-r7, pc} + + thumb_func_start FUN_0205928C +FUN_0205928C: ; 0x0205928C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02059DB4 + add r0, r5, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _0205931A + add r0, r5, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r5, #0x0 + bl FUN_02058730 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + bl FUN_021F1DC8 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205931C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205970C + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059774 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020594C0 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059804 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020595A4 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_02059434 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205962C +_0205931A: + pop {r3-r7, pc} + + thumb_func_start FUN_0205931C +FUN_0205931C: ; 0x0205931C + push {r3-r5, lr} + sub sp, #0x48 + add r4, r0, #0x0 + add r5, r1, #0x0 + bl FUN_02058A34 + cmp r0, #0x0 + bne _020593F4 + add r0, r5, #0x0 + bl FUN_02054984 + cmp r0, #0x1 + beq _02059340 + add r0, r5, #0x0 + bl FUN_020549A0 + cmp r0, #0x1 + bne _0205935A +_02059340: + ldr r5, _02059408 ; =0x020F65FC + add r3, sp, #0x3c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058BD4 + add sp, #0x48 + pop {r3-r5, pc} +_0205935A: + add r0, r5, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + beq _0205936E + add r0, r5, #0x0 + bl FUN_02054990 + cmp r0, #0x1 + bne _02059388 +_0205936E: + ldr r5, _0205940C ; =0x020F6608 + add r3, sp, #0x30 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058BD4 + add sp, #0x48 + pop {r3-r5, pc} +_02059388: + add r0, r5, #0x0 + bl FUN_020549F0 + cmp r0, #0x1 + bne _020593AC + ldr r5, _02059410 ; =0x020F65E4 + add r3, sp, #0x24 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058BD4 + add sp, #0x48 + pop {r3-r5, pc} +_020593AC: + add r0, r5, #0x0 + bl FUN_020549E4 + cmp r0, #0x1 + bne _020593D0 + ldr r5, _02059414 ; =0x020F65F0 + add r3, sp, #0x18 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058BD4 + add sp, #0x48 + pop {r3-r5, pc} +_020593D0: + add r0, r5, #0x0 + bl FUN_020549D8 + cmp r0, #0x1 + bne _020593F4 + ldr r5, _02059418 ; =0x020F6614 + add r3, sp, #0xc + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058BD4 + add sp, #0x48 + pop {r3-r5, pc} +_020593F4: + add r1, sp, #0x0 + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + add r0, r4, #0x0 + bl FUN_02058BD4 + add sp, #0x48 + pop {r3-r5, pc} + .balign 4 +_02059408: .word 0x020F65FC +_0205940C: .word 0x020F6608 +_02059410: .word 0x020F65E4 +_02059414: .word 0x020F65F0 +_02059418: .word 0x020F6614 + + thumb_func_start FUN_0205941C +FUN_0205941C: ; 0x0205941C + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0205478C + cmp r0, #0x1 + bne _02059432 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0224B568 +_02059432: + pop {r4, pc} + + thumb_func_start FUN_02059434 +FUN_02059434: ; 0x02059434 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0205478C + cmp r0, #0x1 + bne _0205944A + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0224B568 +_0205944A: + pop {r4, pc} + + thumb_func_start FUN_0205944C +FUN_0205944C: ; 0x0205944C + push {r4-r6, lr} + add r6, r3, #0x0 + ldr r1, [r6, #0x4] + add r5, r0, #0x0 + lsl r1, r1, #0x16 + add r4, r2, #0x0 + lsr r1, r1, #0x1c + beq _020594BC + add r1, r4, #0x0 + bl FUN_02059AF8 + cmp r0, #0x1 + bne _02059484 + ldr r0, [r6, #0x4] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1c + cmp r0, #0x1 + bne _02059478 + add r0, r5, #0x0 + bl FUN_02249E6C + pop {r4-r6, pc} +_02059478: + cmp r0, #0x2 + bne _020594BC + add r0, r5, #0x0 + bl FUN_02249E78 + pop {r4-r6, pc} +_02059484: + add r0, r4, #0x0 + bl FUN_020549E4 + cmp r0, #0x1 + beq _020594A2 + add r0, r4, #0x0 + bl FUN_020549F0 + cmp r0, #0x1 + beq _020594A2 + add r0, r4, #0x0 + bl FUN_020549D8 + cmp r0, #0x0 + beq _020594AA +_020594A2: + add r0, r5, #0x0 + bl FUN_02249E90 + pop {r4-r6, pc} +_020594AA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059B60 + cmp r0, #0x1 + bne _020594BC + add r0, r5, #0x0 + bl FUN_02249E84 +_020594BC: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020594C0 +FUN_020594C0: ; 0x020594C0 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0205483C + cmp r0, #0x1 + bne _020594EA + add r0, r4, #0x0 + bl FUN_02058A00 + cmp r0, #0x0 + bne _020594F2 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0224B9E0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020589E4 + pop {r4, pc} +_020594EA: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020589E4 +_020594F2: + pop {r4, pc} + + thumb_func_start FUN_020594F4 +FUN_020594F4: ; 0x020594F4 + ldr r3, _020594FC ; =FUN_020589E4 + mov r1, #0x0 + bx r3 + nop +_020594FC: .word FUN_020589E4 + + thumb_func_start FUN_02059500 +FUN_02059500: ; 0x02059500 + push {r3, lr} + bl FUN_02059508 + pop {r3, pc} + + thumb_func_start FUN_02059508 +FUN_02059508: ; 0x02059508 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r3, #0x0 + bl FUN_02058578 + bl FUN_0205881C + cmp r0, #0x0 + beq _020595A2 + ldr r0, [r6, #0x4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + beq _020595A2 + add r0, r4, #0x0 + bl FUN_0205478C + cmp r0, #0x1 + beq _02059578 + add r0, r4, #0x0 + bl FUN_02054798 + cmp r0, #0x1 + beq _02059578 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059AC4 + cmp r0, #0x1 + beq _02059578 + add r0, r4, #0x0 + bl FUN_02054AF0 + cmp r0, #0x1 + beq _02059578 + add r0, r4, #0x0 + bl FUN_0205483C + cmp r0, #0x1 + beq _02059578 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059B2C + cmp r0, #0x1 + beq _02059578 + add r0, r4, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + beq _02059578 + add r0, r4, #0x0 + bl FUN_02054990 + cmp r0, #0x1 + bne _02059584 +_02059578: + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r4-r6, pc} +_02059584: + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0xe + bl FUN_02058424 + cmp r0, #0x0 + bne _020595A2 + add r0, r5, #0x0 + bl FUN_02249508 + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0xe + bl FUN_02058410 +_020595A2: + pop {r4-r6, pc} + + thumb_func_start FUN_020595A4 +FUN_020595A4: ; 0x020595A4 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r3, #0x0 + bl FUN_02058578 + bl FUN_0205881C + cmp r0, #0x0 + beq _0205962A + ldr r0, [r6, #0x4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + beq _0205962A + add r0, r4, #0x0 + bl FUN_0205478C + cmp r0, #0x1 + beq _02059614 + add r0, r4, #0x0 + bl FUN_02054798 + cmp r0, #0x1 + beq _02059614 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059AC4 + cmp r0, #0x1 + beq _02059614 + add r0, r4, #0x0 + bl FUN_02054AF0 + cmp r0, #0x1 + beq _02059614 + add r0, r4, #0x0 + bl FUN_0205483C + cmp r0, #0x1 + beq _02059614 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059B2C + cmp r0, #0x1 + beq _02059614 + add r0, r4, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + beq _02059614 + add r0, r4, #0x0 + bl FUN_02054990 + cmp r0, #0x1 + bne _02059620 +_02059614: + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r4-r6, pc} +_02059620: + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_0205962A: + pop {r4-r6, pc} + + thumb_func_start FUN_0205962C +FUN_0205962C: ; 0x0205962C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02059AC4 + cmp r0, #0x1 + beq _02059674 + add r0, r4, #0x0 + bl FUN_0205483C + cmp r0, #0x1 + beq _02059674 + add r0, r4, #0x0 + bl FUN_020548F0 + cmp r0, #0x1 + beq _02059674 + add r0, r4, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + beq _02059674 + add r0, r4, #0x0 + bl FUN_02054990 + cmp r0, #0x1 + beq _02059674 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059B2C + cmp r0, #0x1 + beq _02059674 + add r0, r5, #0x0 + bl FUN_0224BBEC +_02059674: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02059678 +FUN_02059678: ; 0x02059678 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02054798 + cmp r0, #0x1 + bne _0205968E + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0224BD90 +_0205968E: + pop {r4, pc} + + thumb_func_start FUN_02059690 +FUN_02059690: ; 0x02059690 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02054798 + cmp r0, #0x1 + bne _020596A6 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0224BD90 +_020596A6: + pop {r4, pc} + + thumb_func_start FUN_020596A8 +FUN_020596A8: ; 0x020596A8 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02054990 + cmp r0, #0x1 + bne _020596BE + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0224C038 +_020596BE: + pop {r4, pc} + + thumb_func_start FUN_020596C0 +FUN_020596C0: ; 0x020596C0 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02054990 + cmp r0, #0x1 + bne _020596D6 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0224C038 +_020596D6: + pop {r4, pc} + + thumb_func_start FUN_020596D8 +FUN_020596D8: ; 0x020596D8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + bl FUN_02054AF0 + cmp r0, #0x1 + bne _02059708 + add r0, r5, #0x0 + bl FUN_02058B14 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B1C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B24 + add r3, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0224B124 +_02059708: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205970C +FUN_0205970C: ; 0x0205970C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02054AF0 + cmp r0, #0x1 + bne _0205973C + add r0, r5, #0x0 + bl FUN_02058B2C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B3C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + add r3, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0224B124 +_0205973C: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02059740 +FUN_02059740: ; 0x02059740 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r2, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + bne _02059770 + add r0, r5, #0x0 + bl FUN_02058B14 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B1C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B24 + add r3, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0224B2C4 +_02059770: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02059774 +FUN_02059774: ; 0x02059774 + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02054974 + cmp r0, #0x1 + bne _020597A4 + add r0, r5, #0x0 + bl FUN_02058B2C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B3C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + add r3, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0224B2C4 +_020597A4: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020597A8 +FUN_020597A8: ; 0x020597A8 + push {r4-r6, lr} + add r6, r1, #0x0 + ldr r1, [r3, #0x4] + add r5, r0, #0x0 + lsl r1, r1, #0x14 + lsr r1, r1, #0x1e + beq _02059802 + mov r1, #0x1 + bl FUN_02059C90 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + add r0, r5, #0x0 + bl FUN_02058A9C + cmp r0, #0x0 + bne _02059802 + add r0, r4, #0x0 + bl FUN_02054B20 + cmp r0, #0x1 + beq _020597DE + add r0, r6, #0x0 + bl FUN_02054B20 + cmp r0, #0x1 + bne _02059802 +_020597DE: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058A80 + add r0, r4, #0x0 + bl FUN_02054AF0 + cmp r0, #0x1 + bne _020597FA + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_022497E8 + pop {r4-r6, pc} +_020597FA: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_022497E8 +_02059802: + pop {r4-r6, pc} + + thumb_func_start FUN_02059804 +FUN_02059804: ; 0x02059804 + push {r4, lr} + ldr r1, [r3, #0x4] + add r4, r0, #0x0 + lsl r1, r1, #0x14 + lsr r1, r1, #0x1e + beq _02059834 + bl FUN_02058A9C + cmp r0, #0x0 + beq _02059834 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02059C90 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B20 + cmp r0, #0x0 + bne _02059834 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058A80 +_02059834: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02059838 +FUN_02059838: ; 0x02059838 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02054B6C + cmp r0, #0x1 + bne _02059852 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058A4C + pop {r3-r5, pc} +_02059852: + add r0, r5, #0x0 + bl FUN_02058A68 + cmp r0, #0x1 + bne _0205986E + add r0, r4, #0x0 + bl FUN_02054B78 + cmp r0, #0x0 + bne _0205986E + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058A4C +_0205986E: + pop {r3-r5, pc} + + thumb_func_start FUN_02059870 +FUN_02059870: ; 0x02059870 + bx lr + .balign 4 + + thumb_func_start FUN_02059874 +FUN_02059874: ; 0x02059874 + push {r3-r7, lr} + sub sp, #0x10 + ldr r7, [sp, #0x28] + add r5, r2, #0x0 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + add r2, r3, #0x0 + add r1, r5, #0x0 + add r3, r7, #0x0 + add r6, r0, #0x0 + mov r4, #0x0 + bl FUN_02059A08 + cmp r0, #0x1 + bne _02059896 + mov r0, #0x1 + orr r4, r0 +_02059896: + add r0, r6, #0x0 + bl FUN_02058738 + add r1, sp, #0xc + str r1, [sp, #0x0] + ldr r1, [sp, #0x4] + add r2, r5, #0x0 + add r3, r7, #0x0 + bl FUN_0204A770 + cmp r0, #0x1 + bne _020598C0 + mov r0, #0x2 + orr r4, r0 + add r1, sp, #0xc + mov r0, #0x0 + ldrsb r0, [r1, r0] + cmp r0, #0x0 + beq _020598C0 + mov r0, #0x8 + orr r4, r0 +_020598C0: + ldr r3, [sp, #0x2c] + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r7, #0x0 + bl FUN_02059A60 + cmp r0, #0x1 + bne _020598D4 + mov r0, #0x2 + orr r4, r0 +_020598D4: + ldr r2, [sp, #0x8] + add r0, r6, #0x0 + add r1, r5, #0x0 + add r3, r7, #0x0 + bl FUN_0205995C + cmp r0, #0x1 + bne _020598E8 + mov r0, #0x4 + orr r4, r0 +_020598E8: + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020598F0 +FUN_020598F0: ; 0x020598F0 + push {r4-r7, lr} + sub sp, #0x14 + add r6, r1, #0x0 + add r1, sp, #0x8 + add r5, r0, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02058B5C + ldr r0, [sp, #0x28] + str r4, [sp, #0x0] + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, sp, #0x8 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_02059874 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_02059918 +FUN_02059918: ; 0x02059918 + push {r4-r7, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B3C + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B4C + str r0, [sp, #0x8] + add r0, r4, #0x0 + bl FUN_02059C00 + str r4, [sp, #0x0] + add r3, r0, #0x0 + ldr r4, [sp, #0x8] + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + add r1, r6, r7 + add r3, r4, r3 + bl FUN_020598F0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205995C +FUN_0205995C: ; 0x0205995C + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02058578 + add r7, r0, #0x0 + bl FUN_020583BC + str r0, [sp, #0x8] + add r0, r7, #0x0 + bl FUN_02058368 + str r0, [sp, #0x4] +_0205997C: + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x0] + cmp r0, r1 + beq _020599F4 + mov r1, #0x1 + bl FUN_02058424 + cmp r0, #0x0 + beq _020599F4 + mov r1, #0x1 + ldr r0, [sp, #0x8] + lsl r1, r1, #0x12 + bl FUN_02058424 + cmp r0, #0x0 + bne _020599F4 + ldr r0, [sp, #0x8] + bl FUN_02058B2C + add r7, r0, #0x0 + ldr r0, [sp, #0x8] + bl FUN_02058B4C + cmp r7, r5 + bne _020599C8 + cmp r0, r6 + bne _020599C8 + ldr r0, [sp, #0x8] + bl FUN_02058B3C + sub r0, r0, r4 + bpl _020599BE + neg r0, r0 +_020599BE: + cmp r0, #0x2 + bge _020599C8 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_020599C8: + ldr r0, [sp, #0x8] + bl FUN_02058B14 + add r7, r0, #0x0 + ldr r0, [sp, #0x8] + bl FUN_02058B24 + cmp r7, r5 + bne _020599F4 + cmp r0, r6 + bne _020599F4 + ldr r0, [sp, #0x8] + bl FUN_02058B3C + sub r0, r0, r4 + bpl _020599EA + neg r0, r0 +_020599EA: + cmp r0, #0x2 + bge _020599F4 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_020599F4: + add r0, sp, #0x8 + bl FUN_020583D4 + ldr r0, [sp, #0x4] + sub r0, r0, #0x1 + str r0, [sp, #0x4] + bne _0205997C + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02059A08 +FUN_02059A08: ; 0x02059A08 + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r4, r3, #0x0 + bl FUN_02058AFC + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02058538 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02059A34 + add r1, r7, r0 + sub r0, r7, r0 + cmp r0, r5 + bgt _02059A30 + cmp r1, r5 + bge _02059A34 +_02059A30: + mov r0, #0x1 + pop {r3-r7, pc} +_02059A34: + add r0, r6, #0x0 + bl FUN_02058B0C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02058540 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02059A5A + add r1, r5, r0 + sub r0, r5, r0 + cmp r0, r4 + bgt _02059A56 + cmp r1, r4 + bge _02059A5A +_02059A56: + mov r0, #0x1 + pop {r3-r7, pc} +_02059A5A: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02059A60 +FUN_02059A60: ; 0x02059A60 + push {r3-r7, lr} + add r4, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + add r5, r3, #0x0 + bl FUN_02058738 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02058720 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6E0 + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r5, r0 + bne _02059A92 + bl ErrorHandling +_02059A92: + cmp r5, #0x4 + blt _02059A9A + bl ErrorHandling +_02059A9A: + ldr r1, _02059ABC ; =0x020F6630 + lsl r5, r5, #0x2 + ldr r1, [r1, r5] + add r0, r4, #0x0 + blx r1 + cmp r0, #0x1 + beq _02059AB4 + ldr r1, _02059AC0 ; =0x020F6640 + add r0, r6, #0x0 + ldr r1, [r1, r5] + blx r1 + cmp r0, #0x1 + bne _02059AB8 +_02059AB4: + mov r0, #0x1 + pop {r3-r7, pc} +_02059AB8: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02059ABC: .word 0x020F6630 +_02059AC0: .word 0x020F6640 + + thumb_func_start FUN_02059AC4 +FUN_02059AC4: ; 0x02059AC4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B8C + cmp r0, #0x0 + beq _02059AE4 + add r0, r5, #0x0 + bl FUN_02058A68 + cmp r0, #0x0 + bne _02059AF4 + mov r0, #0x1 + pop {r3-r5, pc} +_02059AE4: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_0205481C + cmp r0, #0x0 + beq _02059AF4 + mov r0, #0x1 + pop {r3-r5, pc} +_02059AF4: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02059AF8 +FUN_02059AF8: ; 0x02059AF8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054BB0 + cmp r0, #0x0 + beq _02059B18 + add r0, r5, #0x0 + bl FUN_02058A68 + cmp r0, #0x0 + bne _02059B28 + mov r0, #0x1 + pop {r3-r5, pc} +_02059B18: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054830 + cmp r0, #0x0 + beq _02059B28 + mov r0, #0x1 + pop {r3-r5, pc} +_02059B28: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02059B2C +FUN_02059B2C: ; 0x02059B2C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054BD4 + cmp r0, #0x0 + beq _02059B4C + add r0, r5, #0x0 + bl FUN_02058A68 + cmp r0, #0x0 + bne _02059B5C + mov r0, #0x1 + pop {r3-r5, pc} +_02059B4C: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_020549AC + cmp r0, #0x0 + beq _02059B5C + mov r0, #0x1 + pop {r3-r5, pc} +_02059B5C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02059B60 +FUN_02059B60: ; 0x02059B60 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054BD4 + cmp r0, #0x0 + beq _02059B80 + add r0, r5, #0x0 + bl FUN_02058A68 + cmp r0, #0x0 + bne _02059B90 + mov r0, #0x1 + pop {r3-r5, pc} +_02059B80: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_020549CC + cmp r0, #0x0 + beq _02059B90 + mov r0, #0x1 + pop {r3-r5, pc} +_02059B90: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02059B94 +FUN_02059B94: ; 0x02059B94 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02058A68 + cmp r0, #0x1 + bne _02059BB0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B78 + cmp r0, #0x1 + bne _02059BB0 + mov r0, #0x1 + pop {r4, pc} +_02059BB0: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02059BB4 +FUN_02059BB4: ; 0x02059BB4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02058A68 + cmp r0, #0x1 + bne _02059BD0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054BE0 + cmp r0, #0x1 + bne _02059BD0 + mov r0, #0x1 + pop {r4, pc} +_02059BD0: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02059BD4 +FUN_02059BD4: ; 0x02059BD4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02058A68 + cmp r0, #0x1 + bne _02059BF0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054BF4 + cmp r0, #0x1 + bne _02059BF0 + mov r0, #0x1 + pop {r4, pc} +_02059BF0: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02059BF4 +FUN_02059BF4: ; 0x02059BF4 + lsl r1, r0, #0x2 + ldr r0, _02059BFC ; =0x020F6620 + ldr r0, [r0, r1] + bx lr + .balign 4 +_02059BFC: .word 0x020F6620 + + thumb_func_start FUN_02059C00 +FUN_02059C00: ; 0x02059C00 + lsl r1, r0, #0x2 + ldr r0, _02059C08 ; =0x020F6650 + ldr r0, [r0, r1] + bx lr + .balign 4 +_02059C08: .word 0x020F6650 + + thumb_func_start FUN_02059C0C +FUN_02059C0C: ; 0x02059C0C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02058B2C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B18 + add r0, r5, #0x0 + bl FUN_02058B3C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B20 + add r0, r5, #0x0 + bl FUN_02058B4C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B28 + add r0, r4, #0x0 + bl FUN_02059BF4 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B34 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058B44 + add r0, r4, #0x0 + bl FUN_02059C00 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B54 + pop {r3-r5, pc} + + thumb_func_start FUN_02059C60 +FUN_02059C60: ; 0x02059C60 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058B2C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B18 + add r0, r4, #0x0 + bl FUN_02058B3C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B20 + add r0, r4, #0x0 + bl FUN_02058B4C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B28 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02059C90 +FUN_02059C90: ; 0x02059C90 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02059BF4 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B4C + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02059C00 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058738 + ldr r2, [sp, #0x0] + add r1, r6, r7 + add r2, r2, r5 + bl FUN_0204A6E0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02059CC8 +FUN_02059CC8: ; 0x02059CC8 + push {r3-r6, lr} + sub sp, #0xc + add r5, r1, #0x0 + add r1, sp, #0x0 + add r6, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02058B5C + cmp r5, #0x3 + bhi _02059D0E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02059CE8: ; jump table (using 16-bit offset) + .short _02059CF0 - _02059CE8 - 2; case 0 + .short _02059CF8 - _02059CE8 - 2; case 1 + .short _02059D00 - _02059CE8 - 2; case 2 + .short _02059D08 - _02059CE8 - 2; case 3 +_02059CF0: + ldr r0, [sp, #0x8] + sub r0, r0, r4 + str r0, [sp, #0x8] + b _02059D0E +_02059CF8: + ldr r0, [sp, #0x8] + add r0, r0, r4 + str r0, [sp, #0x8] + b _02059D0E +_02059D00: + ldr r0, [sp, #0x0] + sub r0, r0, r4 + str r0, [sp, #0x0] + b _02059D0E +_02059D08: + ldr r0, [sp, #0x0] + add r0, r0, r4 + str r0, [sp, #0x0] +_02059D0E: + add r0, r6, #0x0 + add r1, sp, #0x0 + bl FUN_02058B6C + add sp, #0xc + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02059D1C +FUN_02059D1C: ; 0x02059D1C + push {r3-r5, lr} + sub sp, #0x18 + add r1, sp, #0xc + add r5, r0, #0x0 + bl FUN_02058B5C + add r3, sp, #0xc + ldmia r3!, {r0-r1} + add r2, sp, #0x0 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + add r0, r5, #0x0 + bl FUN_0205897C + cmp r0, #0x1 + bne _02059D4E + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0xc + bl FUN_02058418 + add sp, #0x18 + mov r0, #0x0 + pop {r3-r5, pc} +_02059D4E: + add r0, r5, #0x0 + bl FUN_02058AE4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058738 + add r1, sp, #0x0 + add r2, r4, #0x0 + bl FUN_02059EC8 + add r4, r0, #0x0 + cmp r4, #0x1 + bne _02059DA2 + ldr r0, [sp, #0x4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0x0 + bl FUN_02058B6C + add r0, r5, #0x0 + bl FUN_02058B3C + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B20 + ldr r1, [sp, #0x10] + add r0, r5, #0x0 + asr r2, r1, #0x3 + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + bl FUN_02058B40 + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0xc + bl FUN_02058418 + b _02059DAC +_02059DA2: + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0xc + bl FUN_02058410 +_02059DAC: + add r0, r4, #0x0 + add sp, #0x18 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02059DB4 +FUN_02059DB4: ; 0x02059DB4 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02058B14 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B24 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058738 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r7, r0, #0x0 + bl FUN_0204A6E0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058728 + add r0, r5, #0x0 + bl FUN_02058B2C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + add r2, r0, #0x0 + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_0204A6E0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02058718 + add r0, r4, #0x0 + bl FUN_02054C08 + cmp r0, #0x1 + bne _02059E18 + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0xa + bl FUN_02058410 + mov r0, #0x0 + pop {r3-r7, pc} +_02059E18: + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0xa + bl FUN_02058418 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02059E28 +FUN_02059E28: ; 0x02059E28 + cmp r0, #0x3 + bhi _02059E5E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02059E38: ; jump table (using 16-bit offset) + .short _02059E40 - _02059E38 - 2; case 0 + .short _02059E48 - _02059E38 - 2; case 1 + .short _02059E50 - _02059E38 - 2; case 2 + .short _02059E58 - _02059E38 - 2; case 3 +_02059E40: + ldr r0, [r1, #0x8] + sub r0, r0, r2 + str r0, [r1, #0x8] + bx lr +_02059E48: + ldr r0, [r1, #0x8] + add r0, r0, r2 + str r0, [r1, #0x8] + bx lr +_02059E50: + ldr r0, [r1, #0x0] + sub r0, r0, r2 + str r0, [r1, #0x0] + bx lr +_02059E58: + ldr r0, [r1, #0x0] + add r0, r0, r2 + str r0, [r1, #0x0] +_02059E5E: + bx lr + + thumb_func_start FUN_02059E60 +FUN_02059E60: ; 0x02059E60 + lsl r3, r0, #0x10 + mov r0, #0x2 + lsl r0, r0, #0xe + add r3, r3, r0 + lsl r1, r1, #0x10 + str r3, [r2, #0x0] + add r0, r1, r0 + str r0, [r2, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_02059E74 +FUN_02059E74: ; 0x02059E74 + lsl r1, r0, #0x2 + ldr r0, _02059E7C ; =0x020F6660 + ldr r0, [r0, r1] + bx lr + .balign 4 +_02059E7C: .word 0x020F6660 + + thumb_func_start FUN_02059E80 +FUN_02059E80: ; 0x02059E80 + cmp r0, r2 + ble _02059E88 + mov r0, #0x2 + bx lr +_02059E88: + cmp r0, r2 + bge _02059E90 + mov r0, #0x3 + bx lr +_02059E90: + cmp r1, r3 + bgt _02059E98 + mov r0, #0x1 + bx lr +_02059E98: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_02059E9C +FUN_02059E9C: ; 0x02059E9C + push {r4, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r1, sp, #0x4 + str r1, [sp, #0x0] + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x0] + ldr r3, [r4, #0x8] + bl FUN_0204A708 + add r1, sp, #0x4 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02059EBE + add sp, #0x8 + mov r0, #0x0 + pop {r4, pc} +_02059EBE: + str r0, [r4, #0x4] + mov r0, #0x1 + add sp, #0x8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02059EC8 +FUN_02059EC8: ; 0x02059EC8 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r1, #0x0 + add r1, sp, #0x4 + str r1, [sp, #0x0] + add r4, r2, #0x0 + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x0] + ldr r3, [r5, #0x8] + bl FUN_0204A708 + add r1, sp, #0x4 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + bne _02059EEC + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_02059EEC: + cmp r1, #0x2 + bne _02059EFA + cmp r4, #0x0 + bne _02059EFA + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_02059EFA: + str r0, [r5, #0x4] + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02059F04 +FUN_02059F04: ; 0x02059F04 + push {r4-r6, lr} + add r6, r1, #0x0 + mov r1, #0x8 + add r5, r0, #0x0 + bl FUN_0205858C + add r4, r0, #0x0 + mov r1, #0x0 + ldr r0, _02059F30 ; =0x020F693C + mvn r1, r1 + bl FUN_0205AAB0 + strh r0, [r4, #0x2] + add r0, r5, #0x0 + mov r1, #0x0 + str r6, [r4, #0x4] + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058848 + pop {r4-r6, pc} + .balign 4 +_02059F30: .word 0x020F693C + + thumb_func_start FUN_02059F34 +FUN_02059F34: ; 0x02059F34 + ldr r3, _02059F3C ; =FUN_02059F04 + mov r1, #0x0 + bx r3 + nop +_02059F3C: .word FUN_02059F04 + + thumb_func_start FUN_02059F40 +FUN_02059F40: ; 0x02059F40 + ldr r3, _02059F48 ; =FUN_02059F04 + mov r1, #0x1 + bx r3 + nop +_02059F48: .word FUN_02059F04 + + thumb_func_start FUN_02059F4C +FUN_02059F4C: ; 0x02059F4C + ldr r3, _02059F54 ; =FUN_02059F04 + mov r1, #0x2 + bx r3 + nop +_02059F54: .word FUN_02059F04 + + thumb_func_start FUN_02059F58 +FUN_02059F58: ; 0x02059F58 + ldr r3, _02059F60 ; =FUN_02059F04 + mov r1, #0x3 + bx r3 + nop +_02059F60: .word FUN_02059F04 + + thumb_func_start FUN_02059F64 +FUN_02059F64: ; 0x02059F64 + ldr r3, _02059F6C ; =FUN_02059F04 + mov r1, #0x4 + bx r3 + nop +_02059F6C: .word FUN_02059F04 + + thumb_func_start FUN_02059F70 +FUN_02059F70: ; 0x02059F70 + ldr r3, _02059F78 ; =FUN_02059F04 + mov r1, #0x5 + bx r3 + nop +_02059F78: .word FUN_02059F04 + + thumb_func_start FUN_02059F7C +FUN_02059F7C: ; 0x02059F7C + ldr r3, _02059F84 ; =FUN_02059F04 + mov r1, #0x6 + bx r3 + nop +_02059F84: .word FUN_02059F04 + + thumb_func_start FUN_02059F88 +FUN_02059F88: ; 0x02059F88 + ldr r3, _02059F90 ; =FUN_02059F04 + mov r1, #0x7 + bx r3 + nop +_02059F90: .word FUN_02059F04 + + thumb_func_start FUN_02059F94 +FUN_02059F94: ; 0x02059F94 + ldr r3, _02059F9C ; =FUN_02059F04 + mov r1, #0x8 + bx r3 + nop +_02059F9C: .word FUN_02059F04 + + thumb_func_start FUN_02059FA0 +FUN_02059FA0: ; 0x02059FA0 + ldr r3, _02059FA8 ; =FUN_02059F04 + mov r1, #0x9 + bx r3 + nop +_02059FA8: .word FUN_02059F04 + + thumb_func_start FUN_02059FAC +FUN_02059FAC: ; 0x02059FAC + ldr r3, _02059FB4 ; =FUN_02059F04 + mov r1, #0xa + bx r3 + nop +_02059FB4: .word FUN_02059F04 + + thumb_func_start FUN_02059FB8 +FUN_02059FB8: ; 0x02059FB8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r4, r0, #0x0 + mov r2, #0x0 + ldr r1, [r4, #0x4] + add r0, r5, #0x0 + mvn r2, r2 + bl FUN_0205ABEC + mov r2, #0x0 + add r1, r0, #0x0 + mvn r2, r2 + cmp r1, r2 + beq _02059FE0 + add r0, r5, #0x0 + bl FUN_020584AC + b _0205A010 +_02059FE0: + ldrh r0, [r4, #0x0] + cmp r0, #0x0 + bne _0205A010 + mov r0, #0x2 + ldrsh r1, [r4, r0] + sub r1, r1, #0x1 + strh r1, [r4, #0x2] + ldrsh r0, [r4, r0] + cmp r0, #0x0 + bgt _0205A010 + ldr r0, _0205A018 ; =0x020F693C + add r1, r2, #0x0 + bl FUN_0205AAB0 + strh r0, [r4, #0x2] + mov r1, #0x0 + ldr r0, [r4, #0x4] + mvn r1, r1 + bl FUN_0205AAD4 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020584AC +_0205A010: + add r0, r5, #0x0 + bl FUN_02059C60 + pop {r3-r5, pc} + .balign 4 +_0205A018: .word 0x020F693C + + thumb_func_start FUN_0205A01C +FUN_0205A01C: ; 0x0205A01C + bx lr + .balign 4 + + thumb_func_start FUN_0205A020 +FUN_0205A020: ; 0x0205A020 + push {r3, lr} + mov r1, #0xc + mov r2, #0xb + mov r3, #0x0 + bl FUN_0205A050 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A030 +FUN_0205A030: ; 0x0205A030 + push {r3, lr} + mov r1, #0xc + add r2, r1, #0x0 + mov r3, #0x0 + bl FUN_0205A050 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A040 +FUN_0205A040: ; 0x0205A040 + push {r3, lr} + mov r1, #0xc + mov r2, #0xd + mov r3, #0x0 + bl FUN_0205A050 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A050 +FUN_0205A050: ; 0x0205A050 + push {r3-r7, lr} + add r4, r1, #0x0 + add r7, r3, #0x0 + mov r1, #0x10 + add r5, r0, #0x0 + add r6, r2, #0x0 + bl FUN_0205858C + str r7, [r0, #0x4] + str r4, [r0, #0x8] + str r6, [r0, #0xc] + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058848 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205A078 +FUN_0205A078: ; 0x0205A078 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r4, r0, #0x0 + mov r0, #0x0 + ldrsh r0, [r4, r0] + cmp r0, #0x4 + bhi _0205A16E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205A096: ; jump table (using 16-bit offset) + .short _0205A0A0 - _0205A096 - 2; case 0 + .short _0205A0CA - _0205A096 - 2; case 1 + .short _0205A0E8 - _0205A096 - 2; case 2 + .short _0205A0FE - _0205A096 - 2; case 3 + .short _0205A15A - _0205A096 - 2; case 4 +_0205A0A0: + add r0, r5, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_0205886C + add r0, r5, #0x0 + bl FUN_020584C4 + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0205A0CA: + add r0, r5, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + beq _0205A16E + mov r1, #0x0 + ldr r0, _0205A170 ; =0x020F693C + mvn r1, r1 + bl FUN_0205AAB0 + strh r0, [r4, #0x2] + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, #0x1 + strh r0, [r4, #0x0] +_0205A0E8: + mov r0, #0x2 + ldrsh r1, [r4, r0] + sub r1, r1, #0x1 + strh r1, [r4, #0x2] + ldrsh r0, [r4, r0] + cmp r0, #0x0 + bne _0205A16E + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, #0x1 + strh r0, [r4, #0x0] +_0205A0FE: + mov r1, #0x0 + ldr r0, [r4, #0xc] + mvn r1, r1 + bl FUN_0205AAD4 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584D8 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0205A12A + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0205A270 + cmp r0, #0x0 + bne _0205A12A + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0205A12A: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059918 + cmp r0, #0x0 + beq _0205A13C + mov r0, #0x0 + strh r0, [r4, #0x0] + pop {r4-r6, pc} +_0205A13C: + ldr r1, [r4, #0x8] + add r0, r6, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + add r0, r5, #0x0 + bl FUN_0205883C + mov r0, #0x0 + ldrsh r0, [r4, r0] + add r0, r0, #0x1 + strh r0, [r4, #0x0] +_0205A15A: + add r0, r5, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + beq _0205A16E + add r0, r5, #0x0 + bl FUN_02058848 + mov r0, #0x0 + strh r0, [r4, #0x0] +_0205A16E: + pop {r4-r6, pc} + .balign 4 +_0205A170: .word 0x020F693C + + thumb_func_start FUN_0205A174 +FUN_0205A174: ; 0x0205A174 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + add r4, r1, #0x0 + bl FUN_02058AFC + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02058B0C + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02058538 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02058540 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + bl FUN_02058480 + cmp r0, #0xd + bhi _0205A268 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205A1B0: ; jump table (using 16-bit offset) + .short _0205A268 - _0205A1B0 - 2; case 0 + .short _0205A268 - _0205A1B0 - 2; case 1 + .short _0205A268 - _0205A1B0 - 2; case 2 + .short _0205A268 - _0205A1B0 - 2; case 3 + .short _0205A268 - _0205A1B0 - 2; case 4 + .short _0205A268 - _0205A1B0 - 2; case 5 + .short _0205A1CC - _0205A1B0 - 2; case 6 + .short _0205A1DE - _0205A1B0 - 2; case 7 + .short _0205A1F0 - _0205A1B0 - 2; case 8 + .short _0205A202 - _0205A1B0 - 2; case 9 + .short _0205A214 - _0205A1B0 - 2; case 10 + .short _0205A22A - _0205A1B0 - 2; case 11 + .short _0205A240 - _0205A1B0 - 2; case 12 + .short _0205A254 - _0205A1B0 - 2; case 13 +_0205A1CC: + sub r0, r6, r7 + str r0, [r4, #0x0] + ldr r0, [sp, #0x4] + str r6, [r4, #0x8] + sub r0, r5, r0 + str r0, [r4, #0x4] + add sp, #0x8 + str r5, [r4, #0xc] + pop {r3-r7, pc} +_0205A1DE: + str r6, [r4, #0x0] + add r0, r6, r7 + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + add sp, #0x8 + sub r0, r5, r0 + str r0, [r4, #0x4] + str r5, [r4, #0xc] + pop {r3-r7, pc} +_0205A1F0: + sub r0, r6, r7 + str r0, [r4, #0x0] + ldr r0, [sp, #0x4] + str r6, [r4, #0x8] + str r5, [r4, #0x4] + add r0, r5, r0 + add sp, #0x8 + str r0, [r4, #0xc] + pop {r3-r7, pc} +_0205A202: + str r6, [r4, #0x0] + add r0, r6, r7 + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + str r5, [r4, #0x4] + add r0, r5, r0 + add sp, #0x8 + str r0, [r4, #0xc] + pop {r3-r7, pc} +_0205A214: + sub r0, r6, r7 + str r0, [r4, #0x0] + ldr r0, [sp, #0x4] + str r6, [r4, #0x8] + sub r0, r5, r0 + str r0, [r4, #0x4] + ldr r0, [sp, #0x4] + add sp, #0x8 + add r0, r5, r0 + str r0, [r4, #0xc] + pop {r3-r7, pc} +_0205A22A: + str r6, [r4, #0x0] + add r0, r6, r7 + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + sub r0, r5, r0 + str r0, [r4, #0x4] + ldr r0, [sp, #0x4] + add sp, #0x8 + add r0, r5, r0 + str r0, [r4, #0xc] + pop {r3-r7, pc} +_0205A240: + sub r0, r6, r7 + str r0, [r4, #0x0] + add r0, r6, r7 + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + add sp, #0x8 + sub r0, r5, r0 + str r0, [r4, #0x4] + str r5, [r4, #0xc] + pop {r3-r7, pc} +_0205A254: + sub r0, r6, r7 + str r0, [r4, #0x0] + add r0, r6, r7 + str r0, [r4, #0x8] + ldr r0, [sp, #0x4] + str r5, [r4, #0x4] + add r0, r5, r0 + add sp, #0x8 + str r0, [r4, #0xc] + pop {r3-r7, pc} +_0205A268: + bl ErrorHandling + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0205A270 +FUN_0205A270: ; 0x0205A270 + push {r4-r6, lr} + sub sp, #0x10 + add r6, r1, #0x0 + add r5, r0, #0x0 + add r1, sp, #0x0 + bl FUN_0205A174 + add r0, r5, #0x0 + bl FUN_02058B2C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02059BF4 + add r4, r4, r0 + add r0, r5, #0x0 + bl FUN_02058B4C + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02059C00 + add r1, r5, r0 + ldr r0, [sp, #0x0] + cmp r0, r4 + bgt _0205A2AA + ldr r0, [sp, #0x8] + cmp r0, r4 + bge _0205A2B0 +_0205A2AA: + add sp, #0x10 + mov r0, #0x0 + pop {r4-r6, pc} +_0205A2B0: + ldr r0, [sp, #0x4] + cmp r0, r1 + bgt _0205A2BC + ldr r0, [sp, #0xc] + cmp r0, r1 + bge _0205A2C2 +_0205A2BC: + add sp, #0x10 + mov r0, #0x0 + pop {r4-r6, pc} +_0205A2C2: + mov r0, #0x1 + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_0205A2C8 +FUN_0205A2C8: ; 0x0205A2C8 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x8 + bl FUN_0205858C + str r4, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_02059C60 + pop {r3-r5, pc} + + thumb_func_start FUN_0205A2EC +FUN_0205A2EC: ; 0x0205A2EC + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _0205A300 + cmp r0, #0x1 + pop {r3-r5, pc} +_0205A300: + ldr r1, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_020584AC + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + pop {r3-r5, pc} + + thumb_func_start FUN_0205A310 +FUN_0205A310: ; 0x0205A310 + ldr r3, _0205A318 ; =FUN_0205A2C8 + mov r1, #0x0 + bx r3 + nop +_0205A318: .word FUN_0205A2C8 + + thumb_func_start FUN_0205A31C +FUN_0205A31C: ; 0x0205A31C + ldr r3, _0205A324 ; =FUN_0205A2C8 + mov r1, #0x1 + bx r3 + nop +_0205A324: .word FUN_0205A2C8 + + thumb_func_start FUN_0205A328 +FUN_0205A328: ; 0x0205A328 + ldr r3, _0205A330 ; =FUN_0205A2C8 + mov r1, #0x2 + bx r3 + nop +_0205A330: .word FUN_0205A2C8 + + thumb_func_start FUN_0205A334 +FUN_0205A334: ; 0x0205A334 + ldr r3, _0205A33C ; =FUN_0205A2C8 + mov r1, #0x3 + bx r3 + nop +_0205A33C: .word FUN_0205A2C8 + + thumb_func_start FUN_0205A340 +FUN_0205A340: ; 0x0205A340 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x8 + bl FUN_0205858C + strb r4, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_02059C60 + pop {r3-r5, pc} + + thumb_func_start FUN_0205A364 +FUN_0205A364: ; 0x0205A364 + ldr r3, _0205A36C ; =FUN_0205A340 + mov r1, #0x2 + bx r3 + nop +_0205A36C: .word FUN_0205A340 + + thumb_func_start FUN_0205A370 +FUN_0205A370: ; 0x0205A370 + ldr r3, _0205A378 ; =FUN_0205A340 + mov r1, #0x3 + bx r3 + nop +_0205A378: .word FUN_0205A340 + + thumb_func_start FUN_0205A37C +FUN_0205A37C: ; 0x0205A37C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + ldr r6, _0205A39C ; =0x020F6754 + add r4, r0, #0x0 + mov r7, #0x2 +_0205A38A: + ldrsb r2, [r4, r7] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205A38A + pop {r3-r7, pc} + .balign 4 +_0205A39C: .word 0x020F6754 + + thumb_func_start FUN_0205A3A0 +FUN_0205A3A0: ; 0x0205A3A0 + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x26 + add r2, r1, #0x0 + sub r2, #0x27 + add r5, r0, #0x0 + bl FUN_0205ABEC + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + bne _0205A3BE + add r0, r5, #0x0 + bl FUN_020584C4 +_0205A3BE: + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + mov r0, #0x1 + strb r0, [r4, #0x2] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205A3D4 +FUN_0205A3D4: ; 0x0205A3D4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + bne _0205A3E4 + mov r0, #0x0 + pop {r4, pc} +_0205A3E4: + mov r0, #0x0 + str r0, [r4, #0x4] + mov r0, #0x2 + strb r0, [r4, #0x2] + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205A3F0 +FUN_0205A3F0: ; 0x0205A3F0 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, [r4, #0x4] + cmp r1, #0x0 + beq _0205A414 + mov r1, #0x26 + add r2, r1, #0x0 + sub r2, #0x27 + bl FUN_0205ABEC + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _0205A414 + mov r0, #0x0 + strb r0, [r4, #0x2] + mov r0, #0x1 + pop {r4, pc} +_0205A414: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + cmp r0, #0x18 + bge _0205A422 + mov r0, #0x0 + pop {r4, pc} +_0205A422: + mov r0, #0x3 + strb r0, [r4, #0x2] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205A42C +FUN_0205A42C: ; 0x0205A42C + push {r3-r7, lr} + sub sp, #0x28 + ldr r3, _0205A4BC ; =0x020F68D8 + add r2, sp, #0x14 + add r7, r0, #0x0 + add r6, r1, #0x0 + ldmia r3!, {r0-r1} + add r5, r2, #0x0 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r4, _0205A4C0 ; =0x020F68EC + str r0, [r2, #0x0] + add r3, sp, #0x0 + ldmia r4!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + mov r0, #0x0 + ldrsb r0, [r6, r0] + cmp r0, #0x2 + beq _0205A462 + add r5, r2, #0x0 +_0205A462: + add r0, r7, #0x0 + bl FUN_020584C4 + mov r4, #0x0 + ldr r2, [r5, #0x0] + sub r1, r4, #0x1 + cmp r2, r1 + beq _0205A486 + add r1, r5, #0x0 + sub r2, r4, #0x1 +_0205A476: + ldr r3, [r1, #0x0] + cmp r0, r3 + beq _0205A486 + add r1, r1, #0x4 + ldr r3, [r1, #0x0] + add r4, r4, #0x1 + cmp r3, r2 + bne _0205A476 +_0205A486: + lsl r0, r4, #0x2 + ldr r1, [r5, r0] + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0205A496 + bl ErrorHandling +_0205A496: + add r4, r4, #0x1 + lsl r0, r4, #0x2 + ldr r1, [r5, r0] + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0205A4A6 + mov r4, #0x0 +_0205A4A6: + lsl r1, r4, #0x2 + ldr r1, [r5, r1] + add r0, r7, #0x0 + bl FUN_020584AC + mov r0, #0x0 + strb r0, [r6, #0x2] + mov r0, #0x1 + add sp, #0x28 + pop {r3-r7, pc} + nop +_0205A4BC: .word 0x020F68D8 +_0205A4C0: .word 0x020F68EC + + thumb_func_start FUN_0205A4C4 +FUN_0205A4C4: ; 0x0205A4C4 + ldr r3, _0205A4CC ; =FUN_0205A340 + mov r1, #0x3 + bx r3 + nop +_0205A4CC: .word FUN_0205A340 + + thumb_func_start FUN_0205A4D0 +FUN_0205A4D0: ; 0x0205A4D0 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + ldr r6, _0205A4F0 ; =0x020F6724 + add r4, r0, #0x0 + mov r7, #0x2 +_0205A4DE: + ldrsb r2, [r4, r7] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205A4DE + pop {r3-r7, pc} + .balign 4 +_0205A4F0: .word 0x020F6724 + + thumb_func_start FUN_0205A4F4 +FUN_0205A4F4: ; 0x0205A4F4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020584C4 + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + mov r0, #0x1 + strb r0, [r4, #0x2] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205A514 +FUN_0205A514: ; 0x0205A514 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + bne _0205A524 + mov r0, #0x0 + pop {r4, pc} +_0205A524: + mov r0, #0x0 + str r0, [r4, #0x4] + mov r0, #0x2 + strb r0, [r4, #0x2] + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205A530 +FUN_0205A530: ; 0x0205A530 + ldr r0, [r1, #0x4] + add r0, r0, #0x1 + str r0, [r1, #0x4] + cmp r0, #0x18 + bge _0205A53E + mov r0, #0x0 + bx lr +_0205A53E: + mov r0, #0x3 + strb r0, [r1, #0x2] + mov r0, #0x1 + bx lr + .balign 4 + + thumb_func_start FUN_0205A548 +FUN_0205A548: ; 0x0205A548 + push {r3-r7, lr} + sub sp, #0x28 + ldr r3, _0205A5F4 ; =0x020F6900 + add r2, sp, #0x14 + add r7, r0, #0x0 + add r6, r1, #0x0 + ldmia r3!, {r0-r1} + add r5, r2, #0x0 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + ldr r3, _0205A5F8 ; =0x020F6928 + str r0, [r2, #0x0] + add r2, sp, #0x0 + ldmia r3!, {r0-r1} + add r4, r2, #0x0 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + mov r0, #0x0 + ldrsb r0, [r6, r0] + cmp r0, #0x2 + beq _0205A57E + add r5, r4, #0x0 +_0205A57E: + add r0, r7, #0x0 + bl FUN_020584C4 + mov r4, #0x0 + ldr r2, [r5, #0x0] + sub r1, r4, #0x1 + cmp r2, r1 + beq _0205A5A2 + add r1, r5, #0x0 + sub r2, r4, #0x1 +_0205A592: + ldr r3, [r1, #0x0] + cmp r0, r3 + beq _0205A5A2 + add r1, r1, #0x4 + ldr r3, [r1, #0x0] + add r4, r4, #0x1 + cmp r3, r2 + bne _0205A592 +_0205A5A2: + lsl r0, r4, #0x2 + ldr r1, [r5, r0] + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0205A5B2 + bl ErrorHandling +_0205A5B2: + add r4, r4, #0x1 + lsl r0, r4, #0x2 + ldr r1, [r5, r0] + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0205A5C2 + mov r4, #0x0 +_0205A5C2: + lsl r1, r4, #0x2 + ldr r1, [r5, r1] + add r0, r7, #0x0 + bl FUN_020584AC + add r0, r7, #0x0 + bl FUN_020584C4 + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020584A0 + cmp r4, r0 + bne _0205A5E8 + mov r0, #0x0 + ldrsb r0, [r6, r0] + bl FUN_02059E74 + strb r0, [r6, #0x0] +_0205A5E8: + mov r0, #0x0 + strb r0, [r6, #0x2] + mov r0, #0x1 + add sp, #0x28 + pop {r3-r7, pc} + nop +_0205A5F4: .word 0x020F6900 +_0205A5F8: .word 0x020F6928 + + thumb_func_start FUN_0205A5FC +FUN_0205A5FC: ; 0x0205A5FC + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x8 + bl FUN_0205858C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x1 + bne _0205A61A + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_0205ACF4 +_0205A61A: + pop {r3-r5, pc} + + thumb_func_start FUN_0205A61C +FUN_0205A61C: ; 0x0205A61C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + ldr r6, _0205A63C ; =0x020F66CC + add r4, r0, #0x0 + mov r7, #0x0 +_0205A62A: + ldrsh r2, [r4, r7] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205A62A + pop {r3-r7, pc} + .balign 4 +_0205A63C: .word 0x020F66CC + + thumb_func_start FUN_0205A640 +FUN_0205A640: ; 0x0205A640 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020584A0 + mov r1, #0x2 + ldrsh r1, [r4, r1] + add r6, r0, #0x0 + cmp r1, #0x1 + bne _0205A65A + bl FUN_02059E74 + add r6, r0, #0x0 +_0205A65A: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x0 + bne _0205A674 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584AC +_0205A674: + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205A67C +FUN_0205A67C: ; 0x0205A67C + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0x2 + ldrsh r1, [r4, r1] + add r5, r0, #0x0 + cmp r1, #0x0 + beq _0205A6DA + bl FUN_02058AFC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B0C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B4C + ldr r1, [sp, #0x0] + cmp r6, r1 + bne _0205A6DA + cmp r7, r0 + bne _0205A6DA + add r0, r5, #0x0 + bl FUN_020584D4 + bl FUN_02059E74 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x0 + bne _0205A6D6 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584AC +_0205A6D6: + mov r0, #0x0 + strh r0, [r4, #0x2] +_0205A6DA: + add r0, r5, #0x0 + bl FUN_020584D4 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059918 + mov r1, #0x1 + add r2, r0, #0x0 + tst r2, r1 + beq _0205A704 + add r0, r6, #0x0 + strh r1, [r4, #0x2] + bl FUN_02059E74 + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059918 +_0205A704: + mov r1, #0xc + cmp r0, #0x0 + beq _0205A70C + mov r1, #0x20 +_0205A70C: + add r0, r6, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x1 + bne _0205A72C + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_0205AD0C +_0205A72C: + add r0, r5, #0x0 + bl FUN_0205883C + mov r0, #0x2 + strh r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205A73C +FUN_0205A73C: ; 0x0205A73C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0205B080 + cmp r0, #0x1 + bne _0205A766 + add r0, r5, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x1 + bne _0205A762 + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_0205AD88 +_0205A762: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0205A766: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205A76C +FUN_0205A76C: ; 0x0205A76C + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x10 + add r5, r0, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_0205858C + add r4, r0, #0x0 + strh r6, [r4, #0x4] + ldr r0, [sp, #0x0] + strh r7, [r4, #0x6] + str r0, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x1 + bne _0205A79A + add r4, #0xc + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205ACF4 +_0205A79A: + pop {r3-r7, pc} + + thumb_func_start FUN_0205A79C +FUN_0205A79C: ; 0x0205A79C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0xe + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A7AC +FUN_0205A7AC: ; 0x0205A7AC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0xf + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A7BC +FUN_0205A7BC: ; 0x0205A7BC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x10 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A7CC +FUN_0205A7CC: ; 0x0205A7CC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x11 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A7DC +FUN_0205A7DC: ; 0x0205A7DC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x12 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A7EC +FUN_0205A7EC: ; 0x0205A7EC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x13 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A7FC +FUN_0205A7FC: ; 0x0205A7FC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x14 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A80C +FUN_0205A80C: ; 0x0205A80C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x15 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A81C +FUN_0205A81C: ; 0x0205A81C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x16 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A82C +FUN_0205A82C: ; 0x0205A82C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x17 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A83C +FUN_0205A83C: ; 0x0205A83C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x18 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A84C +FUN_0205A84C: ; 0x0205A84C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x19 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A85C +FUN_0205A85C: ; 0x0205A85C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x1a + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A86C +FUN_0205A86C: ; 0x0205A86C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x1b + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A87C +FUN_0205A87C: ; 0x0205A87C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x1c + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A88C +FUN_0205A88C: ; 0x0205A88C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x1d + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A89C +FUN_0205A89C: ; 0x0205A89C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x1e + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A8AC +FUN_0205A8AC: ; 0x0205A8AC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x1f + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A8BC +FUN_0205A8BC: ; 0x0205A8BC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x20 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A8CC +FUN_0205A8CC: ; 0x0205A8CC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x21 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A8DC +FUN_0205A8DC: ; 0x0205A8DC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x22 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A8EC +FUN_0205A8EC: ; 0x0205A8EC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x23 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A8FC +FUN_0205A8FC: ; 0x0205A8FC + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x24 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A90C +FUN_0205A90C: ; 0x0205A90C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x25 + bl FUN_0205A76C + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205A91C +FUN_0205A91C: ; 0x0205A91C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + ldr r6, _0205A93C ; =0x020F6670 + add r4, r0, #0x0 + mov r7, #0x0 +_0205A92A: + ldrsh r2, [r4, r7] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205A92A + pop {r3-r7, pc} + .balign 4 +_0205A93C: .word 0x020F6670 + + thumb_func_start FUN_0205A940 +FUN_0205A940: ; 0x0205A940 + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0x2 + ldrsh r2, [r4, r1] + mov r1, #0x4 + ldrsh r1, [r4, r1] + add r5, r0, #0x0 + cmp r2, r1 + bne _0205A98C + mov r1, #0x6 + ldrsh r1, [r4, r1] + cmp r1, #0x0 + bne _0205A974 + bl FUN_02058AFC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + cmp r6, r0 + bne _0205A98C + mov r0, #0x2 + ldrsh r0, [r4, r0] + add r0, r0, #0x1 + strh r0, [r4, #0x2] + b _0205A98C +_0205A974: + bl FUN_02058B0C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + cmp r6, r0 + bne _0205A98C + mov r0, #0x2 + ldrsh r0, [r4, r0] + add r0, r0, #0x1 + strh r0, [r4, #0x2] +_0205A98C: + mov r0, #0x2 + ldrsh r0, [r4, r0] + cmp r0, #0x3 + bne _0205A9C0 + add r0, r5, #0x0 + bl FUN_02058AFC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B0C + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B4C + ldr r1, [sp, #0x0] + cmp r6, r1 + bne _0205A9C0 + cmp r7, r0 + bne _0205A9C0 + mov r0, #0x0 + strh r0, [r4, #0x2] +_0205A9C0: + ldr r0, [r4, #0x8] + bl FUN_0205AAFC + add r7, r0, #0x0 + mov r0, #0x2 + ldrsh r0, [r4, r0] + lsl r0, r0, #0x2 + ldr r6, [r7, r0] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x0 + bne _0205A9EA + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584AC +_0205A9EA: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059918 + mov r1, #0x1 + tst r1, r0 + beq _0205AA28 + mov r0, #0x2 + ldrsh r1, [r4, r0] + add r1, r1, #0x1 + strh r1, [r4, #0x2] + ldrsh r0, [r4, r0] + lsl r0, r0, #0x2 + ldr r6, [r7, r0] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584CC + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x0 + bne _0205AA20 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020584AC +_0205AA20: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02059918 +_0205AA28: + mov r1, #0xc + cmp r0, #0x0 + beq _0205AA30 + mov r1, #0x20 +_0205AA30: + add r0, r6, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x1 + bne _0205AA52 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0xc + bl FUN_0205AD0C +_0205AA52: + add r0, r5, #0x0 + bl FUN_0205883C + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205AA60 +FUN_0205AA60: ; 0x0205AA60 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0205B080 + cmp r0, #0x1 + bne _0205AA8C + add r0, r5, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_0205ACE0 + cmp r0, #0x1 + bne _0205AA88 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0xc + bl FUN_0205AD88 +_0205AA88: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0205AA8C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205AA90 +FUN_0205AA90: ; 0x0205AA90 + push {r4, lr} + ldr r2, [r0, #0x0] + mov r4, #0x0 + cmp r1, r2 + beq _0205AAA4 +_0205AA9A: + add r0, r0, #0x4 + ldr r2, [r0, #0x0] + add r4, r4, #0x1 + cmp r1, r2 + bne _0205AA9A +_0205AAA4: + cmp r4, #0x0 + bne _0205AAAC + bl ErrorHandling +_0205AAAC: + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205AAB0 +FUN_0205AAB0: ; 0x0205AAB0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201B9EC + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205AA90 + add r1, r0, #0x0 + add r0, r6, #0x0 + blx _s32_div_f + lsl r0, r1, #0x2 + ldr r0, [r5, r0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205AAD4 +FUN_0205AAD4: ; 0x0205AAD4 + push {r4-r6, lr} + add r5, r1, #0x0 + bl FUN_0205AAFC + add r4, r0, #0x0 + bl FUN_0201B9EC + add r6, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0205AA90 + add r1, r0, #0x0 + add r0, r6, #0x0 + blx _s32_div_f + lsl r0, r1, #0x2 + ldr r0, [r4, r0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205AAFC +FUN_0205AAFC: ; 0x0205AAFC + push {r3, lr} + ldr r1, _0205AB1C ; =0x020F69BC + mov r2, #0x0 +_0205AB02: + cmp r2, r0 + bne _0205AB0A + ldr r0, [r1, #0x4] + pop {r3, pc} +_0205AB0A: + add r1, #0x8 + ldr r2, [r1, #0x0] + cmp r2, #0x27 + bne _0205AB02 + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + nop +_0205AB1C: .word 0x020F69BC + + thumb_func_start FUN_0205AB20 +FUN_0205AB20: ; 0x0205AB20 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02058488 + cmp r0, #0x1 + beq _0205AB36 + cmp r0, #0x2 + beq _0205AB36 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0205AB36: + add r0, r5, #0x0 + bl FUN_02058738 + bl FUN_02055698 + add r6, r0, #0x0 + bl FUN_02057124 + cmp r0, #0x0 + bne _0205AB50 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0205AB50: + add r0, r5, #0x0 + mov r4, #0x0 + bl FUN_02058480 + ldr r1, _0205ABE8 ; =0x020F6984 +_0205AB5A: + lsl r2, r4, #0x2 + ldr r2, [r1, r2] + add r4, r4, #0x1 + cmp r2, r0 + beq _0205AB68 + cmp r2, #0xff + bne _0205AB5A +_0205AB68: + cmp r0, r2 + beq _0205AB72 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0205AB72: + add r0, r6, #0x0 + bl FUN_020553A0 + bl FUN_02058BE4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058BE4 + cmp r4, r0 + beq _0205AB8E + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0205AB8E: + add r0, r6, #0x0 + bl FUN_02055320 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0205532C + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B4C + add r3, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r5, [sp, #0x0] + sub r2, r6, r0 + add r1, r6, r0 + sub r5, r3, r5 + add r0, r3, r0 + cmp r5, r4 + bgt _0205ABE2 + cmp r0, r4 + blt _0205ABE2 + cmp r2, r7 + bgt _0205ABE2 + cmp r1, r7 + blt _0205ABE2 + add r1, r3, #0x0 + add r0, r6, #0x0 + add r2, r7, #0x0 + add r3, r4, #0x0 + bl FUN_02059E80 + pop {r3-r7, pc} +_0205ABE2: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + .balign 4 +_0205ABE8: .word 0x020F6984 + + thumb_func_start FUN_0205ABEC +FUN_0205ABEC: ; 0x0205ABEC + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x0] + add r4, r2, #0x0 + add r0, r1, #0x0 + bl FUN_0205AAFC + add r1, r4, #0x0 + add r5, r0, #0x0 + bl FUN_0205AA90 + add r4, r0, #0x0 + cmp r4, #0x1 + bne _0205AC10 + mov r0, #0x0 + add sp, #0x14 + mvn r0, r0 + pop {r4-r7, pc} +_0205AC10: + ldr r0, [sp, #0x0] + bl FUN_0205AB20 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _0205ACDA + mov r2, #0x0 + add r3, r5, #0x0 +_0205AC22: + ldr r1, [r3, #0x0] + cmp r0, r1 + beq _0205ACDA + add r2, r2, #0x1 + add r3, r3, #0x4 + cmp r2, r4 + blt _0205AC22 + mov r7, #0x0 + mvn r7, r7 + ldr r0, [sp, #0x0] + add r6, r7, #0x0 + bl FUN_02058B2C + str r0, [sp, #0x8] + ldr r0, [sp, #0x0] + bl FUN_02058B4C + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + bl FUN_02058738 + bl FUN_02055698 + str r0, [sp, #0xc] + bl FUN_02055320 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + bl FUN_0205532C + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x10] + cmp r2, r1 + ble _0205AC6A + mov r7, #0x2 + b _0205AC70 +_0205AC6A: + cmp r2, r1 + bge _0205AC70 + mov r7, #0x3 +_0205AC70: + ldr r1, [sp, #0x4] + cmp r1, r0 + ble _0205AC7A + mov r6, #0x0 + b _0205AC80 +_0205AC7A: + cmp r1, r0 + bge _0205AC80 + mov r6, #0x1 +_0205AC80: + mov r0, #0x0 + sub r1, r0, #0x1 + cmp r7, r1 + bne _0205AC9E +_0205AC88: + ldr r1, [r5, #0x0] + cmp r6, r1 + bne _0205AC94 + add sp, #0x14 + add r0, r6, #0x0 + pop {r4-r7, pc} +_0205AC94: + add r0, r0, #0x1 + add r5, r5, #0x4 + cmp r0, r4 + blt _0205AC88 + b _0205ACD6 +_0205AC9E: + cmp r6, r1 + bne _0205ACB8 +_0205ACA2: + ldr r1, [r5, #0x0] + cmp r7, r1 + bne _0205ACAE + add sp, #0x14 + add r0, r7, #0x0 + pop {r4-r7, pc} +_0205ACAE: + add r0, r0, #0x1 + add r5, r5, #0x4 + cmp r0, r4 + blt _0205ACA2 + b _0205ACD6 +_0205ACB8: + ldr r1, [r5, #0x0] + cmp r7, r1 + bne _0205ACC4 + add sp, #0x14 + add r0, r7, #0x0 + pop {r4-r7, pc} +_0205ACC4: + cmp r6, r1 + bne _0205ACCE + add sp, #0x14 + add r0, r6, #0x0 + pop {r4-r7, pc} +_0205ACCE: + add r0, r0, #0x1 + add r5, r5, #0x4 + cmp r0, r4 + blt _0205ACB8 +_0205ACD6: + mov r0, #0x0 + mvn r0, r0 +_0205ACDA: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205ACE0 +FUN_0205ACE0: ; 0x0205ACE0 + push {r3, lr} + bl FUN_02058488 + sub r0, r0, #0x7 + cmp r0, #0x1 + bhi _0205ACF0 + mov r0, #0x1 + pop {r3, pc} +_0205ACF0: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205ACF4 +FUN_0205ACF4: ; 0x0205ACF4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02058488 + cmp r0, #0x7 + bne _0205AD06 + mov r0, #0x0 + strb r0, [r4, #0x1] + pop {r4, pc} +_0205AD06: + mov r0, #0x1 + strb r0, [r4, #0x1] + pop {r4, pc} + + thumb_func_start FUN_0205AD0C +FUN_0205AD0C: ; 0x0205AD0C + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + bl FUN_020584C4 + mov r4, #0x0 + add r6, r0, #0x0 + add r1, r4, #0x0 + ldr r0, _0205AD84 ; =0x020F6964 + mov r2, #0x1 + b _0205AD26 +_0205AD22: + add r1, r1, #0x4 + add r4, r4, #0x1 +_0205AD26: + cmp r4, #0x4 + bge _0205AD36 + ldrsb r3, [r5, r2] + lsl r3, r3, #0x4 + add r3, r0, r3 + ldr r3, [r1, r3] + cmp r6, r3 + bne _0205AD22 +_0205AD36: + cmp r4, #0x4 + blt _0205AD3E + bl ErrorHandling +_0205AD3E: + add r0, r4, #0x1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + strb r6, [r5, #0x0] + mov r0, #0x1 + add r1, r2, r1 + ldrsb r0, [r5, r0] + lsl r1, r1, #0x2 + lsl r2, r0, #0x4 + ldr r0, _0205AD84 ; =0x020F6964 + add r0, r0, r2 + ldr r4, [r1, r0] + add r0, r7, #0x0 + mov r1, #0x80 + bl FUN_02058424 + cmp r0, #0x0 + beq _0205AD6C + mov r0, #0x1 + b _0205AD6E +_0205AD6C: + mov r0, #0x0 +_0205AD6E: + strb r0, [r5, #0x2] + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_020584AC + add r0, r7, #0x0 + mov r1, #0x80 + bl FUN_02058410 + pop {r3-r7, pc} + nop +_0205AD84: .word 0x020F6964 + + thumb_func_start FUN_0205AD88 +FUN_0205AD88: ; 0x0205AD88 + push {r3, lr} + ldrb r1, [r1, #0x2] + cmp r1, #0x0 + bne _0205AD96 + mov r1, #0x80 + bl FUN_02058418 +_0205AD96: + pop {r3, pc} + + thumb_func_start FUN_0205AD98 +FUN_0205AD98: ; 0x0205AD98 + push {r4, lr} + mov r1, #0x1 + add r4, r0, #0x0 + bl FUN_0205842C + cmp r0, #0x0 + bne _0205ADAA + mov r0, #0x0 + pop {r4, pc} +_0205ADAA: + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0205842C + cmp r0, #0x1 + bne _0205ADBA + mov r0, #0x0 + pop {r4, pc} +_0205ADBA: + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_0205842C + cmp r0, #0x1 + bne _0205ADD6 + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_0205842C + cmp r0, #0x0 + bne _0205ADD6 + mov r0, #0x0 + pop {r4, pc} +_0205ADD6: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205ADDC +FUN_0205ADDC: ; 0x0205ADDC + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x69 + blt _0205ADEA + bl ErrorHandling +_0205ADEA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020586E8 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020586F8 + add r0, r5, #0x0 + mov r1, #0x10 + bl FUN_02058410 + add r0, r5, #0x0 + mov r1, #0x20 + bl FUN_02058418 + pop {r3-r5, pc} + + thumb_func_start FUN_0205AE0C +FUN_0205AE0C: ; 0x0205AE0C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020586E8 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020586F8 + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_02058418 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205AE28 +FUN_0205AE28: ; 0x0205AE28 + push {r4, lr} + mov r1, #0x10 + add r4, r0, #0x0 + bl FUN_0205842C + cmp r0, #0x0 + bne _0205AE3A + mov r0, #0x1 + pop {r4, pc} +_0205AE3A: + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_0205842C + cmp r0, #0x0 + beq _0205AE4A + mov r0, #0x1 + pop {r4, pc} +_0205AE4A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205AE50 +FUN_0205AE50: ; 0x0205AE50 + push {r4, lr} + mov r1, #0x10 + add r4, r0, #0x0 + bl FUN_0205842C + cmp r0, #0x0 + bne _0205AE62 + mov r0, #0x1 + pop {r4, pc} +_0205AE62: + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_0205842C + cmp r0, #0x0 + bne _0205AE72 + mov r0, #0x0 + pop {r4, pc} +_0205AE72: + add r0, r4, #0x0 + mov r1, #0x30 + bl FUN_02058418 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205AE80 +FUN_0205AE80: ; 0x0205AE80 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x10 + bl FUN_02058418 + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_02058410 + add r0, r4, #0x0 + mov r1, #0xff + bl FUN_020586E8 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020586F8 + pop {r4, pc} + + thumb_func_start FUN_0205AEA4 +FUN_0205AEA4: ; 0x0205AEA4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x4 + mov r1, #0x14 + bl FUN_020169D8 + add r4, r0, #0x0 + bne _0205AEBA + bl ErrorHandling +_0205AEBA: + add r2, r4, #0x0 + mov r1, #0x14 + mov r0, #0x0 +_0205AEC0: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _0205AEC0 + add r0, r5, #0x0 + bl FUN_02058578 + bl FUN_0205839C + sub r2, r0, #0x1 + ldr r0, _0205AEEC ; =FUN_0205AF2C + add r1, r4, #0x0 + bl FUN_0200CA44 + add r7, r0, #0x0 + bne _0205AEE4 + bl ErrorHandling +_0205AEE4: + str r5, [r4, #0xc] + str r6, [r4, #0x10] + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 +_0205AEEC: .word FUN_0205AF2C + + thumb_func_start FUN_0205AEF0 +FUN_0205AEF0: ; 0x0205AEF0 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #0x4] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205AEFC +FUN_0205AEFC: ; 0x0205AEFC + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0201B6C8 + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0205AE28 + cmp r0, #0x1 + beq _0205AF14 + bl ErrorHandling +_0205AF14: + ldr r0, [r4, #0xc] + bl FUN_0205AE50 + mov r0, #0x4 + add r1, r4, #0x0 + bl FUN_02016A8C + add r0, r5, #0x0 + bl FUN_0200CAB4 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205AF2C +FUN_0205AF2C: ; 0x0205AF2C + push {r3-r5, lr} + ldr r4, _0205AF44 ; =0x020F6C54 + add r5, r1, #0x0 +_0205AF32: + ldr r1, [r5, #0x0] + add r0, r5, #0x0 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #0x1 + beq _0205AF32 + pop {r3-r5, pc} + nop +_0205AF44: .word 0x020F6C54 + + thumb_func_start FUN_0205AF48 +FUN_0205AF48: ; 0x0205AF48 + mov r1, #0x0 + str r1, [r0, #0x8] + mov r1, #0x1 + str r1, [r0, #0x0] + add r0, r1, #0x0 + bx lr + + thumb_func_start FUN_0205AF54 +FUN_0205AF54: ; 0x0205AF54 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0205AD98 + cmp r0, #0x0 + bne _0205AF66 + mov r0, #0x0 + pop {r4, pc} +_0205AF66: + mov r0, #0x2 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205AF70 +FUN_0205AF70: ; 0x0205AF70 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0xc] + ldrh r1, [r1, #0x0] + bl FUN_0205ADDC + mov r0, #0x3 + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205AF88 +FUN_0205AF88: ; 0x0205AF88 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0205AF9A + mov r0, #0x0 + pop {r4, pc} +_0205AF9A: + mov r0, #0x4 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205AFA4 +FUN_0205AFA4: ; 0x0205AFA4 + ldr r1, [r0, #0x8] + ldr r3, [r0, #0x10] + add r2, r1, #0x1 + str r2, [r0, #0x8] + ldrh r1, [r3, #0x2] + cmp r2, r1 + bge _0205AFBA + mov r1, #0x1 + str r1, [r0, #0x0] + add r0, r1, #0x0 + bx lr +_0205AFBA: + add r1, r3, #0x4 + str r1, [r0, #0x10] + ldrh r1, [r3, #0x4] + cmp r1, #0xfe + beq _0205AFCC + mov r1, #0x0 + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr +_0205AFCC: + mov r1, #0x1 + str r1, [r0, #0x4] + mov r1, #0x5 + str r1, [r0, #0x0] + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205AFD8 +FUN_0205AFD8: ; 0x0205AFD8 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205AFDC +FUN_0205AFDC: ; 0x0205AFDC + push {r3-r7, lr} + add r7, r0, #0x0 + add r4, r1, #0x0 + cmp r7, #0x4 + blt _0205AFEA + bl ErrorHandling +_0205AFEA: + ldr r3, _0205B01C ; =0x020F6308 + ldr r6, [r3, #0x0] + cmp r6, #0x0 + beq _0205B014 + mov r1, #0x0 +_0205AFF4: + add r2, r1, #0x0 + add r5, r6, #0x0 +_0205AFF8: + ldr r0, [r5, #0x0] + cmp r4, r0 + bne _0205B004 + lsl r0, r7, #0x2 + ldr r0, [r6, r0] + pop {r3-r7, pc} +_0205B004: + add r2, r2, #0x1 + add r5, r5, #0x4 + cmp r2, #0x4 + blt _0205AFF8 + add r3, r3, #0x4 + ldr r6, [r3, #0x0] + cmp r6, #0x0 + bne _0205AFF4 +_0205B014: + bl ErrorHandling + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_0205B01C: .word 0x020F6308 + + thumb_func_start FUN_0205B020 +FUN_0205B020: ; 0x0205B020 + push {r4-r5} + ldr r4, _0205B054 ; =0x020F6308 + ldr r5, [r4, #0x0] + cmp r5, #0x0 + beq _0205B04A + mov r2, #0x0 +_0205B02C: + add r3, r2, #0x0 +_0205B02E: + ldr r1, [r5, #0x0] + cmp r0, r1 + bne _0205B03A + add r0, r3, #0x0 + pop {r4-r5} + bx lr +_0205B03A: + add r3, r3, #0x1 + add r5, r5, #0x4 + cmp r3, #0x4 + blt _0205B02E + add r4, r4, #0x4 + ldr r5, [r4, #0x0] + cmp r5, #0x0 + bne _0205B02C +_0205B04A: + mov r0, #0x0 + mvn r0, r0 + pop {r4-r5} + bx lr + nop +_0205B054: .word 0x020F6308 + + thumb_func_start FUN_0205B058 +FUN_0205B058: ; 0x0205B058 + push {r3-r5, lr} + add r5, r0, #0x0 +_0205B05C: + add r0, r5, #0x0 + bl FUN_020586F0 + add r4, r0, #0x0 + cmp r4, #0xff + beq _0205B07C + add r0, r5, #0x0 + bl FUN_02058710 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205B0B4 + cmp r0, #0x0 + bne _0205B05C +_0205B07C: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205B080 +FUN_0205B080: ; 0x0205B080 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0205B058 + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_0205842C + cmp r0, #0x0 + bne _0205B098 + mov r0, #0x0 + pop {r4, pc} +_0205B098: + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_02058418 + add r0, r4, #0x0 + mov r1, #0xff + bl FUN_020586E8 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020586F8 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205B0B4 +FUN_0205B0B4: ; 0x0205B0B4 + push {r3, lr} + lsl r3, r1, #0x2 + ldr r1, _0205B0C4 ; =0x020F6440 + ldr r3, [r1, r3] + lsl r1, r2, #0x2 + ldr r1, [r3, r1] + blx r1 + pop {r3, pc} + .balign 4 +_0205B0C4: .word 0x020F6440 + + thumb_func_start FUN_0205B0C8 +FUN_0205B0C8: ; 0x0205B0C8 + push {r3, lr} + mov r1, #0x20 + bl FUN_02058410 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205B0D4 +FUN_0205B0D4: ; 0x0205B0D4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020584AC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02059C60 + add r0, r4, #0x0 + bl FUN_02058700 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205B0F4 +FUN_0205B0F4: ; 0x0205B0F4 + push {r3, lr} + mov r1, #0x0 + bl FUN_0205B0D4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B100 +FUN_0205B100: ; 0x0205B100 + push {r3, lr} + mov r1, #0x1 + bl FUN_0205B0D4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B10C +FUN_0205B10C: ; 0x0205B10C + push {r3, lr} + mov r1, #0x2 + bl FUN_0205B0D4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B118 +FUN_0205B118: ; 0x0205B118 + push {r3, lr} + mov r1, #0x3 + bl FUN_0205B0D4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B124 +FUN_0205B124: ; 0x0205B124 + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0xc + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_020585DC + add r1, sp, #0x8 + ldrh r1, [r1, #0x10] + strh r1, [r0, #0x0] + strh r7, [r0, #0x2] + str r4, [r0, #0x4] + str r6, [r0, #0x8] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059C0C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020584D8 + add r1, sp, #0x8 + ldrh r1, [r1, #0x10] + add r0, r5, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + mov r1, #0x4 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_02058700 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205B16C +FUN_0205B16C: ; 0x0205B16C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02059CC8 + add r0, r5, #0x0 + bl FUN_02059D1C + mov r0, #0x2 + ldrsh r1, [r4, r0] + sub r1, r1, #0x1 + strh r1, [r4, #0x2] + ldrsh r0, [r4, r0] + cmp r0, #0x0 + ble _0205B198 + mov r0, #0x0 + pop {r3-r5, pc} +_0205B198: + add r0, r5, #0x0 + mov r1, #0x28 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_02059C60 + add r0, r5, #0x0 + bl FUN_020586A0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205B1C0 +FUN_0205B1C0: ; 0x0205B1C0 + push {r3, lr} + mov r2, #0x1 + str r2, [sp, #0x0] + mov r1, #0x0 + lsl r2, r2, #0xb + mov r3, #0x20 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B1D4 +FUN_0205B1D4: ; 0x0205B1D4 + push {r3, lr} + mov r1, #0x1 + lsl r2, r1, #0xb + mov r3, #0x20 + str r1, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B1E8 +FUN_0205B1E8: ; 0x0205B1E8 + push {r3, lr} + mov r1, #0x1 + str r1, [sp, #0x0] + mov r1, #0x2 + lsl r2, r1, #0xa + mov r3, #0x20 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B1FC +FUN_0205B1FC: ; 0x0205B1FC + push {r3, lr} + mov r2, #0x1 + str r2, [sp, #0x0] + mov r1, #0x3 + lsl r2, r2, #0xb + mov r3, #0x20 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B210 +FUN_0205B210: ; 0x0205B210 + push {r3, lr} + mov r2, #0x2 + str r2, [sp, #0x0] + mov r1, #0x0 + lsl r2, r2, #0xb + mov r3, #0x10 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B224 +FUN_0205B224: ; 0x0205B224 + push {r3, lr} + mov r1, #0x2 + str r1, [sp, #0x0] + mov r1, #0x1 + lsl r2, r1, #0xc + mov r3, #0x10 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B238 +FUN_0205B238: ; 0x0205B238 + push {r3, lr} + mov r1, #0x2 + lsl r2, r1, #0xb + mov r3, #0x10 + str r1, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B24C +FUN_0205B24C: ; 0x0205B24C + push {r3, lr} + mov r2, #0x2 + str r2, [sp, #0x0] + mov r1, #0x3 + lsl r2, r2, #0xb + mov r3, #0x10 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B260 +FUN_0205B260: ; 0x0205B260 + push {r3, lr} + mov r1, #0x3 + mov r2, #0x2 + str r1, [sp, #0x0] + mov r1, #0x0 + lsl r2, r2, #0xc + mov r3, #0x8 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B278 +FUN_0205B278: ; 0x0205B278 + push {r3, lr} + mov r1, #0x3 + str r1, [sp, #0x0] + mov r1, #0x1 + lsl r2, r1, #0xd + mov r3, #0x8 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B28C +FUN_0205B28C: ; 0x0205B28C + push {r3, lr} + mov r1, #0x3 + str r1, [sp, #0x0] + mov r1, #0x2 + lsl r2, r1, #0xc + mov r3, #0x8 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B2A0 +FUN_0205B2A0: ; 0x0205B2A0 + push {r3, lr} + mov r2, #0x2 + mov r1, #0x3 + lsl r2, r2, #0xc + mov r3, #0x8 + str r1, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B2B4 +FUN_0205B2B4: ; 0x0205B2B4 + push {r3, lr} + mov r3, #0x4 + mov r1, #0x0 + lsl r2, r3, #0xc + str r3, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B2C8 +FUN_0205B2C8: ; 0x0205B2C8 + push {r3, lr} + mov r1, #0x1 + mov r3, #0x4 + lsl r2, r1, #0xe + str r3, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B2DC +FUN_0205B2DC: ; 0x0205B2DC + push {r3, lr} + mov r1, #0x2 + mov r3, #0x4 + lsl r2, r1, #0xd + str r3, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B2F0 +FUN_0205B2F0: ; 0x0205B2F0 + push {r3, lr} + mov r3, #0x4 + mov r1, #0x3 + lsl r2, r3, #0xc + str r3, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B304 +FUN_0205B304: ; 0x0205B304 + push {r3, lr} + mov r1, #0x5 + mov r2, #0x2 + str r1, [sp, #0x0] + mov r1, #0x0 + lsl r2, r2, #0xe + mov r3, #0x2 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B31C +FUN_0205B31C: ; 0x0205B31C + push {r3, lr} + mov r1, #0x5 + str r1, [sp, #0x0] + mov r1, #0x1 + lsl r2, r1, #0xf + mov r3, #0x2 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B330 +FUN_0205B330: ; 0x0205B330 + push {r3, lr} + mov r1, #0x5 + str r1, [sp, #0x0] + mov r1, #0x2 + lsl r2, r1, #0xe + add r3, r1, #0x0 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B344 +FUN_0205B344: ; 0x0205B344 + push {r3, lr} + mov r1, #0x5 + mov r2, #0x2 + str r1, [sp, #0x0] + mov r1, #0x3 + lsl r2, r2, #0xe + mov r3, #0x2 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B35C +FUN_0205B35C: ; 0x0205B35C + push {r3, lr} + mov r2, #0x1 + mov r1, #0x0 + lsl r2, r2, #0x10 + mov r3, #0x1 + str r1, [sp, #0x0] + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B370 +FUN_0205B370: ; 0x0205B370 + push {r3, lr} + mov r1, #0x0 + str r1, [sp, #0x0] + mov r1, #0x1 + lsl r2, r1, #0x10 + add r3, r1, #0x0 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B384 +FUN_0205B384: ; 0x0205B384 + push {r3, lr} + mov r1, #0x0 + str r1, [sp, #0x0] + mov r1, #0x2 + lsl r2, r1, #0xf + mov r3, #0x1 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B398 +FUN_0205B398: ; 0x0205B398 + push {r3, lr} + mov r1, #0x0 + mov r2, #0x1 + str r1, [sp, #0x0] + mov r1, #0x3 + lsl r2, r2, #0x10 + mov r3, #0x1 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B3B0 +FUN_0205B3B0: ; 0x0205B3B0 + push {r3, lr} + mov r1, #0x9 + mov r2, #0x1 + str r1, [sp, #0x0] + mov r1, #0x0 + lsl r2, r2, #0xe + mov r3, #0x4 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B3C8 +FUN_0205B3C8: ; 0x0205B3C8 + push {r3, lr} + mov r1, #0x9 + str r1, [sp, #0x0] + mov r1, #0x1 + lsl r2, r1, #0xe + mov r3, #0x4 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B3DC +FUN_0205B3DC: ; 0x0205B3DC + push {r3, lr} + mov r1, #0x9 + str r1, [sp, #0x0] + mov r1, #0x2 + lsl r2, r1, #0xd + mov r3, #0x4 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B3F0 +FUN_0205B3F0: ; 0x0205B3F0 + push {r3, lr} + mov r1, #0x9 + mov r2, #0x1 + str r1, [sp, #0x0] + mov r1, #0x3 + lsl r2, r2, #0xe + mov r3, #0x4 + bl FUN_0205B124 + mov r0, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205B408 +FUN_0205B408: ; 0x0205B408 + push {r3-r7, lr} + add r7, r1, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + mov r1, #0xc + add r5, r0, #0x0 + bl FUN_020585DC + strh r4, [r0, #0x0] + add r1, r6, #0x1 + strh r1, [r0, #0x2] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_020584AC + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02059C60 + add r0, r5, #0x0 + bl FUN_02058700 + pop {r3-r7, pc} + + thumb_func_start FUN_0205B43C +FUN_0205B43C: ; 0x0205B43C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058600 + mov r1, #0x2 + ldrsh r2, [r0, r1] + sub r2, r2, #0x1 + strh r2, [r0, #0x2] + ldrsh r0, [r0, r1] + cmp r0, #0x0 + ble _0205B456 + mov r0, #0x0 + pop {r4, pc} +_0205B456: + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_02058410 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205B470 +FUN_0205B470: ; 0x0205B470 + push {r3, lr} + mov r1, #0x0 + mov r2, #0x20 + mov r3, #0x1 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B480 +FUN_0205B480: ; 0x0205B480 + push {r3, lr} + mov r1, #0x1 + mov r2, #0x20 + add r3, r1, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B490 +FUN_0205B490: ; 0x0205B490 + push {r3, lr} + mov r1, #0x2 + mov r2, #0x20 + mov r3, #0x1 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B4A0 +FUN_0205B4A0: ; 0x0205B4A0 + push {r3, lr} + mov r1, #0x3 + mov r2, #0x20 + mov r3, #0x1 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B4B0 +FUN_0205B4B0: ; 0x0205B4B0 + push {r3, lr} + mov r1, #0x0 + mov r2, #0x10 + mov r3, #0x2 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B4C0 +FUN_0205B4C0: ; 0x0205B4C0 + push {r3, lr} + mov r1, #0x1 + mov r2, #0x10 + mov r3, #0x2 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B4D0 +FUN_0205B4D0: ; 0x0205B4D0 + push {r3, lr} + mov r1, #0x2 + mov r2, #0x10 + add r3, r1, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B4E0 +FUN_0205B4E0: ; 0x0205B4E0 + push {r3, lr} + mov r1, #0x3 + mov r2, #0x10 + mov r3, #0x2 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B4F0 +FUN_0205B4F0: ; 0x0205B4F0 + push {r3, lr} + mov r1, #0x0 + mov r2, #0x8 + mov r3, #0x3 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B500 +FUN_0205B500: ; 0x0205B500 + push {r3, lr} + mov r1, #0x1 + mov r2, #0x8 + mov r3, #0x3 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B510 +FUN_0205B510: ; 0x0205B510 + push {r3, lr} + mov r1, #0x2 + mov r2, #0x8 + mov r3, #0x3 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B520 +FUN_0205B520: ; 0x0205B520 + push {r3, lr} + mov r1, #0x3 + mov r2, #0x8 + add r3, r1, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B530 +FUN_0205B530: ; 0x0205B530 + push {r3, lr} + mov r2, #0x4 + mov r1, #0x0 + add r3, r2, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B540 +FUN_0205B540: ; 0x0205B540 + push {r3, lr} + mov r2, #0x4 + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B550 +FUN_0205B550: ; 0x0205B550 + push {r3, lr} + mov r2, #0x4 + mov r1, #0x2 + add r3, r2, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B560 +FUN_0205B560: ; 0x0205B560 + push {r3, lr} + mov r2, #0x4 + mov r1, #0x3 + add r3, r2, #0x0 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B570 +FUN_0205B570: ; 0x0205B570 + push {r3, lr} + mov r1, #0x0 + mov r2, #0x2 + mov r3, #0x5 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B580 +FUN_0205B580: ; 0x0205B580 + push {r3, lr} + mov r1, #0x1 + mov r2, #0x2 + mov r3, #0x5 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B590 +FUN_0205B590: ; 0x0205B590 + push {r3, lr} + mov r1, #0x2 + add r2, r1, #0x0 + mov r3, #0x5 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B5A0 +FUN_0205B5A0: ; 0x0205B5A0 + push {r3, lr} + mov r1, #0x3 + mov r2, #0x2 + mov r3, #0x5 + bl FUN_0205B408 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B5B0 +FUN_0205B5B0: ; 0x0205B5B0 + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0x10 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_020585DC + strb r4, [r0, #0xc] + str r6, [r0, #0x0] + strb r7, [r0, #0xd] + add r2, sp, #0x8 + ldrh r1, [r2, #0x10] + strb r1, [r0, #0xe] + mov r1, #0x14 + ldrsh r1, [r2, r1] + cmp r6, #0x0 + strb r1, [r0, #0xf] + ldrh r1, [r2, #0x18] + strh r1, [r0, #0x8] + bne _0205B5E2 + add r0, r5, #0x0 + bl FUN_02059C60 + b _0205B5EA +_0205B5E2: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059C0C +_0205B5EA: + ldr r1, _0205B614 ; =0x00010004 + add r0, r5, #0x0 + bl FUN_02058410 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020584D8 + add r1, sp, #0x8 + ldrh r1, [r1, #0x10] + add r0, r5, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058700 + ldr r0, _0205B618 ; =0x0000060B + bl FUN_020054C8 + pop {r3-r7, pc} + nop +_0205B614: .word 0x00010004 +_0205B618: .word 0x0000060B + + thumb_func_start FUN_0205B61C +FUN_0205B61C: ; 0x0205B61C + push {r3-r5, lr} + sub sp, #0x18 + add r5, r0, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + ldr r2, [r4, #0x0] + cmp r2, #0x0 + beq _0205B66C + mov r1, #0xc + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02059CC8 + add r0, r5, #0x0 + bl FUN_02059D1C + mov r0, #0x1 + ldr r1, [r4, #0x4] + lsl r0, r0, #0x10 + cmp r1, r0 + blt _0205B65E + mov r0, #0x0 + str r0, [r4, #0x4] + mov r1, #0xc + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02059C0C + add r0, r5, #0x0 + mov r1, #0x4 + bl FUN_02058410 +_0205B65E: + ldr r1, [r4, #0x0] + cmp r1, #0x0 + bge _0205B666 + neg r1, r1 +_0205B666: + ldr r0, [r4, #0x4] + add r0, r0, r1 + str r0, [r4, #0x4] +_0205B66C: + ldrh r1, [r4, #0xa] + ldrh r0, [r4, #0x8] + add r0, r1, r0 + strh r0, [r4, #0xa] + mov r0, #0xf + ldrh r1, [r4, #0xa] + lsl r0, r0, #0x8 + cmp r1, r0 + bls _0205B680 + strh r0, [r4, #0xa] +_0205B680: + mov r1, #0xf + ldrsb r1, [r4, r1] + ldrh r0, [r4, #0xa] + lsl r2, r1, #0x2 + ldr r1, _0205B6F8 ; =0x02105F9C + lsr r0, r0, #0x8 + lsl r0, r0, #0x10 + ldr r2, [r1, r2] + mov r1, #0x0 + str r1, [sp, #0xc] + lsr r0, r0, #0xe + ldr r0, [r2, r0] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + add r0, r5, #0x0 + add r1, sp, #0xc + bl FUN_02058B94 + mov r0, #0xd + ldrsb r1, [r4, r0] + sub r1, r1, #0x1 + strb r1, [r4, #0xd] + ldrsb r0, [r4, r0] + cmp r0, #0x0 + ble _0205B6B8 + add sp, #0x18 + mov r0, #0x0 + pop {r3-r5, pc} +_0205B6B8: + add r1, sp, #0x0 + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + add r0, r5, #0x0 + bl FUN_02058B94 + ldr r1, _0205B6FC ; =0x00020028 + add r0, r5, #0x0 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_02059C60 + add r0, r5, #0x0 + bl FUN_020586A0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058700 + ldr r0, _0205B700 ; =0x00000647 + bl FUN_020054C8 + mov r0, #0x1 + add sp, #0x18 + pop {r3-r5, pc} + nop +_0205B6F8: .word 0x02105F9C +_0205B6FC: .word 0x00020028 +_0205B700: .word 0x00000647 + + thumb_func_start FUN_0205B704 +FUN_0205B704: ; 0x0205B704 + push {lr} + sub sp, #0xc + mov r2, #0x2 + str r2, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + add r2, #0xfe + str r2, [sp, #0x8] + add r2, r1, #0x0 + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B724 +FUN_0205B724: ; 0x0205B724 + push {lr} + sub sp, #0xc + mov r1, #0x2 + str r1, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + add r1, #0xfe + str r1, [sp, #0x8] + mov r1, #0x1 + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B744 +FUN_0205B744: ; 0x0205B744 + push {lr} + sub sp, #0xc + mov r1, #0x2 + add r3, r1, #0x0 + str r1, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + add r3, #0xfe + str r3, [sp, #0x8] + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B764 +FUN_0205B764: ; 0x0205B764 + push {lr} + sub sp, #0xc + mov r1, #0x2 + str r1, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + add r1, #0xfe + str r1, [sp, #0x8] + mov r1, #0x3 + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B784 +FUN_0205B784: ; 0x0205B784 + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r1, #0x0 + mov r2, #0x2 + str r1, [sp, #0x4] + lsl r2, r2, #0x8 + str r2, [sp, #0x8] + add r2, r1, #0x0 + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B7A4 +FUN_0205B7A4: ; 0x0205B7A4 + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r2, #0x0 + mov r1, #0x2 + str r2, [sp, #0x4] + lsl r1, r1, #0x8 + str r1, [sp, #0x8] + mov r1, #0x1 + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B7C4 +FUN_0205B7C4: ; 0x0205B7C4 + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r2, #0x0 + mov r1, #0x2 + str r2, [sp, #0x4] + lsl r1, r1, #0x8 + str r1, [sp, #0x8] + mov r1, #0x2 + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B7E4 +FUN_0205B7E4: ; 0x0205B7E4 + push {lr} + sub sp, #0xc + mov r1, #0x3 + mov r3, #0x2 + str r1, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + lsl r3, r3, #0x8 + str r3, [sp, #0x8] + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B804 +FUN_0205B804: ; 0x0205B804 + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r1, #0x0 + mov r2, #0x2 + str r1, [sp, #0x4] + lsl r2, r2, #0x8 + str r2, [sp, #0x8] + lsl r2, r2, #0x4 + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B824 +FUN_0205B824: ; 0x0205B824 + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + mov r1, #0x2 + lsl r1, r1, #0x8 + str r1, [sp, #0x8] + mov r1, #0x1 + lsl r2, r1, #0xd + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B848 +FUN_0205B848: ; 0x0205B848 + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + mov r1, #0x2 + lsl r1, r1, #0x8 + str r1, [sp, #0x8] + mov r1, #0x2 + lsl r2, r1, #0xc + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B86C +FUN_0205B86C: ; 0x0205B86C + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + mov r2, #0x2 + lsl r2, r2, #0x8 + str r2, [sp, #0x8] + lsl r2, r2, #0x4 + mov r3, #0x8 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B88C +FUN_0205B88C: ; 0x0205B88C + push {lr} + sub sp, #0xc + mov r2, #0x3 + str r2, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + add r2, #0xfd + str r2, [sp, #0x8] + mov r2, #0x2 + lsl r2, r2, #0xc + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B8AC +FUN_0205B8AC: ; 0x0205B8AC + push {lr} + sub sp, #0xc + mov r2, #0x3 + str r2, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + add r2, #0xfd + mov r1, #0x1 + str r2, [sp, #0x8] + lsl r2, r1, #0xd + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B8CC +FUN_0205B8CC: ; 0x0205B8CC + push {lr} + sub sp, #0xc + mov r2, #0x3 + str r2, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + add r2, #0xfd + mov r1, #0x2 + str r2, [sp, #0x8] + lsl r2, r1, #0xc + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B8EC +FUN_0205B8EC: ; 0x0205B8EC + push {lr} + sub sp, #0xc + mov r1, #0x3 + str r1, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + add r2, r1, #0x0 + add r2, #0xfd + str r2, [sp, #0x8] + mov r2, #0x2 + lsl r2, r2, #0xc + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B910 +FUN_0205B910: ; 0x0205B910 + push {lr} + sub sp, #0xc + mov r1, #0xa + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + mov r1, #0xf0 + str r1, [sp, #0x8] + mov r1, #0x2 + lsl r2, r1, #0xb + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B930 +FUN_0205B930: ; 0x0205B930 + push {lr} + sub sp, #0xc + mov r1, #0xa + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + mov r1, #0xf0 + mov r2, #0x1 + str r1, [sp, #0x8] + mov r1, #0x3 + lsl r2, r2, #0xc + mov r3, #0x10 + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B954 +FUN_0205B954: ; 0x0205B954 + push {lr} + sub sp, #0xc + mov r1, #0xb + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + mov r1, #0x5 + lsl r1, r1, #0x6 + str r1, [sp, #0x8] + mov r1, #0x2 + lsl r2, r1, #0xd + mov r3, #0xc + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_0205B978 +FUN_0205B978: ; 0x0205B978 + push {lr} + sub sp, #0xc + mov r1, #0xb + str r1, [sp, #0x0] + mov r1, #0x0 + str r1, [sp, #0x4] + mov r1, #0x5 + lsl r1, r1, #0x6 + mov r2, #0x1 + str r1, [sp, #0x8] + mov r1, #0x3 + lsl r2, r2, #0xe + mov r3, #0xc + bl FUN_0205B5B0 + mov r0, #0x1 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_0205B99C +FUN_0205B99C: ; 0x0205B99C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x4 + bl FUN_020585DC + str r4, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_02058700 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205B9B4 +FUN_0205B9B4: ; 0x0205B9B4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058600 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0205B9CA + sub r1, r1, #0x1 + str r1, [r0, #0x0] + mov r0, #0x0 + pop {r4, pc} +_0205B9CA: + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205B9D4 +FUN_0205B9D4: ; 0x0205B9D4 + push {r3, lr} + mov r1, #0x1 + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B9E0 +FUN_0205B9E0: ; 0x0205B9E0 + push {r3, lr} + mov r1, #0x2 + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B9EC +FUN_0205B9EC: ; 0x0205B9EC + push {r3, lr} + mov r1, #0x4 + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205B9F8 +FUN_0205B9F8: ; 0x0205B9F8 + push {r3, lr} + mov r1, #0x8 + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BA04 +FUN_0205BA04: ; 0x0205BA04 + push {r3, lr} + mov r1, #0xf + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BA10 +FUN_0205BA10: ; 0x0205BA10 + push {r3, lr} + mov r1, #0x10 + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BA1C +FUN_0205BA1C: ; 0x0205BA1C + push {r3, lr} + mov r1, #0x20 + bl FUN_0205B99C + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BA28 +FUN_0205BA28: ; 0x0205BA28 + push {r4, lr} + mov r1, #0x8 + add r4, r0, #0x0 + bl FUN_020585DC + mov r1, #0x1 + lsl r1, r1, #0x10 + str r1, [r0, #0x4] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205BA4C +FUN_0205BA4C: ; 0x0205BA4C + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, [r4, #0x4] + add r0, r1, r0 + str r0, [r4, #0x0] + add r1, sp, #0x0 + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + ldr r0, [r4, #0x0] + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B94 + ldr r1, [r4, #0x0] + asr r0, r1, #0xe + lsr r0, r0, #0x11 + add r0, r1, r0 + asr r0, r0, #0xf + cmp r0, #0x28 + bge _0205BA88 + add sp, #0xc + mov r0, #0x0 + pop {r4-r5, pc} +_0205BA88: + add r0, r5, #0x0 + bl FUN_02058700 + mov r0, #0x1 + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_0205BA94 +FUN_0205BA94: ; 0x0205BA94 + push {r4, lr} + mov r1, #0x8 + add r4, r0, #0x0 + bl FUN_020585DC + mov r1, #0x5 + lsl r1, r1, #0x12 + str r1, [r0, #0x0] + ldr r1, _0205BABC ; =0xFFFF0000 + str r1, [r0, #0x4] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + nop +_0205BABC: .word 0xFFFF0000 + + thumb_func_start FUN_0205BAC0 +FUN_0205BAC0: ; 0x0205BAC0 + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, [r4, #0x4] + add r0, r1, r0 + str r0, [r4, #0x0] + bpl _0205BADA + mov r0, #0x0 + str r0, [r4, #0x0] +_0205BADA: + add r1, sp, #0x0 + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + ldr r0, [r4, #0x0] + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B94 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ble _0205BAFA + add sp, #0xc + mov r0, #0x0 + pop {r4-r5, pc} +_0205BAFA: + add r0, r5, #0x0 + bl FUN_02058700 + mov r0, #0x1 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0205BB08 +FUN_0205BB08: ; 0x0205BB08 + push {r4, lr} + mov r1, #0x2 + add r4, r0, #0x0 + lsl r1, r1, #0x8 + bl FUN_02058410 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205BB20 +FUN_0205BB20: ; 0x0205BB20 + push {r4, lr} + mov r1, #0x2 + add r4, r0, #0x0 + lsl r1, r1, #0x8 + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205BB38 +FUN_0205BB38: ; 0x0205BB38 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x80 + bl FUN_02058410 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205BB4C +FUN_0205BB4C: ; 0x0205BB4C + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x80 + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205BB60 +FUN_0205BB60: ; 0x0205BB60 + push {r4, lr} + mov r1, #0x1 + add r4, r0, #0x0 + lsl r1, r1, #0x8 + bl FUN_02058410 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205BB78 +FUN_0205BB78: ; 0x0205BB78 + push {r4, lr} + mov r1, #0x1 + add r4, r0, #0x0 + lsl r1, r1, #0x8 + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205BB90 +FUN_0205BB90: ; 0x0205BB90 + push {r4-r6, lr} + add r6, r1, #0x0 + mov r1, #0x8 + add r5, r0, #0x0 + bl FUN_020585DC + add r4, r0, #0x0 + str r6, [r4, #0x0] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r2, #0x1 + bl FUN_021E7AC0 + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02058700 + pop {r4-r6, pc} + + thumb_func_start FUN_0205BBB4 +FUN_0205BBB4: ; 0x0205BBB4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + bl FUN_021E799C + cmp r0, #0x1 + bne _0205BBD8 + ldr r0, [r4, #0x4] + bl FUN_02064520 + add r0, r5, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r3-r5, pc} +_0205BBD8: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205BBDC +FUN_0205BBDC: ; 0x0205BBDC + push {r3, lr} + mov r1, #0x0 + bl FUN_0205BB90 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205BBE8 +FUN_0205BBE8: ; 0x0205BBE8 + push {r3, lr} + mov r1, #0x1 + bl FUN_0205BB90 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205BBF4 +FUN_0205BBF4: ; 0x0205BBF4 + push {r3-r7, lr} + add r4, r1, #0x0 + mov r1, #0x8 + add r5, r0, #0x0 + add r7, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020585DC + strh r4, [r0, #0x0] + strh r6, [r0, #0x2] + strh r7, [r0, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02059C0C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020584D8 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + mov r1, #0x4 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_02058700 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205BC34 +FUN_0205BC34: ; 0x0205BC34 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + mov r2, #0x6 + ldrsh r2, [r4, r2] + mov r1, #0x0 + ldrsh r1, [r4, r1] + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + add r0, r5, #0x0 + bl FUN_02059CC8 + add r0, r5, #0x0 + bl FUN_02059D1C + mov r0, #0x6 + ldrsh r1, [r4, r0] + add r1, r1, #0x1 + strh r1, [r4, #0x6] + ldrsh r1, [r4, r0] + mov r0, #0x4 + ldrsh r0, [r4, r0] + cmp r1, r0 + bge _0205BC6E + mov r0, #0x0 + pop {r4-r6, pc} +_0205BC6E: + add r0, r5, #0x0 + mov r1, #0x28 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_02059C60 + add r0, r5, #0x0 + bl FUN_020586A0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0205BC94 +FUN_0205BC94: ; 0x0205BC94 + push {r3, lr} + mov r2, #0x6 + mov r1, #0x0 + add r3, r2, #0x0 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BCA4 +FUN_0205BCA4: ; 0x0205BCA4 + push {r3, lr} + mov r2, #0x6 + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BCB4 +FUN_0205BCB4: ; 0x0205BCB4 + push {r3, lr} + mov r2, #0x6 + mov r1, #0x2 + add r3, r2, #0x0 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BCC4 +FUN_0205BCC4: ; 0x0205BCC4 + push {r3, lr} + mov r2, #0x6 + mov r1, #0x3 + add r3, r2, #0x0 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BCD4 +FUN_0205BCD4: ; 0x0205BCD4 + push {r3, lr} + ldr r1, _0205BCE8 ; =0x020F6C6C + bl FUN_0205BC34 + cmp r0, #0x1 + bne _0205BCE4 + mov r0, #0x1 + pop {r3, pc} +_0205BCE4: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205BCE8: .word 0x020F6C6C + + thumb_func_start FUN_0205BCEC +FUN_0205BCEC: ; 0x0205BCEC + push {r3, lr} + mov r1, #0x0 + mov r2, #0x3 + mov r3, #0x7 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BCFC +FUN_0205BCFC: ; 0x0205BCFC + push {r3, lr} + mov r1, #0x1 + mov r2, #0x3 + mov r3, #0x7 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD0C +FUN_0205BD0C: ; 0x0205BD0C + push {r3, lr} + mov r1, #0x2 + mov r2, #0x3 + mov r3, #0x7 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD1C +FUN_0205BD1C: ; 0x0205BD1C + push {r3, lr} + mov r1, #0x3 + add r2, r1, #0x0 + mov r3, #0x7 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD2C +FUN_0205BD2C: ; 0x0205BD2C + push {r3, lr} + ldr r1, _0205BD40 ; =0x020F6C48 + bl FUN_0205BC34 + cmp r0, #0x1 + bne _0205BD3C + mov r0, #0x1 + pop {r3, pc} +_0205BD3C: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205BD40: .word 0x020F6C48 + + thumb_func_start FUN_0205BD44 +FUN_0205BD44: ; 0x0205BD44 + push {r3, lr} + mov r1, #0x0 + mov r2, #0x7 + mov r3, #0x8 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD54 +FUN_0205BD54: ; 0x0205BD54 + push {r3, lr} + mov r1, #0x1 + mov r2, #0x7 + mov r3, #0x8 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD64 +FUN_0205BD64: ; 0x0205BD64 + push {r3, lr} + mov r1, #0x2 + mov r2, #0x7 + mov r3, #0x8 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD74 +FUN_0205BD74: ; 0x0205BD74 + push {r3, lr} + mov r1, #0x3 + mov r2, #0x7 + mov r3, #0x8 + bl FUN_0205BBF4 + mov r0, #0x1 + pop {r3, pc} + + thumb_func_start FUN_0205BD84 +FUN_0205BD84: ; 0x0205BD84 + push {r3, lr} + ldr r1, _0205BD98 ; =0x020F6C84 + bl FUN_0205BC34 + cmp r0, #0x1 + bne _0205BD94 + mov r0, #0x1 + pop {r3, pc} +_0205BD94: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205BD98: .word 0x020F6C84 + + thumb_func_start FUN_0205BD9C +FUN_0205BD9C: ; 0x0205BD9C + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x4 + bl FUN_020585DC + add r0, r4, #0x0 + mov r1, #0x9 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205BDB8 +FUN_0205BDB8: ; 0x0205BDB8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058600 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x8 + blt _0205BDE0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020584AC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 +_0205BDE0: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205BDE4 +FUN_0205BDE4: ; 0x0205BDE4 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + mov r1, #0x4 + bl FUN_020585DC + add r0, r4, #0x0 + bl FUN_0205EB20 + cmp r0, #0x0 + beq _0205BDFE + bl FUN_02064520 +_0205BDFE: + add r1, sp, #0x0 + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + add r0, r4, #0x0 + bl FUN_02058B94 + add r0, r4, #0x0 + bl FUN_0224D2E0 + ldr r1, _0205BE34 ; =0x00010004 + add r0, r4, #0x0 + bl FUN_02058410 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058418 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x0 + add sp, #0xc + pop {r3-r4, pc} + nop +_0205BE34: .word 0x00010004 + + thumb_func_start FUN_0205BE38 +FUN_0205BE38: ; 0x0205BE38 + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl FUN_02058600 + add r4, r0, #0x0 + ldr r0, _0205BE98 ; =0x02105F9C + add r1, sp, #0x0 + ldr r2, [r0, #0x0] + mov r0, #0x0 + str r0, [r1, #0x0] + str r0, [r1, #0x4] + str r0, [r1, #0x8] + ldr r0, [r4, #0x0] + lsl r0, r0, #0x2 + ldr r0, [r2, r0] + str r0, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02058B94 + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + cmp r0, #0x10 + bhs _0205BE70 + add sp, #0xc + mov r0, #0x0 + pop {r4-r5, pc} +_0205BE70: + mov r0, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02058B94 + ldr r1, _0205BE9C ; =0x00020028 + add r0, r5, #0x0 + bl FUN_02058410 + add r0, r5, #0x0 + bl FUN_0205EB2C + add r0, r5, #0x0 + bl FUN_02058700 + mov r0, #0x1 + add sp, #0xc + pop {r4-r5, pc} + nop +_0205BE98: .word 0x02105F9C +_0205BE9C: .word 0x00020028 + + thumb_func_start FUN_0205BEA0 +FUN_0205BEA0: ; 0x0205BEA0 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x4 + bl FUN_020585DC + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205BEBC +FUN_0205BEBC: ; 0x0205BEBC + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x4 + bl FUN_020585DC + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205BED8 +FUN_0205BED8: ; 0x0205BED8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058600 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x15 + bhs _0205BEEE + mov r0, #0x0 + pop {r4, pc} +_0205BEEE: + add r0, r4, #0x0 + bl FUN_02058700 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205BEF8 +FUN_0205BEF8: ; 0x0205BEF8 + ldr r3, _0205BEFC ; =FUN_0205BF24 + bx r3 + .balign 4 +_0205BEFC: .word FUN_0205BF24 + + thumb_func_start FUN_0205BF00 +FUN_0205BF00: ; 0x0205BF00 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0205BF40 + cmp r0, #0x0 + bne _0205BF10 + mov r0, #0x0 + pop {r4, pc} +_0205BF10: + add r0, r4, #0x0 + bl FUN_0205BF5C + cmp r0, #0x0 + beq _0205BF1E + mov r0, #0x1 + pop {r4, pc} +_0205BF1E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205BF24 +FUN_0205BF24: ; 0x0205BF24 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058488 + add r1, r0, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0205BF3C ; =0x020F7118 + add r0, r4, #0x0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0205BF3C: .word 0x020F7118 + + thumb_func_start FUN_0205BF40 +FUN_0205BF40: ; 0x0205BF40 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058488 + add r1, r0, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0205BF58 ; =0x020F7148 + add r0, r4, #0x0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0205BF58: .word 0x020F7148 + + thumb_func_start FUN_0205BF5C +FUN_0205BF5C: ; 0x0205BF5C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058488 + add r1, r0, #0x0 + lsl r2, r1, #0x2 + ldr r1, _0205BF74 ; =0x020F7178 + add r0, r4, #0x0 + ldr r1, [r1, r2] + blx r1 + pop {r4, pc} + nop +_0205BF74: .word 0x020F7178 + + thumb_func_start FUN_0205BF78 +FUN_0205BF78: ; 0x0205BF78 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02058B2C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B14 + cmp r5, r0 + beq _0205BF90 + mov r0, #0x1 + pop {r3-r5, pc} +_0205BF90: + add r0, r4, #0x0 + bl FUN_02058B4C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B24 + cmp r5, r0 + beq _0205BFA6 + mov r0, #0x1 + pop {r3-r5, pc} +_0205BFA6: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205BFAC +FUN_0205BFAC: ; 0x0205BFAC + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02058B2C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B14 + cmp r5, r0 + beq _0205BFC4 + mov r0, #0x0 + pop {r3-r5, pc} +_0205BFC4: + add r0, r4, #0x0 + bl FUN_02058B4C + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B24 + cmp r5, r0 + bne _0205BFDA + mov r0, #0x1 + pop {r3-r5, pc} +_0205BFDA: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205BFE0 +FUN_0205BFE0: ; 0x0205BFE0 + bx lr + .balign 4 + + thumb_func_start FUN_0205BFE4 +FUN_0205BFE4: ; 0x0205BFE4 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205BFE8 +FUN_0205BFE8: ; 0x0205BFE8 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205BFEC +FUN_0205BFEC: ; 0x0205BFEC + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x9 + bl FUN_020585B4 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058510 + strb r0, [r4, #0x3] + pop {r3-r5, pc} + + thumb_func_start FUN_0205C004 +FUN_0205C004: ; 0x0205C004 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020585D8 + add r4, r0, #0x0 + ldrb r0, [r4, #0x0] + cmp r0, #0x3 + bhi _0205C07C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205C020: ; jump table (using 16-bit offset) + .short _0205C028 - _0205C020 - 2; case 0 + .short _0205C03A - _0205C020 - 2; case 1 + .short _0205C062 - _0205C020 - 2; case 2 + .short _0205C078 - _0205C020 - 2; case 3 +_0205C028: + add r0, r5, #0x0 + bl FUN_0205BF78 + cmp r0, #0x1 + bne _0205C07C + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + b _0205C07C +_0205C03A: + add r0, r5, #0x0 + bl FUN_0205BFAC + cmp r0, #0x0 + beq _0205C07C + mov r0, #0x2 + ldrsb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, #0x2] + ldrsb r1, [r4, r0] + mov r0, #0x3 + ldrsb r0, [r4, r0] + cmp r1, r0 + bge _0205C05C + mov r0, #0x0 + strb r0, [r4, #0x0] + b _0205C07C +_0205C05C: + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] +_0205C062: + add r0, r5, #0x0 + bl FUN_02058854 + cmp r0, #0x1 + beq _0205C07C + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x0 + strb r0, [r4, #0x2] + strb r0, [r4, #0x1] +_0205C078: + mov r0, #0x1 + pop {r3-r5, pc} +_0205C07C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205C080 +FUN_0205C080: ; 0x0205C080 + push {r4-r6, lr} + sub sp, #0x20 + add r5, r0, #0x0 + bl FUN_020585D8 + add r4, r0, #0x0 + ldrb r0, [r4, #0x1] + cmp r0, #0x3 + bhi _0205C15E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205C09E: ; jump table (using 16-bit offset) + .short _0205C0A6 - _0205C09E - 2; case 0 + .short _0205C0C8 - _0205C09E - 2; case 1 + .short _0205C0FA - _0205C09E - 2; case 2 + .short _0205C110 - _0205C09E - 2; case 3 +_0205C0A6: + ldr r3, _0205C164 ; =0x020F70D8 + add r2, sp, #0x10 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + add r0, r5, #0x0 + bl FUN_020584C4 + strb r0, [r4, #0x4] + lsl r1, r0, #0x2 + add r0, sp, #0x10 + ldr r0, [r0, r1] + strb r0, [r4, #0x5] + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] +_0205C0C8: + ldr r6, _0205C168 ; =0x020F70E8 + add r3, sp, #0x0 + add r2, r3, #0x0 + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + mov r0, #0x5 + ldrsb r0, [r4, r0] + lsl r3, r0, #0x3 + mov r0, #0x6 + ldrsb r0, [r4, r0] + lsl r1, r0, #0x2 + add r0, r2, r3 + ldr r0, [r1, r0] + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] +_0205C0FA: + add r0, r5, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + bne _0205C10A + add sp, #0x20 + mov r0, #0x1 + pop {r4-r6, pc} +_0205C10A: + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] +_0205C110: + mov r0, #0x8 + ldrsb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, #0x8] + ldrsb r0, [r4, r0] + cmp r0, #0x8 + bge _0205C124 + add sp, #0x20 + mov r0, #0x1 + pop {r4-r6, pc} +_0205C124: + mov r0, #0x0 + strb r0, [r4, #0x8] + mov r0, #0x7 + ldrsb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, #0x7] + ldrsb r0, [r4, r0] + cmp r0, #0x4 + bge _0205C148 + mov r0, #0x6 + ldrsb r0, [r4, r0] + add sp, #0x20 + add r1, r0, #0x1 + mov r0, #0x1 + and r1, r0 + strb r1, [r4, #0x6] + strb r0, [r4, #0x1] + pop {r4-r6, pc} +_0205C148: + mov r1, #0x4 + ldrsb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_020584AC + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] + mov r0, #0x0 + strb r0, [r4, #0x7] + strb r0, [r4, #0x0] +_0205C15E: + mov r0, #0x0 + add sp, #0x20 + pop {r4-r6, pc} + .balign 4 +_0205C164: .word 0x020F70D8 +_0205C168: .word 0x020F70E8 + + thumb_func_start FUN_0205C16C +FUN_0205C16C: ; 0x0205C16C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x9 + bl FUN_020585B4 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02058510 + strb r0, [r4, #0x3] + add r0, r5, #0x0 + bl FUN_02058488 + cmp r0, #0x5 + beq _0205C190 + mov r0, #0x1 + b _0205C192 +_0205C190: + mov r0, #0x0 +_0205C192: + strb r0, [r4, #0x5] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205C198 +FUN_0205C198: ; 0x0205C198 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020585D8 + add r4, r0, #0x0 + ldrb r0, [r4, #0x0] + cmp r0, #0x3 + bhi _0205C210 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205C1B4: ; jump table (using 16-bit offset) + .short _0205C1BC - _0205C1B4 - 2; case 0 + .short _0205C1CE - _0205C1B4 - 2; case 1 + .short _0205C1F6 - _0205C1B4 - 2; case 2 + .short _0205C20C - _0205C1B4 - 2; case 3 +_0205C1BC: + add r0, r5, #0x0 + bl FUN_0205BF78 + cmp r0, #0x1 + bne _0205C210 + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + b _0205C210 +_0205C1CE: + add r0, r5, #0x0 + bl FUN_0205BFAC + cmp r0, #0x0 + beq _0205C210 + mov r0, #0x2 + ldrsb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, #0x2] + ldrsb r1, [r4, r0] + mov r0, #0x3 + ldrsb r0, [r4, r0] + cmp r1, r0 + bge _0205C1F0 + mov r0, #0x0 + strb r0, [r4, #0x0] + b _0205C210 +_0205C1F0: + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] +_0205C1F6: + add r0, r5, #0x0 + bl FUN_02058854 + cmp r0, #0x1 + beq _0205C210 + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x0 + strb r0, [r4, #0x2] + strb r0, [r4, #0x1] +_0205C20C: + mov r0, #0x1 + pop {r3-r5, pc} +_0205C210: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205C214 +FUN_0205C214: ; 0x0205C214 + push {r3-r7, lr} + sub sp, #0x20 + ldr r3, _0205C330 ; =0x020F70F8 + add r2, sp, #0x0 + add r7, r0, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + add r0, r7, #0x0 + bl FUN_020585D8 + add r4, r0, #0x0 + ldrb r0, [r4, #0x1] + cmp r0, #0x3 + bhi _0205C32A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205C248: ; jump table (using 16-bit offset) + .short _0205C250 - _0205C248 - 2; case 0 + .short _0205C296 - _0205C248 - 2; case 1 + .short _0205C2BC - _0205C248 - 2; case 2 + .short _0205C2D2 - _0205C248 - 2; case 3 +_0205C250: + add r0, r7, #0x0 + bl FUN_020584C4 + mov r5, #0x0 + add r6, r0, #0x0 + add r1, r5, #0x0 + add r0, sp, #0x0 + mov r2, #0x5 + b _0205C266 +_0205C262: + add r1, r1, #0x4 + add r5, r5, #0x1 +_0205C266: + cmp r5, #0x4 + bge _0205C276 + ldrsb r3, [r4, r2] + lsl r3, r3, #0x4 + add r3, r0, r3 + ldr r3, [r1, r3] + cmp r6, r3 + bne _0205C262 +_0205C276: + cmp r5, #0x4 + blt _0205C27E + bl ErrorHandling +_0205C27E: + add r0, r5, #0x1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + strb r6, [r4, #0x4] + add r0, r2, r1 + strb r0, [r4, #0x6] + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] +_0205C296: + mov r0, #0x5 + ldrsb r0, [r4, r0] + add r2, sp, #0x0 + lsl r3, r0, #0x4 + mov r0, #0x6 + ldrsb r0, [r4, r0] + lsl r1, r0, #0x2 + add r0, r2, r3 + ldr r0, [r1, r0] + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0205AE0C + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] +_0205C2BC: + add r0, r7, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + bne _0205C2CC + add sp, #0x20 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C2CC: + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] +_0205C2D2: + mov r0, #0x8 + ldrsb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, #0x8] + ldrsb r0, [r4, r0] + cmp r0, #0x8 + bge _0205C2E6 + add sp, #0x20 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C2E6: + mov r0, #0x0 + strb r0, [r4, #0x8] + mov r0, #0x7 + ldrsb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, #0x7] + ldrsb r0, [r4, r0] + cmp r0, #0x4 + bge _0205C314 + mov r0, #0x6 + ldrsb r0, [r4, r0] + add sp, #0x20 + add r0, r0, #0x1 + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + strb r0, [r4, #0x6] + mov r0, #0x1 + strb r0, [r4, #0x1] + pop {r3-r7, pc} +_0205C314: + mov r1, #0x4 + ldrsb r1, [r4, r1] + add r0, r7, #0x0 + bl FUN_020584AC + ldrb r0, [r4, #0x1] + add r0, r0, #0x1 + strb r0, [r4, #0x1] + mov r0, #0x0 + strb r0, [r4, #0x7] + strb r0, [r4, #0x0] +_0205C32A: + mov r0, #0x0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_0205C330: .word 0x020F70F8 + + thumb_func_start FUN_0205C334 +FUN_0205C334: ; 0x0205C334 + cmp r0, #0x64 + bne _0205C33C + mov r0, #0x1 + bx lr +_0205C33C: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205C340 +FUN_0205C340: ; 0x0205C340 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020585B0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _0205C352 + ldr r0, _0205C370 ; =0x0000FFFF + pop {r4, pc} +_0205C352: + add r0, r4, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _0205C36C + add r0, r4, #0x0 + bl FUN_02058628 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _0205C36C + ldr r0, [r0, #0x0] + pop {r4, pc} +_0205C36C: + ldr r0, _0205C370 ; =0x0000FFFF + pop {r4, pc} + .balign 4 +_0205C370: .word 0x0000FFFF + + thumb_func_start FUN_0205C374 +FUN_0205C374: ; 0x0205C374 + push {r3, lr} + bl FUN_020585B0 + mov r1, #0x1 + strh r1, [r0, #0x2] + pop {r3, pc} + + thumb_func_start FUN_0205C380 +FUN_0205C380: ; 0x0205C380 + push {r3, lr} + mov r1, #0x4 + bl FUN_0205858C + mov r1, #0x0 + strh r1, [r0, #0x0] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205C390 +FUN_0205C390: ; 0x0205C390 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058738 + add r1, r5, #0x0 + bl FUN_0204B5FC + strh r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205C3AC +FUN_0205C3AC: ; 0x0205C3AC + bx lr + .balign 4 + + thumb_func_start FUN_0205C3B0 +FUN_0205C3B0: ; 0x0205C3B0 + push {r4, lr} + mov r1, #0x18 + add r4, r0, #0x0 + bl FUN_02058604 + ldr r1, _0205C3CC ; =0x0000FFFF + str r1, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + add r0, r4, #0x0 + bl FUN_0224A310 + pop {r4, pc} + nop +_0205C3CC: .word 0x0000FFFF + + thumb_func_start FUN_0205C3D0 +FUN_0205C3D0: ; 0x0205C3D0 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058628 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058738 + add r1, r5, #0x0 + bl FUN_0204B5FC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_021F2E28 + cmp r0, #0x1 + beq _0205C488 + ldr r0, [r4, #0x4] + cmp r6, r0 + beq _0205C454 + add r1, r4, #0x0 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, #0x8 + bl FUN_021F2094 + add r0, r5, #0x0 + bl FUN_02058738 + add r1, r5, #0x0 + bl FUN_0204B61C + add r1, r6, #0x0 + bl FUN_0205C53C + ldr r1, _0205C48C ; =0x0000FFFF + str r0, [r4, #0x0] + cmp r0, r1 + ldr r0, [r4, #0x4] + beq _0205C440 + cmp r0, #0x0 + beq _0205C432 + add r0, r5, #0x0 + bl FUN_0224A528 +_0205C432: + add r1, r4, #0x0 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, #0x8 + bl FUN_021F1F78 + b _0205C450 +_0205C440: + cmp r0, #0x0 + beq _0205C450 + ldrh r0, [r7, #0x2] + cmp r0, #0x0 + bne _0205C450 + add r0, r5, #0x0 + bl FUN_0224A528 +_0205C450: + mov r0, #0x0 + strh r0, [r7, #0x2] +_0205C454: + add r0, r5, #0x0 + str r6, [r4, #0x4] + bl FUN_021F2E28 + cmp r0, #0x1 + beq _0205C488 + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _0205C488 + add r0, r5, #0x0 + bl FUN_021F2F48 + add r0, r5, #0x0 + bl FUN_021F1DFC + cmp r0, #0x0 + bne _0205C480 + mov r1, #0x1 + ldr r0, [r4, #0x8] + lsl r1, r1, #0xc + bl FUN_0201F854 +_0205C480: + ldr r1, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_021F2F6C +_0205C488: + pop {r3-r7, pc} + nop +_0205C48C: .word 0x0000FFFF + + thumb_func_start FUN_0205C490 +FUN_0205C490: ; 0x0205C490 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02058628 + add r2, r0, #0x0 + add r1, r2, #0x0 + ldr r2, [r2, #0x0] + add r0, r4, #0x0 + add r1, #0x8 + bl FUN_021F2094 + pop {r4, pc} + + thumb_func_start FUN_0205C4A8 +FUN_0205C4A8: ; 0x0205C4A8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02058628 + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _0205C4C0 + add r1, r4, #0x0 + add r1, #0xc + bl FUN_021F20D8 +_0205C4C0: + add r1, r4, #0x0 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, #0x8 + bl FUN_021F2094 + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r3-r5, pc} + + thumb_func_start FUN_0205C4D8 +FUN_0205C4D8: ; 0x0205C4D8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02058628 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_021F2E28 + cmp r0, #0x1 + beq _0205C536 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + bne _0205C516 + ldr r2, [r4, #0x0] + ldr r0, _0205C538 ; =0x0000FFFF + cmp r2, r0 + beq _0205C506 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x8 + bl FUN_021F1F78 + b _0205C510 +_0205C506: + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_0205C510: + add r0, r5, #0x0 + bl FUN_0224A310 +_0205C516: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _0205C536 + add r1, r4, #0x0 + add r1, #0xc + bl FUN_021F20F8 + ldr r1, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_021F2F48 + mov r1, #0x2 + add r0, r5, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058418 +_0205C536: + pop {r3-r5, pc} + .balign 4 +_0205C538: .word 0x0000FFFF + + thumb_func_start FUN_0205C53C +FUN_0205C53C: ; 0x0205C53C + push {r3, lr} + cmp r1, #0x0 + beq _0205C548 + cmp r1, #0x1 + beq _0205C54C + b _0205C550 +_0205C548: + ldr r0, _0205C590 ; =0x0000FFFF + pop {r3, pc} +_0205C54C: + ldr r0, _0205C590 ; =0x0000FFFF + pop {r3, pc} +_0205C550: + sub r2, r0, #0x1 + mov r0, #0xc + ldr r3, _0205C594 ; =0x021F9194 + mul r0, r2 + add r2, r3, r0 + cmp r1, #0x5 + bhi _0205C588 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205C56A: ; jump table (using 16-bit offset) + .short _0205C588 - _0205C56A - 2; case 0 + .short _0205C588 - _0205C56A - 2; case 1 + .short _0205C576 - _0205C56A - 2; case 2 + .short _0205C57C - _0205C56A - 2; case 3 + .short _0205C580 - _0205C56A - 2; case 4 + .short _0205C584 - _0205C56A - 2; case 5 +_0205C576: + mov r0, #0x1 + lsl r0, r0, #0xc + pop {r3, pc} +_0205C57C: + ldr r0, [r2, #0x0] + pop {r3, pc} +_0205C580: + ldr r0, [r2, #0x4] + pop {r3, pc} +_0205C584: + ldr r0, [r2, #0x8] + pop {r3, pc} +_0205C588: + bl ErrorHandling + ldr r0, _0205C590 ; =0x0000FFFF + pop {r3, pc} + .balign 4 +_0205C590: .word 0x0000FFFF +_0205C594: .word 0x021F9194 + + thumb_func_start FUN_0205C598 +FUN_0205C598: ; 0x0205C598 + push {r3-r7, lr} + sub sp, #0x58 + add r5, r0, #0x0 + ldr r7, [r5, #0x38] + add r4, r1, #0x0 + ldr r6, [r5, #0x34] + add r1, sp, #0x40 + str r1, [sp, #0x0] + add r1, r6, #0x0 + add r2, r7, #0x0 + mov r3, #0x0 + bl FUN_0205C6BC + cmp r0, #0x0 + bne _0205C5BC + add sp, #0x58 + mov r0, #0x0 + pop {r3-r7, pc} +_0205C5BC: + ldr r0, [sp, #0x50] + cmp r0, #0x0 + bne _0205C642 + ldr r1, _0205C6B8 ; =0x00000F0A + ldr r2, [sp, #0x54] + add r0, r5, #0x0 + bl FUN_02038C78 + cmp r4, #0x0 + beq _0205C5E4 + add r0, sp, #0x28 + str r0, [sp, #0x0] + ldr r3, [sp, #0x54] + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0205C6BC + cmp r0, #0x0 + bne _0205C604 +_0205C5E4: + ldr r0, [sp, #0x48] + str r0, [sp, #0x0] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x54] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + add r0, r5, #0x0 + bl FUN_02038CA8 + add sp, #0x58 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C604: + ldr r0, [sp, #0x48] + str r0, [sp, #0x0] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x54] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + add r0, r5, #0x0 + bl FUN_02038CA8 + ldr r0, [sp, #0x30] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + str r0, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r5, #0x0 + bl FUN_02038CA8 + add sp, #0x58 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C642: + cmp r0, #0x1 + bne _0205C6AE + cmp r4, #0x0 + bne _0205C650 + add sp, #0x58 + mov r0, #0x0 + pop {r3-r7, pc} +_0205C650: + ldr r2, [sp, #0x54] + ldr r3, [sp, #0x4c] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0205C9F0 + add r1, r0, #0x0 + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + add r0, sp, #0x10 + bl FUN_0205C73C + ldr r1, _0205C6B8 ; =0x00000F0A + ldr r2, [sp, #0x54] + add r0, r5, #0x0 + bl FUN_02038C78 + ldr r0, [sp, #0x48] + str r0, [sp, #0x0] + ldr r0, [sp, #0x4c] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x54] + ldr r2, [sp, #0x40] + ldr r3, [sp, #0x44] + add r0, r5, #0x0 + bl FUN_02038CA8 + ldr r0, [sp, #0x18] + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_02038CA8 + add sp, #0x58 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C6AE: + bl ErrorHandling + mov r0, #0x0 + add sp, #0x58 + pop {r3-r7, pc} + .balign 4 +_0205C6B8: .word 0x00000F0A + + thumb_func_start FUN_0205C6BC +FUN_0205C6BC: ; 0x0205C6BC + push {r3-r7, lr} + sub sp, #0x10 + add r6, r0, #0x0 + mov r0, #0x0 + add r5, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + str r0, [sp, #0xc] + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, sp, #0x4 + add r2, sp, #0xc + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x0 + beq _0205C734 +_0205C6DE: + cmp r4, #0x0 + beq _0205C6E8 + ldr r0, [sp, #0x4] + cmp r4, r0 + beq _0205C724 +_0205C6E8: + ldr r0, [sp, #0x4] + add r1, r7, #0x0 + add r2, sp, #0x8 + bl FUN_0205C794 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x0] + cmp r0, r1 + beq _0205C724 + ldr r0, [sp, #0x4] + bl FUN_0205C9D8 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + bl FUN_02039640 + cmp r0, #0x0 + bne _0205C724 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + ldr r3, [sp, #0x8] + bl FUN_0205C73C + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C724: + add r0, r5, #0x0 + add r1, sp, #0x4 + add r2, sp, #0xc + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x0 + bne _0205C6DE +_0205C734: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205C73C +FUN_0205C73C: ; 0x0205C73C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [r5, #0x0] + str r3, [r5, #0x4] + add r0, r4, #0x0 + bl FUN_02058498 + str r0, [r5, #0x8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020395F4 + str r0, [r5, #0xc] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0203962C + str r0, [r5, #0x10] + str r4, [r5, #0x14] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205C768 +FUN_0205C768: ; 0x0205C768 + push {r3, lr} + bl FUN_02058488 + cmp r0, #0x8 + bhi _0205C792 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205C77E: ; jump table (using 16-bit offset) + .short _0205C792 - _0205C77E - 2; case 0 + .short _0205C792 - _0205C77E - 2; case 1 + .short _0205C792 - _0205C77E - 2; case 2 + .short _0205C792 - _0205C77E - 2; case 3 + .short _0205C790 - _0205C77E - 2; case 4 + .short _0205C790 - _0205C77E - 2; case 5 + .short _0205C790 - _0205C77E - 2; case 6 + .short _0205C790 - _0205C77E - 2; case 7 + .short _0205C790 - _0205C77E - 2; case 8 +_0205C790: + mov r0, #0x1 +_0205C792: + pop {r3, pc} + + thumb_func_start FUN_0205C794 +FUN_0205C794: ; 0x0205C794 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x8] + bl FUN_0205C768 + cmp r0, #0x1 + bne _0205C802 + add r0, r4, #0x0 + bl FUN_02055320 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205532C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020584C4 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + add r2, r0, #0x0 + str r6, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r3, r7, #0x0 + bl FUN_0205C86C + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + beq _0205C7FA + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0205C938 + cmp r0, #0x0 + bne _0205C7FA + ldr r0, [sp, #0x8] + add sp, #0x14 + str r4, [r0, #0x0] + add r0, r6, #0x0 + pop {r4-r7, pc} +_0205C7FA: + mov r0, #0x0 + add sp, #0x14 + mvn r0, r0 + pop {r4-r7, pc} +_0205C802: + cmp r0, #0x2 + bne _0205C864 + add r0, r4, #0x0 + bl FUN_02055320 + str r0, [sp, #0x10] + add r0, r4, #0x0 + bl FUN_0205532C + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058510 + str r0, [sp, #0xc] + mov r4, #0x0 +_0205C822: + str r7, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205C86C + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + beq _0205C856 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0205C938 + cmp r0, #0x0 + bne _0205C856 + ldr r0, [sp, #0x8] + add sp, #0x14 + str r4, [r0, #0x0] + add r0, r6, #0x0 + pop {r4-r7, pc} +_0205C856: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _0205C822 + mov r0, #0x0 + add sp, #0x14 + mvn r0, r0 + pop {r4-r7, pc} +_0205C864: + mov r0, #0x0 + mvn r0, r0 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0205C86C +FUN_0205C86C: ; 0x0205C86C + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, [sp, #0x14] + lsl r5, r4, #0x2 + ldr r4, _0205C884 ; =0x020F71A8 + str r1, [sp, #0x0] + add r1, r2, #0x0 + add r2, r3, #0x0 + ldr r3, [sp, #0x10] + ldr r4, [r4, r5] + blx r4 + pop {r3-r5, pc} + .balign 4 +_0205C884: .word 0x020F71A8 + + thumb_func_start FUN_0205C888 +FUN_0205C888: ; 0x0205C888 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02058B2C + cmp r0, r6 + bne _0205C8AE + add r0, r7, #0x0 + bl FUN_02058B4C + cmp r4, r0 + bge _0205C8AE + sub r1, r0, r5 + cmp r4, r1 + blt _0205C8AE + sub r0, r0, r4 + pop {r3-r7, pc} +_0205C8AE: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + + thumb_func_start FUN_0205C8B4 +FUN_0205C8B4: ; 0x0205C8B4 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02058B2C + cmp r0, r6 + bne _0205C8DA + add r0, r7, #0x0 + bl FUN_02058B4C + cmp r4, r0 + ble _0205C8DA + add r1, r0, r5 + cmp r4, r1 + bgt _0205C8DA + sub r0, r4, r0 + pop {r3-r7, pc} +_0205C8DA: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + + thumb_func_start FUN_0205C8E0 +FUN_0205C8E0: ; 0x0205C8E0 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02058B4C + cmp r0, r6 + bne _0205C906 + add r0, r7, #0x0 + bl FUN_02058B2C + cmp r4, r0 + bge _0205C906 + sub r1, r0, r5 + cmp r4, r1 + blt _0205C906 + sub r0, r0, r4 + pop {r3-r7, pc} +_0205C906: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + + thumb_func_start FUN_0205C90C +FUN_0205C90C: ; 0x0205C90C + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02058B4C + cmp r0, r6 + bne _0205C932 + add r0, r7, #0x0 + bl FUN_02058B2C + cmp r4, r0 + ble _0205C932 + add r1, r0, r5 + cmp r4, r1 + bgt _0205C932 + sub r0, r4, r0 + pop {r3-r7, pc} +_0205C932: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} + + thumb_func_start FUN_0205C938 +FUN_0205C938: ; 0x0205C938 + push {r3-r7, lr} + sub sp, #0x18 + add r5, r1, #0x0 + str r0, [sp, #0x4] + str r2, [sp, #0x8] + cmp r2, #0x0 + bne _0205C94C + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C94C: + bl FUN_02058B2C + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02058B4C + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_02059BF4 + add r6, r4, r0 + add r0, r5, #0x0 + bl FUN_02059C00 + add r4, r7, r0 + ldr r0, [sp, #0x8] + mov r7, #0x0 + sub r0, r0, #0x1 + str r0, [sp, #0x10] + cmp r0, #0x0 + ble _0205C9B4 + mov r0, #0x1 + str r0, [sp, #0x14] +_0205C982: + ldr r0, [sp, #0x4] + ldr r2, [sp, #0xc] + add r1, r6, #0x0 + add r3, r4, #0x0 + str r5, [sp, #0x0] + bl FUN_020598F0 + ldr r1, [sp, #0x14] + bic r0, r1 + beq _0205C99C + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0205C99C: + add r0, r5, #0x0 + bl FUN_02059BF4 + add r6, r6, r0 + add r0, r5, #0x0 + bl FUN_02059C00 + add r4, r4, r0 + ldr r0, [sp, #0x10] + add r7, r7, #0x1 + cmp r7, r0 + blt _0205C982 +_0205C9B4: + ldr r0, [sp, #0x4] + ldr r2, [sp, #0xc] + add r1, r6, #0x0 + add r3, r4, #0x0 + str r5, [sp, #0x0] + bl FUN_020598F0 + mov r1, #0x1 + bic r0, r1 + cmp r0, #0x4 + bne _0205C9D0 + add sp, #0x18 + mov r0, #0x0 + pop {r3-r7, pc} +_0205C9D0: + mov r0, #0x1 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205C9D8 +FUN_0205C9D8: ; 0x0205C9D8 + push {r3, lr} + bl FUN_02058498 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020395F4 + pop {r3, pc} + + thumb_func_start FUN_0205C9E8 +FUN_0205C9E8: ; 0x0205C9E8 + ldr r3, _0205C9EC ; =FUN_0205C9D8 + bx r3 + .balign 4 +_0205C9EC: .word FUN_0205C9D8 + + thumb_func_start FUN_0205C9F0 +FUN_0205C9F0: ; 0x0205C9F0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + mov r0, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, sp, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x0 + beq _0205CA40 + add r7, sp, #0x0 +_0205CA10: + ldr r0, [sp, #0x0] + cmp r0, r4 + beq _0205CA30 + bl FUN_0205C768 + sub r0, r0, #0x1 + cmp r0, #0x1 + bhi _0205CA30 + ldr r0, [sp, #0x0] + bl FUN_0205C9D8 + cmp r6, r0 + bne _0205CA30 + ldr r0, [sp, #0x0] + add sp, #0x8 + pop {r3-r7, pc} +_0205CA30: + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x4 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x0 + bne _0205CA10 +_0205CA40: + bl ErrorHandling + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205CA4C +FUN_0205CA4C: ; 0x0205CA4C + push {r3-r4, lr} + sub sp, #0xc + ldr r4, [sp, #0x18] + str r4, [sp, #0x0] + ldr r4, [sp, #0x1c] + str r4, [sp, #0x4] + ldr r4, [sp, #0x20] + str r4, [sp, #0x8] + bl FUN_0205CA80 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0205CA64 +FUN_0205CA64: ; 0x0205CA64 + push {r4, lr} + add r4, r0, #0x0 + bne _0205CA6E + bl ErrorHandling +_0205CA6E: + add r0, r4, #0x0 + bl FUN_0205CAD4 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205CA78 +FUN_0205CA78: ; 0x0205CA78 + ldr r3, _0205CA7C ; =FUN_0205CAE0 + bx r3 + .balign 4 +_0205CA7C: .word FUN_0205CAE0 + + thumb_func_start FUN_0205CA80 +FUN_0205CA80: ; 0x0205CA80 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x4 + mov r1, #0x2c + add r7, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_020169D8 + add r4, r0, #0x0 + bne _0205CA9A + bl ErrorHandling +_0205CA9A: + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x2c + blx Call_FillMemWithValue + ldr r0, [sp, #0x0] + str r7, [r4, #0x8] + str r0, [r4, #0xc] + ldr r0, [sp, #0x18] + add r1, r4, #0x0 + str r0, [r4, #0x10] + ldr r0, [sp, #0x1c] + mov r2, #0xff + str r0, [r4, #0x14] + ldr r0, [sp, #0x20] + str r0, [r4, #0x18] + str r5, [r4, #0x24] + ldr r0, _0205CAD0 ; =FUN_0205CAF8 + str r6, [r4, #0x28] + bl FUN_0200CA44 + add r4, r0, #0x0 + bne _0205CACC + bl ErrorHandling +_0205CACC: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_0205CAD0: .word FUN_0205CAF8 + + thumb_func_start FUN_0205CAD4 +FUN_0205CAD4: ; 0x0205CAD4 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #0x4] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205CAE0 +FUN_0205CAE0: ; 0x0205CAE0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201B6C8 + add r1, r0, #0x0 + mov r0, #0x4 + bl FUN_02016A8C + add r0, r4, #0x0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start FUN_0205CAF8 +FUN_0205CAF8: ; 0x0205CAF8 + push {r3-r5, lr} + ldr r4, _0205CB10 ; =0x020F71B8 + add r5, r1, #0x0 +_0205CAFE: + ldr r1, [r5, #0x0] + add r0, r5, #0x0 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #0x1 + beq _0205CAFE + pop {r3-r5, pc} + nop +_0205CB10: .word 0x020F71B8 + + thumb_func_start FUN_0205CB14 +FUN_0205CB14: ; 0x0205CB14 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r4, [r5, #0x24] + add r0, r4, #0x0 + bl FUN_02058854 + cmp r0, #0x1 + bne _0205CB2A + add r0, r4, #0x0 + bl FUN_02058914 +_0205CB2A: + mov r0, #0x1 + str r0, [r5, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_0205CB30 +FUN_0205CB30: ; 0x0205CB30 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r5, [r4, #0x24] + add r0, r5, #0x0 + bl FUN_02058854 + cmp r0, #0x1 + bne _0205CB44 + mov r0, #0x0 + pop {r3-r5, pc} +_0205CB44: + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x8] + bl FUN_021F1EC0 + add r0, r5, #0x0 + mov r1, #0x40 + bl FUN_02058410 + mov r0, #0x2 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0205CB5C +FUN_0205CB5C: ; 0x0205CB5C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x28] + bl FUN_020553A0 + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0205CB72 + mov r0, #0x0 + pop {r4, pc} +_0205CB72: + ldr r0, [r4, #0x24] + bl FUN_02058480 + sub r0, #0x33 + cmp r0, #0x3 + bhi _0205CB9A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205CB8A: ; jump table (using 16-bit offset) + .short _0205CB92 - _0205CB8A - 2; case 0 + .short _0205CB92 - _0205CB8A - 2; case 1 + .short _0205CB92 - _0205CB8A - 2; case 2 + .short _0205CB92 - _0205CB8A - 2; case 3 +_0205CB92: + mov r0, #0x7 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} +_0205CB9A: + mov r0, #0x3 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205CBA4 +FUN_0205CBA4: ; 0x0205CBA4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205AD98 + cmp r0, #0x0 + bne _0205CBB6 + mov r0, #0x0 + pop {r4, pc} +_0205CBB6: + mov r0, #0x0 + ldr r1, [r4, #0x8] + mvn r0, r0 + cmp r1, r0 + bne _0205CBC4 + bl ErrorHandling +_0205CBC4: + ldr r0, [r4, #0x8] + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205ADDC + mov r0, #0x4 + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205CBDC +FUN_0205CBDC: ; 0x0205CBDC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0205CBEE + mov r0, #0x0 + pop {r4, pc} +_0205CBEE: + mov r0, #0x5 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205CBF8 +FUN_0205CBF8: ; 0x0205CBF8 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + ldr r0, [r4, #0x24] + add r2, r1, #0x0 + bl FUN_021E7AC0 + str r0, [r4, #0x20] + mov r0, #0x6 + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205CC10 +FUN_0205CC10: ; 0x0205CC10 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x20] + bl FUN_021E799C + cmp r0, #0x1 + bne _0205CC28 + ldr r0, [r4, #0x20] + bl FUN_02064520 + mov r0, #0x9 + str r0, [r4, #0x0] +_0205CC28: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205CC2C +FUN_0205CC2C: ; 0x0205CC2C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + mov r1, #0x65 + bl FUN_0205ADDC + mov r0, #0x8 + str r0, [r4, #0x0] + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0205CC40 +FUN_0205CC40: ; 0x0205CC40 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205AE28 + cmp r0, #0x1 + bne _0205CC52 + mov r0, #0x9 + str r0, [r4, #0x0] +_0205CC52: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205CC58 +FUN_0205CC58: ; 0x0205CC58 + ldr r1, [r0, #0x1c] + add r1, r1, #0x1 + str r1, [r0, #0x1c] + cmp r1, #0x1e + blt _0205CC6A + mov r1, #0x0 + str r1, [r0, #0x1c] + mov r1, #0xa + str r1, [r0, #0x0] +_0205CC6A: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0205CC70 +FUN_0205CC70: ; 0x0205CC70 + ldr r1, [r0, #0xc] + cmp r1, #0x1 + bgt _0205CC7E + mov r1, #0xd + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr +_0205CC7E: + mov r1, #0xb + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr + .balign 4 + + thumb_func_start FUN_0205CC88 +FUN_0205CC88: ; 0x0205CC88 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0205CCAA + ldr r0, [r4, #0x8] + mov r1, #0xc + bl FUN_0205AFDC + add r1, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205ADDC + mov r0, #0xc + str r0, [r4, #0x0] +_0205CCAA: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205CCB0 +FUN_0205CCB0: ; 0x0205CCB0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0205CCC2 + mov r0, #0x0 + pop {r4, pc} +_0205CCC2: + ldr r0, [r4, #0xc] + sub r0, r0, #0x1 + str r0, [r4, #0xc] + mov r0, #0xa + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0205CCD0 +FUN_0205CCD0: ; 0x0205CCD0 + ldr r1, [r0, #0x1c] + add r1, r1, #0x1 + str r1, [r0, #0x1c] + cmp r1, #0x8 + bge _0205CCDE + mov r0, #0x0 + bx lr +_0205CCDE: + mov r1, #0x0 + str r1, [r0, #0x1c] + mov r1, #0xe + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr + .balign 4 + + thumb_func_start FUN_0205CCEC +FUN_0205CCEC: ; 0x0205CCEC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x28] + bl FUN_020553A0 + add r4, r0, #0x0 + bl FUN_02058B2C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058B4C + add r7, r0, #0x0 + ldr r0, [r5, #0x24] + bl FUN_02058B2C + str r0, [sp, #0x0] + ldr r0, [r5, #0x24] + bl FUN_02058B4C + add r3, r0, #0x0 + ldr r2, [sp, #0x0] + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02059E80 + add r6, r0, #0x0 + ldr r0, [r5, #0x28] + bl FUN_020552F8 + cmp r6, r0 + beq _0205CD60 + ldr r0, [r5, #0x18] + cmp r0, #0x0 + beq _0205CD38 + ldr r0, [r5, #0x14] + cmp r0, #0x2 + bne _0205CD60 +_0205CD38: + add r0, r4, #0x0 + bl FUN_0205AD98 + cmp r0, #0x1 + bne _0205CD64 + add r0, r4, #0x0 + mov r1, #0x80 + bl FUN_02058418 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205ADDC + mov r0, #0xf + str r0, [r5, #0x0] + b _0205CD64 +_0205CD60: + mov r0, #0x10 + str r0, [r5, #0x0] +_0205CD64: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0205CD68 +FUN_0205CD68: ; 0x0205CD68 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x28] + bl FUN_020553A0 + add r5, r0, #0x0 + bl FUN_0205AE28 + cmp r0, #0x0 + bne _0205CD80 + mov r0, #0x0 + pop {r3-r5, pc} +_0205CD80: + add r0, r5, #0x0 + bl FUN_0205AE50 + mov r0, #0x10 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205CD90 +FUN_0205CD90: ; 0x0205CD90 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x24] + bl FUN_0205AE50 + ldr r0, [r4, #0x24] + mov r1, #0x0 + bl FUN_02058E90 + mov r0, #0x11 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205CDAC +FUN_0205CDAC: ; 0x0205CDAC + mov r1, #0x1 + str r1, [r0, #0x4] + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205CDB4 +FUN_0205CDB4: ; 0x0205CDB4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + add r1, r0, #0x0 + beq _0205CDD2 + lsl r2, r1, #0x2 + ldr r1, _0205CDD4 ; =0x020F7220 + add r0, r4, #0x0 + ldr r1, [r1, r2] + blx r1 +_0205CDD2: + pop {r4, pc} + .balign 4 +_0205CDD4: .word 0x020F7220 + + thumb_func_start FUN_0205CDD8 +FUN_0205CDD8: ; 0x0205CDD8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + cmp r0, #0x0 + beq _0205CDFA + lsl r1, r0, #0x2 + ldr r0, _0205CDFC ; =0x020F7200 + ldr r1, [r0, r1] + cmp r1, #0x0 + beq _0205CDFA + add r0, r4, #0x0 + blx r1 +_0205CDFA: + pop {r4, pc} + .balign 4 +_0205CDFC: .word 0x020F7200 + + thumb_func_start FUN_0205CE00 +FUN_0205CE00: ; 0x0205CE00 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x4] + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + cmp r0, #0x0 + bne _0205CE22 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0205CE22: + lsl r1, r0, #0x2 + ldr r0, _0205CE44 ; =0x020F7240 + ldr r6, [r0, r1] + cmp r6, #0x0 + beq _0205CE3E + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x4] + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + blx r6 + add sp, #0x8 + pop {r3-r7, pc} +_0205CE3E: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0205CE44: .word 0x020F7240 + + thumb_func_start FUN_0205CE48 +FUN_0205CE48: ; 0x0205CE48 + cmp r0, #0x0 + bne _0205CE58 + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + ldr r0, _0205CE74 ; =0x020F7260 + ldr r0, [r0, r2] + bx lr +_0205CE58: + cmp r0, #0x1 + bne _0205CE68 + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + ldr r0, _0205CE78 ; =0x020F7264 + ldr r0, [r0, r2] + bx lr +_0205CE68: + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + ldr r0, _0205CE7C ; =0x020F7268 + ldr r0, [r0, r2] + bx lr + .balign 4 +_0205CE74: .word 0x020F7260 +_0205CE78: .word 0x020F7264 +_0205CE7C: .word 0x020F7268 + + thumb_func_start FUN_0205CE80 +FUN_0205CE80: ; 0x0205CE80 + push {r3-r7, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + str r4, [r5, #0x18] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + str r0, [r5, #0x0] + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + str r0, [r5, #0x4] + ldr r0, [r4, #0x38] + bl FUN_020553C4 + str r0, [r5, #0x8] + ldr r0, [r4, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r7, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6E0 + strh r0, [r5, #0xe] + ldr r0, [r4, #0x38] + bl FUN_020552F8 + cmp r0, #0x3 + bhi _0205CEEA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205CED4: ; jump table (using 16-bit offset) + .short _0205CEDC - _0205CED4 - 2; case 0 + .short _0205CEE0 - _0205CED4 - 2; case 1 + .short _0205CEE8 - _0205CED4 - 2; case 2 + .short _0205CEE4 - _0205CED4 - 2; case 3 +_0205CEDC: + sub r7, r7, #0x1 + b _0205CEEA +_0205CEE0: + add r7, r7, #0x1 + b _0205CEEA +_0205CEE4: + add r6, r6, #0x1 + b _0205CEEA +_0205CEE8: + sub r6, r6, #0x1 +_0205CEEA: + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0204A6E0 + strh r0, [r5, #0xc] + add r0, r4, #0x0 + add r1, sp, #0x0 + bl FUN_02037024 + ldr r1, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_0204B6C4 + strh r0, [r5, #0x10] + ldr r0, [r4, #0x38] + str r0, [r5, #0x14] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205CF10 +FUN_0205CF10: ; 0x0205CF10 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x20 + mov r1, #0xc + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02016998 + str r5, [r0, #0x0] + strh r4, [r0, #0x4] + strh r6, [r0, #0x6] + strh r7, [r0, #0x8] + add r1, sp, #0x8 + ldrh r1, [r1, #0x10] + strh r1, [r0, #0xa] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205CF34 +FUN_0205CF34: ; 0x0205CF34 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r2, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204649C + mov r0, #0x72 + mov r2, #0x0 + ldr r1, _0205CF74 ; =FUN_0205CFA0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + str r2, [sp, #0x0] + ldrh r1, [r5, #0x4] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_0205CF10 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r3-r7, pc} + nop +_0205CF74: .word FUN_0205CFA0 + + thumb_func_start FUN_0205CF78 +FUN_0205CF78: ; 0x0205CF78 + push {r3-r4, lr} + sub sp, #0x4 + mov r2, #0x0 + add r4, r0, #0x0 + str r2, [sp, #0x0] + add r0, r1, #0x0 + ldrh r1, [r4, #0x28] + add r3, r2, #0x0 + bl FUN_0205CF10 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, _0205CF9C ; =FUN_0205CFA0 + bl FUN_020463CC + add sp, #0x4 + pop {r3-r4, pc} + nop +_0205CF9C: .word FUN_0205CFA0 + + thumb_func_start FUN_0205CFA0 +FUN_0205CFA0: ; 0x0205CFA0 + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02046530 + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + cmp r0, #0x0 + beq _0205CFC6 + cmp r0, #0x1 + beq _0205D016 + b _0205D020 +_0205CFC6: + add r0, r5, #0x0 + add r1, sp, #0x0 + bl FUN_02037024 + ldr r1, [r4, #0x0] + ldr r2, [sp, #0x0] + lsl r1, r1, #0x10 + add r0, r7, #0x0 + lsr r1, r1, #0x10 + mov r3, #0x0 + bl FUN_02038CD8 + add r0, r5, #0x0 + mov r1, #0x29 + bl FUN_02039438 + ldrh r1, [r4, #0x4] + strh r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x2a + bl FUN_02039438 + ldrh r1, [r4, #0x6] + strh r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x2b + bl FUN_02039438 + ldrh r1, [r4, #0x8] + strh r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x2c + bl FUN_02039438 + ldrh r1, [r4, #0xa] + strh r1, [r0, #0x0] + ldr r0, [r6, #0x0] + add r0, r0, #0x1 + str r0, [r6, #0x0] + b _0205D020 +_0205D016: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} +_0205D020: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0205D024 +FUN_0205D024: ; 0x0205D024 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_0204652C + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02025838 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + ldr r0, [r5, #0xc] + bl FUN_02022504 + str r0, [r4, #0x10] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r7, r0 + str r0, [r4, #0x18] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x5 + add r0, #0x20 + strb r1, [r0, #0x0] + str r5, [r4, #0x1c] + ldrh r0, [r6, #0x4] + add r2, r4, #0x0 + strh r0, [r4, #0x24] + add r0, r4, #0x0 + ldrb r1, [r6, #0x6] + add r0, #0x22 + strb r1, [r0, #0x0] + ldr r1, _0205D0B4 ; =0x020F96DC + add r0, r5, #0x0 + bl FUN_020373D4 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r4, [r7, r0] + ldr r1, _0205D0B8 ; =FUN_02035E50 + add r0, r7, #0x0 + bl FUN_02035D04 + pop {r3-r7, pc} + nop +_0205D0B4: .word 0x020F96DC +_0205D0B8: .word FUN_02035E50 + + thumb_func_start FUN_0205D0BC +FUN_0205D0BC: ; 0x0205D0BC + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02037EB8 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _0205D0E8 ; =FUN_02036A78 + add r0, r4, #0x0 + bl FUN_02035D04 + pop {r3-r5, pc} + nop +_0205D0E8: .word FUN_02036A78 + + thumb_func_start FUN_0205D0EC +FUN_0205D0EC: ; 0x0205D0EC + push {r3, lr} + ldr r1, _0205D0F8 ; =FUN_0205D0FC + bl FUN_0205DD04 + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0205D0F8: .word FUN_0205D0FC + + thumb_func_start FUN_0205D0FC +FUN_0205D0FC: ; 0x0205D0FC + ldr r3, _0205D100 ; =FUN_02037EB8 + bx r3 + .balign 4 +_0205D100: .word FUN_02037EB8 + + thumb_func_start FUN_0205D104 +FUN_0205D104: ; 0x0205D104 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205D140 ; =FUN_02049844 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r5, #0x0 + bl FUN_0204976C + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + mov r0, #0x0 + add r5, #0x8c + str r0, [r5, #0x0] + pop {r3-r5, pc} + nop +_0205D140: .word FUN_02049844 + + thumb_func_start FUN_0205D144 +FUN_0205D144: ; 0x0205D144 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204976C + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x34] + bl FUN_02058780 + ldr r0, [r5, #0x0] + ldr r1, _0205D16C ; =FUN_02049844 + add r2, r4, #0x0 + bl FUN_020463CC + ldr r1, [r5, #0x0] + mov r0, #0x0 + add r1, #0x8c + str r0, [r1, #0x0] + pop {r3-r5, pc} + .balign 4 +_0205D16C: .word FUN_02049844 + + thumb_func_start FUN_0205D170 +FUN_0205D170: ; 0x0205D170 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02034824 + cmp r0, #0x0 + bne _0205D184 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D184: + ldr r0, [r5, #0x0] + bl FUN_02034908 + cmp r0, #0x0 + bne _0205D194 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D194: + ldr r0, [r5, #0x14] + bl FUN_02055738 + cmp r0, #0x1 + bne _0205D1A4 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D1A4: + ldr r0, [r5, #0x18] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + beq _0205D1C4 + ldr r0, [r5, #0x18] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _0205D1CA +_0205D1C4: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D1CA: + ldr r0, [r5, #0x14] + bl FUN_020553C4 + cmp r0, #0x2 + bne _0205D1DA + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D1DA: + ldrh r0, [r5, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B78 + cmp r0, #0x1 + bne _0205D1EE + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D1EE: + ldr r0, [r5, #0x18] + ldr r0, [r0, #0x38] + bl FUN_02055320 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, #0x18] + ldr r0, [r0, #0x38] + bl FUN_0205532C + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, [r5, #0x18] + add r1, r4, #0x0 + bl FUN_02034D44 + cmp r0, #0x0 + bne _0205D218 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D218: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205D21C +FUN_0205D21C: ; 0x0205D21C + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205D24C ; =FUN_0205D264 + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + str r1, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r3-r5, pc} + nop +_0205D24C: .word FUN_0205D264 + + thumb_func_start FUN_0205D250 +FUN_0205D250: ; 0x0205D250 + push {r3, lr} + ldr r0, [r0, #0x0] + ldr r1, _0205D260 ; =FUN_0205D264 + mov r2, #0x0 + bl FUN_020463CC + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205D260: .word FUN_0205D264 + + thumb_func_start FUN_0205D264 +FUN_0205D264: ; 0x0205D264 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046530 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x3 + bhi _0205D324 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205D288: ; jump table (using 16-bit offset) + .short _0205D290 - _0205D288 - 2; case 0 + .short _0205D296 - _0205D288 - 2; case 1 + .short _0205D314 - _0205D288 - 2; case 2 + .short _0205D31A - _0205D288 - 2; case 3 +_0205D290: + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _0205D324 +_0205D296: + ldr r0, [r4, #0x38] + bl FUN_020553C4 + cmp r0, #0x1 + bne _0205D2D6 + ldr r0, [r4, #0x38] + bl FUN_020553A0 + bl FUN_02058914 + ldr r0, [r4, #0x38] + mov r1, #0x1 + bl FUN_021E5FD8 + ldr r0, [r4, #0x38] + bl FUN_021E5FE0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0204AB20 + ldr r1, [r4, #0x1c] + add r0, r4, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0204AB58 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_0204ABDC + b _0205D30C +_0205D2D6: + mov r1, #0x12 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + bl FUN_0204AB20 + mov r1, #0x12 + add r0, r4, #0x0 + lsl r1, r1, #0x6 + mov r2, #0x1 + bl FUN_0204ABDC + ldr r0, [r4, #0x38] + bl FUN_020553A0 + bl FUN_02058914 + ldr r0, [r4, #0x38] + mov r1, #0x2 + bl FUN_021E5FD8 + ldr r0, [r4, #0x38] + bl FUN_021E5FE0 + add r4, #0x90 + ldr r0, [r4, #0x0] + bl FUN_0205DD40 +_0205D30C: + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _0205D324 +_0205D314: + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _0205D324 +_0205D31A: + ldr r0, [r4, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r3-r5, pc} +_0205D324: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205D328 +FUN_0205D328: ; 0x0205D328 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0205D336 + mov r0, #0x2 + pop {r3-r5, pc} +_0205D336: + ldr r0, [r4, #0x14] + bl FUN_02055738 + cmp r0, #0x1 + bne _0205D344 + mov r0, #0x1 + pop {r3-r5, pc} +_0205D344: + ldr r0, [r4, #0x14] + bl FUN_020553A0 + ldrh r1, [r4, #0xe] + add r5, r0, #0x0 + bl FUN_02059BB4 + cmp r0, #0x1 + beq _0205D362 + ldrh r1, [r4, #0xe] + add r0, r5, #0x0 + bl FUN_02059BD4 + cmp r0, #0x1 + bne _0205D366 +_0205D362: + mov r0, #0x1 + pop {r3-r5, pc} +_0205D366: + ldrh r0, [r4, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054798 + cmp r0, #0x1 + beq _0205D390 + ldrh r0, [r4, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054974 + cmp r0, #0x1 + beq _0205D390 + ldrh r0, [r4, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054990 + cmp r0, #0x1 + bne _0205D396 +_0205D390: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D396: + ldr r0, [r4, #0x0] + bl FUN_020348B4 + cmp r0, #0x0 + bne _0205D3A6 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D3A6: + ldr r0, [r4, #0x8] + cmp r0, #0x2 + bne _0205D3B2 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205D3B2: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205D3B8 +FUN_0205D3B8: ; 0x0205D3B8 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02037944 + ldr r1, _0205D3E0 ; =FUN_02036B90 + add r0, r4, #0x0 + bl FUN_02035D04 + pop {r3-r5, pc} + nop +_0205D3E0: .word FUN_02036B90 + + thumb_func_start FUN_0205D3E4 +FUN_0205D3E4: ; 0x0205D3E4 + push {r3, lr} + ldr r1, _0205D3F0 ; =FUN_0205D3F4 + bl FUN_0205DD04 + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0205D3F0: .word FUN_0205D3F4 + + thumb_func_start FUN_0205D3F4 +FUN_0205D3F4: ; 0x0205D3F4 + push {r3, lr} + mov r1, #0x0 + bl FUN_02037944 + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205D400 +FUN_0205D400: ; 0x0205D400 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_0204652C + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02025838 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r7, r0 + str r0, [r4, #0x18] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x6 + add r0, #0x20 + strb r1, [r0, #0x0] + str r5, [r4, #0x1c] + ldrh r0, [r6, #0x4] + strh r0, [r4, #0x24] + add r0, r4, #0x0 + ldrb r1, [r6, #0x6] + add r0, #0x22 + strb r1, [r0, #0x0] + ldrh r0, [r6, #0x4] + bl FUN_0206EA30 + strh r0, [r4, #0x26] + ldr r1, _0205D490 ; =0x020F96DC + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r4, [r7, r0] + ldr r1, _0205D494 ; =FUN_02035E50 + add r0, r7, #0x0 + bl FUN_02035D04 + pop {r3-r7, pc} + nop +_0205D490: .word 0x020F96DC +_0205D494: .word FUN_02035E50 + + thumb_func_start FUN_0205D498 +FUN_0205D498: ; 0x0205D498 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + ldrh r0, [r5, #0x4] + bl FUN_0206EAB8 + add r2, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x3 + mov r3, #0xb + bl FUN_02037F58 + add r6, r0, #0x0 + ldrh r0, [r5, #0x4] + mov r1, #0x3 + mov r2, #0x0 + bl FUN_02036BC4 + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + sub r0, r1, #0x4 + str r6, [r4, r0] + ldr r1, _0205D4E0 ; =FUN_02036BDC + add r0, r4, #0x0 + bl FUN_02035D04 + pop {r4-r6, pc} + nop +_0205D4E0: .word FUN_02036BDC + + thumb_func_start FUN_0205D4E4 +FUN_0205D4E4: ; 0x0205D4E4 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0205D4E8 +FUN_0205D4E8: ; 0x0205D4E8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + bl FUN_02046528 + ldr r0, [r5, #0x0] + bl FUN_0204652C + ldrh r1, [r4, #0x10] + mov r0, #0x1 + tst r0, r1 + beq _0205D50E + ldr r2, _0205D518 ; =0x00000AF1 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205CF34 + pop {r3-r5, pc} +_0205D50E: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205D024 + pop {r3-r5, pc} + .balign 4 +_0205D518: .word 0x00000AF1 + + thumb_func_start FUN_0205D51C +FUN_0205D51C: ; 0x0205D51C + ldrh r1, [r0, #0x10] + mov r0, #0x1 + tst r1, r0 + bne _0205D526 + mov r0, #0x0 +_0205D526: + bx lr + + thumb_func_start FUN_0205D528 +FUN_0205D528: ; 0x0205D528 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xb + bl FUN_02037FC4 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, _0205D554 ; =FUN_02036D94 + add r0, r4, #0x0 + bl FUN_02035D04 + pop {r3-r5, pc} + .balign 4 +_0205D554: .word FUN_02036D94 + + thumb_func_start FUN_0205D558 +FUN_0205D558: ; 0x0205D558 + push {r3, lr} + ldr r1, _0205D564 ; =FUN_0205D568 + bl FUN_0205DD04 + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0205D564: .word FUN_0205D568 + + thumb_func_start FUN_0205D568 +FUN_0205D568: ; 0x0205D568 + ldr r3, _0205D570 ; =FUN_02037FC4 + mov r1, #0xb + bx r3 + nop +_0205D570: .word FUN_02037FC4 + + thumb_func_start FUN_0205D574 +FUN_0205D574: ; 0x0205D574 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r5, #0xc] + add r0, r5, #0x0 + bl FUN_0203846C + mov r0, #0x7e + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] + ldr r1, _0205D5A4 ; =FUN_02036DD4 + add r0, r4, #0x0 + bl FUN_02035D04 + pop {r3-r5, pc} + nop +_0205D5A4: .word FUN_02036DD4 + + thumb_func_start FUN_0205D5A8 +FUN_0205D5A8: ; 0x0205D5A8 + push {r3, lr} + ldr r1, _0205D5B4 ; =FUN_0205D5B8 + bl FUN_0205DD04 + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_0205D5B4: .word FUN_0205D5B8 + + thumb_func_start FUN_0205D5B8 +FUN_0205D5B8: ; 0x0205D5B8 + push {r3, lr} + ldr r1, [r0, #0xc] + bl FUN_0203846C + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205D5C4 +FUN_0205D5C4: ; 0x0205D5C4 + push {r4-r6, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x4 + bl FUN_020169D8 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205D600 ; =FUN_0205E30C + lsl r0, r0, #0x2 + str r1, [r5, r0] + add r0, #0x30 + str r4, [r5, r0] + mov r0, #0xa + strh r0, [r5, #0x2a] + pop {r4-r6, pc} + nop +_0205D600: .word FUN_0205E30C + + thumb_func_start FUN_0205D604 +FUN_0205D604: ; 0x0205D604 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x4 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r1, _0205D624 ; =FUN_0205E30C + bl FUN_020463CC + mov r0, #0x0 + pop {r4, pc} + nop +_0205D624: .word FUN_0205E30C + + thumb_func_start FUN_0205D628 +FUN_0205D628: ; 0x0205D628 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0205D636 + mov r0, #0x2 + pop {r4, pc} +_0205D636: + ldr r0, [r4, #0x18] + ldr r0, [r0, #0x38] + bl FUN_020553C4 + cmp r0, #0x1 + bne _0205D648 + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_0205D648: + ldrh r0, [r4, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0205478C + cmp r0, #0x0 + beq _0205D65A + mov r0, #0x0 + pop {r4, pc} +_0205D65A: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} + + thumb_func_start FUN_0205D660 +FUN_0205D660: ; 0x0205D660 + ldr r3, _0205D668 ; =FUN_0205CF34 + ldr r2, _0205D66C ; =0x00000AF2 + bx r3 + nop +_0205D668: .word FUN_0205CF34 +_0205D66C: .word 0x00000AF2 + + thumb_func_start FUN_0205D670 +FUN_0205D670: ; 0x0205D670 + push {r3, lr} + ldr r1, _0205D67C ; =0x00000AF2 + bl FUN_0205CF78 + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205D67C: .word 0x00000AF2 + + thumb_func_start FUN_0205D680 +FUN_0205D680: ; 0x0205D680 + ldr r1, [r0, #0x4] + cmp r1, #0x1 + bne _0205D68A + mov r0, #0x2 + bx lr +_0205D68A: + ldrh r1, [r0, #0x10] + mov r0, #0x4 + tst r1, r0 + beq _0205D696 + mov r0, #0x0 + bx lr +_0205D696: + sub r0, r0, #0x5 + bx lr + .balign 4 + + thumb_func_start FUN_0205D69C +FUN_0205D69C: ; 0x0205D69C + ldr r3, _0205D6A4 ; =FUN_0205CF34 + ldr r2, _0205D6A8 ; =0x00000AF3 + bx r3 + nop +_0205D6A4: .word FUN_0205CF34 +_0205D6A8: .word 0x00000AF3 + + thumb_func_start FUN_0205D6AC +FUN_0205D6AC: ; 0x0205D6AC + ldrh r1, [r0, #0x10] + mov r0, #0x2 + tst r1, r0 + beq _0205D6B8 + mov r0, #0x0 + bx lr +_0205D6B8: + sub r0, r0, #0x3 + bx lr + + thumb_func_start FUN_0205D6BC +FUN_0205D6BC: ; 0x0205D6BC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204649C + bl FUN_021F57EC + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + mov r0, #0xb + bl FUN_020169D8 + ldr r2, [sp, #0x0] + mov r1, #0x0 + add r7, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x72 + ldr r1, _0205D710 ; =0x021F57F1 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r7, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + ldr r0, [r6, #0xc] + bl FUN_0206F158 + ldrh r1, [r5, #0x4] + mov r2, #0x1 + mov r3, #0xb + bl FUN_0206EDD4 + pop {r3-r7, pc} + .balign 4 +_0205D710: .word 0x021F57F1 + + thumb_func_start FUN_0205D714 +FUN_0205D714: ; 0x0205D714 + ldr r3, _0205D71C ; =FUN_0205CF34 + ldr r2, _0205D720 ; =0x000022F6 + bx r3 + nop +_0205D71C: .word FUN_0205CF34 +_0205D720: .word 0x000022F6 + + thumb_func_start FUN_0205D724 +FUN_0205D724: ; 0x0205D724 + push {r3, lr} + ldr r1, _0205D730 ; =0x000022F6 + bl FUN_0205CF78 + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205D730: .word 0x000022F6 + + thumb_func_start FUN_0205D734 +FUN_0205D734: ; 0x0205D734 + push {r3, lr} + ldr r0, [r0, #0x0] + bl FUN_02034908 + cmp r0, #0x0 + beq _0205D744 + mov r0, #0x0 + pop {r3, pc} +_0205D744: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205D74C +FUN_0205D74C: ; 0x0205D74C + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205D784 ; =0x021F5C71 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r5, #0x0 + mov r1, #0xb + mov r2, #0x0 + bl FUN_021F5C44 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r3-r5, pc} + .balign 4 +_0205D784: .word 0x021F5C71 + + thumb_func_start FUN_0205D788 +FUN_0205D788: ; 0x0205D788 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x4 + mov r2, #0x0 + bl FUN_021F5C44 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, _0205D7A4 ; =0x021F5C71 + bl FUN_020463CC + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0205D7A4: .word 0x021F5C71 + + thumb_func_start FUN_0205D7A8 +FUN_0205D7A8: ; 0x0205D7A8 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205D7E0 ; =0x021F5C71 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r5, #0x0 + mov r1, #0xb + mov r2, #0x1 + bl FUN_021F5C44 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r3-r5, pc} + .balign 4 +_0205D7E0: .word 0x021F5C71 + + thumb_func_start FUN_0205D7E4 +FUN_0205D7E4: ; 0x0205D7E4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x4 + mov r2, #0x1 + bl FUN_021F5C44 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, _0205D800 ; =0x021F5C71 + bl FUN_020463CC + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0205D800: .word 0x021F5C71 + + thumb_func_start FUN_0205D804 +FUN_0205D804: ; 0x0205D804 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205D83C ; =0x021F5C71 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, r5, #0x0 + mov r1, #0xb + mov r2, #0x2 + bl FUN_021F5C44 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r3-r5, pc} + .balign 4 +_0205D83C: .word 0x021F5C71 + + thumb_func_start FUN_0205D840 +FUN_0205D840: ; 0x0205D840 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x4 + mov r2, #0x2 + bl FUN_021F5C44 + add r2, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, _0205D85C ; =0x021F5C71 + bl FUN_020463CC + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0205D85C: .word 0x021F5C71 + + thumb_func_start FUN_0205D860 +FUN_0205D860: ; 0x0205D860 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0205D86E + mov r0, #0x2 + pop {r4, pc} +_0205D86E: + ldrh r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0205481C + cmp r0, #0x1 + bne _0205D8B0 + ldrh r0, [r4, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B78 + cmp r0, #0x1 + beq _0205D898 + ldrh r0, [r4, #0xe] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054B6C + cmp r0, #0x1 + bne _0205D8AC +_0205D898: + ldr r0, [r4, #0x14] + bl FUN_020553A0 + bl FUN_02058A68 + cmp r0, #0x1 + bne _0205D8AC + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} +_0205D8AC: + mov r0, #0x0 + pop {r4, pc} +_0205D8B0: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205D8B8 +FUN_0205D8B8: ; 0x0205D8B8 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x16] + mov r0, #0x80 + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0x10] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + bl FUN_0206EBC4 + add r2, r0, #0x0 + ldr r0, [r5, #0x0] + lsl r2, r2, #0x10 + ldr r0, [r0, #0xc] + ldr r1, [r4, #0x10] + lsr r2, r2, #0x10 + mov r3, #0xb + bl FUN_0206E3F8 + ldr r0, [r5, #0x0] + ldr r1, _0205D900 ; =FUN_0205D904 + add r2, r4, #0x0 + bl FUN_020463CC + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0205D900: .word FUN_0205D904 + + thumb_func_start FUN_0205D904 +FUN_0205D904: ; 0x0205D904 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldrh r0, [r4, #0x16] + cmp r0, #0x0 + beq _0205D926 + cmp r0, #0x1 + beq _0205D95C + cmp r0, #0x2 + beq _0205D984 + b _0205D9A0 +_0205D926: + ldr r0, [r5, #0x34] + bl FUN_02058780 + ldr r0, [r5, #0x8] + add r1, r4, #0x0 + mov r2, #0x3 + bl FUN_020545B8 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02054608 + ldr r1, [r4, #0x10] + add r0, r4, #0x0 + add r2, r5, #0x0 + mov r3, #0x1 + bl FUN_02054658 + strh r0, [r4, #0x14] + ldrh r0, [r4, #0x16] + add r0, r0, #0x1 + strh r0, [r4, #0x16] + b _0205D9A0 +_0205D95C: + ldrh r0, [r4, #0x14] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0x1 + bne _0205D9A0 + ldr r0, _0205D9A4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _0205D9A0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200D0E0 + ldrh r0, [r4, #0x16] + add r0, r0, #0x1 + strh r0, [r4, #0x16] + b _0205D9A0 +_0205D984: + ldr r0, [r5, #0x34] + bl FUN_020587B0 + add r0, r4, #0x0 + bl FUN_02019178 + ldr r0, [r4, #0x10] + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0205D9A0: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0205D9A4: .word 0x021C48B8 + + thumb_func_start FUN_0205D9A8 +FUN_0205D9A8: ; 0x0205D9A8 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_0204652C + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0206F158 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + bl FUN_02025838 + str r0, [r4, #0x8] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + ldr r0, [r5, #0xc] + bl FUN_02022504 + str r0, [r4, #0x10] + mov r0, #0x7a + lsl r0, r0, #0x2 + add r0, r7, r0 + str r0, [r4, #0x18] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x10 + add r0, #0x20 + strb r1, [r0, #0x0] + ldrh r0, [r6, #0x4] + add r2, r4, #0x0 + strh r0, [r4, #0x24] + add r0, r4, #0x0 + ldrb r1, [r6, #0x6] + add r0, #0x22 + strb r1, [r0, #0x0] + ldr r1, _0205DA34 ; =0x020F96DC + add r0, r5, #0x0 + bl FUN_020373D4 + mov r0, #0x7e + lsl r0, r0, #0x2 + str r4, [r7, r0] + ldr r1, _0205DA38 ; =FUN_02035E50 + add r0, r7, #0x0 + bl FUN_02035D04 + pop {r3-r7, pc} + .balign 4 +_0205DA34: .word 0x020F96DC +_0205DA38: .word FUN_02035E50 + + thumb_func_start FUN_0205DA3C +FUN_0205DA3C: ; 0x0205DA3C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0205DA7C ; =FUN_0205DAAC + lsl r0, r0, #0x2 + str r1, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + str r1, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + ldr r0, [r6, #0xc] + bl FUN_0206F158 + ldrh r1, [r5, #0x4] + mov r2, #0x1 + mov r3, #0xb + bl FUN_0206EDD4 + pop {r4-r6, pc} + nop +_0205DA7C: .word FUN_0205DAAC + + thumb_func_start FUN_0205DA80 +FUN_0205DA80: ; 0x0205DA80 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0205DA8E + mov r0, #0x2 + pop {r4, pc} +_0205DA8E: + ldr r0, [r4, #0x0] + bl FUN_02034930 + cmp r0, #0x1 + bne _0205DAA6 + ldr r0, [r4, #0x0] + bl FUN_0203487C + cmp r0, #0x1 + bne _0205DAA6 + mov r0, #0x0 + pop {r4, pc} +_0205DAA6: + mov r0, #0x0 + mvn r0, r0 + pop {r4, pc} + + thumb_func_start FUN_0205DAAC +FUN_0205DAAC: ; 0x0205DAAC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02046528 + mov r1, #0xb + bl FUN_0224C700 + add r2, r0, #0x0 + ldr r1, _0205DAC8 ; =0x0224C721 + add r0, r4, #0x0 + bl FUN_020463EC + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0205DAC8: .word 0x0224C721 + + thumb_func_start FUN_0205DACC +FUN_0205DACC: ; 0x0205DACC + ldr r3, _0205DAD4 ; =FUN_0205CF34 + ldr r2, _0205DAD8 ; =0x000007F7 + bx r3 + nop +_0205DAD4: .word FUN_0205CF34 +_0205DAD8: .word 0x000007F7 + + thumb_func_start FUN_0205DADC +FUN_0205DADC: ; 0x0205DADC + push {r3, lr} + ldr r1, _0205DAE8 ; =0x000007F7 + bl FUN_0205CF78 + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0205DAE8: .word 0x000007F7 + + thumb_func_start FUN_0205DAEC +FUN_0205DAEC: ; 0x0205DAEC + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x18] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r5, r0, #0x0 + bl FUN_0205ED0C + cmp r0, #0x0 + bne _0205DB08 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205DB08: + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0205F4A0 + cmp r0, #0x0 + bne _0205DB1A + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205DB1A: + ldr r0, [r4, #0x18] + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024CA4 + cmp r0, #0x0 + bne _0205DB30 + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} +_0205DB30: + ldr r0, [r4, #0x0] + bl FUN_020349D8 + cmp r0, #0x0 + beq _0205DB3E + mov r0, #0x0 + pop {r3-r5, pc} +_0205DB3E: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205DB44 +FUN_0205DB44: ; 0x0205DB44 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02060144 + cmp r0, #0x1 + bne _0205DB54 + mov r0, #0x0 + pop {r3-r7, pc} +_0205DB54: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _0205DB66 + mov r0, #0x0 + pop {r3-r7, pc} +_0205DB66: + ldr r0, [r5, #0xc] + bl FUN_0206F158 + bl FUN_0206EBC4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x6 + mov r2, #0xb + str r0, [sp, #0x0] + bl FUN_0206E7B8 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + mov r0, #0x2 + add r1, r4, #0x0 + bl FUN_0205CE48 + add r6, r0, #0x0 + mov r0, #0x1 + add r1, r4, #0x0 + bl FUN_0205CE48 + add r7, r0, #0x0 + bne _0205DB9C + mov r0, #0x0 + pop {r3-r7, pc} +_0205DB9C: + mov r0, #0xb + mov r1, #0x2c + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x2c + blx Call_FillMemWithValue + str r5, [r4, #0x0] + ldr r0, [sp, #0x0] + add r1, r4, #0x4 + strh r0, [r4, #0x28] + add r0, r5, #0x0 + bl FUN_0205CE80 + mov r5, #0x0 + cmp r6, #0x0 + bne _0205DBCA + add r0, r4, #0x0 + blx r7 + add r5, r0, #0x0 + b _0205DBE0 +_0205DBCA: + add r0, r4, #0x4 + blx r6 + add r1, r0, #0x0 + bne _0205DBDA + add r0, r4, #0x0 + blx r7 + add r5, r0, #0x0 + b _0205DBE0 +_0205DBDA: + add r0, r4, #0x0 + bl FUN_0205DBF0 +_0205DBE0: + cmp r5, #0x0 + bne _0205DBEA + add r0, r4, #0x0 + bl FUN_02016A18 +_0205DBEA: + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205DBF0 +FUN_0205DBF0: ; 0x0205DBF0 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + strh r0, [r4, #0x16] + mov r0, #0x80 + mov r1, #0xb + bl FUN_020219F4 + str r0, [r4, #0x10] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_020238F4 + mov r1, #0xb + str r1, [sp, #0x0] + ldrh r2, [r5, #0x28] + ldr r1, [r4, #0x10] + add r3, r6, #0x0 + bl FUN_0206E51C + ldr r0, [r5, #0x0] + ldr r1, _0205DC34 ; =FUN_0205D904 + add r2, r4, #0x0 + bl FUN_020463CC + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_0205DC34: .word FUN_0205D904 + + thumb_func_start FUN_0205DC38 +FUN_0205DC38: ; 0x0205DC38 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, #0x2a + ldrb r0, [r0, #0x0] + cmp r0, #0x4 + bhi _0205DCFA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0205DC5E: ; jump table (using 16-bit offset) + .short _0205DC68 - _0205DC5E - 2; case 0 + .short _0205DC7C - _0205DC5E - 2; case 1 + .short _0205DC94 - _0205DC5E - 2; case 2 + .short _0205DCC4 - _0205DC5E - 2; case 3 + .short _0205DCE2 - _0205DC5E - 2; case 4 +_0205DC68: + ldr r0, [r5, #0x34] + bl FUN_02058780 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x1 + add r4, #0x2a + strb r0, [r4, #0x0] + b _0205DCFA +_0205DC7C: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0205DCFA + ldr r1, [r4, #0x20] + add r0, r5, #0x0 + blx r1 + str r0, [r4, #0x24] + mov r0, #0x2 + add r4, #0x2a + strb r0, [r4, #0x0] + b _0205DCFA +_0205DC94: + add r0, r5, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _0205DCFA + ldr r0, [r4, #0x24] + cmp r0, #0x0 + beq _0205DCB6 + ldr r2, [r4, #0x20] + ldr r1, _0205DD00 ; =FUN_0205D568 + cmp r2, r1 + bne _0205DCB2 + bl FUN_02087E14 + b _0205DCB6 +_0205DCB2: + bl FUN_02016A18 +_0205DCB6: + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x3 + add r4, #0x2a + strb r0, [r4, #0x0] + b _0205DCFA +_0205DCC4: + add r0, r5, #0x0 + bl FUN_020464A4 + cmp r0, #0x0 + beq _0205DCFA + ldr r0, [r5, #0x34] + bl FUN_02058780 + mov r0, #0x1 + bl FUN_021D7CA4 + mov r0, #0x4 + add r4, #0x2a + strb r0, [r4, #0x0] + b _0205DCFA +_0205DCE2: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0205DCFA + ldr r0, [r5, #0x34] + bl FUN_020587B0 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0205DCFA: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0205DD00: .word FUN_0205D568 + + thumb_func_start FUN_0205DD04 +FUN_0205DD04: ; 0x0205DD04 + add r2, r0, #0x0 + str r1, [r2, #0x20] + ldr r3, _0205DD10 ; =FUN_020463CC + ldr r0, [r2, #0x0] + ldr r1, _0205DD14 ; =FUN_0205DC38 + bx r3 + .balign 4 +_0205DD10: .word FUN_020463CC +_0205DD14: .word FUN_0205DC38 + + thumb_func_start FUN_0205DD18 +FUN_0205DD18: ; 0x0205DD18 + push {r4, lr} + mov r1, #0xd4 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x1 + lsl r0, r0, #0x10 + add r3, r4, #0x0 + lsr r1, r0, #0x1 + add r2, r0, #0x0 + add r3, #0xbc + bl FUN_0201B7DC + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205DD38 +FUN_0205DD38: ; 0x0205DD38 + ldr r3, _0205DD3C ; =FUN_02016A18 + bx r3 + .balign 4 +_0205DD3C: .word FUN_02016A18 + + thumb_func_start FUN_0205DD40 +FUN_0205DD40: ; 0x0205DD40 + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x0 + str r1, [r4, #0x4] + str r1, [r4, #0x0] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + str r1, [r4, #0x10] + add r0, #0xd0 + strb r1, [r0, #0x0] + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + add r0, #0x1c + mov r2, #0xa0 + str r1, [r4, #0x18] + blx MI_CpuFill8 + mov r3, #0x0 + add r2, r3, #0x0 + mov r0, #0x28 +_0205DD6A: + add r1, r3, #0x0 + mul r1, r0 + add r1, r4, r1 + str r2, [r1, #0x28] + add r1, r3, #0x1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x4 + blo _0205DD6A + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205DD80 +FUN_0205DD80: ; 0x0205DD80 + push {r4-r7, lr} + sub sp, #0x2c + str r1, [sp, #0x10] + ldr r1, _0205DECC ; =0x020F7374 + str r2, [sp, #0x14] + ldrb r2, [r1, #0x4] + str r0, [sp, #0xc] + add r0, sp, #0x28 + strb r2, [r0, #0x0] + ldrb r2, [r1, #0x5] + str r3, [sp, #0x18] + strb r2, [r0, #0x1] + ldrb r2, [r1, #0x6] + ldrb r1, [r1, #0x7] + strb r2, [r0, #0x2] + strb r1, [r0, #0x3] + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x38] + bl FUN_02055360 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + mov r5, #0x0 + str r0, [sp, #0x24] + add r0, #0x1c + str r5, [sp, #0x20] + str r0, [sp, #0x24] +_0205DDB6: + add r0, sp, #0x28 + ldrb r4, [r0, r5] + cmp r4, #0x0 + bne _0205DDC2 + bl ErrorHandling +_0205DDC2: + cmp r4, #0x1 + bhi _0205DDCA + mov r6, #0x0 + b _0205DDF2 +_0205DDCA: + bl FUN_0201B9EC + add r6, r0, #0x0 + ldr r0, _0205DED0 ; =0x0000FFFF + add r1, r4, #0x0 + blx _s32_div_f + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, r4 + blo _0205DDF2 + bl ErrorHandling +_0205DDF2: + lsl r1, r5, #0x1 + mov r0, #0x9 + sub r0, r0, r1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + lsl r0, r6, #0x18 + lsr r6, r0, #0x18 + add r0, r6, #0x0 + add r1, r4, #0x0 + blx _s32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _0205DE1C + add r0, r6, #0x0 + add r1, r4, #0x0 + blx _s32_div_f + add r1, r5, r1 + add r0, r5, #0x0 + b _0205DE5C +_0205DE1C: + cmp r0, #0x1 + bne _0205DE30 + add r0, r6, #0x0 + add r1, r4, #0x0 + blx _s32_div_f + add r0, r5, r4 + add r1, r5, r1 + sub r0, r0, #0x1 + b _0205DE5C +_0205DE30: + lsl r7, r4, #0x1 + cmp r6, r7 + bge _0205DE3A + bl ErrorHandling +_0205DE3A: + sub r0, r6, r7 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + lsr r3, r1, #0x1f + lsl r2, r1, #0x1f + lsr r0, r1, #0x1 + add r0, r5, r0 + sub r2, r2, r3 + mov r1, #0x1f + ror r2, r1 + add r0, r0, #0x1 + add r1, r3, r2 + bne _0205DE58 + add r1, r5, #0x0 + b _0205DE5C +_0205DE58: + add r1, r5, r4 + sub r1, r1, #0x1 +_0205DE5C: + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r0, r0, #0x18 + str r1, [sp, #0x0] + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + mov r0, #0x28 + add r1, r5, #0x0 + mul r1, r0 + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x10] + add r0, r0, r1 + str r0, [sp, #0x8] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldr r1, [r1, #0x4] + ldr r3, [sp, #0x14] + bl FUN_0205E12C + cmp r0, #0x0 + beq _0205DE90 + ldr r0, [sp, #0x20] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x20] +_0205DE90: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x4 + blo _0205DDB6 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + bne _0205DEBE + ldr r0, [sp, #0x18] + bl FUN_0205DD40 + ldr r0, [sp, #0xc] + add r1, r0, #0x0 + ldr r1, [r1, #0x1c] + ldr r1, [r1, #0x0] + bl FUN_0204AB58 + add r1, r0, #0x0 + ldr r0, [sp, #0xc] + mov r2, #0x1 + bl FUN_0204ABDC + b _0205DEC4 +_0205DEBE: + ldr r0, [sp, #0x18] + mov r1, #0x1 + str r1, [r0, #0x10] +_0205DEC4: + ldr r0, [sp, #0x18] + ldr r0, [r0, #0x10] + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 +_0205DECC: .word 0x020F7374 +_0205DED0: .word 0x0000FFFF + + thumb_func_start FUN_0205DED4 +FUN_0205DED4: ; 0x0205DED4 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r6, r2, #0x0 + mov r4, #0x0 +_0205DEE0: + mov r0, #0x28 + mul r0, r4 + add r5, r6, r0 + ldr r0, [r5, #0x28] + cmp r0, #0x0 + beq _0205DF36 + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_0205E2A0 + str r0, [r5, #0x2c] + cmp r0, #0x0 + bne _0205DF24 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #0x4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + cmp r7, #0x64 + blo _0205DF12 + bl ErrorHandling +_0205DF12: + cmp r7, #0x32 + bhs _0205DF1A + mov r0, #0x0 + b _0205DF1C +_0205DF1A: + mov r0, #0x1 +_0205DF1C: + str r0, [r5, #0x24] + mov r0, #0x0 + str r0, [r5, #0x30] + b _0205DF36 +_0205DF24: + ldr r0, [r6, #0x0] + str r0, [r5, #0x24] + ldr r0, [sp, #0x0] + add r0, #0x90 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bl FUN_0205E40C + str r0, [r5, #0x30] +_0205DF36: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x4 + blo _0205DEE0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0205DF44 +FUN_0205DF44: ; 0x0205DF44 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + mov r6, #0x0 +_0205DF4C: + mov r0, #0x28 + mul r0, r6 + add r4, r7, r0 + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _0205DF8C + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x1c] + ldr r2, [r4, #0x20] + cmp r0, #0x0 + beq _0205DF6E + add r0, r5, #0x0 + mov r3, #0x2 + bl FUN_0224B818 + str r0, [r4, #0x34] + b _0205DF90 +_0205DF6E: + ldr r0, [r4, #0x24] + cmp r0, #0x0 + bne _0205DF80 + add r0, r5, #0x0 + mov r3, #0x0 + bl FUN_0224B818 + str r0, [r4, #0x34] + b _0205DF90 +_0205DF80: + add r0, r5, #0x0 + mov r3, #0x1 + bl FUN_0224B818 + str r0, [r4, #0x34] + b _0205DF90 +_0205DF8C: + mov r0, #0x0 + str r0, [r4, #0x34] +_0205DF90: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x4 + blo _0205DF4C + pop {r3-r7, pc} + + thumb_func_start FUN_0205DF9C +FUN_0205DF9C: ; 0x0205DF9C + push {r3-r7, lr} + mov r4, #0x0 + add r7, r0, #0x0 + add r6, r4, #0x0 +_0205DFA4: + mov r0, #0x28 + mul r0, r6 + add r5, r7, r0 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + beq _0205DFCA + bl FUN_0224B86C + cmp r0, #0x0 + beq _0205DFD0 + ldr r0, [r5, #0x34] + bl FUN_02064520 + mov r0, #0x0 + str r0, [r5, #0x34] + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _0205DFD0 +_0205DFCA: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0205DFD0: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x4 + blo _0205DFA4 + cmp r4, #0x4 + blo _0205DFE2 + mov r0, #0x1 + pop {r3-r7, pc} +_0205DFE2: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205DFE8 +FUN_0205DFE8: ; 0x0205DFE8 + push {r3-r7, lr} + sub sp, #0x8 + ldr r7, [sp, #0x24] + add r6, r0, #0x0 + mov r12, r1 + ldr r0, [sp, #0x28] + mov r1, #0x0 + add r4, r3, #0x0 + str r1, [r7, #0x0] + str r2, [sp, #0x0] + str r1, [r0, #0x0] + str r0, [sp, #0x28] + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r2, r12 + add r3, sp, #0x4 + ldr r5, [sp, #0x20] + bl FUN_0205E1B8 + cmp r0, #0x0 + bne _0205E018 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_0205E018: + mov r0, #0x1 + str r0, [r4, #0x18] + add r0, sp, #0x4 + ldrb r1, [r0, #0x0] + mov r0, #0x28 + mul r0, r1 + add r0, r4, r0 + ldr r1, [r0, #0x2c] + ldr r6, [r0, #0x24] + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _0205E062 + cmp r1, #0x0 + beq _0205E05E + add r0, r4, #0x4 + bl FUN_0205E4D8 + str r6, [r5, #0x0] + mov r0, #0x1 + str r0, [r7, #0x0] + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_0205E1F0 + add r0, sp, #0x4 + ldrb r1, [r0, #0x0] + mov r0, #0x28 + mul r0, r1 + add r0, r4, r0 + ldr r1, [r0, #0x30] + ldr r0, [sp, #0x28] + add sp, #0x8 + str r1, [r0, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_0205E05E: + str r6, [r5, #0x0] + b _0205E074 +_0205E062: + str r6, [r5, #0x0] + mov r0, #0x0 + str r0, [r4, #0x14] + ldr r0, [sp, #0x0] + bl FUN_0205E258 + add r1, r4, #0x0 + add r1, #0xd0 + strb r0, [r1, #0x0] +_0205E074: + ldr r0, [r5, #0x0] + str r0, [r4, #0x0] + mov r0, #0x1 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205E080 +FUN_0205E080: ; 0x0205E080 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x0 + bne _0205E090 + bl ErrorHandling +_0205E090: + str r4, [r5, #0x8] + str r6, [r5, #0xc] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205E098 +FUN_0205E098: ; 0x0205E098 + ldr r3, [r0, #0x8] + str r3, [r1, #0x0] + ldr r0, [r0, #0xc] + str r0, [r2, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0205E0A4 +FUN_0205E0A4: ; 0x0205E0A4 + ldr r0, [r0, #0x18] + bx lr + + thumb_func_start FUN_0205E0A8 +FUN_0205E0A8: ; 0x0205E0A8 + push {r3-r7, lr} + add r7, r0, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _0205E126 + ldr r0, [r7, #0x10] + cmp r0, #0x0 + bne _0205E126 + mov r6, #0x0 + add r5, r6, #0x0 +_0205E0C0: + add r0, r7, #0x0 + add r0, #0x90 + ldr r1, [r0, #0x0] + add r0, r1, #0x0 + add r0, #0x1c + add r4, r0, r5 + add r0, r4, #0x0 + add r0, #0x1c + add r1, #0xbc + bl FUN_0201B76C + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _0205E0E4 + cmp r0, #0x0 + bne _0205E0E4 + mov r0, #0x0 + str r0, [r4, #0xc] +_0205E0E4: + add r6, r6, #0x1 + add r5, #0x28 + cmp r6, #0x4 + blt _0205E0C0 + add r0, r7, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + mov r2, #0x0 + add r3, r0, #0x0 + add r4, r2, #0x0 + add r3, #0x1c +_0205E0FA: + ldr r1, [r3, #0xc] + cmp r1, #0x0 + bne _0205E102 + add r2, r2, #0x1 +_0205E102: + add r4, r4, #0x1 + add r3, #0x28 + cmp r4, #0x4 + blt _0205E0FA + cmp r2, #0x4 + bne _0205E126 + bl FUN_0205DD40 + ldr r1, [r7, #0x1c] + add r0, r7, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0204AB58 + add r1, r0, #0x0 + add r0, r7, #0x0 + mov r2, #0x1 + bl FUN_0204ABDC +_0205E126: + pop {r3-r7, pc} + + thumb_func_start FUN_0205E128 +FUN_0205E128: ; 0x0205E128 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_0205E12C +FUN_0205E12C: ; 0x0205E12C + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x4] + add r1, sp, #0x10 + sub r4, r2, #0x4 + ldrb r2, [r1, #0x10] + ldrb r1, [r1, #0x14] + ldr r5, [sp, #0x28] + add r4, r4, r2 + sub r2, r3, #0x4 + add r6, r2, r1 + str r4, [r5, #0x0] + add r1, r4, #0x0 + add r2, r6, #0x0 + add r7, r0, #0x0 + str r6, [r5, #0x4] + bl FUN_0204A6E0 + bl FUN_0205478C + cmp r0, #0x0 + beq _0205E1AE + lsl r0, r4, #0x10 + str r0, [r5, #0x1c] + lsl r0, r6, #0x10 + str r0, [r5, #0x24] + add r0, sp, #0x8 + str r0, [sp, #0x0] + ldr r2, [r5, #0x1c] + ldr r3, [r5, #0x24] + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_0204A708 + ldr r1, [sp, #0x4] + str r0, [r5, #0x20] + cmp r1, r0 + beq _0205E180 + mov r0, #0x0 + add sp, #0xc + str r0, [r5, #0xc] + pop {r4-r7, pc} +_0205E180: + asr r1, r4, #0x4 + asr r2, r6, #0x4 + lsr r1, r1, #0x1b + lsr r2, r2, #0x1b + add r1, r4, r1 + add r2, r6, r2 + ldr r0, [r7, #0x28] + asr r1, r1, #0x5 + asr r2, r2, #0x5 + bl FUN_0203451C + ldr r1, [r7, #0x1c] + ldr r1, [r1, #0x0] + cmp r1, r0 + beq _0205E1A6 + mov r0, #0x0 + add sp, #0xc + str r0, [r5, #0xc] + pop {r4-r7, pc} +_0205E1A6: + mov r0, #0x1 + add sp, #0xc + str r0, [r5, #0xc] + pop {r4-r7, pc} +_0205E1AE: + mov r0, #0x0 + str r0, [r5, #0xc] + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205E1B8 +FUN_0205E1B8: ; 0x0205E1B8 + push {r4-r7} + mov r5, #0x0 + mov r6, #0x28 +_0205E1BE: + add r4, r5, #0x0 + mul r4, r6 + add r4, r0, r4 + ldr r7, [r4, #0x28] + cmp r7, #0x0 + beq _0205E1DE + ldr r7, [r4, #0x1c] + cmp r1, r7 + bne _0205E1DE + ldr r4, [r4, #0x20] + cmp r2, r4 + bne _0205E1DE + strb r5, [r3, #0x0] + mov r0, #0x1 + pop {r4-r7} + bx lr +_0205E1DE: + add r4, r5, #0x1 + lsl r4, r4, #0x18 + lsr r5, r4, #0x18 + cmp r5, #0x4 + blo _0205E1BE + mov r0, #0x0 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_0205E1F0 +FUN_0205E1F0: ; 0x0205E1F0 + push {r4-r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_0202A9B0 + bl FUN_0202A9AC + add r3, r5, #0x0 + add r3, #0xd0 + ldrb r3, [r3, #0x0] + add r4, r0, #0x0 + add r1, r4, #0x2 + lsl r6, r3, #0x2 + ldrh r3, [r1, r6] + ldr r2, [r5, #0x4] + cmp r3, r2 + bge _0205E256 + strh r2, [r1, r6] + add r1, r5, #0x0 + add r1, #0xd0 + ldrb r1, [r1, #0x0] + ldr r2, [r5, #0x8] + lsl r1, r1, #0x2 + strh r2, [r4, r1] + bl FUN_02245844 + add r0, r5, #0x0 + add r0, #0xd0 + ldrb r0, [r0, #0x0] + ldr r2, [r5, #0x4] + lsl r0, r0, #0x2 + add r0, r4, r0 + ldrh r0, [r0, #0x2] + cmp r0, r2 + bgt _0205E256 + mov r1, #0x0 + mov r3, #0x2 +_0205E23A: + sub r0, r3, r1 + lsl r6, r0, #0x2 + add r6, r4, r6 + ldrh r6, [r6, #0x2] + cmp r2, r6 + bne _0205E24C + add r5, #0xd0 + strb r0, [r5, #0x0] + pop {r4-r6, pc} +_0205E24C: + add r1, r1, #0x1 + cmp r1, #0x3 + blt _0205E23A + bl ErrorHandling +_0205E256: + pop {r4-r6, pc} + + thumb_func_start FUN_0205E258 +FUN_0205E258: ; 0x0205E258 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + mov r2, #0x0 +_0205E266: + lsl r1, r2, #0x2 + ldrh r1, [r0, r1] + cmp r1, #0x0 + bne _0205E272 + add r0, r2, #0x0 + pop {r3, pc} +_0205E272: + add r1, r2, #0x1 + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + cmp r2, #0x3 + blo _0205E266 + ldrh r2, [r0, #0x2] + ldrh r1, [r0, #0x6] + cmp r2, r1 + blo _0205E288 + mov r1, #0x1 + b _0205E28A +_0205E288: + mov r1, #0x0 +_0205E28A: + lsl r1, r1, #0x18 + lsr r2, r1, #0x18 + lsl r1, r2, #0x2 + add r1, r0, r1 + ldrh r1, [r1, #0x2] + ldrh r0, [r0, #0xa] + cmp r1, r0 + blo _0205E29C + mov r2, #0x2 +_0205E29C: + add r0, r2, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0205E2A0 +FUN_0205E2A0: ; 0x0205E2A0 + push {r3-r7, lr} + sub sp, #0x8 + ldr r3, _0205E308 ; =0x020F7374 + add r5, r0, #0x0 + ldrb r4, [r3, #0x0] + add r2, sp, #0x0 + add r0, sp, #0x4 + strb r4, [r2, #0x4] + ldrb r4, [r3, #0x1] + add r7, sp, #0x0 + cmp r1, #0x1 + strb r4, [r2, #0x5] + ldrb r4, [r3, #0x2] + strb r4, [r2, #0x6] + ldrb r4, [r3, #0x3] + strb r4, [r2, #0x7] + ldrb r4, [r3, #0x8] + strb r4, [r2, #0x0] + ldrb r4, [r3, #0x9] + strb r4, [r2, #0x1] + ldrb r4, [r3, #0xa] + strb r4, [r2, #0x2] + ldrb r3, [r3, #0xb] + strb r3, [r2, #0x3] + bne _0205E2D6 + add r6, r0, #0x0 + b _0205E2DC +_0205E2D6: + cmp r1, #0x4 + bne _0205E2DC + add r6, r7, #0x0 +_0205E2DC: + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #0x4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0205E2F4 + bl ErrorHandling +_0205E2F4: + ldrb r0, [r6, r5] + cmp r4, r0 + bge _0205E300 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0205E300: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0205E308: .word 0x020F7374 + + thumb_func_start FUN_0205E30C +FUN_0205E30C: ; 0x0205E30C + push {r3-r7, lr} + add r7, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r1, [r5, #0x0] + cmp r1, #0x4 + bhi _0205E3FC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205E330: ; jump table (using 16-bit offset) + .short _0205E33A - _0205E330 - 2; case 0 + .short _0205E3C0 - _0205E330 - 2; case 1 + .short _0205E3CC - _0205E330 - 2; case 2 + .short _0205E3EC - _0205E330 - 2; case 3 + .short _0205E3DE - _0205E330 - 2; case 4 +_0205E33A: + ldr r0, [r4, #0x34] + bl FUN_02058780 + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AB40 + add r6, r0, #0x0 + ldrb r0, [r6, #0x0] + cmp r0, #0x32 + bhs _0205E374 + mov r2, #0x0 + ldr r1, _0205E400 ; =0x0000230A + add r0, r7, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + add r0, r4, #0x0 + mov r1, #0x29 + bl FUN_02039438 + ldrb r2, [r6, #0x0] + mov r1, #0x32 + sub r1, r1, r2 + strh r1, [r0, #0x0] + mov r0, #0x4 + str r0, [r5, #0x0] + b _0205E3FC +_0205E374: + mov r0, #0x0 + strb r0, [r6, #0x0] + ldr r0, [r4, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r3, r4, #0x0 + add r3, #0x90 + add r2, r0, #0x0 + ldr r3, [r3, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0205DD80 + add r0, r4, #0x0 + add r0, #0x90 + ldr r2, [r0, #0x0] + ldr r0, [r2, #0x10] + cmp r0, #0x0 + beq _0205E3BA + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0205DED4 + add r0, r4, #0x0 + add r4, #0x90 + ldr r1, [r4, #0x0] + bl FUN_0205DF44 + mov r0, #0x1 + str r0, [r5, #0x0] + b _0205E3FC +_0205E3BA: + mov r0, #0x3 + str r0, [r5, #0x0] + b _0205E3FC +_0205E3C0: + ldr r0, _0205E404 ; =0x0000047E + bl FUN_0200521C + mov r0, #0x2 + str r0, [r5, #0x0] + b _0205E3FC +_0205E3CC: + add r4, #0x90 + ldr r0, [r4, #0x0] + bl FUN_0205DF9C + cmp r0, #0x0 + beq _0205E3FC + mov r0, #0x4 + str r0, [r5, #0x0] + b _0205E3FC +_0205E3DE: + bl FUN_02016A18 + ldr r0, [r4, #0x34] + bl FUN_020587B0 + mov r0, #0x1 + pop {r3-r7, pc} +_0205E3EC: + mov r2, #0x0 + ldr r1, _0205E408 ; =0x0000230B + add r0, r7, #0x0 + add r3, r2, #0x0 + bl FUN_02038CD8 + mov r0, #0x4 + str r0, [r5, #0x0] +_0205E3FC: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_0205E400: .word 0x0000230A +_0205E404: .word 0x0000047E +_0205E408: .word 0x0000230B + + thumb_func_start FUN_0205E40C +FUN_0205E40C: ; 0x0205E40C + push {r3-r5, lr} + cmp r0, #0x0 + bne _0205E416 + mov r0, #0x0 + pop {r3-r5, pc} +_0205E416: + add r2, r0, #0x0 + mov r1, #0xc8 + ldr r0, _0205E478 ; =0x00002008 + mul r2, r1 + sub r5, r0, r2 + cmp r5, #0xc8 + bge _0205E426 + add r5, r1, #0x0 +_0205E426: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bne _0205E430 + bl ErrorHandling +_0205E430: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1 + bhi _0205E43C + mov r4, #0x0 + b _0205E46A +_0205E43C: + bl FUN_0201B9EC + add r4, r0, #0x0 + lsl r1, r5, #0x10 + ldr r0, _0205E47C ; =0x0000FFFF + lsr r1, r1, #0x10 + blx _s32_div_f + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r4, #0x0 + lsr r1, r1, #0x10 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + cmp r4, r0 + blo _0205E46A + bl ErrorHandling +_0205E46A: + cmp r4, #0x0 + bne _0205E472 + mov r0, #0x1 + pop {r3-r5, pc} +_0205E472: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0205E478: .word 0x00002008 +_0205E47C: .word 0x0000FFFF + + thumb_func_start FUN_0205E480 +FUN_0205E480: ; 0x0205E480 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x90 + ldr r0, [r0, #0x0] + add r0, r0, #0x4 + bl FUN_0205E4D8 + add r0, r4, #0x0 + add r4, #0x90 + ldr r1, [r4, #0x0] + bl FUN_0205E1F0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205E49C +FUN_0205E49C: ; 0x0205E49C + add r0, #0x90 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0205E4A4 +FUN_0205E4A4: ; 0x0205E4A4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206F158 + ldr r1, _0205E4D4 ; =0x000001AF + mov r2, #0x1 + mov r3, #0x4 + bl FUN_0206EE50 + cmp r0, #0x1 + bne _0205E4D0 + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AB40 + ldrb r1, [r0, #0x0] + cmp r1, #0x32 + bhs _0205E4D0 + add r1, r1, #0x1 + strb r1, [r0, #0x0] +_0205E4D0: + pop {r4, pc} + nop +_0205E4D4: .word 0x000001AF + + thumb_func_start FUN_0205E4D8 +FUN_0205E4D8: ; 0x0205E4D8 + ldr r1, [r0, #0x0] + add r2, r1, #0x1 + ldr r1, _0205E4E8 ; =0x000003E7 + str r2, [r0, #0x0] + cmp r2, r1 + ble _0205E4E6 + str r1, [r0, #0x0] +_0205E4E6: + bx lr + .balign 4 +_0205E4E8: .word 0x000003E7 + + thumb_func_start FUN_0205E4EC +FUN_0205E4EC: ; 0x0205E4EC + push {r4, lr} + add r4, r0, #0x0 + mov r1, #0x8 + bl FUN_0205858C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205E5B4 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058848 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020588B8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205E518 +FUN_0205E518: ; 0x0205E518 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E5B4 + cmp r0, #0x0 + beq _0205E548 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_020588B8 + ldr r6, _0205E54C ; =0x020F7388 +_0205E538: + ldrb r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205E538 +_0205E548: + pop {r4-r6, pc} + nop +_0205E54C: .word 0x020F7388 + + thumb_func_start FUN_0205E550 +FUN_0205E550: ; 0x0205E550 + bx lr + .balign 4 + + thumb_func_start FUN_0205E554 +FUN_0205E554: ; 0x0205E554 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_0205886C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E608 + cmp r0, #0x1 + bne _0205E592 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E63C + add r0, r5, #0x0 + bl FUN_0205E698 + cmp r0, #0x1 + bne _0205E592 + add r0, r5, #0x0 + bl FUN_0205883C + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0205E592: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205E598 +FUN_0205E598: ; 0x0205E598 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0205B080 + cmp r0, #0x1 + bne _0205E5B0 + add r0, r5, #0x0 + bl FUN_02058848 + mov r0, #0x0 + strb r0, [r4, #0x0] +_0205E5B0: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205E5B4 +FUN_0205E5B4: ; 0x0205E5B4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02058578 + bl FUN_020552A4 + cmp r0, #0x0 + bne _0205E5CC + mov r0, #0x0 + strb r0, [r4, #0x1] + pop {r3-r5, pc} +_0205E5CC: + ldrb r0, [r4, #0x1] + cmp r0, #0x0 + bne _0205E5DA + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E5E0 +_0205E5DA: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205E5E0 +FUN_0205E5E0: ; 0x0205E5E0 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_02058738 + bl FUN_02055698 + mov r1, #0x1 + add r4, r0, #0x0 + strb r1, [r5, #0x1] + bl FUN_02055320 + strh r0, [r5, #0x2] + add r0, r4, #0x0 + bl FUN_0205532C + strh r0, [r5, #0x4] + mov r0, #0xff + strh r0, [r5, #0x6] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205E608 +FUN_0205E608: ; 0x0205E608 + push {r4-r6, lr} + add r5, r1, #0x0 + bl FUN_02058738 + bl FUN_02055698 + add r6, r0, #0x0 + beq _0205E638 + bl FUN_02055320 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0205532C + mov r1, #0x2 + ldrsh r1, [r5, r1] + cmp r4, r1 + bne _0205E634 + mov r1, #0x4 + ldrsh r1, [r5, r1] + cmp r0, r1 + beq _0205E638 +_0205E634: + mov r0, #0x1 + pop {r4-r6, pc} +_0205E638: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0205E63C +FUN_0205E63C: ; 0x0205E63C + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_02058738 + bl FUN_02055698 + add r4, r0, #0x0 + bl FUN_02055320 + strh r0, [r5, #0x2] + add r0, r4, #0x0 + bl FUN_0205532C + strh r0, [r5, #0x4] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205E65C +FUN_0205E65C: ; 0x0205E65C + push {r3, lr} + bl FUN_02058738 + bl FUN_02055698 + bl FUN_02055464 + add r1, r0, #0x0 + sub r1, #0x58 + cmp r1, #0x3 + bhi _0205E694 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205E67E: ; jump table (using 16-bit offset) + .short _0205E686 - _0205E67E - 2; case 0 + .short _0205E68A - _0205E67E - 2; case 1 + .short _0205E68E - _0205E67E - 2; case 2 + .short _0205E692 - _0205E67E - 2; case 3 +_0205E686: + mov r0, #0x10 + pop {r3, pc} +_0205E68A: + mov r0, #0x11 + pop {r3, pc} +_0205E68E: + mov r0, #0x12 + pop {r3, pc} +_0205E692: + mov r0, #0x13 +_0205E694: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205E698 +FUN_0205E698: ; 0x0205E698 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_02058738 + bl FUN_02055698 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B2C + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02058B4C + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02055338 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02055344 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + cmp r0, r6 + bne _0205E6D2 + cmp r7, r4 + beq _0205E6FA +_0205E6D2: + add r0, r5, #0x0 + bl FUN_0205E65C + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + add r2, r6, #0x0 + add r3, r4, #0x0 + bl FUN_02059E80 + ldr r1, [sp, #0x4] + bl FUN_0205AFDC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205AE0C + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0205E6FA: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0205E700 +FUN_0205E700: ; 0x0205E700 + push {r3-r5, lr} + mov r1, #0xc + add r5, r0, #0x0 + bl FUN_0205858C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E854 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r5, #0x0 + bl FUN_02058848 + mov r0, #0x0 + strb r0, [r4, #0x1] + pop {r3-r5, pc} + + thumb_func_start FUN_0205E728 +FUN_0205E728: ; 0x0205E728 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E854 + cmp r0, #0x0 + beq _0205E750 + ldr r6, _0205E754 ; =0x020F7390 +_0205E740: + ldrb r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205E740 +_0205E750: + pop {r4-r6, pc} + nop +_0205E754: .word 0x020F7390 + + thumb_func_start FUN_0205E758 +FUN_0205E758: ; 0x0205E758 + bx lr + .balign 4 + + thumb_func_start FUN_0205E75C +FUN_0205E75C: ; 0x0205E75C + push {r3, lr} + bl FUN_020585B0 + mov r1, #0x0 + strb r1, [r0, #0x1] + pop {r3, pc} + + thumb_func_start FUN_0205E768 +FUN_0205E768: ; 0x0205E768 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_0205886C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E8F4 + cmp r0, #0x1 + bne _0205E7A0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0205E940 + cmp r0, #0x1 + bne _0205E7A0 + add r0, r5, #0x0 + bl FUN_0205883C + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0205E7A0: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205E7A4 +FUN_0205E7A4: ; 0x0205E7A4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0205B080 + cmp r0, #0x0 + bne _0205E7B6 + mov r0, #0x0 + pop {r3-r5, pc} +_0205E7B6: + add r0, r5, #0x0 + bl FUN_02058848 + mov r0, #0x0 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205E7C4 +FUN_0205E7C4: ; 0x0205E7C4 + push {r4-r7, lr} + sub sp, #0xc + mov r1, #0x0 + add r4, r0, #0x0 + str r1, [sp, #0x8] + bl FUN_02058488 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02058450 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205C9E8 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02058578 + ldr r1, [sp, #0x0] + add r7, r0, #0x0 + cmp r1, #0x8 + bhi _0205E84C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205E7FE: ; jump table (using 16-bit offset) + .short _0205E84C - _0205E7FE - 2; case 0 + .short _0205E810 - _0205E7FE - 2; case 1 + .short _0205E810 - _0205E7FE - 2; case 2 + .short _0205E810 - _0205E7FE - 2; case 3 + .short _0205E810 - _0205E7FE - 2; case 4 + .short _0205E810 - _0205E7FE - 2; case 5 + .short _0205E810 - _0205E7FE - 2; case 6 + .short _0205E810 - _0205E7FE - 2; case 7 + .short _0205E810 - _0205E7FE - 2; case 8 +_0205E810: + add r1, sp, #0x4 + add r2, sp, #0x8 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + bne _0205E84C +_0205E81E: + ldr r0, [sp, #0x4] + cmp r4, r0 + beq _0205E83C + bl FUN_02058450 + cmp r6, r0 + bne _0205E83C + ldr r0, [sp, #0x4] + bl FUN_0205C9E8 + cmp r5, r0 + bne _0205E83C + ldr r0, [sp, #0x4] + add sp, #0xc + pop {r4-r7, pc} +_0205E83C: + add r0, r7, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + beq _0205E81E +_0205E84C: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205E854 +FUN_0205E854: ; 0x0205E854 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + str r1, [sp, #0x0] + bl FUN_02058578 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_02058450 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205C9E8 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + bne _0205E8C6 +_0205E886: + ldr r0, [sp, #0x4] + cmp r5, r0 + beq _0205E8B6 + bl FUN_02058450 + cmp r7, r0 + bne _0205E8B6 + ldr r0, [sp, #0x4] + bl FUN_0205C9E8 + cmp r6, r0 + bne _0205E8B6 + ldr r0, [sp, #0x0] + ldrb r0, [r0, #0x1] + cmp r0, #0x0 + bne _0205E8B0 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_0205E8D0 +_0205E8B0: + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0205E8B6: + add r0, r4, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + mov r3, #0x1 + bl FUN_020580F4 + cmp r0, #0x1 + beq _0205E886 +_0205E8C6: + ldr r1, [sp, #0x0] + mov r0, #0x0 + strb r0, [r1, #0x1] + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0205E8D0 +FUN_0205E8D0: ; 0x0205E8D0 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r0, #0x1 + add r4, r2, #0x0 + strb r0, [r5, #0x1] + add r0, r4, #0x0 + bl FUN_02058B2C + strh r0, [r5, #0x2] + add r0, r4, #0x0 + bl FUN_02058B4C + strh r0, [r5, #0x4] + mov r0, #0xff + strh r0, [r5, #0x6] + str r4, [r5, #0x8] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205E8F4 +FUN_0205E8F4: ; 0x0205E8F4 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r5, [r1, #0x8] + bl FUN_02058B2C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02058B4C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B14 + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02058B24 + cmp r4, r7 + bne _0205E91E + cmp r6, r0 + beq _0205E93A +_0205E91E: + add r0, r5, #0x0 + bl FUN_02058854 + cmp r0, #0x1 + beq _0205E936 + mov r1, #0x61 + add r0, r5, #0x0 + lsl r1, r1, #0x6 + bl FUN_02058424 + cmp r0, #0x0 + bne _0205E93A +_0205E936: + mov r0, #0x1 + pop {r3-r7, pc} +_0205E93A: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0205E940 +FUN_0205E940: ; 0x0205E940 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + add r5, r1, #0x0 + bl FUN_02058B2C + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02058B4C + add r6, r0, #0x0 + ldr r0, [r5, #0x8] + bl FUN_02058B2C + str r0, [sp, #0x8] + ldr r0, [r5, #0x8] + bl FUN_02058B4C + add r7, r0, #0x0 + ldr r0, [r5, #0x8] + bl FUN_02058B14 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + bl FUN_02058B24 + add r3, r0, #0x0 + ldr r0, [sp, #0x8] + cmp r4, r0 + bne _0205E986 + cmp r6, r7 + bne _0205E986 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0205E986: + ldr r2, [sp, #0x4] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02059E80 + add r5, r0, #0x0 + bl FUN_02059BF4 + add r4, r4, r0 + add r0, r5, #0x0 + bl FUN_02059C00 + add r1, r6, r0 + ldr r0, [sp, #0x8] + cmp r4, r0 + bne _0205E9AA + cmp r1, r7 + beq _0205E9C0 +_0205E9AA: + add r0, r5, #0x0 + mov r1, #0xc + bl FUN_0205AFDC + add r1, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_0205AE0C + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_0205E9C0: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205E9C8 +FUN_0205E9C8: ; 0x0205E9C8 + push {r4-r5, lr} + sub sp, #0xc + add r5, r1, #0x0 + add r4, r0, #0x0 + mov r1, #0x8 + bl FUN_0205858C + strb r5, [r0, #0x1] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02058544 + add r0, r4, #0x0 + bl FUN_02058848 + mov r1, #0x1 + add r0, r4, #0x0 + lsl r1, r1, #0x14 + bl FUN_02058410 + ldr r5, _0205EA0C ; =0x020F7398 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058B94 + add sp, #0xc + pop {r4-r5, pc} + nop +_0205EA0C: .word 0x020F7398 + + thumb_func_start FUN_0205EA10 +FUN_0205EA10: ; 0x0205EA10 + ldr r3, _0205EA18 ; =FUN_0205E9C8 + mov r1, #0x0 + bx r3 + nop +_0205EA18: .word FUN_0205E9C8 + + thumb_func_start FUN_0205EA1C +FUN_0205EA1C: ; 0x0205EA1C + ldr r3, _0205EA24 ; =FUN_0205E9C8 + mov r1, #0x1 + bx r3 + nop +_0205EA24: .word FUN_0205E9C8 + + thumb_func_start FUN_0205EA28 +FUN_0205EA28: ; 0x0205EA28 + ldr r3, _0205EA30 ; =FUN_0205E9C8 + mov r1, #0x2 + bx r3 + nop +_0205EA30: .word FUN_0205E9C8 + + thumb_func_start FUN_0205EA34 +FUN_0205EA34: ; 0x0205EA34 + ldr r3, _0205EA3C ; =FUN_0205E9C8 + mov r1, #0x3 + bx r3 + nop +_0205EA3C: .word FUN_0205E9C8 + + thumb_func_start FUN_0205EA40 +FUN_0205EA40: ; 0x0205EA40 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_020585B0 + ldr r6, _0205EA60 ; =0x020F7380 + add r4, r0, #0x0 +_0205EA4C: + ldrb r2, [r4, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + ldr r2, [r6, r2] + blx r2 + cmp r0, #0x1 + beq _0205EA4C + pop {r4-r6, pc} + nop +_0205EA60: .word 0x020F7380 + + thumb_func_start FUN_0205EA64 +FUN_0205EA64: ; 0x0205EA64 + push {r3, lr} + bl FUN_0205EB20 + cmp r0, #0x0 + beq _0205EA72 + bl FUN_021E4DE4 +_0205EA72: + pop {r3, pc} + + thumb_func_start FUN_0205EA74 +FUN_0205EA74: ; 0x0205EA74 + push {r4-r5, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_020585B0 + add r5, r0, #0x0 + mov r1, #0x0 + strb r1, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_0205EB14 + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + bne _0205EAA6 + ldr r5, _0205EAAC ; =0x020F73A4 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r2, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + bl FUN_02058B94 +_0205EAA6: + add sp, #0xc + pop {r4-r5, pc} + nop +_0205EAAC: .word 0x020F73A4 + + thumb_func_start FUN_0205EAB0 +FUN_0205EAB0: ; 0x0205EAB0 + push {r3-r5, lr} + add r4, r1, #0x0 + ldrb r1, [r4, #0x2] + add r5, r0, #0x0 + cmp r1, #0x0 + bne _0205EACA + ldrb r1, [r4, #0x1] + bl FUN_0224CECC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205EB14 +_0205EACA: + add r0, r5, #0x0 + bl FUN_02058848 + add r0, r5, #0x0 + bl FUN_0205886C + ldrb r0, [r4, #0x0] + add r0, r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205EAE0 +FUN_0205EAE0: ; 0x0205EAE0 + push {r3-r5, lr} + add r4, r1, #0x0 + ldrb r1, [r4, #0x2] + add r5, r0, #0x0 + cmp r1, #0x0 + bne _0205EB0E + bl FUN_0205EB20 + cmp r0, #0x0 + bne _0205EB0E + add r0, r5, #0x0 + bl FUN_02058934 + cmp r0, #0x1 + bne _0205EB0E + ldrb r1, [r4, #0x1] + add r0, r5, #0x0 + bl FUN_0224CECC + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0205EB14 +_0205EB0E: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205EB14 +FUN_0205EB14: ; 0x0205EB14 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020585B0 + str r4, [r0, #0x4] + pop {r4, pc} + + thumb_func_start FUN_0205EB20 +FUN_0205EB20: ; 0x0205EB20 + push {r3, lr} + bl FUN_020585B0 + ldr r0, [r0, #0x4] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205EB2C +FUN_0205EB2C: ; 0x0205EB2C + push {r3, lr} + bl FUN_020585B0 + mov r1, #0x1 + strb r1, [r0, #0x2] + pop {r3, pc} + + thumb_func_start FUN_0205EB38 +FUN_0205EB38: ; 0x0205EB38 + push {r4-r7, lr} + sub sp, #0x24 + ldr r3, _0205EBE0 ; =0x020F73B0 + add r2, sp, #0xc + add r4, r0, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + mov r1, #0x5b + add r0, r4, #0x0 + lsl r1, r1, #0x2 + bl FUN_02016998 + mov r2, #0x5b + add r7, r0, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + blx MI_CpuFill8 + add r0, r7, #0x0 + add r1, sp, #0xc + mov r2, #0x2 + mov r3, #0xb + bl FUN_021D959C + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, _0205EBE4 ; =0x000034D8 + mov r2, #0x0 + str r0, [sp, #0x8] + add r0, r7, #0x0 + mov r1, #0x55 + add r3, r2, #0x0 + bl FUN_021D967C + ldr r0, _0205EBE4 ; =0x000034D8 + mov r1, #0x55 + str r0, [sp, #0x0] + add r0, r7, #0x0 + mov r2, #0x2 + mov r3, #0x0 + bl FUN_021D96F4 + ldr r0, _0205EBE4 ; =0x000034D8 + mov r1, #0x55 + str r0, [sp, #0x0] + add r0, r7, #0x0 + mov r2, #0x3 + mov r3, #0x0 + bl FUN_021D9708 + mov r2, #0x1 + ldr r0, _0205EBE4 ; =0x000034D8 + str r2, [sp, #0x0] + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x55 + mov r3, #0x0 + bl FUN_021D971C + ldr r4, _0205EBE8 ; =0x020F73C8 + mov r6, #0x0 + add r5, r7, #0x0 +_0205EBC0: + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_021D9820 + mov r1, #0x59 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r6, r6, #0x1 + add r4, #0x34 + add r5, r5, #0x4 + cmp r6, #0x2 + blo _0205EBC0 + add r0, r7, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0205EBE0: .word 0x020F73B0 +_0205EBE4: .word 0x000034D8 +_0205EBE8: .word 0x020F73C8 + + thumb_func_start FUN_0205EBEC +FUN_0205EBEC: ; 0x0205EBEC + push {r3-r7, lr} + add r7, r0, #0x0 + mov r6, #0x59 + mov r4, #0x0 + add r5, r7, #0x0 + lsl r6, r6, #0x2 +_0205EBF8: + ldr r0, [r5, r6] + cmp r0, #0x0 + beq _0205EC02 + bl FUN_0200C3DC +_0205EC02: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x2 + blt _0205EBF8 + add r0, r7, #0x0 + bl FUN_021D99F8 + add r0, r7, #0x0 + bl FUN_02016A18 + pop {r3-r7, pc} + + thumb_func_start FUN_0205EC18 +FUN_0205EC18: ; 0x0205EC18 + push {r3-r7, lr} + mov r7, #0x1 + mov r6, #0x59 + str r0, [sp, #0x0] + mov r4, #0x0 + add r5, r0, #0x0 + lsl r7, r7, #0xc + lsl r6, r6, #0x2 +_0205EC28: + ldr r0, [r5, r6] + cmp r0, #0x0 + beq _0205EC36 + ldr r0, [r0, #0x0] + add r1, r7, #0x0 + bl FUN_020201E4 +_0205EC36: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x2 + blt _0205EC28 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + bl FUN_0201FDEC + pop {r3-r7, pc} + + thumb_func_start FUN_0205EC48 +FUN_0205EC48: ; 0x0205EC48 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r4, r1, #0x0 + add r6, r3, #0x0 + bl FUN_0200C714 + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0200C714 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0205EC6C +FUN_0205EC6C: ; 0x0205EC6C + push {r3, lr} + cmp r1, #0x2 + bhs _0205EC82 + lsl r1, r1, #0x2 + add r1, r0, r1 + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + add r1, r2, #0x0 + bl FUN_0200C644 +_0205EC82: + pop {r3, pc} + + thumb_func_start FUN_0205EC84 +FUN_0205EC84: ; 0x0205EC84 + ldr r3, _0205EC88 ; =FUN_020462E4 + bx r3 + .balign 4 +_0205EC88: .word FUN_020462E4 + + thumb_func_start FUN_0205EC8C +FUN_0205EC8C: ; 0x0205EC8C + ldr r3, _0205EC90 ; =FUN_0204630C + bx r3 + .balign 4 +_0205EC90: .word FUN_0204630C + + thumb_func_start FUN_0205EC94 +FUN_0205EC94: ; 0x0205EC94 + ldr r3, _0205EC98 ; =FUN_020462B8 + bx r3 + .balign 4 +_0205EC98: .word FUN_020462B8 + + thumb_func_start FUN_0205EC9C +FUN_0205EC9C: ; 0x0205EC9C + push {r3, lr} + cmp r1, #0x0 + beq _0205ECB6 + cmp r1, #0x1 + beq _0205ECAC + cmp r1, #0x2 + beq _0205ECC0 + b _0205ECCA +_0205ECAC: + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205EC84 + b _0205ECCE +_0205ECB6: + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205EC8C + b _0205ECCE +_0205ECC0: + lsl r1, r2, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205EC94 + pop {r3, pc} +_0205ECCA: + bl ErrorHandling +_0205ECCE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205ECD4 +FUN_0205ECD4: ; 0x0205ECD4 + ldr r3, _0205ECDC ; =FUN_0205EC84 + mov r1, #0x96 + lsl r1, r1, #0x4 + bx r3 + .balign 4 +_0205ECDC: .word FUN_0205EC84 + + thumb_func_start FUN_0205ECE0 +FUN_0205ECE0: ; 0x0205ECE0 + ldr r3, _0205ECE8 ; =FUN_0205EC94 + mov r1, #0x96 + lsl r1, r1, #0x4 + bx r3 + .balign 4 +_0205ECE8: .word FUN_0205EC94 + + thumb_func_start FUN_0205ECEC +FUN_0205ECEC: ; 0x0205ECEC + ldr r3, _0205ECF4 ; =FUN_0205EC94 + ldr r1, _0205ECF8 ; =0x0000098D + bx r3 + nop +_0205ECF4: .word FUN_0205EC94 +_0205ECF8: .word 0x0000098D + + thumb_func_start FUN_0205ECFC +FUN_0205ECFC: ; 0x0205ECFC + ldr r3, _0205ED04 ; =FUN_0205EC84 + ldr r1, _0205ED08 ; =0x00000964 + bx r3 + nop +_0205ED04: .word FUN_0205EC84 +_0205ED08: .word 0x00000964 + + thumb_func_start FUN_0205ED0C +FUN_0205ED0C: ; 0x0205ED0C + ldr r3, _0205ED14 ; =FUN_0205EC94 + ldr r1, _0205ED18 ; =0x00000964 + bx r3 + nop +_0205ED14: .word FUN_0205EC94 +_0205ED18: .word 0x00000964 + + thumb_func_start FUN_0205ED1C +FUN_0205ED1C: ; 0x0205ED1C + ldr r3, _0205ED24 ; =FUN_0205EC84 + ldr r1, _0205ED28 ; =0x00000961 + bx r3 + nop +_0205ED24: .word FUN_0205EC84 +_0205ED28: .word 0x00000961 + + thumb_func_start FUN_0205ED2C +FUN_0205ED2C: ; 0x0205ED2C + ldr r3, _0205ED34 ; =FUN_0205EC8C + ldr r1, _0205ED38 ; =0x00000961 + bx r3 + nop +_0205ED34: .word FUN_0205EC8C +_0205ED38: .word 0x00000961 + + thumb_func_start FUN_0205ED3C +FUN_0205ED3C: ; 0x0205ED3C + ldr r3, _0205ED44 ; =FUN_0205EC94 + ldr r1, _0205ED48 ; =0x00000961 + bx r3 + nop +_0205ED44: .word FUN_0205EC94 +_0205ED48: .word 0x00000961 + + thumb_func_start FUN_0205ED4C +FUN_0205ED4C: ; 0x0205ED4C + ldr r3, _0205ED54 ; =FUN_0205EC84 + ldr r1, _0205ED58 ; =0x00000965 + bx r3 + nop +_0205ED54: .word FUN_0205EC84 +_0205ED58: .word 0x00000965 + + thumb_func_start FUN_0205ED5C +FUN_0205ED5C: ; 0x0205ED5C + ldr r3, _0205ED64 ; =FUN_0205EC8C + ldr r1, _0205ED68 ; =0x00000965 + bx r3 + nop +_0205ED64: .word FUN_0205EC8C +_0205ED68: .word 0x00000965 + + thumb_func_start FUN_0205ED6C +FUN_0205ED6C: ; 0x0205ED6C + ldr r3, _0205ED74 ; =FUN_0205EC94 + ldr r1, _0205ED78 ; =0x00000965 + bx r3 + nop +_0205ED74: .word FUN_0205EC94 +_0205ED78: .word 0x00000965 + + thumb_func_start FUN_0205ED7C +FUN_0205ED7C: ; 0x0205ED7C + ldr r3, _0205ED84 ; =FUN_0205EC84 + ldr r1, _0205ED88 ; =0x0000096D + bx r3 + nop +_0205ED84: .word FUN_0205EC84 +_0205ED88: .word 0x0000096D + + thumb_func_start FUN_0205ED8C +FUN_0205ED8C: ; 0x0205ED8C + ldr r3, _0205ED94 ; =FUN_0205EC8C + ldr r1, _0205ED98 ; =0x0000096D + bx r3 + nop +_0205ED94: .word FUN_0205EC8C +_0205ED98: .word 0x0000096D + + thumb_func_start FUN_0205ED9C +FUN_0205ED9C: ; 0x0205ED9C + ldr r3, _0205EDA4 ; =FUN_0205EC94 + ldr r1, _0205EDA8 ; =0x0000096D + bx r3 + nop +_0205EDA4: .word FUN_0205EC94 +_0205EDA8: .word 0x0000096D + + thumb_func_start FUN_0205EDAC +FUN_0205EDAC: ; 0x0205EDAC + ldr r3, _0205EDB4 ; =FUN_0205EC84 + ldr r1, _0205EDB8 ; =0x0000096E + bx r3 + nop +_0205EDB4: .word FUN_0205EC84 +_0205EDB8: .word 0x0000096E + + thumb_func_start FUN_0205EDBC +FUN_0205EDBC: ; 0x0205EDBC + ldr r3, _0205EDC4 ; =FUN_0205EC84 + ldr r1, _0205EDC8 ; =0x0000096F + bx r3 + nop +_0205EDC4: .word FUN_0205EC84 +_0205EDC8: .word 0x0000096F + + thumb_func_start FUN_0205EDCC +FUN_0205EDCC: ; 0x0205EDCC + ldr r3, _0205EDD4 ; =FUN_0205EC84 + mov r1, #0x97 + lsl r1, r1, #0x4 + bx r3 + .balign 4 +_0205EDD4: .word FUN_0205EC84 + + thumb_func_start FUN_0205EDD8 +FUN_0205EDD8: ; 0x0205EDD8 + ldr r3, _0205EDE0 ; =FUN_0205EC84 + ldr r1, _0205EDE4 ; =0x00000971 + bx r3 + nop +_0205EDE0: .word FUN_0205EC84 +_0205EDE4: .word 0x00000971 + + thumb_func_start FUN_0205EDE8 +FUN_0205EDE8: ; 0x0205EDE8 + ldr r3, _0205EDF0 ; =FUN_0205EC84 + ldr r1, _0205EDF4 ; =0x00000972 + bx r3 + nop +_0205EDF0: .word FUN_0205EC84 +_0205EDF4: .word 0x00000972 + + thumb_func_start FUN_0205EDF8 +FUN_0205EDF8: ; 0x0205EDF8 + ldr r3, _0205EE00 ; =FUN_0205EC84 + ldr r1, _0205EE04 ; =0x00000973 + bx r3 + nop +_0205EE00: .word FUN_0205EC84 +_0205EE04: .word 0x00000973 + + thumb_func_start FUN_0205EE08 +FUN_0205EE08: ; 0x0205EE08 + push {r3, lr} + cmp r1, #0x4 + bhi _0205EE4A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205EE1A: ; jump table (using 16-bit offset) + .short _0205EE24 - _0205EE1A - 2; case 0 + .short _0205EE2C - _0205EE1A - 2; case 1 + .short _0205EE34 - _0205EE1A - 2; case 2 + .short _0205EE3C - _0205EE1A - 2; case 3 + .short _0205EE44 - _0205EE1A - 2; case 4 +_0205EE24: + ldr r1, _0205EE4C ; =0x00000968 + bl FUN_0205EC84 + pop {r3, pc} +_0205EE2C: + ldr r1, _0205EE50 ; =0x00000969 + bl FUN_0205EC84 + pop {r3, pc} +_0205EE34: + ldr r1, _0205EE54 ; =0x0000096A + bl FUN_0205EC84 + pop {r3, pc} +_0205EE3C: + ldr r1, _0205EE58 ; =0x0000096B + bl FUN_0205EC84 + pop {r3, pc} +_0205EE44: + ldr r1, _0205EE5C ; =0x0000096C + bl FUN_0205EC84 +_0205EE4A: + pop {r3, pc} + .balign 4 +_0205EE4C: .word 0x00000968 +_0205EE50: .word 0x00000969 +_0205EE54: .word 0x0000096A +_0205EE58: .word 0x0000096B +_0205EE5C: .word 0x0000096C + + thumb_func_start FUN_0205EE60 +FUN_0205EE60: ; 0x0205EE60 + push {r3, lr} + cmp r1, #0x4 + bhi _0205EEA2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205EE72: ; jump table (using 16-bit offset) + .short _0205EE7C - _0205EE72 - 2; case 0 + .short _0205EE84 - _0205EE72 - 2; case 1 + .short _0205EE8C - _0205EE72 - 2; case 2 + .short _0205EE94 - _0205EE72 - 2; case 3 + .short _0205EE9C - _0205EE72 - 2; case 4 +_0205EE7C: + ldr r1, _0205EEA4 ; =0x00000968 + bl FUN_0205EC94 + pop {r3, pc} +_0205EE84: + ldr r1, _0205EEA8 ; =0x00000969 + bl FUN_0205EC94 + pop {r3, pc} +_0205EE8C: + ldr r1, _0205EEAC ; =0x0000096A + bl FUN_0205EC94 + pop {r3, pc} +_0205EE94: + ldr r1, _0205EEB0 ; =0x0000096B + bl FUN_0205EC94 + pop {r3, pc} +_0205EE9C: + ldr r1, _0205EEB4 ; =0x0000096C + bl FUN_0205EC94 +_0205EEA2: + pop {r3, pc} + .balign 4 +_0205EEA4: .word 0x00000968 +_0205EEA8: .word 0x00000969 +_0205EEAC: .word 0x0000096A +_0205EEB0: .word 0x0000096B +_0205EEB4: .word 0x0000096C + + thumb_func_start FUN_0205EEB8 +FUN_0205EEB8: ; 0x0205EEB8 + push {r3, lr} + mov r2, #0x0 + cmp r1, #0x5 + bhi _0205EF0A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205EECC: ; jump table (using 16-bit offset) + .short _0205EF0A - _0205EECC - 2; case 0 + .short _0205EED8 - _0205EECC - 2; case 1 + .short _0205EEE2 - _0205EECC - 2; case 2 + .short _0205EEEE - _0205EECC - 2; case 3 + .short _0205EEF8 - _0205EECC - 2; case 4 + .short _0205EF02 - _0205EECC - 2; case 5 +_0205EED8: + ldr r1, _0205EF10 ; =0x0000097F + bl FUN_0205EC94 + add r2, r0, #0x0 + b _0205EF0A +_0205EEE2: + mov r1, #0x26 + lsl r1, r1, #0x6 + bl FUN_0205EC94 + add r2, r0, #0x0 + b _0205EF0A +_0205EEEE: + ldr r1, _0205EF14 ; =0x00000981 + bl FUN_0205EC94 + add r2, r0, #0x0 + b _0205EF0A +_0205EEF8: + ldr r1, _0205EF18 ; =0x00000982 + bl FUN_0205EC94 + add r2, r0, #0x0 + b _0205EF0A +_0205EF02: + ldr r1, _0205EF1C ; =0x00000983 + bl FUN_0205EC94 + add r2, r0, #0x0 +_0205EF0A: + add r0, r2, #0x0 + pop {r3, pc} + nop +_0205EF10: .word 0x0000097F +_0205EF14: .word 0x00000981 +_0205EF18: .word 0x00000982 +_0205EF1C: .word 0x00000983 + + thumb_func_start FUN_0205EF20 +FUN_0205EF20: ; 0x0205EF20 + push {r4-r6, lr} + add r4, r1, #0x0 + ldr r1, _0205F0E4 ; =0x00000132 + add r6, r0, #0x0 + mov r5, #0x0 + cmp r4, r1 + bgt _0205EF7E + blt _0205EF32 + b _0205F036 +_0205EF32: + cmp r4, #0xc9 + bgt _0205EF60 + blt _0205EF3A + b _0205F084 +_0205EF3A: + cmp r4, #0x4b + bgt _0205EF58 + add r1, r4, #0x0 + sub r1, #0x48 + bmi _0205EF5E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205EF50: ; jump table (using 16-bit offset) + .short _0205F06A - _0205EF50 - 2; case 0 + .short _0205F06A - _0205EF50 - 2; case 1 + .short _0205F06A - _0205EF50 - 2; case 2 + .short _0205F06A - _0205EF50 - 2; case 3 +_0205EF58: + cmp r4, #0xb9 + bne _0205EF5E + b _0205F0D2 +_0205EF5E: + b _0205F0E0 +_0205EF60: + add r2, r1, #0x0 + sub r2, #0x32 + cmp r4, r2 + bgt _0205EF76 + sub r1, #0x32 + cmp r4, r1 + blt _0205EF70 + b _0205F09E +_0205EF70: + cmp r4, #0xfb + beq _0205F018 + b _0205F0E0 +_0205EF76: + sub r0, r1, #0x1 + cmp r4, r0 + beq _0205F036 + b _0205F0E0 +_0205EF7E: + add r2, r1, #0x0 + add r2, #0x5d + cmp r4, r2 + bgt _0205EFC8 + add r2, r1, #0x0 + add r2, #0x5d + cmp r4, r2 + blt _0205EF90 + b _0205F0B8 +_0205EF90: + add r2, r1, #0x1 + cmp r4, r2 + bgt _0205EF9E + add r0, r2, #0x0 + cmp r4, r0 + beq _0205F036 + b _0205F0E0 +_0205EF9E: + add r1, r1, #0x2 + sub r1, r4, r1 + cmp r1, #0xa + bhi _0205EFD6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205EFB2: ; jump table (using 16-bit offset) + .short _0205F036 - _0205EFB2 - 2; case 0 + .short _0205F036 - _0205EFB2 - 2; case 1 + .short _0205F036 - _0205EFB2 - 2; case 2 + .short _0205F0E0 - _0205EFB2 - 2; case 3 + .short _0205EFFC - _0205EFB2 - 2; case 4 + .short _0205F0E0 - _0205EFB2 - 2; case 5 + .short _0205EFE0 - _0205EFB2 - 2; case 6 + .short _0205F0E0 - _0205EFB2 - 2; case 7 + .short _0205EFEE - _0205EFB2 - 2; case 8 + .short _0205F0E0 - _0205EFB2 - 2; case 9 + .short _0205F00A - _0205EFB2 - 2; case 10 +_0205EFC8: + ldr r0, _0205F0E8 ; =0x000001EE + cmp r4, r0 + bgt _0205EFD8 + bge _0205F036 + sub r0, #0x48 + cmp r4, r0 + beq _0205F026 +_0205EFD6: + b _0205F0E0 +_0205EFD8: + add r0, r0, #0x3 + cmp r4, r0 + beq _0205F036 + b _0205F0E0 +_0205EFE0: + ldr r1, _0205F0EC ; =0x00000984 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F0F0 ; =0x0000042E + b _0205F0E0 +_0205EFEE: + ldr r1, _0205F0EC ; =0x00000984 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F0F4 ; =0x00000429 + b _0205F0E0 +_0205EFFC: + ldr r1, _0205F0F8 ; =0x0000098E + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F0F0 ; =0x0000042E + b _0205F0E0 +_0205F00A: + ldr r1, _0205F0FC ; =0x0000098F + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F0F0 ; =0x0000042E + b _0205F0E0 +_0205F018: + ldr r1, _0205F100 ; =0x00000995 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F104 ; =0x0000042D + b _0205F0E0 +_0205F026: + ldr r1, _0205F108 ; =0x00000993 + add r0, r6, #0x0 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F10C ; =0x0000044A + b _0205F0E0 +_0205F036: + ldr r1, _0205F110 ; =0x00000985 + add r0, r6, #0x0 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F054 + bl FUN_0201277C + cmp r0, #0x0 + bne _0205F050 + mov r5, #0xfe + lsl r5, r5, #0x2 + b _0205F0E0 +_0205F050: + ldr r5, _0205F114 ; =0x00000415 + b _0205F0E0 +_0205F054: + ldr r0, _0205F118 ; =0x00000131 + cmp r4, r0 + bne _0205F0E0 + ldr r1, _0205F11C ; =0x00000986 + add r0, r6, #0x0 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F120 ; =0x0000042B + b _0205F0E0 +_0205F06A: + ldr r1, _0205F124 ; =0x00000987 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + bl FUN_0201277C + cmp r0, #0x0 + bne _0205F080 + ldr r5, _0205F128 ; =0x000003F5 + b _0205F0E0 +_0205F080: + ldr r5, _0205F12C ; =0x00000412 + b _0205F0E0 +_0205F084: + ldr r1, _0205F130 ; =0x00000988 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + bl FUN_0201277C + cmp r0, #0x0 + bne _0205F09A + ldr r5, _0205F134 ; =0x000003FF + b _0205F0E0 +_0205F09A: + ldr r5, _0205F138 ; =0x0000041C + b _0205F0E0 +_0205F09E: + ldr r1, _0205F13C ; =0x00000989 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + bl FUN_0201277C + cmp r0, #0x0 + bne _0205F0B4 + ldr r5, _0205F140 ; =0x000003EE + b _0205F0E0 +_0205F0B4: + ldr r5, _0205F144 ; =0x0000040B + b _0205F0E0 +_0205F0B8: + ldr r1, _0205F148 ; =0x0000098A + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + bl FUN_0201277C + cmp r0, #0x0 + bne _0205F0CE + ldr r5, _0205F140 ; =0x000003EE + b _0205F0E0 +_0205F0CE: + ldr r5, _0205F144 ; =0x0000040B + b _0205F0E0 +_0205F0D2: + ldr r1, _0205F14C ; =0x0000098B + add r0, r6, #0x0 + bl FUN_0205EC94 + cmp r0, #0x1 + bne _0205F0E0 + ldr r5, _0205F150 ; =0x000003E9 +_0205F0E0: + add r0, r5, #0x0 + pop {r4-r6, pc} + .balign 4 +_0205F0E4: .word 0x00000132 +_0205F0E8: .word 0x000001EE +_0205F0EC: .word 0x00000984 +_0205F0F0: .word 0x0000042E +_0205F0F4: .word 0x00000429 +_0205F0F8: .word 0x0000098E +_0205F0FC: .word 0x0000098F +_0205F100: .word 0x00000995 +_0205F104: .word 0x0000042D +_0205F108: .word 0x00000993 +_0205F10C: .word 0x0000044A +_0205F110: .word 0x00000985 +_0205F114: .word 0x00000415 +_0205F118: .word 0x00000131 +_0205F11C: .word 0x00000986 +_0205F120: .word 0x0000042B +_0205F124: .word 0x00000987 +_0205F128: .word 0x000003F5 +_0205F12C: .word 0x00000412 +_0205F130: .word 0x00000988 +_0205F134: .word 0x000003FF +_0205F138: .word 0x0000041C +_0205F13C: .word 0x00000989 +_0205F140: .word 0x000003EE +_0205F144: .word 0x0000040B +_0205F148: .word 0x0000098A +_0205F14C: .word 0x0000098B +_0205F150: .word 0x000003E9 + + thumb_func_start FUN_0205F154 +FUN_0205F154: ; 0x0205F154 + ldr r3, _0205F15C ; =FUN_0205EC84 + ldr r1, _0205F160 ; =0x00000966 + bx r3 + nop +_0205F15C: .word FUN_0205EC84 +_0205F160: .word 0x00000966 + + thumb_func_start FUN_0205F164 +FUN_0205F164: ; 0x0205F164 + ldr r3, _0205F16C ; =FUN_0205EC8C + ldr r1, _0205F170 ; =0x00000966 + bx r3 + nop +_0205F16C: .word FUN_0205EC8C +_0205F170: .word 0x00000966 + + thumb_func_start FUN_0205F174 +FUN_0205F174: ; 0x0205F174 + ldr r3, _0205F17C ; =FUN_0205EC94 + ldr r1, _0205F180 ; =0x00000966 + bx r3 + nop +_0205F17C: .word FUN_0205EC94 +_0205F180: .word 0x00000966 + + thumb_func_start FUN_0205F184 +FUN_0205F184: ; 0x0205F184 + ldr r3, _0205F18C ; =FUN_0205EC94 + ldr r1, _0205F190 ; =0x00000978 + bx r3 + nop +_0205F18C: .word FUN_0205EC94 +_0205F190: .word 0x00000978 + + thumb_func_start FUN_0205F194 +FUN_0205F194: ; 0x0205F194 + ldr r3, _0205F19C ; =FUN_0205EC94 + ldr r1, _0205F1A0 ; =0x00000992 + bx r3 + nop +_0205F19C: .word FUN_0205EC94 +_0205F1A0: .word 0x00000992 + + thumb_func_start FUN_0205F1A4 +FUN_0205F1A4: ; 0x0205F1A4 + ldr r3, _0205F1AC ; =FUN_0205EC94 + ldr r1, _0205F1B0 ; =0x0000097D + bx r3 + nop +_0205F1AC: .word FUN_0205EC94 +_0205F1B0: .word 0x0000097D + + thumb_func_start FUN_0205F1B4 +FUN_0205F1B4: ; 0x0205F1B4 + ldr r3, _0205F1BC ; =FUN_0205EC94 + ldr r1, _0205F1C0 ; =0x0000097E + bx r3 + nop +_0205F1BC: .word FUN_0205EC94 +_0205F1C0: .word 0x0000097E + + thumb_func_start FUN_0205F1C4 +FUN_0205F1C4: ; 0x0205F1C4 + ldr r3, _0205F1CC ; =FUN_0205EC84 + ldr r1, _0205F1D0 ; =0x0000097C + bx r3 + nop +_0205F1CC: .word FUN_0205EC84 +_0205F1D0: .word 0x0000097C + + thumb_func_start FUN_0205F1D4 +FUN_0205F1D4: ; 0x0205F1D4 + ldr r3, _0205F1DC ; =FUN_0205EC8C + ldr r1, _0205F1E0 ; =0x0000097C + bx r3 + nop +_0205F1DC: .word FUN_0205EC8C +_0205F1E0: .word 0x0000097C + + thumb_func_start FUN_0205F1E4 +FUN_0205F1E4: ; 0x0205F1E4 + ldr r3, _0205F1EC ; =FUN_0205EC94 + ldr r1, _0205F1F0 ; =0x0000097C + bx r3 + nop +_0205F1EC: .word FUN_0205EC94 +_0205F1F0: .word 0x0000097C + + thumb_func_start FUN_0205F1F4 +FUN_0205F1F4: ; 0x0205F1F4 + ldr r3, _0205F1FC ; =FUN_0205EC84 + ldr r1, _0205F200 ; =0x00000967 + bx r3 + nop +_0205F1FC: .word FUN_0205EC84 +_0205F200: .word 0x00000967 + + thumb_func_start FUN_0205F204 +FUN_0205F204: ; 0x0205F204 + ldr r3, _0205F20C ; =FUN_0205EC8C + ldr r1, _0205F210 ; =0x00000967 + bx r3 + nop +_0205F20C: .word FUN_0205EC8C +_0205F210: .word 0x00000967 + + thumb_func_start FUN_0205F214 +FUN_0205F214: ; 0x0205F214 + ldr r3, _0205F21C ; =FUN_0205EC94 + ldr r1, _0205F220 ; =0x00000967 + bx r3 + nop +_0205F21C: .word FUN_0205EC94 +_0205F220: .word 0x00000967 + + thumb_func_start FUN_0205F224 +FUN_0205F224: ; 0x0205F224 + ldr r3, _0205F22C ; =FUN_0205EC84 + ldr r1, _0205F230 ; =0x00000979 + bx r3 + nop +_0205F22C: .word FUN_0205EC84 +_0205F230: .word 0x00000979 + + thumb_func_start FUN_0205F234 +FUN_0205F234: ; 0x0205F234 + ldr r3, _0205F23C ; =FUN_0205EC8C + ldr r1, _0205F240 ; =0x00000979 + bx r3 + nop +_0205F23C: .word FUN_0205EC8C +_0205F240: .word 0x00000979 + + thumb_func_start FUN_0205F244 +FUN_0205F244: ; 0x0205F244 + ldr r3, _0205F24C ; =FUN_0205EC94 + ldr r1, _0205F250 ; =0x00000979 + bx r3 + nop +_0205F24C: .word FUN_0205EC94 +_0205F250: .word 0x00000979 + + thumb_func_start FUN_0205F254 +FUN_0205F254: ; 0x0205F254 + ldr r3, _0205F25C ; =FUN_0205EC8C + ldr r1, _0205F260 ; =0x00000994 + bx r3 + nop +_0205F25C: .word FUN_0205EC8C +_0205F260: .word 0x00000994 + + thumb_func_start FUN_0205F264 +FUN_0205F264: ; 0x0205F264 + ldr r3, _0205F26C ; =FUN_0205EC9C + ldr r2, _0205F270 ; =0x00000962 + bx r3 + nop +_0205F26C: .word FUN_0205EC9C +_0205F270: .word 0x00000962 + + thumb_func_start FUN_0205F274 +FUN_0205F274: ; 0x0205F274 + ldr r3, _0205F27C ; =FUN_0205EC84 + ldr r1, _0205F280 ; =0x0000097A + bx r3 + nop +_0205F27C: .word FUN_0205EC84 +_0205F280: .word 0x0000097A + + thumb_func_start FUN_0205F284 +FUN_0205F284: ; 0x0205F284 + ldr r3, _0205F28C ; =FUN_0205EC8C + ldr r1, _0205F290 ; =0x0000097A + bx r3 + nop +_0205F28C: .word FUN_0205EC8C +_0205F290: .word 0x0000097A + + thumb_func_start FUN_0205F294 +FUN_0205F294: ; 0x0205F294 + ldr r3, _0205F29C ; =FUN_0205EC94 + ldr r1, _0205F2A0 ; =0x0000097A + bx r3 + nop +_0205F29C: .word FUN_0205EC94 +_0205F2A0: .word 0x0000097A + + thumb_func_start FUN_0205F2A4 +FUN_0205F2A4: ; 0x0205F2A4 + ldr r3, _0205F2AC ; =FUN_0205EC84 + ldr r1, _0205F2B0 ; =0x0000097B + bx r3 + nop +_0205F2AC: .word FUN_0205EC84 +_0205F2B0: .word 0x0000097B + + thumb_func_start FUN_0205F2B4 +FUN_0205F2B4: ; 0x0205F2B4 + ldr r3, _0205F2BC ; =FUN_0205EC8C + ldr r1, _0205F2C0 ; =0x0000097B + bx r3 + nop +_0205F2BC: .word FUN_0205EC8C +_0205F2C0: .word 0x0000097B + + thumb_func_start FUN_0205F2C4 +FUN_0205F2C4: ; 0x0205F2C4 + ldr r3, _0205F2CC ; =FUN_0205EC94 + ldr r1, _0205F2D0 ; =0x0000097B + bx r3 + nop +_0205F2CC: .word FUN_0205EC94 +_0205F2D0: .word 0x0000097B + + thumb_func_start FUN_0205F2D4 +FUN_0205F2D4: ; 0x0205F2D4 + ldr r3, _0205F2DC ; =FUN_0205EC9C + ldr r2, _0205F2E0 ; =0x00000963 + bx r3 + nop +_0205F2DC: .word FUN_0205EC9C +_0205F2E0: .word 0x00000963 + + thumb_func_start FUN_0205F2E4 +FUN_0205F2E4: ; 0x0205F2E4 + push {r4-r6, lr} + add r4, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x45 + blo _0205F2F4 + bl ErrorHandling +_0205F2F4: + mov r2, #0x9b + lsl r2, r2, #0x4 + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r4, r2 + bl FUN_0205EC9C + pop {r4-r6, pc} + + thumb_func_start FUN_0205F304 +FUN_0205F304: ; 0x0205F304 + ldr r3, _0205F30C ; =FUN_0205EC84 + ldr r1, _0205F310 ; =0x0000098C + bx r3 + nop +_0205F30C: .word FUN_0205EC84 +_0205F310: .word 0x0000098C + + thumb_func_start FUN_0205F314 +FUN_0205F314: ; 0x0205F314 + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_02046380 + mov r1, #0x1 + lsl r1, r1, #0xe + cmp r5, r1 + blo _0205F32C + lsl r1, r1, #0x1 + cmp r5, r1 + bls _0205F334 +_0205F32C: + bl ErrorHandling + mov r0, #0x0 + pop {r3-r5, pc} +_0205F334: + cmp r0, #0x0 + bne _0205F33C + mov r0, #0x0 + pop {r3-r5, pc} +_0205F33C: + strh r4, [r0, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205F344 +FUN_0205F344: ; 0x0205F344 + push {r3, lr} + bl FUN_02046380 + cmp r0, #0x0 + bne _0205F352 + mov r0, #0x0 + pop {r3, pc} +_0205F352: + ldrh r0, [r0, #0x0] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0205F358 +FUN_0205F358: ; 0x0205F358 + ldr r3, _0205F360 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F364 ; =0x0000403F + bx r3 + .balign 4 +_0205F360: .word FUN_0205F314 +_0205F364: .word 0x0000403F + + thumb_func_start FUN_0205F368 +FUN_0205F368: ; 0x0205F368 + ldr r3, _0205F370 ; =FUN_0205F344 + ldr r1, _0205F374 ; =0x0000403F + bx r3 + nop +_0205F370: .word FUN_0205F344 +_0205F374: .word 0x0000403F + + thumb_func_start FUN_0205F378 +FUN_0205F378: ; 0x0205F378 + ldr r3, _0205F380 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F384 ; =0x00004030 + bx r3 + .balign 4 +_0205F380: .word FUN_0205F314 +_0205F384: .word 0x00004030 + + thumb_func_start FUN_0205F388 +FUN_0205F388: ; 0x0205F388 + ldr r3, _0205F390 ; =FUN_0205F344 + ldr r1, _0205F394 ; =0x00004030 + bx r3 + nop +_0205F390: .word FUN_0205F344 +_0205F394: .word 0x00004030 + + thumb_func_start FUN_0205F398 +FUN_0205F398: ; 0x0205F398 + push {r3, lr} + ldr r1, _0205F3B8 ; =0x00004030 + bl FUN_0205F344 + ldr r2, _0205F3BC ; =0x00000183 + cmp r0, r2 + bne _0205F3AA + add r2, r2, #0x3 + b _0205F3B2 +_0205F3AA: + add r1, r2, #0x3 + cmp r0, r1 + bne _0205F3B2 + add r2, r2, #0x6 +_0205F3B2: + add r0, r2, #0x0 + pop {r3, pc} + nop +_0205F3B8: .word 0x00004030 +_0205F3BC: .word 0x00000183 + + thumb_func_start FUN_0205F3C0 +FUN_0205F3C0: ; 0x0205F3C0 + push {r3, lr} + ldr r1, _0205F3E0 ; =0x00004030 + bl FUN_0205F344 + ldr r2, _0205F3E4 ; =0x00000183 + cmp r0, r2 + bne _0205F3D2 + add r2, r2, #0x6 + b _0205F3DA +_0205F3D2: + add r1, r2, #0x3 + cmp r0, r1 + beq _0205F3DA + add r2, r2, #0x3 +_0205F3DA: + add r0, r2, #0x0 + pop {r3, pc} + nop +_0205F3E0: .word 0x00004030 +_0205F3E4: .word 0x00000183 + + thumb_func_start FUN_0205F3E8 +FUN_0205F3E8: ; 0x0205F3E8 + ldr r3, _0205F3F0 ; =FUN_0205F344 + ldr r1, _0205F3F4 ; =0x00004035 + bx r3 + nop +_0205F3F0: .word FUN_0205F344 +_0205F3F4: .word 0x00004035 + + thumb_func_start FUN_0205F3F8 +FUN_0205F3F8: ; 0x0205F3F8 + ldr r3, _0205F400 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F404 ; =0x00004035 + bx r3 + .balign 4 +_0205F400: .word FUN_0205F314 +_0205F404: .word 0x00004035 + + thumb_func_start FUN_0205F408 +FUN_0205F408: ; 0x0205F408 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0205ED8C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205F44C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205F41C +FUN_0205F41C: ; 0x0205F41C + ldr r3, _0205F424 ; =FUN_0205F344 + ldr r1, _0205F428 ; =0x00004033 + bx r3 + nop +_0205F424: .word FUN_0205F344 +_0205F428: .word 0x00004033 + + thumb_func_start FUN_0205F42C +FUN_0205F42C: ; 0x0205F42C + ldr r3, _0205F434 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F438 ; =0x00004033 + bx r3 + .balign 4 +_0205F434: .word FUN_0205F314 +_0205F438: .word 0x00004033 + + thumb_func_start FUN_0205F43C +FUN_0205F43C: ; 0x0205F43C + ldr r3, _0205F444 ; =FUN_0205F344 + ldr r1, _0205F448 ; =0x00004034 + bx r3 + nop +_0205F444: .word FUN_0205F344 +_0205F448: .word 0x00004034 + + thumb_func_start FUN_0205F44C +FUN_0205F44C: ; 0x0205F44C + ldr r3, _0205F454 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F458 ; =0x00004034 + bx r3 + .balign 4 +_0205F454: .word FUN_0205F314 +_0205F458: .word 0x00004034 + + thumb_func_start FUN_0205F45C +FUN_0205F45C: ; 0x0205F45C + push {r4, lr} + add r4, r0, #0x0 + bmi _0205F466 + cmp r4, #0x3 + blo _0205F46A +_0205F466: + bl ErrorHandling +_0205F46A: + ldr r0, _0205F474 ; =0x020F7430 + lsl r1, r4, #0x1 + ldrh r0, [r0, r1] + pop {r4, pc} + nop +_0205F474: .word 0x020F7430 + + thumb_func_start FUN_0205F478 +FUN_0205F478: ; 0x0205F478 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F45C + add r2, r0, #0x0 + ldr r1, _0205F49C ; =0x00004043 + lsl r2, r2, #0x10 + add r1, r4, r1 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_0205F314 + pop {r3-r5, pc} + nop +_0205F49C: .word 0x00004043 + + thumb_func_start FUN_0205F4A0 +FUN_0205F4A0: ; 0x0205F4A0 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, _0205F4C4 ; =0x00004043 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205F344 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F45C + cmp r5, r0 + bne _0205F4C0 + mov r0, #0x1 + pop {r3-r5, pc} +_0205F4C0: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0205F4C4: .word 0x00004043 + + thumb_func_start FUN_0205F4C8 +FUN_0205F4C8: ; 0x0205F4C8 + push {r4, lr} + add r4, r0, #0x0 + bmi _0205F4D2 + cmp r4, #0x4 + blt _0205F4D6 +_0205F4D2: + bl ErrorHandling +_0205F4D6: + ldr r0, _0205F4E0 ; =0x020F7436 + lsl r1, r4, #0x1 + ldrh r0, [r0, r1] + pop {r4, pc} + nop +_0205F4E0: .word 0x020F7436 + + thumb_func_start FUN_0205F4E4 +FUN_0205F4E4: ; 0x0205F4E4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F4C8 + add r2, r0, #0x0 + ldr r1, _0205F508 ; =0x00004036 + lsl r2, r2, #0x10 + add r1, r4, r1 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_0205F314 + pop {r3-r5, pc} + nop +_0205F508: .word 0x00004036 + + thumb_func_start FUN_0205F50C +FUN_0205F50C: ; 0x0205F50C + ldr r2, _0205F51C ; =0x00004036 + ldr r3, _0205F520 ; =FUN_0205F314 + add r1, r1, r2 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x0 + bx r3 + nop +_0205F51C: .word 0x00004036 +_0205F520: .word FUN_0205F314 + + thumb_func_start FUN_0205F524 +FUN_0205F524: ; 0x0205F524 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, _0205F548 ; =0x00004036 + add r1, r4, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0205F344 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0205F4C8 + cmp r5, r0 + bne _0205F544 + mov r0, #0x1 + pop {r3-r5, pc} +_0205F544: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0205F548: .word 0x00004036 + + thumb_func_start FUN_0205F54C +FUN_0205F54C: ; 0x0205F54C + ldr r3, _0205F554 ; =FUN_0205F314 + ldr r1, _0205F558 ; =0x0000403A + mov r2, #0x0 + bx r3 + .balign 4 +_0205F554: .word FUN_0205F314 +_0205F558: .word 0x0000403A + + thumb_func_start FUN_0205F55C +FUN_0205F55C: ; 0x0205F55C + ldr r3, _0205F564 ; =FUN_0205F344 + ldr r1, _0205F568 ; =0x0000403A + bx r3 + nop +_0205F564: .word FUN_0205F344 +_0205F568: .word 0x0000403A + + thumb_func_start FUN_0205F56C +FUN_0205F56C: ; 0x0205F56C + push {r4, lr} + ldr r1, _0205F58C ; =0x0000403A + add r4, r0, #0x0 + bl FUN_0205F344 + ldr r2, _0205F590 ; =0x00002710 + cmp r0, r2 + bhs _0205F582 + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_0205F582: + ldr r1, _0205F58C ; =0x0000403A + add r0, r4, #0x0 + bl FUN_0205F314 + pop {r4, pc} + .balign 4 +_0205F58C: .word 0x0000403A +_0205F590: .word 0x00002710 + + thumb_func_start FUN_0205F594 +FUN_0205F594: ; 0x0205F594 + ldr r3, _0205F59C ; =FUN_0205F344 + ldr r1, _0205F5A0 ; =0x0000403B + bx r3 + nop +_0205F59C: .word FUN_0205F344 +_0205F5A0: .word 0x0000403B + + thumb_func_start FUN_0205F5A4 +FUN_0205F5A4: ; 0x0205F5A4 + ldr r3, _0205F5AC ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F5B0 ; =0x0000403B + bx r3 + .balign 4 +_0205F5AC: .word FUN_0205F314 +_0205F5B0: .word 0x0000403B + + thumb_func_start FUN_0205F5B4 +FUN_0205F5B4: ; 0x0205F5B4 + push {r3-r5, lr} + add r4, r1, #0x0 + lsl r2, r4, #0x10 + ldr r1, _0205F5D4 ; =0x0000403C + lsr r2, r2, #0x10 + add r5, r0, #0x0 + bl FUN_0205F314 + lsr r2, r4, #0x10 + lsl r2, r2, #0x10 + ldr r1, _0205F5D4 ; =0x0000403C + add r0, r5, #0x0 + lsr r2, r2, #0x10 + bl FUN_0205F314 + pop {r3-r5, pc} + .balign 4 +_0205F5D4: .word 0x0000403C + + thumb_func_start FUN_0205F5D8 +FUN_0205F5D8: ; 0x0205F5D8 + push {r3-r5, lr} + ldr r1, _0205F5F4 ; =0x0000403C + add r5, r0, #0x0 + bl FUN_0205F344 + add r4, r0, #0x0 + ldr r1, _0205F5F8 ; =0x0000403D + add r0, r5, #0x0 + bl FUN_0205F344 + lsl r0, r0, #0x10 + orr r0, r4 + pop {r3-r5, pc} + nop +_0205F5F4: .word 0x0000403C +_0205F5F8: .word 0x0000403D + + thumb_func_start FUN_0205F5FC +FUN_0205F5FC: ; 0x0205F5FC + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0201B9EC + add r4, r0, #0x0 + bl FUN_0201B9EC + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + orr r1, r4 + bl FUN_0205F5B4 + pop {r3-r5, pc} + + thumb_func_start FUN_0205F618 +FUN_0205F618: ; 0x0205F618 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020462AC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202881C + bl FUN_020287A4 + add r2, r0, #0x0 + ldr r1, _0205F640 ; =0x41C64E6D + add r0, r4, #0x0 + mul r2, r1 + ldr r1, _0205F644 ; =0x00003039 + add r1, r2, r1 + bl FUN_0205F5B4 + pop {r3-r5, pc} + nop +_0205F640: .word 0x41C64E6D +_0205F644: .word 0x00003039 + + thumb_func_start FUN_0205F648 +FUN_0205F648: ; 0x0205F648 + ldr r3, _0205F650 ; =FUN_0205F344 + ldr r1, _0205F654 ; =0x00004041 + bx r3 + nop +_0205F650: .word FUN_0205F344 +_0205F654: .word 0x00004041 + + thumb_func_start FUN_0205F658 +FUN_0205F658: ; 0x0205F658 + ldr r3, _0205F660 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F664 ; =0x00004041 + bx r3 + .balign 4 +_0205F660: .word FUN_0205F314 +_0205F664: .word 0x00004041 + + thumb_func_start FUN_0205F668 +FUN_0205F668: ; 0x0205F668 + push {r4, lr} + bl FUN_020462AC + add r4, r0, #0x0 + bl FUN_0201B9EC + mov r1, #0x62 + blx _s32_div_f + add r1, r1, #0x2 + lsl r1, r1, #0x10 + add r0, r4, #0x0 + lsr r1, r1, #0x10 + bl FUN_0205F658 + pop {r4, pc} + + thumb_func_start FUN_0205F688 +FUN_0205F688: ; 0x0205F688 + ldr r3, _0205F690 ; =FUN_0205F344 + ldr r1, _0205F694 ; =0x0000403E + bx r3 + nop +_0205F690: .word FUN_0205F344 +_0205F694: .word 0x0000403E + + thumb_func_start FUN_0205F698 +FUN_0205F698: ; 0x0205F698 + ldr r3, _0205F6A0 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F6A4 ; =0x0000403E + bx r3 + .balign 4 +_0205F6A0: .word FUN_0205F314 +_0205F6A4: .word 0x0000403E + + thumb_func_start FUN_0205F6A8 +FUN_0205F6A8: ; 0x0205F6A8 + ldr r3, _0205F6B0 ; =FUN_0205F344 + ldr r1, _0205F6B4 ; =0x00004049 + bx r3 + nop +_0205F6B0: .word FUN_0205F344 +_0205F6B4: .word 0x00004049 + + thumb_func_start FUN_0205F6B8 +FUN_0205F6B8: ; 0x0205F6B8 + ldr r3, _0205F6C0 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F6C4 ; =0x00004049 + bx r3 + .balign 4 +_0205F6C0: .word FUN_0205F314 +_0205F6C4: .word 0x00004049 + + thumb_func_start FUN_0205F6C8 +FUN_0205F6C8: ; 0x0205F6C8 + ldr r3, _0205F6D0 ; =FUN_0205F344 + ldr r1, _0205F6D4 ; =0x00004040 + bx r3 + nop +_0205F6D0: .word FUN_0205F344 +_0205F6D4: .word 0x00004040 + + thumb_func_start FUN_0205F6D8 +FUN_0205F6D8: ; 0x0205F6D8 + ldr r3, _0205F6E0 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F6E4 ; =0x00004040 + bx r3 + .balign 4 +_0205F6E0: .word FUN_0205F314 +_0205F6E4: .word 0x00004040 + + thumb_func_start FUN_0205F6E8 +FUN_0205F6E8: ; 0x0205F6E8 + push {r4, lr} + ldr r1, _0205F708 ; =0x00004042 + add r4, r0, #0x0 + bl FUN_0205F344 + ldr r2, _0205F70C ; =0x00002710 + cmp r0, r2 + bhs _0205F6FE + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_0205F6FE: + ldr r1, _0205F708 ; =0x00004042 + add r0, r4, #0x0 + bl FUN_0205F314 + pop {r4, pc} + .balign 4 +_0205F708: .word 0x00004042 +_0205F70C: .word 0x00002710 + + thumb_func_start FUN_0205F710 +FUN_0205F710: ; 0x0205F710 + ldr r3, _0205F718 ; =FUN_0205F344 + ldr r1, _0205F71C ; =0x00004042 + bx r3 + nop +_0205F718: .word FUN_0205F344 +_0205F71C: .word 0x00004042 + + thumb_func_start FUN_0205F720 +FUN_0205F720: ; 0x0205F720 + ldr r3, _0205F728 ; =FUN_0205F344 + ldr r1, _0205F72C ; =0x00004046 + bx r3 + nop +_0205F728: .word FUN_0205F344 +_0205F72C: .word 0x00004046 + + thumb_func_start FUN_0205F730 +FUN_0205F730: ; 0x0205F730 + ldr r3, _0205F738 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F73C ; =0x00004046 + bx r3 + .balign 4 +_0205F738: .word FUN_0205F314 +_0205F73C: .word 0x00004046 + + thumb_func_start FUN_0205F740 +FUN_0205F740: ; 0x0205F740 + ldr r3, _0205F748 ; =FUN_0205F344 + ldr r1, _0205F74C ; =0x00004047 + bx r3 + nop +_0205F748: .word FUN_0205F344 +_0205F74C: .word 0x00004047 + + thumb_func_start FUN_0205F750 +FUN_0205F750: ; 0x0205F750 + ldr r3, _0205F758 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F75C ; =0x00004047 + bx r3 + .balign 4 +_0205F758: .word FUN_0205F314 +_0205F75C: .word 0x00004047 + + thumb_func_start FUN_0205F760 +FUN_0205F760: ; 0x0205F760 + ldr r3, _0205F768 ; =FUN_0205F344 + ldr r1, _0205F76C ; =0x00004048 + bx r3 + nop +_0205F768: .word FUN_0205F344 +_0205F76C: .word 0x00004048 + + thumb_func_start FUN_0205F770 +FUN_0205F770: ; 0x0205F770 + ldr r3, _0205F778 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F77C ; =0x00004048 + bx r3 + .balign 4 +_0205F778: .word FUN_0205F314 +_0205F77C: .word 0x00004048 + + thumb_func_start FUN_0205F780 +FUN_0205F780: ; 0x0205F780 + ldr r3, _0205F788 ; =FUN_0205F344 + ldr r1, _0205F78C ; =0x0000404A + bx r3 + nop +_0205F788: .word FUN_0205F344 +_0205F78C: .word 0x0000404A + + thumb_func_start FUN_0205F790 +FUN_0205F790: ; 0x0205F790 + ldr r3, _0205F798 ; =FUN_0205F314 + add r2, r1, #0x0 + ldr r1, _0205F79C ; =0x0000404A + bx r3 + .balign 4 +_0205F798: .word FUN_0205F314 +_0205F79C: .word 0x0000404A + + thumb_func_start FUN_0205F7A0 +FUN_0205F7A0: ; 0x0205F7A0 + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + str r2, [sp, #0x4] + bl FUN_020462AC + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DCC + mov r2, #0x5 + str r0, [sp, #0xc] + add r0, r5, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x6 + blx Call_FillMemWithValue + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + asr r1, r4, #0x4 + asr r2, r6, #0x4 + lsr r1, r1, #0x1b + lsr r2, r2, #0x1b + add r1, r4, r1 + add r2, r6, r2 + ldr r0, [r0, #0x28] + asr r1, r1, #0x5 + asr r2, r2, #0x5 + bl FUN_0203451C + bl FUN_02034908 + cmp r0, #0x0 + beq _0205F806 + str r4, [r5, #0x0] + str r6, [r5, #0x4] + b _0205F812 +_0205F806: + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x8] + str r0, [r5, #0x0] + ldr r0, [sp, #0xc] + ldr r0, [r0, #0xc] + str r0, [r5, #0x4] +_0205F812: + ldr r0, [sp, #0x0] + bl FUN_020377AC + bl FUN_020238F4 + bl FUN_020239CC + str r0, [r5, #0xc] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034E0C + str r0, [sp, #0x8] + ldr r0, [r0, #0x0] + mov r1, #0x6 + add r0, r0, #0x4 + blx _s32_div_f + mov r6, #0x0 + add r4, r5, #0x0 +_0205F83E: + ldr r0, [sp, #0x8] + lsl r2, r1, #0x2 + add r0, r0, r2 + ldrb r2, [r0, #0x6] + str r2, [r4, #0x20] + ldrb r2, [r0, #0x7] + str r2, [r4, #0x24] + ldrb r2, [r0, #0x9] + strh r2, [r4, #0x2a] + ldrb r0, [r0, #0x8] + cmp r0, #0x3 + bls _0205F85A + mov r0, #0x4 + b _0205F85A +_0205F85A: + strh r0, [r4, #0x28] + add r0, r1, #0x5 + mov r1, #0x6 + blx _s32_div_f + add r6, r6, #0x1 + add r4, #0xc + cmp r6, #0x5 + blt _0205F83E + mov r6, #0x4f + mov r4, #0x0 + lsl r6, r6, #0x2 +_0205F872: + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_0205F524 + cmp r0, #0x0 + beq _0205F888 + mov r0, #0x1 + ldrh r1, [r5, r6] + lsl r0, r4 + orr r0, r1 + strh r0, [r5, r6] +_0205F888: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _0205F872 + ldr r6, _0205F8C0 ; =0x020F7440 + mov r4, #0x0 +_0205F892: + ldrb r2, [r6, #0x0] + add r0, r7, #0x0 + mov r1, #0x2 + bl FUN_0205F2E4 + mov r1, #0x49 + add r2, r5, r4 + lsl r1, r1, #0x2 + add r4, r4, #0x1 + add r6, r6, #0x1 + strb r0, [r2, r1] + cmp r4, #0x14 + blt _0205F892 + ldr r0, [sp, #0x0] + ldr r2, _0205F8C4 ; =0x02105FA8 + add r1, r5, #0x0 + bl FUN_0205F8CC + ldr r1, _0205F8C8 ; =0x00000139 + ldr r0, [sp, #0x4] + strb r0, [r5, r1] + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0205F8C0: .word 0x020F7440 +_0205F8C4: .word 0x02105FA8 +_0205F8C8: .word 0x00000139 + + thumb_func_start FUN_0205F8CC +FUN_0205F8CC: ; 0x0205F8CC + push {r3-r7, lr} + sub sp, #0x70 + add r7, r0, #0x0 + ldr r0, [r7, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_020462AC + str r0, [sp, #0x0] + add r0, sp, #0x28 + blx FS_InitFile + add r0, sp, #0x28 + add r1, r4, #0x0 + blx FS_OpenFile + cmp r0, #0x0 + bne _0205F8F8 + bl ErrorHandling + add sp, #0x70 + pop {r3-r7, pc} +_0205F8F8: + add r0, sp, #0x28 + add r1, sp, #0x24 + mov r2, #0x4 + blx FS_ReadFile + cmp r0, #0x0 + bge _0205F90A + bl ErrorHandling +_0205F90A: + mov r0, #0xb + mov r1, #0x4 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x4 + add r6, r0, #0x0 + blx MI_CpuFill8 + ldr r1, [sp, #0x24] + ldr r0, _0205FA28 ; =0x0000013A + mov r4, #0x0 + strb r1, [r5, r0] + ldr r0, [sp, #0x24] + cmp r0, #0x0 + ble _0205FA16 + mov r0, #0xc + str r0, [sp, #0x10] + mov r0, #0x3 + str r0, [sp, #0xc] + mov r0, #0xc + str r0, [sp, #0x8] + mov r0, #0x3 + str r0, [sp, #0x4] + mov r0, #0xc0 + str r0, [sp, #0x20] + mov r0, #0x30 + str r0, [sp, #0x1c] + mov r0, #0xc0 + str r0, [sp, #0x18] + mov r0, #0x30 + add r5, #0x5c + str r0, [sp, #0x14] +_0205F94C: + add r0, sp, #0x28 + add r1, r6, #0x0 + mov r2, #0x4 + blx FS_ReadFile + ldrb r0, [r6, #0x0] + cmp r0, #0x1 + beq _0205F962 + cmp r0, #0x2 + beq _0205F98C + b _0205F9B2 +_0205F962: + ldrb r2, [r6, #0x1] + ldr r0, [sp, #0x0] + mov r1, #0x2 + bl FUN_0205F2E4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1e + ldrb r1, [r5, r4] + ldr r2, [sp, #0x8] + lsr r0, r0, #0x1c + bic r1, r2 + orr r0, r1 + strb r0, [r5, r4] + ldrb r1, [r5, r4] + ldr r0, [sp, #0x4] + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strb r0, [r5, r4] + b _0205F9B2 +_0205F98C: + ldrb r1, [r6, #0x1] + add r0, r7, #0x0 + bl FUN_02039528 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1e + ldrb r1, [r5, r4] + ldr r2, [sp, #0x10] + lsr r0, r0, #0x1c + bic r1, r2 + orr r0, r1 + strb r0, [r5, r4] + ldrb r1, [r5, r4] + ldr r0, [sp, #0xc] + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strb r0, [r5, r4] +_0205F9B2: + ldrb r0, [r6, #0x2] + cmp r0, #0x1 + beq _0205F9BE + cmp r0, #0x2 + beq _0205F9E8 + b _0205FA0E +_0205F9BE: + ldrb r2, [r6, #0x3] + ldr r0, [sp, #0x0] + mov r1, #0x2 + bl FUN_0205F2E4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1e + ldrb r1, [r5, r4] + ldr r2, [sp, #0x18] + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r5, r4] + ldrb r1, [r5, r4] + ldr r0, [sp, #0x14] + bic r1, r0 + mov r0, #0x10 + orr r0, r1 + strb r0, [r5, r4] + b _0205FA0E +_0205F9E8: + ldrb r1, [r6, #0x3] + add r0, r7, #0x0 + bl FUN_02039528 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1e + ldrb r1, [r5, r4] + ldr r2, [sp, #0x20] + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r5, r4] + ldrb r1, [r5, r4] + ldr r0, [sp, #0x1c] + bic r1, r0 + mov r0, #0x10 + orr r0, r1 + strb r0, [r5, r4] +_0205FA0E: + ldr r0, [sp, #0x24] + add r4, r4, #0x1 + cmp r4, r0 + blt _0205F94C +_0205FA16: + add r0, sp, #0x28 + blx FS_CloseFile + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0x70 + pop {r3-r7, pc} + nop +_0205FA28: .word 0x0000013A + + thumb_func_start FUN_0205FA2C +FUN_0205FA2C: ; 0x0205FA2C + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x40 + bl FUN_020169D8 + ldr r6, [r7, #0xc] + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r6, #0x0 + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + add r0, r6, #0x0 + bl FUN_0206BB1C + str r0, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_0206F158 + str r0, [r4, #0x4] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + ldrb r2, [r5, #0x8] + add r0, #0x20 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + mov r2, #0xf + ldrb r3, [r5, #0xa] + bic r0, r2 + mov r2, #0xf + and r2, r3 + orr r2, r0 + add r0, r4, #0x0 + add r0, #0x32 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + mov r2, #0xf0 + bic r0, r2 + ldrb r2, [r5, #0xb] + lsl r2, r2, #0x1c + lsr r2, r2, #0x18 + orr r2, r0 + add r0, r4, #0x0 + add r0, #0x32 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + ldrb r2, [r5, #0xc] + add r0, #0x33 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + ldrb r2, [r5, #0xd] + add r0, #0x22 + strb r2, [r0, #0x0] +_0205FAAE: + add r0, r5, r1 + ldrb r2, [r0, #0xe] + add r0, r4, r1 + add r0, #0x2c + strb r2, [r0, #0x0] + add r0, r1, #0x1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, #0x6 + blo _0205FAAE + ldr r1, _0205FAD4 ; =0x020F96DC + add r0, r7, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + ldr r0, [r5, #0x14] + str r4, [r0, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0205FAD4: .word 0x020F96DC + + thumb_func_start FUN_0205FAD8 +FUN_0205FAD8: ; 0x0205FAD8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _0205FAEA + mov r0, #0x1 + pop {r3-r5, pc} +_0205FAEA: + ldr r0, [r5, #0x14] + ldr r4, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + cmp r0, #0x6 + beq _0205FB04 + cmp r0, #0x7 + bne _0205FB0C + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x4 + pop {r3-r5, pc} +_0205FB04: + mov r0, #0x1 + str r0, [r5, #0x0] + mov r0, #0x4 + pop {r3-r5, pc} +_0205FB0C: + add r0, r4, #0x0 + add r1, r5, #0x0 + add r0, #0x2c + add r1, #0xe + mov r2, #0x6 + blx MI_CpuCopy8 + add r0, r4, #0x0 + add r0, #0x22 + ldrb r0, [r0, #0x0] + strb r0, [r5, #0xd] + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [r5, #0x14] + mov r1, #0x0 + str r1, [r0, #0x0] + mov r0, #0x2 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205FB34 +FUN_0205FB34: ; 0x0205FB34 + push {r3-r7, lr} + add r7, r1, #0x0 + add r6, r0, #0x0 + ldr r5, [r7, #0xc] + add r0, r2, #0x0 + mov r1, #0x30 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x30 + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r5, #0x0 + bl LoadPlayerDataAddress + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_0206BB1C + str r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_0206BB28 + str r0, [r4, #0x1c] + add r0, r5, #0x0 + bl FUN_02079C70 + str r0, [r4, #0x2c] + mov r0, #0x1 + strb r0, [r4, #0x11] + ldrb r0, [r6, #0xd] + strb r0, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9AC + strb r0, [r4, #0x13] + mov r0, #0x0 + strh r0, [r4, #0x18] + ldrb r0, [r6, #0x9] + strb r0, [r4, #0x12] + add r0, r5, #0x0 + bl FUN_0202A918 + str r0, [r4, #0x20] + ldr r1, _0205FBB8 ; =0x020F7454 + add r0, r4, #0x0 + bl FUN_0207B000 + add r0, r5, #0x0 + bl FUN_020238F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0207C2A4 + ldr r1, _0205FBBC ; =0x020FA6E8 + add r0, r7, #0x0 + add r2, r4, #0x0 + bl FUN_020373D4 + ldr r0, [r6, #0x14] + str r4, [r0, #0x0] + mov r0, #0x3 + pop {r3-r7, pc} + nop +_0205FBB8: .word 0x020F7454 +_0205FBBC: .word 0x020FA6E8 + + thumb_func_start FUN_0205FBC0 +FUN_0205FBC0: ; 0x0205FBC0 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _0205FBD2 + mov r0, #0x3 + pop {r4, pc} +_0205FBD2: + ldr r0, [r4, #0x14] + ldr r0, [r0, #0x0] + ldrb r1, [r0, #0x14] + strb r1, [r4, #0xd] + bl FUN_02016A18 + ldr r1, [r4, #0x14] + mov r0, #0x0 + str r0, [r1, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205FBE8 +FUN_0205FBE8: ; 0x0205FBE8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + cmp r1, #0x4 + bhi _0205FC4A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0205FC0C: ; jump table (using 16-bit offset) + .short _0205FC16 - _0205FC0C - 2; case 0 + .short _0205FC22 - _0205FC0C - 2; case 1 + .short _0205FC2C - _0205FC0C - 2; case 2 + .short _0205FC38 - _0205FC0C - 2; case 3 + .short _0205FC42 - _0205FC0C - 2; case 4 +_0205FC16: + add r1, r5, #0x0 + mov r2, #0xb + bl FUN_0205FA2C + str r0, [r4, #0x4] + b _0205FC4A +_0205FC22: + add r1, r5, #0x0 + bl FUN_0205FAD8 + str r0, [r4, #0x4] + b _0205FC4A +_0205FC2C: + add r1, r5, #0x0 + mov r2, #0xb + bl FUN_0205FB34 + str r0, [r4, #0x4] + b _0205FC4A +_0205FC38: + add r1, r5, #0x0 + bl FUN_0205FBC0 + str r0, [r4, #0x4] + b _0205FC4A +_0205FC42: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0205FC4A: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0205FC50 +FUN_0205FC50: ; 0x0205FC50 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02046528 + str r0, [sp, #0x0] + mov r0, #0xb + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x18 + blx MI_CpuFill8 + strb r6, [r4, #0x8] + strb r7, [r4, #0x9] + add r0, sp, #0x8 + ldrb r1, [r0, #0x10] + add r2, r4, #0x0 + strb r1, [r4, #0xa] + ldrb r1, [r0, #0x14] + strb r1, [r4, #0xb] + ldrb r1, [r0, #0x18] + strb r1, [r4, #0xc] + ldrb r0, [r0, #0x1c] + ldr r1, _0205FC98 ; =FUN_0205FBE8 + strb r0, [r4, #0xd] + ldr r0, [sp, #0x0] + str r5, [r4, #0x14] + ldr r0, [r0, #0x10] + bl FUN_0204640C + pop {r3-r7, pc} + nop +_0205FC98: .word FUN_0205FBE8 + + thumb_func_start FUN_0205FC9C +FUN_0205FC9C: ; 0x0205FC9C + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_0203384C + cmp r0, #0x0 + beq _0205FCBC + ldrh r1, [r4, #0x12] + ldrh r2, [r4, #0x14] + add r0, r5, #0x0 + bl FUN_02038790 + str r0, [r4, #0x8] + mov r0, #0x1 + pop {r3-r5, pc} +_0205FCBC: + mov r0, #0x1 + str r0, [r4, #0x0] + mov r0, #0x2 + pop {r3-r5, pc} + + thumb_func_start FUN_0205FCC4 +FUN_0205FCC4: ; 0x0205FCC4 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _0205FCD6 + mov r0, #0x1 + pop {r4, pc} +_0205FCD6: + ldr r0, [r4, #0x8] + ldr r0, [r0, #0x20] + str r0, [r4, #0x0] + ldr r0, [r4, #0x8] + bl FUN_02016A18 + mov r0, #0x2 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0205FCE8 +FUN_0205FCE8: ; 0x0205FCE8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + cmp r1, #0x0 + beq _0205FD0A + cmp r1, #0x1 + beq _0205FD14 + cmp r1, #0x2 + beq _0205FD1E + b _0205FD34 +_0205FD0A: + add r1, r5, #0x0 + bl FUN_0205FC9C + str r0, [r4, #0x4] + b _0205FD34 +_0205FD14: + add r1, r5, #0x0 + bl FUN_0205FCC4 + str r0, [r4, #0x4] + b _0205FD34 +_0205FD1E: + ldrh r1, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_020394B8 + ldr r1, [r4, #0x0] + strh r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_0205FD34: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0205FD38 +FUN_0205FD38: ; 0x0205FD38 + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_02046528 + str r0, [sp, #0x0] + mov r0, #0xb + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x18 + blx MI_CpuFill8 + strh r5, [r4, #0x12] + strh r7, [r4, #0x14] + ldr r0, [sp, #0x0] + strh r6, [r4, #0x10] + ldr r0, [r0, #0x10] + ldr r1, _0205FD6C ; =FUN_0205FCE8 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_0205FD6C: .word FUN_0205FCE8 + + thumb_func_start FUN_0205FD70 +FUN_0205FD70: ; 0x0205FD70 + push {r3-r7, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + bl FUN_02031190 + mov r1, #0x1 + sub r0, r1, r0 + bl FUN_020316E0 + add r7, r0, #0x0 + bne _0205FD96 + mov r0, #0x0 + pop {r3-r7, pc} +_0205FD96: + ldrh r1, [r5, #0x2] + add r0, r6, #0x0 + bl FUN_020394B8 + add r4, r0, #0x0 + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _0205FDB0 + cmp r0, #0x1 + beq _0205FDBC + cmp r0, #0x2 + beq _0205FDC8 + b _0205FDD2 +_0205FDB0: + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02244660 + strh r0, [r4, #0x0] + b _0205FDD2 +_0205FDBC: + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_022446BC + strh r0, [r4, #0x0] + b _0205FDD2 +_0205FDC8: + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_022446E0 + strh r0, [r4, #0x0] +_0205FDD2: + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_0205FDDC +FUN_0205FDDC: ; 0x0205FDDC + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + mov r0, #0xb + mov r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x4 + blx MI_CpuFill8 + strh r5, [r4, #0x0] + strh r6, [r4, #0x2] + ldr r0, [r7, #0x10] + ldr r1, _0205FE0C ; =FUN_0205FD70 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + nop +_0205FE0C: .word FUN_0205FD70 + + thumb_func_start FUN_0205FE10 +FUN_0205FE10: ; 0x0205FE10 + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x0] + bl FUN_02029FC8 + mov r1, #0x35 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + cmp r0, #0x14 + bhs _0205FE30 + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0205FE30: + ldr r0, [sp, #0x0] + bl FUN_0202A8D8 + mov r1, #0xd + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + mov r1, #0x0 + lsr r7, r0, #0x18 + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + add r0, r4, #0x0 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r4, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x3 + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + cmp r7, #0x0 + beq _0205FEA2 + cmp r6, #0x0 + beq _0205FEA2 + cmp r5, #0x0 + beq _0205FEA2 + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0205FEA2: + ldr r0, [sp, #0x0] + bl FUN_02026CC4 + cmp r7, #0x0 + bne _0205FEDC + mov r1, #0x55 + bl FUN_02025D94 + cmp r0, #0x0 + beq _0205FEC6 + add r0, r4, #0x0 + mov r1, #0xd + mov r2, #0x1 + bl FUN_0202A578 + add sp, #0x14 + mov r0, #0x1 + pop {r4-r7, pc} +_0205FEC6: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0205FED6 + add r0, r4, #0x0 + mov r1, #0xe + mov r2, #0x1 + bl FUN_0202A578 +_0205FED6: + add sp, #0x14 + mov r0, #0x4 + pop {r4-r7, pc} +_0205FEDC: + ldr r1, [sp, #0x10] + cmp r1, #0x32 + bhs _0205FEE8 + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0205FEE8: + cmp r6, #0x0 + bne _0205FF1C + mov r1, #0x56 + bl FUN_02025D94 + cmp r0, #0x0 + beq _0205FF06 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_0202A578 + add sp, #0x14 + mov r0, #0x2 + pop {r4-r7, pc} +_0205FF06: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _0205FF16 + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x1 + bl FUN_0202A578 +_0205FF16: + add sp, #0x14 + mov r0, #0x4 + pop {r4-r7, pc} +_0205FF1C: + cmp r1, #0x64 + blo _0205FF24 + cmp r5, #0x0 + beq _0205FF2A +_0205FF24: + add sp, #0x14 + mov r0, #0x0 + pop {r4-r7, pc} +_0205FF2A: + mov r1, #0x57 + bl FUN_02025D94 + cmp r0, #0x0 + beq _0205FF44 + mov r1, #0x1 + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_0202A578 + add sp, #0x14 + mov r0, #0x3 + pop {r4-r7, pc} +_0205FF44: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0205FF54 + add r0, r4, #0x0 + mov r1, #0x3 + mov r2, #0x1 + bl FUN_0202A578 +_0205FF54: + mov r0, #0x4 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0205FF5C +FUN_0205FF5C: ; 0x0205FF5C + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + bl FUN_02029FC8 + mov r1, #0x35 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + cmp r7, #0x14 + bhs _0205FF7A + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0205FF7A: + add r0, r4, #0x0 + bl FUN_0202A8D8 + mov r1, #0xd + mov r2, #0x0 + str r0, [sp, #0x8] + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + mov r1, #0x0 + ldr r0, [sp, #0x8] + add r2, r1, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x8] + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x8] + mov r1, #0xe + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + ldr r0, [sp, #0x8] + mov r1, #0x2 + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + mov r1, #0x3 + mov r2, #0x0 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r6, #0x0 + beq _0205FFEA + cmp r4, #0x0 + beq _0205FFEA + cmp r5, #0x0 + beq _0205FFEA + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0205FFEA: + cmp r6, #0x0 + bne _02060000 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _0205FFFA + add sp, #0xc + mov r0, #0x4 + pop {r4-r7, pc} +_0205FFFA: + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02060000: + cmp r7, #0x32 + bhs _0206000A + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0206000A: + cmp r4, #0x0 + bne _02060020 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _0206001A + add sp, #0xc + mov r0, #0x5 + pop {r4-r7, pc} +_0206001A: + add sp, #0xc + mov r0, #0x2 + pop {r4-r7, pc} +_02060020: + cmp r7, #0x64 + bhs _0206002A + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0206002A: + cmp r5, #0x0 + beq _02060034 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02060034: + cmp r0, #0x0 + beq _0206003E + add sp, #0xc + mov r0, #0x6 + pop {r4-r7, pc} +_0206003E: + mov r0, #0x3 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02060044 +FUN_02060044: ; 0x02060044 + add r0, #0xa8 + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + ldrh r3, [r0, #0x24] + add r2, r3, r2 + strh r2, [r0, #0x24] + ldrh r3, [r0, #0x28] + ldr r2, [r1, #0x4] + add r2, r3, r2 + strh r2, [r0, #0x28] + ldrh r2, [r0, #0x26] + ldr r1, [r1, #0x8] + add r1, r2, r1 + strh r1, [r0, #0x26] + bx lr + .balign 4 + + thumb_func_start FUN_02060064 +FUN_02060064: ; 0x02060064 + ldr r1, _0206006C ; =0x02E90EDD + mul r1, r0 + add r0, r1, #0x1 + bx lr + .balign 4 +_0206006C: .word 0x02E90EDD + + thumb_func_start FUN_02060070 +FUN_02060070: ; 0x02060070 + ldr r1, _02060078 ; =0x5D588B65 + mul r1, r0 + add r0, r1, #0x1 + bx lr + .balign 4 +_02060078: .word 0x5D588B65 + + thumb_func_start FUN_0206007C +FUN_0206007C: ; 0x0206007C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0202881C + bl FUN_020287A4 + bl FUN_02060070 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202A8D8 + add r1, r4, #0x0 + bl FUN_0202A5CC + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020600A0 +FUN_020600A0: ; 0x020600A0 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0202A8D8 + add r6, r0, #0x0 + bl FUN_0202A5D0 + bl FUN_02060070 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202A5CC + add r0, r4, #0x0 + bl FUN_02060064 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0202A8CC + mov r1, #0xa + add r2, sp, #0x0 + bl FUN_0202A2C4 + ldr r0, [sp, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_020600DC +FUN_020600DC: ; 0x020600DC + push {r3-r6, lr} + sub sp, #0x4 + add r6, r0, #0x0 + bl FUN_0202A8D8 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0202A8CC + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202A5D0 + bl FUN_02060064 + mov r1, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_0202A240 + add r1, r0, #0x0 + lsl r1, r1, #0x10 + add r0, r4, #0x0 + lsr r1, r1, #0x10 + mov r2, #0x0 + bl FUN_0202A538 + mov r1, #0x18 + add r5, r0, #0x0 + mul r5, r1 + mov r4, #0x0 + cmp r5, #0x0 + ble _0206012E + ldr r0, [sp, #0x0] +_02060122: + bl FUN_02060064 + add r4, r4, #0x1 + str r0, [sp, #0x0] + cmp r4, r5 + blt _02060122 +_0206012E: + add r0, r6, #0x0 + bl FUN_0202A8CC + mov r1, #0xa + add r2, sp, #0x0 + bl FUN_0202A2C4 + ldr r0, [sp, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02060144 +FUN_02060144: ; 0x02060144 + ldr r0, [r0, #0x1c] + ldr r1, [r0, #0x0] + ldr r0, _02060158 ; =0x000001ED + cmp r1, r0 + bne _02060152 + mov r0, #0x1 + bx lr +_02060152: + mov r0, #0x0 + bx lr + nop +_02060158: .word 0x000001ED + + thumb_func_start FUN_0206015C +FUN_0206015C: ; 0x0206015C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x10 + bl FUN_020169D8 + add r4, r0, #0x0 + mov r0, #0xb + bl FUN_02244DB0 + str r0, [r4, #0x0] + mov r0, #0xb + add r1, r5, #0x0 + bl FUN_02245114 + str r0, [r4, #0x4] + mov r0, #0x0 + strb r0, [r4, #0xc] + strb r0, [r4, #0xd] + ldr r0, [r5, #0x10] + ldr r1, _02060190 ; =FUN_02060194 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + nop +_02060190: .word FUN_02060194 + + thumb_func_start FUN_02060194 +FUN_02060194: ; 0x02060194 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldrb r0, [r4, #0xc] + cmp r0, #0x8 + bls _020601B0 + b _02060332 +_020601B0: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020601BC: ; jump table (using 16-bit offset) + .short _020601CE - _020601BC - 2; case 0 + .short _020601F2 - _020601BC - 2; case 1 + .short _020601FE - _020601BC - 2; case 2 + .short _02060226 - _020601BC - 2; case 3 + .short _02060232 - _020601BC - 2; case 4 + .short _020602A2 - _020601BC - 2; case 5 + .short _020602F0 - _020601BC - 2; case 6 + .short _020602FC - _020601BC - 2; case 7 + .short _02060312 - _020601BC - 2; case 8 +_020601CE: + add r0, r6, #0x0 + mov r1, #0x1 + bl FUN_0206367C + ldrb r0, [r4, #0xd] + ldr r1, [r4, #0x4] + bl FUN_02245198 + ldr r0, [r4, #0x4] + bl FUN_022451F0 + str r0, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_0204AFC8 + mov r0, #0x1 + strb r0, [r4, #0xc] + b _02060332 +_020601F2: + add r0, r5, #0x0 + bl FUN_0204AF3C + mov r0, #0x2 + strb r0, [r4, #0xc] + b _02060332 +_020601FE: + ldr r0, [r6, #0xc] + bl FUN_020462AC + ldrb r1, [r4, #0xd] + cmp r1, #0x0 + bne _02060210 + bl FUN_0205F1C4 + b _02060218 +_02060210: + cmp r1, #0x5 + bne _02060218 + bl FUN_0205F1D4 +_02060218: + ldr r1, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02049160 + mov r0, #0x3 + strb r0, [r4, #0xc] + b _02060332 +_02060226: + add r0, r5, #0x0 + bl FUN_0204AF84 + mov r0, #0x4 + strb r0, [r4, #0xc] + b _02060332 +_02060232: + ldr r0, [r6, #0x38] + bl FUN_020553A0 + ldrb r1, [r4, #0xd] + add r7, r0, #0x0 + add r1, r1, #0x1 + strb r1, [r4, #0xd] + ldrb r1, [r4, #0xd] + cmp r1, #0x5 + bhi _02060290 + add r0, r6, #0x0 + bl FUN_02245088 + add r6, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_0205889C + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + bl FUN_02244DC4 + ldr r0, [r4, #0x0] + bl FUN_02244EF8 + mov r0, #0x0 + strb r0, [r4, #0xe] + ldr r0, _02060338 ; =0x00000679 + bl FUN_020054C8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r3, _0206033C ; =0x0000FFFF + add r0, r5, #0x0 + mov r1, #0x3 + mov r2, #0x11 + bl FUN_0204C1B4 + mov r0, #0x5 + strb r0, [r4, #0xc] + b _02060332 +_02060290: + mov r1, #0x0 + bl FUN_0205889C + add r0, r5, #0x0 + bl FUN_0204B00C + mov r0, #0x8 + strb r0, [r4, #0xc] + b _02060332 +_020602A2: + ldrb r0, [r4, #0xe] + add r0, r0, #0x1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #0x3c + bhs _020602B8 + ldr r0, _02060340 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _02060332 +_020602B8: + ldrb r0, [r4, #0xd] + ldr r1, [r4, #0x4] + bl FUN_02245198 + ldr r0, [r4, #0x4] + bl FUN_022451F0 + str r0, [r4, #0x8] + ldr r0, _02060338 ; =0x00000679 + bl FUN_020054C8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r3, _0206033C ; =0x0000FFFF + add r0, r5, #0x0 + mov r1, #0x3 + mov r2, #0x10 + bl FUN_0204C1B4 + mov r0, #0x6 + strb r0, [r4, #0xc] + b _02060332 +_020602F0: + ldr r0, [r4, #0x0] + bl FUN_02244F18 + mov r0, #0x7 + strb r0, [r4, #0xc] + b _02060332 +_020602FC: + ldr r0, [r4, #0x0] + bl FUN_02244F24 + cmp r0, #0x0 + beq _02060332 + ldr r0, [r4, #0x0] + bl FUN_02244F2C + mov r0, #0x1 + strb r0, [r4, #0xc] + b _02060332 +_02060312: + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_0206367C + ldr r0, [r4, #0x4] + bl FUN_02245190 + ldr r0, [r4, #0x0] + bl FUN_02244DBC + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_02060332: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02060338: .word 0x00000679 +_0206033C: .word 0x0000FFFF +_02060340: .word 0x021C48B8 + + thumb_func_start FUN_02060344 +FUN_02060344: ; 0x02060344 + push {r3-r7, lr} + add r5, r0, #0x0 + str r1, [sp, #0x0] + cmp r1, #0x0 + ble _020603AE + bl FUN_02029ABC + bl FUN_02029ACC + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020238F4 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + mov r1, #0xa + add r6, r0, #0x0 + mov r5, #0x0 + mul r6, r1 +_0206036A: + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_020239D0 + cmp r0, #0x0 + beq _020603A4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02029AD0 + add r1, r0, #0x0 + cmp r1, #0x0 + ble _0206038C + cmp r1, #0xc8 + bge _0206038C + sub r1, r1, r6 + b _02060396 +_0206038C: + cmp r1, #0xc8 + blt _02060394 + bl ErrorHandling +_02060394: + mov r1, #0x0 +_02060396: + cmp r1, #0x0 + bge _0206039C + mov r1, #0x0 +_0206039C: + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02029AD8 +_020603A4: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x8 + blo _0206036A +_020603AE: + pop {r3-r7, pc} + + thumb_func_start FUN_020603B0 +FUN_020603B0: ; 0x020603B0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0202AA38 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02060588 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020603C8 +FUN_020603C8: ; 0x020603C8 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r5, #0x0 +_020603CE: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0202AA74 + cmp r0, #0x0 + beq _020603E2 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020603B0 +_020603E2: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x3 + blo _020603CE + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020603F0 +FUN_020603F0: ; 0x020603F0 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r4, #0x0 +_020603F6: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202AA74 + cmp r0, #0x0 + beq _02060430 + bl FUN_0201B9EC + lsl r0, r0, #0x4 + lsr r6, r0, #0x10 + cmp r6, #0x10 + blo _02060412 + bl ErrorHandling +_02060412: + cmp r6, #0x0 + bne _02060420 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020603B0 + b _02060430 +_02060420: + add r0, r5, #0x0 + bl FUN_0202AA38 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020605D8 +_02060430: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x3 + blo _020603F6 + pop {r4-r6, pc} + + thumb_func_start FUN_0206043C +FUN_0206043C: ; 0x0206043C + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x1d + blo _02060448 + bl ErrorHandling +_02060448: + ldr r0, _02060450 ; =0x020F7460 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02060450: .word 0x020F7460 + + thumb_func_start FUN_02060454 +FUN_02060454: ; 0x02060454 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r5, #0x0 +_0206045A: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0202AA74 + cmp r0, #0x0 + beq _0206046A + mov r0, #0x1 + pop {r3-r5, pc} +_0206046A: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x3 + blo _0206045A + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02060478 +FUN_02060478: ; 0x02060478 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02060454 + cmp r0, #0x0 + beq _0206048E + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0202AA20 +_0206048E: + pop {r3-r5, pc} + + thumb_func_start FUN_02060490 +FUN_02060490: ; 0x02060490 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r1, #0x0 + str r0, [sp, #0x10] + bl FUN_0202A9B0 + add r1, r5, #0x0 + str r0, [sp, #0x14] + bl FUN_0202AAA0 + add r4, r0, #0x0 + cmp r5, #0x0 + beq _020604B4 + cmp r5, #0x1 + beq _020604BA + cmp r5, #0x2 + beq _020604C2 + b _020604C8 +_020604B4: + ldr r7, _02060580 ; =0x000001E1 + mov r6, #0x32 + b _020604D0 +_020604BA: + mov r7, #0x7a + lsl r7, r7, #0x2 + mov r6, #0x32 + b _020604D0 +_020604C2: + ldr r7, _02060584 ; =0x000001EB + mov r6, #0x28 + b _020604D0 +_020604C8: + bl ErrorHandling + add sp, #0x20 + pop {r3-r7, pc} +_020604D0: + add r0, r4, #0x0 + mov r1, #0x4 + add r2, r7, #0x0 + bl FUN_0202AAFC + add r0, r4, #0x0 + mov r1, #0x6 + add r2, r6, #0x0 + bl FUN_0202AAFC + ldr r0, [sp, #0x10] + bl FUN_020238F4 + str r0, [sp, #0x18] + mov r0, #0x4 + bl FUN_020669C0 + str r0, [sp, #0x1c] + bl FUN_02066978 + ldr r0, [sp, #0x18] + bl FUN_020239C0 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + mov r1, #0x1 + str r1, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + add r1, r7, #0x0 + add r2, r6, #0x0 + mov r3, #0x20 + bl FUN_02066ACC + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_0202AAFC + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0x1 + bl FUN_0202AAFC + ldr r0, [sp, #0x1c] + mov r1, #0xae + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0202AAFC + mov r1, #0x0 + ldr r0, [sp, #0x1c] + add r2, r1, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_0202AAFC + ldr r0, [sp, #0x1c] + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x5 + bl FUN_0202AAFC + ldr r0, [sp, #0x1c] + bl FUN_02016A18 + ldr r0, [sp, #0x14] + bl FUN_0202AA38 + add r2, r0, #0x0 + ldr r0, [sp, #0x14] + add r1, r5, #0x0 + bl FUN_02060588 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_02060580: .word 0x000001E1 +_02060584: .word 0x000001EB + + thumb_func_start FUN_02060588 +FUN_02060588: ; 0x02060588 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r6, r2, #0x0 + bl FUN_0202AA40 + ldr r7, _020605D0 ; =0x020F7460 + lsl r0, r0, #0x2 + ldr r4, [r7, r0] +_0206059C: + bl FUN_0201B9EC + ldr r1, _020605D4 ; =0x000008D4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x1d + blo _020605B2 + bl ErrorHandling +_020605B2: + lsl r0, r5, #0x18 + lsr r2, r0, #0x18 + lsl r0, r2, #0x2 + ldr r3, [r7, r0] + cmp r3, r6 + beq _0206059C + cmp r3, r4 + beq _0206059C + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + bl FUN_02060688 + add sp, #0x8 + pop {r3-r7, pc} + nop +_020605D0: .word 0x020F7460 +_020605D4: .word 0x000008D4 + + thumb_func_start FUN_020605D8 +FUN_020605D8: ; 0x020605D8 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r7, r2, #0x0 + bl FUN_0202AA40 + mov r1, #0xc + ldr r2, _0206067C ; =0x020F74D4 + mul r1, r0 + ldrh r0, [r2, r1] + add r4, r2, r1 + cmp r0, #0x1 + bne _0206061E + ldrh r0, [r4, #0x2] + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + ldr r0, _02060680 ; =0x020F7460 + lsl r1, r2, #0x2 + ldr r3, [r0, r1] + cmp r3, r7 + bne _02060612 + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add r2, r7, #0x0 + bl FUN_02060588 + add sp, #0x8 + pop {r3-r7, pc} +_02060612: + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + bl FUN_02060688 + add sp, #0x8 + pop {r3-r7, pc} +_0206061E: + ldrh r5, [r4, #0x0] + cmp r5, #0x0 + bne _02060628 + bl ErrorHandling +_02060628: + cmp r5, #0x1 + bhi _02060630 + mov r6, #0x0 + b _02060658 +_02060630: + bl FUN_0201B9EC + add r6, r0, #0x0 + ldr r0, _02060684 ; =0x0000FFFF + add r1, r5, #0x0 + blx _s32_div_f + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r6, #0x0 + lsr r1, r1, #0x10 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, r5 + blo _02060658 + bl ErrorHandling +_02060658: + lsl r0, r6, #0x18 + lsr r0, r0, #0x17 + add r0, r4, r0 + ldrh r0, [r0, #0x2] + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + ldr r0, _02060680 ; =0x020F7460 + lsl r1, r2, #0x2 + ldr r3, [r0, r1] + cmp r3, r7 + beq _0206061E + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + bl FUN_02060688 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0206067C: .word 0x020F74D4 +_02060680: .word 0x020F7460 +_02060684: .word 0x0000FFFF + + thumb_func_start FUN_02060688 +FUN_02060688: ; 0x02060688 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0202AAA0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0202AA58 + ldr r0, [sp, #0x0] + mov r1, #0x1 + add r2, r7, #0x0 + bl FUN_0202AAFC + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020606B0 +FUN_020606B0: ; 0x020606B0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r0, r4, #0x0 + bl FUN_0204652C + add r2, r0, #0x0 + ldr r1, _020606CC ; =0x020F7630 + add r0, r4, #0x0 + add r2, #0xc + bl FUN_02046500 + pop {r4, pc} + .balign 4 +_020606CC: .word 0x020F7630 + + thumb_func_start FUN_020606D0 +FUN_020606D0: ; 0x020606D0 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x6 + bhi _0206078A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020606F6: ; jump table (using 16-bit offset) + .short _02060704 - _020606F6 - 2; case 0 + .short _0206072C - _020606F6 - 2; case 1 + .short _0206073A - _020606F6 - 2; case 2 + .short _02060748 - _020606F6 - 2; case 3 + .short _02060756 - _020606F6 - 2; case 4 + .short _02060764 - _020606F6 - 2; case 5 + .short _02060772 - _020606F6 - 2; case 6 +_02060704: + ldr r0, [r4, #0x24] + add r3, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x28] + add r3, #0xc + str r0, [sp, #0x4] + ldr r1, [r4, #0x0] + ldr r2, [r4, #0x8] + add r0, r6, #0x0 + bl FUN_0224891C + ldr r1, [r4, #0x0] + ldr r2, [r4, #0x8] + add r0, r6, #0x0 + bl FUN_022488FC + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206078A +_0206072C: + add r0, r5, #0x0 + bl FUN_0204AFC8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206078A +_0206073A: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206078A +_02060748: + add r0, r5, #0x0 + bl FUN_020606B0 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206078A +_02060756: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206078A +_02060764: + add r0, r5, #0x0 + bl FUN_0204B00C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206078A +_02060772: + ldr r0, [r4, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #0x28] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_0206078A: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02060790 +FUN_02060790: ; 0x02060790 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r0, r3, #0x0 + mov r1, #0x2c + add r6, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x2c + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x0 + str r0, [r4, #0x4] + str r5, [r4, #0x0] + ldr r0, [sp, #0x0] + str r6, [r4, #0x8] + bl FUN_020669C0 + str r0, [r4, #0x24] + ldr r0, [sp, #0x0] + bl FUN_020669C0 + str r0, [r4, #0x28] + ldr r1, _020607D0 ; =FUN_020606D0 + add r0, r7, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r7, pc} + .balign 4 +_020607D0: .word FUN_020606D0 + + thumb_func_start FUN_020607D4 +FUN_020607D4: ; 0x020607D4 + push {r3-r7, lr} + sub sp, #0x28 + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x80 + add r7, r2, #0x0 + str r3, [sp, #0xc] + bl FUN_020169D8 + add r4, r0, #0x0 + strb r6, [r4, #0x1] + strb r7, [r4, #0x4] + ldr r0, [sp, #0xc] + add r2, r4, #0x0 + str r0, [r4, #0x18] + ldr r0, [sp, #0x40] + add r2, #0x34 + str r0, [r4, #0x1c] + ldr r0, [sp, #0x44] + mov r7, #0x9 + str r0, [r4, #0x20] + ldr r3, [r5, #0x40] +_02060802: + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + sub r7, r7, #0x1 + bne _02060802 + mov r7, #0x0 + sub r0, r7, #0x1 + str r0, [r4, #0x10] + strb r7, [r4, #0x5] + mov r0, #0x40 + add r1, r7, #0x0 + add r2, r7, #0x0 + str r7, [r4, #0x8] + bl FUN_0200433C + cmp r6, #0x3 + bne _0206085C + mov r0, #0x22 + str r0, [sp, #0x14] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r1, r0, #0x0 + mov r0, #0x3 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + add r0, sp, #0x18 + mov r2, #0x1 + str r0, [sp, #0x8] + add r0, r6, #0x0 + sub r3, r2, #0x4 + bl FUN_0204A840 + mov r0, #0x19 + lsl r0, r0, #0x10 + str r0, [sp, #0x10] + mov r0, #0xe + lsl r0, r0, #0x10 + mov r7, #0x1 + str r0, [r4, #0x10] + b _02060892 +_0206085C: + cmp r6, #0x2 + bne _02060892 + ldr r0, _02060918 ; =0x000001C1 + str r0, [sp, #0x14] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r1, r0, #0x0 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r2, #0x3 + str r2, [sp, #0x4] + add r0, sp, #0x18 + str r0, [sp, #0x8] + add r0, r6, #0x0 + sub r2, r2, #0x5 + mov r3, #0x2 + bl FUN_0204A840 + mov r0, #0x3 + lsl r0, r0, #0x12 + mov r7, #0x1 + str r0, [sp, #0x10] +_02060892: + cmp r7, #0x0 + beq _02060906 + add r3, r4, #0x0 + ldr r1, [sp, #0x14] + add r0, r5, #0x0 + add r2, sp, #0x18 + add r3, #0x30 + bl FUN_0204A8C4 + cmp r0, #0x0 + beq _020608F8 + ldr r0, [sp, #0x10] + add r1, r4, #0x0 + str r0, [r4, #0xc] + mov r0, #0x0 + str r0, [r4, #0x14] + strb r0, [r4, #0x3] + mov r0, #0x1 + lsl r0, r0, #0xa + str r0, [r4, #0x7c] + ldr r0, [r5, #0x38] + add r1, #0x24 + bl FUN_02055350 + ldr r0, [r5, #0x20] + bl FUN_0201EC88 + add r0, r4, #0x0 + ldr r1, [r5, #0x20] + add r0, #0x24 + bl FUN_0201EC68 + mov r0, #0x0 + ldr r1, [r4, #0x10] + mvn r0, r0 + cmp r1, r0 + beq _020608EC + mov r0, #0x0 + strb r0, [r4, #0x2] + mov r0, #0x1 + strb r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02060BDC + b _020608F0 +_020608EC: + mov r0, #0x0 + strb r0, [r4, #0x0] +_020608F0: + ldr r0, _0206091C ; =0x000006DD + bl FUN_020054C8 + b _0206090A +_020608F8: + bl ErrorHandling + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x28 + pop {r3-r7, pc} +_02060906: + mov r0, #0x2 + strb r0, [r4, #0x0] +_0206090A: + ldr r0, [r5, #0x10] + ldr r1, _02060920 ; =FUN_020609A0 + add r2, r4, #0x0 + bl FUN_0204640C + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 +_02060918: .word 0x000001C1 +_0206091C: .word 0x000006DD +_02060920: .word FUN_020609A0 + + thumb_func_start FUN_02060924 +FUN_02060924: ; 0x02060924 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0xb + mov r1, #0x8 + add r6, r2, #0x0 + bl FUN_020169D8 + add r2, r0, #0x0 + str r6, [r2, #0x4] + strb r4, [r2, #0x0] + ldr r0, [r5, #0x10] + ldr r1, _02060944 ; =FUN_02060948 + bl FUN_0204640C + pop {r4-r6, pc} + .balign 4 +_02060944: .word FUN_02060948 + + thumb_func_start FUN_02060948 +FUN_02060948: ; 0x02060948 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046530 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02060972 + cmp r0, #0x1 + beq _0206097C + cmp r0, #0x2 + beq _0206098A + b _02060994 +_02060972: + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0203888C + b _02060994 +_0206097C: + add r0, r4, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _02060994 + mov r0, #0x0 + pop {r4-r6, pc} +_0206098A: + add r0, r6, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r4-r6, pc} +_02060994: + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020609A0 +FUN_020609A0: ; 0x020609A0 + push {r3-r6, lr} + sub sp, #0xc + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldrb r1, [r4, #0x0] + cmp r1, #0x7 + bhi _020609E4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020609C6: ; jump table (using 16-bit offset) + .short _020609D6 - _020609C6 - 2; case 0 + .short _020609EC - _020609C6 - 2; case 1 + .short _02060A4E - _020609C6 - 2; case 2 + .short _02060A74 - _020609C6 - 2; case 3 + .short _02060AB4 - _020609C6 - 2; case 4 + .short _02060AC6 - _020609C6 - 2; case 5 + .short _02060AE2 - _020609C6 - 2; case 6 + .short _02060AF6 - _020609C6 - 2; case 7 +_020609D6: + bl FUN_02060C80 + add r0, r4, #0x0 + bl FUN_02060B0C + cmp r0, #0x0 + bne _020609E6 +_020609E4: + b _02060B00 +_020609E6: + mov r0, #0x2 + strb r0, [r4, #0x0] + b _02060B00 +_020609EC: + bl FUN_02060C80 + add r0, r4, #0x0 + bl FUN_02060B0C + add r6, r0, #0x0 + ldrb r0, [r4, #0x2] + cmp r0, #0x0 + bne _02060A2C + add r0, r4, #0x0 + add r1, r4, #0x0 + add r0, #0x10 + add r1, #0x14 + add r2, r4, #0x2 + bl FUN_02060BC8 + cmp r0, #0x0 + beq _02060B00 + ldr r0, [r5, #0x50] + mov r1, #0x1 + mov r2, #0x0 + bl FUN_021DA4EC + ldr r0, [r5, #0x50] + mov r1, #0x2 + mov r2, #0x0 + bl FUN_021DA4EC + ldr r0, _02060B08 ; =0x000006DE + bl FUN_020054C8 + b _02060B00 +_02060A2C: + ldr r0, [r5, #0x50] + mov r1, #0x1 + bl FUN_021DA58C + cmp r0, #0x0 + beq _02060B00 + ldr r0, [r5, #0x50] + mov r1, #0x2 + bl FUN_021DA58C + cmp r0, #0x0 + beq _02060B00 + cmp r6, #0x0 + beq _02060B00 + mov r0, #0x2 + strb r0, [r4, #0x0] + b _02060B00 +_02060A4E: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0xb + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x0 + mov r1, #0x6 + bl FUN_020053CC + mov r0, #0x3 + strb r0, [r4, #0x0] + b _02060B00 +_02060A74: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02060A84 + bl FUN_02005404 + cmp r0, #0x0 + beq _02060A8A +_02060A84: + add sp, #0xc + mov r0, #0x0 + pop {r3-r6, pc} +_02060A8A: + mov r0, #0x0 + ldr r1, [r4, #0x10] + mvn r0, r0 + cmp r1, r0 + beq _02060AA8 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x1 + bl FUN_021DA54C + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x2 + bl FUN_021DA54C +_02060AA8: + add r0, r6, #0x0 + bl FUN_0204AF3C + mov r0, #0x4 + strb r0, [r4, #0x0] + b _02060B00 +_02060AB4: + ldrb r1, [r4, #0x1] + add r2, r4, #0x0 + add r0, r5, #0x0 + add r2, #0x34 + bl FUN_02060924 + mov r0, #0x5 + strb r0, [r4, #0x0] + b _02060B00 +_02060AC6: + ldr r0, [r4, #0x20] + mov r2, #0x0 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + mvn r2, r2 + str r0, [sp, #0x4] + ldr r1, [r4, #0x18] + ldr r3, [r4, #0x1c] + add r0, r6, #0x0 + bl FUN_020491A8 + mov r0, #0x6 + strb r0, [r4, #0x0] + b _02060B00 +_02060AE2: + ldr r1, [r4, #0x18] + add r0, r5, #0x0 + bl FUN_0204AD8C + add r0, r6, #0x0 + bl FUN_0204B0E8 + mov r0, #0x7 + strb r0, [r4, #0x0] + b _02060B00 +_02060AF6: + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r3-r6, pc} +_02060B00: + mov r0, #0x0 + add sp, #0xc + pop {r3-r6, pc} + nop +_02060B08: .word 0x000006DE + + thumb_func_start FUN_02060B0C +FUN_02060B0C: ; 0x02060B0C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0x30] + add r0, sp, #0x0 + bl FUN_021E7EA0 + ldrb r0, [r4, #0x1] + cmp r0, #0x3 + bhi _02060B7C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02060B2C: ; jump table (using 16-bit offset) + .short _02060B34 - _02060B2C - 2; case 0 + .short _02060B6A - _02060B2C - 2; case 1 + .short _02060B58 - _02060B2C - 2; case 2 + .short _02060B46 - _02060B2C - 2; case 3 +_02060B34: + ldr r1, [sp, #0x8] + ldr r0, [r4, #0x7c] + add r0, r1, r0 + str r0, [sp, #0x8] + ldr r1, [r4, #0x2c] + ldr r0, [r4, #0x7c] + add r0, r1, r0 + str r0, [r4, #0x2c] + b _02060B86 +_02060B46: + ldr r1, [sp, #0x8] + ldr r0, [r4, #0x7c] + sub r0, r1, r0 + str r0, [sp, #0x8] + ldr r1, [r4, #0x2c] + ldr r0, [r4, #0x7c] + sub r0, r1, r0 + str r0, [r4, #0x2c] + b _02060B86 +_02060B58: + ldr r1, [sp, #0x0] + ldr r0, [r4, #0x7c] + add r0, r1, r0 + str r0, [sp, #0x0] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x7c] + add r0, r1, r0 + str r0, [r4, #0x24] + b _02060B86 +_02060B6A: + ldr r1, [sp, #0x0] + ldr r0, [r4, #0x7c] + sub r0, r1, r0 + str r0, [sp, #0x0] + ldr r1, [r4, #0x24] + ldr r0, [r4, #0x7c] + sub r0, r1, r0 + str r0, [r4, #0x24] + b _02060B86 +_02060B7C: + bl ErrorHandling + add sp, #0xc + mov r0, #0x1 + pop {r3-r4, pc} +_02060B86: + mov r0, #0x1 + ldr r1, [r4, #0x7c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _02060BA6 + ldrb r1, [r4, #0x3] + add r1, r1, #0x1 + strb r1, [r4, #0x3] + ldrb r1, [r4, #0x3] + cmp r1, #0x18 + blo _02060BA6 + ldr r1, [r4, #0x7c] + add r0, r1, r0 + str r0, [r4, #0x7c] + mov r0, #0x0 + strb r0, [r4, #0x3] +_02060BA6: + ldr r0, [r4, #0x30] + add r1, sp, #0x0 + bl FUN_021E7EB0 + ldr r1, [r4, #0x14] + ldr r0, [r4, #0x7c] + add r1, r1, r0 + str r1, [r4, #0x14] + ldr r0, [r4, #0xc] + cmp r0, r1 + bgt _02060BC2 + add sp, #0xc + mov r0, #0x1 + pop {r3-r4, pc} +_02060BC2: + mov r0, #0x0 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_02060BC8 +FUN_02060BC8: ; 0x02060BC8 + ldr r3, [r0, #0x0] + ldr r0, [r1, #0x0] + cmp r3, r0 + bgt _02060BD6 + mov r0, #0x1 + strb r0, [r2, #0x0] + bx lr +_02060BD6: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02060BDC +FUN_02060BDC: ; 0x02060BDC + push {r4-r7, lr} + sub sp, #0x34 + add r5, r0, #0x0 + ldr r0, _02060C7C ; =0x020F7640 + mov r6, #0x0 + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x4] + str r2, [sp, #0x2c] + str r1, [sp, #0x30] + ldr r1, [r0, #0x8] + ldr r0, [r0, #0xc] + str r1, [sp, #0x24] + str r0, [sp, #0x28] +_02060BF6: + lsl r7, r6, #0x2 + add r0, sp, #0x2c + ldr r4, [r0, r7] + mov r2, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r3, r2, #0x0 + bl FUN_0204A9F0 + cmp r0, #0x0 + beq _02060C6A + ldr r1, [r5, #0x2c] + add r0, r4, #0x0 + bl FUN_021F4BD0 + ldr r0, [r0, #0x0] + blx FUN_020BC13C + ldrh r1, [r0, #0xe] + add r2, sp, #0x20 + mov r3, #0x0 + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r0, r0, r1 + str r0, [sp, #0x18] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0204A9F0 + cmp r0, #0x0 + bne _02060C38 + bl ErrorHandling +_02060C38: + ldr r0, [sp, #0x20] + bl FUN_021E7EC8 + str r0, [sp, #0x1c] + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + ldr r1, [sp, #0x1c] + add r2, sp, #0x24 + str r1, [sp, #0x0] + ldr r1, [sp, #0x18] + ldr r2, [r2, r7] + str r1, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + add r3, r4, #0x0 + bl FUN_021DA464 + b _02060C6E +_02060C6A: + bl ErrorHandling +_02060C6E: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x2 + blo _02060BF6 + add sp, #0x34 + pop {r4-r7, pc} + .balign 4 +_02060C7C: .word 0x020F7640 + + thumb_func_start FUN_02060C80 +FUN_02060C80: ; 0x02060C80 + push {r3, lr} + ldrb r1, [r0, #0x1] + cmp r1, #0x2 + beq _02060CA8 + cmp r1, #0x3 + bne _02060CC4 + mov r2, #0x2 + ldr r1, [r0, #0x8] + lsl r2, r2, #0x10 + cmp r1, r2 + bge _02060CC8 + ldr r3, [r0, #0x24] + lsr r1, r2, #0x5 + add r1, r3, r1 + str r1, [r0, #0x24] + ldr r3, [r0, #0x8] + lsr r1, r2, #0x5 + add r1, r3, r1 + str r1, [r0, #0x8] + pop {r3, pc} +_02060CA8: + mov r1, #0x3 + ldr r2, [r0, #0x8] + lsl r1, r1, #0x10 + cmp r2, r1 + bge _02060CC8 + mov r1, #0x2 + ldr r2, [r0, #0x2c] + lsl r1, r1, #0xa + add r2, r2, r1 + str r2, [r0, #0x2c] + ldr r2, [r0, #0x8] + add r1, r2, r1 + str r1, [r0, #0x8] + pop {r3, pc} +_02060CC4: + bl ErrorHandling +_02060CC8: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02060CCC +FUN_02060CCC: ; 0x02060CCC + push {r4-r6, lr} + add r5, r0, #0x0 + cmp r5, #0x0 + ble _02060CD8 + cmp r5, #0x5 + blt _02060CDC +_02060CD8: + bl ErrorHandling +_02060CDC: + sub r1, r5, #0x1 + ldr r6, _02060CF4 ; =0x020F767C + mov r0, #0xc + add r4, r1, #0x0 + mul r4, r0 + ldr r0, [r6, r4] + cmp r0, r5 + beq _02060CF0 + bl ErrorHandling +_02060CF0: + add r0, r6, r4 + pop {r4-r6, pc} + .balign 4 +_02060CF4: .word 0x020F767C + + thumb_func_start FUN_02060CF8 +FUN_02060CF8: ; 0x02060CF8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B6C + add r4, r0, #0x0 + cmp r4, #0x0 + ble _02060D0E + ldrh r0, [r5, #0x6] + cmp r4, r0 + blt _02060D12 +_02060D0E: + bl ErrorHandling +_02060D12: + sub r0, r4, #0x1 + ldr r1, [r5, #0x8] + lsl r0, r0, #0x3 + add r0, r1, r0 + pop {r3-r5, pc} + + thumb_func_start FUN_02060D1C +FUN_02060D1C: ; 0x02060D1C + push {r3-r7, lr} + add r6, r1, #0x0 + add r7, r2, #0x0 + add r5, r3, #0x0 + bl FUN_02060CCC + ldrh r2, [r0, #0x4] + ldr r1, [sp, #0x18] + strh r2, [r1, #0x0] + add r1, r5, #0x0 + bl FUN_02060CF8 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + bne _02060D3E + bl ErrorHandling +_02060D3E: + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, r5, #0x0 + blx r4 + pop {r3-r7, pc} + + thumb_func_start FUN_02060D48 +FUN_02060D48: ; 0x02060D48 + push {r3-r5, lr} + add r4, r2, #0x0 + add r5, r1, #0x0 + bl FUN_02060CCC + add r1, r4, #0x0 + bl FUN_02060CF8 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _02060D62 + mov r0, #0x0 + pop {r3-r5, pc} +_02060D62: + ldr r2, [r0, #0x4] + cmp r2, #0x0 + bne _02060D6C + mov r0, #0x1 + pop {r3-r5, pc} +_02060D6C: + add r0, r5, #0x0 + add r1, r4, #0x0 + blx r2 + pop {r3-r5, pc} + + thumb_func_start FUN_02060D74 +FUN_02060D74: ; 0x02060D74 + push {r4-r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_02022504 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_0202B4B0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02060D90 +FUN_02060D90: ; 0x02060D90 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + mov r0, #0x40 + mov r1, #0x4 + str r3, [sp, #0x8] + bl FUN_020219F4 + add r1, r7, #0x0 + add r4, r0, #0x0 + bl FUN_02021E28 + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x8] + str r0, [sp, #0x0] + ldr r0, [sp, #0x20] + add r1, r6, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02060DCC +FUN_02060DCC: ; 0x02060DCC + push {r4-r7, lr} + sub sp, #0xc + add r6, r2, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + add r4, r1, #0x0 + bl FUN_02248B5C + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02248B54 + str r0, [sp, #0x8] + add r0, r6, #0x0 + bl FUN_02248B58 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r3, [sp, #0x8] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_02060D90 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02060E04 +FUN_02060E04: ; 0x02060E04 + push {r4-r6, lr} + add r3, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x40 + add r1, r3, #0x0 + add r6, r2, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x76 + add r2, r4, #0x0 + bl FUN_020671BC + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0xb + bl FUN_02021EF0 + add r0, r4, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02060E34 +FUN_02060E34: ; 0x02060E34 + push {r3-r7, lr} + add r4, r1, #0x0 + add r6, r2, #0x0 + add r5, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + add r7, r3, #0x0 + bl FUN_020671BC + strh r0, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r6, #0x0] + add r0, r5, #0x0 + mov r1, #0xc + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r7, #0x0] + add r0, r5, #0x0 + mov r1, #0x79 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x18] + strb r0, [r1, #0x0] + pop {r3-r7, pc} + + thumb_func_start FUN_02060E70 +FUN_02060E70: ; 0x02060E70 + push {r4-r6, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x4 + add r2, sp, #0x8 + add r6, r3, #0x0 + bl FUN_0200A99C + add r0, sp, #0x20 + ldrb r0, [r0, #0x10] + add r1, r4, #0x0 + add r2, sp, #0x8 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r3, r6, #0x0 + bl FUN_02060D90 + add sp, #0x20 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02060EA0 +FUN_02060EA0: ; 0x02060EA0 + push {r3-r5, lr} + sub sp, #0x20 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x4 + add r2, sp, #0x8 + bl FUN_0200A99C + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, sp, #0x8 + mov r3, #0x0 + bl FUN_02060D90 + add sp, #0x20 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02060ECC +FUN_02060ECC: ; 0x02060ECC + push {r3-r7, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + add r4, r2, #0x0 + add r0, r5, #0x0 + mov r1, #0x4d + mov r2, #0x0 + add r7, r3, #0x0 + bl FUN_020671BC + strb r0, [r4, #0x0] + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + beq _02060F0C + mov r0, #0x40 + add r1, r6, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x76 + add r2, r4, #0x0 + bl FUN_020671BC + add r0, r4, #0x0 + add r1, r7, #0x0 + mov r2, #0xb + bl FUN_02021EF0 + add r0, r4, #0x0 + bl FUN_02021A20 +_02060F0C: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02060F10 +FUN_02060F10: ; 0x02060F10 + push {r3-r7, lr} + add r7, r1, #0x0 + add r5, r2, #0x0 + add r6, r3, #0x0 + bl FUN_0202B838 + add r4, r0, #0x0 + mov r0, #0x1 + strb r0, [r4, #0x0] + add r0, r4, #0x6 + str r0, [sp, #0x0] + add r0, r7, #0x0 + add r1, r4, #0x2 + add r2, r4, #0x4 + add r3, r4, #0x5 + bl FUN_02060E34 + strb r5, [r4, #0x8] + ldr r0, [sp, #0x18] + strb r6, [r4, #0x7] + strb r0, [r4, #0x9] + pop {r3-r7, pc} + + thumb_func_start FUN_02060F3C +FUN_02060F3C: ; 0x02060F3C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0202B844 + add r4, r0, #0x0 + mov r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x0 + strb r0, [r4, #0x1f] + add r0, r5, #0x0 + bl FUN_02068854 + strb r0, [r4, #0x1e] + add r0, r4, #0x6 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x2 + add r2, r4, #0x4 + add r3, r4, #0x5 + bl FUN_02060E34 + add r0, r5, #0x0 + mov r1, #0x4d + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r4, #0x7] + add r2, r4, #0x7 + add r4, #0x8 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r3, r4, #0x0 + bl FUN_02060ECC + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_02060F88 +FUN_02060F88: ; 0x02060F88 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0202B844 + mov r1, #0x2 + strb r1, [r0, #0x1f] + add r0, #0x20 + strb r4, [r0, #0x0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02060F9C +FUN_02060F9C: ; 0x02060F9C + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0202B844 + mov r1, #0x1 + strb r1, [r0, #0x1f] + strh r4, [r0, #0x22] + pop {r4, pc} + + thumb_func_start FUN_02060FAC +FUN_02060FAC: ; 0x02060FAC + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0202B850 + mov r1, #0x1 + strb r1, [r0, #0x0] + strb r4, [r0, #0x1] + pop {r4, pc} + + thumb_func_start FUN_02060FBC +FUN_02060FBC: ; 0x02060FBC + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0202B85C + mov r1, #0x1 + strb r1, [r0, #0x0] + strb r5, [r0, #0x1] + strh r4, [r0, #0x2] + pop {r3-r5, pc} + + thumb_func_start FUN_02060FD0 +FUN_02060FD0: ; 0x02060FD0 + push {r3, lr} + bl FUN_0202B868 + mov r1, #0x1 + strb r1, [r0, #0x0] + mov r1, #0x0 + strb r1, [r0, #0x7] + pop {r3, pc} + + thumb_func_start FUN_02060FE0 +FUN_02060FE0: ; 0x02060FE0 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_0202B868 + add r4, r0, #0x0 + ldrb r0, [r4, #0x7] + cmp r0, #0x0 + bne _02061000 + add r0, r4, #0x6 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x2 + add r2, r4, #0x4 + add r3, r4, #0x5 + bl FUN_02060E34 +_02061000: + ldrb r0, [r4, #0x7] + add r0, r0, #0x1 + strb r0, [r4, #0x7] + pop {r3-r5, pc} + + thumb_func_start FUN_02061008 +FUN_02061008: ; 0x02061008 + push {r4, lr} + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x24 + blx MIi_CpuClearFast + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02061020 +FUN_02061020: ; 0x02061020 + ldr r3, _02061024 ; =FUN_02016A18 + bx r3 + .balign 4 +_02061024: .word FUN_02016A18 + + thumb_func_start FUN_02061028 +FUN_02061028: ; 0x02061028 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x0 + add r1, r5, #0x0 + mov r2, #0x24 + add r7, r3, #0x0 + blx MIi_CpuClear32 + str r6, [r5, #0x0] + add r0, r5, #0x0 + add r2, r5, #0x0 + add r3, r5, #0x0 + strh r7, [r5, #0x4] + add r0, #0xa + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r5, #0x6 + add r2, #0x8 + add r3, #0x9 + bl FUN_02060E34 + add r0, r4, #0x0 + mov r1, #0x9a + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x22] + ldrh r0, [r5, #0x22] + cmp r0, #0x0 + bne _0206106C + bl ErrorHandling +_0206106C: + add r2, r5, #0x0 + add r5, #0xc + ldr r0, [sp, #0x18] + add r1, r4, #0x0 + add r2, #0xb + add r3, r5, #0x0 + bl FUN_02060ECC + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02061080 +FUN_02061080: ; 0x02061080 + push {r3-r7, lr} + sub sp, #0x28 + add r7, sp, #0x0 + add r5, r2, #0x0 + add r6, r0, #0x0 + add r3, r1, #0x0 + add r4, r7, #0x0 + mov r2, #0x4 +_02061090: + ldmia r3!, {r0-r1} + stmia r4!, {r0-r1} + sub r2, r2, #0x1 + bne _02061090 + ldr r0, [r3, #0x0] + str r0, [r4, #0x0] + str r5, [sp, #0x0] + add r0, sp, #0x0 + ldrh r0, [r0, #0x4] + cmp r0, #0x0 + beq _020610F0 + ldrh r1, [r7, #0x4] + ldr r0, _020610F4 ; =0x000003E7 + cmp r1, r0 + bls _020610B0 + strh r0, [r7, #0x4] +_020610B0: + cmp r5, #0x6 + bhi _020610F0 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020610C0: ; jump table (using 16-bit offset) + .short _020610F0 - _020610C0 - 2; case 0 + .short _020610DE - _020610C0 - 2; case 1 + .short _020610F0 - _020610C0 - 2; case 2 + .short _020610F0 - _020610C0 - 2; case 3 + .short _020610CE - _020610C0 - 2; case 4 + .short _020610DE - _020610C0 - 2; case 5 + .short _020610DE - _020610C0 - 2; case 6 +_020610CE: + add r0, r6, #0x0 + mov r1, #0x2 + mov r2, #0x1 + add r3, r7, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r7, pc} +_020610DE: + ldrh r0, [r7, #0x4] + cmp r0, #0x2 + bls _020610F0 + mov r1, #0x2 + add r0, r6, #0x0 + add r2, r1, #0x0 + add r3, r7, #0x0 + bl FUN_02060D74 +_020610F0: + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 +_020610F4: .word 0x000003E7 + + thumb_func_start FUN_020610F8 +FUN_020610F8: ; 0x020610F8 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldrb r0, [r4, #0xb] + cmp r0, #0x0 + beq _02061166 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x9] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0xa] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x6] + ldrb r3, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrh r2, [r4, #0x22] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200AE38 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x3 + ldrh r2, [r4, #0x4] + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_0200AD38 + ldrb r0, [r4, #0x9] + add r2, r4, #0x0 + mov r1, #0x4 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrb r3, [r4, #0x8] + add r0, r5, #0x0 + add r2, #0xc + bl FUN_02060D90 + add sp, #0x8 + mov r0, #0x0 + pop {r4-r6, pc} +_02061166: + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x9] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0xa] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x6] + ldrb r3, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrh r2, [r4, #0x22] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200AE38 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x3 + ldrh r2, [r4, #0x4] + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_0200AD38 + mov r0, #0x1 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_020611A8 +FUN_020611A8: ; 0x020611A8 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + mov r0, #0x0 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + ldrh r2, [r4, #0x4] + add r0, r5, #0x0 + mov r3, #0x3 + bl FUN_0200AD38 + ldr r0, [r4, #0x0] + cmp r0, #0x1 + bne _020611E0 + add sp, #0x8 + mov r0, #0x2 + pop {r4-r6, pc} +_020611E0: + mov r0, #0x3 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020611E8 +FUN_020611E8: ; 0x020611E8 + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02248B60 + add r1, r0, #0x0 + ldrh r1, [r1, #0x6] + add r0, r4, #0x0 + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061208 +FUN_02061208: ; 0x02061208 + push {r4-r7, lr} + sub sp, #0x2c + add r5, r1, #0x0 + add r7, r0, #0x0 + add r4, r2, #0x0 + add r6, sp, #0x4 + cmp r5, #0x0 + beq _02061228 + add r0, r6, #0x4 + str r0, [sp, #0x0] + add r0, r3, #0x0 + add r1, r6, #0x0 + add r2, r6, #0x2 + add r3, r6, #0x3 + bl FUN_02060E34 +_02061228: + strh r4, [r6, #0x6] + add r0, r7, #0x0 + mov r1, #0x2 + mov r2, #0x3 + add r3, r6, #0x0 + str r5, [r6, #0x8] + bl FUN_02060D74 + add sp, #0x2c + pop {r4-r7, pc} + + thumb_func_start FUN_0206123C +FUN_0206123C: ; 0x0206123C + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _02061280 + ldrh r2, [r4, #0x6] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200AE38 + ldrb r0, [r4, #0x3] + mov r1, #0x2 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + add sp, #0x8 + mov r0, #0x4 + pop {r4-r6, pc} +_02061280: + mov r0, #0x5 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061288 +FUN_02061288: ; 0x02061288 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + bne _0206129E + mov r0, #0x1 + pop {r3-r5, pc} +_0206129E: + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + + thumb_func_start FUN_020612AC +FUN_020612AC: ; 0x020612AC + push {r4-r6, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_0202881C + add r6, r0, #0x0 + mov r0, #0x0 + add r1, sp, #0x0 + mov r2, #0x28 + blx MIi_CpuClearFast + add r0, r6, #0x0 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_020287A8 + add r1, r0, #0x0 + add r0, sp, #0x0 + mov r2, #0xb + bl StringCopyN + add r0, r5, #0x0 + mov r1, #0x2 + add r2, r4, #0x0 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020612EC +FUN_020612EC: ; 0x020612EC + ldr r3, _020612F4 ; =FUN_020612AC + mov r1, #0x14 + bx r3 + nop +_020612F4: .word FUN_020612AC + + thumb_func_start FUN_020612F8 +FUN_020612F8: ; 0x020612F8 + ldr r3, _02061300 ; =FUN_020612AC + mov r1, #0x4 + bx r3 + nop +_02061300: .word FUN_020612AC + + thumb_func_start FUN_02061304 +FUN_02061304: ; 0x02061304 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r2, #0x0 + add r0, r4, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02248B58 + str r0, [sp, #0x0] + mov r1, #0x1 + add r0, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + str r1, [sp, #0x4] + bl FUN_02060D90 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_02060DCC + mov r0, #0x6 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206133C +FUN_0206133C: ; 0x0206133C + push {r4-r6, lr} + sub sp, #0x8 + add r4, r2, #0x0 + add r0, r4, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02248B58 + str r0, [sp, #0x0] + mov r1, #0x1 + add r0, r5, #0x0 + add r2, r6, #0x0 + mov r3, #0x0 + str r1, [sp, #0x4] + bl FUN_02060D90 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_02060DCC + mov r0, #0x20 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061374 +FUN_02061374: ; 0x02061374 + push {r4, lr} + sub sp, #0x28 + add r4, r0, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + add r1, sp, #0x0 + strh r0, [r1, #0x2] + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x6 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206139C +FUN_0206139C: ; 0x0206139C + push {r4-r6, lr} + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200AFF4 + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200AE38 + mov r0, #0xa + pop {r4-r6, pc} + + thumb_func_start FUN_020613CC +FUN_020613CC: ; 0x020613CC + push {r3-r4, lr} + sub sp, #0x2c + add r4, r0, #0x0 + add r0, sp, #0x8 + add r2, sp, #0x4 + add r3, sp, #0x4 + str r0, [sp, #0x0] + add r0, r1, #0x0 + add r1, sp, #0x4 + add r2, #0x2 + add r3, #0x3 + bl FUN_02060E34 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + add r1, sp, #0x4 + strh r0, [r1, #0x6] + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x8 + add r3, sp, #0x4 + bl FUN_02060D74 + add sp, #0x2c + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02061404 +FUN_02061404: ; 0x02061404 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldrh r2, [r4, #0x6] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200AFF4 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x2 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + mov r0, #0xc + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061444 +FUN_02061444: ; 0x02061444 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061460 +FUN_02061460: ; 0x02061460 + push {r4-r5, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r4, r1, #0x0 + add r0, sp, #0x8 + add r2, sp, #0x4 + add r3, sp, #0x4 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, sp, #0x4 + add r2, #0x2 + add r3, #0x3 + bl FUN_02060E34 + add r1, sp, #0x8 + mov r0, #0x4 + add r1, #0x2 + add r2, r4, #0x0 + bl FUN_02060E04 + add r0, r5, #0x0 + mov r1, #0x2 + mov r2, #0xa + add r3, sp, #0x4 + bl FUN_02060D74 + add sp, #0x2c + pop {r4-r5, pc} + + thumb_func_start FUN_02061498 +FUN_02061498: ; 0x02061498 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrb r0, [r4, #0x3] + mov r1, #0x2 + add r2, r4, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060D90 + bl FUN_0201B9EC + ldr r1, _020614F8 ; =0x00003334 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x5 + blo _020614F0 + bl ErrorHandling +_020614F0: + add r4, #0x11 + add r0, r4, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_020614F8: .word 0x00003334 + + thumb_func_start FUN_020614FC +FUN_020614FC: ; 0x020614FC + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02248B60 + add r1, r0, #0x0 + ldrh r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0206151C +FUN_0206151C: ; 0x0206151C + push {r3, lr} + sub sp, #0x28 + add r3, sp, #0x0 + strh r1, [r3, #0x0] + strh r2, [r3, #0x2] + mov r1, #0x2 + mov r2, #0xd + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3, pc} + + thumb_func_start FUN_02061534 +FUN_02061534: ; 0x02061534 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200B164 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + mov r1, #0x2 + mov r3, #0x3 + bl FUN_0200AD38 + mov r0, #0x18 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061574 +FUN_02061574: ; 0x02061574 + push {r3-r5, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, sp, #0x0 + bl FUN_02022504 + bl FUN_0202B868 + ldrb r1, [r0, #0x7] + cmp r1, #0x0 + beq _020615AC + ldrh r1, [r0, #0x2] + mov r2, #0xf + add r3, r4, #0x0 + strh r1, [r4, #0x0] + ldrb r1, [r0, #0x4] + strb r1, [r4, #0x2] + ldrb r1, [r0, #0x5] + strb r1, [r4, #0x3] + ldrb r1, [r0, #0x6] + strb r1, [r4, #0x4] + ldrb r0, [r0, #0x7] + mov r1, #0x2 + strb r0, [r4, #0x5] + add r0, r5, #0x0 + bl FUN_02060D74 +_020615AC: + add sp, #0x28 + pop {r3-r5, pc} + + thumb_func_start FUN_020615B0 +FUN_020615B0: ; 0x020615B0 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x2 + ldrb r2, [r4, #0x5] + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_0200AD38 + mov r0, #0x1a + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_020615F8 +FUN_020615F8: ; 0x020615F8 + push {r3-r5, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02024DA0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02248B60 + add r1, r0, #0x0 + ldrh r1, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061618 +FUN_02061618: ; 0x02061618 + push {r4-r5, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r4, r2, #0x0 + add r0, sp, #0x8 + add r2, sp, #0x4 + add r3, sp, #0x4 + str r0, [sp, #0x0] + add r0, r1, #0x0 + add r1, sp, #0x4 + add r2, #0x2 + add r3, #0x3 + bl FUN_02060E34 + add r0, sp, #0x4 + strh r4, [r0, #0x6] + add r0, r5, #0x0 + mov r1, #0x2 + mov r2, #0x11 + add r3, sp, #0x4 + bl FUN_0202B4B0 + add sp, #0x2c + pop {r4-r5, pc} + + thumb_func_start FUN_02061648 +FUN_02061648: ; 0x02061648 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrh r2, [r4, #0x6] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200AE38 + mov r0, #0x1d + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061688 +FUN_02061688: ; 0x02061688 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020616A4 +FUN_020616A4: ; 0x020616A4 + push {r3-r5, lr} + sub sp, #0x28 + add r4, sp, #0x0 + strh r1, [r4, #0x0] + strb r2, [r4, #0x2] + add r5, sp, #0x0 + strh r3, [r4, #0x4] + cmp r2, #0x5 + bne _020616C4 + mov r1, #0x3 + mov r2, #0x6 + add r3, r5, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r5, pc} +_020616C4: + cmp r2, #0x4 + bne _020616D6 + mov r1, #0x2 + mov r2, #0x12 + add r3, r5, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r5, pc} +_020616D6: + cmp r2, #0x0 + bne _020616E4 + mov r1, #0x2 + mov r2, #0x13 + add r3, r5, #0x0 + bl FUN_02060D74 +_020616E4: + add sp, #0x28 + pop {r3-r5, pc} + + thumb_func_start FUN_020616E8 +FUN_020616E8: ; 0x020616E8 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200AE38 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x2 + ldrh r2, [r4, #0x4] + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_0200AD38 + mov r0, #0x1e + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061728 +FUN_02061728: ; 0x02061728 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200AE38 + mov r0, #0x1f + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061750 +FUN_02061750: ; 0x02061750 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r0, [r4, #0x0] + mov r1, #0x4 + sub r0, #0x95 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_020852E8 + add r4, r0, #0x0 + mov r1, #0x1 + str r1, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r2, r4, #0x0 + mov r3, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r0, #0x5 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02061798 +FUN_02061798: ; 0x02061798 + push {r4-r5, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, sp, #0x4 + add r4, r1, #0x0 + strb r2, [r0, #0x6] + bl FUN_0201BA60 + mov r1, #0x3 + blx _u32_div_f + add r0, sp, #0x4 + strb r1, [r0, #0x5] + add r0, sp, #0x8 + add r2, sp, #0x4 + add r3, sp, #0x4 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, sp, #0x4 + add r2, #0x2 + add r3, #0x3 + bl FUN_02060E34 + add r0, r5, #0x0 + mov r1, #0x2 + mov r2, #0x15 + add r3, sp, #0x4 + bl FUN_0202B4B0 + add sp, #0x2c + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_020617D8 +FUN_020617D8: ; 0x020617D8 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r2, [r4, #0x6] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200B534 + ldrb r0, [r4, #0x3] + mov r1, #0x2 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + bl FUN_0201B9EC + ldr r1, _02061830 ; =0x00005556 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x3 + blo _02061826 + bl ErrorHandling +_02061826: + add r4, #0x21 + add r0, r4, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + nop +_02061830: .word 0x00005556 + + thumb_func_start FUN_02061834 +FUN_02061834: ; 0x02061834 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061850 +FUN_02061850: ; 0x02061850 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02023924 + str r0, [r5, #0x0] + add r0, r4, #0x0 + add r1, r5, #0x4 + bl FUN_0202393C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061868 +FUN_02061868: ; 0x02061868 + push {r4-r6, lr} + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + bl FUN_02023924 + ldr r1, [r4, #0x0] + cmp r1, r0 + beq _02061884 + bl ErrorHandling +_02061884: + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r4, #0x4 + bl FUN_0200ABC0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206189C +FUN_0206189C: ; 0x0206189C + push {r4, lr} + sub sp, #0x28 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_02061850 + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x16 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r4, pc} + + thumb_func_start FUN_020618B8 +FUN_020618B8: ; 0x020618B8 + push {r4, lr} + sub sp, #0x28 + add r4, r0, #0x0 + add r0, sp, #0x0 + bl FUN_02061850 + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x17 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r4, pc} + + thumb_func_start FUN_020618D4 +FUN_020618D4: ; 0x020618D4 + push {r3, lr} + bl FUN_02061868 + mov r0, #0x24 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020618E0 +FUN_020618E0: ; 0x020618E0 + push {r3, lr} + bl FUN_02061868 + mov r0, #0x25 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020618EC +FUN_020618EC: ; 0x020618EC + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0206F158 + mov r1, #0x6b + lsl r1, r1, #0x2 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206EE50 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02061904 +FUN_02061904: ; 0x02061904 + push {r3-r6, lr} + sub sp, #0x2c + add r6, r0, #0x0 + add r0, sp, #0x8 + add r5, r1, #0x0 + add r4, r3, #0x0 + add r0, #0x2 + add r1, sp, #0x4 + add r3, sp, #0x8 + str r0, [sp, #0x0] + add r0, r2, #0x0 + add r1, #0x2 + add r2, sp, #0x8 + add r3, #0x1 + bl FUN_02060E34 + add r0, sp, #0x4 + strh r5, [r0, #0x0] + strb r4, [r0, #0x7] + add r0, r6, #0x0 + mov r1, #0x3 + mov r2, #0x1 + add r3, sp, #0x4 + bl FUN_02060D74 + add sp, #0x2c + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_0206193C +FUN_0206193C: ; 0x0206193C + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x5] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x6] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x2] + ldrb r3, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02060E70 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x2 + mov r3, #0x4 + bl FUN_0200AD38 + ldrb r0, [r4, #0x7] + cmp r0, #0x0 + bne _0206198A + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_0206198A: + mov r0, #0x0 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02061990 +FUN_02061990: ; 0x02061990 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x2] + bl FUN_020245F0 + cmp r0, #0x0 + bne _020619B0 + mov r0, #0x0 + pop {r3-r5, pc} +_020619B0: + ldr r0, [r5, #0xc] + bl FUN_020462AC + mov r1, #0x2 + mov r2, #0x11 + bl FUN_0205F2E4 + pop {r3-r5, pc} + + thumb_func_start FUN_020619C0 +FUN_020619C0: ; 0x020619C0 + push {r4-r5, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r0, sp, #0x8 + str r0, [sp, #0x0] + add r0, r2, #0x0 + add r2, sp, #0x4 + add r3, sp, #0x4 + add r4, r1, #0x0 + add r1, sp, #0x4 + add r2, #0x2 + add r3, #0x3 + bl FUN_02060E34 + mov r1, #0x3 + add r0, r5, #0x0 + add r2, r1, #0x0 + add r3, sp, #0x4 + str r4, [sp, #0xc] + bl FUN_02060D74 + add sp, #0x2c + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_020619F0 +FUN_020619F0: ; 0x020619F0 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + mov r0, #0xfa + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + mul r0, r1 + mov r1, #0xfe + blx _u32_div_f + add r0, r0, #0x5 + mov r1, #0xa + blx _u32_div_f + mov r1, #0xa + add r4, r0, #0x0 + blx _u32_div_f + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x2 + mov r3, #0x3 + bl FUN_0200AD38 + add r0, r4, #0x0 + mov r1, #0xa + blx _u32_div_f + mov r0, #0x0 + add r2, r1, #0x0 + str r0, [sp, #0x0] + mov r3, #0x1 + add r0, r5, #0x0 + mov r1, #0x3 + str r3, [sp, #0x4] + bl FUN_0200AD38 + mov r0, #0x2 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02061A70 +FUN_02061A70: ; 0x02061A70 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061A8C +FUN_02061A8C: ; 0x02061A8C + push {r3-r5, lr} + sub sp, #0x28 + mov r4, #0xfa + lsl r4, r4, #0x2 + add r4, r1, r4 + add r5, sp, #0x0 + cmp r2, r4 + blo _02061AAC + str r1, [r5, #0x0] + str r2, [r5, #0x4] + str r3, [r5, #0x8] + mov r1, #0x3 + mov r2, #0x4 + add r3, r5, #0x0 + bl FUN_02060D74 +_02061AAC: + add sp, #0x28 + pop {r3-r5, pc} + + thumb_func_start FUN_02061AB0 +FUN_02061AB0: ; 0x02061AB0 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + mov r0, #0x0 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x0 + mov r3, #0xa + bl FUN_0200AD38 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x2 + mov r3, #0x6 + bl FUN_0200AD38 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r2, [r4, #0x4] + add r0, r5, #0x0 + mov r1, #0x3 + mov r3, #0x6 + bl FUN_0200AD38 + mov r0, #0x3 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061B0C +FUN_02061B0C: ; 0x02061B0C + push {r3, lr} + sub sp, #0x28 + add r3, sp, #0x0 + strh r1, [r3, #0x0] + strh r2, [r3, #0x2] + mov r1, #0x3 + mov r2, #0x8 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3, pc} + + thumb_func_start FUN_02061B24 +FUN_02061B24: ; 0x02061B24 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200B1D4 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + mov r1, #0x2 + mov r3, #0x3 + bl FUN_0200AD38 + mov r0, #0x7 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061B64 +FUN_02061B64: ; 0x02061B64 + push {r3, lr} + sub sp, #0x28 + add r2, sp, #0x0 + add r3, sp, #0x0 + strh r1, [r2, #0x0] + cmp r1, #0x1 + bls _02061B7A + mov r1, #0x3 + mov r2, #0x9 + bl FUN_02060D74 +_02061B7A: + add sp, #0x28 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02061B80 +FUN_02061B80: ; 0x02061B80 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + mov r0, #0x0 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r3, #0x3 + bl FUN_0200AD38 + mov r0, #0x8 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061BB4 +FUN_02061BB4: ; 0x02061BB4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0206F158 + mov r1, #0x6b + lsl r1, r1, #0x2 + mov r2, #0x1 + mov r3, #0x20 + bl FUN_0206EE50 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02061BCC +FUN_02061BCC: ; 0x02061BCC + push {r3-r5, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_02022504 + bl FUN_0202B85C + ldrh r2, [r0, #0x0] + add r1, sp, #0x0 + add r3, sp, #0x0 + strh r2, [r1, #0x0] + ldrh r2, [r0, #0x2] + strh r2, [r1, #0x2] + mov r2, #0x0 + strb r2, [r0, #0x0] + strh r4, [r1, #0x4] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x2 + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061C00 +FUN_02061C00: ; 0x02061C00 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + mov r1, #0x0 + add r4, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + mov r3, #0x4 + bl FUN_0200AD38 + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x4] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200B518 + ldrb r0, [r4, #0x1] + cmp r0, #0x1 + bne _02061C42 + add sp, #0x8 + mov r0, #0x8 + pop {r4-r6, pc} +_02061C42: + mov r0, #0x9 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02061C48 +FUN_02061C48: ; 0x02061C48 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0x2 + mov r2, #0x11 + bl FUN_0205F2E4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02061C5C +FUN_02061C5C: ; 0x02061C5C + push {r3-r6, lr} + sub sp, #0x2c + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_0206BB1C + bl FUN_0204A20C + add r1, sp, #0x8 + add r2, sp, #0x4 + add r3, sp, #0x4 + str r1, [sp, #0x0] + add r1, sp, #0x4 + add r2, #0x2 + add r3, #0x3 + add r6, r0, #0x0 + bl FUN_02060E34 + add r2, sp, #0x8 + add r3, sp, #0x8 + mov r0, #0x20 + add r1, r6, #0x0 + add r2, #0x1 + add r3, #0x2 + bl FUN_02060ECC + add r0, sp, #0x4 + strh r4, [r0, #0x1c] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x4 + add r3, sp, #0x4 + bl FUN_02060D74 + add sp, #0x2c + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02061CA8 +FUN_02061CA8: ; 0x02061CA8 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldrb r0, [r4, #0x5] + cmp r0, #0x0 + beq _02061D00 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrb r0, [r4, #0x3] + mov r1, #0x2 + add r2, r4, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060D90 + ldrh r2, [r4, #0x1c] + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0200B518 + add sp, #0x8 + mov r0, #0xa + pop {r4-r6, pc} +_02061D00: + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x3] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x4] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x0] + ldrb r3, [r4, #0x2] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrh r2, [r4, #0x1c] + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0200B518 + mov r0, #0xb + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061D30 +FUN_02061D30: ; 0x02061D30 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061D4C +FUN_02061D4C: ; 0x02061D4C + push {r3-r5, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0x4] + add r4, r1, #0x0 + ldr r0, [r0, #0x14] + bl FUN_02252538 + str r0, [sp, #0x0] + add r0, sp, #0x0 + strh r4, [r0, #0x4] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x6 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061D74 +FUN_02061D74: ; 0x02061D74 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200B02C + ldrh r2, [r4, #0x4] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200B518 + mov r0, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_02061DA4 +FUN_02061DA4: ; 0x02061DA4 + push {r3-r5, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_02022504 + bl FUN_0202B838 + ldrh r2, [r0, #0x0] + add r1, sp, #0x0 + add r3, sp, #0x0 + strh r2, [r1, #0x0] + ldrh r2, [r0, #0x2] + strh r2, [r1, #0x2] + ldrh r2, [r0, #0x4] + strh r2, [r1, #0x4] + ldrh r2, [r0, #0x6] + strh r2, [r1, #0x6] + ldrh r2, [r0, #0x8] + strh r2, [r1, #0x8] + mov r2, #0x0 + strb r2, [r0, #0x0] + strh r4, [r1, #0xa] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x7 + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061DE4 +FUN_02061DE4: ; 0x02061DE4 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r0, r6, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldrb r0, [r4, #0x5] + mov r1, #0x0 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x6] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x2] + ldrb r3, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrb r0, [r4, #0x8] + bl FUN_02083298 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0200B2AC + ldrb r0, [r4, #0x7] + bl FUN_02083268 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200B278 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r3, #0x1 + str r3, [sp, #0x4] + ldrb r2, [r4, #0x9] + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0200AD38 + add r0, r5, #0x0 + mov r1, #0x4 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0xa] + add r0, r5, #0x0 + mov r1, #0x5 + bl FUN_0200B518 + ldrb r0, [r4, #0x9] + cmp r0, #0x1 + bne _02061E5A + add sp, #0x8 + mov r0, #0x12 + pop {r4-r6, pc} +_02061E5A: + mov r0, #0x11 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02061E60 +FUN_02061E60: ; 0x02061E60 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x2] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061E7C +FUN_02061E7C: ; 0x02061E7C + push {r4, lr} + sub sp, #0x28 + add r4, r0, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x2] + ldr r0, [r4, #0xc] + bl FUN_02027E24 + mov r1, #0x0 + bl FUN_02027008 + bl FUN_020275D8 + add r1, sp, #0x0 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x1 + mov r2, #0x9 + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02061EAC +FUN_02061EAC: ; 0x02061EAC + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrh r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02060EA0 + ldrh r2, [r4, #0x2] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200B518 + mov r0, #0x14 + pop {r4-r6, pc} + + thumb_func_start FUN_02061EDC +FUN_02061EDC: ; 0x02061EDC + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02024DA0 + ldrh r1, [r4, #0x0] + bl FUN_020245F0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061EF8 +FUN_02061EF8: ; 0x02061EF8 + push {r3, lr} + sub sp, #0x28 + str r1, [sp, #0x0] + mov r1, #0x1 + mov r2, #0xa + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r3, pc} + + thumb_func_start FUN_02061F0C +FUN_02061F0C: ; 0x02061F0C + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldr r0, [r4, #0x0] + add r0, #0x14 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02061F2C +FUN_02061F2C: ; 0x02061F2C + push {r3-r5, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_02022504 + bl FUN_0202B850 + ldrb r2, [r0, #0x0] + add r1, sp, #0x0 + add r3, sp, #0x0 + strb r2, [r1, #0x0] + ldrb r2, [r0, #0x1] + strb r2, [r1, #0x1] + strh r4, [r1, #0x2] + mov r1, #0x0 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0xb + bl FUN_02060D74 + add sp, #0x28 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02061F60 +FUN_02061F60: ; 0x02061F60 + push {r3-r7, lr} + add r7, r2, #0x0 + add r0, r7, #0x0 + add r5, r1, #0x0 + bl FUN_02248B60 + add r6, r0, #0x0 + ldrb r4, [r6, #0x1] + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r7, #0x0 + bl FUN_02060DCC + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0200B628 + ldrh r2, [r6, #0x2] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200B518 + sub r4, #0x19 + cmp r4, #0x3 + bhi _02061FB8 + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02061FA0: ; jump table (using 16-bit offset) + .short _02061FA8 - _02061FA0 - 2; case 0 + .short _02061FAC - _02061FA0 - 2; case 1 + .short _02061FB0 - _02061FA0 - 2; case 2 + .short _02061FB4 - _02061FA0 - 2; case 3 +_02061FA8: + mov r0, #0x27 + pop {r3-r7, pc} +_02061FAC: + mov r0, #0x28 + pop {r3-r7, pc} +_02061FB0: + mov r0, #0x29 + pop {r3-r7, pc} +_02061FB4: + mov r0, #0x2a + pop {r3-r7, pc} +_02061FB8: + mov r0, #0x26 + pop {r3-r7, pc} + + thumb_func_start FUN_02061FBC +FUN_02061FBC: ; 0x02061FBC + push {r4-r6, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r4, r1, #0x0 + bl FUN_02022504 + bl FUN_0202B844 + add r6, r0, #0x0 + add r3, sp, #0x0 + mov r2, #0x12 +_02061FD4: + ldrh r1, [r6, #0x0] + add r6, r6, #0x2 + strh r1, [r3, #0x0] + add r3, r3, #0x2 + sub r2, r2, #0x1 + bne _02061FD4 + add r1, sp, #0x0 + strh r4, [r1, #0x24] + mov r1, #0x0 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0xd + add r3, sp, #0x0 + bl FUN_02060D74 + add sp, #0x28 + pop {r4-r6, pc} + + thumb_func_start FUN_02061FF8 +FUN_02061FF8: ; 0x02061FF8 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r2, #0x0 + add r5, r1, #0x0 + add r0, r6, #0x0 + bl FUN_02248B60 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + bl FUN_02060DCC + ldrb r0, [r4, #0x5] + mov r1, #0x1 + str r0, [sp, #0x0] + ldrb r0, [r4, #0x6] + str r0, [sp, #0x4] + ldrh r2, [r4, #0x2] + ldrb r3, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02060E70 + ldrb r2, [r4, #0x1e] + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0200AE04 + ldrh r2, [r4, #0x24] + add r0, r5, #0x0 + mov r1, #0x5 + bl FUN_0200B518 + ldrb r0, [r4, #0x1f] + cmp r0, #0x0 + beq _0206204A + cmp r0, #0x1 + beq _02062062 + cmp r0, #0x2 + beq _02062050 + b _02062072 +_0206204A: + add sp, #0x8 + mov r0, #0x2d + pop {r4-r6, pc} +_02062050: + add r4, #0x20 + ldrb r2, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0200B660 + add sp, #0x8 + mov r0, #0x2c + pop {r4-r6, pc} +_02062062: + ldrh r2, [r4, #0x22] + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0200AE38 + add sp, #0x8 + mov r0, #0x2e + pop {r4-r6, pc} +_02062072: + mov r0, #0x2d + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02062078 +FUN_02062078: ; 0x02062078 + push {r3-r7, lr} + mov r6, #0x0 + ldr r5, _0206209C ; =0x020F7650 + add r7, r0, #0x0 + add r4, r6, #0x0 +_02062082: + ldrb r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_02028828 + cmp r0, #0x0 + beq _02062090 + add r4, r4, #0x1 +_02062090: + add r6, r6, #0x1 + add r5, r5, #0x1 + cmp r6, #0x5 + blo _02062082 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_0206209C: .word 0x020F7650 + + thumb_func_start FUN_020620A0 +FUN_020620A0: ; 0x020620A0 + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x4] + ldr r0, [r0, #0xc] + str r1, [sp, #0x8] + bl FUN_0202881C + add r7, r0, #0x0 + bl FUN_02062078 + add r4, r0, #0x0 + cmp r4, #0x0 + bgt _020620BE + bl ErrorHandling +_020620BE: + cmp r4, #0x1 + ble _020620D0 + bl FUN_0201BA60 + add r1, r4, #0x0 + blx _u32_div_f + add r5, r1, #0x0 + b _020620D2 +_020620D0: + mov r5, #0x0 +_020620D2: + ldr r4, _02062154 ; =0x020F7650 + mov r6, #0x0 +_020620D6: + ldrb r1, [r4, #0x0] + add r0, r7, #0x0 + bl FUN_02028828 + cmp r0, #0x0 + beq _020620F0 + cmp r5, #0x0 + bne _020620EE + ldr r0, _02062154 ; =0x020F7650 + ldrb r0, [r0, r6] + str r0, [sp, #0xc] + b _020620F8 +_020620EE: + sub r5, r5, #0x1 +_020620F0: + add r6, r6, #0x1 + add r4, r4, #0x1 + cmp r6, #0x5 + blo _020620D6 +_020620F8: + cmp r5, #0x0 + beq _02062100 + bl ErrorHandling +_02062100: + bl FUN_0201B9EC + mov r1, #0xf1 + lsl r1, r1, #0x4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x11 + blo _02062118 + bl ErrorHandling +_02062118: + cmp r4, #0x9 + blt _0206211E + add r4, r4, #0x1 +_0206211E: + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r1, [r1, #0xc] + ldr r2, [sp, #0xc] + mov r3, #0x0 + bl FUN_0200B708 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x8] + ldr r1, [r1, #0xc] + ldr r2, [sp, #0xc] + mov r3, #0x1 + bl FUN_0200B708 + ldr r0, [sp, #0x8] + mov r1, #0x2 + add r2, r4, #0x0 + bl FUN_0200AF18 + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_02062154: .word 0x020F7650 + + thumb_func_start FUN_02062158 +FUN_02062158: ; 0x02062158 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0202881C + bl FUN_02062078 + cmp r0, #0x0 + beq _0206216C + mov r0, #0x1 + pop {r3, pc} +_0206216C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02062170 +FUN_02062170: ; 0x02062170 + push {r3-r7, lr} + add r6, r0, #0x0 + add r7, r1, #0x0 + bl FUN_0201B9EC + ldr r1, _02062234 ; =0x00003334 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x5 + blo _0206218C + bl ErrorHandling +_0206218C: + ldr r0, _02062238 ; =0x02105FBC + lsl r1, r4, #0x1 + ldrh r5, [r0, r1] + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02034FE4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02034824 + add r2, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_0200AFF4 + cmp r4, #0xb + bhi _0206222C + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020621BC: ; jump table (using 16-bit offset) + .short _020621D4 - _020621BC - 2; case 0 + .short _0206220C - _020621BC - 2; case 1 + .short _02062210 - _020621BC - 2; case 2 + .short _02062214 - _020621BC - 2; case 3 + .short _02062224 - _020621BC - 2; case 4 + .short _02062218 - _020621BC - 2; case 5 + .short _0206221C - _020621BC - 2; case 6 + .short _02062220 - _020621BC - 2; case 7 + .short _0206222C - _020621BC - 2; case 8 + .short _0206222C - _020621BC - 2; case 9 + .short _0206222C - _020621BC - 2; case 10 + .short _02062228 - _020621BC - 2; case 11 +_020621D4: + bl FUN_0201B9EC + lsl r0, r0, #0x2 + lsr r4, r0, #0x10 + cmp r4, #0x4 + blo _020621E4 + bl ErrorHandling +_020621E4: + cmp r4, #0x3 + bhi _0206220C + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020621F4: ; jump table (using 16-bit offset) + .short _020621FC - _020621F4 - 2; case 0 + .short _02062200 - _020621F4 - 2; case 1 + .short _02062204 - _020621F4 - 2; case 2 + .short _02062208 - _020621F4 - 2; case 3 +_020621FC: + mov r0, #0x1 + pop {r3-r7, pc} +_02062200: + mov r0, #0x2 + pop {r3-r7, pc} +_02062204: + mov r0, #0x3 + pop {r3-r7, pc} +_02062208: + mov r0, #0x4 + pop {r3-r7, pc} +_0206220C: + mov r0, #0x5 + pop {r3-r7, pc} +_02062210: + mov r0, #0x6 + pop {r3-r7, pc} +_02062214: + mov r0, #0x7 + pop {r3-r7, pc} +_02062218: + mov r0, #0x8 + pop {r3-r7, pc} +_0206221C: + mov r0, #0x9 + pop {r3-r7, pc} +_02062220: + mov r0, #0xa + pop {r3-r7, pc} +_02062224: + mov r0, #0xb + pop {r3-r7, pc} +_02062228: + mov r0, #0xc + pop {r3-r7, pc} +_0206222C: + bl ErrorHandling + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_02062234: .word 0x00003334 +_02062238: .word 0x02105FBC + + thumb_func_start FUN_0206223C +FUN_0206223C: ; 0x0206223C + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02062240 +FUN_02062240: ; 0x02062240 + push {r3-r4, lr} + sub sp, #0x4 + ldr r0, [r0, #0xc] + add r4, r1, #0x0 + bl FUN_0202A9B0 + mov r1, #0x2 + bl FUN_0202A990 + add r1, sp, #0x0 + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_02245910 + add r0, sp, #0x0 + ldrh r0, [r0, #0x2] + bl FUN_02034824 + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200AFF4 + add r2, sp, #0x0 + ldrh r2, [r2, #0x0] + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02060EA0 + mov r0, #0x1c + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02062280 +FUN_02062280: ; 0x02062280 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AA14 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02062290 +FUN_02062290: ; 0x02062290 + push {r3-r4} + ldr r4, _020622BC ; =0x020F78A4 + mov r3, #0x0 +_02062296: + ldrb r2, [r4, #0x0] + cmp r0, r2 + bne _020622AE + ldrb r2, [r4, #0x1] + cmp r1, r2 + bne _020622AE + lsl r0, r3, #0x1 + add r1, r3, r0 + ldr r0, _020622C0 ; =0x020F78A6 + ldrb r0, [r0, r1] + pop {r3-r4} + bx lr +_020622AE: + add r3, r3, #0x1 + add r4, r4, #0x3 + cmp r3, #0x6e + blo _02062296 + mov r0, #0x3 + pop {r3-r4} + bx lr + .balign 4 +_020622BC: .word 0x020F78A4 +_020622C0: .word 0x020F78A6 + + thumb_func_start FUN_020622C4 +FUN_020622C4: ; 0x020622C4 + push {r4-r6, lr} + add r6, r1, #0x0 + bl FUN_0201B9EC + mov r1, #0xf1 + lsl r1, r1, #0x4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x11 + blo _020622E0 + bl ErrorHandling +_020622E0: + cmp r5, #0x9 + blt _020622E6 + add r5, r5, #0x1 +_020622E6: + bl FUN_0201B9EC + mov r1, #0xf1 + lsl r1, r1, #0x4 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x11 + blo _020622FE + bl ErrorHandling +_020622FE: + cmp r4, #0x9 + blt _02062304 + add r4, r4, #0x1 +_02062304: + add r0, r6, #0x0 + mov r1, #0x0 + add r2, r5, #0x0 + bl FUN_0200AF18 + add r0, r6, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0200AF18 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02062290 + cmp r0, #0x3 + bhi _0206233C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02062330: ; jump table (using 16-bit offset) + .short _02062344 - _02062330 - 2; case 0 + .short _02062340 - _02062330 - 2; case 1 + .short _02062338 - _02062330 - 2; case 2 + .short _0206233C - _02062330 - 2; case 3 +_02062338: + mov r0, #0x1e + pop {r4-r6, pc} +_0206233C: + mov r0, #0x1f + pop {r4-r6, pc} +_02062340: + mov r0, #0x20 + pop {r4-r6, pc} +_02062344: + mov r0, #0x21 + pop {r4-r6, pc} + + thumb_func_start FUN_02062348 +FUN_02062348: ; 0x02062348 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0206234C +FUN_0206234C: ; 0x0206234C + push {r3-r7, lr} + sub sp, #0x88 + ldr r0, [r0, #0xc] + bl FUN_020462AC + ldr r4, _020623E8 ; =0x020F7658 + add r7, r0, #0x0 + mov r6, #0x0 + add r5, sp, #0x0 +_0206235E: + ldrh r2, [r4, #0x0] + add r0, r7, #0x0 + mov r1, #0x2 + bl FUN_0205F2E4 + strb r0, [r5, #0x0] + add r6, r6, #0x1 + add r4, r4, #0x2 + add r5, r5, #0x1 + cmp r6, #0x12 + blo _0206235E + mov r3, #0x0 + add r2, sp, #0x10 + ldr r0, _020623EC ; =0x020F79EE + add r4, r3, #0x0 + add r1, r3, #0x0 + add r2, #0x2 + add r6, sp, #0x0 +_02062382: + lsl r5, r1, #0x1 + ldrh r5, [r0, r5] + ldrb r5, [r6, r5] + cmp r5, #0x0 + beq _02062392 + strb r3, [r2, #0x0] + add r2, r2, #0x1 + add r4, r4, #0x1 +_02062392: + add r3, r3, #0x1 + add r1, r1, #0x2 + cmp r3, #0x76 + blo _02062382 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bne _020623A4 + bl ErrorHandling +_020623A4: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1 + bhi _020623B0 + mov r5, #0x0 + b _020623DE +_020623B0: + bl FUN_0201B9EC + add r5, r0, #0x0 + lsl r1, r4, #0x10 + ldr r0, _020623F0 ; =0x0000FFFF + lsr r1, r1, #0x10 + blx _s32_div_f + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + cmp r5, r0 + blo _020623DE + bl ErrorHandling +_020623DE: + add r0, sp, #0x10 + add r0, #0x2 + ldrb r0, [r0, r5] + add sp, #0x88 + pop {r3-r7, pc} + .balign 4 +_020623E8: .word 0x020F7658 +_020623EC: .word 0x020F79EE +_020623F0: .word 0x0000FFFF + + thumb_func_start FUN_020623F4 +FUN_020623F4: ; 0x020623F4 + push {r4-r6, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + add r5, r1, #0x0 + bl FUN_02024ECC + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0206234C + add r4, r0, #0x0 + lsl r0, r4, #0x1 + add r0, r0, #0x1 + lsl r1, r0, #0x1 + ldr r0, _0206245C ; =0x020F79EE + ldrh r0, [r0, r1] + bl FUN_02034824 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200AFF4 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02025238 + cmp r0, #0x5 + bhi _02062456 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206243A: ; jump table (using 16-bit offset) + .short _02062456 - _0206243A - 2; case 0 + .short _02062456 - _0206243A - 2; case 1 + .short _02062452 - _0206243A - 2; case 2 + .short _0206244E - _0206243A - 2; case 3 + .short _0206244A - _0206243A - 2; case 4 + .short _02062446 - _0206243A - 2; case 5 +_02062446: + mov r0, #0x23 + pop {r4-r6, pc} +_0206244A: + mov r0, #0x24 + pop {r4-r6, pc} +_0206244E: + mov r0, #0x25 + pop {r4-r6, pc} +_02062452: + mov r0, #0x26 + pop {r4-r6, pc} +_02062456: + mov r0, #0x27 + pop {r4-r6, pc} + nop +_0206245C: .word 0x020F79EE + + thumb_func_start FUN_02062460 +FUN_02062460: ; 0x02062460 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #0x2 + mov r2, #0x9 + bl FUN_0205F2E4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02062474 +FUN_02062474: ; 0x02062474 + push {r3-r6, lr} + sub sp, #0xc + mov r0, #0x4 + add r6, r1, #0x0 + str r0, [sp, #0x0] + add r0, sp, #0x8 + mov r1, #0x7e + mov r2, #0x2 + mov r3, #0x0 + bl FUN_02006548 + ldr r0, [sp, #0x8] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + bne _02062496 + bl ErrorHandling +_02062496: + cmp r4, #0x1 + bhi _0206249E + mov r5, #0x0 + b _020624C6 +_0206249E: + bl FUN_0201B9EC + add r5, r0, #0x0 + ldr r0, _02062504 ; =0x0000FFFF + add r1, r4, #0x0 + blx _s32_div_f + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x10 + add r0, r5, #0x0 + lsr r1, r1, #0x10 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, r4 + blo _020624C6 + bl ErrorHandling +_020624C6: + lsl r4, r5, #0x2 + add r0, sp, #0x4 + mov r2, #0x2 + add r0, #0x2 + mov r1, #0x7e + add r3, r4, #0x4 + str r2, [sp, #0x0] + bl FUN_02006548 + mov r2, #0x2 + add r0, sp, #0x4 + mov r1, #0x7e + add r3, r4, #0x6 + str r2, [sp, #0x0] + bl FUN_02006548 + add r2, sp, #0x4 + ldrh r2, [r2, #0x2] + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_02060EA0 + add r2, sp, #0x4 + ldrh r2, [r2, #0x0] + add r0, r6, #0x0 + mov r1, #0x1 + bl FUN_0200AE38 + mov r0, #0x2a + add sp, #0xc + pop {r3-r6, pc} + .balign 4 +_02062504: .word 0x0000FFFF + + thumb_func_start FUN_02062508 +FUN_02062508: ; 0x02062508 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0206250C +FUN_0206250C: ; 0x0206250C + push {r4-r6, lr} + mov r4, #0x0 + add r6, r0, #0x0 + add r5, r4, #0x0 +_02062514: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02027098 + cmp r0, #0x1 + bne _02062522 + add r5, r5, #0x1 +_02062522: + add r4, r4, #0x1 + cmp r4, #0xb + blt _02062514 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0206252C +FUN_0206252C: ; 0x0206252C + push {r4-r7, lr} + sub sp, #0xc + ldr r0, [r0, #0xc] + add r7, r1, #0x0 + bl FUN_02027E24 + add r6, r0, #0x0 + bl FUN_0206250C + add r4, r0, #0x0 + cmp r4, #0x1 + ble _02062552 + bl FUN_0201BA60 + add r1, r4, #0x0 + blx _u32_div_f + add r5, r1, #0x0 + b _02062554 +_02062552: + mov r5, #0x0 +_02062554: + mov r4, #0x0 +_02062556: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02027098 + cmp r0, #0x1 + bne _0206256C + cmp r5, #0x0 + bne _0206256A + str r4, [sp, #0x8] + b _02062572 +_0206256A: + sub r5, r5, #0x1 +_0206256C: + add r4, r4, #0x1 + cmp r4, #0xb + blt _02062556 +_02062572: + cmp r4, #0xb + blt _0206257A + bl ErrorHandling +_0206257A: + ldr r1, [sp, #0x8] + add r0, r6, #0x0 + bl FUN_02027008 + add r5, r0, #0x0 + mov r0, #0x8 + mov r1, #0x4 + bl FUN_020219F4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0202763C + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02027608 + add r0, r5, #0x0 + bl FUN_020276A8 + mov r1, #0x1 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_0200ABB4 + add r0, r4, #0x0 + bl FUN_02021A20 + add r0, r5, #0x0 + bl FUN_0202769C + add r2, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x1 + bl FUN_0200B518 + mov r0, #0x32 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020625D4 +FUN_020625D4: ; 0x020625D4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02027E24 + bl FUN_0206250C + cmp r0, #0x0 + beq _020625E8 + mov r0, #0x1 + pop {r3, pc} +_020625E8: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020625EC +FUN_020625EC: ; 0x020625EC + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + str r2, [sp, #0x0] + mov r0, #0x3 + mov r1, #0x50 + lsl r2, r0, #0xd + ldr r6, [r5, #0xc] + bl FUN_0201681C + mov r1, #0x2d + mov r0, #0x50 + lsl r1, r1, #0x4 + bl FUN_02016998 + mov r2, #0x2d + mov r1, #0x0 + lsl r2, r2, #0x4 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x50 + str r0, [r4, #0x0] + ldr r0, [sp, #0x0] + mov r1, #0x3 + blx _s32_div_f + strb r1, [r4, #0x16] + ldr r0, [sp, #0x0] + mov r1, #0x3 + blx _s32_div_f + strb r0, [r4, #0x17] + ldrb r0, [r4, #0x16] + bl FUN_0202B870 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0x16] + bl FUN_0202B87C + strb r0, [r4, #0x19] + add r0, r4, #0x0 + add r0, #0xcc + str r5, [r0, #0x0] + add r0, r4, #0x0 + ldr r1, [r5, #0x8] + add r0, #0xd0 + str r1, [r0, #0x0] + add r0, r6, #0x0 + bl FUN_0202B8E4 + mov r1, #0x2a + lsl r1, r1, #0x4 + str r0, [r4, r1] + add r0, r6, #0x0 + bl LoadPlayerDataAddress + bl FUN_02024FF4 + strh r0, [r4, #0x1a] + add r0, r6, #0x0 + bl LoadPlayerDataAddress + bl FUN_02025084 + strh r0, [r4, #0x1c] + str r4, [r7, #0x8] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02062678 +FUN_02062678: ; 0x02062678 + push {r3-r7, lr} + sub sp, #0x8 + ldr r4, [r0, #0x8] + mov r0, #0x0 + str r0, [sp, #0x4] + ldrb r0, [r4, #0x18] + cmp r0, #0x0 + ble _020626FE + ldr r0, [sp, #0x4] + str r0, [sp, #0x0] +_0206268C: + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r2, [r4, r0] + ldr r0, [sp, #0x0] + mov r6, #0x0 + add r1, r2, r0 + ldr r0, [r2, r0] + add r7, r6, #0x0 + cmp r0, #0x0 + ble _020626EC + add r5, r6, #0x0 +_020626A2: + add r0, r1, #0x4 + add r1, r0, r5 + ldrb r0, [r1, #0x6] + mov r12, r0 + cmp r0, #0xff + beq _020626D6 + ldrh r0, [r1, #0x4] + cmp r0, #0x0 + bne _020626D6 + ldrb r2, [r4, #0x17] + ldrb r3, [r4, #0x19] + mov r1, #0xd + mul r1, r2 + add r2, r3, r1 + ldr r1, [sp, #0x4] + mov r0, #0x2a + add r1, r1, r2 + mov r2, r12 + lsl r0, r0, #0x4 + sub r2, r2, r6 + lsl r2, r2, #0x18 + ldr r0, [r4, r0] + lsr r2, r2, #0x18 + bl FUN_0202B8F0 + add r6, r6, #0x1 +_020626D6: + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x0] + add r1, r1, r0 + ldr r0, [r2, r0] + add r7, r7, #0x1 + add r5, #0x8 + cmp r7, r0 + blt _020626A2 +_020626EC: + ldr r0, [sp, #0x0] + ldrb r1, [r4, #0x18] + add r0, #0x3c + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, r1 + blt _0206268C +_020626FE: + add r0, r4, #0x0 + ldr r5, [r4, #0x0] + bl FUN_02016A18 + mov r2, #0x2d + add r0, r4, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x4 + blx MI_CpuFill8 + add r0, r5, #0x0 + bl FUN_020168D0 + mov r0, #0xc + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02062720 +FUN_02062720: ; 0x02062720 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02062A70 + add r0, r4, #0x0 + bl FUN_02062C80 + add r0, r4, #0x0 + bl FUN_02062DB0 + add r0, r4, #0x0 + bl FUN_02062F3C + mov r0, #0x2 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02062740 +FUN_02062740: ; 0x02062740 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02062FFC + add r0, r4, #0x0 + bl FUN_02062EC4 + add r0, r4, #0x0 + bl FUN_02062D38 + add r0, r4, #0x0 + bl FUN_02062C4C + mov r0, #0xb + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02062760 +FUN_02062760: ; 0x02062760 + push {r3, lr} + ldrh r1, [r0, #0x22] + ldrh r2, [r0, #0x24] + bl FUN_02063028 + mov r0, #0x3 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02062770 +FUN_02062770: ; 0x02062770 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0xc0 + ldr r0, [r0, #0x0] + bl FUN_02001204 + ldr r1, _020627C8 ; =0x021C48B8 + ldr r3, [r1, #0x48] + mov r1, #0x2 + tst r1, r3 + beq _02062790 + add r0, r4, #0x0 + bl FUN_02063178 + mov r0, #0xa + pop {r4, pc} +_02062790: + mov r2, #0x1 + add r1, r3, #0x0 + tst r1, r2 + bne _0206279C + mov r0, #0x3 + pop {r4, pc} +_0206279C: + sub r1, r2, #0x3 + cmp r0, r1 + beq _020627AE + sub r1, r2, #0x2 + cmp r0, r1 + beq _020627AE + ldr r1, _020627CC ; =0x0000FFFF + cmp r0, r1 + bne _020627B8 +_020627AE: + add r0, r4, #0x0 + bl FUN_02063178 + mov r0, #0xa + pop {r4, pc} +_020627B8: + strb r0, [r4, #0x1f] + mov r0, #0x0 + strh r0, [r4, #0x28] + add r0, r4, #0x0 + bl FUN_02063178 + mov r0, #0x4 + pop {r4, pc} + .balign 4 +_020627C8: .word 0x021C48B8 +_020627CC: .word 0x0000FFFF + + thumb_func_start FUN_020627D0 +FUN_020627D0: ; 0x020627D0 + push {r3, lr} + ldrh r1, [r0, #0x28] + bl FUN_02063430 + mov r0, #0x5 + pop {r3, pc} + + thumb_func_start FUN_020627DC +FUN_020627DC: ; 0x020627DC + push {r3, lr} + ldr r1, _02062804 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x3 + tst r1, r2 + beq _020627F0 + bl FUN_020634DC + mov r0, #0x2 + pop {r3, pc} +_020627F0: + mov r1, #0x4 + tst r1, r2 + beq _020627FE + bl FUN_02063238 + mov r0, #0x6 + pop {r3, pc} +_020627FE: + mov r0, #0x5 + pop {r3, pc} + nop +_02062804: .word 0x021C48B8 + + thumb_func_start FUN_02062808 +FUN_02062808: ; 0x02062808 + push {r4, lr} + ldr r1, _020628B8 ; =0x021C48B8 + mov r2, #0x2 + ldr r1, [r1, #0x48] + add r4, r0, #0x0 + tst r2, r1 + beq _0206281E + bl FUN_02063264 + mov r0, #0x5 + pop {r4, pc} +_0206281E: + mov r0, #0x1 + tst r0, r1 + beq _0206285C + mov r0, #0x0 + str r0, [r4, #0xc] + mov r0, #0xb + lsl r0, r0, #0x6 + ldrb r2, [r4, #0x1f] + mov r1, #0x3c + ldr r3, [r4, r0] + mul r1, r2 + add r1, r3, r1 + add r3, r1, #0x4 + ldrh r1, [r4, #0x28] + add r2, r4, r1 + add r1, r0, #0x0 + add r1, #0x8 + ldrb r1, [r2, r1] + lsl r1, r1, #0x3 + add r2, r3, r1 + add r1, r0, #0x4 + str r2, [r4, r1] + add r0, r0, #0x4 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x6] + cmp r0, #0xff + bne _02062858 + mov r0, #0x8 + pop {r4, pc} +_02062858: + mov r0, #0x7 + pop {r4, pc} +_0206285C: + mov r0, #0x40 + tst r0, r1 + beq _02062882 + ldrh r0, [r4, #0x28] + cmp r0, #0x0 + beq _02062882 + sub r0, r0, #0x1 + strh r0, [r4, #0x28] + ldrh r2, [r4, #0x28] + mov r0, #0xa6 + lsl r0, r0, #0x2 + lsl r2, r2, #0x4 + add r2, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, r0] + mov r1, #0x7e + asr r2, r2, #0x10 + bl FUN_0200C714 +_02062882: + ldr r0, _020628B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x80 + tst r0, r1 + beq _020628B4 + add r0, r4, #0x0 + add r0, #0x21 + ldrb r0, [r0, #0x0] + ldrh r1, [r4, #0x28] + sub r0, r0, #0x1 + cmp r1, r0 + bge _020628B4 + add r0, r1, #0x1 + strh r0, [r4, #0x28] + ldrh r2, [r4, #0x28] + mov r0, #0xa6 + lsl r0, r0, #0x2 + lsl r2, r2, #0x4 + add r2, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, r0] + mov r1, #0x7e + asr r2, r2, #0x10 + bl FUN_0200C714 +_020628B4: + mov r0, #0x6 + pop {r4, pc} + .balign 4 +_020628B8: .word 0x021C48B8 + + thumb_func_start FUN_020628BC +FUN_020628BC: ; 0x020628BC + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, _020628E0 ; =0x020F7BC8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + ldr r2, _020628E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + add r4, #0xc8 + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r4, pc} + nop +_020628E0: .word 0x020F7BC8 +_020628E4: .word 0x000003D9 + + thumb_func_start FUN_020628E8 +FUN_020628E8: ; 0x020628E8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x3 + bgt _0206290C + cmp r1, #0x0 + blt _020629CE + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02062904: ; jump table (using 16-bit offset) + .short _02062912 - _02062904 - 2; case 0 + .short _0206294E - _02062904 - 2; case 1 + .short _02062966 - _02062904 - 2; case 2 + .short _0206298C - _02062904 - 2; case 3 +_0206290C: + cmp r1, #0xff + beq _020629B2 + b _020629CE +_02062912: + add r0, #0xe4 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0x0 + str r3, [sp, #0x0] + ldrh r0, [r4, #0x1a] + add r2, r4, #0x0 + add r2, #0x98 + str r0, [sp, #0x4] + ldr r0, _020629D4 ; =0x0001020F + mov r1, #0x1 + str r0, [sp, #0x8] + str r3, [sp, #0xc] + add r0, r4, #0x0 + ldr r2, [r2, #0x0] + add r0, #0xe4 + bl FUN_0201BDE0 + strb r0, [r4, #0x1e] + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x2 + bl FUN_0200C66C + ldr r0, [r4, #0xc] + add r0, r0, #0x1 + str r0, [r4, #0xc] + b _020629CE +_0206294E: + ldrb r0, [r4, #0x1e] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _020629CE + add r0, r4, #0x0 + bl FUN_020628BC + ldr r0, [r4, #0xc] + add r0, r0, #0x1 + str r0, [r4, #0xc] + b _020629CE +_02062966: + add r0, #0xc8 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x0] + bl FUN_020021AC + cmp r0, #0x0 + beq _0206297E + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _02062986 + b _020629CE +_0206297E: + ldr r0, [r4, #0xc] + add r0, r0, #0x1 + str r0, [r4, #0xc] + b _020629CE +_02062986: + mov r0, #0xff + str r0, [r4, #0xc] + b _020629CE +_0206298C: + mov r1, #0xb1 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r2, #0x0 + strh r2, [r1, #0x4] + mov r1, #0x1 + bl FUN_020632A4 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200C66C + mov r0, #0x0 + str r0, [r4, #0xc] + add sp, #0x10 + mov r0, #0x6 + pop {r4, pc} +_020629B2: + add r0, r4, #0x0 + bl FUN_02063208 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200C66C + mov r0, #0x0 + str r0, [r4, #0xc] + add sp, #0x10 + mov r0, #0x6 + pop {r4, pc} +_020629CE: + mov r0, #0x7 + add sp, #0x10 + pop {r4, pc} + .balign 4 +_020629D4: .word 0x0001020F + + thumb_func_start FUN_020629D8 +FUN_020629D8: ; 0x020629D8 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _020629EE + cmp r1, #0x1 + beq _02062A2A + cmp r1, #0x2 + beq _02062A3C + b _02062A60 +_020629EE: + add r0, #0xe4 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0x0 + str r3, [sp, #0x0] + ldrh r0, [r4, #0x1a] + add r2, r4, #0x0 + add r2, #0x9c + str r0, [sp, #0x4] + ldr r0, _02062A68 ; =0x0001020F + mov r1, #0x1 + str r0, [sp, #0x8] + str r3, [sp, #0xc] + add r0, r4, #0x0 + ldr r2, [r2, #0x0] + add r0, #0xe4 + bl FUN_0201BDE0 + strb r0, [r4, #0x1e] + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x2 + bl FUN_0200C66C + ldr r0, [r4, #0xc] + add r0, r0, #0x1 + str r0, [r4, #0xc] + b _02062A60 +_02062A2A: + ldrb r0, [r4, #0x1e] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02062A60 + ldr r0, [r4, #0xc] + add r0, r0, #0x1 + str r0, [r4, #0xc] + b _02062A60 +_02062A3C: + ldr r1, _02062A6C ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x3 + tst r1, r2 + beq _02062A60 + bl FUN_02063208 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200C66C + mov r0, #0x0 + str r0, [r4, #0xc] + add sp, #0x10 + mov r0, #0x6 + pop {r4, pc} +_02062A60: + mov r0, #0x8 + add sp, #0x10 + pop {r4, pc} + nop +_02062A68: .word 0x0001020F +_02062A6C: .word 0x021C48B8 + + thumb_func_start FUN_02062A70 +FUN_02062A70: ; 0x02062A70 + push {r4-r7, lr} + sub sp, #0x14 + add r4, r0, #0x0 + ldrb r2, [r4, #0x18] + add r5, r1, #0x0 + mov r1, #0x3c + ldr r0, [r4, #0x0] + mul r1, r2 + bl FUN_02016998 + mov r1, #0xb + lsl r1, r1, #0x6 + str r0, [r4, r1] + ldr r0, [r4, r1] + ldrb r3, [r4, #0x18] + mov r2, #0x3c + mov r1, #0x0 + mul r2, r3 + blx MI_CpuFill8 + ldrb r1, [r4, #0x16] + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_0202BD6C + mov r1, #0xa9 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x0 + str r0, [sp, #0x10] + ldrb r0, [r4, #0x18] + cmp r0, #0x0 + bgt _02062AB4 + b _02062C48 +_02062AB4: + ldr r0, [sp, #0x10] + str r4, [sp, #0x8] + str r0, [sp, #0x4] + add r5, r0, #0x0 +_02062ABC: + ldrb r2, [r4, #0x17] + ldrb r3, [r4, #0x19] + mov r1, #0xd + mul r1, r2 + mov r0, #0x2a + add r2, r3, r1 + ldr r1, [sp, #0x10] + lsl r0, r0, #0x4 + add r1, r1, r2 + ldr r0, [r4, r0] + ldr r2, [r4, #0x0] + bl FUN_0202BDF0 + mov r1, #0xaa + mov r3, #0x0 + ldr r2, [sp, #0x8] + lsl r1, r1, #0x2 + str r0, [r2, r1] + add r0, r2, #0x0 + ldr r0, [r0, r1] + mov r12, r3 + str r0, [sp, #0xc] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02062B22 + sub r0, r1, #0x4 + ldr r0, [r4, r0] + add r3, r1, #0x0 + add r2, r0, #0x4 + ldr r0, [sp, #0x4] + add r3, #0x18 + add r2, r2, r0 + add r0, r1, #0x0 + add r0, #0x18 + ldr r0, [r4, r0] + add r0, r0, r5 + str r2, [r0, #0x4] + add r0, r1, #0x0 + add r0, #0x18 + ldr r0, [r4, r0] + mov r2, #0x1 + add r0, r0, r5 + strh r2, [r0, #0x8] + ldr r3, [r4, r3] + mov r0, #0xff + add r3, r3, r5 + add r1, #0x18 + strb r0, [r3, #0xa] + ldr r0, [r4, r1] + str r2, [r0, r5] + b _02062C2C +_02062B22: + add r2, r3, #0x0 + cmp r0, #0x0 + ble _02062BE4 + ldr r0, [sp, #0xc] + str r0, [sp, #0x0] + add r7, r0, #0x4 +_02062B2E: + mov r0, r12 + cmp r0, #0x0 + bne _02062BA8 + mov r0, #0xa9 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldr r1, [sp, #0x4] + add r1, r1, r0 + ldr r6, [r1, #0x8] + ldr r1, [sp, #0x0] + ldr r1, [r1, #0x8] + cmp r6, r1 + blo _02062BA8 + add r6, r0, #0x4 + ldr r0, [sp, #0x4] + lsl r1, r3, #0x3 + add r0, r6, r0 + mov r6, #0xb + lsl r6, r6, #0x6 + ldr r6, [r4, r6] + add r3, r3, #0x1 + add r6, r5, r6 + add r6, r1, r6 + str r0, [r6, #0x4] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + add r0, r5, r0 + add r6, r1, r0 + mov r0, #0x1 + strh r0, [r6, #0x8] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + lsl r6, r3, #0x3 + add r0, r5, r0 + add r1, r1, r0 + mov r0, #0xff + strb r0, [r1, #0xa] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + add r0, r5, r0 + add r0, r6, r0 + str r7, [r0, #0x4] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + add r0, r5, r0 + add r1, r6, r0 + mov r0, #0x1 + strh r0, [r1, #0x8] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + add r0, r5, r0 + add r0, r6, r0 + strb r2, [r0, #0xa] + mov r0, #0x1 + mov r12, r0 + b _02062BD0 +_02062BA8: + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + lsl r6, r3, #0x3 + add r0, r5, r0 + add r0, r6, r0 + str r7, [r0, #0x4] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + add r0, r5, r0 + add r1, r6, r0 + mov r0, #0x1 + strh r0, [r1, #0x8] + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + add r0, r5, r0 + add r0, r6, r0 + strb r2, [r0, #0xa] +_02062BD0: + ldr r0, [sp, #0x0] + add r2, r2, #0x1 + add r0, #0xc + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + add r3, r3, #0x1 + ldr r0, [r0, #0x0] + add r7, #0xc + cmp r2, r0 + blt _02062B2E +_02062BE4: + mov r0, r12 + cmp r0, #0x0 + bne _02062C1E + mov r0, #0xa9 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + lsl r2, r3, #0x3 + add r3, r1, #0x4 + ldr r1, [sp, #0x4] + add r1, r3, r1 + add r3, r0, #0x0 + add r3, #0x1c + ldr r3, [r4, r3] + add r3, r3, r5 + add r3, r2, r3 + str r1, [r3, #0x4] + add r3, r0, #0x0 + add r3, #0x1c + ldr r3, [r4, r3] + mov r1, #0x1 + add r3, r3, r5 + add r3, r2, r3 + strh r1, [r3, #0x8] + add r0, #0x1c + ldr r0, [r4, r0] + mov r1, #0xff + add r0, r0, r5 + add r0, r2, r0 + strb r1, [r0, #0xa] +_02062C1E: + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x0] + add r1, r0, #0x1 + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + str r1, [r0, r5] +_02062C2C: + ldr r0, [sp, #0x8] + ldrb r1, [r4, #0x18] + add r0, r0, #0x4 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + add r5, #0x3c + add r0, #0xc + str r0, [sp, #0x4] + ldr r0, [sp, #0x10] + add r0, r0, #0x1 + str r0, [sp, #0x10] + cmp r0, r1 + bge _02062C48 + b _02062ABC +_02062C48: + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_02062C4C +FUN_02062C4C: ; 0x02062C4C + push {r3-r7, lr} + add r6, r0, #0x0 + ldrb r0, [r6, #0x18] + mov r4, #0x0 + add r0, r0, #0x1 + cmp r0, #0x0 + ble _02062C72 + mov r7, #0xa9 + add r5, r6, #0x0 + lsl r7, r7, #0x2 +_02062C60: + ldr r0, [r5, r7] + bl FUN_0202BE6C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + add r5, r5, #0x4 + add r0, r0, #0x1 + cmp r4, r0 + blt _02062C60 +_02062C72: + mov r0, #0xb + lsl r0, r0, #0x6 + ldr r0, [r6, r0] + bl FUN_02016A18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02062C80 +FUN_02062C80: ; 0x02062C80 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, _02062D34 ; =0x000001E1 + ldr r3, [r5, #0x0] + mov r0, #0x0 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r5, #0x2c] + ldr r2, [r5, #0x0] + mov r0, #0x2 + mov r1, #0x4c + bl FUN_0200AA90 + str r0, [r5, #0x30] + ldr r1, [r5, #0x0] + mov r0, #0x4c + bl FUN_020219F4 + str r0, [r5, #0x34] + ldr r0, [r5, #0x2c] + mov r1, #0xd + bl FUN_0200A914 + str r0, [r5, #0x38] + ldr r0, [r5, #0x2c] + mov r1, #0x16 + bl FUN_0200A914 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x2c] + mov r1, #0x24 + bl FUN_0200A914 + str r0, [r5, #0x40] + ldr r0, [r5, #0x2c] + mov r1, #0xe + bl FUN_0200A914 + str r0, [r5, #0x44] + ldrb r0, [r5, #0x18] + mov r4, #0x0 + cmp r0, #0x0 + ble _02062CFE + add r6, r5, #0x0 +_02062CDA: + ldrb r1, [r5, #0x19] + ldr r0, [r5, #0x2c] + add r1, r1, r4 + bl FUN_0200A914 + str r0, [r6, #0x64] + ldrb r1, [r5, #0x19] + ldr r0, [r5, #0x2c] + add r1, #0x17 + add r1, r1, r4 + bl FUN_0200A914 + str r0, [r6, #0x7c] + ldrb r0, [r5, #0x18] + add r4, r4, #0x1 + add r6, r6, #0x4 + cmp r4, r0 + blt _02062CDA +_02062CFE: + mov r4, #0x0 + add r6, r5, #0x0 +_02062D02: + add r1, r4, #0x0 + ldr r0, [r5, #0x2c] + add r1, #0xf + bl FUN_0200A914 + str r0, [r6, #0x48] + add r4, r4, #0x1 + add r6, r6, #0x4 + cmp r4, #0x7 + blt _02062D02 + mov r4, #0x0 + add r6, r5, #0x0 +_02062D1A: + add r1, r4, #0x0 + ldr r0, [r5, #0x2c] + add r1, #0x25 + bl FUN_0200A914 + add r1, r6, #0x0 + add r1, #0x94 + add r4, r4, #0x1 + add r6, r6, #0x4 + str r0, [r1, #0x0] + cmp r4, #0x3 + blt _02062D1A + pop {r4-r6, pc} + .balign 4 +_02062D34: .word 0x000001E1 + + thumb_func_start FUN_02062D38 +FUN_02062D38: ; 0x02062D38 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r4, #0x0 + add r5, r6, #0x0 +_02062D40: + add r0, r5, #0x0 + add r0, #0x94 + ldr r0, [r0, #0x0] + bl FUN_02021A20 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x3 + blt _02062D40 + mov r5, #0x0 + add r4, r6, #0x0 +_02062D56: + ldr r0, [r4, #0x48] + bl FUN_02021A20 + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, #0x7 + blt _02062D56 + ldrb r0, [r6, #0x18] + mov r5, #0x0 + cmp r0, #0x0 + ble _02062D84 + add r4, r6, #0x0 +_02062D6E: + ldr r0, [r4, #0x64] + bl FUN_02021A20 + ldr r0, [r4, #0x7c] + bl FUN_02021A20 + ldrb r0, [r6, #0x18] + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, r0 + blt _02062D6E +_02062D84: + ldr r0, [r6, #0x44] + bl FUN_02021A20 + ldr r0, [r6, #0x40] + bl FUN_02021A20 + ldr r0, [r6, #0x3c] + bl FUN_02021A20 + ldr r0, [r6, #0x38] + bl FUN_02021A20 + ldr r0, [r6, #0x34] + bl FUN_02021A20 + ldr r0, [r6, #0x30] + bl FUN_0200AB18 + ldr r0, [r6, #0x2c] + bl FUN_0200A8B8 + pop {r4-r6, pc} + + thumb_func_start FUN_02062DB0 +FUN_02062DB0: ; 0x02062DB0 + push {r3-r4, lr} + sub sp, #0x14 + add r4, r0, #0x0 + mov r1, #0xad + ldr r3, [r4, #0x0] + mov r0, #0x1 + lsl r1, r1, #0x6 + mov r2, #0x0 + bl FUN_02017F18 + mov r2, #0x0 + str r2, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x11 + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_02018540 + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_0201AC68 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201797C + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02018884 + strh r0, [r4, #0x10] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02018884 + strh r0, [r4, #0x12] + mov r0, #0x0 + mov r1, #0x2 + bl FUN_020178BC + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_020178BC + ldrh r0, [r4, #0x1c] + ldr r2, _02062EB8 ; =0x000003E2 + mov r1, #0x3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + mov r3, #0xa + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + bl FUN_0200CD68 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _02062EBC ; =0x000003D9 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _02062EBC ; =0x000003D9 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x1 + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0x1a + ldr r2, [r4, #0x0] + mov r0, #0x0 + lsl r1, r1, #0x4 + bl FUN_02002ED0 + mov r1, #0x6 + ldr r2, [r4, #0x0] + mov r0, #0x0 + lsl r1, r1, #0x6 + bl FUN_02002EEC + mov r0, #0x13 + str r0, [sp, #0x0] + mov r0, #0x1b + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02062EC0 ; =0x0000036D + add r1, r4, #0x0 + str r0, [sp, #0x10] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + add r1, #0xe4 + mov r2, #0x3 + mov r3, #0x2 + bl FUN_02019064 + add r4, #0xe4 + add r0, r4, #0x0 + mov r1, #0xff + bl FUN_02019620 + add sp, #0x14 + pop {r3-r4, pc} + .balign 4 +_02062EB8: .word 0x000003E2 +_02062EBC: .word 0x000003D9 +_02062EC0: .word 0x0000036D + + thumb_func_start FUN_02062EC4 +FUN_02062EC4: ; 0x02062EC4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, #0xe4 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + add r0, #0xe4 + bl FUN_02019570 + add r0, r4, #0x0 + add r0, #0xe4 + bl FUN_02019178 + mov r1, #0xad + ldr r3, [r4, #0x0] + mov r0, #0x1 + lsl r1, r1, #0x6 + mov r2, #0x0 + bl FUN_02017F18 + mov r2, #0x0 + str r2, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x11 + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_02018540 + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_0201AC68 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201797C + ldrh r1, [r4, #0x10] + mov r0, #0x0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + ldrh r1, [r4, #0x12] + mov r0, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_020178BC + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_02062F3C +FUN_02062F3C: ; 0x02062F3C + push {r4-r7, lr} + sub sp, #0x24 + ldr r4, _02062FF0 ; =0x020F7BDC + add r3, sp, #0xc + add r6, r0, #0x0 + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + mov r0, #0x4d + lsl r0, r0, #0x2 + add r1, r2, #0x0 + ldr r3, [r6, #0x0] + add r0, r6, r0 + mov r2, #0x2 + bl FUN_021D959C + mov r0, #0x3 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, _02062FF4 ; =0x000034D8 + mov r2, #0x0 + str r0, [sp, #0x8] + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r6, r0 + mov r1, #0x82 + add r3, r2, #0x0 + bl FUN_021D967C + ldr r0, _02062FF4 ; =0x000034D8 + mov r1, #0x82 + str r0, [sp, #0x0] + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r6, r0 + mov r2, #0x2 + mov r3, #0x0 + bl FUN_021D96F4 + ldr r0, _02062FF4 ; =0x000034D8 + mov r1, #0x82 + str r0, [sp, #0x0] + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r6, r0 + mov r2, #0x3 + mov r3, #0x0 + bl FUN_021D9708 + mov r2, #0x1 + ldr r0, _02062FF4 ; =0x000034D8 + str r2, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r6, r0 + mov r1, #0x82 + mov r3, #0x0 + bl FUN_021D971C + ldr r4, _02062FF8 ; =0x020F7C7C + mov r7, #0x0 + add r5, r6, #0x0 +_02062FC4: + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r6, r0 + add r1, r4, #0x0 + bl FUN_021D9820 + mov r1, #0xa6 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r7, r7, #0x1 + add r4, #0x34 + add r5, r5, #0x4 + cmp r7, #0x2 + blt _02062FC4 + add r0, r1, #0x4 + ldr r0, [r6, r0] + mov r1, #0x0 + bl FUN_0200C644 + add sp, #0x24 + pop {r4-r7, pc} + nop +_02062FF0: .word 0x020F7BDC +_02062FF4: .word 0x000034D8 +_02062FF8: .word 0x020F7C7C + + thumb_func_start FUN_02062FFC +FUN_02062FFC: ; 0x02062FFC + push {r3-r7, lr} + add r7, r0, #0x0 + mov r6, #0xa6 + mov r4, #0x0 + add r5, r7, #0x0 + lsl r6, r6, #0x2 +_02063008: + ldr r0, [r5, r6] + cmp r0, #0x0 + beq _02063012 + bl FUN_0200C3DC +_02063012: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x2 + blt _02063008 + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r7, r0 + bl FUN_021D99F8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02063028 +FUN_02063028: ; 0x02063028 + push {r4-r7, lr} + sub sp, #0x1c + str r1, [sp, #0x14] + add r5, r0, #0x0 + str r2, [sp, #0x18] + ldrb r0, [r5, #0x18] + ldr r1, [r5, #0x0] + add r7, r0, #0x1 + add r0, r7, #0x0 + bl FUN_02012838 + add r1, r5, #0x0 + add r1, #0xc4 + str r0, [r1, #0x0] + mov r2, #0x1 + add r1, r5, #0x0 + str r2, [sp, #0x0] + mov r0, #0x18 + str r0, [sp, #0x4] + lsl r0, r7, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, r5, #0x0 + str r2, [sp, #0x10] + add r0, #0xd0 + ldr r0, [r0, #0x0] + add r1, #0xd4 + mov r3, #0x4 + bl FUN_02019064 + add r0, r5, #0x0 + add r0, #0xd4 + mov r1, #0xff + bl FUN_02019620 + ldrb r0, [r5, #0x18] + mov r6, #0x0 + cmp r0, #0x0 + ble _02063094 + add r4, r5, #0x0 +_0206307C: + add r0, r5, #0x0 + add r0, #0xc4 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x64] + add r2, r6, #0x0 + bl FUN_020128A0 + ldrb r0, [r5, #0x18] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, r0 + blt _0206307C +_02063094: + add r0, r5, #0x0 + add r0, #0xc4 + ldr r0, [r0, #0x0] + ldr r1, [r5, #0x38] + ldr r2, _02063160 ; =0x0000FFFF + bl FUN_020128A0 + add r1, r5, #0x0 + ldr r0, _02063164 ; =0x020F7C2C + add r1, #0xa0 + mov r2, #0x20 + blx MI_CpuCopy8 + add r1, r5, #0x0 + add r0, r5, #0x0 + add r1, #0xd4 + add r0, #0xac + str r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xc4 + ldr r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xa0 + str r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xbc + str r5, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xb0 + strh r7, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0xb7 + ldrb r1, [r0, #0x0] + mov r0, #0xf + bic r1, r0 + add r0, r5, #0x0 + add r0, #0xb7 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + ldr r1, _02063168 ; =FUN_020631C8 + add r0, #0xa4 + str r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0xa8 + str r1, [r0, #0x0] + ldr r3, [r5, #0x0] + add r0, r5, #0x0 + lsl r3, r3, #0x18 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + add r0, #0xa0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + add r1, r5, #0x0 + add r1, #0xc0 + str r0, [r1, #0x0] + add r0, r5, #0x0 + ldr r2, _0206316C ; =0x000003D9 + add r0, #0xd4 + mov r1, #0x0 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0x0 + ldr r2, _02063170 ; =0x000003E2 + add r0, #0xe4 + mov r1, #0x1 + mov r3, #0xa + bl FUN_0200D0BC + add r0, r5, #0x0 + add r0, #0xe4 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r0, _02063174 ; =0x0001020F + str r3, [sp, #0x4] + str r0, [sp, #0x8] + str r3, [sp, #0xc] + add r0, r5, #0x0 + ldr r2, [r5, #0x3c] + add r0, #0xe4 + mov r1, #0x1 + bl FUN_0201BDE0 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_0200C644 + add r5, #0xd0 + ldr r0, [r5, #0x0] + mov r1, #0x3 + bl FUN_0201AC68 + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 +_02063160: .word 0x0000FFFF +_02063164: .word 0x020F7C2C +_02063168: .word FUN_020631C8 +_0206316C: .word 0x000003D9 +_02063170: .word 0x000003E2 +_02063174: .word 0x0001020F + + thumb_func_start FUN_02063178 +FUN_02063178: ; 0x02063178 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0xc0 + add r1, r4, #0x0 + add r2, r4, #0x0 + ldr r0, [r0, #0x0] + add r1, #0x22 + add r2, #0x24 + bl FUN_02001300 + add r0, r4, #0x0 + add r0, #0xc4 + ldr r0, [r0, #0x0] + bl FUN_02012870 + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_02019570 + add r0, r4, #0x0 + add r0, #0xd4 + mov r1, #0x0 + bl FUN_0200CCF8 + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_02019178 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200C644 + add r4, #0xd0 + ldr r0, [r4, #0x0] + mov r1, #0x3 + bl FUN_0201AC68 + pop {r4, pc} + + thumb_func_start FUN_020631C8 +FUN_020631C8: ; 0x020631C8 + push {r3-r5, lr} + mov r1, #0x13 + add r5, r0, #0x0 + bl FUN_02001470 + add r1, sp, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_02001448 + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_02001470 + add r2, sp, #0x0 + ldrh r3, [r2, #0x0] + ldrh r2, [r2, #0x2] + mov r0, #0xa6 + lsl r0, r0, #0x2 + add r2, r3, r2 + lsl r2, r2, #0x4 + add r2, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, r0] + mov r1, #0x7e + asr r2, r2, #0x10 + bl FUN_0200C714 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02063208 +FUN_02063208: ; 0x02063208 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, #0xe4 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r0, _02063234 ; =0x0001020F + str r3, [sp, #0x4] + str r0, [sp, #0x8] + add r0, r4, #0x0 + str r3, [sp, #0xc] + add r4, #0x94 + ldr r2, [r4, #0x0] + add r0, #0xe4 + mov r1, #0x1 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r4, pc} + .balign 4 +_02063234: .word 0x0001020F + + thumb_func_start FUN_02063238 +FUN_02063238: ; 0x02063238 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02063208 + ldrh r2, [r4, #0x28] + mov r0, #0xa6 + lsl r0, r0, #0x2 + lsl r2, r2, #0x4 + add r2, #0x10 + lsl r2, r2, #0x10 + ldr r0, [r4, r0] + mov r1, #0x7e + asr r2, r2, #0x10 + bl FUN_0200C714 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200C644 + pop {r4, pc} + + thumb_func_start FUN_02063264 +FUN_02063264: ; 0x02063264 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, #0xe4 + mov r1, #0xff + bl FUN_02019620 + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r0, _020632A0 ; =0x0001020F + str r3, [sp, #0x4] + str r0, [sp, #0x8] + str r3, [sp, #0xc] + ldrb r2, [r4, #0x1f] + add r0, r4, #0x0 + add r0, #0xe4 + lsl r2, r2, #0x2 + add r2, r4, r2 + ldr r2, [r2, #0x7c] + mov r1, #0x1 + bl FUN_0201BDE0 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200C644 + add sp, #0x10 + pop {r4, pc} + .balign 4 +_020632A0: .word 0x0001020F + + thumb_func_start FUN_020632A4 +FUN_020632A4: ; 0x020632A4 + push {r4-r7, lr} + sub sp, #0x34 + str r1, [sp, #0x10] + mov r1, #0xb + add r4, r0, #0x0 + lsl r1, r1, #0x6 + ldr r1, [r4, r1] + ldrb r0, [r4, #0x1f] + str r1, [sp, #0x24] + mov r1, #0x3c + mul r1, r0 + str r1, [sp, #0x28] + ldrb r1, [r4, #0x16] + lsl r0, r0, #0x3 + lsl r2, r1, #0x2 + ldr r1, _02063428 ; =0x020F7BD0 + ldr r1, [r1, r2] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r4, #0x0 + add r0, #0xd4 + mov r1, #0xff + bl FUN_02019620 + mov r0, #0x1 + str r0, [sp, #0x1c] + mov r0, #0x0 + add r1, r0, #0x0 + str r1, [sp, #0x20] + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x28] + str r0, [sp, #0x18] + ldr r1, [r2, r1] + cmp r1, #0x0 + ble _020633EA + ldr r1, [sp, #0x28] + add r7, r2, r1 + add r1, r0, #0x0 + str r1, [sp, #0x30] + add r1, r4, #0x0 + str r1, [sp, #0x2c] + add r1, #0xd4 + str r1, [sp, #0x2c] +_020632FA: + ldrh r1, [r7, #0x8] + cmp r1, #0x0 + beq _020633D6 + ldr r1, [r7, #0x4] + ldr r5, [r1, #0x4] + ldr r1, [sp, #0x14] + ldr r1, [r1, #0x0] + cmp r5, r1 + bls _0206330E + add r5, r1, #0x0 +_0206330E: + cmp r5, r0 + bge _02063318 + ldr r0, [sp, #0x1c] + add r0, r0, #0x1 + str r0, [sp, #0x1c] +_02063318: + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r4, #0x30] + ldr r2, [sp, #0x1c] + mov r1, #0x0 + mov r3, #0x1 + bl FUN_0200AD38 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + ldr r2, [r7, #0x4] + ldr r0, [r4, #0x30] + ldr r2, [r2, #0x8] + mov r1, #0x1 + mov r3, #0x2 + bl FUN_0200ABB4 + ldr r0, [r4, #0x30] + ldr r1, [r4, #0x34] + ldr r2, [r4, #0x44] + bl FUN_0200B7B8 + ldr r0, [sp, #0x30] + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0206342C ; =0x0001020F + mov r3, #0x8 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x2c] + ldr r2, [r4, #0x34] + bl FUN_0201BDE0 + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r3, [sp, #0x14] + ldr r0, [r4, #0x30] + ldrh r3, [r3, #0x4] + mov r1, #0x0 + add r2, r5, #0x0 + bl FUN_0200AD38 + ldr r2, [sp, #0x14] + ldr r0, [r4, #0x30] + ldrh r2, [r2, #0x6] + ldr r1, [r4, #0x34] + lsl r2, r2, #0x2 + add r2, r4, r2 + ldr r2, [r2, #0xc] + bl FUN_0200B7B8 + mov r0, #0x0 + ldr r1, [r4, #0x34] + add r2, r0, #0x0 + bl FUN_02002E14 + mov r12, r0 + ldr r0, [sp, #0x30] + mov r3, #0xb8 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0206342C ; =0x0001020F + mov r6, r12 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x2c] + ldr r2, [r4, #0x34] + mov r1, #0x0 + sub r3, r3, r6 + bl FUN_0201BDE0 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x20] + add r2, r4, r0 + mov r0, #0xb2 + lsl r0, r0, #0x2 + strb r1, [r2, r0] + ldr r1, [sp, #0x30] + add r0, r5, #0x0 + add r1, #0x10 + str r1, [sp, #0x30] + ldr r1, [sp, #0x18] + add r1, r1, #0x1 + str r1, [sp, #0x18] + cmp r1, #0x6 + bge _020633EA +_020633D6: + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + add r1, r1, #0x1 + str r1, [sp, #0x20] + ldr r1, [sp, #0x28] + add r7, #0x8 + ldr r2, [r2, r1] + ldr r1, [sp, #0x20] + cmp r1, r2 + blt _020632FA +_020633EA: + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_020191D0 + add r1, r4, #0x0 + ldr r0, [sp, #0x18] + add r1, #0x21 + strb r0, [r1, #0x0] + ldrh r1, [r4, #0x28] + cmp r1, #0x0 + beq _0206340E + add r0, r4, #0x0 + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r1, r0 + blt _0206340E + sub r0, r1, #0x1 + strh r0, [r4, #0x28] +_0206340E: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _0206341E + add r0, r4, #0x0 + bl FUN_02063238 + add sp, #0x34 + pop {r4-r7, pc} +_0206341E: + add r0, r4, #0x0 + bl FUN_02063264 + add sp, #0x34 + pop {r4-r7, pc} + .balign 4 +_02063428: .word 0x020F7BD0 +_0206342C: .word 0x0001020F + + thumb_func_start FUN_02063430 +FUN_02063430: ; 0x02063430 + push {r3-r4, lr} + sub sp, #0x14 + mov r2, #0x1 + add r4, r0, #0x0 + str r2, [sp, #0x0] + mov r0, #0x18 + str r0, [sp, #0x4] + mov r0, #0xc + str r0, [sp, #0x8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r4, #0x0 + str r2, [sp, #0x10] + add r0, #0xd0 + ldr r0, [r0, #0x0] + add r1, #0xd4 + mov r3, #0x4 + bl FUN_02019064 + add r0, r4, #0x0 + ldr r2, _020634D0 ; =0x000003D9 + add r0, #0xd4 + mov r1, #0x1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020632A4 + mov r0, #0xa7 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200C644 + mov r0, #0xe + str r0, [sp, #0x0] + mov r3, #0x8 + add r1, r4, #0x0 + str r3, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _020634D4 ; =0x00000345 + add r1, #0xf4 + str r0, [sp, #0x10] + add r0, r4, #0x0 + add r0, #0xd0 + ldr r0, [r0, #0x0] + mov r2, #0x3 + bl FUN_02019064 + add r0, r4, #0x0 + add r0, #0xf4 + mov r1, #0x0 + bl FUN_02019620 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, _020634D8 ; =0x00010200 + str r1, [sp, #0x4] + str r0, [sp, #0x8] + str r1, [sp, #0xc] + add r0, r4, #0x0 + ldr r2, [r4, #0x40] + add r0, #0xf4 + add r3, r1, #0x0 + bl FUN_0201BDE0 + add r4, #0xd0 + ldr r0, [r4, #0x0] + mov r1, #0x3 + bl FUN_0201AC68 + add sp, #0x14 + pop {r3-r4, pc} + nop +_020634D0: .word 0x000003D9 +_020634D4: .word 0x00000345 +_020634D8: .word 0x00010200 + + thumb_func_start FUN_020634DC +FUN_020634DC: ; 0x020634DC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0xd4 + bl FUN_02019570 + add r0, r4, #0x0 + add r0, #0xd4 + mov r1, #0x0 + bl FUN_0200CCF8 + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_02019178 + add r0, r4, #0x0 + add r0, #0xf4 + bl FUN_02019570 + add r0, r4, #0x0 + add r0, #0xf4 + bl FUN_02019178 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200C644 + mov r0, #0xa7 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200C644 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063524 +FUN_02063524: ; 0x02063524 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r2, [r4, #0x0] + ldr r1, [r4, #0x8] + cmp r2, #0xc + bls _02063540 + b _02063646 +_02063540: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206354C: ; jump table (using 16-bit offset) + .short _02063566 - _0206354C - 2; case 0 + .short _02063572 - _0206354C - 2; case 1 + .short _0206357E - _0206354C - 2; case 2 + .short _02063594 - _0206354C - 2; case 3 + .short _020635AA - _0206354C - 2; case 4 + .short _020635C0 - _0206354C - 2; case 5 + .short _020635D6 - _0206354C - 2; case 6 + .short _020635EC - _0206354C - 2; case 7 + .short _02063602 - _0206354C - 2; case 8 + .short _02063618 - _0206354C - 2; case 9 + .short _0206362C - _0206354C - 2; case 10 + .short _02063636 - _0206354C - 2; case 11 + .short _0206363E - _0206354C - 2; case 12 +_02063566: + ldrh r2, [r4, #0x4] + add r1, r5, #0x0 + bl FUN_020625EC + str r0, [r4, #0x0] + b _02063646 +_02063572: + add r0, r1, #0x0 + ldr r1, [r5, #0xc] + bl FUN_02062720 + str r0, [r4, #0x0] + b _02063646 +_0206357E: + add r0, r1, #0x0 + bl FUN_02062760 + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_02063594: + add r0, r1, #0x0 + bl FUN_02062770 + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_020635AA: + add r0, r1, #0x0 + bl FUN_020627D0 + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_020635C0: + add r0, r1, #0x0 + bl FUN_020627DC + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_020635D6: + add r0, r1, #0x0 + bl FUN_02062808 + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_020635EC: + add r0, r1, #0x0 + bl FUN_020628E8 + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_02063602: + add r0, r1, #0x0 + bl FUN_020629D8 + str r0, [r4, #0x0] + mov r0, #0x4d + ldr r1, [r4, #0x8] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + bl FUN_0201FDEC + b _02063646 +_02063618: + ldr r0, _0206364C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + bne _02063626 + mov r0, #0x0 + pop {r3-r5, pc} +_02063626: + mov r0, #0xa + str r0, [r4, #0x0] + b _02063646 +_0206362C: + add r0, r1, #0x0 + bl FUN_02062740 + str r0, [r4, #0x0] + b _02063646 +_02063636: + bl FUN_02062678 + str r0, [r4, #0x0] + b _02063646 +_0206363E: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_02063646: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_0206364C: .word 0x021C48B8 + + thumb_func_start FUN_02063650 +FUN_02063650: ; 0x02063650 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0xc + bl FUN_02016998 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + strh r5, [r2, #0x4] + str r0, [r2, #0x8] + ldr r0, [r4, #0x10] + ldr r1, _02063678 ; =FUN_02063524 + bl FUN_0204640C + pop {r3-r5, pc} + nop +_02063678: .word FUN_02063524 + + thumb_func_start FUN_0206367C +FUN_0206367C: ; 0x0206367C + add r0, #0xb4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02063684 +FUN_02063684: ; 0x02063684 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02063818 + ldr r0, [r5, #0xc] + bl FUN_020462AC + mov r1, #0x0 + bl FUN_0205F264 + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + bl FUN_02034F88 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + mov r1, #0x0 + bl FUN_0202AB68 + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0x74 + strh r1, [r0, #0x0] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x0 + bne _020636DA + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + ldr r1, [r5, #0x1c] + add r4, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_02060478 + add r0, r4, #0x0 + bl FUN_020603F0 +_020636DA: + pop {r3-r5, pc} + + thumb_func_start FUN_020636DC +FUN_020636DC: ; 0x020636DC + push {r3-r5, lr} + add r5, r0, #0x0 + add r1, r5, #0x0 + add r1, #0xb4 + ldr r1, [r1, #0x0] + cmp r1, #0x1 + beq _020637A6 + bl FUN_02063818 + cmp r0, #0x0 + bne _020636F8 + add r0, r5, #0x0 + bl FUN_0206384C +_020636F8: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F254 + ldr r0, [r5, #0xc] + bl FUN_020462AC + mov r1, #0x0 + bl FUN_0205F264 + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + ldr r1, [r1, #0x0] + bl FUN_02034F88 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + mov r1, #0x0 + bl FUN_0202AB68 + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0x74 + strh r1, [r0, #0x0] + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + ldr r1, [r5, #0x1c] + ldr r1, [r1, #0x0] + bl FUN_02060478 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034930 + cmp r0, #0x0 + bne _02063758 + ldr r0, [r5, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + bl FUN_0205F284 + add r0, r4, #0x0 + bl FUN_0205F2B4 +_02063758: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E20 + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _0206377C + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_020348B4 + cmp r0, #0x0 + bne _0206377C + mov r0, #0x0 + str r0, [r4, #0x4] + b _02063786 +_0206377C: + ldr r0, [r4, #0x4] + cmp r0, #0x2 + bne _02063786 + mov r0, #0x0 + str r0, [r4, #0x4] +_02063786: + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034908 + cmp r0, #0x0 + beq _020637A6 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034E0C + ldr r2, [r5, #0x1c] + ldr r1, [r2, #0x8] + ldr r2, [r2, #0xc] + bl FUN_0204AE04 +_020637A6: + pop {r3-r5, pc} + + thumb_func_start FUN_020637A8 +FUN_020637A8: ; 0x020637A8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F204 + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_020603C8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020637C4 +FUN_020637C4: ; 0x020637C4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F204 + ldr r0, [r4, #0xc] + bl FUN_0202A9B0 + bl FUN_020603C8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020637E0 +FUN_020637E0: ; 0x020637E0 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F204 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020637F0 +FUN_020637F0: ; 0x020637F0 + push {r4, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r4, r0, #0x0 + bl FUN_0205ED2C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0205F358 + pop {r4, pc} + + thumb_func_start FUN_02063808 +FUN_02063808: ; 0x02063808 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + bl FUN_020603C8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02063818 +FUN_02063818: ; 0x02063818 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034F1C + add r1, r0, #0x0 + beq _02063846 + add r0, r4, #0x0 + bl FUN_02034FC0 + cmp r0, #0x0 + bne _02063846 + add r0, r4, #0x0 + ldr r1, [r4, #0x1c] + add r0, #0x98 + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + mov r2, #0x20 + bl FUN_020299C0 + mov r0, #0x1 + pop {r4, pc} +_02063846: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206384C +FUN_0206384C: ; 0x0206384C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DC8 + ldr r1, [r5, #0x1c] + ldr r6, [r0, #0x0] + ldr r4, [r1, #0x0] + cmp r6, r4 + beq _02063882 + ldr r0, [r5, #0xc] + bl FUN_020238F4 + mov r1, #0x20 + add r5, #0x98 + str r1, [sp, #0x0] + ldr r1, [r5, #0x0] + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_02029880 + add sp, #0x4 + mov r0, #0x1 + pop {r3-r6, pc} +_02063882: + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + + thumb_func_start FUN_02063888 +FUN_02063888: ; 0x02063888 + push {r4-r6, lr} + add r5, r1, #0x0 + mov r1, #0x18 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020169D8 + add r3, r0, #0x0 + mov r2, #0x18 + mov r1, #0x0 +_0206389C: + strb r1, [r3, #0x0] + add r3, r3, #0x1 + sub r2, r2, #0x1 + bne _0206389C + str r5, [r0, #0x0] + str r4, [r0, #0x10] + strh r6, [r0, #0x8] + add r2, sp, #0x0 + mov r1, #0x10 + ldrsh r1, [r2, r1] + strh r1, [r0, #0xa] + mov r1, #0x14 + ldrsh r1, [r2, r1] + strh r1, [r0, #0xc] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020638BC +FUN_020638BC: ; 0x020638BC + push {r3-r6, lr} + sub sp, #0x1c + add r5, r0, #0x0 + bl FUN_02046528 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020638DA + cmp r0, #0x1 + beq _020638F8 + b _02063942 +_020638DA: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x38] + bl FUN_020553E8 + add r3, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r2, [r4, #0x10] + mov r1, #0x1 + bl FUN_0224666C + str r0, [r4, #0x14] + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02063942 +_020638F8: + ldr r0, [r4, #0x14] + bl FUN_022466A0 + cmp r0, #0x0 + beq _02063942 + ldr r0, [r4, #0x14] + bl FUN_022466AC + mov r1, #0xa + mov r2, #0xc + ldrh r0, [r4, #0x8] + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + bl FUN_02034F40 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + bne _02063920 + bl ErrorHandling +_02063920: + add r0, r6, #0x0 + add r1, sp, #0x8 + bl FUN_02034E90 + ldr r0, [sp, #0x14] + mov r2, #0x1 + str r0, [sp, #0x0] + str r2, [sp, #0x4] + ldr r1, [sp, #0x8] + ldr r3, [sp, #0x10] + add r0, r5, #0x0 + sub r2, r2, #0x2 + bl FUN_020492BC + add r0, r4, #0x0 + bl FUN_02016A18 +_02063942: + mov r0, #0x0 + add sp, #0x1c + pop {r3-r6, pc} + + thumb_func_start FUN_02063948 +FUN_02063948: ; 0x02063948 + cmp r0, #0x0 + bne _02063954 + ldr r0, _0206395C ; =0x020F7CE4 + lsl r1, r1, #0x3 + ldr r0, [r0, r1] + bx lr +_02063954: + ldr r0, _02063960 ; =0x020F7CE8 + lsl r1, r1, #0x3 + ldr r0, [r0, r1] + bx lr + .balign 4 +_0206395C: .word 0x020F7CE4 +_02063960: .word 0x020F7CE8 + + thumb_func_start FUN_02063964 +FUN_02063964: ; 0x02063964 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + str r5, [r4, #0x4] + ldr r1, [r5, #0x1c] + ldr r1, [r1, #0x0] + str r1, [r4, #0x0] + mov r1, #0x0 + strh r1, [r4, #0xc] + add r1, sp, #0x8 + bl FUN_02037024 + ldr r0, [sp, #0x8] + str r0, [r4, #0x8] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020639B6 + bl FUN_02058458 + cmp r0, #0x54 + beq _0206399A + cmp r0, #0x55 + beq _020639A4 + cmp r0, #0x56 + beq _020639AE + b _020639B6 +_0206399A: + ldrh r1, [r4, #0xc] + mov r0, #0x8 + orr r0, r1 + strh r0, [r4, #0xc] + b _020639B6 +_020639A4: + ldrh r1, [r4, #0xc] + mov r0, #0x20 + orr r0, r1 + strh r0, [r4, #0xc] + b _020639B6 +_020639AE: + ldrh r1, [r4, #0xc] + mov r0, #0x1 + orr r0, r1 + strh r0, [r4, #0xc] +_020639B6: + ldr r0, [r5, #0x38] + bl FUN_02055320 + str r0, [sp, #0x4] + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0x0 + ldr r1, [sp, #0x4] + str r2, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0204A6E0 + add r7, r0, #0x0 + ldr r0, [r5, #0x38] + add r1, sp, #0x4 + add r2, sp, #0x0 + bl FUN_020572B8 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_0204A6E0 + add r6, r0, #0x0 + ldr r0, [r5, #0x38] + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_021E643C + cmp r0, #0x0 + beq _020639FE + ldrh r1, [r4, #0xc] + mov r0, #0x4 + orr r0, r1 + strh r0, [r4, #0xc] +_020639FE: + ldr r0, [r5, #0x38] + bl FUN_020552F8 + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_021E69BC + cmp r0, #0x0 + beq _02063A18 + ldrh r1, [r4, #0xc] + mov r0, #0x80 + orr r0, r1 + strh r0, [r4, #0xc] +_02063A18: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + bl FUN_02054A48 + cmp r0, #0x0 + beq _02063A2C + ldrh r1, [r4, #0xc] + mov r0, #0x40 + orr r0, r1 + strh r0, [r4, #0xc] +_02063A2C: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + cmp r0, #0xe + beq _02063A42 + cmp r0, #0x10 + beq _02063A4E + add sp, #0xc + pop {r4-r7, pc} +_02063A42: + ldrh r1, [r4, #0xc] + mov r0, #0x10 + add sp, #0xc + orr r0, r1 + strh r0, [r4, #0xc] + pop {r4-r7, pc} +_02063A4E: + ldrh r1, [r4, #0xc] + mov r0, #0x1 + lsl r0, r0, #0x8 + orr r0, r1 + strh r0, [r4, #0xc] + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02063A5C +FUN_02063A5C: ; 0x02063A5C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x20 + mov r1, #0x10 + bl FUN_02016998 + ldr r1, _02063A7C ; =0x19740205 + str r1, [r0, #0x0] + ldr r1, [r4, #0x8] + str r1, [r0, #0x4] + ldr r2, [r5, #0x0] + ldr r1, [r5, #0x4] + str r2, [r0, #0x8] + str r1, [r0, #0xc] + pop {r3-r5, pc} + .balign 4 +_02063A7C: .word 0x19740205 + + thumb_func_start FUN_02063A80 +FUN_02063A80: ; 0x02063A80 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + ldr r0, _02063A98 ; =0x19740205 + cmp r1, r0 + beq _02063A90 + bl ErrorHandling +_02063A90: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 +_02063A98: .word 0x19740205 + + thumb_func_start FUN_02063A9C +FUN_02063A9C: ; 0x02063A9C + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063AAE + mov r0, #0x1 + pop {r4, pc} +_02063AAE: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x1 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063AC2 + mov r0, #0x2 + pop {r4, pc} +_02063AC2: + ldrh r1, [r4, #0xc] + mov r0, #0x1 + tst r1, r0 + beq _02063ACC + mov r0, #0x0 +_02063ACC: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063AD0 +FUN_02063AD0: ; 0x02063AD0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063B00 ; =FUN_02063B04 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063B00: .word FUN_02063B04 + + thumb_func_start FUN_02063B04 +FUN_02063B04: ; 0x02063B04 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02063B3C ; =0x00002718 + ldr r2, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02063B3C: .word 0x00002718 + + thumb_func_start FUN_02063B40 +FUN_02063B40: ; 0x02063B40 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063B52 + mov r0, #0x1 + pop {r4, pc} +_02063B52: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x2 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063B66 + mov r0, #0x2 + pop {r4, pc} +_02063B66: + ldr r0, [r4, #0x0] + bl FUN_02034898 + cmp r0, #0x0 + bne _02063B74 + mov r0, #0x1 + pop {r4, pc} +_02063B74: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _02063B88 + mov r0, #0x3 + pop {r4, pc} +_02063B88: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + beq _02063BA8 + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _02063BAC +_02063BA8: + mov r0, #0x1 + b _02063BAE +_02063BAC: + mov r0, #0x0 +_02063BAE: + cmp r0, #0x1 + bne _02063BB6 + mov r0, #0x1 + pop {r4, pc} +_02063BB6: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063BBC +FUN_02063BBC: ; 0x02063BBC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x4 + bl FUN_02016998 + ldrh r1, [r5, #0x4] + str r1, [r0, #0x0] + mov r1, #0x7f + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0xb + sub r1, #0xbc + bl FUN_02016998 + mov r1, #0x7e + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, r6, #0x0 + mov r2, #0x1 + bl FUN_0205F7A0 + mov r1, #0x7e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r6, #0x0 + bl FUN_02037E90 + ldr r1, _02063C10 ; =FUN_02036AB8 + add r0, r4, #0x0 + bl FUN_02035D04 + pop {r4-r6, pc} + .balign 4 +_02063C10: .word FUN_02036AB8 + + thumb_func_start FUN_02063C14 +FUN_02063C14: ; 0x02063C14 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063C26 + mov r0, #0x1 + pop {r4, pc} +_02063C26: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x4 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063C3A + mov r0, #0x2 + pop {r4, pc} +_02063C3A: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x38] + bl FUN_020553C4 + cmp r0, #0x2 + bne _02063C4A + mov r0, #0x4 + pop {r4, pc} +_02063C4A: + ldrh r1, [r4, #0xc] + mov r0, #0x4 + tst r0, r1 + bne _02063C56 + mov r0, #0x1 + pop {r4, pc} +_02063C56: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _02063C6A + mov r0, #0x3 + pop {r4, pc} +_02063C6A: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063C70 +FUN_02063C70: ; 0x02063C70 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063CA0 ; =FUN_02063CA4 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063CA0: .word FUN_02063CA4 + + thumb_func_start FUN_02063CA4 +FUN_02063CA4: ; 0x02063CA4 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02063CDC ; =0x0000271C + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02063CDC: .word 0x0000271C + + thumb_func_start FUN_02063CE0 +FUN_02063CE0: ; 0x02063CE0 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063CF2 + mov r0, #0x1 + pop {r4, pc} +_02063CF2: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x5 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063D06 + mov r0, #0x2 + pop {r4, pc} +_02063D06: + ldrh r1, [r4, #0xc] + mov r0, #0x8 + tst r0, r1 + beq _02063D12 + mov r0, #0x0 + pop {r4, pc} +_02063D12: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063D18 +FUN_02063D18: ; 0x02063D18 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063D48 ; =FUN_02063D4C + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063D48: .word FUN_02063D4C + + thumb_func_start FUN_02063D4C +FUN_02063D4C: ; 0x02063D4C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02063D84 ; =0x0000271A + ldr r2, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02063D84: .word 0x0000271A + + thumb_func_start FUN_02063D88 +FUN_02063D88: ; 0x02063D88 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063D9A + mov r0, #0x1 + pop {r4, pc} +_02063D9A: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x3 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063DAE + mov r0, #0x2 + pop {r4, pc} +_02063DAE: + ldrh r1, [r4, #0xc] + mov r0, #0x10 + tst r0, r1 + beq _02063DBA + mov r0, #0x0 + pop {r4, pc} +_02063DBA: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063DC0 +FUN_02063DC0: ; 0x02063DC0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063DF0 ; =FUN_02063DF4 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063DF0: .word FUN_02063DF4 + + thumb_func_start FUN_02063DF4 +FUN_02063DF4: ; 0x02063DF4 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02063E2C ; =0x0000271E + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02063E2C: .word 0x0000271E + + thumb_func_start FUN_02063E30 +FUN_02063E30: ; 0x02063E30 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063E42 + mov r0, #0x1 + pop {r4, pc} +_02063E42: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x0 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063E56 + mov r0, #0x2 + pop {r4, pc} +_02063E56: + ldrh r1, [r4, #0xc] + mov r0, #0x20 + tst r0, r1 + beq _02063E62 + mov r0, #0x0 + pop {r4, pc} +_02063E62: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063E68 +FUN_02063E68: ; 0x02063E68 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063E98 ; =FUN_02063E9C + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063E98: .word FUN_02063E9C + + thumb_func_start FUN_02063E9C +FUN_02063E9C: ; 0x02063E9C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02063ED4 ; =0x00002719 + ldr r2, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02063ED4: .word 0x00002719 + + thumb_func_start FUN_02063ED8 +FUN_02063ED8: ; 0x02063ED8 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063EEA + mov r0, #0x1 + pop {r4, pc} +_02063EEA: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x7 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063EFE + mov r0, #0x2 + pop {r4, pc} +_02063EFE: + ldrh r1, [r4, #0xc] + mov r0, #0x40 + tst r0, r1 + beq _02063F0A + mov r0, #0x0 + pop {r4, pc} +_02063F0A: + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063F10 +FUN_02063F10: ; 0x02063F10 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063F40 ; =FUN_02063F44 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063F40: .word FUN_02063F44 + + thumb_func_start FUN_02063F44 +FUN_02063F44: ; 0x02063F44 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02063F7C ; =0x0000271D + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02063F7C: .word 0x0000271D + + thumb_func_start FUN_02063F80 +FUN_02063F80: ; 0x02063F80 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02063F92 + mov r0, #0x1 + pop {r4, pc} +_02063F92: + ldr r0, [r1, #0xc] + bl FUN_020238F4 + mov r1, #0x6 + bl FUN_020239D0 + cmp r0, #0x0 + bne _02063FA6 + mov r0, #0x2 + pop {r4, pc} +_02063FA6: + ldrh r1, [r4, #0xc] + mov r0, #0x80 + tst r0, r1 + bne _02063FB2 + mov r0, #0x1 + pop {r4, pc} +_02063FB2: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _02063FC6 + mov r0, #0x3 + pop {r4, pc} +_02063FC6: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02063FCC +FUN_02063FCC: ; 0x02063FCC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _02063FFC ; =FUN_02064000 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_02063FFC: .word FUN_02064000 + + thumb_func_start FUN_02064000 +FUN_02064000: ; 0x02064000 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02064038 ; =0x0000271B + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02064038: .word 0x0000271B + + thumb_func_start FUN_0206403C +FUN_0206403C: ; 0x0206403C + ldr r1, [r0, #0x4] + ldr r1, [r1, #0x6c] + sub r1, r1, #0x2 + cmp r1, #0x1 + bhi _0206404A + mov r0, #0x1 + bx lr +_0206404A: + ldrh r1, [r0, #0xc] + mov r0, #0x1 + lsl r0, r0, #0x8 + tst r0, r1 + beq _02064058 + mov r0, #0x0 + bx lr +_02064058: + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0206405C +FUN_0206405C: ; 0x0206405C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + ldr r0, [r6, #0x4] + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0206408C ; =FUN_02064090 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + .balign 4 +_0206408C: .word FUN_02064090 + + thumb_func_start FUN_02064090 +FUN_02064090: ; 0x02064090 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _020640C8 ; =0x0000271F + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_020640C8: .word 0x0000271F + + thumb_func_start FUN_020640CC +FUN_020640CC: ; 0x020640CC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _020640DE + mov r0, #0x1 + pop {r4, pc} +_020640DE: + ldr r0, [r4, #0x0] + bl FUN_020348E4 + cmp r0, #0x0 + bne _020640EC + mov r0, #0x1 + pop {r4, pc} +_020640EC: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _02064100 + mov r0, #0x3 + pop {r4, pc} +_02064100: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + cmp r0, #0x1 + beq _02064120 + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _02064124 +_02064120: + mov r0, #0x1 + b _02064126 +_02064124: + mov r0, #0x0 +_02064126: + cmp r0, #0x1 + bne _0206412E + mov r0, #0x1 + pop {r4, pc} +_0206412E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02064134 +FUN_02064134: ; 0x02064134 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204649C + ldrh r1, [r5, #0x4] + ldr r2, [r6, #0xc] + mov r0, #0xb + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0206439C + mov r1, #0x72 + ldr r2, _02064170 ; =FUN_02064174 + lsl r1, r1, #0x2 + str r2, [r4, r1] + add r1, #0x30 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + nop +_02064170: .word FUN_02064174 + + thumb_func_start FUN_02064174 +FUN_02064174: ; 0x02064174 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + add r0, r6, #0x0 + mov r2, #0x4 + bl FUN_0224CB30 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r1, _020641A8 ; =0x0224CB55 + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_020463EC + mov r0, #0x0 + pop {r4-r6, pc} + nop +_020641A8: .word 0x0224CB55 + + thumb_func_start FUN_020641AC +FUN_020641AC: ; 0x020641AC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _020641BE + mov r0, #0x1 + pop {r4, pc} +_020641BE: + ldr r0, [r4, #0x0] + bl FUN_02034930 + cmp r0, #0x1 + bne _020641D2 + ldr r0, [r4, #0x0] + bl FUN_0203487C + cmp r0, #0x1 + beq _020641D6 +_020641D2: + mov r0, #0x1 + pop {r4, pc} +_020641D6: + ldr r0, [r4, #0x4] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0x1 + bne _020641EA + mov r0, #0x3 + pop {r4, pc} +_020641EA: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020641F0 +FUN_020641F0: ; 0x020641F0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204649C + ldrh r1, [r5, #0x4] + ldr r2, [r6, #0xc] + mov r0, #0xb + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0206439C + mov r1, #0x72 + ldr r2, _0206422C ; =FUN_02064230 + lsl r1, r1, #0x2 + str r2, [r4, r1] + add r1, #0x30 + str r0, [r4, r1] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r4-r6, pc} + nop +_0206422C: .word FUN_02064230 + + thumb_func_start FUN_02064230 +FUN_02064230: ; 0x02064230 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + ldr r1, [r6, #0x0] + add r0, r4, #0x0 + mov r2, #0xb + bl FUN_0224CA88 + ldr r1, [r4, #0x1c] + add r7, r0, #0x0 + ldr r1, [r1, #0x0] + mov r0, #0xa + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0x4 + bl FUN_0202914C + add r4, #0x98 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x1 + bl FUN_02028AD4 + add r0, r6, #0x0 + bl FUN_02016A18 + ldr r1, _02064280 ; =0x0224CAAD + add r0, r5, #0x0 + add r2, r7, #0x0 + bl FUN_020463EC + mov r0, #0x0 + pop {r3-r7, pc} + nop +_02064280: .word 0x0224CAAD + + thumb_func_start FUN_02064284 +FUN_02064284: ; 0x02064284 + push {r3, lr} + ldr r1, [r0, #0x4] + ldr r0, [r1, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _02064294 + mov r0, #0x1 + pop {r3, pc} +_02064294: + ldr r0, [r1, #0xc] + bl FUN_020462AC + bl FUN_0205F244 + cmp r0, #0x1 + bne _020642A6 + mov r0, #0x1 + b _020642A8 +_020642A6: + mov r0, #0x0 +_020642A8: + cmp r0, #0x1 + bne _020642B0 + mov r0, #0x1 + pop {r3, pc} +_020642B0: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_020642B4 +FUN_020642B4: ; 0x020642B4 + push {r4-r6, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_02046528 + add r5, r0, #0x0 + ldr r0, [r6, #0x0] + bl FUN_0204652C + ldrh r1, [r6, #0x4] + add r4, r0, #0x0 + ldr r2, [r5, #0xc] + lsl r1, r1, #0x18 + mov r0, #0xb + lsr r1, r1, #0x18 + bl FUN_0206439C + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0206430C ; =0x021F6361 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r6, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + ldr r1, [r5, #0x1c] + mov r0, #0xb + ldr r1, [r1, #0x0] + add r2, r0, #0x0 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202914C + add r5, #0x98 + add r1, r0, #0x0 + ldr r0, [r5, #0x0] + mov r2, #0x1 + bl FUN_02028AD4 + pop {r4-r6, pc} + .balign 4 +_0206430C: .word 0x021F6361 + + thumb_func_start FUN_02064310 +FUN_02064310: ; 0x02064310 + ldr r0, [r0, #0x4] + ldr r0, [r0, #0x6c] + sub r0, r0, #0x2 + cmp r0, #0x1 + bhi _0206431E + mov r0, #0x1 + bx lr +_0206431E: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02064324 +FUN_02064324: ; 0x02064324 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r6, r1, #0x0 + bl FUN_02046528 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02063A5C + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0204649C + mov r0, #0x72 + ldr r1, _0206435C ; =FUN_02064360 + lsl r0, r0, #0x2 + str r1, [r4, r0] + add r0, #0x30 + str r5, [r4, r0] + mov r0, #0xa + strh r0, [r4, #0x2a] + pop {r3-r7, pc} + .balign 4 +_0206435C: .word FUN_02064360 + + thumb_func_start FUN_02064360 +FUN_02064360: ; 0x02064360 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r1, _02064398 ; =0x000022C4 + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_02038D10 + mov r2, #0x0 + str r2, [sp, #0x0] + ldrh r1, [r4, #0xc] + add r0, r6, #0x0 + add r3, r2, #0x0 + bl FUN_020395BC + add r0, r4, #0x0 + bl FUN_02063A80 + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02064398: .word 0x000022C4 + + thumb_func_start FUN_0206439C +FUN_0206439C: ; 0x0206439C + push {r4-r6, lr} + add r5, r1, #0x0 + add r6, r2, #0x0 + mov r1, #0x8 + bl FUN_020169D8 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0206BB1C + add r1, r5, #0x0 + bl FUN_0206B9B0 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020643C0 +FUN_020643C0: ; 0x020643C0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + bl FUN_020645DC + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0206460C + str r0, [r4, #0xc] + str r6, [r4, #0x0] + str r5, [r4, #0x8] + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020643E0 +FUN_020643E0: ; 0x020643E0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02064630 + add r0, r4, #0x0 + bl FUN_02064600 + pop {r4, pc} + + thumb_func_start FUN_020643F0 +FUN_020643F0: ; 0x020643F0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02064558 + add r0, r4, #0x0 + bl FUN_020643E0 + pop {r4, pc} + + thumb_func_start FUN_02064400 +FUN_02064400: ; 0x02064400 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + add r7, r1, #0x0 + str r2, [sp, #0x4] + str r3, [sp, #0x8] + mov r4, #0x0 + bl FUN_02064698 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_0206469C + add r5, r0, #0x0 +_0206441C: + add r0, r5, #0x0 + bl FUN_020646A0 + cmp r0, #0x0 + beq _0206442E + add r4, r4, #0x1 + add r5, #0xc8 + cmp r4, r6 + blt _0206441C +_0206442E: + cmp r4, r6 + blt _02064438 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02064438: + add r0, r5, #0x0 + bl FUN_020646AC + ldr r1, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_02064750 + ldr r1, [sp, #0x20] + add r0, r5, #0x0 + bl FUN_02064758 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02064768 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_0206476C + ldr r1, [r7, #0x0] + add r0, r5, #0x0 + bl FUN_0206473C + ldr r1, [r7, #0x4] + add r0, r5, #0x0 + bl FUN_020646B8 + ldr r1, [r7, #0x8] + add r0, r5, #0x0 + bl FUN_0206470C + ldr r1, [r7, #0xc] + add r0, r5, #0x0 + bl FUN_020646D4 + ldr r1, [r7, #0x10] + add r0, r5, #0x0 + bl FUN_020646F0 + ldr r1, [r7, #0x14] + add r0, r5, #0x0 + bl FUN_02064728 + ldr r1, [r7, #0x18] + add r0, r5, #0x0 + bl FUN_02064730 + ldr r1, [sp, #0x24] + add r0, r5, #0x0 + bl FUN_020645B0 + add r4, r0, #0x0 + bne _020644AE + add r0, r5, #0x0 + bl FUN_02064640 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_020644AE: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02064760 + add r0, r5, #0x0 + bl FUN_020646C0 + cmp r0, #0x0 + bne _020644D2 + add r0, r4, #0x0 + bl FUN_0200CAB4 + add r0, r5, #0x0 + bl FUN_02064640 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_020644D2: + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x4] + add r1, r0, #0x1 + ldr r0, [sp, #0x0] + str r1, [r0, #0x4] + add r0, r5, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020644E4 +FUN_020644E4: ; 0x020644E4 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r1, #0x0 + add r6, r0, #0x0 + add r4, sp, #0x8 + ldmia r5!, {r0-r1} + add r7, r4, #0x0 + stmia r4!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r4!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + str r0, [r4, #0x0] + ldr r0, _02064518 ; =FUN_0206479C + str r0, [sp, #0x1c] + ldr r0, _0206451C ; =FUN_020647A0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x38] + str r0, [sp, #0x0] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x4] + add r0, r6, #0x0 + bl FUN_02064400 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02064518: .word FUN_0206479C +_0206451C: .word FUN_020647A0 + + thumb_func_start FUN_02064520 +FUN_02064520: ; 0x02064520 + push {r4, lr} + add r4, r0, #0x0 + bne _0206452A + bl ErrorHandling +_0206452A: + add r0, r4, #0x0 + bl FUN_020646A0 + cmp r0, #0x0 + beq _02064556 + add r0, r4, #0x0 + bl FUN_02064714 + ldr r1, [r4, #0x14] + ldr r0, [r1, #0x4] + sub r0, r0, #0x1 + str r0, [r1, #0x4] + add r0, r4, #0x0 + bl FUN_02064764 + cmp r0, #0x0 + beq _02064550 + bl FUN_0200CAB4 +_02064550: + add r0, r4, #0x0 + bl FUN_02064640 +_02064556: + pop {r4, pc} + + thumb_func_start FUN_02064558 +FUN_02064558: ; 0x02064558 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02064698 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0206469C + add r5, r0, #0x0 +_0206456A: + add r0, r5, #0x0 + bl FUN_020646A0 + cmp r0, #0x1 + bne _0206457A + add r0, r5, #0x0 + bl FUN_02064520 +_0206457A: + add r5, #0xc8 + sub r4, r4, #0x1 + bne _0206456A + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02064584 +FUN_02064584: ; 0x02064584 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02064698 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0206469C + add r5, r0, #0x0 +_02064596: + add r0, r5, #0x0 + bl FUN_020646A0 + cmp r0, #0x1 + bne _020645A6 + add r0, r5, #0x0 + bl FUN_020646F8 +_020645A6: + add r5, #0xc8 + sub r4, r4, #0x1 + bne _02064596 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020645B0 +FUN_020645B0: ; 0x020645B0 + push {r4, lr} + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r0, _020645CC ; =FUN_020645D0 + add r1, r3, #0x0 + bl FUN_0200CA44 + add r4, r0, #0x0 + bne _020645C6 + bl ErrorHandling +_020645C6: + add r0, r4, #0x0 + pop {r4, pc} + nop +_020645CC: .word FUN_020645D0 + + thumb_func_start FUN_020645D0 +FUN_020645D0: ; 0x020645D0 + ldr r3, _020645D8 ; =FUN_020646DC + add r0, r1, #0x0 + bx r3 + nop +_020645D8: .word FUN_020646DC + + thumb_func_start FUN_020645DC +FUN_020645DC: ; 0x020645DC + push {r4, lr} + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0x0 + bne _020645EC + bl ErrorHandling +_020645EC: + add r2, r4, #0x0 + mov r1, #0x10 + mov r0, #0x0 +_020645F2: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _020645F2 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02064600 +FUN_02064600: ; 0x02064600 + ldr r3, _02064608 ; =FUN_02016A8C + add r1, r0, #0x0 + ldr r0, [r1, #0x8] + bx r3 + .balign 4 +_02064608: .word FUN_02016A8C + + thumb_func_start FUN_0206460C +FUN_0206460C: ; 0x0206460C + push {r3-r5, lr} + mov r2, #0xc8 + add r5, r1, #0x0 + mul r5, r2 + add r1, r5, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + bne _02064622 + bl ErrorHandling +_02064622: + add r0, r4, #0x0 + mov r1, #0x0 + add r2, r5, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02064630 +FUN_02064630: ; 0x02064630 + ldr r3, _0206463C ; =FUN_02016A8C + add r1, r0, #0x0 + ldr r0, [r1, #0x8] + ldr r1, [r1, #0xc] + bx r3 + nop +_0206463C: .word FUN_02016A8C + + thumb_func_start FUN_02064640 +FUN_02064640: ; 0x02064640 + push {r4, lr} + mov r1, #0x0 + mov r2, #0xc8 + add r4, r0, #0x0 + blx Call_FillMemWithValue + ldr r1, _02064680 ; =FUN_0206478C + add r0, r4, #0x0 + bl FUN_020646B8 + ldr r1, _02064684 ; =FUN_02064798 + add r0, r4, #0x0 + bl FUN_0206470C + ldr r1, _02064688 ; =FUN_02064790 + add r0, r4, #0x0 + bl FUN_020646D4 + ldr r1, _0206468C ; =FUN_02064794 + add r0, r4, #0x0 + bl FUN_020646F0 + ldr r1, _02064690 ; =FUN_0206479C + add r0, r4, #0x0 + bl FUN_02064728 + ldr r1, _02064694 ; =FUN_020647A0 + add r0, r4, #0x0 + bl FUN_02064730 + pop {r4, pc} + nop +_02064680: .word FUN_0206478C +_02064684: .word FUN_02064798 +_02064688: .word FUN_02064790 +_0206468C: .word FUN_02064794 +_02064690: .word FUN_0206479C +_02064694: .word FUN_020647A0 + + thumb_func_start FUN_02064698 +FUN_02064698: ; 0x02064698 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0206469C +FUN_0206469C: ; 0x0206469C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_020646A0 +FUN_020646A0: ; 0x020646A0 + ldr r1, [r0, #0x0] + mov r0, #0x1 + tst r1, r0 + bne _020646AA + mov r0, #0x0 +_020646AA: + bx lr + + thumb_func_start FUN_020646AC +FUN_020646AC: ; 0x020646AC + ldr r2, [r0, #0x0] + mov r1, #0x1 + orr r1, r2 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020646B8 +FUN_020646B8: ; 0x020646B8 + add r0, #0xb0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020646C0 +FUN_020646C0: ; 0x020646C0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02064738 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r4, #0xb0 + ldr r2, [r4, #0x0] + blx r2 + pop {r4, pc} + + thumb_func_start FUN_020646D4 +FUN_020646D4: ; 0x020646D4 + add r0, #0xb4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020646DC +FUN_020646DC: ; 0x020646DC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02064738 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r4, #0xb4 + ldr r2, [r4, #0x0] + blx r2 + pop {r4, pc} + + thumb_func_start FUN_020646F0 +FUN_020646F0: ; 0x020646F0 + add r0, #0xb8 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_020646F8 +FUN_020646F8: ; 0x020646F8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02064738 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r4, #0xb8 + ldr r2, [r4, #0x0] + blx r2 + pop {r4, pc} + + thumb_func_start FUN_0206470C +FUN_0206470C: ; 0x0206470C + add r0, #0xbc + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02064714 +FUN_02064714: ; 0x02064714 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02064738 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r4, #0xbc + ldr r2, [r4, #0x0] + blx r2 + pop {r4, pc} + + thumb_func_start FUN_02064728 +FUN_02064728: ; 0x02064728 + add r0, #0xc0 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02064730 +FUN_02064730: ; 0x02064730 + add r0, #0xc4 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02064738 +FUN_02064738: ; 0x02064738 + add r0, #0x30 + bx lr + + thumb_func_start FUN_0206473C +FUN_0206473C: ; 0x0206473C + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02064738 + mov r1, #0x0 + add r2, r4, #0x0 + blx Call_FillMemWithValue + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02064750 +FUN_02064750: ; 0x02064750 + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_02064754 +FUN_02064754: ; 0x02064754 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02064758 +FUN_02064758: ; 0x02064758 + str r1, [r0, #0xc] + bx lr + + thumb_func_start FUN_0206475C +FUN_0206475C: ; 0x0206475C + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_02064760 +FUN_02064760: ; 0x02064760 + str r1, [r0, #0x10] + bx lr + + thumb_func_start FUN_02064764 +FUN_02064764: ; 0x02064764 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_02064768 +FUN_02064768: ; 0x02064768 + str r1, [r0, #0x14] + bx lr + + thumb_func_start FUN_0206476C +FUN_0206476C: ; 0x0206476C + add r3, r1, #0x0 + add r2, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, #0x24 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + str r0, [r2, #0x0] + bx lr + + thumb_func_start FUN_0206477C +FUN_0206477C: ; 0x0206477C + add r2, r0, #0x0 + add r2, #0x24 + add r3, r1, #0x0 + ldmia r2!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r2, #0x0] + str r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_0206478C +FUN_0206478C: ; 0x0206478C + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02064790 +FUN_02064790: ; 0x02064790 + bx lr + .balign 4 + + thumb_func_start FUN_02064794 +FUN_02064794: ; 0x02064794 + bx lr + .balign 4 + + thumb_func_start FUN_02064798 +FUN_02064798: ; 0x02064798 + bx lr + .balign 4 + + thumb_func_start FUN_0206479C +FUN_0206479C: ; 0x0206479C + bx lr + .balign 4 + + thumb_func_start FUN_020647A0 +FUN_020647A0: ; 0x020647A0 + bx lr + .balign 4 + + thumb_func_start FUN_020647A4 +FUN_020647A4: ; 0x020647A4 + push {r3-r7, lr} + sub sp, #0x30 + add r4, r0, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #0x7 + bl FUN_020254A0 + ldrh r1, [r0, #0x2] + ldrh r0, [r0, #0x0] + ldr r3, _0206485C ; =0x020F7D70 + mov r7, #0x18 + add r2, r1, #0x0 + mul r2, r7 + add r6, r3, r2 + lsl r0, r0, #0x2 + ldr r5, [r6, r0] + ldr r0, [r6, #0x14] + cmp r0, #0x0 + beq _0206480A + ldr r3, _02064860 ; =0x020F7D64 + add r2, sp, #0x24 + ldmia r3!, {r0-r1} + mov r12, r2 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r7, #0xea + str r0, [r2, #0x0] + str r5, [sp, #0x28] + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x4c] + add r2, r7, #0x0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r0, #0xa0 + ldr r0, [r0, #0x0] + ldr r1, [r4, #0x2c] + mov r3, r12 + bl FUN_021E7FBC + add r0, r4, #0x0 + add r0, #0xa0 + ldr r0, [r0, #0x0] + ldr r1, _02064864 ; =0x00000102 + bl FUN_021E7ED8 + str r0, [sp, #0x14] + b _0206482C +_0206480A: + ldr r0, _02064868 ; =0x020F7D4C + add r1, sp, #0xc + ldr r2, [r0, #0x8] + ldr r0, [r0, #0xc] + str r2, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r2, #0x2 + add r3, sp, #0x14 + bl FUN_0204AA5C + cmp r0, #0x0 + bne _0206482C + bl ErrorHandling +_0206482C: + ldr r1, [sp, #0x14] + add r0, sp, #0x18 + bl FUN_021E7EA0 + ldr r0, [sp, #0x14] + add r1, sp, #0x18 + str r5, [sp, #0x1c] + bl FUN_021E7EB0 + mov r0, #0x2 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + add r4, #0x9c + ldr r0, [r4, #0x0] + mov r3, #0x3 + str r0, [sp, #0x8] + ldr r1, [r6, #0x8] + ldr r2, [r6, #0xc] + mov r0, #0x0 + bl FUN_021F44D8 + add sp, #0x30 + pop {r3-r7, pc} + nop +_0206485C: .word 0x020F7D70 +_02064860: .word 0x020F7D64 +_02064864: .word 0x00000102 +_02064868: .word 0x020F7D4C + + thumb_func_start FUN_0206486C +FUN_0206486C: ; 0x0206486C + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + add r5, r0, #0x0 + mov r1, #0x7 + bl FUN_02025490 + add r0, r5, #0x0 + mov r1, #0x7 + bl FUN_020254A0 + mov r3, #0x1 + str r3, [r0, #0x4] + mov r2, #0x0 + str r2, [r0, #0x8] + ldr r4, [r4, #0x1c] + ldr r5, _020649A8 ; =0x00000123 + ldr r1, [r4, #0x0] + cmp r1, r5 + bgt _020648C4 + bge _020648D6 + add r5, r1, #0x0 + sub r5, #0xb0 + cmp r5, #0x9 + bhi _020649A0 + add r5, r5, r5 + add r5, pc + ldrh r5, [r5, #0x6] + lsl r5, r5, #0x10 + asr r5, r5, #0x10 + add pc, r5 +_020648B0: ; jump table (using 16-bit offset) + .short _02064910 - _020648B0 - 2; case 0 + .short _020649A0 - _020648B0 - 2; case 1 + .short _02064928 - _020648B0 - 2; case 2 + .short _020649A0 - _020648B0 - 2; case 3 + .short _02064940 - _020648B0 - 2; case 4 + .short _020649A0 - _020648B0 - 2; case 5 + .short _02064958 - _020648B0 - 2; case 6 + .short _020649A0 - _020648B0 - 2; case 7 + .short _02064970 - _020648B0 - 2; case 8 + .short _02064988 - _020648B0 - 2; case 9 +_020648C4: + ldr r2, _020649AC ; =0x00000125 + cmp r1, r2 + bgt _020648CE + beq _020648E8 + b _020649A0 +_020648CE: + add r2, r2, #0x1 + cmp r1, r2 + beq _020648FC + b _020649A0 +_020648D6: + ldr r1, [r4, #0xc] + cmp r1, #0x1a + bne _020648E0 + strh r2, [r0, #0x0] + b _020648E2 +_020648E0: + strh r3, [r0, #0x0] +_020648E2: + mov r1, #0x0 + strh r1, [r0, #0x2] + pop {r3-r5, pc} +_020648E8: + ldr r1, [r4, #0xc] + cmp r1, #0x30 + bne _020648F2 + mov r1, #0x0 + b _020648F4 +_020648F2: + mov r1, #0x1 +_020648F4: + strh r1, [r0, #0x0] + mov r1, #0x1 + strh r1, [r0, #0x2] + pop {r3-r5, pc} +_020648FC: + ldr r1, [r4, #0xc] + cmp r1, #0xf + bne _02064906 + mov r1, #0x0 + b _02064908 +_02064906: + mov r1, #0x1 +_02064908: + strh r1, [r0, #0x0] + mov r1, #0x2 + strh r1, [r0, #0x2] + pop {r3-r5, pc} +_02064910: + ldr r1, [r4, #0xc] + cmp r1, #0xf + bne _0206491A + strh r2, [r0, #0x0] + b _0206491E +_0206491A: + strh r3, [r0, #0x0] + str r2, [r0, #0x4] +_0206491E: + mov r1, #0x3 + strh r1, [r0, #0x2] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r3-r5, pc} +_02064928: + ldr r1, [r4, #0xc] + cmp r1, #0xf + bne _02064932 + strh r2, [r0, #0x0] + b _02064936 +_02064932: + strh r3, [r0, #0x0] + str r2, [r0, #0x4] +_02064936: + mov r1, #0x4 + strh r1, [r0, #0x2] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r3-r5, pc} +_02064940: + ldr r1, [r4, #0xc] + cmp r1, #0xf + bne _0206494A + strh r2, [r0, #0x0] + b _0206494E +_0206494A: + strh r3, [r0, #0x0] + str r2, [r0, #0x4] +_0206494E: + mov r1, #0x5 + strh r1, [r0, #0x2] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r3-r5, pc} +_02064958: + ldr r1, [r4, #0xc] + cmp r1, #0xf + bne _02064962 + strh r2, [r0, #0x0] + b _02064966 +_02064962: + strh r3, [r0, #0x0] + str r2, [r0, #0x4] +_02064966: + mov r1, #0x6 + strh r1, [r0, #0x2] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r3-r5, pc} +_02064970: + ldr r1, [r4, #0xc] + cmp r1, #0x17 + bne _0206497A + strh r2, [r0, #0x0] + b _0206497E +_0206497A: + strh r3, [r0, #0x0] + str r2, [r0, #0x4] +_0206497E: + mov r1, #0x7 + strh r1, [r0, #0x2] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r3-r5, pc} +_02064988: + ldr r1, [r4, #0xc] + cmp r1, #0x12 + bne _02064992 + strh r2, [r0, #0x0] + b _02064996 +_02064992: + strh r3, [r0, #0x0] + str r2, [r0, #0x4] +_02064996: + mov r1, #0x8 + strh r1, [r0, #0x2] + mov r1, #0x1 + str r1, [r0, #0x8] + pop {r3-r5, pc} +_020649A0: + bl ErrorHandling + pop {r3-r5, pc} + nop +_020649A8: .word 0x00000123 +_020649AC: .word 0x00000125 + + thumb_func_start FUN_020649B0 +FUN_020649B0: ; 0x020649B0 + push {r3, lr} + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #0x7 + bl FUN_020254A0 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _020649CA + mov r0, #0x1 + b _020649CC +_020649CA: + mov r0, #0x0 +_020649CC: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020649D4 +FUN_020649D4: ; 0x020649D4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #0x7 + bl FUN_020254A0 + add r4, r0, #0x0 + ldrh r1, [r4, #0x2] + mov r0, #0x18 + add r2, r1, #0x0 + mul r2, r0 + ldr r0, _02064A58 ; =0x020F7D80 + ldr r0, [r0, r2] + cmp r0, #0x0 + beq _020649FE + ldrh r0, [r4, #0x0] + cmp r0, #0x1 + beq _02064A54 +_020649FE: + mov r0, #0xb + mov r1, #0x10 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + ldrh r1, [r4, #0x2] + mov r0, #0x18 + add r3, r1, #0x0 + ldr r1, _02064A5C ; =0x020F7D84 + mul r3, r0 + ldr r1, [r1, r3] + str r1, [r2, #0x8] + ldr r1, [r4, #0x8] + str r1, [r2, #0xc] + ldrh r1, [r4, #0x0] + cmp r1, #0x0 + ldrh r1, [r4, #0x2] + bne _02064A3E + add r3, r1, #0x0 + mul r3, r0 + ldr r0, _02064A60 ; =0x020F7D74 + ldr r1, _02064A64 ; =FUN_02064A70 + ldr r0, [r0, r3] + str r0, [r2, #0x4] + ldr r0, [r5, #0x10] + bl FUN_0204640C + mov r0, #0x1 + strh r0, [r4, #0x0] + pop {r3-r5, pc} +_02064A3E: + add r3, r1, #0x0 + mul r3, r0 + ldr r0, _02064A68 ; =0x020F7D70 + ldr r1, _02064A6C ; =FUN_02064B70 + ldr r0, [r0, r3] + str r0, [r2, #0x4] + ldr r0, [r5, #0x10] + bl FUN_0204640C + mov r0, #0x0 + strh r0, [r4, #0x0] +_02064A54: + pop {r3-r5, pc} + nop +_02064A58: .word 0x020F7D80 +_02064A5C: .word 0x020F7D84 +_02064A60: .word 0x020F7D74 +_02064A64: .word FUN_02064A70 +_02064A68: .word 0x020F7D70 +_02064A6C: .word FUN_02064B70 + + thumb_func_start FUN_02064A70 +FUN_02064A70: ; 0x02064A70 + push {r4-r5, lr} + sub sp, #0x1c + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x3 + bhi _02064B5C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02064A96: ; jump table (using 16-bit offset) + .short _02064A9E - _02064A96 - 2; case 0 + .short _02064AB4 - _02064A96 - 2; case 1 + .short _02064B2E - _02064A96 - 2; case 2 + .short _02064B52 - _02064A96 - 2; case 3 +_02064A9E: + ldr r0, [r5, #0x38] + mov r1, #0x0 + bl FUN_02055560 + ldr r0, [r4, #0xc] + bl FUN_02064C64 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02064B5C +_02064AB4: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _02064ACA + add r0, r5, #0x0 + add r0, #0xa0 + ldr r0, [r0, #0x0] + ldr r1, _02064B64 ; =0x00000102 + bl FUN_021E7ED8 + str r0, [sp, #0xc] + b _02064AEC +_02064ACA: + ldr r0, _02064B68 ; =0x020F7D4C + add r1, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r0, [r0, #0x4] + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x2 + add r3, sp, #0xc + bl FUN_0204AA5C + cmp r0, #0x0 + bne _02064AEC + bl ErrorHandling +_02064AEC: + ldr r1, [sp, #0xc] + add r0, sp, #0x10 + bl FUN_021E7EA0 + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _02064AFE + mov r1, #0x1 + b _02064B00 +_02064AFE: + mov r1, #0x2 +_02064B00: + ldr r0, [sp, #0x14] + lsl r1, r1, #0xc + add r1, r0, r1 + str r1, [sp, #0x14] + ldr r0, [r4, #0x4] + cmp r1, r0 + blt _02064B1C + str r0, [sp, #0x14] + ldr r0, [r4, #0xc] + bl FUN_02064C84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] +_02064B1C: + ldr r0, [r5, #0x38] + ldr r1, [sp, #0x14] + bl FUN_02055540 + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _02064B5C +_02064B2E: + add r2, r5, #0x0 + add r2, #0x9c + ldr r1, [r4, #0x4] + ldr r2, [r2, #0x0] + mov r0, #0x0 + bl FUN_021F4594 + ldr r0, [r5, #0x38] + mov r1, #0x1 + bl FUN_0205557C + ldr r0, _02064B6C ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02064B5C +_02064B52: + bl FUN_02016A18 + add sp, #0x1c + mov r0, #0x1 + pop {r4-r5, pc} +_02064B5C: + mov r0, #0x0 + add sp, #0x1c + pop {r4-r5, pc} + nop +_02064B64: .word 0x00000102 +_02064B68: .word 0x020F7D4C +_02064B6C: .word 0x0000061A + + thumb_func_start FUN_02064B70 +FUN_02064B70: ; 0x02064B70 + push {r4-r5, lr} + sub sp, #0x1c + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x3 + bhi _02064C52 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02064B96: ; jump table (using 16-bit offset) + .short _02064B9E - _02064B96 - 2; case 0 + .short _02064BB4 - _02064B96 - 2; case 1 + .short _02064C24 - _02064B96 - 2; case 2 + .short _02064C48 - _02064B96 - 2; case 3 +_02064B9E: + ldr r0, [r5, #0x38] + mov r1, #0x0 + bl FUN_02055560 + ldr r0, [r4, #0xc] + bl FUN_02064C64 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02064C52 +_02064BB4: + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _02064BCA + add r0, r5, #0x0 + add r0, #0xa0 + ldr r0, [r0, #0x0] + ldr r1, _02064C58 ; =0x00000102 + bl FUN_021E7ED8 + str r0, [sp, #0xc] + b _02064BEC +_02064BCA: + ldr r0, _02064C5C ; =0x020F7D4C + add r1, sp, #0x4 + ldr r2, [r0, #0x10] + ldr r0, [r0, #0x14] + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x2 + add r3, sp, #0xc + bl FUN_0204AA5C + cmp r0, #0x0 + bne _02064BEC + bl ErrorHandling +_02064BEC: + ldr r1, [sp, #0xc] + add r0, sp, #0x10 + bl FUN_021E7EA0 + mov r0, #0x1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xc + sub r1, r1, r0 + str r1, [sp, #0x14] + ldr r0, [r4, #0x4] + cmp r1, r0 + bgt _02064C12 + str r0, [sp, #0x14] + ldr r0, [r4, #0xc] + bl FUN_02064C84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] +_02064C12: + ldr r0, [r5, #0x38] + ldr r1, [sp, #0x14] + bl FUN_02055540 + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _02064C52 +_02064C24: + add r2, r5, #0x0 + add r2, #0x9c + ldr r1, [r4, #0x4] + ldr r2, [r2, #0x0] + mov r0, #0x0 + bl FUN_021F4594 + ldr r0, [r5, #0x38] + mov r1, #0x1 + bl FUN_0205557C + ldr r0, _02064C60 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _02064C52 +_02064C48: + bl FUN_02016A18 + add sp, #0x1c + mov r0, #0x1 + pop {r4-r5, pc} +_02064C52: + mov r0, #0x0 + add sp, #0x1c + pop {r4-r5, pc} + .balign 4 +_02064C58: .word 0x00000102 +_02064C5C: .word 0x020F7D4C +_02064C60: .word 0x0000061A + + thumb_func_start FUN_02064C64 +FUN_02064C64: ; 0x02064C64 + push {r3, lr} + cmp r0, #0x0 + bne _02064C72 + ldr r0, _02064C7C ; =0x00000611 + bl FUN_020054C8 + pop {r3, pc} +_02064C72: + ldr r0, _02064C80 ; =0x00000614 + bl FUN_020054C8 + pop {r3, pc} + nop +_02064C7C: .word 0x00000611 +_02064C80: .word 0x00000614 + + thumb_func_start FUN_02064C84 +FUN_02064C84: ; 0x02064C84 + push {r3, lr} + cmp r0, #0x0 + bne _02064C94 + ldr r0, _02064CA0 ; =0x00000611 + mov r1, #0x0 + bl FUN_020054F0 + pop {r3, pc} +_02064C94: + ldr r0, _02064CA4 ; =0x00000614 + mov r1, #0x0 + bl FUN_020054F0 + pop {r3, pc} + nop +_02064CA0: .word 0x00000611 +_02064CA4: .word 0x00000614 + + thumb_func_start FUN_02064CA8 +FUN_02064CA8: ; 0x02064CA8 + push {r4, lr} + bl FUN_020377AC + bl FUN_02024ED8 + add r4, r0, #0x0 + mov r1, #0x1 + bl FUN_02025490 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020254A0 + mov r1, #0x1 + strb r1, [r0, #0x0] + pop {r4, pc} + + thumb_func_start FUN_02064CC8 +FUN_02064CC8: ; 0x02064CC8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + add r4, r0, #0x0 + mov r1, #0x2 + bl FUN_02025490 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_020254A0 + add r4, r0, #0x0 + ldr r0, [r5, #0x1c] + ldr r0, [r0, #0xc] + cmp r0, #0x16 + bne _02064D08 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ECEC + cmp r0, #0x0 + beq _02064D02 + mov r0, #0x0 + strb r0, [r4, #0x0] + pop {r3-r5, pc} +_02064D02: + mov r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r5, pc} +_02064D08: + mov r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02064D10 +FUN_02064D10: ; 0x02064D10 + push {r4-r6, lr} + bl FUN_020377AC + bl FUN_02024ED8 + add r4, r0, #0x0 + mov r1, #0x3 + bl FUN_02025490 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_020254A0 + ldr r5, _02064D48 ; =0x020F7E54 + add r6, r0, #0x0 + mov r4, #0x0 +_02064D30: + ldrb r1, [r5, #0x0] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add r2, r6, #0x0 + bl FUN_02064DEC + add r4, r4, #0x1 + add r5, r5, #0x1 + cmp r4, #0x18 + blt _02064D30 + pop {r4-r6, pc} + nop +_02064D48: .word 0x020F7E54 + + thumb_func_start FUN_02064D4C +FUN_02064D4C: ; 0x02064D4C + push {r4-r6, lr} + bl FUN_020377AC + bl FUN_02024ED8 + add r4, r0, #0x0 + mov r1, #0x4 + bl FUN_02025490 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_020254A0 + ldr r5, _02064D84 ; =0x020F7E48 + add r6, r0, #0x0 + mov r4, #0x0 +_02064D6C: + ldrb r1, [r5, #0x0] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + add r2, r6, #0x0 + bl FUN_02064DEC + add r4, r4, #0x1 + add r5, r5, #0x1 + cmp r4, #0xc + blt _02064D6C + pop {r4-r6, pc} + nop +_02064D84: .word 0x020F7E48 + + thumb_func_start FUN_02064D88 +FUN_02064D88: ; 0x02064D88 + push {r3-r7, lr} + add r5, r1, #0x0 + add r7, r0, #0x0 + cmp r5, #0x3 + blo _02064D96 + bl ErrorHandling +_02064D96: + add r0, r7, #0x0 + bl FUN_020377AC + bl FUN_02024ED8 + add r4, r0, #0x0 + mov r1, #0x5 + bl FUN_02025490 + add r0, r4, #0x0 + mov r1, #0x5 + bl FUN_020254A0 + add r4, r0, #0x0 + str r5, [r4, #0x4] + cmp r5, #0x0 + beq _02064DC2 + cmp r5, #0x1 + beq _02064DCA + cmp r5, #0x2 + beq _02064DD2 + b _02064DDA +_02064DC2: + mov r0, #0x2 + str r0, [r4, #0x0] + mov r6, #0xe + b _02064DDE +_02064DCA: + mov r0, #0x1 + str r0, [r4, #0x0] + mov r6, #0x15 + b _02064DDE +_02064DD2: + mov r0, #0x0 + str r0, [r4, #0x0] + mov r6, #0x19 + b _02064DDE +_02064DDA: + bl ErrorHandling +_02064DDE: + ldr r0, [r7, #0x1c] + ldr r0, [r0, #0xc] + cmp r0, r6 + bne _02064DEA + mov r0, #0x0 + str r0, [r4, #0x0] +_02064DEA: + pop {r3-r7, pc} + + thumb_func_start FUN_02064DEC +FUN_02064DEC: ; 0x02064DEC + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x1 + bls _02064DFC + bl ErrorHandling +_02064DFC: + mov r0, #0x0 + mvn r0, r0 + mov r1, #0x20 + ldr r2, [r6, #0x0] + sub r1, r1, r5 + add r3, r0, #0x0 + lsr r3, r1 + add r1, r2, #0x0 + and r1, r3 + add r3, r5, #0x1 + lsl r0, r3 + and r2, r0 + add r0, r4, #0x0 + lsl r0, r5 + orr r0, r2 + orr r0, r1 + str r0, [r6, #0x0] + pop {r4-r6, pc} + + thumb_func_start FUN_02064E20 +FUN_02064E20: ; 0x02064E20 + push {r4, lr} + bl FUN_020377AC + bl FUN_02024ED8 + add r4, r0, #0x0 + bl FUN_020254B4 + cmp r0, #0x6 + beq _02064E48 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_02025490 + add r0, r4, #0x0 + mov r1, #0x6 + bl FUN_020254A0 + mov r1, #0x2 + strh r1, [r0, #0x0] +_02064E48: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02064E4C +FUN_02064E4C: ; 0x02064E4C + push {r4, lr} + add r4, r2, #0x0 + bl FUN_0200A8E0 + mov r0, #0x0 + add r1, r4, #0x0 + add r2, r0, #0x0 + bl FUN_02002E14 + pop {r4, pc} + + thumb_func_start FUN_02064E60 +FUN_02064E60: ; 0x02064E60 + push {r4-r6, lr} + add r6, r2, #0x0 + add r5, r0, #0x0 + add r3, r1, #0x0 + ldr r2, _02064E8C ; =0x0000017E + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02034824 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02064E4C + add r0, r4, #0x0 + bl FUN_0200A8B8 + pop {r4-r6, pc} + .balign 4 +_02064E8C: .word 0x0000017E + + thumb_func_start FUN_02064E90 +FUN_02064E90: ; 0x02064E90 + push {r3-r7, lr} + sub sp, #0xa0 + str r0, [sp, #0x10] + ldr r6, [sp, #0xb8] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + add r0, r6, #0x0 + str r3, [sp, #0x1c] + ldr r5, [sp, #0xbc] + bl FUN_020377AC + str r0, [sp, #0x20] + bl FUN_020238F4 + add r7, r0, #0x0 + ldr r0, [sp, #0x20] + bl FUN_02029FC8 + add r4, r0, #0x0 + ldr r0, [sp, #0x1c] + strb r0, [r5, #0x5] + add r0, r6, #0x0 + bl FUN_02065078 + str r0, [sp, #0x24] + add r0, r7, #0x0 + bl FUN_02023A70 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x18] + mov r1, #0xa + bl FUN_02065154 + add r0, r7, #0x0 + bl FUN_020239C0 + str r0, [sp, #0x28] + add r0, r7, #0x0 + bl FUN_020239CC + str r0, [sp, #0x2c] + add r0, r7, #0x0 + bl FUN_0202398C + str r0, [sp, #0x30] + add r0, r7, #0x0 + bl FUN_02023A10 + str r0, [sp, #0x34] + ldr r0, [r6, #0xc] + bl FUN_02024DA0 + bl FUN_02024440 + str r0, [sp, #0x38] + ldr r0, [r6, #0xc] + bl FUN_02024DA0 + bl FUN_02024D64 + str r0, [sp, #0x3c] + add r0, r4, #0x0 + bl FUN_0202A1B8 + ldr r1, [sp, #0x38] + ldr r2, [sp, #0x30] + str r1, [sp, #0x0] + ldr r1, [sp, #0x3c] + ldr r3, [sp, #0x34] + str r1, [sp, #0x4] + str r0, [sp, #0x8] + ldr r1, [sp, #0x2c] + ldr r0, [sp, #0x28] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r5, [sp, #0xc] + bl FUN_02065178 + ldr r0, [sp, #0x20] + bl FUN_02023918 + str r0, [sp, #0x40] + add r0, r6, #0x0 + add r1, sp, #0x90 + add r2, sp, #0x74 + bl FUN_0204B2F0 + add r0, r6, #0x0 + add r1, sp, #0x80 + add r2, sp, #0x74 + bl FUN_0204B30C + ldr r0, [r6, #0xc] + bl FUN_020462AC + bl FUN_0205ED0C + add r1, sp, #0x74 + str r1, [sp, #0x0] + ldr r1, [sp, #0x14] + lsl r0, r0, #0x18 + str r1, [sp, #0x4] + ldr r1, [sp, #0x40] + str r5, [sp, #0x8] + lsr r0, r0, #0x18 + add r2, sp, #0x90 + add r3, sp, #0x80 + bl FUN_020651BC + ldr r0, [r6, #0xc] + bl FUN_02029ABC + str r0, [sp, #0x44] + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_0202A150 + str r0, [sp, #0x48] + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_0202A150 + str r0, [sp, #0x4c] + add r0, r4, #0x0 + mov r1, #0x14 + bl FUN_0202A150 + str r0, [sp, #0x50] + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_0202A150 + str r0, [sp, #0x54] + add r0, r4, #0x0 + mov r1, #0x40 + bl FUN_0202A150 + str r0, [sp, #0x58] + add r0, r4, #0x0 + mov r1, #0x13 + bl FUN_0202A150 + ldr r1, [sp, #0x58] + add r1, r1, r0 + ldr r0, [sp, #0x54] + add r1, r0, r1 + ldr r0, [sp, #0x50] + add r1, r0, r1 + ldr r0, [sp, #0x4c] + add r0, r0, r1 + str r0, [sp, #0x5c] + add r0, r4, #0x0 + mov r1, #0x15 + bl FUN_0202A150 + str r0, [sp, #0x60] + add r0, r4, #0x0 + mov r1, #0x1a + bl FUN_0202A150 + str r0, [sp, #0x64] + add r0, r4, #0x0 + mov r1, #0x16 + bl FUN_0202A150 + str r0, [sp, #0x68] + add r0, r4, #0x0 + mov r1, #0x1b + bl FUN_0202A150 + str r0, [sp, #0x6c] + add r0, r4, #0x0 + mov r1, #0x13 + bl FUN_0202A150 + str r0, [sp, #0x70] + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_0202A150 + add r4, r0, #0x0 + ldr r0, [sp, #0x44] + bl FUN_02029AC8 + str r0, [sp, #0x0] + ldr r1, [sp, #0x48] + ldr r0, [sp, #0x5c] + ldr r2, [sp, #0x60] + add r0, r1, r0 + ldr r1, [sp, #0x64] + ldr r3, [sp, #0x68] + add r1, r2, r1 + ldr r2, [sp, #0x6c] + str r5, [sp, #0x4] + add r2, r3, r2 + ldr r3, [sp, #0x70] + add r3, r3, r4 + bl FUN_02065260 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_020652AC + mov r3, #0x0 + ldr r0, _0206504C ; =0x0000066C + add r2, r3, #0x0 +_02065034: + ldrb r1, [r5, r2] + add r2, r2, #0x1 + eor r3, r1 + cmp r2, r0 + blo _02065034 + ldr r0, _02065050 ; =0x00000668 + mov r1, #0x0 + strh r3, [r5, r0] + add r0, r0, #0x2 + strh r1, [r5, r0] + add sp, #0xa0 + pop {r3-r7, pc} + .balign 4 +_0206504C: .word 0x0000066C +_02065050: .word 0x00000668 + + thumb_func_start FUN_02065054 +FUN_02065054: ; 0x02065054 + push {r4, lr} + ldr r1, _0206506C ; =0x0000066C + bl FUN_02016998 + ldr r2, _0206506C ; =0x0000066C + mov r1, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r4, pc} + nop +_0206506C: .word 0x0000066C + + thumb_func_start FUN_02065070 +FUN_02065070: ; 0x02065070 + ldr r3, _02065074 ; =FUN_02016A18 + bx r3 + .balign 4 +_02065074: .word FUN_02016A18 + + thumb_func_start FUN_02065078 +FUN_02065078: ; 0x02065078 + push {r3-r7, lr} + bl FUN_020377AC + add r7, r0, #0x0 + bl FUN_02029FC8 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020462AC + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_02026CB4 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r4, #0x0 + bl FUN_0205ED0C + cmp r0, #0x0 + beq _020650A8 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_020650A8: + add r0, r7, #0x0 + bl FUN_02024DA0 + bl FUN_020244EC + cmp r0, #0x0 + beq _020650BC + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_020650BC: + add r0, r6, #0x0 + mov r1, #0x35 + bl FUN_0202A150 + cmp r0, #0x64 + bhs _020650F8 + add r0, r6, #0x0 + mov r1, #0x37 + bl FUN_0202A150 + cmp r0, #0x64 + bhs _020650F8 + add r0, r6, #0x0 + mov r1, #0x39 + bl FUN_0202A150 + cmp r0, #0x64 + bhs _020650F8 + add r0, r6, #0x0 + mov r1, #0x3b + bl FUN_0202A150 + cmp r0, #0x64 + bhs _020650F8 + add r0, r6, #0x0 + mov r1, #0x3d + bl FUN_0202A150 + cmp r0, #0x64 + blo _020650FE +_020650F8: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_020650FE: + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0205EE60 + cmp r0, #0x0 + bne _0206513A + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0205EE60 + cmp r0, #0x0 + bne _0206513A + add r0, r5, #0x0 + mov r1, #0x3 + bl FUN_0205EE60 + cmp r0, #0x0 + bne _0206513A + add r0, r5, #0x0 + mov r1, #0x4 + bl FUN_0205EE60 + cmp r0, #0x0 + bne _0206513A + add r0, r5, #0x0 + mov r1, #0x2 + bl FUN_0205EE60 + cmp r0, #0x0 + beq _02065140 +_0206513A: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02065140: + ldr r0, [sp, #0x0] + bl FUN_020268D4 + cmp r0, #0x1 + bne _02065150 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02065150: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02065154 +FUN_02065154: ; 0x02065154 + push {r3-r6} + ldr r5, [sp, #0x14] + mov r6, #0x1 + ldrb r4, [r5, #0x4] + bic r4, r6 + mov r6, #0x1 + and r0, r6 + orr r0, r4 + strb r0, [r5, #0x4] + strb r1, [r5, #0x0] + strb r2, [r5, #0x3] + add r0, sp, #0x0 + ldrb r0, [r0, #0x10] + strb r0, [r5, #0x1] + strb r3, [r5, #0x2] + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_02065178 +FUN_02065178: ; 0x02065178 + push {r4-r6, lr} + ldr r4, [sp, #0x1c] + add r6, r1, #0x0 + strh r0, [r4, #0x28] + ldrb r0, [r4, #0x4] + add r1, r2, #0x0 + mov r2, #0x4 + bic r0, r2 + lsl r2, r6, #0x1f + lsr r2, r2, #0x1d + orr r0, r2 + strb r0, [r4, #0x4] + add r0, r4, #0x0 + add r0, #0x8 + mov r2, #0x8 + add r5, r3, #0x0 + bl StringCopyN + ldr r0, [sp, #0x10] + str r5, [r4, #0x1c] + str r0, [r4, #0x20] + ldrb r0, [r4, #0x4] + mov r1, #0x8 + bic r0, r1 + ldr r1, [sp, #0x14] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1f + lsr r1, r1, #0x1c + orr r0, r1 + strb r0, [r4, #0x4] + ldr r0, [sp, #0x18] + str r0, [r4, #0x24] + pop {r4-r6, pc} + + thumb_func_start FUN_020651BC +FUN_020651BC: ; 0x020651BC + push {r3-r7, lr} + sub sp, #0x8 + ldr r4, [sp, #0x28] + str r0, [sp, #0x0] + str r1, [sp, #0x4] + add r0, r1, #0x0 + add r5, r2, #0x0 + add r6, r3, #0x0 + ldr r7, [sp, #0x20] + bl FUN_02029EBC + strh r0, [r4, #0x2a] + ldr r0, [sp, #0x4] + bl FUN_02029EC0 + add r1, r4, #0x0 + add r1, #0x2e + strb r0, [r1, #0x0] + add r0, r4, #0x0 + ldr r1, [r5, #0x0] + add r0, #0x2f + strb r1, [r0, #0x0] + add r0, r4, #0x0 + ldr r1, [r5, #0x4] + add r0, #0x30 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + ldr r1, [r5, #0x8] + add r0, #0x31 + strb r1, [r0, #0x0] + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _0206521E + add r0, r4, #0x0 + ldr r1, [r6, #0x0] + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + ldr r1, [r6, #0x4] + add r0, #0x33 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + ldr r1, [r6, #0x8] + add r0, #0x34 + strb r1, [r0, #0x0] + ldr r0, [r7, #0x0] + strh r0, [r4, #0x2c] + ldr r1, [r7, #0x4] + b _02065234 +_0206521E: + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x32 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x33 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x34 + strb r1, [r0, #0x0] + strh r1, [r4, #0x2c] +_02065234: + add r0, r4, #0x0 + add r0, #0x35 + strb r1, [r0, #0x0] + ldrb r2, [r4, #0x4] + mov r0, #0x2 + bic r2, r0 + add r0, sp, #0x10 + ldrb r0, [r0, #0x14] + lsl r1, r0, #0x1f + lsr r1, r1, #0x1e + orr r1, r2 + strb r1, [r4, #0x4] + cmp r0, #0x0 + beq _02065258 + ldr r0, [sp, #0x4] + add sp, #0x8 + str r0, [r4, #0x18] + pop {r3-r7, pc} +_02065258: + mov r0, #0x0 + str r0, [r4, #0x18] + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02065260 +FUN_02065260: ; 0x02065260 + push {r3-r5, lr} + ldr r4, [sp, #0x14] + ldr r5, _020652A0 ; =0x000F423F + str r0, [r4, #0x38] + cmp r0, r5 + bls _0206526E + str r5, [r4, #0x38] +_0206526E: + str r1, [r4, #0x3c] + str r2, [r4, #0x40] + ldr r1, [r4, #0x3c] + ldr r0, _020652A4 ; =0x0000270F + cmp r1, r0 + bls _0206527C + str r0, [r4, #0x3c] +_0206527C: + ldr r1, [r4, #0x40] + ldr r0, _020652A4 ; =0x0000270F + cmp r1, r0 + bls _02065286 + str r0, [r4, #0x40] +_02065286: + ldr r0, _020652A8 ; =0x0001869F + str r3, [r4, #0x44] + cmp r3, r0 + bls _02065290 + str r0, [r4, #0x44] +_02065290: + add r4, #0x68 + mov r2, #0x6 + ldr r0, [sp, #0x10] + add r1, r4, #0x0 + lsl r2, r2, #0x8 + blx MI_CpuCopy8 + pop {r3-r5, pc} + .balign 4 +_020652A0: .word 0x000F423F +_020652A4: .word 0x0000270F +_020652A8: .word 0x0001869F + + thumb_func_start FUN_020652AC +FUN_020652AC: ; 0x020652AC + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + ldr r0, [r1, #0xc] + add r5, r2, #0x0 + bl FUN_02029ABC + bl FUN_02029ACC + str r0, [sp, #0x4] + mov r0, #0x1 + mov r4, #0x0 + add r5, #0x48 + str r0, [sp, #0x8] + add r7, r0, #0x0 +_020652CA: + ldr r0, [sp, #0x0] + add r1, r4, #0x0 + bl FUN_020239D0 + cmp r0, #0x0 + beq _020652E6 + lsl r0, r4, #0x2 + ldr r2, [r5, r0] + mov r1, #0x1 + bic r2, r7 + orr r1, r2 + add r6, r5, r0 + str r1, [r5, r0] + b _020652F2 +_020652E6: + lsl r2, r4, #0x2 + ldr r1, [r5, r2] + ldr r0, [sp, #0x8] + add r6, r5, r2 + bic r1, r0 + str r1, [r5, r2] +_020652F2: + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_02029AD0 + ldr r2, [r6, #0x0] + mov r1, #0x1 + and r1, r2 + lsl r0, r0, #0x1 + orr r0, r1 + str r0, [r6, #0x0] + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x8 + blo _020652CA + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_02065314 +FUN_02065314: ; 0x02065314 + push {r4-r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0x0 + bl FUN_02029ABC + bl FUN_02029ACC + add r6, r0, #0x0 + mov r4, #0x0 +_02065326: + lsl r1, r4, #0x2 + add r1, r5, r1 + ldr r1, [r1, #0x48] + add r0, r4, #0x0 + asr r1, r1, #0x1 + add r2, r6, #0x0 + bl FUN_02029AD8 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x8 + blo _02065326 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02065344 +FUN_02065344: ; 0x02065344 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_020169D8 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r0, [r5, #0x78] + bl FUN_02052E38 + str r0, [r4, #0x4] + ldr r0, [r5, #0x10] + ldr r1, _0206536C ; =FUN_02065370 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + nop +_0206536C: .word FUN_02065370 + + thumb_func_start FUN_02065370 +FUN_02065370: ; 0x02065370 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0xa + bgt _0206539A + bge _020653BA + cmp r0, #0x1 + bgt _020653E2 + cmp r0, #0x0 + blt _020653E2 + beq _020653A0 + cmp r0, #0x1 + beq _020653AA + b _020653E2 +_0206539A: + cmp r0, #0xb + beq _020653C8 + b _020653E2 +_020653A0: + ldr r0, [r4, #0x78] + bl FUN_02052ED0 + mov r0, #0x1 + str r0, [r5, #0x0] +_020653AA: + ldr r1, [r5, #0x4] + ldr r0, _020653E8 ; =0x0000066A + ldrh r0, [r1, r0] + cmp r0, #0x0 + beq _020653E2 + mov r0, #0xa + str r0, [r5, #0x0] + b _020653E2 +_020653BA: + ldr r1, [r5, #0x4] + add r0, r4, #0x0 + bl FUN_02038680 + mov r0, #0xb + str r0, [r5, #0x0] + b _020653E2 +_020653C8: + add r0, r4, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + bne _020653E2 + ldr r0, [r4, #0x78] + bl FUN_02052EAC + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_020653E2: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_020653E8: .word 0x0000066A + + thumb_func_start FUN_020653EC +FUN_020653EC: ; 0x020653EC + push {r4-r6, lr} + mov r2, #0x5 + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x3 + mov r1, #0x2b + lsl r2, r2, #0xc + bl FUN_0201681C + mov r1, #0x6e + mov r0, #0x2b + lsl r1, r1, #0x2 + bl FUN_02016998 + mov r2, #0x6e + mov r1, #0x0 + lsl r2, r2, #0x2 + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r5, #0x0 + str r6, [r4, #0x4] + bl FUN_020377AC + mov r1, #0x5b + lsl r1, r1, #0x2 + str r5, [r4, r1] + mov r1, #0x2b + str r1, [r4, #0x0] + mov r1, #0x0 + strb r1, [r4, #0x19] + mov r1, #0xff + add r6, r0, #0x0 + strb r1, [r4, #0x1a] + bl LoadPlayerDataAddress + bl FUN_02024FF4 + strb r0, [r4, #0x16] + add r0, r6, #0x0 + bl LoadPlayerDataAddress + bl FUN_02025084 + strh r0, [r4, #0x14] + add r0, r4, #0x0 + ldr r2, [r4, #0x0] + add r0, #0x1c + mov r1, #0x14 + bl FUN_02066010 + ldr r2, [r4, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02066070 + add r0, r4, #0x0 + bl FUN_02066270 + ldr r0, _02065470 ; =FUN_020654B0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_0200CA44 + str r0, [r4, #0x8] + pop {r4-r6, pc} + .balign 4 +_02065470: .word FUN_020654B0 + + thumb_func_start FUN_02065474 +FUN_02065474: ; 0x02065474 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + bl FUN_0200CAB4 + ldr r0, [r4, #0x4] + mov r1, #0x1 + str r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_020662E4 + add r0, r4, #0x0 + add r0, #0x1c + mov r1, #0x14 + bl FUN_02066044 + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [r4, #0x0] + bl FUN_020168D0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020654A4 +FUN_020654A4: ; 0x020654A4 + ldr r3, _020654AC ; =FUN_02065474 + add r0, r1, #0x0 + bx r3 + nop +_020654AC: .word FUN_02065474 + + thumb_func_start FUN_020654B0 +FUN_020654B0: ; 0x020654B0 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02066334 + add r0, r4, #0x0 + bl FUN_02065AF4 + ldr r1, _020654CC ; =FUN_020654D0 + add r0, r5, #0x0 + bl FUN_0201B6C4 + pop {r3-r5, pc} + .balign 4 +_020654CC: .word FUN_020654D0 + + thumb_func_start FUN_020654D0 +FUN_020654D0: ; 0x020654D0 + push {r3-r5, lr} + mov r0, #0x16 + add r5, r1, #0x0 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + bl FUN_02001204 + add r4, r0, #0x0 + mov r0, #0x69 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + cmp r0, #0x0 + beq _020654EE + bl FUN_0205EC18 +_020654EE: + ldr r0, _02065544 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x2 + tst r0, r1 + beq _0206550A + ldr r1, _02065548 ; =FUN_02065658 + ldr r2, _0206554C ; =FUN_020654A4 + add r0, r5, #0x0 + bl FUN_02065FE4 + ldr r0, _02065550 ; =0x000005DC + bl FUN_020054C8 + pop {r3-r5, pc} +_0206550A: + mov r0, #0x1 + tst r0, r1 + beq _02065542 + ldr r0, _02065550 ; =0x000005DC + bl FUN_020054C8 + mov r1, #0x1 + mvn r1, r1 + cmp r4, r1 + beq _0206552A + add r0, r1, #0x1 + cmp r4, r0 + beq _0206552A + lsr r0, r1, #0x10 + cmp r4, r0 + bne _02065536 +_0206552A: + ldr r1, _02065548 ; =FUN_02065658 + ldr r2, _0206554C ; =FUN_020654A4 + add r0, r5, #0x0 + bl FUN_02065FE4 + pop {r3-r5, pc} +_02065536: + ldr r1, _02065548 ; =FUN_02065658 + ldr r2, _02065554 ; =FUN_02065558 + add r0, r5, #0x0 + strb r4, [r5, #0x18] + bl FUN_02065FE4 +_02065542: + pop {r3-r5, pc} + .balign 4 +_02065544: .word 0x021C48B8 +_02065548: .word FUN_02065658 +_0206554C: .word FUN_020654A4 +_02065550: .word 0x000005DC +_02065554: .word FUN_02065558 + + thumb_func_start FUN_02065558 +FUN_02065558: ; 0x02065558 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x0 + beq _0206556A + cmp r0, #0x1 + beq _02065592 + pop {r3-r5, pc} +_0206556A: + add r0, r4, #0x0 + bl FUN_02066334 + mov r1, #0x0 + add r0, r4, #0x0 + add r2, r1, #0x0 + bl FUN_02065DD8 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r1, #0x0 + ldrb r2, [r4, #0x16] + add r0, r4, #0x0 + add r3, r1, #0x0 + bl FUN_02066404 + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] + pop {r3-r5, pc} +_02065592: + add r0, r4, #0x0 + bl FUN_020664F4 + cmp r0, #0x0 + beq _020655A8 + ldr r1, _020655AC ; =FUN_020655B0 + add r0, r5, #0x0 + bl FUN_0201B6C4 + mov r0, #0x0 + strh r0, [r4, #0x10] +_020655A8: + pop {r3-r5, pc} + nop +_020655AC: .word FUN_020655B0 + + thumb_func_start FUN_020655B0 +FUN_020655B0: ; 0x020655B0 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r0, #0x16 + add r4, r1, #0x0 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02001204 + add r5, r0, #0x0 + ldr r0, _02065638 ; =0x021C48B8 + mov r1, #0x2 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _020655DE + ldr r1, _0206563C ; =FUN_02065674 + ldr r2, _02065640 ; =FUN_020654B0 + add r0, r4, #0x0 + bl FUN_02065FE4 + ldr r0, _02065644 ; =0x000005DC + bl FUN_020054C8 + pop {r4-r6, pc} +_020655DE: + mov r1, #0x1 + tst r0, r1 + beq _02065634 + ldr r0, _02065644 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0x2 + cmp r0, #0x5 + bhi _0206562C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020655FC: ; jump table (using 16-bit offset) + .short _02065608 - _020655FC - 2; case 0 + .short _02065608 - _020655FC - 2; case 1 + .short _0206562C - _020655FC - 2; case 2 + .short _02065614 - _020655FC - 2; case 3 + .short _02065620 - _020655FC - 2; case 4 + .short _02065608 - _020655FC - 2; case 5 +_02065608: + ldr r1, _0206563C ; =FUN_02065674 + ldr r2, _02065640 ; =FUN_020654B0 + add r0, r4, #0x0 + bl FUN_02065FE4 + pop {r4-r6, pc} +_02065614: + ldr r1, _02065648 ; =FUN_02065710 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02065FE4 + pop {r4-r6, pc} +_02065620: + ldr r1, _0206564C ; =FUN_02065894 + ldr r2, _02065650 ; =FUN_02065938 + add r0, r4, #0x0 + bl FUN_02065FE4 + pop {r4-r6, pc} +_0206562C: + ldr r1, _02065654 ; =FUN_02065690 + add r0, r6, #0x0 + bl FUN_0201B6C4 +_02065634: + pop {r4-r6, pc} + nop +_02065638: .word 0x021C48B8 +_0206563C: .word FUN_02065674 +_02065640: .word FUN_020654B0 +_02065644: .word 0x000005DC +_02065648: .word FUN_02065710 +_0206564C: .word FUN_02065894 +_02065650: .word FUN_02065938 +_02065654: .word FUN_02065690 + + thumb_func_start FUN_02065658 +FUN_02065658: ; 0x02065658 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02065EF8 + add r0, r4, #0x0 + bl FUN_020663D4 + ldr r1, [r4, #0xc] + add r0, r5, #0x0 + bl FUN_0201B6C4 + pop {r3-r5, pc} + + thumb_func_start FUN_02065674 +FUN_02065674: ; 0x02065674 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02065F8C + add r0, r4, #0x0 + bl FUN_020663D4 + ldr r1, [r4, #0xc] + add r0, r5, #0x0 + bl FUN_0201B6C4 + pop {r3-r5, pc} + + thumb_func_start FUN_02065690 +FUN_02065690: ; 0x02065690 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x3 + bhi _02065704 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020656A8: ; jump table (using 16-bit offset) + .short _020656B0 - _020656A8 - 2; case 0 + .short _020656C6 - _020656A8 - 2; case 1 + .short _020656D2 - _020656A8 - 2; case 2 + .short _020656DE - _020656A8 - 2; case 3 +_020656B0: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02066578 + cmp r0, #0x0 + beq _0206570A + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02066634 + b _02065704 +_020656C6: + add r0, r4, #0x0 + bl FUN_02066728 + cmp r0, #0x0 + bne _02065704 + pop {r3-r5, pc} +_020656D2: + add r0, r4, #0x0 + bl FUN_020665C0 + cmp r0, #0x0 + bne _02065704 + pop {r3-r5, pc} +_020656DE: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02066578 + cmp r0, #0x0 + beq _0206570A + add r0, r4, #0x0 + bl FUN_02066334 + add r0, r4, #0x0 + bl FUN_02065AF4 + mov r0, #0x0 + strh r0, [r4, #0x10] + ldr r1, _0206570C ; =FUN_020654D0 + add r0, r5, #0x0 + bl FUN_0201B6C4 + pop {r3-r5, pc} +_02065704: + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] +_0206570A: + pop {r3-r5, pc} + .balign 4 +_0206570C: .word FUN_020654D0 + + thumb_func_start FUN_02065710 +FUN_02065710: ; 0x02065710 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r1, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x5 + bhi _020657DA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02065728: ; jump table (using 16-bit offset) + .short _02065734 - _02065728 - 2; case 0 + .short _02065744 - _02065728 - 2; case 1 + .short _02065756 - _02065728 - 2; case 2 + .short _02065780 - _02065728 - 2; case 3 + .short _02065798 - _02065728 - 2; case 4 + .short _020657AA - _02065728 - 2; case 5 +_02065734: + mov r1, #0x1 + str r1, [sp, #0x0] + ldrb r2, [r4, #0x16] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02066404 + b _020657DA +_02065744: + add r0, r4, #0x0 + bl FUN_020664F4 + cmp r0, #0x0 + beq _020657E0 + add r0, r4, #0x0 + bl FUN_02066520 + b _020657DA +_02065756: + add r0, r4, #0x0 + bl FUN_0206654C + cmp r0, #0x0 + blt _020657E0 + beq _02065778 + mov r3, #0x0 + str r3, [sp, #0x0] + ldrb r2, [r4, #0x16] + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02066404 + mov r0, #0x4 + add sp, #0x4 + strh r0, [r4, #0x10] + pop {r3-r4, pc} +_02065778: + mov r0, #0x3 + add sp, #0x4 + strh r0, [r4, #0x10] + pop {r3-r4, pc} +_02065780: + add r0, r4, #0x0 + bl FUN_020664D8 + ldr r1, _020657E4 ; =FUN_02065674 + ldr r2, _020657E8 ; =FUN_020654B0 + add r0, r4, #0x0 + bl FUN_02065FE4 + mov r0, #0x0 + add sp, #0x4 + strh r0, [r4, #0x10] + pop {r3-r4, pc} +_02065798: + add r0, r4, #0x0 + bl FUN_020664F4 + cmp r0, #0x0 + beq _020657E0 + add r0, r4, #0x0 + bl FUN_02066520 + b _020657DA +_020657AA: + add r0, r4, #0x0 + bl FUN_0206654C + cmp r0, #0x0 + blt _020657E0 + beq _020657C2 + ldr r1, _020657EC ; =FUN_020659B8 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02065FE4 + b _020657CC +_020657C2: + ldr r1, _020657F0 ; =FUN_020657F4 + ldr r2, _020657E4 ; =FUN_02065674 + add r0, r4, #0x0 + bl FUN_02065FE4 +_020657CC: + add r0, r4, #0x0 + bl FUN_020664D8 + mov r0, #0x0 + add sp, #0x4 + strh r0, [r4, #0x10] + pop {r3-r4, pc} +_020657DA: + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] +_020657E0: + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_020657E4: .word FUN_02065674 +_020657E8: .word FUN_020654B0 +_020657EC: .word FUN_020659B8 +_020657F0: .word FUN_020657F4 + + thumb_func_start FUN_020657F4 +FUN_020657F4: ; 0x020657F4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r1, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x0 + beq _0206580A + cmp r0, #0x1 + beq _0206584E + cmp r0, #0x2 + beq _0206585C + b _0206587E +_0206580A: + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _02065820 + add r0, r4, #0x0 + bl FUN_02066334 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x1 + bl FUN_02065DD8 +_02065820: + add r0, r4, #0x0 + bl FUN_020661A0 + cmp r0, #0x0 + beq _0206583C + mov r0, #0x1 + str r0, [sp, #0x0] + ldrb r2, [r4, #0x16] + add r0, r4, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl FUN_02066404 + b _0206587E +_0206583C: + mov r0, #0x1 + str r0, [sp, #0x0] + ldrb r2, [r4, #0x16] + add r0, r4, #0x0 + mov r1, #0x4 + mov r3, #0x0 + bl FUN_02066404 + b _0206587E +_0206584E: + add r0, r4, #0x0 + bl FUN_020664F4 + cmp r0, #0x0 + bne _0206587E + add sp, #0x4 + pop {r3-r4, pc} +_0206585C: + ldr r0, _02065888 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02065884 + add r0, r4, #0x0 + bl FUN_020664D8 + ldr r1, _0206588C ; =FUN_02065674 + ldr r2, _02065890 ; =FUN_020654B0 + add r0, r4, #0x0 + bl FUN_02065FE4 + mov r0, #0x0 + add sp, #0x4 + strh r0, [r4, #0x10] + pop {r3-r4, pc} +_0206587E: + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] +_02065884: + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_02065888: .word 0x021C48B8 +_0206588C: .word FUN_02065674 +_02065890: .word FUN_020654B0 + + thumb_func_start FUN_02065894 +FUN_02065894: ; 0x02065894 + push {r3-r5, lr} + add r4, r1, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x3 + bhi _0206592C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020658AA: ; jump table (using 16-bit offset) + .short _020658B2 - _020658AA - 2; case 0 + .short _020658C8 - _020658AA - 2; case 1 + .short _020658D6 - _020658AA - 2; case 2 + .short _020658E2 - _020658AA - 2; case 3 +_020658B2: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02066578 + cmp r0, #0x0 + beq _02065932 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02066634 + b _0206592C +_020658C8: + add r0, r4, #0x0 + mov r1, #0xe + bl FUN_02066664 + cmp r0, #0x0 + bne _0206592C + pop {r3-r5, pc} +_020658D6: + add r0, r4, #0x0 + bl FUN_020665C0 + cmp r0, #0x0 + bne _0206592C + pop {r3-r5, pc} +_020658E2: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02066578 + cmp r0, #0x0 + beq _02065932 + mov r0, #0x6d + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r1, r0, #0x0 + add r1, #0x22 + ldrb r5, [r1, #0x0] + bl FUN_02016A18 + cmp r5, #0x7 + bne _02065912 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02065FE4 + mov r0, #0x0 + strh r0, [r4, #0x10] + pop {r3-r5, pc} +_02065912: + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_020661F8 + ldr r1, _02065934 ; =FUN_020654B0 + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02065FE4 + mov r0, #0x0 + strh r0, [r4, #0x10] + pop {r3-r5, pc} +_0206592C: + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] +_02065932: + pop {r3-r5, pc} + .balign 4 +_02065934: .word FUN_020654B0 + + thumb_func_start FUN_02065938 +FUN_02065938: ; 0x02065938 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r1, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x0 + beq _0206594E + cmp r0, #0x1 + beq _02065970 + cmp r0, #0x2 + beq _0206597E + b _020659A0 +_0206594E: + add r0, r4, #0x0 + bl FUN_02066334 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x2 + bl FUN_02065DD8 + mov r0, #0x1 + str r0, [sp, #0x0] + ldrb r2, [r4, #0x16] + add r0, r4, #0x0 + mov r1, #0x5 + mov r3, #0x0 + bl FUN_02066404 + b _020659A0 +_02065970: + add r0, r4, #0x0 + bl FUN_020664F4 + cmp r0, #0x0 + bne _020659A0 + add sp, #0x4 + pop {r3-r4, pc} +_0206597E: + ldr r0, _020659AC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _020659A6 + add r0, r4, #0x0 + bl FUN_020664D8 + ldr r1, _020659B0 ; =FUN_02065674 + ldr r2, _020659B4 ; =FUN_020654B0 + add r0, r4, #0x0 + bl FUN_02065FE4 + mov r0, #0x0 + add sp, #0x4 + strh r0, [r4, #0x10] + pop {r3-r4, pc} +_020659A0: + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] +_020659A6: + add sp, #0x4 + pop {r3-r4, pc} + nop +_020659AC: .word 0x021C48B8 +_020659B0: .word FUN_02065674 +_020659B4: .word FUN_020654B0 + + thumb_func_start FUN_020659B8 +FUN_020659B8: ; 0x020659B8 + push {r4-r6, lr} + add r4, r1, #0x0 + ldrh r0, [r4, #0x10] + cmp r0, #0x5 + bls _020659C4 + b _02065AE0 +_020659C4: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020659D0: ; jump table (using 16-bit offset) + .short _020659DC - _020659D0 - 2; case 0 + .short _02065A24 - _020659D0 - 2; case 1 + .short _02065A68 - _020659D0 - 2; case 2 + .short _02065A86 - _020659D0 - 2; case 3 + .short _02065AB8 - _020659D0 - 2; case 4 + .short _02065AC4 - _020659D0 - 2; case 5 +_020659DC: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02066578 + cmp r0, #0x0 + beq _02065AE6 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02066634 + mov r0, #0x1b + lsl r0, r0, #0x4 + ldrb r2, [r4, #0x18] + mov r1, #0xc + ldr r0, [r4, r0] + mul r1, r2 + add r1, r4, r1 + ldrh r1, [r1, #0x22] + ldr r2, [r4, #0x0] + bl FUN_0206EEF8 + cmp r0, #0x0 + ldr r1, _02065AE8 ; =0x0000013B + beq _02065A1A + ldrb r2, [r4, r1] + mov r0, #0xc0 + bic r2, r0 + mov r0, #0x40 + orr r0, r2 + strb r0, [r4, r1] + b _02065AE0 +_02065A1A: + ldrb r2, [r4, r1] + mov r0, #0xc0 + bic r2, r0 + strb r2, [r4, r1] + b _02065AE0 +_02065A24: + add r0, r4, #0x0 + mov r1, #0x9 + bl FUN_02066664 + cmp r0, #0x0 + beq _02065AE6 + mov r0, #0x6d + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r1, r0, #0x0 + add r1, #0x22 + ldrb r5, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x23 + ldrb r6, [r1, #0x0] + bl FUN_02016A18 + cmp r6, #0x6 + bne _02065A4E + cmp r5, #0x7 + bne _02065A58 +_02065A4E: + ldr r0, _02065AEC ; =FUN_020657F4 + str r0, [r4, #0xc] + mov r0, #0x4 + strh r0, [r4, #0x10] + pop {r4-r6, pc} +_02065A58: + strb r5, [r4, #0x17] + ldrb r1, [r4, #0x18] + mov r0, #0xc + mov r2, #0x0 + mul r0, r1 + add r0, r4, r0 + strb r2, [r0, #0x1d] + b _02065AE0 +_02065A68: + add r0, r4, #0x0 + bl FUN_02066728 + cmp r0, #0x0 + beq _02065AE6 + cmp r0, #0x1 + bne _02065A80 + ldr r0, _02065AEC ; =FUN_020657F4 + str r0, [r4, #0xc] + mov r0, #0x4 + strh r0, [r4, #0x10] + pop {r4-r6, pc} +_02065A80: + ldr r0, _02065AF0 ; =FUN_020654B0 + str r0, [r4, #0xc] + b _02065AE0 +_02065A86: + add r0, r4, #0x0 + mov r1, #0xb + bl FUN_02066664 + cmp r0, #0x0 + beq _02065AE6 + mov r0, #0x6d + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r2, _02065AE8 ; =0x0000013B + ldrb r1, [r4, #0x17] + ldrb r2, [r4, r2] + add r0, r4, #0x0 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1e + bl FUN_020661F8 + ldr r1, _02065AE8 ; =0x0000013B + mov r0, #0xc0 + ldrb r2, [r4, r1] + bic r2, r0 + strb r2, [r4, r1] + b _02065AE0 +_02065AB8: + add r0, r4, #0x0 + bl FUN_020665C0 + cmp r0, #0x0 + bne _02065AE0 + pop {r4-r6, pc} +_02065AC4: + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02066578 + cmp r0, #0x0 + beq _02065AE6 + ldr r1, [r4, #0xc] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02065FE4 + mov r0, #0x0 + strh r0, [r4, #0x10] + pop {r4-r6, pc} +_02065AE0: + ldrh r0, [r4, #0x10] + add r0, r0, #0x1 + strh r0, [r4, #0x10] +_02065AE6: + pop {r4-r6, pc} + .balign 4 +_02065AE8: .word 0x0000013B +_02065AEC: .word FUN_020657F4 +_02065AF0: .word FUN_020654B0 + + thumb_func_start FUN_02065AF4 +FUN_02065AF4: ; 0x02065AF4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r6, #0x0 + bl FUN_0205EB38 + mov r1, #0x69 + lsl r1, r1, #0x2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #0xc8 + mov r2, #0xa + mov r3, #0x8a + bl FUN_0205EC48 + mov r0, #0x69 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, r6, #0x0 + mov r2, #0x1 + bl FUN_0205EC6C + mov r0, #0x69 + lsl r0, r0, #0x2 + mov r1, #0x1 + ldr r0, [r5, r0] + add r2, r1, #0x0 + bl FUN_0205EC6C + mov r1, #0x17 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r2, _02065CD8 ; =0x020F7E7C + add r1, r5, r1 + bl FUN_02019150 + mov r1, #0x17 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, #0x24 + ldr r2, _02065CDC ; =0x020F7E84 + add r1, r5, r1 + bl FUN_02019150 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xff + bl FUN_02019620 + mov r0, #0x65 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xff + bl FUN_02019620 + ldrb r0, [r5, #0x1b] + ldr r1, [r5, #0x0] + add r0, r0, #0x1 + bl FUN_02012838 + mov r1, #0x59 + lsl r1, r1, #0x2 + add r7, r5, #0x0 + str r0, [r5, r1] + add r4, r6, #0x0 + add r7, #0x1c +_02065B7E: + mov r0, #0xc + mul r0, r4 + add r2, r7, r0 + ldrb r0, [r2, #0x1] + cmp r0, #0x0 + beq _02065B9E + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r1, [r2, #0x8] + ldrb r2, [r2, #0x0] + ldr r0, [r5, r0] + bl FUN_020128A0 + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_02065B9E: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x14 + blo _02065B7E + mov r1, #0x59 + lsl r1, r1, #0x2 + ldr r0, [r5, r1] + sub r1, #0x4c + ldr r1, [r5, r1] + ldr r2, _02065CE0 ; =0x0000FFFF + bl FUN_020128A0 + add r0, r6, #0x1 + lsl r0, r0, #0x18 + mov r1, #0x5 + lsr r6, r0, #0x18 + lsl r1, r1, #0x6 + ldr r0, _02065CE4 ; =0x020F7E8C + add r1, r5, r1 + mov r2, #0x20 + blx MI_CpuCopy8 + mov r1, #0x5d + lsl r1, r1, #0x2 + add r0, r1, #0x0 + add r2, r5, r1 + sub r0, #0x28 + str r2, [r5, r0] + add r0, r1, #0x0 + sub r0, #0x10 + ldr r2, [r5, r0] + add r0, r1, #0x0 + sub r0, #0x34 + str r2, [r5, r0] + add r0, r1, #0x0 + sub r0, #0x18 + str r5, [r5, r0] + add r0, r1, #0x0 + sub r0, #0x24 + strh r6, [r5, r0] + add r0, r1, #0x0 + sub r0, #0x1d + ldrb r2, [r5, r0] + mov r0, #0xf + bic r2, r0 + mov r0, #0x6 + orr r2, r0 + add r0, r1, #0x0 + sub r0, #0x1d + strb r2, [r5, r0] + add r0, r1, #0x0 + ldr r2, _02065CE8 ; =FUN_02065D4C + sub r0, #0x30 + str r2, [r5, r0] + add r0, r1, #0x0 + ldr r2, _02065CEC ; =FUN_02065CFC + sub r0, #0x2c + str r2, [r5, r0] + add r0, r1, #0x0 + sub r0, #0x39 + ldrb r0, [r5, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + beq _02065C64 + add r0, r1, #0x0 + sub r0, #0x38 + ldrh r0, [r5, r0] + cmp r0, #0x0 + bne _02065C48 + add r0, r1, #0x0 + sub r0, #0x36 + ldrh r2, [r5, r0] + cmp r2, #0x0 + beq _02065C5A + sub r0, r6, #0x1 + cmp r2, r0 + blt _02065C5A + add r0, r1, #0x0 + sub r0, #0x36 + ldrh r0, [r5, r0] + sub r1, #0x36 + sub r0, r0, #0x1 + strh r0, [r5, r1] + b _02065C5A +_02065C48: + add r0, r0, #0x7 + cmp r0, r6 + blt _02065C5A + add r0, r1, #0x0 + sub r0, #0x38 + ldrh r0, [r5, r0] + sub r1, #0x38 + sub r0, r0, #0x1 + strh r0, [r5, r1] +_02065C5A: + ldr r1, _02065CF0 ; =0x0000013B + mov r0, #0x30 + ldrb r2, [r5, r1] + bic r2, r0 + strb r2, [r5, r1] +_02065C64: + mov r2, #0x5 + lsl r2, r2, #0x6 + sub r1, r2, #0x4 + add r0, r5, r2 + sub r2, r2, #0x2 + ldr r3, [r5, #0x0] + ldrh r1, [r5, r1] + lsl r3, r3, #0x18 + ldrh r2, [r5, r2] + lsr r3, r3, #0x18 + bl FUN_020010A8 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r5, r1] + add r1, #0x14 + add r0, r5, r1 + ldr r2, _02065CF4 ; =0x000003D9 + mov r1, #0x0 + mov r3, #0xb + bl FUN_0200CCA4 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r2, #0x65 + ldr r0, _02065CF8 ; =0x0001020F + str r1, [sp, #0x4] + str r0, [sp, #0x8] + lsl r2, r2, #0x2 + add r0, r5, r2 + str r1, [sp, #0xc] + sub r2, #0x78 + ldr r2, [r5, r2] + mov r3, #0x2 + bl FUN_0201BDE0 + mov r0, #0x65 + lsl r0, r0, #0x2 + ldr r2, _02065CF4 ; =0x000003D9 + add r0, r5, r0 + mov r1, #0x0 + mov r3, #0xb + bl FUN_0200CCA4 + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x3 + bl FUN_0201AC68 + ldr r1, _02065CF0 ; =0x0000013B + mov r0, #0xf + ldrb r2, [r5, r1] + bic r2, r0 + strb r2, [r5, r1] + add sp, #0x10 + pop {r3-r7, pc} + nop +_02065CD8: .word 0x020F7E7C +_02065CDC: .word 0x020F7E84 +_02065CE0: .word 0x0000FFFF +_02065CE4: .word 0x020F7E8C +_02065CE8: .word FUN_02065D4C +_02065CEC: .word FUN_02065CFC +_02065CF0: .word 0x0000013B +_02065CF4: .word 0x000003D9 +_02065CF8: .word 0x0001020F + + thumb_func_start FUN_02065CFC +FUN_02065CFC: ; 0x02065CFC + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x13 + add r5, r0, #0x0 + bl FUN_02001470 + ldr r1, _02065D48 ; =0x0000FFFF + cmp r4, r1 + bne _02065D1C + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0xf + mov r3, #0x2 + bl FUN_020013E8 + pop {r3-r5, pc} +_02065D1C: + mov r1, #0xc + mul r1, r4 + add r0, r0, r1 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02065D38 + add r0, r5, #0x0 + mov r1, #0x3 + mov r2, #0xf + mov r3, #0x4 + bl FUN_020013E8 + pop {r3-r5, pc} +_02065D38: + add r0, r5, #0x0 + mov r1, #0x7 + mov r2, #0xf + mov r3, #0x8 + bl FUN_020013E8 + pop {r3-r5, pc} + nop +_02065D48: .word 0x0000FFFF + + thumb_func_start FUN_02065D4C +FUN_02065D4C: ; 0x02065D4C + push {r3-r6, lr} + sub sp, #0x4 + mov r1, #0x13 + add r4, r0, #0x0 + add r6, r2, #0x0 + bl FUN_02001470 + add r1, sp, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_02001448 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02001470 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r6, #0x0 + bne _02065D7E + ldr r0, _02065DD4 ; =0x000005DC + bl FUN_020054C8 +_02065D7E: + add r0, sp, #0x0 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _02065D96 + mov r0, #0x69 + lsl r0, r0, #0x2 + mov r1, #0x0 + ldr r0, [r5, r0] + add r2, r1, #0x0 + bl FUN_0205EC6C + b _02065DA4 +_02065D96: + mov r0, #0x69 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + mov r2, #0x1 + bl FUN_0205EC6C +_02065DA4: + add r0, sp, #0x0 + ldrh r1, [r0, #0x2] + sub r0, r4, #0x7 + cmp r1, r0 + bge _02065DC0 + mov r0, #0x69 + lsl r0, r0, #0x2 + mov r1, #0x1 + ldr r0, [r5, r0] + add r2, r1, #0x0 + bl FUN_0205EC6C + add sp, #0x4 + pop {r3-r6, pc} +_02065DC0: + mov r0, #0x69 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0205EC6C + add sp, #0x4 + pop {r3-r6, pc} + nop +_02065DD4: .word 0x000005DC + + thumb_func_start FUN_02065DD8 +FUN_02065DD8: ; 0x02065DD8 + push {r3-r7, lr} + sub sp, #0x8 + str r1, [sp, #0x0] + add r5, r0, #0x0 + str r2, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r0, #0x4 + bl FUN_02012838 + mov r1, #0x59 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r0, r1, #0x0 + add r0, #0xc + add r1, #0x10 + ldr r0, [r5, r0] + ldr r2, _02065EC8 ; =0x020F7E74 + add r1, r5, r1 + bl FUN_02019150 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xff + bl FUN_02019620 + mov r7, #0x43 + ldr r6, _02065ECC ; =0x020F7EAC + mov r4, #0x0 + lsl r7, r7, #0x2 +_02065E14: + lsl r2, r4, #0x3 + add r3, r6, r2 + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r1, [r5, r7] + ldr r2, [r6, r2] + ldr r3, [r3, #0x4] + bl FUN_02012880 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x4 + blo _02065E14 + mov r1, #0x5 + lsl r1, r1, #0x6 + ldr r0, _02065ED0 ; =0x020F7E8C + add r1, r5, r1 + mov r2, #0x20 + blx MI_CpuCopy8 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r1, r0, #0x0 + add r2, r5, r0 + sub r1, #0x28 + str r2, [r5, r1] + add r1, r0, #0x0 + sub r1, #0x10 + ldr r2, [r5, r1] + add r1, r0, #0x0 + sub r1, #0x34 + str r2, [r5, r1] + add r1, r0, #0x0 + sub r1, #0x18 + str r5, [r5, r1] + add r1, r0, #0x0 + mov r2, #0x4 + sub r1, #0x24 + strh r2, [r5, r1] + add r1, r0, #0x0 + sub r1, #0x22 + strh r2, [r5, r1] + add r1, r0, #0x0 + sub r1, #0x1a + ldrh r2, [r5, r1] + ldr r1, _02065ED4 ; =0xFFFFFE7F + and r2, r1 + add r1, r0, #0x0 + sub r1, #0x1a + strh r2, [r5, r1] + add r1, r0, #0x0 + sub r0, #0x34 + ldr r2, _02065ED8 ; =FUN_02065EE4 + sub r1, #0x30 + str r2, [r5, r1] + ldr r3, [r5, #0x0] + ldr r1, [sp, #0x0] + lsl r3, r3, #0x18 + ldr r2, [sp, #0x4] + add r0, r5, r0 + lsr r3, r3, #0x18 + bl FUN_020010A8 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r5, r1] + add r1, #0x14 + add r0, r5, r1 + ldr r2, _02065EDC ; =0x000003D9 + mov r1, #0x0 + mov r3, #0xb + bl FUN_0200CCA4 + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x3 + bl FUN_0201AC68 + ldr r1, _02065EE0 ; =0x0000013B + mov r0, #0xf + ldrb r2, [r5, r1] + bic r2, r0 + mov r0, #0x1 + orr r0, r2 + strb r0, [r5, r1] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02065EC8: .word 0x020F7E74 +_02065ECC: .word 0x020F7EAC +_02065ED0: .word 0x020F7E8C +_02065ED4: .word 0xFFFFFE7F +_02065ED8: .word FUN_02065EE4 +_02065EDC: .word 0x000003D9 +_02065EE0: .word 0x0000013B + + thumb_func_start FUN_02065EE4 +FUN_02065EE4: ; 0x02065EE4 + push {r3, lr} + cmp r2, #0x0 + bne _02065EF0 + ldr r0, _02065EF4 ; =0x000005DC + bl FUN_020054C8 +_02065EF0: + pop {r3, pc} + nop +_02065EF4: .word 0x000005DC + + thumb_func_start FUN_02065EF8 +FUN_02065EF8: ; 0x02065EF8 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0x16 + lsl r0, r0, #0x4 + add r1, sp, #0x0 + ldr r0, [r4, r0] + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_02001300 + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02012870 + mov r0, #0x65 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019570 + mov r0, #0x65 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + bl FUN_0200CCF8 + mov r0, #0x65 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019570 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + bl FUN_0200CCF8 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019178 + add r0, sp, #0x0 + mov r1, #0x4f + ldrh r2, [r0, #0x2] + lsl r1, r1, #0x2 + strh r2, [r4, r1] + ldrh r2, [r0, #0x0] + add r0, r1, #0x2 + add r1, #0x68 + strh r2, [r4, r0] + ldr r0, [r4, r1] + cmp r0, #0x0 + beq _02065F7C + bl FUN_0205EBEC + mov r0, #0x69 + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r4, r0] +_02065F7C: + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x3 + bl FUN_0201AC68 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02065F8C +FUN_02065F8C: ; 0x02065F8C + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019570 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + bl FUN_0200CCF8 + mov r0, #0x16 + lsl r0, r0, #0x4 + add r1, sp, #0x0 + ldr r0, [r4, r0] + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_02001300 + mov r0, #0x59 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02012870 + mov r0, #0x5d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019178 + add r0, r4, #0x0 + bl FUN_020664D8 + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x3 + bl FUN_0201AC68 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02065FE4 +FUN_02065FE4: ; 0x02065FE4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x8] + add r4, r2, #0x0 + bl FUN_0201B6C4 + mov r0, #0x0 + strh r0, [r5, #0x10] + str r4, [r5, #0xc] + pop {r3-r5, pc} + + thumb_func_start FUN_02065FF8 +FUN_02065FF8: ; 0x02065FF8 + push {r3, lr} + strb r1, [r0, #0x0] + mov r1, #0x0 + strb r1, [r0, #0x1] + strb r1, [r0, #0x2] + strb r1, [r0, #0x3] + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0206600E + bl FUN_02021A4C +_0206600E: + pop {r3, pc} + + thumb_func_start FUN_02066010 +FUN_02066010: ; 0x02066010 + push {r3-r7, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + add r7, r2, #0x0 + mov r4, #0x0 + cmp r6, #0x0 + bls _02066040 +_0206601E: + mov r0, #0x8 + add r1, r7, #0x0 + bl FUN_020219F4 + mov r1, #0xc + mul r1, r4 + add r1, r5, r1 + str r0, [r1, #0x8] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02065FF8 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, r6 + blo _0206601E +_02066040: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02066044 +FUN_02066044: ; 0x02066044 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + ldr r4, _0206606C ; =0x00000000 + beq _0206606A + mov r7, #0xc +_02066050: + add r0, r4, #0x0 + mul r0, r7 + add r0, r5, r0 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _02066060 + bl FUN_02021A20 +_02066060: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, r6 + blo _02066050 +_0206606A: + pop {r3-r7, pc} + .balign 4 +_0206606C: .word 0x00000000 + + thumb_func_start FUN_02066070 +FUN_02066070: ; 0x02066070 + push {r4-r7, lr} + sub sp, #0x14 + add r4, r1, #0x0 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r5, r2, #0x0 + bl FUN_02025838 + mov r1, #0x6b + lsl r1, r1, #0x2 + str r0, [sp, #0x4] + str r0, [r6, r1] + add r0, r4, #0x0 + bl FUN_0206F158 + mov r1, #0x1b + lsl r1, r1, #0x4 + str r0, [r6, r1] + add r0, r5, #0x0 + bl FUN_020256BC + add r7, r0, #0x0 + add r0, r6, #0x0 + str r0, [sp, #0x10] + add r0, #0x1b + str r0, [sp, #0x10] + add r0, r6, #0x0 + str r0, [sp, #0x8] + add r0, #0x1c + mov r4, #0x0 + str r0, [sp, #0x8] +_020660AE: + ldr r0, [sp, #0x4] + mov r1, #0x0 + add r2, r4, #0x0 + add r3, r7, #0x0 + bl FUN_020258D4 + mov r0, #0xc + mul r0, r4 + ldr r1, [sp, #0x8] + str r0, [sp, #0xc] + add r5, r1, r0 + ldrb r1, [r6, #0x19] + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x8] + add r1, r4, #0x0 + add r0, r0, r2 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02065FF8 + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + strb r4, [r1, r0] + add r0, r7, #0x0 + bl FUN_020256AC + cmp r0, #0x0 + beq _02066134 + mov r0, #0x1 + strb r0, [r5, #0x1] + add r0, r7, #0x0 + bl FUN_020257C8 + strb r0, [r5, #0x4] + add r0, r7, #0x0 + bl FUN_020257CC + strb r0, [r5, #0x5] + ldrb r0, [r5, #0x5] + bl FUN_0206EAD8 + strh r0, [r5, #0x6] + add r0, r7, #0x0 + bl FUN_020257C4 + add r1, r0, #0x0 + ldr r0, [r5, #0x8] + bl FUN_02021E28 + ldrb r0, [r6, #0x19] + strb r0, [r5, #0x2] + ldrb r1, [r5, #0x0] + ldr r0, [sp, #0x0] + strb r1, [r0, #0x3] + ldrb r0, [r5, #0x0] + strb r0, [r6, #0x19] + ldr r0, [sp, #0x10] + ldrb r0, [r0, #0x0] + add r1, r0, #0x1 + ldr r0, [sp, #0x10] + strb r1, [r0, #0x0] + ldrb r0, [r6, #0x1a] + cmp r0, #0xff + bne _02066134 + strb r4, [r6, #0x1a] +_02066134: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x14 + blo _020660AE + ldrb r1, [r6, #0x19] + ldrb r3, [r6, #0x1a] + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + add r1, r6, r2 + strb r3, [r1, #0x1f] + ldrb r1, [r6, #0x1a] + ldrb r2, [r6, #0x19] + mul r0, r1 + add r0, r6, r0 + strb r2, [r0, #0x1e] + add r0, r7, #0x0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_02066160 +FUN_02066160: ; 0x02066160 + push {r3-r6} + add r2, r1, #0x0 + mov r3, #0xc + add r1, r0, #0x0 + mul r2, r3 + add r1, #0x1c + add r1, r1, r2 + ldrb r4, [r1, #0x2] + ldrb r6, [r1, #0x3] + add r5, r4, #0x0 + mul r5, r3 + add r4, r0, r5 + strb r6, [r4, #0x1f] + ldrb r4, [r1, #0x2] + ldrb r1, [r1, #0x3] + mul r3, r1 + add r1, r0, r3 + strb r4, [r1, #0x1e] + add r1, r0, r2 + mov r3, #0x0 + strb r3, [r1, #0x1d] + ldr r2, _0206619C ; =0x0000013B + mov r1, #0x30 + ldrb r3, [r0, r2] + bic r3, r1 + mov r1, #0x10 + orr r1, r3 + strb r1, [r0, r2] + pop {r3-r6} + bx lr + .balign 4 +_0206619C: .word 0x0000013B + + thumb_func_start FUN_020661A0 +FUN_020661A0: ; 0x020661A0 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrb r1, [r5, #0x18] + add r2, r5, #0x0 + mov r0, #0xc + add r2, #0x1c + mul r0, r1 + add r4, r2, r0 + mov r0, #0x1b + lsl r0, r0, #0x4 + ldrh r1, [r4, #0x6] + ldr r0, [r5, r0] + ldr r3, [r5, #0x0] + mov r2, #0x1 + bl FUN_0206ED24 + add r6, r0, #0x0 + beq _020661D4 + mov r0, #0x1b + lsl r0, r0, #0x4 + ldrh r1, [r4, #0x6] + ldr r0, [r5, r0] + ldr r3, [r5, #0x0] + mov r2, #0x1 + bl FUN_0206ED38 +_020661D4: + mov r0, #0x6b + lsl r0, r0, #0x2 + ldrb r2, [r5, #0x18] + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02025878 + ldrb r1, [r5, #0x18] + add r0, r5, #0x0 + bl FUN_02066160 + ldrb r1, [r5, #0x18] + add r0, r4, #0x0 + bl FUN_02065FF8 + add r0, r6, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020661F8 +FUN_020661F8: ; 0x020661F8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + ldrb r1, [r5, #0x18] + add r6, r2, #0x0 + add r2, r5, #0x0 + mov r0, #0xc + add r2, #0x1c + mul r0, r1 + add r4, r2, r0 + ldrb r0, [r4, #0x1] + cmp r0, #0x0 + beq _0206626E + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020377AC + bl FUN_0206BB1C + add r1, r7, #0x0 + bl FUN_0206B9B0 + add r2, r0, #0x0 + mov r0, #0x6b + lsl r0, r0, #0x2 + ldrb r1, [r5, #0x18] + ldr r0, [r5, r0] + ldr r3, [r5, #0x0] + bl FUN_020856A0 + cmp r6, #0x0 + beq _0206625E + mov r0, #0x1b + lsl r0, r0, #0x4 + ldrh r1, [r4, #0x6] + ldr r0, [r5, r0] + ldr r3, [r5, #0x0] + mov r2, #0x1 + bl FUN_0206ED24 + cmp r0, #0x0 + beq _0206625E + mov r0, #0x1b + lsl r0, r0, #0x4 + ldrh r1, [r4, #0x6] + ldr r0, [r5, r0] + ldr r3, [r5, #0x0] + mov r2, #0x1 + bl FUN_0206ED38 +_0206625E: + ldrb r1, [r5, #0x18] + add r0, r5, #0x0 + bl FUN_02066160 + ldrb r1, [r5, #0x18] + add r0, r4, #0x0 + bl FUN_02065FF8 +_0206626E: + pop {r3-r7, pc} + + thumb_func_start FUN_02066270 +FUN_02066270: ; 0x02066270 + push {r3-r7, lr} + add r6, r0, #0x0 + mov r2, #0x5a + ldr r3, [r6, #0x0] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + mov r1, #0x43 + lsl r1, r1, #0x2 + str r0, [r6, r1] + ldr r2, [r6, #0x0] + mov r0, #0x1 + mov r1, #0x80 + bl FUN_0200AA90 + mov r1, #0x11 + lsl r1, r1, #0x4 + str r0, [r6, r1] + ldr r1, [r6, #0x0] + mov r0, #0x80 + bl FUN_020219F4 + mov r1, #0x45 + lsl r1, r1, #0x2 + str r0, [r6, r1] + sub r1, #0x8 + ldr r0, [r6, r1] + mov r1, #0x4 + bl FUN_0200A914 + mov r1, #0x46 + lsl r1, r1, #0x2 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + mov r1, #0x0 + bl FUN_0200A914 + mov r1, #0x47 + lsl r1, r1, #0x2 + str r0, [r6, r1] + mov r4, #0x0 + add r5, r6, #0x0 + add r7, r1, #0x4 +_020662CC: + mov r0, #0x43 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + add r1, r4, #0x6 + bl FUN_0200A914 + str r0, [r5, r7] + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x6 + blt _020662CC + pop {r3-r7, pc} + + thumb_func_start FUN_020662E4 +FUN_020662E4: ; 0x020662E4 + push {r3-r7, lr} + add r6, r0, #0x0 + mov r7, #0x12 + mov r4, #0x0 + add r5, r6, #0x0 + lsl r7, r7, #0x4 +_020662F0: + ldr r0, [r5, r7] + bl FUN_02021A20 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x6 + blt _020662F0 + mov r0, #0x47 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + bl FUN_02021A20 + mov r0, #0x46 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + bl FUN_02021A20 + mov r0, #0x45 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + bl FUN_02021A20 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldr r0, [r6, r0] + bl FUN_0200AB18 + mov r0, #0x43 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + bl FUN_0200A8B8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02066334 +FUN_02066334: ; 0x02066334 + push {r3-r4, lr} + sub sp, #0x14 + add r4, r0, #0x0 + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020377A8 + mov r1, #0x17 + lsl r1, r1, #0x4 + str r0, [r4, r1] + ldrh r0, [r4, #0x14] + ldr r2, _020663C8 ; =0x000003E2 + mov r3, #0xa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + str r0, [sp, #0x4] + ldr r0, [r4, r1] + mov r1, #0x3 + bl FUN_0200CD68 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _020663CC ; =0x000003D9 + str r0, [sp, #0x4] + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x3 + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0x1a + ldr r2, [r4, #0x0] + mov r0, #0x0 + lsl r1, r1, #0x4 + bl FUN_02002ED0 + mov r1, #0x6 + ldr r2, [r4, #0x0] + mov r0, #0x0 + lsl r1, r1, #0x6 + bl FUN_02002EEC + mov r0, #0x13 + str r0, [sp, #0x0] + mov r0, #0x1b + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _020663D0 ; =0x0000036D + mov r1, #0x17 + lsl r1, r1, #0x4 + str r0, [sp, #0x10] + ldr r0, [r4, r1] + add r1, #0x14 + add r1, r4, r1 + mov r2, #0x3 + mov r3, #0x2 + bl FUN_02019064 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + bl FUN_02019620 + add sp, #0x14 + pop {r3-r4, pc} + .balign 4 +_020663C8: .word 0x000003E2 +_020663CC: .word 0x000003D9 +_020663D0: .word 0x0000036D + + thumb_func_start FUN_020663D4 +FUN_020663D4: ; 0x020663D4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019570 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + mov r2, #0x10 + blx MI_CpuFill8 + mov r0, #0x17 + mov r1, #0x0 + lsl r0, r0, #0x4 + str r1, [r4, r0] + pop {r4, pc} + + thumb_func_start FUN_02066404 +FUN_02066404: ; 0x02066404 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r0, #0x0 + beq _02066426 + mov r0, #0x61 + lsl r0, r0, #0x2 + ldr r2, _020664CC ; =0x000003E2 + add r0, r5, r0 + mov r1, #0x1 + mov r3, #0xa + bl FUN_0200D0BC +_02066426: + mov r1, #0xd8 + str r1, [sp, #0x0] + mov r0, #0x20 + mov r2, #0x0 + add r1, #0xac + str r0, [sp, #0x4] + add r0, r5, r1 + mov r1, #0xff + add r3, r2, #0x0 + bl FUN_020196F4 + mov r0, #0x1 + bl FUN_02002B60 + mov r0, #0x0 + bl FUN_02002B7C + cmp r4, #0x0 + bne _02066494 + mov r0, #0x45 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02021A4C + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + mov r0, #0x11 + lsl r0, r0, #0x4 + ldrb r3, [r5, #0x18] + mov r2, #0xc + ldr r0, [r5, r0] + mul r2, r3 + add r2, r5, r2 + ldr r2, [r2, #0x24] + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200ABB4 + mov r2, #0x11 + lsl r2, r2, #0x4 + lsl r3, r4, #0x2 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r3, r5, r3 + add r2, #0x10 + ldr r1, [r5, r1] + ldr r2, [r3, r2] + bl FUN_0200B7B8 + mov r0, #0x45 + lsl r0, r0, #0x2 + ldr r2, [r5, r0] + b _0206649E +_02066494: + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x12 + lsl r0, r0, #0x4 + ldr r2, [r1, r0] +_0206649E: + mov r3, #0x0 + str r3, [sp, #0x0] + ldr r0, _020664D0 ; =0x0001020F + str r6, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + str r3, [sp, #0xc] + bl FUN_0201BDE0 + mov r1, #0x4e + lsl r1, r1, #0x2 + strb r0, [r5, r1] + add r1, #0x4c + add r0, r5, r1 + bl FUN_020191D0 + ldr r0, _020664D4 ; =0x00000139 + strb r7, [r5, r0] + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_020664CC: .word 0x000003E2 +_020664D0: .word 0x0001020F +_020664D4: .word 0x00000139 + + thumb_func_start FUN_020664D8 +FUN_020664D8: ; 0x020664D8 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019570 + pop {r4, pc} + + thumb_func_start FUN_020664F4 +FUN_020664F4: ; 0x020664F4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x4e + lsl r0, r0, #0x2 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + beq _0206650A + mov r0, #0x0 + pop {r4, pc} +_0206650A: + ldr r0, _0206651C ; =0x00000139 + ldrb r0, [r4, r0] + cmp r0, #0x0 + beq _02066518 + add r0, r4, #0x0 + bl FUN_020664D8 +_02066518: + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0206651C: .word 0x00000139 + + thumb_func_start FUN_02066520 +FUN_02066520: ; 0x02066520 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + ldr r1, _02066544 ; =0x020F7E6C + str r0, [sp, #0x0] + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + ldr r2, _02066548 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5a + lsl r1, r1, #0x2 + str r0, [r4, r1] + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_02066544: .word 0x020F7E6C +_02066548: .word 0x000003D9 + + thumb_func_start FUN_0206654C +FUN_0206654C: ; 0x0206654C + push {r3, lr} + add r1, r0, #0x0 + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + ldr r1, [r1, #0x0] + bl FUN_020021AC + cmp r0, #0x0 + beq _0206656A + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _0206656E + b _02066572 +_0206656A: + mov r0, #0x1 + pop {r3, pc} +_0206656E: + mov r0, #0x0 + pop {r3, pc} +_02066572: + add r0, r1, #0x1 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02066578 +FUN_02066578: ; 0x02066578 + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldrh r0, [r4, #0x12] + cmp r0, #0x0 + beq _0206658A + cmp r0, #0x1 + beq _020665A8 + b _020665BA +_0206658A: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r4, #0x0] + add r2, r1, #0x0 + str r0, [sp, #0x8] + mov r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + ldrh r0, [r4, #0x12] + add r0, r0, #0x1 + strh r0, [r4, #0x12] + b _020665BA +_020665A8: + bl FUN_0200E308 + cmp r0, #0x0 + beq _020665BA + mov r0, #0x0 + strh r0, [r4, #0x12] + add sp, #0xc + mov r0, #0x1 + pop {r3-r4, pc} +_020665BA: + mov r0, #0x0 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_020665C0 +FUN_020665C0: ; 0x020665C0 + push {r4, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x12] + cmp r0, #0x0 + beq _020665D4 + cmp r0, #0x1 + beq _020665E6 + cmp r0, #0x2 + beq _02066614 + b _0206662E +_020665D4: + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0204649C + ldrh r0, [r4, #0x12] + add r0, r0, #0x1 + strh r0, [r4, #0x12] + b _0206662E +_020665E6: + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020464A4 + cmp r0, #0x0 + beq _0206662E + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x5a + bl FUN_0224C678 + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x5a + bl FUN_0224C6E8 + ldrh r0, [r4, #0x12] + add r0, r0, #0x1 + strh r0, [r4, #0x12] + b _0206662E +_02066614: + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x5a + ldr r0, [r0, #0x50] + bl FUN_021DA58C + cmp r0, #0x0 + beq _0206662E + mov r0, #0x0 + strh r0, [r4, #0x12] + mov r0, #0x1 + pop {r4, pc} +_0206662E: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02066634 +FUN_02066634: ; 0x02066634 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x5b + lsl r0, r0, #0x2 + add r4, r1, #0x0 + ldr r0, [r5, r0] + mov r1, #0x5a + bl FUN_021DAF98 + cmp r4, #0x0 + bne _02066652 + add r0, r5, #0x0 + bl FUN_02065EF8 + b _02066658 +_02066652: + add r0, r5, #0x0 + bl FUN_02065F8C +_02066658: + add r0, r5, #0x0 + bl FUN_020663D4 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02066664 +FUN_02066664: ; 0x02066664 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x12] + add r6, r1, #0x0 + cmp r0, #0x0 + beq _02066676 + cmp r0, #0x1 + beq _02066708 + b _0206671E +_02066676: + ldr r0, [r5, #0x0] + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020377AC + bl FUN_0206BB1C + str r0, [r4, #0x0] + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020377AC + bl FUN_0206F158 + str r0, [r4, #0x4] + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020377AC + bl LoadPlayerDataAddress + str r0, [r4, #0xc] + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r0, [r0, #0xc] + bl FUN_02025838 + str r0, [r4, #0x8] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x20 + strb r6, [r0, #0x0] + ldrb r1, [r5, #0x18] + mov r0, #0xc + mul r0, r1 + add r0, r5, r0 + ldrh r0, [r0, #0x22] + cmp r6, #0xb + strh r0, [r4, #0x24] + bne _020666EC + ldrb r1, [r5, #0x17] + add r0, r4, #0x0 + add r0, #0x22 + strb r1, [r0, #0x0] +_020666EC: + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r1, _02066724 ; =0x020F96DC + add r2, r4, #0x0 + bl FUN_020373D4 + mov r0, #0x6d + lsl r0, r0, #0x2 + str r4, [r5, r0] + ldrh r0, [r5, #0x12] + add r0, r0, #0x1 + strh r0, [r5, #0x12] + b _0206671E +_02066708: + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_0204647C + cmp r0, #0x0 + bne _0206671E + mov r0, #0x0 + strh r0, [r5, #0x12] + mov r0, #0x1 + pop {r4-r6, pc} +_0206671E: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_02066724: .word 0x020F96DC + + thumb_func_start FUN_02066728 +FUN_02066728: ; 0x02066728 + push {r3-r5, lr} + add r4, r0, #0x0 + ldrh r0, [r4, #0x12] + cmp r0, #0x0 + beq _02066738 + cmp r0, #0x1 + beq _0206677A + b _020667D0 +_02066738: + ldrb r2, [r4, #0x18] + mov r0, #0xc + mul r0, r2 + add r3, r4, r0 + ldrb r0, [r3, #0x1d] + cmp r0, #0x0 + beq _02066756 + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldr r3, [r4, #0x0] + mov r1, #0x0 + bl FUN_02037F58 + b _0206676C +_02066756: + ldr r0, [r4, #0x0] + add r3, #0x21 + str r0, [sp, #0x0] + mov r0, #0x5b + lsl r0, r0, #0x2 + ldrb r2, [r4, #0x17] + ldrb r3, [r3, #0x0] + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02037F2C +_0206676C: + mov r1, #0x6a + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldrh r0, [r4, #0x12] + add r0, r0, #0x1 + strh r0, [r4, #0x12] + b _020667D0 +_0206677A: + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0204647C + cmp r0, #0x0 + bne _020667D0 + mov r0, #0x6a + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020855E4 + cmp r0, #0x0 + beq _020667BC + ldrb r0, [r4, #0x18] + mov r2, #0xc + mov r3, #0x1 + add r1, r0, #0x0 + mul r1, r2 + add r0, r4, r1 + strb r3, [r0, #0x1d] + ldrb r3, [r4, #0x18] + mov r0, #0x6a + lsl r0, r0, #0x2 + mul r2, r3 + add r2, r4, r2 + ldrb r2, [r2, #0x1c] + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020855E8 + mov r5, #0x2 + b _020667BE +_020667BC: + mov r5, #0x1 +_020667BE: + mov r0, #0x6a + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0208562C + mov r0, #0x0 + strh r0, [r4, #0x12] + add r0, r5, #0x0 + pop {r3-r5, pc} +_020667D0: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_020667D4 +FUN_020667D4: ; 0x020667D4 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + cmp r1, #0x0 + beq _020667F2 + cmp r1, #0x1 + beq _02066802 + b _02066814 +_020667F2: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020653EC + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02066814 +_02066802: + ldr r1, [r4, #0x0] + cmp r1, #0x0 + bne _0206680C + mov r0, #0x0 + pop {r3-r5, pc} +_0206680C: + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_02066814: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02066818 +FUN_02066818: ; 0x02066818 + push {r4, lr} + bl FUN_02046528 + add r4, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_020169D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [r2, #0x0] + str r0, [r2, #0x4] + ldr r0, [r4, #0x10] + ldr r1, _0206683C ; =FUN_020667D4 + bl FUN_0204640C + pop {r4, pc} + nop +_0206683C: .word FUN_020667D4 + + thumb_func_start FUN_02066840 +FUN_02066840: ; 0x02066840 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + str r1, [sp, #0x0] + add r7, r2, #0x0 + bl FUN_020238F4 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02029AFC + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0202A8D8 + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x0 + mov r2, #0xe4 + blx MI_CpuFill8 + add r0, r4, #0x0 + bl FUN_0202398C + add r1, r7, #0x0 + add r1, #0xa8 + mov r2, #0x10 + blx MI_CpuCopy8 + add r0, r4, #0x0 + bl FUN_020239BC + add r1, r7, #0x0 + add r1, #0xbc + str r0, [r1, #0x0] + ldr r0, _02066970 ; =0x020ECAC0 + ldrb r1, [r0, #0x0] + add r0, r7, #0x0 + add r0, #0xb8 + strb r1, [r0, #0x0] + ldr r0, _02066974 ; =0x020ECAC4 + ldrb r1, [r0, #0x0] + add r0, r7, #0x0 + add r0, #0xb9 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_02029B38 + add r1, r7, #0x0 + add r1, #0xba + strb r0, [r1, #0x0] + add r0, r5, #0x0 + bl FUN_02029B3C + add r1, r7, #0x0 + add r1, #0xbb + strb r0, [r1, #0x0] + add r0, r4, #0x0 + bl FUN_020239CC + add r1, r7, #0x0 + add r1, #0xc8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1f + ldrb r1, [r1, #0x0] + mov r2, #0x2 + lsr r0, r0, #0x1e + bic r1, r2 + orr r1, r0 + add r0, r7, #0x0 + add r0, #0xc8 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_02023A28 + add r1, r0, #0x0 + add r0, r7, #0x0 + add r0, #0xc8 + ldrb r0, [r0, #0x0] + mov r2, #0x1 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bl FUN_020536D0 + add r1, r7, #0x0 + add r1, #0xc9 + strb r0, [r1, #0x0] + add r0, r7, #0x0 + mov r4, #0x0 + str r0, [sp, #0x8] + add r0, #0xca + add r5, r4, #0x0 + str r0, [sp, #0x8] +_020668FC: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0202A5F4 + ldr r1, [sp, #0x8] + mov r2, #0x8 + add r1, r1, r5 + blx MI_CpuCopy8 + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, #0x3 + blt _020668FC + add r0, r6, #0x0 + mov r1, #0x3 + bl FUN_0202A5F4 + add r1, r7, #0x0 + add r1, #0xc0 + mov r2, #0x8 + blx MI_CpuCopy8 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + bne _02066956 + ldr r0, [sp, #0x4] + mov r1, #0x7 + mov r2, #0x0 + bl FUN_0202A578 + add r1, r7, #0x0 + add r1, #0xe2 + strh r0, [r1, #0x0] + add r0, r7, #0x0 + add r0, #0xe2 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + beq _0206696C + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x0] + add r2, r7, #0x0 + bl FUN_0202A498 + add sp, #0xc + pop {r4-r7, pc} +_02066956: + ldr r0, [sp, #0x4] + bl FUN_0202A520 + add r1, r7, #0x0 + add r1, #0xe2 + strh r0, [r1, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x0] + add r2, r7, #0x0 + bl FUN_0202A498 +_0206696C: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02066970: .word 0x020ECAC0 +_02066974: .word 0x020ECAC4 + + thumb_func_start FUN_02066978 +FUN_02066978: ; 0x02066978 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0xec + blx MIi_CpuClearFast + add r0, r4, #0x0 + ldrh r2, [r4, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 + add r0, r4, #0x0 + ldr r2, [r4, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + pop {r4, pc} + + thumb_func_start FUN_020669A0 +FUN_020669A0: ; 0x020669A0 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x88 + blx MIi_CpuClearFast + add r0, r4, #0x0 + ldrh r2, [r4, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 + pop {r4, pc} + + thumb_func_start FUN_020669BC +FUN_020669BC: ; 0x020669BC + mov r0, #0xec + bx lr + + thumb_func_start FUN_020669C0 +FUN_020669C0: ; 0x020669C0 + push {r4, lr} + mov r1, #0xec + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_02066978 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020669D4 +FUN_020669D4: ; 0x020669D4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + mov r4, #0x0 + lsl r1, r0, #0x1f + lsr r1, r1, #0x1f + bne _02066A1A + lsl r0, r0, #0x1e + mov r4, #0x1 + lsr r0, r0, #0x1f + beq _020669EE + bl ErrorHandling +_020669EE: + ldrh r1, [r5, #0x4] + mov r0, #0x1 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strh r0, [r5, #0x4] + ldrh r1, [r5, #0x4] + mov r0, #0x2 + orr r0, r1 + strh r0, [r5, #0x4] + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3D0 + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 +_02066A1A: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02066A20 +FUN_02066A20: ; 0x02066A20 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r2, [r5, #0x4] + mov r4, #0x0 + lsl r0, r2, #0x1f + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _02066A68 + cmp r1, #0x1 + bne _02066A68 + mov r0, #0x1 + bic r2, r0 + strh r2, [r5, #0x4] + ldrh r1, [r5, #0x4] + mov r0, #0x2 + mov r4, #0x1 + bic r1, r0 + strh r1, [r5, #0x4] + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_02066A68: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02066A6C +FUN_02066A6C: ; 0x02066A6C + push {r4, lr} + add r2, r0, #0x0 + ldrh r1, [r2, #0x4] + mov r4, #0x0 + lsl r0, r1, #0x1e + lsr r0, r0, #0x1f + bne _02066A8E + mov r0, #0x2 + orr r0, r1 + strh r0, [r2, #0x4] + add r0, r2, #0x0 + ldrh r2, [r2, #0x6] + add r0, #0x8 + mov r1, #0x80 + mov r4, #0x1 + bl FUN_0206A3D0 +_02066A8E: + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02066A94 +FUN_02066A94: ; 0x02066A94 + push {r3-r5, lr} + add r5, r0, #0x0 + ldrh r2, [r5, #0x4] + mov r4, #0x0 + lsl r0, r2, #0x1e + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _02066AC8 + cmp r1, #0x1 + bne _02066AC8 + mov r0, #0x2 + bic r2, r0 + add r0, r5, #0x0 + strh r2, [r5, #0x4] + add r0, #0x8 + mov r1, #0x80 + mov r4, #0x1 + bl FUN_0206A3F8 + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_02066AC8: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02066ACC +FUN_02066ACC: ; 0x02066ACC + push {r0-r3} + push {r3-r6, lr} + sub sp, #0x2c + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r3, #0x0 + bl FUN_02066978 + ldr r0, [sp, #0x50] + add r1, r4, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x54] + add r3, r6, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x58] + str r0, [sp, #0x8] + ldr r0, [sp, #0x5c] + str r0, [sp, #0xc] + ldr r2, [sp, #0x48] + add r0, r5, #0x0 + bl FUN_02066B64 + add r0, r5, #0x0 + add r0, #0x88 + mov r1, #0x64 + mov r2, #0x0 + bl FUN_0206A3A4 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + add r0, r5, #0x0 + mov r1, #0xa0 + add r2, sp, #0x48 + bl FUN_02067830 + mov r0, #0x0 + bl FUN_020256BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa9 + add r2, r4, #0x0 + bl FUN_02067830 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + str r0, [sp, #0x10] + add r0, r5, #0x0 + mov r1, #0xa1 + add r2, sp, #0x10 + bl FUN_02067830 + mov r0, #0x0 + add r1, sp, #0x14 + mov r2, #0x18 + blx MIi_CpuClearFast + add r0, r5, #0x0 + mov r1, #0xaa + add r2, sp, #0x14 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + add sp, #0x2c + pop {r3-r6} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_02066B64 +FUN_02066B64: ; 0x02066B64 + push {r0-r3} + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl FUN_020669A0 + add r0, r5, #0x0 + bl FUN_02066A6C + str r0, [sp, #0x0] + ldr r0, [sp, #0x30] + cmp r0, #0x0 + bne _02066B8E + bl FUN_0201B9EC + add r4, r0, #0x0 + bl FUN_0201B9EC + lsl r0, r0, #0x10 + orr r0, r4 + str r0, [sp, #0x34] +_02066B8E: + add r0, r5, #0x0 + mov r1, #0x0 + add r2, sp, #0x34 + bl FUN_02067960 + ldr r0, [sp, #0x38] + cmp r0, #0x2 + bne _02066BD6 + ldr r7, _02066D84 ; =0xFFFF0000 + add r6, r7, #0x0 +_02066BA2: + bl FUN_0201B9EC + add r4, r0, #0x0 + bl FUN_0201B9EC + ldr r1, [sp, #0x34] + lsl r0, r0, #0x10 + add r3, r4, #0x0 + orr r3, r0 + lsl r0, r1, #0x10 + lsr r2, r0, #0x10 + add r0, r1, #0x0 + and r0, r7 + lsr r1, r0, #0x10 + add r0, r3, #0x0 + str r3, [sp, #0x3c] + and r0, r6 + lsl r3, r3, #0x10 + lsr r0, r0, #0x10 + lsr r3, r3, #0x10 + eor r0, r3 + eor r0, r1 + eor r0, r2 + cmp r0, #0x8 + blo _02066BA2 + b _02066BDE +_02066BD6: + cmp r0, #0x1 + beq _02066BDE + mov r0, #0x0 + str r0, [sp, #0x3c] +_02066BDE: + add r0, r5, #0x0 + mov r1, #0x7 + add r2, sp, #0x3c + bl FUN_02067960 + ldr r2, _02066D88 ; =0x020ECAC4 + add r0, r5, #0x0 + mov r1, #0xc + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x5 + add r2, sp, #0x24 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0xb2 + mov r2, #0x0 + bl FUN_02067960 + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x28] + bl FUN_02068758 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x8 + add r2, sp, #0x8 + bl FUN_02067960 + ldr r0, [sp, #0x24] + mov r1, #0x14 + bl FUN_02068678 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x8 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x9b + add r2, sp, #0x28 + bl FUN_02067960 + ldr r2, _02066D8C ; =0x020ECAC0 + add r0, r5, #0x0 + mov r1, #0x79 + bl FUN_02067960 + mov r0, #0x4 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9a + add r2, sp, #0x8 + bl FUN_02067960 + ldr r0, [sp, #0x2c] + cmp r0, #0x20 + bge _02066C94 + add r0, r5, #0x0 + mov r1, #0x46 + add r2, sp, #0x2c + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x47 + add r2, sp, #0x2c + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x48 + add r2, sp, #0x2c + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x49 + add r2, sp, #0x2c + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x4a + add r2, sp, #0x2c + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x4b + add r2, sp, #0x2c + bl FUN_02067960 + b _02066D18 +_02066C94: + bl FUN_0201B9EC + mov r1, #0x1f + str r0, [sp, #0x8] + and r0, r1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x46 + add r2, sp, #0x4 + bl FUN_02067960 + mov r0, #0x3e + ldr r1, [sp, #0x8] + lsl r0, r0, #0x4 + and r0, r1 + lsr r0, r0, #0x5 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x47 + add r2, sp, #0x4 + bl FUN_02067960 + mov r0, #0x1f + ldr r1, [sp, #0x8] + lsl r0, r0, #0xa + and r0, r1 + lsr r0, r0, #0xa + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x48 + add r2, sp, #0x4 + bl FUN_02067960 + bl FUN_0201B9EC + mov r1, #0x1f + str r0, [sp, #0x8] + and r0, r1 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x49 + add r2, sp, #0x4 + bl FUN_02067960 + mov r0, #0x3e + ldr r1, [sp, #0x8] + lsl r0, r0, #0x4 + and r0, r1 + lsr r0, r0, #0x5 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x4a + add r2, sp, #0x4 + bl FUN_02067960 + mov r0, #0x1f + ldr r1, [sp, #0x8] + lsl r0, r0, #0xa + and r0, r1 + lsr r0, r0, #0xa + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x4b + add r2, sp, #0x4 + bl FUN_02067960 +_02066D18: + ldr r0, [sp, #0x24] + mov r1, #0x18 + bl FUN_02068678 + str r0, [sp, #0x8] + ldr r0, [sp, #0x24] + mov r1, #0x19 + bl FUN_02068678 + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _02066D50 + ldr r1, [sp, #0x34] + mov r0, #0x1 + tst r0, r1 + beq _02066D44 + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x4 + bl FUN_02067960 + b _02066D5A +_02066D44: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x8 + bl FUN_02067960 + b _02066D5A +_02066D50: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x8 + bl FUN_02067960 +_02066D5A: + add r0, r5, #0x0 + bl FUN_020689E8 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x6f + add r2, sp, #0x8 + bl FUN_02067960 + add r0, r5, #0x0 + bl FUN_020695F4 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02066A94 + add sp, #0xc + pop {r4-r7} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 +_02066D84: .word 0xFFFF0000 +_02066D88: .word 0x020ECAC4 +_02066D8C: .word 0x020ECAC0 + + thumb_func_start FUN_02066D90 +FUN_02066D90: ; 0x02066D90 + push {r3-r7, lr} + sub sp, #0x18 + str r2, [sp, #0x10] + str r3, [sp, #0x14] + ldr r4, [sp, #0x30] + add r6, r0, #0x0 + add r7, r1, #0x0 +_02066D9E: + bl FUN_0201B9EC + add r5, r0, #0x0 + bl FUN_0201B9EC + lsl r0, r0, #0x10 + orr r5, r0 + add r0, r5, #0x0 + bl FUN_02068884 + cmp r4, r0 + bne _02066D9E + mov r0, #0x1 + str r0, [sp, #0x0] + str r5, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02066ACC + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02066DD4 +FUN_02066DD4: ; 0x02066DD4 + push {r4-r7, lr} + sub sp, #0x24 + str r1, [sp, #0x14] + str r2, [sp, #0x18] + str r3, [sp, #0x1c] + str r0, [sp, #0x10] + add r0, sp, #0x28 + ldrb r0, [r0, #0x18] + ldr r6, [sp, #0x38] + ldr r7, [sp, #0x3c] + cmp r0, #0x0 + beq _02066E4C + cmp r0, #0x1d + bhs _02066E4C + sub r0, r0, #0x1 + str r0, [sp, #0x20] +_02066DF4: + bl FUN_0201B9EC + add r4, r0, #0x0 + bl FUN_0201B9EC + lsl r0, r0, #0x10 + orr r4, r0 + mov r3, #0x3 + lsl r3, r3, #0x10 + and r3, r4 + mov r0, #0x3 + add r2, r4, #0x0 + and r2, r0 + lsl r0, r0, #0x8 + and r0, r4 + lsr r1, r0, #0x6 + mov r0, #0x3 + lsl r0, r0, #0x18 + and r0, r4 + lsr r0, r0, #0x12 + lsr r3, r3, #0xc + orr r0, r3 + orr r0, r1 + orr r0, r2 + mov r1, #0x1c + blx _u32_div_f + lsl r0, r1, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + bl FUN_02068884 + cmp r7, r0 + bne _02066DF4 + ldr r0, [sp, #0x14] + add r1, r4, #0x0 + bl FUN_02068A20 + cmp r6, r0 + bne _02066DF4 + ldr r0, [sp, #0x20] + cmp r5, r0 + bne _02066DF4 + b _02066E58 +_02066E4C: + ldr r0, [sp, #0x14] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_02066E74 + add r4, r0, #0x0 +_02066E58: + mov r0, #0x1 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x18] + ldr r3, [sp, #0x1c] + bl FUN_02066ACC + add sp, #0x24 + pop {r4-r7, pc} + + thumb_func_start FUN_02066E74 +FUN_02066E74: ; 0x02066E74 + push {r3-r5, lr} + add r5, r1, #0x0 + mov r1, #0x12 + add r4, r2, #0x0 + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02066EA0 + cmp r0, #0xfe + beq _02066EA0 + cmp r0, #0xff + beq _02066EA0 + cmp r5, #0x0 + bne _02066EA0 + mov r1, #0x19 + blx _s32_div_f + add r1, r0, #0x1 + mov r0, #0x19 + mul r0, r1 + add r4, r0, r4 +_02066EA0: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02066EA4 +FUN_02066EA4: ; 0x02066EA4 + push {r0-r3} + push {r4, lr} + sub sp, #0x10 + mov r3, #0x1 + str r3, [sp, #0x0] + ldr r3, [sp, #0x28] + add r4, r0, #0x0 + str r3, [sp, #0x4] + mov r3, #0x0 + str r3, [sp, #0x8] + str r3, [sp, #0xc] + bl FUN_02066ACC + add r0, r4, #0x0 + mov r1, #0xae + add r2, sp, #0x24 + bl FUN_02067830 + add r0, r4, #0x0 + bl FUN_02066ED8 + add sp, #0x10 + pop {r4} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_02066ED8 +FUN_02066ED8: ; 0x02066ED8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020669D4 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020687C0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0xa0 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066F04 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02066A20 + pop {r3-r5, pc} + + thumb_func_start FUN_02066F04 +FUN_02066F04: ; 0x02066F04 + push {r3-r7, lr} + sub sp, #0x58 + add r5, r0, #0x0 + bl FUN_020669D4 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x2c] + add r0, r5, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x54] + add r0, r5, #0x0 + mov r1, #0x46 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x30] + add r0, r5, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x34] + add r0, r5, #0x0 + mov r1, #0x47 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x28] + add r0, r5, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x14] + add r0, r5, #0x0 + mov r1, #0x48 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x24] + add r0, r5, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x10] + add r0, r5, #0x0 + mov r1, #0x49 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x20] + add r0, r5, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0xc] + add r0, r5, #0x0 + mov r1, #0x4a + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x1c] + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x4b + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x18] + add r0, r5, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x38] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + mov r0, #0x0 + mov r1, #0x2c + bl FUN_02016998 + add r6, r0, #0x0 + ldr r1, [sp, #0x38] + add r0, r7, #0x0 + add r2, r6, #0x0 + bl FUN_0206A380 + mov r0, #0x49 + lsl r0, r0, #0x2 + cmp r7, r0 + bne _02066FFC + mov r0, #0x1 + b _0206701E +_02066FFC: + ldr r0, [sp, #0x34] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x34] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x0] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x30] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + add r0, r4, r0 + add r0, #0xa +_0206701E: + str r0, [sp, #0x50] + add r0, r5, #0x0 + mov r1, #0xa3 + add r2, sp, #0x50 + bl FUN_02067830 + ldr r0, [sp, #0x14] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x14] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x1] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x28] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x4c] + add r0, r5, #0x0 + bl FUN_02068854 + ldr r1, [sp, #0x4c] + mov r2, #0x1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02068894 + str r0, [sp, #0x4c] + add r0, r5, #0x0 + mov r1, #0xa4 + add r2, sp, #0x4c + bl FUN_02067830 + ldr r0, [sp, #0x10] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x10] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x2] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x24] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x48] + add r0, r5, #0x0 + bl FUN_02068854 + ldr r1, [sp, #0x48] + mov r2, #0x2 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02068894 + str r0, [sp, #0x48] + add r0, r5, #0x0 + mov r1, #0xa5 + add r2, sp, #0x48 + bl FUN_02067830 + ldr r0, [sp, #0xc] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0xc] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x3] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x20] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x44] + add r0, r5, #0x0 + bl FUN_02068854 + ldr r1, [sp, #0x44] + mov r2, #0x3 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02068894 + str r0, [sp, #0x44] + add r0, r5, #0x0 + mov r1, #0xa6 + add r2, sp, #0x44 + bl FUN_02067830 + ldr r0, [sp, #0x8] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x8] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x4] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x1c] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x40] + add r0, r5, #0x0 + bl FUN_02068854 + ldr r1, [sp, #0x40] + mov r2, #0x4 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02068894 + str r0, [sp, #0x40] + add r0, r5, #0x0 + mov r1, #0xa7 + add r2, sp, #0x40 + bl FUN_02067830 + ldr r0, [sp, #0x4] + asr r0, r0, #0x1 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x4] + add r1, r0, r1 + asr r0, r1, #0x2 + ldrb r1, [r6, #0x5] + lsl r2, r1, #0x1 + ldr r1, [sp, #0x18] + add r1, r1, r2 + add r0, r0, r1 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + add r0, r0, #0x5 + str r0, [sp, #0x3c] + add r0, r5, #0x0 + bl FUN_02068854 + ldr r1, [sp, #0x3c] + mov r2, #0x5 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02068894 + str r0, [sp, #0x3c] + add r0, r5, #0x0 + mov r1, #0xa8 + add r2, sp, #0x3c + bl FUN_02067830 + add r0, r6, #0x0 + bl FUN_02016A18 + ldr r1, [sp, #0x54] + cmp r1, #0x0 + bne _0206717C + ldr r0, [sp, #0x2c] + cmp r0, #0x0 + bne _020671A0 +_0206717C: + mov r0, #0x49 + lsl r0, r0, #0x2 + cmp r7, r0 + bne _0206718A + mov r0, #0x1 + str r0, [sp, #0x54] + b _020671A0 +_0206718A: + cmp r1, #0x0 + bne _02067194 + ldr r0, [sp, #0x50] + str r0, [sp, #0x54] + b _020671A0 +_02067194: + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x54] + sub r0, r1, r0 + add r0, r2, r0 + str r0, [sp, #0x54] +_020671A0: + ldr r0, [sp, #0x54] + cmp r0, #0x0 + beq _020671B0 + add r0, r5, #0x0 + mov r1, #0xa2 + add r2, sp, #0x54 + bl FUN_02067830 +_020671B0: + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02066A20 + add sp, #0x58 + pop {r3-r7, pc} + + thumb_func_start FUN_020671BC +FUN_020671BC: ; 0x020671BC + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02067204 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3D0 + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _02067204 + cmp r0, r1 + beq _020671FC + bl ErrorHandling +_020671FC: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] +_02067204: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02067234 + add r4, r0, #0x0 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02067230 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_02067230: + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02067234 +FUN_02067234: ; 0x02067234 + push {r3, lr} + add r3, r1, #0x0 + sub r3, #0x9f + cmp r3, #0xb + bhi _020672B6 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0206724A: ; jump table (using 16-bit offset) + .short _02067262 - _0206724A - 2; case 0 + .short _02067268 - _0206724A - 2; case 1 + .short _0206726E - _0206724A - 2; case 2 + .short _02067274 - _0206724A - 2; case 3 + .short _0206727A - _0206724A - 2; case 4 + .short _02067280 - _0206724A - 2; case 5 + .short _02067286 - _0206724A - 2; case 6 + .short _0206728C - _0206724A - 2; case 7 + .short _02067292 - _0206724A - 2; case 8 + .short _02067298 - _0206724A - 2; case 9 + .short _0206729E - _0206724A - 2; case 10 + .short _020672AA - _0206724A - 2; case 11 +_02067262: + add r0, #0x88 + ldr r0, [r0, #0x0] + pop {r3, pc} +_02067268: + add r0, #0x8c + ldrb r0, [r0, #0x0] + pop {r3, pc} +_0206726E: + add r0, #0x8d + ldrb r0, [r0, #0x0] + pop {r3, pc} +_02067274: + add r0, #0x8e + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206727A: + add r0, #0x90 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067280: + add r0, #0x92 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067286: + add r0, #0x94 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206728C: + add r0, #0x96 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067292: + add r0, #0x98 + ldrh r0, [r0, #0x0] + pop {r3, pc} +_02067298: + add r0, #0x9a + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206729E: + add r0, #0x9c + add r1, r2, #0x0 + bl FUN_020256D0 + mov r0, #0x1 + pop {r3, pc} +_020672AA: + add r0, #0xd4 + add r1, r2, #0x0 + bl FUN_02029C74 + mov r0, #0x1 + pop {r3, pc} +_020672B6: + bl FUN_0206731C + pop {r3, pc} + + thumb_func_start FUN_020672BC +FUN_020672BC: ; 0x020672BC + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _020672F8 + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _020672F8 + cmp r0, r1 + beq _020672F0 + bl ErrorHandling +_020672F0: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] +_020672F8: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0206731C + add r4, r0, #0x0 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _02067318 + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_02067318: + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0206731C +FUN_0206731C: ; 0x0206731C + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x4] + add r1, r0, #0x0 + mov r4, #0x0 + str r2, [sp, #0x8] + ldr r1, [r1, #0x0] + str r0, [sp, #0x0] + add r2, r4, #0x0 + bl FUN_0206A418 + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x1 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x3 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r1, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r0, #0xb2 + bls _02067366 + b _020674D8 +_02067366: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02067372: ; jump table (using 16-bit offset) + .short _020674DC - _02067372 - 2; case 0 + .short _020674E2 - _02067372 - 2; case 1 + .short _020674EC - _02067372 - 2; case 2 + .short _020674F6 - _02067372 - 2; case 3 + .short _02067500 - _02067372 - 2; case 4 + .short _0206754C - _02067372 - 2; case 5 + .short _0206755E - _02067372 - 2; case 6 + .short _02067562 - _02067372 - 2; case 7 + .short _02067566 - _02067372 - 2; case 8 + .short _0206756A - _02067372 - 2; case 9 + .short _0206756E - _02067372 - 2; case 10 + .short _02067572 - _02067372 - 2; case 11 + .short _02067576 - _02067372 - 2; case 12 + .short _0206757A - _02067372 - 2; case 13 + .short _0206757E - _02067372 - 2; case 14 + .short _02067582 - _02067372 - 2; case 15 + .short _02067586 - _02067372 - 2; case 16 + .short _0206758A - _02067372 - 2; case 17 + .short _0206758E - _02067372 - 2; case 18 + .short _02067592 - _02067372 - 2; case 19 + .short _02067596 - _02067372 - 2; case 20 + .short _0206759A - _02067372 - 2; case 21 + .short _0206759E - _02067372 - 2; case 22 + .short _020675A2 - _02067372 - 2; case 23 + .short _020675A6 - _02067372 - 2; case 24 + .short _020675AA - _02067372 - 2; case 25 + .short _020675AA - _02067372 - 2; case 26 + .short _020675AA - _02067372 - 2; case 27 + .short _020675AA - _02067372 - 2; case 28 + .short _020675AA - _02067372 - 2; case 29 + .short _020675AA - _02067372 - 2; case 30 + .short _020675AA - _02067372 - 2; case 31 + .short _020675AA - _02067372 - 2; case 32 + .short _020675AA - _02067372 - 2; case 33 + .short _020675AA - _02067372 - 2; case 34 + .short _020675AA - _02067372 - 2; case 35 + .short _020675AA - _02067372 - 2; case 36 + .short _020675AA - _02067372 - 2; case 37 + .short _020675AA - _02067372 - 2; case 38 + .short _020675AA - _02067372 - 2; case 39 + .short _020675AA - _02067372 - 2; case 40 + .short _020675AA - _02067372 - 2; case 41 + .short _020675AA - _02067372 - 2; case 42 + .short _020675AA - _02067372 - 2; case 43 + .short _020675AA - _02067372 - 2; case 44 + .short _020675AA - _02067372 - 2; case 45 + .short _020675AA - _02067372 - 2; case 46 + .short _020675AA - _02067372 - 2; case 47 + .short _020675AA - _02067372 - 2; case 48 + .short _020675AA - _02067372 - 2; case 49 + .short _020675AA - _02067372 - 2; case 50 + .short _020675AA - _02067372 - 2; case 51 + .short _020675AA - _02067372 - 2; case 52 + .short _020675AA - _02067372 - 2; case 53 + .short _020675D0 - _02067372 - 2; case 54 + .short _020675D0 - _02067372 - 2; case 55 + .short _020675D0 - _02067372 - 2; case 56 + .short _020675D0 - _02067372 - 2; case 57 + .short _020675DC - _02067372 - 2; case 58 + .short _020675DC - _02067372 - 2; case 59 + .short _020675DC - _02067372 - 2; case 60 + .short _020675DC - _02067372 - 2; case 61 + .short _020675E8 - _02067372 - 2; case 62 + .short _020675E8 - _02067372 - 2; case 63 + .short _020675E8 - _02067372 - 2; case 64 + .short _020675E8 - _02067372 - 2; case 65 + .short _020675F4 - _02067372 - 2; case 66 + .short _020675F4 - _02067372 - 2; case 67 + .short _020675F4 - _02067372 - 2; case 68 + .short _020675F4 - _02067372 - 2; case 69 + .short _0206760C - _02067372 - 2; case 70 + .short _02067614 - _02067372 - 2; case 71 + .short _0206761C - _02067372 - 2; case 72 + .short _02067624 - _02067372 - 2; case 73 + .short _0206762C - _02067372 - 2; case 74 + .short _02067634 - _02067372 - 2; case 75 + .short _0206763C - _02067372 - 2; case 76 + .short _0206764E - _02067372 - 2; case 77 + .short _02067654 - _02067372 - 2; case 78 + .short _02067654 - _02067372 - 2; case 79 + .short _02067654 - _02067372 - 2; case 80 + .short _02067654 - _02067372 - 2; case 81 + .short _02067654 - _02067372 - 2; case 82 + .short _02067654 - _02067372 - 2; case 83 + .short _02067654 - _02067372 - 2; case 84 + .short _02067654 - _02067372 - 2; case 85 + .short _02067654 - _02067372 - 2; case 86 + .short _02067654 - _02067372 - 2; case 87 + .short _02067654 - _02067372 - 2; case 88 + .short _02067654 - _02067372 - 2; case 89 + .short _02067654 - _02067372 - 2; case 90 + .short _02067654 - _02067372 - 2; case 91 + .short _02067654 - _02067372 - 2; case 92 + .short _02067654 - _02067372 - 2; case 93 + .short _02067654 - _02067372 - 2; case 94 + .short _02067654 - _02067372 - 2; case 95 + .short _02067654 - _02067372 - 2; case 96 + .short _02067654 - _02067372 - 2; case 97 + .short _02067654 - _02067372 - 2; case 98 + .short _02067654 - _02067372 - 2; case 99 + .short _02067654 - _02067372 - 2; case 100 + .short _02067654 - _02067372 - 2; case 101 + .short _02067654 - _02067372 - 2; case 102 + .short _02067654 - _02067372 - 2; case 103 + .short _02067654 - _02067372 - 2; case 104 + .short _02067654 - _02067372 - 2; case 105 + .short _02067654 - _02067372 - 2; case 106 + .short _02067654 - _02067372 - 2; case 107 + .short _02067654 - _02067372 - 2; case 108 + .short _02067654 - _02067372 - 2; case 109 + .short _0206767C - _02067372 - 2; case 110 + .short _02067684 - _02067372 - 2; case 111 + .short _0206768C - _02067372 - 2; case 112 + .short _02067694 - _02067372 - 2; case 113 + .short _02067698 - _02067372 - 2; case 114 + .short _020674D8 - _02067372 - 2; case 115 + .short _0206769C - _02067372 - 2; case 116 + .short _020674D8 - _02067372 - 2; case 117 + .short _020676D0 - _02067372 - 2; case 118 + .short _020676CC - _02067372 - 2; case 119 + .short _020676FE - _02067372 - 2; case 120 + .short _02067702 - _02067372 - 2; case 121 + .short _02067706 - _02067372 - 2; case 122 + .short _02067706 - _02067372 - 2; case 123 + .short _02067706 - _02067372 - 2; case 124 + .short _02067706 - _02067372 - 2; case 125 + .short _02067706 - _02067372 - 2; case 126 + .short _02067706 - _02067372 - 2; case 127 + .short _02067706 - _02067372 - 2; case 128 + .short _02067706 - _02067372 - 2; case 129 + .short _02067706 - _02067372 - 2; case 130 + .short _02067706 - _02067372 - 2; case 131 + .short _02067706 - _02067372 - 2; case 132 + .short _02067706 - _02067372 - 2; case 133 + .short _02067706 - _02067372 - 2; case 134 + .short _02067706 - _02067372 - 2; case 135 + .short _02067706 - _02067372 - 2; case 136 + .short _02067706 - _02067372 - 2; case 137 + .short _02067706 - _02067372 - 2; case 138 + .short _02067706 - _02067372 - 2; case 139 + .short _02067706 - _02067372 - 2; case 140 + .short _02067706 - _02067372 - 2; case 141 + .short _02067706 - _02067372 - 2; case 142 + .short _0206772C - _02067372 - 2; case 143 + .short _02067746 - _02067372 - 2; case 144 + .short _0206774E - _02067372 - 2; case 145 + .short _02067752 - _02067372 - 2; case 146 + .short _02067756 - _02067372 - 2; case 147 + .short _0206775A - _02067372 - 2; case 148 + .short _0206775E - _02067372 - 2; case 149 + .short _02067762 - _02067372 - 2; case 150 + .short _02067766 - _02067372 - 2; case 151 + .short _0206776A - _02067372 - 2; case 152 + .short _0206776E - _02067372 - 2; case 153 + .short _02067772 - _02067372 - 2; case 154 + .short _02067776 - _02067372 - 2; case 155 + .short _0206777E - _02067372 - 2; case 156 + .short _02067786 - _02067372 - 2; case 157 + .short _0206778A - _02067372 - 2; case 158 + .short _020674D8 - _02067372 - 2; case 159 + .short _02067540 - _02067372 - 2; case 160 + .short _020674D8 - _02067372 - 2; case 161 + .short _020674D8 - _02067372 - 2; case 162 + .short _020674D8 - _02067372 - 2; case 163 + .short _020674D8 - _02067372 - 2; case 164 + .short _020674D8 - _02067372 - 2; case 165 + .short _020674D8 - _02067372 - 2; case 166 + .short _020674D8 - _02067372 - 2; case 167 + .short _020674D8 - _02067372 - 2; case 168 + .short _020674D8 - _02067372 - 2; case 169 + .short _020674D8 - _02067372 - 2; case 170 + .short _02067506 - _02067372 - 2; case 171 + .short _02067510 - _02067372 - 2; case 172 + .short _02067522 - _02067372 - 2; case 173 + .short _0206778E - _02067372 - 2; case 174 + .short _020677C0 - _02067372 - 2; case 175 + .short _020677D8 - _02067372 - 2; case 176 + .short _020677D8 - _02067372 - 2; case 177 + .short _02067810 - _02067372 - 2; case 178 +_020674D8: + mov r4, #0x0 + b _0206781A +_020674DC: + ldr r0, [sp, #0x0] + ldr r4, [r0, #0x0] + b _0206781A +_020674E2: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1f + lsr r4, r0, #0x1f + b _0206781A +_020674EC: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1e + lsr r4, r0, #0x1f + b _0206781A +_020674F6: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + b _0206781A +_02067500: + ldr r0, [sp, #0x0] + ldrh r4, [r0, #0x6] + b _0206781A +_02067506: + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _0206753A + mov r4, #0x1 + b _0206781A +_02067510: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + bne _0206753A + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1 + lsr r4, r0, #0x1f + b _0206781A +_02067522: + ldrh r4, [r5, #0x0] + cmp r4, #0x0 + beq _0206753A + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1 + lsr r0, r0, #0x1f + bne _0206753C + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _0206753C +_0206753A: + b _0206781A +_0206753C: + ldr r4, _02067820 ; =0x000001EE + b _0206781A +_02067540: + ldrh r0, [r5, #0x0] + ldr r1, [r5, #0x8] + bl FUN_02068800 + add r4, r0, #0x0 + b _0206781A +_0206754C: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _0206755A + ldr r4, _02067820 ; =0x000001EE + b _0206781A +_0206755A: + ldrh r4, [r5, #0x0] + b _0206781A +_0206755E: + ldrh r4, [r5, #0x2] + b _0206781A +_02067562: + ldr r4, [r5, #0x4] + b _0206781A +_02067566: + ldr r4, [r5, #0x8] + b _0206781A +_0206756A: + ldrb r4, [r5, #0xc] + b _0206781A +_0206756E: + ldrb r4, [r5, #0xd] + b _0206781A +_02067572: + ldrb r4, [r5, #0xe] + b _0206781A +_02067576: + ldrb r4, [r5, #0xf] + b _0206781A +_0206757A: + ldrb r4, [r5, #0x10] + b _0206781A +_0206757E: + ldrb r4, [r5, #0x11] + b _0206781A +_02067582: + ldrb r4, [r5, #0x12] + b _0206781A +_02067586: + ldrb r4, [r5, #0x13] + b _0206781A +_0206758A: + ldrb r4, [r5, #0x14] + b _0206781A +_0206758E: + ldrb r4, [r5, #0x15] + b _0206781A +_02067592: + ldrb r4, [r5, #0x16] + b _0206781A +_02067596: + ldrb r4, [r5, #0x17] + b _0206781A +_0206759A: + ldrb r4, [r5, #0x18] + b _0206781A +_0206759E: + ldrb r4, [r5, #0x19] + b _0206781A +_020675A2: + ldrb r4, [r5, #0x1a] + b _0206781A +_020675A6: + ldrb r4, [r5, #0x1b] + b _0206781A +_020675AA: + ldr r2, [sp, #0x4] + mov r0, #0x1 + sub r2, #0x19 + add r1, r4, #0x0 + str r2, [sp, #0x4] + blx _ll_shl + ldr r2, [r5, #0x1c] + add r3, r4, #0x0 + and r3, r1 + and r2, r0 + mov r1, #0x0 + mov r0, #0x0 + eor r1, r3 + eor r0, r2 + orr r0, r1 + beq _02067676 + mov r4, #0x1 + b _0206781A +_020675D0: + ldr r0, [sp, #0x4] + sub r0, #0x36 + str r0, [sp, #0x4] + lsl r0, r0, #0x1 + ldrh r4, [r6, r0] + b _0206781A +_020675DC: + ldr r0, [sp, #0x4] + sub r0, #0x3a + str r0, [sp, #0x4] + add r0, r6, r0 + ldrb r4, [r0, #0x8] + b _0206781A +_020675E8: + ldr r0, [sp, #0x4] + sub r0, #0x3e + str r0, [sp, #0x4] + add r0, r6, r0 + ldrb r4, [r0, #0xc] + b _0206781A +_020675F4: + ldr r0, [sp, #0x4] + sub r0, #0x42 + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + lsl r0, r0, #0x1 + add r1, r6, r1 + ldrh r0, [r6, r0] + ldrb r1, [r1, #0xc] + bl FUN_0206AB30 + add r4, r0, #0x0 + b _0206781A +_0206760C: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1b + lsr r4, r0, #0x1b + b _0206781A +_02067614: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x16 + lsr r4, r0, #0x1b + b _0206781A +_0206761C: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x11 + lsr r4, r0, #0x1b + b _0206781A +_02067624: + ldr r0, [r6, #0x10] + lsl r0, r0, #0xc + lsr r4, r0, #0x1b + b _0206781A +_0206762C: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x7 + lsr r4, r0, #0x1b + b _0206781A +_02067634: + ldr r0, [r6, #0x10] + lsl r0, r0, #0x2 + lsr r4, r0, #0x1b + b _0206781A +_0206763C: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1f + bne _02067676 + ldr r0, [r6, #0x10] + lsl r0, r0, #0x1 + lsr r4, r0, #0x1f + b _0206781A +_0206764E: + ldr r0, [r6, #0x10] + lsr r4, r0, #0x1f + b _0206781A +_02067654: + ldr r2, [sp, #0x4] + mov r0, #0x1 + sub r2, #0x4e + add r1, r4, #0x0 + str r2, [sp, #0x4] + blx _ll_shl + ldr r2, [r6, #0x14] + add r3, r4, #0x0 + and r3, r1 + and r2, r0 + mov r1, #0x0 + mov r0, #0x0 + eor r1, r3 + eor r0, r2 + orr r0, r1 + bne _02067678 +_02067676: + b _0206781A +_02067678: + mov r4, #0x1 + b _0206781A +_0206767C: + ldrb r0, [r6, #0x18] + lsl r0, r0, #0x1f + lsr r4, r0, #0x1f + b _0206781A +_02067684: + ldrb r0, [r6, #0x18] + lsl r0, r0, #0x1d + lsr r4, r0, #0x1e + b _0206781A +_0206768C: + ldrb r0, [r6, #0x18] + lsl r0, r0, #0x18 + lsr r4, r0, #0x1b + b _0206781A +_02067694: + ldrb r4, [r6, #0x19] + b _0206781A +_02067698: + ldrh r4, [r6, #0x1a] + b _0206781A +_0206769C: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _020676B2 + ldr r0, _02067824 ; =0x000001EF + ldr r2, [sp, #0x8] + add r1, r4, #0x0 + bl FUN_0200A99C + b _0206781A +_020676B2: + ldr r1, [sp, #0x8] +_020676B4: + ldrh r0, [r7, #0x0] + add r4, r4, #0x1 + add r7, r7, #0x2 + strh r0, [r1, #0x0] + add r1, r1, #0x2 + cmp r4, #0xa + blo _020676B4 + ldr r2, _02067828 ; =0x0000FFFF + ldr r0, [sp, #0x8] + lsl r1, r4, #0x1 + strh r2, [r0, r1] + b _0206781A +_020676CC: + ldr r0, [r6, #0x10] + lsr r4, r0, #0x1f +_020676D0: + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x4] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + beq _020676F4 + ldr r0, _02067824 ; =0x000001EF + mov r1, #0x0 + bl FUN_0200AA50 + add r5, r0, #0x0 + ldr r0, [sp, #0x8] + add r1, r5, #0x0 + bl FUN_02021A74 + add r0, r5, #0x0 + bl FUN_02021A20 + b _0206781A +_020676F4: + ldr r0, [sp, #0x8] + add r1, r7, #0x0 + bl FUN_02021E28 + b _0206781A +_020676FE: + ldrb r4, [r7, #0x16] + b _0206781A +_02067702: + ldrb r4, [r7, #0x17] + b _0206781A +_02067706: + ldr r2, [sp, #0x4] + mov r0, #0x1 + sub r2, #0x7a + add r1, r4, #0x0 + str r2, [sp, #0x4] + blx _ll_shl + ldr r3, [r7, #0x18] + ldr r2, [r7, #0x1c] + and r3, r0 + and r2, r1 + mov r1, #0x0 + mov r0, #0x0 + eor r1, r2 + eor r0, r3 + orr r0, r1 + beq _0206781A + mov r4, #0x1 + b _0206781A +_0206772C: + ldr r2, [sp, #0x8] +_0206772E: + ldrh r0, [r1, #0x0] + add r4, r4, #0x1 + add r1, r1, #0x2 + strh r0, [r2, #0x0] + add r2, r2, #0x2 + cmp r4, #0x7 + blo _0206772E + ldr r2, _02067828 ; =0x0000FFFF + ldr r0, [sp, #0x8] + lsl r1, r4, #0x1 + strh r2, [r0, r1] + b _0206781A +_02067746: + ldr r0, [sp, #0x8] + bl FUN_02021E28 + b _0206781A +_0206774E: + ldrb r4, [r1, #0x10] + b _0206781A +_02067752: + ldrb r4, [r1, #0x11] + b _0206781A +_02067756: + ldrb r4, [r1, #0x12] + b _0206781A +_0206775A: + ldrb r4, [r1, #0x13] + b _0206781A +_0206775E: + ldrb r4, [r1, #0x14] + b _0206781A +_02067762: + ldrb r4, [r1, #0x15] + b _0206781A +_02067766: + ldrh r4, [r1, #0x16] + b _0206781A +_0206776A: + ldrh r4, [r1, #0x18] + b _0206781A +_0206776E: + ldrb r4, [r1, #0x1a] + b _0206781A +_02067772: + ldrb r4, [r1, #0x1b] + b _0206781A +_02067776: + ldrb r0, [r1, #0x1c] + lsl r0, r0, #0x19 + lsr r4, r0, #0x19 + b _0206781A +_0206777E: + ldrb r0, [r1, #0x1c] + lsl r0, r0, #0x18 + lsr r4, r0, #0x1f + b _0206781A +_02067786: + ldrb r4, [r1, #0x1d] + b _0206781A +_0206778A: + ldrh r4, [r1, #0x1e] + b _0206781A +_0206778E: + ldr r4, [r6, #0x10] + lsl r0, r4, #0x2 + lsr r0, r0, #0x1b + lsl r5, r0, #0x19 + lsl r0, r4, #0x7 + lsr r0, r0, #0x1b + lsl r3, r0, #0x14 + lsl r0, r4, #0xc + lsr r0, r0, #0x1b + lsl r2, r0, #0xf + lsl r0, r4, #0x11 + lsr r0, r0, #0x1b + lsl r1, r0, #0xa + lsl r0, r4, #0x1b + lsl r4, r4, #0x16 + lsr r4, r4, #0x1b + lsr r0, r0, #0x1b + lsl r4, r4, #0x5 + orr r0, r4 + orr r0, r1 + orr r0, r2 + orr r0, r3 + add r4, r5, #0x0 + orr r4, r0 + b _0206781A +_020677C0: + ldrh r0, [r5, #0x0] + cmp r0, #0x1d + beq _020677CA + cmp r0, #0x20 + bne _020677D4 +_020677CA: + ldr r0, [r6, #0x10] + lsr r0, r0, #0x1f + bne _020677D4 + mov r4, #0x0 + b _0206781A +_020677D4: + mov r4, #0x1 + b _0206781A +_020677D8: + ldrh r0, [r5, #0x0] + ldr r1, _0206782C ; =0x000001ED + cmp r0, r1 + bne _020677FC + ldrb r1, [r5, #0xd] + cmp r1, #0x79 + bne _020677FC + ldrh r0, [r5, #0x2] + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0206E7B8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069F24 + add r4, r0, #0x0 + b _0206781A +_020677FC: + ldrb r1, [r6, #0x18] + ldr r2, [sp, #0x4] + lsl r1, r1, #0x18 + sub r2, #0xaa + lsr r1, r1, #0x1b + str r2, [sp, #0x4] + bl FUN_02068654 + add r4, r0, #0x0 + b _0206781A +_02067810: + ldrh r0, [r5, #0x0] + ldr r2, [sp, #0x8] + add r1, r4, #0x0 + bl FUN_0200A99C +_0206781A: + add r0, r4, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02067820: .word 0x000001EE +_02067824: .word 0x000001EF +_02067828: .word 0x0000FFFF +_0206782C: .word 0x000001ED + + thumb_func_start FUN_02067830 +FUN_02067830: ; 0x02067830 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02067886 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3D0 + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _02067886 + cmp r0, r1 + beq _02067870 + bl ErrorHandling +_02067870: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 + pop {r4-r6, pc} +_02067886: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020678C0 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _020678BC + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_020678BC: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020678C0 +FUN_020678C0: ; 0x020678C0 + push {r3, lr} + add r3, r0, #0x0 + add r0, r1, #0x0 + sub r0, #0x9f + cmp r0, #0xb + bhi _02067958 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020678D8: ; jump table (using 16-bit offset) + .short _020678F0 - _020678D8 - 2; case 0 + .short _020678F8 - _020678D8 - 2; case 1 + .short _02067900 - _020678D8 - 2; case 2 + .short _02067908 - _020678D8 - 2; case 3 + .short _02067910 - _020678D8 - 2; case 4 + .short _02067918 - _020678D8 - 2; case 5 + .short _02067920 - _020678D8 - 2; case 6 + .short _02067928 - _020678D8 - 2; case 7 + .short _02067930 - _020678D8 - 2; case 8 + .short _02067938 - _020678D8 - 2; case 9 + .short _02067940 - _020678D8 - 2; case 10 + .short _0206794C - _020678D8 - 2; case 11 +_020678F0: + ldr r0, [r2, #0x0] + add r3, #0x88 + str r0, [r3, #0x0] + pop {r3, pc} +_020678F8: + ldrb r0, [r2, #0x0] + add r3, #0x8c + strb r0, [r3, #0x0] + pop {r3, pc} +_02067900: + ldrb r0, [r2, #0x0] + add r3, #0x8d + strb r0, [r3, #0x0] + pop {r3, pc} +_02067908: + ldrh r0, [r2, #0x0] + add r3, #0x8e + strh r0, [r3, #0x0] + pop {r3, pc} +_02067910: + ldrh r0, [r2, #0x0] + add r3, #0x90 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067918: + ldrh r0, [r2, #0x0] + add r3, #0x92 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067920: + ldrh r0, [r2, #0x0] + add r3, #0x94 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067928: + ldrh r0, [r2, #0x0] + add r3, #0x96 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067930: + ldrh r0, [r2, #0x0] + add r3, #0x98 + strh r0, [r3, #0x0] + pop {r3, pc} +_02067938: + ldrh r0, [r2, #0x0] + add r3, #0x9a + strh r0, [r3, #0x0] + pop {r3, pc} +_02067940: + add r3, #0x9c + add r0, r2, #0x0 + add r1, r3, #0x0 + bl FUN_020256D0 + pop {r3, pc} +_0206794C: + add r3, #0xd4 + add r0, r2, #0x0 + add r1, r3, #0x0 + bl FUN_02029C74 + pop {r3, pc} +_02067958: + add r0, r3, #0x0 + bl FUN_020679D8 + pop {r3, pc} + + thumb_func_start FUN_02067960 +FUN_02067960: ; 0x02067960 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _020679AA + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _020679AA + cmp r0, r1 + beq _02067994 + bl ErrorHandling +_02067994: + ldrh r1, [r5, #0x4] + mov r0, #0x4 + orr r0, r1 + strh r0, [r5, #0x4] + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 + pop {r4-r6, pc} +_020679AA: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020679D8 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bne _020679D4 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_020679D4: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020679D8 +FUN_020679D8: ; 0x020679D8 + push {r4-r7, lr} + sub sp, #0x4c + str r1, [sp, #0x4] + add r1, r0, #0x0 + add r4, r2, #0x0 + ldr r1, [r1, #0x0] + str r0, [sp, #0x0] + mov r2, #0x0 + bl FUN_0206A418 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x1 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x3 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r1, r0, #0x0 + ldr r0, [sp, #0x4] + cmp r0, #0xb2 + bls _02067A20 + b _02067FF6 +_02067A20: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02067A2C: ; jump table (using 16-bit offset) + .short _02067B92 - _02067A2C - 2; case 0 + .short _02067B9C - _02067A2C - 2; case 1 + .short _02067BBA - _02067A2C - 2; case 2 + .short _02067BD6 - _02067A2C - 2; case 3 + .short _02067BEE - _02067A2C - 2; case 4 + .short _02067BF8 - _02067A2C - 2; case 5 + .short _02067C00 - _02067A2C - 2; case 6 + .short _02067C08 - _02067A2C - 2; case 7 + .short _02067C10 - _02067A2C - 2; case 8 + .short _02067C18 - _02067A2C - 2; case 9 + .short _02067C20 - _02067A2C - 2; case 10 + .short _02067C28 - _02067A2C - 2; case 11 + .short _02067C30 - _02067A2C - 2; case 12 + .short _02067C38 - _02067A2C - 2; case 13 + .short _02067C40 - _02067A2C - 2; case 14 + .short _02067C48 - _02067A2C - 2; case 15 + .short _02067C50 - _02067A2C - 2; case 16 + .short _02067C58 - _02067A2C - 2; case 17 + .short _02067C60 - _02067A2C - 2; case 18 + .short _02067C68 - _02067A2C - 2; case 19 + .short _02067C70 - _02067A2C - 2; case 20 + .short _02067C78 - _02067A2C - 2; case 21 + .short _02067C80 - _02067A2C - 2; case 22 + .short _02067C88 - _02067A2C - 2; case 23 + .short _02067C90 - _02067A2C - 2; case 24 + .short _02067C98 - _02067A2C - 2; case 25 + .short _02067C98 - _02067A2C - 2; case 26 + .short _02067C98 - _02067A2C - 2; case 27 + .short _02067C98 - _02067A2C - 2; case 28 + .short _02067C98 - _02067A2C - 2; case 29 + .short _02067C98 - _02067A2C - 2; case 30 + .short _02067C98 - _02067A2C - 2; case 31 + .short _02067C98 - _02067A2C - 2; case 32 + .short _02067C98 - _02067A2C - 2; case 33 + .short _02067C98 - _02067A2C - 2; case 34 + .short _02067C98 - _02067A2C - 2; case 35 + .short _02067C98 - _02067A2C - 2; case 36 + .short _02067C98 - _02067A2C - 2; case 37 + .short _02067C98 - _02067A2C - 2; case 38 + .short _02067C98 - _02067A2C - 2; case 39 + .short _02067C98 - _02067A2C - 2; case 40 + .short _02067C98 - _02067A2C - 2; case 41 + .short _02067C98 - _02067A2C - 2; case 42 + .short _02067C98 - _02067A2C - 2; case 43 + .short _02067C98 - _02067A2C - 2; case 44 + .short _02067C98 - _02067A2C - 2; case 45 + .short _02067C98 - _02067A2C - 2; case 46 + .short _02067C98 - _02067A2C - 2; case 47 + .short _02067C98 - _02067A2C - 2; case 48 + .short _02067C98 - _02067A2C - 2; case 49 + .short _02067C98 - _02067A2C - 2; case 50 + .short _02067C98 - _02067A2C - 2; case 51 + .short _02067C98 - _02067A2C - 2; case 52 + .short _02067C98 - _02067A2C - 2; case 53 + .short _02067CC6 - _02067A2C - 2; case 54 + .short _02067CC6 - _02067A2C - 2; case 55 + .short _02067CC6 - _02067A2C - 2; case 56 + .short _02067CC6 - _02067A2C - 2; case 57 + .short _02067CD6 - _02067A2C - 2; case 58 + .short _02067CD6 - _02067A2C - 2; case 59 + .short _02067CD6 - _02067A2C - 2; case 60 + .short _02067CD6 - _02067A2C - 2; case 61 + .short _02067CE6 - _02067A2C - 2; case 62 + .short _02067CE6 - _02067A2C - 2; case 63 + .short _02067CE6 - _02067A2C - 2; case 64 + .short _02067CE6 - _02067A2C - 2; case 65 + .short _02067FF6 - _02067A2C - 2; case 66 + .short _02067FF6 - _02067A2C - 2; case 67 + .short _02067FF6 - _02067A2C - 2; case 68 + .short _02067FF6 - _02067A2C - 2; case 69 + .short _02067CF6 - _02067A2C - 2; case 70 + .short _02067D0A - _02067A2C - 2; case 71 + .short _02067D1E - _02067A2C - 2; case 72 + .short _02067D32 - _02067A2C - 2; case 73 + .short _02067D46 - _02067A2C - 2; case 74 + .short _02067D5A - _02067A2C - 2; case 75 + .short _02067D6E - _02067A2C - 2; case 76 + .short _02067D82 - _02067A2C - 2; case 77 + .short _02067D94 - _02067A2C - 2; case 78 + .short _02067D94 - _02067A2C - 2; case 79 + .short _02067D94 - _02067A2C - 2; case 80 + .short _02067D94 - _02067A2C - 2; case 81 + .short _02067D94 - _02067A2C - 2; case 82 + .short _02067D94 - _02067A2C - 2; case 83 + .short _02067D94 - _02067A2C - 2; case 84 + .short _02067D94 - _02067A2C - 2; case 85 + .short _02067D94 - _02067A2C - 2; case 86 + .short _02067D94 - _02067A2C - 2; case 87 + .short _02067D94 - _02067A2C - 2; case 88 + .short _02067D94 - _02067A2C - 2; case 89 + .short _02067D94 - _02067A2C - 2; case 90 + .short _02067D94 - _02067A2C - 2; case 91 + .short _02067D94 - _02067A2C - 2; case 92 + .short _02067D94 - _02067A2C - 2; case 93 + .short _02067D94 - _02067A2C - 2; case 94 + .short _02067D94 - _02067A2C - 2; case 95 + .short _02067D94 - _02067A2C - 2; case 96 + .short _02067D94 - _02067A2C - 2; case 97 + .short _02067D94 - _02067A2C - 2; case 98 + .short _02067D94 - _02067A2C - 2; case 99 + .short _02067D94 - _02067A2C - 2; case 100 + .short _02067D94 - _02067A2C - 2; case 101 + .short _02067D94 - _02067A2C - 2; case 102 + .short _02067D94 - _02067A2C - 2; case 103 + .short _02067D94 - _02067A2C - 2; case 104 + .short _02067D94 - _02067A2C - 2; case 105 + .short _02067D94 - _02067A2C - 2; case 106 + .short _02067D94 - _02067A2C - 2; case 107 + .short _02067D94 - _02067A2C - 2; case 108 + .short _02067D94 - _02067A2C - 2; case 109 + .short _02067DC2 - _02067A2C - 2; case 110 + .short _02067DD6 - _02067A2C - 2; case 111 + .short _02067DEA - _02067A2C - 2; case 112 + .short _02067DFE - _02067A2C - 2; case 113 + .short _02067E06 - _02067A2C - 2; case 114 + .short _02067FF6 - _02067A2C - 2; case 115 + .short _02067E2C - _02067A2C - 2; case 116 + .short _02067E0E - _02067A2C - 2; case 117 + .short _02067E6C - _02067A2C - 2; case 118 + .short _02067E40 - _02067A2C - 2; case 119 + .short _02067E7A - _02067A2C - 2; case 120 + .short _02067E82 - _02067A2C - 2; case 121 + .short _02067E8A - _02067A2C - 2; case 122 + .short _02067E8A - _02067A2C - 2; case 123 + .short _02067E8A - _02067A2C - 2; case 124 + .short _02067E8A - _02067A2C - 2; case 125 + .short _02067E8A - _02067A2C - 2; case 126 + .short _02067E8A - _02067A2C - 2; case 127 + .short _02067E8A - _02067A2C - 2; case 128 + .short _02067E8A - _02067A2C - 2; case 129 + .short _02067E8A - _02067A2C - 2; case 130 + .short _02067E8A - _02067A2C - 2; case 131 + .short _02067E8A - _02067A2C - 2; case 132 + .short _02067E8A - _02067A2C - 2; case 133 + .short _02067E8A - _02067A2C - 2; case 134 + .short _02067E8A - _02067A2C - 2; case 135 + .short _02067E8A - _02067A2C - 2; case 136 + .short _02067E8A - _02067A2C - 2; case 137 + .short _02067E8A - _02067A2C - 2; case 138 + .short _02067E8A - _02067A2C - 2; case 139 + .short _02067E8A - _02067A2C - 2; case 140 + .short _02067E8A - _02067A2C - 2; case 141 + .short _02067E8A - _02067A2C - 2; case 142 + .short _02067ECE - _02067A2C - 2; case 143 + .short _02067EE2 - _02067A2C - 2; case 144 + .short _02067EEE - _02067A2C - 2; case 145 + .short _02067EF6 - _02067A2C - 2; case 146 + .short _02067EFE - _02067A2C - 2; case 147 + .short _02067F06 - _02067A2C - 2; case 148 + .short _02067F0E - _02067A2C - 2; case 149 + .short _02067F16 - _02067A2C - 2; case 150 + .short _02067F1E - _02067A2C - 2; case 151 + .short _02067F26 - _02067A2C - 2; case 152 + .short _02067F2E - _02067A2C - 2; case 153 + .short _02067F36 - _02067A2C - 2; case 154 + .short _02067F3E - _02067A2C - 2; case 155 + .short _02067F52 - _02067A2C - 2; case 156 + .short _02067F66 - _02067A2C - 2; case 157 + .short _02067F6E - _02067A2C - 2; case 158 + .short _02067FF6 - _02067A2C - 2; case 159 + .short _02067FF6 - _02067A2C - 2; case 160 + .short _02067FF6 - _02067A2C - 2; case 161 + .short _02067FF6 - _02067A2C - 2; case 162 + .short _02067FF6 - _02067A2C - 2; case 163 + .short _02067FF6 - _02067A2C - 2; case 164 + .short _02067FF6 - _02067A2C - 2; case 165 + .short _02067FF6 - _02067A2C - 2; case 166 + .short _02067FF6 - _02067A2C - 2; case 167 + .short _02067FF6 - _02067A2C - 2; case 168 + .short _02067FF6 - _02067A2C - 2; case 169 + .short _02067FF6 - _02067A2C - 2; case 170 + .short _02067FF6 - _02067A2C - 2; case 171 + .short _02067FF6 - _02067A2C - 2; case 172 + .short _02067FF6 - _02067A2C - 2; case 173 + .short _02067F76 - _02067A2C - 2; case 174 + .short _02067FF6 - _02067A2C - 2; case 175 + .short _02067FF6 - _02067A2C - 2; case 176 + .short _02067FF6 - _02067A2C - 2; case 177 + .short _02067FDE - _02067A2C - 2; case 178 +_02067B92: + ldr r0, [sp, #0x0] + ldr r1, [r4, #0x0] + add sp, #0x4c + str r1, [r0, #0x0] + pop {r4-r7, pc} +_02067B9C: + bl ErrorHandling + ldr r0, [sp, #0x0] + ldrb r1, [r4, #0x0] + ldrh r2, [r0, #0x4] + mov r0, #0x1 + bic r2, r0 + mov r0, #0x1 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x4] + pop {r4-r7, pc} +_02067BBA: + bl ErrorHandling + ldr r0, [sp, #0x0] + ldrh r1, [r0, #0x4] + mov r0, #0x2 + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1e + orr r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x4] + pop {r4-r7, pc} +_02067BD6: + ldr r0, [sp, #0x0] + ldrh r1, [r0, #0x4] + mov r0, #0x4 + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1d + orr r1, r0 + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x4] + pop {r4-r7, pc} +_02067BEE: + ldrh r1, [r4, #0x0] + ldr r0, [sp, #0x0] + add sp, #0x4c + strh r1, [r0, #0x6] + pop {r4-r7, pc} +_02067BF8: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r7, #0x0] + pop {r4-r7, pc} +_02067C00: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r7, #0x2] + pop {r4-r7, pc} +_02067C08: + ldr r0, [r4, #0x0] + add sp, #0x4c + str r0, [r7, #0x4] + pop {r4-r7, pc} +_02067C10: + ldr r0, [r4, #0x0] + add sp, #0x4c + str r0, [r7, #0x8] + pop {r4-r7, pc} +_02067C18: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xc] + pop {r4-r7, pc} +_02067C20: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xd] + pop {r4-r7, pc} +_02067C28: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xe] + pop {r4-r7, pc} +_02067C30: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0xf] + pop {r4-r7, pc} +_02067C38: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x10] + pop {r4-r7, pc} +_02067C40: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x11] + pop {r4-r7, pc} +_02067C48: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x12] + pop {r4-r7, pc} +_02067C50: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x13] + pop {r4-r7, pc} +_02067C58: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x14] + pop {r4-r7, pc} +_02067C60: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x15] + pop {r4-r7, pc} +_02067C68: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x16] + pop {r4-r7, pc} +_02067C70: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x17] + pop {r4-r7, pc} +_02067C78: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x18] + pop {r4-r7, pc} +_02067C80: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x19] + pop {r4-r7, pc} +_02067C88: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x1a] + pop {r4-r7, pc} +_02067C90: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r7, #0x1b] + pop {r4-r7, pc} +_02067C98: + ldrb r4, [r4, #0x0] + ldr r2, [sp, #0x4] + mov r1, #0x0 + sub r2, #0x19 + add r0, r4, #0x0 + str r2, [sp, #0x4] + blx _ll_shl + cmp r4, #0x0 + beq _02067CB6 + ldr r1, [r7, #0x1c] + add sp, #0x4c + orr r0, r1 + str r0, [r7, #0x1c] + pop {r4-r7, pc} +_02067CB6: + mov r1, #0x0 + sub r1, r1, #0x1 + ldr r2, [r7, #0x1c] + eor r0, r1 + and r0, r2 + add sp, #0x4c + str r0, [r7, #0x1c] + pop {r4-r7, pc} +_02067CC6: + ldr r0, [sp, #0x4] + ldrh r1, [r4, #0x0] + sub r0, #0x36 + str r0, [sp, #0x4] + lsl r0, r0, #0x1 + add sp, #0x4c + strh r1, [r5, r0] + pop {r4-r7, pc} +_02067CD6: + ldr r0, [sp, #0x4] + ldrb r1, [r4, #0x0] + sub r0, #0x3a + str r0, [sp, #0x4] + add r0, r5, r0 + strb r1, [r0, #0x8] + add sp, #0x4c + pop {r4-r7, pc} +_02067CE6: + ldr r0, [sp, #0x4] + ldrb r1, [r4, #0x0] + sub r0, #0x3e + str r0, [sp, #0x4] + add r0, r5, r0 + strb r1, [r0, #0xc] + add sp, #0x4c + pop {r4-r7, pc} +_02067CF6: + ldr r2, [r5, #0x10] + mov r0, #0x1f + bic r2, r0 + ldrb r1, [r4, #0x0] + mov r0, #0x1f + add sp, #0x4c + and r0, r1 + orr r0, r2 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D0A: + ldr r1, [r5, #0x10] + ldr r0, _02067FFC ; =0xFFFFFC1F + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D1E: + ldr r1, [r5, #0x10] + ldr r0, _02068000 ; =0xFFFF83FF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x11 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D32: + ldr r1, [r5, #0x10] + ldr r0, _02068004 ; =0xFFF07FFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0xc + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D46: + ldr r1, [r5, #0x10] + ldr r0, _02068008 ; =0xFE0FFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x7 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D5A: + ldr r1, [r5, #0x10] + ldr r0, _0206800C ; =0xC1FFFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D6E: + ldr r1, [r5, #0x10] + ldr r0, _02068010 ; =0xBFFFFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D82: + ldr r1, [r5, #0x10] + ldr r0, _02068014 ; =0x7FFFFFFF + add sp, #0x4c + and r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067D94: + ldrb r4, [r4, #0x0] + ldr r2, [sp, #0x4] + mov r1, #0x0 + sub r2, #0x4e + add r0, r4, #0x0 + str r2, [sp, #0x4] + blx _ll_shl + cmp r4, #0x0 + beq _02067DB2 + ldr r1, [r5, #0x14] + add sp, #0x4c + orr r0, r1 + str r0, [r5, #0x14] + pop {r4-r7, pc} +_02067DB2: + mov r1, #0x0 + sub r1, r1, #0x1 + ldr r2, [r5, #0x14] + eor r0, r1 + and r0, r2 + add sp, #0x4c + str r0, [r5, #0x14] + pop {r4-r7, pc} +_02067DC2: + ldrb r2, [r5, #0x18] + ldrb r1, [r4, #0x0] + mov r0, #0x1 + bic r2, r0 + mov r0, #0x1 + and r0, r1 + orr r0, r2 + add sp, #0x4c + strb r0, [r5, #0x18] + pop {r4-r7, pc} +_02067DD6: + ldrb r1, [r5, #0x18] + mov r0, #0x6 + add sp, #0x4c + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1d + orr r0, r1 + strb r0, [r5, #0x18] + pop {r4-r7, pc} +_02067DEA: + ldrb r1, [r5, #0x18] + mov r0, #0xf8 + add sp, #0x4c + bic r1, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x18 + orr r0, r1 + strb r0, [r5, #0x18] + pop {r4-r7, pc} +_02067DFE: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r5, #0x19] + pop {r4-r7, pc} +_02067E06: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r5, #0x1a] + pop {r4-r7, pc} +_02067E0E: + ldrh r0, [r7, #0x0] + mov r1, #0x0 + add r2, sp, #0x34 + bl FUN_0200A99C + add r0, sp, #0x34 + add r1, r4, #0x0 + bl StringNotEqual + ldr r2, [r5, #0x10] + ldr r1, _02068014 ; =0x7FFFFFFF + lsl r0, r0, #0x1f + and r1, r2 + orr r0, r1 + str r0, [r5, #0x10] +_02067E2C: + mov r1, #0x0 +_02067E2E: + ldrh r0, [r4, #0x0] + add r1, r1, #0x1 + add r4, r4, #0x2 + strh r0, [r6, #0x0] + add r6, r6, #0x2 + cmp r1, #0xb + blo _02067E2E + add sp, #0x4c + pop {r4-r7, pc} +_02067E40: + ldrh r0, [r7, #0x0] + add r2, sp, #0x1c + mov r1, #0x0 + add r2, #0x2 + bl FUN_0200A99C + add r0, r4, #0x0 + add r1, sp, #0x8 + mov r2, #0xb + bl FUN_02021EF0 + add r0, sp, #0x1c + add r0, #0x2 + add r1, sp, #0x8 + bl StringNotEqual + ldr r2, [r5, #0x10] + ldr r1, _02068014 ; =0x7FFFFFFF + lsl r0, r0, #0x1f + and r1, r2 + orr r0, r1 + str r0, [r5, #0x10] +_02067E6C: + add r0, r4, #0x0 + add r1, r6, #0x0 + mov r2, #0xb + bl FUN_02021EF0 + add sp, #0x4c + pop {r4-r7, pc} +_02067E7A: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r6, #0x16] + pop {r4-r7, pc} +_02067E82: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r6, #0x17] + pop {r4-r7, pc} +_02067E8A: + ldrb r4, [r4, #0x0] + ldr r2, [sp, #0x4] + mov r1, #0x0 + sub r2, #0x7a + add r0, r4, #0x0 + str r2, [sp, #0x4] + blx _ll_shl + cmp r4, #0x0 + beq _02067EB2 + add r4, r6, #0x0 + add r4, #0x18 + ldr r3, [r6, #0x18] + ldr r2, [r4, #0x4] + orr r0, r3 + orr r1, r2 + str r0, [r6, #0x18] + add sp, #0x4c + str r1, [r4, #0x4] + pop {r4-r7, pc} +_02067EB2: + add r4, r6, #0x0 + mov r5, #0x0 + mvn r5, r5 + add r4, #0x18 + ldr r3, [r6, #0x18] + eor r0, r5 + ldr r2, [r4, #0x4] + eor r1, r5 + and r0, r3 + and r1, r2 + str r0, [r6, #0x18] + add sp, #0x4c + str r1, [r4, #0x4] + pop {r4-r7, pc} +_02067ECE: + mov r2, #0x0 +_02067ED0: + ldrh r0, [r4, #0x0] + add r2, r2, #0x1 + add r4, r4, #0x2 + strh r0, [r1, #0x0] + add r1, r1, #0x2 + cmp r2, #0x8 + blo _02067ED0 + add sp, #0x4c + pop {r4-r7, pc} +_02067EE2: + add r0, r4, #0x0 + mov r2, #0x8 + bl FUN_02021EF0 + add sp, #0x4c + pop {r4-r7, pc} +_02067EEE: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x10] + pop {r4-r7, pc} +_02067EF6: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x11] + pop {r4-r7, pc} +_02067EFE: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x12] + pop {r4-r7, pc} +_02067F06: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x13] + pop {r4-r7, pc} +_02067F0E: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x14] + pop {r4-r7, pc} +_02067F16: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x15] + pop {r4-r7, pc} +_02067F1E: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r1, #0x16] + pop {r4-r7, pc} +_02067F26: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r1, #0x18] + pop {r4-r7, pc} +_02067F2E: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x1a] + pop {r4-r7, pc} +_02067F36: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x1b] + pop {r4-r7, pc} +_02067F3E: + ldrb r3, [r1, #0x1c] + ldrb r2, [r4, #0x0] + mov r0, #0x7f + bic r3, r0 + mov r0, #0x7f + and r0, r2 + orr r0, r3 + strb r0, [r1, #0x1c] + add sp, #0x4c + pop {r4-r7, pc} +_02067F52: + ldrb r2, [r1, #0x1c] + mov r0, #0x80 + add sp, #0x4c + bic r2, r0 + ldrb r0, [r4, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x18 + orr r0, r2 + strb r0, [r1, #0x1c] + pop {r4-r7, pc} +_02067F66: + ldrb r0, [r4, #0x0] + add sp, #0x4c + strb r0, [r1, #0x1d] + pop {r4-r7, pc} +_02067F6E: + ldrh r0, [r4, #0x0] + add sp, #0x4c + strh r0, [r1, #0x1e] + pop {r4-r7, pc} +_02067F76: + ldr r2, [r5, #0x10] + mov r0, #0x1f + bic r2, r0 + ldr r1, [r4, #0x0] + mov r0, #0x1f + and r1, r0 + and r0, r1 + add r1, r2, #0x0 + orr r1, r0 + ldr r0, _02067FFC ; =0xFFFFFC1F + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + add sp, #0x4c + lsr r0, r0, #0x5 + lsl r0, r0, #0x1b + lsr r0, r0, #0x16 + orr r1, r0 + ldr r0, _02068000 ; =0xFFFF83FF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0xa + lsl r0, r0, #0x1b + lsr r0, r0, #0x11 + orr r1, r0 + ldr r0, _02068004 ; =0xFFF07FFF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0xf + lsl r0, r0, #0x1b + lsr r0, r0, #0xc + orr r1, r0 + ldr r0, _02068008 ; =0xFE0FFFFF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0x14 + lsl r0, r0, #0x1b + lsr r0, r0, #0x7 + orr r1, r0 + ldr r0, _0206800C ; =0xC1FFFFFF + str r1, [r5, #0x10] + and r1, r0 + ldr r0, [r4, #0x0] + lsr r0, r0, #0x19 + lsl r0, r0, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02067FDE: + ldrh r0, [r7, #0x0] + mov r1, #0x0 + bl FUN_0200AA50 + add r4, r0, #0x0 + add r1, r6, #0x0 + mov r2, #0xb + bl FUN_02021EF0 + add r0, r4, #0x0 + bl FUN_02021A20 +_02067FF6: + add sp, #0x4c + pop {r4-r7, pc} + nop +_02067FFC: .word 0xFFFFFC1F +_02068000: .word 0xFFFF83FF +_02068004: .word 0xFFF07FFF +_02068008: .word 0xFE0FFFFF +_0206800C: .word 0xC1FFFFFF +_02068010: .word 0xBFFFFFFF +_02068014: .word 0x7FFFFFFF + + thumb_func_start FUN_02068018 +FUN_02068018: ; 0x02068018 + push {r4-r6, lr} + add r5, r0, #0x0 + ldrh r0, [r5, #0x4] + add r4, r1, #0x0 + add r6, r2, #0x0 + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _02068066 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3D0 + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + ldrh r1, [r5, #0x6] + cmp r0, r1 + beq _02068066 + cmp r0, r1 + beq _02068058 + bl ErrorHandling +_02068058: + ldrh r2, [r5, #0x6] + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 + pop {r4-r6, pc} +_02068066: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020680A0 + ldrh r0, [r5, #0x4] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bne _0206809C + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 +_0206809C: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020680A0 +FUN_020680A0: ; 0x020680A0 + push {r3, lr} + add r3, r1, #0x0 + sub r3, #0x9f + cmp r3, #0xa + bhi _020680F8 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_020680B6: ; jump table (using 16-bit offset) + .short _020680F2 - _020680B6 - 2; case 0 + .short _020680F2 - _020680B6 - 2; case 1 + .short _020680F2 - _020680B6 - 2; case 2 + .short _020680CC - _020680B6 - 2; case 3 + .short _020680F2 - _020680B6 - 2; case 4 + .short _020680F2 - _020680B6 - 2; case 5 + .short _020680F2 - _020680B6 - 2; case 6 + .short _020680F2 - _020680B6 - 2; case 7 + .short _020680F2 - _020680B6 - 2; case 8 + .short _020680F2 - _020680B6 - 2; case 9 + .short _020680F2 - _020680B6 - 2; case 10 +_020680CC: + add r1, r0, #0x0 + add r1, #0x90 + ldrh r3, [r1, #0x0] + add r1, r0, #0x0 + add r1, #0x8e + ldrh r1, [r1, #0x0] + add r1, r1, r2 + cmp r1, r3 + ble _020680E4 + add r0, #0x8e + strh r3, [r0, #0x0] + pop {r3, pc} +_020680E4: + add r1, r0, #0x0 + add r1, #0x8e + ldrh r1, [r1, #0x0] + add r0, #0x8e + add r1, r1, r2 + strh r1, [r0, #0x0] + pop {r3, pc} +_020680F2: + bl ErrorHandling + pop {r3, pc} +_020680F8: + bl FUN_02068100 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02068100 +FUN_02068100: ; 0x02068100 + push {r4-r7, lr} + sub sp, #0xc + add r7, r1, #0x0 + add r1, r0, #0x0 + add r6, r2, #0x0 + ldr r1, [r1, #0x0] + str r0, [sp, #0x0] + mov r2, #0x0 + bl FUN_0206A418 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x1 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + ldr r0, [sp, #0x0] + mov r2, #0x3 + add r1, r0, #0x0 + ldr r1, [r1, #0x0] + bl FUN_0206A418 + cmp r7, #0xb2 + bls _02068142 + b _02068500 +_02068142: + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206814E: ; jump table (using 16-bit offset) + .short _02068500 - _0206814E - 2; case 0 + .short _02068500 - _0206814E - 2; case 1 + .short _02068500 - _0206814E - 2; case 2 + .short _02068500 - _0206814E - 2; case 3 + .short _02068500 - _0206814E - 2; case 4 + .short _02068500 - _0206814E - 2; case 5 + .short _02068500 - _0206814E - 2; case 6 + .short _02068500 - _0206814E - 2; case 7 + .short _020682B4 - _0206814E - 2; case 8 + .short _020682D8 - _0206814E - 2; case 9 + .short _02068500 - _0206814E - 2; case 10 + .short _02068500 - _0206814E - 2; case 11 + .short _02068500 - _0206814E - 2; case 12 + .short _020682EE - _0206814E - 2; case 13 + .short _020682F8 - _0206814E - 2; case 14 + .short _02068302 - _0206814E - 2; case 15 + .short _0206830C - _0206814E - 2; case 16 + .short _02068316 - _0206814E - 2; case 17 + .short _02068320 - _0206814E - 2; case 18 + .short _0206832A - _0206814E - 2; case 19 + .short _02068340 - _0206814E - 2; case 20 + .short _02068356 - _0206814E - 2; case 21 + .short _0206836C - _0206814E - 2; case 22 + .short _02068382 - _0206814E - 2; case 23 + .short _02068398 - _0206814E - 2; case 24 + .short _02068500 - _0206814E - 2; case 25 + .short _02068500 - _0206814E - 2; case 26 + .short _02068500 - _0206814E - 2; case 27 + .short _02068500 - _0206814E - 2; case 28 + .short _02068500 - _0206814E - 2; case 29 + .short _02068500 - _0206814E - 2; case 30 + .short _02068500 - _0206814E - 2; case 31 + .short _02068500 - _0206814E - 2; case 32 + .short _02068500 - _0206814E - 2; case 33 + .short _02068500 - _0206814E - 2; case 34 + .short _02068500 - _0206814E - 2; case 35 + .short _02068500 - _0206814E - 2; case 36 + .short _02068500 - _0206814E - 2; case 37 + .short _02068500 - _0206814E - 2; case 38 + .short _02068500 - _0206814E - 2; case 39 + .short _02068500 - _0206814E - 2; case 40 + .short _02068500 - _0206814E - 2; case 41 + .short _02068500 - _0206814E - 2; case 42 + .short _02068500 - _0206814E - 2; case 43 + .short _02068500 - _0206814E - 2; case 44 + .short _02068500 - _0206814E - 2; case 45 + .short _02068500 - _0206814E - 2; case 46 + .short _02068500 - _0206814E - 2; case 47 + .short _02068500 - _0206814E - 2; case 48 + .short _02068500 - _0206814E - 2; case 49 + .short _02068500 - _0206814E - 2; case 50 + .short _02068500 - _0206814E - 2; case 51 + .short _02068500 - _0206814E - 2; case 52 + .short _02068500 - _0206814E - 2; case 53 + .short _02068500 - _0206814E - 2; case 54 + .short _02068500 - _0206814E - 2; case 55 + .short _02068500 - _0206814E - 2; case 56 + .short _02068500 - _0206814E - 2; case 57 + .short _020683AE - _0206814E - 2; case 58 + .short _020683AE - _0206814E - 2; case 59 + .short _020683AE - _0206814E - 2; case 60 + .short _020683AE - _0206814E - 2; case 61 + .short _020683EA - _0206814E - 2; case 62 + .short _020683EA - _0206814E - 2; case 63 + .short _020683EA - _0206814E - 2; case 64 + .short _020683EA - _0206814E - 2; case 65 + .short _02068504 - _0206814E - 2; case 66 + .short _02068504 - _0206814E - 2; case 67 + .short _02068504 - _0206814E - 2; case 68 + .short _02068504 - _0206814E - 2; case 69 + .short _02068404 - _0206814E - 2; case 70 + .short _0206842E - _0206814E - 2; case 71 + .short _02068458 - _0206814E - 2; case 72 + .short _02068482 - _0206814E - 2; case 73 + .short _020684AC - _0206814E - 2; case 74 + .short _020684D6 - _0206814E - 2; case 75 + .short _02068500 - _0206814E - 2; case 76 + .short _02068500 - _0206814E - 2; case 77 + .short _02068500 - _0206814E - 2; case 78 + .short _02068500 - _0206814E - 2; case 79 + .short _02068500 - _0206814E - 2; case 80 + .short _02068500 - _0206814E - 2; case 81 + .short _02068500 - _0206814E - 2; case 82 + .short _02068500 - _0206814E - 2; case 83 + .short _02068500 - _0206814E - 2; case 84 + .short _02068500 - _0206814E - 2; case 85 + .short _02068500 - _0206814E - 2; case 86 + .short _02068500 - _0206814E - 2; case 87 + .short _02068500 - _0206814E - 2; case 88 + .short _02068500 - _0206814E - 2; case 89 + .short _02068500 - _0206814E - 2; case 90 + .short _02068500 - _0206814E - 2; case 91 + .short _02068500 - _0206814E - 2; case 92 + .short _02068500 - _0206814E - 2; case 93 + .short _02068500 - _0206814E - 2; case 94 + .short _02068500 - _0206814E - 2; case 95 + .short _02068500 - _0206814E - 2; case 96 + .short _02068500 - _0206814E - 2; case 97 + .short _02068500 - _0206814E - 2; case 98 + .short _02068500 - _0206814E - 2; case 99 + .short _02068500 - _0206814E - 2; case 100 + .short _02068500 - _0206814E - 2; case 101 + .short _02068500 - _0206814E - 2; case 102 + .short _02068500 - _0206814E - 2; case 103 + .short _02068500 - _0206814E - 2; case 104 + .short _02068500 - _0206814E - 2; case 105 + .short _02068500 - _0206814E - 2; case 106 + .short _02068500 - _0206814E - 2; case 107 + .short _02068500 - _0206814E - 2; case 108 + .short _02068500 - _0206814E - 2; case 109 + .short _02068500 - _0206814E - 2; case 110 + .short _02068500 - _0206814E - 2; case 111 + .short _02068500 - _0206814E - 2; case 112 + .short _02068500 - _0206814E - 2; case 113 + .short _02068500 - _0206814E - 2; case 114 + .short _02068500 - _0206814E - 2; case 115 + .short _02068500 - _0206814E - 2; case 116 + .short _02068500 - _0206814E - 2; case 117 + .short _02068500 - _0206814E - 2; case 118 + .short _02068500 - _0206814E - 2; case 119 + .short _02068500 - _0206814E - 2; case 120 + .short _02068500 - _0206814E - 2; case 121 + .short _02068500 - _0206814E - 2; case 122 + .short _02068500 - _0206814E - 2; case 123 + .short _02068500 - _0206814E - 2; case 124 + .short _02068500 - _0206814E - 2; case 125 + .short _02068500 - _0206814E - 2; case 126 + .short _02068500 - _0206814E - 2; case 127 + .short _02068500 - _0206814E - 2; case 128 + .short _02068500 - _0206814E - 2; case 129 + .short _02068500 - _0206814E - 2; case 130 + .short _02068500 - _0206814E - 2; case 131 + .short _02068500 - _0206814E - 2; case 132 + .short _02068500 - _0206814E - 2; case 133 + .short _02068500 - _0206814E - 2; case 134 + .short _02068500 - _0206814E - 2; case 135 + .short _02068500 - _0206814E - 2; case 136 + .short _02068500 - _0206814E - 2; case 137 + .short _02068500 - _0206814E - 2; case 138 + .short _02068500 - _0206814E - 2; case 139 + .short _02068500 - _0206814E - 2; case 140 + .short _02068500 - _0206814E - 2; case 141 + .short _02068500 - _0206814E - 2; case 142 + .short _02068500 - _0206814E - 2; case 143 + .short _02068500 - _0206814E - 2; case 144 + .short _02068500 - _0206814E - 2; case 145 + .short _02068500 - _0206814E - 2; case 146 + .short _02068500 - _0206814E - 2; case 147 + .short _02068500 - _0206814E - 2; case 148 + .short _02068500 - _0206814E - 2; case 149 + .short _02068500 - _0206814E - 2; case 150 + .short _02068500 - _0206814E - 2; case 151 + .short _02068500 - _0206814E - 2; case 152 + .short _02068500 - _0206814E - 2; case 153 + .short _02068500 - _0206814E - 2; case 154 + .short _02068500 - _0206814E - 2; case 155 + .short _02068500 - _0206814E - 2; case 156 + .short _02068500 - _0206814E - 2; case 157 + .short _02068500 - _0206814E - 2; case 158 + .short _02068500 - _0206814E - 2; case 159 + .short _02068500 - _0206814E - 2; case 160 + .short _02068500 - _0206814E - 2; case 161 + .short _02068500 - _0206814E - 2; case 162 + .short _02068500 - _0206814E - 2; case 163 + .short _02068500 - _0206814E - 2; case 164 + .short _02068500 - _0206814E - 2; case 165 + .short _02068500 - _0206814E - 2; case 166 + .short _02068500 - _0206814E - 2; case 167 + .short _02068500 - _0206814E - 2; case 168 + .short _02068500 - _0206814E - 2; case 169 + .short _02068500 - _0206814E - 2; case 170 + .short _02068500 - _0206814E - 2; case 171 + .short _02068500 - _0206814E - 2; case 172 + .short _02068500 - _0206814E - 2; case 173 + .short _02068500 - _0206814E - 2; case 174 + .short _02068500 - _0206814E - 2; case 175 + .short _02068500 - _0206814E - 2; case 176 + .short _02068500 - _0206814E - 2; case 177 + .short _02068500 - _0206814E - 2; case 178 +_020682B4: + ldrh r0, [r4, #0x0] + mov r1, #0x64 + bl FUN_02068758 + ldr r1, [r4, #0x8] + add r1, r1, r6 + cmp r1, r0 + bls _020682D2 + ldrh r0, [r4, #0x0] + mov r1, #0x64 + bl FUN_02068758 + add sp, #0xc + str r0, [r4, #0x8] + pop {r4-r7, pc} +_020682D2: + add sp, #0xc + str r1, [r4, #0x8] + pop {r4-r7, pc} +_020682D8: + ldrb r0, [r4, #0xc] + add r0, r0, r6 + cmp r0, #0xff + ble _020682E8 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4-r7, pc} +_020682E8: + add sp, #0xc + strb r0, [r4, #0xc] + pop {r4-r7, pc} +_020682EE: + ldrb r0, [r4, #0x10] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x10] + pop {r4-r7, pc} +_020682F8: + ldrb r0, [r4, #0x11] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x11] + pop {r4-r7, pc} +_02068302: + ldrb r0, [r4, #0x12] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x12] + pop {r4-r7, pc} +_0206830C: + ldrb r0, [r4, #0x13] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x13] + pop {r4-r7, pc} +_02068316: + ldrb r0, [r4, #0x14] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x14] + pop {r4-r7, pc} +_02068320: + ldrb r0, [r4, #0x15] + add sp, #0xc + add r0, r0, r6 + strb r0, [r4, #0x15] + pop {r4-r7, pc} +_0206832A: + ldrb r0, [r4, #0x16] + add r0, r0, r6 + cmp r0, #0xff + ble _0206833A + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x16] + pop {r4-r7, pc} +_0206833A: + add sp, #0xc + strb r0, [r4, #0x16] + pop {r4-r7, pc} +_02068340: + ldrb r0, [r4, #0x17] + add r0, r0, r6 + cmp r0, #0xff + ble _02068350 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x17] + pop {r4-r7, pc} +_02068350: + add sp, #0xc + strb r0, [r4, #0x17] + pop {r4-r7, pc} +_02068356: + ldrb r0, [r4, #0x18] + add r0, r0, r6 + cmp r0, #0xff + ble _02068366 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x18] + pop {r4-r7, pc} +_02068366: + add sp, #0xc + strb r0, [r4, #0x18] + pop {r4-r7, pc} +_0206836C: + ldrb r0, [r4, #0x19] + add r0, r0, r6 + cmp r0, #0xff + ble _0206837C + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x19] + pop {r4-r7, pc} +_0206837C: + add sp, #0xc + strb r0, [r4, #0x19] + pop {r4-r7, pc} +_02068382: + ldrb r0, [r4, #0x1a] + add r0, r0, r6 + cmp r0, #0xff + ble _02068392 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x1a] + pop {r4-r7, pc} +_02068392: + add sp, #0xc + strb r0, [r4, #0x1a] + pop {r4-r7, pc} +_02068398: + ldrb r0, [r4, #0x1b] + add r0, r0, r6 + cmp r0, #0xff + ble _020683A8 + mov r0, #0xff + add sp, #0xc + strb r0, [r4, #0x1b] + pop {r4-r7, pc} +_020683A8: + add sp, #0xc + strb r0, [r4, #0x1b] + pop {r4-r7, pc} +_020683AE: + add r0, r5, #0x0 + str r0, [sp, #0x4] + add r0, #0xc + str r0, [sp, #0x4] + sub r7, #0x3a + ldr r1, [sp, #0x4] + lsl r0, r7, #0x1 + str r0, [sp, #0x8] + add r4, r5, #0x0 + ldrh r0, [r5, r0] + ldrb r1, [r1, r7] + add r4, #0x8 + bl FUN_0206AB30 + ldrb r1, [r4, r7] + add r1, r6, r1 + cmp r1, r0 + ble _020683E4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + ldrh r0, [r5, r0] + ldrb r1, [r1, r7] + bl FUN_0206AB30 + add sp, #0xc + strb r0, [r4, r7] + pop {r4-r7, pc} +_020683E4: + add sp, #0xc + strb r1, [r4, r7] + pop {r4-r7, pc} +_020683EA: + add r5, #0xc + sub r7, #0x3e + ldrb r0, [r5, r7] + add r0, r6, r0 + cmp r0, #0x3 + ble _020683FE + mov r0, #0x3 + add sp, #0xc + strb r0, [r5, r7] + pop {r4-r7, pc} +_020683FE: + add sp, #0xc + strb r0, [r5, r7] + pop {r4-r7, pc} +_02068404: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x1b + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + bls _0206841E + mov r0, #0x1f + bic r1, r0 + mov r0, #0x1f + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206841E: + mov r0, #0x1f + bic r1, r0 + mov r0, #0x1f + and r0, r2 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206842E: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x16 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068508 ; =0xFFFFFC1F + bls _0206844A + and r1, r0 + mov r0, #0x3e + lsl r0, r0, #0x4 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206844A: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x16 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068458: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x11 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _0206850C ; =0xFFFF83FF + bls _02068474 + and r1, r0 + mov r0, #0x1f + lsl r0, r0, #0xa + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068474: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x11 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068482: + ldr r1, [r5, #0x10] + lsl r0, r1, #0xc + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068510 ; =0xFFF07FFF + bls _0206849E + and r1, r0 + mov r0, #0x3e + lsl r0, r0, #0xe + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_0206849E: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0xc + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684AC: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x7 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068514 ; =0xFE0FFFFF + bls _020684C8 + and r1, r0 + mov r0, #0x1f + lsl r0, r0, #0x14 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684C8: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x7 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684D6: + ldr r1, [r5, #0x10] + lsl r0, r1, #0x2 + lsr r0, r0, #0x1b + add r2, r0, r6 + cmp r2, #0x1f + ldr r0, _02068518 ; =0xC1FFFFFF + bls _020684F2 + and r1, r0 + mov r0, #0x3e + lsl r0, r0, #0x18 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_020684F2: + and r1, r0 + lsl r0, r2, #0x1b + lsr r0, r0, #0x2 + orr r0, r1 + add sp, #0xc + str r0, [r5, #0x10] + pop {r4-r7, pc} +_02068500: + bl ErrorHandling +_02068504: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02068508: .word 0xFFFFFC1F +_0206850C: .word 0xFFFF83FF +_02068510: .word 0xFFF07FFF +_02068514: .word 0xFE0FFFFF +_02068518: .word 0xC1FFFFFF + + thumb_func_start FUN_0206851C +FUN_0206851C: ; 0x0206851C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x2c + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0206A370 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02068538 +FUN_02068538: ; 0x02068538 + push {r4-r6, lr} + add r4, r0, #0x0 + add r6, r1, #0x0 + cmp r4, #0x0 + bne _02068546 + bl ErrorHandling +_02068546: + cmp r6, #0x20 + bhi _0206863A + add r0, r6, r6 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02068556: ; jump table (using 16-bit offset) + .short _02068598 - _02068556 - 2; case 0 + .short _0206859C - _02068556 - 2; case 1 + .short _020685A0 - _02068556 - 2; case 2 + .short _020685A4 - _02068556 - 2; case 3 + .short _020685A8 - _02068556 - 2; case 4 + .short _020685AC - _02068556 - 2; case 5 + .short _020685B0 - _02068556 - 2; case 6 + .short _020685B4 - _02068556 - 2; case 7 + .short _020685B8 - _02068556 - 2; case 8 + .short _020685BC - _02068556 - 2; case 9 + .short _020685C0 - _02068556 - 2; case 10 + .short _020685C8 - _02068556 - 2; case 11 + .short _020685D0 - _02068556 - 2; case 12 + .short _020685D8 - _02068556 - 2; case 13 + .short _020685E0 - _02068556 - 2; case 14 + .short _020685E8 - _02068556 - 2; case 15 + .short _020685F0 - _02068556 - 2; case 16 + .short _020685F4 - _02068556 - 2; case 17 + .short _020685F8 - _02068556 - 2; case 18 + .short _020685FC - _02068556 - 2; case 19 + .short _02068600 - _02068556 - 2; case 20 + .short _02068604 - _02068556 - 2; case 21 + .short _02068608 - _02068556 - 2; case 22 + .short _0206860C - _02068556 - 2; case 23 + .short _02068610 - _02068556 - 2; case 24 + .short _02068614 - _02068556 - 2; case 25 + .short _02068618 - _02068556 - 2; case 26 + .short _0206861C - _02068556 - 2; case 27 + .short _02068624 - _02068556 - 2; case 28 + .short _0206862C - _02068556 - 2; case 29 + .short _02068630 - _02068556 - 2; case 30 + .short _02068634 - _02068556 - 2; case 31 + .short _02068638 - _02068556 - 2; case 32 +_02068598: + ldrb r5, [r4, #0x0] + b _0206863A +_0206859C: + ldrb r5, [r4, #0x1] + b _0206863A +_020685A0: + ldrb r5, [r4, #0x2] + b _0206863A +_020685A4: + ldrb r5, [r4, #0x3] + b _0206863A +_020685A8: + ldrb r5, [r4, #0x4] + b _0206863A +_020685AC: + ldrb r5, [r4, #0x5] + b _0206863A +_020685B0: + ldrb r5, [r4, #0x6] + b _0206863A +_020685B4: + ldrb r5, [r4, #0x7] + b _0206863A +_020685B8: + ldrb r5, [r4, #0x8] + b _0206863A +_020685BC: + ldrb r5, [r4, #0x9] + b _0206863A +_020685C0: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x1e + lsr r5, r0, #0x1e + b _0206863A +_020685C8: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x1c + lsr r5, r0, #0x1e + b _0206863A +_020685D0: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x1a + lsr r5, r0, #0x1e + b _0206863A +_020685D8: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x18 + lsr r5, r0, #0x1e + b _0206863A +_020685E0: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x16 + lsr r5, r0, #0x1e + b _0206863A +_020685E8: + ldrh r0, [r4, #0xa] + lsl r0, r0, #0x14 + lsr r5, r0, #0x1e + b _0206863A +_020685F0: + ldrh r5, [r4, #0xc] + b _0206863A +_020685F4: + ldrh r5, [r4, #0xe] + b _0206863A +_020685F8: + ldrb r5, [r4, #0x10] + b _0206863A +_020685FC: + ldrb r5, [r4, #0x11] + b _0206863A +_02068600: + ldrb r5, [r4, #0x12] + b _0206863A +_02068604: + ldrb r5, [r4, #0x13] + b _0206863A +_02068608: + ldrb r5, [r4, #0x14] + b _0206863A +_0206860C: + ldrb r5, [r4, #0x15] + b _0206863A +_02068610: + ldrb r5, [r4, #0x16] + b _0206863A +_02068614: + ldrb r5, [r4, #0x17] + b _0206863A +_02068618: + ldrb r5, [r4, #0x18] + b _0206863A +_0206861C: + ldrb r0, [r4, #0x19] + lsl r0, r0, #0x19 + lsr r5, r0, #0x19 + b _0206863A +_02068624: + ldrb r0, [r4, #0x19] + lsl r0, r0, #0x18 + lsr r5, r0, #0x1f + b _0206863A +_0206862C: + ldr r5, [r4, #0x1c] + b _0206863A +_02068630: + ldr r5, [r4, #0x20] + b _0206863A +_02068634: + ldr r5, [r4, #0x24] + b _0206863A +_02068638: + ldr r5, [r4, #0x28] +_0206863A: + add r0, r5, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02068640 +FUN_02068640: ; 0x02068640 + push {r4, lr} + add r4, r0, #0x0 + bne _0206864A + bl ErrorHandling +_0206864A: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02068654 +FUN_02068654: ; 0x02068654 + push {r3-r5, lr} + add r4, r2, #0x0 + bl FUN_0206A8FC + mov r1, #0x0 + bl FUN_0206851C + add r5, r0, #0x0 + add r1, r4, #0x0 + bl FUN_02068538 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02068640 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02068678 +FUN_02068678: ; 0x02068678 + push {r3-r5, lr} + add r4, r1, #0x0 + mov r1, #0x0 + bl FUN_0206851C + add r5, r0, #0x0 + add r1, r4, #0x0 + bl FUN_02068538 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02068640 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02068698 +FUN_02068698: ; 0x02068698 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_020669D4 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02068758 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r7, #0x1 + bl FUN_02068758 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02066A20 + sub r1, r7, r4 + mov r0, #0x64 + mul r0, r1 + sub r1, r6, r4 + blx _u32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_020686F8 +FUN_020686F8: ; 0x020686F8 + ldr r3, _020686FC ; =FUN_02068700 + bx r3 + .balign 4 +_020686FC: .word FUN_02068700 + + thumb_func_start FUN_02068700 +FUN_02068700: ; 0x02068700 + push {r4-r6, lr} + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r4, #0x0 + bl FUN_020687C8 + add r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl FUN_020672BC + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02068758 + sub r0, r0, r4 + pop {r4-r6, pc} + + thumb_func_start FUN_02068734 +FUN_02068734: ; 0x02068734 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02068758 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02068758 +FUN_02068758: ; 0x02068758 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x15 + bl FUN_02068678 + add r1, r4, #0x0 + bl FUN_02068788 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206876C +FUN_0206876C: ; 0x0206876C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x8 + blt _0206877A + bl ErrorHandling +_0206877A: + add r0, r4, #0x0 + mov r1, #0x3 + add r2, r5, #0x0 + bl LoadFromNARC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02068788 +FUN_02068788: ; 0x02068788 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + cmp r6, #0x8 + blt _02068796 + bl ErrorHandling +_02068796: + cmp r5, #0x65 + ble _0206879E + bl ErrorHandling +_0206879E: + mov r1, #0x65 + mov r0, #0x0 + lsl r1, r1, #0x2 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0206876C + lsl r0, r5, #0x2 + ldr r5, [r4, r0] + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_020687C0 +FUN_020687C0: ; 0x020687C0 + ldr r3, _020687C4 ; =FUN_020687C8 + bx r3 + .balign 4 +_020687C4: .word FUN_020687C8 + + thumb_func_start FUN_020687C8 +FUN_020687C8: ; 0x020687C8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02066A6C + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl FUN_020672BC + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02066A94 + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + add r1, r7, #0x0 + bl FUN_02068800 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02068800 +FUN_02068800: ; 0x02068800 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x0 + bl FUN_0206851C + add r6, r0, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02068824 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02068640 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02068824 +FUN_02068824: ; 0x02068824 + push {r4, lr} + mov r1, #0x15 + add r4, r2, #0x0 + bl FUN_02068538 + ldr r1, _0206884C ; =0x021C5AC0 + bl FUN_0206876C + ldr r2, _02068850 ; =0x021C5AC4 + mov r1, #0x1 +_02068838: + ldr r0, [r2, #0x0] + cmp r0, r4 + bhi _02068846 + add r1, r1, #0x1 + add r2, r2, #0x4 + cmp r1, #0x65 + blt _02068838 +_02068846: + sub r0, r1, #0x1 + pop {r4, pc} + nop +_0206884C: .word 0x021C5AC0 +_02068850: .word 0x021C5AC4 + + thumb_func_start FUN_02068854 +FUN_02068854: ; 0x02068854 + ldr r3, _02068858 ; =FUN_0206885C + bx r3 + .balign 4 +_02068858: .word FUN_0206885C + + thumb_func_start FUN_0206885C +FUN_0206885C: ; 0x0206885C + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02066A6C + mov r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r6, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02066A94 + add r0, r6, #0x0 + bl FUN_02068884 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02068884 +FUN_02068884: ; 0x02068884 + push {r3, lr} + mov r1, #0x19 + blx _u32_div_f + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02068894 +FUN_02068894: ; 0x02068894 + push {r3, lr} + cmp r2, #0x1 + blo _0206889E + cmp r2, #0x5 + bls _020688A2 +_0206889E: + add r0, r1, #0x0 + pop {r3, pc} +_020688A2: + lsl r3, r0, #0x2 + add r3, r0, r3 + ldr r0, _020688E4 ; =0x020F7F93 + sub r2, r2, #0x1 + add r0, r0, r3 + ldrsb r2, [r2, r0] + mov r0, #0x0 + mvn r0, r0 + cmp r2, r0 + beq _020688CE + cmp r2, #0x1 + bne _020688E0 + mov r0, #0x6e + mul r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + b _020688E0 +_020688CE: + mov r0, #0x5a + mul r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_020688E0: + add r0, r1, #0x0 + pop {r3, pc} + .balign 4 +_020688E4: .word 0x020F7F93 + + thumb_func_start FUN_020688E8 +FUN_020688E8: ; 0x020688E8 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r1, #0x0 + add r5, r0, #0x0 + str r2, [sp, #0x0] + cmp r6, #0x5 + bne _02068900 + bl FUN_0201B9EC + mov r1, #0x1 + tst r0, r1 + bne _020689D4 +_02068900: + add r0, r5, #0x0 + mov r1, #0xad + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + beq _020689D4 + ldr r0, _020689D8 ; =0x000001EE + cmp r1, r0 + beq _020689D4 + add r0, r5, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0206E7B8 + lsl r0, r0, #0x18 + mov r4, #0x0 + lsr r7, r0, #0x18 + add r0, r5, #0x0 + mov r1, #0x9 + add r2, r4, #0x0 + bl FUN_020671BC + add r1, sp, #0x4 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + ldrsh r1, [r1, r0] + cmp r1, #0x64 + blt _0206894E + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0206894E: + cmp r1, #0xc8 + blt _02068958 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02068958: + lsl r0, r6, #0x1 + add r1, r6, r0 + ldr r0, _020689DC ; =0x020F7ED4 + add r0, r0, r1 + ldrsb r4, [r4, r0] + cmp r4, #0x0 + ble _0206897A + add r0, r5, #0x0 + mov r1, #0x9a + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0xb + bne _0206897A + add r0, r4, #0x1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_0206897A: + cmp r4, #0x0 + ble _02068994 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x0] + cmp r1, r0 + bne _02068994 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_02068994: + cmp r4, #0x0 + ble _020689AA + cmp r7, #0x34 + bne _020689AA + mov r0, #0x96 + mul r0, r4 + mov r1, #0x64 + blx _s32_div_f + lsl r0, r0, #0x18 + asr r4, r0, #0x18 +_020689AA: + add r0, sp, #0x4 + mov r1, #0x0 + ldrsh r2, [r0, r1] + add r2, r2, r4 + strh r2, [r0, #0x0] + ldrsh r2, [r0, r1] + cmp r2, #0x0 + bge _020689BC + strh r1, [r0, #0x0] +_020689BC: + add r1, sp, #0x4 + mov r0, #0x0 + ldrsh r0, [r1, r0] + cmp r0, #0xff + ble _020689CA + mov r0, #0xff + strh r0, [r1, #0x0] +_020689CA: + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x4 + bl FUN_02067830 +_020689D4: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020689D8: .word 0x000001EE +_020689DC: .word 0x020F7ED4 + + thumb_func_start FUN_020689E0 +FUN_020689E0: ; 0x020689E0 + ldr r3, _020689E4 ; =FUN_020689E8 + bx r3 + .balign 4 +_020689E4: .word FUN_020689E8 + + thumb_func_start FUN_020689E8 +FUN_020689E8: ; 0x020689E8 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02066A6C + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + mov r1, #0x0 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r7, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02066A94 + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_02068A20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02068A20 +FUN_02068A20: ; 0x02068A20 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + mov r1, #0x0 + bl FUN_0206851C + add r6, r0, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02068A44 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02068640 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02068A44 +FUN_02068A44: ; 0x02068A44 + push {r4, lr} + mov r1, #0x12 + add r4, r2, #0x0 + bl FUN_02068538 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + beq _02068A5E + cmp r1, #0xfe + beq _02068A62 + cmp r1, #0xff + beq _02068A66 + b _02068A6A +_02068A5E: + mov r0, #0x0 + pop {r4, pc} +_02068A62: + mov r0, #0x1 + pop {r4, pc} +_02068A66: + mov r0, #0x2 + pop {r4, pc} +_02068A6A: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r1, r0 + bls _02068A76 + mov r0, #0x1 + b _02068A78 +_02068A76: + mov r0, #0x0 +_02068A78: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02068A80 +FUN_02068A80: ; 0x02068A80 + ldr r3, _02068A84 ; =FUN_02068A88 + bx r3 + .balign 4 +_02068A84: .word FUN_02068A88 + + thumb_func_start FUN_02068A88 +FUN_02068A88: ; 0x02068A88 + push {r3-r5, lr} + mov r1, #0x7 + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020672BC + mov r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02068AAC + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02068AAC +FUN_02068AAC: ; 0x02068AAC + ldr r3, _02068AD4 ; =0xFFFF0000 + lsl r2, r1, #0x10 + and r1, r3 + and r3, r0 + lsl r0, r0, #0x10 + lsr r3, r3, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + eor r0, r3 + lsr r2, r2, #0x10 + eor r0, r1 + eor r0, r2 + cmp r0, #0x8 + bhs _02068ACC + mov r0, #0x1 + b _02068ACE +_02068ACC: + mov r0, #0x0 +_02068ACE: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .balign 4 +_02068AD4: .word 0xFFFF0000 + + thumb_func_start FUN_02068AD8 +FUN_02068AD8: ; 0x02068AD8 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _02068B64 ; =0xFFFF0000 + and r0, r7 + lsr r1, r0, #0x10 + lsl r0, r7, #0x10 + lsr r0, r0, #0x10 + eor r0, r1 + lsr r7, r0, #0x3 + bl FUN_0201B9EC + mov r1, #0x7 + and r0, r1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + bl FUN_0201B9EC + mov r1, #0x7 + and r0, r1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + mov r4, #0x0 +_02068B04: + add r0, r4, #0x0 + bl FUN_0206A92C + tst r0, r7 + beq _02068B34 + bl FUN_0201B9EC + mov r1, #0x1 + tst r0, r1 + beq _02068B26 + add r0, r4, #0x3 + bl FUN_0206A92C + orr r0, r6 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _02068B56 +_02068B26: + add r0, r4, #0x3 + bl FUN_0206A92C + orr r0, r5 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + b _02068B56 +_02068B34: + bl FUN_0201B9EC + mov r1, #0x1 + tst r0, r1 + beq _02068B56 + add r0, r4, #0x3 + bl FUN_0206A92C + orr r0, r6 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r4, #0x3 + bl FUN_0206A92C + orr r0, r5 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 +_02068B56: + add r4, r4, #0x1 + cmp r4, #0xd + blt _02068B04 + lsl r0, r5, #0x10 + orr r0, r6 + pop {r3-r7, pc} + nop +_02068B64: .word 0xFFFF0000 + + thumb_func_start FUN_02068B68 +FUN_02068B68: ; 0x02068B68 + ldr r3, _02068B6C ; =FUN_02068B70 + bx r3 + .balign 4 +_02068B6C: .word FUN_02068B70 + + thumb_func_start FUN_02068B70 +FUN_02068B70: ; 0x02068B70 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r1, #0x0 + str r0, [sp, #0xc] + add r0, r5, #0x0 + str r2, [sp, #0x10] + bl FUN_02066A6C + str r0, [sp, #0x18] + add r0, r5, #0x0 + mov r1, #0xad + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + bl FUN_020689E8 + str r0, [sp, #0x14] + add r0, r5, #0x0 + bl FUN_02068A88 + mov r1, #0x0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r6, r0, #0x0 + ldr r0, _02068BF8 ; =0x000001EE + cmp r4, r0 + bne _02068BCA + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + ldr r1, _02068BFC ; =0x000001EA + cmp r0, r1 + bne _02068BC6 + mov r0, #0x1 + b _02068BD8 +_02068BC6: + mov r0, #0x0 + b _02068BD8 +_02068BCA: + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 +_02068BD8: + str r7, [sp, #0x0] + str r0, [sp, #0x4] + str r6, [sp, #0x8] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x10] + add r1, r4, #0x0 + bl FUN_02068C00 + ldr r1, [sp, #0x18] + add r0, r5, #0x0 + bl FUN_02066A94 + add sp, #0x1c + pop {r4-r7, pc} + nop +_02068BF8: .word 0x000001EE +_02068BFC: .word 0x000001EA + + thumb_func_start FUN_02068C00 +FUN_02068C00: ; 0x02068C00 + push {r4-r7} + add r7, r2, #0x0 + add r5, r3, #0x0 + add r4, r0, #0x0 + add r0, r1, #0x0 + ldr r3, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r1, #0x0 + strh r1, [r4, #0x6] + strb r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, _02068E0C ; =0x000001A5 + cmp r0, r1 + bgt _02068C68 + bge _02068D1E + add r6, r1, #0x0 + sub r6, #0x46 + cmp r0, r6 + bgt _02068C36 + sub r1, #0x46 + cmp r0, r1 + blt _02068C2E + b _02068D58 +_02068C2E: + cmp r0, #0xc9 + bne _02068C34 + b _02068D90 +_02068C34: + b _02068DD4 +_02068C36: + add r6, r1, #0x0 + sub r6, #0x23 + cmp r0, r6 + bgt _02068C48 + sub r1, #0x23 + cmp r0, r1 + bne _02068C46 + b _02068D76 +_02068C46: + b _02068DD4 +_02068C48: + add r6, r1, #0x0 + sub r6, #0x8 + cmp r0, r6 + bgt _02068C66 + add r6, r1, #0x0 + sub r6, #0x9 + cmp r0, r6 + blt _02068C66 + add r6, r1, #0x0 + sub r6, #0x9 + cmp r0, r6 + beq _02068CAA + sub r1, #0x8 + cmp r0, r1 + beq _02068CC8 +_02068C66: + b _02068DD4 +_02068C68: + add r6, r1, #0x0 + add r6, #0x48 + cmp r0, r6 + bgt _02068C8E + add r6, r1, #0x0 + add r6, #0x48 + cmp r0, r6 + bge _02068D3A + add r6, r1, #0x2 + cmp r0, r6 + bgt _02068C8C + add r6, r1, #0x1 + cmp r0, r6 + blt _02068C8C + beq _02068CE6 + add r1, r1, #0x2 + cmp r0, r1 + beq _02068D02 +_02068C8C: + b _02068DD4 +_02068C8E: + add r6, r1, #0x0 + add r6, #0x49 + cmp r0, r6 + bgt _02068CA0 + add r1, #0x49 + cmp r0, r1 + bne _02068C9E + b _02068DAC +_02068C9E: + b _02068DD4 +_02068CA0: + add r1, #0x4a + cmp r0, r1 + bne _02068CA8 + b _02068DC4 +_02068CA8: + b _02068DD4 +_02068CAA: + cmp r2, #0x2 + bls _02068CB0 + mov r2, #0x0 +_02068CB0: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r0, r5, #0x1 + lsl r1, r2, #0x1 + add r0, #0x48 + add r0, r0, r1 + add r3, #0x92 + strh r0, [r4, #0x2] + add r0, r3, r1 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068CC8: + cmp r2, #0x2 + bls _02068CCE + mov r2, #0x0 +_02068CCE: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r0, r5, #0x1 + lsl r1, r2, #0x1 + add r0, #0x4e + add r0, r0, r1 + add r3, #0x98 + strh r0, [r4, #0x2] + add r0, r3, r1 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068CE6: + cmp r2, #0x1 + bls _02068CEC + mov r2, #0x0 +_02068CEC: + mov r0, #0x75 + add r5, #0x54 + strh r0, [r4, #0x0] + add r0, r5, r2 + strh r0, [r4, #0x2] + add r3, #0x9e + lsl r0, r2, #0x1 + add r0, r3, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D02: + cmp r2, #0x1 + bls _02068D08 + mov r2, #0x0 +_02068D08: + mov r0, #0x75 + add r5, #0x58 + strh r0, [r4, #0x0] + add r0, r5, r2 + strh r0, [r4, #0x2] + add r3, #0xa2 + lsl r0, r2, #0x1 + add r0, r3, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D1E: + cmp r2, #0x1 + bls _02068D24 + mov r2, #0x0 +_02068D24: + mov r0, #0x75 + add r5, #0x5c + strh r0, [r4, #0x0] + add r0, r5, r2 + strh r0, [r4, #0x2] + lsl r0, r3, #0x1 + add r0, #0xa6 + add r0, r2, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D3A: + cmp r2, #0x11 + bls _02068D40 + mov r2, #0x0 +_02068D40: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r0, r5, #0x1 + lsl r1, r2, #0x1 + add r0, #0x60 + add r0, r0, r1 + add r3, #0xaa + strh r0, [r4, #0x2] + add r0, r3, r1 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D58: + cmp r2, #0x3 + bls _02068D5E + mov r2, #0x0 +_02068D5E: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsl r0, r5, #0x1 + add r0, #0x40 + add r0, r2, r0 + strh r0, [r4, #0x2] + lsl r0, r3, #0x2 + add r0, #0x8a + add r0, r2, r0 + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D76: + cmp r2, #0x3 + bls _02068D7C + mov r2, #0x0 +_02068D7C: + mov r0, #0x75 + strh r0, [r4, #0x0] + lsr r1, r5, #0x1 + lsl r0, r2, #0x1 + add r0, r1, r0 + strh r0, [r4, #0x2] + add r3, #0x86 + strh r3, [r4, #0x4] + pop {r4-r7} + bx lr +_02068D90: + cmp r2, #0x1c + blo _02068D96 + mov r2, #0x0 +_02068D96: + mov r0, #0x75 + lsr r1, r5, #0x1 + strh r0, [r4, #0x0] + add r1, #0x8 + lsl r0, r2, #0x1 + add r0, r1, r0 + strh r0, [r4, #0x2] + add r3, #0x88 + strh r3, [r4, #0x4] + pop {r4-r7} + bx lr +_02068DAC: + cmp r2, #0x1 + bls _02068DB2 + mov r2, #0x0 +_02068DB2: + mov r0, #0x75 + strh r0, [r4, #0x0] + add r0, r2, #0x0 + add r0, #0x84 + strh r0, [r4, #0x2] + add r2, #0xce + strh r2, [r4, #0x4] + pop {r4-r7} + bx lr +_02068DC4: + mov r0, #0x75 + strh r0, [r4, #0x0] + mov r0, #0x84 + strh r0, [r4, #0x2] + mov r0, #0xce + strh r0, [r4, #0x4] + pop {r4-r7} + bx lr +_02068DD4: + mov r1, #0x4 + strh r1, [r4, #0x0] + cmp r7, #0x1 + beq _02068DE0 + mov r2, #0x1 + b _02068DE2 +_02068DE0: + mov r2, #0x0 +_02068DE2: + mov r1, #0x6 + mul r1, r0 + add r6, r5, r1 + add r2, r6, r2 + add r1, r1, #0x4 + strh r2, [r4, #0x2] + add r1, r3, r1 + strh r1, [r4, #0x4] + ldr r1, _02068E10 ; =0x00000147 + cmp r0, r1 + bne _02068E06 + cmp r5, #0x2 + bne _02068E06 + strh r1, [r4, #0x6] + mov r0, #0x0 + strb r0, [r4, #0x8] + ldr r0, [sp, #0x18] + str r0, [r4, #0xc] +_02068E06: + pop {r4-r7} + bx lr + nop +_02068E0C: .word 0x000001A5 +_02068E10: .word 0x00000147 + + thumb_func_start FUN_02068E14 +FUN_02068E14: ; 0x02068E14 + ldr r3, _02068E18 ; =FUN_02068E1C + bx r3 + .balign 4 +_02068E18: .word FUN_02068E1C + + thumb_func_start FUN_02068E1C +FUN_02068E1C: ; 0x02068E1C + push {r3-r7, lr} + sub sp, #0x8 + add r7, r1, #0x0 + mov r1, #0xad + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + bl FUN_020689E8 + mov r1, #0x0 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r6, r0, #0x0 + ldr r0, _02068E80 ; =0x000001EE + cmp r4, r0 + bne _02068E62 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + ldr r1, _02068E84 ; =0x000001EA + cmp r0, r1 + bne _02068E5E + mov r3, #0x1 + b _02068E70 +_02068E5E: + mov r3, #0x0 + b _02068E70 +_02068E62: + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 +_02068E70: + str r6, [sp, #0x0] + ldr r1, [sp, #0x4] + add r0, r4, #0x0 + add r2, r7, #0x0 + bl FUN_02068E88 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02068E80: .word 0x000001EE +_02068E84: .word 0x000001EA + + thumb_func_start FUN_02068E88 +FUN_02068E88: ; 0x02068E88 + push {r3-r5, lr} + ldr r4, _02068FDC ; =0x000001A5 + cmp r0, r4 + bgt _02068ED6 + bge _02068F54 + add r5, r4, #0x0 + sub r5, #0x46 + cmp r0, r5 + bgt _02068EA6 + sub r4, #0x46 + cmp r0, r4 + bge _02068F74 + cmp r0, #0xc9 + beq _02068F94 + b _02068FB8 +_02068EA6: + add r5, r4, #0x0 + sub r5, #0x23 + cmp r0, r5 + bgt _02068EB6 + sub r4, #0x23 + cmp r0, r4 + beq _02068F84 + b _02068FB8 +_02068EB6: + add r5, r4, #0x0 + sub r5, #0x8 + cmp r0, r5 + bgt _02068FB8 + add r5, r4, #0x0 + sub r5, #0x9 + cmp r0, r5 + blt _02068FB8 + add r5, r4, #0x0 + sub r5, #0x9 + cmp r0, r5 + beq _02068F14 + sub r4, #0x8 + cmp r0, r4 + beq _02068F26 + b _02068FB8 +_02068ED6: + add r5, r4, #0x0 + add r5, #0x48 + cmp r0, r5 + bgt _02068EFC + add r5, r4, #0x0 + add r5, #0x48 + cmp r0, r5 + bge _02068F62 + add r5, r4, #0x2 + cmp r0, r5 + bgt _02068FB8 + add r5, r4, #0x1 + cmp r0, r5 + blt _02068FB8 + beq _02068F38 + add r4, r4, #0x2 + cmp r0, r4 + beq _02068F46 + b _02068FB8 +_02068EFC: + add r5, r4, #0x0 + add r5, #0x49 + cmp r0, r5 + bgt _02068F0C + add r4, #0x49 + cmp r0, r4 + beq _02068FA6 + b _02068FB8 +_02068F0C: + add r4, #0x4a + cmp r0, r4 + beq _02068FB2 + b _02068FB8 +_02068F14: + cmp r3, #0x2 + bls _02068F1A + mov r3, #0x0 +_02068F1A: + lsr r1, r2, #0x1 + add r1, #0x48 + lsl r0, r3, #0x1 + mov r4, #0x79 + add r3, r1, r0 + b _02068FCA +_02068F26: + cmp r3, #0x2 + bls _02068F2C + mov r3, #0x0 +_02068F2C: + lsr r1, r2, #0x1 + add r1, #0x4e + lsl r0, r3, #0x1 + mov r4, #0x79 + add r3, r1, r0 + b _02068FCA +_02068F38: + cmp r3, #0x1 + bls _02068F3E + mov r3, #0x0 +_02068F3E: + add r2, #0x54 + mov r4, #0x79 + add r3, r2, r3 + b _02068FCA +_02068F46: + cmp r3, #0x1 + bls _02068F4C + mov r3, #0x0 +_02068F4C: + add r2, #0x58 + mov r4, #0x79 + add r3, r2, r3 + b _02068FCA +_02068F54: + cmp r3, #0x1 + bls _02068F5A + mov r3, #0x0 +_02068F5A: + add r2, #0x5c + mov r4, #0x79 + add r3, r2, r3 + b _02068FCA +_02068F62: + cmp r3, #0x11 + bls _02068F68 + mov r3, #0x0 +_02068F68: + lsr r1, r2, #0x1 + add r1, #0x60 + lsl r0, r3, #0x1 + mov r4, #0x79 + add r3, r1, r0 + b _02068FCA +_02068F74: + cmp r3, #0x3 + bls _02068F7A + mov r3, #0x0 +_02068F7A: + lsl r0, r2, #0x1 + add r0, #0x40 + mov r4, #0x79 + add r3, r3, r0 + b _02068FCA +_02068F84: + cmp r3, #0x3 + bls _02068F8A + mov r3, #0x0 +_02068F8A: + lsr r1, r2, #0x1 + lsl r0, r3, #0x1 + mov r4, #0x79 + add r3, r1, r0 + b _02068FCA +_02068F94: + cmp r3, #0x1c + blo _02068F9A + mov r3, #0x0 +_02068F9A: + lsr r1, r2, #0x1 + add r1, #0x8 + lsl r0, r3, #0x1 + mov r4, #0x79 + add r3, r1, r0 + b _02068FCA +_02068FA6: + cmp r3, #0x1 + bls _02068FAC + mov r3, #0x0 +_02068FAC: + mov r4, #0x79 + add r3, #0x84 + b _02068FCA +_02068FB2: + mov r4, #0x79 + mov r3, #0x84 + b _02068FCA +_02068FB8: + mov r4, #0x5 + cmp r1, #0x1 + beq _02068FC2 + mov r1, #0x1 + b _02068FC4 +_02068FC2: + mov r1, #0x0 +_02068FC4: + lsl r0, r0, #0x2 + add r0, r2, r0 + add r3, r0, r1 +_02068FCA: + add r0, sp, #0x0 + add r1, r4, #0x0 + add r2, r3, #0x0 + bl LoadFromNARC + add r0, sp, #0x0 + ldrb r0, [r0, #0x0] + pop {r3-r5, pc} + nop +_02068FDC: .word 0x000001A5 + + thumb_func_start FUN_02068FE0 +FUN_02068FE0: ; 0x02068FE0 + push {r4, lr} + add r4, r0, #0x0 + cmp r2, #0x2 + bne _02068FEE + mov r0, #0x3c + strh r0, [r4, #0x0] + b _02068FFC +_02068FEE: + mov r0, #0x6 + strh r0, [r4, #0x0] + add r0, r1, #0x0 + bl FUN_0206AA30 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 +_02068FFC: + lsl r0, r1, #0x1 + strh r0, [r4, #0x2] + add r0, r0, #0x1 + strh r0, [r4, #0x4] + mov r0, #0x0 + strh r0, [r4, #0x6] + strb r0, [r4, #0x8] + str r0, [r4, #0xc] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02069010 +FUN_02069010: ; 0x02069010 + push {r3-r5, lr} + sub sp, #0x20 + add r5, r1, #0x0 + mov r3, #0x1c + add r4, r0, #0x0 + str r3, [sp, #0x0] + add r0, sp, #0x4 + mov r1, #0x72 + mov r2, #0x0 + mul r3, r5 + bl FUN_02006548 + add r0, sp, #0xc + add r1, r4, #0x0 + mov r2, #0x14 + blx MI_CpuCopy8 + add sp, #0x20 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02069038 +FUN_02069038: ; 0x02069038 + push {r3-r7, lr} + sub sp, #0x28 + add r4, r0, #0x0 + add r6, r2, #0x0 + add r5, r3, #0x0 + mov r3, #0x1c + add r0, sp, #0x8 + add r7, r1, #0x0 + str r3, [sp, #0x0] + add r0, #0x2 + mov r1, #0x72 + mov r2, #0x0 + mul r3, r6 + bl FUN_02006548 + cmp r5, #0x2 + bne _0206906C + add r1, sp, #0x4 + mov r0, #0x6 + ldrsb r0, [r1, r0] + strh r0, [r1, #0x0] + ldrb r0, [r1, #0x7] + strh r0, [r1, #0x2] + ldr r0, [sp, #0x44] + strb r0, [r1, #0x4] + b _02069096 +_0206906C: + ldr r0, [sp, #0x40] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02014C3C + add r5, r0, #0x0 + cmp r5, #0x3 + blt _02069080 + bl ErrorHandling +_02069080: + lsl r2, r5, #0x1 + add r0, sp, #0xc + ldrsb r1, [r0, r2] + add r0, sp, #0x4 + strh r1, [r0, #0x0] + add r1, sp, #0xc + add r1, #0x1 + ldrb r1, [r1, r2] + strh r1, [r0, #0x2] + ldr r1, [sp, #0x44] + strb r1, [r0, #0x4] +_02069096: + ldr r3, [sp, #0x48] + add r0, r4, #0x0 + lsl r3, r3, #0x18 + add r1, r7, #0x0 + add r2, sp, #0x4 + lsr r3, r3, #0x18 + bl FUN_02014C54 + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020690AC +FUN_020690AC: ; 0x020690AC + mov r2, #0x3c + strh r2, [r0, #0x0] + lsl r1, r1, #0x1 + strh r1, [r0, #0x2] + add r1, r1, #0x1 + strh r1, [r0, #0x4] + mov r1, #0x0 + strh r1, [r0, #0x6] + strb r1, [r0, #0x8] + str r1, [r0, #0xc] + bx lr + .balign 4 + + thumb_func_start FUN_020690C4 +FUN_020690C4: ; 0x020690C4 + mov r0, #0xec + bx lr + + thumb_func_start FUN_020690C8 +FUN_020690C8: ; 0x020690C8 + mov r0, #0x88 + bx lr + + thumb_func_start FUN_020690CC +FUN_020690CC: ; 0x020690CC + ldr r3, _020690D0 ; =FUN_020690D4 + bx r3 + .balign 4 +_020690D0: .word FUN_020690D4 + + thumb_func_start FUN_020690D4 +FUN_020690D4: ; 0x020690D4 + push {r3, lr} + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + + thumb_func_start FUN_020690E4 +FUN_020690E4: ; 0x020690E4 + bx lr + .balign 4 + + thumb_func_start FUN_020690E8 +FUN_020690E8: ; 0x020690E8 + push {r3-r5, lr} + sub sp, #0x8 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x1 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x15 + bl FUN_02068678 + mov r1, #0x64 + add r5, r0, #0x0 + bl FUN_02068788 + ldr r1, [sp, #0x4] + cmp r1, r0 + bls _02069138 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x8 + add r2, sp, #0x4 + bl FUN_02067830 +_02069138: + add r0, sp, #0x0 + ldrb r1, [r0, #0x0] + cmp r1, #0x64 + bls _02069146 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_02069146: + add r0, r5, #0x0 + bl FUN_02068788 + ldr r1, [sp, #0x4] + cmp r1, r0 + blo _02069162 + add r0, r4, #0x0 + mov r1, #0xa0 + add r2, sp, #0x0 + bl FUN_02067830 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r5, pc} +_02069162: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + + thumb_func_start FUN_02069168 +FUN_02069168: ; 0x02069168 + push {r4-r7, lr} + sub sp, #0x44 + add r7, r1, #0x0 + str r0, [sp, #0x0] + mov r6, #0x0 + add r4, r2, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + add r2, r6, #0x0 + str r3, [sp, #0x4] + ldr r5, [sp, #0x58] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x2c] + add r0, r7, #0x0 + mov r1, #0x6 + add r2, r6, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r1, r6, #0x0 + str r0, [sp, #0x28] + add r0, r7, #0x0 + add r2, r1, #0x0 + bl FUN_020671BC + str r0, [sp, #0x30] + add r0, r7, #0x0 + mov r1, #0x14 + add r2, r6, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + ldr r1, _020694A0 ; =0xFFFF0000 + ldr r0, [sp, #0x30] + add r2, r6, #0x0 + and r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x28] + mov r1, #0x1 + bl FUN_0206E7B8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x2c] + cmp r0, #0x40 + beq _020691E4 + cmp r1, #0x3f + bne _020691E4 + cmp r4, #0x3 + beq _020691E4 + add sp, #0x44 + add r0, r6, #0x0 + pop {r4-r7, pc} +_020691E4: + cmp r5, #0x0 + bne _020691EA + add r5, sp, #0x40 +_020691EA: + mov r0, #0x0 + mov r1, #0x2a + bl FUN_02016998 + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x18] + bl FUN_0206A394 + cmp r4, #0x3 + bls _02069202 + b _0206954A +_02069202: + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206920E: ; jump table (using 16-bit offset) + .short _02069216 - _0206920E - 2; case 0 + .short _02069486 - _0206920E - 2; case 1 + .short _020694BE - _0206920E - 2; case 2 + .short _020694BE - _0206920E - 2; case 3 +_02069216: + add r0, r7, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + add r0, r7, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x20] + mov r0, #0x0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + mov r1, #0xa + ldr r4, [sp, #0x18] + blx _s32_div_f + str r1, [sp, #0x8] +_02069246: + ldrh r0, [r4, #0x0] + cmp r0, #0x1a + bls _0206924E + b _02069472 +_0206924E: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206925A: ; jump table (using 16-bit offset) + .short _02069472 - _0206925A - 2; case 0 + .short _02069290 - _0206925A - 2; case 1 + .short _0206929E - _0206925A - 2; case 2 + .short _020692B4 - _0206925A - 2; case 3 + .short _020692CA - _0206925A - 2; case 4 + .short _02069472 - _0206925A - 2; case 5 + .short _02069472 - _0206925A - 2; case 6 + .short _02069472 - _0206925A - 2; case 7 + .short _020692DA - _0206925A - 2; case 8 + .short _02069306 - _0206925A - 2; case 9 + .short _02069332 - _0206925A - 2; case 10 + .short _0206935E - _0206925A - 2; case 11 + .short _02069376 - _0206925A - 2; case 12 + .short _0206938C - _0206925A - 2; case 13 + .short _0206939C - _0206925A - 2; case 14 + .short _020693A2 - _0206925A - 2; case 15 + .short _02069472 - _0206925A - 2; case 16 + .short _02069472 - _0206925A - 2; case 17 + .short _020693B2 - _0206925A - 2; case 18 + .short _020693CA - _0206925A - 2; case 19 + .short _020693E2 - _0206925A - 2; case 20 + .short _020693F6 - _0206925A - 2; case 21 + .short _0206940E - _0206925A - 2; case 22 + .short _0206942C - _0206925A - 2; case 23 + .short _0206944A - _0206925A - 2; case 24 + .short _02069458 - _0206925A - 2; case 25 + .short _02069466 - _0206925A - 2; case 26 +_02069290: + ldr r0, [sp, #0x20] + cmp r0, #0xdc + blo _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x1 + str r0, [r5, #0x0] + b _02069472 +_0206929E: + bl FUN_0201277C + cmp r0, #0x0 + bne _0206936C + ldr r0, [sp, #0x20] + cmp r0, #0xdc + blo _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x2 + str r0, [r5, #0x0] + b _02069472 +_020692B4: + bl FUN_0201277C + cmp r0, #0x1 + bne _0206936C + ldr r0, [sp, #0x20] + cmp r0, #0xdc + blo _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x3 + str r0, [r5, #0x0] + b _02069472 +_020692CA: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x4 + str r0, [r5, #0x0] + b _02069472 +_020692DA: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + add r0, r7, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x34] + add r0, r7, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x34] + cmp r1, r0 + bls _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x8 + str r0, [r5, #0x0] + b _02069472 +_02069306: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + add r0, r7, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x38] + add r0, r7, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x38] + cmp r1, r0 + bne _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0x9 + str r0, [r5, #0x0] + b _02069472 +_02069332: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + add r0, r7, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x3c] + add r0, r7, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x3c] + cmp r1, r0 + bhs _0206936C + ldrh r6, [r4, #0x4] + mov r0, #0xa + str r0, [r5, #0x0] + b _02069472 +_0206935E: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _0206936C + ldr r0, [sp, #0x8] + cmp r0, #0x5 + blt _0206936E +_0206936C: + b _02069472 +_0206936E: + ldrh r6, [r4, #0x4] + mov r0, #0xb + str r0, [r5, #0x0] + b _02069472 +_02069376: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldr r0, [sp, #0x8] + cmp r0, #0x5 + blt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0xc + str r0, [r5, #0x0] + b _02069472 +_0206938C: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0xd + str r0, [r5, #0x0] + b _02069472 +_0206939C: + mov r0, #0xe + str r0, [r5, #0x0] + b _02069472 +_020693A2: + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x10] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0xf + str r0, [r5, #0x0] + b _02069472 +_020693B2: + bl FUN_0201277C + cmp r0, #0x0 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x12 + str r0, [r5, #0x0] + b _02069472 +_020693CA: + bl FUN_0201277C + cmp r0, #0x1 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x13 + str r0, [r5, #0x0] + b _02069472 +_020693E2: + ldrh r1, [r4, #0x2] + add r0, r7, #0x0 + bl FUN_02069A38 + cmp r0, #0x1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x14 + str r0, [r5, #0x0] + b _02069472 +_020693F6: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02069472 + ldrh r1, [r4, #0x2] + bl FUN_0206BAE4 + cmp r0, #0x1 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x15 + str r0, [r5, #0x0] + b _02069472 +_0206940E: + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x16 + str r0, [r5, #0x0] + b _02069472 +_0206942C: + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _02069472 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x14] + cmp r1, r0 + bgt _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x17 + str r0, [r5, #0x0] + b _02069472 +_0206944A: + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x18 + str r0, [r5, #0x0] + b _02069472 +_02069458: + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x19 + str r0, [r5, #0x0] + b _02069472 +_02069466: + ldr r1, [sp, #0x4] + cmp r1, r0 + bne _02069472 + ldrh r6, [r4, #0x4] + mov r0, #0x1a + str r0, [r5, #0x0] +_02069472: + cmp r6, #0x0 + bne _0206954A + ldr r0, [sp, #0x24] + add r4, r4, #0x6 + add r0, r0, #0x1 + str r0, [sp, #0x24] + cmp r0, #0x7 + bge _02069484 + b _02069246 +_02069484: + b _0206954A +_02069486: + ldr r3, [sp, #0x18] + mov r4, #0x0 + mov r7, #0x6 + mov r2, #0x5 +_0206948E: + ldrh r0, [r3, #0x0] + cmp r0, #0x5 + beq _0206949A + cmp r0, #0x6 + beq _020694A4 + b _020694B0 +_0206949A: + ldrh r6, [r3, #0x4] + str r2, [r5, #0x0] + b _020694B0 + .balign 4 +_020694A0: .word 0xFFFF0000 +_020694A4: + ldrh r1, [r3, #0x2] + ldr r0, [sp, #0x28] + cmp r0, r1 + bne _020694B0 + ldrh r6, [r3, #0x4] + str r7, [r5, #0x0] +_020694B0: + cmp r6, #0x0 + bne _0206954A + add r4, r4, #0x1 + add r3, r3, #0x6 + cmp r4, #0x7 + blt _0206948E + b _0206954A +_020694BE: + mov r0, #0x0 + ldr r4, [sp, #0x18] + str r0, [sp, #0xc] +_020694C4: + ldrh r2, [r4, #0x0] + cmp r2, #0x7 + bne _020694E4 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _020694E4 + ldr r0, [sp, #0xc] + mov r1, #0x6 + mul r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r6, [r0, #0x4] + mov r0, #0x0 + str r0, [r5, #0x0] + b _0206954A +_020694E4: + cmp r2, #0x10 + bne _02069510 + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02069510 + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _02069510 + ldr r0, [sp, #0xc] + mov r1, #0x6 + mul r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r6, [r0, #0x4] + mov r0, #0x0 + str r0, [r5, #0x0] + b _0206954A +_02069510: + ldrh r0, [r4, #0x0] + cmp r0, #0x11 + bne _0206953E + add r0, r7, #0x0 + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _0206953E + ldrh r1, [r4, #0x2] + ldr r0, [sp, #0x4] + cmp r0, r1 + bne _0206953E + ldr r0, [sp, #0xc] + mov r1, #0x6 + mul r1, r0 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r6, [r0, #0x4] + mov r0, #0x0 + str r0, [r5, #0x0] + b _0206954A +_0206953E: + ldr r0, [sp, #0xc] + add r4, r4, #0x6 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, #0x7 + blt _020694C4 +_0206954A: + ldr r0, [sp, #0x18] + bl FUN_02016A18 + add r0, r6, #0x0 + add sp, #0x44 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02069558 +FUN_02069558: ; 0x02069558 + push {r3-r4, lr} + sub sp, #0x4c + add r4, r0, #0x0 + mov r1, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + ldr r0, _020695A0 ; =0x000001EE + cmp r4, r0 + blo _0206956E + bl ErrorHandling +_0206956E: + add r0, sp, #0x4 + blx FS_InitFile + ldr r1, _020695A4 ; =0x02105FC8 + add r0, sp, #0x4 + blx FS_OpenFile + add r0, sp, #0x4 + lsl r1, r4, #0x1 + mov r2, #0x0 + blx FS_SeekFile + add r0, sp, #0x4 + add r1, sp, #0x0 + mov r2, #0x2 + blx FS_ReadFile + add r0, sp, #0x4 + blx FS_CloseFile + add r0, sp, #0x0 + ldrh r0, [r0, #0x0] + add sp, #0x4c + pop {r3-r4, pc} + nop +_020695A0: .word 0x000001EE +_020695A4: .word 0x02105FC8 + + thumb_func_start FUN_020695A8 +FUN_020695A8: ; 0x020695A8 + push {r3, lr} + cmp r0, #0xb9 + bgt _020695CC + cmp r0, #0xb7 + blt _020695BA + beq _020695EC + cmp r0, #0xb9 + beq _020695EC + b _020695E8 +_020695BA: + cmp r0, #0x7a + bgt _020695C6 + bge _020695EC + cmp r0, #0x71 + beq _020695EC + b _020695E8 +_020695C6: + cmp r0, #0x8f + beq _020695EC + b _020695E8 +_020695CC: + cmp r0, #0xe2 + bgt _020695D8 + bge _020695EC + cmp r0, #0xca + beq _020695EC + b _020695E8 +_020695D8: + ldr r1, _020695F0 ; =0x0000013B + cmp r0, r1 + bgt _020695E2 + beq _020695EC + b _020695E8 +_020695E2: + add r1, #0x2b + cmp r0, r1 + beq _020695EC +_020695E8: + bl FUN_02069558 +_020695EC: + pop {r3, pc} + nop +_020695F0: .word 0x0000013B + + thumb_func_start FUN_020695F4 +FUN_020695F4: ; 0x020695F4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x0 + mov r1, #0x2c + bl FUN_02016998 + str r0, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02066A6C + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020672BC + add r7, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020687C8 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r2, [sp, #0x0] + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_02069F9C + ldr r0, [sp, #0x0] + ldrh r1, [r0, #0x0] + ldr r0, _02069690 ; =0x0000FFFF + cmp r1, r0 + beq _0206967C + ldr r4, [sp, #0x0] + lsl r7, r6, #0x9 +_02069648: + ldrh r1, [r4, #0x0] + mov r0, #0xfe + lsl r0, r0, #0x8 + and r0, r1 + cmp r0, r7 + bgt _0206967C + ldr r0, _02069694 ; =0x000001FF + and r0, r1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020696A8 + ldr r1, _02069690 ; =0x0000FFFF + cmp r0, r1 + bne _02069672 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02069718 +_02069672: + add r4, r4, #0x2 + ldrh r1, [r4, #0x0] + ldr r0, _02069690 ; =0x0000FFFF + cmp r1, r0 + bne _02069648 +_0206967C: + ldr r0, [sp, #0x0] + bl FUN_02016A18 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02066A94 + add sp, #0x8 + pop {r3-r7, pc} + nop +_02069690: .word 0x0000FFFF +_02069694: .word 0x000001FF + + thumb_func_start FUN_02069698 +FUN_02069698: ; 0x02069698 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020690E4 + add r1, r4, #0x0 + bl FUN_020696A8 + pop {r4, pc} + + thumb_func_start FUN_020696A8 +FUN_020696A8: ; 0x020696A8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + ldr r1, _02069700 ; =0x0000FFFF + add r6, r0, #0x0 + str r1, [sp, #0x4] + bl FUN_02066A6C + mov r4, #0x0 + str r0, [sp, #0x0] + add r7, r4, #0x0 +_020696BE: + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bne _020696E0 + lsl r2, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_020697D4 + str r5, [sp, #0x4] + b _020696F0 +_020696E0: + cmp r0, r5 + bne _020696EA + ldr r0, _02069704 ; =0x0000FFFE + str r0, [sp, #0x4] + b _020696F0 +_020696EA: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _020696BE +_020696F0: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + bl FUN_02066A94 + ldr r0, [sp, #0x4] + add sp, #0x8 + pop {r3-r7, pc} + nop +_02069700: .word 0x0000FFFF +_02069704: .word 0x0000FFFE + + thumb_func_start FUN_02069708 +FUN_02069708: ; 0x02069708 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_020690E4 + add r1, r4, #0x0 + bl FUN_02069718 + pop {r4, pc} + + thumb_func_start FUN_02069718 +FUN_02069718: ; 0x02069718 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + str r1, [sp, #0x0] + bl FUN_02066A6C + str r0, [sp, #0xc] + add r0, sp, #0x18 + mov r4, #0x0 + str r0, [sp, #0x4] + add r7, sp, #0x14 + add r6, sp, #0x10 +_02069730: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x37 + mov r2, #0x0 + bl FUN_020672BC + ldr r1, [sp, #0x4] + mov r2, #0x0 + strh r0, [r1, #0x0] + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3b + bl FUN_020672BC + add r1, r4, #0x0 + strb r0, [r7, #0x0] + add r0, r5, #0x0 + add r1, #0x3f + mov r2, #0x0 + bl FUN_020672BC + strb r0, [r6, #0x0] + ldr r0, [sp, #0x4] + add r4, r4, #0x1 + add r0, r0, #0x2 + str r0, [sp, #0x4] + add r7, r7, #0x1 + add r6, r6, #0x1 + cmp r4, #0x3 + blt _02069730 + ldr r0, [sp, #0x0] + add r1, sp, #0x10 + strh r0, [r1, #0xe] + ldr r0, [sp, #0x0] + mov r1, #0x5 + bl FUN_0206AB18 + add r1, sp, #0x10 + strb r0, [r1, #0x7] + mov r4, #0x0 + add r0, sp, #0x18 + strb r4, [r1, #0x3] + str r0, [sp, #0x8] + add r7, sp, #0x14 + add r6, sp, #0x10 +_0206978A: + add r1, r4, #0x0 + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + add r1, #0x36 + bl FUN_02067960 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, r7, #0x0 + bl FUN_02067960 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + add r2, r6, #0x0 + bl FUN_02067960 + ldr r0, [sp, #0x8] + add r4, r4, #0x1 + add r0, r0, #0x2 + str r0, [sp, #0x8] + add r7, r7, #0x1 + add r6, r6, #0x1 + cmp r4, #0x4 + blt _0206978A + ldr r1, [sp, #0xc] + add r0, r5, #0x0 + bl FUN_02066A94 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020697CC +FUN_020697CC: ; 0x020697CC + ldr r3, _020697D0 ; =FUN_020697D4 + bx r3 + .balign 4 +_020697D0: .word FUN_020697D4 + + thumb_func_start FUN_020697D4 +FUN_020697D4: ; 0x020697D4 + push {r0-r3} + push {r3-r5, lr} + add r4, r2, #0x0 + add r1, r4, #0x0 + add r1, #0x36 + add r2, sp, #0x14 + add r5, r0, #0x0 + bl FUN_02067960 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, sp, #0x10 + ldrh r0, [r0, #0x4] + bl FUN_0206AB30 + add r1, sp, #0x0 + strb r0, [r1, #0x0] + add r4, #0x3a + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, sp, #0x0 + bl FUN_02067960 + pop {r3-r5} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 + + thumb_func_start FUN_02069818 +FUN_02069818: ; 0x02069818 + push {r3-r7, lr} + sub sp, #0x10 + add r7, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x0 + mov r1, #0x2c + str r2, [sp, #0x0] + str r0, [sp, #0x8] + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + add r0, r7, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0xc] + add r0, r7, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0xc] + add r2, r4, #0x0 + bl FUN_02069F9C + ldr r0, [r5, #0x0] + lsl r0, r0, #0x1 + ldrh r2, [r4, r0] + ldr r0, _020698D8 ; =0x0000FFFF + cmp r2, r0 + bne _0206987A + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_0206987A: + mov r0, #0xfe + lsl r0, r0, #0x8 + add r3, r2, #0x0 + and r3, r0 + lsl r6, r6, #0x9 + cmp r6, r3 + beq _020698AC + ldr r1, _020698D8 ; =0x0000FFFF +_0206988A: + ldr r2, [r5, #0x0] + add r2, r2, #0x1 + str r2, [r5, #0x0] + lsl r2, r2, #0x1 + ldrh r2, [r4, r2] + cmp r2, r1 + bne _020698A4 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x10 + mov r0, #0x0 + pop {r3-r7, pc} +_020698A4: + add r3, r2, #0x0 + and r3, r0 + cmp r6, r3 + bne _0206988A +_020698AC: + cmp r6, r3 + bne _020698CC + ldr r0, _020698DC ; =0x000001FF + add r1, r2, #0x0 + and r1, r0 + ldr r0, [sp, #0x0] + strh r1, [r0, #0x0] + ldr r0, [r5, #0x0] + ldr r1, [sp, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + ldrh r1, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02069698 + str r0, [sp, #0x8] +_020698CC: + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x8] + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_020698D8: .word 0x0000FFFF +_020698DC: .word 0x000001FF + + thumb_func_start FUN_020698E0 +FUN_020698E0: ; 0x020698E0 + ldr r3, _020698E4 ; =FUN_020698E8 + bx r3 + .balign 4 +_020698E4: .word FUN_020698E8 + + thumb_func_start FUN_020698E8 +FUN_020698E8: ; 0x020698E8 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r1, #0x36 + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020672BC + add r1, sp, #0x0 + strh r0, [r1, #0x4] + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + mov r2, #0x0 + bl FUN_020672BC + add r1, sp, #0x0 + strb r0, [r1, #0x2] + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl FUN_020672BC + add r1, sp, #0x0 + strb r0, [r1, #0x0] + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020672BC + add r1, sp, #0x0 + strh r0, [r1, #0x6] + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + mov r2, #0x0 + bl FUN_020672BC + add r1, sp, #0x0 + strb r0, [r1, #0x3] + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl FUN_020672BC + add r1, sp, #0x0 + strb r0, [r1, #0x1] + add r1, r4, #0x0 + add r2, sp, #0x4 + add r0, r5, #0x0 + add r1, #0x36 + add r2, #0x2 + bl FUN_02067960 + add r1, r4, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, #0x3 + bl FUN_02067960 + add r4, #0x3e + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, #0x1 + bl FUN_02067960 + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + add r2, sp, #0x4 + bl FUN_02067960 + add r1, r6, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, #0x2 + bl FUN_02067960 + add r6, #0x3e + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, sp, #0x0 + bl FUN_02067960 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020699A4 +FUN_020699A4: ; 0x020699A4 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x3 + bhs _02069A0A + mov r7, #0x0 + add r6, sp, #0x0 +_020699B2: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x37 + add r2, r7, #0x0 + bl FUN_020671BC + add r1, r4, #0x0 + strh r0, [r6, #0x2] + add r0, r5, #0x0 + add r1, #0x3b + mov r2, #0x0 + bl FUN_020671BC + add r1, r4, #0x0 + strb r0, [r6, #0x1] + add r0, r5, #0x0 + add r1, #0x3f + mov r2, #0x0 + bl FUN_020671BC + add r1, r4, #0x0 + add r2, sp, #0x0 + strb r0, [r6, #0x0] + add r0, r5, #0x0 + add r1, #0x36 + add r2, #0x2 + bl FUN_02067830 + add r1, r4, #0x0 + add r2, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + add r2, #0x1 + bl FUN_02067830 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x3e + add r2, sp, #0x0 + bl FUN_02067830 + add r4, r4, #0x1 + cmp r4, #0x3 + blo _020699B2 +_02069A0A: + mov r1, #0x0 + add r0, sp, #0x0 + strh r1, [r0, #0x2] + strb r1, [r0, #0x1] + strb r1, [r0, #0x0] + add r2, sp, #0x0 + add r0, r5, #0x0 + mov r1, #0x39 + add r2, #0x2 + bl FUN_02067830 + add r2, sp, #0x0 + add r0, r5, #0x0 + mov r1, #0x3d + add r2, #0x1 + bl FUN_02067830 + add r0, r5, #0x0 + mov r1, #0x41 + add r2, sp, #0x0 + bl FUN_02067830 + pop {r3-r7, pc} + + thumb_func_start FUN_02069A38 +FUN_02069A38: ; 0x02069A38 + push {r3-r7, lr} + mov r4, #0x0 + add r6, r0, #0x0 + add r5, r1, #0x0 + add r7, r4, #0x0 +_02069A42: + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl FUN_020671BC + cmp r5, r0 + beq _02069A58 + add r4, r4, #0x1 + cmp r4, #0x4 + blt _02069A42 +_02069A58: + cmp r4, #0x4 + beq _02069A60 + mov r0, #0x1 + pop {r3-r7, pc} +_02069A60: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02069A64 +FUN_02069A64: ; 0x02069A64 + push {r4-r5, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r3, r4, #0x0 + mov r2, #0x11 +_02069A74: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069A74 + ldrh r1, [r4, #0x4] + lsl r0, r1, #0x1e + lsr r0, r0, #0x1f + beq _02069A8E + mov r0, #0x1 + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strh r0, [r4, #0x4] +_02069A8E: + add r0, r4, #0x0 + mov r1, #0x9f + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r4, #0x0 + mov r1, #0xa2 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r4, #0x0 + mov r1, #0xa3 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + bl FUN_020256BC + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xa9 + add r2, r5, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + mov r1, #0xa1 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + add r1, sp, #0x4 + mov r2, #0x18 + blx MIi_CpuClearFast + add r0, r4, #0x0 + mov r1, #0xaa + add r2, sp, #0x4 + bl FUN_02067830 + add r0, r4, #0x0 + bl FUN_02066ED8 + add sp, #0x1c + pop {r4-r5, pc} + + thumb_func_start FUN_02069AEC +FUN_02069AEC: ; 0x02069AEC + push {r3-r7, lr} + str r0, [sp, #0x0] + bl FUN_0206B9AC + add r7, r0, #0x0 + mov r6, #0x1 + mov r5, #0x0 + cmp r7, #0x0 + ble _02069B3C +_02069AFE: + ldr r0, [sp, #0x0] + add r1, r5, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02069B36 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02069B36 + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, r6 + bls _02069B36 + add r6, r0, #0x0 +_02069B36: + add r5, r5, #0x1 + cmp r5, r7 + blt _02069AFE +_02069B3C: + add r0, r6, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02069B40 +FUN_02069B40: ; 0x02069B40 + push {r3, lr} + sub sp, #0x8 + add r3, r0, #0x0 + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, sp, #0x4 + mov r1, #0x6d + mov r2, #0x0 + lsl r3, r3, #0x1 + bl FUN_02006548 + add r0, sp, #0x4 + ldrh r0, [r0, #0x0] + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02069B60 +FUN_02069B60: ; 0x02069B60 + push {r3, lr} + sub sp, #0x8 + add r3, r0, #0x0 + mov r2, #0x0 + add r0, sp, #0x4 + strh r2, [r0, #0x0] + cmp r3, #0x97 + bhi _02069B7E + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, sp, #0x4 + mov r1, #0x91 + lsl r3, r3, #0x1 + bl FUN_02006548 +_02069B7E: + add r0, sp, #0x4 + ldrh r0, [r0, #0x0] + add sp, #0x8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02069B88 +FUN_02069B88: ; 0x02069B88 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x1d +_02069B90: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069B90 + ldr r0, [r4, #0x0] + str r0, [r3, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_02069BA0 +FUN_02069BA0: ; 0x02069BA0 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x11 +_02069BA8: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069BA8 + pop {r3-r4} + bx lr + + thumb_func_start FUN_02069BB4 +FUN_02069BB4: ; 0x02069BB4 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0x11 +_02069BBC: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02069BBC + pop {r3-r4} + bx lr + + thumb_func_start FUN_02069BC8 +FUN_02069BC8: ; 0x02069BC8 + ldr r3, _02069BCC ; =FUN_02069BD0 + bx r3 + .balign 4 +_02069BCC: .word FUN_02069BD0 + + thumb_func_start FUN_02069BD0 +FUN_02069BD0: ; 0x02069BD0 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r1, r4, #0x0 + bl FUN_02069BE4 + pop {r4, pc} + + thumb_func_start FUN_02069BE4 +FUN_02069BE4: ; 0x02069BE4 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02068884 + lsl r1, r0, #0x2 + add r1, r0, r1 + ldr r0, _02069BF8 ; =0x020F7F16 + add r0, r0, r1 + ldrsb r0, [r4, r0] + pop {r4, pc} + .balign 4 +_02069BF8: .word 0x020F7F16 + + thumb_func_start FUN_02069BFC +FUN_02069BFC: ; 0x02069BFC + push {r3-r7, lr} + add r4, r0, #0x0 + add r7, r1, #0x0 + mov r0, #0x0 + mov r1, #0x2c + add r5, r2, #0x0 + bl FUN_02016998 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02069F9C + ldrh r1, [r6, #0x0] + ldr r0, _02069C44 ; =0x0000FFFF + mov r4, #0x0 + cmp r1, r0 + beq _02069C3A + ldr r1, _02069C48 ; =0x000001FF + ldr r2, _02069C44 ; =0x0000FFFF + add r0, r6, #0x0 +_02069C28: + ldrh r3, [r0, #0x0] + add r0, r0, #0x2 + add r4, r4, #0x1 + and r3, r1 + strh r3, [r5, #0x0] + ldrh r3, [r0, #0x0] + add r5, r5, #0x2 + cmp r3, r2 + bne _02069C28 +_02069C3A: + add r0, r6, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_02069C44: .word 0x0000FFFF +_02069C48: .word 0x000001FF + + thumb_func_start FUN_02069C4C +FUN_02069C4C: ; 0x02069C4C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_0206B9AC + add r6, r0, #0x0 + bl FUN_0201B9EC + mov r1, #0x1 + lsl r1, r1, #0xe + cmp r0, r1 + beq _02069C70 + lsl r1, r1, #0x1 + cmp r0, r1 + beq _02069C70 + mov r1, #0x3 + lsl r1, r1, #0xe + cmp r0, r1 + bne _02069CF2 +_02069C70: + bl FUN_0201B9EC + add r1, r6, #0x0 + blx _s32_div_f + add r0, r5, #0x0 + add r7, r1, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02069C70 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02069C70 + add r0, r7, #0x0 + bl FUN_0206A92C + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_02069CF4 + cmp r0, #0x0 + bne _02069CF2 + add r5, sp, #0x0 + mov r6, #0x7 +_02069CB8: + bl FUN_0201B9EC + strb r0, [r5, #0x0] + ldrb r2, [r5, #0x0] + add r1, r2, #0x0 + and r1, r6 + beq _02069CB8 + mov r0, #0xf0 + tst r0, r2 + beq _02069CD0 + add r0, sp, #0x0 + strb r1, [r0, #0x0] +_02069CD0: + add r1, sp, #0x0 + ldrb r2, [r1, #0x0] + lsl r0, r2, #0x4 + orr r0, r2 + strb r0, [r1, #0x0] + ldrb r2, [r1, #0x0] + mov r0, #0xf3 + and r0, r2 + strb r0, [r1, #0x0] + ldrb r0, [r1, #0x0] + add r2, sp, #0x0 + add r0, r0, #0x1 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x99 + bl FUN_02067830 +_02069CF2: + pop {r3-r7, pc} + + thumb_func_start FUN_02069CF4 +FUN_02069CF4: ; 0x02069CF4 + push {r3-r7, lr} + mov r6, #0x0 + add r5, r1, #0x0 + str r0, [sp, #0x0] + mov r4, #0x1 + add r7, r6, #0x0 + cmp r5, #0x0 + beq _02069D32 +_02069D04: + mov r0, #0x1 + tst r0, r5 + beq _02069D26 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x99 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02069D26 + add r0, r7, #0x0 + orr r0, r4 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_02069D26: + lsl r0, r5, #0x17 + add r6, r6, #0x1 + lsl r4, r4, #0x1 + lsr r5, r0, #0x18 + bne _02069D04 + b _02069D4A +_02069D32: + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x99 + add r2, r6, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02069D4A + add r0, r7, #0x1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_02069D4A: + add r0, r7, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02069D50 +FUN_02069D50: ; 0x02069D50 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + add r5, r1, #0x0 + bl FUN_0206B9AC + mov r6, #0x0 + str r0, [sp, #0x4] + cmp r0, #0x0 + ble _02069DC2 + add r4, sp, #0x8 +_02069D66: + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r7, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02069DBA + add r0, r7, #0x0 + mov r1, #0x99 + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r4, #0x0] + ldrb r1, [r4, #0x0] + mov r0, #0xf + and r0, r1 + beq _02069DBA + cmp r0, r5 + blt _02069D98 + cmp r5, #0x4 + ble _02069DA2 +_02069D98: + ldrb r1, [r4, #0x0] + mov r0, #0xf0 + and r0, r1 + strb r0, [r4, #0x0] + b _02069DA6 +_02069DA2: + sub r0, r1, r5 + strb r0, [r4, #0x0] +_02069DA6: + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + bne _02069DB0 + mov r0, #0x10 + strb r0, [r4, #0x0] +_02069DB0: + add r0, r7, #0x0 + mov r1, #0x99 + add r2, sp, #0x8 + bl FUN_02067830 +_02069DBA: + ldr r0, [sp, #0x4] + add r6, r6, #0x1 + cmp r6, r0 + blt _02069D66 +_02069DC2: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02069DC8 +FUN_02069DC8: ; 0x02069DC8 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_0206B9AC + add r7, r0, #0x0 + bl FUN_0201B9EC + mov r1, #0x3 + blx _s32_div_f + cmp r1, #0x0 + bne _02069E70 + mov r4, #0x0 + cmp r7, #0x0 + ble _02069E70 + sub r0, r7, #0x1 + str r0, [sp, #0x0] +_02069DEC: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02069E6A + add r0, r6, #0x0 + mov r1, #0x99 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x4 + strb r0, [r1, #0x0] + add r0, r1, #0x0 + ldrb r1, [r0, #0x0] + mov r0, #0xf + tst r0, r1 + beq _02069E6A + cmp r4, #0x0 + beq _02069E40 + add r0, r5, #0x0 + sub r1, r4, #0x1 + bl FUN_0206B9B0 + mov r1, #0x99 + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + mov r1, #0xf0 + tst r0, r1 + bne _02069E40 + add r0, r6, #0x0 + mov r1, #0x99 + add r2, sp, #0x4 + bl FUN_02067830 +_02069E40: + ldr r0, [sp, #0x0] + cmp r4, r0 + bge _02069E6A + add r0, r5, #0x0 + add r1, r4, #0x1 + bl FUN_0206B9B0 + mov r1, #0x99 + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + mov r1, #0xf0 + tst r0, r1 + bne _02069E6A + add r0, r6, #0x0 + mov r1, #0x99 + add r2, sp, #0x4 + bl FUN_02067830 + add r4, r4, #0x1 +_02069E6A: + add r4, r4, #0x1 + cmp r4, r7 + blt _02069DEC +_02069E70: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02069E74 +FUN_02069E74: ; 0x02069E74 + ldr r3, _02069E78 ; =FUN_02069E7C + bx r3 + .balign 4 +_02069E78: .word FUN_02069E7C + + thumb_func_start FUN_02069E7C +FUN_02069E7C: ; 0x02069E7C + push {r3, lr} + mov r1, #0x99 + mov r2, #0x0 + bl FUN_020672BC + mov r1, #0xf + tst r0, r1 + beq _02069E90 + mov r0, #0x1 + pop {r3, pc} +_02069E90: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02069E94 +FUN_02069E94: ; 0x02069E94 + ldr r3, _02069E98 ; =FUN_02069E9C + bx r3 + .balign 4 +_02069E98: .word FUN_02069E9C + + thumb_func_start FUN_02069E9C +FUN_02069E9C: ; 0x02069E9C + push {r3, lr} + mov r1, #0x99 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + tst r0, r1 + beq _02069EB4 + mov r0, #0x0 + pop {r3, pc} +_02069EB4: + mov r0, #0xf0 + tst r0, r1 + beq _02069EBE + mov r0, #0x1 + pop {r3, pc} +_02069EBE: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02069EC4 +FUN_02069EC4: ; 0x02069EC4 + ldr r3, _02069EC8 ; =FUN_02069ECC + bx r3 + .balign 4 +_02069EC8: .word FUN_02069ECC + + thumb_func_start FUN_02069ECC +FUN_02069ECC: ; 0x02069ECC + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa + mov r2, #0x0 + bl FUN_020672BC + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020672BC + ldr r1, _02069F20 ; =0x000001ED + cmp r4, r1 + bne _02069F1C + cmp r6, #0x79 + bne _02069F1C + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0206E7B8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069F24 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x70 + add r2, sp, #0x0 + bl FUN_02067960 +_02069F1C: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02069F20: .word 0x000001ED + + thumb_func_start FUN_02069F24 +FUN_02069F24: ; 0x02069F24 + sub r0, #0x7d + cmp r0, #0xf + bhi _02069F96 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02069F36: ; jump table (using 16-bit offset) + .short _02069F56 - _02069F36 - 2; case 0 + .short _02069F5A - _02069F36 - 2; case 1 + .short _02069F5E - _02069F36 - 2; case 2 + .short _02069F62 - _02069F36 - 2; case 3 + .short _02069F66 - _02069F36 - 2; case 4 + .short _02069F6A - _02069F36 - 2; case 5 + .short _02069F6E - _02069F36 - 2; case 6 + .short _02069F72 - _02069F36 - 2; case 7 + .short _02069F76 - _02069F36 - 2; case 8 + .short _02069F7A - _02069F36 - 2; case 9 + .short _02069F7E - _02069F36 - 2; case 10 + .short _02069F82 - _02069F36 - 2; case 11 + .short _02069F86 - _02069F36 - 2; case 12 + .short _02069F8A - _02069F36 - 2; case 13 + .short _02069F8E - _02069F36 - 2; case 14 + .short _02069F92 - _02069F36 - 2; case 15 +_02069F56: + mov r0, #0xa + bx lr +_02069F5A: + mov r0, #0xb + bx lr +_02069F5E: + mov r0, #0xd + bx lr +_02069F62: + mov r0, #0xc + bx lr +_02069F66: + mov r0, #0xf + bx lr +_02069F6A: + mov r0, #0x1 + bx lr +_02069F6E: + mov r0, #0x3 + bx lr +_02069F72: + mov r0, #0x4 + bx lr +_02069F76: + mov r0, #0x2 + bx lr +_02069F7A: + mov r0, #0xe + bx lr +_02069F7E: + mov r0, #0x6 + bx lr +_02069F82: + mov r0, #0x5 + bx lr +_02069F86: + mov r0, #0x7 + bx lr +_02069F8A: + mov r0, #0x10 + bx lr +_02069F8E: + mov r0, #0x11 + bx lr +_02069F92: + mov r0, #0x8 + bx lr +_02069F96: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02069F9C +FUN_02069F9C: ; 0x02069F9C + push {r4, lr} + add r4, r2, #0x0 + bl FUN_0206A8FC + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x21 + bl LoadFromNARC + pop {r4, pc} + + thumb_func_start FUN_02069FB0 +FUN_02069FB0: ; 0x02069FB0 + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _0206A010 ; =0x000001B9 + add r4, r2, #0x0 + add r5, r1, #0x0 + add r6, r3, #0x0 + cmp r4, r0 + bne _02069FFC + add r0, r5, #0x0 + bl FUN_02005F14 + cmp r0, #0x0 + bne _02069FE2 + mov r0, #0x1 + bl FUN_02005E80 + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020056AC + pop {r3-r7, pc} +_02069FE2: + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + beq _02069FEE + mov r0, #0x1 + bl FUN_02005E80 +_02069FEE: + ldr r2, [sp, #0x18] + add r0, r7, #0x0 + mov r1, #0x0 + add r3, r6, #0x0 + bl FUN_02005E90 + pop {r3-r7, pc} +_02069FFC: + ldr r0, [sp, #0x20] + ldr r3, [sp, #0x18] + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_020056AC + pop {r3-r7, pc} + nop +_0206A010: .word 0x000001B9 + + thumb_func_start FUN_0206A014 +FUN_0206A014: ; 0x0206A014 + push {r3-r6, lr} + sub sp, #0xc + ldr r6, [sp, #0x20] + add r5, r0, #0x0 + str r6, [sp, #0x0] + ldr r6, [sp, #0x24] + add r4, r2, #0x0 + str r6, [sp, #0x4] + bl FUN_0206A054 + cmp r4, #0xe + bne _0206A050 + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0xa2 + add r2, sp, #0x8 + bl FUN_02067830 + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9f + add r2, sp, #0x8 + bl FUN_02067830 +_0206A050: + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_0206A054 +FUN_0206A054: ; 0x0206A054 + push {r0-r3} + push {r3-r4, lr} + sub sp, #0x4 + ldr r2, [sp, #0x24] + add r4, r0, #0x0 + str r2, [sp, #0x0] + mov r2, #0x0 + bl FUN_020808AC + ldr r2, _0206A090 ; =0x020ECAC0 + add r0, r4, #0x0 + mov r1, #0x79 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x9a + add r2, sp, #0x18 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x9d + add r2, sp, #0x20 + bl FUN_02067960 + add sp, #0x4 + pop {r3-r4} + pop {r3} + add sp, #0x10 + bx r3 + nop +_0206A090: .word 0x020ECAC0 + + thumb_func_start FUN_0206A094 +FUN_0206A094: ; 0x0206A094 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + mov r0, #0x81 + add r7, r2, #0x0 + tst r0, r1 + bne _0206A12E + bl FUN_0201B9EC + mov r1, #0x64 + blx _s32_div_f + add r4, r1, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + mov r2, #0x10 + bl FUN_02068654 + add r1, sp, #0x4 + strh r0, [r1, #0x2] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + mov r2, #0x11 + bl FUN_02068654 + add r1, sp, #0x4 + strh r0, [r1, #0x0] + ldrh r2, [r1, #0x2] + ldrh r0, [r1, #0x0] + cmp r2, r0 + bne _0206A104 + cmp r2, #0x0 + beq _0206A104 + add r2, sp, #0x4 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, #0x2 + bl FUN_02067830 + add sp, #0x8 + pop {r3-r7, pc} +_0206A104: + ldr r0, _0206A134 ; =0x020F7ECC + lsl r1, r7, #0x2 + ldrh r0, [r0, r1] + cmp r4, r0 + blo _0206A12E + ldr r0, _0206A138 ; =0x020F7ECE + ldrh r0, [r0, r1] + cmp r4, r0 + add r2, sp, #0x4 + bhs _0206A126 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, #0x2 + bl FUN_02067830 + add sp, #0x8 + pop {r3-r7, pc} +_0206A126: + add r0, r5, #0x0 + mov r1, #0x6 + bl FUN_02067830 +_0206A12E: + add sp, #0x8 + pop {r3-r7, pc} + nop +_0206A134: .word 0x020F7ECC +_0206A138: .word 0x020F7ECE + + thumb_func_start FUN_0206A13C +FUN_0206A13C: ; 0x0206A13C + ldr r3, _0206A140 ; =FUN_0206A144 + bx r3 + .balign 4 +_0206A140: .word FUN_0206A144 + + thumb_func_start FUN_0206A144 +FUN_0206A144: ; 0x0206A144 + push {r4-r6, lr} + add r6, r1, #0x0 + mov r1, #0xad + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020672BC + add r1, r0, #0x0 + add r0, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0206A16C + pop {r4-r6, pc} + + thumb_func_start FUN_0206A16C +FUN_0206A16C: ; 0x0206A16C + push {r4, lr} + ldr r3, _0206A1C0 ; =0x000001EE + cmp r0, r3 + bne _0206A178 + mov r0, #0x0 + pop {r4, pc} +_0206A178: + cmp r2, #0x20 + bhs _0206A186 + mov r3, #0x1 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x1d + b _0206A1B0 +_0206A186: + cmp r2, #0x40 + bhs _0206A196 + mov r3, #0x1 + sub r2, #0x20 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x1e + b _0206A1B0 +_0206A196: + cmp r2, #0x60 + bhs _0206A1A6 + mov r3, #0x1 + sub r2, #0x40 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x1f + b _0206A1B0 +_0206A1A6: + mov r3, #0x1 + sub r2, #0x60 + add r4, r3, #0x0 + lsl r4, r2 + mov r2, #0x20 +_0206A1B0: + bl FUN_02068654 + tst r0, r4 + beq _0206A1BC + mov r0, #0x1 + pop {r4, pc} +_0206A1BC: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0206A1C0: .word 0x000001EE + + thumb_func_start FUN_0206A1C4 +FUN_0206A1C4: ; 0x0206A1C4 + ldr r3, _0206A1C8 ; =FUN_0206A1CC + bx r3 + .balign 4 +_0206A1C8: .word FUN_0206A1CC + + thumb_func_start FUN_0206A1CC +FUN_0206A1CC: ; 0x0206A1CC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_02066A6C + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + mov r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r2, r1, #0x0 + bl FUN_020672BC + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_02068678 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_02068678 + str r0, [sp, #0x0] + cmp r0, #0x0 + beq _0206A226 + mov r0, #0x1 + tst r0, r6 + beq _0206A21A + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x0 + bl FUN_02067960 + b _0206A230 +_0206A21A: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x4 + bl FUN_02067960 + b _0206A230 +_0206A226: + add r0, r5, #0x0 + mov r1, #0xa + add r2, sp, #0x4 + bl FUN_02067960 +_0206A230: + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02066A94 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0206A23C +FUN_0206A23C: ; 0x0206A23C + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + mov r0, #0x0 + str r1, [sp, #0x0] + bl FUN_020669C0 + str r0, [sp, #0x4] + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02069B88 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x0 + bl FUN_0206A418 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x1 + bl FUN_0206A418 + add r6, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x2 + bl FUN_0206A418 + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [r5, #0x0] + mov r2, #0x3 + bl FUN_0206A418 + str r0, [sp, #0x8] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x0 + bl FUN_0206A418 + str r0, [sp, #0xc] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_0206A418 + str r0, [sp, #0x10] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x2 + bl FUN_0206A418 + str r0, [sp, #0x14] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x3 + bl FUN_0206A418 + ldr r2, [sp, #0x4] + str r0, [sp, #0x18] + ldr r0, [sp, #0x4] + ldrh r2, [r2, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3D0 + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3D0 + ldr r0, [sp, #0x0] + str r0, [r5, #0x0] + ldr r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0xc] + ldr r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldmia r6!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x10] + ldr r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + ldmia r7!, {r0-r1} + stmia r2!, {r0-r1} + str r2, [sp, #0x14] + mov r0, #0x10 +_0206A32E: + ldr r1, [sp, #0x8] + ldrh r2, [r1, #0x0] + add r1, r1, #0x2 + str r1, [sp, #0x8] + ldr r1, [sp, #0x18] + strh r2, [r1, #0x0] + add r1, r1, #0x2 + str r1, [sp, #0x18] + sub r0, r0, #0x1 + bne _0206A32E + add r0, r5, #0x0 + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3F8 + strh r0, [r5, #0x6] + add r0, r5, #0x0 + ldrh r2, [r5, #0x6] + add r0, #0x8 + mov r1, #0x80 + bl FUN_0206A3A4 + add r0, r5, #0x0 + ldr r2, [r5, #0x0] + add r0, #0x88 + mov r1, #0x64 + bl FUN_0206A3A4 + ldr r0, [sp, #0x4] + bl FUN_02016A18 + add sp, #0x1c + pop {r4-r7, pc} + + thumb_func_start FUN_0206A370 +FUN_0206A370: ; 0x0206A370 + ldr r3, _0206A37C ; =LoadFromNARC + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x2 + bx r3 + nop +_0206A37C: .word LoadFromNARC + + thumb_func_start FUN_0206A380 +FUN_0206A380: ; 0x0206A380 + push {r4, lr} + add r4, r2, #0x0 + bl FUN_0206A8FC + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2 + bl LoadFromNARC + pop {r4, pc} + + thumb_func_start FUN_0206A394 +FUN_0206A394: ; 0x0206A394 + ldr r3, _0206A3A0 ; =LoadFromNARC + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x22 + bx r3 + nop +_0206A3A0: .word LoadFromNARC + + thumb_func_start FUN_0206A3A4 +FUN_0206A3A4: ; 0x0206A3A4 + push {r0-r3} + push {r3-r7, lr} + add r5, r0, #0x0 + mov r4, #0x0 + lsr r6, r1, #0x1 + beq _0206A3C6 + add r7, sp, #0x20 +_0206A3B2: + add r0, r7, #0x0 + bl FUN_0206A3D8 + ldrh r1, [r5, #0x0] + add r4, r4, #0x1 + eor r0, r1 + strh r0, [r5, #0x0] + add r5, r5, #0x2 + cmp r4, r6 + blo _0206A3B2 +_0206A3C6: + pop {r3-r7} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 + + thumb_func_start FUN_0206A3D0 +FUN_0206A3D0: ; 0x0206A3D0 + ldr r3, _0206A3D4 ; =FUN_0206A3A4 + bx r3 + .balign 4 +_0206A3D4: .word FUN_0206A3A4 + + thumb_func_start FUN_0206A3D8 +FUN_0206A3D8: ; 0x0206A3D8 + ldr r2, [r0, #0x0] + ldr r1, _0206A3F0 ; =0x41C64E6D + add r3, r2, #0x0 + mul r3, r1 + ldr r1, _0206A3F4 ; =0x00006073 + add r1, r3, r1 + str r1, [r0, #0x0] + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bx lr + nop +_0206A3F0: .word 0x41C64E6D +_0206A3F4: .word 0x00006073 + + thumb_func_start FUN_0206A3F8 +FUN_0206A3F8: ; 0x0206A3F8 + push {r3-r4} + mov r3, #0x0 + add r2, r3, #0x0 + lsr r4, r1, #0x1 + beq _0206A412 +_0206A402: + ldrh r1, [r0, #0x0] + add r2, r2, #0x1 + add r0, r0, #0x2 + add r1, r3, r1 + lsl r1, r1, #0x10 + lsr r3, r1, #0x10 + cmp r2, r4 + blo _0206A402 +_0206A412: + add r0, r3, #0x0 + pop {r3-r4} + bx lr + + thumb_func_start FUN_0206A418 +FUN_0206A418: ; 0x0206A418 + push {r3, lr} + mov r3, #0x3e + lsl r3, r3, #0xc + and r3, r1 + lsr r3, r3, #0xd + cmp r3, #0x1f + bhi _0206A478 + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0206A432: ; jump table (using 16-bit offset) + .short _0206A472 - _0206A432 - 2; case 0 + .short _0206A4A4 - _0206A432 - 2; case 1 + .short _0206A4D4 - _0206A432 - 2; case 2 + .short _0206A504 - _0206A432 - 2; case 3 + .short _0206A534 - _0206A432 - 2; case 4 + .short _0206A564 - _0206A432 - 2; case 5 + .short _0206A594 - _0206A432 - 2; case 6 + .short _0206A5C6 - _0206A432 - 2; case 7 + .short _0206A5F6 - _0206A432 - 2; case 8 + .short _0206A626 - _0206A432 - 2; case 9 + .short _0206A656 - _0206A432 - 2; case 10 + .short _0206A686 - _0206A432 - 2; case 11 + .short _0206A6B6 - _0206A432 - 2; case 12 + .short _0206A6E8 - _0206A432 - 2; case 13 + .short _0206A718 - _0206A432 - 2; case 14 + .short _0206A748 - _0206A432 - 2; case 15 + .short _0206A778 - _0206A432 - 2; case 16 + .short _0206A7A8 - _0206A432 - 2; case 17 + .short _0206A7D8 - _0206A432 - 2; case 18 + .short _0206A80A - _0206A432 - 2; case 19 + .short _0206A83A - _0206A432 - 2; case 20 + .short _0206A86A - _0206A432 - 2; case 21 + .short _0206A89A - _0206A432 - 2; case 22 + .short _0206A8CA - _0206A432 - 2; case 23 + .short _0206A472 - _0206A432 - 2; case 24 + .short _0206A4A4 - _0206A432 - 2; case 25 + .short _0206A4D4 - _0206A432 - 2; case 26 + .short _0206A504 - _0206A432 - 2; case 27 + .short _0206A534 - _0206A432 - 2; case 28 + .short _0206A564 - _0206A432 - 2; case 29 + .short _0206A594 - _0206A432 - 2; case 30 + .short _0206A5C6 - _0206A432 - 2; case 31 +_0206A472: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A47A +_0206A478: + b _0206A8F8 +_0206A47A: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A486: ; jump table (using 16-bit offset) + .short _0206A48E - _0206A486 - 2; case 0 + .short _0206A492 - _0206A486 - 2; case 1 + .short _0206A498 - _0206A486 - 2; case 2 + .short _0206A49E - _0206A486 - 2; case 3 +_0206A48E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A492: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A498: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A49E: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A4A4: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A4B6: ; jump table (using 16-bit offset) + .short _0206A4BE - _0206A4B6 - 2; case 0 + .short _0206A4C2 - _0206A4B6 - 2; case 1 + .short _0206A4C8 - _0206A4B6 - 2; case 2 + .short _0206A4CE - _0206A4B6 - 2; case 3 +_0206A4BE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A4C2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A4C8: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A4CE: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A4D4: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A4E6: ; jump table (using 16-bit offset) + .short _0206A4EE - _0206A4E6 - 2; case 0 + .short _0206A4F2 - _0206A4E6 - 2; case 1 + .short _0206A4F8 - _0206A4E6 - 2; case 2 + .short _0206A4FE - _0206A4E6 - 2; case 3 +_0206A4EE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A4F2: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A4F8: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A4FE: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A504: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A516: ; jump table (using 16-bit offset) + .short _0206A51E - _0206A516 - 2; case 0 + .short _0206A522 - _0206A516 - 2; case 1 + .short _0206A528 - _0206A516 - 2; case 2 + .short _0206A52E - _0206A516 - 2; case 3 +_0206A51E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A522: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A528: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A52E: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A534: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A546: ; jump table (using 16-bit offset) + .short _0206A54E - _0206A546 - 2; case 0 + .short _0206A552 - _0206A546 - 2; case 1 + .short _0206A558 - _0206A546 - 2; case 2 + .short _0206A55E - _0206A546 - 2; case 3 +_0206A54E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A552: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A558: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A55E: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A564: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A59A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A576: ; jump table (using 16-bit offset) + .short _0206A57E - _0206A576 - 2; case 0 + .short _0206A582 - _0206A576 - 2; case 1 + .short _0206A588 - _0206A576 - 2; case 2 + .short _0206A58E - _0206A576 - 2; case 3 +_0206A57E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A582: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A588: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A58E: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A594: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A59C +_0206A59A: + b _0206A8F8 +_0206A59C: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A5A8: ; jump table (using 16-bit offset) + .short _0206A5B0 - _0206A5A8 - 2; case 0 + .short _0206A5B6 - _0206A5A8 - 2; case 1 + .short _0206A5BA - _0206A5A8 - 2; case 2 + .short _0206A5C0 - _0206A5A8 - 2; case 3 +_0206A5B0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A5B6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A5BA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A5C0: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A5C6: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A5D8: ; jump table (using 16-bit offset) + .short _0206A5E0 - _0206A5D8 - 2; case 0 + .short _0206A5E6 - _0206A5D8 - 2; case 1 + .short _0206A5EA - _0206A5D8 - 2; case 2 + .short _0206A5F0 - _0206A5D8 - 2; case 3 +_0206A5E0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A5E6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A5EA: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A5F0: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A5F6: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A608: ; jump table (using 16-bit offset) + .short _0206A610 - _0206A608 - 2; case 0 + .short _0206A616 - _0206A608 - 2; case 1 + .short _0206A61A - _0206A608 - 2; case 2 + .short _0206A620 - _0206A608 - 2; case 3 +_0206A610: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A616: + add r1, r0, #0x0 + b _0206A8F8 +_0206A61A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A620: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A626: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A638: ; jump table (using 16-bit offset) + .short _0206A640 - _0206A638 - 2; case 0 + .short _0206A646 - _0206A638 - 2; case 1 + .short _0206A64A - _0206A638 - 2; case 2 + .short _0206A650 - _0206A638 - 2; case 3 +_0206A640: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A646: + add r1, r0, #0x0 + b _0206A8F8 +_0206A64A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A650: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A656: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A668: ; jump table (using 16-bit offset) + .short _0206A670 - _0206A668 - 2; case 0 + .short _0206A676 - _0206A668 - 2; case 1 + .short _0206A67A - _0206A668 - 2; case 2 + .short _0206A680 - _0206A668 - 2; case 3 +_0206A670: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A676: + add r1, r0, #0x0 + b _0206A8F8 +_0206A67A: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A680: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A686: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A6BC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A698: ; jump table (using 16-bit offset) + .short _0206A6A0 - _0206A698 - 2; case 0 + .short _0206A6A6 - _0206A698 - 2; case 1 + .short _0206A6AA - _0206A698 - 2; case 2 + .short _0206A6B0 - _0206A698 - 2; case 3 +_0206A6A0: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A6A6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A6AA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A6B0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A6B6: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A6BE +_0206A6BC: + b _0206A8F8 +_0206A6BE: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A6CA: ; jump table (using 16-bit offset) + .short _0206A6D2 - _0206A6CA - 2; case 0 + .short _0206A6D8 - _0206A6CA - 2; case 1 + .short _0206A6DE - _0206A6CA - 2; case 2 + .short _0206A6E2 - _0206A6CA - 2; case 3 +_0206A6D2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A6D8: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A6DE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A6E2: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A6E8: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A6FA: ; jump table (using 16-bit offset) + .short _0206A702 - _0206A6FA - 2; case 0 + .short _0206A708 - _0206A6FA - 2; case 1 + .short _0206A70E - _0206A6FA - 2; case 2 + .short _0206A712 - _0206A6FA - 2; case 3 +_0206A702: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A708: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A70E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A712: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A718: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A72A: ; jump table (using 16-bit offset) + .short _0206A732 - _0206A72A - 2; case 0 + .short _0206A738 - _0206A72A - 2; case 1 + .short _0206A73E - _0206A72A - 2; case 2 + .short _0206A742 - _0206A72A - 2; case 3 +_0206A732: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A738: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A73E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A742: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A748: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A75A: ; jump table (using 16-bit offset) + .short _0206A762 - _0206A75A - 2; case 0 + .short _0206A768 - _0206A75A - 2; case 1 + .short _0206A76E - _0206A75A - 2; case 2 + .short _0206A772 - _0206A75A - 2; case 3 +_0206A762: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A768: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A76E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A772: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A778: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A78A: ; jump table (using 16-bit offset) + .short _0206A792 - _0206A78A - 2; case 0 + .short _0206A798 - _0206A78A - 2; case 1 + .short _0206A79E - _0206A78A - 2; case 2 + .short _0206A7A2 - _0206A78A - 2; case 3 +_0206A792: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A798: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A79E: + add r1, r0, #0x0 + b _0206A8F8 +_0206A7A2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A7A8: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A7DE + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A7BA: ; jump table (using 16-bit offset) + .short _0206A7C2 - _0206A7BA - 2; case 0 + .short _0206A7C8 - _0206A7BA - 2; case 1 + .short _0206A7CE - _0206A7BA - 2; case 2 + .short _0206A7D2 - _0206A7BA - 2; case 3 +_0206A7C2: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A7C8: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A7CE: + add r1, r0, #0x0 + b _0206A8F8 +_0206A7D2: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A7D8: + add r0, #0x8 + cmp r2, #0x3 + bls _0206A7E0 +_0206A7DE: + b _0206A8F8 +_0206A7E0: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A7EC: ; jump table (using 16-bit offset) + .short _0206A7F4 - _0206A7EC - 2; case 0 + .short _0206A7FA - _0206A7EC - 2; case 1 + .short _0206A800 - _0206A7EC - 2; case 2 + .short _0206A806 - _0206A7EC - 2; case 3 +_0206A7F4: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A7FA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A800: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A806: + add r1, r0, #0x0 + b _0206A8F8 +_0206A80A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A81C: ; jump table (using 16-bit offset) + .short _0206A824 - _0206A81C - 2; case 0 + .short _0206A82A - _0206A81C - 2; case 1 + .short _0206A830 - _0206A81C - 2; case 2 + .short _0206A836 - _0206A81C - 2; case 3 +_0206A824: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A82A: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A830: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A836: + add r1, r0, #0x0 + b _0206A8F8 +_0206A83A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A84C: ; jump table (using 16-bit offset) + .short _0206A854 - _0206A84C - 2; case 0 + .short _0206A85A - _0206A84C - 2; case 1 + .short _0206A860 - _0206A84C - 2; case 2 + .short _0206A866 - _0206A84C - 2; case 3 +_0206A854: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A85A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A860: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A866: + add r1, r0, #0x0 + b _0206A8F8 +_0206A86A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A87C: ; jump table (using 16-bit offset) + .short _0206A884 - _0206A87C - 2; case 0 + .short _0206A88A - _0206A87C - 2; case 1 + .short _0206A890 - _0206A87C - 2; case 2 + .short _0206A896 - _0206A87C - 2; case 3 +_0206A884: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A88A: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A890: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A896: + add r1, r0, #0x0 + b _0206A8F8 +_0206A89A: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A8AC: ; jump table (using 16-bit offset) + .short _0206A8B4 - _0206A8AC - 2; case 0 + .short _0206A8BA - _0206A8AC - 2; case 1 + .short _0206A8C0 - _0206A8AC - 2; case 2 + .short _0206A8C6 - _0206A8AC - 2; case 3 +_0206A8B4: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A8BA: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A8C0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A8C6: + add r1, r0, #0x0 + b _0206A8F8 +_0206A8CA: + add r0, #0x8 + cmp r2, #0x3 + bhi _0206A8F8 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206A8DC: ; jump table (using 16-bit offset) + .short _0206A8E4 - _0206A8DC - 2; case 0 + .short _0206A8EA - _0206A8DC - 2; case 1 + .short _0206A8F0 - _0206A8DC - 2; case 2 + .short _0206A8F6 - _0206A8DC - 2; case 3 +_0206A8E4: + add r1, r0, #0x0 + add r1, #0x60 + b _0206A8F8 +_0206A8EA: + add r1, r0, #0x0 + add r1, #0x40 + b _0206A8F8 +_0206A8F0: + add r1, r0, #0x0 + add r1, #0x20 + b _0206A8F8 +_0206A8F6: + add r1, r0, #0x0 +_0206A8F8: + add r0, r1, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0206A8FC +FUN_0206A8FC: ; 0x0206A8FC + ldr r3, _0206A928 ; =0x00000182 + cmp r0, r3 + beq _0206A90C + add r2, r3, #0x0 + add r2, #0x1b + cmp r0, r2 + beq _0206A91A + bx lr +_0206A90C: + cmp r1, #0x0 + beq _0206A926 + cmp r1, #0x3 + bgt _0206A926 + add r3, #0x6d + add r0, r1, r3 + bx lr +_0206A91A: + cmp r1, #0x0 + beq _0206A926 + cmp r1, #0x2 + bgt _0206A926 + add r3, #0x70 + add r0, r1, r3 +_0206A926: + bx lr + .balign 4 +_0206A928: .word 0x00000182 + + thumb_func_start FUN_0206A92C +FUN_0206A92C: ; 0x0206A92C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r4, #0x1 + cmp r5, #0x20 + blt _0206A93A + bl ErrorHandling +_0206A93A: + mov r0, #0x0 + cmp r5, #0x0 + ble _0206A948 +_0206A940: + add r0, r0, #0x1 + lsl r4, r4, #0x1 + cmp r0, r5 + blt _0206A940 +_0206A948: + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0206A94C +FUN_0206A94C: ; 0x0206A94C + mov r3, #0x1 + mov r2, #0x0 +_0206A950: + add r1, r0, #0x0 + tst r1, r3 + bne _0206A95E + add r2, r2, #0x1 + lsl r3, r3, #0x1 + cmp r2, #0x20 + blt _0206A950 +_0206A95E: + add r0, r2, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0206A964 +FUN_0206A964: ; 0x0206A964 + ldr r3, _0206A980 ; =0x020F7EF2 + mov r2, #0x0 +_0206A968: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _0206A972 + mov r0, #0x1 + bx lr +_0206A972: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0x12 + blo _0206A968 + mov r0, #0x0 + bx lr + nop +_0206A980: .word 0x020F7EF2 + + thumb_func_start FUN_0206A984 +FUN_0206A984: ; 0x0206A984 + cmp r0, #0x12 + blo _0206A98A + mov r0, #0x0 +_0206A98A: + lsl r1, r0, #0x1 + ldr r0, _0206A994 ; =0x020F7EF2 + ldrh r0, [r0, r1] + bx lr + nop +_0206A994: .word 0x020F7EF2 + + thumb_func_start FUN_0206A998 +FUN_0206A998: ; 0x0206A998 + push {r3, lr} + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0206A964 + pop {r3, pc} + + thumb_func_start FUN_0206A9AC +FUN_0206A9AC: ; 0x0206A9AC + push {r3-r7, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r6, r2, #0x0 + bl FUN_020239BC + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_020239CC + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9c + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020239A0 + add r7, r0, #0x0 + mov r0, #0x8 + add r1, r6, #0x0 + bl FUN_020219F4 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x90 + add r2, r6, #0x0 + mov r4, #0x0 + bl FUN_020672BC + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + cmp r1, r0 + bne _0206AA1C + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + cmp r1, r0 + bne _0206AA1C + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_02021CE0 + cmp r0, #0x0 + bne _0206AA1C + mov r4, #0x1 +_0206AA1C: + add r0, r6, #0x0 + bl FUN_02021A20 + add r0, r7, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206AA30 +FUN_0206AA30: ; 0x0206AA30 + push {r3, lr} + cmp r0, #0x3f + bgt _0206AA48 + bge _0206AA6C + cmp r0, #0x1 + bgt _0206AA74 + cmp r0, #0x0 + blt _0206AA74 + beq _0206AA82 + cmp r0, #0x1 + beq _0206AA82 + b _0206AA74 +_0206AA48: + cmp r0, #0x5a + bgt _0206AA50 + beq _0206AA70 + b _0206AA74 +_0206AA50: + add r1, r0, #0x0 + sub r1, #0x5b + cmp r1, #0x3 + bhi _0206AA74 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206AA64: ; jump table (using 16-bit offset) + .short _0206AA70 - _0206AA64 - 2; case 0 + .short _0206AA70 - _0206AA64 - 2; case 1 + .short _0206AA70 - _0206AA64 - 2; case 2 + .short _0206AA70 - _0206AA64 - 2; case 3 +_0206AA6C: + mov r0, #0x2 + pop {r3, pc} +_0206AA70: + sub r0, #0x57 + pop {r3, pc} +_0206AA74: + bl FUN_0206AE00 + cmp r0, #0x1 + bne _0206AA80 + mov r0, #0x1 + pop {r3, pc} +_0206AA80: + mov r0, #0x0 +_0206AA82: + pop {r3, pc} + + thumb_func_start FUN_0206AA84 +FUN_0206AA84: ; 0x0206AA84 + push {r3-r4, lr} + sub sp, #0x1c + add r4, r0, #0x0 + mov r0, #0x0 + add r1, sp, #0x0 + strb r0, [r1, #0x0] + add r1, sp, #0x0 + add r1, #0x1 + mov r2, #0x18 + blx MIi_CpuClearFast + add r0, r4, #0x0 + mov r1, #0xa1 + add r2, sp, #0x0 + bl FUN_02067830 + add r2, sp, #0x0 + add r0, r4, #0x0 + mov r1, #0xaa + add r2, #0x1 + bl FUN_02067830 + add sp, #0x1c + pop {r3-r4, pc} + + thumb_func_start FUN_0206AAB4 +FUN_0206AAB4: ; 0x0206AAB4 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_02066A6C + mov r4, #0x0 + str r0, [sp, #0x0] + add r7, r4, #0x0 + add r6, sp, #0x4 +_0206AAC6: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _0206AAF0 + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x42 + mov r2, #0x0 + bl FUN_020672BC + add r1, r4, #0x0 + strb r0, [r6, #0x0] + add r0, r5, #0x0 + add r1, #0x3a + add r2, sp, #0x4 + bl FUN_02067960 +_0206AAF0: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _0206AAC6 + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + bl FUN_02066A94 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206AB04 +FUN_0206AB04: ; 0x0206AB04 + push {r3, lr} + mov r1, #0x75 + lsl r1, r1, #0x6 + mov r2, #0x0 + str r1, [sp, #0x0] + mov r1, #0x9 + add r3, r2, #0x0 + bl FUN_02006548 + pop {r3, pc} + + thumb_func_start FUN_0206AB18 +FUN_0206AB18: ; 0x0206AB18 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0x0 + add r1, sp, #0x0 + bl FUN_0206ABB4 + add r0, sp, #0x0 + add r1, r4, #0x0 + bl FUN_0206AB58 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_0206AB30 +FUN_0206AB30: ; 0x0206AB30 + push {r3-r5, lr} + add r5, r1, #0x0 + cmp r5, #0x3 + bls _0206AB3A + mov r5, #0x3 +_0206AB3A: + mov r1, #0x5 + bl FUN_0206AB18 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + mov r0, #0x14 + mul r0, r4 + mul r0, r5 + mov r1, #0x64 + blx _s32_div_f + add r0, r4, r0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3-r5, pc} + + thumb_func_start FUN_0206AB58 +FUN_0206AB58: ; 0x0206AB58 + cmp r1, #0xb + bhi _0206ABB0 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206AB68: ; jump table (using 16-bit offset) + .short _0206AB80 - _0206AB68 - 2; case 0 + .short _0206AB84 - _0206AB68 - 2; case 1 + .short _0206AB88 - _0206AB68 - 2; case 2 + .short _0206AB8C - _0206AB68 - 2; case 3 + .short _0206AB90 - _0206AB68 - 2; case 4 + .short _0206AB94 - _0206AB68 - 2; case 5 + .short _0206AB98 - _0206AB68 - 2; case 6 + .short _0206AB9C - _0206AB68 - 2; case 7 + .short _0206ABA0 - _0206AB68 - 2; case 8 + .short _0206ABA6 - _0206AB68 - 2; case 9 + .short _0206ABAA - _0206AB68 - 2; case 10 + .short _0206ABAE - _0206AB68 - 2; case 11 +_0206AB80: + ldrh r0, [r0, #0x0] + bx lr +_0206AB84: + ldrb r0, [r0, #0x2] + bx lr +_0206AB88: + ldrb r0, [r0, #0x3] + bx lr +_0206AB8C: + ldrb r0, [r0, #0x4] + bx lr +_0206AB90: + ldrb r0, [r0, #0x5] + bx lr +_0206AB94: + ldrb r0, [r0, #0x6] + bx lr +_0206AB98: + ldrb r0, [r0, #0x7] + bx lr +_0206AB9C: + ldrh r0, [r0, #0x8] + bx lr +_0206ABA0: + mov r1, #0xa + ldrsb r0, [r0, r1] + bx lr +_0206ABA6: + ldrb r0, [r0, #0xb] + bx lr +_0206ABAA: + ldrb r0, [r0, #0xc] + bx lr +_0206ABAE: + ldrb r0, [r0, #0xd] +_0206ABB0: + bx lr + .balign 4 + + thumb_func_start FUN_0206ABB4 +FUN_0206ABB4: ; 0x0206ABB4 + ldr r3, _0206ABC0 ; =LoadFromNARC + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x9 + bx r3 + nop +_0206ABC0: .word LoadFromNARC + + thumb_func_start FUN_0206ABC4 +FUN_0206ABC4: ; 0x0206ABC4 + push {r3-r7, lr} + sub sp, #0x48 + str r2, [sp, #0x4] + ldr r2, _0206AC70 ; =0x0000022F + str r0, [sp, #0x0] + add r4, r1, #0x0 + ldr r3, [sp, #0x4] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [sp, #0x10] + add r0, r4, #0x0 + bl FUN_02024EC0 + bl FUN_02024EE8 + ldr r4, [sp, #0x0] + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r5, r4, #0x0 + mov r7, #0x0 + str r0, [sp, #0x8] + add r5, #0x3c +_0206ABF4: + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _0206AC48 + add r1, sp, #0x14 + bl FUN_0206ADE0 + ldr r3, [sp, #0x8] + add r6, sp, #0x14 + add r3, #0x28 + mov r2, #0x6 +_0206AC08: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206AC08 + ldr r0, [r6, #0x0] + str r0, [r3, #0x0] + add r0, sp, #0x14 + ldrb r0, [r0, #0x1] + cmp r0, #0x3f + bne _0206AC26 + ldr r1, [sp, #0xc] + add r0, r5, #0x0 + bl StringCopy + b _0206AC3E +_0206AC26: + ldr r0, [sp, #0x10] + ldr r1, [r4, #0x18] + bl FUN_0200A914 + add r6, r0, #0x0 + add r1, r5, #0x0 + mov r2, #0x8 + bl FUN_02021EF0 + add r0, r6, #0x0 + bl FUN_02021A20 +_0206AC3E: + ldr r0, [sp, #0x0] + ldr r2, [sp, #0x4] + add r1, r7, #0x0 + bl FUN_0206AE0C +_0206AC48: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + add r0, #0x34 + add r4, r4, #0x4 + add r5, #0x34 + str r0, [sp, #0x8] + cmp r7, #0x4 + blt _0206ABF4 + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x24] + orr r1, r0 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + add sp, #0x48 + pop {r3-r7, pc} + nop +_0206AC70: .word 0x0000022F + + thumb_func_start FUN_0206AC74 +FUN_0206AC74: ; 0x0206AC74 + push {r4-r5, lr} + sub sp, #0x34 + add r5, r1, #0x0 + add r1, sp, #0x0 + bl FUN_0206ADE0 + cmp r5, #0x9 + bhi _0206ACCC + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206AC90: ; jump table (using 16-bit offset) + .short _0206ACA4 - _0206AC90 - 2; case 0 + .short _0206ACAA - _0206AC90 - 2; case 1 + .short _0206ACB0 - _0206AC90 - 2; case 2 + .short _0206ACB6 - _0206AC90 - 2; case 3 + .short _0206ACBC - _0206AC90 - 2; case 4 + .short _0206ACBC - _0206AC90 - 2; case 5 + .short _0206ACBC - _0206AC90 - 2; case 6 + .short _0206ACBC - _0206AC90 - 2; case 7 + .short _0206ACC6 - _0206AC90 - 2; case 8 + .short _0206ACCA - _0206AC90 - 2; case 9 +_0206ACA4: + add r0, sp, #0x0 + ldrb r4, [r0, #0x0] + b _0206ACCC +_0206ACAA: + add r0, sp, #0x0 + ldrb r4, [r0, #0x1] + b _0206ACCC +_0206ACB0: + add r0, sp, #0x0 + ldrb r4, [r0, #0x2] + b _0206ACCC +_0206ACB6: + add r0, sp, #0x0 + ldrb r4, [r0, #0x3] + b _0206ACCC +_0206ACBC: + sub r0, r5, #0x4 + lsl r1, r0, #0x1 + add r0, sp, #0x4 + ldrh r4, [r0, r1] + b _0206ACCC +_0206ACC6: + ldr r4, [sp, #0xc] + b _0206ACCC +_0206ACCA: + ldr r4, [sp, #0x10] +_0206ACCC: + add r0, r4, #0x0 + add sp, #0x34 + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0206ACD4 +FUN_0206ACD4: ; 0x0206ACD4 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x4] + add r7, r1, #0x0 + ldr r1, [sp, #0x4] + mov r0, #0x3b + add r4, r2, #0x0 + bl LoadFromNARC_7 + add r6, r0, #0x0 + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, sp, #0xc + mov r1, #0x89 + mov r2, #0x0 + lsl r3, r5, #0x1 + bl FUN_02006548 + mov r0, #0x3b + add r1, r4, #0x0 + bl FUN_02006670 + add r4, sp, #0xc + ldrh r2, [r4, #0x0] + str r0, [sp, #0x8] + cmp r2, r6 + beq _0206AD40 +_0206AD0E: + add r0, sp, #0xc + add r0, #0x2 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + mov r1, #0x0 + mov r3, #0x4 + bl FUN_02006814 + ldrh r1, [r4, #0x2] + cmp r1, r5 + bne _0206AD30 + ldrh r0, [r4, #0x4] + cmp r0, r7 + bne _0206AD30 + mov r0, #0x1 + str r0, [sp, #0x4] + b _0206AD40 +_0206AD30: + cmp r1, r5 + bne _0206AD40 + ldrh r0, [r4, #0x0] + add r0, r0, #0x4 + strh r0, [r4, #0x0] + ldrh r2, [r4, #0x0] + cmp r2, r6 + bne _0206AD0E +_0206AD40: + ldr r0, [sp, #0x8] + bl FUN_020066F4 + ldr r0, [sp, #0x4] + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0206AD4C +FUN_0206AD4C: ; 0x0206AD4C + push {r3-r7, lr} + sub sp, #0x18 + add r6, r0, #0x0 + add r7, r1, #0x0 + mov r0, #0x3b + mov r1, #0x0 + str r2, [sp, #0x4] + str r3, [sp, #0x8] + bl LoadFromNARC_7 + add r5, r0, #0x0 + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, sp, #0x10 + mov r1, #0x89 + mov r2, #0x0 + lsl r3, r6, #0x1 + bl FUN_02006548 + ldr r1, [sp, #0x8] + mov r0, #0x3b + bl FUN_02006670 + add r4, sp, #0x10 + ldrh r2, [r4, #0x0] + str r0, [sp, #0xc] + cmp r2, r5 + beq _0206ADC2 +_0206AD84: + add r0, sp, #0x10 + add r0, #0x2 + str r0, [sp, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x0 + mov r3, #0x4 + bl FUN_02006814 + ldrh r0, [r4, #0x2] + cmp r0, r6 + bne _0206ADB6 + ldrh r0, [r4, #0x4] + cmp r0, r7 + bne _0206ADB6 + ldr r0, [sp, #0x4] + add r2, sp, #0x10 + str r0, [sp, #0x0] + ldrh r2, [r2, #0x0] + ldr r1, _0206ADDC ; =0x0000022E + ldr r3, [sp, #0x8] + mov r0, #0x1a + lsr r2, r2, #0x2 + bl FUN_0200A648 + b _0206ADC2 +_0206ADB6: + ldrh r0, [r4, #0x0] + add r0, r0, #0x4 + strh r0, [r4, #0x0] + ldrh r2, [r4, #0x0] + cmp r2, r5 + bne _0206AD84 +_0206ADC2: + ldr r0, [sp, #0xc] + bl FUN_020066F4 + add r0, sp, #0x10 + ldrh r0, [r0, #0x0] + cmp r0, r5 + bne _0206ADD6 + ldr r0, [sp, #0x4] + bl FUN_02021A4C +_0206ADD6: + add sp, #0x18 + pop {r3-r7, pc} + nop +_0206ADDC: .word 0x0000022E + + thumb_func_start FUN_0206ADE0 +FUN_0206ADE0: ; 0x0206ADE0 + ldr r3, _0206ADEC ; =LoadFromNARC + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x39 + bx r3 + nop +_0206ADEC: .word LoadFromNARC + + thumb_func_start FUN_0206ADF0 +FUN_0206ADF0: ; 0x0206ADF0 + ldr r3, _0206ADFC ; =LoadFromNARC + add r2, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x3a + bx r3 + nop +_0206ADFC: .word LoadFromNARC + + thumb_func_start FUN_0206AE00 +FUN_0206AE00: ; 0x0206AE00 + ldr r1, _0206AE08 ; =0x020F8010 + ldrb r0, [r1, r0] + bx lr + nop +_0206AE08: .word 0x020F8010 + + thumb_func_start FUN_0206AE0C +FUN_0206AE0C: ; 0x0206AE0C + push {r3-r7, lr} + sub sp, #0x50 + add r7, r1, #0x0 + add r4, r0, #0x0 + add r5, r2, #0x0 + bl FUN_0201B9D4 + lsl r6, r7, #0x2 + str r0, [sp, #0x44] + add r0, r4, r6 + ldr r0, [r0, #0x4] + mov r1, #0x6 + bl FUN_0206B8CC + add r0, r5, #0x0 + mov r1, #0x60 + bl FUN_02016998 + str r0, [sp, #0x4c] + add r0, r5, #0x0 + bl FUN_020669C0 + str r0, [sp, #0x40] + add r0, r4, r6 + ldr r0, [r0, #0x18] + ldr r1, [sp, #0x4c] + bl FUN_0206ADF0 + mov r0, #0x34 + add r5, r7, #0x0 + mul r5, r0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + bl FUN_0206AE00 + cmp r0, #0x1 + bne _0206AE5E + mov r0, #0x78 + str r0, [sp, #0x10] + b _0206AE62 +_0206AE5E: + mov r0, #0x88 + str r0, [sp, #0x10] +_0206AE62: + add r0, r4, r5 + add r0, #0x28 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + bhi _0206AF26 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206AE78: ; jump table (using 16-bit offset) + .short _0206AE80 - _0206AE78 - 2; case 0 + .short _0206AF28 - _0206AE78 - 2; case 1 + .short _0206AFE8 - _0206AE78 - 2; case 2 + .short _0206B08C - _0206AE78 - 2; case 3 +_0206AE80: + mov r0, #0x0 + str r0, [sp, #0x48] + add r0, r4, r5 + add r0, #0x2b + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ble _0206AF26 + ldr r0, [sp, #0x4c] + str r0, [sp, #0x28] + add r0, r4, r6 + str r0, [sp, #0x24] +_0206AE96: + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x28] + ldr r1, [r0, #0x18] + ldr r0, [sp, #0x28] + ldrh r3, [r2, #0x0] + ldrh r2, [r2, #0x2] + ldrh r0, [r0, #0x4] + add r2, r3, r2 + add r0, r0, r2 + add r7, r1, r0 + add r0, r7, #0x0 + bl FUN_0201B9E0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + ble _0206AECE +_0206AEBC: + bl FUN_0201B9EC + add r7, r0, #0x0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + add r6, r6, #0x1 + cmp r6, r0 + blt _0206AEBC +_0206AECE: + ldr r0, [sp, #0x10] + lsl r1, r7, #0x8 + add r6, r1, r0 + ldr r0, [sp, #0x28] + ldrh r1, [r0, #0x0] + mov r0, #0x1f + mul r0, r1 + mov r1, #0xff + blx _s32_div_f + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + lsl r3, r3, #0x18 + str r6, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x28] + ldrh r1, [r1, #0x4] + ldrh r2, [r2, #0x2] + ldr r0, [sp, #0x40] + lsr r3, r3, #0x18 + bl FUN_02066ACC + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x40] + ldr r0, [r0, #0x4] + bl FUN_0206B900 + ldr r0, [sp, #0x28] + add r0, r0, #0x6 + str r0, [sp, #0x28] + ldr r0, [sp, #0x48] + add r0, r0, #0x1 + str r0, [sp, #0x48] + add r0, r4, r5 + add r0, #0x2b + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x48] + cmp r0, r1 + blt _0206AE96 +_0206AF26: + b _0206B156 +_0206AF28: + mov r0, #0x0 + str r0, [sp, #0x18] + add r0, r4, r5 + add r0, #0x2b + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ble _0206AFE6 + ldr r0, [sp, #0x4c] + str r0, [sp, #0x30] + add r0, r4, r6 + str r0, [sp, #0x2c] +_0206AF3E: + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x30] + ldr r1, [r0, #0x18] + ldr r0, [sp, #0x30] + ldrh r3, [r2, #0x0] + ldrh r2, [r2, #0x2] + ldrh r0, [r0, #0x4] + add r2, r3, r2 + add r0, r0, r2 + add r7, r1, r0 + add r0, r7, #0x0 + bl FUN_0201B9E0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + ble _0206AF76 +_0206AF64: + bl FUN_0201B9EC + add r7, r0, #0x0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + add r6, r6, #0x1 + cmp r6, r0 + blt _0206AF64 +_0206AF76: + ldr r0, [sp, #0x10] + lsl r1, r7, #0x8 + add r6, r1, r0 + ldr r0, [sp, #0x30] + ldrh r1, [r0, #0x0] + mov r0, #0x1f + mul r0, r1 + mov r1, #0xff + blx _s32_div_f + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + lsl r3, r3, #0x18 + str r6, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x30] + ldrh r1, [r1, #0x4] + ldrh r2, [r2, #0x2] + ldr r0, [sp, #0x40] + lsr r3, r3, #0x18 + bl FUN_02066ACC + ldr r7, [sp, #0x30] + mov r6, #0x0 +_0206AFB0: + ldrh r1, [r7, #0x6] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x40] + lsr r2, r2, #0x18 + bl FUN_020697CC + add r6, r6, #0x1 + add r7, r7, #0x2 + cmp r6, #0x4 + blt _0206AFB0 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x40] + ldr r0, [r0, #0x4] + bl FUN_0206B900 + ldr r0, [sp, #0x30] + add r0, #0xe + str r0, [sp, #0x30] + ldr r0, [sp, #0x18] + add r0, r0, #0x1 + str r0, [sp, #0x18] + add r0, r4, r5 + add r0, #0x2b + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x18] + cmp r0, r1 + blt _0206AF3E +_0206AFE6: + b _0206B156 +_0206AFE8: + mov r0, #0x0 + str r0, [sp, #0x1c] + add r0, r4, r5 + add r0, #0x2b + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ble _0206B08A + add r0, r4, r6 + ldr r7, [sp, #0x4c] + str r0, [sp, #0x34] +_0206AFFC: + ldr r0, [sp, #0x34] + ldrh r3, [r7, #0x0] + ldrh r2, [r7, #0x2] + ldr r1, [r0, #0x18] + ldrh r0, [r7, #0x4] + add r2, r3, r2 + add r0, r0, r2 + add r0, r1, r0 + str r0, [sp, #0x14] + bl FUN_0201B9E0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + ble _0206B030 +_0206B01E: + bl FUN_0201B9EC + str r0, [sp, #0x14] + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + add r6, r6, #0x1 + cmp r6, r0 + blt _0206B01E +_0206B030: + ldr r0, [sp, #0x14] + lsl r1, r0, #0x8 + ldr r0, [sp, #0x10] + add r6, r1, r0 + ldrh r1, [r7, #0x0] + mov r0, #0x1f + mul r0, r1 + mov r1, #0xff + blx _s32_div_f + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + lsl r3, r3, #0x18 + str r6, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldrh r1, [r7, #0x4] + ldrh r2, [r7, #0x2] + ldr r0, [sp, #0x40] + lsr r3, r3, #0x18 + bl FUN_02066ACC + ldr r0, [sp, #0x40] + mov r1, #0x6 + add r2, r7, #0x6 + bl FUN_02067830 + ldr r0, [sp, #0x34] + ldr r1, [sp, #0x40] + ldr r0, [r0, #0x4] + bl FUN_0206B900 + ldr r0, [sp, #0x1c] + add r7, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x1c] + add r0, r4, r5 + add r0, #0x2b + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x1c] + cmp r0, r1 + blt _0206AFFC +_0206B08A: + b _0206B156 +_0206B08C: + mov r0, #0x0 + str r0, [sp, #0x20] + add r0, r4, r5 + add r0, #0x2b + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ble _0206B156 + ldr r0, [sp, #0x4c] + str r0, [sp, #0x3c] + add r0, r4, r6 + str r0, [sp, #0x38] +_0206B0A2: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x3c] + ldr r1, [r0, #0x18] + ldr r0, [sp, #0x3c] + ldrh r3, [r2, #0x0] + ldrh r2, [r2, #0x2] + ldrh r0, [r0, #0x4] + add r2, r3, r2 + add r0, r0, r2 + add r7, r1, r0 + add r0, r7, #0x0 + bl FUN_0201B9E0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + ble _0206B0DA +_0206B0C8: + bl FUN_0201B9EC + add r7, r0, #0x0 + add r0, r4, r5 + add r0, #0x29 + ldrb r0, [r0, #0x0] + add r6, r6, #0x1 + cmp r6, r0 + blt _0206B0C8 +_0206B0DA: + ldr r0, [sp, #0x10] + lsl r1, r7, #0x8 + add r6, r1, r0 + ldr r0, [sp, #0x3c] + ldrh r1, [r0, #0x0] + mov r0, #0x1f + mul r0, r1 + mov r1, #0xff + blx _s32_div_f + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + lsl r3, r3, #0x18 + str r6, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x3c] + ldrh r1, [r1, #0x4] + ldrh r2, [r2, #0x2] + ldr r0, [sp, #0x40] + lsr r3, r3, #0x18 + bl FUN_02066ACC + ldr r2, [sp, #0x3c] + ldr r0, [sp, #0x40] + mov r1, #0x6 + add r2, r2, #0x6 + bl FUN_02067830 + ldr r7, [sp, #0x3c] + mov r6, #0x0 +_0206B120: + ldrh r1, [r7, #0x8] + lsl r2, r6, #0x18 + ldr r0, [sp, #0x40] + lsr r2, r2, #0x18 + bl FUN_020697CC + add r6, r6, #0x1 + add r7, r7, #0x2 + cmp r6, #0x4 + blt _0206B120 + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x40] + ldr r0, [r0, #0x4] + bl FUN_0206B900 + ldr r0, [sp, #0x3c] + add r0, #0x10 + str r0, [sp, #0x3c] + ldr r0, [sp, #0x20] + add r0, r0, #0x1 + str r0, [sp, #0x20] + add r0, r4, r5 + add r0, #0x2b + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x20] + cmp r0, r1 + blt _0206B0A2 +_0206B156: + ldr r0, [sp, #0x4c] + bl FUN_02016A18 + ldr r0, [sp, #0x40] + bl FUN_02016A18 + ldr r0, [sp, #0x44] + bl FUN_0201B9E0 + add sp, #0x50 + pop {r3-r7, pc} + + thumb_func_start FUN_0206B16C +FUN_0206B16C: ; 0x0206B16C + push {r3, lr} + bl FUN_0206B180 + bl FUN_02022830 + pop {r3, pc} + + thumb_func_start FUN_0206B178 +FUN_0206B178: ; 0x0206B178 + ldr r0, _0206B17C ; =0x000121C8 + bx lr + .balign 4 +_0206B17C: .word 0x000121C8 + + thumb_func_start FUN_0206B180 +FUN_0206B180: ; 0x0206B180 + push {r3-r7, lr} + str r0, [sp, #0x0] + mov r7, #0x0 + add r6, r0, #0x4 +_0206B188: + mov r4, #0x0 + add r5, r6, #0x0 +_0206B18C: + add r0, r5, #0x0 + bl FUN_020669A0 + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x1e + blo _0206B18C + mov r0, #0xff + lsl r0, r0, #0x4 + add r7, r7, #0x1 + add r6, r6, r0 + cmp r7, #0x12 + blo _0206B188 + mov r3, #0x0 + ldr r1, _0206B200 ; =0x000121B4 + add r4, r3, #0x0 + add r2, r3, #0x0 +_0206B1AE: + ldr r0, [sp, #0x0] + add r0, r0, r3 + strb r4, [r0, r1] + add r4, r4, #0x1 + cmp r4, #0x10 + blo _0206B1BC + add r4, r2, #0x0 +_0206B1BC: + add r3, r3, #0x1 + cmp r3, #0x12 + blo _0206B1AE + ldr r1, _0206B204 ; =0x000121C6 + ldr r0, [sp, #0x0] + mov r3, #0x0 + strb r3, [r0, r1] + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xe + bl FUN_0200A86C + add r6, r0, #0x0 + beq _0206B1F8 + ldr r1, _0206B208 ; =0x00011EE4 + ldr r0, [sp, #0x0] + mov r5, #0x0 + add r4, r0, r1 +_0206B1E0: + add r0, r6, #0x0 + add r1, r5, #0x6 + add r2, r4, #0x0 + bl FUN_0200A968 + add r5, r5, #0x1 + add r4, #0x28 + cmp r5, #0x12 + blo _0206B1E0 + add r0, r6, #0x0 + bl FUN_0200A8B8 +_0206B1F8: + ldr r0, [sp, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r3-r7, pc} + .balign 4 +_0206B200: .word 0x000121B4 +_0206B204: .word 0x000121C6 +_0206B208: .word 0x00011EE4 + + thumb_func_start FUN_0206B20C +FUN_0206B20C: ; 0x0206B20C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r4, [r5, #0x0] + add r6, r1, #0x0 + mov r7, #0x0 +_0206B216: + add r0, r6, #0x0 + bl FUN_0206AAB4 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0206B244 + cmp r0, #0x0 + beq _0206B232 + bl FUN_02022830 + mov r0, #0x1 + pop {r3-r7, pc} +_0206B232: + add r4, r4, #0x1 + cmp r4, #0x12 + blo _0206B23A + add r4, r7, #0x0 +_0206B23A: + ldr r0, [r5, #0x0] + cmp r4, r0 + bne _0206B216 + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206B244 +FUN_0206B244: ; 0x0206B244 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r0, #0x0 + add r0, r2, #0x0 + add r5, r1, #0x0 + str r2, [sp, #0x0] + bl FUN_0206AAB4 + mov r0, #0x0 + mvn r0, r0 + cmp r5, r0 + bne _0206B25E + ldr r5, [r6, #0x0] +_0206B25E: + mov r0, #0xff + lsl r0, r0, #0x4 + add r1, r6, #0x4 + mul r0, r5 + mov r4, #0x0 + add r5, r1, r0 + str r5, [sp, #0x4] + mov r6, #0x5 + add r7, r4, #0x0 +_0206B270: + add r0, r5, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _0206B2A0 + mov r0, #0x88 + add r1, r4, #0x0 + mul r1, r0 + ldr r0, [sp, #0x4] + mov r3, #0x11 + add r4, r0, r1 +_0206B28A: + ldr r2, [sp, #0x0] + sub r3, r3, #0x1 + ldmia r2!, {r0-r1} + str r2, [sp, #0x0] + stmia r4!, {r0-r1} + bne _0206B28A + bl FUN_02022830 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_0206B2A0: + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x1e + blo _0206B270 + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B2B0 +FUN_0206B2B0: ; 0x0206B2B0 + push {r3-r7, lr} + add r7, r3, #0x0 + add r5, r0, #0x0 + add r0, r7, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0206AAB4 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _0206B2CA + ldr r4, [r5, #0x0] +_0206B2CA: + cmp r4, #0x12 + bhs _0206B2F4 + cmp r6, #0x1e + bhs _0206B2F4 + mov r0, #0xff + lsl r0, r0, #0x4 + mul r0, r4 + add r1, r5, r0 + mov r0, #0x88 + mul r0, r6 + add r0, r1, r0 + add r3, r0, #0x4 + mov r2, #0x11 +_0206B2E4: + ldmia r7!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206B2E4 + bl FUN_02022830 + mov r0, #0x1 + pop {r3-r7, pc} +_0206B2F4: + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206B2FC +FUN_0206B2FC: ; 0x0206B2FC + push {r3, lr} + mov r3, #0x0 + mvn r3, r3 + cmp r1, r3 + bne _0206B308 + ldr r1, [r0, #0x0] +_0206B308: + cmp r2, #0x1e + bhs _0206B32A + cmp r1, #0x12 + bhs _0206B32A + add r3, r0, #0x4 + mov r0, #0xff + lsl r0, r0, #0x4 + mul r0, r1 + add r1, r3, r0 + mov r0, #0x88 + mul r0, r2 + add r0, r1, r0 + bl FUN_020669A0 + bl FUN_02022830 + pop {r3, pc} +_0206B32A: + bl ErrorHandling + pop {r3, pc} + + thumb_func_start FUN_0206B330 +FUN_0206B330: ; 0x0206B330 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0206B334 +FUN_0206B334: ; 0x0206B334 + push {r3-r7, lr} + sub sp, #0x8 + str r0, [sp, #0x0] + ldr r6, [r0, #0x0] + add r0, r0, #0x4 + mov r7, #0xab + str r0, [sp, #0x4] +_0206B342: + mov r0, #0xff + lsl r0, r0, #0x4 + add r1, r6, #0x0 + mul r1, r0 + ldr r0, [sp, #0x4] + mov r4, #0x0 + add r5, r0, r1 +_0206B350: + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _0206B364 + add sp, #0x8 + add r0, r6, #0x0 + pop {r3-r7, pc} +_0206B364: + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x1e + blt _0206B350 + add r6, r6, #0x1 + cmp r6, #0x12 + blt _0206B374 + mov r6, #0x0 +_0206B374: + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + cmp r6, r0 + bne _0206B342 + mov r0, #0x12 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B384 +FUN_0206B384: ; 0x0206B384 + push {r3-r7, lr} + add r6, r1, #0x0 + str r2, [sp, #0x0] + mov r1, #0x0 + ldr r2, [r6, #0x0] + mvn r1, r1 + cmp r2, r1 + bne _0206B398 + ldr r1, [r0, #0x0] + str r1, [r6, #0x0] +_0206B398: + ldr r1, [sp, #0x0] + ldr r4, [r6, #0x0] + ldr r5, [r1, #0x0] + add r7, r0, #0x4 + b _0206B3C8 +_0206B3A2: + mov r0, #0xff + lsl r0, r0, #0x4 + mul r0, r4 + add r1, r7, r0 + mov r0, #0x88 + mul r0, r5 + add r0, r1, r0 + mov r1, #0xab + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _0206B3C6 + ldr r0, [sp, #0x0] + str r4, [r6, #0x0] + str r5, [r0, #0x0] + mov r0, #0x1 + pop {r3-r7, pc} +_0206B3C6: + add r5, r5, #0x1 +_0206B3C8: + cmp r5, #0x1e + blt _0206B3A2 + add r4, r4, #0x1 + cmp r4, #0x12 + blt _0206B3D4 + mov r4, #0x0 +_0206B3D4: + ldr r0, [r6, #0x0] + cmp r4, r0 + beq _0206B3DE + mov r5, #0x0 + b _0206B3C8 +_0206B3DE: + mov r0, #0x12 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B3E4 +FUN_0206B3E4: ; 0x0206B3E4 + push {r3-r7, lr} + sub sp, #0x8 + mov r6, #0x0 + add r0, r0, #0x4 + str r6, [sp, #0x4] + str r0, [sp, #0x0] + mov r7, #0xab +_0206B3F2: + ldr r5, [sp, #0x0] + mov r4, #0x0 +_0206B3F6: + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _0206B406 + add r6, r6, #0x1 +_0206B406: + add r4, r4, #0x1 + add r5, #0x88 + cmp r4, #0x1e + blt _0206B3F6 + mov r0, #0xff + ldr r1, [sp, #0x0] + lsl r0, r0, #0x4 + add r0, r1, r0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, #0x12 + blt _0206B3F2 + add r0, r6, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0206B428 +FUN_0206B428: ; 0x0206B428 + push {r3, lr} + cmp r1, #0x12 + bhs _0206B436 + str r1, [r0, #0x0] + bl FUN_02022830 + pop {r3, pc} +_0206B436: + bl ErrorHandling + pop {r3, pc} + + thumb_func_start FUN_0206B43C +FUN_0206B43C: ; 0x0206B43C + push {r3, lr} + cmp r1, #0x12 + bhs _0206B44A + add r1, r0, r1 + ldr r0, _0206B454 ; =0x000121B4 + ldrb r0, [r1, r0] + pop {r3, pc} +_0206B44A: + bl ErrorHandling + mov r0, #0x0 + pop {r3, pc} + nop +_0206B454: .word 0x000121B4 + + thumb_func_start FUN_0206B458 +FUN_0206B458: ; 0x0206B458 + push {r3, lr} + mov r3, #0x0 + mvn r3, r3 + cmp r1, r3 + bne _0206B464 + ldr r1, [r0, #0x0] +_0206B464: + cmp r1, #0x12 + bhs _0206B478 + cmp r2, #0x18 + bhs _0206B478 + add r1, r0, r1 + ldr r0, _0206B480 ; =0x000121B4 + strb r2, [r1, r0] + bl FUN_02022830 + pop {r3, pc} +_0206B478: + bl ErrorHandling + pop {r3, pc} + nop +_0206B480: .word 0x000121B4 + + thumb_func_start FUN_0206B484 +FUN_0206B484: ; 0x0206B484 + push {r3, lr} + add r3, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0206B492 + ldr r1, [r3, #0x0] +_0206B492: + cmp r1, #0x12 + bhs _0206B4A8 + add r0, r2, #0x0 + ldr r2, _0206B4B0 ; =0x00011EE4 + add r3, r3, r2 + mov r2, #0x28 + mul r2, r1 + add r1, r3, r2 + bl FUN_02021E28 + pop {r3, pc} +_0206B4A8: + bl ErrorHandling + pop {r3, pc} + nop +_0206B4B0: .word 0x00011EE4 + + thumb_func_start FUN_0206B4B4 +FUN_0206B4B4: ; 0x0206B4B4 + push {r3, lr} + add r3, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0206B4C2 + ldr r1, [r3, #0x0] +_0206B4C2: + cmp r1, #0x12 + bhs _0206B4DC + add r0, r2, #0x0 + ldr r2, _0206B4E0 ; =0x00011EE4 + add r3, r3, r2 + mov r2, #0x28 + mul r2, r1 + add r1, r3, r2 + mov r2, #0x14 + bl FUN_02021EF0 + bl FUN_02022830 +_0206B4DC: + pop {r3, pc} + nop +_0206B4E0: .word 0x00011EE4 + + thumb_func_start FUN_0206B4E4 +FUN_0206B4E4: ; 0x0206B4E4 + push {r3-r7, lr} + mov r2, #0x0 + mvn r2, r2 + cmp r1, r2 + bne _0206B4F0 + ldr r1, [r0, #0x0] +_0206B4F0: + cmp r1, #0x12 + bhs _0206B520 + add r2, r0, #0x4 + mov r0, #0xff + lsl r0, r0, #0x4 + mov r4, #0x0 + mul r0, r1 + add r6, r4, #0x0 + add r5, r2, r0 + mov r7, #0xab +_0206B504: + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _0206B514 + add r4, r4, #0x1 +_0206B514: + add r6, r6, #0x1 + add r5, #0x88 + cmp r6, #0x1e + blt _0206B504 + add r0, r4, #0x0 + pop {r3-r7, pc} +_0206B520: + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206B528 +FUN_0206B528: ; 0x0206B528 + push {r3-r7, lr} + mov r2, #0x0 + mvn r2, r2 + cmp r1, r2 + bne _0206B534 + ldr r1, [r0, #0x0] +_0206B534: + cmp r1, #0x12 + bhs _0206B572 + add r2, r0, #0x4 + mov r0, #0xff + lsl r0, r0, #0x4 + mov r4, #0x0 + mul r0, r1 + add r6, r4, #0x0 + add r5, r2, r0 + mov r7, #0xab +_0206B548: + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _0206B566 + add r0, r5, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _0206B566 + add r4, r4, #0x1 +_0206B566: + add r6, r6, #0x1 + add r5, #0x88 + cmp r6, #0x1e + blt _0206B548 + add r0, r4, #0x0 + pop {r3-r7, pc} +_0206B572: + bl ErrorHandling + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B57C +FUN_0206B57C: ; 0x0206B57C + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_0206B584: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_0206B528 + add r5, r5, #0x1 + add r4, r4, r0 + cmp r5, #0x12 + blo _0206B584 + add r0, r4, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0206B598 +FUN_0206B598: ; 0x0206B598 + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r4, #0x12 + blo _0206B5B2 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _0206B5B2 + bl ErrorHandling +_0206B5B2: + cmp r6, #0x1e + blo _0206B5BA + bl ErrorHandling +_0206B5BA: + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _0206B5C4 + ldr r4, [r5, #0x0] +_0206B5C4: + mov r0, #0xff + lsl r0, r0, #0x4 + add r1, r5, #0x4 + mul r0, r4 + add r1, r1, r0 + mov r0, #0x88 + mul r0, r6 + add r0, r1, r0 + ldr r2, [sp, #0x18] + add r1, r7, #0x0 + bl FUN_02067960 + bl FUN_02022830 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B5E4 +FUN_0206B5E4: ; 0x0206B5E4 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x12 + blo _0206B5FC + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _0206B5FC + bl ErrorHandling +_0206B5FC: + cmp r6, #0x1e + blo _0206B604 + bl ErrorHandling +_0206B604: + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _0206B60E + ldr r4, [r5, #0x0] +_0206B60E: + mov r0, #0xff + lsl r0, r0, #0x4 + add r1, r5, #0x4 + mul r0, r4 + add r1, r1, r0 + mov r0, #0x88 + mul r0, r6 + add r0, r1, r0 + pop {r4-r6, pc} + + thumb_func_start FUN_0206B620 +FUN_0206B620: ; 0x0206B620 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x8 + blo _0206B62E + bl ErrorHandling +_0206B62E: + ldr r0, _0206B640 ; =0x000121C6 + mov r1, #0x1 + ldrb r2, [r5, r0] + lsl r1, r4 + orr r1, r2 + strb r1, [r5, r0] + bl FUN_02022830 + pop {r3-r5, pc} + .balign 4 +_0206B640: .word 0x000121C6 + + thumb_func_start FUN_0206B644 +FUN_0206B644: ; 0x0206B644 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + cmp r4, #0x8 + blo _0206B652 + bl ErrorHandling +_0206B652: + ldr r0, _0206B664 ; =0x000121C6 + ldrb r2, [r5, r0] + mov r0, #0x1 + add r1, r0, #0x0 + lsl r1, r4 + tst r1, r2 + bne _0206B662 + mov r0, #0x0 +_0206B662: + pop {r3-r5, pc} + .balign 4 +_0206B664: .word 0x000121C6 + + thumb_func_start FUN_0206B668 +FUN_0206B668: ; 0x0206B668 + push {r4-r6, lr} + mov r4, #0x0 + add r6, r0, #0x0 + add r5, r4, #0x0 +_0206B670: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0206B644 + cmp r0, #0x0 + beq _0206B67E + add r5, r5, #0x1 +_0206B67E: + add r4, r4, #0x1 + cmp r4, #0x8 + blo _0206B670 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0206B688 +FUN_0206B688: ; 0x0206B688 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02066A6C + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0206B754 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0206B6D4 + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02066A94 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206B6C8 +FUN_0206B6C8: ; 0x0206B6C8 + push {r3, lr} + bl FUN_020690E4 + bl FUN_0206B688 + pop {r3, pc} + + thumb_func_start FUN_0206B6D4 +FUN_0206B6D4: ; 0x0206B6D4 + cmp r1, #0x1 + bne _0206B6E8 + ldr r1, _0206B748 ; =0x000001EA + cmp r0, r1 + bne _0206B6E2 + add r1, #0xc + b _0206B6E4 +_0206B6E2: + add r1, #0xb +_0206B6E4: + add r0, r1, #0x0 + bx lr +_0206B6E8: + cmp r2, #0x0 + beq _0206B73A + ldr r3, _0206B74C ; =0x00000182 + cmp r0, r3 + bne _0206B6F8 + add r3, #0x74 + add r0, r2, r3 + bx lr +_0206B6F8: + cmp r0, #0xc9 + bne _0206B702 + add r3, #0x78 + add r0, r2, r3 + bx lr +_0206B702: + add r1, r3, #0x0 + add r1, #0x1a + cmp r0, r1 + bne _0206B710 + add r3, #0x93 + add r0, r2, r3 + bx lr +_0206B710: + add r1, r3, #0x0 + add r1, #0x1b + cmp r0, r1 + bne _0206B71E + add r3, #0x95 + add r0, r2, r3 + bx lr +_0206B71E: + add r1, r3, #0x0 + add r1, #0x24 + cmp r0, r1 + bne _0206B72C + add r3, #0x97 + add r0, r2, r3 + bx lr +_0206B72C: + add r1, r3, #0x0 + add r1, #0x25 + cmp r0, r1 + bne _0206B73A + add r3, #0x98 + add r0, r2, r3 + bx lr +_0206B73A: + ldr r1, _0206B750 ; =0x000001ED + cmp r0, r1 + bls _0206B742 + mov r0, #0x0 +_0206B742: + add r0, r0, #0x7 + bx lr + nop +_0206B748: .word 0x000001EA +_0206B74C: .word 0x00000182 +_0206B750: .word 0x000001ED + + thumb_func_start FUN_0206B754 +FUN_0206B754: ; 0x0206B754 + push {r4, lr} + mov r1, #0xad + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020672BC + ldr r2, _0206B7B8 ; =0x0000019D + cmp r0, r2 + bhi _0206B784 + sub r1, r2, #0x1 + cmp r0, r1 + blo _0206B774 + beq _0206B7A4 + cmp r0, r2 + beq _0206B7A4 + b _0206B7B4 +_0206B774: + cmp r0, #0xc9 + bhi _0206B77C + beq _0206B79C + b _0206B7B4 +_0206B77C: + sub r2, #0x1b + cmp r0, r2 + beq _0206B7A4 + b _0206B7B4 +_0206B784: + add r1, r2, #0x0 + add r1, #0x9 + cmp r0, r1 + bhi _0206B794 + add r2, #0x9 + cmp r0, r2 + beq _0206B7A4 + b _0206B7B4 +_0206B794: + add r2, #0xa + cmp r0, r2 + beq _0206B7A4 + b _0206B7B4 +_0206B79C: + add r0, r4, #0x0 + bl FUN_020690D4 + pop {r4, pc} +_0206B7A4: + add r0, r4, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020672BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} +_0206B7B4: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0206B7B8: .word 0x0000019D + + thumb_func_start FUN_0206B7BC +FUN_0206B7BC: ; 0x0206B7BC + cmp r2, #0x1 + bne _0206B7CE + ldr r1, _0206B830 ; =0x000001EA + cmp r0, r1 + bne _0206B7CA + add r0, r1, #0x5 + b _0206B82A +_0206B7CA: + add r0, r1, #0x4 + b _0206B82A +_0206B7CE: + ldr r3, _0206B834 ; =0x000001ED + cmp r0, r3 + bls _0206B7D8 + mov r0, #0x0 + b _0206B82A +_0206B7D8: + cmp r1, #0x0 + beq _0206B82A + add r2, r3, #0x0 + sub r2, #0x6b + cmp r0, r2 + bne _0206B7EA + add r0, r3, #0x2 + add r0, r1, r0 + b _0206B82A +_0206B7EA: + cmp r0, #0xc9 + bne _0206B7F4 + add r0, r3, #0x5 + add r0, r1, r0 + b _0206B82A +_0206B7F4: + add r2, r3, #0x0 + sub r2, #0x51 + cmp r0, r2 + bne _0206B802 + add r3, #0x21 + add r0, r1, r3 + b _0206B82A +_0206B802: + add r2, r3, #0x0 + sub r2, #0x50 + cmp r0, r2 + bne _0206B810 + add r3, #0x23 + add r0, r1, r3 + b _0206B82A +_0206B810: + add r2, r3, #0x0 + sub r2, #0x47 + cmp r0, r2 + bne _0206B81E + add r3, #0x25 + add r0, r1, r3 + b _0206B82A +_0206B81E: + add r2, r3, #0x0 + sub r2, #0x46 + cmp r0, r2 + bne _0206B82A + add r3, #0x26 + add r0, r1, r3 +_0206B82A: + ldr r1, _0206B838 ; =0x020F8074 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_0206B830: .word 0x000001EA +_0206B834: .word 0x000001ED +_0206B838: .word 0x020F8074 + + thumb_func_start FUN_0206B83C +FUN_0206B83C: ; 0x0206B83C + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02066A6C + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0206B754 + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + add r7, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02066A94 + ldr r2, [sp, #0x0] + add r0, r7, #0x0 + add r1, r6, #0x0 + bl FUN_0206B7BC + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B87C +FUN_0206B87C: ; 0x0206B87C + push {r3, lr} + bl FUN_020690E4 + bl FUN_0206B83C + pop {r3, pc} + + thumb_func_start FUN_0206B888 +FUN_0206B888: ; 0x0206B888 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0206B88C +FUN_0206B88C: ; 0x0206B88C + mov r0, #0x2 + bx lr + + thumb_func_start FUN_0206B890 +FUN_0206B890: ; 0x0206B890 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_0206B894 +FUN_0206B894: ; 0x0206B894 + mov r0, #0x6 + bx lr + + thumb_func_start FUN_0206B898 +FUN_0206B898: ; 0x0206B898 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0206B89C +FUN_0206B89C: ; 0x0206B89C + mov r0, #0x3 + bx lr + + thumb_func_start FUN_0206B8A0 +FUN_0206B8A0: ; 0x0206B8A0 + mov r0, #0x5 + bx lr + + thumb_func_start FUN_0206B8A4 +FUN_0206B8A4: ; 0x0206B8A4 + mov r0, #0x59 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_0206B8AC +FUN_0206B8AC: ; 0x0206B8AC + push {r4, lr} + mov r1, #0x59 + lsl r1, r1, #0x4 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_0206B8C0 + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0206B8C0 +FUN_0206B8C0: ; 0x0206B8C0 + ldr r3, _0206B8C8 ; =FUN_0206B8CC + mov r1, #0x6 + bx r3 + nop +_0206B8C8: .word FUN_0206B8CC + + thumb_func_start FUN_0206B8CC +FUN_0206B8CC: ; 0x0206B8CC + push {r4-r6, lr} + add r6, r1, #0x0 + add r5, r0, #0x0 + cmp r6, #0x6 + ble _0206B8DA + bl ErrorHandling +_0206B8DA: + mov r2, #0x59 + add r0, r5, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x4 + blx Call_FillMemWithValue + mov r4, #0x0 + str r4, [r5, #0x4] + str r6, [r5, #0x0] + add r5, #0x8 +_0206B8EE: + add r0, r5, #0x0 + bl FUN_02066978 + add r4, r4, #0x1 + add r5, #0xec + cmp r4, #0x6 + blt _0206B8EE + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206B900 +FUN_0206B900: ; 0x0206B900 + push {r4-r5} + add r3, r0, #0x0 + add r2, r1, #0x0 + ldr r1, [r3, #0x4] + ldr r0, [r3, #0x0] + cmp r1, r0 + blt _0206B914 + mov r0, #0x0 + pop {r4-r5} + bx lr +_0206B914: + mov r0, #0xec + mul r0, r1 + add r5, r3, r0 + add r5, #0x8 + mov r4, #0x1d +_0206B91E: + ldmia r2!, {r0-r1} + stmia r5!, {r0-r1} + sub r4, r4, #0x1 + bne _0206B91E + ldr r0, [r2, #0x0] + str r0, [r5, #0x0] + ldr r0, [r3, #0x4] + add r0, r0, #0x1 + str r0, [r3, #0x4] + mov r0, #0x1 + pop {r4-r5} + bx lr + .balign 4 + + thumb_func_start FUN_0206B938 +FUN_0206B938: ; 0x0206B938 + push {r3-r7, lr} + add r7, r0, #0x0 + add r4, r1, #0x0 + bpl _0206B944 + bl ErrorHandling +_0206B944: + ldr r0, [r7, #0x4] + cmp r4, r0 + blt _0206B94E + bl ErrorHandling +_0206B94E: + ldr r0, [r7, #0x0] + cmp r4, r0 + blt _0206B958 + bl ErrorHandling +_0206B958: + ldr r0, [r7, #0x4] + cmp r0, #0x0 + bgt _0206B962 + bl ErrorHandling +_0206B962: + ldr r0, [r7, #0x4] + sub r0, r0, #0x1 + cmp r4, r0 + bge _0206B992 + mov r0, #0xec + mul r0, r4 + add r6, r7, r0 +_0206B970: + add r5, r6, #0x0 + add r3, r6, #0x0 + add r5, #0xf4 + add r3, #0x8 + mov r2, #0x1d +_0206B97A: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206B97A + ldr r0, [r5, #0x0] + add r4, r4, #0x1 + str r0, [r3, #0x0] + ldr r0, [r7, #0x4] + add r6, #0xec + sub r0, r0, #0x1 + cmp r4, r0 + blt _0206B970 +_0206B992: + add r1, r7, #0x0 + mov r0, #0xec + add r1, #0x8 + mul r0, r4 + add r0, r1, r0 + bl FUN_02066978 + ldr r0, [r7, #0x4] + sub r0, r0, #0x1 + str r0, [r7, #0x4] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206B9AC +FUN_0206B9AC: ; 0x0206B9AC + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0206B9B0 +FUN_0206B9B0: ; 0x0206B9B0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bpl _0206B9BC + bl ErrorHandling +_0206B9BC: + ldr r0, [r5, #0x4] + cmp r4, r0 + blt _0206B9C6 + bl ErrorHandling +_0206B9C6: + ldr r0, [r5, #0x0] + cmp r4, r0 + blt _0206B9D0 + bl ErrorHandling +_0206B9D0: + mov r0, #0xec + add r5, #0x8 + mul r0, r4 + add r0, r5, r0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0206B9DC +FUN_0206B9DC: ; 0x0206B9DC + push {r3-r7, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x0 + bge _0206B9EC + bl ErrorHandling +_0206B9EC: + ldr r0, [r5, #0x4] + cmp r4, r0 + blt _0206B9F6 + bl ErrorHandling +_0206B9F6: + ldr r0, [r5, #0x0] + cmp r4, r0 + blt _0206BA00 + bl ErrorHandling +_0206BA00: + add r1, r5, #0x0 + mov r0, #0xec + add r1, #0x8 + mul r0, r4 + add r4, r1, r0 + add r0, r4, #0x0 + mov r1, #0xab + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0xab + mov r2, #0x0 + bl FUN_020671BC + sub r2, r7, r0 + mov r3, #0x1d +_0206BA24: + ldmia r6!, {r0-r1} + stmia r4!, {r0-r1} + sub r3, r3, #0x1 + bne _0206BA24 + ldr r0, [r6, #0x0] + str r0, [r4, #0x0] + ldr r0, [r5, #0x4] + add r0, r0, r2 + str r0, [r5, #0x4] + pop {r3-r7, pc} + + thumb_func_start FUN_0206BA38 +FUN_0206BA38: ; 0x0206BA38 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + add r6, r2, #0x0 + cmp r5, #0x0 + bge _0206BA48 + bl ErrorHandling +_0206BA48: + ldr r0, [r4, #0x4] + cmp r5, r0 + blt _0206BA52 + bl ErrorHandling +_0206BA52: + ldr r0, [r4, #0x0] + cmp r5, r0 + blt _0206BA5C + bl ErrorHandling +_0206BA5C: + cmp r6, #0x0 + bge _0206BA64 + bl ErrorHandling +_0206BA64: + ldr r0, [r4, #0x4] + cmp r6, r0 + blt _0206BA6E + bl ErrorHandling +_0206BA6E: + ldr r0, [r4, #0x0] + cmp r6, r0 + blt _0206BA78 + bl ErrorHandling +_0206BA78: + mov r0, #0x0 + mov r1, #0xec + bl FUN_02016998 + mov r12, r0 + add r1, r4, #0x0 + mov r0, #0xec + add r1, #0x8 + mul r0, r5 + add r3, r1, r0 + add r5, r3, #0x0 + mov r2, r12 + mov r7, #0x1d +_0206BA92: + ldmia r5!, {r0-r1} + stmia r2!, {r0-r1} + sub r7, r7, #0x1 + bne _0206BA92 + ldr r0, [r5, #0x0] + add r4, #0x8 + str r0, [r2, #0x0] + mov r0, #0xec + mul r0, r6 + add r2, r4, r0 + add r5, r2, #0x0 + mov r4, #0x1d +_0206BAAA: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r4, r4, #0x1 + bne _0206BAAA + ldr r0, [r5, #0x0] + mov r4, r12 + str r0, [r3, #0x0] + mov r3, #0x1d +_0206BABA: + ldmia r4!, {r0-r1} + stmia r2!, {r0-r1} + sub r3, r3, #0x1 + bne _0206BABA + ldr r0, [r4, #0x0] + str r0, [r2, #0x0] + mov r0, r12 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206BAD0 +FUN_0206BAD0: ; 0x0206BAD0 + push {r3-r4} + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r2, #0xb2 +_0206BAD8: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206BAD8 + pop {r3-r4} + bx lr + + thumb_func_start FUN_0206BAE4 +FUN_0206BAE4: ; 0x0206BAE4 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, [r6, #0x4] + add r7, r1, #0x0 + mov r4, #0x0 + cmp r0, #0x0 + ble _0206BB0E + add r5, r6, #0x0 + add r5, #0x8 +_0206BAF6: + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + cmp r7, r0 + beq _0206BB0E + ldr r0, [r6, #0x4] + add r4, r4, #0x1 + add r5, #0xec + cmp r4, r0 + blt _0206BAF6 +_0206BB0E: + ldr r0, [r6, #0x4] + cmp r4, r0 + beq _0206BB18 + mov r0, #0x1 + pop {r3-r7, pc} +_0206BB18: + mov r0, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206BB1C +FUN_0206BB1C: ; 0x0206BB1C + ldr r3, _0206BB24 ; =FUN_02022610 + mov r1, #0x2 + bx r3 + nop +_0206BB24: .word FUN_02022610 + + thumb_func_start FUN_0206BB28 +FUN_0206BB28: ; 0x0206BB28 + push {r3, lr} + bl FUN_02024DA0 + bl FUN_0206BB34 + pop {r3, pc} + + thumb_func_start FUN_0206BB34 +FUN_0206BB34: ; 0x0206BB34 + push {r3, lr} + bl FUN_02024CA4 + cmp r0, #0x1 + bne _0206BB42 + mov r0, #0x1 + pop {r3, pc} +_0206BB42: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0206BB48 +FUN_0206BB48: ; 0x0206BB48 + push {r3, lr} + cmp r0, #0x0 + bne _0206BB58 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + bl FUN_02069B40 + add r1, r0, #0x0 +_0206BB58: + add r0, r1, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0206BB5C +FUN_0206BB5C: ; 0x0206BB5C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02087A6C + mov r1, #0x0 + add r2, r5, #0x0 + add r4, r0, #0x0 + bl FUN_02087A98 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0206BB74 +FUN_0206BB74: ; 0x0206BB74 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02087B0C + add r0, r4, #0x0 + bl FUN_02087A84 + pop {r4, pc} + + thumb_func_start FUN_0206BB84 +FUN_0206BB84: ; 0x0206BB84 + push {r3-r7, lr} + add r7, r1, #0x0 + add r4, r0, #0x0 + str r2, [sp, #0x0] + add r0, r7, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r4, #0x0 + bne _0206BBA2 + mov r0, #0x1 + pop {r3-r7, pc} +_0206BBA2: + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02023B0C + add r5, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, r5 + bls _0206BBBE + mov r0, #0x0 + pop {r3-r7, pc} +_0206BBBE: + add r0, r7, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0206BBD0 + mov r0, #0x0 + pop {r3-r7, pc} +_0206BBD0: + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02023B0C + cmp r0, #0x0 + bne _0206BBEA + add r0, r6, #0x0 + bl FUN_020695A8 + cmp r6, r0 + beq _0206BBEA + mov r0, #0x0 + pop {r3-r7, pc} +_0206BBEA: + add r0, r4, #0x0 + mov r1, #0x5 + bl FUN_02023B0C + add r5, r0, #0x0 + beq _0206BC14 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_02087B58 + cmp r5, #0x0 + ble _0206BC0A + cmp r0, r5 + bge _0206BC14 + mov r0, #0x0 + pop {r3-r7, pc} +_0206BC0A: + neg r1, r5 + cmp r0, r1 + ble _0206BC14 + mov r0, #0x0 + pop {r3-r7, pc} +_0206BC14: + add r0, r4, #0x0 + mov r1, #0x7 + bl FUN_02023B0C + mov r1, #0xa + add r5, r0, #0x0 + mul r5, r1 + beq _0206BC42 + ldr r0, [sp, #0x0] + add r1, r6, #0x0 + bl FUN_02087B78 + cmp r5, #0x0 + ble _0206BC38 + cmp r0, r5 + bge _0206BC42 + mov r0, #0x0 + pop {r3-r7, pc} +_0206BC38: + neg r1, r5 + cmp r0, r1 + ble _0206BC42 + mov r0, #0x0 + pop {r3-r7, pc} +_0206BC42: + add r0, r4, #0x0 + mov r1, #0xb + bl FUN_02023B0C + cmp r0, #0x0 + bne _0206BC5C + add r0, r7, #0x0 + bl FUN_0206A998 + cmp r0, #0x0 + beq _0206BC5C + mov r0, #0x0 + pop {r3-r7, pc} +_0206BC5C: + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_0206BC60 +FUN_0206BC60: ; 0x0206BC60 + push {r3-r7, lr} + sub sp, #0x30 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x14] + str r0, [sp, #0x10] + ldr r0, [sp, #0x0] + str r1, [sp, #0x4] + str r2, [sp, #0x8] + str r3, [sp, #0xc] + cmp r0, #0x0 + bne _0206BC7E + ldr r0, [sp, #0x14] + add sp, #0x30 + pop {r3-r7, pc} +_0206BC7E: + ldr r1, [sp, #0x14] + add r2, sp, #0x24 + add r3, sp, #0x18 + mov r0, #0x0 +_0206BC86: + ldr r4, [sp, #0xc] + strh r0, [r2, #0x0] + strh r0, [r3, #0x0] + ldrb r4, [r4, r1] + cmp r4, #0x0 + beq _0206BC98 + ldr r4, [sp, #0x14] + add r4, r4, #0x1 + str r4, [sp, #0x14] +_0206BC98: + add r1, r1, #0x1 + add r2, r2, #0x2 + add r3, r3, #0x2 + cmp r1, #0x6 + blt _0206BC86 + ldr r0, [sp, #0x0] + mov r1, #0x1 + bl FUN_02023B0C + ldr r1, [sp, #0x14] + cmp r1, r0 + beq _0206BCB6 + add sp, #0x30 + mov r0, #0x4 + pop {r3-r7, pc} +_0206BCB6: + mov r5, #0x0 + add r7, sp, #0x24 + add r6, sp, #0x18 +_0206BCBC: + ldr r0, [sp, #0xc] + ldrb r1, [r0, r5] + cmp r1, #0x0 + beq _0206BD0A + ldr r0, [sp, #0x4] + sub r1, r1, #0x1 + bl FUN_0206B9B0 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + ldr r2, [sp, #0x8] + add r1, r4, #0x0 + bl FUN_0206BB84 + cmp r0, #0x0 + bne _0206BCE2 + add sp, #0x30 + mov r0, #0x5 + pop {r3-r7, pc} +_0206BCE2: + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r7, #0x0] + add r0, r4, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r6, #0x0] + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x10] +_0206BD0A: + add r5, r5, #0x1 + add r7, r7, #0x2 + add r6, r6, #0x2 + cmp r5, #0x6 + blt _0206BCBC + ldr r0, [sp, #0x0] + mov r1, #0x3 + bl FUN_02023B0C + ldr r1, [sp, #0x10] + cmp r1, r0 + ble _0206BD2C + cmp r0, #0x0 + beq _0206BD2C + add sp, #0x30 + mov r0, #0x1 + pop {r3-r7, pc} +_0206BD2C: + ldr r0, [sp, #0x0] + mov r1, #0xa + bl FUN_02023B0C + cmp r0, #0x0 + bne _0206BD70 + ldr r0, [sp, #0x14] + cmp r0, #0x1 + ble _0206BD70 + add r4, sp, #0x24 + mov r0, #0x0 + add r2, r4, #0x0 +_0206BD44: + add r3, r0, #0x1 + cmp r3, #0x6 + bge _0206BD68 + ldrh r6, [r4, #0x0] + lsl r1, r3, #0x1 + add r5, r2, r1 +_0206BD50: + ldrh r1, [r5, #0x0] + cmp r6, r1 + bne _0206BD60 + cmp r6, #0x0 + beq _0206BD60 + add sp, #0x30 + mov r0, #0x2 + pop {r3-r7, pc} +_0206BD60: + add r3, r3, #0x1 + add r5, r5, #0x2 + cmp r3, #0x6 + blt _0206BD50 +_0206BD68: + add r0, r0, #0x1 + add r4, r4, #0x2 + cmp r0, #0x5 + blt _0206BD44 +_0206BD70: + ldr r0, [sp, #0x0] + mov r1, #0x9 + bl FUN_02023B0C + cmp r0, #0x0 + bne _0206BDC0 + ldr r0, [sp, #0x14] + cmp r0, #0x1 + ble _0206BDC0 + add r2, sp, #0x18 + mov r5, #0x0 + add r7, sp, #0x24 + mov r12, r2 +_0206BD8A: + add r6, r5, #0x1 + cmp r6, #0x6 + bge _0206BDB6 + lsl r1, r6, #0x1 + mov r0, r12 + add r3, r0, r1 + ldrh r4, [r2, #0x0] + ldrh r0, [r7, #0x0] +_0206BD9A: + ldrh r1, [r3, #0x0] + cmp r4, r1 + bne _0206BDAE + cmp r0, #0x0 + beq _0206BDAE + cmp r4, #0x0 + beq _0206BDAE + add sp, #0x30 + mov r0, #0x3 + pop {r3-r7, pc} +_0206BDAE: + add r6, r6, #0x1 + add r3, r3, #0x2 + cmp r6, #0x6 + blt _0206BD9A +_0206BDB6: + add r5, r5, #0x1 + add r2, r2, #0x2 + add r7, r7, #0x2 + cmp r5, #0x5 + blt _0206BD8A +_0206BDC0: + mov r0, #0x0 + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206BDC8 +FUN_0206BDC8: ; 0x0206BDC8 + push {r4-r7, lr} + sub sp, #0x1c + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + str r1, [sp, #0x10] + lsl r0, r0, #0x1 + ldr r1, [sp, #0xc] + str r0, [sp, #0x18] + ldrh r0, [r1, r0] + add r6, r2, #0x0 + str r3, [sp, #0x14] + ldr r5, [sp, #0x38] + ldr r7, [sp, #0x34] + cmp r0, #0x0 + beq _0206BE12 + ldr r0, [sp, #0x18] + ldrh r0, [r6, r0] + cmp r0, #0x0 + bne _0206BE12 + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x18] + ldrh r1, [r1, r0] + add r0, r3, #0x0 + sub r0, r0, r1 + str r0, [sp, #0x14] + bpl _0206BE02 + add sp, #0x1c + mov r0, #0x0 + pop {r4-r7, pc} +_0206BE02: + sub r7, r7, #0x1 + bne _0206BE0C + add sp, #0x1c + mov r0, #0x1 + pop {r4-r7, pc} +_0206BE0C: + ldr r0, [sp, #0x18] + mov r1, #0x1 + strh r1, [r6, r0] +_0206BE12: + ldr r0, [sp, #0x30] + add r4, r0, #0x1 + cmp r4, r5 + bge _0206BE3C +_0206BE1A: + str r4, [sp, #0x0] + str r7, [sp, #0x4] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r3, [sp, #0x14] + add r2, r6, #0x0 + str r5, [sp, #0x8] + bl FUN_0206BDC8 + cmp r0, #0x0 + beq _0206BE36 + add sp, #0x1c + mov r0, #0x1 + pop {r4-r7, pc} +_0206BE36: + add r4, r4, #0x1 + cmp r4, r5 + blt _0206BE1A +_0206BE3C: + ldr r1, [sp, #0x18] + mov r0, #0x0 + strh r0, [r6, r1] + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0206BE48 +FUN_0206BE48: ; 0x0206BE48 + push {r4-r7, lr} + sub sp, #0x54 + str r0, [sp, #0xc] + add r0, r1, #0x0 + str r1, [sp, #0x10] + str r2, [sp, #0x14] + bl FUN_0206B9AC + str r0, [sp, #0x20] + add r6, r0, #0x0 + add r0, sp, #0x30 + mov r1, #0x0 + mov r2, #0xc + blx MI_CpuFill8 + ldr r0, [sp, #0x20] + mov r7, #0x0 + cmp r0, #0x0 + ble _0206BEB2 + add r4, sp, #0x48 + add r5, sp, #0x3c +_0206BE72: + ldr r0, [sp, #0x10] + add r1, r7, #0x0 + bl FUN_0206B9B0 + str r0, [sp, #0x24] + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r4, #0x0] + ldr r0, [sp, #0x24] + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x0] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x14] + bl FUN_0206BB84 + cmp r0, #0x0 + bne _0206BEA6 + mov r0, #0x0 + strh r0, [r4, #0x0] + sub r6, r6, #0x1 +_0206BEA6: + ldr r0, [sp, #0x20] + add r7, r7, #0x1 + add r4, r4, #0x2 + add r5, r5, #0x2 + cmp r7, r0 + blt _0206BE72 +_0206BEB2: + ldr r0, [sp, #0xc] + mov r1, #0xa + bl FUN_02023B0C + cmp r0, #0x0 + bne _0206BF32 + ldr r0, [sp, #0x20] + cmp r0, #0x1 + ble _0206BF32 + mov r0, #0x0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #0x1 + str r0, [sp, #0x28] + cmp r0, #0x0 + ble _0206BF32 + add r0, sp, #0x3c + add r3, sp, #0x48 + str r0, [sp, #0x1c] + str r3, [sp, #0x2c] + mov r12, r0 +_0206BEDC: + ldr r0, [sp, #0x18] + add r2, r0, #0x1 + ldr r0, [sp, #0x20] + cmp r2, r0 + bge _0206BF1E + ldr r1, [sp, #0x2c] + lsl r0, r2, #0x1 + add r4, r1, r0 + mov r1, r12 + add r5, r1, r0 + ldr r0, [sp, #0x1c] + ldrh r7, [r0, #0x0] +_0206BEF4: + ldrh r1, [r3, #0x0] + ldrh r0, [r4, #0x0] + cmp r1, r0 + bne _0206BF12 + cmp r1, #0x0 + beq _0206BF12 + ldrh r0, [r5, #0x0] + cmp r7, r0 + bls _0206BF0C + mov r0, #0x0 + strh r0, [r3, #0x0] + b _0206BF10 +_0206BF0C: + mov r0, #0x0 + strh r0, [r4, #0x0] +_0206BF10: + sub r6, r6, #0x1 +_0206BF12: + ldr r0, [sp, #0x20] + add r2, r2, #0x1 + add r4, r4, #0x2 + add r5, r5, #0x2 + cmp r2, r0 + blt _0206BEF4 +_0206BF1E: + ldr r0, [sp, #0x1c] + add r3, r3, #0x2 + add r0, r0, #0x2 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r1, r0, #0x1 + ldr r0, [sp, #0x28] + str r1, [sp, #0x18] + cmp r1, r0 + blt _0206BEDC +_0206BF32: + ldr r0, [sp, #0xc] + mov r1, #0x1 + bl FUN_02023B0C + add r7, r0, #0x0 + cmp r6, r7 + bge _0206BF46 + add sp, #0x54 + mov r0, #0x4 + pop {r4-r7, pc} +_0206BF46: + ldr r0, [sp, #0xc] + mov r1, #0x3 + bl FUN_02023B0C + add r5, r0, #0x0 + bne _0206BF58 + add sp, #0x54 + mov r0, #0x0 + pop {r4-r7, pc} +_0206BF58: + ldr r0, [sp, #0x20] + mov r4, #0x0 + cmp r0, #0x0 + ble _0206BF88 + add r6, sp, #0x48 +_0206BF62: + str r4, [sp, #0x0] + ldr r0, [sp, #0x20] + str r7, [sp, #0x4] + str r0, [sp, #0x8] + add r0, r6, #0x0 + add r1, sp, #0x3c + add r2, sp, #0x30 + add r3, r5, #0x0 + bl FUN_0206BDC8 + cmp r0, #0x0 + beq _0206BF80 + add sp, #0x54 + mov r0, #0x0 + pop {r4-r7, pc} +_0206BF80: + ldr r0, [sp, #0x20] + add r4, r4, #0x1 + cmp r4, r0 + blt _0206BF62 +_0206BF88: + mov r0, #0x1 + add sp, #0x54 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0206BF90 +FUN_0206BF90: ; 0x0206BF90 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r0, #0x5 + mov r1, #0x8 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x5 + mov r1, #0x8 + bl FUN_02016998 + add r6, r0, #0x0 + ldr r0, _0206BFE4 ; =0x020F828C + mov r1, #0xc + add r2, r5, #0x0 + bl FUN_0202D8D0 + str r5, [r4, #0x0] + mov r0, #0x0 + strb r0, [r4, #0x4] + str r5, [r6, #0x0] + strb r0, [r6, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x4 + bl FUN_02231344 + add r0, r5, #0x0 + add r1, r6, #0x4 + bl FUN_02231350 + ldr r0, _0206BFE8 ; =FUN_0206C550 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_0200CA44 + ldr r0, _0206BFEC ; =FUN_0206C5DC + add r1, r6, #0x0 + mov r2, #0x0 + bl FUN_0200CA44 + pop {r4-r6, pc} + nop +_0206BFE4: .word 0x020F828C +_0206BFE8: .word FUN_0206C550 +_0206BFEC: .word FUN_0206C5DC + + thumb_func_start FUN_0206BFF0 +FUN_0206BFF0: ; 0x0206BFF0 + ldr r3, _0206BFFC ; =FUN_0202D8D0 + add r2, r0, #0x0 + ldr r0, _0206C000 ; =0x020F828C + mov r1, #0xc + bx r3 + nop +_0206BFFC: .word FUN_0202D8D0 +_0206C000: .word 0x020F828C + + thumb_func_start FUN_0206C004 +FUN_0206C004: ; 0x0206C004 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_0206C008 +FUN_0206C008: ; 0x0206C008 + ldr r3, _0206C00C ; =FUN_02023924 + bx r3 + .balign 4 +_0206C00C: .word FUN_02023924 + + thumb_func_start FUN_0206C010 +FUN_0206C010: ; 0x0206C010 + ldr r3, _0206C014 ; =FUN_0206B8A4 + bx r3 + .balign 4 +_0206C014: .word FUN_0206B8A4 + + thumb_func_start FUN_0206C018 +FUN_0206C018: ; 0x0206C018 + mov r0, #0xfa + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_0206C020 +FUN_0206C020: ; 0x0206C020 + mov r0, #0x34 + bx lr + + thumb_func_start FUN_0206C024 +FUN_0206C024: ; 0x0206C024 + ldr r3, [r1, #0x0] + mov r1, #0x80 + ldr r2, [r3, #0x0] + tst r1, r2 + beq _0206C038 + lsl r0, r0, #0x3 + add r0, r3, r0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bx lr +_0206C038: + lsl r0, r0, #0x2 + add r0, r3, r0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206C044 +FUN_0206C044: ; 0x0206C044 + ldr r1, [r1, #0x0] + mov r2, #0x80 + ldr r3, [r1, #0x0] + tst r2, r3 + beq _0206C05A + lsl r2, r0, #0x1 + mov r0, #0x34 + add r1, #0x28 + mul r0, r2 + add r0, r1, r0 + bx lr +_0206C05A: + mov r2, #0x34 + add r1, #0x28 + mul r2, r0 + add r0, r1, r2 + bx lr + + thumb_func_start FUN_0206C064 +FUN_0206C064: ; 0x0206C064 + ldr r3, [r1, #0x0] + mov r1, #0x80 + ldr r2, [r3, #0x0] + tst r1, r2 + beq _0206C076 + lsl r0, r0, #0x3 + add r0, r3, r0 + ldr r0, [r0, #0x4] + bx lr +_0206C076: + lsl r0, r0, #0x2 + add r0, r3, r0 + ldr r0, [r0, #0x4] + bx lr + .balign 4 + + thumb_func_start FUN_0206C080 +FUN_0206C080: ; 0x0206C080 + ldr r3, [r1, #0x0] + mov r1, #0x80 + ldr r2, [r3, #0x0] + tst r2, r1 + beq _0206C094 + lsl r0, r0, #0x3 + add r0, r3, r0 + add r1, #0x98 + ldr r0, [r0, r1] + bx lr +_0206C094: + lsl r0, r0, #0x2 + add r0, r3, r0 + add r1, #0x98 + ldr r0, [r0, r1] + bx lr + .balign 4 + + thumb_func_start FUN_0206C0A0 +FUN_0206C0A0: ; 0x0206C0A0 + ldr r0, [r1, #0x0] + add r0, #0x5c + bx lr + .balign 4 + + thumb_func_start FUN_0206C0A8 +FUN_0206C0A8: ; 0x0206C0A8 + ldr r0, [r1, #0x0] + add r0, #0xc4 + bx lr + .balign 4 + + thumb_func_start FUN_0206C0B0 +FUN_0206C0B0: ; 0x0206C0B0 + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x8] + bx lr + .balign 4 + + thumb_func_start FUN_0206C0B8 +FUN_0206C0B8: ; 0x0206C0B8 + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x10] + bx lr + .balign 4 + + thumb_func_start FUN_0206C0C0 +FUN_0206C0C0: ; 0x0206C0C0 + lsl r0, r0, #0x2 + add r0, r1, r0 + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_0206C0C8 +FUN_0206C0C8: ; 0x0206C0C8 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x5 + mov r1, #0x4 + str r2, [sp, #0x8] + add r7, r3, #0x0 + bl FUN_02016998 + add r6, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_022300D4 + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_022300F4 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02230100 + mov r12, r0 + add r0, sp, #0x10 + ldrh r3, [r4, #0x0] + ldrb r0, [r0, #0x10] + add r1, r3, #0x5 + add r2, r1, r0 + mov r1, #0x1 + lsl r1, r1, #0xc + cmp r2, r1 + bls _0206C110 + mov r1, r12 + strh r3, [r1, #0x0] + mov r1, #0x0 + strh r1, [r4, #0x0] +_0206C110: + ldr r1, [sp, #0x4] + mov r3, #0x0 + strb r1, [r6, #0x0] + ldr r1, [sp, #0x8] + strb r1, [r6, #0x1] + add r1, sp, #0x10 + ldrb r1, [r1, #0x10] + strh r1, [r6, #0x2] +_0206C120: + ldrb r2, [r6, r3] + ldrh r1, [r4, #0x0] + add r3, r3, #0x1 + strb r2, [r5, r1] + ldrh r1, [r4, #0x0] + add r1, r1, #0x1 + strh r1, [r4, #0x0] + cmp r3, #0x4 + blo _0206C120 + mov r3, #0x0 + cmp r0, #0x0 + ble _0206C14A +_0206C138: + ldrb r2, [r7, r3] + ldrh r1, [r4, #0x0] + add r3, r3, #0x1 + strb r2, [r5, r1] + ldrh r1, [r4, #0x0] + add r1, r1, #0x1 + strh r1, [r4, #0x0] + cmp r3, r0 + blt _0206C138 +_0206C14A: + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0206C154 +FUN_0206C154: ; 0x0206C154 + push {r3-r7, lr} + str r3, [sp, #0x0] + add r0, r3, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + bl FUN_022300DC + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02230118 + add r4, r0, #0x0 + ldr r0, [sp, #0x0] + bl FUN_02230124 + ldrh r1, [r4, #0x0] + add r2, r1, r5 + add r3, r2, #0x1 + mov r2, #0x1 + lsl r2, r2, #0xc + cmp r3, r2 + ble _0206C186 + strh r1, [r0, #0x0] + mov r0, #0x0 + strh r0, [r4, #0x0] +_0206C186: + mov r0, #0x0 + cmp r5, #0x0 + ble _0206C19E +_0206C18C: + ldrb r2, [r6, r0] + ldrh r1, [r4, #0x0] + add r0, r0, #0x1 + strb r2, [r7, r1] + ldrh r1, [r4, #0x0] + add r1, r1, #0x1 + strh r1, [r4, #0x0] + cmp r0, r5 + blt _0206C18C +_0206C19E: + pop {r3-r7, pc} + + thumb_func_start FUN_0206C1A0 +FUN_0206C1A0: ; 0x0206C1A0 + push {r0-r3} + push {r3, lr} + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C1BA + mov r0, #0x0 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 +_0206C1BA: + mov r0, #0x33 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C1CE + mov r0, #0x0 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 +_0206C1CE: + mov r0, #0x18 + add r1, sp, #0xc + mov r2, #0x4 + bl FUN_02030ADC + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_0206C1E0 +FUN_0206C1E0: ; 0x0206C1E0 + ldr r1, [r3, #0x0] + lsl r0, r0, #0x2 + add r1, r1, r0 + mov r0, #0x5f + ldr r2, [r2, #0x0] + lsl r0, r0, #0x2 + str r2, [r1, r0] + ldr r0, _0206C1F8 ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + .balign 4 +_0206C1F8: .word 0x00001020 + + thumb_func_start FUN_0206C1FC +FUN_0206C1FC: ; 0x0206C1FC + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C210 + mov r0, #0x0 + pop {r4, pc} +_0206C210: + ldr r0, [r4, #0x0] + add r4, #0x20 + add r0, #0xf8 + ldr r0, [r0, #0x0] + add r1, r4, #0x0 + bl FUN_0202393C + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206C224 +FUN_0206C224: ; 0x0206C224 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C238 + mov r0, #0x0 + pop {r4, pc} +_0206C238: + mov r0, #0x34 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C246 + mov r0, #0x0 + pop {r4, pc} +_0206C246: + bl FUN_02023924 + add r4, #0x20 + add r2, r0, #0x0 + mov r0, #0x19 + add r1, r4, #0x0 + bl FUN_02030A78 + pop {r4, pc} + + thumb_func_start FUN_0206C258 +FUN_0206C258: ; 0x0206C258 + ldr r0, _0206C264 ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + nop +_0206C264: .word 0x00001020 + + thumb_func_start FUN_0206C268 +FUN_0206C268: ; 0x0206C268 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C27C + mov r0, #0x0 + pop {r4, pc} +_0206C27C: + ldr r3, [r4, #0x0] + add r4, #0x20 + add r3, #0x28 + mov r2, #0x6 +_0206C284: + ldmia r3!, {r0-r1} + stmia r4!, {r0-r1} + sub r2, r2, #0x1 + bne _0206C284 + ldr r0, [r3, #0x0] + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0206C294 +FUN_0206C294: ; 0x0206C294 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C2A8 + mov r0, #0x0 + pop {r4, pc} +_0206C2A8: + mov r0, #0x35 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C2B6 + mov r0, #0x0 + pop {r4, pc} +_0206C2B6: + add r4, #0x20 + mov r0, #0x1a + add r1, r4, #0x0 + mov r2, #0x34 + bl FUN_02030A78 + pop {r4, pc} + + thumb_func_start FUN_0206C2C4 +FUN_0206C2C4: ; 0x0206C2C4 + ldr r0, _0206C2D0 ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + nop +_0206C2D0: .word 0x00001020 + + thumb_func_start FUN_0206C2D4 +FUN_0206C2D4: ; 0x0206C2D4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C2E8 + mov r0, #0x0 + pop {r4, pc} +_0206C2E8: + ldr r0, [r4, #0x0] + add r4, #0x20 + ldr r0, [r0, #0x4] + add r1, r4, #0x0 + bl FUN_0206BAD0 + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0206C2F8 +FUN_0206C2F8: ; 0x0206C2F8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C30C + mov r0, #0x0 + pop {r4, pc} +_0206C30C: + mov r0, #0x36 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C31A + mov r0, #0x0 + pop {r4, pc} +_0206C31A: + bl FUN_0206B8A4 + add r4, #0x20 + add r2, r0, #0x0 + mov r0, #0x1b + add r1, r4, #0x0 + bl FUN_02030A78 + pop {r4, pc} + + thumb_func_start FUN_0206C32C +FUN_0206C32C: ; 0x0206C32C + ldr r0, _0206C338 ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + nop +_0206C338: .word 0x00001020 + + thumb_func_start FUN_0206C33C +FUN_0206C33C: ; 0x0206C33C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C350 + mov r0, #0x0 + pop {r4, pc} +_0206C350: + ldr r2, [r4, #0x0] + add r1, #0x10 + add r0, r4, #0x0 + ldr r1, [r2, r1] + add r0, #0x20 + bl FUN_02029F9C + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206C364 +FUN_0206C364: ; 0x0206C364 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C378 + mov r0, #0x0 + pop {r4, pc} +_0206C378: + mov r0, #0x37 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C386 + mov r0, #0x0 + pop {r4, pc} +_0206C386: + add r4, #0x20 + mov r2, #0xfa + mov r0, #0x1c + add r1, r4, #0x0 + lsl r2, r2, #0x2 + bl FUN_02030A78 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206C398 +FUN_0206C398: ; 0x0206C398 + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C3AC + mov r0, #0x0 + pop {r3-r7, pc} +_0206C3AC: + ldr r4, [r5, #0x0] + mov r0, #0x80 + ldr r1, [r4, #0x0] + tst r0, r1 + beq _0206C3BE + bl FUN_02031190 + lsl r0, r0, #0x3 + b _0206C3C4 +_0206C3BE: + bl FUN_02031190 + lsl r0, r0, #0x2 +_0206C3C4: + add r0, r4, r0 + mov r1, #0x53 + add r0, #0xf8 + lsl r1, r1, #0x2 + add r2, r5, #0x0 + ldr r0, [r0, #0x0] + ldr r1, [r4, r1] + add r2, #0x20 + bl FUN_0206C66C + mov r4, #0x0 + mov r6, #0x5 + mov r7, #0x88 +_0206C3DE: + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02016998 + str r0, [r5, #0x10] + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _0206C3DE + mov r0, #0x1 + pop {r3-r7, pc} + + thumb_func_start FUN_0206C3F4 +FUN_0206C3F4: ; 0x0206C3F4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C408 + mov r0, #0x0 + pop {r4, pc} +_0206C408: + mov r0, #0x38 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C416 + mov r0, #0x0 + pop {r4, pc} +_0206C416: + add r4, #0x20 + mov r2, #0xfa + mov r0, #0x21 + add r1, r4, #0x0 + lsl r2, r2, #0x2 + bl FUN_02030A78 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206C428 +FUN_0206C428: ; 0x0206C428 + ldr r0, _0206C434 ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + nop +_0206C434: .word 0x00001020 + + thumb_func_start FUN_0206C438 +FUN_0206C438: ; 0x0206C438 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C44E + mov r0, #0x0 + pop {r3-r5, pc} +_0206C44E: + ldr r1, [r5, #0x0] + mov r0, #0x34 + mul r0, r4 + add r3, r1, r0 + add r3, #0x28 + add r5, #0x20 + mov r2, #0x6 +_0206C45C: + ldmia r3!, {r0-r1} + stmia r5!, {r0-r1} + sub r2, r2, #0x1 + bne _0206C45C + ldr r0, [r3, #0x0] + str r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0206C46C +FUN_0206C46C: ; 0x0206C46C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C484 + mov r0, #0x0 + pop {r4-r6, pc} +_0206C484: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C494 + mov r0, #0x0 + pop {r4-r6, pc} +_0206C494: + cmp r4, #0x1 + bne _0206C4A6 + add r5, #0x20 + mov r0, #0x1d + add r1, r5, #0x0 + mov r2, #0x34 + bl FUN_02030A78 + pop {r4-r6, pc} +_0206C4A6: + add r5, #0x20 + mov r0, #0x1e + add r1, r5, #0x0 + mov r2, #0x34 + bl FUN_02030A78 + pop {r4-r6, pc} + + thumb_func_start FUN_0206C4B4 +FUN_0206C4B4: ; 0x0206C4B4 + ldr r0, _0206C4C0 ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + nop +_0206C4C0: .word 0x00001020 + + thumb_func_start FUN_0206C4C4 +FUN_0206C4C4: ; 0x0206C4C4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C4DA + mov r0, #0x0 + pop {r3-r5, pc} +_0206C4DA: + ldr r1, [r5, #0x0] + lsl r0, r4, #0x2 + add r0, r1, r0 + add r5, #0x20 + ldr r0, [r0, #0x4] + add r1, r5, #0x0 + bl FUN_0206BAD0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0206C4F0 +FUN_0206C4F0: ; 0x0206C4F0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _0206C508 + mov r0, #0x0 + pop {r4-r6, pc} +_0206C508: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + bl FUN_020315D8 + cmp r0, #0x0 + bne _0206C518 + mov r0, #0x0 + pop {r4-r6, pc} +_0206C518: + cmp r4, #0x1 + bne _0206C52E + bl FUN_0206B8A4 + add r5, #0x20 + add r2, r0, #0x0 + mov r0, #0x1f + add r1, r5, #0x0 + bl FUN_02030A78 + pop {r4-r6, pc} +_0206C52E: + bl FUN_0206B8A4 + add r5, #0x20 + add r2, r0, #0x0 + mov r0, #0x20 + add r1, r5, #0x0 + bl FUN_02030A78 + pop {r4-r6, pc} + + thumb_func_start FUN_0206C540 +FUN_0206C540: ; 0x0206C540 + ldr r0, _0206C54C ; =0x00001020 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + bx lr + nop +_0206C54C: .word 0x00001020 + + thumb_func_start FUN_0206C550 +FUN_0206C550: ; 0x0206C550 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + bl FUN_022300D4 + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_022300E8 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_022300F4 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + bl FUN_02230100 + add r7, r0, #0x0 + ldrb r0, [r5, #0x4] + cmp r0, #0x0 + beq _0206C582 + cmp r0, #0xff + b _0206C5CC +_0206C582: + bl FUN_02030C58 + mov r1, #0x42 + lsl r1, r1, #0x2 + cmp r0, r1 + bne _0206C5D8 + ldr r0, [sp, #0x4] + ldrh r1, [r4, #0x0] + ldrh r0, [r0, #0x0] + cmp r1, r0 + beq _0206C5D8 + ldrh r0, [r7, #0x0] + cmp r1, r0 + bne _0206C5A4 + mov r0, #0x0 + strh r0, [r4, #0x0] + strh r0, [r7, #0x0] +_0206C5A4: + ldrh r1, [r4, #0x0] + add r0, r1, #0x2 + ldrb r2, [r6, r0] + add r0, r1, #0x3 + ldrb r0, [r6, r0] + add r1, r6, r1 + lsl r0, r0, #0x8 + orr r0, r2 + add r5, r0, #0x4 + mov r0, #0x17 + add r2, r5, #0x0 + bl FUN_02030ADC + cmp r0, #0x1 + bne _0206C5D8 + ldrh r0, [r4, #0x0] + add sp, #0x8 + add r0, r0, r5 + strh r0, [r4, #0x0] + pop {r3-r7, pc} +_0206C5CC: + add r0, r5, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x0] + bl FUN_0200CAB4 +_0206C5D8: + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0206C5DC +FUN_0206C5DC: ; 0x0206C5DC + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + bl FUN_022300DC + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_0223010C + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02230118 + add r7, r0, #0x0 + ldr r0, [r5, #0x0] + bl FUN_02230124 + ldrb r1, [r5, #0x4] + cmp r1, #0x0 + beq _0206C60A + cmp r1, #0xff + b _0206C63E +_0206C60A: + ldrh r1, [r4, #0x0] + ldrh r2, [r7, #0x0] + cmp r1, r2 + beq _0206C64A + ldrh r2, [r0, #0x0] + cmp r1, r2 + bne _0206C61E + mov r1, #0x0 + strh r1, [r4, #0x0] + strh r1, [r0, #0x0] +_0206C61E: + ldrh r1, [r4, #0x0] + ldr r0, [r5, #0x0] + add r1, r6, r1 + bl FUN_022567E0 + ldrh r0, [r4, #0x0] + add r1, r0, #0x2 + ldrb r2, [r6, r1] + add r1, r0, #0x3 + ldrb r1, [r6, r1] + lsl r1, r1, #0x8 + orr r1, r2 + add r1, r1, #0x4 + add r0, r0, r1 + strh r0, [r4, #0x0] + pop {r3-r7, pc} +_0206C63E: + add r0, r5, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x0] + bl FUN_0200CAB4 +_0206C64A: + pop {r3-r7, pc} + + thumb_func_start FUN_0206C64C +FUN_0206C64C: ; 0x0206C64C + push {r4, lr} + add r4, r3, #0x0 + add r0, r4, #0x0 + mov r1, #0xff + bl FUN_0223135C + add r0, r4, #0x0 + mov r1, #0xff + bl FUN_02231368 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02231374 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206C66C +FUN_0206C66C: ; 0x0206C66C + push {r4-r6, lr} + add r4, r2, #0x0 + add r6, r0, #0x0 + add r5, r1, #0x0 + bl FUN_0202398C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl StringCopy + add r0, r6, #0x0 + bl FUN_020239BC + str r0, [r4, #0x10] + add r0, r6, #0x0 + bl FUN_02023A70 + strb r0, [r4, #0x14] + add r0, r6, #0x0 + bl FUN_02023A68 + strb r0, [r4, #0x15] + add r0, r6, #0x0 + bl FUN_020239CC + strb r0, [r4, #0x16] + mov r0, #0x0 + add r1, r4, #0x0 +_0206C6A4: + ldr r2, [r5, #0x10] + str r2, [r1, #0x18] + ldrb r3, [r5, #0x15] + add r2, r4, r0 + add r2, #0x58 + strb r3, [r2, #0x0] + add r2, r4, r0 + ldrb r3, [r5, #0x14] + add r2, #0x68 + add r1, r1, #0x4 + strb r3, [r2, #0x0] + add r2, r4, r0 + ldrb r3, [r5, #0x16] + add r2, #0x78 + add r0, r0, #0x1 + add r5, #0x88 + strb r3, [r2, #0x0] + cmp r0, #0x10 + blt _0206C6A4 + pop {r4-r6, pc} + + thumb_func_start FUN_0206C6CC +FUN_0206C6CC: ; 0x0206C6CC + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02031190 + cmp r5, r0 + beq _0206C6EE + mov r0, #0x53 + ldr r1, [r4, #0x0] + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + add r1, r6, #0x0 + mov r2, #0x1 + mov r3, #0x5 + bl FUN_02025520 +_0206C6EE: + ldr r0, _0206C6F8 ; =0x00001020 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4-r6, pc} + .balign 4 +_0206C6F8: .word 0x00001020 + + thumb_func_start FUN_0206C6FC +FUN_0206C6FC: ; 0x0206C6FC + mov r0, #0x88 + bx lr + + thumb_func_start FUN_0206C700 +FUN_0206C700: ; 0x0206C700 + push {r4-r7, lr} + sub sp, #0x24 + ldr r5, [sp, #0x54] + add r6, r0, #0x0 + str r1, [sp, #0x14] + add r0, r5, #0x0 + mov r1, #0x80 + add r7, r2, #0x0 + str r3, [sp, #0x18] + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x80 + blx MIi_CpuClearFast + bl FUN_020222F0 + str r0, [sp, #0x1c] + bl FUN_020222E8 + add r1, r0, #0x0 + ldr r2, [sp, #0x1c] + mov r0, #0x0 + blx MIi_CpuClear16 + bl FUN_02022300 + str r0, [sp, #0x20] + bl FUN_020222F8 + add r1, r0, #0x0 + ldr r2, [sp, #0x20] + mov r0, #0x0 + blx MIi_CpuClear16 + ldr r0, [sp, #0x14] + str r6, [r4, #0x24] + mov r1, #0x5 + mov r2, #0x0 + str r0, [r4, #0x28] + bl FUN_020671BC + add r1, r4, #0x0 + add r1, #0x60 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x62 + strh r7, [r0, #0x0] + str r5, [r4, #0x5c] + add r0, r5, #0x0 + bl FUN_02002FD0 + str r0, [r4, #0x14] + mov r1, #0x1 + bl FUN_020038F0 + mov r2, #0x2 + ldr r0, [r4, #0x14] + mov r1, #0x0 + lsl r2, r2, #0x8 + add r3, r5, #0x0 + bl FUN_02003008 + mov r1, #0x1 + ldr r0, [r4, #0x14] + lsl r2, r1, #0x9 + add r3, r5, #0x0 + bl FUN_02003008 + mov r2, #0x7 + ldr r0, [r4, #0x14] + mov r1, #0x2 + lsl r2, r2, #0x6 + add r3, r5, #0x0 + bl FUN_02003008 + mov r2, #0x2 + ldr r0, [r4, #0x14] + mov r1, #0x3 + lsl r2, r2, #0x8 + add r3, r5, #0x0 + bl FUN_02003008 + add r0, r5, #0x0 + bl FUN_02016B94 + str r0, [r4, #0x0] + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02018FF4 + str r0, [r4, #0x4] + ldr r0, [sp, #0x18] + str r0, [r4, #0x2c] + add r0, r5, #0x0 + bl FUN_0206DE78 + str r0, [r4, #0x34] + bl FUN_0206DE24 + bl FUN_0206DE4C + bl FUN_0206DF18 + ldr r1, [r4, #0x0] + add r0, r4, #0x0 + bl FUN_0206D9B4 + mov r0, #0x13 + str r0, [sp, #0x0] + mov r0, #0x1b + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0xb + str r0, [sp, #0xc] + mov r0, #0x1f + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x4] + mov r2, #0x1 + mov r3, #0x2 + bl FUN_02019064 + ldr r0, [r4, #0x4] + mov r1, #0xff + bl FUN_02019620 + ldr r0, [r4, #0x4] + mov r1, #0x0 + mov r2, #0x1 + mov r3, #0xa + bl FUN_0200D0BC + add r0, r5, #0x0 + bl FUN_02006D98 + str r0, [r4, #0x18] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_02014BF4 + str r0, [r4, #0x44] + add r0, r4, #0x0 + mov r2, #0x51 + mov r1, #0x0 + add r0, #0x67 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x2 + add r0, #0x66 + strb r1, [r0, #0x0] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + add r3, r5, #0x0 + bl FUN_0200A86C + str r0, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_0200AA80 + str r0, [r4, #0xc] + mov r0, #0x5 + lsl r0, r0, #0x6 + add r1, r5, #0x0 + bl FUN_020219F4 + str r0, [r4, #0x10] + add r0, r5, #0x0 + mov r1, #0x30 + bl FUN_02016998 + str r0, [r4, #0x3c] + ldr r1, [r4, #0x3c] + mov r0, #0x0 + mov r2, #0x30 + blx MIi_CpuClearFast + ldr r1, [sp, #0x38] + ldr r0, [r4, #0x3c] + str r1, [r0, #0x2c] + ldr r0, [sp, #0x3c] + str r0, [r4, #0x48] + ldr r0, [sp, #0x40] + str r0, [r4, #0x4c] + ldr r0, [sp, #0x44] + str r0, [r4, #0x50] + ldr r0, [sp, #0x48] + str r0, [r4, #0x54] + ldr r0, [sp, #0x4c] + str r0, [r4, #0x78] + ldr r0, [sp, #0x50] + str r0, [r4, #0x7c] + add r0, r4, #0x0 + bl FUN_0206DC80 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x14] + ldr r2, _0206C8E4 ; =0x0000FFFF + mov r1, #0xf + mov r3, #0x1 + bl FUN_02003210 + mov r2, #0x0 + str r2, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r1, #0x10 + add r3, r2, #0x0 + bl FUN_02007E98 + ldr r0, [r4, #0x14] + mov r1, #0x0 + mov r2, #0xb + add r3, r5, #0x0 + bl FUN_020142EC + mov r1, #0x1 + str r0, [r4, #0x58] + bl FUN_020143A8 + ldr r0, _0206C8E8 ; =FUN_0206C8EC + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_0200CA44 + mov r0, #0x1 + bl FUN_02002B60 + bl FUN_02033E74 + add r0, r4, #0x0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0206C8E4: .word 0x0000FFFF +_0206C8E8: .word FUN_0206C8EC + + thumb_func_start FUN_0206C8EC +FUN_0206C8EC: ; 0x0206C8EC + push {r3-r5, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0206C9C0 + ldr r0, [r5, #0x18] + bl FUN_02006ED4 + bl FUN_0206DF58 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_020222B4 + add r5, #0x67 + ldrb r0, [r5, #0x0] + cmp r0, #0x0 + beq _0206C918 + add r0, r4, #0x0 + bl FUN_0200CAB4 +_0206C918: + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0206C91C +FUN_0206C91C: ; 0x0206C91C + add r0, #0x67 + ldrb r0, [r0, #0x0] + cmp r0, #0x1 + bne _0206C928 + mov r0, #0x1 + bx lr +_0206C928: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0206C92C +FUN_0206C92C: ; 0x0206C92C + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + ldr r0, [r4, #0x4] + mov r1, #0x1 + bl FUN_020191A4 + ldr r0, [r4, #0x14] + mov r1, #0x0 + bl FUN_02003038 + ldr r0, [r4, #0x14] + mov r1, #0x1 + bl FUN_02003038 + ldr r0, [r4, #0x14] + mov r1, #0x2 + bl FUN_02003038 + ldr r0, [r4, #0x14] + mov r1, #0x3 + bl FUN_02003038 + ldr r0, [r4, #0x14] + bl FUN_02002FEC + ldr r0, [r4, #0x18] + bl FUN_020072E8 + ldr r0, [r4, #0x44] + bl FUN_02014C28 + ldr r0, [r4, #0x34] + bl FUN_020223BC + ldr r0, [r4, #0x0] + bl FUN_0206DC48 + ldr r0, [r4, #0x8] + bl FUN_0200A8B8 + ldr r0, [r4, #0xc] + bl FUN_0200AB18 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + ldr r0, [r4, #0x3c] + bl FUN_02016A18 + ldr r0, [r4, #0x58] + bl FUN_020143D0 + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + bl FUN_02002B60 + pop {r4, pc} + + thumb_func_start FUN_0206C9C0 +FUN_0206C9C0: ; 0x0206C9C0 + push {r3-r4, lr} + sub sp, #0x54 + add r4, r0, #0x0 + add r0, #0x70 + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + beq _0206CA9C + mov r0, #0x1 + tst r0, r1 + ldr r0, [r4, #0x1c] + bne _0206CA2E + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + mov r1, #0xc + neg r2, r2 + bl FUN_020079E0 + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x1c] + mov r1, #0xd + neg r2, r2 + bl FUN_020079E0 + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x20] + mov r1, #0xc + bl FUN_020079E0 + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x20] + mov r1, #0xd + bl FUN_020079E0 + ldr r0, [r4, #0x1c] + mov r1, #0xc + bl FUN_0200782C + cmp r0, #0x0 + bne _0206CA9C + add r0, r4, #0x0 + add r0, #0x70 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + eor r1, r0 + add r0, r4, #0x0 + add r0, #0x70 + strb r1, [r0, #0x0] + b _0206CA9C +_0206CA2E: + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + mov r1, #0xc + bl FUN_020079E0 + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x1c] + mov r1, #0xd + bl FUN_020079E0 + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x20] + mov r1, #0xc + neg r2, r2 + bl FUN_020079E0 + add r2, r4, #0x0 + add r2, #0x71 + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x20] + mov r1, #0xd + neg r2, r2 + bl FUN_020079E0 + ldr r0, [r4, #0x20] + mov r1, #0xc + bl FUN_0200782C + cmp r0, #0x0 + bne _0206CA9C + add r0, r4, #0x0 + add r0, #0x70 + ldrb r1, [r0, #0x0] + mov r0, #0x1 + eor r1, r0 + add r0, r4, #0x0 + add r0, #0x70 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x71 + ldrb r0, [r0, #0x0] + cmp r0, #0x40 + bhs _0206CA9C + add r0, r4, #0x0 + add r0, #0x71 + ldrb r0, [r0, #0x0] + lsl r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x71 + strb r1, [r0, #0x0] +_0206CA9C: + ldr r1, [r4, #0x7c] + mov r0, #0x1 + tst r0, r1 + beq _0206CAD6 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + cmp r0, #0x8 + bne _0206CAD6 + ldr r0, _0206CE0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x2 + tst r0, r1 + beq _0206CAD6 + mov r3, #0x0 + str r3, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + ldr r0, _0206CE10 ; =0x00007FFF + ldr r2, _0206CE14 ; =0x0000F3FF + str r0, [sp, #0x8] + ldr r0, [r4, #0x14] + mov r1, #0xf + bl FUN_02003210 + add r0, r4, #0x0 + mov r1, #0x29 + add r0, #0x64 + strb r1, [r0, #0x0] +_0206CAD6: + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + cmp r0, #0x2d + bhi _0206CBA8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206CAEC: ; jump table (using 16-bit offset) + .short _0206CB48 - _0206CAEC - 2; case 0 + .short _0206CB70 - _0206CAEC - 2; case 1 + .short _0206CB9E - _0206CAEC - 2; case 2 + .short _0206CBCC - _0206CAEC - 2; case 3 + .short _0206CBE4 - _0206CAEC - 2; case 4 + .short _0206CC66 - _0206CAEC - 2; case 5 + .short _0206CCB2 - _0206CAEC - 2; case 6 + .short _0206CD34 - _0206CAEC - 2; case 7 + .short _0206CDC8 - _0206CAEC - 2; case 8 + .short _0206CE8A - _0206CAEC - 2; case 9 + .short _0206CF18 - _0206CAEC - 2; case 10 + .short _0206CF7E - _0206CAEC - 2; case 11 + .short _0206CFFA - _0206CAEC - 2; case 12 + .short _0206D06E - _0206CAEC - 2; case 13 + .short _0206D0E8 - _0206CAEC - 2; case 14 + .short _0206D188 - _0206CAEC - 2; case 15 + .short _0206D12C - _0206CAEC - 2; case 16 + .short _0206D188 - _0206CAEC - 2; case 17 + .short _0206D162 - _0206CAEC - 2; case 18 + .short _0206D188 - _0206CAEC - 2; case 19 + .short _0206D1C0 - _0206CAEC - 2; case 20 + .short _0206D20E - _0206CAEC - 2; case 21 + .short _0206D260 - _0206CAEC - 2; case 22 + .short _0206D2E2 - _0206CAEC - 2; case 23 + .short _0206D360 - _0206CAEC - 2; case 24 + .short _0206D480 - _0206CAEC - 2; case 25 + .short _0206D188 - _0206CAEC - 2; case 26 + .short _0206D4A6 - _0206CAEC - 2; case 27 + .short _0206D188 - _0206CAEC - 2; case 28 + .short _0206D4F8 - _0206CAEC - 2; case 29 + .short _0206D188 - _0206CAEC - 2; case 30 + .short _0206D51E - _0206CAEC - 2; case 31 + .short _0206D398 - _0206CAEC - 2; case 32 + .short _0206D188 - _0206CAEC - 2; case 33 + .short _0206D3CC - _0206CAEC - 2; case 34 + .short _0206D3EE - _0206CAEC - 2; case 35 + .short _0206D44E - _0206CAEC - 2; case 36 + .short _0206D5AA - _0206CAEC - 2; case 37 + .short _0206D5C8 - _0206CAEC - 2; case 38 + .short _0206D5F4 - _0206CAEC - 2; case 39 + .short _0206D628 - _0206CAEC - 2; case 40 + .short _0206D648 - _0206CAEC - 2; case 41 + .short _0206D6EE - _0206CAEC - 2; case 42 + .short _0206D748 - _0206CAEC - 2; case 43 + .short _0206D79C - _0206CAEC - 2; case 44 + .short _0206D7F6 - _0206CAEC - 2; case 45 +_0206CB48: + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0206CBA8 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CB70: + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + ldr r0, [r4, #0x58] + mov r1, #0x0 + bl FUN_020143A8 + ldr r1, [r4, #0x7c] + mov r0, #0x2 + tst r1, r0 + beq _0206CB94 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CB94: + mov r0, #0x4 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CB9E: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + beq _0206CBAC +_0206CBA8: + bl _0206D806 +_0206CBAC: + mov r1, #0xe5 + add r0, r4, #0x0 + lsl r1, r1, #0x2 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CBCC: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206CCCA + mov r0, #0x4 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CBE4: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206CCCA + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + add r2, #0x60 + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0x44] + ldr r1, [r4, #0x1c] + mov r3, #0x2 + bl FUN_02069038 + add r1, r4, #0x0 + add r1, #0x60 + ldrh r1, [r1, #0x0] + add r0, sp, #0x40 + bl FUN_02069010 + ldr r0, [r4, #0x1c] + add r1, sp, #0x40 + bl FUN_0200737C + ldr r0, [r4, #0x1c] + mov r1, #0x0 + bl FUN_02007314 + add r0, r4, #0x0 + add r0, #0x60 + ldrh r0, [r0, #0x0] + bl FUN_02005578 + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r1, [r4, #0x7c] + mov r0, #0x2 + tst r0, r1 + beq _0206CC4E + ldr r1, _0206CE18 ; =0x00000395 + add r0, r4, #0x0 + bl FUN_0206DD6C + b _0206CC56 +_0206CC4E: + ldr r1, _0206CE1C ; =0x00000393 + add r0, r4, #0x0 + bl FUN_0206DD6C +_0206CC56: + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + mov r0, #0x5 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CC66: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206CCCA + bl FUN_02005670 + cmp r0, #0x0 + bne _0206CCCA + ldr r0, [r4, #0x44] + mov r1, #0x0 + bl FUN_02014D7C + cmp r0, #0x1 + bne _0206CCCA + ldr r0, [r4, #0x1c] + bl FUN_02007390 + cmp r0, #0x0 + bne _0206CCCA + ldr r0, [r4, #0x58] + mov r1, #0x1 + bl FUN_020143A8 + ldr r0, _0206CE20 ; =0x00000475 + bl FUN_020051F4 + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + mov r0, #0x6 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CCB2: + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0206CCCE +_0206CCCA: + bl _0206D806 +_0206CCCE: + ldr r0, [r4, #0x5c] + str r0, [sp, #0x10] + mov r0, #0x0 + str r0, [sp, #0x14] + add r0, sp, #0x10 + bl FUN_0206E07C + mov r1, #0x0 + str r0, [r4, #0x30] + bl FUN_0206E0AC + ldr r0, _0206CE10 ; =0x00007FFF + mov r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x1c] + mov r2, #0x10 + mov r3, #0x4 + bl FUN_02007E68 + ldr r0, _0206CE10 ; =0x00007FFF + mov r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x20] + mov r2, #0x10 + mov r3, #0x4 + bl FUN_02007E68 + ldr r0, [r4, #0x5c] + bl FUN_02016AF8 + mov r1, #0x2 + lsl r1, r1, #0xe + cmp r0, r1 + bhi _0206CD16 + bl ErrorHandling +_0206CD16: + ldr r0, _0206CE24 ; =0x000005F9 + bl FUN_020054C8 + add r0, r4, #0x0 + mov r1, #0x28 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CD34: + add r0, r4, #0x0 + add r0, #0x73 + ldrb r0, [r0, #0x0] + cmp r0, #0x28 + bhs _0206CD5A + add r0, r4, #0x0 + add r0, #0x73 + ldrb r0, [r0, #0x0] + add r1, r0, #0x2 + add r0, r4, #0x0 + add r0, #0x73 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x75 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x2 + add r0, r4, #0x0 + add r0, #0x75 + strb r1, [r0, #0x0] +_0206CD5A: + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0206CDD2 + ldr r0, [r4, #0x30] + mov r1, #0x1 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x2 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x7 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x8 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x9 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0xb + bl FUN_0206E0AC + ldr r0, _0206CE28 ; =0x000005FA + bl FUN_020054C8 + add r0, r4, #0x0 + mov r1, #0x10 + add r0, #0x70 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x8 + add r0, #0x71 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CDC8: + ldr r0, [r4, #0x30] + bl FUN_0206E0C8 + cmp r0, #0x0 + beq _0206CDD6 +_0206CDD2: + bl _0206D806 +_0206CDD6: + ldr r0, [r4, #0x30] + mov r1, #0x3 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x4 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x5 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0x6 + bl FUN_0206E0AC + ldr r0, [r4, #0x30] + mov r1, #0xa + bl FUN_0206E0AC + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + ldr r0, _0206CE10 ; =0x00007FFF + ldr r2, _0206CE14 ; =0x0000F3FF + b _0206CE2C + .balign 4 +_0206CE0C: .word 0x021C48B8 +_0206CE10: .word 0x00007FFF +_0206CE14: .word 0x0000F3FF +_0206CE18: .word 0x00000395 +_0206CE1C: .word 0x00000393 +_0206CE20: .word 0x00000475 +_0206CE24: .word 0x000005F9 +_0206CE28: .word 0x000005FA +_0206CE2C: + str r0, [sp, #0x8] + ldr r0, [r4, #0x14] + mov r1, #0xf + mov r3, #0x2 + bl FUN_02003210 + ldr r0, [r4, #0x1c] + mov r1, #0xc + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x1c] + mov r1, #0xd + mov r2, #0x0 + bl FUN_02007558 + mov r1, #0xc + add r2, r1, #0x0 + ldr r0, [r4, #0x20] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0x0 + ldr r0, [r4, #0x20] + add r2, #0xf3 + bl FUN_02007558 + ldr r0, _0206D1C8 ; =0x000005FB + bl FUN_020054C8 + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x70 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x8 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CE8A: + add r0, r4, #0x0 + add r0, #0x73 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0206CEB0 + add r0, r4, #0x0 + add r0, #0x73 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x2 + add r0, r4, #0x0 + add r0, #0x73 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x75 + ldrb r0, [r0, #0x0] + add r1, r0, #0x2 + add r0, r4, #0x0 + add r0, #0x75 + strb r1, [r0, #0x0] +_0206CEB0: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206CF2C + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0206CF2C + ldr r0, [r4, #0x30] + mov r1, #0xc + bl FUN_0206E0AC + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, _0206D1CC ; =0x00007FFF + ldr r2, _0206D1D0 ; =0x0000F3FF + str r0, [sp, #0x8] + ldr r0, [r4, #0x14] + mov r1, #0xf + mov r3, #0x4 + bl FUN_02003210 + ldr r0, _0206D1CC ; =0x00007FFF + mov r1, #0x10 + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r2, #0x0 + mov r3, #0x3 + bl FUN_02007E98 + ldr r0, _0206D1D4 ; =0x000005FC + bl FUN_020054C8 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CF18: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206CF2C + ldr r0, [r4, #0x30] + bl FUN_0206E0C8 + cmp r0, #0x0 + beq _0206CF30 +_0206CF2C: + bl _0206D806 +_0206CF30: + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + add r2, #0x62 + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0x44] + ldr r1, [r4, #0x20] + mov r3, #0x2 + bl FUN_02069038 + add r1, r4, #0x0 + add r1, #0x62 + ldrh r1, [r1, #0x0] + add r0, sp, #0x2c + bl FUN_02069010 + ldr r0, [r4, #0x20] + add r1, sp, #0x2c + bl FUN_0200737C + ldr r0, [r4, #0x20] + mov r1, #0x0 + bl FUN_02007314 + add r0, r4, #0x0 + add r0, #0x62 + ldrh r0, [r0, #0x0] + bl FUN_02005578 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CF7E: + bl FUN_02005670 + cmp r0, #0x0 + bne _0206D084 + ldr r0, [r4, #0x44] + mov r1, #0x0 + bl FUN_02014D7C + cmp r0, #0x1 + bne _0206D084 + ldr r0, [r4, #0x20] + bl FUN_02007390 + cmp r0, #0x0 + bne _0206D084 + add r2, r4, #0x0 + ldr r0, [r4, #0x28] + mov r1, #0x5 + add r2, #0x62 + bl FUN_02067830 + ldr r0, [r4, #0x28] + bl FUN_0206A1C4 + ldr r0, [r4, #0x28] + bl FUN_02066ED8 + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200AC60 + ldr r1, _0206D1D8 ; =0x00000396 + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x28 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206CFFA: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206D084 + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0206D084 + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x28] + bl FUN_02024AF0 + ldr r0, [r4, #0x50] + mov r1, #0xc + bl FUN_0202A0E8 + ldr r0, [r4, #0x50] + mov r1, #0x16 + bl FUN_0202A170 + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r1, r0, #0x0 + ldr r0, [r4, #0x54] + bl FUN_0204C104 + ldr r0, [r4, #0x28] + mov r1, #0x4d + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0206D05E + ldr r0, [r4, #0x28] + mov r1, #0xb2 + mov r2, #0x0 + bl FUN_02067830 +_0206D05E: + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D06E: + add r1, r4, #0x0 + ldr r0, [r4, #0x28] + add r1, #0x68 + add r2, sp, #0xc + bl FUN_02069818 + cmp r0, #0x0 + beq _0206D08E + ldr r1, _0206D1DC ; =0x0000FFFE + cmp r0, r1 + bne _0206D086 +_0206D084: + b _0206D806 +_0206D086: + add r1, r1, #0x1 + cmp r0, r1 + beq _0206D098 + b _0206D0AC +_0206D08E: + mov r0, #0x27 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D098: + add r0, sp, #0xc + ldrh r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x6c + strh r1, [r0, #0x0] + mov r0, #0xe + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D0AC: + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + add r2, sp, #0xc + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200AD5C + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + mov r0, #0x25 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D0E8: + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + add r2, r4, #0x0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200AD5C + ldr r1, _0206D1E0 ; =0x000004A9 + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D12C: + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r1, _0206D1E4 ; =0x000004AA + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D162: + ldr r1, _0206D1E8 ; =0x000004AB + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x1 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D188: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206D1AE + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0206D1B0 +_0206D1AE: + b _0206D806 +_0206D1B0: + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D1C0: + ldr r0, [r4, #0x5c] + ldr r1, _0206D1EC ; =0x020F8320 + b _0206D1F0 + nop +_0206D1C8: .word 0x000005FB +_0206D1CC: .word 0x00007FFF +_0206D1D0: .word 0x0000F3FF +_0206D1D4: .word 0x000005FC +_0206D1D8: .word 0x00000396 +_0206D1DC: .word 0x0000FFFE +_0206D1E0: .word 0x000004A9 +_0206D1E4: .word 0x000004AA +_0206D1E8: .word 0x000004AB +_0206D1EC: .word 0x020F8320 +_0206D1F0: + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r3, #0x8 + bl FUN_02002198 + str r0, [r4, #0x40] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D20E: + ldr r0, [r4, #0x40] + ldr r1, [r4, #0x5c] + bl FUN_020021AC + cmp r0, #0x0 + beq _0206D226 + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _0206D256 + add sp, #0x54 + pop {r3-r4, pc} +_0206D226: + add r0, r4, #0x0 + mov r1, #0x16 + add r0, #0x64 + strb r1, [r0, #0x0] + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r4, #0x14] + ldr r2, _0206D540 ; =0x0000FFFF + mov r1, #0xf + mov r3, #0x1 + bl FUN_02003210 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r2, #0x10 + add r3, r1, #0x0 + bl FUN_02007E98 + add sp, #0x54 + pop {r3-r4, pc} +_0206D256: + mov r0, #0x20 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D260: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206D2EC + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + ldr r0, [r4, #0x0] + bl FUN_0206DC48 + ldr r0, [r4, #0x1c] + mov r1, #0x6 + mov r2, #0x1 + bl FUN_02007558 + ldr r0, [r4, #0x20] + mov r1, #0x6 + mov r2, #0x1 + bl FUN_02007558 + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x3c] + mov r2, #0x1 + str r1, [r0, #0x0] + ldr r1, [r4, #0x2c] + ldr r0, [r4, #0x3c] + str r1, [r0, #0x4] + ldr r1, [r4, #0x3c] + mov r0, #0x0 + strb r0, [r1, #0x11] + ldr r1, [r4, #0x3c] + strb r0, [r1, #0x14] + ldr r1, [r4, #0x3c] + strb r2, [r1, #0x13] + add r1, r4, #0x0 + add r1, #0x6c + ldrh r2, [r1, #0x0] + ldr r1, [r4, #0x3c] + strh r2, [r1, #0x18] + ldr r1, [r4, #0x3c] + mov r2, #0x2 + strb r2, [r1, #0x12] + ldr r1, [r4, #0x3c] + str r0, [r1, #0x28] + ldr r0, [r4, #0x3c] + ldr r1, _0206D544 ; =0x020F831C + bl FUN_0207B000 + add r0, r4, #0x0 + bl FUN_0206DE0C + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D2E2: + ldr r0, [r4, #0x38] + bl FUN_02006290 + cmp r0, #0x0 + bne _0206D2EE +_0206D2EC: + b _0206D806 +_0206D2EE: + ldr r0, [r4, #0x38] + bl FUN_02006260 + ldr r1, [r4, #0x0] + add r0, r4, #0x0 + bl FUN_0206D9B4 + ldr r0, [r4, #0x4] + mov r1, #0x0 + mov r2, #0x1 + mov r3, #0xa + bl FUN_0200D0BC + ldr r0, [r4, #0x1c] + mov r1, #0x6 + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x20] + mov r1, #0x6 + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x1c] + bl FUN_020080D0 + ldr r0, [r4, #0x20] + bl FUN_020080D0 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x14] + ldr r2, _0206D540 ; =0x0000FFFF + mov r1, #0xf + mov r3, #0x1 + bl FUN_02003210 + mov r2, #0x0 + str r2, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r1, #0x10 + add r3, r2, #0x0 + bl FUN_02007E98 + bl FUN_02033E74 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D360: + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206D474 + ldr r0, [r4, #0x3c] + ldrb r1, [r0, #0x16] + cmp r1, #0x4 + bne _0206D388 + mov r0, #0x20 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D388: + add r0, r4, #0x0 + add r0, #0x6e + strb r1, [r0, #0x0] + mov r0, #0x19 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D398: + add r2, r4, #0x0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200AD5C + ldr r1, _0206D548 ; =0x000004AD + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x1 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D3CC: + ldr r0, [r4, #0x5c] + ldr r1, _0206D54C ; =0x020F8320 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r3, #0x8 + bl FUN_02002198 + str r0, [r4, #0x40] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D3EE: + ldr r0, [r4, #0x40] + ldr r1, [r4, #0x5c] + bl FUN_020021AC + cmp r0, #0x0 + beq _0206D406 + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _0206D444 + add sp, #0x54 + pop {r3-r4, pc} +_0206D406: + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + add r2, r4, #0x0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200AD5C + ldr r1, _0206D550 ; =0x000004AE + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + mov r0, #0x24 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D444: + mov r0, #0xe + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D44E: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206D474 + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0206D476 +_0206D474: + b _0206D806 +_0206D476: + mov r0, #0xd + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D480: + ldr r1, _0206D554 ; =0x000004AF + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D4A6: + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + add r1, r4, #0x0 + add r1, #0x6e + ldrb r1, [r1, #0x0] + ldr r0, [r4, #0x28] + mov r2, #0x0 + add r1, #0x36 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200AD5C + mov r1, #0x4b + add r0, r4, #0x0 + lsl r1, r1, #0x4 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D4F8: + ldr r1, _0206D558 ; =0x000004B1 + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D51E: + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + add r2, r4, #0x0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_0200AD5C + ldr r1, _0206D55C ; =0x000004B2 + b _0206D560 + .balign 4 +_0206D540: .word 0x0000FFFF +_0206D544: .word 0x020F831C +_0206D548: .word 0x000004AD +_0206D54C: .word 0x020F8320 +_0206D550: .word 0x000004AE +_0206D554: .word 0x000004AF +_0206D558: .word 0x000004B1 +_0206D55C: .word 0x000004B2 +_0206D560: + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + add r2, r4, #0x0 + mov r1, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r1, r4, #0x0 + add r1, #0x6e + ldrb r1, [r1, #0x0] + ldr r0, [r4, #0x28] + add r2, #0x66 + add r1, #0x3e + bl FUN_02067830 + add r1, r4, #0x0 + add r2, r4, #0x0 + add r1, #0x6c + add r2, #0x6e + ldrh r1, [r1, #0x0] + ldrb r2, [r2, #0x0] + ldr r0, [r4, #0x28] + bl FUN_020697CC + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + mov r0, #0x25 + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D5AA: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206D5E8 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D5C8: + bl FUN_02005CBC + cmp r0, #0x0 + bne _0206D5E8 + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _0206D5EA +_0206D5E8: + b _0206D806 +_0206D5EA: + mov r0, #0xd + add r4, #0x64 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D5F4: + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r4, #0x14] + ldr r2, _0206D80C ; =0x0000FFFF + mov r1, #0xf + mov r3, #0x1 + bl FUN_02003210 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r2, #0x10 + add r3, r1, #0x0 + bl FUN_02007E98 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D628: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206D6F8 + ldr r0, [r4, #0x30] + bl FUN_0206E0DC + add r0, r4, #0x0 + bl FUN_0206D820 + mov r0, #0x1 + add r4, #0x67 + add sp, #0x54 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D648: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206D6F8 + mov r1, #0xc + add r2, r1, #0x0 + ldr r0, [r4, #0x1c] + add r2, #0xf4 + bl FUN_02007558 + mov r1, #0xd + add r2, r1, #0x0 + ldr r0, [r4, #0x1c] + add r2, #0xf3 + bl FUN_02007558 + ldr r0, [r4, #0x20] + mov r1, #0xc + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x20] + mov r1, #0xd + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x20] + mov r1, #0x6 + mov r2, #0x1 + bl FUN_02007558 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r0, _0206D810 ; =0x00007FFF + str r3, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r4, #0x14] + ldr r2, _0206D814 ; =0x0000F3FF + mov r1, #0xf + bl FUN_02003210 + ldr r0, _0206D810 ; =0x00007FFF + mov r2, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r1, #0x10 + add r3, r2, #0x0 + bl FUN_02007E98 + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x72 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x73 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r2, #0xff + add r0, #0x74 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + mov r2, #0xa0 + add r0, #0x75 + strb r2, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x70 + strb r1, [r0, #0x0] + ldr r0, _0206D818 ; =0x00000475 + bl FUN_02005350 + ldr r0, [r4, #0x30] + bl FUN_0206E0DC + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D6EE: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + beq _0206D6FA +_0206D6F8: + b _0206D806 +_0206D6FA: + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + add r2, r4, #0x0 + add r2, #0x60 + ldrh r2, [r2, #0x0] + ldr r0, [r4, #0x44] + ldr r1, [r4, #0x1c] + mov r3, #0x2 + bl FUN_02069038 + add r1, r4, #0x0 + add r1, #0x60 + ldrh r1, [r1, #0x0] + add r0, sp, #0x18 + bl FUN_02069010 + ldr r0, [r4, #0x1c] + add r1, sp, #0x18 + bl FUN_0200737C + ldr r0, [r4, #0x1c] + mov r1, #0x0 + bl FUN_02007314 + add r0, r4, #0x0 + add r0, #0x60 + ldrh r0, [r0, #0x0] + bl FUN_02005578 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D748: + bl FUN_02005670 + cmp r0, #0x0 + bne _0206D806 + ldr r0, [r4, #0x44] + mov r1, #0x0 + bl FUN_02014D7C + cmp r0, #0x1 + bne _0206D806 + ldr r0, [r4, #0x1c] + bl FUN_02007390 + cmp r0, #0x0 + bne _0206D806 + ldr r0, [r4, #0x28] + bl FUN_020690E4 + add r2, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r1, _0206D81C ; =0x00000397 + add r0, r4, #0x0 + bl FUN_0206DD6C + add r1, r4, #0x0 + add r1, #0x65 + strb r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D79C: + add r0, r4, #0x0 + add r0, #0x65 + ldrb r0, [r0, #0x0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206D806 + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + sub r1, r0, #0x1 + add r0, r4, #0x0 + add r0, #0x66 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x66 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + bne _0206D806 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r4, #0x14] + ldr r2, _0206D80C ; =0x0000FFFF + mov r1, #0xf + mov r3, #0x1 + bl FUN_02003210 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x18] + mov r2, #0x10 + add r3, r1, #0x0 + bl FUN_02007E98 + add r0, r4, #0x0 + add r0, #0x64 + ldrb r0, [r0, #0x0] + add r4, #0x64 + add sp, #0x54 + add r0, r0, #0x1 + strb r0, [r4, #0x0] + pop {r3-r4, pc} +_0206D7F6: + ldr r0, [r4, #0x14] + bl FUN_020038E4 + cmp r0, #0x0 + bne _0206D806 + mov r0, #0x1 + add r4, #0x67 + strb r0, [r4, #0x0] +_0206D806: + add sp, #0x54 + pop {r3-r4, pc} + nop +_0206D80C: .word 0x0000FFFF +_0206D810: .word 0x00007FFF +_0206D814: .word 0x0000F3FF +_0206D818: .word 0x00000475 +_0206D81C: .word 0x00000397 + + thumb_func_start FUN_0206D820 +FUN_0206D820: ; 0x0206D820 + push {r4-r6, lr} + sub sp, #0x20 + add r4, r0, #0x0 + ldr r0, [r4, #0x78] + cmp r0, #0x6 + bgt _0206D834 + bne _0206D830 + b _0206D9A0 +_0206D830: + add sp, #0x20 + pop {r4-r6, pc} +_0206D834: + sub r0, #0xd + cmp r0, #0x6 + bhi _0206D86C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206D846: ; jump table (using 16-bit offset) + .short _0206D854 - _0206D846 - 2; case 0 + .short _0206D854 - _0206D846 - 2; case 1 + .short _0206D9AE - _0206D846 - 2; case 2 + .short _0206D9AE - _0206D846 - 2; case 3 + .short _0206D9AE - _0206D846 - 2; case 4 + .short _0206D9A0 - _0206D846 - 2; case 5 + .short _0206D9A0 - _0206D846 - 2; case 6 +_0206D854: + ldr r0, [r4, #0x4c] + ldr r2, [r4, #0x5c] + mov r1, #0x4 + bl FUN_0206EEF8 + cmp r0, #0x0 + beq _0206D86C + ldr r0, [r4, #0x24] + bl FUN_0206B9AC + cmp r0, #0x6 + blt _0206D86E +_0206D86C: + b _0206D9AE +_0206D86E: + ldr r0, [r4, #0x5c] + bl FUN_020669C0 + add r5, r0, #0x0 + ldr r0, [r4, #0x28] + add r1, r5, #0x0 + bl FUN_02069B88 + mov r0, #0x49 + lsl r0, r0, #0x2 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x5 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x4 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x9a + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + mov r1, #0xb + add r2, sp, #0x0 + bl FUN_02067830 + mov r1, #0x19 + str r1, [sp, #0x4] + add r6, sp, #0x0 +_0206D8BA: + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_02067830 + ldr r0, [sp, #0x4] + add r1, r0, #0x1 + str r1, [sp, #0x4] + cmp r1, #0x36 + blt _0206D8BA + mov r1, #0x4e + str r1, [sp, #0x4] + add r6, sp, #0x0 +_0206D8D2: + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_02067830 + ldr r0, [sp, #0x4] + add r1, r0, #0x1 + str r1, [sp, #0x4] + cmp r1, #0x6e + blt _0206D8D2 + mov r1, #0x7a + str r1, [sp, #0x4] + add r6, sp, #0x0 +_0206D8EA: + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_02067830 + ldr r0, [sp, #0x4] + add r1, r0, #0x1 + str r1, [sp, #0x4] + cmp r1, #0x8f + blt _0206D8EA + add r0, r5, #0x0 + mov r1, #0xb2 + mov r2, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + mov r1, #0x4d + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + mov r1, #0x9f + add r2, sp, #0x0 + bl FUN_02067830 + ldr r0, [r4, #0x5c] + bl FUN_020256BC + add r6, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa9 + add r2, r6, #0x0 + bl FUN_02067830 + add r0, r6, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + mov r1, #0xa1 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + add r1, sp, #0x8 + mov r2, #0x18 + blx MIi_CpuClearFast + add r0, r5, #0x0 + mov r1, #0xaa + add r2, sp, #0x8 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_0206A1C4 + add r0, r5, #0x0 + bl FUN_02066ED8 + ldr r0, [r4, #0x24] + add r1, r5, #0x0 + bl FUN_0206B900 + ldr r0, [r4, #0x48] + add r1, r5, #0x0 + bl FUN_02024AF0 + ldr r0, [r4, #0x50] + mov r1, #0xc + bl FUN_0202A0E8 + ldr r0, [r4, #0x50] + mov r1, #0x16 + bl FUN_0202A170 + add r0, r5, #0x0 + bl FUN_020690E4 + add r1, r0, #0x0 + ldr r0, [r4, #0x54] + bl FUN_0204C104 + add r0, r5, #0x0 + bl FUN_02016A18 + ldr r0, [r4, #0x4c] + ldr r3, [r4, #0x5c] + mov r1, #0x4 + mov r2, #0x1 + bl FUN_0206EDD4 + add sp, #0x20 + pop {r4-r6, pc} +_0206D9A0: + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, [r4, #0x28] + mov r1, #0x6 + add r2, sp, #0x4 + bl FUN_02067830 +_0206D9AE: + add sp, #0x20 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206D9B4 +FUN_0206D9B4: ; 0x0206D9B4 + push {r4-r6, lr} + sub sp, #0xb8 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0201E6D8 + ldr r6, _0206DC28 ; =0x020F8354 + add r3, sp, #0x3c + mov r2, #0x5 +_0206D9C6: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206D9C6 + add r0, sp, #0x3c + bl FUN_0201E66C + mov r1, #0x6 + mov r2, #0x2 + mov r0, #0x0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x62 + mov r2, #0x2 + mov r0, #0x0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + mov r1, #0x19 + mov r2, #0x1 + mov r0, #0x0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x66 + mov r2, #0x2 + mov r0, #0x0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + ldr r6, _0206DC2C ; =0x020F8328 + add r3, sp, #0x2c + add r2, r3, #0x0 + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r6, _0206DC30 ; =0x020F837C + add r3, sp, #0x64 + mov r2, #0xa +_0206DA26: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206DA26 + ldr r0, [r6, #0x0] + mov r1, #0x1 + str r0, [r3, #0x0] + add r0, r4, #0x0 + add r2, sp, #0x64 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02018744 + add r0, r4, #0x0 + mov r1, #0x2 + add r2, sp, #0x80 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02018744 + add r0, r4, #0x0 + mov r1, #0x3 + add r2, sp, #0x9c + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02018744 + ldr r1, _0206DC34 ; =0x04000008 + mov r0, #0x3 + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x1 + orr r2, r0 + strh r2, [r1, #0x0] + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldr r6, _0206DC38 ; =0x020F8338 + add r3, sp, #0x10 + ldmia r6!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r6, #0x0] + mov r1, #0x4 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02018744 + ldr r0, [r5, #0x2c] + bl FUN_02025084 + add r6, r0, #0x0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [r5, #0x5c] + mov r1, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + add r2, r1, #0x0 + mov r3, #0xa + bl FUN_0200D274 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + ldr r0, [r5, #0x5c] + add r2, r4, #0x0 + str r0, [sp, #0xc] + mov r0, #0x76 + mov r3, #0x3 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r1, #0x1 + str r1, [sp, #0x8] + ldr r0, [r5, #0x5c] + add r2, r4, #0x0 + str r0, [sp, #0xc] + mov r0, #0x76 + mov r3, #0x3 + bl FUN_020068C8 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0x40 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [r5, #0x14] + ldr r3, [r5, #0x5c] + mov r1, #0x76 + mov r2, #0x8 + bl FUN_020030E8 + add r0, r6, #0x0 + bl FUN_0200CD64 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0xa0 + str r0, [sp, #0x8] + ldr r0, [r5, #0x14] + ldr r3, [r5, #0x5c] + mov r1, #0x26 + bl FUN_020030E8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0xb0 + str r0, [sp, #0x8] + ldr r0, [r5, #0x14] + ldr r3, [r5, #0x5c] + mov r1, #0xe + mov r2, #0x7 + bl FUN_020030E8 + ldr r0, [r5, #0x5c] + mov r1, #0x2 + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + mov r2, #0x1 + mov r3, #0x0 + bl FUN_0200CABC + bl FUN_0200CAFC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0x80 + str r0, [sp, #0x8] + ldr r0, [r5, #0x14] + ldr r3, [r5, #0x5c] + mov r1, #0x26 + bl FUN_020030E8 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + ldr r0, [r5, #0x5c] + mov r1, #0xa + str r0, [sp, #0xc] + mov r0, #0xc + add r2, r4, #0x0 + mov r3, #0x4 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + ldr r0, [r5, #0x5c] + mov r1, #0xb + str r0, [sp, #0xc] + mov r0, #0xc + add r2, r4, #0x0 + mov r3, #0x4 + bl FUN_020068C8 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + mov r1, #0xc + ldr r0, [r5, #0x14] + ldr r3, [r5, #0x5c] + add r2, r1, #0x0 + bl FUN_020030E8 + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r1, [r0, #0x0] + ldr r2, _0206DC3C ; =0xFFFF1FFF + add r3, r1, #0x0 + and r3, r2 + lsr r1, r0, #0xd + orr r1, r3 + ldr r3, _0206DC40 ; =0x04001000 + str r1, [r0, #0x0] + ldr r1, [r3, #0x0] + and r1, r2 + str r1, [r3, #0x0] + add r3, r0, #0x0 + add r3, #0x48 + ldrh r4, [r3, #0x0] + mov r2, #0x3f + mov r1, #0x1f + bic r4, r2 + orr r1, r4 + strh r1, [r3, #0x0] + add r0, #0x4a + ldrh r3, [r0, #0x0] + mov r1, #0x12 + bic r3, r2 + orr r1, r3 + strh r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0x0 + add r0, #0x72 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + add r0, #0x73 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0xff + add r0, #0x74 + strb r1, [r0, #0x0] + add r0, r5, #0x0 + mov r1, #0xa0 + add r0, #0x75 + strb r1, [r0, #0x0] + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + ldr r0, _0206DC44 ; =FUN_0206DD08 + add r1, r5, #0x0 + bl FUN_02015F10 + add sp, #0xb8 + pop {r4-r6, pc} + .balign 4 +_0206DC28: .word 0x020F8354 +_0206DC2C: .word 0x020F8328 +_0206DC30: .word 0x020F837C +_0206DC34: .word 0x04000008 +_0206DC38: .word 0x020F8338 +_0206DC3C: .word 0xFFFF1FFF +_0206DC40: .word 0x04001000 +_0206DC44: .word FUN_0206DD08 + + thumb_func_start FUN_0206DC48 +FUN_0206DC48: ; 0x0206DC48 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E6E4 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_020178A0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206DC80 +FUN_0206DC80: ; 0x0206DC80 + push {r3-r5, lr} + sub sp, #0x20 + add r4, r0, #0x0 + ldr r1, [r4, #0x28] + add r0, sp, #0x10 + mov r2, #0x2 + bl FUN_02068B68 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x18] + add r1, sp, #0x10 + mov r2, #0x80 + mov r3, #0x50 + bl FUN_020073A0 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x5c] + bl FUN_020669C0 + add r5, r0, #0x0 + ldr r0, [r4, #0x28] + add r1, r5, #0x0 + bl FUN_02069B88 + add r2, r4, #0x0 + add r0, r5, #0x0 + mov r1, #0x5 + add r2, #0x62 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + add r0, sp, #0x10 + add r1, r5, #0x0 + mov r2, #0x2 + bl FUN_02068B68 + add r0, r5, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x18] + add r1, sp, #0x10 + mov r2, #0x80 + mov r3, #0x50 + bl FUN_020073A0 + str r0, [r4, #0x20] + mov r1, #0xc + mov r2, #0x0 + bl FUN_02007558 + ldr r0, [r4, #0x20] + mov r1, #0xd + mov r2, #0x0 + bl FUN_02007558 + add sp, #0x20 + pop {r3-r5, pc} + + thumb_func_start FUN_0206DD08 +FUN_0206DD08: ; 0x0206DD08 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x75 + ldrb r2, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x73 + ldrb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x72 + ldrb r0, [r0, #0x0] + mov r3, #0xff + lsl r3, r3, #0x8 + lsl r0, r0, #0x8 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x74 + lsl r1, r1, #0x8 + and r1, r3 + ldrb r0, [r0, #0x0] + and r5, r3 + orr r1, r2 + orr r5, r0 + ldr r0, _0206DD60 ; =0x04000040 + strh r5, [r0, #0x0] + strh r1, [r0, #0x4] + ldr r0, [r4, #0x18] + bl FUN_020081C4 + bl FUN_0201C30C + ldr r0, [r4, #0x14] + bl FUN_0200372C + ldr r0, [r4, #0x0] + bl FUN_0201AB60 + ldr r3, _0206DD64 ; =0x027E0000 + ldr r1, _0206DD68 ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3-r5, pc} + nop +_0206DD60: .word 0x04000040 +_0206DD64: .word 0x027E0000 +_0206DD68: .word 0x00003FF8 + + thumb_func_start FUN_0206DD6C +FUN_0206DD6C: ; 0x0206DD6C + push {r4-r5, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r0, [r4, #0x8] + bl FUN_0200A914 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02016A18 + ldr r0, [r4, #0x4] + mov r1, #0xff + bl FUN_02019620 + ldr r0, [r4, #0x2c] + bl FUN_02024FF4 + mov r3, #0x0 + str r3, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _0206DDB0 ; =FUN_0206DDB4 + mov r1, #0x1 + str r0, [sp, #0x8] + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x10] + bl FUN_0201BD84 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_0206DDB0: .word FUN_0206DDB4 + + thumb_func_start FUN_0206DDB4 +FUN_0206DDB4: ; 0x0206DDB4 + push {r4, lr} + mov r4, #0x0 + cmp r1, #0x5 + bhi _0206DDFA + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206DDC8: ; jump table (using 16-bit offset) + .short _0206DDFA - _0206DDC8 - 2; case 0 + .short _0206DDD4 - _0206DDC8 - 2; case 1 + .short _0206DDDC - _0206DDC8 - 2; case 2 + .short _0206DDE4 - _0206DDC8 - 2; case 3 + .short _0206DDEC - _0206DDC8 - 2; case 4 + .short _0206DDF4 - _0206DDC8 - 2; case 5 +_0206DDD4: + bl FUN_02005514 + add r4, r0, #0x0 + b _0206DDFA +_0206DDDC: + bl FUN_02005CBC + add r4, r0, #0x0 + b _0206DDFA +_0206DDE4: + ldr r0, _0206DE00 ; =0x00000484 + bl FUN_02005C28 + b _0206DDFA +_0206DDEC: + ldr r0, _0206DE04 ; =0x000005E6 + bl FUN_020054C8 + b _0206DDFA +_0206DDF4: + ldr r0, _0206DE08 ; =0x00000483 + bl FUN_02005C28 +_0206DDFA: + add r0, r4, #0x0 + pop {r4, pc} + nop +_0206DE00: .word 0x00000484 +_0206DE04: .word 0x000005E6 +_0206DE08: .word 0x00000483 + + thumb_func_start FUN_0206DE0C +FUN_0206DE0C: ; 0x0206DE0C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0206DE20 ; =0x020FA6E8 + ldr r1, [r4, #0x3c] + ldr r2, [r4, #0x5c] + bl FUN_02006234 + str r0, [r4, #0x38] + pop {r4, pc} + nop +_0206DE20: .word 0x020FA6E8 + + thumb_func_start FUN_0206DE24 +FUN_0206DE24: ; 0x0206DE24 + push {r3, lr} + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _0206DE44 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0206DE48 ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + pop {r3, pc} + .balign 4 +_0206DE44: .word 0xFFFFE0FF +_0206DE48: .word 0x04001000 + + thumb_func_start FUN_0206DE4C +FUN_0206DE4C: ; 0x0206DE4C + push {r3, lr} + mov r0, #0x7 + str r0, [sp, #0x0] + ldr r0, _0206DE70 ; =0x04000050 + mov r1, #0x0 + mov r2, #0xe + mov r3, #0xb + blx G2x_SetBlendAlpha_ + mov r0, #0x8 + str r0, [sp, #0x0] + ldr r0, _0206DE74 ; =0x04001050 + mov r1, #0x0 + mov r2, #0xe + mov r3, #0x7 + blx G2x_SetBlendAlpha_ + pop {r3, pc} + .balign 4 +_0206DE70: .word 0x04000050 +_0206DE74: .word 0x04001050 + + thumb_func_start FUN_0206DE78 +FUN_0206DE78: ; 0x0206DE78 + push {r3, lr} + sub sp, #0x8 + mov r2, #0x2 + ldr r1, _0206DE90 ; =FUN_0206DE94 + str r2, [sp, #0x0] + str r1, [sp, #0x4] + mov r1, #0x0 + add r3, r1, #0x0 + bl FUN_02022318 + add sp, #0x8 + pop {r3, pc} + .balign 4 +_0206DE90: .word FUN_0206DE94 + + thumb_func_start FUN_0206DE94 +FUN_0206DE94: ; 0x0206DE94 + push {r3, lr} + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldr r0, _0206DF00 ; =0x04000008 + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strh r1, [r0, #0x0] + add r0, #0x58 + ldrh r2, [r0, #0x0] + ldr r1, _0206DF04 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0, #0x0] + add r2, r1, #0x2 + ldrh r3, [r0, #0x0] + add r1, r1, #0x2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0, #0x0] + ldrh r3, [r0, #0x0] + ldr r2, _0206DF08 ; =0x0000CFFB + and r3, r2 + strh r3, [r0, #0x0] + ldrh r3, [r0, #0x0] + sub r2, #0x1c + and r3, r1 + mov r1, #0x8 + orr r1, r3 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + and r1, r2 + strh r1, [r0, #0x0] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + blx G3X_SetFog + mov r0, #0x0 + ldr r2, _0206DF0C ; =0x00007FFF + add r1, r0, #0x0 + mov r3, #0x3f + str r0, [sp, #0x0] + blx G3X_SetClearColor + ldr r1, _0206DF10 ; =0xBFFF0000 + ldr r0, _0206DF14 ; =0x04000580 + str r1, [r0, #0x0] + pop {r3, pc} + .balign 4 +_0206DF00: .word 0x04000008 +_0206DF04: .word 0xFFFFCFFD +_0206DF08: .word 0x0000CFFB +_0206DF0C: .word 0x00007FFF +_0206DF10: .word 0xBFFF0000 +_0206DF14: .word 0x04000580 + + thumb_func_start FUN_0206DF18 +FUN_0206DF18: ; 0x0206DF18 + push {r3-r5, lr} + ldr r3, _0206DF50 ; =0x021064B8 + mov r0, #0x2 + mov r1, #0x0 + ldr r3, [r3, #0x0] + lsl r0, r0, #0xe + add r2, r1, #0x0 + blx r3 + ldr r3, _0206DF54 ; =0x021064C0 + mov r1, #0x0 + add r4, r0, #0x0 + ldr r3, [r3, #0x0] + mov r0, #0xa0 + add r2, r1, #0x0 + blx r3 + add r5, r0, #0x0 + cmp r4, #0x0 + bne _0206DF40 + bl ErrorHandling +_0206DF40: + cmp r5, #0x0 + bne _0206DF48 + bl ErrorHandling +_0206DF48: + bl FUN_02012CC8 + pop {r3-r5, pc} + nop +_0206DF50: .word 0x021064B8 +_0206DF54: .word 0x021064C0 + + thumb_func_start FUN_0206DF58 +FUN_0206DF58: ; 0x0206DF58 + push {r3, lr} + bl FUN_020222AC + bl FUN_02013364 + cmp r0, #0x0 + ble _0206DF6E + bl FUN_020222AC + blx FUN_020B02C8 +_0206DF6E: + bl FUN_02013388 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_020222B4 + pop {r3, pc} + + thumb_func_start FUN_0206DF7C +FUN_0206DF7C: ; 0x0206DF7C + push {r4, lr} + ldr r3, _0206DF94 ; =0x021064B8 + mov r2, #0x0 + ldr r3, [r3, #0x0] + blx r3 + add r4, r0, #0x0 + bl FUN_0201327C + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_0206DF94: .word 0x021064B8 + + thumb_func_start FUN_0206DF98 +FUN_0206DF98: ; 0x0206DF98 + push {r4, lr} + ldr r3, _0206DFB0 ; =0x021064C0 + mov r2, #0x0 + ldr r3, [r3, #0x0] + blx r3 + add r4, r0, #0x0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_0206DFB0: .word 0x021064C0 + + thumb_func_start FUN_0206DFB4 +FUN_0206DFB4: ; 0x0206DFB4 + push {r4, lr} + sub sp, #0x8 + mov r1, #0x12 + lsl r1, r1, #0xa + add r4, r0, #0x0 + bl FUN_02016998 + add r2, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r3, #0x12 + ldr r0, _0206DFF4 ; =FUN_0206DF7C + ldr r1, _0206DFF8 ; =FUN_0206DF98 + lsl r3, r3, #0xa + str r4, [sp, #0x4] + bl FUN_02012CDC + add r4, r0, #0x0 + bl FUN_0201343C + add r2, r0, #0x0 + beq _0206DFEC + mov r0, #0x1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 +_0206DFEC: + add r0, r4, #0x0 + add sp, #0x8 + pop {r4, pc} + nop +_0206DFF4: .word FUN_0206DF7C +_0206DFF8: .word FUN_0206DF98 + + thumb_func_start FUN_0206DFFC +FUN_0206DFFC: ; 0x0206DFFC + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_0206DFB4 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, r5, #0x0 + bl FUN_0201318C + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0xa + mov r3, #0x1 + bl FUN_02013194 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0206E024 +FUN_0206E024: ; 0x0206E024 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020133E8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02012DE4 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + + thumb_func_start FUN_0206E03C +FUN_0206E03C: ; 0x0206E03C + push {r3} + sub sp, #0xc + add r1, sp, #0x0 + mov r2, #0x0 + str r2, [r1, #0x0] + str r2, [r1, #0x4] + str r2, [r1, #0x8] + mov r1, #0x56 + lsl r1, r1, #0x4 + str r2, [sp, #0x0] + str r2, [sp, #0x8] + str r1, [sp, #0x4] + ldr r1, [r0, #0x20] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x4] + add r1, r2, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x20] + ldr r2, [sp, #0x4] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r1, [r0, #0x20] + ldr r2, [sp, #0x8] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0xc] + add r1, r2, r1 + str r1, [r0, #0x30] + add sp, #0xc + pop {r3} + bx lr + + thumb_func_start FUN_0206E07C +FUN_0206E07C: ; 0x0206E07C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0x0 + bne _0206E090 + bl ErrorHandling +_0206E090: + ldr r0, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r1, #0x7c + str r0, [r4, #0x0] + str r2, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_0206DFFC + mov r1, #0x1 + str r0, [r4, #0xc] + bl FUN_02013440 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_0206E0AC +FUN_0206E0AC: ; 0x0206E0AC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r2, _0206E0C4 ; =FUN_0206E03C + add r3, r4, #0x0 + bl FUN_020133AC + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_02013440 + pop {r4, pc} + .balign 4 +_0206E0C4: .word FUN_0206E03C + + thumb_func_start FUN_0206E0C8 +FUN_0206E0C8: ; 0x0206E0C8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020133C8 + cmp r0, #0x0 + beq _0206E0D8 + mov r0, #0x1 + pop {r3, pc} +_0206E0D8: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0206E0DC +FUN_0206E0DC: ; 0x0206E0DC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + bl FUN_0206E024 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206E0F0 +FUN_0206E0F0: ; 0x0206E0F0 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x17 + blo _0206E0FC + bl ErrorHandling +_0206E0FC: + ldr r0, _0206E104 ; =0x020F83E0 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r4, pc} + .balign 4 +_0206E104: .word 0x020F83E0 + + thumb_func_start FUN_0206E108 +FUN_0206E108: ; 0x0206E108 + mov r0, #0x26 + bx lr + + thumb_func_start FUN_0206E10C +FUN_0206E10C: ; 0x0206E10C + mov r0, #0xb2 + bx lr + + thumb_func_start FUN_0206E110 +FUN_0206E110: ; 0x0206E110 + mov r0, #0xb3 + bx lr + + thumb_func_start FUN_0206E114 +FUN_0206E114: ; 0x0206E114 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x17 + blo _0206E120 + bl ErrorHandling +_0206E120: + ldr r0, _0206E128 ; =0x020F843C + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_0206E128: .word 0x020F843C + + thumb_func_start FUN_0206E12C +FUN_0206E12C: ; 0x0206E12C + mov r0, #0x1b + bx lr + + thumb_func_start FUN_0206E130 +FUN_0206E130: ; 0x0206E130 + push {r3-r7, lr} + sub sp, #0x10 + add r7, r3, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0206E12C + str r0, [sp, #0xc] + add r0, r7, #0x0 + bl FUN_0206E0F0 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, [sp, #0x28] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r2, [sp, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0200C00C + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206E164 +FUN_0206E164: ; 0x0206E164 + push {r4-r7, lr} + sub sp, #0x14 + add r6, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0206E12C + str r0, [sp, #0x10] + bl FUN_0206E108 + add r3, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x3 + str r0, [sp, #0x4] + str r5, [sp, #0x8] + ldr r2, [sp, #0x10] + add r0, r6, #0x0 + add r1, r7, #0x0 + str r4, [sp, #0xc] + bl FUN_0200C06C + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0206E198 +FUN_0206E198: ; 0x0206E198 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x18] + bl FUN_0206E12C + add r4, r0, #0x0 + bl FUN_0206E108 + str r4, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + mov r0, #0x3 + str r0, [sp, #0xc] + ldr r0, [sp, #0x30] + ldr r3, [sp, #0x18] + str r0, [sp, #0x10] + ldr r0, [sp, #0x34] + add r1, r6, #0x0 + str r0, [sp, #0x14] + add r0, r5, #0x0 + add r2, r7, #0x0 + bl FUN_0200C0DC + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0206E1D4 +FUN_0206E1D4: ; 0x0206E1D4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + bl FUN_0206E12C + str r0, [sp, #0x8] + bl FUN_0206E10C + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r2, [sp, #0x8] + add r0, r5, #0x0 + add r1, r4, #0x0 + str r6, [sp, #0x4] + bl FUN_0200C124 + bl FUN_0206E12C + add r6, r0, #0x0 + bl FUN_0206E110 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + str r7, [sp, #0x4] + bl FUN_0200C13C + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0206E21C +FUN_0206E21C: ; 0x0206E21C + ldr r3, _0206E220 ; =FUN_0200C358 + bx r3 + .balign 4 +_0206E220: .word FUN_0200C358 + + thumb_func_start FUN_0206E224 +FUN_0206E224: ; 0x0206E224 + ldr r3, _0206E228 ; =FUN_0200C368 + bx r3 + .balign 4 +_0206E228: .word FUN_0200C368 + + thumb_func_start FUN_0206E22C +FUN_0206E22C: ; 0x0206E22C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_0200C378 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200C388 + pop {r3-r5, pc} + + thumb_func_start FUN_0206E240 +FUN_0206E240: ; 0x0206E240 + push {r4-r7, lr} + sub sp, #0x34 + add r6, r3, #0x0 + add r4, r0, #0x0 + add r7, r1, #0x0 + add r5, sp, #0x0 + mov r3, #0x6 +_0206E24E: + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + sub r3, r3, #0x1 + bne _0206E24E + ldr r0, [r6, #0x0] + str r0, [r5, #0x0] + add r0, r2, #0x0 + bl FUN_0206E114 + str r0, [sp, #0xc] + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x0 + bl FUN_0200C154 + add sp, #0x34 + pop {r4-r7, pc} + + thumb_func_start FUN_0206E270 +FUN_0206E270: ; 0x0206E270 + ldr r3, _0206E274 ; =FUN_0200C3DC + bx r3 + .balign 4 +_0206E274: .word FUN_0200C3DC + + thumb_func_start FUN_0206E278 +FUN_0206E278: ; 0x0206E278 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x3 + blo _0206E284 + bl ErrorHandling +_0206E284: + ldr r0, _0206E28C ; =0x020F83D4 + lsl r1, r4, #0x2 + ldr r0, [r0, r1] + pop {r4, pc} + .balign 4 +_0206E28C: .word 0x020F83D4 + + thumb_func_start FUN_0206E290 +FUN_0206E290: ; 0x0206E290 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x3 + blo _0206E29C + bl ErrorHandling +_0206E29C: + ldr r0, _0206E2A4 ; =0x020F83D0 + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_0206E2A4: .word 0x020F83D0 + + thumb_func_start FUN_0206E2A8 +FUN_0206E2A8: ; 0x0206E2A8 + mov r0, #0x1b + bx lr + + thumb_func_start FUN_0206E2AC +FUN_0206E2AC: ; 0x0206E2AC + push {r3-r7, lr} + sub sp, #0x10 + add r7, r3, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + bl FUN_0206E2A8 + str r0, [sp, #0xc] + add r0, r7, #0x0 + bl FUN_0206E278 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, [sp, #0x28] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r2, [sp, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0200C00C + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206E2E0 +FUN_0206E2E0: ; 0x0206E2E0 + ldr r3, _0206E2E4 ; =FUN_0200C358 + bx r3 + .balign 4 +_0206E2E4: .word FUN_0200C358 + + thumb_func_start FUN_0206E2E8 +FUN_0206E2E8: ; 0x0206E2E8 + ldr r3, _0206E2EC ; =FUN_0200C3DC + bx r3 + .balign 4 +_0206E2EC: .word FUN_0200C3DC + + thumb_func_start FUN_0206E2F0 +FUN_0206E2F0: ; 0x0206E2F0 + push {r4, lr} + mov r1, #0x78 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x78 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206E308 +FUN_0206E308: ; 0x0206E308 + mov r0, #0x78 + bx lr + + thumb_func_start FUN_0206E30C +FUN_0206E30C: ; 0x0206E30C + add r0, #0x65 + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206E314 +FUN_0206E314: ; 0x0206E314 + push {r4-r6, lr} + add r4, r1, #0x0 + add r1, r2, #0x0 + add r5, r0, #0x0 + add r6, r3, #0x0 + bl FUN_0206E30C + str r4, [r5, #0x0] + str r6, [r5, #0x6c] + mov r0, #0x0 + add r5, #0x66 + strh r0, [r5, #0x0] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206E330 +FUN_0206E330: ; 0x0206E330 + push {r3-r4} + mov r4, #0xc + mul r4, r3 + add r0, r0, r4 + str r1, [r0, #0x4] + strb r2, [r0, #0xc] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0206E340 +FUN_0206E340: ; 0x0206E340 + add r1, r0, #0x0 + add r1, #0x76 + ldrh r2, [r1, #0x0] + mov r1, #0x1 + add r0, #0x76 + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strh r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0206E354 +FUN_0206E354: ; 0x0206E354 + str r1, [r0, #0x70] + bx lr + + thumb_func_start FUN_0206E358 +FUN_0206E358: ; 0x0206E358 + add r0, #0x74 + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206E360 +FUN_0206E360: ; 0x0206E360 + add r2, r0, #0x0 + add r2, #0x76 + ldrh r3, [r2, #0x0] + ldr r2, _0206E378 ; =0xFFFF0001 + lsl r1, r1, #0x11 + and r2, r3 + lsr r1, r1, #0x10 + orr r1, r2 + add r0, #0x76 + strh r1, [r0, #0x0] + bx lr + nop +_0206E378: .word 0xFFFF0001 + + thumb_func_start FUN_0206E37C +FUN_0206E37C: ; 0x0206E37C + add r0, #0x66 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206E384 +FUN_0206E384: ; 0x0206E384 + add r0, #0x68 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206E38C +FUN_0206E38C: ; 0x0206E38C + add r0, #0x74 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206E394 +FUN_0206E394: ; 0x0206E394 + add r0, #0x75 + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_0206E39C +FUN_0206E39C: ; 0x0206E39C + push {r3, lr} + bl FUN_0202390C + bl FUN_02028930 + pop {r3, pc} + + thumb_func_start FUN_0206E3A8 +FUN_0206E3A8: ; 0x0206E3A8 + push {r4-r6, lr} + bl FUN_02029C80 + add r6, r0, #0x0 + mov r5, #0x0 + mov r4, #0x1 +_0206E3B4: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02029E2C + add r4, r4, #0x1 + add r5, r5, r0 + cmp r4, #0x50 + bls _0206E3B4 + add r0, r5, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_0206E3C8 +FUN_0206E3C8: ; 0x0206E3C8 + push {r3, lr} + bl FUN_02027E24 + bl FUN_0202708C + bl FUN_02027168 + pop {r3, pc} + + thumb_func_start FUN_0206E3D8 +FUN_0206E3D8: ; 0x0206E3D8 + push {r3, lr} + bl FUN_02027E24 + bl FUN_0202708C + bl FUN_02027184 + pop {r3, pc} + + thumb_func_start FUN_0206E3E8 +FUN_0206E3E8: ; 0x0206E3E8 + push {r3, lr} + bl FUN_0202A8D8 + mov r1, #0x0 + add r2, r1, #0x0 + bl FUN_0202A3B4 + pop {r3, pc} + + thumb_func_start FUN_0206E3F8 +FUN_0206E3F8: ; 0x0206E3F8 + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + str r1, [sp, #0x8] + add r5, r2, #0x0 + add r4, r3, #0x0 + mov r0, #0x0 + mov r1, #0x1a + mov r2, #0x7 + bl FUN_0200A86C + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0200AA80 + add r4, r0, #0x0 + cmp r5, #0x0 + bne _0206E428 + add r0, r6, #0x0 + mov r1, #0x63 + bl FUN_0200A914 + add r5, r0, #0x0 + b _0206E4FA +_0206E428: + mov r1, #0x1b + lsl r1, r1, #0x4 + cmp r5, r1 + bne _0206E454 + add r0, r6, #0x0 + mov r1, #0x61 + bl FUN_0200A914 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0206E3E8 + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r3, #0x4 + bl FUN_0200AD38 + b _0206E4FA +_0206E454: + add r2, r1, #0x2 + cmp r5, r2 + bne _0206E47E + add r0, r6, #0x0 + mov r1, #0x5c + bl FUN_0200A914 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0206E3A8 + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r3, #0x4 + bl FUN_0200AD38 + b _0206E4FA +_0206E47E: + add r2, r1, #0x3 + cmp r5, r2 + bne _0206E4C0 + add r0, r6, #0x0 + mov r1, #0x5d + bl FUN_0200A914 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0206E3C8 + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r3, #0x3 + bl FUN_0200AD38 + add r0, r7, #0x0 + bl FUN_0206E3D8 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r1, #0x1 + add r0, r4, #0x0 + mov r3, #0x2 + str r1, [sp, #0x4] + bl FUN_0200AD38 + b _0206E4FA +_0206E4C0: + add r1, #0xc + cmp r5, r1 + bne _0206E4EA + add r0, r6, #0x0 + mov r1, #0x39 + bl FUN_0200A914 + add r5, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0206E39C + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r3, #0x5 + bl FUN_0200AD38 + b _0206E4FA +_0206E4EA: + bl FUN_0200AB18 + add r0, r6, #0x0 + bl FUN_0200A8B8 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0206E4FA: + ldr r1, [sp, #0x8] + add r0, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_0200AB18 + add r0, r6, #0x0 + bl FUN_0200A8B8 + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0206E51C +FUN_0206E51C: ; 0x0206E51C + push {r3-r7, lr} + add r5, r1, #0x0 + str r0, [sp, #0x0] + ldr r4, [sp, #0x18] + cmp r3, #0x1 + beq _0206E52E + cmp r3, #0x2 + beq _0206E54C + b _0206E56A +_0206E52E: + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0x7 + add r3, r4, #0x0 + bl FUN_0200A86C + add r4, r0, #0x0 + mov r1, #0x38 + add r2, r5, #0x0 + bl FUN_0200A8E0 + add r0, r4, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} +_0206E54C: + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0x7 + add r3, r4, #0x0 + bl FUN_0200A86C + add r4, r0, #0x0 + mov r1, #0x6f + add r2, r5, #0x0 + bl FUN_0200A8E0 + add r0, r4, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} +_0206E56A: + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc7 + add r3, r4, #0x0 + bl FUN_0200A86C + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0200AA80 + add r4, r0, #0x0 + add r0, r7, #0x0 + mov r1, #0x24 + bl FUN_0200A914 + add r6, r0, #0x0 + ldr r2, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200ABC0 + add r0, r4, #0x0 + add r1, r5, #0x0 + add r2, r6, #0x0 + bl FUN_0200B7B8 + add r0, r6, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_0200AB18 + add r0, r7, #0x0 + bl FUN_0200A8B8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0206E5B4 +FUN_0206E5B4: ; 0x0206E5B4 + push {r3-r6} + add r3, r0, #0x0 + add r0, r2, #0x0 + cmp r1, r0 + beq _0206E63A + lsl r2, r1, #0x2 + ldrh r4, [r3, r2] + add r5, r3, r2 + add r2, sp, #0x0 + strh r4, [r2, #0x0] + ldrh r4, [r5, #0x2] + strh r4, [r2, #0x2] + cmp r0, r1 + bls _0206E600 + sub r0, r0, #0x1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r1, r1, #0x10 + lsl r2, r0, #0x10 + asr r1, r1, #0x10 + asr r5, r2, #0x10 + cmp r1, r5 + bge _0206E62C + lsl r2, r1, #0x2 + add r2, r3, r2 + add r4, r2, #0x0 +_0206E5E8: + ldrh r6, [r2, #0x4] + add r1, r1, #0x1 + lsl r1, r1, #0x10 + strh r6, [r4, #0x0] + ldrh r6, [r2, #0x6] + asr r1, r1, #0x10 + add r2, r2, #0x4 + strh r6, [r4, #0x2] + add r4, r4, #0x4 + cmp r1, r5 + blt _0206E5E8 + b _0206E62C +_0206E600: + lsl r1, r1, #0x10 + asr r5, r1, #0x10 + lsl r1, r0, #0x10 + asr r4, r1, #0x10 + cmp r5, r4 + ble _0206E62C + lsl r1, r5, #0x2 + add r1, r3, r1 + add r2, r1, #0x0 +_0206E612: + sub r6, r1, #0x4 + ldrh r6, [r6, #0x0] + sub r5, r5, #0x1 + lsl r5, r5, #0x10 + strh r6, [r2, #0x0] + sub r6, r1, #0x2 + ldrh r6, [r6, #0x0] + asr r5, r5, #0x10 + sub r1, r1, #0x4 + strh r6, [r2, #0x2] + sub r2, r2, #0x4 + cmp r5, r4 + bgt _0206E612 +_0206E62C: + lsl r4, r0, #0x2 + add r0, sp, #0x0 + ldrh r1, [r0, #0x0] + add r2, r3, r4 + strh r1, [r3, r4] + ldrh r0, [r0, #0x2] + strh r0, [r2, #0x2] +_0206E63A: + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_0206E640 +FUN_0206E640: ; 0x0206E640 + cmp r1, #0x3 + bhi _0206E6B2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206E650: ; jump table (using 16-bit offset) + .short _0206E658 - _0206E650 - 2; case 0 + .short _0206E66A - _0206E650 - 2; case 1 + .short _0206E684 - _0206E650 - 2; case 2 + .short _0206E6A0 - _0206E650 - 2; case 3 +_0206E658: + cmp r0, #0x0 + beq _0206E6B2 + ldr r1, _0206E6B8 ; =0x0000FFFF + cmp r0, r1 + beq _0206E6B2 + lsl r1, r0, #0x3 + ldr r0, _0206E6BC ; =0x020F85B4 + ldrh r0, [r0, r1] + bx lr +_0206E66A: + cmp r0, #0x0 + bne _0206E672 + ldr r0, _0206E6C0 ; =0x000002BB + bx lr +_0206E672: + ldr r1, _0206E6B8 ; =0x0000FFFF + cmp r0, r1 + bne _0206E67C + ldr r0, _0206E6C4 ; =0x000002BD + bx lr +_0206E67C: + lsl r1, r0, #0x3 + ldr r0, _0206E6C8 ; =0x020F85B6 + ldrh r0, [r0, r1] + bx lr +_0206E684: + cmp r0, #0x0 + bne _0206E68E + mov r0, #0xaf + lsl r0, r0, #0x2 + bx lr +_0206E68E: + ldr r1, _0206E6B8 ; =0x0000FFFF + cmp r0, r1 + bne _0206E698 + ldr r0, _0206E6CC ; =0x000002BE + bx lr +_0206E698: + lsl r1, r0, #0x3 + ldr r0, _0206E6D0 ; =0x020F85B8 + ldrh r0, [r0, r1] + bx lr +_0206E6A0: + cmp r0, #0x0 + beq _0206E6B2 + ldr r1, _0206E6B8 ; =0x0000FFFF + cmp r0, r1 + beq _0206E6B2 + lsl r1, r0, #0x3 + ldr r0, _0206E6D4 ; =0x020F85BA + ldrh r0, [r0, r1] + bx lr +_0206E6B2: + mov r0, #0x0 + bx lr + nop +_0206E6B8: .word 0x0000FFFF +_0206E6BC: .word 0x020F85B4 +_0206E6C0: .word 0x000002BB +_0206E6C4: .word 0x000002BD +_0206E6C8: .word 0x020F85B6 +_0206E6CC: .word 0x000002BE +_0206E6D0: .word 0x020F85B8 +_0206E6D4: .word 0x020F85BA + + thumb_func_start FUN_0206E6D8 +FUN_0206E6D8: ; 0x0206E6D8 + push {r3-r4} + mov r2, #0x1d + ldr r3, _0206E704 ; =0x020F85B4 + mov r4, #0x1 + lsl r2, r2, #0x4 +_0206E6E2: + lsl r1, r4, #0x3 + add r1, r3, r1 + ldrh r1, [r1, #0x6] + cmp r0, r1 + bne _0206E6F2 + add r0, r4, #0x0 + pop {r3-r4} + bx lr +_0206E6F2: + add r1, r4, #0x1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r4, r2 + bls _0206E6E2 + mov r0, #0x0 + pop {r3-r4} + bx lr + nop +_0206E704: .word 0x020F85B4 + + thumb_func_start FUN_0206E708 +FUN_0206E708: ; 0x0206E708 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_0206E70C +FUN_0206E70C: ; 0x0206E70C + mov r0, #0x0 + bx lr + + thumb_func_start FUN_0206E710 +FUN_0206E710: ; 0x0206E710 + push {r3, lr} + add r3, r0, #0x0 + mov r0, #0x1d + lsl r0, r0, #0x4 + cmp r3, r0 + bls _0206E71E + mov r3, #0x0 +_0206E71E: + cmp r1, #0x0 + beq _0206E72C + cmp r1, #0x1 + beq _0206E73A + cmp r1, #0x2 + beq _0206E748 + b _0206E756 +_0206E72C: + ldr r1, _0206E75C ; =0x020F85B4 + lsl r3, r3, #0x3 + ldrh r1, [r1, r3] + mov r0, #0xf + bl LoadFromNarc_2 + pop {r3, pc} +_0206E73A: + ldr r1, _0206E760 ; =0x020F85B6 + lsl r3, r3, #0x3 + ldrh r1, [r1, r3] + mov r0, #0x10 + bl LoadFromNarc_2 + pop {r3, pc} +_0206E748: + ldr r1, _0206E764 ; =0x020F85B8 + lsl r3, r3, #0x3 + ldrh r1, [r1, r3] + mov r0, #0x10 + bl LoadFromNarc_2 + pop {r3, pc} +_0206E756: + mov r0, #0x0 + pop {r3, pc} + nop +_0206E75C: .word 0x020F85B4 +_0206E760: .word 0x020F85B6 +_0206E764: .word 0x020F85B8 + + thumb_func_start FUN_0206E768 +FUN_0206E768: ; 0x0206E768 + push {r4-r6, lr} + add r3, r2, #0x0 + mov r2, #0x56 + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r6, r0, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_0200A8B8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206E790 +FUN_0206E790: ; 0x0206E790 + push {r4-r6, lr} + add r3, r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r2, _0206E7B4 ; =0x00000157 + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r6, r0, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_0200A8B8 + pop {r4-r6, pc} + .balign 4 +_0206E7B4: .word 0x00000157 + + thumb_func_start FUN_0206E7B8 +FUN_0206E7B8: ; 0x0206E7B8 + push {r4-r6, lr} + add r4, r1, #0x0 + mov r1, #0x0 + add r5, r2, #0x0 + bl FUN_0206E710 + add r6, r0, #0x0 + add r1, r4, #0x0 + bl FUN_0206E7DC + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02016A8C + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0206E7DC +FUN_0206E7DC: ; 0x0206E7DC + push {r3, lr} + cmp r1, #0xe + bhi _0206E85C + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0206E7EE: ; jump table (using 16-bit offset) + .short _0206E80C - _0206E7EE - 2; case 0 + .short _0206E810 - _0206E7EE - 2; case 1 + .short _0206E814 - _0206E7EE - 2; case 2 + .short _0206E818 - _0206E7EE - 2; case 3 + .short _0206E820 - _0206E7EE - 2; case 4 + .short _0206E828 - _0206E7EE - 2; case 5 + .short _0206E830 - _0206E7EE - 2; case 6 + .short _0206E834 - _0206E7EE - 2; case 7 + .short _0206E838 - _0206E7EE - 2; case 8 + .short _0206E83C - _0206E7EE - 2; case 9 + .short _0206E840 - _0206E7EE - 2; case 10 + .short _0206E844 - _0206E7EE - 2; case 11 + .short _0206E848 - _0206E7EE - 2; case 12 + .short _0206E850 - _0206E7EE - 2; case 13 + .short _0206E858 - _0206E7EE - 2; case 14 +_0206E80C: + ldrh r0, [r0, #0x0] + pop {r3, pc} +_0206E810: + ldrb r0, [r0, #0x2] + pop {r3, pc} +_0206E814: + ldrb r0, [r0, #0x3] + pop {r3, pc} +_0206E818: + ldrh r0, [r0, #0x8] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + pop {r3, pc} +_0206E820: + ldrh r0, [r0, #0x8] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + pop {r3, pc} +_0206E828: + ldrh r0, [r0, #0x8] + lsl r0, r0, #0x15 + lsr r0, r0, #0x1c + pop {r3, pc} +_0206E830: + ldrb r0, [r0, #0xa] + pop {r3, pc} +_0206E834: + ldrb r0, [r0, #0xb] + pop {r3, pc} +_0206E838: + ldrb r0, [r0, #0x4] + pop {r3, pc} +_0206E83C: + ldrb r0, [r0, #0x5] + pop {r3, pc} +_0206E840: + ldrb r0, [r0, #0x6] + pop {r3, pc} +_0206E844: + ldrb r0, [r0, #0x7] + pop {r3, pc} +_0206E848: + ldrh r0, [r0, #0x8] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1b + pop {r3, pc} +_0206E850: + ldrh r0, [r0, #0x8] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1b + pop {r3, pc} +_0206E858: + ldrb r0, [r0, #0xc] + pop {r3, pc} +_0206E85C: + ldrb r2, [r0, #0xc] + cmp r2, #0x0 + beq _0206E868 + cmp r2, #0x1 + beq _0206E86C + b _0206E874 +_0206E868: + ldrb r0, [r0, #0xe] + pop {r3, pc} +_0206E86C: + add r0, #0xe + bl FUN_0206E878 + pop {r3, pc} +_0206E874: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_0206E878 +FUN_0206E878: ; 0x0206E878 + sub r1, #0xf + cmp r1, #0x2b + bls _0206E880 + b _0206EA2A +_0206E880: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206E88C: ; jump table (using 16-bit offset) + .short _0206E8E4 - _0206E88C - 2; case 0 + .short _0206E8EC - _0206E88C - 2; case 1 + .short _0206E8F4 - _0206E88C - 2; case 2 + .short _0206E8FC - _0206E88C - 2; case 3 + .short _0206E904 - _0206E88C - 2; case 4 + .short _0206E90C - _0206E88C - 2; case 5 + .short _0206E914 - _0206E88C - 2; case 6 + .short _0206E91C - _0206E88C - 2; case 7 + .short _0206E924 - _0206E88C - 2; case 8 + .short _0206E92C - _0206E88C - 2; case 9 + .short _0206E934 - _0206E88C - 2; case 10 + .short _0206E93C - _0206E88C - 2; case 11 + .short _0206E944 - _0206E88C - 2; case 12 + .short _0206E94C - _0206E88C - 2; case 13 + .short _0206E954 - _0206E88C - 2; case 14 + .short _0206E95C - _0206E88C - 2; case 15 + .short _0206E964 - _0206E88C - 2; case 16 + .short _0206E96C - _0206E88C - 2; case 17 + .short _0206E974 - _0206E88C - 2; case 18 + .short _0206E97C - _0206E88C - 2; case 19 + .short _0206E984 - _0206E88C - 2; case 20 + .short _0206E98C - _0206E88C - 2; case 21 + .short _0206E994 - _0206E88C - 2; case 22 + .short _0206E99C - _0206E88C - 2; case 23 + .short _0206E9A4 - _0206E88C - 2; case 24 + .short _0206E9AC - _0206E88C - 2; case 25 + .short _0206E9B4 - _0206E88C - 2; case 26 + .short _0206E9BC - _0206E88C - 2; case 27 + .short _0206E9C4 - _0206E88C - 2; case 28 + .short _0206E9CC - _0206E88C - 2; case 29 + .short _0206E9D4 - _0206E88C - 2; case 30 + .short _0206E9DC - _0206E88C - 2; case 31 + .short _0206E9E4 - _0206E88C - 2; case 32 + .short _0206E9EC - _0206E88C - 2; case 33 + .short _0206E9F2 - _0206E88C - 2; case 34 + .short _0206E9F8 - _0206E88C - 2; case 35 + .short _0206E9FE - _0206E88C - 2; case 36 + .short _0206EA04 - _0206E88C - 2; case 37 + .short _0206EA0A - _0206E88C - 2; case 38 + .short _0206EA10 - _0206E88C - 2; case 39 + .short _0206EA14 - _0206E88C - 2; case 40 + .short _0206EA18 - _0206E88C - 2; case 41 + .short _0206EA1E - _0206E88C - 2; case 42 + .short _0206EA24 - _0206E88C - 2; case 43 +_0206E8E4: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr +_0206E8EC: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bx lr +_0206E8F4: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bx lr +_0206E8FC: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bx lr +_0206E904: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + bx lr +_0206E90C: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + bx lr +_0206E914: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + bx lr +_0206E91C: + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bx lr +_0206E924: + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr +_0206E92C: + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bx lr +_0206E934: + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bx lr +_0206E93C: + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bx lr +_0206E944: + ldrb r0, [r0, #0x1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + bx lr +_0206E94C: + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bx lr +_0206E954: + ldrb r0, [r0, #0x2] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + bx lr +_0206E95C: + ldrb r0, [r0, #0x3] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bx lr +_0206E964: + ldrb r0, [r0, #0x3] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + bx lr +_0206E96C: + ldrb r0, [r0, #0x4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bx lr +_0206E974: + ldrb r0, [r0, #0x4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + bx lr +_0206E97C: + ldrb r0, [r0, #0x4] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + bx lr +_0206E984: + ldrb r0, [r0, #0x4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bx lr +_0206E98C: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr +_0206E994: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bx lr +_0206E99C: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bx lr +_0206E9A4: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bx lr +_0206E9AC: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + bx lr +_0206E9B4: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + bx lr +_0206E9BC: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + bx lr +_0206E9C4: + ldrb r0, [r0, #0x5] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bx lr +_0206E9CC: + ldrb r0, [r0, #0x6] + lsl r0, r0, #0x1f + lsr r0, r0, #0x1f + bx lr +_0206E9D4: + ldrb r0, [r0, #0x6] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1f + bx lr +_0206E9DC: + ldrb r0, [r0, #0x6] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bx lr +_0206E9E4: + ldrb r0, [r0, #0x6] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bx lr +_0206E9EC: + mov r1, #0x7 + ldrsb r0, [r0, r1] + bx lr +_0206E9F2: + mov r1, #0x8 + ldrsb r0, [r0, r1] + bx lr +_0206E9F8: + mov r1, #0x9 + ldrsb r0, [r0, r1] + bx lr +_0206E9FE: + mov r1, #0xa + ldrsb r0, [r0, r1] + bx lr +_0206EA04: + mov r1, #0xb + ldrsb r0, [r0, r1] + bx lr +_0206EA0A: + mov r1, #0xc + ldrsb r0, [r0, r1] + bx lr +_0206EA10: + ldrb r0, [r0, #0xd] + bx lr +_0206EA14: + ldrb r0, [r0, #0xe] + bx lr +_0206EA18: + mov r1, #0xf + ldrsb r0, [r0, r1] + bx lr +_0206EA1E: + mov r1, #0x10 + ldrsb r0, [r0, r1] + bx lr +_0206EA24: + mov r1, #0x11 + ldrsb r0, [r0, r1] + bx lr +_0206EA2A: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_0206EA30 +FUN_0206EA30: ; 0x0206EA30 + mov r2, #0x52 + lsl r2, r2, #0x2 + cmp r0, r2 + blo _0206EA40 + add r1, r2, #0x0 + add r1, #0x63 + cmp r0, r1 + bls _0206EA44 +_0206EA40: + mov r0, #0x0 + bx lr +_0206EA44: + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r1, r0, #0xf + ldr r0, _0206EA50 ; =0x020F84EC + ldrh r0, [r0, r1] + bx lr + .balign 4 +_0206EA50: .word 0x020F84EC + + thumb_func_start FUN_0206EA54 +FUN_0206EA54: ; 0x0206EA54 + ldr r2, _0206EA78 ; =0x020F84EC + mov r3, #0x0 +_0206EA58: + lsl r1, r3, #0x1 + add r1, r2, r1 + add r1, #0xb8 + ldrh r1, [r1, #0x0] + cmp r0, r1 + bne _0206EA68 + mov r0, #0x1 + bx lr +_0206EA68: + add r1, r3, #0x1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0x8 + blo _0206EA58 + mov r0, #0x0 + bx lr + nop +_0206EA78: .word 0x020F84EC + + thumb_func_start FUN_0206EA7C +FUN_0206EA7C: ; 0x0206EA7C + mov r2, #0x52 + lsl r2, r2, #0x2 + cmp r0, r2 + blo _0206EA8C + add r1, r2, #0x0 + add r1, #0x63 + cmp r0, r1 + bls _0206EA90 +_0206EA8C: + mov r0, #0x0 + bx lr +_0206EA90: + sub r0, r0, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start FUN_0206EA98 +FUN_0206EA98: ; 0x0206EA98 + ldr r3, _0206EAB4 ; =0x020F8454 + mov r2, #0x0 +_0206EA9C: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _0206EAA6 + mov r0, #0x1 + bx lr +_0206EAA6: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0xc + blo _0206EA9C + mov r0, #0x0 + bx lr + nop +_0206EAB4: .word 0x020F8454 + + thumb_func_start FUN_0206EAB8 +FUN_0206EAB8: ; 0x0206EAB8 + ldr r3, _0206EAD4 ; =0x020F8454 + mov r2, #0x0 +_0206EABC: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _0206EAC8 + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + bx lr +_0206EAC8: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0xc + blo _0206EABC + mov r0, #0x0 + bx lr + .balign 4 +_0206EAD4: .word 0x020F8454 + + thumb_func_start FUN_0206EAD8 +FUN_0206EAD8: ; 0x0206EAD8 + cmp r0, #0xc + blo _0206EAE0 + mov r0, #0x0 + bx lr +_0206EAE0: + lsl r1, r0, #0x1 + ldr r0, _0206EAE8 ; =0x020F8454 + ldrh r0, [r0, r1] + bx lr + .balign 4 +_0206EAE8: .word 0x020F8454 + + thumb_func_start FUN_0206EAEC +FUN_0206EAEC: ; 0x0206EAEC + ldr r3, _0206EB08 ; =0x020F846C + mov r2, #0x0 +_0206EAF0: + ldrh r1, [r3, #0x0] + cmp r0, r1 + bne _0206EAFA + mov r0, #0x1 + bx lr +_0206EAFA: + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0x40 + blo _0206EAF0 + mov r0, #0x0 + bx lr + nop +_0206EB08: .word 0x020F846C + + thumb_func_start FUN_0206EB0C +FUN_0206EB0C: ; 0x0206EB0C + cmp r0, #0x95 + bhs _0206EB14 + mov r0, #0xff + bx lr +_0206EB14: + sub r0, #0x95 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start FUN_0206EB1C +FUN_0206EB1C: ; 0x0206EB1C + cmp r0, #0x40 + blo _0206EB24 + ldr r0, _0206EB2C ; =0x0000FFFF + bx lr +_0206EB24: + lsl r1, r0, #0x1 + ldr r0, _0206EB30 ; =0x020F846C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_0206EB2C: .word 0x0000FFFF +_0206EB30: .word 0x020F846C + + thumb_func_start FUN_0206EB34 +FUN_0206EB34: ; 0x0206EB34 + ldr r1, _0206EB4C ; =0x0000FFDE + add r0, r0, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x3 + bhi _0206EB44 + mov r0, #0x1 + b _0206EB46 +_0206EB44: + mov r0, #0x0 +_0206EB46: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + .balign 4 +_0206EB4C: .word 0x0000FFDE + + thumb_func_start FUN_0206EB50 +FUN_0206EB50: ; 0x0206EB50 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0x1d + lsl r0, r0, #0x4 + mov r1, #0x0 + bl FUN_0206E640 + mov r1, #0x24 + mul r1, r0 + str r1, [sp, #0x0] + mov r1, #0x0 + mov r0, #0xf + add r2, r4, #0x0 + add r3, r1, #0x0 + bl FUN_02006564 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_0206EB78 +FUN_0206EB78: ; 0x0206EB78 + mov r2, #0x24 + mul r2, r1 + add r0, r0, r2 + bx lr + + thumb_func_start FUN_0206EB80 +FUN_0206EB80: ; 0x0206EB80 + ldr r0, _0206EB84 ; =0x00000774 + bx lr + .balign 4 +_0206EB84: .word 0x00000774 + + thumb_func_start FUN_0206EB88 +FUN_0206EB88: ; 0x0206EB88 + push {r4, lr} + ldr r1, _0206EB9C ; =0x00000774 + bl FUN_02016998 + add r4, r0, #0x0 + bl FUN_0206EBA0 + add r0, r4, #0x0 + pop {r4, pc} + nop +_0206EB9C: .word 0x00000774 + + thumb_func_start FUN_0206EBA0 +FUN_0206EBA0: ; 0x0206EBA0 + ldr r3, _0206EBAC ; =MIi_CpuClear16 + add r1, r0, #0x0 + mov r0, #0x0 + ldr r2, _0206EBB0 ; =0x00000774 + bx r3 + nop +_0206EBAC: .word MIi_CpuClear16 +_0206EBB0: .word 0x00000774 + + thumb_func_start FUN_0206EBB4 +FUN_0206EBB4: ; 0x0206EBB4 + ldr r3, _0206EBBC ; =MI_CpuCopy8 + ldr r2, _0206EBC0 ; =0x00000774 + bx r3 + nop +_0206EBBC: .word MI_CpuCopy8 +_0206EBC0: .word 0x00000774 + + thumb_func_start FUN_0206EBC4 +FUN_0206EBC4: ; 0x0206EBC4 + mov r1, #0x77 + lsl r1, r1, #0x4 + ldr r0, [r0, r1] + bx lr + + thumb_func_start FUN_0206EBCC +FUN_0206EBCC: ; 0x0206EBCC + mov r2, #0x77 + lsl r2, r2, #0x4 + str r1, [r0, r2] + bx lr + + thumb_func_start FUN_0206EBD4 +FUN_0206EBD4: ; 0x0206EBD4 + push {r4-r6, lr} + add r5, r2, #0x0 + add r4, r0, #0x0 + add r0, r1, #0x0 + ldr r2, [sp, #0x10] + mov r1, #0x5 + add r6, r3, #0x0 + bl FUN_0206E7B8 + cmp r0, #0x7 + bhi _0206EC64 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206EBF6: ; jump table (using 16-bit offset) + .short _0206EC14 - _0206EBF6 - 2; case 0 + .short _0206EC28 - _0206EBF6 - 2; case 1 + .short _0206EC34 - _0206EBF6 - 2; case 2 + .short _0206EC58 - _0206EBF6 - 2; case 3 + .short _0206EC1C - _0206EBF6 - 2; case 4 + .short _0206EC4C - _0206EBF6 - 2; case 5 + .short _0206EC40 - _0206EBF6 - 2; case 6 + .short _0206EC06 - _0206EBF6 - 2; case 7 +_0206EC06: + mov r1, #0xa5 + lsl r1, r1, #0x2 + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0x32 + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC14: + str r4, [r5, #0x0] + mov r1, #0xa5 + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC1C: + ldr r1, _0206EC68 ; =0x000005BC + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0x40 + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC28: + ldr r1, _0206EC6C ; =0x0000051C + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0x28 + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC34: + ldr r1, _0206EC70 ; =0x000006BC + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0xf + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC40: + ldr r1, _0206EC74 ; =0x000006F8 + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0x1e + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC4C: + ldr r1, _0206EC78 ; =0x000004EC + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0xc + str r1, [r6, #0x0] + pop {r4-r6, pc} +_0206EC58: + mov r1, #0xd7 + lsl r1, r1, #0x2 + add r1, r4, r1 + str r1, [r5, #0x0] + mov r1, #0x64 + str r1, [r6, #0x0] +_0206EC64: + pop {r4-r6, pc} + nop +_0206EC68: .word 0x000005BC +_0206EC6C: .word 0x0000051C +_0206EC70: .word 0x000006BC +_0206EC74: .word 0x000006F8 +_0206EC78: .word 0x000004EC + + thumb_func_start FUN_0206EC7C +FUN_0206EC7C: ; 0x0206EC7C + push {r4-r7} + add r5, r1, #0x0 + mov r1, #0x0 + add r7, r0, #0x0 + add r4, r2, #0x0 + mov r12, r3 + mvn r1, r1 + mov r0, #0x0 + cmp r5, #0x0 + bls _0206ECCA + add r2, r7, #0x0 + add r3, r1, #0x0 +_0206EC94: + ldrh r6, [r2, #0x0] + cmp r4, r6 + bne _0206ECB2 + lsl r0, r0, #0x2 + add r0, r7, r0 + ldrh r2, [r0, #0x2] + mov r1, r12 + add r2, r1, r2 + add r1, sp, #0x0 + ldrh r1, [r1, #0x10] + cmp r2, r1 + ble _0206ECDC + mov r0, #0x0 + pop {r4-r7} + bx lr +_0206ECB2: + cmp r1, r3 + bne _0206ECC2 + cmp r6, #0x0 + bne _0206ECC2 + ldrh r6, [r2, #0x2] + cmp r6, #0x0 + bne _0206ECC2 + add r1, r0, #0x0 +_0206ECC2: + add r0, r0, #0x1 + add r2, r2, #0x4 + cmp r0, r5 + blo _0206EC94 +_0206ECCA: + mov r0, #0x0 + mvn r0, r0 + cmp r1, r0 + bne _0206ECD8 + mov r0, #0x0 + pop {r4-r7} + bx lr +_0206ECD8: + lsl r0, r1, #0x2 + add r0, r7, r0 +_0206ECDC: + pop {r4-r7} + bx lr + + thumb_func_start FUN_0206ECE0 +FUN_0206ECE0: ; 0x0206ECE0 + push {r4-r5, lr} + sub sp, #0xc + add r4, r2, #0x0 + str r3, [sp, #0x0] + add r2, sp, #0x8 + add r3, sp, #0x4 + add r5, r1, #0x0 + bl FUN_0206EBD4 + cmp r0, #0x3 + bne _0206ED0A + mov r0, #0x63 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + add r2, r5, #0x0 + add r3, r4, #0x0 + bl FUN_0206EC7C + add sp, #0xc + pop {r4-r5, pc} +_0206ED0A: + ldr r0, _0206ED20 ; =0x000003E7 + add r2, r5, #0x0 + str r0, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + add r3, r4, #0x0 + bl FUN_0206EC7C + add sp, #0xc + pop {r4-r5, pc} + nop +_0206ED20: .word 0x000003E7 + + thumb_func_start FUN_0206ED24 +FUN_0206ED24: ; 0x0206ED24 + push {r3, lr} + bl FUN_0206ECE0 + cmp r0, #0x0 + beq _0206ED32 + mov r0, #0x1 + pop {r3, pc} +_0206ED32: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0206ED38 +FUN_0206ED38: ; 0x0206ED38 + push {r4-r7, lr} + sub sp, #0xc + add r7, r0, #0x0 + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_0206ECE0 + str r0, [sp, #0x8] + cmp r0, #0x0 + bne _0206ED54 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0206ED54: + strh r5, [r0, #0x0] + ldr r1, [sp, #0x8] + add r2, sp, #0x8 + ldrh r0, [r1, #0x2] + add r3, sp, #0x4 + add r0, r0, r4 + strh r0, [r1, #0x2] + add r0, r7, #0x0 + add r1, r5, #0x0 + str r6, [sp, #0x0] + bl FUN_0206EBD4 + sub r0, r0, #0x3 + cmp r0, #0x1 + bhi _0206ED7A + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + bl FUN_0206EF94 +_0206ED7A: + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0206ED80 +FUN_0206ED80: ; 0x0206ED80 + push {r3-r6} + mov r5, #0x0 + cmp r1, #0x0 + bls _0206EDA8 + add r6, r0, #0x0 +_0206ED8A: + ldrh r4, [r6, #0x0] + cmp r2, r4 + bne _0206EDA0 + lsl r1, r5, #0x2 + add r0, r0, r1 + ldrh r1, [r0, #0x2] + cmp r1, r3 + bhs _0206EDAA + mov r0, #0x0 + pop {r3-r6} + bx lr +_0206EDA0: + add r5, r5, #0x1 + add r6, r6, #0x4 + cmp r5, r1 + blo _0206ED8A +_0206EDA8: + mov r0, #0x0 +_0206EDAA: + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_0206EDB0 +FUN_0206EDB0: ; 0x0206EDB0 + push {r4-r5, lr} + sub sp, #0xc + add r4, r2, #0x0 + str r3, [sp, #0x0] + add r2, sp, #0x8 + add r3, sp, #0x4 + add r5, r1, #0x0 + bl FUN_0206EBD4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + add r2, r5, #0x0 + add r3, r4, #0x0 + bl FUN_0206ED80 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 + + thumb_func_start FUN_0206EDD4 +FUN_0206EDD4: ; 0x0206EDD4 + push {r4-r7, lr} + sub sp, #0xc + add r6, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0206EDB0 + str r0, [sp, #0x8] + cmp r0, #0x0 + bne _0206EDF0 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_0206EDF0: + ldrh r1, [r0, #0x2] + sub r1, r1, r5 + strh r1, [r0, #0x2] + ldr r1, [sp, #0x8] + ldrh r0, [r1, #0x2] + cmp r0, #0x0 + bne _0206EE02 + mov r0, #0x0 + strh r0, [r1, #0x0] +_0206EE02: + str r4, [sp, #0x0] + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, sp, #0x8 + add r3, sp, #0x4 + bl FUN_0206EBD4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + bl FUN_0206EF48 + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0206EE20 +FUN_0206EE20: ; 0x0206EE20 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r3, #0x0 + bl FUN_0206ED80 + cmp r0, #0x0 + bne _0206EE34 + mov r0, #0x0 + pop {r4-r6, pc} +_0206EE34: + ldrh r1, [r0, #0x2] + sub r1, r1, r4 + strh r1, [r0, #0x2] + ldrh r1, [r0, #0x2] + cmp r1, #0x0 + bne _0206EE44 + mov r1, #0x0 + strh r1, [r0, #0x0] +_0206EE44: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_0206EF48 + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0206EE50 +FUN_0206EE50: ; 0x0206EE50 + push {r3, lr} + bl FUN_0206EDB0 + cmp r0, #0x0 + beq _0206EE5E + mov r0, #0x1 + pop {r3, pc} +_0206EE5E: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0206EE64 +FUN_0206EE64: ; 0x0206EE64 + cmp r1, #0x7 + bhi _0206EEC4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206EE74: ; jump table (using 16-bit offset) + .short _0206EE8E - _0206EE74 - 2; case 0 + .short _0206EE9A - _0206EE74 - 2; case 1 + .short _0206EEA2 - _0206EE74 - 2; case 2 + .short _0206EEBA - _0206EE74 - 2; case 3 + .short _0206EE92 - _0206EE74 - 2; case 4 + .short _0206EEB2 - _0206EE74 - 2; case 5 + .short _0206EEAA - _0206EE74 - 2; case 6 + .short _0206EE84 - _0206EE74 - 2; case 7 +_0206EE84: + mov r1, #0xa5 + lsl r1, r1, #0x2 + add r0, r0, r1 + mov r2, #0x32 + b _0206EEC8 +_0206EE8E: + mov r2, #0xa5 + b _0206EEC8 +_0206EE92: + ldr r1, _0206EEE4 ; =0x000005BC + mov r2, #0x40 + add r0, r0, r1 + b _0206EEC8 +_0206EE9A: + ldr r1, _0206EEE8 ; =0x0000051C + mov r2, #0x28 + add r0, r0, r1 + b _0206EEC8 +_0206EEA2: + ldr r1, _0206EEEC ; =0x000006BC + mov r2, #0xf + add r0, r0, r1 + b _0206EEC8 +_0206EEAA: + ldr r1, _0206EEF0 ; =0x000006F8 + mov r2, #0x1e + add r0, r0, r1 + b _0206EEC8 +_0206EEB2: + ldr r1, _0206EEF4 ; =0x000004EC + mov r2, #0xc + add r0, r0, r1 + b _0206EEC8 +_0206EEBA: + mov r1, #0xd7 + lsl r1, r1, #0x2 + add r0, r0, r1 + mov r2, #0x64 + b _0206EEC8 +_0206EEC4: + mov r0, #0x0 + bx lr +_0206EEC8: + mov r3, #0x0 + cmp r2, #0x0 + bls _0206EEE0 +_0206EECE: + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + beq _0206EED8 + mov r0, #0x1 + bx lr +_0206EED8: + add r3, r3, #0x1 + add r0, r0, #0x4 + cmp r3, r2 + blo _0206EECE +_0206EEE0: + mov r0, #0x0 + bx lr + .balign 4 +_0206EEE4: .word 0x000005BC +_0206EEE8: .word 0x0000051C +_0206EEEC: .word 0x000006BC +_0206EEF0: .word 0x000006F8 +_0206EEF4: .word 0x000004EC + + thumb_func_start FUN_0206EEF8 +FUN_0206EEF8: ; 0x0206EEF8 + push {r3, lr} + add r3, r2, #0x0 + mov r2, #0x1 + bl FUN_0206EDB0 + cmp r0, #0x0 + bne _0206EF0A + mov r0, #0x0 + pop {r3, pc} +_0206EF0A: + ldrh r0, [r0, #0x2] + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0206EF10 +FUN_0206EF10: ; 0x0206EF10 + push {r3, lr} + mov r3, #0x1 + bl FUN_0206ED80 + cmp r0, #0x0 + bne _0206EF20 + mov r0, #0x0 + pop {r3, pc} +_0206EF20: + ldrh r0, [r0, #0x2] + pop {r3, pc} + + thumb_func_start FUN_0206EF24 +FUN_0206EF24: ; 0x0206EF24 + push {r3} + sub sp, #0x4 + ldrh r3, [r0, #0x0] + add r2, sp, #0x0 + strh r3, [r2, #0x0] + ldrh r3, [r0, #0x2] + strh r3, [r2, #0x2] + ldrh r3, [r1, #0x0] + strh r3, [r0, #0x0] + ldrh r3, [r1, #0x2] + strh r3, [r0, #0x2] + ldrh r0, [r2, #0x0] + strh r0, [r1, #0x0] + ldrh r0, [r2, #0x2] + strh r0, [r1, #0x2] + add sp, #0x4 + pop {r3} + bx lr + + thumb_func_start FUN_0206EF48 +FUN_0206EF48: ; 0x0206EF48 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + mov r0, #0x0 + add r7, r1, #0x0 + str r0, [sp, #0x4] + sub r0, r7, #0x1 + str r0, [sp, #0x8] + beq _0206EF8E + ldr r4, [sp, #0x0] +_0206EF5C: + ldr r0, [sp, #0x4] + add r6, r0, #0x1 + cmp r6, r7 + bhs _0206EF80 + ldr r0, [sp, #0x0] + lsl r1, r6, #0x2 + add r5, r0, r1 +_0206EF6A: + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + bne _0206EF78 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0206EF24 +_0206EF78: + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, r7 + blo _0206EF6A +_0206EF80: + ldr r0, [sp, #0x4] + add r4, r4, #0x4 + add r1, r0, #0x1 + ldr r0, [sp, #0x8] + str r1, [sp, #0x4] + cmp r1, r0 + blo _0206EF5C +_0206EF8E: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_0206EF94 +FUN_0206EF94: ; 0x0206EF94 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + mov r0, #0x0 + add r7, r1, #0x0 + str r0, [sp, #0x4] + sub r0, r7, #0x1 + str r0, [sp, #0x8] + beq _0206EFE8 + ldr r4, [sp, #0x0] +_0206EFA8: + ldr r0, [sp, #0x4] + add r6, r0, #0x1 + cmp r6, r7 + bhs _0206EFDA + ldr r0, [sp, #0x0] + lsl r1, r6, #0x2 + add r5, r0, r1 +_0206EFB6: + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _0206EFCA + ldrh r0, [r5, #0x2] + cmp r0, #0x0 + beq _0206EFD2 + ldrh r1, [r4, #0x0] + ldrh r0, [r5, #0x0] + cmp r1, r0 + bls _0206EFD2 +_0206EFCA: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0206EF24 +_0206EFD2: + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, r7 + blo _0206EFB6 +_0206EFDA: + ldr r0, [sp, #0x4] + add r4, r4, #0x4 + add r1, r0, #0x1 + ldr r0, [sp, #0x8] + str r1, [sp, #0x4] + cmp r1, r0 + blo _0206EFA8 +_0206EFE8: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_0206EFEC +FUN_0206EFEC: ; 0x0206EFEC + push {r3-r7, lr} + add r5, r0, #0x0 + lsl r0, r2, #0x18 + add r7, r1, #0x0 + lsr r0, r0, #0x18 + bl FUN_0206E2F0 + add r6, r0, #0x0 + ldrb r0, [r7, #0x0] + mov r4, #0x0 + cmp r0, #0xff + beq _0206F0BE +_0206F004: + ldrb r0, [r7, r4] + cmp r0, #0x7 + bhi _0206F0B6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206F016: ; jump table (using 16-bit offset) + .short _0206F03A - _0206F016 - 2; case 0 + .short _0206F05C - _0206F016 - 2; case 1 + .short _0206F06E - _0206F016 - 2; case 2 + .short _0206F0A4 - _0206F016 - 2; case 3 + .short _0206F04A - _0206F016 - 2; case 4 + .short _0206F092 - _0206F016 - 2; case 5 + .short _0206F080 - _0206F016 - 2; case 6 + .short _0206F026 - _0206F016 - 2; case 7 +_0206F026: + mov r1, #0xa5 + lsl r1, r1, #0x2 + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x7 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F03A: + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F04A: + ldr r1, _0206F0C4 ; =0x000005BC + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x4 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F05C: + ldr r1, _0206F0C8 ; =0x0000051C + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x1 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F06E: + ldr r1, _0206F0CC ; =0x000006BC + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x2 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F080: + ldr r1, _0206F0D0 ; =0x000006F8 + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x6 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F092: + ldr r1, _0206F0D4 ; =0x000004EC + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x5 + lsr r3, r3, #0x18 + bl FUN_0206E330 + b _0206F0B6 +_0206F0A4: + mov r1, #0xd7 + lsl r1, r1, #0x2 + lsl r3, r4, #0x18 + add r0, r6, #0x0 + add r1, r5, r1 + mov r2, #0x3 + lsr r3, r3, #0x18 + bl FUN_0206E330 +_0206F0B6: + add r4, r4, #0x1 + ldrb r0, [r7, r4] + cmp r0, #0xff + bne _0206F004 +_0206F0BE: + add r0, r6, #0x0 + pop {r3-r7, pc} + nop +_0206F0C4: .word 0x000005BC +_0206F0C8: .word 0x0000051C +_0206F0CC: .word 0x000006BC +_0206F0D0: .word 0x000006F8 +_0206F0D4: .word 0x000004EC + + thumb_func_start FUN_0206F0D8 +FUN_0206F0D8: ; 0x0206F0D8 + cmp r1, #0x7 + bhi _0206F136 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206F0E8: ; jump table (using 16-bit offset) + .short _0206F102 - _0206F0E8 - 2; case 0 + .short _0206F10E - _0206F0E8 - 2; case 1 + .short _0206F116 - _0206F0E8 - 2; case 2 + .short _0206F12E - _0206F0E8 - 2; case 3 + .short _0206F106 - _0206F0E8 - 2; case 4 + .short _0206F126 - _0206F0E8 - 2; case 5 + .short _0206F11E - _0206F0E8 - 2; case 6 + .short _0206F0F8 - _0206F0E8 - 2; case 7 +_0206F0F8: + mov r1, #0xa5 + lsl r1, r1, #0x2 + add r0, r0, r1 + mov r3, #0x32 + b _0206F136 +_0206F102: + mov r3, #0xa5 + b _0206F136 +_0206F106: + ldr r1, _0206F144 ; =0x000005BC + mov r3, #0x40 + add r0, r0, r1 + b _0206F136 +_0206F10E: + ldr r1, _0206F148 ; =0x0000051C + mov r3, #0x28 + add r0, r0, r1 + b _0206F136 +_0206F116: + ldr r1, _0206F14C ; =0x000006BC + mov r3, #0xf + add r0, r0, r1 + b _0206F136 +_0206F11E: + ldr r1, _0206F150 ; =0x000006F8 + mov r3, #0x1e + add r0, r0, r1 + b _0206F136 +_0206F126: + ldr r1, _0206F154 ; =0x000004EC + mov r3, #0xc + add r0, r0, r1 + b _0206F136 +_0206F12E: + mov r1, #0xd7 + lsl r1, r1, #0x2 + add r0, r0, r1 + mov r3, #0x64 +_0206F136: + cmp r2, r3 + blo _0206F13E + mov r0, #0x0 + bx lr +_0206F13E: + lsl r1, r2, #0x2 + add r0, r0, r1 + bx lr + .balign 4 +_0206F144: .word 0x000005BC +_0206F148: .word 0x0000051C +_0206F14C: .word 0x000006BC +_0206F150: .word 0x000006F8 +_0206F154: .word 0x000004EC + + thumb_func_start FUN_0206F158 +FUN_0206F158: ; 0x0206F158 + ldr r3, _0206F160 ; =FUN_02022610 + mov r1, #0x3 + bx r3 + nop +_0206F160: .word FUN_02022610 + + thumb_func_start FUN_0206F164 +FUN_0206F164: ; 0x0206F164 + push {r4, lr} + mov r1, #0x24 + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r4, #0x0 + mov r2, #0x24 + blx MIi_CpuClear16 + add r0, r4, #0x0 + pop {r4, pc} + + thumb_func_start FUN_0206F17C +FUN_0206F17C: ; 0x0206F17C + push {r3-r4} + add r4, r0, r1 + ldrb r4, [r4, #0x8] + strb r4, [r2, #0x0] + ldrb r0, [r0, r1] + strb r0, [r3, #0x0] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0206F18C +FUN_0206F18C: ; 0x0206F18C + ldrh r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_0206F190 +FUN_0206F190: ; 0x0206F190 + push {r3-r4} + add r4, r0, r1 + strb r2, [r4, #0x8] + strb r3, [r0, r1] + pop {r3-r4} + bx lr + + thumb_func_start FUN_0206F19C +FUN_0206F19C: ; 0x0206F19C + strh r1, [r0, #0x10] + bx lr + + thumb_func_start FUN_0206F1A0 +FUN_0206F1A0: ; 0x0206F1A0 + add r1, r0, r1 + ldrb r0, [r1, #0x19] + strb r0, [r2, #0x0] + ldrb r0, [r1, #0x14] + strb r0, [r3, #0x0] + bx lr + + thumb_func_start FUN_0206F1AC +FUN_0206F1AC: ; 0x0206F1AC + ldrh r0, [r0, #0x1e] + bx lr + + thumb_func_start FUN_0206F1B0 +FUN_0206F1B0: ; 0x0206F1B0 + ldrh r0, [r0, #0x20] + bx lr + + thumb_func_start FUN_0206F1B4 +FUN_0206F1B4: ; 0x0206F1B4 + ldrh r0, [r0, #0x22] + bx lr + + thumb_func_start FUN_0206F1B8 +FUN_0206F1B8: ; 0x0206F1B8 + add r0, r0, r1 + strb r2, [r0, #0x19] + strb r3, [r0, #0x14] + bx lr + + thumb_func_start FUN_0206F1C0 +FUN_0206F1C0: ; 0x0206F1C0 + push {r4-r6, lr} + mov r4, #0x0 + add r5, r0, #0x0 + add r6, r4, #0x0 +_0206F1C8: + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + add r3, r6, #0x0 + bl FUN_0206F1B8 + add r4, r4, #0x1 + cmp r4, #0x5 + blo _0206F1C8 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0206F1EC + pop {r4-r6, pc} + + thumb_func_start FUN_0206F1E4 +FUN_0206F1E4: ; 0x0206F1E4 + strh r1, [r0, #0x1e] + strh r2, [r0, #0x20] + bx lr + .balign 4 + + thumb_func_start FUN_0206F1EC +FUN_0206F1EC: ; 0x0206F1EC + strh r1, [r0, #0x22] + bx lr + + thumb_func_start FUN_0206F1F0 +FUN_0206F1F0: ; 0x0206F1F0 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0xb + bls _0206F20A + b _0206F37C +_0206F20A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206F216: ; jump table (using 16-bit offset) + .short _0206F22E - _0206F216 - 2; case 0 + .short _0206F234 - _0206F216 - 2; case 1 + .short _0206F25A - _0206F216 - 2; case 2 + .short _0206F26C - _0206F216 - 2; case 3 + .short _0206F31A - _0206F216 - 2; case 4 + .short _0206F330 - _0206F216 - 2; case 5 + .short _0206F336 - _0206F216 - 2; case 6 + .short _0206F344 - _0206F216 - 2; case 7 + .short _0206F34A - _0206F216 - 2; case 8 + .short _0206F366 - _0206F216 - 2; case 9 + .short _0206F366 - _0206F216 - 2; case 10 + .short _0206F366 - _0206F216 - 2; case 11 +_0206F22E: + ldr r1, [r5, #0xc] + ldr r0, [r4, #0x0] + str r1, [r0, #0x0] +_0206F234: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x1 + bne _0206F24C + ldr r0, [r5, #0xc] + bl FUN_0203384C + cmp r0, #0x0 + bne _0206F24E +_0206F24C: + b _0206F380 +_0206F24E: + mov r0, #0xa + str r0, [r4, #0x4] + ldr r0, [r4, #0x8] + mov r1, #0x0 + strh r1, [r0, #0x0] + b _0206F380 +_0206F25A: + ldr r1, _0206F384 ; =0x020F943C + ldr r2, [r4, #0x0] + add r0, r6, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206F380 +_0206F26C: + ldr r0, [r5, #0xc] + bl FUN_0203384C + cmp r0, #0x0 + beq _0206F280 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F304 +_0206F280: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0xa + bhi _0206F380 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0206F294: ; jump table (using 16-bit offset) + .short _0206F380 - _0206F294 - 2; case 0 + .short _0206F2B8 - _0206F294 - 2; case 1 + .short _0206F2C6 - _0206F294 - 2; case 2 + .short _0206F2AA - _0206F294 - 2; case 3 + .short _0206F2E0 - _0206F294 - 2; case 4 + .short _0206F2EE - _0206F294 - 2; case 5 + .short _0206F2D4 - _0206F294 - 2; case 6 + .short _0206F2FC - _0206F294 - 2; case 7 + .short _0206F30E - _0206F294 - 2; case 8 + .short _0206F314 - _0206F294 - 2; case 9 + .short _0206F302 - _0206F294 - 2; case 10 +_0206F2AA: + mov r0, #0x0 + strb r0, [r4, #0xc] + mov r0, #0x1 + strb r0, [r4, #0xd] + mov r0, #0x4 + str r0, [r4, #0x4] + b _0206F380 +_0206F2B8: + mov r0, #0x32 + strb r0, [r4, #0xc] + mov r0, #0x1 + strb r0, [r4, #0xd] + mov r0, #0x4 + str r0, [r4, #0x4] + b _0206F380 +_0206F2C6: + mov r0, #0x64 + strb r0, [r4, #0xc] + mov r0, #0x1 + strb r0, [r4, #0xd] + mov r0, #0x4 + str r0, [r4, #0x4] + b _0206F380 +_0206F2D4: + mov r0, #0x0 + strb r0, [r4, #0xc] + strb r0, [r4, #0xd] + mov r0, #0x4 + str r0, [r4, #0x4] + b _0206F380 +_0206F2E0: + mov r0, #0x32 + strb r0, [r4, #0xc] + mov r0, #0x0 + strb r0, [r4, #0xd] + mov r0, #0x4 + str r0, [r4, #0x4] + b _0206F380 +_0206F2EE: + mov r0, #0x64 + strb r0, [r4, #0xc] + mov r0, #0x0 + strb r0, [r4, #0xd] + mov r0, #0x4 + str r0, [r4, #0x4] + b _0206F380 +_0206F2FC: + mov r0, #0x6 + str r0, [r4, #0x4] + b _0206F380 +_0206F302: + ldr r0, [r4, #0x8] + mov r1, #0x1 + strh r1, [r0, #0x0] + mov r0, #0xb + str r0, [r4, #0x4] + b _0206F380 +_0206F30E: + mov r0, #0x9 + str r0, [r4, #0x4] + b _0206F380 +_0206F314: + mov r0, #0x8 + str r0, [r4, #0x4] + b _0206F380 +_0206F31A: + ldr r1, [r4, #0x0] + ldrb r2, [r4, #0xc] + ldrb r3, [r4, #0xd] + ldr r1, [r1, #0x8] + add r0, r6, #0x0 + bl FUN_020471C0 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206F380 +_0206F330: + mov r0, #0x2 + str r0, [r4, #0x4] + b _0206F380 +_0206F336: + add r0, r6, #0x0 + bl FUN_020383D8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _0206F380 +_0206F344: + mov r0, #0x2 + str r0, [r4, #0x4] + b _0206F380 +_0206F34A: + ldr r2, _0206F388 ; =0x00040100 + mov r0, #0x3 + mov r1, #0x36 + bl FUN_0201681C + bl FUN_02088878 + mov r0, #0x36 + bl FUN_02211E60 + mov r0, #0x0 + blx OS_ResetSystem + b _0206F380 +_0206F366: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + mov r0, #0x1 + pop {r4-r6, pc} +_0206F37C: + mov r0, #0x1 + pop {r4-r6, pc} +_0206F380: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0206F384: .word 0x020F943C +_0206F388: .word 0x00040100 + + thumb_func_start FUN_0206F38C +FUN_0206F38C: ; 0x0206F38C + push {r4, lr} + mov r0, #0xb + mov r1, #0x10 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x10 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0xb + mov r1, #0xc + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0xc + str r0, [r4, #0x0] + blx MI_CpuFill8 + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206F3B8 +FUN_0206F3B8: ; 0x0206F3B8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0206F38C + add r2, r0, #0x0 + ldr r0, [r2, #0x0] + mov r1, #0x2 + str r1, [r0, #0x4] + ldr r1, _0206F3D4 ; =FUN_0206F1F0 + add r0, r4, #0x0 + bl FUN_0204640C + pop {r4, pc} + nop +_0206F3D4: .word FUN_0206F1F0 + + thumb_func_start FUN_0206F3D8 +FUN_0206F3D8: ; 0x0206F3D8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0206F38C + add r2, r0, #0x0 + ldr r0, [r2, #0x0] + mov r1, #0x1 + str r1, [r0, #0x4] + ldr r1, _0206F3F8 ; =FUN_0206F1F0 + add r0, r5, #0x0 + str r4, [r2, #0x8] + bl FUN_0204640C + pop {r3-r5, pc} + nop +_0206F3F8: .word FUN_0206F1F0 + + thumb_func_start FUN_0206F3FC +FUN_0206F3FC: ; 0x0206F3FC + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r0, #0x1 + lsl r0, r0, #0x1a + ldr r2, [r0, #0x0] + ldr r1, _0206F594 ; =0xFFFFE0FF + ldr r3, _0206F598 ; =0x04001000 + and r2, r1 + str r2, [r0, #0x0] + ldr r2, [r3, #0x0] + add r0, #0x50 + and r1, r2 + str r1, [r3, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x0] + add r3, #0x50 + strh r1, [r3, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + mov r2, #0x2 + mov r0, #0x3 + mov r1, #0xc + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r4, #0x0 + bl FUN_0206FE74 + add r4, r0, #0x0 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0xc + str r1, [sp, #0x8] + mov r1, #0x3 + add r2, r1, #0x0 + mov r3, #0x0 + bl FUN_0200E1D0 + add r0, r4, #0x0 + bl FUN_0206FF74 + bl FUN_0206FB80 + ldr r0, [r4, #0x0] + bl FUN_0206FBA0 + add r0, r4, #0x0 + bl FUN_0206FD24 + bl FUN_0201CC08 + mov r0, #0x4 + bl FUN_0201CC24 + mov r1, #0x0 + mov r0, #0x39 + add r2, r1, #0x0 + bl FUN_0200433C + add r0, r4, #0x0 + bl FUN_02072590 + add r0, r4, #0x0 + bl FUN_02073710 + add r0, r4, #0x0 + bl FUN_0207388C + add r0, r4, #0x0 + bl FUN_0206FFB4 + add r0, r4, #0x0 + bl FUN_0207047C + ldr r1, _0206F59C ; =0x00000B25 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + mov r2, #0x1 + bl FUN_020713EC + ldr r1, _0206F5A0 ; =0x000005A4 + ldr r3, [r4, r1] + add r0, r3, #0x0 + add r0, #0x20 + ldrb r2, [r0, #0x0] + cmp r2, #0x5 + beq _0206F4CC + cmp r2, #0x10 + bne _0206F4E2 +_0206F4CC: + ldrh r0, [r3, #0x24] + bl FUN_02076144 + cmp r0, #0x0 + bne _0206F564 + add r0, r4, #0x0 + mov r1, #0x20 + mov r2, #0x1 + bl FUN_020731C0 + b _0206F564 +_0206F4E2: + cmp r2, #0x6 + bne _0206F4F2 + add r0, r4, #0x0 + mov r1, #0x21 + mov r2, #0x1 + bl FUN_020731C0 + b _0206F564 +_0206F4F2: + cmp r2, #0x9 + beq _0206F4FA + cmp r2, #0xe + bne _0206F506 +_0206F4FA: + add r0, r4, #0x0 + mov r1, #0x1f + mov r2, #0x1 + bl FUN_020731C0 + b _0206F564 +_0206F506: + cmp r2, #0x7 + beq _0206F51A + cmp r2, #0x8 + beq _0206F51A + add r0, r2, #0x0 + add r0, #0xf5 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bhi _0206F526 +_0206F51A: + ldr r0, _0206F5A4 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + b _0206F564 +_0206F526: + cmp r2, #0x2 + beq _0206F52E + cmp r2, #0x11 + bne _0206F53A +_0206F52E: + add r0, r4, #0x0 + mov r1, #0x22 + mov r2, #0x1 + bl FUN_020731C0 + b _0206F564 +_0206F53A: + cmp r2, #0xf + bne _0206F54A + add r0, r4, #0x0 + mov r1, #0x22 + mov r2, #0x1 + bl FUN_020731C0 + b _0206F564 +_0206F54A: + cmp r2, #0xa + beq _0206F55A + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + b _0206F564 +_0206F55A: + add r1, #0x24 + ldr r0, [r4, r1] + mov r1, #0x1 + bl FUN_0200C664 +_0206F564: + add r0, r4, #0x0 + bl FUN_02072720 + add r0, r4, #0x0 + bl FUN_02070AA4 + add r0, r4, #0x0 + bl FUN_0207248C + cmp r0, #0x0 + bne _0206F582 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E74C +_0206F582: + ldr r0, _0206F5A8 ; =FUN_0206FB58 + add r1, r4, #0x0 + bl FUN_02015F10 + bl FUN_02033F20 + mov r0, #0x1 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_0206F594: .word 0xFFFFE0FF +_0206F598: .word 0x04001000 +_0206F59C: .word 0x00000B25 +_0206F5A0: .word 0x000005A4 +_0206F5A4: .word 0x000005C8 +_0206F5A8: .word FUN_0206FB58 + + thumb_func_start FUN_0206F5AC +FUN_0206F5AC: ; 0x0206F5AC + push {r3-r5, lr} + add r4, r1, #0x0 + bl FUN_02006278 + ldr r1, [r4, #0x0] + add r5, r0, #0x0 + cmp r1, #0x1c + bhi _0206F61C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0206F5C8: ; jump table (using 16-bit offset) + .short _0206F602 - _0206F5C8 - 2; case 0 + .short _0206F60A - _0206F5C8 - 2; case 1 + .short _0206F612 - _0206F5C8 - 2; case 2 + .short _0206F624 - _0206F5C8 - 2; case 3 + .short _0206F62C - _0206F5C8 - 2; case 4 + .short _0206F634 - _0206F5C8 - 2; case 5 + .short _0206F63E - _0206F5C8 - 2; case 6 + .short _0206F646 - _0206F5C8 - 2; case 7 + .short _0206F64E - _0206F5C8 - 2; case 8 + .short _0206F656 - _0206F5C8 - 2; case 9 + .short _0206F65E - _0206F5C8 - 2; case 10 + .short _0206F666 - _0206F5C8 - 2; case 11 + .short _0206F66E - _0206F5C8 - 2; case 12 + .short _0206F676 - _0206F5C8 - 2; case 13 + .short _0206F67E - _0206F5C8 - 2; case 14 + .short _0206F686 - _0206F5C8 - 2; case 15 + .short _0206F68E - _0206F5C8 - 2; case 16 + .short _0206F696 - _0206F5C8 - 2; case 17 + .short _0206F69E - _0206F5C8 - 2; case 18 + .short _0206F6A6 - _0206F5C8 - 2; case 19 + .short _0206F6AE - _0206F5C8 - 2; case 20 + .short _0206F6B6 - _0206F5C8 - 2; case 21 + .short _0206F6BE - _0206F5C8 - 2; case 22 + .short _0206F6C6 - _0206F5C8 - 2; case 23 + .short _0206F6CE - _0206F5C8 - 2; case 24 + .short _0206F6E6 - _0206F5C8 - 2; case 25 + .short _0206F6F4 - _0206F5C8 - 2; case 26 + .short _0206F6FC - _0206F5C8 - 2; case 27 + .short _0206F70A - _0206F5C8 - 2; case 28 +_0206F602: + bl FUN_0206F750 + str r0, [r4, #0x0] + b _0206F722 +_0206F60A: + bl FUN_0206F7D8 + str r0, [r4, #0x0] + b _0206F722 +_0206F612: + add r1, r4, #0x0 + bl FUN_020718CC + cmp r0, #0x1 + beq _0206F61E +_0206F61C: + b _0206F722 +_0206F61E: + mov r0, #0x1 + str r0, [r4, #0x0] + b _0206F722 +_0206F624: + bl FUN_020754D0 + str r0, [r4, #0x0] + b _0206F722 +_0206F62C: + bl FUN_0206F874 + str r0, [r4, #0x0] + b _0206F722 +_0206F634: + ldr r1, _0206F740 ; =0x00000B14 + ldr r1, [r5, r1] + blx r1 + str r0, [r4, #0x0] + b _0206F722 +_0206F63E: + bl FUN_02077110 + str r0, [r4, #0x0] + b _0206F722 +_0206F646: + bl FUN_020761A0 + str r0, [r4, #0x0] + b _0206F722 +_0206F64E: + bl FUN_0206F8B4 + str r0, [r4, #0x0] + b _0206F722 +_0206F656: + bl FUN_02072170 + str r0, [r4, #0x0] + b _0206F722 +_0206F65E: + bl FUN_02072194 + str r0, [r4, #0x0] + b _0206F722 +_0206F666: + bl FUN_02072140 + str r0, [r4, #0x0] + b _0206F722 +_0206F66E: + bl FUN_0207230C + str r0, [r4, #0x0] + b _0206F722 +_0206F676: + bl FUN_0206F8F4 + str r0, [r4, #0x0] + b _0206F722 +_0206F67E: + bl FUN_02071F58 + str r0, [r4, #0x0] + b _0206F722 +_0206F686: + bl FUN_0207405C + str r0, [r4, #0x0] + b _0206F722 +_0206F68E: + bl FUN_0207436C + str r0, [r4, #0x0] + b _0206F722 +_0206F696: + bl FUN_0206FA14 + str r0, [r4, #0x0] + b _0206F722 +_0206F69E: + bl FUN_02076D3C + str r0, [r4, #0x0] + b _0206F722 +_0206F6A6: + bl FUN_02074F6C + str r0, [r4, #0x0] + b _0206F722 +_0206F6AE: + bl FUN_0206F980 + str r0, [r4, #0x0] + b _0206F722 +_0206F6B6: + bl FUN_0206F9A4 + str r0, [r4, #0x0] + b _0206F722 +_0206F6BE: + bl FUN_0206F9C8 + str r0, [r4, #0x0] + b _0206F722 +_0206F6C6: + bl FUN_0206F9D4 + str r0, [r4, #0x0] + b _0206F722 +_0206F6CE: + bl FUN_020714D0 + cmp r0, #0x0 + bne _0206F6DC + mov r0, #0x19 + str r0, [r4, #0x0] + b _0206F722 +_0206F6DC: + cmp r0, #0x3 + bne _0206F722 + mov r0, #0x1 + str r0, [r4, #0x0] + b _0206F722 +_0206F6E6: + bl FUN_020746D4 + cmp r0, #0x1 + bne _0206F722 + mov r0, #0x1 + str r0, [r4, #0x0] + b _0206F722 +_0206F6F4: + bl FUN_02071970 + str r0, [r4, #0x0] + b _0206F722 +_0206F6FC: + mov r0, #0x1 + mov r1, #0xc + bl FUN_02079A70 + mov r0, #0x1c + str r0, [r4, #0x0] + b _0206F722 +_0206F70A: + bl FUN_0200E308 + cmp r0, #0x1 + bne _0206F722 + ldr r0, _0206F744 ; =0x00000B25 + ldrb r1, [r5, r0] + ldr r0, _0206F748 ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x22 + strb r1, [r0, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} +_0206F722: + add r0, r5, #0x0 + bl FUN_02073BEC + add r0, r5, #0x0 + bl FUN_02073D6C + add r0, r5, #0x0 + bl FUN_02070F14 + ldr r0, _0206F74C ; =0x000005AC + ldr r0, [r5, r0] + bl FUN_0200BC1C + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0206F740: .word 0x00000B14 +_0206F744: .word 0x00000B25 +_0206F748: .word 0x000005A4 +_0206F74C: .word 0x000005AC + + thumb_func_start FUN_0206F750 +FUN_0206F750: ; 0x0206F750 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0200E308 + cmp r0, #0x1 + bne _0206F7CA + ldr r0, _0206F7D0 ; =0x000005A4 + ldr r2, [r4, r0] + add r0, r2, #0x0 + add r0, #0x20 + ldrb r1, [r0, #0x0] + cmp r1, #0x5 + beq _0206F76E + cmp r1, #0x10 + bne _0206F786 +_0206F76E: + ldrh r0, [r2, #0x24] + bl FUN_02076144 + cmp r0, #0x1 + bne _0206F782 + ldr r0, _0206F7D4 ; =0x00000B22 + mov r1, #0x0 + strb r1, [r4, r0] + mov r0, #0x7 + pop {r4, pc} +_0206F782: + mov r0, #0x4 + pop {r4, pc} +_0206F786: + cmp r1, #0x6 + bne _0206F78E + mov r0, #0x11 + pop {r4, pc} +_0206F78E: + cmp r1, #0x7 + bne _0206F79A + add r0, r4, #0x0 + bl FUN_02076C94 + pop {r4, pc} +_0206F79A: + cmp r1, #0x8 + bne _0206F7A6 + add r0, r4, #0x0 + bl FUN_02076890 + pop {r4, pc} +_0206F7A6: + add r0, r1, #0x0 + add r0, #0xf5 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bhi _0206F7B6 + mov r0, #0xc + pop {r4, pc} +_0206F7B6: + cmp r1, #0x9 + bne _0206F7BE + mov r0, #0x8 + pop {r4, pc} +_0206F7BE: + cmp r1, #0xa + bne _0206F7C6 + mov r0, #0xe + pop {r4, pc} +_0206F7C6: + mov r0, #0x1 + pop {r4, pc} +_0206F7CA: + mov r0, #0x0 + pop {r4, pc} + nop +_0206F7D0: .word 0x000005A4 +_0206F7D4: .word 0x00000B22 + + thumb_func_start FUN_0206F7D8 +FUN_0206F7D8: ; 0x0206F7D8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02070F94 + cmp r0, #0x0 + bne _0206F81E + ldr r0, _0206F870 ; =0x000005A4 + ldr r1, [r4, r0] + add r0, r1, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x3 + beq _0206F7F6 + cmp r0, #0x14 + bne _0206F800 +_0206F7F6: + mov r0, #0x0 + add r1, #0x23 + strb r0, [r1, #0x0] + mov r0, #0x1b + pop {r4, pc} +_0206F800: + cmp r0, #0xe + bne _0206F80E + add r0, r4, #0x0 + bl FUN_02077248 + mov r0, #0x14 + pop {r4, pc} +_0206F80E: + cmp r0, #0x13 + bne _0206F81A + add r0, r4, #0x0 + bl FUN_02072420 + pop {r4, pc} +_0206F81A: + mov r0, #0x2 + pop {r4, pc} +_0206F81E: + cmp r0, #0x4 + bne _0206F82A + add r0, r4, #0x0 + bl FUN_0207155C + pop {r4, pc} +_0206F82A: + cmp r0, #0x3 + bne _0206F83C + ldr r0, _0206F870 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} +_0206F83C: + cmp r0, #0x2 + bne _0206F86A + ldr r0, _0206F870 ; =0x000005A4 + ldr r2, [r4, r0] + add r1, r2, #0x0 + add r1, #0x20 + ldrb r1, [r1, #0x0] + cmp r1, #0xf + beq _0206F858 + mov r0, #0x1 + add r2, #0x23 + strb r0, [r2, #0x0] + mov r0, #0x1b + pop {r4, pc} +_0206F858: + add r0, #0x24 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200C664 + add r0, r4, #0x0 + bl FUN_02075118 + pop {r4, pc} +_0206F86A: + mov r0, #0x1 + pop {r4, pc} + nop +_0206F870: .word 0x000005A4 + + thumb_func_start FUN_0206F874 +FUN_0206F874: ; 0x0206F874 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02071D48 + cmp r0, #0x0 + beq _0206F884 + cmp r0, #0x2 + bne _0206F896 +_0206F884: + ldr r0, _0206F8AC ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + add r0, r4, #0x0 + bl FUN_02071DF4 + pop {r4, pc} +_0206F896: + cmp r0, #0x3 + bne _0206F8A8 + ldr r0, _0206F8B0 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} +_0206F8A8: + mov r0, #0x4 + pop {r4, pc} + .balign 4 +_0206F8AC: .word 0x000005C8 +_0206F8B0: .word 0x000005A4 + + thumb_func_start FUN_0206F8B4 +FUN_0206F8B4: ; 0x0206F8B4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02071D48 + cmp r0, #0x0 + beq _0206F8C4 + cmp r0, #0x2 + bne _0206F8D6 +_0206F8C4: + ldr r0, _0206F8EC ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + add r0, r4, #0x0 + bl FUN_02071F58 + pop {r4, pc} +_0206F8D6: + cmp r0, #0x3 + bne _0206F8E8 + ldr r0, _0206F8F0 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} +_0206F8E8: + mov r0, #0x8 + pop {r4, pc} + .balign 4 +_0206F8EC: .word 0x000005C8 +_0206F8F0: .word 0x000005A4 + + thumb_func_start FUN_0206F8F4 +FUN_0206F8F4: ; 0x0206F8F4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r0, _0206F974 ; =0x000006FC + ldr r0, [r4, r0] + bl FUN_02001C78 + add r2, r0, #0x0 + mov r0, #0x1 + mvn r0, r0 + cmp r2, r0 + beq _0206F914 + add r0, r0, #0x1 + cmp r2, r0 + beq _0206F96E + b _0206F962 +_0206F914: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200CCF8 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + ldr r0, _0206F974 ; =0x000006FC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_02001C5C + ldr r0, _0206F978 ; =0x000006F8 + ldr r0, [r4, r0] + bl FUN_02012870 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _0206F97C ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + add sp, #0x4 + mov r0, #0x1 + pop {r3-r4, pc} +_0206F962: + add r0, r4, #0x0 + add r1, sp, #0x0 + blx r2 + ldr r0, [sp, #0x0] + add sp, #0x4 + pop {r3-r4, pc} +_0206F96E: + mov r0, #0xd + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0206F974: .word 0x000006FC +_0206F978: .word 0x000006F8 +_0206F97C: .word 0x000005C8 + + thumb_func_start FUN_0206F980 +FUN_0206F980: ; 0x0206F980 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0206F99C ; =0x00000B24 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0206F996 + ldr r0, _0206F9A0 ; =0x00000B22 + ldrb r0, [r4, r0] + pop {r4, pc} +_0206F996: + mov r0, #0x14 + pop {r4, pc} + nop +_0206F99C: .word 0x00000B24 +_0206F9A0: .word 0x00000B22 + + thumb_func_start FUN_0206F9A4 +FUN_0206F9A4: ; 0x0206F9A4 + push {r3, lr} + ldr r0, _0206F9C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0206F9BA + ldr r0, _0206F9C4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x1b + pop {r3, pc} +_0206F9BA: + mov r0, #0x15 + pop {r3, pc} + nop +_0206F9C0: .word 0x021C48B8 +_0206F9C4: .word 0x000005DC + + thumb_func_start FUN_0206F9C8 +FUN_0206F9C8: ; 0x0206F9C8 + push {r3, lr} + bl FUN_020732CC + mov r0, #0x17 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0206F9D4 +FUN_0206F9D4: ; 0x0206F9D4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0206FA08 ; =0x000006FC + mov r1, #0xc + ldr r0, [r4, r0] + bl FUN_020021AC + cmp r0, #0x0 + beq _0206F9F0 + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _0206F9FA + b _0206FA04 +_0206F9F0: + ldr r1, _0206FA0C ; =0x00000B18 + add r0, r4, #0x0 + ldr r1, [r4, r1] + blx r1 + pop {r4, pc} +_0206F9FA: + ldr r1, _0206FA10 ; =0x00000B1C + add r0, r4, #0x0 + ldr r1, [r4, r1] + blx r1 + pop {r4, pc} +_0206FA04: + mov r0, #0x17 + pop {r4, pc} + .balign 4 +_0206FA08: .word 0x000006FC +_0206FA0C: .word 0x00000B18 +_0206FA10: .word 0x00000B1C + + thumb_func_start FUN_0206FA14 +FUN_0206FA14: ; 0x0206FA14 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02071D48 + cmp r0, #0x0 + beq _0206FA24 + cmp r0, #0x2 + bne _0206FA78 +_0206FA24: + ldr r0, _0206FA90 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + ldr r0, _0206FA94 ; =0x00000B25 + mov r1, #0x2c + ldrb r0, [r4, r0] + add r2, r0, #0x0 + mul r2, r1 + mov r0, #0x71 + add r2, r4, r2 + lsl r0, r0, #0x4 + ldrb r0, [r2, r0] + cmp r0, #0x1 + beq _0206FA4C + add r0, r4, #0x0 + bl FUN_02076AF8 + pop {r4, pc} +_0206FA4C: + add r0, r4, #0x0 + sub r1, #0x2d + mov r2, #0x1 + bl FUN_020731E8 + ldr r1, _0206FA98 ; =0x000005A4 + mov r2, #0x0 + ldr r0, [r4, r1] + add r1, #0xf8 + add r0, #0x23 + strb r2, [r0, #0x0] + ldr r0, _0206FA9C ; =0x00000B22 + mov r2, #0x15 + strb r2, [r4, r0] + ldr r2, _0206FAA0 ; =0x000006A4 + ldr r0, [r4, r1] + ldr r2, [r4, r2] + mov r1, #0x69 + bl FUN_0200A8E0 + mov r0, #0x14 + pop {r4, pc} +_0206FA78: + cmp r0, #0x3 + bne _0206FA8A + ldr r0, _0206FA98 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} +_0206FA8A: + mov r0, #0x11 + pop {r4, pc} + nop +_0206FA90: .word 0x000005C8 +_0206FA94: .word 0x00000B25 +_0206FA98: .word 0x000005A4 +_0206FA9C: .word 0x00000B22 +_0206FAA0: .word 0x000006A4 + + thumb_func_start FUN_0206FAA4 +FUN_0206FAA4: ; 0x0206FAA4 + push {r3-r7, lr} + str r0, [sp, #0x0] + bl FUN_02006278 + add r6, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + add r0, r6, #0x0 + bl FUN_02073A2C + add r0, r6, #0x0 + bl FUN_020726F0 + ldr r0, [r6, #0x0] + bl FUN_0206FCD4 + bl FUN_0201CD04 + bl FUN_0201C29C + mov r7, #0x7 + mov r4, #0x0 + add r5, r6, #0x0 + lsl r7, r7, #0x8 +_0206FAD8: + ldr r0, [r5, r7] + bl FUN_02021A20 + add r4, r4, #0x1 + add r5, #0x2c + cmp r4, #0x6 + blo _0206FAD8 + ldr r0, _0206FB40 ; =0x000006A4 + ldr r0, [r6, r0] + bl FUN_02021A20 + ldr r0, _0206FB44 ; =0x000006A8 + ldr r0, [r6, r0] + bl FUN_02021A20 + ldr r7, _0206FB48 ; =0x000006AC + mov r5, #0x0 + add r4, r6, #0x0 +_0206FAFC: + ldr r0, [r4, r7] + bl FUN_02021A20 + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, #0x13 + blo _0206FAFC + ldr r0, _0206FB4C ; =0x0000069C + ldr r0, [r6, r0] + bl FUN_0200A8B8 + ldr r0, _0206FB50 ; =0x00000698 + ldr r0, [r6, r0] + bl FUN_0200B990 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r6, r0] + bl FUN_0200AB18 + ldr r0, _0206FB54 ; =0x00000B34 + ldr r0, [r6, r0] + cmp r0, #0x0 + beq _0206FB30 + bl FUN_0206BB74 +_0206FB30: + ldr r0, [sp, #0x0] + bl FUN_0200627C + mov r0, #0xc + bl FUN_020168D0 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0206FB40: .word 0x000006A4 +_0206FB44: .word 0x000006A8 +_0206FB48: .word 0x000006AC +_0206FB4C: .word 0x0000069C +_0206FB50: .word 0x00000698 +_0206FB54: .word 0x00000B34 + + thumb_func_start FUN_0206FB58 +FUN_0206FB58: ; 0x0206FB58 + push {r3, lr} + ldr r0, [r0, #0x0] + bl FUN_0201AB60 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r3, _0206FB78 ; =0x027E0000 + ldr r1, _0206FB7C ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + nop +_0206FB78: .word 0x027E0000 +_0206FB7C: .word 0x00003FF8 + + thumb_func_start FUN_0206FB80 +FUN_0206FB80: ; 0x0206FB80 + push {r4, lr} + sub sp, #0x28 + ldr r4, _0206FB9C ; =0x020F9564 + add r3, sp, #0x0 + mov r2, #0x5 +_0206FB8A: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0206FB8A + add r0, sp, #0x0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .balign 4 +_0206FB9C: .word 0x020F9564 + + thumb_func_start FUN_0206FBA0 +FUN_0206FBA0: ; 0x0206FBA0 + push {r3-r5, lr} + sub sp, #0xb8 + ldr r5, _0206FCB8 ; =0x020F9458 + add r3, sp, #0xa8 + add r4, r0, #0x0 + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r5, _0206FCBC ; =0x020F94D4 + add r3, sp, #0x8c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + add r3, r1, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02018744 + ldr r5, _0206FCC0 ; =0x020F94F0 + add r3, sp, #0x70 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x1 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02018744 + ldr r5, _0206FCC4 ; =0x020F949C + add r3, sp, #0x54 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x2 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02018744 + ldr r5, _0206FCC8 ; =0x020F9480 + add r3, sp, #0x38 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x3 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + ldr r5, _0206FCCC ; =0x020F950C + add r3, sp, #0x1c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r1, #0x4 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02018744 + ldr r5, _0206FCD0 ; =0x020F9528 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x5 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + mov r3, #0xc + bl FUN_02017F18 + mov r0, #0x4 + mov r1, #0x20 + mov r2, #0x0 + mov r3, #0xc + bl FUN_02017F18 + add sp, #0xb8 + pop {r3-r5, pc} + nop +_0206FCB8: .word 0x020F9458 +_0206FCBC: .word 0x020F94D4 +_0206FCC0: .word 0x020F94F0 +_0206FCC4: .word 0x020F949C +_0206FCC8: .word 0x020F9480 +_0206FCCC: .word 0x020F950C +_0206FCD0: .word 0x020F9528 + + thumb_func_start FUN_0206FCD4 +FUN_0206FCD4: ; 0x0206FCD4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x1f + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x13 + mov r1, #0x0 + bl FUN_0201E74C + add r0, r4, #0x0 + mov r1, #0x5 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020178A0 + mov r0, #0xc + add r1, r4, #0x0 + bl FUN_02016A8C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0206FD24 +FUN_0206FD24: ; 0x0206FD24 + push {r4-r5, lr} + sub sp, #0x14 + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r2, [r5, #0x0] + mov r0, #0x14 + mov r1, #0xf + mov r3, #0x3 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r2, [r5, #0x0] + mov r0, #0x14 + mov r1, #0x11 + mov r3, #0x3 + bl FUN_020068C8 + mov r0, #0x14 + mov r1, #0x10 + mov r2, #0xc + bl LoadFromNarc_2 + add r1, sp, #0x10 + add r4, r0, #0x0 + blx FUN_020B0138 + ldr r2, [sp, #0x10] + mov r0, #0x3 + ldr r1, [r2, #0xc] + ldr r2, [r2, #0x8] + mov r3, #0x0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl FUN_02017FB4 + ldr r1, [sp, #0x10] + ldr r0, _0206FE6C ; =0x000004A4 + ldr r1, [r1, #0xc] + mov r2, #0x1 + add r0, r5, r0 + add r1, #0x60 + lsl r2, r2, #0x8 + blx memcpy + mov r0, #0xc + add r1, r4, #0x0 + bl FUN_02016A8C + mov r1, #0x1a + mov r0, #0x0 + lsl r1, r1, #0x4 + mov r2, #0xc + bl FUN_02002EEC + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + mov r2, #0x1 + mov r3, #0xe + bl FUN_0200CB00 + ldr r0, _0206FE70 ; =0x000005A4 + ldr r0, [r5, r0] + ldr r0, [r0, #0xc] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + mov r1, #0x0 + mov r2, #0xa + mov r3, #0xf + bl FUN_0200CD68 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r2, [r5, #0x0] + mov r0, #0x14 + mov r1, #0x3 + mov r3, #0x4 + bl FUN_0200687C + mov r3, #0x20 + mov r1, #0x4 + str r3, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + mov r0, #0x14 + add r2, r1, #0x0 + bl FUN_02006930 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r1, #0xc + str r1, [sp, #0xc] + ldr r2, [r5, #0x0] + mov r0, #0x14 + mov r3, #0x5 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r2, [r5, #0x0] + mov r0, #0x14 + mov r1, #0xe + mov r3, #0x5 + bl FUN_020068C8 + mov r0, #0x20 + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + mov r0, #0x14 + mov r1, #0xd + mov r2, #0x4 + mov r3, #0x0 + bl FUN_02006930 + mov r2, #0x99 + lsl r2, r2, #0x2 + mov r3, #0xf9 + add r1, r5, r2 + add r2, #0xc0 + lsl r3, r3, #0x2 + mov r0, #0xc + add r2, r5, r2 + add r3, r5, r3 + bl FUN_020724D4 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02017FE4 + mov r0, #0x4 + mov r1, #0x0 + bl FUN_02017FE4 + add sp, #0x14 + pop {r4-r5, pc} + .balign 4 +_0206FE6C: .word 0x000004A4 +_0206FE70: .word 0x000005A4 + + thumb_func_start FUN_0206FE74 +FUN_0206FE74: ; 0x0206FE74 + push {r3-r7, lr} + ldr r1, _0206FF50 ; =0x00000B38 + mov r2, #0xc + add r4, r0, #0x0 + bl FUN_02006268 + ldr r2, _0206FF50 ; =0x00000B38 + mov r1, #0x0 + add r6, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + bl FUN_0200628C + ldr r1, _0206FF54 ; =0x000005A4 + str r0, [r6, r1] + mov r0, #0xc + bl FUN_02016B94 + str r0, [r6, #0x0] + ldr r0, _0206FF54 ; =0x000005A4 + ldr r1, [r6, r0] + add r0, r1, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0206FEBC + ldr r0, [r1, #0x14] + cmp r0, #0x0 + beq _0206FEBC + mov r0, #0xc + bl FUN_0206BB5C + ldr r1, _0206FF58 ; =0x00000B34 + str r0, [r6, r1] + b _0206FEC2 +_0206FEBC: + ldr r0, _0206FF58 ; =0x00000B34 + mov r1, #0x0 + str r1, [r6, r0] +_0206FEC2: + ldr r2, _0206FF5C ; =0x00000192 + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0xc + bl FUN_0200A86C + ldr r1, _0206FF60 ; =0x0000069C + mov r2, #0x0 + str r0, [r6, r1] + mov r0, #0xf + mov r1, #0xe + mov r3, #0xc + bl FUN_0200B870 + ldr r1, _0206FF64 ; =0x00000698 + str r0, [r6, r1] + mov r0, #0xc + bl FUN_0200AA80 + mov r1, #0x6a + lsl r1, r1, #0x4 + add r7, r1, #0x0 + str r0, [r6, r1] + mov r4, #0x0 + add r5, r6, #0x0 + add r7, #0x60 +_0206FEF6: + mov r0, #0xb + mov r1, #0xc + bl FUN_020219F4 + str r0, [r5, r7] + add r4, r4, #0x1 + add r5, #0x2c + cmp r4, #0x6 + blo _0206FEF6 + mov r0, #0x1 + lsl r0, r0, #0x8 + mov r1, #0xc + bl FUN_020219F4 + ldr r1, _0206FF68 ; =0x000006A4 + str r0, [r6, r1] + mov r0, #0x1 + lsl r0, r0, #0x8 + mov r1, #0xc + bl FUN_020219F4 + ldr r1, _0206FF6C ; =0x000006A8 + mov r5, #0x0 + str r0, [r6, r1] + add r4, r6, #0x0 + add r7, r1, #0x4 +_0206FF2A: + mov r0, #0x20 + mov r1, #0xc + bl FUN_020219F4 + str r0, [r4, r7] + add r5, r5, #0x1 + add r4, r4, #0x4 + cmp r5, #0x13 + blo _0206FF2A + ldr r0, _0206FF54 ; =0x000005A4 + ldr r0, [r6, r0] + add r0, #0x22 + ldrb r1, [r0, #0x0] + ldr r0, _0206FF70 ; =0x00000B25 + strb r1, [r6, r0] + add r0, r0, #0x1 + strb r1, [r6, r0] + add r0, r6, #0x0 + pop {r3-r7, pc} + .balign 4 +_0206FF50: .word 0x00000B38 +_0206FF54: .word 0x000005A4 +_0206FF58: .word 0x00000B34 +_0206FF5C: .word 0x00000192 +_0206FF60: .word 0x0000069C +_0206FF64: .word 0x00000698 +_0206FF68: .word 0x000006A4 +_0206FF6C: .word 0x000006A8 +_0206FF70: .word 0x00000B25 + + thumb_func_start FUN_0206FF74 +FUN_0206FF74: ; 0x0206FF74 + push {r3-r4} + ldr r2, _0206FFAC ; =0x000005A4 + mov r3, #0x80 + ldr r1, [r0, r2] + add r1, #0x20 + ldrb r1, [r1, #0x0] + tst r1, r3 + beq _0206FF9E + ldr r1, _0206FFB0 ; =0x00000B23 + ldrb r4, [r0, r1] + orr r4, r3 + strb r4, [r0, r1] + ldr r1, [r0, r2] + add r0, r1, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + add r1, #0x20 + eor r0, r3 + strb r0, [r1, #0x0] + pop {r3-r4} + bx lr +_0206FF9E: + ldr r2, _0206FFB0 ; =0x00000B23 + mov r1, #0x80 + ldrb r3, [r0, r2] + bic r3, r1 + strb r3, [r0, r2] + pop {r3-r4} + bx lr + .balign 4 +_0206FFAC: .word 0x000005A4 +_0206FFB0: .word 0x00000B23 + + thumb_func_start FUN_0206FFB4 +FUN_0206FFB4: ; 0x0206FFB4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02070064 ; =0x000005A4 + mov r4, #0x3 + ldr r1, [r5, r0] + add r0, r1, #0x0 + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _0206FFD0 + ldr r1, _02070068 ; =0x020F95CC + ldr r0, _0207006C ; =0x00000808 + str r1, [r5, r0] + b _0206FFEA +_0206FFD0: + add r1, #0x20 + ldrb r0, [r1, #0x0] + cmp r0, #0x2 + beq _0206FFDC + cmp r0, #0x11 + bne _0206FFE4 +_0206FFDC: + ldr r1, _02070070 ; =0x020F960C + ldr r0, _0207006C ; =0x00000808 + str r1, [r5, r0] + b _0206FFEA +_0206FFE4: + ldr r1, _02070074 ; =0x020F958C + ldr r0, _0207006C ; =0x00000808 + str r1, [r5, r0] +_0206FFEA: + ldr r0, _02070064 ; =0x000005A4 + ldr r1, [r5, r0] + add r1, #0x20 + ldrb r1, [r1, #0x0] + cmp r1, #0x2 + beq _0207003C + cmp r1, #0x11 + beq _0207003C + add r0, #0x2c + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _02070078 ; =0x000005D4 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02070078 ; =0x000005D4 + add r1, sp, #0x0 + ldr r0, [r5, r0] + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_0200C75C + ldr r0, _02070078 ; =0x000005D4 + add r3, sp, #0x0 + mov r2, #0x0 + ldrsh r2, [r3, r2] + mov r1, #0x2 + ldrsh r1, [r3, r1] + sub r2, #0x8 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + asr r2, r2, #0x10 + bl FUN_0200C6E4 + mov r0, #0x1 + eor r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0207003C: + ldr r0, _02070064 ; =0x000005A4 + ldr r1, [r5, r0] + add r1, #0x20 + ldrb r1, [r1, #0x0] + cmp r1, #0x4 + bne _0207005A + add r0, #0x30 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + mov r0, #0x2 + eor r0, r4 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_0207005A: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073094 + pop {r3-r5, pc} + .balign 4 +_02070064: .word 0x000005A4 +_02070068: .word 0x020F95CC +_0207006C: .word 0x00000808 +_02070070: .word 0x020F960C +_02070074: .word 0x020F958C +_02070078: .word 0x000005D4 + + thumb_func_start FUN_0207007C +FUN_0207007C: ; 0x0207007C + mov r2, #0x2c + mul r2, r1 + add r1, r0, r2 + ldr r0, _02070088 ; =0x00000729 + ldrb r0, [r1, r0] + bx lr + .balign 4 +_02070088: .word 0x00000729 + + thumb_func_start FUN_0207008C +FUN_0207008C: ; 0x0207008C + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x0] + add r5, r0, #0x0 + ldr r0, [sp, #0x0] + mov r1, #0x2c + add r4, r0, #0x0 + ldr r0, _020701D8 ; =0x00000729 + mul r4, r1 + add r0, r5, r0 + mov r1, #0x0 + str r0, [sp, #0x8] + strb r1, [r0, r4] + ldr r0, _020701DC ; =0x000005A4 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9AC + ldr r1, [sp, #0x0] + cmp r0, r1 + bgt _020700BC + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_020700BC: + ldr r0, _020701DC ; =0x000005A4 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r7, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x4] + bne _020700DE + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_020700DE: + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02072A00 + ldr r0, [sp, #0x0] + mov r1, #0x2c + add r6, r0, #0x0 + mul r6, r1 + ldr r1, _020701E0 ; =0x00000704 + ldr r0, [sp, #0x4] + add r2, r5, r6 + strh r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020701E4 ; =0x00000706 + add r2, r5, r6 + strh r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020701E8 ; =0x00000708 + add r2, r5, r6 + strh r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020701EC ; =0x0000070A + add r2, r5, r6 + strh r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020701F0 ; =0x0000070C + add r2, r5, r6 + strh r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0xa1 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020701F4 ; =0x00000712 + add r2, r5, r6 + strh r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + mov r1, #0x71 + add r2, r5, r6 + lsl r1, r1, #0x4 + strb r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020701F8 ; =0x00000711 + add r2, r5, r6 + strb r0, [r2, r1] + add r0, r7, #0x0 + mov r1, #0xaf + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + ldr r0, _020701FC ; =0x0000070E + bne _02070184 + add r2, r5, r0 + ldrh r1, [r2, r4] + ldr r0, _02070200 ; =0xFFFFEFFF + and r0, r1 + b _0207018E +_02070184: + add r2, r5, r0 + ldrh r1, [r2, r4] + mov r0, #0x1 + lsl r0, r0, #0xc + orr r0, r1 +_0207018E: + strh r0, [r2, r4] + ldr r0, _020701FC ; =0x0000070E + add r6, r5, r0 + add r0, r7, #0x0 + bl FUN_020689E0 + lsl r0, r0, #0x1e + ldrh r2, [r6, r4] + ldr r1, _02070204 ; =0xFFFF9FFF + lsr r0, r0, #0x11 + and r1, r2 + orr r0, r1 + strh r0, [r6, r4] + ldr r0, [sp, #0x8] + mov r1, #0x1 + strb r1, [r0, r4] + add r0, r7, #0x0 + bl FUN_0207C2D4 + lsl r0, r0, #0x18 + ldrh r1, [r6, r4] + ldr r2, _02070208 ; =0xFFFFF000 + lsr r0, r0, #0x18 + and r1, r2 + lsr r2, r2, #0x14 + and r0, r2 + orr r0, r1 + strh r0, [r6, r4] + ldr r2, [sp, #0x0] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_0207020C + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + nop +_020701D8: .word 0x00000729 +_020701DC: .word 0x000005A4 +_020701E0: .word 0x00000704 +_020701E4: .word 0x00000706 +_020701E8: .word 0x00000708 +_020701EC: .word 0x0000070A +_020701F0: .word 0x0000070C +_020701F4: .word 0x00000712 +_020701F8: .word 0x00000711 +_020701FC: .word 0x0000070E +_02070200: .word 0xFFFFEFFF +_02070204: .word 0xFFFF9FFF +_02070208: .word 0xFFFFF000 + + thumb_func_start FUN_0207020C +FUN_0207020C: ; 0x0207020C + push {r3-r7, lr} + add r7, r0, #0x0 + ldr r0, _0207029C ; =0x000005A4 + add r5, r1, #0x0 + ldr r1, [r7, r0] + add r0, r1, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0xd + bne _0207029A + mov r0, #0x2c + add r6, r2, #0x0 + mul r6, r0 + mov r0, #0x71 + add r3, r7, r6 + lsl r0, r0, #0x4 + ldrb r2, [r3, r0] + cmp r2, #0x1 + beq _0207023A + sub r0, #0xa + ldrh r0, [r3, r0] + cmp r0, #0x0 + bne _02070248 +_0207023A: + ldr r0, _020702A0 ; =0x0000070E + add r2, r7, r0 + ldrh r1, [r2, r6] + ldr r0, _020702A4 ; =0xFFFF7FFF + and r0, r1 + strh r0, [r2, r6] + pop {r3-r7, pc} +_02070248: + add r1, #0x2a + ldrb r1, [r1, #0x0] + add r0, r5, #0x0 + bl FUN_020702A8 + str r0, [sp, #0x0] + mov r4, #0x0 +_02070256: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0207026C + add r4, r4, #0x1 + cmp r4, #0x4 + blo _02070256 +_0207026C: + ldr r0, _0207029C ; =0x000005A4 + ldr r0, [r7, r0] + add r0, #0x2b + ldrb r1, [r0, #0x0] + ldr r0, [sp, #0x0] + cmp r1, r0 + bhi _0207028E + cmp r4, #0x2 + blo _0207028E + ldr r0, _020702A0 ; =0x0000070E + add r2, r7, r0 + ldrh r1, [r2, r6] + mov r0, #0x2 + lsl r0, r0, #0xe + orr r0, r1 + strh r0, [r2, r6] + pop {r3-r7, pc} +_0207028E: + ldr r0, _020702A0 ; =0x0000070E + add r2, r7, r0 + ldrh r1, [r2, r6] + ldr r0, _020702A4 ; =0xFFFF7FFF + and r0, r1 + strh r0, [r2, r6] +_0207029A: + pop {r3-r7, pc} + .balign 4 +_0207029C: .word 0x000005A4 +_020702A0: .word 0x0000070E +_020702A4: .word 0xFFFF7FFF + + thumb_func_start FUN_020702A8 +FUN_020702A8: ; 0x020702A8 + push {r3-r5, lr} + add r5, r0, #0x0 + cmp r1, #0x4 + bls _020702B2 + b _020703B6 +_020702B2: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020702BE: ; jump table (using 16-bit offset) + .short _020702C8 - _020702BE - 2; case 0 + .short _020702F8 - _020702BE - 2; case 1 + .short _02070328 - _020702BE - 2; case 2 + .short _02070358 - _020702BE - 2; case 3 + .short _02070388 - _020702BE - 2; case 4 +_020702C8: + mov r1, #0x7a + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x7b + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x7c + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x7d + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + b _020703B6 +_020702F8: + mov r1, #0x7e + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x7f + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x80 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x81 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + b _020703B6 +_02070328: + mov r1, #0x82 + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x83 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x84 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x85 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + b _020703B6 +_02070358: + mov r1, #0x86 + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x87 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x88 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x89 + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + b _020703B6 +_02070388: + mov r1, #0x8a + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8b + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x8c + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 + add r0, r5, #0x0 + mov r1, #0x8d + mov r2, #0x0 + bl FUN_020671BC + add r4, r4, r0 +_020703B6: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020703BC +FUN_020703BC: ; 0x020703BC + mov r1, #0x39 + lsl r1, r1, #0x4 + add r0, r0, r1 + bx lr + + thumb_func_start FUN_020703C4 +FUN_020703C4: ; 0x020703C4 + push {r4-r7, lr} + sub sp, #0x1c + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + add r7, r3, #0x0 + cmp r4, #0x0 + beq _020703E4 + ldr r0, _02070474 ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _020703EC + cmp r4, #0x1 + bne _020703EC +_020703E4: + mov r0, #0x99 + lsl r0, r0, #0x2 + add r0, r5, r0 + b _020703F2 +_020703EC: + mov r0, #0xc9 + lsl r0, r0, #0x2 + add r0, r5, r0 +_020703F2: + mov r1, #0x2c + mul r1, r4 + ldr r2, _02070478 ; =0x00000714 + add r1, r5, r1 + strb r6, [r1, r2] + add r2, r2, #0x1 + strb r7, [r1, r2] + mov r2, #0x10 + str r2, [sp, #0x0] + mov r1, #0x6 + str r1, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0x0] + mov r1, #0x2 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_02018170 + add r0, sp, #0x20 + ldrb r0, [r0, #0x10] + cmp r0, #0x0 + bne _0207044C + add r0, r7, #0x3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x9 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x10 + add r3, r6, #0x6 + str r0, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + mov r2, #0x17 + lsr r3, r3, #0x18 + bl FUN_02018540 +_0207044C: + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + add r0, r4, #0x3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + ldr r0, [r5, #0x0] + mov r1, #0x2 + add r2, r6, #0x0 + add r3, r7, #0x0 + bl FUN_020186B4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020709FC + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 +_02070474: .word 0x000005A4 +_02070478: .word 0x00000714 + + thumb_func_start FUN_0207047C +FUN_0207047C: ; 0x0207047C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020704E4 ; =0x000005A4 + ldr r2, [r4, r0] + add r0, r2, #0x0 + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _02070492 + ldr r1, _020704E8 ; =0x020F9694 + b _02070494 +_02070492: + ldr r1, _020704EC ; =0x020F964C +_02070494: + add r2, #0x20 + ldrb r0, [r2, #0x0] + cmp r0, #0x10 + bne _020704A4 + add r0, r4, #0x0 + bl FUN_02070600 + b _020704D2 +_020704A4: + cmp r0, #0x6 + bne _020704B0 + add r0, r4, #0x0 + bl FUN_020706E0 + b _020704D2 +_020704B0: + cmp r0, #0xd + bne _020704BC + add r0, r4, #0x0 + bl FUN_020707C0 + b _020704D2 +_020704BC: + cmp r0, #0x2 + beq _020704C4 + cmp r0, #0x11 + bne _020704CC +_020704C4: + add r0, r4, #0x0 + bl FUN_020708A0 + b _020704D2 +_020704CC: + add r0, r4, #0x0 + bl FUN_020704F0 +_020704D2: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_0201AC68 + ldr r0, [r4, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 + pop {r4, pc} + .balign 4 +_020704E4: .word 0x000005A4 +_020704E8: .word 0x020F9694 +_020704EC: .word 0x020F964C + + thumb_func_start FUN_020704F0 +FUN_020704F0: ; 0x020704F0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r4, #0x0 +_020704FA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207008C + cmp r0, #0x1 + bne _020705D4 + mov r0, #0x2c + mul r0, r4 + add r1, r5, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + str r1, [sp, #0x4] + cmp r0, #0x1 + bne _0207053A + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r3, r6, r2 + ldrh r2, [r6, r2] + ldrh r3, [r3, #0x2] + add r0, r5, #0x0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020703C4 + b _0207055A +_0207053A: + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + mov r0, #0x1 + str r0, [sp, #0x0] + add r3, r6, r2 + ldrh r2, [r6, r2] + ldrh r3, [r3, #0x2] + add r0, r5, #0x0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020703C4 +_0207055A: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072D1C + mov r0, #0xc + mul r0, r4 + add r7, r6, r0 + ldrh r2, [r7, #0x4] + ldrh r3, [r7, #0x6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020737D0 + ldrh r2, [r7, #0x8] + ldrh r3, [r7, #0xa] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020739E4 + ldr r3, [sp, #0x4] + ldr r2, _020705F8 ; =0x0000070C + add r0, r5, #0x0 + ldrh r2, [r3, r2] + add r1, r4, #0x0 + bl FUN_02073A78 + mov r2, #0x4 + mov r3, #0x6 + ldrsh r2, [r7, r2] + ldrsh r3, [r7, r3] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073AD8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B3C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B0C + mov r2, #0x2c + mul r2, r4 + add r3, r5, r2 + ldr r2, _020705FC ; =0x0000070E + add r0, r5, #0x0 + ldrh r2, [r3, r2] + add r1, r4, #0x0 + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + b _020705EA +_020705D4: + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + add r7, r6, r2 + mov r3, #0x2 + ldrsh r2, [r6, r2] + ldrsh r3, [r7, r3] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02070988 +_020705EA: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _020704FA + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020705F8: .word 0x0000070C +_020705FC: .word 0x0000070E + + thumb_func_start FUN_02070600 +FUN_02070600: ; 0x02070600 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x4] + mov r4, #0x0 +_0207060A: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207008C + cmp r0, #0x1 + bne _020706B0 + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r3, [sp, #0x4] + add r6, r0, r2 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r2, [r3, r2] + ldrh r3, [r6, #0x2] + add r0, r5, #0x0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020703C4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072E4C + ldrh r2, [r6, #0x4] + ldrh r3, [r6, #0x6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020737D0 + ldrh r2, [r6, #0x8] + ldrh r3, [r6, #0xa] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020739E4 + mov r0, #0x2c + add r7, r4, #0x0 + mul r7, r0 + ldr r2, _020706D8 ; =0x0000070C + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073A78 + mov r2, #0x4 + mov r3, #0x6 + ldrsh r2, [r6, r2] + ldrsh r3, [r6, r3] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073AD8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B3C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B0C + ldr r2, _020706DC ; =0x0000070E + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + b _020706CA +_020706B0: + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r6, [sp, #0x4] + add r3, r0, r2 + ldrsh r2, [r6, r2] + mov r6, #0x2 + ldrsh r3, [r3, r6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02070988 +_020706CA: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _0207060A + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020706D8: .word 0x0000070C +_020706DC: .word 0x0000070E + + thumb_func_start FUN_020706E0 +FUN_020706E0: ; 0x020706E0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x4] + mov r4, #0x0 +_020706EA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207008C + cmp r0, #0x1 + bne _02070790 + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r3, [sp, #0x4] + add r6, r0, r2 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r2, [r3, r2] + ldrh r3, [r6, #0x2] + add r0, r5, #0x0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020703C4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072EE4 + ldrh r2, [r6, #0x4] + ldrh r3, [r6, #0x6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020737D0 + ldrh r2, [r6, #0x8] + ldrh r3, [r6, #0xa] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020739E4 + mov r0, #0x2c + add r7, r4, #0x0 + mul r7, r0 + ldr r2, _020707B8 ; =0x0000070C + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073A78 + mov r2, #0x4 + mov r3, #0x6 + ldrsh r2, [r6, r2] + ldrsh r3, [r6, r3] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073AD8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B3C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B0C + ldr r2, _020707BC ; =0x0000070E + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + b _020707AA +_02070790: + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r6, [sp, #0x4] + add r3, r0, r2 + ldrsh r2, [r6, r2] + mov r6, #0x2 + ldrsh r3, [r3, r6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02070988 +_020707AA: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _020706EA + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020707B8: .word 0x0000070C +_020707BC: .word 0x0000070E + + thumb_func_start FUN_020707C0 +FUN_020707C0: ; 0x020707C0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x4] + mov r4, #0x0 +_020707CA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207008C + cmp r0, #0x1 + bne _02070870 + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r3, [sp, #0x4] + add r6, r0, r2 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r2, [r3, r2] + ldrh r3, [r6, #0x2] + add r0, r5, #0x0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020703C4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072F78 + ldrh r2, [r6, #0x4] + ldrh r3, [r6, #0x6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020737D0 + ldrh r2, [r6, #0x8] + ldrh r3, [r6, #0xa] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020739E4 + mov r0, #0x2c + add r7, r4, #0x0 + mul r7, r0 + ldr r2, _02070898 ; =0x0000070C + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073A78 + mov r2, #0x4 + mov r3, #0x6 + ldrsh r2, [r6, r2] + ldrsh r3, [r6, r3] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073AD8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B3C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B0C + ldr r2, _0207089C ; =0x0000070E + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + b _0207088A +_02070870: + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r6, [sp, #0x4] + add r3, r0, r2 + ldrsh r2, [r6, r2] + mov r6, #0x2 + ldrsh r3, [r3, r6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02070988 +_0207088A: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _020707CA + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02070898: .word 0x0000070C +_0207089C: .word 0x0000070E + + thumb_func_start FUN_020708A0 +FUN_020708A0: ; 0x020708A0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + str r1, [sp, #0x4] + mov r4, #0x0 +_020708AA: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207008C + cmp r0, #0x1 + bne _02070958 + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r3, [sp, #0x4] + add r6, r0, r2 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r2, [r3, r2] + ldrh r3, [r6, #0x2] + add r0, r5, #0x0 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r1, r4, #0x0 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020703C4 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072FDC + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073024 + ldrh r2, [r6, #0x4] + ldrh r3, [r6, #0x6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020737D0 + ldrh r2, [r6, #0x8] + ldrh r3, [r6, #0xa] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020739E4 + mov r0, #0x2c + add r7, r4, #0x0 + mul r7, r0 + ldr r2, _02070980 ; =0x0000070C + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073A78 + mov r2, #0x4 + mov r3, #0x6 + ldrsh r2, [r6, r2] + ldrsh r3, [r6, r3] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073AD8 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B3C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073B0C + ldr r2, _02070984 ; =0x0000070E + add r3, r5, r7 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + b _02070972 +_02070958: + mov r0, #0xc + add r2, r4, #0x0 + mul r2, r0 + ldr r0, [sp, #0x4] + ldr r6, [sp, #0x4] + add r3, r0, r2 + ldrsh r2, [r6, r2] + mov r6, #0x2 + ldrsh r3, [r3, r6] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02070988 +_02070972: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _020708AA + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02070980: .word 0x0000070C +_02070984: .word 0x0000070E + + thumb_func_start FUN_02070988 +FUN_02070988: ; 0x02070988 + push {r4-r7, lr} + sub sp, #0x1c + add r7, r1, #0x0 + add r4, r2, #0x0 + mov r1, #0x10 + mov r2, #0xf9 + add r5, r0, #0x0 + lsl r2, r2, #0x2 + add r6, r3, #0x0 + lsl r3, r6, #0x18 + str r1, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + add r2, r5, r2 + str r2, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + lsl r2, r4, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_02018170 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + lsl r2, r4, #0x18 + lsl r3, r6, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_020186B4 + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x7 + bl FUN_02073A4C + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_02073A78 + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02073B3C + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_020709FC +FUN_020709FC: ; 0x020709FC + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _02070A78 ; =0x000005A4 + add r6, r1, #0x0 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + ldr r1, _02070A7C ; =0x00000B23 + ldrb r2, [r5, r1] + lsl r3, r2, #0x19 + lsr r3, r3, #0x1f + cmp r3, #0x1 + bne _02070A2C + add r1, r1, #0x2 + ldrb r1, [r5, r1] + cmp r6, r1 + beq _02070A28 + lsl r1, r2, #0x1a + lsr r1, r1, #0x1a + cmp r6, r1 + bne _02070A2C +_02070A28: + mov r4, #0x7 + b _02070A60 +_02070A2C: + ldr r1, _02070A80 ; =0x00000B25 + ldrb r1, [r5, r1] + cmp r6, r1 + bne _02070A38 + mov r4, #0x4 + b _02070A3A +_02070A38: + mov r4, #0x0 +_02070A3A: + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02070A4E + add r0, r4, #0x2 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _02070A60 +_02070A4E: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02070A88 + cmp r0, #0x1 + bne _02070A60 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02070A60: + ldr r1, _02070A84 ; =0x000004A4 + add r3, r6, #0x3 + add r2, r5, r1 + lsl r1, r4, #0x5 + lsl r3, r3, #0x15 + add r1, r2, r1 + mov r0, #0x2 + mov r2, #0x10 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + pop {r4-r6, pc} + .balign 4 +_02070A78: .word 0x000005A4 +_02070A7C: .word 0x00000B23 +_02070A80: .word 0x00000B25 +_02070A84: .word 0x000004A4 + + thumb_func_start FUN_02070A88 +FUN_02070A88: ; 0x02070A88 + ldr r2, _02070AA0 ; =0x000005A4 + ldr r0, [r0, r2] + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + bne _02070A9A + mov r0, #0x1 + tst r1, r0 + bne _02070A9C +_02070A9A: + mov r0, #0x0 +_02070A9C: + bx lr + nop +_02070AA0: .word 0x000005A4 + + thumb_func_start FUN_02070AA4 +FUN_02070AA4: ; 0x02070AA4 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + mov r3, #0x0 + ldr r0, _02070AF4 ; =0x00000B25 + str r3, [sp, #0x0] + ldrb r0, [r4, r0] + add r1, sp, #0xc + add r1, #0x1 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r0, _02070AF8 ; =0x00000808 + add r2, sp, #0xc + ldr r0, [r4, r0] + bl FUN_0201C638 + ldr r0, _02070AFC ; =0x000005A4 + ldr r1, _02070AF4 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + add r0, #0x21 + ldrb r0, [r0, #0x0] + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _02070B00 ; =0x000005C8 + ldr r0, [r4, r0] + bl FUN_02020130 + ldr r0, _02070B00 ; =0x000005C8 + add r2, sp, #0xc + ldrb r1, [r2, #0x1] + ldrb r2, [r2, #0x0] + ldr r0, [r4, r0] + bl FUN_0200C6E4 + add sp, #0x10 + pop {r4, pc} + nop +_02070AF4: .word 0x00000B25 +_02070AF8: .word 0x00000808 +_02070AFC: .word 0x000005A4 +_02070B00: .word 0x000005C8 + + thumb_func_start FUN_02070B04 +FUN_02070B04: ; 0x02070B04 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02070B28 + cmp r0, #0x1 + bne _02070B14 + mov r0, #0x1 + pop {r4, pc} +_02070B14: + add r0, r4, #0x0 + bl FUN_02070D90 + cmp r0, #0x1 + bne _02070B22 + mov r0, #0x2 + pop {r4, pc} +_02070B22: + mov r0, #0x5 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02070B28 +FUN_02070B28: ; 0x02070B28 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + ldr r0, _02070CC0 ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x4c] + mov r3, #0x4 + tst r1, r0 + beq _02070B3E + mov r3, #0x0 + b _02070B5A +_02070B3E: + mov r1, #0x80 + tst r1, r0 + beq _02070B48 + mov r3, #0x1 + b _02070B5A +_02070B48: + mov r1, #0x20 + tst r1, r0 + beq _02070B52 + mov r3, #0x2 + b _02070B5A +_02070B52: + mov r1, #0x10 + tst r0, r1 + beq _02070B5A + mov r3, #0x3 +_02070B5A: + cmp r3, #0x4 + bne _02070B64 + add sp, #0x4 + mov r0, #0x0 + pop {r3-r6, pc} +_02070B64: + ldr r4, _02070CC4 ; =0x00000B25 + ldrb r0, [r5, r4] + cmp r0, #0x6 + bne _02070BA0 + cmp r3, #0x0 + add r1, sp, #0x0 + bne _02070B92 + add r4, r4, #0x1 + ldrb r6, [r5, r4] + mov r4, #0x1 + ldr r3, _02070CC8 ; =0x020F9468 + and r4, r6 + add r6, r4, #0x2 + mov r4, #0x6 + mul r4, r6 + add r0, r5, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + add r3, r3, r4 + bl FUN_02070D2C + add r6, r0, #0x0 + b _02070C1A +_02070B92: + add r0, r5, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_02070CDC + add r6, r0, #0x0 + b _02070C1A +_02070BA0: + cmp r0, #0x7 + bne _02070C0C + ldr r0, _02070CCC ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + beq _02070BDA + cmp r0, #0x11 + beq _02070BDA + cmp r3, #0x0 + bne _02070BDA + add r4, r4, #0x1 + ldrb r6, [r5, r4] + mov r4, #0x1 + add r1, sp, #0x0 + and r4, r6 + add r6, r4, #0x2 + mov r4, #0x6 + ldr r3, _02070CC8 ; =0x020F9468 + mul r4, r6 + add r0, r5, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + add r3, r3, r4 + bl FUN_02070D2C + add r6, r0, #0x0 + b _02070C1A +_02070BDA: + cmp r3, #0x1 + add r1, sp, #0x0 + bne _02070BFE + ldr r4, _02070CD0 ; =0x00000B26 + ldr r3, _02070CC8 ; =0x020F9468 + ldrb r6, [r5, r4] + mov r4, #0x1 + add r0, r5, #0x0 + and r6, r4 + mov r4, #0x6 + mul r4, r6 + add r1, #0x1 + add r2, sp, #0x0 + add r3, r3, r4 + bl FUN_02070D2C + add r6, r0, #0x0 + b _02070C1A +_02070BFE: + add r0, r5, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_02070CDC + add r6, r0, #0x0 + b _02070C1A +_02070C0C: + add r1, sp, #0x0 + add r0, r5, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_02070CDC + add r6, r0, #0x0 +_02070C1A: + ldr r0, _02070CC4 ; =0x00000B25 + ldrb r0, [r5, r0] + cmp r6, r0 + beq _02070CB8 + cmp r6, #0xff + beq _02070CB8 + add r0, r6, #0x0 + add r0, #0xfa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bhi _02070C3E + ldr r0, _02070CD4 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + b _02070C6E +_02070C3E: + ldr r0, _02070CCC ; =0x000005A4 + add r1, r6, #0x0 + ldr r0, [r5, r0] + add r0, #0x21 + ldrb r0, [r0, #0x0] + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _02070CD4 ; =0x000005C8 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02070CD4 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _02070CD4 ; =0x000005C8 + add r2, sp, #0x0 + ldrb r1, [r2, #0x1] + ldrb r2, [r2, #0x0] + ldr r0, [r5, r0] + bl FUN_0200C6E4 +_02070C6E: + ldr r0, _02070CC4 ; =0x00000B25 + mov r2, #0x0 + ldrb r4, [r5, r0] + strb r6, [r5, r0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020713EC + ldr r1, _02070CC4 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + mov r2, #0x1 + bl FUN_020713EC + ldr r0, _02070CD8 ; =0x000005DC + bl FUN_020054C8 + cmp r4, #0x6 + bhs _02070CA6 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + ldr r0, [r5, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 +_02070CA6: + cmp r4, #0x6 + beq _02070CB2 + cmp r4, #0x7 + beq _02070CB2 + ldr r0, _02070CD0 ; =0x00000B26 + strb r4, [r5, r0] +_02070CB2: + add sp, #0x4 + mov r0, #0x1 + pop {r3-r6, pc} +_02070CB8: + mov r0, #0x0 + add sp, #0x4 + pop {r3-r6, pc} + nop +_02070CC0: .word 0x021C48B8 +_02070CC4: .word 0x00000B25 +_02070CC8: .word 0x020F9468 +_02070CCC: .word 0x000005A4 +_02070CD0: .word 0x00000B26 +_02070CD4: .word 0x000005C8 +_02070CD8: .word 0x000005DC + + thumb_func_start FUN_02070CDC +FUN_02070CDC: ; 0x02070CDC + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + ldr r0, _02070D24 ; =0x00000B25 + add r7, r1, #0x0 + ldrb r4, [r5, r0] + str r2, [sp, #0xc] + add r6, r3, #0x0 +_02070CEC: + mov r0, #0x0 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldr r0, _02070D28 ; =0x00000808 + str r6, [sp, #0x8] + ldr r0, [r5, r0] + ldr r2, [sp, #0xc] + add r1, r7, #0x0 + mov r3, #0x0 + bl FUN_0201C638 + add r4, r0, #0x0 + cmp r4, #0x6 + beq _02070D1C + cmp r4, #0x7 + beq _02070D1C + cmp r4, #0xff + beq _02070D1C + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207007C + cmp r0, #0x0 + beq _02070CEC +_02070D1C: + add r0, r4, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_02070D24: .word 0x00000B25 +_02070D28: .word 0x00000808 + + thumb_func_start FUN_02070D2C +FUN_02070D2C: ; 0x02070D2C + push {r3-r7, lr} + sub sp, #0x10 + add r6, r0, #0x0 + add r7, r1, #0x0 + str r2, [sp, #0xc] + add r5, r3, #0x0 + mov r4, #0x0 +_02070D3A: + cmp r4, #0x6 + beq _02070D70 + ldrb r1, [r5, r4] + add r0, r6, #0x0 + bl FUN_0207007C + cmp r0, #0x0 + beq _02070D68 + mov r3, #0x0 + str r3, [sp, #0x0] + ldrb r0, [r5, r4] + ldr r2, [sp, #0xc] + add r1, r7, #0x0 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r0, _02070D8C ; =0x00000808 + ldr r0, [r6, r0] + bl FUN_0201C638 + add sp, #0x10 + ldrb r0, [r5, r4] + pop {r3-r7, pc} +_02070D68: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + b _02070D3A +_02070D70: + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r0, _02070D8C ; =0x00000808 + ldr r2, [sp, #0xc] + ldr r0, [r6, r0] + add r1, r7, #0x0 + bl FUN_0201C638 + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02070D8C: .word 0x00000808 + + thumb_func_start FUN_02070D90 +FUN_02070D90: ; 0x02070D90 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bl FUN_02071870 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02070E42 + ldr r1, _02070E48 ; =0x00000B25 + mov r2, #0x0 + ldrb r4, [r5, r1] + strb r0, [r5, r1] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020713EC + ldr r1, _02070E48 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + mov r2, #0x1 + bl FUN_020713EC + cmp r4, #0x6 + bhs _02070DCC + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 +_02070DCC: + mov r3, #0x0 + ldr r0, _02070E48 ; =0x00000B25 + str r3, [sp, #0x0] + ldrb r0, [r5, r0] + add r1, sp, #0xc + add r1, #0x1 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r0, _02070E4C ; =0x00000808 + add r2, sp, #0xc + ldr r0, [r5, r0] + bl FUN_0201C638 + ldr r0, _02070E50 ; =0x000005A4 + ldr r1, _02070E48 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + add r0, #0x21 + ldrb r0, [r0, #0x0] + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _02070E54 ; =0x000005C8 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02070E54 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _02070E54 ; =0x000005C8 + add r2, sp, #0xc + ldrb r1, [r2, #0x1] + ldrb r2, [r2, #0x0] + ldr r0, [r5, r0] + bl FUN_0200C6E4 + mov r0, #0xb2 + mov r1, #0x1 + lsl r0, r0, #0x4 + strb r1, [r5, r0] + add r1, r0, #0x5 + ldrb r1, [r5, r1] + add r0, r0, #0x1 + strb r1, [r5, r0] + ldr r0, _02070E58 ; =0x000005E4 + bl FUN_020054C8 + cmp r4, #0x6 + beq _02070E3C + cmp r4, #0x7 + beq _02070E3C + ldr r0, _02070E5C ; =0x00000B26 + strb r4, [r5, r0] +_02070E3C: + add sp, #0x10 + mov r0, #0x1 + pop {r3-r5, pc} +_02070E42: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_02070E48: .word 0x00000B25 +_02070E4C: .word 0x00000808 +_02070E50: .word 0x000005A4 +_02070E54: .word 0x000005C8 +_02070E58: .word 0x000005E4 +_02070E5C: .word 0x00000B26 + + thumb_func_start FUN_02070E60 +FUN_02070E60: ; 0x02070E60 + push {r4-r6, lr} + sub sp, #0x10 + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + add r0, #0xfa + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bhi _02070E80 + ldr r0, _02070F04 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + b _02070ECC +_02070E80: + mov r3, #0x0 + ldr r0, _02070F08 ; =0x00000B25 + str r3, [sp, #0x0] + ldrb r0, [r5, r0] + add r1, sp, #0xc + add r1, #0x1 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + ldr r0, _02070F0C ; =0x00000808 + add r2, sp, #0xc + ldr r0, [r5, r0] + bl FUN_0201C638 + ldr r0, _02070F10 ; =0x000005A4 + add r1, r6, #0x0 + ldr r0, [r5, r0] + add r0, #0x21 + ldrb r0, [r0, #0x0] + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _02070F04 ; =0x000005C8 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02070F04 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _02070F04 ; =0x000005C8 + add r2, sp, #0xc + ldrb r1, [r2, #0x1] + ldrb r2, [r2, #0x0] + ldr r0, [r5, r0] + bl FUN_0200C6E4 +_02070ECC: + ldr r0, _02070F08 ; =0x00000B25 + mov r2, #0x0 + ldrb r4, [r5, r0] + strb r6, [r5, r0] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020713EC + ldr r1, _02070F08 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + mov r2, #0x1 + bl FUN_020713EC + cmp r4, #0x6 + bhs _02070EFE + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020717E8 + ldr r0, [r5, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 +_02070EFE: + add sp, #0x10 + pop {r4-r6, pc} + nop +_02070F04: .word 0x000005C8 +_02070F08: .word 0x00000B25 +_02070F0C: .word 0x00000808 +_02070F10: .word 0x000005A4 + + thumb_func_start FUN_02070F14 +FUN_02070F14: ; 0x02070F14 + push {r3-r4, lr} + sub sp, #0x4 + mov r1, #0xb2 + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldrb r2, [r4, r1] + cmp r2, #0x0 + beq _02070F8A + cmp r2, #0x1 + beq _02070F30 + cmp r2, #0x2 + beq _02070F70 + add sp, #0x4 + pop {r3-r4, pc} +_02070F30: + add r0, r1, #0x1 + ldrb r0, [r4, r0] + add r1, sp, #0x0 + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_02071850 + add r3, sp, #0x0 + mov r1, #0x2 + mov r2, #0x0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + add r0, r4, #0x0 + bl FUN_02073D1C + ldr r1, _02070F90 ; =0x00000B21 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + mov r2, #0x2 + bl FUN_020717E8 + ldr r0, [r4, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 + mov r0, #0xb2 + lsl r0, r0, #0x4 + ldrb r1, [r4, r0] + add sp, #0x4 + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r4, pc} +_02070F70: + add r1, r1, #0x1 + ldrb r1, [r4, r1] + mov r2, #0x1 + bl FUN_020717E8 + ldr r0, [r4, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 + mov r0, #0xb2 + mov r1, #0x0 + lsl r0, r0, #0x4 + strb r1, [r4, r0] +_02070F8A: + add sp, #0x4 + pop {r3-r4, pc} + nop +_02070F90: .word 0x00000B21 + + thumb_func_start FUN_02070F94 +FUN_02070F94: ; 0x02070F94 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020710AC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _0207104A + ldr r0, _020710B0 ; =0x00000B25 + ldrb r1, [r4, r0] + cmp r1, #0x6 + bne _02070FAE + mov r0, #0x4 + pop {r4, pc} +_02070FAE: + cmp r1, #0x7 + bne _02070FC6 + ldr r0, _020710B4 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _020710B8 ; =0x00000B23 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _0207104A + mov r0, #0x3 + pop {r4, pc} +_02070FC6: + ldr r0, _020710BC ; =0x000005A4 + ldr r2, [r4, r0] + add r2, #0x20 + ldrb r2, [r2, #0x0] + cmp r2, #0x3 + beq _02070FD6 + cmp r2, #0x13 + bne _02070FE0 +_02070FD6: + ldr r0, _020710B4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x0 + pop {r4, pc} +_02070FE0: + cmp r2, #0x14 + beq _02070FE8 + cmp r2, #0xe + bne _0207100C +_02070FE8: + mov r0, #0x2c + mul r0, r1 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02071002 + ldr r0, _020710B4 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x0 + pop {r4, pc} +_02071002: + ldr r0, _020710C0 ; =0x000005F2 + bl FUN_020054C8 + mov r0, #0x5 + pop {r4, pc} +_0207100C: + cmp r2, #0xf + bne _0207103A + mov r2, #0x2c + mul r2, r1 + mov r1, #0x71 + add r2, r4, r2 + lsl r1, r1, #0x4 + ldrb r1, [r2, r1] + cmp r1, #0x0 + bne _02071030 + add r0, #0x38 + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_020710C4 + mov r0, #0x0 + pop {r4, pc} +_02071030: + add r0, #0x4e + bl FUN_020054C8 + mov r0, #0x5 + pop {r4, pc} +_0207103A: + add r0, #0x38 + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_020710C4 + mov r0, #0x0 + pop {r4, pc} +_0207104A: + ldr r0, _020710AC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x2 + tst r0, r1 + beq _0207106E + ldr r0, _020710B8 ; =0x00000B23 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _0207106E + ldr r0, _020710B4 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _020710B0 ; =0x00000B25 + mov r1, #0x7 + strb r1, [r4, r0] + mov r0, #0x3 + pop {r4, pc} +_0207106E: + add r0, r4, #0x0 + bl FUN_02070B04 + cmp r0, #0x2 + bne _020710AA + ldr r1, _020710BC ; =0x000005A4 + ldr r1, [r4, r1] + add r1, #0x20 + ldrb r1, [r1, #0x0] + cmp r1, #0x14 + beq _0207108E + add r1, #0xf2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x1 + bhi _020710AA +_0207108E: + ldr r1, _020710B0 ; =0x00000B25 + ldrb r2, [r4, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r4, r1 + mov r1, #0x71 + lsl r1, r1, #0x4 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _020710AA + ldr r0, _020710C0 ; =0x000005F2 + bl FUN_020054C8 + mov r0, #0x5 +_020710AA: + pop {r4, pc} + .balign 4 +_020710AC: .word 0x021C48B8 +_020710B0: .word 0x00000B25 +_020710B4: .word 0x000005DC +_020710B8: .word 0x00000B23 +_020710BC: .word 0x000005A4 +_020710C0: .word 0x000005F2 + + thumb_func_start FUN_020710C4 +FUN_020710C4: ; 0x020710C4 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + mov r0, #0xc + mov r1, #0x8 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, _02071174 ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0xf + bgt _020710FC + bge _02071124 + cmp r0, #0x2 + bgt _0207113C + cmp r0, #0x0 + blt _0207113C + beq _0207110C + cmp r0, #0x2 + beq _02071118 + b _0207113C +_020710FC: + cmp r0, #0x12 + bgt _0207113C + cmp r0, #0x11 + blt _0207113C + beq _02071118 + cmp r0, #0x12 + beq _02071130 + b _0207113C +_0207110C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207117C + add r2, r0, #0x0 + b _02071146 +_02071118: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020712F0 + add r2, r0, #0x0 + b _02071146 +_02071124: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02071274 + add r2, r0, #0x0 + b _02071146 +_02071130: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02071280 + add r2, r0, #0x0 + b _02071146 +_0207113C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020712B4 + add r2, r0, #0x0 +_02071146: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072844 + mov r0, #0xc + add r1, r4, #0x0 + bl FUN_02016A8C + add r0, r5, #0x0 + bl FUN_0207295C + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731D4 + ldr r0, _02071178 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_0200C664 + pop {r3-r5, pc} + .balign 4 +_02071174: .word 0x000005A4 +_02071178: .word 0x000005C8 + + thumb_func_start FUN_0207117C +FUN_0207117C: ; 0x0207117C + push {r4-r7, lr} + sub sp, #0xc + str r1, [sp, #0x4] + ldr r1, _02071268 ; =0x000005A4 + str r0, [sp, #0x0] + ldr r0, [r0, r1] + ldr r2, _0207126C ; =0x00000B25 + ldr r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldrb r1, [r1, r2] + bl FUN_0206B9B0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + mov r1, #0x1 + strb r1, [r0, #0x0] + mov r4, #0x0 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r1, _02071268 ; =0x000005A4 + ldr r0, [sp, #0x0] + ldr r0, [r0, r1] + ldr r0, [r0, #0x1c] + bl FUN_02060144 + cmp r0, #0x0 + bne _02071258 + ldr r1, _0207126C ; =0x00000B25 + ldr r0, [sp, #0x0] + ldrb r1, [r0, r1] + mov r0, #0x2c + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x0] + add r1, r0, r2 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _0207124C + add r6, r4, #0x0 +_020711D0: + add r1, r6, #0x0 + ldr r0, [sp, #0x8] + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + beq _02071210 + add r0, r7, #0x0 + bl FUN_02071948 + cmp r0, #0xff + beq _02071206 + ldr r1, [sp, #0x4] + add r2, r4, #0x0 + strb r0, [r1, r5] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_020727FC + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 +_02071206: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x4 + blo _020711D0 +_02071210: + ldr r0, [sp, #0x4] + mov r1, #0x0 + strb r1, [r0, r5] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r1, _0207126C ; =0x00000B25 + ldr r0, [sp, #0x0] + ldrb r1, [r0, r1] + mov r0, #0x2c + add r2, r1, #0x0 + mul r2, r0 + ldr r0, [sp, #0x0] + add r1, r0, r2 + ldr r0, _02071270 ; =0x0000070C + ldrh r0, [r1, r0] + bl FUN_0206EA98 + cmp r0, #0x1 + bne _0207123E + mov r1, #0x5 + ldr r0, [sp, #0x4] + b _02071242 +_0207123E: + ldr r0, [sp, #0x4] + mov r1, #0x2 +_02071242: + strb r1, [r0, r5] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + b _02071258 +_0207124C: + ldr r0, [sp, #0x4] + add r1, r4, #0x0 + strb r1, [r0, r5] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_02071258: + ldr r0, [sp, #0x4] + mov r1, #0x9 + strb r1, [r0, r5] + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02071268: .word 0x000005A4 +_0207126C: .word 0x00000B25 +_02071270: .word 0x0000070C + + thumb_func_start FUN_02071274 +FUN_02071274: ; 0x02071274 + mov r0, #0xe + strb r0, [r1, #0x0] + mov r0, #0x9 + strb r0, [r1, #0x1] + mov r0, #0x2 + bx lr + + thumb_func_start FUN_02071280 +FUN_02071280: ; 0x02071280 + ldr r2, _020712B0 ; =0x00000B25 + ldrb r3, [r0, r2] + mov r2, #0x2c + mul r2, r3 + add r2, r0, r2 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r2, r0] + cmp r0, #0x0 + bne _020712A4 + mov r0, #0x8 + strb r0, [r1, #0x0] + mov r0, #0x1 + strb r0, [r1, #0x1] + mov r0, #0x9 + strb r0, [r1, #0x2] + mov r0, #0x3 + bx lr +_020712A4: + mov r0, #0x1 + strb r0, [r1, #0x0] + mov r0, #0x9 + strb r0, [r1, #0x1] + mov r0, #0x2 + bx lr + .balign 4 +_020712B0: .word 0x00000B25 + + thumb_func_start FUN_020712B4 +FUN_020712B4: ; 0x020712B4 + ldr r2, _020712E8 ; =0x00000B25 + ldrb r3, [r0, r2] + mov r2, #0x2c + mul r2, r3 + add r2, r0, r2 + ldr r0, _020712EC ; =0x0000070E + ldrh r0, [r2, r0] + lsl r0, r0, #0x10 + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _020712DA + mov r0, #0xd + strb r0, [r1, #0x0] + mov r0, #0x1 + strb r0, [r1, #0x1] + mov r0, #0x9 + strb r0, [r1, #0x2] + mov r0, #0x3 + bx lr +_020712DA: + mov r0, #0x1 + strb r0, [r1, #0x0] + mov r0, #0x9 + strb r0, [r1, #0x1] + mov r0, #0x2 + bx lr + nop +_020712E8: .word 0x00000B25 +_020712EC: .word 0x0000070E + + thumb_func_start FUN_020712F0 +FUN_020712F0: ; 0x020712F0 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, _0207133C ; =0x00000B25 + ldrb r1, [r0, r1] + bl FUN_02071340 + cmp r0, #0x0 + beq _0207130A + cmp r0, #0x1 + beq _02071316 + cmp r0, #0x2 + beq _02071326 + b _02071336 +_0207130A: + mov r0, #0x1 + strb r0, [r4, #0x0] + mov r0, #0x9 + strb r0, [r4, #0x1] + mov r0, #0x2 + pop {r4, pc} +_02071316: + mov r0, #0xb + strb r0, [r4, #0x0] + mov r0, #0x1 + strb r0, [r4, #0x1] + mov r0, #0x9 + strb r0, [r4, #0x2] + mov r0, #0x3 + pop {r4, pc} +_02071326: + mov r0, #0xc + strb r0, [r4, #0x0] + mov r0, #0x1 + strb r0, [r4, #0x1] + mov r0, #0x9 + strb r0, [r4, #0x2] + mov r0, #0x3 + pop {r4, pc} +_02071336: + mov r0, #0x0 + pop {r4, pc} + nop +_0207133C: .word 0x00000B25 + + thumb_func_start FUN_02071340 +FUN_02071340: ; 0x02071340 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _020713E0 ; =0x000005A4 + add r4, r1, #0x0 + ldr r2, [r5, r0] + ldr r0, [r2, #0x14] + cmp r0, #0x0 + beq _0207136E + ldr r0, [r2, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + ldr r0, _020713E0 ; =0x000005A4 + ldr r2, _020713E4 ; =0x00000B34 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + ldr r0, [r0, #0x14] + bl FUN_0206BB84 + cmp r0, #0x0 + bne _0207136E + mov r0, #0x0 + pop {r4-r6, pc} +_0207136E: + ldr r0, _020713E0 ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x11 + bne _02071390 + mov r0, #0x2c + mul r0, r4 + add r1, r5, r0 + ldr r0, _020713E8 ; =0x00000704 + ldrh r0, [r1, r0] + bl FUN_0206A964 + cmp r0, #0x1 + bne _02071390 + mov r0, #0x0 + pop {r4-r6, pc} +_02071390: + ldr r1, _020713E0 ; =0x000005A4 + mov r0, #0x0 + ldr r2, [r5, r1] + add r1, r2, #0x0 + add r1, #0x32 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x18 + lsr r3, r1, #0x1c + beq _020713BC + add r1, r4, #0x1 +_020713A4: + add r6, r2, r0 + add r6, #0x2c + ldrb r6, [r6, #0x0] + cmp r1, r6 + bne _020713B2 + mov r0, #0x2 + pop {r4-r6, pc} +_020713B2: + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, r3 + blo _020713A4 +_020713BC: + mov r0, #0x2c + mul r0, r4 + add r3, r5, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r1, [r3, r0] + cmp r1, #0x1 + beq _020713D8 + sub r0, r0, #0x6 + add r2, #0x33 + ldrh r1, [r3, r0] + ldrb r0, [r2, #0x0] + cmp r1, r0 + ble _020713DC +_020713D8: + mov r0, #0x0 + pop {r4-r6, pc} +_020713DC: + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 +_020713E0: .word 0x000005A4 +_020713E4: .word 0x00000B34 +_020713E8: .word 0x00000704 + + thumb_func_start FUN_020713EC +FUN_020713EC: ; 0x020713EC + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r2, #0x0 + cmp r4, #0x6 + bne _02071426 + mov r0, #0x5d + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + bl FUN_020201DC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r6, #0x0 + bne _02071410 + mov r0, #0x2 + and r0, r1 + b _02071416 +_02071410: + mov r0, #0x2 + and r0, r1 + add r0, r0, #0x1 +_02071416: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x5d + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + bl FUN_02020130 + pop {r4-r6, pc} +_02071426: + cmp r4, #0x7 + bne _02071454 + ldr r0, _020714B4 ; =0x000005D4 + ldr r0, [r5, r0] + bl FUN_020201DC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r6, #0x0 + bne _02071440 + mov r0, #0x2 + and r0, r1 + b _02071446 +_02071440: + mov r0, #0x2 + and r0, r1 + add r0, r0, #0x1 +_02071446: + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, _020714B4 ; =0x000005D4 + ldr r0, [r5, r0] + bl FUN_02020130 + pop {r4-r6, pc} +_02071454: + cmp r6, #0x0 + ldr r1, _020714B8 ; =0x00000716 + bne _02071482 + mov r0, #0x2c + add r3, r5, r1 + mul r0, r4 + ldrsh r2, [r3, r0] + add r1, r1, #0x2 + sub r2, r2, #0x2 + strh r2, [r3, r0] + add r2, r5, r1 + ldrsh r1, [r2, r0] + sub r1, r1, #0x2 + strh r1, [r2, r0] + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + mov r1, #0x0 + bl FUN_02020130 + b _020714A8 +_02071482: + mov r0, #0x2c + add r3, r5, r1 + mul r0, r4 + ldrsh r2, [r3, r0] + add r1, r1, #0x2 + add r2, r2, #0x2 + strh r2, [r3, r0] + add r2, r5, r1 + ldrsh r1, [r2, r0] + add r1, r1, #0x2 + strh r1, [r2, r0] + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + mov r1, #0x1 + bl FUN_02020130 +_020714A8: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_020709FC + pop {r4-r6, pc} + nop +_020714B4: .word 0x000005D4 +_020714B8: .word 0x00000716 + + thumb_func_start FUN_020714BC +FUN_020714BC: ; 0x020714BC + cmp r1, #0x0 + beq _020714C8 + cmp r0, #0x0 + beq _020714CC + cmp r1, #0x1 + bne _020714CC +_020714C8: + mov r0, #0x1 + bx lr +_020714CC: + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020714D0 +FUN_020714D0: ; 0x020714D0 + push {r4, lr} + ldr r1, _02071550 ; =0x021C48B8 + add r4, r0, #0x0 + ldr r2, [r1, #0x48] + mov r1, #0x1 + tst r1, r2 + beq _0207150C + ldr r0, _02071554 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02071558 ; =0x00000B25 + ldrb r1, [r4, r0] + cmp r1, #0x6 + bhs _020714F8 + sub r0, r0, #0x2 + ldrb r0, [r4, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1a + cmp r1, r0 + bne _02071502 +_020714F8: + add r0, r4, #0x0 + bl FUN_02074538 + mov r0, #0x3 + pop {r4, pc} +_02071502: + add r0, r4, #0x0 + bl FUN_02074584 + mov r0, #0x0 + pop {r4, pc} +_0207150C: + mov r1, #0x2 + tst r1, r2 + beq _02071522 + ldr r0, _02071554 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_02074538 + mov r0, #0x3 + pop {r4, pc} +_02071522: + bl FUN_02070B04 + cmp r0, #0x2 + bne _0207154C + ldr r0, _02071558 ; =0x00000B25 + ldrb r1, [r4, r0] + sub r0, r0, #0x2 + ldrb r0, [r4, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1a + cmp r1, r0 + bne _02071544 + add r0, r4, #0x0 + bl FUN_02074538 + mov r0, #0x3 + pop {r4, pc} +_02071544: + add r0, r4, #0x0 + bl FUN_02074584 + mov r0, #0x0 +_0207154C: + pop {r4, pc} + nop +_02071550: .word 0x021C48B8 +_02071554: .word 0x000005DC +_02071558: .word 0x00000B25 + + thumb_func_start FUN_0207155C +FUN_0207155C: ; 0x0207155C + push {r3-r5, lr} + sub sp, #0x8 + ldr r1, _02071738 ; =0x000005A4 + add r4, r0, #0x0 + ldr r3, [r4, r1] + mov r0, #0x0 + add r1, r3, #0x0 + add r1, #0x32 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + beq _02071606 +_02071574: + add r2, r3, r0 + add r2, #0x2c + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _020715FC + add r3, #0x32 + ldrb r0, [r3, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + cmp r0, #0x6 + bhi _020715E0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02071596: ; jump table (using 16-bit offset) + .short _020715E0 - _02071596 - 2; case 0 + .short _020715E0 - _02071596 - 2; case 1 + .short _020715A4 - _02071596 - 2; case 2 + .short _020715B0 - _02071596 - 2; case 3 + .short _020715BC - _02071596 - 2; case 4 + .short _020715C8 - _02071596 - 2; case 5 + .short _020715D4 - _02071596 - 2; case 6 +_020715A4: + add r0, r4, #0x0 + mov r1, #0x6b + mov r2, #0x1 + bl FUN_020731E8 + b _020715EA +_020715B0: + add r0, r4, #0x0 + mov r1, #0x77 + mov r2, #0x1 + bl FUN_020731E8 + b _020715EA +_020715BC: + add r0, r4, #0x0 + mov r1, #0x78 + mov r2, #0x1 + bl FUN_020731E8 + b _020715EA +_020715C8: + add r0, r4, #0x0 + mov r1, #0x79 + mov r2, #0x1 + bl FUN_020731E8 + b _020715EA +_020715D4: + add r0, r4, #0x0 + mov r1, #0x7a + mov r2, #0x1 + bl FUN_020731E8 + b _020715EA +_020715E0: + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731E8 +_020715EA: + ldr r0, _0207173C ; =0x00000B22 + mov r1, #0x13 + strb r1, [r4, r0] + ldr r0, _02071740 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x14 + pop {r3-r5, pc} +_020715FC: + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, r1 + blo _02071574 +_02071606: + ldr r0, [r3, #0x14] + cmp r0, #0x0 + beq _020716CA + ldr r2, _02071744 ; =0x00000B34 + ldr r1, [r3, #0x0] + ldr r2, [r4, r2] + add r3, #0x2c + bl FUN_0206BC60 + cmp r0, #0x3 + bhi _020716CA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02071628: ; jump table (using 16-bit offset) + .short _020716CA - _02071628 - 2; case 0 + .short _02071630 - _02071628 - 2; case 1 + .short _02071692 - _02071628 - 2; case 2 + .short _020716AE - _02071628 - 2; case 3 +_02071630: + ldr r0, _02071748 ; =0x0000069C + mov r1, #0xb8 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + ldr r0, _02071738 ; =0x000005A4 + mov r1, #0x3 + ldr r0, [r4, r0] + ldr r0, [r0, #0x14] + bl FUN_02023B0C + mov r1, #0x0 + add r2, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r3, #0x3 + bl FUN_0200AD38 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207173C ; =0x00000B22 + mov r1, #0x13 + strb r1, [r4, r0] + ldr r0, _02071740 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x14 + pop {r3-r5, pc} +_02071692: + add r0, r4, #0x0 + mov r1, #0xb6 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207173C ; =0x00000B22 + mov r1, #0x13 + strb r1, [r4, r0] + ldr r0, _02071740 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x14 + pop {r3-r5, pc} +_020716AE: + add r0, r4, #0x0 + mov r1, #0xb7 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207173C ; =0x00000B22 + mov r1, #0x13 + strb r1, [r4, r0] + ldr r0, _02071740 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x14 + pop {r3-r5, pc} +_020716CA: + ldr r0, _02071738 ; =0x000005A4 + ldr r0, [r4, r0] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x11 + bne _02071722 + add r0, r4, #0x0 + bl FUN_0207174C + cmp r0, #0x0 + beq _02071722 + cmp r0, #0x1 + beq _020716EA + cmp r0, #0x2 + beq _02071706 + b _02071722 +_020716EA: + add r0, r4, #0x0 + mov r1, #0xb6 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207173C ; =0x00000B22 + mov r1, #0x13 + strb r1, [r4, r0] + ldr r0, _02071740 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x14 + pop {r3-r5, pc} +_02071706: + add r0, r4, #0x0 + mov r1, #0xb7 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207173C ; =0x00000B22 + mov r1, #0x13 + strb r1, [r4, r0] + ldr r0, _02071740 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x14 + pop {r3-r5, pc} +_02071722: + ldr r0, _02071738 ; =0x000005A4 + mov r2, #0x0 + ldr r1, [r4, r0] + add r0, #0x38 + add r1, #0x23 + strb r2, [r1, #0x0] + bl FUN_020054C8 + mov r0, #0x1b + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02071738: .word 0x000005A4 +_0207173C: .word 0x00000B22 +_02071740: .word 0x000005F2 +_02071744: .word 0x00000B34 +_02071748: .word 0x0000069C + + thumb_func_start FUN_0207174C +FUN_0207174C: ; 0x0207174C + push {r4-r7} + add r5, r0, #0x0 + mov r0, #0x0 + mov r12, r0 + ldr r0, _020717E0 ; =0x000005A4 + ldr r4, [r5, r0] +_02071758: + mov r0, r12 + add r0, r4, r0 + add r0, #0x2c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _020717DA + mov r0, r12 + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0x6 + bhs _020717CC + mov r0, r12 + add r7, r4, r0 +_02071774: + add r0, r4, r3 + add r0, #0x2c + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _020717CC + add r0, r4, r3 + add r0, #0x2c + ldrb r1, [r0, #0x0] + mov r0, #0x2c + ldr r6, _020717E4 ; =0x000006D8 + mul r0, r1 + add r2, r5, r0 + add r0, r7, #0x0 + add r0, #0x2c + ldrb r1, [r0, #0x0] + mov r0, #0x2c + ldrh r6, [r2, r6] + mul r0, r1 + add r1, r5, r0 + ldr r0, _020717E4 ; =0x000006D8 + ldrh r0, [r1, r0] + cmp r0, r6 + bne _020717A8 + mov r0, #0x1 + pop {r4-r7} + bx lr +_020717A8: + mov r0, #0x6e + lsl r0, r0, #0x4 + ldrh r0, [r1, r0] + cmp r0, #0x0 + beq _020717C2 + mov r1, #0x6e + lsl r1, r1, #0x4 + ldrh r1, [r2, r1] + cmp r0, r1 + bne _020717C2 + mov r0, #0x2 + pop {r4-r7} + bx lr +_020717C2: + add r0, r3, #0x1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0x6 + blo _02071774 +_020717CC: + mov r0, r12 + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r12, r0 + cmp r0, #0x5 + blo _02071758 +_020717DA: + mov r0, #0x0 + pop {r4-r7} + bx lr + .balign 4 +_020717E0: .word 0x000005A4 +_020717E4: .word 0x000006D8 + + thumb_func_start FUN_020717E8 +FUN_020717E8: ; 0x020717E8 + push {r3-r7, lr} + ldr r0, [r0, #0x0] + add r5, r1, #0x0 + add r4, r2, #0x0 + mov r1, #0x4 + bl FUN_0201886C + lsl r1, r5, #0x1 + mov r3, #0x19 + add r5, r4, #0x0 + mul r5, r3 + ldr r3, _02071844 ; =0x00001005 + mov r2, #0x0 + add r3, r5, r3 + lsl r3, r3, #0x10 + lsr r4, r3, #0x10 + ldr r3, _02071848 ; =0x020F944C + ldrb r3, [r3, r1] + lsl r3, r3, #0x1 + add r0, r0, r3 + mov r12, r0 + ldr r0, _0207184C ; =0x020F944D + ldrb r7, [r0, r1] +_02071816: + lsl r0, r2, #0x2 + add r5, r2, r0 + add r0, r7, r2 + lsl r1, r0, #0x6 + mov r0, r12 + mov r3, #0x0 + add r6, r0, r1 +_02071824: + add r0, r3, r5 + add r1, r4, r0 + lsl r0, r3, #0x1 + strh r1, [r6, r0] + add r0, r3, #0x1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0x5 + blo _02071824 + add r0, r2, #0x1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #0x5 + blo _02071816 + pop {r3-r7, pc} + nop +_02071844: .word 0x00001005 +_02071848: .word 0x020F944C +_0207184C: .word 0x020F944D + + thumb_func_start FUN_02071850 +FUN_02071850: ; 0x02071850 + lsl r3, r0, #0x1 + ldr r0, _02071868 ; =0x020F944C + ldrb r0, [r0, r3] + lsl r0, r0, #0x3 + add r0, #0x14 + strh r0, [r1, #0x0] + ldr r0, _0207186C ; =0x020F944D + ldrb r0, [r0, r3] + lsl r0, r0, #0x3 + add r0, #0x14 + strh r0, [r2, #0x0] + bx lr + .balign 4 +_02071868: .word 0x020F944C +_0207186C: .word 0x020F944D + + thumb_func_start FUN_02071870 +FUN_02071870: ; 0x02071870 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + bl FUN_0207248C + cmp r0, #0x0 + bne _02071886 + mov r0, #0x0 + add sp, #0x8 + mvn r0, r0 + pop {r3-r5, pc} +_02071886: + ldr r0, _020718C0 ; =0x020F94B8 + bl FUN_02020988 + add r4, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _020718BA + ldr r1, _020718C4 ; =0x0000FFFE + add r0, sp, #0x4 + strh r1, [r0, #0x0] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r3, _020718C8 ; =0x021C48F8 + ldr r0, [r5, #0x0] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + mov r1, #0x4 + bl FUN_0201AFBC + cmp r0, #0x0 + bne _020718BA + mov r0, #0x0 + add sp, #0x8 + mvn r0, r0 + pop {r3-r5, pc} +_020718BA: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_020718C0: .word 0x020F94B8 +_020718C4: .word 0x0000FFFE +_020718C8: .word 0x021C48F8 + + thumb_func_start FUN_020718CC +FUN_020718CC: ; 0x020718CC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0207193C ; =0x000006FC + add r4, r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02001C78 + add r2, r0, #0x0 + mov r0, #0x1 + mvn r0, r0 + cmp r2, r0 + beq _020718EC + add r0, r0, #0x1 + cmp r2, r0 + beq _02071938 + b _02071932 +_020718EC: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02073DB4 + ldr r0, _02071940 ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + beq _0207190E + cmp r0, #0x11 + bne _0207191A +_0207190E: + add r0, r5, #0x0 + mov r1, #0x22 + mov r2, #0x1 + bl FUN_020731C0 + b _02071924 +_0207191A: + add r0, r5, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 +_02071924: + ldr r0, _02071944 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_0200C664 + mov r0, #0x1 + pop {r3-r5, pc} +_02071932: + add r0, r5, #0x0 + add r1, r4, #0x0 + blx r2 +_02071938: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0207193C: .word 0x000006FC +_02071940: .word 0x000005A4 +_02071944: .word 0x000005C8 + + thumb_func_start FUN_02071948 +FUN_02071948: ; 0x02071948 + ldr r2, _0207196C ; =0x020F9544 + mov r3, #0x0 +_0207194C: + lsl r1, r3, #0x1 + ldrh r1, [r2, r1] + cmp r0, r1 + bne _0207195C + add r3, #0xf + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + bx lr +_0207195C: + add r1, r3, #0x1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, #0xf + blo _0207194C + mov r0, #0xff + bx lr + nop +_0207196C: .word 0x020F9544 + + thumb_func_start FUN_02071970 +FUN_02071970: ; 0x02071970 + push {r4-r6, lr} + sub sp, #0x8 + ldr r1, _02071C18 ; =0x00000B2A + add r4, r0, #0x0 + ldrh r2, [r4, r1] + cmp r2, #0x4 + bhi _02071A7A + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0207198A: ; jump table (using 16-bit offset) + .short _02071994 - _0207198A - 2; case 0 + .short _02071AD2 - _0207198A - 2; case 1 + .short _02071B0C - _0207198A - 2; case 2 + .short _02071B34 - _0207198A - 2; case 3 + .short _02071BE0 - _0207198A - 2; case 4 +_02071994: + ldr r2, _02071C1C ; =0x021C48B8 + ldr r3, [r2, #0x48] + mov r2, #0x1 + tst r2, r3 + beq _02071A26 + sub r1, r1, #0x5 + ldrb r1, [r4, r1] + cmp r1, #0x6 + blo _020719B8 + ldr r0, _02071C20 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_02074538 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_020719B8: + bl FUN_02071C48 + cmp r0, #0x0 + beq _020719CA + cmp r0, #0x1 + beq _02071A08 + cmp r0, #0x2 + beq _02071A1A + b _02071A26 +_020719CA: + ldr r0, _02071C24 ; =0x000005EC + bl FUN_020054C8 + ldr r0, _02071C28 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + ldr r0, _02071C2C ; =0x00000B25 + mov r1, #0x2c + ldrb r2, [r4, r0] + mul r1, r2 + add r3, r4, r1 + ldr r1, _02071C30 ; =0x00000708 + ldrh r2, [r3, r1] + sub r1, r1, #0x2 + ldrh r1, [r3, r1] + sub r2, r2, r1 + add r1, r0, #0x3 + ldrh r1, [r4, r1] + cmp r2, r1 + bge _020719FA + add r0, r0, #0x3 + strh r2, [r4, r0] +_020719FA: + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x2 + strh r1, [r4, r0] + mov r1, #0x0 + add r0, r0, #0x2 + strh r1, [r4, r0] + b _02071A26 +_02071A08: + ldr r0, _02071C20 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x1 + strh r1, [r4, r0] + add sp, #0x8 + mov r0, #0x14 + pop {r4-r6, pc} +_02071A1A: + ldr r0, _02071C34 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x1a + pop {r4-r6, pc} +_02071A26: + ldr r0, _02071C1C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x2 + tst r0, r1 + beq _02071A42 + ldr r0, _02071C20 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_02074538 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02071A42: + add r0, r4, #0x0 + bl FUN_02070B04 + cmp r0, #0x2 + bne _02071A7A + ldr r0, _02071C2C ; =0x00000B25 + ldrb r1, [r4, r0] + sub r0, r0, #0x2 + ldrb r0, [r4, r0] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1a + cmp r1, r0 + bne _02071A68 + add r0, r4, #0x0 + bl FUN_02074538 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02071A68: + add r0, r4, #0x0 + bl FUN_02071C48 + cmp r0, #0x0 + beq _02071A7C + cmp r0, #0x1 + beq _02071ABA + cmp r0, #0x2 + beq _02071AC6 +_02071A7A: + b _02071C12 +_02071A7C: + ldr r0, _02071C24 ; =0x000005EC + bl FUN_020054C8 + ldr r0, _02071C28 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + ldr r0, _02071C2C ; =0x00000B25 + mov r1, #0x2c + ldrb r2, [r4, r0] + mul r1, r2 + add r3, r4, r1 + ldr r1, _02071C30 ; =0x00000708 + ldrh r2, [r3, r1] + sub r1, r1, #0x2 + ldrh r1, [r3, r1] + sub r2, r2, r1 + add r1, r0, #0x3 + ldrh r1, [r4, r1] + cmp r2, r1 + bge _02071AAC + add r0, r0, #0x3 + strh r2, [r4, r0] +_02071AAC: + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x2 + strh r1, [r4, r0] + mov r1, #0x0 + add r0, r0, #0x2 + strh r1, [r4, r0] + b _02071C12 +_02071ABA: + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x1 + strh r1, [r4, r0] + add sp, #0x8 + mov r0, #0x14 + pop {r4-r6, pc} +_02071AC6: + ldr r0, _02071C34 ; =0x000005F2 + bl FUN_020054C8 + add sp, #0x8 + mov r0, #0x1a + pop {r4-r6, pc} +_02071AD2: + ldr r0, _02071C1C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + bne _02071ADE + b _02071C12 +_02071ADE: + ldr r0, _02071C20 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + ldr r0, _02071C28 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + add r0, r4, #0x0 + mov r1, #0x24 + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x0 + strh r1, [r4, r0] + b _02071C12 +_02071B0C: + sub r1, r1, #0x7 + ldrb r1, [r4, r1] + mov r2, #0x0 + mvn r2, r2 + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_02071CB4 + cmp r0, #0x1 + bne _02071C12 + ldr r0, _02071C24 ; =0x000005EC + bl FUN_020054C8 + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x3 + strh r1, [r4, r0] + mov r1, #0x0 + add r0, r0, #0x2 + strh r1, [r4, r0] + b _02071C12 +_02071B34: + sub r1, r1, #0x5 + ldrb r1, [r4, r1] + mov r2, #0x1 + bl FUN_02071CB4 + cmp r0, #0x1 + bne _02071C12 + ldr r0, _02071C38 ; =0x000005A4 + ldr r1, _02071C2C ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r6, r0, #0x0 + ldr r0, _02071C3C ; =0x0000069C + mov r1, #0x40 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r1, #0x1 + mov r0, #0x6a + ldr r2, _02071C40 ; =0x00000B2C + str r1, [sp, #0x4] + lsl r0, r0, #0x4 + ldrh r2, [r4, r2] + ldr r0, [r4, r0] + mov r3, #0x3 + bl FUN_0200AD38 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02071C44 ; =0x00000B2E + mov r1, #0x0 + ldrh r0, [r4, r0] + mov r2, #0xc + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0202914C + add r1, r0, #0x0 + ldr r0, _02071C38 ; =0x000005A4 + mov r2, #0x1 + ldr r0, [r4, r0] + ldr r0, [r0, #0x1c] + add r0, #0x98 + ldr r0, [r0, #0x0] + bl FUN_02028AD4 + ldr r0, _02071C18 ; =0x00000B2A + mov r1, #0x4 + strh r1, [r4, r0] + mov r1, #0x1a + sub r0, #0x8 + strb r1, [r4, r0] + add sp, #0x8 + mov r0, #0x14 + pop {r4-r6, pc} +_02071BE0: + ldr r0, _02071C1C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02071C12 + ldr r0, _02071C20 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + ldr r0, _02071C28 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + add r0, r4, #0x0 + bl FUN_02074538 + add sp, #0x8 + mov r0, #0x1 + pop {r4-r6, pc} +_02071C12: + mov r0, #0x1a + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_02071C18: .word 0x00000B2A +_02071C1C: .word 0x021C48B8 +_02071C20: .word 0x000005DC +_02071C24: .word 0x000005EC +_02071C28: .word 0x000005C8 +_02071C2C: .word 0x00000B25 +_02071C30: .word 0x00000708 +_02071C34: .word 0x000005F2 +_02071C38: .word 0x000005A4 +_02071C3C: .word 0x0000069C +_02071C40: .word 0x00000B2C +_02071C44: .word 0x00000B2E + + thumb_func_start FUN_02071C48 +FUN_02071C48: ; 0x02071C48 + push {r3-r5, lr} + ldr r2, _02071CA8 ; =0x00000B25 + add r4, r0, #0x0 + ldrb r1, [r4, r2] + mov r0, #0x2c + mov r3, #0x71 + mul r0, r1 + add r0, r4, r0 + lsl r3, r3, #0x4 + ldrb r5, [r0, r3] + cmp r5, #0x0 + beq _02071C64 + mov r0, #0x2 + pop {r3-r5, pc} +_02071C64: + sub r2, r2, #0x2 + ldrb r2, [r4, r2] + lsl r2, r2, #0x1a + lsr r2, r2, #0x1a + cmp r1, r2 + beq _02071C82 + add r1, r3, #0x0 + sub r1, #0xa + ldrh r1, [r0, r1] + cmp r1, #0x0 + beq _02071C82 + sub r3, #0x8 + ldrh r0, [r0, r3] + cmp r1, r0 + bne _02071CA4 +_02071C82: + ldr r0, _02071CAC ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + add r0, r4, #0x0 + mov r1, #0x83 + mov r2, #0x1 + bl FUN_020731E8 + ldr r1, _02071CB0 ; =0x00000B2A + mov r0, #0x1 + strh r0, [r4, r1] + mov r2, #0x1a + sub r1, #0x8 + strb r2, [r4, r1] + pop {r3-r5, pc} +_02071CA4: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02071CA8: .word 0x00000B25 +_02071CAC: .word 0x000005C8 +_02071CB0: .word 0x00000B2A + + thumb_func_start FUN_02071CB4 +FUN_02071CB4: ; 0x02071CB4 + push {r3-r7, lr} + add r6, r1, #0x0 + mov r3, #0x2c + add r4, r6, #0x0 + mul r4, r3 + ldr r3, _02071D34 ; =0x00000706 + add r5, r0, #0x0 + add r7, r5, r3 + lsl r2, r2, #0x10 + ldrh r3, [r7, r4] + lsr r2, r2, #0x10 + add r2, r3, r2 + ldr r3, _02071D38 ; =0x00000B2C + strh r2, [r7, r4] + ldrh r2, [r5, r3] + add r2, r2, #0x1 + strh r2, [r5, r3] + bl FUN_02072BBC + lsl r1, r6, #0x2 + add r1, r6, r1 + add r1, r1, #0x3 + add r0, r5, #0x4 + lsl r1, r1, #0x4 + add r0, r0, r1 + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072B7C + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072C28 + ldr r1, _02071D3C ; =0x00000B28 + ldrh r0, [r5, r1] + add r1, r1, #0x4 + ldrh r1, [r5, r1] + cmp r0, r1 + beq _02071D14 + ldr r1, _02071D40 ; =0x00000708 + add r2, r5, r4 + ldrh r0, [r7, r4] + ldrh r1, [r2, r1] + cmp r0, r1 + bne _02071D30 +_02071D14: + ldr r0, _02071D44 ; =0x000005A4 + add r1, r6, #0x0 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + ldrh r1, [r7, r4] + add r2, sp, #0x0 + str r1, [sp, #0x0] + mov r1, #0xa2 + bl FUN_02067830 + mov r0, #0x1 + pop {r3-r7, pc} +_02071D30: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02071D34: .word 0x00000706 +_02071D38: .word 0x00000B2C +_02071D3C: .word 0x00000B28 +_02071D40: .word 0x00000708 +_02071D44: .word 0x000005A4 + + thumb_func_start FUN_02071D48 +FUN_02071D48: ; 0x02071D48 + push {r4, lr} + ldr r1, _02071DE0 ; =0x021C48B8 + add r4, r0, #0x0 + ldr r2, [r1, #0x48] + mov r1, #0x1 + tst r1, r2 + beq _02071D96 + ldr r0, _02071DE4 ; =0x00000B25 + ldrb r1, [r4, r0] + cmp r1, #0x7 + bne _02071D72 + sub r0, r0, #0x2 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _02071D92 + ldr r0, _02071DE8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x3 + pop {r4, pc} +_02071D72: + mov r0, #0x2c + mul r0, r1 + add r1, r4, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x0 + bne _02071D8C + ldr r0, _02071DE8 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x0 + pop {r4, pc} +_02071D8C: + ldr r0, _02071DEC ; =0x000005F2 + bl FUN_020054C8 +_02071D92: + mov r0, #0x5 + pop {r4, pc} +_02071D96: + mov r1, #0x2 + tst r1, r2 + beq _02071DBA + ldr r0, _02071DF0 ; =0x00000B23 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bne _02071DB6 + ldr r0, _02071DE8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02071DE4 ; =0x00000B25 + mov r1, #0x7 + strb r1, [r4, r0] + mov r0, #0x3 + pop {r4, pc} +_02071DB6: + mov r0, #0x5 + pop {r4, pc} +_02071DBA: + bl FUN_02070B04 + cmp r0, #0x2 + bne _02071DDE + ldr r1, _02071DE4 ; =0x00000B25 + ldrb r2, [r4, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r4, r1 + mov r1, #0x71 + lsl r1, r1, #0x4 + ldrb r1, [r2, r1] + cmp r1, #0x0 + beq _02071DDE + ldr r0, _02071DEC ; =0x000005F2 + bl FUN_020054C8 + mov r0, #0x5 +_02071DDE: + pop {r4, pc} + .balign 4 +_02071DE0: .word 0x021C48B8 +_02071DE4: .word 0x00000B25 +_02071DE8: .word 0x000005DC +_02071DEC: .word 0x000005F2 +_02071DF0: .word 0x00000B23 + + thumb_func_start FUN_02071DF4 +FUN_02071DF4: ; 0x02071DF4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02071F1C ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r5, r0] + mov r2, #0xc + ldrh r0, [r0, #0x24] + bl FUN_0206E710 + mov r1, #0x22 + add r4, r0, #0x0 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02071E1E + add r0, r4, #0x0 + mov r1, #0x23 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02071E30 +_02071E1E: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0207703C + mov r0, #0x6 + pop {r3-r5, pc} +_02071E30: + add r0, r4, #0x0 + mov r1, #0x24 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02071E5A + add r0, r4, #0x0 + mov r1, #0x25 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02071E5A + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_0207703C + mov r0, #0x6 + pop {r3-r5, pc} +_02071E5A: + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, _02071F1C ; =0x000005A4 + ldr r2, _02071F20 ; =0x00000B25 + ldr r1, [r5, r0] + mov r0, #0xc + str r0, [sp, #0x0] + ldr r0, [r1, #0x0] + ldrh r1, [r1, #0x24] + ldrb r2, [r5, r2] + mov r3, #0x0 + bl FUN_020847F8 + cmp r0, #0x1 + bne _02071F02 + ldr r0, _02071F1C ; =0x000005A4 + mov r2, #0x1 + ldr r1, [r5, r0] + mov r3, #0xc + ldr r0, [r1, #0x4] + ldrh r1, [r1, #0x24] + bl FUN_0206EDD4 + add r0, r4, #0x0 + mov r1, #0x1a + bl FUN_0206E7DC + cmp r0, #0x0 + ldr r0, _02071F1C ; =0x000005A4 + beq _02071ECC + ldr r1, _02071F20 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + ldr r0, _02071F1C ; =0x000005A4 + mov r2, #0x3 + ldr r3, [r5, r0] + add r0, r3, #0x0 + add r0, #0x3c + str r0, [sp, #0x0] + ldrh r3, [r3, #0x24] + mov r0, #0x0 + bl FUN_02069168 + ldr r1, _02071F1C ; =0x000005A4 + ldr r2, [r5, r1] + strh r0, [r2, #0x38] + ldr r0, [r5, r1] + mov r2, #0x8 + add r0, #0x23 + strb r2, [r0, #0x0] + mov r0, #0x1b + pop {r3-r5, pc} +_02071ECC: + ldr r0, [r5, r0] + ldrh r0, [r0, #0x24] + bl FUN_0206EB34 + cmp r0, #0x1 + bne _02071EFA + ldr r0, _02071F1C ; =0x000005A4 + ldr r1, [r5, r0] + ldr r0, [r1, #0x10] + cmp r0, #0x0 + beq _02071EFA + ldr r0, [r1, #0x0] + ldr r1, _02071F20 ; =0x00000B25 + ldrb r1, [r5, r1] + bl FUN_0206B9B0 + add r1, r0, #0x0 + ldr r0, _02071F1C ; =0x000005A4 + ldr r2, [r5, r0] + ldr r0, [r2, #0x10] + ldrh r2, [r2, #0x24] + bl FUN_02061618 +_02071EFA: + add r0, r5, #0x0 + bl FUN_02075C54 + b _02071F18 +_02071F02: + add r0, r5, #0x0 + mov r1, #0x69 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02071F20 ; =0x00000B25 + mov r1, #0x7 + strb r1, [r5, r0] + ldr r1, _02071F24 ; =FUN_02075CE4 + sub r0, #0x11 + str r1, [r5, r0] +_02071F18: + mov r0, #0x5 + pop {r3-r5, pc} + .balign 4 +_02071F1C: .word 0x000005A4 +_02071F20: .word 0x00000B25 +_02071F24: .word FUN_02075CE4 + + thumb_func_start FUN_02071F28 +FUN_02071F28: ; 0x02071F28 + push {r3, lr} + ldr r1, _02071F50 ; =0x00000B25 + ldrb r2, [r0, r1] + mov r1, #0x2c + mul r1, r2 + add r1, r0, r1 + ldr r0, _02071F54 ; =0x0000070C + ldrh r0, [r1, r0] + cmp r0, #0x0 + bne _02071F40 + mov r0, #0x0 + pop {r3, pc} +_02071F40: + bl FUN_0206EA98 + cmp r0, #0x1 + bne _02071F4C + mov r0, #0x2 + pop {r3, pc} +_02071F4C: + mov r0, #0x1 + pop {r3, pc} + .balign 4 +_02071F50: .word 0x00000B25 +_02071F54: .word 0x0000070C + + thumb_func_start FUN_02071F58 +FUN_02071F58: ; 0x02071F58 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02072074 ; =0x000005A4 + ldr r1, _02072078 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r6, r0, #0x0 + mov r7, #0x89 + add r0, r5, #0x0 + lsl r7, r7, #0x2 + bl FUN_02071F28 + cmp r0, #0x0 + beq _02071F84 + cmp r0, #0x1 + beq _02071FF2 + cmp r0, #0x2 + beq _02072044 + b _02072054 +_02071F84: + ldr r0, _02072074 ; =0x000005A4 + ldr r0, [r5, r0] + ldrh r0, [r0, #0x24] + bl FUN_0206EA98 + cmp r0, #0x1 + bne _02071FA0 + ldr r0, _02072074 ; =0x000005A4 + mov r1, #0x6 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r3-r7, pc} +_02071FA0: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072080 + ldr r2, _0207207C ; =0x0000069C + mov r1, #0x76 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + lsl r2, r2, #0x4 + ldr r0, [r5, r2] + sub r2, #0xfc + ldr r2, [r5, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x24] + bl FUN_0200AE38 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r4, #0xb + b _02072054 +_02071FF2: + ldr r2, _0207207C ; =0x0000069C + mov r1, #0x4e + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r2, _02072078 ; =0x00000B25 + mov r3, #0x6a + ldrb r4, [r5, r2] + mov r2, #0x2c + lsl r3, r3, #0x4 + mul r2, r4 + ldr r0, [r5, r3] + add r2, r5, r2 + add r3, #0x6c + ldrh r2, [r2, r3] + mov r1, #0x1 + bl FUN_0200AE70 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r4, #0x9 + b _02072054 +_02072044: + ldr r2, _0207207C ; =0x0000069C + mov r1, #0x4d + ldr r0, [r5, r2] + add r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r4, #0xb +_02072054: + add r0, r5, r7 + mov r1, #0x1 + mov r2, #0xa + mov r3, #0xf + bl FUN_0200D0BC + add r0, r5, r7 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0x0 + bl FUN_0207322C + add r0, r4, #0x0 + pop {r3-r7, pc} + nop +_02072074: .word 0x000005A4 +_02072078: .word 0x00000B25 +_0207207C: .word 0x0000069C + + thumb_func_start FUN_02072080 +FUN_02072080: ; 0x02072080 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _020720D4 ; =0x000005A4 + add r5, r1, #0x0 + ldr r1, [r4, r0] + mov r2, #0x1 + ldrh r1, [r1, #0x24] + mov r3, #0xc + str r1, [sp, #0x0] + ldr r1, [r4, r0] + ldr r0, [r1, #0x4] + ldrh r1, [r1, #0x24] + bl FUN_0206EDD4 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02069EC4 + ldr r1, _020720D8 ; =0x00000B25 + ldr r0, _020720D4 ; =0x000005A4 + ldrb r3, [r4, r1] + ldr r0, [r4, r0] + mov r2, #0x2c + add r5, r3, #0x0 + mul r5, r2 + ldrh r0, [r0, #0x24] + ldr r3, _020720DC ; =0x0000070C + add r5, r4, r5 + strh r0, [r5, r3] + ldrb r1, [r4, r1] + add r0, r4, #0x0 + mul r2, r1 + add r2, r4, r2 + ldrh r2, [r2, r3] + bl FUN_02073A78 + pop {r3-r5, pc} + nop +_020720D4: .word 0x000005A4 +_020720D8: .word 0x00000B25 +_020720DC: .word 0x0000070C + + thumb_func_start FUN_020720E0 +FUN_020720E0: ; 0x020720E0 + push {r0-r3} + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _02072134 ; =0x000005A4 + add r5, r1, #0x0 + ldr r0, [r4, r0] + lsl r1, r2, #0x10 + ldr r0, [r0, #0x4] + lsr r1, r1, #0x10 + mov r2, #0x1 + mov r3, #0xc + bl FUN_0206ED38 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, sp, #0x1c + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02069EC4 + ldr r1, _02072138 ; =0x00000B25 + mov r2, #0x2c + ldrb r3, [r4, r1] + ldr r0, [sp, #0x1c] + add r5, r3, #0x0 + mul r5, r2 + ldr r3, _0207213C ; =0x0000070C + add r5, r4, r5 + strh r0, [r5, r3] + ldrb r1, [r4, r1] + add r0, r4, #0x0 + mul r2, r1 + add r2, r4, r2 + ldrh r2, [r2, r3] + bl FUN_02073A78 + pop {r3-r5} + pop {r3} + add sp, #0x10 + bx r3 + nop +_02072134: .word 0x000005A4 +_02072138: .word 0x00000B25 +_0207213C: .word 0x0000070C + + thumb_func_start FUN_02072140 +FUN_02072140: ; 0x02072140 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02072168 ; =0x00000B24 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02072162 + ldr r0, _0207216C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02072162 + add r0, r4, #0x0 + bl FUN_020722B8 + pop {r4, pc} +_02072162: + mov r0, #0xb + pop {r4, pc} + nop +_02072168: .word 0x00000B24 +_0207216C: .word 0x021C48B8 + + thumb_func_start FUN_02072170 +FUN_02072170: ; 0x02072170 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02072190 ; =0x00000B24 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0207218A + add r0, r4, #0x0 + bl FUN_020732CC + mov r0, #0xa + pop {r4, pc} +_0207218A: + mov r0, #0x9 + pop {r4, pc} + nop +_02072190: .word 0x00000B24 + + thumb_func_start FUN_02072194 +FUN_02072194: ; 0x02072194 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _020722A4 ; =0x000006FC + mov r1, #0xc + ldr r0, [r5, r0] + bl FUN_020021AC + cmp r0, #0x0 + beq _020721B0 + mov r1, #0x1 + mvn r1, r1 + cmp r0, r1 + beq _02072298 + b _020722A0 +_020721B0: + ldr r0, _020722A8 ; =0x000005A4 + ldr r1, _020722AC ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r7, r0, #0x0 + ldr r0, _020722A8 ; =0x000005A4 + ldr r0, [r5, r0] + ldrh r6, [r0, #0x24] + ldr r0, _020722AC ; =0x00000B25 + ldrb r1, [r5, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r5, r0 + ldr r0, _020722B0 ; =0x0000070C + ldrh r4, [r1, r0] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02072080 + ldr r0, _020722A8 ; =0x000005A4 + add r1, r4, #0x0 + ldr r0, [r5, r0] + mov r2, #0x1 + ldr r0, [r0, #0x4] + mov r3, #0xc + bl FUN_0206ED38 + cmp r0, #0x0 + bne _0207220C + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + add r3, r4, #0x0 + bl FUN_020720E0 + ldr r2, _020722B4 ; =0x0000069C + mov r1, #0x53 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + b _02072282 +_0207220C: + ldr r0, _020722A8 ; =0x000005A4 + ldr r0, [r5, r0] + ldrh r0, [r0, #0x24] + bl FUN_0206EA98 + cmp r0, #0x1 + bne _02072246 + ldr r0, _020722A8 ; =0x000005A4 + lsl r1, r4, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + ldr r0, [r0, #0x4] + mov r2, #0x1 + mov r3, #0xc + bl FUN_0206EDD4 + add r0, r5, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + add r3, r4, #0x0 + bl FUN_020720E0 + ldr r0, _020722A8 ; =0x000005A4 + mov r1, #0x6 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r3-r7, pc} +_02072246: + ldr r2, _020722B4 ; =0x0000069C + mov r1, #0x54 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0200AE38 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x2 + add r2, r6, #0x0 + bl FUN_0200AE38 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 +_02072282: + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0x0 + bl FUN_0207322C + mov r0, #0xb + pop {r3-r7, pc} +_02072298: + add r0, r5, #0x0 + bl FUN_020722B8 + pop {r3-r7, pc} +_020722A0: + mov r0, #0xa + pop {r3-r7, pc} + .balign 4 +_020722A4: .word 0x000006FC +_020722A8: .word 0x000005A4 +_020722AC: .word 0x00000B25 +_020722B0: .word 0x0000070C +_020722B4: .word 0x0000069C + + thumb_func_start FUN_020722B8 +FUN_020722B8: ; 0x020722B8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02072304 ; =0x000005A4 + ldr r1, [r4, r0] + add r0, r1, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0xa + bne _020722F8 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _02072308 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + ldr r0, _02072304 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x20 + strb r1, [r0, #0x0] + mov r0, #0x1 + pop {r4, pc} +_020722F8: + mov r0, #0xa + add r1, #0x23 + strb r0, [r1, #0x0] + mov r0, #0x1b + pop {r4, pc} + nop +_02072304: .word 0x000005A4 +_02072308: .word 0x000005C8 + + thumb_func_start FUN_0207230C +FUN_0207230C: ; 0x0207230C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02072410 ; =0x000005A4 + ldr r1, _02072414 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r7, r0, #0x0 + ldr r0, _02072410 ; =0x000005A4 + ldr r0, [r5, r0] + ldrh r6, [r0, #0x24] + ldr r0, _02072414 ; =0x00000B25 + ldrb r1, [r5, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r5, r0 + ldr r0, _02072418 ; =0x0000070C + ldrh r4, [r1, r0] + add r0, r5, #0x0 + add r1, r7, #0x0 + bl FUN_02072080 + cmp r4, #0x0 + bne _02072388 + ldr r2, _0207241C ; =0x0000069C + mov r1, #0x76 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + add r0, r7, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + lsl r2, r2, #0x4 + ldr r0, [r5, r2] + sub r2, #0xfc + ldr r2, [r5, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x24] + bl FUN_0200AE38 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + b _020723D6 +_02072388: + ldr r0, _02072410 ; =0x000005A4 + lsl r1, r4, #0x10 + ldr r0, [r5, r0] + lsr r1, r1, #0x10 + ldr r0, [r0, #0x4] + mov r2, #0x1 + mov r3, #0xc + bl FUN_0206ED38 + ldr r2, _0207241C ; =0x0000069C + mov r1, #0x54 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0200AE38 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x2 + add r2, r6, #0x0 + bl FUN_0200AE38 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 +_020723D6: + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + mov r2, #0xa + mov r3, #0xf + bl FUN_0200D0BC + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0x0 + bl FUN_0207322C + ldr r0, _02072410 ; =0x000005A4 + ldr r1, [r5, r0] + add r0, r1, #0x0 + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0xc + bne _0207240C + mov r0, #0xa + add r1, #0x20 + strb r0, [r1, #0x0] +_0207240C: + mov r0, #0xb + pop {r3-r7, pc} + .balign 4 +_02072410: .word 0x000005A4 +_02072414: .word 0x00000B25 +_02072418: .word 0x0000070C +_0207241C: .word 0x0000069C + + thumb_func_start FUN_02072420 +FUN_02072420: ; 0x02072420 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02072470 ; =0x00000B25 + ldrb r1, [r4, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r4, r0 + ldr r0, _02072474 ; =0x00000712 + ldrh r0, [r1, r0] + cmp r0, #0x0 + bne _02072444 + ldr r0, _02072478 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} +_02072444: + ldr r0, _0207247C ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C664 + add r0, r4, #0x0 + mov r1, #0xc3 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02072480 ; =FUN_02074428 + ldr r1, _02072484 ; =0x00000B18 + ldr r2, _02072488 ; =FUN_02074454 + str r0, [r4, r1] + add r0, r1, #0x4 + str r2, [r4, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r4, r1] + mov r0, #0x14 + pop {r4, pc} + nop +_02072470: .word 0x00000B25 +_02072474: .word 0x00000712 +_02072478: .word 0x000005A4 +_0207247C: .word 0x000005C8 +_02072480: .word FUN_02074428 +_02072484: .word 0x00000B18 +_02072488: .word FUN_02074454 + + thumb_func_start FUN_0207248C +FUN_0207248C: ; 0x0207248C + ldr r1, _020724C0 ; =0x000005A4 + ldr r0, [r0, r1] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x5 + beq _020724B8 + cmp r0, #0x6 + beq _020724B8 + cmp r0, #0x7 + beq _020724B8 + cmp r0, #0x8 + beq _020724B8 + cmp r0, #0x9 + beq _020724B8 + cmp r0, #0xb + beq _020724B8 + cmp r0, #0xe + beq _020724B8 + cmp r0, #0x10 + beq _020724B8 + cmp r0, #0x14 + bne _020724BC +_020724B8: + mov r0, #0x0 + bx lr +_020724BC: + mov r0, #0x1 + bx lr + .balign 4 +_020724C0: .word 0x000005A4 + + thumb_func_start FUN_020724C4 +FUN_020724C4: ; 0x020724C4 + mov r0, #0x14 + bx lr + + thumb_func_start FUN_020724C8 +FUN_020724C8: ; 0x020724C8 + mov r0, #0x15 + bx lr + + thumb_func_start FUN_020724CC +FUN_020724CC: ; 0x020724CC + mov r0, #0x13 + bx lr + + thumb_func_start FUN_020724D0 +FUN_020724D0: ; 0x020724D0 + mov r0, #0x12 + bx lr + + thumb_func_start FUN_020724D4 +FUN_020724D4: ; 0x020724D4 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r5, r1, #0x0 + add r6, r2, #0x0 + mov r0, #0x14 + mov r1, #0x16 + add r2, r4, #0x0 + add r7, r3, #0x0 + bl LoadFromNarc_2 + add r1, sp, #0xc + str r0, [sp, #0x8] + blx FUN_020B0180 + ldr r0, [sp, #0xc] + mov r4, #0x0 + str r0, [sp, #0x4] + add r0, #0xc + str r0, [sp, #0x4] + str r0, [sp, #0x0] +_020724FE: + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + mov r2, #0x20 + blx memcpy + add r1, r4, #0x6 + lsl r2, r1, #0x6 + ldr r1, [sp, #0x4] + add r0, r6, #0x0 + add r1, r1, r2 + mov r2, #0x20 + blx memcpy + add r1, r4, #0x0 + add r1, #0xc + lsl r2, r1, #0x6 + ldr r1, [sp, #0x4] + add r0, r7, #0x0 + add r1, r1, r2 + mov r2, #0x20 + blx memcpy + ldr r0, [sp, #0x0] + add r4, r4, #0x1 + add r0, #0x40 + str r0, [sp, #0x0] + add r5, #0x20 + add r6, #0x20 + add r7, #0x20 + cmp r4, #0x6 + blo _020724FE + ldr r0, [sp, #0x8] + bl FUN_02016A18 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02072548 +FUN_02072548: ; 0x02072548 + push {r4-r6, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + add r6, r0, #0x0 + bl FUN_02019150 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x10 + add r2, #0x8 + bl FUN_02019150 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x20 + add r2, #0x10 + bl FUN_02019150 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x30 + add r2, #0x18 + bl FUN_02019150 + add r5, #0x40 + add r4, #0x20 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02019150 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02072590 +FUN_02072590: ; 0x02072590 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r4, _020726C0 ; =0x020F975C + ldr r0, [r5, #0x0] + add r1, r5, #0x4 + add r2, r4, #0x0 + bl FUN_02072548 + add r1, r5, #0x0 + ldr r0, [r5, #0x0] + ldr r2, _020726C4 ; =0x020F97AC + add r1, #0xa4 + bl FUN_02072548 + mov r1, #0x51 + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726C8 ; =0x020F97FC + add r1, r5, r1 + bl FUN_02072548 + ldr r0, _020726CC ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x21 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + ldr r0, [r5, #0x0] + bne _020725F8 + add r1, r5, #0x0 + add r2, r4, #0x0 + add r1, #0x54 + add r2, #0xf0 + bl FUN_02072548 + mov r2, #0x46 + add r1, r5, #0x0 + lsl r2, r2, #0x2 + ldr r0, [r5, #0x0] + add r1, #0xf4 + add r2, r4, r2 + bl FUN_02072548 + mov r2, #0x65 + lsl r2, r2, #0x2 + add r1, r5, r2 + sub r2, #0x54 + ldr r0, [r5, #0x0] + add r2, r4, r2 + bl FUN_02072548 + b _02072622 +_020725F8: + add r1, r5, #0x0 + add r2, r4, #0x0 + add r1, #0x54 + add r2, #0x28 + bl FUN_02072548 + add r1, r5, #0x0 + add r2, r4, #0x0 + ldr r0, [r5, #0x0] + add r1, #0xf4 + add r2, #0x78 + bl FUN_02072548 + mov r1, #0x65 + lsl r1, r1, #0x2 + add r4, #0xc8 + ldr r0, [r5, #0x0] + add r1, r5, r1 + add r2, r4, #0x0 + bl FUN_02072548 +_02072622: + ldr r0, _020726CC ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x20 + ldrb r0, [r0, #0x0] + cmp r0, #0x2 + beq _02072632 + cmp r0, #0x11 + bne _0207265A +_02072632: + ldr r1, _020726D0 ; =0x020F96EC + add r0, sp, #0x0 + ldrh r3, [r1, #0x38] + add r2, sp, #0x0 + strh r3, [r0, #0x0] + ldrh r3, [r1, #0x3a] + strh r3, [r0, #0x2] + ldrh r3, [r1, #0x3c] + ldrh r1, [r1, #0x3e] + strh r3, [r0, #0x4] + strh r1, [r0, #0x6] + mov r1, #0x16 + strb r1, [r0, #0x2] + mov r1, #0x7d + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + add r1, r5, r1 + bl FUN_02019150 + b _02072668 +_0207265A: + mov r1, #0x7d + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726D4 ; =0x020F9724 + add r1, r5, r1 + bl FUN_02019150 +_02072668: + mov r1, #0x79 + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726D8 ; =0x020F972C + add r1, r5, r1 + bl FUN_02019150 + mov r1, #0x81 + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726DC ; =0x020F9734 + add r1, r5, r1 + bl FUN_02019150 + mov r1, #0x85 + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726E0 ; =0x020F973C + add r1, r5, r1 + bl FUN_02019150 + mov r1, #0x89 + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726E4 ; =0x020F9744 + add r1, r5, r1 + bl FUN_02019150 + mov r1, #0x8d + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726E8 ; =0x020F974C + add r1, r5, r1 + bl FUN_02019150 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r0, [r5, #0x0] + ldr r2, _020726EC ; =0x020F9754 + add r1, r5, r1 + bl FUN_02019150 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_020726C0: .word 0x020F975C +_020726C4: .word 0x020F97AC +_020726C8: .word 0x020F97FC +_020726CC: .word 0x000005A4 +_020726D0: .word 0x020F96EC +_020726D4: .word 0x020F9724 +_020726D8: .word 0x020F972C +_020726DC: .word 0x020F9734 +_020726E0: .word 0x020F973C +_020726E4: .word 0x020F9744 +_020726E8: .word 0x020F974C +_020726EC: .word 0x020F9754 + + thumb_func_start FUN_020726F0 +FUN_020726F0: ; 0x020726F0 + push {r4-r6, lr} + add r6, r0, #0x0 + mov r5, #0x0 + add r4, r6, #0x4 +_020726F8: + lsl r0, r5, #0x4 + add r0, r4, r0 + bl FUN_02019178 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x25 + blo _020726F8 + mov r4, #0x95 + lsl r4, r4, #0x2 + add r0, r6, r4 + bl FUN_02019048 + cmp r0, #0x1 + bne _0207271E + add r0, r6, r4 + bl FUN_02019178 +_0207271E: + pop {r4-r6, pc} + + thumb_func_start FUN_02072720 +FUN_02072720: ; 0x02072720 + push {r4, lr} + ldr r2, _020727F8 ; =0x0000069C + add r4, r0, #0x0 + ldr r0, [r4, r2] + add r2, #0x10 + ldr r2, [r4, r2] + mov r1, #0x91 + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x92 + ldr r0, [r4, r2] + add r2, #0x14 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x93 + ldr r0, [r4, r2] + add r2, #0x18 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0xa0 + ldr r0, [r4, r2] + add r2, #0x1c + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0xa1 + ldr r0, [r4, r2] + add r2, #0x20 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x94 + ldr r0, [r4, r2] + add r2, #0x24 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x95 + ldr r0, [r4, r2] + add r2, #0x28 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x96 + ldr r0, [r4, r2] + add r2, #0x2c + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x97 + ldr r0, [r4, r2] + add r2, #0x30 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x98 + ldr r0, [r4, r2] + add r2, #0x34 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x99 + ldr r0, [r4, r2] + add r2, #0x38 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x9a + ldr r0, [r4, r2] + add r2, #0x3c + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x9b + ldr r0, [r4, r2] + add r2, #0x40 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0x9a + ldr r0, [r4, r2] + add r2, #0x44 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + ldr r2, _020727F8 ; =0x0000069C + mov r1, #0xa6 + ldr r0, [r4, r2] + add r2, #0x48 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + pop {r4, pc} + .balign 4 +_020727F8: .word 0x0000069C + + thumb_func_start FUN_020727FC +FUN_020727FC: ; 0x020727FC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02072840 ; =0x0000069C + add r4, r2, #0x0 + add r7, r1, #0x0 + add r1, r4, #0x0 + ldr r0, [r5, r0] + add r1, #0x9c + bl FUN_0200A914 + add r6, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + add r2, r7, #0x0 + bl FUN_0200AD5C + mov r1, #0x6a + add r4, #0xf + lsl r1, r1, #0x4 + lsl r2, r4, #0x2 + ldr r0, [r5, r1] + add r2, r5, r2 + add r1, #0xc + ldr r1, [r2, r1] + add r2, r6, #0x0 + bl FUN_0200B7B8 + add r0, r6, #0x0 + bl FUN_02021A20 + pop {r3-r7, pc} + nop +_02072840: .word 0x0000069C + + thumb_func_start FUN_02072844 +FUN_02072844: ; 0x02072844 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + add r7, r1, #0x0 + lsl r0, r2, #0x1 + mov r1, #0x17 + sub r1, r1, r0 + lsl r1, r1, #0x18 + str r2, [sp, #0x14] + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + mov r1, #0xc + lsl r0, r0, #0x18 + str r1, [sp, #0x4] + lsr r0, r0, #0x18 + mov r1, #0x9 + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + lsl r1, r1, #0x6 + str r1, [sp, #0x10] + add r1, #0x14 + ldr r0, [r5, #0x0] + add r1, r5, r1 + mov r3, #0x13 + bl FUN_02019064 + ldr r0, [sp, #0x14] + mov r1, #0xc + bl FUN_02012838 + ldr r1, _0207294C ; =0x000006F8 + mov r6, #0x0 + str r0, [r5, r1] + ldr r0, [sp, #0x14] + add r4, r6, #0x0 + cmp r0, #0x0 + ble _020728D8 +_02072890: + ldrb r0, [r7, r4] + cmp r0, #0xf + blo _020728B4 + bl FUN_02073DA8 + lsl r1, r6, #0x2 + add r2, r0, #0x0 + ldr r0, _0207294C ; =0x000006F8 + add r3, r5, r1 + ldr r1, _02072950 ; =0x000006E8 + ldr r0, [r5, r0] + ldr r1, [r3, r1] + bl FUN_020128A0 + add r0, r6, #0x1 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + b _020728CC +_020728B4: + bl FUN_02073DA8 + ldrb r1, [r7, r4] + add r2, r0, #0x0 + ldr r0, _0207294C ; =0x000006F8 + lsl r1, r1, #0x2 + add r3, r5, r1 + ldr r1, _02072954 ; =0x000006AC + ldr r0, [r5, r0] + ldr r1, [r3, r1] + bl FUN_020128A0 +_020728CC: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [sp, #0x14] + cmp r4, r0 + blt _02072890 +_020728D8: + ldr r0, _0207294C ; =0x000006F8 + mov r1, #0x0 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r5, r0 + str r0, [sp, #0x1c] + add r0, sp, #0x18 + strb r1, [r0, #0x8] + mov r1, #0x1 + strb r1, [r0, #0x9] + ldr r1, [sp, #0x14] + strb r1, [r0, #0xa] + ldrb r2, [r0, #0xb] + mov r1, #0xf + bic r2, r1 + strb r2, [r0, #0xb] + ldrb r2, [r0, #0xb] + mov r1, #0x30 + bic r2, r1 + strb r2, [r0, #0xb] + ldr r1, [sp, #0x14] + ldrb r2, [r0, #0xb] + cmp r1, #0x4 + blo _02072918 + mov r1, #0xc0 + bic r2, r1 + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, #0xb] + b _0207291E +_02072918: + mov r1, #0xc0 + bic r2, r1 + strb r2, [r0, #0xb] +_0207291E: + mov r0, #0x95 + lsl r0, r0, #0x2 + mov r1, #0x1 + add r0, r5, r0 + add r2, r1, #0x0 + mov r3, #0xe + bl FUN_0200CCA4 + mov r0, #0xc + str r0, [sp, #0x0] + mov r0, #0x2 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x18 + mov r1, #0x8 + add r3, r2, #0x0 + bl FUN_02001C14 + ldr r1, _02072958 ; =0x000006FC + str r0, [r5, r1] + add sp, #0x24 + pop {r4-r7, pc} + nop +_0207294C: .word 0x000006F8 +_02072950: .word 0x000006E8 +_02072954: .word 0x000006AC +_02072958: .word 0x000006FC + + thumb_func_start FUN_0207295C +FUN_0207295C: ; 0x0207295C + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _020729C4 ; =0x000005A4 + ldr r2, [r5, r0] + add r1, r2, #0x0 + add r1, #0x20 + ldrb r1, [r1, #0x0] + cmp r1, #0xf + bne _0207297E + ldr r2, _020729C8 ; =0x000006A4 + add r0, #0xf8 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + mov r1, #0x2a + bl FUN_0200A8E0 + pop {r4-r6, pc} +_0207297E: + ldr r1, _020729CC ; =0x00000B25 + ldr r0, [r2, #0x0] + ldrb r1, [r5, r1] + bl FUN_0206B9B0 + add r6, r0, #0x0 + ldr r0, _020729D0 ; =0x0000069C + mov r1, #0x25 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} + nop +_020729C4: .word 0x000005A4 +_020729C8: .word 0x000006A4 +_020729CC: .word 0x00000B25 +_020729D0: .word 0x0000069C + + thumb_func_start FUN_020729D4 +FUN_020729D4: ; 0x020729D4 + push {r3-r4, lr} + sub sp, #0x4 + add r2, r0, #0x0 + mov r0, #0x2 + str r0, [sp, #0x0] + ldr r0, _020729FC ; =0x00000698 + add r4, r1, #0x0 + ldr r0, [r2, r0] + add r3, r2, #0x4 + lsl r2, r4, #0x2 + add r2, r4, r2 + add r2, r2, #0x2 + lsl r2, r2, #0x4 + add r2, r3, r2 + mov r1, #0x0 + mov r3, #0x1c + bl FUN_0200B9A8 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_020729FC: .word 0x00000698 + + thumb_func_start FUN_02072A00 +FUN_02072A00: ; 0x02072A00 + push {r3-r7, lr} + add r7, r1, #0x0 + add r4, r2, #0x0 + add r5, r0, #0x0 + ldr r0, _02072A4C ; =0x0000069C + ldr r1, _02072A50 ; =0x020F96F4 + lsl r2, r4, #0x3 + ldrh r1, [r1, r2] + ldr r0, [r5, r0] + bl FUN_0200A914 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + mov r1, #0x2c + lsl r2, r2, #0x4 + mul r1, r4 + ldr r0, [r5, r2] + add r1, r5, r1 + add r2, #0x60 + ldr r1, [r1, r2] + add r2, r6, #0x0 + bl FUN_0200B7B8 + add r0, r6, #0x0 + bl FUN_02021A20 + pop {r3-r7, pc} + nop +_02072A4C: .word 0x0000069C +_02072A50: .word 0x020F96F4 + + thumb_func_start FUN_02072A54 +FUN_02072A54: ; 0x02072A54 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + lsl r6, r0, #0x4 + add r7, r1, #0x0 + mov r0, #0x2c + mul r7, r0 + mov r1, #0x0 + mov r2, #0x7 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _02072B14 ; =0x000F0E00 + add r3, r5, r7 + str r0, [sp, #0x8] + add r4, r5, #0x4 + str r1, [sp, #0xc] + lsl r2, r2, #0x8 + ldr r2, [r3, r2] + add r0, r4, r6 + add r3, r1, #0x0 + bl FUN_0201BDE0 + mov r2, #0x71 + add r0, r5, r7 + lsl r2, r2, #0x4 + ldrb r0, [r0, r2] + cmp r0, #0x1 + bne _02072A9C + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x10 + pop {r3-r7, pc} +_02072A9C: + sub r0, r2, #0x2 + add r0, r5, r0 + ldrh r0, [r0, r7] + lsl r1, r0, #0x13 + lsr r1, r1, #0x1f + bne _02072B0A + lsl r0, r0, #0x11 + lsr r0, r0, #0x1e + bne _02072ADC + add r0, r2, #0x0 + sub r0, #0x74 + sub r2, #0x68 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + mov r1, #0x1b + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #0x8] + ldr r2, _02072B18 ; =0x000006A8 + str r1, [sp, #0xc] + ldr r2, [r5, r2] + add r0, r4, r6 + mov r3, #0x40 + bl FUN_0201BDE0 + b _02072B0A +_02072ADC: + cmp r0, #0x1 + bne _02072B0A + add r0, r2, #0x0 + sub r0, #0x74 + sub r2, #0x68 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + mov r1, #0x1c + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _02072B1C ; =0x00050600 + ldr r2, _02072B18 ; =0x000006A8 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r2, [r5, r2] + add r0, r4, r6 + mov r3, #0x40 + bl FUN_0201BDE0 +_02072B0A: + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02072B14: .word 0x000F0E00 +_02072B18: .word 0x000006A8 +_02072B1C: .word 0x00050600 + + thumb_func_start FUN_02072B20 +FUN_02072B20: ; 0x02072B20 + push {r4, lr} + sub sp, #0x10 + lsl r2, r1, #0x2 + add r2, r1, r2 + add r2, r2, #0x1 + add r3, r0, #0x4 + lsl r2, r2, #0x4 + add r4, r3, r2 + mov r2, #0x2c + mul r2, r1 + ldr r3, _02072B78 ; =0x0000070E + add r2, r0, r2 + ldrh r1, [r2, r3] + lsl r1, r1, #0x14 + lsr r1, r1, #0x14 + cmp r1, #0x7 + beq _02072B4C + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0x10 + pop {r4, pc} +_02072B4C: + mov r1, #0x0 + str r1, [sp, #0x0] + str r4, [sp, #0x4] + mov r1, #0x5 + str r1, [sp, #0x8] + mov r1, #0x2 + str r1, [sp, #0xc] + add r1, r3, #0x0 + sub r3, r3, #0x4 + sub r1, #0x76 + ldrh r2, [r2, r3] + ldr r0, [r0, r1] + mov r1, #0x1 + mov r3, #0x3 + bl FUN_0200BA78 + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0x10 + pop {r4, pc} + nop +_02072B78: .word 0x0000070E + + thumb_func_start FUN_02072B7C +FUN_02072B7C: ; 0x02072B7C + push {r4-r5, lr} + sub sp, #0xc + add r2, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x2 + add r3, r2, #0x4 + lsl r0, r0, #0x4 + add r4, r3, r0 + mov r3, #0x2c + mul r3, r1 + add r1, r2, r3 + str r4, [sp, #0x0] + mov r0, #0x4 + str r0, [sp, #0x4] + mov r0, #0x2 + ldr r5, _02072BB8 ; =0x00000698 + str r0, [sp, #0x8] + ldr r0, [r2, r5] + add r5, #0x6e + ldrh r1, [r1, r5] + mov r2, #0x3 + mov r3, #0x1 + bl FUN_0200B9EC + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_02072BB8: .word 0x00000698 + + thumb_func_start FUN_02072BBC +FUN_02072BBC: ; 0x02072BBC + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x4 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x2 + lsl r4, r0, #0x4 + mov r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x10 + mov r1, #0x0 + str r0, [sp, #0x4] + add r0, r5, r4 + mov r2, #0x4 + add r3, r1, #0x0 + bl FUN_020196F4 + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x8 + pop {r3-r5, pc} + + thumb_func_start FUN_02072BE8 +FUN_02072BE8: ; 0x02072BE8 + push {r4-r5, lr} + sub sp, #0xc + add r2, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x2 + add r3, r2, #0x4 + lsl r0, r0, #0x4 + add r4, r3, r0 + mov r3, #0x2c + mul r3, r1 + add r1, r2, r3 + str r4, [sp, #0x0] + mov r0, #0x24 + str r0, [sp, #0x4] + mov r0, #0x2 + ldr r5, _02072C24 ; =0x00000698 + str r0, [sp, #0x8] + ldr r0, [r2, r5] + add r5, #0x70 + ldrh r1, [r1, r5] + mov r2, #0x3 + mov r3, #0x0 + bl FUN_0200B9EC + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_02072C24: .word 0x00000698 + + thumb_func_start FUN_02072C28 +FUN_02072C28: ; 0x02072C28 + push {r4-r7, lr} + sub sp, #0xc + lsl r2, r1, #0x2 + add r2, r1, r2 + add r5, r0, #0x0 + add r2, r2, #0x3 + add r0, r5, #0x4 + lsl r2, r2, #0x4 + add r4, r0, r2 + mov r0, #0x2c + add r6, r1, #0x0 + mul r6, r0 + ldr r0, _02072D0C ; =0x00000708 + mov r2, #0x30 + add r7, r5, r0 + sub r0, r0, #0x2 + add r0, r5, r0 + str r0, [sp, #0x8] + ldrh r0, [r0, r6] + ldrh r1, [r7, r6] + bl FUN_02079A54 + cmp r0, #0x4 + bhi _02072CBE + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02072C64: ; jump table (using 16-bit offset) + .short _02072C6E - _02072C64 - 2; case 0 + .short _02072CA8 - _02072C64 - 2; case 1 + .short _02072C90 - _02072C64 - 2; case 2 + .short _02072C78 - _02072C64 - 2; case 3 + .short _02072C78 - _02072C64 - 2; case 4 +_02072C6E: + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0xc + pop {r4-r7, pc} +_02072C78: + ldrb r3, [r4, #0x9] + ldr r1, _02072D10 ; =0x000004B6 + mov r0, #0x1 + lsl r3, r3, #0x4 + add r3, #0x9 + lsl r3, r3, #0x11 + add r1, r5, r1 + mov r2, #0x4 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + b _02072CBE +_02072C90: + ldrb r3, [r4, #0x9] + ldr r1, _02072D14 ; =0x000004D6 + mov r0, #0x1 + lsl r3, r3, #0x4 + add r3, #0x9 + lsl r3, r3, #0x11 + add r1, r5, r1 + mov r2, #0x4 + lsr r3, r3, #0x10 + bl FUN_02017FB4 + b _02072CBE +_02072CA8: + ldrb r3, [r4, #0x9] + ldr r1, _02072D18 ; =0x000004F6 + mov r0, #0x1 + lsl r3, r3, #0x4 + add r3, #0x9 + lsl r3, r3, #0x11 + add r1, r5, r1 + mov r2, #0x4 + lsr r3, r3, #0x10 + bl FUN_02017FB4 +_02072CBE: + ldr r0, [sp, #0x8] + ldrh r1, [r7, r6] + ldrh r0, [r0, r6] + mov r2, #0x30 + bl FUN_02079A0C + add r5, r0, #0x0 + str r5, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0xa + mov r2, #0x0 + mov r3, #0x2 + bl FUN_020196F4 + str r5, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0x9 + mov r2, #0x0 + mov r3, #0x3 + bl FUN_020196F4 + str r5, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0xa + mov r2, #0x0 + mov r3, #0x5 + bl FUN_020196F4 + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02072D0C: .word 0x00000708 +_02072D10: .word 0x000004B6 +_02072D14: .word 0x000004D6 +_02072D18: .word 0x000004F6 + + thumb_func_start FUN_02072D1C +FUN_02072D1C: ; 0x02072D1C + push {r3-r7, lr} + sub sp, #0x18 + add r6, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r6, #0x2 + add r4, r6, r0 + add r0, r5, #0x4 + str r0, [sp, #0x0] + lsl r0, r4, #0x4 + ldr r1, [sp, #0x0] + str r0, [sp, #0x4] + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r4, #0x1 + lsl r0, r0, #0x4 + add r7, r5, #0x4 + str r0, [sp, #0x8] + add r0, r7, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r7, #0x0 + str r0, [sp, #0xc] + add r0, r4, #0x2 + lsl r0, r0, #0x4 + ldr r1, [sp, #0xc] + str r0, [sp, #0x10] + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r7, #0x0 + str r0, [sp, #0x14] + add r0, r4, #0x3 + lsl r4, r0, #0x4 + ldr r0, [sp, #0x14] + mov r1, #0x0 + add r0, r0, r4 + bl FUN_02019620 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072A54 + mov r0, #0x2c + mul r0, r6 + add r1, r5, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _02072DB0 + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + add r0, r1, r0 + bl FUN_02019220 + ldr r0, [sp, #0x8] + add r0, r7, r0 + bl FUN_02019220 + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x10] + add r0, r1, r0 + bl FUN_02019220 + ldr r0, [sp, #0x14] + add r0, r0, r4 + bl FUN_02019220 + add sp, #0x18 + pop {r3-r7, pc} +_02072DB0: + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_020729D4 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072B20 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072B7C + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072BE8 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02072C28 + add sp, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_02072DDC +FUN_02072DDC: ; 0x02072DDC + push {r3-r5, lr} + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r4, r1, r0 + add r1, r5, #0x4 + lsl r0, r4, #0x4 + add r0, r1, r0 + bl FUN_02019548 + add r0, r4, #0x1 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_02019548 + add r0, r4, #0x2 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_02019548 + add r0, r4, #0x3 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_02019548 + pop {r3-r5, pc} + + thumb_func_start FUN_02072E14 +FUN_02072E14: ; 0x02072E14 + push {r3-r5, lr} + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r4, r1, r0 + add r1, r5, #0x4 + lsl r0, r4, #0x4 + add r0, r1, r0 + bl FUN_0201958C + add r0, r4, #0x1 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_0201958C + add r0, r4, #0x2 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_0201958C + add r0, r4, #0x3 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_0201958C + pop {r3-r5, pc} + + thumb_func_start FUN_02072E4C +FUN_02072E4C: ; 0x02072E4C + push {r3-r6, lr} + sub sp, #0x4 + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x2 + add r6, r4, r0 + add r1, r5, #0x4 + lsl r0, r6, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r6, #0x1 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072A54 + mov r0, #0x2c + mul r0, r4 + add r1, r5, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _02072E98 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020732F4 + add sp, #0x4 + pop {r3-r6, pc} +_02072E98: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072B20 + ldr r0, _02072EE0 ; =0x000005A4 + add r1, r4, #0x0 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + mov r0, #0x0 + ldr r3, _02072EE0 ; =0x000005A4 + str r0, [sp, #0x0] + ldr r3, [r5, r3] + mov r2, #0x3 + ldrh r3, [r3, #0x24] + bl FUN_02069168 + cmp r0, #0x0 + bne _02072ED0 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020732F4 + add sp, #0x4 + pop {r3-r6, pc} +_02072ED0: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020732F4 + add sp, #0x4 + pop {r3-r6, pc} + nop +_02072EE0: .word 0x000005A4 + + thumb_func_start FUN_02072EE4 +FUN_02072EE4: ; 0x02072EE4 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x2 + add r6, r4, r0 + add r1, r5, #0x4 + lsl r0, r6, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r6, #0x1 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072A54 + mov r0, #0x2c + mul r0, r4 + add r1, r5, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _02072F2C + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_02073364 + pop {r4-r6, pc} +_02072F2C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072B20 + ldr r0, _02072F74 ; =0x000005A4 + add r1, r4, #0x0 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02076AA0 + cmp r0, #0xff + bne _02072F58 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_02073364 + pop {r4-r6, pc} +_02072F58: + cmp r0, #0xfd + bne _02072F68 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_02073364 + pop {r4-r6, pc} +_02072F68: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_02073364 + pop {r4-r6, pc} + .balign 4 +_02072F74: .word 0x000005A4 + + thumb_func_start FUN_02072F78 +FUN_02072F78: ; 0x02072F78 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x2 + add r6, r4, r0 + add r1, r5, #0x4 + lsl r0, r6, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r6, #0x1 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072A54 + mov r0, #0x2c + add r6, r4, #0x0 + mul r6, r0 + mov r0, #0x71 + add r1, r5, r6 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x1 + beq _02072FBE + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072B20 +_02072FBE: + ldr r2, _02072FD8 ; =0x0000070E + add r3, r5, r6 + ldrh r2, [r3, r2] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsl r2, r2, #0x10 + lsr r2, r2, #0x1f + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_020733E4 + pop {r4-r6, pc} + nop +_02072FD8: .word 0x0000070E + + thumb_func_start FUN_02072FDC +FUN_02072FDC: ; 0x02072FDC + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + lsl r0, r4, #0x2 + add r6, r4, r0 + add r1, r5, #0x4 + lsl r0, r6, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r6, #0x1 + add r1, r5, #0x4 + lsl r0, r0, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072A54 + mov r0, #0x2c + mul r0, r4 + add r1, r5, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x1 + beq _02073020 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02072B20 +_02073020: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02073024 +FUN_02073024: ; 0x02073024 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _02073080 ; =0x000005A4 + add r4, r1, #0x0 + ldr r1, [r5, r0] + mov r2, #0x0 + add r0, r1, #0x0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r3, r0, #0x1c + beq _0207305C + add r0, r4, #0x1 +_0207303E: + add r6, r1, r2 + add r6, #0x2c + ldrb r6, [r6, #0x0] + cmp r0, r6 + bne _02073052 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073448 + pop {r4-r6, pc} +_02073052: + add r2, r2, #0x1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + cmp r2, r3 + blo _0207303E +_0207305C: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02071340 + cmp r0, #0x0 + bne _02073074 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x8 + bl FUN_02073448 + pop {r4-r6, pc} +_02073074: + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x7 + bl FUN_02073448 + pop {r4-r6, pc} + .balign 4 +_02073080: .word 0x000005A4 + + thumb_func_start FUN_02073084 +FUN_02073084: ; 0x02073084 + push {r4, lr} + add r4, r2, #0x0 + mov r2, #0x0 + bl FUN_02002E14 + sub r0, r4, r0 + lsr r0, r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_02073094 +FUN_02073094: ; 0x02073094 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x79 + lsl r0, r0, #0x2 + add r4, r1, #0x0 + add r0, r5, r0 + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x7d + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x1 + tst r0, r4 + beq _020730FE + ldr r2, _0207314C ; =0x0000069C + mov r1, #0x0 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r2, _02073150 ; =0x000001EB + ldr r1, _02073154 ; =0x000006A8 + ldrb r2, [r5, r2] + ldr r1, [r5, r1] + mov r0, #0x0 + lsl r2, r2, #0x3 + bl FUN_02073084 + mov r1, #0x0 + add r3, r0, #0x0 + str r1, [sp, #0x0] + mov r2, #0xff + str r2, [sp, #0x4] + ldr r0, _02073158 ; =0x000F0E00 + add r2, #0xe5 + str r0, [sp, #0x8] + add r0, r5, r2 + ldr r2, _02073154 ; =0x000006A8 + str r1, [sp, #0xc] + ldr r2, [r5, r2] + bl FUN_0201BDE0 + mov r0, #0x79 + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 +_020730FE: + mov r0, #0x2 + tst r0, r4 + beq _02073148 + ldr r2, _0207314C ; =0x0000069C + mov r1, #0x1 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r2, _0207315C ; =0x000001FB + ldr r1, _02073154 ; =0x000006A8 + ldrb r2, [r5, r2] + ldr r1, [r5, r1] + mov r0, #0x0 + lsl r2, r2, #0x3 + bl FUN_02073084 + mov r1, #0x0 + add r3, r0, #0x0 + str r1, [sp, #0x0] + mov r2, #0xff + str r2, [sp, #0x4] + ldr r0, _02073158 ; =0x000F0E00 + add r2, #0xf5 + str r0, [sp, #0x8] + add r0, r5, r2 + ldr r2, _02073154 ; =0x000006A8 + str r1, [sp, #0xc] + ldr r2, [r5, r2] + bl FUN_0201BDE0 + mov r0, #0x7d + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 +_02073148: + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_0207314C: .word 0x0000069C +_02073150: .word 0x000001EB +_02073154: .word 0x000006A8 +_02073158: .word 0x000F0E00 +_0207315C: .word 0x000001FB + + thumb_func_start FUN_02073160 +FUN_02073160: ; 0x02073160 + push {r3-r6, lr} + sub sp, #0xc + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r3, #0x1 + bne _0207317A + add r0, r4, #0x0 + mov r1, #0x1 + mov r2, #0xa + mov r3, #0xf + bl FUN_0200D0BC +_0207317A: + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + beq _02073198 + ldr r2, _020731B8 ; =0x0000069C + add r1, r6, #0x0 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 +_02073198: + mov r3, #0x0 + str r3, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r2, _020731BC ; =0x000006A4 + str r3, [sp, #0x8] + ldr r2, [r5, r2] + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0201BD84 + add r0, r4, #0x0 + bl FUN_02019220 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 +_020731B8: .word 0x0000069C +_020731BC: .word 0x000006A4 + + thumb_func_start FUN_020731C0 +FUN_020731C0: ; 0x020731C0 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x81 + lsl r1, r1, #0x2 + add r3, r2, #0x0 + add r1, r0, r1 + add r2, r4, #0x0 + bl FUN_02073160 + pop {r4, pc} + + thumb_func_start FUN_020731D4 +FUN_020731D4: ; 0x020731D4 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x85 + lsl r1, r1, #0x2 + add r3, r2, #0x0 + add r1, r0, r1 + add r2, r4, #0x0 + bl FUN_02073160 + pop {r4, pc} + + thumb_func_start FUN_020731E8 +FUN_020731E8: ; 0x020731E8 + push {r4-r6, lr} + mov r6, #0x89 + add r5, r0, #0x0 + add r4, r1, #0x0 + lsl r6, r6, #0x2 + cmp r2, #0x1 + bne _02073202 + add r0, r5, r6 + mov r1, #0x1 + mov r2, #0xa + mov r3, #0xf + bl FUN_0200D0BC +_02073202: + add r0, r5, r6 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _02073220 + ldr r2, _02073228 ; =0x0000069C + add r1, r4, #0x0 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 +_02073220: + add r0, r5, #0x0 + bl FUN_0207322C + pop {r4-r6, pc} + .balign 4 +_02073228: .word 0x0000069C + + thumb_func_start FUN_0207322C +FUN_0207322C: ; 0x0207322C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + mov r0, #0x1 + bl FUN_02002B60 + mov r0, #0x0 + bl FUN_02002B7C + ldr r0, _0207326C ; =0x000005A4 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02024FF4 + mov r3, #0x0 + str r3, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _02073270 ; =FUN_0207327C + ldr r2, _02073274 ; =0x000006A4 + str r0, [sp, #0x8] + mov r0, #0x89 + lsl r0, r0, #0x2 + ldr r2, [r4, r2] + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0201BD84 + ldr r1, _02073278 ; =0x00000B24 + strb r0, [r4, r1] + add sp, #0xc + pop {r3-r4, pc} + nop +_0207326C: .word 0x000005A4 +_02073270: .word FUN_0207327C +_02073274: .word 0x000006A4 +_02073278: .word 0x00000B24 + + thumb_func_start FUN_0207327C +FUN_0207327C: ; 0x0207327C + push {r3, lr} + cmp r1, #0x5 + bhi _020732BE + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207328E: ; jump table (using 16-bit offset) + .short _020732BE - _0207328E - 2; case 0 + .short _0207329A - _0207328E - 2; case 1 + .short _020732A0 - _0207328E - 2; case 2 + .short _020732A6 - _0207328E - 2; case 3 + .short _020732AE - _0207328E - 2; case 4 + .short _020732B6 - _0207328E - 2; case 5 +_0207329A: + bl FUN_02005514 + pop {r3, pc} +_020732A0: + bl FUN_02005CBC + pop {r3, pc} +_020732A6: + ldr r0, _020732C4 ; =0x000005E6 + bl FUN_020054C8 + b _020732BE +_020732AE: + ldr r0, _020732C8 ; =0x00000483 + bl FUN_02005C28 + b _020732BE +_020732B6: + ldr r0, _020732C4 ; =0x000005E6 + bl FUN_02005508 + pop {r3, pc} +_020732BE: + mov r0, #0x0 + pop {r3, pc} + nop +_020732C4: .word 0x000005E6 +_020732C8: .word 0x00000483 + + thumb_func_start FUN_020732CC +FUN_020732CC: ; 0x020732CC + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0xc + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r1, _020732EC ; =0x020F96EC + mov r2, #0x1 + mov r3, #0xe + bl FUN_02002198 + ldr r1, _020732F0 ; =0x000006FC + str r0, [r4, r1] + add sp, #0x4 + pop {r3-r4, pc} + nop +_020732EC: .word 0x020F96EC +_020732F0: .word 0x000006FC + + thumb_func_start FUN_020732F4 +FUN_020732F4: ; 0x020732F4 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x4 + add r4, r5, #0x4 + lsl r6, r0, #0x4 + add r0, r4, r6 + mov r1, #0x0 + add r7, r2, #0x0 + bl FUN_02019620 + cmp r7, #0x0 + beq _02073318 + cmp r7, #0x1 + beq _02073326 + b _02073332 +_02073318: + ldr r0, _0207335C ; =0x0000069C + mov r1, #0xb2 + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] + b _02073332 +_02073326: + ldr r0, _0207335C ; =0x0000069C + mov r1, #0xb3 + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] +_02073332: + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _02073360 ; =0x000F0E00 + ldr r2, [sp, #0x10] + str r0, [sp, #0x8] + add r0, r4, r6 + add r3, r1, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x14 + pop {r4-r7, pc} + nop +_0207335C: .word 0x0000069C +_02073360: .word 0x000F0E00 + + thumb_func_start FUN_02073364 +FUN_02073364: ; 0x02073364 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x4 + add r4, r5, #0x4 + lsl r7, r0, #0x4 + add r0, r4, r7 + mov r1, #0x0 + add r6, r2, #0x0 + bl FUN_02019620 + cmp r6, #0x0 + beq _0207338C + cmp r6, #0x1 + beq _0207339A + cmp r6, #0x2 + beq _020733A8 + b _020733B4 +_0207338C: + ldr r0, _020733DC ; =0x0000069C + mov r1, #0xaf + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] + b _020733B4 +_0207339A: + ldr r0, _020733DC ; =0x0000069C + mov r1, #0xb0 + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] + b _020733B4 +_020733A8: + ldr r0, _020733DC ; =0x0000069C + mov r1, #0xb1 + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x10] +_020733B4: + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _020733E0 ; =0x000F0E00 + ldr r2, [sp, #0x10] + str r0, [sp, #0x8] + add r0, r4, r7 + add r3, r1, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add r0, r4, r7 + bl FUN_02019220 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_020733DC: .word 0x0000069C +_020733E0: .word 0x000F0E00 + + thumb_func_start FUN_020733E4 +FUN_020733E4: ; 0x020733E4 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x4 + add r4, r5, #0x4 + lsl r6, r0, #0x4 + add r0, r4, r6 + mov r1, #0x0 + add r7, r2, #0x0 + bl FUN_02019620 + cmp r7, #0x0 + ldr r0, _02073440 ; =0x0000069C + bne _0207340E + ldr r0, [r5, r0] + mov r1, #0xb5 + bl FUN_0200A914 + b _02073416 +_0207340E: + ldr r0, [r5, r0] + mov r1, #0xb4 + bl FUN_0200A914 +_02073416: + mov r1, #0x0 + add r5, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _02073444 ; =0x000F0E00 + add r2, r5, #0x0 + str r0, [sp, #0x8] + add r0, r4, r6 + add r3, r1, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0x0 + bl FUN_02021A20 + add r0, r4, r6 + bl FUN_02019220 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02073440: .word 0x0000069C +_02073444: .word 0x000F0E00 + + thumb_func_start FUN_02073448 +FUN_02073448: ; 0x02073448 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + lsl r0, r1, #0x2 + add r0, r1, r0 + add r0, r0, #0x4 + add r4, r5, #0x4 + lsl r7, r0, #0x4 + add r0, r4, r7 + mov r1, #0x0 + add r6, r2, #0x0 + bl FUN_02019620 + cmp r6, #0x6 + ldr r0, _020734B8 ; =0x0000069C + bhs _02073476 + add r6, #0xa9 + ldr r0, [r5, r0] + add r1, r6, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + b _02073490 +_02073476: + cmp r6, #0x7 + bne _02073486 + ldr r0, [r5, r0] + mov r1, #0xa7 + bl FUN_0200A914 + add r5, r0, #0x0 + b _02073490 +_02073486: + ldr r0, [r5, r0] + mov r1, #0xa8 + bl FUN_0200A914 + add r5, r0, #0x0 +_02073490: + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _020734BC ; =0x000F0E00 + add r2, r5, #0x0 + str r0, [sp, #0x8] + add r0, r4, r7 + add r3, r1, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0x0 + bl FUN_02021A20 + add r0, r4, r7 + bl FUN_02019220 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_020734B8: .word 0x0000069C +_020734BC: .word 0x000F0E00 + + thumb_func_start FUN_020734C0 +FUN_020734C0: ; 0x020734C0 + push {r4-r7, lr} + sub sp, #0x2c + add r5, r0, #0x0 + ldr r0, _02073628 ; =0x000005A4 + ldr r1, _0207362C ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xa3 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + add r1, sp, #0x20 + strh r0, [r1, #0x0] + add r0, r4, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x20 + strh r0, [r1, #0x2] + add r0, r4, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x20 + strh r0, [r1, #0x4] + add r0, r4, #0x0 + mov r1, #0xa7 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x20 + strh r0, [r1, #0x6] + add r0, r4, #0x0 + mov r1, #0xa8 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x20 + strh r0, [r1, #0x8] + add r0, r4, #0x0 + mov r1, #0xa6 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x20 + strh r0, [r1, #0xa] + mov r3, #0x1 + mov r1, #0x9 + str r3, [sp, #0x0] + mov r0, #0xe + str r0, [sp, #0x4] + mov r0, #0xc + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + lsl r1, r1, #0x6 + str r1, [sp, #0x10] + add r1, #0x14 + ldr r0, [r5, #0x0] + add r1, r5, r1 + bl FUN_02019064 + mov r0, #0x95 + lsl r0, r0, #0x2 + mov r1, #0x1 + add r0, r5, r0 + add r2, r1, #0x0 + mov r3, #0xe + bl FUN_0200CCA4 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r4, #0x0 + str r4, [sp, #0x14] + add r7, r5, #0x0 + add r6, sp, #0x20 +_0207356C: + ldr r0, _02073630 ; =0x0000069C + ldr r1, [sp, #0x14] + ldr r0, [r5, r0] + add r1, #0xb9 + bl FUN_0200A914 + str r0, [sp, #0x18] + mov r1, #0x0 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + mov r0, #0x95 + lsl r0, r0, #0x2 + ldr r2, [sp, #0x18] + add r0, r5, r0 + add r3, r1, #0x0 + bl FUN_0201BD84 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, _02073630 ; =0x0000069C + mov r1, #0xbf + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0x1c] + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r2, _02073634 ; =0x00000B28 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldrh r3, [r6, #0x0] + ldrh r2, [r7, r2] + ldr r0, [r5, r0] + mov r1, #0x0 + sub r2, r3, r2 + mov r3, #0x2 + bl FUN_0200AD38 + mov r0, #0x6a + ldr r1, _02073638 ; =0x000006A4 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [sp, #0x1c] + bl FUN_0200B7B8 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r1, _02073638 ; =0x000006A4 + mov r0, #0x0 + ldr r1, [r5, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + mov r1, #0x68 + sub r3, r1, r0 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r2, _02073638 ; =0x000006A4 + mov r0, #0x95 + lsl r0, r0, #0x2 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #0x0 + bl FUN_0201BD84 + ldrh r1, [r6, #0x0] + ldr r0, _02073634 ; =0x00000B28 + add r4, #0x10 + strh r1, [r7, r0] + ldr r0, [sp, #0x14] + add r7, r7, #0x2 + add r0, r0, #0x1 + add r6, r6, #0x2 + str r0, [sp, #0x14] + cmp r0, #0x6 + blo _0207356C + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + add sp, #0x2c + pop {r4-r7, pc} + .balign 4 +_02073628: .word 0x000005A4 +_0207362C: .word 0x00000B25 +_02073630: .word 0x0000069C +_02073634: .word 0x00000B28 +_02073638: .word 0x000006A4 + + thumb_func_start FUN_0207363C +FUN_0207363C: ; 0x0207363C + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + mov r0, #0x20 + str r0, [sp, #0x0] + mov r0, #0x70 + str r0, [sp, #0x4] + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xf + mov r2, #0x50 + mov r3, #0x0 + bl FUN_020196F4 + ldr r0, _020736E8 ; =0x0000069C + mov r1, #0xc0 + ldr r0, [r5, r0] + bl FUN_0200A914 + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + add r6, r5, #0x0 + add r4, r0, #0x0 +_0207366E: + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r2, _020736EC ; =0x00000B28 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldrh r2, [r6, r2] + ldr r0, [r5, r0] + mov r1, #0x0 + mov r3, #0x3 + bl FUN_0200AD38 + mov r0, #0x6a + ldr r1, _020736F0 ; =0x000006A4 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [sp, #0xc] + bl FUN_0200B7B8 + ldr r1, _020736F0 ; =0x000006A4 + mov r0, #0x0 + ldr r1, [r5, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + add r7, r0, #0x0 + mov r3, #0x68 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r2, _020736F0 ; =0x000006A4 + mov r0, #0x95 + lsl r0, r0, #0x2 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #0x0 + sub r3, r3, r7 + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + add r6, r6, #0x2 + add r0, r0, #0x1 + add r4, #0x10 + str r0, [sp, #0x10] + cmp r0, #0x6 + blo _0207366E + ldr r0, [sp, #0xc] + bl FUN_02021A20 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + add sp, #0x14 + pop {r4-r7, pc} + nop +_020736E8: .word 0x0000069C +_020736EC: .word 0x00000B28 +_020736F0: .word 0x000006A4 + + thumb_func_start FUN_020736F4 +FUN_020736F4: ; 0x020736F4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + bl FUN_0200CCF8 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + + thumb_func_start FUN_02073710 +FUN_02073710: ; 0x02073710 + push {r3-r7, lr} + sub sp, #0x50 + add r4, r0, #0x0 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E74C + mov r0, #0x20 + mov r1, #0xc + bl FUN_0201C24C + mov r0, #0xc + bl FUN_0200BB14 + ldr r1, _020737BC ; =0x000005A8 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_0200BB34 + ldr r7, _020737C0 ; =0x000005AC + add r2, sp, #0x30 + ldr r3, _020737C4 ; =0x020F98F4 + str r0, [r4, r7] + ldmia r3!, {r0-r1} + add r6, r2, #0x0 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + ldr r5, _020737C8 ; =0x020F98C4 + stmia r2!, {r0-r1} + add r3, sp, #0x1c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + str r0, [r3, #0x0] + sub r0, r7, #0x4 + ldr r0, [r4, r0] + mov r3, #0x20 + bl FUN_0200BB6C + sub r1, r7, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + mov r2, #0x23 + bl FUN_0200BBF0 + sub r0, r7, #0x4 + ldr r0, [r4, r0] + bl FUN_0200BB68 + mov r2, #0x1 + mov r1, #0x0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + ldr r5, _020737CC ; =0x020F98D8 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + sub r1, r7, #0x4 + str r0, [r3, #0x0] + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + bl FUN_0200BD20 + add sp, #0x50 + pop {r3-r7, pc} + .balign 4 +_020737BC: .word 0x000005A8 +_020737C0: .word 0x000005AC +_020737C4: .word 0x020F98F4 +_020737C8: .word 0x020F98C4 +_020737CC: .word 0x020F98D8 + + thumb_func_start FUN_020737D0 +FUN_020737D0: ; 0x020737D0 + push {r4-r7, lr} + sub sp, #0x3c + add r5, r0, #0x0 + ldr r0, _02073878 ; =0x000005A4 + str r3, [sp, #0x8] + ldr r0, [r5, r0] + add r4, r2, #0x0 + ldr r0, [r0, #0x0] + add r7, r1, #0x0 + bl FUN_0206B9B0 + lsl r1, r4, #0x10 + asr r6, r1, #0x10 + mov r1, #0x2c + mul r1, r7 + str r1, [sp, #0xc] + add r2, r5, r1 + ldr r1, _0207387C ; =0x00000716 + str r0, [sp, #0x10] + strh r6, [r2, r1] + ldr r3, [sp, #0x8] + add r1, r1, #0x2 + lsl r3, r3, #0x10 + asr r4, r3, #0x10 + strh r4, [r2, r1] + add r7, r7, #0x4 + bl FUN_0206B6C8 + add r3, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, _02073880 ; =0x000005A8 + str r7, [sp, #0x4] + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + mov r2, #0x13 + bl FUN_0200C9D8 + ldr r0, [sp, #0x10] + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + str r7, [sp, #0x14] + add r0, sp, #0x14 + strh r6, [r0, #0x4] + strh r4, [r0, #0x6] + mov r1, #0x0 + strh r1, [r0, #0x8] + strh r1, [r0, #0xa] + ldr r0, [sp, #0xc] + str r1, [sp, #0x20] + ldr r1, _02073884 ; =0x00000704 + add r3, r5, r0 + ldrh r0, [r3, r1] + add r1, #0xd + ldrb r1, [r3, r1] + bl FUN_0206B7BC + add r0, r0, #0x3 + str r0, [sp, #0x24] + mov r0, #0x1 + str r0, [sp, #0x28] + mov r0, #0x0 + ldr r1, _02073880 ; =0x000005A8 + str r0, [sp, #0x2c] + str r0, [sp, #0x30] + str r0, [sp, #0x34] + str r0, [sp, #0x38] + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, sp, #0x14 + bl FUN_0200BE38 + ldr r1, [sp, #0xc] + add r2, r5, r1 + ldr r1, _02073888 ; =0x00000724 + str r0, [r2, r1] + add sp, #0x3c + pop {r4-r7, pc} + nop +_02073878: .word 0x000005A4 +_0207387C: .word 0x00000716 +_02073880: .word 0x000005A8 +_02073884: .word 0x00000704 +_02073888: .word 0x00000724 + + thumb_func_start FUN_0207388C +FUN_0207388C: ; 0x0207388C + push {r4-r7, lr} + sub sp, #0x14 + ldr r1, _020739AC ; =0x000005A8 + add r5, r0, #0x0 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + ldr r2, _020739B0 ; =0x020F9914 + bl FUN_0200BE38 + ldr r1, _020739B4 ; =0x000005C8 + ldr r2, _020739B8 ; =0x020F993C + str r0, [r5, r1] + add r0, r1, #0x0 + sub r0, #0x20 + sub r1, #0x1c + ldr r0, [r5, r0] + ldr r1, [r5, r1] + bl FUN_0200BE38 + ldr r1, _020739BC ; =0x000005CC + ldr r2, _020739C0 ; =0x020F9964 + str r0, [r5, r1] + add r0, r1, #0x0 + sub r0, #0x24 + sub r1, #0x20 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + bl FUN_0200BE38 + mov r1, #0x5d + lsl r1, r1, #0x4 + str r0, [r5, r1] + add r0, r1, #0x0 + sub r0, #0x28 + sub r1, #0x24 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, _020739C4 ; =0x020F998C + bl FUN_0200BE38 + ldr r1, _020739C8 ; =0x000005D4 + ldr r2, _020739CC ; =0x020F9C84 + str r0, [r5, r1] + add r0, r1, #0x0 + sub r0, #0x2c + sub r1, #0x28 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + bl FUN_0200BE38 + mov r1, #0x62 + lsl r1, r1, #0x4 + str r0, [r5, r1] + ldr r0, _020739B0 ; =0x020F9914 + mov r4, #0x0 + str r4, [sp, #0x4] + add r6, r5, #0x0 + str r0, [sp, #0x0] + add r7, r5, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + str r0, [sp, #0x10] +_0207390A: + ldr r0, _020739AC ; =0x000005A8 + ldr r1, _020739D0 ; =0x000005AC + add r3, r4, #0x0 + ldr r2, [sp, #0x8] + add r3, #0xa0 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r2, r3 + bl FUN_0200BE38 + ldr r1, _020739D4 ; =0x000005D8 + str r0, [r6, r1] + ldr r1, [sp, #0x0] + mov r0, #0xa4 + ldrsh r1, [r1, r0] + ldr r0, _020739D8 ; =0x0000071A + strh r1, [r7, r0] + ldr r1, [sp, #0x0] + mov r0, #0xa6 + ldrsh r1, [r1, r0] + ldr r0, _020739DC ; =0x0000071C + strh r1, [r7, r0] + ldr r0, _020739D4 ; =0x000005D8 + mov r1, #0x0 + ldr r0, [r6, r0] + bl FUN_020200A0 + mov r2, #0x19 + ldr r0, _020739AC ; =0x000005A8 + ldr r1, _020739D0 ; =0x000005AC + lsl r2, r2, #0x4 + add r3, r4, r2 + ldr r2, [sp, #0xc] + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r2, r3 + bl FUN_0200BE38 + mov r1, #0x5f + lsl r1, r1, #0x4 + mov r2, #0xa + str r0, [r6, r1] + add r0, r1, #0x0 + lsl r2, r2, #0x6 + sub r0, #0x48 + sub r1, #0x44 + add r3, r4, r2 + ldr r2, [sp, #0x10] + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r2, r3 + bl FUN_0200BE38 + ldr r1, _020739E0 ; =0x00000608 + add r4, #0x28 + str r0, [r6, r1] + ldr r0, [sp, #0x0] + add r6, r6, #0x4 + add r0, #0x28 + str r0, [sp, #0x0] + ldr r0, [sp, #0x4] + add r7, #0x2c + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, #0x6 + blo _0207390A + add r0, r1, #0x0 + sub r0, #0x3c + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + add sp, #0x14 + pop {r4-r7, pc} + nop +_020739AC: .word 0x000005A8 +_020739B0: .word 0x020F9914 +_020739B4: .word 0x000005C8 +_020739B8: .word 0x020F993C +_020739BC: .word 0x000005CC +_020739C0: .word 0x020F9964 +_020739C4: .word 0x020F998C +_020739C8: .word 0x000005D4 +_020739CC: .word 0x020F9C84 +_020739D0: .word 0x000005AC +_020739D4: .word 0x000005D8 +_020739D8: .word 0x0000071A +_020739DC: .word 0x0000071C +_020739E0: .word 0x00000608 + + thumb_func_start FUN_020739E4 +FUN_020739E4: ; 0x020739E4 + push {r3-r5, lr} + sub sp, #0x28 + add r4, r1, #0x0 + mov r1, #0x0 + add r5, r0, #0x0 + str r1, [sp, #0x0] + add r0, sp, #0x0 + strh r2, [r0, #0x4] + strh r3, [r0, #0x6] + strh r1, [r0, #0x8] + strh r1, [r0, #0xa] + mov r0, #0x1 + str r1, [sp, #0x10] + str r1, [sp, #0x18] + str r1, [sp, #0x1c] + str r1, [sp, #0x20] + str r1, [sp, #0x24] + ldr r1, _02073A28 ; =0x000005A8 + str r0, [sp, #0xc] + str r0, [sp, #0x14] + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, sp, #0x0 + bl FUN_0200BE38 + lsl r1, r4, #0x2 + add r2, r5, r1 + mov r1, #0x5b + lsl r1, r1, #0x4 + str r0, [r2, r1] + add sp, #0x28 + pop {r3-r5, pc} + nop +_02073A28: .word 0x000005A8 + + thumb_func_start FUN_02073A2C +FUN_02073A2C: ; 0x02073A2C + push {r4, lr} + ldr r1, _02073A48 ; =0x000005A8 + add r4, r0, #0x0 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + bl FUN_0200BCE0 + ldr r0, _02073A48 ; =0x000005A8 + ldr r0, [r4, r0] + bl FUN_0200BD04 + pop {r4, pc} + nop +_02073A48: .word 0x000005A8 + + thumb_func_start FUN_02073A4C +FUN_02073A4C: ; 0x02073A4C + push {r3-r5, lr} + mov r3, #0x5b + lsl r3, r3, #0x4 + add r1, #0xa + add r5, r0, r3 + lsl r4, r1, #0x2 + cmp r2, #0x7 + ldr r0, [r5, r4] + bne _02073A66 + mov r1, #0x0 + bl FUN_020200A0 + pop {r3-r5, pc} +_02073A66: + add r1, r2, #0x0 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #0x1 + bl FUN_020200A0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02073A78 +FUN_02073A78: ; 0x02073A78 + push {r3-r5, lr} + mov r3, #0x5b + lsl r3, r3, #0x4 + add r1, #0x10 + add r5, r0, r3 + lsl r4, r1, #0x2 + cmp r2, #0x0 + bne _02073A92 + ldr r0, [r5, r4] + mov r1, #0x0 + bl FUN_020200A0 + pop {r3-r5, pc} +_02073A92: + add r0, r2, #0x0 + bl FUN_0206EA98 + cmp r0, #0x1 + ldr r0, [r5, r4] + bne _02073AA6 + mov r1, #0x1 + bl FUN_02020130 + b _02073AAC +_02073AA6: + mov r1, #0x0 + bl FUN_02020130 +_02073AAC: + ldr r0, [r5, r4] + mov r1, #0x1 + bl FUN_020200A0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02073AB8 +FUN_02073AB8: ; 0x02073AB8 + push {r3-r5, lr} + mov r2, #0x5b + lsl r2, r2, #0x4 + add r1, #0x10 + lsl r4, r1, #0x2 + add r5, r0, r2 + ldr r0, [r5, r4] + mov r1, #0x1 + bl FUN_02020130 + ldr r0, [r5, r4] + mov r1, #0x1 + bl FUN_020200A0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02073AD8 +FUN_02073AD8: ; 0x02073AD8 + push {r4-r6, lr} + ldr r6, _02073B08 ; =0x0000071E + add r5, r1, #0x0 + mov r4, #0x2c + mul r5, r4 + add r1, #0x10 + lsl r1, r1, #0x2 + add r4, r0, r6 + add r2, #0x8 + strh r2, [r4, r5] + add r2, r6, #0x2 + add r2, r0, r2 + add r3, #0x8 + add r1, r0, r1 + mov r0, #0x5b + strh r3, [r2, r5] + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + ldrsh r1, [r4, r5] + ldrsh r2, [r2, r5] + bl FUN_0200C6E4 + pop {r4-r6, pc} + nop +_02073B08: .word 0x0000071E + + thumb_func_start FUN_02073B0C +FUN_02073B0C: ; 0x02073B0C + add r2, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x2c + mul r3, r0 + add r1, #0x16 + lsl r0, r1, #0x2 + add r1, r2, r0 + mov r0, #0x5b + add r3, r2, r3 + lsl r0, r0, #0x4 + ldr r2, _02073B34 ; =0x0000071E + ldr r0, [r1, r0] + ldrsh r1, [r3, r2] + add r2, r2, #0x2 + ldrsh r2, [r3, r2] + add r1, #0x8 + lsl r1, r1, #0x10 + ldr r3, _02073B38 ; =FUN_0200C6E4 + asr r1, r1, #0x10 + bx r3 + .balign 4 +_02073B34: .word 0x0000071E +_02073B38: .word FUN_0200C6E4 + + thumb_func_start FUN_02073B3C +FUN_02073B3C: ; 0x02073B3C + push {r4, lr} + mov r2, #0x5b + mov r4, #0x2c + lsl r2, r2, #0x4 + add r3, r0, r2 + add r2, r1, #0x0 + mul r4, r1 + add r1, r0, r4 + ldr r0, _02073B6C ; =0x00000712 + add r2, #0x16 + ldrh r0, [r1, r0] + lsl r2, r2, #0x2 + cmp r0, #0x0 + ldr r0, [r3, r2] + bne _02073B62 + mov r1, #0x0 + bl FUN_020200A0 + pop {r4, pc} +_02073B62: + mov r1, #0x1 + bl FUN_020200A0 + pop {r4, pc} + nop +_02073B6C: .word 0x00000712 + + thumb_func_start FUN_02073B70 +FUN_02073B70: ; 0x02073B70 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020201DC + cmp r4, r0 + beq _02073B8E + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02020208 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02020130 +_02073B8E: + pop {r3-r5, pc} + + thumb_func_start FUN_02073B90 +FUN_02073B90: ; 0x02073B90 + push {r3, lr} + add r2, r0, #0x0 + ldrh r0, [r2, #0x6] + cmp r0, #0x0 + bne _02073B9E + mov r0, #0x0 + pop {r3, pc} +_02073B9E: + ldrh r1, [r2, #0xe] + lsl r1, r1, #0x14 + lsr r1, r1, #0x14 + cmp r1, #0x7 + beq _02073BB4 + cmp r1, #0x0 + beq _02073BB4 + cmp r1, #0x6 + beq _02073BB4 + mov r0, #0x5 + pop {r3, pc} +_02073BB4: + ldrh r1, [r2, #0x8] + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #0x4 + bhi _02073BE6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02073BCC: ; jump table (using 16-bit offset) + .short _02073BE6 - _02073BCC - 2; case 0 + .short _02073BE2 - _02073BCC - 2; case 1 + .short _02073BDE - _02073BCC - 2; case 2 + .short _02073BDA - _02073BCC - 2; case 3 + .short _02073BD6 - _02073BCC - 2; case 4 +_02073BD6: + mov r0, #0x1 + pop {r3, pc} +_02073BDA: + mov r0, #0x2 + pop {r3, pc} +_02073BDE: + mov r0, #0x3 + pop {r3, pc} +_02073BE2: + mov r0, #0x4 + pop {r3, pc} +_02073BE6: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02073BEC +FUN_02073BEC: ; 0x02073BEC + push {r3-r7, lr} + add r6, r0, #0x0 + mov r0, #0x7 + lsl r0, r0, #0x8 + add r0, r6, r0 + mov r5, #0x0 + str r0, [sp, #0x0] +_02073BFA: + mov r0, #0x2c + add r1, r5, #0x0 + mul r1, r0 + ldr r0, [sp, #0x0] + add r4, r0, r1 + add r0, r4, #0x0 + add r0, #0x29 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + beq _02073C9A + mov r0, #0xb1 + lsl r0, r0, #0x4 + ldrb r0, [r6, r0] + cmp r0, #0x1 + bne _02073C2C + ldr r0, _02073CA8 ; =0x00000B0C + ldrb r0, [r6, r0] + cmp r0, r5 + beq _02073C28 + ldr r0, _02073CAC ; =0x00000B0D + ldrb r0, [r6, r0] + cmp r0, r5 + bne _02073C2C +_02073C28: + mov r7, #0x0 + b _02073C34 +_02073C2C: + add r0, r4, #0x0 + bl FUN_02073B90 + add r7, r0, #0x0 +_02073C34: + lsl r1, r7, #0x18 + ldr r0, [r4, #0x24] + lsr r1, r1, #0x18 + bl FUN_02073B70 + mov r1, #0x1 + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, _02073CB0 ; =0x00000B25 + ldrb r0, [r6, r0] + cmp r0, r5 + bne _02073C8C + cmp r7, #0x0 + beq _02073C8C + cmp r7, #0x5 + beq _02073C8C + ldr r0, [r4, #0x24] + bl FUN_0202022C + cmp r0, #0x0 + ldr r0, [r4, #0x24] + bne _02073C78 + mov r2, #0x18 + ldrsh r2, [r4, r2] + mov r1, #0x16 + ldrsh r1, [r4, r1] + sub r2, r2, #0x3 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + b _02073C9A +_02073C78: + mov r2, #0x18 + ldrsh r2, [r4, r2] + mov r1, #0x16 + ldrsh r1, [r4, r1] + add r2, r2, #0x1 + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + b _02073C9A +_02073C8C: + mov r1, #0x16 + mov r2, #0x18 + ldrsh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, #0x24] + bl FUN_0200C6E4 +_02073C9A: + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x6 + blo _02073BFA + pop {r3-r7, pc} + nop +_02073CA8: .word 0x00000B0C +_02073CAC: .word 0x00000B0D +_02073CB0: .word 0x00000B25 + + thumb_func_start FUN_02073CB4 +FUN_02073CB4: ; 0x02073CB4 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + ldr r0, _02073D10 ; =0x00000808 + add r4, r1, #0x0 + ldr r1, [r5, r0] + lsl r0, r4, #0x3 + add r0, r1, r0 + add r1, sp, #0x0 + add r6, r2, #0x0 + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_0201C620 + ldr r0, _02073D14 ; =0x000005A4 + add r1, r4, #0x0 + ldr r0, [r5, r0] + add r0, #0x21 + ldrb r0, [r0, #0x0] + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _02073D18 ; =0x000005C8 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02073D18 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _02073D18 ; =0x000005C8 + add r2, sp, #0x0 + ldrb r1, [r2, #0x1] + ldrb r2, [r2, #0x0] + ldr r0, [r5, r0] + bl FUN_0200C6E4 + ldr r0, _02073D18 ; =0x000005C8 + add r1, r6, #0x0 + ldr r0, [r5, r0] + bl FUN_0200C664 + add sp, #0x4 + pop {r3-r6, pc} + nop +_02073D10: .word 0x00000808 +_02073D14: .word 0x000005A4 +_02073D18: .word 0x000005C8 + + thumb_func_start FUN_02073D1C +FUN_02073D1C: ; 0x02073D1C + push {r3-r4, lr} + sub sp, #0xc + add r4, r0, #0x0 + lsl r0, r1, #0xc + str r0, [sp, #0x0] + mov r0, #0x1 + lsl r1, r2, #0xc + lsl r0, r0, #0x14 + str r1, [sp, #0x4] + add r0, r1, r0 + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + add r1, sp, #0x0 + bl FUN_02020044 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02020208 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02020130 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02073D6C +FUN_02073D6C: ; 0x02073D6C + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02020128 + cmp r0, #0x1 + bne _02073DA6 + mov r0, #0x62 + lsl r0, r0, #0x4 + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_0202022C + cmp r0, #0x2 + bne _02073DA6 + mov r0, #0x62 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 +_02073DA6: + pop {r4, pc} + + thumb_func_start FUN_02073DA8 +FUN_02073DA8: ; 0x02073DA8 + lsl r1, r0, #0x2 + ldr r0, _02073DB0 ; =0x020F9CAC + ldr r0, [r0, r1] + bx lr + .balign 4 +_02073DB0: .word 0x020F9CAC + + thumb_func_start FUN_02073DB4 +FUN_02073DB4: ; 0x02073DB4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200CCF8 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + ldr r0, _02073DEC ; =0x000006FC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_02001C5C + ldr r0, _02073DF0 ; =0x000006F8 + ldr r0, [r4, r0] + bl FUN_02012870 + mov r0, #0x95 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + .balign 4 +_02073DEC: .word 0x000006FC +_02073DF0: .word 0x000006F8 + + thumb_func_start FUN_02073DF4 +FUN_02073DF4: ; 0x02073DF4 + push {r3-r6, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02073DB4 + add r0, r5, #0x0 + mov r1, #0x26 + mov r2, #0x0 + bl FUN_020731D4 + mov r0, #0x3 + mov r1, #0xc + bl FUN_02012838 + ldr r1, _02073EB0 ; =0x000006F8 + str r0, [r5, r1] + mov r0, #0x3 + bl FUN_02073DA8 + ldr r1, _02073EB0 ; =0x000006F8 + add r2, r0, #0x0 + ldr r0, [r5, r1] + sub r1, #0x40 + ldr r1, [r5, r1] + bl FUN_020128A0 + mov r0, #0x4 + bl FUN_02073DA8 + ldr r1, _02073EB0 ; =0x000006F8 + add r2, r0, #0x0 + ldr r0, [r5, r1] + sub r1, #0x3c + ldr r1, [r5, r1] + bl FUN_020128A0 + mov r0, #0x9 + bl FUN_02073DA8 + ldr r1, _02073EB0 ; =0x000006F8 + add r2, r0, #0x0 + ldr r0, [r5, r1] + sub r1, #0x28 + ldr r1, [r5, r1] + bl FUN_020128A0 + ldr r0, _02073EB0 ; =0x000006F8 + mov r1, #0x0 + ldr r0, [r5, r0] + add r2, sp, #0x8 + str r0, [sp, #0x8] + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r5, r0 + str r0, [sp, #0xc] + strb r1, [r2, #0x8] + mov r1, #0x1 + strb r1, [r2, #0x9] + mov r3, #0x3 + strb r3, [r2, #0xa] + ldrb r6, [r2, #0xb] + mov r3, #0xf + bic r6, r3 + strb r6, [r2, #0xb] + ldrb r6, [r2, #0xb] + mov r3, #0x30 + bic r6, r3 + strb r6, [r2, #0xb] + ldrb r6, [r2, #0xb] + mov r3, #0xc0 + bic r6, r3 + strb r6, [r2, #0xb] + add r2, r1, #0x0 + mov r3, #0xe + bl FUN_0200CCA4 + mov r0, #0xc + str r0, [sp, #0x0] + mov r0, #0x2 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x8 + mov r1, #0x8 + add r3, r2, #0x0 + bl FUN_02001C14 + ldr r1, _02073EB4 ; =0x000006FC + str r0, [r5, r1] + mov r0, #0xd + str r0, [r4, #0x0] + add sp, #0x14 + pop {r3-r6, pc} + nop +_02073EB0: .word 0x000006F8 +_02073EB4: .word 0x000006FC + + thumb_func_start FUN_02073EB8 +FUN_02073EB8: ; 0x02073EB8 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02073EE0 ; =0x000006FC + add r4, r1, #0x0 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02001C5C + ldr r0, _02073EE4 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02073EE8 ; =0x000005A4 + mov r1, #0x3 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 +_02073EE0: .word 0x000006FC +_02073EE4: .word 0x000006F8 +_02073EE8: .word 0x000005A4 + + thumb_func_start FUN_02073EEC +FUN_02073EEC: ; 0x02073EEC + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r4, r1, #0x0 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200CCF8 + ldr r0, _02074044 ; =0x000006FC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02001C5C + ldr r0, _02074048 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _0207404C ; =0x00000B25 + ldrb r1, [r5, r0] + mov r0, #0x2c + mul r0, r1 + add r2, r5, r0 + ldr r0, _02074050 ; =0x0000070C + ldrh r2, [r2, r0] + ldr r0, _02074054 ; =0x000005A4 + cmp r2, #0x0 + bne _02073F66 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + ldr r2, _02074058 ; =0x0000069C + add r6, r0, #0x0 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + mov r1, #0x51 + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + b _02074018 +_02073F66: + ldr r0, [r5, r0] + add r1, r2, #0x0 + ldr r0, [r0, #0x4] + mov r2, #0x1 + mov r3, #0xc + bl FUN_0206ED38 + cmp r0, #0x1 + bne _0207400A + ldr r0, _02074054 ; =0x000005A4 + ldr r1, _0207404C ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0x0 + str r1, [sp, #0x0] + add r6, r0, #0x0 + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r6, #0x0 + bl FUN_02069EC4 + ldr r2, _02074058 ; =0x0000069C + mov r1, #0x52 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r2, _0207404C ; =0x00000B25 + mov r3, #0x6a + ldrb r6, [r5, r2] + mov r2, #0x2c + lsl r3, r3, #0x4 + mul r2, r6 + ldr r0, [r5, r3] + add r2, r5, r2 + add r3, #0x6c + ldrh r2, [r2, r3] + mov r1, #0x1 + bl FUN_0200AE38 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r1, r2, #0x4 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r1, [r5, r1] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + ldr r1, _0207404C ; =0x00000B25 + mov r2, #0x2c + ldrb r3, [r5, r1] + mov r0, #0x0 + add r6, r3, #0x0 + mul r6, r2 + ldr r3, _02074050 ; =0x0000070C + add r6, r5, r6 + strh r0, [r6, r3] + ldrb r1, [r5, r1] + add r0, r5, #0x0 + mul r2, r1 + add r2, r5, r2 + ldrh r2, [r2, r3] + bl FUN_02073A78 + b _02074018 +_0207400A: + ldr r2, _02074058 ; =0x0000069C + mov r1, #0x53 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 +_02074018: + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + mov r2, #0xa + mov r3, #0xf + bl FUN_0200D0BC + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0x0 + bl FUN_0207322C + mov r0, #0xf + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + nop +_02074044: .word 0x000006FC +_02074048: .word 0x000006F8 +_0207404C: .word 0x00000B25 +_02074050: .word 0x0000070C +_02074054: .word 0x000005A4 +_02074058: .word 0x0000069C + + thumb_func_start FUN_0207405C +FUN_0207405C: ; 0x0207405C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020740A0 ; =0x00000B24 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _0207409A + ldr r0, _020740A4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0207409A + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _020740A8 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x1 + pop {r4, pc} +_0207409A: + mov r0, #0xf + pop {r4, pc} + nop +_020740A0: .word 0x00000B24 +_020740A4: .word 0x021C48B8 +_020740A8: .word 0x000005C8 + + thumb_func_start FUN_020740AC +FUN_020740AC: ; 0x020740AC + push {r3-r6, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02073DB4 + add r0, r5, #0x0 + mov r1, #0x27 + mov r2, #0x0 + bl FUN_020731D4 + mov r0, #0x3 + mov r1, #0xc + bl FUN_02012838 + ldr r1, _02074168 ; =0x000006F8 + str r0, [r5, r1] + mov r0, #0x6 + bl FUN_02073DA8 + ldr r1, _02074168 ; =0x000006F8 + add r2, r0, #0x0 + ldr r0, [r5, r1] + sub r1, #0x34 + ldr r1, [r5, r1] + bl FUN_020128A0 + mov r0, #0x7 + bl FUN_02073DA8 + ldr r1, _02074168 ; =0x000006F8 + add r2, r0, #0x0 + ldr r0, [r5, r1] + sub r1, #0x30 + ldr r1, [r5, r1] + bl FUN_020128A0 + mov r0, #0x9 + bl FUN_02073DA8 + ldr r1, _02074168 ; =0x000006F8 + add r2, r0, #0x0 + ldr r0, [r5, r1] + sub r1, #0x28 + ldr r1, [r5, r1] + bl FUN_020128A0 + ldr r0, _02074168 ; =0x000006F8 + mov r1, #0x0 + ldr r0, [r5, r0] + add r2, sp, #0x8 + str r0, [sp, #0x8] + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r5, r0 + str r0, [sp, #0xc] + strb r1, [r2, #0x8] + mov r1, #0x1 + strb r1, [r2, #0x9] + mov r3, #0x3 + strb r3, [r2, #0xa] + ldrb r6, [r2, #0xb] + mov r3, #0xf + bic r6, r3 + strb r6, [r2, #0xb] + ldrb r6, [r2, #0xb] + mov r3, #0x30 + bic r6, r3 + strb r6, [r2, #0xb] + ldrb r6, [r2, #0xb] + mov r3, #0xc0 + bic r6, r3 + strb r6, [r2, #0xb] + add r2, r1, #0x0 + mov r3, #0xe + bl FUN_0200CCA4 + mov r0, #0xc + str r0, [sp, #0x0] + mov r0, #0x2 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x8 + mov r1, #0x8 + add r3, r2, #0x0 + bl FUN_02001C14 + ldr r1, _0207416C ; =0x000006FC + str r0, [r5, r1] + mov r0, #0xd + str r0, [r4, #0x0] + add sp, #0x14 + pop {r3-r6, pc} + nop +_02074168: .word 0x000006F8 +_0207416C: .word 0x000006FC + + thumb_func_start FUN_02074170 +FUN_02074170: ; 0x02074170 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02074198 ; =0x000006FC + add r4, r1, #0x0 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02001C5C + ldr r0, _0207419C ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _020741A0 ; =0x000005A4 + mov r1, #0x7 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 +_02074198: .word 0x000006FC +_0207419C: .word 0x000006F8 +_020741A0: .word 0x000005A4 + + thumb_func_start FUN_020741A4 +FUN_020741A4: ; 0x020741A4 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r4, r1, #0x0 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200CCF8 + ldr r0, _020741EC ; =0x000006FC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02001C5C + ldr r0, _020741F0 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + add r0, r5, #0x0 + mov r1, #0x2b + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _020741F4 ; =FUN_02074200 + ldr r1, _020741F8 ; =0x00000B18 + ldr r2, _020741FC ; =FUN_02074278 + str r0, [r5, r1] + add r0, r1, #0x4 + str r2, [r5, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r5, r1] + mov r0, #0x14 + str r0, [r4, #0x0] + pop {r3-r5, pc} + nop +_020741EC: .word 0x000006FC +_020741F0: .word 0x000006F8 +_020741F4: .word FUN_02074200 +_020741F8: .word 0x00000B18 +_020741FC: .word FUN_02074278 + + thumb_func_start FUN_02074200 +FUN_02074200: ; 0x02074200 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _02074268 ; =0x000005A4 + ldr r1, _0207426C ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r1, r0, #0x0 + ldr r0, _02074268 ; =0x000005A4 + mov r2, #0xc + ldr r0, [r4, r0] + ldr r0, [r0, #0x8] + bl FUN_02085644 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _02074254 + ldr r1, _0207426C ; =0x00000B25 + mov r2, #0x2c + ldrb r3, [r4, r1] + mov r0, #0x0 + add r5, r3, #0x0 + mul r5, r2 + ldr r3, _02074270 ; =0x0000070C + add r5, r4, r5 + strh r0, [r5, r3] + ldrb r1, [r4, r1] + add r0, r4, #0x0 + mul r2, r1 + add r2, r4, r2 + ldrh r2, [r2, r3] + bl FUN_02073A78 + add r0, r4, #0x0 + mov r1, #0x2e + mov r2, #0x0 + bl FUN_020731E8 + b _0207425E +_02074254: + add r0, r4, #0x0 + mov r1, #0x32 + mov r2, #0x0 + bl FUN_020731E8 +_0207425E: + ldr r0, _02074274 ; =0x00000B22 + mov r1, #0x10 + strb r1, [r4, r0] + mov r0, #0x14 + pop {r3-r5, pc} + .balign 4 +_02074268: .word 0x000005A4 +_0207426C: .word 0x00000B25 +_02074270: .word 0x0000070C +_02074274: .word 0x00000B22 + + thumb_func_start FUN_02074278 +FUN_02074278: ; 0x02074278 + push {r4, lr} + mov r1, #0x2f + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020731E8 + ldr r0, _0207429C ; =FUN_020742A8 + ldr r1, _020742A0 ; =0x00000B18 + ldr r2, _020742A4 ; =FUN_02074340 + str r0, [r4, r1] + add r0, r1, #0x4 + str r2, [r4, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r4, r1] + mov r0, #0x14 + pop {r4, pc} + nop +_0207429C: .word FUN_020742A8 +_020742A0: .word 0x00000B18 +_020742A4: .word FUN_02074340 + + thumb_func_start FUN_020742A8 +FUN_020742A8: ; 0x020742A8 + push {r3-r5, lr} + ldr r1, _02074330 ; =0x00000B25 + add r4, r0, #0x0 + ldrb r2, [r4, r1] + mov r1, #0x2c + ldr r0, _02074334 ; =0x000005A4 + mul r1, r2 + add r2, r4, r1 + ldr r1, _02074338 ; =0x0000070C + ldr r0, [r4, r0] + ldrh r1, [r2, r1] + ldr r0, [r0, #0x4] + mov r2, #0x1 + mov r3, #0xc + bl FUN_0206ED38 + cmp r0, #0x1 + bne _0207431A + ldr r0, _02074334 ; =0x000005A4 + ldr r1, _02074330 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0x0 + str r1, [sp, #0x0] + add r5, r0, #0x0 + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02069EC4 + ldr r1, _02074330 ; =0x00000B25 + mov r2, #0x2c + ldrb r3, [r4, r1] + mov r0, #0x0 + add r5, r3, #0x0 + mul r5, r2 + ldr r3, _02074338 ; =0x0000070C + add r5, r4, r5 + strh r0, [r5, r3] + ldrb r1, [r4, r1] + add r0, r4, #0x0 + mul r2, r1 + add r2, r4, r2 + ldrh r2, [r2, r3] + bl FUN_02073A78 + add r0, r4, #0x0 + mov r1, #0x33 + mov r2, #0x0 + bl FUN_020731E8 + b _02074324 +_0207431A: + add r0, r4, #0x0 + mov r1, #0x53 + mov r2, #0x0 + bl FUN_020731E8 +_02074324: + ldr r0, _0207433C ; =0x00000B22 + mov r1, #0x10 + strb r1, [r4, r0] + mov r0, #0x14 + pop {r3-r5, pc} + nop +_02074330: .word 0x00000B25 +_02074334: .word 0x000005A4 +_02074338: .word 0x0000070C +_0207433C: .word 0x00000B22 + + thumb_func_start FUN_02074340 +FUN_02074340: ; 0x02074340 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _02074368 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_02074368: .word 0x000005C8 + + thumb_func_start FUN_0207436C +FUN_0207436C: ; 0x0207436C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _020743A4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0207439E + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _020743A8 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x1 + pop {r4, pc} +_0207439E: + mov r0, #0x10 + pop {r4, pc} + nop +_020743A4: .word 0x021C48B8 +_020743A8: .word 0x000005C8 + + thumb_func_start FUN_020743AC +FUN_020743AC: ; 0x020743AC + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, _0207440C ; =0x00000B25 + add r5, r0, #0x0 + ldrb r2, [r5, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r5, r1 + ldr r1, _02074410 ; =0x00000712 + ldrh r2, [r2, r1] + cmp r2, #0x0 + bne _020743E6 + sub r1, #0x16 + ldr r0, [r5, r1] + mov r1, #0x0 + bl FUN_02001C5C + ldr r0, _02074414 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02074418 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + str r0, [r4, #0x0] + pop {r3-r5, pc} +_020743E6: + bl FUN_02073DB4 + add r0, r5, #0x0 + mov r1, #0xc3 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207441C ; =FUN_02074428 + ldr r1, _02074420 ; =0x00000B18 + ldr r2, _02074424 ; =FUN_02074454 + str r0, [r5, r1] + add r0, r1, #0x4 + str r2, [r5, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r5, r1] + mov r0, #0x14 + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 +_0207440C: .word 0x00000B25 +_02074410: .word 0x00000712 +_02074414: .word 0x000006F8 +_02074418: .word 0x000005A4 +_0207441C: .word FUN_02074428 +_02074420: .word 0x00000B18 +_02074424: .word FUN_02074454 + + thumb_func_start FUN_02074428 +FUN_02074428: ; 0x02074428 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207444C ; =0x000005A4 + ldr r1, _02074450 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + bl FUN_0206AA84 + ldr r0, _0207444C ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} + .balign 4 +_0207444C: .word 0x000005A4 +_02074450: .word 0x00000B25 + + thumb_func_start FUN_02074454 +FUN_02074454: ; 0x02074454 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _0207447C ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_0207447C: .word 0x000005C8 + + thumb_func_start FUN_02074480 +FUN_02074480: ; 0x02074480 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02074528 ; =0x00000B23 + add r4, r1, #0x0 + ldrb r2, [r5, r0] + mov r1, #0x40 + orr r1, r2 + strb r1, [r5, r0] + ldrb r1, [r5, r0] + mov r2, #0x3f + bic r1, r2 + add r2, r0, #0x2 + ldrb r3, [r5, r2] + mov r2, #0x3f + and r2, r3 + orr r1, r2 + strb r1, [r5, r0] + ldr r0, _0207452C ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_0200C664 + ldr r0, _0207452C ; =0x000005C8 + add r1, sp, #0x0 + ldr r0, [r5, r0] + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_0200C75C + ldr r0, _02074530 ; =0x000005CC + add r3, sp, #0x0 + mov r1, #0x2 + mov r2, #0x0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r5, r0] + bl FUN_0200C6E4 + ldr r0, _02074534 ; =0x000005A4 + ldr r1, _02074528 ; =0x00000B23 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + add r0, #0x21 + ldrb r0, [r0, #0x0] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _02074530 ; =0x000005CC + add r1, r1, #0x2 + ldr r0, [r5, r0] + bl FUN_02020130 + ldr r0, _02074530 ; =0x000005CC + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r1, _02074528 ; =0x00000B23 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_020709FC + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02073DB4 + add r0, r5, #0x0 + mov r1, #0x1e + mov r2, #0x1 + bl FUN_020731C0 + mov r0, #0x18 + str r0, [r4, #0x0] + pop {r3-r5, pc} + nop +_02074528: .word 0x00000B23 +_0207452C: .word 0x000005C8 +_02074530: .word 0x000005CC +_02074534: .word 0x000005A4 + + thumb_func_start FUN_02074538 +FUN_02074538: ; 0x02074538 + push {r4, lr} + ldr r1, _02074578 ; =0x00000B23 + add r4, r0, #0x0 + ldrb r2, [r4, r1] + mov r0, #0x40 + bic r2, r0 + strb r2, [r4, r1] + ldr r0, _0207457C ; =0x000005CC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _02074580 ; =0x00000B25 + ldrb r1, [r4, r0] + cmp r1, #0x6 + bhs _0207455E + add r0, r4, #0x0 + bl FUN_020709FC +_0207455E: + ldr r1, _02074578 ; =0x00000B23 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_020709FC + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + pop {r4, pc} + .balign 4 +_02074578: .word 0x00000B23 +_0207457C: .word 0x000005CC +_02074580: .word 0x00000B25 + + thumb_func_start FUN_02074584 +FUN_02074584: ; 0x02074584 + push {r3-r7, lr} + sub sp, #0x28 + ldr r2, _020746AC ; =0x00000B25 + add r6, r0, #0x0 + ldrb r1, [r6, r2] + add r0, r2, #0x0 + sub r0, #0x19 + strb r1, [r6, r0] + sub r0, r2, #0x2 + ldrb r0, [r6, r0] + add r3, r2, #0x0 + sub r3, #0x13 + lsl r0, r0, #0x1a + lsr r1, r0, #0x1a + add r0, r2, #0x0 + sub r0, #0x18 + strb r1, [r6, r0] + add r0, r2, #0x0 + mov r1, #0x1 + sub r0, #0x15 + strb r1, [r6, r0] + mov r0, #0x0 + strb r0, [r6, r3] + add r3, r2, #0x0 + sub r3, #0x14 + strb r0, [r6, r3] + add r3, r2, #0x0 + sub r3, #0x19 + ldrb r3, [r6, r3] + tst r3, r1 + beq _020745C8 + sub r2, #0x17 + strb r1, [r6, r2] + b _020745CC +_020745C8: + sub r2, #0x17 + strb r0, [r6, r2] +_020745CC: + ldr r0, _020746B0 ; =0x00000B0D + mov r1, #0x1 + ldrb r2, [r6, r0] + tst r2, r1 + beq _020745D8 + b _020745DA +_020745D8: + mov r1, #0x0 +_020745DA: + add r0, r0, #0x2 + strb r1, [r6, r0] + ldr r0, [r6, #0x0] + mov r1, #0x2 + bl FUN_0201886C + str r0, [sp, #0x14] + ldr r0, [r6, #0x0] + mov r1, #0x1 + bl FUN_0201886C + ldr r1, _020746B4 ; =0x00000B0C + str r0, [sp, #0x10] + ldrb r3, [r6, r1] + add r1, r1, #0x1 + mov r2, #0x2c + add r0, r3, #0x0 + ldrb r3, [r6, r1] + mul r0, r2 + mov r4, #0x0 + add r1, r3, #0x0 + add r3, r6, r0 + ldr r0, _020746B8 ; =0x00000715 + mul r1, r2 + ldrsb r2, [r3, r0] + str r2, [sp, #0xc] + sub r2, r0, #0x1 + ldrsb r2, [r3, r2] + str r2, [sp, #0x8] + add r2, r6, r1 + ldrsb r1, [r2, r0] + sub r0, r0, #0x1 + ldrsb r0, [r2, r0] + str r1, [sp, #0x4] + str r0, [sp, #0x0] + ldr r0, _020746BC ; =0x0000080C + add r0, r6, r0 + str r0, [sp, #0x18] + ldr r0, _020746C0 ; =0x0000098C + add r0, r6, r0 + str r0, [sp, #0x1c] + ldr r0, _020746C4 ; =0x000008CC + add r0, r6, r0 + str r0, [sp, #0x20] + ldr r0, _020746C8 ; =0x00000A4C + add r0, r6, r0 + str r0, [sp, #0x24] +_02074638: + ldr r0, [sp, #0xc] + lsl r5, r4, #0x5 + add r0, r0, r4 + lsl r1, r0, #0x5 + ldr r0, [sp, #0x8] + mov r2, #0x20 + add r0, r0, r1 + lsl r7, r0, #0x1 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + add r0, r0, r5 + add r1, r1, r7 + blx memcpy + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x10] + add r0, r0, r5 + add r1, r1, r7 + mov r2, #0x20 + blx memcpy + ldr r0, [sp, #0x4] + mov r2, #0x20 + add r0, r0, r4 + lsl r1, r0, #0x5 + ldr r0, [sp, #0x0] + add r0, r0, r1 + lsl r7, r0, #0x1 + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x14] + add r0, r0, r5 + add r1, r1, r7 + blx memcpy + ldr r0, [sp, #0x24] + ldr r1, [sp, #0x10] + add r0, r0, r5 + add r1, r1, r7 + mov r2, #0x20 + blx memcpy + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x6 + blo _02074638 + ldr r0, _020746CC ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r6, r0] + bl FUN_020200A0 + ldr r0, _020746D0 ; =0x000005CC + mov r1, #0x0 + ldr r0, [r6, r0] + bl FUN_020200A0 + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 +_020746AC: .word 0x00000B25 +_020746B0: .word 0x00000B0D +_020746B4: .word 0x00000B0C +_020746B8: .word 0x00000715 +_020746BC: .word 0x0000080C +_020746C0: .word 0x0000098C +_020746C4: .word 0x000008CC +_020746C8: .word 0x00000A4C +_020746CC: .word 0x000005C8 +_020746D0: .word 0x000005CC + + thumb_func_start FUN_020746D4 +FUN_020746D4: ; 0x020746D4 + push {r3-r5, lr} + ldr r1, _02074828 ; =0x0000080C + add r5, r0, #0x0 + ldr r2, _0207482C ; =0x00000305 + add r4, r5, r1 + ldrb r1, [r4, r2] + cmp r1, #0x4 + bls _020746E6 + b _02074822 +_020746E6: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020746F2: ; jump table (using 16-bit offset) + .short _020746FC - _020746F2 - 2; case 0 + .short _0207470C - _020746F2 - 2; case 1 + .short _0207475C - _020746F2 - 2; case 2 + .short _02074770 - _020746F2 - 2; case 3 + .short _020747CE - _020746F2 - 2; case 4 +_020746FC: + mov r0, #0x6a + lsl r0, r0, #0x4 + bl FUN_020054C8 + ldr r0, _0207482C ; =0x00000305 + mov r1, #0x1 + strb r1, [r4, r0] + b _02074822 +_0207470C: + add r1, r2, #0x1 + ldrb r1, [r4, r1] + add r3, r1, #0x1 + add r1, r2, #0x1 + strb r3, [r4, r1] + mov r1, #0x0 + bl FUN_02074848 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02074848 + ldr r2, _02074830 ; =0x00000302 + add r0, r5, #0x0 + ldrb r2, [r4, r2] + mov r1, #0x0 + bl FUN_0207499C + ldr r2, _02074834 ; =0x00000303 + add r0, r5, #0x0 + ldrb r2, [r4, r2] + mov r1, #0x1 + bl FUN_0207499C + ldr r0, [r5, #0x0] + mov r1, #0x2 + bl FUN_0201AC68 + ldr r0, [r5, #0x0] + mov r1, #0x1 + bl FUN_0201AC68 + ldr r0, _02074838 ; =0x00000306 + ldrb r1, [r4, r0] + cmp r1, #0x10 + bne _02074822 + mov r1, #0x2 + sub r0, r0, #0x1 + strb r1, [r4, r0] + b _02074822 +_0207475C: + bl FUN_02074AF4 + mov r0, #0x6a + lsl r0, r0, #0x4 + bl FUN_020054C8 + ldr r0, _0207482C ; =0x00000305 + mov r1, #0x3 + strb r1, [r4, r0] + b _02074822 +_02074770: + add r1, r2, #0x1 + ldrb r1, [r4, r1] + sub r3, r1, #0x1 + add r1, r2, #0x1 + strb r3, [r4, r1] + mov r1, #0x0 + bl FUN_02074848 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02074848 + ldr r2, _02074830 ; =0x00000302 + add r0, r5, #0x0 + ldrb r3, [r4, r2] + mov r2, #0x1 + mov r1, #0x0 + eor r2, r3 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_0207499C + ldr r2, _02074834 ; =0x00000303 + mov r1, #0x1 + ldrb r2, [r4, r2] + add r0, r5, #0x0 + eor r2, r1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_0207499C + ldr r0, [r5, #0x0] + mov r1, #0x2 + bl FUN_0201AC68 + ldr r0, [r5, #0x0] + mov r1, #0x1 + bl FUN_0201AC68 + ldr r0, _02074838 ; =0x00000306 + ldrb r1, [r4, r0] + cmp r1, #0x0 + bne _02074822 + mov r1, #0x4 + sub r0, r0, #0x1 + strb r1, [r4, r0] + b _02074822 +_020747CE: + ldr r0, _0207483C ; =0x000005A4 + sub r1, r2, #0x5 + ldr r0, [r5, r0] + sub r2, r2, #0x4 + ldrb r1, [r4, r1] + ldrb r2, [r4, r2] + ldr r0, [r0, #0x0] + bl FUN_0206BA38 + ldr r0, _02074840 ; =0x000005C8 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0xc1 + mov r1, #0x0 + lsl r0, r0, #0x2 + strb r1, [r4, r0] + ldr r1, _02074844 ; =0x00000B23 + mov r0, #0x40 + ldrb r2, [r5, r1] + bic r2, r0 + strb r2, [r5, r1] + add r1, r1, #0x2 + ldrb r1, [r5, r1] + add r0, r5, #0x0 + bl FUN_020709FC + ldr r1, _02074844 ; =0x00000B23 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_020709FC + add r0, r5, #0x0 + mov r1, #0x1d + mov r2, #0x0 + bl FUN_020731C0 + mov r0, #0x1 + pop {r3-r5, pc} +_02074822: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02074828: .word 0x0000080C +_0207482C: .word 0x00000305 +_02074830: .word 0x00000302 +_02074834: .word 0x00000303 +_02074838: .word 0x00000306 +_0207483C: .word 0x000005A4 +_02074840: .word 0x000005C8 +_02074844: .word 0x00000B23 + + thumb_func_start FUN_02074848 +FUN_02074848: ; 0x02074848 + push {r3-r7, lr} + sub sp, #0x28 + add r5, r0, #0x0 + ldr r0, _02074990 ; =0x0000080C + str r1, [sp, #0x1c] + ldr r1, [sp, #0x1c] + add r4, r5, r0 + add r2, r4, r1 + mov r1, #0x3 + lsl r1, r1, #0x8 + ldrb r2, [r2, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r5, r1 + add r1, r0, #0x0 + sub r1, #0xf8 + ldrsb r7, [r2, r1] + sub r0, #0xf7 + ldrb r6, [r2, r0] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x20] + str r6, [sp, #0x0] + mov r1, #0x10 + str r1, [sp, #0x4] + mov r0, #0x6 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r3, [sp, #0x20] + mov r1, #0x2 + mov r2, #0x0 + bl FUN_02018540 + str r6, [sp, #0x0] + mov r1, #0x10 + str r1, [sp, #0x4] + mov r0, #0x6 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x0] + ldr r3, [sp, #0x20] + mov r1, #0x1 + mov r2, #0x0 + bl FUN_02018540 + ldr r0, [sp, #0x1c] + add r1, r4, r0 + ldr r0, _02074994 ; =0x00000302 + ldrb r1, [r1, r0] + cmp r1, #0x0 + bne _02074918 + add r0, r0, #0x4 + ldrb r2, [r4, r0] + ldr r0, [sp, #0x1c] + mov r3, #0x10 + add r7, r0, #0x0 + sub r0, r3, r2 + lsl r0, r0, #0x18 + mov r1, #0xc0 + lsr r0, r0, #0x18 + mul r7, r1 + str r0, [sp, #0x0] + mov r1, #0x6 + str r1, [sp, #0x4] + add r0, r4, r7 + str r0, [sp, #0x8] + str r2, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + str r3, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x20] + mov r1, #0x2 + add r3, r6, #0x0 + bl FUN_02018170 + ldr r0, _02074998 ; =0x00000306 + mov r3, #0x10 + ldrb r2, [r4, r0] + mov r1, #0x6 + sub r0, r3, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + lsl r0, r1, #0x6 + add r0, r4, r0 + str r1, [sp, #0x4] + add r0, r0, r7 + str r0, [sp, #0x8] + str r2, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + str r3, [sp, #0x14] + str r1, [sp, #0x18] + ldr r0, [r5, #0x0] + ldr r2, [sp, #0x20] + mov r1, #0x1 + add r3, r6, #0x0 + bl FUN_02018170 + add sp, #0x28 + pop {r3-r7, pc} +_02074918: + ldr r1, [sp, #0x1c] + mov r2, #0xc0 + mul r2, r1 + str r2, [sp, #0x24] + add r0, r0, #0x4 + ldrb r2, [r4, r0] + mov r3, #0x10 + ldr r1, [sp, #0x24] + sub r0, r3, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + add r1, r4, r1 + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + str r3, [sp, #0x14] + add r2, r7, r2 + str r0, [sp, #0x18] + lsl r2, r2, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + lsr r2, r2, #0x18 + add r3, r6, #0x0 + bl FUN_02018170 + ldr r0, _02074998 ; =0x00000306 + ldrb r2, [r4, r0] + mov r0, #0x10 + sub r0, r0, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x6 + lsl r1, r0, #0x6 + add r3, r4, r1 + ldr r1, [sp, #0x24] + add r2, r7, r2 + add r1, r3, r1 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + mov r1, #0x10 + str r1, [sp, #0x14] + str r0, [sp, #0x18] + lsl r2, r2, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x1 + lsr r2, r2, #0x18 + add r3, r6, #0x0 + bl FUN_02018170 + add sp, #0x28 + pop {r3-r7, pc} + nop +_02074990: .word 0x0000080C +_02074994: .word 0x00000302 +_02074998: .word 0x00000306 + + thumb_func_start FUN_0207499C +FUN_0207499C: ; 0x0207499C + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02074AE0 ; =0x0000080C + add r4, r1, #0x0 + add r1, r5, r0 + mov r0, #0x3 + lsl r0, r0, #0x8 + add r6, r1, r0 + ldrb r0, [r6, r4] + add r7, r2, #0x0 + add r2, sp, #0x0 + lsl r0, r0, #0x2 + add r1, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + add r1, sp, #0x0 + add r1, #0x2 + bl FUN_0200C75C + cmp r7, #0x0 + ldr r0, _02074AE4 ; =0x00000716 + bne _02074A04 + ldrb r3, [r6, r4] + mov r7, #0x2c + add r2, r5, r0 + add r1, r3, #0x0 + mul r1, r7 + ldrsh r3, [r2, r1] + sub r3, #0x8 + strh r3, [r2, r1] + ldrb r3, [r6, r4] + add r1, r0, #0x4 + add r2, r5, r1 + add r1, r3, #0x0 + mul r1, r7 + ldrsh r3, [r2, r1] + add r0, #0x8 + add r0, r5, r0 + sub r3, #0x8 + strh r3, [r2, r1] + ldrb r1, [r6, r4] + add r2, r1, #0x0 + mul r2, r7 + ldrsh r1, [r0, r2] + sub r1, #0x8 + strh r1, [r0, r2] + add r1, sp, #0x0 + mov r0, #0x2 + ldrsh r0, [r1, r0] + sub r0, #0x8 + b _02074A3C +_02074A04: + ldrb r3, [r6, r4] + mov r7, #0x2c + add r2, r5, r0 + add r1, r3, #0x0 + mul r1, r7 + ldrsh r3, [r2, r1] + add r3, #0x8 + strh r3, [r2, r1] + ldrb r3, [r6, r4] + add r1, r0, #0x4 + add r2, r5, r1 + add r1, r3, #0x0 + mul r1, r7 + ldrsh r3, [r2, r1] + add r0, #0x8 + add r0, r5, r0 + add r3, #0x8 + strh r3, [r2, r1] + ldrb r1, [r6, r4] + add r2, r1, #0x0 + mul r2, r7 + ldrsh r1, [r0, r2] + add r1, #0x8 + strh r1, [r0, r2] + add r1, sp, #0x0 + mov r0, #0x2 + ldrsh r0, [r1, r0] + add r0, #0x8 +_02074A3C: + strh r0, [r1, #0x2] + ldrb r1, [r6, r4] + mov r0, #0x2c + ldr r2, _02074AE8 ; =0x00000724 + mul r0, r1 + add r3, r5, r0 + add r1, r2, #0x0 + ldr r0, [r3, r2] + sub r1, #0xe + sub r2, #0xc + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + bl FUN_0200C6E4 + ldrb r2, [r6, r4] + mov r0, #0x2c + ldr r3, _02074AEC ; =0x0000071A + add r1, r2, #0x0 + add r2, #0xa + mul r1, r0 + lsl r0, r2, #0x2 + add r2, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r2, r0] + add r2, r5, r1 + ldrsh r1, [r2, r3] + add r3, r3, #0x2 + ldrsh r2, [r2, r3] + bl FUN_0200C6E4 + ldrb r2, [r6, r4] + mov r0, #0x2c + ldr r3, _02074AF0 ; =0x0000071E + add r1, r2, #0x0 + add r2, #0x10 + mul r1, r0 + lsl r0, r2, #0x2 + add r2, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r2, r0] + add r2, r5, r1 + ldrsh r1, [r2, r3] + add r3, r3, #0x2 + ldrsh r2, [r2, r3] + bl FUN_0200C6E4 + ldrb r2, [r6, r4] + mov r0, #0x2c + ldr r3, _02074AF0 ; =0x0000071E + add r1, r2, #0x0 + add r2, #0x16 + mul r1, r0 + lsl r0, r2, #0x2 + add r2, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r2, r0] + add r2, r5, r1 + ldrsh r1, [r2, r3] + add r3, r3, #0x2 + ldrsh r2, [r2, r3] + add r1, #0x8 + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + bl FUN_0200C6E4 + ldrb r0, [r6, r4] + add r3, sp, #0x0 + mov r2, #0x0 + lsl r0, r0, #0x2 + add r1, r5, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + mov r1, #0x2 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + bl FUN_0200C6E4 + pop {r3-r7, pc} + .balign 4 +_02074AE0: .word 0x0000080C +_02074AE4: .word 0x00000716 +_02074AE8: .word 0x00000724 +_02074AEC: .word 0x0000071A +_02074AF0: .word 0x0000071E + + thumb_func_start FUN_02074AF4 +FUN_02074AF4: ; 0x02074AF4 + push {r4-r7, lr} + sub sp, #0x1c + add r5, r0, #0x0 + ldr r0, _02074DD0 ; =0x0000080C + mov r1, #0x2c + add r4, r5, r0 + mov r0, #0xc + bl FUN_02016998 + add r7, r0, #0x0 + mov r0, #0x3 + lsl r0, r0, #0x8 + ldrb r1, [r4, r0] + mov r0, #0x2c + add r3, r7, #0x0 + mul r0, r1 + add r1, r5, r0 + mov r0, #0x7 + lsl r0, r0, #0x8 + add r6, r1, r0 + mov r2, #0x5 +_02074B1E: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02074B1E + ldr r0, [r6, #0x0] + mov r1, #0x3 + lsl r1, r1, #0x8 + str r0, [r3, #0x0] + ldrb r0, [r4, r1] + add r1, r1, #0x1 + ldrb r1, [r4, r1] + mov r2, #0x2c + add r3, r0, #0x0 + mul r3, r2 + mul r2, r1 + mov r1, #0x7 + add r0, r5, r3 + lsl r1, r1, #0x8 + add r2, r5, r2 + add r6, r2, r1 + add r3, r0, r1 + mov r2, #0x5 +_02074B4A: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02074B4A + ldr r0, [r6, #0x0] + add r6, r7, #0x0 + str r0, [r3, #0x0] + ldr r0, _02074DD4 ; =0x00000301 + mov r2, #0x5 + ldrb r1, [r4, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r5, r0 + mov r0, #0x7 + lsl r0, r0, #0x8 + add r3, r1, r0 +_02074B6A: + ldmia r6!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02074B6A + ldr r0, [r6, #0x0] + add r1, r7, #0x0 + str r0, [r3, #0x0] + mov r0, #0xc + bl FUN_02016A8C + mov r1, #0x3 + lsl r1, r1, #0x8 + ldrb r3, [r4, r1] + ldr r0, _02074DD8 ; =0x00000716 + add r2, r5, r0 + mov r0, #0x2c + add r7, r3, #0x0 + mul r7, r0 + ldrsh r3, [r2, r7] + str r3, [sp, #0x0] + add r3, r1, #0x1 + ldrb r3, [r4, r3] + add r6, r3, #0x0 + mul r6, r0 + ldr r3, _02074DD8 ; =0x00000716 + add r6, r5, r6 + ldrsh r3, [r6, r3] + strh r3, [r2, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r6, r5, r3 + ldr r3, [sp, #0x0] + ldr r2, _02074DD8 ; =0x00000716 + strh r3, [r6, r2] + add r2, r2, #0x2 + add r3, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsh r2, [r3, r7] + str r2, [sp, #0x4] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r6, r2, #0x0 + mul r6, r0 + add r2, r5, r6 + ldr r6, _02074DD8 ; =0x00000716 + add r6, r6, #0x2 + ldrsh r2, [r2, r6] + strh r2, [r3, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r2, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + add r6, r3, #0x2 + ldr r3, [sp, #0x4] + strh r3, [r2, r6] + ldr r2, _02074DD8 ; =0x00000716 + add r2, r2, #0x4 + add r3, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsh r2, [r3, r7] + str r2, [sp, #0x8] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r6, r2, #0x0 + mul r6, r0 + add r2, r5, r6 + ldr r6, _02074DD8 ; =0x00000716 + add r6, r6, #0x4 + ldrsh r2, [r2, r6] + strh r2, [r3, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r2, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + add r6, r3, #0x4 + ldr r3, [sp, #0x8] + strh r3, [r2, r6] + ldr r2, _02074DD8 ; =0x00000716 + add r2, r2, #0x6 + add r3, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsh r2, [r3, r7] + str r2, [sp, #0xc] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r6, r2, #0x0 + mul r6, r0 + add r2, r5, r6 + ldr r6, _02074DD8 ; =0x00000716 + add r6, r6, #0x6 + ldrsh r2, [r2, r6] + strh r2, [r3, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r2, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + add r6, r3, #0x6 + ldr r3, [sp, #0xc] + strh r3, [r2, r6] + ldr r2, _02074DD8 ; =0x00000716 + add r2, #0x8 + add r6, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsh r2, [r6, r7] + str r2, [sp, #0x10] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r2, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + add r3, #0x8 + ldrsh r2, [r2, r3] + strh r2, [r6, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r6, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + ldr r2, [sp, #0x10] + add r3, #0x8 + strh r2, [r6, r3] + ldr r2, _02074DD8 ; =0x00000716 + add r2, #0xa + add r6, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsh r2, [r6, r7] + str r2, [sp, #0x14] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r2, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + add r3, #0xa + ldrsh r2, [r2, r3] + strh r2, [r6, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r6, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + ldr r2, [sp, #0x14] + add r3, #0xa + strh r2, [r6, r3] + ldr r2, _02074DD8 ; =0x00000716 + sub r2, r2, #0x2 + add r3, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsb r2, [r3, r7] + str r2, [sp, #0x18] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r6, r2, #0x0 + mul r6, r0 + add r2, r5, r6 + ldr r6, _02074DD8 ; =0x00000716 + sub r6, r6, #0x2 + ldrsb r2, [r2, r6] + strb r2, [r3, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + mul r3, r0 + add r2, r5, r3 + ldr r3, _02074DD8 ; =0x00000716 + sub r6, r3, #0x2 + ldr r3, [sp, #0x18] + strb r3, [r2, r6] + ldr r2, _02074DD8 ; =0x00000716 + sub r2, r2, #0x1 + add r6, r5, r2 + ldrb r2, [r4, r1] + add r7, r2, #0x0 + mul r7, r0 + ldrsb r2, [r6, r7] + mov r12, r2 + add r2, r1, #0x1 + ldrb r2, [r4, r2] + add r3, r2, #0x0 + ldr r2, _02074DD8 ; =0x00000716 + mul r3, r0 + add r3, r5, r3 + sub r2, r2, #0x1 + ldrsb r2, [r3, r2] + strb r2, [r6, r7] + add r2, r1, #0x1 + ldrb r2, [r4, r2] + mul r0, r2 + ldr r2, _02074DD8 ; =0x00000716 + add r0, r5, r0 + sub r3, r2, #0x1 + mov r2, r12 + strb r2, [r0, r3] + ldrb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02072D1C + ldr r1, _02074DD4 ; =0x00000301 + add r0, r5, #0x0 + ldrb r1, [r4, r1] + bl FUN_02072D1C + mov r1, #0x3 + lsl r1, r1, #0x8 + ldrb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02072E14 + ldr r1, _02074DD4 ; =0x00000301 + add r0, r5, #0x0 + ldrb r1, [r4, r1] + bl FUN_02072E14 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02074DE4 + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02074DE4 + mov r0, #0x3 + lsl r0, r0, #0x8 + ldrb r1, [r4, r0] + mov r2, #0x2c + add r0, r5, #0x0 + mul r2, r1 + add r3, r5, r2 + ldr r2, _02074DDC ; =0x0000070E + ldrh r2, [r3, r2] + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + ldr r0, _02074DD4 ; =0x00000301 + mov r2, #0x2c + ldrb r1, [r4, r0] + add r0, r5, #0x0 + mul r2, r1 + add r3, r5, r2 + ldr r2, _02074DDC ; =0x0000070E + ldrh r2, [r3, r2] + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + mov r0, #0x3 + lsl r0, r0, #0x8 + ldrb r1, [r4, r0] + mov r2, #0x2c + add r0, r5, #0x0 + mul r2, r1 + add r3, r5, r2 + ldr r2, _02074DE0 ; =0x0000070C + ldrh r2, [r3, r2] + bl FUN_02073A78 + ldr r0, _02074DD4 ; =0x00000301 + mov r2, #0x2c + ldrb r1, [r4, r0] + add r0, r5, #0x0 + mul r2, r1 + add r3, r5, r2 + ldr r2, _02074DE0 ; =0x0000070C + ldrh r2, [r3, r2] + bl FUN_02073A78 + mov r1, #0x3 + lsl r1, r1, #0x8 + ldrb r1, [r4, r1] + add r0, r5, #0x0 + bl FUN_02073B3C + ldr r1, _02074DD4 ; =0x00000301 + add r0, r5, #0x0 + ldrb r1, [r4, r1] + bl FUN_02073B3C + add sp, #0x1c + pop {r4-r7, pc} + .balign 4 +_02074DD0: .word 0x0000080C +_02074DD4: .word 0x00000301 +_02074DD8: .word 0x00000716 +_02074DDC: .word 0x0000070E +_02074DE0: .word 0x0000070C + + thumb_func_start FUN_02074DE4 +FUN_02074DE4: ; 0x02074DE4 + push {r3-r7, lr} + add r7, r1, #0x0 + ldr r1, _02074E6C ; =0x0000080C + add r6, r0, #0x0 + add r4, r6, r1 + mov r1, #0xc0 + mul r1, r7 + add r5, r4, r1 + bl FUN_020703BC + add r3, r0, #0x0 + mov r0, #0x3 + add r1, r4, r7 + lsl r0, r0, #0x8 + ldrb r1, [r1, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r6, r0 + mov r0, #0x71 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _02074E3C + mov r3, #0xf + mov r1, #0x0 + lsl r3, r3, #0xc + mov r4, #0x17 +_02074E1A: + lsl r0, r1, #0x1 + add r2, r5, r0 + add r2, #0x6c + ldrh r2, [r2, #0x0] + add r0, r5, r0 + add r0, #0x6c + and r2, r3 + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + orr r2, r4 + strh r2, [r0, #0x0] + add r0, r1, #0x1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r1, #0x9 + blo _02074E1A + pop {r3-r7, pc} +_02074E3C: + mov r6, #0xf + ldr r0, _02074E70 ; =0x00000FFF + mov r4, #0x0 + lsl r6, r6, #0xc +_02074E44: + lsl r2, r4, #0x1 + add r1, r5, r2 + add r1, #0x6c + ldrh r1, [r1, #0x0] + ldrh r7, [r3, r2] + and r1, r6 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + and r7, r0 + orr r7, r1 + add r1, r5, r2 + add r1, #0x6c + strh r7, [r1, #0x0] + add r1, r4, #0x1 + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + cmp r4, #0x9 + blo _02074E44 + pop {r3-r7, pc} + nop +_02074E6C: .word 0x0000080C +_02074E70: .word 0x00000FFF + + thumb_func_start FUN_02074E74 +FUN_02074E74: ; 0x02074E74 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r6, r1, #0x0 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02073DB4 + ldr r0, _02074F5C ; =0x000005A4 + mov r4, #0x0 + ldr r0, [r5, r0] + add r1, r0, #0x0 + add r1, #0x32 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + beq _02074EFA +_02074E9E: + add r2, r0, r4 + add r2, #0x2c + ldrb r2, [r2, #0x0] + cmp r2, #0x0 + bne _02074EF0 + ldr r1, _02074F60 ; =0x00000B25 + add r0, r0, r4 + ldrb r2, [r5, r1] + add r0, #0x2c + add r2, r2, #0x1 + strb r2, [r0, #0x0] + ldrb r1, [r5, r1] + add r0, r5, #0x0 + bl FUN_02073024 + add r0, r5, #0x0 + mov r1, #0x22 + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _02074F64 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_0200C664 + ldr r0, _02074F5C ; =0x000005A4 + ldr r0, [r5, r0] + add r0, #0x32 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + sub r0, r0, #0x1 + cmp r4, r0 + bne _02074EEA + add r0, r5, #0x0 + mov r1, #0x6 + bl FUN_02070E60 +_02074EEA: + mov r0, #0x1 + str r0, [r6, #0x0] + pop {r4-r6, pc} +_02074EF0: + add r2, r4, #0x1 + lsl r2, r2, #0x18 + lsr r4, r2, #0x18 + cmp r4, r1 + blo _02074E9E +_02074EFA: + cmp r1, #0x5 + bhi _02074F50 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02074F0A: ; jump table (using 16-bit offset) + .short _02074F50 - _02074F0A - 2; case 0 + .short _02074F16 - _02074F0A - 2; case 1 + .short _02074F22 - _02074F0A - 2; case 2 + .short _02074F2E - _02074F0A - 2; case 3 + .short _02074F3A - _02074F0A - 2; case 4 + .short _02074F46 - _02074F0A - 2; case 5 +_02074F16: + add r0, r5, #0x0 + mov r1, #0x7b + mov r2, #0x1 + bl FUN_020731E8 + b _02074F50 +_02074F22: + add r0, r5, #0x0 + mov r1, #0x64 + mov r2, #0x1 + bl FUN_020731E8 + b _02074F50 +_02074F2E: + add r0, r5, #0x0 + mov r1, #0x7c + mov r2, #0x1 + bl FUN_020731E8 + b _02074F50 +_02074F3A: + add r0, r5, #0x0 + mov r1, #0x7d + mov r2, #0x1 + bl FUN_020731E8 + b _02074F50 +_02074F46: + add r0, r5, #0x0 + mov r1, #0x7e + mov r2, #0x1 + bl FUN_020731E8 +_02074F50: + ldr r0, _02074F68 ; =0x00000B22 + mov r1, #0x13 + strb r1, [r5, r0] + mov r0, #0x14 + str r0, [r6, #0x0] + pop {r4-r6, pc} + .balign 4 +_02074F5C: .word 0x000005A4 +_02074F60: .word 0x00000B25 +_02074F64: .word 0x000005C8 +_02074F68: .word 0x00000B22 + + thumb_func_start FUN_02074F6C +FUN_02074F6C: ; 0x02074F6C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02074FA4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02074F9E + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x22 + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _02074FA8 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x1 + pop {r4, pc} +_02074F9E: + mov r0, #0x13 + pop {r4, pc} + nop +_02074FA4: .word 0x021C48B8 +_02074FA8: .word 0x000005C8 + + thumb_func_start FUN_02074FAC +FUN_02074FAC: ; 0x02074FAC + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _02075080 ; =0x000005A4 + str r1, [sp, #0x0] + ldr r1, [r5, r0] + mov r4, #0x0 + add r0, r1, #0x0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r2, r0, #0x1c + beq _0207502C + ldr r0, _02075084 ; =0x00000B25 + ldrb r0, [r5, r0] + add r0, r0, #0x1 +_02074FCA: + add r3, r1, r4 + add r3, #0x2c + ldrb r3, [r3, #0x0] + cmp r0, r3 + bne _02075022 + add r0, r1, r4 + mov r2, #0x0 + add r0, #0x2c + strb r2, [r0, #0x0] + ldr r0, _02075080 ; =0x000005A4 + ldr r6, [r5, r0] + add r0, r6, #0x0 + add r0, #0x32 + ldrb r0, [r0, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + sub r0, r0, #0x1 + cmp r4, r0 + bge _0207502C + ldr r0, _02075080 ; =0x000005A4 + add r1, r0, #0x0 +_02074FF4: + add r3, r6, r4 + add r3, #0x2d + ldrb r3, [r3, #0x0] + add r6, r6, r4 + add r6, #0x2c + strb r3, [r6, #0x0] + ldr r3, [r5, r0] + add r3, r3, r4 + add r3, #0x2d + strb r2, [r3, #0x0] + add r3, r4, #0x1 + lsl r3, r3, #0x18 + ldr r6, [r5, r1] + lsr r4, r3, #0x18 + add r3, r6, #0x0 + add r3, #0x32 + ldrb r3, [r3, #0x0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1c + sub r3, r3, #0x1 + cmp r4, r3 + blt _02074FF4 + b _0207502C +_02075022: + add r3, r4, #0x1 + lsl r3, r3, #0x18 + lsr r4, r3, #0x18 + cmp r4, r2 + blo _02074FCA +_0207502C: + ldr r6, _02075088 ; =0x00000729 + mov r4, #0x0 + mov r7, #0x2c +_02075032: + add r0, r4, #0x0 + mul r0, r7 + add r0, r5, r0 + ldrb r0, [r0, r6] + cmp r0, #0x0 + beq _02075046 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02073024 +_02075046: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _02075032 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02073DB4 + add r0, r5, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _0207508C ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_0200C664 + ldr r0, [sp, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + pop {r3-r7, pc} + nop +_02075080: .word 0x000005A4 +_02075084: .word 0x00000B25 +_02075088: .word 0x00000729 +_0207508C: .word 0x000005C8 + + thumb_func_start FUN_02075090 +FUN_02075090: ; 0x02075090 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _020750B8 ; =0x000005A4 + add r4, r1, #0x0 + ldr r0, [r5, r0] + mov r1, #0x0 + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _020750BC ; =0x000006FC + ldr r0, [r5, r0] + bl FUN_02001C5C + ldr r0, _020750C0 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + mov r0, #0x1b + str r0, [r4, #0x0] + pop {r3-r5, pc} + nop +_020750B8: .word 0x000005A4 +_020750BC: .word 0x000006FC +_020750C0: .word 0x000006F8 + + thumb_func_start FUN_020750C4 +FUN_020750C4: ; 0x020750C4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _020750EC ; =0x000005A4 + add r4, r1, #0x0 + ldr r0, [r5, r0] + mov r1, #0x1 + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _020750F0 ; =0x000006FC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02001C5C + ldr r0, _020750F4 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + mov r0, #0x1b + str r0, [r4, #0x0] + pop {r3-r5, pc} + .balign 4 +_020750EC: .word 0x000005A4 +_020750F0: .word 0x000006FC +_020750F4: .word 0x000006F8 + + thumb_func_start FUN_020750F8 +FUN_020750F8: ; 0x020750F8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02073DB4 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r5, #0x0 + bl FUN_02075118 + str r0, [r4, #0x0] + pop {r3-r5, pc} + + thumb_func_start FUN_02075118 +FUN_02075118: ; 0x02075118 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02075190 ; =0x000005A4 + ldr r1, _02075194 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xa1 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + ldr r2, _02075198 ; =0x0000069C + bne _0207515C + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + mov r1, #0x81 + bl FUN_0200A8E0 + ldr r0, _02075194 ; =0x00000B25 + ldrb r0, [r4, r0] + add r0, #0x16 + lsl r0, r0, #0x2 + add r1, r4, r0 + mov r0, #0x5b + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + mov r1, #0x1 + bl FUN_020200A0 + b _0207516E +_0207515C: + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + mov r1, #0x82 + bl FUN_0200A8E0 + ldr r0, _02075194 ; =0x00000B25 + mov r1, #0x7 + strb r1, [r4, r0] +_0207516E: + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02075190 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _0207519C ; =0x00000B22 + mov r1, #0x15 + strb r1, [r4, r0] + mov r0, #0x14 + pop {r4, pc} + nop +_02075190: .word 0x000005A4 +_02075194: .word 0x00000B25 +_02075198: .word 0x0000069C +_0207519C: .word 0x00000B22 + + thumb_func_start FUN_020751A0 +FUN_020751A0: ; 0x020751A0 + push {r4-r6, lr} + add r6, r1, #0x0 + add r4, r0, #0x0 + ldr r1, _02075234 ; =0x000005A4 + mov r0, #0x1 + ldr r1, [r4, r1] + add r1, #0x23 + ldrb r1, [r1, #0x0] + sub r1, #0xb + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_02063948 + add r1, r0, #0x0 + beq _020751C8 + ldr r0, _02075234 ; =0x000005A4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x18] + blx r1 + b _020751CA +_020751C8: + mov r0, #0x1 +_020751CA: + cmp r0, #0x4 + bhi _0207520A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020751DA: ; jump table (using 16-bit offset) + .short _020751E4 - _020751DA - 2; case 0 + .short _020751FC - _020751DA - 2; case 1 + .short _02075200 - _020751DA - 2; case 2 + .short _02075204 - _020751DA - 2; case 3 + .short _02075208 - _020751DA - 2; case 4 +_020751E4: + ldr r0, _02075238 ; =0x000006FC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_02001C5C + ldr r0, _0207523C ; =0x000006F8 + ldr r0, [r4, r0] + bl FUN_02012870 + mov r0, #0x1b + str r0, [r6, #0x0] + pop {r4-r6, pc} +_020751FC: + mov r5, #0x68 + b _0207520A +_02075200: + mov r5, #0x4c + b _0207520A +_02075204: + mov r5, #0xc4 + b _0207520A +_02075208: + mov r5, #0x66 +_0207520A: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + bl FUN_02073DB4 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02075240 ; =0x00000B22 + mov r1, #0x3 + strb r1, [r4, r0] + mov r0, #0x14 + str r0, [r6, #0x0] + pop {r4-r6, pc} + nop +_02075234: .word 0x000005A4 +_02075238: .word 0x000006FC +_0207523C: .word 0x000006F8 +_02075240: .word 0x00000B22 + + thumb_func_start FUN_02075244 +FUN_02075244: ; 0x02075244 + ldr r2, _02075254 ; =0x000005A4 + mov r3, #0xb + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075258 ; =FUN_020751A0 + bx r3 + nop +_02075254: .word 0x000005A4 +_02075258: .word FUN_020751A0 + + thumb_func_start FUN_0207525C +FUN_0207525C: ; 0x0207525C + ldr r2, _0207526C ; =0x000005A4 + mov r3, #0x10 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075270 ; =FUN_020751A0 + bx r3 + nop +_0207526C: .word 0x000005A4 +_02075270: .word FUN_020751A0 + + thumb_func_start FUN_02075274 +FUN_02075274: ; 0x02075274 + ldr r2, _02075284 ; =0x000005A4 + mov r3, #0xe + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075288 ; =FUN_020751A0 + bx r3 + nop +_02075284: .word 0x000005A4 +_02075288: .word FUN_020751A0 + + thumb_func_start FUN_0207528C +FUN_0207528C: ; 0x0207528C + ldr r2, _0207529C ; =0x000005A4 + mov r3, #0xd + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _020752A0 ; =FUN_020751A0 + bx r3 + nop +_0207529C: .word 0x000005A4 +_020752A0: .word FUN_020751A0 + + thumb_func_start FUN_020752A4 +FUN_020752A4: ; 0x020752A4 + ldr r2, _020752B4 ; =0x000005A4 + mov r3, #0xf + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _020752B8 ; =FUN_020751A0 + bx r3 + nop +_020752B4: .word 0x000005A4 +_020752B8: .word FUN_020751A0 + + thumb_func_start FUN_020752BC +FUN_020752BC: ; 0x020752BC + ldr r2, _020752CC ; =0x000005A4 + mov r3, #0x12 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _020752D0 ; =FUN_020751A0 + bx r3 + nop +_020752CC: .word 0x000005A4 +_020752D0: .word FUN_020751A0 + + thumb_func_start FUN_020752D4 +FUN_020752D4: ; 0x020752D4 + ldr r2, _020752E4 ; =0x000005A4 + mov r3, #0xc + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _020752E8 ; =FUN_020751A0 + bx r3 + nop +_020752E4: .word 0x000005A4 +_020752E8: .word FUN_020751A0 + + thumb_func_start FUN_020752EC +FUN_020752EC: ; 0x020752EC + ldr r2, _020752FC ; =0x000005A4 + mov r3, #0x11 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075300 ; =FUN_020751A0 + bx r3 + nop +_020752FC: .word 0x000005A4 +_02075300: .word FUN_020751A0 + + thumb_func_start FUN_02075304 +FUN_02075304: ; 0x02075304 + ldr r2, _02075314 ; =0x000005A4 + mov r3, #0x13 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075318 ; =FUN_020751A0 + bx r3 + nop +_02075314: .word 0x000005A4 +_02075318: .word FUN_020751A0 + + thumb_func_start FUN_0207531C +FUN_0207531C: ; 0x0207531C + ldr r2, _0207532C ; =0x000005A4 + mov r3, #0x14 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075330 ; =FUN_020751A0 + bx r3 + nop +_0207532C: .word 0x000005A4 +_02075330: .word FUN_020751A0 + + thumb_func_start FUN_02075334 +FUN_02075334: ; 0x02075334 + ldr r2, _02075344 ; =0x000005A4 + mov r3, #0x15 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075348 ; =FUN_020751A0 + bx r3 + nop +_02075344: .word 0x000005A4 +_02075348: .word FUN_020751A0 + + thumb_func_start FUN_0207534C +FUN_0207534C: ; 0x0207534C + ldr r2, _0207535C ; =0x000005A4 + mov r3, #0x16 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075360 ; =FUN_020751A0 + bx r3 + nop +_0207535C: .word 0x000005A4 +_02075360: .word FUN_020751A0 + + thumb_func_start FUN_02075364 +FUN_02075364: ; 0x02075364 + ldr r2, _02075374 ; =0x000005A4 + mov r3, #0x17 + ldr r2, [r0, r2] + add r2, #0x23 + strb r3, [r2, #0x0] + ldr r3, _02075378 ; =FUN_020751A0 + bx r3 + nop +_02075374: .word 0x000005A4 +_02075378: .word FUN_020751A0 + + thumb_func_start FUN_0207537C +FUN_0207537C: ; 0x0207537C + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + bl FUN_020753B4 + str r0, [r5, #0x0] + cmp r0, #0x1a + bne _02075392 + ldr r0, _02075394 ; =0x00000B2E + mov r1, #0xd + strh r1, [r4, r0] +_02075392: + pop {r3-r5, pc} + .balign 4 +_02075394: .word 0x00000B2E + + thumb_func_start FUN_02075398 +FUN_02075398: ; 0x02075398 + push {r3-r5, lr} + add r4, r0, #0x0 + add r5, r1, #0x0 + bl FUN_020753B4 + str r0, [r5, #0x0] + cmp r0, #0x1a + bne _020753AE + ldr r0, _020753B0 ; =0x00000B2E + mov r1, #0xe + strh r1, [r4, r0] +_020753AE: + pop {r3-r5, pc} + .balign 4 +_020753B0: .word 0x00000B2E + + thumb_func_start FUN_020753B4 +FUN_020753B4: ; 0x020753B4 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + bl FUN_02073DB4 + ldr r0, _020754A8 ; =0x00000B25 + ldrb r1, [r4, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r4, r0 + ldr r0, _020754AC ; =0x00000708 + ldrh r0, [r1, r0] + mov r1, #0x5 + blx _s32_div_f + ldr r1, _020754B0 ; =0x00000B28 + strh r0, [r4, r1] + sub r0, r1, #0x3 + ldrb r2, [r4, r0] + mov r0, #0x2c + mul r0, r2 + add r2, r4, r0 + ldr r0, _020754B4 ; =0x00000706 + ldrh r2, [r2, r0] + ldrh r0, [r4, r1] + cmp r2, r0 + bhi _0207540E + add r0, r4, #0x0 + mov r1, #0x8a + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _020754B8 ; =0x00000B22 + mov r1, #0x3 + strb r1, [r4, r0] + add sp, #0x4 + mov r0, #0x14 + pop {r3-r4, pc} +_0207540E: + sub r0, r1, #0x5 + ldrb r2, [r4, r0] + mov r0, #0x40 + orr r2, r0 + sub r0, r1, #0x5 + strb r2, [r4, r0] + ldrb r0, [r4, r0] + mov r2, #0x3f + bic r0, r2 + sub r2, r1, #0x3 + ldrb r3, [r4, r2] + mov r2, #0x3f + and r2, r3 + orr r2, r0 + sub r0, r1, #0x5 + strb r2, [r4, r0] + ldr r0, _020754BC ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + ldr r0, _020754BC ; =0x000005C8 + add r1, sp, #0x0 + ldr r0, [r4, r0] + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_0200C75C + ldr r0, _020754C0 ; =0x000005CC + add r3, sp, #0x0 + mov r1, #0x2 + mov r2, #0x0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r4, r0] + bl FUN_0200C6E4 + ldr r0, _020754C4 ; =0x000005A4 + ldr r1, _020754C8 ; =0x00000B23 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + add r0, #0x21 + ldrb r0, [r0, #0x0] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_020714BC + add r1, r0, #0x0 + ldr r0, _020754C0 ; =0x000005CC + add r1, r1, #0x2 + ldr r0, [r4, r0] + bl FUN_02020130 + ldr r0, _020754C0 ; =0x000005CC + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r1, _020754C8 ; =0x00000B23 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + lsl r1, r1, #0x1a + lsr r1, r1, #0x1a + bl FUN_020709FC + add r0, r4, #0x0 + mov r1, #0x24 + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _020754CC ; =0x00000B2A + mov r1, #0x0 + strh r1, [r4, r0] + mov r0, #0x1a + add sp, #0x4 + pop {r3-r4, pc} + nop +_020754A8: .word 0x00000B25 +_020754AC: .word 0x00000708 +_020754B0: .word 0x00000B28 +_020754B4: .word 0x00000706 +_020754B8: .word 0x00000B22 +_020754BC: .word 0x000005C8 +_020754C0: .word 0x000005CC +_020754C4: .word 0x000005A4 +_020754C8: .word 0x00000B23 +_020754CC: .word 0x00000B2A + + thumb_func_start FUN_020754D0 +FUN_020754D0: ; 0x020754D0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02075504 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r1, r0 + beq _02075500 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0x1 + bl FUN_020731C0 + ldr r0, _02075508 ; =0x000005C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x1 +_02075500: + pop {r4, pc} + nop +_02075504: .word 0x021C48B8 +_02075508: .word 0x000005C8 + + thumb_func_start FUN_0207550C +FUN_0207550C: ; 0x0207550C + push {r3-r5, lr} + mov r1, #0x0 + mov r2, #0xc + bl FUN_0206E710 + mov r1, #0xe + add r4, r0, #0x0 + bl FUN_0206E7DC + cmp r0, #0x1 + beq _0207552C + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1c + pop {r3-r5, pc} +_0207552C: + add r0, r4, #0x0 + mov r1, #0x1b + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02075580 + add r0, r4, #0x0 + mov r1, #0x1c + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02075580 + add r0, r4, #0x0 + mov r1, #0x1d + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02075580 + add r0, r4, #0x0 + mov r1, #0x1e + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02075580 + add r0, r4, #0x0 + mov r1, #0x1f + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02075580 + add r0, r4, #0x0 + mov r1, #0x20 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02075580 + add r0, r4, #0x0 + mov r1, #0x21 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0207558A +_02075580: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + pop {r3-r5, pc} +_0207558A: + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020755A0 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_020755A0: + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020755B6 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x2 + pop {r3-r5, pc} +_020755B6: + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_0206E7DC + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_0206E7DC + lsl r0, r0, #0x1 + add r5, r5, r0 + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_0206E7DC + lsl r0, r0, #0x2 + add r5, r5, r0 + add r0, r4, #0x0 + mov r1, #0x12 + bl FUN_0206E7DC + lsl r0, r0, #0x3 + add r5, r5, r0 + add r0, r4, #0x0 + mov r1, #0x13 + bl FUN_0206E7DC + lsl r0, r0, #0x4 + add r5, r5, r0 + add r0, r4, #0x0 + mov r1, #0x14 + bl FUN_0206E7DC + lsl r0, r0, #0x5 + add r5, r5, r0 + cmp r5, #0x10 + bgt _02075624 + bge _0207565A + cmp r5, #0x8 + bhi _0207568E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02075612: ; jump table (using 16-bit offset) + .short _0207568E - _02075612 - 2; case 0 + .short _02075632 - _02075612 - 2; case 1 + .short _0207563C - _02075612 - 2; case 2 + .short _0207568E - _02075612 - 2; case 3 + .short _02075646 - _02075612 - 2; case 4 + .short _0207568E - _02075612 - 2; case 5 + .short _0207568E - _02075612 - 2; case 6 + .short _0207568E - _02075612 - 2; case 7 + .short _02075650 - _02075612 - 2; case 8 +_02075624: + cmp r5, #0x20 + bgt _0207562C + beq _02075664 + b _0207568E +_0207562C: + cmp r5, #0x3f + beq _0207566E + b _0207568E +_02075632: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x3 + pop {r3-r5, pc} +_0207563C: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x4 + pop {r3-r5, pc} +_02075646: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x5 + pop {r3-r5, pc} +_02075650: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x6 + pop {r3-r5, pc} +_0207565A: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x7 + pop {r3-r5, pc} +_02075664: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x8 + pop {r3-r5, pc} +_0207566E: + add r0, r4, #0x0 + mov r1, #0x26 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02075684 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xb + pop {r3-r5, pc} +_02075684: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x9 + pop {r3-r5, pc} +_0207568E: + add r0, r4, #0x0 + mov r1, #0x15 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020756A4 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xa + pop {r3-r5, pc} +_020756A4: + add r0, r4, #0x0 + mov r1, #0x26 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020756BA + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xb + pop {r3-r5, pc} +_020756BA: + add r0, r4, #0x0 + mov r1, #0x30 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _020756D0 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xc + pop {r3-r5, pc} +_020756D0: + bge _020756DC + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x12 + pop {r3-r5, pc} +_020756DC: + add r0, r4, #0x0 + mov r1, #0x31 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _020756F2 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xd + pop {r3-r5, pc} +_020756F2: + bge _020756FE + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x13 + pop {r3-r5, pc} +_020756FE: + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02075714 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xe + pop {r3-r5, pc} +_02075714: + bge _02075720 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x14 + pop {r3-r5, pc} +_02075720: + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02075736 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0xf + pop {r3-r5, pc} +_02075736: + bge _02075742 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x15 + pop {r3-r5, pc} +_02075742: + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02075758 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x10 + pop {r3-r5, pc} +_02075758: + bge _02075764 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x16 + pop {r3-r5, pc} +_02075764: + add r0, r4, #0x0 + mov r1, #0x35 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _0207577A + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x11 + pop {r3-r5, pc} +_0207577A: + bge _02075786 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x17 + pop {r3-r5, pc} +_02075786: + add r0, r4, #0x0 + mov r1, #0x1a + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0207579C + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x18 + pop {r3-r5, pc} +_0207579C: + add r0, r4, #0x0 + mov r1, #0x22 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020757B2 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x19 + pop {r3-r5, pc} +_020757B2: + add r0, r4, #0x0 + mov r1, #0x23 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020757C8 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1a + pop {r3-r5, pc} +_020757C8: + add r0, r4, #0x0 + mov r1, #0x24 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _020757E0 + add r0, r4, #0x0 + mov r1, #0x25 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020757EA +_020757E0: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1b + pop {r3-r5, pc} +_020757EA: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1c + pop {r3-r5, pc} + + thumb_func_start FUN_020757F4 +FUN_020757F4: ; 0x020757F4 + push {r4-r6, lr} + add r4, r0, #0x0 + ldr r0, _02075B8C ; =0x000005A4 + add r6, r1, #0x0 + ldr r1, _02075B90 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + add r5, r2, #0x0 + bl FUN_0206B9B0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + add r0, r6, #0x0 + bl FUN_0207550C + cmp r0, #0x1b + bls _02075828 + b _02075C40 +_02075828: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02075834: ; jump table (using 16-bit offset) + .short _02075C40 - _02075834 - 2; case 0 + .short _02075C40 - _02075834 - 2; case 1 + .short _02075C40 - _02075834 - 2; case 2 + .short _02075890 - _02075834 - 2; case 3 + .short _0207586C - _02075834 - 2; case 4 + .short _020758B4 - _02075834 - 2; case 5 + .short _020758D8 - _02075834 - 2; case 6 + .short _020758FC - _02075834 - 2; case 7 + .short _02075920 - _02075834 - 2; case 8 + .short _02075968 - _02075834 - 2; case 9 + .short _02075944 - _02075834 - 2; case 10 + .short _02075C40 - _02075834 - 2; case 11 + .short _0207598C - _02075834 - 2; case 12 + .short _020759BE - _02075834 - 2; case 13 + .short _020759F0 - _02075834 - 2; case 14 + .short _02075A22 - _02075834 - 2; case 15 + .short _02075A54 - _02075834 - 2; case 16 + .short _02075A86 - _02075834 - 2; case 17 + .short _02075AB8 - _02075834 - 2; case 18 + .short _02075AEC - _02075834 - 2; case 19 + .short _02075B20 - _02075834 - 2; case 20 + .short _02075B54 - _02075834 - 2; case 21 + .short _02075B88 - _02075834 - 2; case 22 + .short _02075BCA - _02075834 - 2; case 23 + .short _02075C40 - _02075834 - 2; case 24 + .short _02075BFE - _02075834 - 2; case 25 + .short _02075BFE - _02075834 - 2; case 26 + .short _02075C30 - _02075834 - 2; case 27 +_0207586C: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x41 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075890: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x5b + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_020758B4: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x43 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_020758D8: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x44 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_020758FC: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x42 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075920: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x49 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075944: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4a + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075968: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x47 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_0207598C: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4b + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_020759BE: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4b + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + mov r1, #0x1 + ldr r0, [r4, r0] + add r2, r1, #0x0 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_020759F0: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4b + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x2 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075A22: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4b + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x3 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075A54: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4b + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x4 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075A86: + ldr r0, _02075B94 ; =0x0000069C + mov r1, #0x4b + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x5 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075AB8: + ldr r0, _02075B94 ; =0x0000069C + add r5, #0x6e + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x0 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075AEC: + ldr r0, _02075B94 ; =0x0000069C + add r5, #0x6e + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + mov r1, #0x1 + ldr r0, [r4, r0] + add r2, r1, #0x0 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075B20: + ldr r0, _02075B94 ; =0x0000069C + add r5, #0x6e + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x2 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075B54: + ldr r0, _02075B94 ; =0x0000069C + add r5, #0x6e + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x3 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075B88: + ldr r0, _02075B94 ; =0x0000069C + b _02075B98 + .balign 4 +_02075B8C: .word 0x000005A4 +_02075B90: .word 0x00000B25 +_02075B94: .word 0x0000069C +_02075B98: + add r5, #0x6e + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x4 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075BCA: + ldr r0, _02075C50 ; =0x0000069C + add r5, #0x6e + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + mov r2, #0x5 + bl FUN_0200AF50 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075BFE: + ldr r0, _02075C50 ; =0x0000069C + mov r1, #0x48 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r6, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + add r2, r5, #0x0 + bl FUN_0200AD5C + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r6, #0x0 + bl FUN_0200B7B8 + add r0, r6, #0x0 + bl FUN_02021A20 + pop {r4-r6, pc} +_02075C30: + ldr r2, _02075C50 ; =0x0000069C + mov r1, #0x45 + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + pop {r4-r6, pc} +_02075C40: + ldr r2, _02075C50 ; =0x0000069C + mov r1, #0x69 + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + pop {r4-r6, pc} + .balign 4 +_02075C50: .word 0x0000069C + + thumb_func_start FUN_02075C54 +FUN_02075C54: ; 0x02075C54 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02075CCC ; =0x000005A4 + ldr r0, [r4, r0] + ldrh r0, [r0, #0x24] + bl FUN_0207550C + cmp r0, #0x1c + bhi _02075CCA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02075C72: ; jump table (using 16-bit offset) + .short _02075CCA - _02075C72 - 2; case 0 + .short _02075CCA - _02075C72 - 2; case 1 + .short _02075CAC - _02075C72 - 2; case 2 + .short _02075CB4 - _02075C72 - 2; case 3 + .short _02075CB4 - _02075C72 - 2; case 4 + .short _02075CB4 - _02075C72 - 2; case 5 + .short _02075CB4 - _02075C72 - 2; case 6 + .short _02075CB4 - _02075C72 - 2; case 7 + .short _02075CB4 - _02075C72 - 2; case 8 + .short _02075CB4 - _02075C72 - 2; case 9 + .short _02075CB4 - _02075C72 - 2; case 10 + .short _02075CC4 - _02075C72 - 2; case 11 + .short _02075CB4 - _02075C72 - 2; case 12 + .short _02075CB4 - _02075C72 - 2; case 13 + .short _02075CB4 - _02075C72 - 2; case 14 + .short _02075CB4 - _02075C72 - 2; case 15 + .short _02075CB4 - _02075C72 - 2; case 16 + .short _02075CB4 - _02075C72 - 2; case 17 + .short _02075CBC - _02075C72 - 2; case 18 + .short _02075CBC - _02075C72 - 2; case 19 + .short _02075CBC - _02075C72 - 2; case 20 + .short _02075CBC - _02075C72 - 2; case 21 + .short _02075CBC - _02075C72 - 2; case 22 + .short _02075CBC - _02075C72 - 2; case 23 + .short _02075CCA - _02075C72 - 2; case 24 + .short _02075CB4 - _02075C72 - 2; case 25 + .short _02075CB4 - _02075C72 - 2; case 26 + .short _02075CB4 - _02075C72 - 2; case 27 + .short _02075CCA - _02075C72 - 2; case 28 +_02075CAC: + ldr r1, _02075CD0 ; =FUN_0207640C + ldr r0, _02075CD4 ; =0x00000B14 + str r1, [r4, r0] + pop {r4, pc} +_02075CB4: + ldr r1, _02075CD8 ; =FUN_02075D20 + ldr r0, _02075CD4 ; =0x00000B14 + str r1, [r4, r0] + pop {r4, pc} +_02075CBC: + ldr r1, _02075CDC ; =FUN_02075DC0 + ldr r0, _02075CD4 ; =0x00000B14 + str r1, [r4, r0] + pop {r4, pc} +_02075CC4: + ldr r1, _02075CE0 ; =FUN_02075F60 + ldr r0, _02075CD4 ; =0x00000B14 + str r1, [r4, r0] +_02075CCA: + pop {r4, pc} + .balign 4 +_02075CCC: .word 0x000005A4 +_02075CD0: .word FUN_0207640C +_02075CD4: .word 0x00000B14 +_02075CD8: .word FUN_02075D20 +_02075CDC: .word FUN_02075DC0 +_02075CE0: .word FUN_02075F60 + + thumb_func_start FUN_02075CE4 +FUN_02075CE4: ; 0x02075CE4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02075D14 ; =0x00000B24 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + beq _02075CF8 + mov r0, #0x5 + pop {r4, pc} +_02075CF8: + ldr r0, _02075D18 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02075D10 + ldr r0, _02075D1C ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + mov r0, #0x1b + pop {r4, pc} +_02075D10: + mov r0, #0x5 + pop {r4, pc} + .balign 4 +_02075D14: .word 0x00000B24 +_02075D18: .word 0x021C48B8 +_02075D1C: .word 0x000005A4 + + thumb_func_start FUN_02075D20 +FUN_02075D20: ; 0x02075D20 + push {r3-r5, lr} + sub sp, #0x8 + ldr r1, _02075DA8 ; =0x000005A4 + add r5, r0, #0x0 + ldr r4, [r5, r1] + bl FUN_020772CC + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r2, _02075DAC ; =0x00000B25 + ldrh r1, [r4, #0x24] + ldrb r2, [r5, r2] + ldr r0, [r4, #0x0] + mov r3, #0x0 + bl FUN_02084DD0 + ldr r1, _02075DAC ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_0207008C + ldr r1, _02075DAC ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072D1C + ldr r1, _02075DAC ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072DDC + ldr r0, _02075DAC ; =0x00000B25 + mov r2, #0x2c + ldrb r1, [r5, r0] + add r0, r5, #0x0 + mul r2, r1 + add r3, r5, r2 + ldr r2, _02075DB0 ; =0x0000070E + ldrh r2, [r3, r2] + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + ldr r1, _02075DA8 ; =0x000005A4 + add r0, r5, #0x0 + ldr r1, [r5, r1] + mov r2, #0x0 + ldrh r1, [r1, #0x24] + bl FUN_020757F4 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02075DB4 ; =0x000005EC + bl FUN_020054C8 + ldr r1, _02075DB8 ; =FUN_02075CE4 + ldr r0, _02075DBC ; =0x00000B14 + str r1, [r5, r0] + mov r0, #0x5 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_02075DA8: .word 0x000005A4 +_02075DAC: .word 0x00000B25 +_02075DB0: .word 0x0000070E +_02075DB4: .word 0x000005EC +_02075DB8: .word FUN_02075CE4 +_02075DBC: .word 0x00000B14 + + thumb_func_start FUN_02075DC0 +FUN_02075DC0: ; 0x02075DC0 + push {r3-r7, lr} + sub sp, #0x20 + add r5, r0, #0x0 + ldr r0, _02075F4C ; =0x000005A4 + ldr r1, _02075F50 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xd + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x1c] + add r0, r4, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x18] + add r0, r4, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x14] + add r0, r4, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x10] + add r0, r4, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + add r0, r4, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, _02075F4C ; =0x000005A4 + ldr r6, [r5, r0] + add r0, r5, #0x0 + bl FUN_020772CC + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r2, _02075F50 ; =0x00000B25 + ldrh r1, [r6, #0x24] + ldrb r2, [r5, r2] + ldr r0, [r6, #0x0] + mov r3, #0x0 + bl FUN_02084DD0 + ldr r1, _02075F50 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_0207008C + ldr r1, _02075F50 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072D1C + ldr r1, _02075F50 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072DDC + ldr r0, _02075F50 ; =0x00000B25 + mov r2, #0x2c + ldrb r1, [r5, r0] + add r0, r5, #0x0 + mul r2, r1 + add r3, r5, r2 + ldr r2, _02075F54 ; =0x0000070E + ldrh r2, [r3, r2] + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r0, r4, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x1c] + cmp r1, r0 + bne _02075EFA + add r0, r4, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x18] + cmp r1, r0 + bne _02075EFA + add r0, r4, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x14] + cmp r1, r0 + bne _02075EFA + add r0, r4, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x10] + cmp r1, r0 + bne _02075EFA + add r0, r4, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0xc] + cmp r1, r0 + bne _02075EFA + add r0, r4, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x8] + cmp r1, r0 + beq _02075F26 +_02075EFA: + add r0, r4, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + cmp r7, r0 + ldr r1, _02075F4C ; =0x000005A4 + beq _02075F18 + ldr r1, [r5, r1] + add r0, r5, #0x0 + ldrh r1, [r1, #0x24] + mov r2, #0x0 + bl FUN_020757F4 + b _02075F34 +_02075F18: + ldr r1, [r5, r1] + add r0, r5, #0x0 + ldrh r1, [r1, #0x24] + mov r2, #0x1 + bl FUN_020757F4 + b _02075F34 +_02075F26: + ldr r1, _02075F4C ; =0x000005A4 + add r0, r5, #0x0 + ldr r1, [r5, r1] + mov r2, #0x2 + ldrh r1, [r1, #0x24] + bl FUN_020757F4 +_02075F34: + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r1, _02075F58 ; =FUN_02075CE4 + ldr r0, _02075F5C ; =0x00000B14 + str r1, [r5, r0] + mov r0, #0x5 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_02075F4C: .word 0x000005A4 +_02075F50: .word 0x00000B25 +_02075F54: .word 0x0000070E +_02075F58: .word FUN_02075CE4 +_02075F5C: .word 0x00000B14 + + thumb_func_start FUN_02075F60 +FUN_02075F60: ; 0x02075F60 + push {r4-r7, lr} + sub sp, #0xc + ldr r1, _02076080 ; =0x000005A4 + add r5, r0, #0x0 + ldr r4, [r5, r1] + bl FUN_020772CC + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r2, _02076084 ; =0x00000B25 + ldrh r1, [r4, #0x24] + ldrb r2, [r5, r2] + ldr r0, [r4, #0x0] + mov r3, #0x0 + bl FUN_02084DD0 + ldr r0, _02076080 ; =0x000005A4 + ldr r1, _02076084 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0x0 + str r0, [sp, #0x8] + bl FUN_020671BC + add r4, r0, #0x0 + ldr r0, _02076084 ; =0x00000B25 + ldrb r1, [r5, r0] + mov r0, #0x2c + mul r0, r1 + add r1, r5, r0 + ldr r0, _02076088 ; =0x00000706 + ldrh r1, [r1, r0] + cmp r1, #0x0 + bne _02075FBC + sub r0, #0x6a + ldr r0, [r5, r0] + mov r1, #0x46 + bl FUN_0200A914 + add r7, r0, #0x0 + b _02075FDA +_02075FBC: + cmp r4, r1 + bne _02075FCE + sub r0, #0x6a + ldr r0, [r5, r0] + mov r1, #0x47 + bl FUN_0200A914 + add r7, r0, #0x0 + b _02075FDA +_02075FCE: + sub r0, #0x6a + ldr r0, [r5, r0] + mov r1, #0x40 + bl FUN_0200A914 + add r7, r0, #0x0 +_02075FDA: + ldr r0, [sp, #0x8] + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r0, #0x0 + mov r3, #0x6a + str r0, [sp, #0x0] + mov r1, #0x1 + ldr r2, _02076084 ; =0x00000B25 + str r1, [sp, #0x4] + ldrb r6, [r5, r2] + mov r2, #0x2c + lsl r3, r3, #0x4 + mul r2, r6 + ldr r0, [r5, r3] + add r2, r5, r2 + add r3, #0x66 + ldrh r2, [r2, r3] + mov r3, #0x3 + sub r2, r4, r2 + bl FUN_0200AD38 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r7, #0x0 + bl FUN_0200B7B8 + add r0, r7, #0x0 + bl FUN_02021A20 + ldr r0, [sp, #0x8] + bl FUN_0207C2D4 + add r4, r0, #0x0 + ldr r1, _02076084 ; =0x00000B25 + lsl r2, r4, #0x18 + ldrb r1, [r5, r1] + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02073A4C + cmp r4, #0x7 + bne _02076062 + ldr r1, _02076084 ; =0x00000B25 + ldr r0, _0207608C ; =0x0000070E + ldrb r3, [r5, r1] + add r2, r5, r0 + mov r0, #0x2c + mul r0, r3 + ldrh r4, [r2, r0] + ldr r3, _02076090 ; =0xFFFFF000 + and r4, r3 + mov r3, #0x7 + orr r3, r4 + strh r3, [r2, r0] + ldrb r1, [r5, r1] + add r0, r5, #0x0 + bl FUN_02072B20 +_02076062: + ldr r1, _02076084 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_020709FC + ldr r1, _02076094 ; =FUN_020760A0 + ldr r0, _02076098 ; =0x00000B14 + str r1, [r5, r0] + ldr r0, _0207609C ; =0x000005EC + bl FUN_020054C8 + mov r0, #0x5 + add sp, #0xc + pop {r4-r7, pc} + nop +_02076080: .word 0x000005A4 +_02076084: .word 0x00000B25 +_02076088: .word 0x00000706 +_0207608C: .word 0x0000070E +_02076090: .word 0xFFFFF000 +_02076094: .word FUN_020760A0 +_02076098: .word 0x00000B14 +_0207609C: .word 0x000005EC + + thumb_func_start FUN_020760A0 +FUN_020760A0: ; 0x020760A0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076130 ; =0x000005A4 + ldr r1, _02076134 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _02076134 ; =0x00000B25 + add r4, r0, #0x0 + ldrb r2, [r5, r1] + ldr r0, _02076138 ; =0x00000706 + mov r1, #0x2c + add r3, r2, #0x0 + add r0, r5, r0 + mul r3, r1 + ldrh r1, [r0, r3] + cmp r4, r1 + beq _020760D4 + add r1, r1, #0x1 + strh r1, [r0, r3] +_020760D4: + ldr r1, _02076134 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072BBC + ldr r1, _02076134 ; =0x00000B25 + add r0, r5, #0x4 + ldrb r2, [r5, r1] + lsl r1, r2, #0x2 + add r1, r2, r1 + add r1, r1, #0x3 + lsl r1, r1, #0x4 + add r0, r0, r1 + mov r1, #0x0 + bl FUN_02019620 + ldr r1, _02076134 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072B7C + ldr r1, _02076134 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072C28 + ldr r0, _02076134 ; =0x00000B25 + mov r1, #0x2c + ldrb r0, [r5, r0] + add r2, r0, #0x0 + mul r2, r1 + ldr r0, _02076138 ; =0x00000706 + add r2, r5, r2 + ldrh r0, [r2, r0] + cmp r4, r0 + bne _0207612C + add r0, r5, #0x0 + sub r1, #0x2d + mov r2, #0x1 + bl FUN_020731E8 + ldr r1, _0207613C ; =FUN_02075CE4 + ldr r0, _02076140 ; =0x00000B14 + str r1, [r5, r0] +_0207612C: + mov r0, #0x5 + pop {r3-r5, pc} + .balign 4 +_02076130: .word 0x000005A4 +_02076134: .word 0x00000B25 +_02076138: .word 0x00000706 +_0207613C: .word FUN_02075CE4 +_02076140: .word 0x00000B14 + + thumb_func_start FUN_02076144 +FUN_02076144: ; 0x02076144 + push {r3, lr} + mov r1, #0x18 + mov r2, #0xc + bl FUN_0206E7B8 + cmp r0, #0x0 + beq _02076156 + mov r0, #0x1 + pop {r3, pc} +_02076156: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207615C +FUN_0207615C: ; 0x0207615C + push {r3-r6} + cmp r1, #0x6 + blo _02076168 + mov r0, #0xff + pop {r3-r6} + bx lr +_02076168: + bhs _02076194 + ldr r2, _0207619C ; =0x00000706 + mov r3, #0x2c + add r4, r2, #0x0 + add r4, #0x23 +_02076172: + add r5, r1, #0x0 + mul r5, r3 + add r6, r0, r5 + ldrb r5, [r6, r4] + cmp r5, #0x0 + beq _0207618A + ldrh r5, [r6, r2] + cmp r5, #0x0 + bne _0207618A + add r0, r1, #0x0 + pop {r3-r6} + bx lr +_0207618A: + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x6 + blo _02076172 +_02076194: + mov r0, #0xff + pop {r3-r6} + bx lr + nop +_0207619C: .word 0x00000706 + + thumb_func_start FUN_020761A0 +FUN_020761A0: ; 0x020761A0 + push {r3-r7, lr} + ldr r1, _020763DC ; =0x00000B22 + add r4, r0, #0x0 + ldrb r2, [r4, r1] + cmp r2, #0x3 + bls _020761AE + b _020763D6 +_020761AE: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_020761BA: ; jump table (using 16-bit offset) + .short _020761C2 - _020761BA - 2; case 0 + .short _02076212 - _020761BA - 2; case 1 + .short _020762DC - _020761BA - 2; case 2 + .short _02076360 - _020761BA - 2; case 3 +_020761C2: + mov r1, #0x0 + bl FUN_0207615C + ldr r1, _020763E0 ; =0x00000B25 + strb r0, [r4, r1] + ldrb r0, [r4, r1] + cmp r0, #0xff + bne _02076206 + ldr r2, _020763E4 ; =0x0000069C + mov r1, #0x69 + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r1, _020763E8 ; =FUN_02075CE4 + ldr r0, _020763EC ; =0x00000B14 + mov r2, #0x1 + str r1, [r4, r0] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02073CB4 + ldr r0, _020763E0 ; =0x00000B25 + mov r1, #0x7 + strb r1, [r4, r0] + mov r0, #0x5 + pop {r3-r7, pc} +_02076206: + cmp r0, #0x0 + beq _02076212 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_020709FC +_02076212: + ldr r0, _020763F0 ; =0x000005A4 + ldr r1, _020763E0 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020772CC + add r3, r0, #0x0 + mov r0, #0xc + str r0, [sp, #0x0] + ldr r1, _020763F0 ; =0x000005A4 + add r0, r5, #0x0 + ldr r1, [r4, r1] + mov r2, #0x0 + ldrh r1, [r1, #0x24] + bl FUN_02084810 + add r0, r5, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + ldr r0, _020763E4 ; =0x0000069C + mov r1, #0x46 + ldr r0, [r4, r0] + bl FUN_0200A914 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r6, #0x0 + bl FUN_0200B7B8 + add r0, r6, #0x0 + bl FUN_02021A20 + ldr r7, _020763E0 ; =0x00000B25 + ldr r3, _020763F4 ; =0x0000070E + ldrb r5, [r4, r7] + mov r2, #0x2c + add r1, r4, r3 + add r0, r5, #0x0 + mul r0, r2 + ldrh r6, [r1, r0] + ldr r5, _020763F8 ; =0xFFFFF000 + and r6, r5 + mov r5, #0x7 + orr r5, r6 + strh r5, [r1, r0] + ldrb r1, [r4, r7] + add r0, r4, #0x0 + mul r2, r1 + add r2, r4, r2 + ldrh r2, [r2, r3] + lsl r2, r2, #0x14 + lsr r2, r2, #0x14 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + bl FUN_02073A4C + add r1, r7, #0x0 + ldrb r1, [r4, r1] + add r0, r4, #0x0 + bl FUN_02072B20 + add r1, r7, #0x0 + ldrb r1, [r4, r1] + add r0, r4, #0x0 + bl FUN_020709FC + add r1, r7, #0x0 + ldrb r1, [r4, r1] + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_02073CB4 + ldr r0, _020763FC ; =0x000005EC + bl FUN_020054C8 + sub r0, r7, #0x3 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + b _020763D6 +_020762DC: + ldr r0, _020763F0 ; =0x000005A4 + add r1, r1, #0x3 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + ldr r2, _020763E0 ; =0x00000B25 + add r5, r0, #0x0 + ldr r0, _02076400 ; =0x00000706 + ldrb r3, [r4, r2] + add r1, r4, r0 + mov r0, #0x2c + mul r0, r3 + ldrh r3, [r1, r0] + add r3, r3, #0x1 + strh r3, [r1, r0] + ldrb r1, [r4, r2] + add r0, r4, #0x0 + bl FUN_02072BBC + ldr r1, _020763E0 ; =0x00000B25 + add r0, r4, #0x4 + ldrb r2, [r4, r1] + lsl r1, r2, #0x2 + add r1, r2, r1 + add r1, r1, #0x3 + lsl r1, r1, #0x4 + add r0, r0, r1 + mov r1, #0x0 + bl FUN_02019620 + ldr r1, _020763E0 ; =0x00000B25 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + bl FUN_02072B7C + ldr r1, _020763E0 ; =0x00000B25 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + bl FUN_02072C28 + ldr r0, _020763E0 ; =0x00000B25 + mov r1, #0x2c + ldrb r0, [r4, r0] + add r2, r0, #0x0 + mul r2, r1 + ldr r0, _02076400 ; =0x00000706 + add r2, r4, r2 + ldrh r0, [r2, r0] + cmp r5, r0 + bne _020763D6 + add r0, r4, #0x0 + sub r1, #0x2d + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _020763DC ; =0x00000B22 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + b _020763D6 +_02076360: + add r0, r1, #0x2 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _020763D6 + ldr r0, _02076404 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _020763D6 + ldr r0, _02076408 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _020763E0 ; =0x00000B25 + ldrb r5, [r4, r0] + add r0, r4, #0x0 + add r1, r5, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_0207615C + ldr r1, _020763E0 ; =0x00000B25 + strb r0, [r4, r1] + ldrb r0, [r4, r1] + cmp r0, #0xff + beq _020763B2 + mov r0, #0x89 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x0 + bl FUN_0200D0E0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020709FC + ldr r0, _020763DC ; =0x00000B22 + mov r1, #0x1 + strb r1, [r4, r0] + b _020763D6 +_020763B2: + ldr r0, _020763F0 ; =0x000005A4 + mov r2, #0x1 + ldr r1, [r4, r0] + mov r3, #0xc + ldr r0, [r1, #0x4] + ldrh r1, [r1, #0x24] + bl FUN_0206EDD4 + ldr r0, _020763F0 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _020763E0 ; =0x00000B25 + mov r1, #0x7 + strb r1, [r4, r0] + mov r0, #0x1b + pop {r3-r7, pc} +_020763D6: + mov r0, #0x7 + pop {r3-r7, pc} + nop +_020763DC: .word 0x00000B22 +_020763E0: .word 0x00000B25 +_020763E4: .word 0x0000069C +_020763E8: .word FUN_02075CE4 +_020763EC: .word 0x00000B14 +_020763F0: .word 0x000005A4 +_020763F4: .word 0x0000070E +_020763F8: .word 0xFFFFF000 +_020763FC: .word 0x000005EC +_02076400: .word 0x00000706 +_02076404: .word 0x021C48B8 +_02076408: .word 0x000005DC + + thumb_func_start FUN_0207640C +FUN_0207640C: ; 0x0207640C + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _020765B0 ; =0x000005A4 + ldr r1, _020765B4 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + mov r1, #0xa3 + mov r2, #0x0 + add r4, r0, #0x0 + bl FUN_020671BC + ldr r1, _020765B8 ; =0x00000B28 + mov r2, #0x0 + strh r0, [r5, r1] + add r0, r4, #0x0 + mov r1, #0xa4 + bl FUN_020671BC + ldr r1, _020765BC ; =0x00000B2A + mov r2, #0x0 + strh r0, [r5, r1] + add r0, r4, #0x0 + mov r1, #0xa5 + bl FUN_020671BC + ldr r1, _020765C0 ; =0x00000B2C + mov r2, #0x0 + strh r0, [r5, r1] + add r0, r4, #0x0 + mov r1, #0xa7 + bl FUN_020671BC + ldr r1, _020765C4 ; =0x00000B2E + mov r2, #0x0 + strh r0, [r5, r1] + add r0, r4, #0x0 + mov r1, #0xa8 + bl FUN_020671BC + mov r1, #0xb3 + lsl r1, r1, #0x4 + strh r0, [r5, r1] + add r0, r4, #0x0 + mov r1, #0xa6 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020765C8 ; =0x00000B32 + strh r0, [r5, r1] + ldr r0, _020765B0 ; =0x000005A4 + ldr r6, [r5, r0] + add r0, r5, #0x0 + bl FUN_020772CC + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r2, _020765B4 ; =0x00000B25 + ldrh r1, [r6, #0x24] + ldrb r2, [r5, r2] + ldr r0, [r6, #0x0] + mov r3, #0x0 + bl FUN_02084DD0 + add r0, r4, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020765B4 ; =0x00000B25 + ldrb r2, [r5, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r5, r1 + ldr r1, _020765CC ; =0x0000070A + strh r0, [r2, r1] + add r0, r4, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020765B4 ; =0x00000B25 + ldrb r2, [r5, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r5, r1 + ldr r1, _020765D0 ; =0x00000706 + strh r0, [r2, r1] + add r0, r4, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020765B4 ; =0x00000B25 + ldrb r2, [r5, r1] + mov r1, #0x2c + mul r1, r2 + add r2, r5, r1 + ldr r1, _020765D4 ; =0x00000708 + strh r0, [r2, r1] + sub r1, #0x6c + ldr r0, [r5, r1] + mov r1, #0xc1 + bl FUN_0200A914 + add r7, r0, #0x0 + add r0, r4, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r0, #0x0 + mov r3, #0x6a + str r0, [sp, #0x0] + mov r1, #0x1 + ldr r2, _020765B4 ; =0x00000B25 + str r1, [sp, #0x4] + ldrb r6, [r5, r2] + mov r2, #0x2c + lsl r3, r3, #0x4 + mul r2, r6 + ldr r0, [r5, r3] + add r2, r5, r2 + add r3, #0x6a + ldrh r2, [r2, r3] + mov r3, #0x3 + bl FUN_0200AD38 + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r7, #0x0 + bl FUN_0200B7B8 + add r0, r7, #0x0 + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_0207C2D4 + add r4, r0, #0x0 + ldr r1, _020765B4 ; =0x00000B25 + lsl r2, r4, #0x18 + ldrb r1, [r5, r1] + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02073A4C + cmp r4, #0x7 + bne _0207656E + ldr r1, _020765B4 ; =0x00000B25 + ldr r0, _020765D8 ; =0x0000070E + ldrb r3, [r5, r1] + add r2, r5, r0 + mov r0, #0x2c + mul r0, r3 + ldrh r4, [r2, r0] + ldr r3, _020765DC ; =0xFFFFF000 + and r4, r3 + mov r3, #0x7 + orr r3, r4 + strh r3, [r2, r0] + ldrb r1, [r5, r1] + add r0, r5, #0x0 + bl FUN_02072B20 +_0207656E: + ldr r1, _020765B4 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_020709FC + ldr r0, _020765E0 ; =FUN_020760A0 + ldr r1, _020765E4 ; =0x00000B14 + str r0, [r5, r1] + add r1, #0x11 + ldrb r1, [r5, r1] + add r0, r5, #0x0 + bl FUN_02072D1C + ldr r1, _020765B4 ; =0x00000B25 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_02072DDC + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r1, _020765E8 ; =FUN_020765EC + ldr r0, _020765E4 ; =0x00000B14 + str r1, [r5, r0] + mov r1, #0x0 + add r0, #0x13 + strb r1, [r5, r0] + mov r0, #0x5 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020765B0: .word 0x000005A4 +_020765B4: .word 0x00000B25 +_020765B8: .word 0x00000B28 +_020765BC: .word 0x00000B2A +_020765C0: .word 0x00000B2C +_020765C4: .word 0x00000B2E +_020765C8: .word 0x00000B32 +_020765CC: .word 0x0000070A +_020765D0: .word 0x00000706 +_020765D4: .word 0x00000708 +_020765D8: .word 0x0000070E +_020765DC: .word 0xFFFFF000 +_020765E0: .word FUN_020760A0 +_020765E4: .word 0x00000B14 +_020765E8: .word FUN_020765EC + + thumb_func_start FUN_020765EC +FUN_020765EC: ; 0x020765EC + push {r3-r5, lr} + ldr r1, _0207686C ; =0x00000B27 + add r4, r0, #0x0 + ldrb r0, [r4, r1] + cmp r0, #0x6 + bhi _020766A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02076604: ; jump table (using 16-bit offset) + .short _02076612 - _02076604 - 2; case 0 + .short _0207663C - _02076604 - 2; case 1 + .short _0207665A - _02076604 - 2; case 2 + .short _02076680 - _02076604 - 2; case 3 + .short _02076780 - _02076604 - 2; case 4 + .short _020767A4 - _02076604 - 2; case 5 + .short _02076814 - _02076604 - 2; case 6 +_02076612: + sub r0, r1, #0x3 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _020766A8 + ldr r0, _02076870 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _020766A8 + ldr r0, _02076874 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_020734C0 + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x1 + strb r1, [r4, r0] + b _02076868 +_0207663C: + ldr r0, _02076870 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _020766A8 + ldr r0, _02076874 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207363C + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x2 + strb r1, [r4, r0] + b _02076868 +_0207665A: + ldr r0, _02076870 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _020766A8 + ldr r0, _02076874 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_020736F4 + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x3 + strb r1, [r4, r0] + ldr r0, _02076878 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + str r1, [r0, #0x34] + b _02076868 +_02076680: + ldr r0, _02076878 ; =0x000005A4 + sub r1, r1, #0x2 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + ldr r1, _02076878 ; =0x000005A4 + add r5, r0, #0x0 + ldr r2, [r4, r1] + add r1, r2, #0x0 + add r1, #0x34 + add r2, #0x26 + bl FUN_02069818 + cmp r0, #0x0 + beq _020766B2 + ldr r1, _0207687C ; =0x0000FFFE + cmp r0, r1 + bne _020766AA +_020766A8: + b _02076868 +_020766AA: + add r1, r1, #0x1 + cmp r0, r1 + beq _020766BA + b _02076724 +_020766B2: + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x6 + strb r1, [r4, r0] + b _02076868 +_020766BA: + add r0, r5, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + lsl r2, r2, #0x4 + ldr r0, [r4, r2] + sub r2, #0xfc + ldr r2, [r4, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x26] + bl FUN_0200AD5C + ldr r0, _02076880 ; =0x0000069C + mov r1, #0x34 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076884 ; =FUN_02076950 + ldr r1, _02076888 ; =0x00000B18 + ldr r2, _0207688C ; =FUN_020769A4 + str r0, [r4, r1] + add r0, r1, #0x4 + str r2, [r4, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r4, r1] + mov r0, #0x14 + pop {r3-r5, pc} +_02076724: + add r0, r5, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + lsl r2, r2, #0x4 + ldr r0, [r4, r2] + sub r2, #0xfc + ldr r2, [r4, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x26] + bl FUN_0200AD5C + ldr r0, _02076880 ; =0x0000069C + mov r1, #0xc2 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x4 + strb r1, [r4, r0] + b _02076868 +_02076780: + sub r0, r1, #0x3 + ldrb r0, [r4, r0] + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02076868 + ldr r0, _02076870 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02076868 + ldr r0, _02076874 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x3 + strb r1, [r4, r0] + b _02076868 +_020767A4: + ldr r0, _02076870 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #0x3 + tst r0, r2 + beq _02076868 + ldr r0, _02076878 ; =0x000005A4 + sub r1, r1, #0x2 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + ldr r2, _02076878 ; =0x000005A4 + add r1, r0, #0x0 + ldr r2, [r4, r2] + add r0, r4, #0x0 + add r2, #0x28 + ldrb r2, [r2, #0x0] + bl FUN_02076F2C + ldr r0, _02076880 ; =0x0000069C + mov r1, #0x3d + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r5, r0, #0x0 + ldr r0, [r4, r2] + sub r2, #0xfc + ldr r2, [r4, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x26] + bl FUN_0200AD5C + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _0207686C ; =0x00000B27 + mov r1, #0x4 + strb r1, [r4, r0] + b _02076868 +_02076814: + ldr r0, _02076878 ; =0x000005A4 + sub r1, r1, #0x2 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r5, r0, #0x0 + ldr r0, _02076878 ; =0x000005A4 + ldr r0, [r4, r0] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034A04 + add r3, r0, #0x0 + ldr r0, _02076878 ; =0x000005A4 + lsl r3, r3, #0x10 + ldr r1, [r4, r0] + mov r2, #0x0 + add r0, r1, #0x0 + add r0, #0x3c + str r0, [sp, #0x0] + ldr r0, [r1, #0x0] + add r1, r5, #0x0 + lsr r3, r3, #0x10 + bl FUN_02069168 + ldr r1, _02076878 ; =0x000005A4 + ldr r2, [r4, r1] + strh r0, [r2, #0x38] + ldr r1, [r4, r1] + ldrh r0, [r1, #0x38] + cmp r0, #0x0 + beq _0207685E + mov r0, #0x9 + b _02076860 +_0207685E: + mov r0, #0x0 +_02076860: + add r1, #0x23 + strb r0, [r1, #0x0] + mov r0, #0x1b + pop {r3-r5, pc} +_02076868: + mov r0, #0x5 + pop {r3-r5, pc} + .balign 4 +_0207686C: .word 0x00000B27 +_02076870: .word 0x021C48B8 +_02076874: .word 0x000005DC +_02076878: .word 0x000005A4 +_0207687C: .word 0x0000FFFE +_02076880: .word 0x0000069C +_02076884: .word FUN_02076950 +_02076888: .word 0x00000B18 +_0207688C: .word FUN_020769A4 + + thumb_func_start FUN_02076890 +FUN_02076890: ; 0x02076890 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _0207693C ; =FUN_020765EC + ldr r1, _02076940 ; =0x00000B14 + mov r2, #0x3 + str r0, [r4, r1] + add r0, r1, #0x0 + add r0, #0x13 + strb r2, [r4, r0] + ldr r0, _02076944 ; =0x000005A4 + add r1, #0x11 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r5, r0, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r0, _02076944 ; =0x000005A4 + ldr r2, [r4, r0] + add r1, r2, #0x0 + add r1, #0x28 + ldrb r1, [r1, #0x0] + cmp r1, #0x4 + bne _020768E6 + add r0, #0xfc + ldrh r2, [r2, #0x26] + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200AD5C + add r0, r4, #0x0 + bl FUN_020769A4 + pop {r3-r5, pc} +_020768E6: + add r0, r5, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200AD5C + ldr r0, _02076948 ; =0x0000069C + mov r1, #0x3c + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _0207694C ; =0x00000B22 + mov r1, #0x5 + strb r1, [r4, r0] + add r0, r0, #0x5 + strb r1, [r4, r0] + mov r0, #0x14 + pop {r3-r5, pc} + nop +_0207693C: .word FUN_020765EC +_02076940: .word 0x00000B14 +_02076944: .word 0x000005A4 +_02076948: .word 0x0000069C +_0207694C: .word 0x00000B22 + + thumb_func_start FUN_02076950 +FUN_02076950: ; 0x02076950 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076998 ; =0x0000069C + mov r1, #0x3b + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _0207699C ; =0x000005A4 + mov r1, #0x5 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _020769A0 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r5, r0] + mov r0, #0x14 + pop {r3-r5, pc} + nop +_02076998: .word 0x0000069C +_0207699C: .word 0x000005A4 +_020769A0: .word 0x00000B22 + + thumb_func_start FUN_020769A4 +FUN_020769A4: ; 0x020769A4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _020769EC ; =0x0000069C + mov r1, #0x37 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _020769F0 ; =FUN_020769FC + ldr r1, _020769F4 ; =0x00000B18 + ldr r2, _020769F8 ; =FUN_02076A48 + str r0, [r5, r1] + add r0, r1, #0x4 + str r2, [r5, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r5, r1] + mov r0, #0x14 + pop {r3-r5, pc} + .balign 4 +_020769EC: .word 0x0000069C +_020769F0: .word FUN_020769FC +_020769F4: .word 0x00000B18 +_020769F8: .word FUN_02076A48 + + thumb_func_start FUN_020769FC +FUN_020769FC: ; 0x020769FC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076A40 ; =0x0000069C + mov r1, #0x3a + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076A44 ; =0x00000B22 + mov r1, #0x5 + strb r1, [r5, r0] + mov r1, #0x4 + add r0, r0, #0x5 + strb r1, [r5, r0] + mov r0, #0x14 + pop {r3-r5, pc} + nop +_02076A40: .word 0x0000069C +_02076A44: .word 0x00000B22 + + thumb_func_start FUN_02076A48 +FUN_02076A48: ; 0x02076A48 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076A90 ; =0x0000069C + mov r1, #0x34 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076A94 ; =FUN_02076950 + ldr r1, _02076A98 ; =0x00000B18 + ldr r2, _02076A9C ; =FUN_020769A4 + str r0, [r5, r1] + add r0, r1, #0x4 + str r2, [r5, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r5, r1] + mov r0, #0x14 + pop {r3-r5, pc} + .balign 4 +_02076A90: .word 0x0000069C +_02076A94: .word FUN_02076950 +_02076A98: .word 0x00000B18 +_02076A9C: .word FUN_020769A4 + + thumb_func_start FUN_02076AA0 +FUN_02076AA0: ; 0x02076AA0 + push {r3-r7, lr} + ldr r7, _02076AF4 ; =0x000005A4 + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r4, #0x0 +_02076AAA: + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + ldr r0, [r5, r7] + ldrh r1, [r0, #0x26] + cmp r2, r1 + bne _02076AC6 + mov r0, #0xfd + pop {r3-r7, pc} +_02076AC6: + cmp r2, #0x0 + beq _02076AD4 + add r1, r4, #0x1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, #0x4 + blo _02076AAA +_02076AD4: + ldrh r0, [r0, #0x24] + bl FUN_0206EA7C + add r1, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0206A13C + cmp r0, #0x0 + bne _02076AEA + mov r0, #0xff + pop {r3-r7, pc} +_02076AEA: + cmp r4, #0x4 + bne _02076AF0 + mov r4, #0xfe +_02076AF0: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_02076AF4: .word 0x000005A4 + + thumb_func_start FUN_02076AF8 +FUN_02076AF8: ; 0x02076AF8 + push {r4-r6, lr} + add r4, r0, #0x0 + ldr r0, _02076C78 ; =0x000005A4 + ldr r1, _02076C7C ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r6, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02076AA0 + add r5, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + mov r2, #0x6a + lsl r2, r2, #0x4 + ldr r0, [r4, r2] + sub r2, #0xfc + ldr r2, [r4, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x26] + bl FUN_0200AD5C + cmp r5, #0xfd + bhi _02076B5A + bhs _02076BB2 + cmp r5, #0x3 + bhi _02076B60 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02076B52: ; jump table (using 16-bit offset) + .short _02076B68 - _02076B52 - 2; case 0 + .short _02076B68 - _02076B52 - 2; case 1 + .short _02076B68 - _02076B52 - 2; case 2 + .short _02076B68 - _02076B52 - 2; case 3 +_02076B5A: + cmp r5, #0xfe + bhi _02076B62 + beq _02076BF2 +_02076B60: + b _02076C72 +_02076B62: + cmp r5, #0xff + beq _02076C34 + b _02076C72 +_02076B68: + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_02076F2C + ldr r0, _02076C80 ; =0x0000069C + mov r1, #0x3d + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02076C78 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02076C84 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r4, r0] + b _02076C72 +_02076BB2: + ldr r0, _02076C80 ; =0x0000069C + mov r1, #0x3f + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02076C78 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02076C84 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r4, r0] + b _02076C72 +_02076BF2: + ldr r0, _02076C80 ; =0x0000069C + mov r1, #0x34 + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02076C88 ; =FUN_02076DD4 + ldr r1, _02076C8C ; =0x00000B18 + ldr r2, _02076C90 ; =FUN_02076E28 + str r0, [r4, r1] + add r0, r1, #0x4 + str r2, [r4, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r4, r1] + b _02076C72 +_02076C34: + ldr r0, _02076C80 ; =0x0000069C + mov r1, #0x3e + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02076C78 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02076C84 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r4, r0] +_02076C72: + mov r0, #0x14 + pop {r4-r6, pc} + nop +_02076C78: .word 0x000005A4 +_02076C7C: .word 0x00000B25 +_02076C80: .word 0x0000069C +_02076C84: .word 0x00000B22 +_02076C88: .word FUN_02076DD4 +_02076C8C: .word 0x00000B18 +_02076C90: .word FUN_02076E28 + + thumb_func_start FUN_02076C94 +FUN_02076C94: ; 0x02076C94 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _02076D2C ; =0x000005A4 + ldr r1, _02076D30 ; =0x00000B25 + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r5, r0, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ACF8 + ldr r0, _02076D2C ; =0x000005A4 + ldr r2, [r4, r0] + add r1, r2, #0x0 + add r1, #0x28 + ldrb r1, [r1, #0x0] + cmp r1, #0x4 + bne _02076CDC + add r0, #0xfc + ldrh r2, [r2, #0x26] + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200AD5C + add r0, r4, #0x0 + bl FUN_02076E28 + pop {r3-r5, pc} +_02076CDC: + add r0, r5, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_0200AD5C + ldr r0, _02076D34 ; =0x0000069C + mov r1, #0x3c + ldr r0, [r4, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r5, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02076D38 ; =0x00000B22 + mov r1, #0x12 + strb r1, [r4, r0] + mov r0, #0x14 + pop {r3-r5, pc} + .balign 4 +_02076D2C: .word 0x000005A4 +_02076D30: .word 0x00000B25 +_02076D34: .word 0x0000069C +_02076D38: .word 0x00000B22 + + thumb_func_start FUN_02076D3C +FUN_02076D3C: ; 0x02076D3C + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076DC0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _02076DBC + ldr r0, _02076DC4 ; =0x000005A4 + ldr r1, _02076DC8 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + ldr r2, _02076DC4 ; =0x000005A4 + add r1, r0, #0x0 + ldr r2, [r5, r2] + add r0, r5, #0x0 + add r2, #0x28 + ldrb r2, [r2, #0x0] + bl FUN_02076F2C + ldr r0, _02076DCC ; =0x0000069C + mov r1, #0x3d + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r2, #0x6a + lsl r2, r2, #0x4 + add r4, r0, #0x0 + ldr r0, [r5, r2] + sub r2, #0xfc + ldr r2, [r5, r2] + mov r1, #0x1 + ldrh r2, [r2, #0x26] + bl FUN_0200AD5C + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076DC4 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02076DD0 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r5, r0] + mov r0, #0x14 + pop {r3-r5, pc} +_02076DBC: + mov r0, #0x12 + pop {r3-r5, pc} + .balign 4 +_02076DC0: .word 0x021C48B8 +_02076DC4: .word 0x000005A4 +_02076DC8: .word 0x00000B25 +_02076DCC: .word 0x0000069C +_02076DD0: .word 0x00000B22 + + thumb_func_start FUN_02076DD4 +FUN_02076DD4: ; 0x02076DD4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076E1C ; =0x0000069C + mov r1, #0x3b + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076E20 ; =0x000005A4 + mov r1, #0x4 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02076E24 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r5, r0] + mov r0, #0x14 + pop {r3-r5, pc} + nop +_02076E1C: .word 0x0000069C +_02076E20: .word 0x000005A4 +_02076E24: .word 0x00000B22 + + thumb_func_start FUN_02076E28 +FUN_02076E28: ; 0x02076E28 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076E70 ; =0x0000069C + mov r1, #0x37 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02076E74 ; =FUN_02076E80 + ldr r1, _02076E78 ; =0x00000B18 + ldr r2, _02076E7C ; =FUN_02076ED4 + str r0, [r5, r1] + add r0, r1, #0x4 + str r2, [r5, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r5, r1] + mov r0, #0x14 + pop {r3-r5, pc} + .balign 4 +_02076E70: .word 0x0000069C +_02076E74: .word FUN_02076E80 +_02076E78: .word 0x00000B18 +_02076E7C: .word FUN_02076ED4 + + thumb_func_start FUN_02076E80 +FUN_02076E80: ; 0x02076E80 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076EC8 ; =0x0000069C + mov r1, #0x3a + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076ECC ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r5, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02076ED0 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r5, r0] + mov r0, #0x14 + pop {r3-r5, pc} + nop +_02076EC8: .word 0x0000069C +_02076ECC: .word 0x000005A4 +_02076ED0: .word 0x00000B22 + + thumb_func_start FUN_02076ED4 +FUN_02076ED4: ; 0x02076ED4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02076F1C ; =0x0000069C + mov r1, #0x34 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x6a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x0 + bl FUN_020731E8 + ldr r0, _02076F20 ; =FUN_02076DD4 + ldr r1, _02076F24 ; =0x00000B18 + ldr r2, _02076F28 ; =FUN_02076E28 + str r0, [r5, r1] + add r0, r1, #0x4 + str r2, [r5, r0] + mov r0, #0x16 + add r1, #0xa + strb r0, [r5, r1] + mov r0, #0x14 + pop {r3-r5, pc} + .balign 4 +_02076F1C: .word 0x0000069C +_02076F20: .word FUN_02076DD4 +_02076F24: .word 0x00000B18 +_02076F28: .word FUN_02076E28 + + thumb_func_start FUN_02076F2C +FUN_02076F2C: ; 0x02076F2C + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + ldr r0, _02076FAC ; =0x000005A4 + add r6, r2, #0x0 + ldr r0, [r5, r0] + add r4, r1, #0x0 + ldrh r0, [r0, #0x26] + add r1, r6, #0x0 + add r1, #0x36 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r2, sp, #0x0 + bl FUN_02067830 + mov r0, #0x0 + add r1, r6, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, #0x3e + add r2, sp, #0x0 + bl FUN_02067830 + ldr r0, _02076FAC ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r5, r0] + ldrh r0, [r0, #0x26] + bl FUN_0206AB30 + add r6, #0x3a + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, sp, #0x0 + bl FUN_02067830 + ldr r0, _02076FAC ; =0x000005A4 + ldr r1, [r5, r0] + ldrh r0, [r1, #0x24] + cmp r0, #0x0 + beq _02076FA8 + ldrh r0, [r1, #0x26] + bl FUN_0206EA54 + cmp r0, #0x0 + bne _02076F98 + ldr r0, _02076FAC ; =0x000005A4 + mov r2, #0x1 + ldr r1, [r5, r0] + mov r3, #0xc + ldr r0, [r1, #0x4] + ldrh r1, [r1, #0x24] + bl FUN_0206EDD4 +_02076F98: + add r0, r5, #0x0 + bl FUN_020772CC + add r2, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_020688E8 +_02076FA8: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02076FAC: .word 0x000005A4 + + thumb_func_start FUN_02076FB0 +FUN_02076FB0: ; 0x02076FB0 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0207702C ; =0x000005A4 + add r6, r1, #0x0 + ldr r1, _02077030 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r1, r6, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _02077034 ; =0x0000069C + add r1, r6, #0x0 + ldr r0, [r5, r0] + add r1, #0xa2 + bl FUN_0200A914 + add r7, r0, #0x0 + mov r0, #0x6a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_0200AD5C + mov r1, #0x6a + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + add r1, #0x8 + ldr r1, [r5, r1] + add r2, r7, #0x0 + bl FUN_0200B7B8 + add r0, r7, #0x0 + bl FUN_02021A20 + cmp r4, #0x0 + ldr r1, _02077038 ; =0x000006F8 + bne _0207701C + ldr r0, [r5, r1] + sub r1, #0x50 + mov r2, #0x2 + ldr r1, [r5, r1] + mvn r2, r2 + bl FUN_020128A0 + mov r0, #0x0 + pop {r3-r7, pc} +_0207701C: + ldr r0, [r5, r1] + sub r1, #0x50 + ldr r1, [r5, r1] + add r2, r6, #0x0 + bl FUN_020128A0 + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_0207702C: .word 0x000005A4 +_02077030: .word 0x00000B25 +_02077034: .word 0x0000069C +_02077038: .word 0x000006F8 + + thumb_func_start FUN_0207703C +FUN_0207703C: ; 0x0207703C + push {r4-r5, lr} + sub sp, #0x14 + add r4, r0, #0x0 + cmp r1, #0x0 + bne _02077050 + mov r1, #0x29 + mov r2, #0x1 + bl FUN_020731D4 + b _02077058 +_02077050: + mov r1, #0x28 + mov r2, #0x1 + bl FUN_020731D4 +_02077058: + mov r0, #0x4 + mov r1, #0xc + bl FUN_02012838 + ldr r1, _02077108 ; =0x000006F8 + str r0, [r4, r1] + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02076FB0 + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02076FB0 + add r0, r5, r0 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02076FB0 + add r0, r5, r0 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02076FB0 + add r0, r5, r0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, _02077108 ; =0x000006F8 + mov r2, #0x0 + ldr r0, [r4, r0] + str r0, [sp, #0x8] + mov r0, #0x91 + lsl r0, r0, #0x2 + add r0, r4, r0 + str r0, [sp, #0xc] + add r0, sp, #0x8 + strb r2, [r0, #0x8] + mov r2, #0x1 + strb r2, [r0, #0x9] + mov r2, #0x4 + strb r2, [r0, #0xa] + ldrb r3, [r0, #0xb] + mov r2, #0xf + bic r3, r2 + strb r3, [r0, #0xb] + ldrb r3, [r0, #0xb] + mov r2, #0x30 + bic r3, r2 + strb r3, [r0, #0xb] + cmp r1, #0x4 + ldrb r2, [r0, #0xb] + bne _020770D6 + mov r1, #0xc0 + bic r2, r1 + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, #0xb] + b _020770DC +_020770D6: + mov r1, #0xc0 + bic r2, r1 + strb r2, [r0, #0xb] +_020770DC: + mov r0, #0x91 + lsl r0, r0, #0x2 + mov r1, #0x1 + add r0, r4, r0 + add r2, r1, #0x0 + mov r3, #0xe + bl FUN_0200CCA4 + mov r0, #0xc + str r0, [sp, #0x0] + mov r0, #0x2 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x8 + mov r1, #0x8 + add r3, r2, #0x0 + bl FUN_02001C14 + ldr r1, _0207710C ; =0x000006FC + str r0, [r4, r1] + add sp, #0x14 + pop {r4-r5, pc} + .balign 4 +_02077108: .word 0x000006F8 +_0207710C: .word 0x000006FC + + thumb_func_start FUN_02077110 +FUN_02077110: ; 0x02077110 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _0207722C ; =0x000006FC + ldr r0, [r5, r0] + bl FUN_02001C78 + add r4, r0, #0x0 + mov r0, #0x1 + mvn r0, r0 + cmp r4, r0 + beq _02077130 + add r0, r0, #0x1 + cmp r4, r0 + beq _02077226 + b _0207716A +_02077130: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + mov r0, #0x91 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200CCF8 + ldr r0, _0207722C ; =0x000006FC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02001C5C + ldr r0, _02077230 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + add r0, r5, #0x0 + mov r1, #0x20 + mov r2, #0x1 + bl FUN_020731C0 + add sp, #0x8 + mov r0, #0x4 + pop {r4-r6, pc} +_0207716A: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + mov r0, #0x91 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_0200CCF8 + ldr r0, _0207722C ; =0x000006FC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02001C5C + ldr r0, _02077230 ; =0x000006F8 + ldr r0, [r5, r0] + bl FUN_02012870 + ldr r0, _02077234 ; =0x000005A4 + ldr r6, [r5, r0] + add r0, r5, #0x0 + bl FUN_020772CC + str r0, [sp, #0x0] + mov r0, #0xc + str r0, [sp, #0x4] + ldr r2, _02077238 ; =0x00000B25 + lsl r3, r4, #0x18 + ldrh r1, [r6, #0x24] + ldrb r2, [r5, r2] + ldr r0, [r6, #0x0] + lsr r3, r3, #0x18 + bl FUN_02084DD0 + cmp r0, #0x1 + bne _020771F6 + ldr r0, _02077234 ; =0x000005A4 + ldr r1, _02077238 ; =0x00000B25 + ldr r0, [r5, r0] + ldrb r1, [r5, r1] + ldr r0, [r0, #0x0] + bl FUN_0206B9B0 + add r4, #0x36 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _02077234 ; =0x000005A4 + add r2, r0, #0x0 + ldr r1, [r5, r1] + add r0, r5, #0x0 + ldrh r1, [r1, #0x24] + bl FUN_020757F4 + ldr r0, _02077234 ; =0x000005A4 + mov r2, #0x1 + ldr r1, [r5, r0] + mov r3, #0xc + ldr r0, [r1, #0x4] + ldrh r1, [r1, #0x24] + bl FUN_0206EDD4 + ldr r0, _0207723C ; =0x000005EC + bl FUN_020054C8 + b _02077204 +_020771F6: + ldr r2, _02077240 ; =0x0000069C + mov r1, #0x69 + ldr r0, [r5, r2] + add r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 +_02077204: + mov r1, #0x0 + add r0, r5, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _02077234 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r5, r0] + add sp, #0x8 + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _02077244 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r5, r0] + mov r0, #0x14 + pop {r4-r6, pc} +_02077226: + mov r0, #0x6 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0207722C: .word 0x000006FC +_02077230: .word 0x000006F8 +_02077234: .word 0x000005A4 +_02077238: .word 0x00000B25 +_0207723C: .word 0x000005EC +_02077240: .word 0x0000069C +_02077244: .word 0x00000B22 + + thumb_func_start FUN_02077248 +FUN_02077248: ; 0x02077248 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_0200D0E0 + ldr r0, _020772BC ; =0x00000B25 + ldr r2, _020772C0 ; =0x0000070C + ldrb r1, [r4, r0] + mov r0, #0x2c + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, r2] + cmp r0, #0x0 + bne _02077286 + add r0, r2, #0x0 + sub r0, #0x70 + sub r2, #0x68 + ldr r0, [r4, r0] + ldr r2, [r4, r2] + mov r1, #0x7f + bl FUN_0200A8E0 + ldr r1, _020772BC ; =0x00000B25 + add r0, r4, #0x0 + ldrb r1, [r4, r1] + bl FUN_02073AB8 + b _0207729C +_02077286: + add r0, r2, #0x0 + sub r0, #0x70 + sub r2, #0x68 + ldr r0, [r4, r0] + ldr r2, [r4, r2] + mov r1, #0x80 + bl FUN_0200A8E0 + ldr r0, _020772BC ; =0x00000B25 + mov r1, #0x7 + strb r1, [r4, r0] +_0207729C: + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + mov r2, #0x1 + bl FUN_020731E8 + ldr r0, _020772C4 ; =0x000005A4 + mov r1, #0x0 + ldr r0, [r4, r0] + add r0, #0x23 + strb r1, [r0, #0x0] + ldr r0, _020772C8 ; =0x00000B22 + mov r1, #0x15 + strb r1, [r4, r0] + pop {r4, pc} + nop +_020772BC: .word 0x00000B25 +_020772C0: .word 0x0000070C +_020772C4: .word 0x000005A4 +_020772C8: .word 0x00000B22 + + thumb_func_start FUN_020772CC +FUN_020772CC: ; 0x020772CC + push {r3, lr} + ldr r1, _020772E4 ; =0x000005A4 + ldr r0, [r0, r1] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} + nop +_020772E4: .word 0x000005A4 + + thumb_func_start FUN_020772E8 +FUN_020772E8: ; 0x020772E8 + push {r3-r6, lr} + sub sp, #0xc + add r5, r1, #0x0 + ldr r1, [r5, #0x0] + add r6, r0, #0x0 + cmp r1, #0x0 + beq _020772FE + cmp r1, #0x1 + bne _020772FC + b _02077456 +_020772FC: + b _02077490 +_020772FE: + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02077498 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0207749C ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r2, #0xa + mov r0, #0x3 + mov r1, #0x12 + lsl r2, r2, #0xe + bl FUN_0201681C + mov r1, #0x5d + add r0, r6, #0x0 + lsl r1, r1, #0x4 + mov r2, #0x12 + bl FUN_02006268 + mov r2, #0x5d + mov r1, #0x0 + lsl r2, r2, #0x4 + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x12 + bl FUN_02016B94 + mov r1, #0x16 + lsl r1, r1, #0x4 + str r0, [r4, r1] + mov r0, #0x12 + bl FUN_0200AA80 + mov r2, #0x5a + lsl r2, r2, #0x2 + str r0, [r4, r2] + mov r0, #0x0 + mov r1, #0x1a + add r2, #0xb + mov r3, #0x12 + bl FUN_0200A86C + mov r2, #0x5b + lsl r2, r2, #0x2 + str r0, [r4, r2] + mov r0, #0x1 + mov r1, #0x1a + add r2, #0xc + mov r3, #0x12 + bl FUN_0200A86C + mov r2, #0x17 + lsl r2, r2, #0x4 + str r0, [r4, r2] + mov r0, #0x1 + mov r1, #0x1a + sub r2, #0x2c + mov r3, #0x12 + bl FUN_0200A86C + mov r1, #0x5d + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + bl FUN_02077B24 + mov r0, #0x16 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02077B44 + add r0, r6, #0x0 + bl FUN_0200628C + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02077B08 + add r0, r4, #0x0 + bl FUN_02077FE8 + mov r0, #0x2 + mov r1, #0x12 + bl FUN_02002C50 + ldr r0, _020774A0 ; =FUN_02077AE8 + mov r1, #0x0 + bl FUN_02015F10 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02077CD4 + mov r0, #0x0 + mov r1, #0x12 + bl FUN_02002C84 + bl FUN_02078110 + add r0, r4, #0x0 + bl FUN_02078140 + add r0, r4, #0x0 + bl FUN_0207835C + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0207890C + ldr r0, _020774A4 ; =0x000004C4 + mov r3, #0x5f + add r1, r4, r0 + lsl r3, r3, #0x2 + str r1, [sp, #0x0] + ldr r1, [r4, r3] + add r2, r3, #0x0 + str r1, [sp, #0x4] + sub r2, #0x24 + sub r0, #0xcc + add r1, r4, #0x0 + sub r3, #0x22 + ldrh r2, [r4, r2] + add r0, r4, r0 + add r1, #0xd8 + add r3, r4, r3 + bl FUN_0207907C + mov r1, #0x0 + mov r0, #0x34 + add r2, r1, #0x0 + bl FUN_0200433C + mov r0, #0x10 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x12 + str r0, [sp, #0x8] + mov r0, #0x0 + add r2, r1, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x1 + bl FUN_02077C84 + ldr r0, _020774A8 ; =0x021C4918 + mov r1, #0x1 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _02077490 +_02077456: + bl FUN_02006278 + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x1 + bne _02077472 + ldr r1, _020774AC ; =0x000004B8 + ldr r2, [r4, #0x4] + ldr r0, [r4, r1] + add r1, #0x8 + ldr r1, [r4, r1] + ldr r3, [r4, #0x8] + bl FUN_020774B8 +_02077472: + ldr r0, _020774B0 ; =0x021C5C54 + mov r1, #0x1 + str r4, [r0, #0x0] + mov r0, #0x0 + mov r2, #0xc + mov r3, #0x12 + bl FUN_020142EC + ldr r1, _020774B4 ; =0x000005C4 + add sp, #0xc + str r0, [r4, r1] + mov r0, #0x0 + str r0, [r5, #0x0] + mov r0, #0x1 + pop {r3-r6, pc} +_02077490: + mov r0, #0x0 + add sp, #0xc + pop {r3-r6, pc} + nop +_02077498: .word 0xFFFFE0FF +_0207749C: .word 0x04001000 +_020774A0: .word FUN_02077AE8 +_020774A4: .word 0x000004C4 +_020774A8: .word 0x021C4918 +_020774AC: .word 0x000004B8 +_020774B0: .word 0x021C5C54 +_020774B4: .word 0x000005C4 + + thumb_func_start FUN_020774B8 +FUN_020774B8: ; 0x020774B8 + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r2, #0x0 + mov r2, #0x2 + ldr r0, [r0, #0x14] + ldr r1, _020774E8 ; =0x000057E0 + add r6, r3, #0x0 + lsl r2, r2, #0x8 + blx GX_LoadOBJ + ldr r4, [r4, #0xc] + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r2, #0x0 + bl FUN_0206B7BC + lsl r0, r0, #0x5 + add r0, r4, r0 + mov r1, #0xc0 + mov r2, #0x20 + blx GX_LoadOBJPltt + pop {r4-r6, pc} + nop +_020774E8: .word 0x000057E0 + + thumb_func_start FUN_020774EC +FUN_020774EC: ; 0x020774EC + push {r4-r6, lr} + sub sp, #0x10 + add r5, r1, #0x0 + add r6, r0, #0x0 + bl FUN_02006278 + ldr r1, [r5, #0x0] + add r4, r0, #0x0 + cmp r1, #0x3 + bhi _02077550 + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0207750C: ; jump table (using 16-bit offset) + .short _02077514 - _0207750C - 2; case 0 + .short _02077528 - _0207750C - 2; case 1 + .short _0207755C - _0207750C - 2; case 2 + .short _0207768A - _0207750C - 2; case 3 +_02077514: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02077550 + mov r0, #0x1 + str r0, [r5, #0x0] + ldr r0, _020776A8 ; =0x000005CC + mov r1, #0x0 + str r1, [r4, r0] + b _02077698 +_02077528: + ldr r1, _020776A8 ; =0x000005CC + ldr r2, [r4, r1] + add r2, r2, #0x1 + str r2, [r4, r1] + bl FUN_020798C4 + mov r2, #0x49 + lsl r2, r2, #0x4 + add r0, r4, r2 + mov r1, #0xcb + sub r2, #0x30 + lsl r1, r1, #0x2 + ldr r2, [r4, r2] + add r1, r4, r1 + bl FUN_02079834 + ldr r0, _020776A8 ; =0x000005CC + ldr r1, [r4, r0] + cmp r1, #0x5 + bgt _02077552 +_02077550: + b _02077698 +_02077552: + mov r1, #0x2 + str r1, [r5, #0x0] + mov r1, #0x0 + str r1, [r4, r0] + b _02077698 +_0207755C: + ldr r3, _020776AC ; =0x0000045C + ldr r2, [r4, r3] + cmp r2, #0x7 + bhi _02077636 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02077570: ; jump table (using 16-bit offset) + .short _02077636 - _02077570 - 2; case 0 + .short _02077636 - _02077570 - 2; case 1 + .short _02077636 - _02077570 - 2; case 2 + .short _02077636 - _02077570 - 2; case 3 + .short _02077580 - _02077570 - 2; case 4 + .short _02077594 - _02077570 - 2; case 5 + .short _020775E0 - _02077570 - 2; case 6 + .short _0207760C - _02077570 - 2; case 7 +_02077580: + ldr r2, [r4, #0x34] + cmp r2, #0x0 + bne _0207758C + bl FUN_020776C4 + str r0, [r5, #0x0] +_0207758C: + add r0, r4, #0x0 + bl FUN_020798C4 + b _02077636 +_02077594: + add r1, r6, #0x0 + bl FUN_02077E90 + ldr r0, _020776B0 ; =0x00000448 + mov r1, #0xf + add r0, r4, r0 + bl FUN_02019620 + ldr r0, _020776B0 ; =0x00000448 + mov r2, #0x1 + add r0, r4, r0 + mov r1, #0x0 + lsl r2, r2, #0x8 + mov r3, #0xa + bl FUN_0200D0BC + mov r3, #0x0 + mov r2, #0x6 + ldr r0, _020776B0 ; =0x00000448 + str r3, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + lsl r2, r2, #0x6 + ldr r2, [r4, r2] + add r0, r4, r0 + bl FUN_0201BD84 + ldr r1, _020776B4 ; =0x00000458 + str r0, [r4, r1] + sub r1, #0x10 + add r0, r4, r1 + bl FUN_020191D0 + ldr r0, _020776AC ; =0x0000045C + mov r1, #0x6 + str r1, [r4, r0] + b _02077636 +_020775E0: + sub r0, r3, #0x4 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02077636 + ldr r0, _020776B8 ; =0x000005E2 + bl FUN_020054C8 + ldr r1, _020776BC ; =0x000004A8 + mov r2, #0x0 + ldr r0, [r4, r1] + add r0, r0, #0x1 + str r0, [r4, r1] + ldr r0, _020776A8 ; =0x000005CC + sub r1, #0x4c + str r2, [r4, r0] + mov r0, #0x7 + str r0, [r4, r1] + b _02077636 +_0207760C: + ldr r0, _020776A8 ; =0x000005CC + ldr r1, [r4, r0] + add r1, r1, #0x1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x1e + ble _02077636 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r1, #0x0 + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x12 + str r0, [sp, #0x8] + mov r0, #0x2 + add r2, r1, #0x0 + add r3, r1, #0x0 + bl FUN_0200E1D0 + mov r0, #0x3 + str r0, [r5, #0x0] +_02077636: + ldr r3, _020776C0 ; =0x00000464 + mov r1, #0xcb + add r0, r4, r3 + str r0, [sp, #0x0] + add r0, r3, #0x4 + add r0, r4, r0 + lsl r1, r1, #0x2 + str r0, [sp, #0x4] + add r0, r4, r1 + str r0, [sp, #0x8] + add r0, r3, #0x0 + add r0, #0x4c + ldr r0, [r4, r0] + add r2, r3, #0x0 + ldr r0, [r0, #0x14] + add r1, #0x8c + str r0, [sp, #0xc] + mov r0, #0x16 + lsl r0, r0, #0x4 + sub r3, r3, #0x4 + sub r2, #0x8 + ldr r0, [r4, r0] + ldr r3, [r4, r3] + add r1, r4, r1 + add r2, r4, r2 + bl FUN_020786B0 + mov r2, #0x49 + lsl r2, r2, #0x4 + add r0, r4, r2 + mov r1, #0xcb + sub r2, #0x30 + lsl r1, r1, #0x2 + ldr r2, [r4, r2] + add r1, r4, r1 + bl FUN_02079834 + add r0, r4, #0x0 + add r0, #0x38 + bl FUN_02078E3C + b _02077698 +_0207768A: + bl FUN_0200E308 + cmp r0, #0x0 + beq _02077698 + add sp, #0x10 + mov r0, #0x1 + pop {r4-r6, pc} +_02077698: + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + mov r0, #0x0 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_020776A8: .word 0x000005CC +_020776AC: .word 0x0000045C +_020776B0: .word 0x00000448 +_020776B4: .word 0x00000458 +_020776B8: .word 0x000005E2 +_020776BC: .word 0x000004A8 +_020776C0: .word 0x00000464 + + thumb_func_start FUN_020776C4 +FUN_020776C4: ; 0x020776C4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02078C98 + ldr r0, _020777BC ; =0x021C48B8 + mov r1, #0x4 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _02077746 + ldr r0, [r5, #0x0] + cmp r0, #0x4 + beq _0207771E + ldr r1, _020777C0 ; =0x0000045C + mov r0, #0x0 + str r0, [r5, r1] + add r2, r1, #0x4 + ldr r2, [r5, r2] + add r3, r2, #0x1 + add r2, r1, #0x4 + str r3, [r5, r2] + ldr r2, [r5, r2] + cmp r2, #0x3 + blt _020776F8 + add r1, r1, #0x4 + str r0, [r5, r1] +_020776F8: + mov r2, #0x49 + lsl r2, r2, #0x4 + add r1, r2, #0x0 + sub r1, #0x30 + ldr r1, [r5, r1] + add r0, r5, r2 + lsl r3, r1, #0x2 + ldr r1, [r0, r3] + sub r2, #0x30 + add r1, r1, #0x1 + str r1, [r0, r3] + add r0, r5, #0x0 + ldr r1, [r5, r2] + add r0, #0x3a + bl FUN_0207916C + ldr r0, _020777C4 ; =0x0000069E + bl FUN_020054C8 +_0207771E: + mov r2, #0x49 + lsl r2, r2, #0x4 + add r1, r2, #0x0 + sub r1, #0x30 + ldr r1, [r5, r1] + add r0, r5, r2 + lsl r3, r1, #0x2 + ldr r1, [r0, r3] + sub r2, #0x30 + add r1, r1, #0x1 + str r1, [r0, r3] + add r0, r5, #0x0 + ldr r1, [r5, r2] + add r0, #0x3a + bl FUN_0207916C + ldr r0, _020777C4 ; =0x0000069E + bl FUN_020054C8 + b _020777B8 +_02077746: + mov r2, #0x1 + add r1, r0, #0x0 + tst r1, r2 + beq _0207776C + ldr r3, [r5, #0x20] + mov r1, #0x1a + mul r1, r3 + add r3, r5, r1 + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + lsl r1, r1, #0x1 + add r1, r3, r1 + ldrh r1, [r1, #0x3a] + bl FUN_020791C0 + add r4, r0, #0x0 + mov r0, #0x1 + str r0, [r5, #0x30] + b _020777B8 +_0207776C: + ldr r1, _020777C8 ; =0x000005C8 + ldr r1, [r5, r1] + cmp r1, #0x1 + bne _02077794 + ldr r2, [r5, #0x20] + mov r1, #0x1a + mul r1, r2 + add r2, r5, r1 + ldr r1, [r5, #0x1c] + add r0, r5, #0x0 + lsl r1, r1, #0x1 + add r1, r2, r1 + ldrh r1, [r1, #0x3a] + mov r2, #0x0 + bl FUN_020791C0 + add r4, r0, #0x0 + mov r0, #0x0 + str r0, [r5, #0x30] + b _020777B8 +_02077794: + mov r1, #0x2 + add r3, r0, #0x0 + tst r3, r1 + beq _020777A8 + ldr r1, _020777CC ; =0x0000E007 + add r0, r5, #0x0 + bl FUN_020791C0 + add r4, r0, #0x0 + b _020777B8 +_020777A8: + add r1, #0xfe + tst r0, r1 + beq _020777B8 + ldr r1, _020777D0 ; =0x0000E006 + add r0, r5, #0x0 + bl FUN_020791C0 + add r4, r0, #0x0 +_020777B8: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_020777BC: .word 0x021C48B8 +_020777C0: .word 0x0000045C +_020777C4: .word 0x0000069E +_020777C8: .word 0x000005C8 +_020777CC: .word 0x0000E007 +_020777D0: .word 0x0000E006 + + thumb_func_start FUN_020777D4 +FUN_020777D4: ; 0x020777D4 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + add r4, r1, #0x0 + cmp r0, #0x0 + bne _02077836 + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _020777FE + bl FUN_0201B9EC + mov r1, #0x12 + blx _s32_div_f + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r6, r0, #0x0 + b _0207781A +_020777FE: + cmp r0, #0x1 + bne _0207781A + bl FUN_0201B9EC + mov r1, #0x12 + blx _s32_div_f + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + add r1, #0x12 + bl FUN_0200A914 + add r6, r0, #0x0 +_0207781A: + ldr r0, [r4, #0x18] + add r1, r6, #0x0 + bl FUN_02021A74 + add r0, r6, #0x0 + bl FUN_02021A20 + ldr r0, [r4, #0x18] + add r4, #0x1c + add r1, r4, #0x0 + mov r2, #0xa + bl FUN_02021EF0 + pop {r4-r6, pc} +_02077836: + cmp r0, #0x3 + bne _02077864 + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x58 + bl FUN_0200A914 + add r5, r0, #0x0 + ldr r0, [r4, #0x18] + add r1, r5, #0x0 + bl FUN_02021A74 + add r0, r5, #0x0 + bl FUN_02021A20 + ldr r0, [r4, #0x18] + add r4, #0x1c + add r1, r4, #0x0 + mov r2, #0xa + bl FUN_02021EF0 + pop {r4-r6, pc} +_02077864: + mov r0, #0x1 + str r0, [r4, #0x14] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0207786C +FUN_0207786C: ; 0x0207786C + push {r4-r5} + ldr r1, _0207788C ; =0x000001DE + ldr r2, _02077890 ; =0x0000FFFF + mov r5, #0x1 + mov r3, #0x0 +_02077876: + ldrh r4, [r0, #0x0] + cmp r4, r2 + beq _02077886 + cmp r4, r1 + beq _02077882 + add r5, r3, #0x0 +_02077882: + add r0, r0, #0x2 + b _02077876 +_02077886: + add r0, r5, #0x0 + pop {r4-r5} + bx lr + .balign 4 +_0207788C: .word 0x000001DE +_02077890: .word 0x0000FFFF + + thumb_func_start FUN_02077894 +FUN_02077894: ; 0x02077894 + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x10] + bl FUN_02006278 + add r4, r0, #0x0 + ldr r0, [sp, #0x10] + bl FUN_0200628C + add r5, r0, #0x0 + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r0, [r4, r0] + ldr r1, _02077A6C ; =0x0000FFFF + lsl r0, r0, #0x1 + add r0, r4, r0 + add r0, #0xd8 + strh r1, [r0, #0x0] + ldr r0, [r4, #0x0] + cmp r0, #0x1 + bne _020778DE + mov r0, #0x12 + bl FUN_020669C0 + mov r3, #0xa + str r3, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str r3, [sp, #0xc] + ldr r1, [r4, #0x4] + add r6, r0, #0x0 + mov r2, #0x5 + bl FUN_02066ACC + add r0, r6, #0x0 + bl FUN_02016A18 +_020778DE: + mov r1, #0x56 + lsl r1, r1, #0x2 + ldrh r0, [r4, r1] + cmp r0, #0x0 + beq _02077904 + add r0, r4, #0x0 + sub r1, #0x40 + add r0, #0xd8 + add r1, r4, r1 + bl StringNotEqual + cmp r0, #0x0 + beq _02077904 + add r0, r4, #0x0 + add r0, #0xd8 + bl FUN_0207786C + cmp r0, #0x0 + beq _0207790E +_02077904: + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_020777D4 + b _02077932 +_0207790E: + mov r0, #0x46 + lsl r0, r0, #0x2 + add r1, r4, #0x0 + add r0, r4, r0 + add r1, #0xd8 + bl StringCopy + add r0, r5, #0x0 + add r1, r4, #0x0 + add r0, #0x1c + add r1, #0xd8 + bl StringCopy + add r1, r4, #0x0 + ldr r0, [r5, #0x18] + add r1, #0xd8 + bl FUN_02021E28 +_02077932: + mov r0, #0x61 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r7, #0xe7 + mov r6, #0x0 + add r5, r4, #0x0 + lsl r7, r7, #0x2 +_02077944: + ldr r0, [r5, r7] + bl FUN_0200621C + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, #0x7 + blt _02077944 + mov r0, #0xb1 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02009C0C + mov r0, #0xb5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02009C0C + mov r0, #0xb2 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02009E04 + mov r0, #0xb6 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02009E04 + mov r7, #0xad + mov r6, #0x0 + add r5, r4, #0x0 + lsl r7, r7, #0x2 +_02077982: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, #0x4 + blt _02077982 + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + bl FUN_02009FA0 + ldr r1, _02077A70 ; =0x000004AC + mov r0, #0x12 + ldr r1, [r4, r1] + bl FUN_02016A8C + ldr r0, [r4, #0x0] + cmp r0, #0x1 + bne _020779C2 + ldr r1, _02077A74 ; =0x000004B4 + mov r0, #0x12 + ldr r1, [r4, r1] + bl FUN_02016A8C + ldr r1, _02077A78 ; =0x000004BC + mov r0, #0x12 + ldr r1, [r4, r1] + bl FUN_02016A8C +_020779C2: + mov r0, #0x16 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x7 + bl FUN_020178A0 + bl FUN_0201D12C + bl FUN_0201E08C + mov r0, #0x16 + lsl r0, r0, #0x4 + mov r1, #0xee + lsl r1, r1, #0x2 + ldr r0, [r4, r0] + add r1, r4, r1 + bl FUN_02077FA8 + mov r0, #0x0 + bl FUN_02002CC0 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02077A7C ; =0xFFFF1FFF + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x2 + bl FUN_02002CF8 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02077A0C + bl FUN_02021A20 +_02077A0C: + mov r0, #0x5e + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x5f + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x5d + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x17 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0200AB18 + ldr r0, [sp, #0x10] + bl FUN_0200627C + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x12 + bl FUN_020168D0 + ldr r0, _02077A80 ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + mov r0, #0x1 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02077A6C: .word 0x0000FFFF +_02077A70: .word 0x000004AC +_02077A74: .word 0x000004B4 +_02077A78: .word 0x000004BC +_02077A7C: .word 0xFFFF1FFF +_02077A80: .word 0x021C4918 + + thumb_func_start FUN_02077A84 +FUN_02077A84: ; 0x02077A84 + push {r3-r7, lr} + add r6, r1, #0x0 + mov r1, #0x50 + str r0, [sp, #0x0] + add r7, r2, #0x0 + add r5, r3, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + str r6, [r4, #0x0] + str r7, [r4, #0x4] + str r5, [r4, #0xc] + mov r0, #0x0 + str r0, [r4, #0x14] + ldr r0, _02077AC0 ; =0x0000FFFF + ldr r1, [sp, #0x0] + strh r0, [r4, #0x1c] + add r0, r5, #0x1 + bl FUN_020219F4 + str r0, [r4, #0x18] + mov r1, #0x0 + str r1, [r4, #0x44] + str r1, [r4, #0x48] + ldr r0, [sp, #0x18] + str r1, [r4, #0x10] + str r0, [r4, #0x4c] + str r1, [r4, #0x8] + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_02077AC0: .word 0x0000FFFF + + thumb_func_start FUN_02077AC4 +FUN_02077AC4: ; 0x02077AC4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x18] + cmp r0, #0x0 + bne _02077AD2 + bl ErrorHandling +_02077AD2: + cmp r4, #0x0 + bne _02077ADA + bl ErrorHandling +_02077ADA: + ldr r0, [r4, #0x18] + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02077AE8 +FUN_02077AE8: ; 0x02077AE8 + push {r3, lr} + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _02077B00 ; =0x027E0000 + ldr r1, _02077B04 ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + .balign 4 +_02077B00: .word 0x027E0000 +_02077B04: .word 0x00003FF8 + + thumb_func_start FUN_02077B08 +FUN_02077B08: ; 0x02077B08 + ldr r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r2, [r1, #0x4] + str r2, [r0, #0x4] + ldr r2, [r1, #0x8] + str r2, [r0, #0x8] + ldr r2, [r1, #0xc] + str r2, [r0, #0xc] + ldr r2, [r1, #0x10] + str r2, [r0, #0x10] + ldr r1, [r1, #0x4c] + str r1, [r0, #0x18] + bx lr + .balign 4 + + thumb_func_start FUN_02077B24 +FUN_02077B24: ; 0x02077B24 + push {r4, lr} + sub sp, #0x28 + ldr r4, _02077B40 ; =0x020FA12C + add r3, sp, #0x0 + mov r2, #0x5 +_02077B2E: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02077B2E + add r0, sp, #0x0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .balign 4 +_02077B40: .word 0x020FA12C + + thumb_func_start FUN_02077B44 +FUN_02077B44: ; 0x02077B44 + push {r3-r5, lr} + sub sp, #0x80 + ldr r5, _02077C68 ; =0x020F9D4C + add r3, sp, #0x70 + add r4, r0, #0x0 + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r5, _02077C6C ; =0x020F9EC0 + add r3, sp, #0x54 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r0, [r3, #0x0] + add r0, r4, #0x0 + add r3, r1, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02018744 + ldr r5, _02077C70 ; =0x020F9FA0 + add r3, sp, #0x38 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x1 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02018744 + ldr r5, _02077C74 ; =0x020FA064 + add r3, sp, #0x1c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x2 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02018744 + ldr r5, _02077C78 ; =0x020F9DFC + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x4 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02018744 + mov r0, #0x0 + bl FUN_02077C84 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + mov r3, #0x12 + bl FUN_02017F18 + mov r0, #0x4 + mov r1, #0x20 + mov r2, #0x0 + mov r3, #0x12 + bl FUN_02017F18 + mov r0, #0x1 + lsl r0, r0, #0x1a + add r4, r0, #0x0 + ldr r2, [r0, #0x0] + ldr r1, _02077C7C ; =0xFFFF1FFF + add r4, #0x48 + and r2, r1 + lsr r1, r0, #0xd + orr r1, r2 + str r1, [r0, #0x0] + ldrh r3, [r4, #0x0] + mov r2, #0x3f + mov r1, #0x14 + bic r3, r2 + orr r1, r3 + mov r3, #0x20 + orr r1, r3 + strh r1, [r4, #0x0] + add r4, r0, #0x0 + add r4, #0x4a + ldrh r5, [r4, #0x0] + mov r1, #0x1f + bic r5, r2 + orr r1, r5 + orr r1, r3 + strh r1, [r4, #0x0] + add r1, r0, #0x0 + mov r2, #0xff + add r1, #0x40 + strh r2, [r1, #0x0] + mov r1, #0x40 + add r0, #0x44 + strh r1, [r0, #0x0] + ldr r0, _02077C80 ; =0x04001050 + mov r1, #0x0 + strh r1, [r0, #0x0] + add sp, #0x80 + pop {r3-r5, pc} + .balign 4 +_02077C68: .word 0x020F9D4C +_02077C6C: .word 0x020F9EC0 +_02077C70: .word 0x020F9FA0 +_02077C74: .word 0x020FA064 +_02077C78: .word 0x020F9DFC +_02077C7C: .word 0xFFFF1FFF +_02077C80: .word 0x04001050 + + thumb_func_start FUN_02077C84 +FUN_02077C84: ; 0x02077C84 + push {r4, lr} + add r4, r0, #0x0 + lsl r1, r4, #0x18 + mov r0, #0x1 + lsr r1, r1, #0x18 + bl FUN_0201E6E4 + lsl r1, r4, #0x18 + mov r0, #0x2 + lsr r1, r1, #0x18 + bl FUN_0201E6E4 + lsl r1, r4, #0x18 + mov r0, #0x4 + lsr r1, r1, #0x18 + bl FUN_0201E6E4 + mov r0, #0x8 + mov r1, #0x0 + bl FUN_0201E6E4 + lsl r1, r4, #0x18 + mov r0, #0x10 + lsr r1, r1, #0x18 + bl FUN_0201E6E4 + lsl r1, r4, #0x18 + mov r0, #0x1 + lsr r1, r1, #0x18 + bl FUN_0201E74C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x10 + mov r1, #0x0 + bl FUN_0201E74C + pop {r4, pc} + + thumb_func_start FUN_02077CD4 +FUN_02077CD4: ; 0x02077CD4 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0200628C + add r7, r0, #0x0 + ldr r0, _02077E7C ; =0x0000045C + mov r1, #0x4 + str r1, [r4, r0] + add r0, #0xc + add r0, r4, r0 + mov r1, #0x0 + bl FUN_02078BA8 + ldr r6, _02077E80 ; =0x00000464 + mov r0, #0x16 + ldr r3, [r4, r6] + mov r5, #0xc + lsl r0, r0, #0x4 + lsl r1, r3, #0x18 + mul r5, r3 + add r3, r4, r5 + add r5, r6, #0x4 + ldr r0, [r4, r0] + ldr r3, [r3, r5] + lsr r1, r1, #0x18 + mov r2, #0x0 + bl FUN_020179E0 + ldr r3, [r4, r6] + mov r5, #0xc + mov r0, #0x16 + lsl r0, r0, #0x4 + lsl r1, r3, #0x18 + mul r5, r3 + add r3, r4, r5 + add r6, #0x8 + ldr r0, [r4, r0] + ldr r3, [r3, r6] + lsr r1, r1, #0x18 + mov r2, #0x3 + bl FUN_020179E0 + ldr r6, _02077E80 ; =0x00000464 + mov r0, #0x1 + ldr r1, [r4, r6] + mov r5, #0xc + add r3, r1, #0x0 + eor r3, r0 + mov r0, #0x16 + lsl r0, r0, #0x4 + lsl r1, r3, #0x18 + mul r5, r3 + add r3, r4, r5 + add r5, r6, #0x4 + ldr r0, [r4, r0] + ldr r3, [r3, r5] + lsr r1, r1, #0x18 + mov r2, #0x0 + bl FUN_020179E0 + ldr r1, [r4, r6] + mov r0, #0x1 + add r3, r1, #0x0 + eor r3, r0 + mov r5, #0xc + mov r0, #0x16 + lsl r0, r0, #0x4 + lsl r1, r3, #0x18 + mul r5, r3 + add r3, r4, r5 + add r6, #0x8 + ldr r0, [r4, r0] + ldr r3, [r3, r6] + lsr r1, r1, #0x18 + mov r2, #0x3 + bl FUN_020179E0 + mov r1, #0x46 + ldr r0, _02077E84 ; =0x0000FFFF + lsl r1, r1, #0x2 + strh r0, [r4, r1] + ldr r0, [r7, #0x18] + cmp r0, #0x0 + beq _02077D88 + add r1, r4, r1 + mov r2, #0x20 + bl FUN_02021EF0 +_02077D88: + add r1, r4, #0x0 + mov r0, #0x1 + add r1, #0xd8 + mov r2, #0x40 + blx MIi_CpuClear16 + ldr r0, [r4, #0x0] + cmp r0, #0x1 + bne _02077DCE + mov r0, #0x12 + bl FUN_020669C0 + mov r3, #0xa + str r3, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str r3, [sp, #0xc] + ldr r1, [r4, #0x4] + add r5, r0, #0x0 + mov r2, #0x5 + bl FUN_02066ACC + add r0, r5, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200AC60 + add r0, r5, #0x0 + bl FUN_02016A18 +_02077DCE: + ldr r0, [r7, #0x44] + cmp r0, #0x0 + beq _02077DD8 + mov r0, #0x1 + str r0, [r4, #0x14] +_02077DD8: + ldr r2, [r4, #0x0] + mov r1, #0x5a + lsl r1, r1, #0x2 + lsl r3, r2, #0x2 + ldr r2, _02077E88 ; =0x020FA0A0 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r2, [r2, r3] + ldr r1, [r4, r1] + mov r3, #0x12 + bl FUN_0200A9C4 + mov r1, #0x5e + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r1, #0x0 + sub r0, #0x10 + sub r1, #0xc + ldr r0, [r4, r0] + ldr r1, [r4, r1] + mov r2, #0x8 + mov r3, #0x12 + bl FUN_0200A9C4 + mov r1, #0x5f + lsl r1, r1, #0x2 + str r0, [r4, r1] + sub r1, #0x10 + ldr r0, [r4, r1] + mov r1, #0x7 + bl FUN_0200A914 + mov r1, #0x61 + lsl r1, r1, #0x2 + str r0, [r4, r1] + sub r1, #0x6c + add r0, r4, r1 + bl StringLength + mov r1, #0x56 + lsl r1, r1, #0x2 + strh r0, [r4, r1] + mov r0, #0x0 + str r0, [r4, #0x1c] + mov r1, #0x1 + str r1, [r4, #0x20] + sub r1, r1, #0x2 + str r1, [r4, #0x24] + str r1, [r4, #0x28] + str r0, [r4, #0x30] + ldr r2, _02077E8C ; =0x00000484 + str r0, [r4, #0x34] + str r1, [r4, r2] + add r1, r2, #0x4 + str r0, [r4, r1] + add r2, #0x8 + str r0, [r4, r2] + ldr r1, [r4, #0xc] + ldr r2, _02077E84 ; =0x0000FFFF + lsl r1, r1, #0x1 + add r1, r4, r1 + add r1, #0xd8 + strh r2, [r1, #0x0] + mov r1, #0x49 + add r3, r4, #0x0 + add r2, r0, #0x0 + lsl r1, r1, #0x4 +_02077E5E: + add r0, r0, #0x1 + str r2, [r3, r1] + add r3, r3, #0x4 + cmp r0, #0x7 + blt _02077E5E + ldr r0, [r4, #0x0] + cmp r0, #0x4 + beq _02077E76 + mov r0, #0x49 + mov r1, #0x1 + lsl r0, r0, #0x4 + str r1, [r4, r0] +_02077E76: + add sp, #0x10 + pop {r3-r7, pc} + nop +_02077E7C: .word 0x0000045C +_02077E80: .word 0x00000464 +_02077E84: .word 0x0000FFFF +_02077E88: .word 0x020FA0A0 +_02077E8C: .word 0x00000484 + + thumb_func_start FUN_02077E90 +FUN_02077E90: ; 0x02077E90 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r0, r1, #0x0 + bl FUN_0200628C + add r4, r0, #0x0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + beq _02077FA0 + mov r0, #0xc8 + mov r1, #0x12 + bl FUN_020219F4 + add r7, r0, #0x0 + mov r0, #0x6 + mov r1, #0x0 + lsl r0, r0, #0x6 + str r1, [r5, r0] + ldr r0, [r4, #0x48] + bl FUN_0206B330 + add r6, r0, #0x0 + ldr r0, [r4, #0x48] + bl FUN_0206B334 + str r0, [sp, #0x10] + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r2, [r4, #0x48] + mov r1, #0x1 + add r3, r6, #0x0 + bl FUN_0200B410 + ldr r0, [sp, #0x10] + cmp r6, r0 + beq _02077EF4 + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r2, [r4, #0x48] + ldr r3, [sp, #0x10] + mov r1, #0x2 + bl FUN_0200B410 + ldr r0, [r4, #0x44] + add r0, r0, #0x2 + str r0, [r4, #0x44] + b _02077F04 +_02077EF4: + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r2, [r4, #0x48] + mov r1, #0x2 + add r3, r6, #0x0 + bl FUN_0200B410 +_02077F04: + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r0, [r5, r0] + cmp r0, #0x0 + beq _02077F1A + add r0, r5, #0x0 + add r0, #0xd8 + bl FUN_0207786C + cmp r0, #0x0 + beq _02077F50 +_02077F1A: + mov r0, #0x12 + bl FUN_020669C0 + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str r3, [sp, #0xc] + ldr r1, [r5, #0x4] + add r6, r0, #0x0 + mov r2, #0x1 + bl FUN_02066ACC + add r0, r6, #0x0 + bl FUN_020690E4 + add r2, r0, #0x0 + mov r0, #0x5a + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200AC60 + add r0, r6, #0x0 + bl FUN_02016A18 + b _02077F7E +_02077F50: + mov r1, #0x56 + lsl r1, r1, #0x2 + ldrh r1, [r5, r1] + ldr r0, _02077FA4 ; =0x0000FFFF + lsl r1, r1, #0x1 + add r1, r5, r1 + add r1, #0xd8 + strh r0, [r1, #0x0] + add r1, r5, #0x0 + add r0, r7, #0x0 + add r1, #0xd8 + bl FUN_02021E28 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0x5a + str r1, [sp, #0x4] + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r2, r7, #0x0 + add r3, r1, #0x0 + bl FUN_0200ABB4 +_02077F7E: + mov r1, #0x5a + lsl r1, r1, #0x2 + ldr r0, [r5, r1] + add r1, #0xc + ldr r1, [r5, r1] + ldr r2, [r4, #0x44] + mov r3, #0x12 + bl FUN_0200A9C4 + mov r1, #0x6 + lsl r1, r1, #0x6 + str r0, [r5, r1] + mov r0, #0x1 + str r0, [r5, #0x14] + add r0, r7, #0x0 + bl FUN_02021A20 +_02077FA0: + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02077FA4: .word 0x0000FFFF + + thumb_func_start FUN_02077FA8 +FUN_02077FA8: ; 0x02077FA8 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + mov r4, #0x0 +_02077FB0: + add r0, r5, #0x0 + bl FUN_02019178 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0xa + blt _02077FB0 + add r0, r6, #0x0 + mov r1, #0x4 + bl FUN_020178A0 + add r0, r6, #0x0 + mov r1, #0x2 + bl FUN_020178A0 + add r0, r6, #0x0 + mov r1, #0x1 + bl FUN_020178A0 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_020178A0 + mov r0, #0x12 + add r1, r6, #0x0 + bl FUN_02016A8C + pop {r4-r6, pc} + + thumb_func_start FUN_02077FE8 +FUN_02077FE8: ; 0x02077FE8 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x16 + lsl r0, r0, #0x4 + ldr r4, [r5, r0] + mov r1, #0x0 + mov r0, #0x60 + str r0, [sp, #0x0] + mov r0, #0x12 + str r0, [sp, #0x4] + mov r0, #0x1f + add r2, r1, #0x0 + add r3, r1, #0x0 + bl FUN_02006930 + mov r0, #0x20 + str r0, [sp, #0x0] + mov r0, #0x12 + str r0, [sp, #0x4] + mov r0, #0xc + add r1, r0, #0x0 + mov r2, #0x4 + mov r3, #0x0 + bl FUN_02006930 + mov r0, #0x4 + mov r1, #0x0 + bl FUN_02017FE4 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x2 + lsl r0, r0, #0xc + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x12 + mov r1, #0x2 + str r0, [sp, #0xc] + mov r0, #0x1f + add r2, r4, #0x0 + add r3, r1, #0x0 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x6 + lsl r0, r0, #0x8 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x12 + str r0, [sp, #0xc] + mov r0, #0x1f + mov r1, #0x4 + add r2, r4, #0x0 + mov r3, #0x2 + bl FUN_020068C8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x2 + lsl r0, r0, #0xc + str r0, [sp, #0x4] + mov r3, #0x1 + str r3, [sp, #0x8] + mov r0, #0x12 + str r0, [sp, #0xc] + mov r0, #0x1f + mov r1, #0x2 + add r2, r4, #0x0 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0xe + lsl r0, r0, #0x6 + str r0, [sp, #0x4] + mov r3, #0x1 + str r3, [sp, #0x8] + mov r0, #0x12 + str r0, [sp, #0xc] + mov r0, #0x1f + mov r1, #0x6 + add r2, r4, #0x0 + bl FUN_020068C8 + mov r3, #0x0 + mov r0, #0xe + str r3, [sp, #0x0] + lsl r0, r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x12 + str r0, [sp, #0xc] + mov r0, #0x1f + mov r1, #0x7 + add r2, r4, #0x0 + bl FUN_020068C8 + mov r1, #0x6 + mov r0, #0x0 + lsl r1, r1, #0x6 + mov r2, #0x12 + bl FUN_02002EEC + ldr r0, [r5, #0x18] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x12 + str r0, [sp, #0x4] + mov r0, #0x16 + lsl r0, r0, #0x4 + mov r1, #0x4 + add r2, r1, #0x0 + ldr r0, [r5, r0] + add r2, #0xfc + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0x6 + mov r0, #0x4 + lsl r1, r1, #0x6 + mov r2, #0x12 + bl FUN_02002EEC + mov r3, #0x4b + mov r0, #0x12 + lsl r3, r3, #0x4 + str r0, [sp, #0x0] + mov r0, #0x1f + mov r1, #0x10 + mov r2, #0x1 + add r3, r5, r3 + bl FUN_02006BB0 + ldr r1, _0207810C ; =0x000004AC + str r0, [r5, r1] + add sp, #0x10 + pop {r3-r5, pc} + nop +_0207810C: .word 0x000004AC + + thumb_func_start FUN_02078110 +FUN_02078110: ; 0x02078110 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0207813C ; =0x020F9D5C + add r3, sp, #0x0 + add r2, r3, #0x0 + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x12 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0207813C: .word 0x020F9D5C + + thumb_func_start FUN_02078140 +FUN_02078140: ; 0x02078140 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + blx FUN_020B0FC0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r1, #0x80 + str r1, [sp, #0x4] + str r0, [sp, #0x8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x12 + str r2, [sp, #0x10] + add r2, r0, #0x0 + bl FUN_02009EAC + mov r1, #0x63 + lsl r1, r1, #0x2 + mov r0, #0x2c + add r1, r5, r1 + mov r2, #0x12 + bl FUN_02008C9C + mov r1, #0x62 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r0, r1, #0x4 + mov r2, #0x1 + add r0, r5, r0 + mov r1, #0x0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r7, #0xad + mov r6, #0x0 + add r4, r5, #0x0 + lsl r7, r7, #0x2 +_0207818C: + mov r0, #0x2 + add r1, r6, #0x0 + mov r2, #0x12 + bl FUN_02008DEC + str r0, [r4, r7] + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x4 + blt _0207818C + mov r0, #0x0 + str r0, [sp, #0x0] + mov r3, #0x1 + str r3, [sp, #0x4] + mov r0, #0x12 + str r0, [sp, #0x8] + mov r0, #0xad + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1f + mov r2, #0xa + bl FUN_02008F34 + mov r1, #0xb1 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r3, #0x0 + str r3, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + mov r0, #0x9 + str r0, [sp, #0x8] + mov r0, #0x12 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x1f + bl FUN_02008FEC + mov r1, #0xb2 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + mov r0, #0x12 + sub r1, #0xc + str r0, [sp, #0x8] + ldr r0, [r5, r1] + mov r1, #0x1f + mov r2, #0xc + mov r3, #0x1 + bl FUN_020090AC + mov r1, #0xb3 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x3 + str r0, [sp, #0x4] + mov r0, #0x12 + sub r1, #0xc + str r0, [sp, #0x8] + ldr r0, [r5, r1] + mov r1, #0x1f + mov r2, #0xe + mov r3, #0x1 + bl FUN_020090AC + mov r1, #0x2d + lsl r1, r1, #0x4 + str r0, [r5, r1] + ldr r0, [r5, #0x0] + cmp r0, #0x1 + bne _02078272 + ldr r0, [r5, #0x4] + ldr r2, [r5, #0x8] + mov r1, #0x0 + bl FUN_0206B6D4 + ldr r3, _0207831C ; =0x000004B8 + add r1, r0, #0x0 + mov r0, #0x12 + str r0, [sp, #0x0] + mov r0, #0x13 + mov r2, #0x0 + add r3, r5, r3 + bl FUN_02006BB0 + ldr r1, _02078320 ; =0x000004B4 + str r0, [r5, r1] + add r0, r1, #0x4 + mov r1, #0x2 + ldr r0, [r5, r0] + lsl r1, r1, #0x8 + blx DC_FlushRange + bl FUN_0206B888 + add r1, r0, #0x0 + mov r0, #0x13 + lsl r2, r0, #0x6 + add r2, r5, r2 + mov r3, #0x12 + bl FUN_02006C08 + ldr r1, _02078324 ; =0x000004BC + str r0, [r5, r1] + add r0, r1, #0x4 + ldr r0, [r5, r0] + mov r1, #0x80 + blx DC_FlushRange +_02078272: + mov r3, #0x1 + str r3, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + mov r0, #0x12 + str r0, [sp, #0x8] + mov r0, #0xad + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1f + mov r2, #0xb + bl FUN_02008F34 + mov r1, #0xb5 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r2, #0x1 + str r2, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + mov r0, #0x3 + str r0, [sp, #0x8] + mov r0, #0x12 + sub r1, #0x1c + str r0, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x1f + mov r3, #0x0 + bl FUN_02008FEC + mov r1, #0xb6 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r3, #0x1 + str r3, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + mov r0, #0x12 + sub r1, #0x1c + str r0, [sp, #0x8] + ldr r0, [r5, r1] + mov r1, #0x1f + mov r2, #0xd + bl FUN_020090AC + mov r1, #0xb7 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r3, #0x1 + str r3, [sp, #0x0] + mov r0, #0x3 + str r0, [sp, #0x4] + mov r0, #0x12 + sub r1, #0x1c + str r0, [sp, #0x8] + ldr r0, [r5, r1] + mov r1, #0x1f + mov r2, #0xf + bl FUN_020090AC + mov r1, #0x2e + lsl r1, r1, #0x4 + str r0, [r5, r1] + sub r1, #0x1c + ldr r0, [r5, r1] + bl FUN_02009A50 + mov r0, #0xb5 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02009A50 + mov r0, #0xb2 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02009CF0 + mov r0, #0xb6 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02009CF0 + add sp, #0x14 + pop {r4-r7, pc} + nop +_0207831C: .word 0x000004B8 +_02078320: .word 0x000004B4 +_02078324: .word 0x000004BC + + thumb_func_start FUN_02078328 +FUN_02078328: ; 0x02078328 + push {r3-r4, lr} + sub sp, #0xc + add r4, r1, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0202011C + ldr r1, [r0, #0x0] + ldr r0, [r4, #0x8] + add r0, r1, r0 + str r0, [sp, #0x0] + ldr r0, [r4, #0xc] + lsl r1, r0, #0x4 + ldr r0, _02078358 ; =0x020FA1D8 + ldr r0, [r0, r1] + add r1, sp, #0x0 + lsl r0, r0, #0xc + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [r4, #0x4] + bl FUN_02020044 + add sp, #0xc + pop {r3-r4, pc} + .balign 4 +_02078358: .word 0x020FA1D8 + + thumb_func_start FUN_0207835C +FUN_0207835C: ; 0x0207835C + push {r4-r7, lr} + sub sp, #0x5c + mov r1, #0x0 + add r6, r0, #0x0 + str r1, [sp, #0x0] + sub r0, r1, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r2, #0xad + str r1, [sp, #0xc] + mov r0, #0x1 + lsl r2, r2, #0x2 + str r0, [sp, #0x10] + ldr r0, [r6, r2] + add r3, r1, #0x0 + str r0, [sp, #0x14] + add r0, r2, #0x4 + ldr r0, [r6, r0] + str r0, [sp, #0x18] + add r0, r2, #0x0 + add r0, #0x8 + ldr r0, [r6, r0] + str r0, [sp, #0x1c] + add r0, r2, #0x0 + add r0, #0xc + ldr r0, [r6, r0] + add r2, #0x30 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r6, r2 + add r2, r1, #0x0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + mov r1, #0x1 + mov r3, #0xad + str r1, [sp, #0x0] + sub r0, r1, #0x2 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #0x2 + ldr r2, [r6, r3] + str r2, [sp, #0x14] + add r2, r3, #0x4 + ldr r2, [r6, r2] + str r2, [sp, #0x18] + add r2, r3, #0x0 + add r2, #0x8 + ldr r2, [r6, r2] + str r2, [sp, #0x1c] + add r2, r3, #0x0 + add r2, #0xc + ldr r2, [r6, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r6, r3 + add r2, r1, #0x0 + add r3, r1, #0x0 + bl FUN_02008AA4 + mov r0, #0x62 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + mov r1, #0x2 + str r0, [sp, #0x2c] + mov r0, #0xb9 + lsl r0, r0, #0x2 + add r0, r6, r0 + str r0, [sp, #0x30] + mov r0, #0x6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #0x5 + mov r7, #0x0 + str r1, [sp, #0x34] + str r7, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r7, [r0, #0x20] + mov r0, #0x1 + str r0, [sp, #0x50] + str r0, [sp, #0x54] + mov r0, #0x12 + ldr r4, _02078528 ; =0x020FA1D4 + str r0, [sp, #0x58] + add r5, r6, #0x0 +_02078418: + ldr r0, [r4, #0x0] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldr r0, [r4, #0x4] + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0xcb + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r0, r1, #0x0 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200BC + mov r0, #0xcb + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r1, [r4, #0x8] + bl FUN_02020130 + mov r0, #0xcb + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r1, [r4, #0xc] + bl FUN_02020310 + add r7, r7, #0x1 + add r4, #0x10 + add r5, r5, #0x4 + cmp r7, #0x9 + blt _02078418 + mov r0, #0xcf + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + mov r1, #0x0 + bl FUN_020200A0 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r7, _02078528 ; =0x020FA1D4 + mov r5, #0x0 + add r4, r6, #0x0 +_0207847A: + ldr r0, _0207852C ; =FUN_02078328 + mov r1, #0x10 + mov r2, #0x5 + mov r3, #0x12 + bl FUN_020061E8 + mov r1, #0xe7 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0201B6C8 + mov r1, #0xd2 + lsl r1, r1, #0x2 + ldr r1, [r6, r1] + str r1, [r0, #0x0] + mov r1, #0xcb + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r4, r4, #0x4 + str r1, [r0, #0x4] + ldr r1, [r7, #0x0] + add r7, #0x10 + lsl r1, r1, #0xc + str r1, [r0, #0x8] + str r5, [r0, #0xc] + add r5, r5, #0x1 + cmp r5, #0x7 + blt _0207847A + ldr r2, [r6, #0xc] + mov r7, #0x0 + cmp r2, #0x0 + ble _020784FA + mov r5, #0x50 + add r4, r6, #0x0 +_020784C2: + lsl r0, r5, #0xc + str r0, [sp, #0x34] + mov r0, #0x27 + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0xd9 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r1, #0x0 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200BC + mov r0, #0xd9 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x2b + bl FUN_02020130 + ldr r2, [r6, #0xc] + add r7, r7, #0x1 + add r5, #0xc + add r4, r4, #0x4 + cmp r7, r2 + blt _020784C2 +_020784FA: + mov r1, #0x56 + lsl r1, r1, #0x2 + mov r0, #0xd9 + lsl r0, r0, #0x2 + ldrh r1, [r6, r1] + add r0, r6, r0 + bl FUN_02079710 + add r0, r6, #0x0 + add r1, sp, #0x2c + bl FUN_02078530 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4-r7, pc} + nop +_02078528: .word 0x020FA1D4 +_0207852C: .word FUN_02078328 + + thumb_func_start FUN_02078530 +FUN_02078530: ; 0x02078530 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r0, #0x6 + add r5, r1, #0x0 + lsl r0, r0, #0xe + str r0, [r5, #0x8] + mov r0, #0x2 + lsl r0, r0, #0xe + str r0, [r5, #0xc] + add r0, r5, #0x0 + bl FUN_0201FE94 + mov r1, #0xe5 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0x1 + bl FUN_020200BC + ldr r0, [r4, #0x0] + cmp r0, #0x7 + bhi _02078626 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02078568: ; jump table (using 16-bit offset) + .short _02078578 - _02078568 - 2; case 0 + .short _020785E0 - _02078568 - 2; case 1 + .short _020785D2 - _02078568 - 2; case 2 + .short _0207859A - _02078568 - 2; case 3 + .short _020785C4 - _02078568 - 2; case 4 + .short _020785B6 - _02078568 - 2; case 5 + .short _020785A8 - _02078568 - 2; case 6 + .short _020785C4 - _02078568 - 2; case 7 +_02078578: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + bne _0207858C + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x30 + bl FUN_02020130 + pop {r3-r5, pc} +_0207858C: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x31 + bl FUN_02020130 + pop {r3-r5, pc} +_0207859A: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x33 + bl FUN_02020130 + pop {r3-r5, pc} +_020785A8: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x37 + bl FUN_02020130 + pop {r3-r5, pc} +_020785B6: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x36 + bl FUN_02020130 + pop {r3-r5, pc} +_020785C4: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x35 + bl FUN_02020130 + pop {r3-r5, pc} +_020785D2: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x2f + bl FUN_02020130 + pop {r3-r5, pc} +_020785E0: + mov r0, #0xe5 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x32 + bl FUN_02020130 + ldr r0, [r4, #0x10] + cmp r0, #0x2 + beq _02078626 + ldr r1, [r4, #0xc] + mov r0, #0xd + mul r0, r1 + add r0, #0x50 + lsl r0, r0, #0xc + str r0, [r5, #0x8] + mov r0, #0x1b + lsl r0, r0, #0xc + str r0, [r5, #0xc] + add r0, r5, #0x0 + bl FUN_0201FE94 + mov r1, #0xe6 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, #0x10] + cmp r0, #0x0 + ldr r0, [r4, r1] + bne _02078620 + mov r1, #0x2d + bl FUN_02020130 + pop {r3-r5, pc} +_02078620: + mov r1, #0x2e + bl FUN_02020130 +_02078626: + pop {r3-r5, pc} + + thumb_func_start FUN_02078628 +FUN_02078628: ; 0x02078628 + push {r4-r5, lr} + sub sp, #0xc + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0xc] + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r0, [r4, #0x4] + cmp r0, #0x6 + bhi _020786A6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207864A: ; jump table (using 16-bit offset) + .short _02078658 - _0207864A - 2; case 0 + .short _020786A6 - _0207864A - 2; case 1 + .short _0207866C - _0207864A - 2; case 2 + .short _020786A6 - _0207864A - 2; case 3 + .short _02078680 - _0207864A - 2; case 4 + .short _020786A6 - _0207864A - 2; case 5 + .short _02078694 - _0207864A - 2; case 6 +_02078658: + mov r0, #0x1 + ldr r1, [r4, #0x8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + add r1, sp, #0x0 + bl FUN_02020044 + b _020786A6 +_0207866C: + mov r0, #0x3 + ldr r1, [r4, #0x8] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + add r1, sp, #0x0 + bl FUN_02020044 + b _020786A6 +_02078680: + mov r0, #0x2 + ldr r1, [r4, #0x8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + add r1, sp, #0x0 + bl FUN_02020044 + b _020786A6 +_02078694: + ldr r0, [r4, #0x8] + add r1, sp, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + bl FUN_02020044 + add r0, r5, #0x0 + bl FUN_0200621C +_020786A6: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_020786B0 +FUN_020786B0: ; 0x020786B0 + push {r3-r7, lr} + sub sp, #0x28 + str r1, [sp, #0x14] + ldr r1, [sp, #0x40] + add r5, r2, #0x0 + str r1, [sp, #0x40] + ldr r1, [sp, #0x48] + mov r2, #0x1 + str r1, [sp, #0x48] + ldr r1, [sp, #0x40] + str r0, [sp, #0x10] + ldr r6, [r1, #0x0] + add r7, r3, #0x0 + add r1, r6, #0x0 + eor r1, r2 + str r1, [sp, #0x18] + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x44] + cmp r1, #0x4 + bls _020786DA + b _0207887E +_020786DA: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020786E6: ; jump table (using 16-bit offset) + .short _020786F0 - _020786E6 - 2; case 0 + .short _0207873C - _020786E6 - 2; case 1 + .short _02078762 - _020786E6 - 2; case 2 + .short _020787FC - _020786E6 - 2; case 3 + .short _0207887E - _020786E6 - 2; case 4 +_020786F0: + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0xe + lsl r0, r0, #0x6 + str r0, [sp, #0x4] + str r2, [sp, #0x8] + mov r0, #0x12 + str r0, [sp, #0xc] + ldr r2, [sp, #0x10] + mov r0, #0x1f + add r1, r7, #0x6 + add r3, r6, #0x0 + bl FUN_020068C8 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_02078BA8 + ldr r0, _02078884 ; =0x020F9D2C + lsl r2, r6, #0x4 + ldrb r1, [r0, r7] + ldr r0, [sp, #0x4c] + ldr r3, _02078888 ; =0x000E0F00 + str r0, [sp, #0x0] + ldr r0, [sp, #0x14] + add r0, r0, r2 + lsl r2, r1, #0x4 + orr r1, r2 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r2, r7, #0x0 + bl FUN_0207974C + ldr r0, [r5, #0x0] + add sp, #0x28 + add r0, r0, #0x1 + str r0, [r5, #0x0] + pop {r3-r7, pc} +_0207873C: + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + mov r2, #0x0 + mov r3, #0xee + bl FUN_020179E0 + mov r2, #0x3 + lsl r1, r6, #0x18 + add r3, r2, #0x0 + ldr r0, [sp, #0x10] + lsr r1, r1, #0x18 + sub r3, #0x53 + bl FUN_020179E0 + ldr r0, [r5, #0x0] + add sp, #0x28 + add r0, r0, #0x1 + str r0, [r5, #0x0] + pop {r3-r7, pc} +_02078762: + mov r1, #0xc + add r0, r6, #0x0 + mul r0, r1 + ldr r2, [r4, r0] + str r0, [sp, #0x1c] + sub r2, #0x18 + str r2, [r4, r0] + ldr r0, [r4, r0] + sub r1, #0xd + cmp r0, r1 + bge _020787BA + ldr r0, _0207888C ; =FUN_02078628 + mov r1, #0x10 + mov r2, #0x0 + mov r3, #0x12 + bl FUN_020061E8 + bl FUN_0201B6C8 + add r7, r0, #0x0 + ldr r0, [sp, #0x48] + ldr r0, [r0, #0x1c] + str r0, [r7, #0x0] + mov r0, #0x0 + str r0, [r7, #0x4] + ldr r0, [sp, #0x48] + ldr r0, [r0, #0x1c] + bl FUN_0202011C + ldr r0, [r0, #0x0] + str r0, [r7, #0x8] + ldr r0, [sp, #0x48] + ldr r0, [r0, #0x1c] + bl FUN_0202011C + ldr r0, [r0, #0x4] + mov r1, #0xa + str r0, [r7, #0xc] + ldr r0, [sp, #0x1c] + mvn r1, r1 + str r1, [r4, r0] + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] +_020787BA: + ldr r0, [sp, #0x18] + mov r1, #0xc + add r7, r0, #0x0 + add r5, r4, #0x4 + mul r7, r1 + ldr r0, [r5, r7] + sub r0, #0xa + str r0, [r5, r7] + add r0, r1, #0x0 + ldr r2, [r5, r7] + sub r0, #0xd0 + cmp r2, r0 + bge _020787D8 + sub r1, #0xd0 + str r1, [r5, r7] +_020787D8: + ldr r3, [sp, #0x1c] + lsl r1, r6, #0x18 + ldr r0, [sp, #0x10] + ldr r3, [r4, r3] + lsr r1, r1, #0x18 + mov r2, #0x0 + bl FUN_020179E0 + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x10] + lsl r1, r1, #0x18 + ldr r3, [r5, r7] + lsr r1, r1, #0x18 + mov r2, #0x3 + bl FUN_020179E0 + add sp, #0x28 + pop {r3-r7, pc} +_020787FC: + ldr r1, [sp, #0x18] + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + str r2, [sp, #0x20] + add r7, r4, #0x4 + ldr r2, [r7, r2] + ldr r1, [sp, #0x20] + sub r2, #0xa + str r2, [r7, r1] + ldr r2, [r7, r1] + add r1, r0, #0x0 + sub r1, #0xd0 + cmp r2, r1 + bge _02078820 + ldr r1, [sp, #0x20] + sub r0, #0xd0 + str r0, [r7, r1] +_02078820: + mov r0, #0xc + mul r0, r6 + str r0, [sp, #0x24] + ldr r3, [sp, #0x24] + lsl r1, r6, #0x18 + ldr r0, [sp, #0x10] + ldr r3, [r4, r3] + lsr r1, r1, #0x18 + mov r2, #0x0 + bl FUN_020179E0 + ldr r1, [sp, #0x18] + ldr r3, [sp, #0x20] + lsl r1, r1, #0x18 + ldr r0, [sp, #0x10] + ldr r3, [r7, r3] + lsr r1, r1, #0x18 + mov r2, #0x3 + bl FUN_020179E0 + ldr r0, [sp, #0x24] + mov r1, #0xa + ldr r0, [r4, r0] + mvn r1, r1 + cmp r0, r1 + bne _0207887E + ldr r0, [sp, #0x20] + sub r1, #0xb9 + ldr r0, [r7, r0] + cmp r0, r1 + bne _0207887E + ldr r0, [r5, #0x0] + add r2, r4, #0x0 + add r0, r0, #0x1 + str r0, [r5, #0x0] + ldr r0, [sp, #0x40] + ldr r1, [r0, #0x0] + mov r0, #0x1 + eor r1, r0 + ldr r0, [sp, #0x40] + str r1, [r0, #0x0] + ldr r0, [sp, #0x10] + bl FUN_02078B88 + ldr r0, _02078890 ; =0x0000069B + bl FUN_020054C8 +_0207887E: + add sp, #0x28 + pop {r3-r7, pc} + nop +_02078884: .word 0x020F9D2C +_02078888: .word 0x000E0F00 +_0207888C: .word FUN_02078628 +_02078890: .word 0x0000069B + + thumb_func_start FUN_02078894 +FUN_02078894: ; 0x02078894 + push {r4-r5, lr} + sub sp, #0xc + add r4, r2, #0x0 + mov r2, #0x1 + mov r1, #0x0 + lsl r2, r2, #0x8 + mov r3, #0xa + add r5, r0, #0x0 + bl FUN_0200D0BC + mov r3, #0x0 + str r3, [sp, #0x0] + str r3, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + str r3, [sp, #0x8] + bl FUN_0201BD84 + add r0, r5, #0x0 + bl FUN_020191D0 + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_020788C4 +FUN_020788C4: ; 0x020788C4 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r6, r2, #0x0 + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r0, #0x0 + mov r4, #0x10 + bl FUN_02002E14 + cmp r0, #0x82 + ble _020788DE + mov r4, #0x0 +_020788DE: + add r0, r5, #0x0 + mov r1, #0x1 + bl FUN_02019620 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, _02078908 ; =0x000E0F01 + str r1, [sp, #0x4] + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r2, r6, #0x0 + add r3, r4, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r5, #0x0 + bl FUN_020191D0 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02078908: .word 0x000E0F01 + + thumb_func_start FUN_0207890C +FUN_0207890C: ; 0x0207890C + push {r4-r7, lr} + sub sp, #0x14 + add r6, r1, #0x0 + mov r1, #0x1 + add r5, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1a + str r0, [sp, #0x4] + mov r0, #0xc + str r0, [sp, #0x8] + str r1, [sp, #0xc] + add r0, #0xf4 + str r0, [sp, #0x10] + mov r0, #0x16 + lsl r0, r0, #0x4 + mov r1, #0xee + lsl r1, r1, #0x2 + ldr r0, [r5, r0] + add r1, r5, r1 + mov r2, #0x0 + mov r3, #0x2 + bl FUN_02019064 + mov r2, #0x1 + mov r1, #0xf2 + lsl r1, r1, #0x2 + str r2, [sp, #0x0] + mov r0, #0x1a + str r0, [sp, #0x4] + mov r0, #0xc + str r0, [sp, #0x8] + mov r0, #0x8e + str r2, [sp, #0xc] + lsl r0, r0, #0x2 + str r0, [sp, #0x10] + sub r0, #0xd8 + ldr r0, [r5, r0] + add r1, r5, r1 + mov r3, #0x2 + bl FUN_02019064 + ldr r0, [r5, #0x0] + cmp r0, #0x4 + bne _020789AE + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0xe + lsl r0, r0, #0x6 + str r0, [sp, #0x4] + mov r3, #0x1 + mov r2, #0x16 + str r3, [sp, #0x8] + mov r0, #0x12 + str r0, [sp, #0xc] + lsl r2, r2, #0x4 + ldr r2, [r5, r2] + mov r0, #0x1f + mov r1, #0x9 + bl FUN_020068C8 + mov r0, #0x46 + mov r1, #0x4 + lsl r0, r0, #0x4 + str r1, [r5, r0] + add r0, r5, #0x0 + add r0, #0x3a + bl FUN_0207916C + mov r0, #0x4b + lsl r0, r0, #0x4 + ldr r1, [r5, r0] + sub r0, #0xe8 + ldr r1, [r1, #0x14] + ldr r3, _02078B6C ; =0x000E0F00 + str r1, [sp, #0x0] + ldr r1, _02078B70 ; =0x00000A0A + add r0, r5, r0 + mov r2, #0x4 + bl FUN_0207974C + b _020789D8 +_020789AE: + mov r0, #0x46 + mov r1, #0x0 + lsl r0, r0, #0x4 + str r1, [r5, r0] + add r0, r5, #0x0 + add r0, #0x3a + bl FUN_0207916C + mov r1, #0x4b + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + ldr r3, _02078B6C ; =0x000E0F00 + ldr r0, [r0, #0x14] + mov r2, #0x0 + str r0, [sp, #0x0] + add r0, r1, #0x0 + sub r0, #0xe8 + add r0, r5, r0 + sub r1, #0xac + bl FUN_0207974C +_020789D8: + mov r2, #0x2 + str r2, [sp, #0x0] + mov r3, #0x16 + str r3, [sp, #0x4] + mov r1, #0x37 + str r2, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + lsl r1, r1, #0x4 + str r1, [sp, #0x10] + lsl r0, r3, #0x4 + add r1, #0x68 + ldr r0, [r5, r0] + add r1, r5, r1 + mov r3, #0x7 + bl FUN_02019064 + ldr r1, [r5, #0xc] + mov r0, #0xc + add r2, r1, #0x0 + mul r2, r0 + asr r0, r2, #0x2 + lsr r0, r0, #0x1d + add r0, r2, r0 + asr r0, r0, #0x3 + add r4, r0, #0x1 + mov r0, #0x3 + str r0, [sp, #0x0] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + mov r2, #0x2 + mov r1, #0xe7 + str r2, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + lsl r1, r1, #0x2 + mov r0, #0x16 + str r1, [sp, #0x10] + lsl r0, r0, #0x4 + add r1, #0x4c + ldr r0, [r5, r0] + add r1, r5, r1 + mov r3, #0xa + bl FUN_02019064 + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1 + bl FUN_02019620 + mov r0, #0x3 + str r0, [sp, #0x0] + mov r0, #0x7 + str r0, [sp, #0x4] + mov r2, #0x2 + mov r1, #0xf + add r4, #0x9 + lsl r3, r4, #0x18 + str r2, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + lsl r1, r1, #0x6 + mov r0, #0x16 + str r1, [sp, #0x10] + lsl r0, r0, #0x4 + add r1, #0x78 + ldr r0, [r5, r0] + add r1, r5, r1 + lsr r3, r3, #0x18 + bl FUN_02019064 + ldr r0, _02078B74 ; =0x00000438 + mov r1, #0x1 + add r0, r5, r0 + bl FUN_02019620 + ldr r1, [r5, #0x0] + cmp r1, #0x5 + bne _02078A90 + mov r2, #0x61 + ldr r0, _02078B74 ; =0x00000438 + lsl r2, r2, #0x2 + ldr r2, [r5, r2] + add r0, r5, r0 + bl FUN_020788C4 + ldr r0, _02078B74 ; =0x00000438 + add r0, r5, r0 + bl FUN_020191D0 +_02078A90: + mov r0, #0x13 + str r0, [sp, #0x0] + mov r0, #0x1b + str r0, [sp, #0x4] + mov r2, #0x4 + ldr r1, _02078B78 ; =0x00000448 + str r2, [sp, #0x8] + mov r0, #0xc + str r0, [sp, #0xc] + mov r0, #0x84 + str r0, [sp, #0x10] + add r0, #0xdc + ldr r0, [r5, r0] + add r1, r5, r1 + mov r3, #0x2 + bl FUN_02019064 + ldr r0, _02078B78 ; =0x00000448 + mov r1, #0xf + add r0, r5, r0 + bl FUN_02019620 + mov r2, #0x5e + ldr r0, _02078B78 ; =0x00000448 + lsl r2, r2, #0x2 + ldr r1, [r5, #0x0] + ldr r2, [r5, r2] + add r0, r5, r0 + bl FUN_02078894 + add r0, r6, #0x0 + bl FUN_0200628C + mov r1, #0x46 + lsl r1, r1, #0x2 + ldrh r2, [r5, r1] + ldr r0, _02078B7C ; =0x0000FFFF + cmp r2, r0 + beq _02078B06 + add r0, r5, #0x0 + add r0, #0xd8 + add r1, r5, r1 + bl StringCopy + mov r0, #0xc + str r0, [sp, #0x0] + mov r2, #0x0 + add r1, r5, #0x0 + ldr r0, _02078B80 ; =0x000E0F01 + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r5, r0 + add r1, #0xd8 + add r3, r2, #0x0 + str r2, [sp, #0xc] + bl FUN_02078E7C +_02078B06: + mov r0, #0xee + lsl r0, r0, #0x2 + mov r4, #0x0 + add r7, r5, r0 +_02078B0E: + add r0, r4, #0x4 + lsl r6, r0, #0x4 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + mov r0, #0x78 + str r0, [sp, #0x10] + add r0, #0xe8 + ldr r0, [r5, r0] + add r1, r7, r6 + mov r2, #0x2 + mov r3, #0x0 + bl FUN_02019064 + add r0, r7, r6 + mov r1, #0x0 + bl FUN_02019620 + add r4, r4, #0x1 + cmp r4, #0x3 + blt _02078B0E + mov r3, #0x0 + str r3, [sp, #0x0] + mov r0, #0x10 + str r0, [sp, #0x4] + mov r2, #0x2 + str r2, [sp, #0x8] + ldr r1, _02078B84 ; =0x00000428 + str r3, [sp, #0xc] + mov r0, #0x84 + str r0, [sp, #0x10] + add r0, #0xdc + ldr r0, [r5, r0] + add r1, r5, r1 + bl FUN_02019064 + ldr r0, _02078B84 ; =0x00000428 + mov r1, #0x0 + add r0, r5, r0 + bl FUN_02019620 + add sp, #0x14 + pop {r4-r7, pc} + .balign 4 +_02078B6C: .word 0x000E0F00 +_02078B70: .word 0x00000A0A +_02078B74: .word 0x00000438 +_02078B78: .word 0x00000448 +_02078B7C: .word 0x0000FFFF +_02078B80: .word 0x000E0F01 +_02078B84: .word 0x00000428 + + thumb_func_start FUN_02078B88 +FUN_02078B88: ; 0x02078B88 + push {r4, lr} + add r4, r1, #0x0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x1 + bl FUN_020178BC + mov r0, #0x1 + eor r0, r4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x2 + bl FUN_020178BC + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02078BA8 +FUN_02078BA8: ; 0x02078BA8 + push {r3-r4} + mov r3, #0xc + add r4, r1, #0x0 + mul r4, r3 + mov r2, #0xee + str r2, [r0, r4] + add r2, r3, #0x0 + sub r2, #0x5c + add r4, r0, r4 + str r2, [r4, #0x4] + mov r4, #0x1 + eor r1, r4 + mul r3, r1 + sub r4, #0xc + str r4, [r0, r3] + add r0, r0, r3 + str r2, [r0, #0x4] + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_02078BD0 +FUN_02078BD0: ; 0x02078BD0 + cmp r0, r2 + blt _02078BD6 + add r0, r1, #0x0 +_02078BD6: + cmp r0, r1 + bge _02078BDC + sub r0, r2, #0x1 +_02078BDC: + bx lr + .balign 4 + + thumb_func_start FUN_02078BE0 +FUN_02078BE0: ; 0x02078BE0 + push {r3-r7, lr} + add r5, r0, #0x0 + cmp r1, #0x0 + beq _02078C84 + ldr r3, [r5, #0x20] + mov r2, #0x1a + mul r2, r3 + ldr r0, [r5, #0x1c] + add r3, r5, r2 + lsl r2, r0, #0x1 + add r2, r3, r2 + ldrh r2, [r2, #0x3a] + lsl r6, r1, #0x3 + ldr r1, _02078C88 ; =0x020FA154 + str r2, [sp, #0x0] + ldr r1, [r1, r6] + mov r2, #0xd + add r0, r0, r1 + mov r1, #0x0 + bl FUN_02078BD0 + add r4, r0, #0x0 + ldr r0, _02078C8C ; =0x020FA158 + ldr r1, [r5, #0x20] + ldr r0, [r0, r6] + mov r2, #0x6 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02078BD0 + add r7, r0, #0x0 + ldr r0, _02078C88 ; =0x020FA154 + add r6, r0, r6 + b _02078C62 +_02078C24: + ldr r1, [r5, #0x28] + cmp r1, #0x0 + bne _02078C46 + ldr r1, _02078C90 ; =0x0000D004 + cmp r0, r1 + bne _02078C46 + ldr r0, [r6, #0x4] + cmp r0, #0x0 + beq _02078C46 + ldr r0, [r5, #0x2c] + mov r1, #0x0 + add r0, r4, r0 + mov r2, #0xd + bl FUN_02078BD0 + add r4, r0, #0x0 + b _02078C62 +_02078C46: + ldr r0, [r6, #0x0] + mov r1, #0x0 + add r0, r4, r0 + mov r2, #0xd + bl FUN_02078BD0 + add r4, r0, #0x0 + ldr r0, [r6, #0x4] + mov r1, #0x0 + add r0, r7, r0 + mov r2, #0x6 + bl FUN_02078BD0 + add r7, r0, #0x0 +_02078C62: + mov r0, #0x1a + mul r0, r7 + lsl r1, r4, #0x1 + add r0, r5, r0 + add r0, r1, r0 + ldrh r0, [r0, #0x3a] + ldr r1, _02078C90 ; =0x0000D004 + cmp r0, r1 + beq _02078C24 + ldr r1, [sp, #0x0] + cmp r1, r0 + bne _02078C80 + ldr r1, _02078C94 ; =0x0000E001 + cmp r0, r1 + bhi _02078C24 +_02078C80: + str r4, [r5, #0x1c] + str r7, [r5, #0x20] +_02078C84: + pop {r3-r7, pc} + nop +_02078C88: .word 0x020FA154 +_02078C8C: .word 0x020FA158 +_02078C90: .word 0x0000D004 +_02078C94: .word 0x0000E001 + + thumb_func_start FUN_02078C98 +FUN_02078C98: ; 0x02078C98 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _02078D70 ; =0x021C48B8 + mov r4, #0x0 + ldr r1, [r0, #0x4c] + mov r0, #0x40 + add r6, r4, #0x0 + tst r0, r1 + beq _02078CC0 + ldr r0, _02078D74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r6, #0x1 + add r4, r4, #0x1 +_02078CC0: + ldr r0, _02078D70 ; =0x021C48B8 + ldr r1, [r0, #0x4c] + mov r0, #0x80 + tst r0, r1 + beq _02078CE0 + ldr r0, _02078D74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r6, #0x2 + add r4, r4, #0x1 +_02078CE0: + ldr r0, _02078D70 ; =0x021C48B8 + ldr r1, [r0, #0x4c] + mov r0, #0x20 + tst r0, r1 + beq _02078D00 + ldr r0, _02078D74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r6, #0x3 + add r4, r4, #0x1 +_02078D00: + ldr r0, _02078D70 ; =0x021C48B8 + ldr r1, [r0, #0x4c] + mov r0, #0x10 + tst r0, r1 + beq _02078D20 + ldr r0, _02078D74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r6, #0x4 + add r4, r4, #0x1 +_02078D20: + ldr r0, _02078D70 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x8 + tst r0, r1 + beq _02078D46 + ldr r0, _02078D74 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r0, #0xc + str r0, [r5, #0x1c] + mov r0, #0x0 + str r0, [r5, #0x20] + add r4, r4, #0x1 +_02078D46: + add r0, r5, #0x0 + bl FUN_02079930 + ldr r1, _02078D78 ; =0x000005C8 + str r0, [r5, r1] + ldr r0, [r5, r1] + cmp r0, #0x1 + bne _02078D5A + mov r6, #0x0 + add r4, r4, #0x1 +_02078D5A: + cmp r4, #0x0 + beq _02078D6E + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02078BE0 + add r0, r5, #0x0 + add r1, r6, #0x0 + bl FUN_02078D7C +_02078D6E: + pop {r4-r6, pc} + .balign 4 +_02078D70: .word 0x021C48B8 +_02078D74: .word 0x000005DC +_02078D78: .word 0x000005C8 + + thumb_func_start FUN_02078D7C +FUN_02078D7C: ; 0x02078D7C + push {r3-r5, lr} + sub sp, #0x18 + add r5, r0, #0x0 + add r4, r1, #0x0 + ldr r1, [r5, #0x20] + cmp r1, #0x0 + beq _02078DC6 + ldr r0, [r5, #0x28] + cmp r0, #0x0 + bne _02078DA0 + cmp r0, r1 + beq _02078DA0 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x27 + bl FUN_02020130 +_02078DA0: + ldr r0, [r5, #0x1c] + lsl r0, r0, #0x4 + add r0, #0x1a + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, [r5, #0x20] + sub r1, r0, #0x1 + mov r0, #0x13 + mul r0, r1 + add r0, #0x5b + lsl r0, r0, #0xc + str r0, [sp, #0x10] + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, sp, #0xc + bl FUN_02020044 + b _02078E02 +_02078DC6: + mov r0, #0x1a + mul r0, r1 + add r1, r5, r0 + ldr r0, [r5, #0x1c] + lsl r0, r0, #0x1 + add r0, r1, r0 + ldrh r1, [r0, #0x3a] + ldr r0, _02078E2C ; =0x0000E002 + sub r1, r1, r0 + ldr r0, _02078E30 ; =0x020F9D6C + lsl r2, r1, #0x1 + ldrh r0, [r0, r2] + ldr r2, _02078E34 ; =0x020F9D38 + lsl r0, r0, #0xc + str r0, [sp, #0x0] + mov r0, #0x11 + lsl r0, r0, #0xe + str r0, [sp, #0x4] + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldrb r1, [r2, r1] + ldr r0, [r5, r0] + bl FUN_02020130 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, sp, #0x0 + bl FUN_02020044 +_02078E02: + mov r0, #0xb4 + strh r0, [r5, #0x38] + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02020208 + ldr r0, [r5, #0x1c] + lsl r1, r4, #0x3 + str r0, [r5, #0x24] + ldr r0, [r5, #0x20] + str r0, [r5, #0x28] + ldr r0, _02078E38 ; =0x020FA154 + ldr r0, [r0, r1] + cmp r0, #0x0 + beq _02078E26 + str r0, [r5, #0x2c] +_02078E26: + add sp, #0x18 + pop {r3-r5, pc} + nop +_02078E2C: .word 0x0000E002 +_02078E30: .word 0x020F9D6C +_02078E34: .word 0x020F9D38 +_02078E38: .word 0x020FA154 + + thumb_func_start FUN_02078E3C +FUN_02078E3C: ; 0x02078E3C + push {r3, lr} + ldrh r1, [r0, #0x0] + add r1, #0x14 + strh r1, [r0, #0x0] + ldrh r2, [r0, #0x0] + mov r1, #0x5a + lsl r1, r1, #0x2 + cmp r2, r1 + bls _02078E52 + mov r1, #0x0 + strh r1, [r0, #0x0] +_02078E52: + ldrh r0, [r0, #0x0] + bl FUN_0201B970 + mov r1, #0xa + mul r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + add r0, #0xf + lsl r1, r0, #0x5 + mov r0, #0x1d + orr r1, r0 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + add r0, sp, #0x0 + mov r1, #0x3a + mov r2, #0x2 + blx GX_LoadOBJPltt + pop {r3, pc} + + thumb_func_start FUN_02078E7C +FUN_02078E7C: ; 0x02078E7C + push {r4-r7, lr} + sub sp, #0x3c + str r0, [sp, #0x18] + add r7, r1, #0x0 + mov r0, #0x2 + mov r1, #0x12 + str r2, [sp, #0x1c] + str r3, [sp, #0x20] + mov r4, #0x0 + bl FUN_020219F4 + str r0, [sp, #0x28] + ldrh r1, [r7, #0x0] + ldr r0, _02078F6C ; =0x0000FFFF + cmp r1, r0 + beq _02078F62 + ldr r0, [sp, #0x54] + ldr r6, [sp, #0x50] + str r0, [sp, #0x24] + ldr r0, [sp, #0x58] + str r0, [sp, #0x34] + ldr r0, [sp, #0x20] + add r0, r0, #0x2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x5c] + str r0, [sp, #0x30] +_02078EB4: + lsl r0, r4, #0x1 + ldrh r1, [r7, r0] + ldr r0, _02078F70 ; =0x00002FFF + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x2 + bhi _02078F00 + mov r0, #0xc + str r0, [sp, #0x0] + str r0, [sp, #0x4] + add r2, r4, #0x0 + ldr r0, [sp, #0x1c] + mul r2, r6 + add r0, r0, r2 + ldr r2, _02078F74 ; =0x0000D001 + lsl r0, r0, #0x10 + sub r1, r1, r2 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r2, r1, #0x8 + str r0, [sp, #0x8] + ldr r0, [sp, #0x2c] + lsr r1, r2, #0x1f + add r1, r2, r1 + str r0, [sp, #0xc] + mov r0, #0xc + asr r2, r1, #0x1 + ldr r1, [sp, #0x30] + str r0, [sp, #0x10] + str r0, [sp, #0x14] + add r1, r1, r2 + mov r2, #0x0 + ldr r0, [sp, #0x18] + add r3, r2, #0x0 + bl FUN_02019658 + b _02078F56 +_02078F00: + ldr r0, _02078F78 ; =0x0000D004 + cmp r1, r0 + bne _02078F0A + add r4, r4, #0x1 + b _02078F58 +_02078F0A: + add r0, sp, #0x38 + strh r1, [r0, #0x0] + ldr r1, _02078F6C ; =0x0000FFFF + strh r1, [r0, #0x2] + mov r0, #0x0 + add r1, sp, #0x38 + add r2, r0, #0x0 + bl FUN_02002DE0 + add r5, r0, #0x0 + ldr r0, [sp, #0x28] + add r1, sp, #0x38 + bl FUN_02021E28 + ldr r0, [sp, #0x20] + sub r3, r6, r5 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + lsr r5, r3, #0x1f + add r5, r3, r5 + asr r3, r5, #0x1 + str r0, [sp, #0x4] + ldr r0, [sp, #0x34] + mov r12, r3 + add r5, r4, #0x0 + str r0, [sp, #0x8] + mov r0, #0x0 + str r0, [sp, #0xc] + ldr r3, [sp, #0x1c] + mul r5, r6 + add r3, r3, r5 + mov r5, r12 + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x28] + mov r1, #0x0 + add r3, r5, r3 + bl FUN_0201BDE0 +_02078F56: + add r4, r4, #0x1 +_02078F58: + lsl r0, r4, #0x1 + ldrh r1, [r7, r0] + ldr r0, _02078F6C ; =0x0000FFFF + cmp r1, r0 + bne _02078EB4 +_02078F62: + ldr r0, [sp, #0x28] + bl FUN_02021A20 + add sp, #0x3c + pop {r4-r7, pc} + .balign 4 +_02078F6C: .word 0x0000FFFF +_02078F70: .word 0x00002FFF +_02078F74: .word 0x0000D001 +_02078F78: .word 0x0000D004 + + thumb_func_start FUN_02078F7C +FUN_02078F7C: ; 0x02078F7C + push {r4-r6, lr} + sub sp, #0x10 + mov r5, #0x0 + add r6, r1, #0x0 + str r5, [sp, #0x0] + mov r1, #0xff + str r1, [sp, #0x4] + str r3, [sp, #0x8] + add r1, r2, #0x0 + add r2, r6, #0x0 + add r3, r5, #0x0 + add r4, r0, #0x0 + str r5, [sp, #0xc] + bl FUN_0201BDE0 + ldr r0, [r4, #0xc] + add sp, #0x10 + pop {r4-r6, pc} + + thumb_func_start FUN_02078FA0 +FUN_02078FA0: ; 0x02078FA0 + push {r3-r7, lr} + sub sp, #0x38 + add r6, r0, #0x0 + str r1, [sp, #0x8] + add r0, #0x30 + mov r1, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02019620 + add r0, r6, #0x0 + ldr r3, _0207906C ; =0x000D0E0F + add r0, #0x30 + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_02078F7C + mov r1, #0x2 + lsl r1, r1, #0xa + blx DC_FlushRange + add r7, r6, #0x0 + mov r4, #0x0 + add r7, #0x30 +_02078FD0: + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r7, #0x0 + mov r1, #0x4 + mov r2, #0x2 + lsl r3, r4, #0x2 + str r5, [sp, #0x4] + bl FUN_02011B20 + mov r1, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x8 + blx DC_FlushRange + ldr r1, _02079070 ; =0x020F9D28 + mov r2, #0x1 + ldrb r1, [r1, r4] + add r0, r5, #0x0 + lsl r2, r2, #0x8 + lsl r1, r1, #0x5 + blx GXS_LoadOBJ + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x4 + blo _02078FD0 + mov r0, #0x15 + mov r1, #0x12 + bl FUN_020219F4 + add r4, r0, #0x0 + mov r5, #0x0 +_02079012: + ldr r0, [sp, #0x8] + lsl r1, r5, #0x1 + ldrh r1, [r0, r1] + add r0, sp, #0xc + lsl r7, r5, #0x4 + strh r1, [r0, #0x0] + ldr r1, _02079074 ; =0x0000FFFF + strh r1, [r0, #0x2] + add r0, r6, r7 + mov r1, #0x0 + bl FUN_02019620 + add r0, r4, #0x0 + add r1, sp, #0xc + bl FUN_02021E28 + ldr r3, _0207906C ; =0x000D0E0F + add r0, r6, r7 + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_02078F7C + mov r1, #0x80 + add r7, r0, #0x0 + blx DC_FlushRange + ldr r1, _02079078 ; =0x020F9D40 + lsl r2, r5, #0x2 + ldr r1, [r1, r2] + add r0, r7, #0x0 + lsl r1, r1, #0x5 + mov r2, #0x80 + blx GXS_LoadOBJ + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x3 + blo _02079012 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x38 + pop {r3-r7, pc} + nop +_0207906C: .word 0x000D0E0F +_02079070: .word 0x020F9D28 +_02079074: .word 0x0000FFFF +_02079078: .word 0x020F9D40 + + thumb_func_start FUN_0207907C +FUN_0207907C: ; 0x0207907C + push {r3-r5, lr} + cmp r2, #0x0 + bne _02079086 + ldr r1, _02079158 ; =0x0000D003 + b _0207908C +_02079086: + sub r2, r2, #0x1 + lsl r2, r2, #0x1 + ldrh r1, [r1, r2] +_0207908C: + ldr r4, _0207915C ; =0x0000E003 + cmp r1, r4 + bgt _020790BC + bge _020790E2 + ldr r2, _02079160 ; =0x0000D004 + cmp r1, r2 + bgt _020790B4 + sub r2, r2, #0x3 + sub r2, r1, r2 + bmi _020790E4 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_020790AC: ; jump table (using 16-bit offset) + .short _020790E2 - _020790AC - 2; case 0 + .short _020790E2 - _020790AC - 2; case 1 + .short _020790E2 - _020790AC - 2; case 2 + .short _020790E2 - _020790AC - 2; case 3 +_020790B4: + ldr r2, _02079164 ; =0x0000E002 + cmp r1, r2 + beq _020790E2 + b _020790E4 +_020790BC: + add r2, r4, #0x1 + cmp r1, r2 + bgt _020790C6 + beq _020790E2 + b _020790E4 +_020790C6: + add r2, r4, #0x2 + sub r2, r1, r2 + cmp r2, #0x3 + bhi _020790E4 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_020790DA: ; jump table (using 16-bit offset) + .short _020790E2 - _020790DA - 2; case 0 + .short _020790E2 - _020790DA - 2; case 1 + .short _020790E2 - _020790DA - 2; case 2 + .short _020790E2 - _020790DA - 2; case 3 +_020790E2: + mov r1, #0x1 +_020790E4: + mov r4, #0x0 + add r5, r3, #0x0 + mov r2, #0x1 +_020790EA: + add r4, r4, #0x1 + strh r2, [r5, #0x0] + add r5, r5, #0x2 + cmp r4, #0x3 + blt _020790EA + strh r1, [r3, #0x0] + cmp r1, #0x1 + beq _0207914A + ldr r5, _02079168 ; =0x020FA40E + mov r2, #0x0 +_020790FE: + ldrh r4, [r5, #0x0] + cmp r1, r4 + bne _02079120 + mov r4, #0x6 + ldr r5, _02079168 ; =0x020FA40E + mul r4, r2 + add r4, r5, r4 + mov r1, #0x0 + add r5, r3, #0x0 +_02079110: + ldrh r2, [r4, #0x0] + add r1, r1, #0x1 + add r4, r4, #0x2 + strh r2, [r5, #0x0] + add r5, r5, #0x2 + cmp r1, #0x3 + blt _02079110 + b _0207914A +_02079120: + ldrh r4, [r5, #0x4] + cmp r1, r4 + bne _02079142 + mov r4, #0x6 + ldr r5, _02079168 ; =0x020FA40E + mul r4, r2 + add r4, r5, r4 + mov r1, #0x0 + add r5, r3, #0x0 +_02079132: + ldrh r2, [r4, #0x0] + add r1, r1, #0x1 + add r4, r4, #0x2 + strh r2, [r5, #0x0] + add r5, r5, #0x2 + cmp r1, #0x3 + blt _02079132 + b _0207914A +_02079142: + add r2, r2, #0x1 + add r5, r5, #0x6 + cmp r2, #0x52 + blo _020790FE +_0207914A: + add r1, r3, #0x0 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + bl FUN_02078FA0 + pop {r3-r5, pc} + nop +_02079158: .word 0x0000D003 +_0207915C: .word 0x0000E003 +_02079160: .word 0x0000D004 +_02079164: .word 0x0000E002 +_02079168: .word 0x020FA40E + + thumb_func_start FUN_0207916C +FUN_0207916C: ; 0x0207916C + push {r4-r7} + mov r4, #0x0 + ldr r3, _020791B8 ; =0x02106058 + add r5, r4, #0x0 + add r6, r0, #0x0 + lsl r2, r1, #0x2 +_02079178: + ldr r7, [r3, r2] + add r4, r4, #0x1 + ldrh r7, [r7, r5] + add r5, r5, #0x2 + strh r7, [r6, #0x0] + add r6, r6, #0x2 + cmp r4, #0xd + blt _02079178 + mov r3, #0x14 + ldr r4, _020791BC ; =0x0210606C + mul r3, r1 + mov r2, #0x0 + add r3, r4, r3 + add r1, r2, #0x0 +_02079194: + add r6, r1, #0x0 + add r4, r1, #0x0 + add r5, r0, #0x0 +_0207919A: + ldr r7, [r3, #0x0] + add r6, r6, #0x1 + ldrh r7, [r7, r4] + add r4, r4, #0x2 + strh r7, [r5, #0x1a] + add r5, r5, #0x2 + cmp r6, #0xd + blt _0207919A + add r2, r2, #0x1 + add r3, r3, #0x4 + add r0, #0x1a + cmp r2, #0x5 + blt _02079194 + pop {r4-r7} + bx lr + .balign 4 +_020791B8: .word 0x02106058 +_020791BC: .word 0x0210606C + + thumb_func_start FUN_020791C0 +FUN_020791C0: ; 0x020791C0 + push {r4-r6, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r0, _0207952C ; =0x00002FFD + add r6, r2, #0x0 + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x1 + bhi _020791D6 + mov r1, #0x1 +_020791D6: + ldr r0, [r4, #0x0] + cmp r0, #0x4 + bne _020791EA + ldr r0, _02079530 ; =0x00001FFE + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, #0x3 + bhi _020791EA + mov r1, #0x1 +_020791EA: + ldr r0, _02079534 ; =0x0000E002 + cmp r1, r0 + bgt _02079208 + blt _020791F4 + b _0207931C +_020791F4: + ldr r3, _02079538 ; =0x0000D002 + cmp r1, r3 + bgt _02079206 + sub r0, r3, #0x1 + cmp r1, r0 + blt _02079206 + beq _0207922A + cmp r1, r3 + beq _0207927C +_02079206: + b _0207945C +_02079208: + add r0, r0, #0x1 + sub r0, r1, r0 + cmp r0, #0x5 + bls _02079212 + b _0207945C +_02079212: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207921E: ; jump table (using 16-bit offset) + .short _0207931C - _0207921E - 2; case 0 + .short _0207931C - _0207921E - 2; case 1 + .short _0207931C - _0207921E - 2; case 2 + .short _020792CA - _0207921E - 2; case 3 + .short _0207935E - _0207921E - 2; case 4 + .short _0207940E - _0207921E - 2; case 5 +_0207922A: + add r0, r4, #0x0 + add r0, #0xd8 + str r0, [sp, #0x0] + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r0, [r4, r0] + ldr r3, _0207953C ; =0x0000D001 + mov r1, #0x52 + str r0, [sp, #0x4] + mov r0, #0x2a + mov r2, #0x1 + bl FUN_020795FC + cmp r0, #0x0 + bne _0207924A + b _02079526 +_0207924A: + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_02019620 + mov r0, #0xc + str r0, [sp, #0x0] + mov r2, #0x0 + ldr r0, _02079540 ; =0x000E0F01 + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + add r4, #0xd8 + add r1, r4, #0x0 + add r3, r2, #0x0 + str r2, [sp, #0xc] + bl FUN_02078E7C + ldr r0, _02079544 ; =0x000005EB + bl FUN_020054C8 + b _02079526 +_0207927C: + add r0, r4, #0x0 + add r0, #0xd8 + str r0, [sp, #0x0] + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r0, [r4, r0] + mov r1, #0x52 + mov r2, #0x2 + str r0, [sp, #0x4] + mov r0, #0x48 + bl FUN_020795FC + cmp r0, #0x0 + beq _02079368 + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_02019620 + mov r0, #0xc + str r0, [sp, #0x0] + mov r2, #0x0 + ldr r0, _02079540 ; =0x000E0F01 + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + add r4, #0xd8 + add r1, r4, #0x0 + add r3, r2, #0x0 + str r2, [sp, #0xc] + bl FUN_02078E7C + ldr r0, _02079544 ; =0x000005EB + bl FUN_020054C8 + b _02079526 +_020792CA: + mov r3, #0x56 + lsl r3, r3, #0x2 + ldrh r3, [r4, r3] + add r2, r4, #0x0 + mov r0, #0x0 + mov r1, #0x52 + add r2, #0xd8 + bl FUN_02079590 + cmp r0, #0x0 + beq _02079368 + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_02019620 + mov r0, #0xc + str r0, [sp, #0x0] + mov r2, #0x0 + add r1, r4, #0x0 + ldr r0, _02079540 ; =0x000E0F01 + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + add r1, #0xd8 + add r3, r2, #0x0 + str r2, [sp, #0xc] + bl FUN_02078E7C + mov r0, #0x4a + lsl r0, r0, #0x4 + ldr r1, [r4, r0] + add r1, r1, #0x1 + str r1, [r4, r0] + ldr r0, _02079544 ; =0x000005EB + bl FUN_020054C8 + b _02079526 +_0207931C: + mov r2, #0x46 + lsl r2, r2, #0x4 + ldr r0, _02079534 ; =0x0000E002 + ldr r3, [r4, r2] + sub r5, r1, r0 + cmp r3, r5 + beq _02079368 + mov r1, #0x0 + sub r0, r2, #0x4 + str r1, [r4, r0] + str r5, [r4, r2] + add r0, r4, #0x0 + ldr r1, [r4, r2] + add r0, #0x3a + bl FUN_0207916C + mov r0, #0x49 + lsl r0, r0, #0x4 + add r2, r4, r0 + lsl r1, r5, #0x2 + ldr r0, [r2, r1] + add r0, r0, #0x1 + str r0, [r2, r1] + ldr r0, _02079548 ; =0x0000069E + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r1, r6, #0x0 + bl FUN_020200A0 + b _02079526 +_0207935E: + mov r1, #0x56 + lsl r1, r1, #0x2 + ldrh r0, [r4, r1] + cmp r0, #0x0 + bne _0207936A +_02079368: + b _02079526 +_0207936A: + sub r0, r0, #0x1 + lsl r0, r0, #0x1 + add r0, r4, r0 + ldr r2, _0207954C ; =0x0000FFFF + add r0, #0xd8 + strh r2, [r0, #0x0] + ldrh r0, [r4, r1] + sub r0, r0, #0x1 + strh r0, [r4, r1] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_02019620 + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r0, [r4, r0] + cmp r0, #0x0 + bne _0207939E + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_020191D0 + b _020793BC +_0207939E: + mov r0, #0xc + str r0, [sp, #0x0] + mov r2, #0x0 + ldr r0, _02079540 ; =0x000E0F01 + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r1, r4, #0x0 + add r0, r4, r0 + add r1, #0xd8 + add r3, r2, #0x0 + str r2, [sp, #0xc] + bl FUN_02078E7C +_020793BC: + ldr r0, _02079550 ; =0x000004C4 + mov r3, #0x5f + add r1, r4, r0 + lsl r3, r3, #0x2 + str r1, [sp, #0x0] + ldr r1, [r4, r3] + add r2, r3, #0x0 + str r1, [sp, #0x4] + sub r2, #0x24 + sub r0, #0xcc + add r1, r4, #0x0 + sub r3, #0x22 + ldrh r2, [r4, r2] + add r0, r4, r0 + add r1, #0xd8 + add r3, r4, r3 + bl FUN_0207907C + mov r1, #0x56 + lsl r1, r1, #0x2 + mov r0, #0xd9 + lsl r0, r0, #0x2 + ldrh r1, [r4, r1] + ldr r2, [r4, #0xc] + add r0, r4, r0 + bl FUN_02079710 + ldr r0, _02079554 ; =0x000004A4 + ldr r1, [r4, r0] + add r1, r1, #0x1 + str r1, [r4, r0] + ldr r0, _02079558 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r1, r6, #0x0 + bl FUN_020200A0 + b _02079526 +_0207940E: + ldr r0, _0207955C ; =0x000005C4 + ldr r0, [r4, r0] + bl FUN_020143D0 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r1, r6, #0x0 + bl FUN_020200A0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _02079454 + ldr r0, _02079560 ; =0x000005E2 + bl FUN_020054C8 + ldr r0, _02079564 ; =0x000004A8 + ldr r1, [r4, r0] + add r1, r1, #0x1 + str r1, [r4, r0] + mov r1, #0x0 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x12 + str r0, [sp, #0x8] + mov r0, #0x2 + add r2, r1, #0x0 + add r3, r1, #0x0 + bl FUN_0200E1D0 + add sp, #0x10 + mov r0, #0x3 + pop {r4-r6, pc} +_02079454: + ldr r0, _02079568 ; =0x0000045C + mov r1, #0x5 + str r1, [r4, r0] + b _02079526 +_0207945C: + mov r0, #0x46 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + cmp r0, #0x4 + bne _02079470 + cmp r1, #0x1 + bne _02079470 + add sp, #0x10 + mov r0, #0x2 + pop {r4-r6, pc} +_02079470: + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r2, [r4, r0] + ldr r0, [r4, #0xc] + cmp r2, r0 + beq _02079526 + lsl r0, r2, #0x1 + add r0, r4, r0 + add r0, #0xd8 + strh r1, [r0, #0x0] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + mov r1, #0x1 + bl FUN_02019620 + mov r0, #0xc + str r0, [sp, #0x0] + mov r2, #0x0 + add r1, r4, #0x0 + ldr r0, _02079540 ; =0x000E0F01 + str r2, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0xfa + lsl r0, r0, #0x2 + add r0, r4, r0 + add r1, #0xd8 + add r3, r2, #0x0 + str r2, [sp, #0xc] + bl FUN_02078E7C + mov r1, #0x56 + lsl r1, r1, #0x2 + ldrh r0, [r4, r1] + add r0, r0, #0x1 + strh r0, [r4, r1] + mov r0, #0xd9 + lsl r0, r0, #0x2 + ldrh r1, [r4, r1] + ldr r2, [r4, #0xc] + add r0, r4, r0 + bl FUN_02079710 + ldr r0, _02079544 ; =0x000005EB + bl FUN_020054C8 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200A0 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_02020398 + mov r3, #0x8 + ldr r0, _0207956C ; =0x04000050 + mov r1, #0x0 + mov r2, #0x7 + str r3, [sp, #0x0] + blx G2x_SetBlendAlpha_ + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x3c + bl FUN_02020130 + mov r0, #0x1 + str r0, [r4, #0x34] + ldr r0, _02079550 ; =0x000004C4 + mov r3, #0x5f + add r1, r4, r0 + lsl r3, r3, #0x2 + str r1, [sp, #0x0] + ldr r1, [r4, r3] + add r2, r3, #0x0 + str r1, [sp, #0x4] + sub r2, #0x24 + sub r0, #0xcc + add r1, r4, #0x0 + sub r3, #0x22 + ldrh r2, [r4, r2] + add r0, r4, r0 + add r1, #0xd8 + add r3, r4, r3 + bl FUN_0207907C +_02079526: + mov r0, #0x2 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0207952C: .word 0x00002FFD +_02079530: .word 0x00001FFE +_02079534: .word 0x0000E002 +_02079538: .word 0x0000D002 +_0207953C: .word 0x0000D001 +_02079540: .word 0x000E0F01 +_02079544: .word 0x000005EB +_02079548: .word 0x0000069E +_0207954C: .word 0x0000FFFF +_02079550: .word 0x000004C4 +_02079554: .word 0x000004A4 +_02079558: .word 0x000005DC +_0207955C: .word 0x000005C4 +_02079560: .word 0x000005E2 +_02079564: .word 0x000004A8 +_02079568: .word 0x0000045C +_0207956C: .word 0x04000050 + + thumb_func_start FUN_02079570 +FUN_02079570: ; 0x02079570 + push {r4-r6, lr} + add r5, r0, #0x0 + mov r4, #0x0 + mov r6, #0x3 +_02079578: + add r0, r1, #0x1 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02078BD0 + add r1, r0, #0x0 + lsl r0, r1, #0x1 + ldrh r0, [r5, r0] + cmp r0, #0x1 + beq _02079578 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02079590 +FUN_02079590: ; 0x02079590 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r0, r1, #0x0 + str r2, [sp, #0x0] + cmp r3, #0x0 + bne _020795A4 + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_020795A4: + sub r1, r3, #0x1 + lsl r1, r1, #0x1 + str r1, [sp, #0x4] + ldrh r3, [r2, r1] + cmp r4, r0 + bge _020795F2 + mov r1, #0x6 + ldr r2, _020795F8 ; =0x020FA40E + mul r1, r4 + add r5, r2, r1 + mov r7, #0x0 +_020795BA: + add r2, r7, #0x0 + add r6, r5, #0x0 +_020795BE: + ldrh r1, [r6, #0x0] + cmp r3, r1 + bne _020795E2 + cmp r3, #0x1 + beq _020795E2 + mov r0, #0x6 + ldr r1, _020795F8 ; =0x020FA40E + mul r0, r4 + add r0, r1, r0 + add r1, r2, #0x0 + bl FUN_02079570 + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + add sp, #0x8 + strh r0, [r2, r1] + mov r0, #0x1 + pop {r3-r7, pc} +_020795E2: + add r2, r2, #0x1 + add r6, r6, #0x2 + cmp r2, #0x3 + blt _020795BE + add r4, r4, #0x1 + add r5, r5, #0x6 + cmp r4, r0 + blt _020795BA +_020795F2: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020795F8: .word 0x020FA40E + + thumb_func_start FUN_020795FC +FUN_020795FC: ; 0x020795FC + push {r3-r7, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + ldr r1, [sp, #0x1c] + mov lr, r2 + mov r12, r3 + cmp r1, #0x0 + beq _02079618 + sub r1, r1, #0x1 + ldr r6, [sp, #0x18] + lsl r7, r1, #0x1 + ldrh r5, [r6, r7] + cmp r5, #0x1 + bne _0207961C +_02079618: + mov r0, #0x0 + pop {r3-r7, pc} +_0207961C: + add r2, r4, #0x0 + cmp r4, r0 + bge _0207964E + mov r1, #0x6 + ldr r3, _020796F4 ; =0x020FA40E + mul r1, r4 + add r3, r3, r1 +_0207962A: + ldrh r1, [r3, #0x0] + cmp r5, r1 + bne _02079646 + add r3, r2, #0x0 + mov r0, #0x6 + mul r3, r0 + mov r0, lr + ldr r2, _020796F4 ; =0x020FA40E + lsl r1, r0, #0x1 + add r0, r2, r3 + ldrh r0, [r1, r0] + strh r0, [r6, r7] + mov r0, #0x1 + pop {r3-r7, pc} +_02079646: + add r2, r2, #0x1 + add r3, r3, #0x6 + cmp r2, r0 + blt _0207962A +_0207964E: + cmp r4, r0 + bge _0207967E + mov r2, lr + ldr r1, _020796F4 ; =0x020FA40E + lsl r2, r2, #0x1 + add r1, r1, r2 + mov r2, #0x6 + mul r2, r4 + add r2, r1, r2 +_02079660: + ldrh r1, [r2, #0x0] + cmp r5, r1 + bne _02079676 + mov r0, #0x6 + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _020796F4 ; =0x020FA40E + ldrh r0, [r0, r1] + strh r0, [r6, r7] + mov r0, #0x1 + pop {r3-r7, pc} +_02079676: + add r4, r4, #0x1 + add r2, r2, #0x6 + cmp r4, r0 + blt _02079660 +_0207967E: + ldr r1, _020796F8 ; =0x0000D001 + mov r0, r12 + cmp r0, r1 + beq _02079698 + add r1, r1, #0x1 + mov r0, r12 + cmp r0, r1 + beq _020796B8 + ldr r1, _020796FC ; =0x0000E006 + mov r0, r12 + cmp r0, r1 + beq _020796D8 + b _020796F0 +_02079698: + ldr r1, _02079700 ; =0x020FA1A4 + mov r2, #0x0 +_0207969C: + ldrh r0, [r1, #0x0] + cmp r5, r0 + bne _020796AE + ldr r0, _02079704 ; =0x020FA1A6 + lsl r1, r2, #0x2 + ldrh r0, [r0, r1] + strh r0, [r6, r7] + mov r0, #0x1 + pop {r3-r7, pc} +_020796AE: + add r2, r2, #0x1 + add r1, r1, #0x4 + cmp r2, #0xc + blo _0207969C + b _020796F0 +_020796B8: + ldr r1, _02079708 ; =0x020FA17C + mov r2, #0x0 +_020796BC: + ldrh r0, [r1, #0x0] + cmp r5, r0 + bne _020796CE + ldr r0, _0207970C ; =0x020FA17E + lsl r1, r2, #0x2 + ldrh r0, [r0, r1] + strh r0, [r6, r7] + mov r0, #0x1 + pop {r3-r7, pc} +_020796CE: + add r2, r2, #0x1 + add r1, r1, #0x4 + cmp r2, #0xa + blo _020796BC + b _020796F0 +_020796D8: + cmp r5, #0x26 + bne _020796E4 + mov r0, #0x24 + strh r0, [r6, r7] + mov r0, #0x1 + pop {r3-r7, pc} +_020796E4: + cmp r5, #0x76 + bne _020796F0 + mov r0, #0x74 + strh r0, [r6, r7] + mov r0, #0x1 + pop {r3-r7, pc} +_020796F0: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_020796F4: .word 0x020FA40E +_020796F8: .word 0x0000D001 +_020796FC: .word 0x0000E006 +_02079700: .word 0x020FA1A4 +_02079704: .word 0x020FA1A6 +_02079708: .word 0x020FA17C +_0207970C: .word 0x020FA17E + + thumb_func_start FUN_02079710 +FUN_02079710: ; 0x02079710 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r2, #0x0 + mov r4, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + cmp r6, #0x0 + ble _02079734 + add r5, r0, #0x0 + mov r7, #0x2b +_02079724: + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + bl FUN_02020130 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r6 + blt _02079724 +_02079734: + ldr r0, [sp, #0x4] + cmp r0, r6 + beq _02079746 + lsl r1, r0, #0x2 + ldr r0, [sp, #0x0] + ldr r0, [r0, r1] + mov r1, #0x2c + bl FUN_02020130 +_02079746: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207974C +FUN_0207974C: ; 0x0207974C + push {r3-r7, lr} + sub sp, #0x18 + str r2, [sp, #0x10] + ldr r2, [sp, #0x30] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r5, r0, #0x0 + str r3, [sp, #0x14] + str r2, [sp, #0x30] + bl FUN_02019620 + ldr r1, _0207982C ; =0x020F9D30 + ldr r0, [sp, #0x10] + mov r7, #0x0 + ldrb r4, [r1, r0] + mov r6, #0x10 +_0207976C: + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x13 + lsl r2, r6, #0x10 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + mov r3, #0x0 + bl FUN_020196F4 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x13 + lsl r2, r6, #0x10 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + mov r3, #0x26 + bl FUN_020196F4 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x13 + lsl r2, r6, #0x10 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + mov r3, #0x4c + bl FUN_020196F4 + add r7, r7, #0x1 + add r6, #0x20 + cmp r7, #0x6 + blt _0207976C + mov r7, #0x0 + add r6, r7, #0x0 +_020797BA: + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x13 + lsl r2, r6, #0x10 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + mov r3, #0x13 + bl FUN_020196F4 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0x13 + lsl r2, r6, #0x10 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r1, r4, #0x0 + lsr r2, r2, #0x10 + mov r3, #0x39 + bl FUN_020196F4 + add r7, r7, #0x1 + add r6, #0x20 + cmp r7, #0x7 + blt _020797BA + ldr r0, [sp, #0x10] + mov r1, #0x14 + ldr r2, _02079830 ; =0x0210606C + mul r1, r0 + mov r7, #0x0 + mov r6, #0x4 + add r4, r2, r1 +_020797FC: + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, [sp, #0x14] + mov r2, #0x0 + str r0, [sp, #0x8] + ldr r0, [sp, #0x30] + add r3, r6, #0x0 + str r0, [sp, #0xc] + ldr r1, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02078E7C + add r7, r7, #0x1 + add r6, #0x13 + add r4, r4, #0x4 + cmp r7, #0x5 + blt _020797FC + add r0, r5, #0x0 + bl FUN_020191D0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_0207982C: .word 0x020F9D30 +_02079830: .word 0x0210606C + + thumb_func_start FUN_02079834 +FUN_02079834: ; 0x02079834 + push {r3-r7, lr} + sub sp, #0x8 + add r6, r1, #0x0 + str r0, [sp, #0x0] + mov r7, #0x0 + add r1, r0, #0x0 +_02079840: + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _02079876 + mov r0, #0x0 + ldr r4, _020798B8 ; =0x020FA1D4 + str r0, [sp, #0x4] + add r5, r6, #0x0 +_0207984E: + ldr r0, [r5, #0x0] + ldr r1, [r4, #0x8] + bl FUN_02020130 + ldr r0, [sp, #0x4] + add r4, #0x10 + add r0, r0, #0x1 + add r5, r5, #0x4 + str r0, [sp, #0x4] + cmp r0, #0x3 + blt _0207984E + ldr r1, _020798BC ; =0x020FA1DC + lsl r2, r7, #0x4 + lsl r0, r7, #0x2 + ldr r1, [r1, r2] + ldr r0, [r6, r0] + sub r1, r1, #0x3 + bl FUN_02020130 + b _0207987E +_02079876: + add r7, r7, #0x1 + add r1, r1, #0x4 + cmp r7, #0x3 + blt _02079840 +_0207987E: + ldr r4, [sp, #0x0] + ldr r5, _020798C0 ; =0x020FA224 + mov r7, #0x5 + add r4, #0x14 + add r6, #0x14 +_02079888: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02079898 + ldr r1, [r5, #0x8] + ldr r0, [r6, #0x0] + add r1, r1, #0x1 + bl FUN_02020130 +_02079898: + add r7, r7, #0x1 + add r4, r4, #0x4 + add r5, #0x10 + add r6, r6, #0x4 + cmp r7, #0x7 + blt _02079888 + mov r2, #0x0 + add r1, r2, #0x0 +_020798A8: + ldr r0, [sp, #0x0] + add r2, r2, #0x1 + stmia r0!, {r1} + str r0, [sp, #0x0] + cmp r2, #0x7 + blt _020798A8 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020798B8: .word 0x020FA1D4 +_020798BC: .word 0x020FA1DC +_020798C0: .word 0x020FA224 + + thumb_func_start FUN_020798C4 +FUN_020798C4: ; 0x020798C4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02020388 + cmp r0, #0x0 + bne _0207992E + mov r0, #0x56 + lsl r0, r0, #0x2 + ldrh r1, [r4, r0] + ldr r0, [r4, #0xc] + cmp r1, r0 + bne _020798F8 + mov r0, #0xc + str r0, [r4, #0x1c] + mov r0, #0x0 + str r0, [r4, #0x20] + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x27 + bl FUN_02020130 + b _02079904 +_020798F8: + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x27 + bl FUN_02020130 +_02079904: + ldr r0, [r4, #0x30] + cmp r0, #0x0 + bne _02079918 + mov r0, #0xd3 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + b _02079920 +_02079918: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02078D7C +_02079920: + mov r1, #0x0 + mov r0, #0xd3 + str r1, [r4, #0x34] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02020398 +_0207992E: + pop {r4, pc} + + thumb_func_start FUN_02079930 +FUN_02079930: ; 0x02079930 + push {r3-r7, lr} + str r0, [sp, #0x0] + mov r0, #0x0 + mov r12, r0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x4 + bne _02079944 + mov r0, #0x4 + mov r12, r0 +_02079944: + ldr r2, _020799E0 ; =0x021C48F8 + ldrh r0, [r2, #0x20] + cmp r0, #0x0 + beq _020799DA + ldrh r0, [r2, #0x1c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov lr, r0 + ldrh r0, [r2, #0x1e] + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + mov r0, r12 + cmp r0, #0x47 + bhs _020799DA + mov r0, #0x6 + mov r2, r12 + mul r0, r2 + ldr r2, _020799E4 ; =0x020FA264 + add r2, r2, r0 + add r3, r2, #0x0 +_0207996C: + ldrh r4, [r3, #0x2] + ldrb r0, [r2, #0x0] + ldrb r6, [r2, #0x1] + lsl r4, r4, #0x1e + lsr r4, r4, #0x1e + beq _02079982 + cmp r4, #0x1 + beq _02079988 + cmp r4, #0x2 + beq _0207998E + b _02079992 +_02079982: + mov r5, #0x1f + mov r1, #0x16 + b _02079992 +_02079988: + mov r5, #0x20 + mov r1, #0x16 + b _02079992 +_0207998E: + mov r5, #0x10 + mov r1, #0x13 +_02079992: + mov r4, lr + cmp r4, r0 + blo _020799CC + cmp r7, r6 + blo _020799CC + add r4, r0, r5 + mov r0, lr + cmp r0, r4 + bgt _020799CC + add r0, r6, r1 + cmp r7, r0 + bgt _020799CC + ldr r2, _020799E4 ; =0x020FA264 + mov r1, #0x6 + mov r0, r12 + mul r1, r0 + add r2, r2, r1 + ldrb r0, [r2, #0x4] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1b + ldr r0, [sp, #0x0] + str r1, [r0, #0x1c] + ldrb r0, [r2, #0x5] + lsl r0, r0, #0x1b + lsr r1, r0, #0x1b + ldr r0, [sp, #0x0] + str r1, [r0, #0x20] + mov r0, #0x1 + pop {r3-r7, pc} +_020799CC: + mov r0, r12 + add r0, r0, #0x1 + add r2, r2, #0x6 + add r3, r3, #0x6 + mov r12, r0 + cmp r0, #0x47 + blo _0207996C +_020799DA: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_020799E0: .word 0x021C48F8 +_020799E4: .word 0x020FA264 + + thumb_func_start FUN_020799E8 +FUN_020799E8: ; 0x020799E8 + lsl r1, r0, #0x1 + ldr r0, _020799F0 ; =0x020FA60C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_020799F0: .word 0x020FA60C + + thumb_func_start FUN_020799F4 +FUN_020799F4: ; 0x020799F4 + push {r3, lr} + add r2, r0, #0x0 + mul r2, r0 + add r0, r1, #0x0 + mul r0, r1 + add r0, r2, r0 + lsl r0, r0, #0x4 + bl FUN_0200019E + lsr r0, r0, #0x2 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02079A0C +FUN_02079A0C: ; 0x02079A0C + push {r4, lr} + add r4, r0, #0x0 + mul r0, r2 + blx _u32_div_f + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _02079A22 + cmp r4, #0x0 + beq _02079A22 + mov r0, #0x1 +_02079A22: + pop {r4, pc} + + thumb_func_start FUN_02079A24 +FUN_02079A24: ; 0x02079A24 + push {r4, lr} + add r4, r0, #0x0 + lsl r0, r1, #0x8 + lsl r4, r4, #0x8 + lsr r1, r0, #0x1 + cmp r4, r1 + bls _02079A36 + mov r0, #0x3 + pop {r4, pc} +_02079A36: + mov r1, #0x5 + blx _u32_div_f + cmp r4, r0 + bls _02079A44 + mov r0, #0x2 + pop {r4, pc} +_02079A44: + cmp r4, #0x0 + beq _02079A4C + mov r0, #0x1 + b _02079A4E +_02079A4C: + mov r0, #0x0 +_02079A4E: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} + + thumb_func_start FUN_02079A54 +FUN_02079A54: ; 0x02079A54 + push {r4, lr} + add r4, r2, #0x0 + cmp r0, r1 + bne _02079A60 + mov r0, #0x4 + pop {r4, pc} +_02079A60: + lsl r2, r4, #0x18 + lsr r2, r2, #0x18 + bl FUN_02079A0C + add r1, r4, #0x0 + bl FUN_02079A24 + pop {r4, pc} + + thumb_func_start FUN_02079A70 +FUN_02079A70: ; 0x02079A70 + push {lr} + sub sp, #0xc + cmp r0, #0x0 + bne _02079A90 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r2, #0x1 + str r2, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + add r1, r2, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} +_02079A90: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_02079AAC +FUN_02079AAC: ; 0x02079AAC + push {r4-r5} + ldr r3, _02079B5C ; =0x021C48B8 + mov r2, #0x0 + ldr r3, [r3, #0x4c] + mov r5, #0x40 + ldrsh r4, [r0, r2] + tst r5, r3 + beq _02079ADE + add r3, r4, #0x1 + strh r3, [r0, #0x0] + ldrsh r2, [r0, r2] + cmp r2, r1 + ble _02079ACA + mov r1, #0x1 + strh r1, [r0, #0x0] +_02079ACA: + mov r1, #0x0 + ldrsh r0, [r0, r1] + cmp r0, r4 + bne _02079AD8 + add r0, r1, #0x0 + pop {r4-r5} + bx lr +_02079AD8: + mov r0, #0x1 + pop {r4-r5} + bx lr +_02079ADE: + mov r5, #0x80 + tst r5, r3 + beq _02079B04 + sub r3, r4, #0x1 + strh r3, [r0, #0x0] + ldrsh r2, [r0, r2] + cmp r2, #0x0 + bgt _02079AF0 + strh r1, [r0, #0x0] +_02079AF0: + mov r1, #0x0 + ldrsh r0, [r0, r1] + cmp r0, r4 + bne _02079AFE + add r0, r1, #0x0 + pop {r4-r5} + bx lr +_02079AFE: + mov r0, #0x2 + pop {r4-r5} + bx lr +_02079B04: + mov r5, #0x20 + tst r5, r3 + beq _02079B2E + add r1, r4, #0x0 + sub r1, #0xa + strh r1, [r0, #0x0] + ldrsh r1, [r0, r2] + cmp r1, #0x0 + bgt _02079B1A + mov r1, #0x1 + strh r1, [r0, #0x0] +_02079B1A: + mov r1, #0x0 + ldrsh r0, [r0, r1] + cmp r0, r4 + bne _02079B28 + add r0, r1, #0x0 + pop {r4-r5} + bx lr +_02079B28: + mov r0, #0x2 + pop {r4-r5} + bx lr +_02079B2E: + mov r5, #0x10 + tst r3, r5 + beq _02079B56 + add r3, r4, #0x0 + add r3, #0xa + strh r3, [r0, #0x0] + ldrsh r2, [r0, r2] + cmp r2, r1 + ble _02079B42 + strh r1, [r0, #0x0] +_02079B42: + mov r1, #0x0 + ldrsh r0, [r0, r1] + cmp r0, r4 + bne _02079B50 + add r0, r1, #0x0 + pop {r4-r5} + bx lr +_02079B50: + mov r0, #0x1 + pop {r4-r5} + bx lr +_02079B56: + add r0, r2, #0x0 + pop {r4-r5} + bx lr + .balign 4 +_02079B5C: .word 0x021C48B8 + + thumb_func_start FUN_02079B60 +FUN_02079B60: ; 0x02079B60 + push {r4-r7, lr} + sub sp, #0x14 + add r7, r1, #0x0 + add r6, r0, #0x0 + ldr r1, [sp, #0x28] + add r0, r3, #0x0 + str r2, [sp, #0x4] + ldr r5, [sp, #0x2c] + ldr r4, [sp, #0x34] + bl LoadFromNARC_7 + add r1, r0, #0x0 + add r0, r7, #0x0 + bl FUN_020169D8 + add r7, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x28] + add r2, r7, #0x0 + bl FUN_02006774 + ldr r0, [sp, #0x30] + cmp r0, #0x0 + beq _02079B9A + cmp r0, #0x1 + beq _02079BC6 + cmp r0, #0x2 + beq _02079C10 + b _02079C36 +_02079B9A: + add r0, r7, #0x0 + add r1, sp, #0x10 + blx FUN_020B0088 + cmp r4, #0x0 + bne _02079BAE + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x10] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02079BAE: + add r0, sp, #0x18 + ldrh r0, [r0, #0x20] + lsl r1, r5, #0x18 + lsr r1, r1, #0x18 + str r0, [sp, #0x0] + ldr r2, [sp, #0x10] + add r0, r6, #0x0 + ldr r2, [r2, #0x14] + add r3, r4, #0x0 + bl FUN_02017E14 + b _02079C36 +_02079BC6: + add r0, r7, #0x0 + add r1, sp, #0xc + blx FUN_020B0180 + cmp r4, #0x0 + bne _02079BDA + ldr r0, [sp, #0xc] + ldr r0, [r0, #0x8] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02079BDA: + lsl r1, r5, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + bl FUN_0201886C + cmp r0, #0x0 + beq _02079BF8 + ldr r2, [sp, #0xc] + lsl r1, r5, #0x18 + add r0, r6, #0x0 + lsr r1, r1, #0x18 + add r2, #0xc + add r3, r4, #0x0 + bl FUN_02017DFC +_02079BF8: + add r0, sp, #0x18 + ldrh r0, [r0, #0x20] + lsl r1, r5, #0x18 + lsr r1, r1, #0x18 + str r0, [sp, #0x0] + ldr r2, [sp, #0xc] + add r0, r6, #0x0 + add r2, #0xc + add r3, r4, #0x0 + bl FUN_02017CE8 + b _02079C36 +_02079C10: + add r0, r7, #0x0 + add r1, sp, #0x8 + blx FUN_020B0138 + cmp r4, #0x0 + bne _02079C24 + ldr r0, [sp, #0x8] + ldr r0, [r0, #0x8] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 +_02079C24: + ldr r1, [sp, #0x8] + add r3, sp, #0x18 + lsl r0, r5, #0x18 + ldrh r3, [r3, #0x20] + ldr r1, [r1, #0xc] + lsr r0, r0, #0x18 + add r2, r4, #0x0 + bl FUN_02017FB4 +_02079C36: + add r0, r7, #0x0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_02079C40 +FUN_02079C40: ; 0x02079C40 + push {r3-r7, lr} + add r5, r2, #0x0 + add r6, r0, #0x0 + add r0, r1, #0x0 + add r1, r5, #0x0 + add r7, r3, #0x0 + bl LoadFromNARC_7 + add r1, r0, #0x0 + ldr r0, [sp, #0x18] + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02006774 + add r0, r4, #0x0 + add r1, r7, #0x0 + blx FUN_020B0180 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02079C70 +FUN_02079C70: ; 0x02079C70 + push {r3, lr} + bl FUN_020462AC + bl FUN_0205F184 + pop {r3, pc} + + thumb_func_start FUN_02079C7C +FUN_02079C7C: ; 0x02079C7C + push {r3-r5, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r1, #0x1 + lsl r1, r1, #0x1a + ldr r0, [r1, #0x0] + ldr r2, _02079DA0 ; =0xFFFFE0FF + and r0, r2 + str r0, [r1, #0x0] + ldr r0, _02079DA4 ; =0x04001000 + ldr r3, [r0, #0x0] + and r2, r3 + str r2, [r0, #0x0] + ldr r3, [r1, #0x0] + ldr r2, _02079DA8 ; =0xFFFF1FFF + and r3, r2 + str r3, [r1, #0x0] + ldr r3, [r0, #0x0] + add r1, #0x50 + and r2, r3 + str r2, [r0, #0x0] + mov r2, #0x0 + strh r2, [r1, #0x0] + add r0, #0x50 + strh r2, [r0, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + mov r2, #0x1 + mov r0, #0x3 + mov r1, #0x13 + lsl r2, r2, #0x12 + bl FUN_0201681C + ldr r1, _02079DAC ; =0x0000069C + add r0, r4, #0x0 + mov r2, #0x13 + bl FUN_02006268 + ldr r2, _02079DAC ; =0x0000069C + mov r1, #0x0 + add r5, r0, #0x0 + blx Call_FillMemWithValue + add r0, r4, #0x0 + bl FUN_0200628C + mov r1, #0x93 + lsl r1, r1, #0x2 + str r0, [r5, r1] + mov r0, #0x13 + bl FUN_02016B94 + mov r1, #0x1 + str r0, [r5, #0x0] + mov r0, #0x13 + add r2, r1, #0x0 + bl FUN_02014BF4 + mov r1, #0x2d + lsl r1, r1, #0x4 + str r0, [r5, r1] + mov r0, #0x0 + mov r1, #0x13 + bl FUN_02002C84 + bl FUN_0201CC08 + mov r0, #0x4 + bl FUN_0201CC24 + add r0, r5, #0x0 + bl FUN_0207B028 + bl FUN_02079F58 + ldr r0, [r5, #0x0] + bl FUN_02079F78 + add r0, r5, #0x0 + bl FUN_0207A0CC + bl FUN_0207A188 + add r0, r5, #0x0 + bl FUN_0207EF6C + add r0, r5, #0x0 + bl FUN_0207A1A0 + add r0, r5, #0x0 + bl FUN_0207AAB0 + add r0, r5, #0x0 + bl FUN_0207C328 + add r0, r5, #0x0 + bl FUN_0207C448 + add r0, r5, #0x0 + bl FUN_0207F840 + add r0, r5, #0x0 + bl FUN_0207C71C + add r0, r5, #0x0 + bl FUN_0207C77C + add r0, r5, #0x0 + bl FUN_0207D5BC + add r0, r5, #0x0 + bl FUN_0207AF58 + add r0, r5, #0x0 + bl FUN_0207F95C + add r0, r5, #0x0 + bl FUN_0207F098 + ldr r0, _02079DB0 ; =FUN_02079F24 + add r1, r5, #0x0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r1, #0x0 + mov r0, #0x3d + add r2, r1, #0x0 + bl FUN_0200433C + bl FUN_02033F20 + mov r0, #0x1 + pop {r3-r5, pc} + nop +_02079DA0: .word 0xFFFFE0FF +_02079DA4: .word 0x04001000 +_02079DA8: .word 0xFFFF1FFF +_02079DAC: .word 0x0000069C +_02079DB0: .word FUN_02079F24 + + thumb_func_start FUN_02079DB4 +FUN_02079DB4: ; 0x02079DB4 + push {r3-r5, lr} + add r4, r1, #0x0 + bl FUN_02006278 + ldr r1, [r4, #0x0] + add r5, r0, #0x0 + cmp r1, #0x13 + bhi _02079EA2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02079DD0: ; jump table (using 16-bit offset) + .short _02079DF8 - _02079DD0 - 2; case 0 + .short _02079E06 - _02079DD0 - 2; case 1 + .short _02079E0E - _02079DD0 - 2; case 2 + .short _02079E16 - _02079DD0 - 2; case 3 + .short _02079E1E - _02079DD0 - 2; case 4 + .short _02079E26 - _02079DD0 - 2; case 5 + .short _02079E2E - _02079DD0 - 2; case 6 + .short _02079E36 - _02079DD0 - 2; case 7 + .short _02079E3E - _02079DD0 - 2; case 8 + .short _02079E46 - _02079DD0 - 2; case 9 + .short _02079E4E - _02079DD0 - 2; case 10 + .short _02079E56 - _02079DD0 - 2; case 11 + .short _02079E5E - _02079DD0 - 2; case 12 + .short _02079E66 - _02079DD0 - 2; case 13 + .short _02079E6E - _02079DD0 - 2; case 14 + .short _02079E76 - _02079DD0 - 2; case 15 + .short _02079E7E - _02079DD0 - 2; case 16 + .short _02079E86 - _02079DD0 - 2; case 17 + .short _02079E8E - _02079DD0 - 2; case 18 + .short _02079E96 - _02079DD0 - 2; case 19 +_02079DF8: + mov r0, #0x0 + mov r1, #0x13 + bl FUN_02079A70 + mov r0, #0x1 + str r0, [r4, #0x0] + b _02079EA2 +_02079E06: + bl FUN_0207A2D8 + str r0, [r4, #0x0] + b _02079EA2 +_02079E0E: + bl FUN_0207A310 + str r0, [r4, #0x0] + b _02079EA2 +_02079E16: + bl FUN_0207A448 + str r0, [r4, #0x0] + b _02079EA2 +_02079E1E: + bl FUN_0207A45C + str r0, [r4, #0x0] + b _02079EA2 +_02079E26: + bl FUN_0207A470 + str r0, [r4, #0x0] + b _02079EA2 +_02079E2E: + bl FUN_0207A484 + str r0, [r4, #0x0] + b _02079EA2 +_02079E36: + bl FUN_0207A498 + str r0, [r4, #0x0] + b _02079EA2 +_02079E3E: + bl FUN_0207A57C + str r0, [r4, #0x0] + b _02079EA2 +_02079E46: + bl FUN_0207A654 + str r0, [r4, #0x0] + b _02079EA2 +_02079E4E: + bl FUN_0207A760 + str r0, [r4, #0x0] + b _02079EA2 +_02079E56: + bl FUN_0207A77C + str r0, [r4, #0x0] + b _02079EA2 +_02079E5E: + bl FUN_0207A790 + str r0, [r4, #0x0] + b _02079EA2 +_02079E66: + bl FUN_0207A7A4 + str r0, [r4, #0x0] + b _02079EA2 +_02079E6E: + bl FUN_0207A818 + str r0, [r4, #0x0] + b _02079EA2 +_02079E76: + bl FUN_0207A884 + str r0, [r4, #0x0] + b _02079EA2 +_02079E7E: + bl FUN_0207AA20 + str r0, [r4, #0x0] + b _02079EA2 +_02079E86: + bl FUN_0207AA70 + str r0, [r4, #0x0] + b _02079EA2 +_02079E8E: + bl FUN_0207AA88 + str r0, [r4, #0x0] + b _02079EA2 +_02079E96: + bl FUN_0207AA98 + cmp r0, #0x1 + bne _02079EA2 + mov r0, #0x1 + pop {r3-r5, pc} +_02079EA2: + add r0, r5, #0x0 + bl FUN_0207C3F4 + add r0, r5, #0x0 + bl FUN_0207CC88 + add r0, r5, #0x0 + bl FUN_0207D3F4 + ldr r0, _02079EC8 ; =0x00000404 + ldr r0, [r5, r0] + bl FUN_0200BC1C + add r0, r5, #0x0 + bl FUN_0207F008 + mov r0, #0x0 + pop {r3-r5, pc} + nop +_02079EC8: .word 0x00000404 + + thumb_func_start FUN_02079ECC +FUN_02079ECC: ; 0x02079ECC + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_02006278 + add r5, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + add r0, r5, #0x0 + bl FUN_0207F068 + add r0, r5, #0x0 + bl FUN_0207C3D4 + add r0, r5, #0x0 + bl FUN_0207D74C + ldr r0, [r5, #0x0] + bl FUN_0207A08C + bl FUN_0201CD04 + bl FUN_0201C29C + add r0, r5, #0x0 + bl FUN_0207A264 + mov r0, #0x0 + bl FUN_02002CC0 + ldr r0, _02079F20 ; =0x04000050 + mov r1, #0x0 + strh r1, [r0, #0x0] + add r0, r4, #0x0 + bl FUN_0200627C + mov r0, #0x13 + bl FUN_020168D0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_02079F20: .word 0x04000050 + + thumb_func_start FUN_02079F24 +FUN_02079F24: ; 0x02079F24 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_0201AB60 + mov r0, #0xae + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r3, _02079F50 ; =0x027E0000 + ldr r1, _02079F54 ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + nop +_02079F50: .word 0x027E0000 +_02079F54: .word 0x00003FF8 + + thumb_func_start FUN_02079F58 +FUN_02079F58: ; 0x02079F58 + push {r4, lr} + sub sp, #0x28 + ldr r4, _02079F74 ; =0x020FA6C0 + add r3, sp, #0x0 + mov r2, #0x5 +_02079F62: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02079F62 + add r0, sp, #0x0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .balign 4 +_02079F74: .word 0x020FA6C0 + + thumb_func_start FUN_02079F78 +FUN_02079F78: ; 0x02079F78 + push {r4-r5, lr} + sub sp, #0x9c + ldr r5, _0207A074 ; =0x020FA624 + add r3, sp, #0x8c + add r4, r0, #0x0 + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r5, _0207A078 ; =0x020FA650 + add r3, sp, #0x70 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x1 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02018744 + ldr r5, _0207A07C ; =0x020FA66C + add r3, sp, #0x54 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x2 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02018744 + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x88 + bl FUN_0201AEE4 + ldr r5, _0207A080 ; =0x020FA688 + add r3, sp, #0x38 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x3 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + ldr r5, _0207A084 ; =0x020FA6A4 + add r3, sp, #0x1c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x4 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02018744 + ldr r5, _0207A088 ; =0x020FA634 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x5 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + mov r0, #0x1 + mov r1, #0x20 + mov r2, #0x0 + mov r3, #0x13 + bl FUN_02017F18 + mov r0, #0x4 + mov r1, #0x20 + mov r2, #0x0 + mov r3, #0x13 + bl FUN_02017F18 + add sp, #0x9c + pop {r4-r5, pc} + nop +_0207A074: .word 0x020FA624 +_0207A078: .word 0x020FA650 +_0207A07C: .word 0x020FA66C +_0207A080: .word 0x020FA688 +_0207A084: .word 0x020FA6A4 +_0207A088: .word 0x020FA634 + + thumb_func_start FUN_0207A08C +FUN_0207A08C: ; 0x0207A08C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0201E6D8 + bl FUN_0201E740 + add r0, r4, #0x0 + mov r1, #0x5 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_020178A0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_020178A0 + mov r0, #0x13 + add r1, r4, #0x0 + bl FUN_02016A8C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207A0CC +FUN_0207A0CC: ; 0x0207A0CC + push {r4, lr} + sub sp, #0x10 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r4, r0, #0x0 + str r1, [sp, #0x8] + mov r0, #0x13 + str r0, [sp, #0xc] + ldr r2, [r4, #0x0] + mov r0, #0x27 + mov r3, #0x3 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x13 + str r0, [sp, #0xc] + mov r1, #0x3 + ldr r2, [r4, #0x0] + mov r0, #0x27 + add r3, r1, #0x0 + bl FUN_020068C8 + mov r2, #0x0 + str r2, [sp, #0x0] + mov r0, #0x13 + str r0, [sp, #0x4] + mov r0, #0x27 + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_02006930 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x13 + str r0, [sp, #0xc] + ldr r2, [r4, #0x0] + mov r0, #0x27 + mov r1, #0xb + mov r3, #0x2 + bl FUN_020068C8 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x13 + str r0, [sp, #0xc] + ldr r2, [r4, #0x0] + mov r0, #0x27 + mov r1, #0x2 + mov r3, #0x4 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x13 + str r0, [sp, #0xc] + ldr r2, [r4, #0x0] + mov r0, #0x27 + mov r1, #0x10 + mov r3, #0x5 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x13 + str r0, [sp, #0xc] + ldr r2, [r4, #0x0] + mov r0, #0x27 + mov r1, #0xf + mov r3, #0x5 + bl FUN_020068C8 + mov r3, #0x0 + str r3, [sp, #0x0] + mov r0, #0x13 + str r0, [sp, #0x4] + mov r0, #0x27 + mov r1, #0xe + mov r2, #0x4 + bl FUN_02006930 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start FUN_0207A188 +FUN_0207A188: ; 0x0207A188 + push {r3, lr} + mov r0, #0x8 + str r0, [sp, #0x0] + ldr r0, _0207A19C ; =0x04000050 + mov r1, #0x1 + mov r2, #0x1e + mov r3, #0x17 + blx G2x_SetBlendAlpha_ + pop {r3, pc} + .balign 4 +_0207A19C: .word 0x04000050 + + thumb_func_start FUN_0207A1A0 +FUN_0207A1A0: ; 0x0207A1A0 + push {r4, lr} + mov r2, #0x65 + add r4, r0, #0x0 + mov r0, #0x0 + mov r1, #0x1a + lsl r2, r2, #0x2 + mov r3, #0x13 + bl FUN_0200A86C + ldr r1, _0207A250 ; =0x00000674 + mov r2, #0x79 + str r0, [r4, r1] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + mov r3, #0x13 + bl FUN_0200A86C + ldr r1, _0207A254 ; =0x00000678 + mov r2, #0x0 + str r0, [r4, r1] + mov r0, #0x1 + mov r1, #0x2 + mov r3, #0x13 + bl FUN_0200B870 + mov r1, #0x67 + lsl r1, r1, #0x4 + str r0, [r4, r1] + mov r0, #0x13 + bl FUN_0200AA80 + ldr r1, _0207A258 ; =0x0000067C + str r0, [r4, r1] + mov r0, #0xc + mov r1, #0x13 + bl FUN_020219F4 + mov r1, #0x25 + lsl r1, r1, #0x4 + str r0, [r4, r1] + mov r0, #0xc + mov r1, #0x13 + bl FUN_020219F4 + mov r1, #0x95 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x8 + mov r1, #0x13 + bl FUN_020219F4 + mov r1, #0x96 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x80 + mov r1, #0x13 + bl FUN_020219F4 + mov r1, #0x1a + lsl r1, r1, #0x6 + str r0, [r4, r1] + mov r2, #0x93 + mov r0, #0x0 + mov r1, #0x1a + lsl r2, r2, #0x2 + mov r3, #0x13 + bl FUN_0200A86C + ldr r1, _0207A25C ; =0x00000688 + str r0, [r4, r1] + mov r0, #0x8 + mov r1, #0x13 + bl FUN_020219F4 + ldr r2, _0207A260 ; =0x00000684 + str r0, [r4, r2] + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _0207A24C + ldr r0, [r4, r2] + bl FUN_02021E28 +_0207A24C: + pop {r4, pc} + nop +_0207A250: .word 0x00000674 +_0207A254: .word 0x00000678 +_0207A258: .word 0x0000067C +_0207A25C: .word 0x00000688 +_0207A260: .word 0x00000684 + + thumb_func_start FUN_0207A264 +FUN_0207A264: ; 0x0207A264 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207A2C4 ; =0x00000688 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0207A2C8 ; =0x00000678 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + ldr r0, _0207A2CC ; =0x00000674 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + mov r0, #0x67 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_0200B990 + ldr r0, _0207A2D0 ; =0x0000067C + ldr r0, [r4, r0] + bl FUN_0200AB18 + mov r0, #0x25 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x95 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x96 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02021A20 + mov r0, #0x1a + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0207A2D4 ; =0x00000684 + ldr r0, [r4, r0] + bl FUN_02021A20 + pop {r4, pc} + .balign 4 +_0207A2C4: .word 0x00000688 +_0207A2C8: .word 0x00000678 +_0207A2CC: .word 0x00000674 +_0207A2D0: .word 0x0000067C +_0207A2D4: .word 0x00000684 + + thumb_func_start FUN_0207A2D8 +FUN_0207A2D8: ; 0x0207A2D8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0200E308 + cmp r0, #0x1 + bne _0207A30C + add r0, r4, #0x0 + bl FUN_0207F8D0 + add r0, r4, #0x0 + bl FUN_0207AF20 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x2 + bne _0207A300 + mov r0, #0x9 + pop {r4, pc} +_0207A300: + cmp r0, #0x4 + bne _0207A308 + mov r0, #0xf + pop {r4, pc} +_0207A308: + mov r0, #0x2 + pop {r4, pc} +_0207A30C: + mov r0, #0x1 + pop {r4, pc} + + thumb_func_start FUN_0207A310 +FUN_0207A310: ; 0x0207A310 + push {r4-r6, lr} + ldr r3, _0207A438 ; =0x0000068F + add r4, r0, #0x0 + ldrb r1, [r4, r3] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + cmp r1, #0x1 + bne _0207A32E + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + strb r1, [r0, #0x17] + mov r0, #0x12 + pop {r4-r6, pc} +_0207A32E: + ldr r2, _0207A43C ; =0x021C48B8 + mov r1, #0x20 + ldr r5, [r2, #0x4c] + add r6, r5, #0x0 + tst r6, r1 + beq _0207A344 + sub r1, #0x21 + bl FUN_0207B178 + mov r0, #0x2 + pop {r4-r6, pc} +_0207A344: + mov r1, #0x10 + tst r1, r5 + beq _0207A354 + mov r1, #0x1 + bl FUN_0207B178 + mov r0, #0x2 + pop {r4-r6, pc} +_0207A354: + mov r1, #0x40 + add r6, r5, #0x0 + tst r6, r1 + beq _0207A366 + sub r1, #0x41 + bl FUN_0207B3F0 + mov r0, #0x2 + pop {r4-r6, pc} +_0207A366: + mov r1, #0x80 + tst r1, r5 + beq _0207A376 + mov r1, #0x1 + bl FUN_0207B3F0 + mov r0, #0x2 + pop {r4-r6, pc} +_0207A376: + ldr r1, [r2, #0x48] + mov r0, #0x2 + tst r0, r1 + beq _0207A394 + sub r3, #0xb2 + add r0, r3, #0x0 + bl FUN_020054C8 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + strb r1, [r0, #0x17] + mov r0, #0x12 + pop {r4-r6, pc} +_0207A394: + mov r0, #0x1 + tst r0, r1 + beq _0207A420 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x3 + bne _0207A3BE + sub r0, r3, #0x3 + ldrsb r0, [r4, r0] + cmp r0, #0x4 + bne _0207A3BE + sub r3, #0xb2 + add r0, r3, #0x0 + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207C23C + pop {r4-r6, pc} +_0207A3BE: + ldr r0, _0207A440 ; =0x0000068C + ldrsb r1, [r4, r0] + cmp r1, #0x3 + bne _0207A3D6 + add r0, #0x10 + bl FUN_020054C8 + ldr r0, _0207A444 ; =0x0000068E + mov r1, #0x0 + strb r1, [r4, r0] + mov r0, #0x3 + pop {r4-r6, pc} +_0207A3D6: + cmp r1, #0x5 + bne _0207A3EA + add r0, #0x10 + bl FUN_020054C8 + ldr r0, _0207A444 ; =0x0000068E + mov r1, #0x0 + strb r1, [r4, r0] + mov r0, #0x5 + pop {r4-r6, pc} +_0207A3EA: + cmp r1, #0x6 + bne _0207A408 + add r1, r0, #0x0 + add r1, #0xd + ldrb r1, [r4, r1] + cmp r1, #0x0 + beq _0207A420 + sub r0, #0xaf + bl FUN_020054C8 + ldr r0, _0207A444 ; =0x0000068E + mov r1, #0x0 + strb r1, [r4, r0] + mov r0, #0xb + pop {r4-r6, pc} +_0207A408: + cmp r1, #0x7 + bne _0207A420 + sub r0, #0xaf + bl FUN_020054C8 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + strb r1, [r0, #0x17] + mov r0, #0x12 + pop {r4-r6, pc} +_0207A420: + add r0, r4, #0x0 + bl FUN_0207B200 + cmp r0, #0x1 + bne _0207A434 + ldr r0, _0207A444 ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + mov r0, #0xe + pop {r4-r6, pc} +_0207A434: + mov r0, #0x2 + pop {r4-r6, pc} + .balign 4 +_0207A438: .word 0x0000068F +_0207A43C: .word 0x021C48B8 +_0207A440: .word 0x0000068C +_0207A444: .word 0x0000068E + + thumb_func_start FUN_0207A448 +FUN_0207A448: ; 0x0207A448 + push {r3, lr} + bl FUN_0207B66C + cmp r0, #0x1 + bne _0207A456 + mov r0, #0x7 + pop {r3, pc} +_0207A456: + mov r0, #0x3 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207A45C +FUN_0207A45C: ; 0x0207A45C + push {r3, lr} + bl FUN_0207B788 + cmp r0, #0x1 + bne _0207A46A + mov r0, #0x2 + pop {r3, pc} +_0207A46A: + mov r0, #0x4 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207A470 +FUN_0207A470: ; 0x0207A470 + push {r3, lr} + bl FUN_0207BAEC + cmp r0, #0x1 + bne _0207A47E + mov r0, #0x7 + pop {r3, pc} +_0207A47E: + mov r0, #0x5 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207A484 +FUN_0207A484: ; 0x0207A484 + push {r3, lr} + bl FUN_0207BBF0 + cmp r0, #0x1 + bne _0207A492 + mov r0, #0x2 + pop {r3, pc} +_0207A492: + mov r0, #0x6 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207A498 +FUN_0207A498: ; 0x0207A498 + push {r4, lr} + ldr r1, _0207A568 ; =0x021C48B8 + add r4, r0, #0x0 + ldr r2, [r1, #0x48] + mov r1, #0x40 + add r3, r2, #0x0 + tst r3, r1 + beq _0207A4C2 + sub r1, #0x41 + bl FUN_0207B878 + cmp r0, #0x1 + bne _0207A4BE + ldr r0, _0207A56C ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B8D8 +_0207A4BE: + mov r0, #0x7 + pop {r4, pc} +_0207A4C2: + mov r1, #0x80 + tst r1, r2 + beq _0207A4E2 + mov r1, #0x1 + bl FUN_0207B878 + cmp r0, #0x1 + bne _0207A4DE + ldr r0, _0207A56C ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B8D8 +_0207A4DE: + mov r0, #0x7 + pop {r4, pc} +_0207A4E2: + mov r0, #0x1 + tst r0, r2 + beq _0207A542 + ldr r0, _0207A570 ; =0x0000068D + ldrb r1, [r4, r0] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, #0x4 + bne _0207A510 + add r0, #0xf + bl FUN_020054C8 + ldr r0, _0207A574 ; =0x0000068E + mov r1, #0x0 + strb r1, [r4, r0] + sub r0, r0, #0x2 + ldrsb r0, [r4, r0] + cmp r0, #0x3 + bne _0207A50C + mov r0, #0x4 + pop {r4, pc} +_0207A50C: + mov r0, #0x6 + pop {r4, pc} +_0207A510: + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldrb r1, [r1, #0x12] + cmp r1, #0x1 + beq _0207A542 + sub r0, #0xb0 + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207CBE8 + ldr r2, _0207A570 ; =0x0000068D + mov r1, #0xf0 + ldrb r3, [r4, r2] + add r0, r3, #0x0 + bic r0, r1 + lsl r1, r3, #0x1c + lsr r1, r1, #0x1c + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r4, r2] + mov r0, #0x8 + pop {r4, pc} +_0207A542: + mov r0, #0x2 + tst r0, r2 + beq _0207A564 + ldr r0, _0207A578 ; =0x0000069C + bl FUN_020054C8 + ldr r0, _0207A574 ; =0x0000068E + mov r1, #0x0 + strb r1, [r4, r0] + sub r0, r0, #0x2 + ldrsb r0, [r4, r0] + cmp r0, #0x3 + bne _0207A560 + mov r0, #0x4 + pop {r4, pc} +_0207A560: + mov r0, #0x6 + pop {r4, pc} +_0207A564: + mov r0, #0x7 + pop {r4, pc} + .balign 4 +_0207A568: .word 0x021C48B8 +_0207A56C: .word 0x000005DC +_0207A570: .word 0x0000068D +_0207A574: .word 0x0000068E +_0207A578: .word 0x0000069C + + thumb_func_start FUN_0207A57C +FUN_0207A57C: ; 0x0207A57C + push {r4, lr} + ldr r1, _0207A644 ; =0x021C48B8 + add r4, r0, #0x0 + ldr r2, [r1, #0x48] + mov r1, #0x40 + add r3, r2, #0x0 + tst r3, r1 + beq _0207A5A6 + sub r1, #0x41 + bl FUN_0207B878 + cmp r0, #0x1 + bne _0207A5A2 + ldr r0, _0207A648 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B8D8 +_0207A5A2: + mov r0, #0x8 + pop {r4, pc} +_0207A5A6: + mov r1, #0x80 + tst r1, r2 + beq _0207A5C6 + mov r1, #0x1 + bl FUN_0207B878 + cmp r0, #0x1 + bne _0207A5C2 + ldr r0, _0207A648 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B8D8 +_0207A5C2: + mov r0, #0x8 + pop {r4, pc} +_0207A5C6: + mov r0, #0x1 + tst r0, r2 + beq _0207A622 + mov r0, #0x43 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207A64C ; =0x0000068D + ldrb r1, [r4, r0] + lsl r2, r1, #0x1c + lsr r2, r2, #0x1c + cmp r2, #0x4 + beq _0207A618 + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + cmp r2, r1 + beq _0207A618 + sub r0, #0xb0 + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B9C0 + ldr r1, _0207A64C ; =0x0000068D + add r0, r4, #0x0 + ldrb r2, [r4, r1] + lsl r1, r2, #0x1c + lsl r2, r2, #0x18 + lsr r1, r1, #0x1c + lsr r2, r2, #0x1c + bl FUN_0207CB08 + add r0, r4, #0x0 + bl FUN_0207ED30 + add r0, r4, #0x0 + bl FUN_0207B8D8 + b _0207A61E +_0207A618: + ldr r0, _0207A650 ; =0x000005DD + bl FUN_020054C8 +_0207A61E: + mov r0, #0x7 + pop {r4, pc} +_0207A622: + mov r0, #0x2 + tst r0, r2 + beq _0207A63E + ldr r0, _0207A650 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x43 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + mov r0, #0x7 + pop {r4, pc} +_0207A63E: + mov r0, #0x8 + pop {r4, pc} + nop +_0207A644: .word 0x021C48B8 +_0207A648: .word 0x000005DC +_0207A64C: .word 0x0000068D +_0207A650: .word 0x000005DD + + thumb_func_start FUN_0207A654 +FUN_0207A654: ; 0x0207A654 + push {r4, lr} + ldr r1, _0207A750 ; =0x021C48B8 + add r4, r0, #0x0 + ldr r2, [r1, #0x48] + mov r1, #0x20 + add r3, r2, #0x0 + tst r3, r1 + beq _0207A66E + sub r1, #0x21 + bl FUN_0207B178 + mov r0, #0x9 + pop {r4, pc} +_0207A66E: + mov r1, #0x10 + tst r1, r2 + beq _0207A67E + mov r1, #0x1 + bl FUN_0207B178 + mov r0, #0x9 + pop {r4, pc} +_0207A67E: + mov r1, #0x40 + add r3, r2, #0x0 + tst r3, r1 + beq _0207A6A0 + sub r1, #0x41 + bl FUN_0207B878 + cmp r0, #0x1 + bne _0207A69C + ldr r0, _0207A754 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B8D8 +_0207A69C: + mov r0, #0x9 + pop {r4, pc} +_0207A6A0: + mov r1, #0x80 + tst r1, r2 + beq _0207A6C0 + mov r1, #0x1 + bl FUN_0207B878 + cmp r0, #0x1 + bne _0207A6BC + ldr r0, _0207A754 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0x0 + bl FUN_0207B8D8 +_0207A6BC: + mov r0, #0x9 + pop {r4, pc} +_0207A6C0: + mov r0, #0x1 + tst r0, r2 + beq _0207A72C + ldr r0, _0207A758 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _0207A75C ; =0x0000068D + ldrb r0, [r4, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #0x4 + beq _0207A712 + lsl r0, r0, #0x1 + add r1, r4, r0 + mov r0, #0xa1 + lsl r0, r0, #0x2 + ldrh r0, [r1, r0] + bl FUN_0206EA54 + cmp r0, #0x1 + bne _0207A712 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0207A712 + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200C63C + add r0, r4, #0x0 + bl FUN_0207BD58 + add r0, r4, #0x0 + bl FUN_0207EDB4 + mov r0, #0xa + pop {r4, pc} +_0207A712: + ldr r0, _0207A75C ; =0x0000068D + ldrb r0, [r4, r0] + lsl r0, r0, #0x1c + lsr r2, r0, #0x1c + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + strb r2, [r1, #0x16] + ldr r0, [r4, r0] + mov r1, #0x0 + strb r1, [r0, #0x17] + mov r0, #0x12 + pop {r4, pc} +_0207A72C: + mov r0, #0x2 + tst r0, r2 + beq _0207A74C + ldr r0, _0207A758 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + mov r2, #0x4 + strb r2, [r1, #0x16] + ldr r0, [r4, r0] + mov r1, #0x1 + strb r1, [r0, #0x17] + mov r0, #0x12 + pop {r4, pc} +_0207A74C: + mov r0, #0x9 + pop {r4, pc} + .balign 4 +_0207A750: .word 0x021C48B8 +_0207A754: .word 0x000005DC +_0207A758: .word 0x000005DD +_0207A75C: .word 0x0000068D + + thumb_func_start FUN_0207A760 +FUN_0207A760: ; 0x0207A760 + push {r3, lr} + ldr r1, _0207A778 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #0x3 + tst r1, r2 + beq _0207A774 + bl FUN_0207B8D8 + mov r0, #0x9 + pop {r3, pc} +_0207A774: + mov r0, #0xa + pop {r3, pc} + .balign 4 +_0207A778: .word 0x021C48B8 + + thumb_func_start FUN_0207A77C +FUN_0207A77C: ; 0x0207A77C + push {r3, lr} + bl FUN_0207BE68 + cmp r0, #0x1 + bne _0207A78A + mov r0, #0xd + pop {r3, pc} +_0207A78A: + mov r0, #0xb + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207A790 +FUN_0207A790: ; 0x0207A790 + push {r3, lr} + bl FUN_0207BF90 + cmp r0, #0x1 + bne _0207A79E + mov r0, #0x2 + pop {r3, pc} +_0207A79E: + mov r0, #0xc + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207A7A4 +FUN_0207A7A4: ; 0x0207A7A4 + push {r3-r5, lr} + ldr r3, _0207A80C ; =0x021C48B8 + mov r1, #0x20 + ldr r2, [r3, #0x4c] + add r4, r0, #0x0 + add r5, r2, #0x0 + tst r5, r1 + beq _0207A7BE + sub r1, #0x21 + bl FUN_0207C07C + mov r0, #0xd + pop {r3-r5, pc} +_0207A7BE: + mov r1, #0x10 + tst r1, r2 + beq _0207A7CE + mov r1, #0x1 + bl FUN_0207C07C + mov r0, #0xd + pop {r3-r5, pc} +_0207A7CE: + mov r1, #0x40 + add r5, r2, #0x0 + tst r5, r1 + beq _0207A7E0 + sub r1, #0x44 + bl FUN_0207C07C + mov r0, #0xd + pop {r3-r5, pc} +_0207A7E0: + mov r1, #0x80 + tst r1, r2 + beq _0207A7F0 + mov r1, #0x4 + bl FUN_0207C07C + mov r0, #0xd + pop {r3-r5, pc} +_0207A7F0: + ldr r1, [r3, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0207A808 + ldr r0, _0207A810 ; =0x000005DD + bl FUN_020054C8 + ldr r0, _0207A814 ; =0x0000068E + mov r1, #0x0 + strb r1, [r4, r0] + mov r0, #0xc + pop {r3-r5, pc} +_0207A808: + mov r0, #0xd + pop {r3-r5, pc} + .balign 4 +_0207A80C: .word 0x021C48B8 +_0207A810: .word 0x000005DD +_0207A814: .word 0x0000068E + + thumb_func_start FUN_0207A818 +FUN_0207A818: ; 0x0207A818 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0207FB28 + cmp r0, #0x1 + bne _0207A82A + ldr r0, _0207A878 ; =0x0000068E + ldrb r0, [r4, r0] + pop {r4, pc} +_0207A82A: + ldr r1, _0207A87C ; =0x00000695 + ldrb r0, [r4, r1] + cmp r0, #0x1 + bne _0207A874 + add r1, r1, #0x1 + ldrb r1, [r4, r1] + add r0, r4, #0x0 + bl FUN_0207FC40 + add r1, r0, #0x0 + cmp r1, #0x7 + bne _0207A850 + ldr r2, _0207A880 ; =0x0000068F + mov r0, #0xf0 + ldrb r3, [r4, r2] + bic r3, r0 + mov r0, #0x10 + orr r0, r3 + strb r0, [r4, r2] +_0207A850: + mov r0, #0x2a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + cmp r0, #0x1 + bne _0207A86E + cmp r1, #0x1 + beq _0207A866 + cmp r1, #0x7 + bne _0207A874 +_0207A866: + add r0, r4, #0x0 + bl FUN_0207B0CC + b _0207A874 +_0207A86E: + add r0, r4, #0x0 + bl FUN_0207B0CC +_0207A874: + mov r0, #0xe + pop {r4, pc} + .balign 4 +_0207A878: .word 0x0000068E +_0207A87C: .word 0x00000695 +_0207A880: .word 0x0000068F + + thumb_func_start FUN_0207A884 +FUN_0207A884: ; 0x0207A884 + push {r4-r6, lr} + sub sp, #0x8 + ldr r1, _0207AA00 ; =0x021C48B8 + add r5, r0, #0x0 + ldr r2, [r1, #0x48] + mov r1, #0x3 + tst r1, r2 + bne _0207A896 + b _0207A9FA +_0207A896: + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + ldrb r1, [r1, #0x11] + cmp r1, #0x2 + bne _0207A8BA + bl FUN_0207B628 + add r6, r0, #0x0 + mov r0, #0x13 + bl FUN_020669C0 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02069A64 + b _0207A8C0 +_0207A8BA: + bl FUN_0207B628 + add r4, r0, #0x0 +_0207A8C0: + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, r4, #0x0 + ldr r0, [r0, #0x24] + bl FUN_0208821C + ldr r0, _0207AA04 ; =0x0000068E + mov r2, #0x0 + strb r2, [r5, r0] + ldr r0, _0207AA08 ; =0x00000295 + mov r1, #0x13 + ldrb r6, [r5, r0] + add r0, r4, #0x0 + bl FUN_020671BC + ldr r1, _0207AA08 ; =0x00000295 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + cmp r6, r0 + beq _0207A8F4 + ldr r1, _0207AA04 ; =0x0000068E + mov r0, #0x1 + ldrb r2, [r5, r1] + orr r0, r2 + strb r0, [r5, r1] +_0207A8F4: + ldr r0, _0207AA0C ; =0x00000296 + mov r1, #0x14 + ldrb r6, [r5, r0] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _0207AA0C ; =0x00000296 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + cmp r6, r0 + beq _0207A916 + ldr r1, _0207AA04 ; =0x0000068E + mov r0, #0x2 + ldrb r2, [r5, r1] + orr r0, r2 + strb r0, [r5, r1] +_0207A916: + ldr r0, _0207AA10 ; =0x00000297 + mov r1, #0x15 + ldrb r6, [r5, r0] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _0207AA10 ; =0x00000297 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + cmp r6, r0 + beq _0207A938 + ldr r1, _0207AA04 ; =0x0000068E + mov r0, #0x4 + ldrb r2, [r5, r1] + orr r0, r2 + strb r0, [r5, r1] +_0207A938: + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldrb r6, [r5, r0] + add r0, r4, #0x0 + mov r1, #0x16 + mov r2, #0x0 + bl FUN_020671BC + mov r1, #0xa6 + lsl r1, r1, #0x2 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + cmp r6, r0 + beq _0207A95E + ldr r1, _0207AA04 ; =0x0000068E + mov r0, #0x8 + ldrb r2, [r5, r1] + orr r0, r2 + strb r0, [r5, r1] +_0207A95E: + ldr r0, _0207AA14 ; =0x00000299 + mov r1, #0x17 + ldrb r6, [r5, r0] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _0207AA14 ; =0x00000299 + strb r0, [r5, r1] + ldrb r0, [r5, r1] + cmp r6, r0 + beq _0207A980 + ldr r1, _0207AA04 ; =0x0000068E + mov r0, #0x10 + ldrb r2, [r5, r1] + orr r0, r2 + strb r0, [r5, r1] +_0207A980: + add r0, r4, #0x0 + mov r1, #0x18 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _0207AA18 ; =0x0000029A + strb r0, [r5, r1] + sub r1, #0x4e + ldr r0, [r5, r1] + ldrb r0, [r0, #0x11] + cmp r0, #0x2 + bne _0207A99E + add r0, r4, #0x0 + bl FUN_02016A18 +_0207A99E: + mov r1, #0x7 + mov r0, #0x0 + lsl r1, r1, #0x6 + mov r2, #0x13 + bl FUN_02002EEC + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r0, [r0, #0x4] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x13 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + ldr r2, _0207AA1C ; =0x000003E2 + mov r1, #0x1 + mov r3, #0xd + bl FUN_0200CD68 + ldr r0, _0207AA04 ; =0x0000068E + ldrb r0, [r5, r0] + cmp r0, #0x0 + bne _0207A9E2 + add r0, r5, #0x0 + mov r1, #0xfe + bl FUN_0207EECC + add sp, #0x8 + mov r0, #0x11 + pop {r4-r6, pc} +_0207A9E2: + add r0, r5, #0x0 + bl FUN_0207F608 + add r0, r5, #0x0 + bl FUN_0207CC24 + add r0, r5, #0x0 + bl FUN_0207CF78 + add sp, #0x8 + mov r0, #0x10 + pop {r4-r6, pc} +_0207A9FA: + mov r0, #0xf + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0207AA00: .word 0x021C48B8 +_0207AA04: .word 0x0000068E +_0207AA08: .word 0x00000295 +_0207AA0C: .word 0x00000296 +_0207AA10: .word 0x00000297 +_0207AA14: .word 0x00000299 +_0207AA18: .word 0x0000029A +_0207AA1C: .word 0x000003E2 + + thumb_func_start FUN_0207AA20 +FUN_0207AA20: ; 0x0207AA20 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0207AA68 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0207AA62 + ldr r0, _0207AA6C ; =0x0000068E + mov r1, #0x0 + ldrb r2, [r5, r0] + mov r0, #0x1 +_0207AA36: + add r4, r0, #0x0 + lsl r4, r1 + add r3, r2, #0x0 + tst r3, r4 + beq _0207AA58 + add r0, r5, #0x0 + bl FUN_0207EECC + ldr r0, _0207AA6C ; =0x0000068E + ldrb r1, [r5, r0] + eor r1, r4 + strb r1, [r5, r0] + ldrb r0, [r5, r0] + cmp r0, #0x0 + bne _0207AA62 + mov r0, #0x11 + pop {r3-r5, pc} +_0207AA58: + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x5 + blo _0207AA36 +_0207AA62: + mov r0, #0x10 + pop {r3-r5, pc} + nop +_0207AA68: .word 0x021C48B8 +_0207AA6C: .word 0x0000068E + + thumb_func_start FUN_0207AA70 +FUN_0207AA70: ; 0x0207AA70 + ldr r0, _0207AA84 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x3 + tst r0, r1 + beq _0207AA7E + mov r0, #0x12 + bx lr +_0207AA7E: + mov r0, #0x11 + bx lr + nop +_0207AA84: .word 0x021C48B8 + + thumb_func_start FUN_0207AA88 +FUN_0207AA88: ; 0x0207AA88 + push {r3, lr} + mov r0, #0x1 + mov r1, #0x13 + bl FUN_02079A70 + mov r0, #0x13 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207AA98 +FUN_0207AA98: ; 0x0207AA98 + push {r3, lr} + bl FUN_0200E308 + cmp r0, #0x1 + bne _0207AAA6 + mov r0, #0x1 + b _0207AAA8 +_0207AAA6: + mov r0, #0x0 +_0207AAA8: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207AAB0 +FUN_0207AAB0: ; 0x0207AAB0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0207B628 + mov r2, #0x93 + lsl r2, r2, #0x2 + add r1, r0, #0x0 + ldr r0, [r4, r2] + ldrb r0, [r0, #0x11] + cmp r0, #0x2 + bne _0207AAD2 + add r2, r2, #0x4 + add r0, r4, #0x0 + add r2, r4, r2 + bl FUN_0207AAE0 + pop {r4, pc} +_0207AAD2: + add r2, r2, #0x4 + add r0, r4, #0x0 + add r2, r4, r2 + bl FUN_0207AB0C + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207AAE0 +FUN_0207AAE0: ; 0x0207AAE0 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x13 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_020669C0 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02069A64 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0207AB0C + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207AB0C +FUN_0207AB0C: ; 0x0207AB0C + push {r3-r7, lr} + sub sp, #0x8 + add r6, r1, #0x0 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r5, r2, #0x0 + bl FUN_020669D4 + str r0, [sp, #0x4] + add r0, r6, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0xc] + add r0, r6, #0x0 + bl FUN_020690E4 + ldr r2, _0207AEAC ; =0x00000674 + add r4, r0, #0x0 + ldr r0, [r7, r2] + add r2, #0xc + ldr r2, [r7, r2] + mov r1, #0xb + bl FUN_0200A8E0 + ldr r0, _0207AEB0 ; =0x0000067C + mov r1, #0x0 + ldr r0, [r7, r0] + add r2, r4, #0x0 + bl FUN_0200AC60 + ldr r2, _0207AEB0 ; =0x0000067C + mov r1, #0x25 + ldr r0, [r7, r2] + lsl r1, r1, #0x4 + add r2, r2, #0x4 + ldr r1, [r7, r1] + ldr r2, [r7, r2] + bl FUN_0200B7B8 + ldr r2, _0207AEAC ; =0x00000674 + mov r1, #0x0 + ldr r0, [r7, r2] + add r2, #0xc + ldr r2, [r7, r2] + bl FUN_0200A8E0 + ldr r0, _0207AEB0 ; =0x0000067C + mov r1, #0x0 + ldr r0, [r7, r0] + add r2, r4, #0x0 + bl FUN_0200ACF8 + ldr r2, _0207AEB0 ; =0x0000067C + mov r1, #0x95 + ldr r0, [r7, r2] + lsl r1, r1, #0x2 + add r2, r2, #0x4 + ldr r1, [r7, r1] + ldr r2, [r7, r2] + bl FUN_0200B7B8 + ldr r2, _0207AEAC ; =0x00000674 + mov r1, #0xe + ldr r0, [r7, r2] + add r2, #0xc + ldr r2, [r7, r2] + bl FUN_0200A8E0 + ldr r0, _0207AEB0 ; =0x0000067C + mov r1, #0x0 + ldr r0, [r7, r0] + add r2, r4, #0x0 + bl FUN_0200AD18 + ldr r2, _0207AEB0 ; =0x0000067C + mov r1, #0x96 + ldr r0, [r7, r2] + lsl r1, r1, #0x2 + add r2, r2, #0x4 + ldr r1, [r7, r1] + ldr r2, [r7, r2] + bl FUN_0200B7B8 + add r0, r6, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0xe] + add r0, r6, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + ldrb r1, [r5, #0x12] + mov r2, #0x7f + lsl r0, r0, #0x18 + bic r1, r2 + lsr r2, r0, #0x18 + mov r0, #0x7f + and r0, r2 + orr r0, r1 + strb r0, [r5, #0x12] + add r0, r6, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x1f + ldr r2, [r5, #0x50] + ldr r1, _0207AEB4 ; =0xEFFFFFFF + lsr r0, r0, #0x3 + and r1, r2 + orr r0, r1 + str r0, [r5, #0x50] + add r0, r6, #0x0 + mov r1, #0xaf + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _0207AC16 + ldr r0, [r5, #0x50] + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + bne _0207AC16 + ldrb r1, [r5, #0x12] + mov r0, #0x80 + bic r1, r0 + strb r1, [r5, #0x12] + b _0207AC1E +_0207AC16: + ldrb r1, [r5, #0x12] + mov r0, #0x80 + orr r0, r1 + strb r0, [r5, #0x12] +_0207AC1E: + add r0, r6, #0x0 + bl FUN_020689E0 + ldrb r1, [r5, #0x13] + mov r2, #0x3 + bic r1, r2 + mov r2, #0x3 + and r0, r2 + orr r0, r1 + strb r0, [r5, #0x13] + add r0, r6, #0x0 + mov r1, #0x9a + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1a + ldrb r1, [r5, #0x13] + mov r2, #0xfc + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r5, #0x13] + add r0, r6, #0x0 + mov r1, #0xb0 + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r5, #0x10] + add r0, r6, #0x0 + mov r1, #0xb1 + mov r2, #0x0 + bl FUN_020671BC + strb r0, [r5, #0x11] + add r0, r6, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_020671BC + str r0, [r5, #0x14] + add r0, r6, #0x0 + mov r1, #0x8 + mov r2, #0x0 + bl FUN_020671BC + str r0, [r5, #0x18] + add r0, r6, #0x0 + mov r1, #0x9c + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x44 + strb r0, [r1, #0x0] + ldrb r1, [r5, #0x12] + ldrh r0, [r5, #0xc] + lsl r1, r1, #0x19 + lsr r1, r1, #0x19 + bl FUN_02068758 + str r0, [r5, #0x1c] + ldrb r0, [r5, #0x12] + lsl r0, r0, #0x19 + lsr r1, r0, #0x19 + cmp r1, #0x64 + bne _0207ACAA + ldr r0, [r5, #0x1c] + b _0207ACB2 +_0207ACAA: + ldrh r0, [r5, #0xc] + add r1, r1, #0x1 + bl FUN_02068758 +_0207ACB2: + str r0, [r5, #0x20] + add r0, r6, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x24] + add r0, r6, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x26] + add r0, r6, #0x0 + mov r1, #0xa4 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x28] + add r0, r6, #0x0 + mov r1, #0xa5 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x2a] + add r0, r6, #0x0 + mov r1, #0xa7 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x2c] + add r0, r6, #0x0 + mov r1, #0xa8 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x2e] + add r0, r6, #0x0 + mov r1, #0xa6 + mov r2, #0x0 + bl FUN_020671BC + strh r0, [r5, #0x30] + add r0, r6, #0x0 + mov r1, #0xa + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x32 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_02068854 + add r1, r5, #0x0 + add r1, #0x33 + strb r0, [r1, #0x0] + mov r4, #0x0 +_0207AD26: + lsl r0, r4, #0x1 + add r0, r5, r0 + add r1, r4, #0x0 + str r0, [sp, #0x0] + add r0, r6, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [sp, #0x0] + mov r2, #0x0 + strh r0, [r1, #0x34] + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x3a + bl FUN_020671BC + add r1, r5, r4 + add r1, #0x3c + strb r0, [r1, #0x0] + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x0] + ldrh r0, [r0, #0x34] + bl FUN_0206AB30 + add r1, r5, r4 + add r1, #0x40 + strb r0, [r1, #0x0] + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x4 + blo _0207AD26 + add r0, r6, #0x0 + mov r1, #0x13 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x45 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x14 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x46 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x15 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x47 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x16 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x48 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x17 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x49 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x18 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x4a + strb r0, [r1, #0x0] + add r0, r5, #0x0 + mov r1, #0x5 + add r0, #0x4b + strb r1, [r0, #0x0] + mov r4, #0x0 +_0207ADE0: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02069BC8 + cmp r0, #0x1 + bne _0207ADF4 + add r0, r5, #0x0 + add r0, #0x4b + strb r4, [r0, #0x0] + b _0207ADFE +_0207ADF4: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x5 + blo _0207ADE0 +_0207ADFE: + add r0, r6, #0x0 + mov r1, #0xb + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x4c + strh r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + add r1, r5, #0x0 + add r1, #0x4e + strh r0, [r1, #0x0] + add r0, r6, #0x0 + bl FUN_0207C2D4 + mov r1, #0xf + ldr r2, [r5, #0x50] + lsl r1, r1, #0x1c + and r2, r1 + ldr r1, _0207AEB8 ; =0x0FFFFFFF + and r0, r1 + orr r0, r2 + str r0, [r5, #0x50] + add r0, r6, #0x0 + bl FUN_02069E94 + cmp r0, #0x1 + bne _0207AE4E + ldr r1, [r5, #0x50] + ldr r0, _0207AEBC ; =0x3FFFFFFF + and r1, r0 + mov r0, #0x2 + lsl r0, r0, #0x1e + orr r0, r1 + str r0, [r5, #0x50] + b _0207AE84 +_0207AE4E: + add r0, r6, #0x0 + bl FUN_02069E74 + cmp r0, #0x1 + bne _0207AE7C + ldr r2, [r5, #0x50] + ldr r1, _0207AEBC ; =0x3FFFFFFF + add r0, r5, #0x0 + and r2, r1 + add r1, r1, #0x1 + orr r1, r2 + str r1, [r5, #0x50] + lsl r1, r1, #0x4 + lsr r1, r1, #0x4 + add r0, #0x50 + cmp r1, #0x7 + bne _0207AE84 + mov r1, #0xf + ldr r2, [r0, #0x0] + lsl r1, r1, #0x1c + and r1, r2 + str r1, [r0, #0x0] + b _0207AE84 +_0207AE7C: + ldr r1, [r5, #0x50] + ldr r0, _0207AEBC ; =0x3FFFFFFF + and r0, r1 + str r0, [r5, #0x50] +_0207AE84: + add r0, r6, #0x0 + bl FUN_02068A80 + cmp r0, #0x1 + ldr r1, [r5, #0x50] + bne _0207AE98 + mov r0, #0x2 + lsl r0, r0, #0x1c + orr r0, r1 + b _0207AE9C +_0207AE98: + ldr r0, _0207AEC0 ; =0xDFFFFFFF + and r0, r1 +_0207AE9C: + str r0, [r5, #0x50] + mov r4, #0x0 + str r4, [r5, #0x54] + str r4, [r5, #0x58] + str r4, [r5, #0x5c] + ldr r0, _0207AEC4 ; =0x00000699 + b _0207AEC8 + nop +_0207AEAC: .word 0x00000674 +_0207AEB0: .word 0x0000067C +_0207AEB4: .word 0xEFFFFFFF +_0207AEB8: .word 0x0FFFFFFF +_0207AEBC: .word 0x3FFFFFFF +_0207AEC0: .word 0xDFFFFFFF +_0207AEC4: .word 0x00000699 +_0207AEC8: + str r4, [r5, #0x60] + strb r4, [r7, r0] +_0207AECC: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x0 + bl FUN_0207FC5C + add r1, r0, #0x0 + add r0, r6, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0207AF04 + lsr r0, r4, #0x5 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x1f + add r2, r4, #0x0 + and r2, r1 + mov r1, #0x1 + ldr r3, [r0, #0x54] + lsl r1, r2 + orr r1, r3 + str r1, [r0, #0x54] + ldr r0, _0207AF1C ; =0x00000699 + ldrb r0, [r7, r0] + add r1, r0, #0x1 + ldr r0, _0207AF1C ; =0x00000699 + strb r1, [r7, r0] +_0207AF04: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x50 + blo _0207AECC + ldr r1, [sp, #0x4] + add r0, r6, #0x0 + bl FUN_02066A20 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0207AF1C: .word 0x00000699 + + thumb_func_start FUN_0207AF20 +FUN_0207AF20: ; 0x0207AF20 + push {r3, lr} + mov r2, #0x2a + lsl r2, r2, #0x4 + ldr r1, [r0, r2] + lsl r1, r1, #0x3 + lsr r1, r1, #0x1f + bne _0207AF54 + add r1, r2, #0x0 + sub r1, #0x44 + ldrh r3, [r0, r1] + add r1, r2, #0x0 + sub r1, #0xe7 + cmp r3, r1 + bne _0207AF4E + sub r2, #0x54 + ldr r0, [r0, r2] + mov r1, #0x0 + ldr r0, [r0, #0x28] + mov r2, #0x64 + add r3, r1, #0x0 + bl FUN_02005E90 + pop {r3, pc} +_0207AF4E: + add r0, r3, #0x0 + bl FUN_02005578 +_0207AF54: + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0207AF58 +FUN_0207AF58: ; 0x0207AF58 + push {r4, lr} + mov r1, #0x93 + add r4, r0, #0x0 + lsl r1, r1, #0x2 + ldr r0, [r4, r1] + ldrb r0, [r0, #0x12] + cmp r0, #0x4 + bhi _0207AFA4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207AF74: ; jump table (using 16-bit offset) + .short _0207AF7E - _0207AF74 - 2; case 0 + .short _0207AF7E - _0207AF74 - 2; case 1 + .short _0207AF96 - _0207AF74 - 2; case 2 + .short _0207AF9E - _0207AF74 - 2; case 3 + .short _0207AF9E - _0207AF74 - 2; case 4 +_0207AF7E: + add r1, #0x54 + ldr r0, [r4, r1] + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + ldr r0, _0207AFFC ; =0x0000068C + bne _0207AF90 + mov r1, #0x0 + strb r1, [r4, r0] + b _0207AFA4 +_0207AF90: + mov r1, #0x1 + strb r1, [r4, r0] + b _0207AFA4 +_0207AF96: + ldr r0, _0207AFFC ; =0x0000068C + mov r1, #0x3 + strb r1, [r4, r0] + b _0207AFA4 +_0207AF9E: + ldr r0, _0207AFFC ; =0x0000068C + mov r1, #0x4 + strb r1, [r4, r0] +_0207AFA4: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + add r0, r4, #0x0 + bl FUN_0207C5D4 + add r0, r4, #0x0 + bl FUN_0207C838 + add r0, r4, #0x0 + bl FUN_0207D2C8 + add r0, r4, #0x0 + bl FUN_0207C6A4 + add r0, r4, #0x0 + bl FUN_0207CE4C + add r0, r4, #0x0 + bl FUN_0207CC24 + add r0, r4, #0x0 + bl FUN_0207D604 + add r0, r4, #0x0 + bl FUN_0207DD88 + add r0, r4, #0x0 + bl FUN_0207B228 + add r0, r4, #0x0 + bl FUN_0207F2A0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x2 + bne _0207AFFA + add r0, r4, #0x0 + bl FUN_0207BA74 +_0207AFFA: + pop {r4, pc} + .balign 4 +_0207AFFC: .word 0x0000068C + + thumb_func_start FUN_0207B000 +FUN_0207B000: ; 0x0207B000 + push {r3-r6} + mov r6, #0x0 + strb r6, [r0, #0x15] + add r0, #0x15 + mov r3, #0x1 +_0207B00A: + ldrb r5, [r1, r6] + cmp r5, #0x8 + beq _0207B024 + add r2, r3, #0x0 + ldrb r4, [r0, #0x0] + lsl r2, r5 + orr r2, r4 + strb r2, [r0, #0x0] + add r2, r6, #0x1 + lsl r2, r2, #0x18 + lsr r6, r2, #0x18 + cmp r6, #0x8 + blo _0207B00A +_0207B024: + pop {r3-r6} + bx lr + + thumb_func_start FUN_0207B028 +FUN_0207B028: ; 0x0207B028 + push {r3-r4} + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r4, [r0, r1] + ldr r1, [r4, #0x2c] + cmp r1, #0x1 + beq _0207B06C + ldrb r2, [r4, #0x15] + mov r1, #0x10 + add r3, r2, #0x0 + tst r3, r1 + beq _0207B044 + eor r1, r2 + strb r1, [r4, #0x15] +_0207B044: + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r4, [r0, r1] + mov r1, #0x20 + ldrb r2, [r4, #0x15] + add r3, r2, #0x0 + tst r3, r1 + beq _0207B058 + eor r1, r2 + strb r1, [r4, #0x15] +_0207B058: + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r3, [r0, r1] + mov r0, #0x40 + ldrb r1, [r3, #0x15] + add r2, r1, #0x0 + tst r2, r0 + beq _0207B06C + eor r0, r1 + strb r0, [r3, #0x15] +_0207B06C: + pop {r3-r4} + bx lr + + thumb_func_start FUN_0207B070 +FUN_0207B070: ; 0x0207B070 + mov r2, #0x2a + lsl r2, r2, #0x4 + ldr r2, [r0, r2] + lsl r2, r2, #0x3 + lsr r2, r2, #0x1f + beq _0207B088 + cmp r1, #0x1 + beq _0207B088 + cmp r1, #0x7 + beq _0207B088 + mov r0, #0x0 + bx lr +_0207B088: + mov r2, #0x93 + lsl r2, r2, #0x2 + ldr r0, [r0, r2] + ldrb r2, [r0, #0x15] + mov r0, #0x1 + lsl r0, r1 + and r0, r2 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start FUN_0207B09C +FUN_0207B09C: ; 0x0207B09C + push {r3-r4} + mov r3, #0x93 + lsl r3, r3, #0x2 + ldr r0, [r0, r3] + mov r2, #0x0 + ldrb r0, [r0, #0x15] + add r1, r2, #0x0 + mov r3, #0x1 +_0207B0AC: + add r4, r3, #0x0 + lsl r4, r1 + tst r4, r0 + beq _0207B0BA + add r2, r2, #0x1 + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 +_0207B0BA: + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x8 + blo _0207B0AC + add r0, r2, #0x0 + pop {r3-r4} + bx lr + .balign 4 + + thumb_func_start FUN_0207B0CC +FUN_0207B0CC: ; 0x0207B0CC + push {r3-r5, lr} + sub sp, #0x10 + add r4, r1, #0x0 + ldr r1, _0207B174 ; =0x0000068C + add r5, r0, #0x0 + ldrsb r1, [r5, r1] + cmp r1, r4 + beq _0207B170 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + ldrb r1, [r1, #0x12] + cmp r1, #0x2 + bne _0207B0EC + bl FUN_0207BDD8 +_0207B0EC: + add r0, r5, #0x0 + bl FUN_0207D6F8 + ldr r0, _0207B174 ; =0x0000068C + mov r1, #0x0 + strb r4, [r5, r0] + add r0, r5, #0x0 + bl FUN_0207CFAC + add r0, r5, #0x0 + bl FUN_0207C5D4 + add r0, r5, #0x0 + bl FUN_0207C6A4 + add r0, r5, #0x0 + bl FUN_0207C838 + add r0, r5, #0x0 + bl FUN_0207D2C8 + add r0, r5, #0x0 + bl FUN_0207CC24 + add r0, r5, #0x0 + bl FUN_0207D604 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0207D418 + mov r0, #0x4 + str r0, [sp, #0x0] + mov r0, #0x13 + str r0, [sp, #0x4] + mov r0, #0x14 + str r0, [sp, #0x8] + mov r2, #0x0 + str r2, [sp, #0xc] + ldr r0, [r5, #0x0] + mov r1, #0x1 + mov r3, #0xe + bl FUN_02018540 + ldr r0, [r5, #0x0] + mov r1, #0x1 + bl FUN_02017CD0 + add r0, r5, #0x0 + bl FUN_0207DD88 + add r0, r5, #0x0 + bl FUN_0207B228 + add r0, r5, #0x0 + bl FUN_0207F2A0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x2 + bne _0207B170 + add r0, r5, #0x0 + bl FUN_0207BDF4 +_0207B170: + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_0207B174: .word 0x0000068C + + thumb_func_start FUN_0207B178 +FUN_0207B178: ; 0x0207B178 + push {r3-r7, lr} + add r5, r0, #0x0 + ldr r0, _0207B1F8 ; =0x0000068C + mov r6, #0x1 + ldrsb r4, [r5, r0] + mov r0, #0x2a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r12, r4 + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + add r7, r6, #0x0 +_0207B190: + add r2, r4, r1 + lsl r2, r2, #0x18 + asr r4, r2, #0x18 + bpl _0207B19C + mov r4, #0x7 + b _0207B1A2 +_0207B19C: + cmp r4, #0x7 + ble _0207B1A2 + mov r4, #0x0 +_0207B1A2: + cmp r0, #0x0 + bne _0207B1B8 + mov r2, #0x93 + lsl r2, r2, #0x2 + ldr r2, [r5, r2] + ldrb r3, [r2, #0x15] + add r2, r6, #0x0 + lsl r2, r4 + tst r2, r3 + bne _0207B1D0 + b _0207B190 +_0207B1B8: + mov r2, #0x93 + lsl r2, r2, #0x2 + ldr r2, [r5, r2] + ldrb r3, [r2, #0x15] + add r2, r7, #0x0 + lsl r2, r4 + tst r2, r3 + beq _0207B190 + cmp r4, #0x1 + beq _0207B1D0 + cmp r4, #0x7 + bne _0207B190 +_0207B1D0: + mov r0, r12 + cmp r4, r0 + beq _0207B1F4 + ldr r0, _0207B1FC ; =0x000005E1 + bl FUN_020054C8 + add r0, r5, #0x0 + bl FUN_0207FA38 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0207D418 + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_0207B0CC +_0207B1F4: + pop {r3-r7, pc} + nop +_0207B1F8: .word 0x0000068C +_0207B1FC: .word 0x000005E1 + + thumb_func_start FUN_0207B200 +FUN_0207B200: ; 0x0207B200 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0207FA80 + cmp r0, #0xff + bne _0207B210 + mov r0, #0x0 + pop {r4, pc} +_0207B210: + ldr r1, _0207B224 ; =0x00000694 + mov r3, #0x0 + strb r3, [r4, r1] + add r2, r1, #0x2 + strb r0, [r4, r2] + add r0, r1, #0x1 + strb r3, [r4, r0] + mov r0, #0x1 + pop {r4, pc} + nop +_0207B224: .word 0x00000694 + + thumb_func_start FUN_0207B228 +FUN_0207B228: ; 0x0207B228 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r5, r0] + ldrb r0, [r1, #0x12] + cmp r0, #0x2 + bne _0207B250 + ldrh r0, [r1, #0x18] + cmp r0, #0x0 + beq _0207B250 + ldr r0, _0207B2AC ; =0x0000068C + ldrsb r0, [r5, r0] + cmp r0, #0x3 + bne _0207B24C + mov r1, #0xc + b _0207B256 +_0207B24C: + mov r1, #0xd + b _0207B256 +_0207B250: + ldr r0, _0207B2AC ; =0x0000068C + ldrsb r0, [r5, r0] + add r1, r0, #0x3 +_0207B256: + mov r0, #0x27 + mov r2, #0x13 + bl LoadFromNarc_2 + add r1, sp, #0xc + add r4, r0, #0x0 + blx FUN_020B0180 + mov r3, #0x0 + str r3, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r0, [r5, #0x0] + mov r1, #0x3 + add r2, #0xc + bl FUN_02018148 + ldr r0, [r5, #0x0] + mov r1, #0x3 + bl FUN_0201AC68 + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, _0207B2AC ; =0x0000068C + ldrsb r0, [r5, r0] + cmp r0, #0x0 + bne _0207B29C + add r0, r5, #0x0 + bl FUN_0207B364 + add sp, #0x10 + pop {r3-r5, pc} +_0207B29C: + cmp r0, #0x2 + bne _0207B2A6 + add r0, r5, #0x0 + bl FUN_0207B2B0 +_0207B2A6: + add sp, #0x10 + pop {r3-r5, pc} + nop +_0207B2AC: .word 0x0000068C + + thumb_func_start FUN_0207B2B0 +FUN_0207B2B0: ; 0x0207B2B0 + push {r4-r7, lr} + sub sp, #0x14 + mov r1, #0x9d + add r6, r0, #0x0 + lsl r1, r1, #0x2 + ldrh r0, [r6, r1] + add r1, r1, #0x2 + ldrh r1, [r6, r1] + mov r2, #0x30 + bl FUN_02079A54 + cmp r0, #0x4 + bhi _0207B2EC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207B2D6: ; jump table (using 16-bit offset) + .short _0207B2E0 - _0207B2D6 - 2; case 0 + .short _0207B2E8 - _0207B2D6 - 2; case 1 + .short _0207B2E4 - _0207B2D6 - 2; case 2 + .short _0207B2E0 - _0207B2D6 - 2; case 3 + .short _0207B2E0 - _0207B2D6 - 2; case 4 +_0207B2E0: + ldr r7, _0207B35C ; =0x0000A0C0 + b _0207B2EC +_0207B2E4: + ldr r7, _0207B360 ; =0x0000A0E0 + b _0207B2EC +_0207B2E8: + mov r7, #0xa1 + lsl r7, r7, #0x8 +_0207B2EC: + mov r1, #0x9d + lsl r1, r1, #0x2 + ldrh r0, [r6, r1] + add r1, r1, #0x2 + ldrh r1, [r6, r1] + mov r2, #0x30 + bl FUN_02079A0C + add r4, r0, #0x0 + add r0, r7, #0x0 + add r0, #0x8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r5, #0x0 + str r0, [sp, #0x10] +_0207B30A: + cmp r4, #0x8 + blo _0207B312 + ldr r2, [sp, #0x10] + b _0207B318 +_0207B312: + add r0, r7, r4 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_0207B318: + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r3, r5, #0x0 + str r0, [sp, #0x8] + mov r0, #0x11 + add r3, #0x18 + str r0, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [r6, #0x0] + mov r1, #0x3 + lsr r3, r3, #0x18 + bl FUN_02018540 + cmp r4, #0x8 + bhs _0207B33E + mov r4, #0x0 + b _0207B344 +_0207B33E: + sub r4, #0x8 + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 +_0207B344: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x6 + blo _0207B30A + ldr r0, [r6, #0x0] + mov r1, #0x3 + bl FUN_0201AC68 + add sp, #0x14 + pop {r4-r7, pc} + nop +_0207B35C: .word 0x0000A0C0 +_0207B360: .word 0x0000A0E0 + + thumb_func_start FUN_0207B364 +FUN_0207B364: ; 0x0207B364 + push {r3-r7, lr} + sub sp, #0x10 + ldr r2, _0207B3EC ; =0x00000262 + add r6, r0, #0x0 + ldrb r0, [r6, r2] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + cmp r0, #0x64 + bhs _0207B38C + add r0, r2, #0x0 + add r1, r2, #0x0 + add r0, #0xa + add r1, #0xe + add r2, r2, #0x6 + ldr r0, [r6, r0] + ldr r1, [r6, r1] + ldr r2, [r6, r2] + sub r1, r1, r0 + sub r0, r2, r0 + b _0207B390 +_0207B38C: + mov r1, #0x0 + add r0, r1, #0x0 +_0207B390: + mov r2, #0x38 + bl FUN_02079A0C + add r4, r0, #0x0 + mov r5, #0x0 + mov r7, #0x17 +_0207B39C: + cmp r4, #0x8 + blo _0207B3A4 + mov r2, #0xb4 + b _0207B3AC +_0207B3A4: + add r0, r4, #0x0 + add r0, #0xac + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_0207B3AC: + str r7, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r3, r5, #0x0 + str r0, [sp, #0x8] + mov r0, #0x11 + add r3, #0x17 + str r0, [sp, #0xc] + lsl r3, r3, #0x18 + ldr r0, [r6, #0x0] + mov r1, #0x3 + lsr r3, r3, #0x18 + bl FUN_02018540 + cmp r4, #0x8 + bhs _0207B3D0 + mov r4, #0x0 + b _0207B3D6 +_0207B3D0: + sub r4, #0x8 + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 +_0207B3D6: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x7 + blo _0207B39C + ldr r0, [r6, #0x0] + mov r1, #0x3 + bl FUN_0201AC68 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0207B3EC: .word 0x00000262 + + thumb_func_start FUN_0207B3F0 +FUN_0207B3F0: ; 0x0207B3F0 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0207B4A4 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _0207B49C + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + strb r0, [r1, #0x14] + add r0, r4, #0x0 + bl FUN_0207AAB0 + add r0, r4, #0x0 + bl FUN_0207AF20 + add r0, r4, #0x0 + bl FUN_0207D768 + add r0, r4, #0x0 + bl FUN_0207D800 + add r0, r4, #0x0 + bl FUN_0207D8A0 + ldr r0, _0207B4A0 ; =0x0000068C + ldrsb r0, [r4, r0] + cmp r0, #0x0 + bne _0207B436 + add r0, r4, #0x0 + bl FUN_0207B364 + b _0207B44C +_0207B436: + cmp r0, #0x2 + bne _0207B442 + add r0, r4, #0x0 + bl FUN_0207B2B0 + b _0207B44C +_0207B442: + cmp r0, #0x4 + bne _0207B44C + add r0, r4, #0x0 + bl FUN_0207F608 +_0207B44C: + add r0, r4, #0x0 + bl FUN_0207F934 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + add r0, r4, #0x0 + bl FUN_0207C5D4 + add r0, r4, #0x0 + bl FUN_0207C6A4 + add r0, r4, #0x0 + bl FUN_0207CA44 + add r0, r4, #0x0 + bl FUN_0207C838 + add r0, r4, #0x0 + bl FUN_0207D2C8 + add r0, r4, #0x0 + bl FUN_0207CFEC + add r0, r4, #0x0 + bl FUN_0207C71C + add r0, r4, #0x0 + bl FUN_0207C77C + add r0, r4, #0x0 + bl FUN_0207CC24 + add r0, r4, #0x0 + bl FUN_0207CE4C + add r0, r4, #0x0 + bl FUN_0207DD88 +_0207B49C: + pop {r4, pc} + nop +_0207B4A0: .word 0x0000068C + + thumb_func_start FUN_0207B4A4 +FUN_0207B4A4: ; 0x0207B4A4 + push {r3, lr} + mov r2, #0x93 + lsl r2, r2, #0x2 + ldr r2, [r0, r2] + ldrb r2, [r2, #0x11] + cmp r2, #0x0 + beq _0207B4BC + cmp r2, #0x1 + beq _0207B4C2 + cmp r2, #0x2 + beq _0207B4C8 + b _0207B4CE +_0207B4BC: + bl FUN_0207B4FC + pop {r3, pc} +_0207B4C2: + bl FUN_0207B564 + pop {r3, pc} +_0207B4C8: + bl FUN_0207B5C0 + pop {r3, pc} +_0207B4CE: + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} + + thumb_func_start FUN_0207B4D4 +FUN_0207B4D4: ; 0x0207B4D4 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r0, r1] + ldrb r1, [r1, #0x12] + cmp r1, #0x3 + bne _0207B4E4 + mov r0, #0x0 + bx lr +_0207B4E4: + ldr r1, _0207B4F8 ; =0x0000068C + ldrsb r0, [r0, r1] + cmp r0, #0x1 + beq _0207B4F4 + cmp r0, #0x7 + beq _0207B4F4 + mov r0, #0x0 + bx lr +_0207B4F4: + mov r0, #0x1 + bx lr + .balign 4 +_0207B4F8: .word 0x0000068C + + thumb_func_start FUN_0207B4FC +FUN_0207B4FC: ; 0x0207B4FC + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + str r1, [sp, #0x0] + ldr r1, [r5, r0] + mov r0, #0x14 + ldrsb r4, [r1, r0] +_0207B50C: + ldr r0, [sp, #0x0] + add r0, r4, r0 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + bmi _0207B522 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldrb r0, [r0, #0x13] + cmp r4, r0 + blt _0207B528 +_0207B522: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0207B528: + bl FUN_020690C4 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + add r7, r4, #0x0 + ldr r6, [r1, #0x0] + mul r7, r0 + add r0, r6, r7 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0207B50C + add r0, r6, r7 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0207B55E + add r0, r5, #0x0 + bl FUN_0207B4D4 + cmp r0, #0x1 + bne _0207B50C +_0207B55E: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207B564 +FUN_0207B564: ; 0x0207B564 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + add r7, r1, #0x0 + ldr r1, [r5, r0] + mov r0, #0x14 + ldrsb r4, [r1, r0] +_0207B574: + add r0, r4, r7 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + bmi _0207B588 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r5, r0] + ldrb r0, [r1, #0x13] + cmp r4, r0 + blt _0207B58E +_0207B588: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0207B58E: + ldr r0, [r1, #0x0] + add r1, r4, #0x0 + bl FUN_0206B9B0 + mov r1, #0x5 + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0207B574 + add r0, r6, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _0207B5BC + add r0, r5, #0x0 + bl FUN_0207B4D4 + cmp r0, #0x1 + bne _0207B574 +_0207B5BC: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0207B5C0 +FUN_0207B5C0: ; 0x0207B5C0 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + str r1, [sp, #0x0] + ldr r1, [r5, r0] + mov r0, #0x14 + ldrsb r4, [r1, r0] +_0207B5D0: + ldr r0, [sp, #0x0] + add r0, r4, r0 + lsl r0, r0, #0x18 + asr r4, r0, #0x18 + bmi _0207B5E6 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldrb r0, [r0, #0x13] + cmp r4, r0 + blt _0207B5EC +_0207B5E6: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_0207B5EC: + bl FUN_020690C8 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + add r7, r4, #0x0 + ldr r6, [r1, #0x0] + mul r7, r0 + add r0, r6, r7 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _0207B5D0 + add r0, r6, r7 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _0207B622 + add r0, r5, #0x0 + bl FUN_0207B4D4 + cmp r0, #0x1 + bne _0207B5D0 +_0207B622: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207B628 +FUN_0207B628: ; 0x0207B628 + push {r4, lr} + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r4, [r0, r1] + ldrb r0, [r4, #0x11] + cmp r0, #0x0 + beq _0207B640 + cmp r0, #0x1 + beq _0207B64E + cmp r0, #0x2 + beq _0207B658 + b _0207B666 +_0207B640: + bl FUN_020690C4 + ldrb r1, [r4, #0x14] + ldr r2, [r4, #0x0] + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0207B64E: + ldrb r1, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9B0 + pop {r4, pc} +_0207B658: + bl FUN_020690C8 + ldrb r1, [r4, #0x14] + ldr r2, [r4, #0x0] + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} +_0207B666: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207B66C +FUN_0207B66C: ; 0x0207B66C + push {r4, lr} + ldr r1, _0207B774 ; =0x0000068E + add r4, r0, #0x0 + ldrb r1, [r4, r1] + cmp r1, #0x0 + beq _0207B682 + cmp r1, #0x1 + beq _0207B6E2 + cmp r1, #0x2 + beq _0207B70E + b _0207B76E +_0207B682: + ldr r0, [r4, #0x0] + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x88 + bl FUN_0201AEE4 + ldr r0, [r4, #0x0] + mov r1, #0x2 + mov r2, #0x3 + mov r3, #0x0 + bl FUN_0201AEE4 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207C6F0 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_0201958C + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + ldr r1, _0207B778 ; =0x0000068D + mov r0, #0xf + ldrb r2, [r4, r1] + bic r2, r0 + strb r2, [r4, r1] + mov r2, #0x1 + add r0, r1, #0x1 + strb r2, [r4, r0] + b _0207B76E +_0207B6E2: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_02017B48 + cmp r0, #0x40 + ldr r0, [r4, #0x0] + bgt _0207B702 + mov r2, #0x0 + mov r1, #0x2 + add r3, r2, #0x0 + bl FUN_0201AEE4 + ldr r0, _0207B774 ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + b _0207B76E +_0207B702: + mov r1, #0x2 + add r2, r1, #0x0 + mov r3, #0x40 + bl FUN_0201AEE4 + b _0207B76E +_0207B70E: + bl FUN_0207ECDC + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x1 + beq _0207B732 + add r0, r4, #0x0 + mov r1, #0x98 + bl FUN_0207D924 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC +_0207B732: + add r0, r4, #0x0 + bl FUN_0207B8D8 + ldr r0, _0207B77C ; =0x00000434 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C + add r0, r4, #0x0 + bl FUN_0207D06C + mov r0, #0x26 + lsl r0, r0, #0x4 + ldrb r1, [r4, r0] + add r0, r0, #0x1 + ldrb r0, [r4, r0] + cmp r1, r0 + beq _0207B760 + ldr r0, _0207B780 ; =0x00000438 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C +_0207B760: + ldr r0, _0207B784 ; =0x0000042C + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x1 + pop {r4, pc} +_0207B76E: + mov r0, #0x0 + pop {r4, pc} + nop +_0207B774: .word 0x0000068E +_0207B778: .word 0x0000068D +_0207B77C: .word 0x00000434 +_0207B780: .word 0x00000438 +_0207B784: .word 0x0000042C + + thumb_func_start FUN_0207B788 +FUN_0207B788: ; 0x0207B788 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207B864 ; =0x0000068E + ldrb r0, [r4, r0] + cmp r0, #0x0 + beq _0207B79E + cmp r0, #0x1 + beq _0207B7F8 + cmp r0, #0x2 + beq _0207B824 + b _0207B860 +_0207B79E: + ldr r0, _0207B868 ; =0x00000434 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C63C + ldr r0, _0207B86C ; =0x00000438 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C63C + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200C63C + ldr r0, _0207B870 ; =0x00000454 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C63C + ldr r0, _0207B874 ; =0x0000042C + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + add r0, r4, #0x0 + bl FUN_0207ED18 + add r0, r4, #0x0 + bl FUN_0207EC94 + ldr r0, _0207B864 ; =0x0000068E + mov r1, #0x1 + strb r1, [r4, r0] + b _0207B860 +_0207B7F8: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_02017B48 + cmp r0, #0x80 + ldr r0, [r4, #0x0] + blt _0207B818 + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x88 + bl FUN_0201AEE4 + ldr r0, _0207B864 ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + b _0207B860 +_0207B818: + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x40 + bl FUN_0201AEE4 + b _0207B860 +_0207B824: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_02019220 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + add r0, r4, #0x0 + mov r1, #0x81 + bl FUN_0207D924 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0207C6F0 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + mov r0, #0x1 + pop {r4, pc} +_0207B860: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0207B864: .word 0x0000068E +_0207B868: .word 0x00000434 +_0207B86C: .word 0x00000438 +_0207B870: .word 0x00000454 +_0207B874: .word 0x0000042C + + thumb_func_start FUN_0207B878 +FUN_0207B878: ; 0x0207B878 + push {r4-r7} + add r5, r0, #0x0 + ldr r0, _0207B8D4 ; =0x0000068D + mov r6, #0xa1 + ldrb r0, [r5, r0] + mov r2, #0x4 + lsl r6, r6, #0x2 + lsl r0, r0, #0x1c + lsr r4, r0, #0x1c + add r3, r4, #0x0 + mov r0, #0x0 +_0207B88E: + add r3, r3, r1 + lsl r3, r3, #0x18 + asr r3, r3, #0x18 + bpl _0207B89A + add r3, r2, #0x0 + b _0207B8A0 +_0207B89A: + cmp r3, #0x5 + bne _0207B8A0 + add r3, r0, #0x0 +_0207B8A0: + lsl r7, r3, #0x1 + add r7, r5, r7 + ldrh r7, [r7, r6] + cmp r7, #0x0 + bne _0207B8AE + cmp r3, #0x4 + bne _0207B88E +_0207B8AE: + cmp r3, r4 + beq _0207B8CC + ldr r2, _0207B8D4 ; =0x0000068D + mov r1, #0xf + ldrb r0, [r5, r2] + bic r0, r1 + lsl r1, r3, #0x18 + lsr r3, r1, #0x18 + mov r1, #0xf + and r1, r3 + orr r0, r1 + strb r0, [r5, r2] + mov r0, #0x1 + pop {r4-r7} + bx lr +_0207B8CC: + mov r0, #0x0 + pop {r4-r7} + bx lr + nop +_0207B8D4: .word 0x0000068D + + thumb_func_start FUN_0207B8D8 +FUN_0207B8D8: ; 0x0207B8D8 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0207CBC0 + ldr r2, _0207B95C ; =0x0000068D + ldrb r0, [r4, r2] + lsl r0, r0, #0x1c + lsr r1, r0, #0x1c + cmp r1, #0x4 + bne _0207B930 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrh r1, [r0, #0x18] + cmp r1, #0x0 + beq _0207B910 + sub r0, r2, #0x1 + ldrsb r0, [r4, r0] + cmp r0, #0x3 + bne _0207B908 + add r0, r4, #0x0 + bl FUN_0207B960 + pop {r4, pc} +_0207B908: + add r0, r4, #0x0 + bl FUN_0207B99C + pop {r4, pc} +_0207B910: + sub r0, r2, #0x1 + ldrsb r0, [r4, r0] + cmp r0, #0x3 + bne _0207B924 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + bl FUN_0207B960 + pop {r4, pc} +_0207B924: + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + bl FUN_0207B99C + pop {r4, pc} +_0207B930: + sub r0, r2, #0x1 + ldrsb r0, [r4, r0] + cmp r0, #0x3 + bne _0207B94A + lsl r1, r1, #0x1 + add r2, r4, r1 + mov r1, #0xa1 + lsl r1, r1, #0x2 + ldrh r1, [r2, r1] + add r0, r4, #0x0 + bl FUN_0207B960 + pop {r4, pc} +_0207B94A: + lsl r1, r1, #0x1 + add r2, r4, r1 + mov r1, #0xa1 + lsl r1, r1, #0x2 + ldrh r1, [r2, r1] + add r0, r4, #0x0 + bl FUN_0207B99C + pop {r4, pc} + .balign 4 +_0207B95C: .word 0x0000068D + + thumb_func_start FUN_0207B960 +FUN_0207B960: ; 0x0207B960 + push {r3-r5, lr} + mov r2, #0x0 + add r4, r1, #0x0 + mvn r2, r2 + add r5, r0, #0x0 + cmp r4, r2 + bne _0207B980 + bl FUN_0207EC94 + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_0200C63C + pop {r3-r5, pc} +_0207B980: + bl FUN_0207EB64 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207CB70 + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_0200C63C + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0207B99C +FUN_0207B99C: ; 0x0207B99C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0207BD84 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + bne _0207B9B6 + add r0, r5, #0x0 + bl FUN_0207EEB0 + pop {r3-r5, pc} +_0207B9B6: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207EE2C + pop {r3-r5, pc} + + thumb_func_start FUN_0207B9C0 +FUN_0207B9C0: ; 0x0207B9C0 + push {r3-r7, lr} + add r4, r0, #0x0 + bl FUN_0207B628 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldrb r1, [r1, #0x11] + cmp r1, #0x2 + ldr r1, _0207BA70 ; =0x0000068D + bne _0207B9E6 + ldrb r2, [r4, r1] + lsl r1, r2, #0x1c + lsl r2, r2, #0x18 + lsr r1, r1, #0x1c + lsr r2, r2, #0x1c + bl FUN_020698E8 + b _0207B9F4 +_0207B9E6: + ldrb r2, [r4, r1] + lsl r1, r2, #0x1c + lsl r2, r2, #0x18 + lsr r1, r1, #0x1c + lsr r2, r2, #0x1c + bl FUN_020698E0 +_0207B9F4: + ldr r0, _0207BA70 ; =0x0000068D + mov r1, #0xa1 + ldrb r6, [r4, r0] + lsl r1, r1, #0x2 + add r5, r4, r1 + lsl r2, r6, #0x1c + lsl r6, r6, #0x18 + lsr r6, r6, #0x1c + lsl r6, r6, #0x1 + lsr r3, r2, #0x1b + add r6, r4, r6 + ldrh r2, [r5, r3] + ldrh r6, [r6, r1] + strh r6, [r5, r3] + ldrb r3, [r4, r0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1c + lsl r3, r3, #0x1 + add r3, r4, r3 + strh r2, [r3, r1] + add r2, r1, #0x0 + add r2, #0x8 + ldrb r6, [r4, r0] + add r5, r4, r2 + lsl r2, r6, #0x1c + lsl r6, r6, #0x18 + lsr r6, r6, #0x1c + add r7, r4, r6 + add r6, r1, #0x0 + lsr r3, r2, #0x1c + add r6, #0x8 + ldrb r2, [r5, r3] + ldrb r6, [r7, r6] + strb r6, [r5, r3] + ldrb r3, [r4, r0] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1c + add r5, r4, r3 + add r3, r1, #0x0 + add r3, #0x8 + strb r2, [r5, r3] + add r2, r1, #0x0 + add r2, #0xc + ldrb r6, [r4, r0] + add r5, r4, r2 + lsl r2, r6, #0x1c + lsl r6, r6, #0x18 + lsr r6, r6, #0x1c + add r7, r4, r6 + add r6, r1, #0x0 + lsr r3, r2, #0x1c + add r6, #0xc + ldrb r2, [r5, r3] + ldrb r6, [r7, r6] + add r1, #0xc + strb r6, [r5, r3] + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + add r0, r4, r0 + strb r2, [r0, r1] + pop {r3-r7, pc} + .balign 4 +_0207BA70: .word 0x0000068D + + thumb_func_start FUN_0207BA74 +FUN_0207BA74: ; 0x0207BA74 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_0201958C + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r2, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x2 + add r3, r2, #0x0 + bl FUN_0201AEE4 + add r0, r4, #0x0 + bl FUN_0207ECDC + add r0, r4, #0x0 + bl FUN_0207B8D8 + ldr r0, _0207BAE0 ; =0x00000434 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C + add r0, r4, #0x0 + bl FUN_0207D06C + mov r0, #0x26 + lsl r0, r0, #0x4 + ldrb r1, [r4, r0] + add r0, r0, #0x1 + ldrb r0, [r4, r0] + cmp r1, r0 + beq _0207BAD4 + ldr r0, _0207BAE4 ; =0x00000438 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C +_0207BAD4: + ldr r0, _0207BAE8 ; =0x0000042C + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} + .balign 4 +_0207BAE0: .word 0x00000434 +_0207BAE4: .word 0x00000438 +_0207BAE8: .word 0x0000042C + + thumb_func_start FUN_0207BAEC +FUN_0207BAEC: ; 0x0207BAEC + push {r4, lr} + ldr r1, _0207BBE4 ; =0x0000068E + add r4, r0, #0x0 + ldrb r1, [r4, r1] + cmp r1, #0x0 + beq _0207BB02 + cmp r1, #0x1 + beq _0207BB6E + cmp r1, #0x2 + beq _0207BB9A + b _0207BBDE +_0207BB02: + ldr r0, [r4, #0x0] + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x88 + bl FUN_0201AEE4 + mov r2, #0x3 + add r3, r2, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x2 + add r3, #0xfd + bl FUN_0201AEE4 + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + bl FUN_0207BD84 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207C6F0 + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_0201958C + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + ldr r1, _0207BBE8 ; =0x0000068D + mov r0, #0xf + ldrb r2, [r4, r1] + bic r2, r0 + strb r2, [r4, r1] + mov r2, #0x1 + add r0, r1, #0x1 + strb r2, [r4, r0] + b _0207BBDE +_0207BB6E: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_02017B48 + cmp r0, #0x40 + ldr r0, [r4, #0x0] + bgt _0207BB8E + mov r2, #0x0 + mov r1, #0x2 + add r3, r2, #0x0 + bl FUN_0201AEE4 + ldr r0, _0207BBE4 ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + b _0207BBDE +_0207BB8E: + mov r1, #0x2 + add r2, r1, #0x0 + mov r3, #0x40 + bl FUN_0201AEE4 + b _0207BBDE +_0207BB9A: + bl FUN_0207ECDC + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x1 + beq _0207BBBE + add r0, r4, #0x0 + mov r1, #0x98 + bl FUN_0207D924 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC +_0207BBBE: + add r0, r4, #0x0 + bl FUN_0207B8D8 + add r0, r4, #0x0 + bl FUN_0207D06C + add r0, r4, #0x0 + bl FUN_0207D10C + ldr r0, _0207BBEC ; =0x0000042C + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x1 + pop {r4, pc} +_0207BBDE: + mov r0, #0x0 + pop {r4, pc} + nop +_0207BBE4: .word 0x0000068E +_0207BBE8: .word 0x0000068D +_0207BBEC: .word 0x0000042C + + thumb_func_start FUN_0207BBF0 +FUN_0207BBF0: ; 0x0207BBF0 + push {r4, lr} + ldr r1, _0207BCBC ; =0x0000068E + add r4, r0, #0x0 + ldrb r1, [r4, r1] + cmp r1, #0x0 + beq _0207BC06 + cmp r1, #0x1 + beq _0207BC4E + cmp r1, #0x2 + beq _0207BC7A + b _0207BCB6 +_0207BC06: + bl FUN_0207D22C + ldr r0, _0207BCC0 ; =0x00000454 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C63C + mov r1, #0x0 + add r0, r4, #0x0 + mvn r1, r1 + bl FUN_0207BD84 + ldr r0, _0207BCC4 ; =0x0000042C + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + add r0, r4, #0x0 + bl FUN_0207ED18 + add r0, r4, #0x0 + bl FUN_0207EEB0 + ldr r0, _0207BCBC ; =0x0000068E + mov r1, #0x1 + strb r1, [r4, r0] + b _0207BCB6 +_0207BC4E: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_02017B48 + cmp r0, #0x80 + ldr r0, [r4, #0x0] + blt _0207BC6E + mov r1, #0x2 + mov r2, #0x0 + mov r3, #0x88 + bl FUN_0201AEE4 + ldr r0, _0207BCBC ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + b _0207BCB6 +_0207BC6E: + mov r1, #0x2 + mov r2, #0x1 + mov r3, #0x40 + bl FUN_0201AEE4 + b _0207BCB6 +_0207BC7A: + mov r0, #0x85 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_02019220 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + add r0, r4, #0x0 + mov r1, #0x9e + bl FUN_0207D924 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0207C6F0 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + mov r0, #0x1 + pop {r4, pc} +_0207BCB6: + mov r0, #0x0 + pop {r4, pc} + nop +_0207BCBC: .word 0x0000068E +_0207BCC0: .word 0x00000454 +_0207BCC4: .word 0x0000042C + + thumb_func_start FUN_0207BCC8 +FUN_0207BCC8: ; 0x0207BCC8 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x2f + str r0, [sp, #0x0] + mov r0, #0x1 + lsl r6, r2, #0x1 + add r4, r1, #0x0 + str r0, [sp, #0x4] + add r7, r6, #0x2 + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + lsl r3, r7, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + add r2, r4, #0x0 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #0x2f + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r6, r6, #0x3 + str r0, [sp, #0x8] + mov r0, #0x10 + add r2, r4, #0x1 + str r0, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r6, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #0x30 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r2, r4, #0x0 + str r0, [sp, #0x8] + mov r0, #0x10 + add r2, #0x20 + str r0, [sp, #0xc] + lsl r2, r2, #0x10 + lsl r3, r7, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + mov r0, #0x30 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r0, #0x10 + add r4, #0x21 + str r0, [sp, #0xc] + lsl r2, r4, #0x10 + lsl r3, r6, #0x18 + ldr r0, [r5, #0x0] + mov r1, #0x2 + lsr r2, r2, #0x10 + lsr r3, r3, #0x18 + bl FUN_02018540 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_0207BD58 +FUN_0207BD58: ; 0x0207BD58 + push {r4-r6, lr} + ldr r6, _0207BD80 ; =0x0000012E + add r5, r0, #0x0 + mov r4, #0x0 +_0207BD60: + lsl r2, r4, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + lsr r2, r2, #0x18 + bl FUN_0207BCC8 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x6 + blo _0207BD60 + ldr r0, [r5, #0x0] + mov r1, #0x2 + bl FUN_0201AC68 + pop {r4-r6, pc} + .balign 4 +_0207BD80: .word 0x0000012E + + thumb_func_start FUN_0207BD84 +FUN_0207BD84: ; 0x0207BD84 + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0207BD58 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _0207BDCC + add r0, r4, #0x0 + mov r1, #0xa + bl FUN_0206AB18 + bl FUN_02083114 + mov r1, #0xa + blx _s32_div_f + lsl r0, r0, #0x18 + asr r6, r0, #0x18 + mov r4, #0x0 + cmp r6, #0x0 + ble _0207BDCC + mov r7, #0x4b + lsl r7, r7, #0x2 +_0207BDB6: + lsl r2, r4, #0x18 + add r0, r5, #0x0 + add r1, r7, #0x0 + lsr r2, r2, #0x18 + bl FUN_0207BCC8 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r6 + blt _0207BDB6 +_0207BDCC: + ldr r0, [r5, #0x0] + mov r1, #0x2 + bl FUN_0201AC68 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207BDD8 +FUN_0207BDD8: ; 0x0207BDD8 + push {r3, lr} + ldr r1, _0207BDF0 ; =0x0000068C + ldrsb r1, [r0, r1] + cmp r1, #0x3 + bne _0207BDE8 + bl FUN_0207EC94 + pop {r3, pc} +_0207BDE8: + bl FUN_0207EEB0 + pop {r3, pc} + nop +_0207BDF0: .word 0x0000068C + + thumb_func_start FUN_0207BDF4 +FUN_0207BDF4: ; 0x0207BDF4 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0207ECDC + add r0, r4, #0x0 + bl FUN_0207B8D8 + add r0, r4, #0x0 + bl FUN_0207D06C + ldr r0, _0207BE5C ; =0x0000068C + ldrsb r0, [r4, r0] + cmp r0, #0x3 + bne _0207BE46 + add r0, r4, #0x0 + bl FUN_0207D22C + ldr r0, _0207BE60 ; =0x00000434 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C + mov r0, #0x26 + lsl r0, r0, #0x4 + ldrb r1, [r4, r0] + add r0, r0, #0x1 + ldrb r0, [r4, r0] + cmp r1, r0 + beq _0207BE38 + ldr r0, _0207BE64 ; =0x00000438 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C +_0207BE38: + ldr r0, [r4, #0x0] + mov r1, #0x2 + mov r2, #0x3 + mov r3, #0x0 + bl FUN_0201AEE4 + pop {r4, pc} +_0207BE46: + add r0, r4, #0x0 + bl FUN_0207D10C + mov r2, #0x3 + add r3, r2, #0x0 + ldr r0, [r4, #0x0] + mov r1, #0x2 + add r3, #0xfd + bl FUN_0201AEE4 + pop {r4, pc} + .balign 4 +_0207BE5C: .word 0x0000068C +_0207BE60: .word 0x00000434 +_0207BE64: .word 0x00000438 + + thumb_func_start FUN_0207BE68 +FUN_0207BE68: ; 0x0207BE68 + push {r4, lr} + ldr r1, _0207BF78 ; =0x0000068E + add r4, r0, #0x0 + ldrb r1, [r4, r1] + cmp r1, #0x0 + beq _0207BE7E + cmp r1, #0x1 + beq _0207BEEA + cmp r1, #0x2 + beq _0207BF16 + b _0207BF74 +_0207BE7E: + mov r1, #0x2 + add r3, r1, #0x0 + ldr r0, [r4, #0x0] + mov r2, #0x0 + add r3, #0xfe + bl FUN_0201AEE4 + ldr r0, [r4, #0x0] + mov r1, #0x2 + mov r2, #0x3 + mov r3, #0x0 + bl FUN_0201AEE4 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207C6F0 + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_0201958C + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x79 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201958C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + ldr r1, _0207BF7C ; =0x00000697 + mov r2, #0x0 + strb r2, [r4, r1] + add r0, r1, #0x1 + strb r2, [r4, r0] + mov r0, #0x1 + sub r1, #0x9 + strb r0, [r4, r1] + b _0207BF74 +_0207BEEA: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_02017B54 + cmp r0, #0x30 + ldr r0, [r4, #0x0] + blt _0207BF0A + mov r1, #0x2 + mov r2, #0x3 + mov r3, #0x38 + bl FUN_0201AEE4 + ldr r0, _0207BF78 ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + b _0207BF74 +_0207BF0A: + mov r1, #0x2 + mov r2, #0x4 + mov r3, #0x10 + bl FUN_0201AEE4 + b _0207BF74 +_0207BF16: + mov r1, #0xb5 + bl FUN_0207D924 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + ldr r0, _0207BF80 ; =0x00000514 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x52 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200A0 + ldr r0, _0207BF84 ; =0x00000504 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207BF88 ; =0x00000508 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207BF8C ; =0x0000050C + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x51 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207C07C + mov r0, #0x1 + pop {r4, pc} +_0207BF74: + mov r0, #0x0 + pop {r4, pc} + .balign 4 +_0207BF78: .word 0x0000068E +_0207BF7C: .word 0x00000697 +_0207BF80: .word 0x00000514 +_0207BF84: .word 0x00000504 +_0207BF88: .word 0x00000508 +_0207BF8C: .word 0x0000050C + + thumb_func_start FUN_0207BF90 +FUN_0207BF90: ; 0x0207BF90 + push {r4, lr} + ldr r1, _0207C078 ; =0x0000068E + add r4, r0, #0x0 + ldrb r0, [r4, r1] + cmp r0, #0x0 + beq _0207BFA6 + cmp r0, #0x1 + beq _0207BFF6 + cmp r0, #0x2 + beq _0207C022 + b _0207C072 +_0207BFA6: + add r0, r1, #0x0 + mov r2, #0x0 + add r0, #0x9 + strb r2, [r4, r0] + add r1, #0xa + mov r0, #0x91 + strb r2, [r4, r1] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_0201958C + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207CFAC + add r0, r4, #0x0 + bl FUN_0207D2C8 + ldr r0, _0207C078 ; =0x0000068E + mov r1, #0x1 + strb r1, [r4, r0] + b _0207C072 +_0207BFF6: + ldr r0, [r4, #0x0] + mov r1, #0x2 + bl FUN_02017B54 + cmp r0, #0x8 + ldr r0, [r4, #0x0] + bgt _0207C016 + mov r1, #0x2 + mov r2, #0x3 + mov r3, #0x0 + bl FUN_0201AEE4 + ldr r0, _0207C078 ; =0x0000068E + mov r1, #0x2 + strb r1, [r4, r0] + b _0207C072 +_0207C016: + mov r1, #0x2 + mov r2, #0x5 + mov r3, #0x10 + bl FUN_0201AEE4 + b _0207C072 +_0207C022: + add r0, r4, #0x0 + add r0, #0x64 + bl FUN_02019220 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x79 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + add r0, r4, #0x0 + mov r1, #0xb4 + bl FUN_0207D924 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0207C6F0 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + mov r0, #0x1 + pop {r4, pc} +_0207C072: + mov r0, #0x0 + pop {r4, pc} + nop +_0207C078: .word 0x0000068E + + thumb_func_start FUN_0207C07C +FUN_0207C07C: ; 0x0207C07C + push {r4-r6, lr} + ldr r2, _0207C1D0 ; =0x00000697 + add r5, r0, #0x0 + add r3, r2, #0x1 + ldrb r0, [r5, r2] + ldrb r4, [r5, r3] + cmp r1, #0x1 + bne _0207C0A8 + mov r1, #0x3 + and r1, r0 + cmp r1, #0x3 + beq _0207C0B6 + lsl r1, r4, #0x2 + add r1, r0, r1 + add r3, r1, #0x1 + add r1, r2, #0x2 + ldrb r1, [r5, r1] + cmp r3, r1 + bge _0207C14A + add r1, r0, #0x1 + strb r1, [r5, r2] + b _0207C14A +_0207C0A8: + mov r3, #0x0 + mvn r3, r3 + cmp r1, r3 + bne _0207C0BE + mov r1, #0x3 + tst r1, r0 + bne _0207C0B8 +_0207C0B6: + b _0207C1CE +_0207C0B8: + sub r1, r0, #0x1 + strb r1, [r5, r2] + b _0207C14A +_0207C0BE: + cmp r1, #0x4 + bne _0207C12C + cmp r0, #0x4 + bhs _0207C0F2 + add r1, r2, #0x2 + ldrb r3, [r5, r1] + lsl r1, r4, #0x2 + add r1, r0, r1 + add r1, r1, #0x4 + cmp r1, r3 + blt _0207C0EC + cmp r3, #0x4 + bls _0207C14A + lsr r1, r3, #0x1f + lsl r6, r3, #0x1e + sub r6, r6, r1 + mov r3, #0x1e + ror r6, r3 + add r1, r1, r6 + beq _0207C14A + add r1, r1, #0x3 + strb r1, [r5, r2] + b _0207C14A +_0207C0EC: + add r1, r0, #0x4 + strb r1, [r5, r2] + b _0207C14A +_0207C0F2: + add r1, r2, #0x2 + ldrb r1, [r5, r1] + lsl r3, r4, #0x2 + add r3, #0x8 + cmp r3, r1 + bge _0207C14A + add r1, r2, #0x1 + ldrb r1, [r5, r1] + add r6, r2, #0x1 + add r3, r1, #0x1 + add r1, r2, #0x1 + strb r3, [r5, r1] + add r1, r2, #0x2 + ldrb r6, [r5, r6] + ldrb r3, [r5, r1] + ldrb r1, [r5, r2] + lsl r6, r6, #0x2 + add r1, r1, r6 + cmp r1, r3 + blt _0207C14A + lsr r1, r3, #0x1f + lsl r6, r3, #0x1e + sub r6, r6, r1 + mov r3, #0x1e + ror r6, r3 + add r1, r1, r6 + add r1, r1, #0x3 + strb r1, [r5, r2] + b _0207C14A +_0207C12C: + sub r3, r3, #0x3 + cmp r1, r3 + bne _0207C14A + cmp r0, #0x4 + blo _0207C13C + sub r1, r0, #0x4 + strb r1, [r5, r2] + b _0207C14A +_0207C13C: + cmp r4, #0x0 + beq _0207C14A + add r1, r2, #0x1 + ldrb r1, [r5, r1] + sub r3, r1, #0x1 + add r1, r2, #0x1 + strb r3, [r5, r1] +_0207C14A: + ldr r1, _0207C1D0 ; =0x00000697 + ldrb r2, [r5, r1] + cmp r0, r2 + bne _0207C15A + add r0, r1, #0x1 + ldrb r0, [r5, r0] + cmp r4, r0 + beq _0207C160 +_0207C15A: + ldr r0, _0207C1D4 ; =0x000005DC + bl FUN_020054C8 +_0207C160: + ldr r1, _0207C1D0 ; =0x00000697 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + bl FUN_0207C1E8 + ldr r1, _0207C1D8 ; =0x0000069A + strb r0, [r5, r1] + add r0, r5, #0x0 + bl FUN_0207D3C4 + ldr r0, _0207C1DC ; =0x00000698 + ldrb r0, [r5, r0] + cmp r4, r0 + beq _0207C182 + add r0, r5, #0x0 + bl FUN_0207D364 +_0207C182: + add r0, r5, #0x0 + bl FUN_0207E9A0 + add r0, r5, #0x0 + bl FUN_0207E840 + ldr r0, _0207C1DC ; =0x00000698 + ldrb r0, [r5, r0] + cmp r0, #0x0 + ldr r0, _0207C1E0 ; =0x00000518 + beq _0207C1A2 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + b _0207C1AA +_0207C1A2: + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 +_0207C1AA: + ldr r0, _0207C1DC ; =0x00000698 + ldrb r1, [r5, r0] + add r0, r0, #0x1 + ldrb r0, [r5, r0] + lsl r1, r1, #0x2 + add r1, #0x8 + cmp r1, r0 + ldr r0, _0207C1E4 ; =0x0000051C + bge _0207C1C6 + ldr r0, [r5, r0] + mov r1, #0x1 + bl FUN_020200A0 + pop {r4-r6, pc} +_0207C1C6: + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 +_0207C1CE: + pop {r4-r6, pc} + .balign 4 +_0207C1D0: .word 0x00000697 +_0207C1D4: .word 0x000005DC +_0207C1D8: .word 0x0000069A +_0207C1DC: .word 0x00000698 +_0207C1E0: .word 0x00000518 +_0207C1E4: .word 0x0000051C + + thumb_func_start FUN_0207C1E8 +FUN_0207C1E8: ; 0x0207C1E8 + push {r4-r7} + ldr r2, _0207C238 ; =0x00000698 + mov r6, #0x0 + ldrb r2, [r0, r2] + add r4, r6, #0x0 + lsl r2, r2, #0x2 + add r1, r1, r2 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + mov r1, #0xa9 + mov r2, #0x1 + lsl r1, r1, #0x2 +_0207C200: + mov r3, #0x1f + add r7, r4, #0x0 + and r7, r3 + add r3, r2, #0x0 + lsl r3, r7 + lsr r7, r4, #0x5 + lsl r7, r7, #0x2 + add r7, r0, r7 + ldr r7, [r7, r1] + tst r3, r7 + beq _0207C228 + cmp r5, r6 + bne _0207C222 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r4-r7} + bx lr +_0207C222: + add r3, r6, #0x1 + lsl r3, r3, #0x18 + lsr r6, r3, #0x18 +_0207C228: + add r3, r4, #0x1 + lsl r3, r3, #0x10 + lsr r4, r3, #0x10 + cmp r4, #0x50 + blo _0207C200 + mov r0, #0x0 + pop {r4-r7} + bx lr + .balign 4 +_0207C238: .word 0x00000698 + + thumb_func_start FUN_0207C23C +FUN_0207C23C: ; 0x0207C23C + push {r4, lr} + sub sp, #0x8 + ldr r1, _0207C29C ; =0x0000029A + add r4, r0, #0x0 + ldrb r0, [r4, r1] + cmp r0, #0xff + bne _0207C28E + mov r0, #0x0 + sub r1, #0xda + mov r2, #0x13 + bl FUN_02002EEC + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldr r0, [r0, #0x4] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + mov r0, #0x13 + str r0, [sp, #0x4] + ldr r0, [r4, #0x0] + ldr r2, _0207C2A0 ; =0x000003E2 + mov r1, #0x1 + mov r3, #0xd + bl FUN_0200CD68 + add r0, r4, #0x0 + mov r1, #0xff + bl FUN_0207EECC + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x1 + strb r1, [r0, #0x17] + add sp, #0x8 + mov r0, #0x11 + pop {r4, pc} +_0207C28E: + sub r1, #0x4e + ldr r0, [r4, r1] + mov r2, #0x0 + strb r2, [r0, #0x17] + mov r0, #0x12 + add sp, #0x8 + pop {r4, pc} + .balign 4 +_0207C29C: .word 0x0000029A +_0207C2A0: .word 0x000003E2 + + thumb_func_start FUN_0207C2A4 +FUN_0207C2A4: ; 0x0207C2A4 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0202398C + str r0, [r5, #0x8] + add r0, r4, #0x0 + bl FUN_020239BC + str r0, [r5, #0xc] + add r0, r4, #0x0 + bl FUN_020239CC + strb r0, [r5, #0x10] + pop {r3-r5, pc} + + thumb_func_start FUN_0207C2C4 +FUN_0207C2C4: ; 0x0207C2C4 + mov r0, #0x40 + bx lr + + thumb_func_start FUN_0207C2C8 +FUN_0207C2C8: ; 0x0207C2C8 + mov r0, #0x41 + bx lr + + thumb_func_start FUN_0207C2CC +FUN_0207C2CC: ; 0x0207C2CC + mov r0, #0x3f + bx lr + + thumb_func_start FUN_0207C2D0 +FUN_0207C2D0: ; 0x0207C2D0 + mov r0, #0x3e + bx lr + + thumb_func_start FUN_0207C2D4 +FUN_0207C2D4: ; 0x0207C2D4 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r1, #0x9f + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _0207C2F4 + mov r0, #0x6 + pop {r3-r5, pc} +_0207C2F4: + mov r0, #0x88 + tst r0, r4 + beq _0207C2FE + mov r0, #0x4 + pop {r3-r5, pc} +_0207C2FE: + mov r0, #0x7 + add r1, r4, #0x0 + tst r1, r0 + beq _0207C30A + mov r0, #0x3 + pop {r3-r5, pc} +_0207C30A: + mov r1, #0x10 + tst r1, r4 + beq _0207C314 + mov r0, #0x5 + pop {r3-r5, pc} +_0207C314: + mov r1, #0x20 + tst r1, r4 + beq _0207C31E + mov r0, #0x2 + pop {r3-r5, pc} +_0207C31E: + mov r1, #0x40 + tst r1, r4 + beq _0207C326 + mov r0, #0x1 +_0207C326: + pop {r3-r5, pc} + + thumb_func_start FUN_0207C328 +FUN_0207C328: ; 0x0207C328 + push {r3-r7, lr} + sub sp, #0x50 + add r4, r0, #0x0 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E74C + mov r0, #0x20 + mov r1, #0x13 + bl FUN_0201C24C + mov r0, #0x13 + bl FUN_0200BB14 + mov r1, #0x1 + lsl r1, r1, #0xa + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_0200BB34 + ldr r7, _0207C3C4 ; =0x00000404 + add r2, sp, #0x30 + ldr r3, _0207C3C8 ; =0x020FA73C + str r0, [r4, r7] + ldmia r3!, {r0-r1} + add r6, r2, #0x0 + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + ldr r5, _0207C3CC ; =0x020FA70C + stmia r2!, {r0-r1} + add r3, sp, #0x1c + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + add r1, r6, #0x0 + str r0, [r3, #0x0] + sub r0, r7, #0x4 + ldr r0, [r4, r0] + mov r3, #0x20 + bl FUN_0200BB6C + sub r1, r7, #0x4 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + mov r2, #0x4d + bl FUN_0200BBF0 + ldr r5, _0207C3D0 ; =0x020FA720 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + sub r1, r7, #0x4 + str r0, [r3, #0x0] + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + bl FUN_0200BD20 + add sp, #0x50 + pop {r3-r7, pc} + .balign 4 +_0207C3C4: .word 0x00000404 +_0207C3C8: .word 0x020FA73C +_0207C3CC: .word 0x020FA70C +_0207C3D0: .word 0x020FA720 + + thumb_func_start FUN_0207C3D4 +FUN_0207C3D4: ; 0x0207C3D4 + push {r4, lr} + mov r1, #0x1 + add r4, r0, #0x0 + lsl r1, r1, #0xa + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + bl FUN_0200BCE0 + mov r0, #0x1 + lsl r0, r0, #0xa + ldr r0, [r4, r0] + bl FUN_0200BD04 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207C3F4 +FUN_0207C3F4: ; 0x0207C3F4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207C438 ; =0x0000045C + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + mov r0, #0x46 + lsl r0, r0, #0x4 + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, _0207C43C ; =0x000004AC + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, _0207C440 ; =0x00000518 + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, _0207C444 ; =0x0000051C + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + pop {r4, pc} + .balign 4 +_0207C438: .word 0x0000045C +_0207C43C: .word 0x000004AC +_0207C440: .word 0x00000518 +_0207C444: .word 0x0000051C + + thumb_func_start FUN_0207C448 +FUN_0207C448: ; 0x0207C448 + push {r3-r7, lr} + ldr r6, _0207C550 ; =0x020FA784 + ldr r7, _0207C554 ; =0x00000408 + add r5, r0, #0x0 + mov r4, #0x0 +_0207C452: + mov r0, #0x1 + ldr r1, _0207C558 ; =0x00000404 + lsl r0, r0, #0xa + mov r2, #0x28 + mul r2, r4 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r6, r2 + bl FUN_0200BE38 + lsl r1, r4, #0x2 + add r1, r5, r1 + str r0, [r1, r7] + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x4d + blo _0207C452 + add r0, r5, #0x0 + bl FUN_0207C7EC + ldr r0, _0207C55C ; =0x0000042C + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0x43 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207C560 ; =0x000004AC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0x4b + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207C564 ; =0x000004B4 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C568 ; =0x000004B8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C56C ; =0x000004BC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0x13 + lsl r0, r0, #0x6 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207C570 ; =0x000004C4 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C574 ; =0x000004C8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C578 ; =0x000004CC + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0x4d + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207C57C ; =0x000004D4 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C580 ; =0x000004D8 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C584 ; =0x00000524 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C588 ; =0x00000528 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C58C ; =0x0000052C + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0x53 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207C590 ; =0x00000534 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207C594 ; =0x00000538 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + pop {r3-r7, pc} + .balign 4 +_0207C550: .word 0x020FA784 +_0207C554: .word 0x00000408 +_0207C558: .word 0x00000404 +_0207C55C: .word 0x0000042C +_0207C560: .word 0x000004AC +_0207C564: .word 0x000004B4 +_0207C568: .word 0x000004B8 +_0207C56C: .word 0x000004BC +_0207C570: .word 0x000004C4 +_0207C574: .word 0x000004C8 +_0207C578: .word 0x000004CC +_0207C57C: .word 0x000004D4 +_0207C580: .word 0x000004D8 +_0207C584: .word 0x00000524 +_0207C588: .word 0x00000528 +_0207C58C: .word 0x0000052C +_0207C590: .word 0x00000534 +_0207C594: .word 0x00000538 + + thumb_func_start FUN_0207C598 +FUN_0207C598: ; 0x0207C598 + push {r4-r6, lr} + mov r5, #0x0 + add r6, r0, #0x0 + add r4, r5, #0x0 +_0207C5A0: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0207B070 + cmp r0, #0x0 + beq _0207C5B2 + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0207C5B2: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x8 + blo _0207C5A0 + sub r0, r5, #0x1 + lsl r1, r0, #0x4 + add r1, #0x18 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #0x1 + mov r0, #0xbc + sub r0, r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0207C5D4 +FUN_0207C5D4: ; 0x0207C5D4 + push {r3-r7, lr} + sub sp, #0x10 + add r7, r0, #0x0 + bl FUN_0207C598 + str r0, [sp, #0x4] + ldr r0, _0207C69C ; =0x00000408 + mov r5, #0x0 + add r4, r7, r0 + ldr r0, [sp, #0x4] + str r5, [sp, #0x8] + str r0, [sp, #0x0] + add r0, #0x18 + str r0, [sp, #0x0] +_0207C5F0: + add r0, r7, #0x0 + add r1, r5, #0x0 + bl FUN_0207B070 + cmp r0, #0x0 + bne _0207C608 + lsl r0, r5, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + b _0207C68E +_0207C608: + lsl r6, r5, #0x2 + ldr r0, [r4, r6] + bl FUN_020201DC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, _0207C6A0 ; =0x0000068C + ldrsb r0, [r7, r0] + cmp r0, r5 + bne _0207C62A + cmp r1, #0x8 + bhs _0207C636 + ldr r0, [r4, r6] + add r1, #0x8 + bl FUN_02020130 + b _0207C636 +_0207C62A: + cmp r1, #0x8 + blo _0207C636 + ldr r0, [r4, r6] + sub r1, #0x8 + bl FUN_02020130 +_0207C636: + add r1, sp, #0xc + ldr r0, [r4, r6] + add r1, #0x2 + add r2, sp, #0xc + bl FUN_0200C75C + ldr r0, _0207C6A0 ; =0x0000068C + ldrsb r0, [r7, r0] + cmp r0, r5 + blt _0207C652 + ldr r0, [sp, #0x8] + lsl r1, r0, #0x4 + ldr r0, [sp, #0x4] + b _0207C65A +_0207C652: + ldr r0, [sp, #0x8] + sub r0, r0, #0x1 + lsl r1, r0, #0x4 + ldr r0, [sp, #0x0] +_0207C65A: + add r0, r0, r1 + lsl r0, r0, #0x10 + asr r1, r0, #0x10 + add r0, sp, #0xc + strh r1, [r0, #0x2] + lsl r0, r5, #0x2 + add r1, r7, r0 + ldr r0, _0207C69C ; =0x00000408 + add r2, sp, #0xc + ldr r0, [r1, r0] + mov r1, #0x2 + ldrsh r1, [r2, r1] + add r3, r2, #0x0 + mov r2, #0x0 + ldrsh r2, [r3, r2] + bl FUN_0200C6E4 + ldr r0, [r4, r6] + mov r1, #0x1 + bl FUN_020200A0 + ldr r0, [sp, #0x8] + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] +_0207C68E: + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x8 + blo _0207C5F0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_0207C69C: .word 0x00000408 +_0207C6A0: .word 0x0000068C + + thumb_func_start FUN_0207C6A4 +FUN_0207C6A4: ; 0x0207C6A4 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0207B09C + cmp r0, #0x1 + bhi _0207C6B8 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0207C6F0 +_0207C6B8: + add r0, r5, #0x0 + bl FUN_0207C598 + add r4, r0, #0x0 + ldr r0, _0207C6EC ; =0x0000045C + add r1, r4, #0x0 + sub r1, #0xc + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + mov r2, #0x18 + bl FUN_0200C6E4 + mov r1, #0x5d + mov r0, #0x46 + lsl r1, r1, #0x2 + lsl r0, r0, #0x4 + sub r1, r1, r4 + lsl r1, r1, #0x10 + ldr r0, [r5, r0] + asr r1, r1, #0x10 + mov r2, #0x18 + bl FUN_0200C6E4 + pop {r3-r5, pc} + nop +_0207C6EC: .word 0x0000045C + + thumb_func_start FUN_0207C6F0 +FUN_0207C6F0: ; 0x0207C6F0 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0207B09C + cmp r0, #0x1 + bhi _0207C700 + mov r4, #0x0 +_0207C700: + ldr r0, _0207C718 ; =0x0000045C + add r1, r4, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 + mov r0, #0x46 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + add r1, r4, #0x0 + bl FUN_020200A0 + pop {r3-r5, pc} + .balign 4 +_0207C718: .word 0x0000045C + + thumb_func_start FUN_0207C71C +FUN_0207C71C: ; 0x0207C71C + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r0, _0207C774 ; =0x00000263 + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r3, r0, #0x1a + bne _0207C730 + mov r3, #0x15 + b _0207C732 +_0207C730: + add r3, #0x14 +_0207C732: + mov r0, #0x0 + mov r1, #0x1 + str r0, [sp, #0x0] + lsl r1, r1, #0xa + str r0, [sp, #0x4] + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + mov r2, #0x27 + bl FUN_0200C9D8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x6 + mov r1, #0x1 + ldr r3, _0207C774 ; =0x00000263 + str r0, [sp, #0x4] + ldrb r3, [r4, r3] + lsl r1, r1, #0xa + ldr r0, [r4, r1] + add r1, r1, #0x4 + lsl r3, r3, #0x18 + ldr r1, [r4, r1] + lsr r4, r3, #0x1a + ldr r3, _0207C778 ; =0x020FA6F8 + mov r2, #0x27 + ldrb r3, [r3, r4] + add r3, #0x25 + bl FUN_0200CA0C + add sp, #0x8 + pop {r4, pc} + nop +_0207C774: .word 0x00000263 +_0207C778: .word 0x020FA6F8 + + thumb_func_start FUN_0207C77C +FUN_0207C77C: ; 0x0207C77C + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x2a + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + lsl r0, r0, #0x4 + lsr r0, r0, #0x4 + cmp r0, #0x7 + bne _0207C7A4 + ldr r0, _0207C7E4 ; =0x00000458 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207C7E8 ; =0x00000538 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} +_0207C7A4: + cmp r0, #0x0 + ldr r0, _0207C7E8 ; =0x00000538 + beq _0207C7D0 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207C7E4 ; =0x00000458 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r1, #0x2a + lsl r1, r1, #0x4 + ldr r0, _0207C7E4 ; =0x00000458 + ldr r1, [r4, r1] + ldr r0, [r4, r0] + lsl r1, r1, #0x4 + lsr r1, r1, #0x4 + bl FUN_02020130 + pop {r4, pc} +_0207C7D0: + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200A0 + ldr r0, _0207C7E4 ; =0x00000458 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} + .balign 4 +_0207C7E4: .word 0x00000458 +_0207C7E8: .word 0x00000538 + + thumb_func_start FUN_0207C7EC +FUN_0207C7EC: ; 0x0207C7EC + push {r3-r7, lr} + add r5, r0, #0x0 + bl FUN_0207CA44 + mov r6, #0xa1 + mov r4, #0x0 + mov r7, #0x3 + lsl r6, r6, #0x2 +_0207C7FC: + lsl r0, r4, #0x1 + add r0, r5, r0 + ldrh r0, [r0, r6] + cmp r0, #0x0 + beq _0207C826 + add r1, r7, #0x0 + bl FUN_0206AB18 + add r3, r0, #0x0 + add r1, r4, #0x0 + add r1, #0xd + add r2, r4, #0x5 + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0207CA6C +_0207C826: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x4 + blo _0207C7FC + add r0, r5, #0x0 + bl FUN_0207CFEC + pop {r3-r7, pc} + + thumb_func_start FUN_0207C838 +FUN_0207C838: ; 0x0207C838 + push {r3-r7, lr} + ldr r6, _0207CA2C ; =0x00000408 + add r5, r0, #0x0 + mov r4, #0xb + mov r7, #0x0 +_0207C842: + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, r6] + add r1, r7, #0x0 + bl FUN_0200C63C + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x13 + bls _0207C842 + ldr r0, _0207CA30 ; =0x0000068C + ldrsb r0, [r5, r0] + cmp r0, #0x0 + beq _0207C86C + cmp r0, #0x3 + beq _0207C8B4 + cmp r0, #0x5 + bne _0207C86A + b _0207C96E +_0207C86A: + pop {r3-r7, pc} +_0207C86C: + ldr r0, _0207CA34 ; =0x00000434 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_0200C63C + mov r0, #0x26 + lsl r0, r0, #0x4 + ldrb r1, [r5, r0] + add r0, r0, #0x1 + ldrb r0, [r5, r0] + cmp r1, r0 + ldr r0, _0207CA34 ; =0x00000434 + bne _0207C892 + ldr r0, [r5, r0] + mov r1, #0xd8 + mov r2, #0x50 + bl FUN_0200C6E4 + pop {r3-r7, pc} +_0207C892: + ldr r0, [r5, r0] + mov r1, #0xc7 + mov r2, #0x50 + bl FUN_0200C6E4 + ldr r0, _0207CA38 ; =0x00000438 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_0200C63C + ldr r0, _0207CA38 ; =0x00000438 + mov r1, #0xe9 + ldr r0, [r5, r0] + mov r2, #0x50 + bl FUN_0200C6E4 + pop {r3-r7, pc} +_0207C8B4: + mov r7, #0xa1 + mov r4, #0x0 + lsl r7, r7, #0x2 +_0207C8BA: + lsl r0, r4, #0x1 + add r0, r5, r0 + ldrh r0, [r0, r7] + cmp r0, #0x0 + beq _0207C904 + mov r1, #0x3 + bl FUN_0206AB18 + add r3, r0, #0x0 + add r1, r4, #0x0 + add r1, #0xd + add r2, r4, #0x5 + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0207CA6C + lsl r0, r4, #0x2 + add r6, r5, r0 + ldr r0, _0207CA3C ; =0x0000043C + mov r1, #0x1 + ldr r0, [r6, r0] + bl FUN_0200C63C + ldr r0, _0207CA3C ; =0x0000043C + lsl r2, r4, #0x5 + add r2, #0x2a + lsl r2, r2, #0x10 + ldr r0, [r6, r0] + mov r1, #0x97 + asr r2, r2, #0x10 + bl FUN_0200C6E4 +_0207C904: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x4 + blo _0207C8BA + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0207C946 + mov r1, #0x3 + bl FUN_0206AB18 + add r3, r0, #0x0 + lsl r3, r3, #0x18 + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x9 + lsr r3, r3, #0x18 + bl FUN_0207CA6C + ldr r0, _0207CA40 ; =0x0000044C + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_0200C63C + ldr r0, _0207CA40 ; =0x0000044C + mov r1, #0x97 + ldr r0, [r5, r0] + mov r2, #0xaa + bl FUN_0200C6E4 +_0207C946: + ldr r0, _0207CA34 ; =0x00000434 + mov r1, #0x3f + ldr r0, [r5, r0] + mov r2, #0x34 + bl FUN_0200C6E4 + ldr r0, _0207CA38 ; =0x00000438 + mov r1, #0x61 + ldr r0, [r5, r0] + mov r2, #0x34 + bl FUN_0200C6E4 + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x6c + mov r2, #0x48 + bl FUN_0200C6E4 + pop {r3-r7, pc} +_0207C96E: + mov r7, #0xa1 + mov r4, #0x0 + lsl r7, r7, #0x2 +_0207C974: + lsl r0, r4, #0x1 + add r0, r5, r0 + ldrh r0, [r0, r7] + cmp r0, #0x0 + beq _0207C9C0 + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0x0 + add r1, r4, #0x0 + add r1, #0xd + add r2, r4, #0x5 + add r3, #0x12 + lsl r1, r1, #0x18 + lsl r2, r2, #0x18 + lsl r3, r3, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + lsr r3, r3, #0x18 + bl FUN_0207CA6C + lsl r0, r4, #0x2 + add r6, r5, r0 + ldr r0, _0207CA3C ; =0x0000043C + mov r1, #0x1 + ldr r0, [r6, r0] + bl FUN_0200C63C + ldr r0, _0207CA3C ; =0x0000043C + lsl r2, r4, #0x5 + add r2, #0x2a + lsl r2, r2, #0x10 + ldr r0, [r6, r0] + mov r1, #0x97 + asr r2, r2, #0x10 + bl FUN_0200C6E4 +_0207C9C0: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x4 + blo _0207C974 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldrh r0, [r0, #0x18] + cmp r0, #0x0 + beq _0207CA04 + mov r1, #0xb + bl FUN_0206AB18 + add r3, r0, #0x0 + add r3, #0x12 + lsl r3, r3, #0x18 + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x9 + lsr r3, r3, #0x18 + bl FUN_0207CA6C + ldr r0, _0207CA40 ; =0x0000044C + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_0200C63C + ldr r0, _0207CA40 ; =0x0000044C + mov r1, #0x97 + ldr r0, [r5, r0] + mov r2, #0xaa + bl FUN_0200C6E4 +_0207CA04: + ldr r0, _0207CA34 ; =0x00000434 + mov r1, #0x3f + ldr r0, [r5, r0] + mov r2, #0x34 + bl FUN_0200C6E4 + ldr r0, _0207CA38 ; =0x00000438 + mov r1, #0x61 + ldr r0, [r5, r0] + mov r2, #0x34 + bl FUN_0200C6E4 + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x6c + mov r2, #0x48 + bl FUN_0200C6E4 + pop {r3-r7, pc} + .balign 4 +_0207CA2C: .word 0x00000408 +_0207CA30: .word 0x0000068C +_0207CA34: .word 0x00000434 +_0207CA38: .word 0x00000438 +_0207CA3C: .word 0x0000043C +_0207CA40: .word 0x0000044C + + thumb_func_start FUN_0207CA44 +FUN_0207CA44: ; 0x0207CA44 + push {r4, lr} + mov r3, #0x26 + add r4, r0, #0x0 + lsl r3, r3, #0x4 + ldrb r3, [r4, r3] + mov r1, #0xb + mov r2, #0x3 + bl FUN_0207CA6C + ldr r3, _0207CA68 ; =0x00000261 + add r0, r4, #0x0 + ldrb r3, [r4, r3] + mov r1, #0xc + mov r2, #0x4 + bl FUN_0207CA6C + pop {r4, pc} + nop +_0207CA68: .word 0x00000261 + + thumb_func_start FUN_0207CA6C +FUN_0207CA6C: ; 0x0207CA6C + push {r4-r7, lr} + sub sp, #0xc + add r7, r3, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0206E12C + str r0, [sp, #0x8] + add r0, r7, #0x0 + bl FUN_0206E0F0 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r1, _0207CAB4 ; =0x00000404 + str r6, [sp, #0x4] + lsl r0, r0, #0xa + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [sp, #0x8] + bl FUN_0200C9D8 + add r0, r7, #0x0 + bl FUN_0206E114 + add r2, r0, #0x0 + lsl r0, r4, #0x2 + add r1, r5, r0 + ldr r0, _0207CAB8 ; =0x00000408 + ldr r0, [r1, r0] + add r1, r2, #0x3 + bl FUN_0200C664 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_0207CAB4: .word 0x00000404 +_0207CAB8: .word 0x00000408 + + thumb_func_start FUN_0207CABC +FUN_0207CABC: ; 0x0207CABC + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, r1, #0x0 + ldrb r0, [r0, #0x0] + str r1, [sp, #0x0] + str r2, [sp, #0x4] + lsl r0, r0, #0x5 + add r0, #0x2a + lsl r0, r0, #0x10 + add r4, r3, #0x0 + asr r7, r0, #0x10 + mov r6, #0x0 +_0207CAD6: + ldr r0, _0207CB04 ; =0x0000043C + ldr r1, [sp, #0x4] + ldr r0, [r5, r0] + add r2, r4, #0x0 + bl FUN_0200C75C + mov r0, #0x0 + ldrsh r0, [r4, r0] + cmp r7, r0 + bne _0207CAF2 + ldr r0, [sp, #0x0] + add sp, #0x8 + strb r6, [r0, #0x0] + pop {r3-r7, pc} +_0207CAF2: + add r0, r6, #0x1 + lsl r0, r0, #0x10 + asr r6, r0, #0x10 + add r5, r5, #0x4 + cmp r6, #0x4 + blt _0207CAD6 + add sp, #0x8 + pop {r3-r7, pc} + nop +_0207CB04: .word 0x0000043C + + thumb_func_start FUN_0207CB08 +FUN_0207CB08: ; 0x0207CB08 + push {r0-r3} + push {r4, lr} + sub sp, #0x8 + add r2, sp, #0x4 + add r1, sp, #0x14 + add r2, #0x2 + add r3, sp, #0x4 + add r4, r0, #0x0 + bl FUN_0207CABC + add r2, sp, #0x0 + add r0, r4, #0x0 + add r1, sp, #0x18 + add r2, #0x2 + add r3, sp, #0x0 + bl FUN_0207CABC + add r0, sp, #0x10 + ldrb r0, [r0, #0x4] + add r3, sp, #0x0 + mov r2, #0x0 + add r0, #0xd + lsl r0, r0, #0x2 + add r1, r4, r0 + ldr r0, _0207CB6C ; =0x00000408 + ldrsh r2, [r3, r2] + ldr r0, [r1, r0] + mov r1, #0x2 + ldrsh r1, [r3, r1] + bl FUN_0200C6E4 + add r0, sp, #0x10 + ldrb r0, [r0, #0x8] + add r3, sp, #0x0 + mov r2, #0x4 + add r0, #0xd + lsl r0, r0, #0x2 + add r1, r4, r0 + ldr r0, _0207CB6C ; =0x00000408 + ldrsh r2, [r3, r2] + ldr r0, [r1, r0] + mov r1, #0x6 + ldrsh r1, [r3, r1] + bl FUN_0200C6E4 + add sp, #0x8 + pop {r4} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 +_0207CB6C: .word 0x00000408 + + thumb_func_start FUN_0207CB70 +FUN_0207CB70: ; 0x0207CB70 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, r1, #0x0 + mov r1, #0x1 + bl FUN_0206AB18 + add r4, r0, #0x0 + bl FUN_0206E2A8 + add r6, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0206E278 + mov r1, #0x1 + add r3, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0xa + str r0, [sp, #0x4] + lsl r0, r1, #0xa + ldr r1, _0207CBBC ; =0x00000404 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + add r2, r6, #0x0 + bl FUN_0200C9D8 + add r0, r4, #0x0 + bl FUN_0206E290 + add r1, r0, #0x0 + mov r0, #0x45 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + add r1, r1, #0x3 + bl FUN_0200C664 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0207CBBC: .word 0x00000404 + + thumb_func_start FUN_0207CBC0 +FUN_0207CBC0: ; 0x0207CBC0 + ldr r2, _0207CBDC ; =0x0000068D + add r3, r0, #0x0 + ldrb r2, [r3, r2] + ldr r0, _0207CBE0 ; =0x0000042C + mov r1, #0xc2 + lsl r2, r2, #0x1c + lsr r2, r2, #0x1c + lsl r2, r2, #0x5 + ldr r0, [r3, r0] + add r2, #0x30 + lsl r2, r2, #0x10 + ldr r3, _0207CBE4 ; =FUN_0200C6E4 + asr r2, r2, #0x10 + bx r3 + .balign 4 +_0207CBDC: .word 0x0000068D +_0207CBE0: .word 0x0000042C +_0207CBE4: .word FUN_0200C6E4 + + thumb_func_start FUN_0207CBE8 +FUN_0207CBE8: ; 0x0207CBE8 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r0, _0207CC20 ; =0x0000042C + add r1, sp, #0x0 + ldr r0, [r4, r0] + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_0200C75C + mov r0, #0x43 + lsl r0, r0, #0x4 + add r3, sp, #0x0 + mov r1, #0x2 + mov r2, #0x0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r4, r0] + bl FUN_0200C6E4 + mov r0, #0x43 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200A0 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0207CC20: .word 0x0000042C + + thumb_func_start FUN_0207CC24 +FUN_0207CC24: ; 0x0207CC24 + push {r3-r7, lr} + mov r2, #0x69 + lsl r2, r2, #0x4 + mov r1, #0x0 + strb r1, [r0, r2] + add r3, r2, #0x3 + strb r1, [r0, r3] + add r3, r2, #0x2 + strb r1, [r0, r3] + ldr r3, _0207CC80 ; =0x0000029A + ldrb r3, [r0, r3] + cmp r3, #0x0 + bne _0207CC44 + add r2, r2, #0x1 + strb r1, [r0, r2] + b _0207CC5A +_0207CC44: + cmp r3, #0xff + bne _0207CC50 + mov r3, #0xc + add r1, r2, #0x1 + strb r3, [r0, r1] + b _0207CC5A +_0207CC50: + mov r1, #0xc + mul r1, r3 + asr r3, r1, #0x8 + add r1, r2, #0x1 + strb r3, [r0, r1] +_0207CC5A: + ldr r7, _0207CC84 ; =0x00000408 + add r5, r0, #0x0 + mov r4, #0x1d + add r5, #0x74 + add r6, r7, #0x0 +_0207CC64: + ldr r0, [r5, r7] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, [r5, r6] + mov r1, #0x0 + bl FUN_02020208 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x28 + bls _0207CC64 + pop {r3-r7, pc} + nop +_0207CC80: .word 0x0000029A +_0207CC84: .word 0x00000408 + + thumb_func_start FUN_0207CC88 +FUN_0207CC88: ; 0x0207CC88 + push {r3-r7, lr} + add r4, r0, #0x0 + ldr r0, _0207CE38 ; =0x0000068C + ldrsb r1, [r4, r0] + cmp r1, #0x4 + bne _0207CC9C + add r1, r0, #0x5 + ldrb r1, [r4, r1] + cmp r1, #0x0 + bne _0207CC9E +_0207CC9C: + b _0207CE34 +_0207CC9E: + add r2, r0, #0x4 + ldrb r2, [r4, r2] + cmp r2, #0x4 + bhi _0207CCCC + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0207CCB2: ; jump table (using 16-bit offset) + .short _0207CCBC - _0207CCB2 - 2; case 0 + .short _0207CCE0 - _0207CCB2 - 2; case 1 + .short _0207CD50 - _0207CCB2 - 2; case 2 + .short _0207CD70 - _0207CCB2 - 2; case 3 + .short _0207CDCA - _0207CCB2 - 2; case 4 +_0207CCBC: + add r1, r0, #0x7 + ldrb r1, [r4, r1] + add r2, r1, #0x1 + add r1, r0, #0x7 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0x8 + beq _0207CCCE +_0207CCCC: + b _0207CDE8 +_0207CCCE: + mov r2, #0x1 + add r1, r0, #0x4 + strb r2, [r4, r1] + add r1, r0, #0x7 + mov r2, #0x0 + strb r2, [r4, r1] + add r0, r0, #0x6 + strb r2, [r4, r0] + b _0207CDE8 +_0207CCE0: + add r1, r0, #0x7 + ldrb r1, [r4, r1] + cmp r1, #0x0 + bne _0207CD3E + add r0, r0, #0x6 + ldrb r0, [r4, r0] + add r0, #0x1d + lsl r0, r0, #0x2 + add r1, r4, r0 + ldr r0, _0207CE3C ; =0x00000408 + ldr r0, [r1, r0] + mov r1, #0x1 + bl FUN_020200A0 + ldr r0, _0207CE40 ; =0x00000692 + ldrb r0, [r4, r0] + add r0, #0x1d + lsl r0, r0, #0x2 + add r1, r4, r0 + ldr r0, _0207CE3C ; =0x00000408 + ldr r0, [r1, r0] + mov r1, #0x0 + bl FUN_02020208 + ldr r0, _0207CE40 ; =0x00000692 + ldrb r0, [r4, r0] + add r0, #0x1d + lsl r0, r0, #0x2 + add r1, r4, r0 + ldr r0, _0207CE3C ; =0x00000408 + ldr r0, [r1, r0] + mov r1, #0x0 + bl FUN_02020130 + ldr r0, _0207CE40 ; =0x00000692 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + sub r1, r0, #0x1 + ldrb r2, [r4, r0] + ldrb r1, [r4, r1] + cmp r2, r1 + bne _0207CD3E + mov r1, #0x2 + sub r0, r0, #0x2 + strb r1, [r4, r0] + b _0207CDE8 +_0207CD3E: + ldr r0, _0207CE44 ; =0x00000693 + mov r1, #0xa + ldrb r0, [r4, r0] + add r0, r0, #0x1 + blx _s32_div_f + ldr r0, _0207CE44 ; =0x00000693 + strb r1, [r4, r0] + b _0207CDE8 +_0207CD50: + add r1, #0x1c + lsl r0, r1, #0x2 + add r1, r4, r0 + ldr r0, _0207CE3C ; =0x00000408 + ldr r0, [r1, r0] + bl FUN_02020128 + cmp r0, #0x0 + bne _0207CDE8 + ldr r0, _0207CE44 ; =0x00000693 + mov r1, #0x0 + strb r1, [r4, r0] + mov r1, #0x3 + sub r0, r0, #0x3 + strb r1, [r4, r0] + b _0207CDE8 +_0207CD70: + add r1, r0, #0x7 + ldrb r1, [r4, r1] + add r2, r1, #0x1 + add r1, r0, #0x7 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0x20 + bne _0207CDE8 + add r0, r0, #0x5 + ldrb r0, [r4, r0] + mov r6, #0x1d + add r0, #0x1d + cmp r0, #0x1d + bls _0207CDBC + add r5, r4, #0x0 + ldr r7, _0207CE48 ; =0x00000691 + add r5, #0x74 +_0207CD92: + ldr r0, _0207CE3C ; =0x00000408 + mov r1, #0x1 + ldr r0, [r5, r0] + bl FUN_020200A0 + ldr r0, _0207CE3C ; =0x00000408 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02020208 + ldr r0, _0207CE3C ; =0x00000408 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_02020130 + ldrb r0, [r4, r7] + add r6, r6, #0x1 + add r5, r5, #0x4 + add r0, #0x1d + cmp r6, r0 + blo _0207CD92 +_0207CDBC: + ldr r0, _0207CE44 ; =0x00000693 + mov r1, #0x0 + strb r1, [r4, r0] + mov r1, #0x4 + sub r0, r0, #0x3 + strb r1, [r4, r0] + b _0207CDE8 +_0207CDCA: + add r1, r0, #0x7 + ldrb r1, [r4, r1] + add r2, r1, #0x1 + add r1, r0, #0x7 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0x20 + bne _0207CDE8 + mov r2, #0x0 + add r1, r0, #0x4 + strb r2, [r4, r1] + add r1, r0, #0x7 + strb r2, [r4, r1] + add r0, r0, #0x6 + strb r2, [r4, r0] +_0207CDE8: + ldr r0, _0207CE48 ; =0x00000691 + mov r6, #0x1d + ldrb r0, [r4, r0] + add r0, #0x1d + cmp r0, #0x1d + bls _0207CE34 + add r5, r4, #0x0 + ldr r7, _0207CE3C ; =0x00000408 + add r5, #0x74 +_0207CDFA: + ldr r0, [r5, r7] + bl FUN_02020128 + cmp r0, #0x0 + beq _0207CE26 + ldr r0, _0207CE3C ; =0x00000408 + mov r1, #0x1 + ldr r0, [r5, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + ldr r0, _0207CE3C ; =0x00000408 + ldr r0, [r5, r0] + bl FUN_0202022C + cmp r0, #0x6 + bne _0207CE26 + ldr r0, _0207CE3C ; =0x00000408 + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_020200A0 +_0207CE26: + ldr r0, _0207CE48 ; =0x00000691 + add r6, r6, #0x1 + ldrb r0, [r4, r0] + add r5, r5, #0x4 + add r0, #0x1d + cmp r6, r0 + blo _0207CDFA +_0207CE34: + pop {r3-r7, pc} + nop +_0207CE38: .word 0x0000068C +_0207CE3C: .word 0x00000408 +_0207CE40: .word 0x00000692 +_0207CE44: .word 0x00000693 +_0207CE48: .word 0x00000691 + + thumb_func_start FUN_0207CE4C +FUN_0207CE4C: ; 0x0207CE4C + push {r3-r7, lr} + add r6, r0, #0x0 + mov r4, #0x0 + add r5, r6, #0x0 + mov r7, #0x1 +_0207CE56: + mov r0, #0xa7 + lsl r0, r0, #0x2 + ldrh r1, [r6, r0] + add r0, r7, #0x0 + lsl r0, r4 + tst r0, r1 + ldr r0, _0207CED4 ; =0x00000464 + beq _0207CE70 + ldr r0, [r5, r0] + add r1, r7, #0x0 + bl FUN_02020130 + b _0207CE78 +_0207CE70: + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02020130 +_0207CE78: + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x6 + blo _0207CE56 + mov r0, #0x2a + lsl r0, r0, #0x4 + ldr r0, [r6, r0] + lsl r1, r0, #0x2 + lsr r1, r1, #0x1f + cmp r1, #0x1 + bne _0207CEA0 + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + bne _0207CEA0 + ldr r0, _0207CED8 ; =0x000004DC + mov r1, #0x1 + ldr r0, [r6, r0] + bl FUN_0200C63C + b _0207CEAA +_0207CEA0: + ldr r0, _0207CED8 ; =0x000004DC + mov r1, #0x0 + ldr r0, [r6, r0] + bl FUN_0200C63C +_0207CEAA: + mov r0, #0x2a + lsl r0, r0, #0x4 + ldr r0, [r6, r0] + lsr r0, r0, #0x1e + cmp r0, #0x2 + bne _0207CEC4 + mov r0, #0x4e + lsl r0, r0, #0x4 + ldr r0, [r6, r0] + mov r1, #0x1 + bl FUN_0200C63C + pop {r3-r7, pc} +_0207CEC4: + mov r0, #0x4e + lsl r0, r0, #0x4 + ldr r0, [r6, r0] + mov r1, #0x0 + bl FUN_0200C63C + pop {r3-r7, pc} + nop +_0207CED4: .word 0x00000464 +_0207CED8: .word 0x000004DC + + thumb_func_start FUN_0207CEDC +FUN_0207CEDC: ; 0x0207CEDC + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + ldr r0, _0207CF50 ; =0x000004AC + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207CF50 ; =0x000004AC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_02020208 + ldr r0, _0207CF50 ; =0x000004AC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_02020130 + add r1, sp, #0x0 + add r0, r4, #0x0 + add r1, #0x2 + add r2, sp, #0x0 + bl FUN_0207FC04 + ldr r0, _0207CF54 ; =0x0000068F + add r3, sp, #0x0 + ldrb r0, [r4, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + ldr r0, _0207CF50 ; =0x000004AC + bne _0207CF32 + mov r2, #0x0 + ldrsh r2, [r3, r2] + mov r1, #0x2 + ldrsh r1, [r3, r1] + add r2, #0xc0 + lsl r2, r2, #0x10 + ldr r0, [r4, r0] + asr r2, r2, #0x10 + bl FUN_0200C6E4 + add sp, #0x4 + pop {r3-r4, pc} +_0207CF32: + mov r1, #0x2 + mov r2, #0x0 + ldrsh r1, [r3, r1] + ldrsh r2, [r3, r2] + ldr r0, [r4, r0] + sub r1, r1, #0x4 + add r2, #0xc0 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0207CF50: .word 0x000004AC +_0207CF54: .word 0x0000068F + + thumb_func_start FUN_0207CF58 +FUN_0207CF58: ; 0x0207CF58 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207CF74 ; =0x000004AC + ldr r0, [r4, r0] + bl FUN_0202022C + cmp r0, #0x2 + bne _0207CF72 + ldr r0, _0207CF74 ; =0x000004AC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 +_0207CF72: + pop {r4, pc} + .balign 4 +_0207CF74: .word 0x000004AC + + thumb_func_start FUN_0207CF78 +FUN_0207CF78: ; 0x0207CF78 + push {r3-r7, lr} + ldr r7, _0207CFA8 ; =0x0000068E + add r5, r0, #0x0 + mov r4, #0x0 + mov r6, #0x1 +_0207CF82: + add r0, r6, #0x0 + ldrb r1, [r5, r7] + lsl r0, r4 + tst r0, r1 + beq _0207CF9C + lsl r0, r4, #0x2 + add r1, r5, r0 + mov r0, #0x4b + lsl r0, r0, #0x4 + ldr r0, [r1, r0] + add r1, r6, #0x0 + bl FUN_020200A0 +_0207CF9C: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x5 + blo _0207CF82 + pop {r3-r7, pc} + .balign 4 +_0207CFA8: .word 0x0000068E + + thumb_func_start FUN_0207CFAC +FUN_0207CFAC: ; 0x0207CFAC + push {r4, lr} + add r4, r0, #0x0 + cmp r1, #0x0 + bne _0207CFC0 + ldr r0, _0207CFE8 ; =0x000004C4 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} +_0207CFC0: + add r0, r1, #0x0 + bl FUN_0201AB14 + add r1, r0, #0x0 + ldr r0, _0207CFE8 ; =0x000004C4 + lsl r1, r1, #0x3 + sub r1, #0xa + lsl r1, r1, #0x10 + ldr r0, [r4, r0] + asr r1, r1, #0x10 + mov r2, #0x8 + bl FUN_0200C6E4 + ldr r0, _0207CFE8 ; =0x000004C4 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} + nop +_0207CFE8: .word 0x000004C4 + + thumb_func_start FUN_0207CFEC +FUN_0207CFEC: ; 0x0207CFEC + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_0207B628 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldrb r1, [r1, #0x11] + cmp r1, #0x2 + bne _0207D008 + bl FUN_0206B688 + b _0207D00C +_0207D008: + bl FUN_0206B6C8 +_0207D00C: + add r3, r0, #0x0 + mov r0, #0x0 + mov r1, #0x1 + str r0, [sp, #0x0] + mov r0, #0xb + lsl r1, r1, #0xa + str r0, [sp, #0x4] + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + mov r2, #0x13 + bl FUN_0200C9D8 + mov r2, #0x97 + lsl r2, r2, #0x2 + add r1, r2, #0x0 + ldrh r0, [r4, r2] + add r2, #0x44 + add r1, #0x42 + ldr r2, [r4, r2] + ldrh r1, [r4, r1] + lsl r2, r2, #0x3 + lsr r2, r2, #0x1f + bl FUN_0206B7BC + add r1, r0, #0x0 + ldr r0, _0207D068 ; =0x00000454 + add r1, r1, #0x7 + ldr r0, [r4, r0] + bl FUN_0200C664 + mov r0, #0x97 + lsl r0, r0, #0x2 + ldrh r0, [r4, r0] + mov r1, #0x1c + bl FUN_02068678 + add r2, r0, #0x0 + ldr r0, _0207D068 ; =0x00000454 + mov r1, #0x1 + ldr r0, [r4, r0] + eor r1, r2 + bl FUN_02020100 + add sp, #0x8 + pop {r4, pc} + .balign 4 +_0207D068: .word 0x00000454 + + thumb_func_start FUN_0207D06C +FUN_0207D06C: ; 0x0207D06C + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + bl FUN_0206B888 + add r3, r0, #0x0 + mov r0, #0x0 + mov r1, #0x1 + str r0, [sp, #0x0] + mov r0, #0x5 + lsl r1, r1, #0xa + str r0, [sp, #0x4] + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + mov r2, #0x13 + bl FUN_0200CA0C + ldr r0, _0207D0C0 ; =0x0000068C + ldrsb r0, [r4, r0] + cmp r0, #0x3 + ldr r0, _0207D0C4 ; =0x00000454 + bne _0207D0A6 + ldr r0, [r4, r0] + mov r1, #0x18 + mov r2, #0x30 + bl FUN_0200C6E4 + b _0207D0B0 +_0207D0A6: + ldr r0, [r4, r0] + mov r1, #0x20 + mov r2, #0x44 + bl FUN_0200C6E4 +_0207D0B0: + ldr r0, _0207D0C4 ; =0x00000454 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_0200C63C + add sp, #0x8 + pop {r4, pc} + nop +_0207D0C0: .word 0x0000068C +_0207D0C4: .word 0x00000454 + + thumb_func_start FUN_0207D0C8 +FUN_0207D0C8: ; 0x0207D0C8 + push {r4, lr} + add r4, r2, #0x0 + cmp r4, r1 + ble _0207D0EE + add r0, #0x2c + sub r1, r4, r1 + mul r1, r0 + lsl r0, r1, #0x10 + mov r1, #0x4b + lsl r1, r1, #0x2 + blx _u32_div_f + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + sub r0, r4, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + pop {r4, pc} +_0207D0EE: + add r0, #0x2c + sub r1, r1, r4 + mul r1, r0 + lsl r0, r1, #0x10 + mov r1, #0x4b + lsl r1, r1, #0x2 + blx _u32_div_f + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add r0, r4, r0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + pop {r4, pc} + + thumb_func_start FUN_0207D10C +FUN_0207D10C: ; 0x0207D10C + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r0, _0207D20C ; =0x00000295 + mov r1, #0x58 + ldrb r0, [r4, r0] + add r2, r1, #0x0 + bl FUN_0207D0C8 + add r5, r0, #0x0 + ldr r0, _0207D20C ; =0x00000295 + mov r1, #0x31 + ldrb r0, [r4, r0] + mov r2, #0x49 + bl FUN_0207D0C8 + add r2, r0, #0x0 + ldr r0, _0207D210 ; =0x000004C8 + add r1, r5, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C6E4 + ldr r0, _0207D214 ; =0x00000296 + mov r1, #0x6e + ldrb r0, [r4, r0] + mov r2, #0x58 + bl FUN_0207D0C8 + add r5, r0, #0x0 + ldr r0, _0207D214 ; =0x00000296 + mov r1, #0x41 + ldrb r0, [r4, r0] + mov r2, #0x49 + bl FUN_0207D0C8 + add r2, r0, #0x0 + ldr r0, _0207D218 ; =0x000004CC + add r1, r5, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C6E4 + ldr r0, _0207D21C ; =0x00000297 + mov r1, #0x67 + ldrb r0, [r4, r0] + mov r2, #0x58 + bl FUN_0207D0C8 + add r5, r0, #0x0 + ldr r0, _0207D21C ; =0x00000297 + mov r1, #0x5c + ldrb r0, [r4, r0] + mov r2, #0x49 + bl FUN_0207D0C8 + add r2, r0, #0x0 + mov r0, #0x4d + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + add r1, r5, #0x0 + bl FUN_0200C6E4 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldrb r0, [r4, r0] + mov r1, #0x48 + mov r2, #0x57 + bl FUN_0207D0C8 + add r5, r0, #0x0 + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldrb r0, [r4, r0] + mov r1, #0x5c + mov r2, #0x49 + bl FUN_0207D0C8 + add r2, r0, #0x0 + ldr r0, _0207D220 ; =0x000004D4 + add r1, r5, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C6E4 + ldr r0, _0207D224 ; =0x00000299 + mov r1, #0x41 + ldrb r0, [r4, r0] + mov r2, #0x57 + bl FUN_0207D0C8 + add r5, r0, #0x0 + ldr r0, _0207D224 ; =0x00000299 + mov r1, #0x41 + ldrb r0, [r4, r0] + mov r2, #0x49 + bl FUN_0207D0C8 + add r2, r0, #0x0 + ldr r0, _0207D228 ; =0x000004D8 + add r1, r5, #0x0 + ldr r0, [r4, r0] + bl FUN_0200C6E4 + ldr r0, _0207D210 ; =0x000004C8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207D218 ; =0x000004CC + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x4d + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x1 + bl FUN_020200A0 + ldr r0, _0207D220 ; =0x000004D4 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207D228 ; =0x000004D8 + mov r1, #0x1 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r3-r5, pc} + nop +_0207D20C: .word 0x00000295 +_0207D210: .word 0x000004C8 +_0207D214: .word 0x00000296 +_0207D218: .word 0x000004CC +_0207D21C: .word 0x00000297 +_0207D220: .word 0x000004D4 +_0207D224: .word 0x00000299 +_0207D228: .word 0x000004D8 + + thumb_func_start FUN_0207D22C +FUN_0207D22C: ; 0x0207D22C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207D268 ; =0x000004C8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207D26C ; =0x000004CC + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + mov r0, #0x4d + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_020200A0 + ldr r0, _0207D270 ; =0x000004D4 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + ldr r0, _0207D274 ; =0x000004D8 + mov r1, #0x0 + ldr r0, [r4, r0] + bl FUN_020200A0 + pop {r4, pc} + nop +_0207D268: .word 0x000004C8 +_0207D26C: .word 0x000004CC +_0207D270: .word 0x000004D4 +_0207D274: .word 0x000004D8 + + thumb_func_start FUN_0207D278 +FUN_0207D278: ; 0x0207D278 + push {r4-r6, lr} + sub sp, #0x8 + add r6, r1, #0x0 + add r5, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x1 + add r4, r2, #0x0 + bl FUN_0207FC5C + add r3, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x1 + add r0, #0x1a + lsl r1, r1, #0xa + str r0, [sp, #0x4] + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + mov r2, #0x27 + bl FUN_0200C9D8 + add r0, r6, #0x0 + mov r1, #0x2 + bl FUN_0207FC5C + add r4, #0x37 + add r2, r0, #0x0 + lsl r0, r4, #0x2 + add r1, r5, r0 + ldr r0, _0207D2C4 ; =0x00000408 + ldr r0, [r1, r0] + add r1, r2, #0x7 + bl FUN_0200C664 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 +_0207D2C4: .word 0x00000408 + + thumb_func_start FUN_0207D2C8 +FUN_0207D2C8: ; 0x0207D2C8 + push {r3-r7, lr} + sub sp, #0x8 + ldr r6, _0207D354 ; =0x00000408 + add r5, r0, #0x0 + mov r4, #0x37 + mov r7, #0x0 +_0207D2D4: + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, r6] + add r1, r7, #0x0 + bl FUN_020200A0 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x46 + bls _0207D2D4 + ldr r0, _0207D358 ; =0x0000068C + ldrsb r0, [r5, r0] + cmp r0, #0x6 + bne _0207D350 + mov r0, #0x0 + mov r1, #0x1 + str r0, [sp, #0x0] + mov r0, #0x5 + lsl r1, r1, #0xa + str r0, [sp, #0x4] + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + mov r2, #0x27 + mov r3, #0x88 + bl FUN_0200CA0C + ldr r7, _0207D35C ; =0x000004E4 + ldr r6, _0207D360 ; =0x00000699 + mov r4, #0x0 +_0207D312: + ldrb r0, [r5, r6] + cmp r4, r0 + bge _0207D33A + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, r7] + mov r1, #0x1 + bl FUN_020200A0 + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_0207C1E8 + lsl r2, r4, #0x18 + add r1, r0, #0x0 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_0207D278 +_0207D33A: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0xc + blo _0207D312 + mov r0, #0x52 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02020130 +_0207D350: + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0207D354: .word 0x00000408 +_0207D358: .word 0x0000068C +_0207D35C: .word 0x000004E4 +_0207D360: .word 0x00000699 + + thumb_func_start FUN_0207D364 +FUN_0207D364: ; 0x0207D364 + push {r3-r7, lr} + ldr r7, _0207D3BC ; =0x00000698 + add r5, r0, #0x0 + mov r4, #0x0 + add r6, r7, #0x1 +_0207D36E: + ldrb r0, [r5, r7] + lsl r0, r0, #0x2 + add r1, r4, r0 + ldrb r0, [r5, r6] + cmp r1, r0 + bge _0207D3A0 + lsl r0, r4, #0x2 + add r1, r5, r0 + ldr r0, _0207D3C0 ; =0x000004E4 + ldr r0, [r1, r0] + mov r1, #0x1 + bl FUN_020200A0 + lsl r1, r4, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_0207C1E8 + lsl r2, r4, #0x18 + add r1, r0, #0x0 + add r0, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_0207D278 + b _0207D3AE +_0207D3A0: + lsl r0, r4, #0x2 + add r1, r5, r0 + ldr r0, _0207D3C0 ; =0x000004E4 + ldr r0, [r1, r0] + mov r1, #0x0 + bl FUN_020200A0 +_0207D3AE: + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x8 + blo _0207D36E + pop {r3-r7, pc} + nop +_0207D3BC: .word 0x00000698 +_0207D3C0: .word 0x000004E4 + + thumb_func_start FUN_0207D3C4 +FUN_0207D3C4: ; 0x0207D3C4 + ldr r1, _0207D3E8 ; =0x00000697 + ldrb r2, [r0, r1] + ldr r1, _0207D3EC ; =0x00000514 + ldr r0, [r0, r1] + lsl r1, r2, #0x1e + lsr r3, r2, #0x2 + mov r2, #0x28 + mul r2, r3 + lsr r1, r1, #0x19 + add r1, #0x84 + add r2, #0x38 + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + ldr r3, _0207D3F0 ; =FUN_0200C6E4 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bx r3 + nop +_0207D3E8: .word 0x00000697 +_0207D3EC: .word 0x00000514 +_0207D3F0: .word FUN_0200C6E4 + + thumb_func_start FUN_0207D3F4 +FUN_0207D3F4: ; 0x0207D3F4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x52 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02020128 + cmp r0, #0x1 + bne _0207D414 + mov r0, #0x52 + lsl r0, r0, #0x4 + mov r1, #0x1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 +_0207D414: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207D418 +FUN_0207D418: ; 0x0207D418 + push {r3-r7, lr} + add r5, r0, #0x0 + cmp r1, #0x0 + bne _0207D43E + mov r4, #0x0 + ldr r6, _0207D4C0 ; =0x00000524 + add r7, r4, #0x0 +_0207D426: + lsl r0, r4, #0x2 + add r0, r5, r0 + ldr r0, [r0, r6] + add r1, r7, #0x0 + bl FUN_020200A0 + add r0, r4, #0x1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x5 + blo _0207D426 + pop {r3-r7, pc} +_0207D43E: + ldr r0, _0207D4C4 ; =0x00000295 + ldrb r1, [r5, r0] + add r0, r0, #0x1 + ldrb r0, [r5, r0] + add r4, r1, #0x0 + cmp r1, r0 + bge _0207D44E + add r4, r0, #0x0 +_0207D44E: + ldr r0, _0207D4C8 ; =0x00000297 + ldrb r0, [r5, r0] + cmp r4, r0 + bge _0207D458 + add r4, r0, #0x0 +_0207D458: + mov r0, #0xa6 + lsl r0, r0, #0x2 + ldrb r0, [r5, r0] + cmp r4, r0 + bge _0207D464 + add r4, r0, #0x0 +_0207D464: + ldr r0, _0207D4CC ; =0x00000299 + ldrb r0, [r5, r0] + cmp r4, r0 + bge _0207D46E + add r4, r0, #0x0 +_0207D46E: + ldr r0, _0207D4C0 ; =0x00000524 + ldr r3, _0207D4D0 ; =0x020FA75C + ldr r0, [r5, r0] + add r2, r4, #0x0 + bl FUN_0207D4F4 + ldr r1, _0207D4D4 ; =0x00000296 + ldr r0, _0207D4D8 ; =0x00000528 + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + ldr r3, _0207D4DC ; =0x020FA764 + add r2, r4, #0x0 + bl FUN_0207D4F4 + ldr r1, _0207D4C8 ; =0x00000297 + ldr r0, _0207D4E0 ; =0x0000052C + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + ldr r3, _0207D4E4 ; =0x020FA76C + add r2, r4, #0x0 + bl FUN_0207D4F4 + mov r1, #0x53 + lsl r1, r1, #0x4 + ldr r0, [r5, r1] + lsr r1, r1, #0x1 + ldrb r1, [r5, r1] + ldr r3, _0207D4E8 ; =0x020FA774 + add r2, r4, #0x0 + bl FUN_0207D4F4 + ldr r1, _0207D4CC ; =0x00000299 + ldr r0, _0207D4EC ; =0x00000534 + ldrb r1, [r5, r1] + ldr r0, [r5, r0] + ldr r3, _0207D4F0 ; =0x020FA77C + add r2, r4, #0x0 + bl FUN_0207D4F4 + pop {r3-r7, pc} + nop +_0207D4C0: .word 0x00000524 +_0207D4C4: .word 0x00000295 +_0207D4C8: .word 0x00000297 +_0207D4CC: .word 0x00000299 +_0207D4D0: .word 0x020FA75C +_0207D4D4: .word 0x00000296 +_0207D4D8: .word 0x00000528 +_0207D4DC: .word 0x020FA764 +_0207D4E0: .word 0x0000052C +_0207D4E4: .word 0x020FA76C +_0207D4E8: .word 0x020FA774 +_0207D4EC: .word 0x00000534 +_0207D4F0: .word 0x020FA77C + + thumb_func_start FUN_0207D4F4 +FUN_0207D4F4: ; 0x0207D4F4 + push {r4-r6, lr} + add r5, r1, #0x0 + add r6, r0, #0x0 + add r4, r3, #0x0 + cmp r5, #0x0 + beq _0207D504 + cmp r5, r2 + beq _0207D50E +_0207D504: + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_020200A0 + pop {r4-r6, pc} +_0207D50E: + mov r1, #0x1 + bl FUN_020200A0 + mov r0, #0x0 + ldrsh r1, [r4, r0] + mov r0, #0x4 + ldrsh r0, [r4, r0] + cmp r1, r0 + blt _0207D534 + sub r1, r1, r0 + lsl r2, r1, #0x8 + asr r1, r2, #0x7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #0x8 + mul r1, r5 + lsr r1, r1, #0x8 + add r1, r0, r1 + b _0207D546 +_0207D534: + sub r1, r0, r1 + lsl r2, r1, #0x8 + asr r1, r2, #0x7 + lsr r1, r1, #0x18 + add r1, r2, r1 + asr r1, r1, #0x8 + mul r1, r5 + lsr r1, r1, #0x8 + sub r1, r0, r1 +_0207D546: + mov r0, #0x2 + ldrsh r2, [r4, r0] + mov r0, #0x6 + ldrsh r0, [r4, r0] + cmp r2, r0 + blt _0207D566 + sub r2, r2, r0 + lsl r3, r2, #0x8 + asr r2, r3, #0x7 + lsr r2, r2, #0x18 + add r2, r3, r2 + asr r2, r2, #0x8 + mul r2, r5 + lsr r2, r2, #0x8 + add r2, r0, r2 + b _0207D578 +_0207D566: + sub r2, r0, r2 + lsl r3, r2, #0x8 + asr r2, r3, #0x7 + lsr r2, r2, #0x18 + add r2, r3, r2 + asr r2, r2, #0x8 + mul r2, r5 + lsr r2, r2, #0x8 + sub r2, r0, r2 +_0207D578: + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, r6, #0x0 + asr r1, r1, #0x10 + asr r2, r2, #0x10 + bl FUN_0200C6E4 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_02020208 + add r0, r6, #0x0 + mov r1, #0x0 + bl FUN_02020130 + pop {r4-r6, pc} + + thumb_func_start FUN_0207D598 +FUN_0207D598: ; 0x0207D598 + push {r3-r7, lr} + mov r7, #0x1 + ldr r6, _0207D5B8 ; =0x00000524 + add r5, r0, #0x0 + mov r4, #0x0 + lsl r7, r7, #0xc +_0207D5A4: + ldr r0, [r5, r6] + add r1, r7, #0x0 + bl FUN_020201E4 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x5 + blo _0207D5A4 + pop {r3-r7, pc} + nop +_0207D5B8: .word 0x00000524 + + thumb_func_start FUN_0207D5BC +FUN_0207D5BC: ; 0x0207D5BC + push {r3-r7, lr} + add r7, r0, #0x0 + mov r5, #0x0 + add r4, r7, #0x4 +_0207D5C4: + ldr r2, _0207D600 ; =0x020FB4AC + lsl r6, r5, #0x4 + lsl r3, r5, #0x3 + ldr r0, [r7, #0x0] + add r1, r4, r6 + add r2, r2, r3 + bl FUN_02019150 + add r0, r4, r6 + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x24 + blo _0207D5C4 + add r0, r7, #0x0 + bl FUN_0207DB78 + add r0, r7, #0x0 + bl FUN_0207D768 + add r0, r7, #0x0 + bl FUN_0207D800 + add r0, r7, #0x0 + bl FUN_0207D8A0 + pop {r3-r7, pc} + .balign 4 +_0207D600: .word 0x020FB4AC + + thumb_func_start FUN_0207D604 +FUN_0207D604: ; 0x0207D604 + push {r3-r7, lr} + add r4, r0, #0x0 + ldr r0, _0207D6D8 ; =0x0000068C + ldrsb r0, [r4, r0] + cmp r0, #0x7 + bhi _0207D6D4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207D61C: ; jump table (using 16-bit offset) + .short _0207D62C - _0207D61C - 2; case 0 + .short _0207D638 - _0207D61C - 2; case 1 + .short _0207D644 - _0207D61C - 2; case 2 + .short _0207D650 - _0207D61C - 2; case 3 + .short _0207D674 - _0207D61C - 2; case 4 + .short _0207D65C - _0207D61C - 2; case 5 + .short _0207D668 - _0207D61C - 2; case 6 + .short _0207D674 - _0207D61C - 2; case 7 +_0207D62C: + mov r0, #0x92 + mov r1, #0x6 + lsl r0, r0, #0x2 + ldr r5, _0207D6DC ; =0x020FB3FC + str r1, [r4, r0] + b _0207D692 +_0207D638: + mov r0, #0x92 + mov r1, #0x1 + lsl r0, r0, #0x2 + ldr r5, _0207D6E0 ; =0x020FB38C + str r1, [r4, r0] + b _0207D692 +_0207D644: + mov r0, #0x92 + mov r1, #0x8 + lsl r0, r0, #0x2 + ldr r5, _0207D6E4 ; =0x020FB42C + str r1, [r4, r0] + b _0207D692 +_0207D650: + mov r0, #0x92 + mov r1, #0x8 + lsl r0, r0, #0x2 + ldr r5, _0207D6E8 ; =0x020FB46C + str r1, [r4, r0] + b _0207D692 +_0207D65C: + mov r0, #0x92 + mov r1, #0x6 + lsl r0, r0, #0x2 + ldr r5, _0207D6EC ; =0x020FB3CC + str r1, [r4, r0] + b _0207D692 +_0207D668: + mov r0, #0x92 + mov r1, #0x4 + lsl r0, r0, #0x2 + ldr r5, _0207D6F0 ; =0x020FB3AC + str r1, [r4, r0] + b _0207D692 +_0207D674: + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x3 + beq _0207D684 + cmp r0, #0x4 + bne _0207D6D4 +_0207D684: + mov r0, #0x92 + mov r1, #0x3 + lsl r0, r0, #0x2 + ldr r5, _0207D6F4 ; =0x020FB394 + str r1, [r4, r0] + b _0207D692 +_0207D690: + pop {r3-r7, pc} +_0207D692: + mov r1, #0x92 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + mov r0, #0x13 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02018FF4 + mov r1, #0x91 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r1, #0x4 + ldr r0, [r4, r0] + mov r6, #0x0 + cmp r0, #0x0 + bls _0207D6D4 + add r7, r6, #0x0 +_0207D6B4: + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r0, [r4, #0x0] + add r1, r1, r7 + add r2, r5, #0x0 + bl FUN_02019150 + mov r0, #0x92 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r6, r6, #0x1 + add r5, #0x8 + add r7, #0x10 + cmp r6, r0 + blo _0207D6B4 +_0207D6D4: + pop {r3-r7, pc} + nop +_0207D6D8: .word 0x0000068C +_0207D6DC: .word 0x020FB3FC +_0207D6E0: .word 0x020FB38C +_0207D6E4: .word 0x020FB42C +_0207D6E8: .word 0x020FB46C +_0207D6EC: .word 0x020FB3CC +_0207D6F0: .word 0x020FB3AC +_0207D6F4: .word 0x020FB394 + + thumb_func_start FUN_0207D6F8 +FUN_0207D6F8: ; 0x0207D6F8 + push {r3, lr} + add r1, r0, #0x0 + ldr r0, _0207D748 ; =0x0000068C + ldrsb r0, [r1, r0] + cmp r0, #0x7 + bhi _0207D744 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207D710: ; jump table (using 16-bit offset) + .short _0207D732 - _0207D710 - 2; case 0 + .short _0207D732 - _0207D710 - 2; case 1 + .short _0207D732 - _0207D710 - 2; case 2 + .short _0207D732 - _0207D710 - 2; case 3 + .short _0207D720 - _0207D710 - 2; case 4 + .short _0207D732 - _0207D710 - 2; case 5 + .short _0207D732 - _0207D710 - 2; case 6 + .short _0207D720 - _0207D710 - 2; case 7 +_0207D720: + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r1, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x3 + beq _0207D732 + cmp r0, #0x4 + beq _0207D732 + pop {r3, pc} +_0207D732: + mov r2, #0x91 + lsl r2, r2, #0x2 + ldr r0, [r1, r2] + add r2, r2, #0x4 + ldr r1, [r1, r2] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_020191A4 +_0207D744: + pop {r3, pc} + nop +_0207D748: .word 0x0000068C + + thumb_func_start FUN_0207D74C +FUN_0207D74C: ; 0x0207D74C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_0207D6F8 + mov r4, #0x0 + add r5, r5, #0x4 +_0207D758: + add r0, r5, #0x0 + bl FUN_02019178 + add r4, r4, #0x1 + add r5, #0x10 + cmp r4, #0x24 + blo _0207D758 + pop {r3-r5, pc} + + thumb_func_start FUN_0207D768 +FUN_0207D768: ; 0x0207D768 + push {r3-r5, lr} + sub sp, #0x10 + mov r4, #0x89 + add r5, r0, #0x0 + lsl r4, r4, #0x2 + add r0, r5, r4 + mov r1, #0x0 + bl FUN_02019620 + mov r1, #0x0 + add r2, r4, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207D7F4 ; =0x000F0E00 + add r2, #0x30 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r2, [r5, r2] + add r0, r5, r4 + add r3, r1, #0x0 + bl FUN_0201BDE0 + add r0, r4, #0x0 + add r0, #0x3e + ldrb r1, [r5, r0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1f + bne _0207D7E8 + add r0, r0, #0x1 + ldrb r0, [r5, r0] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + bne _0207D7CA + ldr r2, _0207D7F8 ; =0x00000674 + mov r1, #0x1 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r2, #0xc1 + add r0, r5, #0x0 + add r1, r5, r4 + lsl r2, r2, #0xa + mov r3, #0x1 + bl FUN_0207D998 + b _0207D7E8 +_0207D7CA: + cmp r0, #0x1 + bne _0207D7E8 + ldr r2, _0207D7F8 ; =0x00000674 + mov r1, #0x2 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r2, _0207D7FC ; =0x00050600 + add r0, r5, #0x0 + add r1, r5, r4 + mov r3, #0x1 + bl FUN_0207D998 +_0207D7E8: + add r0, r5, r4 + bl FUN_02019220 + add sp, #0x10 + pop {r3-r5, pc} + nop +_0207D7F4: .word 0x000F0E00 +_0207D7F8: .word 0x00000674 +_0207D7FC: .word 0x00050600 + + thumb_func_start FUN_0207D800 +FUN_0207D800: ; 0x0207D800 + push {r4-r6, lr} + sub sp, #0x10 + mov r6, #0x85 + add r5, r0, #0x0 + lsl r6, r6, #0x2 + add r0, r5, r6 + mov r1, #0x0 + bl FUN_02019620 + add r0, r6, #0x0 + add r0, #0x8c + ldr r0, [r5, r0] + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + bne _0207D88A + mov r0, #0x5 + str r0, [sp, #0x0] + mov r0, #0x67 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + mov r1, #0x1 + add r2, r5, r6 + mov r3, #0x0 + bl FUN_0200B9A8 + ldr r0, _0207D894 ; =0x00000674 + mov r1, #0x3 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x0 + add r4, r0, #0x0 + add r2, r6, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + add r2, #0x4e + ldrb r2, [r5, r2] + ldr r0, _0207D898 ; =0x0000067C + mov r3, #0x3 + lsl r2, r2, #0x19 + ldr r0, [r5, r0] + lsr r2, r2, #0x19 + bl FUN_0200AD38 + ldr r1, _0207D898 ; =0x0000067C + add r2, r4, #0x0 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x0 + mov r2, #0x1a + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207D89C ; =0x00010200 + lsl r2, r2, #0x6 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r2, [r5, r2] + add r0, r5, r6 + mov r3, #0x10 + bl FUN_0201BDE0 +_0207D88A: + add r0, r5, r6 + bl FUN_02019220 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0207D894: .word 0x00000674 +_0207D898: .word 0x0000067C +_0207D89C: .word 0x00010200 + + thumb_func_start FUN_0207D8A0 +FUN_0207D8A0: ; 0x0207D8A0 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r5, r0 + mov r1, #0x0 + bl FUN_02019620 + ldr r0, _0207D918 ; =0x0000025E + ldrh r2, [r5, r0] + cmp r2, #0x0 + beq _0207D8E4 + ldr r0, _0207D91C ; =0x0000067C + mov r1, #0x0 + ldr r0, [r5, r0] + bl FUN_0200AE38 + ldr r0, _0207D920 ; =0x00000674 + mov r1, #0x5 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r4, r0, #0x0 + ldr r1, _0207D91C ; =0x0000067C + add r2, r4, #0x0 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + b _0207D8F2 +_0207D8E4: + ldr r2, _0207D920 ; =0x00000674 + mov r1, #0x6 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 +_0207D8F2: + mov r2, #0x81 + lsl r2, r2, #0x2 + add r1, r5, r2 + add r0, r5, #0x0 + lsl r2, r2, #0x7 + mov r3, #0x0 + bl FUN_0207D998 + add r0, r5, #0x0 + add r0, #0x64 + bl FUN_02019220 + mov r0, #0x81 + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + pop {r3-r5, pc} + nop +_0207D918: .word 0x0000025E +_0207D91C: .word 0x0000067C +_0207D920: .word 0x00000674 + + thumb_func_start FUN_0207D924 +FUN_0207D924: ; 0x0207D924 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x8d + lsl r0, r0, #0x2 + add r4, r1, #0x0 + add r0, r5, r0 + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207D954 ; =0x000F0E00 + add r0, r5, #0x0 + mov r1, #0x23 + add r2, r4, #0x0 + bl FUN_0207DA1C + mov r0, #0x8d + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + pop {r3-r5, pc} + nop +_0207D954: .word 0x000F0E00 + + thumb_func_start FUN_0207D958 +FUN_0207D958: ; 0x0207D958 + push {r4, lr} + mov r3, #0x93 + lsl r3, r3, #0x2 + add r1, r0, #0x0 + add r2, r3, #0x0 + add r2, #0x18 + ldr r0, [r1, r3] + ldr r4, [r1, r2] + ldr r2, [r0, #0xc] + cmp r4, r2 + bne _0207D98E + add r2, r3, #0x0 + add r2, #0x48 + ldrb r2, [r1, r2] + ldrb r0, [r0, #0x10] + cmp r2, r0 + bne _0207D98E + ldr r2, _0207D994 ; =0x00000684 + add r3, #0xc + ldr r0, [r1, r3] + ldr r1, [r1, r2] + bl FUN_02021CE0 + cmp r0, #0x0 + bne _0207D98E + mov r0, #0x1 + pop {r4, pc} +_0207D98E: + mov r0, #0x0 + pop {r4, pc} + nop +_0207D994: .word 0x00000684 + + thumb_func_start FUN_0207D998 +FUN_0207D998: ; 0x0207D998 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + cmp r3, #0x0 + beq _0207D9B0 + cmp r3, #0x1 + beq _0207D9B4 + cmp r3, #0x2 + beq _0207D9D8 + b _0207D9FE +_0207D9B0: + mov r3, #0x0 + b _0207D9FE +_0207D9B4: + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r4, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r6, #0x0 + bl FUN_0201AB0C + lsl r0, r0, #0x1b + lsr r0, r0, #0x18 + sub r0, r0, r5 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + b _0207D9FE +_0207D9D8: + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r4, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + add r0, r6, #0x0 + bl FUN_0201AB0C + lsl r0, r0, #0x1b + lsr r0, r0, #0x18 + sub r1, r0, r5 + lsr r0, r1, #0x1f + add r0, r1, r0 + lsl r0, r0, #0x17 + lsr r3, r0, #0x18 +_0207D9FE: + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + str r7, [sp, #0x8] + mov r2, #0x1a + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r2, [r4, r2] + add r0, r6, #0x0 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207DA1C +FUN_0207DA1C: ; 0x0207DA1C + push {r4-r6, lr} + add r6, r3, #0x0 + ldr r3, _0207DA44 ; =0x00000674 + add r5, r0, #0x0 + ldr r0, [r5, r3] + add r4, r1, #0x0 + add r3, #0xc + add r1, r2, #0x0 + ldr r2, [r5, r3] + bl FUN_0200A8E0 + add r2, r5, #0x4 + lsl r1, r4, #0x4 + add r1, r2, r1 + ldr r3, [sp, #0x10] + add r0, r5, #0x0 + add r2, r6, #0x0 + bl FUN_0207D998 + pop {r4-r6, pc} + .balign 4 +_0207DA44: .word 0x00000674 + + thumb_func_start FUN_0207DA48 +FUN_0207DA48: ; 0x0207DA48 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _0207DA8C ; =0x00000674 + add r6, r2, #0x0 + ldr r0, [r5, r0] + add r7, r3, #0x0 + bl FUN_0200A914 + add r4, r0, #0x0 + add r0, sp, #0x10 + ldrb r0, [r0, #0x10] + mov r1, #0x0 + add r2, r6, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, _0207DA90 ; =0x0000067C + add r3, r7, #0x0 + ldr r0, [r5, r0] + bl FUN_0200AD38 + ldr r1, _0207DA90 ; =0x0000067C + add r2, r4, #0x0 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_0207DA8C: .word 0x00000674 +_0207DA90: .word 0x0000067C + + thumb_func_start FUN_0207DA94 +FUN_0207DA94: ; 0x0207DA94 + push {r3-r7, lr} + sub sp, #0x20 + add r4, r0, #0x0 + str r3, [sp, #0x10] + mov r0, #0x91 + lsl r0, r0, #0x2 + lsl r7, r1, #0x4 + ldr r3, _0207DB70 ; =0x00000674 + ldr r5, [r4, r0] + ldr r0, [r4, r3] + add r3, #0xc + add r1, r2, #0x0 + ldr r2, [r4, r3] + bl FUN_0200A8E0 + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r4, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + add r1, sp, #0x48 + ldrb r2, [r1, #0x0] + lsr r1, r0, #0x1 + sub r1, r2, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r0, r1, r0 + str r1, [sp, #0x14] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x18] + add r0, sp, #0x4c + ldrb r0, [r0, #0x0] + mov r2, #0x1a + mov r1, #0x0 + str r0, [sp, #0x1c] + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207DB74 ; =0x00010200 + lsl r2, r2, #0x6 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r2, [r4, r2] + ldr r3, [sp, #0x14] + add r0, r5, r7 + bl FUN_0201BDE0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r3, sp, #0x28 + ldrh r2, [r3, #0x14] + ldrb r3, [r3, #0x1c] + ldr r1, [sp, #0x10] + add r0, r4, #0x0 + bl FUN_0207DA48 + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r4, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + mov r12, r0 + ldr r0, [sp, #0x1c] + mov r2, #0x1a + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207DB74 ; =0x00010200 + mov r1, #0x0 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r3, [sp, #0x14] + mov r6, r12 + ldr r2, [r4, r2] + add r0, r5, r7 + sub r3, r3, r6 + bl FUN_0201BDE0 + mov r0, #0x0 + str r0, [sp, #0x0] + add r3, sp, #0x28 + ldrh r2, [r3, #0x18] + ldrb r3, [r3, #0x1c] + ldr r1, [sp, #0x38] + add r0, r4, #0x0 + bl FUN_0207DA48 + ldr r0, [sp, #0x1c] + mov r2, #0x1a + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207DB74 ; =0x00010200 + mov r1, #0x0 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r2, [r4, r2] + ldr r3, [sp, #0x18] + add r0, r5, r7 + bl FUN_0201BDE0 + add sp, #0x20 + pop {r3-r7, pc} + .balign 4 +_0207DB70: .word 0x00000674 +_0207DB74: .word 0x00010200 + + thumb_func_start FUN_0207DB78 +FUN_0207DB78: ; 0x0207DB78 + push {r4, lr} + sub sp, #0x10 + ldr r3, _0207DD7C ; =0x000F0E00 + mov r1, #0x0 + mov r2, #0x7 + add r4, r0, #0x0 + str r1, [sp, #0x0] + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x1 + mov r2, #0x17 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x2 + mov r2, #0x6d + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x3 + mov r2, #0x7e + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x4 + mov r2, #0x80 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x5 + mov r2, #0x9d + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x6 + mov r2, #0x4 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x8 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0xa + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x9 + mov r2, #0xc + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0xa + mov r2, #0xd + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0xb + mov r2, #0xf + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0xc + mov r2, #0x11 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0xd + mov r2, #0x13 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0xf + mov r2, #0x6e + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x10 + mov r2, #0x6f + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x11 + mov r2, #0x70 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x12 + mov r2, #0x71 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x13 + mov r2, #0x72 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x14 + mov r2, #0x73 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x15 + mov r2, #0x74 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x16 + mov r2, #0x7f + bl FUN_0207DA1C + ldr r2, _0207DD80 ; =0x00000674 + mov r1, #0x92 + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r0, #0x2 + str r0, [sp, #0x0] + mov r2, #0xff + str r2, [sp, #0x4] + ldr r0, _0207DD7C ; =0x000F0E00 + mov r1, #0x0 + str r0, [sp, #0x8] + add r2, #0x85 + add r0, r4, r2 + mov r2, #0x1a + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r2, [r4, r2] + add r3, r1, #0x0 + bl FUN_0201BDE0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x19 + mov r2, #0x95 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x1a + mov r2, #0x93 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x1b + mov r2, #0x94 + bl FUN_0207DA1C + mov r0, #0x2 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x1c + mov r2, #0xa2 + bl FUN_0207DA1C + mov r0, #0x2 + str r0, [sp, #0x0] + ldr r3, _0207DD84 ; =0x00010200 + add r0, r4, #0x0 + mov r1, #0x1d + mov r2, #0xa0 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD84 ; =0x00010200 + add r0, r4, #0x0 + mov r1, #0x1e + mov r2, #0xb6 + bl FUN_0207DA1C + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, _0207DD7C ; =0x000F0E00 + add r0, r4, #0x0 + mov r1, #0x1f + mov r2, #0xb3 + bl FUN_0207DA1C + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0207DD7C: .word 0x000F0E00 +_0207DD80: .word 0x00000674 +_0207DD84: .word 0x00010200 + + thumb_func_start FUN_0207DD88 +FUN_0207DD88: ; 0x0207DD88 + push {r4, lr} + sub sp, #0x10 + mov r2, #0x0 + add r4, r0, #0x0 + str r2, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r4, #0x0] + mov r1, #0x1 + add r3, r2, #0x0 + bl FUN_02018540 + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0x12 + str r0, [sp, #0x4] + mov r0, #0x16 + str r0, [sp, #0x8] + mov r0, #0x10 + str r0, [sp, #0xc] + ldr r0, [r4, #0x0] + mov r1, #0x1 + mov r2, #0x0 + mov r3, #0xe + bl FUN_02018540 + ldr r0, _0207DE38 ; =0x0000068C + ldrsb r0, [r4, r0] + cmp r0, #0x7 + bhi _0207DE34 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207DDD8: ; jump table (using 16-bit offset) + .short _0207DDE8 - _0207DDD8 - 2; case 0 + .short _0207DDF2 - _0207DDD8 - 2; case 1 + .short _0207DDFC - _0207DDD8 - 2; case 2 + .short _0207DE10 - _0207DDD8 - 2; case 3 + .short _0207DE06 - _0207DDD8 - 2; case 4 + .short _0207DE1A - _0207DDD8 - 2; case 5 + .short _0207DE24 - _0207DDD8 - 2; case 6 + .short _0207DE2E - _0207DDD8 - 2; case 7 +_0207DDE8: + add r0, r4, #0x0 + bl FUN_0207DE3C + add sp, #0x10 + pop {r4, pc} +_0207DDF2: + add r0, r4, #0x0 + bl FUN_0207E190 + add sp, #0x10 + pop {r4, pc} +_0207DDFC: + add r0, r4, #0x0 + bl FUN_0207E200 + add sp, #0x10 + pop {r4, pc} +_0207DE06: + add r0, r4, #0x0 + bl FUN_0207E4A0 + add sp, #0x10 + pop {r4, pc} +_0207DE10: + add r0, r4, #0x0 + bl FUN_0207E594 + add sp, #0x10 + pop {r4, pc} +_0207DE1A: + add r0, r4, #0x0 + bl FUN_0207E650 + add sp, #0x10 + pop {r4, pc} +_0207DE24: + add r0, r4, #0x0 + bl FUN_0207E70C + add sp, #0x10 + pop {r4, pc} +_0207DE2E: + add r0, r4, #0x0 + bl FUN_0207E788 +_0207DE34: + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0207DE38: .word 0x0000068C + + thumb_func_start FUN_0207DE3C +FUN_0207DE3C: ; 0x0207DE3C + push {r3-r5, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, r4, #0x4 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0x74 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0x84 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0x94 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0xa4 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0xb4 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0xc4 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0xe4 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x20 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x40 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x50 + bl FUN_02019620 + mov r1, #0x93 + lsl r1, r1, #0x2 + ldr r0, [r4, r1] + add r1, #0x10 + ldrh r1, [r4, r1] + ldr r0, [r0, #0x1c] + bl FUN_0206BB48 + add r2, r0, #0x0 + beq _0207DEFE + mov r0, #0x2 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x9 + mov r3, #0x3 + bl FUN_0207DA48 + b _0207DF0C +_0207DEFE: + ldr r2, _0207E0B4 ; =0x00000674 + mov r1, #0x16 + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + bl FUN_0200A8E0 +_0207DF0C: + mov r1, #0x2a + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + lsl r0, r0, #0x2 + lsr r0, r0, #0x1f + bne _0207DF28 + sub r1, #0x5c + ldr r1, [r4, r1] + ldr r2, _0207E0B8 ; =0x00010200 + add r0, r4, #0x0 + mov r3, #0x2 + bl FUN_0207D998 + b _0207DF36 +_0207DF28: + sub r1, #0x5c + ldr r1, [r4, r1] + ldr r2, _0207E0BC ; =0x00050600 + add r0, r4, #0x0 + mov r3, #0x2 + bl FUN_0207D998 +_0207DF36: + mov r1, #0x25 + lsl r1, r1, #0x4 + mov r0, #0x0 + ldr r1, [r4, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + mov r2, #0x91 + lsl r2, r2, #0x2 + ldr r3, [r4, r2] + mov r1, #0x0 + add r5, r0, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E0B8 ; =0x00010200 + add r2, #0xc + str r0, [sp, #0x8] + str r1, [sp, #0xc] + add r0, r3, #0x0 + ldrb r3, [r3, #0x17] + ldr r2, [r4, r2] + add r0, #0x10 + lsl r3, r3, #0x3 + sub r3, r3, r5 + lsr r3, r3, #0x1 + bl FUN_0201BDE0 + mov r1, #0x96 + lsl r1, r1, #0x2 + mov r0, #0x0 + ldr r1, [r4, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + mov r5, #0x91 + lsl r5, r5, #0x2 + ldr r2, [r4, r5] + add r1, r2, #0x0 + add r1, #0x27 + ldrb r1, [r1, #0x0] + lsl r1, r1, #0x3 + sub r0, r1, r0 + lsr r3, r0, #0x1 + add r0, r5, #0x0 + add r0, #0x50 + ldrb r0, [r4, r0] + cmp r0, #0x0 + bne _0207DFB6 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0xc1 + lsl r0, r0, #0xa + str r0, [sp, #0x8] + add r2, #0x20 + str r1, [sp, #0xc] + add r5, #0x14 + add r0, r2, #0x0 + ldr r2, [r4, r5] + bl FUN_0201BDE0 + b _0207DFD0 +_0207DFB6: + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E0BC ; =0x00050600 + add r2, #0x20 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + add r5, #0x14 + add r0, r2, #0x0 + ldr r2, [r4, r5] + bl FUN_0201BDE0 +_0207DFD0: + mov r0, #0x2 + mov r2, #0x99 + str r0, [sp, #0x0] + lsl r2, r2, #0x2 + ldr r2, [r4, r2] + add r0, r4, #0x0 + lsl r2, r2, #0x10 + mov r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #0x5 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E0B8 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x30 + mov r3, #0x2 + bl FUN_0207D998 + mov r0, #0x1 + mov r2, #0x9a + str r0, [sp, #0x0] + lsl r2, r2, #0x2 + ldr r2, [r4, r2] + add r0, r4, #0x0 + mov r1, #0x12 + mov r3, #0x7 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E0B8 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x40 + mov r3, #0x2 + bl FUN_0207D998 + ldr r3, _0207E0C0 ; =0x00000262 + ldrb r0, [r4, r3] + lsl r0, r0, #0x19 + lsr r0, r0, #0x19 + cmp r0, #0x64 + bhs _0207E048 + mov r0, #0x1 + add r2, r3, #0x0 + str r0, [sp, #0x0] + add r2, #0xe + ldr r5, [r4, r2] + add r2, r3, #0x6 + ldr r2, [r4, r2] + add r0, r4, #0x0 + mov r1, #0x15 + sub r2, r5, r2 + mov r3, #0x7 + bl FUN_0207DA48 + b _0207E058 +_0207E048: + mov r0, #0x1 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x15 + mov r2, #0x0 + mov r3, #0x7 + bl FUN_0207DA48 +_0207E058: + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E0B8 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x50 + mov r3, #0x2 + bl FUN_0207D998 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x40 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x50 + bl FUN_02019220 + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_0207E0B4: .word 0x00000674 +_0207E0B8: .word 0x00010200 +_0207E0BC: .word 0x00050600 +_0207E0C0: .word 0x00000262 + + thumb_func_start FUN_0207E0C4 +FUN_0207E0C4: ; 0x0207E0C4 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, r1, #0x0 + add r1, r2, #0x0 + mov r2, #0x13 + bl FUN_0207FD00 + add r4, r0, #0x0 + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _0207E0F8 + ldr r0, [r4, #0x14] + mov r1, #0x0 + sub r0, r0, #0x1 + lsl r0, r0, #0x4 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E18C ; =0x00010200 + add r3, r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_0207E0F8: + ldr r2, [r4, #0x20] + cmp r2, #0x0 + beq _0207E11A + ldr r0, [r4, #0x1c] + mov r1, #0x0 + sub r0, r0, #0x1 + lsl r0, r0, #0x4 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E18C ; =0x00010200 + add r3, r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_0207E11A: + ldr r2, [r4, #0x28] + cmp r2, #0x0 + beq _0207E13C + ldr r0, [r4, #0x24] + mov r1, #0x0 + sub r0, r0, #0x1 + lsl r0, r0, #0x4 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E18C ; =0x00010200 + add r3, r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_0207E13C: + ldr r2, [r4, #0x30] + cmp r2, #0x0 + beq _0207E15E + ldr r0, [r4, #0x2c] + mov r1, #0x0 + sub r0, r0, #0x1 + lsl r0, r0, #0x4 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E18C ; =0x00010200 + add r3, r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_0207E15E: + ldr r2, [r4, #0x38] + cmp r2, #0x0 + beq _0207E180 + ldr r0, [r4, #0x34] + mov r1, #0x0 + sub r0, r0, #0x1 + lsl r0, r0, #0x4 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E18C ; =0x00010200 + add r3, r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 +_0207E180: + add r0, r4, #0x0 + bl FUN_02080094 + add sp, #0x10 + pop {r3-r5, pc} + nop +_0207E18C: .word 0x00010200 + + thumb_func_start FUN_0207E190 +FUN_0207E190: ; 0x0207E190 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x14 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + bl FUN_02019620 + add r0, r5, #0x0 + bl FUN_0207B628 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0207D958 + add r7, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r5, r0] + ldrb r1, [r1, #0x11] + cmp r1, #0x2 + bne _0207E1E8 + mov r0, #0x13 + bl FUN_020669C0 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02069A64 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r1, r4, #0x0 + add r2, r7, #0x0 + bl FUN_0207E0C4 + add r0, r4, #0x0 + bl FUN_02016A18 + b _0207E1F4 +_0207E1E8: + sub r0, #0x8 + ldr r0, [r5, r0] + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0207E0C4 +_0207E1F4: + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02019220 + pop {r3-r7, pc} + + thumb_func_start FUN_0207E200 +FUN_0207E200: ; 0x0207E200 + push {r3-r5, lr} + sub sp, #0x18 + add r4, r0, #0x0 + add r0, #0x24 + bl FUN_02019220 + add r0, r4, #0x0 + add r0, #0xf4 + bl FUN_02019220 + mov r0, #0x41 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x45 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x49 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x4d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x51 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x55 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x20 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x40 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x50 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x60 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x70 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201AB0C + mov r1, #0x76 + str r1, [sp, #0x0] + mov r1, #0x9d + lsl r1, r1, #0x2 + ldrh r2, [r4, r1] + lsl r0, r0, #0x1a + add r1, r1, #0x2 + str r2, [sp, #0x4] + ldrh r1, [r4, r1] + lsr r0, r0, #0x18 + mov r2, #0x75 + str r1, [sp, #0x8] + mov r1, #0x3 + str r1, [sp, #0xc] + str r0, [sp, #0x10] + mov r1, #0x0 + add r0, r4, #0x0 + mov r3, #0x77 + str r1, [sp, #0x14] + bl FUN_0207DA94 + mov r0, #0x0 + mov r2, #0x9e + str r0, [sp, #0x0] + lsl r2, r2, #0x2 + ldrh r2, [r4, r2] + add r0, r4, #0x0 + mov r1, #0x78 + mov r3, #0x3 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x10 + mov r3, #0x1 + bl FUN_0207D998 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r2, _0207E488 ; =0x0000027A + add r0, r4, #0x0 + ldrh r2, [r4, r2] + mov r1, #0x79 + mov r3, #0x3 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x20 + mov r3, #0x1 + bl FUN_0207D998 + mov r0, #0x0 + mov r2, #0x9f + str r0, [sp, #0x0] + lsl r2, r2, #0x2 + ldrh r2, [r4, r2] + add r0, r4, #0x0 + mov r1, #0x7a + mov r3, #0x3 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x30 + mov r3, #0x1 + bl FUN_0207D998 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r2, _0207E48C ; =0x0000027E + add r0, r4, #0x0 + ldrh r2, [r4, r2] + mov r1, #0x7b + mov r3, #0x3 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x40 + mov r3, #0x1 + bl FUN_0207D998 + mov r0, #0x0 + mov r2, #0xa + str r0, [sp, #0x0] + lsl r2, r2, #0x6 + ldrh r2, [r4, r2] + add r0, r4, #0x0 + mov r1, #0x7c + mov r3, #0x3 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x50 + mov r3, #0x1 + bl FUN_0207D998 + ldr r2, _0207E490 ; =0x00000282 + ldr r0, _0207E494 ; =0x0000067C + ldrb r2, [r4, r2] + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_0200ADCC + ldr r0, _0207E498 ; =0x00000674 + mov r1, #0x7d + ldr r0, [r4, r0] + bl FUN_0200A914 + add r5, r0, #0x0 + ldr r1, _0207E494 ; =0x0000067C + add r2, r5, #0x0 + ldr r0, [r4, r1] + add r1, r1, #0x4 + ldr r1, [r4, r1] + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x60 + mov r3, #0x0 + bl FUN_0207D998 + ldr r2, _0207E49C ; =0x0000022A + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0x13 + bl FUN_0200A86C + ldr r1, _0207E490 ; =0x00000282 + mov r2, #0x1a + lsl r2, r2, #0x6 + ldrb r1, [r4, r1] + ldr r2, [r4, r2] + add r5, r0, #0x0 + bl FUN_0200A8E0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E484 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x70 + mov r3, #0x0 + bl FUN_0207D998 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x40 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x50 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x60 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x70 + bl FUN_02019220 + add sp, #0x18 + pop {r3-r5, pc} + nop +_0207E484: .word 0x00010200 +_0207E488: .word 0x0000027A +_0207E48C: .word 0x0000027E +_0207E490: .word 0x00000282 +_0207E494: .word 0x0000067C +_0207E498: .word 0x00000674 +_0207E49C: .word 0x0000022A + + thumb_func_start FUN_0207E4A0 +FUN_0207E4A0: ; 0x0207E4A0 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r0, #0x34 + bl FUN_02019220 + mov r0, #0x59 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x3 + beq _0207E4C6 + cmp r0, #0x4 + bne _0207E580 +_0207E4C6: + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + ldr r2, _0207E584 ; =0x00000674 + mov r1, #0xa5 + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E588 ; =0x000F0E00 + add r0, r4, #0x0 + add r1, #0x10 + mov r3, #0x0 + bl FUN_0207D998 + ldr r1, _0207E58C ; =0x0000029B + ldr r2, _0207E584 ; =0x00000674 + ldrb r1, [r4, r1] + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + add r1, #0xa6 + bl FUN_0200A8E0 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E590 ; =0x00010200 + mov r1, #0x0 + str r0, [sp, #0x8] + mov r0, #0x91 + mov r2, #0x1a + str r1, [sp, #0xc] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + lsl r2, r2, #0x6 + ldr r2, [r4, r2] + add r0, #0x10 + add r3, r1, #0x0 + bl FUN_0201BDE0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019220 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldrb r1, [r1, #0x12] + cmp r1, #0x3 + bne _0207E580 + sub r0, #0x8 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02019620 + ldr r2, _0207E584 ; =0x00000674 + mov r1, #0xa3 + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E588 ; =0x000F0E00 + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_0207D998 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r4, #0x0 + bl FUN_0207CFAC +_0207E580: + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0207E584: .word 0x00000674 +_0207E588: .word 0x000F0E00 +_0207E58C: .word 0x0000029B +_0207E590: .word 0x00010200 + + thumb_func_start FUN_0207E594 +FUN_0207E594: ; 0x0207E594 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x44 + bl FUN_02019220 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x2 + bne _0207E5B4 + add r0, r4, #0x0 + mov r1, #0x9b + bl FUN_0207D924 + b _0207E5BC +_0207E5B4: + add r0, r4, #0x0 + mov r1, #0x81 + bl FUN_0207D924 +_0207E5BC: + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x20 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207EA44 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0207EA44 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0207EA44 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_0207EA44 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019220 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207E650 +FUN_0207E650: ; 0x0207E650 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x54 + bl FUN_02019220 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x2 + bne _0207E670 + add r0, r4, #0x0 + mov r1, #0x9f + bl FUN_0207D924 + b _0207E678 +_0207E670: + add r0, r4, #0x0 + mov r1, #0x9e + bl FUN_0207D924 +_0207E678: + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x20 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0207EA44 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_0207EA44 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0207EA44 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_0207EA44 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019220 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207E70C +FUN_0207E70C: ; 0x0207E70C + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r0, #0x7d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x79 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r2, _0207E780 ; =0x00000699 + add r0, r4, #0x0 + ldrb r2, [r4, r2] + mov r1, #0xb7 + mov r3, #0x3 + bl FUN_0207DA48 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E784 ; =0x00010200 + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_0207D998 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02019220 + ldr r0, _0207E780 ; =0x00000699 + ldrb r0, [r4, r0] + cmp r0, #0x0 + beq _0207E77A + add r0, r4, #0x0 + mov r1, #0xb4 + bl FUN_0207D924 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC +_0207E77A: + add sp, #0x4 + pop {r3-r4, pc} + nop +_0207E780: .word 0x00000699 +_0207E784: .word 0x00010200 + + thumb_func_start FUN_0207E788 +FUN_0207E788: ; 0x0207E788 + push {r4, lr} + sub sp, #0x10 + add r4, r0, #0x0 + mov r0, #0x71 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_02019220 + add r0, r4, #0x0 + mov r1, #0xa1 + bl FUN_0207D924 + mov r1, #0x8d + lsl r1, r1, #0x2 + add r0, r4, #0x0 + add r1, r4, r1 + bl FUN_0207CFAC + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x12] + cmp r0, #0x3 + beq _0207E7BC + cmp r0, #0x4 + bne _0207E82C +_0207E7BC: + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + ldr r2, _0207E830 ; =0x00000674 + mov r1, #0xa5 + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207E834 ; =0x000F0E00 + add r0, r4, #0x0 + add r1, #0x10 + mov r3, #0x0 + bl FUN_0207D998 + ldr r1, _0207E838 ; =0x0000029B + ldr r2, _0207E830 ; =0x00000674 + ldrb r1, [r4, r1] + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + add r1, #0xa6 + bl FUN_0200A8E0 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E83C ; =0x00010200 + mov r1, #0x0 + str r0, [sp, #0x8] + mov r0, #0x91 + mov r2, #0x1a + str r1, [sp, #0xc] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + lsl r2, r2, #0x6 + ldr r2, [r4, r2] + add r0, #0x10 + add r3, r1, #0x0 + bl FUN_0201BDE0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x10 + bl FUN_02019220 +_0207E82C: + add sp, #0x10 + pop {r4, pc} + .balign 4 +_0207E830: .word 0x00000674 +_0207E834: .word 0x000F0E00 +_0207E838: .word 0x0000029B +_0207E83C: .word 0x00010200 + + thumb_func_start FUN_0207E840 +FUN_0207E840: ; 0x0207E840 + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + add r0, #0x10 + bl FUN_02019620 + ldr r0, _0207E994 ; =0x00000674 + mov r1, #0xba + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x0 + add r4, r0, #0x0 + ldr r2, _0207E998 ; =0x0000067C + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, r2] + add r2, #0x1d + ldrb r2, [r5, r2] + mov r3, #0x3 + bl FUN_0200AD38 + ldr r1, _0207E998 ; =0x0000067C + add r2, r4, #0x0 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r5, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + mov r0, #0x38 + sub r0, r0, r1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + mov r1, #0x0 + mov r2, #0x1a + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E99C ; =0x00010200 + lsl r2, r2, #0x6 + str r0, [sp, #0x8] + mov r0, #0x91 + str r1, [sp, #0xc] + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + add r0, #0x10 + add r3, r4, #0x0 + bl FUN_0201BDE0 + ldr r0, _0207E994 ; =0x00000674 + mov r1, #0xb9 + ldr r0, [r5, r0] + bl FUN_0200A914 + add r6, r0, #0x0 + mov r0, #0x0 + add r1, r6, #0x0 + add r2, r0, #0x0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r0, r4, r0 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E99C ; =0x00010200 + add r2, r6, #0x0 + str r0, [sp, #0x8] + mov r0, #0x91 + str r1, [sp, #0xc] + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r3, r4, #0x0 + add r0, #0x10 + bl FUN_0201BDE0 + add r0, r6, #0x0 + bl FUN_02021A20 + ldr r0, _0207E994 ; =0x00000674 + mov r1, #0xb8 + ldr r0, [r5, r0] + bl FUN_0200A914 + mov r1, #0x0 + ldr r2, _0207E998 ; =0x0000067C + add r6, r0, #0x0 + add r3, r2, #0x0 + str r1, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, r2] + add r2, #0x1c + add r3, #0x1b + ldrb r2, [r5, r2] + ldrb r3, [r5, r3] + lsl r2, r2, #0x2 + add r2, r3, r2 + add r2, r2, #0x1 + mov r3, #0x3 + bl FUN_0200AD38 + ldr r1, _0207E998 ; =0x0000067C + add r2, r6, #0x0 + ldr r0, [r5, r1] + add r1, r1, #0x4 + ldr r1, [r5, r1] + bl FUN_0200B7B8 + add r0, r6, #0x0 + bl FUN_02021A20 + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r5, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + sub r0, r4, r0 + lsl r0, r0, #0x18 + mov r1, #0x0 + lsr r3, r0, #0x18 + mov r2, #0x1a + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207E99C ; =0x00010200 + lsl r2, r2, #0x6 + str r0, [sp, #0x8] + mov r0, #0x91 + str r1, [sp, #0xc] + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + add r0, #0x10 + bl FUN_0201BDE0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x10 + bl FUN_02019220 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0207E994: .word 0x00000674 +_0207E998: .word 0x0000067C +_0207E99C: .word 0x00010200 + + thumb_func_start FUN_0207E9A0 +FUN_0207E9A0: ; 0x0207E9A0 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x20 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0207EA34 ; =0x0000069A + mov r1, #0x3 + ldrb r0, [r4, r0] + bl FUN_0207FC5C + ldr r2, _0207EA38 ; =0x00000678 + add r1, r0, #0x0 + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207EA3C ; =0x000F0E00 + add r0, r4, #0x0 + add r1, #0x20 + mov r3, #0x0 + bl FUN_0207D998 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, _0207EA34 ; =0x0000069A + ldr r0, [r4, r0] + ldrb r1, [r4, r1] + ldr r0, [r0, #0x20] + bl FUN_0207FCC0 + ldr r2, _0207EA38 ; =0x00000678 + add r1, r0, #0x0 + ldr r0, [r4, r2] + add r2, #0x8 + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r2, _0207EA40 ; =0x00010200 + add r0, r4, #0x0 + add r1, #0x30 + mov r3, #0x0 + bl FUN_0207D998 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x20 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x30 + bl FUN_02019220 + pop {r4, pc} + .balign 4 +_0207EA34: .word 0x0000069A +_0207EA38: .word 0x00000678 +_0207EA3C: .word 0x000F0E00 +_0207EA40: .word 0x00010200 + + thumb_func_start FUN_0207EA44 +FUN_0207EA44: ; 0x0207EA44 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + mov r0, #0x91 + add r7, r1, #0x0 + lsl r0, r0, #0x2 + lsl r6, r7, #0x4 + ldr r4, [r5, r0] + cmp r7, #0x4 + beq _0207EA76 + lsl r1, r7, #0x1 + add r2, r5, r1 + add r1, r0, #0x0 + add r1, #0x40 + ldrh r1, [r2, r1] + add r2, r0, #0x0 + add r2, #0x48 + str r1, [sp, #0x20] + add r1, r5, r7 + ldrb r2, [r1, r2] + add r0, #0x4c + str r2, [sp, #0x1c] + ldrb r0, [r1, r0] + str r0, [sp, #0x18] + b _0207EA88 +_0207EA76: + add r0, #0x8 + ldr r0, [r5, r0] + mov r1, #0x0 + ldrh r0, [r0, #0x18] + str r0, [sp, #0x20] + bl FUN_0206AB30 + str r0, [sp, #0x1c] + str r0, [sp, #0x18] +_0207EA88: + ldr r2, _0207EB54 ; =0x00000688 + ldr r1, [sp, #0x20] + ldr r0, [r5, r2] + sub r2, #0x8 + ldr r2, [r5, r2] + bl FUN_0200A8E0 + mov r0, #0x2 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207EB58 ; =0x000F0E00 + mov r2, #0x1a + str r0, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r2, [r5, r2] + add r0, r4, r6 + mov r3, #0x1 + bl FUN_0201BDE0 + ldr r0, [sp, #0x20] + ldr r2, _0207EB5C ; =0x00000674 + cmp r0, #0x0 + beq _0207EB10 + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + mov r1, #0x87 + bl FUN_0200A8E0 + mov r3, #0x10 + mov r2, #0x1a + str r3, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207EB60 ; =0x00010200 + mov r1, #0x0 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r2, [r5, r2] + add r0, r4, r6 + bl FUN_0201BDE0 + add r0, r7, #0x0 + add r0, #0x8d + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + add r1, r7, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x18] + add r7, #0x88 + str r0, [sp, #0x8] + mov r0, #0x2 + str r0, [sp, #0xc] + mov r0, #0x3c + str r0, [sp, #0x10] + mov r0, #0x10 + str r0, [sp, #0x14] + add r0, r5, #0x0 + mov r2, #0x75 + add r3, r7, #0x0 + bl FUN_0207DA94 + add sp, #0x24 + pop {r4-r7, pc} +_0207EB10: + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + mov r1, #0x99 + bl FUN_0200A8E0 + mov r1, #0x1a + lsl r1, r1, #0x6 + mov r0, #0x0 + ldr r1, [r5, r1] + add r2, r0, #0x0 + bl FUN_02002E14 + add r3, r0, #0x0 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207EB60 ; =0x00010200 + mov r2, #0x1a + str r0, [sp, #0x8] + mov r1, #0x0 + add r0, r4, r6 + lsr r4, r3, #0x1 + mov r3, #0x3c + str r1, [sp, #0xc] + lsl r2, r2, #0x6 + ldr r2, [r5, r2] + sub r3, r3, r4 + bl FUN_0201BDE0 + add sp, #0x24 + pop {r4-r7, pc} + nop +_0207EB54: .word 0x00000688 +_0207EB58: .word 0x000F0E00 +_0207EB5C: .word 0x00000674 +_0207EB60: .word 0x00010200 + + thumb_func_start FUN_0207EB64 +FUN_0207EB64: ; 0x0207EB64 + push {r3-r6, lr} + sub sp, #0x4 + add r5, r0, #0x0 + mov r0, #0x65 + lsl r0, r0, #0x2 + add r0, r5, r0 + add r4, r1, #0x0 + bl FUN_02019220 + mov r0, #0x69 + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + mov r0, #0x6d + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + add r0, #0x50 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + add r0, #0x60 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + mov r1, #0x0 + add r0, #0x70 + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_0206AB18 + add r2, r0, #0x0 + cmp r2, #0x1 + bhi _0207EBD2 + ldr r2, _0207EC88 ; =0x00000674 + mov r1, #0x9a + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + b _0207EBE0 +_0207EBD2: + mov r0, #0x1 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x96 + mov r3, #0x3 + bl FUN_0207DA48 +_0207EBE0: + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + ldr r2, _0207EC8C ; =0x00010200 + add r0, r5, #0x0 + add r1, #0x50 + mov r3, #0x2 + bl FUN_0207D998 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_0206AB18 + add r2, r0, #0x0 + bne _0207EC0E + ldr r2, _0207EC88 ; =0x00000674 + mov r1, #0x9a + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + b _0207EC1C +_0207EC0E: + mov r0, #0x1 + str r0, [sp, #0x0] + add r0, r5, #0x0 + mov r1, #0x97 + mov r3, #0x3 + bl FUN_0207DA48 +_0207EC1C: + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + ldr r2, _0207EC8C ; =0x00010200 + add r0, r5, #0x0 + add r1, #0x60 + mov r3, #0x2 + bl FUN_0207D998 + ldr r2, _0207EC90 ; =0x0000024B + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0x13 + bl FUN_0200A86C + mov r2, #0x1a + lsl r2, r2, #0x6 + ldr r2, [r5, r2] + add r1, r4, #0x0 + add r6, r0, #0x0 + bl FUN_0200A8E0 + mov r1, #0x91 + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + ldr r2, _0207EC8C ; =0x00010200 + add r0, r5, #0x0 + add r1, #0x70 + mov r3, #0x0 + bl FUN_0207D998 + add r0, r6, #0x0 + bl FUN_0200A8B8 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x60 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x70 + bl FUN_02019220 + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_0207EC88: .word 0x00000674 +_0207EC8C: .word 0x00010200 +_0207EC90: .word 0x0000024B + + thumb_func_start FUN_0207EC94 +FUN_0207EC94: ; 0x0207EC94 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x65 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x69 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x6d + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x50 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x60 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x70 + bl FUN_0201958C + pop {r4, pc} + + thumb_func_start FUN_0207ECDC +FUN_0207ECDC: ; 0x0207ECDC + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldrh r1, [r1, #0x18] + cmp r1, #0x0 + beq _0207ED0E + sub r0, #0x8 + ldr r0, [r4, r0] + mov r1, #0x0 + add r0, #0x40 + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_0207EA44 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x40 + bl FUN_02019220 + pop {r4, pc} +_0207ED0E: + sub r0, #0xc8 + add r0, r4, r0 + bl FUN_02019220 + pop {r4, pc} + + thumb_func_start FUN_0207ED18 +FUN_0207ED18: ; 0x0207ED18 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x61 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + ldr r0, [r4, #0x0] + mov r1, #0x1 + bl FUN_0201AC68 + pop {r4, pc} + + thumb_func_start FUN_0207ED30 +FUN_0207ED30: ; 0x0207ED30 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldr r0, _0207EDB0 ; =0x0000068D + ldrb r0, [r4, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + lsl r0, r0, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldr r0, _0207EDB0 ; =0x0000068D + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + lsl r0, r0, #0x4 + add r0, r1, r0 + mov r1, #0x0 + bl FUN_02019620 + ldr r1, _0207EDB0 ; =0x0000068D + add r0, r4, #0x0 + ldrb r1, [r4, r1] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + bl FUN_0207EA44 + ldr r1, _0207EDB0 ; =0x0000068D + add r0, r4, #0x0 + ldrb r1, [r4, r1] + lsl r1, r1, #0x18 + lsr r1, r1, #0x1c + bl FUN_0207EA44 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldr r0, _0207EDB0 ; =0x0000068D + ldrb r0, [r4, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r1, [r4, r0] + ldr r0, _0207EDB0 ; =0x0000068D + ldrb r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1c + lsl r0, r0, #0x4 + add r0, r1, r0 + bl FUN_02019220 + pop {r4, pc} + nop +_0207EDB0: .word 0x0000068D + + thumb_func_start FUN_0207EDB4 +FUN_0207EDB4: ; 0x0207EDB4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0207EE20 ; =0x0000068C + ldrsb r0, [r5, r0] + cmp r0, #0x3 + bne _0207EDEE + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x60 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x70 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r4, [r5, r0] + add r4, #0x70 + b _0207EDF6 +_0207EDEE: + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r4, [r5, r0] + add r4, #0x50 +_0207EDF6: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02019620 + ldr r2, _0207EE24 ; =0x00000674 + mov r1, #0x9c + ldr r0, [r5, r2] + add r2, #0xc + ldr r2, [r5, r2] + bl FUN_0200A8E0 + ldr r2, _0207EE28 ; =0x00010200 + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r3, #0x0 + bl FUN_0207D998 + add r0, r4, #0x0 + bl FUN_02019220 + pop {r3-r5, pc} + .balign 4 +_0207EE20: .word 0x0000068C +_0207EE24: .word 0x00000674 +_0207EE28: .word 0x00010200 + + thumb_func_start FUN_0207EE2C +FUN_0207EE2C: ; 0x0207EE2C + push {r4-r6, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r4, r1, #0x0 + add r0, #0x50 + mov r1, #0x0 + bl FUN_02019620 + add r0, r4, #0x0 + mov r1, #0xa + bl FUN_0206AB18 + bl FUN_0208315C + add r4, r0, #0x0 + mov r0, #0x0 + mov r1, #0x1a + mov r2, #0xc5 + mov r3, #0x13 + bl FUN_0200A86C + mov r2, #0x1a + lsl r2, r2, #0x6 + ldr r2, [r5, r2] + add r1, r4, #0x0 + add r6, r0, #0x0 + bl FUN_0200A8E0 + mov r1, #0x0 + mov r2, #0x1a + str r1, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207EEAC ; =0x00010200 + lsl r2, r2, #0x6 + str r0, [sp, #0x8] + mov r0, #0x91 + str r1, [sp, #0xc] + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + add r0, #0x50 + add r3, r1, #0x0 + bl FUN_0201BDE0 + add r0, r6, #0x0 + bl FUN_0200A8B8 + mov r0, #0x75 + lsl r0, r0, #0x2 + add r0, r5, r0 + bl FUN_02019220 + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + add r0, #0x50 + bl FUN_02019220 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0207EEAC: .word 0x00010200 + + thumb_func_start FUN_0207EEB0 +FUN_0207EEB0: ; 0x0207EEB0 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x75 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0201958C + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + add r0, #0x50 + bl FUN_0201958C + pop {r4, pc} + + thumb_func_start FUN_0207EECC +FUN_0207EECC: ; 0x0207EECC + push {r4-r6, lr} + sub sp, #0x10 + add r4, r0, #0x0 + cmp r1, #0x4 + bgt _0207EEF0 + cmp r1, #0x0 + blt _0207EF0E + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207EEE6: ; jump table (using 16-bit offset) + .short _0207EEF6 - _0207EEE6 - 2; case 0 + .short _0207EEFA - _0207EEE6 - 2; case 1 + .short _0207EEFE - _0207EEE6 - 2; case 2 + .short _0207EF02 - _0207EEE6 - 2; case 3 + .short _0207EF06 - _0207EEE6 - 2; case 4 +_0207EEF0: + cmp r1, #0xfe + beq _0207EF0A + b _0207EF0E +_0207EEF6: + mov r5, #0xac + b _0207EF10 +_0207EEFA: + mov r5, #0xae + b _0207EF10 +_0207EEFE: + mov r5, #0xaf + b _0207EF10 +_0207EF02: + mov r5, #0xb0 + b _0207EF10 +_0207EF06: + mov r5, #0xad + b _0207EF10 +_0207EF0A: + mov r5, #0xb1 + b _0207EF10 +_0207EF0E: + mov r5, #0xb2 +_0207EF10: + mov r0, #0x91 + lsl r0, r0, #0x2 + ldr r6, [r4, r0] + ldr r2, _0207EF60 ; =0x000003E2 + add r6, #0x20 + add r0, r6, #0x0 + mov r1, #0x1 + mov r3, #0xd + bl FUN_0200D0BC + add r0, r6, #0x0 + mov r1, #0xf + bl FUN_02019620 + ldr r2, _0207EF64 ; =0x00000674 + add r1, r5, #0x0 + ldr r0, [r4, r2] + add r2, #0xc + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r3, #0x0 + mov r2, #0x1a + str r3, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + ldr r0, _0207EF68 ; =0x0001020F + lsl r2, r2, #0x6 + str r0, [sp, #0x8] + str r3, [sp, #0xc] + ldr r2, [r4, r2] + add r0, r6, #0x0 + mov r1, #0x1 + bl FUN_0201BDE0 + add r0, r6, #0x0 + bl FUN_02019220 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_0207EF60: .word 0x000003E2 +_0207EF64: .word 0x00000674 +_0207EF68: .word 0x0001020F + + thumb_func_start FUN_0207EF6C +FUN_0207EF6C: ; 0x0207EF6C + push {r3-r4, lr} + sub sp, #0x4 + blx FUN_020BB7F4 + blx G3X_Init + blx G3X_InitMtxStack + ldr r0, _0207EFEC ; =0x04000060 + ldr r1, _0207EFF0 ; =0xFFFFCFFD + ldrh r2, [r0, #0x0] + ldr r3, _0207EFF4 ; =0x0000CFFB + and r2, r1 + strh r2, [r0, #0x0] + ldrh r2, [r0, #0x0] + and r2, r3 + strh r2, [r0, #0x0] + add r2, r1, #0x2 + ldrh r4, [r0, #0x0] + add r1, r1, #0x2 + sub r3, #0x1c + and r4, r2 + mov r2, #0x8 + orr r2, r4 + strh r2, [r0, #0x0] + ldrh r2, [r0, #0x0] + and r2, r1 + mov r1, #0x10 + orr r1, r2 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + and r1, r3 + strh r1, [r0, #0x0] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + blx G3X_SetFog + mov r0, #0x0 + ldr r2, _0207EFF8 ; =0x00007FFF + add r1, r0, #0x0 + mov r3, #0x3f + str r0, [sp, #0x0] + blx G3X_SetClearColor + ldr r1, _0207EFFC ; =0x04000540 + mov r0, #0x0 + str r0, [r1, #0x0] + ldr r0, _0207F000 ; =0xBFFF0000 + str r0, [r1, #0x40] + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldr r1, _0207F004 ; =0x04000008 + mov r0, #0x3 + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x2 + orr r0, r2 + strh r0, [r1, #0x0] + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 +_0207EFEC: .word 0x04000060 +_0207EFF0: .word 0xFFFFCFFD +_0207EFF4: .word 0x0000CFFB +_0207EFF8: .word 0x00007FFF +_0207EFFC: .word 0x04000540 +_0207F000: .word 0xBFFF0000 +_0207F004: .word 0x04000008 + + thumb_func_start FUN_0207F008 +FUN_0207F008: ; 0x0207F008 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0207F05C ; =0x0000068C + ldrsb r0, [r4, r0] + cmp r0, #0x4 + bne _0207F046 + bl FUN_020222AC + bl FUN_0201EBA4 + ldr r2, _0207F060 ; =0x04000440 + mov r3, #0x0 + add r1, r2, #0x0 + str r3, [r2, #0x0] + add r1, #0x14 + str r3, [r1, #0x0] + mov r0, #0x2 + str r0, [r2, #0x0] + str r3, [r1, #0x0] + blx FUN_020B849C + mov r0, #0xb7 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_0207F108 + blx FUN_020B849C + add r0, r4, #0x0 + bl FUN_0207F1A4 +_0207F046: + blx FUN_020B02C8 + mov r0, #0xae + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + ldr r0, _0207F064 ; =0x04000540 + mov r1, #0x1 + str r1, [r0, #0x0] + pop {r4, pc} + .balign 4 +_0207F05C: .word 0x0000068C +_0207F060: .word 0x04000440 +_0207F064: .word 0x04000540 + + thumb_func_start FUN_0207F068 +FUN_0207F068: ; 0x0207F068 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0xad + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201EB70 + mov r0, #0x2d + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02014D9C + mov r0, #0x2d + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_02014C28 + mov r0, #0xae + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020072E8 + pop {r4, pc} + + thumb_func_start FUN_0207F098 +FUN_0207F098: ; 0x0207F098 + push {r3-r4, lr} + sub sp, #0x1c + ldr r3, _0207F100 ; =0x020FB5CC + add r4, r0, #0x0 + ldmia r3!, {r0-r1} + add r2, sp, #0x10 + stmia r2!, {r0-r1} + ldr r0, [r3, #0x0] + add r1, sp, #0x8 + str r0, [r2, #0x0] + mov r0, #0x0 + strh r0, [r1, #0x0] + strh r0, [r1, #0x2] + strh r0, [r1, #0x4] + strh r0, [r1, #0x6] + mov r0, #0x13 + bl FUN_0201EB64 + mov r1, #0xad + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r2, #0x1 + str r2, [sp, #0x0] + ldr r0, [r4, r1] + lsl r1, r2, #0x10 + str r0, [sp, #0x4] + ldr r3, _0207F104 ; =0x000005C1 + add r0, sp, #0x10 + add r2, sp, #0x8 + bl FUN_0201ED10 + mov r2, #0xad + lsl r2, r2, #0x2 + mov r1, #0x19 + ldr r2, [r4, r2] + mov r0, #0x0 + lsl r1, r1, #0xe + bl FUN_0201EC94 + mov r0, #0xad + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201EC88 + mov r0, #0xad + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0201EB8C + add sp, #0x1c + pop {r3-r4, pc} + nop +_0207F100: .word 0x020FB5CC +_0207F104: .word 0x000005C1 + + thumb_func_start FUN_0207F108 +FUN_0207F108: ; 0x0207F108 + push {r4-r7} + add r4, r0, #0x0 + ldr r0, _0207F170 ; =0x121400C0 + ldr r1, _0207F174 ; =0x040004A4 + ldr r2, _0207F178 ; =0x00003FE8 + str r0, [r1, #0x0] + mov r0, #0x1 + str r0, [r1, #0x5c] + ldr r0, _0207F17C ; =0x0400048C + mov r3, #0x0 + sub r1, #0x24 +_0207F11E: + str r2, [r1, #0x0] + ldrh r7, [r4, #0x2] + ldrh r5, [r4, #0x0] + ldrh r6, [r4, #0x4] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0, #0x0] + str r6, [r0, #0x0] + str r2, [r1, #0x0] + ldrh r7, [r4, #0x8] + ldrh r5, [r4, #0x6] + ldrh r6, [r4, #0xa] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0, #0x0] + str r6, [r0, #0x0] + str r2, [r1, #0x0] + ldrh r7, [r4, #0x14] + ldrh r5, [r4, #0x12] + ldrh r6, [r4, #0x16] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0, #0x0] + str r6, [r0, #0x0] + str r2, [r1, #0x0] + ldrh r7, [r4, #0xe] + ldrh r5, [r4, #0xc] + ldrh r6, [r4, #0x10] + lsl r7, r7, #0x10 + orr r5, r7 + str r5, [r0, #0x0] + add r3, r3, #0x1 + add r4, #0x18 + str r6, [r0, #0x0] + cmp r3, #0x4 + blo _0207F11E + ldr r0, _0207F180 ; =0x04000504 + mov r1, #0x0 + str r1, [r0, #0x0] + pop {r4-r7} + bx lr + .balign 4 +_0207F170: .word 0x121400C0 +_0207F174: .word 0x040004A4 +_0207F178: .word 0x00003FE8 +_0207F17C: .word 0x0400048C +_0207F180: .word 0x04000504 + + thumb_func_start FUN_0207F184 +FUN_0207F184: ; 0x0207F184 + mov r2, #0x0 + ldrsh r3, [r0, r2] + ldrsh r2, [r1, r2] + add r2, r3, r2 + strh r2, [r0, #0x0] + mov r2, #0x2 + ldrsh r3, [r0, r2] + ldrsh r2, [r1, r2] + add r2, r3, r2 + strh r2, [r0, #0x2] + mov r2, #0x4 + ldrsh r3, [r0, r2] + ldrsh r1, [r1, r2] + add r1, r3, r1 + strh r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_0207F1A4 +FUN_0207F1A4: ; 0x0207F1A4 + push {r3-r7, lr} + sub sp, #0x18 + mov r2, #0xff + lsl r2, r2, #0x2 + add r1, r0, #0x0 + ldr r1, [r1, r2] + str r0, [sp, #0x0] + cmp r1, #0x4 + bne _0207F1BE + bl FUN_0207D598 + add sp, #0x18 + pop {r3-r7, pc} +_0207F1BE: + cmp r1, #0x3 + bne _0207F1EA + add r6, r0, #0x0 + add r7, r2, #0x0 + mov r0, #0xb7 + mov r5, #0x0 + sub r7, #0x60 + lsl r0, r0, #0x2 +_0207F1CE: + add r4, r6, r7 + add r3, r6, r0 + mov r2, #0xc +_0207F1D4: + ldrh r1, [r4, #0x0] + add r4, r4, #0x2 + strh r1, [r3, #0x0] + add r3, r3, #0x2 + sub r2, r2, #0x1 + bne _0207F1D4 + add r5, r5, #0x1 + add r6, #0x18 + cmp r5, #0x4 + blo _0207F1CE + b _0207F274 +_0207F1EA: + mov r0, #0x0 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r2, #0xc0 + add r0, r0, r2 + str r0, [sp, #0x14] + mov r0, #0xb7 + lsl r0, r0, #0x2 + ldr r1, [sp, #0x0] + add r2, r0, #0x0 + add r1, r1, r0 + str r1, [sp, #0x10] + ldr r1, [sp, #0x0] + add r2, #0x66 + add r1, r1, r2 + str r1, [sp, #0xc] + ldr r1, [sp, #0x0] + add r2, r0, #0x6 + add r1, r1, r2 + str r1, [sp, #0x8] + add r2, r0, #0x0 + ldr r1, [sp, #0x0] + add r2, #0x6c + add r7, r1, r2 + add r2, r0, #0x0 + add r2, #0xc + add r6, r1, r2 + add r2, r0, #0x0 + add r2, #0x72 + add r0, #0x12 + add r4, r1, r2 + add r5, r1, r0 +_0207F22A: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + bl FUN_0207F184 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + bl FUN_0207F184 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_0207F184 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0207F184 + ldr r0, [sp, #0x14] + add r7, #0x18 + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r6, #0x18 + add r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + add r4, #0x18 + add r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r5, #0x18 + add r0, #0x18 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, #0x4 + blo _0207F22A +_0207F274: + mov r1, #0xff + ldr r0, [sp, #0x0] + lsl r1, r1, #0x2 + ldr r0, [r0, r1] + add r2, r0, #0x1 + ldr r0, [sp, #0x0] + str r2, [r0, r1] + ldr r0, [r0, r1] + cmp r0, #0x4 + bne _0207F294 + ldr r0, [sp, #0x0] + mov r1, #0x1 + bl FUN_0207D418 + add sp, #0x18 + pop {r3-r7, pc} +_0207F294: + ldr r0, [sp, #0x0] + mov r1, #0x0 + bl FUN_0207D418 + add sp, #0x18 + pop {r3-r7, pc} + + thumb_func_start FUN_0207F2A0 +FUN_0207F2A0: ; 0x0207F2A0 + push {r3-r7, lr} + sub sp, #0x18 + ldr r1, _0207F420 ; =0x0000068C + ldrsb r1, [r0, r1] + cmp r1, #0x4 + beq _0207F2AE + b _0207F41A +_0207F2AE: + ldr r7, _0207F424 ; =0x020FB60C + add r3, sp, #0x0 + ldrh r1, [r7, #0x8] + strh r1, [r3, #0x12] + ldrh r1, [r7, #0xa] + strh r1, [r3, #0x14] + ldrh r1, [r7, #0xc] + strh r1, [r3, #0x16] + mov r1, #0xb7 + lsl r1, r1, #0x2 + ldrh r5, [r3, #0x12] + add r2, r1, #0x2 + strh r5, [r0, r1] + ldrh r4, [r3, #0x14] + strh r4, [r0, r2] + ldrh r6, [r3, #0x16] + add r2, r1, #0x4 + strh r6, [r0, r2] + add r2, r1, #0x6 + strh r5, [r0, r2] + add r2, r1, #0x0 + add r2, #0x8 + strh r4, [r0, r2] + add r2, r1, #0x0 + add r2, #0xa + strh r6, [r0, r2] + add r2, r1, #0x0 + add r2, #0xc + strh r5, [r0, r2] + add r2, r1, #0x0 + add r2, #0xe + strh r4, [r0, r2] + add r2, r1, #0x0 + add r2, #0x10 + strh r6, [r0, r2] + add r2, r1, #0x0 + add r2, #0x12 + strh r5, [r0, r2] + add r2, r1, #0x0 + add r2, #0x14 + strh r4, [r0, r2] + add r2, r1, #0x0 + add r2, #0x16 + strh r6, [r0, r2] + ldrh r2, [r7, #0x3e] + ldr r6, _0207F428 ; =0x020FB64C + add r7, r1, #0x0 + strh r2, [r3, #0xc] + ldrh r2, [r6, #0x0] + add r7, #0x1c + strh r2, [r3, #0xe] + ldrh r2, [r6, #0x2] + strh r2, [r3, #0x10] + add r2, r1, #0x0 + ldrh r5, [r3, #0xc] + add r2, #0x18 + strh r5, [r0, r2] + add r2, r1, #0x0 + ldrh r4, [r3, #0xe] + add r2, #0x1a + strh r4, [r0, r2] + ldrh r2, [r3, #0x10] + strh r2, [r0, r7] + add r7, r1, #0x0 + add r7, #0x1e + strh r5, [r0, r7] + add r7, r1, #0x0 + add r7, #0x20 + strh r4, [r0, r7] + add r7, r1, #0x0 + add r7, #0x22 + strh r2, [r0, r7] + add r7, r1, #0x0 + add r7, #0x24 + strh r5, [r0, r7] + add r7, r1, #0x0 + add r7, #0x26 + strh r4, [r0, r7] + add r7, r1, #0x0 + add r7, #0x28 + strh r2, [r0, r7] + add r7, r1, #0x0 + add r7, #0x2a + strh r5, [r0, r7] + add r5, r1, #0x0 + add r5, #0x2c + strh r4, [r0, r5] + add r4, r1, #0x0 + add r4, #0x2e + strh r2, [r0, r4] + ldrh r2, [r6, #0x34] + strh r2, [r3, #0x6] + ldrh r2, [r6, #0x36] + strh r2, [r3, #0x8] + ldrh r2, [r6, #0x38] + add r6, r1, #0x0 + add r6, #0x34 + strh r2, [r3, #0xa] + add r2, r1, #0x0 + ldrh r5, [r3, #0x6] + add r2, #0x30 + strh r5, [r0, r2] + add r2, r1, #0x0 + ldrh r4, [r3, #0x8] + add r2, #0x32 + strh r4, [r0, r2] + ldrh r2, [r3, #0xa] + strh r2, [r0, r6] + add r6, r1, #0x0 + add r6, #0x36 + strh r5, [r0, r6] + add r6, r1, #0x0 + add r6, #0x38 + strh r4, [r0, r6] + add r6, r1, #0x0 + add r6, #0x3a + strh r2, [r0, r6] + add r6, r1, #0x0 + add r6, #0x3c + strh r5, [r0, r6] + add r6, r1, #0x0 + add r6, #0x3e + strh r4, [r0, r6] + add r6, r1, #0x0 + add r6, #0x40 + strh r2, [r0, r6] + add r6, r1, #0x0 + add r6, #0x42 + strh r5, [r0, r6] + add r5, r1, #0x0 + add r5, #0x44 + strh r4, [r0, r5] + add r4, r1, #0x0 + add r4, #0x46 + strh r2, [r0, r4] + ldr r2, _0207F42C ; =0x020FB68C + ldrh r4, [r2, #0x2a] + strh r4, [r3, #0x0] + ldrh r4, [r2, #0x2c] + strh r4, [r3, #0x2] + ldrh r2, [r2, #0x2e] + strh r2, [r3, #0x4] + add r2, r1, #0x0 + ldrh r5, [r3, #0x0] + add r2, #0x48 + strh r5, [r0, r2] + add r2, r1, #0x0 + ldrh r4, [r3, #0x2] + add r2, #0x4a + strh r4, [r0, r2] + ldrh r2, [r3, #0x4] + add r3, r1, #0x0 + add r3, #0x4c + strh r2, [r0, r3] + add r3, r1, #0x0 + add r3, #0x4e + strh r5, [r0, r3] + add r3, r1, #0x0 + add r3, #0x50 + strh r4, [r0, r3] + add r3, r1, #0x0 + add r3, #0x52 + strh r2, [r0, r3] + add r3, r1, #0x0 + add r3, #0x54 + strh r5, [r0, r3] + add r3, r1, #0x0 + add r3, #0x56 + strh r4, [r0, r3] + add r3, r1, #0x0 + add r3, #0x58 + strh r2, [r0, r3] + add r3, r1, #0x0 + add r3, #0x5a + strh r5, [r0, r3] + add r3, r1, #0x0 + add r3, #0x5c + strh r4, [r0, r3] + add r1, #0x5e + strh r2, [r0, r1] + bl FUN_0207F608 +_0207F41A: + add sp, #0x18 + pop {r3-r7, pc} + nop +_0207F420: .word 0x0000068C +_0207F424: .word 0x020FB60C +_0207F428: .word 0x020FB64C +_0207F42C: .word 0x020FB68C + + thumb_func_start FUN_0207F430 +FUN_0207F430: ; 0x0207F430 + push {r4-r5} + cmp r2, #0xff + bne _0207F446 + ldrh r2, [r0, #0x0] + strh r2, [r1, #0x0] + ldrh r2, [r0, #0x2] + strh r2, [r1, #0x2] + ldrh r0, [r0, #0x4] + strh r0, [r1, #0x4] + pop {r4-r5} + bx lr +_0207F446: + cmp r2, #0x0 + bne _0207F45A + ldrh r2, [r0, #0x6] + strh r2, [r1, #0x0] + ldrh r2, [r0, #0x8] + strh r2, [r1, #0x2] + ldrh r0, [r0, #0xa] + strh r0, [r1, #0x4] + pop {r4-r5} + bx lr +_0207F45A: + mov r3, #0x6 + ldrsh r5, [r0, r3] + mov r3, #0xc + ldrsh r3, [r0, r3] + add r4, r3, #0x0 + mul r4, r2 + add r3, r5, r4 + strh r3, [r1, #0x0] + mov r3, #0x8 + ldrsh r5, [r0, r3] + mov r3, #0xe + ldrsh r3, [r0, r3] + add r4, r3, #0x0 + mul r4, r2 + add r3, r5, r4 + strh r3, [r1, #0x2] + mov r3, #0xa + ldrsh r4, [r0, r3] + mov r3, #0x10 + ldrsh r0, [r0, r3] + mul r2, r0 + add r0, r4, r2 + strh r0, [r1, #0x4] + pop {r4-r5} + bx lr + + thumb_func_start FUN_0207F48C +FUN_0207F48C: ; 0x0207F48C + push {r3-r7, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0x0 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r0] + add r6, r2, #0x0 + sub r7, r1, r0 + add r0, r7, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + mov r1, #0x0 + blx _fgr + bls _0207F4E0 + add r0, r7, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + add r1, r0, #0x0 + ldr r0, _0207F600 ; =0x45800000 + blx _fmul + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + blx _ffix + b _0207F506 +_0207F4E0: + add r0, r7, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + add r1, r0, #0x0 + ldr r0, _0207F600 ; =0x45800000 + blx _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub + blx _ffix +_0207F506: + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + strh r0, [r6, #0x0] + mov r0, #0x2 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r0] + sub r7, r1, r0 + add r0, r7, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + mov r1, #0x0 + blx _fgr + bls _0207F558 + add r0, r7, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + add r1, r0, #0x0 + ldr r0, _0207F600 ; =0x45800000 + blx _fmul + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + blx _ffix + b _0207F57E +_0207F558: + add r0, r7, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + add r1, r0, #0x0 + ldr r0, _0207F600 ; =0x45800000 + blx _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub + blx _ffix +_0207F57E: + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + strh r0, [r6, #0x2] + mov r0, #0x4 + ldrsh r1, [r4, r0] + ldrsh r0, [r5, r0] + sub r4, r1, r0 + add r0, r4, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + mov r1, #0x0 + blx _fgr + bls _0207F5D0 + add r0, r4, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + add r1, r0, #0x0 + ldr r0, _0207F600 ; =0x45800000 + blx _fmul + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + blx _ffix + b _0207F5F6 +_0207F5D0: + add r0, r4, #0x0 + blx _fflt + ldr r1, _0207F600 ; =0x45800000 + blx _fdiv + ldr r1, _0207F604 ; =0x40800000 + blx _fdiv + add r1, r0, #0x0 + ldr r0, _0207F600 ; =0x45800000 + blx _fmul + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub + blx _ffix +_0207F5F6: + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + strh r0, [r6, #0x4] + pop {r3-r7, pc} + nop +_0207F600: .word 0x45800000 +_0207F604: .word 0x40800000 + + thumb_func_start FUN_0207F608 +FUN_0207F608: ; 0x0207F608 + push {r3-r7, lr} + sub sp, #0x28 + ldr r2, _0207F7D0 ; =0x00000295 + add r5, r0, #0x0 + mov r1, #0xe7 + lsl r1, r1, #0x2 + ldrb r2, [r5, r2] + ldr r0, _0207F7D4 ; =0x020FB5D8 + add r1, r5, r1 + bl FUN_0207F430 + ldr r2, _0207F7D8 ; =0x00000296 + ldr r1, _0207F7DC ; =0x000003A2 + ldrb r2, [r5, r2] + ldr r0, _0207F7E0 ; =0x020FB5EA + add r1, r5, r1 + bl FUN_0207F430 + ldr r2, _0207F7E4 ; =0x00000297 + ldr r1, _0207F7E8 ; =0x000003AE + ldrb r2, [r5, r2] + ldr r0, _0207F7EC ; =0x020FB5FC + add r1, r5, r1 + bl FUN_0207F430 + mov r1, #0xea + lsl r1, r1, #0x2 + ldr r0, _0207F7F0 ; =0x020FB60E + add r1, r5, r1 + mov r2, #0x0 + bl FUN_0207F430 + ldr r2, _0207F7F4 ; =0x00000299 + mov r1, #0xed + lsl r1, r1, #0x2 + ldrb r2, [r5, r2] + ldr r0, _0207F7F8 ; =0x020FB620 + add r1, r5, r1 + bl FUN_0207F430 + ldr r2, _0207F7D0 ; =0x00000295 + ldr r1, _0207F7FC ; =0x000003BA + ldrb r2, [r5, r2] + ldr r0, _0207F800 ; =0x020FB632 + add r1, r5, r1 + bl FUN_0207F430 + ldr r1, _0207F804 ; =0x000003C6 + ldr r0, _0207F808 ; =0x020FB644 + add r1, r5, r1 + mov r2, #0x0 + bl FUN_0207F430 + mov r2, #0xa6 + lsl r2, r2, #0x2 + mov r1, #0xf + lsl r1, r1, #0x6 + ldrb r2, [r5, r2] + ldr r0, _0207F80C ; =0x020FB656 + add r1, r5, r1 + bl FUN_0207F430 + ldr r2, _0207F7F4 ; =0x00000299 + mov r1, #0xf3 + lsl r1, r1, #0x2 + ldrb r2, [r5, r2] + ldr r0, _0207F810 ; =0x020FB668 + add r1, r5, r1 + bl FUN_0207F430 + ldr r1, _0207F814 ; =0x000003D2 + ldr r0, _0207F818 ; =0x020FB67A + add r1, r5, r1 + mov r2, #0x0 + bl FUN_0207F430 + ldr r2, _0207F7E4 ; =0x00000297 + ldr r1, _0207F81C ; =0x000003DE + ldrb r2, [r5, r2] + ldr r0, _0207F820 ; =0x020FB68C + add r1, r5, r1 + bl FUN_0207F430 + mov r2, #0xa6 + lsl r2, r2, #0x2 + mov r1, #0xf6 + lsl r1, r1, #0x2 + ldrb r2, [r5, r2] + ldr r0, _0207F824 ; =0x020FB69E + add r1, r5, r1 + bl FUN_0207F430 + mov r1, #0xf9 + lsl r1, r1, #0x2 + ldr r0, _0207F828 ; =0x020FB6B0 + add r1, r5, r1 + mov r2, #0x0 + bl FUN_0207F430 + ldr r2, _0207F7D8 ; =0x00000296 + ldr r1, _0207F82C ; =0x000003EA + ldrb r2, [r5, r2] + ldr r0, _0207F830 ; =0x020FB6C2 + add r1, r5, r1 + bl FUN_0207F430 + ldr r2, _0207F7E4 ; =0x00000297 + ldr r1, _0207F834 ; =0x000003F6 + ldrb r2, [r5, r2] + ldr r0, _0207F838 ; =0x020FB6D4 + add r1, r5, r1 + bl FUN_0207F430 + mov r2, #0xa6 + lsl r2, r2, #0x2 + mov r1, #0x3f + lsl r1, r1, #0x4 + ldrb r2, [r5, r2] + ldr r0, _0207F83C ; =0x020FB6E6 + add r1, r5, r1 + bl FUN_0207F430 + mov r0, #0x0 + str r0, [sp, #0x24] + mov r0, #0xcf + lsl r0, r0, #0x2 + add r1, r5, r0 + str r1, [sp, #0x20] + add r1, r0, #0x0 + add r1, #0x60 + add r1, r5, r1 + str r1, [sp, #0x1c] + add r1, r0, #0x0 + sub r1, #0x60 + add r1, r5, r1 + str r1, [sp, #0x18] + add r1, r0, #0x6 + add r1, r5, r1 + str r1, [sp, #0x14] + add r1, r0, #0x0 + add r1, #0x66 + add r1, r5, r1 + str r1, [sp, #0x10] + add r1, r0, #0x0 + sub r1, #0x5a + add r1, r5, r1 + str r1, [sp, #0xc] + add r1, r0, #0x0 + add r1, #0xc + add r1, r5, r1 + str r1, [sp, #0x8] + add r1, r0, #0x0 + add r1, #0x6c + add r1, r5, r1 + str r1, [sp, #0x4] + add r1, r0, #0x0 + sub r1, #0x54 + add r1, r5, r1 + str r1, [sp, #0x0] + add r1, r0, #0x0 + add r1, #0x12 + add r7, r5, r1 + add r1, r0, #0x0 + add r1, #0x72 + sub r0, #0x4e + add r6, r5, r1 + add r4, r5, r0 +_0207F756: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + bl FUN_0207F48C + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl FUN_0207F48C + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x8] + bl FUN_0207F48C + add r0, r4, #0x0 + add r1, r6, #0x0 + add r2, r7, #0x0 + bl FUN_0207F48C + ldr r0, [sp, #0x20] + add r7, #0x18 + add r0, #0x18 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r6, #0x18 + add r0, #0x18 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r4, #0x18 + add r0, #0x18 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r0, #0x18 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r0, #0x18 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + add r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r0, #0x18 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + add r0, #0x18 + str r0, [sp, #0x4] + ldr r0, [sp, #0x0] + add r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [sp, #0x24] + add r0, r0, #0x1 + str r0, [sp, #0x24] + cmp r0, #0x4 + blo _0207F756 + mov r0, #0xff + mov r1, #0x0 + lsl r0, r0, #0x2 + str r1, [r5, r0] + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 +_0207F7D0: .word 0x00000295 +_0207F7D4: .word 0x020FB5D8 +_0207F7D8: .word 0x00000296 +_0207F7DC: .word 0x000003A2 +_0207F7E0: .word 0x020FB5EA +_0207F7E4: .word 0x00000297 +_0207F7E8: .word 0x000003AE +_0207F7EC: .word 0x020FB5FC +_0207F7F0: .word 0x020FB60E +_0207F7F4: .word 0x00000299 +_0207F7F8: .word 0x020FB620 +_0207F7FC: .word 0x000003BA +_0207F800: .word 0x020FB632 +_0207F804: .word 0x000003C6 +_0207F808: .word 0x020FB644 +_0207F80C: .word 0x020FB656 +_0207F810: .word 0x020FB668 +_0207F814: .word 0x000003D2 +_0207F818: .word 0x020FB67A +_0207F81C: .word 0x000003DE +_0207F820: .word 0x020FB68C +_0207F824: .word 0x020FB69E +_0207F828: .word 0x020FB6B0 +_0207F82C: .word 0x000003EA +_0207F830: .word 0x020FB6C2 +_0207F834: .word 0x000003F6 +_0207F838: .word 0x020FB6D4 +_0207F83C: .word 0x020FB6E6 + + thumb_func_start FUN_0207F840 +FUN_0207F840: ; 0x0207F840 + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0x0 + mov r0, #0x13 + bl FUN_02006D98 + mov r1, #0xae + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r4, #0x0 + bl FUN_0207B628 + add r1, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r0, [r0, #0x11] + cmp r0, #0x2 + add r0, sp, #0x10 + bne _0207F870 + mov r2, #0x2 + bl FUN_02068B70 + b _0207F876 +_0207F870: + mov r2, #0x2 + bl FUN_02068B68 +_0207F876: + mov r1, #0xaf + lsl r1, r1, #0x2 + add r0, r4, r1 + sub r1, #0x60 + ldrh r1, [r4, r1] + bl FUN_02069010 + mov r0, #0x97 + lsl r0, r0, #0x2 + ldrh r0, [r4, r0] + mov r1, #0x1c + bl FUN_02068678 + mov r1, #0x1 + eor r0, r1 + mov r1, #0xb6 + lsl r1, r1, #0x2 + str r0, [r4, r1] + add r0, r1, #0x0 + mov r2, #0x0 + str r2, [sp, #0x0] + sub r0, #0x1c + str r2, [sp, #0x4] + add r0, r4, r0 + str r0, [sp, #0x8] + str r2, [sp, #0xc] + sub r1, #0x20 + ldr r0, [r4, r1] + add r1, sp, #0x10 + mov r2, #0x34 + mov r3, #0x68 + bl FUN_020073A0 + mov r2, #0xb5 + lsl r2, r2, #0x2 + str r0, [r4, r2] + ldr r0, [r4, r2] + add r2, r2, #0x4 + ldr r2, [r4, r2] + mov r1, #0x23 + bl FUN_02007558 + add sp, #0x20 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0207F8D0 +FUN_0207F8D0: ; 0x0207F8D0 + push {r3-r4, lr} + sub sp, #0xc + mov r1, #0x2a + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldr r0, [r4, r1] + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + beq _0207F904 + mov r2, #0x0 + add r0, r1, #0x0 + str r2, [sp, #0x0] + add r0, #0x38 + ldr r0, [r4, r0] + mov r3, #0x2 + str r0, [sp, #0x4] + add r0, r1, #0x0 + str r2, [sp, #0x8] + add r0, #0x30 + add r1, #0x34 + ldr r0, [r4, r0] + ldr r1, [r4, r1] + bl FUN_02069038 + add sp, #0xc + pop {r3-r4, pc} +_0207F904: + add r1, #0x34 + ldr r0, [r4, r1] + mov r1, #0x1 + bl FUN_02007314 + mov r1, #0x0 + mov r2, #0xb6 + str r1, [sp, #0x0] + lsl r2, r2, #0x2 + ldr r0, [r4, r2] + mov r3, #0x2 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + add r0, r2, #0x0 + sub r1, r2, #0x4 + sub r2, #0x7c + sub r0, #0x8 + ldrh r2, [r4, r2] + ldr r0, [r4, r0] + ldr r1, [r4, r1] + bl FUN_02069038 + add sp, #0xc + pop {r3-r4, pc} + + thumb_func_start FUN_0207F934 +FUN_0207F934: ; 0x0207F934 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x2d + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + mov r1, #0x0 + bl FUN_02014D9C + mov r0, #0xae + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020072E8 + add r0, r4, #0x0 + bl FUN_0207F840 + add r0, r4, #0x0 + bl FUN_0207F8D0 + pop {r4, pc} + + thumb_func_start FUN_0207F95C +FUN_0207F95C: ; 0x0207F95C + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x93 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + ldrb r1, [r0, #0x12] + cmp r1, #0x3 + bhi _0207F9AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0207F978: ; jump table (using 16-bit offset) + .short _0207F980 - _0207F978 - 2; case 0 + .short _0207F980 - _0207F978 - 2; case 1 + .short _0207F9AC - _0207F978 - 2; case 2 + .short _0207F9AC - _0207F978 - 2; case 3 +_0207F980: + ldr r0, [r0, #0x2c] + ldr r1, _0207F9C4 ; =0x0000068F + cmp r0, #0x0 + beq _0207F992 + ldrb r2, [r4, r1] + mov r0, #0xf + bic r2, r0 + strb r2, [r4, r1] + b _0207F9BA +_0207F992: + ldrb r2, [r4, r1] + mov r0, #0xf + bic r2, r0 + mov r0, #0x1 + orr r0, r2 + strb r0, [r4, r1] + mov r1, #0x4 + ldr r0, [r4, #0x0] + mov r2, #0x0 + add r3, r1, #0x0 + bl FUN_0201AEE4 + b _0207F9BA +_0207F9AC: + ldr r1, _0207F9C4 ; =0x0000068F + mov r0, #0xf + ldrb r2, [r4, r1] + bic r2, r0 + mov r0, #0xf + orr r0, r2 + strb r0, [r4, r1] +_0207F9BA: + add r0, r4, #0x0 + bl FUN_0207FA38 + pop {r4, pc} + nop +_0207F9C4: .word 0x0000068F + + thumb_func_start FUN_0207F9C8 +FUN_0207F9C8: ; 0x0207F9C8 + push {r3-r7, lr} + ldr r0, [r0, #0x0] + add r4, r1, #0x0 + mov r1, #0x4 + add r5, r2, #0x0 + bl FUN_0201886C + add r7, r0, #0x0 + lsl r0, r5, #0x2 + add r1, r5, r0 + ldrb r2, [r4, #0x0] + mov r0, #0x1 + mov r3, #0x0 + add r5, r2, #0x0 + and r5, r0 + mov r0, #0xf + mul r0, r5 + lsr r5, r2, #0x1 + mov r2, #0x96 + mul r2, r5 + add r0, r0, r2 + add r0, r1, r0 + add r0, #0x1e + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r12, r0 +_0207F9FC: + mov r0, #0x1e + add r1, r3, #0x0 + mul r1, r0 + mov r0, r12 + mov r2, #0x0 + add r5, r0, r1 +_0207FA08: + ldrb r0, [r4, #0x1] + ldrb r6, [r4, #0x3] + lsl r1, r0, #0xc + add r0, r2, r5 + add r1, r1, r0 + add r6, r3, r6 + lsl r6, r6, #0x5 + ldrb r0, [r4, #0x2] + add r6, r2, r6 + add r0, r0, r6 + lsl r0, r0, #0x1 + strh r1, [r7, r0] + add r0, r2, #0x1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 + cmp r2, #0x5 + blo _0207FA08 + add r0, r3, #0x1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #0x5 + blo _0207F9FC + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_0207FA38 +FUN_0207FA38: ; 0x0207FA38 + push {r3-r7, lr} + add r6, r0, #0x0 + ldr r0, _0207FA78 ; =0x0000068F + ldrb r0, [r6, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #0xf + beq _0207FA74 + lsl r1, r0, #0x2 + ldr r0, _0207FA7C ; =0x02106148 + mov r5, #0x0 + ldr r4, [r0, r1] + add r7, r5, #0x0 +_0207FA52: + lsl r1, r5, #0x2 + ldrb r0, [r4, r1] + cmp r0, #0xff + beq _0207FA6C + add r0, r6, #0x0 + add r1, r4, r1 + add r2, r7, #0x0 + bl FUN_0207F9C8 + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + b _0207FA52 +_0207FA6C: + ldr r0, [r6, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 +_0207FA74: + pop {r3-r7, pc} + nop +_0207FA78: .word 0x0000068F +_0207FA7C: .word 0x02106148 + + thumb_func_start FUN_0207FA80 +FUN_0207FA80: ; 0x0207FA80 + push {r3, lr} + bl FUN_0207FA98 + mov r1, #0x0 + mvn r1, r1 + cmp r0, r1 + beq _0207FA94 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, pc} +_0207FA94: + mov r0, #0xff + pop {r3, pc} + + thumb_func_start FUN_0207FA98 +FUN_0207FA98: ; 0x0207FA98 + push {r3, lr} + ldr r1, _0207FAB8 ; =0x0000068F + ldrb r0, [r0, r1] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #0xf + bne _0207FAAC + mov r0, #0x0 + mvn r0, r0 + pop {r3, pc} +_0207FAAC: + lsl r1, r0, #0x2 + ldr r0, _0207FABC ; =0x0210613C + ldr r0, [r0, r1] + bl FUN_02020988 + pop {r3, pc} + .balign 4 +_0207FAB8: .word 0x0000068F +_0207FABC: .word 0x0210613C + + thumb_func_start FUN_0207FAC0 +FUN_0207FAC0: ; 0x0207FAC0 + push {r3-r5, lr} + sub sp, #0x8 + add r5, r0, #0x0 + ldr r0, _0207FB18 ; =0x0000068F + ldrb r0, [r5, r0] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #0xf + bne _0207FADA + mov r0, #0x0 + add sp, #0x8 + mvn r0, r0 + pop {r3-r5, pc} +_0207FADA: + lsl r1, r0, #0x2 + ldr r0, _0207FB1C ; =0x0210613C + ldr r0, [r0, r1] + bl FUN_02020968 + add r4, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r4, r0 + beq _0207FB12 + ldr r1, _0207FB20 ; =0x0000FFFE + add r0, sp, #0x4 + strh r1, [r0, #0x0] + add r0, sp, #0x4 + str r0, [sp, #0x0] + ldr r3, _0207FB24 ; =0x021C48F8 + ldr r0, [r5, #0x0] + ldrh r2, [r3, #0x1c] + ldrh r3, [r3, #0x1e] + mov r1, #0x4 + bl FUN_0201AFBC + cmp r0, #0x0 + bne _0207FB12 + mov r0, #0x0 + add sp, #0x8 + mvn r0, r0 + pop {r3-r5, pc} +_0207FB12: + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + .balign 4 +_0207FB18: .word 0x0000068F +_0207FB1C: .word 0x0210613C +_0207FB20: .word 0x0000FFFE +_0207FB24: .word 0x021C48F8 + + thumb_func_start FUN_0207FB28 +FUN_0207FB28: ; 0x0207FB28 + push {r4-r6, lr} + ldr r1, _0207FBF4 ; =0x0000068F + add r5, r0, #0x0 + ldrb r2, [r5, r1] + lsl r2, r2, #0x1c + lsr r3, r2, #0x1a + ldr r2, _0207FBF8 ; =0x02106148 + ldr r4, [r2, r3] + add r2, r1, #0x6 + ldrb r2, [r5, r2] + cmp r2, #0x0 + beq _0207FB4A + cmp r2, #0x1 + beq _0207FB84 + cmp r2, #0x2 + beq _0207FB8C + b _0207FBEE +_0207FB4A: + sub r1, #0xab + add r0, r1, #0x0 + bl FUN_020054C8 + add r0, r5, #0x0 + bl FUN_0207FA38 + ldr r1, _0207FBFC ; =0x00000696 + add r0, r5, #0x0 + ldrb r1, [r5, r1] + mov r2, #0x2 + lsl r1, r1, #0x2 + add r1, r4, r1 + bl FUN_0207F9C8 + ldr r0, [r5, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 + add r0, r5, #0x0 + bl FUN_0207CEDC + ldr r0, _0207FC00 ; =0x00000694 + mov r1, #0x0 + strb r1, [r5, r0] + mov r1, #0x1 + add r0, r0, #0x1 + strb r1, [r5, r0] + b _0207FBEE +_0207FB84: + mov r2, #0x2 + add r0, r1, #0x6 + strb r2, [r5, r0] + b _0207FBEE +_0207FB8C: + add r2, r1, #0x5 + ldrb r2, [r5, r2] + cmp r2, #0x3 + beq _0207FBA0 + add r0, r1, #0x5 + ldrb r0, [r5, r0] + add r2, r0, #0x1 + add r0, r1, #0x5 + strb r2, [r5, r0] + b _0207FBEE +_0207FBA0: + bl FUN_0207CF58 + ldr r0, _0207FBFC ; =0x00000696 + ldrb r6, [r5, r0] + add r0, r5, #0x0 + bl FUN_0207FAC0 + cmp r6, r0 + beq _0207FBEE + mov r0, #0x2a + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + lsl r0, r0, #0x3 + lsr r0, r0, #0x1f + beq _0207FBD6 + lsl r1, r6, #0x2 + ldrb r0, [r4, r1] + cmp r0, #0x1 + beq _0207FBD6 + cmp r0, #0x7 + beq _0207FBD6 + add r0, r5, #0x0 + add r1, r4, r1 + mov r2, #0x0 + bl FUN_0207F9C8 + b _0207FBE2 +_0207FBD6: + lsl r1, r6, #0x2 + add r0, r5, #0x0 + add r1, r4, r1 + mov r2, #0x1 + bl FUN_0207F9C8 +_0207FBE2: + ldr r0, [r5, #0x0] + mov r1, #0x4 + bl FUN_0201AC68 + mov r0, #0x1 + pop {r4-r6, pc} +_0207FBEE: + mov r0, #0x0 + pop {r4-r6, pc} + nop +_0207FBF4: .word 0x0000068F +_0207FBF8: .word 0x02106148 +_0207FBFC: .word 0x00000696 +_0207FC00: .word 0x00000694 + + thumb_func_start FUN_0207FC04 +FUN_0207FC04: ; 0x0207FC04 + push {r4-r5} + ldr r4, _0207FC38 ; =0x0000068F + ldrb r3, [r0, r4] + lsl r3, r3, #0x1c + lsr r5, r3, #0x1a + ldr r3, _0207FC3C ; =0x02106148 + ldr r3, [r3, r5] + add r5, r4, #0x7 + ldrb r5, [r0, r5] + lsl r5, r5, #0x2 + add r5, r3, r5 + ldrb r5, [r5, #0x2] + lsl r5, r5, #0x3 + add r5, #0x14 + strh r5, [r1, #0x0] + add r1, r4, #0x7 + ldrb r0, [r0, r1] + lsl r0, r0, #0x2 + add r0, r3, r0 + ldrb r0, [r0, #0x3] + lsl r0, r0, #0x3 + add r0, #0x14 + strh r0, [r2, #0x0] + pop {r4-r5} + bx lr + nop +_0207FC38: .word 0x0000068F +_0207FC3C: .word 0x02106148 + + thumb_func_start FUN_0207FC40 +FUN_0207FC40: ; 0x0207FC40 + ldr r2, _0207FC54 ; =0x0000068F + ldrb r0, [r0, r2] + lsl r0, r0, #0x1c + lsr r2, r0, #0x1a + ldr r0, _0207FC58 ; =0x02106148 + ldr r2, [r0, r2] + lsl r0, r1, #0x2 + ldrb r0, [r2, r0] + bx lr + nop +_0207FC54: .word 0x0000068F +_0207FC58: .word 0x02106148 + + thumb_func_start FUN_0207FC5C +FUN_0207FC5C: ; 0x0207FC5C + cmp r1, #0x4 + bhi _0207FCA8 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0207FC6C: ; jump table (using 16-bit offset) + .short _0207FC76 - _0207FC6C - 2; case 0 + .short _0207FC80 - _0207FC6C - 2; case 1 + .short _0207FC8A - _0207FC6C - 2; case 2 + .short _0207FC94 - _0207FC6C - 2; case 3 + .short _0207FC9E - _0207FC6C - 2; case 4 +_0207FC76: + mov r1, #0xc + mul r1, r0 + ldr r0, _0207FCAC ; =0x020FB788 + ldr r0, [r0, r1] + bx lr +_0207FC80: + mov r1, #0xc + mul r1, r0 + ldr r0, _0207FCB0 ; =0x020FB78C + ldrh r0, [r0, r1] + bx lr +_0207FC8A: + mov r1, #0xc + mul r1, r0 + ldr r0, _0207FCB4 ; =0x020FB78E + ldrh r0, [r0, r1] + bx lr +_0207FC94: + mov r1, #0xc + mul r1, r0 + ldr r0, _0207FCB8 ; =0x020FB790 + ldrh r0, [r0, r1] + bx lr +_0207FC9E: + mov r1, #0xc + mul r1, r0 + ldr r0, _0207FCBC ; =0x020FB792 + ldrh r0, [r0, r1] + bx lr +_0207FCA8: + mov r0, #0x0 + bx lr + .balign 4 +_0207FCAC: .word 0x020FB788 +_0207FCB0: .word 0x020FB78C +_0207FCB4: .word 0x020FB78E +_0207FCB8: .word 0x020FB790 +_0207FCBC: .word 0x020FB792 + + thumb_func_start FUN_0207FCC0 +FUN_0207FCC0: ; 0x0207FCC0 + mov r2, #0xc + mul r2, r1 + ldr r1, _0207FCDC ; =0x020FB792 + ldrh r2, [r1, r2] + mov r1, #0x2 + lsl r1, r1, #0xe + tst r1, r2 + beq _0207FCD8 + lsl r1, r2, #0x18 + lsr r1, r1, #0x18 + ldrb r2, [r0, r1] + add r2, #0x92 +_0207FCD8: + add r0, r2, #0x0 + bx lr + .balign 4 +_0207FCDC: .word 0x020FB792 + + thumb_func_start FUN_0207FCE0 +FUN_0207FCE0: ; 0x0207FCE0 + mov r1, #0xc + mul r1, r0 + ldr r0, _0207FCFC ; =0x020FB792 + ldrh r1, [r0, r1] + mov r0, #0x2 + lsl r0, r0, #0xe + tst r0, r1 + beq _0207FCF6 + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bx lr +_0207FCF6: + mov r0, #0xff + bx lr + nop +_0207FCFC: .word 0x020FB792 + + thumb_func_start FUN_0207FD00 +FUN_0207FD00: ; 0x0207FD00 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r7, #0x0 + mov r1, #0x3c + bl FUN_02016998 + add r4, r0, #0x0 + mov r2, #0x65 + str r7, [r4, #0x0] + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + add r3, r7, #0x0 + bl FUN_0200A86C + str r0, [r4, #0x4] + ldr r2, [r4, #0x0] + mov r0, #0x9 + mov r1, #0x20 + bl FUN_0200AA90 + str r0, [r4, #0x8] + str r5, [r4, #0xc] + str r6, [r4, #0x10] + mov r0, #0x0 + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + str r0, [r4, #0x34] + str r0, [r4, #0x38] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x0] + bl FUN_020806F4 + cmp r0, #0x14 + bls _0207FD5A + b _02080090 +_0207FD5A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0207FD66: ; jump table (using 16-bit offset) + .short _0207FD90 - _0207FD66 - 2; case 0 + .short _0207FDBC - _0207FD66 - 2; case 1 + .short _0207FDE8 - _0207FD66 - 2; case 2 + .short _0207FE14 - _0207FD66 - 2; case 3 + .short _0207FE40 - _0207FD66 - 2; case 4 + .short _0207FE6C - _0207FD66 - 2; case 5 + .short _0207FE98 - _0207FD66 - 2; case 6 + .short _0207FEC4 - _0207FD66 - 2; case 7 + .short _0207FEF0 - _0207FD66 - 2; case 8 + .short _0207FF1C - _0207FD66 - 2; case 9 + .short _0207FF3E - _0207FD66 - 2; case 10 + .short _0207FF60 - _0207FD66 - 2; case 11 + .short _0207FF82 - _0207FD66 - 2; case 12 + .short _0207FFA4 - _0207FD66 - 2; case 13 + .short _0207FFC6 - _0207FD66 - 2; case 14 + .short _0207FFE8 - _0207FD66 - 2; case 15 + .short _02080014 - _0207FD66 - 2; case 16 + .short _0208002E - _0207FD66 - 2; case 17 + .short _02080046 - _0207FD66 - 2; case 18 + .short _02080060 - _0207FD66 - 2; case 19 + .short _02080078 - _0207FD66 - 2; case 20 +_0207FD90: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x31 + bl FUN_02080108 + mov r0, #0x6 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x7 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FDBC: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_02080108 + mov r0, #0x6 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x7 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FDE8: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_02080108 + mov r0, #0x6 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x7 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FE14: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_02080108 + mov r0, #0x8 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x9 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FE40: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x35 + bl FUN_02080108 + mov r0, #0x8 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x9 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FE6C: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x36 + bl FUN_02080108 + mov r0, #0x8 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x9 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FE98: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x37 + bl FUN_02080108 + mov r0, #0x8 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x9 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FEC4: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x38 + bl FUN_02080108 + mov r0, #0x7 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x8 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FEF0: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x39 + bl FUN_02080108 + mov r0, #0x7 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x8 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_0207FF1C: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x3a + bl FUN_02080108 + mov r0, #0x9 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + b _02080090 +_0207FF3E: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x3b + bl FUN_02080108 + mov r0, #0x9 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + b _02080090 +_0207FF60: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x3c + bl FUN_02080108 + mov r0, #0x9 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + b _02080090 +_0207FF82: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x3d + bl FUN_02080108 + mov r0, #0x9 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + b _02080090 +_0207FFA4: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x3e + bl FUN_02080108 + mov r0, #0x9 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + b _02080090 +_0207FFC6: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x3f + bl FUN_02080108 + mov r0, #0x9 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + b _02080090 +_0207FFE8: + mov r0, #0x1 + str r0, [r4, #0x14] + add r0, r4, #0x0 + bl FUN_020800E0 + mov r0, #0x2 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x40 + bl FUN_02080228 + mov r0, #0x6 + str r0, [r4, #0x24] + add r0, r4, #0x0 + bl FUN_0208048C + mov r0, #0x7 + str r0, [r4, #0x2c] + add r0, r4, #0x0 + bl FUN_02080678 + b _02080090 +_02080014: + mov r0, #0x1 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x65 + mov r2, #0x0 + bl FUN_02080384 + mov r0, #0x6 + str r0, [r4, #0x34] + add r0, r4, #0x0 + bl FUN_020806B4 + b _02080090 +_0208002E: + mov r2, #0x1 + add r0, r4, #0x0 + mov r1, #0x66 + str r2, [r4, #0x1c] + bl FUN_02080384 + mov r0, #0x6 + str r0, [r4, #0x34] + add r0, r4, #0x0 + bl FUN_020806B4 + b _02080090 +_02080046: + mov r0, #0x1 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x67 + mov r2, #0x0 + bl FUN_02080384 + mov r0, #0x6 + str r0, [r4, #0x34] + add r0, r4, #0x0 + bl FUN_020806B4 + b _02080090 +_02080060: + mov r2, #0x1 + add r0, r4, #0x0 + mov r1, #0x67 + str r2, [r4, #0x1c] + bl FUN_02080384 + mov r0, #0x6 + str r0, [r4, #0x34] + add r0, r4, #0x0 + bl FUN_020806B4 + b _02080090 +_02080078: + mov r0, #0x1 + str r0, [r4, #0x1c] + add r0, r4, #0x0 + mov r1, #0x68 + mov r2, #0x0 + bl FUN_02080384 + mov r0, #0x6 + str r0, [r4, #0x34] + add r0, r4, #0x0 + bl FUN_020806B4 +_02080090: + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02080094 +FUN_02080094: ; 0x02080094 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x18] + cmp r0, #0x0 + beq _020800A2 + bl FUN_02016A18 +_020800A2: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _020800AC + bl FUN_02016A18 +_020800AC: + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _020800B6 + bl FUN_02016A18 +_020800B6: + ldr r0, [r4, #0x30] + cmp r0, #0x0 + beq _020800C0 + bl FUN_02016A18 +_020800C0: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020800CA + bl FUN_02016A18 +_020800CA: + ldr r0, [r4, #0x8] + bl FUN_0200AB18 + ldr r0, [r4, #0x4] + bl FUN_0200A8B8 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020800E0 +FUN_020800E0: ; 0x020800E0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + bl FUN_02068854 + add r4, r0, #0x0 + cmp r4, #0x18 + bgt _02080106 + ldr r1, [r5, #0x0] + mov r0, #0x48 + bl FUN_020219F4 + str r0, [r5, #0x18] + add r4, #0x18 + ldr r0, [r5, #0x4] + ldr r2, [r5, #0x18] + add r1, r4, #0x0 + bl FUN_0200A8E0 +_02080106: + pop {r3-r5, pc} + + thumb_func_start FUN_02080108 +FUN_02080108: ; 0x02080108 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x9 + ldr r1, [r5, #0x0] + lsl r0, r0, #0x6 + bl FUN_020219F4 + add r4, r0, #0x0 + mov r0, #0x9 + ldr r1, [r5, #0x0] + lsl r0, r0, #0x6 + bl FUN_020219F4 + str r0, [r5, #0x20] + ldr r0, [r5, #0x4] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0200A8E0 + ldr r0, [r5, #0xc] + mov r1, #0x94 + mov r2, #0x0 + bl FUN_020671BC + mov r3, #0x2 + add r2, r0, #0x0 + str r3, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x0 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x95 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x1 + bl FUN_0200B764 + ldr r0, [r5, #0xc] + mov r1, #0x96 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x2 + ldr r0, [r5, #0x8] + add r3, r1, #0x0 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x9b + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x3 + ldr r0, [r5, #0x8] + add r3, r1, #0x0 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x98 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x4 + bl FUN_0200B59C + ldr r0, [r5, #0xc] + mov r1, #0x91 + mov r2, #0x0 + bl FUN_020671BC + mov r3, #0x2 + add r2, r0, #0x0 + str r3, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x5 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x92 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x6 + bl FUN_0200B764 + ldr r0, [r5, #0xc] + mov r1, #0x93 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x7 + mov r3, #0x2 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x8 + bl FUN_0200B59C + ldr r0, [r5, #0x8] + ldr r1, [r5, #0x20] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02080228 +FUN_02080228: ; 0x02080228 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0x12 + ldr r1, [r4, #0x0] + lsl r0, r0, #0x4 + bl FUN_020219F4 + add r5, r0, #0x0 + mov r0, #0x12 + ldr r1, [r4, #0x0] + lsl r0, r0, #0x4 + bl FUN_020219F4 + str r0, [r4, #0x20] + ldr r0, [r4, #0x4] + add r1, r6, #0x0 + add r2, r5, #0x0 + bl FUN_0200A8E0 + ldr r0, [r4, #0xc] + mov r1, #0x94 + mov r2, #0x0 + bl FUN_020671BC + mov r3, #0x2 + add r2, r0, #0x0 + str r3, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + mov r1, #0x0 + bl FUN_0200AD38 + ldr r0, [r4, #0xc] + mov r1, #0x95 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_0200B764 + ldr r0, [r4, #0xc] + mov r1, #0x96 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x2 + ldr r0, [r4, #0x8] + add r3, r1, #0x0 + bl FUN_0200AD38 + ldr r0, [r4, #0xc] + mov r1, #0x9b + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r1, #0x3 + ldr r0, [r4, #0x8] + add r3, r1, #0x0 + bl FUN_0200AD38 + ldr r0, [r4, #0xc] + mov r1, #0x79 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0xf + bhi _020802F8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020802D8: ; jump table (using 16-bit offset) + .short _020802F8 - _020802D8 - 2; case 0 + .short _02080334 - _020802D8 - 2; case 1 + .short _02080334 - _020802D8 - 2; case 2 + .short _02080334 - _020802D8 - 2; case 3 + .short _0208030C - _020802D8 - 2; case 4 + .short _0208030C - _020802D8 - 2; case 5 + .short _020802F8 - _020802D8 - 2; case 6 + .short _02080320 - _020802D8 - 2; case 7 + .short _02080320 - _020802D8 - 2; case 8 + .short _020802F8 - _020802D8 - 2; case 9 + .short _0208035C - _020802D8 - 2; case 10 + .short _0208035C - _020802D8 - 2; case 11 + .short _020802F8 - _020802D8 - 2; case 12 + .short _020802F8 - _020802D8 - 2; case 13 + .short _020802F8 - _020802D8 - 2; case 14 + .short _02080348 - _020802D8 - 2; case 15 +_020802F8: + mov r0, #0x1 + mov r1, #0x7 + bl FUN_02015CF8 + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_0200B59C + b _0208036E +_0208030C: + mov r0, #0x1 + mov r1, #0x3 + bl FUN_02015CF8 + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_0200B59C + b _0208036E +_02080320: + mov r0, #0x1 + mov r1, #0x4 + bl FUN_02015CF8 + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_0200B59C + b _0208036E +_02080334: + mov r0, #0x1 + mov r1, #0x5 + bl FUN_02015CF8 + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_0200B59C + b _0208036E +_02080348: + mov r0, #0x1 + mov r1, #0x8 + bl FUN_02015CF8 + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_0200B59C + b _0208036E +_0208035C: + mov r0, #0x1 + mov r1, #0x7 + bl FUN_02015CF8 + add r2, r0, #0x0 + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_0200B59C +_0208036E: + ldr r0, [r4, #0x8] + ldr r1, [r4, #0x20] + add r2, r5, #0x0 + bl FUN_0200B7B8 + add r0, r5, #0x0 + bl FUN_02021A20 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02080384 +FUN_02080384: ; 0x02080384 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r7, r1, #0x0 + mov r0, #0x5a + ldr r1, [r5, #0x0] + lsl r0, r0, #0x2 + add r6, r2, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + mov r0, #0x5a + ldr r1, [r5, #0x0] + lsl r0, r0, #0x2 + bl FUN_020219F4 + str r0, [r5, #0x20] + ldr r0, [r5, #0x4] + add r1, r7, #0x0 + add r2, r4, #0x0 + bl FUN_0200A8E0 + cmp r6, #0x0 + ldr r0, [r5, #0xc] + bne _02080418 + mov r1, #0x91 + mov r2, #0x0 + bl FUN_020671BC + mov r3, #0x2 + add r2, r0, #0x0 + str r3, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x5 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x92 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x6 + bl FUN_0200B764 + ldr r0, [r5, #0xc] + mov r1, #0x93 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x7 + mov r3, #0x2 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x8 + bl FUN_0200B59C + b _02080478 +_02080418: + mov r1, #0x94 + mov r2, #0x0 + bl FUN_020671BC + mov r3, #0x2 + add r2, r0, #0x0 + str r3, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x5 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x95 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x6 + bl FUN_0200B764 + ldr r0, [r5, #0xc] + mov r1, #0x96 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r5, #0x8] + mov r1, #0x7 + mov r3, #0x2 + bl FUN_0200AD38 + ldr r0, [r5, #0xc] + mov r1, #0x98 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r0, [r5, #0x8] + mov r1, #0x8 + bl FUN_0200B59C +_02080478: + ldr r0, [r5, #0x8] + ldr r1, [r5, #0x20] + add r2, r4, #0x0 + bl FUN_0200B7B8 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_0208048C +FUN_0208048C: ; 0x0208048C + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + mov r0, #0x48 + bl FUN_020219F4 + str r0, [r4, #0x28] + ldr r0, [r4, #0xc] + mov r1, #0x46 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + mov r1, #0x47 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + ldr r0, [r4, #0xc] + mov r1, #0x48 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x4] + ldr r0, [r4, #0xc] + mov r1, #0x49 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x0] + ldr r0, [r4, #0xc] + mov r1, #0x4a + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x4b + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + mov r1, #0x0 + ldr r0, [r4, #0xc] + add r2, r1, #0x0 + bl FUN_020671BC + mov r1, #0x6 + blx _u32_div_f + cmp r1, #0x5 + bhi _02080510 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02080504: ; jump table (using 16-bit offset) + .short _02080510 - _02080504 - 2; case 0 + .short _02080548 - _02080504 - 2; case 1 + .short _0208057E - _02080504 - 2; case 2 + .short _020805B4 - _02080504 - 2; case 3 + .short _020805EA - _02080504 - 2; case 4 + .short _02080620 - _02080504 - 2; case 5 +_02080510: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x8] + add r2, r0, #0x0 + mov r5, #0x0 + cmp r2, r1 + bge _02080520 + mov r5, #0x1 + add r0, r1, #0x0 +_02080520: + ldr r1, [sp, #0x4] + cmp r0, r1 + bge _0208052A + mov r5, #0x2 + add r0, r1, #0x0 +_0208052A: + ldr r1, [sp, #0x0] + cmp r0, r1 + bge _02080534 + mov r5, #0x3 + add r0, r1, #0x0 +_02080534: + cmp r0, r7 + bge _0208053C + mov r5, #0x4 + add r0, r7, #0x0 +_0208053C: + cmp r0, r6 + blt _02080542 + b _02080654 +_02080542: + mov r5, #0x5 + add r0, r6, #0x0 + b _02080654 +_02080548: + ldr r0, [sp, #0x8] + ldr r1, [sp, #0x4] + add r2, r0, #0x0 + mov r5, #0x1 + cmp r2, r1 + bge _02080558 + mov r5, #0x2 + add r0, r1, #0x0 +_02080558: + ldr r1, [sp, #0x0] + cmp r0, r1 + bge _02080562 + mov r5, #0x3 + add r0, r1, #0x0 +_02080562: + cmp r0, r7 + bge _0208056A + mov r5, #0x4 + add r0, r7, #0x0 +_0208056A: + cmp r0, r6 + bge _02080572 + mov r5, #0x5 + add r0, r6, #0x0 +_02080572: + ldr r1, [sp, #0xc] + cmp r0, r1 + bge _02080654 + mov r5, #0x0 + add r0, r1, #0x0 + b _02080654 +_0208057E: + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x0] + add r2, r0, #0x0 + mov r5, #0x2 + cmp r2, r1 + bge _0208058E + mov r5, #0x3 + add r0, r1, #0x0 +_0208058E: + cmp r0, r7 + bge _02080596 + mov r5, #0x4 + add r0, r7, #0x0 +_02080596: + cmp r0, r6 + bge _0208059E + mov r5, #0x5 + add r0, r6, #0x0 +_0208059E: + ldr r1, [sp, #0xc] + cmp r0, r1 + bge _020805A8 + mov r5, #0x0 + add r0, r1, #0x0 +_020805A8: + ldr r1, [sp, #0x8] + cmp r0, r1 + bge _02080654 + mov r5, #0x1 + add r0, r1, #0x0 + b _02080654 +_020805B4: + ldr r0, [sp, #0x0] + mov r5, #0x3 + add r1, r0, #0x0 + cmp r1, r7 + bge _020805C2 + mov r5, #0x4 + add r0, r7, #0x0 +_020805C2: + cmp r0, r6 + bge _020805CA + mov r5, #0x5 + add r0, r6, #0x0 +_020805CA: + ldr r1, [sp, #0xc] + cmp r0, r1 + bge _020805D4 + mov r5, #0x0 + add r0, r1, #0x0 +_020805D4: + ldr r1, [sp, #0x8] + cmp r0, r1 + bge _020805DE + mov r5, #0x1 + add r0, r1, #0x0 +_020805DE: + ldr r1, [sp, #0x4] + cmp r0, r1 + bge _02080654 + mov r5, #0x2 + add r0, r1, #0x0 + b _02080654 +_020805EA: + mov r5, #0x4 + add r0, r7, #0x0 + cmp r7, r6 + bge _020805F6 + mov r5, #0x5 + add r0, r6, #0x0 +_020805F6: + ldr r1, [sp, #0xc] + cmp r0, r1 + bge _02080600 + mov r5, #0x0 + add r0, r1, #0x0 +_02080600: + ldr r1, [sp, #0x8] + cmp r0, r1 + bge _0208060A + mov r5, #0x1 + add r0, r1, #0x0 +_0208060A: + ldr r1, [sp, #0x4] + cmp r0, r1 + bge _02080614 + mov r5, #0x2 + add r0, r1, #0x0 +_02080614: + ldr r1, [sp, #0x0] + cmp r0, r1 + bge _02080654 + mov r5, #0x3 + add r0, r1, #0x0 + b _02080654 +_02080620: + ldr r1, [sp, #0xc] + mov r5, #0x5 + add r0, r6, #0x0 + cmp r6, r1 + bge _0208062E + mov r5, #0x0 + add r0, r1, #0x0 +_0208062E: + ldr r1, [sp, #0x8] + cmp r0, r1 + bge _02080638 + mov r5, #0x1 + add r0, r1, #0x0 +_02080638: + ldr r1, [sp, #0x4] + cmp r0, r1 + bge _02080642 + mov r5, #0x2 + add r0, r1, #0x0 +_02080642: + ldr r1, [sp, #0x0] + cmp r0, r1 + bge _0208064C + mov r5, #0x3 + add r0, r1, #0x0 +_0208064C: + cmp r0, r7 + bge _02080654 + mov r5, #0x4 + add r0, r7, #0x0 +_02080654: + mov r1, #0x5 + blx _s32_div_f + mov r2, #0xa + add r6, r5, #0x0 + mul r6, r2 + ldr r3, _02080674 ; =0x020FBB54 + lsl r2, r1, #0x1 + add r1, r3, r6 + ldrh r1, [r2, r1] + ldr r0, [r4, #0x4] + ldr r2, [r4, #0x28] + bl FUN_0200A8E0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02080674: .word 0x020FBB54 + + thumb_func_start FUN_02080678 +FUN_02080678: ; 0x02080678 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r1, [r5, #0x0] + mov r0, #0x48 + bl FUN_020219F4 + mov r6, #0x0 + str r0, [r5, #0x30] + add r4, r6, #0x0 +_0208068A: + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + bl FUN_02069BC8 + cmp r0, #0x1 + bne _02080698 + add r6, r4, #0x1 +_02080698: + add r4, r4, #0x1 + cmp r4, #0x5 + blt _0208068A + ldr r1, _020806B0 ; =0x020FBB48 + lsl r2, r6, #0x1 + ldrh r1, [r1, r2] + ldr r0, [r5, #0x4] + ldr r2, [r5, #0x30] + bl FUN_0200A8E0 + pop {r4-r6, pc} + nop +_020806B0: .word 0x020FBB48 + + thumb_func_start FUN_020806B4 +FUN_020806B4: ; 0x020806B4 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + mov r0, #0x12 + ldr r1, [r5, #0x0] + lsl r0, r0, #0x4 + bl FUN_020219F4 + str r0, [r5, #0x38] + cmp r4, #0x5 + bgt _020806D8 + mov r1, #0x69 + b _020806EA +_020806D8: + cmp r4, #0xa + bgt _020806E0 + mov r1, #0x6a + b _020806EA +_020806E0: + cmp r4, #0x28 + bgt _020806E8 + mov r1, #0x6b + b _020806EA +_020806E8: + mov r1, #0x6c +_020806EA: + ldr r0, [r5, #0x4] + ldr r2, [r5, #0x38] + bl FUN_0200A8E0 + pop {r3-r5, pc} + + thumb_func_start FUN_020806F4 +FUN_020806F4: ; 0x020806F4 + push {r4-r6, lr} + add r4, r1, #0x0 + mov r1, #0x4c + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02080708 + b _0208084E +_02080708: + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _02080774 + add r0, r5, #0x0 + mov r1, #0x98 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + mov r0, #0x0 + mov r1, #0x37 + bl FUN_02015CF8 + cmp r6, r0 + bne _02080732 + mov r0, #0xf + pop {r4-r6, pc} +_02080732: + add r0, r5, #0x0 + mov r1, #0x6e + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _0208074C + cmp r4, #0x1 + bne _02080748 + mov r0, #0x7 + pop {r4-r6, pc} +_02080748: + mov r0, #0x8 + pop {r4-r6, pc} +_0208074C: + add r0, r5, #0x0 + mov r1, #0x98 + mov r2, #0x0 + bl FUN_020671BC + add r5, r0, #0x0 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_02015CF8 + cmp r5, r0 + bne _02080768 + mov r0, #0x2 + pop {r4-r6, pc} +_02080768: + cmp r4, #0x1 + bne _02080770 + mov r0, #0x0 + pop {r4-r6, pc} +_02080770: + mov r0, #0x1 + pop {r4-r6, pc} +_02080774: + add r0, r5, #0x0 + mov r1, #0x6e + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _020807D6 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x2 + bl FUN_02015CF8 + cmp r6, r0 + bne _020807A6 + cmp r4, #0x1 + bne _020807A2 + mov r0, #0xd + pop {r4-r6, pc} +_020807A2: + mov r0, #0xe + pop {r4-r6, pc} +_020807A6: + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r5, r0, #0x0 + mov r0, #0x2 + mov r1, #0x1 + bl FUN_02015CF8 + cmp r5, r0 + bne _020807CA + cmp r4, #0x1 + bne _020807C6 + mov r0, #0xb + pop {r4-r6, pc} +_020807C6: + mov r0, #0xc + pop {r4-r6, pc} +_020807CA: + cmp r4, #0x1 + bne _020807D2 + mov r0, #0x9 + pop {r4-r6, pc} +_020807D2: + mov r0, #0xa + pop {r4-r6, pc} +_020807D6: + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_02015CF8 + cmp r6, r0 + beq _02080836 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_02015CF8 + cmp r6, r0 + beq _02080836 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + mov r0, #0x1 + mov r1, #0x9 + bl FUN_02015CF8 + cmp r6, r0 + beq _02080836 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r5, r0, #0x0 + mov r0, #0x1 + mov r1, #0xa + bl FUN_02015CF8 + cmp r5, r0 + bne _02080842 +_02080836: + cmp r4, #0x1 + bne _0208083E + mov r0, #0x5 + pop {r4-r6, pc} +_0208083E: + mov r0, #0x6 + pop {r4-r6, pc} +_02080842: + cmp r4, #0x1 + bne _0208084A + mov r0, #0x3 + pop {r4-r6, pc} +_0208084A: + mov r0, #0x4 + pop {r4-r6, pc} +_0208084E: + cmp r4, #0x1 + bne _02080884 + add r0, r5, #0x0 + mov r1, #0x6e + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _02080880 + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + mov r0, #0x2 + mov r1, #0x1 + bl FUN_02015CF8 + cmp r4, r0 + bne _0208087C + mov r0, #0x14 + pop {r4-r6, pc} +_0208087C: + mov r0, #0x12 + pop {r4-r6, pc} +_02080880: + mov r0, #0x10 + pop {r4-r6, pc} +_02080884: + add r0, r5, #0x0 + mov r1, #0x6e + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x1 + bne _02080896 + mov r0, #0x13 + pop {r4-r6, pc} +_02080896: + mov r0, #0x11 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0208089C +FUN_0208089C: ; 0x0208089C + push {r3-r4, lr} + sub sp, #0x4 + ldr r4, [sp, #0x10] + str r4, [sp, #0x0] + bl FUN_020808AC + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_020808AC +FUN_020808AC: ; 0x020808AC + push {r3-r7, lr} + add r4, r0, #0x0 + add r7, r1, #0x0 + add r5, r3, #0x0 + ldr r6, [sp, #0x18] + cmp r2, #0x6 + bls _020808BC + b _02080AE0 +_020808BC: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_020808C8: ; jump table (using 16-bit offset) + .short _020808D6 - _020808C8 - 2; case 0 + .short _0208092A - _020808C8 - 2; case 1 + .short _02080974 - _020808C8 - 2; case 2 + .short _02080994 - _020808C8 - 2; case 3 + .short _020809B0 - _020808C8 - 2; case 4 + .short _02080A38 - _020808C8 - 2; case 5 + .short _02080A58 - _020808C8 - 2; case 6 +_020808D6: + mov r0, #0x1 + mov r1, #0x0 + bl FUN_02015CF8 + cmp r5, r0 + ble _020808E4 + mov r5, #0x0 +_020808E4: + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _0208090C + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02080BA8 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + add r0, r4, #0x0 + bl FUN_02080C08 + b _0208091E +_0208090C: + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_02080B30 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02080BA8 +_0208091E: + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02080AE4 + pop {r3-r7, pc} +_0208092A: + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _02080958 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02080BA8 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_02015CF8 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + add r0, r4, #0x0 + bl FUN_02080C08 + pop {r3-r7, pc} +_02080958: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02080BA8 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_02015CF8 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + pop {r3-r7, pc} +_02080974: + mov r1, #0x0 + bl FUN_02080BA8 + mov r0, #0x0 + mov r1, #0x37 + bl FUN_02015CF8 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + add r0, r4, #0x0 + bl FUN_02080C08 + pop {r3-r7, pc} +_02080994: + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_02080B30 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02080BA8 + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02080AE4 + pop {r3-r7, pc} +_020809B0: + add r2, r6, #0x0 + bl FUN_0206A9AC + cmp r0, #0x1 + bne _020809F6 + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _020809E2 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02080BA8 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + add r0, r4, #0x0 + bl FUN_02080C08 + b _02080A30 +_020809E2: + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_02080B30 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02080BA8 + b _02080A30 +_020809F6: + add r0, r4, #0x0 + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + bne _02080A1E + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02080BA8 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + add r0, r4, #0x0 + bl FUN_02080C08 + b _02080A30 +_02080A1E: + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02080BA8 + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + bl FUN_02080B30 +_02080A30: + add r0, r4, #0x0 + bl FUN_02080C28 + pop {r3-r7, pc} +_02080A38: + mov r1, #0x4c + mov r2, #0x0 + bl FUN_020672BC + cmp r0, #0x0 + beq _02080AE0 + mov r0, #0x1 + mov r1, #0x2 + bl FUN_02015CF8 + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + pop {r3-r7, pc} +_02080A58: + mov r0, #0x1 + mov r1, #0x0 + bl FUN_02015CF8 + cmp r5, r0 + ble _02080A66 + mov r5, #0x0 +_02080A66: + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_0206A9AC + cmp r0, #0x0 + bne _02080ACC + add r0, r4, #0x0 + mov r1, #0x98 + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x97 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x94 + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x91 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x95 + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x92 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x96 + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x93 + add r2, sp, #0x0 + bl FUN_02067960 +_02080ACC: + add r0, r4, #0x0 + add r1, r5, #0x0 + mov r2, #0x1 + bl FUN_02080B30 + add r0, r4, #0x0 + add r1, r7, #0x0 + add r2, r6, #0x0 + bl FUN_02080AE4 +_02080AE0: + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02080AE4 +FUN_02080AE4: ; 0x02080AE4 + push {r4-r6, lr} + sub sp, #0x8 + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r6, r2, #0x0 + bl FUN_020239BC + str r0, [sp, #0x4] + add r0, r4, #0x0 + bl FUN_020239CC + str r0, [sp, #0x0] + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_020239A0 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x7 + add r2, sp, #0x4 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x9c + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x90 + add r2, r4, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + bl FUN_02021A20 + add sp, #0x8 + pop {r4-r6, pc} + + thumb_func_start FUN_02080B30 +FUN_02080B30: ; 0x02080B30 + push {r0-r3} + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + add r0, sp, #0x0 + add r4, r2, #0x0 + bl FUN_020126B4 + cmp r4, #0x0 + add r2, sp, #0x24 + bne _02080B76 + add r0, r5, #0x0 + mov r1, #0x97 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x91 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x92 + add r2, sp, #0x4 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x93 + add r2, sp, #0x8 + bl FUN_02067960 + add sp, #0x10 + pop {r3-r5} + pop {r3} + add sp, #0x10 + bx r3 +_02080B76: + add r0, r5, #0x0 + mov r1, #0x98 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x94 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x95 + add r2, sp, #0x4 + bl FUN_02067960 + add r0, r5, #0x0 + mov r1, #0x96 + add r2, sp, #0x8 + bl FUN_02067960 + add sp, #0x10 + pop {r3-r5} + pop {r3} + add sp, #0x10 + bx r3 + .balign 4 + + thumb_func_start FUN_02080BA8 +FUN_02080BA8: ; 0x02080BA8 + push {r3-r4, lr} + sub sp, #0x4 + mov r2, #0x0 + add r4, r0, #0x0 + str r2, [sp, #0x0] + cmp r1, #0x0 + add r2, sp, #0x0 + bne _02080BE0 + mov r1, #0x97 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x91 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x92 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x93 + add r2, sp, #0x0 + bl FUN_02067960 + add sp, #0x4 + pop {r3-r4, pc} +_02080BE0: + mov r1, #0x98 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x94 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x95 + add r2, sp, #0x0 + bl FUN_02067960 + add r0, r4, #0x0 + mov r1, #0x96 + add r2, sp, #0x0 + bl FUN_02067960 + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02080C08 +FUN_02080C08: ; 0x02080C08 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020672BC + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0x9b + add r2, sp, #0x0 + bl FUN_02067960 + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02080C28 +FUN_02080C28: ; 0x02080C28 + push {r3, lr} + mov r1, #0x1 + str r1, [sp, #0x0] + mov r1, #0x6e + add r2, sp, #0x0 + bl FUN_02067960 + pop {r3, pc} + + thumb_func_start FUN_02080C38 +FUN_02080C38: ; 0x02080C38 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x8 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r1, _02080C5C ; =FUN_02080C60 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + nop +_02080C5C: .word FUN_02080C60 + + thumb_func_start FUN_02080C60 +FUN_02080C60: ; 0x02080C60 + push {r3-r7, lr} + sub sp, #0x28 + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0xe + bls _02080C7C + b _02080DE2 +_02080C7C: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02080C88: ; jump table (using 16-bit offset) + .short _02080CA6 - _02080C88 - 2; case 0 + .short _02080CB4 - _02080C88 - 2; case 1 + .short _02080D16 - _02080C88 - 2; case 2 + .short _02080D28 - _02080C88 - 2; case 3 + .short _02080D36 - _02080C88 - 2; case 4 + .short _02080D48 - _02080C88 - 2; case 5 + .short _02080D64 - _02080C88 - 2; case 6 + .short _02080D78 - _02080C88 - 2; case 7 + .short _02080D8A - _02080C88 - 2; case 8 + .short _02080D9C - _02080C88 - 2; case 9 + .short _02080DAE - _02080C88 - 2; case 10 + .short _02080DC0 - _02080C88 - 2; case 11 + .short _02080DCE - _02080C88 - 2; case 12 + .short _02080DD4 - _02080C88 - 2; case 13 + .short _02080DE6 - _02080C88 - 2; case 14 +_02080CA6: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080CB4: + ldr r0, [r6, #0xc] + bl FUN_0206BB1C + mov r1, #0x0 + bl FUN_0206B9B0 + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020377AC + bl FUN_020238F4 + mov r1, #0xb + str r0, [sp, #0x0] + bl FUN_020239A0 + add r5, r0, #0x0 + mov r1, #0x0 + add r0, sp, #0x4 + strb r1, [r0, #0x0] + strb r1, [r0, #0x1] + mov r1, #0x2 + strb r1, [r0, #0x2] + ldr r0, [sp, #0x0] + str r7, [sp, #0xc] + str r5, [sp, #0x10] + str r0, [sp, #0x14] + ldr r0, [r6, #0xc] + bl FUN_02027E24 + str r0, [sp, #0x18] + ldr r0, [r6, #0xc] + bl LoadPlayerDataAddress + str r0, [sp, #0x1c] + add r0, sp, #0x4 + bl FUN_02081214 + str r0, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02021A20 + ldr r0, [r4, #0x0] + bl FUN_02081DC4 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D16: + ldr r0, [r4, #0x0] + bl FUN_02081EB8 + cmp r0, #0x1 + bne _02080DF2 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D28: + mov r0, #0x1 + bl FUN_02031588 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D36: + mov r0, #0x1 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02080DF2 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D48: + ldr r0, [r4, #0x0] + bl FUN_020815D0 + ldr r3, [r4, #0x0] + ldr r2, _02080DF8 ; =0x000019B8 + ldr r1, _02080DFC ; =0x020FBBD8 + ldr r2, [r3, r2] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D64: + ldr r0, [r4, #0x0] + bl FUN_02081668 + ldr r0, [r4, #0x0] + bl FUN_02081ED4 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D78: + ldr r0, [r4, #0x0] + bl FUN_02081EC0 + cmp r0, #0x1 + bne _02080DF2 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D8A: + ldr r1, _02080E00 ; =0x020FBBC8 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080D9C: + ldr r1, _02080E04 ; =0x020FBBF8 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080DAE: + ldr r1, _02080E08 ; =0x020FBBE8 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080DC0: + ldr r0, [r4, #0x0] + bl FUN_020814E8 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080DCE: + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080DD4: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080DF2 +_02080DE2: + bl ErrorHandling +_02080DE6: + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x28 + mov r0, #0x1 + pop {r3-r7, pc} +_02080DF2: + mov r0, #0x0 + add sp, #0x28 + pop {r3-r7, pc} + .balign 4 +_02080DF8: .word 0x000019B8 +_02080DFC: .word 0x020FBBD8 +_02080E00: .word 0x020FBBC8 +_02080E04: .word 0x020FBBF8 +_02080E08: .word 0x020FBBE8 + + thumb_func_start FUN_02080E0C +FUN_02080E0C: ; 0x02080E0C + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + mov r0, #0xb + mov r1, #0x8 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x8 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, _02080E50 ; =0x00000121 + str r6, [r4, #0x0] + ldrb r0, [r6, r0] + cmp r0, #0x0 + beq _02080E36 + cmp r0, #0x1 + beq _02080E36 + cmp r0, #0x2 + bne _02080E42 +_02080E36: + ldr r1, _02080E54 ; =FUN_02080E5C + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} +_02080E42: + ldr r1, _02080E58 ; =FUN_02081000 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + nop +_02080E50: .word 0x00000121 +_02080E54: .word FUN_02080E5C +_02080E58: .word FUN_02081000 + + thumb_func_start FUN_02080E5C +FUN_02080E5C: ; 0x02080E5C + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0xd + bls _02080E74 + b _02080FCE +_02080E74: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02080E80: ; jump table (using 16-bit offset) + .short _02080E9C - _02080E80 - 2; case 0 + .short _02080EAA - _02080E80 - 2; case 1 + .short _02080EC6 - _02080E80 - 2; case 2 + .short _02080EDE - _02080E80 - 2; case 3 + .short _02080F00 - _02080E80 - 2; case 4 + .short _02080F1C - _02080E80 - 2; case 5 + .short _02080F3E - _02080E80 - 2; case 6 + .short _02080F58 - _02080E80 - 2; case 7 + .short _02080F6A - _02080E80 - 2; case 8 + .short _02080F8A - _02080E80 - 2; case 9 + .short _02080FA8 - _02080E80 - 2; case 10 + .short _02080FBA - _02080E80 - 2; case 11 + .short _02080FC0 - _02080E80 - 2; case 12 + .short _02080FD2 - _02080E80 - 2; case 13 +_02080E9C: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080EAA: + ldr r0, [r4, #0x0] + ldr r1, _02080FE0 ; =0x00000171 + ldrb r1, [r0, r1] + cmp r1, #0x0 + beq _02080EBE + bl FUN_02081EC0 + cmp r0, #0x1 + beq _02080EBE + b _02080FDC +_02080EBE: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080EC6: + ldr r1, [r4, #0x0] + ldr r0, _02080FE0 ; =0x00000171 + ldrb r0, [r1, r0] + cmp r0, #0x1 + bne _02080ED6 + mov r0, #0x0 + bl FUN_02031588 +_02080ED6: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080EDE: + ldr r2, [r4, #0x0] + ldr r1, _02080FE0 ; =0x00000171 + ldrb r1, [r2, r1] + cmp r1, #0x1 + bne _02080EFA + mov r0, #0x0 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02080FDC + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080EFA: + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080F00: + ldr r0, [r4, #0x0] + bl FUN_020815D0 + ldr r3, [r4, #0x0] + ldr r2, _02080FE4 ; =0x000019B8 + ldr r1, _02080FE8 ; =0x020FBBD8 + ldr r2, [r3, r2] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080F1C: + ldr r0, [r4, #0x0] + bl FUN_02081668 + ldr r0, [r4, #0x0] + ldr r1, _02080FE0 ; =0x00000171 + ldrb r1, [r0, r1] + cmp r1, #0x1 + bne _02080F38 + bl FUN_02081ED4 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080F38: + mov r0, #0x6 + str r0, [r4, #0x4] + b _02080FDC +_02080F3E: + ldr r0, [r4, #0x0] + ldr r1, _02080FE0 ; =0x00000171 + ldrb r1, [r0, r1] + cmp r1, #0x0 + beq _02080F50 + bl FUN_02081EC0 + cmp r0, #0x1 + bne _02080FDC +_02080F50: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080F58: + ldr r1, _02080FEC ; =0x020FBBC8 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080F6A: + ldr r2, [r4, #0x0] + ldr r0, _02080FF0 ; =0x00000121 + ldrb r0, [r2, r0] + add r0, #0xff + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bhi _02080F82 + ldr r1, _02080FF4 ; =0x020FBBF8 + add r0, r5, #0x0 + bl FUN_02046500 +_02080F82: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080F8A: + ldr r2, [r4, #0x0] + ldr r0, _02080FF0 ; =0x00000121 + ldrb r0, [r2, r0] + cmp r0, #0x0 + beq _02080F98 + cmp r0, #0x2 + bne _02080FA0 +_02080F98: + ldr r1, _02080FF8 ; =0x020FBBE8 + add r0, r5, #0x0 + bl FUN_02046500 +_02080FA0: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080FA8: + ldr r1, _02080FFC ; =0x020FBBB8 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080FBA: + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080FC0: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02080FDC +_02080FCE: + bl ErrorHandling +_02080FD2: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x1 + pop {r3-r5, pc} +_02080FDC: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_02080FE0: .word 0x00000171 +_02080FE4: .word 0x000019B8 +_02080FE8: .word 0x020FBBD8 +_02080FEC: .word 0x020FBBC8 +_02080FF0: .word 0x00000121 +_02080FF4: .word 0x020FBBF8 +_02080FF8: .word 0x020FBBE8 +_02080FFC: .word 0x020FBBB8 + + thumb_func_start FUN_02081000 +FUN_02081000: ; 0x02081000 + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + bl FUN_02046528 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, [r4, #0x4] + cmp r0, #0x9 + bls _0208101A + b _020811A4 +_0208101A: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02081026: ; jump table (using 16-bit offset) + .short _0208103A - _02081026 - 2; case 0 + .short _02081048 - _02081026 - 2; case 1 + .short _02081070 - _02081026 - 2; case 2 + .short _0208108A - _02081026 - 2; case 3 + .short _02081090 - _02081026 - 2; case 4 + .short _020810AE - _02081026 - 2; case 5 + .short _020810D2 - _02081026 - 2; case 6 + .short _020810F0 - _02081026 - 2; case 7 + .short _02081196 - _02081026 - 2; case 8 + .short _020811A8 - _02081026 - 2; case 9 +_0208103A: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_02081048: + ldr r0, [r4, #0x0] + ldr r1, _020811BC ; =0x00000121 + ldrb r1, [r0, r1] + cmp r1, #0x3 + beq _02081056 + cmp r1, #0x4 + bne _02081068 +_02081056: + bl FUN_020815D0 + ldr r3, [r4, #0x0] + ldr r2, _020811C0 ; =0x000019B8 + ldr r1, _020811C4 ; =0x020FBBD8 + ldr r2, [r3, r2] + add r0, r5, #0x0 + bl FUN_02046500 +_02081068: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_02081070: + ldr r0, [r4, #0x0] + ldr r1, _020811BC ; =0x00000121 + ldrb r1, [r0, r1] + cmp r1, #0x3 + beq _0208107E + cmp r1, #0x4 + bne _02081082 +_0208107E: + bl FUN_02081668 +_02081082: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_0208108A: + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_02081090: + ldr r2, [r4, #0x0] + ldr r0, _020811BC ; =0x00000121 + ldrb r0, [r2, r0] + cmp r0, #0x3 + beq _0208109E + cmp r0, #0x4 + bne _020810A6 +_0208109E: + ldr r1, _020811C8 ; =0x020FBBC8 + add r0, r5, #0x0 + bl FUN_02046500 +_020810A6: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_020810AE: + ldr r0, [r4, #0x0] + ldr r1, _020811BC ; =0x00000121 + ldrb r1, [r0, r1] + cmp r1, #0x5 + beq _020810BC + cmp r1, #0x6 + bne _020810CA +_020810BC: + bl FUN_02082D18 + ldr r1, _020811CC ; =0x020FBBF8 + ldr r2, [r4, #0x0] + add r0, r5, #0x0 + bl FUN_02046500 +_020810CA: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_020810D2: + ldr r2, [r4, #0x0] + ldr r0, _020811BC ; =0x00000121 + ldrb r0, [r2, r0] + cmp r0, #0x7 + beq _020810E0 + cmp r0, #0x8 + bne _020810E8 +_020810E0: + ldr r1, _020811D0 ; =0x020FBBE8 + add r0, r5, #0x0 + bl FUN_02046500 +_020810E8: + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_020810F0: + ldr r1, [r4, #0x0] + ldr r0, _020811BC ; =0x00000121 + ldrb r0, [r1, r0] + cmp r0, #0x8 + bhi _0208116E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02081106: ; jump table (using 16-bit offset) + .short _0208116E - _02081106 - 2; case 0 + .short _0208116E - _02081106 - 2; case 1 + .short _0208116E - _02081106 - 2; case 2 + .short _02081118 - _02081106 - 2; case 3 + .short _02081118 - _02081106 - 2; case 4 + .short _0208113A - _02081106 - 2; case 5 + .short _0208113A - _02081106 - 2; case 6 + .short _02081156 - _02081106 - 2; case 7 + .short _02081156 - _02081106 - 2; case 8 +_02081118: + mov r5, #0x0 + add r6, sp, #0x0 +_0208111C: + ldr r0, [r4, #0x0] + add r1, r5, #0x0 + bl FUN_02083308 + add r7, r0, #0x0 + ldr r0, [r4, #0x0] + add r1, r5, #0x0 + bl FUN_0208336C + add r0, r7, r0 + add r5, r5, #0x1 + stmia r6!, {r0} + cmp r5, #0x4 + blt _0208111C + b _0208116E +_0208113A: + mov r2, #0x0 + mov r3, #0x4b + add r0, r2, #0x0 + add r1, sp, #0x0 + lsl r3, r3, #0x2 +_02081144: + ldr r5, [r4, #0x0] + add r2, r2, #0x1 + add r5, r5, r0 + ldrsh r5, [r5, r3] + add r0, #0xc + cmp r2, #0x4 + stmia r1!, {r5} + blt _02081144 + b _0208116E +_02081156: + mov r2, #0x0 + ldr r3, _020811D4 ; =0x0000012E + add r0, r2, #0x0 + add r1, sp, #0x0 +_0208115E: + ldr r5, [r4, #0x0] + add r2, r2, #0x1 + add r5, r5, r0 + ldrsh r5, [r5, r3] + add r0, #0xc + cmp r2, #0x4 + stmia r1!, {r5} + blt _0208115E +_0208116E: + ldr r1, [sp, #0x0] + mov r2, #0x0 + mov r5, #0x1 + add r3, sp, #0x4 +_02081176: + ldr r0, [r3, #0x0] + cmp r1, r0 + bge _0208117E + add r2, r2, #0x1 +_0208117E: + add r5, r5, #0x1 + add r3, r3, #0x4 + cmp r5, #0x4 + blt _02081176 + mov r0, #0x13 + ldr r1, [r4, #0x0] + lsl r0, r0, #0x4 + strb r2, [r1, r0] + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_02081196: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _020811B4 +_020811A4: + bl ErrorHandling +_020811A8: + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x10 + mov r0, #0x1 + pop {r3-r7, pc} +_020811B4: + mov r0, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_020811BC: .word 0x00000121 +_020811C0: .word 0x000019B8 +_020811C4: .word 0x020FBBD8 +_020811C8: .word 0x020FBBC8 +_020811CC: .word 0x020FBBF8 +_020811D0: .word 0x020FBBE8 +_020811D4: .word 0x0000012E + + thumb_func_start FUN_020811D8 +FUN_020811D8: ; 0x020811D8 + push {r4, lr} + ldr r1, _02081204 ; =0x000019C4 + mov r0, #0x14 + bl FUN_02016998 + ldr r2, _02081204 ; =0x000019C4 + mov r1, #0x0 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, _02081208 ; =0x00000123 + mov r1, #0x0 + strb r1, [r4, r0] + add r1, r0, #0x4 + mov r2, #0x1 + strb r2, [r4, r1] + mov r1, #0x3 + add r0, r0, #0x3 + strb r1, [r4, r0] + add r0, r4, #0x0 + pop {r4, pc} + nop +_02081204: .word 0x000019C4 +_02081208: .word 0x00000123 + + thumb_func_start FUN_0208120C +FUN_0208120C: ; 0x0208120C + ldr r3, _02081210 ; =FUN_02016A18 + bx r3 + .balign 4 +_02081210: .word FUN_02016A18 + + thumb_func_start FUN_02081214 +FUN_02081214: ; 0x02081214 + push {r3-r7, lr} + mov r2, #0x1 + add r6, r0, #0x0 + mov r0, #0xb + mov r1, #0x14 + lsl r2, r2, #0xe + bl FUN_0201681C + bl FUN_020811D8 + add r4, r0, #0x0 + bl FUN_0201B9D4 + mov r1, #0x67 + lsl r1, r1, #0x6 + str r0, [r4, r1] + add r0, r4, #0x0 + bl FUN_0208285C + ldrb r1, [r6, #0x0] + ldr r0, _020813E4 ; =0x0000011F + strb r1, [r4, r0] + add r1, r0, #0x1 + ldrb r2, [r6, #0x1] + add r0, r0, #0x2 + strb r2, [r4, r1] + ldrb r1, [r6, #0x2] + strb r1, [r4, r0] + ldrb r0, [r6, #0x1] + mov r1, #0x0 + bl FUN_02083454 + ldr r1, _020813E8 ; =0x00000122 + mov r7, #0x0 + strb r0, [r4, r1] + add r0, r1, #0x1 + ldrb r2, [r4, r0] + sub r0, r1, #0x6 + add r5, r4, #0x0 + strb r2, [r4, r0] + mov r0, #0x64 + add r1, r0, #0x0 + add r1, #0xc1 + strb r0, [r4, r1] + add r1, r0, #0x0 + add r1, #0xc1 + ldrb r2, [r4, r1] + add r1, r0, #0x0 + add r1, #0xb9 + strb r2, [r4, r1] + mov r1, #0x1 + add r0, #0xba + strb r1, [r4, r0] + ldr r1, [r6, #0x14] + ldr r0, _020813EC ; =0x0000199C + str r1, [r4, r0] + add r1, r0, #0x0 + ldr r2, [r6, #0x18] + sub r1, #0x14 + str r2, [r4, r1] + add r1, r0, #0x0 + ldr r2, [r6, #0x1c] + sub r1, #0x10 + str r2, [r4, r1] + add r1, r0, #0x0 + ldr r2, [r6, #0x8] + sub r1, #0xc + str r2, [r4, r1] + ldrb r2, [r6, #0x5] + sub r1, r0, #0x4 + strb r2, [r4, r1] + add r1, r0, #0x0 + ldr r2, [r6, #0x10] + sub r1, #0x8 + str r2, [r4, r1] + sub r1, r0, #0x3 + ldrb r2, [r6, #0x3] + sub r0, r0, #0x2 + strb r2, [r4, r1] + ldrb r1, [r6, #0x4] + strb r1, [r4, r0] +_020812B6: + mov r0, #0x14 + bl FUN_02026FE8 + add r1, r5, #0x0 + add r1, #0xf8 + add r7, r7, #0x1 + add r5, r5, #0x4 + str r0, [r1, #0x0] + cmp r7, #0x4 + blt _020812B6 + mov r3, #0x12 + lsl r3, r3, #0x4 + ldrb r0, [r4, r3] + sub r2, r3, #0x2 + sub r3, r3, #0x1 + str r0, [sp, #0x0] + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + add r0, r4, #0x0 + mov r1, #0xb + bl FUN_02082ED0 + mov r0, #0x14 + bl FUN_0206B8AC + mov r1, #0x56 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r7, #0x0 + add r5, r4, #0x0 +_020812F2: + mov r0, #0x14 + bl FUN_020669C0 + add r7, r7, #0x1 + stmia r5!, {r0} + cmp r7, #0x4 + blt _020812F2 + mov r7, #0x0 + add r5, r4, #0x0 +_02081304: + mov r0, #0x14 + bl FUN_02029EE4 + mov r1, #0x57 + lsl r1, r1, #0x2 + str r0, [r5, r1] + add r7, r7, #0x1 + add r5, r5, #0x4 + cmp r7, #0x4 + blt _02081304 + add r0, r1, #0x0 + ldr r0, [r4, r0] + ldr r1, [r6, #0x20] + bl FUN_02029F9C + ldr r0, [r6, #0x8] + ldr r1, [r4, #0x0] + bl FUN_02069B88 + mov r0, #0x8 + mov r1, #0x14 + bl FUN_020219F4 + add r1, r4, #0x0 + add r1, #0xe8 + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + ldr r1, [r6, #0xc] + bl FUN_02021A74 + ldr r0, [r6, #0x10] + bl FUN_020239CC + mov r1, #0x42 + lsl r1, r1, #0x2 + strb r0, [r4, r1] + add r0, r1, #0x4 + mov r2, #0x0 + strb r2, [r4, r0] + add r1, #0x17 + ldrb r1, [r4, r1] + ldr r0, [r4, #0x0] + bl FUN_02081540 + mov r1, #0x11 + lsl r1, r1, #0x4 + strb r0, [r4, r1] + add r0, r4, #0x0 + bl FUN_020832EC + cmp r0, #0x0 + ldr r0, [r6, #0x10] + bne _0208138E + bl FUN_020239CC + cmp r0, #0x0 + bne _02081384 + mov r1, #0xba + add r0, r1, #0x0 + add r0, #0x5a + strh r1, [r4, r0] + b _020813A8 +_02081384: + mov r1, #0xbb + add r0, r1, #0x0 + add r0, #0x59 + strh r1, [r4, r0] + b _020813A8 +_0208138E: + bl FUN_020239CC + cmp r0, #0x0 + bne _020813A0 + mov r0, #0x45 + mov r1, #0x0 + lsl r0, r0, #0x2 + strh r1, [r4, r0] + b _020813A8 +_020813A0: + mov r1, #0x61 + add r0, r1, #0x0 + add r0, #0xb3 + strh r1, [r4, r0] +_020813A8: + ldrb r1, [r6, #0x3] + ldrb r2, [r6, #0x4] + add r0, r4, #0x0 + bl FUN_020813F4 + add r0, r4, #0x0 + bl FUN_020832EC + cmp r0, #0x1 + bne _020813D0 + ldr r1, _020813F0 ; =0x00000172 + mov r5, #0x0 + mov r0, #0x3 +_020813C2: + sub r3, r0, r5 + add r2, r4, r5 + add r5, r5, #0x1 + strb r3, [r2, r1] + cmp r5, #0x4 + blt _020813C2 + b _020813DE +_020813D0: + ldr r0, _020813F0 ; =0x00000172 + mov r2, #0x0 +_020813D4: + add r1, r4, r2 + strb r2, [r1, r0] + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020813D4 +_020813DE: + add r0, r4, #0x0 + pop {r3-r7, pc} + nop +_020813E4: .word 0x0000011F +_020813E8: .word 0x00000122 +_020813EC: .word 0x0000199C +_020813F0: .word 0x00000172 + + thumb_func_start FUN_020813F4 +FUN_020813F4: ; 0x020813F4 + push {r3-r7, lr} + sub sp, #0x10 + mov r3, #0x12 + add r5, r0, #0x0 + lsl r3, r3, #0x4 + ldrb r4, [r5, r3] + str r4, [sp, #0x0] + add r4, r3, #0x1 + ldrb r4, [r5, r4] + sub r3, r3, #0x1 + str r4, [sp, #0x4] + str r1, [sp, #0x8] + str r2, [sp, #0xc] + ldrb r3, [r5, r3] + mov r1, #0xb + mov r2, #0x3 + bl FUN_020828E4 + add r4, r5, #0x0 + add r4, #0x10 + mov r7, #0x1 + add r6, r5, #0x4 + add r4, #0x30 +_02081422: + ldr r1, [r6, #0x0] + add r0, r4, #0x0 + mov r2, #0x14 + bl FUN_02082D60 + add r7, r7, #0x1 + add r6, r6, #0x4 + add r4, #0x30 + cmp r7, #0x4 + blt _02081422 + mov r6, #0x1 + add r4, r5, #0x4 + mov r7, #0x8 +_0208143C: + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02081454 + add r0, r7, #0x0 + mov r1, #0x14 + bl FUN_020219F4 + add r1, r4, #0x0 + add r1, #0xe8 + str r0, [r1, #0x0] +_02081454: + add r2, r4, #0x0 + add r2, #0xe8 + ldr r0, [r4, #0x0] + ldr r2, [r2, #0x0] + mov r1, #0x90 + bl FUN_020671BC + add r6, r6, #0x1 + add r4, r4, #0x4 + cmp r6, #0x4 + blt _0208143C + add r0, r5, #0x0 + add r0, #0x30 + mov r2, #0x42 + mov r1, #0x1 + add r0, #0x30 + lsl r2, r2, #0x2 +_02081476: + ldrh r3, [r0, #0x0] + add r0, #0x30 + lsl r3, r3, #0x12 + lsr r4, r3, #0x1e + add r3, r5, r1 + add r1, r1, #0x1 + strb r4, [r3, r2] + cmp r1, #0x4 + blt _02081476 + add r0, r5, #0x0 + add r0, #0x30 + mov r2, #0x43 + mov r1, #0x1 + add r0, #0x30 + lsl r2, r2, #0x2 +_02081494: + ldrh r3, [r0, #0x0] + add r0, #0x30 + lsl r3, r3, #0x10 + lsr r4, r3, #0x1e + add r3, r5, r1 + add r1, r1, #0x1 + strb r4, [r3, r2] + cmp r1, #0x4 + blt _02081494 + add r3, r5, #0x0 + mov r1, #0x11 + mov r4, #0x1 + add r3, #0x30 + lsl r1, r1, #0x4 +_020814B0: + add r0, r3, #0x0 + add r0, #0x3e + ldrb r2, [r0, #0x0] + add r0, r5, r4 + add r4, r4, #0x1 + add r3, #0x30 + strb r2, [r0, r1] + cmp r4, #0x4 + blt _020814B0 + add r2, r5, #0x0 + mov r0, #0x45 + mov r4, #0x1 + add r2, #0x30 + add r3, r5, #0x2 + lsl r0, r0, #0x2 +_020814CE: + ldrh r1, [r2, #0x18] + add r4, r4, #0x1 + add r2, #0x30 + strh r1, [r3, r0] + add r3, r3, #0x2 + cmp r4, #0x4 + blt _020814CE + add r0, r5, #0x0 + mov r1, #0xb + bl FUN_02082B90 + add sp, #0x10 + pop {r3-r7, pc} + + thumb_func_start FUN_020814E8 +FUN_020814E8: ; 0x020814E8 + push {r3-r7, lr} + add r7, r0, #0x0 + mov r0, #0x56 + lsl r0, r0, #0x2 + ldr r0, [r7, r0] + bl FUN_02016A18 + mov r6, #0x57 + mov r4, #0x0 + add r5, r7, #0x0 + lsl r6, r6, #0x2 +_020814FE: + ldr r0, [r5, #0x0] + bl FUN_02016A18 + add r0, r5, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + bl FUN_02021A20 + add r0, r5, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + ldr r0, [r5, r6] + bl FUN_02016A18 + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _020814FE + mov r0, #0x67 + lsl r0, r0, #0x6 + ldr r0, [r7, r0] + bl FUN_0201B9E0 + add r0, r7, #0x0 + bl FUN_0208120C + mov r0, #0x14 + bl FUN_020168D0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02081540 +FUN_02081540: ; 0x02081540 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x1 + add r7, r1, #0x0 + str r0, [sp, #0x0] + mov r4, #0x0 +_0208154C: + cmp r7, #0x4 + bhi _020815B6 + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0208155C: ; jump table (using 16-bit offset) + .short _02081566 - _0208155C - 2; case 0 + .short _02081576 - _0208155C - 2; case 1 + .short _02081586 - _0208155C - 2; case 2 + .short _02081596 - _0208155C - 2; case 3 + .short _020815A6 - _0208155C - 2; case 4 +_02081566: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x7a + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + b _020815BA +_02081576: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x7e + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + b _020815BA +_02081586: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x82 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + b _020815BA +_02081596: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x86 + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + b _020815BA +_020815A6: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x8a + mov r2, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + b _020815BA +_020815B6: + bl ErrorHandling +_020815BA: + cmp r6, #0x0 + beq _020815CA + ldr r0, [sp, #0x0] + add r4, r4, #0x1 + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r4, #0x3 + ble _0208154C +_020815CA: + ldr r0, [sp, #0x0] + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020815D0 +FUN_020815D0: ; 0x020815D0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _02081658 ; =0x00000123 + ldrb r0, [r5, r0] + lsl r0, r0, #0x2 + add r0, r5, r0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_02027740 + mov r0, #0x14 + mov r1, #0x28 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x28 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, _02081658 ; =0x00000123 + ldrb r1, [r5, r0] + lsl r1, r1, #0x2 + ldr r1, [r5, r1] + str r1, [r4, #0x0] + ldrb r1, [r5, r0] + lsl r1, r1, #0x2 + add r1, r5, r1 + add r1, #0xf8 + ldr r1, [r1, #0x0] + str r1, [r4, #0x4] + sub r1, r0, #0x1 + ldrb r1, [r5, r1] + str r1, [r4, #0x8] + add r1, r0, #0x0 + add r1, #0x4e + ldrb r1, [r5, r1] + cmp r1, #0x1 + bne _02081620 + mov r0, #0x4 + b _02081624 +_02081620: + sub r0, r0, #0x3 + ldrb r0, [r5, r0] +_02081624: + str r0, [r4, #0xc] + ldr r0, _0208165C ; =0x00000121 + ldrb r1, [r5, r0] + sub r0, r0, #0x2 + str r1, [r4, #0x10] + ldrb r0, [r5, r0] + str r0, [r4, #0x14] + ldr r0, _02081660 ; =0x0000199C + ldr r0, [r5, r0] + bl FUN_0202708C + ldr r1, _02081664 ; =0x000019A0 + str r0, [r4, #0x18] + add r0, r5, r1 + str r0, [r4, #0x1c] + add r0, r1, #0x0 + sub r0, #0x18 + ldr r0, [r5, r0] + str r0, [r4, #0x20] + add r0, r1, #0x0 + sub r0, #0xc + ldr r0, [r5, r0] + add r1, #0x18 + str r0, [r4, #0x24] + str r4, [r5, r1] + pop {r3-r5, pc} + .balign 4 +_02081658: .word 0x00000123 +_0208165C: .word 0x00000121 +_02081660: .word 0x0000199C +_02081664: .word 0x000019A0 + + thumb_func_start FUN_02081668 +FUN_02081668: ; 0x02081668 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0208167C ; =0x000019B8 + ldr r0, [r4, r0] + bl FUN_02016A18 + ldr r0, _0208167C ; =0x000019B8 + mov r1, #0x0 + str r1, [r4, r0] + pop {r4, pc} + .balign 4 +_0208167C: .word 0x000019B8 + + thumb_func_start FUN_02081680 +FUN_02081680: ; 0x02081680 + push {r3-r7, lr} + sub sp, #0x10 + ldr r2, _020819E8 ; =0x00000176 + add r4, r1, #0x0 + str r0, [sp, #0x0] + ldrb r0, [r4, r2] + cmp r0, #0x2f + bls _02081692 + b _02081D24 +_02081692: + add r3, r0, r0 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0208169E: ; jump table (using 16-bit offset) + .short _020816FE - _0208169E - 2; case 0 + .short _02081716 - _0208169E - 2; case 1 + .short _0208172C - _0208169E - 2; case 2 + .short _02081742 - _0208169E - 2; case 3 + .short _0208175E - _0208169E - 2; case 4 + .short _02081776 - _0208169E - 2; case 5 + .short _0208178C - _0208169E - 2; case 6 + .short _020817A8 - _0208169E - 2; case 7 + .short _020817C4 - _0208169E - 2; case 8 + .short _020817DC - _0208169E - 2; case 9 + .short _020817F2 - _0208169E - 2; case 10 + .short _02081822 - _0208169E - 2; case 11 + .short _02081838 - _0208169E - 2; case 12 + .short _02081850 - _0208169E - 2; case 13 + .short _02081866 - _0208169E - 2; case 14 + .short _02081884 - _0208169E - 2; case 15 + .short _020818A0 - _0208169E - 2; case 16 + .short _020818B8 - _0208169E - 2; case 17 + .short _020818CE - _0208169E - 2; case 18 + .short _0208190A - _0208169E - 2; case 19 + .short _02081940 - _0208169E - 2; case 20 + .short _02081958 - _0208169E - 2; case 21 + .short _0208196E - _0208169E - 2; case 22 + .short _0208198E - _0208169E - 2; case 23 + .short _020819DE - _0208169E - 2; case 24 + .short _02081A04 - _0208169E - 2; case 25 + .short _02081A1A - _0208169E - 2; case 26 + .short _02081A54 - _0208169E - 2; case 27 + .short _02081A8A - _0208169E - 2; case 28 + .short _02081AB6 - _0208169E - 2; case 29 + .short _02081ACC - _0208169E - 2; case 30 + .short _02081AE8 - _0208169E - 2; case 31 + .short _02081B04 - _0208169E - 2; case 32 + .short _02081B1C - _0208169E - 2; case 33 + .short _02081B32 - _0208169E - 2; case 34 + .short _02081B6C - _0208169E - 2; case 35 + .short _02081BA2 - _0208169E - 2; case 36 + .short _02081BBA - _0208169E - 2; case 37 + .short _02081BD0 - _0208169E - 2; case 38 + .short _02081BFA - _0208169E - 2; case 39 + .short _02081C16 - _0208169E - 2; case 40 + .short _02081C2E - _0208169E - 2; case 41 + .short _02081C44 - _0208169E - 2; case 42 + .short _02081C86 - _0208169E - 2; case 43 + .short _02081CBC - _0208169E - 2; case 44 + .short _02081CD4 - _0208169E - 2; case 45 + .short _02081CEA - _0208169E - 2; case 46 + .short _02081D08 - _0208169E - 2; case 47 +_020816FE: + mov r0, #0x5 + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081716: + mov r0, #0x5 + bl FUN_020315D8 + cmp r0, #0x1 + bne _0208180C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_0208172C: + add r0, r4, #0x0 + bl FUN_02083630 + cmp r0, #0x1 + bne _0208180C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081742: + ldr r0, _020819EC ; =0x00000584 + add r1, r2, #0x0 + sub r1, #0x4f + ldrb r3, [r4, r0] + ldrb r1, [r4, r1] + cmp r3, r1 + blo _0208180C + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_0208175E: + mov r0, #0x6 + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081776: + mov r0, #0x6 + bl FUN_020315D8 + cmp r0, #0x1 + bne _0208180C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_0208178C: + sub r2, #0x53 + ldrb r1, [r4, r2] + ldr r2, [r4, #0x0] + add r0, r4, #0x0 + bl FUN_020836BC + cmp r0, #0x1 + bne _0208180C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_020817A8: + ldr r0, _020819EC ; =0x00000584 + add r1, r2, #0x0 + sub r1, #0x4f + ldrb r3, [r4, r0] + ldrb r1, [r4, r1] + cmp r3, r1 + blo _0208180C + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_020817C4: + mov r0, #0x7 + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_020817DC: + mov r0, #0x7 + bl FUN_020315D8 + cmp r0, #0x1 + bne _0208180C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_020817F2: + add r3, r2, #0x0 + sub r3, #0x53 + ldrb r5, [r4, r3] + add r3, r2, #0x0 + sub r3, #0x5a + ldrb r3, [r4, r3] + cmp r5, r3 + bne _0208181A + add r0, r4, #0x0 + bl FUN_0208373C + cmp r0, #0x1 + beq _0208180E +_0208180C: + b _02081DBC +_0208180E: + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_0208181A: + add r0, r0, #0x1 + add sp, #0x10 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081822: + ldr r0, _020819EC ; =0x00000584 + ldrb r1, [r4, r0] + cmp r1, #0x0 + beq _02081912 + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081838: + mov r0, #0x8 + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081850: + mov r0, #0x8 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081912 + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081866: + sub r2, #0x53 + ldrb r1, [r4, r2] + add r2, r4, #0x0 + add r0, r4, #0x0 + add r2, #0x10 + bl FUN_020837B4 + cmp r0, #0x1 + bne _02081912 + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081884: + ldr r0, _020819EC ; =0x00000584 + add r1, r2, #0x0 + sub r1, #0x4f + ldrb r3, [r4, r0] + ldrb r1, [r4, r1] + cmp r3, r1 + blo _02081912 + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_020818A0: + mov r0, #0x9 + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_020818B8: + mov r0, #0x9 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081912 + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_020818CE: + add r1, r2, #0x0 + sub r1, #0x53 + ldrb r3, [r4, r1] + add r1, r2, #0x0 + sub r1, #0x5a + ldrb r1, [r4, r1] + cmp r3, r1 + bne _02081902 + add r0, r2, #0x2 + ldr r1, [r4, r0] + add r3, r4, #0x0 + mov r2, #0x30 + add r3, #0x10 + mul r2, r1 + add r0, r4, #0x0 + add r2, r3, r2 + bl FUN_020837B4 + cmp r0, #0x1 + bne _02081912 + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081902: + add r0, r0, #0x1 + add sp, #0x10 + strb r0, [r4, r2] + pop {r3-r7, pc} +_0208190A: + ldr r1, _020819EC ; =0x00000584 + ldrb r0, [r4, r1] + cmp r0, #0x0 + bne _02081914 +_02081912: + b _02081DBC +_02081914: + mov r0, #0x0 + strb r0, [r4, r1] + add r1, r2, #0x2 + ldr r1, [r4, r1] + add r3, r1, #0x1 + add r1, r2, #0x2 + str r3, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #0x4 + bge _02081932 + ldrb r0, [r4, r2] + add sp, #0x10 + sub r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081932: + add r1, r2, #0x2 + str r0, [r4, r1] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081940: + mov r0, #0xa + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081958: + mov r0, #0xa + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081A5C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_0208196E: + sub r2, #0x53 + ldrb r1, [r4, r2] + add r2, r4, #0x0 + add r2, #0xe8 + ldr r2, [r2, #0x0] + add r0, r4, #0x0 + bl FUN_020838B4 + cmp r0, #0x1 + bne _02081A5C + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_0208198E: + ldr r0, _020819EC ; =0x00000584 + sub r2, #0x4f + ldrb r1, [r4, r2] + ldrb r0, [r4, r0] + cmp r0, r1 + blo _02081A5C + mov r5, #0x0 + cmp r1, #0x0 + ble _020819CC + add r6, r4, #0x0 +_020819A2: + add r0, r5, #0x0 + bl FUN_0202DFA4 + add r7, r0, #0x0 + add r0, r6, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + bl FUN_02021A4C + add r1, r6, #0x0 + add r1, #0xe8 + ldr r1, [r1, #0x0] + add r0, r7, #0x0 + bl FUN_02023990 + ldr r0, _020819F0 ; =0x00000127 + add r5, r5, #0x1 + ldrb r0, [r4, r0] + add r6, r6, #0x4 + cmp r5, r0 + blt _020819A2 +_020819CC: + ldr r0, _020819EC ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _020819E8 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_020819DE: + mov r0, #0xb + bl FUN_02031588 + ldr r0, _020819EC ; =0x00000584 + b _020819F4 + .balign 4 +_020819E8: .word 0x00000176 +_020819EC: .word 0x00000584 +_020819F0: .word 0x00000127 +_020819F4: + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081A04: + mov r0, #0xb + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081A5C + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081A1A: + add r1, r2, #0x0 + sub r1, #0x53 + ldrb r3, [r4, r1] + add r1, r2, #0x0 + sub r1, #0x5a + ldrb r1, [r4, r1] + cmp r3, r1 + bne _02081A4C + add r0, r2, #0x2 + ldr r1, [r4, r0] + add r0, r4, #0x0 + lsl r2, r1, #0x2 + add r2, r4, r2 + add r2, #0xe8 + ldr r2, [r2, #0x0] + bl FUN_020838B4 + cmp r0, #0x1 + bne _02081A5C + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081A4C: + add r0, r0, #0x1 + add sp, #0x10 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081A54: + ldr r1, _02081D2C ; =0x00000584 + ldrb r0, [r4, r1] + cmp r0, #0x0 + bne _02081A5E +_02081A5C: + b _02081DBC +_02081A5E: + mov r0, #0x0 + strb r0, [r4, r1] + add r1, r2, #0x2 + ldr r1, [r4, r1] + add r3, r1, #0x1 + add r1, r2, #0x2 + str r3, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #0x4 + bge _02081A7C + ldrb r0, [r4, r2] + add sp, #0x10 + sub r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081A7C: + add r1, r2, #0x2 + str r0, [r4, r1] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081A8A: + bl FUN_02029EC4 + add r2, r0, #0x0 + mov r0, #0x57 + lsl r0, r0, #0x2 + ldr r1, _02081D30 ; =0x00000585 + ldr r0, [r4, r0] + add r1, r4, r1 + blx MI_CpuCopy8 + mov r0, #0xc + bl FUN_02031588 + ldr r0, _02081D2C ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081AB6: + mov r0, #0xc + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081B74 + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081ACC: + sub r2, #0x53 + ldrb r1, [r4, r2] + add r0, r4, #0x0 + mov r2, #0x0 + bl FUN_02083AD4 + cmp r0, #0x1 + bne _02081B74 + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081AE8: + ldr r0, _02081D2C ; =0x00000584 + add r1, r2, #0x0 + sub r1, #0x4f + ldrb r3, [r4, r0] + ldrb r1, [r4, r1] + cmp r3, r1 + blo _02081B74 + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081B04: + mov r0, #0xd + bl FUN_02031588 + ldr r0, _02081D2C ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081B1C: + mov r0, #0xd + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081B74 + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081B32: + add r1, r2, #0x0 + sub r1, #0x53 + ldrb r3, [r4, r1] + add r1, r2, #0x0 + sub r1, #0x5a + ldrb r1, [r4, r1] + cmp r3, r1 + bne _02081B64 + add r0, r2, #0x2 + ldr r1, [r4, r0] + sub r2, #0x1a + lsl r3, r1, #0x2 + add r3, r4, r3 + ldr r2, [r3, r2] + add r0, r4, #0x0 + bl FUN_02083AD4 + cmp r0, #0x1 + bne _02081B74 + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081B64: + add r0, r0, #0x1 + add sp, #0x10 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081B6C: + ldr r1, _02081D2C ; =0x00000584 + ldrb r0, [r4, r1] + cmp r0, #0x0 + bne _02081B76 +_02081B74: + b _02081DBC +_02081B76: + mov r0, #0x0 + strb r0, [r4, r1] + add r1, r2, #0x2 + ldr r1, [r4, r1] + add r3, r1, #0x1 + add r1, r2, #0x2 + str r3, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #0x4 + bge _02081B94 + ldrb r0, [r4, r2] + add sp, #0x10 + sub r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081B94: + add r1, r2, #0x2 + str r0, [r4, r1] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081BA2: + mov r0, #0xe + bl FUN_02031588 + ldr r0, _02081D2C ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081BBA: + mov r0, #0xe + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081C8E + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081BD0: + add r2, sp, #0x8 + add r0, r4, #0x0 + mov r1, #0x0 + add r2, #0x2 + bl FUN_02082894 + ldr r1, _02081D34 ; =0x00000123 + add r2, sp, #0x8 + ldrb r1, [r4, r1] + add r0, r4, #0x0 + add r2, #0x2 + bl FUN_02083B48 + cmp r0, #0x1 + bne _02081C8E + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081BFA: + ldr r0, _02081D2C ; =0x00000584 + add r1, r2, #0x0 + sub r1, #0x4f + ldrb r3, [r4, r0] + ldrb r1, [r4, r1] + cmp r3, r1 + blo _02081C8E + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081C16: + mov r0, #0xf + bl FUN_02031588 + ldr r0, _02081D2C ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081C2E: + mov r0, #0xf + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081C8E + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081C44: + add r1, r2, #0x0 + sub r1, #0x53 + ldrb r3, [r4, r1] + add r1, r2, #0x0 + sub r1, #0x5a + ldrb r1, [r4, r1] + cmp r3, r1 + bne _02081C7E + add r1, r2, #0x2 + ldr r1, [r4, r1] + add r0, r4, #0x0 + add r2, sp, #0x4 + bl FUN_02082894 + mov r1, #0x5e + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + add r0, r4, #0x0 + add r2, sp, #0x4 + bl FUN_02083B48 + cmp r0, #0x1 + bne _02081C8E + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081C7E: + add r0, r0, #0x1 + add sp, #0x10 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081C86: + ldr r1, _02081D2C ; =0x00000584 + ldrb r0, [r4, r1] + cmp r0, #0x0 + bne _02081C90 +_02081C8E: + b _02081DBC +_02081C90: + mov r0, #0x0 + strb r0, [r4, r1] + add r1, r2, #0x2 + ldr r1, [r4, r1] + add r3, r1, #0x1 + add r1, r2, #0x2 + str r3, [r4, r1] + ldr r1, [r4, r1] + cmp r1, #0x4 + bge _02081CAE + ldrb r0, [r4, r2] + add sp, #0x10 + sub r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081CAE: + add r1, r2, #0x2 + str r0, [r4, r1] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081CBC: + mov r0, #0x10 + bl FUN_02031588 + ldr r0, _02081D2C ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081CD4: + mov r0, #0x10 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02081DBC + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081CEA: + sub r2, #0x53 + ldrb r1, [r4, r2] + add r2, r4, #0x0 + add r0, r4, #0x0 + add r2, #0xd0 + bl FUN_02083834 + cmp r0, #0x1 + bne _02081DBC + ldr r0, _02081D28 ; =0x00000176 + add sp, #0x10 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r7, pc} +_02081D08: + ldr r0, _02081D2C ; =0x00000584 + add r1, r2, #0x0 + sub r1, #0x4f + ldrb r3, [r4, r0] + ldrb r1, [r4, r1] + cmp r3, r1 + blo _02081DBC + mov r1, #0x0 + strb r1, [r4, r0] + ldrb r0, [r4, r2] + add sp, #0x10 + add r0, r0, #0x1 + strb r0, [r4, r2] + pop {r3-r7, pc} +_02081D24: + ldr r0, _02081D38 ; =0x00000127 + b _02081D3C + .balign 4 +_02081D28: .word 0x00000176 +_02081D2C: .word 0x00000584 +_02081D30: .word 0x00000585 +_02081D34: .word 0x00000123 +_02081D38: .word 0x00000127 +_02081D3C: + mov r5, #0x0 + ldrb r0, [r4, r0] + cmp r0, #0x0 + ble _02081D62 + mov r7, #0x42 + lsl r7, r7, #0x2 + add r6, r7, #0x0 + add r6, #0x1f +_02081D4C: + add r0, r5, #0x0 + bl FUN_0202DFA4 + bl FUN_020239CC + add r1, r4, r5 + strb r0, [r1, r7] + ldrb r0, [r4, r6] + add r5, r5, #0x1 + cmp r5, r0 + blt _02081D4C +_02081D62: + cmp r5, #0x4 + bge _02081D86 + add r1, r4, #0x0 + mov r0, #0x30 + add r1, #0x30 + mul r0, r5 + add r0, r1, r0 + mov r1, #0x42 + lsl r1, r1, #0x2 +_02081D74: + ldrh r2, [r0, #0x0] + add r0, #0x30 + lsl r2, r2, #0x12 + lsr r3, r2, #0x1e + add r2, r4, r5 + add r5, r5, #0x1 + strb r3, [r2, r1] + cmp r5, #0x4 + blt _02081D74 +_02081D86: + mov r0, #0x47 + lsl r0, r0, #0x2 + ldrb r2, [r4, r0] + ldr r1, _02081DC0 ; =0x000019B4 + strb r2, [r4, r1] + add r2, r0, #0x0 + add r2, #0x8 + ldrb r3, [r4, r2] + add r2, r1, #0x1 + strb r3, [r4, r2] + add r2, r1, #0x2 + mov r3, #0x1 + strb r3, [r4, r2] + add r2, r0, #0x0 + add r2, #0xb + ldrb r2, [r4, r2] + add r1, r1, #0x3 + strb r2, [r4, r1] + add r1, r0, #0x0 + mov r2, #0x0 + add r1, #0x64 + str r2, [r4, r1] + add r0, #0x5a + strb r2, [r4, r0] + ldr r0, [sp, #0x0] + bl FUN_0200CAB4 +_02081DBC: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 +_02081DC0: .word 0x000019B4 + + thumb_func_start FUN_02081DC4 +FUN_02081DC4: ; 0x02081DC4 + push {r3-r7, lr} + add r6, r0, #0x0 + bl FUN_02030F40 + cmp r0, #0x0 + bne _02081DD4 + mov r0, #0x0 + pop {r3-r7, pc} +_02081DD4: + ldr r0, _02081EA4 ; =0x00000171 + mov r1, #0x1 + strb r1, [r6, r0] + bl FUN_02030F20 + add r4, r0, #0x0 + bl FUN_02031190 + mov r5, #0x0 + str r0, [sp, #0x0] + cmp r4, #0x0 + ble _02081E0A +_02081DEC: + add r0, r5, #0x0 + bl FUN_0202DFA4 + add r7, r0, #0x0 + bne _02081DFA + bl ErrorHandling +_02081DFA: + add r0, r7, #0x0 + bl FUN_02023A88 + cmp r0, #0x0 + beq _02081E0A + add r5, r5, #0x1 + cmp r5, r4 + blt _02081DEC +_02081E0A: + cmp r5, r4 + beq _02081E12 + mov r1, #0x0 + b _02081E14 +_02081E12: + mov r1, #0x1 +_02081E14: + ldr r0, _02081EA8 ; =0x00001999 + mov r5, #0x0 + strb r1, [r6, r0] + cmp r4, #0x0 + ble _02081E3C +_02081E1E: + add r0, r5, #0x0 + bl FUN_0202DFA4 + add r7, r0, #0x0 + bne _02081E2C + bl ErrorHandling +_02081E2C: + add r0, r7, #0x0 + bl FUN_02023A9C + cmp r0, #0x0 + beq _02081E3C + add r5, r5, #0x1 + cmp r5, r4 + blt _02081E1E +_02081E3C: + cmp r5, r4 + beq _02081E44 + mov r1, #0x0 + b _02081E46 +_02081E44: + mov r1, #0x1 +_02081E46: + ldr r0, _02081EAC ; =0x0000199A + ldr r2, _02081EA8 ; =0x00001999 + strb r1, [r6, r0] + ldrb r1, [r6, r2] + add r2, r2, #0x1 + ldrb r2, [r6, r2] + add r0, r6, #0x0 + bl FUN_020813F4 + ldr r0, [sp, #0x0] + mov r1, #0x49 + lsl r0, r0, #0x18 + mov r2, #0x4 + lsr r0, r0, #0x18 + lsl r1, r1, #0x2 + sub r3, r2, r4 + strb r0, [r6, r1] + add r2, r1, #0x2 + strb r3, [r6, r2] + add r2, r1, #0x3 + strb r4, [r6, r2] + sub r1, r1, #0x1 + strb r0, [r6, r1] + mov r1, #0x64 + add r0, r1, #0x0 + add r0, #0xc1 + strb r1, [r6, r0] + add r1, #0xbc + ldrb r0, [r6, r1] + mov r1, #0x1 + bl FUN_02083454 + ldr r1, _02081EB0 ; =0x00000122 + strb r0, [r6, r1] + add r0, r6, #0x0 + bl FUN_020834D0 + ldr r0, _02081EB4 ; =FUN_02081680 + add r1, r6, #0x0 + mov r2, #0xa + bl FUN_0200CA44 + mov r1, #0x6 + lsl r1, r1, #0x6 + str r0, [r6, r1] + mov r0, #0x1 + pop {r3-r7, pc} + .balign 4 +_02081EA4: .word 0x00000171 +_02081EA8: .word 0x00001999 +_02081EAC: .word 0x0000199A +_02081EB0: .word 0x00000122 +_02081EB4: .word FUN_02081680 + + thumb_func_start FUN_02081EB8 +FUN_02081EB8: ; 0x02081EB8 + ldr r3, _02081EBC ; =FUN_02081EC0 + bx r3 + .balign 4 +_02081EBC: .word FUN_02081EC0 + + thumb_func_start FUN_02081EC0 +FUN_02081EC0: ; 0x02081EC0 + mov r1, #0x6 + lsl r1, r1, #0x6 + ldr r0, [r0, r1] + cmp r0, #0x0 + bne _02081ECE + mov r0, #0x1 + bx lr +_02081ECE: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_02081ED4 +FUN_02081ED4: ; 0x02081ED4 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x6 + lsl r0, r0, #0x6 + ldr r0, [r4, r0] + cmp r0, #0x0 + beq _02081EE6 + bl ErrorHandling +_02081EE6: + ldr r0, _02081F00 ; =0x00000176 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02081F04 ; =FUN_02081F08 + add r1, r4, #0x0 + mov r2, #0xa + bl FUN_0200CA44 + mov r1, #0x6 + lsl r1, r1, #0x6 + str r0, [r4, r1] + pop {r4, pc} + nop +_02081F00: .word 0x00000176 +_02081F04: .word FUN_02081F08 + + thumb_func_start FUN_02081F08 +FUN_02081F08: ; 0x02081F08 + push {r4, lr} + add r4, r1, #0x0 + ldr r1, _02082014 ; =0x00000176 + ldrb r2, [r4, r1] + cmp r2, #0x7 + bhi _02082000 + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #0x6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02081F20: ; jump table (using 16-bit offset) + .short _02081F30 - _02081F20 - 2; case 0 + .short _02081F46 - _02081F20 - 2; case 1 + .short _02081F5A - _02081F20 - 2; case 2 + .short _02081F7A - _02081F20 - 2; case 3 + .short _02081F94 - _02081F20 - 2; case 4 + .short _02081FAA - _02081F20 - 2; case 5 + .short _02081FBE - _02081F20 - 2; case 6 + .short _02081FEC - _02081F20 - 2; case 7 +_02081F30: + mov r0, #0x11 + bl FUN_02031588 + ldr r0, _02082018 ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02082014 ; =0x00000176 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} +_02081F46: + mov r0, #0x11 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02082010 + ldr r0, _02082014 ; =0x00000176 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} +_02081F5A: + sub r1, #0x53 + ldrb r1, [r4, r1] + add r0, r4, #0x0 + lsl r2, r1, #0x2 + add r2, r4, r2 + add r2, #0xf8 + ldr r2, [r2, #0x0] + bl FUN_02083930 + cmp r0, #0x1 + bne _02082010 + ldr r0, _02082014 ; =0x00000176 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} +_02081F7A: + ldr r0, _02082018 ; =0x00000584 + add r2, r1, #0x0 + sub r2, #0x4f + ldrb r3, [r4, r0] + ldrb r2, [r4, r2] + cmp r3, r2 + blo _02082010 + mov r2, #0x0 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + add r0, r0, #0x1 + strb r0, [r4, r1] + pop {r4, pc} +_02081F94: + mov r0, #0x12 + bl FUN_02031588 + ldr r0, _02082018 ; =0x00000584 + mov r1, #0x0 + strb r1, [r4, r0] + ldr r0, _02082014 ; =0x00000176 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} +_02081FAA: + mov r0, #0x12 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02082010 + ldr r0, _02082014 ; =0x00000176 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} +_02081FBE: + add r0, r1, #0x0 + sub r0, #0x53 + ldrb r3, [r4, r0] + add r0, r1, #0x0 + sub r0, #0x5a + ldrb r0, [r4, r0] + cmp r3, r0 + bne _02081FE6 + add r1, r4, #0x0 + add r0, r4, #0x0 + add r1, #0xf8 + bl FUN_020839C0 + cmp r0, #0x1 + bne _02082010 + ldr r0, _02082014 ; =0x00000176 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r4, pc} +_02081FE6: + add r0, r2, #0x1 + strb r0, [r4, r1] + pop {r4, pc} +_02081FEC: + ldr r0, _02082018 ; =0x00000584 + ldrb r2, [r4, r0] + cmp r2, #0x0 + beq _02082010 + mov r2, #0x0 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + add r0, r0, #0x1 + strb r0, [r4, r1] + pop {r4, pc} +_02082000: + mov r1, #0x6 + mov r2, #0x0 + lsl r1, r1, #0x6 + str r2, [r4, r1] + sub r1, #0xa + strb r2, [r4, r1] + bl FUN_0200CAB4 +_02082010: + pop {r4, pc} + nop +_02082014: .word 0x00000176 +_02082018: .word 0x00000584 + + thumb_func_start FUN_0208201C +FUN_0208201C: ; 0x0208201C + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r0, r2, #0x0 + lsl r2, r4, #0x3 + add r2, r5, r2 + add r2, #0xd0 + ldrh r2, [r2, #0x0] + add r1, r3, #0x0 + bl FUN_0200B244 + pop {r3-r5, pc} + + thumb_func_start FUN_02082034 +FUN_02082034: ; 0x02082034 + push {r4-r6, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r0, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020832E4 + add r3, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x2 + str r0, [sp, #0x4] + add r0, r4, #0x0 + lsl r2, r3, #0x2 + add r4, r5, r3 + mov r3, #0x42 + add r2, r5, r2 + lsl r3, r3, #0x2 + add r2, #0xe8 + ldrb r3, [r4, r3] + ldr r2, [r2, #0x0] + add r1, r6, #0x0 + bl FUN_0200ABB4 + add sp, #0x8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0208206C +FUN_0208206C: ; 0x0208206C + push {r4-r6, lr} + add r5, r0, #0x0 + add r0, r1, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_020832E4 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_020690E4 + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r6, #0x0 + bl FUN_0200ACF8 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02082090 +FUN_02082090: ; 0x02082090 + push {r3-r5, lr} + add r4, r2, #0x0 + mov r2, #0x12 + add r3, r0, #0x0 + lsl r2, r2, #0x4 + add r5, r1, #0x0 + add r1, r2, #0x1 + ldrb r0, [r3, r2] + add r2, #0x51 + ldrb r1, [r3, r1] + ldrb r2, [r3, r2] + bl FUN_02083228 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200B278 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020820B8 +FUN_020820B8: ; 0x020820B8 + push {r3-r5, lr} + add r5, r1, #0x0 + ldr r1, _020820D8 ; =0x0000011F + add r3, r0, #0x0 + ldrb r0, [r3, r1] + add r1, r1, #0x2 + ldrb r1, [r3, r1] + add r4, r2, #0x0 + bl FUN_020832A4 + add r2, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200B2AC + pop {r3-r5, pc} + .balign 4 +_020820D8: .word 0x0000011F + + thumb_func_start FUN_020820DC +FUN_020820DC: ; 0x020820DC + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r1, #0x13 + add r6, r2, #0x0 + mov r0, #0x0 + add r3, r5, #0x0 + lsl r1, r1, #0x4 +_020820EC: + ldrb r2, [r3, r1] + cmp r2, #0x0 + beq _020820FA + add r0, r0, #0x1 + add r3, #0xc + cmp r0, #0x4 + blt _020820EC +_020820FA: + bl FUN_020832DC + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_02082034 + pop {r4-r6, pc} + + thumb_func_start FUN_0208210C +FUN_0208210C: ; 0x0208210C + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r1, #0x13 + add r6, r2, #0x0 + mov r0, #0x0 + add r3, r5, #0x0 + lsl r1, r1, #0x4 +_0208211C: + ldrb r2, [r3, r1] + cmp r2, #0x0 + beq _0208212A + add r0, r0, #0x1 + add r3, #0xc + cmp r0, #0x4 + blt _0208211C +_0208212A: + bl FUN_020832DC + add r1, r0, #0x0 + add r0, r5, #0x0 + add r2, r4, #0x0 + add r3, r6, #0x0 + bl FUN_0208206C + pop {r4-r6, pc} + + thumb_func_start FUN_0208213C +FUN_0208213C: ; 0x0208213C + mov r0, #0x1 + bx lr + + thumb_func_start FUN_02082140 +FUN_02082140: ; 0x02082140 + push {r3, lr} + ldr r2, _02082154 ; =0x00000171 + ldrb r0, [r0, r2] + cmp r0, #0x0 + beq _02082150 + add r0, r1, #0x0 + bl FUN_02031588 +_02082150: + pop {r3, pc} + nop +_02082154: .word 0x00000171 + + thumb_func_start FUN_02082158 +FUN_02082158: ; 0x02082158 + push {r3, lr} + ldr r2, _02082178 ; =0x00000171 + ldrb r0, [r0, r2] + cmp r0, #0x0 + bne _02082166 + mov r0, #0x1 + pop {r3, pc} +_02082166: + add r0, r1, #0x0 + bl FUN_020315D8 + cmp r0, #0x1 + bne _02082174 + mov r0, #0x1 + pop {r3, pc} +_02082174: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02082178: .word 0x00000171 + + thumb_func_start FUN_0208217C +FUN_0208217C: ; 0x0208217C + ldr r2, _0208218C ; =0x00000123 + mov r1, #0xc + ldrb r3, [r0, r2] + add r2, #0xd + mul r1, r3 + add r0, r0, r1 + ldrb r0, [r0, r2] + bx lr + .balign 4 +_0208218C: .word 0x00000123 + + thumb_func_start FUN_02082190 +FUN_02082190: ; 0x02082190 + push {r3, lr} + mov r1, #0x13 + mov r3, #0x0 + lsl r1, r1, #0x4 +_02082198: + ldrb r2, [r0, r1] + cmp r2, #0x0 + bne _020821A6 + add r0, r3, #0x0 + bl FUN_020832DC + pop {r3, pc} +_020821A6: + add r3, r3, #0x1 + add r0, #0xc + cmp r3, #0x4 + blt _02082198 + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020821B4 +FUN_020821B4: ; 0x020821B4 + ldr r1, _020821BC ; =0x00000123 + ldr r3, _020821C0 ; =FUN_020832DC + ldrb r0, [r0, r1] + bx r3 + .balign 4 +_020821BC: .word 0x00000123 +_020821C0: .word FUN_020832DC + + thumb_func_start FUN_020821C4 +FUN_020821C4: ; 0x020821C4 + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_020832E4 + lsl r0, r0, #0x1 + add r1, r4, r0 + mov r0, #0x45 + lsl r0, r0, #0x2 + ldrh r0, [r1, r0] + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020821DC +FUN_020821DC: ; 0x020821DC + push {r4, lr} + add r4, r0, #0x0 + add r0, r1, #0x0 + bl FUN_020832E4 + add r1, r4, r0 + mov r0, #0x11 + lsl r0, r0, #0x4 + ldrb r0, [r1, r0] + pop {r4, pc} + + thumb_func_start FUN_020821F0 +FUN_020821F0: ; 0x020821F0 + push {r3, lr} + ldr r1, _02082210 ; =0x00000171 + ldrb r1, [r0, r1] + cmp r1, #0x1 + bne _020821FE + mov r0, #0x1 + pop {r3, pc} +_020821FE: + bl FUN_020832EC + cmp r0, #0x1 + bne _0208220A + mov r0, #0x2 + pop {r3, pc} +_0208220A: + mov r0, #0x0 + pop {r3, pc} + nop +_02082210: .word 0x00000171 + + thumb_func_start FUN_02082214 +FUN_02082214: ; 0x02082214 + push {r4-r5} + mov r4, #0x12 + lsl r4, r4, #0x4 + ldrb r5, [r0, r4] + strh r5, [r1, #0x0] + sub r1, r4, #0x1 + ldrb r1, [r0, r1] + strh r1, [r2, #0x0] + add r1, r4, #0x1 + ldrb r1, [r0, r1] + strh r1, [r3, #0x0] + ldr r1, _02082238 ; =0x00001998 + ldrb r1, [r0, r1] + ldr r0, [sp, #0x8] + strh r1, [r0, #0x0] + pop {r4-r5} + bx lr + nop +_02082238: .word 0x00001998 + + thumb_func_start FUN_0208223C +FUN_0208223C: ; 0x0208223C + ldr r1, _02082244 ; =0x00000171 + ldr r3, _02082248 ; =FUN_020833D4 + ldrb r0, [r0, r1] + bx r3 + .balign 4 +_02082244: .word 0x00000171 +_02082248: .word FUN_020833D4 + + thumb_func_start FUN_0208224C +FUN_0208224C: ; 0x0208224C + ldr r3, _02082250 ; =FUN_02083404 + bx r3 + .balign 4 +_02082250: .word FUN_02083404 + + thumb_func_start FUN_02082254 +FUN_02082254: ; 0x02082254 + push {r4, lr} + mov r1, #0x12 + add r4, r0, #0x0 + lsl r1, r1, #0x4 + ldrb r0, [r4, r1] + sub r1, r1, #0x1 + ldrb r1, [r4, r1] + bl FUN_0208341C + add r1, r0, #0x0 + ldr r0, _02082280 ; =0x00001990 + mov r2, #0x0 + ldr r0, [r4, r0] + bl FUN_020671BC + cmp r0, #0x0 + beq _0208227A + mov r0, #0x1 + pop {r4, pc} +_0208227A: + mov r0, #0x0 + pop {r4, pc} + nop +_02082280: .word 0x00001990 + + thumb_func_start FUN_02082284 +FUN_02082284: ; 0x02082284 + push {r3-r5, lr} + add r4, r1, #0x0 + ldr r1, _020822EC ; =0x0000011F + add r5, r2, #0x0 + ldrb r2, [r0, r1] + cmp r2, #0x4 + bhi _020822D0 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0208229E: ; jump table (using 16-bit offset) + .short _020822A8 - _0208229E - 2; case 0 + .short _020822B0 - _0208229E - 2; case 1 + .short _020822B8 - _0208229E - 2; case 2 + .short _020822C0 - _0208229E - 2; case 3 + .short _020822C8 - _0208229E - 2; case 4 +_020822A8: + add r1, r1, #0x1 + ldrb r0, [r0, r1] + add r0, #0x21 + b _020822D6 +_020822B0: + add r1, r1, #0x1 + ldrb r0, [r0, r1] + add r0, #0x25 + b _020822D6 +_020822B8: + add r1, r1, #0x1 + ldrb r0, [r0, r1] + add r0, #0x29 + b _020822D6 +_020822C0: + add r1, r1, #0x1 + ldrb r0, [r0, r1] + add r0, #0x2d + b _020822D6 +_020822C8: + add r1, r1, #0x1 + ldrb r0, [r0, r1] + add r0, #0x31 + b _020822D6 +_020822D0: + bl ErrorHandling + pop {r3-r5, pc} +_020822D6: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r1, #0x3 + bl FUN_0207FC5C + add r2, r0, #0x0 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_0200AD94 + pop {r3-r5, pc} + .balign 4 +_020822EC: .word 0x0000011F + + thumb_func_start FUN_020822F0 +FUN_020822F0: ; 0x020822F0 + push {r3-r5, lr} + mov r4, #0x64 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r0, #0xbf + ldrb r1, [r5, r0] + mov r0, #0xc + mul r0, r1 + add r1, r5, r0 + add r0, r4, #0x0 + add r0, #0xcc + ldrb r0, [r1, r0] + cmp r0, #0x0 + beq _02082310 + ldr r0, _0208243C ; =0x0000FFFF + pop {r3-r5, pc} +_02082310: + add r0, r4, #0x0 + add r0, #0xbb + ldrb r0, [r5, r0] + cmp r0, #0x4 + bhi _02082414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02082326: ; jump table (using 16-bit offset) + .short _02082330 - _02082326 - 2; case 0 + .short _0208235E - _02082326 - 2; case 1 + .short _0208238C - _02082326 - 2; case 2 + .short _020823BA - _02082326 - 2; case 3 + .short _020823E8 - _02082326 - 2; case 4 +_02082330: + add r0, r4, #0x0 + add r0, #0xbc + ldrb r0, [r5, r0] + cmp r0, #0x3 + bhi _02082414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02082346: ; jump table (using 16-bit offset) + .short _0208234E - _02082346 - 2; case 0 + .short _02082352 - _02082346 - 2; case 1 + .short _02082356 - _02082346 - 2; case 2 + .short _0208235A - _02082346 - 2; case 3 +_0208234E: + mov r4, #0x49 + b _02082414 +_02082352: + mov r4, #0x4e + b _02082414 +_02082356: + mov r4, #0x53 + b _02082414 +_0208235A: + mov r4, #0x58 + b _02082414 +_0208235E: + add r0, r4, #0x0 + add r0, #0xbc + ldrb r0, [r5, r0] + cmp r0, #0x3 + bhi _02082414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02082374: ; jump table (using 16-bit offset) + .short _0208237C - _02082374 - 2; case 0 + .short _02082380 - _02082374 - 2; case 1 + .short _02082384 - _02082374 - 2; case 2 + .short _02082388 - _02082374 - 2; case 3 +_0208237C: + mov r4, #0x4a + b _02082414 +_02082380: + mov r4, #0x4f + b _02082414 +_02082384: + mov r4, #0x54 + b _02082414 +_02082388: + mov r4, #0x59 + b _02082414 +_0208238C: + add r0, r4, #0x0 + add r0, #0xbc + ldrb r0, [r5, r0] + cmp r0, #0x3 + bhi _02082414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020823A2: ; jump table (using 16-bit offset) + .short _020823AA - _020823A2 - 2; case 0 + .short _020823AE - _020823A2 - 2; case 1 + .short _020823B2 - _020823A2 - 2; case 2 + .short _020823B6 - _020823A2 - 2; case 3 +_020823AA: + mov r4, #0x48 + b _02082414 +_020823AE: + mov r4, #0x4d + b _02082414 +_020823B2: + mov r4, #0x52 + b _02082414 +_020823B6: + mov r4, #0x57 + b _02082414 +_020823BA: + add r0, r4, #0x0 + add r0, #0xbc + ldrb r0, [r5, r0] + cmp r0, #0x3 + bhi _02082414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020823D0: ; jump table (using 16-bit offset) + .short _020823D8 - _020823D0 - 2; case 0 + .short _020823DC - _020823D0 - 2; case 1 + .short _020823E0 - _020823D0 - 2; case 2 + .short _020823E4 - _020823D0 - 2; case 3 +_020823D8: + mov r4, #0x4c + b _02082414 +_020823DC: + mov r4, #0x51 + b _02082414 +_020823E0: + mov r4, #0x56 + b _02082414 +_020823E4: + mov r4, #0x5b + b _02082414 +_020823E8: + add r0, r4, #0x0 + add r0, #0xbc + ldrb r0, [r5, r0] + cmp r0, #0x3 + bhi _02082414 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020823FE: ; jump table (using 16-bit offset) + .short _02082406 - _020823FE - 2; case 0 + .short _0208240A - _020823FE - 2; case 1 + .short _0208240E - _020823FE - 2; case 2 + .short _02082412 - _020823FE - 2; case 3 +_02082406: + mov r4, #0x4b + b _02082414 +_0208240A: + mov r4, #0x50 + b _02082414 +_0208240E: + mov r4, #0x55 + b _02082414 +_02082412: + mov r4, #0x5a +_02082414: + cmp r4, #0x64 + bne _0208241C + bl ErrorHandling +_0208241C: + ldr r0, _02082440 ; =0x0000198C + ldr r0, [r5, r0] + bl FUN_02027E24 + bl FUN_0202708C + add r1, r4, #0x0 + mov r2, #0x1 + bl FUN_020270D8 + cmp r0, #0x0 + bne _02082438 + ldr r0, _0208243C ; =0x0000FFFF + pop {r3-r5, pc} +_02082438: + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_0208243C: .word 0x0000FFFF +_02082440: .word 0x0000198C + + thumb_func_start FUN_02082444 +FUN_02082444: ; 0x02082444 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, _020824F0 ; =0x000019BC + add r6, r1, #0x0 + ldr r0, [r5, r0] + cmp r0, #0x0 + beq _02082456 + bl ErrorHandling +_02082456: + mov r0, #0x4 + mov r1, #0x10 + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x10 + add r4, r0, #0x0 + blx MI_CpuFill8 + add r0, r6, #0x0 + bl FUN_020832E4 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + mov r1, #0x43 + lsl r1, r1, #0x2 + add r0, r5, r0 + ldrb r2, [r0, r1] + mov r0, #0x1 + and r0, r2 + add r2, r1, #0x0 + add r2, #0x65 + ldrb r2, [r5, r2] + cmp r2, #0x1 + bne _02082494 + mov r1, #0x6 + ldr r2, _020824F4 ; =0x020FBBAC + mul r1, r0 + add r0, r2, r1 + str r0, [r4, #0x4] + b _020824DC +_02082494: + add r1, #0x14 + ldrb r1, [r5, r1] + cmp r1, #0x3 + bhi _020824D2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020824A8: ; jump table (using 16-bit offset) + .short _020824B0 - _020824A8 - 2; case 0 + .short _020824BC - _020824A8 - 2; case 1 + .short _020824C6 - _020824A8 - 2; case 2 + .short _020824D2 - _020824A8 - 2; case 3 +_020824B0: + lsl r1, r0, #0x1 + ldr r2, _020824F8 ; =0x020FBB90 + add r0, r0, r1 + add r0, r2, r0 + str r0, [r4, #0x4] + b _020824DC +_020824BC: + ldr r1, _020824FC ; =0x020FBB98 + lsl r0, r0, #0x2 + add r0, r1, r0 + str r0, [r4, #0x4] + b _020824DC +_020824C6: + lsl r1, r0, #0x2 + ldr r2, _02082500 ; =0x020FBBA0 + add r0, r0, r1 + add r0, r2, r0 + str r0, [r4, #0x4] + b _020824DC +_020824D2: + mov r1, #0x6 + ldr r2, _020824F4 ; =0x020FBBAC + mul r1, r0 + add r0, r2, r1 + str r0, [r4, #0x4] +_020824DC: + ldr r0, _02082504 ; =FUN_0208251C + add r1, r5, #0x0 + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r4, #0x0] + ldr r0, _020824F0 ; =0x000019BC + str r4, [r5, r0] + pop {r4-r6, pc} + nop +_020824F0: .word 0x000019BC +_020824F4: .word 0x020FBBAC +_020824F8: .word 0x020FBB90 +_020824FC: .word 0x020FBB98 +_02082500: .word 0x020FBBA0 +_02082504: .word FUN_0208251C + + thumb_func_start FUN_02082508 +FUN_02082508: ; 0x02082508 + ldr r1, _02082518 ; =0x000019BC + ldr r0, [r0, r1] + cmp r0, #0x0 + bne _02082514 + mov r0, #0x1 + bx lr +_02082514: + mov r0, #0x0 + bx lr + .balign 4 +_02082518: .word 0x000019BC + + thumb_func_start FUN_0208251C +FUN_0208251C: ; 0x0208251C + push {r3-r6, lr} + sub sp, #0x4 + add r6, r0, #0x0 + ldr r0, _02082598 ; =0x000019BC + add r5, r1, #0x0 + ldr r4, [r5, r0] + mov r0, #0x1 + bl FUN_0200A344 + cmp r0, #0x0 + beq _02082594 + ldrb r0, [r4, #0xb] + cmp r0, #0x0 + bne _02082580 + mov r0, #0x8 + ldrsh r1, [r4, r0] + add r1, r1, #0x1 + strh r1, [r4, #0x8] + ldrsh r2, [r4, r0] + ldrb r0, [r4, #0xa] + ldr r1, [r4, #0x4] + ldrb r0, [r1, r0] + cmp r2, r0 + ble _02082594 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x6 + mov r1, #0x0 + mov r2, #0x4 + mov r3, #0x3f + bl FUN_0200A208 + ldr r0, _0208259C ; =0x000005F8 + bl FUN_020054C8 + ldrb r0, [r4, #0xa] + add r0, r0, #0x1 + strb r0, [r4, #0xa] + mov r0, #0x0 + strh r0, [r4, #0x8] + ldrb r0, [r4, #0xa] + ldr r1, [r4, #0x4] + ldrb r0, [r1, r0] + cmp r0, #0xff + bne _02082594 + ldrb r0, [r4, #0xb] + add sp, #0x4 + add r0, r0, #0x1 + strb r0, [r4, #0xb] + pop {r3-r6, pc} +_02082580: + ldr r0, _02082598 ; =0x000019BC + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, _02082598 ; =0x000019BC + mov r1, #0x0 + str r1, [r5, r0] + add r0, r6, #0x0 + bl FUN_0200CAB4 +_02082594: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02082598: .word 0x000019BC +_0208259C: .word 0x000005F8 + + thumb_func_start FUN_020825A0 +FUN_020825A0: ; 0x020825A0 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r0, #0x13 + str r2, [sp, #0x4] + ldr r6, [sp, #0x20] + ldr r7, [sp, #0x24] + str r1, [sp, #0x0] + str r3, [sp, #0x8] + mov r4, #0x0 + add r2, r5, #0x0 + lsl r0, r0, #0x4 +_020825B8: + ldrb r1, [r2, r0] + cmp r1, #0x0 + beq _020825C6 + add r4, r4, #0x1 + add r2, #0xc + cmp r4, #0x4 + blt _020825B8 +_020825C6: + add r0, r4, #0x0 + bl FUN_020832DC + ldr r1, [sp, #0x0] + str r0, [r1, #0x0] + ldr r1, _02082628 ; =0x00000171 + ldr r0, [sp, #0x4] + ldrb r2, [r5, r1] + sub r1, #0x4a + str r2, [r0, #0x0] + ldrb r0, [r5, r1] + cmp r4, r0 + blt _020825E6 + mov r1, #0x1 + ldr r0, [sp, #0x8] + b _020825EA +_020825E6: + ldr r0, [sp, #0x8] + mov r1, #0x0 +_020825EA: + str r1, [r0, #0x0] + mov r0, #0x0 + str r0, [r6, #0x0] + str r0, [r7, #0x0] + ldr r0, _0208262C ; =0x00000121 + ldrb r0, [r5, r0] + cmp r0, #0x8 + bhi _02082624 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02082606: ; jump table (using 16-bit offset) + .short _02082624 - _02082606 - 2; case 0 + .short _02082624 - _02082606 - 2; case 1 + .short _02082624 - _02082606 - 2; case 2 + .short _02082618 - _02082606 - 2; case 3 + .short _02082620 - _02082606 - 2; case 4 + .short _02082618 - _02082606 - 2; case 5 + .short _02082620 - _02082606 - 2; case 6 + .short _02082618 - _02082606 - 2; case 7 + .short _02082620 - _02082606 - 2; case 8 +_02082618: + mov r0, #0x1 + add sp, #0xc + str r0, [r6, #0x0] + pop {r4-r7, pc} +_02082620: + mov r0, #0x1 + str r0, [r7, #0x0] +_02082624: + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02082628: .word 0x00000171 +_0208262C: .word 0x00000121 + + thumb_func_start FUN_02082630 +FUN_02082630: ; 0x02082630 + push {r4-r7, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r0, _02082840 ; =0x00000121 + str r2, [sp, #0x4] + ldrb r0, [r4, r0] + add r6, r3, #0x0 + mov r5, #0x0 + cmp r0, #0x8 + bhi _02082666 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02082650: ; jump table (using 16-bit offset) + .short _02082666 - _02082650 - 2; case 0 + .short _02082666 - _02082650 - 2; case 1 + .short _02082666 - _02082650 - 2; case 2 + .short _02082662 - _02082650 - 2; case 3 + .short _02082662 - _02082650 - 2; case 4 + .short _02082662 - _02082650 - 2; case 5 + .short _02082662 - _02082650 - 2; case 6 + .short _02082662 - _02082650 - 2; case 7 + .short _02082662 - _02082650 - 2; case 8 +_02082662: + add sp, #0xc + pop {r4-r7, pc} +_02082666: + ldr r2, _02082844 ; =0x00000171 + ldrb r0, [r4, r2] + cmp r0, #0x0 + ldr r0, _02082848 ; =0x0000198C + beq _02082672 + b _02082774 +_02082672: + ldr r0, [r4, r0] + bl FUN_020462AC + add r6, r0, #0x0 + ldr r0, _02082840 ; =0x00000121 + ldrb r1, [r4, r0] + cmp r1, #0x2 + bne _020826AC + sub r0, r0, #0x1 + ldrb r0, [r4, r0] + cmp r0, #0x3 + blo _020826AC + add r0, r4, #0x0 + bl FUN_0208217C + cmp r0, #0x0 + bne _020826AC + ldr r1, _0208284C ; =0x0000011F + add r0, r6, #0x0 + ldrb r1, [r4, r1] + bl FUN_0205EE60 + cmp r0, #0x0 + bne _020826AC + ldr r1, _0208284C ; =0x0000011F + add r0, r6, #0x0 + ldrb r1, [r4, r1] + bl FUN_0205EE08 +_020826AC: + add r0, r4, #0x0 + bl FUN_0208217C + cmp r0, #0x0 + bne _020826EA + mov r1, #0x1 + add r0, sp, #0x8 + strb r1, [r0, #0x0] + mov r1, #0x12 + lsl r1, r1, #0x4 + ldrb r0, [r4, r1] + sub r1, r1, #0x1 + ldrb r1, [r4, r1] + bl FUN_0208341C + add r6, r0, #0x0 + ldr r0, _02082850 ; =0x00001990 + add r1, r6, #0x0 + ldr r0, [r4, r0] + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + bne _020826DE + mov r5, #0x1 +_020826DE: + ldr r0, _02082850 ; =0x00001990 + add r1, r6, #0x0 + ldr r0, [r4, r0] + add r2, sp, #0x8 + bl FUN_02067830 +_020826EA: + ldr r0, _02082848 ; =0x0000198C + ldr r0, [r4, r0] + bl FUN_02022504 + ldr r3, _02082854 ; =0x00000123 + mov r1, #0xc + ldrb r2, [r4, r3] + mul r1, r2 + add r2, r4, r1 + add r1, r3, #0x0 + add r1, #0xd + ldrb r1, [r2, r1] + sub r2, r3, #0x4 + sub r3, r3, #0x3 + add r1, r1, #0x1 + str r1, [sp, #0x0] + ldr r1, _02082850 ; =0x00001990 + ldrb r2, [r4, r2] + ldrb r3, [r4, r3] + ldr r1, [r4, r1] + bl FUN_02060F10 + ldr r0, _02082848 ; =0x0000198C + ldr r0, [r4, r0] + bl FUN_02029FC8 + mov r1, #0x3f + add r6, r0, #0x0 + bl FUN_0202A0E8 + add r0, r4, #0x0 + bl FUN_0208217C + cmp r0, #0x0 + bne _02082740 + add r0, r6, #0x0 + mov r1, #0x41 + bl FUN_0202A0E8 + add r0, r6, #0x0 + mov r1, #0xd + bl FUN_0202A170 +_02082740: + cmp r5, #0x1 + bne _0208274C + add r0, r6, #0x0 + mov r1, #0x43 + bl FUN_0202A0E8 +_0208274C: + ldr r0, _02082848 ; =0x0000198C + ldr r0, [r4, r0] + bl FUN_02024DA0 + add r7, r0, #0x0 + ldr r0, _02082858 ; =0x00000127 + ldrb r6, [r4, r0] + cmp r6, #0x4 + bge _020827E8 + lsl r0, r6, #0x2 + add r5, r4, r0 +_02082762: + ldr r1, [r5, #0x0] + add r0, r7, #0x0 + bl FUN_0202498C + add r6, r6, #0x1 + add r5, r5, #0x4 + cmp r6, #0x4 + blt _02082762 + b _020827E8 +_02082774: + add r3, r2, #0x0 + sub r3, #0x4e + ldrb r5, [r4, r3] + add r1, r2, #0x0 + mov r3, #0xc + mul r3, r5 + sub r1, #0x52 + add r3, r4, r3 + sub r2, #0x41 + ldrb r1, [r4, r1] + ldrb r2, [r3, r2] + ldr r0, [r4, r0] + bl FUN_0202C108 + ldr r0, _02082848 ; =0x0000198C + ldr r0, [r4, r0] + bl FUN_02029FC8 + mov r1, #0x40 + add r5, r0, #0x0 + bl FUN_0202A0E8 + add r0, r4, #0x0 + bl FUN_0208217C + cmp r0, #0x0 + bne _020827BA + add r0, r5, #0x0 + mov r1, #0x42 + bl FUN_0202A0E8 + add r0, r5, #0x0 + mov r1, #0x13 + bl FUN_0202A170 +_020827BA: + ldr r1, _02082854 ; =0x00000123 + mov r0, #0xc + ldrb r2, [r4, r1] + add r1, #0xd + mul r0, r2 + add r0, r4, r0 + ldrb r0, [r0, r1] + mov r1, #0xb + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02029500 + add r5, r0, #0x0 + ldr r0, _02082848 ; =0x0000198C + ldr r0, [r4, r0] + bl FUN_020289A4 + add r0, r6, #0x0 + add r1, r5, #0x0 + mov r2, #0x4 + bl FUN_02028AD4 +_020827E8: + add r0, r4, #0x0 + bl FUN_0208217C + cmp r0, #0x0 + bne _02082820 + ldr r0, _02082848 ; =0x0000198C + ldr r0, [r4, r0] + bl FUN_02027E24 + ldr r1, _0208284C ; =0x0000011F + ldrb r1, [r4, r1] + bl FUN_02027044 + add r5, r0, #0x0 + bl FUN_02027740 + ldr r1, _02082854 ; =0x00000123 + add r0, r5, #0x0 + ldrb r1, [r4, r1] + lsl r1, r1, #0x2 + add r1, r4, r1 + add r1, #0xf8 + ldr r1, [r1, #0x0] + bl FUN_020278DC + add r0, r5, #0x0 + bl FUN_02027710 +_02082820: + add r0, r4, #0x0 + bl FUN_0208217C + cmp r0, #0x0 + bne _0208283A + ldr r0, _02082850 ; =0x00001990 + ldr r2, [sp, #0x4] + ldr r0, [r4, r0] + lsl r2, r2, #0x10 + mov r1, #0x9 + lsr r2, r2, #0x10 + bl FUN_020688E8 +_0208283A: + add sp, #0xc + pop {r4-r7, pc} + nop +_02082840: .word 0x00000121 +_02082844: .word 0x00000171 +_02082848: .word 0x0000198C +_0208284C: .word 0x0000011F +_02082850: .word 0x00001990 +_02082854: .word 0x00000123 +_02082858: .word 0x00000127 + + thumb_func_start FUN_0208285C +FUN_0208285C: ; 0x0208285C + push {r4, lr} + bl FUN_020126D8 + add r4, r0, #0x0 + bl FUN_0201B9D4 + add r0, #0xa + mul r0, r4 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_0201B9E0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02082878 +FUN_02082878: ; 0x02082878 + ldr r3, _0208287C ; =FUN_0201B9EC + bx r3 + .balign 4 +_0208287C: .word FUN_0201B9EC + + thumb_func_start FUN_02082880 +FUN_02082880: ; 0x02082880 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_0201BA10 + str r0, [r4, #0x0] + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02082894 +FUN_02082894: ; 0x02082894 + push {r4-r5} + mov r5, #0x42 + add r3, r0, r1 + lsl r5, r5, #0x2 + ldrb r4, [r3, r5] + lsl r1, r1, #0x1 + add r0, r0, r1 + strb r4, [r2, #0x0] + add r4, r5, #0x4 + ldrb r4, [r3, r4] + strb r4, [r2, #0x1] + add r4, r5, #0x0 + add r4, #0x8 + ldrb r3, [r3, r4] + add r5, #0xc + strb r3, [r2, #0x2] + ldrh r0, [r0, r5] + strh r0, [r2, #0x4] + pop {r4-r5} + bx lr + + thumb_func_start FUN_020828BC +FUN_020828BC: ; 0x020828BC + ldr r2, _020828E0 ; =0x00000171 + ldrb r1, [r0, r2] + cmp r1, #0x0 + beq _020828D6 + cmp r1, #0x1 + bne _020828DA + add r1, r2, #0x0 + sub r1, #0x55 + sub r2, #0x4e + ldrb r1, [r0, r1] + ldrb r0, [r0, r2] + cmp r1, r0 + bne _020828DA +_020828D6: + mov r0, #0x1 + bx lr +_020828DA: + mov r0, #0x0 + bx lr + nop +_020828E0: .word 0x00000171 + + thumb_func_start FUN_020828E4 +FUN_020828E4: ; 0x020828E4 + push {r3-r7, lr} + sub sp, #0x58 + str r0, [sp, #0x4] + ldr r0, [sp, #0x70] + mov r6, #0x0 + str r0, [sp, #0x70] + ldr r0, [sp, #0x74] + add r5, r1, #0x0 + add r4, r3, #0x0 + str r2, [sp, #0x8] + str r6, [sp, #0x20] + str r6, [sp, #0x18] + str r6, [sp, #0x1c] + cmp r0, #0x8 + bhi _0208292A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0208290E: ; jump table (using 16-bit offset) + .short _0208292A - _0208290E - 2; case 0 + .short _0208292A - _0208290E - 2; case 1 + .short _0208292A - _0208290E - 2; case 2 + .short _02082920 - _0208290E - 2; case 3 + .short _02082926 - _0208290E - 2; case 4 + .short _02082920 - _0208290E - 2; case 5 + .short _02082926 - _0208290E - 2; case 6 + .short _02082920 - _0208290E - 2; case 7 + .short _02082926 - _0208290E - 2; case 8 +_02082920: + mov r0, #0x1 + str r0, [sp, #0x18] + b _0208292A +_02082926: + mov r0, #0x1 + str r0, [sp, #0x1c] +_0208292A: + mov r0, #0x1 + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, #0x5a + add r2, r1, #0x0 + add r3, r5, #0x0 + bl FUN_02006C98 + str r0, [sp, #0x14] + mov r0, #0x5a + mov r1, #0x0 + bl LoadFromNARC_7 + mov r1, #0x30 + blx _u32_div_f + str r0, [sp, #0x24] + ldr r1, [sp, #0x24] + add r0, r5, #0x0 + add r1, r1, #0x1 + bl FUN_020169D8 + add r5, r0, #0x0 + ldr r0, [sp, #0x78] + cmp r0, #0x1 + bne _02082968 + ldr r0, [sp, #0x7c] + cmp r0, #0x1 + bne _02082968 + mov r0, #0x1 + str r0, [sp, #0x20] +_02082968: + ldr r0, [sp, #0x24] + mov r2, #0x0 + cmp r0, #0x0 + ble _02082A1A + ldr r3, [sp, #0x14] +_02082972: + ldrh r7, [r3, #0x20] + lsl r0, r7, #0x1d + lsr r1, r0, #0x1d + ldr r0, [sp, #0x70] + cmp r0, r1 + bne _02082A10 + ldr r0, [sp, #0x20] + cmp r0, #0x1 + bne _0208298E + lsl r0, r7, #0x14 + lsr r0, r0, #0x1e + cmp r0, #0x1 + beq _02082A10 + b _0208299A +_0208298E: + lsl r0, r7, #0x14 + lsr r0, r0, #0x1e + cmp r0, #0x2 + beq _02082A10 + cmp r0, #0x3 + beq _02082A10 +_0208299A: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _020829AA + ldrh r0, [r3, #0x20] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1f + beq _02082A10 + b _020829CA +_020829AA: + ldr r0, [sp, #0x1c] + cmp r0, #0x1 + ldrh r0, [r3, #0x20] + bne _020829BA + lsl r0, r0, #0x17 + lsr r0, r0, #0x1f + beq _02082A10 + b _020829CA +_020829BA: + lsl r1, r0, #0x16 + lsr r1, r1, #0x1f + cmp r1, #0x1 + beq _02082A10 + lsl r0, r0, #0x17 + lsr r0, r0, #0x1f + cmp r0, #0x1 + beq _02082A10 +_020829CA: + cmp r4, #0x0 + bne _020829D6 + ldrh r0, [r3, #0x20] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bne _02082A06 +_020829D6: + cmp r4, #0x1 + bne _020829E2 + ldrh r0, [r3, #0x20] + lsl r0, r0, #0x1b + lsr r0, r0, #0x1f + bne _02082A06 +_020829E2: + cmp r4, #0x2 + bne _020829EE + ldrh r0, [r3, #0x20] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1f + bne _02082A06 +_020829EE: + cmp r4, #0x3 + bne _020829FA + ldrh r0, [r3, #0x20] + lsl r0, r0, #0x19 + lsr r0, r0, #0x1f + bne _02082A06 +_020829FA: + cmp r4, #0x4 + bne _02082A10 + ldrh r0, [r3, #0x20] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + beq _02082A10 +_02082A06: + add r1, r6, #0x1 + add r0, r6, #0x0 + lsl r1, r1, #0x18 + lsr r6, r1, #0x18 + strb r2, [r5, r0] +_02082A10: + ldr r0, [sp, #0x24] + add r2, r2, #0x1 + add r3, #0x30 + cmp r2, r0 + blt _02082972 +_02082A1A: + mov r0, #0xff + strb r0, [r5, r6] + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + beq _02082A26 + b _02082B4E +_02082A26: + ldr r0, [sp, #0x8] + cmp r6, r0 + bge _02082A30 + bl ErrorHandling +_02082A30: + mov r0, #0x0 + str r0, [sp, #0x10] + cmp r6, #0x0 + ble _02082A5A + mov r2, #0x30 +_02082A3A: + ldrb r1, [r5, r0] + add r3, r1, #0x0 + ldr r1, [sp, #0x14] + mul r3, r2 + add r1, r1, r3 + ldrh r1, [r1, #0x20] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1e + cmp r1, #0x3 + bne _02082A54 + ldr r1, [sp, #0x10] + add r1, r1, #0x1 + str r1, [sp, #0x10] +_02082A54: + add r0, r0, #0x1 + cmp r0, r6 + blt _02082A3A +_02082A5A: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + ble _02082AA2 + ldr r0, [sp, #0x4] + bl FUN_02082878 + ldr r1, [sp, #0x10] + blx _s32_div_f + mov r3, #0x0 + cmp r6, #0x0 + ble _02082AA2 + mov r0, #0x30 +_02082A74: + ldrb r4, [r5, r3] + add r2, r4, #0x0 + ldr r4, [sp, #0x14] + mul r2, r0 + add r2, r4, r2 + ldrh r4, [r2, #0x20] + lsl r4, r4, #0x14 + lsr r4, r4, #0x1e + cmp r4, #0x3 + bne _02082A9C + cmp r1, #0x0 + bne _02082A9A + add r4, sp, #0x28 + mov r3, #0x6 +_02082A90: + ldmia r2!, {r0-r1} + stmia r4!, {r0-r1} + sub r3, r3, #0x1 + bne _02082A90 + b _02082AA2 +_02082A9A: + sub r1, r1, #0x1 +_02082A9C: + add r3, r3, #0x1 + cmp r3, r6 + blt _02082A74 +_02082AA2: + ldr r0, [sp, #0x8] + mov r1, #0x4 + sub r4, r1, r0 + add r0, r4, #0x0 + str r4, [sp, #0xc] + cmp r0, #0x4 + bge _02082B16 +_02082AB0: + ldr r0, [sp, #0x4] + bl FUN_02082878 + add r1, r6, #0x0 + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r2, r0, #0x10 + ldrb r3, [r5, r2] + mov r0, #0x30 + add r1, r3, #0x0 + ldr r3, [sp, #0x14] + mul r1, r0 + add r7, r3, r1 + ldrh r1, [r7, #0x20] + lsl r1, r1, #0x14 + lsr r1, r1, #0x1e + cmp r1, #0x3 + bne _02082ADA + sub r4, r4, #0x1 + b _02082B10 +_02082ADA: + add r1, r4, #0x0 + mul r1, r0 + ldr r0, [sp, #0x4] + add r3, r0, r1 + mov r0, #0x6 + add r3, #0x10 + mov r12, r0 +_02082AE8: + ldmia r7!, {r0-r1} + stmia r3!, {r0-r1} + mov r0, r12 + sub r0, r0, #0x1 + mov r12, r0 + bne _02082AE8 + ldrb r1, [r5, r2] + add r0, r5, r2 + cmp r1, #0xff + beq _02082B0A +_02082AFC: + ldrb r1, [r0, #0x1] + add r2, r2, #0x1 + strb r1, [r0, #0x0] + ldrb r1, [r5, r2] + add r0, r5, r2 + cmp r1, #0xff + bne _02082AFC +_02082B0A: + sub r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_02082B10: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _02082AB0 +_02082B16: + ldr r0, [sp, #0x10] + cmp r0, #0x0 + ble _02082B7E + ldr r0, [sp, #0xc] + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [sp, #0x4] + bl FUN_02082878 + ldr r1, [sp, #0x8] + blx _s32_div_f + add r0, r4, r1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + add r1, r2, #0x0 + mov r0, #0x30 + mul r1, r0 + ldr r0, [sp, #0x4] + add r4, sp, #0x28 + add r3, r0, r1 + add r3, #0x10 + mov r2, #0x6 +_02082B44: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02082B44 + b _02082B7E +_02082B4E: + cmp r6, #0x4 + bhs _02082B56 + bl ErrorHandling +_02082B56: + mov r6, #0x0 + mov r7, #0x30 +_02082B5A: + ldrb r0, [r5, r6] + ldr r3, [sp, #0x4] + mov r2, #0x6 + add r1, r0, #0x0 + ldr r0, [sp, #0x14] + mul r1, r7 + add r4, r0, r1 + add r3, #0x10 +_02082B6A: + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02082B6A + ldr r0, [sp, #0x4] + add r6, r6, #0x1 + add r0, #0x30 + str r0, [sp, #0x4] + cmp r6, #0x4 + blt _02082B5A +_02082B7E: + add r0, r5, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x14] + bl FUN_02016A18 + add sp, #0x58 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02082B90 +FUN_02082B90: ; 0x02082B90 + push {r3-r7, lr} + sub sp, #0x18 + str r0, [sp, #0x8] + mov r0, #0x1 + add r3, r1, #0x0 + str r0, [sp, #0x0] + mov r0, #0x5a + mov r1, #0x2 + mov r2, #0x0 + bl FUN_02006C98 + str r0, [sp, #0x14] + ldr r1, _02082D10 ; =0x00000121 + ldr r0, [sp, #0x8] + ldrb r0, [r0, r1] + cmp r0, #0x4 + beq _02082BBA + cmp r0, #0x6 + beq _02082BBA + cmp r0, #0x8 + bne _02082BC0 +_02082BBA: + mov r0, #0x0 + str r0, [sp, #0xc] + b _02082BC8 +_02082BC0: + ldr r0, [sp, #0x8] + add r1, r1, #0x6 + ldrb r0, [r0, r1] + str r0, [sp, #0xc] +_02082BC8: + ldr r0, [sp, #0xc] + cmp r0, #0x4 + blt _02082BD0 + b _02082D06 +_02082BD0: + mov r1, #0x30 + mul r1, r0 + ldr r0, [sp, #0x8] + add r7, r0, r1 + ldr r0, [sp, #0xc] + lsl r1, r0, #0x2 + ldr r0, [sp, #0x8] + add r6, r0, r1 +_02082BE0: + ldr r1, _02082D14 ; =0x00000122 + ldr r0, [sp, #0x8] + ldrb r0, [r0, r1] + cmp r0, #0xb + bhi _02082C6E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02082BF6: ; jump table (using 16-bit offset) + .short _02082C0E - _02082BF6 - 2; case 0 + .short _02082C16 - _02082BF6 - 2; case 1 + .short _02082C1E - _02082BF6 - 2; case 2 + .short _02082C26 - _02082BF6 - 2; case 3 + .short _02082C2E - _02082BF6 - 2; case 4 + .short _02082C36 - _02082BF6 - 2; case 5 + .short _02082C3E - _02082BF6 - 2; case 6 + .short _02082C46 - _02082BF6 - 2; case 7 + .short _02082C4E - _02082BF6 - 2; case 8 + .short _02082C56 - _02082BF6 - 2; case 9 + .short _02082C5E - _02082BF6 - 2; case 10 + .short _02082C66 - _02082BF6 - 2; case 11 +_02082C0E: + add r0, r7, #0x0 + add r0, #0x32 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C16: + add r0, r7, #0x0 + add r0, #0x33 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C1E: + add r0, r7, #0x0 + add r0, #0x34 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C26: + add r0, r7, #0x0 + add r0, #0x35 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C2E: + add r0, r7, #0x0 + add r0, #0x36 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C36: + add r0, r7, #0x0 + add r0, #0x37 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C3E: + add r0, r7, #0x0 + add r0, #0x38 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C46: + add r0, r7, #0x0 + add r0, #0x39 + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C4E: + add r0, r7, #0x0 + add r0, #0x3a + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C56: + add r0, r7, #0x0 + add r0, #0x3b + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C5E: + add r0, r7, #0x0 + add r0, #0x3c + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C66: + add r0, r7, #0x0 + add r0, #0x3d + ldrb r2, [r0, #0x0] + b _02082C74 +_02082C6E: + bl ErrorHandling + mov r2, #0x0 +_02082C74: + mov r0, #0x54 + add r1, r2, #0x0 + mul r1, r0 + ldr r0, [sp, #0x14] + add r0, r0, r1 + str r0, [sp, #0x10] + add r0, r6, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_02027740 + add r0, r6, #0x0 + add r0, #0xf8 + ldr r2, [sp, #0x10] + mov r3, #0x51 + ldrsb r2, [r2, r3] + ldr r0, [r0, #0x0] + ldr r1, [r6, #0x0] + bl FUN_02027914 + ldr r0, [sp, #0x10] + mov r5, #0x0 + add r0, #0x50 + ldrb r0, [r0, #0x0] + cmp r0, #0x0 + ble _02082CD2 + ldr r4, [sp, #0x10] +_02082CAA: + ldrb r0, [r4, #0x2] + add r1, r5, #0x0 + str r0, [sp, #0x0] + mov r0, #0x3 + ldrsb r0, [r4, r0] + str r0, [sp, #0x4] + add r0, r6, #0x0 + add r0, #0xf8 + ldrb r2, [r4, #0x0] + ldrb r3, [r4, #0x1] + ldr r0, [r0, #0x0] + bl FUN_02027964 + ldr r0, [sp, #0x10] + add r5, r5, #0x1 + add r0, #0x50 + ldrb r0, [r0, #0x0] + add r4, r4, #0x4 + cmp r5, r0 + blt _02082CAA +_02082CD2: + ldr r1, [sp, #0x10] + add r0, r6, #0x0 + add r1, #0x52 + add r0, #0xf8 + str r1, [sp, #0x10] + ldrb r1, [r1, #0x0] + ldr r0, [r0, #0x0] + bl FUN_0202787C + mov r2, #0x12 + add r0, r6, #0x0 + add r0, #0xf8 + ldr r1, [sp, #0x8] + lsl r2, r2, #0x4 + ldrb r1, [r1, r2] + ldr r0, [r0, #0x0] + bl FUN_020278AC + ldr r0, [sp, #0xc] + add r7, #0x30 + add r0, r0, #0x1 + add r6, r6, #0x4 + str r0, [sp, #0xc] + cmp r0, #0x4 + bge _02082D06 + b _02082BE0 +_02082D06: + ldr r0, [sp, #0x14] + bl FUN_02016A18 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_02082D10: .word 0x00000121 +_02082D14: .word 0x00000122 + + thumb_func_start FUN_02082D18 +FUN_02082D18: ; 0x02082D18 + push {r3-r7, lr} + add r6, r0, #0x0 + mov r7, #0x12 + mov r4, #0x0 + add r5, r6, #0x0 + lsl r7, r7, #0x4 +_02082D24: + add r0, r5, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + bl FUN_02027740 + add r0, r5, #0x0 + add r0, #0xf8 + mov r2, #0x0 + ldr r0, [r0, #0x0] + ldr r1, [r5, #0x0] + mvn r2, r2 + bl FUN_02027914 + add r0, r5, #0x0 + add r0, #0xf8 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_0202787C + add r0, r5, #0x0 + add r0, #0xf8 + ldrb r1, [r6, r7] + ldr r0, [r0, #0x0] + bl FUN_020278AC + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blt _02082D24 + pop {r3-r7, pc} + + thumb_func_start FUN_02082D60 +FUN_02082D60: ; 0x02082D60 + push {r3-r7, lr} + sub sp, #0x20 + add r7, r0, #0x0 + add r6, r1, #0x0 + ldrh r1, [r7, #0x20] + str r2, [sp, #0x10] + ldrh r0, [r7, #0x14] + lsl r1, r1, #0x12 + lsr r1, r1, #0x1e + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + mov r2, #0x0 + bl FUN_02066E74 + mov r1, #0x1 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x2 + str r0, [sp, #0x8] + ldr r0, _02082E60 ; =0x0F0F0F0F + mov r2, #0xa + str r0, [sp, #0xc] + ldrh r1, [r7, #0x14] + add r0, r6, #0x0 + mov r3, #0x20 + bl FUN_02066ACC + mov r4, #0x0 + add r5, r7, #0x0 +_02082D9A: + ldrh r1, [r5, #0xc] + add r0, sp, #0x18 + add r2, sp, #0x1c + strh r1, [r0, #0x6] + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + add r2, #0x2 + bl FUN_02067830 + add r4, r4, #0x1 + add r5, r5, #0x2 + cmp r4, #0x4 + blt _02082D9A + ldr r3, [sp, #0x10] + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc0 + bl FUN_0200A86C + ldrh r1, [r7, #0x16] + add r4, r0, #0x0 + bl FUN_0200A914 + add r5, r0, #0x0 + ldrh r1, [r7, #0x18] + add r0, r4, #0x0 + bl FUN_0200A914 + str r0, [sp, #0x14] + add r0, r6, #0x0 + mov r1, #0x76 + add r2, r5, #0x0 + bl FUN_02067830 + ldr r2, [sp, #0x14] + add r0, r6, #0x0 + mov r1, #0x90 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r4, #0x0 + bl FUN_0200A8B8 + add r2, sp, #0x1c + ldrb r1, [r7, #0x1a] + add r0, sp, #0x18 + add r2, #0x1 + strb r1, [r0, #0x5] + ldrb r1, [r7, #0x1b] + strb r1, [r0, #0x4] + ldrb r1, [r7, #0x1c] + strb r1, [r0, #0x3] + ldrb r1, [r7, #0x1d] + strb r1, [r0, #0x2] + ldrb r1, [r7, #0x1e] + strb r1, [r0, #0x1] + ldrb r1, [r7, #0x1f] + strb r1, [r0, #0x0] + add r0, r6, #0x0 + mov r1, #0x13 + bl FUN_02067830 + add r0, r6, #0x0 + mov r1, #0x14 + add r2, sp, #0x1c + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0x0 + mov r1, #0x15 + add r2, #0x3 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0x0 + mov r1, #0x16 + add r2, #0x2 + bl FUN_02067830 + add r2, sp, #0x18 + add r0, r6, #0x0 + mov r1, #0x17 + add r2, #0x1 + bl FUN_02067830 + add r0, r6, #0x0 + mov r1, #0x18 + add r2, sp, #0x18 + bl FUN_02067830 + add sp, #0x20 + pop {r3-r7, pc} + nop +_02082E60: .word 0x0F0F0F0F + + thumb_func_start FUN_02082E64 +FUN_02082E64: ; 0x02082E64 + push {r4-r7, lr} + sub sp, #0x24 + add r6, r3, #0x0 + add r5, r2, #0x0 + lsl r2, r6, #0x18 + str r0, [sp, #0x10] + add r7, r1, #0x0 + add r0, sp, #0x14 + add r1, r5, #0x0 + lsr r2, r2, #0x18 + ldr r4, [sp, #0x38] + bl FUN_02068B68 + lsl r1, r6, #0x18 + add r0, r5, #0x0 + lsr r1, r1, #0x18 + bl FUN_02068E14 + add r5, r0, #0x0 + cmp r4, #0x0 + beq _02082EB0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02082E98 + bl ErrorHandling +_02082E98: + add r1, sp, #0x14 + ldrh r0, [r1, #0x0] + ldrh r1, [r1, #0x2] + ldr r2, [sp, #0x3c] + ldr r3, [r4, #0x0] + bl FUN_02012420 + add r0, sp, #0x14 + ldrh r1, [r0, #0x4] + str r1, [r4, #0x8] + ldrh r0, [r0, #0x0] + str r0, [r4, #0x4] +_02082EB0: + ldr r0, [sp, #0x48] + ldr r3, [sp, #0x44] + str r0, [sp, #0x0] + str r7, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x40] + add r1, sp, #0x14 + add r3, r3, r5 + bl FUN_020073A0 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02082ED0 +FUN_02082ED0: ; 0x02082ED0 + push {r4-r7, lr} + sub sp, #0x24 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + ldr r0, [sp, #0x38] + add r7, r3, #0x0 + mov r5, #0x0 + str r2, [sp, #0xc] + str r0, [sp, #0x38] + mov r1, #0x1 + ldr r3, [sp, #0x8] + mov r0, #0x5a + add r2, r5, #0x0 + add r4, r5, #0x0 + str r1, [sp, #0x0] + bl FUN_02006C98 + str r0, [sp, #0x14] + mov r0, #0x5a + mov r1, #0x1 + bl LoadFromNARC_7 + lsr r0, r0, #0x3 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + bl FUN_020169D8 + ldr r1, [sp, #0x18] + add r6, r0, #0x0 + ldr r0, [sp, #0x8] + add r1, r1, #0x1 + bl FUN_020169D8 + str r0, [sp, #0x10] + ldr r0, [sp, #0x18] + add r2, r5, #0x0 + cmp r0, #0x0 + ble _0208300A + ldr r3, [sp, #0x14] +_02082F22: + ldrh r0, [r3, #0x4] + mov r12, r0 + lsl r0, r0, #0x14 + lsr r1, r0, #0x1e + ldr r0, [sp, #0x38] + cmp r0, r1 + bne _02083000 + cmp r7, #0x0 + bne _02082F5A + mov r0, r12 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + beq _02082F5A + cmp r0, #0x1 + bls _02082F4E + add r0, r4, #0x1 + lsl r0, r0, #0x18 + add r1, r4, #0x0 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x10] + strb r2, [r0, r1] + b _02083000 +_02082F4E: + add r1, r5, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + strb r2, [r6, r0] + b _02083000 +_02082F5A: + cmp r7, #0x1 + bne _02082F84 + ldrh r0, [r3, #0x4] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1e + beq _02082F84 + cmp r0, #0x1 + bls _02082F78 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + add r1, r4, #0x0 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x10] + strb r2, [r0, r1] + b _02083000 +_02082F78: + add r1, r5, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + strb r2, [r6, r0] + b _02083000 +_02082F84: + cmp r7, #0x2 + bne _02082FAE + ldrh r0, [r3, #0x4] + lsl r0, r0, #0x1a + lsr r0, r0, #0x1e + beq _02082FAE + cmp r0, #0x1 + bls _02082FA2 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + add r1, r4, #0x0 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x10] + strb r2, [r0, r1] + b _02083000 +_02082FA2: + add r1, r5, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + strb r2, [r6, r0] + b _02083000 +_02082FAE: + cmp r7, #0x3 + bne _02082FD8 + ldrh r0, [r3, #0x4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1e + beq _02082FD8 + cmp r0, #0x1 + bls _02082FCC + add r0, r4, #0x1 + lsl r0, r0, #0x18 + add r1, r4, #0x0 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x10] + strb r2, [r0, r1] + b _02083000 +_02082FCC: + add r1, r5, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + strb r2, [r6, r0] + b _02083000 +_02082FD8: + cmp r7, #0x4 + bne _02083000 + ldrh r0, [r3, #0x4] + lsl r0, r0, #0x16 + lsr r0, r0, #0x1e + beq _02083000 + cmp r0, #0x1 + bls _02082FF6 + add r0, r4, #0x1 + lsl r0, r0, #0x18 + add r1, r4, #0x0 + lsr r4, r0, #0x18 + ldr r0, [sp, #0x10] + strb r2, [r0, r1] + b _02083000 +_02082FF6: + add r1, r5, #0x1 + add r0, r5, #0x0 + lsl r1, r1, #0x18 + lsr r5, r1, #0x18 + strb r2, [r6, r0] +_02083000: + ldr r0, [sp, #0x18] + add r2, r2, #0x1 + add r3, #0x8 + cmp r2, r0 + blt _02082F22 +_0208300A: + mov r1, #0xff + ldr r0, [sp, #0x10] + strb r1, [r6, r5] + strb r1, [r0, r4] + cmp r5, #0x2 + bhs _0208301A + bl ErrorHandling +_0208301A: + ldr r2, [sp, #0x4] + mov r3, #0x0 +_0208301E: + ldrb r0, [r6, r3] + ldr r5, [sp, #0x14] + add r3, r3, #0x1 + lsl r1, r0, #0x3 + ldr r0, [sp, #0x14] + ldrh r5, [r5, r1] + add r0, r0, r1 + add r1, r2, #0x0 + add r1, #0xd0 + strh r5, [r1, #0x0] + add r1, r2, #0x0 + ldrh r5, [r0, #0x2] + add r1, #0xd2 + strh r5, [r1, #0x0] + add r1, r2, #0x0 + ldrh r5, [r0, #0x4] + add r1, #0xd4 + strh r5, [r1, #0x0] + ldrh r1, [r0, #0x6] + add r0, r2, #0x0 + add r0, #0xd6 + add r2, #0x8 + strh r1, [r0, #0x0] + cmp r3, #0x2 + blt _0208301E + cmp r4, #0x1 + bhs _02083058 + bl ErrorHandling +_02083058: + ldr r0, [sp, #0x4] + bl FUN_02082878 + add r1, r4, #0x0 + blx _s32_div_f + lsl r0, r1, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x10] + ldrb r0, [r0, r1] + ldr r1, [sp, #0x14] + lsl r2, r0, #0x3 + ldr r0, [sp, #0x14] + add r0, r0, r2 + ldrh r2, [r1, r2] + ldr r1, [sp, #0x4] + add r1, #0xe0 + strh r2, [r1, #0x0] + ldr r1, [sp, #0x4] + ldrh r2, [r0, #0x2] + add r1, #0xe2 + strh r2, [r1, #0x0] + ldr r1, [sp, #0x4] + ldrh r2, [r0, #0x4] + add r1, #0xe4 + strh r2, [r1, #0x0] + ldrh r1, [r0, #0x6] + ldr r0, [sp, #0x4] + ldr r2, _02083110 ; =0x0000011E + add r0, #0xe6 + strh r1, [r0, #0x0] + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x4] + strb r1, [r0, r2] + add r2, r0, #0x0 + add r0, r1, #0x0 + lsl r1, r0, #0x3 + add r2, #0xd0 + ldrh r4, [r2, r1] + add r0, sp, #0x1c + add r3, r2, r1 + strh r4, [r0, #0x0] + ldrh r4, [r3, #0x2] + strh r4, [r0, #0x2] + ldrh r4, [r3, #0x4] + strh r4, [r0, #0x4] + ldrh r4, [r3, #0x6] + strh r4, [r0, #0x6] + ldr r4, [sp, #0x4] + add r4, #0xe0 + ldrh r4, [r4, #0x0] + strh r4, [r2, r1] + ldr r1, [sp, #0x4] + add r1, #0xe2 + ldrh r1, [r1, #0x0] + strh r1, [r3, #0x2] + ldr r1, [sp, #0x4] + add r1, #0xe4 + ldrh r1, [r1, #0x0] + strh r1, [r3, #0x4] + ldr r1, [sp, #0x4] + add r1, #0xe6 + ldrh r1, [r1, #0x0] + strh r1, [r3, #0x6] + ldr r1, [sp, #0x4] + ldrh r2, [r0, #0x0] + add r1, #0xe0 + strh r2, [r1, #0x0] + ldr r1, [sp, #0x4] + ldrh r2, [r0, #0x2] + add r1, #0xe2 + strh r2, [r1, #0x0] + ldr r1, [sp, #0x4] + ldrh r2, [r0, #0x4] + add r1, #0xe4 + strh r2, [r1, #0x0] + ldrh r1, [r0, #0x6] + ldr r0, [sp, #0x4] + add r0, #0xe6 + str r0, [sp, #0x4] + strh r1, [r0, #0x0] + ldr r0, [sp, #0x10] + bl FUN_02016A18 + add r0, r6, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x14] + bl FUN_02016A18 + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_02083110: .word 0x0000011E + + thumb_func_start FUN_02083114 +FUN_02083114: ; 0x02083114 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x18 + blo _02083120 + bl ErrorHandling +_02083120: + mov r0, #0x1a + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _0208312C ; =0x020FBC6C + ldrsb r0, [r0, r1] + pop {r4, pc} + .balign 4 +_0208312C: .word 0x020FBC6C + + thumb_func_start FUN_02083130 +FUN_02083130: ; 0x02083130 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + cmp r5, #0x18 + blo _02083140 + bl ErrorHandling +_02083140: + mov r0, #0x1a + add r1, r5, #0x0 + mul r1, r0 + ldr r0, _02083154 ; =0x020FBC68 + ldrh r0, [r0, r1] + str r0, [r4, #0x0] + ldr r0, _02083158 ; =0x020FBC6A + ldrh r0, [r0, r1] + str r0, [r6, #0x0] + pop {r4-r6, pc} + .balign 4 +_02083154: .word 0x020FBC68 +_02083158: .word 0x020FBC6A + + thumb_func_start FUN_0208315C +FUN_0208315C: ; 0x0208315C + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x18 + blo _02083168 + bl ErrorHandling +_02083168: + add r4, #0x2d + add r0, r4, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02083170 +FUN_02083170: ; 0x02083170 + push {r3-r7, lr} + add r4, r0, #0x0 + add r7, r1, #0x0 + add r5, r2, #0x0 + add r6, r3, #0x0 + cmp r4, #0x18 + blo _02083182 + bl ErrorHandling +_02083182: + cmp r7, #0x4 + bhi _0208319C + add r0, r7, r7 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02083192: ; jump table (using 16-bit offset) + .short _0208319C - _02083192 - 2; case 0 + .short _020831B0 - _02083192 - 2; case 1 + .short _020831C4 - _02083192 - 2; case 2 + .short _020831D8 - _02083192 - 2; case 3 + .short _020831EC - _02083192 - 2; case 4 +_0208319C: + mov r0, #0x1a + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02083200 ; =0x020FBC6E + ldrh r0, [r0, r1] + str r0, [r5, #0x0] + ldr r0, _02083204 ; =0x020FBC70 + ldrb r0, [r0, r1] + str r0, [r6, #0x0] + pop {r3-r7, pc} +_020831B0: + mov r0, #0x1a + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02083208 ; =0x020FBC72 + ldrh r0, [r0, r1] + str r0, [r5, #0x0] + ldr r0, _0208320C ; =0x020FBC74 + ldrb r0, [r0, r1] + str r0, [r6, #0x0] + pop {r3-r7, pc} +_020831C4: + mov r0, #0x1a + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02083210 ; =0x020FBC76 + ldrh r0, [r0, r1] + str r0, [r5, #0x0] + ldr r0, _02083214 ; =0x020FBC78 + ldrb r0, [r0, r1] + str r0, [r6, #0x0] + pop {r3-r7, pc} +_020831D8: + mov r0, #0x1a + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02083218 ; =0x020FBC7A + ldrh r0, [r0, r1] + str r0, [r5, #0x0] + ldr r0, _0208321C ; =0x020FBC7C + ldrb r0, [r0, r1] + str r0, [r6, #0x0] + pop {r3-r7, pc} +_020831EC: + mov r0, #0x1a + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02083220 ; =0x020FBC7E + ldrh r0, [r0, r1] + str r0, [r5, #0x0] + ldr r0, _02083224 ; =0x020FBC80 + ldrb r0, [r0, r1] + str r0, [r6, #0x0] + pop {r3-r7, pc} + .balign 4 +_02083200: .word 0x020FBC6E +_02083204: .word 0x020FBC70 +_02083208: .word 0x020FBC72 +_0208320C: .word 0x020FBC74 +_02083210: .word 0x020FBC76 +_02083214: .word 0x020FBC78 +_02083218: .word 0x020FBC7A +_0208321C: .word 0x020FBC7C +_02083220: .word 0x020FBC7E +_02083224: .word 0x020FBC80 + + thumb_func_start FUN_02083228 +FUN_02083228: ; 0x02083228 + cmp r2, #0x1 + bne _02083230 + mov r0, #0x33 + bx lr +_02083230: + cmp r1, #0x3 + beq _0208323C + cmp r1, #0x5 + beq _0208323C + cmp r1, #0x7 + bne _02083240 +_0208323C: + mov r0, #0x32 + bx lr +_02083240: + cmp r0, #0x3 + bhi _02083264 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02083250: ; jump table (using 16-bit offset) + .short _02083258 - _02083250 - 2; case 0 + .short _0208325C - _02083250 - 2; case 1 + .short _02083260 - _02083250 - 2; case 2 + .short _02083264 - _02083250 - 2; case 3 +_02083258: + mov r0, #0x2e + bx lr +_0208325C: + mov r0, #0x2f + bx lr +_02083260: + mov r0, #0x30 + bx lr +_02083264: + mov r0, #0x31 + bx lr + + thumb_func_start FUN_02083268 +FUN_02083268: ; 0x02083268 + cmp r0, #0x4 + bhi _02083292 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02083278: ; jump table (using 16-bit offset) + .short _02083282 - _02083278 - 2; case 0 + .short _02083286 - _02083278 - 2; case 1 + .short _0208328A - _02083278 - 2; case 2 + .short _0208328E - _02083278 - 2; case 3 + .short _02083292 - _02083278 - 2; case 4 +_02083282: + mov r0, #0x2e + bx lr +_02083286: + mov r0, #0x2f + bx lr +_0208328A: + mov r0, #0x30 + bx lr +_0208328E: + mov r0, #0x31 + bx lr +_02083292: + mov r0, #0x33 + bx lr + .balign 4 + + thumb_func_start FUN_02083298 +FUN_02083298: ; 0x02083298 + ldr r3, _020832A0 ; =FUN_020832A4 + mov r1, #0x2 + bx r3 + nop +_020832A0: .word FUN_020832A4 + + thumb_func_start FUN_020832A4 +FUN_020832A4: ; 0x020832A4 + cmp r1, #0x5 + bne _020832AC + mov r0, #0x34 + bx lr +_020832AC: + cmp r0, #0x4 + bhi _020832D6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_020832BC: ; jump table (using 16-bit offset) + .short _020832C6 - _020832BC - 2; case 0 + .short _020832CA - _020832BC - 2; case 1 + .short _020832CE - _020832BC - 2; case 2 + .short _020832D2 - _020832BC - 2; case 3 + .short _020832D6 - _020832BC - 2; case 4 +_020832C6: + mov r0, #0x29 + bx lr +_020832CA: + mov r0, #0x2a + bx lr +_020832CE: + mov r0, #0x2b + bx lr +_020832D2: + mov r0, #0x2c + bx lr +_020832D6: + mov r0, #0x2d + bx lr + .balign 4 + + thumb_func_start FUN_020832DC +FUN_020832DC: ; 0x020832DC + mov r1, #0x3 + sub r0, r1, r0 + bx lr + .balign 4 + + thumb_func_start FUN_020832E4 +FUN_020832E4: ; 0x020832E4 + mov r1, #0x3 + sub r0, r1, r0 + bx lr + .balign 4 + + thumb_func_start FUN_020832EC +FUN_020832EC: ; 0x020832EC + ldr r1, _02083304 ; =0x00000121 + ldrb r0, [r0, r1] + cmp r0, #0x3 + beq _020832FC + cmp r0, #0x5 + beq _020832FC + cmp r0, #0x7 + bne _02083300 +_020832FC: + mov r0, #0x1 + bx lr +_02083300: + mov r0, #0x0 + bx lr + .balign 4 +_02083304: .word 0x00000121 + + thumb_func_start FUN_02083308 +FUN_02083308: ; 0x02083308 + push {r4-r5} + sub sp, #0x50 + ldr r5, _02083368 ; =0x020FBC18 + add r4, sp, #0x0 + mov r3, #0x28 +_02083312: + ldrh r2, [r5, #0x0] + add r5, r5, #0x2 + strh r2, [r4, #0x0] + add r4, r4, #0x2 + sub r3, r3, #0x1 + bne _02083312 + mov r3, #0xc + mul r3, r1 + add r1, r0, r3 + mov r3, #0x4a + lsl r3, r3, #0x2 + add r4, r3, #0x0 + add r4, #0x49 + ldrb r4, [r0, r4] + mov r2, #0x0 + ldrsh r1, [r1, r3] + cmp r4, #0x1 + bne _0208333A + add r4, sp, #0x40 + b _02083344 +_0208333A: + sub r3, #0x8 + ldrb r0, [r0, r3] + add r4, sp, #0x0 + lsl r0, r0, #0x4 + add r4, r4, r0 +_02083344: + mov r3, #0x0 +_02083346: + ldrh r0, [r4, #0x0] + cmp r1, r0 + bge _02083354 + add sp, #0x50 + add r0, r2, #0x0 + pop {r4-r5} + bx lr +_02083354: + add r3, r3, #0x1 + add r2, r2, #0x1 + add r4, r4, #0x2 + cmp r3, #0x8 + blt _02083346 + add r0, r2, #0x0 + add sp, #0x50 + pop {r4-r5} + bx lr + nop +_02083368: .word 0x020FBC18 + + thumb_func_start FUN_0208336C +FUN_0208336C: ; 0x0208336C + push {r4-r5} + sub sp, #0x10 + ldr r5, _020833CC ; =0x020FBC08 + add r4, sp, #0x0 + mov r3, #0xf +_02083376: + ldrb r2, [r5, #0x0] + add r5, r5, #0x1 + strb r2, [r4, #0x0] + add r4, r4, #0x1 + sub r3, r3, #0x1 + bne _02083376 + mov r2, #0xc + mul r2, r1 + ldr r3, _020833D0 ; =0x0000012A + add r1, r0, r2 + ldrsh r1, [r1, r3] + cmp r1, #0x0 + bne _02083398 + add sp, #0x10 + mov r0, #0x0 + pop {r4-r5} + bx lr +_02083398: + add r2, r3, #0x0 + add r2, #0x47 + ldrb r2, [r0, r2] + cmp r2, #0x1 + bne _020833A6 + add r4, sp, #0xc + b _020833B2 +_020833A6: + sub r3, #0xa + ldrb r2, [r0, r3] + add r4, sp, #0x0 + lsl r0, r2, #0x1 + add r0, r2, r0 + add r4, r4, r0 +_020833B2: + mov r0, #0x1 + mov r3, #0x0 +_020833B6: + ldrb r2, [r4, r3] + cmp r1, r2 + ble _020833C4 + add r3, r3, #0x1 + add r0, r0, #0x1 + cmp r3, #0x3 + blt _020833B6 +_020833C4: + add sp, #0x10 + pop {r4-r5} + bx lr + nop +_020833CC: .word 0x020FBC08 +_020833D0: .word 0x0000012A + + thumb_func_start FUN_020833D4 +FUN_020833D4: ; 0x020833D4 + push {r3, lr} + cmp r0, #0x0 + bne _020833EE + mov r0, #0x1 + bl FUN_02002B60 + mov r0, #0x3 + bl FUN_02002B7C + mov r0, #0x1 + bl FUN_02002BB8 + pop {r3, pc} +_020833EE: + mov r0, #0x1 + bl FUN_02002B7C + mov r0, #0x0 + bl FUN_02002B60 + mov r0, #0x0 + bl FUN_02002BB8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02083404 +FUN_02083404: ; 0x02083404 + push {r3, lr} + mov r0, #0x0 + bl FUN_02002B60 + mov r0, #0x0 + bl FUN_02002B7C + mov r0, #0x0 + bl FUN_02002BB8 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_0208341C +FUN_0208341C: ; 0x0208341C + push {r3, lr} + cmp r1, #0x4 + bhi _0208344C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0208342E: ; jump table (using 16-bit offset) + .short _02083438 - _0208342E - 2; case 0 + .short _0208343C - _0208342E - 2; case 1 + .short _02083440 - _0208342E - 2; case 2 + .short _02083444 - _0208342E - 2; case 3 + .short _02083448 - _0208342E - 2; case 4 +_02083438: + add r0, #0x7a + pop {r3, pc} +_0208343C: + add r0, #0x7e + pop {r3, pc} +_02083440: + add r0, #0x82 + pop {r3, pc} +_02083444: + add r0, #0x86 + pop {r3, pc} +_02083448: + add r0, #0x8a + pop {r3, pc} +_0208344C: + bl ErrorHandling + mov r0, #0x7a + pop {r3, pc} + + thumb_func_start FUN_02083454 +FUN_02083454: ; 0x02083454 + push {r4-r5, lr} + sub sp, #0xc + add r5, r0, #0x0 + mov r4, #0x0 + cmp r5, #0x3 + beq _02083464 + cmp r1, #0x1 + bne _02083474 +_02083464: + bl FUN_0201B9EC + mov r1, #0xc + blx _s32_div_f + add sp, #0xc + add r0, r1, #0x0 + pop {r4-r5, pc} +_02083474: + add r0, sp, #0x0 + add r1, r4, #0x0 + mov r2, #0xc + blx MI_CpuFill8 + mov r1, #0x2 + add r0, sp, #0x0 + strb r1, [r0, #0x0] + mov r1, #0x3 + strb r1, [r0, #0x1] + mov r1, #0x4 + add r4, r4, #0x3 + strb r1, [r0, #0x2] + cmp r5, #0x1 + blt _020834A6 + mov r0, #0x0 + add r2, sp, #0x0 + strb r0, [r2, r4] + mov r1, #0x1 + add r0, r4, #0x1 + strb r1, [r2, r0] + add r1, r4, #0x2 + mov r0, #0x5 + add r4, r4, #0x3 + strb r0, [r2, r1] +_020834A6: + cmp r5, #0x2 + blt _020834BE + mov r0, #0x6 + add r2, sp, #0x0 + strb r0, [r2, r4] + mov r1, #0x7 + add r0, r4, #0x1 + strb r1, [r2, r0] + add r1, r4, #0x2 + mov r0, #0x8 + add r4, r4, #0x3 + strb r0, [r2, r1] +_020834BE: + bl FUN_0201B9EC + add r1, r4, #0x0 + blx _s32_div_f + add r0, sp, #0x0 + ldrb r0, [r0, r1] + add sp, #0xc + pop {r4-r5, pc} + + thumb_func_start FUN_020834D0 +FUN_020834D0: ; 0x020834D0 + ldr r3, _020834DC ; =FUN_0202D8D0 + add r2, r0, #0x0 + ldr r0, _020834E0 ; =0x020FBED8 + mov r1, #0x10 + bx r3 + nop +_020834DC: .word FUN_0202D8D0 +_020834E0: .word 0x020FBED8 + + thumb_func_start FUN_020834E4 +FUN_020834E4: ; 0x020834E4 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x1 + lsl r0, r0, #0xa + add r4, r1, #0x0 + cmp r2, r0 + blt _020834F6 + bl ErrorHandling +_020834F6: + ldr r0, _02083500 ; =0x00000985 + add r1, r4, r0 + lsl r0, r5, #0xa + add r0, r1, r0 + pop {r3-r5, pc} + .balign 4 +_02083500: .word 0x00000985 + + thumb_func_start FUN_02083504 +FUN_02083504: ; 0x02083504 + mov r0, #0xa + bx lr + + thumb_func_start FUN_02083508 +FUN_02083508: ; 0x02083508 + mov r0, #0x8 + bx lr + + thumb_func_start FUN_0208350C +FUN_0208350C: ; 0x0208350C + bx lr + .balign 4 + + thumb_func_start FUN_02083510 +FUN_02083510: ; 0x02083510 + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x17 + lsl r0, r0, #0x4 + add r6, r1, #0x0 + ldrb r1, [r3, r0] + str r2, [sp, #0x0] + cmp r1, #0x0 + bne _0208352C + sub r0, r0, #0x4 + ldr r1, [r3, r0] + ldr r0, _02083590 ; =0x000004FC + add r4, r1, r0 + b _0208355E +_0208352C: + cmp r1, #0x1 + bne _0208353A + sub r0, r0, #0x4 + ldr r1, [r3, r0] + ldr r0, _02083594 ; =0x00001158 + add r4, r1, r0 + b _0208355E +_0208353A: + cmp r1, #0x2 + bne _0208354A + sub r0, r0, #0x4 + ldr r1, [r3, r0] + mov r0, #0xc3 + lsl r0, r0, #0x4 + add r4, r1, r0 + b _0208355E +_0208354A: + cmp r1, #0x3 + bne _02083558 + sub r0, r0, #0x4 + ldr r1, [r3, r0] + ldr r0, _02083598 ; =0x0000085C + add r4, r1, r0 + b _0208355E +_02083558: + bl ErrorHandling + pop {r3-r7, pc} +_0208355E: + mov r0, #0x2 + lsl r0, r0, #0x8 + cmp r6, r0 + ble _0208356A + bl ErrorHandling +_0208356A: + ldr r0, _0208359C ; =0x00000A11 + add r7, r4, r0 + ldrb r0, [r7, r5] + cmp r0, #0x0 + beq _02083578 + bl ErrorHandling +_02083578: + mov r1, #0x21 + lsl r1, r1, #0x4 + add r2, r4, r1 + lsl r1, r5, #0x9 + add r1, r2, r1 + ldr r0, [sp, #0x0] + add r2, r6, #0x0 + blx MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r7, r5] + pop {r3-r7, pc} + .balign 4 +_02083590: .word 0x000004FC +_02083594: .word 0x00001158 +_02083598: .word 0x0000085C +_0208359C: .word 0x00000A11 + + thumb_func_start FUN_020835A0 +FUN_020835A0: ; 0x020835A0 + mov r0, #0x5b + lsl r0, r0, #0x2 + ldr r0, [r3, r0] + ldr r3, _020835AC ; =0x0223D1CD + add r1, r2, #0x0 + bx r3 + .balign 4 +_020835AC: .word 0x0223D1CD + + thumb_func_start FUN_020835B0 +FUN_020835B0: ; 0x020835B0 + push {r3-r6, lr} + sub sp, #0x14 + add r5, r1, #0x0 + mov r1, #0x61 + add r6, r0, #0x0 + add r4, r3, #0x0 + lsl r1, r1, #0x2 + add r0, r2, #0x0 + add r2, r4, r1 + lsl r1, r6, #0x8 + add r1, r2, r1 + add r2, r5, #0x0 + blx MI_CpuCopy8 + ldr r2, _02083628 ; =0x00000584 + ldrb r0, [r4, r2] + add r0, r0, #0x1 + strb r0, [r4, r2] + ldr r0, _0208362C ; =0x00000127 + ldrb r2, [r4, r2] + ldrb r1, [r4, r0] + cmp r2, r1 + blo _02083622 + mov r3, #0x0 + cmp r1, #0x0 + ble _020835FE + add r0, #0x5d + add r5, r4, r0 + mov r0, #0x1 + lsl r0, r0, #0x8 + add r2, r0, #0x0 + add r6, sp, #0x4 + add r2, #0x27 +_020835F2: + stmia r6!, {r5} + ldrb r1, [r4, r2] + add r3, r3, #0x1 + add r5, r5, r0 + cmp r3, r1 + blt _020835F2 +_020835FE: + add r0, sp, #0x4 + add r2, sp, #0x0 + bl FUN_02083660 + mov r1, #0x47 + lsl r1, r1, #0x2 + strb r0, [r4, r1] + add r0, sp, #0x0 + ldrb r2, [r0, #0x0] + add r0, r1, #0x1 + strb r2, [r4, r0] + ldrb r0, [r4, r1] + lsl r2, r0, #0x2 + add r0, sp, #0x4 + ldr r0, [r0, r2] + ldrb r2, [r0, #0x2] + add r0, r1, #0x6 + strb r2, [r4, r0] +_02083622: + add sp, #0x14 + pop {r3-r6, pc} + nop +_02083628: .word 0x00000584 +_0208362C: .word 0x00000127 + + thumb_func_start FUN_02083630 +FUN_02083630: ; 0x02083630 + push {r3, lr} + ldr r1, _0208365C ; =0x00000125 + add r3, sp, #0x0 + ldrb r2, [r0, r1] + strb r2, [r3, #0x0] + sub r2, r1, #0x2 + ldrb r2, [r0, r2] + sub r1, r1, #0x3 + strb r2, [r3, #0x1] + ldrb r0, [r0, r1] + add r1, sp, #0x0 + mov r2, #0x4 + strb r0, [r3, #0x2] + mov r0, #0x1a + bl FUN_02030ADC + cmp r0, #0x1 + bne _02083658 + mov r0, #0x1 + pop {r3, pc} +_02083658: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0208365C: .word 0x00000125 + + thumb_func_start FUN_02083660 +FUN_02083660: ; 0x02083660 + push {r4-r7} + mov r5, #0x0 + add r4, r5, #0x0 + cmp r1, #0x0 + ble _02083684 + add r6, r0, #0x0 +_0208366C: + lsl r3, r5, #0x2 + ldr r3, [r0, r3] + ldr r7, [r6, #0x0] + ldrb r3, [r3, #0x0] + ldrb r7, [r7, #0x0] + cmp r3, r7 + bhs _0208367C + add r5, r4, #0x0 +_0208367C: + add r4, r4, #0x1 + add r6, r6, #0x4 + cmp r4, r1 + blt _0208366C +_02083684: + lsl r1, r5, #0x2 + ldr r0, [r0, r1] + ldrb r0, [r0, #0x0] + strb r0, [r2, #0x0] + add r0, r5, #0x0 + pop {r4-r7} + bx lr + .balign 4 + + thumb_func_start FUN_02083694 +FUN_02083694: ; 0x02083694 + push {r3-r5, lr} + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_020669BC + add r2, r0, #0x0 + ldrb r1, [r5, r2] + add r0, r5, #0x0 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + blx MI_CpuCopy8 + ldr r0, _020836B8 ; =0x00000584 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r5, pc} + nop +_020836B8: .word 0x00000584 + + thumb_func_start FUN_020836BC +FUN_020836BC: ; 0x020836BC + push {r3-r7, lr} + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_020669BC + add r4, r0, #0x0 + mov r0, #0x14 + add r1, r4, #0x1 + bl FUN_02016998 + add r5, r0, #0x0 + add r0, r7, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + blx MI_CpuCopy8 + mov r0, #0x1b + add r1, r5, #0x0 + add r2, r4, #0x1 + strb r6, [r5, r4] + bl FUN_02030ADC + cmp r0, #0x1 + bne _020836F0 + mov r4, #0x1 + b _020836F2 +_020836F0: + mov r4, #0x0 +_020836F2: + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_020836FC +FUN_020836FC: ; 0x020836FC + push {r3-r7, lr} + sub sp, #0x8 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + bl FUN_020669BC + mov r7, #0x0 + ldr r4, [sp, #0x4] + add r6, r0, #0x0 + add r5, r7, #0x0 +_02083710: + ldr r0, [sp, #0x0] + ldr r1, [r4, #0x0] + add r0, r0, r5 + add r2, r6, #0x0 + blx MI_CpuCopy8 + add r7, r7, #0x1 + add r4, r4, #0x4 + add r5, r5, r6 + cmp r7, #0x4 + blt _02083710 + ldr r1, _02083738 ; =0x00000584 + ldr r0, [sp, #0x4] + ldrb r0, [r0, r1] + add r2, r0, #0x1 + ldr r0, [sp, #0x4] + strb r2, [r0, r1] + add sp, #0x8 + pop {r3-r7, pc} + nop +_02083738: .word 0x00000584 + + thumb_func_start FUN_0208373C +FUN_0208373C: ; 0x0208373C + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r5, r1, #0x0 + bl FUN_020669BC + add r6, r0, #0x0 + lsl r0, r6, #0x2 + str r0, [sp, #0x0] + ldr r0, _02083788 ; =0x00000585 + mov r7, #0x0 + add r0, r4, r0 + str r0, [sp, #0x4] + add r4, r7, #0x0 +_02083758: + ldr r1, [sp, #0x4] + ldr r0, [r5, #0x0] + add r1, r1, r4 + add r2, r6, #0x0 + blx MI_CpuCopy8 + add r7, r7, #0x1 + add r4, r4, r6 + add r5, r5, #0x4 + cmp r7, #0x4 + blt _02083758 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + mov r0, #0x1c + bl FUN_02030A78 + cmp r0, #0x1 + bne _02083782 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02083782: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02083788: .word 0x00000585 + + thumb_func_start FUN_0208378C +FUN_0208378C: ; 0x0208378C + push {r3-r5, lr} + add r0, r2, #0x0 + add r2, #0x30 + ldrb r1, [r2, #0x0] + add r4, r3, #0x0 + add r5, r4, #0x0 + mov r2, #0x30 + add r3, r1, #0x0 + add r5, #0x10 + mul r3, r2 + add r1, r5, r3 + blx MI_CpuCopy8 + ldr r0, _020837B0 ; =0x00000584 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r5, pc} + .balign 4 +_020837B0: .word 0x00000584 + + thumb_func_start FUN_020837B4 +FUN_020837B4: ; 0x020837B4 + push {r4-r6, lr} + add r5, r1, #0x0 + mov r0, #0x14 + mov r1, #0x31 + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + mov r2, #0x30 + blx MI_CpuCopy8 + add r0, r4, #0x0 + add r0, #0x30 + strb r5, [r0, #0x0] + mov r0, #0x1d + add r1, r4, #0x0 + mov r2, #0x31 + bl FUN_02030ADC + cmp r0, #0x1 + bne _020837E6 + mov r5, #0x1 + b _020837E8 +_020837E6: + mov r5, #0x0 +_020837E8: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020837F4 +FUN_020837F4: ; 0x020837F4 + push {r3-r7, lr} + add r5, r3, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0x0] + mov r4, #0x0 + add r5, #0xd0 + mov r7, #0x8 +_02083802: + lsl r0, r4, #0x3 + add r0, r6, r0 + add r1, r5, #0x0 + add r2, r7, #0x0 + blx MI_CpuCopy8 + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, #0x3 + blt _02083802 + ldrb r2, [r6, #0x18] + ldr r1, _0208382C ; =0x0000011E + ldr r0, [sp, #0x0] + strb r2, [r0, r1] + ldr r1, _02083830 ; =0x00000584 + ldrb r0, [r0, r1] + add r2, r0, #0x1 + ldr r0, [sp, #0x0] + strb r2, [r0, r1] + pop {r3-r7, pc} + nop +_0208382C: .word 0x0000011E +_02083830: .word 0x00000584 + + thumb_func_start FUN_02083834 +FUN_02083834: ; 0x02083834 + push {r3-r7, lr} + str r0, [sp, #0x0] + mov r0, #0x14 + mov r1, #0x19 + add r5, r2, #0x0 + bl FUN_02016998 + add r6, r0, #0x0 + mov r4, #0x0 + mov r7, #0x8 +_02083848: + lsl r1, r4, #0x3 + add r0, r5, #0x0 + add r1, r6, r1 + add r2, r7, #0x0 + blx MI_CpuCopy8 + add r4, r4, #0x1 + add r5, #0x8 + cmp r4, #0x3 + blt _02083848 + ldr r1, _02083884 ; =0x0000011E + ldr r0, [sp, #0x0] + mov r2, #0x19 + ldrb r0, [r0, r1] + add r1, r6, #0x0 + strb r0, [r6, #0x18] + mov r0, #0x1e + bl FUN_02030ADC + cmp r0, #0x1 + bne _02083876 + mov r4, #0x1 + b _02083878 +_02083876: + mov r4, #0x0 +_02083878: + add r0, r6, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + pop {r3-r7, pc} + nop +_02083884: .word 0x0000011E + + thumb_func_start FUN_02083888 +FUN_02083888: ; 0x02083888 + push {r3-r7, lr} + add r5, r2, #0x0 + ldrb r0, [r5, #0x0] + add r6, r3, #0x0 + add r4, r6, #0x0 + add r4, #0xe8 + lsl r7, r0, #0x2 + ldr r0, [r4, r7] + bl FUN_02021A4C + ldr r0, [r4, r7] + add r1, r5, #0x4 + bl FUN_02021E28 + ldr r0, _020838B0 ; =0x00000584 + ldrb r1, [r6, r0] + add r1, r1, #0x1 + strb r1, [r6, r0] + pop {r3-r7, pc} + nop +_020838B0: .word 0x00000584 + + thumb_func_start FUN_020838B4 +FUN_020838B4: ; 0x020838B4 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r1, #0x0 + add r0, r2, #0x0 + add r1, sp, #0x0 + mov r2, #0x8 + bl FUN_02021EF0 + mov r0, #0x14 + add r1, r0, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, sp, #0x0 + add r1, r4, #0x4 + mov r2, #0x10 + blx MI_CpuCopy8 + strb r5, [r4, #0x0] + mov r0, #0x10 + strb r0, [r4, #0x1] + mov r0, #0x0 + strb r0, [r4, #0x2] + strb r0, [r4, #0x3] + mov r0, #0x1f + add r1, r4, #0x0 + mov r2, #0x14 + bl FUN_02030ADC + cmp r0, #0x1 + bne _020838F6 + mov r5, #0x1 + b _020838F8 +_020838F6: + mov r5, #0x0 +_020838F8: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02083904 +FUN_02083904: ; 0x02083904 + push {r3-r5, lr} + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02026FE4 + add r2, r0, #0x0 + ldrb r1, [r5, r2] + add r0, r5, #0x0 + lsl r1, r1, #0x2 + add r1, r4, r1 + add r1, #0xf8 + ldr r1, [r1, #0x0] + blx MI_CpuCopy8 + ldr r0, _0208392C ; =0x00000584 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r5, pc} + nop +_0208392C: .word 0x00000584 + + thumb_func_start FUN_02083930 +FUN_02083930: ; 0x02083930 + push {r3-r7, lr} + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02026FE4 + add r4, r0, #0x0 + mov r0, #0x14 + add r1, r4, #0x1 + bl FUN_02016998 + add r5, r0, #0x0 + add r0, r7, #0x0 + add r1, r5, #0x0 + add r2, r4, #0x0 + blx MI_CpuCopy8 + mov r0, #0x20 + add r1, r5, #0x0 + add r2, r4, #0x1 + strb r6, [r5, r4] + bl FUN_02030ADC + cmp r0, #0x1 + bne _02083964 + mov r4, #0x1 + b _02083966 +_02083964: + mov r4, #0x0 +_02083966: + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02083970 +FUN_02083970: ; 0x02083970 + push {r3-r7, lr} + sub sp, #0x8 + str r2, [sp, #0x0] + str r3, [sp, #0x4] + bl FUN_02026FE4 + add r6, r0, #0x0 + mov r0, #0x1 + lsl r1, r6, #0x2 + lsl r0, r0, #0xa + cmp r1, r0 + blt _0208398C + bl ErrorHandling +_0208398C: + mov r7, #0x0 + ldr r4, [sp, #0x4] + add r5, r7, #0x0 +_02083992: + add r1, r4, #0x0 + ldr r0, [sp, #0x0] + add r1, #0xf8 + ldr r1, [r1, #0x0] + add r0, r0, r5 + add r2, r6, #0x0 + blx MI_CpuCopy8 + add r7, r7, #0x1 + add r4, r4, #0x4 + add r5, r5, r6 + cmp r7, #0x4 + blt _02083992 + ldr r1, _020839BC ; =0x00000584 + ldr r0, [sp, #0x4] + ldrb r0, [r0, r1] + add r2, r0, #0x1 + ldr r0, [sp, #0x4] + strb r2, [r0, r1] + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_020839BC: .word 0x00000584 + + thumb_func_start FUN_020839C0 +FUN_020839C0: ; 0x020839C0 + push {r3-r7, lr} + sub sp, #0x8 + add r4, r0, #0x0 + add r5, r1, #0x0 + bl FUN_02026FE4 + add r6, r0, #0x0 + mov r1, #0x1 + lsl r0, r6, #0x2 + lsl r1, r1, #0xa + str r0, [sp, #0x0] + cmp r0, r1 + blt _020839DE + bl ErrorHandling +_020839DE: + ldr r0, _02083A18 ; =0x00000585 + mov r7, #0x0 + add r0, r4, r0 + str r0, [sp, #0x4] + add r4, r7, #0x0 +_020839E8: + ldr r1, [sp, #0x4] + ldr r0, [r5, #0x0] + add r1, r1, r4 + add r2, r6, #0x0 + blx MI_CpuCopy8 + add r7, r7, #0x1 + add r4, r4, r6 + add r5, r5, #0x4 + cmp r7, #0x4 + blt _020839E8 + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + mov r0, #0x21 + bl FUN_02030A78 + cmp r0, #0x1 + bne _02083A12 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02083A12: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 +_02083A18: .word 0x00000585 + + thumb_func_start FUN_02083A1C +FUN_02083A1C: ; 0x02083A1C + push {r4, lr} + add r4, r1, #0x0 + ldr r1, _02083A30 ; =0x000019A0 + add r0, r2, #0x0 + add r1, r3, r1 + add r2, r4, #0x0 + blx MI_CpuCopy8 + pop {r4, pc} + nop +_02083A30: .word 0x000019A0 + + thumb_func_start FUN_02083A34 +FUN_02083A34: ; 0x02083A34 + push {r3, lr} + add r3, r0, #0x0 + ldrb r0, [r3, #0x16] + cmp r0, #0x0 + bne _02083A44 + str r1, [r3, #0x0] + mov r0, #0x1 + pop {r3, pc} +_02083A44: + ldrb r2, [r3, #0x14] + ldrb r0, [r3, #0x15] + cmp r2, r0 + beq _02083A50 + mov r0, #0x0 + pop {r3, pc} +_02083A50: + str r1, [r3, #0x8] + add r3, #0x8 + mov r0, #0x22 + add r1, r3, #0x0 + mov r2, #0x8 + bl FUN_02030ADC + cmp r0, #0x1 + bne _02083A66 + mov r0, #0x1 + pop {r3, pc} +_02083A66: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02083A6C +FUN_02083A6C: ; 0x02083A6C + ldrb r2, [r2, #0x4] + add r1, r3, r0 + ldr r0, _02083A78 ; =0x000019B0 + strb r2, [r1, r0] + bx lr + nop +_02083A78: .word 0x000019B0 + + thumb_func_start FUN_02083A7C +FUN_02083A7C: ; 0x02083A7C + push {r3, lr} + add r2, r0, #0x0 + ldrb r0, [r2, #0x16] + cmp r0, #0x0 + bne _02083A8C + strb r1, [r2, #0x10] + mov r0, #0x1 + pop {r3, pc} +_02083A8C: + strb r1, [r2, #0xc] + add r2, #0x8 + add r1, r2, #0x0 + mov r0, #0x23 + mov r2, #0x8 + bl FUN_02030ADC + cmp r0, #0x1 + bne _02083AA2 + mov r0, #0x1 + pop {r3, pc} +_02083AA2: + mov r0, #0x0 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02083AA8 +FUN_02083AA8: ; 0x02083AA8 + push {r3-r5, lr} + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02029EC4 + add r2, r0, #0x0 + ldrb r1, [r5, r2] + add r0, r5, #0x0 + lsl r1, r1, #0x2 + add r3, r4, r1 + mov r1, #0x57 + lsl r1, r1, #0x2 + ldr r1, [r3, r1] + blx MI_CpuCopy8 + ldr r0, _02083AD0 ; =0x00000584 + ldrb r1, [r4, r0] + add r1, r1, #0x1 + strb r1, [r4, r0] + pop {r3-r5, pc} + .balign 4 +_02083AD0: .word 0x00000584 + + thumb_func_start FUN_02083AD4 +FUN_02083AD4: ; 0x02083AD4 + push {r3-r7, lr} + add r4, r0, #0x0 + add r7, r1, #0x0 + add r6, r2, #0x0 + bl FUN_02029EC4 + add r5, r0, #0x0 + ldr r0, _02083B0C ; =0x00000585 + add r4, r4, r0 + cmp r6, #0x0 + beq _02083AF4 + add r0, r6, #0x0 + add r1, r4, #0x0 + add r2, r5, #0x0 + blx MI_CpuCopy8 +_02083AF4: + mov r0, #0x24 + add r1, r4, #0x0 + add r2, r5, #0x1 + strb r7, [r4, r5] + bl FUN_02030A78 + cmp r0, #0x1 + bne _02083B08 + mov r0, #0x1 + pop {r3-r7, pc} +_02083B08: + mov r0, #0x0 + pop {r3-r7, pc} + .balign 4 +_02083B0C: .word 0x00000585 + + thumb_func_start FUN_02083B10 +FUN_02083B10: ; 0x02083B10 + push {r3-r6} + ldrb r1, [r2, #0x6] + ldrb r4, [r2, #0x0] + mov r5, #0x42 + add r0, r3, r1 + lsl r5, r5, #0x2 + strb r4, [r0, r5] + ldrb r6, [r2, #0x1] + add r4, r5, #0x4 + strb r6, [r0, r4] + add r4, r5, #0x0 + ldrb r6, [r2, #0x2] + add r4, #0x8 + add r5, #0xc + strb r6, [r0, r4] + lsl r0, r1, #0x1 + ldrh r2, [r2, #0x4] + add r0, r3, r0 + strh r2, [r0, r5] + ldr r0, _02083B44 ; =0x00000584 + ldrb r1, [r3, r0] + add r1, r1, #0x1 + strb r1, [r3, r0] + pop {r3-r6} + bx lr + nop +_02083B44: .word 0x00000584 + + thumb_func_start FUN_02083B48 +FUN_02083B48: ; 0x02083B48 + push {r4-r6, lr} + add r5, r1, #0x0 + mov r0, #0x14 + mov r1, #0x7 + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r4, #0x0 + mov r2, #0x6 + blx MI_CpuCopy8 + mov r0, #0x25 + add r1, r4, #0x0 + mov r2, #0x7 + strb r5, [r4, #0x6] + bl FUN_02030ADC + cmp r0, #0x1 + bne _02083B76 + mov r5, #0x1 + b _02083B78 +_02083B76: + mov r5, #0x0 +_02083B78: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02083B84 +FUN_02083B84: ; 0x02083B84 + ldr r3, _02083B90 ; =FUN_0202D8D0 + add r2, r0, #0x0 + ldr r0, _02083B94 ; =0x020FBF98 + mov r1, #0xb + bx r3 + nop +_02083B90: .word FUN_0202D8D0 +_02083B94: .word 0x020FBF98 + + thumb_func_start FUN_02083B98 +FUN_02083B98: ; 0x02083B98 + cmp r0, #0xc + bne _02083BA0 + mov r0, #0xc + bx lr +_02083BA0: + cmp r0, #0x6 + bhs _02083BA8 + add r0, r0, #0x6 + bx lr +_02083BA8: + sub r0, r0, #0x6 + bx lr + + thumb_func_start FUN_02083BAC +FUN_02083BAC: ; 0x02083BAC + push {r4-r6, lr} + add r3, #0x84 + add r5, r0, #0x0 + add r6, r2, #0x0 + ldr r4, [r3, #0x0] + bl FUN_02031190 + cmp r5, r0 + beq _02083C1A + ldr r0, _02083C1C ; =0x0000221C + mov r2, #0x59 + ldr r0, [r4, r0] + add r1, r6, #0x0 + lsl r2, r2, #0x4 + blx memcpy + ldr r0, [r4, #0x58] + add r0, r0, #0x1 + str r0, [r4, #0x58] + bl FUN_0206B8A4 + mov r1, #0x59 + ldr r2, [r4, #0x58] + lsl r1, r1, #0x4 + mul r1, r2 + cmp r1, r0 + blt _02083C06 + bl FUN_02031190 + cmp r0, #0x1 + bne _02083BF6 + add r0, r4, #0x0 + mov r1, #0x1b + mov r2, #0x0 + bl FUN_0222F440 + b _02083C14 +_02083BF6: + bl FUN_02031190 + ldr r1, _02083C20 ; =0x00002218 + ldr r2, [r4, #0x50] + ldr r1, [r4, r1] + bl FUN_0222F480 + b _02083C14 +_02083C06: + bl FUN_02031190 + ldr r1, _02083C20 ; =0x00002218 + ldr r2, [r4, #0x50] + ldr r1, [r4, r1] + bl FUN_0222F480 +_02083C14: + ldr r0, [r4, #0x50] + add r0, r0, #0x1 + str r0, [r4, #0x50] +_02083C1A: + pop {r4-r6, pc} + .balign 4 +_02083C1C: .word 0x0000221C +_02083C20: .word 0x00002218 + + thumb_func_start FUN_02083C24 +FUN_02083C24: ; 0x02083C24 + push {r4-r6, lr} + add r3, #0x84 + add r5, r0, #0x0 + add r6, r2, #0x0 + ldr r4, [r3, #0x0] + bl FUN_02031190 + cmp r5, r0 + beq _02083C40 + ldrb r0, [r6, #0x0] + bl FUN_02083B98 + add r4, #0x8c + str r0, [r4, #0x0] +_02083C40: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02083C44 +FUN_02083C44: ; 0x02083C44 + add r3, #0x84 + ldrb r2, [r2, #0x0] + ldr r1, [r3, #0x0] + lsl r0, r0, #0x2 + add r0, r1, r0 + str r2, [r0, #0x60] + bx lr + .balign 4 + + thumb_func_start FUN_02083C54 +FUN_02083C54: ; 0x02083C54 + bx lr + .balign 4 + + thumb_func_start FUN_02083C58 +FUN_02083C58: ; 0x02083C58 + bx lr + .balign 4 + + thumb_func_start FUN_02083C5C +FUN_02083C5C: ; 0x02083C5C + add r3, #0x84 + ldr r0, [r3, #0x0] + mov r1, #0x2 + str r1, [r0, #0x54] + bx lr + .balign 4 + + thumb_func_start FUN_02083C68 +FUN_02083C68: ; 0x02083C68 + bx lr + .balign 4 + + thumb_func_start FUN_02083C6C +FUN_02083C6C: ; 0x02083C6C + add r3, #0x84 + mov r0, #0x8b + ldrb r2, [r2, #0x0] + ldr r1, [r3, #0x0] + lsl r0, r0, #0x6 + str r2, [r1, r0] + bx lr + .balign 4 + + thumb_func_start FUN_02083C7C +FUN_02083C7C: ; 0x02083C7C + push {r4-r6, lr} + add r6, r0, #0x0 + ldr r0, [r3, #0xc] + add r5, r2, #0x0 + bl FUN_0202A918 + add r4, r0, #0x0 + bl FUN_02031190 + cmp r6, r0 + beq _02083CA8 + mov r2, #0x0 +_02083C94: + ldrb r1, [r5, r2] + cmp r1, #0x0 + beq _02083CA2 + ldrb r0, [r4, r2] + cmp r0, r1 + beq _02083CA2 + strb r1, [r4, r2] +_02083CA2: + add r2, r2, #0x1 + cmp r2, #0xe + blt _02083C94 +_02083CA8: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02083CAC +FUN_02083CAC: ; 0x02083CAC + push {r4-r6, lr} + add r3, #0x84 + add r5, r0, #0x0 + add r6, r2, #0x0 + ldr r4, [r3, #0x0] + bl FUN_02031190 + cmp r5, r0 + beq _02083CD0 + ldr r0, _02083CD4 ; =0x00002224 + add r1, r6, #0x0 + ldr r0, [r4, r0] + mov r2, #0x1 + mov r3, #0x1a + bl FUN_02025520 + mov r0, #0x3 + str r0, [r4, #0x54] +_02083CD0: + pop {r4-r6, pc} + nop +_02083CD4: .word 0x00002224 + + thumb_func_start FUN_02083CD8 +FUN_02083CD8: ; 0x02083CD8 + push {r4-r6, lr} + add r3, #0x84 + add r5, r0, #0x0 + add r6, r2, #0x0 + ldr r4, [r3, #0x0] + bl FUN_02031190 + cmp r5, r0 + beq _02083D0A + ldr r1, _02083D0C ; =0x00002E14 + mov r2, #0xfb + add r3, r4, r1 + lsl r2, r2, #0x2 + add r1, r5, #0x0 + mul r1, r2 + add r0, r6, #0x0 + add r1, r3, r1 + sub r2, r2, #0x4 + blx MIi_CpuCopyFast + mov r0, #0x4 + str r0, [r4, #0x54] + mov r0, #0x0 + bl FUN_02031400 +_02083D0A: + pop {r4-r6, pc} + .balign 4 +_02083D0C: .word 0x00002E14 + + thumb_func_start FUN_02083D10 +FUN_02083D10: ; 0x02083D10 + add r0, #0x84 + str r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02083D18 +FUN_02083D18: ; 0x02083D18 + mov r0, #0xfb + lsl r0, r0, #0x2 + bx lr + .balign 4 + + thumb_func_start FUN_02083D20 +FUN_02083D20: ; 0x02083D20 + mov r0, #0xe + bx lr + + thumb_func_start FUN_02083D24 +FUN_02083D24: ; 0x02083D24 + mov r0, #0x88 + bx lr + + thumb_func_start FUN_02083D28 +FUN_02083D28: ; 0x02083D28 + mov r0, #0x59 + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02083D30 +FUN_02083D30: ; 0x02083D30 + add r1, #0x84 + ldr r2, [r1, #0x0] + ldr r1, _02083D44 ; =0x000022F4 + add r2, r2, r1 + mov r1, #0x59 + lsl r1, r1, #0x4 + mul r1, r0 + add r0, r2, r1 + bx lr + nop +_02083D44: .word 0x000022F4 + + thumb_func_start FUN_02083D48 +FUN_02083D48: ; 0x02083D48 + ldr r3, _02083D54 ; =FUN_0202D8D0 + add r2, r0, #0x0 + ldr r0, _02083D58 ; =0x020FC01C + mov r1, #0x6c + bx r3 + nop +_02083D54: .word FUN_0202D8D0 +_02083D58: .word 0x020FC01C + + thumb_func_start FUN_02083D5C +FUN_02083D5C: ; 0x02083D5C + push {r3-r5, lr} + add r5, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _02083DBA + mov r3, #0xfb + lsl r3, r3, #0x2 + ldrb r2, [r5, r3] + sub r0, r3, #0x4 + add r1, r2, #0x0 + mul r1, r0 + mov r0, #0xe1 + lsl r0, r0, #0x6 + cmp r1, r0 + ldr r2, _02083DE8 ; =0x000043D0 + ble _02083D90 + add r2, r4, r2 + add r1, r2, r1 + mov r2, #0x19 + add r0, r5, #0x0 + lsl r2, r2, #0x4 + blx MIi_CpuCopyFast + b _02083D9C +_02083D90: + add r2, r4, r2 + add r1, r2, r1 + add r0, r5, #0x0 + sub r2, r3, #0x4 + blx MIi_CpuCopyFast +_02083D9C: + mov r1, #0xb5 + ldr r0, _02083DE8 ; =0x000043D0 + lsl r1, r1, #0x2 + mov r2, #0xe1 + ldr r1, [r4, r1] + add r0, r4, r0 + lsl r2, r2, #0x6 + blx MIi_CpuCopyFast + mov r0, #0xb2 + lsl r0, r0, #0x2 + add r0, r4, r0 + bl FUN_020191D0 + pop {r3-r5, pc} +_02083DBA: + ldr r1, _02083DEC ; =0x000043CC + mov r0, #0xfa + ldr r2, [r4, r1] + lsl r0, r0, #0x2 + add r3, r2, #0x0 + mul r3, r0 + mov r0, #0xe1 + lsl r0, r0, #0x6 + cmp r3, r0 + bge _02083DDC + add r0, r2, #0x1 + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, r4, #0x0 + bl FUN_0208402C + pop {r3-r5, pc} +_02083DDC: + mov r1, #0x0 + mov r0, #0x7c + add r2, r1, #0x0 + bl FUN_02030BC4 + pop {r3-r5, pc} + .balign 4 +_02083DE8: .word 0x000043D0 +_02083DEC: .word 0x000043CC + + thumb_func_start FUN_02083DF0 +FUN_02083DF0: ; 0x02083DF0 + push {r3-r4} + cmp r0, #0x0 + beq _02083E0E + add r4, r0, #0x0 + mov r1, #0xa + mul r4, r1 + ldr r0, _02083E14 ; =0x000093BD + add r3, r3, r4 + add r3, r3, r0 +_02083E02: + ldrb r0, [r2, #0x0] + add r2, r2, #0x1 + strb r0, [r3, #0x0] + add r3, r3, #0x1 + sub r1, r1, #0x1 + bne _02083E02 +_02083E0E: + pop {r3-r4} + bx lr + nop +_02083E14: .word 0x000093BD + + thumb_func_start FUN_02083E18 +FUN_02083E18: ; 0x02083E18 + push {r4-r7} + cmp r3, #0x0 + beq _02083E42 + cmp r0, #0x0 + bne _02083E42 + ldr r0, _02083E48 ; =0x00004382 + mov r7, #0x0 +_02083E26: + add r6, r2, #0x0 + add r5, r3, r0 + mov r4, #0xa +_02083E2C: + ldrb r1, [r6, #0x0] + add r6, r6, #0x1 + strb r1, [r5, #0x0] + add r5, r5, #0x1 + sub r4, r4, #0x1 + bne _02083E2C + add r7, r7, #0x1 + add r2, #0xa + add r3, #0xa + cmp r7, #0x5 + blt _02083E26 +_02083E42: + pop {r4-r7} + bx lr + nop +_02083E48: .word 0x00004382 + + thumb_func_start FUN_02083E4C +FUN_02083E4C: ; 0x02083E4C + push {r4, lr} + add r4, r3, #0x0 + add r0, r4, #0x0 + mov r1, #0x3 + mov r2, #0x0 + bl FUN_021D8B64 + ldr r1, _02083E8C ; =0x000043D0 + mov r2, #0xe1 + mov r0, #0x0 + add r1, r4, r1 + lsl r2, r2, #0x6 + blx MIi_CpuClearFast + bl FUN_02031190 + cmp r0, #0x0 + bne _02083E8A + bl FUN_02030F20 + mov r1, #0xc6 + lsl r1, r1, #0x2 + str r0, [r4, r1] + bl FUN_0202CB8C + mov r1, #0xc7 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, _02083E90 ; =0x000093F4 + mov r1, #0x1 + str r1, [r4, r0] +_02083E8A: + pop {r4, pc} + .balign 4 +_02083E8C: .word 0x000043D0 +_02083E90: .word 0x000093F4 + + thumb_func_start FUN_02083E94 +FUN_02083E94: ; 0x02083E94 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r0, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + cmp r6, #0x0 + beq _02083F2E + bl FUN_02031190 + cmp r0, #0x0 + bne _02083F78 + ldrb r0, [r5, #0x0] + add r1, sp, #0x0 + strb r0, [r1, #0x0] + ldrb r0, [r5, #0x1] + strb r0, [r1, #0x1] + ldrb r0, [r5, #0x2] + strb r0, [r1, #0x2] + ldrb r0, [r5, #0x3] + strb r0, [r1, #0x3] + mov r0, #0xc6 + strb r6, [r1, #0x0] + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + strb r0, [r1, #0x1] + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + beq _02083ED0 + cmp r0, #0x1 + b _02083F20 +_02083ED0: + bl FUN_02030F20 + mov r1, #0xc6 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + cmp r1, r0 + bne _02083EFE + bl FUN_021D917C + mov r1, #0xc6 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + cmp r1, r0 + bne _02083EFE + bl FUN_0202CB8C + blx MATH_CountPopulation + mov r1, #0xc6 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + cmp r1, r0 + beq _02083F06 +_02083EFE: + mov r1, #0x0 + add r0, sp, #0x0 + strb r1, [r0, #0x3] + b _02083F20 +_02083F06: + ldr r0, _02083F7C ; =0x000093B4 + mov r1, #0x1 + add r2, r1, #0x0 + ldr r3, [r4, r0] + lsl r2, r6 + orr r2, r3 + str r2, [r4, r0] + add r0, sp, #0x0 + strb r1, [r0, #0x3] + bl FUN_02030F20 + bl FUN_02032B6C +_02083F20: + mov r0, #0x7e + add r1, sp, #0x0 + mov r2, #0x4 + bl FUN_02030BC4 + add sp, #0x4 + pop {r3-r6, pc} +_02083F2E: + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + beq _02083F3C + cmp r0, #0x1 + beq _02083F6E + add sp, #0x4 + pop {r3-r6, pc} +_02083F3C: + ldrb r6, [r5, #0x0] + bl FUN_02031190 + cmp r6, r0 + bne _02083F78 + ldrb r0, [r5, #0x3] + cmp r0, #0x0 + bne _02083F5A + add r0, r4, #0x0 + mov r1, #0x9 + add r2, r6, #0x0 + bl FUN_021D8B64 + add sp, #0x4 + pop {r3-r6, pc} +_02083F5A: + ldrb r1, [r5, #0x1] + ldr r0, _02083F80 ; =0x000093B8 + strh r1, [r4, r0] + ldrb r2, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0x8 + bl FUN_021D8B64 + add sp, #0x4 + pop {r3-r6, pc} +_02083F6E: + ldrb r2, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0x15 + bl FUN_021D8B64 +_02083F78: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02083F7C: .word 0x000093B4 +_02083F80: .word 0x000093B8 + + thumb_func_start FUN_02083F84 +FUN_02083F84: ; 0x02083F84 + bx lr + .balign 4 + + thumb_func_start FUN_02083F88 +FUN_02083F88: ; 0x02083F88 + push {r4, lr} + ldrb r2, [r2, #0x0] + add r4, r3, #0x0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_021D8B64 + bl FUN_02031190 + cmp r0, #0x0 + bne _02083FB6 + mov r0, #0x3 + lsl r0, r0, #0x8 + ldr r0, [r4, r0] + cmp r0, #0x1 + bne _02083FB6 + ldr r1, _02083FB8 ; =0x000043CC + mov r0, #0x0 + str r0, [r4, r1] + ldr r1, [r4, r1] + add r0, r4, #0x0 + bl FUN_0208402C +_02083FB6: + pop {r4, pc} + .balign 4 +_02083FB8: .word 0x000043CC + + thumb_func_start FUN_02083FBC +FUN_02083FBC: ; 0x02083FBC + bx lr + .balign 4 + + thumb_func_start FUN_02083FC0 +FUN_02083FC0: ; 0x02083FC0 + bx lr + .balign 4 + + thumb_func_start FUN_02083FC4 +FUN_02083FC4: ; 0x02083FC4 + push {r4, lr} + add r4, r3, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _02083FDA + add r0, r4, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_021D8B64 +_02083FDA: + pop {r4, pc} + + thumb_func_start FUN_02083FDC +FUN_02083FDC: ; 0x02083FDC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r3, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _02083FEE + bl ErrorHandling +_02083FEE: + bl FUN_02031190 + cmp r0, #0x0 + bne _02084012 + ldr r0, _0208401C ; =0x000093FC + ldr r1, [r4, r0] + cmp r1, #0x0 + beq _0208400E + add r0, sp, #0x0 + strb r5, [r0, #0x0] + mov r0, #0x7b + add r1, sp, #0x0 + mov r2, #0x1 + bl FUN_02030BC4 + b _02084012 +_0208400E: + mov r1, #0x1 + str r1, [r4, r0] +_02084012: + mov r0, #0x0 + mov r1, #0x1 + bl FUN_020334E8 + pop {r3-r5, pc} + .balign 4 +_0208401C: .word 0x000093FC + + thumb_func_start FUN_02084020 +FUN_02084020: ; 0x02084020 + ldr r0, _02084028 ; =0x000093F4 + mov r1, #0x1 + str r1, [r3, r0] + bx lr + .balign 4 +_02084028: .word 0x000093F4 + + thumb_func_start FUN_0208402C +FUN_0208402C: ; 0x0208402C + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0xb5 + mov r2, #0xfa + add r4, r1, #0x0 + lsl r0, r0, #0x2 + ldr r1, [r5, r0] + lsl r2, r2, #0x2 + add r0, r4, #0x0 + mul r0, r2 + add r0, r1, r0 + ldr r1, _02084078 ; =0x00007C10 + add r1, r5, r1 + blx MIi_CpuCopyFast + ldr r0, _02084078 ; =0x00007C10 + mov r2, #0x0 + add r1, r2, #0x0 + add r3, r5, r0 +_02084052: + ldr r0, [r3, #0x0] + add r1, r1, #0x1 + eor r2, r0 + add r3, r3, #0x4 + cmp r1, #0xfa + blt _02084052 + ldr r0, _0208407C ; =0x00007FF8 + ldr r1, _02084078 ; =0x00007C10 + str r2, [r5, r0] + add r0, r0, #0x4 + mov r2, #0x3f + strb r4, [r5, r0] + mov r0, #0x76 + add r1, r5, r1 + lsl r2, r2, #0x4 + bl FUN_02030B3C + pop {r3-r5, pc} + nop +_02084078: .word 0x00007C10 +_0208407C: .word 0x00007FF8 + + thumb_func_start FUN_02084080 +FUN_02084080: ; 0x02084080 + mov r2, #0x2 + lsl r2, r2, #0xe + add r2, r1, r2 + mov r1, #0x3f + lsl r1, r1, #0x4 + mul r1, r0 + add r0, r2, r1 + bx lr + + thumb_func_start FUN_02084090 +FUN_02084090: ; 0x02084090 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_02084094 +FUN_02084094: ; 0x02084094 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_02084098 +FUN_02084098: ; 0x02084098 + ldr r3, _020840A4 ; =FUN_0202D8D0 + add r2, r0, #0x0 + ldr r0, _020840A8 ; =0x020FC52C + mov r1, #0x6c + bx r3 + nop +_020840A4: .word FUN_0202D8D0 +_020840A8: .word 0x020FC52C + + thumb_func_start FUN_020840AC +FUN_020840AC: ; 0x020840AC + ldr r0, _020840B8 ; =0x00004A34 + ldr r1, [r3, r0] + add r1, r1, #0x1 + str r1, [r3, r0] + bx lr + nop +_020840B8: .word 0x00004A34 + + thumb_func_start FUN_020840BC +FUN_020840BC: ; 0x020840BC + cmp r0, #0x0 + bne _020840C6 + ldrb r1, [r2, #0x0] + ldr r0, _020840C8 ; =0x00004A3C + str r1, [r3, r0] +_020840C6: + bx lr + .balign 4 +_020840C8: .word 0x00004A3C + + thumb_func_start FUN_020840CC +FUN_020840CC: ; 0x020840CC + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, _0208410C ; =0x00004A34 + add r4, r3, #0x0 + mov r1, #0x0 + str r1, [r4, r0] + mov r1, #0x1 + add r0, #0xc + strb r1, [r4, r0] + bl FUN_02031190 + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02084270 + add r0, r4, #0x0 + bl FUN_021D844C + lsl r2, r5, #0x18 + add r0, r4, #0x0 + mov r1, #0x19 + lsr r2, r2, #0x18 + bl FUN_021D88E4 + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_020334E8 + ldr r0, _02084110 ; =0x00000658 + bl FUN_020054C8 + pop {r3-r5, pc} + .balign 4 +_0208410C: .word 0x00004A34 +_02084110: .word 0x00000658 + + thumb_func_start FUN_02084114 +FUN_02084114: ; 0x02084114 + add r0, r3, #0x0 + ldr r3, _02084120 ; =FUN_021D88E4 + mov r1, #0x2 + mov r2, #0x0 + bx r3 + nop +_02084120: .word FUN_021D88E4 + 1 + + thumb_func_start FUN_02084124 +FUN_02084124: ; 0x02084124 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r0, #0x0 + add r5, r2, #0x0 + add r4, r3, #0x0 + cmp r6, #0x0 + beq _020841BA + bl FUN_02031190 + cmp r0, #0x0 + bne _02084204 + ldrb r0, [r5, #0x0] + add r1, sp, #0x0 + strb r0, [r1, #0x0] + ldrb r0, [r5, #0x1] + strb r0, [r1, #0x1] + ldrb r0, [r5, #0x2] + strb r0, [r1, #0x2] + ldrb r0, [r5, #0x3] + strb r0, [r1, #0x3] + ldr r0, _02084208 ; =0x00004A48 + strb r6, [r1, #0x0] + ldr r0, [r4, r0] + strb r0, [r1, #0x1] + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + beq _0208415E + cmp r0, #0x1 + b _020841AC +_0208415E: + bl FUN_02030F20 + ldr r1, _02084208 ; =0x00004A48 + ldr r1, [r4, r1] + cmp r1, r0 + bne _02084186 + bl FUN_021D8C24 + ldr r1, _02084208 ; =0x00004A48 + ldr r1, [r4, r1] + cmp r1, r0 + bne _02084186 + bl FUN_0202CB8C + blx MATH_CountPopulation + ldr r1, _02084208 ; =0x00004A48 + ldr r2, [r4, r1] + cmp r2, r0 + beq _0208418E +_02084186: + mov r1, #0x0 + add r0, sp, #0x0 + strb r1, [r0, #0x3] + b _020841AC +_0208418E: + add r0, r1, #0x0 + add r0, #0x8 + mov r2, #0x1 + ldr r3, [r4, r0] + add r0, r2, #0x0 + lsl r0, r6 + orr r0, r3 + add r1, #0x8 + str r0, [r4, r1] + add r0, sp, #0x0 + strb r2, [r0, #0x3] + bl FUN_02030F20 + bl FUN_02032B6C +_020841AC: + mov r0, #0x70 + add r1, sp, #0x0 + mov r2, #0x4 + bl FUN_02030ADC + add sp, #0x4 + pop {r3-r6, pc} +_020841BA: + ldrb r0, [r5, #0x2] + cmp r0, #0x0 + beq _020841C8 + cmp r0, #0x1 + beq _020841FA + add sp, #0x4 + pop {r3-r6, pc} +_020841C8: + ldrb r6, [r5, #0x0] + bl FUN_02031190 + cmp r6, r0 + bne _02084204 + ldrb r0, [r5, #0x3] + cmp r0, #0x0 + bne _020841E6 + add r0, r4, #0x0 + mov r1, #0x8 + add r2, r6, #0x0 + bl FUN_021D88E4 + add sp, #0x4 + pop {r3-r6, pc} +_020841E6: + ldrb r1, [r5, #0x1] + ldr r0, _0208420C ; =0x00004A5C + strh r1, [r4, r0] + ldrb r2, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0x7 + bl FUN_021D88E4 + add sp, #0x4 + pop {r3-r6, pc} +_020841FA: + ldrb r2, [r5, #0x0] + add r0, r4, #0x0 + mov r1, #0x13 + bl FUN_021D88E4 +_02084204: + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 +_02084208: .word 0x00004A48 +_0208420C: .word 0x00004A5C + + thumb_func_start FUN_02084210 +FUN_02084210: ; 0x02084210 + push {r4, lr} + ldrb r2, [r2, #0x0] + add r4, r3, #0x0 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_021D89CC + bl FUN_02031190 + cmp r0, #0x0 + bne _0208422E + mov r0, #0x3b + mov r1, #0x0 + lsl r0, r0, #0x4 + str r1, [r4, r0] +_0208422E: + pop {r4, pc} + + thumb_func_start FUN_02084230 +FUN_02084230: ; 0x02084230 + bx lr + .balign 4 + + thumb_func_start FUN_02084234 +FUN_02084234: ; 0x02084234 + bx lr + .balign 4 + + thumb_func_start FUN_02084238 +FUN_02084238: ; 0x02084238 + push {r4, lr} + add r4, r3, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + beq _0208424E + add r0, r4, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl FUN_021D88E4 +_0208424E: + pop {r4, pc} + + thumb_func_start FUN_02084250 +FUN_02084250: ; 0x02084250 + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + bl FUN_02031190 + cmp r0, #0x0 + bne _0208426C + add r0, sp, #0x0 + strb r4, [r0, #0x0] + mov r0, #0x6e + add r1, sp, #0x0 + mov r2, #0x1 + bl FUN_02030ADC +_0208426C: + add sp, #0x4 + pop {r3-r4, pc} + + thumb_func_start FUN_02084270 +FUN_02084270: ; 0x02084270 + push {r3-r5, lr} + add r4, r0, #0x0 + mov r0, #0xed + mov r3, #0x0 + lsl r0, r0, #0x2 + add r5, r4, r0 + add r2, r3, #0x0 + sub r0, #0xc6 +_02084280: + ldr r1, [r5, #0x0] + add r2, r2, #0x1 + eor r3, r1 + add r5, r5, #0x4 + cmp r2, r0 + blt _02084280 + ldr r0, _020842AC ; =0x00000F6C + str r3, [r4, r0] + bl FUN_0201B9EC + mov r1, #0xf7 + lsl r1, r1, #0x4 + str r0, [r4, r1] + mov r1, #0xed + lsl r1, r1, #0x2 + mov r2, #0x2f + mov r0, #0x74 + add r1, r4, r1 + lsl r2, r2, #0x6 + bl FUN_02030A78 + pop {r3-r5, pc} + .balign 4 +_020842AC: .word 0x00000F6C + + thumb_func_start FUN_020842B0 +FUN_020842B0: ; 0x020842B0 + mov r0, #0x0 + bx lr + + thumb_func_start FUN_020842B4 +FUN_020842B4: ; 0x020842B4 + mov r0, #0x1 + bx lr + + thumb_func_start FUN_020842B8 +FUN_020842B8: ; 0x020842B8 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_020842BC +FUN_020842BC: ; 0x020842BC + ldr r2, _020842CC ; =0x00000F74 + add r2, r1, r2 + mov r1, #0x2f + lsl r1, r1, #0x6 + mul r1, r0 + add r0, r2, r1 + bx lr + nop +_020842CC: .word 0x00000F74 + + thumb_func_start FUN_020842D0 +FUN_020842D0: ; 0x020842D0 + ldr r0, _020842D4 ; =0x020FCA3C + bx lr + .balign 4 +_020842D4: .word 0x020FCA3C + + thumb_func_start FUN_020842D8 +FUN_020842D8: ; 0x020842D8 + mov r0, #0x9 + bx lr + + thumb_func_start FUN_020842DC +FUN_020842DC: ; 0x020842DC + push {r3-r7, lr} + sub sp, #0x18 + str r1, [sp, #0x4] + add r6, r0, #0x0 + add r7, r2, #0x0 + ldr r0, [sp, #0x4] + mov r1, #0x0 + add r2, r3, #0x0 + bl FUN_0206E710 + mov r1, #0xe + add r4, r0, #0x0 + bl FUN_0206E7DC + cmp r0, #0x1 + beq _02084308 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x0 + pop {r3-r7, pc} +_02084308: + add r0, r6, #0x0 + mov r1, #0x9f + mov r2, #0x0 + bl FUN_020671BC + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084332 + mov r0, #0x7 + tst r0, r5 + beq _02084332 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084332: + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084350 + mov r0, #0x88 + tst r0, r5 + beq _02084350 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084350: + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208436E + mov r0, #0x10 + tst r0, r5 + beq _0208436E + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208436E: + add r0, r4, #0x0 + mov r1, #0x12 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208438C + mov r0, #0x20 + tst r0, r5 + beq _0208438C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208438C: + add r0, r4, #0x0 + mov r1, #0x13 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020843AA + mov r0, #0x40 + tst r0, r5 + beq _020843AA + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020843AA: + add r0, r6, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + add r5, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x17 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _020843CE + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020843EA +_020843CE: + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _020843EA + cmp r5, #0x0 + bne _02084414 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020843EA: + add r0, r4, #0x0 + mov r1, #0x26 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084414 + cmp r5, #0x0 + beq _02084414 + add r0, r6, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + cmp r5, r0 + bhs _02084414 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084414: + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208443A + add r0, r6, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x64 + bhs _0208443A + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208443A: + add r0, r4, #0x0 + mov r1, #0x1a + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084464 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r3, [sp, #0x4] + add r1, r6, #0x0 + mov r2, #0x3 + bl FUN_02069168 + cmp r0, #0x0 + beq _02084464 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084464: + add r0, r4, #0x0 + mov r1, #0x22 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _0208447C + add r0, r4, #0x0 + mov r1, #0x23 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020844B2 +_0208447C: + add r1, r7, #0x0 + add r0, r6, #0x0 + add r1, #0x3e + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x3 + bhs _020844B2 + add r1, r7, #0x0 + add r0, r6, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x0 + bl FUN_0206AB30 + cmp r0, #0x5 + blo _020844B2 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020844B2: + add r0, r4, #0x0 + mov r1, #0x24 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020844D6 + add r0, r6, #0x0 + add r1, r7, #0x0 + bl FUN_02084DF0 + cmp r0, #0x1 + bne _020844D6 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020844D6: + add r0, r4, #0x0 + mov r1, #0x25 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084502 + mov r5, #0x0 +_020844E4: + add r0, r6, #0x0 + add r1, r5, #0x0 + bl FUN_02084DF0 + cmp r0, #0x1 + bne _020844FC + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020844FC: + add r5, r5, #0x1 + cmp r5, #0x4 + blt _020844E4 +_02084502: + add r0, r6, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl FUN_020671BC + add r5, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x14] + add r0, r6, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x10] + add r0, r6, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0xc] + add r0, r6, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + add r0, r6, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + add r0, r6, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + mov r1, #0x49 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _020845C6 + add r0, r4, #0x0 + mov r1, #0x27 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020845C6 + add r0, r4, #0x0 + mov r1, #0x30 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _0208459C + cmp r5, #0x64 + bge _020845C6 + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, [sp, #0x10] + add r1, r0, r1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + ldr r0, [sp, #0x8] + add r0, r0, r1 + add r1, r7, r0 + ldr r0, _020847F4 ; =0x000001FE + cmp r1, r0 + bge _020845C6 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208459C: + bge _020845C6 + cmp r5, #0x0 + ble _020845AE + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020845AE: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02085000 + cmp r0, #0x1 + bne _020845C6 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020845C6: + add r0, r4, #0x0 + mov r1, #0x28 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084632 + add r0, r4, #0x0 + mov r1, #0x31 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02084606 + ldr r0, [sp, #0x14] + cmp r0, #0x64 + bge _02084632 + add r1, r5, r0 + ldr r0, [sp, #0x10] + add r1, r0, r1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + ldr r0, [sp, #0x8] + add r0, r0, r1 + add r1, r7, r0 + ldr r0, _020847F4 ; =0x000001FE + cmp r1, r0 + bge _02084632 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084606: + bge _02084632 + ldr r0, [sp, #0x14] + cmp r0, #0x0 + ble _0208461A + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208461A: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02085000 + cmp r0, #0x1 + bne _02084632 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084632: + add r0, r4, #0x0 + mov r1, #0x29 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020846A0 + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02084674 + ldr r0, [sp, #0x10] + cmp r0, #0x64 + bge _020846A0 + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, [sp, #0x10] + add r1, r0, r1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + ldr r0, [sp, #0x8] + add r0, r0, r1 + add r1, r7, r0 + ldr r0, _020847F4 ; =0x000001FE + cmp r1, r0 + bge _020846A0 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084674: + bge _020846A0 + ldr r0, [sp, #0x10] + cmp r0, #0x0 + ble _02084688 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084688: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02085000 + cmp r0, #0x1 + bne _020846A0 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020846A0: + add r0, r4, #0x0 + mov r1, #0x2a + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208470E + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _020846E2 + ldr r0, [sp, #0xc] + cmp r0, #0x64 + bge _0208470E + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, [sp, #0x10] + add r1, r0, r1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + ldr r0, [sp, #0x8] + add r0, r0, r1 + add r1, r7, r0 + ldr r0, _020847F4 ; =0x000001FE + cmp r1, r0 + bge _0208470E + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020846E2: + bge _0208470E + ldr r0, [sp, #0xc] + cmp r0, #0x0 + ble _020846F6 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020846F6: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02085000 + cmp r0, #0x1 + bne _0208470E + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208470E: + add r0, r4, #0x0 + mov r1, #0x2b + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208477C + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02084750 + ldr r0, [sp, #0x8] + cmp r0, #0x64 + bge _0208477C + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, [sp, #0x10] + add r1, r0, r1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + ldr r0, [sp, #0x8] + add r0, r0, r1 + add r1, r7, r0 + ldr r0, _020847F4 ; =0x000001FE + cmp r1, r0 + bge _0208477C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084750: + bge _0208477C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + ble _02084764 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_02084764: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02085000 + cmp r0, #0x1 + bne _0208477C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_0208477C: + add r0, r4, #0x0 + mov r1, #0x2c + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020847E6 + add r0, r4, #0x0 + mov r1, #0x35 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _020847BC + cmp r7, #0x64 + bge _020847E6 + ldr r0, [sp, #0x14] + add r1, r5, r0 + ldr r0, [sp, #0x10] + add r1, r0, r1 + ldr r0, [sp, #0xc] + add r1, r0, r1 + ldr r0, [sp, #0x8] + add r0, r0, r1 + add r1, r7, r0 + ldr r0, _020847F4 ; =0x000001FE + cmp r1, r0 + bge _020847E6 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020847BC: + bge _020847E6 + cmp r7, #0x0 + ble _020847CE + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020847CE: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_02085000 + cmp r0, #0x1 + bne _020847E6 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x18 + mov r0, #0x1 + pop {r3-r7, pc} +_020847E6: + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + nop +_020847F4: .word 0x000001FE + + thumb_func_start FUN_020847F8 +FUN_020847F8: ; 0x020847F8 + push {r3-r5, lr} + add r5, r1, #0x0 + add r1, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0206B9B0 + ldr r3, [sp, #0x10] + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020842DC + pop {r3-r5, pc} + + thumb_func_start FUN_02084810 +FUN_02084810: ; 0x02084810 + push {r3-r7, lr} + sub sp, #0x70 + add r5, r0, #0x0 + ldr r0, [sp, #0x88] + str r2, [sp, #0x4] + str r0, [sp, #0x88] + add r0, r1, #0x0 + ldr r2, [sp, #0x88] + mov r1, #0x0 + str r3, [sp, #0x8] + bl FUN_0206E710 + mov r1, #0xe + add r4, r0, #0x0 + bl FUN_0206E7DC + cmp r0, #0x1 + beq _02084840 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x70 + mov r0, #0x0 + pop {r3-r7, pc} +_02084840: + mov r6, #0x0 + add r0, r5, #0x0 + mov r1, #0x9f + add r2, r6, #0x0 + add r7, r6, #0x0 + bl FUN_020671BC + str r0, [sp, #0x50] + str r0, [sp, #0x54] + add r0, r4, #0x0 + mov r1, #0xf + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084868 + ldr r1, [sp, #0x54] + mov r0, #0x7 + bic r1, r0 + str r1, [sp, #0x54] + mov r7, #0x1 +_02084868: + add r0, r4, #0x0 + mov r1, #0x10 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208487E + ldr r1, [sp, #0x54] + ldr r0, _02084A28 ; =0xFFFFF077 + mov r7, #0x1 + and r0, r1 + str r0, [sp, #0x54] +_0208487E: + add r0, r4, #0x0 + mov r1, #0x11 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084894 + ldr r1, [sp, #0x54] + mov r0, #0x10 + bic r1, r0 + str r1, [sp, #0x54] + mov r7, #0x1 +_02084894: + add r0, r4, #0x0 + mov r1, #0x12 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020848AA + ldr r1, [sp, #0x54] + mov r0, #0x20 + bic r1, r0 + str r1, [sp, #0x54] + mov r7, #0x1 +_020848AA: + add r0, r4, #0x0 + mov r1, #0x13 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020848C0 + ldr r1, [sp, #0x54] + mov r0, #0x40 + bic r1, r0 + str r1, [sp, #0x54] + mov r7, #0x1 +_020848C0: + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + cmp r1, r0 + beq _020848D4 + add r0, r5, #0x0 + mov r1, #0x9f + add r2, sp, #0x54 + bl FUN_02067830 + mov r6, #0x1 +_020848D4: + add r0, r5, #0x0 + mov r1, #0xa2 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x50] + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x54] + add r0, r4, #0x0 + mov r1, #0x17 + bl FUN_0206E7DC + cmp r0, #0x0 + bne _02084904 + add r0, r4, #0x0 + mov r1, #0x18 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084930 +_02084904: + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084930 + ldr r0, [sp, #0x50] + cmp r0, #0x0 + bne _0208492C + add r0, r4, #0x0 + mov r1, #0x36 + bl FUN_0206E7DC + add r3, r0, #0x0 + ldr r1, [sp, #0x50] + ldr r2, [sp, #0x54] + add r0, r5, #0x0 + bl FUN_02084F68 + mov r6, #0x1 +_0208492C: + mov r7, #0x1 + b _0208495C +_02084930: + add r0, r4, #0x0 + mov r1, #0x26 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208495C + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + cmp r1, r0 + bge _0208495A + add r0, r4, #0x0 + mov r1, #0x36 + bl FUN_0206E7DC + add r3, r0, #0x0 + ldr r1, [sp, #0x50] + ldr r2, [sp, #0x54] + add r0, r5, #0x0 + bl FUN_02084F68 + mov r6, #0x1 +_0208495A: + mov r7, #0x1 +_0208495C: + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x58] + add r0, r4, #0x0 + mov r1, #0x19 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020849B4 + ldr r0, [sp, #0x58] + cmp r0, #0x64 + bge _020849B2 + add r0, r5, #0x0 + bl FUN_020686F8 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x8 + bl FUN_02068018 + add r0, r5, #0x0 + bl FUN_02066ED8 + ldr r0, [sp, #0x50] + cmp r0, #0x0 + bne _020849B0 + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + add r2, r0, #0x0 + ldr r3, [sp, #0x54] + ldr r1, [sp, #0x50] + add r0, r5, #0x0 + sub r3, r2, r3 + str r2, [sp, #0x5c] + bl FUN_02084F68 +_020849B0: + mov r6, #0x1 +_020849B2: + mov r7, #0x1 +_020849B4: + add r0, r4, #0x0 + mov r1, #0x1a + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020849C2 + mov r7, #0x1 +_020849C2: + add r0, r4, #0x0 + mov r1, #0x22 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _020849E2 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + mov r2, #0x1 + bl FUN_02084EC0 + cmp r0, #0x1 + bne _020849DE + mov r6, #0x1 +_020849DE: + mov r7, #0x1 + b _02084A00 +_020849E2: + add r0, r4, #0x0 + mov r1, #0x23 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084A00 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + mov r2, #0x3 + bl FUN_02084EC0 + cmp r0, #0x1 + bne _020849FE + mov r6, #0x1 +_020849FE: + mov r7, #0x1 +_02084A00: + add r0, r4, #0x0 + mov r1, #0x24 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084A2C + add r0, r4, #0x0 + mov r1, #0x37 + bl FUN_0206E7DC + add r2, r0, #0x0 + ldr r1, [sp, #0x4] + add r0, r5, #0x0 + bl FUN_02084E40 + cmp r0, #0x1 + bne _02084A24 + mov r6, #0x1 +_02084A24: + mov r7, #0x1 + b _02084A66 + .balign 4 +_02084A28: .word 0xFFFFF077 +_02084A2C: + add r0, r4, #0x0 + mov r1, #0x25 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084A66 + mov r0, #0x0 + str r0, [sp, #0x50] + cmp r0, #0x4 + bge _02084A64 + mov r7, #0x37 +_02084A42: + add r0, r4, #0x0 + add r1, r7, #0x0 + bl FUN_0206E7DC + add r2, r0, #0x0 + ldr r1, [sp, #0x50] + add r0, r5, #0x0 + bl FUN_02084E40 + cmp r0, #0x1 + bne _02084A5A + mov r6, #0x1 +_02084A5A: + ldr r0, [sp, #0x50] + add r0, r0, #0x1 + str r0, [sp, #0x50] + cmp r0, #0x4 + blt _02084A42 +_02084A64: + mov r7, #0x1 +_02084A66: + add r0, r5, #0x0 + mov r1, #0xd + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x50] + add r0, r5, #0x0 + mov r1, #0xe + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x54] + add r0, r5, #0x0 + mov r1, #0xf + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x58] + add r0, r5, #0x0 + mov r1, #0x10 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x5c] + add r0, r5, #0x0 + mov r1, #0x11 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x60] + add r0, r5, #0x0 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x64] + add r0, r5, #0x0 + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + mov r1, #0x49 + lsl r1, r1, #0x2 + cmp r0, r1 + beq _02084B20 + add r0, r4, #0x0 + mov r1, #0x27 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084B20 + add r0, r4, #0x0 + mov r1, #0x30 + bl FUN_0206E7DC + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x54] + str r1, [sp, #0x10] + ldr r1, [sp, #0x5c] + str r0, [sp, #0xc] + str r1, [sp, #0x14] + ldr r1, [sp, #0x58] + str r0, [sp, #0x6c] + add r2, r2, r1 + ldr r1, [sp, #0x14] + ldr r3, [sp, #0x64] + add r2, r1, r2 + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x50] + add r1, r1, r2 + ldr r2, [sp, #0xc] + add r1, r3, r1 + bl FUN_02084FA8 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x68] + cmp r0, r1 + beq _02084B18 + str r0, [sp, #0x50] + add r0, r5, #0x0 + mov r1, #0xd + add r2, sp, #0x50 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + mov r6, #0x1 +_02084B18: + ldr r0, [sp, #0x6c] + cmp r0, #0x0 + ble _02084B20 + mov r7, #0x1 +_02084B20: + add r0, r4, #0x0 + mov r1, #0x28 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084B80 + add r0, r4, #0x0 + mov r1, #0x31 + bl FUN_0206E7DC + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x50] + str r1, [sp, #0x1c] + ldr r1, [sp, #0x5c] + str r0, [sp, #0x18] + str r1, [sp, #0x20] + ldr r1, [sp, #0x58] + str r0, [sp, #0x6c] + add r2, r2, r1 + ldr r1, [sp, #0x20] + ldr r3, [sp, #0x64] + add r2, r1, r2 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x54] + add r1, r1, r2 + ldr r2, [sp, #0x18] + add r1, r3, r1 + bl FUN_02084FA8 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x68] + cmp r0, r1 + beq _02084B78 + str r0, [sp, #0x54] + add r0, r5, #0x0 + mov r1, #0xe + add r2, sp, #0x54 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + mov r6, #0x1 +_02084B78: + ldr r0, [sp, #0x6c] + cmp r0, #0x0 + ble _02084B80 + mov r7, #0x1 +_02084B80: + add r0, r4, #0x0 + mov r1, #0x29 + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084BE0 + add r0, r4, #0x0 + mov r1, #0x32 + bl FUN_0206E7DC + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x50] + str r1, [sp, #0x28] + ldr r1, [sp, #0x5c] + str r0, [sp, #0x24] + str r1, [sp, #0x2c] + ldr r1, [sp, #0x54] + str r0, [sp, #0x6c] + add r2, r2, r1 + ldr r1, [sp, #0x2c] + ldr r3, [sp, #0x64] + add r2, r1, r2 + ldr r1, [sp, #0x28] + ldr r0, [sp, #0x58] + add r1, r1, r2 + ldr r2, [sp, #0x24] + add r1, r3, r1 + bl FUN_02084FA8 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x68] + cmp r0, r1 + beq _02084BD8 + str r0, [sp, #0x58] + add r0, r5, #0x0 + mov r1, #0xf + add r2, sp, #0x58 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + mov r6, #0x1 +_02084BD8: + ldr r0, [sp, #0x6c] + cmp r0, #0x0 + ble _02084BE0 + mov r7, #0x1 +_02084BE0: + add r0, r4, #0x0 + mov r1, #0x2a + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084C40 + add r0, r4, #0x0 + mov r1, #0x33 + bl FUN_0206E7DC + ldr r1, [sp, #0x60] + ldr r2, [sp, #0x50] + str r1, [sp, #0x34] + ldr r1, [sp, #0x58] + str r0, [sp, #0x30] + str r1, [sp, #0x38] + ldr r1, [sp, #0x54] + str r0, [sp, #0x6c] + add r2, r2, r1 + ldr r1, [sp, #0x38] + ldr r3, [sp, #0x64] + add r2, r1, r2 + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x5c] + add r1, r1, r2 + ldr r2, [sp, #0x30] + add r1, r3, r1 + bl FUN_02084FA8 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x68] + cmp r0, r1 + beq _02084C38 + str r0, [sp, #0x5c] + add r0, r5, #0x0 + mov r1, #0x10 + add r2, sp, #0x5c + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + mov r6, #0x1 +_02084C38: + ldr r0, [sp, #0x6c] + cmp r0, #0x0 + ble _02084C40 + mov r7, #0x1 +_02084C40: + add r0, r4, #0x0 + mov r1, #0x2b + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084CA0 + add r0, r4, #0x0 + mov r1, #0x34 + bl FUN_0206E7DC + ldr r1, [sp, #0x5c] + ldr r2, [sp, #0x50] + str r1, [sp, #0x40] + ldr r1, [sp, #0x58] + str r0, [sp, #0x3c] + str r1, [sp, #0x44] + ldr r1, [sp, #0x54] + str r0, [sp, #0x6c] + add r2, r2, r1 + ldr r1, [sp, #0x44] + ldr r3, [sp, #0x64] + add r2, r1, r2 + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x60] + add r1, r1, r2 + ldr r2, [sp, #0x3c] + add r1, r3, r1 + bl FUN_02084FA8 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x68] + cmp r0, r1 + beq _02084C98 + str r0, [sp, #0x60] + add r0, r5, #0x0 + mov r1, #0x11 + add r2, sp, #0x60 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + mov r6, #0x1 +_02084C98: + ldr r0, [sp, #0x6c] + cmp r0, #0x0 + ble _02084CA0 + mov r7, #0x1 +_02084CA0: + add r0, r4, #0x0 + mov r1, #0x2c + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084D00 + add r0, r4, #0x0 + mov r1, #0x35 + bl FUN_0206E7DC + ldr r1, [sp, #0x5c] + ldr r2, [sp, #0x50] + str r1, [sp, #0x4c] + ldr r1, [sp, #0x58] + str r0, [sp, #0x48] + mov r12, r1 + ldr r1, [sp, #0x54] + str r0, [sp, #0x6c] + add r1, r2, r1 + mov r2, r12 + add r2, r2, r1 + ldr r1, [sp, #0x4c] + ldr r3, [sp, #0x60] + add r1, r1, r2 + ldr r0, [sp, #0x64] + ldr r2, [sp, #0x48] + add r1, r3, r1 + bl FUN_02084FA8 + mov r1, #0x0 + mvn r1, r1 + str r0, [sp, #0x68] + cmp r0, r1 + beq _02084CF8 + str r0, [sp, #0x64] + add r0, r5, #0x0 + mov r1, #0x12 + add r2, sp, #0x64 + bl FUN_02067830 + add r0, r5, #0x0 + bl FUN_02066ED8 + mov r6, #0x1 +_02084CF8: + ldr r0, [sp, #0x6c] + cmp r0, #0x0 + ble _02084D00 + mov r7, #0x1 +_02084D00: + cmp r6, #0x0 + bne _02084D14 + cmp r7, #0x1 + bne _02084D14 + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x70 + mov r0, #0x0 + pop {r3-r7, pc} +_02084D14: + add r0, r5, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x50] + cmp r0, #0x64 + bge _02084D54 + add r0, r4, #0x0 + mov r1, #0x2d + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084DC2 + add r0, r4, #0x0 + mov r1, #0x38 + bl FUN_0206E7DC + add r2, r0, #0x0 + ldr r0, [sp, #0x88] + str r0, [sp, #0x0] + ldr r1, [sp, #0x50] + ldr r3, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_0208508C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x70 + add r0, r6, #0x0 + pop {r3-r7, pc} +_02084D54: + blt _02084D8A + cmp r0, #0xc8 + bge _02084D8A + add r0, r4, #0x0 + mov r1, #0x2e + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084DC2 + add r0, r4, #0x0 + mov r1, #0x39 + bl FUN_0206E7DC + add r2, r0, #0x0 + ldr r0, [sp, #0x88] + str r0, [sp, #0x0] + ldr r1, [sp, #0x50] + ldr r3, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_0208508C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x70 + add r0, r6, #0x0 + pop {r3-r7, pc} +_02084D8A: + cmp r0, #0xc8 + blt _02084DC2 + cmp r0, #0xff + bgt _02084DC2 + add r0, r4, #0x0 + mov r1, #0x2f + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02084DC2 + add r0, r4, #0x0 + mov r1, #0x3a + bl FUN_0206E7DC + add r2, r0, #0x0 + ldr r0, [sp, #0x88] + str r0, [sp, #0x0] + ldr r1, [sp, #0x50] + ldr r3, [sp, #0x8] + add r0, r5, #0x0 + bl FUN_0208508C + add r0, r4, #0x0 + bl FUN_02016A18 + add sp, #0x70 + add r0, r6, #0x0 + pop {r3-r7, pc} +_02084DC2: + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r6, #0x0 + add sp, #0x70 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02084DD0 +FUN_02084DD0: ; 0x02084DD0 + push {r3-r5, lr} + add r5, r1, #0x0 + add r1, r2, #0x0 + add r4, r3, #0x0 + bl FUN_0206B9B0 + ldr r1, [sp, #0x14] + add r3, sp, #0x0 + str r1, [sp, #0x0] + ldrh r3, [r3, #0x10] + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02084810 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02084DF0 +FUN_02084DF0: ; 0x02084DF0 + push {r3-r7, lr} + add r6, r1, #0x0 + add r1, #0x36 + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + bne _02084E08 + mov r0, #0x0 + pop {r3-r7, pc} +_02084E08: + add r1, r6, #0x0 + add r0, r5, #0x0 + add r1, #0x3a + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + add r6, #0x3e + lsr r4, r0, #0x18 + add r0, r5, #0x0 + add r1, r6, #0x0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r7, #0x0 + bl FUN_0206AB30 + cmp r4, r0 + bhs _02084E36 + mov r0, #0x1 + b _02084E38 +_02084E36: + mov r0, #0x0 +_02084E38: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02084E40 +FUN_02084E40: ; 0x02084E40 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r1, #0x0 + add r4, r2, #0x0 + add r1, #0x36 + mov r2, #0x0 + add r6, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + bne _02084E5E + add sp, #0x8 + mov r0, #0x0 + pop {r3-r7, pc} +_02084E5E: + add r0, r5, #0x0 + str r0, [sp, #0x0] + add r0, #0x3a + str r0, [sp, #0x0] + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x4 + strb r0, [r1, #0x0] + add r5, #0x3e + add r0, r6, #0x0 + add r1, r5, #0x0 + mov r2, #0x0 + bl FUN_020671BC + add r1, r0, #0x0 + lsl r1, r1, #0x18 + add r0, r7, #0x0 + lsr r1, r1, #0x18 + bl FUN_0206AB30 + add r1, sp, #0x4 + ldrb r2, [r1, #0x0] + cmp r2, r0 + bhs _02084EB8 + cmp r4, #0x7f + bne _02084E9C + strb r0, [r1, #0x0] + b _02084EA8 +_02084E9C: + add r2, r2, r4 + strb r2, [r1, #0x0] + ldrb r2, [r1, #0x0] + cmp r2, r0 + bls _02084EA8 + strb r0, [r1, #0x0] +_02084EA8: + ldr r1, [sp, #0x0] + add r0, r6, #0x0 + add r2, sp, #0x4 + bl FUN_02067830 + add sp, #0x8 + mov r0, #0x1 + pop {r3-r7, pc} +_02084EB8: + mov r0, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02084EC0 +FUN_02084EC0: ; 0x02084EC0 + push {r4-r7, lr} + sub sp, #0xc + add r6, r2, #0x0 + add r4, r1, #0x0 + str r1, [sp, #0x0] + add r1, #0x3e + mov r2, #0x0 + add r5, r0, #0x0 + str r1, [sp, #0x0] + bl FUN_020671BC + add r1, sp, #0x8 + strb r0, [r1, #0x0] + ldrb r0, [r1, #0x0] + cmp r0, #0x3 + bne _02084EE6 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02084EE6: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + mov r1, #0x0 + str r0, [sp, #0x4] + bl FUN_0206AB30 + cmp r0, #0x5 + bhs _02084F08 + add sp, #0xc + mov r0, #0x0 + pop {r4-r7, pc} +_02084F08: + add r4, #0x3a + add r0, r5, #0x0 + add r1, r4, #0x0 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x8 + strb r0, [r1, #0x1] + ldrb r1, [r1, #0x0] + ldr r0, [sp, #0x4] + bl FUN_0206AB30 + add r7, r0, #0x0 + add r0, sp, #0x8 + ldrb r0, [r0, #0x0] + add r0, r0, r6 + cmp r0, #0x3 + bls _02084F30 + mov r0, #0x3 + b _02084F34 +_02084F30: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 +_02084F34: + add r1, sp, #0x8 + strb r0, [r1, #0x0] + ldrb r1, [r1, #0x0] + ldr r0, [sp, #0x4] + bl FUN_0206AB30 + add r1, sp, #0x8 + ldrb r2, [r1, #0x1] + add r0, r2, r0 + sub r0, r0, r7 + strb r0, [r1, #0x1] + ldr r1, [sp, #0x0] + add r0, r5, #0x0 + add r2, sp, #0x8 + bl FUN_02067830 + add r2, sp, #0x8 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, #0x1 + bl FUN_02067830 + mov r0, #0x1 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 + + thumb_func_start FUN_02084F68 +FUN_02084F68: ; 0x02084F68 + push {r0-r3} + push {r3, lr} + cmp r2, #0x1 + bne _02084F74 + mov r3, #0x1 + b _02084F8A +_02084F74: + cmp r3, #0xff + bne _02084F7C + add r3, r2, #0x0 + b _02084F8A +_02084F7C: + cmp r3, #0xfe + bne _02084F84 + lsr r3, r2, #0x1 + b _02084F8A +_02084F84: + cmp r3, #0xfd + bne _02084F8A + lsr r3, r2, #0x2 +_02084F8A: + ldr r1, [sp, #0xc] + add r1, r1, r3 + cmp r1, r2 + bls _02084F96 + str r2, [sp, #0xc] + b _02084F98 +_02084F96: + str r1, [sp, #0xc] +_02084F98: + mov r1, #0xa2 + add r2, sp, #0xc + bl FUN_02067830 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_02084FA8 +FUN_02084FA8: ; 0x02084FA8 + push {r3-r4} + cmp r0, #0x0 + bne _02084FBA + cmp r2, #0x0 + bge _02084FBA + mov r0, #0x0 + mvn r0, r0 + pop {r3-r4} + bx lr +_02084FBA: + cmp r0, #0x64 + blt _02084FCA + cmp r2, #0x0 + ble _02084FCA + mov r0, #0x0 + mvn r0, r0 + pop {r3-r4} + bx lr +_02084FCA: + ldr r3, _02084FFC ; =0x000001FE + add r4, r0, r1 + cmp r4, r3 + blt _02084FDE + cmp r2, #0x0 + ble _02084FDE + mov r0, #0x0 + mvn r0, r0 + pop {r3-r4} + bx lr +_02084FDE: + add r0, r0, r2 + cmp r0, #0x64 + ble _02084FE8 + mov r0, #0x64 + b _02084FEE +_02084FE8: + cmp r0, #0x0 + bge _02084FEE + mov r0, #0x0 +_02084FEE: + ldr r2, _02084FFC ; =0x000001FE + add r3, r0, r1 + cmp r3, r2 + ble _02084FF8 + sub r0, r2, r1 +_02084FF8: + pop {r3-r4} + bx lr + .balign 4 +_02084FFC: .word 0x000001FE + + thumb_func_start FUN_02085000 +FUN_02085000: ; 0x02085000 + push {r4, lr} + add r4, r1, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0xff + blt _02085014 + mov r0, #0x0 + pop {r4, pc} +_02085014: + cmp r0, #0x64 + bge _02085038 + add r0, r4, #0x0 + mov r1, #0x2d + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02085034 + add r0, r4, #0x0 + mov r1, #0x38 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02085034 + mov r0, #0x1 + pop {r4, pc} +_02085034: + mov r0, #0x0 + pop {r4, pc} +_02085038: + blt _0208505E + cmp r0, #0xc8 + bge _0208505E + add r0, r4, #0x0 + mov r1, #0x2e + bl FUN_0206E7DC + cmp r0, #0x0 + beq _0208505A + add r0, r4, #0x0 + mov r1, #0x39 + bl FUN_0206E7DC + cmp r0, #0x0 + ble _0208505A + mov r0, #0x1 + pop {r4, pc} +_0208505A: + mov r0, #0x0 + pop {r4, pc} +_0208505E: + cmp r0, #0xc8 + blt _02085086 + cmp r0, #0xff + bge _02085086 + add r0, r4, #0x0 + mov r1, #0x2f + bl FUN_0206E7DC + cmp r0, #0x0 + beq _02085082 + add r0, r4, #0x0 + mov r1, #0x3a + bl FUN_0206E7DC + cmp r0, #0x0 + ble _02085082 + mov r0, #0x1 + pop {r4, pc} +_02085082: + mov r0, #0x0 + pop {r4, pc} +_02085086: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0208508C +FUN_0208508C: ; 0x0208508C + push {r0-r3} + push {r4-r6, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + add r6, r3, #0x0 + cmp r4, #0xff + bne _020850AA + ldr r0, [sp, #0x18] + cmp r0, #0x0 + ble _020850AA + mov r0, #0x0 + pop {r4-r6} + pop {r3} + add sp, #0x10 + bx r3 +_020850AA: + cmp r4, #0x0 + bne _020850BE + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bge _020850BE + mov r0, #0x0 + pop {r4-r6} + pop {r3} + add sp, #0x10 + bx r3 +_020850BE: + ldr r0, [sp, #0x18] + cmp r0, #0x0 + ble _02085114 + add r0, r5, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + ldr r2, [sp, #0x20] + lsr r0, r0, #0x10 + mov r1, #0x1 + bl FUN_0206E7B8 + cmp r0, #0x34 + bne _020850EC + ldr r1, [sp, #0x18] + mov r0, #0x96 + mul r0, r1 + mov r1, #0x64 + blx _s32_div_f + str r0, [sp, #0x18] +_020850EC: + add r0, r5, #0x0 + mov r1, #0x9a + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0xb + bne _02085100 + ldr r0, [sp, #0x18] + add r0, r0, #0x1 + str r0, [sp, #0x18] +_02085100: + add r0, r5, #0x0 + mov r1, #0x97 + mov r2, #0x0 + bl FUN_020671BC + cmp r6, r0 + bne _02085114 + ldr r0, [sp, #0x18] + add r0, r0, #0x1 + str r0, [sp, #0x18] +_02085114: + ldr r0, [sp, #0x18] + add r0, r0, r4 + str r0, [sp, #0x18] + cmp r0, #0xff + ble _02085122 + mov r0, #0xff + str r0, [sp, #0x18] +_02085122: + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bge _0208512C + mov r0, #0x0 + str r0, [sp, #0x18] +_0208512C: + add r0, r5, #0x0 + mov r1, #0x9 + add r2, sp, #0x18 + bl FUN_02067830 + mov r0, #0x1 + pop {r4-r6} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start FUN_02085140 +FUN_02085140: ; 0x02085140 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + bl FUN_0206B9AC + mov r7, #0x0 + str r0, [sp, #0x4] + cmp r0, #0x0 + ble _020851B4 + mov r6, #0x7f +_02085154: + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_0206B9B0 + mov r1, #0xab + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _020851AC + add r0, r5, #0x0 + mov r1, #0xa3 + mov r2, #0x0 + bl FUN_020671BC + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0xa2 + add r2, sp, #0x8 + bl FUN_02067830 + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x9f + add r2, sp, #0x8 + bl FUN_02067830 + mov r4, #0x0 +_02085190: + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02084DF0 + cmp r0, #0x1 + bne _020851A6 + add r0, r5, #0x0 + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02084E40 +_020851A6: + add r4, r4, #0x1 + cmp r4, #0x4 + blt _02085190 +_020851AC: + ldr r0, [sp, #0x4] + add r7, r7, #0x1 + cmp r7, r0 + blt _02085154 +_020851B4: + add sp, #0xc + pop {r4-r7, pc} + + thumb_func_start FUN_020851B8 +FUN_020851B8: ; 0x020851B8 + push {r3, lr} + mov r1, #0xc + bl FUN_02016998 + mov r1, #0x0 + 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] + strb r1, [r0, #0x8] + strb r1, [r0, #0x9] + strb r1, [r0, #0xa] + strb r1, [r0, #0xb] + pop {r3, pc} + + thumb_func_start FUN_020851DC +FUN_020851DC: ; 0x020851DC + push {r4-r6, lr} + sub r1, #0x95 + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + add r1, r6, #0x0 + add r5, r0, #0x0 + add r4, r2, #0x0 + bl FUN_02085200 + cmp r4, #0x1 + bne _020851F4 + strb r6, [r5, #0x8] +_020851F4: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020851F8 +FUN_020851F8: ; 0x020851F8 + strb r1, [r0, #0x9] + strb r2, [r0, #0xa] + strb r3, [r0, #0xb] + bx lr + + thumb_func_start FUN_02085200 +FUN_02085200: ; 0x02085200 + push {r3-r6} + lsr r6, r1, #0x1f + lsl r5, r1, #0x1b + lsr r2, r1, #0x5 + lsl r4, r2, #0x2 + sub r5, r5, r6 + mov r1, #0x1b + ror r5, r1 + ldr r3, [r0, r4] + mov r2, #0x1 + add r1, r6, r5 + lsl r2, r1 + add r1, r3, #0x0 + orr r1, r2 + str r1, [r0, r4] + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_02085224 +FUN_02085224: ; 0x02085224 + push {r4-r5} + lsr r5, r1, #0x1f + lsl r4, r1, #0x1b + lsr r1, r1, #0x5 + lsl r1, r1, #0x2 + sub r4, r4, r5 + mov r3, #0x1b + ror r4, r3 + mov r2, #0x1 + add r3, r5, r4 + add r4, r2, #0x0 + lsl r4, r3 + ldr r0, [r0, r1] + tst r0, r4 + bne _02085244 + mov r2, #0x0 +_02085244: + lsl r0, r2, #0x18 + lsr r0, r0, #0x18 + pop {r4-r5} + bx lr + + thumb_func_start FUN_0208524C +FUN_0208524C: ; 0x0208524C + ldrb r3, [r0, #0x9] + strb r3, [r1, #0x0] + ldrb r0, [r0, #0xa] + strb r0, [r2, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02085258 +FUN_02085258: ; 0x02085258 + ldr r3, _02085260 ; =FUN_02006670 + add r1, r0, #0x0 + mov r0, #0x44 + bx r3 + .balign 4 +_02085260: .word FUN_02006670 + + thumb_func_start FUN_02085264 +FUN_02085264: ; 0x02085264 + ldr r3, _02085268 ; =FUN_02006704 + bx r3 + .balign 4 +_02085268: .word FUN_02006704 + + thumb_func_start FUN_0208526C +FUN_0208526C: ; 0x0208526C + ldr r3, _02085270 ; =FUN_020066F4 + bx r3 + .balign 4 +_02085270: .word FUN_020066F4 + + thumb_func_start FUN_02085274 +FUN_02085274: ; 0x02085274 + add r3, r0, #0x0 + add r2, r1, #0x0 + add r1, r3, #0x0 + ldr r3, _02085280 ; =LoadFromNarc_2 + mov r0, #0x44 + bx r3 + .balign 4 +_02085280: .word LoadFromNarc_2 + + thumb_func_start FUN_02085284 +FUN_02085284: ; 0x02085284 + ldr r3, _0208528C ; =FUN_02085274 + sub r0, #0x95 + bx r3 + nop +_0208528C: .word FUN_02085274 + + thumb_func_start FUN_02085290 +FUN_02085290: ; 0x02085290 + cmp r1, #0xa + bhi _020852E2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020852A0: ; jump table (using 16-bit offset) + .short _020852B6 - _020852A0 - 2; case 0 + .short _020852BA - _020852A0 - 2; case 1 + .short _020852BE - _020852A0 - 2; case 2 + .short _020852C2 - _020852A0 - 2; case 3 + .short _020852C6 - _020852A0 - 2; case 4 + .short _020852CA - _020852A0 - 2; case 5 + .short _020852CE - _020852A0 - 2; case 6 + .short _020852D2 - _020852A0 - 2; case 7 + .short _020852D6 - _020852A0 - 2; case 8 + .short _020852DA - _020852A0 - 2; case 9 + .short _020852DE - _020852A0 - 2; case 10 +_020852B6: + ldrh r0, [r0, #0x0] + bx lr +_020852BA: + ldrb r0, [r0, #0x2] + bx lr +_020852BE: + ldrb r0, [r0, #0x3] + bx lr +_020852C2: + ldrb r0, [r0, #0x4] + bx lr +_020852C6: + ldrb r0, [r0, #0x5] + bx lr +_020852CA: + ldrb r0, [r0, #0x6] + bx lr +_020852CE: + ldrb r0, [r0, #0x7] + bx lr +_020852D2: + ldrb r0, [r0, #0x8] + bx lr +_020852D6: + ldrb r0, [r0, #0x9] + bx lr +_020852DA: + ldrb r0, [r0, #0xa] + bx lr +_020852DE: + ldrb r0, [r0, #0xb] + bx lr +_020852E2: + mov r0, #0x0 + bx lr + .balign 4 + + thumb_func_start FUN_020852E8 +FUN_020852E8: ; 0x020852E8 + push {r3-r5, lr} + ldr r2, _0208530C ; =0x00000175 + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0x0 + add r1, r4, #0x0 + bl FUN_0200A914 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 +_0208530C: .word 0x00000175 + + thumb_func_start FUN_02085310 +FUN_02085310: ; 0x02085310 + push {r3-r5, lr} + mov r2, #0x5d + add r4, r0, #0x0 + add r3, r1, #0x0 + mov r0, #0x1 + mov r1, #0x1a + lsl r2, r2, #0x2 + bl FUN_0200A86C + add r5, r0, #0x0 + add r1, r4, #0x0 + bl FUN_0200A914 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200A8B8 + add r0, r4, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02085338 +FUN_02085338: ; 0x02085338 + push {r3-r7, lr} + add r5, r0, #0x0 + add r7, r1, #0x0 + add r0, r3, #0x0 + mov r1, #0x24 + add r6, r2, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + strb r5, [r4, #0x0] + strb r7, [r4, #0x1] + add r0, r6, #0x0 + bl FUN_02024DA0 + str r0, [r4, #0xc] + add r0, r6, #0x0 + bl FUN_02013B5C + str r0, [r4, #0x10] + add r0, r6, #0x0 + bl FUN_020462AC + bl FUN_0205ED0C + strb r0, [r4, #0x4] + mov r1, #0x0 + strb r1, [r4, #0x5] + mov r0, #0x1 + strb r0, [r4, #0x2] + add r0, r6, #0x0 + strb r1, [r4, #0x3] + bl LoadPlayerDataAddress + bl FUN_02025084 + str r0, [r4, #0x8] + cmp r5, #0x2 + bne _02085390 + add r0, r4, #0x0 + add r0, #0x14 + mov r1, #0x3 + bl FUN_0201373C + b _020853A0 +_02085390: + ldr r0, _020853A4 ; =0x0000FFFF + mov r1, #0x0 + add r2, r4, #0x0 +_02085396: + add r1, r1, #0x1 + strh r0, [r2, #0x1c] + add r2, r2, #0x2 + cmp r1, #0x2 + blt _02085396 +_020853A0: + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 +_020853A4: .word 0x0000FFFF + + thumb_func_start FUN_020853A8 +FUN_020853A8: ; 0x020853A8 + ldr r3, _020853AC ; =FUN_02016A18 + bx r3 + .balign 4 +_020853AC: .word FUN_02016A18 + + thumb_func_start FUN_020853B0 +FUN_020853B0: ; 0x020853B0 + strh r1, [r0, #0x1c] + bx lr + + thumb_func_start FUN_020853B4 +FUN_020853B4: ; 0x020853B4 + strh r1, [r0, #0x1c] + strh r2, [r0, #0x1e] + bx lr + .balign 4 + + thumb_func_start FUN_020853BC +FUN_020853BC: ; 0x020853BC + ldrh r2, [r1, #0x0] + strh r2, [r0, #0x14] + ldrh r2, [r1, #0x2] + strh r2, [r0, #0x16] + ldrh r2, [r1, #0x4] + strh r2, [r0, #0x18] + ldrh r1, [r1, #0x6] + strh r1, [r0, #0x1a] + bx lr + .balign 4 + + thumb_func_start FUN_020853D0 +FUN_020853D0: ; 0x020853D0 + mov r1, #0x1 + strb r1, [r0, #0x2] + mov r1, #0x0 + strb r1, [r0, #0x3] + bx lr + .balign 4 + + thumb_func_start FUN_020853DC +FUN_020853DC: ; 0x020853DC + mov r1, #0x1 + strb r1, [r0, #0x5] + bx lr + .balign 4 + + thumb_func_start FUN_020853E4 +FUN_020853E4: ; 0x020853E4 + ldrb r0, [r0, #0x2] + bx lr + + thumb_func_start FUN_020853E8 +FUN_020853E8: ; 0x020853E8 + ldrb r0, [r0, #0x3] + bx lr + + thumb_func_start FUN_020853EC +FUN_020853EC: ; 0x020853EC + ldrh r0, [r0, #0x1c] + bx lr + + thumb_func_start FUN_020853F0 +FUN_020853F0: ; 0x020853F0 + ldrh r2, [r0, #0x1c] + strh r2, [r1, #0x0] + ldrh r0, [r0, #0x1e] + strh r0, [r1, #0x2] + bx lr + .balign 4 + + thumb_func_start FUN_020853FC +FUN_020853FC: ; 0x020853FC + add r2, r0, #0x0 + ldr r3, _02085408 ; =FUN_02013960 + add r2, #0x14 + add r0, r1, #0x0 + add r1, r2, #0x0 + bx r3 + .balign 4 +_02085408: .word FUN_02013960 + + thumb_func_start FUN_0208540C +FUN_0208540C: ; 0x0208540C + ldrb r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_02085410 +FUN_02085410: ; 0x02085410 + ldrb r0, [r0, #0x1] + bx lr + + thumb_func_start FUN_02085414 +FUN_02085414: ; 0x02085414 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_02085418 +FUN_02085418: ; 0x02085418 + ldr r0, [r0, #0xc] + bx lr + + thumb_func_start FUN_0208541C +FUN_0208541C: ; 0x0208541C + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start FUN_02085420 +FUN_02085420: ; 0x02085420 + ldrb r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_02085424 +FUN_02085424: ; 0x02085424 + ldrb r0, [r0, #0x5] + bx lr + + thumb_func_start FUN_02085428 +FUN_02085428: ; 0x02085428 + ldrb r3, [r0, #0x0] + cmp r3, #0x0 + beq _02085438 + cmp r3, #0x1 + beq _0208543E + cmp r3, #0x2 + beq _02085448 + bx lr +_02085438: + ldrh r0, [r0, #0x1c] + strh r0, [r1, #0x0] + bx lr +_0208543E: + ldrh r2, [r0, #0x1c] + strh r2, [r1, #0x0] + ldrh r0, [r0, #0x1e] + strh r0, [r1, #0x2] + bx lr +_02085448: + ldrh r1, [r0, #0x14] + strh r1, [r2, #0x0] + ldrh r1, [r0, #0x16] + strh r1, [r2, #0x2] + ldrh r1, [r0, #0x18] + strh r1, [r2, #0x4] + ldrh r0, [r0, #0x1a] + strh r0, [r2, #0x6] + bx lr + .balign 4 + + thumb_func_start FUN_0208545C +FUN_0208545C: ; 0x0208545C + push {r3, lr} + ldrb r3, [r0, #0x0] + cmp r3, #0x0 + beq _0208546C + cmp r3, #0x1 + beq _0208547C + cmp r3, #0x2 + b _02085494 +_0208546C: + ldrh r1, [r1, #0x0] + ldrh r0, [r0, #0x1c] + cmp r1, r0 + bne _02085478 + mov r0, #0x1 + pop {r3, pc} +_02085478: + mov r0, #0x0 + pop {r3, pc} +_0208547C: + ldrh r3, [r1, #0x0] + ldrh r2, [r0, #0x1c] + cmp r3, r2 + bne _02085490 + ldrh r1, [r1, #0x2] + ldrh r0, [r0, #0x1e] + cmp r1, r0 + bne _02085490 + mov r0, #0x1 + pop {r3, pc} +_02085490: + mov r0, #0x0 + pop {r3, pc} +_02085494: + add r0, #0x14 + add r1, r2, #0x0 + bl FUN_02013928 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_020854A0 +FUN_020854A0: ; 0x020854A0 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_0208545C + cmp r0, #0x0 + bne _020854B4 + mov r0, #0x1 + b _020854B6 +_020854B4: + mov r0, #0x0 +_020854B6: + strb r0, [r5, #0x3] + mov r1, #0x0 + strb r1, [r5, #0x2] + add r2, r5, #0x0 +_020854BE: + ldrh r0, [r4, #0x0] + add r1, r1, #0x1 + add r4, r4, #0x2 + strh r0, [r2, #0x1c] + add r2, r2, #0x2 + cmp r1, #0x2 + blt _020854BE + ldrh r0, [r6, #0x0] + strh r0, [r5, #0x14] + ldrh r0, [r6, #0x2] + strh r0, [r5, #0x16] + ldrh r0, [r6, #0x4] + strh r0, [r5, #0x18] + ldrh r0, [r6, #0x6] + strh r0, [r5, #0x1a] + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_020854E0 +FUN_020854E0: ; 0x020854E0 + push {r3-r7, lr} + sub sp, #0x8 + add r5, r0, #0x0 + add r7, r1, #0x0 + add r6, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_02025838 + str r0, [sp, #0x4] + ldr r0, [sp, #0x20] + mov r1, #0x1c + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x1c + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [sp, #0x0] + strb r0, [r4, #0xf] + ldr r0, [sp, #0x4] + strb r6, [r4, #0xe] + str r0, [r4, #0x18] + mov r0, #0x1 + strh r0, [r4, #0x0] + str r7, [r4, #0x8] + mov r0, #0x0 + strh r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r5, [r4, #0x10] + bl FUN_020256BC + str r0, [r4, #0x14] + bl FUN_02025658 + ldr r0, [r4, #0x14] + mov r1, #0xff + add r2, r6, #0x0 + add r3, r5, #0x0 + bl FUN_020256DC + add r0, r4, #0x0 + add sp, #0x8 + pop {r3-r7, pc} + + thumb_func_start FUN_02085538 +FUN_02085538: ; 0x02085538 + push {r3-r7, lr} + add r7, r0, #0x0 + add r5, r1, #0x0 + add r0, r3, #0x0 + mov r1, #0x1c + add r6, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x1c + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x0 + strh r0, [r4, #0x0] + str r5, [r4, #0x8] + strh r6, [r4, #0xc] + add r0, r7, #0x0 + str r7, [r4, #0x10] + bl FUN_02025838 + ldr r3, [sp, #0x0] + add r1, r5, #0x0 + add r2, r6, #0x0 + str r0, [r4, #0x18] + bl FUN_020258B0 + str r0, [r4, #0x14] + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02085578 +FUN_02085578: ; 0x02085578 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r7, #0x0 + mov r1, #0x1c + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x1c + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x0 + strh r0, [r4, #0x0] + str r5, [r4, #0x10] + add r0, r7, #0x0 + bl FUN_020256BC + str r0, [r4, #0x14] + ldr r2, [r4, #0x14] + add r0, r6, #0x0 + mov r1, #0xa9 + bl FUN_020671BC + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020855B0 +FUN_020855B0: ; 0x020855B0 + push {r3-r7, lr} + add r7, r2, #0x0 + add r5, r0, #0x0 + add r6, r1, #0x0 + add r0, r7, #0x0 + mov r1, #0x1c + bl FUN_020169D8 + mov r1, #0x0 + mov r2, #0x1c + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x0 + strh r0, [r4, #0x0] + add r0, r7, #0x0 + str r5, [r4, #0x10] + bl FUN_020256BC + add r1, r6, #0x0 + str r0, [r4, #0x14] + bl FUN_020257D0 + add r0, r4, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020855E4 +FUN_020855E4: ; 0x020855E4 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_020855E8 +FUN_020855E8: ; 0x020855E8 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020855E4 + cmp r0, #0x0 + bne _020855FC + mov r0, #0x0 + pop {r4-r6, pc} +_020855FC: + ldr r0, [r5, #0x18] + ldr r3, [r5, #0x14] + add r1, r4, #0x0 + add r2, r6, #0x0 + bl FUN_02025888 + mov r0, #0x1 + pop {r4-r6, pc} + + thumb_func_start FUN_0208560C +FUN_0208560C: ; 0x0208560C + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_020855E4 + cmp r0, #0x0 + bne _0208561E + mov r0, #0x0 + pop {r3-r5, pc} +_0208561E: + ldr r2, [r5, #0x14] + add r0, r4, #0x0 + mov r1, #0xa9 + bl FUN_02067830 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_0208562C +FUN_0208562C: ; 0x0208562C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + beq _0208563A + bl FUN_02016A18 +_0208563A: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02085644 +FUN_02085644: ; 0x02085644 + push {r3-r7, lr} + add r5, r1, #0x0 + mov r1, #0x0 + add r7, r0, #0x0 + add r4, r2, #0x0 + str r1, [sp, #0x0] + bl FUN_02025864 + add r6, r0, #0x0 + mov r0, #0x0 + mvn r0, r0 + cmp r6, r0 + beq _0208569E + add r0, r4, #0x0 + bl FUN_020256BC + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xa9 + add r2, r4, #0x0 + bl FUN_020671BC + add r0, r7, #0x0 + mov r1, #0x0 + add r2, r6, #0x0 + add r3, r4, #0x0 + bl FUN_02025888 + add r0, r4, #0x0 + bl FUN_02025658 + add r0, r5, #0x0 + mov r1, #0xa9 + add r2, r4, #0x0 + bl FUN_02067830 + add r0, r5, #0x0 + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r4, #0x0 + bl FUN_02016A18 + add r0, r6, #0x0 +_0208569E: + pop {r3-r7, pc} + + thumb_func_start FUN_020856A0 +FUN_020856A0: ; 0x020856A0 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r2, #0x0 + mov r1, #0x0 + add r2, r5, #0x0 + add r7, r0, #0x0 + str r1, [sp, #0x0] + bl FUN_020258B0 + add r6, r0, #0x0 + bne _020856BC + mov r0, #0x0 + mvn r0, r0 + pop {r3-r7, pc} +_020856BC: + bl FUN_020257CC + bl FUN_0206EAD8 + str r0, [sp, #0x0] + add r0, r4, #0x0 + mov r1, #0xa9 + add r2, r6, #0x0 + bl FUN_02067830 + add r0, r4, #0x0 + mov r1, #0x6 + add r2, sp, #0x0 + bl FUN_02067830 + add r0, r7, #0x0 + mov r1, #0x0 + add r2, r5, #0x0 + bl FUN_02025878 + add r0, r6, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020856F0 +FUN_020856F0: ; 0x020856F0 + push {r3-r7, lr} + add r5, r1, #0x0 + add r4, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x34 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x34 + add r6, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x0 + strh r0, [r6, #0x0] + add r0, r4, #0x0 + bl FUN_020257C0 + str r0, [r6, #0x8] + mov r0, #0x8 + add r1, r5, #0x0 + bl FUN_020219F4 + str r0, [r6, #0x10] + add r0, r4, #0x0 + bl FUN_020257C4 + add r1, r0, #0x0 + ldr r0, [r6, #0x10] + bl FUN_02021E28 + add r0, r4, #0x0 + bl FUN_020257CC + strb r0, [r6, #0xf] + add r0, r4, #0x0 + bl FUN_020257D8 + strb r0, [r6, #0xd] + add r0, r4, #0x0 + bl FUN_020257DC + strb r0, [r6, #0xe] + mov r5, #0x0 + mov r7, #0x2 +_02085748: + lsl r1, r5, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + add r2, r7, #0x0 + bl FUN_020257E0 + lsl r1, r5, #0x1 + add r1, r6, r1 + strh r0, [r1, #0x14] + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x3 + blo _02085748 + add r7, r6, #0x0 + mov r5, #0x0 + add r7, #0x1a +_0208576A: + lsl r1, r5, #0x18 + add r0, r4, #0x0 + lsr r1, r1, #0x18 + bl FUN_02025814 + add r1, r0, #0x0 + lsl r0, r5, #0x3 + add r0, r7, r0 + bl FUN_02013960 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x3 + blo _0208576A + add r0, r6, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_0208578C +FUN_0208578C: ; 0x0208578C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x10] + cmp r0, #0x0 + beq _0208579A + bl FUN_02021A20 +_0208579A: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020857A4 +FUN_020857A4: ; 0x020857A4 + push {r3-r7, lr} + add r7, r1, #0x0 + add r4, r7, #0x0 + add r6, r0, #0x0 + mov r5, #0x0 + add r4, #0x1a +_020857B0: + lsl r1, r5, #0x3 + lsl r2, r5, #0x18 + add r0, r6, #0x0 + add r1, r4, r1 + lsr r2, r2, #0x18 + bl FUN_02025824 + add r0, r5, #0x1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x3 + blo _020857B0 + ldrb r1, [r7, #0xf] + add r0, r6, #0x0 + bl FUN_020257D0 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020857D4 +FUN_020857D4: ; 0x020857D4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020857F4 + bl FUN_02006290 + cmp r0, #0x0 + beq _020857F4 + ldr r0, [r4, #0x0] + bl FUN_02006260 + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} +_020857F4: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_020857F8 +FUN_020857F8: ; 0x020857F8 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_0200628C + mov r2, #0x1 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0x28 + lsl r2, r2, #0xc + bl FUN_0201681C + add r0, r4, #0x0 + mov r1, #0x1c + mov r2, #0x28 + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0x1c + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r1, #0x28 + str r1, [r4, #0x0] + ldr r0, [r5, #0x14] + bl FUN_020856F0 + str r0, [r4, #0x10] + ldr r0, [r5, #0x10] + bl LoadPlayerDataAddress + ldr r1, [r4, #0x10] + str r0, [r1, #0x4] + ldrh r0, [r5, #0x0] + cmp r0, #0x1 + bne _02085844 + ldrb r1, [r5, #0xf] + ldr r0, [r4, #0x10] + strb r1, [r0, #0xf] +_02085844: + ldr r1, [r4, #0x10] + ldrb r0, [r1, #0xf] + cmp r0, #0xc + blo _02085850 + mov r0, #0x0 + strb r0, [r1, #0xf] +_02085850: + ldrh r1, [r5, #0x0] + ldr r0, [r4, #0x10] + strh r1, [r0, #0x0] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0208585C +FUN_0208585C: ; 0x0208585C + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_0200628C + add r6, r0, #0x0 + ldr r0, [r5, #0x0] + cmp r0, #0x4 + bls _02085878 + b _02085990 +_02085878: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02085884: ; jump table (using 16-bit offset) + .short _0208588E - _02085884 - 2; case 0 + .short _020858A6 - _02085884 - 2; case 1 + .short _020858D2 - _02085884 - 2; case 2 + .short _02085900 - _02085884 - 2; case 3 + .short _0208595E - _02085884 - 2; case 4 +_0208588E: + ldrh r1, [r6, #0x0] + ldr r0, [r4, #0x10] + strh r1, [r0, #0x0] + ldr r0, _02085994 ; =0x020FCAA8 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x0] + bl FUN_02006234 + str r0, [r4, #0xc] + mov r0, #0x1 + str r0, [r5, #0x0] + b _02085990 +_020858A6: + add r0, r4, #0x0 + add r0, #0xc + bl FUN_020857D4 + cmp r0, #0x0 + beq _02085990 + ldr r0, [r4, #0x10] + ldrh r1, [r0, #0x0] + cmp r1, #0x3 + beq _020858C6 + ldr r0, _02085998 ; =0x0000FFFF + cmp r1, r0 + bne _020858CC + mov r0, #0x2 + str r0, [r5, #0x0] + b _02085990 +_020858C6: + mov r0, #0x2 + str r0, [r5, #0x0] + b _02085990 +_020858CC: + mov r0, #0x3 + str r0, [r5, #0x0] + b _02085990 +_020858D2: + ldrh r0, [r6, #0x0] + cmp r0, #0x1 + bne _020858FC + ldr r1, [r4, #0x10] + ldrh r0, [r1, #0x0] + cmp r0, #0x3 + bne _020858F8 + ldr r0, [r6, #0x14] + bl FUN_020857A4 + ldr r0, [r6, #0x10] + bl FUN_02029FC8 + mov r1, #0x2 + bl FUN_0202A170 + mov r0, #0x1 + str r0, [r6, #0x4] + b _020858FC +_020858F8: + mov r0, #0x0 + str r0, [r6, #0x4] +_020858FC: + mov r0, #0x1 + pop {r4-r6, pc} +_02085900: + ldr r2, [r6, #0x10] + ldr r3, [r4, #0x0] + mov r0, #0x2 + mov r1, #0x0 + bl FUN_02085338 + str r0, [r4, #0x8] + ldr r0, [r4, #0x10] + add r1, r0, #0x0 + ldrb r0, [r0, #0x2] + add r1, #0x1a + lsl r0, r0, #0x3 + add r0, r1, r0 + bl FUN_0201385C + cmp r0, #0x0 + beq _02085938 + ldr r1, [r4, #0x10] + add r0, r4, #0x0 + add r2, r1, #0x0 + ldrb r1, [r1, #0x2] + add r2, #0x1a + add r0, #0x14 + lsl r1, r1, #0x3 + add r1, r2, r1 + bl FUN_02013960 + b _02085942 +_02085938: + add r0, r4, #0x0 + add r0, #0x14 + mov r1, #0x3 + bl FUN_0201373C +_02085942: + add r1, r4, #0x0 + ldr r0, [r4, #0x8] + add r1, #0x14 + bl FUN_020853BC + ldr r0, _0208599C ; =0x020FCAB8 + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x0] + bl FUN_02006234 + str r0, [r4, #0xc] + mov r0, #0x4 + str r0, [r5, #0x0] + b _02085990 +_0208595E: + add r0, r4, #0x0 + add r0, #0xc + bl FUN_020857D4 + cmp r0, #0x0 + beq _02085990 + ldr r0, [r4, #0x8] + bl FUN_020853E4 + cmp r0, #0x0 + bne _02085986 + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x8] + add r2, r1, #0x0 + ldrb r1, [r1, #0x2] + add r2, #0x1a + lsl r1, r1, #0x3 + add r1, r2, r1 + bl FUN_020853FC +_02085986: + ldr r0, [r4, #0x8] + bl FUN_020853A8 + mov r0, #0x0 + str r0, [r5, #0x0] +_02085990: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_02085994: .word 0x020FCAA8 +_02085998: .word 0x0000FFFF +_0208599C: .word 0x020FCAB8 + + thumb_func_start FUN_020859A0 +FUN_020859A0: ; 0x020859A0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + ldr r0, [r4, #0x10] + bl FUN_0208578C + add r0, r5, #0x0 + bl FUN_0200627C + ldr r0, [r4, #0x0] + bl FUN_020168D0 + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_020859C0 +FUN_020859C0: ; 0x020859C0 + push {r3-r7, lr} + mov r2, #0x2 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0x35 + lsl r2, r2, #0x12 + bl FUN_0201681C + mov r0, #0x35 + bl FUN_02230F3C + bl FUN_0222F7E0 + ldr r1, _02085BA0 ; =0x0000042C + add r0, r5, #0x0 + mov r2, #0x35 + bl FUN_02006268 + ldr r2, _02085BA0 ; =0x0000042C + mov r1, #0x0 + add r4, r0, #0x0 + blx Call_FillMemWithValue + bl FUN_0222E2BC + mov r1, #0x23 + lsl r1, r1, #0x4 + str r0, [r4, r1] + add r0, r5, #0x0 + bl FUN_0200628C + str r0, [r4, #0x0] + mov r0, #0x35 + bl FUN_020669C0 + ldr r1, _02085BA4 ; =0x00000428 + mov r2, #0xff + str r0, [r4, r1] + add r0, r4, #0x0 + add r0, #0xd4 + str r2, [r0, #0x0] + mov r0, #0x0 + sub r1, #0x10 + str r0, [r4, r1] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x20] + bl FUN_02029E0C + asr r1, r0, #0x2 + lsr r1, r1, #0x1d + add r1, r0, r1 + asr r0, r1, #0x3 + add r1, r0, #0x1 + ldr r0, _02085BA8 ; =0x0000041C + str r1, [r4, r0] + ldr r1, [r4, r0] + cmp r1, #0xa + ble _02085A38 + mov r1, #0xa + str r1, [r4, r0] +_02085A38: + ldr r0, [r4, #0x0] + bl FUN_02085D84 + mov r1, #0xf1 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, #0x0] + bl FUN_02085D84 + mov r1, #0xf2 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x20] + bl FUN_02029CEC + str r0, [r4, #0x64] + mov r6, #0x0 + add r5, r4, #0x0 + mov r7, #0xff +_02085A60: + ldr r0, [r4, #0x0] + add r1, r6, #0x0 + ldr r0, [r0, #0x20] + bl FUN_02029C8C + str r7, [r5, #0x4] + str r0, [r5, #0x8] + add r6, r6, #0x1 + add r5, #0x8 + cmp r6, #0xc + blt _02085A60 + mov r5, #0x0 + add r6, r5, #0x0 + mov r7, #0xa1 +_02085A7C: + ldr r0, [r4, #0x0] + add r0, r0, r6 + ldr r0, [r0, #0x4] + cmp r0, #0x0 + beq _02085A9A + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020671BC + cmp r0, #0x0 + beq _02085A9A + lsl r0, r0, #0x3 + add r0, r4, r0 + sub r0, r0, #0x4 + str r5, [r0, #0x0] +_02085A9A: + add r5, r5, #0x1 + add r6, r6, #0x4 + cmp r5, #0x6 + blt _02085A7C + mov r0, #0x35 + bl FUN_02016B94 + add r1, r4, #0x0 + add r1, #0xe4 + str r0, [r1, #0x0] + mov r0, #0x40 + mov r1, #0x35 + bl FUN_0201C24C + mov r0, #0x35 + bl FUN_02002FD0 + add r1, r4, #0x0 + add r1, #0xe8 + str r0, [r1, #0x0] + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_020038F0 + add r0, r4, #0x0 + add r0, #0xe8 + mov r2, #0x2 + ldr r0, [r0, #0x0] + mov r1, #0x0 + lsl r2, r2, #0x8 + mov r3, #0x35 + bl FUN_02003008 + add r0, r4, #0x0 + add r0, #0xe8 + mov r1, #0x1 + ldr r0, [r0, #0x0] + lsl r2, r1, #0x9 + mov r3, #0x35 + bl FUN_02003008 + add r0, r4, #0x0 + add r0, #0xe8 + mov r1, #0x2 + ldr r0, [r0, #0x0] + lsl r2, r1, #0x8 + mov r3, #0x35 + bl FUN_02003008 + add r0, r4, #0x0 + add r0, #0xe8 + mov r2, #0x2 + ldr r0, [r0, #0x0] + mov r1, #0x3 + lsl r2, r2, #0x8 + mov r3, #0x35 + bl FUN_02003008 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + bl FUN_02230F80 + bl FUN_0222E360 + mov r0, #0x35 + bl FUN_02006D98 + mov r1, #0x69 + lsl r1, r1, #0x2 + str r0, [r4, r1] + mov r0, #0x35 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_02014BF4 + mov r1, #0x97 + lsl r1, r1, #0x2 + str r0, [r4, r1] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x24] + bl FUN_02025084 + add r5, r0, #0x0 + add r0, r4, #0x0 + add r1, r4, #0x0 + add r0, #0xe4 + add r1, #0xe8 + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + add r2, r5, #0x0 + bl FUN_0222ED34 + add r0, r4, #0x0 + add r1, r4, #0x0 + add r0, #0xe4 + add r1, #0xe8 + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + add r2, r5, #0x0 + bl FUN_0222EDBC + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_0222E7E8 + bl FUN_0201CC08 + mov r0, #0x4 + bl FUN_0201CC24 + add r0, r4, #0x0 + bl FUN_022300E4 + ldr r0, _02085BAC ; =0x022310CD + add r1, r4, #0x0 + bl FUN_02015F10 + add r0, r4, #0x0 + bl FUN_0222DD1C + mov r1, #0x0 + mov r0, #0x3b + add r2, r1, #0x0 + bl FUN_0200433C + mov r0, #0x1 + pop {r3-r7, pc} + nop +_02085BA0: .word 0x0000042C +_02085BA4: .word 0x00000428 +_02085BA8: .word 0x0000041C +_02085BAC: .word 0x022310CD + + thumb_func_start FUN_02085BB0 +FUN_02085BB0: ; 0x02085BB0 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_02006278 + ldr r1, [r5, #0x0] + add r4, r0, #0x0 + cmp r1, #0x0 + beq _02085BCA + cmp r1, #0x1 + beq _02085BD8 + cmp r1, #0x2 + beq _02085BF6 + b _02085C02 +_02085BCA: + bl FUN_0200E308 + cmp r0, #0x1 + bne _02085C02 + mov r0, #0x1 + str r0, [r5, #0x0] + b _02085C02 +_02085BD8: + bl FUN_0222F990 + cmp r0, #0x0 + bne _02085BE6 + mov r0, #0x2 + str r0, [r5, #0x0] + b _02085C02 +_02085BE6: + mov r0, #0x69 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02006ED4 + bl FUN_0222E3A0 + b _02085C02 +_02085BF6: + bl FUN_0200E308 + cmp r0, #0x1 + bne _02085C02 + mov r0, #0x1 + pop {r3-r5, pc} +_02085C02: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02085C08 +FUN_02085C08: ; 0x02085C08 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x4 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x8 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x4 + mov r1, #0x0 + bl FUN_0201E74C + mov r0, #0x8 + mov r1, #0x0 + bl FUN_0201E74C + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x2 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x4 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x5 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x6 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + mov r1, #0x7 + bl FUN_020178A0 + add r0, r4, #0x0 + add r0, #0xe4 + ldr r0, [r0, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + mov r1, #0x0 + bl FUN_02003038 + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + mov r1, #0x1 + bl FUN_02003038 + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + mov r1, #0x2 + bl FUN_02003038 + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + mov r1, #0x3 + bl FUN_02003038 + add r0, r4, #0x0 + add r0, #0xe8 + ldr r0, [r0, #0x0] + bl FUN_02002FEC + mov r1, #0xf1 + lsl r1, r1, #0x2 + ldr r1, [r4, r1] + ldr r0, [r4, #0x0] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl FUN_02085D8C + ldr r0, _02085D64 ; =0x00000428 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_0222DAEC + mov r0, #0x73 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_0202212C + mov r0, #0x69 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_020072E8 + mov r0, #0x97 + lsl r0, r0, #0x2 + ldr r0, [r4, r0] + bl FUN_02014C28 + add r0, r4, #0x0 + bl FUN_0222DD38 + add r0, r4, #0x0 + add r0, #0xd4 + bl FUN_0222E874 + bl FUN_0201C29C + mov r0, #0x23 + lsl r0, r0, #0x4 + ldr r0, [r4, r0] + bl FUN_020223BC + mov r0, #0x35 + bl FUN_02230F70 + add r0, r5, #0x0 + bl FUN_0200627C + bl FUN_0201CD04 + mov r0, #0x35 + bl FUN_020168D0 + ldr r0, _02085D68 ; =0x00000008 + bl FUN_02005F60 + mov r0, #0x1 + pop {r3-r5, pc} + nop +_02085D64: .word 0x00000428 +_02085D68: .word 0x00000008 + + thumb_func_start FUN_02085D6C +FUN_02085D6C: ; 0x02085D6C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, r1 + bge _02085D7C + bl ErrorHandling + mov r1, #0x0 +_02085D7C: + lsl r0, r1, #0x2 + add r0, r4, r0 + ldr r0, [r0, #0x4] + pop {r4, pc} + + thumb_func_start FUN_02085D84 +FUN_02085D84: ; 0x02085D84 + add r0, #0x2c + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02085D8C +FUN_02085D8C: ; 0x02085D8C + add r0, #0x2c + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02085D94 +FUN_02085D94: ; 0x02085D94 + add r0, #0x2d + ldrb r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02085D9C +FUN_02085D9C: ; 0x02085D9C + add r0, #0x2d + strb r1, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02085DA4 +FUN_02085DA4: ; 0x02085DA4 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl FUN_0204652C + add r6, r0, #0x0 + add r0, r5, #0x0 + ldr r7, [r6, #0x8] + bl FUN_02046528 + str r0, [sp, #0x4] + ldr r0, [r6, #0x14] + cmp r0, #0x6 + bls _02085DC2 + b _02085F38 +_02085DC2: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02085DCE: ; jump table (using 16-bit offset) + .short _02085DDC - _02085DCE - 2; case 0 + .short _02085E38 - _02085DCE - 2; case 1 + .short _02085E48 - _02085DCE - 2; case 2 + .short _02085E66 - _02085DCE - 2; case 3 + .short _02085EA6 - _02085DCE - 2; case 4 + .short _02085F14 - _02085DCE - 2; case 5 + .short _02085F20 - _02085DCE - 2; case 6 +_02085DDC: + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r6, #0x10] + bl FUN_02029C80 + str r0, [r7, #0x20] + add r0, r7, #0x0 + mov r1, #0x0 + bl FUN_02085D8C + ldr r0, [r6, #0x10] + bl FUN_0206BB1C + str r0, [r7, #0x1c] + bl FUN_0206B9AC + mov r4, #0x0 + str r0, [sp, #0x0] + str r0, [r7, #0x0] + cmp r0, #0x0 + ble _02085E1E + add r5, r7, #0x0 +_02085E0A: + ldr r0, [r7, #0x1c] + add r1, r4, #0x0 + bl FUN_0206B9B0 + str r0, [r5, #0x4] + ldr r0, [sp, #0x0] + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, r0 + blt _02085E0A +_02085E1E: + cmp r4, #0x6 + bge _02085E32 + lsl r0, r4, #0x2 + add r1, r7, r0 + mov r0, #0x0 +_02085E28: + add r4, r4, #0x1 + str r0, [r1, #0x4] + add r1, r1, #0x4 + cmp r4, #0x6 + blt _02085E28 +_02085E32: + mov r0, #0x1 + str r0, [r6, #0x14] + b _02085F38 +_02085E38: + ldr r1, _02085F40 ; =0x020FCAD8 + add r0, r5, #0x0 + add r2, r7, #0x0 + bl FUN_02046500 + mov r0, #0x2 + str r0, [r6, #0x14] + b _02085F38 +_02085E48: + ldr r0, [r6, #0x8] + bl FUN_02085D94 + cmp r0, #0x0 + beq _02085E5A + cmp r0, #0x1 + beq _02085E60 + bl ErrorHandling +_02085E5A: + mov r0, #0x5 + str r0, [r6, #0x14] + b _02085F38 +_02085E60: + mov r0, #0x3 + str r0, [r6, #0x14] + b _02085F38 +_02085E66: + ldr r4, [r6, #0xc] + ldr r0, [r7, #0x1c] + str r0, [r4, #0x0] + ldr r0, [r6, #0x10] + bl FUN_0206F158 + str r0, [r4, #0x4] + ldr r0, [r6, #0x10] + bl FUN_02025838 + str r0, [r4, #0x8] + add r0, r4, #0x0 + mov r1, #0x0 + add r0, #0x22 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0xf + add r0, #0x20 + strb r1, [r0, #0x0] + ldr r0, [r7, #0x24] + ldr r1, _02085F44 ; =0x020F96DC + str r0, [r4, #0xc] + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02046500 + mov r0, #0x4 + str r0, [r6, #0x14] + b _02085F38 +_02085EA6: + ldr r0, [r6, #0x8] + ldr r4, [r6, #0xc] + bl FUN_02085D84 + add r0, r0, #0x1 + str r0, [sp, #0x8] + add r4, #0x22 + ldrb r1, [r4, #0x0] + cmp r1, #0x7 + beq _02085F0E + ldr r0, [r6, #0x8] + bl FUN_02085D6C + mov r1, #0xa1 + add r2, sp, #0x8 + add r5, r0, #0x0 + bl FUN_02067830 + ldr r1, [sp, #0x8] + ldr r0, [r7, #0x20] + sub r1, r1, #0x1 + bl FUN_02029C8C + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0xaa + bl FUN_02067830 + ldr r1, [sp, #0x8] + ldr r0, [r7, #0x20] + sub r1, r1, #0x1 + bl FUN_02029C8C + mov r1, #0x0 + bl FUN_02029CC8 + bl FUN_02029CE0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r4, r0, #0x0 + ldr r0, [sp, #0x4] + ldr r0, [r0, #0xc] + bl FUN_02022504 + lsl r2, r4, #0x18 + add r1, r5, #0x0 + lsr r2, r2, #0x18 + bl FUN_02061798 +_02085F0E: + mov r0, #0x1 + str r0, [r6, #0x14] + b _02085F38 +_02085F14: + add r0, r5, #0x0 + bl FUN_0204AF84 + mov r0, #0x6 + str r0, [r6, #0x14] + b _02085F38 +_02085F20: + ldr r0, [r6, #0xc] + bl FUN_02016A18 + ldr r0, [r6, #0x8] + bl FUN_02016A18 + add r0, r6, #0x0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_02085F38: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_02085F40: .word 0x020FCAD8 +_02085F44: .word 0x020F96DC + + thumb_func_start FUN_02085F48 +FUN_02085F48: ; 0x02085F48 + push {r4-r6, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0xb + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0x0 + add r2, r4, #0x0 + mov r1, #0x18 + mov r0, #0x0 +_02085F5E: + strb r0, [r2, #0x0] + add r2, r2, #0x1 + sub r1, r1, #0x1 + bne _02085F5E + mov r0, #0xb + mov r1, #0x30 + str r5, [r4, #0x10] + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x30 + str r0, [r4, #0x8] + blx Call_FillMemWithValue + add r0, r5, #0x0 + bl LoadPlayerDataAddress + ldr r1, [r4, #0x8] + str r0, [r1, #0x24] + ldr r0, [r4, #0x8] + mov r1, #0x40 + str r5, [r0, #0x28] + mov r0, #0xb + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + str r0, [r4, #0xc] + blx Call_FillMemWithValue + ldr r1, _02085FA8 ; =FUN_02085DA4 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + nop +_02085FA8: .word FUN_02085DA4 + + thumb_func_start FUN_02085FAC +FUN_02085FAC: ; 0x02085FAC + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02085FC8 ; =0x0000032A + cmp r4, r0 + blo _02085FBA + bl ErrorHandling +_02085FBA: + mov r0, #0xa + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02085FCC ; =0x020FCAE8 + ldrh r0, [r0, r1] + pop {r4, pc} + nop +_02085FC8: .word 0x0000032A +_02085FCC: .word 0x020FCAE8 + + thumb_func_start FUN_02085FD0 +FUN_02085FD0: ; 0x02085FD0 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02085FEC ; =0x0000032A + cmp r4, r0 + blo _02085FDE + bl ErrorHandling +_02085FDE: + mov r0, #0xa + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02085FF0 ; =0x020FCAEA + ldrb r0, [r0, r1] + pop {r4, pc} + nop +_02085FEC: .word 0x0000032A +_02085FF0: .word 0x020FCAEA + + thumb_func_start FUN_02085FF4 +FUN_02085FF4: ; 0x02085FF4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02086010 ; =0x0000032A + cmp r4, r0 + blo _02086002 + bl ErrorHandling +_02086002: + mov r0, #0xa + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02086014 ; =0x020FCAEC + ldrb r0, [r0, r1] + pop {r4, pc} + nop +_02086010: .word 0x0000032A +_02086014: .word 0x020FCAEC + + thumb_func_start FUN_02086018 +FUN_02086018: ; 0x02086018 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02086034 ; =0x0000032A + cmp r4, r0 + blo _02086026 + bl ErrorHandling +_02086026: + mov r0, #0xa + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02086038 ; =0x020FCAED + ldrb r0, [r0, r1] + pop {r4, pc} + nop +_02086034: .word 0x0000032A +_02086038: .word 0x020FCAED + + thumb_func_start FUN_0208603C +FUN_0208603C: ; 0x0208603C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02086058 ; =0x0000032A + cmp r4, r0 + blo _0208604A + bl ErrorHandling +_0208604A: + mov r0, #0xa + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _0208605C ; =0x020FCAEE + ldrh r0, [r0, r1] + pop {r4, pc} + nop +_02086058: .word 0x0000032A +_0208605C: .word 0x020FCAEE + + thumb_func_start FUN_02086060 +FUN_02086060: ; 0x02086060 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _0208607C ; =0x0000032A + cmp r4, r0 + blo _0208606E + bl ErrorHandling +_0208606E: + mov r0, #0xa + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02086080 ; =0x020FCAF0 + ldrb r0, [r0, r1] + pop {r4, pc} + nop +_0208607C: .word 0x0000032A +_02086080: .word 0x020FCAF0 + + thumb_func_start FUN_02086084 +FUN_02086084: ; 0x02086084 + push {r3-r5, lr} + add r5, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + bl FUN_02015F1C + mov r2, #0x1 + mov r0, #0x3 + mov r1, #0x47 + lsl r2, r2, #0x12 + bl FUN_0201681C + add r0, r5, #0x0 + mov r1, #0x80 + mov r2, #0x47 + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0x80 + add r4, r0, #0x0 + blx Call_FillMemWithValue + add r0, r5, #0x0 + bl FUN_0200628C + str r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02024FF4 + str r0, [r4, #0x10] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x10] + bl FUN_02025084 + str r0, [r4, #0x14] + bl FUN_02086468 + str r0, [r4, #0x38] + mov r0, #0x47 + bl FUN_02006D98 + str r0, [r4, #0x3c] + mov r0, #0x47 + bl FUN_02016B94 + str r0, [r4, #0x4] + mov r0, #0x40 + mov r1, #0x47 + bl FUN_0201C24C + mov r0, #0x47 + mov r1, #0x1 + mov r2, #0x0 + bl FUN_02014BF4 + str r0, [r4, #0x54] + mov r0, #0x47 + bl FUN_02002FD0 + str r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_020038F0 + mov r2, #0x2 + ldr r0, [r4, #0x8] + mov r1, #0x0 + lsl r2, r2, #0x8 + mov r3, #0x47 + bl FUN_02003008 + mov r1, #0x2 + ldr r0, [r4, #0x8] + lsl r2, r1, #0x8 + mov r3, #0x47 + bl FUN_02003008 + mov r1, #0x1 + ldr r0, [r4, #0x8] + lsl r2, r1, #0x9 + mov r3, #0x47 + bl FUN_02003008 + mov r2, #0x2 + ldr r0, [r4, #0x8] + mov r1, #0x3 + lsl r2, r2, #0x8 + mov r3, #0x47 + bl FUN_02003008 + bl FUN_02086414 + bl FUN_0208643C + bl FUN_0208650C + ldr r0, [r4, #0x4] + bl FUN_0208654C + add r0, r4, #0x4 + bl FUN_02086E48 + bl FUN_0200541C + ldr r0, _02086164 ; =FUN_02086664 + add r1, r4, #0x0 + bl FUN_02015F10 + mov r0, #0x1 + pop {r3-r5, pc} + nop +_02086164: .word FUN_02086664 + + thumb_func_start FUN_02086168 +FUN_02086168: ; 0x02086168 + push {r3-r5, lr} + add r5, r1, #0x0 + bl FUN_02006278 + ldr r1, [r5, #0x0] + add r4, r0, #0x0 + cmp r1, #0x0 + beq _0208617E + cmp r1, #0x1 + beq _020861AA + b _020861C6 +_0208617E: + bl FUN_0200E308 + cmp r0, #0x1 + bne _0208618C + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] +_0208618C: + ldr r0, [r4, #0x0] + mov r1, #0x5 + ldr r0, [r0, #0xc] + mov r2, #0x0 + bl FUN_020671BC + ldr r1, _020861D8 ; =0x000001EA + cmp r0, r1 + bne _020861A4 + mov r0, #0x1 + str r0, [r4, #0x58] + b _020861D2 +_020861A4: + mov r0, #0x0 + str r0, [r4, #0x58] + b _020861D2 +_020861AA: + bl FUN_02086FA8 + cmp r0, #0x0 + bne _020861BA + ldr r0, [r5, #0x0] + add r0, r0, #0x1 + str r0, [r5, #0x0] + b _020861D2 +_020861BA: + ldr r0, [r4, #0x3c] + bl FUN_02006ED4 + bl FUN_02086698 + b _020861D2 +_020861C6: + bl FUN_0200E308 + cmp r0, #0x1 + bne _020861D2 + mov r0, #0x1 + pop {r3-r5, pc} +_020861D2: + mov r0, #0x0 + pop {r3-r5, pc} + nop +_020861D8: .word 0x000001EA + + thumb_func_start FUN_020861DC +FUN_020861DC: ; 0x020861DC + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + ldr r0, [r4, #0x38] + bl FUN_020223BC + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x3 + mov r1, #0x0 + bl FUN_0201E6E4 + mov r0, #0x4 + mov r1, #0x0 + bl FUN_0201E74C + ldr r0, [r4, #0x8] + mov r1, #0x0 + bl FUN_02003038 + ldr r0, [r4, #0x8] + mov r1, #0x2 + bl FUN_02003038 + ldr r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_02003038 + ldr r0, [r4, #0x8] + mov r1, #0x3 + bl FUN_02003038 + ldr r0, [r4, #0x8] + bl FUN_02002FEC + ldr r0, [r4, #0x4] + mov r1, #0x1 + bl FUN_020178A0 + ldr r0, [r4, #0x4] + mov r1, #0x2 + bl FUN_020178A0 + ldr r0, [r4, #0x4] + mov r1, #0x3 + bl FUN_020178A0 + ldr r0, [r4, #0x4] + mov r1, #0x4 + bl FUN_020178A0 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + bl FUN_0201C29C + ldr r0, [r4, #0x3c] + bl FUN_020072E8 + ldr r0, [r4, #0x54] + bl FUN_02014C28 + add r0, r4, #0x4 + bl FUN_02086ED4 + add r0, r5, #0x0 + bl FUN_0200627C + mov r0, #0x47 + bl FUN_020168D0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02086280 +FUN_02086280: ; 0x02086280 + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x6 + bls _02086294 + b _020863CE +_02086294: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020862A0: ; jump table (using 16-bit offset) + .short _020862AE - _020862A0 - 2; case 0 + .short _020862C4 - _020862A0 - 2; case 1 + .short _020862D6 - _020862A0 - 2; case 2 + .short _0208633A - _020862A0 - 2; case 3 + .short _02086396 - _020862A0 - 2; case 4 + .short _020863B6 - _020862A0 - 2; case 5 + .short _020863C4 - _020862A0 - 2; case 6 +_020862AE: + ldr r0, [r4, #0xc] + mov r1, #0xb + bl FUN_021ED940 + add r0, r5, #0x0 + bl FUN_0204AF3C + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020863CE +_020862C4: + ldr r1, _020863D4 ; =0x020FCE14 + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020863CE +_020862D6: + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r5, [r4, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + add r7, r0, #0x0 + ldr r0, [r6, #0x1c] + ldr r0, [r0, #0x0] + bl FUN_02034824 + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0x4c + add r2, sp, #0x8 + bl FUN_02067830 + mov r0, #0xb + str r0, [sp, #0x0] + ldr r3, [sp, #0x4] + add r0, r5, #0x0 + add r1, r7, #0x0 + mov r2, #0x6 + bl FUN_0208089C + add r0, r5, #0x0 + mov r1, #0xb2 + mov r2, #0x0 + bl FUN_02067830 + add r0, r6, #0x0 + bl FUN_020377AC + ldr r1, [r4, #0xc] + bl FUN_0202C144 + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _02086334 + mov r0, #0x3 + str r0, [r4, #0x0] + b _020863CE +_02086334: + mov r0, #0x5 + str r0, [r4, #0x0] + b _020863CE +_0208633A: + add r0, r5, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + ldr r0, [r4, #0xc] + mov r1, #0x5 + mov r2, #0x0 + bl FUN_020671BC + add r7, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020377AC + bl LoadPlayerDataAddress + str r0, [sp, #0x0] + mov r0, #0xb + mov r1, #0x1 + add r2, r7, #0x0 + mov r3, #0xa + bl FUN_02077A84 + str r0, [r4, #0x8] + ldr r0, [r4, #0xc] + mov r1, #0x6f + mov r2, #0x0 + bl FUN_020671BC + ldr r1, [r4, #0x8] + mov r2, #0x0 + str r0, [r1, #0x10] + ldr r0, [r4, #0xc] + mov r1, #0x70 + bl FUN_020671BC + ldr r1, [r4, #0x8] + str r0, [r1, #0x8] + ldr r1, _020863D8 ; =0x020FA5FC + ldr r2, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02046500 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020863CE +_02086396: + ldr r2, [r4, #0x8] + ldr r0, [r2, #0x14] + cmp r0, #0x0 + bne _020863A8 + ldr r0, [r4, #0xc] + ldr r2, [r2, #0x18] + mov r1, #0x77 + bl FUN_02067830 +_020863A8: + ldr r0, [r4, #0x8] + bl FUN_02077AC4 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020863CE +_020863B6: + add r0, r5, #0x0 + bl FUN_0204AF84 + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + b _020863CE +_020863C4: + bl FUN_02016A18 + add sp, #0xc + mov r0, #0x1 + pop {r4-r7, pc} +_020863CE: + mov r0, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_020863D4: .word 0x020FCE14 +_020863D8: .word 0x020FA5FC + + thumb_func_start FUN_020863DC +FUN_020863DC: ; 0x020863DC + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + mov r0, #0xb + mov r1, #0x1c + bl FUN_020169D8 + add r2, r0, #0x0 + add r3, r2, #0x0 + mov r1, #0x1c + mov r0, #0x0 +_020863F2: + strb r0, [r3, #0x0] + add r3, r3, #0x1 + sub r1, r1, #0x1 + bne _020863F2 + add r3, r2, #0x0 + add r3, #0xc + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r4!, {r0-r1} + stmia r3!, {r0-r1} + ldr r1, _02086410 ; =FUN_02086280 + add r0, r5, #0x0 + bl FUN_0204640C + pop {r3-r5, pc} + .balign 4 +_02086410: .word FUN_02086280 + + thumb_func_start FUN_02086414 +FUN_02086414: ; 0x02086414 + push {r3, lr} + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02086434 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _02086438 ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + pop {r3, pc} + .balign 4 +_02086434: .word 0xFFFFE0FF +_02086438: .word 0x04001000 + + thumb_func_start FUN_0208643C +FUN_0208643C: ; 0x0208643C + push {r3, lr} + mov r0, #0x7 + str r0, [sp, #0x0] + ldr r0, _02086460 ; =0x04000050 + mov r1, #0x0 + mov r2, #0xe + mov r3, #0xb + blx G2x_SetBlendAlpha_ + mov r0, #0x8 + str r0, [sp, #0x0] + ldr r0, _02086464 ; =0x04001050 + mov r1, #0x0 + mov r2, #0xe + mov r3, #0x7 + blx G2x_SetBlendAlpha_ + pop {r3, pc} + .balign 4 +_02086460: .word 0x04000050 +_02086464: .word 0x04001050 + + thumb_func_start FUN_02086468 +FUN_02086468: ; 0x02086468 + push {r3, lr} + sub sp, #0x8 + mov r2, #0x2 + mov r1, #0x0 + ldr r0, _02086484 ; =FUN_02086488 + str r2, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x47 + add r3, r1, #0x0 + bl FUN_02022318 + add sp, #0x8 + pop {r3, pc} + nop +_02086484: .word FUN_02086488 + + thumb_func_start FUN_02086488 +FUN_02086488: ; 0x02086488 + push {r3, lr} + mov r0, #0x1 + add r1, r0, #0x0 + bl FUN_0201E6E4 + ldr r0, _020864F4 ; =0x04000008 + mov r1, #0x3 + ldrh r2, [r0, #0x0] + bic r2, r1 + mov r1, #0x1 + orr r1, r2 + strh r1, [r0, #0x0] + add r0, #0x58 + ldrh r2, [r0, #0x0] + ldr r1, _020864F8 ; =0xFFFFCFFD + and r2, r1 + strh r2, [r0, #0x0] + add r2, r1, #0x2 + ldrh r3, [r0, #0x0] + add r1, r1, #0x2 + and r3, r2 + mov r2, #0x10 + orr r2, r3 + strh r2, [r0, #0x0] + ldrh r3, [r0, #0x0] + ldr r2, _020864FC ; =0x0000CFFB + and r3, r2 + strh r3, [r0, #0x0] + ldrh r3, [r0, #0x0] + sub r2, #0x1c + and r3, r1 + mov r1, #0x8 + orr r1, r3 + strh r1, [r0, #0x0] + ldrh r1, [r0, #0x0] + and r1, r2 + strh r1, [r0, #0x0] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + blx G3X_SetFog + mov r0, #0x0 + ldr r2, _02086500 ; =0x00007FFF + add r1, r0, #0x0 + mov r3, #0x3f + str r0, [sp, #0x0] + blx G3X_SetClearColor + ldr r1, _02086504 ; =0xBFFF0000 + ldr r0, _02086508 ; =0x04000580 + str r1, [r0, #0x0] + pop {r3, pc} + .balign 4 +_020864F4: .word 0x04000008 +_020864F8: .word 0xFFFFCFFD +_020864FC: .word 0x0000CFFB +_02086500: .word 0x00007FFF +_02086504: .word 0xBFFF0000 +_02086508: .word 0x04000580 + + thumb_func_start FUN_0208650C +FUN_0208650C: ; 0x0208650C + push {r3-r5, lr} + ldr r3, _02086544 ; =0x021064B8 + mov r0, #0x2 + mov r1, #0x0 + ldr r3, [r3, #0x0] + lsl r0, r0, #0xe + add r2, r1, #0x0 + blx r3 + ldr r3, _02086548 ; =0x021064C0 + mov r1, #0x0 + add r4, r0, #0x0 + ldr r3, [r3, #0x0] + mov r0, #0x80 + add r2, r1, #0x0 + blx r3 + add r5, r0, #0x0 + cmp r4, #0x0 + bne _02086534 + bl ErrorHandling +_02086534: + cmp r5, #0x0 + bne _0208653C + bl ErrorHandling +_0208653C: + bl FUN_02012CC8 + pop {r3-r5, pc} + nop +_02086544: .word 0x021064B8 +_02086548: .word 0x021064C0 + + thumb_func_start FUN_0208654C +FUN_0208654C: ; 0x0208654C + push {r3-r5, lr} + sub sp, #0xa8 + add r4, r0, #0x0 + bl FUN_0201E6D8 + ldr r5, _02086650 ; =0x020FCEBC + add r3, sp, #0x2c + mov r2, #0x5 +_0208655C: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _0208655C + add r0, sp, #0x2c + bl FUN_0201E66C + mov r1, #0x6 + mov r2, #0x2 + mov r0, #0x0 + lsl r1, r1, #0x18 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x62 + mov r2, #0x2 + mov r0, #0x0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + mov r1, #0x19 + mov r2, #0x1 + mov r0, #0x0 + lsl r1, r1, #0x16 + lsl r2, r2, #0x12 + blx MIi_CpuClear32 + mov r1, #0x66 + mov r2, #0x2 + mov r0, #0x0 + lsl r1, r1, #0x14 + lsl r2, r2, #0x10 + blx MIi_CpuClear32 + ldr r5, _02086654 ; =0x020FCE24 + add r3, sp, #0x1c + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r5, _02086658 ; =0x020FCF84 + add r3, sp, #0x54 + mov r2, #0xa +_020865BC: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _020865BC + ldr r0, [r5, #0x0] + mov r1, #0x1 + str r0, [r3, #0x0] + add r0, r4, #0x0 + add r2, sp, #0x54 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x2 + add r2, sp, #0x70 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x3 + add r2, sp, #0x8c + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x1 + bl FUN_02018744 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02018744 + add r0, r4, #0x0 + mov r1, #0x3 + bl FUN_02018744 + ldr r1, _0208665C ; =0x04000008 + mov r0, #0x3 + ldrh r2, [r1, #0x0] + bic r2, r0 + mov r0, #0x1 + orr r2, r0 + strh r2, [r1, #0x0] + add r1, r0, #0x0 + bl FUN_0201E6E4 + bl FUN_0201E788 + mov r0, #0x10 + mov r1, #0x1 + bl FUN_0201E6E4 + ldr r5, _02086660 ; =0x020FCE60 + add r3, sp, #0x0 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x4 + str r0, [r3, #0x0] + add r0, r4, #0x0 + mov r3, #0x0 + bl FUN_02016C18 + add r0, r4, #0x0 + mov r1, #0x4 + bl FUN_02018744 + add sp, #0xa8 + pop {r3-r5, pc} + .balign 4 +_02086650: .word 0x020FCEBC +_02086654: .word 0x020FCE24 +_02086658: .word 0x020FCF84 +_0208665C: .word 0x04000008 +_02086660: .word 0x020FCE60 + + thumb_func_start FUN_02086664 +FUN_02086664: ; 0x02086664 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x3c] + bl FUN_020081C4 + bl FUN_0201C30C + bl FUN_0200BC30 + ldr r0, [r4, #0x8] + bl FUN_0200372C + ldr r0, [r4, #0x4] + bl FUN_0201AB60 + ldr r3, _02086690 ; =0x027E0000 + ldr r1, _02086694 ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .balign 4 +_02086690: .word 0x027E0000 +_02086694: .word 0x00003FF8 + + thumb_func_start FUN_02086698 +FUN_02086698: ; 0x02086698 + push {r3, lr} + bl FUN_020222AC + bl FUN_02013364 + cmp r0, #0x0 + ble _020866AE + bl FUN_020222AC + blx FUN_020B02C8 +_020866AE: + bl FUN_02013388 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_020222B4 + pop {r3, pc} + + thumb_func_start FUN_020866BC +FUN_020866BC: ; 0x020866BC + push {lr} + sub sp, #0xc + mov r0, #0x6 + str r0, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r0, #0x47 + str r0, [sp, #0x8] + mov r0, #0x0 + add r2, r1, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .balign 4 + + thumb_func_start FUN_020866DC +FUN_020866DC: ; 0x020866DC + push {lr} + sub sp, #0xc + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + mov r0, #0x47 + str r0, [sp, #0x8] + mov r0, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + + thumb_func_start FUN_020866FC +FUN_020866FC: ; 0x020866FC + push {r3-r6, lr} + sub sp, #0xc + add r6, r2, #0x0 + add r4, r1, #0x0 + lsl r1, r6, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + mov r1, #0x47 + str r1, [sp, #0x4] + mov r1, #0x1 + mov r2, #0x14 + mov r3, #0xf + add r5, r0, #0x0 + bl FUN_0200CD68 + add r0, r6, #0x0 + bl FUN_0200CD64 + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0xc0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x26 + mov r3, #0x47 + bl FUN_020030E8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x47 + str r0, [sp, #0x4] + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x32 + mov r3, #0xd + bl FUN_0200CB00 + bl FUN_0200CAFC + add r2, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0xd0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x26 + mov r3, #0x47 + bl FUN_020030E8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0xe0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0xe + mov r2, #0x7 + mov r3, #0x47 + bl FUN_020030E8 + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_02086784 +FUN_02086784: ; 0x02086784 + push {r4-r7, lr} + sub sp, #0x14 + add r5, r1, #0x0 + add r7, r0, #0x0 + add r0, r5, #0x0 + add r4, r2, #0x0 + add r6, r3, #0x0 + bl FUN_0201901C + ldr r0, [sp, #0x28] + lsl r2, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [sp, #0x2c] + lsl r3, r6, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + ldr r0, [sp, #0x30] + add r1, r5, #0x0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + ldr r0, [sp, #0x38] + lsr r2, r2, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x34] + lsr r3, r3, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r7, #0x0 + bl FUN_02019064 + add r0, r5, #0x0 + mov r1, #0x1 + mov r2, #0x14 + mov r3, #0xc + bl FUN_0200D0BC + add r0, r5, #0x0 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0x0 + bl FUN_020191D0 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_020867EC +FUN_020867EC: ; 0x020867EC + push {r3-r7, lr} + sub sp, #0x18 + add r4, r1, #0x0 + mov r1, #0xf + str r0, [sp, #0xc] + str r2, [sp, #0x10] + add r6, r3, #0x0 + bl FUN_02019620 + ldr r2, _02086874 ; =0x0000013F + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0x47 + bl FUN_0200A86C + add r7, r0, #0x0 + mov r0, #0x47 + bl FUN_0200AA80 + add r5, r0, #0x0 + add r0, r7, #0x0 + add r1, r4, #0x0 + bl FUN_0200A914 + str r0, [sp, #0x14] + mov r0, #0xff + mov r1, #0x47 + bl FUN_020219F4 + add r4, r0, #0x0 + ldr r0, [sp, #0x10] + bl FUN_020690E4 + add r2, r0, #0x0 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_0200AC60 + ldr r2, [sp, #0x14] + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_0200B7B8 + mov r3, #0x0 + str r3, [sp, #0x0] + str r6, [sp, #0x4] + ldr r0, [sp, #0xc] + mov r1, #0x1 + add r2, r4, #0x0 + str r3, [sp, #0x8] + bl FUN_0201BD84 + add r6, r0, #0x0 + add r0, r7, #0x0 + bl FUN_0200A8B8 + add r0, r4, #0x0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + bl FUN_02021A20 + add r0, r5, #0x0 + bl FUN_0200AB18 + add r0, r6, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_02086874: .word 0x0000013F + + thumb_func_start FUN_02086878 +FUN_02086878: ; 0x02086878 + push {r4-r7, lr} + sub sp, #0x24 + add r5, r0, #0x0 + add r0, r2, #0x0 + add r6, r1, #0x0 + str r2, [sp, #0x14] + add r4, r3, #0x0 + bl FUN_0201901C + ldr r0, [sp, #0x3c] + ldr r3, [sp, #0x38] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x0] + ldr r0, [sp, #0x40] + lsl r2, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x4] + ldr r0, [sp, #0x44] + lsl r3, r3, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4c] + ldr r1, [sp, #0x14] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0xc] + ldr r0, [sp, #0x48] + lsr r2, r2, #0x18 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r6, #0x0 + lsr r3, r3, #0x18 + bl FUN_02019064 + mov r0, #0x2 + mov r1, #0x47 + bl FUN_02012838 + str r0, [r5, #0x44] + ldr r2, _0208695C ; =0x0000013F + mov r0, #0x0 + mov r1, #0x1a + mov r3, #0x47 + bl FUN_0200A86C + add r7, r0, #0x0 + mov r4, #0x0 +_020868DE: + add r0, r7, #0x0 + add r1, r4, #0x2 + bl FUN_0200A914 + add r6, r0, #0x0 + ldr r0, [r5, #0x44] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_020128A0 + add r0, r6, #0x0 + bl FUN_02021A20 + add r4, r4, #0x1 + cmp r4, #0x2 + blt _020868DE + add r0, r7, #0x0 + bl FUN_0200A8B8 + ldr r0, [r5, #0x44] + mov r1, #0x0 + str r0, [sp, #0x18] + add r0, sp, #0x18 + strb r1, [r0, #0x8] + ldr r1, [sp, #0x14] + mov r2, #0x2 + str r1, [sp, #0x1c] + mov r1, #0x1 + strb r1, [r0, #0x9] + strb r2, [r0, #0xa] + ldrb r3, [r0, #0xb] + mov r2, #0xf + bic r3, r2 + strb r3, [r0, #0xb] + ldrb r3, [r0, #0xb] + mov r2, #0x30 + bic r3, r2 + strb r3, [r0, #0xb] + ldrb r3, [r0, #0xb] + mov r2, #0xc0 + bic r3, r2 + mov r2, #0x40 + orr r2, r3 + strb r2, [r0, #0xb] + ldr r0, [sp, #0x14] + mov r2, #0x32 + mov r3, #0xd + bl FUN_0200CCA4 + mov r0, #0x47 + str r0, [sp, #0x0] + mov r0, #0x2 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x18 + mov r1, #0x8 + add r3, r2, #0x0 + bl FUN_02001C14 + str r0, [r5, #0x48] + add sp, #0x24 + pop {r4-r7, pc} + nop +_0208695C: .word 0x0000013F + + thumb_func_start FUN_02086960 +FUN_02086960: ; 0x02086960 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x28 + mov r1, #0x1 + bl FUN_0200CCF8 + add r0, r4, #0x0 + add r0, #0x28 + bl FUN_02019570 + add r0, r4, #0x0 + add r0, #0x28 + bl FUN_02019178 + ldr r0, [r4, #0x48] + mov r1, #0x0 + bl FUN_02001C5C + ldr r0, [r4, #0x44] + bl FUN_02012870 + pop {r4, pc} + + thumb_func_start FUN_0208698C +FUN_0208698C: ; 0x0208698C + push {r4, lr} + add r4, r0, #0x0 + bl FUN_02019570 + add r0, r4, #0x0 + bl FUN_02019178 + pop {r4, pc} + + thumb_func_start FUN_0208699C +FUN_0208699C: ; 0x0208699C + push {r3-r5, lr} + sub sp, #0x10 + add r4, r1, #0x0 + mov r1, #0x0 + add r5, r0, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x47 + str r0, [sp, #0xc] + mov r0, #0x76 + add r2, r5, #0x0 + mov r3, #0x3 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r1, #0x1 + str r1, [sp, #0x8] + mov r0, #0x47 + str r0, [sp, #0xc] + mov r0, #0x76 + add r2, r5, #0x0 + mov r3, #0x3 + bl FUN_020068C8 + mov r1, #0x0 + str r1, [sp, #0x0] + mov r0, #0x40 + str r0, [sp, #0x4] + str r1, [sp, #0x8] + add r0, r4, #0x0 + mov r1, #0x76 + mov r2, #0x8 + mov r3, #0x47 + bl FUN_020030E8 + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020869F0 +FUN_020869F0: ; 0x020869F0 + push {r3-r5, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x47 + add r4, r1, #0x0 + str r0, [sp, #0xc] + mov r0, #0xc + mov r1, #0xa + add r2, r5, #0x0 + mov r3, #0x4 + bl FUN_0200687C + mov r0, #0x0 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x47 + str r0, [sp, #0xc] + mov r0, #0xc + mov r1, #0xb + add r2, r5, #0x0 + mov r3, #0x4 + bl FUN_020068C8 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + mov r0, #0x0 + mov r1, #0xc + str r0, [sp, #0x8] + add r0, r4, #0x0 + add r2, r1, #0x0 + mov r3, #0x47 + bl FUN_020030E8 + add sp, #0x10 + pop {r3-r5, pc} + + thumb_func_start FUN_02086A48 +FUN_02086A48: ; 0x02086A48 + push {r4, lr} + ldr r3, _02086A60 ; =0x021064B8 + mov r2, #0x0 + ldr r3, [r3, #0x0] + blx r3 + add r4, r0, #0x0 + bl FUN_0201327C + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02086A60: .word 0x021064B8 + + thumb_func_start FUN_02086A64 +FUN_02086A64: ; 0x02086A64 + push {r4, lr} + ldr r3, _02086A7C ; =0x021064C0 + mov r2, #0x0 + ldr r3, [r3, #0x0] + blx r3 + add r4, r0, #0x0 + bl FUN_020132BC + lsl r0, r4, #0x10 + lsr r0, r0, #0xd + pop {r4, pc} + nop +_02086A7C: .word 0x021064C0 + + thumb_func_start FUN_02086A80 +FUN_02086A80: ; 0x02086A80 + push {r4, lr} + sub sp, #0x8 + mov r1, #0x12 + lsl r1, r1, #0xa + add r4, r0, #0x0 + bl FUN_02016998 + add r2, r0, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + mov r3, #0x12 + ldr r0, _02086AC0 ; =FUN_02086A48 + ldr r1, _02086AC4 ; =FUN_02086A64 + lsl r3, r3, #0xa + str r4, [sp, #0x4] + bl FUN_02012CDC + add r4, r0, #0x0 + bl FUN_0201343C + add r2, r0, #0x0 + beq _02086AB8 + mov r0, #0x1 + mov r1, #0xe1 + lsl r0, r0, #0xc + lsl r1, r1, #0xe + bl FUN_0201EC94 +_02086AB8: + add r0, r4, #0x0 + add sp, #0x8 + pop {r4, pc} + nop +_02086AC0: .word FUN_02086A48 +_02086AC4: .word FUN_02086A64 + + thumb_func_start FUN_02086AC8 +FUN_02086AC8: ; 0x02086AC8 + push {r3-r7, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r7, r2, #0x0 + bl FUN_02086A80 + add r4, r0, #0x0 + add r0, r6, #0x0 + add r1, r7, #0x0 + add r2, r5, #0x0 + bl FUN_0201318C + add r1, r0, #0x0 + add r0, r4, #0x0 + mov r2, #0xa + mov r3, #0x1 + bl FUN_02013194 + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02086AF0 +FUN_02086AF0: ; 0x02086AF0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_020133E8 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_02012DE4 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + + thumb_func_start FUN_02086B08 +FUN_02086B08: ; 0x02086B08 + push {r3} + sub sp, #0xc + add r2, sp, #0x0 + mov r1, #0x0 + str r1, [r2, #0x0] + str r1, [r2, #0x4] + str r1, [r2, #0x8] + ldr r1, [r0, #0x20] + ldr r2, [sp, #0x0] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x4] + add r1, r2, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x20] + ldr r2, [sp, #0x4] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + add r1, r2, r1 + str r1, [r0, #0x2c] + ldr r1, [r0, #0x20] + ldr r2, [sp, #0x8] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0xc] + add r1, r2, r1 + str r1, [r0, #0x30] + add sp, #0xc + pop {r3} + bx lr + + thumb_func_start FUN_02086B40 +FUN_02086B40: ; 0x02086B40 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0x0 + bne _02086B54 + bl ErrorHandling +_02086B54: + ldr r0, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r1, #0x77 + str r0, [r4, #0x0] + str r2, [r4, #0x4] + ldr r0, [r4, #0x0] + bl FUN_02086AC8 + mov r1, #0x1 + str r0, [r4, #0xc] + bl FUN_02013440 + add r0, r4, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02086B70 +FUN_02086B70: ; 0x02086B70 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0xc] + ldr r2, _02086B88 ; =FUN_02086B08 + add r3, r4, #0x0 + bl FUN_020133AC + ldr r0, [r4, #0xc] + mov r1, #0x1 + bl FUN_02013440 + pop {r4, pc} + .balign 4 +_02086B88: .word FUN_02086B08 + + thumb_func_start FUN_02086B8C +FUN_02086B8C: ; 0x02086B8C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020133C8 + cmp r0, #0x0 + beq _02086B9C + mov r0, #0x1 + pop {r3, pc} +_02086B9C: + mov r0, #0x0 + pop {r3, pc} + + thumb_func_start FUN_02086BA0 +FUN_02086BA0: ; 0x02086BA0 + ldr r3, _02086BA4 ; =FUN_02016A18 + bx r3 + .balign 4 +_02086BA4: .word FUN_02016A18 + + thumb_func_start FUN_02086BA8 +FUN_02086BA8: ; 0x02086BA8 + push {r4-r6, lr} + sub sp, #0x38 + ldr r3, _02086C8C ; =0x020FCE9C + add r2, sp, #0x18 + add r6, r0, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r5, [r6, #0x4c] + ldr r4, [r6, #0x50] + ldr r6, [r6, #0x8] + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _02086C90 ; =0x00004E20 + add r1, r5, #0x0 + str r0, [sp, #0x8] + ldr r3, [sp, #0x18] + add r0, r4, #0x0 + mov r2, #0x76 + bl FUN_0200C00C + mov r0, #0x76 + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + mov r1, #0x2 + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02086C94 ; =0x00004E21 + add r2, r4, #0x0 + str r0, [sp, #0x14] + add r0, r6, #0x0 + add r3, r5, #0x0 + bl FUN_0200C0DC + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _02086C98 ; =0x00004E22 + add r1, r5, #0x0 + str r0, [sp, #0x4] + ldr r3, [sp, #0x20] + add r0, r4, #0x0 + mov r2, #0x76 + bl FUN_0200C124 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _02086C9C ; =0x00004E23 + add r1, r5, #0x0 + str r0, [sp, #0x4] + ldr r3, [sp, #0x24] + add r0, r4, #0x0 + mov r2, #0x76 + bl FUN_0200C13C + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, _02086CA0 ; =0x000061A8 + add r1, r5, #0x0 + str r0, [sp, #0x8] + add r0, r4, #0x0 + mov r2, #0x76 + mov r3, #0x7 + bl FUN_0200C00C + mov r0, #0x76 + str r0, [sp, #0x0] + mov r0, #0xa + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + ldr r0, _02086CA4 ; =0x000061A9 + mov r1, #0x2 + str r0, [sp, #0x14] + add r0, r6, #0x0 + add r2, r4, #0x0 + add r3, r5, #0x0 + bl FUN_0200C0DC + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _02086CA8 ; =0x000061AA + add r1, r5, #0x0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r2, #0x76 + mov r3, #0x6 + bl FUN_0200C124 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, _02086CAC ; =0x000061AB + add r1, r5, #0x0 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r2, #0x76 + mov r3, #0x5 + bl FUN_0200C13C + add sp, #0x38 + pop {r4-r6, pc} + .balign 4 +_02086C8C: .word 0x020FCE9C +_02086C90: .word 0x00004E20 +_02086C94: .word 0x00004E21 +_02086C98: .word 0x00004E22 +_02086C9C: .word 0x00004E23 +_02086CA0: .word 0x000061A8 +_02086CA4: .word 0x000061A9 +_02086CA8: .word 0x000061AA +_02086CAC: .word 0x000061AB + + thumb_func_start FUN_02086CB0 +FUN_02086CB0: ; 0x02086CB0 + push {r3-r4, lr} + sub sp, #0x34 + add r4, r0, #0x0 + mov r1, #0x80 + add r0, sp, #0x0 + strh r1, [r0, #0x0] + mov r1, #0x78 + strh r1, [r0, #0x2] + mov r1, #0x0 + strh r1, [r0, #0x4] + strh r1, [r0, #0x6] + mov r0, #0x1 + mov r2, #0x2 + str r1, [sp, #0x8] + str r1, [sp, #0xc] + str r1, [sp, #0x30] + ldr r1, _02086D4C ; =0x00004E20 + str r0, [sp, #0x10] + add r0, r1, #0x1 + str r0, [sp, #0x18] + add r0, r1, #0x2 + str r0, [sp, #0x1c] + add r0, r1, #0x3 + str r0, [sp, #0x20] + sub r0, r2, #0x3 + str r2, [sp, #0x2c] + str r1, [sp, #0x14] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r0, [r4, #0x50] + ldr r1, [r4, #0x4c] + add r2, sp, #0x0 + bl FUN_0200C154 + str r0, [r4, #0x6c] + bl FUN_0200C5A8 + ldr r0, [r4, #0x6c] + mov r1, #0x2 + bl FUN_0200C840 + mov r2, #0x0 + add r0, sp, #0x0 + add r1, r2, #0x0 + strh r2, [r0, #0x0] + sub r1, #0x10 + strh r1, [r0, #0x2] + ldr r1, _02086D50 ; =0x000061A8 + str r2, [sp, #0x2c] + add r0, r1, #0x1 + str r0, [sp, #0x18] + add r0, r1, #0x2 + str r0, [sp, #0x1c] + add r0, r1, #0x3 + str r1, [sp, #0x14] + str r0, [sp, #0x20] + ldr r0, [r4, #0x50] + ldr r1, [r4, #0x4c] + add r2, sp, #0x0 + bl FUN_0200C154 + str r0, [r4, #0x70] + bl FUN_0200C5A8 + mov r1, #0x90 + add r0, sp, #0x0 + strh r1, [r0, #0x2] + ldr r0, [r4, #0x50] + ldr r1, [r4, #0x4c] + add r2, sp, #0x0 + bl FUN_0200C154 + str r0, [r4, #0x74] + bl FUN_0200C5A8 + add sp, #0x34 + pop {r3-r4, pc} + nop +_02086D4C: .word 0x00004E20 +_02086D50: .word 0x000061A8 + + thumb_func_start FUN_02086D54 +FUN_02086D54: ; 0x02086D54 + push {r3-r7, lr} + add r6, r0, #0x0 + add r7, r1, #0x0 + add r4, r6, #0x0 + ldr r1, [r6, #0x78] + add r4, #0x78 + cmp r1, #0x0 + bne _02086DE6 + ldr r0, [r4, #0x4] + cmp r0, #0xa + blt _02086D74 + add r0, r1, #0x1 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + b _02086DE6 +_02086D74: + mov r1, #0x14 + add r3, r7, #0x0 + mul r3, r1 + ldr r1, _02086DF4 ; =0x020FCEE4 + lsl r2, r0, #0x1 + add r1, r1, r3 + ldrsh r1, [r2, r1] + lsl r0, r0, #0x2 + mov r5, #0x0 + mov r12, r1 + ldr r1, _02086DF8 ; =0x020FCF34 + add r1, r1, r3 + ldrsh r2, [r2, r1] + mov r1, #0x28 + add r3, r7, #0x0 + mul r3, r1 + ldr r1, _02086DFC ; =0x020FCFD8 + add r1, r1, r3 + ldr r7, [r0, r1] + ldr r1, _02086E00 ; =0x020FD078 + add r1, r1, r3 + ldr r0, [r0, r1] + str r0, [sp, #0x0] + mov r0, r12 + cmp r0, #0xff + bne _02086DAC + mov r12, r5 + add r5, r5, #0x1 +_02086DAC: + cmp r2, #0xff + bne _02086DB4 + mov r2, #0x0 + add r5, r5, #0x1 +_02086DB4: + ldr r0, [r6, #0x6c] + mov r1, r12 + bl FUN_0200C82C + mov r0, #0x0 + add r1, r7, #0x0 + blx _feq + beq _02086DD2 + ldr r0, [r6, #0x6c] + ldr r2, [sp, #0x0] + add r1, r7, #0x0 + bl FUN_0200C884 + b _02086DD4 +_02086DD2: + add r5, r5, #0x1 +_02086DD4: + cmp r5, #0x3 + beq _02086DE0 + ldr r0, [r4, #0x4] + add r0, r0, #0x1 + str r0, [r4, #0x4] + b _02086DEE +_02086DE0: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] +_02086DE6: + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x4] + pop {r3-r7, pc} +_02086DEE: + mov r0, #0x1 + pop {r3-r7, pc} + nop +_02086DF4: .word 0x020FCEE4 +_02086DF8: .word 0x020FCF34 +_02086DFC: .word 0x020FCFD8 +_02086E00: .word 0x020FD078 + + thumb_func_start FUN_02086E04 +FUN_02086E04: ; 0x02086E04 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02086D54 + cmp r0, #0x0 + bne _02086E16 + mov r0, #0x2 + pop {r3-r5, pc} +_02086E16: + cmp r4, #0x4 + ldr r0, [r5, #0x7c] + bne _02086E24 + cmp r0, #0x6 + bne _02086E2C + mov r0, #0x1 + pop {r3-r5, pc} +_02086E24: + cmp r0, #0x6 + bne _02086E2C + mov r0, #0x1 + pop {r3-r5, pc} +_02086E2C: + mov r0, #0x0 + pop {r3-r5, pc} + + thumb_func_start FUN_02086E30 +FUN_02086E30: ; 0x02086E30 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x6c] + bl FUN_0200C3DC + ldr r0, [r4, #0x70] + bl FUN_0200C3DC + ldr r0, [r4, #0x74] + bl FUN_0200C3DC + pop {r4, pc} + + thumb_func_start FUN_02086E48 +FUN_02086E48: ; 0x02086E48 + push {r3-r6, lr} + sub sp, #0x4c + add r4, r0, #0x0 + mov r0, #0x47 + bl FUN_0200BB14 + add r2, sp, #0x2c + ldr r5, _02086EC8 ; =0x020FCE7C + str r0, [r4, #0x4c] + ldmia r5!, {r0-r1} + add r3, r2, #0x0 + stmia r2!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r5!, {r0-r1} + ldr r6, _02086ECC ; =0x020FCE34 + stmia r2!, {r0-r1} + add r5, sp, #0x18 + ldmia r6!, {r0-r1} + add r2, r5, #0x0 + stmia r5!, {r0-r1} + ldmia r6!, {r0-r1} + stmia r5!, {r0-r1} + ldr r0, [r6, #0x0] + add r1, r3, #0x0 + str r0, [r5, #0x0] + ldr r0, [r4, #0x4c] + mov r3, #0x20 + bl FUN_0200BB6C + ldr r3, _02086ED0 ; =0x020FCE48 + add r2, sp, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r4, #0x4c] + bl FUN_0200BB34 + str r0, [r4, #0x48] + ldr r0, [r4, #0x4c] + ldr r1, [r4, #0x48] + mov r2, #0xff + bl FUN_0200BBF0 + cmp r0, #0x0 + bne _02086EB2 + bl ErrorHandling +_02086EB2: + ldr r0, [r4, #0x4c] + ldr r1, [r4, #0x48] + add r2, sp, #0x0 + bl FUN_0200BF60 + cmp r0, #0x0 + bne _02086EC4 + bl ErrorHandling +_02086EC4: + add sp, #0x4c + pop {r3-r6, pc} + .balign 4 +_02086EC8: .word 0x020FCE7C +_02086ECC: .word 0x020FCE34 +_02086ED0: .word 0x020FCE48 + + thumb_func_start FUN_02086ED4 +FUN_02086ED4: ; 0x02086ED4 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x4c] + ldr r1, [r4, #0x48] + bl FUN_0200C398 + ldr r0, [r4, #0x4c] + bl FUN_0200BD04 + pop {r4, pc} + + thumb_func_start FUN_02086EE8 +FUN_02086EE8: ; 0x02086EE8 + push {r3-r7, lr} + sub sp, #0x38 + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x5 + ldr r4, [r0, #0xc] + mov r2, #0x0 + add r0, r4, #0x0 + bl FUN_020671BC + add r6, r0, #0x0 + add r0, r4, #0x0 + mov r1, #0x2 + bl FUN_02068E14 + add r7, r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x10] + add r0, r4, #0x0 + mov r1, #0x4c + add r2, sp, #0x10 + bl FUN_02067830 + add r0, sp, #0x28 + add r1, r4, #0x0 + mov r2, #0x2 + bl FUN_02068B68 + lsl r1, r6, #0x10 + add r0, sp, #0x14 + lsr r1, r1, #0x10 + bl FUN_02069010 + mov r1, #0x0 + str r1, [sp, #0x0] + add r7, #0x60 + str r1, [sp, #0x4] + add r0, sp, #0x14 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + ldr r0, [r5, #0x3c] + add r1, sp, #0x28 + mov r2, #0x80 + add r3, r7, #0x0 + bl FUN_020073A0 + str r0, [r5, #0x68] + add sp, #0x38 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02086F4C +FUN_02086F4C: ; 0x02086F4C + push {r3-r6, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x5 + ldr r0, [r0, #0xc] + mov r2, #0x0 + bl FUN_020671BC + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl FUN_02068854 + add r6, r0, #0x0 + ldr r0, [r5, #0x68] + mov r1, #0x1 + bl FUN_02007314 + lsl r2, r4, #0x10 + str r6, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + ldr r0, [r5, #0x54] + ldr r1, [r5, #0x68] + lsr r2, r2, #0x10 + mov r3, #0x2 + bl FUN_02069038 + add sp, #0xc + pop {r3-r6, pc} + + thumb_func_start FUN_02086F8C +FUN_02086F8C: ; 0x02086F8C + ldr r3, _02086F94 ; =FUN_02007534 + ldr r0, [r0, #0x68] + bx r3 + nop +_02086F94: .word FUN_02007534 + + thumb_func_start FUN_02086F98 +FUN_02086F98: ; 0x02086F98 + ldr r3, _02086FA4 ; =FUN_02007558 + add r2, r1, #0x0 + ldr r0, [r0, #0x68] + mov r1, #0x6 + bx r3 + nop +_02086FA4: .word FUN_02007558 + + thumb_func_start FUN_02086FA8 +FUN_02086FA8: ; 0x02086FA8 + push {r3, lr} + ldr r1, [r0, #0x58] + lsl r2, r1, #0x2 + ldr r1, _02086FB8 ; =0x020FD118 + ldr r1, [r1, r2] + blx r1 + pop {r3, pc} + nop +_02086FB8: .word 0x020FD118 + + thumb_func_start FUN_02086FBC +FUN_02086FBC: ; 0x02086FBC + push {r3-r5, lr} + sub sp, #0x20 + add r4, r0, #0x0 + ldr r1, [r4, #0x5c] + mov r5, #0x1 + cmp r1, #0x11 + bls _02086FCC + b _0208720E +_02086FCC: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02086FD8: ; jump table (using 16-bit offset) + .short _02086FFC - _02086FD8 - 2; case 0 + .short _0208706A - _02086FD8 - 2; case 1 + .short _02087074 - _02086FD8 - 2; case 2 + .short _02087092 - _02086FD8 - 2; case 3 + .short _020870A2 - _02086FD8 - 2; case 4 + .short _020870B2 - _02086FD8 - 2; case 5 + .short _020870C2 - _02086FD8 - 2; case 6 + .short _020870D2 - _02086FD8 - 2; case 7 + .short _0208710E - _02086FD8 - 2; case 8 + .short _02087122 - _02086FD8 - 2; case 9 + .short _02087132 - _02086FD8 - 2; case 10 + .short _02087158 - _02086FD8 - 2; case 11 + .short _020871AA - _02086FD8 - 2; case 12 + .short _020871E2 - _02086FD8 - 2; case 13 + .short _020871EE - _02086FD8 - 2; case 14 + .short _020871F4 - _02086FD8 - 2; case 15 + .short _020871FE - _02086FD8 - 2; case 16 + .short _0208720E - _02086FD8 - 2; case 17 +_02086FFC: + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + bl FUN_0208699C + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + bl FUN_020869F0 + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x14] + bl FUN_020866FC + mov r0, #0x13 + str r0, [sp, #0x0] + mov r0, #0x1b + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x3b + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + add r1, r4, #0x0 + ldr r0, [r4, #0x4] + add r1, #0x18 + add r2, r5, #0x0 + mov r3, #0x2 + bl FUN_02086784 + add r0, r4, #0x0 + bl FUN_02086BA8 + add r0, r4, #0x0 + bl FUN_02086CB0 + add r0, r4, #0x0 + bl FUN_02086EE8 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02086F98 + mov r0, #0x47 + str r0, [sp, #0x18] + mov r0, #0x0 + str r0, [sp, #0x1c] + add r0, sp, #0x18 + bl FUN_02086B40 + str r0, [r4, #0x40] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_0208706A: + bl FUN_020866BC + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087074: + bl FUN_0200E308 + cmp r0, #0x1 + bne _0208712A + bl FUN_0200541C + ldr r1, _02087240 ; =0x00000475 + mov r0, #0xd + mov r2, #0x1 + bl FUN_0200433C + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_02087092: + bl FUN_0208749C + cmp r0, #0x0 + bne _0208712A + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020870A2: + bl FUN_020874E4 + cmp r0, #0x0 + bne _0208712A + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020870B2: + bl FUN_02087554 + cmp r0, #0x0 + bne _0208712A + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020870C2: + bl FUN_020875AC + cmp r0, #0x0 + bne _0208712A + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020870D2: + bl FUN_02087610 + cmp r0, #0x0 + bne _0208712A + add r0, r4, #0x0 + bl FUN_02086F4C + ldr r0, [r4, #0x0] + mov r1, #0x5 + ldr r0, [r0, #0xc] + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 + ldr r2, [r4, #0x0] + add r0, r4, #0x0 + ldr r2, [r2, #0xc] + ldr r3, [r4, #0x10] + add r0, #0x18 + mov r1, #0x0 + bl FUN_020867EC + str r0, [r4, #0xc] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_0208710E: + bl FUN_02005670 + cmp r0, #0x0 + bne _0208712A + ldr r0, _02087244 ; =0x00000484 + bl FUN_02005C28 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087122: + bl FUN_02005CBC + cmp r0, #0x0 + beq _0208712C +_0208712A: + b _02087232 +_0208712C: + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087132: + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02087232 + ldr r2, [r4, #0x0] + add r0, r4, #0x0 + ldr r2, [r2, #0xc] + ldr r3, [r4, #0x10] + add r0, #0x18 + mov r1, #0x1 + bl FUN_020867EC + str r0, [r4, #0xc] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087158: + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02087232 + ldr r0, [r4, #0x54] + mov r1, #0x0 + bl FUN_02014D7C + cmp r0, #0x1 + bne _02087232 + ldr r0, [r4, #0x68] + bl FUN_02007390 + cmp r0, #0x0 + bne _02087232 + mov r0, #0x19 + str r0, [sp, #0x0] + mov r0, #0xd + str r0, [sp, #0x4] + mov r0, #0x6 + str r0, [sp, #0x8] + mov r0, #0x4 + str r0, [sp, #0xc] + mov r0, #0xa7 + str r0, [sp, #0x10] + mov r0, #0xe + str r0, [sp, #0x14] + add r2, r4, #0x0 + ldr r1, [r4, #0x4] + add r0, r4, #0x0 + add r2, #0x28 + mov r3, #0x1 + bl FUN_02086878 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020871AA: + ldr r0, [r4, #0x48] + bl FUN_02001C78 + sub r1, r5, #0x3 + cmp r0, r1 + beq _020871BE + add r1, r1, #0x1 + cmp r0, r1 + beq _02087232 + b _020871CC +_020871BE: + ldr r0, [r4, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020871CC: + cmp r0, #0x0 + bne _020871D4 + add r1, r5, #0x0 + b _020871D6 +_020871D4: + mov r1, #0x0 +_020871D6: + ldr r0, [r4, #0x0] + str r1, [r0, #0x4] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020871E2: + bl FUN_02086960 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020871EE: + add r0, r1, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_020871F4: + bl FUN_020866DC + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_020871FE: + bl FUN_0200E308 + cmp r0, #0x1 + bne _02087232 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087232 +_0208720E: + add r0, r4, #0x0 + bl FUN_02086F8C + add r0, r4, #0x0 + bl FUN_02086E30 + add r0, r4, #0x0 + add r0, #0x18 + bl FUN_0208698C + ldr r0, [r4, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02086AF0 + ldr r0, [r4, #0x40] + bl FUN_02086BA0 + mov r5, #0x0 +_02087232: + ldr r0, [r4, #0x4c] + bl FUN_0200BC1C + add r0, r5, #0x0 + add sp, #0x20 + pop {r3-r5, pc} + nop +_02087240: .word 0x00000475 +_02087244: .word 0x00000484 + + thumb_func_start FUN_02087248 +FUN_02087248: ; 0x02087248 + push {r3-r5, lr} + sub sp, #0x20 + add r4, r0, #0x0 + ldr r1, [r4, #0x5c] + mov r5, #0x1 + cmp r1, #0x11 + bls _02087258 + b _02087462 +_02087258: + add r2, r1, r1 + add r2, pc + ldrh r2, [r2, #0x6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02087264: ; jump table (using 16-bit offset) + .short _02087288 - _02087264 - 2; case 0 + .short _020872FE - _02087264 - 2; case 1 + .short _02087308 - _02087264 - 2; case 2 + .short _02087322 - _02087264 - 2; case 3 + .short _0208735C - _02087264 - 2; case 4 + .short _0208735C - _02087264 - 2; case 5 + .short _0208735C - _02087264 - 2; case 6 + .short _0208735C - _02087264 - 2; case 7 + .short _02087362 - _02087264 - 2; case 8 + .short _02087376 - _02087264 - 2; case 9 + .short _02087386 - _02087264 - 2; case 10 + .short _020873AC - _02087264 - 2; case 11 + .short _020873FE - _02087264 - 2; case 12 + .short _02087436 - _02087264 - 2; case 13 + .short _02087442 - _02087264 - 2; case 14 + .short _02087448 - _02087264 - 2; case 15 + .short _02087452 - _02087264 - 2; case 16 + .short _02087462 - _02087264 - 2; case 17 +_02087288: + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + bl FUN_0208699C + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + bl FUN_020869F0 + ldr r0, [r4, #0x4] + ldr r1, [r4, #0x8] + ldr r2, [r4, #0x14] + bl FUN_020866FC + mov r0, #0x13 + str r0, [sp, #0x0] + mov r0, #0x1b + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + mov r0, #0x3b + str r0, [sp, #0xc] + mov r0, #0xe + str r0, [sp, #0x10] + add r1, r4, #0x0 + ldr r0, [r4, #0x4] + add r1, #0x18 + add r2, r5, #0x0 + mov r3, #0x2 + bl FUN_02086784 + add r0, r4, #0x0 + bl FUN_02086BA8 + add r0, r4, #0x0 + bl FUN_02086CB0 + ldr r0, [r4, #0x6c] + mov r1, #0x0 + bl FUN_0200C644 + add r0, r4, #0x0 + bl FUN_02086EE8 + add r0, r4, #0x0 + add r1, r5, #0x0 + bl FUN_02086F98 + mov r0, #0x47 + str r0, [sp, #0x18] + add r0, r5, #0x0 + str r0, [sp, #0x1c] + add r0, sp, #0x18 + bl FUN_02086B40 + str r0, [r4, #0x40] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_020872FE: + bl FUN_020866BC + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087308: + bl FUN_0200E308 + cmp r0, #0x1 + bne _0208737E + ldr r1, _02087494 ; =0x00000475 + mov r0, #0xd + mov r2, #0x1 + bl FUN_0200433C + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_02087322: + bl FUN_02087820 + cmp r0, #0x0 + bne _0208737E + add r0, r4, #0x0 + bl FUN_02086F4C + ldr r0, [r4, #0x0] + mov r1, #0x5 + ldr r0, [r0, #0xc] + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 + ldr r2, [r4, #0x0] + add r0, r4, #0x0 + ldr r2, [r2, #0xc] + ldr r3, [r4, #0x10] + add r0, #0x18 + mov r1, #0x0 + bl FUN_020867EC + str r0, [r4, #0xc] + mov r0, #0x8 + str r0, [r4, #0x5c] + b _02087486 +_0208735C: + bl ErrorHandling + b _02087486 +_02087362: + bl FUN_02005670 + cmp r0, #0x0 + bne _0208737E + ldr r0, _02087498 ; =0x00000484 + bl FUN_02005C28 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087376: + bl FUN_02005CBC + cmp r0, #0x0 + beq _02087380 +_0208737E: + b _02087486 +_02087380: + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087386: + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02087486 + ldr r2, [r4, #0x0] + add r0, r4, #0x0 + ldr r2, [r2, #0xc] + ldr r3, [r4, #0x10] + add r0, #0x18 + mov r1, #0x1 + bl FUN_020867EC + str r0, [r4, #0xc] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_020873AC: + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02087486 + ldr r0, [r4, #0x54] + mov r1, #0x0 + bl FUN_02014D7C + cmp r0, #0x1 + bne _02087486 + ldr r0, [r4, #0x68] + bl FUN_02007390 + cmp r0, #0x0 + bne _02087486 + mov r0, #0x19 + str r0, [sp, #0x0] + mov r0, #0xd + str r0, [sp, #0x4] + mov r0, #0x6 + str r0, [sp, #0x8] + mov r0, #0x4 + str r0, [sp, #0xc] + mov r0, #0xa7 + str r0, [sp, #0x10] + mov r0, #0xe + str r0, [sp, #0x14] + add r2, r4, #0x0 + ldr r1, [r4, #0x4] + add r0, r4, #0x0 + add r2, #0x28 + mov r3, #0x1 + bl FUN_02086878 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_020873FE: + ldr r0, [r4, #0x48] + bl FUN_02001C78 + sub r1, r5, #0x3 + cmp r0, r1 + beq _02087412 + add r1, r1, #0x1 + cmp r0, r1 + beq _02087486 + b _02087420 +_02087412: + ldr r0, [r4, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_02087420: + cmp r0, #0x0 + bne _02087428 + add r1, r5, #0x0 + b _0208742A +_02087428: + mov r1, #0x0 +_0208742A: + ldr r0, [r4, #0x0] + str r1, [r0, #0x4] + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_02087436: + bl FUN_02086960 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_02087442: + add r0, r1, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_02087448: + bl FUN_020866DC + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] +_02087452: + bl FUN_0200E308 + cmp r0, #0x1 + bne _02087486 + ldr r0, [r4, #0x5c] + add r0, r0, #0x1 + str r0, [r4, #0x5c] + b _02087486 +_02087462: + add r0, r4, #0x0 + bl FUN_02086F8C + add r0, r4, #0x0 + bl FUN_02086E30 + add r0, r4, #0x0 + add r0, #0x18 + bl FUN_0208698C + ldr r0, [r4, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02086AF0 + ldr r0, [r4, #0x40] + bl FUN_02086BA0 + mov r5, #0x0 +_02087486: + ldr r0, [r4, #0x4c] + bl FUN_0200BC1C + add r0, r5, #0x0 + add sp, #0x20 + pop {r3-r5, pc} + nop +_02087494: .word 0x00000475 +_02087498: .word 0x00000484 + + thumb_func_start FUN_0208749C +FUN_0208749C: ; 0x0208749C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x64] + cmp r0, #0x0 + beq _020874AC + cmp r0, #0x1 + beq _020874BC + b _020874D4 +_020874AC: + ldr r0, [r4, #0x6c] + mov r1, #0x0 + bl FUN_0200C61C + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _020874DC +_020874BC: + ldr r0, [r4, #0x60] + add r0, r0, #0x1 + str r0, [r4, #0x60] + cmp r0, #0x19 + blt _020874DC + ldr r0, _020874E0 ; =0x00000714 + bl FUN_020054C8 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _020874DC +_020874D4: + mov r0, #0x0 + str r0, [r4, #0x64] + str r0, [r4, #0x60] + pop {r4, pc} +_020874DC: + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_020874E0: .word 0x00000714 + + thumb_func_start FUN_020874E4 +FUN_020874E4: ; 0x020874E4 + push {r4, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x64] + cmp r1, #0x0 + beq _020874F4 + cmp r1, #0x1 + beq _0208750E + b _02087532 +_020874F4: + ldr r0, [r4, #0x40] + bl FUN_02086B8C + cmp r0, #0x1 + beq _0208754C + ldr r0, [r4, #0x6c] + mov r1, #0x1 + bl FUN_0200C61C + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _0208754C +_0208750E: + mov r1, #0x0 + bl FUN_02086E04 + cmp r0, #0x2 + bne _0208754C + ldr r0, _02087550 ; =0x00000714 + bl FUN_020054C8 + ldr r0, [r4, #0x6c] + mov r1, #0x2 + bl FUN_0200C61C + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + mov r0, #0x0 + str r0, [r4, #0x60] + b _0208754C +_02087532: + mov r1, #0x0 + bl FUN_02086E04 + cmp r0, #0x2 + bne _0208754C + ldr r0, [r4, #0x6c] + mov r1, #0x2 + bl FUN_0200C61C + mov r0, #0x0 + str r0, [r4, #0x64] + str r0, [r4, #0x60] + pop {r4, pc} +_0208754C: + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_02087550: .word 0x00000714 + + thumb_func_start FUN_02087554 +FUN_02087554: ; 0x02087554 + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x64] + cmp r1, #0x0 + beq _02087564 + cmp r1, #0x1 + beq _0208756A + b _0208759C +_02087564: + add r0, r1, #0x1 + str r0, [r4, #0x64] + b _020875A4 +_0208756A: + mov r1, #0x1 + bl FUN_02086E04 + add r5, r0, #0x0 + cmp r5, #0x1 + bne _0208758C + ldr r0, _020875A8 ; =0x00000714 + bl FUN_020054C8 + ldr r0, [r4, #0x6c] + mov r1, #0x3 + bl FUN_0200C61C + ldr r0, [r4, #0x40] + mov r1, #0x0 + bl FUN_02086B70 +_0208758C: + cmp r5, #0x2 + bne _020875A4 + mov r0, #0x0 + str r0, [r4, #0x60] + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _020875A4 +_0208759C: + mov r0, #0x0 + str r0, [r4, #0x64] + str r0, [r4, #0x60] + pop {r3-r5, pc} +_020875A4: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_020875A8: .word 0x00000714 + + thumb_func_start FUN_020875AC +FUN_020875AC: ; 0x020875AC + push {r3-r5, lr} + add r4, r0, #0x0 + ldr r1, [r4, #0x64] + cmp r1, #0x0 + beq _020875BC + cmp r1, #0x1 + beq _020875CE + b _02087600 +_020875BC: + ldr r0, [r4, #0x40] + bl FUN_02086B8C + cmp r0, #0x1 + beq _02087608 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087608 +_020875CE: + mov r1, #0x2 + bl FUN_02086E04 + add r5, r0, #0x0 + cmp r5, #0x1 + bne _020875F0 + ldr r0, _0208760C ; =0x00000714 + bl FUN_020054C8 + ldr r0, [r4, #0x6c] + mov r1, #0x4 + bl FUN_0200C61C + ldr r0, [r4, #0x40] + mov r1, #0x1 + bl FUN_02086B70 +_020875F0: + cmp r5, #0x2 + bne _02087608 + mov r0, #0x0 + str r0, [r4, #0x60] + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087608 +_02087600: + mov r0, #0x0 + str r0, [r4, #0x64] + str r0, [r4, #0x60] + pop {r3-r5, pc} +_02087608: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 +_0208760C: .word 0x00000714 + + thumb_func_start FUN_02087610 +FUN_02087610: ; 0x02087610 + push {r4-r6, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r1, [r4, #0x64] + cmp r1, #0x5 + bls _0208761E + b _020877FC +_0208761E: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0208762A: ; jump table (using 16-bit offset) + .short _02087636 - _0208762A - 2; case 0 + .short _02087658 - _0208762A - 2; case 1 + .short _0208769A - _0208762A - 2; case 2 + .short _02087702 - _0208762A - 2; case 3 + .short _02087794 - _0208762A - 2; case 4 + .short _020877E0 - _0208762A - 2; case 5 +_02087636: + ldr r0, [r4, #0x40] + bl FUN_02086B8C + cmp r0, #0x1 + beq _020876A4 + ldr r0, [r4, #0x6c] + mov r1, #0x4 + bl FUN_0200C61C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087810 +_02087658: + mov r1, #0x3 + bl FUN_02086E04 + add r5, r0, #0x0 + cmp r5, #0x1 + bne _02087682 + ldr r0, [r4, #0x6c] + mov r1, #0x5 + bl FUN_0200C61C + ldr r0, _02087818 ; =0x00000707 + bl FUN_020054C8 + ldr r0, [r4, #0x40] + mov r1, #0x2 + bl FUN_02086B70 + ldr r0, [r4, #0x40] + mov r1, #0x3 + bl FUN_02086B70 +_02087682: + cmp r5, #0x2 + bne _020876A4 + ldr r0, [r4, #0x6c] + mov r1, #0x0 + bl FUN_0200C644 + mov r0, #0x0 + str r0, [r4, #0x60] + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087810 +_0208769A: + ldr r0, [r4, #0x60] + add r0, r0, #0x1 + str r0, [r4, #0x60] + cmp r0, #0xa + bge _020876A6 +_020876A4: + b _02087810 +_020876A6: + mov r3, #0x0 + str r3, [r4, #0x60] + str r3, [sp, #0x0] + mov r0, #0x10 + ldr r2, _0208781C ; =0x0000FFFF + str r0, [sp, #0x4] + str r2, [sp, #0x8] + ldr r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_02003210 + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x0] + bl FUN_02020354 + mov r1, #0x1 + bl FUN_0201E28C + add r5, r0, #0x0 + mov r3, #0x0 + mov r6, #0x1 + str r3, [sp, #0x0] + mov r0, #0x10 + ldr r2, _0208781C ; =0x0000FFFF + str r0, [sp, #0x4] + str r2, [sp, #0x8] + lsl r6, r5 + eor r2, r6 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x8] + mov r1, #0x4 + lsr r2, r2, #0x10 + bl FUN_02003210 + ldr r0, _0208781C ; =0x0000FFFF + mov r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x68] + mov r2, #0x10 + add r3, r1, #0x0 + bl FUN_02007E68 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087810 +_02087702: + add r1, sp, #0xc + ldr r0, [r4, #0x70] + mov r5, #0x0 + add r1, #0x2 + add r2, sp, #0xc + bl FUN_0200C7A0 + add r0, sp, #0xc + add r1, r5, #0x0 + ldrsh r2, [r0, r1] + add r0, r1, #0x0 + sub r0, #0x30 + cmp r2, r0 + ble _02087728 + ldr r0, [r4, #0x70] + sub r2, r1, #0x4 + bl FUN_0200C82C + b _0208772A +_02087728: + add r5, r5, #0x1 +_0208772A: + add r1, sp, #0xc + ldr r0, [r4, #0x74] + add r1, #0x2 + add r2, sp, #0xc + bl FUN_0200C7A0 + add r0, sp, #0xc + mov r1, #0x0 + ldrsh r0, [r0, r1] + cmp r0, #0xc0 + bge _0208774A + ldr r0, [r4, #0x74] + mov r2, #0x4 + bl FUN_0200C82C + b _0208774C +_0208774A: + add r5, r5, #0x1 +_0208774C: + ldr r0, [r4, #0x8] + bl FUN_020038E4 + cmp r0, #0x0 + bne _02087810 + cmp r5, #0x2 + bne _02087810 + ldr r0, [r4, #0x68] + bl FUN_02007F20 + cmp r0, #0x0 + bne _02087810 + mov r0, #0x2 + mov r1, #0x1 + bl FUN_0201E6E4 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02086F98 + ldr r0, [r4, #0x6c] + mov r1, #0x0 + bl FUN_0200C644 + ldr r0, [r4, #0x70] + mov r1, #0x0 + bl FUN_0200C644 + ldr r0, [r4, #0x74] + mov r1, #0x0 + bl FUN_0200C644 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087810 +_02087794: + ldr r0, [r4, #0x60] + add r0, r0, #0x1 + str r0, [r4, #0x60] + cmp r0, #0x19 + blt _02087810 + mov r2, #0x0 + ldr r0, _0208781C ; =0x0000FFFF + str r2, [r4, #0x60] + str r0, [sp, #0x0] + ldr r0, [r4, #0x68] + mov r1, #0x10 + add r3, r2, #0x0 + bl FUN_02007E68 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r2, _0208781C ; =0x0000FFFF + str r3, [sp, #0x4] + str r2, [sp, #0x8] + ldr r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r2, _0208781C ; =0x0000FFFF + str r3, [sp, #0x4] + str r2, [sp, #0x8] + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_02003210 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087810 +_020877E0: + ldr r0, [r4, #0x8] + bl FUN_020038E4 + cmp r0, #0x0 + bne _02087810 + ldr r0, [r4, #0x68] + bl FUN_02007F20 + cmp r0, #0x0 + bne _02087810 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087810 +_020877FC: + ldr r0, [r4, #0x40] + bl FUN_02086B8C + cmp r0, #0x1 + beq _02087810 + mov r0, #0x0 + str r0, [r4, #0x64] + add sp, #0x10 + str r0, [r4, #0x60] + pop {r4-r6, pc} +_02087810: + mov r0, #0x1 + add sp, #0x10 + pop {r4-r6, pc} + nop +_02087818: .word 0x00000707 +_0208781C: .word 0x0000FFFF + + thumb_func_start FUN_02087820 +FUN_02087820: ; 0x02087820 + push {r4-r6, lr} + sub sp, #0x10 + add r4, r0, #0x0 + ldr r0, [r4, #0x64] + cmp r0, #0x4 + bls _0208782E + b _020879FC +_0208782E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0208783A: ; jump table (using 16-bit offset) + .short _02087844 - _0208783A - 2; case 0 + .short _02087874 - _0208783A - 2; case 1 + .short _02087902 - _0208783A - 2; case 2 + .short _02087994 - _0208783A - 2; case 3 + .short _020879E0 - _0208783A - 2; case 4 +_02087844: + ldr r0, [r4, #0x40] + mov r1, #0x0 + bl FUN_02086B70 + ldr r0, [r4, #0x40] + mov r1, #0x1 + bl FUN_02086B70 + ldr r0, [r4, #0x40] + mov r1, #0x2 + bl FUN_02086B70 + ldr r0, [r4, #0x40] + mov r1, #0x3 + bl FUN_02086B70 + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201E6E4 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087A06 +_02087874: + ldr r0, [r4, #0x60] + cmp r0, #0x19 + beq _02087884 + cmp r0, #0x50 + beq _0208788C + cmp r0, #0x8e + beq _02087894 + b _0208789A +_02087884: + ldr r0, _02087A0C ; =0x00000806 + bl FUN_020054C8 + b _0208789A +_0208788C: + ldr r0, _02087A10 ; =0x000007AA + bl FUN_020054C8 + b _0208789A +_02087894: + ldr r0, _02087A14 ; =0x00000815 + bl FUN_020054C8 +_0208789A: + ldr r0, [r4, #0x60] + add r0, r0, #0x1 + str r0, [r4, #0x60] + cmp r0, #0xa0 + bge _020878A6 + b _02087A06 +_020878A6: + mov r3, #0x0 + str r3, [r4, #0x60] + str r3, [sp, #0x0] + mov r0, #0x10 + ldr r2, _02087A18 ; =0x0000FFFF + str r0, [sp, #0x4] + str r2, [sp, #0x8] + ldr r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_02003210 + ldr r0, [r4, #0x70] + ldr r0, [r0, #0x0] + bl FUN_02020354 + mov r1, #0x1 + bl FUN_0201E28C + add r5, r0, #0x0 + mov r3, #0x0 + mov r6, #0x1 + str r3, [sp, #0x0] + mov r0, #0x10 + ldr r2, _02087A18 ; =0x0000FFFF + str r0, [sp, #0x4] + str r2, [sp, #0x8] + lsl r6, r5 + eor r2, r6 + lsl r2, r2, #0x10 + ldr r0, [r4, #0x8] + mov r1, #0x4 + lsr r2, r2, #0x10 + bl FUN_02003210 + ldr r0, _02087A18 ; =0x0000FFFF + mov r1, #0x0 + str r0, [sp, #0x0] + ldr r0, [r4, #0x68] + mov r2, #0x10 + add r3, r1, #0x0 + bl FUN_02007E68 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087A06 +_02087902: + add r1, sp, #0xc + ldr r0, [r4, #0x70] + mov r5, #0x0 + add r1, #0x2 + add r2, sp, #0xc + bl FUN_0200C7A0 + add r0, sp, #0xc + add r1, r5, #0x0 + ldrsh r2, [r0, r1] + add r0, r1, #0x0 + sub r0, #0x30 + cmp r2, r0 + ble _02087928 + ldr r0, [r4, #0x70] + sub r2, r1, #0x4 + bl FUN_0200C82C + b _0208792A +_02087928: + add r5, r5, #0x1 +_0208792A: + add r1, sp, #0xc + ldr r0, [r4, #0x74] + add r1, #0x2 + add r2, sp, #0xc + bl FUN_0200C7A0 + add r0, sp, #0xc + mov r1, #0x0 + ldrsh r0, [r0, r1] + cmp r0, #0xc0 + bge _0208794A + ldr r0, [r4, #0x74] + mov r2, #0x4 + bl FUN_0200C82C + b _0208794C +_0208794A: + add r5, r5, #0x1 +_0208794C: + ldr r0, [r4, #0x8] + bl FUN_020038E4 + cmp r0, #0x0 + bne _02087A06 + cmp r5, #0x2 + bne _02087A06 + ldr r0, [r4, #0x68] + bl FUN_02007F20 + cmp r0, #0x0 + bne _02087A06 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_02086F98 + mov r0, #0x2 + mov r1, #0x1 + bl FUN_0201E6E4 + ldr r0, [r4, #0x6c] + mov r1, #0x0 + bl FUN_0200C644 + ldr r0, [r4, #0x70] + mov r1, #0x0 + bl FUN_0200C644 + ldr r0, [r4, #0x74] + mov r1, #0x0 + bl FUN_0200C644 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087A06 +_02087994: + ldr r0, [r4, #0x60] + add r0, r0, #0x1 + str r0, [r4, #0x60] + cmp r0, #0x19 + blt _02087A06 + mov r2, #0x0 + ldr r0, _02087A18 ; =0x0000FFFF + str r2, [r4, #0x60] + str r0, [sp, #0x0] + ldr r0, [r4, #0x68] + mov r1, #0x10 + add r3, r2, #0x0 + bl FUN_02007E68 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r2, _02087A18 ; =0x0000FFFF + str r3, [sp, #0x4] + str r2, [sp, #0x8] + ldr r0, [r4, #0x8] + mov r1, #0x1 + bl FUN_02003210 + mov r0, #0x10 + str r0, [sp, #0x0] + mov r3, #0x0 + ldr r2, _02087A18 ; =0x0000FFFF + str r3, [sp, #0x4] + str r2, [sp, #0x8] + ldr r0, [r4, #0x8] + mov r1, #0x4 + bl FUN_02003210 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087A06 +_020879E0: + ldr r0, [r4, #0x8] + bl FUN_020038E4 + cmp r0, #0x0 + bne _02087A06 + ldr r0, [r4, #0x68] + bl FUN_02007F20 + cmp r0, #0x0 + bne _02087A06 + ldr r0, [r4, #0x64] + add r0, r0, #0x1 + str r0, [r4, #0x64] + b _02087A06 +_020879FC: + mov r0, #0x0 + str r0, [r4, #0x64] + add sp, #0x10 + str r0, [r4, #0x60] + pop {r4-r6, pc} +_02087A06: + mov r0, #0x1 + add sp, #0x10 + pop {r4-r6, pc} + .balign 4 +_02087A0C: .word 0x00000806 +_02087A10: .word 0x000007AA +_02087A14: .word 0x00000815 +_02087A18: .word 0x0000FFFF + + thumb_func_start FUN_02087A1C +FUN_02087A1C: ; 0x02087A1C + ldr r3, _02087A34 ; =0x020FD13C + mov r2, #0x0 +_02087A20: + ldrb r1, [r3, #0x0] + cmp r0, r1 + beq _02087A2E + add r2, r2, #0x1 + add r3, r3, #0x1 + cmp r2, #0x6 + blt _02087A20 +_02087A2E: + add r0, r2, #0x0 + bx lr + nop +_02087A34: .word 0x020FD13C + + thumb_func_start FUN_02087A38 +FUN_02087A38: ; 0x02087A38 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x6 + blt _02087A44 + bl ErrorHandling +_02087A44: + ldr r0, _02087A4C ; =0x020FD13C + ldrb r0, [r0, r4] + pop {r4, pc} + nop +_02087A4C: .word 0x020FD13C + + thumb_func_start FUN_02087A50 +FUN_02087A50: ; 0x02087A50 + ldr r3, _02087A68 ; =0x020FD120 + mov r2, #0x0 +_02087A54: + ldrh r1, [r3, #0x0] + cmp r0, r1 + beq _02087A62 + add r2, r2, #0x1 + add r3, r3, #0x2 + cmp r2, #0xe + blt _02087A54 +_02087A62: + add r0, r2, #0x0 + bx lr + nop +_02087A68: .word 0x020FD120 + + thumb_func_start FUN_02087A6C +FUN_02087A6C: ; 0x02087A6C + push {r3, lr} + mov r1, #0x18 + bl FUN_02016998 + add r3, r0, #0x0 + mov r2, #0x18 + mov r1, #0x0 +_02087A7A: + strb r1, [r3, #0x0] + add r3, r3, #0x1 + sub r2, r2, #0x1 + bne _02087A7A + pop {r3, pc} + + thumb_func_start FUN_02087A84 +FUN_02087A84: ; 0x02087A84 + push {r4, lr} + add r4, r0, #0x0 + bne _02087A8E + bl ErrorHandling +_02087A8E: + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02087A98 +FUN_02087A98: ; 0x02087A98 + push {r4-r6, lr} + add r5, r0, #0x0 + add r6, r1, #0x0 + add r4, r2, #0x0 + cmp r5, #0x0 + bne _02087AA8 + bl ErrorHandling +_02087AA8: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02087AB2 + bl ErrorHandling +_02087AB2: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _02087ABC + bl ErrorHandling +_02087ABC: + add r0, r4, #0x0 + bl FUN_02087C18 + str r0, [r5, #0x0] + add r0, r4, #0x0 + bl FUN_02087C2C + str r0, [r5, #0x4] + cmp r6, #0x0 + bne _02087AEE + add r0, r5, #0x0 + add r1, r5, #0x0 + add r0, #0x8 + add r1, #0xc + add r2, r4, #0x0 + bl FUN_02087C40 + add r0, r5, #0x0 + add r5, #0x14 + add r0, #0x10 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02087CA0 + pop {r4-r6, pc} +_02087AEE: + add r0, r5, #0x0 + add r1, r5, #0x0 + add r0, #0x8 + add r1, #0xc + add r2, r4, #0x0 + bl FUN_02087C70 + add r0, r5, #0x0 + add r5, #0x14 + add r0, #0x10 + add r1, r5, #0x0 + add r2, r4, #0x0 + bl FUN_02087CD0 + pop {r4-r6, pc} + + thumb_func_start FUN_02087B0C +FUN_02087B0C: ; 0x02087B0C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _02087B1A + bl ErrorHandling +_02087B1A: + ldr r0, [r4, #0x4] + cmp r0, #0x0 + bne _02087B24 + bl ErrorHandling +_02087B24: + ldr r0, [r4, #0x0] + bl FUN_02016A18 + ldr r0, [r4, #0x4] + bl FUN_02016A18 + ldr r0, [r4, #0x8] + bl FUN_02016A18 + ldr r0, [r4, #0xc] + bl FUN_02016A18 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x4] + str r0, [r4, #0x8] + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start FUN_02087B58 +FUN_02087B58: ; 0x02087B58 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02087B66 + bl ErrorHandling +_02087B66: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + bne _02087B70 + bl ErrorHandling +_02087B70: + ldr r1, [r5, #0x0] + lsl r0, r4, #0x2 + ldr r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_02087B78 +FUN_02087B78: ; 0x02087B78 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02087B86 + bl ErrorHandling +_02087B86: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _02087B90 + bl ErrorHandling +_02087B90: + ldr r1, [r5, #0x4] + lsl r0, r4, #0x2 + ldr r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_02087B98 +FUN_02087B98: ; 0x02087B98 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02087BA6 + bl ErrorHandling +_02087BA6: + ldr r0, [r5, #0x8] + cmp r0, #0x0 + bne _02087BB0 + bl ErrorHandling +_02087BB0: + ldr r1, [r5, #0x8] + lsl r0, r4, #0x1 + ldrsh r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_02087BB8 +FUN_02087BB8: ; 0x02087BB8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02087BC6 + bl ErrorHandling +_02087BC6: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + bne _02087BD0 + bl ErrorHandling +_02087BD0: + ldr r1, [r5, #0xc] + lsl r0, r4, #0x1 + ldrsh r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_02087BD8 +FUN_02087BD8: ; 0x02087BD8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02087BE6 + bl ErrorHandling +_02087BE6: + ldr r0, [r5, #0x10] + cmp r0, #0x0 + bne _02087BF0 + bl ErrorHandling +_02087BF0: + ldr r1, [r5, #0x10] + lsl r0, r4, #0x1 + ldrsh r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_02087BF8 +FUN_02087BF8: ; 0x02087BF8 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + cmp r5, #0x0 + bne _02087C06 + bl ErrorHandling +_02087C06: + ldr r0, [r5, #0x14] + cmp r0, #0x0 + bne _02087C10 + bl ErrorHandling +_02087C10: + ldr r1, [r5, #0x14] + lsl r0, r4, #0x1 + ldrsh r0, [r1, r0] + pop {r3-r5, pc} + + thumb_func_start FUN_02087C18 +FUN_02087C18: ; 0x02087C18 + push {r3, lr} + mov r1, #0x0 + add r3, r0, #0x0 + mov r0, #0x4b + add r2, r1, #0x0 + str r1, [sp, #0x0] + bl FUN_02006C98 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02087C2C +FUN_02087C2C: ; 0x02087C2C + push {r3, lr} + add r3, r0, #0x0 + mov r2, #0x0 + mov r0, #0x4b + mov r1, #0x1 + str r2, [sp, #0x0] + bl FUN_02006C98 + pop {r3, pc} + .balign 4 + + thumb_func_start FUN_02087C40 +FUN_02087C40: ; 0x02087C40 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r2, #0x0 + mov r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x0] + mov r0, #0x4b + mov r1, #0x9 + add r3, r6, #0x0 + bl FUN_02006C98 + str r0, [r5, #0x0] + mov r2, #0x0 + mov r0, #0x4b + mov r1, #0xa + add r3, r6, #0x0 + str r2, [sp, #0x0] + bl FUN_02006C98 + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02087C70 +FUN_02087C70: ; 0x02087C70 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r2, #0x0 + mov r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x0] + mov r0, #0x4b + mov r1, #0x7 + add r3, r6, #0x0 + bl FUN_02006C98 + str r0, [r5, #0x0] + mov r2, #0x0 + mov r0, #0x4b + mov r1, #0x8 + add r3, r6, #0x0 + str r2, [sp, #0x0] + bl FUN_02006C98 + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02087CA0 +FUN_02087CA0: ; 0x02087CA0 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r2, #0x0 + mov r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x0] + mov r0, #0x4b + mov r1, #0x5 + add r3, r6, #0x0 + bl FUN_02006C98 + str r0, [r5, #0x0] + mov r2, #0x0 + mov r0, #0x4b + mov r1, #0x6 + add r3, r6, #0x0 + str r2, [sp, #0x0] + bl FUN_02006C98 + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02087CD0 +FUN_02087CD0: ; 0x02087CD0 + push {r3-r6, lr} + sub sp, #0x4 + add r6, r2, #0x0 + mov r2, #0x0 + add r5, r0, #0x0 + add r4, r1, #0x0 + str r2, [sp, #0x0] + mov r0, #0x4b + mov r1, #0x3 + add r3, r6, #0x0 + bl FUN_02006C98 + str r0, [r5, #0x0] + mov r2, #0x0 + mov r0, #0x4b + mov r1, #0x4 + add r3, r6, #0x0 + str r2, [sp, #0x0] + bl FUN_02006C98 + str r0, [r4, #0x0] + add sp, #0x4 + pop {r3-r6, pc} + .balign 4 + + thumb_func_start FUN_02087D00 +FUN_02087D00: ; 0x02087D00 + push {r3-r7, lr} + sub sp, #0x10 + add r4, r0, #0x0 + add r5, r1, #0x0 + mov r0, #0x0 + mov r1, #0xcf + str r0, [sp, #0x0] + add r0, r5, #0x0 + lsl r1, r1, #0x2 + bl FUN_02016998 + mov r2, #0xcf + mov r1, #0x0 + lsl r2, r2, #0x2 + add r7, r0, #0x0 + blx MI_CpuFill8 + add r0, r4, #0x0 + bl FUN_02028048 + str r0, [r7, #0x8] + add r0, r4, #0x0 + bl FUN_020238F4 + str r0, [r7, #0xc] + add r0, r4, #0x0 + bl FUN_0206BB1C + str r0, [r7, #0x10] + add r0, r4, #0x0 + bl FUN_0206F158 + str r0, [r7, #0x14] + add r0, r4, #0x0 + bl LoadPlayerDataAddress + str r0, [r7, #0x18] + add r0, r5, #0x0 + bl FUN_02027E5C + add r4, r0, #0x0 + mov r0, #0x1 + mov r1, #0x20 + add r2, r5, #0x0 + bl FUN_0200AA90 + str r0, [sp, #0x4] + mov r6, #0x0 +_02087D60: + ldr r0, [r7, #0x8] + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_02028174 + add r0, r4, #0x0 + bl FUN_02027E34 + cmp r0, #0x0 + beq _02087DEE + add r0, r4, #0x0 + add r1, sp, #0x8 + bl FUN_02027FBC + ldr r0, [sp, #0x0] + add r1, r7, #0x0 + add r1, #0x1c + lsl r0, r0, #0x3 + add r5, r1, r0 + strb r6, [r1, r0] + add r0, r4, #0x0 + bl FUN_02027FDC + strb r0, [r5, #0x1] + add r0, sp, #0x8 + ldrb r1, [r0, #0x0] + mov r2, #0x1 + strb r1, [r5, #0x2] + ldrb r0, [r0, #0x6] + mov r1, #0x0 + strb r0, [r5, #0x3] + add r0, sp, #0x8 +_02087DA0: + add r3, r0, r1 + ldrb r3, [r3, #0x1] + cmp r3, #0x0 + beq _02087DAE + ldrb r3, [r5, #0x4] + orr r3, r2 + strb r3, [r5, #0x4] +_02087DAE: + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsl r2, r2, #0x19 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + cmp r1, #0x5 + blo _02087DA0 + ldrb r1, [r5, #0x4] + mov r0, #0x20 + orr r0, r1 + strb r0, [r5, #0x4] + ldrb r2, [r5, #0x4] + mov r1, #0x80 + add r0, r2, #0x0 + bic r0, r1 + lsl r1, r2, #0x1a + lsr r1, r1, #0x1f + lsl r1, r1, #0x1f + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r5, #0x4] + ldr r0, [sp, #0x0] + add r1, r0, #0x0 + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #0x0] + strb r0, [r5, #0x5] + mov r0, #0xff + strb r0, [r5, #0x6] + ldrb r0, [r5, #0x6] + strb r0, [r5, #0x7] +_02087DEE: + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #0x64 + blo _02087D60 + ldr r0, [sp, #0x4] + bl FUN_0200AB18 + add r0, r4, #0x0 + bl FUN_02016A18 + ldr r0, [sp, #0x0] + strb r0, [r7, #0x0] + mov r0, #0x5 + strb r0, [r7, #0x3] + add r0, r7, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02087E14 +FUN_02087E14: ; 0x02087E14 + ldr r3, _02087E18 ; =FUN_02016A18 + bx r3 + .balign 4 +_02087E18: .word FUN_02016A18 + + thumb_func_start FUN_02087E1C +FUN_02087E1C: ; 0x02087E1C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02087E3C + bl FUN_02006290 + cmp r0, #0x0 + beq _02087E3C + ldr r0, [r4, #0x0] + bl FUN_02006260 + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} +_02087E3C: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02087E40 +FUN_02087E40: ; 0x02087E40 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_0200628C + mov r2, #0x1 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0x2c + lsl r2, r2, #0xc + bl FUN_0201681C + add r0, r4, #0x0 + mov r1, #0x18 + mov r2, #0x2c + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0x18 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x2c + str r0, [r4, #0x0] + str r5, [r4, #0xc] + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_02087E74 +FUN_02087E74: ; 0x02087E74 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02006278 + ldr r1, [r4, #0x0] + cmp r1, #0x8 + bhi _02087EE4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02087E8E: ; jump table (using 16-bit offset) + .short _02087EA0 - _02087E8E - 2; case 0 + .short _02087EA8 - _02087E8E - 2; case 1 + .short _02087EB0 - _02087E8E - 2; case 2 + .short _02087EB8 - _02087E8E - 2; case 3 + .short _02087EC0 - _02087E8E - 2; case 4 + .short _02087EC8 - _02087E8E - 2; case 5 + .short _02087ED0 - _02087E8E - 2; case 6 + .short _02087ED8 - _02087E8E - 2; case 7 + .short _02087EE0 - _02087E8E - 2; case 8 +_02087EA0: + bl FUN_02087F50 + str r0, [r4, #0x0] + b _02087EE4 +_02087EA8: + bl FUN_02087F68 + str r0, [r4, #0x0] + b _02087EE4 +_02087EB0: + bl FUN_02087FD4 + str r0, [r4, #0x0] + b _02087EE4 +_02087EB8: + bl FUN_0208805C + str r0, [r4, #0x0] + b _02087EE4 +_02087EC0: + bl FUN_020880A0 + str r0, [r4, #0x0] + b _02087EE4 +_02087EC8: + bl FUN_0208810C + str r0, [r4, #0x0] + b _02087EE4 +_02087ED0: + bl FUN_02088130 + str r0, [r4, #0x0] + b _02087EE4 +_02087ED8: + bl FUN_020881AC + str r0, [r4, #0x0] + b _02087EE4 +_02087EE0: + mov r0, #0x1 + pop {r4, pc} +_02087EE4: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_02087EE8 +FUN_02087EE8: ; 0x02087EE8 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + bl FUN_02087F08 + add r0, r5, #0x0 + bl FUN_0200627C + ldr r0, [r4, #0x0] + bl FUN_020168D0 + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02087F08 +FUN_02087F08: ; 0x02087F08 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r2, [r5, #0xc] + mov r0, #0x0 + ldrb r1, [r2, #0x0] + add r4, r0, #0x0 + cmp r1, #0x0 + bls _02087F42 + mov r6, #0x1 +_02087F1A: + add r3, r2, #0x0 + add r3, #0x1c + lsl r1, r4, #0x3 + add r1, r3, r1 + ldrb r3, [r1, #0x4] + lsl r3, r3, #0x19 + lsr r3, r3, #0x1f + beq _02087F34 + ldrb r1, [r1, #0x0] + ldr r0, [r2, #0x8] + bl FUN_020280B8 + add r0, r6, #0x0 +_02087F34: + add r1, r4, #0x1 + lsl r1, r1, #0x18 + ldr r2, [r5, #0xc] + lsr r4, r1, #0x18 + ldrb r1, [r2, #0x0] + cmp r4, r1 + blo _02087F1A +_02087F42: + cmp r0, #0x0 + beq _02087F4C + ldr r0, [r2, #0x8] + bl FUN_020280F4 +_02087F4C: + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02087F50 +FUN_02087F50: ; 0x02087F50 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, _02087F64 ; =0x020FD15C + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x0] + bl FUN_02006234 + str r0, [r4, #0x14] + mov r0, #0x1 + pop {r4, pc} + .balign 4 +_02087F64: .word 0x020FD15C + + thumb_func_start FUN_02087F68 +FUN_02087F68: ; 0x02087F68 + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x14 + bl FUN_02087E1C + cmp r0, #0x0 + bne _02087F7A + mov r0, #0x1 + pop {r3-r5, pc} +_02087F7A: + ldr r1, [r5, #0xc] + ldrb r0, [r1, #0x2] + cmp r0, #0x0 + bne _02087F86 + mov r0, #0x8 + pop {r3-r5, pc} +_02087F86: + mov r0, #0x0 + strb r0, [r1, #0x2] + ldr r0, [r5, #0x0] + mov r1, #0x40 + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0x40 + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r0, [r5, #0xc] + mov r1, #0x0 + ldr r0, [r0, #0x10] + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x14] + str r0, [r4, #0x4] + add r0, r4, #0x0 + add r0, #0x21 + strb r1, [r0, #0x0] + add r0, r4, #0x0 + mov r1, #0x14 + add r0, #0x20 + strb r1, [r0, #0x0] + ldr r0, [r5, #0xc] + add r1, r4, #0x0 + ldr r0, [r0, #0x18] + str r0, [r4, #0xc] + ldr r0, _02087FD0 ; =0x020F96DC + ldr r2, [r5, #0x0] + bl FUN_02006234 + str r0, [r5, #0x14] + str r4, [r5, #0x10] + mov r0, #0x2 + pop {r3-r5, pc} + .balign 4 +_02087FD0: .word 0x020F96DC + + thumb_func_start FUN_02087FD4 +FUN_02087FD4: ; 0x02087FD4 + push {r3-r7, lr} + add r5, r0, #0x0 + add r0, #0x14 + bl FUN_02087E1C + cmp r0, #0x0 + bne _02087FE6 + mov r0, #0x2 + pop {r3-r7, pc} +_02087FE6: + ldr r7, [r5, #0x10] + add r0, r7, #0x0 + add r0, #0x22 + ldrb r6, [r0, #0x0] + strb r6, [r5, #0x8] + ldr r0, [r5, #0x10] + bl FUN_02016A18 + cmp r6, #0x7 + bne _02087FFE + mov r0, #0x0 + pop {r3-r7, pc} +_02087FFE: + ldr r0, [r5, #0x0] + mov r1, #0x30 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x10] + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x18] + str r0, [r4, #0x4] + mov r0, #0x1 + strb r0, [r4, #0x11] + strb r6, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9AC + strb r0, [r4, #0x13] + mov r1, #0x0 + strh r1, [r4, #0x18] + mov r0, #0x3 + strb r0, [r4, #0x12] + mov r0, #0x1 + str r0, [r4, #0x2c] + str r1, [r4, #0x28] + ldr r1, _02088054 ; =0x020FD158 + add r0, r4, #0x0 + bl FUN_0207B000 + ldr r1, [r5, #0xc] + add r0, r4, #0x0 + ldr r1, [r1, #0xc] + bl FUN_0207C2A4 + ldr r0, _02088058 ; =0x020FA6E8 + ldr r2, [r5, #0x0] + add r1, r7, #0x0 + bl FUN_02006234 + str r0, [r5, #0x14] + str r4, [r5, #0x10] + mov r0, #0x3 + pop {r3-r7, pc} + .balign 4 +_02088054: .word 0x020FD158 +_02088058: .word 0x020FA6E8 + + thumb_func_start FUN_0208805C +FUN_0208805C: ; 0x0208805C + push {r3-r5, lr} + add r5, r0, #0x0 + add r0, #0x14 + bl FUN_02087E1C + cmp r0, #0x0 + bne _0208806E + mov r0, #0x3 + pop {r3-r5, pc} +_0208806E: + ldr r0, [r5, #0x10] + ldrb r4, [r0, #0x17] + ldrb r0, [r0, #0x14] + strb r0, [r5, #0x8] + ldr r0, [r5, #0x10] + bl FUN_02016A18 + cmp r4, #0x1 + bne _02088084 + mov r0, #0x0 + pop {r3-r5, pc} +_02088084: + ldr r0, [r5, #0xc] + add r3, r0, #0x0 + ldrb r0, [r0, #0x1] + add r3, #0x20 + lsl r2, r0, #0x3 + ldrb r1, [r3, r2] + mov r0, #0x40 + orr r0, r1 + strb r0, [r3, r2] + ldr r0, [r5, #0xc] + mov r1, #0x1 + strb r1, [r0, #0x2] + mov r0, #0x4 + pop {r3-r5, pc} + + thumb_func_start FUN_020880A0 +FUN_020880A0: ; 0x020880A0 + push {r3-r5, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0xc + bl FUN_02016998 + mov r1, #0x0 + mov r2, #0xc + add r4, r0, #0x0 + blx MI_CpuFill8 + ldr r1, [r5, #0xc] + ldrb r0, [r1, #0x1] + lsl r0, r0, #0x3 + add r0, r1, r0 + ldrb r0, [r0, #0x1e] + strh r0, [r4, #0x8] + ldr r2, [r5, #0xc] + ldrb r1, [r2, #0x1] + ldr r0, [r2, #0x8] + lsl r1, r1, #0x3 + add r1, r2, r1 + ldrb r1, [r1, #0x1c] + ldr r2, [r5, #0x0] + bl FUN_02028190 + str r0, [r4, #0x4] + ldr r0, [r5, #0xc] + ldrb r1, [r5, #0x8] + ldr r0, [r0, #0x10] + bl FUN_0206B9B0 + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x18] + bl FUN_02024FF4 + strb r0, [r4, #0xa] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x18] + bl FUN_02025084 + strb r0, [r4, #0xb] + ldr r0, _02088108 ; =0x020FD16C + ldr r2, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02006234 + str r0, [r5, #0x14] + str r4, [r5, #0x10] + mov r0, #0x5 + pop {r3-r5, pc} + .balign 4 +_02088108: .word 0x020FD16C + + thumb_func_start FUN_0208810C +FUN_0208810C: ; 0x0208810C + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x14 + bl FUN_02087E1C + cmp r0, #0x0 + bne _0208811E + mov r0, #0x5 + pop {r4, pc} +_0208811E: + ldr r4, [r4, #0x10] + ldr r0, [r4, #0x4] + bl FUN_02016A18 + add r0, r4, #0x0 + bl FUN_02016A18 + mov r0, #0x6 + pop {r4, pc} + + thumb_func_start FUN_02088130 +FUN_02088130: ; 0x02088130 + push {r4-r6, lr} + add r5, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x30 + bl FUN_02016998 + ldr r2, [r5, #0xc] + add r4, r0, #0x0 + ldrb r1, [r2, #0x1] + ldr r0, [r2, #0x8] + lsl r1, r1, #0x3 + add r1, r2, r1 + ldrb r1, [r1, #0x1c] + ldr r2, [r5, #0x0] + bl FUN_02028190 + add r6, r0, #0x0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x10] + str r0, [r4, #0x0] + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x18] + str r0, [r4, #0x4] + mov r0, #0x1 + strb r0, [r4, #0x11] + ldrb r0, [r5, #0x8] + strb r0, [r4, #0x14] + ldr r0, [r4, #0x0] + bl FUN_0206B9AC + strb r0, [r4, #0x13] + mov r1, #0x0 + strh r1, [r4, #0x18] + mov r0, #0x4 + strb r0, [r4, #0x12] + str r6, [r4, #0x24] + mov r0, #0x1 + str r0, [r4, #0x2c] + str r1, [r4, #0x28] + ldr r1, _020881A4 ; =0x020FD154 + add r0, r4, #0x0 + bl FUN_0207B000 + ldr r1, [r5, #0xc] + add r0, r4, #0x0 + ldr r1, [r1, #0xc] + bl FUN_0207C2A4 + ldr r0, _020881A8 ; =0x020FA6E8 + ldr r2, [r5, #0x0] + add r1, r4, #0x0 + bl FUN_02006234 + str r0, [r5, #0x14] + str r4, [r5, #0x10] + mov r0, #0x7 + pop {r4-r6, pc} + nop +_020881A4: .word 0x020FD154 +_020881A8: .word 0x020FA6E8 + + thumb_func_start FUN_020881AC +FUN_020881AC: ; 0x020881AC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x14 + bl FUN_02087E1C + cmp r0, #0x0 + bne _020881BE + mov r0, #0x7 + pop {r4, pc} +_020881BE: + ldr r0, [r4, #0x10] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #0x10] + bl FUN_02016A18 + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_020881D0 +FUN_020881D0: ; 0x020881D0 + push {r3-r5, lr} + sub sp, #0x8 + lsl r2, r1, #0x1 + ldr r1, _02088214 ; =0x020FD17C + ldrb r4, [r1, r2] + ldr r1, _02088218 ; =0x020FD17D + ldrb r5, [r1, r2] + cmp r4, #0x5 + bne _020881E8 + add sp, #0x8 + mov r0, #0x2 + pop {r3-r5, pc} +_020881E8: + add r1, sp, #0x0 + bl FUN_02027FBC + add r0, r4, #0x1 + add r2, sp, #0x0 + ldrb r1, [r2, r0] + add r0, r5, #0x1 + ldrb r0, [r2, r0] + cmp r1, r0 + bne _02088202 + add sp, #0x8 + mov r0, #0x2 + pop {r3-r5, pc} +_02088202: + cmp r1, r0 + bls _0208820C + add sp, #0x8 + mov r0, #0x0 + pop {r3-r5, pc} +_0208820C: + mov r0, #0x1 + add sp, #0x8 + pop {r3-r5, pc} + nop +_02088214: .word 0x020FD17C +_02088218: .word 0x020FD17D + + thumb_func_start FUN_0208821C +FUN_0208821C: ; 0x0208821C + push {r3-r7, lr} + sub sp, #0x30 + add r6, r1, #0x0 + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_02068854 + lsl r1, r0, #0x1 + ldr r0, _02088310 ; =0x020FD17C + ldrb r0, [r0, r1] + str r0, [sp, #0x4] + ldr r0, _02088314 ; =0x020FD17D + ldrb r0, [r0, r1] + add r1, sp, #0x10 + str r0, [sp, #0x0] + add r0, r4, #0x0 + bl FUN_02027FBC + mov r4, #0x0 + add r7, r4, #0x0 + add r5, sp, #0x18 +_02088246: + add r1, r4, #0x0 + add r0, r6, #0x0 + add r1, #0x13 + add r2, r7, #0x0 + bl FUN_020671BC + lsl r1, r4, #0x2 + str r0, [r5, r1] + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x6 + blo _02088246 + add r4, sp, #0x8 + mov r1, #0x0 + mov r3, #0x1 + add r0, sp, #0x10 + add r4, #0x1 +_0208826A: + ldrb r5, [r0, r3] + add r2, r1, #0x0 + add r1, r1, #0x1 + strb r5, [r4, r2] + add r2, r3, #0x1 + lsl r2, r2, #0x18 + lsl r1, r1, #0x18 + lsr r3, r2, #0x18 + lsr r1, r1, #0x18 + cmp r3, #0x6 + bls _0208826A + ldr r0, [sp, #0x4] + cmp r0, #0x5 + beq _020882B8 + ldrb r0, [r4, r0] + blx _ffltu + add r1, r0, #0x0 + ldr r0, _02088318 ; =0x3F8CCCCD + blx _fmul + blx _ffixu + ldr r1, [sp, #0x4] + strb r0, [r4, r1] + add r4, sp, #0x8 + ldr r0, [sp, #0x0] + add r4, #0x1 + ldrb r0, [r4, r0] + blx _ffltu + add r1, r0, #0x0 + ldr r0, _0208831C ; =0x3F666666 + blx _fmul + blx _ffixu + ldr r1, [sp, #0x0] + strb r0, [r4, r1] +_020882B8: + add r7, sp, #0x8 + mov r5, #0x0 + add r4, sp, #0x18 + add r7, #0x1 +_020882C0: + lsl r2, r5, #0x2 + ldrb r0, [r7, r5] + ldr r1, [r4, r2] + add r0, r1, r0 + str r0, [r4, r2] + ldr r0, [r4, r2] + cmp r0, #0xff + ble _020882D4 + mov r0, #0xff + str r0, [r4, r2] +_020882D4: + add r1, r5, #0x0 + add r0, r6, #0x0 + add r1, #0x13 + add r2, r4, r2 + bl FUN_02067830 + add r0, r5, #0x1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #0x6 + blo _020882C0 + add r0, r6, #0x0 + mov r1, #0x9 + mov r2, #0x0 + bl FUN_020671BC + add r1, sp, #0x8 + strb r0, [r1, #0x0] + ldrb r0, [r1, #0x0] + cmp r0, #0xff + bhs _0208830C + add r0, r0, #0x1 + strb r0, [r1, #0x0] + add r0, r6, #0x0 + mov r1, #0x9 + add r2, sp, #0x8 + bl FUN_02067830 +_0208830C: + add sp, #0x30 + pop {r3-r7, pc} + .balign 4 +_02088310: .word 0x020FD17C +_02088314: .word 0x020FD17D +_02088318: .word 0x3F8CCCCD +_0208831C: .word 0x3F666666 + + thumb_func_start FUN_02088320 +FUN_02088320: ; 0x02088320 + push {r3-r7, lr} + add r5, r1, #0x0 + mov r1, #0x59 + lsl r1, r1, #0x2 + add r6, r0, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x0] + bl FUN_02016998 + mov r2, #0x59 + mov r1, #0x0 + lsl r2, r2, #0x2 + add r4, r0, #0x0 + blx MI_CpuFill8 + str r6, [r4, #0x0] + cmp r5, #0x10 + bls _0208834A + mov r0, #0x10 + strh r0, [r4, #0xa] + b _0208834C +_0208834A: + strh r7, [r4, #0xa] +_0208834C: + strh r5, [r4, #0xc] + ldr r0, [sp, #0x0] + strh r0, [r4, #0xe] + ldr r0, [sp, #0x18] + str r0, [r4, #0x4] + add r0, r4, #0x0 + bl FUN_0208837C + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02088360 +FUN_02088360: ; 0x02088360 + push {r4, lr} + add r4, r0, #0x0 + bl FUN_0208843C + mov r2, #0x59 + add r0, r4, #0x0 + mov r1, #0x0 + lsl r2, r2, #0x2 + blx MI_CpuFill8 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_0208837C +FUN_0208837C: ; 0x0208837C + push {r4-r7, lr} + sub sp, #0xc + ldr r1, _02088438 ; =0x020FD1C0 + str r0, [sp, #0x0] + ldrb r2, [r1, #0x0] + add r0, sp, #0x8 + strb r2, [r0, #0x0] + ldrb r2, [r1, #0x1] + strb r2, [r0, #0x1] + ldrb r2, [r1, #0x2] + ldrb r1, [r1, #0x3] + strb r2, [r0, #0x2] + strb r1, [r0, #0x3] + ldr r0, [sp, #0x0] + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x0] + ldrh r0, [r0, #0xc] + ldr r2, [r2, #0x0] + add r1, #0x14 + bl FUN_02008C9C + ldr r1, [sp, #0x0] + mov r6, #0x15 + str r0, [r1, #0x10] + add r0, r1, #0x0 + ldrh r1, [r0, #0xa] + add r0, sp, #0x8 + ldr r5, [sp, #0x0] + strb r1, [r0, #0x1] + mov r0, #0x0 + str r0, [sp, #0x4] + add r7, sp, #0x8 + add r4, r0, #0x0 + lsl r6, r6, #0x4 +_020883C0: + ldr r2, [sp, #0x0] + ldrb r0, [r7, #0x0] + ldr r1, [sp, #0x4] + ldr r2, [r2, #0x0] + bl FUN_02008DEC + mov r1, #0x5 + lsl r1, r1, #0x6 + str r0, [r5, r1] + ldr r1, [sp, #0x0] + ldrb r0, [r7, #0x0] + ldr r1, [r1, #0x0] + bl FUN_02009424 + mov r1, #0x15 + lsl r1, r1, #0x4 + str r0, [r5, r1] + mov r0, #0x15 + lsl r0, r0, #0x4 + ldr r3, [r5, r0] + mov r1, #0x0 + ldr r0, [r3, #0x4] + cmp r0, #0x0 + bls _02088402 + add r2, r1, #0x0 +_020883F2: + ldr r0, [r3, #0x0] + add r1, r1, #0x1 + str r4, [r0, r2] + ldr r3, [r5, r6] + add r2, r2, #0x4 + ldr r0, [r3, #0x4] + cmp r1, r0 + blo _020883F2 +_02088402: + ldr r0, [sp, #0x4] + add r7, r7, #0x1 + add r0, r0, #0x1 + add r5, r5, #0x4 + str r0, [sp, #0x4] + cmp r0, #0x4 + blo _020883C0 + ldr r0, [sp, #0x0] + bl FUN_020886CC + ldr r0, [sp, #0x0] + mov r1, #0x4 + ldr r0, [r0, #0x0] + bl FUN_02016998 + mov r2, #0x16 + ldr r1, [sp, #0x0] + lsl r2, r2, #0x4 + str r0, [r1, r2] + add r0, r1, #0x0 + ldr r0, [r0, r2] + mov r1, #0x0 + mov r2, #0x4 + blx MI_CpuFill8 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02088438: .word 0x020FD1C0 + + thumb_func_start FUN_0208843C +FUN_0208843C: ; 0x0208843C + push {r3-r7, lr} + add r5, r0, #0x0 + mov r0, #0x16 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, [r5, #0x10] + bl FUN_0201FD58 + mov r0, #0x15 + lsl r0, r0, #0x4 + ldr r0, [r5, r0] + bl FUN_02009C30 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02009E28 + mov r7, #0x15 + lsl r7, r7, #0x4 + add r6, r7, #0x0 + mov r4, #0x0 + sub r6, #0x10 +_0208846E: + ldr r0, [r5, r7] + bl FUN_02009448 + ldr r0, [r5, r6] + bl FUN_02008E2C + add r4, r4, #0x1 + add r5, r5, #0x4 + cmp r4, #0x4 + blo _0208846E + pop {r3-r7, pc} + + thumb_func_start FUN_02088484 +FUN_02088484: ; 0x02088484 + ldr r3, _0208848C ; =FUN_0201FDEC + ldr r0, [r0, #0x10] + bx r3 + nop +_0208848C: .word FUN_0201FDEC + + thumb_func_start FUN_02088490 +FUN_02088490: ; 0x02088490 + push {r3-r7, lr} + sub sp, #0x70 + str r1, [sp, #0x2c] + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r5, r0, #0x0 + add r7, r2, #0x0 + str r3, [sp, #0x30] + bl FUN_020887CC + str r0, [sp, #0x3c] + cmp r0, #0x0 + bge _020884B4 + bl ErrorHandling + add sp, #0x70 + mov r0, #0x0 + pop {r3-r7, pc} +_020884B4: + ldr r0, [r5, #0x0] + mov r1, #0x8 + bl FUN_02016998 + str r0, [sp, #0x38] + mov r1, #0x0 + mov r2, #0x8 + blx MI_CpuFill8 + ldr r1, [sp, #0x3c] + ldr r0, [sp, #0x38] + strh r1, [r0, #0x0] + ldr r0, [sp, #0x94] + cmp r0, #0x0 + bne _020884D6 + mov r6, #0x1 + b _020884D8 +_020884D6: + mov r6, #0x2 +_020884D8: + ldr r0, [sp, #0x3c] + mov r1, #0x55 + lsl r1, r1, #0x2 + lsl r4, r0, #0x2 + ldr r0, [r5, r1] + ldr r3, [sp, #0x2c] + ldr r0, [r0, #0x0] + sub r1, #0x10 + ldr r0, [r0, r4] + mov r2, #0x58 + str r0, [sp, #0x34] + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, [r5, #0x0] + add r3, r3, #0x3 + str r0, [sp, #0x4] + ldr r0, [r5, r1] + ldr r1, [sp, #0x34] + bl FUN_02009168 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + ldr r0, [r0, #0x0] + ldr r0, [r0, r4] + bl FUN_02009DE0 + ldr r0, [r5, #0x0] + mov r1, #0x10 + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [r5, #0x0] + mov r1, #0x8 + bl FUN_02016998 + str r0, [r4, #0x8] + ldr r0, [r5, #0x0] + mov r1, #0x24 + bl FUN_02016998 + ldr r1, [r4, #0x8] + mov r3, #0xe + str r0, [r1, #0x0] + ldr r0, [r4, #0x8] + lsl r3, r3, #0xc + ldr r0, [r0, #0x0] + mov r1, #0x0 + str r0, [r4, #0x4] + mov r0, #0x0 + str r3, [sp, #0x0] + mvn r0, r0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + str r1, [sp, #0xc] + add r0, sp, #0x78 + ldrb r0, [r0, #0x14] + str r0, [sp, #0x10] + mov r0, #0x5 + lsl r0, r0, #0x6 + ldr r2, [r5, r0] + str r2, [sp, #0x14] + add r2, r0, #0x4 + ldr r2, [r5, r2] + str r2, [sp, #0x18] + add r2, r0, #0x0 + add r2, #0x8 + ldr r2, [r5, r2] + add r0, #0xc + str r2, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + ldr r2, [sp, #0x3c] + ldr r0, [r4, #0x4] + add r1, r3, #0x0 + add r2, r2, r3 + bl FUN_02008AA4 + ldr r0, [r5, #0x10] + cmp r7, #0x0 + str r0, [sp, #0x40] + ldr r0, [r4, #0x4] + str r0, [sp, #0x44] + beq _02088596 + lsl r0, r7, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _020885A4 +_02088596: + lsl r0, r7, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_020885A4: + blx _ffix + str r0, [sp, #0x48] + ldr r0, [sp, #0x30] + cmp r0, #0x0 + beq _020885C2 + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _020885D0 +_020885C2: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_020885D0: + blx _ffix + str r0, [sp, #0x4c] + add r0, sp, #0x78 + ldrh r0, [r0, #0x10] + cmp r0, #0x0 + beq _020885F0 + lsl r0, r0, #0xc + blx _fflt + add r1, r0, #0x0 + mov r0, #0x3f + lsl r0, r0, #0x18 + blx _fadd + b _020885FE +_020885F0: + lsl r0, r0, #0xc + blx _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + blx _fsub +_020885FE: + blx _ffix + str r0, [sp, #0x50] + cmp r6, #0x2 + bne _02088612 + mov r0, #0x3 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0x12 + add r0, r1, r0 + str r0, [sp, #0x4c] +_02088612: + mov r0, #0x1 + lsl r0, r0, #0xc + str r0, [sp, #0x54] + str r0, [sp, #0x58] + str r0, [sp, #0x5c] + mov r1, #0x0 + add r0, sp, #0x40 + strh r1, [r0, #0x20] + add r0, sp, #0x78 + ldrb r0, [r0, #0x18] + str r6, [sp, #0x68] + str r0, [sp, #0x64] + ldr r0, [r5, #0x0] + str r0, [sp, #0x6c] + add r0, sp, #0x40 + bl FUN_0201FE94 + str r0, [r4, #0x0] + cmp r0, #0x0 + beq _02088652 + mov r1, #0x0 + bl FUN_02020130 + ldr r0, [sp, #0x34] + add r1, r6, #0x0 + bl FUN_02009E88 + add r1, r0, #0x0 + ldr r0, [r4, #0x0] + bl FUN_02020248 + b _02088656 +_02088652: + bl ErrorHandling +_02088656: + ldr r0, [sp, #0x38] + str r4, [r0, #0x4] + add sp, #0x70 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_02088660 +FUN_02088660: ; 0x02088660 + push {r4, lr} + sub sp, #0x8 + add r3, r2, #0x0 + mov r2, #0x55 + lsl r2, r2, #0x2 + ldr r4, [r0, r2] + ldrh r1, [r1, #0x0] + ldr r4, [r4, #0x0] + sub r2, #0x10 + lsl r1, r1, #0x2 + ldr r4, [r4, r1] + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r1, [r0, #0x0] + add r3, r3, #0x3 + str r1, [sp, #0x4] + ldr r0, [r0, r2] + add r1, r4, #0x0 + mov r2, #0x58 + bl FUN_02009168 + add r0, r4, #0x0 + bl FUN_02009DE0 + add sp, #0x8 + pop {r4, pc} + + thumb_func_start FUN_02088694 +FUN_02088694: ; 0x02088694 + push {r3-r5, lr} + add r4, r1, #0x0 + add r5, r0, #0x0 + ldr r0, [r4, #0x4] + bl FUN_0200C3DC + mov r1, #0x16 + ldrh r2, [r4, #0x0] + lsl r1, r1, #0x4 + ldr r3, [r5, r1] + mov r0, #0x0 + lsl r2, r2, #0x2 + strb r0, [r3, r2] + ldrh r2, [r4, #0x0] + ldr r3, [r5, r1] + lsl r2, r2, #0x2 + add r2, r3, r2 + strh r0, [r2, #0x2] + ldr r2, [r5, r1] + ldrh r1, [r4, #0x0] + lsl r1, r1, #0x2 + add r1, r2, r1 + strb r0, [r1, #0x1] + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020886CC +FUN_020886CC: ; 0x020886CC + push {r3-r7, lr} + sub sp, #0x10 + add r5, r0, #0x0 + mov r0, #0x15 + lsl r0, r0, #0x4 + ldr r4, [r5, r0] + mov r1, #0xe + lsl r1, r1, #0xc + str r1, [sp, #0x0] + ldrh r1, [r5, #0xe] + mov r2, #0x0 + sub r0, #0x10 + str r1, [sp, #0x4] + ldr r1, [r5, #0x0] + add r3, r2, #0x0 + str r1, [sp, #0x8] + ldr r0, [r5, r0] + mov r1, #0x58 + bl FUN_02008F34 + ldr r1, [r4, #0x0] + str r0, [r1, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02088704 + bl ErrorHandling +_02088704: + ldr r0, [r5, #0x4] + cmp r0, #0x0 + beq _02088728 + cmp r0, #0x1 + beq _02088714 + cmp r0, #0x2 + beq _0208871E + b _02088728 +_02088714: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + bl FUN_02009B04 + b _02088730 +_0208871E: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + bl FUN_02009B78 + b _02088730 +_02088728: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + bl FUN_02009A50 +_02088730: + mov r4, #0x0 + add r6, r5, #0x0 +_02088734: + mov r0, #0x56 + lsl r0, r0, #0x2 + ldr r7, [r6, r0] + mov r0, #0xe + lsl r0, r0, #0xc + str r0, [sp, #0x0] + add r0, r4, #0x2 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + mov r1, #0x58 + str r0, [sp, #0x8] + mov r0, #0x52 + lsl r0, r0, #0x2 + ldr r0, [r6, r0] + add r2, r4, #0x1 + mov r3, #0x0 + bl FUN_020090AC + ldr r1, [r7, #0x0] + str r0, [r1, #0x0] + ldr r0, [r7, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02088768 + bl ErrorHandling +_02088768: + add r4, r4, #0x1 + add r6, r6, #0x4 + cmp r4, #0x2 + blt _02088734 + mov r0, #0x55 + lsl r0, r0, #0x2 + ldr r6, [r5, r0] + ldrh r0, [r5, #0xa] + mov r7, #0x0 + cmp r0, #0x0 + ble _020887C6 + add r4, r7, #0x0 +_02088780: + mov r0, #0xe + lsl r0, r0, #0xc + add r0, r7, r0 + str r0, [sp, #0x0] + ldrh r0, [r5, #0xe] + mov r1, #0x58 + mov r2, #0x4 + str r0, [sp, #0x4] + mov r0, #0x1 + str r0, [sp, #0x8] + ldr r0, [r5, #0x0] + mov r3, #0x0 + str r0, [sp, #0xc] + mov r0, #0x51 + lsl r0, r0, #0x2 + ldr r0, [r5, r0] + bl FUN_02008FEC + ldr r1, [r6, #0x0] + str r0, [r1, r4] + ldr r0, [r6, #0x0] + ldr r0, [r0, r4] + cmp r0, #0x0 + bne _020887B4 + bl ErrorHandling +_020887B4: + ldr r0, [r6, #0x0] + ldr r0, [r0, r4] + bl FUN_02009CF0 + ldrh r0, [r5, #0xa] + add r7, r7, #0x1 + add r4, r4, #0x4 + cmp r7, r0 + blt _02088780 +_020887C6: + add sp, #0x10 + pop {r3-r7, pc} + .balign 4 + + thumb_func_start FUN_020887CC +FUN_020887CC: ; 0x020887CC + push {r3-r6} + ldrh r5, [r0, #0xa] + mov r3, #0x0 + cmp r5, #0x0 + bls _0208880A + mov r2, #0x16 + lsl r2, r2, #0x4 + ldr r4, [r0, r2] +_020887DC: + lsl r2, r3, #0x2 + ldrb r6, [r4, r2] + cmp r6, #0x0 + bne _02088800 + add r4, r4, r2 + strh r3, [r4, #0x2] + mov r4, #0x16 + lsl r4, r4, #0x4 + ldr r5, [r0, r4] + add r5, r5, r2 + strb r1, [r5, #0x1] + ldr r0, [r0, r4] + mov r1, #0x1 + strb r1, [r0, r2] + lsl r0, r3, #0x10 + asr r0, r0, #0x10 + pop {r3-r6} + bx lr +_02088800: + add r2, r3, #0x1 + lsl r2, r2, #0x10 + lsr r3, r2, #0x10 + cmp r3, r5 + blo _020887DC +_0208880A: + mov r0, #0x0 + mvn r0, r0 + pop {r3-r6} + bx lr + .balign 4 + + thumb_func_start FUN_02088814 +FUN_02088814: ; 0x02088814 + mov r0, #0x3 + bx lr + + thumb_func_start FUN_02088818 +FUN_02088818: ; 0x02088818 + bx lr + .balign 4 + + thumb_func_start FUN_0208881C +FUN_0208881C: ; 0x0208881C + ldr r3, _02088828 ; =FUN_0202D8D0 + add r2, r0, #0x0 + ldr r0, _0208882C ; =0x020FD1C4 + mov r1, #0x6c + bx r3 + nop +_02088828: .word FUN_0202D8D0 +_0208882C: .word 0x020FD1C4 + + thumb_func_start FUN_02088830 +FUN_02088830: ; 0x02088830 + ldr r0, _02088834 ; =0x0000066C + bx lr + .balign 4 +_02088834: .word 0x0000066C + + thumb_func_start FUN_02088838 +FUN_02088838: ; 0x02088838 + mov r0, #0x2f + lsl r0, r0, #0x6 + bx lr + .balign 4 + + thumb_func_start FUN_02088840 +FUN_02088840: ; 0x02088840 + mov r0, #0x3f + lsl r0, r0, #0x4 + bx lr + .balign 4 + + thumb_func_start FUN_02088848 +FUN_02088848: ; 0x02088848 + mov r0, #0xa + bx lr + + thumb_func_start FUN_0208884C +FUN_0208884C: ; 0x0208884C + mov r0, #0x32 + bx lr + + thumb_func_start FUN_02088850 +FUN_02088850: ; 0x02088850 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_02088854 +FUN_02088854: ; 0x02088854 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_02088858 +FUN_02088858: ; 0x02088858 + ldr r3, _02088860 ; =FUN_02005FDC + ldr r0, _02088864 ; =0x00000004 + mov r1, #0x2 + bx r3 + .balign 4 +_02088860: .word FUN_02005FDC +_02088864: .word 0x00000004 + + thumb_func_start FUN_02088868 +FUN_02088868: ; 0x02088868 + ldr r3, _02088870 ; =FUN_02005F60 + ldr r0, _02088874 ; =0x00000004 + bx r3 + nop +_02088870: .word FUN_02005F60 +_02088874: .word 0x00000004 + + thumb_func_start FUN_02088878 +FUN_02088878: ; 0x02088878 + ldr r3, _02088880 ; =FUN_02005FDC + ldr r0, _02088884 ; =0x0000000D + mov r1, #0x2 + bx r3 + .balign 4 +_02088880: .word FUN_02005FDC +_02088884: .word 0x0000000D + + thumb_func_start FUN_02088888 +FUN_02088888: ; 0x02088888 + ldr r3, _02088890 ; =FUN_02005F60 + ldr r0, _02088894 ; =0x0000000D + bx r3 + nop +_02088890: .word FUN_02005F60 +_02088894: .word 0x0000000D + + thumb_func_start FUN_02088898 +FUN_02088898: ; 0x02088898 + push {r4, lr} + add r4, r1, #0x0 + bl FUN_02088858 + bl FUN_02088878 + add r0, r4, #0x0 + bl FUN_02211E60 + bl FUN_02088888 + bl FUN_02088868 + mov r0, #0x0 + blx OS_ResetSystem + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020888BC +FUN_020888BC: ; 0x020888BC + ldr r3, _020888C4 ; =FUN_02005FDC + ldr r0, _020888C8 ; =0x0000004F + mov r1, #0x2 + bx r3 + .balign 4 +_020888C4: .word FUN_02005FDC +_020888C8: .word 0x0000004F + + thumb_func_start FUN_020888CC +FUN_020888CC: ; 0x020888CC + ldr r3, _020888D4 ; =FUN_02005F60 + ldr r0, _020888D8 ; =0x0000004F + bx r3 + nop +_020888D4: .word FUN_02005F60 +_020888D8: .word 0x0000004F + + thumb_func_start FUN_020888DC +FUN_020888DC: ; 0x020888DC + push {r4, lr} + mov r2, #0x41 + add r4, r0, #0x0 + mov r0, #0x3 + mov r1, #0x31 + lsl r2, r2, #0xc + bl FUN_0201681C + add r0, r4, #0x0 + bl FUN_0200628C + ldr r0, [r0, #0x8] + mov r1, #0x31 + bl FUN_02088898 + mov r0, #0x31 + bl FUN_020168D0 + mov r0, #0x0 + blx OS_ResetSystem + mov r0, #0x1 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0208890C +FUN_0208890C: ; 0x0208890C + push {r3-r7, lr} + add r6, r0, #0x0 + add r5, r1, #0x0 + add r0, r2, #0x0 + mov r1, #0x20 + add r7, r3, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + mov r1, #0x0 + mov r2, #0x20 + blx MI_CpuFill8 + str r5, [r4, #0xc] + add r0, r5, #0x0 + bl FUN_02028048 + str r0, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_020238F4 + str r0, [r4, #0x10] + add r0, r5, #0x0 + bl FUN_0206F158 + str r0, [r4, #0x14] + add r0, r5, #0x0 + bl LoadPlayerDataAddress + str r0, [r4, #0x18] + str r7, [r4, #0x1c] + str r6, [r4, #0x4] + add r0, r4, #0x0 + pop {r3-r7, pc} + + thumb_func_start FUN_02088950 +FUN_02088950: ; 0x02088950 + ldr r3, _02088958 ; =FUN_020373D4 + add r2, r1, #0x0 + ldr r1, _0208895C ; =0x020FD6E4 + bx r3 + .balign 4 +_02088958: .word FUN_020373D4 +_0208895C: .word 0x020FD6E4 + + thumb_func_start FUN_02088960 +FUN_02088960: ; 0x02088960 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + add r6, r2, #0x0 + bl FUN_020377AC + add r3, r5, #0x0 + add r3, #0x98 + add r1, r0, #0x0 + ldr r3, [r3, #0x0] + add r0, r4, #0x0 + add r2, r6, #0x0 + bl FUN_0208890C + add r4, r0, #0x0 + add r0, r5, #0x0 + add r1, r4, #0x0 + bl FUN_02088950 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_0208898C +FUN_0208898C: ; 0x0208898C + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020889AC + bl FUN_02006290 + cmp r0, #0x0 + beq _020889AC + ldr r0, [r4, #0x0] + bl FUN_02006260 + mov r0, #0x0 + str r0, [r4, #0x0] + mov r0, #0x1 + pop {r4, pc} +_020889AC: + mov r0, #0x0 + pop {r4, pc} + + thumb_func_start FUN_020889B0 +FUN_020889B0: ; 0x020889B0 + push {r3-r5, lr} + add r4, r0, #0x0 + bl FUN_0200628C + mov r2, #0x1 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0x37 + lsl r2, r2, #0xe + bl FUN_0201681C + add r0, r4, #0x0 + mov r1, #0x24 + mov r2, #0x37 + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0x24 + add r4, r0, #0x0 + blx MI_CpuFill8 + mov r0, #0x37 + str r0, [r4, #0x0] + str r5, [r4, #0x10] + ldr r0, [r4, #0x0] + bl FUN_0206F164 + str r0, [r4, #0xc] + ldr r0, [r5, #0x4] + cmp r0, #0x1 + bne _020889FA + ldrh r1, [r4, #0x6] + mov r0, #0xff + bic r1, r0 + mov r0, #0x1 + orr r0, r1 + strh r0, [r4, #0x6] +_020889FA: + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_02088A00 +FUN_02088A00: ; 0x02088A00 + push {r4-r6, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_02006278 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200628C + ldr r5, [r4, #0x0] + cmp r5, #0x4 + bhi _02088A6A + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02088A24: ; jump table (using 16-bit offset) + .short _02088A2E - _02088A24 - 2; case 0 + .short _02088A3C - _02088A24 - 2; case 1 + .short _02088A4A - _02088A24 - 2; case 2 + .short _02088A58 - _02088A24 - 2; case 3 + .short _02088A66 - _02088A24 - 2; case 4 +_02088A2E: + add r1, r6, #0x0 + add r0, r6, #0x0 + add r1, #0x14 + bl FUN_02088AAC + str r0, [r4, #0x0] + b _02088A6A +_02088A3C: + add r1, r6, #0x0 + add r0, r6, #0x0 + add r1, #0x14 + bl FUN_02088AFC + str r0, [r4, #0x0] + b _02088A6A +_02088A4A: + add r1, r6, #0x0 + add r0, r6, #0x0 + add r1, #0x14 + bl FUN_02088B28 + str r0, [r4, #0x0] + b _02088A6A +_02088A58: + add r1, r6, #0x0 + add r0, r6, #0x0 + add r1, #0x14 + bl FUN_02088B48 + str r0, [r4, #0x0] + b _02088A6A +_02088A66: + mov r0, #0x1 + pop {r4-r6, pc} +_02088A6A: + ldr r0, [r4, #0x0] + cmp r5, r0 + beq _02088A74 + mov r0, #0x0 + str r0, [r6, #0x14] +_02088A74: + mov r0, #0x0 + pop {r4-r6, pc} + + thumb_func_start FUN_02088A78 +FUN_02088A78: ; 0x02088A78 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02006278 + add r4, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0200628C + ldr r0, [r4, #0xc] + ldr r6, [r4, #0x0] + bl FUN_02016A18 + add r0, r4, #0x0 + mov r1, #0x0 + mov r2, #0x24 + blx MI_CpuFill8 + add r0, r5, #0x0 + bl FUN_0200627C + add r0, r6, #0x0 + bl FUN_020168D0 + mov r0, #0x1 + pop {r4-r6, pc} + .balign 4 + + thumb_func_start FUN_02088AAC +FUN_02088AAC: ; 0x02088AAC + push {r4, lr} + add r4, r1, #0x0 + ldr r1, [r4, #0x0] + cmp r1, #0x5 + bhi _02088AF6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02088AC2: ; jump table (using 16-bit offset) + .short _02088ACE - _02088AC2 - 2; case 0 + .short _02088AD6 - _02088AC2 - 2; case 1 + .short _02088ADE - _02088AC2 - 2; case 2 + .short _02088AE6 - _02088AC2 - 2; case 3 + .short _02088AEE - _02088AC2 - 2; case 4 + .short _02088AF2 - _02088AC2 - 2; case 5 +_02088ACE: + bl FUN_02088B4C + str r0, [r4, #0x0] + b _02088AF6 +_02088AD6: + bl FUN_02088BA8 + str r0, [r4, #0x0] + b _02088AF6 +_02088ADE: + bl FUN_02088C3C + str r0, [r4, #0x0] + b _02088AF6 +_02088AE6: + bl FUN_02088CDC + str r0, [r4, #0x0] + b _02088AF6 +_02088AEE: + mov r0, #0x1 + pop {r4, pc} +_02088AF2: + mov r0, #0x4 + pop {r4, pc} +_02088AF6: + mov r0, #0x0 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02088AFC +FUN_02088AFC: ; 0x02088AFC + push {r3-r5, lr} + sub sp, #0x10 + ldr r5, _02088B24 ; =0x020FD708 + add r3, sp, #0x0 + add r4, r0, #0x0 + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + ldr r2, [r4, #0x0] + add r1, r4, #0x0 + bl FUN_02006234 + str r0, [r4, #0x1c] + mov r0, #0x2 + add sp, #0x10 + pop {r3-r5, pc} + nop +_02088B24: .word 0x020FD708 + + thumb_func_start FUN_02088B28 +FUN_02088B28: ; 0x02088B28 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x1c + bl FUN_0208898C + cmp r0, #0x0 + bne _02088B3A + mov r0, #0x2 + pop {r4, pc} +_02088B3A: + ldr r0, [r4, #0x20] + cmp r0, #0x1 + bne _02088B44 + mov r0, #0x0 + pop {r4, pc} +_02088B44: + mov r0, #0x3 + pop {r4, pc} + + thumb_func_start FUN_02088B48 +FUN_02088B48: ; 0x02088B48 + mov r0, #0x4 + bx lr + + thumb_func_start FUN_02088B4C +FUN_02088B4C: ; 0x02088B4C + push {r3-r5, lr} + sub sp, #0x10 + ldr r3, _02088BA0 ; =0x020FD6F8 + add r2, sp, #0x0 + add r5, r0, #0x0 + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r5, #0x10] + ldr r1, _02088BA4 ; =0x020FD6F4 + ldr r0, [r0, #0x14] + ldr r2, [r5, #0x0] + bl FUN_0206EFEC + add r4, r0, #0x0 + ldrh r0, [r5, #0x6] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x1 + bne _02088B7A + mov r2, #0x5 + b _02088B7C +_02088B7A: + mov r2, #0x4 +_02088B7C: + ldr r1, [r5, #0x10] + lsl r2, r2, #0x18 + ldr r1, [r1, #0xc] + ldr r3, [r5, #0xc] + add r0, r4, #0x0 + lsr r2, r2, #0x18 + bl FUN_0206E314 + ldr r2, [r5, #0x0] + add r0, sp, #0x0 + add r1, r4, #0x0 + bl FUN_02006234 + str r0, [r5, #0x1c] + str r4, [r5, #0x18] + mov r0, #0x1 + add sp, #0x10 + pop {r3-r5, pc} + .balign 4 +_02088BA0: .word 0x020FD6F8 +_02088BA4: .word 0x020FD6F4 + + thumb_func_start FUN_02088BA8 +FUN_02088BA8: ; 0x02088BA8 + push {r3-r5, lr} + add r4, r0, #0x0 + add r0, #0x1c + bl FUN_0208898C + cmp r0, #0x0 + bne _02088BBA + mov r0, #0x1 + pop {r3-r5, pc} +_02088BBA: + ldr r0, [r4, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0206E2F0 + add r5, r0, #0x0 + bl FUN_0206E308 + add r2, r0, #0x0 + ldr r1, [r4, #0x18] + add r0, r5, #0x0 + blx memcpy + ldr r0, [r4, #0x18] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x18] + add r0, r5, #0x0 + bl FUN_0206E37C + str r0, [r4, #0x8] + add r0, r5, #0x0 + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_0206E384 + cmp r0, #0x5 + bhi _02088C16 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02088C02: ; jump table (using 16-bit offset) + .short _02088C1E - _02088C02 - 2; case 0 + .short _02088C0E - _02088C02 - 2; case 1 + .short _02088C1E - _02088C02 - 2; case 2 + .short _02088C1E - _02088C02 - 2; case 3 + .short _02088C1E - _02088C02 - 2; case 4 + .short _02088C12 - _02088C02 - 2; case 5 +_02088C0E: + mov r0, #0x2 + pop {r3-r5, pc} +_02088C12: + mov r0, #0x5 + pop {r3-r5, pc} +_02088C16: + bl ErrorHandling + mov r0, #0x95 + str r0, [r4, #0x8] +_02088C1E: + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x8] + ldr r0, [r0, #0x14] + lsl r1, r1, #0x10 + ldr r3, [r4, #0x0] + lsr r1, r1, #0x10 + mov r2, #0x1 + bl FUN_0206EDD4 + cmp r0, #0x0 + bne _02088C38 + bl ErrorHandling +_02088C38: + mov r0, #0x4 + pop {r3-r5, pc} + + thumb_func_start FUN_02088C3C +FUN_02088C3C: ; 0x02088C3C + push {r3-r7, lr} + sub sp, #0x18 + add r5, r0, #0x0 + ldr r0, [r5, #0x10] + ldr r3, _02088CD8 ; =0x020FD718 + ldr r0, [r0, #0x14] + add r2, sp, #0x8 + str r0, [sp, #0x0] + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldmia r3!, {r0-r1} + stmia r2!, {r0-r1} + ldr r0, [r5, #0x0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020851B8 + str r0, [r5, #0x18] + ldr r1, [r5, #0x8] + mov r2, #0x1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_020851DC + mov r6, #0x0 + add r4, r6, #0x0 +_02088C70: + add r0, r4, #0x0 + bl FUN_0206EB1C + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp, #0x0] + ldr r3, [r5, #0x0] + add r1, r7, #0x0 + mov r2, #0x1 + bl FUN_0206EE50 + cmp r0, #0x1 + bne _02088C9A + ldr r0, [r5, #0x18] + add r1, r7, #0x0 + mov r2, #0x0 + bl FUN_020851DC + add r0, r6, #0x1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_02088C9A: + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x40 + blo _02088C70 + add r3, sp, #0x4 + ldr r0, [r5, #0xc] + mov r1, #0x4 + add r2, sp, #0x4 + add r3, #0x1 + bl FUN_0206F17C + add r2, sp, #0x4 + ldrb r1, [r2, #0x1] + add r3, r6, #0x2 + lsl r3, r3, #0x18 + ldrb r2, [r2, #0x0] + ldr r0, [r5, #0x18] + lsr r3, r3, #0x18 + bl FUN_020851F8 + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x0] + add r0, sp, #0x8 + bl FUN_02006234 + str r0, [r5, #0x1c] + mov r0, #0x3 + add sp, #0x18 + pop {r3-r7, pc} + nop +_02088CD8: .word 0x020FD718 + + thumb_func_start FUN_02088CDC +FUN_02088CDC: ; 0x02088CDC + push {r3-r4, lr} + sub sp, #0x4 + add r4, r0, #0x0 + add r0, #0x1c + bl FUN_0208898C + cmp r0, #0x0 + bne _02088CF2 + add sp, #0x4 + mov r0, #0x3 + pop {r3-r4, pc} +_02088CF2: + add r1, sp, #0x0 + ldr r0, [r4, #0x18] + add r1, #0x1 + add r2, sp, #0x0 + bl FUN_0208524C + add r3, sp, #0x0 + ldrb r2, [r3, #0x0] + ldrb r3, [r3, #0x1] + ldr r0, [r4, #0xc] + mov r1, #0x4 + bl FUN_0206F190 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + mov r0, #0x0 + str r0, [r4, #0x18] + add sp, #0x4 + pop {r3-r4, pc} + .balign 4 + + thumb_func_start FUN_02088D1C +FUN_02088D1C: ; 0x02088D1C + mov r0, #0x13 + bx lr + + thumb_func_start FUN_02088D20 +FUN_02088D20: ; 0x02088D20 + ldr r3, _02088D3C ; =0x020FD8C8 + mov r2, #0x0 +_02088D24: + ldrb r1, [r3, #0x0] + cmp r0, r1 + bne _02088D2E + add r0, r2, #0x0 + bx lr +_02088D2E: + add r2, r2, #0x1 + add r3, #0xc + cmp r2, #0x13 + blo _02088D24 + mov r0, #0x0 + bx lr + nop +_02088D3C: .word 0x020FD8C8 + + thumb_func_start FUN_02088D40 +FUN_02088D40: ; 0x02088D40 + push {r3, lr} + bl FUN_02088D20 + bl FUN_02088D4C + pop {r3, pc} + + thumb_func_start FUN_02088D4C +FUN_02088D4C: ; 0x02088D4C + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x13 + blo _02088D58 + bl ErrorHandling +_02088D58: + mov r0, #0xc + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02088D64 ; =0x020FD8CA + ldrh r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02088D64: .word 0x020FD8CA + + thumb_func_start FUN_02088D68 +FUN_02088D68: ; 0x02088D68 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x13 + blo _02088D74 + bl ErrorHandling +_02088D74: + mov r0, #0xc + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02088D80 ; =0x020FD8C8 + ldrb r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02088D80: .word 0x020FD8C8 + + thumb_func_start FUN_02088D84 +FUN_02088D84: ; 0x02088D84 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x13 + blo _02088D90 + bl ErrorHandling +_02088D90: + mov r0, #0xc + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02088D9C ; =0x020FD8C9 + ldrb r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02088D9C: .word 0x020FD8C9 + + thumb_func_start FUN_02088DA0 +FUN_02088DA0: ; 0x02088DA0 + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x13 + blo _02088DAC + bl ErrorHandling +_02088DAC: + mov r0, #0xc + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02088DB8 ; =0x020FD8CC + ldr r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02088DB8: .word 0x020FD8CC + + thumb_func_start FUN_02088DBC +FUN_02088DBC: ; 0x02088DBC + push {r4, lr} + add r4, r0, #0x0 + cmp r4, #0x13 + blo _02088DC8 + bl ErrorHandling +_02088DC8: + mov r0, #0xc + add r1, r4, #0x0 + mul r1, r0 + ldr r0, _02088DD4 ; =0x020FD8D0 + ldr r0, [r0, r1] + pop {r4, pc} + .balign 4 +_02088DD4: .word 0x020FD8D0 + + thumb_func_start FUN_02088DD8 +FUN_02088DD8: ; 0x02088DD8 + push {r3, lr} + mov r1, #0x18 + bl FUN_02016998 + add r3, r0, #0x0 + mov r2, #0x18 + mov r1, #0x0 +_02088DE6: + strb r1, [r3, #0x0] + add r3, r3, #0x1 + sub r2, r2, #0x1 + bne _02088DE6 + pop {r3, pc} + + thumb_func_start FUN_02088DF0 +FUN_02088DF0: ; 0x02088DF0 + ldr r3, _02088DF4 ; =FUN_02016A18 + bx r3 + .balign 4 +_02088DF4: .word FUN_02016A18 + + thumb_func_start FUN_02088DF8 +FUN_02088DF8: ; 0x02088DF8 + push {r3-r7, lr} + sub sp, #0x18 + str r1, [sp, #0x0] + mov r1, #0x5 + mov r2, #0x0 + add r5, r0, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + add r0, r5, #0x0 + mov r1, #0x70 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x8] + add r0, r5, #0x0 + mov r1, #0xa0 + mov r2, #0x0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r4, #0x0 + str r0, [sp, #0x4] + add r7, r4, #0x0 + add r6, sp, #0x10 +_02088E34: + add r1, r4, #0x0 + add r0, r5, #0x0 + add r1, #0x36 + add r2, r7, #0x0 + bl FUN_020671BC + lsl r1, r4, #0x1 + strh r0, [r6, r1] + add r0, r4, #0x1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x4 + blo _02088E34 + ldr r0, [sp, #0x0] + mov r1, #0x2c + bl FUN_02016998 + add r7, r0, #0x0 + ldr r0, [sp, #0x0] + mov r1, #0x2c + bl FUN_02016998 + add r4, r0, #0x0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x8] + add r2, r7, #0x0 + bl FUN_02069F9C + mov r2, #0x0 + mov r12, r2 +_02088E70: + mov r0, r12 + lsl r0, r0, #0x1 + ldrh r5, [r7, r0] + ldr r6, _02088EF4 ; =0x0000FFFF + cmp r5, r6 + bne _02088E82 + lsl r0, r2, #0x1 + strh r6, [r4, r0] + b _02088EE8 +_02088E82: + mov r1, #0xfe + lsl r1, r1, #0x8 + and r1, r5 + asr r3, r1, #0x9 + ldr r1, [sp, #0x4] + cmp r3, r1 + bgt _02088EDA + lsr r1, r6, #0x7 + and r1, r5 + strh r1, [r7, r0] + ldrh r3, [r7, r0] + mov r1, #0x0 + add r6, sp, #0x10 +_02088E9C: + lsl r5, r1, #0x1 + ldrh r5, [r6, r5] + cmp r3, r5 + beq _02088EAE + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, #0x4 + blo _02088E9C +_02088EAE: + cmp r1, #0x4 + bne _02088EDA + mov r1, #0x0 + cmp r2, #0x0 + bls _02088ECA +_02088EB8: + lsl r5, r1, #0x1 + ldrh r5, [r4, r5] + cmp r5, r3 + beq _02088ECA + add r1, r1, #0x1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + cmp r1, r2 + blo _02088EB8 +_02088ECA: + cmp r1, r2 + bne _02088EDA + ldrh r1, [r7, r0] + lsl r0, r2, #0x1 + strh r1, [r4, r0] + add r0, r2, #0x1 + lsl r0, r0, #0x18 + lsr r2, r0, #0x18 +_02088EDA: + mov r0, r12 + add r0, r0, #0x1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r12, r0 + cmp r0, #0x16 + blo _02088E70 +_02088EE8: + add r0, r7, #0x0 + bl FUN_02016A18 + add r0, r4, #0x0 + add sp, #0x18 + pop {r3-r7, pc} + .balign 4 +_02088EF4: .word 0x0000FFFF + + thumb_func_start FUN_02088EF8 +FUN_02088EF8: ; 0x02088EF8 + ldrh r1, [r0, #0x0] + ldr r0, _02088F08 ; =0x0000FFFF + cmp r1, r0 + beq _02088F04 + mov r0, #0x1 + bx lr +_02088F04: + mov r0, #0x0 + bx lr + .balign 4 +_02088F08: .word 0x0000FFFF + + thumb_func_start FUN_02088F0C +FUN_02088F0C: ; 0x02088F0C + push {r4-r6, lr} + add r5, r1, #0x0 + ldr r1, _02088F44 ; =0x0000195C + add r6, r0, #0x0 + bl FUN_02016998 + add r4, r0, #0x0 + add r0, r6, #0x0 + str r5, [r4, #0x0] + bl FUN_020139D8 + str r0, [r4, #0x4] + mov r3, #0x0 + ldr r0, _02088F48 ; =0x0000189E + add r2, r3, #0x0 +_02088F2A: + add r1, r4, r3 + add r3, r3, #0x1 + strb r2, [r1, r0] + cmp r3, #0xbb + blt _02088F2A + add r0, r4, #0x0 + bl FUN_02088F60 + add r0, r4, #0x0 + bl FUN_020891D0 + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02088F44: .word 0x0000195C +_02088F48: .word 0x0000189E + + thumb_func_start FUN_02088F4C +FUN_02088F4C: ; 0x02088F4C + push {r4, lr} + add r4, r0, #0x0 + beq _02088F5E + ldr r0, [r4, #0x4] + bl FUN_02013A10 + add r0, r4, #0x0 + bl FUN_02016A18 +_02088F5E: + pop {r4, pc} + + thumb_func_start FUN_02088F60 +FUN_02088F60: ; 0x02088F60 + push {r4-r7, lr} + sub sp, #0xc + mov r4, #0x0 + str r0, [sp, #0x0] + add r7, r0, #0x0 + str r0, [sp, #0x8] + add r0, #0x68 + ldr r5, _02088F9C ; =0x020FE17C + str r4, [sp, #0x4] + str r0, [sp, #0x8] +_02088F74: + ldr r3, [sp, #0x8] + str r4, [r7, #0x38] + lsl r6, r4, #0x1 + add r3, r3, r6 + ldr r0, [sp, #0x0] + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + ldr r6, [r5, #0x0] + blx r6 + str r0, [r7, #0x8] + add r4, r4, r0 + ldr r0, [sp, #0x4] + add r7, r7, #0x4 + add r0, r0, #0x1 + add r5, #0xc + str r0, [sp, #0x4] + cmp r0, #0xc + blt _02088F74 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02088F9C: .word 0x020FE17C + + thumb_func_start FUN_02088FA0 +FUN_02088FA0: ; 0x02088FA0 + push {r4-r7, lr} + sub sp, #0xc + str r0, [sp, #0x0] + ldr r0, [r0, #0x0] + str r2, [sp, #0x4] + add r5, r1, #0x0 + add r4, r3, #0x0 + mov r6, #0x0 + bl FUN_02085418 + str r0, [sp, #0x8] + ldr r0, [sp, #0x4] + add r7, r6, #0x0 + cmp r0, #0x0 + bls _02088FF6 +_02088FBE: + ldrh r1, [r5, #0x0] + ldr r0, [sp, #0x8] + bl FUN_020245F0 + cmp r0, #0x0 + beq _02088FEC + ldrh r3, [r5, #0x0] + ldr r0, [sp, #0x0] + mov r2, #0x7 + lsr r1, r3, #0x3 + add r1, r0, r1 + ldr r0, _02088FFC ; =0x0000189E + and r3, r2 + mov r2, #0x1 + ldrb r0, [r1, r0] + lsl r2, r3 + orr r2, r0 + ldr r0, _02088FFC ; =0x0000189E + add r6, r6, #0x1 + strb r2, [r1, r0] + ldrh r0, [r5, #0x0] + strh r0, [r4, #0x0] + add r4, r4, #0x2 +_02088FEC: + ldr r0, [sp, #0x4] + add r7, r7, #0x1 + add r5, r5, #0x2 + cmp r7, r0 + blo _02088FBE +_02088FF6: + add r0, r6, #0x0 + add sp, #0xc + pop {r4-r7, pc} + .balign 4 +_02088FFC: .word 0x0000189E + + thumb_func_start FUN_02089000 +FUN_02089000: ; 0x02089000 + push {r3-r7, lr} + str r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r5, r1, #0x0 + add r7, r2, #0x0 + add r4, r3, #0x0 + bl FUN_02085420 + cmp r0, #0x0 + beq _02089046 + mov r2, #0x0 + cmp r7, #0x0 + bls _02089042 +_0208901A: + ldrh r6, [r5, #0x0] + ldr r0, [sp, #0x0] + mov r3, #0x7 + lsr r1, r6, #0x3 + add r1, r0, r1 + ldr r0, _0208904C ; =0x0000189E + and r6, r3 + mov r3, #0x1 + ldrb r0, [r1, r0] + lsl r3, r6 + orr r3, r0 + ldr r0, _0208904C ; =0x0000189E + add r2, r2, #0x1 + strb r3, [r1, r0] + ldrh r0, [r5, #0x0] + add r5, r5, #0x2 + strh r0, [r4, #0x0] + add r4, r4, #0x2 + cmp r2, r7 + blo _0208901A +_02089042: + add r0, r7, #0x0 + pop {r3-r7, pc} +_02089046: + mov r0, #0x0 + pop {r3-r7, pc} + nop +_0208904C: .word 0x0000189E + + thumb_func_start FUN_02089050 +FUN_02089050: ; 0x02089050 + push {r3-r7, lr} + sub sp, #0x10 + str r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r5, r1, #0x0 + str r2, [sp, #0x4] + add r4, r3, #0x0 + bl FUN_0208541C + str r0, [sp, #0xc] + ldr r0, _020890BC ; =0x00000189 + mov r1, #0x0 + bl FUN_02013A9C + str r0, [sp, #0x8] + mov r7, #0x0 + ldr r0, [sp, #0x4] + add r6, r7, #0x0 + cmp r0, #0x0 + bls _020890B4 +_02089078: + ldrh r2, [r5, #0x0] + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + sub r1, r2, r1 + bl FUN_02013B68 + cmp r0, #0x0 + beq _020890AA + ldrh r3, [r5, #0x0] + ldr r0, [sp, #0x0] + mov r2, #0x7 + lsr r1, r3, #0x3 + add r1, r0, r1 + ldr r0, _020890C0 ; =0x0000189E + and r3, r2 + mov r2, #0x1 + ldrb r0, [r1, r0] + lsl r2, r3 + orr r2, r0 + ldr r0, _020890C0 ; =0x0000189E + add r6, r6, #0x1 + strb r2, [r1, r0] + ldrh r0, [r5, #0x0] + strh r0, [r4, #0x0] + add r4, r4, #0x2 +_020890AA: + ldr r0, [sp, #0x4] + add r7, r7, #0x1 + add r5, r5, #0x2 + cmp r7, r0 + blo _02089078 +_020890B4: + add r0, r6, #0x0 + add sp, #0x10 + pop {r3-r7, pc} + nop +_020890BC: .word 0x00000189 +_020890C0: .word 0x0000189E + + thumb_func_start FUN_020890C4 +FUN_020890C4: ; 0x020890C4 + push {r4-r7, lr} + sub sp, #0x14 + str r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r5, r1, #0x0 + str r2, [sp, #0x4] + add r4, r3, #0x0 + bl FUN_0208541C + str r0, [sp, #0x10] + ldr r0, _02089144 ; =0x00000186 + mov r1, #0x0 + bl FUN_02013A9C + add r6, r0, #0x0 + add r0, r6, #0x5 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] + mov r7, #0x0 + ldr r0, [sp, #0x4] + str r7, [sp, #0x8] + cmp r0, #0x0 + bls _0208913C +_020890F4: + ldrh r1, [r5, #0x0] + cmp r1, r6 + blo _0208910C + ldr r0, [sp, #0xc] + cmp r1, r0 + bhi _0208910C + ldr r0, [sp, #0x10] + sub r1, r1, r6 + bl FUN_02013C0C + cmp r0, #0x0 + beq _0208912E +_0208910C: + ldrh r3, [r5, #0x0] + ldr r0, [sp, #0x0] + mov r2, #0x7 + lsr r1, r3, #0x3 + add r1, r0, r1 + ldr r0, _02089148 ; =0x0000189E + and r3, r2 + mov r2, #0x1 + ldrb r0, [r1, r0] + lsl r2, r3 + orr r2, r0 + ldr r0, _02089148 ; =0x0000189E + add r7, r7, #0x1 + strb r2, [r1, r0] + ldrh r0, [r5, #0x0] + strh r0, [r4, #0x0] + add r4, r4, #0x2 +_0208912E: + ldr r0, [sp, #0x8] + add r5, r5, #0x2 + add r1, r0, #0x1 + ldr r0, [sp, #0x4] + str r1, [sp, #0x8] + cmp r1, r0 + blo _020890F4 +_0208913C: + add r0, r7, #0x0 + add sp, #0x14 + pop {r4-r7, pc} + nop +_02089144: .word 0x00000186 +_02089148: .word 0x0000189E + + thumb_func_start FUN_0208914C +FUN_0208914C: ; 0x0208914C + push {r3-r7, lr} + add r6, r0, #0x0 + mov r0, #0x0 + mov lr, r2 + mov r12, r0 + mov r0, lr + add r4, r1, #0x0 + add r7, r3, #0x0 + cmp r0, #0x0 + bls _020891C2 +_02089160: + ldrh r2, [r4, #0x0] + ldr r0, _020891C8 ; =0x0000FFFE + cmp r2, r0 + bne _02089196 + add r0, r4, #0x2 + add r4, r4, #0x4 + ldrh r2, [r0, #0x0] + ldrh r0, [r4, #0x0] + cmp r2, #0x0 + strh r0, [r7, #0x0] + beq _020891B6 +_02089176: + ldrh r5, [r4, #0x0] + mov r3, #0x7 + add r4, r4, #0x2 + lsr r0, r5, #0x3 + add r1, r6, r0 + ldr r0, _020891CC ; =0x0000189E + and r5, r3 + mov r3, #0x1 + ldrb r0, [r1, r0] + lsl r3, r5 + orr r3, r0 + ldr r0, _020891CC ; =0x0000189E + sub r2, r2, #0x1 + strb r3, [r1, r0] + bne _02089176 + b _020891B6 +_02089196: + lsr r0, r2, #0x3 + ldr r1, _020891CC ; =0x0000189E + add r0, r6, r0 + ldrb r3, [r0, r1] + mov r1, #0x7 + mov r5, #0x1 + and r1, r2 + add r2, r5, #0x0 + lsl r2, r1 + ldr r1, _020891CC ; =0x0000189E + orr r2, r3 + strb r2, [r0, r1] + ldrh r0, [r4, #0x0] + add r4, r4, #0x2 + strh r0, [r7, #0x0] + add r7, r7, #0x2 +_020891B6: + mov r0, r12 + add r1, r0, #0x1 + mov r0, lr + mov r12, r1 + cmp r1, r0 + blo _02089160 +_020891C2: + mov r0, lr + pop {r3-r7, pc} + nop +_020891C8: .word 0x0000FFFE +_020891CC: .word 0x0000189E + + thumb_func_start FUN_020891D0 +FUN_020891D0: ; 0x020891D0 + push {r3-r7, lr} + add r7, r0, #0x0 + mov r4, #0x0 + ldr r6, _0208920C ; =0x020FDDF0 + str r4, [sp, #0x0] + add r5, r7, #0x0 +_020891DC: + ldr r0, _02089210 ; =0x00000C84 + mov r2, #0xcf + str r4, [r5, r0] + lsl r2, r2, #0x4 + ldr r1, [r6, #0x0] + add r0, r7, #0x0 + add r2, r7, r2 + add r3, r4, #0x0 + bl FUN_02089218 + ldr r1, _02089214 ; =0x00000C18 + add r6, r6, #0x4 + str r0, [r5, r1] + add r0, r1, #0x0 + ldr r0, [r5, r0] + add r5, r5, #0x4 + add r4, r4, r0 + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, #0x1b + blo _020891DC + pop {r3-r7, pc} + nop +_0208920C: .word 0x020FDDF0 +_02089210: .word 0x00000C84 +_02089214: .word 0x00000C18 + + thumb_func_start FUN_02089218 +FUN_02089218: ; 0x02089218 + push {r3-r7, lr} + add r7, r1, #0x0 + add r6, r0, #0x0 + str r2, [sp, #0x0] + mov r0, #0x0 + mov r12, r0 + ldrh r2, [r7, #0x0] + ldr r0, _020892B8 ; =0x0000FFFF + mov lr, r3 + cmp r2, r0 + beq _020892B4 +_0208922E: + ldr r0, _020892BC ; =0x0000FFFE + cmp r2, r0 + bne _02089280 + add r0, r7, #0x2 + ldrh r5, [r0, #0x0] + add r7, r7, #0x4 + mov r3, #0x0 + cmp r5, #0x0 + bls _0208927A + add r4, r7, #0x0 +_02089242: + ldrh r2, [r4, #0x0] + mov r0, #0x7 + mov r1, #0x1 + and r0, r2 + lsl r1, r0 + lsr r0, r2, #0x3 + add r2, r6, r0 + ldr r0, _020892C0 ; =0x0000189E + ldrb r0, [r2, r0] + tst r0, r1 + beq _02089272 + lsl r0, r3, #0x1 + ldrh r1, [r7, r0] + mov r0, lr + lsl r2, r0, #0x1 + mov r0, lr + add r0, r0, #0x1 + mov lr, r0 + ldr r0, [sp, #0x0] + strh r1, [r0, r2] + mov r0, r12 + add r0, r0, #0x1 + mov r12, r0 + b _0208927A +_02089272: + add r3, r3, #0x1 + add r4, r4, #0x2 + cmp r3, r5 + blo _02089242 +_0208927A: + lsl r0, r5, #0x1 + add r7, r7, r0 + b _020892AC +_02089280: + mov r1, #0x1 + mov r0, #0x7 + and r0, r2 + add r3, r1, #0x0 + lsl r3, r0 + lsr r0, r2, #0x3 + add r1, r6, r0 + ldr r0, _020892C0 ; =0x0000189E + ldrb r0, [r1, r0] + tst r0, r3 + beq _020892AA + mov r1, lr + add r1, r1, #0x1 + mov r0, lr + mov lr, r1 + ldr r1, [sp, #0x0] + lsl r0, r0, #0x1 + strh r2, [r1, r0] + mov r0, r12 + add r0, r0, #0x1 + mov r12, r0 +_020892AA: + add r7, r7, #0x2 +_020892AC: + ldrh r2, [r7, #0x0] + ldr r0, _020892B8 ; =0x0000FFFF + cmp r2, r0 + bne _0208922E +_020892B4: + mov r0, r12 + pop {r3-r7, pc} + .balign 4 +_020892B8: .word 0x0000FFFF +_020892BC: .word 0x0000FFFE +_020892C0: .word 0x0000189E + + thumb_func_start FUN_020892C4 +FUN_020892C4: ; 0x020892C4 + lsl r1, r1, #0x2 + add r0, r0, r1 + ldr r0, [r0, #0x8] + bx lr + + thumb_func_start FUN_020892CC +FUN_020892CC: ; 0x020892CC + push {r4, lr} + add r4, r0, #0x0 + lsl r1, r1, #0x2 + add r1, r4, r1 + ldr r1, [r1, #0x38] + ldr r0, [r4, #0x4] + add r1, r1, r2 + lsl r1, r1, #0x1 + add r1, r4, r1 + add r1, #0x68 + ldrh r1, [r1, #0x0] + add r2, r3, #0x0 + bl FUN_02013A30 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_020892EC +FUN_020892EC: ; 0x020892EC + lsl r1, r1, #0x2 + add r1, r0, r1 + ldr r1, [r1, #0x38] + add r1, r1, r2 + lsl r1, r1, #0x1 + add r0, r0, r1 + add r0, #0x68 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 + + thumb_func_start FUN_02089300 +FUN_02089300: ; 0x02089300 + lsl r1, r1, #0x2 + add r1, r0, r1 + ldr r0, _0208930C ; =0x00000C18 + ldr r0, [r1, r0] + bx lr + nop +_0208930C: .word 0x00000C18 + + thumb_func_start FUN_02089310 +FUN_02089310: ; 0x02089310 + push {r4-r6, lr} + add r4, r3, #0x0 + add r5, r0, #0x0 + lsl r3, r1, #0x2 + add r6, r5, r3 + ldr r3, _02089334 ; =0x00000C18 + ldr r3, [r6, r3] + cmp r3, #0x0 + beq _02089330 + bl FUN_02089338 + add r1, r0, #0x0 + ldr r0, [r5, #0x4] + add r2, r4, #0x0 + bl FUN_02013A30 +_02089330: + pop {r4-r6, pc} + nop +_02089334: .word 0x00000C18 + + thumb_func_start FUN_02089338 +FUN_02089338: ; 0x02089338 + push {r3-r4} + lsl r1, r1, #0x2 + ldr r3, _02089360 ; =0x00000C18 + add r4, r0, r1 + ldr r1, [r4, r3] + cmp r1, #0x0 + beq _0208935A + add r1, r3, #0x0 + add r1, #0x6c + ldr r1, [r4, r1] + add r3, #0xd8 + add r1, r2, r1 + lsl r1, r1, #0x1 + add r0, r0, r1 + ldrh r0, [r0, r3] + pop {r3-r4} + bx lr +_0208935A: + ldr r0, _02089364 ; =0x0000FFFF + pop {r3-r4} + bx lr + .balign 4 +_02089360: .word 0x00000C18 +_02089364: .word 0x0000FFFF + + thumb_func_start FUN_02089368 +FUN_02089368: ; 0x02089368 + push {r3-r6} + mov r1, #0x0 + ldr r2, _0208938C ; =0x020FF2FC + ldr r5, _02089390 ; =0x020FE17C + add r0, r1, #0x0 + mov r3, #0xc +_02089374: + ldrb r4, [r2, #0x0] + add r1, r1, #0x1 + add r2, r2, #0x1 + add r6, r4, #0x0 + mul r6, r3 + add r4, r5, r6 + ldr r4, [r4, #0x8] + add r0, r0, r4 + cmp r1, #0x5 + blo _02089374 + pop {r3-r6} + bx lr + .balign 4 +_0208938C: .word 0x020FF2FC +_02089390: .word 0x020FE17C + + thumb_func_start FUN_02089394 +FUN_02089394: ; 0x02089394 + push {r4-r7} + mov r2, #0x0 + ldr r3, _020893D8 ; =0x020FF2FC + add r1, r2, #0x0 +_0208939C: + ldrb r5, [r3, #0x0] + mov r4, #0xc + add r6, r5, #0x0 + mul r6, r4 + ldr r4, _020893DC ; =0x020FE17C + add r5, r4, r6 + ldr r7, [r5, #0x8] + mov r6, #0x0 + ldr r4, [r5, #0x4] + cmp r7, #0x0 + ble _020893C8 +_020893B2: + ldrh r5, [r4, #0x0] + cmp r0, r5 + bne _020893BE + add r0, r2, #0x0 + pop {r4-r7} + bx lr +_020893BE: + add r6, r6, #0x1 + add r2, r2, #0x1 + add r4, r4, #0x2 + cmp r6, r7 + blt _020893B2 +_020893C8: + add r1, r1, #0x1 + add r3, r3, #0x1 + cmp r1, #0x5 + blo _0208939C + mov r0, #0x0 + mvn r0, r0 + pop {r4-r7} + bx lr + .balign 4 +_020893D8: .word 0x020FF2FC +_020893DC: .word 0x020FE17C + + thumb_func_start FUN_020893E0 +FUN_020893E0: ; 0x020893E0 + mov r1, #0x0 + ldr r0, _020893EC ; =0x02106154 + mvn r1, r1 + str r1, [r0, #0x0] + bx lr + nop +_020893EC: .word 0x02106154 + + thumb_func_start FUN_020893F0 +FUN_020893F0: ; 0x020893F0 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x3 + lsl r0, r0, #0xc + cmp r2, r0 + bhs _0208940A + add r0, r1, #0x0 + ldr r1, _02089410 ; =0x021C5C58 + blx MIi_CpuCopy32 + ldr r0, _02089414 ; =0x02106154 + str r4, [r0, #0x0] + pop {r4, pc} +_0208940A: + bl ErrorHandling + pop {r4, pc} + .balign 4 +_02089410: .word 0x021C5C58 +_02089414: .word 0x02106154 + + thumb_func_start FUN_02089418 +FUN_02089418: ; 0x02089418 + push {r3, lr} + mov r3, #0x3 + lsl r3, r3, #0xc + cmp r2, r3 + bhs _02089434 + ldr r3, _0208943C ; =0x02106154 + ldr r3, [r3, #0x0] + cmp r0, r3 + bne _02089438 + ldr r0, _02089440 ; =0x021C5C58 + blx MIi_CpuCopy32 + mov r0, #0x1 + pop {r3, pc} +_02089434: + bl ErrorHandling +_02089438: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_0208943C: .word 0x02106154 +_02089440: .word 0x021C5C58 + + thumb_func_start FUN_02089444 +FUN_02089444: ; 0x02089444 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x3 + lsl r0, r0, #0xc + cmp r2, r0 + bhs _0208945E + add r0, r1, #0x0 + ldr r1, _02089464 ; =0x021C5C58 + blx MIi_CpuCopyFast + ldr r0, _02089468 ; =0x02106154 + str r4, [r0, #0x0] + pop {r4, pc} +_0208945E: + bl ErrorHandling + pop {r4, pc} + .balign 4 +_02089464: .word 0x021C5C58 +_02089468: .word 0x02106154 + + thumb_func_start FUN_0208946C +FUN_0208946C: ; 0x0208946C + push {r3, lr} + mov r3, #0x3 + lsl r3, r3, #0xc + cmp r2, r3 + bhs _02089488 + ldr r3, _02089490 ; =0x02106154 + ldr r3, [r3, #0x0] + cmp r0, r3 + bne _0208948C + ldr r0, _02089494 ; =0x021C5C58 + blx MIi_CpuCopyFast + mov r0, #0x1 + pop {r3, pc} +_02089488: + bl ErrorHandling +_0208948C: + mov r0, #0x0 + pop {r3, pc} + .balign 4 +_02089490: .word 0x02106154 +_02089494: .word 0x021C5C58 + + thumb_func_start FUN_02089498 +FUN_02089498: ; 0x02089498 + push {r3-r5, lr} + mov r2, #0x2 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0x58 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r5, #0x0 + mov r1, #0x38 + mov r2, #0x58 + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0x38 + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x58 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_0200628C + ldr r0, [r0, #0x8] + str r0, [r4, #0x30] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_020894D4 +FUN_020894D4: ; 0x020894D4 + push {r3-r6, lr} + sub sp, #0xc + add r5, r1, #0x0 + bl FUN_02006278 + ldr r1, [r5, #0x0] + add r4, r0, #0x0 + mov r6, #0x0 + cmp r1, #0x3 + bhi _020895DA + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020894F4: ; jump table (using 16-bit offset) + .short _020894FC - _020894F4 - 2; case 0 + .short _02089588 - _020894F4 - 2; case 1 + .short _02089596 - _020894F4 - 2; case 2 + .short _020895BC - _020894F4 - 2; case 3 +_020894FC: + ldr r0, _020895E0 ; =0x00000495 + add r1, r6, #0x0 + bl FUN_02005350 + add r0, r6, #0x0 + bl FUN_0200516C + add r0, r6, #0x0 + bl FUN_0200415C + add r0, r6, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + add r1, r6, #0x0 + bl FUN_0200E3A0 + add r0, r6, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + add r0, r6, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _020895E4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _020895E8 ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + add r0, r4, #0x0 + bl FUN_0208961C + add r0, r4, #0x0 + bl FUN_02089734 + ldr r0, _020895EC ; =FUN_02089610 + add r1, r4, #0x0 + bl FUN_02015F10 + bl FUN_0201E788 + mov r0, #0x6 + mov r1, #0x1 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [r4, #0x0] + add r2, r1, #0x0 + str r0, [sp, #0x8] + add r0, r6, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x1 + str r0, [r5, #0x0] + b _020895DA +_02089588: + bl FUN_0200E308 + cmp r0, #0x1 + bne _020895DA + mov r0, #0x2 + str r0, [r5, #0x0] + b _020895DA +_02089596: + bl FUN_02089790 + cmp r0, #0x1 + bne _020895DA + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r4, #0x0] + str r0, [sp, #0x8] + add r0, r6, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x3 + str r0, [r5, #0x0] + b _020895DA +_020895BC: + bl FUN_0200E308 + cmp r0, #0x1 + bne _020895DA + add r0, r4, #0x0 + bl FUN_0208977C + add r0, r4, #0x0 + bl FUN_020896E0 + add r0, r6, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r6, #0x1 +_020895DA: + add r0, r6, #0x0 + add sp, #0xc + pop {r3-r6, pc} + .balign 4 +_020895E0: .word 0x00000495 +_020895E4: .word 0xFFFFE0FF +_020895E8: .word 0x04001000 +_020895EC: .word FUN_02089610 + + thumb_func_start FUN_020895F0 +FUN_020895F0: ; 0x020895F0 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + ldr r4, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_0200627C + add r0, r4, #0x0 + bl FUN_020168D0 + mov r0, #0x0 + blx OS_ResetSystem + mov r0, #0x1 + pop {r3-r5, pc} + + thumb_func_start FUN_02089610 +FUN_02089610: ; 0x02089610 + ldr r3, _02089618 ; =FUN_0201AB60 + ldr r0, [r0, #0x14] + bx r3 + nop +_02089618: .word FUN_0201AB60 + + thumb_func_start FUN_0208961C +FUN_0208961C: ; 0x0208961C + push {r4-r5, lr} + sub sp, #0x5c + ldr r5, _020896C8 ; =0x020FF340 + add r4, r0, #0x0 + add r3, sp, #0x34 + mov r2, #0x5 +_02089628: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02089628 + add r0, sp, #0x34 + bl FUN_0201E66C + ldr r0, [r4, #0x0] + bl FUN_02016B94 + add r3, sp, #0x24 + ldr r5, _020896CC ; =0x020FF314 + str r0, [r4, #0x14] + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r5, _020896D0 ; =0x020FF324 + add r3, sp, #0x8 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r0, [r3, #0x0] + ldr r0, [r4, #0x14] + add r3, r1, #0x0 + bl FUN_02016C18 + ldr r0, [r4, #0x14] + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _020896D4 ; =0x000001E2 + str r0, [sp, #0x4] + ldr r0, [r4, #0x14] + mov r3, #0x2 + bl FUN_0200CD68 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _020896D8 ; =0x000001D9 + str r0, [sp, #0x4] + ldr r0, [r4, #0x14] + mov r3, #0x3 + bl FUN_0200CB00 + ldr r2, [r4, #0x0] + mov r0, #0x0 + mov r1, #0x20 + bl FUN_02002ED0 + mov r0, #0x0 + ldr r3, [r4, #0x0] + mov r1, #0x20 + add r2, r0, #0x0 + bl FUN_02017F18 + ldr r1, _020896DC ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _020896DC ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + add sp, #0x5c + pop {r4-r5, pc} + .balign 4 +_020896C8: .word 0x020FF340 +_020896CC: .word 0x020FF314 +_020896D0: .word 0x020FF324 +_020896D4: .word 0x000001E2 +_020896D8: .word 0x000001D9 +_020896DC: .word 0x00006C21 + + thumb_func_start FUN_020896E0 +FUN_020896E0: ; 0x020896E0 + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0201797C + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x3 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x4 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x5 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x6 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x7 + mov r1, #0x0 + bl FUN_0201797C + ldr r0, [r4, #0x14] + mov r1, #0x0 + bl FUN_020178A0 + ldr r0, [r4, #0x14] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02089734 +FUN_02089734: ; 0x02089734 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r3, [r4, #0x0] + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0x4 + bl FUN_0200A86C + str r0, [r4, #0x18] + bl FUN_0201BD5C + mov r0, #0x0 + str r0, [r4, #0x8] + add r1, r4, #0x0 + ldr r0, [r4, #0x14] + ldr r2, _02089778 ; =0x020FF304 + add r1, #0x1c + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp, #0x0] + mov r0, #0x20 + mov r2, #0x0 + add r4, #0x1c + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + add sp, #0x8 + pop {r4, pc} + nop +_02089778: .word 0x020FF304 + + thumb_func_start FUN_0208977C +FUN_0208977C: ; 0x0208977C + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x1c + bl FUN_02019178 + ldr r0, [r4, #0x18] + bl FUN_0200A8B8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02089790 +FUN_02089790: ; 0x02089790 + push {r3-r5, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + mov r5, #0x0 + cmp r1, #0x6 + bhi _02089888 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_020897AA: ; jump table (using 16-bit offset) + .short _020897B8 - _020897AA - 2; case 0 + .short _020897E2 - _020897AA - 2; case 1 + .short _02089802 - _020897AA - 2; case 2 + .short _0208982C - _020897AA - 2; case 3 + .short _0208984C - _020897AA - 2; case 4 + .short _0208986C - _020897AA - 2; case 5 + .short _0208987E - _020897AA - 2; case 6 +_020897B8: + add r1, r5, #0x0 + mov r2, #0x1 + mov r3, #0x4 + bl FUN_0208989C + cmp r0, #0x1 + bne _02089888 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r1, _02089890 ; =0x020FF30C + str r0, [sp, #0x4] + ldr r0, [r4, #0x14] + ldr r2, _02089894 ; =0x000001D9 + mov r3, #0x3 + bl FUN_020020EC + str r0, [r4, #0x2c] + mov r0, #0x1 + str r0, [r4, #0x4] + b _02089888 +_020897E2: + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x0] + bl FUN_020021AC + cmp r0, #0x0 + beq _020897F6 + sub r1, r5, #0x2 + cmp r0, r1 + beq _020897FC + b _02089888 +_020897F6: + mov r0, #0x2 + str r0, [r4, #0x4] + b _02089888 +_020897FC: + mov r0, #0x6 + str r0, [r4, #0x4] + b _02089888 +_02089802: + mov r1, #0x1 + add r2, r1, #0x0 + mov r3, #0x4 + bl FUN_0208989C + cmp r0, #0x1 + bne _02089888 + mov r0, #0x1 + str r0, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r1, _02089890 ; =0x020FF30C + str r0, [sp, #0x4] + ldr r0, [r4, #0x14] + ldr r2, _02089894 ; =0x000001D9 + mov r3, #0x3 + bl FUN_020020EC + str r0, [r4, #0x2c] + mov r0, #0x3 + str r0, [r4, #0x4] + b _02089888 +_0208982C: + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x0] + bl FUN_020021AC + cmp r0, #0x0 + beq _02089840 + sub r1, r5, #0x2 + cmp r0, r1 + beq _02089846 + b _02089888 +_02089840: + mov r0, #0x4 + str r0, [r4, #0x4] + b _02089888 +_02089846: + mov r0, #0x6 + str r0, [r4, #0x4] + b _02089888 +_0208984C: + mov r1, #0x2 + mov r2, #0x1 + add r3, r5, #0x0 + bl FUN_0208989C + cmp r0, #0x1 + bne _02089888 + add r0, r4, #0x0 + ldr r1, _02089898 ; =0x000001E2 + add r0, #0x1c + bl FUN_0200D858 + str r0, [r4, #0x34] + mov r0, #0x5 + str r0, [r4, #0x4] + b _02089888 +_0208986C: + ldr r0, [r4, #0x30] + bl FUN_0202263C + ldr r0, [r4, #0x34] + bl FUN_0200DBFC + mov r0, #0x6 + str r0, [r4, #0x4] + b _02089888 +_0208987E: + ldr r0, [r4, #0x14] + add r1, r5, #0x0 + bl FUN_02018744 + mov r5, #0x1 +_02089888: + add r0, r5, #0x0 + add sp, #0x8 + pop {r3-r5, pc} + nop +_02089890: .word 0x020FF30C +_02089894: .word 0x000001D9 +_02089898: .word 0x000001E2 + + thumb_func_start FUN_0208989C +FUN_0208989C: ; 0x0208989C + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r0, [r5, #0x8] + add r7, r1, #0x0 + add r4, r3, #0x0 + mov r6, #0x0 + cmp r0, #0x0 + beq _020898B8 + cmp r0, #0x1 + beq _02089920 + cmp r0, #0x2 + beq _0208993C + b _02089950 +_020898B8: + mov r0, #0xd8 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x1c + mov r1, #0xf + add r2, r6, #0x0 + add r3, r6, #0x0 + bl FUN_020196F4 + add r0, r5, #0x0 + ldr r2, _02089958 ; =0x000001E2 + add r0, #0x1c + add r1, r6, #0x0 + mov r3, #0x2 + bl FUN_0200D0BC + mov r0, #0x1 + ldr r1, [r5, #0x0] + lsl r0, r0, #0xa + bl FUN_020219F4 + str r0, [r5, #0x10] + ldr r0, [r5, #0x18] + ldr r2, [r5, #0x10] + add r1, r7, #0x0 + bl FUN_0200A8E0 + add r3, r6, #0x0 + str r3, [sp, #0x0] + str r4, [sp, #0x4] + str r3, [sp, #0x8] + add r0, r5, #0x0 + ldr r2, [r5, #0x10] + add r0, #0x1c + mov r1, #0x1 + bl FUN_0201BD84 + str r0, [r5, #0xc] + cmp r4, #0x0 + bne _02089918 + ldr r0, [r5, #0x10] + bl FUN_02021A20 + ldr r0, [r5, #0x8] + add r0, r0, #0x1 + str r0, [r5, #0x8] +_02089918: + ldr r0, [r5, #0x8] + add r0, r0, #0x1 + str r0, [r5, #0x8] + b _02089950 +_02089920: + ldr r0, [r5, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02089950 + ldr r0, [r5, #0x10] + bl FUN_02021A20 + ldr r0, [r5, #0x8] + add r0, r0, #0x1 + str r0, [r5, #0x8] + b _02089950 +_0208993C: + cmp r2, #0x0 + bne _0208994A + ldr r0, _0208995C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _02089950 +_0208994A: + mov r0, #0x0 + str r0, [r5, #0x8] + mov r6, #0x1 +_02089950: + add r0, r6, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_02089958: .word 0x000001E2 +_0208995C: .word 0x021C48B8 + + thumb_func_start FUN_02089960 +FUN_02089960: ; 0x02089960 + push {r3-r5, lr} + mov r2, #0x2 + add r5, r0, #0x0 + mov r0, #0x3 + mov r1, #0x58 + lsl r2, r2, #0x10 + bl FUN_0201681C + add r0, r5, #0x0 + mov r1, #0x3c + mov r2, #0x58 + bl FUN_02006268 + mov r1, #0x0 + mov r2, #0x3c + add r4, r0, #0x0 + blx Call_FillMemWithValue + mov r0, #0x58 + str r0, [r4, #0x0] + mov r0, #0x0 + str r0, [r4, #0x4] + add r0, r5, #0x0 + bl FUN_0200628C + ldr r0, [r0, #0x8] + str r0, [r4, #0x34] + mov r0, #0x1 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0208999C +FUN_0208999C: ; 0x0208999C + push {r4-r6, lr} + add r5, r1, #0x0 + bl FUN_02006278 + ldr r1, [r5, #0x0] + add r6, r0, #0x0 + mov r4, #0x0 + cmp r1, #0x0 + beq _020899B8 + cmp r1, #0x1 + beq _02089A12 + cmp r1, #0x2 + beq _02089A20 + b _02089A34 +_020899B8: + add r0, r4, #0x0 + add r1, r4, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + add r1, r4, #0x0 + bl FUN_0200E3A0 + add r0, r4, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + add r0, r4, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02089A38 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _02089A3C ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + add r0, r6, #0x0 + bl FUN_02089A6C + add r0, r6, #0x0 + bl FUN_02089B80 + bl FUN_0201E788 + mov r0, #0x1 + str r0, [r5, #0x0] + b _02089A34 +_02089A12: + bl FUN_02089BE0 + cmp r0, #0x1 + bne _02089A34 + mov r0, #0x2 + str r0, [r5, #0x0] + b _02089A34 +_02089A20: + bl FUN_02089BCC + add r0, r6, #0x0 + bl FUN_02089B2C + add r0, r4, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r4, #0x1 +_02089A34: + add r0, r4, #0x0 + pop {r4-r6, pc} + .balign 4 +_02089A38: .word 0xFFFFE0FF +_02089A3C: .word 0x04001000 + + thumb_func_start FUN_02089A40 +FUN_02089A40: ; 0x02089A40 + push {r3-r5, lr} + add r5, r0, #0x0 + bl FUN_02006278 + ldr r4, [r0, #0x0] + add r0, r5, #0x0 + bl FUN_0200627C + add r0, r4, #0x0 + bl FUN_020168D0 + ldr r0, _02089A64 ; =0x00000053 + ldr r1, _02089A68 ; =0x0223A360 + bl FUN_02000E7C + mov r0, #0x1 + pop {r3-r5, pc} + nop +_02089A64: .word 0x00000053 +_02089A68: .word 0x0223A360 + + thumb_func_start FUN_02089A6C +FUN_02089A6C: ; 0x02089A6C + push {r4-r5, lr} + sub sp, #0x5c + ldr r5, _02089B18 ; =0x020FF3AC + add r4, r0, #0x0 + add r3, sp, #0x34 + mov r2, #0x5 +_02089A78: + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + sub r2, r2, #0x1 + bne _02089A78 + add r0, sp, #0x34 + bl FUN_0201E66C + ldr r0, [r4, #0x0] + bl FUN_02016B94 + add r3, sp, #0x24 + ldr r5, _02089B1C ; =0x020FF380 + str r0, [r4, #0x18] + add r2, r3, #0x0 + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + add r0, r2, #0x0 + bl FUN_02016BBC + ldr r5, _02089B20 ; =0x020FF390 + add r3, sp, #0x8 + ldmia r5!, {r0-r1} + add r2, r3, #0x0 + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldmia r5!, {r0-r1} + stmia r3!, {r0-r1} + ldr r0, [r5, #0x0] + mov r1, #0x0 + str r0, [r3, #0x0] + ldr r0, [r4, #0x18] + add r3, r1, #0x0 + bl FUN_02016C18 + ldr r0, [r4, #0x18] + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _02089B24 ; =0x000001E2 + str r0, [sp, #0x4] + ldr r0, [r4, #0x18] + mov r3, #0x2 + bl FUN_0200CD68 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r2, _02089B28 ; =0x000001D9 + str r0, [sp, #0x4] + ldr r0, [r4, #0x18] + mov r3, #0x3 + bl FUN_0200CB00 + ldr r2, [r4, #0x0] + mov r0, #0x0 + mov r1, #0x20 + bl FUN_02002ED0 + mov r0, #0x0 + ldr r3, [r4, #0x0] + mov r1, #0x20 + add r2, r0, #0x0 + bl FUN_02017F18 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02017FE4 + mov r0, #0x4 + mov r1, #0x0 + bl FUN_02017FE4 + add sp, #0x5c + pop {r4-r5, pc} + .balign 4 +_02089B18: .word 0x020FF3AC +_02089B1C: .word 0x020FF380 +_02089B20: .word 0x020FF390 +_02089B24: .word 0x000001E2 +_02089B28: .word 0x000001D9 + + thumb_func_start FUN_02089B2C +FUN_02089B2C: ; 0x02089B2C + push {r4, lr} + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0201797C + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x2 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x3 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x4 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x5 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x6 + mov r1, #0x0 + bl FUN_0201797C + mov r0, #0x7 + mov r1, #0x0 + bl FUN_0201797C + ldr r0, [r4, #0x18] + mov r1, #0x0 + bl FUN_020178A0 + ldr r0, [r4, #0x18] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start FUN_02089B80 +FUN_02089B80: ; 0x02089B80 + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r2, _02089BC4 ; =0x00000167 + ldr r3, [r4, #0x0] + mov r0, #0x1 + mov r1, #0x1a + bl FUN_0200A86C + str r0, [r4, #0x1c] + bl FUN_0201BD5C + mov r0, #0x0 + str r0, [r4, #0xc] + add r1, r4, #0x0 + ldr r0, [r4, #0x18] + ldr r2, _02089BC8 ; =0x020FF378 + add r1, #0x20 + bl FUN_02019150 + mov r0, #0xd8 + str r0, [sp, #0x0] + mov r0, #0x20 + mov r2, #0x0 + add r4, #0x20 + str r0, [sp, #0x4] + add r0, r4, #0x0 + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + add sp, #0x8 + pop {r4, pc} + nop +_02089BC4: .word 0x00000167 +_02089BC8: .word 0x020FF378 + + thumb_func_start FUN_02089BCC +FUN_02089BCC: ; 0x02089BCC + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x20 + bl FUN_02019178 + ldr r0, [r4, #0x1c] + bl FUN_0200A8B8 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_02089BE0 +FUN_02089BE0: ; 0x02089BE0 + push {r4-r5, lr} + sub sp, #0xc + add r4, r0, #0x0 + ldr r1, [r4, #0x4] + mov r5, #0x0 + cmp r1, #0x5 + bhi _02089CC2 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02089BFA: ; jump table (using 16-bit offset) + .short _02089C06 - _02089BFA - 2; case 0 + .short _02089C3C - _02089BFA - 2; case 1 + .short _02089C68 - _02089BFA - 2; case 2 + .short _02089C76 - _02089BFA - 2; case 3 + .short _02089CA2 - _02089BFA - 2; case 4 + .short _02089CC0 - _02089BFA - 2; case 5 +_02089C06: + ldr r0, [r4, #0x34] + bl FUN_02022800 + cmp r0, #0x3 + bhi _02089CC2 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02089C1C: ; jump table (using 16-bit offset) + .short _02089C24 - _02089C1C - 2; case 0 + .short _02089C24 - _02089C1C - 2; case 1 + .short _02089C2A - _02089C1C - 2; case 2 + .short _02089C34 - _02089C1C - 2; case 3 +_02089C24: + mov r0, #0x5 + str r0, [r4, #0x4] + b _02089CC2 +_02089C2A: + add r0, r5, #0x0 + str r0, [r4, #0x8] + mov r0, #0x1 + str r0, [r4, #0x4] + b _02089CC2 +_02089C34: + mov r0, #0x1 + str r0, [r4, #0x8] + str r0, [r4, #0x4] + b _02089CC2 +_02089C3C: + ldr r1, _02089CC8 ; =0x00006C21 + add r0, r5, #0x0 + bl FUN_02017FE4 + ldr r1, _02089CC8 ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + mov r0, #0x6 + mov r1, #0x1 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [r4, #0x0] + add r2, r1, #0x0 + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x2 + str r0, [r4, #0x4] + b _02089CC2 +_02089C68: + bl FUN_0200E308 + cmp r0, #0x1 + bne _02089CC2 + mov r0, #0x3 + str r0, [r4, #0x4] + b _02089CC2 +_02089C76: + ldr r1, [r4, #0x8] + add r2, r5, #0x0 + mov r3, #0x4 + bl FUN_02089CCC + cmp r0, #0x1 + bne _02089CC2 + mov r0, #0x6 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x4] + ldr r0, [r4, #0x0] + str r0, [sp, #0x8] + add r0, r5, #0x0 + add r1, r0, #0x0 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_0200E1D0 + mov r0, #0x4 + str r0, [r4, #0x4] + b _02089CC2 +_02089CA2: + bl FUN_0200E308 + cmp r0, #0x1 + bne _02089CC2 + add r0, r5, #0x0 + add r1, r0, #0x0 + bl FUN_02017FE4 + mov r0, #0x4 + add r1, r5, #0x0 + bl FUN_02017FE4 + mov r0, #0x5 + str r0, [r4, #0x4] + b _02089CC2 +_02089CC0: + mov r5, #0x1 +_02089CC2: + add r0, r5, #0x0 + add sp, #0xc + pop {r4-r5, pc} + .balign 4 +_02089CC8: .word 0x00006C21 + + thumb_func_start FUN_02089CCC +FUN_02089CCC: ; 0x02089CCC + push {r4-r7, lr} + sub sp, #0xc + add r5, r0, #0x0 + ldr r0, [r5, #0xc] + add r7, r1, #0x0 + add r4, r3, #0x0 + mov r6, #0x0 + cmp r0, #0x0 + beq _02089CE8 + cmp r0, #0x1 + beq _02089D50 + cmp r0, #0x2 + beq _02089D6C + b _02089D80 +_02089CE8: + mov r0, #0xd8 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + add r0, r5, #0x0 + add r0, #0x20 + mov r1, #0xf + add r2, r6, #0x0 + add r3, r6, #0x0 + bl FUN_020196F4 + add r0, r5, #0x0 + ldr r2, _02089D88 ; =0x000001E2 + add r0, #0x20 + add r1, r6, #0x0 + mov r3, #0x2 + bl FUN_0200D0BC + mov r0, #0x1 + ldr r1, [r5, #0x0] + lsl r0, r0, #0xa + bl FUN_020219F4 + str r0, [r5, #0x14] + ldr r0, [r5, #0x1c] + ldr r2, [r5, #0x14] + add r1, r7, #0x0 + bl FUN_0200A8E0 + add r3, r6, #0x0 + str r3, [sp, #0x0] + str r4, [sp, #0x4] + str r3, [sp, #0x8] + add r0, r5, #0x0 + ldr r2, [r5, #0x14] + add r0, #0x20 + mov r1, #0x1 + bl FUN_0201BD84 + str r0, [r5, #0x10] + cmp r4, #0x0 + bne _02089D48 + ldr r0, [r5, #0x14] + bl FUN_02021A20 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] +_02089D48: + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02089D80 +_02089D50: + ldr r0, [r5, #0x10] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0x0 + bne _02089D80 + ldr r0, [r5, #0x14] + bl FUN_02021A20 + ldr r0, [r5, #0xc] + add r0, r0, #0x1 + str r0, [r5, #0xc] + b _02089D80 +_02089D6C: + cmp r2, #0x0 + bne _02089D7A + ldr r0, _02089D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0x1 + tst r0, r1 + beq _02089D80 +_02089D7A: + mov r0, #0x0 + str r0, [r5, #0xc] + mov r6, #0x1 +_02089D80: + add r0, r6, #0x0 + add sp, #0xc + pop {r4-r7, pc} + nop +_02089D88: .word 0x000001E2 +_02089D8C: .word 0x021C48B8 + + thumb_func_start FUN_02089D90 +FUN_02089D90: ; 0x02089D90 + push {r3-r6, lr} + sub sp, #0x1c + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _02089EF4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _02089EF8 ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + ldr r0, _02089EFC ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r3, _02089F00 ; =0x04000050 + mov r0, #0x0 + strh r0, [r3, #0x0] + ldr r2, _02089F04 ; =0x04001050 + sub r3, #0x50 + strh r0, [r2, #0x0] + ldr r1, [r3, #0x0] + ldr r0, _02089F08 ; =0xFFFF1FFF + sub r2, #0x50 + and r1, r0 + str r1, [r3, #0x0] + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + ldr r0, _02089F0C ; =0x020FF418 + bl FUN_0201E66C + add r0, r4, #0x0 + bl FUN_02016B94 + add r5, r0, #0x0 + ldr r0, _02089F10 ; =0x020FF3EC + bl FUN_02016BBC + mov r1, #0x0 + ldr r2, _02089F14 ; =0x020FF3FC + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02016C18 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r2, _02089F18 ; =0x000001F7 + add r0, r5, #0x0 + mov r3, #0x2 + str r4, [sp, #0x4] + bl FUN_0200CB00 + mov r0, #0x0 + mov r1, #0x20 + add r2, r4, #0x0 + bl FUN_02002ED0 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + add r3, r4, #0x0 + bl FUN_02017F18 + ldr r1, _02089F1C ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _02089F1C ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0x5 + add r3, r4, #0x0 + bl FUN_0200A86C + add r6, r0, #0x0 + mov r0, #0x6 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + bl FUN_0201BD5C + ldr r2, _02089F20 ; =0x020FF3E4 + add r0, r5, #0x0 + add r1, sp, #0xc + bl FUN_02019150 + mov r0, #0xd0 + str r0, [sp, #0x0] + mov r0, #0x90 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0xc + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r2, _02089F18 ; =0x000001F7 + add r0, sp, #0xc + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200CCA4 + add r0, r6, #0x0 + mov r1, #0x0 + add r2, r4, #0x0 + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, sp, #0xc + add r2, r4, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r4, #0x0 + bl FUN_02021A20 + bl FUN_0201E788 + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + mov r4, #0x1 +_02089EE4: + bl FUN_02000FE8 + add r0, r4, #0x0 + add r1, r4, #0x0 + blx OS_WaitIrq + b _02089EE4 + nop +_02089EF4: .word 0xFFFFE0FF +_02089EF8: .word 0x04001000 +_02089EFC: .word 0x021C4918 +_02089F00: .word 0x04000050 +_02089F04: .word 0x04001050 +_02089F08: .word 0xFFFF1FFF +_02089F0C: .word 0x020FF418 +_02089F10: .word 0x020FF3EC +_02089F14: .word 0x020FF3FC +_02089F18: .word 0x000001F7 +_02089F1C: .word 0x00006C21 +_02089F20: .word 0x020FF3E4 + + thumb_func_start FUN_02089F24 +FUN_02089F24: ; 0x02089F24 + push {r3-r6, lr} + sub sp, #0x1c + add r4, r0, #0x0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _0208A088 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0208A08C ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + ldr r0, _0208A090 ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r3, _0208A094 ; =0x04000050 + mov r0, #0x0 + strh r0, [r3, #0x0] + ldr r2, _0208A098 ; =0x04001050 + sub r3, #0x50 + strh r0, [r2, #0x0] + ldr r1, [r3, #0x0] + ldr r0, _0208A09C ; =0xFFFF1FFF + sub r2, #0x50 + and r1, r0 + str r1, [r3, #0x0] + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + ldr r0, _0208A0A0 ; =0x020FF418 + bl FUN_0201E66C + add r0, r4, #0x0 + bl FUN_02016B94 + add r5, r0, #0x0 + ldr r0, _0208A0A4 ; =0x020FF3EC + bl FUN_02016BBC + mov r1, #0x0 + ldr r2, _0208A0A8 ; =0x020FF3FC + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02016C18 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r2, _0208A0AC ; =0x000001F7 + add r0, r5, #0x0 + mov r3, #0x2 + str r4, [sp, #0x4] + bl FUN_0200CB00 + mov r0, #0x0 + mov r1, #0x20 + add r2, r4, #0x0 + bl FUN_02002ED0 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + add r3, r4, #0x0 + bl FUN_02017F18 + ldr r1, _0208A0B0 ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _0208A0B0 ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0x5 + add r3, r4, #0x0 + bl FUN_0200A86C + add r6, r0, #0x0 + mov r0, #0x6 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + bl FUN_0201BD5C + ldr r2, _0208A0B4 ; =0x020FF3E4 + add r0, r5, #0x0 + add r1, sp, #0xc + bl FUN_02019150 + mov r0, #0xd0 + str r0, [sp, #0x0] + mov r0, #0x90 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0xc + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r2, _0208A0AC ; =0x000001F7 + add r0, sp, #0xc + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200CCA4 + add r0, r6, #0x0 + mov r1, #0x1 + add r2, r4, #0x0 + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, sp, #0xc + add r2, r4, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r4, #0x0 + bl FUN_02021A20 + bl FUN_0201E788 + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + mov r4, #0x1 +_0208A078: + bl FUN_02000FE8 + add r0, r4, #0x0 + add r1, r4, #0x0 + blx OS_WaitIrq + b _0208A078 + nop +_0208A088: .word 0xFFFFE0FF +_0208A08C: .word 0x04001000 +_0208A090: .word 0x021C4918 +_0208A094: .word 0x04000050 +_0208A098: .word 0x04001050 +_0208A09C: .word 0xFFFF1FFF +_0208A0A0: .word 0x020FF418 +_0208A0A4: .word 0x020FF3EC +_0208A0A8: .word 0x020FF3FC +_0208A0AC: .word 0x000001F7 +_0208A0B0: .word 0x00006C21 +_0208A0B4: .word 0x020FF3E4 + + thumb_func_start FUN_0208A0B8 +FUN_0208A0B8: ; 0x0208A0B8 + push {r4-r7, lr} + sub sp, #0x1c + add r4, r0, #0x0 + cmp r1, #0x0 + bne _0208A0C6 + mov r6, #0x1 + b _0208A0C8 +_0208A0C6: + mov r6, #0x0 +_0208A0C8: + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + bl FUN_02015EF4 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _0208A228 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0208A22C ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + ldr r0, _0208A230 ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r3, _0208A234 ; =0x04000050 + mov r1, #0x0 + strh r1, [r3, #0x0] + ldr r0, _0208A238 ; =0x04001050 + sub r3, #0x50 + strh r1, [r0, #0x0] + ldr r2, [r3, #0x0] + ldr r1, _0208A23C ; =0xFFFF1FFF + sub r0, #0x50 + and r2, r1 + str r2, [r3, #0x0] + ldr r2, [r0, #0x0] + and r1, r2 + str r1, [r0, #0x0] + ldr r0, _0208A240 ; =0x020FF474 + bl FUN_0201E66C + add r0, r4, #0x0 + bl FUN_02016B94 + add r5, r0, #0x0 + ldr r0, _0208A244 ; =0x020FF448 + bl FUN_02016BBC + mov r1, #0x0 + ldr r2, _0208A248 ; =0x020FF458 + add r0, r5, #0x0 + add r3, r1, #0x0 + bl FUN_02016C18 + add r0, r5, #0x0 + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r2, _0208A24C ; =0x000001F7 + add r0, r5, #0x0 + mov r3, #0x2 + str r4, [sp, #0x4] + bl FUN_0200CB00 + mov r0, #0x0 + mov r1, #0x20 + add r2, r4, #0x0 + bl FUN_02002ED0 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + add r3, r4, #0x0 + bl FUN_02017F18 + ldr r1, _0208A250 ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _0208A250 ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0x6 + add r3, r4, #0x0 + bl FUN_0200A86C + add r7, r0, #0x0 + mov r0, #0x6 + lsl r0, r0, #0x6 + add r1, r4, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + bl FUN_0201BD5C + ldr r2, _0208A254 ; =0x020FF440 + add r0, r5, #0x0 + add r1, sp, #0xc + bl FUN_02019150 + mov r0, #0xd0 + str r0, [sp, #0x0] + mov r0, #0x90 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0xc + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r2, _0208A24C ; =0x000001F7 + add r0, sp, #0xc + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200CCA4 + add r0, r7, #0x0 + add r1, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, sp, #0xc + add r2, r4, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r4, #0x0 + bl FUN_02021A20 + bl FUN_0201E788 + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + mov r4, #0x1 +_0208A21A: + bl FUN_02000FE8 + add r0, r4, #0x0 + add r1, r4, #0x0 + blx OS_WaitIrq + b _0208A21A + .balign 4 +_0208A228: .word 0xFFFFE0FF +_0208A22C: .word 0x04001000 +_0208A230: .word 0x021C4918 +_0208A234: .word 0x04000050 +_0208A238: .word 0x04001050 +_0208A23C: .word 0xFFFF1FFF +_0208A240: .word 0x020FF474 +_0208A244: .word 0x020FF448 +_0208A248: .word 0x020FF458 +_0208A24C: .word 0x000001F7 +_0208A250: .word 0x00006C21 +_0208A254: .word 0x020FF440 + + thumb_func_start FUN_0208A258 +FUN_0208A258: ; 0x0208A258 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + ldr r0, _0208A290 ; =0x0000022F + ldrb r0, [r4, r0] + cmp r0, #0x10 + beq _0208A278 + cmp r0, #0x11 + beq _0208A286 + b _0208A28C +_0208A278: + add r0, r6, #0x0 + add r1, r4, #0x0 + bl FUN_0208A294 + ldr r1, _0208A290 ; =0x0000022F + strb r0, [r4, r1] + b _0208A28C +_0208A286: + add r0, r5, #0x0 + bl FUN_0208A2C4 +_0208A28C: + mov r0, #0x0 + pop {r4-r6, pc} + .balign 4 +_0208A290: .word 0x0000022F + + thumb_func_start FUN_0208A294 +FUN_0208A294: ; 0x0208A294 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r1, #0x0 + bl FUN_0204647C + cmp r0, #0x0 + beq _0208A2A6 + mov r0, #0x10 + pop {r3-r5, pc} +_0208A2A6: + ldr r0, [r4, #0x4] + bl FUN_0206E394 + mov r1, #0x9 + lsl r1, r1, #0x6 + strb r0, [r4, r1] + ldr r0, [r4, #0x4] + bl FUN_02016A18 + add r0, r5, #0x0 + bl FUN_0204649C + mov r0, #0x11 + pop {r3-r5, pc} + .balign 4 + + thumb_func_start FUN_0208A2C4 +FUN_0208A2C4: ; 0x0208A2C4 + push {r4-r6, lr} + add r5, r0, #0x0 + bl FUN_02046528 + add r6, r0, #0x0 + add r0, r5, #0x0 + bl FUN_0204652C + add r4, r0, #0x0 + add r0, r6, #0x0 + bl FUN_020464A4 + cmp r0, #0x0 + beq _0208A2F6 + mov r0, #0x1 + bl FUN_021D7CA4 + ldr r1, _0208A2F8 ; =0x0223D4AD + add r0, r5, #0x0 + add r2, r4, #0x0 + bl FUN_020463EC + ldr r0, _0208A2FC ; =0x0000022F + mov r1, #0x12 + strb r1, [r4, r0] +_0208A2F6: + pop {r4-r6, pc} + .balign 4 +_0208A2F8: .word 0x0223D4AD +_0208A2FC: .word 0x0000022F + + thumb_func_start FUN_0208A300 +FUN_0208A300: ; 0x0208A300 + push {r3, lr} + mov r1, #0x8 + bl FUN_02016998 + mov r1, #0x0 + 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 r1, #0x2 + str r1, [r0, #0x4] + pop {r3, pc} + + thumb_func_start FUN_0208A320 +FUN_0208A320: ; 0x0208A320 + ldr r3, _0208A324 ; =FUN_02016A18 + bx r3 + .balign 4 +_0208A324: .word FUN_02016A18 + + thumb_func_start FUN_0208A328 +FUN_0208A328: ; 0x0208A328 + ldr r0, [r0, #0x0] + bx lr + + thumb_func_start FUN_0208A32C +FUN_0208A32C: ; 0x0208A32C + str r1, [r0, #0x0] + bx lr + + thumb_func_start FUN_0208A330 +FUN_0208A330: ; 0x0208A330 + ldr r0, [r0, #0x4] + bx lr + + thumb_func_start FUN_0208A334 +FUN_0208A334: ; 0x0208A334 + str r1, [r0, #0x4] + bx lr + + thumb_func_start FUN_0208A338 +FUN_0208A338: ; 0x0208A338 + push {r4-r6, lr} + add r6, r0, #0x0 + bl FUN_02046528 + add r5, r0, #0x0 + mov r0, #0x20 + mov r1, #0x6c + bl FUN_02016998 + add r4, r0, #0x0 + mov r0, #0x19 + str r5, [r4, #0x0] + lsl r0, r0, #0x4 + mov r1, #0x20 + bl FUN_020219F4 + str r0, [r4, #0x4] + mov r0, #0x19 + lsl r0, r0, #0x4 + mov r1, #0x20 + bl FUN_020219F4 + str r0, [r4, #0x8] + mov r0, #0x20 + bl FUN_0200AA80 + str r0, [r4, #0xc] + ldr r2, _0208A3C0 ; =0x00000171 + mov r0, #0x1 + mov r1, #0x1a + mov r3, #0x20 + bl FUN_0200A86C + str r0, [r4, #0x10] + mov r0, #0x20 + bl FUN_02013690 + str r0, [r4, #0x14] + ldr r2, [r4, #0x0] + mov r0, #0x2 + ldr r2, [r2, #0xc] + mov r1, #0x0 + mov r3, #0x20 + bl FUN_02085338 + str r0, [r4, #0x50] + bl FUN_020853DC + add r0, r4, #0x0 + add r0, #0x18 + bl FUN_0201901C + add r0, r4, #0x0 + add r0, #0x28 + bl FUN_0201901C + add r0, r4, #0x0 + add r0, #0x38 + bl FUN_0201901C + mov r0, #0x0 + str r0, [r4, #0x54] + ldr r1, _0208A3C4 ; =FUN_0208A458 + add r0, r6, #0x0 + add r2, r4, #0x0 + bl FUN_0204640C + pop {r4-r6, pc} + .balign 4 +_0208A3C0: .word 0x00000171 +_0208A3C4: .word FUN_0208A458 + + thumb_func_start FUN_0208A3C8 +FUN_0208A3C8: ; 0x0208A3C8 + push {r4, lr} + add r4, r0, #0x0 + ldr r0, [r4, #0x50] + bl FUN_020853A8 + ldr r0, [r4, #0x14] + bl FUN_020136C0 + ldr r0, [r4, #0x4] + bl FUN_02021A20 + ldr r0, [r4, #0x8] + bl FUN_02021A20 + ldr r0, [r4, #0xc] + bl FUN_0200AB18 + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + add r0, r4, #0x0 + bl FUN_0208A400 + add r0, r4, #0x0 + bl FUN_02016A18 + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0208A400 +FUN_0208A400: ; 0x0208A400 + push {r4, lr} + add r4, r0, #0x0 + add r0, #0x18 + bl FUN_02019048 + cmp r0, #0x0 + beq _0208A41E + add r0, r4, #0x0 + add r0, #0x18 + bl FUN_02019178 + add r0, r4, #0x0 + add r0, #0x18 + bl FUN_0201901C +_0208A41E: + add r0, r4, #0x0 + add r0, #0x28 + bl FUN_02019048 + cmp r0, #0x0 + beq _0208A43A + add r0, r4, #0x0 + add r0, #0x28 + bl FUN_02019178 + add r0, r4, #0x0 + add r0, #0x28 + bl FUN_0201901C +_0208A43A: + add r0, r4, #0x0 + add r0, #0x38 + bl FUN_02019048 + cmp r0, #0x0 + beq _0208A456 + add r0, r4, #0x0 + add r0, #0x38 + bl FUN_02019178 + add r4, #0x38 + add r0, r4, #0x0 + bl FUN_0201901C +_0208A456: + pop {r4, pc} + + thumb_func_start FUN_0208A458 +FUN_0208A458: ; 0x0208A458 + push {r3-r5, lr} + bl FUN_0204652C + add r4, r0, #0x0 + ldr r1, [r4, #0x54] + cmp r1, #0xd + bhi _0208A4A4 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #0x6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0208A472: ; jump table (using 16-bit offset) + .short _0208A48E - _0208A472 - 2; case 0 + .short _0208A49C - _0208A472 - 2; case 1 + .short _0208A4B8 - _0208A472 - 2; case 2 + .short _0208A556 - _0208A472 - 2; case 3 + .short _0208A566 - _0208A472 - 2; case 4 + .short _0208A57A - _0208A472 - 2; case 5 + .short _0208A5A6 - _0208A472 - 2; case 6 + .short _0208A5BE - _0208A472 - 2; case 7 + .short _0208A5D4 - _0208A472 - 2; case 8 + .short _0208A614 - _0208A472 - 2; case 9 + .short _0208A628 - _0208A472 - 2; case 10 + .short _0208A694 - _0208A472 - 2; case 11 + .short _0208A6A2 - _0208A472 - 2; case 12 + .short _0208A6C0 - _0208A472 - 2; case 13 +_0208A48E: + mov r1, #0x0 + add r2, r1, #0x0 + bl FUN_0208A6D4 + mov r0, #0x1 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A49C: + bl FUN_0208A750 + cmp r0, #0x0 + bne _0208A4A6 +_0208A4A4: + b _0208A6C8 +_0208A4A6: + add r0, r4, #0x0 + bl FUN_0208A760 + add r0, r4, #0x0 + bl FUN_0208A77C + mov r0, #0x2 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A4B8: + bl FUN_0208A8DC + mov r1, #0x0 + mvn r1, r1 + str r0, [r4, #0x64] + cmp r0, r1 + beq _0208A5B0 + add r0, r4, #0x0 + bl FUN_0208A820 + ldr r0, [r4, #0x64] + cmp r0, #0x4 + bhi _0208A5B0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #0x6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0208A4DE: ; jump table (using 16-bit offset) + .short _0208A4E8 - _0208A4DE - 2; case 0 + .short _0208A502 - _0208A4DE - 2; case 1 + .short _0208A51C - _0208A4DE - 2; case 2 + .short _0208A536 - _0208A4DE - 2; case 3 + .short _0208A550 - _0208A4DE - 2; case 4 +_0208A4E8: + ldr r0, [r4, #0x0] + mov r1, #0x0 + ldr r0, [r0, #0xc] + bl FUN_0202A5F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x48 + bl FUN_02013960 + mov r0, #0x3 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A502: + ldr r0, [r4, #0x0] + mov r1, #0x1 + ldr r0, [r0, #0xc] + bl FUN_0202A5F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x48 + bl FUN_02013960 + mov r0, #0x3 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A51C: + ldr r0, [r4, #0x0] + mov r1, #0x2 + ldr r0, [r0, #0xc] + bl FUN_0202A5F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x48 + bl FUN_02013960 + mov r0, #0x3 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A536: + ldr r0, [r4, #0x0] + mov r1, #0x3 + ldr r0, [r0, #0xc] + bl FUN_0202A5F4 + add r1, r0, #0x0 + add r0, r4, #0x0 + add r0, #0x48 + bl FUN_02013960 + mov r0, #0x3 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A550: + mov r0, #0xb + str r0, [r4, #0x54] + b _0208A6C8 +_0208A556: + ldr r1, [r4, #0x64] + mov r2, #0x0 + add r1, r1, #0x1 + bl FUN_0208A6D4 + mov r0, #0x4 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A566: + bl FUN_0208A750 + cmp r0, #0x0 + beq _0208A5B0 + mov r0, #0x0 + bl FUN_021D7CA4 + mov r0, #0x5 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A57A: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0208A5B0 + add r1, r4, #0x0 + ldr r0, [r4, #0x50] + add r1, #0x48 + bl FUN_020853BC + ldr r0, [r4, #0x50] + bl FUN_020853D0 + add r0, r4, #0x0 + bl FUN_0208A400 + ldr r0, [r4, #0x0] + ldr r1, [r4, #0x50] + bl FUN_02037E80 + mov r0, #0x6 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A5A6: + ldr r0, [r4, #0x0] + bl FUN_0204647C + cmp r0, #0x0 + beq _0208A5B2 +_0208A5B0: + b _0208A6C8 +_0208A5B2: + ldr r0, [r4, #0x0] + bl FUN_0204649C + mov r0, #0x7 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A5BE: + ldr r0, [r4, #0x0] + bl FUN_020464A4 + cmp r0, #0x0 + beq _0208A6C8 + mov r0, #0x1 + bl FUN_021D7CA4 + mov r0, #0x8 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A5D4: + bl FUN_0200E308 + cmp r0, #0x0 + beq _0208A6C8 + ldr r0, [r4, #0x50] + bl FUN_020853E4 + cmp r0, #0x0 + beq _0208A5EC + mov r0, #0xb + str r0, [r4, #0x54] + b _0208A6C8 +_0208A5EC: + add r1, r4, #0x0 + ldr r0, [r4, #0x50] + add r1, #0x48 + bl FUN_020853FC + ldr r0, [r4, #0x0] + add r2, r4, #0x0 + ldr r0, [r0, #0xc] + ldr r1, [r4, #0x64] + add r2, #0x48 + bl FUN_0202A5D4 + add r0, r4, #0x0 + mov r1, #0x6 + mov r2, #0x0 + bl FUN_0208A6D4 + mov r0, #0x9 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A614: + bl FUN_0208A750 + cmp r0, #0x0 + beq _0208A6C8 + add r0, r4, #0x0 + bl FUN_0208A82C + mov r0, #0xa + str r0, [r4, #0x54] + b _0208A6C8 +_0208A628: + bl FUN_0208A8DC + mov r1, #0x0 + mvn r1, r1 + str r0, [r4, #0x64] + cmp r0, r1 + beq _0208A6C8 + cmp r0, #0x0 + beq _0208A63E + cmp r0, #0x1 + b _0208A656 +_0208A63E: + add r0, r4, #0x0 + bl FUN_0208A8D0 + add r0, r4, #0x0 + bl FUN_0208A760 + add r0, r4, #0x0 + bl FUN_0208A77C + mov r0, #0x2 + str r0, [r4, #0x54] + b _0208A6C8 +_0208A656: + add r0, r4, #0x0 + add r0, #0x48 + mov r1, #0x0 + bl FUN_02013918 + add r5, r0, #0x0 + add r0, r4, #0x0 + bl FUN_0208A8D0 + ldr r0, _0208A6CC ; =0x0000FFFF + cmp r5, r0 + beq _0208A684 + ldr r0, [r4, #0xc] + mov r1, #0x0 + add r2, r5, #0x0 + bl FUN_0200B518 + add r0, r4, #0x0 + mov r1, #0x8 + mov r2, #0x1 + bl FUN_0208A6D4 + b _0208A68E +_0208A684: + add r0, r4, #0x0 + mov r1, #0x7 + mov r2, #0x0 + bl FUN_0208A6D4 +_0208A68E: + mov r0, #0xc + str r0, [r4, #0x54] + b _0208A6C8 +_0208A694: + mov r1, #0x5 + mov r2, #0x0 + bl FUN_0208A6D4 + mov r0, #0xc + str r0, [r4, #0x54] + b _0208A6C8 +_0208A6A2: + bl FUN_0208A750 + cmp r0, #0x0 + beq _0208A6C8 + ldr r0, _0208A6D0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xf3 + tst r0, r1 + beq _0208A6C8 + add r0, r4, #0x0 + bl FUN_0208A760 + mov r0, #0xd + str r0, [r4, #0x54] + b _0208A6C8 +_0208A6C0: + bl FUN_0208A3C8 + mov r0, #0x1 + pop {r3-r5, pc} +_0208A6C8: + mov r0, #0x0 + pop {r3-r5, pc} + .balign 4 +_0208A6CC: .word 0x0000FFFF +_0208A6D0: .word 0x021C48B8 + + thumb_func_start FUN_0208A6D4 +FUN_0208A6D4: ; 0x0208A6D4 + push {r3-r5, lr} + add r5, r0, #0x0 + add r4, r5, #0x0 + add r4, #0x18 + cmp r2, #0x0 + ldr r0, [r5, #0x10] + beq _0208A6F4 + ldr r2, [r5, #0x4] + bl FUN_0200A8E0 + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0x4] + bl FUN_0200B7B8 + b _0208A6FA +_0208A6F4: + ldr r2, [r5, #0x8] + bl FUN_0200A8E0 +_0208A6FA: + add r0, r4, #0x0 + bl FUN_02019048 + cmp r0, #0x0 + bne _0208A722 + ldr r0, [r5, #0x0] + add r1, r4, #0x0 + ldr r0, [r0, #0x8] + mov r2, #0x3 + bl FUN_020545B8 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0x0 + add r0, r4, #0x0 + bl FUN_02054608 + b _0208A734 +_0208A722: + add r0, r4, #0x0 + bl FUN_0205464C + ldr r2, _0208A74C ; =0x000003E2 + add r0, r4, #0x0 + mov r1, #0x0 + mov r3, #0xa + bl FUN_0200D0BC +_0208A734: + ldr r0, [r5, #0x0] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0x0 + ldr r1, [r5, #0x8] + add r0, r4, #0x0 + mov r3, #0x1 + bl FUN_02054658 + str r0, [r5, #0x58] + pop {r3-r5, pc} + .balign 4 +_0208A74C: .word 0x000003E2 + + thumb_func_start FUN_0208A750 +FUN_0208A750: ; 0x0208A750 + ldr r0, [r0, #0x58] + ldr r3, _0208A75C ; =FUN_020546C8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx r3 + nop +_0208A75C: .word FUN_020546C8 + + thumb_func_start FUN_0208A760 +FUN_0208A760: ; 0x0208A760 + push {r4, lr} + add r4, r0, #0x0 + add r4, #0x18 + add r0, r4, #0x0 + bl FUN_02019048 + cmp r0, #0x0 + beq _0208A778 + add r0, r4, #0x0 + mov r1, #0x0 + bl FUN_0200D0E0 +_0208A778: + pop {r4, pc} + .balign 4 + + thumb_func_start FUN_0208A77C +FUN_0208A77C: ; 0x0208A77C + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r7, r5, #0x0 + add r7, #0x28 + add r0, r7, #0x0 + bl FUN_02019048 + cmp r0, #0x0 + bne _0208A808 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + mov r1, #0x3 + ldr r0, [r0, #0x8] + mov r2, #0xa5 + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0xd + str r1, [sp, #0x0] + mov r0, #0xe + str r0, [sp, #0x4] + mov r0, #0xa + str r0, [sp, #0x8] + str r1, [sp, #0xc] + mov r0, #0x1 + str r0, [sp, #0x10] + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, #0x8] + mov r2, #0x3 + mov r3, #0x11 + bl FUN_02019064 + add r0, r7, #0x0 + mov r1, #0xf + bl FUN_02019620 + mov r6, #0x0 + add r4, r6, #0x0 +_0208A7D2: + add r1, r6, #0x0 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x8] + add r1, #0x9 + bl FUN_0200A8E0 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r2, [r5, #0x8] + add r0, r7, #0x0 + mov r1, #0x0 + mov r3, #0xc + bl FUN_0201BD84 + add r6, r6, #0x1 + add r4, #0x10 + cmp r6, #0x5 + blt _0208A7D2 + mov r2, #0x0 + ldr r0, [r5, #0x14] + add r1, r7, #0x0 + add r3, r2, #0x0 + bl FUN_020136F8 +_0208A808: + str r7, [r5, #0x68] + mov r1, #0x0 + str r1, [r5, #0x5c] + mov r0, #0x5 + str r0, [r5, #0x60] + add r0, r7, #0x0 + mov r2, #0xa5 + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0208A820 +FUN_0208A820: ; 0x0208A820 + ldr r3, _0208A828 ; =FUN_0200CCF8 + add r0, #0x28 + mov r1, #0x1 + bx r3 + .balign 4 +_0208A828: .word FUN_0200CCF8 + + thumb_func_start FUN_0208A82C +FUN_0208A82C: ; 0x0208A82C + push {r4-r7, lr} + sub sp, #0x14 + add r5, r0, #0x0 + add r7, r5, #0x0 + add r7, #0x38 + add r0, r7, #0x0 + bl FUN_02019048 + cmp r0, #0x0 + bne _0208A8B8 + mov r0, #0x0 + str r0, [sp, #0x0] + mov r0, #0x20 + str r0, [sp, #0x4] + ldr r0, [r5, #0x0] + mov r1, #0x3 + ldr r0, [r0, #0x8] + mov r2, #0xa5 + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0xd + str r1, [sp, #0x0] + mov r0, #0x6 + str r0, [sp, #0x4] + mov r0, #0x4 + str r0, [sp, #0x8] + str r1, [sp, #0xc] + mov r0, #0x8d + str r0, [sp, #0x10] + ldr r0, [r5, #0x0] + add r1, r7, #0x0 + ldr r0, [r0, #0x8] + mov r2, #0x3 + mov r3, #0x19 + bl FUN_02019064 + add r0, r7, #0x0 + mov r1, #0xf + bl FUN_02019620 + mov r6, #0x0 + add r4, r6, #0x0 +_0208A882: + add r1, r6, #0x0 + ldr r0, [r5, #0x10] + ldr r2, [r5, #0x8] + add r1, #0xe + bl FUN_0200A8E0 + str r4, [sp, #0x0] + mov r0, #0xff + str r0, [sp, #0x4] + mov r0, #0x0 + str r0, [sp, #0x8] + ldr r2, [r5, #0x8] + add r0, r7, #0x0 + mov r1, #0x0 + mov r3, #0xc + bl FUN_0201BD84 + add r6, r6, #0x1 + add r4, #0x10 + cmp r6, #0x2 + blt _0208A882 + mov r2, #0x0 + ldr r0, [r5, #0x14] + add r1, r7, #0x0 + add r3, r2, #0x0 + bl FUN_020136F8 +_0208A8B8: + str r7, [r5, #0x68] + mov r1, #0x0 + str r1, [r5, #0x5c] + mov r0, #0x2 + str r0, [r5, #0x60] + add r0, r7, #0x0 + mov r2, #0xa5 + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x14 + pop {r4-r7, pc} + + thumb_func_start FUN_0208A8D0 +FUN_0208A8D0: ; 0x0208A8D0 + ldr r3, _0208A8D8 ; =FUN_0200CCF8 + add r0, #0x38 + mov r1, #0x1 + bx r3 + .balign 4 +_0208A8D8: .word FUN_0200CCF8 + + thumb_func_start FUN_0208A8DC +FUN_0208A8DC: ; 0x0208A8DC + push {r4, lr} + sub sp, #0x8 + add r4, r0, #0x0 + ldr r0, _0208A990 ; =0x021C48B8 + mov r1, #0x40 + ldr r0, [r0, #0x48] + tst r1, r0 + beq _0208A906 + ldr r0, [r4, #0x5c] + sub r0, r0, #0x1 + str r0, [r4, #0x5c] + bpl _0208A954 + ldr r0, [r4, #0x60] + cmp r0, #0x2 + ble _0208A900 + sub r0, r0, #0x1 + str r0, [r4, #0x5c] + b _0208A954 +_0208A900: + mov r0, #0x0 + str r0, [r4, #0x5c] + b _0208A954 +_0208A906: + mov r1, #0x80 + tst r1, r0 + beq _0208A928 + ldr r0, [r4, #0x5c] + add r1, r0, #0x1 + str r1, [r4, #0x5c] + ldr r0, [r4, #0x60] + cmp r1, r0 + blt _0208A954 + cmp r0, #0x2 + ble _0208A922 + mov r0, #0x0 + str r0, [r4, #0x5c] + b _0208A954 +_0208A922: + sub r0, r0, #0x1 + str r0, [r4, #0x5c] + b _0208A954 +_0208A928: + mov r1, #0x1 + tst r1, r0 + beq _0208A93A + ldr r0, _0208A994 ; =0x000005DC + bl FUN_020054C8 + add sp, #0x8 + ldr r0, [r4, #0x5c] + pop {r4, pc} +_0208A93A: + mov r1, #0x2 + tst r0, r1 + beq _0208A94E + ldr r0, _0208A994 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r4, #0x60] + add sp, #0x8 + sub r0, r0, #0x1 + pop {r4, pc} +_0208A94E: + add sp, #0x8 + sub r0, r1, #0x3 + pop {r4, pc} +_0208A954: + ldr r0, [r4, #0x68] + mov r1, #0xc + str r1, [sp, #0x0] + ldrb r1, [r0, #0x8] + mov r2, #0x0 + add r3, r2, #0x0 + lsl r1, r1, #0x13 + lsr r1, r1, #0x10 + str r1, [sp, #0x4] + mov r1, #0xf + bl FUN_020196F4 + ldr r3, [r4, #0x5c] + ldr r0, [r4, #0x14] + ldr r1, [r4, #0x68] + mov r2, #0x0 + lsl r3, r3, #0x4 + bl FUN_020136F8 + ldr r0, [r4, #0x68] + bl FUN_02019548 + ldr r0, _0208A994 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0x0 + mvn r0, r0 + add sp, #0x8 + pop {r4, pc} + nop +_0208A990: .word 0x021C48B8 +_0208A994: .word 0x000005DC + + thumb_func_start FUN_0208A998 +FUN_0208A998: ; 0x0208A998 + ldr r3, _0208A9AC ; =0x027E0000 + ldr r1, _0208A9B0 ; =0x00003FF8 + mov r0, #0x1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + ldr r3, _0208A9B4 ; =MI_WaitDma + mov r0, #0x3 + bx r3 + nop +_0208A9AC: .word 0x027E0000 +_0208A9B0: .word 0x00003FF8 +_0208A9B4: .word MI_WaitDma + + thumb_func_start FUN_0208A9B8 +FUN_0208A9B8: ; 0x0208A9B8 + push {r4-r7, lr} + sub sp, #0x24 + ldr r0, _0208ABC8 ; =0x021C8C58 + ldr r1, [r0, #0x0] + cmp r1, #0x1 + bne _0208A9C6 + b _0208ABC4 +_0208A9C6: + mov r1, #0x1 + str r1, [r0, #0x0] + mov r0, #0x0 + blx OS_GetInitArenaHi + add r1, r0, #0x0 + mov r0, #0x0 + blx OS_SetArenaHi + mov r0, #0x0 + blx OS_GetInitArenaLo + add r1, r0, #0x0 + mov r0, #0x0 + blx OS_SetArenaLo + mov r1, #0x1 + ldr r0, _0208ABCC ; =0x020FF4A4 + add r2, r1, #0x0 + mov r3, #0x0 + bl FUN_020166C8 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + mov r1, #0x0 + bl FUN_0200E3A0 + mov r0, #0x1 + blx OS_DisableIrqMask + ldr r1, _0208ABD0 ; =FUN_0208A998 + mov r0, #0x1 + blx OS_SetIrqFunction + mov r0, #0x1 + blx OS_EnableIrqMask + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F10 + mov r0, #0x0 + add r1, r0, #0x0 + bl FUN_02015F34 + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #0x1 + lsl r2, r2, #0x1a + ldr r1, [r2, #0x0] + ldr r0, _0208ABD4 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2, #0x0] + ldr r2, _0208ABD8 ; =0x04001000 + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + mov r0, #0x4 + mov r1, #0x8 + bl FUN_0201669C + ldr r0, _0208ABDC ; =0x021C4918 + mov r1, #0x0 + strb r1, [r0, #0x5] + bl FUN_0201E7A0 + ldr r3, _0208ABE0 ; =0x04000050 + mov r0, #0x0 + strh r0, [r3, #0x0] + ldr r2, _0208ABE4 ; =0x04001050 + sub r3, #0x50 + strh r0, [r2, #0x0] + ldr r1, [r3, #0x0] + ldr r0, _0208ABE8 ; =0xFFFF1FFF + sub r2, #0x50 + and r1, r0 + str r1, [r3, #0x0] + ldr r1, [r2, #0x0] + and r0, r1 + str r0, [r2, #0x0] + ldr r0, _0208ABEC ; =0x020FF4D8 + bl FUN_0201E66C + mov r0, #0x0 + bl FUN_02016B94 + str r0, [sp, #0x10] + ldr r0, _0208ABF0 ; =0x020FF4AC + bl FUN_02016BBC + mov r1, #0x0 + ldr r0, [sp, #0x10] + ldr r2, _0208ABF4 ; =0x020FF4BC + add r3, r1, #0x0 + bl FUN_02016C18 + ldr r0, [sp, #0x10] + mov r1, #0x0 + bl FUN_02018744 + mov r1, #0x0 + str r1, [sp, #0x0] + ldr r0, [sp, #0x10] + ldr r2, _0208ABF8 ; =0x000001F7 + mov r3, #0x2 + str r1, [sp, #0x4] + bl FUN_0200CB00 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + bl FUN_02002ED0 + mov r0, #0x0 + mov r1, #0x20 + add r2, r0, #0x0 + add r3, r0, #0x0 + bl FUN_02017F18 + ldr r1, _0208ABFC ; =0x00006C21 + mov r0, #0x0 + bl FUN_02017FE4 + ldr r1, _0208ABFC ; =0x00006C21 + mov r0, #0x4 + bl FUN_02017FE4 + mov r0, #0x1 + mov r1, #0x1a + mov r2, #0xc8 + mov r3, #0x0 + bl FUN_0200A86C + str r0, [sp, #0xc] + mov r0, #0x6 + lsl r0, r0, #0x6 + mov r1, #0x0 + bl FUN_020219F4 + add r4, r0, #0x0 + bl FUN_0201BD5C + ldr r0, [sp, #0x10] + ldr r2, _0208AC00 ; =0x020FF49C + add r1, sp, #0x14 + bl FUN_02019150 + mov r0, #0xd0 + str r0, [sp, #0x0] + mov r0, #0x90 + mov r2, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x14 + mov r1, #0xf + add r3, r2, #0x0 + bl FUN_020196F4 + ldr r2, _0208ABF8 ; =0x000001F7 + add r0, sp, #0x14 + mov r1, #0x0 + mov r3, #0x2 + bl FUN_0200CCA4 + ldr r0, [sp, #0xc] + mov r1, #0x3 + add r2, r4, #0x0 + bl FUN_0200A8E0 + mov r1, #0x0 + str r1, [sp, #0x0] + str r1, [sp, #0x4] + add r0, sp, #0x14 + add r2, r4, #0x0 + add r3, r1, #0x0 + str r1, [sp, #0x8] + bl FUN_0201BD84 + add r0, r4, #0x0 + bl FUN_02021A20 + bl FUN_0201E788 + mov r0, #0x0 + bl FUN_0200E394 + mov r0, #0x1 + bl FUN_0200E394 + mov r0, #0x0 + mov r1, #0x3f + mov r2, #0x3 + bl FUN_0200A274 + bl FUN_02032DAC + mov r4, #0x1 +_0208AB58: + bl FUN_02000FE8 + bl FUN_0202FB80 + bl FUN_02033678 + cmp r0, #0x0 + bne _0208AB72 + add r0, r4, #0x0 + add r1, r4, #0x0 + blx OS_WaitIrq + b _0208AB58 +_0208AB72: + ldr r5, _0208AC04 ; =0x04000130 + ldr r4, _0208AC08 ; =0x027FFFA8 + ldr r7, _0208AC0C ; =0x00002FFF + mov r6, #0x1 +_0208AB7A: + bl FUN_02000FE8 + ldrh r1, [r5, #0x0] + ldrh r0, [r4, #0x0] + orr r1, r0 + ldr r0, _0208AC0C ; =0x00002FFF + eor r0, r1 + and r0, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + tst r0, r6 + bne _0208AB9C + mov r0, #0x1 + add r1, r0, #0x0 + blx OS_WaitIrq + b _0208AB7A +_0208AB9C: + ldr r1, _0208AC10 ; =0x00007FFF + mov r0, #0x0 + bl FUN_0200E3A0 + ldr r1, _0208AC10 ; =0x00007FFF + mov r0, #0x1 + bl FUN_0200E3A0 + add r0, sp, #0x14 + bl FUN_02019178 + ldr r0, [sp, #0xc] + bl FUN_0200A8B8 + ldr r0, [sp, #0x10] + bl FUN_02016A18 + mov r0, #0x0 + blx OS_ResetSystem +_0208ABC4: + add sp, #0x24 + pop {r4-r7, pc} + .balign 4 +_0208ABC8: .word 0x021C8C58 +_0208ABCC: .word 0x020FF4A4 +_0208ABD0: .word FUN_0208A998 +_0208ABD4: .word 0xFFFFE0FF +_0208ABD8: .word 0x04001000 +_0208ABDC: .word 0x021C4918 +_0208ABE0: .word 0x04000050 +_0208ABE4: .word 0x04001050 +_0208ABE8: .word 0xFFFF1FFF +_0208ABEC: .word 0x020FF4D8 +_0208ABF0: .word 0x020FF4AC +_0208ABF4: .word 0x020FF4BC +_0208ABF8: .word 0x000001F7 +_0208ABFC: .word 0x00006C21 +_0208AC00: .word 0x020FF49C +_0208AC04: .word 0x04000130 +_0208AC08: .word 0x027FFFA8 +_0208AC0C: .word 0x00002FFF +_0208AC10: .word 0x00007FFF diff --git a/arm9/asm/unk_0208AC14.s b/arm9/asm/unk_0208AC14.s new file mode 100644 index 00000000..0adafb8b --- /dev/null +++ b/arm9/asm/unk_0208AC14.s @@ -0,0 +1,42449 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start FUN_0208AC14 +FUN_0208AC14: ; 0x0208AC14 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr +_0208AC34: + ldr r4, [r1, #0x0] + mov r0, r5 + bl FUN_0208AC58 + mov r1, r4 + cmp r4, #0x0 + bne _0208AC34 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0208AC58 +FUN_0208AC58: ; 0x0208AC58 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + mov r7, r0 + add r0, r6, #0x8 + bl FUN_02090A58 + movs r1, r0 + beq _0208AC98 + add r5, r7, #0x1c + add r4, r6, #0x8 +_0208AC80: + mov r0, r5 + bl FUN_02090AA4 + mov r0, r4 + bl FUN_02090A58 + movs r1, r0 + bne _0208AC80 +_0208AC98: + add r0, r6, #0x14 + bl FUN_02090A58 + movs r1, r0 + beq _0208ACC8 + add r5, r7, #0x1c + add r4, r6, #0x14 +_0208ACB0: + mov r0, r5 + bl FUN_02090AA4 + mov r0, r4 + bl FUN_02090A58 + movs r1, r0 + bne _0208ACB0 +_0208ACC8: + mov r1, r6 + add r0, r7, #0x4 + bl FUN_020909D8 + mov r1, r6 + add r0, r7, #0x10 + bl FUN_02090AA4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0208ACEC +FUN_0208ACEC: ; 0x0208ACEC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [r7, #0x10] + mov r6, r1 + mov r5, r2 + cmp r0, #0x0 + mov r4, #0x0 + beq _0208AD70 + add r1, sp, #0x0 + str r4, [r1, #0x0] + str r4, [r1, #0x4] + add r0, r7, #0x10 + str r4, [r1, #0x8] + bl FUN_02090A58 + ldr r1, [r7, #0x28] + add r2, sp, #0x0 + add r1, r1, r6, lsl #0x5 + mov r4, r0 + bl FUN_0208C138 +_0208AD3C: ; 0x0208AD3C + cmp r5, #0x0 + beq _0208AD4C + mov r0, r4 + blx r5 +_0208AD4C: + mov r1, r4 + add r0, r7, #0x4 + bl FUN_02090AA4 + ldr r0, [r4, #0x20] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x11 + movs r0, r0, lsr #0x1f + movne r4, #0x0 +_0208AD70: + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0208AD80 +FUN_0208AD80: ; 0x0208AD80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _0208AE44 ; =0x04000060 + mov r4, r0 + ldrh r0, [r2, #0x0] + bic r0, r0, #0x3000 + orr r0, r0, #0x8 + strh r0, [r2, #0x0] + str r1, [r4, #0x44] + ldr r0, [r4, #0x38] + mov r0, r0, lsl #0x7 + movs r0, r0, lsr #0x1f + bne _0208ADFC + ldr r5, [r4, #0x4] + cmp r5, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr +_0208ADC8: + str r5, [r4, #0x40] + ldr r0, [r5, #0x24] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1f + bne _0208ADE4 + mov r0, r4 + bl FUN_0208B6A0 +_0208ADE4: + ldr r5, [r5, #0x0] + cmp r5, #0x0 + bne _0208ADC8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_0208ADFC: + ldr r5, [r4, #0xc] + cmp r5, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr +_0208AE10: + str r5, [r4, #0x40] + ldr r0, [r5, #0x24] + mov r0, r0, lsl #0x1c + movs r0, r0, lsr #0x1f + bne _0208AE2C + mov r0, r4 + bl FUN_0208B6A0 +_0208AE2C: + ldr r5, [r5, #0x4] + cmp r5, #0x0 + bne _0208AE10 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0208AE44: .word 0x04000060 + + arm_func_start FUN_0208AE48 +FUN_0208AE48: ; 0x0208AE48 + stmdb sp!, {r4-r10,lr} + mov r8, r0 + ldr r7, [r8, #0x4] + cmp r7, #0x0 + beq _0208AF5C + add r10, r8, #0x4 + add r9, r8, #0x10 + mov r4, #0x0 +_0208AE68: + ldr r2, [r7, #0x24] + ldr r1, [r7, #0x20] + mov r0, r2, lsl #0x1b + movs r0, r0, lsr #0x1f + ldr r5, [r1, #0x0] + ldr r6, [r7, #0x0] + bne _0208AE9C + ldrh r1, [r7, #0x4c] + ldrh r0, [r5, #0x32] + cmp r1, r0 + orrcs r0, r2, #0x10 + strcs r0, [r7, #0x24] + strcsh r4, [r7, #0x4c] +_0208AE9C: + ldr r0, [r7, #0x24] + mov r0, r0, lsl #0x1d + movs r0, r0, lsr #0x1f + bne _0208AED8 + ldr r0, [r7, #0x80] + mov r0, r0, lsl #0xd + movs r0, r0, lsr #0x1d + beq _0208AECC + ldrh r1, [r8, #0x48] + sub r0, r0, #0x1 + cmp r1, r0 + bne _0208AED8 +_0208AECC: + mov r0, r8 + mov r1, r7 + bl FUN_0208B8F0 +_0208AED8: + ldr r0, [r5, #0x0] + mov r0, r0, lsl #0x11 + movs r0, r0, lsr #0x1f + beq _0208AF10 + ldrh r1, [r5, #0x3c] + cmp r1, #0x0 + beq _0208AF10 + ldr r0, [r7, #0x24] + mov r0, r0, lsl #0x1b + movs r0, r0, lsr #0x1f + beq _0208AF10 + ldrh r0, [r7, #0x4c] + cmp r0, r1 + bhi _0208AF20 +_0208AF10: + ldr r0, [r7, #0x24] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + beq _0208AF50 +_0208AF20: + ldr r0, [r7, #0xc] + cmp r0, #0x0 + bne _0208AF50 + ldr r0, [r7, #0x18] + cmp r0, #0x0 + bne _0208AF50 + mov r0, r10 + mov r1, r7 + bl FUN_020909D8 + mov r1, r0 + mov r0, r9 + bl FUN_02090AA4 +_0208AF50: + mov r7, r6 + cmp r6, #0x0 + bne _0208AE68 +_0208AF5C: + ldrh r0, [r8, #0x48] + add r0, r0, #0x1 + strh r0, [r8, #0x48] + ldrh r0, [r8, #0x48] + cmp r0, #0x1 + movhi r0, #0x0 + strhih r0, [r8, #0x48] + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start FUN_0208AF80 +FUN_0208AF80: ; 0x0208AF80 + ldr ip, _0208AF8C ; =FUN_0208AFA8 + ldr r1, _0208AF90 ; =FUN_0208B630 + bx r12 + .balign 4 +_0208AF8C: .word FUN_0208AFA8 +_0208AF90: .word FUN_0208B630 + + arm_func_start FUN_0208AF94 +FUN_0208AF94: ; 0x0208AF94 + ldr ip, _0208AFA0 ; =FUN_0208B05C + ldr r1, _0208AFA4 ; =FUN_0208B668 + bx r12 + .balign 4 +_0208AFA0: .word FUN_0208B05C +_0208AFA4: .word FUN_0208B668 + + arm_func_start FUN_0208AFA8 +FUN_0208AFA8: ; 0x0208AFA8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + mov r11, r1 + bl GX_BeginLoadTexPltt + ldrh r0, [r10, #0x32] + mov r9, #0x0 + cmp r0, #0x0 + ble _0208B048 + mov r0, #0x1 + mov r5, r9 + mov r4, r9 + str r0, [sp, #0x0] +_0208AFDC: + ldr r0, [r10, #0x2c] + mov r6, r4 + ldr r7, [r0, r5] + add r8, r0, r5 + ldr r0, [r7, #0x10] + cmp r0, #0x0 + beq _0208B030 + ldr r1, [r7, #0x4] + mov r1, r1, lsl #0x1c + mov r1, r1, lsr #0x1c + cmp r1, #0x2 + ldreq r1, [sp, #0x0] + movne r1, r4 + blx r11 + mov r6, r0 + ldr r1, [r8, #0x0] + ldr r0, [r7, #0xc] + ldr r2, [r7, #0x10] + add r0, r1, r0 + mov r1, r6 + bl GX_LoadTexPltt +_0208B030: + str r6, [r8, #0x8] + ldrh r0, [r10, #0x32] + add r9, r9, #0x1 + add r5, r5, #0x14 + cmp r9, r0 + blt _0208AFDC +_0208B048: + bl GX_EndLoadTexPltt + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_0208B05C +FUN_0208B05C: ; 0x0208B05C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + mov r11, r1 + bl GX_BeginLoadTex + ldrh r0, [r10, #0x32] + mov r9, #0x0 + cmp r0, #0x0 + ble _0208B114 + mov r0, #0x1 + mov r6, r9 + str r9, [sp, #0x4] + str r0, [sp, #0x0] + mov r4, #0x14 +_0208B094: + ldr r2, [r10, #0x2c] + ldr r7, [r2, r6] + add r8, r2, r6 + ldr r0, [r7, #0x4] + mov r1, r0, lsl #0xe + movs r1, r1, lsr #0x1f + beq _0208B0C8 + mov r0, r0, lsl #0x6 + mov r1, r0, lsr #0x18 + mla r0, r1, r4, r2 + ldr r0, [r0, #0x4] + str r0, [r8, #0x4] + b _0208B100 +_0208B0C8: + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1c + cmp r0, #0x5 + ldreq r1, [sp, #0x0] + ldr r0, [r7, #0x8] + ldrne r1, [sp, #0x4] + blx r11 + mov r5, r0 + ldr r0, [r8, #0x0] + ldr r2, [r7, #0x8] + add r0, r0, #0x20 + mov r1, r5 + bl GX_LoadTex + str r5, [r8, #0x4] +_0208B100: + ldrh r0, [r10, #0x32] + add r9, r9, #0x1 + add r6, r6, #0x14 + cmp r9, r0 + blt _0208B094 +_0208B114: + bl GX_EndLoadTex + mov r0, #0x1 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_0208B128 +FUN_0208B128: ; 0x0208B128 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x2c + mov r9, r1 + ldrh r1, [r9, #0x8] + mov r10, r0 + mov r8, #0x20 + strh r1, [r10, #0x30] + ldrh r0, [r9, #0xa] + strh r0, [r10, #0x32] + ldrh r0, [r10, #0x30] + ldr r1, [r10, #0x0] + mov r0, r0, lsl #0x5 + blx r1 + str r0, [r10, #0x28] + ldrh r2, [r10, #0x30] + ldr r0, [r10, #0x28] + mov r1, #0x0 + mov r2, r2, lsl #0x5 + bl MI_CpuFill8 + ldrh r1, [r10, #0x30] + mov r0, #0x0 + str r0, [sp, #0x0] + cmp r1, #0x0 + ble _0208B3C8 + mov r6, r0 + str r0, [sp, #0x10] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] +_0208B1A4: + ldr r1, [r10, #0x28] + add r0, r9, r8 + str r0, [r1, r6] + ldr r0, [r1, r6] + add r8, r8, #0x58 + ldr r0, [r0, #0x0] + add r7, r1, r6 + str r0, [sp, #0x28] + mov r0, r0, lsl #0x17 + movs r0, r0, lsr #0x1f + addne r0, r9, r8 + strne r0, [r7, #0x4] + ldreq r0, [sp, #0x10] + addne r8, r8, #0xc + streq r0, [r7, #0x4] + ldr r0, [sp, #0x28] + mov r0, r0, lsl #0x16 + movs r0, r0, lsr #0x1f + addne r0, r9, r8 + strne r0, [r7, #0x8] + ldreq r0, [sp, #0x14] + addne r8, r8, #0xc + streq r0, [r7, #0x8] + ldr r0, [sp, #0x28] + mov r0, r0, lsl #0x15 + movs r0, r0, lsr #0x1f + addne r0, r9, r8 + strne r0, [r7, #0xc] + ldreq r0, [sp, #0x18] + addne r8, r8, #0x8 + streq r0, [r7, #0xc] + ldr r0, [sp, #0x28] + mov r0, r0, lsl #0x14 + movs r0, r0, lsr #0x1f + addne r0, r9, r8 + strne r0, [r7, #0x10] + ldreq r0, [sp, #0x1c] + addne r8, r8, #0xc + streq r0, [r7, #0x10] + ldr r0, [sp, #0x28] + mov r0, r0, lsl #0xf + movs r0, r0, lsr #0x1f + addne r0, r9, r8 + strne r0, [r7, #0x14] + ldreq r0, [sp, #0x20] + addne r8, r8, #0x14 + streq r0, [r7, #0x14] + ldr r0, [sp, #0x28] + mov r1, r0, lsl #0x7 + mov r2, r0, lsl #0x6 + mov r5, r1, lsr #0x1f + mov r4, r2, lsr #0x1f + add r1, r5, r2, lsr #0x1f + mov r2, r0, lsl #0x5 + add r1, r1, r2, lsr #0x1f + mov r3, r0, lsl #0x4 + mov r11, r2, lsr #0x1f + add r2, r1, r3, lsr #0x1f + mov r1, r3, lsr #0x1f + mov r12, r0, lsl #0x3 + str r1, [sp, #0x4] + mov r3, r0, lsl #0x2 + mov r0, r12, lsr #0x1f + add r1, r2, r12, lsr #0x1f + str r0, [sp, #0x8] + add r0, r1, r3, lsr #0x1f + strh r0, [r7, #0x1c] + mov r0, r3, lsr #0x1f + str r0, [sp, #0xc] + ldrh r0, [r7, #0x1c] + cmp r0, #0x0 + beq _0208B3A4 + mov r0, r0, lsl #0x3 + ldr r1, [r10, #0x0] + blx r1 + str r0, [r7, #0x18] + cmp r5, #0x0 + ldr r0, [r7, #0x18] + beq _0208B2F8 + add r1, r9, r8 + str r1, [r0, #0x4] + ldr r1, _0208B488 ; =FUN_020909A4 + add r8, r8, #0x8 + str r1, [r0, #0x0] + add r0, r0, #0x8 +_0208B2F8: + cmp r4, #0x0 + beq _0208B318 + add r1, r9, r8 + str r1, [r0, #0x4] + ldr r1, _0208B48C ; =FUN_020908DC + add r8, r8, #0x8 + str r1, [r0, #0x0] + add r0, r0, #0x8 +_0208B318: + cmp r11, #0x0 + beq _0208B338 + add r1, r9, r8 + str r1, [r0, #0x4] + ldr r1, _0208B490 ; =FUN_02090858 + add r8, r8, #0x10 + str r1, [r0, #0x0] + add r0, r0, #0x8 +_0208B338: + ldr r1, [sp, #0x4] + cmp r1, #0x0 + beq _0208B35C + add r1, r9, r8 + str r1, [r0, #0x4] + ldr r1, _0208B494 ; =FUN_02090780 + add r8, r8, #0x4 + str r1, [r0, #0x0] + add r0, r0, #0x8 +_0208B35C: + ldr r1, [sp, #0x8] + cmp r1, #0x0 + beq _0208B380 + add r1, r9, r8 + str r1, [r0, #0x4] + ldr r1, _0208B498 ; =FUN_02090664 + add r8, r8, #0x8 + str r1, [r0, #0x0] + add r0, r0, #0x8 +_0208B380: + ldr r1, [sp, #0xc] + cmp r1, #0x0 + beq _0208B3AC + add r1, r9, r8 + str r1, [r0, #0x4] + ldr r1, _0208B49C ; =FUN_020905D0 + add r8, r8, #0x10 + str r1, [r0, #0x0] + b _0208B3AC +_0208B3A4: + ldr r0, [sp, #0x24] + str r0, [r7, #0x18] +_0208B3AC: + ldr r0, [sp, #0x0] + ldrh r1, [r10, #0x30] + add r0, r0, #0x1 + add r6, r6, #0x20 + str r0, [sp, #0x0] + cmp r0, r1 + blt _0208B1A4 +_0208B3C8: + ldrh r2, [r10, #0x32] + mov r0, #0x14 + ldr r1, [r10, #0x0] + mul r0, r2, r0 + blx r1 + str r0, [r10, #0x2c] + ldrh r3, [r10, #0x32] + mov r1, #0x14 + ldr r0, [r10, #0x2c] + mul r2, r3, r1 + mov r1, #0x0 + bl MI_CpuFill8 + ldrh r0, [r10, #0x32] + mov r3, #0x0 + cmp r0, #0x0 + addle sp, sp, #0x2c + ldmleia sp!, {r4-r11,lr} + bxle lr + mov r4, r3 + mov r0, #0x1 +_0208B418: + ldr r2, [r10, #0x2c] + add r1, r9, r8 + str r1, [r2, r4] + ldr r5, [r1, #0x4] + add r2, r2, r4 + mov r5, r5, lsl #0x18 + mov r5, r5, lsr #0x1c + add r5, r5, #0x3 + mov r5, r0, lsl r5 + strh r5, [r2, #0x10] + ldr r5, [r1, #0x4] + add r3, r3, #0x1 + mov r5, r5, lsl #0x14 + mov r5, r5, lsr #0x1c + add r5, r5, #0x3 + mov r5, r0, lsl r5 + strh r5, [r2, #0x12] + ldr r5, [r1, #0x4] + add r4, r4, #0x14 + str r5, [r2, #0xc] + ldrh r2, [r10, #0x32] + ldr r1, [r1, #0x1c] + cmp r3, r2 + add r8, r8, r1 + blt _0208B418 + add sp, sp, #0x2c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0208B488: .word FUN_020909A4 +_0208B48C: .word FUN_020908DC +_0208B490: .word FUN_02090858 +_0208B494: .word FUN_02090780 +_0208B498: .word FUN_02090664 +_0208B49C: .word FUN_020905D0 + + arm_func_start FUN_0208B4A0 +FUN_0208B4A0: ; 0x0208B4A0 + stmdb sp!, {r4-r10,lr} + mov r8, r0 + mov r0, #0x4c + mov r7, r1 + mov r6, r2 + mov r4, r3 + blx r8 + mov r5, r0 + mov r1, #0x0 + mov r2, #0x4c + bl MI_CpuFill8 + strh r7, [r5, #0x34] + strh r6, [r5, #0x36] + ldrh r0, [sp, #0x20] + and r2, r4, #0x3f + ldr r1, [r5, #0x38] + and r0, r0, #0x3f + bic r1, r1, #0x3f + orr r0, r1, r0 + str r0, [r5, #0x38] + ldrh r0, [sp, #0x24] + ldr r3, [r5, #0x38] + mov r1, #0x0 + bic r3, r3, #0xfc0 + and r0, r0, #0x3f + orr r0, r3, r0, lsl #0x6 + str r0, [r5, #0x38] + ldr r3, [r5, #0x38] + mov r0, #0x9c + mul r4, r7, r0 + bic r12, r3, #0x3f000 + mov r0, r3, lsl #0x1a + mov r0, r0, lsr #0x1a + and r0, r0, #0x3f + orr r0, r12, r0, lsl #0xc + str r0, [r5, #0x38] + ldr r3, [r5, #0x38] + mov r0, r4 + bic r3, r3, #0xfc0000 + orr r2, r3, r2, lsl #0x12 + str r2, [r5, #0x38] + ldr r2, [r5, #0x38] + bic r2, r2, #0x1000000 + str r2, [r5, #0x38] + ldr r2, [r5, #0x38] + bic r2, r2, #0xfe000000 + str r2, [r5, #0x38] + str r8, [r5, #0x0] + str r1, [r5, #0x8] + str r1, [r5, #0x14] + str r1, [r5, #0x20] + str r1, [r5, #0x4] + str r1, [r5, #0x10] + str r1, [r5, #0x1c] + str r1, [r5, #0x3c] + strh r1, [r5, #0x48] + blx r8 + mov r2, r4 + mov r9, r0 + mov r1, #0x0 + bl MI_CpuFill8 +_0208B594: ; 0x0208B594 + cmp r7, #0x0 + mov r10, #0x0 + ble _0208B5C0 + add r4, r5, #0x10 +_0208B5A4: + mov r0, r4 + mov r1, r9 + bl FUN_02090AA4 + add r10, r10, #0x1 + cmp r10, r7 + add r9, r9, #0x9c + blt _0208B5A4 +_0208B5C0: + mov r0, #0x44 + mul r4, r6, r0 + mov r0, r4 + blx r8 + mov r2, r4 + mov r1, #0x0 + mov r8, r0 + bl MI_CpuFill8 +_0208B5E0: ; 0x0208B5E0 + cmp r6, #0x0 + mov r7, #0x0 + ble _0208B60C + add r4, r5, #0x1c +_0208B5F0: + mov r0, r4 + mov r1, r8 + bl FUN_02090AA4 + add r7, r7, #0x1 + cmp r7, r6 + add r8, r8, #0x44 + blt _0208B5F0 +_0208B60C: + mov r0, #0x0 + str r0, [r5, #0x28] + str r0, [r5, #0x2c] + strh r0, [r5, #0x32] + ldrh r1, [r5, #0x32] + mov r0, r5 + strh r1, [r5, #0x30] + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start FUN_0208B630 +FUN_0208B630: ; 0x0208B630 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _0208B660 ; =0x021064C0 + mov r2, #0x0 + ldr r3, [r3, #0x0] + blx r3 + ldr r1, _0208B664 ; =0x0000FFFF + and r0, r0, r1 + mov r0, r0, lsl #0x3 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0208B660: .word 0x021064C0 +_0208B664: .word 0x0000FFFF + + arm_func_start FUN_0208B668 +FUN_0208B668: ; 0x0208B668 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _0208B698 ; =0x021064B8 + mov r2, #0x0 + ldr r3, [r3, #0x0] + blx r3 + ldr r1, _0208B69C ; =0x0000FFFF + and r0, r0, r1 + mov r0, r0, lsl #0x3 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0208B698: .word 0x021064B8 +_0208B69C: .word 0x0000FFFF + + arm_func_start FUN_0208B6A0 +FUN_0208B6A0: ; 0x0208B6A0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r1, [r4, #0x40] + ldr r1, [r1, #0x20] + ldr r5, [r1, #0x0] + ldr r1, [r5, #0x0] + mov r2, r1, lsl #0xa + movs r2, r2, lsr #0x1f + beq _0208B6F8 + bl FUN_0208B71C +_0208B6CC: ; 0x0208B6CC + ldr r0, [r5, #0x0] + mov r0, r0, lsl #0x9 + movs r0, r0, lsr #0x1f + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r4 + bl FUN_0208B804 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_0208B6F8: + mov r1, r1, lsl #0x9 + movs r1, r1, lsr #0x1f + bne _0208B708 + bl FUN_0208B804 +_0208B708: + mov r0, r4 + bl FUN_0208B71C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0208B71C +FUN_0208B71C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r6, [r7, #0x40] + mov r4, #0x0 + ldr r5, [r6, #0x20] + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0xf + movs r0, r0, lsr #0x1f + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, [r5, #0x14] + ldr r2, [r7, #0x2c] + ldrb r1, [r0, #0xf] + mov r0, #0x14 + mla r0, r1, r0, r2 + bl FUN_0208C408 + ldr r0, [r5, #0x14] + ldrh r0, [r0, #0x0] + mov r0, r0, lsl #0x17 + mov r0, r0, lsr #0x1e + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _0208B7BC +_0208B784: + b _0208B798 +_0208B788: + b _0208B7A0 +_0208B78C: + b _0208B7A8 +_0208B790: + b _0208B7B0 +_0208B794: + b _0208B7B8 +_0208B798: + ldr r4, _0208B7F4 ; =FUN_0208E258 + b _0208B7BC +_0208B7A0: + ldr r4, _0208B7F8 ; =FUN_0208D490 + b _0208B7BC +_0208B7A8: + ldr r4, _0208B7FC ; =FUN_0208CDF0 + b _0208B7BC +_0208B7B0: + ldr r4, _0208B800 ; =FUN_0208C4F4 + b _0208B7BC +_0208B7B8: + ldr r4, _0208B800 ; =FUN_0208C4F4 +_0208B7BC: + ldr r5, [r6, #0x14] + cmp r5, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr +_0208B7D0: + mov r0, r7 + mov r1, r5 + blx r4 + ldr r5, [r5, #0x0] + cmp r5, #0x0 + bne _0208B7D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0208B7F4: .word FUN_0208E258 +_0208B7F8: .word FUN_0208D490 +_0208B7FC: .word FUN_0208CDF0 +_0208B800: .word FUN_0208C4F4 + + arm_func_start FUN_0208B804 +FUN_0208B804: ; 0x0208B804 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r6, [r7, #0x40] + ldr r2, [r7, #0x2c] + ldr r1, [r6, #0x20] + mov r0, #0x14 + ldr r5, [r1, #0x0] + mov r4, #0x0 + ldrb r1, [r5, #0x47] + mla r0, r1, r0, r2 + bl FUN_0208C408 +_0208B830: ; 0x0208B830 + ldr r0, [r5, #0x0] + mov r0, r0, lsl #0x1a + mov r0, r0, lsr #0x1e + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _0208B880 +_0208B848: + b _0208B85C +_0208B84C: + b _0208B864 +_0208B850: + b _0208B86C +_0208B854: + b _0208B874 +_0208B858: + b _0208B87C +_0208B85C: + ldr r4, _0208B8D8 ; =FUN_0208E6AC + b _0208B880 +_0208B864: + ldr r4, _0208B8DC ; =FUN_0208DB70 + b _0208B880 +_0208B86C: + ldr r4, _0208B8E0 ; =FUN_0208D140 + b _0208B880 +_0208B874: + ldr r4, _0208B8E4 ; =FUN_0208C974 + b _0208B880 +_0208B87C: + ldr r4, _0208B8E4 ; =FUN_0208C974 +_0208B880: + ldr r0, [r5, #0x0] + ldr r8, [r6, #0x8] + mov r0, r0, lsl #0x14 + movs r0, r0, lsr #0x1f + ldrne r5, _0208B8E8 ; =FUN_0208C408 + ldreq r5, _0208B8EC ; =FUN_0208C404 + cmp r8, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r6, #0x14 +_0208B8A8: + ldrb r1, [r8, #0x2c] + ldr r0, [r7, #0x2c] + mla r0, r1, r6, r0 + blx r5 + mov r0, r7 + mov r1, r8 + blx r4 + ldr r8, [r8, #0x0] + cmp r8, #0x0 + bne _0208B8A8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208B8D8: .word FUN_0208E6AC +_0208B8DC: .word FUN_0208DB70 +_0208B8E0: .word FUN_0208D140 +_0208B8E4: .word FUN_0208C974 +_0208B8E8: .word FUN_0208C408 +_0208B8EC: .word FUN_0208C404 + + arm_func_start FUN_0208B8F0 +FUN_0208B8F0: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x74 + mov r9, r1 + ldr r8, [r9, #0x20] + mov r10, r0 + ldr r0, [r8, #0x14] + ldr r4, [r8, #0x0] + str r0, [sp, #0x4] + ldr r0, [r4, #0x0] + mov r6, #0x0 + str r0, [sp, #0x24] + ldrb r0, [r4, #0x46] + ldr r2, [r9, #0x90] + ldrh r7, [r8, #0x1c] + add r0, r0, #0x180 + cmp r2, #0x0 + str r0, [sp, #0x8] + beq _0208B944 + mov r0, r9 + mov r1, r6 + blx r2 +_0208B944: + ldrh r1, [r4, #0x3c] + cmp r1, #0x0 + beq _0208B95C + ldrh r0, [r9, #0x4c] + cmp r0, r1 + bhs _0208B9A4 +_0208B95C: + ldrh r0, [r9, #0x4c] + ldrb r1, [r9, #0x80] + bl _s32_div_f +_0208B968: ; 0x0208B968 + cmp r1, #0x0 + bne _0208B9A4 + ldr r1, [r9, #0x24] + mov r0, r1, lsl #0x1f + movs r0, r0, lsr #0x1f + bne _0208B9A4 + mov r0, r1, lsl #0x1e + movs r0, r0, lsr #0x1f + bne _0208B9A4 + mov r0, r1, lsl #0x1b + movs r0, r0, lsr #0x1f + beq _0208B9A4 + mov r0, r9 + add r1, r10, #0x1c + bl FUN_0208F07C +_0208B9A4: + ldr r0, [sp, #0x24] + mov r0, r0, lsl #0x17 + movs r0, r0, lsr #0x1f + beq _0208B9D4 + ldr r0, _0208C120 ; =FUN_02090540 + add r6, r6, #0x1 + str r0, [sp, #0x28] + ldr r0, [r8, #0x4] + ldrh r0, [r0, #0x8] + mov r0, r0, lsl #0x1f + mov r0, r0, lsr #0x1f + str r0, [sp, #0x2c] +_0208B9D4: + ldr r0, [sp, #0x24] + mov r0, r0, lsl #0x16 + movs r0, r0, lsr #0x1f + beq _0208BA20 + ldr r3, [r8, #0x8] + ldrh r0, [r3, #0x8] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + bne _0208BA20 + ldr r2, _0208C124 ; =FUN_02090374 + add r1, sp, #0x28 + str r2, [r1, r6, lsl #0x3] + ldrh r1, [r3, #0x8] + mov r2, r6, lsl #0x3 + add r0, sp, #0x2c + mov r1, r1, lsl #0x1e + mov r1, r1, lsr #0x1f + add r6, r6, #0x1 + str r1, [r0, r2] +_0208BA20: + ldr r0, [sp, #0x24] + mov r0, r0, lsl #0x15 + movs r0, r0, lsr #0x1f + beq _0208BA5C + ldr r2, _0208C128 ; =FUN_02090298 + add r1, sp, #0x28 + str r2, [r1, r6, lsl #0x3] + ldr r1, [r8, #0xc] + mov r2, r6, lsl #0x3 + ldrh r1, [r1, #0x2] + add r0, sp, #0x2c + add r6, r6, #0x1 + mov r1, r1, lsl #0x17 + mov r1, r1, lsr #0x1f + str r1, [r0, r2] +_0208BA5C: + ldr r0, [sp, #0x24] + mov r0, r0, lsl #0x14 + movs r0, r0, lsr #0x1f + beq _0208BAA4 + ldr r3, [r8, #0x10] + ldr r0, [r3, #0x8] + mov r0, r0, lsl #0xf + movs r0, r0, lsr #0x1f + bne _0208BAA4 + ldr r2, _0208C12C ; =FUN_02090234 + add r1, sp, #0x28 + str r2, [r1, r6, lsl #0x3] + ldr r1, [r3, #0x8] + add r0, sp, #0x2c + mov r1, r1, lsl #0xe + mov r1, r1, lsr #0x1f + str r1, [r0, r6, lsl #0x3] + add r6, r6, #0x1 +_0208BAA4: + ldr r4, [r9, #0x8] + cmp r4, #0x0 + beq _0208BDE0 + ldr r0, [sp, #0x24] + add r11, sp, #0x28 + mov r2, r0, lsl #0x10 + mov r1, r0, lsl #0xf + mov r0, r2, lsr #0x1f + str r0, [sp, #0xc] + mov r0, r1, lsr #0x1f + str r0, [sp, #0x10] + mov r0, #0x0 + str r0, [sp, #0x18] +_0208BAD8: + ldr r0, [r4, #0x0] + ldrh r1, [r4, #0x2a] + str r0, [sp, #0x0] + ldrh r0, [r4, #0x26] + cmp r6, #0x0 + ldr r5, [sp, #0x18] + mul r2, r1, r0 + mov r1, r2, asr #0x8 + strb r1, [sp, #0x20] + ldrh r1, [r4, #0x28] + ldrb r2, [r4, #0x2d] + mul r0, r1, r0 + add r0, r2, r0, asr #0x8 + strb r0, [sp, #0x21] + ble _0208BB40 +_0208BB14: + add r2, r11, r5, lsl #0x3 + ldr r12, [r2, #0x4] + add r2, sp, #0x20 + ldrb r2, [r2, r12] + ldr r3, [r11, r5, lsl #0x3] + mov r0, r4 + mov r1, r8 + blx r3 + add r5, r5, #0x1 + cmp r5, r6 + blt _0208BB14 +_0208BB40: + ldr r0, [sp, #0x18] + ldr r5, [sp, #0x18] + str r0, [sp, #0x70] + str r0, [sp, #0x6c] + str r0, [sp, #0x68] + ldr r0, [sp, #0xc] + cmp r0, #0x0 + addne r0, r9, #0x28 + addne r3, r4, #0x38 + ldmneia r0, {r0-r2} + stmneia r3, {r0-r2} + cmp r7, #0x0 + ble _0208BBA0 +_0208BB74: + ldr r2, [r8, #0x18] + mov r1, r4 + add r0, r2, r5, lsl #0x3 + ldr r12, [r2, r5, lsl #0x3] + ldr r0, [r0, #0x4] + add r2, sp, #0x68 + mov r3, r9 + blx r12 + add r5, r5, #0x1 + cmp r5, r7 + blt _0208BB74 +_0208BBA0: + ldr r0, [sp, #0x10] + ldrh r1, [r4, #0x20] + cmp r0, #0x0 + ldrsh r0, [r4, #0x22] + add r0, r1, r0 + strh r0, [r4, #0x20] + ldr r1, [r4, #0x14] + ldr r0, [sp, #0x8] + mul r0, r1, r0 + mov r0, r0, asr #0x9 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [sp, #0x8] + mul r0, r1, r0 + mov r0, r0, asr #0x9 + str r0, [r4, #0x18] + ldr r1, [r4, #0x1c] + ldr r0, [sp, #0x8] + mul r0, r1, r0 + mov r0, r0, asr #0x9 + str r0, [r4, #0x1c] + ldr r1, [r4, #0x14] + ldr r0, [sp, #0x68] + add r0, r1, r0 + str r0, [r4, #0x14] + ldr r1, [r4, #0x18] + ldr r0, [sp, #0x6c] + add r0, r1, r0 + str r0, [r4, #0x18] + ldr r1, [r4, #0x1c] + ldr r0, [sp, #0x70] + add r0, r1, r0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0x14] + ldr r0, [r9, #0x34] + ldr r2, [r4, #0x8] + add r0, r1, r0 + add r0, r2, r0 + str r0, [r4, #0x8] + ldr r1, [r4, #0x18] + ldr r0, [r9, #0x38] + ldr r2, [r4, #0xc] + add r0, r1, r0 + add r0, r2, r0 + str r0, [r4, #0xc] + ldr r1, [r4, #0x1c] + ldr r0, [r9, #0x3c] + ldr r2, [r4, #0x10] + add r0, r1, r0 + add r0, r2, r0 + str r0, [r4, #0x10] + beq _0208BCD8 + ldr r0, [sp, #0x4] + ldrh r2, [r4, #0x24] + ldrb r1, [r0, #0xd] + ldrh r3, [r4, #0x26] + mov r2, r2, lsl #0xc + mov r1, r1, lsl #0xc + mov r0, r3, lsl #0xc + smull r5, r3, r2, r1 + mov r1, #0x800 + adds r2, r5, r1 + adc r1, r3, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mov r1, r2, asr #0x8 + subs r0, r0, r1 + bmi _0208BCD8 + ldr r1, [sp, #0x4] + mov r0, r0, asr #0xc + ldrb r1, [r1, #0xe] + bl _s32_div_f +_0208BCC0: ; 0x0208BCC0 + cmp r1, #0x0 + bne _0208BCD8 + mov r0, r4 + mov r1, r9 + add r2, r10, #0x1c + bl FUN_0208ED5C +_0208BCD8: + ldr r0, [r9, #0x20] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x1 + movs r0, r0, lsr #0x1f + beq _0208BD1C + ldrh r0, [r4, #0x2e] + ldr r1, [r10, #0x38] + bic r0, r0, #0xfc00 + mov r1, r1, lsl #0x8 + mov r1, r1, lsr #0x1a + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + and r1, r1, #0x3f + orr r0, r0, r1, lsl #0xa + strh r0, [r4, #0x2e] + b _0208BD9C +_0208BD1C: + ldrh r0, [r4, #0x2e] + ldr r2, [r10, #0x38] + add r1, r10, #0x38 + bic r0, r0, #0xfc00 + mov r2, r2, lsl #0xe + mov r2, r2, lsr #0x1a + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + and r2, r2, #0x3f + orr r0, r0, r2, lsl #0xa + strh r0, [r4, #0x2e] + ldr r2, [r10, #0x38] + bic r0, r2, #0x3f000 + mov r2, r2, lsl #0xe + mov r2, r2, lsr #0x1a + add r2, r2, #0x1 + and r2, r2, #0x3f + orr r0, r0, r2, lsl #0xc + str r0, [r10, #0x38] + ldr r2, [r10, #0x38] + mov r0, r2, lsl #0xe + mov r3, r0, lsr #0x1a + mov r0, r2, lsl #0x14 + cmp r3, r0, lsr #0x1a + bls _0208BD9C + mov r0, r2, lsl #0x1a + mov r0, r0, lsr #0x1a + and r0, r0, #0x3f + ldr r2, [r1, #0x0] + bic r2, r2, #0x3f000 + orr r0, r2, r0, lsl #0xc + str r0, [r1, #0x0] +_0208BD9C: + ldrh r0, [r4, #0x26] + add r0, r0, #0x1 + strh r0, [r4, #0x26] + ldrh r1, [r4, #0x26] + ldrh r0, [r4, #0x24] + cmp r1, r0 + bls _0208BDD0 + mov r1, r4 + add r0, r9, #0x8 + bl FUN_020909D8 + mov r1, r0 + add r0, r10, #0x1c + bl FUN_02090AA4 +_0208BDD0: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + mov r4, r0 + bne _0208BAD8 +_0208BDE0: + ldr r0, [sp, #0x24] + mov r0, r0, lsl #0xf + movs r0, r0, lsr #0x1f + beq _0208C0E8 + ldr r0, [sp, #0x4] + mov r6, #0x0 + ldrh r0, [r0, #0x0] + mov r0, r0, lsl #0x1e + movs r0, r0, lsr #0x1f + ldrne r0, _0208C130 ; =FUN_020901E8 + strne r6, [sp, #0x4c] + strne r0, [sp, #0x48] + ldr r0, [sp, #0x4] + addne r6, r6, #0x1 + ldrh r0, [r0, #0x0] + mov r0, r0, lsl #0x1d + movs r0, r0, lsr #0x1f + beq _0208BE44 + ldr r2, _0208C134 ; =FUN_02090190 + add r1, sp, #0x48 + str r2, [r1, r6, lsl #0x3] + add r0, sp, #0x4c + mov r1, #0x0 + str r1, [r0, r6, lsl #0x3] + add r6, r6, #0x1 +_0208BE44: + ldr r0, [sp, #0x4] + ldr r5, [r9, #0x14] + ldrh r0, [r0, #0x0] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + moveq r7, #0x0 + cmp r5, #0x0 + beq _0208C0E8 + mov r0, #0x0 + str r0, [sp, #0x1c] +_0208BE6C: + ldrh r2, [r5, #0x26] + ldr r0, [r5, #0x0] + ldrh r1, [r5, #0x24] + str r0, [sp, #0x14] + mov r0, r2, lsl #0x8 + bl _s32_div_f + ldr r4, [sp, #0x1c] + strb r0, [sp, #0x20] + cmp r6, #0x0 + ble _0208BEBC + ldrb r11, [sp, #0x20] +_0208BE98: + add r3, sp, #0x48 + ldr r3, [r3, r4, lsl #0x3] + mov r0, r5 + mov r1, r8 + mov r2, r11 + blx r3 + add r4, r4, #0x1 + cmp r4, r6 + blt _0208BE98 +_0208BEBC: + ldr r0, [sp, #0x1c] + ldr r4, [sp, #0x1c] + str r0, [sp, #0x70] + str r0, [sp, #0x6c] + str r0, [sp, #0x68] + ldr r0, [sp, #0x4] + ldrh r0, [r0, #0x0] + mov r0, r0, lsl #0x1a + movs r0, r0, lsr #0x1f + addne r0, r9, #0x28 + addne r3, r5, #0x38 + ldmneia r0, {r0-r2} + stmneia r3, {r0-r2} + cmp r7, #0x0 + ble _0208BF24 +_0208BEF8: + ldr r2, [r8, #0x18] + mov r1, r5 + add r0, r2, r4, lsl #0x3 + ldr r11, [r2, r4, lsl #0x3] + ldr r0, [r0, #0x4] + add r2, sp, #0x68 + mov r3, r9 + blx r11 + add r4, r4, #0x1 + cmp r4, r7 + blt _0208BEF8 +_0208BF24: + ldrh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + add r0, r1, r0 + strh r0, [r5, #0x20] + ldr r1, [r5, #0x14] + ldr r0, [sp, #0x8] + mul r0, r1, r0 + mov r0, r0, asr #0x9 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r0, [sp, #0x8] + mul r0, r1, r0 + mov r0, r0, asr #0x9 + str r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + ldr r0, [sp, #0x8] + mul r0, r1, r0 + mov r0, r0, asr #0x9 + str r0, [r5, #0x1c] + ldr r1, [r5, #0x14] + ldr r0, [sp, #0x68] + add r0, r1, r0 + str r0, [r5, #0x14] + ldr r1, [r5, #0x18] + ldr r0, [sp, #0x6c] + add r0, r1, r0 + str r0, [r5, #0x18] + ldr r1, [r5, #0x1c] + ldr r0, [sp, #0x70] + add r0, r1, r0 + str r0, [r5, #0x1c] + ldr r1, [r5, #0x14] + ldr r0, [r9, #0x34] + ldr r2, [r5, #0x8] + add r0, r1, r0 + add r0, r2, r0 + str r0, [r5, #0x8] + ldr r1, [r5, #0x18] + ldr r0, [r9, #0x38] + ldr r2, [r5, #0xc] + add r0, r1, r0 + add r0, r2, r0 + str r0, [r5, #0xc] + ldr r1, [r5, #0x1c] + ldr r0, [r9, #0x3c] + ldr r2, [r5, #0x10] + add r0, r1, r0 + add r0, r2, r0 + str r0, [r5, #0x10] + ldr r0, [r9, #0x20] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + movs r0, r0, lsr #0x1f + beq _0208C028 + ldr r0, [r10, #0x38] + ldrh r1, [r5, #0x2e] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x1a + bic r1, r1, #0xfc00 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + and r0, r0, #0x3f + orr r0, r1, r0, lsl #0xa + strh r0, [r5, #0x2e] + b _0208C0A8 +_0208C028: + ldr r0, [r10, #0x38] + ldrh r1, [r5, #0x2e] + mov r0, r0, lsl #0xe + mov r0, r0, lsr #0x1a + bic r1, r1, #0xfc00 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + and r0, r0, #0x3f + orr r0, r1, r0, lsl #0xa + strh r0, [r5, #0x2e] + ldr r1, [r10, #0x38] + add r0, r10, #0x38 + bic r2, r1, #0x3f000 + mov r1, r1, lsl #0xe + mov r1, r1, lsr #0x1a + add r1, r1, #0x1 + and r1, r1, #0x3f + orr r1, r2, r1, lsl #0xc + str r1, [r10, #0x38] + ldr r2, [r10, #0x38] + mov r1, r2, lsl #0xe + mov r3, r1, lsr #0x1a + mov r1, r2, lsl #0x14 + cmp r3, r1, lsr #0x1a + bls _0208C0A8 + mov r1, r2, lsl #0x1a + mov r1, r1, lsr #0x1a + and r1, r1, #0x3f + ldr r2, [r0, #0x0] + bic r2, r2, #0x3f000 + orr r1, r2, r1, lsl #0xc + str r1, [r0, #0x0] +_0208C0A8: + ldrh r0, [r5, #0x26] + add r0, r0, #0x1 + strh r0, [r5, #0x26] + ldrh r1, [r5, #0x26] + ldrh r0, [r5, #0x24] + cmp r1, r0 + bls _0208C0DC + mov r1, r5 + add r0, r9, #0x14 + bl FUN_020909D8 + mov r1, r0 + add r0, r10, #0x1c + bl FUN_02090AA4 +_0208C0DC: + ldr r5, [sp, #0x14] + movs r0, r5 + bne _0208BE6C +_0208C0E8: + ldrh r0, [r9, #0x4c] + add r0, r0, #0x1 + strh r0, [r9, #0x4c] + ldr r2, [r9, #0x90] + cmp r2, #0x0 + addeq sp, sp, #0x74 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r0, r9 + mov r1, #0x1 + blx r2 + add sp, sp, #0x74 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0208C120: .word FUN_02090540 +_0208C124: .word FUN_02090374 +_0208C128: .word FUN_02090298 +_0208C12C: .word FUN_02090234 +_0208C130: .word FUN_020901E8 +_0208C134: .word FUN_02090190 + + arm_func_start FUN_0208C138 +FUN_0208C138: + stmdb sp!, {r4-r6,lr} + str r1, [r0, #0x20] + mov r3, #0x0 + str r3, [r0, #0x24] + ldr r1, [r0, #0x20] + ldr r5, [r2, #0x0] + ldr r1, [r1, #0x0] + ldr r4, _0208C3FC ; =0x00007FFF + ldr r1, [r1, #0x4] + ldr ip, _0208C400 ; =0x0007FFFF + add r1, r5, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x20] + ldr r6, [r2, #0x4] + ldr r1, [r1, #0x0] + mov lr, #0x80000000 + ldr r5, [r1, #0x8] + mov r1, #0x1000 + add r5, r6, r5 + str r5, [r0, #0x2c] + ldr r5, [r0, #0x20] + ldr r6, [r2, #0x8] + ldr r2, [r5, #0x0] + ldr r2, [r2, #0xc] + add r2, r6, r2 + str r2, [r0, #0x30] + str r3, [r0, #0x40] + str r3, [r0, #0x44] + str r3, [r0, #0x48] + str r3, [r0, #0x3c] + ldr r2, [r0, #0x3c] + str r2, [r0, #0x38] + ldr r2, [r0, #0x38] + str r2, [r0, #0x34] + strh r3, [r0, #0x4c] + strh r3, [r0, #0x4e] + ldr r2, [r0, #0x20] + ldr r5, [r2, #0x0] + ldrh r3, [r5, #0x1c] + ldrh r2, [r5, #0x1e] + strh r3, [r0, #0x50] + strh r2, [r0, #0x52] + ldrh r2, [r5, #0x20] + strh r2, [r0, #0x54] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldrh r2, [r2, #0x38] + strh r2, [r0, #0x56] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x10] + str r2, [r0, #0x58] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x14] + str r2, [r0, #0x5c] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x18] + str r2, [r0, #0x60] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x24] + str r2, [r0, #0x64] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x28] + str r2, [r0, #0x68] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x2c] + str r2, [r0, #0x6c] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldrh r2, [r2, #0x3e] + strh r2, [r0, #0x70] + strh r4, [r0, #0x72] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldrb r2, [r2, #0x44] + strb r2, [r0, #0x80] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldrb r2, [r2, #0x45] + strb r2, [r0, #0x81] + ldr r2, [r0, #0x80] + bic r2, r2, #0x70000 + str r2, [r0, #0x80] + ldr r2, [r0, #0x80] + and r2, r2, r12 + str r2, [r0, #0x80] + str lr, [r0, #0x74] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x48] + mov r2, r2, lsl #0x6 + mov r2, r2, lsr #0x1e + mov r2, r1, lsl r2 + strh r2, [r0, #0x78] + ldr r2, [r0, #0x20] + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x48] + mov r2, r2, lsl #0x4 + mov r2, r2, lsr #0x1e + mov r1, r1, lsl r2 + strh r1, [r0, #0x7a] + ldr r1, [r0, #0x20] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x4c] + mov r1, r1, lsl #0x1f + movs r1, r1, lsr #0x1f + ldrnesh r2, [r0, #0x78] + mvnne r1, #0x0 + smulbbne r1, r2, r1 + strneh r1, [r0, #0x78] + ldr r1, [r0, #0x20] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x4c] + mov r1, r1, lsl #0x1e + movs r1, r1, lsr #0x1f + ldrnesh r2, [r0, #0x7a] + mvnne r1, #0x0 + smulbbne r1, r2, r1 + strneh r1, [r0, #0x7a] + ldr r2, [r0, #0x20] + ldr r1, [r2, #0x0] + ldr r1, [r1, #0x0] + mov r1, r1, lsl #0xf + movs r1, r1, lsr #0x1f + beq _0208C3C0 + ldr r1, [r2, #0x14] + mov r2, #0x1000 + ldr r1, [r1, #0x10] + mov r1, r1, lsl #0x1e + mov r1, r1, lsr #0x1e + mov r1, r2, lsl r1 + strh r1, [r0, #0x7c] + ldr r1, [r0, #0x20] + ldr r1, [r1, #0x14] + ldr r1, [r1, #0x10] + mov r1, r1, lsl #0x1c + mov r1, r1, lsr #0x1e + mov r1, r2, lsl r1 + strh r1, [r0, #0x7e] + ldr r1, [r0, #0x20] + ldr r1, [r1, #0x14] + ldr r1, [r1, #0x10] + mov r1, r1, lsl #0x1b + movs r1, r1, lsr #0x1f + ldrnesh r2, [r0, #0x7c] + mvnne r1, #0x0 + smulbbne r1, r2, r1 + strneh r1, [r0, #0x7c] + ldr r1, [r0, #0x20] + ldr r1, [r1, #0x14] + ldr r1, [r1, #0x10] + mov r1, r1, lsl #0x1a + movs r1, r1, lsr #0x1f + ldrnesh r2, [r0, #0x7e] + mvnne r1, #0x0 + smulbbne r1, r2, r1 + strneh r1, [r0, #0x7e] +_0208C3C0: + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0x14] + ldr r1, [r0, #0x14] + str r1, [r0, #0x8] + str r2, [r0, #0x18] + ldr r1, [r0, #0x18] + str r1, [r0, #0xc] + str r2, [r0, #0x90] + str r2, [r0, #0x94] + str r2, [r0, #0x98] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0208C3FC: .word 0x00007FFF +_0208C400: .word 0x0007FFFF + + arm_func_start FUN_0208C404 +FUN_0208C404: ; 0x0208C404 + bx lr + + arm_func_start FUN_0208C408 +FUN_0208C408: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r7, [r0, #0xc] + ldr r3, _0208C4E0 ; =0x040004A8 + str r7, [sp, #0x0] + ldr r1, [r0, #0x4] + mov r2, r7, lsl #0x1c + mov lr, r2, lsr #0x1c + mov r1, r1, lsr #0x3 + orr r12, r1, lr, lsl #0x1a + mov r4, r7, lsl #0x18 + mov r5, r7, lsl #0x14 + mov r2, r7, lsl #0xf + mov r4, r4, lsr #0x1c + orr r12, r12, #0x40000000 + mov r6, r7, lsl #0x12 + orr r12, r12, r4, lsl #0x14 + mov r5, r5, lsr #0x1c + mov r1, r7, lsl #0x10 + orr r12, r12, r5, lsl #0x17 + mov r4, r6, lsr #0x1e + mov r5, r1, lsr #0x1e + orr r1, r12, r4, lsl #0x10 + mov r2, r2, lsr #0x1f + orr r1, r1, r5, lsl #0x12 + orr r1, r1, r2, lsl #0x1d + str r1, [r3, #0x0] + cmp lr, #0x2 + moveq r1, #0x1 + movne r1, #0x0 + ldr r2, [r0, #0x8] + rsb r1, r1, #0x4 + mov r2, r2, lsr r1 + ldr r1, _0208C4E4 ; =0x040004AC + ldr ip, _0208C4E8 ; =0x04000440 + str r2, [r1, #0x0] + mov r2, #0x3 + ldr r1, _0208C4EC ; =0x04000454 + str r2, [r12, #0x0] + mov r3, #0x0 + str r3, [r1, #0x0] + ldrh r1, [r0, #0x10] + ldrh r2, [r0, #0x12] + ldr r0, _0208C4F0 ; =0x0400046C + mov r1, r1, lsl #0xc + str r1, [r0, #0x0] + mov r1, r2, lsl #0xc + str r1, [r0, #0x0] + str r3, [r0, #0x0] + mov r0, #0x1 + str r0, [r12, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0208C4E0: .word 0x040004A8 +_0208C4E4: .word 0x040004AC +_0208C4E8: .word 0x04000440 +_0208C4EC: .word 0x04000454 +_0208C4F0: .word 0x0400046C + + arm_func_start FUN_0208C4F4 +FUN_0208C4F4: ; 0x0208C4F4 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0xf0 + mov r4, r1 + ldrh r2, [r4, #0x2e] + mov r5, r0 + ldr r0, [r5, #0x3c] + mov r1, r2, lsl #0x16 + mov r3, r2, lsl #0x1b + mov r1, r1, lsr #0x1b + mov r3, r3, lsr #0x1b + add r1, r1, #0x1 + mul r6, r3, r1 + mov r1, r2, lsl #0x10 + movs r2, r6, asr #0x5 + mov r1, r1, lsr #0x1a + orr r0, r0, #0xc0 + orr r1, r0, r1, lsl #0x18 + ldr r0, _0208C950 ; =0x040004A4 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x0] + addeq sp, sp, #0xf0 + ldr r0, [r0, #0x0] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [r5, #0x40] + ldrh r1, [r4, #0x20] + ldr r0, [r0, #0x20] + ldr r6, _0208C954 ; =0x020FFA38 + ldr r0, [r0, #0x14] + mov r1, r1, asr #0x4 + ldrh r0, [r0, #0x0] + mov r2, r1, lsl #0x1 + add r1, r2, #0x1 + mov r7, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + mov r0, r0, lsl #0x15 + mov r3, r0, lsr #0x1e + ldr r2, _0208C958 ; =0x02106160 + ldrsh r0, [r6, r7] + ldr r3, [r2, r3, lsl #0x2] + ldrsh r1, [r6, r1] + add r2, sp, #0x30 + blx r3 + add r0, sp, #0xc0 + bl MTX_Identity43_ + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x20] + ldr r0, [r0, #0x14] + ldr r0, [r0, #0x10] + mov r0, r0, lsl #0x19 + movs r0, r0, lsr #0x1f + bne _0208C5D4 + add r1, sp, #0x90 + add r0, r4, #0x14 + bl VEC_Normalize + b _0208C604 +_0208C5D4: + add r1, sp, #0x90 + add r0, r4, #0x8 + bl VEC_Normalize + ldr r2, [sp, #0x90] + ldr r1, [sp, #0x94] + ldr r0, [sp, #0x98] + rsb r2, r2, #0x0 + rsb r1, r1, #0x0 + rsb r0, r0, #0x0 + str r2, [sp, #0x90] + str r1, [sp, #0x94] + str r0, [sp, #0x98] +_0208C604: + mov r3, #0x0 + mov r2, #0x1000 + add r0, sp, #0x90 + add r1, sp, #0xb4 + str r3, [sp, #0xb4] + str r2, [sp, #0xb8] + str r3, [sp, #0xbc] + bl VEC_DotProduct + ldr r1, _0208C95C ; =0x00000CCD + cmp r0, r1 + bgt _0208C63C + ldr r1, _0208C960 ; =0xFFFFF333 + cmp r0, r1 + bge _0208C650 +_0208C63C: + mov r0, #0x0 + mov r1, #0x1000 + str r1, [sp, #0xb4] + str r0, [sp, #0xb8] + str r0, [sp, #0xbc] +_0208C650: + add r0, sp, #0x90 + add r1, sp, #0xb4 + add r2, sp, #0x9c + bl VEC_CrossProduct + add r0, sp, #0x90 + add r1, sp, #0x9c + add r2, sp, #0xa8 + bl VEC_CrossProduct + ldr r7, [sp, #0x9c] + ldr r6, [sp, #0xa0] + ldr r3, [sp, #0xa4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x94] + ldr r2, [sp, #0x98] + str r7, [sp, #0xc0] + ldr r7, [sp, #0xa8] + str r6, [sp, #0xc4] + ldr r6, [sp, #0xac] + str r3, [sp, #0xc8] + ldr r3, [sp, #0xb0] + str r0, [sp, #0xcc] + str r1, [sp, #0xd0] + add r0, sp, #0x30 + str r2, [sp, #0xd4] + add r1, sp, #0xc0 + mov r2, r0 + str r7, [sp, #0xd8] + str r6, [sp, #0xdc] + str r3, [sp, #0xe0] + bl MTX_Concat43 + ldr r0, [r5, #0x40] + ldr r2, [r4, #0x30] + ldr r0, [r0, #0x20] + mov r12, #0x800 + ldr r0, [r0, #0x0] + mov r3, r2, asr #0x1f + ldrsh r1, [r0, #0x30] + ldr r0, [r0, #0x48] + mov lr, #0x0 + smull r6, r1, r2, r1 + adds r7, r6, r12 + adc r6, r1, #0x0 + mov r0, r0, lsl #0x1 + mov r1, r7, lsr #0xc + orr r1, r1, r6, lsl #0x14 + movs r0, r0, lsr #0x1d + beq _0208C720 + cmp r0, #0x1 + beq _0208C75C + cmp r0, #0x2 + beq _0208C778 + b _0208C79C +_0208C720: + ldrsh r0, [r4, #0x34] + mov r8, r0, asr #0x1f + umull r7, r6, r2, r0 + mla r6, r2, r8, r6 + smull r8, r2, r1, r0 + adds r1, r8, r12 + adc r8, r2, lr + adds r2, r7, r12 + mla r6, r3, r0, r6 + mov r1, r1, lsr #0xc + adc r0, r6, lr + mov r2, r2, lsr #0xc + orr r1, r1, r8, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + b _0208C79C +_0208C75C: + ldrsh r0, [r4, #0x34] + smull r3, r0, r1, r0 + adds r1, r3, r12 + adc r0, r0, lr + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + b _0208C79C +_0208C778: + ldrsh r6, [r4, #0x34] + mov r0, r6, asr #0x1f + umull r8, r7, r2, r6 + mla r7, r2, r0, r7 + adds r2, r8, r12 + mla r7, r3, r6, r7 + adc r0, r7, lr + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 +_0208C79C: + add r0, sp, #0x60 + mov r3, r2 + blx MTX_Scale43_ + add r0, sp, #0x30 + add r1, sp, #0x60 + add r2, sp, #0x0 + bl MTX_Concat43 + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x20] + ldr r3, [r0, #0x0] + ldr r0, [r3, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208C818 + ldr r1, [r4, #0x8] + ldr r0, [r4, #0x38] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x44] + bl G3_LoadMtx43 +_0208C80C: ; 0x0208C80C + add r0, sp, #0x0 + bl G3_MultMtx43 + b _0208C8BC +_0208C818: + ldr r2, [r4, #0x8] + ldr r1, [r4, #0x38] + ldr r0, [r3, #0x4] + add r1, r2, r1 + sub r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [r5, #0x40] + ldr r2, [r4, #0xc] + ldr r0, [r0, #0x20] + ldr r1, [r4, #0x3c] + ldr r0, [r0, #0x0] + add r2, r2, r1 + ldr r1, [r0, #0x8] + ldr r0, _0208C964 ; =0x04000454 + sub r1, r2, r1 + str r1, [sp, #0x28] + ldr r1, [r5, #0x40] + ldr r3, [r4, #0x10] + ldr r1, [r1, #0x20] + ldr r2, [r4, #0x40] + ldr r1, [r1, #0x0] + add r3, r3, r2 + ldr r2, [r1, #0xc] + mov r1, #0x0 + sub r2, r3, r2 + str r2, [sp, #0x2c] + str r1, [r0, #0x0] + ldr r1, [r5, #0x40] + ldr r0, _0208C968 ; =0x04000470 + ldr r1, [r1, #0x20] + ldr r1, [r1, #0x0] + ldr r3, [r1, #0xc] + ldr r2, [r1, #0x8] + ldr r1, [r1, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0x0] + str r3, [r0, #0x0] + ldr r0, [r5, #0x44] + bl G3_MultMtx43 +_0208C8B4: ; 0x0208C8B4 + add r0, sp, #0x0 + bl G3_MultMtx43 +_0208C8BC: + ldr r0, [r5, #0x40] + ldrh r4, [r4, #0x36] + ldrh r12, [r0, #0x72] + mov r2, #0x0 + and r1, r4, #0x1f + and r0, r12, #0x1f + mul r3, r1, r0 + and r1, r4, #0x3e0 + and r0, r12, #0x3e0 + mul r0, r1, r0 + and r4, r4, #0x7c00 + and r1, r12, #0x7c00 + mul r12, r4, r1 + mov r1, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r12, asr #0x19 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + ldr r1, _0208C96C ; =0x04000480 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r5, [r5, #0x40] + ldr r4, _0208C970 ; =0x02106158 + ldr r1, [r5, #0x20] + ldrsh r0, [r5, #0x7c] + ldr r3, [r1, #0x14] + ldrsh r1, [r5, #0x7e] + ldrh r5, [r3, #0x0] + mov r3, r2 + mov r5, r5, lsl #0x14 + mov r5, r5, lsr #0x1f + ldr r4, [r4, r5, lsl #0x2] + blx r4 + add sp, sp, #0xf0 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208C950: .word 0x040004A4 +_0208C954: .word 0x020FFA38 +_0208C958: .word 0x02106160 +_0208C95C: .word 0x00000CCD +_0208C960: .word 0xFFFFF333 +_0208C964: .word 0x04000454 +_0208C968: .word 0x04000470 +_0208C96C: .word 0x04000480 +_0208C970: .word 0x02106158 + + arm_func_start FUN_0208C974 +FUN_0208C974: ; 0x0208C974 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0xf0 + mov r4, r1 + ldrh r2, [r4, #0x2e] + mov r5, r0 + ldr r0, [r5, #0x3c] + mov r1, r2, lsl #0x16 + mov r3, r2, lsl #0x1b + mov r1, r1, lsr #0x1b + mov r3, r3, lsr #0x1b + add r1, r1, #0x1 + mul r6, r3, r1 + mov r1, r2, lsl #0x10 + movs r2, r6, asr #0x5 + mov r1, r1, lsr #0x1a + orr r0, r0, #0xc0 + orr r1, r0, r1, lsl #0x18 + ldr r0, _0208CDCC ; =0x040004A4 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x0] + addeq sp, sp, #0xf0 + ldr r0, [r0, #0x0] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [r5, #0x40] + ldrh r1, [r4, #0x20] + ldr r0, [r0, #0x20] + ldr r6, _0208CDD0 ; =0x020FFA38 + ldr r0, [r0, #0x0] + mov r1, r1, asr #0x4 + mov r2, r1, lsl #0x1 + ldr r0, [r0, #0x0] + add r1, r2, #0x1 + mov r7, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + mov r0, r0, lsl #0xd + mov r3, r0, lsr #0x1e + ldr r2, _0208CDD4 ; =0x02106160 + ldrsh r0, [r6, r7] + ldr r3, [r2, r3, lsl #0x2] + ldrsh r1, [r6, r1] + add r2, sp, #0x30 + blx r3 + add r0, sp, #0xc0 + bl MTX_Identity43_ + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x20] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x48] + movs r0, r0, lsr #0x1f + bne _0208CA50 + add r1, sp, #0x90 + add r0, r4, #0x14 + bl VEC_Normalize + b _0208CA80 +_0208CA50: + add r1, sp, #0x90 + add r0, r4, #0x8 + bl VEC_Normalize + ldr r2, [sp, #0x90] + ldr r1, [sp, #0x94] + ldr r0, [sp, #0x98] + rsb r2, r2, #0x0 + rsb r1, r1, #0x0 + rsb r0, r0, #0x0 + str r2, [sp, #0x90] + str r1, [sp, #0x94] + str r0, [sp, #0x98] +_0208CA80: + mov r3, #0x0 + mov r2, #0x1000 + add r0, sp, #0x90 + add r1, sp, #0xb4 + str r3, [sp, #0xb4] + str r2, [sp, #0xb8] + str r3, [sp, #0xbc] + bl VEC_DotProduct + ldr r1, _0208CDD8 ; =0x00000CCD + cmp r0, r1 + bgt _0208CAB8 + ldr r1, _0208CDDC ; =0xFFFFF333 + cmp r0, r1 + bge _0208CACC +_0208CAB8: + mov r0, #0x0 + mov r1, #0x1000 + str r1, [sp, #0xb4] + str r0, [sp, #0xb8] + str r0, [sp, #0xbc] +_0208CACC: + add r0, sp, #0x90 + add r1, sp, #0xb4 + add r2, sp, #0x9c + bl VEC_CrossProduct + add r0, sp, #0x90 + add r1, sp, #0x9c + add r2, sp, #0xa8 + bl VEC_CrossProduct + ldr r7, [sp, #0x9c] + ldr r6, [sp, #0xa0] + ldr r3, [sp, #0xa4] + ldr r0, [sp, #0x90] + ldr r1, [sp, #0x94] + ldr r2, [sp, #0x98] + str r7, [sp, #0xc0] + ldr r7, [sp, #0xa8] + str r6, [sp, #0xc4] + ldr r6, [sp, #0xac] + str r3, [sp, #0xc8] + ldr r3, [sp, #0xb0] + str r0, [sp, #0xcc] + str r1, [sp, #0xd0] + add r0, sp, #0x30 + str r2, [sp, #0xd4] + add r1, sp, #0xc0 + mov r2, r0 + str r7, [sp, #0xd8] + str r6, [sp, #0xdc] + str r3, [sp, #0xe0] + bl MTX_Concat43 + ldr r0, [r5, #0x40] + ldr r2, [r4, #0x30] + ldr r0, [r0, #0x20] + mov r12, #0x800 + ldr r0, [r0, #0x0] + mov r3, r2, asr #0x1f + ldrsh r1, [r0, #0x30] + ldr r0, [r0, #0x48] + mov lr, #0x0 + smull r6, r1, r2, r1 + adds r7, r6, r12 + adc r6, r1, #0x0 + mov r0, r0, lsl #0x1 + mov r1, r7, lsr #0xc + orr r1, r1, r6, lsl #0x14 + movs r0, r0, lsr #0x1d + beq _0208CB9C + cmp r0, #0x1 + beq _0208CBD8 + cmp r0, #0x2 + beq _0208CBF4 + b _0208CC18 +_0208CB9C: + ldrsh r0, [r4, #0x34] + mov r8, r0, asr #0x1f + umull r7, r6, r2, r0 + mla r6, r2, r8, r6 + smull r8, r2, r1, r0 + adds r1, r8, r12 + adc r8, r2, lr + adds r2, r7, r12 + mla r6, r3, r0, r6 + mov r1, r1, lsr #0xc + adc r0, r6, lr + mov r2, r2, lsr #0xc + orr r1, r1, r8, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + b _0208CC18 +_0208CBD8: + ldrsh r0, [r4, #0x34] + smull r3, r0, r1, r0 + adds r1, r3, r12 + adc r0, r0, lr + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + b _0208CC18 +_0208CBF4: + ldrsh r6, [r4, #0x34] + mov r0, r6, asr #0x1f + umull r8, r7, r2, r6 + mla r7, r2, r0, r7 + adds r2, r8, r12 + mla r7, r3, r6, r7 + adc r0, r7, lr + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 +_0208CC18: + add r0, sp, #0x60 + mov r3, r2 + blx MTX_Scale43_ + add r0, sp, #0x60 + add r1, sp, #0x30 + add r2, sp, #0x0 + bl MTX_Concat43 + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x20] + ldr r3, [r0, #0x0] + ldr r0, [r3, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208CC94 + ldr r1, [r4, #0x8] + ldr r0, [r4, #0x38] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x44] + bl G3_LoadMtx43 +_0208CC88: ; 0x0208CC88 + add r0, sp, #0x0 + bl G3_MultMtx43 + b _0208CD38 +_0208CC94: + ldr r2, [r4, #0x8] + ldr r1, [r4, #0x38] + ldr r0, [r3, #0x4] + add r1, r2, r1 + sub r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [r5, #0x40] + ldr r2, [r4, #0xc] + ldr r0, [r0, #0x20] + ldr r1, [r4, #0x3c] + ldr r0, [r0, #0x0] + add r2, r2, r1 + ldr r1, [r0, #0x8] + ldr r0, _0208CDE0 ; =0x04000454 + sub r1, r2, r1 + str r1, [sp, #0x28] + ldr r1, [r5, #0x40] + ldr r3, [r4, #0x10] + ldr r1, [r1, #0x20] + ldr r2, [r4, #0x40] + ldr r1, [r1, #0x0] + add r3, r3, r2 + ldr r2, [r1, #0xc] + mov r1, #0x0 + sub r2, r3, r2 + str r2, [sp, #0x2c] + str r1, [r0, #0x0] + ldr r1, [r5, #0x40] + ldr r0, _0208CDE4 ; =0x04000470 + ldr r1, [r1, #0x20] + ldr r1, [r1, #0x0] + ldr r3, [r1, #0xc] + ldr r2, [r1, #0x8] + ldr r1, [r1, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0x0] + str r3, [r0, #0x0] + ldr r0, [r5, #0x44] + bl G3_MultMtx43 +_0208CD30: ; 0x0208CD30 + add r0, sp, #0x0 + bl G3_MultMtx43 +_0208CD38: + ldr r0, [r5, #0x40] + ldrh r4, [r4, #0x36] + ldrh r12, [r0, #0x72] + ldr r1, _0208CDE8 ; =0x04000480 + and r2, r4, #0x1f + and r0, r12, #0x1f + mul r3, r2, r0 + and r2, r4, #0x3e0 + and r0, r12, #0x3e0 + mul r0, r2, r0 + and r4, r4, #0x7c00 + and r2, r12, #0x7c00 + mul r12, r4, r2 + mov r2, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r12, asr #0x19 + orr r0, r2, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r2, [r5, #0x40] + ldr r4, _0208CDEC ; =0x02106158 + ldr r1, [r2, #0x20] + ldrsh r0, [r2, #0x78] + ldr r12, [r1, #0x0] + ldrsh r1, [r2, #0x7a] + ldr r3, [r12, #0x0] + ldrsh r2, [r12, #0x50] + mov r3, r3, lsl #0xc + mov r5, r3, lsr #0x1f + ldrsh r3, [r12, #0x52] + ldr r4, [r4, r5, lsl #0x2] + blx r4 + add sp, sp, #0xf0 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208CDCC: .word 0x040004A4 +_0208CDD0: .word 0x020FFA38 +_0208CDD4: .word 0x02106160 +_0208CDD8: .word 0x00000CCD +_0208CDDC: .word 0xFFFFF333 +_0208CDE0: .word 0x04000454 +_0208CDE4: .word 0x04000470 +_0208CDE8: .word 0x04000480 +_0208CDEC: .word 0x02106158 + + arm_func_start FUN_0208CDF0 +FUN_0208CDF0: ; 0x0208CDF0 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x90 + mov r4, r1 + ldrh r2, [r4, #0x2e] + mov r5, r0 + ldr r0, [r5, #0x3c] + mov r1, r2, lsl #0x16 + mov r3, r2, lsl #0x1b + mov r1, r1, lsr #0x1b + mov r3, r3, lsr #0x1b + add r1, r1, #0x1 + mul r6, r3, r1 + mov r1, r2, lsl #0x10 + movs r2, r6, asr #0x5 + mov r1, r1, lsr #0x1a + orr r0, r0, #0xc0 + orr r1, r0, r1, lsl #0x18 + ldr r0, _0208D124 ; =0x040004A4 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x0] + addeq sp, sp, #0x90 + ldr r0, [r0, #0x0] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [r5, #0x40] + ldrh r1, [r4, #0x20] + ldr r0, [r0, #0x20] + ldr r6, _0208D128 ; =0x020FFA38 + ldr r0, [r0, #0x14] + mov r1, r1, asr #0x4 + ldrh r0, [r0, #0x0] + mov r2, r1, lsl #0x1 + add r1, r2, #0x1 + mov r7, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + mov r0, r0, lsl #0x15 + mov r3, r0, lsr #0x1e + ldr r2, _0208D12C ; =0x02106160 + ldrsh r0, [r6, r7] + ldr r3, [r2, r3, lsl #0x2] + ldrsh r1, [r6, r1] + add r2, sp, #0x30 + blx r3 + ldr r0, [r5, #0x40] + ldr r2, [r4, #0x30] + ldr r0, [r0, #0x20] + mov r12, #0x800 + ldr r0, [r0, #0x0] + mov r3, r2, asr #0x1f + ldrsh r1, [r0, #0x30] + ldr r0, [r0, #0x48] + mov lr, #0x0 + smull r6, r1, r2, r1 + adds r7, r6, r12 + adc r6, r1, #0x0 + mov r1, r7, lsr #0xc + mov r0, r0, lsl #0x1 + orr r1, r1, r6, lsl #0x14 + movs r0, r0, lsr #0x1d + beq _0208CEF4 + cmp r0, #0x1 + beq _0208CF30 + cmp r0, #0x2 + beq _0208CF4C + b _0208CF70 +_0208CEF4: + ldrsh r0, [r4, #0x34] + mov r8, r0, asr #0x1f + umull r7, r6, r2, r0 + mla r6, r2, r8, r6 + smull r8, r2, r1, r0 + adds r1, r8, r12 + adc r8, r2, lr + adds r2, r7, r12 + mla r6, r3, r0, r6 + mov r1, r1, lsr #0xc + adc r0, r6, lr + mov r2, r2, lsr #0xc + orr r1, r1, r8, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + b _0208CF70 +_0208CF30: + ldrsh r0, [r4, #0x34] + smull r3, r0, r1, r0 + adds r1, r3, r12 + adc r0, r0, lr + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + b _0208CF70 +_0208CF4C: + ldrsh r6, [r4, #0x34] + mov r0, r6, asr #0x1f + umull r8, r7, r2, r6 + mla r7, r2, r0, r7 + adds r2, r8, r12 + mla r7, r3, r6, r7 + adc r0, r7, lr + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 +_0208CF70: + add r0, sp, #0x60 + mov r3, r2 + blx MTX_Scale43_ + add r0, sp, #0x30 + add r1, sp, #0x60 + add r2, sp, #0x0 + bl MTX_Concat43 + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x20] + ldr r3, [r0, #0x0] + ldr r0, [r3, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208CFEC + ldr r1, [r4, #0x8] + ldr r0, [r4, #0x38] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x44] + bl G3_LoadMtx43 +_0208CFE0: ; 0x0208CFE0 + add r0, sp, #0x0 + bl G3_MultMtx43 + b _0208D090 +_0208CFEC: + ldr r2, [r4, #0x8] + ldr r1, [r4, #0x38] + ldr r0, [r3, #0x4] + add r1, r2, r1 + sub r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [r5, #0x40] + ldr r2, [r4, #0xc] + ldr r0, [r0, #0x20] + ldr r1, [r4, #0x3c] + ldr r0, [r0, #0x0] + add r2, r2, r1 + ldr r1, [r0, #0x8] + ldr r0, _0208D130 ; =0x04000454 + sub r1, r2, r1 + str r1, [sp, #0x28] + ldr r1, [r5, #0x40] + ldr r3, [r4, #0x10] + ldr r1, [r1, #0x20] + ldr r2, [r4, #0x40] + ldr r1, [r1, #0x0] + add r3, r3, r2 + ldr r2, [r1, #0xc] + mov r1, #0x0 + sub r2, r3, r2 + str r2, [sp, #0x2c] + str r1, [r0, #0x0] + ldr r1, [r5, #0x40] + ldr r0, _0208D134 ; =0x04000470 + ldr r1, [r1, #0x20] + ldr r1, [r1, #0x0] + ldr r3, [r1, #0xc] + ldr r2, [r1, #0x8] + ldr r1, [r1, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0x0] + str r3, [r0, #0x0] + ldr r0, [r5, #0x44] + bl G3_MultMtx43 +_0208D088: ; 0x0208D088 + add r0, sp, #0x0 + bl G3_MultMtx43 +_0208D090: + ldr r0, [r5, #0x40] + ldrh r4, [r4, #0x36] + ldrh r12, [r0, #0x72] + mov r2, #0x0 + and r1, r4, #0x1f + and r0, r12, #0x1f + mul r3, r1, r0 + and r1, r4, #0x3e0 + and r0, r12, #0x3e0 + mul r0, r1, r0 + and r4, r4, #0x7c00 + and r1, r12, #0x7c00 + mul r12, r4, r1 + mov r1, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r12, asr #0x19 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + ldr r1, _0208D138 ; =0x04000480 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r5, [r5, #0x40] + ldr r4, _0208D13C ; =0x02106158 + ldr r1, [r5, #0x20] + ldrsh r0, [r5, #0x7c] + ldr r3, [r1, #0x14] + ldrsh r1, [r5, #0x7e] + ldrh r5, [r3, #0x0] + mov r3, r2 + mov r5, r5, lsl #0x14 + mov r5, r5, lsr #0x1f + ldr r4, [r4, r5, lsl #0x2] + blx r4 + add sp, sp, #0x90 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208D124: .word 0x040004A4 +_0208D128: .word 0x020FFA38 +_0208D12C: .word 0x02106160 +_0208D130: .word 0x04000454 +_0208D134: .word 0x04000470 +_0208D138: .word 0x04000480 +_0208D13C: .word 0x02106158 + + arm_func_start FUN_0208D140 +FUN_0208D140: ; 0x0208D140 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x90 + mov r4, r1 + ldrh r2, [r4, #0x2e] + mov r5, r0 + ldr r0, [r5, #0x3c] + mov r1, r2, lsl #0x16 + mov r3, r2, lsl #0x1b + mov r1, r1, lsr #0x1b + mov r3, r3, lsr #0x1b + add r1, r1, #0x1 + mul r6, r3, r1 + mov r1, r2, lsl #0x10 + movs r2, r6, asr #0x5 + mov r1, r1, lsr #0x1a + orr r0, r0, #0xc0 + orr r1, r0, r1, lsl #0x18 + ldr r0, _0208D474 ; =0x040004A4 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x0] + addeq sp, sp, #0x90 + ldr r0, [r0, #0x0] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [r5, #0x40] + ldrh r1, [r4, #0x20] + ldr r0, [r0, #0x20] + ldr r6, _0208D478 ; =0x020FFA38 + ldr r0, [r0, #0x0] + mov r1, r1, asr #0x4 + mov r2, r1, lsl #0x1 + ldr r0, [r0, #0x0] + add r1, r2, #0x1 + mov r7, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + mov r0, r0, lsl #0xd + mov r3, r0, lsr #0x1e + ldr r2, _0208D47C ; =0x02106160 + ldrsh r0, [r6, r7] + ldr r3, [r2, r3, lsl #0x2] + ldrsh r1, [r6, r1] + add r2, sp, #0x30 + blx r3 + ldr r0, [r5, #0x40] + ldr r2, [r4, #0x30] + ldr r0, [r0, #0x20] + mov r12, #0x800 + ldr r0, [r0, #0x0] + mov r3, r2, asr #0x1f + ldrsh r1, [r0, #0x30] + ldr r0, [r0, #0x48] + mov lr, #0x0 + smull r6, r1, r2, r1 + adds r7, r6, r12 + adc r6, r1, #0x0 + mov r1, r7, lsr #0xc + mov r0, r0, lsl #0x1 + orr r1, r1, r6, lsl #0x14 + movs r0, r0, lsr #0x1d + beq _0208D244 + cmp r0, #0x1 + beq _0208D280 + cmp r0, #0x2 + beq _0208D29C + b _0208D2C0 +_0208D244: + ldrsh r0, [r4, #0x34] + mov r8, r0, asr #0x1f + umull r7, r6, r2, r0 + mla r6, r2, r8, r6 + smull r8, r2, r1, r0 + adds r1, r8, r12 + adc r8, r2, lr + adds r2, r7, r12 + mla r6, r3, r0, r6 + mov r1, r1, lsr #0xc + adc r0, r6, lr + mov r2, r2, lsr #0xc + orr r1, r1, r8, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + b _0208D2C0 +_0208D280: + ldrsh r0, [r4, #0x34] + smull r3, r0, r1, r0 + adds r1, r3, r12 + adc r0, r0, lr + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + b _0208D2C0 +_0208D29C: + ldrsh r6, [r4, #0x34] + mov r0, r6, asr #0x1f + umull r8, r7, r2, r6 + mla r7, r2, r0, r7 + adds r2, r8, r12 + mla r7, r3, r6, r7 + adc r0, r7, lr + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 +_0208D2C0: + add r0, sp, #0x60 + mov r3, r2 + blx MTX_Scale43_ + add r0, sp, #0x60 + add r1, sp, #0x30 + add r2, sp, #0x0 + bl MTX_Concat43 + ldr r0, [r5, #0x40] + ldr r0, [r0, #0x20] + ldr r3, [r0, #0x0] + ldr r0, [r3, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208D33C + ldr r1, [r4, #0x8] + ldr r0, [r4, #0x38] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x40] + add r0, r1, r0 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x44] + bl G3_LoadMtx43 +_0208D330: ; 0x0208D330 + add r0, sp, #0x0 + bl G3_MultMtx43 + b _0208D3E0 +_0208D33C: + ldr r2, [r4, #0x8] + ldr r1, [r4, #0x38] + ldr r0, [r3, #0x4] + add r1, r2, r1 + sub r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [r5, #0x40] + ldr r2, [r4, #0xc] + ldr r0, [r0, #0x20] + ldr r1, [r4, #0x3c] + ldr r0, [r0, #0x0] + add r2, r2, r1 + ldr r1, [r0, #0x8] + ldr r0, _0208D480 ; =0x04000454 + sub r1, r2, r1 + str r1, [sp, #0x28] + ldr r1, [r5, #0x40] + ldr r3, [r4, #0x10] + ldr r1, [r1, #0x20] + ldr r2, [r4, #0x40] + ldr r1, [r1, #0x0] + add r3, r3, r2 + ldr r2, [r1, #0xc] + mov r1, #0x0 + sub r2, r3, r2 + str r2, [sp, #0x2c] + str r1, [r0, #0x0] + ldr r1, [r5, #0x40] + ldr r0, _0208D484 ; =0x04000470 + ldr r1, [r1, #0x20] + ldr r1, [r1, #0x0] + ldr r3, [r1, #0xc] + ldr r2, [r1, #0x8] + ldr r1, [r1, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0x0] + str r3, [r0, #0x0] + ldr r0, [r5, #0x44] + bl G3_MultMtx43 +_0208D3D8: ; 0x0208D3D8 + add r0, sp, #0x0 + bl G3_MultMtx43 +_0208D3E0: + ldr r0, [r5, #0x40] + ldrh r4, [r4, #0x36] + ldrh r12, [r0, #0x72] + ldr r1, _0208D488 ; =0x04000480 + and r2, r4, #0x1f + and r0, r12, #0x1f + mul r3, r2, r0 + and r2, r4, #0x3e0 + and r0, r12, #0x3e0 + mul r0, r2, r0 + and r4, r4, #0x7c00 + and r2, r12, #0x7c00 + mul r12, r4, r2 + mov r2, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r12, asr #0x19 + orr r0, r2, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r2, [r5, #0x40] + ldr r4, _0208D48C ; =0x02106158 + ldr r1, [r2, #0x20] + ldrsh r0, [r2, #0x78] + ldr r12, [r1, #0x0] + ldrsh r1, [r2, #0x7a] + ldr r3, [r12, #0x0] + ldrsh r2, [r12, #0x50] + mov r3, r3, lsl #0xc + mov r5, r3, lsr #0x1f + ldrsh r3, [r12, #0x52] + ldr r4, [r4, r5, lsl #0x2] + blx r4 + add sp, sp, #0x90 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208D474: .word 0x040004A4 +_0208D478: .word 0x020FFA38 +_0208D47C: .word 0x02106160 +_0208D480: .word 0x04000454 +_0208D484: .word 0x04000470 +_0208D488: .word 0x04000480 +_0208D48C: .word 0x02106158 + + arm_func_start FUN_0208D490 +FUN_0208D490: ; 0x0208D490 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x88 + mov r6, r1 + ldrh r1, [r6, #0x2e] + mov r7, r0 + ldr r4, [r7, #0x40] + mov r0, r1, lsl #0x16 + mov r2, r1, lsl #0x1b + mov r0, r0, lsr #0x1b + mov r2, r2, lsr #0x1b + add r0, r0, #0x1 + mul r3, r2, r0 + ldr r2, [r4, #0x20] + movs r3, r3, asr #0x5 + ldr r0, [r7, #0x3c] + ldr r4, [r2, #0x0] + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x1a + orr r1, r0, #0xc0 + orr r2, r1, r2, lsl #0x18 + ldrsh r0, [r4, #0x30] + ldr r8, [r7, #0x44] + ldr r1, _0208DB60 ; =0x040004A4 + orr r2, r2, r3, lsl #0x10 + str r2, [r1, #0x0] + addeq sp, sp, #0x88 + ldr r1, [r1, #0x0] + ldmeqia sp!, {r4-r10,lr} + bxeq lr + ldr r4, [r6, #0x30] + ldr r1, [r7, #0x40] + smull r2, r5, r4, r0 + ldr r0, [r1, #0x20] + mov r3, #0x800 + adds r1, r2, r3 + ldr r2, [r0, #0x0] + adc r9, r5, #0x0 + ldr r0, [r2, #0x48] + mov r5, r1, lsr #0xc + mov r0, r0, lsl #0x1 + mov r1, r4, asr #0x1f + orr r5, r5, r9, lsl #0x14 + movs r0, r0, lsr #0x1d + mov r9, #0x0 + beq _0208D558 + cmp r0, #0x1 + beq _0208D594 + cmp r0, #0x2 + beq _0208D5B0 + b _0208D5D4 +_0208D558: + ldrsh r0, [r6, #0x34] + mov lr, r0, asr #0x1f + umull r12, r10, r4, r0 + mla r10, r4, lr, r10 + smull lr, r4, r5, r0 + mla r10, r1, r0, r10 + adds r0, lr, r3 + adc lr, r4, r9 + adds r1, r12, r3 + mov r5, r0, lsr #0xc + adc r0, r10, r9 + mov r4, r1, lsr #0xc + orr r5, r5, lr, lsl #0x14 + orr r4, r4, r0, lsl #0x14 + b _0208D5D4 +_0208D594: + ldrsh r0, [r6, #0x34] + smull r1, r0, r5, r0 + adds r1, r1, r3 + adc r0, r0, r9 + mov r5, r1, lsr #0xc + orr r5, r5, r0, lsl #0x14 + b _0208D5D4 +_0208D5B0: + ldrsh r10, [r6, #0x34] + mov r0, r10, asr #0x1f + umull lr, r12, r4, r10 + mla r12, r4, r0, r12 + adds r3, lr, r3 + mla r12, r1, r10, r12 + adc r0, r12, r9 + mov r4, r3, lsr #0xc + orr r4, r4, r0, lsl #0x14 +_0208D5D4: + ldr r0, [r2, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208D83C + ldr r1, [r6, #0x8] + ldr r0, [r6, #0x38] + add r9, sp, #0x18 + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r2, [r6, #0xc] + ldr r1, [r6, #0x3c] + add r0, r6, #0x14 + add r1, r2, r1 + str r1, [sp, #0x10] + ldr r2, [r6, #0x10] + ldr r1, [r6, #0x40] + add r1, r2, r1 + str r1, [sp, #0x14] + ldmia r0, {r0-r2} + stmia r9, {r0-r2} + ldr r0, [r8, #0x8] + add r1, sp, #0x24 + str r0, [sp, #0x24] + ldr r2, [r8, #0x14] + mov r0, r9 + str r2, [sp, #0x28] + ldr r3, [r8, #0x20] + mov r2, r9 + str r3, [sp, #0x2c] + bl VEC_CrossProduct + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bne _0208D678 + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _0208D678 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x88 + ldmeqia sp!, {r4-r10,lr} + bxeq lr +_0208D678: + add r0, sp, #0x18 + mov r1, r0 + bl VEC_Normalize + add r1, sp, #0x30 + mov r0, r8 + bl MI_Copy36B + add r0, sp, #0x18 + add r1, sp, #0x30 + mov r2, r0 + bl MTX_MultVec33 + add r0, sp, #0xc + mov r1, r8 + mov r2, r0 + bl MTX_MultVec43 + add r0, r6, #0x14 + add r3, sp, #0x0 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + mov r0, r3 + mov r1, r3 + bl VEC_Normalize + ldr r0, [r8, #0x20] + ldr r1, [sp, #0x8] + rsb r0, r0, #0x0 + smull r3, r0, r1, r0 + mov r2, #0x800 + adds r1, r3, r2 + ldr r3, [r8, #0x14] + adc r0, r0, #0x0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + ldr r0, [r8, #0x8] + ldr r9, [sp, #0x0] + rsb r0, r0, #0x0 + smull r8, r0, r9, r0 + adds r9, r8, r2 + adc r8, r0, #0x0 + mov r0, r9, lsr #0xc + orr r0, r0, r8, lsl #0x14 + ldr r8, [sp, #0x4] + rsb r3, r3, #0x0 + smull r9, r3, r8, r3 + adds r8, r9, r2 + adc r2, r3, #0x0 + mov r3, r8, lsr #0xc + orr r3, r3, r2, lsl #0x14 + add r0, r0, r3 + adds r1, r1, r0 + ldr r0, [r7, #0x40] + rsbmi r1, r1, #0x0 + ldr r0, [r0, #0x20] + rsb r2, r1, #0x1000 + ldr r0, [r0, #0x0] + mov r9, #0x800 + ldr r0, [r0, #0x48] + ldr r12, [sp, #0x18] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + smull r8, r0, r2, r0 + adds r2, r8, r9 + adc r0, r0, #0x0 + mov r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + add r0, r2, #0x1000 + smull r2, r0, r4, r0 + adds r2, r2, r9 + adc r0, r0, #0x0 + mov lr, r2, lsr #0xc + orr lr, lr, r0, lsl #0x14 + smull r0, r4, r12, r5 + adds r8, r0, r9 + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0xc] + rsb r2, r3, #0x0 + str r0, [sp, #0x78] + ldr r0, [sp, #0x10] + smull r10, r5, r3, r5 + str r0, [sp, #0x7c] + smull r3, r0, r2, lr + adc r4, r4, #0x0 + mov r8, r8, lsr #0xc + orr r8, r8, r4, lsl #0x14 + adds r3, r3, r9 + smull lr, r2, r12, lr + str r8, [sp, #0x54] + adc r0, r0, #0x0 + adds r8, r10, r9 + adc r4, r5, #0x0 + adds r5, lr, r9 + mov r9, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r8, r8, lsr #0xc + orr r8, r8, r4, lsl #0x14 + ldr r3, [sp, #0x14] + adc r0, r2, #0x0 + mov r5, r5, lsr #0xc + orr r5, r5, r0, lsl #0x14 + mov r4, #0x1000 + ldr r2, _0208DB64 ; =0x04000454 + str r9, [sp, #0x60] + str r8, [sp, #0x58] + add r0, sp, #0x54 + str r5, [sp, #0x64] + str r1, [sp, #0x6c] + str r1, [sp, #0x70] + str r1, [sp, #0x5c] + str r1, [sp, #0x68] + str r4, [sp, #0x74] + str r3, [sp, #0x80] + str r1, [r2, #0x0] + bl G3_MultMtx43 + b _0208DAE8 +_0208D83C: + ldr r3, [r6, #0x8] + ldr r1, [r6, #0x38] + ldr r0, [r2, #0x4] + add r1, r3, r1 + sub r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [r7, #0x40] + ldr r2, [r6, #0xc] + ldr r0, [r0, #0x20] + ldr r1, [r6, #0x3c] + ldr r0, [r0, #0x0] + add r1, r2, r1 + ldr r0, [r0, #0x8] + add r9, sp, #0x18 + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [r7, #0x40] + ldr r2, [r6, #0x10] + ldr r0, [r0, #0x20] + ldr r1, [r6, #0x40] + ldr r0, [r0, #0x0] + add r2, r2, r1 + ldr r1, [r0, #0xc] + add r0, r6, #0x14 + sub r1, r2, r1 + str r1, [sp, #0x14] + ldmia r0, {r0-r2} + stmia r9, {r0-r2} + ldr r0, [r8, #0x8] + add r1, sp, #0x24 + str r0, [sp, #0x24] + ldr r2, [r8, #0x14] + mov r0, r9 + str r2, [sp, #0x28] + ldr r3, [r8, #0x20] + mov r2, r9 + str r3, [sp, #0x2c] + bl VEC_CrossProduct + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bne _0208D900 + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _0208D900 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x88 + ldmeqia sp!, {r4-r10,lr} + bxeq lr +_0208D900: + add r0, sp, #0x18 + mov r1, r0 + bl VEC_Normalize + add r1, sp, #0x30 + mov r0, r8 + bl MI_Copy36B + add r0, sp, #0x18 + add r1, sp, #0x30 + mov r2, r0 + bl MTX_MultVec33 + add r0, sp, #0xc + mov r1, r8 + mov r2, r0 + bl MTX_MultVec43 + add r0, r6, #0x14 + add r3, sp, #0x0 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + mov r0, r3 + mov r1, r3 + bl VEC_Normalize + ldr r0, [r8, #0x20] + ldr r1, [sp, #0x8] + rsb r0, r0, #0x0 + smull r3, r0, r1, r0 + mov r2, #0x800 + adds r1, r3, r2 + ldr r3, [r8, #0x14] + adc r0, r0, #0x0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + ldr r0, [r8, #0x8] + ldr r9, [sp, #0x0] + rsb r0, r0, #0x0 + smull r8, r0, r9, r0 + adds r9, r8, r2 + adc r8, r0, #0x0 + mov r0, r9, lsr #0xc + orr r0, r0, r8, lsl #0x14 + ldr r8, [sp, #0x4] + rsb r3, r3, #0x0 + smull r9, r3, r8, r3 + adds r8, r9, r2 + adc r2, r3, #0x0 + mov r3, r8, lsr #0xc + orr r3, r3, r2, lsl #0x14 + add r0, r0, r3 + adds r1, r1, r0 + ldr r0, [r7, #0x40] + rsbmi r1, r1, #0x0 + ldr r0, [r0, #0x20] + rsb r2, r1, #0x1000 + ldr r0, [r0, #0x0] + mov r9, #0x800 + ldr r0, [r0, #0x48] + ldr lr, [sp, #0x18] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + smull r8, r0, r2, r0 + adds r2, r8, r9 + adc r0, r0, #0x0 + mov r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + add r0, r2, #0x1000 + smull r2, r0, r4, r0 + adds r2, r2, r9 + adc r0, r0, #0x0 + mov r8, r2, lsr #0xc + orr r8, r8, r0, lsl #0x14 + smull r0, r4, lr, r5 + adds r12, r0, r9 + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0xc] + rsb r2, r3, #0x0 + str r0, [sp, #0x78] + ldr r0, [sp, #0x10] + smull r10, r5, r3, r5 + str r0, [sp, #0x7c] + smull r3, r0, r2, r8 + adc r4, r4, #0x0 + mov r12, r12, lsr #0xc + adds r3, r3, r9 + orr r12, r12, r4, lsl #0x14 + adc r0, r0, #0x0 + adds r10, r10, r9 + smull r8, r2, lr, r8 + adc r4, r5, #0x0 + adds r5, r8, r9 + mov r9, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r8, r10, lsr #0xc + orr r8, r8, r4, lsl #0x14 + ldr r3, [sp, #0x14] + adc r0, r2, #0x0 + mov r2, r5, lsr #0xc + orr r2, r2, r0, lsl #0x14 + mov r4, #0x1000 + ldr r0, _0208DB64 ; =0x04000454 + str r12, [sp, #0x54] + str r9, [sp, #0x60] + str r8, [sp, #0x58] + str r1, [sp, #0x6c] + str r2, [sp, #0x64] + str r1, [sp, #0x70] + str r1, [sp, #0x5c] + str r1, [sp, #0x68] + str r4, [sp, #0x74] + str r3, [sp, #0x80] + str r1, [r0, #0x0] + ldr r0, [r7, #0x40] + ldr r1, _0208DB68 ; =0x04000470 + ldr r2, [r0, #0x20] + add r0, sp, #0x54 + ldr r2, [r2, #0x0] + ldr r4, [r2, #0xc] + ldr r3, [r2, #0x8] + ldr r2, [r2, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x0] + str r4, [r1, #0x0] + bl G3_MultMtx43 +_0208DAE8: + ldr r0, [r7, #0x40] + ldrh r4, [r6, #0x36] + ldrh r5, [r0, #0x72] + mov r2, #0x0 + and r1, r4, #0x1f + and r0, r5, #0x1f + mul r3, r1, r0 + and r1, r4, #0x3e0 + and r0, r5, #0x3e0 + mul r0, r1, r0 + and r4, r4, #0x7c00 + and r1, r5, #0x7c00 + mul r5, r4, r1 + mov r1, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r5, asr #0x19 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + ldr r1, _0208DB6C ; =0x04000480 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r1, [r7, #0x40] + mov r3, r2 + ldrsh r0, [r1, #0x7c] + ldrsh r1, [r1, #0x7e] + bl FUN_0208ECA0 + add sp, sp, #0x88 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_0208DB60: .word 0x040004A4 +_0208DB64: .word 0x04000454 +_0208DB68: .word 0x04000470 +_0208DB6C: .word 0x04000480 + + arm_func_start FUN_0208DB70 +FUN_0208DB70: ; 0x0208DB70 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x88 + mov r6, r1 + ldrh r1, [r6, #0x2e] + mov r7, r0 + ldr r4, [r7, #0x40] + mov r0, r1, lsl #0x16 + mov r2, r1, lsl #0x1b + mov r0, r0, lsr #0x1b + mov r2, r2, lsr #0x1b + add r0, r0, #0x1 + mul r3, r2, r0 + ldr r2, [r4, #0x20] + movs r3, r3, asr #0x5 + ldr r0, [r7, #0x3c] + ldr r4, [r2, #0x0] + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x1a + orr r1, r0, #0xc0 + orr r2, r1, r2, lsl #0x18 + ldrsh r0, [r4, #0x30] + ldr r8, [r7, #0x44] + ldr r1, _0208E248 ; =0x040004A4 + orr r2, r2, r3, lsl #0x10 + str r2, [r1, #0x0] + addeq sp, sp, #0x88 + ldr r1, [r1, #0x0] + ldmeqia sp!, {r4-r10,lr} + bxeq lr + ldr r4, [r6, #0x30] + ldr r1, [r7, #0x40] + smull r2, r5, r4, r0 + ldr r0, [r1, #0x20] + mov r3, #0x800 + adds r1, r2, r3 + ldr r2, [r0, #0x0] + adc r9, r5, #0x0 + ldr r0, [r2, #0x48] + mov r5, r1, lsr #0xc + mov r0, r0, lsl #0x1 + mov r1, r4, asr #0x1f + orr r5, r5, r9, lsl #0x14 + movs r0, r0, lsr #0x1d + mov r9, #0x0 + beq _0208DC38 + cmp r0, #0x1 + beq _0208DC74 + cmp r0, #0x2 + beq _0208DC90 + b _0208DCB4 +_0208DC38: + ldrsh r0, [r6, #0x34] + mov lr, r0, asr #0x1f + umull r12, r10, r4, r0 + mla r10, r4, lr, r10 + smull lr, r4, r5, r0 + mla r10, r1, r0, r10 + adds r0, lr, r3 + adc lr, r4, r9 + adds r1, r12, r3 + mov r5, r0, lsr #0xc + adc r0, r10, r9 + mov r4, r1, lsr #0xc + orr r5, r5, lr, lsl #0x14 + orr r4, r4, r0, lsl #0x14 + b _0208DCB4 +_0208DC74: + ldrsh r0, [r6, #0x34] + smull r1, r0, r5, r0 + adds r1, r1, r3 + adc r0, r0, r9 + mov r5, r1, lsr #0xc + orr r5, r5, r0, lsl #0x14 + b _0208DCB4 +_0208DC90: + ldrsh r10, [r6, #0x34] + mov r0, r10, asr #0x1f + umull lr, r12, r4, r10 + mla r12, r4, r0, r12 + adds r3, lr, r3 + mla r12, r1, r10, r12 + adc r0, r12, r9 + mov r4, r3, lsr #0xc + orr r4, r4, r0, lsl #0x14 +_0208DCB4: + ldr r0, [r2, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208DF1C + ldr r1, [r6, #0x8] + ldr r0, [r6, #0x38] + add r9, sp, #0x18 + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r2, [r6, #0xc] + ldr r1, [r6, #0x3c] + add r0, r6, #0x14 + add r1, r2, r1 + str r1, [sp, #0x10] + ldr r2, [r6, #0x10] + ldr r1, [r6, #0x40] + add r1, r2, r1 + str r1, [sp, #0x14] + ldmia r0, {r0-r2} + stmia r9, {r0-r2} + ldr r0, [r8, #0x8] + add r1, sp, #0x24 + str r0, [sp, #0x24] + ldr r2, [r8, #0x14] + mov r0, r9 + str r2, [sp, #0x28] + ldr r3, [r8, #0x20] + mov r2, r9 + str r3, [sp, #0x2c] + bl VEC_CrossProduct + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bne _0208DD58 + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _0208DD58 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x88 + ldmeqia sp!, {r4-r10,lr} + bxeq lr +_0208DD58: + add r0, sp, #0x18 + mov r1, r0 + bl VEC_Normalize + add r1, sp, #0x30 + mov r0, r8 + bl MI_Copy36B + add r0, sp, #0x18 + add r1, sp, #0x30 + mov r2, r0 + bl MTX_MultVec33 + add r0, sp, #0xc + mov r1, r8 + mov r2, r0 + bl MTX_MultVec43 + add r0, r6, #0x14 + add r3, sp, #0x0 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + mov r0, r3 + mov r1, r3 + bl VEC_Normalize + ldr r0, [r8, #0x20] + ldr r1, [sp, #0x8] + rsb r0, r0, #0x0 + smull r3, r0, r1, r0 + mov r2, #0x800 + adds r1, r3, r2 + ldr r3, [r8, #0x14] + adc r0, r0, #0x0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + ldr r0, [r8, #0x8] + ldr r9, [sp, #0x0] + rsb r0, r0, #0x0 + smull r8, r0, r9, r0 + adds r9, r8, r2 + adc r8, r0, #0x0 + mov r0, r9, lsr #0xc + orr r0, r0, r8, lsl #0x14 + ldr r8, [sp, #0x4] + rsb r3, r3, #0x0 + smull r9, r3, r8, r3 + adds r8, r9, r2 + adc r2, r3, #0x0 + mov r3, r8, lsr #0xc + orr r3, r3, r2, lsl #0x14 + add r0, r0, r3 + adds r1, r1, r0 + ldr r0, [r7, #0x40] + rsbmi r1, r1, #0x0 + ldr r0, [r0, #0x20] + rsb r2, r1, #0x1000 + ldr r0, [r0, #0x0] + mov r9, #0x800 + ldr r0, [r0, #0x48] + ldr r12, [sp, #0x18] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + smull r8, r0, r2, r0 + adds r2, r8, r9 + adc r0, r0, #0x0 + mov r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + add r0, r2, #0x1000 + smull r2, r0, r4, r0 + adds r2, r2, r9 + adc r0, r0, #0x0 + mov lr, r2, lsr #0xc + orr lr, lr, r0, lsl #0x14 + smull r0, r4, r12, r5 + adds r8, r0, r9 + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0xc] + rsb r2, r3, #0x0 + str r0, [sp, #0x78] + ldr r0, [sp, #0x10] + smull r10, r5, r3, r5 + str r0, [sp, #0x7c] + smull r3, r0, r2, lr + adc r4, r4, #0x0 + mov r8, r8, lsr #0xc + orr r8, r8, r4, lsl #0x14 + adds r3, r3, r9 + smull lr, r2, r12, lr + str r8, [sp, #0x54] + adc r0, r0, #0x0 + adds r8, r10, r9 + adc r4, r5, #0x0 + adds r5, lr, r9 + mov r9, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r8, r8, lsr #0xc + orr r8, r8, r4, lsl #0x14 + ldr r3, [sp, #0x14] + adc r0, r2, #0x0 + mov r5, r5, lsr #0xc + orr r5, r5, r0, lsl #0x14 + mov r4, #0x1000 + ldr r2, _0208E24C ; =0x04000454 + str r9, [sp, #0x60] + str r8, [sp, #0x58] + add r0, sp, #0x54 + str r5, [sp, #0x64] + str r1, [sp, #0x6c] + str r1, [sp, #0x70] + str r1, [sp, #0x5c] + str r1, [sp, #0x68] + str r4, [sp, #0x74] + str r3, [sp, #0x80] + str r1, [r2, #0x0] + bl G3_MultMtx43 + b _0208E1C8 +_0208DF1C: + ldr r3, [r6, #0x8] + ldr r1, [r6, #0x38] + ldr r0, [r2, #0x4] + add r1, r3, r1 + sub r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [r7, #0x40] + ldr r2, [r6, #0xc] + ldr r0, [r0, #0x20] + ldr r1, [r6, #0x3c] + ldr r0, [r0, #0x0] + add r1, r2, r1 + ldr r0, [r0, #0x8] + add r9, sp, #0x18 + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [r7, #0x40] + ldr r2, [r6, #0x10] + ldr r0, [r0, #0x20] + ldr r1, [r6, #0x40] + ldr r0, [r0, #0x0] + add r2, r2, r1 + ldr r1, [r0, #0xc] + add r0, r6, #0x14 + sub r1, r2, r1 + str r1, [sp, #0x14] + ldmia r0, {r0-r2} + stmia r9, {r0-r2} + ldr r0, [r8, #0x8] + add r1, sp, #0x24 + str r0, [sp, #0x24] + ldr r2, [r8, #0x14] + mov r0, r9 + str r2, [sp, #0x28] + ldr r3, [r8, #0x20] + mov r2, r9 + str r3, [sp, #0x2c] + bl VEC_CrossProduct + ldr r0, [sp, #0x18] + cmp r0, #0x0 + bne _0208DFE0 + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _0208DFE0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x88 + ldmeqia sp!, {r4-r10,lr} + bxeq lr +_0208DFE0: + add r0, sp, #0x18 + mov r1, r0 + bl VEC_Normalize + add r1, sp, #0x30 + mov r0, r8 + bl MI_Copy36B + add r0, sp, #0x18 + add r1, sp, #0x30 + mov r2, r0 + bl MTX_MultVec33 + add r0, sp, #0xc + mov r1, r8 + mov r2, r0 + bl MTX_MultVec43 + add r0, r6, #0x14 + add r3, sp, #0x0 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + mov r0, r3 + mov r1, r3 + bl VEC_Normalize + ldr r0, [r8, #0x20] + ldr r1, [sp, #0x8] + rsb r0, r0, #0x0 + smull r3, r0, r1, r0 + mov r2, #0x800 + adds r1, r3, r2 + ldr r3, [r8, #0x14] + adc r0, r0, #0x0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + ldr r0, [r8, #0x8] + ldr r9, [sp, #0x0] + rsb r0, r0, #0x0 + smull r8, r0, r9, r0 + adds r9, r8, r2 + adc r8, r0, #0x0 + mov r0, r9, lsr #0xc + orr r0, r0, r8, lsl #0x14 + ldr r8, [sp, #0x4] + rsb r3, r3, #0x0 + smull r9, r3, r8, r3 + adds r8, r9, r2 + adc r2, r3, #0x0 + mov r3, r8, lsr #0xc + orr r3, r3, r2, lsl #0x14 + add r0, r0, r3 + adds r1, r1, r0 + ldr r0, [r7, #0x40] + rsbmi r1, r1, #0x0 + ldr r0, [r0, #0x20] + rsb r2, r1, #0x1000 + ldr r0, [r0, #0x0] + mov r9, #0x800 + ldr r0, [r0, #0x48] + ldr lr, [sp, #0x18] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + smull r8, r0, r2, r0 + adds r2, r8, r9 + adc r0, r0, #0x0 + mov r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + add r0, r2, #0x1000 + smull r2, r0, r4, r0 + adds r2, r2, r9 + adc r0, r0, #0x0 + mov r8, r2, lsr #0xc + orr r8, r8, r0, lsl #0x14 + smull r0, r4, lr, r5 + adds r12, r0, r9 + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0xc] + rsb r2, r3, #0x0 + str r0, [sp, #0x78] + ldr r0, [sp, #0x10] + smull r10, r5, r3, r5 + str r0, [sp, #0x7c] + smull r3, r0, r2, r8 + adc r4, r4, #0x0 + mov r12, r12, lsr #0xc + adds r3, r3, r9 + orr r12, r12, r4, lsl #0x14 + adc r0, r0, #0x0 + adds r10, r10, r9 + smull r8, r2, lr, r8 + adc r4, r5, #0x0 + adds r5, r8, r9 + mov r9, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r8, r10, lsr #0xc + orr r8, r8, r4, lsl #0x14 + ldr r3, [sp, #0x14] + adc r0, r2, #0x0 + mov r2, r5, lsr #0xc + orr r2, r2, r0, lsl #0x14 + mov r4, #0x1000 + ldr r0, _0208E24C ; =0x04000454 + str r12, [sp, #0x54] + str r9, [sp, #0x60] + str r8, [sp, #0x58] + str r1, [sp, #0x6c] + str r2, [sp, #0x64] + str r1, [sp, #0x70] + str r1, [sp, #0x5c] + str r1, [sp, #0x68] + str r4, [sp, #0x74] + str r3, [sp, #0x80] + str r1, [r0, #0x0] + ldr r0, [r7, #0x40] + ldr r1, _0208E250 ; =0x04000470 + ldr r2, [r0, #0x20] + add r0, sp, #0x54 + ldr r2, [r2, #0x0] + ldr r4, [r2, #0xc] + ldr r3, [r2, #0x8] + ldr r2, [r2, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x0] + str r4, [r1, #0x0] + bl G3_MultMtx43 +_0208E1C8: + ldr r0, [r7, #0x40] + ldrh r4, [r6, #0x36] + ldrh r5, [r0, #0x72] + ldr r1, _0208E254 ; =0x04000480 + and r2, r4, #0x1f + and r0, r5, #0x1f + mul r3, r2, r0 + and r2, r4, #0x3e0 + and r0, r5, #0x3e0 + mul r0, r2, r0 + and r4, r4, #0x7c00 + and r2, r5, #0x7c00 + mul r5, r4, r2 + mov r2, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r5, asr #0x19 + orr r0, r2, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r2, [r7, #0x40] + ldr r1, [r2, #0x20] + ldrsh r0, [r2, #0x78] + ldr r3, [r1, #0x0] + ldrsh r1, [r2, #0x7a] + ldrsh r2, [r3, #0x50] + ldrsh r3, [r3, #0x52] + bl FUN_0208ECA0 + add sp, sp, #0x88 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_0208E248: .word 0x040004A4 +_0208E24C: .word 0x04000454 +_0208E250: .word 0x04000470 +_0208E254: .word 0x04000480 + + arm_func_start FUN_0208E258 +FUN_0208E258: ; 0x0208E258 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x40 + mov r6, r1 + ldrh r1, [r6, #0x2e] + mov r7, r0 + ldr r4, [r7, #0x40] + mov r0, r1, lsl #0x16 + mov r2, r1, lsl #0x1b + mov r0, r0, lsr #0x1b + mov r2, r2, lsr #0x1b + add r0, r0, #0x1 + mul r3, r2, r0 + ldr r2, [r4, #0x20] + ldr r0, [r7, #0x3c] + ldr r4, [r2, #0x0] + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x1a + orr r1, r0, #0xc0 + ldrsh r0, [r4, #0x30] + movs r4, r3, asr #0x5 + orr r3, r1, r2, lsl #0x18 + ldr r1, [r7, #0x44] + ldr r2, _0208E698 ; =0x040004A4 + orr r3, r3, r4, lsl #0x10 + str r3, [r2, #0x0] + addeq sp, sp, #0x40 + ldr r2, [r2, #0x0] + ldmeqia sp!, {r4-r10,lr} + bxeq lr + ldr r4, [r6, #0x30] + ldr r2, [r7, #0x40] + smull r3, r5, r4, r0 + ldr r0, [r2, #0x20] + mov r8, #0x800 + adds r2, r3, r8 + ldr r3, [r0, #0x0] + adc r9, r5, #0x0 + ldr r0, [r3, #0x48] + mov r5, r2, lsr #0xc + mov r0, r0, lsl #0x1 + mov r2, r4, asr #0x1f + orr r5, r5, r9, lsl #0x14 + movs r0, r0, lsr #0x1d + mov r9, #0x0 + beq _0208E320 + cmp r0, #0x1 + beq _0208E35C + cmp r0, #0x2 + beq _0208E378 + b _0208E39C +_0208E320: + ldrsh r0, [r6, #0x34] + mov lr, r0, asr #0x1f + umull r12, r10, r4, r0 + mla r10, r4, lr, r10 + smull lr, r4, r5, r0 + mla r10, r2, r0, r10 + adds r0, lr, r8 + adc lr, r4, r9 + adds r2, r12, r8 + mov r5, r0, lsr #0xc + adc r0, r10, r9 + mov r4, r2, lsr #0xc + orr r5, r5, lr, lsl #0x14 + orr r4, r4, r0, lsl #0x14 + b _0208E39C +_0208E35C: + ldrsh r0, [r6, #0x34] + smull r2, r0, r5, r0 + adds r2, r2, r8 + adc r0, r0, r9 + mov r5, r2, lsr #0xc + orr r5, r5, r0, lsl #0x14 + b _0208E39C +_0208E378: + ldrsh r10, [r6, #0x34] + mov r0, r10, asr #0x1f + umull lr, r12, r4, r10 + mla r12, r4, r0, r12 + adds r4, lr, r8 + mla r12, r2, r10, r12 + adc r0, r12, r9 + mov r4, r4, lsr #0xc + orr r4, r4, r0, lsl #0x14 +_0208E39C: + ldr r0, [r3, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208E4BC + ldr r3, [r6, #0x8] + ldr r2, [r6, #0x38] + add r0, sp, #0x0 + add r2, r3, r2 + str r2, [sp, #0x0] + ldr r8, [r6, #0xc] + ldr r3, [r6, #0x3c] + mov r2, r0 + add r3, r8, r3 + str r3, [sp, #0x4] + ldr r8, [r6, #0x10] + ldr r3, [r6, #0x40] + add r3, r8, r3 + str r3, [sp, #0x8] + bl MTX_MultVec43 + ldrh r0, [r6, #0x20] + ldr r2, _0208E69C ; =0x020FFA38 + mov r9, #0x0 + mov r0, r0, asr #0x4 + mov r3, r0, lsl #0x1 + mov r0, r3, lsl #0x1 + ldrsh r1, [r2, r0] + add r0, r3, #0x1 + mov r0, r0, lsl #0x1 + ldrsh r0, [r2, r0] + mov lr, #0x1000 + ldr r3, [sp, #0x0] + ldr r2, [sp, #0x4] + str r3, [sp, #0x30] + smull r12, r10, r1, r5 + str lr, [sp, #0x2c] + rsb r8, r1, #0x0 + ldr r1, [sp, #0x8] + smull lr, r5, r0, r5 + mov r3, #0x800 + str r2, [sp, #0x34] + adds r2, lr, r3 + adc r5, r5, #0x0 + adds r12, r12, r3 + mov lr, r2, lsr #0xc + orr lr, lr, r5, lsl #0x14 + smull r5, r2, r8, r4 + adc r10, r10, #0x0 + mov r8, r12, lsr #0xc + orr r8, r8, r10, lsl #0x14 + adds r5, r5, r3 + smull r10, r4, r0, r4 + adc r0, r2, #0x0 + adds r2, r10, r3 + mov r5, r5, lsr #0xc + orr r5, r5, r0, lsl #0x14 + mov r3, r2, lsr #0xc + adc r0, r4, #0x0 + orr r3, r3, r0, lsl #0x14 + ldr r2, _0208E6A0 ; =0x04000454 + str lr, [sp, #0xc] + add r0, sp, #0xc + str r8, [sp, #0x10] + str r9, [sp, #0x14] + str r5, [sp, #0x18] + str r3, [sp, #0x1c] + str r9, [sp, #0x20] + str r9, [sp, #0x24] + str r9, [sp, #0x28] + str r1, [sp, #0x38] + str r9, [r2, #0x0] + bl G3_MultMtx43 + b _0208E620 +_0208E4BC: + ldr r8, [r6, #0x8] + ldr r2, [r6, #0x38] + ldr r0, [r3, #0x4] + add r2, r8, r2 + sub r0, r2, r0 + str r0, [sp, #0x0] + ldr r2, [r7, #0x40] + ldr r8, [r6, #0xc] + ldr r2, [r2, #0x20] + ldr r3, [r6, #0x3c] + ldr r2, [r2, #0x0] + add r3, r8, r3 + ldr r2, [r2, #0x8] + add r0, sp, #0x0 + sub r2, r3, r2 + str r2, [sp, #0x4] + ldr r2, [r7, #0x40] + ldr r8, [r6, #0x10] + ldr r2, [r2, #0x20] + ldr r3, [r6, #0x40] + ldr r2, [r2, #0x0] + add r8, r8, r3 + ldr r3, [r2, #0xc] + mov r2, r0 + sub r3, r8, r3 + str r3, [sp, #0x8] + bl MTX_MultVec43 + ldrh r0, [r6, #0x20] + ldr r2, _0208E69C ; =0x020FFA38 + mov lr, #0x0 + mov r0, r0, asr #0x4 + mov r3, r0, lsl #0x1 + mov r0, r3, lsl #0x1 + ldrsh r1, [r2, r0] + add r0, r3, #0x1 + mov r0, r0, lsl #0x1 + ldrsh r0, [r2, r0] + mov r10, #0x1000 + ldr r3, [sp, #0x0] + ldr r2, [sp, #0x4] + str r3, [sp, #0x30] + smull r9, r8, r1, r5 + str r10, [sp, #0x2c] + rsb r12, r1, #0x0 + smull r10, r5, r0, r5 + ldr r1, [sp, #0x8] + mov r3, #0x800 + str r2, [sp, #0x34] + adds r2, r10, r3 + adc r5, r5, #0x0 + mov r10, r2, lsr #0xc + orr r10, r10, r5, lsl #0x14 + str r1, [sp, #0x38] + adds r9, r9, r3 + str r10, [sp, #0xc] + adc r10, r8, #0x0 + smull r5, r2, r12, r4 + mov r8, r9, lsr #0xc + orr r8, r8, r10, lsl #0x14 + smull r9, r4, r0, r4 + adds r5, r5, r3 + adc r0, r2, #0x0 + adds r2, r9, r3 + mov r3, r5, lsr #0xc + orr r3, r3, r0, lsl #0x14 + adc r0, r4, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + ldr r0, _0208E6A0 ; =0x04000454 + str r8, [sp, #0x10] + str lr, [sp, #0x14] + str r3, [sp, #0x18] + str r2, [sp, #0x1c] + str lr, [sp, #0x20] + str lr, [sp, #0x24] + str lr, [sp, #0x28] + str lr, [r0, #0x0] + ldr r0, [r7, #0x40] + ldr r1, _0208E6A4 ; =0x04000470 + ldr r2, [r0, #0x20] + add r0, sp, #0xc + ldr r2, [r2, #0x0] + ldr r4, [r2, #0xc] + ldr r3, [r2, #0x8] + ldr r2, [r2, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x0] + str r4, [r1, #0x0] + bl G3_MultMtx43 +_0208E620: + ldr r0, [r7, #0x40] + ldrh r4, [r6, #0x36] + ldrh r5, [r0, #0x72] + mov r2, #0x0 + and r1, r4, #0x1f + and r0, r5, #0x1f + mul r3, r1, r0 + and r1, r4, #0x3e0 + and r0, r5, #0x3e0 + mul r0, r1, r0 + and r4, r4, #0x7c00 + and r1, r5, #0x7c00 + mul r5, r4, r1 + mov r1, r3, asr #0x5 + mov r0, r0, asr #0xf + mov r3, r5, asr #0x19 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r3, lsl #0xa + mov r0, r0, lsl #0x10 + ldr r1, _0208E6A8 ; =0x04000480 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r1, [r7, #0x40] + mov r3, r2 + ldrsh r0, [r1, #0x7c] + ldrsh r1, [r1, #0x7e] + bl FUN_0208ECA0 + add sp, sp, #0x40 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_0208E698: .word 0x040004A4 +_0208E69C: .word 0x020FFA38 +_0208E6A0: .word 0x04000454 +_0208E6A4: .word 0x04000470 +_0208E6A8: .word 0x04000480 + + arm_func_start FUN_0208E6AC +FUN_0208E6AC: ; 0x0208E6AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r8, r1 + ldrh r3, [r8, #0x2e] + mov r9, r0 + ldr r1, [r9, #0x40] + mov r0, r3, lsl #0x16 + mov r2, r3, lsl #0x1b + mov r0, r0, lsr #0x1b + ldr r4, [r1, #0x20] + mov r2, r2, lsr #0x1b + ldr r5, [r4, #0x0] + add r0, r0, #0x1 + mul r0, r2, r0 + movs r11, r0, asr #0x5 + mov r3, r3, lsl #0x10 + ldr r2, [r9, #0x3c] + mov r6, r3, lsr #0x1a + orr r3, r2, #0xc0 + ldr r4, [r5, #0x48] + ldrsh r7, [r5, #0x30] + mov r2, r4, lsl #0x1 + ldrh r4, [r1, #0x72] + orr r3, r3, r6, lsl #0x18 + ldrsh r10, [r8, #0x34] + ldrh r5, [r8, #0x36] + ldr r1, [r9, #0x44] + ldr r0, _0208EAE4 ; =0x040004A4 + orr r3, r3, r11, lsl #0x10 + str r3, [r0, #0x0] + mov r2, r2, lsr #0x1d + addeq sp, sp, #0x3c + and r3, r2, #0xff + ldr r0, [r0, #0x0] + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r6, [r8, #0x30] + mov r0, #0x800 + smull r7, r2, r6, r7 + adds r7, r7, r0 + adc r2, r2, #0x0 + mov r7, r7, lsr #0xc + cmp r3, #0x0 + mov lr, r6, asr #0x1f + orr r7, r7, r2, lsl #0x14 + mov r2, #0x0 + bne _0208E7A0 + mov r12, r10, asr #0x1f + umull r11, r3, r6, r10 + mla r3, r6, r12, r3 + mla r3, lr, r10, r3 + smull r6, r10, r7, r10 + adds r6, r6, r0 + adc r10, r10, r2 + adds r11, r11, r0 + adc r0, r3, r2 + mov r7, r6, lsr #0xc + mov r6, r11, lsr #0xc + orr r7, r7, r10, lsl #0x14 + orr r6, r6, r0, lsl #0x14 + b _0208E7E0 +_0208E7A0: + cmp r3, #0x1 + bne _0208E7C0 + smull r10, r3, r7, r10 + adds r7, r10, r0 + adc r0, r3, r2 + mov r7, r7, lsr #0xc + orr r7, r7, r0, lsl #0x14 + b _0208E7E0 +_0208E7C0: + mov r12, r10, asr #0x1f + umull r11, r3, r6, r10 + adds r0, r11, r0 + mla r3, r6, r12, r3 + mla r3, lr, r10, r3 + adc r2, r3, r2 + mov r6, r0, lsr #0xc + orr r6, r6, r2, lsl #0x14 +_0208E7E0: + ldr r0, [r9, #0x40] + ldr r0, [r0, #0x20] + ldr r10, [r0, #0x0] + ldr r0, [r10, #0x0] + mov r0, r0, lsl #0x8 + movs r0, r0, lsr #0x1f + bne _0208E90C + ldr r3, [r8, #0x8] + ldr r2, [r8, #0x38] + add r0, sp, #0x0 + add r2, r3, r2 + str r2, [sp, #0x0] + ldr r10, [r8, #0xc] + ldr r3, [r8, #0x3c] + mov r2, r0 + add r3, r10, r3 + str r3, [sp, #0x4] + ldr r10, [r8, #0x10] + ldr r3, [r8, #0x40] + add r3, r10, r3 + str r3, [sp, #0x8] + bl MTX_MultVec43 + ldrh r0, [r8, #0x20] + ldr r2, _0208EAE8 ; =0x020FFA38 + ldr r12, [sp, #0x0] + mov r0, r0, asr #0x4 + mov r3, r0, lsl #0x1 + mov r0, r3, lsl #0x1 + ldrsh r1, [r2, r0] + add r0, r3, #0x1 + mov r0, r0, lsl #0x1 + ldrsh r0, [r2, r0] + str r12, [sp, #0x30] + mov r12, #0x1000 + ldr r2, [sp, #0x4] + smull r11, r10, r1, r7 + str r12, [sp, #0x2c] + rsb r3, r1, #0x0 + ldr r1, [sp, #0x8] + str r2, [sp, #0x34] + mov r8, #0x0 + smull r12, r7, r0, r7 + mov r2, #0x800 + str r1, [sp, #0x38] + adds r1, r12, r2 + adc r12, r7, #0x0 + adds r7, r11, r2 + mov r11, r1, lsr #0xc + orr r11, r11, r12, lsl #0x14 + smull r12, r1, r3, r6 + adc r10, r10, #0x0 + mov r7, r7, lsr #0xc + orr r7, r7, r10, lsl #0x14 + adds r3, r12, r2 + smull r10, r6, r0, r6 + adc r0, r1, #0x0 + adds r1, r10, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r0, lsl #0x14 + mov r2, r1, lsr #0xc + adc r0, r6, #0x0 + orr r2, r2, r0, lsl #0x14 + ldr r1, _0208EAEC ; =0x04000454 + str r11, [sp, #0xc] + add r0, sp, #0xc + str r7, [sp, #0x10] + str r8, [sp, #0x14] + str r3, [sp, #0x18] + str r2, [sp, #0x1c] + str r8, [sp, #0x20] + str r8, [sp, #0x24] + str r8, [sp, #0x28] + str r8, [r1, #0x0] + bl G3_MultMtx43 + b _0208EA70 +_0208E90C: + ldr r3, [r8, #0x8] + ldr r2, [r8, #0x38] + ldr r0, [r10, #0x4] + add r2, r3, r2 + sub r0, r2, r0 + str r0, [sp, #0x0] + ldr r2, [r9, #0x40] + ldr r10, [r8, #0xc] + ldr r2, [r2, #0x20] + ldr r3, [r8, #0x3c] + ldr r2, [r2, #0x0] + add r3, r10, r3 + ldr r2, [r2, #0x8] + add r0, sp, #0x0 + sub r2, r3, r2 + str r2, [sp, #0x4] + ldr r2, [r9, #0x40] + ldr r10, [r8, #0x10] + ldr r2, [r2, #0x20] + ldr r3, [r8, #0x40] + ldr r2, [r2, #0x0] + add r10, r10, r3 + ldr r3, [r2, #0xc] + mov r2, r0 + sub r3, r10, r3 + str r3, [sp, #0x8] + bl MTX_MultVec43 + ldrh r0, [r8, #0x20] + ldr r2, _0208EAE8 ; =0x020FFA38 + mov r8, #0x0 + mov r0, r0, asr #0x4 + mov r3, r0, lsl #0x1 + mov r0, r3, lsl #0x1 + ldrsh r1, [r2, r0] + add r0, r3, #0x1 + mov r0, r0, lsl #0x1 + ldrsh r0, [r2, r0] + ldr r12, [sp, #0x0] + ldr r2, [sp, #0x4] + str r12, [sp, #0x30] + mov r12, #0x1000 + str r2, [sp, #0x34] + smull r11, r10, r1, r7 + str r12, [sp, #0x2c] + rsb r3, r1, #0x0 + ldr r1, [sp, #0x8] + smull r12, r7, r0, r7 + mov r2, #0x800 + str r1, [sp, #0x38] + adds r1, r12, r2 + adc r12, r7, #0x0 + adds r7, r11, r2 + mov r11, r1, lsr #0xc + orr r11, r11, r12, lsl #0x14 + smull r12, r1, r3, r6 + adc r10, r10, #0x0 + mov r7, r7, lsr #0xc + orr r7, r7, r10, lsl #0x14 + smull r10, r6, r0, r6 + adds r3, r12, r2 + adc r0, r1, #0x0 + adds r1, r10, r2 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + adc r0, r6, #0x0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x1c] + ldr r0, _0208EAEC ; =0x04000454 + str r11, [sp, #0xc] + str r7, [sp, #0x10] + str r8, [sp, #0x14] + str r2, [sp, #0x18] + str r8, [sp, #0x20] + str r8, [sp, #0x24] + str r8, [sp, #0x28] + str r8, [r0, #0x0] + ldr r0, [r9, #0x40] + ldr r1, _0208EAF0 ; =0x04000470 + ldr r2, [r0, #0x20] + add r0, sp, #0xc + ldr r2, [r2, #0x0] + ldr r6, [r2, #0xc] + ldr r3, [r2, #0x8] + ldr r2, [r2, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x0] + str r6, [r1, #0x0] + bl G3_MultMtx43 +_0208EA70: + and r1, r5, #0x1f + and r0, r4, #0x1f + mul r2, r1, r0 + and r1, r5, #0x3e0 + and r0, r4, #0x3e0 + mul r0, r1, r0 + and r3, r5, #0x7c00 + and r1, r4, #0x7c00 + mul r4, r3, r1 + mov r1, r2, asr #0x5 + mov r0, r0, asr #0xf + mov r2, r4, asr #0x19 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r2, lsl #0xa + mov r0, r0, lsl #0x10 + ldr r1, _0208EAF4 ; =0x04000480 + mov r0, r0, lsr #0x10 + str r0, [r1, #0x0] + ldr r2, [r9, #0x40] + ldr r1, [r2, #0x20] + ldrsh r0, [r2, #0x78] + ldr r3, [r1, #0x0] + ldrsh r1, [r2, #0x7a] + ldrsh r2, [r3, #0x50] + ldrsh r3, [r3, #0x52] + bl FUN_0208ECA0 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0208EAE4: .word 0x040004A4 +_0208EAE8: .word 0x020FFA38 +_0208EAEC: .word 0x04000454 +_0208EAF0: .word 0x04000470 +_0208EAF4: .word 0x04000480 + + arm_func_start FUN_0208EAF8 +FUN_0208EAF8: ; 0x0208EAF8 + str r1, [r2, #0x0] + mov r12, #0x0 + str r12, [r2, #0xc] + str r0, [r2, #0x18] + str r12, [r2, #0x24] + str r12, [r2, #0x4] + mov r3, #0x1000 + str r3, [r2, #0x10] + str r12, [r2, #0x1c] + str r12, [r2, #0x28] + rsb r0, r0, #0x0 + str r0, [r2, #0x8] + str r12, [r2, #0x14] + str r1, [r2, #0x20] + str r12, [r2, #0x2c] + bx lr + + arm_func_start FUN_0208EB38 +FUN_0208EB38: ; 0x0208EB38 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _0208EBDC ; =0x00000555 + rsb r7, r1, #0x1000 + ldr ip, _0208EBE0 ; =0x0000093D + mov r4, #0x0 + umull r9, r8, r7, r3 + umull r6, r5, r0, r12 + mov lr, #0x800 + adds r9, r9, lr + mla r8, r7, r4, r8 + mov r7, r7, asr #0x1f + mla r8, r7, r3, r8 + adc r7, r8, #0x0 + mov r3, r9, lsr #0xc + adds r6, r6, lr + orr r3, r3, r7, lsl #0x14 + add r1, r3, r1 + mla r5, r0, r4, r5 + mov r0, r0, asr #0x1f + mla r5, r0, r12, r5 + adc r0, r5, #0x0 + mov r5, r6, lsr #0xc + orr r5, r5, r0, lsl #0x14 + str r1, [r2, #0x0] + add r12, r3, r5 + str r12, [r2, #0xc] + sub r0, r3, r5 + str r0, [r2, #0x18] + str r4, [r2, #0x24] + str r0, [r2, #0x4] + str r1, [r2, #0x10] + str r12, [r2, #0x1c] + str r4, [r2, #0x28] + str r12, [r2, #0x8] + str r0, [r2, #0x14] + str r1, [r2, #0x20] + str r4, [r2, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0208EBDC: .word 0x00000555 +_0208EBE0: .word 0x0000093D + + arm_func_start FUN_0208EBE4 +FUN_0208EBE4: ; 0x0208EBE4 + stmdb sp!, {r4-r8,lr} + sub r7, r2, #0x1000 + add r5, r3, #0x1000 + add r4, r2, #0x1000 + mov r2, r0, lsl #0x8 + mov r0, r1, lsl #0x8 + sub r3, r3, #0x1000 + mov r0, r0, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr ip, _0208EC8C ; =0x04000500 + mov r8, #0x1 + ldr r6, _0208EC90 ; =0x000003FF + mov r2, r7, lsl #0x10 + mov lr, r5, lsl #0x10 + mov r4, r4, lsl #0x10 + mov r5, r3, lsl #0x10 + ldr r3, _0208EC94 ; =0x04000488 + str r8, [r12, #0x0] + mov r12, #0x0 + and r2, r6, r2, asr #0x16 + and r7, r6, lr, asr #0x16 + and lr, r6, r4, asr #0x16 + and r4, r6, r5, asr #0x16 + ldr r6, _0208EC98 ; =0x04000490 + str r12, [r3, #0x0] + orr r5, r2, r7, lsl #0x14 + str r5, [r6, #0x0] + str r1, [r3, #0x0] + orr r5, lr, r7, lsl #0x14 + str r5, [r6, #0x0] + orr r1, r1, r0, lsl #0x10 + str r1, [r3, #0x0] + orr r1, lr, r4, lsl #0x14 + str r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + str r0, [r3, #0x0] + orr r1, r2, r4, lsl #0x14 + ldr r0, _0208EC9C ; =0x04000504 + str r1, [r6, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208EC8C: .word 0x04000500 +_0208EC90: .word 0x000003FF +_0208EC94: .word 0x04000488 +_0208EC98: .word 0x04000490 +_0208EC9C: .word 0x04000504 + + arm_func_start FUN_0208ECA0 +FUN_0208ECA0: ; 0x0208ECA0 + stmdb sp!, {r4-r8,lr} + add r12, r3, #0x1000 + sub r5, r2, #0x1000 + add r4, r2, #0x1000 + mov r2, r0, lsl #0x8 + mov r0, r1, lsl #0x8 + sub r3, r3, #0x1000 + mov r0, r0, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr r7, _0208ED48 ; =0x04000500 + mov r8, #0x1 + ldr r6, _0208ED4C ; =0x000003FF + mov r2, r12, lsl #0x10 + mov lr, r5, lsl #0x10 + mov r4, r4, lsl #0x10 + mov r5, r3, lsl #0x10 + ldr r3, _0208ED50 ; =0x04000488 + str r8, [r7, #0x0] + mov r12, #0x0 + and r7, r6, r2, asr #0x16 + and r2, r6, lr, asr #0x16 + and lr, r6, r4, asr #0x16 + and r4, r6, r5, asr #0x16 + ldr r6, _0208ED54 ; =0x04000490 + str r12, [r3, #0x0] + orr r5, r2, r7, lsl #0xa + str r5, [r6, #0x0] + str r1, [r3, #0x0] + orr r5, lr, r7, lsl #0xa + str r5, [r6, #0x0] + orr r1, r1, r0, lsl #0x10 + str r1, [r3, #0x0] + orr r1, lr, r4, lsl #0xa + str r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + str r0, [r3, #0x0] + orr r1, r2, r4, lsl #0xa + ldr r0, _0208ED58 ; =0x04000504 + str r1, [r6, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0208ED48: .word 0x04000500 +_0208ED4C: .word 0x000003FF +_0208ED50: .word 0x04000488 +_0208ED54: .word 0x04000490 +_0208ED58: .word 0x04000504 + + arm_func_start FUN_0208ED5C +FUN_0208ED5C: ; 0x0208ED5C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r3, [r1, #0x20] + str r1, [sp, #0x0] + ldr r6, [r3, #0x14] + mov r8, r0 + ldrb r3, [r6, #0x8] + ldrb r0, [r6, #0xc] + str r2, [sp, #0x4] + mov r3, r3, lsl #0xc + mov r2, r3, asr #0x1f + mov r2, r2, lsl #0x4 + mov r1, #0x800 + mov r4, r3, lsl #0x4 + adds r4, r4, r1 + orr r2, r2, r3, lsr #0x1c + adc r1, r2, #0x0 + mov r5, r4, lsr #0xc + cmp r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x8] + orr r5, r5, r1, lsl #0x14 + addle sp, sp, #0x24 + ldmleia sp!, {r4-r11,lr} + bxle lr + ldr sb, _0208F06C ; =0x021C8C5C + str r0, [sp, #0x18] + str r0, [sp, #0x14] + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + mov r0, #0x1000 + mov r4, r5, asr #0x1f + str r0, [sp, #0x10] +_0208EDE0: + ldr r0, [sp, #0x4] + bl FUN_02090A58 + movs r7, r0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, [sp, #0x0] + mov r1, r7 + add r0, r0, #0x14 + bl FUN_02090AA4 + add r0, r7, #0x38 + add r1, r8, #0x8 + str r0, [sp, #0xc] + add r10, r7, #0x8 + ldmia r1, {r0-r2} + stmia r10, {r0-r2} + ldr r10, [r8, #0x14] + ldr r12, [r9, #0x0] + ldr r1, _0208F070 ; =0x5EEDF715 + ldr r0, _0208F074 ; =0x1B0CB173 + mov r2, r10, asr #0x1f + mla r0, r12, r1, r0 + str r0, [r9, #0x0] + umull lr, r12, r10, r5 + mla r12, r10, r4, r12 + ldrsh r1, [r6, #0x2] + mov r0, r0, lsr #0x17 + mla r12, r2, r5, r12 + mul r0, r1, r0 + mov r3, #0x800 + adds r2, lr, r3 + sub r0, r0, r1, lsl #0x8 + adc r10, r12, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r10, lsl #0x14 + add r0, r2, r0, asr #0x8 + str r0, [r7, #0x14] + ldr r10, [r8, #0x18] + ldr r12, [r9, #0x0] + ldr r1, _0208F070 ; =0x5EEDF715 + ldr r0, _0208F074 ; =0x1B0CB173 + mov r2, r10, asr #0x1f + mla r0, r12, r1, r0 + str r0, [r9, #0x0] + umull lr, r12, r10, r5 + mla r12, r10, r4, r12 + mla r12, r2, r5, r12 + adds r2, lr, r3 + ldrsh r1, [r6, #0x2] + mov r0, r0, lsr #0x17 + adc r10, r12, #0x0 + mul r0, r1, r0 + mov r2, r2, lsr #0xc + sub r0, r0, r1, lsl #0x8 + orr r2, r2, r10, lsl #0x14 + add r0, r2, r0, asr #0x8 + str r0, [r7, #0x18] + ldr r12, [r8, #0x1c] + ldr r10, [r9, #0x0] + ldr r1, _0208F070 ; =0x5EEDF715 + ldr r0, _0208F074 ; =0x1B0CB173 + mov r2, r12, asr #0x1f + mla r0, r10, r1, r0 + umull r10, lr, r12, r5 + str r0, [r9, #0x0] + mla lr, r12, r4, lr + adds r3, r10, r3 + mla lr, r2, r5, lr + ldrsh r1, [r6, #0x2] + mov r0, r0, lsr #0x17 + adc r2, lr, #0x0 + mul r0, r1, r0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r0, r0, r1, lsl #0x8 + add r0, r3, r0, asr #0x8 + ldr r3, [sp, #0xc] + add r11, r8, #0x38 + str r0, [r7, #0x1c] + ldmia r11, {r0-r2} + stmia r3, {r0-r2} + ldrb r0, [r6, #0x9] + ldrsh r1, [r8, #0x34] + ldr r2, [r8, #0x30] + add r0, r0, #0x1 + mul r1, r2, r1 + mov r1, r1, asr #0xc + mul r0, r1, r0 + mov r0, r0, asr #0x6 + str r0, [r7, #0x30] + ldr r0, [sp, #0x10] + strh r0, [r7, #0x34] + ldrh r0, [r6, #0x0] + mov r0, r0, lsl #0x19 + movs r0, r0, lsr #0x1f + ldrneh r0, [r6, #0xa] + strneh r0, [r7, #0x36] + ldreqh r0, [r8, #0x36] + streqh r0, [r7, #0x36] + ldrh r1, [r8, #0x2e] + ldrh r0, [r7, #0x2e] + mov r2, r1, lsl #0x1b + mov r1, r1, lsl #0x16 + mov r1, r1, lsr #0x1b + mov r2, r2, lsr #0x1b + add r1, r1, #0x1 + mul r1, r2, r1 + mov r1, r1, lsl #0xb + mov r1, r1, lsr #0x10 + bic r0, r0, #0x1f + and r1, r1, #0x1f + orr r0, r0, r1 + strh r0, [r7, #0x2e] + ldrh r0, [r7, #0x2e] + bic r0, r0, #0x3e0 + orr r0, r0, #0x3e0 + strh r0, [r7, #0x2e] + ldrh r0, [r6, #0x0] + mov r0, r0, lsl #0x1b + movs r0, r0, lsr #0x1e + beq _0208EFE4 + cmp r0, #0x1 + beq _0208EFF4 + cmp r0, #0x2 + ldreqh r0, [r8, #0x20] + streqh r0, [r7, #0x20] + ldreqsh r0, [r8, #0x22] + streqh r0, [r7, #0x22] + b _0208F004 +_0208EFE4: + ldr r0, [sp, #0x14] + strh r0, [r7, #0x20] + strh r0, [r7, #0x22] + b _0208F004 +_0208EFF4: + ldrh r0, [r8, #0x20] + strh r0, [r7, #0x20] + ldr r0, [sp, #0x18] + strh r0, [r7, #0x22] +_0208F004: + ldrh r1, [r6, #0x6] + ldr r0, _0208F078 ; =0x0000FFFF + strh r1, [r7, #0x24] + ldr r1, [sp, #0x1c] + strh r1, [r7, #0x26] + ldrb r1, [r6, #0xf] + strb r1, [r7, #0x2c] + ldrh r1, [r8, #0x24] + mov r1, r1, lsr #0x1 + bl _s32_div_f + strh r0, [r7, #0x28] + ldrh r1, [r8, #0x24] + ldr r0, _0208F078 ; =0x0000FFFF + bl _s32_div_f + strh r0, [r7, #0x2a] + ldr r0, [sp, #0x20] + strb r0, [r7, #0x2d] + ldr r0, [sp, #0x8] + ldrb r1, [r6, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0x8] + cmp r0, r1 + blt _0208EDE0 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0208F06C: .word 0x021C8C5C +_0208F070: .word 0x5EEDF715 +_0208F074: .word 0x1B0CB173 +_0208F078: .word 0x0000FFFF + + arm_func_start FUN_0208F07C +FUN_0208F07C: ; 0x0208F07C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc4 + mov r9, r0 + ldr r0, [r9, #0x20] + ldrsh r3, [r9, #0x4e] + str r0, [sp, #0x4] + ldr r0, [r9, #0x58] + ldr r2, _0208FD88 ; =0x00000FFF + add r3, r0, r3 + ldr r0, [sp, #0x4] + str r1, [sp, #0x0] + ldr r8, [r0, #0x0] + and r0, r3, r2 + strh r0, [r9, #0x4e] + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0x1c + mov r1, r0, lsr #0x1c + mov r0, r3, asr #0xc + cmp r1, #0x2 + str r0, [sp, #0xc] + beq _0208F0E4 + cmp r1, #0x3 + beq _0208F0E4 + sub r0, r1, #0x5 + cmp r0, #0x4 + bhi _0208F0EC +_0208F0E4: + mov r0, r9 + bl FUN_0208FF08 +_0208F0EC: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + mov r0, #0x0 + str r0, [sp, #0x8] + addle sp, sp, #0xc4 + ldmleia sp!, {r4-r11,lr} + bxle lr + str r0, [sp, #0x18] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0x1c] + mov r0, #0x1000 + str r0, [sp, #0x34] + ldr r0, [sp, #0x8] + ldr r6, _0208FD8C ; =0x021C8C5C + ldr r4, _0208FD90 ; =0x5EEDF715 + ldr r5, _0208FD94 ; =0x1B0CB173 + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + str r0, [sp, #0x40] +_0208F13C: + ldr r0, [sp, #0x0] + bl FUN_02090A58 + movs r7, r0 + addeq sp, sp, #0xc4 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + add r0, r9, #0x8 + mov r1, r7 + bl FUN_02090AA4 +_0208F160: ; 0x0208F160 + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0x1c + mov r0, r0, lsr #0x1c + cmp r0, #0x9 + addls pc, pc, r0, lsl #0x2 + b _0208F87C +_0208F178: + b _0208F1A0 +_0208F17C: + b _0208F1BC +_0208F180: + b _0208F22C +_0208F184: + b _0208F294 +_0208F188: + b _0208F328 +_0208F18C: + b _0208F428 +_0208F190: + b _0208F720 +_0208F194: + b _0208F7A4 +_0208F198: + b _0208F4E4 +_0208F19C: + b _0208F5B4 +_0208F1A0: + ldr r0, [sp, #0x1c] + str r0, [r7, #0x10] + ldr r0, [r7, #0x10] + str r0, [r7, #0xc] + ldr r0, [r7, #0xc] + str r0, [r7, #0x8] + b _0208F87C +_0208F1BC: + add r0, r7, #0x8 + bl FUN_02090B50 + ldr r2, [r7, #0x8] + ldr r1, [r9, #0x5c] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x8] + ldr r2, [r7, #0xc] + ldr r1, [r9, #0x5c] + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r9, #0x5c] + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r0, r1, #0x0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [r7, #0x10] + b _0208F87C +_0208F22C: + add r0, sp, #0x58 + bl FUN_02090AF4 + ldr r2, [sp, #0x58] + ldr r0, [r9, #0x5c] + mov r1, #0x800 + smull r3, r0, r2, r0 + adds r2, r3, r1 + adc r0, r0, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x58] + ldr r3, [sp, #0x5c] + ldr r2, [r9, #0x5c] + add r0, r7, #0x8 + smull r10, r2, r3, r2 + adds r3, r10, r1 + adc r1, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + ldr r1, [sp, #0x20] + str r2, [sp, #0x5c] + str r1, [sp, #0x60] + add r1, sp, #0x58 + mov r2, r9 + bl FUN_0208FDA8 + b _0208F87C +_0208F294: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0xc] + bl _s32_div_f + ldr r1, [sp, #0x18] + mov r0, r0, asr #0x4 + add r1, r1, #0x10000 + mov r2, r0, lsl #0x1 + str r1, [sp, #0x18] + ldr r0, _0208FD98 ; =0x020FFA38 + mov r1, r2, lsl #0x1 + ldrsh r0, [r0, r1] + add r1, r2, #0x1 + mov r2, r1, lsl #0x1 + ldr r1, _0208FD98 ; =0x020FFA38 + ldrsh r3, [r1, r2] + ldr r2, [r9, #0x5c] + mov r1, #0x800 + smull r10, r2, r0, r2 + adds r10, r10, r1 + adc r0, r2, #0x0 + mov r2, r10, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x64] + ldr r2, [r9, #0x5c] + add r0, r7, #0x8 + smull r10, r2, r3, r2 + adds r3, r10, r1 + adc r1, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + ldr r1, [sp, #0x24] + str r2, [sp, #0x68] + str r1, [sp, #0x6c] + add r1, sp, #0x64 + mov r2, r9 + bl FUN_0208FDA8 + b _0208F87C +_0208F328: + add r0, r7, #0x8 + bl FUN_02090B50 + ldr r1, [r6, #0x0] + mov r0, #0x800 + mla r2, r1, r4, r5 + str r2, [r6, #0x0] + mov r1, r2, lsr #0x17 + mov r1, r1, lsl #0xc + sub r1, r1, #0x100000 + mov r1, r1, asr #0x8 + ldr r3, [r7, #0x8] + ldr r2, [r9, #0x5c] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + smull r2, r1, r3, r1 + adds r2, r2, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x8] + ldr r1, [r6, #0x0] + mla r2, r1, r4, r5 + str r2, [r6, #0x0] + mov r1, r2, lsr #0x17 + mov r1, r1, lsl #0xc + sub r1, r1, #0x100000 + mov r1, r1, asr #0x8 + ldr r3, [r7, #0xc] + ldr r2, [r9, #0x5c] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + smull r2, r1, r3, r1 + adds r2, r2, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0xc] + ldr r1, [r6, #0x0] + mla r2, r1, r4, r5 + str r2, [r6, #0x0] + mov r1, r2, lsr #0x17 + mov r1, r1, lsl #0xc + sub r1, r1, #0x100000 + mov r1, r1, asr #0x8 + ldr r3, [r7, #0x10] + ldr r2, [r9, #0x5c] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + smull r2, r1, r3, r1 + adds r2, r2, r0 + adc r0, r1, #0x0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [r7, #0x10] + b _0208F87C +_0208F428: + add r0, sp, #0x70 + bl FUN_02090AF4 +_0208F430: ; 0x0208F430 + ldr r0, [r6, #0x0] + ldr r3, [sp, #0x70] + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + ldr r0, [r9, #0x5c] + mov r2, #0x800 + smull r10, r0, r3, r0 + adds r10, r10, r2 + adc r3, r0, #0x0 + mov r0, r10, lsr #0xc + orr r0, r0, r3, lsl #0x14 + mov r3, r1, lsr #0x17 + mov r3, r3, lsl #0xc + sub r3, r3, #0x100000 + mov r3, r3, asr #0x8 + smull r10, r3, r0, r3 + adds r10, r10, r2 + adc r0, r3, #0x0 + mov r3, r10, lsr #0xc + orr r3, r3, r0, lsl #0x14 + mla r0, r1, r4, r5 + str r0, [r6, #0x0] + str r3, [sp, #0x70] + mov r0, r0, lsr #0x17 + mov r0, r0, lsl #0xc + sub r0, r0, #0x100000 + mov r1, r0, asr #0x8 + ldr r10, [sp, #0x74] + ldr r3, [r9, #0x5c] + add r0, r7, #0x8 + smull r11, r3, r10, r3 + adds r10, r11, r2 + adc r3, r3, #0x0 + mov r10, r10, lsr #0xc + orr r10, r10, r3, lsl #0x14 + smull r3, r1, r10, r1 + adds r2, r3, r2 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x74] + add r1, sp, #0x70 + mov r2, r9 + bl FUN_0208FDA8 + b _0208F87C +_0208F4E4: + add r0, r7, #0x8 + bl FUN_02090B50 + add r0, r9, #0x84 + add r1, r9, #0x8a + add r2, sp, #0x44 + bl VEC_Fx16CrossProduct + ldrsh r1, [sp, #0x46] + ldrsh r0, [sp, #0x48] + ldrsh r2, [sp, #0x44] + str r1, [sp, #0x80] + str r0, [sp, #0x84] + add r0, sp, #0x7c + add r1, r7, #0x8 + str r2, [sp, #0x7c] + bl VEC_DotProduct +_0208F520: ; 0x0208F520 + cmp r0, #0x0 + bgt _0208F54C + ldr r0, [r7, #0x8] + rsb r0, r0, #0x0 + str r0, [r7, #0x8] + ldr r0, [r7, #0xc] + rsb r0, r0, #0x0 + str r0, [r7, #0xc] + ldr r0, [r7, #0x10] + rsb r0, r0, #0x0 + str r0, [r7, #0x10] +_0208F54C: + ldr r2, [r7, #0x8] + ldr r1, [r9, #0x5c] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x8] + ldr r2, [r7, #0xc] + ldr r1, [r9, #0x5c] + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r9, #0x5c] + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r0, r1, #0x0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [r7, #0x10] + b _0208F87C +_0208F5B4: + add r0, r7, #0x8 + bl FUN_02090B50 + add r0, r9, #0x84 + add r1, r9, #0x8a + add r2, sp, #0x4a + bl VEC_Fx16CrossProduct + ldrsh r1, [sp, #0x4c] + ldrsh r0, [sp, #0x4e] + ldrsh r2, [sp, #0x4a] + str r1, [sp, #0x8c] + str r0, [sp, #0x90] + add r0, sp, #0x88 + add r1, r7, #0x8 + str r2, [sp, #0x88] + bl VEC_DotProduct +_0208F5F0: ; 0x0208F5F0 + cmp r0, #0x0 + bge _0208F61C + ldr r0, [r7, #0x8] + rsb r0, r0, #0x0 + str r0, [r7, #0x8] + ldr r0, [r7, #0xc] + rsb r0, r0, #0x0 + str r0, [r7, #0xc] + ldr r0, [r7, #0x10] + rsb r0, r0, #0x0 + str r0, [r7, #0x10] +_0208F61C: + ldr r1, [r6, #0x0] + mov r0, #0x800 + mla r2, r1, r4, r5 + str r2, [r6, #0x0] + mov r1, r2, lsr #0x17 + mov r1, r1, lsl #0xc + sub r1, r1, #0x100000 + mov r1, r1, asr #0x9 + add r1, r1, #0x800 + ldr r3, [r7, #0x8] + ldr r2, [r9, #0x5c] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + smull r2, r1, r3, r1 + adds r2, r2, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x8] + ldr r1, [r6, #0x0] + mla r2, r1, r4, r5 + str r2, [r6, #0x0] + mov r1, r2, lsr #0x17 + mov r1, r1, lsl #0xc + sub r1, r1, #0x100000 + mov r1, r1, asr #0x9 + add r1, r1, #0x800 + ldr r3, [r7, #0xc] + ldr r2, [r9, #0x5c] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + smull r2, r1, r3, r1 + adds r2, r2, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0xc] + ldr r1, [r6, #0x0] + mla r2, r1, r4, r5 + str r2, [r6, #0x0] + mov r1, r2, lsr #0x17 + mov r1, r1, lsl #0xc + sub r1, r1, #0x100000 + mov r1, r1, asr #0x9 + add r1, r1, #0x800 + ldr r3, [r7, #0x10] + ldr r2, [r9, #0x5c] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + smull r2, r1, r3, r1 + adds r2, r2, r0 + adc r0, r1, #0x0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [r7, #0x10] + b _0208F87C +_0208F720: + add r0, r7, #0x14 + bl FUN_02090AF4 + ldr r2, [r7, #0x14] + ldr r1, [r9, #0x5c] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r2, r3, r0 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x94] + ldr r3, [r7, #0x18] + ldr r2, [r9, #0x5c] + ldr r1, [r6, #0x0] + smull r10, r2, r3, r2 + adds r3, r10, r0 + adc r0, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + mla r0, r1, r4, r5 + str r0, [r6, #0x0] + str r2, [sp, #0x98] + mov r1, r0, lsr #0x17 + ldr r2, [r9, #0x60] + add r0, r7, #0x8 + mul r1, r2, r1 + sub r1, r1, r2, lsl #0x8 + mov r1, r1, asr #0x8 + str r1, [sp, #0x9c] + add r1, sp, #0x94 + mov r2, r9 + bl FUN_0208FDA8 + b _0208F87C +_0208F7A4: + add r0, r7, #0x14 + bl FUN_02090AF4 +_0208F7AC: ; 0x0208F7AC + ldr r0, [r6, #0x0] + mov r3, #0x800 + mla r2, r0, r4, r5 + str r2, [r6, #0x0] + ldr r10, [r7, #0x14] + ldr r0, [r9, #0x5c] + mov r1, r2, lsr #0x17 + smull r11, r0, r10, r0 + adds r11, r11, r3 + mov r1, r1, lsl #0xc + adc r10, r0, #0x0 + mov r0, r11, lsr #0xc + sub r1, r1, #0x100000 + orr r0, r0, r10, lsl #0x14 + mov r1, r1, asr #0x8 + smull r10, r1, r0, r1 + adds r10, r10, r3 + adc r0, r1, #0x0 + mov r1, r10, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0xa0] + mla r1, r2, r4, r5 + str r1, [r6, #0x0] + mov r2, r1, lsr #0x17 + mov r2, r2, lsl #0xc + sub r2, r2, #0x100000 + ldr r10, [r7, #0x18] + ldr r0, [r9, #0x5c] + mov r2, r2, asr #0x8 + smull r11, r0, r10, r0 + adds r11, r11, r3 + adc r10, r0, #0x0 + mov r0, r11, lsr #0xc + orr r0, r0, r10, lsl #0x14 + smull r10, r2, r0, r2 + adds r3, r10, r3 + adc r0, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + mla r0, r1, r4, r5 + str r0, [r6, #0x0] + str r2, [sp, #0xa4] + mov r1, r0, lsr #0x17 + ldr r2, [r9, #0x60] + add r0, r7, #0x8 + mul r1, r2, r1 + sub r1, r1, r2, lsl #0x8 + mov r1, r1, asr #0x8 + str r1, [sp, #0xa8] + add r1, sp, #0xa0 + mov r2, r9 + bl FUN_0208FDA8 +_0208F87C: + ldr r1, [r6, #0x0] + mla r0, r1, r4, r5 + str r0, [r6, #0x0] + ldrb r2, [r8, #0x42] + mov r1, r0, lsr #0x18 + ldr r3, [r9, #0x64] + mul r1, r2, r1 + add r2, r2, #0xff + sub r1, r2, r1, asr #0x7 + mul r1, r3, r1 + mov r1, r1, asr #0x8 + str r1, [sp, #0x10] + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + mov r0, r1, lsr #0x18 + ldrb r2, [r8, #0x42] + ldr r3, [r9, #0x68] + ldr r1, [r8, #0x0] + mul r0, r2, r0 + add r2, r2, #0xff + sub r0, r2, r0, asr #0x7 + mul r0, r3, r0 + mov r0, r0, asr #0x8 + str r0, [sp, #0x14] + mov r0, r1, lsl #0x1c + mov r0, r0, lsr #0x1c + cmp r0, #0x6 + bne _0208F9C8 + ldrsh r0, [r9, #0x84] + ldr r1, [r7, #0x14] + mov r2, #0x800 + smull r3, r0, r1, r0 + adds r1, r3, r2 + ldrsh r3, [r9, #0x8a] + ldr lr, [r7, #0x18] + mov r12, r1, lsr #0xc + smull r10, r3, lr, r3 + adc r0, r0, #0x0 + adds r10, r10, r2 + orr r12, r12, r0, lsl #0x14 + adc r3, r3, #0x0 + mov r10, r10, lsr #0xc + orr r10, r10, r3, lsl #0x14 + add r3, r12, r10 + str r3, [sp, #0xb8] + ldrsh r10, [r9, #0x86] + ldr r3, [r7, #0x14] + ldrsh lr, [r9, #0x8c] + smull r12, r10, r3, r10 + adds r12, r12, r2 + ldr r11, [r7, #0x18] + adc r10, r10, #0x0 + smull r3, lr, r11, lr + mov r12, r12, lsr #0xc + adds r3, r3, r2 + orr r12, r12, r10, lsl #0x14 + adc r10, lr, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r10, lsl #0x14 + add r3, r12, r3 + str r3, [sp, #0xbc] + ldr r10, [r7, #0x18] + ldrsh r11, [r9, #0x88] + ldr r3, [r7, #0x14] + str r10, [sp, #0x28] + smull r12, r11, r3, r11 + ldrsh r10, [r9, #0x8e] + ldr r3, [sp, #0x28] + adds r12, r12, r2 + smull r10, lr, r3, r10 + adc r3, r11, #0x0 + adds r2, r10, r2 + mov r10, r12, lsr #0xc + orr r10, r10, r3, lsl #0x14 + adc r3, lr, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r3, lsl #0x14 + add r2, r10, r2 + add r0, sp, #0xb8 + add r1, sp, #0xac + str r2, [sp, #0xc0] + bl VEC_Normalize + b _0208FA04 +_0208F9C8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _0208F9F8 + ldr r0, [r7, #0xc] + cmp r0, #0x0 + bne _0208F9F8 + ldr r0, [r7, #0x10] + cmp r0, #0x0 + bne _0208F9F8 + add r0, sp, #0xac + bl FUN_02090B50 + b _0208FA04 +_0208F9F8: + add r0, r7, #0x8 + add r1, sp, #0xac + bl VEC_Normalize +_0208FA04: + ldr r2, [sp, #0xac] + ldr r1, [sp, #0x10] + mov r0, #0x800 + smull r10, r1, r2, r1 + adds r2, r10, r0 + add r10, r9, #0x28 + str r10, [sp, #0x2c] + add r10, r7, #0x38 + str r10, [sp, #0x30] + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + ldrsh r1, [r9, #0x50] + ldr r10, [sp, #0x14] + ldr r3, [r9, #0x40] + smull r11, r10, r1, r10 + adds r11, r11, r0 + adc r1, r10, #0x0 + mov r10, r11, lsr #0xc + orr r10, r10, r1, lsl #0x14 + add r1, r2, r10 + add r1, r3, r1 + str r1, [r7, #0x14] + ldr r3, [sp, #0xb0] + ldr r1, [sp, #0x10] + ldrsh r10, [r9, #0x52] + smull r11, r1, r3, r1 + adds r11, r11, r0 + adc r3, r1, #0x0 + mov r1, r11, lsr #0xc + orr r1, r1, r3, lsl #0x14 + ldr r3, [sp, #0x14] + ldr r2, [r9, #0x44] + smull r11, r3, r10, r3 + adds r10, r11, r0 + adc r3, r3, #0x0 + mov r10, r10, lsr #0xc + orr r10, r10, r3, lsl #0x14 + add r1, r1, r10 + add r1, r2, r1 + str r1, [r7, #0x18] + ldr r1, [sp, #0xb4] + ldr r2, [sp, #0x10] + ldrsh lr, [r9, #0x54] + smull r10, r3, r1, r2 + ldr r1, [sp, #0x14] + adds r10, r10, r0 + smull r2, r1, lr, r1 + adc r3, r3, #0x0 + adds r0, r2, r0 + mov r2, r10, lsr #0xc + orr r2, r2, r3, lsl #0x14 + adc r1, r1, #0x0 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + ldr r12, [r9, #0x48] + add r0, r2, r0 + add r0, r12, r0 + str r0, [r7, #0x1c] + ldr r0, [sp, #0x2c] + ldr r3, [sp, #0x30] + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, [r6, #0x0] + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + mov r0, r1, lsr #0x18 + ldrb r1, [r8, #0x40] + ldr r2, [r9, #0x6c] + mul r0, r1, r0 + add r1, r1, #0xff + sub r0, r1, r0, asr #0x7 + mul r0, r2, r0 + mov r0, r0, asr #0x8 + str r0, [r7, #0x30] + ldr r0, [sp, #0x34] + strh r0, [r7, #0x34] + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0x16 + movs r0, r0, lsr #0x1f + beq _0208FBBC + ldr r0, [sp, #0x4] + ldr r0, [r0, #0x8] + ldrh r0, [r0, #0x8] + mov r0, r0, lsl #0x1f + movs r0, r0, lsr #0x1f + beq _0208FBBC + ldr r0, [r6, #0x0] + ldr r3, _0208FD9C ; =0x00000003 + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + mov r0, r1, lsr #0x14 + ldr r1, [sp, #0x4] + ldr r2, [r1, #0x8] + ldr r1, _0208FDA0 ; =0xAAAAAAAB + umull r1, r10, r0, r1 + mov r10, r10, lsr #0x1 + umull r10, r11, r3, r10 + ldrh r1, [r2, #0x0] + sub r10, r0, r10 + strh r1, [sp, #0x50] + ldrh r0, [r8, #0x22] + mov r1, r10, lsl #0x1 + strh r0, [sp, #0x52] + ldrh r0, [r2, #0x2] + strh r0, [sp, #0x54] + add r0, sp, #0x50 + ldrh r0, [r0, r1] + strh r0, [r7, #0x36] + b _0208FBC4 +_0208FBBC: + ldrh r0, [r8, #0x22] + strh r0, [r7, #0x36] +_0208FBC4: + ldrh r1, [r7, #0x2e] + ldrb r0, [r9, #0x81] + bic r1, r1, #0x1f + and r0, r0, #0x1f + orr r0, r1, r0 + strh r0, [r7, #0x2e] + ldrh r0, [r7, #0x2e] + bic r0, r0, #0x3e0 + orr r0, r0, #0x3e0 + strh r0, [r7, #0x2e] + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0x12 + movs r0, r0, lsr #0x1f + ldrne r0, [r6, #0x0] + mlane r1, r0, r4, r5 + strne r1, [r6, #0x0] + strneh r1, [r7, #0x20] + ldreqh r0, [r9, #0x56] + streqh r0, [r7, #0x20] + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0x13 + movs r0, r0, lsr #0x1f + ldreq r0, [sp, #0x38] + streqh r0, [r7, #0x22] + beq _0208FC54 + ldr r0, [r6, #0x0] + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + mov r0, r1, lsr #0x14 + ldrsh r2, [r8, #0x34] + ldrsh r1, [r8, #0x36] + sub r1, r1, r2 + mul r0, r1, r0 + add r0, r0, r2, lsl #0xc + mov r0, r0, lsr #0xc + strh r0, [r7, #0x22] +_0208FC54: + ldr r0, [r6, #0x0] + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + mov r0, r1, lsr #0x18 + ldrb r1, [r8, #0x41] + ldrh r2, [r9, #0x70] + mul r0, r1, r0 + mov r0, r0, asr #0x8 + rsb r0, r0, #0xff + mul r0, r2, r0 + mov r0, r0, asr #0x8 + add r0, r0, #0x1 + strh r0, [r7, #0x24] + ldr r0, [sp, #0x3c] + strh r0, [r7, #0x26] + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0x14 + movs r1, r0, lsr #0x1f + beq _0208FCE4 + ldr r0, [sp, #0x4] + ldr r0, [r0, #0x10] + ldr r0, [r0, #0x8] + mov r0, r0, lsl #0xf + movs r0, r0, lsr #0x1f + beq _0208FCE4 + ldr r0, [r6, #0x0] + mla r1, r0, r4, r5 + str r1, [r6, #0x0] + mov r0, r1, lsr #0x14 + ldr r1, [sp, #0x4] + ldr r10, [r1, #0x10] + ldrb r1, [r10, #0x8] + bl _u32_div_f + ldrb r0, [r10, r1] + strb r0, [r7, #0x2c] + b _0208FD14 +_0208FCE4: + cmp r1, #0x0 + beq _0208FD0C + ldr r0, [sp, #0x4] + ldr r1, [r0, #0x10] + ldr r0, [r1, #0x8] + mov r0, r0, lsl #0xf + movs r0, r0, lsr #0x1f + ldreqb r0, [r1, #0x0] + streqb r0, [r7, #0x2c] + beq _0208FD14 +_0208FD0C: + ldrb r0, [r8, #0x47] + strb r0, [r7, #0x2c] +_0208FD14: + ldr r1, [sp, #0x4] + ldr r0, _0208FDA4 ; =0x0000FFFF + ldr r1, [r1, #0x0] + ldrb r1, [r1, #0x48] + bl _s32_div_f + strh r0, [r7, #0x28] + ldrh r1, [r7, #0x24] + ldr r0, _0208FDA4 ; =0x0000FFFF + bl _s32_div_f + strh r0, [r7, #0x2a] + ldr r0, [sp, #0x40] + strb r0, [r7, #0x2d] + ldr r0, [r8, #0x0] + mov r0, r0, lsl #0xb + movs r0, r0, lsr #0x1f + ldrne r0, [r6, #0x0] + mlane r1, r0, r4, r5 + strne r1, [r6, #0x0] + movne r0, r1, lsr #0x18 + strneb r0, [r7, #0x2d] + ldr r0, [sp, #0x8] + add r1, r0, #0x1 + ldr r0, [sp, #0xc] + str r1, [sp, #0x8] + cmp r1, r0 + blt _0208F13C + add sp, sp, #0xc4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0208FD88: .word 0x00000FFF +_0208FD8C: .word 0x021C8C5C +_0208FD90: .word 0x5EEDF715 +_0208FD94: .word 0x1B0CB173 +_0208FD98: .word 0x020FFA38 +_0208FD9C: .word 0x00000003 +_0208FDA0: .word 0xAAAAAAAB +_0208FDA4: .word 0x0000FFFF + + arm_func_start FUN_0208FDA8 +FUN_0208FDA8: ; 0x0208FDA8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r4, r2 + mov r6, r0 + mov r5, r1 + add r2, sp, #0x0 + add r0, r4, #0x84 + add r1, r4, #0x8a + bl VEC_Fx16CrossProduct +_0208FDCC: ; 0x0208FDCC + add r0, sp, #0x0 + mov r1, r0 + bl VEC_Fx16Normalize + ldrsh r1, [sp, #0x0] + ldr lr, [r5, #0x8] + ldrsh r0, [r4, #0x84] + ldr r12, [r5, #0x0] + smull r3, r2, lr, r1 + smull r1, r0, r12, r0 + ldrsh r7, [r4, #0x8a] + ldr r8, [r5, #0x4] + mov r12, #0x800 + smull lr, r7, r8, r7 + adds r8, r3, r12 + adc r3, r2, #0x0 + mov r2, r8, lsr #0xc + adds r1, r1, r12 + orr r2, r2, r3, lsl #0x14 + adc r0, r0, #0x0 + mov r3, r1, lsr #0xc + adds r1, lr, r12 + orr r3, r3, r0, lsl #0x14 + adc r0, r7, #0x0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r3, r1 + add r0, r2, r0 + str r0, [r6, #0x0] + ldrsh r0, [sp, #0x2] + ldr r1, [r5, #0x8] + ldrsh r3, [r4, #0x86] + smull r2, r0, r1, r0 + adds r2, r2, r12 + ldr lr, [r5, #0x0] + adc r1, r0, #0x0 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + smull r8, r7, lr, r3 + ldrsh r1, [r4, #0x8c] + ldr r2, [r5, #0x4] + adds r8, r8, r12 + smull r3, r1, r2, r1 + adc r2, r7, #0x0 + mov r7, r8, lsr #0xc + orr r7, r7, r2, lsl #0x14 + adds r2, r3, r12 + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + add r1, r7, r2 + add r0, r0, r1 + str r0, [r6, #0x4] + ldrsh r0, [sp, #0x4] + ldr r1, [r5, #0x8] + ldr lr, [r5, #0x0] + smull r3, r0, r1, r0 + adds r3, r3, r12 + adc r1, r0, #0x0 + mov r0, r3, lsr #0xc + orr r0, r0, r1, lsl #0x14 + ldrsh r3, [r4, #0x88] + ldrsh r1, [r4, #0x8e] + ldr r2, [r5, #0x4] + smull r5, r4, lr, r3 + adds r5, r5, r12 + smull r3, r1, r2, r1 + adc r4, r4, #0x0 + adds r2, r3, r12 + mov r3, r5, lsr #0xc + adc r1, r1, #0x0 + mov r2, r2, lsr #0xc + orr r3, r3, r4, lsl #0x14 + orr r2, r2, r1, lsl #0x14 + add r1, r3, r2 + add r0, r0, r1 + str r0, [r6, #0x8] + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_0208FF08 +FUN_0208FF08: ; 0x0208FF08 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + ldr r1, _0209018C ; =0x02106168 + mov r4, r0 + ldrh r3, [r1, #0x0] + ldrh r2, [r1, #0x2] + ldrh r0, [r1, #0x4] + strh r3, [sp, #0x0] + strh r2, [sp, #0x2] + strh r0, [sp, #0x4] + ldr r0, [r4, #0x20] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x18 + movs r0, r0, lsr #0x1e + beq _0208FF88 + cmp r0, #0x1 + beq _0208FF70 + cmp r0, #0x2 + bne _0208FFA0 + mov r0, #0x0 + mov r1, #0x1000 + strh r1, [sp, #0x6] + strh r0, [sp, #0x8] + strh r0, [sp, #0xa] + b _0208FFAC +_0208FF70: + mov r1, #0x0 + mov r0, #0x1000 + strh r1, [sp, #0x6] + strh r0, [sp, #0x8] + strh r1, [sp, #0xa] + b _0208FFAC +_0208FF88: + mov r1, #0x0 + mov r0, #0x1000 + strh r1, [sp, #0x6] + strh r1, [sp, #0x8] + strh r0, [sp, #0xa] + b _0208FFAC +_0208FFA0: + add r1, sp, #0x6 + add r0, r4, #0x50 + bl VEC_Fx16Normalize +_0208FFAC: + add r0, sp, #0x0 + add r1, sp, #0x6 + bl VEC_Fx16DotProduct + cmp r0, #0x1000 + beq _0208FFD0 + mov r1, #0x1000 + rsb r1, r1, #0x0 + cmp r0, r1 + bne _0208FFE4 +_0208FFD0: + mov r0, #0x0 + mov r1, #0x1000 + strh r1, [sp, #0x0] + strh r0, [sp, #0x2] + strh r0, [sp, #0x4] +_0208FFE4: + ldrsh r3, [sp, #0x8] + ldrsh r1, [sp, #0x4] + ldrsh r2, [sp, #0xa] + ldrsh r0, [sp, #0x2] + smull r6, r5, r3, r1 + mov r1, #0x800 + adds r6, r6, r1 + smull r3, r0, r2, r0 + adc r5, r5, #0x0 + adds r2, r3, r1 + mov r3, r6, lsr #0xc + adc r0, r0, #0x0 + mov r2, r2, lsr #0xc + orr r3, r3, r5, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + sub r0, r3, r2 + strh r0, [r4, #0x84] + ldrsh r5, [sp, #0xa] + ldrsh r3, [sp, #0x0] + ldrsh r2, [sp, #0x6] + ldrsh r0, [sp, #0x4] + smull r3, r6, r5, r3 + adds r12, r3, r1 + smull r3, r0, r2, r0 + adc r5, r6, #0x0 + adds r2, r3, r1 + mov r3, r12, lsr #0xc + adc r0, r0, #0x0 + mov r2, r2, lsr #0xc + orr r3, r3, r5, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + sub r0, r3, r2 + strh r0, [r4, #0x86] + ldrsh r5, [sp, #0x6] + ldrsh r3, [sp, #0x2] + ldrsh r2, [sp, #0x8] + ldrsh r0, [sp, #0x0] + smull r3, r6, r5, r3 + adds r12, r3, r1 + smull r3, r0, r2, r0 + adc r5, r6, #0x0 + adds r2, r3, r1 + mov r3, r12, lsr #0xc + adc r0, r0, #0x0 + mov r2, r2, lsr #0xc + orr r3, r3, r5, lsl #0x14 + orr r2, r2, r0, lsl #0x14 + sub r0, r3, r2 + strh r0, [r4, #0x88] + ldrsh r6, [sp, #0x8] + ldrsh r5, [r4, #0x88] + add r0, r4, #0x84 + ldrsh r3, [sp, #0xa] + ldrsh r2, [r4, #0x86] + smull r5, r12, r6, r5 + adds lr, r5, r1 + smull r5, r2, r3, r2 + adc r6, r12, #0x0 + adds r3, r5, r1 + mov r5, lr, lsr #0xc + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r5, r5, r6, lsl #0x14 + orr r3, r3, r2, lsl #0x14 + sub r2, r5, r3 + strh r2, [r4, #0x8a] + ldrsh r6, [sp, #0xa] + ldrsh r5, [r4, #0x84] + ldrsh r3, [sp, #0x6] + ldrsh r2, [r4, #0x88] + smull lr, r12, r6, r5 + smull r5, r2, r3, r2 + adds r6, lr, r1 + adc r3, r12, #0x0 + mov r6, r6, lsr #0xc + orr r6, r6, r3, lsl #0x14 + adds r3, r5, r1 + adc r2, r2, #0x0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r2, r6, r3 + strh r2, [r4, #0x8c] + ldrsh lr, [sp, #0x6] + ldrsh r12, [r4, #0x86] + ldrsh r3, [sp, #0x8] + ldrsh r2, [r4, #0x84] + smull r6, r5, lr, r12 + smull r12, r2, r3, r2 + adds r6, r6, r1 + adc r5, r5, #0x0 + adds r3, r12, r1 + mov r6, r6, lsr #0xc + orr r6, r6, r5, lsl #0x14 + adc r1, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + sub r1, r6, r2 + strh r1, [r4, #0x8e] + mov r1, r0 + bl VEC_Fx16Normalize + add r0, r4, #0x8a + mov r1, r0 + bl VEC_Fx16Normalize + add sp, sp, #0x10 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209018C: .word 0x02106168 + + arm_func_start FUN_02090190 +FUN_02090190: ; 0x02090190 + stmdb sp!, {lr} + sub sp, sp, #0x4 + rsb r2, r2, #0xff + mov r1, #0x1f + mul r3, r2, r1 + ldr r2, _020901E4 ; =0x80808081 + ldrh lr, [r0, #0x2e] + smull r1, r12, r2, r3 + add r12, r3, r12 + mov r12, r12, asr #0x7 + mov r1, r3, lsr #0x1f + add r12, r1, r12 + mov r1, r12, lsl #0x10 + mov r1, r1, lsr #0x10 + bic r2, lr, #0x3e0 + and r1, r1, #0x1f + orr r1, r2, r1, lsl #0x5 + strh r1, [r0, #0x2e] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020901E4: .word 0x80808081 + + arm_func_start FUN_020901E8 +FUN_020901E8: ; 0x020901E8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r1, #0x14] + sub r1, r2, #0xff + ldrsh lr, [r3, #0x4] + ldr r2, _02090230 ; =0x80808081 + sub r3, lr, #0x1000 + mul r12, r3, r1 + smull r1, r3, r2, r12 + add r3, r12, r3 + mov r3, r3, asr #0x7 + mov r1, r12, lsr #0x1f + add r3, r1, r3 + add r1, lr, r3 + strh r1, [r0, #0x34] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02090230: .word 0x80808081 + + arm_func_start FUN_02090234 +FUN_02090234: ; 0x02090234 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, [r1, #0x10] + mov r4, #0x0 + ldrb r3, [r5, #0x8] + cmp r3, #0x0 + addle sp, sp, #0x4 + ldmleia sp!, {r4-r5,lr} + bxle lr + ldrb r12, [r5, #0x9] + mov lr, r4 +_02090260: + add r1, lr, r12 + cmp r2, r1 + ldrltb r1, [r5, r4] + addlt sp, sp, #0x4 + strltb r1, [r0, #0x2c] + ldmltia sp!, {r4-r5,lr} + bxlt lr + add r4, r4, #0x1 + cmp r4, r3 + add lr, lr, r12 + blt _02090260 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02090298 +FUN_02090298: ; 0x02090298 + stmdb sp!, {r4-r6,lr} + ldr r4, [r1, #0xc] + mov r5, r0 + ldrb r1, [r4, #0x4] + ldrb r3, [r4, #0x5] + cmp r2, r1 + bge _020902D8 + ldrh r3, [r4, #0x0] + mov r0, r3, lsl #0x16 + mov r6, r3, lsl #0x1b + mov r0, r0, lsr #0x1b + sub r0, r0, r6, lsr #0x1b + mul r0, r2, r0 + bl _s32_div_f + add r0, r0, r6, lsr #0x1b + b _02090314 +_020902D8: + cmp r2, r3 + ldrlth r0, [r4, #0x0] + movlt r0, r0, lsl #0x16 + movlt r0, r0, lsr #0x1b + blt _02090314 + ldrh r0, [r4, #0x0] + sub r2, r2, #0xff + rsb r1, r3, #0xff + mov r6, r0, lsl #0x11 + mov r3, r6, lsr #0x1b + mov r0, r0, lsl #0x16 + sub r0, r3, r0, lsr #0x1b + mul r0, r2, r0 + bl _s32_div_f + add r0, r0, r6, lsr #0x1b +_02090314: + ldr r3, _02090368 ; =0x021C8C5C + ldr r1, _0209036C ; =0x5EEDF715 + ldr r12, [r3, #0x0] + ldr r2, _02090370 ; =0x1B0CB173 + mla r1, r12, r1, r2 + str r1, [r3, #0x0] + ldrb r2, [r4, #0x2] + mov r1, r1, lsr #0x18 + ldrh r3, [r5, #0x2e] + mul r1, r2, r1 + mov r1, r1, asr #0x8 + rsb r1, r1, #0xff + mul r1, r0, r1 + mov r0, r1, lsl #0x8 + mov r0, r0, lsr #0x10 + bic r1, r3, #0x3e0 + and r0, r0, #0x1f + orr r0, r1, r0, lsl #0x5 + strh r0, [r5, #0x2e] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02090368: .word 0x021C8C5C +_0209036C: .word 0x5EEDF715 +_02090370: .word 0x1B0CB173 + + arm_func_start FUN_02090374 +FUN_02090374: ; 0x02090374 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + + arm_func_start FUN_0209037C +FUN_0209037C: ; 0x0209037C + ldr r4, [r1, #0x8] + mov r10, r0 + ldrb r3, [r4, #0x4] + ldr r0, [r1, #0x0] + ldrb r1, [r4, #0x5] + cmp r2, r3 + ldrb r11, [r4, #0x6] + ldrlth r0, [r4, #0x0] + addlt sp, sp, #0x4 + strlth r0, [r10, #0x36] + ldmltia sp!, {r4-r11,lr} + bxlt lr + cmp r2, r1 + bge _0209046C + ldrh r9, [r0, #0x22] + ldrh r0, [r4, #0x8] + ldrh r8, [r4, #0x0] + mov r7, r9, asr #0x5 + mov r11, r9, asr #0xa + mov r4, r0, lsl #0x1d + mov r6, r8, asr #0x5 + mov r5, r8, asr #0xa + movs r4, r4, lsr #0x1f + and r9, r9, #0x1f + and r7, r7, #0x1f + and r0, r11, #0x1f + orreq r1, r9, r7, lsl #0x5 + orreq r0, r1, r0, lsl #0xa + and r8, r8, #0x1f + and r6, r6, #0x1f + and r5, r5, #0x1f + addeq sp, sp, #0x4 + streqh r0, [r10, #0x36] + ldmeqia sp!, {r4-r11,lr} + bxeq lr + sub r4, r2, r3 + sub r0, r0, r5 + mul r0, r4, r0 + sub r11, r1, r3 + mov r1, r11 + bl _s32_div_f + sub r1, r9, r8 + mov r9, r0 + mul r0, r4, r1 + mov r1, r11 + bl _s32_div_f + sub r1, r7, r6 + mov r7, r0 + mul r0, r4, r1 + mov r1, r11 + bl _s32_div_f + add r1, r8, r7 + add r0, r6, r0 + add r2, r5, r9 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r2, lsl #0xa + add sp, sp, #0x4 + strh r0, [r10, #0x36] + ldmia sp!, {r4-r11,lr} + bx lr +_0209046C: + cmp r2, r11 + bge _0209052C + ldrh r7, [r4, #0x2] + ldrh r8, [r0, #0x22] + ldrh r0, [r4, #0x8] + mov r5, r7, asr #0x5 + mov r4, r7, asr #0xa + mov r3, r0, lsl #0x1d + mov r6, r8, asr #0x5 + mov r9, r8, asr #0xa + movs r3, r3, lsr #0x1f + and r7, r7, #0x1f + and r5, r5, #0x1f + and r0, r4, #0x1f + orreq r1, r7, r5, lsl #0x5 + orreq r0, r1, r0, lsl #0xa + and r8, r8, #0x1f + and r6, r6, #0x1f + and r9, r9, #0x1f + addeq sp, sp, #0x4 + streqh r0, [r10, #0x36] + ldmeqia sp!, {r4-r11,lr} + bxeq lr + sub r4, r2, r1 + sub r0, r0, r9 + mul r0, r4, r0 + sub r11, r11, r1 + mov r1, r11 + bl _s32_div_f + sub r1, r7, r8 + mov r7, r0 + mul r0, r4, r1 + mov r1, r11 + bl _s32_div_f + sub r1, r5, r6 + mov r5, r0 + mul r0, r4, r1 + mov r1, r11 + bl _s32_div_f + add r1, r8, r5 + add r0, r6, r0 + add r2, r9, r7 + orr r0, r1, r0, lsl #0x5 + orr r0, r0, r2, lsl #0xa + add sp, sp, #0x4 + strh r0, [r10, #0x36] + ldmia sp!, {r4-r11,lr} + bx lr +_0209052C: + ldrh r0, [r4, #0x2] + strh r0, [r10, #0x36] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02090540 +FUN_02090540: ; 0x02090540 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r12, [r1, #0x4] + mov r4, r0 + ldrb r1, [r12, #0x6] + ldrb r3, [r12, #0x7] + cmp r2, r1 + bge _02090588 + ldrsh r5, [r12, #0x0] + ldrsh r0, [r12, #0x2] + sub r0, r0, r5 + mul r0, r2, r0 + bl _s32_div_f +_02090574: ; 0x02090574 + add r0, r5, r0 + add sp, sp, #0x4 + strh r0, [r4, #0x34] + ldmia sp!, {r4-r5,lr} + bx lr +_02090588: + cmp r2, r3 + ldrltsh r0, [r12, #0x2] + addlt sp, sp, #0x4 + strlth r0, [r4, #0x34] + ldmltia sp!, {r4-r5,lr} + bxlt lr + ldrsh r5, [r12, #0x4] + ldrsh r0, [r12, #0x2] + sub r2, r2, #0xff + rsb r1, r3, #0xff + sub r0, r5, r0 + mul r0, r2, r0 + bl _s32_div_f +_020905BC: ; 0x020905BC + add r0, r5, r0 + strh r0, [r4, #0x34] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020905D0 +FUN_020905D0: ; 0x020905D0 + stmdb sp!, {r4,lr} + ldr lr, [r1, #0x8] + ldr r2, [r0, #0x0] + ldrsh r4, [r0, #0xc] + sub r3, r2, lr + mov r2, #0x800 + smull r12, r3, r4, r3 + adds r4, r12, r2 + adc r3, r3, #0x0 + mov r4, r4, lsr #0xc + orr r4, r4, r3, lsl #0x14 + add r3, lr, r4 + str r3, [r1, #0x8] + ldr r4, [r1, #0xc] + ldr r3, [r0, #0x4] + ldrsh r12, [r0, #0xc] + sub r3, r3, r4 + smull lr, r3, r12, r3 + adds r12, lr, r2 + adc r3, r3, #0x0 + mov r12, r12, lsr #0xc + orr r12, r12, r3, lsl #0x14 + add r3, r4, r12 + str r3, [r1, #0xc] + ldr lr, [r1, #0x10] + ldr r3, [r0, #0x8] + ldrsh r12, [r0, #0xc] + sub r0, r3, lr + smull r3, r0, r12, r0 + adds r2, r3, r2 + adc r0, r0, #0x0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + add r0, lr, r2 + str r0, [r1, #0x10] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02090664 +FUN_02090664: ; 0x02090664 + ldr r3, [r3, #0x74] + ldr r2, [r0, #0x0] + cmp r3, #0x80000000 + movne r2, r3 + ldrh r3, [r0, #0x6] + mov r3, r3, lsl #0x1e + movs r3, r3, lsr #0x1e + beq _02090690 + cmp r3, #0x1 + beq _020906E4 + bx lr +_02090690: + ldr r3, [r1, #0x3c] + cmp r3, r2 + bge _020906BC + ldr r0, [r1, #0xc] + add r0, r3, r0 + cmp r0, r2 + subgt r0, r2, r3 + strgt r0, [r1, #0xc] + ldrgth r0, [r1, #0x24] + strgth r0, [r1, #0x26] + bxgt lr +_020906BC: + cmp r3, r2 + bxlt lr + ldr r0, [r1, #0xc] + add r0, r3, r0 + cmp r0, r2 + sublt r0, r2, r3 + strlt r0, [r1, #0xc] + ldrlth r0, [r1, #0x24] + strlth r0, [r1, #0x26] + bx lr +_020906E4: + ldr r12, [r1, #0x3c] + cmp r12, r2 + bge _02090734 + ldr r3, [r1, #0xc] + add r3, r12, r3 + cmp r3, r2 + ble _02090734 + sub r2, r2, r12 + str r2, [r1, #0xc] + ldrsh r2, [r0, #0x4] + ldr r3, [r1, #0x18] + mov r0, #0x800 + smull r12, r2, r3, r2 + adds r3, r12, r0 + adc r0, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + rsb r0, r2, #0x0 + str r0, [r1, #0x18] + bx lr +_02090734: + cmp r12, r2 + bxlt lr + ldr r3, [r1, #0xc] + add r3, r12, r3 + cmp r3, r2 + bxge lr + sub r2, r2, r12 + str r2, [r1, #0xc] + ldrsh r2, [r0, #0x4] + ldr r3, [r1, #0x18] + mov r0, #0x800 + smull r12, r2, r3, r2 + adds r3, r12, r0 + adc r0, r2, #0x0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + rsb r0, r2, #0x0 + str r0, [r1, #0x18] + bx lr + + arm_func_start FUN_02090780 +FUN_02090780: ; 0x02090780 + stmdb sp!, {r4,lr} + sub sp, sp, #0x28 + ldrh r2, [r0, #0x2] + mov r4, r1 + cmp r2, #0x0 + beq _020907AC + cmp r2, #0x1 + beq _020907DC + cmp r2, #0x2 + beq _0209080C + b _02090838 +_020907AC: + ldrh r1, [r0, #0x0] + ldr r3, _02090854 ; =0x020FFA38 + add r0, sp, #0x0 + mov r1, r1, asr #0x4 + mov r2, r1, lsl #0x1 + add r1, r2, #0x1 + mov r12, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + ldrsh r1, [r3, r12] + ldrsh r2, [r3, r2] + blx MTX_RotX33_ + b _02090838 +_020907DC: + ldrh r1, [r0, #0x0] + ldr r3, _02090854 ; =0x020FFA38 + add r0, sp, #0x0 + mov r1, r1, asr #0x4 + mov r2, r1, lsl #0x1 + add r1, r2, #0x1 + mov r12, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + ldrsh r1, [r3, r12] + ldrsh r2, [r3, r2] + blx MTX_RotY33_ + b _02090838 +_0209080C: + ldrh r1, [r0, #0x0] + ldr r3, _02090854 ; =0x020FFA38 + add r0, sp, #0x0 + mov r1, r1, asr #0x4 + mov r2, r1, lsl #0x1 + add r1, r2, #0x1 + mov r12, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + ldrsh r1, [r3, r12] + ldrsh r2, [r3, r2] + blx MTX_RotZ33_ +_02090838: + add r0, r4, #0x8 + add r1, sp, #0x0 + mov r2, r0 + bl MTX_MultVec33 + add sp, sp, #0x28 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02090854: .word 0x020FFA38 + + arm_func_start FUN_02090858 +FUN_02090858: ; 0x02090858 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x0] + ldr r4, [r1, #0x8] + ldrsh lr, [r0, #0xc] + ldr r3, [r1, #0x14] + sub r4, r12, r4 + sub r3, r4, r3 + mul r3, lr, r3 + ldr r4, [r2, #0x0] + add r3, r4, r3, asr #0xc + str r3, [r2, #0x0] + ldr lr, [r0, #0x4] + ldr r12, [r1, #0xc] + ldrsh r4, [r0, #0xc] + ldr r3, [r1, #0x18] + sub r12, lr, r12 + sub r3, r12, r3 + mul r3, r4, r3 + ldr r4, [r2, #0x4] + add r3, r4, r3, asr #0xc + str r3, [r2, #0x4] + ldr r12, [r0, #0x8] + ldr r3, [r1, #0x10] + ldrsh lr, [r0, #0xc] + ldr r0, [r1, #0x1c] + sub r1, r12, r3 + sub r0, r1, r0 + mul r0, lr, r0 + ldr r1, [r2, #0x8] + add r0, r1, r0, asr #0xc + str r0, [r2, #0x8] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020908DC +FUN_020908DC: ; 0x020908DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r1, #0x26] + ldrh r1, [r5, #0x6] + mov r4, r2 + bl _s32_div_f +_020908F8: ; 0x020908F8 + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,lr} + bxne lr + ldr r2, _02090998 ; =0x021C8C5C + ldr r0, _0209099C ; =0x5EEDF715 + ldr r3, [r2, #0x0] + ldr r1, _020909A0 ; =0x1B0CB173 + mla r12, r3, r0, r1 + str r12, [r2, #0x0] + ldrsh lr, [r5, #0x0] + mov r3, r12, lsr #0x17 + ldr r12, [r4, #0x0] + mul r3, lr, r3 + sub r3, r3, lr, lsl #0x8 + add r3, r12, r3, asr #0x8 + str r3, [r4, #0x0] + ldr r3, [r2, #0x0] + mla r12, r3, r0, r1 + str r12, [r2, #0x0] + ldrsh lr, [r5, #0x2] + mov r3, r12, lsr #0x17 + ldr r12, [r4, #0x4] + mul r3, lr, r3 + sub r3, r3, lr, lsl #0x8 + add r3, r12, r3, asr #0x8 + str r3, [r4, #0x4] + ldr r3, [r2, #0x0] + mla r0, r3, r0, r1 + str r0, [r2, #0x0] + ldrsh r2, [r5, #0x4] + mov r0, r0, lsr #0x17 + ldr r1, [r4, #0x8] + mul r0, r2, r0 + sub r0, r0, r2, lsl #0x8 + add r0, r1, r0, asr #0x8 + str r0, [r4, #0x8] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02090998: .word 0x021C8C5C +_0209099C: .word 0x5EEDF715 +_020909A0: .word 0x1B0CB173 + + arm_func_start FUN_020909A4 +FUN_020909A4: ; 0x020909A4 + ldrsh r1, [r0, #0x0] + ldr r3, [r2, #0x0] + add r1, r3, r1 + str r1, [r2, #0x0] + ldrsh r1, [r0, #0x2] + ldr r3, [r2, #0x4] + add r1, r3, r1 + str r1, [r2, #0x4] + ldrsh r0, [r0, #0x4] + ldr r1, [r2, #0x8] + add r0, r1, r0 + str r0, [r2, #0x8] + bx lr + + arm_func_start FUN_020909D8 +FUN_020909D8: ; 0x020909D8 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bne _02090A18 + ldr r2, [r0, #0x0] + cmp r2, r1 + moveq r2, #0x0 + streq r2, [r0, #0x0] + streq r2, [r0, #0x8] + beq _02090A44 + ldr r2, [r1, #0x4] + mov r3, #0x0 + str r3, [r2, #0x0] + ldr r2, [r0, #0x8] + ldr r2, [r2, #0x4] + str r2, [r0, #0x8] + b _02090A44 +_02090A18: + ldr r2, [r0, #0x0] + cmp r2, r1 + streq r3, [r0, #0x0] + ldreq r2, [r0, #0x0] + moveq r3, #0x0 + streq r3, [r2, #0x4] + ldrne r2, [r1, #0x4] + strne r2, [r3, #0x4] + ldrne r3, [r1, #0x0] + ldrne r2, [r1, #0x4] + strne r3, [r2, #0x0] +_02090A44: + ldr r2, [r0, #0x4] + sub r2, r2, #0x1 + str r2, [r0, #0x4] + mov r0, r1 + bx lr + + arm_func_start FUN_02090A58 +FUN_02090A58: ; 0x02090A58 + ldr r2, [r0, #0x0] + mov r3, #0x0 + mov r12, r3 + cmp r2, #0x0 + beq _02090A9C + ldr r1, [r2, #0x0] + mov r12, r2 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldrne r1, [r2, #0x0] + strne r3, [r1, #0x4] + streq r3, [r0, #0x0] + streq r3, [r0, #0x8] + ldr r1, [r0, #0x4] + sub r1, r1, #0x1 + str r1, [r0, #0x4] +_02090A9C: + mov r0, r12 + bx lr + + arm_func_start FUN_02090AA4 +FUN_02090AA4: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _02090ACC + str r1, [r0, #0x0] + str r1, [r0, #0x8] + mov r2, #0x0 + str r2, [r1, #0x0] + ldr r2, [r1, #0x0] + str r2, [r1, #0x4] + b _02090AE4 +_02090ACC: + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r1, #0x4] + ldr r2, [r0, #0x0] + str r1, [r2, #0x4] + str r1, [r0, #0x0] +_02090AE4: + ldr r1, [r0, #0x4] + add r1, r1, #0x1 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_02090AF4 +FUN_02090AF4: + stmdb sp!, {r4,lr} + ldr ip, _02090B44 ; =0x021C8C5C + ldr r2, _02090B48 ; =0x5EEDF715 + ldr r4, [r12, #0x0] + ldr r3, _02090B4C ; =0x1B0CB173 + mov r1, r0 + mla lr, r4, r2, r3 + str lr, [r12, #0x0] + mov r4, lr, asr #0x8 + str r4, [r0, #0x0] + ldr r4, [r12, #0x0] + mov lr, #0x0 + mla r2, r4, r2, r3 + str r2, [r12, #0x0] + mov r2, r2, asr #0x8 + str r2, [r0, #0x4] + str lr, [r0, #0x8] + bl VEC_Normalize + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02090B44: .word 0x021C8C5C +_02090B48: .word 0x5EEDF715 +_02090B4C: .word 0x1B0CB173 + + arm_func_start FUN_02090B50 +FUN_02090B50: ; 0x02090B50 + stmdb sp!, {r4,lr} + ldr ip, _02090BAC ; =0x021C8C5C + ldr r2, _02090BB0 ; =0x5EEDF715 + ldr r4, [r12, #0x0] + ldr r3, _02090BB4 ; =0x1B0CB173 + mov r1, r0 + mla lr, r4, r2, r3 + str lr, [r12, #0x0] + mov r4, lr, asr #0x8 + str r4, [r0, #0x0] + ldr lr, [r12, #0x0] + mla r4, lr, r2, r3 + str r4, [r12, #0x0] + mov lr, r4, asr #0x8 + str lr, [r0, #0x4] + ldr lr, [r12, #0x0] + mla r2, lr, r2, r3 + str r2, [r12, #0x0] + mov r2, r2, asr #0x8 + str r2, [r0, #0x8] + bl VEC_Normalize + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02090BAC: .word 0x021C8C5C +_02090BB0: .word 0x5EEDF715 +_02090BB4: .word 0x1B0CB173 + + arm_func_start FUN_02090BB8 +FUN_02090BB8: ; 0x02090BB8 + bx lr + + arm_func_start FUN_02090BBC +FUN_02090BBC: ; 0x02090BBC + stmdb sp!, {r4-r6,lr} + mov r0, #0x10000 + rsb r0, r0, #0x0 + ldr r3, _02090CB8 ; =0x021C8C6C + ldr r2, _02090CBC ; =0x021C8C68 + and r0, r1, r0 + cmp r0, #0x10000 + and r4, r1, #0xff + ldr r6, [r3, #0x0] + ldr r5, [r2, #0x0] + beq _02090BF4 + cmp r0, #0x20000 + beq _02090C38 + b _02090C84 +_02090BF4: + cmp r4, #0x7 + bne _02090C84 + ldr r0, _02090CC0 ; =0x021C8C64 + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + beq _02090C84 + ldr r1, _02090CC4 ; =0x021C8C60 + ldrh r2, [r1, #0x0] + cmp r2, #0x0 + beq _02090C84 + ldrh r0, [r0, #0x0] + ldrh r1, [r1, #0x0] + bl OSi_UnlockVram + ldr r0, _02090CC0 ; =0x021C8C64 + mov r1, #0x0 + strh r1, [r0, #0x0] + b _02090C84 +_02090C38: + cmp r4, #0x0 + bne _02090C78 + ldr r0, _02090CC0 ; =0x021C8C64 + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + beq _02090C78 + ldr r1, _02090CC4 ; =0x021C8C60 + ldrh r2, [r1, #0x0] + cmp r2, #0x0 + beq _02090C78 + ldrh r0, [r0, #0x0] + ldrh r1, [r1, #0x0] + bl OSi_UnlockVram + ldr r0, _02090CC0 ; =0x021C8C64 + mov r1, #0x0 + strh r1, [r0, #0x0] +_02090C78: + mov r0, #0xf + mov r1, #0x0 + bl PXI_SetFifoRecvCallback +_02090C84: + cmp r6, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r3, _02090CB8 ; =0x021C8C6C + mov r12, #0x0 + ldr r2, _02090CBC ; =0x021C8C68 + mov r0, r5 + mov r1, r4 + str r12, [r3, #0x0] + str r12, [r2, #0x0] + blx r6 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02090CB8: .word 0x021C8C6C +_02090CBC: .word 0x021C8C68 +_02090CC0: .word 0x021C8C64 +_02090CC4: .word 0x021C8C60 + + arm_func_start FUN_02090CC8 +FUN_02090CC8: ; 0x02090CC8 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl PXI_Init + mov r0, #0xf + mov r1, #0x1 + bl PXI_IsCallbackReady +_02090CE4: ; 0x02090CE4 + cmp r0, #0x0 + moveq r0, #0x2 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + bl OS_DisableInterrupts + ldr r1, _02090DA8 ; =0x021C8C6C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _02090D1C + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r6,lr} + bx lr +_02090D1C: + mov r0, #0xf + mov r1, #0x0 + bl PXI_IsCallbackReady +_02090D28: ; 0x02090D28 + cmp r0, #0x0 + bne _02090D3C + ldr r1, _02090DAC ; =FUN_02090BBC + mov r0, #0xf + bl PXI_SetFifoRecvCallback +_02090D3C: + cmp r6, #0x0 + ldreq r1, _02090DB0 ; =FUN_02090BB8 + ldreq r0, _02090DA8 ; =0x021C8C6C + ldr r3, _02090DB4 ; =0x021C8C68 + streq r1, [r0, #0x0] + ldrne r0, _02090DA8 ; =0x021C8C6C + mov r1, #0x20000 + strne r6, [r0, #0x0] + mov r0, #0xf + mov r2, #0x0 + str r5, [r3, #0x0] + bl PXI_SendWordByFifo +_02090D6C: ; 0x02090D6C + cmp r0, #0x0 + bge _02090D94 + ldr r1, _02090DA8 ; =0x021C8C6C + mov r2, #0x0 + mov r0, r4 + str r2, [r1, #0x0] + bl OS_RestoreInterrupts + mov r0, #0x4 + ldmia sp!, {r4-r6,lr} + bx lr +_02090D94: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02090DA8: .word 0x021C8C6C +_02090DAC: .word FUN_02090BBC +_02090DB0: .word FUN_02090BB8 +_02090DB4: .word 0x021C8C68 + + arm_func_start FUN_02090DB8 +FUN_02090DB8: ; 0x02090DB8 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl PXI_Init + mov r0, #0xf + mov r1, #0x1 + bl PXI_IsCallbackReady +_02090DD8: ; 0x02090DD8 + cmp r0, #0x0 + moveq r0, #0x2 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r8, _02091020 ; =0x021C8C60 + ldrh r0, [r8, #0x0] + cmp r0, #0x0 + bne _02090E20 + mvn r4, #0x2 +_02090DFC: + bl OS_GetLockID + cmp r0, r4 + moveq r0, #0x7 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + strh r0, [r8, #0x0] + ldrh r0, [r8, #0x0] + cmp r0, #0x0 + beq _02090DFC +_02090E20: + bl OS_DisableInterrupts + ldr r1, _02091024 ; =0x021C8C6C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _02090E48 + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r8,lr} + bx lr +_02090E48: + ldr r1, _02091028 ; =0x021C8C64 + ldrh r1, [r1, #0x0] + cmp r1, #0x0 + beq _02090E68 + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r8,lr} + bx lr +_02090E68: + cmp r7, #0x4 + beq _02090E84 + cmp r7, #0x8 + beq _02090ECC + cmp r7, #0xc + beq _02090F14 + b _02090F68 +_02090E84: + ldr r1, _02091020 ; =0x021C8C60 + mov r0, #0x4 + ldrh r1, [r1, #0x0] + bl OSi_TryLockVram +_02090E94: ; 0x02090E94 + cmp r0, #0x0 + bne _02090EB0 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x6 + ldmia sp!, {r4-r8,lr} + bx lr +_02090EB0: + ldr r0, _02091028 ; =0x021C8C64 + mov r2, #0x4 + ldr r1, _0209102C ; =0x04000242 + strh r2, [r0, #0x0] + mov r0, #0x82 + strb r0, [r1, #0x0] + b _02090F78 +_02090ECC: + ldr r1, _02091020 ; =0x021C8C60 + mov r0, #0x8 + ldrh r1, [r1, #0x0] + bl OSi_TryLockVram +_02090EDC: ; 0x02090EDC + cmp r0, #0x0 + bne _02090EF8 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x6 + ldmia sp!, {r4-r8,lr} + bx lr +_02090EF8: + ldr r0, _02091028 ; =0x021C8C64 + mov r2, #0x8 + ldr r1, _02091030 ; =0x04000243 + strh r2, [r0, #0x0] + mov r0, #0x82 + strb r0, [r1, #0x0] + b _02090F78 +_02090F14: + ldr r1, _02091020 ; =0x021C8C60 + mov r0, #0xc + ldrh r1, [r1, #0x0] + bl OSi_TryLockVram +_02090F24: ; 0x02090F24 + cmp r0, #0x0 + bne _02090F40 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x6 + ldmia sp!, {r4-r8,lr} + bx lr +_02090F40: + ldr r0, _02091028 ; =0x021C8C64 + mov r2, #0xc + ldr r1, _0209102C ; =0x04000242 + strh r2, [r0, #0x0] + mov r2, #0x82 + ldr r0, _02091030 ; =0x04000243 + strb r2, [r1, #0x0] + mov r1, #0x8a + strb r1, [r0, #0x0] + b _02090F78 +_02090F68: + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4-r8,lr} + bx lr +_02090F78: + mov r0, #0xf + mov r1, #0x0 + bl PXI_IsCallbackReady +_02090F84: ; 0x02090F84 + cmp r0, #0x0 + bne _02090F98 + ldr r1, _02091034 ; =FUN_02090BBC + mov r0, #0xf + bl PXI_SetFifoRecvCallback +_02090F98: + cmp r6, #0x0 + ldreq r1, _02091038 ; =FUN_02090BB8 + ldreq r0, _02091024 ; =0x021C8C6C + ldr r3, _0209103C ; =0x021C8C68 + streq r1, [r0, #0x0] + ldrne r0, _02091024 ; =0x021C8C6C + mov r1, #0x10000 + strne r6, [r0, #0x0] + mov r0, #0xf + mov r2, #0x0 + str r5, [r3, #0x0] + bl PXI_SendWordByFifo +_02090FC8: ; 0x02090FC8 + cmp r0, #0x0 + bge _0209100C + ldr r0, _02091028 ; =0x021C8C64 + ldr r1, _02091020 ; =0x021C8C60 + ldrh r0, [r0, #0x0] + ldrh r1, [r1, #0x0] + bl OSi_UnlockVram + ldr r2, _02091028 ; =0x021C8C64 + mov r3, #0x0 + ldr r1, _02091024 ; =0x021C8C6C + mov r0, r4 + strh r3, [r2, #0x0] + str r3, [r1, #0x0] + bl OS_RestoreInterrupts + mov r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_0209100C: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_02091020: .word 0x021C8C60 +_02091024: .word 0x021C8C6C +_02091028: .word 0x021C8C64 +_0209102C: .word 0x04000242 +_02091030: .word 0x04000243 +_02091034: .word FUN_02090BBC +_02091038: .word FUN_02090BB8 +_0209103C: .word 0x021C8C68 + + arm_func_start FUN_02091040 +FUN_02091040: ; 0x02091040 + ldr r3, _02091054 ; =0x021C8C70 + ldr r2, _02091058 ; =0x021C8C74 + str r0, [r3, #0x0] + str r1, [r2, #0x0] + bx lr + .balign 4 +_02091054: .word 0x021C8C70 +_02091058: .word 0x021C8C74 + + arm_func_start FUN_0209105C +FUN_0209105C: ; 0x0209105C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020910A0 ; =0x021C8C74 + mov r2, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _02091088 + blx r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_02091088: + mov r0, #0x0 + mvn r1, #0x0 + bl OS_FreeToHeap + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020910A0: .word 0x021C8C74 + + arm_func_start FUN_020910A4 +FUN_020910A4: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020910E8 ; =0x021C8C70 + mov r2, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + beq _020910D0 + blx r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020910D0: + mov r0, #0x0 + mvn r1, #0x0 + bl OS_AllocFromHeap + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020910E8: .word 0x021C8C70 + + arm_func_start FUN_020910EC +FUN_020910EC: ; 0x020910EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r12, r0 + mov r4, r1 + mov r5, r2 + mov r2, r4 + add r0, sp, #0x0 + mov r1, r12 + mov r4, r3 + bl MATH_CalcSHA1 +_02091114: ; 0x02091114 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_02091130 + add sp, sp, #0x14 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02091130 +FUN_02091130: ; 0x02091130 + stmdb sp!, {r4,lr} + sub sp, sp, #0x120 + mov r3, #0x0 + str r3, [sp, #0x10] + str r3, [sp, #0x18] + str r2, [sp, #0x0] + mov r3, #0x80 + mov r4, r0 + mov r2, r1 + ldr ip, _0209122C ; =0x00010001 + str r3, [sp, #0x4] + add r0, sp, #0x1c + mov r1, #0x100 + str r12, [sp, #0x8] + bl FUN_0209156C + mov r1, r0 + add r0, sp, #0x1c + add r2, sp, #0xc + add r3, sp, #0x10 + bl FUN_020913D4 +_02091180: ; 0x02091180 + cmp r0, #0x0 + addeq sp, sp, #0x120 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + add r1, sp, #0x14 + add r0, sp, #0x18 + str r1, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + mov r3, r2 + bl FUN_02091230 +_020911B8: ; 0x020911B8 + cmp r0, #0x0 + addeq sp, sp, #0x120 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, [sp, #0x18] + cmp r0, #0x14 + addne sp, sp, #0x120 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + ldr r2, [sp, #0x14] + mov r3, #0x0 +_020911EC: + ldrb r1, [r2, #0x0] + ldrb r0, [r4, #0x0] + cmp r1, r0 + addne sp, sp, #0x120 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + add r3, r3, #0x1 + cmp r3, #0x14 + add r4, r4, #0x1 + add r2, r2, #0x1 + blt _020911EC + mov r0, #0x1 + add sp, sp, #0x120 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209122C: .word 0x00010001 + + arm_func_start FUN_02091230 +FUN_02091230: + stmdb sp!, {r0-r3} + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r4, r3 + add r0, sp, #0x10 + add r1, sp, #0x14 + mov r2, #0x30 + mov r3, #0x0 + bl FUN_02091498 +_02091258: ; 0x02091258 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + addeq sp, sp, #0x10 + bxeq lr + add r0, sp, #0x10 + add r1, sp, #0x14 + mov r2, #0x30 + mov r3, #0x0 + bl FUN_02091498 +_02091284: ; 0x02091284 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + addeq sp, sp, #0x10 + bxeq lr + add r0, sp, #0x10 + add r1, sp, #0x14 + add r3, sp, #0x0 + mov r2, #0x6 + bl FUN_02091498 +_020912B0: ; 0x020912B0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + addeq sp, sp, #0x10 + bxeq lr + cmp r5, #0x0 + ldrne r0, [sp, #0x10] + strne r0, [r5, #0x0] + cmp r4, #0x0 + ldrne r0, [sp, #0x0] + strne r0, [r4, #0x0] + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r0, r0, r2 + str r0, [sp, #0x10] + cmp r1, r2 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,lr} + addcc sp, sp, #0x10 + bxcc lr + sub r12, r1, r2 + add r0, sp, #0x10 + add r1, sp, #0x14 + add r3, sp, #0x0 + mov r2, #0x5 + str r12, [sp, #0x14] + bl FUN_02091498 +_02091328: ; 0x02091328 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r0, r0, r2 + str r0, [sp, #0x10] + cmp r1, r2 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,lr} + addcc sp, sp, #0x10 + bxcc lr + sub r12, r1, r2 + add r0, sp, #0x10 + add r1, sp, #0x14 + add r3, sp, #0x0 + mov r2, #0x4 + str r12, [sp, #0x14] + bl FUN_02091498 +_02091388: ; 0x02091388 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r1, [sp, #0x20] + cmp r1, #0x0 + ldrne r0, [sp, #0x10] + strne r0, [r1, #0x0] + ldr r1, [sp, #0x24] + cmp r1, #0x0 + ldrne r0, [sp, #0x0] + strne r0, [r1, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_020913D4 +FUN_020913D4: + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0xa + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {lr} + bxcc lr + ldrb r12, [r0, #0x0] + add lr, r0, r1 + cmp r12, #0x1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {lr} + bxne lr + add r12, r0, #0x1 + mov r1, #0x0 +_02091414: + ldrb r0, [r12], #0x1 + cmp r0, #0xff + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {lr} + bxne lr + add r1, r1, #0x1 + cmp r1, #0x8 + blt _02091414 + cmp r12, lr + beq _02091458 +_02091440: + ldrb r0, [r12, #0x0] + cmp r0, #0xff + bne _02091458 + add r12, r12, #0x1 + cmp r12, lr + bne _02091440 +_02091458: + cmp r12, lr + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {lr} + bxeq lr + ldrb r0, [r12, #0x0] + cmp r0, #0x0 + movne r0, #0x0 + addeq r0, r12, #0x1 + subeq r1, lr, r0 + streq r1, [r3, #0x0] + streq r0, [r2, #0x0] + moveq r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_02091498 +FUN_02091498: + stmdb sp!, {r4-r6,lr} + ldr r5, [r0, #0x0] + mov r6, #0x0 + ldrb r4, [r5, #0x0] + add r5, r5, #0x1 + mov r12, r6 + cmp r4, r2 + ldr r2, [r1, #0x0] + movne r0, r6 + ldmneia sp!, {r4-r6,lr} + bxne lr + cmp r2, #0x1 + movcc r0, r6 + ldmccia sp!, {r4-r6,lr} + bxcc lr + ldrb lr, [r5, #0x0] + sub r4, r2, #0x1 + ands r2, lr, #0x80 + beq _02091534 + and r2, lr, #0x7f + and lr, r2, #0xff + add r2, lr, #0x1 + cmp r4, r2 + movcc r0, r6 + ldmccia sp!, {r4-r6,lr} + bxcc lr + cmp r3, #0x0 + sub r6, r4, lr + beq _0209152C + ldrb r2, [r5, #0x1] + add r5, r5, #0x1 + and r4, r2, #0x7f +_02091518: + sub r2, lr, #0x1 + add r12, r4, r12, lsl #0x7 + ands lr, r2, #0xff + bne _02091518 + b _02091550 +_0209152C: + add r5, r5, lr + b _02091550 +_02091534: + add r5, r5, #0x1 + cmp r4, #0x1 + mov r12, lr + movcc r0, r6 + ldmccia sp!, {r4-r6,lr} + bxcc lr + sub r6, r4, #0x1 +_02091550: + str r5, [r0, #0x0] + str r6, [r1, #0x0] + cmp r3, #0x0 + strne r12, [r3, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209156C +FUN_0209156C: ; 0x0209156C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x58 + movs r6, r0 + mov r5, r1 + mov r8, r2 + mov r7, r3 + beq _0209159C + cmp r8, #0x0 + beq _0209159C + ldr r0, [sp, #0x70] + cmp r0, #0x0 + bne _020915AC +_0209159C: + add sp, sp, #0x58 + mvn r0, #0x2 + ldmia sp!, {r4-r8,lr} + bx lr +_020915AC: + bl FUN_02094FAC + mov r4, r0 + add r0, sp, #0x4 + bl FUN_0209502C + add r0, sp, #0x18 + bl FUN_0209502C + add r0, sp, #0x2c + bl FUN_0209502C + add r0, sp, #0x40 + bl FUN_0209502C +_020915D4: ; 0x020915D4 + cmp r4, #0x0 + mvneq r5, #0x1 + beq _02091688 + add r2, sp, #0x4 + mov r0, r8 + mov r1, r7 + bl FUN_02094C68 +_020915F0: ; 0x020915F0 + cmp r0, #0x0 + mvneq r5, #0x1 + beq _02091688 + ldr r1, [sp, #0x78] + add r0, sp, #0x2c + bl FUN_02094D7C +_02091608: ; 0x02091608 + cmp r0, #0x0 + mvneq r5, #0x1 + beq _02091688 + ldr r0, [sp, #0x70] + ldr r1, [sp, #0x74] + add r2, sp, #0x40 + bl FUN_02094C68 +_02091624: ; 0x02091624 + cmp r0, #0x0 + mvneq r5, #0x1 + beq _02091688 + add r0, sp, #0x18 + add r1, sp, #0x4 + add r2, sp, #0x2c + add r3, sp, #0x40 + str r4, [sp, #0x0] + bl FUN_020931B8 +_02091648: ; 0x02091648 + cmp r0, #0x0 + mvneq r5, #0x1 + beq _02091688 + add r0, sp, #0x18 + bl FUN_02095188 + add r1, r0, #0x7 + mov r0, r1, asr #0x2 + add r0, r1, r0, lsr #0x1d + mov r0, r0, asr #0x3 + cmp r0, r5 + mvngt r5, #0x0 + bgt _02091688 + add r0, sp, #0x18 + mov r1, r6 + bl FUN_02094BEC + mov r5, r0 +_02091688: + add r0, sp, #0x4 + bl FUN_0209510C + add r0, sp, #0x18 + bl FUN_0209510C + add r0, sp, #0x2c + bl FUN_0209510C + add r0, sp, #0x40 + bl FUN_0209510C +_020916A8: ; 0x020916A8 + cmp r4, #0x0 + beq _020916B8 + mov r0, r4 + bl FUN_02094F3C +_020916B8: + mov r0, r5 + add sp, sp, #0x58 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020916C8 +FUN_020916C8: ; 0x020916C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x7c + mov r4, #0x0 + mov r5, r3 + mov r3, r4 + str r3, [sp, #0x34] + ldr r3, [r5, #0x0] + str r0, [sp, #0x4] + mov r0, r4 + ldr r3, [r3, #0x0] + str r0, [sp, #0x1c] + str r0, [sp, #0x20] + ands r0, r3, #0x1 + ldr r0, [sp, #0xa0] + str r4, [sp, #0x8] + str r0, [sp, #0xa0] + mov r7, r1 + mov r6, r2 + addeq sp, sp, #0x7c + moveq r0, r4 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r1, [r7, #0x4] + ldr r0, [r0, #0x0] + cmp r1, #0x0 + str r0, [sp, #0xc] + beq _0209174C + cmp r1, #0x1 + bne _02091768 + ldr r0, [r7, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02091768 +_0209174C: + ldr r0, [sp, #0x4] + mov r1, #0x0 + bl FUN_02094D7C + add sp, sp, #0x7c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_02091768: + ldr r1, [r6, #0x4] + cmp r1, #0x0 + beq _0209178C + cmp r1, #0x1 + bne _020917A8 + ldr r0, [r6, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020917A8 +_0209178C: + ldr r0, [sp, #0x4] + mov r1, #0x1 + bl FUN_02094D7C + add sp, sp, #0x7c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020917A8: + cmp r1, #0x1 + bne _020917DC + ldr r0, [r6, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _020917DC + ldr r0, [sp, #0x4] + mov r1, r7 + bl FUN_02094E24 + add sp, sp, #0x7c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020917DC: + ldr r0, [sp, #0xa4] + str r0, [sp, #0x18] + cmp r0, #0x0 + bne _02091810 + bl FUN_02092860 + str r0, [sp, #0x18] + cmp r0, #0x0 + beq _02091E6C + ldr r2, [sp, #0xa0] + mov r1, r5 + bl FUN_02092894 +_02091808: ; 0x02091808 + cmp r0, #0x0 + beq _02091E6C +_02091810: + ldr r3, [sp, #0xa0] + add r1, sp, #0x34 + mov r4, r3 + ldr r4, [r4, #0x10c] + mov r0, r6 + mov r2, #0x0 + str r4, [sp, #0x1c] + bl FUN_02092C28 +_02091830: ; 0x02091830 + cmp r0, #0x0 + beq _02091E6C + ldr r0, [sp, #0xa0] + ldr r0, [r0, #0x0] + add r1, r0, #0x1 + ldr r0, [sp, #0xa0] + str r1, [r0, #0x0] + ldr r0, [sp, #0x34] + ldrb r1, [r0, #0x2] + ldrb r0, [r0, #0x3] + str r0, [sp, #0x10] + add r0, r1, #0x3f + bl _s32_div_f + ldr r1, [sp, #0x34] + mov r4, r0 + add r0, r1, #0x4 + str r0, [sp, #0x34] + ldr r0, [sp, #0x18] + ldr r3, [r7, #0x4] + ldr r10, [r0, #0x24] + cmp r3, r10 + bne _020918A8 + ldr r1, [r7, #0x0] + sub r2, r10, #0x1 + ldr r0, [r5, #0x0] + ldr r1, [r1, r2, lsl #0x2] + ldr r0, [r0, r2, lsl #0x2] + cmp r1, r0 + strcc r7, [sp, #0x14] + blo _02091960 +_020918A8: + cmp r3, r10 + bge _0209191C + ldr r0, [sp, #0xa0] + ldr r3, [r0, #0x0] + add r1, r0, #0x4 + add r2, r3, #0x1 + str r2, [r0, #0x0] + mov r0, #0x14 + mla r0, r3, r0, r1 + ldr r2, [r7, #0x4] + mov r1, r0 + str r2, [r1, #0x4] + mov r1, r10 + str r0, [sp, #0x14] + bl FUN_0209508C + ldr r0, [r7, #0x4] + mov r2, #0x0 + cmp r0, #0x0 + ble _02091960 +_020918F4: + ldr r1, [r7, #0x0] + ldr r0, [sp, #0x14] + ldr r1, [r1, r2, lsl #0x2] + ldr r0, [r0, #0x0] + str r1, [r0, r2, lsl #0x2] + ldr r0, [r7, #0x4] + add r2, r2, #0x1 + cmp r2, r0 + blt _020918F4 + b _02091960 +_0209191C: + ldr r0, [sp, #0xa0] + mov r2, r5 + ldr r3, [r0, #0x0] + mov r1, r7 + add r5, r3, #0x1 + str r5, [r0, #0x0] + add r5, r0, #0x4 + mov r0, #0x14 + mla r0, r3, r0, r5 + ldr r3, [sp, #0xa0] + str r0, [sp, #0x14] + bl FUN_02093214 +_0209194C: ; 0x0209194C + cmp r0, #0x0 + beq _02091E6C + ldr r0, [sp, #0x14] + mov r1, r10 + bl FUN_0209508C +_02091960: + ldr r0, [sp, #0xa0] + ldr r3, [r0, #0x0] + ldr r0, [r6, #0x4] + add r1, r3, #0x1 + mul r2, r0, r4 + ldr r0, [sp, #0xa0] + mov r4, r2, lsl #0x1 + str r1, [r0, #0x0] + ldr r1, [r0, #0x0] + add r4, r4, #0x7 + add r2, r1, #0x1 + str r2, [r0, #0x0] + ldr r2, [sp, #0x10] + ldr r0, [r0, #0x0] + mul r5, r2, r10 + mov r2, r4, asr #0x1 + add r2, r4, r2, lsr #0x1e + add r5, r5, r2, asr #0x2 + ldr r2, [sp, #0xa0] + mov r6, #0x14 + add r2, r2, #0x4 + mla r8, r1, r6, r2 + mla r4, r3, r6, r2 + ldr r1, [sp, #0xa0] + add r3, r0, #0x1 + mla r7, r0, r6, r2 + str r3, [r1, #0x0] + mov r0, r1 + ldr r0, [r0, #0x0] + mla r6, r0, r6, r2 + add r1, r0, #0x1 + ldr r0, [sp, #0xa0] + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + ldr r0, [r0, #0x8] + cmp r10, r0 + ldrle r0, [sp, #0x4] + ble _02091A04 + ldr r0, [sp, #0x4] + mov r1, r10 + bl FUN_02094EBC +_02091A04: + cmp r0, #0x0 + beq _02091E6C + ldr r0, [r8, #0x8] + mov r1, r10, lsl #0x2 + cmp r1, r0 + movle r0, r8 + ble _02091A28 + mov r0, r8 + bl FUN_02094EBC +_02091A28: + cmp r0, #0x0 + beq _02091E6C + ldr r1, [r7, #0x8] + mov r0, r10, lsl #0x1 + str r0, [sp, #0x24] + cmp r0, r1 + movle r0, r7 + ble _02091A54 + ldr r1, [sp, #0x24] + mov r0, r7 + bl FUN_02094EBC +_02091A54: + cmp r0, #0x0 + beq _02091E6C + ldr r0, [r4, #0x8] + cmp r5, r0 + movle r0, r4 + ble _02091A78 + mov r1, r5 + mov r0, r4 + bl FUN_02094EBC +_02091A78: + cmp r0, #0x0 + beq _02091E6C + ldr r1, [r6, #0x8] + ldr r0, [sp, #0x24] + cmp r0, r1 + movle r0, r6 + ble _02091AA0 + ldr r1, [sp, #0x24] + mov r0, r6 + bl FUN_02094EBC +_02091AA0: + cmp r0, #0x0 + beq _02091E6C + ldr r0, [sp, #0x18] + ldr r11, [r8, #0x0] + ldr r8, [r7, #0x0] + ldr r6, [r6, #0x0] + ldr r1, [r4, #0x0] + ldr r7, [r0, #0x48] + ldr r5, [r0, #0x20] + ldr r3, [sp, #0x18] + str r1, [sp, #0x38] + str r10, [sp, #0x0] + ldr r1, [sp, #0x14] + ldr r3, [r3, #0xc] + ldr r1, [r1, #0x0] + mov r0, r6 + mov r2, r10 + bl FUN_020937E8 + str r7, [sp, #0x0] + ldr r0, [sp, #0x38] + mov r1, r6 + mov r2, r5 + mov r3, r10 + bl FUN_02092E30 + ldr r0, [sp, #0x10] + cmp r0, #0x1 + ble _02091BA8 + ldr r1, [sp, #0x38] + mov r0, r6 + mov r2, r10 + mov r3, r11 + bl FUN_02092F70 + mov r0, r11 + mov r1, r6 + mov r2, r5 + mov r3, r10 + str r7, [sp, #0x0] + bl FUN_02092E30 + ldr r0, [sp, #0x10] + mov r4, #0x1 + cmp r0, #0x1 + ble _02091BA8 + mov r0, r10, lsl #0x2 + str r0, [sp, #0x28] + add r9, sp, #0x38 +_02091B54: + sub r3, r4, #0x1 + ldr r2, [r9, r3, lsl #0x2] + ldr r1, [sp, #0x28] + mov r0, r6 + add r1, r2, r1 + str r1, [r9, r4, lsl #0x2] + str r10, [sp, #0x0] + ldr r1, [r9, r3, lsl #0x2] + mov r2, r10 + mov r3, r11 + bl FUN_020937E8 + str r7, [sp, #0x0] + ldr r0, [r9, r4, lsl #0x2] + mov r1, r6 + mov r2, r5 + mov r3, r10 + bl FUN_02092E30 + ldr r0, [sp, #0x10] + add r4, r4, #0x1 + cmp r4, r0 + blt _02091B54 +_02091BA8: + ldr r3, [sp, #0x34] + add r0, r3, #0x1 + str r0, [sp, #0x34] + add r2, r0, #0x1 + ldrb r1, [r3, #0x0] + str r2, [sp, #0x34] + ldrb r9, [r3, #0x1] + cmp r9, #0xff + bne _02091C28 + cmp r1, #0x0 + bne _02091C28 + add r0, r2, #0x1 + str r0, [sp, #0x34] + ldrb r1, [r2, #0x0] + b _02091BF8 +_02091BE4: + add r9, r9, #0x100 + ldr r1, [sp, #0x34] + add r1, r1, #0x2 + str r1, [sp, #0x34] + ldrb r1, [r0, #0x1] +_02091BF8: + ldr r0, [sp, #0x34] + ldrb r2, [r0, #0x0] + cmp r2, #0xff + bne _02091C10 + cmp r1, #0x0 + beq _02091BE4 +_02091C10: + ldr r2, [sp, #0x34] + add r2, r2, #0x1 + str r2, [sp, #0x34] + ldrb r0, [r0, #0x0] + add r0, r0, #0x1 + add r9, r9, r0 +_02091C28: + mov r2, r1, asr #0x1 + add r0, sp, #0x38 + ldr r0, [r0, r2, lsl #0x2] + mov r1, r8 + mov r2, r10, lsl #0x2 + bl MI_CpuCopy8 +_02091C40: ; 0x02091C40 + cmp r9, #0x0 + beq _02091E00 + mov r0, #0xff + str r0, [sp, #0x2c] + mov r0, #0x0 + str r0, [sp, #0x30] +_02091C58: + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + beq _02091C8C + mov r3, r0 + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x20] + ldr r3, [r3, #0x0] + blx r3 + cmp r0, #0x0 + ldr r0, [sp, #0x20] + add r0, r0, #0x1 + str r0, [sp, #0x20] + bne _02091E6C +_02091C8C: + ldr r0, [sp, #0xa0] + ldr r0, [r0, #0x108] + ands r0, r0, #0x4000 + bne _02091E6C + cmp r9, #0x0 + ldr r4, [sp, #0x30] + ble _02091CE0 +_02091CA8: + mov r0, r6 + mov r1, r8 + mov r2, r10 + mov r3, r11 + bl FUN_02092F70 + str r7, [sp, #0x0] + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, r10 + bl FUN_02092E30 + add r4, r4, #0x1 + cmp r4, r9 + blt _02091CA8 +_02091CE0: + ldr r2, [sp, #0x34] + add r0, r2, #0x1 + str r0, [sp, #0x34] + add r1, r0, #0x1 + ldrb r0, [r2, #0x0] + str r1, [sp, #0x34] + ldrb r9, [r2, #0x1] + cmp r9, #0xff + bne _02091D60 + cmp r0, #0x0 + bne _02091D60 + add r0, r1, #0x1 + str r0, [sp, #0x34] + ldrb r0, [r1, #0x0] + b _02091D30 +_02091D1C: + add r9, r9, #0x100 + ldr r0, [sp, #0x34] + add r0, r0, #0x2 + str r0, [sp, #0x34] + ldrb r0, [r1, #0x1] +_02091D30: + ldr r1, [sp, #0x34] + ldrb r2, [r1, #0x0] + cmp r2, #0xff + bne _02091D48 + cmp r0, #0x0 + beq _02091D1C +_02091D48: + ldr r2, [sp, #0x34] + add r2, r2, #0x1 + str r2, [sp, #0x34] + ldrb r1, [r1, #0x0] + add r1, r1, #0x1 + add r9, r9, r1 +_02091D60: + cmp r0, #0x0 + bne _02091D70 + cmp r9, #0x0 + beq _02091E00 +_02091D70: + cmp r9, #0x0 + bne _02091D80 + cmp r0, #0x1 + beq _02091DBC +_02091D80: + mov r1, r0, asr #0x1 + str r10, [sp, #0x0] + add r0, sp, #0x38 + ldr r3, [r0, r1, lsl #0x2] + mov r0, r6 + mov r1, r8 + mov r2, r10 + bl FUN_020937E8 + mov r0, r8 + mov r1, r6 + mov r2, r5 + mov r3, r10 + str r7, [sp, #0x0] + bl FUN_02092E30 + b _02091DF8 +_02091DBC: + ldr r0, [sp, #0x14] + str r10, [sp, #0x0] + ldr r3, [r0, #0x0] + mov r0, r6 + mov r1, r8 + mov r2, r10 + bl FUN_020937E8 + ldr r0, [sp, #0x4] + str r7, [sp, #0x0] + ldr r0, [r0, #0x0] + mov r1, r6 + mov r2, r5 + mov r3, r10 + bl FUN_02092E30 + b _02091E44 +_02091DF8: + cmp r9, #0x0 + bne _02091C58 +_02091E00: + ldr r0, [sp, #0x24] + mov r2, r10 + cmp r10, r0 + bge _02091E28 + mov r1, #0x0 +_02091E14: + ldr r0, [sp, #0x24] + str r1, [r8, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, r0 + blt _02091E14 +_02091E28: + ldr r0, [sp, #0x4] + str r7, [sp, #0x0] + ldr r0, [r0, #0x0] + mov r1, r8 + mov r2, r5 + mov r3, r10 + bl FUN_02092E30 +_02091E44: + ldr r0, [sp, #0xa0] + ldr r0, [r0, #0x108] + ands r0, r0, #0x4000 + bne _02091E6C + ldr r0, [sp, #0x4] + mov r1, r0 + str r10, [r1, #0x4] + bl FUN_02095040 + mov r0, #0x1 + str r0, [sp, #0x8] +_02091E6C: + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + beq _02091E94 + ldr r3, [r0, #0x0] + mov r1, #0xff + mvn r2, #0x0 + blx r3 + cmp r0, #0x0 + movne r0, #0x0 + strne r0, [sp, #0x8] +_02091E94: + ldr r0, [sp, #0xa4] + cmp r0, #0x0 + bne _02091EB0 + ldr r0, [sp, #0x18] + cmp r0, #0x0 + beq _02091EB0 + bl FUN_020927E4 +_02091EB0: + ldr r2, [sp, #0xc] + ldr r1, [sp, #0xa0] + ldr r0, [sp, #0x8] + str r2, [r1, #0x0] + add sp, sp, #0x7c + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02091ECC +FUN_02091ECC: ; 0x02091ECC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x18c + mov r10, r0 + mov r0, #0x0 + str r0, [sp, #0x8] + mov r5, r1 + ldr r1, [sp, #0x8] + mov r0, r2 + str r2, [sp, #0x4] + mov r4, r3 + str r1, [sp, #0xc] + ldr r9, [sp, #0x1b0] + bl FUN_02095188 + ldr r1, [r5, #0x4] + mov r8, r0 + cmp r1, #0x0 + beq _02091F28 + cmp r1, #0x1 + bne _02091F44 + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02091F44 +_02091F28: + mov r0, r10 + mov r1, #0x0 + bl FUN_02094D7C + add sp, sp, #0x18c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_02091F44: + ldr r0, [sp, #0x4] + ldr r1, [r0, #0x4] + cmp r1, #0x0 + beq _02091F6C + cmp r1, #0x1 + bne _02091F88 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02091F88 +_02091F6C: + mov r0, r10 + mov r1, #0x1 + bl FUN_02094D7C + add sp, sp, #0x18c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_02091F88: + cmp r1, #0x1 + bne _02091FC0 + ldr r0, [sp, #0x4] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _02091FC0 + mov r0, r10 + mov r1, r5 + bl FUN_02094E24 + add sp, sp, #0x18c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_02091FC0: + add r0, sp, #0x18 + bl FUN_020927BC + add r0, sp, #0x18 + mov r1, r4 + mov r2, r9 + bl FUN_02092744 +_02091FD8: ; 0x02091FD8 + cmp r0, #0x0 + ble _0209220C + add r0, sp, #0x4c + bl FUN_0209502C + ldr r2, [r9, #0x0] + add r1, r9, #0x4 + mov r0, #0x14 + mla r6, r2, r0, r1 + add r1, r2, #0x1 + str r1, [r9, #0x0] + mov r2, r4 + mov r4, #0x1 + add r0, sp, #0x4c + mov r1, r5 + mov r3, r9 + str r4, [sp, #0xc] + bl FUN_02093214 +_0209201C: ; 0x0209201C + cmp r0, #0x0 + beq _0209220C + add r1, sp, #0x4c + add r3, sp, #0x18 + mov r0, r6 + mov r2, r1 + str r9, [sp, #0x0] + bl FUN_02092698 +_0209203C: ; 0x0209203C + cmp r0, #0x0 + beq _0209220C + cmp r8, #0x11 + movle r11, r4 + ble _02092068 + cmp r8, #0x100 + movge r11, #0x5 + bge _02092068 + cmp r8, #0x80 + movge r11, #0x4 + movlt r11, #0x3 +_02092068: + sub r0, r11, #0x1 + mov r4, #0x1 + mov r7, r4, lsl r0 + cmp r7, #0x1 + ble _020920C4 + add r5, sp, #0x60 +_02092080: + mov r0, r5 + bl FUN_0209502C + sub r3, r4, #0x1 + mov r2, #0x14 + add r1, sp, #0x4c + mla r1, r3, r2, r1 + mov r0, r5 + mov r2, r6 + add r3, sp, #0x18 + str r9, [sp, #0x0] + bl FUN_02092698 +_020920AC: ; 0x020920AC + cmp r0, #0x0 + beq _0209220C + add r4, r4, #0x1 + cmp r4, r7 + add r5, r5, #0x14 + blt _02092080 +_020920C4: + mov r5, #0x1 + mov r0, r10 + mov r1, r5 + str r4, [sp, #0xc] + sub r8, r8, #0x1 + bl FUN_02094D7C +_020920DC: ; 0x020920DC + cmp r0, #0x0 + beq _0209220C + mov r0, r5 + str r0, [sp, #0x10] + mov r0, #0x0 + str r0, [sp, #0x14] +_020920F4: + ldr r0, [sp, #0x4] + mov r1, r8 + bl FUN_02094A8C +_02092100: ; 0x02092100 + cmp r0, #0x0 + bne _02092140 + cmp r5, #0x0 + bne _02092130 + mov r0, r10 + mov r1, r10 + mov r2, r10 + add r3, sp, #0x18 + str r9, [sp, #0x0] + bl FUN_02092698 +_02092128: ; 0x02092128 + cmp r0, #0x0 + beq _0209220C +_02092130: + cmp r8, #0x0 + beq _02092204 + sub r8, r8, #0x1 + b _020920F4 +_02092140: + ldr r6, [sp, #0x10] + ldr r7, [sp, #0x14] + cmp r11, #0x1 + mov r4, r6 + ble _02092184 +_02092154: + subs r1, r8, r4 + bmi _02092184 + ldr r0, [sp, #0x4] + bl FUN_02094A8C +_02092164: ; 0x02092164 + cmp r0, #0x0 + subne r0, r4, r7 + movne r0, r6, lsl r0 + movne r7, r4 + add r4, r4, #0x1 + orrne r6, r0, #0x1 + cmp r4, r11 + blt _02092154 +_02092184: + cmp r5, #0x0 + add r5, r7, #0x1 + bne _020921C8 + cmp r5, #0x0 + ldr r4, [sp, #0x14] + ble _020921C8 +_0209219C: + mov r0, r10 + mov r1, r10 + mov r2, r10 + add r3, sp, #0x18 + str r9, [sp, #0x0] + bl FUN_02092698 +_020921B4: ; 0x020921B4 + cmp r0, #0x0 + beq _0209220C + add r4, r4, #0x1 + cmp r4, r5 + blt _0209219C +_020921C8: + mov r3, r6, asr #0x1 + mov r1, #0x14 + add r0, sp, #0x4c + mla r2, r3, r1, r0 + mov r0, r10 + mov r1, r10 + add r3, sp, #0x18 + str r9, [sp, #0x0] + bl FUN_02092698 +_020921EC: ; 0x020921EC + cmp r0, #0x0 + beq _0209220C + add r0, r7, #0x1 + ldr r5, [sp, #0x14] + subs r8, r8, r0 + bpl _020920F4 +_02092204: + mov r0, #0x1 + str r0, [sp, #0x8] +_0209220C: + ldr r0, [sp, #0xc] + ldr r1, [r9, #0x0] + cmp r0, #0x0 + sub r0, r1, #0x1 + str r0, [r9, #0x0] + mov r4, #0x0 + ble _02092248 + add r5, sp, #0x4c +_0209222C: + mov r0, r5 + bl FUN_02095164 + ldr r0, [sp, #0xc] + add r4, r4, #0x1 + cmp r4, r0 + add r5, r5, #0x14 + blt _0209222C +_02092248: + add r0, sp, #0x18 + bl FUN_02092788 + ldr r0, [sp, #0x8] + add sp, sp, #0x18c + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02092260 +FUN_02092260: ; 0x02092260 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + movs r8, r2 + mov r10, r0 + mov r9, r1 + mov r11, #0x0 + mov r5, #0x2 + addeq sp, sp, #0x4 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r0, r8 + bl FUN_020951BC + cmp r0, #0x20 + beq _020922B4 + mov r1, #0x1 + cmp r10, r1, lsl r0 + addhi sp, sp, #0x4 + movhi r0, r11 + ldmhiia sp!, {r4-r11,lr} + bxhi lr +_020922B4: + cmp r10, r8 + rsb r2, r0, #0x20 + subcs r10, r10, r8 + cmp r2, #0x0 + movne r1, r10, lsl r2 + rsbne r0, r2, #0x20 + orrne r10, r1, r9, lsr r0 + movne r8, r8, lsl r2 + ldr r4, _0209239C ; =0x0000FFFF + movne r9, r9, lsl r2 + and r7, r4, r8, lsr #0x10 + and r6, r8, r4 +_020922E4: + mov r0, r10, lsr #0x10 + cmp r0, r7 + moveq r0, r4 + beq _02092300 + mov r0, r10 + mov r1, r7 + bl _u32_div_f +_02092300: + mul r12, r0, r7 + mul r3, r0, r6 + and r2, r4, r9, lsr #0x10 +_0209230C: + mov lr, #0x10000 + sub r1, r10, r12 + rsb lr, lr, #0x0 + ands lr, r1, lr + bne _02092338 + add r1, r2, r1, lsl #0x10 + cmp r3, r1 + subhi r12, r12, r7 + subhi r3, r3, r6 + subhi r0, r0, #0x1 + bhi _0209230C +_02092338: + mul r2, r0, r6 + and r1, r2, r4 + mul r3, r0, r7 + mov r1, r1, lsl #0x10 + cmp r9, r1 + add r2, r3, r2, lsr #0x10 + addcc r2, r2, #0x1 + cmp r10, r2 + addcc r10, r10, r8 + sub r9, r9, r1 + subcc r0, r0, #0x1 + sub r1, r10, r2 + subs r5, r5, #0x1 + beq _0209238C + and r2, r0, r4 + mov r1, r1, lsl #0x10 + and r0, r9, r4 + orr r10, r1, r9, lsr #0x10 + mov r11, r2, lsl #0x10 + mov r9, r0, lsl #0x10 + b _020922E4 +_0209238C: + orr r0, r11, r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209239C: .word 0x0000FFFF + + arm_func_start FUN_020923A0 +FUN_020923A0: ; 0x020923A0 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + mov r8, r0 + add r0, sp, #0x4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + mvn r4, #0x0 + bl FUN_0209502C + add r0, sp, #0x4 + mov r1, #0x0 + bl FUN_02094D7C + add r0, sp, #0x4 + mov r1, r6 + bl FUN_02094AFC +_020923DC: ; 0x020923DC + cmp r0, #0x0 + beq _02092404 + add r2, sp, #0x4 + mov r0, r8 + mov r3, r7 + mov r1, #0x0 + str r5, [sp, #0x0] + bl FUN_02093248 +_020923FC: ; 0x020923FC + cmp r0, #0x0 + movne r4, r6 +_02092404: + add r0, sp, #0x4 + bl FUN_0209510C + mov r0, r4 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_0209241C +FUN_0209241C: ; 0x0209241C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + ldr r6, [sp, #0x30] + mov r9, r1 + ldr r11, [r6, #0x0] + movs r10, r0 + add r0, r11, #0x1 + str r0, [r6, #0x0] + ldr r7, [r6, #0x0] + add r4, r6, #0x4 + mov r0, #0x14 + mla r5, r11, r0, r4 + add r12, r7, #0x1 + mov r1, #0x0 + str r5, [sp, #0x4] + mla r5, r7, r0, r4 + str r12, [r6, #0x0] + str r1, [sp, #0x0] + ldreq r1, [r6, #0x0] + mov r8, r2 + mlaeq r10, r1, r0, r4 + addeq r0, r1, #0x1 + streq r0, [r6, #0x0] + mov r7, r3 + cmp r9, #0x0 + bne _0209249C + ldr r2, [r6, #0x0] + add r1, r6, #0x4 + mov r0, #0x14 + mla r9, r2, r0, r1 + add r0, r2, #0x1 + str r0, [r6, #0x0] +_0209249C: + mov r0, r8 + mov r1, r7 + bl FUN_02094B98 +_020924A8: ; 0x020924A8 + cmp r0, #0x0 + bge _020924DC + mov r0, r10 + mov r1, #0x0 + bl FUN_02094D7C + mov r0, r9 + mov r1, r8 + bl FUN_02094E24 + add sp, sp, #0xc + str r11, [r6, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020924DC: + mov r0, r8 + bl FUN_02095188 + ldr r1, [r7, #0x28] + mov r2, r0 + mov r0, r1, lsl #0x1 + cmp r0, r2 + movgt r2, r0 + suble r0, r2, r0 + movgt r4, #0x0 + addle r0, r0, r0, lsr #0x1f + movle r4, r0, asr #0x1 + ldr r1, [r7, #0x2c] + add r0, r2, r2, lsr #0x1f + mov r0, r0, asr #0x1 + cmp r2, r1 + str r0, [sp, #0x8] + beq _02092534 + mov r1, r7 + mov r3, r6 + add r0, r7, #0x14 + bl FUN_020923A0 + str r0, [r7, #0x2c] +_02092534: + ldr r2, [sp, #0x8] + ldr r0, [sp, #0x4] + mov r1, r8 + sub r2, r2, r4 + bl FUN_02094134 +_02092548: ; 0x02092548 + cmp r0, #0x0 + beq _02092684 + ldr r1, [sp, #0x4] + mov r0, r5 + mov r3, r6 + add r2, r7, #0x14 + bl FUN_0209390C +_02092564: ; 0x02092564 + cmp r0, #0x0 + beq _02092684 + ldr r2, [sp, #0x8] + mov r0, r10 + mov r1, r5 + add r2, r2, r4 + bl FUN_02094134 +_02092580: ; 0x02092580 + cmp r0, #0x0 + beq _02092684 + mov r4, #0x0 + mov r0, r5 + mov r1, r7 + mov r2, r10 + mov r3, r6 + str r4, [r10, #0xc] + bl FUN_0209390C +_020925A4: ; 0x020925A4 + cmp r0, #0x0 + beq _02092684 + mov r0, r9 + mov r1, r8 + mov r2, r5 + bl FUN_02093B50 +_020925BC: ; 0x020925BC + cmp r0, #0x0 + beq _02092684 + mov r5, r4 + mov r0, r9 + mov r1, r7 + str r5, [r9, #0xc] + bl FUN_02094B98 +_020925D8: ; 0x020925D8 + cmp r0, #0x0 + blt _02092630 + mov r4, #0x1 +_020925E4: + cmp r5, #0x2 + add r5, r5, #0x1 + bgt _02092684 + mov r0, r9 + mov r1, r9 + mov r2, r7 + bl FUN_02093B50 +_02092600: ; 0x02092600 + cmp r0, #0x0 + beq _02092684 + mov r0, r10 + mov r1, r4 + bl FUN_0209400C +_02092614: ; 0x02092614 + cmp r0, #0x0 + beq _02092684 + mov r0, r9 + mov r1, r7 + bl FUN_02094B98 +_02092628: ; 0x02092628 + cmp r0, #0x0 + bge _020925E4 +_02092630: + ldr r0, [r9, #0x4] + mov r1, #0x1 + cmp r0, #0x0 + beq _0209265C + cmp r0, #0x1 + bne _02092658 + ldr r0, [r9, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209265C +_02092658: + mov r1, #0x0 +_0209265C: + cmp r1, #0x0 + movne r0, #0x0 + ldreq r0, [r8, #0xc] + str r0, [r9, #0xc] + mov r0, #0x1 + ldr r2, [r8, #0xc] + ldr r1, [r7, #0xc] + str r0, [sp, #0x0] + eor r0, r2, r1 + str r0, [r10, #0xc] +_02092684: + ldr r0, [sp, #0x0] + str r11, [r6, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02092698 +FUN_02092698: + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r4, [sp, #0x20] + mov r12, #0x14 + ldr r5, [r4, #0x0] + add lr, r4, #0x4 + mla r6, r5, r12, lr + add r12, r5, #0x1 + mov r8, r0 + mov r7, r3 + str r12, [r4, #0x0] + cmp r2, #0x0 + mov r5, #0x0 + beq _02092708 + cmp r1, r2 + bne _020926F0 + mov r0, r6 + mov r2, r4 + bl FUN_0209305C +_020926E4: ; 0x020926E4 + cmp r0, #0x0 + bne _0209270C + b _02092728 +_020926F0: + mov r0, r6 + mov r3, r4 + bl FUN_0209390C +_020926FC: ; 0x020926FC + cmp r0, #0x0 + bne _0209270C + b _02092728 +_02092708: + mov r6, r1 +_0209270C: + mov r1, r8 + mov r2, r6 + mov r3, r7 + mov r0, #0x0 + str r4, [sp, #0x0] + bl FUN_0209241C + mov r5, #0x1 +_02092728: + ldr r1, [r4, #0x0] + mov r0, r5 + sub r1, r1, #0x1 + str r1, [r4, #0x0] + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_02092744 +FUN_02092744: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_02094E24 + add r0, r5, #0x14 + mov r1, #0x0 + bl FUN_02094D7C + mov r0, r4 + bl FUN_02095188 + str r0, [r5, #0x28] + mov r0, #0x0 + str r0, [r5, #0x2c] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02092788 +FUN_02092788: ; 0x02092788 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_0209510C + add r0, r4, #0x14 + bl FUN_0209510C + ldr r0, [r4, #0x30] + ands r0, r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + bl FUN_0209105C + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020927BC +FUN_020927BC: ; 0x020927BC + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_0209502C + add r0, r4, #0x14 + bl FUN_0209502C +_020927D0: ; 0x020927D0 + mov r0, #0x0 + str r0, [r4, #0x28] + str r0, [r4, #0x30] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020927E4 +FUN_020927E4: ; 0x020927E4 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0xc + bl FUN_0209510C + add r0, r4, #0x20 + bl FUN_0209510C + add r0, r4, #0x34 + bl FUN_0209510C + ldr r0, [r4, #0x4c] + ands r0, r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + bl FUN_0209105C + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02092824 +FUN_02092824: ; 0x02092824 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, #0x0 + str r1, [r4, #0x0] + add r0, r4, #0xc + str r1, [r4, #0x8] + bl FUN_0209502C + add r0, r4, #0x20 + bl FUN_0209502C + add r0, r4, #0x34 + bl FUN_0209502C +_02092850: ; 0x02092850 + mov r0, #0x0 + str r0, [r4, #0x4c] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02092860 +FUN_02092860: ; 0x02092860 + stmdb sp!, {r4,lr} + mov r0, #0x50 + bl FUN_020910A4 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl FUN_02092824 + mov r1, #0x1 + mov r0, r4 + str r1, [r4, #0x4c] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02092894 +FUN_02092894: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r6, r1 + ldr r3, [r6, #0x4] + mov r7, r0 + cmp r3, #0x0 + mov r5, r2 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r0, r7, #0x20 + add r4, r7, #0xc + bl FUN_02094E24 +_020928CC: ; 0x020928CC + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r0, sp, #0x0 + bl FUN_0209502C + mov r1, #0x1 + mov r0, r6 + str r1, [r7, #0x0] + bl FUN_02095188 + add r1, r0, #0x1f + mov r0, r1, asr #0x4 + add r0, r1, r0, lsr #0x1b + mov r2, r0, asr #0x5 + mov r0, r4 + mov r1, #0x0 + str r2, [r7, #0x8] + bl FUN_02094D7C +_02092918: ; 0x02092918 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r4 + mov r1, #0x20 + bl FUN_02094AFC +_02092938: ; 0x02092938 + cmp r0, #0x0 + beq _02092A38 + ldr r0, [r6, #0x0] + ldr r4, [r0, #0x0] + mov r0, r4 + bl FUN_02092D9C + mov r1, r0 + add r0, sp, #0x0 + bl FUN_02094D7C +_0209295C: ; 0x0209295C + cmp r0, #0x0 + beq _02092A38 + add r0, sp, #0x0 + mov r2, #0x20 + mov r1, r0 + bl FUN_02094250 +_02092974: ; 0x02092974 + cmp r0, #0x0 + beq _02092A38 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _020929B0 + cmp r0, #0x1 + bne _020929A0 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020929B0 +_020929A0: + add r0, sp, #0x0 + mov r1, #0x1 + bl FUN_02093EAC + b _020929C4 +_020929B0: + add r0, sp, #0x0 + mvn r1, #0x0 + bl FUN_02094D7C +_020929BC: ; 0x020929BC + cmp r0, #0x0 + beq _02092A38 +_020929C4: + ldr r2, [sp, #0x4] + cmp r2, #0x1 + ldrge r0, [sp, #0x0] + ldrge r1, [r0, #0x0] + movlt r1, #0x0 + cmp r2, #0x2 + ldrge r0, [sp, #0x0] + mov r2, r4 + ldrge r0, [r0, #0x4] + movlt r0, #0x0 + bl FUN_02092260 + str r0, [r7, #0x48] + add r0, r7, #0xc + mov r1, #0x0 + bl FUN_02094D7C + ldr r1, [r7, #0x8] + add r0, r7, #0xc + mov r1, r1, lsl #0x6 + bl FUN_02094AFC +_02092A10: ; 0x02092A10 + cmp r0, #0x0 + beq _02092A38 + add r0, r7, #0xc + mov r1, r0 + mov r3, r5 + add r2, r7, #0x20 + bl FUN_02093214 + ldr r1, [r7, #0x8] + add r0, r7, #0xc + bl FUN_0209508C +_02092A38: + add r0, sp, #0x0 + bl FUN_0209510C + mov r0, #0x1 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_02092A50 +FUN_02092A50: ; 0x02092A50 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r4, r2 + mov r7, r1 + cmp r4, #0x6 + mov r5, r0 + movgt r4, #0x6 + mov r1, #0x1 + mov r2, r1, lsl r4 + ldr r0, [r7, #0x4] + sub r2, r2, #0x1 + add r0, r4, r0, lsl #0x5 + ldr r3, _02092C24 ; =0x02106170 + str r2, [sp, #0x0] + ldr r2, [r3, r4, lsl #0x2] + mov r1, r4 + sub r0, r0, #0x1 + str r2, [sp, #0x4] + mov r6, #0x0 + bl _s32_div_f + mov r12, #0x0 + mov r0, r0, lsl #0x1 + add r0, r0, #0x2 + mov r8, r6 + add r1, r5, r0 + strb r8, [r5, r0] + strb r8, [r1, #-0x1] + ldr r0, [r7, #0x0] + ldr r2, [r7, #0x4] + ldr r7, [r0, #0x0] + add lr, r0, #0x4 + cmp r2, #0x1 + sub r9, r1, #0x2 + ldrgt r8, [lr], #0x4 + mov r10, r7 + mov r0, r12 + str r12, [sp, #0x8] + mov r1, #0xff + mov r11, r12 +_02092AEC: + ldr r3, [sp, #0x0] + and r3, r10, r3 + ldr r10, [sp, #0x4] + ldrb r10, [r10, r3] + cmp r10, #0x0 + beq _02092B4C + add r12, r12, r10 + add r6, r6, r10 + cmp r6, #0x20 + blo _02092B34 + cmp r2, #0x1 + ble _02092B4C + sub r2, r2, #0x1 + mov r7, r8 + cmp r2, #0x1 + movle r8, r11 + ldrgt r8, [lr], #0x4 + sub r6, r6, #0x20 +_02092B34: + cmp r6, #0x0 + moveq r10, r7 + movne r10, r7, lsr r6 + rsbne r3, r6, #0x20 + orrne r10, r10, r8, lsl r3 + b _02092AEC +_02092B4C: + cmp r3, #0x0 + beq _02092BD0 + strb r12, [r9, #0x0] + strb r3, [r9, #-0x1] + cmp r12, #0x100 + sub r9, r9, #0x2 + blo _02092B88 + cmp r12, #0x100 + blo _02092B88 +_02092B70: + strb r1, [r9, #0x0] + sub r12, r12, #0x100 + strb r0, [r9, #-0x1] + sub r9, r9, #0x2 + cmp r12, #0x100 + bhs _02092B70 +_02092B88: + mov r12, r4 + add r6, r6, r4 + cmp r6, #0x20 + blo _02092BB8 + cmp r2, #0x1 + ble _02092BD0 + sub r2, r2, #0x1 + mov r7, r8 + cmp r2, #0x1 + ldrle r8, [sp, #0x8] + sub r6, r6, #0x20 + ldrgt r8, [lr], #0x4 +_02092BB8: + cmp r6, #0x0 + moveq r10, r7 + movne r10, r7, lsr r6 + rsbne r3, r6, #0x20 + orrne r10, r10, r8, lsl r3 + b _02092AEC +_02092BD0: + add r9, r9, #0x1 + mov r0, #0x2 + b _02092BF4 +_02092BDC: + strb r2, [r5, #0x0] + ldrb r1, [r9, #0x1] + add r9, r9, #0x2 + add r0, r0, #0x2 + strb r1, [r5, #0x1] + add r5, r5, #0x2 +_02092BF4: + ldrb r2, [r9, #0x0] + cmp r2, #0x0 + bne _02092BDC + ldrb r1, [r9, #0x1] + cmp r1, #0x0 + bne _02092BDC + mov r1, #0x0 + strb r1, [r5, #0x0] + strb r1, [r5, #0x1] + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_02092C24: .word 0x02106170 + + arm_func_start FUN_02092C28 +FUN_02092C28: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r5, [r3], #0x4 + mov r2, #0x14 + mla r4, r5, r2, r3 + mov r9, r0 + ldr r0, [r9, #0x4] + mov r8, r1 + cmp r0, #0x0 + mov r5, #0x0 + mov r1, r0, lsl #0x5 + addeq sp, sp, #0x4 + moveq r0, r5 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + cmp r0, #0x1 + bne _02092CC8 + cmp r0, #0x1 + bne _02092C8C + ldr r2, [r9, #0x0] + ldr r1, _02092D8C ; =0x00010001 + ldr r2, [r2, #0x0] + cmp r2, r1 + ldreq r5, _02092D90 ; =0x020FF500 + beq _02092CB8 +_02092C8C: + ldr r1, [r9, #0x0] + ldr r1, [r1, #0x0] + cmp r1, #0x11 + bne _02092CA8 + cmp r0, #0x1 + ldreq r5, _02092D94 ; =0x020FF518 + beq _02092CB8 +_02092CA8: + cmp r1, #0x3 + bne _02092CB8 + cmp r0, #0x1 + ldreq r5, _02092D98 ; =0x020FF50C +_02092CB8: + mov r7, #0x1 + mov r6, r7 + mov r1, #0x20 + b _02092CF8 +_02092CC8: + cmp r1, #0x100 + movge r7, #0x5 + movge r6, #0x10 + movge r1, #0x7 + bge _02092CF8 + cmp r1, #0x80 + movge r6, #0x8 + movge r1, r6 + movge r7, #0x4 + movlt r7, #0x3 + movlt r6, #0x4 + movlt r1, #0xb +_02092CF8: + mul r1, r0, r1 + mov r0, r1, lsl #0x1 + add r1, r0, #0x7 + mov r0, r1, asr #0x1 + add r0, r1, r0, lsr #0x1e + cmp r5, #0x0 + mov r1, r0, asr #0x2 + bne _02092D74 + ldr r0, [r4, #0x8] + cmp r1, r0 + movle r0, r4 + ble _02092D30 + mov r0, r4 + bl FUN_02094EBC +_02092D30: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r5, [r4, #0x0] + mov r1, r9 + mov r2, r7 + add r0, r5, #0x4 + bl FUN_02092A50 + add r1, r0, #0x2 + mov r0, r1, asr #0x8 + strb r0, [r5, #0x0] + strb r1, [r5, #0x1] + strb r7, [r5, #0x2] + strb r6, [r5, #0x3] + b _02092D78 +_02092D74: + mov r1, #0x8 +_02092D78: + str r5, [r8, #0x0] + add r0, r1, #0x2 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_02092D8C: .word 0x00010001 +_02092D90: .word 0x020FF500 +_02092D94: .word 0x020FF518 +_02092D98: .word 0x020FF50C + + arm_func_start FUN_02092D9C +FUN_02092D9C: ; 0x02092D9C + stmdb sp!, {r4-r10,lr} + mov r10, r0 + mov r1, r10 + rsb r0, r10, #0x0 + bl _u32_div_f + movs r8, r1 + mov r7, r10 + mov r5, #0x0 + mov r6, #0x1 + mvn r4, #0x0 + beq _02092E04 +_02092DC8: + mov r0, r7 + mov r1, r8 + bl _u32_div_f + mov r9, r1 + mov r0, r7 + mov r1, r8 + bl _u32_div_f + mla r1, r0, r6, r5 + mov r5, r6 + mov r7, r8 + mov r6, r1 + mov r8, r9 + cmp r9, #0x0 + rsb r4, r4, #0x0 + bne _02092DC8 +_02092E04: + cmp r4, #0x0 + sublt r5, r10, r5 + cmp r7, #0x1 + movne r1, #0x0 + bne _02092E24 + mov r0, r5 + mov r1, r10 + bl _u32_div_f +_02092E24: + mov r0, r1 + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start FUN_02092E30 +FUN_02092E30: ; 0x02092E30 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r7, r3 + mov r9, r1 + mov r6, #0x0 + mov r10, r0 + mov r8, r2 + mov r4, r6 + cmp r7, #0x0 + add r5, r9, r7, lsl #0x2 + ldr r11, [sp, #0x30] + ble _02092EC0 + mov r0, #0x1 + str r6, [sp, #0x4] + str r0, [sp, #0x0] +_02092E6C: + ldr r1, [r9, #0x0] + mov r0, r9 + mul r3, r1, r11 + mov r1, r8 + mov r2, r7 + bl FUN_020948AC + add r1, r0, r6 + ldr r0, [r5, #0x0] + cmp r1, r6 + ldrcc r6, [sp, #0x0] + add r0, r0, r1 + str r0, [r5, #0x0] + ldr r0, [r5, #0x0] + ldrcs r6, [sp, #0x4] + cmp r0, r1 + add r4, r4, #0x1 + addcc r6, r6, #0x1 + cmp r4, r7 + add r9, r9, #0x4 + add r5, r5, #0x4 + blt _02092E6C +_02092EC0: + cmp r6, #0x0 + sub r2, r7, #0x1 + bne _02092F14 + ldr r1, [r9, r2, lsl #0x2] + ldr r0, [r8, r2, lsl #0x2] + cmp r1, r0 + bne _02092F00 + cmp r2, #0x0 + ble _02092F00 +_02092EE4: + ldr r1, [r9, r2, lsl #0x2] + ldr r0, [r8, r2, lsl #0x2] + cmp r1, r0 + bne _02092F00 + sub r2, r2, #0x1 + cmp r2, #0x0 + bgt _02092EE4 +_02092F00: + ldr r1, [r9, r2, lsl #0x2] + ldr r0, [r8, r2, lsl #0x2] + cmp r1, r0 + movcs r6, #0x1 + movcc r6, #0x0 +_02092F14: + cmp r6, #0x0 + beq _02092F3C + mov r0, r10 + mov r1, r9 + mov r2, r8 + mov r3, r7 + bl FUN_02094354 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr +_02092F3C: + cmp r7, #0x0 + addle sp, sp, #0xc + mov r1, #0x0 + ldmleia sp!, {r4-r11,lr} + bxle lr +_02092F50: + ldr r0, [r9, r1, lsl #0x2] + str r0, [r10, r1, lsl #0x2] + add r1, r1, #0x1 + cmp r1, r7 + blt _02092F50 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02092F70 +FUN_02092F70: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r11, r2 + mov r6, r11, lsl #0x1 + mov r10, r0 + mov r7, r11 + mov r9, r1 + sub r7, r7, #0x1 + sub r2, r6, #0x1 + mov r0, #0x0 + str r0, [r10, r2, lsl #0x2] + ldr r0, [r10, r2, lsl #0x2] + str r3, [sp, #0x0] + mov r5, r9 + str r0, [r10, #0x0] + cmp r7, #0x0 + add r4, r10, #0x4 + ble _02092FD8 + add r5, r5, #0x4 + ldr r3, [r9, #0x0] + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl FUN_0209470C + str r0, [r4, r7, lsl #0x2] + add r4, r4, #0x8 +_02092FD8: + sub r8, r11, #0x2 + cmp r8, #0x0 + ble _02093018 +_02092FE4: + mov r0, r5 + sub r7, r7, #0x1 + add r5, r5, #0x4 + ldr r3, [r0, #0x0] + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl FUN_020948AC + sub r8, r8, #0x1 + str r0, [r4, r7, lsl #0x2] + cmp r8, #0x0 + add r4, r4, #0x8 + bgt _02092FE4 +_02093018: + mov r0, r10 + mov r1, r10 + mov r2, r10 + mov r3, r6 + bl FUN_02094468 +_0209302C: ; 0x0209302C + ldr r0, [sp, #0x0] + mov r1, r9 + mov r2, r11 + bl FUN_020945B8 + ldr r2, [sp, #0x0] + mov r0, r10 + mov r1, r10 + mov r3, r6 + bl FUN_02094468 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_0209305C +FUN_0209305C: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x64 + ldr r5, [r2, #0x0] + mov r9, r0 + mov r8, r1 + cmp r8, r9 + add r3, r2, #0x4 + mov r2, #0x14 + movne r7, r9 + addeq r0, r5, #0x1 + mla r4, r5, r2, r3 + mlaeq r7, r0, r2, r3 + ldr r5, [r8, #0x4] + cmp r5, #0x0 + movle r0, #0x0 + strle r0, [r9, #0x4] + addle sp, sp, #0x64 + movle r0, #0x1 + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r0, [r7, #0x8] + mov r6, r5, lsl #0x1 + cmp r6, r0 + movle r0, r7 + ble _020930CC + mov r0, r7 + mov r1, r6 + bl FUN_02094EBC +_020930CC: + cmp r0, #0x0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + str r6, [r7, #0x4] + mov r0, #0x0 + str r0, [r7, #0xc] + cmp r5, #0x4 + bne _0209310C + ldr r0, [r7, #0x0] + ldr r1, [r8, #0x0] + add r3, sp, #0x0 + mov r2, #0x4 + bl FUN_02092F70 + b _02093170 +_0209310C: + cmp r5, #0x8 + bne _0209312C + ldr r0, [r7, #0x0] + ldr r1, [r8, #0x0] + add r3, sp, #0x20 + mov r2, #0x8 + bl FUN_02092F70 + b _02093170 +_0209312C: + ldr r0, [r4, #0x8] + cmp r6, r0 + movle r0, r4 + ble _02093148 + mov r0, r4 + mov r1, r6 + bl FUN_02094EBC +_02093148: + cmp r0, #0x0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r0, [r7, #0x0] + ldr r1, [r8, #0x0] + ldr r3, [r4, #0x0] + mov r2, r5 + bl FUN_02092F70 +_02093170: + cmp r6, #0x0 + ble _02093194 + ldr r1, [r7, #0x0] + sub r0, r6, #0x1 + ldr r0, [r1, r0, lsl #0x2] + cmp r0, #0x0 + ldreq r0, [r7, #0x4] + subeq r0, r0, #0x1 + streq r0, [r7, #0x4] +_02093194: + cmp r7, r9 + beq _020931A8 + mov r0, r9 + mov r1, r7 + bl FUN_02094E24 +_020931A8: + mov r0, #0x1 + add sp, sp, #0x64 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_020931B8 +FUN_020931B8: + stmdb sp!, {lr} + sub sp, sp, #0xc + ldr r12, [r3, #0x4] + cmp r12, #0x0 + ble _020931FC + ldr r12, [r3, #0x0] + ldr r12, [r12, #0x0] + ands r12, r12, #0x1 + beq _020931FC + ldr lr, [sp, #0x10] + mov r12, #0x0 + str lr, [sp, #0x0] + str r12, [sp, #0x4] + bl FUN_020916C8 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr +_020931FC: + ldr r12, [sp, #0x10] + str r12, [sp, #0x0] + bl FUN_02091ECC + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_02093214 +FUN_02093214: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, r1 + mov r12, r2 + str r3, [sp, #0x0] + mov r1, r0 + mov r2, lr + mov r3, r12 + mov r0, #0x0 + bl FUN_02093248 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_02093248 +FUN_02093248: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + mov r6, r3 + ldr r3, [r6, #0x4] + mov r8, r0 + str r1, [sp, #0x0] + str r2, [sp, #0x4] + cmp r3, #0x0 + ldr r4, [sp, #0x70] + beq _02093288 + cmp r3, #0x1 + bne _02093298 + ldr r0, [r6, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _02093298 +_02093288: + add sp, sp, #0x4c + mov r0, #0x0 + ldmia sp!, {r4-r11,lr} + bx lr +_02093298: + ldr r0, [sp, #0x4] + mov r1, r6 + bl FUN_02094B98 +_020932A4: ; 0x020932A4 + cmp r0, #0x0 + bge _020932F8 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _020932D4 + ldr r1, [sp, #0x4] + bl FUN_02094E24 +_020932C0: ; 0x020932C0 + cmp r0, #0x0 + addeq sp, sp, #0x4c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr +_020932D4: + cmp r8, #0x0 + beq _020932E8 + mov r0, r8 + mov r1, #0x0 + bl FUN_02094D7C +_020932E8: + add sp, sp, #0x4c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020932F8: + ldr r3, [r4, #0x0] + add r0, r4, #0x4 + mov r2, #0x14 + mla r1, r3, r2, r0 + mov r3, #0x0 + str r3, [r1, #0xc] + ldr r5, [r4, #0x0] + str r1, [sp, #0x14] + add r4, r5, #0x1 + mla r1, r4, r2, r0 + add r3, r5, #0x2 + str r1, [sp, #0x18] + mla r1, r3, r2, r0 + cmp r8, #0x0 + str r1, [sp, #0x1c] + addeq r1, r5, #0x3 + mlaeq r8, r1, r2, r0 + mov r0, r6 + bl FUN_02095188 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #0x1b + add r0, r1, r0, ror #0x1b + rsb r0, r0, #0x20 + str r0, [sp, #0x8] + ldr r0, [sp, #0x1c] + ldr r2, [sp, #0x8] + mov r1, r6 + bl FUN_02094250 +_02093368: ; 0x02093368 + cmp r0, #0x0 + addeq sp, sp, #0x4c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r2, [sp, #0x8] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x4] + ldr r3, [sp, #0x1c] + mov r4, #0x0 + add r2, r2, #0x20 + str r4, [r3, #0xc] + bl FUN_02094250 +_0209339C: ; 0x0209339C + cmp r0, #0x0 + addeq sp, sp, #0x4c + moveq r0, r4 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, [sp, #0x18] + mov r1, r4 + str r1, [r0, #0xc] + ldr r0, [sp, #0x1c] + ldr r0, [r0, #0x4] + str r0, [sp, #0x28] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x28] + ldr r4, [r0, #0x4] + add r0, sp, #0x38 + sub r1, r4, r1 + str r1, [sp, #0x10] + bl FUN_0209502C + ldr r0, [sp, #0x18] + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x28] + sub r1, r0, #0x1 + ldr r0, [sp, #0x10] + add r0, r2, r0, lsl #0x2 + str r0, [sp, #0x38] + ldr r0, [sp, #0x28] + str r0, [sp, #0x3c] + ldr r0, [sp, #0x18] + ldr r2, [r0, #0x8] + ldr r0, [sp, #0x28] + cmp r0, #0x1 + add r0, r2, #0x1 + str r0, [sp, #0x40] + ldr r0, [sp, #0x1c] + moveq r5, #0x0 + ldr r2, [r0, #0x0] + ldr r0, [r2, r1, lsl #0x2] + str r0, [sp, #0x24] + ldrne r0, [sp, #0x28] + subne r0, r0, #0x2 + ldrne r5, [r2, r0, lsl #0x2] + ldr r0, [sp, #0x18] + ldr r2, [r8, #0x8] + ldr r1, [r0, #0x0] + sub r0, r4, #0x1 + add r7, r1, r0, lsl #0x2 + ldr r0, [sp, #0x10] + add r1, r0, #0x1 + cmp r1, r2 + movle r0, r8 + ble _02093470 + mov r0, r8 + bl FUN_02094EBC +_02093470: + cmp r0, #0x0 + beq _020937D4 + ldr r0, [sp, #0x4] + ldr r1, [r6, #0xc] + ldr r3, [r0, #0xc] + ldr r0, [sp, #0x10] + sub r2, r0, #0x1 + eor r0, r3, r1 + str r0, [r8, #0xc] + ldr r0, [sp, #0x10] + str r0, [r8, #0x4] + ldr r0, [sp, #0x28] + ldr r3, [r8, #0x0] + add r1, r0, #0x1 + add r0, r3, r2, lsl #0x2 + str r0, [sp, #0x20] + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x8] + cmp r1, r0 + ldrle r0, [sp, #0x14] + ble _020934CC + ldr r0, [sp, #0x14] + bl FUN_02094EBC +_020934CC: + cmp r0, #0x0 + beq _020937D4 + ldr r1, [sp, #0x1c] + add r0, sp, #0x38 + bl FUN_02094B98 +_020934E0: ; 0x020934E0 + cmp r0, #0x0 + blt _02093520 + add r0, sp, #0x38 + ldr r2, [sp, #0x1c] + mov r1, r0 + bl FUN_02093B50 +_020934F8: ; 0x020934F8 + cmp r0, #0x0 + beq _020937D4 + ldr r0, [sp, #0x20] + mov r2, #0x1 + str r2, [r0, #0x0] + ldr r0, [r8, #0x4] + ldr r1, [r8, #0x0] + sub r0, r0, #0x1 + str r2, [r1, r0, lsl #0x2] + b _0209352C +_02093520: + ldr r0, [r8, #0x4] + sub r0, r0, #0x1 + str r0, [r8, #0x4] +_0209352C: + ldr r0, [sp, #0x10] + sub r1, r0, #0x1 + ldr r0, [sp, #0x20] + cmp r1, #0x0 + sub r0, r0, #0x4 + str r0, [sp, #0x20] + mov r0, #0x0 + str r0, [sp, #0xc] + ble _0209377C + ldr r8, _020937E4 ; =0x0000FFFF + cmp r1, #0x0 + and r0, r5, r8 + str r0, [sp, #0x2c] + and r0, r8, r5, lsr #0x10 + str r0, [sp, #0x30] + ldr r0, [sp, #0x24] + and r4, r0, r8 + ble _0209377C + and r9, r8, r0, lsr #0x10 + mvn r0, #0x0 + str r0, [sp, #0x34] +_02093580: + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + sub r1, r1, #0x4 + add r0, r0, #0x1 + str r0, [sp, #0x3c] + str r1, [sp, #0x38] + ldr r11, [r7, #0x0] + ldr r0, [sp, #0x24] + ldr r5, [r7, #-0x4] + cmp r11, r0 + ldreq r6, [sp, #0x34] + beq _020935C4 + ldr r2, [sp, #0x24] + mov r0, r11 + mov r1, r5 + bl FUN_02092260 + mov r6, r0 +_020935C4: + ldr r0, [sp, #0x2c] + and r2, r6, r8 + mul r12, r0, r2 + ldr r0, [sp, #0x30] + and lr, r8, r6, lsr #0x10 + ldr r1, [sp, #0x30] + mul r0, r2, r0 + mul r3, r1, lr + ldr r1, [sp, #0x2c] + mul r10, r9, lr + mla r1, lr, r1, r0 + cmp r1, r0 + addcc r3, r3, #0x10000 + and r0, r8, r1, lsr #0x10 + add r3, r3, r0 + and r0, r1, r8 + add r12, r12, r0, lsl #0x10 + cmp r12, r0, lsl #0x10 + mul r0, r2, r9 + mul r1, r4, r2 + mla r2, lr, r4, r0 + addcc r3, r3, #0x1 + cmp r2, r0 + addcc r10, r10, #0x10000 + and r0, r8, r2, lsr #0x10 + add r10, r10, r0 + and r0, r2, r8 + add r1, r1, r0, lsl #0x10 + cmp r1, r0, lsl #0x10 + addcc r10, r10, #0x1 + sub r1, r5, r1 + cmp r1, r5 + addhi r10, r10, #0x1 + subs r0, r11, r10 + bne _02093674 + cmp r3, r1 + blo _02093674 + cmp r3, r1 + bne _0209366C + ldr r0, [r7, #-0x8] + cmp r12, r0 + bls _02093674 +_0209366C: + sub r6, r6, #0x1 + b _020935C4 +_02093674: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + ldr r0, [r0, #0x0] + ldr r1, [r1, #0x0] + ldr r2, [sp, #0x28] + mov r3, r6 + bl FUN_0209470C + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x28] + ldr r3, [r1, #0x0] + ldr r1, [sp, #0x28] + str r0, [r3, r2, lsl #0x2] + add r1, r1, #0x1 + cmp r1, #0x0 + ble _020936D4 + ldr r0, [sp, #0x14] + ldr r2, [r0, #0x0] +_020936B8: + sub r0, r1, #0x1 + ldr r0, [r2, r0, lsl #0x2] + cmp r0, #0x0 + bne _020936D4 + sub r1, r1, #0x1 + cmp r1, #0x0 + bgt _020936B8 +_020936D4: + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x14] + str r1, [r0, #0x4] + add r0, sp, #0x38 + mov r1, r0 + ldr r5, [sp, #0x3c] + bl FUN_02093A0C + ldr r0, [sp, #0x18] + ldr r1, [r0, #0x4] + ldr r0, [sp, #0x3c] + add r0, r1, r0 + sub r1, r0, r5 + ldr r0, [sp, #0x18] + str r1, [r0, #0x4] + ldr r0, [sp, #0x44] + cmp r0, #0x0 + beq _0209374C + add r0, sp, #0x38 + ldr r2, [sp, #0x1c] + mov r1, r0 + sub r6, r6, #0x1 + ldr r5, [sp, #0x3c] + bl FUN_02093DD0 + ldr r0, [sp, #0x18] + ldr r1, [r0, #0x4] + ldr r0, [sp, #0x3c] + sub r0, r0, r5 + add r1, r1, r0 + ldr r0, [sp, #0x18] + str r1, [r0, #0x4] +_0209374C: + ldr r0, [sp, #0x20] + sub r7, r7, #0x4 + str r6, [r0], #-0x4 + str r0, [sp, #0x20] + ldr r0, [sp, #0xc] + add r0, r0, #0x1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x10] + sub r1, r0, #0x1 + ldr r0, [sp, #0xc] + cmp r0, r1 + blt _02093580 +_0209377C: + ldr r0, [sp, #0x18] + bl FUN_02095040 +_02093784: ; 0x02093784 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _020937C4 + ldr r2, [sp, #0x8] + ldr r3, [sp, #0x4] + ldr r1, [sp, #0x18] + add r2, r2, #0x20 + ldr r4, [r3, #0xc] + bl FUN_02094134 +_020937A8: ; 0x020937A8 + cmp r0, #0x0 + addeq sp, sp, #0x4c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, [sp, #0x0] + str r4, [r0, #0xc] +_020937C4: + add sp, sp, #0x4c + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020937D4: + mov r0, #0x0 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020937E4: .word 0x0000FFFF + + arm_func_start FUN_020937E8 +FUN_020937E8: ; 0x020937E8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r5, [sp, #0x20] + mov r7, r2 + mov r9, r0 + mov r8, r1 + mov r6, r3 + cmp r7, r5 + bge _02093824 + mov r1, r7 + mov r0, r8 + mov r7, r5 + mov r8, r6 + mov r5, r1 + mov r6, r0 +_02093824: + ldr r3, [r6, #0x0] + mov r0, r9 + mov r1, r8 + mov r2, r7 + add r4, r9, r7, lsl #0x2 + bl FUN_0209470C + str r0, [r9, r7, lsl #0x2] +_02093840: + sub r0, r5, #0x1 + cmp r0, #0x0 + addle sp, sp, #0x4 + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r3, [r6, #0x4] + mov r1, r8 + mov r2, r7 + add r0, r9, #0x4 + bl FUN_020948AC + sub r1, r5, #0x2 + cmp r1, #0x0 + addle sp, sp, #0x4 + str r0, [r4, #0x4] + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r3, [r6, #0x8] + mov r1, r8 + mov r2, r7 + add r0, r9, #0x8 + bl FUN_020948AC + sub r1, r5, #0x3 + cmp r1, #0x0 + addle sp, sp, #0x4 + str r0, [r4, #0x8] + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r3, [r6, #0xc] + mov r1, r8 + mov r2, r7 + add r0, r9, #0xc + bl FUN_020948AC + sub r5, r5, #0x4 + cmp r5, #0x0 + addle sp, sp, #0x4 + str r0, [r4, #0xc] + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r3, [r6, #0x10] + mov r1, r8 + mov r2, r7 + add r0, r9, #0x10 + bl FUN_020948AC + str r0, [r4, #0x10] + add r4, r4, #0x10 + add r9, r9, #0x10 + add r6, r6, #0x10 + b _02093840 +_02093900: ; 0x02093900 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_0209390C +FUN_0209390C: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldr r6, [r9, #0x4] + mov r8, r2 + mov r10, r0 + cmp r6, #0x0 + ldr r5, [r8, #0x4] + beq _02093938 + cmp r5, #0x0 + bne _02093954 +_02093938: + mov r0, r10 + mov r1, #0x0 + bl FUN_02094D7C + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_02093954: + ldr r1, [r9, #0xc] + ldr r0, [r8, #0xc] + cmp r10, r9 + add r7, r6, r5 + eor r11, r1, r0 + beq _02093974 + cmp r10, r8 + bne _0209398C +_02093974: + ldr r0, [r3, #0x0] + add r2, r3, #0x4 + add r1, r0, #0x1 + mov r0, #0x14 + mla r4, r1, r0, r2 + b _02093990 +_0209398C: + mov r4, r10 +_02093990: + ldr r0, [r4, #0x8] + cmp r7, r0 + movle r0, r4 + ble _020939AC + mov r0, r4 + mov r1, r7 + bl FUN_02094EBC +_020939AC: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + str r7, [r4, #0x4] + str r5, [sp, #0x0] + ldr r0, [r4, #0x0] + ldr r1, [r9, #0x0] + ldr r3, [r8, #0x0] + mov r2, r6 + bl FUN_020937E8 + mov r0, r4 + str r11, [r10, #0xc] + bl FUN_02095040 + cmp r10, r4 + beq _020939FC + mov r0, r10 + mov r1, r4 + bl FUN_02094E24 +_020939FC: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02093A0C +FUN_02093A0C: ; 0x02093A0C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r1, [r6, #0xc] + mov r3, #0x0 + mov r7, r0 + mov r5, r2 + mov r4, r3 + cmp r1, #0x0 + beq _02093A54 + ldr r0, [r5, #0xc] + cmp r0, #0x0 + movne r0, r6 + moveq r3, #0x1 + movne r6, r5 + movne r5, r0 + moveq r4, r3 + b _02093A60 +_02093A54: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + movne r3, #0x1 +_02093A60: + cmp r3, #0x0 + beq _02093A94 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_02093CB4 +_02093A78: ; 0x02093A78 + cmp r0, #0x0 + moveq r0, #0x0 + add sp, sp, #0x4 + strne r4, [r7, #0xc] + movne r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_02093A94: + ldr r0, [r5, #0x4] + ldr r1, [r6, #0x4] + cmp r1, r0 + movle r1, r0 + ldr r0, [r7, #0x8] + cmp r1, r0 + movle r0, r7 + ble _02093ABC + mov r0, r7 + bl FUN_02094EBC +_02093ABC: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r6 + mov r1, r5 + bl FUN_02094B98 +_02093ADC: ; 0x02093ADC + cmp r0, #0x0 + bge _02093B14 + mov r0, r7 + mov r1, r5 + mov r2, r6 + bl FUN_02093B50 +_02093AF4: ; 0x02093AF4 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, #0x1 + str r0, [r7, #0xc] + b _02093B40 +_02093B14: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_02093B50 +_02093B24: ; 0x02093B24 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, #0x0 + str r0, [r7, #0xc] +_02093B40: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_02093B50 +FUN_02093B50: + stmdb sp!, {r4-r10,lr} + mov r8, r1 + mov r7, r2 + ldr r5, [r7, #0x4] + ldr r6, [r8, #0x4] + mov r4, r0 + cmp r6, r5 + movlt r0, #0x0 + ldmltia sp!, {r4-r10,lr} + bxlt lr + ldr r1, [r4, #0x8] + cmp r6, r1 + ble _02093B8C + mov r1, r6 + bl FUN_02094EBC +_02093B8C: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,lr} + bxeq lr + mov r3, #0x0 + mov r0, r3 + cmp r5, #0x0 + ldr r2, [r8, #0x0] + ldr r9, [r7, #0x0] + ldr r1, [r4, #0x0] + ble _02093C0C + mov r12, r3 + mov r7, r3 + mov lr, #0x1 +_02093BC4: + cmp r3, #0x0 + ldr r10, [r2], #0x4 + ldr r8, [r9], #0x4 + beq _02093BEC + cmp r10, r8 + movls r3, lr + sub r8, r10, r8 + movhi r3, r12 + sub r10, r8, #0x1 + b _02093BFC +_02093BEC: + cmp r10, r8 + movcc r3, lr + movcs r3, r7 + sub r10, r10, r8 +_02093BFC: + add r0, r0, #0x1 + cmp r0, r5 + str r10, [r1], #0x4 + blt _02093BC4 +_02093C0C: + cmp r3, #0x0 + beq _02093C3C + cmp r0, r6 + bge _02093C3C +_02093C1C: + ldr r5, [r2], #0x4 + add r0, r0, #0x1 + sub r3, r5, #0x1 + cmp r5, r3 + str r3, [r1], #0x4 + bhi _02093C3C + cmp r0, r6 + blt _02093C1C +_02093C3C: + cmp r1, r2 + beq _02093C9C +_02093C44: + cmp r0, r6 + bge _02093C9C + ldr r5, [r2, #0x0] + add r3, r0, #0x1 + str r5, [r1, #0x0] + cmp r3, r6 + bge _02093C9C + ldr r5, [r2, #0x4] + add r3, r0, #0x2 + str r5, [r1, #0x4] + cmp r3, r6 + bge _02093C9C + ldr r5, [r2, #0x8] + add r3, r0, #0x3 + str r5, [r1, #0x8] + cmp r3, r6 + ldrlt r3, [r2, #0xc] + add r0, r0, #0x4 + strlt r3, [r1, #0xc] + addlt r2, r2, #0x10 + addlt r1, r1, #0x10 + blt _02093C44 +_02093C9C: + mov r0, r4 + str r6, [r4, #0x4] + bl FUN_02095040 + mov r0, #0x1 + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start FUN_02093CB4 +FUN_02093CB4: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r8, r2 + ldr r2, [r4, #0x4] + ldr r1, [r8, #0x4] + mov r9, r0 + cmp r2, r1 + movlt r0, r4 + movlt r4, r8 + movlt r8, r0 + ldr r6, [r4, #0x4] + ldr r0, [r9, #0x8] + add r1, r6, #0x1 + cmp r1, r0 + ldr r7, [r8, #0x4] + movle r0, r9 + ble _02093D04 + mov r0, r9 + bl FUN_02094EBC +_02093D04: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + str r6, [r9, #0x4] + ldr r5, [r4, #0x0] + ldr r4, [r9, #0x0] + ldr r2, [r8, #0x0] + mov r0, r4 + mov r1, r5 + mov r3, r7 + bl FUN_02094468 +_02093D38: ; 0x02093D38 + cmp r0, #0x0 + add r4, r4, r7, lsl #0x2 + add r5, r5, r7, lsl #0x2 + beq _02093D9C + cmp r7, r6 + bge _02093D7C +_02093D50: + ldr r2, [r5], #0x4 + mov r3, r4 + add r1, r2, #0x1 + str r1, [r4], #0x4 + ldr r1, [r3, #0x0] + add r7, r7, #0x1 + cmp r1, r2 + movcs r0, #0x0 + bhs _02093D7C + cmp r7, r6 + blt _02093D50 +_02093D7C: + cmp r7, r6 + blt _02093D9C + cmp r0, #0x0 + movne r0, #0x1 + strne r0, [r4], #0x4 + ldrne r0, [r9, #0x4] + addne r0, r0, #0x1 + strne r0, [r9, #0x4] +_02093D9C: + cmp r4, r5 + beq _02093DC0 + cmp r7, r6 + bge _02093DC0 +_02093DAC: + ldr r0, [r5], #0x4 + add r7, r7, #0x1 + cmp r7, r6 + str r0, [r4], #0x4 + blt _02093DAC +_02093DC0: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_02093DD0 +FUN_02093DD0: ; 0x02093DD0 + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, r2 + ldr r2, [r5, #0xc] + ldr r1, [r4, #0xc] + mov r6, r0 + eors r0, r2, r1 + beq _02093E74 + cmp r2, #0x0 + movne r0, r5 + movne r5, r4 + movne r4, r0 + mov r0, r5 + mov r1, r4 + bl FUN_02094B98 +_02093E0C: ; 0x02093E0C + cmp r0, #0x0 + bge _02093E40 + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_02093B50 +_02093E24: ; 0x02093E24 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, #0x1 + str r0, [r6, #0xc] + b _02093E68 +_02093E40: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_02093B50 +_02093E50: ; 0x02093E50 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, #0x0 + str r0, [r6, #0xc] +_02093E68: + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_02093E74: + cmp r2, #0x0 + movne r0, #0x1 + strne r0, [r6, #0xc] + moveq r0, #0x0 + streq r0, [r6, #0xc] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_02093CB4 +_02093E98: ; 0x02093E98 + cmp r0, #0x0 + moveq r0, #0x0 + movne r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02093EAC +FUN_02093EAC: ; 0x02093EAC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [r5, #0xc] + cmp r2, #0x0 + beq _02093EF8 + mov r2, #0x0 + str r2, [r5, #0xc] + bl FUN_0209400C + mov r1, #0x1 + add sp, sp, #0x4 + str r1, [r5, #0xc] + ldmia sp!, {r4-r5,lr} + bx lr +_02093EF8: + ldr r1, [r5, #0x4] + cmp r1, #0x1 + bgt _02093F9C + cmp r1, #0x0 + bne _02093F54 + ldr r1, [r5, #0x8] + cmp r1, #0x1 + bge _02093F20 + mov r1, #0x1 + bl FUN_02094EBC +_02093F20: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, [r5, #0x0] + mov r0, #0x1 + str r4, [r1, #0x0] + str r0, [r5, #0xc] + add sp, sp, #0x4 + str r0, [r5, #0x4] + ldmia sp!, {r4-r5,lr} + bx lr +_02093F54: + ldr r2, [r5, #0x0] + ldr r1, [r2, #0x0] + cmp r1, r4 + moveq r0, #0x0 + streq r0, [r5, #0x4] + beq _02093F8C + cmp r1, r4 + subhi r0, r1, r4 + strhi r0, [r2, #0x0] + movls r0, #0x1 + strls r0, [r5, #0xc] + ldrls r0, [r5, #0x0] + subls r1, r4, r1 + strls r1, [r0, #0x0] +_02093F8C: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_02093F9C: + mov r0, #0x0 + mov r1, #0x1 +_02093FA4: + ldr r12, [r5, #0x0] + mov r3, r0, lsl #0x2 + ldr r2, [r12, r0, lsl #0x2] + cmp r2, r4 + ldrcs r1, [r12, r3] + subcs r1, r1, r4 + strcs r1, [r12, r3] + bhs _02093FDC + ldr r2, [r12, r3] + add r0, r0, #0x1 + sub r2, r2, r4 + mov r4, r1 + str r2, [r12, r3] + b _02093FA4 +_02093FDC: + ldr r1, [r5, #0x0] + ldr r1, [r1, r3] + cmp r1, #0x0 + bne _02093FFC + ldr r1, [r5, #0x4] + sub r1, r1, #0x1 + cmp r0, r1 + streq r1, [r5, #0x4] +_02093FFC: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209400C +FUN_0209400C: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [r5, #0xc] + cmp r2, #0x0 + beq _020940B4 + ldr r2, [r5, #0x4] + cmp r2, #0x1 + ble _02094064 + mov r2, #0x0 + str r2, [r5, #0xc] + bl FUN_02093EAC + mov r1, #0x1 + add sp, sp, #0x4 + str r1, [r5, #0xc] + ldmia sp!, {r4-r5,lr} + bx lr +_02094064: + ldr r2, [r5, #0x0] + ldr r1, [r2, #0x0] + cmp r1, r4 + subhi r0, r1, r4 + strhi r0, [r2, #0x0] + bhi _020940A4 + cmp r1, r4 + movcs r0, #0x0 + strcs r0, [r5, #0xc] + strcs r0, [r5, #0x4] + bhs _020940A4 + mov r0, #0x0 + str r0, [r5, #0xc] + ldr r0, [r5, #0x0] + sub r1, r4, r1 + str r1, [r0, #0x0] +_020940A4: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020940B4: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r1, r1, #0x1 + cmp r1, r2 + ble _020940CC + bl FUN_02094EBC +_020940CC: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, [r5, #0x0] + ldr r0, [r5, #0x4] + mov r3, #0x0 + str r3, [r1, r0, lsl #0x2] + mov r0, #0x1 +_020940F4: + ldr r2, [r5, #0x0] + ldr r1, [r2, r3, lsl #0x2] + add r1, r4, r1 + cmp r4, r1 + str r1, [r2, r3, lsl #0x2] + movhi r4, r0 + addhi r3, r3, #0x1 + bhi _020940F4 + ldr r0, [r5, #0x4] + cmp r3, r0 + addge r0, r0, #0x1 + strge r0, [r5, #0x4] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02094134 +FUN_02094134: + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r1, r2, asr #0x4 + mov r3, r2, lsr #0x1f + add r1, r2, r1, lsr #0x1b + rsb r2, r3, r2, lsl #0x1b + add r4, r3, r2, ror #0x1b + ldr r2, [r7, #0x4] + mov r6, r1, asr #0x5 + mov r8, r0 + cmp r6, r2 + rsb r5, r4, #0x20 + ble _0209417C + mov r1, #0x0 + bl FUN_02094D7C + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr +_0209417C: + cmp r8, r7 + beq _020941B4 + sub r1, r2, r6 + ldr r2, [r8, #0x8] + add r1, r1, #0x2 + cmp r1, r2 + ble _0209419C + bl FUN_02094EBC +_0209419C: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r0, [r7, #0xc] + str r0, [r8, #0xc] +_020941B4: + ldr r0, [r7, #0x0] + ldr r1, [r7, #0x4] + add r2, r0, r6, lsl #0x2 + ldr r0, [r8, #0x0] + sub r7, r1, r6 + mov r6, r2 + str r7, [r8, #0x4] + cmp r4, #0x0 + bne _020941FC + add r2, r7, #0x1 + cmp r2, #0x0 + ble _0209423C +_020941E4: + ldr r1, [r6], #0x4 + sub r2, r2, #0x1 + cmp r2, #0x0 + str r1, [r0], #0x4 + bgt _020941E4 + b _0209423C +_020941FC: + cmp r7, #0x1 + add r6, r2, #0x4 + ldr r3, [r2, #0x0] + mov r2, #0x1 + ble _0209422C +_02094210: + mov r1, r3, lsr r4 + ldr r3, [r6], #0x4 + add r2, r2, #0x1 + orr r1, r1, r3, lsl r5 + cmp r2, r7 + str r1, [r0], #0x4 + blt _02094210 +_0209422C: + mov r1, r3, lsr r4 + str r1, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] +_0209423C: + mov r0, r8 + bl FUN_02095040 + mov r0, #0x1 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_02094250 +FUN_02094250: + stmdb sp!, {r4-r10,lr} + mov r4, r1 + mov r7, r2 + mov r1, r7, asr #0x4 + mov r5, r0 + add r2, r7, r1, lsr #0x1b + ldr r1, [r4, #0x4] + ldr r3, [r5, #0x8] + add r1, r1, r2, asr #0x5 + add r1, r1, #0x1 + cmp r1, r3 + mov r6, r2, asr #0x5 + ble _02094288 + bl FUN_02094EBC +_02094288: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,lr} + bxeq lr + ldr r0, [r4, #0xc] + mov r1, r7, lsr #0x1f + str r0, [r5, #0xc] + ldr r3, [r4, #0x4] + rsb r0, r1, r7, lsl #0x1b + adds r12, r1, r0, ror #0x1b + ldr r2, [r4, #0x0] + ldr r0, [r5, #0x0] + add r1, r3, r6 + mov r3, #0x0 + str r3, [r0, r1, lsl #0x2] + rsb r3, r12, #0x20 + bne _020942F0 + ldr r1, [r4, #0x4] + subs r7, r1, #0x1 + bmi _02094324 +_020942D8: + ldr r3, [r2, r7, lsl #0x2] + add r1, r6, r7 + str r3, [r0, r1, lsl #0x2] + subs r7, r7, #0x1 + bpl _020942D8 + b _02094324 +_020942F0: + ldr r1, [r4, #0x4] + subs r1, r1, #0x1 + bmi _02094324 +_020942FC: + add r9, r6, r1 + add r8, r9, #0x1 + ldr r10, [r2, r1, lsl #0x2] + ldr lr, [r0, r8, lsl #0x2] + mov r7, r10, lsl r12 + orr lr, lr, r10, lsr r3 + str lr, [r0, r8, lsl #0x2] + str r7, [r0, r9, lsl #0x2] + subs r1, r1, #0x1 + bpl _020942FC +_02094324: + mov r2, r6, lsl #0x2 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r1, [r4, #0x4] + mov r0, r5 + add r1, r1, r6 + add r1, r1, #0x1 + str r1, [r5, #0x4] + bl FUN_02095040 + mov r0, #0x1 + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start FUN_02094354 +FUN_02094354: ; 0x02094354 + stmdb sp!, {r4-r10,lr} + cmp r3, #0x0 + movle r0, #0x0 + ldmleia sp!, {r4-r10,lr} + bxle lr + mov r6, #0x0 + mov r4, r6 + mov lr, r6 + mov r12, r6 + mov r7, r6 + mov r5, #0x1 +_02094380: + ldr r10, [r1, #0x0] + ldr r9, [r2, #0x0] + sub r8, r10, r9 + sub r8, r8, r6 + str r8, [r0, #0x0] + cmp r10, r9 + beq _020943A8 + cmp r10, r9 + movcc r6, r5 + movcs r6, r4 +_020943A8: + sub r8, r3, #0x1 + cmp r8, #0x0 + ble _0209445C + ldr r10, [r1, #0x4] + ldr r9, [r2, #0x4] + sub r8, r10, r9 + sub r8, r8, r6 + str r8, [r0, #0x4] + cmp r10, r9 + beq _020943DC + cmp r10, r9 + movcc r6, r5 + movcs r6, lr +_020943DC: + sub r8, r3, #0x2 + cmp r8, #0x0 + ble _0209445C + ldr r10, [r1, #0x8] + ldr r9, [r2, #0x8] + sub r8, r10, r9 + sub r8, r8, r6 + str r8, [r0, #0x8] + cmp r10, r9 + beq _02094410 + cmp r10, r9 + movcc r6, r5 + movcs r6, r12 +_02094410: + sub r8, r3, #0x3 + cmp r8, #0x0 + ble _0209445C + ldr r10, [r1, #0xc] + ldr r9, [r2, #0xc] + sub r8, r10, r9 + sub r8, r8, r6 + str r8, [r0, #0xc] + cmp r10, r9 + beq _02094444 + cmp r10, r9 + movcc r6, r5 + movcs r6, r7 +_02094444: + sub r3, r3, #0x4 + cmp r3, #0x0 + addgt r1, r1, #0x10 + addgt r2, r2, #0x10 + addgt r0, r0, #0x10 + bgt _02094380 +_0209445C: + mov r0, r6 + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start FUN_02094468 +FUN_02094468: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + cmp r3, #0x0 + addle sp, sp, #0xc + movle r0, #0x0 + ldmleia sp!, {r4-r11,lr} + bxle lr + mov r12, #0x0 + mov r7, r12 + mov r6, r12 + mov r5, r12 + mov r4, r12 + mov lr, r12 + mov r11, r12 + str r12, [sp, #0x0] + str r12, [sp, #0x4] + mov r8, #0x1 +_020944AC: + ldr r9, [r1, #0x0] + add r10, r9, r12 + ldr r9, [r2, #0x0] + cmp r10, r12 + movcc r12, r8 + add r9, r10, r9 + movcs r12, r7 + cmp r9, r10 + movcc r10, r8 + movcs r10, r6 + str r9, [r0, #0x0] + sub r9, r3, #0x1 + add r12, r12, r10 + cmp r9, #0x0 + ble _020945A8 + ldr r9, [r1, #0x4] + ldr r10, [r2, #0x4] + add r9, r9, r12 + cmp r9, r12 + movcc r12, r8 + add r10, r9, r10 + movcs r12, r5 + cmp r10, r9 + movcc r9, r8 + movcs r9, r4 + add r12, r12, r9 + sub r9, r3, #0x2 + str r10, [r0, #0x4] + cmp r9, #0x0 + ble _020945A8 + ldr r9, [r1, #0x8] + ldr r10, [r2, #0x8] + add r9, r9, r12 + cmp r9, r12 + movcc r12, r8 + add r10, r9, r10 + movcs r12, lr + cmp r10, r9 + movcc r9, r8 + movcs r9, r11 + add r12, r12, r9 + sub r9, r3, #0x3 + str r10, [r0, #0x8] + cmp r9, #0x0 + ble _020945A8 + ldr r9, [r1, #0xc] + ldr r10, [r2, #0xc] + add r9, r9, r12 + cmp r9, r12 + movcc r12, r8 + add r10, r9, r10 + ldrcs r12, [sp, #0x0] + cmp r10, r9 + movcc r9, r8 + ldrcs r9, [sp, #0x4] + sub r3, r3, #0x4 + cmp r3, #0x0 + str r10, [r0, #0xc] + add r12, r12, r9 + addgt r1, r1, #0x10 + addgt r2, r2, #0x10 + addgt r0, r0, #0x10 + bgt _020944AC +_020945A8: + mov r0, r12 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_020945B8 +FUN_020945B8: ; 0x020945B8 + stmdb sp!, {r4-r8,lr} + cmp r2, #0x0 + ldmleia sp!, {r4-r8,lr} + bxle lr + mov r3, #0x8000 + ldr lr, _02094708 ; =0x0000FFFF + rsb r12, r3, #0x0 +_020945D4: + ldr r5, [r1, #0x0] + mov r3, #0x8000 + and r4, r5, lr + and r7, lr, r5, lsr #0x10 + mul r6, r4, r7 + mul r5, r4, r4 + and r4, r6, lr + add r8, r5, r4, lsl #0x11 + rsb r3, r3, #0x0 + mul r5, r7, r7 + and r3, r6, r3 + add r3, r5, r3, lsr #0xf + cmp r8, r4, lsl #0x11 + addcc r3, r3, #0x1 + str r8, [r0, #0x0] + str r3, [r0, #0x4] + subs r3, r2, #0x1 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r4, [r1, #0x4] + and r7, lr, r4, lsr #0x10 + and r3, r4, lr + mul r6, r3, r7 + mul r4, r3, r3 + and r3, r6, lr + add r8, r4, r3, lsl #0x11 + mul r5, r7, r7 + and r4, r6, r12 + cmp r8, r3, lsl #0x11 + add r3, r5, r4, lsr #0xf + addcc r3, r3, #0x1 + str r8, [r0, #0x8] + str r3, [r0, #0xc] + subs r3, r2, #0x2 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r5, [r1, #0x8] + mov r3, #0x8000 + and r4, r5, lr + and r7, lr, r5, lsr #0x10 + mul r6, r4, r7 + mul r5, r4, r4 + and r4, r6, lr + add r8, r5, r4, lsl #0x11 + rsb r3, r3, #0x0 + mul r5, r7, r7 + and r3, r6, r3 + add r3, r5, r3, lsr #0xf + cmp r8, r4, lsl #0x11 + addcc r3, r3, #0x1 + str r8, [r0, #0x10] + str r3, [r0, #0x14] + subs r3, r2, #0x3 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r5, [r1, #0xc] + mov r3, #0x8000 + and r4, r5, lr + and r7, lr, r5, lsr #0x10 + mul r6, r4, r7 + mul r5, r4, r4 + and r4, r6, lr + add r8, r5, r4, lsl #0x11 + rsb r3, r3, #0x0 + mul r5, r7, r7 + and r3, r6, r3 + add r3, r5, r3, lsr #0xf + cmp r8, r4, lsl #0x11 + addcc r3, r3, #0x1 + str r8, [r0, #0x18] + subs r2, r2, #0x4 + str r3, [r0, #0x1c] + addne r1, r1, #0x10 + addne r0, r0, #0x20 + bne _020945D4 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_02094708: .word 0x0000FFFF + + arm_func_start FUN_0209470C +FUN_0209470C: ; 0x0209470C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + mov r4, #0x0 + addle sp, sp, #0x4 + movle r0, r4 + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r5, _020948A8 ; =0x0000FFFF + and lr, r3, r5 + and r12, r5, r3, lsr #0x10 +_02094738: + ldr r3, [r1, #0x0] + and r7, r5, r3, lsr #0x10 + mul r6, lr, r7 + and r3, r3, r5 + mla r9, r12, r3, r6 + mul r8, r3, lr + mul r3, r7, r12 + cmp r9, r6 + and r6, r9, r5 + addcc r3, r3, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r3, r3, r7 + add r6, r8, r4 + addcc r3, r3, #0x1 + cmp r6, r4 + addcc r3, r3, #0x1 + str r6, [r0, #0x0] + mov r4, r3 + subs r6, r2, #0x1 + beq _02094898 + ldr r4, [r1, #0x4] + and r7, r5, r4, lsr #0x10 + mul r6, lr, r7 + and r4, r4, r5 + mla r9, r12, r4, r6 + mul r8, r4, lr + mul r4, r7, r12 + cmp r9, r6 + and r6, r9, r5 + addcc r4, r4, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r4, r4, r7 + add r6, r8, r3 + addcc r4, r4, #0x1 + cmp r6, r3 + addcc r4, r4, #0x1 + str r6, [r0, #0x4] + subs r3, r2, #0x2 + beq _02094898 + ldr r3, [r1, #0x8] + and r7, r5, r3, lsr #0x10 + mul r6, lr, r7 + and r3, r3, r5 + mla r9, r12, r3, r6 + mul r8, r3, lr + mul r3, r7, r12 + cmp r9, r6 + and r6, r9, r5 + addcc r3, r3, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r3, r3, r7 + add r6, r8, r4 + addcc r3, r3, #0x1 + cmp r6, r4 + addcc r3, r3, #0x1 + str r6, [r0, #0x8] + mov r4, r3 + subs r6, r2, #0x3 + beq _02094898 + ldr r4, [r1, #0xc] + and r7, r5, r4, lsr #0x10 + mul r6, lr, r7 + and r4, r4, r5 + mla r9, r12, r4, r6 + mul r8, r4, lr + mul r4, r7, r12 + cmp r9, r6 + and r6, r9, r5 + addcc r4, r4, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r4, r4, r7 + add r6, r8, r3 + addcc r4, r4, #0x1 + cmp r6, r3 + addcc r4, r4, #0x1 + subs r2, r2, #0x4 + str r6, [r0, #0xc] + addne r1, r1, #0x10 + addne r0, r0, #0x10 + bne _02094738 +_02094898: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020948A8: .word 0x0000FFFF + + arm_func_start FUN_020948AC +FUN_020948AC: ; 0x020948AC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + mov r12, #0x0 + addle sp, sp, #0x4 + movle r0, r12 + ldmleia sp!, {r4-r9,lr} + bxle lr + ldr r5, _02094A88 ; =0x0000FFFF + and r4, r3, r5 + and lr, r5, r3, lsr #0x10 +_020948D8: + ldr r3, [r1, #0x0] + and r7, r5, r3, lsr #0x10 + mul r6, r4, r7 + and r3, r3, r5 + mla r9, lr, r3, r6 + mul r8, r3, r4 + mul r3, r7, lr + cmp r9, r6 + and r6, r9, r5 + addcc r3, r3, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r3, r3, r7 + ldr r6, [r0, #0x0] + addcc r3, r3, #0x1 + add r7, r8, r12 + cmp r7, r12 + add r7, r7, r6 + addcc r3, r3, #0x1 + cmp r7, r6 + addcc r3, r3, #0x1 + mov r12, r3 + str r7, [r0, #0x0] + subs r6, r2, #0x1 + beq _02094A78 + ldr r12, [r1, #0x4] + and r7, r5, r12, lsr #0x10 + mul r6, r4, r7 + and r12, r12, r5 + mla r9, lr, r12, r6 + mul r8, r12, r4 + mul r12, r7, lr + cmp r9, r6 + and r6, r9, r5 + addcc r12, r12, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r12, r12, r7 + add r6, r8, r3 + addcc r12, r12, #0x1 + cmp r6, r3 + ldr r3, [r0, #0x4] + addcc r12, r12, #0x1 + add r6, r6, r3 + cmp r6, r3 + addcc r12, r12, #0x1 + str r6, [r0, #0x4] + subs r3, r2, #0x2 + beq _02094A78 + ldr r3, [r1, #0x8] + and r7, r5, r3, lsr #0x10 + mul r6, r4, r7 + and r3, r3, r5 + mla r9, lr, r3, r6 + mul r8, r3, r4 + mul r3, r7, lr + cmp r9, r6 + and r6, r9, r5 + addcc r3, r3, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r3, r3, r7 + ldr r6, [r0, #0x8] + addcc r3, r3, #0x1 + add r7, r8, r12 + cmp r7, r12 + add r7, r7, r6 + addcc r3, r3, #0x1 + cmp r7, r6 + addcc r3, r3, #0x1 + mov r12, r3 + str r7, [r0, #0x8] + subs r6, r2, #0x3 + beq _02094A78 + ldr r12, [r1, #0xc] + and r7, r5, r12, lsr #0x10 + mul r6, r4, r7 + and r12, r12, r5 + mla r9, lr, r12, r6 + mul r8, r12, r4 + mul r12, r7, lr + cmp r9, r6 + and r6, r9, r5 + addcc r12, r12, #0x10000 + and r7, r5, r9, lsr #0x10 + add r8, r8, r6, lsl #0x10 + cmp r8, r6, lsl #0x10 + add r12, r12, r7 + add r6, r8, r3 + addcc r12, r12, #0x1 + cmp r6, r3 + ldr r3, [r0, #0xc] + addcc r12, r12, #0x1 + add r6, r6, r3 + cmp r6, r3 + addcc r12, r12, #0x1 + subs r2, r2, #0x4 + str r6, [r0, #0xc] + addne r1, r1, #0x10 + addne r0, r0, #0x10 + bne _020948D8 +_02094A78: + mov r0, r12 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_02094A88: .word 0x0000FFFF + + arm_func_start FUN_02094A8C +FUN_02094A8C: + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {lr} + bxlt lr + mov r2, r1, asr #0x4 + add r2, r1, r2, lsr #0x1b + mov r3, r1, lsr #0x1f + ldr r12, [r0, #0x4] + mov lr, r2, asr #0x5 + cmp r12, lr + rsb r1, r3, r1, lsl #0x1b + addle sp, sp, #0x4 + add r2, r3, r1, ror #0x1b + movle r0, #0x0 + ldmleia sp!, {lr} + bxle lr + ldr r1, [r0, #0x0] + mov r0, #0x1 + mov r2, r0, lsl r2 + ldr r1, [r1, lr, lsl #0x2] + ands r1, r2, r1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_02094AFC +FUN_02094AFC: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r2, r1, asr #0x4 + add r2, r1, r2, lsr #0x1b + mov r3, r1, lsr #0x1f + rsb r1, r3, r1, lsl #0x1b + ldr r4, [r6, #0x4] + mov r5, r2, asr #0x5 + cmp r4, r5 + add r4, r3, r1, ror #0x1b + bgt _02094B7C + ldr r2, [r6, #0x8] + add r1, r5, #0x1 + cmp r1, r2 + ble _02094B3C + bl FUN_02094EBC +_02094B3C: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r3, [r6, #0x4] + add r2, r5, #0x1 + cmp r3, r2 + bge _02094B74 + mov r1, #0x0 +_02094B60: + ldr r0, [r6, #0x0] + str r1, [r0, r3, lsl #0x2] + add r3, r3, #0x1 + cmp r3, r2 + blt _02094B60 +_02094B74: + add r0, r5, #0x1 + str r0, [r6, #0x4] +_02094B7C: + ldr r2, [r6, #0x0] + mov r0, #0x1 + ldr r1, [r2, r5, lsl #0x2] + orr r1, r1, r0, lsl r4 + str r1, [r2, r5, lsl #0x2] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02094B98 +FUN_02094B98: + ldr r3, [r0, #0x4] + ldr r2, [r1, #0x4] + subs r2, r3, r2 + movne r0, r2 + bxne lr + subs r2, r3, #0x1 + ldr r12, [r0, #0x0] + ldr r3, [r1, #0x0] + bmi _02094BE4 +_02094BBC: + ldr r1, [r12, r2, lsl #0x2] + ldr r0, [r3, r2, lsl #0x2] + cmp r1, r0 + beq _02094BDC + cmp r1, r0 + movhi r0, #0x1 + mvnls r0, #0x0 + bx lr +_02094BDC: + subs r2, r2, #0x1 + bpl _02094BBC +_02094BE4: + mov r0, #0x0 + bx lr + + arm_func_start FUN_02094BEC +FUN_02094BEC: ; 0x02094BEC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_02095188 + add r1, r0, #0x7 + mov r0, r1, asr #0x2 + add r0, r1, r0, lsr #0x1d + mov r0, r0, asr #0x3 + cmp r0, #0x0 + addle sp, sp, #0x4 + sub r12, r0, #0x1 + ldmleia sp!, {r4-r5,lr} + bxle lr +_02094C24: + mov r3, r12, lsr #0x1f + mov r1, r12, asr #0x1 + rsb r2, r3, r12, lsl #0x1e + add r1, r12, r1, lsr #0x1e + add r2, r3, r2, ror #0x1e + ldr r3, [r5, #0x0] + mov r1, r1, asr #0x2 + ldr r3, [r3, r1, lsl #0x2] + mov r1, r2, lsl #0x3 + mov r1, r3, lsr r1 + cmp r12, #0x0 + strb r1, [r4], #0x1 + sub r12, r12, #0x1 + bgt _02094C24 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02094C68 +FUN_02094C68: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r5, r2 + mov r7, r0 + mov r6, r1 + bne _02094C88 + bl FUN_02094FE0 + mov r5, r0 +_02094C88: + cmp r5, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r6, #0x0 + mov r4, #0x0 + addeq sp, sp, #0x4 + moveq r0, r5 + streq r4, [r5, #0x4] + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r0, r6, #0x2 + mov r2, r0, lsl #0x3 + add r1, r2, #0x1f + mov r0, r1, asr #0x4 + add r0, r1, r0, lsr #0x1b + ldr r1, [r5, #0x8] + mov r0, r0, asr #0x5 + cmp r0, r1 + movle r0, r5 + ble _02094CF8 + mov r0, r2, asr #0x4 + add r0, r2, r0, lsr #0x1b + mov r1, r0, asr #0x5 + mov r0, r5 + add r1, r1, #0x1 + bl FUN_02094EBC +_02094CF8: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + sub r0, r6, #0x1 + mov r1, r0, lsr #0x2 + add r12, r1, #0x1 + cmp r6, #0x0 + str r12, [r5, #0x4] + and r3, r0, #0x3 + sub r6, r6, #0x1 + beq _02094D64 + mov r1, #0x0 + mov r0, #0x3 +_02094D34: + ldrb r2, [r7], #0x1 + cmp r3, #0x0 + sub r3, r3, #0x1 + orr r4, r2, r4, lsl #0x8 + ldreq r2, [r5, #0x0] + subeq r12, r12, #0x1 + streq r4, [r2, r12, lsl #0x2] + moveq r4, r1 + moveq r3, r0 + cmp r6, #0x0 + sub r6, r6, #0x1 + bne _02094D34 +_02094D64: + mov r0, r5 + bl FUN_02095040 + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_02094D7C +FUN_02094D7C: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r2, [r4, #0x8] + mov r5, r1 + cmp r2, #0x1 + bge _02094DA0 + mov r1, #0x2 + bl FUN_02094EBC +_02094DA0: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + str r5, [r0, #0x0] + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movne r0, #0x1 + strne r0, [r4, #0x4] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02094DEC +FUN_02094DEC: ; 0x02094DEC + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02094E10 + ldr r2, [r4, #0x8] + mov r1, #0x0 + mov r2, r2, lsl #0x2 + bl MI_CpuFill8 +_02094E10: + mov r0, #0x0 + str r0, [r4, #0x4] + str r0, [r4, #0xc] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02094E24 +FUN_02094E24: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + cmp r5, r4 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, [r4, #0x4] + ldr r2, [r5, #0x8] + cmp r1, r2 + ble _02094E58 + bl FUN_02094EBC +_02094E58: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [r4, #0x4] + ldr r0, [r4, #0x0] + ldr r1, [r5, #0x0] + mov r2, r2, lsl #0x2 + bl MI_CpuCopy8 + ldr r0, [r4, #0x4] + str r0, [r5, #0x4] + ldr r0, [r5, #0x4] + cmp r0, #0x0 + bne _02094EA4 + ldr r1, [r5, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] +_02094EA4: + ldr r1, [r4, #0xc] + mov r0, r5 + str r1, [r5, #0xc] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02094EBC +FUN_02094EBC: + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x8] + mov r4, r1 + cmp r4, r0 + ble _02094F30 + ldr r0, [r5, #0x10] + ands r0, r0, #0x2 + movne r0, #0x0 + ldmneia sp!, {r4-r6,lr} + bxne lr + add r0, r4, #0x1 + mov r0, r0, lsl #0x2 + bl FUN_020910A4 + movs r6, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _02094F28 + ldr r2, [r5, #0x4] + mov r1, r6 + mov r2, r2, lsl #0x2 + bl MI_CpuCopy8 +_02094F20: ; 0x02094F20 + ldr r0, [r5, #0x0] + bl FUN_0209105C +_02094F28: + str r6, [r5, #0x0] + str r4, [r5, #0x8] +_02094F30: + mov r0, r5 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02094F3C +FUN_02094F3C: ; 0x02094F3C + stmdb sp!, {r4-r6,lr} + mov r6, r0 + add r4, r6, #0x4 + mov r5, #0x0 +_02094F4C: + mov r0, r4 + bl FUN_02095164 + add r5, r5, #0x1 + cmp r5, #0xc + add r4, r4, #0x14 + blt _02094F4C + ldr r0, [r6, #0x108] + ands r0, r0, #0x1 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, r6 + bl FUN_0209105C + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02094F84 +FUN_02094F84: ; 0x02094F84 + stmdb sp!, {r4,lr} + mov r1, #0x0 + mov r2, #0x110 + mov r4, r0 + bl MI_CpuFill8 +_02094F98: ; 0x02094F98 + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x108] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02094FAC +FUN_02094FAC: ; 0x02094FAC + stmdb sp!, {r4,lr} + mov r0, #0x110 + bl FUN_020910A4 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl FUN_02094F84 + mov r1, #0x1 + mov r0, r4 + str r1, [r4, #0x108] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02094FE0 +FUN_02094FE0: ; 0x02094FE0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r0, #0x14 + bl FUN_020910A4 +_02094FF0: ; 0x02094FF0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {lr} + bxeq lr + mov r1, #0x1 + str r1, [r0, #0x10] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0xc] + str r1, [r0, #0x8] + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209502C +FUN_0209502C: + ldr ip, _0209503C ; =MI_CpuFill8 + mov r1, #0x0 + mov r2, #0x14 + bx r12 + .balign 4 +_0209503C: .word MI_CpuFill8 + + arm_func_start FUN_02095040 +FUN_02095040: + ldr r3, [r0, #0x4] + cmp r3, #0x0 + bxle lr + ldr r2, [r0, #0x0] + sub r1, r3, #0x1 + cmp r3, #0x0 + add r3, r2, r1, lsl #0x2 + bxle lr + add r2, r0, #0x4 +_02095064: + ldr r1, [r3], #-0x4 + cmp r1, #0x0 + bxne lr + ldr r1, [r2, #0x0] + sub r1, r1, #0x1 + str r1, [r2, #0x0] + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bgt _02095064 + bx lr + + arm_func_start FUN_0209508C +FUN_0209508C: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r2, [r5, #0x4] + mov r4, r1 + cmp r2, r4 + addge sp, sp, #0x4 + ldmgeia sp!, {r4-r5,lr} + bxge lr + ldr r2, [r5, #0x8] + cmp r4, r2 + ble _020950C0 + bl FUN_02094EBC +_020950C0: + ldr r0, [r5, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [r5, #0x4] + cmp r2, r4 + addge sp, sp, #0x4 + ldmgeia sp!, {r4-r5,lr} + bxge lr + mov r1, #0x0 +_020950EC: + ldr r0, [r5, #0x0] + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, r4 + blt _020950EC + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209510C +FUN_0209510C: + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02095138 + ldr r1, [r4, #0x10] + ands r1, r1, #0x2 + bne _02095138 + bl FUN_0209105C +_02095138: + ldr r0, [r4, #0x10] + orr r0, r0, #0x8000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + ands r0, r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + bl FUN_0209105C + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02095164 +FUN_02095164: ; 0x02095164 + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl FUN_02094DEC + mov r0, r4 + bl FUN_0209510C + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02095188 +FUN_02095188: ; 0x02095188 + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x4] + cmp r1, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, [r0, #0x0] + sub r4, r1, #0x1 + ldr r0, [r0, r4, lsl #0x2] + bl FUN_020951BC + add r0, r0, r4, lsl #0x5 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020951BC +FUN_020951BC: ; 0x020951BC + mov r1, #0x10000 + rsb r1, r1, #0x0 + ands r1, r0, r1 + beq _020951DC + ands r1, r0, #0xff000000 + movne r2, #0x18 + moveq r2, #0x10 + b _020951E8 +_020951DC: + ands r1, r0, #0xff00 + movne r2, #0x8 + moveq r2, #0x0 +_020951E8: + mov r1, r0, lsr r2 + ands r0, r1, #0xf0 + ldreq r0, _02095218 ; =0x020FF524 + ldreqsb r0, [r0, r1] + addeq r0, r0, r2 + bxeq lr + ldr r0, _02095218 ; =0x020FF524 + mov r1, r1, lsr #0x4 + ldrsb r0, [r0, r1] + add r0, r0, r2 + add r0, r0, #0x4 + bx lr + .balign 4 +_02095218: .word 0x020FF524 + + arm_func_start FUN_0209521C +FUN_0209521C: ; 0x0209521C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r3, #0x0 + strb r3, [r0, #0x0] + cmp r2, #0x10 + strb r3, [r0, #0x1] + movhi r2, #0x10 + add r0, r0, #0x4 +_0209523C: + strb r3, [r0, r3] + add r3, r3, #0x1 + cmp r3, #0x100 + blt _0209523C + mov r6, #0x0 + mov r7, r6 + mov r4, r6 + mov r3, r6 + and r12, r2, #0xff +_02095260: + ldrb r5, [r0, r4] + ldrb lr, [r1, r7] + add r2, r7, #0x1 + and r7, r2, #0xff + add r2, r5, lr + add r2, r6, r2 + and r6, r2, #0xff + ldrb r2, [r0, r6] + add lr, r0, r4 + add r4, r4, #0x1 + strb r2, [lr, #0x0] + cmp r7, r12 + moveq r7, r3 + cmp r4, #0x100 + strb r5, [r0, r6] + blt _02095260 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020952AC +FUN_020952AC: ; 0x020952AC + stmdb sp!, {r4-r9,lr} + ldrb r7, [r0, #0x0] + ldrb r6, [r0, #0x1] + add r0, r0, #0x4 + mov lr, #0x1000000 + add r7, lr, r7, lsl #0x18 + mov r6, r6, lsl #0x18 + ldrb r9, [r0, r7, lsr #0x18] + subs r2, r2, #0x1 + bmi _0209530C +_020952D4: + add r6, r6, r9, lsl #0x18 + subs r2, r2, #0x1 + ldrb r8, [r0, r6, lsr #0x18] + ldrb r5, [r1], #0x1 + strb r8, [r0, r7, lsr #0x18] + strb r9, [r0, r6, lsr #0x18] + add r4, r9, r8 + and r4, r4, #0xff + add r7, r7, lr + ldrb r4, [r0, r4] + ldrb r9, [r0, r7, lsr #0x18] + eor r5, r5, r4 + strb r5, [r3], #0x1 + bge _020952D4 +_0209530C: + sub r7, r7, lr + mov r7, r7, lsr #0x18 + mov r6, r6, lsr #0x18 + strb r7, [r0, #-0x4] + strb r6, [r0, #-0x3] + ldmia sp!, {r4-r9,pc} +_02095324: ; 0x02095324 + ldr r0, _0209532C ; =0x021C8C84 + bx lr + .balign 4 +_0209532C: .word 0x021C8C84 + + arm_func_start FUN_02095330 +FUN_02095330: ; 0x02095330 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldr r3, [r4, #0x8] + ldr r2, [r4, #0xc] + ldr r1, _020953E4 ; =0x021C8C84 + str r2, [sp, #0x4] + str r3, [sp, #0x0] + mov r2, #0x5 + bl MI_CpuCopy8 + ldr r1, [sp, #0x0] + ldr r2, [r4, #0x4] + ldr r0, [sp, #0x4] + mov r2, r2, lsr #0x8 + mov r12, r1, lsr #0x5 + mov r3, r0, lsr #0x5 + orr r12, r12, r0, lsl #0x1b + and lr, r2, #0x7 + and r0, r1, #0x1f + orr lr, lr, r0, lsl #0x3 + ldr r2, _020953E4 ; =0x021C8C84 + ldr r1, _020953E8 ; =0x021C8C8A + strb lr, [r2, #0x5] + add r0, sp, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r2, #0x4 + bl MI_CpuCopy8 + ldrh r0, [r4, #0x10] + ldr r1, [sp, #0x4] + ldr r3, _020953E4 ; =0x021C8C84 + and r1, r1, #0x3f + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0x6 + strb r0, [r3, #0xa] + ldrh r2, [r4, #0x10] + add r0, r4, #0x12 + ldr r1, _020953EC ; =0x021C8C90 + mov r4, r2, asr #0x2 + mov r2, #0x2 + strb r4, [r3, #0xb] + bl MI_CpuCopy8 + ldr r0, _020953E4 ; =0x021C8C84 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020953E4: .word 0x021C8C84 +_020953E8: .word 0x021C8C8A +_020953EC: .word 0x021C8C90 + + arm_func_start FUN_020953F0 +FUN_020953F0: ; 0x020953F0 + ldr r3, _02095420 ; =0x021C8C78 + and r12, r1, #0xff + ldr r0, _02095424 ; =0x021C8C7C + mov r1, #0x1 + strh r12, [r3, #0x0] + str r1, [r0, #0x0] + cmp r2, #0x0 + movne r0, #0xff + strneh r0, [r3, #0x0] + ldr r0, _02095420 ; =0x021C8C78 + ldrh r0, [r0, #0x0] + bx lr + .balign 4 +_02095420: .word 0x021C8C78 +_02095424: .word 0x021C8C7C + + arm_func_start FUN_02095428 +FUN_02095428: + stmdb sp!, {r4-r6,lr} + mov r5, #0x4 + mov r4, #0x1 +_02095434: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady +_02095440: ; 0x02095440 + cmp r0, #0x0 + beq _02095434 + ldr r1, _02095490 ; =FUN_020953F0 + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r4, #0x40000 + mov r6, #0x7 + mov r5, #0x0 +_02095460: + mov r0, r6 + mov r1, r5 + mov r2, r5 + mov r3, r5 + bl FUN_020955F4 + cmp r0, #0x1 + beq _02095488 + mov r0, r4 + blx SVC_WaitByLoop + b _02095460 +_02095488: + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02095490: .word FUN_020953F0 + + arm_func_start FUN_02095494 +FUN_02095494: + stmdb sp!, {r4-r6,lr} + mov r5, r2 + mov r4, r3 + mov r6, r0 + mov r0, r1 + mov r1, r5 + mov r2, r4 + bl FUN_0209555C +_020954B4: ; 0x020954B4 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020954C0: ; 0x020954C0 + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl memcmp +_020954D0: ; 0x020954D0 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020954E0 +FUN_020954E0: ; 0x020954E0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0x4 + mov r4, #0x1 +_020954F8: + mov r0, r5 + mov r1, r4 + bl PXI_IsCallbackReady +_02095504: ; 0x02095504 + cmp r0, #0x0 + beq _020954F8 + ldr r1, _02095558 ; =FUN_020953F0 + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r0, r6 + mov r1, r7 + bl DC_StoreRange + mov r4, #0x40000 + mov r5, #0x2 +_0209552C: + mov r0, r5 + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl FUN_020955F4 + cmp r0, #0x1 + ldmeqia sp!, {r4-r8,pc} +_02095548: ; 0x02095548 + mov r0, r4 + blx SVC_WaitByLoop + b _0209552C +_02095554: ; 0x02095554 + ldmia sp!, {r4-r8,pc} + .balign 4 +_02095558: .word FUN_020953F0 + + arm_func_start FUN_0209555C +FUN_0209555C: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r4, r2 + mov r6, r0 + mov r0, r4 + mov r5, r1 + bl DC_InvalidateRange + mov r8, #0x4 + mov r7, #0x1 +_02095580: + mov r0, r8 + mov r1, r7 + bl PXI_IsCallbackReady +_0209558C: ; 0x0209558C + cmp r0, #0x0 + beq _02095580 + ldr r1, _020955F0 ; =FUN_020953F0 + mov r0, #0x4 + bl PXI_SetFifoRecvCallback + mov r0, r5, lsl #0x10 + mov r8, r0, lsr #0x10 + mov r7, #0x40000 + mov r9, #0x1 +_020955B0: + mov r0, r9 + mov r1, r6 + mov r2, r8 + mov r3, r4 + bl FUN_020955F4 + cmp r0, #0x1 + beq _020955D8 + mov r0, r7 + blx SVC_WaitByLoop + b _020955B0 +_020955D8: + mov r0, r4 + mov r1, r5 + bl DC_InvalidateRange + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020955F0: .word FUN_020953F0 + + arm_func_start FUN_020955F4 +FUN_020955F4: ; 0x020955F4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc4 + ldr ip, _02095AAC ; =0x0000FFFF + ldr sl, _02095AB0 ; =0x021C8CA0 + and r8, r2, r12 + and r7, r1, r12 + mov r5, r1, lsr #0x10 + mov r4, r3, lsr #0x10 + and r1, r3, r12 + orr r3, r8, #0x30000 + str r3, [sp, #0xc] + ldr r3, _02095AB4 ; =0x01050000 + orr r2, r2, #0x20000 + orr r3, r1, r3 + str r3, [sp, #0x14] + orr r1, r1, #0x1040000 + mov r9, r0 + and r0, r5, #0xff + str r2, [sp, #0x1c] + str r1, [sp, #0x24] + ldr r1, _02095AB8 ; =0x02002200 + mov r8, #0x0 + orr r2, r4, #0x40000 + orr r1, r1, r10, lsr #0x18 + str r1, [sp, #0x28] + and r1, r12, r10, lsr #0x8 + orr r1, r1, #0x10000 + ldr r3, _02095ABC ; =0x02002300 + str r2, [sp, #0x10] + orr r2, r0, r3 + str r2, [sp, #0x8] + orr r2, r4, #0x30000 + str r2, [sp, #0x20] + ldr r2, _02095AC0 ; =0x02002500 + mov r6, r10, lsl #0x8 + str r1, [sp, #0x2c] + and r1, r6, #0xff00 + orr r0, r0, r2 + ldr r3, _02095AC4 ; =0x01020000 + str r0, [sp, #0x18] + orr r0, r1, r3 + str r0, [sp, #0x30] + mov r0, #0x20000 + str r0, [sp, #0x40] + mov r0, #0x5 + str r0, [sp, #0xac] + mov r0, #0x3 + str r0, [sp, #0xb0] + mov r0, #0x6 + str r0, [sp, #0xb8] + mov r0, #0x4000 + orr r7, r7, #0x10000 + str r8, [sp, #0xb4] + mov r4, #0x1 + str r8, [sp, #0xa8] + mov r5, #0x4 + str r8, [sp, #0xa4] + str r8, [sp, #0xa0] + str r8, [sp, #0x90] + str r8, [sp, #0x98] + str r8, [sp, #0x9c] + str r8, [sp, #0x94] + str r8, [sp, #0x8c] + str r8, [sp, #0x6c] + str r8, [sp, #0x74] + str r8, [sp, #0x7c] + str r8, [sp, #0x84] + str r8, [sp, #0x88] + str r8, [sp, #0x80] + str r8, [sp, #0x78] + str r8, [sp, #0x70] + str r8, [sp, #0x68] + str r8, [sp, #0x64] + str r8, [sp, #0x38] + str r8, [sp, #0x44] + str r8, [sp, #0x4c] + str r8, [sp, #0x54] + str r8, [sp, #0x5c] + str r8, [sp, #0x60] + str r8, [sp, #0x58] + str r8, [sp, #0x50] + str r8, [sp, #0x48] + str r8, [sp, #0x3c] + str r8, [sp, #0x34] + mov r6, r8 + str r0, [sp, #0xbc] +_0209574C: + cmp r8, #0x0 + bne _02095988 + ldr r0, _02095AC8 ; =0x021C8C7C + cmp r9, #0x7 + str r6, [r0, #0x0] + addls pc, pc, r9, lsl #0x2 + b _0209574C +_02095768: + b _0209574C +_0209576C: + b _02095788 +_02095770: + b _02095834 +_02095774: + b _02095854 +_02095778: + b _020958F0 +_0209577C: + b _020958F0 +_02095780: + b _02095948 +_02095784: + b _02095968 +_02095788: + ldr r1, [sp, #0x8] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo +_02095798: ; 0x02095798 + cmp r0, #0x0 + ldrlt r8, [sp, #0x34] + blt _0209574C + ldr r2, [sp, #0x38] + mov r0, r5 + mov r1, r7 + bl PXI_SendWordByFifo +_020957B4: ; 0x020957B4 + cmp r0, #0x0 + ldrlt r8, [sp, #0x3c] + blt _0209574C + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x44] + mov r0, r5 + bl PXI_SendWordByFifo +_020957D0: ; 0x020957D0 + cmp r0, #0x0 + ldrlt r8, [sp, #0x48] + blt _0209574C + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x4c] + mov r0, r5 + bl PXI_SendWordByFifo +_020957EC: ; 0x020957EC + cmp r0, #0x0 + ldrlt r8, [sp, #0x50] + blt _0209574C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x54] + mov r0, r5 + bl PXI_SendWordByFifo +_02095808: ; 0x02095808 + cmp r0, #0x0 + ldrlt r8, [sp, #0x58] + blt _0209574C + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x5c] + mov r0, r5 + bl PXI_SendWordByFifo +_02095824: ; 0x02095824 + cmp r0, #0x0 + ldrlt r8, [sp, #0x60] + movge r8, r4 + b _0209574C +_02095834: + ldr r1, _02095ACC ; =0x03002000 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo +_02095844: ; 0x02095844 + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0x64] + b _0209574C +_02095854: + ldr r1, [sp, #0x18] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo +_02095864: ; 0x02095864 + cmp r0, #0x0 + ldrlt r8, [sp, #0x68] + blt _020958E0 + ldr r2, [sp, #0x6c] + mov r0, r5 + mov r1, r7 + bl PXI_SendWordByFifo +_02095880: ; 0x02095880 + cmp r0, #0x0 + ldrlt r8, [sp, #0x70] + blt _020958E0 + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x74] + mov r0, r5 + bl PXI_SendWordByFifo +_0209589C: ; 0x0209589C + cmp r0, #0x0 + ldrlt r8, [sp, #0x78] + blt _020958E0 + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x7c] + mov r0, r5 + bl PXI_SendWordByFifo +_020958B8: ; 0x020958B8 + cmp r0, #0x0 + ldrlt r8, [sp, #0x80] + blt _020958E0 + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x84] + mov r0, r5 + bl PXI_SendWordByFifo +_020958D4: ; 0x020958D4 + cmp r0, #0x0 + ldrlt r8, [sp, #0x88] + movge r8, r4 +_020958E0: + bl OS_GetTick +_020958E4: ; 0x020958E4 + str r0, [sp, #0x0] + mov r11, r1 + b _0209574C +_020958F0: + ldr r1, [sp, #0x28] + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo +_02095900: ; 0x02095900 + cmp r0, #0x0 + ldrlt r8, [sp, #0x8c] + blt _0209574C + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x90] + mov r0, r5 + bl PXI_SendWordByFifo +_0209591C: ; 0x0209591C + cmp r0, #0x0 + ldrlt r8, [sp, #0x94] + blt _0209574C + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x98] + mov r0, r5 + bl PXI_SendWordByFifo +_02095938: ; 0x02095938 + cmp r0, #0x0 + ldrlt r8, [sp, #0x9c] + movge r8, r4 + b _0209574C +_02095948: + ldr r1, _02095AD0 ; =0x03002D00 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo +_02095958: ; 0x02095958 + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0xa0] + b _0209574C +_02095968: + ldr r1, _02095AD4 ; =0x03002100 + mov r0, r5 + mov r2, r6 + bl PXI_SendWordByFifo +_02095978: ; 0x02095978 + cmp r0, #0x0 + movge r8, r4 + ldrlt r8, [sp, #0xa4] + b _0209574C +_02095988: + ldr r0, _02095AC8 ; =0x021C8C7C + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _0209574C + ldr r0, _02095AD8 ; =0x021C8C78 + ldr r8, [sp, #0xa8] + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bne _02095AA0 + cmp r9, #0x7 + addls pc, pc, r9, lsl #0x2 + b _0209574C +_020959B8: ; 0x020959B8 + b _0209574C +_020959BC: ; 0x020959BC + b _020959D8 +_020959C0: ; 0x020959C0 + b _020959E4 +_020959C4: ; 0x020959C4 + b _020959EC +_020959C8: ; 0x020959C8 + b _020959F4 +_020959CC: ; 0x020959CC + b _020959F4 +_020959D0: ; 0x020959D0 + b _02095A88 +_020959D4: ; 0x020959D4 + b _02095A94 +_020959D8: + add sp, sp, #0xc4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020959E4: + mov r9, r5 + b _0209574C +_020959EC: + ldr r9, [sp, #0xac] + b _0209574C +_020959F4: + mov r0, r10 + mov r1, r4 + bl DC_InvalidateRange + cmp r9, #0x4 + bne _02095A24 + ldrb r0, [r10, #0x0] + ands r0, r0, #0x2 + ldrne r9, [sp, #0xb0] + bne _0209574C + add sp, sp, #0xc4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_02095A24: + ldrb r1, [r10, #0x0] + ands r0, r1, #0x1 + addeq sp, sp, #0xc4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} +_02095A38: ; 0x02095A38 + ands r0, r1, #0x20 + bne _02095A74 + bl OS_GetTick + ldr r2, [sp, #0x0] + ldr r3, [sp, #0xb4] + subs r2, r0, r2 + sbc r0, r1, r11 + mov r1, r0, lsl #0x6 + orr r1, r1, r2, lsr #0x1a + mov r0, r2, lsl #0x6 + ldr r2, _02095ADC ; =0x000082EA + bl _ll_udiv +_02095A68: ; 0x02095A68 + cmp r1, #0x0 + cmpeq r0, #0xfa0 + bls _02095A7C +_02095A74: + ldr r9, [sp, #0xb8] + b _0209574C +_02095A7C: + ldr r0, [sp, #0xbc] + blx SVC_WaitByLoop + b _0209574C +_02095A88: + add sp, sp, #0xc4 + mov r0, r8 + ldmia sp!, {r4-r11,pc} +_02095A94: + add sp, sp, #0xc4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_02095AA0: + mov r0, r8 + add sp, sp, #0xc4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095AAC: .word 0x0000FFFF +_02095AB0: .word 0x021C8CA0 +_02095AB4: .word 0x01050000 +_02095AB8: .word 0x02002200 +_02095ABC: .word 0x02002300 +_02095AC0: .word 0x02002500 +_02095AC4: .word 0x01020000 +_02095AC8: .word 0x021C8C7C +_02095ACC: .word 0x03002000 +_02095AD0: .word 0x03002D00 +_02095AD4: .word 0x03002100 +_02095AD8: .word 0x021C8C78 +_02095ADC: .word 0x000082EA + + arm_func_start FUN_02095AE0 +FUN_02095AE0: + ldrb r0, [r0, #0x0] + cmp r0, #0x7f + moveq r0, #0x0 + bxeq lr + cmp r0, #0x1 + movcc r0, #0x0 + bxcc lr + cmp r0, #0xdf + movls r0, #0x1 + movhi r0, #0x0 + bx lr + + arm_func_start FUN_02095B0C +FUN_02095B0C: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + bl FUN_02095AE0 +_02095B20: ; 0x02095B20 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_02095B30: ; 0x02095B30 + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x4 + bl MI_CpuCopy8 + add r1, sp, #0x4 + mov r0, r4 + mov r2, #0x4 + bl MI_CpuCopy8 + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x0] + mvn r0, #0x1 + orr r1, r2, r3 + cmp r1, r0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_02095B70: ; 0x02095B70 + mvn r0, r3 + ands r0, r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_02095B88 +FUN_02095B88: + mov r2, #0x0 +_02095B8C: + ldrb r1, [r0, r2] + cmp r1, #0x0 + movne r0, #0x1 + bxne lr + add r2, r2, #0x1 + cmp r2, #0x20 + blt _02095B8C + mov r0, #0x0 + bx lr + + arm_func_start FUN_02095BB0 +FUN_02095BB0: ; 0x02095BB0 + mvn r2, #0x0 + mov r12, #0x0 + eor r3, r2, r2, lsr r0 + mov r2, r12 +_02095BC0: + rsb r0, r2, #0x18 + mov r0, r3, lsr r0 + strb r0, [r1, r12] + add r12, r12, #0x1 + cmp r12, #0x4 + add r2, r2, #0x8 + blt _02095BC0 + bx lr + + arm_func_start FUN_02095BE0 +FUN_02095BE0: ; 0x02095BE0 + stmdb sp!, {r4,lr} + mov lr, #0x0 + mov r4, lr + mov r2, lr +_02095BF0: + ldrb r3, [r0, lr] + mov r12, r2 +_02095BF8: + mov r1, r3, asr r12 + ands r1, r1, #0x1 + add r12, r12, #0x1 + addne r4, r4, #0x1 + cmp r12, #0x8 + blt _02095BF8 + add lr, lr, #0x1 + cmp lr, #0x4 + blt _02095BF0 + and r0, r4, #0xff + ldmia sp!, {r4,pc} + + arm_func_start FUN_02095C24 +FUN_02095C24: ; 0x02095C24 + ldr ip, _02095C34 ; =MI_CpuCopy8 + ldr r1, _02095C38 ; =0x021C8C84 + mov r2, #0xe + bx r12 + .balign 4 +_02095C34: .word MI_CpuCopy8 +_02095C38: .word 0x021C8C84 + + arm_func_start FUN_02095C3C +FUN_02095C3C: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r1, _02095CD8 ; =0x021C8C80 + mov r10, r0 + ldr r8, [r1, #0x0] + mov r7, r10 + mov r9, #0x0 + add r4, r10, #0x400 + add r6, r10, #0x500 + mov r5, #0x100 + mov r11, #0xfe +_02095C68: + mov r0, r6 + mov r1, r7 + mov r2, r11 + bl MATH_CalcCRC16 + add r1, r10, r9, lsl #0x8 + strh r0, [r1, #0xfe] +_02095C80: + mov r0, r8 + mov r1, r5 + mov r2, r7 + bl FUN_020954E0 + mov r0, r7 + mov r1, r8 + mov r2, r5 + mov r3, r4 + bl FUN_02095494 +_02095CA4: ; 0x02095CA4 + cmp r0, #0x0 + beq _02095C80 + add r9, r9, #0x1 + cmp r9, #0x4 + add r7, r7, #0x100 + add r8, r8, #0x100 + blt _02095C68 + bl FUN_02095428 +_02095CC4: ; 0x02095CC4 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095CD8: .word 0x021C8C80 + + arm_func_start FUN_02095CDC +FUN_02095CDC: ; 0x02095CDC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _02095D64 ; =0x021C8C80 + mov r4, r0 + ldr r6, [r3, #0x0] + mov r9, r1 + mov r8, r2 + mov r7, #0x0 + mov r5, #0x100 +_02095D00: + ldr r0, [r9, r7, lsl #0x2] + cmp r0, #0x0 + beq _02095D38 +_02095D0C: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020954E0 + mov r0, r4 + mov r1, r6 + mov r2, r5 + mov r3, r8 + bl FUN_02095494 +_02095D30: ; 0x02095D30 + cmp r0, #0x0 + beq _02095D0C +_02095D38: + add r7, r7, #0x1 + cmp r7, #0x4 + add r4, r4, #0x100 + add r6, r6, #0x100 + blt _02095D00 + bl FUN_02095428 +_02095D50: ; 0x02095D50 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_02095D64: .word 0x021C8C80 + + arm_func_start FUN_02095D68 +FUN_02095D68: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02095D98 ; =0x021C8C80 + mov r2, r0 + ldr r0, [r1, #0x0] + mov r1, #0x400 + bl FUN_0209555C +_02095D84: ; 0x02095D84 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_02095D98: .word 0x021C8C80 + + arm_func_start FUN_02095D9C +FUN_02095D9C: + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x20 + mov r1, r0 + mov r2, r4 + bl FUN_0209555C +_02095DB4: ; 0x02095DB4 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02095DC0: ; 0x02095DC0 + ldrh r2, [r4, #0x0] + ldr r1, _02095DDC ; =0x021C8C80 + mov r0, #0x1 + mov r2, r2, lsl #0x3 + sub r2, r2, #0x400 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_02095DDC: .word 0x021C8C80 + + arm_func_start FUN_02095DE0 +FUN_02095DE0: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, _02095EBC ; =0x021C8C80 + mov r10, r1 + ldr r8, [r2, #0x0] + bl FUN_02095330 + ldr r1, _02095EC0 ; =0x0000A001 + add r0, r10, #0x200 + bl MATHi_CRC16InitTableRev + mov r9, #0x0 + add r4, r10, #0x100 + add r6, r10, #0xf0 + mov r7, #0x100 + mov r5, #0xe + mov r11, #0xfe +_02095E1C: + mov r0, r8 + mov r1, r7 + mov r2, r10 + bl FUN_0209555C +_02095E2C: ; 0x02095E2C + cmp r0, #0x0 + bne _02095E44 + bl OS_Terminate + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_02095E44: + ldr r0, _02095EC4 ; =0x021C8C84 + mov r1, r6 + mov r2, r5 + bl MI_CpuCopy8 + mov r1, r10 + mov r2, r11 + add r0, r10, #0x200 + bl MATH_CalcCRC16 + strh r0, [r10, #0xfe] +_02095E68: + mov r0, r8 + mov r1, r7 + mov r2, r10 + bl FUN_020954E0 + mov r0, r10 + mov r1, r8 + mov r2, r7 + mov r3, r4 + bl FUN_02095494 +_02095E8C: ; 0x02095E8C + cmp r0, #0x0 + beq _02095E68 + add r9, r9, #0x1 + cmp r9, #0x2 + add r8, r8, #0x100 + blt _02095E1C + bl FUN_02095428 +_02095EA8: ; 0x02095EA8 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_02095EBC: .word 0x021C8C80 +_02095EC0: .word 0x0000A001 +_02095EC4: .word 0x021C8C84 + + arm_func_start FUN_02095EC8 +FUN_02095EC8: + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _02095F90 ; =0x021C8C84 + mov r1, r4 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r3, [r4, #0x0] + mvn r0, #0x0 + ldr r2, [r4, #0x4] + ldr r1, _02095F94 ; =0x000007FF + and r0, r3, r0 + str r0, [r4, #0x0] + and r1, r2, r1 + ldr r0, _02095F98 ; =0x021C8C89 + str r1, [r4, #0x4] + add r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + add r12, r4, #0x8 + ldr r1, [r4, #0x8] + ldr r0, [r12, #0x4] + mov r1, r1, lsr #0x3 + orr r1, r1, r0, lsl #0x1d + str r1, [r4, #0x8] + mov r0, r0, lsr #0x3 + str r0, [r12, #0x4] + ldr r3, [r4, #0x8] + mvn r0, #0x0 + ldr r2, [r12, #0x4] + ldr r1, _02095F94 ; =0x000007FF + and r0, r3, r0 + str r0, [r4, #0x8] + and r1, r2, r1 + ldr r0, _02095F9C ; =0x021C8C8E + str r1, [r12, #0x4] + add r1, r4, #0x10 + mov r2, #0x2 + bl MI_CpuCopy8 + ldrh r1, [r4, #0x10] + ldr r3, _02095FA0 ; =0x000003FF + ldr r0, _02095FA4 ; =0x021C8C90 + mov r1, r1, asr #0x6 + strh r1, [r4, #0x10] + ldrh r12, [r4, #0x10] + add r1, r4, #0x12 + mov r2, #0x2 + and r3, r12, r3 + strh r3, [r4, #0x10] + bl MI_CpuCopy8 + ldmia sp!, {r4,pc} + .balign 4 +_02095F90: .word 0x021C8C84 +_02095F94: .word 0x000007FF +_02095F98: .word 0x021C8C89 +_02095F9C: .word 0x021C8C8E +_02095FA0: .word 0x000003FF +_02095FA4: .word 0x021C8C90 + + arm_func_start FUN_02095FA8 +FUN_02095FA8: ; 0x02095FA8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02095FD8 ; =0x021C8C80 + mov r2, r0 + ldr r0, [r1, #0x0] + mov r1, #0x300 + bl FUN_0209555C +_02095FC4: ; 0x02095FC4 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_02095FD8: .word 0x021C8C80 + + arm_func_start FUN_02095FDC +FUN_02095FDC: ; 0x02095FDC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r1, r5, r4, lsl #0x8 + mov r0, #0x0 + mov r2, #0x100 + bl MIi_CpuClear16 + add r0, r5, r4, lsl #0x8 + mov r1, #0xff + strb r1, [r0, #0xe7] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_02096010 +FUN_02096010: ; 0x02096010 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r7, r0 + mov r1, r7 + mov r0, #0x0 + mov r2, #0x400 + bl MIi_CpuClear16 + mov r2, #0x0 + mov r1, #0xff +_02096034: + add r0, r7, r2, lsl #0x8 + add r2, r2, #0x1 + strb r1, [r0, #0xe7] + cmp r2, #0x3 + blt _02096034 + add r0, sp, #0x0 + bl FUN_020967A4 +_02096050: ; 0x02096050 + add r0, sp, #0x0 + bl FUN_02095330 + mov r6, r0 + mov r5, #0x0 + mov r4, #0xe +_02096064: + mov r0, r6 + mov r2, r4 + add r1, r7, #0xf0 + bl MI_CpuCopy8 + add r5, r5, #0x1 + cmp r5, #0x2 + add r7, r7, #0x100 + blt _02096064 + mov r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_02096090 +FUN_02096090: + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldrb r0, [r4, #0xe7] + cmp r0, #0xff + addeq sp, sp, #0x8 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} +_020960B0: ; 0x020960B0 + cmp r0, #0x2 + addhi sp, sp, #0x8 + movhi r0, #0x0 + ldmhiia sp!, {r4,pc} +_020960C0: ; 0x020960C0 + add r0, r4, #0x40 + bl FUN_02095B88 +_020960C8: ; 0x020960C8 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020960D8: ; 0x020960D8 + ldr r1, _0209618C ; =0x020FF574 + add r0, r4, #0xc0 + mov r2, #0x4 + bl memcmp +_020960E8: ; 0x020960E8 + cmp r0, #0x0 + beq _02096140 + add r0, r4, #0xc4 + bl FUN_02095AE0 +_020960F8: ; 0x020960F8 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096108: ; 0x02096108 + ldrb r0, [r4, #0xd0] + cmp r0, #0x20 + addhi sp, sp, #0x8 + movhi r0, #0x0 + ldmhiia sp!, {r4,pc} +_0209611C: ; 0x0209611C + add r1, sp, #0x0 + bl FUN_02095BB0 + add r1, sp, #0x0 + add r0, r4, #0xc0 + bl FUN_02095B0C +_02096130: ; 0x02096130 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096140: + ldr r1, _0209618C ; =0x020FF574 + add r0, r4, #0xc8 + mov r2, #0x4 + bl memcmp +_02096150: ; 0x02096150 + cmp r0, #0x0 + beq _02096180 + add r0, r4, #0xc8 + bl FUN_02095AE0 +_02096160: ; 0x02096160 + cmp r0, #0x0 + bne _02096180 + add r0, r4, #0xcc + bl FUN_02095AE0 +_02096170: ; 0x02096170 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096180: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_0209618C: .word 0x020FF574 + + arm_func_start FUN_02096190 +FUN_02096190: ; 0x02096190 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + mov r1, #0x0 + mov r2, #0x700 + bl MI_CpuFill8 + mov r0, r10 + bl FUN_02095D9C +_020961B0: ; 0x020961B0 + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964B4 ; =0xFFFFD8EF + ldmeqia sp!, {r4-r11,pc} +_020961C0: ; 0x020961C0 + ldr r1, _020964B8 ; =0x0000A001 + add r0, r10, #0x500 + bl MATHi_CRC16InitTableRev + mov r0, r10 + bl FUN_02095D68 +_020961D4: ; 0x020961D4 + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964B4 ; =0xFFFFD8EF + ldmeqia sp!, {r4-r11,pc} +_020961E4: ; 0x020961E4 + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x10 + bl MI_CpuFill8 + mov r8, r10 + mov r7, r10 + mov r9, #0x0 + add r11, sp, #0x0 + add r6, r10, #0x500 + mov r4, #0x1 + mov r5, #0xfe +_02096210: + mov r0, r6 + mov r1, r8 + mov r2, r5 + bl MATH_CalcCRC16 + add r1, r10, r9, lsl #0x8 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + bne _02096240 + mov r0, r7 + bl FUN_02096090 +_02096238: ; 0x02096238 + cmp r0, #0x0 + strne r4, [r11, r9, lsl #0x2] +_02096240: + add r9, r9, #0x1 + cmp r9, #0x3 + add r8, r8, #0x100 + add r7, r7, #0x100 + blt _02096210 + add r0, r10, #0x500 + add r1, r10, #0x300 + mov r2, #0xfe + bl MATH_CalcCRC16 + add r1, r10, #0x300 + ldrh r1, [r1, #0xfe] + cmp r0, r1 + moveq r0, #0x1 + ldr r1, [sp, #0x0] + streq r0, [sp, #0xc] + cmp r1, #0x0 + beq _020962BC + ldr r0, [sp, #0x4] + cmp r0, #0x0 + beq _020962BC + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020962BC + ldr r0, [sp, #0xc] + cmp r0, #0x0 + beq _020962BC + add r0, r10, #0xf0 + bl FUN_02095C24 + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020962BC: + cmp r1, #0x0 + bne _0209630C + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0209630C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _0209630C + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0209630C + mov r0, r10 + bl FUN_02096010 + mov r0, r10 + bl FUN_02095C3C +_020962F8: ; 0x020962F8 + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_0209630C: + cmp r1, #0x0 + beq _02096320 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _0209635C +_02096320: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _02096338 + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _0209635C +_02096338: + mov r0, r10 + bl FUN_02096010 + mov r0, r10 + bl FUN_02095C3C +_02096348: ; 0x02096348 + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_0209635C: + cmp r1, #0x0 + bne _02096394 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _02096394 + mov r0, r10 + bl FUN_02096010 + mov r0, r10 + bl FUN_02095C3C +_02096380: ; 0x02096380 + cmp r0, #0x0 + ldrne r0, _020964C0 ; =0xFFFFD8ED + add sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmia sp!, {r4-r11,pc} +_02096394: + cmp r1, #0x0 + bne _020963C4 + mov r0, r10 + mov r1, #0x0 + bl FUN_02095FDC + add r0, r10, #0x1f0 + add r1, r10, #0xf0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r10, #0x1ef] + strb r0, [r10, #0xef] + b _020963F4 +_020963C4: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + bne _020963F4 + mov r0, r10 + mov r1, #0x1 + bl FUN_02095FDC + add r0, r10, #0xf0 + add r1, r10, #0x1f0 + mov r2, #0xe + bl MI_CpuCopy8 + ldrb r0, [r10, #0xef] + strb r0, [r10, #0x1ef] +_020963F4: + add r0, r10, #0xf0 + bl FUN_02095C24 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bne _02096414 + mov r0, r10 + mov r1, #0x2 + bl FUN_02095FDC +_02096414: + ldr r0, [sp, #0xc] + cmp r0, #0x0 + bne _02096430 + add r1, r10, #0x300 + mov r0, #0x0 + mov r2, #0x100 + bl MIi_CpuClear16 +_02096430: + mov r4, #0x0 + mov r1, r4 + add r0, sp, #0x0 + add r5, r10, #0xef + mov r6, #0x1 +_02096444: + ldr r2, [r0, r1, lsl #0x2] + cmp r2, #0x0 + bne _0209647C + ldrb r2, [r10, #0xef] + mov r7, r6, lsl r1 + ands r2, r2, r7 + beq _0209647C + ldrb r3, [r5, #0x0] + mvn r2, r7 + mov r4, r6 + and r2, r3, r2 + strb r2, [r5, #0x0] + ldrb r2, [r10, #0xef] + strb r2, [r10, #0x1ef] +_0209647C: + add r1, r1, #0x1 + cmp r1, #0x3 + blt _02096444 + mov r0, r10 + bl FUN_02095C3C +_02096490: ; 0x02096490 + cmp r0, #0x0 + addeq sp, sp, #0x14 + ldreq r0, _020964BC ; =0xFFFFD8F0 + ldmeqia sp!, {r4-r11,pc} +_020964A0: ; 0x020964A0 + cmp r4, #0x0 + ldrne r0, _020964C4 ; =0xFFFFD8EE + moveq r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020964B4: .word 0xFFFFD8EF +_020964B8: .word 0x0000A001 +_020964BC: .word 0xFFFFD8F0 +_020964C0: .word 0xFFFFD8ED +_020964C4: .word 0xFFFFD8EE + + arm_func_start FUN_020964C8 +FUN_020964C8: + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r0, sp, #0x0 + bl FUN_02095EC8 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0xc] + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r0 + bne _0209650C + ldr r1, [sp, #0x4] + ldr r2, [sp, #0x0] + cmp r1, r0 + cmpeq r2, r0 + addeq sp, sp, #0x14 + moveq r0, #0x1 + ldmeqia sp!, {pc} +_0209650C: + mov r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {pc} + + arm_func_start FUN_02096518 +FUN_02096518: ; 0x02096518 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl FUN_02095EC8 +_0209652C: ; 0x0209652C + add r0, sp, #0x0 + ldmia r0, {r2-r3} + stmia r4, {r2-r3} + add r1, sp, #0x8 + add r0, r4, #0x8 + ldmia r1, {r2-r3} + stmia r0, {r2-r3} + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r0 + streq r0, [r4, #0x10] + movne r0, #0x1 + strne r0, [r4, #0x10] + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02096570 +FUN_02096570: ; 0x02096570 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x28 + add r2, sp, #0x0 + mov r1, #0x0 + strb r1, [r2, #0x0] + strb r1, [r2, #0x1] + strb r1, [r2, #0x2] + strb r1, [r2, #0x3] + strb r1, [r2, #0x4] + mov r5, r0 + strb r1, [r2, #0x5] + bl FUN_02095EC8 + bl RTC_Init + add r0, sp, #0x8 + bl RTC_GetDate +_020965AC: ; 0x020965AC + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} +_020965BC: ; 0x020965BC + add r0, sp, #0x18 + bl RTC_GetTime +_020965C4: ; 0x020965C4 + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} +_020965D4: ; 0x020965D4 + add r0, sp, #0x8 + add r1, sp, #0x18 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0x0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x28 + ldmltia sp!, {r4-r10,pc} +_020965F8: ; 0x020965F8 + bl OS_IsTickAvailable +_020965FC: ; 0x020965FC + cmp r0, #0x0 + beq _0209660C + ldr r0, _02096700 ; =OS_GetTick + adds r4, r4, r0 +_0209660C: + add r0, sp, #0x0 + bl OS_GetMacAddress + ldrb r1, [sp, #0x0] + ldr r6, _02096704 ; =0x5D588B65 + ldr r7, _02096708 ; =0x00269EC3 + ldrb r0, [sp, #0x1] + mla r9, r4, r6, r7 + mov r1, r1, lsl #0x10 + orr r1, r1, r0, lsl #0x8 + ldrb r2, [sp, #0x2] + ldr r0, _0209670C ; =0x000009BF + ldrb r8, [sp, #0x3] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #0x1 + mov r2, r9, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + mov r3, r8, lsl #0x10 + ldrb r4, [sp, #0x4] + ldrb r0, [sp, #0x5] + mov r8, #0x0 + orr r10, r3, r4, lsl #0x8 + strh r2, [r5, #0x10] + str r8, [r5, #0x8] + str r8, [r5, #0xc] + moveq r1, #0x0 + ldr r2, [r5, #0xc] + ldr r3, [r5, #0x8] + cmp r2, r8 + cmpeq r3, r8 + and r4, r1, #0xff + orr r10, r0, r10 + bne _020966F4 +_02096698: + mla r9, r6, r9, r7 + b _020966A4 +_020966A0: + mla r9, r6, r9, r7 +_020966A4: + cmp r9, #0x0 + beq _020966A0 + ldrh r1, [r5, #0x12] + mov r0, r9, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r1, r0 + beq _020966A0 + strh r0, [r5, #0x12] + ldrh r0, [r5, #0x12] + mov r1, r10 + mov r2, r4 + mov r3, r8 + bl FUN_02096988 + str r0, [r5, #0x8] + str r1, [r5, #0xc] + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x8] + cmp r0, r8 + cmpeq r1, r8 + beq _02096698 +_020966F4: + mov r0, #0x1 + add sp, sp, #0x28 + ldmia sp!, {r4-r10,pc} + .balign 4 +_02096700: .word OS_GetTick +_02096704: .word 0x5D588B65 +_02096708: .word 0x00269EC3 +_0209670C: .word 0x000009BF + + arm_func_start FUN_02096710 +FUN_02096710: ; 0x02096710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r5, r0 + add r0, sp, #0x0 + mov r4, r1 + bl FUN_02095EC8 + add r12, r5, #0x8 + ldmia r12, {r2-r3} + stmia r5, {r2-r3} + add r1, sp, #0x8 + ldmia r1, {r2-r3} + mov r0, r5 + mov r1, r4 + stmia r12, {r2-r3} + bl FUN_02095DE0 +_0209674C: ; 0x0209674C + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x14 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_02096760 +FUN_02096760: ; 0x02096760 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl FUN_020967A4 +_02096774: ; 0x02096774 + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096784: ; 0x02096784 + add r0, sp, #0x0 + mov r1, r4 + bl FUN_02095DE0 +_02096790: ; 0x02096790 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020967A4 +FUN_020967A4: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x28 + mov r8, r0 + bl FUN_02095EC8 + bl RTC_Init + add r0, sp, #0x8 + bl RTC_GetDate +_020967C0: ; 0x020967C0 + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} +_020967D0: ; 0x020967D0 + add r0, sp, #0x18 + bl RTC_GetTime +_020967D8: ; 0x020967D8 + cmp r0, #0x0 + addne sp, sp, #0x28 + movne r0, #0x0 + ldmneia sp!, {r4-r10,pc} +_020967E8: ; 0x020967E8 + add r0, sp, #0x8 + add r1, sp, #0x18 + bl RTC_ConvertDateTimeToSecond + mov r4, r0 + mov r0, #0x0 + subs r2, r4, r0 + sbcs r2, r1, r0 + addlt sp, sp, #0x28 + ldmltia sp!, {r4-r10,pc} +_0209680C: ; 0x0209680C + bl OS_IsTickAvailable +_02096810: ; 0x02096810 + cmp r0, #0x0 + beq _02096820 + ldr r0, _02096978 ; =OS_GetTick + adds r4, r4, r0 +_02096820: + add r0, sp, #0x0 + bl OS_GetMacAddress + ldrb r1, [sp, #0x0] + ldr sb, _0209697C ; =0x5D588B65 + ldr sl, _02096980 ; =0x00269EC3 + ldrb r0, [sp, #0x1] + mla r5, r4, r9, r10 + mov r1, r1, lsl #0x10 + orr r1, r1, r0, lsl #0x8 + ldrb r2, [sp, #0x2] + ldr r0, _02096984 ; =0x000009BF + ldrb r6, [sp, #0x3] + orr r1, r2, r1 + cmp r1, r0 + movne r1, #0x1 + moveq r1, #0x0 + mov r2, r5, lsr #0x10 + mov r0, #0x3e8 + mul r3, r2, r0 + mov r2, r3, lsr #0x10 + ldrb r0, [sp, #0x5] + ldrb r4, [sp, #0x4] + mov r3, r6, lsl #0x10 + and r7, r1, #0xff + orr r3, r3, r4, lsl #0x8 + strh r2, [r8, #0x10] + mov r4, #0x0 + str r4, [r8, #0x0] + str r4, [r8, #0x4] + ldrh r2, [r8, #0x12] + orr r6, r0, r3 + cmp r2, #0x0 + bne _02096910 + str r4, [r8, #0x8] + str r4, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + bne _0209696C +_020968C0: + mul r0, r5, r9 + adds r5, r0, r10 + bne _020968D8 +_020968CC: + mul r0, r5, r9 + adds r5, r0, r10 + beq _020968CC +_020968D8: + strh r5, [r8, #0x12] + ldrh r0, [r8, #0x12] + mov r1, r6 + mov r2, r7 + mov r3, r4 + bl FUN_02096988 + str r0, [r8, #0x8] + str r1, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, #0x0 + beq _020968C0 + b _0209696C +_02096910: + str r4, [r8, #0x8] + str r4, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + bne _0209696C + add r5, r8, #0x12 +_02096930: + ldrh r0, [r5, #0x0] + mov r1, r6 + mov r2, r7 + add r0, r0, #0x1 + strh r0, [r5, #0x0] + ldrh r0, [r8, #0x12] + mov r3, r4 + bl FUN_02096988 + str r0, [r8, #0x8] + str r1, [r8, #0xc] + ldr r0, [r8, #0xc] + ldr r1, [r8, #0x8] + cmp r0, r4 + cmpeq r1, r4 + beq _02096930 +_0209696C: + mov r0, #0x1 + add sp, sp, #0x28 + ldmia sp!, {r4-r10,pc} + .balign 4 +_02096978: .word OS_GetTick +_0209697C: .word 0x5D588B65 +_02096980: .word 0x00269EC3 +_02096984: .word 0x000009BF + + arm_func_start FUN_02096988 +FUN_02096988: ; 0x02096988 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov lr, #0x0 + and r12, lr, #0x0 + mvn r5, #0xff000000 + ldr r4, _02096B08 ; =0x0000FFFF + and r2, r2, #0x1 + mov r6, r12, lsl #0x2 + and r3, r3, #0x3 + and r5, r1, r5 + orr r1, r3, r2, lsl #0x2 + orr r6, r6, r2, lsr #0x1e + mov r7, r12, lsl #0x3 + and r2, r0, r4 + orr r0, r1, r5, lsl #0x3 + orr r1, r0, r2, lsl #0x1b + mov r3, r12, lsl #0x1b + orr r3, r3, r2, lsr #0x5 + orr r7, r7, r5, lsr #0x1d + orr r0, r12, r6 + orr r0, r7, r0 + orr r0, r3, r0 + add r2, sp, #0x0 + str r1, [sp, #0x0] + str r0, [sp, #0x4] +_020969EC: + ldrb r0, [r2, #0x0] + add lr, lr, #0x1 + cmp lr, #0x6 + eor r0, r0, #0xd6 + strb r0, [r2], #0x1 + blt _020969EC + ldr r2, _02096B0C ; =0x020FF580 + add r5, sp, #0x0 + mov r4, #0x0 +_02096A10: + ldrb r3, [r5, #0x0] + add r4, r4, #0x1 + cmp r4, #0x5 + mov r0, r3, asr #0x4 + and r1, r0, #0xf + and r0, r3, #0xf + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + orr r0, r0, r1, lsl #0x4 + strb r0, [r5], #0x1 + blt _02096A10 + add r0, sp, #0x0 + add r1, sp, #0x8 + mov r2, #0x8 + bl MI_CpuCopy8 + ldr r4, _02096B10 ; =0x020FF578 + add r5, sp, #0x8 + mov r3, #0x0 + add r1, sp, #0x0 +_02096A5C: + ldrb r2, [r5, #0x0] + ldrb r0, [r4, #0x0] + add r3, r3, #0x1 + cmp r3, #0x5 + strb r2, [r1, r0] + add r5, r5, #0x1 + add r4, r4, #0x1 + blt _02096A5C + ldrb r2, [sp, #0x5] + mov r0, #0x0 + ldr r3, [sp, #0x0] + and r2, r2, #0x7 + strb r0, [sp, #0x7] + strb r0, [sp, #0x6] + strb r2, [sp, #0x5] + ldr r2, [sp, #0x4] + mov r4, r3, lsl #0x1 + mov r2, r2, lsl #0x1 + orr r2, r2, r3, lsr #0x1f + str r2, [sp, #0x4] + ldrb r2, [sp, #0x5] + str r4, [sp, #0x0] + ldrb r3, [sp, #0x0] + mov r2, r2, asr #0x3 + and r2, r2, #0x1 + orr r2, r3, r2 + strb r2, [sp, #0x0] +_02096AC8: + ldrb r2, [r1, #0x0] + add r0, r0, #0x1 + cmp r0, #0x6 + eor r2, r2, #0x67 + strb r2, [r1], #0x1 + blt _02096AC8 + ldrb r0, [sp, #0x5] + mov r1, #0x0 + strb r1, [sp, #0x7] + and r0, r0, #0x7 + strb r1, [sp, #0x6] + strb r0, [sp, #0x5] + ldr r0, [sp, #0x0] + ldr r1, [sp, #0x4] + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + .balign 4 +_02096B08: .word 0x0000FFFF +_02096B0C: .word 0x020FF580 +_02096B10: .word 0x020FF578 + + arm_func_start FUN_02096B14 +FUN_02096B14: ; 0x02096B14 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, _02096B74 ; =0x02000B8C + mov r4, #0x0 + bl OSi_ReferSymbol + mov r0, r6 + bl FUN_02096190 + mov r5, r0 + bl FUN_020964C8 +_02096B38: ; 0x02096B38 + cmp r0, #0x0 + beq _02096B4C + mov r0, r6 + bl FUN_02096760 + mov r4, #0x1 +_02096B4C: + cmp r5, #0x0 + bge _02096B64 + cmp r4, #0x0 + movne r0, #0x2 + moveq r0, #0x3 + ldmia sp!, {r4-r6,pc} +_02096B64: + cmp r4, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02096B74: .word 0x02000B8C + + arm_func_start FUN_02096B78 +FUN_02096B78: ; 0x02096B78 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r7, r0 + bl FUN_020974C8 + mov r5, r0 + mov r0, r4 + bl FUN_020974C8 +_02096B98: ; 0x02096B98 + cmp r5, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} +_02096BA8: ; 0x02096BA8 + cmp r5, #0x3 + bne _02096BD8 + mov r0, r7 + bl FUN_02097544 + mov r5, r0 + mov r0, r4 + bl FUN_02097544 +_02096BC4: ; 0x02096BC4 + cmp r5, r0 + moveq r0, #0x1 + add sp, sp, #0x4 + movne r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096BD8: + cmp r5, #0x1 + bne _02096C34 + mov r0, r7 + bl FUN_02097568 + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl FUN_02097568 + cmp r6, r1 + cmpeq r5, r0 + bne _02096C28 + mov r0, r7 + bl FUN_02097560 + mov r5, r0 + mov r0, r4 + bl FUN_02097560 +_02096C18: ; 0x02096C18 + cmp r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r7,pc} +_02096C28: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096C34: + cmp r5, #0x2 + bne _02096C6C + mov r0, r7 + bl FUN_0209754C + mov r5, r0 + mov r6, r1 + mov r0, r4 + bl FUN_0209754C + cmp r6, r1 + cmpeq r5, r0 + moveq r0, #0x1 + add sp, sp, #0x4 + movne r0, #0x0 + ldmia sp!, {r4-r7,pc} +_02096C6C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_02096C78: ; 0x02096C78 + ldr ip, _02096C8C ; =FUN_02097218 + mov r3, r0 + mov r0, r1 + ldr r1, [r3, #0x24] + bx r12 + .balign 4 +_02096C8C: .word FUN_02097218 + + arm_func_start FUN_02096C90 +FUN_02096C90: ; 0x02096C90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + mov r1, r4 + bl FUN_020974F4 + mov r0, r5 + mov r1, #0x3 + bl FUN_02097440 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_02096CCC +FUN_02096CCC: ; 0x02096CCC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + mov r0, r4 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r5 + bl FUN_0209702C +_02096CF4: ; 0x02096CF4 + cmp r0, #0x0 + addeq r0, r5, #0x4 + ldmeqia r0, {r0-r2} + addeq sp, sp, #0x4 + stmeqia r4, {r0-r2} + ldmeqia sp!, {r4-r5,pc} +_02096D0C: ; 0x02096D0C + ldr r1, [r5, #0x1c] + mov r0, r4 + bl FUN_020974F4 + mov r0, r4 + mov r1, #0x3 + bl FUN_02097440 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_02096D2C +FUN_02096D2C: ; 0x02096D2C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, r2 + mov r6, r0 + mov r1, #0x0 + mov r2, #0xc + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020974FC + mov r0, r6 + mov r1, #0x2 + bl FUN_02097440 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_02096D68 +FUN_02096D68: ; 0x02096D68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r3, #0x1c] + mov r2, #0x0 + mov r1, r2 + cmp r0, #0x0 + beq _02096D94 + ldr r1, [r3, #0x24] + bl FUN_020973D0 + mov r2, r0 +_02096D94: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_02096DA0 +FUN_02096DA0: ; 0x02096DA0 + stmdb sp!, {r4-r6,lr} + mov r4, r1 + mov r6, r0 + mov r0, r4 + bl FUN_020974C8 + cmp r0, #0x1 + beq _02096E14 + cmp r0, #0x2 + beq _02096DD0 + cmp r0, #0x3 + beq _02096E08 + b _02096E1C +_02096DD0: + mov r0, r4 + bl FUN_0209754C + ldr r2, [r6, #0x24] + mov r4, r0 + mov r5, r1 + bl FUN_02097344 +_02096DE8: ; 0x02096DE8 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_02096DF4: ; 0x02096DF4 + ldr r2, [r6, #0x24] + mov r0, r4 + mov r1, r5 + bl FUN_02097324 + ldmia sp!, {r4-r6,pc} +_02096E08: + mov r0, r4 + bl FUN_02097544 + ldmia sp!, {r4-r6,pc} +_02096E14: + mvn r0, #0x0 + ldmia sp!, {r4-r6,pc} +_02096E1C: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_02096E24 +FUN_02096E24: ; 0x02096E24 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020974C8 + cmp r0, #0x2 + movne r0, #0x0 + movne r1, r0 + ldmneia sp!, {r4,pc} +_02096E40: ; 0x02096E40 + mov r0, r4 + bl FUN_0209754C + ldmia sp!, {r4,pc} + + arm_func_start FUN_02096E4C +FUN_02096E4C: ; 0x02096E4C + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + mov r4, r0 + ldr r1, [r4, #0x20] + add r0, sp, #0x0 + bic r2, r1, #0x1 + ldr r1, _02096E8C ; =0xEDB88320 + str r2, [r4, #0x20] + bl MATHi_CRC32InitTableRev +_02096E70: ; 0x02096E70 + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096E8C: .word 0xEDB88320 + + arm_func_start thunk_FUN_02096e4c +thunk_FUN_02096e4c: ; 0x02096E90 + ldr ip, _02096E98 ; =FUN_02096E4C + bx r12 + .balign 4 +_02096E98: .word FUN_02096E4C + + arm_func_start FUN_02096E9C +FUN_02096E9C: ; 0x02096E9C + ldr r0, [r0, #0x20] + and r0, r0, #0x1 + cmp r0, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_02096EB4 +FUN_02096EB4: ; 0x02096EB4 + ldr ip, _02096EBC ; =FUN_02096E9C + bx r12 + .balign 4 +_02096EBC: .word FUN_02096E9C + + arm_func_start FUN_02096EC0 +FUN_02096EC0: ; 0x02096EC0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + mov r4, r0 + add r3, r4, #0x10 + mov r12, r2 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} + ldr r1, _02096F14 ; =0xEDB88320 + add r0, sp, #0x0 + str r12, [r4, #0x1c] + bl MATHi_CRC32InitTableRev +_02096EEC: ; 0x02096EEC + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r4, #0x3c] + ldr r0, [r4, #0x20] + orr r0, r0, #0x1 + str r0, [r4, #0x20] + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096F14: .word 0xEDB88320 + + arm_func_start FUN_02096F18 +FUN_02096F18: ; 0x02096F18 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, r4, #0x10 + bl FUN_020974C8 +_02096F2C: ; 0x02096F2C + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} +_02096F3C: ; 0x02096F3C + add r0, sp, #0x0 + bl FUN_02096518 + ldr r0, [sp, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x18 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_02096F58: ; 0x02096F58 + add r0, r4, #0x10 + bl FUN_02097568 + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02096F80 +FUN_02096F80: ; 0x02096F80 + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x10 + bl FUN_0209703C +_02096F90: ; 0x02096F90 + cmp r0, #0x0 + beq _02096FA8 + ldr r0, [r4, #0x1c] + cmp r0, #0x0 + movgt r0, #0x1 + ldmgtia sp!, {r4,pc} +_02096FA8: + mov r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02096FB0 +FUN_02096FB0: ; 0x02096FB0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x400 + ldr r1, _02096FF0 ; =0xEDB88320 + mov r4, r0 + add r0, sp, #0x0 + bl MATHi_CRC32InitTableRev +_02096FC8: ; 0x02096FC8 + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x3c + bl MATH_CalcCRC32 + ldr r1, [r4, #0x3c] + cmp r0, r1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x400 + ldmia sp!, {r4,pc} + .balign 4 +_02096FF0: .word 0xEDB88320 + + arm_func_start thunk_FUN_02097190 +thunk_FUN_02097190: ; 0x02096FF4 + ldr ip, _02096FFC ; =FUN_02097190 + bx r12 + .balign 4 +_02096FFC: .word FUN_02097190 + + arm_func_start FUN_02097000 +FUN_02097000: ; 0x02097000 + ldr ip, _02097008 ; =FUN_0209700C + bx r12 + .balign 4 +_02097008: .word FUN_0209700C + + arm_func_start FUN_0209700C +FUN_0209700C: ; 0x0209700C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020974C8 +_02097018: ; 0x02097018 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_0209702C +FUN_0209702C: + ldr ip, _02097038 ; =FUN_0209703C + add r0, r0, #0x10 + bx r12 + .balign 4 +_02097038: .word FUN_0209703C + + arm_func_start FUN_0209703C +FUN_0209703C: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020974C8 + cmp r0, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_0209705C +FUN_0209705C: ; 0x0209705C + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + mov r4, r0 + add r0, sp, #0x0 + bl FUN_02096518 + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _020970A4 + mov r0, r4 + bl FUN_02097568 + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x0] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + add sp, sp, #0x18 + movne r0, #0x0 + ldmia sp!, {r4,pc} +_020970A4: + mov r0, r4 + bl FUN_02097568 + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + cmp r2, r1 + cmpeq r3, r0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020970CC +FUN_020970CC: ; 0x020970CC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x38 + mov r6, r0 + add r0, sp, #0x14 + bl OS_GetLowEntropyData + mov r3, #0x1 + add r2, sp, #0x14 +_020970E8: + add r0, r2, r3, lsl #0x2 + ldr r1, [r2, r3, lsl #0x2] + ldr r0, [r0, #-0x4] + eor r0, r1, r0 + str r0, [r2, r3, lsl #0x2] + add r3, r3, #0x1 + cmp r3, #0x8 + blo _020970E8 + add r0, sp, #0x0 + ldr r5, [sp, #0x30] + mov r4, #0x0 + bl FUN_02096518 + ldr r0, [sp, #0x10] + cmp r0, #0x0 + beq _02097138 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + mov r0, r6 + bl FUN_02097510 + b _02097148 +_02097138: + ldr r1, [sp, #0x8] + ldr r2, [sp, #0xc] + mov r0, r6 + bl FUN_02097510 +_02097148: + ldr r0, _02097184 ; =0x6C078965 + ldr r1, _02097188 ; =0x5D588B65 + umull r3, r2, r5, r0 + mla r2, r5, r1, r2 + ldr r1, _0209718C ; =0x00269EC3 + mla r2, r4, r0, r2 + adds r0, r3, r1 + mov r0, r6 + adc r1, r2, #0x0 + bl FUN_02097508 + mov r0, r6 + mov r1, #0x1 + bl FUN_02097440 + add sp, sp, #0x38 + ldmia sp!, {r4-r6,pc} + .balign 4 +_02097184: .word 0x6C078965 +_02097188: .word 0x5D588B65 +_0209718C: .word 0x00269EC3 + + arm_func_start FUN_02097190 +FUN_02097190: ; 0x02097190 + stmdb sp!, {r4-r5,lr} + ldr ip, _02097210 ; =0x00000404 + sub sp, sp, r12 + mov r4, r1 + mov r1, #0x0 + mov r2, #0x40 + mov r5, r0 + bl MI_CpuFill8 + mov r0, #0x40 + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r5, #0x1c] + add r0, r5, #0x4 + str r4, [r5, #0x24] + bl FUN_020970CC + add r0, r5, #0x10 + mov r1, #0x0 + bl FUN_02097440 + ldr r1, _02097214 ; =0xEDB88320 + add r0, sp, #0x0 + bl MATHi_CRC32InitTableRev +_020971E4: ; 0x020971E4 + add r0, sp, #0x0 + mov r1, r5 + mov r2, #0x3c + bl MATH_CalcCRC32 + str r0, [r5, #0x3c] + ldr r0, [r5, #0x20] + orr r0, r0, #0x1 + str r0, [r5, #0x20] + ldr ip, _02097210 ; =0x00000404 + add sp, sp, r12 + ldmia sp!, {r4-r5,pc} + .balign 4 +_02097210: .word 0x00000404 +_02097214: .word 0xEDB88320 + + arm_func_start FUN_02097218 +FUN_02097218: ; 0x02097218 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r4, r1 + mov r5, r2 + bl FUN_02097568 + add r3, sp, #0x14 + mov r2, #0x2b + bl FUN_020972A8 + mov r0, r6 + bl FUN_02097560 + mov r1, #0x0 + mov r2, #0x20 + add r3, sp, #0x29 + bl FUN_020972A8 + mov r1, r4, lsr #0x18 + and r1, r1, #0xff + str r1, [sp, #0x0] + mov r1, r4, lsr #0x10 + and r1, r1, #0xff + str r1, [sp, #0x4] + mov r1, r4, lsr #0x8 + and r1, r1, #0xff + str r1, [sp, #0x8] + and r1, r4, #0xff + str r1, [sp, #0xc] + add r2, sp, #0x29 + str r2, [sp, #0x10] + ldr r2, _020972A4 ; =0x0210618C + mov r0, r5 + mov r1, #0x15 + add r3, sp, #0x14 + bl OS_SNPrintf + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020972A4: .word 0x0210618C + + arm_func_start FUN_020972A8 +FUN_020972A8: ; 0x020972A8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, _0209731C ; =0x66666667 + add r4, r2, #0x4 + smull r12, r2, lr, r4 + mov r2, r2, asr #0x1 + mov r12, r4, lsr #0x1f + add r2, r12, r2 + cmp r2, #0x0 + ldr r6, _02097320 ; =0x0210619C + mov r7, #0x0 + ble _0209730C + add r4, r3, r2 + sub r4, r4, #0x1 + mov r12, #0x1f +_020972E4: + and r5, r0, r12 + ldrsb r5, [r6, r5] + mov r0, r0, lsr #0x5 + mov lr, r1, lsr #0x5 + strb r5, [r4, -r7] + add r7, r7, #0x1 + orr r0, r0, r1, lsl #0x1b + mov r1, lr + cmp r7, r2 + blt _020972E4 +_0209730C: + mov r0, #0x0 + strb r0, [r3, r2] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_0209731C: .word 0x66666667 +_02097320: .word 0x0210619C + + arm_func_start FUN_02097324 +FUN_02097324: ; 0x02097324 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_02097344 +_02097330: ; 0x02097330 + cmp r0, #0x0 + mvnne r0, #0x0 + andne r0, r4, r0 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02097344 +FUN_02097344: + stmdb sp!, {r4,lr} + sub sp, sp, #0x108 + mov r4, r1 + and r3, r4, #0x0 + mov r1, #0x0 + and r12, r0, #0x80000000 + cmp r3, r1 + cmpeq r12, r1 + addne sp, sp, #0x108 + movne r0, r1 + ldmneia sp!, {r4,pc} +_02097370: ; 0x02097370 + str r0, [sp, #0x0] + add r0, sp, #0x8 + mov r1, #0x7 + str r2, [sp, #0x4] + bl MATHi_CRC8InitTable + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x8 + bl MATH_CalcCRC8 + and r2, r0, #0x7f + mov r1, r2, asr #0x1f + mov r0, #0x0 + cmp r1, r0 + cmpeq r2, r4 + moveq r0, #0x1 + add sp, sp, #0x108 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020973B4 +FUN_020973B4: ; 0x020973B4 + ldr ip, _020973CC ; =FUN_02097344 + mov r3, r0 + mov r0, r1 + mov r1, r2 + ldr r2, [r3, #0x24] + bx r12 + .balign 4 +_020973CC: .word FUN_02097344 + + arm_func_start FUN_020973D0 +FUN_020973D0: ; 0x020973D0 + stmdb sp!, {r4,lr} + sub sp, sp, #0x108 + mov r4, r0 + str r1, [sp, #0x4] + add r0, sp, #0x8 + mov r1, #0x7 + str r4, [sp, #0x0] + bl MATHi_CRC8InitTable + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x8 + bl MATH_CalcCRC8 + and r0, r0, #0x7f + orr r1, r0, #0x0 + orr r0, r4, #0x0 + add sp, sp, #0x108 + ldmia sp!, {r4,pc} + + arm_func_start FUN_02097414 +FUN_02097414: ; 0x02097414 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020974C8 + cmp r0, #0x3 + ldmneia sp!, {r4,pc} +_02097428: ; 0x02097428 + mov r0, r4 + bl FUN_020974E0 + orr r1, r0, #0x4 + mov r0, r4 + bl FUN_0209746C + ldmia sp!, {r4,pc} + + arm_func_start FUN_02097440 +FUN_02097440: ; 0x02097440 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_020974E0 + bic r1, r0, #0x3 + mov r0, r5 + orr r1, r1, r4 + bl FUN_0209746C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_0209746C +FUN_0209746C: ; 0x0209746C + ldr ip, _0209747C ; =FUN_02097588 + ldr r3, _02097480 ; =0x001FFFFF + mov r2, #0xb + bx r12 + .balign 4 +_0209747C: .word FUN_02097588 +_02097480: .word 0x001FFFFF + + arm_func_start FUN_02097484 +FUN_02097484: ; 0x02097484 + ldr ip, _0209748C ; =FUN_020974C8 + bx r12 + .balign 4 +_0209748C: .word FUN_020974C8 + + arm_func_start FUN_02097490 +FUN_02097490: ; 0x02097490 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020974C8 + cmp r0, #0x3 + bne _020974C0 + mov r0, r4 + bl FUN_020974E0 + and r0, r0, #0x4 + cmp r0, #0x4 + moveq r0, #0x1 + movne r0, #0x0 + ldmia sp!, {r4,pc} +_020974C0: + mov r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020974C8 +FUN_020974C8: ; 0x020974C8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020974E0 + and r0, r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020974E0 +FUN_020974E0: ; 0x020974E0 + ldr r1, [r0, #0x0] + ldr r0, _020974F0 ; =0x001FFFFF + and r0, r0, r1, lsr #0xb + bx lr + .balign 4 +_020974F0: .word 0x001FFFFF + + arm_func_start FUN_020974F4 +FUN_020974F4: ; 0x020974F4 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020974FC +FUN_020974FC: ; 0x020974FC + str r1, [r0, #0x4] + str r2, [r0, #0x8] + bx lr + + arm_func_start FUN_02097508 +FUN_02097508: ; 0x02097508 + str r1, [r0, #0x8] + bx lr + + arm_func_start FUN_02097510 +FUN_02097510: ; 0x02097510 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r4, r1 + mov r1, r2 + ldr r3, _02097540 ; =0x000007FF + mov r2, r12 + mov r5, r0 + bl FUN_02097588 + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_02097540: .word 0x000007FF + + arm_func_start FUN_02097544 +FUN_02097544: + ldr r0, [r0, #0x4] + bx lr + + arm_func_start FUN_0209754C +FUN_0209754C: ; 0x0209754C + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x4] + orr r1, r1, #0x0 + orr r0, r0, #0x0 + bx lr + + arm_func_start FUN_02097560 +FUN_02097560: + ldr r0, [r0, #0x8] + bx lr + + arm_func_start FUN_02097568 +FUN_02097568: ; 0x02097568 + ldr r2, [r0, #0x0] + ldr r1, _02097584 ; =0x000007FF + ldr r0, [r0, #0x4] + and r1, r2, r1 + orr r1, r1, #0x0 + orr r0, r0, #0x0 + bx lr + .balign 4 +_02097584: .word 0x000007FF + + arm_func_start FUN_02097588 +FUN_02097588: ; 0x02097588 + mvn r12, r3 + ands r12, r1, r12 + movne r0, #0x0 + bxne lr + mvn r3, r3, lsl r2 + ldr r12, [r0, #0x0] + and r3, r12, r3 + orr r1, r3, r1, lsl r2 + str r1, [r0, #0x0] + mov r0, #0x1 + bx lr + + arm_func_start FUN_020975B4 +FUN_020975B4: ; 0x020975B4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A8850 +_020975C0: ; 0x020975C0 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020975D8 +FUN_020975D8: ; 0x020975D8 + ldr r0, _020975EC ; =0x021C8CCC + ldr r1, [r0, #0x0] + orr r1, r1, #0x2 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020975EC: .word 0x021C8CCC + + arm_func_start FUN_020975F0 +FUN_020975F0: ; 0x020975F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _02097654 ; =0x021C8CC0 + ldr r0, _02097658 ; =0x021C8CCC + ldr lr, [r1, #0x0] + ldr r3, [r0, #0x0] + ldr r12, [lr, #0x4] + ldr r2, _0209765C ; =0x021C8F04 + ldr r1, _02097660 ; =0x021C8ED0 + str r12, [r2, #0x0] + ldr r12, [lr, #0x8] + ldr r2, _02097664 ; =0x021C8EE0 + str r12, [r1, #0x0] + ldr r12, [lr, #0xc] + ldr r1, _02097668 ; =0x021C8F1C + str r12, [r2, #0x0] + ldr r12, [lr, #0x10] + orr r2, r3, #0x2 + str r12, [r1, #0x0] + ldr r3, [lr, #0x14] + str r3, [r1, #0x4] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097654: .word 0x021C8CC0 +_02097658: .word 0x021C8CCC +_0209765C: .word 0x021C8F04 +_02097660: .word 0x021C8ED0 +_02097664: .word 0x021C8EE0 +_02097668: .word 0x021C8F1C + + arm_func_start FUN_0209766C +FUN_0209766C: ; 0x0209766C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020977C0 ; =0x021C8CC0 + ldr r5, _020977C4 ; =0x021C8CD4 + ldr r4, [r0, #0x0] + mov r0, r5 + mov r1, #0x0 + mov r2, #0x30 + bl MI_CpuFill8 + ldr r0, _020977C8 ; =0x021C8CC4 + ldr r2, [r4, #0x18] + mov r1, r5 + str r2, [r1, #0x4] + ldr r12, [r4, #0x1c] + mov r2, #0x0 + ldr r3, _020977CC ; =FUN_020975B4 + ldr r0, [r0, #0x0] + str r12, [r1, #0x8] + str r3, [r1, #0x10] + str r2, [r1, #0x14] + str r2, [r1, #0x18] + str r0, [r1, #0x2c] + ldr r0, [r4, #0x24] + cmp r0, #0x0 + strne r0, [r5, #0x20] + moveq r0, #0x4000 + streq r0, [r5, #0x20] + ldr r0, [r4, #0x28] + cmp r0, #0x0 + strne r0, [r5, #0x1c] + bne _02097700 + ldr r1, _020977C0 ; =0x021C8CC0 + ldr r0, [r5, #0x20] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + blx r1 + str r0, [r5, #0x1c] +_02097700: + ldr r0, [r4, #0x30] + ldr r12, [r4, #0x34] + cmp r0, #0x0 + moveq r0, #0x240 + cmp r12, #0x0 + sub r2, r0, #0x28 + moveq r12, #0x10c0 + add r0, r12, r12, lsr #0x1f + str r2, [r5, #0x24] + ldr r1, _020977D0 ; =0x021061DC + mov r3, r0, asr #0x1 + ldr r0, _020977D4 ; =0x021C8F04 + mov r2, #0x0 + strh r12, [r1, #0x2] + strh r3, [r1, #0x4] + str r2, [r0, #0x0] + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _02097774 + ldr r0, _020977D8 ; =0x021C8CCC + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r1, _020977DC ; =FUN_020975D8 + str r2, [r5, #0x0] + ldr r0, _020977E0 ; =0x021C8CC8 + str r1, [r5, #0xc] + ldr r0, [r0, #0x0] + str r0, [r5, #0x28] + b _0209778C +_02097774: + ldr r0, _020977D8 ; =0x021C8CCC + mov r1, #0x1 + str r2, [r0, #0x0] + ldr r0, _020977E4 ; =FUN_020975F0 + str r1, [r5, #0x0] + str r0, [r5, #0xc] +_0209778C: + ldr r0, [r4, #0x2c] + cmp r0, #0x0 + moveq r0, #0xb + bl FUN_0209FC88 + ldr r0, _020977E8 ; =FUN_0209F65C + bl FUN_020A87BC + ldr r0, _020977EC ; =FUN_020996C0 + bl FUN_0209FD24 + mov r0, r5 + bl FUN_0209FD94 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020977C0: .word 0x021C8CC0 +_020977C4: .word 0x021C8CD4 +_020977C8: .word 0x021C8CC4 +_020977CC: .word FUN_020975B4 +_020977D0: .word 0x021061DC +_020977D4: .word 0x021C8F04 +_020977D8: .word 0x021C8CCC +_020977DC: .word FUN_020975D8 +_020977E0: .word 0x021C8CC8 +_020977E4: .word FUN_020975F0 +_020977E8: .word FUN_0209F65C +_020977EC: .word FUN_020996C0 + + arm_func_start FUN_020977F0 +FUN_020977F0: ; 0x020977F0 + stmdb sp!, {r4,lr} + ldr r0, _02097828 ; =0x021C8CC0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x20] + bl FUN_02097B78 + movs r4, r0 + bmi _0209781C + ldr r0, _0209782C ; =0x021061F4 + bl FUN_02097F70 + ldr r1, _02097830 ; =0x021C8CD0 + str r0, [r1, #0x0] +_0209781C: + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097828: .word 0x021C8CC0 +_0209782C: .word 0x021061F4 +_02097830: .word 0x021C8CD0 + + arm_func_start FUN_02097834 +FUN_02097834: ; 0x02097834 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _02097870 ; =0x02000BC4 + bl OSi_ReferSymbol + ldr r0, _02097874 ; =0x021C8CC0 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + str r4, [r0, #0x0] + bl FUN_0209766C + bl FUN_020977F0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097870: .word 0x02000BC4 +_02097874: .word 0x021C8CC0 + + arm_func_start FUN_02097878 +FUN_02097878: ; 0x02097878 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + add r6, sp, #0x0 + mov r4, #0x0 + mov r5, #0x1 +_02097890: + mov r0, r9 + mov r1, r6 + mov r2, r5 + bl OS_ReadMessage +_020978A0: ; 0x020978A0 + ldr r0, [sp, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r1, [r0, #0x0] + blx r1 + mov r7, r0 + bl OS_DisableInterrupts + mov r8, r0 + bl OS_DisableScheduler + mov r0, r9 + mov r1, r4 + mov r2, r4 + bl OS_ReceiveMessage +_020978DC: ; 0x020978DC + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x4] + cmp r0, #0x0 + strne r7, [r0, #0x6c] + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _02097908 + mov r1, r7 + mov r2, r4 + bl OS_SendMessage +_02097908: + ldr r0, [sp, #0x0] + bl FUN_02097A64 + bl OS_EnableScheduler + mov r0, r8 + bl OS_RestoreInterrupts + b _02097890 +_02097920: ; 0x02097920 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_0209792C +FUN_0209792C: ; 0x0209792C + stmdb sp!, {r4,lr} + mov r4, r1 + bl FUN_02097A50 + mov r1, r4 + bl FUN_02097968 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02097948 +FUN_02097948: + ldr ip, _02097954 ; =FUN_02097968 + ldr r0, [r0, #0x68] + bx r12 + .balign 4 +_02097954: .word FUN_02097968 + + arm_func_start FUN_02097958 +FUN_02097958: ; 0x02097958 + ldr ip, _02097964 ; =FUN_02097968 + ldr r0, [r0, #0x64] + bx r12 + .balign 4 +_02097964: .word FUN_02097968 + + arm_func_start FUN_02097968 +FUN_02097968: ; 0x02097968 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x2c + mov r4, r1 + ldrsb r2, [r4, #0xd] + mov r5, r0 + cmp r2, #0x1 + bne _020979BC + add r0, sp, #0x8 + add r1, sp, #0x4 + mov r2, #0x1 + bl OS_InitMessageQueue + add r2, sp, #0x8 + mov r0, r5 + mov r1, r4 + str r2, [r4, #0x8] + bl FUN_020979F8 + add r0, sp, #0x8 + add r1, sp, #0x0 + mov r2, #0x1 + bl OS_ReceiveMessage + b _020979CC +_020979BC: + mov r2, #0x0 + str r2, [r4, #0x8] + bl FUN_020979F8 +_020979C8: ; 0x020979C8 + str r0, [sp, #0x0] +_020979CC: + ldr r0, [sp, #0x0] + add sp, sp, #0x2c + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020979DC +FUN_020979DC: + stmdb sp!, {r4,lr} + mov r4, r1 + bl FUN_02097A50 + mov r1, r4 + bl FUN_020979F8 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020979F8 +FUN_020979F8: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r1 + beq _02097A14 + ldrsb r1, [r5, #0xd] + ands r1, r1, #0x1 + beq _02097A1C +_02097A14: + mov r2, #0x1 + b _02097A20 +_02097A1C: + mov r2, #0x0 +_02097A20: + mov r1, r5 + bl OS_SendMessage + movs r4, r0 + bne _02097A38 + mov r0, r5 + bl FUN_02097A64 +_02097A38: + cmp r4, #0x0 + movne r0, #0x0 + mvneq r0, #0x29 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02097A50 +FUN_02097A50: ; 0x02097A50 + ldr r1, [r0, #0x64] + cmp r1, #0x0 + ldreq r1, [r0, #0x68] + mov r0, r1 + bx lr + + arm_func_start FUN_02097A64 +FUN_02097A64: + stmdb sp!, {lr} + sub sp, sp, #0x4 + movs r1, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldr r0, _02097A94 ; =0x021C8D08 + mov r2, #0x0 + bl OS_SendMessage + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097A94: .word 0x021C8D08 + + arm_func_start FUN_02097A98 +FUN_02097A98: ; 0x02097A98 + stmdb sp!, {r4-r6,lr} + mov r4, r2 + mov r6, r0 + mov r0, r4 + mov r5, r1 + bl FUN_02097AE0 +_02097AB0: ; 0x02097AB0 + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + str r6, [r0, #0x0] + str r5, [r0, #0x4] + mov r1, #0x0 + str r1, [r0, #0x8] + ldrsb r1, [r5, #0x73] + strb r1, [r0, #0xc] + strb r4, [r0, #0xd] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02097AE0 +FUN_02097AE0: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + ldr r0, _02097B10 ; =0x021C8D08 + add r1, sp, #0x0 + bl OS_ReceiveMessage +_02097AF8: ; 0x02097AF8 + cmp r0, #0x0 + ldrne r0, [sp, #0x0] + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097B10: .word 0x021C8D08 + + arm_func_start FUN_02097B14 +FUN_02097B14: ; 0x02097B14 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _02097B6C ; =0x021C8D08 + ldr r1, [r0, #0x1c] + ldr r0, [r0, #0x14] + cmp r1, r0 + addlt sp, sp, #0x4 + mvnlt r0, #0x0 + ldmltia sp!, {lr} + bxlt lr + ldr r0, _02097B70 ; =0x021C8CC0 + ldr r1, _02097B74 ; =0x021C8D04 + ldr r2, [r0, #0x0] + ldr r0, [r1, #0x0] + ldr r1, [r2, #0x1c] + blx r1 + ldr r1, _02097B74 ; =0x021C8D04 + mov r0, #0x0 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02097B6C: .word 0x021C8D08 +_02097B70: .word 0x021C8CC0 +_02097B74: .word 0x021C8D04 + + arm_func_start FUN_02097B78 +FUN_02097B78: ; 0x02097B78 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + mov r0, #0x2c + mul r1, r4, r0 + ldr r0, _02097C08 ; =0x021C8CC0 + mov r2, r4, lsl #0x2 + add r2, r2, #0x3 + ldr r0, [r0, #0x0] + add r1, r1, #0x3 + bic r5, r2, #0x3 + bic r2, r1, #0x3 + ldr r1, [r0, #0x18] + add r0, r2, r5 + blx r1 + movs r6, r0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, _02097C0C ; =0x021C8D08 + mov r1, r6 + mov r2, r4 + bl OS_InitMessageQueue +_02097BD0: ; 0x02097BD0 + cmp r4, #0x0 + add r5, r6, r5 + ble _02097BF4 +_02097BDC: + mov r0, r5 + bl FUN_02097A64 + sub r4, r4, #0x1 + cmp r4, #0x0 + add r5, r5, #0x2c + bgt _02097BDC +_02097BF4: + ldr r1, _02097C10 ; =0x021C8D04 + mov r0, #0x0 + str r6, [r1, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02097C08: .word 0x021C8CC0 +_02097C0C: .word 0x021C8D08 +_02097C10: .word 0x021C8D04 + + arm_func_start FUN_02097C14 +FUN_02097C14: ; 0x02097C14 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r5, r2 + mov r7, r0 + mov r0, r5 + mov r6, r1 + bl FUN_02097DC4 + add r4, r7, r0 + ldrb r2, [r5, #0x3] + mov r0, r6 + mov r1, r7 + bl OS_InitMessageQueue + add r0, r6, #0xe0 + bl OS_InitMutex + ldrh r2, [r5, #0x0] + add r0, r6, #0x20 + ldr r1, _02097C88 ; =FUN_02097878 + str r2, [sp, #0x0] + ldrb r12, [r5, #0x2] + mov r2, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl OS_CreateThread + add r0, r6, #0x20 + bl OS_WakeupThreadDirect + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02097C88: .word FUN_02097878 + + arm_func_start FUN_02097C8C +FUN_02097C8C: ; 0x02097C8C + stmdb sp!, {r4,lr} + mov r4, r0 + cmp r2, #0x0 + moveq r0, #0x0 + str r0, [r1, #0x4] + mov r0, r2 + str r2, [r1, #0x0] + bl FUN_02099F6C +_02097CAC: ; 0x02097CAC + add r0, r4, r0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02097CB8 +FUN_02097CB8: ; 0x02097CB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrsb r1, [r6, #0x0] + mov r7, r0 + add r4, r7, #0x80 + strb r1, [r7, #0x73] + ldrsb r0, [r6, #0x1] + strb r0, [r7, #0x72] + ldrh r0, [r6, #0x2] + cmp r0, #0x0 + beq _02097D40 + str r4, [r7, #0x64] + ldrh r2, [r6, #0x4] + mov r1, r4 + add r0, r4, #0x114 + strh r2, [r4, #0xfc] + add r2, r6, #0x10 + mov r5, r4 + bl FUN_02097C14 + ldrh r2, [r6, #0x2] + add r1, r7, #0x3c + bl FUN_02097C8C + ldrh r2, [r6, #0x8] + add r1, r7, #0x50 + bl FUN_02097C8C + ldrh r3, [r6, #0xe] + add r1, r5, #0x100 + mov r2, #0x0 + strh r3, [r1, #0xa] + str r2, [r5, #0x110] + ldr r1, [r5, #0x110] + mov r4, r0 + str r1, [r5, #0x10c] +_02097D40: + ldrh r0, [r6, #0x6] + cmp r0, #0x0 + ldreq r0, _02097DC0 ; =0x021C8CD0 + ldreq r0, [r0, #0x0] + ldreq r0, [r0, #0x68] + streq r0, [r7, #0x68] + beq _02097DB0 + str r4, [r7, #0x68] + mov r1, r4 + str r7, [r4, #0x10c] + add r0, r4, #0x110 + add r2, r6, #0x14 + mov r5, r4 + bl FUN_02097C14 + ldrh r2, [r6, #0x6] + add r1, r7, #0x48 + bl FUN_02097C8C + ldrh r2, [r6, #0xa] + add r1, r7, #0x58 + bl FUN_02097C8C + ldrh r2, [r6, #0xc] + add r1, r4, #0xf8 + bl FUN_02097C8C + mov r1, #0x0 + str r1, [r5, #0x108] + ldr r1, [r5, #0x108] + mov r4, r0 + str r1, [r5, #0x104] +_02097DB0: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02097DC0: .word 0x021C8CD0 + + arm_func_start FUN_02097DC4 +FUN_02097DC4: ; 0x02097DC4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3] + mov r0, r0, lsl #0x2 + bl FUN_02099F6C + mov r4, r0 + ldrh r0, [r5, #0x0] + bl FUN_02099F6C +_02097DE8: ; 0x02097DE8 + add r0, r4, r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02097DF8 +FUN_02097DF8: ; 0x02097DF8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x2] + mov r4, #0x80 + cmp r0, #0x0 + beq _02097E38 + add r4, r4, #0x114 + bl FUN_02099F6C + add r4, r4, r0 + ldrh r0, [r5, #0x8] + bl FUN_02099F6C + add r4, r4, r0 + add r0, r5, #0x10 + bl FUN_02097DC4 + add r4, r4, r0 +_02097E38: + ldrh r0, [r5, #0x6] + cmp r0, #0x0 + beq _02097E74 + add r4, r4, #0x110 + bl FUN_02099F6C + add r4, r4, r0 + ldrh r0, [r5, #0xa] + bl FUN_02099F6C + add r4, r4, r0 + ldrh r0, [r5, #0xc] + bl FUN_02099F6C + add r4, r4, r0 + add r0, r5, #0x14 + bl FUN_02097DC4 + add r4, r4, r0 +_02097E74: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02097E84 +FUN_02097E84: ; 0x02097E84 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_02097DF8 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02097EF4 ; =0x021C8CC0 + mov r5, r0 + ldr r1, [r1, #0x0] + mov r0, r4 + ldr r1, [r1, #0x18] + blx r1 + movs r6, r0 + beq _02097EDC + mov r2, r4 + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r7 + bl FUN_02097CB8 + mov r0, r6 + bl FUN_0209A094 +_02097EDC: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02097EF4: .word 0x021C8CC0 + + arm_func_start FUN_02097EF8 +FUN_02097EF8: ; 0x02097EF8 + stmdb sp!, {r4,lr} + ldr r4, [r0, #0x4] + mov r0, r4 + bl FUN_0209CC28 + ldrsb r0, [r4, #0x73] + ldr r1, [r4, #0x68] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _02097F58 +_02097F1C: + b _02097F30 +_02097F20: + b _02097F40 +_02097F24: + b _02097F54 +_02097F28: + b _02097F58 +_02097F2C: + b _02097F30 +_02097F30: + add r0, r1, #0x20 + bl FUN_0209CB0C + bl FUN_0209CB44 + b _02097F58 +_02097F40: + bl FUN_0209CB44 + bl FUN_0209CBE8 + ldr r0, _02097F6C ; =FUN_02098550 + bl FUN_0209CAA8 +_02097F50: ; 0x02097F50 + b _02097F58 +_02097F54: + bl FUN_0209CBE8 +_02097F58: + mov r0, #0x1 + strh r0, [r4, #0x70] + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097F6C: .word FUN_02098550 + + arm_func_start FUN_02097F70 +FUN_02097F70: ; 0x02097F70 + stmdb sp!, {r4,lr} + bl FUN_02097E84 + movs r4, r0 + mvneq r0, #0x30 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _02097FB0 ; =FUN_02097EF8 + mov r1, r4 + mov r2, #0x1 + bl FUN_02097A98 + mov r1, r0 + mov r0, r4 + bl FUN_0209792C + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02097FB0: .word FUN_02097EF8 + + arm_func_start FUN_02097FB4 +FUN_02097FB4: ; 0x02097FB4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + ldr r4, [r6, #0x4] + ldr r5, [r4, #0x64] + add r0, r5, #0xe0 + bl OS_LockMutex + mov r1, #0x0 + ldrh r0, [r6, #0x10] + mov r2, r1 + bl FUN_0209CB78 + bl FUN_0209CA54 + mov r2, #0x0 + add r0, sp, #0x0 + add r1, sp, #0x4 + str r2, [r5, #0xf8] + bl FUN_0209C8E0 + ldrh r2, [sp, #0x0] + ldr r1, [r6, #0x14] + strh r2, [r1, #0x0] + ldr r1, [r6, #0x18] + str r0, [r1, #0x0] + ldrsh r1, [r4, #0x70] + add r0, r5, #0xe0 + orr r1, r1, #0x4 + strh r1, [r4, #0x70] + bl OS_UnlockMutex +_02098020: ; 0x02098020 + mov r0, #0x0 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02098030 +FUN_02098030: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_02099FA8 +_02098044: ; 0x02098044 + cmp r0, #0x0 + mvnne r0, #0x1b + ldmneia sp!, {r4-r6,lr} + bxne lr + cmp r6, #0x0 + mov r1, #0x0 + beq _0209806C + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_0209806C: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x2 + mvnne r0, #0x1b + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrsb r0, [r6, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020980A8 + cmp r0, #0x4 + movne r1, #0x0 +_020980A8: + cmp r1, #0x0 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrsb r2, [r6, #0x72] + cmp r2, #0x1 + mvnne r0, #0x5 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrh r0, [r6, #0x74] + cmp r0, #0x0 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, _0209811C ; =FUN_02097FB4 + mov r1, r6 + bl FUN_02097A98 + mov r1, r0 + ldrh r2, [r6, #0x74] + mov r0, r6 + strh r2, [r1, #0x10] + str r5, [r1, #0x14] + str r4, [r1, #0x18] + ldrsh r2, [r6, #0x70] + orr r2, r2, #0x2 + strh r2, [r6, #0x70] + bl FUN_02097958 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209811C: .word FUN_02097FB4 + + arm_func_start FUN_02098120 +FUN_02098120: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_02099FA8 +_02098138: ; 0x02098138 + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r6, #0x0 + mov r1, #0x0 + beq _02098164 + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02098164: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x2 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrsb r0, [r6, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020981A8 + cmp r0, #0x4 + movne r1, #0x0 +_020981A8: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrsb r0, [r6, #0x72] + cmp r0, #0x1 + addne sp, sp, #0x4 + mvnne r0, #0x5 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldr r0, _02098228 ; =0x021061DC + bl FUN_02097F70 + movs r7, r0 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r7,lr} + bxmi lr + ldrh r1, [r6, #0x74] + bl FUN_020984B4 +_020981F4: ; 0x020981F4 + cmp r0, #0x0 + addlt sp, sp, #0x4 + ldmltia sp!, {r4-r7,lr} + bxlt lr + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl FUN_02098030 +_02098214: ; 0x02098214 + cmp r0, #0x0 + movge r0, r7 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02098228: .word 0x021061DC + + arm_func_start FUN_0209822C +FUN_0209822C: ; 0x0209822C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_02099FA8 +_02098238: ; 0x02098238 + cmp r0, #0x0 + mvnne r0, #0x1b + ldmneia sp!, {r4,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _02098260 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02098260: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x2 + mvnne r0, #0x1b + ldmneia sp!, {r4,lr} + bxne lr + ldrsb r0, [r4, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _0209829C + cmp r0, #0x4 + movne r1, #0x0 +_0209829C: + cmp r1, #0x0 + mvneq r0, #0x1b + ldmeqia sp!, {r4,lr} + bxeq lr + ldrsb r0, [r4, #0x72] + cmp r0, #0x1 + moveq r0, #0x0 + mvnne r0, #0x5 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020982C4 +FUN_020982C4: ; 0x020982C4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x4] + mov r5, #0x0 + ldr r6, [r4, #0x64] + add r0, r6, #0xe0 + bl OS_LockMutex + ldrh r0, [r7, #0x10] + ldrh r1, [r7, #0x12] + ldr r2, [r7, #0x14] + bl FUN_0209CB78 + mov r0, r5 + str r0, [r6, #0xf8] + ldrsb r0, [r7, #0xc] + cmp r0, #0x0 + beq _02098310 + cmp r0, #0x4 + bne _02098318 +_02098310: + bl FUN_0209C934 + mov r5, r0 +_02098318: + add r0, r6, #0xe0 + bl OS_UnlockMutex +_02098320: ; 0x02098320 + cmp r5, #0x0 + ldrnesh r1, [r4, #0x70] + mvnne r0, #0x4b + moveq r0, #0x0 + orrne r1, r1, #0x40 + strneh r1, [r4, #0x70] + ldreqsh r1, [r4, #0x70] + orreq r1, r1, #0x4 + streqh r1, [r4, #0x70] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_02098350 +FUN_02098350: ; 0x02098350 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrsb r2, [r4, #0x72] + ldr r0, _020983AC ; =FUN_020982C4 + mov r1, r4 + bl FUN_02097A98 + movs r1, r0 + mvneq r0, #0x20 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrh r2, [r4, #0x74] + mov r0, r4 + strh r2, [r1, #0x10] + ldrh r2, [r4, #0x76] + strh r2, [r1, #0x12] + ldr r2, [r4, #0x78] + str r2, [r1, #0x14] + ldrsh r2, [r4, #0x70] + orr r2, r2, #0x2 + strh r2, [r4, #0x70] + bl FUN_02097958 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020983AC: .word FUN_020982C4 + + arm_func_start FUN_020983B0 +FUN_020983B0: ; 0x020983B0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_02099FA8 +_020983C4: ; 0x020983C4 + cmp r0, #0x0 + bne _020983D8 + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x8 + beq _020983E4 +_020983D8: + mvn r0, #0x1b + ldmia sp!, {r4-r6,lr} + bx lr +_020983E4: + cmp r6, #0x0 + mov r1, #0x0 + beq _020983FC + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020983FC: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrsb r0, [r6, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _02098424 + cmp r0, #0x4 + movne r1, #0x0 +_02098424: + cmp r1, #0x0 + beq _0209849C + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x4 + beq _02098450 + ldrsb r0, [r6, #0x72] + cmp r0, #0x1 + mvneq r0, #0x1d + movne r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr +_02098450: + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x2 + beq _02098478 + ldrsh r0, [r6, #0x70] + ands r0, r0, #0x40 + ldrne r0, [r6, #0x6c] + ldreq r0, _020984B0 ; =0x021061C0 + ldreq r0, [r0, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr +_02098478: + strh r5, [r6, #0x76] + mov r0, r6 + str r4, [r6, #0x78] + bl FUN_02098350 + ldrsb r1, [r6, #0x72] + cmp r1, #0x1 + mvnne r0, #0x19 + ldmia sp!, {r4-r6,lr} + bx lr +_0209849C: + strh r5, [r6, #0x76] + str r4, [r6, #0x78] + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020984B0: .word 0x021061C0 + + arm_func_start FUN_020984B4 +FUN_020984B4: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + mov r5, r1 + bl FUN_02099FA8 +_020984C8: ; 0x020984C8 + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _020984F4 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020984F4: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x2 + addne sp, sp, #0x4 + mvnne r0, #0x6 + ldmneia sp!, {r4-r5,lr} + bxne lr + strh r5, [r4, #0x74] + ldrsb r0, [r4, #0x73] + cmp r0, #0x1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r4 + bl FUN_02098350 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02098550 +FUN_02098550: ; 0x02098550 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r2 + ldr r6, [r7, #0x64] + mov r9, r0 + mov r8, r1 + bl OS_DisableInterrupts + add r1, r6, #0x100 + ldrh r2, [r1, #0x8] + ldrh r1, [r1, #0xa] + mov r4, r0 + add r0, r2, r8 + cmp r1, r0 + blo _02098618 + ldr r1, _02098668 ; =0x021C8CC0 + add r0, r8, #0xc + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + blx r1 + movs r5, r0 + beq _02098604 + add r1, r6, #0x100 + ldrh r3, [r1, #0x8] + mov r2, #0x0 + mov r0, r9 + add r3, r3, r8 + strh r3, [r1, #0x8] + str r2, [r5, #0x0] + strh r8, [r5, #0x4] + ldrh r3, [r7, #0x18] + mov r2, r8 + add r1, r5, #0xc + strh r3, [r5, #0x6] + ldr r3, [r7, #0x1c] + str r3, [r5, #0x8] + bl MI_CpuCopy8 + ldr r0, [r6, #0x100] + cmp r0, #0x0 + ldrne r0, [r6, #0x100] + strne r5, [r0, #0x0] + str r5, [r6, #0x100] + ldr r0, [r6, #0x104] + cmp r0, #0x0 + streq r5, [r6, #0x104] + b _02098628 +_02098604: + ldr r0, _0209866C ; =0x021C8D28 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + b _02098628 +_02098618: + ldr r0, _0209866C ; =0x021C8D28 + ldr r1, [r0, #0x4] + add r1, r1, #0x1 + str r1, [r0, #0x4] +_02098628: + ldrh r0, [r7, #0x74] + cmp r0, #0x0 + ldreqh r0, [r7, #0xa] + streqh r0, [r7, #0x74] + ldrh r1, [r7, #0x1a] + add r0, r6, #0x10c + strh r1, [r7, #0x18] + ldr r1, [r7, #0x20] + str r1, [r7, #0x1c] + bl OS_WakeupThread + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_02098668: .word 0x021C8CC0 +_0209866C: .word 0x021C8D28 + + arm_func_start FUN_02098670 +FUN_02098670: ; 0x02098670 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r9, [r10, #0x64] + str r1, [sp, #0x0] + ldr r0, [r9, #0x104] + str r2, [sp, #0x4] + str r3, [sp, #0x8] + bl OS_DisableInterrupts + ldr r8, [r9, #0x104] + str r0, [sp, #0xc] + cmp r8, #0x0 + bne _02098710 + ldr r0, [sp, #0x3c] + and r7, r0, #0x1 + add r6, r9, #0x10c + mov r4, #0x1 + mov r5, #0x0 +_020986B8: + cmp r7, #0x0 + mvneq r11, #0x5 + beq _02098710 + mov r0, r6 + bl OS_SleepThread + mov r0, r10 + bl FUN_02099FA8 +_020986D4: ; 0x020986D4 + cmp r0, #0x0 + bne _020986FC + mov r1, r5 + cmp r10, #0x0 + beq _020986F4 + ldrsh r0, [r10, #0x70] + ands r0, r0, #0x1 + movne r1, r4 +_020986F4: + cmp r1, #0x0 + bne _02098704 +_020986FC: + mvn r11, #0x37 + b _02098710 +_02098704: + ldr r8, [r9, #0x104] + cmp r8, #0x0 + beq _020986B8 +_02098710: + cmp r8, #0x0 + beq _020987A4 + ldrh r1, [r8, #0x4] + ldr r0, [sp, #0x4] + cmp r0, r1 + strgt r1, [sp, #0x4] + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + add r0, r8, #0xc + bl MI_CpuCopy8 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + ldrneh r1, [r8, #0x6] + strneh r1, [r0, #0x0] + ldr r1, [sp, #0x38] + cmp r1, #0x0 + ldrne r0, [r8, #0x8] + strne r0, [r1, #0x0] + ldrsb r0, [r9, #0xfe] + ldrh r11, [r8, #0x4] + cmp r0, #0x0 + bne _020987A4 + ldr r0, [r8, #0x0] + ldr r1, _020987BC ; =0x021C8CC0 + str r0, [r9, #0x104] + ldr r0, [r8, #0x0] + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r9, #0x100] + ldr r1, [r1, #0x0] + mov r0, r8 + ldr r1, [r1, #0x1c] + blx r1 + add r0, r9, #0x100 + ldrh r1, [r0, #0x8] + sub r1, r1, r11 + strh r1, [r0, #0x8] +_020987A4: + ldr r0, [sp, #0xc] + bl OS_RestoreInterrupts + mov r0, r11 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020987BC: .word 0x021C8CC0 + + arm_func_start FUN_020987C0 +FUN_020987C0: ; 0x020987C0 + stmdb sp!, {r4-r6,lr} + ldr r6, [r0, #0x64] + bl OS_DisableInterrupts + ldr r4, [r6, #0xf8] + mov r5, r0 + cmp r4, #0x0 + beq _020987EC + mov r1, #0x0 + mov r0, r4 + str r1, [r6, #0xf8] + bl FUN_0209C52C +_020987EC: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02098800 +FUN_02098800: ; 0x02098800 + ldr ip, _0209880C ; =FUN_020987C0 + ldr r0, [r0, #0x4] + bx r12 + .balign 4 +_0209880C: .word FUN_020987C0 + + arm_func_start FUN_02098810 +FUN_02098810: + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x64] + ldrh r0, [r1, #0xfc] + ldr r1, [r1, #0xf8] + cmp r1, r0 + movlt r0, #0x0 + ldmltia sp!, {r4,lr} + bxlt lr + ldr r0, _02098864 ; =FUN_02098800 + mov r1, r4 + mov r2, #0x0 + bl FUN_02097A98 + movs r1, r0 + mvneq r0, #0x20 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + bl FUN_02097958 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02098864: .word FUN_02098800 + + arm_func_start FUN_02098868 +FUN_02098868: ; 0x02098868 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + ldr r9, [r0, #0x4] + ldr r1, [r0, #0x10] + ldr r8, [r9, #0x64] + str r1, [sp, #0x4] + ldr r1, [r0, #0x18] + ldr r10, [r0, #0x14] + ldr r0, [r0, #0x1c] + ldr r7, [r8, #0xf8] + str r1, [sp, #0x8] + str r0, [sp, #0xc] + add r11, sp, #0x10 + mov r5, #0x0 + mov r6, #0x1 + mov r4, #0xa +_020988A8: + mov r0, r11 + bl FUN_0209C638 +_020988B0: ; 0x020988B0 + cmp r0, #0x0 + beq _02098904 + ldr r1, [sp, #0x10] + sub r1, r1, r7 + cmp r1, #0x0 + bgt _02098904 + ldrsb r0, [r9, #0x73] + mov r1, r6 + cmp r0, #0x0 + beq _020988E0 + cmp r0, #0x4 + movne r1, r5 +_020988E0: + cmp r1, #0x0 + beq _020988F8 + ldrb r0, [r9, #0x8] + cmp r0, #0x4 + movne r0, #0x0 + bne _02098904 +_020988F8: + mov r0, r4 + bl OS_Sleep + b _020988A8 +_02098904: + ldrsb r1, [r9, #0x73] + cmp r1, #0x4 + bne _02098954 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r1, [sp, #0x10] + cmp r10, r1 + movhi r10, r1 + ldr r1, [sp, #0x4] + mov r2, r10 + bl MI_CpuCopy8 + mov r0, r10 + bl FUN_0209C52C + add sp, sp, #0x14 + mov r0, r10 + ldmia sp!, {r4-r11,lr} + bx lr +_02098954: + cmp r0, #0x0 + moveq r4, #0x0 + beq _02098980 + ldr r4, [sp, #0xc] + ldr r1, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r0, r9 + mov r2, r10 + str r4, [sp, #0x0] + bl FUN_02098AA4 + mov r4, r0 +_02098980: + cmp r4, #0x0 + addle sp, sp, #0x14 + movle r0, r4 + ldmleia sp!, {r4-r11,lr} + bxle lr + ldrh r0, [r8, #0xfc] + ldr r1, [r8, #0xf8] + cmp r1, r0 + blt _020989AC + mov r0, r9 + bl FUN_020987C0 +_020989AC: + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_020989BC +FUN_020989BC: ; 0x020989BC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + ldr r0, _02098A10 ; =FUN_02098868 + mov r1, r7 + mov r2, #0x1 + mov r4, r3 + bl FUN_02097A98 + mov r1, r0 + str r6, [r1, #0x10] + str r5, [r1, #0x14] + ldr r2, [sp, #0x18] + str r4, [r1, #0x18] + mov r0, r7 + str r2, [r1, #0x1c] + bl FUN_02097958 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02098A10: .word FUN_02098868 + + arm_func_start FUN_02098A14 +FUN_02098A14: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x64] + ldr r5, [r0, #0xc4] + ldr r4, [r0, #0xf8] + ldr r0, [r5, #0x44] + subs lr, r0, r4 + bmi _02098A78 + ldrh r12, [r5, #0xa] + ldr r0, [sp, #0x10] + cmp lr, #0x0 + strh r12, [r2, #0x0] + ldrh r2, [r5, #0x18] + strh r2, [r3, #0x0] + ldr r2, [r5, #0x1c] + str r2, [r0, #0x0] + str lr, [r1, #0x0] + bne _02098A90 + ldrb r0, [r5, #0x8] + cmp r0, #0x4 + beq _02098A90 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_02098A78: + mvn r0, #0x0 + str r0, [r1, #0x0] + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_02098A90: + ldr r0, [r5, #0x40] + add r0, r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_02098AA4 +FUN_02098AA4: ; 0x02098AA4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x14 + mov r9, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl OS_DisableInterrupts + add r1, sp, #0xc + mov r5, r0 + str r1, [sp, #0x0] + add r1, sp, #0x8 + mov r0, r9 + add r2, sp, #0x4 + add r3, sp, #0x6 + bl FUN_02098A14 +_02098AE0: ; 0x02098AE0 + cmp r0, #0x0 + beq _02098B48 + ldr r4, [sp, #0x8] + cmp r4, #0x0 + mvneq r4, #0x5 + beq _02098B64 + ldrsb r1, [r9, #0x73] + cmp r7, r4 + movgt r7, r4 + mov r2, #0x1 + cmp r1, #0x0 + beq _02098B18 + cmp r1, #0x4 + movne r2, #0x0 +_02098B18: + cmp r2, #0x0 + mov r1, r8 + mov r2, r7 + movne r4, r7 + bl MI_CpuCopy8 + ldr r1, [r9, #0x64] + ldrsb r0, [r1, #0xfe] + cmp r0, #0x0 + ldreq r0, [r1, #0xf8] + addeq r0, r0, r4 + streq r0, [r1, #0xf8] + b _02098B64 +_02098B48: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + ldrsh r0, [r9, #0x70] + moveq r4, #0x0 + mvnne r4, #0x1b + bic r0, r0, #0x6 + strh r0, [r9, #0x70] +_02098B64: + cmp r4, #0x0 + blt _02098B9C + cmp r6, #0x0 + beq _02098B8C + ldr r1, [sp, #0x30] + cmp r1, #0x0 + ldrneh r0, [sp, #0x6] + strneh r0, [r6, #0x0] + ldrne r0, [sp, #0xc] + strne r0, [r1, #0x0] +_02098B8C: + ldrh r0, [r9, #0x74] + cmp r0, #0x0 + ldreqh r0, [sp, #0x4] + streqh r0, [r9, #0x74] +_02098B9C: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_02098BB4 +FUN_02098BB4: ; 0x02098BB4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldrsb r12, [r7, #0x73] + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r12, #0x4 + bne _02098BF0 + ldr r4, [sp, #0x18] + str r4, [sp, #0x0] + bl FUN_020989BC + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_02098BF0: + ldr r12, [sp, #0x18] + str r12, [sp, #0x0] + bl FUN_02098AA4 + mvn r1, #0x5 + cmp r0, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldr r1, [sp, #0x1c] + ands r1, r1, #0x1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r12, [sp, #0x18] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020989BC + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_02098C4C +FUN_02098C4C: ; 0x02098C4C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x28] + mov r7, r0 + ands r0, r5, #0x2 + ldr r5, [r7, #0x64] + beq _02098C74 + cmp r5, #0x0 + movne r6, #0x1 + bne _02098C78 +_02098C74: + mov r6, #0x0 +_02098C78: + cmp r6, #0x0 + ldrnesb r4, [r5, #0xfe] + movne r0, #0x1 + strneb r0, [r5, #0xfe] + ldrsb r0, [r7, #0x73] + cmp r0, #0x1 + bne _02098CB4 + ldr r0, [sp, #0x20] + ldr r12, [sp, #0x24] + str r0, [sp, #0x0] + mov r0, r7 + str r12, [sp, #0x4] + bl FUN_02098670 + mov r8, r0 + b _02098CDC +_02098CB4: + ldr r0, [sp, #0x20] + ldr r12, [sp, #0x24] + str r0, [sp, #0x0] + mov r0, r7 + str r12, [sp, #0x4] + bl FUN_02098BB4 + movs r8, r0 + bmi _02098CDC + mov r0, r7 + bl FUN_02098810 +_02098CDC: + cmp r6, #0x0 + strneb r4, [r5, #0xfe] + mov r0, r8 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_02098CF4 +FUN_02098CF4: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r9, r0 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl FUN_02099FA8 +_02098D10: ; 0x02098D10 + cmp r0, #0x0 + addne sp, sp, #0xc + mvnne r0, #0x1b + ldmneia sp!, {r4-r9,lr} + bxne lr + ldr r0, [sp, #0x2c] + ands r0, r0, #0x4 + bne _02098D3C + ldrsb r0, [r9, #0x72] + cmp r0, #0x0 + bne _02098D5C +_02098D3C: + ldrsb r0, [r9, #0x73] + cmp r0, #0x4 + addeq sp, sp, #0xc + mvneq r0, #0x1b + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r4, #0x0 + b _02098D78 +_02098D5C: + bl OS_GetProcMode + cmp r0, #0x12 + addeq sp, sp, #0xc + mvneq r0, #0x1b + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r4, #0x1 +_02098D78: + cmp r9, #0x0 + mov r1, #0x0 + beq _02098D90 + ldrsh r0, [r9, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02098D90: + cmp r1, #0x0 + addeq sp, sp, #0xc + mvneq r0, #0x26 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldrsb r0, [r9, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _02098DBC + cmp r0, #0x4 + movne r1, #0x0 +_02098DBC: + cmp r1, #0x0 + beq _02098DEC + ldrsh r0, [r9, #0x70] + ands r0, r0, #0x4 + beq _02098DDC + ldrsh r0, [r9, #0x70] + ands r0, r0, #0x8 + beq _02098DEC +_02098DDC: + add sp, sp, #0xc + mvn r0, #0x37 + ldmia sp!, {r4-r9,lr} + bx lr +_02098DEC: + ands r0, r4, #0x1 + ldr r5, [r9, #0x64] + bne _02098E18 + add r0, r5, #0xe0 + bl OS_TryLockMutex +_02098E00: ; 0x02098E00 + cmp r0, #0x0 + bne _02098E20 + add sp, sp, #0xc + mvn r0, #0x5 + ldmia sp!, {r4-r9,lr} + bx lr +_02098E18: + add r0, r5, #0xe0 + bl OS_LockMutex +_02098E20: + ldr r0, [sp, #0x28] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x0] + str r4, [sp, #0x4] + mov r0, r9 + mov r1, r8 + mov r2, r7 + mov r3, r6 + str r12, [sp, #0x8] + bl FUN_02098C4C + mov r4, r0 + add r0, r5, #0xe0 + bl OS_UnlockMutex + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_02098E64 +FUN_02098E64: ; 0x02098E64 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r2 + ldr r5, [r6, #0x14] + ldr r4, [r6, #0x1c] + cmp r5, r1 + mov r7, r0 + movgt r5, r1 + movgt r4, #0x0 + bgt _02098E98 + sub r0, r1, r5 + cmp r4, r0 + movgt r4, r0 +_02098E98: + cmp r5, #0x0 + ble _02098EC8 + ldr r0, [r6, #0x10] + mov r1, r7 + mov r2, r5 + bl MI_CpuCopy8 + ldr r0, [r6, #0x10] + add r0, r0, r5 + str r0, [r6, #0x10] + ldr r0, [r6, #0x14] + sub r0, r0, r5 + str r0, [r6, #0x14] +_02098EC8: + cmp r4, #0x0 + ble _02098EF8 + ldr r0, [r6, #0x18] + mov r2, r4 + add r1, r7, r5 + bl MI_CpuCopy8 + ldr r0, [r6, #0x18] + add r0, r0, r4 + str r0, [r6, #0x18] + ldr r0, [r6, #0x1c] + sub r0, r0, r4 + str r0, [r6, #0x1c] +_02098EF8: + add r0, r5, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_02098F08 +FUN_02098F08: ; 0x02098F08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _02098FBC ; =0x021D3498 + mov r4, r0 + ldr r0, [r1, #0x4] + ldr r5, [r0, #0xa4] + bl OS_DisableInterrupts +_02098F24: ; 0x02098F24 + cmp r5, #0x0 + beq _02098F74 + ldrh r3, [r5, #0x2e] + cmp r3, #0x0 + beq _02098F64 + ldrh r2, [r5, #0x2c] + cmp r2, #0x0 + beq _02098F64 + ldr r1, _02098FC0 ; =0x021C8CD4 + cmp r3, r2 + ldr r1, [r1, #0x24] + movgt r3, r2 + cmp r3, r1 + movgt r3, r1 + mov r5, r3, lsl #0x1 + b _02098F80 +_02098F64: + ldr r1, _02098FC0 ; =0x021C8CD4 + ldr r1, [r1, #0x24] + mov r5, r1, lsl #0x1 + b _02098F80 +_02098F74: + ldr r1, _02098FC0 ; =0x021C8CD4 + ldr r1, [r1, #0x24] + mov r5, r1, lsl #0x1 +_02098F80: + bl OS_RestoreInterrupts +_02098F84: ; 0x02098F84 + cmp r5, #0x0 + ble _02098FAC + mov r0, r4 + mov r1, r5 + bl _s32_div_f +_02098F98: ; 0x02098F98 + cmp r0, #0x0 + mulgt r0, r5, r0 + addgt sp, sp, #0x4 + ldmgtia sp!, {r4-r5,lr} + bxgt lr +_02098FAC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02098FBC: .word 0x021D3498 +_02098FC0: .word 0x021C8CD4 + + arm_func_start FUN_02098FC4 +FUN_02098FC4: ; 0x02098FC4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldr r7, [r8, #0x4] + mov r4, #0x0 + ldrsb r0, [r7, #0x73] + ldr r6, [r7, #0x68] + mov r1, #0x1 + cmp r0, #0x0 + beq _02098FF4 + cmp r0, #0x4 + movne r1, r4 +_02098FF4: + cmp r1, #0x0 + beq _02099008 + ldrsh r0, [r7, #0x70] + ands r0, r0, #0x4 + beq _020990DC +_02099008: + ldr r2, [r8, #0x28] + cmp r2, #0x0 + beq _02099020 + ldrh r0, [r8, #0x24] + ldrh r1, [r8, #0x26] + bl FUN_0209CB78 +_02099020: + ldrsb r1, [r7, #0x73] + mov r0, #0x1 + cmp r1, #0x0 + beq _02099038 + cmp r1, #0x4 + movne r0, #0x0 +_02099038: + cmp r0, #0x0 + movne r2, #0x36 + moveq r2, #0x2a + ldr r0, [r7, #0x4c] + cmp r1, #0x0 + add r5, r0, r2 + beq _0209905C + cmp r1, #0x4 + bne _02099070 +_0209905C: + ldr r0, [r7, #0x48] + sub r0, r0, r2 + bl FUN_02098F08 + mov r9, r0 + b _02099078 +_02099070: + ldr r0, [r7, #0x48] + sub r9, r0, r2 +_02099078: + mov r0, r5 + mov r1, r9 + mov r2, r8 + bl FUN_02098E64 + mov r1, r0 + cmp r1, #0x0 + ble _020990E0 + mov r0, r5 + bl FUN_0209C030 +_0209909C: ; 0x0209909C + cmp r0, #0x0 + bgt _020990D4 + ldrsb r0, [r7, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020990BC + cmp r0, #0x4 + movne r1, #0x0 +_020990BC: + cmp r1, #0x0 + ldrnesh r0, [r7, #0x70] + mvn r4, #0x4b + bicne r0, r0, #0xe + strneh r0, [r7, #0x70] + b _020990E0 +_020990D4: + add r4, r4, r0 + b _02099078 +_020990DC: + mvn r4, #0x4b +_020990E0: + ldrh r2, [r8, #0x20] + add r1, r6, #0x100 + add r0, r6, #0x104 + strh r2, [r1, #0x2] + bl OS_WakeupThread + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_02099104 +FUN_02099104: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r6, [r9, #0x68] + mov r4, r1 + mov r8, r2 + ldr r1, [r6, #0x10c] + ldr r2, [sp, #0x28] + ldr r0, _0209929C ; =FUN_02098FC4 + mov r7, r3 + bl FUN_02097A98 + movs r5, r0 + addeq sp, sp, #0x4 + mvneq r0, #0x20 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r0, [sp, #0x28] + ands r0, r0, #0x1 + beq _02099164 + ldrsb r0, [r9, #0x73] + cmp r0, #0x1 + movne r0, #0x3 + strneb r0, [r5, #0xd] + bne _0209916C +_02099164: + mov r0, #0x0 + strb r0, [r5, #0xd] +_0209916C: + ldr r2, [r6, #0xf8] + add r1, r7, r8 + cmp r1, r2 + ldr r3, [r6, #0xfc] + bge _020991A0 + add r0, r3, r7 + str r0, [r5, #0x10] + str r8, [r5, #0x14] + mov r0, #0x0 + str r0, [r5, #0x18] + mov r7, r1 + str r0, [r5, #0x1c] + b _020991D8 +_020991A0: + add r0, r3, r7 + str r0, [r5, #0x10] + sub r0, r2, r7 + str r0, [r5, #0x14] + str r3, [r5, #0x18] + ldr r0, [r5, #0x14] + sub r0, r8, r0 + str r0, [r5, #0x1c] + ldr r7, [r5, #0x1c] + ldr r0, [r5, #0x14] + ldr r1, [r5, #0x18] + mov r2, r7 + add r0, r4, r0 + bl MI_CpuCopy8 +_020991D8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r4 + bl MI_CpuCopy8 + add r0, r6, #0x100 + ldrh r4, [r0, #0x0] + strh r7, [r5, #0x20] + ldrh r1, [r5, #0x20] + strh r1, [r0, #0x0] + ldrsb r0, [r9, #0x73] + cmp r0, #0x1 + bne _02099268 + ldrh r0, [r9, #0x74] + cmp r0, #0x0 + bne _02099224 + bl FUN_0209CC8C + strh r0, [r9, #0x74] + ldrh r0, [r9, #0x74] + strh r0, [r9, #0xa] +_02099224: + ldrh r0, [r9, #0x74] + strh r0, [r5, #0x24] + ldr r1, [r9, #0x78] + cmp r1, #0x0 + beq _02099244 + ldr r0, [sp, #0x24] + cmp r0, #0x0 + beq _02099258 +_02099244: + ldr r1, [sp, #0x24] + ldrh r0, [sp, #0x20] + str r1, [r5, #0x28] + strh r0, [r5, #0x26] + b _02099270 +_02099258: + str r1, [r5, #0x28] + ldrh r0, [r9, #0x76] + strh r0, [r5, #0x26] + b _02099270 +_02099268: + mov r0, #0x0 + str r0, [r5, #0x28] +_02099270: + ldr r0, [r6, #0x10c] + mov r1, r5 + bl FUN_02097948 +_0209927C: ; 0x0209927C + cmp r0, #0x0 + addne r0, r6, #0x100 + movne r8, #0x0 + strneh r4, [r0, #0x0] + mov r0, r8 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0209929C: .word FUN_02098FC4 + + arm_func_start FUN_020992A0 +FUN_020992A0: + ldr r2, [r0, #0x68] + add r0, r2, #0x100 + ldrh r1, [r0, #0x0] + ldrh r0, [r0, #0x2] + ldr r2, [r2, #0xf8] + sub r0, r0, r1 + subs r0, r0, #0x1 + addmi r0, r0, r2 + bx lr + + arm_func_start FUN_020992C4 +FUN_020992C4: ; 0x020992C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + mov r9, r1 + mov r8, r2 + cmp r8, r9 + mov r11, r3 + ldr r7, [r10, #0x68] + movgt r8, r9 + bl OS_DisableInterrupts + ldr r1, [sp, #0x28] + str r0, [sp, #0x0] + and r5, r1, #0x1 + add r4, r7, #0x104 +_020992FC: + mov r0, r10 + bl FUN_020992A0 + mov r6, r0 + cmp r6, r8 + blt _02099328 + add r0, r7, #0x100 + ldrh r0, [r0, #0x0] + cmp r6, r9 + movge r6, r9 + str r0, [r11, #0x0] + b _02099340 +_02099328: + cmp r5, #0x0 + moveq r6, #0x0 + beq _02099340 + mov r0, r4 + bl OS_SleepThread + b _020992FC +_02099340: + ldr r0, [sp, #0x0] + bl OS_RestoreInterrupts + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02099358 +FUN_02099358: ; 0x02099358 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + mov r10, r0 + ldr r4, [r10, #0x68] + ldrsb r0, [r10, #0x73] + ldr r4, [r4, #0x10c] + mov r9, r1 + cmp r0, #0x1 + ldr r0, [r4, #0x48] + mov r8, r2 + str r3, [sp, #0xc] + ldr r7, [sp, #0x40] + ldr r6, [sp, #0x44] + mov r4, #0x0 + bne _020993B4 + sub r0, r0, #0x2a + cmp r8, r0 + addgt sp, sp, #0x1c + mvngt r0, #0x22 + ldmgtia sp!, {r4-r11,lr} + bxgt lr + str r8, [sp, #0x10] + b _020993C4 +_020993B4: + sub r0, r0, #0x36 + str r0, [sp, #0x10] + cmp r8, r0 + strle r8, [sp, #0x10] +_020993C4: + cmp r8, #0x0 + ble _02099460 + and r11, r6, #0x1 +_020993D0: + ldr r2, [sp, #0x10] + mov r0, r10 + mov r1, r8 + add r3, sp, #0x14 + str r6, [sp, #0x0] + bl FUN_020992C4 + mov r5, r0 + cmp r5, #0x0 + ble _02099438 + ldr r0, [sp, #0xc] + mov r1, r9 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r6, [sp, #0x8] + ldr r3, [sp, #0x14] + mov r0, r10 + mov r2, r5 + bl FUN_02099104 +_02099418: ; 0x02099418 + cmp r0, #0x0 + addle sp, sp, #0x1c + mvnle r0, #0x5 + ldmleia sp!, {r4-r11,lr} + bxle lr + add r9, r9, r5 + sub r8, r8, r5 + add r4, r4, r5 +_02099438: + cmp r11, #0x0 + bne _02099458 + cmp r5, #0x0 + bgt _02099460 + add sp, sp, #0x1c + mvn r0, #0x5 + ldmia sp!, {r4-r11,lr} + bx lr +_02099458: + cmp r8, #0x0 + bgt _020993D0 +_02099460: + mov r0, r4 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_02099470 +FUN_02099470: ; 0x02099470 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl FUN_02099FA8 +_0209948C: ; 0x0209948C + cmp r0, #0x0 + addne sp, sp, #0x8 + mvnne r0, #0x1b + ldmneia sp!, {r4-r8,lr} + bxne lr + cmp r8, #0x0 + mov r1, #0x0 + beq _020994B8 + ldrsh r0, [r8, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020994B8: + cmp r1, #0x0 + addeq sp, sp, #0x8 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldrsb r0, [r8, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _020994E4 + cmp r0, #0x4 + movne r1, #0x0 +_020994E4: + cmp r1, #0x0 + beq _02099514 + ldrsh r0, [r8, #0x70] + ands r0, r0, #0x4 + beq _02099504 + ldrsh r0, [r8, #0x70] + ands r0, r0, #0x8 + beq _02099514 +_02099504: + add sp, sp, #0x8 + mvn r0, #0x37 + ldmia sp!, {r4-r8,lr} + bx lr +_02099514: + ldr r0, [sp, #0x24] + ldr r4, [r8, #0x68] + ands r0, r0, #0x4 + bne _02099530 + ldrsb r0, [r8, #0x72] + cmp r0, #0x0 + bne _02099554 +_02099530: + add r0, r4, #0xe0 + bl OS_TryLockMutex +_02099538: ; 0x02099538 + cmp r0, #0x0 + addeq sp, sp, #0x8 + mvneq r0, #0x5 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r12, #0x0 + b _02099560 +_02099554: + add r0, r4, #0xe0 + bl OS_LockMutex + mov r12, #0x1 +_02099560: + ldr r1, [sp, #0x20] + mov r0, r8 + str r1, [sp, #0x0] + mov r1, r7 + mov r2, r6 + mov r3, r5 + str r12, [sp, #0x4] + bl FUN_02099358 + mov r5, r0 + add r0, r4, #0xe0 + bl OS_UnlockMutex + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_0209959C +FUN_0209959C: ; 0x0209959C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x4] + mov r1, #0x1 + ldrsb r0, [r0, #0x73] + cmp r0, #0x0 + beq _020995C0 + cmp r0, #0x4 + movne r1, #0x0 +_020995C0: + cmp r1, #0x0 + beq _020995CC + bl FUN_0209C840 +_020995CC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020995DC +FUN_020995DC: ; 0x020995DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl FUN_02099FA8 +_020995EC: ; 0x020995EC + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _02099618 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_02099618: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x4 + beq _02099644 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x8 + beq _02099654 +_02099644: + add sp, sp, #0x4 + mvn r0, #0x37 + ldmia sp!, {r4-r5,lr} + bx lr +_02099654: + ldrsh r0, [r4, #0x70] + orr r0, r0, #0x8 + strh r0, [r4, #0x70] + ldr r5, [r4, #0x68] + cmp r5, #0x0 + beq _020996AC + ldr r1, [r5, #0x10c] + cmp r1, #0x0 + beq _020996AC + ldrsb r2, [r4, #0x72] + ldr r0, _020996BC ; =FUN_0209959C + bl FUN_02097A98 + movs r1, r0 + addeq sp, sp, #0x4 + mvneq r0, #0x20 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r0, [r5, #0x10c] + bl FUN_02097948 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020996AC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020996BC: .word FUN_0209959C + + arm_func_start FUN_020996C0 +FUN_020996C0: ; 0x020996C0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r4, _02099704 ; =0x021C8D34 + mov r5, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020996F0 +_020996E0: + bl FUN_020997B8 +_020996E4: ; 0x020996E4 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + bne _020996E0 +_020996F0: + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099704: .word 0x021C8D34 + + arm_func_start FUN_02099708 +FUN_02099708: ; 0x02099708 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + movs r8, r0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + add r0, r8, #0x20 + bl OS_JoinThread + bl OS_DisableInterrupts + mov r7, r0 + bl OS_DisableScheduler + add r1, sp, #0x0 + mov r0, r8 + mov r2, #0x0 + bl OS_ReceiveMessage +_02099744: ; 0x02099744 + cmp r0, #0x0 + beq _0209979C + add r4, sp, #0x0 + mvn r6, #0xa + mov r5, #0x0 +_02099758: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _02099784 + ldr r0, [r0, #0x8] + cmp r0, #0x0 + beq _0209977C + mov r1, r6 + mov r2, r5 + bl OS_SendMessage +_0209977C: + ldr r0, [sp, #0x0] + bl FUN_02097A64 +_02099784: + mov r0, r8 + mov r1, r4 + mov r2, r5 + bl OS_ReceiveMessage +_02099794: ; 0x02099794 + cmp r0, #0x0 + bne _02099758 +_0209979C: + bl OS_EnableScheduler + bl OS_RescheduleThread + mov r0, r7 + bl OS_RestoreInterrupts + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020997B8 +FUN_020997B8: + stmdb sp!, {r4-r6,lr} + movs r4, r0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, #0x0 + strh r0, [r4, #0x70] + ldrsb r1, [r4, #0x73] + mov r2, #0x1 + cmp r1, #0x0 + beq _020997E8 + cmp r1, #0x4 + movne r2, r0 +_020997E8: + cmp r2, #0x0 + beq _02099804 + ldr r0, [r4, #0x68] + bl FUN_02099708 + ldr r0, [r4, #0x64] + bl FUN_02099708 + b _02099884 +_02099804: + cmp r1, #0x1 + bne _02099874 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x104] + cmp r0, #0x0 + beq _0209983C + ldr r5, _020998C0 ; =0x021C8CC0 +_02099820: + ldr r1, [r5, #0x0] + ldr r6, [r0, #0x0] + ldr r1, [r1, #0x1c] + blx r1 + mov r0, r6 + cmp r6, #0x0 + bne _02099820 +_0209983C: + ldr r0, [r4, #0x64] + mov r1, #0x0 + add r0, r0, #0x100 + strh r1, [r0, #0x8] + ldr r0, [r4, #0x64] + str r1, [r0, #0x100] + ldr r0, [r4, #0x64] + str r1, [r0, #0x104] + ldr r0, [r4, #0x64] + add r0, r0, #0x10c + bl OS_WakeupThread + ldr r0, [r4, #0x64] + bl FUN_02099708 + b _02099884 +_02099874: + cmp r1, #0x2 + bne _02099884 + ldr r0, [r4, #0x68] + bl FUN_02099708 +_02099884: + bl OS_DisableInterrupts + mov r5, r0 + mov r0, r4 + bl FUN_0209A054 + mov r0, r4 + bl FUN_02099FF0 + ldr r1, _020998C0 ; =0x021C8CC0 + mov r0, r4 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x1c] + blx r1 + mov r0, r5 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020998C0: .word 0x021C8CC0 + + arm_func_start FUN_020998C4 +FUN_020998C4: ; 0x020998C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r0, #0x4] + mov r1, #0x1 + ldrsb r0, [r4, #0x73] + cmp r0, #0x0 + beq _020998E8 + cmp r0, #0x4 + movne r1, #0x0 +_020998E8: + cmp r1, #0x0 + beq _02099908 + ldr r0, [r4, #0x68] + add r0, r0, #0x20 + bl OS_JoinThread + bl FUN_0209C840 + bl FUN_0209C7AC + bl FUN_0209CB24 +_02099908: + bl FUN_0209CC10 + ldrsh r0, [r4, #0x70] + mov r1, #0x0 + bic r0, r0, #0x6 + strh r0, [r4, #0x70] + ldrsb r0, [r4, #0x73] + cmp r0, #0x2 + ldreq r0, [r4, #0x68] + ldrne r0, [r4, #0x64] + bl FUN_020979F8 + bl OS_DisableInterrupts + mov r5, r0 + mov r0, r4 + bl FUN_0209A054 + mov r0, r4 + bl FUN_0209A06C + mov r0, r5 + bl OS_RestoreInterrupts + ldrsh r1, [r4, #0x70] + mov r0, #0x0 + orr r1, r1, #0x20 + strh r1, [r4, #0x70] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209996C +FUN_0209996C: ; 0x0209996C + stmdb sp!, {r4,lr} + mov r4, r0 + cmp r4, #0x0 + mvnle r0, #0x1b + ldmleia sp!, {r4,lr} + bxle lr + bl FUN_02099F78 +_02099988: ; 0x02099988 + cmp r0, #0x0 + mvnne r0, #0x19 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl FUN_02099FA8 +_020999A0: ; 0x020999A0 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + cmp r4, #0x0 + mov r1, #0x0 + beq _020999C8 + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_020999C8: + cmp r1, #0x0 + mvneq r0, #0x26 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrsh r0, [r4, #0x70] + ands r0, r0, #0x10 + mvnne r0, #0x19 + ldmneia sp!, {r4,lr} + bxne lr + ldrsh r0, [r4, #0x70] + mov r1, #0x1 + orr r0, r0, #0x18 + strh r0, [r4, #0x70] + ldrsb r0, [r4, #0x73] + cmp r0, #0x0 + beq _02099A10 + cmp r0, #0x4 + movne r1, #0x0 +_02099A10: + cmp r1, #0x0 + beq _02099A24 + ldr r0, [r4, #0x68] + mov r1, #0x0 + bl FUN_020979F8 +_02099A24: + ldr r0, _02099A54 ; =FUN_020998C4 + mov r1, r4 + mov r2, #0x1 + bl FUN_02097A98 + mov r1, r0 + mov r2, #0x0 + mov r0, r4 + str r2, [r1, #0x8] + bl FUN_020979DC +_02099A48: ; 0x02099A48 + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02099A54: .word FUN_020998C4 + + arm_func_start FUN_02099A58 +FUN_02099A58: + stmdb sp!, {r4,lr} + movs r4, r0 + bmi _02099A88 + bl FUN_02099FA8 +_02099A68: ; 0x02099A68 + cmp r0, #0x0 + beq _02099A88 + mov r0, r4 + bl FUN_02099F78 +_02099A78: ; 0x02099A78 + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr +_02099A88: + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_02099A94 +FUN_02099A94: ; 0x02099A94 + stmdb sp!, {r4,lr} + ldr r0, _02099B10 ; =0x021C8CD0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _02099AE8 + bl FUN_02099B14 + movs r4, r0 + bne _02099AE0 + ldr r0, _02099B10 ; =0x021C8CD0 + ldr r0, [r0, #0x0] + bl FUN_0209996C + ldr r0, _02099B10 ; =0x021C8CD0 + ldr r0, [r0, #0x0] + bl FUN_02099A58 +_02099ACC: ; 0x02099ACC + cmp r0, #0x0 + ldrne r0, _02099B10 ; =0x021C8CD0 + movne r1, #0x0 + strne r1, [r0, #0x0] + mvn r4, #0x19 +_02099AE0: + bl FUN_020996C0 + b _02099B04 +_02099AE8: + bl FUN_0209FD34 +_02099AEC: ; 0x02099AEC + cmp r0, #0x0 + mvneq r4, #0x19 + beq _02099B04 + mov r0, #0x0 + bl FUN_020A87BC + mov r4, #0x0 +_02099B04: + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_02099B10: .word 0x021C8CD0 + + arm_func_start FUN_02099B14 +FUN_02099B14: ; 0x02099B14 + stmdb sp!, {r4-r6,lr} + ldr r4, _02099BBC ; =0x021C8CD0 + ldr r5, _02099BC0 ; =0x021C8D30 +_02099B20: + bl OS_DisableInterrupts + ldr r6, [r5, #0x0] + cmp r6, #0x0 + beq _02099B54 + ldr r2, [r4, #0x0] +_02099B34: + cmp r6, r2 + beq _02099B48 + ldrsh r1, [r6, #0x70] + ands r1, r1, #0x10 + beq _02099B54 +_02099B48: + ldr r6, [r6, #0x7c] + cmp r6, #0x0 + bne _02099B34 +_02099B54: + bl OS_RestoreInterrupts +_02099B58: ; 0x02099B58 + cmp r6, #0x0 + beq _02099B6C + mov r0, r6 + bl FUN_0209996C + b _02099B20 +_02099B6C: + ldr r0, _02099BC0 ; =0x021C8D30 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _02099B98 + ldr r0, _02099BBC ; =0x021C8CD0 + ldr r0, [r0, #0x0] + cmp r1, r0 + bne _02099BB0 + ldr r0, [r1, #0x7c] + cmp r0, #0x0 + bne _02099BB0 +_02099B98: + ldr r0, _02099BC4 ; =0x021C8D34 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr +_02099BB0: + mvn r0, #0x19 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_02099BBC: .word 0x021C8CD0 +_02099BC0: .word 0x021C8D30 +_02099BC4: .word 0x021C8D34 + + arm_func_start FUN_02099BC8 +FUN_02099BC8: ; 0x02099BC8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _02099C68 ; =0x021C8CC8 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + ldreq r0, _02099C6C ; =0x021C8F04 + ldreq r0, [r0, #0x0] + streq r0, [r1, #0x0] + bl FUN_02099A94 + mvn r4, #0x19 + cmp r0, r4 + bne _02099C10 + mov r5, #0x64 +_02099BFC: + mov r0, r5 + bl OS_Sleep + bl FUN_02099A94 + cmp r0, r4 + beq _02099BFC +_02099C10: + bl FUN_02097B14 + movs r4, r0 + bmi _02099C58 + bl FUN_0209FCC4 +_02099C20: ; 0x02099C20 + mov r0, #0x0 + bl FUN_0209FD24 + ldr r0, _02099C70 ; =0x021C8CC0 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x28] + cmp r0, #0x0 + bne _02099C4C + ldr r0, _02099C74 ; =0x021C8CD4 + ldr r1, [r1, #0x1c] + ldr r0, [r0, #0x1c] + blx r1 +_02099C4C: + ldr r0, _02099C70 ; =0x021C8CC0 + mov r1, #0x0 + str r1, [r0, #0x0] +_02099C58: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099C68: .word 0x021C8CC8 +_02099C6C: .word 0x021C8F04 +_02099C70: .word 0x021C8CC0 +_02099C74: .word 0x021C8CD4 + + arm_func_start FUN_02099C78 +FUN_02099C78: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _02099CE0 ; =0x021C8F04 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _02099CBC + ldr r0, _02099CE4 ; =0x021C8CCC + ldr r0, [r0, #0x0] + and r0, r0, #0x3 + cmp r0, #0x1 + bne _02099CCC + bl OS_GetProcMode + cmp r0, #0x12 + beq _02099CCC + mov r0, #0xa + bl OS_Sleep + b _02099CCC +_02099CBC: + ldr r0, _02099CE8 ; =0x021C8CC8 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + streq r2, [r0, #0x0] +_02099CCC: + ldr r0, _02099CE0 ; =0x021C8F04 + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02099CE0: .word 0x021C8F04 +_02099CE4: .word 0x021C8CCC +_02099CE8: .word 0x021C8CC8 + + arm_func_start FUN_02099CEC +FUN_02099CEC: ; 0x02099CEC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_02099C78 +_02099D00: ; 0x02099D00 + cmp r0, #0x0 + ldrne r1, _02099D24 ; =0x021C8F1C + mvneq r0, #0x26 + movne r0, #0x0 + strne r5, [r1, #0x0] + strne r4, [r1, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099D24: .word 0x021C8F1C + + arm_func_start FUN_02099D28 +FUN_02099D28: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _02099D84 ; =0x021C8F1C + mov r5, r0 + ldr r7, [r1, #0x0] + mov r2, #0x0 + ldr r6, [r1, #0x4] + mov r0, r4 + str r2, [r1, #0x0] + str r2, [r1, #0x4] + bl FUN_0209AB80 + ldr r1, _02099D84 ; =0x021C8F1C + mov r4, r0 + mov r0, r5 + str r7, [r1, #0x0] + str r6, [r1, #0x4] + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_02099D84: .word 0x021C8F1C + + arm_func_start FUN_02099D88 +FUN_02099D88: ; 0x02099D88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x64 + movs r4, r0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r1, _02099E34 ; =0x021C8CC0 + mov r0, #0xfd0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x18] + blx r1 + movs r5, r0 + addeq sp, sp, #0x64 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x64 + bl MI_CpuFill8 + ldr r3, _02099E38 ; =0x00000B68 + ldr r1, _02099E3C ; =0x00000466 + add r2, r5, r3 + add r0, sp, #0x0 + str r5, [sp, #0x40] + str r3, [sp, #0x3c] + str r2, [sp, #0x4c] + str r1, [sp, #0x48] + bl FUN_0209CC28 + mov r0, r4 + bl FUN_0209AB80 + mov r4, r0 + bl FUN_0209CC10 + ldr r1, _02099E34 ; =0x021C8CC0 + mov r0, r5 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x1c] + blx r1 + mov r0, r4 + add sp, sp, #0x64 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_02099E34: .word 0x021C8CC0 +_02099E38: .word 0x00000B68 +_02099E3C: .word 0x00000466 + + arm_func_start FUN_02099E40 +FUN_02099E40: + ldr r2, [r0, #0x64] + mov r3, #0x0 + cmp r2, #0x0 + beq _02099E88 + ldrsb r1, [r0, #0x73] + cmp r1, #0x1 + bne _02099E6C + ldr r0, [r2, #0x104] + cmp r0, #0x0 + ldrneh r3, [r0, #0x4] + b _02099E88 +_02099E6C: + cmp r1, #0x0 + beq _02099E7C + cmp r1, #0x4 + bne _02099E88 +_02099E7C: + ldr r1, [r0, #0x44] + ldr r0, [r2, #0xf8] + sub r3, r1, r0 +_02099E88: + mov r0, r3 + bx lr + + arm_func_start FUN_02099E90 +FUN_02099E90: + stmdb sp!, {r4-r6,lr} + mov r4, #0x0 + mov r5, r0 + bl FUN_02099FA8 +_02099EA0: ; 0x02099EA0 + cmp r0, #0x0 + orrne r4, r4, #0x80 + bne _02099F60 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x40 + ldrsb r0, [r5, #0x73] + orrne r4, r4, #0x20 + cmp r0, #0x1 + beq _02099ED0 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x4 + beq _02099F00 +_02099ED0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r5 + bl FUN_02099E40 +_02099EE0: ; 0x02099EE0 + cmp r0, #0x0 + mov r0, r5 + orrgt r4, r4, #0x1 + bl FUN_020992A0 +_02099EF0: ; 0x02099EF0 + cmp r0, #0x0 + mov r0, r6 + orrgt r4, r4, #0x8 + bl OS_RestoreInterrupts +_02099F00: + ldrsb r0, [r5, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _02099F18 + cmp r0, #0x4 + movne r1, #0x0 +_02099F18: + cmp r1, #0x0 + beq _02099F60 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x4 + beq _02099F48 + ldrb r0, [r5, #0x8] + cmp r0, #0x4 + beq _02099F48 + ands r0, r4, #0x1 + ldreqsh r0, [r5, #0x70] + biceq r0, r0, #0x6 + streqh r0, [r5, #0x70] +_02099F48: + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x2 + bne _02099F60 + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x4 + orreq r4, r4, #0x40 +_02099F60: + mov r0, r4 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_02099F6C +FUN_02099F6C: + add r0, r0, #0x3 + bic r0, r0, #0x3 + bx lr + + arm_func_start FUN_02099F78 +FUN_02099F78: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, r0 + ldr r0, _02099FA4 ; =0x021C8D34 + bl FUN_0209A008 +_02099F8C: ; 0x02099F8C + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02099FA4: .word 0x021C8D34 + + arm_func_start FUN_02099FA8 +FUN_02099FA8: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, r0 + cmp r1, #0x0 + ble _02099FCC + ldr r0, _02099FEC ; =0x021C8D30 + bl FUN_0209A008 +_02099FC4: ; 0x02099FC4 + cmp r0, #0x0 + bne _02099FDC +_02099FCC: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {lr} + bx lr +_02099FDC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_02099FEC: .word 0x021C8D30 + + arm_func_start FUN_02099FF0 +FUN_02099FF0: ; 0x02099FF0 + ldr ip, _0209A000 ; =FUN_0209A034 + mov r1, r0 + ldr r0, _0209A004 ; =0x021C8D34 + bx r12 + .balign 4 +_0209A000: .word FUN_0209A034 +_0209A004: .word 0x021C8D34 + + arm_func_start FUN_0209A008 +FUN_0209A008: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0209A02C +_0209A014: + cmp r2, r1 + bxeq lr + add r0, r2, #0x7c + ldr r2, [r2, #0x7c] + cmp r2, #0x0 + bne _0209A014 +_0209A02C: + mov r0, #0x0 + bx lr + + arm_func_start FUN_0209A034 +FUN_0209A034: ; 0x0209A034 + stmdb sp!, {r4,lr} + mov r4, r1 + bl FUN_0209A008 +_0209A040: ; 0x0209A040 + cmp r0, #0x0 + ldrne r1, [r4, #0x7c] + strne r1, [r0, #0x0] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_0209A054 +FUN_0209A054: ; 0x0209A054 + ldr ip, _0209A064 ; =FUN_0209A034 + mov r1, r0 + ldr r0, _0209A068 ; =0x021C8D30 + bx r12 + .balign 4 +_0209A064: .word FUN_0209A034 +_0209A068: .word 0x021C8D30 + + arm_func_start FUN_0209A06C +FUN_0209A06C: ; 0x0209A06C + ldr ip, _0209A07C ; =FUN_0209A084 + mov r1, r0 + ldr r0, _0209A080 ; =0x021C8D34 + bx r12 + .balign 4 +_0209A07C: .word FUN_0209A084 +_0209A080: .word 0x021C8D34 + + arm_func_start FUN_0209A084 +FUN_0209A084: ; 0x0209A084 + ldr r2, [r0, #0x0] + str r2, [r1, #0x7c] + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_0209A094 +FUN_0209A094: ; 0x0209A094 + ldr ip, _0209A0A4 ; =FUN_0209A084 + mov r1, r0 + ldr r0, _0209A0A8 ; =0x021C8D30 + bx r12 + .balign 4 +_0209A0A4: .word FUN_0209A084 +_0209A0A8: .word 0x021C8D30 + + arm_func_start FUN_0209A0AC +FUN_0209A0AC: ; 0x0209A0AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r2 + str r0, [sp, #0x0] + mov r0, #0x1 + str r0, [sp, #0x8] + mov r0, #0x0 + mov r8, r3 + mvn r2, #0x0 + cmp r8, r2 + cmpeq r9, r2 + movne r11, #0x1 + mov r10, r1 + moveq r11, #0x0 + str r0, [sp, #0x4] +_0209A0E8: + ldr r5, [sp, #0x4] + ldr r7, [sp, #0x0] + mov r6, r5 + cmp r10, #0x0 + bls _0209A128 +_0209A0FC: + ldrsh r1, [r7, #0x4] + ldr r0, [r7, #0x0] + orr r4, r1, #0xe0 + bl FUN_02099E90 +_0209A10C: ; 0x0209A10C + ands r0, r4, r0 + strh r0, [r7, #0x6] + add r6, r6, #0x1 + addne r5, r5, #0x1 + cmp r6, r10 + add r7, r7, #0x8 + blo _0209A0FC +_0209A128: + cmp r5, #0x0 + bgt _0209A160 + cmp r11, #0x0 + beq _0209A148 + mov r1, #0x0 + subs r0, r1, r9 + sbcs r0, r1, r8 + bge _0209A160 +_0209A148: + ldr r0, [sp, #0x8] + bl OS_Sleep + ldr r0, _0209A170 ; =0x0000020B + subs r9, r9, r0 + sbc r8, r8, #0x0 + b _0209A0E8 +_0209A160: + mov r0, r5 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209A170: .word 0x0000020B + + arm_func_start FUN_0209A174 +FUN_0209A174: ; 0x0209A174 + mov r2, r0, lsr #0x18 + strb r2, [r1, #0x0] + mov r2, r0, lsr #0x10 + strb r2, [r1, #0x1] + mov r2, r0, lsr #0x8 + strb r2, [r1, #0x2] + strb r0, [r1, #0x3] + bx lr + + arm_func_start FUN_0209A194 +FUN_0209A194: ; 0x0209A194 + stmdb sp!, {r4,lr} + sub sp, sp, #0x18 + cmp r0, #0x2 + mov r4, r2 + addne sp, sp, #0x18 + movne r0, #0x0 + ldmneia sp!, {r4,lr} + bxne lr + cmp r3, #0x10 + addcc sp, sp, #0x18 + movcc r0, #0x0 + ldmccia sp!, {r4,lr} + bxcc lr + mov r0, r1 + add r1, sp, #0xc + mov r2, #0x4 + bl MI_CpuCopy8 + ldr r0, [sp, #0xc] + add r1, sp, #0x10 + bl FUN_0209A174 + ldrb r1, [sp, #0x12] + ldr r2, _0209A220 ; =0x0210620C + mov r0, r4 + str r1, [sp, #0x0] + ldrb r3, [sp, #0x11] + mov r1, #0x10 + str r3, [sp, #0x4] + ldrb r3, [sp, #0x10] + str r3, [sp, #0x8] + ldrb r3, [sp, #0x13] + bl OS_SNPrintf + mov r0, r4 + add sp, sp, #0x18 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209A220: .word 0x0210620C + + arm_func_start FUN_0209A224 +FUN_0209A224: ; 0x0209A224 + stmdb sp!, {r4,lr} + mov r4, r1 + bl FUN_02099D28 +_0209A230: ; 0x0209A230 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #0x8 + mov r3, r0, lsl #0x8 + mov r12, r0, lsl #0x18 + and r2, r2, #0xff + and r0, r1, #0xff00 + and r1, r3, #0xff0000 + orr r0, r2, r0 + and r2, r12, #0xff000000 + orr r0, r1, r0 + orr r0, r2, r0 + str r0, [r4, #0x0] + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_0209A27C +FUN_0209A27C: ; 0x0209A27C + stmdb sp!, {r0-r3} + + arm_func_start FUN_0209A280 +FUN_0209A280: ; 0x0209A280 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _0209A2B0 ; =0x021C8D5C + add r1, sp, #0x8 + mov r0, #0x2 + mov r3, #0x10 + bl FUN_0209A194 + ldr r0, _0209A2B0 ; =0x021C8D5C + add sp, sp, #0x4 + ldmia sp!, {lr} + add sp, sp, #0x10 + bx lr + .balign 4 +_0209A2B0: .word 0x021C8D5C + + arm_func_start THUNK_FUN_02099BC8 +THUNK_FUN_02099BC8: ; 0x0209A2B4 + ldr ip, _0209A2BC ; =FUN_02099BC8 + bx r12 + .balign 4 +_0209A2BC: .word FUN_02099BC8 + + arm_func_start FUN_0209A2C0 +FUN_0209A2C0: ; 0x0209A2C0 + stmdb sp!, {r4-r8,lr} + ldr r1, [r0, #0xc] + ldr ip, _0209A430 ; =0x021C8D6C + cmp r1, #0x1 + moveq r1, #0x1 + movne r1, #0x0 + str r1, [r12, #0x0] + ldr r6, [r0, #0x10] + ldr r5, _0209A434 ; =FUN_0209A484 + mov r2, r6, lsr #0x18 + mov r1, r6, lsr #0x8 + mov r3, r6, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + mov r6, r6, lsl #0x18 + orr r1, r2, r1 + and r3, r3, #0xff0000 + orr r1, r3, r1 + and r2, r6, #0xff000000 + orr r1, r2, r1 + str r1, [r12, #0x4] + ldr r7, [r0, #0x14] + ldr r4, _0209A438 ; =FUN_0209A444 + mov r2, r7, lsr #0x18 + mov r1, r7, lsr #0x8 + mov r6, r7, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + mov r7, r7, lsl #0x18 + orr r1, r2, r1 + and r6, r6, #0xff0000 + and r2, r7, #0xff000000 + orr r1, r6, r1 + orr r1, r2, r1 + str r1, [r12, #0x8] + ldr r1, [r0, #0x18] + ldr r3, _0209A43C ; =0x021C8D40 + mov r7, r1, lsr #0x18 + mov r6, r1, lsr #0x8 + mov r8, r1, lsl #0x8 + and r7, r7, #0xff + and r6, r6, #0xff00 + mov r1, r1, lsl #0x18 + orr r6, r7, r6 + and r8, r8, #0xff0000 + and r7, r1, #0xff000000 + orr r1, r8, r6 + orr r1, r7, r1 + str r1, [r12, #0xc] + ldr r1, [r0, #0x1c] + ldr r2, _0209A440 ; =0x021C8D3C + mov r7, r1, lsr #0x18 + mov r6, r1, lsr #0x8 + mov r8, r1, lsl #0x8 + and r7, r7, #0xff + and r6, r6, #0xff00 + mov r1, r1, lsl #0x18 + orr r6, r7, r6 + and r8, r8, #0xff0000 + and r7, r1, #0xff000000 + orr r1, r8, r6 + orr r1, r7, r1 + str r1, [r12, #0x10] + ldr r1, [r0, #0x20] + mov lr, #0x40 + mov r7, r1, lsr #0x18 + mov r6, r1, lsr #0x8 + mov r8, r1, lsl #0x8 + and r7, r7, #0xff + and r6, r6, #0xff00 + mov r1, r1, lsl #0x18 + orr r6, r7, r6 + and r8, r8, #0xff0000 + and r7, r1, #0xff000000 + orr r1, r8, r6 + orr r1, r7, r1 + str r5, [r12, #0x18] + str r4, [r12, #0x1c] + str r1, [r12, #0x14] + ldr r1, [r0, #0x4] + str r1, [r3, #0x0] + ldr r1, [r0, #0x8] + str lr, [r12, #0x20] + str r1, [r2, #0x0] + ldr r1, [r0, #0x2c] + str r1, [r12, #0x30] + ldr r1, [r0, #0x30] + mov r0, r12 + str r1, [r12, #0x34] + bl FUN_02097834 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209A430: .word 0x021C8D6C +_0209A434: .word FUN_0209A484 +_0209A438: .word FUN_0209A444 +_0209A43C: .word 0x021C8D40 +_0209A440: .word 0x021C8D3C + + arm_func_start FUN_0209A444 +FUN_0209A444: ; 0x0209A444 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldr r1, _0209A480 ; =0x021C8D3C + ldr r2, [r0, #-0x4] + ldr r3, [r1, #0x0] + sub r1, r0, #0x4 + mov r0, #0x0 + blx r3 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209A480: .word 0x021C8D3C + + arm_func_start FUN_0209A484 +FUN_0209A484: ; 0x0209A484 + stmdb sp!, {r4,lr} + ldr r1, _0209A4B0 ; =0x021C8D40 + add r4, r0, #0x4 + ldr r2, [r1, #0x0] + mov r1, r4 + mov r0, #0x0 + blx r2 + cmp r0, #0x0 + strne r4, [r0], #0x4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209A4B0: .word 0x021C8D40 + + arm_func_start FUN_0209A4B4 +FUN_0209A4B4: ; 0x0209A4B4 + cmp r0, #0x0 + mvneq r0, #0x0 + bxeq lr + cmp r1, #0x3 + beq _0209A4D4 + cmp r1, #0x4 + beq _0209A4E8 + b _0209A4FC +_0209A4D4: + ldrsb r0, [r0, #0x72] + cmp r0, #0x1 + moveq r0, #0x0 + movne r0, #0x4 + bx lr +_0209A4E8: + ands r1, r2, #0x4 + movne r1, #0x0 + strneb r1, [r0, #0x72] + moveq r1, #0x1 + streqb r1, [r0, #0x72] +_0209A4FC: + mov r0, #0x0 + bx lr + + arm_func_start FUN_0209A504 +FUN_0209A504: ; 0x0209A504 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + mov r4, r1 + add r1, sp, #0x0 + add r2, sp, #0x4 + bl FUN_02098120 +_0209A51C: ; 0x0209A51C + cmp r0, #0x0 + addlt sp, sp, #0x8 + ldmltia sp!, {r4,lr} + bxlt lr + ldrh r1, [sp, #0x0] + mov r2, r1, asr #0x8 + mov r1, r1, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + strh r1, [r4, #0x2] + ldr r12, [sp, #0x4] + mov r2, r12, lsr #0x18 + mov r1, r12, lsr #0x8 + mov r3, r12, lsl #0x8 + mov r12, r12, lsl #0x18 + and r2, r2, #0xff + and r1, r1, #0xff00 + and r3, r3, #0xff0000 + orr r1, r2, r1 + and r2, r12, #0xff000000 + orr r1, r3, r1 + orr r1, r2, r1 + str r1, [r4, #0x4] + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_0209A588 +FUN_0209A588: ; 0x0209A588 + ldr ip, _0209A590 ; =FUN_0209822C + bx r12 + .balign 4 +_0209A590: .word FUN_0209822C + + arm_func_start FUN_0209A594 +FUN_0209A594: ; 0x0209A594 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r12, [r1, #0x0] + ldr r0, [r0, #0x0] + mov r2, r12, lsr #0x18 + mov r4, r0, lsr #0x18 + mov lr, r0, lsr #0x8 + mov r1, r12, lsr #0x8 + mov r5, r0, lsl #0x8 + mov r3, r12, lsl #0x8 + mov r0, r0, lsl #0x18 + mov r12, r12, lsl #0x18 + and r4, r4, #0xff + and lr, lr, #0xff00 + and r2, r2, #0xff + and r1, r1, #0xff00 + and r5, r5, #0xff0000 + orr r4, r4, lr + and r3, r3, #0xff0000 + orr r1, r2, r1 + and lr, r0, #0xff000000 + orr r0, r5, r4 + and r2, r12, #0xff000000 + orr r1, r3, r1 + orr r0, lr, r0 + orr r1, r2, r1 + bl FUN_02099CEC + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209A60C +FUN_0209A60C: ; 0x0209A60C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_02099C78 + mov r2, r0, lsr #0x18 + mov r1, r0, lsr #0x8 + mov r3, r0, lsl #0x8 + mov r12, r0, lsl #0x18 + and r2, r2, #0xff + and r0, r1, #0xff00 + and r1, r3, #0xff0000 + orr r0, r2, r0 + and r2, r12, #0xff000000 + orr r0, r1, r0 + orr r0, r2, r0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209A650 +FUN_0209A650: ; 0x0209A650 + stmdb sp!, {r4-r6,lr} + movs r5, r0 + mov r4, r1 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + bl FUN_02099C78 +_0209A66C: ; 0x0209A66C + cmp r5, #0x0 + ldrneh r1, [r5, #0x74] + mov r2, r0, lsr #0x18 + mov r6, #0x8 + moveq r1, #0x0 + cmp r0, #0x0 + moveq r1, #0x0 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + mov r5, r3, asr #0x8 + mov lr, r3, lsl #0x8 + strb r6, [r4, #0x0] + mov r6, #0x2 + mov r1, r0, lsr #0x8 + mov r3, r0, lsl #0x8 + mov r12, r0, lsl #0x18 + and r0, r1, #0xff00 + and r2, r2, #0xff + orr r0, r2, r0 + and r1, r3, #0xff0000 + and r5, r5, #0xff + and lr, lr, #0xff00 + strb r6, [r4, #0x1] + orr r3, r5, lr + and r2, r12, #0xff000000 + orr r0, r1, r0 + strh r3, [r4, #0x2] + orr r0, r2, r0 + str r0, [r4, #0x4] + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209A6EC +FUN_0209A6EC: ; 0x0209A6EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_02099D88 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r0, _0209A7A4 ; =0x021C8DA4 + ldr r2, _0209A7A8 ; =0x00000101 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r0, _0209A7A4 ; =0x021C8DA4 + ldr r2, _0209A7A8 ; =0x00000101 + mov r1, r5 + bl STD_CopyLString + mov r1, r4, lsr #0x18 + mov r0, r4, lsr #0x8 + mov r2, r4, lsl #0x8 + mov r3, r4, lsl #0x18 + and r1, r1, #0xff + and r0, r0, #0xff00 + and r2, r2, #0xff0000 + orr r0, r1, r0 + and r3, r3, #0xff000000 + orr r1, r2, r0 + ldr r5, _0209A7A4 ; =0x021C8DA4 + ldr r0, _0209A7AC ; =0x021C8D4C + ldr ip, _0209A7B0 ; =0x021C8D44 + mov r4, #0x0 + ldr r2, _0209A7B4 ; =0x021C8D38 + orr r1, r3, r1 + mov lr, #0x2 + mov r3, #0x4 + str r5, [r0, #0x0] + str r4, [r0, #0x4] + strh lr, [r0, #0x8] + strh r3, [r0, #0xa] + str r12, [r0, #0xc] + str r2, [r12, #0x0] + str r4, [r12, #0x4] + str r1, [r2, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209A7A4: .word 0x021C8DA4 +_0209A7A8: .word 0x00000101 +_0209A7AC: .word 0x021C8D4C +_0209A7B0: .word 0x021C8D44 +_0209A7B4: .word 0x021C8D38 + + arm_func_start thunk_FUN_0209996c +thunk_FUN_0209996c: ; 0x0209A7B8 + ldr ip, _0209A7C0 ; =FUN_0209996C + bx r12 + .balign 4 +_0209A7C0: .word FUN_0209996C + + arm_func_start thunk_FUN_020995dc +thunk_FUN_020995dc: ; 0x0209A7C4 + ldr ip, _0209A7CC ; =FUN_020995DC + bx r12 + .balign 4 +_0209A7CC: .word FUN_020995DC + + arm_func_start FUN_0209A7D0 +FUN_0209A7D0: ; 0x0209A7D0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r5, [sp, #0x20] + cmp r5, #0x0 + moveq r5, #0x0 + moveq r4, r5 + beq _0209A83C + ldrh r4, [r5, #0x2] + ldr r6, [r5, #0x4] + mov r7, r4, asr #0x8 + mov r12, r4, lsl #0x8 + mov r4, r6, lsr #0x18 + mov lr, r6, lsr #0x8 + mov r5, r6, lsl #0x8 + mov r6, r6, lsl #0x18 + and r7, r7, #0xff + and r12, r12, #0xff00 + orr r7, r7, r12 + and r4, r4, #0xff + and lr, lr, #0xff00 + and r5, r5, #0xff0000 + orr r4, r4, lr + mov r12, r7, lsl #0x10 + orr r4, r5, r4 + and r6, r6, #0xff000000 + mov r5, r12, lsr #0x10 + orr r4, r6, r4 +_0209A83C: + str r4, [sp, #0x0] + str r3, [sp, #0x4] + mov r3, r5 + bl FUN_02099470 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209A858 +FUN_0209A858: ; 0x0209A858 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r12, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r3, r12 + bl FUN_02099470 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209A880 +FUN_0209A880: ; 0x0209A880 + stmdb sp!, {lr} + sub sp, sp, #0x14 + add r12, sp, #0xc + str r12, [sp, #0x0] + str r3, [sp, #0x4] + add r3, sp, #0x8 + bl FUN_02098CF4 +_0209A89C: ; 0x0209A89C + cmp r0, #0x0 + addlt sp, sp, #0x14 + ldmltia sp!, {lr} + bxlt lr + ldr r1, [sp, #0x18] + cmp r1, #0x0 + addeq sp, sp, #0x14 + ldmeqia sp!, {lr} + bxeq lr + ldrh r2, [sp, #0x8] + mov r3, r2, asr #0x8 + mov r2, r2, lsl #0x8 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r1, #0x2] + ldr lr, [sp, #0xc] + mov r3, lr, lsr #0x18 + mov r2, lr, lsr #0x8 + mov r12, lr, lsl #0x8 + mov lr, lr, lsl #0x18 + and r3, r3, #0xff + and r2, r2, #0xff00 + and r12, r12, #0xff0000 + orr r2, r3, r2 + and r3, lr, #0xff000000 + orr r2, r12, r2 + orr r2, r3, r2 + str r2, [r1, #0x4] + add sp, sp, #0x14 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209A91C +FUN_0209A91C: ; 0x0209A91C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r12, #0x0 + str r12, [sp, #0x0] + str r3, [sp, #0x4] + mov r3, r12 + bl FUN_02098CF4 + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209A944 +FUN_0209A944: ; 0x0209A944 + stmdb sp!, {r4,lr} + ldrh r2, [r1, #0x2] + ldr lr, [r1, #0x4] + mov r4, r2, asr #0x8 + mov r1, r2, lsl #0x8 + mov r3, lr, lsr #0x18 + mov r2, lr, lsr #0x8 + mov r12, lr, lsl #0x8 + mov lr, lr, lsl #0x18 + and r4, r4, #0xff + and r1, r1, #0xff00 + orr r1, r4, r1 + mov r1, r1, lsl #0x10 + and r3, r3, #0xff + and r2, r2, #0xff00 + and r12, r12, #0xff0000 + orr r2, r3, r2 + and r3, lr, #0xff000000 + orr r2, r12, r2 + mov r1, r1, lsr #0x10 + orr r2, r3, r2 + bl FUN_020983B0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_0209A9A4 +FUN_0209A9A4: ; 0x0209A9A4 + ldrh r1, [r1, #0x2] + ldr ip, _0209A9CC ; =FUN_020984B4 + mov r2, r1, asr #0x8 + mov r1, r1, lsl #0x8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bx r12 + .balign 4 +_0209A9CC: .word FUN_020984B4 + + arm_func_start FUN_0209A9D0 +FUN_0209A9D0: ; 0x0209A9D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x1 + bne _0209A9F4 + ldr r0, _0209AA08 ; =0x021061DC + bl FUN_02097F70 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209A9F4: + ldr r0, _0209AA0C ; =0x021061C4 + bl FUN_02097F70 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209AA08: .word 0x021061DC +_0209AA0C: .word 0x021061C4 + + arm_func_start FUN_0209AA10 +FUN_0209AA10: ; 0x0209AA10 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r6, [r7, #0x4] + ldr r5, [r6, #0x64] + add r0, r5, #0xe0 + ldr r4, [r5, #0xc4] + bl OS_LockMutex + ldr r1, [r7, #0x10] + cmp r1, #0x0 + beq _0209AA54 + mov r0, #0x1 + str r1, [r4, #0xc] + bl FUN_020A02EC + mov r0, #0x4 + strb r0, [r6, #0x73] + b _0209AA68 +_0209AA54: + mov r0, #0x0 + strb r0, [r6, #0x73] + bl FUN_020A02EC +_0209AA60: ; 0x0209AA60 + mov r0, #0x0 + str r0, [r4, #0xc] +_0209AA68: + add r0, r5, #0xe0 + bl OS_UnlockMutex +_0209AA70: ; 0x0209AA70 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209AA80 +FUN_0209AA80: ; 0x0209AA80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _0209AACC ; =FUN_0209AA10 + mov r1, r5 + mov r2, #0x1 + bl FUN_02097A98 + movs r1, r0 + addeq sp, sp, #0x4 + mvneq r0, #0x20 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + mov r0, r5 + str r4, [r1, #0x10] + bl FUN_02097958 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209AACC: .word FUN_0209AA10 + + arm_func_start FUN_0209AAD0 +FUN_0209AAD0: ; 0x0209AAD0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_02099FA8 +_0209AAE4: ; 0x0209AAE4 + cmp r0, #0x0 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + ldrsb r0, [r5, #0x73] + mov r1, #0x1 + cmp r0, #0x0 + beq _0209AB10 + cmp r0, #0x4 + movne r1, #0x0 +_0209AB10: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x1b + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r5, #0x0 + mov r1, #0x0 + beq _0209AB3C + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x1 + movne r1, #0x1 +_0209AB3C: + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x26 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldrsh r0, [r5, #0x70] + ands r0, r0, #0x2 + addne sp, sp, #0x4 + mvnne r0, #0x1b + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r5 + mov r1, r4 + bl FUN_0209AA80 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209AB80 +FUN_0209AB80: ; 0x0209AB80 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + ldr r6, _0209ACC0 ; =0x021C8F24 + mov r9, #0x0 + ldr r11, [r6, #0x8] + ldr r2, [r6, #0x0] + ldr r1, [r6, #0x4] + umull r5, r4, r11, r2 + mla r4, r11, r1, r4 + ldr r10, [r6, #0xc] + ldr r3, [r6, #0x10] + mla r4, r10, r2, r4 + adds r5, r3, r5 + ldr r1, [r6, #0x14] + umull r8, r7, r11, r5 + adc r4, r1, r4 + mla r7, r11, r4, r7 + mla r7, r10, r5, r7 + mov r2, r9, lsl #0x10 + adds r8, r3, r8 + str r5, [r6, #0x0] + adc r5, r1, r7 + mov r3, r9, lsl #0x10 + orr r2, r2, r4, lsr #0x10 + str r4, [r6, #0x4] + orr r3, r3, r5, lsr #0x10 + add r1, sp, #0x4 + mov r10, r0 + strh r2, [sp, #0x8] + str r8, [r6, #0x0] + str r5, [r6, #0x4] + strh r3, [sp, #0xa] + bl FUN_0209AD34 +_0209AC04: ; 0x0209AC04 + cmp r0, #0x0 + ldrne r0, [sp, #0x4] + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,lr} + bxne lr + mov r0, #0x1 + ldr r6, _0209ACC4 ; =0x021C8F1C + strb r0, [sp, #0x0] + strb r0, [sp, #0x1] + add r5, sp, #0x8 + mov r4, r9 + mov r11, r9 +_0209AC34: + mov r8, r11 + add r7, sp, #0x0 +_0209AC3C: + ldrb r0, [r7, #0x0] + cmp r0, #0x0 + beq _0209AC80 + mov r0, r8, lsl #0x1 + ldrh r2, [r5, r0] + ldr r1, [r6, r8, lsl #0x2] + mov r0, r10 + bl FUN_0209ACC8 + str r0, [sp, #0x4] + cmp r0, #0x0 + beq _0209AC74 + mvn r1, #0x0 + cmp r0, r1 + bne _0209AC9C +_0209AC74: + mvn r1, #0x0 + cmp r0, r1 + streqb r4, [r7, #0x0] +_0209AC80: + add r8, r8, #0x1 + cmp r8, #0x2 + add r7, r7, #0x1 + blt _0209AC3C + add r9, r9, #0x1 + cmp r9, #0x3 + blt _0209AC34 +_0209AC9C: + ldr r1, [sp, #0x4] + mvn r0, #0x0 + cmp r1, r0 + moveq r0, #0x0 + streq r0, [sp, #0x4] + ldr r0, [sp, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209ACC0: .word 0x021C8F24 +_0209ACC4: .word 0x021C8F1C + + arm_func_start FUN_0209ACC8 +FUN_0209ACC8: ; 0x0209ACC8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + movs r5, r1 + mov r6, r0 + mov r4, r2 + addeq sp, sp, #0x8 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + bl FUN_0209CB44 + bl FUN_0209CBE8 + mov r2, r5 + mov r0, #0x0 + mov r1, #0x35 + bl FUN_0209CB78 + mov r0, r6 + mov r2, r4 + mov r3, #0x0 + str r3, [sp, #0x0] + mov r1, #0x1 + bl FUN_0209AE18 + mov r4, r0 + bl FUN_0209CB24 + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209AD34 +FUN_0209AD34: + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r6, #0x0 + mov r8, r0 + mov r7, r1 + mov r5, r6 + add r4, sp, #0x0 +_0209AD50: + mov r0, r8 + mov r1, r4 + mov r6, r6, lsl #0x8 + bl FUN_0209ADE4 + ldr r2, [sp, #0x0] + cmp r8, r2 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r8, r2 + cmp r0, #0xff + bhi _0209ADB0 + cmp r5, #0x3 + beq _0209AD9C + ldrb r1, [r2, #0x0] + add r8, r2, #0x1 + cmp r1, #0x2e + bne _0209ADB0 +_0209AD9C: + cmp r5, #0x3 + bne _0209ADC0 + ldrb r1, [r8, #0x0] + cmp r1, #0x0 + beq _0209ADC0 +_0209ADB0: + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_0209ADC0: + add r5, r5, #0x1 + cmp r5, #0x4 + orr r6, r6, r0 + blt _0209AD50 + str r6, [r7, #0x0] + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_0209ADE4 +FUN_0209ADE4: ; 0x0209ADE4 + str r0, [r1, #0x0] + mov r12, #0x0 + mov r2, #0xa +_0209ADF0: + ldrb r3, [r0, #0x0] + sub r3, r3, #0x30 + and r3, r3, #0xff + cmp r3, #0x9 + mlals r12, r2, r12, r3 + addls r0, r0, #0x1 + strls r0, [r1, #0x0] + bls _0209ADF0 + mov r0, r12 + bx lr + + arm_func_start FUN_0209AE18 +FUN_0209AE18: ; 0x0209AE18 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + mov r9, r2 + mov r2, r9, asr #0x8 + mov r10, r1 + orr r1, r2, r9, lsl #0x8 + strh r1, [sp, #0x10] + cmp r10, #0x20 + mov r5, #0x0 + movne r1, #0x1 + strneh r1, [sp, #0x12] + ldreq r1, _0209B0C8 ; =0x00001001 + strh r5, [sp, #0x16] + streqh r1, [sp, #0x12] + mov r1, #0x100 + strh r1, [sp, #0x14] + add r1, sp, #0x1c + strh r5, [sp, #0x18] + strh r5, [sp, #0x1a] + str r5, [sp, #0xc] + ldrb r6, [r0], #0x1 + str r3, [sp, #0x0] + ldr r8, [sp, #0x70] + add r2, r1, #0x1 + cmp r6, #0x0 + beq _0209AED8 + add r4, sp, #0x10 +_0209AE84: + cmp r6, #0x2e + beq _0209AEB8 + sub r3, r2, r4 + cmp r3, #0x3c + addge sp, sp, #0x4c + mvnge r0, #0x0 + ldmgeia sp!, {r4-r11,lr} + bxge lr + strb r6, [r2], #0x1 + ldr r3, [sp, #0xc] + add r3, r3, #0x1 + str r3, [sp, #0xc] + b _0209AECC +_0209AEB8: + ldr r3, [sp, #0xc] + strb r3, [r1, #0x0] + mov r1, r2 + str r5, [sp, #0xc] + add r2, r2, #0x1 +_0209AECC: + ldrb r6, [r0], #0x1 + cmp r6, #0x0 + bne _0209AE84 +_0209AED8: + ldr r0, [sp, #0xc] + mov r3, #0x0 + strb r0, [r1, #0x0] + strb r3, [r2, #0x0] + mov r0, r10, lsr #0x8 + strb r0, [r2, #0x1] + strb r10, [r2, #0x2] + strb r3, [r2, #0x3] + mov r3, #0x1 + add r0, sp, #0x10 + add r1, r2, #0x5 + sub r1, r1, r0 + strb r3, [r2, #0x4] + bl FUN_0209C030 + mov r6, #0x0 + bl OS_GetTick + mov r5, r0, lsr #0x10 + mov r0, #0x2 + str r0, [sp, #0x8] + mov r0, #0x1 + orr r5, r5, r1, lsl #0x10 + str r0, [sp, #0x4] + mvn r11, #0x0 + b _0209B084 +_0209AF38: + bl FUN_0209BF9C +_0209AF3C: ; 0x0209AF3C + cmp r0, #0x0 + bne _0209AF4C + bl FUN_020A005C + b _0209B084 +_0209AF4C: + add r0, sp, #0xc + bl FUN_0209C638 + ldr r1, [sp, #0xc] + cmp r1, #0xc + bls _0209B07C + ldrh r3, [r0, #0x0] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r9, r2, lsr #0x10 + bne _0209B07C + ldrb r2, [r0, #0x3] + and r2, r2, #0xf + cmp r2, #0x3 + moveq r6, r11 + beq _0209B07C + cmp r2, #0x0 + bne _0209B07C + ldrb r2, [r0, #0x4] + add r4, r0, r1 + ldrb r1, [r0, #0x5] + add r0, r0, #0xc + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + sub r7, r1, #0x1 + beq _0209AFCC +_0209AFB8: + bl FUN_0209B0D0 +_0209AFBC: ; 0x0209AFBC + cmp r7, #0x0 + add r0, r0, #0x4 + sub r7, r7, #0x1 + bne _0209AFB8 +_0209AFCC: + cmp r0, r4 + bhs _0209B07C +_0209AFD4: + bl FUN_0209B0D0 + ldrb r7, [r0, #0x8] + ldrb r1, [r0, #0x9] + ldrb r3, [r0, #0x0] + ldrb r2, [r0, #0x1] + orr r1, r1, r7, lsl #0x8 + mov r1, r1, lsl #0x10 + orr r3, r2, r3, lsl #0x8 + mov r2, r1, lsr #0x10 + mov r1, r3, lsl #0x10 + cmp r10, r1, lsr #0x10 + bne _0209B06C + cmp r10, #0xc + beq _0209B04C + add r1, r0, #0x6 + add r3, r1, r2 + add r4, r0, #0x8 + ldrb r1, [r1, r2] + ldrb r0, [r3, #0x1] + add r3, r4, r2 + ldrb r2, [r4, r2] + orr r0, r0, r1, lsl #0x8 + ldrb r1, [r3, #0x1] + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + orr r0, r1, r2, lsl #0x8 + mov r1, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r6, r1, r0, lsr #0x10 + b _0209B07C +_0209B04C: + cmp r2, r8 + ldrhi r6, [sp, #0x8] + bhi _0209B07C + ldr r1, [sp, #0x0] + add r0, r0, #0xa + bl MI_CpuCopy8 + ldr r6, [sp, #0x4] + b _0209B07C +_0209B06C: + add r1, r2, #0xa + add r0, r0, r1 + cmp r0, r4 + blo _0209AFD4 +_0209B07C: + ldr r0, [sp, #0xc] + bl FUN_0209C52C +_0209B084: + ldr r0, _0209B0CC ; =0x021C8EFC + ldr r0, [r0, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209B0B8 + cmp r6, #0x0 + bne _0209B0B8 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r5 + cmp r0, #0xf + blt _0209AF38 +_0209B0B8: + mov r0, r6 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209B0C8: .word 0x00001001 +_0209B0CC: .word 0x021C8EFC + + arm_func_start FUN_0209B0D0 +FUN_0209B0D0: + ldrb r2, [r0], #0x1 + cmp r2, #0x0 + bxeq lr +_0209B0DC: + and r1, r2, #0xc0 + cmp r1, #0xc0 + addeq r0, r0, #0x1 + bxeq lr + add r0, r0, r2 + ldrb r2, [r0], #0x1 + cmp r2, #0x0 + bne _0209B0DC + bx lr + + arm_func_start FUN_0209B100 +FUN_0209B100: ; 0x0209B100 + stmdb sp!, {r4,lr} + bl FUN_0209CB44 + bl FUN_0209CBE8 + ldr r1, _0209B168 ; =0x021C8ED4 + mov r0, #0x44 + ldr r2, [r1, #0x0] + mov r1, #0x43 + bl FUN_0209CB78 + ldr r4, _0209B16C ; =0x021C924A + mov r1, #0x7 + mov r0, r4 + mov r2, #0x0 + bl FUN_0209B8E0 + mov r1, #0xff + add r2, r0, #0x1 + strb r1, [r0, #0x0] + mov r0, #0x0 + mov r1, #0x12c + sub r3, r2, r4 + bl FUN_0209B8A0 + sub r1, r0, r4 + mov r0, r4 + bl FUN_0209C030 + bl FUN_0209CB24 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209B168: .word 0x021C8ED4 +_0209B16C: .word 0x021C924A + + arm_func_start FUN_0209B170 +FUN_0209B170: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + bl FUN_0209CB44 + bl FUN_0209CBE8 + cmp r4, #0x1 + bne _0209B1A8 + ldr r1, _0209B28C ; =0x021C8ED4 + mov r0, #0x44 + ldr r2, [r1, #0x0] + mov r1, #0x43 + bl FUN_0209CB78 + b _0209B1B8 +_0209B1A8: + mov r0, #0x44 + mov r1, #0x43 + mvn r2, #0x0 + bl FUN_0209CB78 +_0209B1B8: + mov r6, #0x0 +_0209B1BC: + mov r0, r4 + bl FUN_0209B6BC + mov r1, r6 + bl FUN_0209B2FC + movs r7, r0 + bne _0209B1E0 + add r6, r6, #0x1 + cmp r6, #0x4 + blt _0209B1BC +_0209B1E0: + bl FUN_0209CB24 + cmp r7, #0x2 + bne _0209B224 + ldr r0, _0209B290 ; =0x021C8F00 + mov r1, #0x3 + ldr r3, [r0, #0x0] + ldr r2, _0209B294 ; =0x021C8EEC + mov r3, r3, lsr #0x1 + str r3, [r5, #0x0] + ldr r3, [r0, #0x0] + add sp, sp, #0x4 + mul r1, r3, r1 + mov r1, r1, lsr #0x3 + str r1, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_0209B224: + ldr r1, _0209B294 ; =0x021C8EEC + cmp r4, #0x1 + ldr r0, [r1, #0x0] + mov r0, r0, lsr #0x1 + str r0, [r1, #0x0] + str r0, [r5, #0x0] + beq _0209B24C + cmp r4, #0x2 + beq _0209B270 + b _0209B27C +_0209B24C: + cmp r0, #0x3c + bhs _0209B27C + mov r2, #0x1 + ldr r0, _0209B290 ; =0x021C8F00 + str r2, [r5, #0x0] + ldr r0, [r0, #0x0] + mov r0, r0, lsr #0x3 + str r0, [r1, #0x0] + b _0209B27C +_0209B270: + cmp r0, #0x3c + movcc r0, #0x1 + strcc r0, [r5, #0x0] +_0209B27C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209B28C: .word 0x021C8ED4 +_0209B290: .word 0x021C8F00 +_0209B294: .word 0x021C8EEC + + arm_func_start FUN_0209B298 +FUN_0209B298: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl FUN_0209CB44 + bl FUN_0209CBE8 + mov r0, #0x44 + mov r1, #0x43 + mvn r2, #0x0 + bl FUN_0209CB78 + mov r4, #0x0 +_0209B2BC: + bl FUN_0209B7D8 + mov r1, r4 + bl FUN_0209B2FC + mov r5, r0 + cmp r5, #0x1 + beq _0209B2E0 + add r4, r4, #0x1 + cmp r4, #0x4 + blt _0209B2BC +_0209B2E0: + bl FUN_0209CB24 + cmp r5, #0x1 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209B2FC +FUN_0209B2FC: ; 0x0209B2FC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + add r2, r1, #0x1 + mov r1, #0xf + mul r1, r2, r1 + str r1, [sp, #0x8] + str r0, [sp, #0x0] + bl OS_GetTick + mov r0, r0, lsr #0x10 + str r0, [sp, #0x4] + orr r0, r0, r1, lsl #0x10 + mov r4, #0x0 + str r0, [sp, #0x4] + mov r0, #0x3 + mov r9, r4 + ldr r5, _0209B698 ; =0x021C8F1C + mov r7, #0x2 + mov r8, #0x1 + ldr fp, _0209B69C ; =0x021C8EE0 + ldr r6, _0209B6A0 ; =0x021C8ED0 + str r0, [sp, #0xc] + b _0209B64C +_0209B354: + bl FUN_0209BF9C +_0209B358: ; 0x0209B358 + cmp r0, #0x0 + bne _0209B368 + bl FUN_020A005C + b _0209B64C +_0209B368: + add r0, sp, #0x10 + bl FUN_0209C638 + mov r10, r0 + ldr r0, [sp, #0x10] + cmp r0, #0xf0 + bls _0209B644 + ldrb r0, [r10, #0x0] + cmp r0, #0x2 + bne _0209B644 + ldrh r1, [r10, #0x6] + ldrh r2, [r10, #0x4] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + orr r1, r0, r1, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r0, r1 + bne _0209B644 + ldr r1, _0209B6A4 ; =0x021C8F14 + add r0, r10, #0x1c + bl FUN_0209F9A0 +_0209B3D0: ; 0x0209B3D0 + cmp r0, #0x0 + bne _0209B644 + ldrb r3, [r10, #0x10] + ldrb r0, [r10, #0x11] + ldrb r2, [r10, #0x12] + ldrb r1, [r10, #0x13] + orr r0, r0, r3, lsl #0x8 + mov r0, r0, lsl #0x10 + orr r1, r1, r2, lsl #0x8 + mov r0, r0, lsr #0x10 + mov r2, r0, lsl #0x10 + mov r0, r1, lsl #0x10 + orr r0, r2, r0, lsr #0x10 + ldrb r2, [r10, #0xec] + ldr r1, [sp, #0x10] + ldr r4, [sp, #0xc] + add r1, r10, r1 + cmp r2, #0x63 + bne _0209B644 + ldrb r2, [r10, #0xed] + cmp r2, #0x82 + bne _0209B644 + ldrb r2, [r10, #0xee] + cmp r2, #0x53 + bne _0209B644 + add r2, r10, #0xf0 + ldrb r3, [r10, #0xef] + cmp r3, #0x63 + bne _0209B644 + b _0209B630 +_0209B448: + cmp r3, #0x0 + beq _0209B630 + cmp r3, #0x33 + bgt _0209B48C + cmp r3, #0x33 + bge _0209B588 + cmp r3, #0x6 + bgt _0209B624 + cmp r3, #0x1 + blt _0209B624 + cmp r3, #0x1 + beq _0209B4AC + cmp r3, #0x3 + beq _0209B4E0 + cmp r3, #0x6 + beq _0209B514 + b _0209B624 +_0209B48C: + cmp r3, #0x35 + bgt _0209B4A0 + cmp r3, #0x35 + beq _0209B5C0 + b _0209B624 +_0209B4A0: + cmp r3, #0x36 + beq _0209B5F0 + b _0209B624 +_0209B4AC: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r6, #0x0] + b _0209B624 +_0209B4E0: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r11, #0x0] + b _0209B624 +_0209B514: + ldrb r3, [r2, #0x0] + cmp r3, #0x8 + strcc r9, [r5, #0x4] + blo _0209B554 + ldrb lr, [r2, #0x5] + ldrb r12, [r2, #0x6] + ldrb r10, [r2, #0x7] + ldrb r3, [r2, #0x8] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r5, #0x4] +_0209B554: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r3, r10, r3, lsr #0x10 + str r3, [r5, #0x0] + b _0209B624 +_0209B588: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r10, r10, r3, lsr #0x10 + ldr r3, _0209B6A8 ; =0x021C8F00 + str r10, [r3, #0x0] + b _0209B624 +_0209B5C0: + ldrb r3, [r2, #0x1] + cmp r3, #0x2 + beq _0209B5E0 + cmp r3, #0x5 + ldreq r3, _0209B6AC ; =0x021C8F04 + moveq r4, r7 + streq r0, [r3, #0x0] + b _0209B624 +_0209B5E0: + ldr r3, _0209B6B0 ; =0x021C8EE8 + mov r4, r8 + str r0, [r3, #0x0] + b _0209B624 +_0209B5F0: + ldrb lr, [r2, #0x1] + ldrb r12, [r2, #0x2] + ldrb r10, [r2, #0x3] + ldrb r3, [r2, #0x4] + orr r12, r12, lr, lsl #0x8 + mov r12, r12, lsl #0x10 + orr r3, r3, r10, lsl #0x8 + mov r10, r12, lsr #0x10 + mov r10, r10, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r10, r10, r3, lsr #0x10 + ldr r3, _0209B6B4 ; =0x021C8ED4 + str r10, [r3, #0x0] +_0209B624: + ldrb r3, [r2, #0x0] + add r3, r3, #0x1 + add r2, r2, r3 +_0209B630: + cmp r2, r1 + bhs _0209B644 + ldrb r3, [r2], #0x1 + cmp r3, #0xff + bne _0209B448 +_0209B644: + ldr r0, [sp, #0x10] + bl FUN_0209C52C +_0209B64C: + ldr r0, _0209B6B8 ; =0x021C8EFC + ldr r0, [r0, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209B688 + cmp r4, #0x0 + bne _0209B688 + bl OS_GetTick + mov r2, r0, lsr #0x10 + ldr r0, [sp, #0x4] + orr r2, r2, r1, lsl #0x10 + sub r1, r2, r0 + ldr r0, [sp, #0x8] + cmp r1, r0 + blt _0209B354 +_0209B688: + mov r0, r4 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209B698: .word 0x021C8F1C +_0209B69C: .word 0x021C8EE0 +_0209B6A0: .word 0x021C8ED0 +_0209B6A4: .word 0x021C8F14 +_0209B6A8: .word 0x021C8F00 +_0209B6AC: .word 0x021C8F04 +_0209B6B0: .word 0x021C8EE8 +_0209B6B4: .word 0x021C8ED4 +_0209B6B8: .word 0x021C8EFC + + arm_func_start FUN_0209B6BC +FUN_0209B6BC: ; 0x0209B6BC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, _0209B7CC ; =0x021C924A + mov r5, r0 + add r2, sp, #0x0 + mov r0, r4 + mov r1, #0x3 + bl FUN_0209B8E0 + mov r12, r0 + cmp r5, #0x0 + bne _0209B790 + mov r0, #0x32 + strb r0, [r12, #0x0] + mov r0, #0x4 + ldr r3, _0209B7D0 ; =0x021C8EE8 + strb r0, [r12, #0x1] + ldr r1, [r3, #0x0] + mov lr, #0x36 + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r1, r1, asr #0x8 + strb r1, [r12, #0x2] + ldr r1, [r3, #0x0] + ldr r2, _0209B7D4 ; =0x021C8ED4 + mov r1, r1, lsr #0x10 + strb r1, [r12, #0x3] + ldr r1, [r3, #0x0] + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r1, r1, asr #0x8 + strb r1, [r12, #0x4] + ldr r1, [r3, #0x0] + strb r1, [r12, #0x5] + strb lr, [r12, #0x6] + strb r0, [r12, #0x7] + ldr r0, [r2, #0x0] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0x8] + ldr r0, [r2, #0x0] + mov r0, r0, lsr #0x10 + strb r0, [r12, #0x9] + ldr r0, [r2, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0xa] + ldr r0, [r2, #0x0] + strb r0, [r12, #0xb] + add r12, r12, #0xc +_0209B790: + add r2, r12, #0x1 + mov lr, #0xff + sub r3, r2, r4 + mov r0, #0x0 + mov r1, #0x12c + strb lr, [r12, #0x0] + bl FUN_0209B8A0 + mov r1, r0 + mov r0, r4 + sub r1, r1, r4 + bl FUN_0209C030 +_0209B7BC: ; 0x0209B7BC + ldr r0, [sp, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209B7CC: .word 0x021C924A +_0209B7D0: .word 0x021C8EE8 +_0209B7D4: .word 0x021C8ED4 + + arm_func_start FUN_0209B7D8 +FUN_0209B7D8: ; 0x0209B7D8 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldr r4, _0209B898 ; =0x021C924A + add r2, sp, #0x0 + mov r0, r4 + mov r1, #0x1 + bl FUN_0209B8E0 + ldr r1, _0209B89C ; =0x021C8EE8 + mov r12, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _0209B85C + mov r0, #0x32 + strb r0, [r12, #0x0] + mov r0, #0x4 + strb r0, [r12, #0x1] + ldr r0, [r1, #0x0] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0x2] + ldr r0, [r1, #0x0] + mov r0, r0, lsr #0x10 + strb r0, [r12, #0x3] + ldr r0, [r1, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r0, r0, asr #0x8 + strb r0, [r12, #0x4] + ldr r0, [r1, #0x0] + strb r0, [r12, #0x5] + add r12, r12, #0x6 +_0209B85C: + add r2, r12, #0x1 + mov lr, #0xff + sub r3, r2, r4 + mov r0, #0x0 + mov r1, #0x12c + strb lr, [r12, #0x0] + bl FUN_0209B8A0 + mov r1, r0 + mov r0, r4 + sub r1, r1, r4 + bl FUN_0209C030 +_0209B888: ; 0x0209B888 + ldr r0, [sp, #0x0] + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209B898: .word 0x021C924A +_0209B89C: .word 0x021C8EE8 + + arm_func_start FUN_0209B8A0 +FUN_0209B8A0: ; 0x0209B8A0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r12, r0 + mov r5, r2 + cmp r3, r1 + bhs _0209B8D0 + sub r4, r1, r3 + mov r0, r5 + mov r1, r12 + mov r2, r4 + bl MI_CpuFill8 + add r5, r5, r4 +_0209B8D0: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209B8E0 +FUN_0209B8E0: ; 0x0209B8E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r1, #0x0 + mov r2, #0xec + mov r6, r0 + bl MI_CpuFill8 + ldr r0, _0209BA5C ; =0x00000101 + mov r1, #0x6 + strh r0, [r6, #0x0] + ldr r0, _0209BA60 ; =0x021C8F24 + strb r1, [r6, #0x2] + ldr r3, [r0, #0x8] + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x4] + umull lr, r12, r3, r2 + mla r12, r3, r1, r12 + ldr r1, [r0, #0xc] + ldr r7, [r0, #0x10] + mla r12, r1, r2, r12 + adds r3, r7, lr + ldr r1, [r0, #0x14] + str r3, [r0, #0x0] + adc r1, r1, r12 + str r1, [r0, #0x4] + mov r0, r1, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + cmp r4, #0x0 + mov r2, r3, asr #0x8 + mov r0, r1, lsl #0x10 + strne r1, [r4, #0x0] + mov r1, r0, lsr #0x10 + orr r2, r2, r3, lsl #0x8 + mov r0, r1, asr #0x8 + strh r2, [r6, #0x4] + orr r0, r0, r1, lsl #0x8 + strh r0, [r6, #0x6] + ldr r2, _0209BA64 ; =0x021C8F04 + ldr r0, _0209BA68 ; =0x021C8F14 + ldr r1, [r2, #0x0] + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + mov r1, r3, asr #0x8 + orr r1, r1, r3, lsl #0x8 + strh r1, [r6, #0xc] + ldr r2, [r2, #0x0] + add r1, r6, #0x1c + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 + mov r2, r3, asr #0x8 + orr r3, r2, r3, lsl #0x8 + mov r2, #0x6 + strh r3, [r6, #0xe] + bl MI_CpuCopy8 + ldr r0, _0209BA6C ; =0x00008263 + ldr r1, _0209BA70 ; =0x00006353 + strh r0, [r6, #0xec] + strh r1, [r6, #0xee] + ldr r0, _0209BA74 ; =0x00000135 + mov r1, #0x7 + strh r0, [r6, #0xf0] + strb r5, [r6, #0xf2] + mov r0, #0x3d + strb r0, [r6, #0xf3] + strb r1, [r6, #0xf4] + mov r3, #0x1 + ldr r0, _0209BA68 ; =0x021C8F14 + add r1, r6, #0xf6 + mov r2, #0x6 + strb r3, [r6, #0xf5] + bl MI_CpuCopy8 + mov r1, #0xc + strb r1, [r6, #0xfc] + mov r2, #0xa + ldr r0, _0209BA78 ; =0x02106224 + add r1, r6, #0xfe + strb r2, [r6, #0xfd] + bl MI_CpuCopy8 + mov r1, #0x37 + strb r1, [r6, #0x108] + mov r2, #0x3 + ldr r0, _0209BA7C ; =0x0000010D + strb r2, [r6, #0x109] + mov r1, #0x1 + strb r1, [r6, #0x10a] + strb r2, [r6, #0x10b] + mov r1, #0x6 + strb r1, [r6, #0x10c] + add r0, r6, r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209BA5C: .word 0x00000101 +_0209BA60: .word 0x021C8F24 +_0209BA64: .word 0x021C8F04 +_0209BA68: .word 0x021C8F14 +_0209BA6C: .word 0x00008263 +_0209BA70: .word 0x00006353 +_0209BA74: .word 0x00000135 +_0209BA78: .word 0x02106224 +_0209BA7C: .word 0x0000010D + + arm_func_start FUN_0209BA80 +FUN_0209BA80: ; 0x0209BA80 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldr r3, _0209BE40 ; =0x021C8EF8 + mov r1, #0x0 + ldr r0, _0209BE44 ; =0x021C8FD8 + mov r2, #0x64 + str r1, [r3, #0x0] + bl MI_CpuFill8 + ldr r0, _0209BE44 ; =0x021C8FD8 + mov r3, #0x180 + ldr r2, _0209BE48 ; =0x021C93A0 + ldr r1, _0209BE4C ; =0x021C9220 + str r3, [r0, #0x3c] + str r2, [r0, #0x40] + str r3, [r0, #0x48] + str r1, [r0, #0x4c] + bl FUN_0209CC28 + mov r11, #0x0 + mov r0, #0x1 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + str r0, [sp, #0x4c] + mov r1, r0 + ldr r0, _0209BE50 ; =0x021C8EC0 + ldr r5, [sp, #0x0] + str r1, [r0, #0x0] + mov r0, #0x2 + str r0, [sp, #0x10] + mov r0, r5 + str r0, [sp, #0x34] + str r0, [sp, #0x3c] + mov r0, #0x3 + str r0, [sp, #0x1c] + mov r0, r5 + str r0, [sp, #0x30] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0xc] + mov r0, #0x69 + str r0, [sp, #0x44] + mov r0, #0x3e8 + mov r6, r11 + mov r4, r11 + mov r10, r11 + str r11, [sp, #0x14] + str r11, [sp, #0x18] + str r11, [sp, #0x38] + str r11, [sp, #0x2c] + str r11, [sp, #0x40] + str r11, [sp, #0x48] + str r0, [sp, #0x8] +_0209BB50: + ldr r0, [sp, #0x8] + bl OS_Sleep + ldr r0, _0209BE40 ; =0x021C8EF8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _0209BE14 + bl OS_GetTick + mov r9, r0, lsr #0x10 + ldr r0, _0209BE54 ; =0x021C8EFC + orr r9, r9, r1, lsl #0x10 + ldr r0, [r0, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209BC8C + ldr r0, [sp, #0x4c] + subs r0, r0, #0x1 + str r0, [sp, #0x4c] + bne _0209BCA4 + ldr r0, _0209BE58 ; =0x021C8EC4 + ldr r0, [r0, #0x0] + ands r0, r0, #0x1 + beq _0209BBBC + cmp r11, #0x0 + bne _0209BCA4 + bl FUN_0209BE78 + ldr r11, [sp, #0xc] + b _0209BCA4 +_0209BBBC: + cmp r11, #0x3 + addls pc, pc, r11, lsl #0x2 + b _0209BCA4 +_0209BBC8: + b _0209BBD8 +_0209BBCC: + b _0209BC28 +_0209BBD0: + b _0209BC4C +_0209BBD4: + b _0209BCA4 +_0209BBD8: + ldr r0, [sp, #0x4] + cmp r0, #0x0 + ldrne r1, [sp, #0x10] + ldrne r0, _0209BE50 ; =0x021C8EC0 + strne r1, [r0, #0x0] + ldrne r0, [sp, #0x14] + strne r0, [sp, #0x4] + bl FUN_0209B298 +_0209BBF8: ; 0x0209BBF8 + cmp r0, #0x0 + beq _0209BC14 + ldr r1, [sp, #0x18] + add r0, sp, #0x4c + bl FUN_0209B170 +_0209BC0C: ; 0x0209BC0C + cmp r0, #0x0 + bne _0209BC20 +_0209BC14: + bl FUN_0209BE78 + ldr r11, [sp, #0x1c] + b _0209BCA4 +_0209BC20: + ldr r11, [sp, #0x20] + b _0209BCA4 +_0209BC28: + ldr r1, [sp, #0x24] + add r0, sp, #0x4c + bl FUN_0209B170 +_0209BC34: ; 0x0209BC34 + cmp r0, #0x0 + bne _0209BCA4 + ldr r0, [sp, #0x4c] + cmp r0, #0x3c + ldrcc r11, [sp, #0x10] + b _0209BCA4 +_0209BC4C: + ldr r1, [sp, #0x10] + add r0, sp, #0x4c + bl FUN_0209B170 +_0209BC58: ; 0x0209BC58 + cmp r0, #0x0 + ldrne r11, [sp, #0x28] + bne _0209BCA4 + ldr r0, [sp, #0x4c] + cmp r0, #0x3c + bhs _0209BCA4 + ldr r0, [sp, #0x1c] + bl FUN_020A0098 + ldr r0, [sp, #0x30] + ldr r11, [sp, #0x2c] + str r0, [sp, #0x4c] + str r0, [sp, #0x0] + b _0209BCA4 +_0209BC8C: + ldr r0, [sp, #0x34] + bl FUN_020A0098 + ldr r0, [sp, #0x3c] + ldr r11, [sp, #0x38] + str r0, [sp, #0x4c] + str r0, [sp, #0x0] +_0209BCA4: + ldr r1, [sp, #0x40] + ldr r0, _0209BE5C ; =0x021C8F78 +_0209BCAC: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + beq _0209BCD4 + ldrh r2, [r0, #0xa] + sub r2, r9, r2 + mov r2, r2, lsl #0x10 + mov r3, r2, asr #0x10 + ldr r2, _0209BE60 ; =0x000003BD + cmp r3, r2 + strgt r6, [r0, #0x0] +_0209BCD4: + add r0, r0, #0xc + add r1, r1, #0x1 + cmp r1, #0x8 + blt _0209BCAC + ldr r0, _0209BE64 ; =0x021C8EE0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209BD10 + ldr r1, [sp, #0x0] + subs r1, r1, #0x1 + str r1, [sp, #0x0] + bne _0209BD10 + bl FUN_0209F338 + ldr r0, [sp, #0x44] + str r0, [sp, #0x0] +_0209BD10: + ldr r0, _0209BE68 ; =0x021D3498 + ldr r7, [r0, #0x8] + cmp r7, #0x0 + beq _0209BDAC +_0209BD20: + ldr r0, [r7, #0xa4] + cmp r0, #0x0 + beq _0209BDA0 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _0209BDA0 + ldrb r2, [r0, #0x8] + cmp r2, #0x3 + bne _0209BD6C + ldr r1, [r0, #0x10] + sub r1, r9, r1 + cmp r1, #0x27 + ble _0209BD6C + strb r5, [r0, #0x8] + ldrh r1, [r0, #0x1a] + strh r1, [r0, #0x18] + ldr r1, [r0, #0x20] + str r1, [r0, #0x1c] + b _0209BDA0 +_0209BD6C: + cmp r2, #0x2 + bne _0209BDA0 + ldr r1, [r0, #0x10] + sub r1, r9, r1 + cmp r1, #0x27 + ble _0209BDA0 + ldr r1, [r0, #0x4] + cmp r1, #0x1 + bne _0209BDA0 + strb r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r0, [r0, #0x0] + bl OS_WakeupThreadDirect +_0209BDA0: + ldr r7, [r7, #0x68] + cmp r7, #0x0 + bne _0209BD20 +_0209BDAC: + ldr r7, [sp, #0x48] + ldr r8, _0209BE6C ; =0x021C9520 +_0209BDB4: + ldrh r0, [r8, #0x4] + cmp r0, #0x0 + beq _0209BDE4 + ldr r0, [r8, #0x2c] + sub r0, r9, r0 + cmp r0, #0xef + ble _0209BDE4 + ldr r1, _0209BE70 ; =0x021C8EF4 + ldr r0, [r8, #0x34] + ldr r1, [r1, #0x0] + blx r1 + strh r10, [r8, #0x4] +_0209BDE4: + add r8, r8, #0x38 + add r7, r7, #0x1 + cmp r7, #0x8 + blt _0209BDB4 + mov r0, r9 + bl FUN_020A01FC + ldr r0, _0209BE74 ; =0x021C8EF0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209BB50 + blx r0 + b _0209BB50 +_0209BE14: + ldr r0, _0209BE58 ; =0x021C8EC4 + ldr r0, [r0, #0x0] + ands r0, r0, #0x1 + bne _0209BE30 + cmp r11, #0x3 + beq _0209BE30 + bl FUN_0209B100 +_0209BE30: + bl FUN_0209CC10 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209BE40: .word 0x021C8EF8 +_0209BE44: .word 0x021C8FD8 +_0209BE48: .word 0x021C93A0 +_0209BE4C: .word 0x021C9220 +_0209BE50: .word 0x021C8EC0 +_0209BE54: .word 0x021C8EFC +_0209BE58: .word 0x021C8EC4 +_0209BE5C: .word 0x021C8F78 +_0209BE60: .word 0x000003BD +_0209BE64: .word 0x021C8EE0 +_0209BE68: .word 0x021D3498 +_0209BE6C: .word 0x021C9520 +_0209BE70: .word 0x021C8EF4 +_0209BE74: .word 0x021C8EF0 + + arm_func_start FUN_0209BE78 +FUN_0209BE78: ; 0x0209BE78 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r0, _0209BF3C ; =0x021C8ECC + ldr r0, [r0, #0x0] + blx r0 + ldr r0, _0209BF40 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + bl FUN_0209F338 + mov r0, #0x64 + bl OS_Sleep + ldr r0, _0209BF40 ; =0x021C8F04 + ldr r0, [r0, #0x0] + bl FUN_0209F338 + bl OS_GetTick + mov r4, r0, lsr #0x10 + orr r4, r4, r1, lsl #0x10 + ldr r6, _0209BF44 ; =0x021C8EAC + mov r7, #0x64 + ldr r5, _0209BF48 ; =0x021C8EFC + b _0209BF00 +_0209BED8: + ldrb r0, [r6, #0x0] + cmp r0, #0x0 + beq _0209BEF8 + mov r0, #0x4 + bl FUN_020A0098 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209BEF8: + mov r0, r7 + bl OS_Sleep +_0209BF00: + ldr r0, [r5, #0x0] + blx r0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r4 + cmp r0, #0x17 + blt _0209BED8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209BF3C: .word 0x021C8ECC +_0209BF40: .word 0x021C8F04 +_0209BF44: .word 0x021C8EAC +_0209BF48: .word 0x021C8EFC + + arm_func_start FUN_0209BF4C +FUN_0209BF4C: ; 0x0209BF4C + stmdb sp!, {r4,lr} + ldr r0, _0209BF98 ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r4, [r0, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r4, #0x60] + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r2, #0x0 + ldr r0, [r4, #0x5c] + mov r3, r2 + bl FUN_0209C0E8 +_0209BF88: ; 0x0209BF88 + mov r0, #0x0 + str r0, [r4, #0x60] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209BF98: .word 0x021D3498 + + arm_func_start FUN_0209BF9C +FUN_0209BF9C: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _0209C02C ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + beq _0209C01C + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _0209BFD4 + bl FUN_020A0538 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209BFD4: + ldr r1, [r0, #0x44] + cmp r1, #0x0 + bne _0209BFFC + ldrb r0, [r0, #0x8] + cmp r0, #0x4 + beq _0209BFFC + add r0, r0, #0xf6 + and r0, r0, #0xff + cmp r0, #0x1 + bhi _0209C00C +_0209BFFC: + add sp, sp, #0x4 + mov r0, r1 + ldmia sp!, {lr} + bx lr +_0209C00C: + add sp, sp, #0x4 + mvn r0, #0x0 + ldmia sp!, {lr} + bx lr +_0209C01C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C02C: .word 0x021D3498 + + arm_func_start FUN_0209C030 +FUN_0209C030: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r3, _0209C0E4 ; =0x021D3498 + mov r2, r0 + ldr r4, [r3, #0x4] + mov r3, r1 + ldr r5, [r4, #0xa4] + cmp r5, #0x0 + beq _0209C0D4 + ldr r4, [r5, #0x60] + cmp r4, #0x0 + beq _0209C0BC + ldr r0, [r5, #0x5c] + mov r1, r4 + bl FUN_0209C0E8 + ldr r1, [r5, #0x60] + mov r4, r0 + cmp r4, r1 + movcs r0, #0x0 + strcs r0, [r5, #0x60] + addcs sp, sp, #0x4 + subcs r0, r4, r1 + ldmcsia sp!, {r4-r5,lr} + bxcs lr + ldr r0, [r5, #0x5c] + sub r2, r1, r4 + add r1, r0, r4 + bl memmove + ldr r1, [r5, #0x60] + add sp, sp, #0x4 + sub r1, r1, r4 + mov r0, #0x0 + str r1, [r5, #0x60] + ldmia sp!, {r4-r5,lr} + bx lr +_0209C0BC: + mov r2, #0x0 + mov r3, r2 + bl FUN_0209C0E8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_0209C0D4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209C0E4: .word 0x021D3498 + + arm_func_start FUN_0209C0E8 +FUN_0209C0E8: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _0209C1CC ; =0x021D3498 + mov r7, r1 + ldr r12, [r12, #0x4] + mov r6, r2 + ldr r4, [r12, #0xa4] + mov r5, r3 + cmp r4, #0x0 + beq _0209C1BC + ldrb r12, [r4, #0x8] + cmp r12, #0xa + bne _0209C14C + cmp r7, #0x0 + beq _0209C12C + mov r2, r4 + bl FUN_0209EB00 +_0209C12C: + cmp r5, #0x0 + beq _0209C144 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209EB00 +_0209C144: + add r0, r7, r5 + b _0209C1A4 +_0209C14C: + cmp r12, #0xb + bne _0209C184 + cmp r7, #0x0 + beq _0209C164 + mov r2, r4 + bl FUN_0209EC40 +_0209C164: + cmp r5, #0x0 + beq _0209C17C + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209EC40 +_0209C17C: + add r0, r7, r5 + b _0209C1A4 +_0209C184: + ldrb r12, [r4, #0x9] + cmp r12, #0x0 + beq _0209C19C + str r4, [sp, #0x0] + bl FUN_020A03E0 + b _0209C1A4 +_0209C19C: + str r4, [sp, #0x0] + bl FUN_0209C1D4 +_0209C1A4: + ldr r1, _0209C1D0 ; =0x021C8EA8 + ldrb r1, [r1, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr +_0209C1BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209C1CC: .word 0x021D3498 +_0209C1D0: .word 0x021C8EA8 + + arm_func_start FUN_0209C1D4 +FUN_0209C1D4: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + mov r4, #0x0 + mov r10, r0 + ldr r8, [sp, #0x40] + mov r0, r4 + str r4, [sp, #0xc] + mov r9, r1 + mov r11, r2 + str r3, [sp, #0x8] + mov r6, r4 + str r0, [r8, #0x34] + bl OS_GetTick + mov r0, r0, lsr #0x10 + str r0, [sp, #0x10] + orr r0, r0, r1, lsl #0x10 + str r0, [sp, #0x10] + mov r0, r6 + str r0, [sp, #0x18] + mov r0, #0x1 + ldr r4, _0209C3EC ; =0x021C8EFC + str r0, [sp, #0x14] + b _0209C39C +_0209C230: + ldr r7, [r8, #0x28] + ldr r3, [sp, #0x8] + str r8, [sp, #0x0] + mov r0, r10 + mov r1, r9 + mov r2, r11 + str r6, [sp, #0x4] + bl FUN_0209C3F0 + bl OS_GetTick + mov r5, r0, lsr #0x10 + orr r5, r5, r1, lsl #0x10 +_0209C25C: + bl FUN_020A005C +_0209C260: ; 0x0209C260 + ldr r0, [r4, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C2B8 + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + bne _0209C2B8 + ldr r1, [r8, #0x28] + ldr r0, [r8, #0x30] + cmp r1, r0 + beq _0209C2B8 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r5 + cmp r0, #0xf + bge _0209C2B8 + cmp r6, #0x0 + beq _0209C25C + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + beq _0209C25C +_0209C2B8: + ldr r0, [r8, #0x30] + subs r7, r0, r7 + ldr r0, [sp, #0xc] + add r0, r0, r7 + str r0, [sp, #0xc] + beq _0209C2E4 + bl OS_GetTick + mov r0, r0, lsr #0x10 + str r0, [sp, #0x10] + orr r0, r0, r1, lsl #0x10 + str r0, [sp, #0x10] +_0209C2E4: + ldr r0, [r8, #0x30] + str r0, [r8, #0x28] + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + bne _0209C36C + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + bne _0209C36C + cmp r7, #0x0 + bne _0209C36C + cmp r6, #0x0 + bne _0209C370 + bl OS_GetTick + mov r5, r0, lsr #0x10 + orr r5, r5, r1, lsl #0x10 + b _0209C334 +_0209C324: + bl FUN_020A005C + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + bne _0209C35C +_0209C334: + ldr r0, [r4, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C35C + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r5 + cmp r0, #0xf + blt _0209C324 +_0209C35C: + ldrh r0, [r8, #0x2c] + cmp r0, #0x0 + ldreq r6, [sp, #0x14] + b _0209C370 +_0209C36C: + ldr r6, [sp, #0x18] +_0209C370: + cmp r7, r9 + addcc r10, r10, r7 + subcc r9, r9, r7 + blo _0209C39C + sub r1, r7, r9 + add r10, r11, r1 + ldr r0, [sp, #0x8] + ldr r11, [sp, #0x18] + sub r9, r0, r1 + mov r0, r11 + str r0, [sp, #0x8] +_0209C39C: + ldr r0, [r4, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C3DC + cmp r9, #0x0 + beq _0209C3DC + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + bne _0209C3DC + bl OS_GetTick + mov r2, r0, lsr #0x10 + ldr r0, [sp, #0x10] + orr r2, r2, r1, lsl #0x10 + sub r0, r2, r0 + cmp r0, #0x9f + blt _0209C230 +_0209C3DC: + ldr r0, [sp, #0xc] + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209C3EC: .word 0x021C8EFC + + arm_func_start FUN_0209C3F0 +FUN_0209C3F0: ; 0x0209C3F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r4, r3 + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + bl FUN_0209C44C +_0209C40C: ; 0x0209C40C + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + ldr r2, [sp, #0x10] + mov r0, r5 + mov r1, r4 + mov r3, #0x0 + bl FUN_0209C44C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209C44C +FUN_0209C44C: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r8, r2 + ldr r11, [r8, #0x34] + mov r10, r0 + movs r0, r3 + mov r0, r11, lsl #0x1 + movne r6, #0x1 + add r5, r0, #0x4 + mov r0, #0x18 + str r3, [sp, #0x4] + mov r9, r1 + ldreqh r6, [r8, #0x2c] + mov r4, #0x0 + str r0, [sp, #0x8] + b _0209C504 +_0209C48C: + ldr r0, _0209C528 ; =0x021C8EB0 + ldrh r7, [r8, #0x2e] + ldrh r0, [r0, #0x0] + ldr r1, [r8, #0x34] + cmp r7, r6 + movcs r7, r6 + cmp r0, r7 + movcc r7, r0 + ldr r0, [sp, #0x4] + cmp r0, #0x0 + biceq r7, r7, #0x1 + cmp r9, r7 + sub r0, r1, r11 + movcc r7, r9 + adds r0, r5, r0 + moveq r7, r4 + mov r11, r1 + sub r5, r0, #0x1 + cmp r7, #0x0 + beq _0209C518 + ldr r3, [sp, #0x8] + mov r0, r10 + mov r1, r7 + mov r2, r8 + str r4, [sp, #0x0] + sub r6, r6, r7 + bl FUN_0209E878 + bl OS_YieldThread + add r10, r10, r7 + sub r9, r9, r7 +_0209C504: + cmp r9, #0x0 + beq _0209C518 + ldrb r0, [r8, #0x8] + cmp r0, #0x4 + beq _0209C48C +_0209C518: + mov r0, r7 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209C528: .word 0x021C8EB0 + + arm_func_start FUN_0209C52C +FUN_0209C52C: ; 0x0209C52C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _0209C57C ; =0x021D3498 + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrb r2, [r1, #0x9] + cmp r2, #0x0 + beq _0209C56C + bl FUN_020A0738 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C56C: + bl FUN_0209C580 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C57C: .word 0x021D3498 + + arm_func_start FUN_0209C580 +FUN_0209C580: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r7, r0 + bl OS_DisableInterrupts + ldr r2, [r4, #0x44] + ldr r1, [r4, #0x3c] + mov r6, r0 + cmp r2, r1 + mov r5, #0x0 + bne _0209C5B4 + cmp r7, #0x0 + movne r5, #0x1 +_0209C5B4: + cmp r7, r2 + movcs r0, #0x0 + strcs r0, [r4, #0x44] + bhs _0209C5D8 + ldr r0, [r4, #0x40] + sub r2, r2, r7 + add r1, r0, r7 + str r2, [r4, #0x44] + bl memmove +_0209C5D8: + mov r0, r6 + bl OS_RestoreInterrupts + ldrb r0, [r4, #0x8] + cmp r0, #0xa + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r0, #0xb + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, [r4, #0x44] + cmp r0, #0x0 + beq _0209C620 + cmp r5, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr +_0209C620: + mov r0, r4 + mov r1, #0x1b + bl FUN_0209DF84 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209C638 +FUN_0209C638: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _0209C6BC ; =0x021D3498 + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + cmp r1, #0x0 + beq _0209C6A4 + ldrb r2, [r1, #0x8] + add r2, r2, #0xf6 + and r2, r2, #0xff + cmp r2, #0x1 + bhi _0209C678 + bl FUN_0209C74C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C678: + ldrb r2, [r1, #0x9] + cmp r2, #0x0 + beq _0209C694 + bl FUN_020A0790 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C694: + bl FUN_0209C6C0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C6A4: + mov r1, #0x0 + str r1, [r0, #0x0] + mov r0, r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C6BC: .word 0x021D3498 + + arm_func_start FUN_0209C6C0 +FUN_0209C6C0: ; 0x0209C6C0 + stmdb sp!, {r4-r8,lr} + mov r4, r1 + ldr r1, [r4, #0x44] + mov r5, r0 + cmp r1, #0x0 + bne _0209C728 + ldrb r0, [r4, #0x8] + cmp r0, #0x4 + bne _0209C728 + bl OS_DisableInterrupts + mov r8, r0 + mov r7, #0x2 + mov r6, #0x0 + b _0209C704 +_0209C6F8: + mov r0, r6 + str r7, [r4, #0x4] + bl OS_SleepThread +_0209C704: + ldr r0, [r4, #0x44] + cmp r0, #0x0 + bne _0209C71C + ldrb r0, [r4, #0x8] + cmp r0, #0x4 + beq _0209C6F8 +_0209C71C: + mov r0, r8 + bl OS_RestoreInterrupts +_0209C724: ; 0x0209C724 + b _0209C72C +_0209C728: + bl OS_YieldThread +_0209C72C: + ldr r0, [r4, #0x44] + str r0, [r5, #0x0] + ldr r0, [r5, #0x0] + cmp r0, #0x0 + ldrne r0, [r4, #0x40] + moveq r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_0209C74C +FUN_0209C74C: ; 0x0209C74C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r1 + mov r9, r0 + bl OS_DisableInterrupts + ldr r7, [r8, #0x44] + mov r6, r0 + cmp r7, #0x0 + bne _0209C790 + mov r5, #0x3 + mov r4, #0x0 +_0209C778: + mov r0, r4 + str r5, [r8, #0x4] + bl OS_SleepThread + ldr r7, [r8, #0x44] + cmp r7, #0x0 + beq _0209C778 +_0209C790: + mov r0, r6 + bl OS_RestoreInterrupts + str r7, [r9, #0x0] + ldr r0, [r8, #0x40] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_0209C7AC +FUN_0209C7AC: ; 0x0209C7AC + stmdb sp!, {r4-r6,lr} + ldr r0, _0209C838 ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r4, [r0, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrb r0, [r4, #0x9] + cmp r0, #0x0 + beq _0209C7DC + mov r0, r4 + bl FUN_020A0320 +_0209C7DC: + bl OS_GetTick + mov r6, r0, lsr #0x10 + orr r6, r6, r1, lsl #0x10 + ldr r5, _0209C83C ; =0x021C8EFC + b _0209C7F4 +_0209C7F0: + bl FUN_020A005C +_0209C7F4: + ldr r0, [r5, #0x0] + blx r0 + cmp r0, #0x0 + beq _0209C828 + ldrb r0, [r4, #0x8] + cmp r0, #0x0 + beq _0209C828 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + sub r0, r0, r6 + cmp r0, #0x27 + blt _0209C7F0 +_0209C828: + mov r0, #0x0 + strb r0, [r4, #0x8] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209C838: .word 0x021D3498 +_0209C83C: .word 0x021C8EFC + + arm_func_start FUN_0209C840 +FUN_0209C840: + stmdb sp!, {r4,lr} + ldr r0, _0209C880 ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r4, [r0, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldrb r0, [r4, #0x9] + cmp r0, #0x0 + beq _0209C870 + mov r0, r4 + bl FUN_020A035C +_0209C870: + mov r0, r4 + bl FUN_0209C884 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209C880: .word 0x021D3498 + + arm_func_start FUN_0209C884 +FUN_0209C884: ; 0x0209C884 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_YieldThread + ldrb r1, [r4, #0x8] + add r0, r1, #0xfd + and r0, r0, #0xff + cmp r0, #0x1 + bhi _0209C8C0 + mov r0, r4 + mov r1, #0x19 + bl FUN_0209DF70 + mov r0, #0x7 + strb r0, [r4, #0x8] + ldmia sp!, {r4,lr} + bx lr +_0209C8C0: + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + mov r0, r4 + mov r1, #0x1a + bl FUN_0209DF84 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_0209C8E0 +FUN_0209C8E0: ; 0x0209C8E0 + ldr r2, _0209C930 ; =0x021D3498 + ldr r2, [r2, #0x4] + ldr r3, [r2, #0xa4] + cmp r3, #0x0 + beq _0209C928 + ldrb r2, [r3, #0x8] + cmp r2, #0x4 + beq _0209C908 + cmp r2, #0xa + bne _0209C928 +_0209C908: + cmp r0, #0x0 + ldrneh r2, [r3, #0x18] + strneh r2, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, [r3, #0x14] + strne r0, [r1, #0x0] + ldr r0, [r3, #0x1c] + bx lr +_0209C928: + mov r0, #0x0 + bx lr + .balign 4 +_0209C930: .word 0x021D3498 + + arm_func_start FUN_0209C934 +FUN_0209C934: ; 0x0209C934 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _0209C98C ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + beq _0209C97C + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _0209C96C + bl FUN_020A0874 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C96C: + bl FUN_0209C990 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209C97C: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209C98C: .word 0x021D3498 + + arm_func_start FUN_0209C990 +FUN_0209C990: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + bl FUN_0209CC3C + mov r8, r0 + mov r9, #0x0 + mov r11, r9 + mov r4, #0x1 + mov r6, #0x2 + mov r5, #0x18 +_0209C9B8: + str r8, [r10, #0x28] + strb r6, [r10, #0x8] + bl OS_GetTick + mov r2, r0, lsr #0x10 + orr r2, r2, r1, lsl #0x10 + str r2, [r10, #0x10] + mov r0, r10 + mov r1, r6 + mov r2, r5 + bl FUN_0209DF98 + bl OS_DisableInterrupts + mov r7, r0 + ldr r0, _0209CA50 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209CA04 + mov r0, r11 + str r4, [r10, #0x4] + bl OS_SleepThread +_0209CA04: + mov r0, r7 + bl OS_RestoreInterrupts + ldrb r0, [r10, #0x8] + cmp r0, #0x4 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, _0209CA50 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _0209CA40 + add r9, r9, #0x1 + cmp r9, #0x3 + blo _0209C9B8 +_0209CA40: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209CA50: .word 0x021C8F04 + + arm_func_start FUN_0209CA54 +FUN_0209CA54: ; 0x0209CA54 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _0209CAA4 ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrb r1, [r0, #0x9] + cmp r1, #0x0 + beq _0209CA94 + bl FUN_020A09CC + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_0209CA94: + bl FUN_0209CAC4 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209CAA4: .word 0x021D3498 + + arm_func_start FUN_0209CAA8 +FUN_0209CAA8: + ldr r1, _0209CAC0 ; =0x021D3498 + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + cmp r1, #0x0 + strne r0, [r1, #0x38] + bx lr + .balign 4 +_0209CAC0: .word 0x021D3498 + + arm_func_start FUN_0209CAC4 +FUN_0209CAC4: ; 0x0209CAC4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_0209CC3C + str r0, [r5, #0x28] + mov r0, #0x1 + strb r0, [r5, #0x8] + bl OS_DisableInterrupts + mov r4, r0 + mov r1, #0x1 + mov r0, #0x0 + str r1, [r5, #0x4] + bl OS_SleepThread + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_0209CB0C +FUN_0209CB0C: ; 0x0209CB0C + ldr r1, _0209CB20 ; =0x021D3498 + ldr r1, [r1, #0x4] + ldr r1, [r1, #0xa4] + str r1, [r0, #0xa4] + bx lr + .balign 4 +_0209CB20: .word 0x021D3498 + + arm_func_start FUN_0209CB24 +FUN_0209CB24: ; 0x0209CB24 + ldr r0, _0209CB40 ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r1, [r0, #0xa4] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + bx lr + .balign 4 +_0209CB40: .word 0x021D3498 + + arm_func_start FUN_0209CB44 +FUN_0209CB44: ; 0x0209CB44 + ldr r0, _0209CB74 ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r1, [r0, #0xa4] + cmp r1, #0x0 + bxeq lr + str r0, [r1, #0x0] + mov r0, #0x0 + strb r0, [r1, #0x8] + str r0, [r1, #0x44] + str r0, [r1, #0x60] + str r0, [r1, #0x38] + bx lr + .balign 4 +_0209CB74: .word 0x021D3498 + + arm_func_start FUN_0209CB78 +FUN_0209CB78: ; 0x0209CB78 + stmdb sp!, {r4,lr} + ldr r3, _0209CBDC ; =0x021D3498 + ldr r3, [r3, #0x4] + ldr r4, [r3, #0xa4] + cmp r4, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r3, _0209CBE0 ; =0x7F000001 + cmp r2, r3 + ldreq r2, _0209CBE4 ; =0x021C8F04 + ldreq r2, [r2, #0x0] + cmp r0, #0x0 + strh r1, [r4, #0x1a] + ldrh r1, [r4, #0x1a] + strh r1, [r4, #0x18] + str r2, [r4, #0x20] + ldr r1, [r4, #0x20] + str r1, [r4, #0x1c] + strneh r0, [r4, #0xa] + ldmneia sp!, {r4,lr} + bxne lr + bl FUN_0209CC8C + strh r0, [r4, #0xa] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209CBDC: .word 0x021D3498 +_0209CBE0: .word 0x7F000001 +_0209CBE4: .word 0x021C8F04 + + arm_func_start FUN_0209CBE8 +FUN_0209CBE8: ; 0x0209CBE8 + ldr r0, _0209CC0C ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r1, [r0, #0xa4] + cmp r1, #0x0 + movne r0, #0xa + strneb r0, [r1, #0x8] + movne r0, #0x0 + strne r0, [r1, #0x44] + bx lr + .balign 4 +_0209CC0C: .word 0x021D3498 + + arm_func_start FUN_0209CC10 +FUN_0209CC10: ; 0x0209CC10 + ldr r0, _0209CC24 ; =0x021D3498 + mov r1, #0x0 + ldr r0, [r0, #0x4] + str r1, [r0, #0xa4] + bx lr + .balign 4 +_0209CC24: .word 0x021D3498 + + arm_func_start FUN_0209CC28 +FUN_0209CC28: ; 0x0209CC28 + ldr r1, _0209CC38 ; =0x021D3498 + ldr r1, [r1, #0x4] + str r0, [r1, #0xa4] + bx lr + .balign 4 +_0209CC38: .word 0x021D3498 + + arm_func_start FUN_0209CC3C +FUN_0209CC3C: ; 0x0209CC3C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _0209CC88 ; =0x021C8F24 + ldr r3, [r1, #0x8] + ldr r2, [r1, #0x0] + ldr r0, [r1, #0x4] + umull lr, r12, r3, r2 + mla r12, r3, r0, r12 + ldr r0, [r1, #0xc] + ldr r3, [r1, #0x10] + mla r12, r0, r2, r12 + adds r2, r3, lr + ldr r0, [r1, #0x14] + str r2, [r1, #0x0] + adc r0, r0, r12 + str r0, [r1, #0x4] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209CC88: .word 0x021C8F24 + + arm_func_start FUN_0209CC8C +FUN_0209CC8C: ; 0x0209CC8C + stmdb sp!, {r4-r8,lr} + ldr r0, _0209CD30 ; =0x021D3498 + ldr r6, [r0, #0x8] + ldr r2, _0209CD34 ; =0x021C8EBC + mov r4, #0x400 + mov r3, #0x1 + mov r5, #0x0 + ldr r1, _0209CD38 ; =0x00001388 +_0209CCAC: + ldrh r12, [r2, #0x0] + mov r0, r5 + add r12, r12, #0x1 + strh r12, [r2, #0x0] + ldrh r12, [r2, #0x0] + cmp r12, #0x400 + blo _0209CCD0 + cmp r12, r1 + blo _0209CCD4 +_0209CCD0: + strh r4, [r2, #0x0] +_0209CCD4: + mov r8, r6 + cmp r6, #0x0 + beq _0209CD18 + ldrh r7, [r2, #0x0] +_0209CCE4: + ldr lr, [r8, #0xa4] + cmp lr, #0x0 + beq _0209CD0C + ldr r12, [lr, #0x0] + cmp r12, #0x0 + beq _0209CD0C + ldrh r12, [lr, #0xa] + cmp r12, r7 + moveq r0, r3 + beq _0209CD18 +_0209CD0C: + ldr r8, [r8, #0x68] + cmp r8, #0x0 + bne _0209CCE4 +_0209CD18: + cmp r0, #0x0 + bne _0209CCAC + ldr r0, _0209CD34 ; =0x021C8EBC + ldrh r0, [r0, #0x0] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209CD30: .word 0x021D3498 +_0209CD34: .word 0x021C8EBC +_0209CD38: .word 0x00001388 + + arm_func_start FUN_0209CD3C +FUN_0209CD3C: ; 0x0209CD3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _0209CDAC ; =0x00000806 + add r4, sp, #0x0 +_0209CD4C: + mov r0, r4 + bl FUN_0209F57C + ldr r3, [sp, #0x0] + cmp r3, #0x22 + bls _0209CDA4 + ldrh r2, [r0, #0xc] + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + cmp r1, #0x800 + beq _0209CD88 + cmp r1, r5 + beq _0209CD98 + b _0209CDA4 +_0209CD88: + add r0, r0, #0xe + sub r1, r3, #0xe + bl FUN_0209CDB0 + b _0209CDA4 +_0209CD98: + add r0, r0, #0xe + sub r1, r3, #0xe + bl FUN_0209E614 +_0209CDA4: + bl FUN_0209F51C + b _0209CD4C + .balign 4 +_0209CDAC: .word 0x00000806 + + arm_func_start FUN_0209CDB0 +FUN_0209CDB0: ; 0x0209CDB0 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldrh r12, [r4, #0xc] + ldrh r6, [r4, #0x10] + ldrh r2, [r4, #0xe] + ldrh r0, [r4, #0x12] + mov r5, r6, asr #0x8 + mov r3, r12, asr #0x8 + orr r5, r5, r6, lsl #0x8 + orr r12, r3, r12, lsl #0x8 + mov r3, r5, lsl #0x10 + mov r5, r0, asr #0x8 + mov r12, r12, lsl #0x10 + mov lr, r2, asr #0x8 + mov r6, r3, lsr #0x10 + orr r0, r5, r0, lsl #0x8 + mov r3, r12, lsr #0x10 + orr r2, lr, r2, lsl #0x8 + mov r5, r6, lsl #0x10 + mov r0, r0, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r0, r5, r0, lsr #0x10 + orr r2, r3, r2, lsr #0x10 + mov r5, r1 + cmp r0, r2 + beq _0209CEF0 + bl FUN_0209F9CC +_0209CE24: ; 0x0209CE24 + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrh r1, [r4, #0x2] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + cmp r5, r0, lsr #0x10 + addcc sp, sp, #0x8 + ldmccia sp!, {r4-r6,lr} + bxcc lr + ldrb r1, [r4, #0x0] + mov r0, r4 + and r1, r1, #0xf + mov r1, r1, lsl #0x2 + bl FUN_0209FB84 + ldr r1, _0209CFA0 ; =0x0000FFFF + cmp r0, r1 + addne sp, sp, #0x8 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrh r2, [r4, #0x10] + ldrh r12, [r4, #0x12] + ldr r1, _0209CFA4 ; =0x021C8F04 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r2, r12, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r2, r12, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + ldr r1, [r1, #0x0] + orr r0, r2, r0, lsr #0x10 + cmp r1, r0 + bne _0209CEF0 + ldrh r2, [r4, #0xc] + ldrh r12, [r4, #0xe] + sub r0, r4, #0x8 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r12, asr #0x8 + mov r3, r1, lsr #0x10 + orr r1, r2, r12, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r2, r1, lsr #0x10 + mov r2, #0x1 + bl FUN_0209F12C +_0209CEF0: + add r1, sp, #0x0 + mov r0, r4 + bl FUN_0209CFAC + movs r4, r0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrh r2, [r4, #0x2] + ldrb r3, [r4, #0x0] + ldrb r12, [r4, #0x9] + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + and r3, r3, #0xf + mov r2, r1, lsr #0x10 + cmp r12, #0x11 + add r1, r4, r3, lsl #0x2 + sub r2, r2, r3, lsl #0x2 + bne _0209CF44 + bl FUN_0209D2BC + b _0209CF70 +_0209CF44: + ldr r3, _0209CFA4 ; =0x021C8F04 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + beq _0209CF70 + cmp r12, #0x1 + bne _0209CF64 + bl FUN_0209E2E0 + b _0209CF70 +_0209CF64: + cmp r12, #0x6 + bne _0209CF70 + bl FUN_0209D4D8 +_0209CF70: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, _0209CFA8 ; =0x021C8EF4 + sub r0, r4, #0xe + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209CFA0: .word 0x0000FFFF +_0209CFA4: .word 0x021C8F04 +_0209CFA8: .word 0x021C8EF4 + + arm_func_start FUN_0209CFAC +FUN_0209CFAC: ; 0x0209CFAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r6, #0x0 + mov r10, r0 + str r6, [r1, #0x0] + ldrh r3, [r10, #0x6] + str r1, [sp, #0x0] + ldr r2, _0209D2A4 ; =0x00003FFF + mov r1, r3, asr #0x8 + orr r1, r1, r3, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + str r1, [sp, #0x4] + ands r1, r1, r2 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldrh r1, [r10, #0xc] + ldrh r3, [r10, #0xe] + ldrb r4, [r10, #0x0] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + and r3, r4, #0xf + ldrh r9, [r10, #0x4] + mov r2, r2, lsl #0x10 + mov r1, r0, lsl #0x10 + ldr r5, _0209D2A8 ; =0x021C9520 + mov r0, r6 + mov r7, r3, lsl #0x2 + orr r4, r2, r1, lsr #0x10 +_0209D034: + ldrh r2, [r5, #0x4] + cmp r2, #0x0 + beq _0209D058 + ldr r1, [r5, #0x0] + cmp r1, r4 + bne _0209D058 + ldrh r1, [r5, #0x6] + cmp r1, r9 + beq _0209D078 +_0209D058: + cmp r2, #0x0 + bne _0209D068 + cmp r6, #0x0 + moveq r6, r5 +_0209D068: + add r0, r0, #0x1 + cmp r0, #0x8 + add r5, r5, #0x38 + blo _0209D034 +_0209D078: + ldrh r2, [r10, #0x2] + cmp r0, #0x8 + ldr r1, _0209D2AC ; =0x00001FFF + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + ldr r0, [sp, #0x4] + and r8, r0, r1 + sub r0, r2, r7 + str r0, [sp, #0x8] + mov r0, r8, lsl #0x3 + str r0, [sp, #0xc] + ldr r0, [sp, #0x8] + add r11, r0, r8, lsl #0x3 + bne _0209D150 + cmp r6, #0x0 + beq _0209D0C8 + cmp r11, #0x1000 + bls _0209D0D8 +_0209D0C8: + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,lr} + bx lr +_0209D0D8: + ldr r1, _0209D2B0 ; =0x021C8EC8 + ldr r0, _0209D2B4 ; =0x0000100E + ldr r1, [r1, #0x0] + add r0, r7, r0 + mov r5, r6 + blx r1 + str r0, [r6, #0x34] + ldr r0, [r6, #0x34] + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + str r4, [r6, #0x0] + strh r9, [r6, #0x6] + mov r0, #0x0 + strh r0, [r6, #0x8] + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + str r0, [r6, #0x2c] + ldr r1, [r6, #0x34] + mov r0, r10 + add r1, r1, #0xe + add r1, r1, r7 + str r1, [r6, #0x30] + ldr r1, [r6, #0x34] + mov r2, r7 + add r1, r1, #0xe + bl MI_CpuCopy8 +_0209D150: + ldrh r0, [r5, #0x4] + cmp r0, #0x8 + beq _0209D164 + cmp r11, #0x1000 + bls _0209D18C +_0209D164: + mov r0, #0x0 + strh r0, [r5, #0x4] + ldr r1, _0209D2B8 ; =0x021C8EF4 + ldr r0, [r5, #0x34] + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x14 + mov r0, #0x0 + ldmia sp!, {r4-r11,lr} + bx lr +_0209D18C: + ldr r0, [sp, #0x8] + ldr r2, [sp, #0x8] + add r0, r0, #0x7 + add r1, r8, r0, lsr #0x3 + ldr r0, [sp, #0x4] + ands r0, r0, #0x2000 + streqh r11, [r5, #0xa] + streqh r1, [r5, #0x8] + ldrh r3, [r5, #0x4] + add r0, r10, r7 + add r3, r5, r3, lsl #0x1 + strh r8, [r3, #0xc] + ldrh r3, [r5, #0x4] + add r3, r5, r3, lsl #0x1 + strh r1, [r3, #0x1c] + ldrh r1, [r5, #0x4] + add r1, r1, #0x1 + strh r1, [r5, #0x4] + ldr r3, [r5, #0x30] + ldr r1, [sp, #0xc] + add r1, r3, r1 + bl MI_CpuCopy8 + ldrh r6, [r5, #0x8] + cmp r6, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldrh r7, [r5, #0x4] + mov r3, #0x0 + mov r4, r3 + cmp r7, #0x0 + bls _0209D244 + mov r0, r3 +_0209D214: + add r2, r5, r4, lsl #0x1 + ldrh r1, [r2, #0xc] + cmp r1, r3 + bhi _0209D238 + ldrh r1, [r2, #0x1c] + cmp r3, r1 + movcc r3, r1 + movcc r4, r0 + blo _0209D23C +_0209D238: + add r4, r4, #0x1 +_0209D23C: + cmp r4, r7 + blo _0209D214 +_0209D244: + cmp r3, r6 + addcc sp, sp, #0x14 + movcc r0, #0x0 + ldmccia sp!, {r4-r11,lr} + bxcc lr + ldr r0, [r5, #0x34] + ldrh r3, [r5, #0xa] + ldrb r1, [r0, #0xe] + add r0, r0, #0xe + mov r2, #0x0 + and r1, r1, #0xf + add r1, r3, r1, lsl #0x2 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + mov r1, r3, asr #0x8 + orr r1, r1, r3, lsl #0x8 + strh r1, [r0, #0x2] + strh r2, [r5, #0x4] + ldr r1, [sp, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209D2A4: .word 0x00003FFF +_0209D2A8: .word 0x021C9520 +_0209D2AC: .word 0x00001FFF +_0209D2B0: .word 0x021C8EC8 +_0209D2B4: .word 0x0000100E +_0209D2B8: .word 0x021C8EF4 + + arm_func_start FUN_0209D2BC +FUN_0209D2BC: ; 0x0209D2BC + stmdb sp!, {r4-r8,lr} + mov r6, r1 + ldrh r1, [r6, #0x6] + mov r7, r0 + mov r5, r2 + cmp r1, #0x0 + beq _0209D2F8 + mov r0, r6 + mov r1, r5 + mov r2, r7 + mov r3, #0x11 + bl FUN_0209FB28 +_0209D2EC: ; 0x0209D2EC + cmp r0, #0x0 + ldmneia sp!, {r4-r8,lr} + bxne lr +_0209D2F8: + bl OS_DisableInterrupts + ldr r1, _0209D4D4 ; =0x021D3498 + mov r8, r0 + ldr r2, [r1, #0x8] + cmp r2, #0x0 + beq _0209D4C4 + mvn r12, #0x0 +_0209D314: + ldr r4, [r2, #0xa4] + cmp r4, #0x0 + beq _0209D4B8 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _0209D4B8 + ldrb r0, [r4, #0x8] + cmp r0, #0xa + bne _0209D4B8 + ldrh r3, [r6, #0x2] + ldrh r1, [r4, #0xa] + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + mov r0, r0, lsl #0x10 + cmp r1, r0, lsr #0x10 + bne _0209D4B8 + ldrh r3, [r4, #0x18] + cmp r3, #0x0 + beq _0209D378 + ldrh r1, [r6, #0x0] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + cmp r3, r0, lsr #0x10 + bne _0209D4B8 +_0209D378: + ldr r1, [r4, #0x1c] + cmp r1, #0x0 + beq _0209D3C0 + cmp r1, r12 + beq _0209D3C0 + ldrh lr, [r7, #0xc] + ldrh r0, [r7, #0xe] + mov r3, lr, asr #0x8 + orr r3, r3, lr, lsl #0x8 + mov r3, r3, lsl #0x10 + mov lr, r0, asr #0x8 + mov r3, r3, lsr #0x10 + orr r0, lr, r0, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r3, r0, lsr #0x10 + cmp r1, r0 + bne _0209D4B8 +_0209D3C0: + ldrh r1, [r7, #0x10] + ldrh r3, [r7, #0x12] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + str r0, [r4, #0x14] + ldr r0, [r4, #0x1c] + cmp r0, #0x0 + bne _0209D43C + ldrh r1, [r7, #0xc] + ldrh r3, [r7, #0xe] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + str r0, [r4, #0x1c] + ldrh r1, [r6, #0x0] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + strh r0, [r4, #0x18] +_0209D43C: + ldr r0, [r4, #0x44] + cmp r0, #0x0 + bne _0209D4C4 + ldr r1, [r4, #0x3c] + sub r0, r5, #0x8 + cmp r0, r1 + strhi r1, [r4, #0x44] + strls r0, [r4, #0x44] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x44] + add r0, r6, #0x8 + bl MI_CpuCopy8 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bne _0209D48C + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + b _0209D4C4 +_0209D48C: + ldr r3, [r4, #0x38] + cmp r3, #0x0 + beq _0209D4C4 + ldr r0, [r4, #0x40] + ldr r1, [r4, #0x44] + mov r2, r4 + blx r3 + cmp r0, #0x0 + movne r0, #0x0 + strne r0, [r4, #0x44] + b _0209D4C4 +_0209D4B8: + ldr r2, [r2, #0x68] + cmp r2, #0x0 + bne _0209D314 +_0209D4C4: + mov r0, r8 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209D4D4: .word 0x021D3498 + + arm_func_start FUN_0209D4D8 +FUN_0209D4D8: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + mov r0, r5 + mov r1, r4 + mov r2, r6 + mov r3, #0x6 + bl FUN_0209FB28 +_0209D4FC: ; 0x0209D4FC + cmp r0, #0x0 + ldmneia sp!, {r4-r6,lr} + bxne lr + ldrb r0, [r5, #0xc] + ldrb r2, [r5, #0xd] + and r1, r0, #0xf0 + mov r0, r1, asr #0x1 + add r0, r1, r0, lsr #0x1e + and r1, r2, #0x17 + cmp r1, #0x10 + sub r4, r4, r0, asr #0x2 + bgt _0209D558 + cmp r1, #0x10 + bge _0209D5C4 + cmp r1, #0x2 + bgt _0209D5F4 + cmp r1, #0x1 + blt _0209D5F4 + cmp r1, #0x1 + beq _0209D5DC + cmp r1, #0x2 + beq _0209D57C + b _0209D5F4 +_0209D558: + cmp r1, #0x12 + bgt _0209D5F4 + cmp r1, #0x11 + blt _0209D5F4 + cmp r1, #0x11 + beq _0209D5C4 + cmp r1, #0x12 + beq _0209D5A0 + b _0209D5F4 +_0209D57C: + ands r0, r2, #0x28 + ldmneia sp!, {r4-r6,lr} + bxne lr + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209DBB0 + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5A0: + ands r0, r2, #0x28 + ldmneia sp!, {r4-r6,lr} + bxne lr + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209DA9C + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5C4: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209D774 + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5DC: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209D674 + ldmia sp!, {r4-r6,lr} + bx lr +_0209D5F4: + ands r0, r2, #0x4 + beq _0209D610 + mov r0, r6 + mov r1, r5 + bl FUN_0209D62C + ldmia sp!, {r4-r6,lr} + bx lr +_0209D610: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0x0 + bl FUN_0209DE34 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209D62C +FUN_0209D62C: ; 0x0209D62C + stmdb sp!, {r4,lr} + bl FUN_0209E0C8 + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + bl OS_YieldThread + mov r1, #0x0 + strb r1, [r4, #0x8] + ldr r0, [r4, #0x4] + sub r0, r0, #0x1 + cmp r0, #0x1 + ldmhiia sp!, {r4,lr} + bxhi lr + str r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_0209D674 +FUN_0209D674: ; 0x0209D674 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_0209E0C8 + movs r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrb r1, [r4, #0x8] + cmp r1, #0x4 + beq _0209D72C + cmp r1, #0x7 + beq _0209D6BC + cmp r1, #0x8 + beq _0209D6E4 + b _0209D754 +_0209D6BC: + ldr r2, [r4, #0x24] + mov r1, #0x0 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl FUN_0209DF84 + mov r0, #0x9 + add sp, sp, #0x4 + strb r0, [r4, #0x8] + ldmia sp!, {r4-r7,lr} + bx lr +_0209D6E4: + ldr r2, [r4, #0x24] + mov r1, #0x0 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl FUN_0209DF84 + mov r1, #0x0 + strb r1, [r4, #0x8] + ldr r0, [r4, #0x4] + cmp r0, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + str r1, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209D72C: + ldr r2, [r4, #0x24] + mov r1, #0x0 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl FUN_0209DF70 + mov r0, #0x6 + add sp, sp, #0x4 + strb r0, [r4, #0x8] + ldmia sp!, {r4-r7,lr} + bx lr +_0209D754: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, #0x0 + bl FUN_0209DE34 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209D774 +FUN_0209D774: ; 0x0209D774 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl FUN_0209E0C8 + movs r5, r0 + bne _0209D7B4 + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x0 + bl FUN_0209DE34 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_0209D7B4: + ldrh r3, [r7, #0x8] + ldrh r1, [r7, #0xa] + ldrb r4, [r7, #0xd] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, r1, asr #0x8 + mov r2, r2, lsr #0x10 + orr r1, r3, r1, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r2, r1, lsr #0x10 + str r1, [r5, #0x30] + ldrh r9, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldrb r3, [r5, #0x8] + mov r2, r9, asr #0x8 + orr r2, r2, r9, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r9, r1, asr #0x8 + mov r2, r2, lsr #0x10 + orr r1, r9, r1, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + cmp r3, #0x4 + orr r2, r2, r1, lsr #0x10 + bne _0209D840 + ldr r1, [r5, #0x24] + cmp r1, r2 + beq _0209D840 + mov r1, #0x0 + bl FUN_0209DF84 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_0209D840: + ldrh r1, [r7, #0xe] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + strh r0, [r5, #0x2c] + ldrb r0, [r5, #0x8] + cmp r0, #0x9 + addls pc, pc, r0, lsl #0x2 + b _0209DA70 +_0209D860: + b _0209D888 +_0209D864: + b _0209DA70 +_0209D868: + b _0209D888 +_0209D86C: + b _0209D8A0 +_0209D870: + b _0209D8CC +_0209D874: + b _0209DA70 +_0209D878: + b _0209DA4C +_0209D87C: + b _0209D9D8 +_0209D880: + b _0209D9D8 +_0209D884: + b _0209DA4C +_0209D888: + mov r0, r8 + mov r1, r7 + mov r2, r6 + mov r3, #0x0 + bl FUN_0209DE34 + b _0209DA8C +_0209D8A0: + mov r0, #0x4 + strb r0, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x1 + bne _0209D8C4 + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect +_0209D8C4: + cmp r6, #0x0 + beq _0209DA8C +_0209D8CC: + ldr r0, [r5, #0x34] + add r0, r0, #0x1 + str r0, [r5, #0x34] + ldr r1, [r5, #0x3c] + ldr r0, [r5, #0x44] + sub r0, r1, r0 + cmp r6, r0 + movhi r9, #0x0 + movhi r6, r0 + movls r9, #0x1 + cmp r6, #0x0 + beq _0209D968 + bl OS_DisableInterrupts + ldrb r1, [r7, #0xc] + ldr r12, [r5, #0x40] + ldr r3, [r5, #0x44] + and r2, r1, #0xf0 + mov r1, r2, asr #0x1 + add r1, r2, r1, lsr #0x1e + mov r8, r0 + mov r2, r6 + add r0, r7, r1, asr #0x2 + add r1, r12, r3 + bl MI_CpuCopy8 + ldr r1, [r5, #0x44] + mov r0, r8 + add r1, r1, r6 + str r1, [r5, #0x44] + ldr r1, [r5, #0x24] + add r1, r1, r6 + str r1, [r5, #0x24] + bl OS_RestoreInterrupts + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209D968 + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect +_0209D968: + cmp r9, #0x0 + beq _0209D9C0 + ands r0, r4, #0x1 + beq _0209D9C0 + mov r0, #0x6 + strb r0, [r5, #0x8] + ldr r1, [r5, #0x24] + mov r0, r5 + add r2, r1, #0x1 + mov r1, #0x0 + str r2, [r5, #0x24] + bl FUN_0209DF70 +_0209D998: ; 0x0209D998 + cmp r6, #0x0 + bne _0209DA8C + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209DA8C + mov r0, #0x0 + str r0, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect + b _0209DA8C +_0209D9C0: + cmp r6, #0x0 + beq _0209DA8C + mov r0, r5 + mov r1, #0x0 + bl FUN_0209DF84 + b _0209DA8C +_0209D9D8: + ands r0, r4, #0x1 + beq _0209DA20 + ldr r1, [r5, #0x24] + add r0, r6, #0x1 + add r2, r1, r0 + mov r0, r5 + mov r1, #0x0 + str r2, [r5, #0x24] + bl FUN_0209DF84 + mov r1, #0x0 + strb r1, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209DA8C + str r1, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect + b _0209DA8C +_0209DA20: + cmp r6, #0x0 + beq _0209DA40 + ldr r1, [r5, #0x24] + mov r0, r5 + add r2, r1, r6 + mov r1, #0x0 + str r2, [r5, #0x24] + bl FUN_0209DF84 +_0209DA40: + mov r0, #0x8 + strb r0, [r5, #0x8] + b _0209DA8C +_0209DA4C: + mov r1, #0x0 + strb r1, [r5, #0x8] + ldr r0, [r5, #0x4] + cmp r0, #0x2 + bne _0209DA8C + str r1, [r5, #0x4] + ldr r0, [r5, #0x0] + bl OS_WakeupThreadDirect + b _0209DA8C +_0209DA70: + ands r0, r4, #0x1 + ldrne r0, [r5, #0x24] + mov r1, #0x0 + addne r0, r0, #0x1 + strne r0, [r5, #0x24] + mov r0, r5 + bl FUN_0209DF84 +_0209DA8C: + bl OS_YieldThread + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_0209DA9C +FUN_0209DA9C: ; 0x0209DA9C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r5, r1 + mov r6, r2 + bl FUN_0209E0C8 + movs r4, r0 + beq _0209DAC8 + ldrb r0, [r4, #0x8] + cmp r0, #0x2 + beq _0209DAE8 +_0209DAC8: + mov r0, r7 + mov r1, r5 + mov r2, r6 + mov r3, #0x0 + bl FUN_0209DE34 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209DAE8: + bl OS_YieldThread + ldrh r2, [r5, #0x4] + ldrh r12, [r5, #0x6] + mov r0, r5 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r12, asr #0x8 + mov r3, r1, lsr #0x10 + orr r1, r2, r12, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r2, r1, lsr #0x10 + add r1, r1, #0x1 + str r1, [r4, #0x24] + ldrh r3, [r5, #0x8] + ldrh lr, [r5, #0xa] + mov r1, r4 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, lr, asr #0x8 + mov r12, r2, lsr #0x10 + orr r2, r3, lr, lsl #0x8 + mov r3, r12, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r2, r3, r2, lsr #0x10 + str r2, [r4, #0x30] + ldrh r3, [r5, #0xe] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + strh r2, [r4, #0x2c] + bl FUN_0209E044 + mov r0, r4 + mov r1, #0x0 + bl FUN_0209DF84 + mov r0, #0x4 + strb r0, [r4, #0x8] + ldr r0, [r4, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209DBB0 +FUN_0209DBB0: ; 0x0209DBB0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldrh r12, [r4, #0x10] + ldrh r7, [r4, #0xc] + ldrh r3, [r4, #0x12] + mov r5, r12, asr #0x8 + mov r6, r7, asr #0x8 + orr r5, r5, r12, lsl #0x8 + orr r6, r6, r7, lsl #0x8 + mov r12, r6, lsl #0x10 + ldrh r0, [r4, #0xe] + mov lr, r5, lsl #0x10 + mov r5, r3, asr #0x8 + mov r6, r0, asr #0x8 + mov r7, r12, lsr #0x10 + orr r0, r6, r0, lsl #0x8 + orr r3, r5, r3, lsl #0x8 + mov r12, lr, lsr #0x10 + mov r6, r7, lsl #0x10 + mov r0, r0, lsl #0x10 + mov r5, r12, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r7, r1 + orr r1, r5, r3, lsr #0x10 + orr r0, r6, r0, lsr #0x10 + mov r5, r2 + bl FUN_0209E3DC +_0209DC20: ; 0x0209DC20 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r4 + mov r1, r7 + mov r2, r5 + bl FUN_0209DCB4 +_0209DC40: ; 0x0209DC40 + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + mov r0, r4 + mov r1, r7 + bl FUN_0209E200 + movs r2, r0 + beq _0209DC7C + mov r0, r4 + mov r1, r7 + bl FUN_0209DD44 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209DC7C: + bl OS_YieldThread + mov r0, r4 + mov r1, r7 + bl FUN_0209E200 + movs r2, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r4 + mov r1, r7 + bl FUN_0209DD44 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209DCB4 +FUN_0209DCB4: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_0209E0C8 + movs r2, r0 + beq _0209DD38 + ldrb r0, [r2, #0x8] + cmp r0, #0x1 + bne _0209DCEC + mov r0, r6 + mov r1, r5 + bl FUN_0209DD44 + b _0209DD2C +_0209DCEC: + add r0, r0, #0xfd + and r0, r0, #0xff + cmp r0, #0x1 + bhi _0209DD18 + ldr r1, [r2, #0x28] + mov r0, r6 + sub r3, r1, #0x1 + mov r1, r5 + str r3, [r2, #0x28] + bl FUN_0209DD44 + b _0209DD2C +_0209DD18: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0x0 + bl FUN_0209DE34 +_0209DD2C: + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_0209DD38: + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209DD44 +FUN_0209DD44: ; 0x0209DD44 + stmdb sp!, {r4-r6,lr} + mov r4, r2 + mov r2, #0x3 + mov r6, r0 + mov r5, r1 + strb r2, [r4, #0x8] + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + str r0, [r4, #0x10] + ldrh r2, [r6, #0x10] + ldrh r3, [r6, #0x12] + mov r0, r5 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r1, r1, lsr #0x10 + mov r3, r1, lsl #0x10 + mov r1, r2, lsl #0x10 + orr r1, r3, r1, lsr #0x10 + str r1, [r4, #0x14] + ldrh r3, [r5, #0x0] + mov r1, r4 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + strh r2, [r4, #0x18] + ldrh r3, [r6, #0xc] + ldrh r6, [r6, #0xe] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, r6, asr #0x8 + orr r3, r3, r6, lsl #0x8 + mov r2, r2, lsr #0x10 + mov r6, r2, lsl #0x10 + mov r2, r3, lsl #0x10 + orr r2, r6, r2, lsr #0x10 + str r2, [r4, #0x1c] + ldrh r3, [r5, #0x4] + ldrh r6, [r5, #0x6] + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + mov r3, r6, asr #0x8 + mov r5, r2, lsr #0x10 + orr r2, r3, r6, lsl #0x8 + mov r3, r5, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r2, r3, r2, lsr #0x10 + add r2, r2, #0x1 + str r2, [r4, #0x24] + bl FUN_0209E044 + mov r0, r4 + mov r1, #0x12 + mov r2, #0x0 + bl FUN_0209DF98 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209DE34 +FUN_0209DE34: ; 0x0209DE34 + stmdb sp!, {r4-r8,lr} + ldr r4, _0209DF6C ; =0x021C903C + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r0, r4 + mov r1, #0x0 + mov r2, #0x64 + mov r5, r3 + bl MI_CpuFill8 + ldrh r2, [r7, #0x2] + mov r1, r4 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r1, #0xa] + ldrh r2, [r7, #0x0] + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r1, #0x18] + ldrh r2, [r8, #0xc] + ldrh r8, [r8, #0xe] + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r2, r8, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r2, r8, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r2, r0, lsr #0x10 + str r0, [r1, #0x1c] + ldrb r0, [r7, #0xd] + ands r0, r0, #0x10 + beq _0209DF04 + ldrh r2, [r7, #0x8] + ldrh r6, [r7, #0xa] + mov r0, r4 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + mov r1, r1, lsl #0x10 + mov r2, r6, asr #0x8 + mov r3, r1, lsr #0x10 + orr r1, r2, r6, lsl #0x8 + mov r2, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r3, r2, r1, lsr #0x10 + mov r2, r5 + mov r1, #0x4 + str r3, [r4, #0x28] + bl FUN_0209DF98 + ldmia sp!, {r4-r8,lr} + bx lr +_0209DF04: + mov r0, #0x0 + str r0, [r4, #0x28] + ldrh r1, [r7, #0x4] + ldrh r3, [r7, #0x6] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r3, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, r3, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + add r0, r6, r0 + str r0, [r4, #0x24] + ldrb r0, [r7, #0xd] + mov r2, r5 + mov r1, #0x14 + ands r0, r0, #0x3 + ldrne r0, [r4, #0x24] + addne r0, r0, #0x1 + strne r0, [r4, #0x24] + mov r0, r4 + bl FUN_0209DF98 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209DF6C: .word 0x021C903C + + arm_func_start FUN_0209DF70 +FUN_0209DF70: + ldr ip, _0209DF80 ; =FUN_0209DF98 + mov r2, r1 + mov r1, #0x11 + bx r12 + .balign 4 +_0209DF80: .word FUN_0209DF98 + + arm_func_start FUN_0209DF84 +FUN_0209DF84: ; 0x0209DF84 + ldr ip, _0209DF94 ; =FUN_0209DF98 + mov r2, r1 + mov r1, #0x10 + bx r12 + .balign 4 +_0209DF94: .word FUN_0209DF98 + + arm_func_start FUN_0209DF98 +FUN_0209DF98: ; 0x0209DF98 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + ldr r0, [r6, #0x1c] + mov r5, r1 + mov r4, r2 + bl FUN_0209E014 +_0209DFB4: ; 0x0209DFB4 + cmp r0, #0x0 + bne _0209DFD0 + ldr r0, _0209E00C ; =0x021D3498 + ldr r1, _0209E010 ; =0x021C9160 + ldr r0, [r0, #0x4] + cmp r0, r1 + beq _0209DFF4 +_0209DFD0: + mov r0, #0x0 + mov r1, r0 + mov r2, r6 + mov r3, r5 + str r4, [sp, #0x0] + bl FUN_0209E878 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr +_0209DFF4: + ldr r0, [r6, #0x1c] + bl FUN_0209FAB0 + bl FUN_0209F338 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209E00C: .word 0x021D3498 +_0209E010: .word 0x021C9160 + + arm_func_start FUN_0209E014 +FUN_0209E014: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_0209FAB0 +_0209E020: ; 0x0209E020 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {lr} + bxeq lr + bl FUN_0209F438 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209E044 +FUN_0209E044: ; 0x0209E044 + mov r2, #0x218 + strh r2, [r1, #0x2e] + ldrb r2, [r0, #0xc] + add r3, r0, #0x14 + and r2, r2, #0xf0 + mov r0, r2, asr #0x1 + add r0, r2, r0, lsr #0x1e + mov r0, r0, asr #0x2 + subs r0, r0, #0x14 + sub r12, r0, #0x1 + bxeq lr +_0209E070: + ldrb r0, [r3], #0x1 + cmp r0, #0x0 + bxeq lr + cmp r0, #0x1 + beq _0209E0B8 + cmp r0, #0x2 + bne _0209E0A8 + ldrb r2, [r3, #0x1] + ldrb r0, [r3, #0x2] + add r3, r3, #0x3 + sub r12, r12, #0x3 + orr r0, r0, r2, lsl #0x8 + strh r0, [r1, #0x2e] + b _0209E0B8 +_0209E0A8: + ldrb r0, [r3, #0x0] + sub r0, r0, #0x1 + sub r12, r12, r0 + add r3, r3, r0 +_0209E0B8: + cmp r12, #0x0 + sub r12, r12, #0x1 + bne _0209E070 + bx lr + + arm_func_start FUN_0209E0C8 +FUN_0209E0C8: ; 0x0209E0C8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r2, _0209E140 ; =0x021D3498 + mov r7, r0 + ldr r4, [r2, #0x8] + mov r6, r1 + cmp r4, #0x0 + beq _0209E130 +_0209E0E8: + ldr r5, [r4, #0xa4] + cmp r5, #0x0 + beq _0209E124 + ldr r0, [r5, #0x0] + cmp r0, #0x0 + beq _0209E124 + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_0209E144 +_0209E110: ; 0x0209E110 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r7,lr} + bxne lr +_0209E124: + ldr r4, [r4, #0x68] + cmp r4, #0x0 + bne _0209E0E8 +_0209E130: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209E140: .word 0x021D3498 + + arm_func_start FUN_0209E144 +FUN_0209E144: + stmdb sp!, {r4-r6,lr} + ldrb r4, [r2, #0x8] + mov r12, #0x0 + mov r3, r12 + mov r6, r12 + mov r5, r12 + cmp r4, #0xa + beq _0209E16C + cmp r4, #0xb + movne r5, #0x1 +_0209E16C: + cmp r5, #0x0 + beq _0209E190 + ldrh lr, [r1, #0x2] + ldrh r5, [r2, #0xa] + mov r4, lr, asr #0x8 + orr r4, r4, lr, lsl #0x8 + mov lr, r4, lsl #0x10 + cmp r5, lr, lsr #0x10 + moveq r6, #0x1 +_0209E190: + cmp r6, #0x0 + beq _0209E1B4 + ldrh r4, [r1, #0x0] + ldrh lr, [r2, #0x18] + mov r1, r4, asr #0x8 + orr r1, r1, r4, lsl #0x8 + mov r1, r1, lsl #0x10 + cmp lr, r1, lsr #0x10 + moveq r3, #0x1 +_0209E1B4: + cmp r3, #0x0 + beq _0209E1F4 + ldrh r1, [r0, #0xc] + ldrh lr, [r0, #0xe] + ldr r3, [r2, #0x1c] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, lr, asr #0x8 + mov r2, r0, lsr #0x10 + orr r0, r1, lr, lsl #0x8 + mov r1, r2, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + cmp r3, r0 + moveq r12, #0x1 +_0209E1F4: + mov r0, r12 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_0209E200 +FUN_0209E200: ; 0x0209E200 + stmdb sp!, {r4-r6,lr} + ldr r2, _0209E2DC ; =0x021D3498 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + beq _0209E2D0 +_0209E214: + ldr r12, [r3, #0xa4] + cmp r12, #0x0 + beq _0209E2C4 + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _0209E2C4 + ldrb r2, [r12, #0x8] + cmp r2, #0x1 + bne _0209E2C4 + ldrh r5, [r1, #0x2] + ldrh r4, [r12, #0xa] + mov r2, r5, asr #0x8 + orr r2, r2, r5, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r4, r2, lsr #0x10 + bne _0209E2C4 + ldrh r5, [r12, #0x18] + cmp r5, #0x0 + beq _0209E278 + ldrh r4, [r1, #0x0] + mov r2, r4, asr #0x8 + orr r2, r2, r4, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r5, r2, lsr #0x10 + bne _0209E2C4 +_0209E278: + ldr r2, [r12, #0x1c] + cmp r2, #0x0 + beq _0209E2B8 + ldrh r5, [r0, #0xc] + ldrh r6, [r0, #0xe] + mov r4, r5, asr #0x8 + orr r4, r4, r5, lsl #0x8 + mov lr, r4, lsl #0x10 + mov r4, r6, asr #0x8 + mov lr, lr, lsr #0x10 + orr r4, r4, r6, lsl #0x8 + mov r5, lr, lsl #0x10 + mov lr, r4, lsl #0x10 + orr r4, r5, lr, lsr #0x10 + cmp r2, r4 + bne _0209E2C4 +_0209E2B8: + mov r0, r12 + ldmia sp!, {r4-r6,lr} + bx lr +_0209E2C4: + ldr r3, [r3, #0x68] + cmp r3, #0x0 + bne _0209E214 +_0209E2D0: + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209E2DC: .word 0x021D3498 + + arm_func_start FUN_0209E2E0 +FUN_0209E2E0: ; 0x0209E2E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r6, r0 + mov r0, r5 + mov r1, r4 + bl FUN_0209FB84 + ldr r1, _0209E3D8 ; =0x0000FFFF + cmp r0, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r12, [r6, #0x10] + ldrh r7, [r6, #0xc] + ldrh r0, [r6, #0xe] + ldrh r1, [r6, #0x12] + mov r3, r7, asr #0x8 + mov lr, r0, asr #0x8 + orr r0, lr, r0, lsl #0x8 + mov r2, r12, asr #0x8 + orr r7, r3, r7, lsl #0x8 + orr r3, r2, r12, lsl #0x8 + mov r2, r7, lsl #0x10 + mov r12, r1, asr #0x8 + orr r1, r12, r1, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r7, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + mov r3, r7, lsl #0x10 + mov r0, r0, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r0, r3, r0, lsr #0x10 + orr r1, r2, r1, lsr #0x10 + bl FUN_0209E3DC +_0209E370: ; 0x0209E370 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrb r0, [r5, #0x0] + cmp r0, #0x0 + beq _0209E3A0 + cmp r0, #0x8 + beq _0209E3BC + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209E3A0: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209E40C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209E3BC: + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_0209E524 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209E3D8: .word 0x0000FFFF + + arm_func_start FUN_0209E3DC +FUN_0209E3DC: + cmp r0, #0x0 + beq _0209E404 + mvn r2, #0x0 + cmp r0, r2 + beq _0209E404 + cmp r1, #0x0 + beq _0209E404 + cmp r1, r2 + movne r0, #0x1 + bxne lr +_0209E404: + mov r0, #0x0 + bx lr + + arm_func_start FUN_0209E40C +FUN_0209E40C: ; 0x0209E40C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_DisableInterrupts + ldr r1, _0209E520 ; =0x021D3498 + mov r8, r0 + ldr r2, [r1, #0x8] + cmp r2, #0x0 + beq _0209E510 +_0209E434: + ldr r4, [r2, #0xa4] + cmp r4, #0x0 + beq _0209E504 + ldr r3, [r4, #0x0] + cmp r3, #0x0 + beq _0209E504 + ldrb r0, [r4, #0x8] + cmp r0, #0xb + bne _0209E504 + ldrh r1, [r6, #0x4] + mov r0, r3, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r1 + bne _0209E504 + ldrh r1, [r4, #0xa] + ldrh r0, [r6, #0x6] + cmp r1, r0 + bne _0209E504 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + bne _0209E504 + ldrh r12, [r7, #0xc] + ldrh r1, [r7, #0xe] + ldr r0, [r4, #0x1c] + mov r3, r12, asr #0x8 + orr r3, r3, r12, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r12, r1, asr #0x8 + mov r3, r3, lsr #0x10 + orr r1, r12, r1, lsl #0x8 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x10 + orr r1, r3, r1, lsr #0x10 + cmp r0, r1 + bne _0209E504 + ldr r1, [r4, #0x3c] + sub r0, r5, #0x8 + cmp r0, r1 + strhi r1, [r4, #0x44] + strls r0, [r4, #0x44] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x44] + add r0, r6, #0x8 + bl MI_CpuCopy8 + ldr r0, [r4, #0x4] + cmp r0, #0x3 + bne _0209E510 + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r0, [r4, #0x0] + bl OS_WakeupThreadDirect + b _0209E510 +_0209E504: + ldr r2, [r2, #0x68] + cmp r2, #0x0 + bne _0209E434 +_0209E510: + mov r0, r8 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209E520: .word 0x021D3498 + + arm_func_start FUN_0209E524 +FUN_0209E524: ; 0x0209E524 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r6, r0 + ldrh r3, [r6, #0xc] + ldrh r4, [r6, #0xe] + mov r5, r1 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r4, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r1, r4, lsl #0x8 + mov r1, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #0x10 + mov r4, r2 + bl FUN_0209FAB0 + movs r7, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r7,lr} + bxeq lr + bl FUN_0209F438 +_0209E57C: ; 0x0209E57C + cmp r0, #0x0 + bne _0209E598 + mov r0, r7 + bl FUN_0209F338 + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr +_0209E598: + mov r2, #0x0 + strb r2, [r5, #0x0] + mov r0, r5 + mov r1, r4 + strh r2, [r5, #0x2] + bl FUN_0209FB84 + mov r1, r0, asr #0x8 + orr r0, r1, r0, lsl #0x8 + strh r0, [r5, #0x2] + ldrh r1, [r6, #0xc] + ldrh r6, [r6, #0xe] + mov r2, #0x0 + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r1, r6, asr #0x8 + mov r3, r0, lsr #0x10 + orr r0, r1, r6, lsl #0x8 + mov r1, r3, lsl #0x10 + mov r0, r0, lsl #0x10 + orr r6, r1, r0, lsr #0x10 + mov r0, r5 + mov r1, r4 + mov r3, r2 + str r6, [sp, #0x0] + mov r4, #0x1 + str r4, [sp, #0x4] + bl FUN_0209ECFC + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_0209E614 +FUN_0209E614: ; 0x0209E614 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + cmp r1, #0x1c + mov r6, r0 + addcc sp, sp, #0x4 + ldmccia sp!, {r4-r7,lr} + bxcc lr + ldr r1, _0209E7BC ; =0x021C8F14 + add r0, r6, #0x8 + bl FUN_0209F9A0 +_0209E63C: ; 0x0209E63C + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, _0209E7C0 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldrh r0, [r6, #0x0] + cmp r0, #0x100 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r0, [r6, #0x2] + cmp r0, #0x8 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r1, [r6, #0x4] + ldr r0, _0209E7C4 ; =0x00000406 + cmp r1, r0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r1, [r6, #0x6] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + cmp r4, #0x1 + beq _0209E6D0 + cmp r4, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr +_0209E6D0: + ldrh r1, [r6, #0xe] + ldrh r5, [r6, #0x10] + ldr r2, _0209E7C0 ; =0x021C8F04 + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r1, r5, asr #0x8 + orr r0, r1, r5, lsl #0x8 + mov r1, r0, lsl #0x10 + mov r3, r3, lsl #0x10 + orr r1, r3, r1, lsr #0x10 + ldr r0, [r2, #0x0] + ldrh r3, [r6, #0x18] + ldrh lr, [r6, #0x1a] + cmp r1, r0 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + moveq r5, #0x1 + mov r3, lr, asr #0x8 + mov r12, r2, lsr #0x10 + orr r2, r3, lr, lsl #0x8 + mov r3, r12, lsl #0x10 + mov r2, r2, lsl #0x10 + orr r2, r3, r2, lsr #0x10 + movne r5, #0x0 + cmp r0, r2 + moveq r7, #0x1 + movne r7, #0x0 + cmp r5, #0x0 + bne _0209E75C + mov r2, r7 + add r0, r6, #0x8 + bl FUN_0209F12C +_0209E75C: + cmp r4, #0x1 + bne _0209E780 + cmp r7, #0x0 + beq _0209E780 + mov r0, r6 + bl FUN_0209E7CC + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209E780: + cmp r4, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + cmp r7, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r5, #0x0 + ldrne r0, _0209E7C8 ; =0x021C8EAC + movne r1, #0x1 + strneb r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209E7BC: .word 0x021C8F14 +_0209E7C0: .word 0x021C8F04 +_0209E7C4: .word 0x00000406 +_0209E7C8: .word 0x021C8EAC + + arm_func_start FUN_0209E7CC +FUN_0209E7CC: ; 0x0209E7CC + stmdb sp!, {r4,lr} + mov r4, r0 + mov r3, #0x200 + add r0, r4, #0x8 + add r1, r4, #0x12 + mov r2, #0xa + strh r3, [r4, #0x6] + bl MI_CpuCopy8 + ldr r0, _0209E870 ; =0x021C8F14 + add r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r3, _0209E874 ; =0x021C8F04 + add r0, r4, #0x12 + ldr r2, [r3, #0x0] + sub r1, r4, #0xe + mov r2, r2, lsr #0x10 + mov r2, r2, lsl #0x10 + mov r12, r2, lsr #0x10 + mov r2, r12, asr #0x8 + orr r2, r2, r12, lsl #0x8 + strh r2, [r4, #0xe] + ldr r3, [r3, #0x0] + mov r2, #0x6 + mov r3, r3, lsl #0x10 + mov r12, r3, lsr #0x10 + mov r3, r12, asr #0x8 + orr r3, r3, r12, lsl #0x8 + strh r3, [r4, #0x10] + bl MI_CpuCopy8 + ldr r0, _0209E870 ; =0x021C8F14 + sub r1, r4, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + sub r0, r4, #0xe + mov r1, #0x2a + mov r2, #0x0 + mov r3, r2 + bl FUN_0209F930 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209E870: .word 0x021C8F14 +_0209E874: .word 0x021C8F04 + + arm_func_start FUN_0209E878 +FUN_0209E878: ; 0x0209E878 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r7, r2 + ldrb r2, [r7, #0x8] + mov r9, r0 + mov r8, r1 + cmp r2, #0x0 + mov r6, r3 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r9,lr} + bxeq lr + ldr r0, _0209EAEC ; =0x021D3498 + ldr r3, _0209EAF0 ; =0x021C8F04 + ldr r1, _0209EAF4 ; =0x021C9160 + ldr r0, [r0, #0x4] + ldr r12, [r3, #0x0] + cmp r0, r1 + ldreq r4, _0209EAF8 ; =0x021C8F5E + ldrne r0, [r7, #0x4c] + addne r4, r0, #0x22 + ands r0, r6, #0x2 + movne r5, #0x18 + moveq r5, #0x14 + add r1, r5, r8 + mov r2, r1, lsl #0x10 + mov r1, r12, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + mov r1, r12, asr #0x8 + orr r1, r1, r12, lsl #0x8 + strh r1, [r4, #-0xc] + ldr r1, [r3, #0x0] + mov r12, r2, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #-0xa] + ldr r1, [r7, #0x1c] + mov r3, r12, asr #0x8 + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + mov r1, r2, asr #0x8 + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #-0x8] + ldr r1, [r7, #0x1c] + mov r2, r5, lsr #0x2 + mov r1, r1, lsl #0x10 + mov lr, r1, lsr #0x10 + mov r1, lr, asr #0x8 + orr r1, r1, lr, lsl #0x8 + strh r1, [r4, #-0x6] + mov r1, #0x600 + strh r1, [r4, #-0x4] + orr r1, r3, r12, lsl #0x8 + strh r1, [r4, #-0x2] + ldrh r12, [r7, #0xa] + cmp r0, #0x0 + mov r2, r2, lsl #0x4 + mov r3, r12, asr #0x8 + orr r3, r3, r12, lsl #0x8 + strh r3, [r4, #0x0] + ldrh r3, [r7, #0x18] + mov r1, #0x0 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x2] + ldr r0, [r7, #0x28] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x4] + ldr r0, [r7, #0x28] + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x6] + ldr r0, [r7, #0x24] + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0x8] + ldr r0, [r7, #0x24] + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [r4, #0xa] + strb r2, [r4, #0xc] + strb r6, [r4, #0xd] + ldr r2, [r7, #0x3c] + ldr r0, [r7, #0x44] + sub r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r4, #0xe] + strh r1, [r4, #0x10] + strh r1, [r4, #0x12] + beq _0209EA64 + ldr r1, _0209EAFC ; =0x021C8EB0 + ldrh r0, [r1, #0x0] + add r0, r0, #0x2040000 + mov r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [r4, #0x14] + ldrh r0, [r1, #0x0] + add r0, r0, #0x2040000 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + strh r0, [r4, #0x16] +_0209EA64: + sub r0, r4, #0xc + add r1, r5, #0xc + mov r2, #0x0 + bl FUN_0209FBC8 + mov r2, r0 + mov r0, r9 + mov r1, r8 + bl FUN_0209FBC8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl FUN_0209FBAC + mov r3, r0, asr #0x8 + orr r0, r3, r0, lsl #0x8 + strh r0, [r4, #0x10] + mov r0, r4 + ldr r4, [r7, #0x1c] + mov r3, #0x6 + str r4, [sp, #0x0] + str r3, [sp, #0x4] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl FUN_0209ECFC + ands r0, r6, #0x3 + ldr r0, [r7, #0x28] + add r1, r7, #0x28 + add r0, r0, r8 + str r0, [r7, #0x28] + ldrne r0, [r1, #0x0] + addne r0, r0, #0x1 + strne r0, [r1, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0209EAEC: .word 0x021D3498 +_0209EAF0: .word 0x021C8F04 +_0209EAF4: .word 0x021C9160 +_0209EAF8: .word 0x021C8F5E +_0209EAFC: .word 0x021C8EB0 + + arm_func_start FUN_0209EB00 +FUN_0209EB00: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r7, _0209EC3C ; =0x021C8F04 + mov r5, r2 + ldr r2, [r7, #0x0] + mov r6, r1 + mov r1, r2, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r1, lsr #0x10 + ldr r3, [r5, #0x4c] + mov r1, r2, asr #0x8 + add r4, r3, #0x22 + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #-0xc] + ldr r1, [r7, #0x0] + add r2, r6, #0x8 + mov r1, r1, lsl #0x10 + mov r7, r1, lsr #0x10 + mov r1, r7, asr #0x8 + orr r1, r1, r7, lsl #0x8 + strh r1, [r4, #-0xa] + ldr r1, [r5, #0x1c] + mov r2, r2, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r7, r1, lsr #0x10 + mov r1, r7, asr #0x8 + orr r1, r1, r7, lsl #0x8 + strh r1, [r4, #-0x8] + ldr r1, [r5, #0x1c] + mov r2, r2, lsr #0x10 + mov r1, r1, lsl #0x10 + mov r7, r1, lsr #0x10 + mov r1, r7, asr #0x8 + orr r7, r1, r7, lsl #0x8 + mov r1, r2, asr #0x8 + strh r7, [r4, #-0x6] + mov r7, #0x1100 + strh r7, [r4, #-0x4] + orr r1, r1, r2, lsl #0x8 + strh r1, [r4, #0x4] + ldrh r1, [r4, #0x4] + mov r7, r0 + sub r0, r4, #0xc + strh r1, [r4, #-0x2] + ldrh lr, [r5, #0x18] + mov r2, #0x0 + mov r1, #0x14 + mov r12, lr, asr #0x8 + orr r12, r12, lr, lsl #0x8 + strh r12, [r4, #0x2] + ldrh lr, [r5, #0xa] + mov r12, lr, asr #0x8 + orr r12, r12, lr, lsl #0x8 + strh r12, [r3, #0x22] + strh r2, [r4, #0x6] + bl FUN_0209FBC8 + mov r2, r0 + mov r0, r7 + mov r1, r6 + bl FUN_0209FBC8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl FUN_0209FBAC + mov r2, r7 + mov r3, r6 + mov r1, r0, asr #0x8 + orr r0, r1, r0, lsl #0x8 + strh r0, [r4, #0x6] + ldr r1, [r5, #0x1c] + mov r0, r4 + str r1, [sp, #0x0] + mov r1, #0x11 + str r1, [sp, #0x4] + mov r1, #0x8 + bl FUN_0209ECFC + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209EC3C: .word 0x021C8F04 + + arm_func_start FUN_0209EC40 +FUN_0209EC40: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r5, r2 + ldr r3, [r5, #0x4c] + mov r6, r1 + mov r1, #0x8 + ldr r2, _0209ECF4 ; =0x021D3498 + strh r1, [r3, #0x22] + ldr r2, [r2, #0x4] + add r4, r3, #0x22 + strh r2, [r4, #0x4] + mov r2, #0x0 + ldr r3, _0209ECF8 ; =0x021C8EB4 + strh r2, [r4, #0x2] + ldrh lr, [r3, #0x0] + mov r7, r0 + mov r0, r4 + strh lr, [r5, #0xa] + ldrh r12, [r3, #0x0] + add r12, r12, #0x1 + strh r12, [r3, #0x0] + strh lr, [r4, #0x6] + bl FUN_0209FBC8 + mov r2, r0 + mov r0, r7 + mov r1, r6 + bl FUN_0209FBC8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl FUN_0209FBAC + mov r2, r7 + mov r3, r6 + mov r1, r0, asr #0x8 + orr r0, r1, r0, lsl #0x8 + strh r0, [r4, #0x2] + ldr r1, [r5, #0x1c] + mov r0, r4 + str r1, [sp, #0x0] + mov r1, #0x1 + str r1, [sp, #0x4] + mov r1, #0x8 + bl FUN_0209ECFC + add sp, sp, #0xc + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209ECF4: .word 0x021D3498 +_0209ECF8: .word 0x021C8EB4 + + arm_func_start FUN_0209ECFC +FUN_0209ECFC: ; 0x0209ECFC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + mov r0, #0x45 + strb r0, [r10, #-0x14] + mov r5, #0x0 + ldr r0, _0209EF0C ; =0x021C8EB8 + strb r5, [r10, #-0x13] + ldrh r7, [r0, #0x0] + ldr r6, [sp, #0x30] + ldrb r4, [sp, #0x34] + add r7, r7, #0x1 + strh r7, [r0, #0x0] + ldrh r9, [r0, #0x0] + mov r0, r6, lsr #0x10 + mov r7, #0x80 + mov r8, r9, asr #0x8 + orr r8, r8, r9, lsl #0x8 + strh r8, [r10, #-0x10] + strb r7, [r10, #-0xc] + ldr r7, _0209EF10 ; =0x021C8F04 + strb r4, [r10, #-0xb] + ldr r8, [r7, #0x0] + mov r4, r0, lsl #0x10 + mov r0, r8, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + mov r0, r8, asr #0x8 + orr r0, r0, r8, lsl #0x8 + strh r0, [r10, #-0x8] + ldr r0, [r7, #0x0] + mov r8, r4, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + mov r4, r7, asr #0x8 + mov r0, r6, lsl #0x10 + orr r9, r4, r7, lsl #0x8 + mov r7, r8, asr #0x8 + mov r4, r0, lsr #0x10 + mov r0, r4, asr #0x8 + strh r9, [r10, #-0x6] + orr r7, r7, r8, lsl #0x8 + ldr fp, _0209EF14 ; =0x000005C8 + mov r9, r1 + strh r7, [r10, #-0x4] + orr r0, r0, r4, lsl #0x8 + mov r8, r2 + mov r7, r3 + strh r0, [r10, #-0x2] + cmp r9, r11 + bls _0209EE74 + mov r4, r10 + cmp r9, r11 + bls _0209EE14 + str r5, [sp, #0x8] +_0209EDD8: + ldr r1, [sp, #0x8] + mov r0, r10 + mov r2, r4 + mov r3, r11 + str r6, [sp, #0x0] + orr r12, r5, #0x2000 + str r12, [sp, #0x4] + bl FUN_0209EF18 + add r0, r5, #0xb9 + sub r9, r9, r11 + mov r0, r0, lsl #0x10 + cmp r9, r11 + add r4, r4, r11 + mov r5, r0, lsr #0x10 + bhi _0209EDD8 +_0209EE14: + cmp r9, #0x0 + beq _0209EE74 + cmp r7, #0x0 + beq _0209EE48 + mov r0, r10 + mov r2, r4 + mov r3, r9 + str r6, [sp, #0x0] + orr r4, r5, #0x2000 + mov r1, #0x0 + str r4, [sp, #0x4] + bl FUN_0209EF18 + b _0209EE64 +_0209EE48: + str r6, [sp, #0x0] + mov r0, r10 + mov r2, r4 + mov r3, r9 + mov r1, #0x0 + str r5, [sp, #0x4] + bl FUN_0209EF18 +_0209EE64: + add r0, r5, r9, lsr #0x3 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + mov r9, #0x0 +_0209EE74: + ldr r0, _0209EF14 ; =0x000005C8 + add r1, r9, r7 + cmp r1, r0 + bls _0209EED4 + mov r11, #0x0 +_0209EE88: + ldr r0, _0209EF14 ; =0x000005C8 + mov r1, r9 + sub r4, r0, r9 + mov r0, r10 + mov r2, r8 + mov r3, r4 + str r6, [sp, #0x0] + orr r9, r5, #0x2000 + str r9, [sp, #0x4] + bl FUN_0209EF18 + add r0, r5, #0xb9 + mov r1, r0, lsl #0x10 + ldr r0, _0209EF14 ; =0x000005C8 + sub r7, r7, r4 + mov r9, r11 + cmp r7, r0 + add r8, r8, r4 + mov r5, r1, lsr #0x10 + bhi _0209EE88 +_0209EED4: + adds r0, r9, r7 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,lr} + bxeq lr + str r6, [sp, #0x0] + mov r0, r10 + mov r1, r9 + mov r2, r8 + mov r3, r7 + str r5, [sp, #0x4] + bl FUN_0209EF18 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_0209EF0C: .word 0x021C8EB8 +_0209EF10: .word 0x021C8F04 +_0209EF14: .word 0x000005C8 + + arm_func_start FUN_0209EF18 +FUN_0209EF18: ; 0x0209EF18 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r1 + mov r5, r3 + add r1, r7, #0x14 + add r1, r1, r5 + ldr r3, [sp, #0x24] + mov r1, r1, lsl #0x10 + mov r4, r1, lsr #0x10 + mov r1, r3, lsl #0x10 + mov r3, r4, asr #0x8 + mov r1, r1, lsr #0x10 + mov r8, r0 + orr r3, r3, r4, lsl #0x8 + mov r0, r1, asr #0x8 + strh r3, [r8, #-0x12] + orr r0, r0, r1, lsl #0x8 + strh r0, [r8, #-0xe] + mov r3, #0x0 + sub r0, r8, #0x14 + mov r1, #0x14 + mov r6, r2 + strh r3, [r8, #-0xa] + ldr r4, [sp, #0x20] + bl FUN_0209FB84 + mov r2, r0, asr #0x8 + ldr r1, _0209F040 ; =0x7F000001 + orr r0, r2, r0, lsl #0x8 + strh r0, [r8, #-0xa] + cmp r4, r1 + beq _0209EFC4 + ldr r0, _0209F044 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r4, r0 + beq _0209EFC4 + mov r2, r6 + mov r3, r5 + str r4, [sp, #0x0] + mov r12, #0x800 + sub r0, r8, #0x14 + add r1, r7, #0x14 + str r12, [sp, #0x4] + bl FUN_0209F050 +_0209EFC4: + ldr r0, _0209F040 ; =0x7F000001 + cmp r4, r0 + beq _0209EFF8 + ldr r0, _0209F044 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r4, r0 + beq _0209EFF8 + mov r0, r4 + bl FUN_0209FA54 +_0209EFE8: ; 0x0209EFE8 + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r8,lr} + bxeq lr +_0209EFF8: + ldr r0, _0209F048 ; =0x02106230 + sub r1, r8, #0x1c + mov r2, #0x8 + bl MI_CpuCopy8 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _0209F04C ; =0x021C8F14 + str r6, [sp, #0x0] + mov r1, r0 + str r5, [sp, #0x4] + sub r2, r8, #0x1c + add r3, r7, #0x1c + bl FUN_0209F6C0 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209F040: .word 0x7F000001 +_0209F044: .word 0x021C8F04 +_0209F048: .word 0x02106230 +_0209F04C: .word 0x021C8F14 + + arm_func_start FUN_0209F050 +FUN_0209F050: ; 0x0209F050 + stmdb sp!, {r4-r8,lr} + ldrh r5, [sp, #0x1c] + ldr r4, [sp, #0x18] + mov r8, r0 + mov r0, r5, asr #0x8 + orr r12, r0, r5, lsl #0x8 + mov r0, r4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + strh r12, [r8, #-0x2] + bl FUN_0209FA54 +_0209F080: ; 0x0209F080 + cmp r0, #0x0 + bne _0209F0CC + mov r0, r4 + bl FUN_0209FAB0 + movs r4, r0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + bl FUN_0209F438 +_0209F0A0: ; 0x0209F0A0 + cmp r0, #0x0 + bne _0209F0B0 + mov r0, r4 + bl FUN_0209F2AC +_0209F0B0: + cmp r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + sub r1, r8, #0xe + mov r2, #0x6 + bl MI_CpuCopy8 + b _0209F0FC +_0209F0CC: + mov r0, #0x1 + strb r0, [r8, #-0xe] + mov r1, #0x0 + mov r0, r4, lsr #0x10 + strb r1, [r8, #-0xd] + mov r1, #0x5e + strb r1, [r8, #-0xc] + and r0, r0, #0x7f + strb r0, [r8, #-0xb] + mov r0, r4, lsr #0x8 + strb r0, [r8, #-0xa] + strb r4, [r8, #-0x9] +_0209F0FC: + ldr r0, _0209F128 ; =0x021C8F14 + sub r1, r8, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + mov r2, r6 + mov r3, r5 + sub r0, r8, #0xe + add r1, r7, #0xe + bl FUN_0209F930 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209F128: .word 0x021C8F14 + + arm_func_start FUN_0209F12C +FUN_0209F12C: ; 0x0209F12C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _0209F29C ; =0x7F000001 + mov r6, r1 + cmp r6, r3 + mov r7, r0 + mov r4, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, _0209F2A0 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r6, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r6 + bl FUN_0209FAD8 +_0209F174: ; 0x0209F174 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r6 + bl FUN_0209FA54 +_0209F18C: ; 0x0209F18C + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + mov r0, r0, lsl #0x10 + ldr r1, _0209F2A4 ; =0x021C8F78 + mov r5, r0, lsr #0x10 + mov r2, #0x0 +_0209F1B8: + ldr r0, [r1, #0x0] + cmp r6, r0 + bne _0209F1F8 + mov r0, #0xc + mul r4, r2, r0 + ldr r0, _0209F2A4 ; =0x021C8F78 + ldr r3, _0209F2A8 ; =0x021C8F82 + add r1, r0, r4 + mov r0, r7 + add r1, r1, #0x4 + mov r2, #0x6 + strh r5, [r3, r4] + bl MI_CpuCopy8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_0209F1F8: + add r2, r2, #0x1 + cmp r2, #0x8 + add r1, r1, #0xc + blo _0209F1B8 + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r12, #0x0 + ldr r4, _0209F2A4 ; =0x021C8F78 + mov r0, r12 + mov r3, r12 +_0209F228: + ldr r1, [r4, #0x0] + cmp r1, #0x0 + moveq r0, r3 + beq _0209F264 + ldrh r1, [r4, #0xa] + add r4, r4, #0xc + sub r1, r5, r1 + mov r1, r1, lsl #0x10 + mov r2, r1, asr #0x10 + cmp r2, r12 + movgt r0, r3 + add r3, r3, #0x1 + movgt r12, r1, lsr #0x10 + cmp r3, #0x8 + blo _0209F228 +_0209F264: + mov r1, #0xc + mul r4, r0, r1 + ldr r3, _0209F2A4 ; =0x021C8F78 + mov r0, r7 + add r1, r3, r4 + add r1, r1, #0x4 + mov r2, #0x6 + str r6, [r3, r4] + bl MI_CpuCopy8 + ldr r0, _0209F2A8 ; =0x021C8F82 + strh r5, [r0, r4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209F29C: .word 0x7F000001 +_0209F2A0: .word 0x021C8F04 +_0209F2A4: .word 0x021C8F78 +_0209F2A8: .word 0x021C8F82 + + arm_func_start FUN_0209F2AC +FUN_0209F2AC: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, #0x0 + ldr r4, _0209F334 ; =0x021C8F04 + mov r6, r8 + mov r5, #0x64 +_0209F2C8: + mov r0, r9 + bl FUN_0209F338 + mov r7, r6 +_0209F2D4: + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, r5 + bl OS_Sleep + mov r0, r9 + bl FUN_0209F438 +_0209F2FC: ; 0x0209F2FC + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r9,lr} + bxne lr + add r7, r7, #0x1 + cmp r7, #0x14 + blo _0209F2D4 + add r8, r8, #0x1 + cmp r8, #0x8 + blo _0209F2C8 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_0209F334: .word 0x021C8F04 + + arm_func_start FUN_0209F338 +FUN_0209F338: ; 0x0209F338 + stmdb sp!, {r4,lr} + sub sp, sp, #0x30 + mov r4, r0 + add r0, sp, #0x0 + mov r1, #0x0 + mov r2, #0x2a + bl MI_CpuFill8 +_0209F354: ; 0x0209F354 + add r0, sp, #0x0 + mov r1, #0xff + mov r2, #0x6 + bl MI_CpuFill8 + ldr r0, _0209F428 ; =0x021C8F14 + add r1, sp, #0x6 + mov r2, #0x6 + bl MI_CpuCopy8 + mov r0, #0x1 + ldr r1, _0209F42C ; =0x00000608 + strb r0, [sp, #0xf] + strh r1, [sp, #0xc] + strb r0, [sp, #0x15] + mov r0, #0x8 + ldr r1, _0209F430 ; =0x00000406 + strb r0, [sp, #0x10] + strh r1, [sp, #0x12] + ldr r0, _0209F428 ; =0x021C8F14 + add r1, sp, #0x16 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r0, _0209F434 ; =0x021C8F04 + mov r1, r4, lsr #0x10 + ldr r3, [r0, #0x0] + mov r0, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r4, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, r3, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + mov r0, r3, lsl #0x10 + mov r3, r0, lsr #0x10 + mov r0, r4, asr #0x8 + orr r0, r0, r4, lsl #0x8 + strh r0, [sp, #0x1c] + mov r0, r3, asr #0x8 + orr r0, r0, r3, lsl #0x8 + strh r0, [sp, #0x1e] + mov r0, r2, asr #0x8 + orr r0, r0, r2, lsl #0x8 + strh r0, [sp, #0x26] + mov r0, r1, asr #0x8 + orr r0, r0, r1, lsl #0x8 + mov r2, #0x0 + strh r0, [sp, #0x28] + add r0, sp, #0x0 + mov r1, #0x2a + mov r3, r2 + bl FUN_0209F930 + add sp, sp, #0x30 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209F428: .word 0x021C8F14 +_0209F42C: .word 0x00000608 +_0209F430: .word 0x00000406 +_0209F434: .word 0x021C8F04 + + arm_func_start FUN_0209F438 +FUN_0209F438: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl OS_DisableInterrupts + ldr r1, _0209F504 ; =0x7F000001 + mov r4, r0 + cmp r7, r1 + mov r5, #0x0 + beq _0209F46C + ldr r0, _0209F508 ; =0x021C8F04 + ldr r0, [r0, #0x0] + cmp r7, r0 + bne _0209F474 +_0209F46C: + ldr r5, _0209F50C ; =0x021C8F14 + b _0209F4EC +_0209F474: + mov r0, r7 + bl FUN_0209FA68 +_0209F47C: ; 0x0209F47C + cmp r0, #0x0 + bne _0209F494 + mov r0, r7 + bl FUN_0209FA54 +_0209F48C: ; 0x0209F48C + cmp r0, #0x0 + beq _0209F49C +_0209F494: + ldr r5, _0209F510 ; =0x0210621C + b _0209F4EC +_0209F49C: + ldr r1, _0209F514 ; =0x021C8F78 + mov r6, r5 +_0209F4A4: + ldr r0, [r1, #0x0] + cmp r7, r0 + bne _0209F4DC + bl OS_GetTick + mov r2, #0xc + mul r3, r6, r2 + ldr r2, _0209F514 ; =0x021C8F78 + mov r5, r0, lsr #0x10 + add r0, r2, r3 + ldr r2, _0209F518 ; =0x021C8F82 + orr r5, r5, r1, lsl #0x10 + strh r5, [r2, r3] + add r5, r0, #0x4 + b _0209F4EC +_0209F4DC: + add r6, r6, #0x1 + cmp r6, #0x8 + add r1, r1, #0xc + blo _0209F4A4 +_0209F4EC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_0209F504: .word 0x7F000001 +_0209F508: .word 0x021C8F04 +_0209F50C: .word 0x021C8F14 +_0209F510: .word 0x0210621C +_0209F514: .word 0x021C8F78 +_0209F518: .word 0x021C8F82 + + arm_func_start FUN_0209F51C +FUN_0209F51C: ; 0x0209F51C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r2, _0209F570 ; =0x021C8EE4 + ldr r1, _0209F574 ; =0x021C8F0C + ldr lr, [r2, #0x0] + ldr r12, [r1, #0x0] + ldr r3, [r2, #0x0] + ldr r1, _0209F578 ; =0x021C8F10 + ldrh r3, [r12, r3] + add r3, lr, r3 + str r3, [r2, #0x0] + ldr r3, [r2, #0x0] + ldr r1, [r1, #0x0] + cmp r3, r1 + movcs r1, #0x0 + strcs r1, [r2, #0x0] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209F570: .word 0x021C8EE4 +_0209F574: .word 0x021C8F0C +_0209F578: .word 0x021C8F10 + + arm_func_start FUN_0209F57C +FUN_0209F57C: ; 0x0209F57C + stmdb sp!, {r4-r10,lr} + mov r6, r0 + bl OS_DisableInterrupts + ldr sl, _0209F644 ; =0x021C8EE4 + ldr sb, _0209F648 ; =0x021C8EDC + ldr r2, [r10, #0x0] + ldr r1, [r9, #0x0] + mov r5, r0 + cmp r2, r1 + bne _0209F5D4 + ldr r8, _0209F64C ; =0x021D3498 + ldr r7, _0209F650 ; =0x021C8F08 + mov r4, #0x0 +_0209F5B0: + ldr r1, [r8, #0x4] + mov r0, r4 + str r1, [r7, #0x0] + bl OS_SleepThread + str r4, [r7, #0x0] + ldr r1, [r10, #0x0] + ldr r0, [r9, #0x0] + cmp r1, r0 + beq _0209F5B0 +_0209F5D4: + mov r0, r5 + bl OS_RestoreInterrupts + ldr r0, _0209F654 ; =0x021C8F0C + ldr r5, [r0, #0x0] + ldr r0, _0209F644 ; =0x021C8EE4 + ldr r1, _0209F658 ; =0x021C8F10 + mov r3, #0x0 +_0209F5F0: + ldr r4, [r1, #0x0] + ldr r2, [r0, #0x0] + sub r2, r4, r2 + cmp r2, #0x2 + strcc r3, [r0, #0x0] + ldr r2, [r0, #0x0] + ldrh r2, [r5, r2] + cmp r2, #0x0 + streq r3, [r0, #0x0] + cmp r2, #0x0 + beq _0209F5F0 + sub r0, r2, #0x2 + ldr r1, _0209F654 ; =0x021C8F0C + str r0, [r6, #0x0] + ldr r0, _0209F644 ; =0x021C8EE4 + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r1, r0 + add r0, r0, #0x2 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_0209F644: .word 0x021C8EE4 +_0209F648: .word 0x021C8EDC +_0209F64C: .word 0x021D3498 +_0209F650: .word 0x021C8F08 +_0209F654: .word 0x021C8F0C +_0209F658: .word 0x021C8F10 + + arm_func_start FUN_0209F65C +FUN_0209F65C: ; 0x0209F65C + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r12, #0x0 + str r12, [sp, #0x0] + str r12, [sp, #0x4] + bl FUN_0209F6C0 + ldr r0, _0209F6BC ; =0x021C8F08 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {lr} + bxeq lr + ldr r0, [r0, #0x0] + bl OS_IsThreadTerminated +_0209F694: ; 0x0209F694 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {lr} + bxne lr + ldr r0, _0209F6BC ; =0x021C8F08 + ldr r0, [r0, #0x0] + bl OS_WakeupThreadDirect + add sp, sp, #0xc + ldmia sp!, {lr} + bx lr + .balign 4 +_0209F6BC: .word 0x021C8F08 + + arm_func_start FUN_0209F6C0 +FUN_0209F6C0: ; 0x0209F6C0 + stmdb sp!, {r4-r8,lr} + ldr r4, _0209F918 ; =0x021C8F0C + mov r7, r0 + ldr r0, [r4, #0x0] + mov r6, r2 + mov r5, r3 + cmp r0, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r2, _0209F91C ; =0x021C8F10 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + ldr r2, [sp, #0x1c] + add r2, r5, r2 + cmp r2, #0x8 + ldmccia sp!, {r4-r8,lr} + bxcc lr + ldr r3, _0209F920 ; =0x000005E4 + cmp r2, r3 + ldmhiia sp!, {r4-r8,lr} + bxhi lr + ldr r3, _0209F924 ; =0x02106230 + ldrb r8, [r6, #0x0] + ldrb r4, [r3, #0x0] + cmp r8, r4 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r8, [r6, #0x1] + ldrb r4, [r3, #0x1] + cmp r8, r4 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r4, [r6, #0x2] + ldrb r3, [r3, #0x2] + cmp r4, r3 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r3, [r6, #0x6] + cmp r3, #0x8 + ldmneia sp!, {r4-r8,lr} + bxne lr + ldrb r3, [r6, #0x7] + cmp r3, #0x0 + beq _0209F784 + cmp r3, #0x6 + ldmneia sp!, {r4-r8,lr} + bxne lr +_0209F784: + ldr r4, _0209F928 ; =0x021C8EDC + add r2, r2, #0x9 + bic r2, r2, #0x1 + ldr lr, [r4, #0x0] + mov r3, r2, lsl #0x10 + ldr ip, _0209F92C ; =0x021C8EE4 + ldr r8, [r4, #0x0] + ldr r4, [r12, #0x0] + mov r2, r3, lsr #0x10 + cmp r8, r4 + add r4, lr, r3, lsr #0x10 + bhs _0209F7C4 + ldr r3, [r12, #0x0] + cmp r3, r4 + ldmlsia sp!, {r4-r8,lr} + bxls lr +_0209F7C4: + ldr r3, _0209F91C ; =0x021C8F10 + ldr r8, [r3, #0x0] + cmp r4, r8 + bne _0209F7F0 + ldr r3, _0209F92C ; =0x021C8EE4 + mov r4, #0x0 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + bne _0209F814 + ldmia sp!, {r4-r8,lr} + bx lr +_0209F7F0: + ldr r3, [r3, #0x0] + cmp r4, r3 + bls _0209F814 + ldr r3, _0209F92C ; =0x021C8EE4 + mov r4, r2 + ldr r3, [r3, #0x0] + cmp r3, r2 + ldmlsia sp!, {r4-r8,lr} + bxls lr +_0209F814: + ldr ip, _0209F928 ; =0x021C8EDC + ldr r3, _0209F91C ; =0x021C8F10 + ldr lr, [r12, #0x0] + ldr r8, [r3, #0x0] + add lr, lr, r2 + cmp lr, r8 + bls _0209F858 + ldr r8, [r3, #0x0] + ldr r3, [r12, #0x0] + sub r3, r8, r3 + cmp r3, #0x2 + ldrcs r3, [r12, #0x0] + movcs r8, #0x0 + strcsh r8, [r0, r3] + ldr r0, _0209F928 ; =0x021C8EDC + mov r3, #0x0 + str r3, [r0, #0x0] +_0209F858: + ldr ip, _0209F918 ; =0x021C8F0C + ldr r3, _0209F928 ; =0x021C8EDC + ldr r8, [r12, #0x0] + ldr lr, [r3, #0x0] + mov r0, r1 + strh r2, [r8, lr] + ldr r12, [r12, #0x0] + ldr r1, [r3, #0x0] + mov r2, #0x6 + add r1, r12, r1 + add r1, r1, #0x2 + bl MI_CpuCopy8 + ldr r1, _0209F918 ; =0x021C8F0C + ldr r0, _0209F928 ; =0x021C8EDC + ldr r2, [r1, #0x0] + ldr r1, [r0, #0x0] + mov r0, r7 + add r1, r2, r1 + add r1, r1, #0x8 + mov r2, #0x6 + bl MI_CpuCopy8 + ldr r1, _0209F918 ; =0x021C8F0C + ldr r0, _0209F928 ; =0x021C8EDC + ldr r2, [r1, #0x0] + ldr r1, [r0, #0x0] + add r0, r6, #0x6 + add r1, r2, r1 + add r1, r1, #0xe + sub r2, r5, #0x6 + bl MI_CpuCopy8 + ldr r0, [sp, #0x18] + cmp r0, #0x0 + beq _0209F908 + ldr r2, [sp, #0x1c] + cmp r2, #0x0 + beq _0209F908 + ldr r3, _0209F918 ; =0x021C8F0C + ldr r1, _0209F928 ; =0x021C8EDC + ldr r3, [r3, #0x0] + ldr r1, [r1, #0x0] + add r1, r3, r1 + add r1, r1, #0x8 + add r1, r1, r5 + bl MI_CpuCopy8 +_0209F908: + ldr r0, _0209F928 ; =0x021C8EDC + str r4, [r0, #0x0] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_0209F918: .word 0x021C8F0C +_0209F91C: .word 0x021C8F10 +_0209F920: .word 0x000005E4 +_0209F924: .word 0x02106230 +_0209F928: .word 0x021C8EDC +_0209F92C: .word 0x021C8EE4 + + arm_func_start FUN_0209F930 +FUN_0209F930: ; 0x0209F930 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + add r1, r6, r5 + mov r4, r3 + cmp r1, r2 + beq _0209F958 + mov r0, r2 + mov r2, r4 + bl MI_CpuCopy8 +_0209F958: + ldr r0, _0209F998 ; =0x02106230 + add r1, r6, #0x6 + mov r2, #0x6 + bl MI_CpuCopy8 + add r2, r5, r4 + mov r0, r6 + add r1, r6, #0x6 + sub r2, r2, #0x6 + bl FUN_020A8644 +_0209F97C: ; 0x0209F97C + cmp r0, #0x0 + movlt r1, #0x1 + ldr r0, _0209F99C ; =0x021C8EA8 + movge r1, #0x0 + strb r1, [r0, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209F998: .word 0x02106230 +_0209F99C: .word 0x021C8EA8 + + arm_func_start FUN_0209F9A0 +FUN_0209F9A0: + mov r12, #0x0 +_0209F9A4: + ldrh r3, [r0], #0x2 + ldrh r2, [r1], #0x2 + cmp r3, r2 + movne r0, #0x1 + bxne lr + add r12, r12, #0x1 + cmp r12, #0x3 + blt _0209F9A4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_0209F9CC +FUN_0209F9CC: + stmdb sp!, {r4-r6,lr} + ldr r1, _0209FA4C ; =0x021C8F04 + mov r5, #0x1 + ldr r1, [r1, #0x0] + mov r6, r0 + mov r4, r5 + mov r2, r5 + mov r0, r5 + cmp r1, #0x0 + beq _0209F9FC + cmp r6, r1 + movne r0, #0x0 +_0209F9FC: + cmp r0, #0x0 + bne _0209FA10 + ldr r0, _0209FA50 ; =0x7F000001 + cmp r6, r0 + movne r2, #0x0 +_0209FA10: + cmp r2, #0x0 + bne _0209FA28 + mov r0, r6 + bl FUN_0209FA68 +_0209FA20: ; 0x0209FA20 + cmp r0, #0x0 + moveq r4, #0x0 +_0209FA28: + cmp r4, #0x0 + bne _0209FA40 + mov r0, r6 + bl FUN_0209FA54 +_0209FA38: ; 0x0209FA38 + cmp r0, #0x0 + moveq r5, #0x0 +_0209FA40: + mov r0, r5 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209FA4C: .word 0x021C8F04 +_0209FA50: .word 0x7F000001 + + arm_func_start FUN_0209FA54 +FUN_0209FA54: + and r0, r0, #0xf0000000 + cmp r0, #0xe0000000 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_0209FA68 +FUN_0209FA68: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, #0x0 + bl FUN_0209FAD8 +_0209FA7C: ; 0x0209FA7C + cmp r0, #0x0 + beq _0209FA9C + ldr r0, _0209FAAC ; =0x021C8ED0 + ldr r0, [r0, #0x0] + mvn r1, r0 + and r0, r1, r5 + cmp r1, r0 + moveq r4, #0x1 +_0209FA9C: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209FAAC: .word 0x021C8ED0 + + arm_func_start FUN_0209FAB0 +FUN_0209FAB0: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_0209FAD8 +_0209FABC: ; 0x0209FABC + cmp r0, #0x0 + ldreq r0, _0209FAD4 ; =0x021C8EE0 + ldreq r4, [r0, #0x0] + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209FAD4: .word 0x021C8EE0 + + arm_func_start FUN_0209FAD8 +FUN_0209FAD8: + mvn r1, #0x0 + cmp r0, r1 + mov r12, #0x1 + beq _0209FB14 + ldr r1, _0209FB1C ; =0x7F000001 + cmp r0, r1 + beq _0209FB14 + ldr r2, _0209FB20 ; =0x021C8ED0 + ldr r1, _0209FB24 ; =0x021C8F04 + ldr r3, [r2, #0x0] + ldr r1, [r1, #0x0] + and r2, r0, r3 + and r0, r1, r3 + cmp r2, r0 + movne r12, #0x0 +_0209FB14: + mov r0, r12 + bx lr + .balign 4 +_0209FB1C: .word 0x7F000001 +_0209FB20: .word 0x021C8ED0 +_0209FB24: .word 0x021C8F04 + + arm_func_start FUN_0209FB28 +FUN_0209FB28: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r2 + mov r2, r3 + mov r5, r1 + bl FUN_0209FBC8 + mov r2, r0 + add r0, r4, #0xc + mov r1, #0x8 + bl FUN_0209FBC8 + add r1, r0, r5 + ands r0, r1, #0x10000 + ldrne r0, _0209FB80 ; =0x0000FFFF + addne r1, r1, #0x1 + andne r1, r1, r0 + ldr r0, _0209FB80 ; =0x0000FFFF + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209FB80: .word 0x0000FFFF + + arm_func_start FUN_0209FB84 +FUN_0209FB84: ; 0x0209FB84 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x0 + bl FUN_0209FBC8 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl FUN_0209FBAC + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_0209FBAC +FUN_0209FBAC: ; 0x0209FBAC + ldr r1, _0209FBC4 ; =0x0000FFFF + eor r0, r0, r1 + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + moveq r0, r1 + bx lr + .balign 4 +_0209FBC4: .word 0x0000FFFF + + arm_func_start FUN_0209FBC8 +FUN_0209FBC8: ; 0x0209FBC8 + ands r3, r0, #0x1 + beq _0209FC00 + cmp r1, #0x1 + bls _0209FC54 +_0209FBD8: + ldrb r12, [r0, #0x0] + ldrb r3, [r0, #0x1] + sub r1, r1, #0x2 + cmp r1, #0x1 + orr r3, r3, r12, lsl #0x8 + mov r3, r3, lsl #0x10 + add r2, r2, r3, lsr #0x10 + add r0, r0, #0x2 + bhi _0209FBD8 + b _0209FC54 +_0209FC00: + mov r2, r2, lsl #0x10 + mov r3, r2, lsr #0x10 + mov r2, r3, asr #0x8 + orr r2, r2, r3, lsl #0x8 + mov r2, r2, lsl #0x10 + cmp r1, #0x1 + mov r2, r2, lsr #0x10 + bls _0209FC38 +_0209FC20: + ldrh r3, [r0, #0x0] + sub r1, r1, #0x2 + cmp r1, #0x1 + add r2, r2, r3 + add r0, r0, #0x2 + bhi _0209FC20 +_0209FC38: + ldr r3, _0209FC7C ; =0x00FF00FF + ldr ip, _0209FC80 ; =0xFF00FF00 + and r3, r3, r2, lsr #0x8 + and r2, r12, r2, lsl #0x8 + orr r3, r3, r2 + mov r2, r3, lsr #0x10 + orr r2, r2, r3, lsl #0x10 +_0209FC54: + cmp r1, #0x0 + ldrneb r0, [r0, #0x0] + addne r2, r2, r0, lsl #0x8 + ldr r0, _0209FC84 ; =0x0000FFFF + and r0, r2, r0 + add r0, r0, r2, lsr #0x10 + add r0, r0, r0, lsr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + .balign 4 +_0209FC7C: .word 0x00FF00FF +_0209FC80: .word 0xFF00FF00 +_0209FC84: .word 0x0000FFFF + + arm_func_start FUN_0209FC88 +FUN_0209FC88: ; 0x0209FC88 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r2, _0209FCB8 ; =0x02106218 + ldr r0, _0209FCBC ; =0x021C9160 + mov r1, r4 + str r4, [r2, #0x0] + bl OS_SetThreadPriority + ldr r0, _0209FCC0 ; =0x021C90A0 + mov r1, r4 + bl OS_SetThreadPriority + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_0209FCB8: .word 0x02106218 +_0209FCBC: .word 0x021C9160 +_0209FCC0: .word 0x021C90A0 + + arm_func_start FUN_0209FCC4 +FUN_0209FCC4: + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_0209FD34 + ldr r0, _0209FD10 ; =0x021C90A0 + bl OS_JoinThread + ldr r0, _0209FD14 ; =0x021C9160 + bl OS_DestroyThread + ldr r1, _0209FD18 ; =0x021C8F08 + mov r0, #0x0 + str r0, [r1, #0x0] + bl FUN_020A0098 + ldr r1, _0209FD1C ; =0x021C8F0C + mov r2, #0x0 + ldr r0, _0209FD20 ; =0x021C8F10 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_0209FD10: .word 0x021C90A0 +_0209FD14: .word 0x021C9160 +_0209FD18: .word 0x021C8F08 +_0209FD1C: .word 0x021C8F0C +_0209FD20: .word 0x021C8F10 + + arm_func_start FUN_0209FD24 +FUN_0209FD24: ; 0x0209FD24 + ldr r1, _0209FD30 ; =0x021C8EF0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_0209FD30: .word 0x021C8EF0 + + arm_func_start FUN_0209FD34 +FUN_0209FD34: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + ldr r0, _0209FD8C ; =0x021C90A0 + bl OS_IsThreadTerminated + movs r4, r0 + bne _0209FD74 + ldr r1, _0209FD90 ; =0x021C8EF8 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _0209FD74 + ldr r0, _0209FD8C ; =0x021C90A0 + mov r2, #0x1 + str r2, [r1, #0x0] + bl OS_WakeupThreadDirect +_0209FD74: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_0209FD8C: .word 0x021C90A0 +_0209FD90: .word 0x021C8EF8 + + arm_func_start FUN_0209FD94 +FUN_0209FD94: ; 0x0209FD94 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r4, r0 + ldr r0, _0209FFD4 ; =0x02000BEC + bl OSi_ReferSymbol + ldr r12, [r4, #0x14] + ldr r6, [r4, #0x18] + mov r1, #0x0 + cmp r6, r1 + cmpeq r12, r1 + beq _0209FDEC + ldr r0, _0209FFD8 ; =0x021C8F24 + ldr r5, _0209FFDC ; =0x6C078965 + ldr r3, _0209FFE0 ; =0x5D588B65 + ldr r2, _0209FFE4 ; =0x00269EC3 + str r12, [r0, #0x0] + str r6, [r0, #0x4] + str r5, [r0, #0x8] + str r3, [r0, #0xc] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + b _0209FE1C +_0209FDEC: + bl OS_GetTick + ldr r2, _0209FFD8 ; =0x021C8F24 + ldr ip, _0209FFDC ; =0x6C078965 + ldr r6, _0209FFE0 ; =0x5D588B65 + ldr r5, _0209FFE4 ; =0x00269EC3 + mov r3, #0x0 + str r0, [r2, #0x0] + str r1, [r2, #0x4] + str r12, [r2, #0x8] + str r6, [r2, #0xc] + str r5, [r2, #0x10] + str r3, [r2, #0x14] +_0209FE1C: + ldr r2, [r4, #0x4] + cmp r2, #0x0 + beq _0209FE4C + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _0209FE4C + ldr r1, _0209FFE8 ; =0x021C8EC8 + ldr r0, _0209FFEC ; =0x021C8EF4 + str r2, [r1, #0x0] + ldr r1, [r4, #0x8] + str r1, [r0, #0x0] + b _0209FE60 +_0209FE4C: + ldr r2, _0209FFF0 ; =FUN_020A0058 + ldr r1, _0209FFE8 ; =0x021C8EC8 + ldr r0, _0209FFEC ; =0x021C8EF4 + str r2, [r1, #0x0] + str r2, [r0, #0x0] +_0209FE60: + ldr r1, [r4, #0x0] + ldr r0, _0209FFF4 ; =0x021C8EC4 + ldr ip, _0209FFD8 ; =0x021C8F24 + str r1, [r0, #0x0] + ldr r1, [r4, #0x24] + ldr r3, [r12, #0x8] + cmp r1, #0x0 + ldrne r0, _0209FFF8 ; =0x021C8EB0 + strneh r1, [r0, #0x0] + ldreq r1, _0209FFFC ; =0x000005B4 + ldreq r0, _0209FFF8 ; =0x021C8EB0 + streqh r1, [r0, #0x0] + ldr r2, [r4, #0x28] + ldr r1, _020A0000 ; =0x021C8EE8 + ldr r0, _020A0004 ; =0x021C8ED8 + str r2, [r1, #0x0] + ldr r1, [r4, #0x2c] + ldr r2, [r12, #0x0] + str r1, [r0, #0x0] + ldr r1, [r4, #0xc] + umull lr, r5, r3, r2 + cmp r1, #0x0 + ldrne r0, _020A0008 ; =0x021C8ECC + strne r1, [r0, #0x0] + ldreq r1, _0209FFF0 ; =FUN_020A0058 + ldreq r0, _020A0008 ; =0x021C8ECC + streq r1, [r0, #0x0] + ldr r1, [r4, #0x10] + cmp r1, #0x0 + ldrne r0, _020A000C ; =0x021C8EFC + strne r1, [r0, #0x0] + ldreq r1, _020A0010 ; =FUN_020A0050 + ldreq r0, _020A000C ; =0x021C8EFC + streq r1, [r0, #0x0] + ldr r1, [r12, #0x4] + ldr r0, _020A0014 ; =0x00000F88 + mla r5, r3, r1, r5 + ldr r1, [r12, #0xc] + ldr r3, [r12, #0x10] + mla r5, r1, r2, r5 + adds r2, r3, lr + ldr r1, [r12, #0x14] + mov r3, #0x0 + adc r1, r1, r5 + umull lr, r5, r1, r0 + mla r5, r1, r3, r5 + mla r5, r3, r0, r5 + ldr r6, [r4, #0x1c] + ldr r0, _020A0018 ; =0x021C8F0C + ldr lr, _020A001C ; =0x021C8F10 + str r6, [r0, #0x0] + ldr r4, [r4, #0x20] + ldr r0, _020A0020 ; =0x021C8EE4 + str r4, [lr, #0x0] + str r3, [r0, #0x0] + ldr lr, _020A0024 ; =0x021C8EDC + ldr r4, _020A0028 ; =0x021C8EBC + add r5, r5, #0x400 + ldr r0, _020A002C ; =0x021C8F14 + str r3, [lr, #0x0] + str r2, [r12, #0x0] + str r1, [r12, #0x4] + strh r5, [r4, #0x0] + bl OS_GetMacAddress + ldr r0, _020A0030 ; =0x021C8EAC + mov r2, #0x0 + strb r2, [r0, #0x0] + mov r1, #0x800 + str r1, [sp, #0x0] + ldr r0, _020A0034 ; =0x02106218 + ldr r1, _020A0038 ; =FUN_0209CD3C + ldr r4, [r0, #0x0] + ldr r0, _020A003C ; =0x021C9160 + ldr r3, _020A0040 ; =0x021CA6E0 + str r4, [sp, #0x4] + bl OS_CreateThread + mov r1, #0x800 + ldr r0, _020A0034 ; =0x02106218 + str r1, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020A0044 ; =0x021C90A0 + str r1, [sp, #0x4] + ldr r1, _020A0048 ; =FUN_0209BA80 + ldr r3, _020A004C ; =0x021C9EE0 + mov r2, #0x0 + bl OS_CreateThread + ldr r0, _020A003C ; =0x021C9160 + bl OS_WakeupThreadDirect + ldr r0, _020A0044 ; =0x021C90A0 + bl OS_WakeupThreadDirect + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_0209FFD4: .word 0x02000BEC +_0209FFD8: .word 0x021C8F24 +_0209FFDC: .word 0x6C078965 +_0209FFE0: .word 0x5D588B65 +_0209FFE4: .word 0x00269EC3 +_0209FFE8: .word 0x021C8EC8 +_0209FFEC: .word 0x021C8EF4 +_0209FFF0: .word FUN_020A0058 +_0209FFF4: .word 0x021C8EC4 +_0209FFF8: .word 0x021C8EB0 +_0209FFFC: .word 0x000005B4 +_020A0000: .word 0x021C8EE8 +_020A0004: .word 0x021C8ED8 +_020A0008: .word 0x021C8ECC +_020A000C: .word 0x021C8EFC +_020A0010: .word FUN_020A0050 +_020A0014: .word 0x00000F88 +_020A0018: .word 0x021C8F0C +_020A001C: .word 0x021C8F10 +_020A0020: .word 0x021C8EE4 +_020A0024: .word 0x021C8EDC +_020A0028: .word 0x021C8EBC +_020A002C: .word 0x021C8F14 +_020A0030: .word 0x021C8EAC +_020A0034: .word 0x02106218 +_020A0038: .word FUN_0209CD3C +_020A003C: .word 0x021C9160 +_020A0040: .word 0x021CA6E0 +_020A0044: .word 0x021C90A0 +_020A0048: .word FUN_0209BA80 +_020A004C: .word 0x021C9EE0 + + arm_func_start FUN_020A0050 +FUN_020A0050: ; 0x020A0050 + mov r0, #0x1 + bx lr + + arm_func_start FUN_020A0058 +FUN_020A0058: ; 0x020A0058 + bx lr + + arm_func_start FUN_020A005C +FUN_020A005C: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020A0094 ; =0x021C8ED8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020A0084 + bl OS_YieldThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A0084: + bl OS_Sleep + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A0094: .word 0x021C8ED8 + + arm_func_start FUN_020A0098 +FUN_020A0098: ; 0x020A0098 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r1, _020A01B8 ; =0x021C8F04 + ldr r5, _020A01BC ; =0x021C8EC0 + ldr r1, [r1, #0x0] + ldr r3, _020A01C0 ; =0x021C8F1C + cmp r1, #0x0 + mov r1, #0x0 + movne r6, #0x1 + ldr ip, _020A01C4 ; =0x021C8ED0 + ldr r2, _020A01C8 ; =0x021C8ED4 + moveq r6, #0x0 + ldr lr, _020A01B8 ; =0x021C8F04 + ldr r4, _020A01CC ; =0x021C8EE0 + cmp r6, #0x0 + str r1, [r12, #0x0] + str r1, [r3, #0x0] + str r1, [r3, #0x4] + str r1, [r2, #0x0] + addeq sp, sp, #0x4 + str r0, [r5, #0x0] + str r1, [lr, #0x0] + str r1, [r4, #0x0] + ldmeqia sp!, {r4-r7,lr} + bxeq lr + ldr r0, _020A01D0 ; =0x021C8F78 + mov r2, #0x60 + bl MI_CpuFill8 + ldr r0, _020A01D4 ; =0x021D3498 + ldr r5, [r0, #0x8] + cmp r5, #0x0 + beq _020A016C + mov r4, #0x0 +_020A011C: + ldr r1, [r5, #0xa4] + cmp r1, #0x0 + beq _020A0160 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _020A0160 + ldrb r0, [r1, #0x8] + cmp r0, #0xa + beq _020A0148 + cmp r0, #0xb + strneb r4, [r1, #0x8] +_020A0148: + ldr r0, [r1, #0x4] + cmp r0, #0x0 + beq _020A0160 + str r4, [r1, #0x4] + ldr r0, [r1, #0x0] + bl OS_WakeupThreadDirect +_020A0160: + ldr r5, [r5, #0x68] + cmp r5, #0x0 + bne _020A011C +_020A016C: + ldr r6, _020A01D8 ; =0x021C9520 + mov r7, #0x0 + ldr r4, _020A01DC ; =0x021C8EF4 + mov r5, r7 +_020A017C: + ldrh r0, [r6, #0x4] + cmp r0, #0x0 + beq _020A0198 + ldr r0, [r6, #0x34] + ldr r1, [r4, #0x0] + blx r1 + strh r5, [r6, #0x4] +_020A0198: + add r7, r7, #0x1 + cmp r7, #0x8 + add r6, r6, #0x38 + blt _020A017C + bl FUN_020A01E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A01B8: .word 0x021C8F04 +_020A01BC: .word 0x021C8EC0 +_020A01C0: .word 0x021C8F1C +_020A01C4: .word 0x021C8ED0 +_020A01C8: .word 0x021C8ED4 +_020A01CC: .word 0x021C8EE0 +_020A01D0: .word 0x021C8F78 +_020A01D4: .word 0x021D3498 +_020A01D8: .word 0x021C9520 +_020A01DC: .word 0x021C8EF4 + + arm_func_start FUN_020A01E0 +FUN_020A01E0: ; 0x020A01E0 + ldr ip, _020A01F4 ; =MI_CpuFill8 + ldr r0, _020A01F8 ; =0x021CA6FC + mov r1, #0x0 + mov r2, #0x170 + bx r12 + .balign 4 +_020A01F4: .word MI_CpuFill8 +_020A01F8: .word 0x021CA6FC + + arm_func_start FUN_020A01FC +FUN_020A01FC: ; 0x020A01FC + stmdb sp!, {r4-r6,lr} + mov r5, r0 + bl OS_DisableInterrupts + ldr r4, _020A02E0 ; =0x021CA6FC + mov r6, #0x0 + mov r2, r6 + ldr r1, _020A02E4 ; =0x000003BD +_020A0218: + ldrb r3, [r4, #0x5a] + cmp r3, #0x0 + beq _020A0234 + ldr r3, [r4, #0x50] + sub r3, r5, r3 + cmp r3, r1 + strgtb r2, [r4, #0x5a] +_020A0234: + add r6, r6, #0x1 + cmp r6, #0x4 + add r4, r4, #0x5c + blt _020A0218 + bl OS_RestoreInterrupts + ldr r0, _020A02E8 ; =0x021D3498 + ldr r4, [r0, #0x8] + cmp r4, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r6, #0x0 +_020A0260: + ldr r1, [r4, #0xa4] + cmp r1, #0x0 + beq _020A02CC + ldr r0, [r1, #0x0] + cmp r0, #0x0 + beq _020A02CC + ldrb r0, [r1, #0x9] + cmp r0, #0x0 + beq _020A02CC + ldrb r0, [r1, #0x8] + cmp r0, #0x4 + bne _020A02CC + ldr r0, [r1, #0xc] + ldrb r0, [r0, #0x455] + cmp r0, #0x8 + bhs _020A02CC + ldr r0, [r1, #0x10] + sub r0, r5, r0 + cmp r0, #0xef + ble _020A02CC + ldr r0, [r1, #0x4] + cmp r0, #0x2 + bne _020A02CC + strb r6, [r1, #0x8] + str r6, [r1, #0x4] + ldr r0, [r1, #0x0] + bl OS_WakeupThreadDirect +_020A02CC: + ldr r4, [r4, #0x68] + cmp r4, #0x0 + bne _020A0260 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A02E0: .word 0x021CA6FC +_020A02E4: .word 0x000003BD +_020A02E8: .word 0x021D3498 + + arm_func_start FUN_020A02EC +FUN_020A02EC: + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020A0318 ; =0x02000C04 + bl OSi_ReferSymbol + ldr r0, _020A031C ; =0x021D3498 + ldr r0, [r0, #0x4] + ldr r0, [r0, #0xa4] + cmp r0, #0x0 + strneb r4, [r0, #0x9] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A0318: .word 0x02000C04 +_020A031C: .word 0x021D3498 + + arm_func_start FUN_020A0320 +FUN_020A0320: ; 0x020A0320 + stmdb sp!, {r4,lr} + ldr r4, [r0, #0xc] + mov r0, #0x0 + strb r0, [r4, #0x455] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A0348 + ldr r1, _020A0358 ; =0x021C8EF4 + ldr r1, [r1, #0x0] + blx r1 +_020A0348: + mov r0, #0x0 + str r0, [r4, #0x824] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A0358: .word 0x021C8EF4 + + arm_func_start FUN_020A035C +FUN_020A035C: ; 0x020A035C + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x20 + mov r5, r0 + ldr r4, [r5, #0xc] + ldrb r0, [r4, #0x455] + cmp r0, #0x8 + bne _020A03CC + mov r12, #0x0 + mov r6, #0x15 + mov lr, #0x3 + mov r3, #0x2 + mov r2, #0x1 + add r1, sp, #0x4 + mov r0, r4 + strb r6, [sp, #0x4] + strb lr, [sp, #0x5] + strb r12, [sp, #0x6] + strb r12, [sp, #0x7] + strb r3, [sp, #0x8] + strb r2, [sp, #0x9] + strb r12, [sp, #0xa] + bl FUN_020A19F4 + mov r2, #0x0 + mov r1, r0 + add r0, sp, #0x4 + mov r3, r2 + str r5, [sp, #0x0] + bl FUN_0209C1D4 +_020A03CC: + mov r0, #0x0 + strb r0, [r4, #0x455] + add sp, sp, #0x20 + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_020A03E0 +FUN_020A03E0: ; 0x020A03E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r4, [sp, #0x48] + mov r9, r1 + mov r1, r4 + mov r10, r0 + mov r0, #0x0 + ldr r1, [r1, #0xc] + str r0, [sp, #0x8] + str r0, [sp, #0x1c] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + mov r0, #0x17 + str r0, [sp, #0xc] + mov r0, #0x3 + str r4, [sp, #0x48] + str r1, [sp, #0x4] + mov r8, r2 + add r6, r9, r3 + str r0, [sp, #0x10] +_020A0430: + ldr r0, _020A052C ; =0x00000B4F + ldr r1, _020A0530 ; =0x021C8EC8 + cmp r6, r0 + movgt r5, r0 + movle r5, r6 + ldr r1, [r1, #0x0] + add r0, r5, #0x19 + blx r1 + movs r7, r0 + beq _020A051C + cmp r9, r5 + movcs r4, r5 + movcc r4, r9 + mov r0, r10 + add r1, r7, #0x5 + mov r2, r4 + sub r11, r5, r4 + bl MI_CpuCopy8 + add r1, r7, #0x5 + mov r0, r8 + add r1, r1, r4 + mov r2, r11 + add r10, r10, r4 + sub r9, r9, r4 + bl MI_CpuCopy8 + ldr r0, [sp, #0xc] + mov r1, r7 + strb r0, [r7, #0x0] + ldr r0, [sp, #0x10] + add r8, r8, r11 + strb r0, [r7, #0x1] + ldr r0, [sp, #0x14] + strb r0, [r7, #0x2] + mov r0, r5, asr #0x8 + strb r0, [r7, #0x3] + ldr r0, [sp, #0x4] + strb r5, [r7, #0x4] + bl FUN_020A19F4 + ldr r1, [sp, #0x48] + ldr r2, [sp, #0x18] + mov r4, r0 + str r1, [sp, #0x0] + mov r0, r7 + mov r1, r4 + mov r3, r2 + bl FUN_0209C1D4 + cmp r0, r4 + ldr r1, _020A0534 ; =0x021C8EF4 + mov r0, r7 + ldr r1, [r1, #0x0] + ldrcc r5, [sp, #0x1c] + blx r1 + ldr r0, [sp, #0x8] + subs r6, r6, r5 + add r0, r0, r5 + str r0, [sp, #0x8] + beq _020A051C + cmp r5, #0x0 + bne _020A0430 +_020A051C: + ldr r0, [sp, #0x8] + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A052C: .word 0x00000B4F +_020A0530: .word 0x021C8EC8 +_020A0534: .word 0x021C8EF4 + + arm_func_start FUN_020A0538 +FUN_020A0538: ; 0x020A0538 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A0560 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + bne _020A0568 +_020A0560: + mov r0, r5 + bl FUN_020A05D4 +_020A0568: + ldr r1, [r4, #0x824] + cmp r1, #0x0 + beq _020A0594 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + ldrne r1, [r4, #0x828] + ldrne r0, [r4, #0x82c] + addne sp, sp, #0x4 + subne r0, r1, r0 + ldmneia sp!, {r4-r5,lr} + bxne lr +_020A0594: + cmp r1, #0x0 + bne _020A05C4 + ldrb r0, [r5, #0x8] + cmp r0, #0x4 + bne _020A05B4 + ldrb r0, [r4, #0x455] + cmp r0, #0x9 + bne _020A05C4 +_020A05B4: + add sp, sp, #0x4 + mvn r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A05C4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A05D4 +FUN_020A05D4: ; 0x020A05D4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r0 + ldr r4, [r5, #0xc] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + bne _020A0684 + ldr r0, [r5, #0x44] + cmp r0, #0x5 + addcc sp, sp, #0x8 + ldmccia sp!, {r4-r6,lr} + bxcc lr + add r0, sp, #0x0 + mov r1, r5 + bl FUN_0209C6C0 + ldrb r2, [r0, #0x3] + ldrb r0, [r0, #0x4] + ldr r1, _020A0730 ; =0x00004805 + add r0, r0, r2, lsl #0x8 + add r0, r0, #0x5 + str r0, [sp, #0x0] + cmp r0, r1 + movhi r0, #0x9 + addhi sp, sp, #0x8 + strhib r0, [r4, #0x455] + ldmhiia sp!, {r4-r6,lr} + bxhi lr + ldr r1, _020A0734 ; =0x021C8EC8 + ldr r1, [r1, #0x0] + blx r1 + str r0, [r4, #0x824] + ldr r0, [r4, #0x824] + cmp r0, #0x0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, [sp, #0x0] + mov r0, #0x0 + str r1, [r4, #0x828] + str r0, [r4, #0x82c] + strb r0, [r4, #0x456] + b _020A0698 +_020A0684: + ldr r0, [r5, #0x44] + cmp r0, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,lr} + bxeq lr +_020A0698: + add r0, sp, #0x0 + mov r1, r5 + bl FUN_0209C6C0 + ldr r3, [r4, #0x828] + ldr r2, [r4, #0x82c] + ldr r1, [sp, #0x0] + sub r2, r3, r2 + cmp r1, r2 + strcs r2, [sp, #0x0] + movcs r6, #0x1 + ldr r3, [r4, #0x824] + ldr r1, [r4, #0x82c] + ldr r2, [sp, #0x0] + add r1, r3, r1 + movcc r6, #0x0 + bl MI_CpuCopy8 +_020A06D8: ; 0x020A06D8 + ldr r0, [sp, #0x0] + mov r1, r5 + bl FUN_0209C580 +_020A06E4: ; 0x020A06E4 + cmp r6, #0x0 + beq _020A0714 + ldr r1, [r4, #0x824] + mov r0, r4 + bl FUN_020A16E8 + ldrb r0, [r4, #0x456] + add sp, sp, #0x8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r4, #0x824] + ldmia sp!, {r4-r6,lr} + bx lr +_020A0714: + ldr r1, [r4, #0x82c] + ldr r0, [sp, #0x0] + add r0, r1, r0 + str r0, [r4, #0x82c] + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A0730: .word 0x00004805 +_020A0734: .word 0x021C8EC8 + + arm_func_start FUN_020A0738 +FUN_020A0738: ; 0x020A0738 + stmdb sp!, {r4,lr} + ldr r4, [r1, #0xc] + ldr r2, [r4, #0x828] + ldr r1, [r4, #0x82c] + sub r2, r2, r1 + cmp r0, r2 + blo _020A077C + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A076C + ldr r1, _020A078C ; =0x021C8EF4 + ldr r1, [r1, #0x0] + blx r1 +_020A076C: + mov r0, #0x0 + str r0, [r4, #0x824] + ldmia sp!, {r4,lr} + bx lr +_020A077C: + add r0, r1, r0 + str r0, [r4, #0x82c] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A078C: .word 0x021C8EF4 + + arm_func_start FUN_020A0790 +FUN_020A0790: ; 0x020A0790 + stmdb sp!, {r4-r6,lr} + mov r5, r1 + ldr r4, [r5, #0xc] + mov r6, r0 + ldr r12, [r4, #0x824] + cmp r12, #0x0 + beq _020A0818 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + bne _020A0818 + ldr r3, [r4, #0x82c] + ldr r1, [r4, #0x828] + mov r2, r5 + add r0, r12, r3 + sub r1, r1, r3 + bl FUN_020A1974 +_020A07D0: ; 0x020A07D0 + cmp r0, #0x0 + beq _020A07FC + ldr r1, _020A0870 ; =0x021C8EF4 + ldr r0, [r4, #0x824] + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x0 + str r0, [r4, #0x824] + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr +_020A07FC: + ldr r1, [r4, #0x824] + mov r0, r4 + bl FUN_020A16E8 + ldrb r0, [r4, #0x456] + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r4, #0x824] +_020A0818: + ldr r0, [r4, #0x824] + cmp r0, #0x0 + bne _020A084C +_020A0824: + mov r0, r5 + bl FUN_020A1528 + cmp r0, #0x9 + moveq r0, #0x0 + streq r0, [r6, #0x0] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [r4, #0x824] + cmp r0, #0x0 + beq _020A0824 +_020A084C: + ldr r1, [r4, #0x828] + ldr r0, [r4, #0x82c] + sub r0, r1, r0 + str r0, [r6, #0x0] + ldr r1, [r4, #0x824] + ldr r0, [r4, #0x82c] + add r0, r1, r0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A0870: .word 0x021C8EF4 + + arm_func_start FUN_020A0874 +FUN_020A0874: ; 0x020A0874 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r1, [r5, #0x8] + ldr r4, [r5, #0xc] + cmp r1, #0x4 + beq _020A08A8 + bl FUN_0209C990 +_020A0894: ; 0x020A0894 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,lr} + bxne lr +_020A08A8: + mov r1, #0x0 + strb r1, [r4, #0x455] + str r1, [r4, #0x1d4] + add r0, r4, #0x2ec + strb r1, [r4, #0x454] + bl FUN_020A41CC + add r0, r4, #0x3a4 + bl FUN_020A3B8C + mov r0, r5 + bl FUN_020A08DC + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A08DC +FUN_020A08DC: ; 0x020A08DC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r4, [r5, #0xc] + bl FUN_020A0DE4 +_020A08F0: + mov r0, r5 + bl FUN_020A1528 + cmp r0, #0x9 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r0, #0x4 + beq _020A0920 + ldrb r0, [r4, #0x31] + cmp r0, #0x0 + beq _020A08F0 +_020A0920: + ldrb r0, [r4, #0x31] + cmp r0, #0x0 + beq _020A095C + mov r0, r4 + bl FUN_020A215C + mov r0, r5 + bl FUN_020A0AF4 +_020A093C: ; 0x020A093C + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,lr} + bxne lr + mov r0, r5 + bl FUN_020A0F94 + b _020A09B4 +_020A095C: + mov r0, r5 + bl FUN_020A0B2C + mov r0, r4 + bl FUN_020A2364 + ldrb r0, [r4, #0x30] + cmp r0, #0x0 + beq _020A0988 + ldrh r2, [r5, #0x18] + ldr r1, [r5, #0x1c] + mov r0, r4 + bl FUN_020A3808 +_020A0988: + mov r0, r4 + bl FUN_020A215C + mov r0, r5 + bl FUN_020A0F94 + mov r0, r5 + bl FUN_020A0AF4 +_020A09A0: ; 0x020A09A0 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,lr} + bxne lr +_020A09B4: + mov r0, #0x8 + strb r0, [r4, #0x455] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A09CC +FUN_020A09CC: ; 0x020A09CC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r8, [r9, #0xc] + add r5, r8, #0x2ec + add r4, r8, #0x3a4 + mov r7, #0x0 + mov r6, #0x1 +_020A09EC: + mov r0, r9 + bl FUN_0209CAC4 + strb r7, [r8, #0x455] + str r7, [r8, #0x1d4] + mov r0, r5 + strb r6, [r8, #0x454] + bl FUN_020A41CC + mov r0, r4 + bl FUN_020A3B8C + mov r0, r9 + bl FUN_020A0A58 +_020A0A18: ; 0x020A0A18 + cmp r0, #0x0 + moveq r0, #0x8 + addeq sp, sp, #0x4 + streqb r0, [r8, #0x455] + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, r9 + bl FUN_0209C884 + ldrh r0, [r9, #0x1a] + strh r0, [r9, #0x18] + ldr r0, [r9, #0x20] + str r0, [r9, #0x1c] + b _020A09EC +_020A0A4C: ; 0x020A0A4C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_020A0A58 +FUN_020A0A58: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020A1528 + cmp r0, #0x1 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl FUN_020A10F4 +_020A0A7C: ; 0x020A0A7C + cmp r0, #0x0 + beq _020A0AB0 + ldr r0, [r4, #0xc] + bl FUN_020A215C + mov r0, r4 + bl FUN_020A0F94 + mov r0, r4 + bl FUN_020A0AF4 +_020A0A9C: ; 0x020A0A9C + cmp r0, #0x0 + beq _020A0AE8 + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A0AB0: + mov r0, r4 + bl FUN_020A1528 + cmp r0, #0x5 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl FUN_020A0AF4 +_020A0AD0: ; 0x020A0AD0 + cmp r0, #0x0 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl FUN_020A0F94 +_020A0AE8: + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A0AF4 +FUN_020A0AF4: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020A1528 + cmp r0, #0x7 + movne r0, #0x1 + ldmneia sp!, {r4,lr} + bxne lr + mov r0, r4 + bl FUN_020A1528 + cmp r0, #0x6 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A0B2C +FUN_020A0B2C: ; 0x020A0B2C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r0 + ldr r10, [r11, #0xc] + mov r0, #0x3 + strb r0, [r10, #0x0] + mov r0, #0x0 + strb r0, [r10, #0x1] + add r0, r10, #0x2 + mov r1, #0x2e + bl FUN_020A13E0 + ldr r4, [r10, #0x594] + ldr r0, _020A0DD4 ; =0x021C8EC8 + mov r1, r4, lsl #0x1 + ldr r2, [r0, #0x0] + add r1, r1, r1, lsr #0x1f + mov r0, r4 + mov r6, r1, asr #0x1 + blx r2 + movs r5, r0 + moveq r0, #0x9 + addeq sp, sp, #0xc + streqb r0, [r10, #0x455] + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r0, #0x0 + strb r0, [r5, #0x0] + mov r2, #0x2 + add r0, r5, #0x2 + sub r1, r4, #0x33 + strb r2, [r5, #0x1] + bl FUN_020A13E0 + add r1, r5, r4 + mov r0, r10 + sub r3, r4, #0x31 + mov r7, #0x0 + sub r1, r1, #0x30 + mov r2, #0x30 + strb r7, [r5, r3] + bl MI_CpuCopy8 + ldr r1, _020A0DD4 ; =0x021C8EC8 + mov r0, r6, lsl #0x3 + ldr r1, [r1, #0x0] + blx r1 + movs r9, r0 + bne _020A0C08 + ldr r1, _020A0DD8 ; =0x021C8EF4 + mov r0, r5 + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x9 + add sp, sp, #0xc + strb r0, [r10, #0x455] + ldmia sp!, {r4-r11,lr} + bx lr +_020A0C08: + add r0, r9, r6, lsl #0x1 + add r8, r0, r6, lsl #0x1 + mov r1, r5 + mov r2, r4 + mov r3, r6 + str r0, [sp, #0x4] + add r7, r8, r6, lsl #0x1 + bl FUN_020A4B50 + ldr r1, _020A0DDC ; =0x00000598 + ldr r2, [r10, #0x5a0] + mov r0, r8 + add r1, r10, r1 + mov r3, r6 + bl FUN_020A4B50 + ldr r1, _020A0DE0 ; =0x00000494 + mov r0, r7 + mov r2, r4 + add r1, r10, r1 + mov r3, r6 + bl FUN_020A4B50 + bl FUN_020A36EC + mov r3, r6 + mov r6, r0 + ldr r1, [sp, #0x4] + mov r2, r8 + mov r0, r9 + str r7, [sp, #0x0] + bl FUN_020A507C + mov r0, r6 + bl FUN_020A36B4 + ldr r1, _020A0DD4 ; =0x021C8EC8 + add r0, r4, #0x49 + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + bne _020A0CCC + ldr r1, _020A0DD8 ; =0x021C8EF4 + mov r0, r5 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020A0DD8 ; =0x021C8EF4 + mov r0, r9 + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x9 + add sp, sp, #0xc + strb r0, [r10, #0x455] + ldmia sp!, {r4-r11,lr} + bx lr +_020A0CCC: + mov r0, #0x16 + strb r0, [r6, #0x0] + mov r1, #0x3 + add r0, r4, #0x4 + strb r1, [r6, #0x1] + mov r1, #0x0 + strb r1, [r6, #0x2] + mov r1, r0, asr #0x8 + strb r1, [r6, #0x3] + add r2, r6, #0x9 + strb r0, [r6, #0x4] + mov r0, #0x10 + strb r0, [r6, #0x5] + mov r0, r4, asr #0x10 + strb r0, [r6, #0x6] + mov r0, r4, asr #0x8 + strb r0, [r6, #0x7] + mov r0, r2 + strb r4, [r6, #0x8] + ands r1, r4, #0x1 + beq _020A0D38 + add r0, r4, r4, lsr #0x1f + mov r0, r0, asr #0x1 + mov r0, r0, lsl #0x1 + ldrh r1, [r9, r0] + add r0, r2, #0x1 + strb r1, [r2, #0x0] +_020A0D38: + add r1, r4, r4, lsr #0x1f + mov r1, r1, asr #0x1 + subs r7, r1, #0x1 + bmi _020A0D70 +_020A0D48: + mov r3, r7, lsl #0x1 + ldrh r1, [r9, r3] + add r2, r0, #0x1 + subs r7, r7, #0x1 + mov r1, r1, asr #0x8 + strb r1, [r0, #0x0] + ldrh r1, [r9, r3] + add r0, r0, #0x2 + strb r1, [r2, #0x0] + bpl _020A0D48 +_020A0D70: + mov r2, #0x0 + mov r0, r6 + mov r3, r2 + add r1, r4, #0x9 + str r11, [sp, #0x0] + bl FUN_0209C1D4 + mov r0, r10 + add r1, r6, #0x5 + add r2, r4, #0x4 + bl FUN_020A1944 + ldr r1, _020A0DD8 ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020A0DD8 ; =0x021C8EF4 + mov r0, r9 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020A0DD8 ; =0x021C8EF4 + mov r0, r5 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A0DD4: .word 0x021C8EC8 +_020A0DD8: .word 0x021C8EF4 +_020A0DDC: .word 0x00000598 +_020A0DE0: .word 0x00000494 + + arm_func_start FUN_020A0DE4 +FUN_020A0DE4: ; 0x020A0DE4 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r1, _020A0F88 ; =0x021C8EC8 + mov r8, r0 + ldr r1, [r1, #0x0] + mov r0, #0x98 + ldr r7, [r8, #0xc] + blx r1 + movs r6, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r7, #0x455] + ldmeqia sp!, {r4-r8,lr} + bxeq lr + mov r0, #0x3 + strb r0, [r6, #0x9] + add r5, r6, #0x9 + mov r0, #0x0 + strb r0, [r5, #0x1] + bl FUN_020A375C + mov r1, r0, lsr #0x18 + strb r1, [r7, #0x34] + mov r1, r0, lsr #0x10 + strb r1, [r7, #0x35] + mov r1, r0, lsr #0x8 + strb r1, [r7, #0x36] + strb r0, [r7, #0x37] + add r0, r7, #0x38 + mov r1, #0x1c + bl FUN_020A13E0 + add r0, r7, #0x34 + add r1, r5, #0x2 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrh r2, [r8, #0x18] + ldr r1, [r8, #0x1c] + mov r0, r7 + bl FUN_020A3908 + ldrb r0, [r7, #0x30] + cmp r0, #0x0 + moveq r0, #0x0 + streqb r0, [r5, #0x22] + addeq r5, r5, #0x23 + beq _020A0EAC + mov r2, #0x20 + add r0, r7, #0x74 + add r1, r5, #0x23 + strb r2, [r5, #0x22] + bl MI_CpuCopy8 + add r5, r5, #0x43 +_020A0EAC: + mov r4, #0x0 + strb r4, [r5, #0x0] + mov r0, #0x4 + strb r0, [r5, #0x1] + ldr r2, _020A0F8C ; =0x0210623C + add r5, r5, #0x2 +_020A0EC4: + mov r3, r4, lsl #0x1 + ldrh r0, [r2, r3] + add r4, r4, #0x1 + add r1, r5, #0x1 + mov r0, r0, asr #0x8 + strb r0, [r5, #0x0] + ldrh r0, [r2, r3] + cmp r4, #0x2 + add r5, r5, #0x2 + strb r0, [r1, #0x0] + blo _020A0EC4 + mov r3, #0x1 + mov r2, #0x0 + strb r3, [r5, #0x0] + add r0, r5, #0x2 + sub r0, r0, r6 + sub r4, r0, #0x5 + strb r2, [r5, #0x1] + sub r1, r4, #0x4 + mov r0, #0x16 + strb r0, [r6, #0x0] + mov r0, #0x3 + strb r0, [r6, #0x1] + strb r2, [r6, #0x2] + mov r0, r4, asr #0x8 + strb r0, [r6, #0x3] + strb r4, [r6, #0x4] + strb r3, [r6, #0x5] + mov r0, r1, asr #0x10 + strb r0, [r6, #0x6] + mov r0, r1, asr #0x8 + strb r0, [r6, #0x7] + strb r1, [r6, #0x8] + mov r0, r6 + mov r3, r2 + add r1, r4, #0x5 + str r8, [sp, #0x0] + bl FUN_0209C1D4 + mov r0, r7 + mov r2, r4 + add r1, r6, #0x5 + bl FUN_020A1944 + ldr r1, _020A0F90 ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A0F88: .word 0x021C8EC8 +_020A0F8C: .word 0x0210623C +_020A0F90: .word 0x021C8EF4 + + arm_func_start FUN_020A0F94 +FUN_020A0F94: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r1, _020A10EC ; =0x021C8EC8 + mov r6, r0 + ldr r1, [r1, #0x0] + mov r0, #0x83 + ldr r5, [r6, #0xc] + blx r1 + movs r4, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r5, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, #0x14 + strb r0, [r4, #0x0] + mov r0, #0x3 + strb r0, [r4, #0x1] + mov r1, #0x0 + strb r1, [r4, #0x2] + strb r1, [r4, #0x3] + mov r3, #0x1 + strb r3, [r4, #0x4] + add r0, r5, #0x1cc + mov r2, #0x8 + strb r3, [r4, #0x5] + bl MI_CpuFill8 + mov r0, #0x16 + strb r0, [r4, #0x6] + mov r0, #0x3 + strb r0, [r4, #0x7] + mov r1, #0x0 + strb r1, [r4, #0x8] + strb r1, [r4, #0x9] + mov r0, #0x28 + strb r0, [r4, #0xa] + mov r0, #0x14 + strb r0, [r4, #0xb] + strb r1, [r4, #0xc] + strb r1, [r4, #0xd] + mov r3, #0x24 + add r0, r5, #0x3a4 + add r1, r5, #0x3fc + mov r2, #0x58 + strb r3, [r4, #0xe] + bl MI_CpuCopy8 + mov r0, r5 + add r1, r4, #0xf + mov r2, #0x0 + bl FUN_020A2034 + add r0, r5, #0x3fc + add r1, r5, #0x3a4 + mov r2, #0x58 + bl MI_CpuCopy8 + add r0, r5, #0x2ec + add r1, r5, #0x348 + mov r2, #0x5c + bl MI_CpuCopy8 + mov r0, r5 + add r1, r4, #0x1f + mov r2, #0x0 + bl FUN_020A1F4C + add r0, r5, #0x348 + add r1, r5, #0x2ec + mov r2, #0x5c + bl MI_CpuCopy8 + mov r0, r5 + add r1, r4, #0xb + mov r2, #0x28 + bl FUN_020A1944 + mov r0, r5 + add r1, r4, #0x6 + bl FUN_020A19F4 + mov r2, #0x0 + add r1, r0, #0x6 + mov r0, r4 + mov r3, r2 + str r6, [sp, #0x0] + bl FUN_0209C1D4 + ldr r1, _020A10F0 ; =0x021C8EF4 + mov r0, r4 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A10EC: .word 0x021C8EC8 +_020A10F0: .word 0x021C8EF4 + + arm_func_start FUN_020A10F4 +FUN_020A10F4: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r7, [r9, #0xc] + ldr r4, [r7, #0x820] + cmp r4, #0x0 + ldrne r8, [r4, #0x0] + moveq r8, #0x0 + bl FUN_020A375C + mov r1, r0, lsr #0x18 + strb r1, [r7, #0x54] + mov r1, r0, lsr #0x10 + strb r1, [r7, #0x55] + mov r1, r0, lsr #0x8 + strb r1, [r7, #0x56] + strb r0, [r7, #0x57] + add r0, r7, #0x58 + mov r1, #0x1c + bl FUN_020A13E0 + ldr r1, _020A1360 ; =0x021C8EC8 + add r0, r8, #0x9d + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + moveq r0, #0x9 + streqb r0, [r7, #0x455] + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r9,lr} + bxeq lr + mov r0, #0x2 + add r5, r6, #0x5 + strb r0, [r6, #0x5] + mov r3, #0x0 + strb r3, [r5, #0x1] + strb r3, [r5, #0x2] + mov r0, #0x46 + strb r0, [r5, #0x3] + mov r0, #0x3 + strb r0, [r5, #0x4] + add r0, r7, #0x54 + add r1, r5, #0x6 + mov r2, #0x20 + strb r3, [r5, #0x5] + bl MI_CpuCopy8 + mov r2, #0x20 + strb r2, [r5, #0x26] + ldrb r0, [r7, #0x30] + cmp r0, #0x0 + beq _020A11D8 + add r0, r7, #0x74 + add r1, r5, #0x27 + bl MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r7, #0x31] + add r5, r5, #0x47 + b _020A1238 +_020A11D8: + add r0, r5, #0x27 + mov r1, #0x1c + bl FUN_020A13E0 + ldr r0, _020A1364 ; =0x021CA6E4 + add r2, r5, #0x46 + ldr r3, [r0, #0x0] + add r1, r7, #0x74 + mov r0, r3, lsr #0x18 + strb r0, [r5, #0x43] + mov r0, r3, lsr #0x10 + strb r0, [r5, #0x44] + mov r0, r3, lsr #0x8 + strb r0, [r5, #0x45] + add r5, r5, #0x47 + sub r0, r5, #0x20 + strb r3, [r2, #0x0] + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, _020A1364 ; =0x021CA6E4 + mov r1, #0x0 + ldr r2, [r0, #0x0] + add r2, r2, #0x1 + str r2, [r0, #0x0] + strb r1, [r7, #0x31] +_020A1238: + ldrh r2, [r7, #0x32] + mov r0, #0x0 + mov r2, r2, asr #0x8 + strb r2, [r5, #0x0] + ldrh r2, [r7, #0x32] + strb r2, [r5, #0x1] + strb r0, [r5, #0x2] + ldrb r0, [r7, #0x31] + add r5, r5, #0x3 + cmp r0, #0x0 + bne _020A12EC + cmp r8, #0x0 + beq _020A12D0 + mov r0, #0xb + add r2, r8, #0x6 + strb r0, [r5, #0x0] + mov r0, r2, asr #0x10 + strb r0, [r5, #0x1] + mov r0, r2, asr #0x8 + strb r0, [r5, #0x2] + add r1, r8, #0x3 + strb r2, [r5, #0x3] + mov r0, r1, asr #0x10 + strb r0, [r5, #0x4] + mov r0, r1, asr #0x8 + strb r0, [r5, #0x5] + strb r1, [r5, #0x6] + mov r0, r8, asr #0x10 + strb r0, [r5, #0x7] + mov r0, r8, asr #0x8 + strb r0, [r5, #0x8] + strb r8, [r5, #0x9] + add r5, r5, #0xa + ldr r0, [r4, #0x4] + mov r1, r5 + mov r2, r8 + bl MI_CpuCopy8 + add r5, r5, r8 +_020A12D0: + mov r0, #0xe + strb r0, [r5, #0x0] + mov r1, #0x0 + strb r1, [r5, #0x1] + strb r1, [r5, #0x2] + strb r1, [r5, #0x3] + add r5, r5, #0x4 +_020A12EC: + mov r0, #0x16 + sub r1, r5, r6 + sub r4, r1, #0x5 + strb r0, [r6, #0x0] + mov r0, #0x3 + strb r0, [r6, #0x1] + mov r0, #0x0 + strb r0, [r6, #0x2] + mov r0, r4, asr #0x8 + strb r0, [r6, #0x3] + mov r0, r7 + mov r2, r4 + add r1, r6, #0x5 + strb r4, [r6, #0x4] + bl FUN_020A1944 + mov r2, #0x0 + mov r0, r6 + mov r3, r2 + add r1, r4, #0x5 + str r9, [sp, #0x0] + bl FUN_0209C1D4 + ldr r1, _020A1368 ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldrb r0, [r7, #0x31] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020A1360: .word 0x021C8EC8 +_020A1364: .word 0x021CA6E4 +_020A1368: .word 0x021C8EF4 + + arm_func_start FUN_020A136C +FUN_020A136C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x60 + mov r6, r0 + add r0, sp, #0x0 + mov r5, r1 + bl FUN_020A41CC + bl OS_DisableInterrupts + mov r4, r0 + ldr r1, _020A13D8 ; =0x021CA6E8 + add r0, sp, #0x0 + mov r2, #0x14 + bl FUN_020A410C + mov r1, r6 + mov r2, r5 + add r0, sp, #0x0 + bl FUN_020A410C + ldr r1, _020A13D8 ; =0x021CA6E8 + add r0, sp, #0x0 + bl FUN_020A4098 + mov r0, r4 + bl OS_RestoreInterrupts + ldr r0, _020A13DC ; =0x021CA6E0 + mov r1, #0x1 + strb r1, [r0, #0x0] + add sp, sp, #0x60 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A13D8: .word 0x021CA6E8 +_020A13DC: .word 0x021CA6E0 + + arm_func_start FUN_020A13E0 +FUN_020A13E0: ; 0x020A13E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x7c + ldr r2, _020A1518 ; =0x021CA6E0 + mov r10, r0 + ldrb r0, [r2, #0x0] + mov r9, r1 + cmp r0, #0x0 + bne _020A1448 + ldr r2, _020A151C ; =0x021C8F24 + add r0, sp, #0x4 + ldr r4, [r2, #0x8] + ldr r3, [r2, #0x0] + ldr r1, [r2, #0x4] + umull r6, r5, r4, r3 + mla r5, r4, r1, r5 + ldr r1, [r2, #0xc] + ldr r4, [r2, #0x10] + mla r5, r1, r3, r5 + adds r4, r4, r6 + ldr r3, [r2, #0x14] + mov r1, #0x4 + adc r3, r3, r5 + str r4, [r2, #0x0] + str r3, [r2, #0x4] + str r3, [sp, #0x4] + bl FUN_020A136C +_020A1448: + cmp r9, #0x0 + mov r7, #0x0 + addle sp, sp, #0x7c + mov r1, #0x14 + ldmleia sp!, {r4-r11,lr} + bxle lr + add r6, sp, #0x1c + mov r11, r1 + str r7, [sp, #0x0] + mov r5, #0x1 + mov r4, #0x13 +_020A1474: + cmp r1, #0x14 + bne _020A14EC + mov r0, r6 + bl FUN_020A41CC + bl OS_DisableInterrupts + mov r8, r0 + ldr r1, _020A1520 ; =0x021CA6E8 + mov r0, r6 + mov r2, r11 + bl FUN_020A410C + mov r0, r6 + add r1, sp, #0x8 + bl FUN_020A405C + ldr r2, _020A1524 ; =0x021CA6FB + mov r12, r5 + mov lr, r4 + add r3, sp, #0x1b +_020A14B8: + ldrb r1, [r2, #0x0] + ldrb r0, [r3], #-0x1 + subs lr, lr, #0x1 + add r0, r1, r0 + add r0, r12, r0 + strb r0, [r2, #0x0] + mov r12, r0, lsr #0x8 + sub r2, r2, #0x1 + bpl _020A14B8 + str r0, [sp, #0x4] + mov r0, r8 + bl OS_RestoreInterrupts + ldr r1, [sp, #0x0] +_020A14EC: + add r0, sp, #0x8 + ldrb r0, [r0, r1] + add r1, r1, #0x1 + cmp r0, #0x0 + strneb r0, [r10, r7] + addne r7, r7, #0x1 + cmp r7, r9 + blt _020A1474 + add sp, sp, #0x7c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A1518: .word 0x021CA6E0 +_020A151C: .word 0x021C8F24 +_020A1520: .word 0x021CA6E8 +_020A1524: .word 0x021CA6FB + + arm_func_start FUN_020A1528 +FUN_020A1528: ; 0x020A1528 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r0 + ldr r4, [r5, #0xc] + add r6, sp, #0x0 +_020A153C: + mov r0, r6 + mov r1, r5 + bl FUN_0209C6C0 + ldr r1, [sp, #0x0] + cmp r1, #0x0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + cmp r1, #0x5 + blo _020A153C + ldrb r1, [r0, #0x0] + cmp r1, #0x80 + bne _020A1634 + ldrb r1, [r4, #0x454] + cmp r1, #0x0 + beq _020A1628 + ldrb r1, [r4, #0x455] + cmp r1, #0x0 + bne _020A1628 + ldrb r2, [r0, #0x1] + mov r1, r5 + mov r0, #0x2 + str r2, [sp, #0x0] + bl FUN_0209C580 + ldr r1, _020A16DC ; =0x021C8EC8 + ldr r0, [sp, #0x0] + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, [sp, #0x0] + mov r2, r5 + bl FUN_020A1974 +_020A15D8: ; 0x020A15D8 + cmp r0, #0x0 + bne _020A15FC + ldrb r0, [r6, #0x0] + cmp r0, #0x1 + bne _020A15FC + mov r0, r4 + add r1, r6, #0x1 + bl FUN_020A2774 + b _020A1604 +_020A15FC: + mov r0, #0x9 + strb r0, [r4, #0x455] +_020A1604: + ldr r2, [sp, #0x0] + mov r0, r4 + mov r1, r6 + bl FUN_020A1944 + ldr r1, _020A16E0 ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + b _020A16CC +_020A1628: + mov r0, #0x9 + strb r0, [r4, #0x455] + b _020A16CC +_020A1634: + ldrb r2, [r0, #0x3] + ldrb r0, [r0, #0x4] + ldr r1, _020A16E4 ; =0x00004805 + add r0, r0, r2, lsl #0x8 + add r0, r0, #0x5 + str r0, [sp, #0x0] + cmp r0, r1 + movhi r0, #0x9 + addhi sp, sp, #0x8 + strhib r0, [r4, #0x455] + ldmhiia sp!, {r4-r6,lr} + bxhi lr + ldr r1, _020A16DC ; =0x021C8EC8 + ldr r1, [r1, #0x0] + blx r1 + movs r6, r0 + moveq r0, #0x9 + addeq sp, sp, #0x8 + streqb r0, [r4, #0x455] + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r1, [sp, #0x0] + mov r2, r5 + bl FUN_020A1974 +_020A1694: ; 0x020A1694 + cmp r0, #0x0 + beq _020A16C0 + ldr r1, _020A16E0 ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + mov r0, #0x9 + add sp, sp, #0x8 + strb r0, [r4, #0x455] + ldmia sp!, {r4-r6,lr} + bx lr +_020A16C0: + mov r0, r4 + mov r1, r6 + bl FUN_020A16E8 +_020A16CC: + ldrb r0, [r4, #0x455] + add sp, sp, #0x8 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A16DC: .word 0x021C8EC8 +_020A16E0: .word 0x021C8EF4 +_020A16E4: .word 0x00004805 + + arm_func_start FUN_020A16E8 +FUN_020A16E8: ; 0x020A16E8 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldrb r0, [r8, #0x455] + mov r7, r1 + cmp r0, #0x9 + bne _020A1718 + ldr r1, _020A1940 ; =0x021C8EF4 + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + ldmia sp!, {r4-r8,lr} + bx lr +_020A1718: + ldrb r2, [r7, #0x3] + ldrb r1, [r7, #0x4] + add r0, r0, #0xf9 + and r0, r0, #0xff + add r1, r1, r2, lsl #0x8 + cmp r0, #0x1 + add r5, r1, #0x5 + ldrb r4, [r7, #0x0] + bhi _020A1744 + cmp r4, #0x15 + bne _020A1754 +_020A1744: + cmp r4, #0x15 + bne _020A1764 + cmp r5, #0x7 + bls _020A1764 +_020A1754: + mov r0, r8 + mov r1, r7 + bl FUN_020A1C08 + mov r5, r0 +_020A1764: + sub r0, r4, #0x14 + cmp r0, #0x3 + add r6, r7, #0x5 + sub r5, r5, #0x5 + addls pc, pc, r0, lsl #0x2 + b _020A1920 +_020A177C: ; 0x020A177C + b _020A178C +_020A1780: ; 0x020A1780 + b _020A17BC +_020A1784: ; 0x020A1784 + b _020A17D0 +_020A1788: ; 0x020A1788 + b _020A18FC +_020A178C: + ldr r0, [r8, #0x1d4] + cmp r0, #0x0 + moveq r0, #0x9 + streqb r0, [r8, #0x455] + beq _020A1928 + add r0, r8, #0x2e4 + mov r1, #0x0 + mov r2, #0x8 + bl MI_CpuFill8 + mov r0, #0x7 + strb r0, [r8, #0x455] + b _020A1928 +_020A17BC: + ldrb r0, [r6, #0x0] + cmp r0, #0x2 + moveq r0, #0x9 + streqb r0, [r8, #0x455] + b _020A1928 +_020A17D0: + ldrb r1, [r6, #0x1] + ldrb r0, [r6, #0x2] + ldrb r3, [r6, #0x0] + ldrb r2, [r6, #0x3] + mov r1, r1, lsl #0x10 + add r0, r1, r0, lsl #0x8 + cmp r3, #0xb + add r4, r2, r0 + add r6, r6, #0x4 + bgt _020A1824 + cmp r3, #0xb + bge _020A1898 + cmp r3, #0x2 + bgt _020A18C4 + cmp r3, #0x1 + blt _020A18C4 + cmp r3, #0x1 + beq _020A1850 + cmp r3, #0x2 + beq _020A1888 + b _020A18C4 +_020A1824: + cmp r3, #0x14 + bgt _020A18C4 + cmp r3, #0xe + blt _020A18C4 + cmp r3, #0xe + beq _020A18A8 + cmp r3, #0x10 + beq _020A1878 + cmp r3, #0x14 + beq _020A18B4 + b _020A18C4 +_020A1850: + ldrb r0, [r8, #0x454] + cmp r0, #0x0 + beq _020A18CC + ldrb r0, [r8, #0x455] + cmp r0, #0x0 + bne _020A18CC + mov r0, r8 + mov r1, r6 + bl FUN_020A26D0 + b _020A18CC +_020A1878: + mov r0, r8 + mov r1, r6 + bl FUN_020A211C + b _020A18CC +_020A1888: + mov r0, r8 + mov r1, r6 + bl FUN_020A2914 + b _020A18CC +_020A1898: + mov r0, r8 + mov r1, r6 + bl FUN_020A29DC + b _020A18CC +_020A18A8: + mov r0, #0x4 + strb r0, [r8, #0x455] + b _020A18CC +_020A18B4: + mov r0, r8 + mov r1, r6 + bl FUN_020A1E84 + b _020A18CC +_020A18C4: + mov r0, #0x9 + strb r0, [r8, #0x455] +_020A18CC: + mov r0, r8 + sub r1, r6, #0x4 + add r2, r4, #0x4 + bl FUN_020A1944 + add r0, r4, #0x4 + add r6, r6, r4 + subs r5, r5, r0 + beq _020A1928 + ldrb r0, [r8, #0x455] + cmp r0, #0x9 + bne _020A17D0 + b _020A1928 +_020A18FC: + str r7, [r8, #0x824] + mov r0, #0x5 + str r0, [r8, #0x82c] + add r0, r5, #0x5 + str r0, [r8, #0x828] + mov r0, #0x1 + strb r0, [r8, #0x456] + ldmia sp!, {r4-r8,lr} + bx lr +_020A1920: + mov r0, #0x9 + strb r0, [r8, #0x455] +_020A1928: + ldr r1, _020A1940 ; =0x021C8EF4 + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A1940: .word 0x021C8EF4 + + arm_func_start FUN_020A1944 +FUN_020A1944: ; 0x020A1944 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + add r0, r6, #0x2ec + bl FUN_020A410C + mov r1, r5 + mov r2, r4 + add r0, r6, #0x3a4 + bl FUN_020A3ACC + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_020A1974 +FUN_020A1974: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + add r4, sp, #0x0 +_020A198C: + mov r0, r4 + mov r1, r5 + bl FUN_0209C6C0 + ldr r1, [sp, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + cmp r1, r6 + strhi r6, [sp, #0x0] + ldr r2, [sp, #0x0] + mov r1, r7 + bl MI_CpuCopy8 +_020A19C4: ; 0x020A19C4 + ldr r0, [sp, #0x0] + mov r1, r5 + bl FUN_0209C580 +_020A19D0: ; 0x020A19D0 + ldr r0, [sp, #0x0] + sub r6, r6, r0 + cmp r6, #0x0 + add r7, r7, r0 + bgt _020A198C + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A19F4 +FUN_020A19F4: ; 0x020A19F4 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x30 + mov r5, r1 + mov r6, r0 + ldrh r0, [r6, #0x32] + ldrb r3, [r5, #0x3] + ldrb r2, [r5, #0x4] + add r1, r5, #0x5 + cmp r0, #0x4 + add r4, r2, r3, lsl #0x8 + add r8, r1, r4 + beq _020A1A30 + cmp r0, #0x5 + beq _020A1B04 + b _020A1BD4 +_020A1A30: + add r7, r6, #0x3fc + mov r0, r7 + bl FUN_020A3B8C + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x10 + bl FUN_020A3ACC +_020A1A4C: ; 0x020A1A4C + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r7 + add r1, r6, #0x1cc + mov r2, #0x8 + bl FUN_020A3ACC + mov r0, r7 + mov r1, r5 + mov r2, #0x1 + bl FUN_020A3ACC + mov r0, r7 + add r1, r5, #0x3 + add r2, r4, #0x2 + bl FUN_020A3ACC + mov r0, r7 + mov r1, r8 + bl FUN_020A3A58 + mov r0, r7 + bl FUN_020A3B8C + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x10 + bl FUN_020A3ACC +_020A1AC0: ; 0x020A1AC0 + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r7 + mov r1, r8 + mov r2, #0x10 + bl FUN_020A3ACC + mov r0, r7 + mov r1, r8 + bl FUN_020A3A58 + add r4, r4, #0x10 + b _020A1BD4 +_020A1B04: + add r7, r6, #0x348 + mov r0, r7 + bl FUN_020A41CC + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x14 + bl FUN_020A410C +_020A1B20: ; 0x020A1B20 + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x28 + bl FUN_020A410C + mov r0, r7 + add r1, r6, #0x1cc + mov r2, #0x8 + bl FUN_020A410C + mov r0, r7 + mov r1, r5 + mov r2, #0x1 + bl FUN_020A410C + mov r0, r7 + add r1, r5, #0x3 + add r2, r4, #0x2 + bl FUN_020A410C + mov r0, r7 + mov r1, r8 + bl FUN_020A4098 + mov r0, r7 + bl FUN_020A41CC + ldr r1, [r6, #0xbc] + mov r0, r7 + mov r2, #0x14 + bl FUN_020A410C +_020A1B94: ; 0x020A1B94 + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r7 + add r1, sp, #0x0 + mov r2, #0x28 + bl FUN_020A410C + mov r0, r7 + mov r1, r8 + mov r2, #0x14 + bl FUN_020A410C + mov r0, r7 + mov r1, r8 + bl FUN_020A4098 + add r4, r4, #0x14 +_020A1BD4: + mov r0, r4, asr #0x8 + strb r0, [r5, #0x3] + mov r2, r4 + add r0, r6, #0xc8 + add r1, r5, #0x5 + strb r4, [r5, #0x4] + bl FUN_020A49CC + add r0, r6, #0x1d4 + bl FUN_020A1E60 + add r0, r4, #0x5 + add sp, sp, #0x30 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020A1C08 +FUN_020A1C08: ; 0x020A1C08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r6, r1 + ldrb r3, [r6, #0x3] + ldrb r2, [r6, #0x4] + mov r7, r0 + add r1, r6, #0x5 + add r2, r2, r3, lsl #0x8 + bl FUN_020A1E44 + ldrh r1, [r7, #0x32] + mov r5, r0 + cmp r1, #0x4 + beq _020A1C48 + cmp r1, #0x5 + beq _020A1D2C + b _020A1E0C +_020A1C48: + sub r5, r5, #0x10 + mov r0, r5, asr #0x8 + strb r0, [r6, #0x3] + add r4, r7, #0x3fc + mov r0, r4 + strb r5, [r6, #0x4] + bl FUN_020A3B8C + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x10 + bl FUN_020A3ACC + add r0, sp, #0x14 + mov r1, #0x36 + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r4 + add r1, r7, #0x2e4 + mov r2, #0x8 + bl FUN_020A3ACC + mov r0, r4 + mov r1, r6 + mov r2, #0x1 + bl FUN_020A3ACC + mov r0, r4 + add r1, r6, #0x3 + add r2, r5, #0x2 + bl FUN_020A3ACC + mov r0, r4 + add r1, sp, #0x0 + bl FUN_020A3A58 + mov r0, r4 + bl FUN_020A3B8C + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x10 + bl FUN_020A3ACC + add r0, sp, #0x14 + mov r1, #0x5c + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x10 + bl FUN_020A3ACC + mov r0, r4 + add r1, sp, #0x0 + bl FUN_020A3A58 + mov r4, #0x10 + b _020A1E0C +_020A1D2C: + sub r5, r5, #0x14 + mov r0, r5, asr #0x8 + strb r0, [r6, #0x3] + add r4, r7, #0x348 + mov r0, r4 + strb r5, [r6, #0x4] + bl FUN_020A41CC + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x14 + bl FUN_020A410C + add r0, sp, #0x14 + mov r1, #0x36 + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x28 + bl FUN_020A410C + mov r0, r4 + add r1, r7, #0x2e4 + mov r2, #0x8 + bl FUN_020A410C + mov r0, r4 + mov r1, r6 + mov r2, #0x1 + bl FUN_020A410C + mov r0, r4 + add r1, r6, #0x3 + add r2, r5, #0x2 + bl FUN_020A410C + mov r0, r4 + add r1, sp, #0x0 + bl FUN_020A4098 + mov r0, r4 + bl FUN_020A41CC + ldr r1, [r7, #0x1d4] + mov r0, r4 + mov r2, #0x14 + bl FUN_020A410C + add r0, sp, #0x14 + mov r1, #0x5c + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x14 + mov r2, #0x28 + bl FUN_020A410C + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x14 + bl FUN_020A410C + mov r0, r4 + add r1, sp, #0x0 + bl FUN_020A4098 + mov r4, #0x14 +_020A1E0C: + add r0, r6, #0x5 + add r1, sp, #0x0 + mov r2, r4 + add r0, r0, r5 + bl memcmp +_020A1E20: ; 0x020A1E20 + cmp r0, #0x0 + movne r0, #0x9 + strneb r0, [r7, #0x455] + add r0, r7, #0x2ec + bl FUN_020A1E60 + add r0, r5, #0x5 + add sp, sp, #0x44 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A1E44 +FUN_020A1E44: ; 0x020A1E44 + stmdb sp!, {r4,lr} + add r0, r0, #0x1e0 + mov r4, r2 + bl FUN_020A49CC + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A1E60 +FUN_020A1E60: ; 0x020A1E60 + mov r2, #0x8 +_020A1E64: + ldrb r1, [r0, #-0x1]! + add r1, r1, #0x1 + ands r1, r1, #0xff + strb r1, [r0, #0x0] + bxne lr + subs r2, r2, #0x1 + bne _020A1E64 + bx lr + + arm_func_start FUN_020A1E84 +FUN_020A1E84: ; 0x020A1E84 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x3a4 + add r1, r5, #0x3fc + mov r2, #0x58 + bl MI_CpuCopy8 + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x1 + bl FUN_020A2034 + add r0, r5, #0x3fc + add r1, r5, #0x3a4 + mov r2, #0x58 + bl MI_CpuCopy8 + add r1, sp, #0x0 + mov r0, r4 + mov r2, #0x10 + bl memcmp +_020A1ED4: ; 0x020A1ED4 + cmp r0, #0x0 + movne r0, #0x9 + addne sp, sp, #0x14 + strneb r0, [r5, #0x455] + ldmneia sp!, {r4-r5,lr} + bxne lr + add r0, r5, #0x2ec + add r1, r5, #0x348 + mov r2, #0x5c + bl MI_CpuCopy8 + add r1, sp, #0x0 + mov r0, r5 + mov r2, #0x1 + bl FUN_020A1F4C + add r0, r5, #0x348 + add r1, r5, #0x2ec + mov r2, #0x5c + bl MI_CpuCopy8 + add r1, sp, #0x0 + add r0, r4, #0x10 + mov r2, #0x14 + bl memcmp +_020A1F2C: ; 0x020A1F2C + cmp r0, #0x0 + movne r0, #0x9 + strneb r0, [r5, #0x455] + moveq r0, #0x6 + streqb r0, [r5, #0x455] + add sp, sp, #0x14 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A1F4C +FUN_020A1F4C: ; 0x020A1F4C + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x28 + mov r6, r0 + ldrb r0, [r6, #0x454] + mov r5, r1 + add r4, r6, #0x2ec + eors r0, r0, r2 + beq _020A1F80 + ldr r1, _020A202C ; =0x02106290 + mov r0, r4 + mov r2, #0x4 + bl FUN_020A410C + b _020A1F90 +_020A1F80: + ldr r1, _020A2030 ; =0x02106298 + mov r0, r4 + mov r2, #0x4 + bl FUN_020A410C +_020A1F90: + mov r0, r4 + mov r1, r6 + mov r2, #0x30 + bl FUN_020A410C +_020A1FA0: ; 0x020A1FA0 + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x28 + bl MI_CpuFill8 + add r1, sp, #0x0 + mov r0, r4 + mov r2, #0x28 + bl FUN_020A410C + mov r0, r4 + mov r1, r5 + bl FUN_020A4098 + mov r0, r4 + bl FUN_020A41CC + mov r1, r6 + mov r0, r4 + mov r2, #0x30 + bl FUN_020A410C +_020A1FE4: ; 0x020A1FE4 + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x28 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x28 + bl FUN_020A410C + mov r0, r4 + mov r1, r5 + mov r2, #0x14 + bl FUN_020A410C + mov r0, r4 + mov r1, r5 + bl FUN_020A4098 + add sp, sp, #0x28 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A202C: .word 0x02106290 +_020A2030: .word 0x02106298 + + arm_func_start FUN_020A2034 +FUN_020A2034: ; 0x020A2034 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + mov r6, r0 + ldrb r0, [r6, #0x454] + mov r5, r1 + add r4, r6, #0x3a4 + eors r0, r0, r2 + beq _020A2068 + ldr r1, _020A2114 ; =0x02106290 + mov r0, r4 + mov r2, #0x4 + bl FUN_020A3ACC + b _020A2078 +_020A2068: + ldr r1, _020A2118 ; =0x02106298 + mov r0, r4 + mov r2, #0x4 + bl FUN_020A3ACC +_020A2078: + mov r0, r4 + mov r1, r6 + mov r2, #0x30 + bl FUN_020A3ACC +_020A2088: ; 0x020A2088 + add r0, sp, #0x0 + mov r1, #0x36 + mov r2, #0x30 + bl MI_CpuFill8 + add r1, sp, #0x0 + mov r0, r4 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r4 + mov r1, r5 + bl FUN_020A3A58 + mov r0, r4 + bl FUN_020A3B8C + mov r1, r6 + mov r0, r4 + mov r2, #0x30 + bl FUN_020A3ACC +_020A20CC: ; 0x020A20CC + add r0, sp, #0x0 + mov r1, #0x5c + mov r2, #0x30 + bl MI_CpuFill8 + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r4 + mov r1, r5 + mov r2, #0x10 + bl FUN_020A3ACC + mov r0, r4 + mov r1, r5 + bl FUN_020A3A58 + add sp, sp, #0x30 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A2114: .word 0x02106290 +_020A2118: .word 0x02106298 + + arm_func_start FUN_020A211C +FUN_020A211C: ; 0x020A211C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r2, [r4, #0x81c] + bl FUN_020A2470 + mov r0, r4 + bl FUN_020A2364 + mov r1, #0x0 + mov r0, r4 + mov r2, r1 + bl FUN_020A3808 + mov r0, r4 + bl FUN_020A215C + mov r0, #0x5 + strb r0, [r4, #0x455] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A215C +FUN_020A215C: ; 0x020A215C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r10, r0 + ldrh r0, [r10, #0x32] + cmp r0, #0x4 + beq _020A2190 + cmp r0, #0x5 + moveq r0, #0x14 + streq r0, [sp, #0x0] + moveq r0, #0x10 + streq r0, [sp, #0x4] + moveq r2, #0x0 + b _020A21A0 +_020A2190: + mov r0, #0x10 + str r0, [sp, #0x0] + str r0, [sp, #0x4] + mov r2, #0x0 +_020A21A0: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + mov r9, #0x0 + add r0, r1, r0 + add r0, r2, r0 + mov r0, r0, lsl #0x1 + str r0, [sp, #0x8] + cmp r0, #0x0 + ble _020A22B8 + mov r0, #0x20 + str r0, [sp, #0x10] + mov r0, #0x14 + mov r6, r9 + add r5, sp, #0x18 + str r9, [sp, #0xc] + mov r4, #0x1 + mov r11, #0x30 + str r0, [sp, #0x14] +_020A21E8: + add r7, r10, #0x348 + mov r0, r7 + bl FUN_020A41CC + add r0, r9, #0x41 + strb r0, [sp, #0x18] + add r0, r9, #0x1 + ldr r8, [sp, #0xc] + cmp r0, #0x0 + ble _020A222C +_020A220C: + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl FUN_020A410C + add r8, r8, #0x1 + add r0, r9, #0x1 + cmp r8, r0 + blt _020A220C +_020A222C: + mov r0, r7 + mov r1, r10 + mov r2, r11 + bl FUN_020A410C + ldr r2, [sp, #0x10] + mov r0, r7 + add r1, r10, #0x54 + bl FUN_020A410C + ldr r2, [sp, #0x10] + mov r0, r7 + add r1, r10, #0x34 + bl FUN_020A410C + mov r0, r7 + add r1, sp, #0x19 + bl FUN_020A4098 + add r7, r10, #0x3fc + mov r0, r7 + bl FUN_020A3B8C + mov r0, r7 + mov r1, r10 + mov r2, r11 + bl FUN_020A3ACC + ldr r2, [sp, #0x14] + mov r0, r7 + add r1, sp, #0x19 + bl FUN_020A3ACC + add r1, r10, #0x74 + mov r0, r7 + add r1, r1, r6 + bl FUN_020A3A58 + ldr r0, [sp, #0x8] + add r6, r6, #0x10 + cmp r6, r0 + add r9, r9, #0x1 + blt _020A21E8 +_020A22B8: + ldrb r0, [r10, #0x454] + cmp r0, #0x0 + beq _020A2300 + add r1, r10, #0x74 + str r1, [r10, #0x1d4] + ldr r0, [sp, #0x0] + ldr r2, [r10, #0x1d4] + add r1, r1, r0 + add r0, r2, r0, lsl #0x1 + str r0, [r10, #0x1d8] + str r1, [r10, #0xbc] + ldr r1, [r10, #0xbc] + ldr r0, [sp, #0x0] + add r1, r1, r0 + ldr r0, [sp, #0x4] + add r0, r1, r0 + str r0, [r10, #0xc0] + b _020A2338 +_020A2300: + add r1, r10, #0x74 + str r1, [r10, #0xbc] + ldr r0, [sp, #0x0] + ldr r2, [r10, #0xbc] + add r1, r1, r0 + add r0, r2, r0, lsl #0x1 + str r0, [r10, #0xc0] + str r1, [r10, #0x1d4] + ldr r1, [r10, #0x1d4] + ldr r0, [sp, #0x0] + add r1, r1, r0 + ldr r0, [sp, #0x4] + add r0, r1, r0 + str r0, [r10, #0x1d8] +_020A2338: + ldr r1, [r10, #0x1d8] + add r0, r10, #0x1e0 + mov r2, #0x10 + bl FUN_020A4A3C + ldr r1, [r10, #0xc0] + add r0, r10, #0xc8 + mov r2, #0x10 + bl FUN_020A4A3C + add sp, sp, #0x34 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_020A2364 +FUN_020A2364: ; 0x020A2364 + stmdb sp!, {r4,lr} + sub sp, sp, #0x30 + mov r4, r0 + ldr r1, _020A23BC ; =0x021062A0 + add r0, sp, #0x0 + mov r2, r4 + bl FUN_020A23C8 + ldr r1, _020A23C0 ; =0x021062A4 + add r0, sp, #0x10 + mov r2, r4 + bl FUN_020A23C8 + ldr r1, _020A23C4 ; =0x021062A8 + add r0, sp, #0x20 + mov r2, r4 + bl FUN_020A23C8 +_020A23A0: ; 0x020A23A0 + add r0, sp, #0x0 + mov r1, r4 + mov r2, #0x30 + bl MI_CpuCopy8 + add sp, sp, #0x30 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A23BC: .word 0x021062A0 +_020A23C0: .word 0x021062A4 +_020A23C4: .word 0x021062A8 + + arm_func_start FUN_020A23C8 +FUN_020A23C8: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r5, r2 + add r4, r5, #0x348 + mov r7, r0 + mov r6, r1 + mov r0, r4 + bl FUN_020A41CC + mov r0, r6 + bl strlen + mov r2, r0 + mov r1, r6 + mov r0, r4 + bl FUN_020A410C + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl FUN_020A410C + mov r0, r4 + add r1, r5, #0x34 + mov r2, #0x40 + bl FUN_020A410C + mov r0, r4 + add r1, sp, #0x0 + bl FUN_020A4098 + add r4, r5, #0x3fc + mov r0, r4 + bl FUN_020A3B8C + mov r1, r5 + mov r0, r4 + mov r2, #0x30 + bl FUN_020A3ACC + mov r0, r4 + add r1, sp, #0x0 + mov r2, #0x14 + bl FUN_020A3ACC + mov r0, r4 + mov r1, r7 + bl FUN_020A3A58 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A2470 +FUN_020A2470: ; 0x020A2470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + movs r10, r2 + str r0, [sp, #0x8] + mov r11, r1 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r0, [r10, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r0, r0, lsl #0x1 + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + add r9, r0, #0x1 + mov r0, #0x14 + mul r0, r9, r0 + ldr r1, _020A26C8 ; =0x021C8EC8 + ldr r1, [r1, #0x0] + blx r1 + movs r8, r0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + add r7, r8, r9, lsl #0x1 + add r6, r7, r9, lsl #0x1 + add r1, r6, r9, lsl #0x1 + str r1, [sp, #0xc] + add r1, r1, r9, lsl #0x1 + add r5, r1, r9, lsl #0x1 + str r1, [sp, #0x10] + ldr r2, [r10, #0x0] + add r4, r5, r9, lsl #0x1 + mov r1, r11 + mov r3, r9 + add r11, r4, r9, lsl #0x1 + bl FUN_020A4B50 + ldr r1, [r10, #0x1c] + ldr r2, [r10, #0x18] + mov r0, r7 + mov r3, r9 + bl FUN_020A4B50 + ldr r1, [r10, #0xc] + ldr r2, [r10, #0x8] + mov r0, r5 + mov r3, r9 + bl FUN_020A4B50 + bl FUN_020A36EC + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + str r5, [sp, #0x0] + mov r1, r8 + mov r2, r7 + mov r3, r9 + bl FUN_020A4BB0 + ldr r1, [r10, #0x24] + ldr r2, [r10, #0x20] + mov r0, r7 + mov r3, r9 + bl FUN_020A4B50 + ldr r1, [r10, #0x14] + ldr r2, [r10, #0x10] + mov r0, r5 + mov r3, r9 + bl FUN_020A4B50 + ldr r0, [sp, #0x10] + mov r1, r8 + mov r2, r7 + mov r3, r9 + str r5, [sp, #0x0] + bl FUN_020A4BB0 + ldr r0, [sp, #0x14] + bl FUN_020A36B4 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + mov r0, r8 + mov r3, r9 + bl FUN_020A57BC + ldr r1, [r10, #0x2c] + ldr r2, [r10, #0x28] + mov r0, r7 + mov r3, r9 + bl FUN_020A4B50 + mov r0, r6 + mov r1, r8 + mov r2, r7 + mov r3, r9 + bl FUN_020A5608 + ldr r1, [r10, #0x14] + ldr r2, [r10, #0x10] + mov r0, r7 + mov r3, r9 + bl FUN_020A4B50 + mov r0, r8 + mov r1, r6 + mov r2, r7 + mov r3, r9 + bl FUN_020A5608 + ldr r2, [sp, #0x10] + mov r0, r6 + mov r1, r8 + mov r3, r9 + bl FUN_020A5930 + ldr r1, [r10, #0x4] + ldr r2, [r10, #0x0] + mov r0, r7 + mov r3, r9 + bl FUN_020A4B50 + mov r0, r6 + mov r1, r9 + bl FUN_020A59DC +_020A2634: ; 0x020A2634 + cmp r0, #0x0 + bge _020A267C + mov r0, r6 + mov r1, r9 + bl FUN_020A5874 + str r9, [sp, #0x0] + mov r1, r6 + mov r2, r7 + mov r3, r4 + mov r0, #0x0 + str r11, [sp, #0x4] + bl FUN_020A5240 + mov r0, r4 + mov r1, r7 + mov r2, r4 + mov r3, r9 + bl FUN_020A57BC + b _020A2698 +_020A267C: + str r9, [sp, #0x0] + mov r1, r6 + mov r2, r7 + mov r3, r4 + mov r0, #0x0 + str r11, [sp, #0x4] + bl FUN_020A5240 +_020A2698: + ldr r0, [sp, #0x8] + mov r1, r4 + mov r3, r9 + mov r2, #0x30 + bl FUN_020A4B08 + ldr r1, _020A26CC ; =0x021C8EF4 + mov r0, r8 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A26C8: .word 0x021C8EC8 +_020A26CC: .word 0x021C8EF4 + + arm_func_start FUN_020A26D0 +FUN_020A26D0: ; 0x020A26D0 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r4, r0 + ldrb r0, [r6, #0x0] + ldrb r1, [r6, #0x1] + bl FUN_020A284C +_020A26E8: ; 0x020A26E8 + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + add r0, r6, #0x2 + add r1, r4, #0x34 + mov r2, #0x20 + bl MI_CpuCopy8 + ldrb r5, [r6, #0x22] + add r6, r6, #0x23 + cmp r5, #0x20 + movne r0, #0x0 + strneb r0, [r4, #0x30] + bne _020A2734 + mov r0, r6 + add r1, r4, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, r4 + bl FUN_020A39B0 +_020A2734: + add r0, r6, r5 + ldrb r1, [r0, #0x1] + ldrb r3, [r6, r5] + add r0, r0, #0x2 + mov r2, #0x2 + add r1, r1, r3, lsl #0x8 + add r1, r1, r1, lsr #0x1f + mov r1, r1, asr #0x1 + bl FUN_020A285C + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + strh r0, [r4, #0x32] + movne r0, #0x1 + strneb r0, [r4, #0x455] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_020A2774 +FUN_020A2774: ; 0x020A2774 + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r6, r0 + ldrb r0, [r5, #0x0] + ldrb r1, [r5, #0x1] + bl FUN_020A284C +_020A278C: ; 0x020A278C + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldrb r2, [r5, #0x2] + ldrb r1, [r5, #0x3] + ldr r3, _020A2848 ; =0x55555556 + add r0, r5, #0x8 + add r4, r1, r2, lsl #0x8 + smull r2, r1, r3, r4 + add r1, r1, r4, lsr #0x1f + mov r2, #0x3 + bl FUN_020A285C + mov r0, r0, lsl #0x10 + movs r0, r0, lsr #0x10 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + strh r0, [r6, #0x32] + ldrb r12, [r5, #0x4] + ldrb r0, [r5, #0x5] + ldrb r3, [r5, #0x6] + ldrb r2, [r5, #0x7] + mov r1, #0x0 + add r12, r0, r12, lsl #0x8 + add r0, r4, #0x8 + add r4, r2, r3, lsl #0x8 + add r0, r0, r12 + strb r1, [r6, #0x30] + cmp r4, #0x20 + add r5, r5, r0 + blt _020A2818 + mov r0, r5 + add r1, r6, #0x34 + mov r2, #0x20 + bl MI_CpuCopy8 + b _020A2838 +_020A2818: + add r0, r6, #0x34 + rsb r2, r4, #0x20 + bl MI_CpuFill8 + add r1, r6, #0x54 + mov r0, r5 + mov r2, r4 + sub r1, r1, r4 + bl MI_CpuCopy8 +_020A2838: + mov r0, #0x1 + strb r0, [r6, #0x455] + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A2848: .word 0x55555556 + + arm_func_start FUN_020A284C +FUN_020A284C: + cmp r0, #0x3 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020A285C +FUN_020A285C: ; 0x020A285C + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, #0x0 + ldr r4, _020A28BC ; =0x0210623C +_020A2874: + mov r0, r5, lsl #0x1 + ldrh r3, [r4, r0] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_020A28C0 +_020A288C: ; 0x020A288C + cmp r0, #0x0 + ldrne r0, _020A28BC ; =0x0210623C + movne r1, r5, lsl #0x1 + ldrneh r0, [r0, r1] + ldmneia sp!, {r4-r8,lr} + bxne lr + add r5, r5, #0x1 + cmp r5, #0x2 + blo _020A2874 + mov r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A28BC: .word 0x0210623C + + arm_func_start FUN_020A28C0 +FUN_020A28C0: + stmdb sp!, {r4,lr} + cmp r1, #0x0 + mov r4, #0x0 + ble _020A2908 +_020A28D0: + ldrb lr, [r0, #0x0] + ldrb r12, [r0, #0x1] + cmp r2, #0x3 + add lr, r12, lr, lsl #0x8 + ldreqb r12, [r0, #0x2] + addeq lr, r12, lr, lsl #0x8 + cmp lr, r3 + moveq r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + add r4, r4, #0x1 + cmp r4, r1 + add r0, r0, r2 + blt _020A28D0 +_020A2908: + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A2914 +FUN_020A2914: ; 0x020A2914 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + add r0, r5, #0x2 + add r1, r6, #0x54 + mov r2, #0x20 + bl MI_CpuCopy8 + add r0, r5, #0x22 + ldrb r7, [r6, #0x30] + add r5, r5, #0x23 + ldrb r4, [r0, #0x0] + cmp r7, #0x0 + beq _020A2974 + cmp r4, #0x20 + bne _020A2974 + mov r1, r5 + add r0, r6, #0x74 + mov r2, #0x20 + bl memcmp +_020A2964: ; 0x020A2964 + cmp r0, #0x0 + moveq r0, #0x1 + streqb r0, [r6, #0x31] + beq _020A29B4 +_020A2974: + cmp r7, #0x0 + beq _020A2984 + mov r0, r6 + bl FUN_020A3798 +_020A2984: + cmp r4, #0x0 + moveq r0, #0x0 + streqb r0, [r6, #0x30] + beq _020A29AC + mov r0, r5 + add r1, r6, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r6, #0x30] +_020A29AC: + mov r0, #0x0 + strb r0, [r6, #0x31] +_020A29B4: + add r0, r5, r4 + ldrb r2, [r5, r4] + ldrb r1, [r0, #0x1] + mov r0, #0x2 + add r1, r1, r2, lsl #0x8 + strh r1, [r6, #0x32] + strb r0, [r6, #0x455] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A29DC +FUN_020A29DC: ; 0x020A29DC + stmdb sp!, {r0-r3} + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r1, [sp, #0x4c] + mov r10, r0 + ldrb r4, [r1, #0x2] + ldrb r3, [r1, #0x0] + ldrb r2, [r1, #0x1] + add r0, r1, #0x3 + mvn r1, #0x0 + str r0, [sp, #0x4c] + add r2, r2, r3, lsl #0x8 + add r0, sp, #0x14 + str r1, [r10, #0x45c] + add r7, r4, r2, lsl #0x8 + bl RTC_GetDate + mov r8, #0x0 + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x1c] + add r1, r0, #0x7d0 + ldr r0, [sp, #0x18] + mov r1, r1, lsl #0x10 + add r0, r1, r0, lsl #0x8 + add r0, r2, r0 + str r0, [r10, #0x80c] + strb r8, [r10, #0x6b0] + str r8, [r10, #0x5a0] + ldr r0, [r10, #0x5a0] + mov r6, r8 + str r0, [r10, #0x594] + add r0, r10, #0x7b0 + str r0, [sp, #0x4] + mov r0, #0x1 + str r8, [sp, #0x8] + mov r4, r8 + mov r11, #0x2 + str r0, [sp, #0xc] + mvn r5, #0x0 +_020A2A74: + ldr r1, [sp, #0x4c] + mov r0, r10 + ldrb r2, [r1, #0x2] + ldrb r12, [r1, #0x0] + ldrb r3, [r1, #0x1] + add r9, r1, #0x3 + add r1, sp, #0x4c + str r9, [sp, #0x4c] + str r5, [r10, #0x458] + strb r4, [r10, #0x5ad] + strb r4, [r10, #0x5ac] + strb r4, [r10, #0x5af] + strb r4, [r10, #0x6b0] + strb r4, [r10, #0x5b0] + strb r4, [r10, #0x7b0] + add r3, r3, r12, lsl #0x8 + ldr r9, [sp, #0x4c] + add r3, r2, r3, lsl #0x8 + add r2, r3, #0x3 + str r9, [r10, #0x804] + str r3, [r10, #0x808] + sub r7, r7, r2 + mov r2, r4 + mov r3, r4 + str r8, [sp, #0x0] + bl FUN_020A2F98 +_020A2ADC: ; 0x020A2ADC + cmp r0, #0x0 + bne _020A2AFC + ldr r0, [r10, #0x594] + cmp r0, #0x33 + blo _020A2AFC + ldr r0, [r10, #0x5a0] + cmp r0, #0x0 + bne _020A2B14 +_020A2AFC: + mov r0, #0x9 + add sp, sp, #0x24 + strb r0, [r10, #0x455] + ldmia sp!, {r4-r11,lr} + add sp, sp, #0x10 + bx lr +_020A2B14: + mov r0, r10 + bl FUN_020A2CBC + mov r8, r0 + cmp r6, #0x0 + bne _020A2B44 + ldr r0, [r10, #0x800] + cmp r0, #0x0 + beq _020A2B44 + ldr r1, [sp, #0x4] + bl FUN_020A2C18 +_020A2B3C: ; 0x020A2B3C + cmp r0, #0x0 + orrne r8, r8, #0x4000 +_020A2B44: + and r9, r8, #0xff + cmp r9, #0x1 + bne _020A2BB4 + cmp r7, #0x0 + beq _020A2BB4 + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x8] + add r1, r1, #0x3 + str r1, [sp, #0x10] + ldr r1, [sp, #0x8] + mov r0, r10 + strb r1, [r10, #0x5ad] + add r1, sp, #0x10 + mov r3, r2 + str r11, [sp, #0x0] + bl FUN_020A2F98 +_020A2B84: ; 0x020A2B84 + cmp r0, #0x0 + movne r0, #0x9 + addne sp, sp, #0x24 + strneb r0, [r10, #0x455] + ldmneia sp!, {r4-r11,lr} + addne sp, sp, #0x10 + bxne lr + mov r0, r10 + add r1, r10, #0x480 + bl FUN_020A2DBC + bic r1, r8, #0xff + orr r8, r1, r0 +_020A2BB4: + ldr r3, [r10, #0x810] + cmp r3, #0x0 + beq _020A2BD4 + mov r0, r8 + mov r1, r10 + mov r2, r6 + blx r3 + mov r8, r0 +_020A2BD4: + cmp r9, #0x0 + add r6, r6, #0x1 + beq _020A2BF4 + cmp r8, #0x0 + bne _020A2BF4 + cmp r7, #0x0 + ldrne r8, [sp, #0xc] + bne _020A2A74 +_020A2BF4: + cmp r8, #0x0 + moveq r0, #0x3 + streqb r0, [r10, #0x455] + movne r0, #0x9 + strneb r0, [r10, #0x455] + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + add sp, sp, #0x10 + bx lr + + arm_func_start FUN_020A2C18 +FUN_020A2C18: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + b _020A2C38 +_020A2C28: + cmp r1, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,lr} + bxeq lr +_020A2C38: + ldrsb r0, [r5], #0x1 + ldrsb r1, [r6], #0x1 + cmp r1, r0 + beq _020A2C28 + cmp r0, #0x2a + movne r0, #0x1 + ldmneia sp!, {r4-r6,lr} + bxne lr + sub r6, r6, #0x1 + mov r0, r6 + bl FUN_020A2C94 + mov r4, r0 + mov r0, r5 + bl FUN_020A2C94 + cmp r0, r4 + movgt r0, #0x1 + ldmgtia sp!, {r4-r6,lr} + bxgt lr + sub r0, r4, r0 + add r6, r6, r0 + b _020A2C38 +_020A2C8C: ; 0x020A2C8C + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_020A2C94 +FUN_020A2C94: ; 0x020A2C94 + mov r2, r0 + b _020A2CA0 +_020A2C9C: + add r0, r0, #0x1 +_020A2CA0: + ldrsb r1, [r0, #0x0] + cmp r1, #0x2e + beq _020A2CB4 + cmp r1, #0x0 + bne _020A2C9C +_020A2CB4: + sub r0, r0, r2 + bx lr + + arm_func_start FUN_020A2CBC +FUN_020A2CBC: ; 0x020A2CBC + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrb r0, [r5, #0x5af] + ldr r1, [r5, #0x45c] + cmp r0, #0x0 + movne r4, #0x0 + moveq r4, #0x8000 + mvn r0, #0x0 + cmp r1, r0 + orreq r0, r4, #0x4 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + ldr r0, [r5, #0x458] + cmp r0, #0x3 + beq _020A2D04 + cmp r0, #0x4 + beq _020A2D40 + b _020A2D7C +_020A2D04: + add r6, r5, #0x3fc + mov r0, r6 + bl FUN_020A3B8C + ldr r1, [r5, #0x460] + ldr r2, [r5, #0x464] + mov r0, r6 + sub r2, r2, r1 + bl FUN_020A3ACC + ldr r1, _020A2DB8 ; =0x00000468 + mov r0, r6 + add r1, r5, r1 + bl FUN_020A3A58 + mov r0, #0x10 + str r0, [r5, #0x47c] + b _020A2D88 +_020A2D40: + add r6, r5, #0x348 + mov r0, r6 + bl FUN_020A41CC + ldr r1, [r5, #0x460] + ldr r2, [r5, #0x464] + mov r0, r6 + sub r2, r2, r1 + bl FUN_020A410C + ldr r1, _020A2DB8 ; =0x00000468 + mov r0, r6 + add r1, r5, r1 + bl FUN_020A4098 + mov r0, #0x14 + str r0, [r5, #0x47c] + b _020A2D88 +_020A2D7C: + orr r0, r4, #0x3 + ldmia sp!, {r4-r6,lr} + bx lr +_020A2D88: + mov r0, r5 + add r1, r5, #0x5b0 + bl FUN_020A3628 + movs r1, r0 + orreq r0, r4, #0x1 + ldmeqia sp!, {r4-r6,lr} + bxeq lr + mov r0, r5 + bl FUN_020A2DBC +_020A2DAC: ; 0x020A2DAC + orr r0, r4, r0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A2DB8: .word 0x00000468 + + arm_func_start FUN_020A2DBC +FUN_020A2DBC: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + ldr r0, [r8, #0x5a4] + mov r7, r1 + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r8, #0x5a8] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0x10] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0xc] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0x8] + cmp r0, #0x0 + beq _020A2E14 + ldr r0, [r7, #0x4] + cmp r0, #0x0 + bne _020A2E24 +_020A2E14: + add sp, sp, #0x8 + mov r0, #0x2 + ldmia sp!, {r4-r10,lr} + bx lr +_020A2E24: + mov r0, r0, lsl #0x1 + ldr r1, _020A2F8C ; =0x021C8EC8 + add r0, r0, r0, lsr #0x1f + mov r4, r0, asr #0x1 + ldr r1, [r1, #0x0] + mov r0, r4, lsl #0x3 + blx r1 + movs r6, r0 + addeq sp, sp, #0x8 + moveq r0, #0x2 + ldmeqia sp!, {r4-r10,lr} + bxeq lr + add r5, r6, r4, lsl #0x1 + add r10, r5, r4, lsl #0x1 + ldr r1, [r8, #0x5a4] + ldr r2, [r8, #0x5a8] + mov r0, r5 + mov r3, r4 + add r9, r10, r4, lsl #0x1 + bl FUN_020A4B50 + ldr r1, [r7, #0x10] + ldr r2, [r7, #0xc] + mov r0, r10 + mov r3, r4 + bl FUN_020A4B50 + mov r0, r9 + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x4] + mov r3, r4 + bl FUN_020A4B50 + bl FUN_020A36EC + str r9, [sp, #0x0] + mov r2, r10 + mov r9, r0 + mov r0, r6 + mov r1, r5 + mov r3, r4 + bl FUN_020A507C + mov r0, r9 + bl FUN_020A36B4 + mov r0, r5 + mov r1, r6 + ldr r2, [r7, #0x4] + mov r3, r4 + bl FUN_020A4B08 + ldrb r0, [r6, r4, lsl #0x1] + mov r4, #0x0 + cmp r0, #0x0 + bne _020A2EF4 + ldrb r0, [r5, #0x1] + cmp r0, #0x1 + beq _020A2EFC +_020A2EF4: + mov r4, #0x2 + b _020A2F6C +_020A2EFC: + ldr r3, [r7, #0x4] + mov r2, #0x2 + cmp r3, #0x2 + ble _020A2F24 +_020A2F0C: + ldrb r0, [r5, r2] + cmp r0, #0xff + bne _020A2F24 + add r2, r2, #0x1 + cmp r2, r3 + blt _020A2F0C +_020A2F24: + add r1, r2, #0x1 + cmp r1, r3 + bge _020A2F68 + ldrb r0, [r5, r2] + cmp r0, #0x0 + bne _020A2F68 + ldrb r0, [r5, r1] + cmp r0, #0x30 + bne _020A2F68 + ldr r0, _020A2F90 ; =0x00000468 + ldr r2, [r8, #0x47c] + add r1, r5, r3 + add r0, r8, r0 + sub r1, r1, r2 + bl memcmp +_020A2F60: ; 0x020A2F60 + cmp r0, #0x0 + beq _020A2F6C +_020A2F68: + mov r4, #0x2 +_020A2F6C: + ldr r1, _020A2F94 ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,lr} + bx lr + .balign 4 +_020A2F8C: .word 0x021C8EC8 +_020A2F90: .word 0x00000468 +_020A2F94: .word 0x021C8EF4 + + arm_func_start FUN_020A2F98 +FUN_020A2F98: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + str r1, [sp, #0x4] + ldr r1, [r1, #0x0] + mov r9, r0 + str r1, [sp, #0x8] + add r0, r1, #0x1 + str r0, [sp, #0x8] + add r0, sp, #0x8 + mov r5, r2 + mov r4, r3 + ldr r8, [sp, #0x30] + ldrb r6, [r1, #0x0] + bl FUN_020A35D8 + movs r7, r0 + bmi _020A2FE0 + cmp r7, #0x7d0 + ble _020A2FF0 +_020A2FE0: + add sp, sp, #0xc + mov r0, #0x1 + ldmia sp!, {r4-r11,lr} + bx lr +_020A2FF0: + and r1, r6, #0x1f + cmp r1, #0x18 + addls pc, pc, r1, lsl #0x2 + b _020A3430 +_020A3000: + b _020A3430 +_020A3004: + b _020A3430 +_020A3008: + b _020A3064 +_020A300C: + b _020A315C +_020A3010: + b _020A3430 +_020A3014: + b _020A3430 +_020A3018: + b _020A31DC +_020A301C: + b _020A3430 +_020A3020: + b _020A3430 +_020A3024: + b _020A3430 +_020A3028: + b _020A3430 +_020A302C: + b _020A3430 +_020A3030: + b _020A3274 +_020A3034: + b _020A3430 +_020A3038: + b _020A3430 +_020A303C: + b _020A3430 +_020A3040: + b _020A3348 +_020A3044: + b _020A33D8 +_020A3048: + b _020A3430 +_020A304C: + b _020A3274 +_020A3050: + b _020A3274 +_020A3054: + b _020A3430 +_020A3058: + b _020A3274 +_020A305C: + b _020A32F4 +_020A3060: + b _020A32F4 +_020A3064: + ldrb r0, [r9, #0x5ad] + cmp r0, #0x0 + beq _020A314C + cmp r4, #0x0 + bne _020A30E0 + ldr r0, [sp, #0x8] + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + bne _020A30A4 +_020A3088: + ldr r1, [sp, #0x8] + sub r7, r7, #0x1 + add r0, r1, #0x1 + str r0, [sp, #0x8] + ldrb r1, [r1, #0x1] + cmp r1, #0x0 + beq _020A3088 +_020A30A4: + cmp r8, #0x0 + beq _020A30C0 + cmp r8, #0x2 + streq r7, [r9, #0x484] + ldreq r0, [sp, #0x8] + streq r0, [r9, #0x488] + b _020A314C +_020A30C0: + cmp r7, #0x100 + bgt _020A314C + ldr r1, _020A34B8 ; =0x00000494 + mov r2, r7 + add r1, r9, r1 + bl MI_CpuCopy8 + str r7, [r9, #0x594] + b _020A314C +_020A30E0: + cmp r4, #0x1 + bne _020A314C + ldr r0, [sp, #0x8] + ldrb r1, [r0, #0x0] + cmp r1, #0x0 + bne _020A3114 +_020A30F8: + ldr r1, [sp, #0x8] + sub r7, r7, #0x1 + add r0, r1, #0x1 + str r0, [sp, #0x8] + ldrb r1, [r1, #0x1] + cmp r1, #0x0 + beq _020A30F8 +_020A3114: + cmp r8, #0x0 + beq _020A3130 + cmp r8, #0x2 + streq r7, [r9, #0x48c] + ldreq r0, [sp, #0x8] + streq r0, [r9, #0x490] + b _020A314C +_020A3130: + cmp r7, #0x8 + bgt _020A314C + ldr r1, _020A34BC ; =0x00000598 + mov r2, r7 + add r1, r9, r1 + bl MI_CpuCopy8 + str r7, [r9, #0x5a0] +_020A314C: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A315C: + cmp r5, #0x1 + bne _020A317C + cmp r8, #0x2 + ldrne r1, [sp, #0x8] + subne r0, r7, #0x1 + addne r1, r1, #0x1 + strne r1, [r9, #0x5a4] + strne r0, [r9, #0x5a8] +_020A317C: + ldrb r0, [r9, #0x5ad] + cmp r0, #0x0 + beq _020A31CC + ldr r0, [sp, #0x8] + add r1, sp, #0x8 + add r0, r0, #0x1 + str r0, [sp, #0x8] + mov r0, r9 + mov r2, r5 + mov r3, #0x0 + str r8, [sp, #0x0] + bl FUN_020A2F98 +_020A31AC: ; 0x020A31AC + cmp r0, #0x0 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + mov r0, #0x0 + strb r0, [r9, #0x5ad] + b _020A349C +_020A31CC: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A31DC: + ldr r5, [sp, #0x8] + mov r6, #0x0 + ldr sl, _020A34C0 ; =0x02106278 +_020A31E8: + ldr r4, [r10, r6, lsl #0x2] + mov r0, r4 + bl strlen + mov r2, r0 + mov r0, r5 + mov r1, r4 + bl memcmp +_020A3204: ; 0x020A3204 + cmp r0, #0x0 + bne _020A3258 + cmp r6, #0x5 + addls pc, pc, r6, lsl #0x2 + b _020A3264 +_020A3218: ; 0x020A3218 + b _020A3264 +_020A321C: ; 0x020A321C + b _020A3230 +_020A3220: ; 0x020A3220 + b _020A3230 +_020A3224: ; 0x020A3224 + b _020A3240 +_020A3228: ; 0x020A3228 + b _020A3240 +_020A322C: ; 0x020A322C + b _020A324C +_020A3230: + cmp r8, #0x0 + streq r6, [r9, #0x45c] + strb r6, [r9, #0x5ad] + b _020A3264 +_020A3240: + cmp r8, #0x2 + strne r6, [r9, #0x458] + b _020A3264 +_020A324C: + cmp r8, #0x2 + strneb r6, [r9, #0x5ae] + b _020A3264 +_020A3258: + add r6, r6, #0x1 + cmp r6, #0x6 + blt _020A31E8 +_020A3264: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A3274: + cmp r8, #0x2 + beq _020A32DC + ldrb r0, [r9, #0x5ac] + cmp r0, #0x0 + beq _020A32CC + ldr r1, [sp, #0x8] + mov r2, r7 + add r0, r9, #0x6b0 + bl FUN_020A3554 + ldrb r0, [r9, #0x5ae] + cmp r0, #0x5 + bne _020A32DC + cmp r7, #0x4f + bgt _020A32DC + ldr r0, [sp, #0x8] + mov r2, r7 + add r1, r9, #0x7b0 + bl MI_CpuCopy8 + add r0, r9, r7 + mov r1, #0x0 + strb r1, [r0, #0x7b0] + b _020A32DC +_020A32CC: + ldr r1, [sp, #0x8] + mov r2, r7 + add r0, r9, #0x5b0 + bl FUN_020A3554 +_020A32DC: + mov r0, #0x0 + strb r0, [r9, #0x5ae] + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] + b _020A349C +_020A32F4: + cmp r8, #0x2 + beq _020A3330 + ldr r0, [sp, #0x8] + bl FUN_020A34C4 +_020A3304: ; 0x020A3304 + cmp r4, #0x0 + bne _020A3320 + ldr r1, [r9, #0x80c] + cmp r1, r0 + movcs r0, #0x1 + strcsb r0, [r9, #0x5af] + b _020A3330 +_020A3320: + ldr r1, [r9, #0x80c] + cmp r1, r0 + movhi r0, #0x0 + strhib r0, [r9, #0x5af] +_020A3330: + ldr r1, [sp, #0x8] + mov r0, #0x1 + add r1, r1, r7 + str r1, [sp, #0x8] + strb r0, [r9, #0x5ac] + b _020A349C +_020A3348: + cmp r5, #0x0 + bne _020A3364 + cmp r4, #0x0 + bne _020A3364 + cmp r8, #0x2 + ldrne r0, [sp, #0x8] + strne r0, [r9, #0x460] +_020A3364: + ldr r0, [sp, #0x8] + mov r10, #0x0 + add r7, r0, r7 + cmp r0, r7 + bhs _020A33BC + add r11, sp, #0x8 + add r6, r5, #0x1 +_020A3380: + mov r0, r9 + mov r1, r11 + mov r2, r6 + mov r3, r10 + str r8, [sp, #0x0] + bl FUN_020A2F98 +_020A3398: ; 0x020A3398 + cmp r0, #0x0 + add r10, r10, #0x1 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x8] + cmp r0, r7 + blo _020A3380 +_020A33BC: + cmp r5, #0x1 + bne _020A349C + cmp r4, #0x0 + bne _020A349C + cmp r8, #0x2 + strne r0, [r9, #0x464] + b _020A349C +_020A33D8: + ldr r0, [sp, #0x8] + add r6, r0, r7 + cmp r0, r6 + bhs _020A349C + add r7, r5, #0x1 + add r4, sp, #0x8 + mov r5, #0x0 +_020A33F4: + mov r0, r9 + mov r1, r4 + mov r2, r7 + mov r3, r5 + str r8, [sp, #0x0] + bl FUN_020A2F98 +_020A340C: ; 0x020A340C + cmp r0, #0x0 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x8] + cmp r0, r6 + blo _020A33F4 + b _020A349C +_020A3430: + cmp r6, #0xa0 + bne _020A3490 + ldr r0, [sp, #0x8] + add r6, r0, r7 + cmp r0, r6 + bhs _020A349C + add r7, r5, #0x1 + add r4, sp, #0x8 + mov r5, #0x0 +_020A3454: + mov r0, r9 + mov r1, r4 + mov r2, r7 + mov r3, r5 + str r8, [sp, #0x0] + bl FUN_020A2F98 +_020A346C: ; 0x020A346C + cmp r0, #0x0 + addne sp, sp, #0xc + movne r0, #0x1 + ldmneia sp!, {r4-r11,lr} + bxne lr + ldr r0, [sp, #0x8] + cmp r0, r6 + blo _020A3454 + b _020A349C +_020A3490: + ldr r0, [sp, #0x8] + add r0, r0, r7 + str r0, [sp, #0x8] +_020A349C: + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x4] + mov r0, #0x0 + str r2, [r1, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A34B8: .word 0x00000494 +_020A34BC: .word 0x00000598 +_020A34C0: .word 0x02106278 + + arm_func_start FUN_020A34C4 +FUN_020A34C4: + stmdb sp!, {r4,lr} + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x0] + mov r2, #0xa + cmp r1, #0x17 + mla r1, r3, r2, r12 + sub lr, r1, #0x210 + add r0, r0, #0x2 + bne _020A34FC + cmp lr, #0x32 + ldrhs r1, _020A3550 ; =0x0000076C + addcc r4, lr, #0x7d0 + addcs r4, lr, r1 + b _020A3518 +_020A34FC: + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x0] + mov r1, #0x64 + add r0, r0, #0x2 + mla r2, r3, r2, r12 + sub r2, r2, #0x210 + mla r4, lr, r1, r2 +_020A3518: + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x0] + mov r1, #0xa + ldrb r2, [r0, #0x3] + ldrb r0, [r0, #0x2] + mla r12, r3, r1, r12 + mla r1, r0, r1, r2 + mov r2, r4, lsl #0x10 + sub r0, r12, #0x210 + add r2, r2, r0, lsl #0x8 + sub r0, r1, #0x210 + add r0, r2, r0 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A3550: .word 0x0000076C + + arm_func_start FUN_020A3554 +FUN_020A3554: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrsb r3, [r0, #0x0] + mov lr, r0 + cmp r3, #0x0 + beq _020A35AC +_020A356C: + ldrsb r3, [r0, #0x1]! + cmp r3, #0x0 + bne _020A356C + sub r3, r0, lr + cmp r3, #0xff + addge sp, sp, #0x4 + ldmgeia sp!, {lr} + bxge lr + mov r3, #0x2c + strb r3, [r0, #0x0] + mov r3, #0x20 + strb r3, [r0, #0x1] + add r0, r0, #0x2 + b _020A35AC +_020A35A4: + ldrsb r3, [r1], #0x1 + strb r3, [r0], #0x1 +_020A35AC: + cmp r2, #0x0 + sub r2, r2, #0x1 + beq _020A35C4 + sub r3, r0, lr + cmp r3, #0xff + blt _020A35A4 +_020A35C4: + mov r1, #0x0 + strb r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A35D8 +FUN_020A35D8: ; 0x020A35D8 + ldr r1, [r0, #0x0] + ldrb r3, [r1, #0x0] + add r12, r1, #0x1 + ands r1, r3, #0x80 + beq _020A361C + ands r1, r3, #0x7f + sub r2, r1, #0x1 + mov r3, #0x0 + beq _020A361C +_020A35FC: + ands r1, r3, #0xff000000 + mvnne r0, #0x0 + bxne lr + ldrb r1, [r12], #0x1 + cmp r2, #0x0 + sub r2, r2, #0x1 + add r3, r1, r3, lsl #0x8 + bne _020A35FC +_020A361C: + str r12, [r0, #0x0] + mov r0, r3 + bx lr + + arm_func_start FUN_020A3628 +FUN_020A3628: ; 0x020A3628 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, [r0, #0x818] + mov r7, r1 + cmp r4, #0x0 + mov r6, #0x0 + ble _020A3678 + ldr r5, [r0, #0x814] +_020A3648: + ldr r0, [r5, r6, lsl #0x2] + mov r1, r7 + ldr r0, [r0, #0x0] + bl strcmp +_020A3658: ; 0x020A3658 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldreq r0, [r5, r6, lsl #0x2] + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r6, r6, #0x1 + cmp r6, r4 + blt _020A3648 +_020A3678: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A3688 +FUN_020A3688: ; 0x020A3688 + ldr r2, _020A36B0 ; =0x021D3498 + ldr r2, [r2, #0x4] + ldr r2, [r2, #0xa4] + cmp r2, #0x0 + bxeq lr + ldr r2, [r2, #0xc] + cmp r2, #0x0 + strne r0, [r2, #0x814] + strne r1, [r2, #0x818] + bx lr + .balign 4 +_020A36B0: .word 0x021D3498 + + arm_func_start FUN_020A36B4 +FUN_020A36B4: ; 0x020A36B4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, r0 + cmp r1, #0x20 + addcs sp, sp, #0x4 + ldmcsia sp!, {lr} + bxcs lr + ldr r0, _020A36E8 ; =0x021D3498 + ldr r0, [r0, #0x4] + bl OS_SetThreadPriority + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A36E8: .word 0x021D3498 + + arm_func_start FUN_020A36EC +FUN_020A36EC: ; 0x020A36EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020A3744 ; =0x02106244 + ldr r0, [r0, #0x0] + cmp r0, #0x20 + addcs sp, sp, #0x4 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r5,lr} + bxcs lr + ldr r0, _020A3748 ; =0x021D3498 + ldr r5, [r0, #0x4] + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, _020A3744 ; =0x02106244 + mov r4, r0 + ldr r1, [r1, #0x0] + mov r0, r5 + bl OS_SetThreadPriority + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A3744: .word 0x02106244 +_020A3748: .word 0x021D3498 + + arm_func_start FUN_020A374C +FUN_020A374C: ; 0x020A374C + ldr r1, _020A3758 ; =0x02106244 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020A3758: .word 0x02106244 + + arm_func_start FUN_020A375C +FUN_020A375C: ; 0x020A375C + stmdb sp!, {lr} + sub sp, sp, #0x1c + add r0, sp, #0x0 + bl RTC_GetDate + add r0, sp, #0x10 + bl RTC_GetTime +_020A3774: ; 0x020A3774 + add r0, sp, #0x0 + add r1, sp, #0x10 + bl RTC_ConvertDateTimeToSecond + ldr r1, _020A3794 ; =0x386D4380 + add r0, r0, r1 + add sp, sp, #0x1c + ldmia sp!, {lr} + bx lr + .balign 4 +_020A3794: .word 0x386D4380 + + arm_func_start FUN_020A3798 +FUN_020A3798: + stmdb sp!, {r4-r8,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r6, _020A3804 ; =0x021CA6FC + mov r7, r0 + mov r8, #0x0 + add r5, r4, #0x74 + mov r4, #0x20 +_020A37B8: + ldrb r0, [r6, #0x5a] + cmp r0, #0x0 + beq _020A37E4 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl memcmp +_020A37D4: ; 0x020A37D4 + cmp r0, #0x0 + moveq r0, #0x0 + streqb r0, [r6, #0x5a] + beq _020A37F4 +_020A37E4: + add r8, r8, #0x1 + cmp r8, #0x4 + add r6, r6, #0x5c + blt _020A37B8 +_020A37F4: + mov r0, r7 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A3804: .word 0x021CA6FC + + arm_func_start FUN_020A3808 +FUN_020A3808: ; 0x020A3808 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl OS_DisableInterrupts + mov r5, r0 + bl OS_GetTick + ldr r6, _020A3904 ; =0x021CA6FC + mov r4, r0, lsr #0x10 + mov r3, #0x0 + mov r12, r3 + mov r2, r6 + orr r4, r4, r1, lsl #0x10 + mvn r0, #0x0 +_020A3844: + ldrb r1, [r2, #0x5a] + cmp r1, #0x0 + beq _020A387C + cmp r8, #0x0 + beq _020A387C + ldr lr, [r2, #0x54] + cmp r8, lr + bne _020A387C + cmp r7, #0x0 + beq _020A387C + ldrh lr, [r2, #0x58] + cmp r7, lr + moveq r6, r2 + beq _020A38BC +_020A387C: + mvn lr, #0x0 + cmp r3, lr + beq _020A38AC + cmp r1, #0x0 + moveq r3, r0 + moveq r6, r2 + beq _020A38AC + ldr r1, [r2, #0x50] + sub r1, r4, r1 + cmp r1, r3 + movhi r3, r1 + movhi r6, r2 +_020A38AC: + add r12, r12, #0x1 + cmp r12, #0x4 + add r2, r2, #0x5c + blt _020A3844 +_020A38BC: + mov r1, r6 + add r0, r9, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r0, r9 + add r1, r6, #0x20 + mov r2, #0x30 + bl MI_CpuCopy8 + str r4, [r6, #0x50] + mov r0, #0x1 + strb r0, [r6, #0x5a] + str r8, [r6, #0x54] + mov r0, r5 + strh r7, [r6, #0x58] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020A3904: .word 0x021CA6FC + + arm_func_start FUN_020A3908 +FUN_020A3908: ; 0x020A3908 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl OS_DisableInterrupts + mov r1, #0x0 + ldr r4, _020A39AC ; =0x021CA6FC + mov r5, r0 + strb r1, [r8, #0x30] +_020A392C: + ldrb r0, [r4, #0x5a] + cmp r0, #0x0 + beq _020A398C + ldr r0, [r4, #0x54] + cmp r0, r7 + bne _020A398C + ldrh r0, [r4, #0x58] + cmp r0, r6 + bne _020A398C + mov r0, r4 + add r1, r8, #0x74 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r1, r8 + add r0, r4, #0x20 + mov r2, #0x30 + bl MI_CpuCopy8 + bl OS_GetTick + mov r0, r0, lsr #0x10 + orr r0, r0, r1, lsl #0x10 + str r0, [r4, #0x50] + mov r0, #0x1 + strb r0, [r8, #0x30] + b _020A399C +_020A398C: + add r1, r1, #0x1 + cmp r1, #0x4 + add r4, r4, #0x5c + blt _020A392C +_020A399C: + mov r0, r5 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A39AC: .word 0x021CA6FC + + arm_func_start FUN_020A39B0 +FUN_020A39B0: ; 0x020A39B0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl OS_DisableInterrupts + mov r6, #0x0 + ldr r4, _020A3A54 ; =0x021CA6FC + mov r5, r0 + strb r6, [r7, #0x30] + add r9, r7, #0x74 + mov r8, #0x20 +_020A39D8: + ldrb r0, [r4, #0x5a] + cmp r0, #0x0 + beq _020A3A30 + ldr r0, [r4, #0x54] + cmp r0, #0x0 + bne _020A3A30 + ldrh r0, [r4, #0x58] + cmp r0, #0x0 + bne _020A3A30 + mov r0, r4 + mov r1, r9 + mov r2, r8 + bl memcmp +_020A3A0C: ; 0x020A3A0C + cmp r0, #0x0 + bne _020A3A30 + mov r1, r7 + add r0, r4, #0x20 + mov r2, #0x30 + bl MI_CpuCopy8 + mov r0, #0x1 + strb r0, [r7, #0x30] + b _020A3A40 +_020A3A30: + add r6, r6, #0x1 + cmp r6, #0x4 + add r4, r4, #0x5c + blt _020A39D8 +_020A3A40: + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + .balign 4 +_020A3A54: .word 0x021CA6FC + + arm_func_start FUN_020A3A58 +FUN_020A3A58: ; 0x020A3A58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + add r1, r5, #0x10 + mov r2, #0x8 + bl FUN_020A4044 + ldr r0, [r5, #0x10] + ldr r1, _020A3AC8 ; =0x021062EC + mov r0, r0, lsr #0x3 + and r0, r0, #0x3f + cmp r0, #0x38 + rsblt r2, r0, #0x38 + rsbge r2, r0, #0x78 + mov r0, r5 + bl FUN_020A3ACC + mov r0, r5 + mov r1, r4 + mov r2, #0x8 + bl FUN_020A3ACC + mov r0, r4 + mov r1, r5 + mov r2, #0x10 + bl FUN_020A4044 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A3AC8: .word 0x021062EC + + arm_func_start FUN_020A3ACC +FUN_020A3ACC: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r3, [r8, #0x10] + mov r6, r2 + add r0, r3, r6, lsl #0x3 + str r0, [r8, #0x10] + ldr r0, [r8, #0x10] + mov r2, r3, lsr #0x3 + cmp r0, r6, lsl #0x3 + ldrcc r0, [r8, #0x14] + and r4, r2, #0x3f + addcc r0, r0, #0x1 + strcc r0, [r8, #0x14] + ldr r0, [r8, #0x14] + rsb r5, r4, #0x40 + add r0, r0, r6, lsr #0x1d + mov r7, r1 + str r0, [r8, #0x14] + cmp r6, r5 + blo _020A3B6C + add r1, r8, #0x18 + mov r0, r7 + mov r2, r5 + add r1, r1, r4 + bl MI_CpuCopy8 + mov r0, r8 + add r1, r8, #0x18 + mov r4, #0x0 + bl FUN_020A3BD8 + add r0, r5, #0x3f + cmp r0, r6 + bhs _020A3B70 +_020A3B4C: + mov r0, r8 + add r1, r7, r5 + bl FUN_020A3BD8 + add r5, r5, #0x40 + add r0, r5, #0x3f + cmp r0, r6 + blo _020A3B4C + b _020A3B70 +_020A3B6C: + mov r5, #0x0 +_020A3B70: + add r1, r8, #0x18 + add r0, r7, r5 + add r1, r1, r4 + sub r2, r6, r5 + bl MI_CpuCopy8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020A3B8C +FUN_020A3B8C: ; 0x020A3B8C + stmdb sp!, {r4,lr} + mov r1, #0x0 + mov r2, #0x58 + mov r4, r0 + bl MI_CpuFill8 + ldr r1, _020A3BC8 ; =0x67452301 + ldr r0, _020A3BCC ; =0xEFCDAB89 + str r1, [r4, #0x0] + ldr r1, _020A3BD0 ; =0x98BADCFE + str r0, [r4, #0x4] + ldr r0, _020A3BD4 ; =0x10325476 + str r1, [r4, #0x8] + str r0, [r4, #0xc] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A3BC8: .word 0x67452301 +_020A3BCC: .word 0xEFCDAB89 +_020A3BD0: .word 0x98BADCFE +_020A3BD4: .word 0x10325476 + + arm_func_start FUN_020A3BD8 +FUN_020A3BD8: ; 0x020A3BD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + str r0, [sp, #0x0] + ldr r3, [sp, #0x0] + add r0, sp, #0x4 + mov r2, #0x40 + ldr r7, [r3, #0x0] + ldr r6, [r3, #0x4] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + bl FUN_020A402C + ldr r2, _020A4024 ; =0x021062AC + mov r3, #0x0 + ldr r1, _020A4028 ; =0x0210632C + mov r11, r3 + add r0, sp, #0x4 + mov r10, r2 +_020A3C1C: + ldrb r9, [r2, #0x0] + add r8, r3, #0x1 + eor r12, r5, r4 + and r12, r6, r12 + eor r12, r4, r12 + ldr r9, [r0, r9, lsl #0x2] + ldr lr, [r1, r3, lsl #0x2] + add r9, r12, r9 + add r9, lr, r9 + add r9, r7, r9 + mov r7, r9, lsl #0x7 + orr r7, r7, r9, lsr #0x19 + ldrb r9, [r10, r8] + add r7, r6, r7 + ldr r8, [r1, r8, lsl #0x2] + ldr r9, [r0, r9, lsl #0x2] + eor r12, r6, r5 + and r12, r7, r12 + eor r12, r5, r12 + add r9, r12, r9 + add r9, r8, r9 + add r8, r3, #0x2 + add r9, r4, r9 + mov r4, r9, lsl #0xc + orr r4, r4, r9, lsr #0x14 + add r4, r7, r4 + ldr r9, [r1, r8, lsl #0x2] + ldrb r12, [r10, r8] + eor r8, r7, r6 + and r8, r4, r8 + eor r8, r6, r8 + ldr lr, [r0, r12, lsl #0x2] + add r12, r3, #0x3 + add r8, r8, lr + add r8, r9, r8 + add r8, r5, r8 + mov r5, r8, lsl #0x11 + orr r5, r5, r8, lsr #0xf + add r5, r4, r5 + ldr r9, [r1, r12, lsl #0x2] + ldrb r12, [r10, r12] + eor r8, r4, r7 + and r8, r5, r8 + eor r8, r7, r8 + ldr r12, [r0, r12, lsl #0x2] + add r2, r2, #0x4 + add r8, r8, r12 + add r8, r9, r8 + add r8, r6, r8 + mov r6, r8, lsl #0x16 + orr r6, r6, r8, lsr #0xa + add r6, r5, r6 + add r3, r3, #0x4 + add r11, r11, #0x1 + cmp r11, #0x4 + blt _020A3C1C + add r8, r10, r3 + mov r2, #0x0 + ldr r1, _020A4028 ; =0x0210632C + add r0, sp, #0x4 + ldr lr, _020A4024 ; =0x021062AC +_020A3D10: + ldrb r10, [r8, #0x0] + add r9, r3, #0x1 + eor r11, r6, r5 + and r11, r4, r11 + eor r11, r5, r11 + ldr r10, [r0, r10, lsl #0x2] + ldr r12, [r1, r3, lsl #0x2] + add r10, r11, r10 + add r10, r12, r10 + add r10, r7, r10 + mov r7, r10, lsl #0x5 + orr r7, r7, r10, lsr #0x1b + ldrb r10, [lr, r9] + add r7, r6, r7 + ldr r9, [r1, r9, lsl #0x2] + ldr r10, [r0, r10, lsl #0x2] + eor r11, r7, r6 + and r11, r5, r11 + eor r11, r6, r11 + add r10, r11, r10 + add r10, r9, r10 + add r9, r3, #0x2 + add r10, r4, r10 + mov r4, r10, lsl #0x9 + orr r4, r4, r10, lsr #0x17 + add r4, r7, r4 + ldr r12, [r1, r9, lsl #0x2] + ldrb r9, [lr, r9] + eor r10, r4, r7 + and r10, r6, r10 + eor r11, r7, r10 + ldr r10, [r0, r9, lsl #0x2] + add r9, r3, #0x3 + add r10, r11, r10 + add r10, r12, r10 + add r10, r5, r10 + mov r5, r10, lsl #0xe + orr r5, r5, r10, lsr #0x12 + add r5, r4, r5 + ldr r10, [r1, r9, lsl #0x2] + ldrb r11, [lr, r9] + eor r9, r5, r4 + and r9, r7, r9 + eor r9, r4, r9 + ldr r11, [r0, r11, lsl #0x2] + add r8, r8, #0x4 + add r9, r9, r11 + add r9, r10, r9 + add r9, r6, r9 + mov r6, r9, lsl #0x14 + orr r6, r6, r9, lsr #0xc + add r6, r5, r6 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020A3D10 + add r8, lr, r3 + mov lr, #0x0 + ldr r2, _020A4028 ; =0x0210632C + add r0, sp, #0x4 +_020A3E00: + ldrb r1, [r8, #0x0] + eor r12, r6, r5 + add lr, lr, #0x1 + ldr r11, [r0, r1, lsl #0x2] + eor r12, r4, r12 + ldr r1, [r2, r3, lsl #0x2] + add r11, r12, r11 + add r1, r1, r11 + add r7, r7, r1 + mov r1, r7, lsl #0x4 + orr r1, r1, r7, lsr #0x1c + add r7, r6, r1 + add r10, r3, #0x1 + ldr r1, _020A4024 ; =0x021062AC + ldr r12, [r2, r10, lsl #0x2] + ldrb r1, [r1, r10] + eor r10, r7, r6 + eor r11, r5, r10 + ldr r10, [r0, r1, lsl #0x2] + add r9, r3, #0x2 + add r10, r11, r10 + add r10, r12, r10 + add r4, r4, r10 + ldr sl, _020A4024 ; =0x021062AC + ldr r1, [r2, r9, lsl #0x2] + ldrb r9, [r10, r9] + mov r10, r4, lsl #0xb + orr r4, r10, r4, lsr #0x15 + add r4, r7, r4 + eor r10, r4, r7 + ldr r9, [r0, r9, lsl #0x2] + eor r10, r6, r10 + add r9, r10, r9 + add r1, r1, r9 + add r5, r5, r1 + add r10, r3, #0x3 + ldr sb, _020A4024 ; =0x021062AC + mov r1, r5, lsl #0x10 + ldrb r9, [r9, r10] + orr r1, r1, r5, lsr #0x10 + add r5, r4, r1 + ldr r1, [r2, r10, lsl #0x2] + eor r10, r5, r4 + ldr r9, [r0, r9, lsl #0x2] + eor r10, r7, r10 + add r9, r10, r9 + add r1, r1, r9 + add r6, r6, r1 + mov r1, r6, lsl #0x17 + orr r1, r1, r6, lsr #0x9 + add r8, r8, #0x4 + add r6, r5, r1 + add r3, r3, #0x4 + cmp lr, #0x4 + blt _020A3E00 + ldr r0, _020A4024 ; =0x021062AC + ldr r1, _020A4028 ; =0x0210632C + add r8, r0, r3 + ldr lr, _020A4024 ; =0x021062AC + mov r2, #0x0 + add r0, sp, #0x4 +_020A3EF4: + ldrb r10, [r8, #0x0] + add r9, r3, #0x1 + mvn r11, r4 + orr r11, r6, r11 + eor r11, r5, r11 + ldr r10, [r0, r10, lsl #0x2] + ldr r12, [r1, r3, lsl #0x2] + add r10, r11, r10 + add r10, r12, r10 + add r10, r7, r10 + mov r7, r10, lsl #0x6 + orr r7, r7, r10, lsr #0x1a + ldrb r10, [lr, r9] + add r7, r6, r7 + ldr r9, [r1, r9, lsl #0x2] + ldr r10, [r0, r10, lsl #0x2] + mvn r11, r5 + orr r11, r7, r11 + eor r11, r6, r11 + add r10, r11, r10 + add r10, r9, r10 + add r9, r3, #0x2 + add r10, r4, r10 + mov r4, r10, lsl #0xa + orr r4, r4, r10, lsr #0x16 + add r4, r7, r4 + ldr r12, [r1, r9, lsl #0x2] + ldrb r9, [lr, r9] + mvn r10, r6 + orr r10, r4, r10 + eor r11, r7, r10 + ldr r10, [r0, r9, lsl #0x2] + add r9, r3, #0x3 + add r10, r11, r10 + add r10, r12, r10 + add r10, r5, r10 + mov r5, r10, lsl #0xf + orr r5, r5, r10, lsr #0x11 + add r5, r4, r5 + ldr r10, [r1, r9, lsl #0x2] + ldrb r11, [lr, r9] + mvn r9, r7 + orr r9, r5, r9 + eor r9, r4, r9 + ldr r11, [r0, r11, lsl #0x2] + add r8, r8, #0x4 + add r9, r9, r11 + add r9, r10, r9 + add r9, r6, r9 + mov r6, r9, lsl #0x15 + orr r6, r6, r9, lsr #0xb + add r6, r5, r6 + add r3, r3, #0x4 + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020A3EF4 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r1, r0, r7 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + ldr r0, [r0, #0x4] + add r1, r0, r6 + ldr r0, [sp, #0x0] + str r1, [r0, #0x4] + ldr r0, [r0, #0x8] + add r1, r0, r5 + ldr r0, [sp, #0x0] + str r1, [r0, #0x8] + ldr r0, [r0, #0xc] + add r1, r0, r4 + ldr r0, [sp, #0x0] + str r1, [r0, #0xc] + add sp, sp, #0x44 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A4024: .word 0x021062AC +_020A4028: .word 0x0210632C + + arm_func_start FUN_020A402C +FUN_020A402C: ; 0x020A402C + ldr ip, _020A4040 ; =MI_CpuCopy8 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx r12 + .balign 4 +_020A4040: .word MI_CpuCopy8 + + arm_func_start FUN_020A4044 +FUN_020A4044: ; 0x020A4044 + ldr ip, _020A4058 ; =MI_CpuCopy8 + mov r3, r0 + mov r0, r1 + mov r1, r3 + bx r12 + .balign 4 +_020A4058: .word MI_CpuCopy8 + + arm_func_start FUN_020A405C +FUN_020A405C: ; 0x020A405C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r1, _020A4094 ; =0x0210642D + mov r5, r0 + mov r2, #0x2c + bl FUN_020A410C + mov r0, r4 + mov r1, r5 + mov r2, #0x14 + bl FUN_020A4930 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A4094: .word 0x0210642D + + arm_func_start FUN_020A4098 +FUN_020A4098: ; 0x020A4098 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + add r1, r5, #0x14 + mov r2, #0x8 + bl FUN_020A4930 + ldr r0, [r5, #0x18] + ldr r1, _020A4108 ; =0x0210642C + mov r0, r0, lsr #0x3 + and r0, r0, #0x3f + cmp r0, #0x38 + rsblt r2, r0, #0x38 + rsbge r2, r0, #0x78 + mov r0, r5 + bl FUN_020A410C + mov r0, r5 + mov r1, r4 + mov r2, #0x8 + bl FUN_020A410C + mov r0, r4 + mov r1, r5 + mov r2, #0x14 + bl FUN_020A4930 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A4108: .word 0x0210642C + + arm_func_start FUN_020A410C +FUN_020A410C: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r3, [r8, #0x18] + mov r6, r2 + add r0, r3, r6, lsl #0x3 + str r0, [r8, #0x18] + ldr r0, [r8, #0x18] + mov r2, r3, lsr #0x3 + cmp r0, r6, lsl #0x3 + ldrcc r0, [r8, #0x14] + and r4, r2, #0x3f + addcc r0, r0, #0x1 + strcc r0, [r8, #0x14] + ldr r0, [r8, #0x14] + rsb r5, r4, #0x40 + add r0, r0, r6, lsr #0x1d + mov r7, r1 + str r0, [r8, #0x14] + cmp r6, r5 + blo _020A41AC + add r1, r8, #0x1c + mov r0, r7 + mov r2, r5 + add r1, r1, r4 + bl MI_CpuCopy8 + mov r0, r8 + add r1, r8, #0x1c + mov r4, #0x0 + bl FUN_020A4224 + add r0, r5, #0x3f + cmp r0, r6 + bhs _020A41B0 +_020A418C: + mov r0, r8 + add r1, r7, r5 + bl FUN_020A4224 + add r5, r5, #0x40 + add r0, r5, #0x3f + cmp r0, r6 + blo _020A418C + b _020A41B0 +_020A41AC: + mov r5, #0x0 +_020A41B0: + add r1, r8, #0x1c + add r0, r7, r5 + add r1, r1, r4 + sub r2, r6, r5 + bl MI_CpuCopy8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020A41CC +FUN_020A41CC: ; 0x020A41CC + stmdb sp!, {r4,lr} + mov r1, #0x0 + mov r2, #0x5c + mov r4, r0 + bl MI_CpuFill8 + ldr r0, _020A4210 ; =0x67452301 + ldr r1, _020A4214 ; =0xEFCDAB89 + str r0, [r4, #0x0] + ldr r0, _020A4218 ; =0x98BADCFE + str r1, [r4, #0x4] + ldr r1, _020A421C ; =0x10325476 + str r0, [r4, #0x8] + ldr r0, _020A4220 ; =0xC3D2E1F0 + str r1, [r4, #0xc] + str r0, [r4, #0x10] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A4210: .word 0x67452301 +_020A4214: .word 0xEFCDAB89 +_020A4218: .word 0x98BADCFE +_020A421C: .word 0x10325476 +_020A4220: .word 0xC3D2E1F0 + + arm_func_start FUN_020A4224 +FUN_020A4224: ; 0x020A4224 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + str r0, [sp, #0x0] + ldr r3, [sp, #0x0] + add r0, sp, #0x10 + mov r2, #0x40 + ldr r6, [r3, #0x0] + ldr r7, [r3, #0x4] + ldr r8, [r3, #0x8] + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + bl FUN_020A48CC + mov r2, #0x0 + ldr r3, _020A48BC ; =0x5A827999 + mov r0, r2 + add r1, sp, #0x10 +_020A4264: + eor r9, r8, r5 + mov r10, r6, lsl #0x5 + and r9, r7, r9 + orr r10, r10, r6, lsr #0x1b + eor r9, r5, r9 + mov r11, r7, lsl #0x1e + orr r7, r11, r7, lsr #0x2 + eor r11, r7, r8 + add r9, r10, r9 + ldr r12, [r1, r2, lsl #0x2] + and r10, r6, r11 + add r9, r12, r9 + add r9, r9, r3 + add r4, r4, r9 + add r9, r2, #0x1 + ldr r9, [r1, r9, lsl #0x2] + eor r10, r8, r10 + mov r11, r4, lsl #0x5 + orr r11, r11, r4, lsr #0x1b + add r10, r11, r10 + add r10, r9, r10 + mov r9, r6, lsl #0x1e + add r10, r10, r3 + add r5, r5, r10 + orr r6, r9, r6, lsr #0x2 + add r9, r2, #0x2 + ldr r10, [r1, r9, lsl #0x2] + mov r9, r5, lsl #0x5 + orr r9, r9, r5, lsr #0x1b + eor r11, r6, r7 + and r11, r4, r11 + eor r11, r7, r11 + add r9, r9, r11 + add r9, r10, r9 + add r9, r9, r3 + add r8, r8, r9 + mov r9, r4, lsl #0x1e + orr r4, r9, r4, lsr #0x2 + add r9, r2, #0x3 + ldr r10, [r1, r9, lsl #0x2] + mov r9, r8, lsl #0x5 + orr r9, r9, r8, lsr #0x1b + eor r11, r4, r6 + and r11, r5, r11 + eor r11, r6, r11 + add r9, r9, r11 + add r9, r10, r9 + add r9, r9, r3 + add r7, r7, r9 + mov r9, r5, lsl #0x1e + orr r5, r9, r5, lsr #0x2 + add r9, r2, #0x4 + ldr r10, [r1, r9, lsl #0x2] + mov r9, r7, lsl #0x5 + orr r9, r9, r7, lsr #0x1b + eor r11, r5, r4 + and r11, r8, r11 + eor r11, r4, r11 + add r9, r9, r11 + add r9, r10, r9 + add r9, r9, r3 + add r6, r6, r9 + mov r9, r8, lsl #0x1e + orr r8, r9, r8, lsr #0x2 + add r2, r2, #0x5 + add r0, r0, #0x1 + cmp r0, #0x3 + blt _020A4264 + eor r0, r8, r5 + mov r2, r6, lsl #0x5 + and r0, r7, r0 + orr r3, r2, r6, lsr #0x1b + eor r0, r5, r0 + add r3, r3, r0 + ldr r9, [sp, #0x4c] + ldr r0, _020A48BC ; =0x5A827999 + add r3, r9, r3 + add r3, r3, r0 + mov r2, r7, lsl #0x1e + orr r9, r2, r7, lsr #0x2 + mov r0, #0x0 + add r4, r4, r3 + bl FUN_020A4988 + eor r1, r9, r8 + mov r3, r4, lsl #0x5 + and r1, r6, r1 + mov r2, r6, lsl #0x1e + orr r3, r3, r4, lsr #0x1b + eor r1, r8, r1 + add r1, r3, r1 + add r3, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + add r1, sp, #0x10 + add r3, r3, r0 + orr r10, r2, r6, lsr #0x2 + mov r0, #0x1 + add r5, r5, r3 + bl FUN_020A4988 + eor r1, r10, r9 + mov r2, r5, lsl #0x5 + and r1, r4, r1 + orr r2, r2, r5, lsr #0x1b + eor r1, r9, r1 + add r1, r2, r1 + add r2, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + mov r1, r4, lsl #0x1e + add r0, r2, r0 + orr r6, r1, r4, lsr #0x2 + add r8, r8, r0 + add r1, sp, #0x10 + mov r0, #0x2 + bl FUN_020A4988 + mov r1, r8, lsl #0x5 + orr r2, r1, r8, lsr #0x1b + eor r1, r6, r10 + and r1, r5, r1 + eor r1, r10, r1 + add r1, r2, r1 + add r2, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + mov r1, r5, lsl #0x1e + add r0, r2, r0 + orr r7, r1, r5, lsr #0x2 + add r9, r9, r0 + mov r0, #0x3 + add r1, sp, #0x10 + bl FUN_020A4988 + mov r1, r9, lsl #0x5 + orr r2, r1, r9, lsr #0x1b + eor r1, r7, r6 + and r1, r8, r1 + eor r1, r6, r1 + add r1, r2, r1 + add r2, r1, r0 + ldr r0, _020A48BC ; =0x5A827999 + mov r1, r8, lsl #0x1e + add r0, r2, r0 + add r10, r10, r0 + mov r0, #0x0 + ldr r4, _020A48C0 ; =0x6ED9EBA1 + orr r8, r1, r8, lsr #0x2 + mov r5, #0x4 + str r0, [sp, #0xc] + add r11, sp, #0x10 +_020A44A8: + mov r0, r5 + mov r1, r11 + bl FUN_020A4988 + mov r2, r10, lsl #0x5 + eor r1, r9, r8 + orr r2, r2, r10, lsr #0x1b + eor r1, r7, r1 + add r1, r2, r1 + add r0, r1, r0 + add r1, r0, r4 + mov r0, r9, lsl #0x1e + add r6, r6, r1 + orr r9, r0, r9, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl FUN_020A4988 + mov r1, r6, lsl #0x5 + orr r2, r1, r6, lsr #0x1b + eor r1, r10, r9 + eor r1, r8, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r7, r7, r0 + mov r0, r10, lsl #0x1e + orr r10, r0, r10, lsr #0x2 + add r0, r5, #0x2 + and r5, r0, #0xf + mov r0, r5 + mov r1, r11 + bl FUN_020A4988 + mov r1, r7, lsl #0x5 + orr r2, r1, r7, lsr #0x1b + eor r1, r6, r10 + eor r1, r9, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r8, r8, r0 + mov r0, r6, lsl #0x1e + orr r6, r0, r6, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl FUN_020A4988 + mov r1, r8, lsl #0x5 + orr r2, r1, r8, lsr #0x1b + eor r1, r7, r6 + eor r1, r10, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r9, r9, r0 + mov r0, r7, lsl #0x1e + orr r7, r0, r7, lsr #0x2 + add r0, r5, #0x2 + mov r1, r11 + bl FUN_020A4988 + mov r1, r9, lsl #0x5 + orr r2, r1, r9, lsr #0x1b + eor r1, r8, r7 + eor r1, r6, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r10, r10, r0 + mov r0, r8, lsl #0x1e + orr r8, r0, r8, lsr #0x2 + ldr r0, [sp, #0xc] + add r5, r5, #0x3 + add r0, r0, #0x1 + str r0, [sp, #0xc] + cmp r0, #0x4 + blt _020A44A8 + mov r0, #0x0 + ldr r4, _020A48C4 ; =0x8F1BBCDC + str r0, [sp, #0x8] + add r11, sp, #0x10 +_020A45DC: + mov r0, r5 + mov r1, r11 + bl FUN_020A4988 + orr r2, r8, r7 + mov r1, r10, lsl #0x5 + and r3, r9, r2 + and r2, r8, r7 + orr r1, r1, r10, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r1, r1, r0 + mov r0, r9, lsl #0x1e + add r1, r1, r4 + add r6, r6, r1 + orr r9, r0, r9, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl FUN_020A4988 + orr r2, r9, r8 + mov r1, r6, lsl #0x5 + and r3, r10, r2 + and r2, r9, r8 + orr r1, r1, r6, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r7, r7, r0 + mov r0, r10, lsl #0x1e + orr r10, r0, r10, lsr #0x2 + add r0, r5, #0x2 + mov r1, r11 + bl FUN_020A4988 + orr r2, r10, r9 + mov r1, r7, lsl #0x5 + and r3, r6, r2 + and r2, r10, r9 + orr r1, r1, r7, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r8, r8, r0 + mov r0, r6, lsl #0x1e + orr r6, r0, r6, lsr #0x2 + add r0, r5, #0x3 + and r5, r0, #0xf + mov r0, r5 + mov r1, r11 + bl FUN_020A4988 + orr r2, r6, r10 + mov r1, r8, lsl #0x5 + and r3, r7, r2 + and r2, r6, r10 + orr r1, r1, r8, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r9, r9, r0 + mov r0, r7, lsl #0x1e + orr r7, r0, r7, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl FUN_020A4988 + orr r2, r7, r6 + mov r1, r9, lsl #0x5 + and r3, r8, r2 + and r2, r7, r6 + orr r1, r1, r9, lsr #0x1b + orr r2, r3, r2 + add r1, r1, r2 + add r0, r1, r0 + add r0, r0, r4 + add r10, r10, r0 + mov r0, r8, lsl #0x1e + orr r8, r0, r8, lsr #0x2 + ldr r0, [sp, #0x8] + add r5, r5, #0x2 + add r0, r0, #0x1 + str r0, [sp, #0x8] + cmp r0, #0x4 + blt _020A45DC + mov r0, #0x0 + ldr r4, _020A48C8 ; =0xCA62C1D6 + str r0, [sp, #0x4] + add r11, sp, #0x10 +_020A4738: + mov r0, r5 + mov r1, r11 + bl FUN_020A4988 + mov r2, r10, lsl #0x5 + eor r1, r9, r8 + orr r2, r2, r10, lsr #0x1b + eor r1, r7, r1 + add r1, r2, r1 + add r0, r1, r0 + add r1, r0, r4 + mov r0, r9, lsl #0x1e + add r6, r6, r1 + orr r9, r0, r9, lsr #0x2 + add r0, r5, #0x1 + mov r1, r11 + bl FUN_020A4988 + mov r1, r6, lsl #0x5 + orr r2, r1, r6, lsr #0x1b + eor r1, r10, r9 + eor r1, r8, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r7, r7, r0 + mov r0, r10, lsl #0x1e + orr r10, r0, r10, lsr #0x2 + add r0, r5, #0x2 + mov r1, r11 + bl FUN_020A4988 + mov r1, r7, lsl #0x5 + orr r2, r1, r7, lsr #0x1b + eor r1, r6, r10 + eor r1, r9, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r8, r8, r0 + mov r0, r6, lsl #0x1e + orr r6, r0, r6, lsr #0x2 + add r0, r5, #0x3 + mov r1, r11 + bl FUN_020A4988 + mov r1, r8, lsl #0x5 + orr r2, r1, r8, lsr #0x1b + eor r1, r7, r6 + eor r1, r10, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r9, r9, r0 + mov r0, r7, lsl #0x1e + orr r7, r0, r7, lsr #0x2 + add r0, r5, #0x4 + and r5, r0, #0xf + mov r0, r5 + mov r1, r11 + bl FUN_020A4988 + mov r1, r9, lsl #0x5 + orr r2, r1, r9, lsr #0x1b + eor r1, r8, r7 + eor r1, r6, r1 + add r1, r2, r1 + add r0, r1, r0 + add r0, r0, r4 + add r10, r10, r0 + mov r0, r8, lsl #0x1e + orr r8, r0, r8, lsr #0x2 + ldr r0, [sp, #0x4] + add r5, r5, #0x1 + add r0, r0, #0x1 + str r0, [sp, #0x4] + cmp r0, #0x4 + blt _020A4738 + ldr r0, [sp, #0x0] + ldr r0, [r0, #0x0] + add r1, r0, r10 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + ldr r0, [r0, #0x4] + add r1, r0, r9 + ldr r0, [sp, #0x0] + str r1, [r0, #0x4] + ldr r0, [r0, #0x8] + add r1, r0, r8 + ldr r0, [sp, #0x0] + str r1, [r0, #0x8] + ldr r0, [r0, #0xc] + add r1, r0, r7 + ldr r0, [sp, #0x0] + str r1, [r0, #0xc] + ldr r0, [r0, #0x10] + add r1, r0, r6 + ldr r0, [sp, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x54 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A48BC: .word 0x5A827999 +_020A48C0: .word 0x6ED9EBA1 +_020A48C4: .word 0x8F1BBCDC +_020A48C8: .word 0xCA62C1D6 + + arm_func_start FUN_020A48CC +FUN_020A48CC: ; 0x020A48CC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + addls sp, sp, #0x4 + mov r3, #0x0 + ldmlsia sp!, {r4-r5,lr} + bxls lr +_020A48E8: + add r12, r3, #0x1 + ldrb lr, [r1, r3] + add r4, r3, #0x2 + add r5, r3, #0x3 + ldrb r12, [r1, r12] + mov lr, lr, lsl #0x18 + add r3, r3, #0x4 + ldrb r4, [r1, r4] + orr r12, lr, r12, lsl #0x10 + ldrb lr, [r1, r5] + orr r4, r12, r4, lsl #0x8 + cmp r3, r2 + orr r4, lr, r4 + str r4, [r0], #0x4 + blo _020A48E8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A4930 +FUN_020A4930: ; 0x020A4930 + stmdb sp!, {lr} + sub sp, sp, #0x4 + movs r12, r2, lsr #0x2 + mov lr, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr +_020A494C: + ldr r3, [r1], #0x4 + add lr, lr, #0x1 + mov r2, r3, lsr #0x18 + strb r2, [r0, #0x0] + mov r2, r3, lsr #0x10 + strb r2, [r0, #0x1] + mov r2, r3, lsr #0x8 + strb r2, [r0, #0x2] + strb r3, [r0, #0x3] + cmp lr, r12 + add r0, r0, #0x4 + blo _020A494C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A4988 +FUN_020A4988: ; 0x020A4988 + add r2, r0, #0xd + add r12, r0, #0x2 + and r3, r2, #0xf + eor r2, r0, #0x8 + and r12, r12, #0xf + ldr r3, [r1, r3, lsl #0x2] + ldr r2, [r1, r2, lsl #0x2] + ldr r12, [r1, r12, lsl #0x2] + eor r2, r3, r2 + ldr r3, [r1, r0, lsl #0x2] + eor r2, r12, r2 + eor r3, r3, r2 + mov r2, r3, lsl #0x1 + orr r2, r2, r3, lsr #0x1f + str r2, [r1, r0, lsl #0x2] + ldr r0, [r1, r0, lsl #0x2] + bx lr + + arm_func_start FUN_020A49CC +FUN_020A49CC: ; 0x020A49CC + stmdb sp!, {r4-r6,lr} + cmp r2, #0x0 + add r3, r0, #0x2 + ldrb lr, [r0, #0x0] + ldrb r12, [r0, #0x1] + mov r4, #0x0 + ble _020A4A2C +_020A49E8: + add r5, lr, #0x1 + and lr, r5, #0xff + ldrb r6, [r3, lr] + add r5, r12, r6 + and r12, r5, #0xff + ldrb r5, [r3, r12] + strb r5, [r3, lr] + add r5, r6, r5 + strb r6, [r3, r12] + and r5, r5, #0xff + ldrb r6, [r1, r4] + ldrb r5, [r3, r5] + eor r5, r6, r5 + strb r5, [r1, r4] + add r4, r4, #0x1 + cmp r4, r2 + blt _020A49E8 +_020A4A2C: + strb lr, [r0, #0x0] + strb r12, [r0, #0x1] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_020A4A3C +FUN_020A4A3C: ; 0x020A4A3C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r3, #0x0 + strb r3, [r0, #0x0] + strb r3, [r0, #0x1] + add r7, r0, #0x2 +_020A4A54: + strb r3, [r7, r3] + add r3, r3, #0x1 + cmp r3, #0x100 + blt _020A4A54 + mov r5, #0x0 + mov r6, r5 + mov r4, r5 + mov r0, r5 +_020A4A74: + ldrb lr, [r7, r4] + ldrb r12, [r1, r5] + add r3, r5, #0x1 + and r5, r3, #0xff + add r3, lr, r12 + add r3, r6, r3 + and r6, r3, #0xff + ldrb r3, [r7, r6] + cmp r5, r2 + movge r5, r0 + strb r3, [r7, r4] + add r4, r4, #0x1 + strb lr, [r7, r6] + cmp r4, #0x100 + blt _020A4A74 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A4ABC +FUN_020A4ABC: ; 0x020A4ABC + ldrh r1, [r0, #0x0] + mov r0, #0x0 + bx lr + + arm_func_start FUN_020A4AC8 +FUN_020A4AC8: ; 0x020A4AC8 + ldrh r1, [r0, #0x0] + ldrh r0, [r0, #-0x2] + mov r0, r0, lsl #0x10 + bx lr + + arm_func_start FUN_020A4AD8 +FUN_020A4AD8: ; 0x020A4AD8 + ldrh r1, [r0, #0x0] + ldrh r2, [r0, #-0x2] + ldrh r3, [r0, #-0x4] + orr r0, r3, r2, lsl #0x10 + bx lr + + arm_func_start FUN_020A4AEC +FUN_020A4AEC: ; 0x020A4AEC + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #-0x2] + orr r1, r3, r2, lsl #0x10 + ldrh r2, [r0, #-0x4] + ldrh r3, [r0, #-0x6] + orr r0, r3, r2, lsl #0x10 + bx lr + + arm_func_start FUN_020A4B08 +FUN_020A4B08: ; 0x020A4B08 + sub r3, r2, #0x1 + cmp r2, #0x1 + add r0, r0, r3 + ble _020A4B40 +_020A4B18: + ldrh r3, [r1, #0x0] + sub r2, r2, #0x2 + sub r12, r0, #0x1 + strb r3, [r0, #0x0] + ldrh r3, [r1], #0x2 + cmp r2, #0x1 + sub r0, r0, #0x2 + mov r3, r3, asr #0x8 + strb r3, [r12, #0x0] + bgt _020A4B18 +_020A4B40: + cmp r2, #0x0 + ldrgth r1, [r1, #0x0] + strgtb r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020A4B50 +FUN_020A4B50: ; 0x020A4B50 + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r2, r3, lsl #0x1 + mov r1, #0x0 + mov r4, r0 + bl MI_CpuFill8 + sub r0, r5, #0x1 + cmp r5, #0x1 + add r6, r6, r0 + ble _020A4B9C +_020A4B7C: + ldrb r1, [r6, #0x0] + ldrb r0, [r6, #-0x1] + sub r5, r5, #0x2 + cmp r5, #0x1 + add r0, r1, r0, lsl #0x8 + strh r0, [r4], #0x2 + sub r6, r6, #0x2 + bgt _020A4B7C +_020A4B9C: + cmp r5, #0x0 + ldrgtb r0, [r6, #0x0] + strgth r0, [r4, #0x0] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start FUN_020A4BB0 +FUN_020A4BB0: ; 0x020A4BB0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r10, r3 + mov r3, #0x16 + mul r4, r10, r3 + ldr r3, _020A4DE0 ; =0x021C8EC8 + mov r11, r0 + ldr r3, [r3, #0x0] + mov r0, r4 + ldr r9, [sp, #0x58] + str r1, [sp, #0x14] + str r2, [sp, #0x18] + blx r3 + str r0, [sp, #0x1c] + cmp r0, #0x0 + addeq sp, sp, #0x34 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + mov r2, r4 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r0, [sp, #0x1c] + mov r1, r10 + add r6, r0, r10, lsl #0x1 + add r0, r6, r10, lsl #0x1 + add r5, r0, r10, lsl #0x1 + add r4, r5, r10, lsl #0x1 + str r0, [sp, #0x20] + add r0, r4, r10, lsl #0x1 + str r0, [sp, #0x24] + add r7, r0, r10, lsl #0x1 + mov r0, r9 + bl thunk_FUN_020a5a28 + mov r8, r0 + ldr r0, [sp, #0x1c] + mov r2, #0x1 + mov r1, r8, lsl #0x1 + strh r2, [r0, r1] + ldr r0, [sp, #0x20] + ldr r1, [sp, #0x1c] + str r0, [sp, #0x0] + mov r0, r6 + mov r2, r9 + mov r3, r10 + bl FUN_020A4F2C + ldr r1, [sp, #0x1c] + mov r0, r5 + mov r2, r6 + mov r3, r10 + bl FUN_020A5608 + mov r0, r6 + mov r1, r5 + mov r2, #0x1 + mov r3, r10 + bl FUN_020A5748 + str r10, [sp, #0x0] + mov r0, r6 + mov r1, r6 + mov r2, r9 + mov r3, #0x0 + str r7, [sp, #0x4] + bl FUN_020A5240 + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x1c] + mov r3, r10 + bl FUN_020A5608 + ldr r1, [sp, #0x20] + str r10, [sp, #0x0] + mov r0, #0x0 + mov r2, r9 + mov r3, r1 + str r7, [sp, #0x4] + bl FUN_020A5240 + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + mov r0, #0x0 + mov r2, r9 + mov r3, r11 + str r7, [sp, #0x4] + bl FUN_020A5240 + movs r0, r8, lsl #0x4 + mov r7, #0x0 + str r0, [sp, #0x28] + beq _020A4D9C + mov r0, #0x1 + str r0, [sp, #0x2c] + mov r0, #0x8000 + str r0, [sp, #0x30] +_020A4D14: + str r8, [sp, #0x0] + str r9, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x2c] + mov r0, r11 + mov r3, r10 + str r4, [sp, #0x10] + bl FUN_020A4DE8 + ldr r0, [sp, #0x30] + and r1, r7, #0xf + mov r0, r0, lsr r1 + sub r1, r8, r7, asr #0x4 + sub r1, r1, #0x1 + mov r2, r1, lsl #0x1 + ldr r1, [sp, #0x18] + ldrh r1, [r1, r2] + ands r0, r0, r1 + beq _020A4D8C + str r8, [sp, #0x0] + str r9, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x24] + ldr r2, [sp, #0x20] + mov r0, r11 + mov r3, r10 + str r4, [sp, #0x10] + bl FUN_020A4DE8 +_020A4D8C: + ldr r0, [sp, #0x28] + add r7, r7, #0x1 + cmp r7, r0 + blo _020A4D14 +_020A4D9C: + str r8, [sp, #0x0] + str r9, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldr r1, [sp, #0x24] + mov r0, r11 + mov r3, r10 + mov r2, #0x0 + str r4, [sp, #0x10] + bl FUN_020A4DE8 + ldr r1, _020A4DE4 ; =0x021C8EF4 + ldr r0, [sp, #0x1c] + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A4DE0: .word 0x021C8EC8 +_020A4DE4: .word 0x021C8EF4 + + arm_func_start FUN_020A4DE8 +FUN_020A4DE8: ; 0x020A4DE8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r5, r3 + mov r7, r5, lsl #0x1 + mov r8, r2 + mov r2, r7 + mov r6, r0 + mov r9, r1 + ldr r4, [sp, #0x20] + bl MI_CpuCopy8 + cmp r8, #0x1 + bne _020A4E2C + mov r0, r6 + mov r1, r9 + mov r2, r5 + bl FUN_020A5438 + b _020A4E48 +_020A4E2C: + cmp r8, #0x0 + beq _020A4E48 + mov r0, r6 + mov r1, r9 + mov r2, r8 + mov r3, r5 + bl FUN_020A5608 +_020A4E48: + ldr r0, [sp, #0x2c] + ldr r2, [sp, #0x28] + mov r1, r6 + mov r3, r4 + bl FUN_020A5608 + sub r1, r5, r4 + ldr r0, [sp, #0x2c] + mov r8, r1, lsl #0x1 + mov r2, r8 + add r0, r0, r4, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x2c] + ldr r2, [sp, #0x24] + mov r3, r5 + bl FUN_020A5608 + mov r0, r6 + mov r1, r6 + ldr r2, [sp, #0x30] + mov r3, r5 + bl FUN_020A5930 + mov r2, r8 + mov r0, r6 + add r1, r6, r4, lsl #0x1 + bl memmove + add r0, r6, r5, lsl #0x1 + sub r0, r0, r4, lsl #0x1 + mov r2, r4, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + ldr r1, [sp, #0x24] + mov r2, r5 + bl FUN_020A570C +_020A4ED4: ; 0x020A4ED4 + cmp r0, #0x0 + beq _020A4EF0 + cmp r0, #0x1 + beq _020A4F0C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_020A4EF0: + mov r0, r6 + mov r2, r7 + mov r1, #0x0 + bl MI_CpuFill8 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr +_020A4F0C: + ldr r2, [sp, #0x24] + mov r0, r6 + mov r1, r6 + mov r3, r5 + bl FUN_020A57BC + add sp, sp, #0x4 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start FUN_020A4F2C +FUN_020A4F2C: ; 0x020A4F2C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + ldr r9, [sp, #0x38] + mov r10, r3 + add r11, r9, r10, lsl #0x1 + add r8, r11, r10, lsl #0x1 + add r7, r8, r10, lsl #0x1 + add r6, r7, r10, lsl #0x1 + add r5, r6, r10, lsl #0x1 + str r0, [sp, #0x8] + mov r0, r1 + add r1, r5, r10, lsl #0x1 + str r1, [sp, #0x10] + mov r4, r10, lsl #0x1 + str r2, [sp, #0xc] + mov r1, r9 + mov r2, r4 + bl MI_CpuCopy8 + ldr r0, [sp, #0xc] + mov r1, r8 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, #0x1 + strh r0, [r8, r4] + mov r0, r9 + mov r1, r10 + bl FUN_020A59DC +_020A4F98: ; 0x020A4F98 + cmp r0, #0x0 + ble _020A503C +_020A4FA0: + ldr r3, [sp, #0x10] + str r10, [sp, #0x0] + str r3, [sp, #0x4] + mov r0, r11 + mov r1, r8 + mov r2, r9 + mov r3, r5 + bl FUN_020A5240 + mov r0, r9 + mov r1, r8 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r9 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r11 + mov r2, r7 + mov r3, r10 + bl FUN_020A5608 + mov r0, r5 + mov r1, r6 + mov r2, r5 + mov r3, r10 + bl FUN_020A57BC + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r5 + mov r1, r7 + mov r2, r4 + bl MI_CpuCopy8 + mov r0, r9 + mov r1, r10 + bl FUN_020A59DC +_020A5034: ; 0x020A5034 + cmp r0, #0x0 + bgt _020A4FA0 +_020A503C: + ldr r2, [sp, #0xc] + mov r0, r6 + mov r1, r6 + mov r3, r10 + bl FUN_020A5930 + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + ldr r4, [sp, #0x10] + str r10, [sp, #0x0] + mov r1, r6 + mov r0, #0x0 + str r4, [sp, #0x4] + bl FUN_020A5240 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_020A507C +FUN_020A507C: ; 0x020A507C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + ldr r4, _020A5238 ; =0x021C8EC8 + mov r8, r3 + ldr r3, [r4, #0x0] + mov r10, r0 + mov r0, r8, lsl #0x3 + ldr r7, [sp, #0x40] + str r1, [sp, #0x8] + mov r9, r2 + blx r3 + movs r6, r0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,lr} + bxeq lr + sub r1, r8, #0x1 + add r0, r10, #0x2 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + add r11, r6, r8, lsl #0x1 + bl MI_CpuFill8 + mov r2, #0x1 + mov r0, r9 + mov r1, r8 + strh r2, [r10, #0x0] + bl thunk_FUN_020a5a28 +_020A50E4: ; 0x020A50E4 + sub r0, r8, r0 + mov r5, r0, lsl #0x4 + mov r4, r8, lsl #0x4 + cmp r5, r4 + bhs _020A5140 + mov r0, #0x8000 +_020A50FC: + sub r1, r8, r5, asr #0x4 + sub r1, r1, #0x1 + mov r1, r1, lsl #0x1 + and r2, r5, #0xf + ldrh r1, [r9, r1] + mov r2, r0, lsr r2 + ands r1, r2, r1 + beq _020A5134 + ldr r0, [sp, #0x8] + mov r1, r10 + mov r2, r8, lsl #0x1 + bl MI_CpuCopy8 + add r5, r5, #0x1 + b _020A5140 +_020A5134: + add r5, r5, #0x1 + cmp r5, r4 + blo _020A50FC +_020A5140: + cmp r5, r4 + bhs _020A521C + mov r0, r8, lsl #0x1 + str r0, [sp, #0xc] + mov r0, #0x0 + str r0, [sp, #0x10] + mov r0, #0x8000 + str r0, [sp, #0x14] +_020A5160: + mov r0, r6 + mov r1, r10 + mov r2, r8 + bl FUN_020A5438 + ldr r2, [sp, #0xc] + mov r0, r6 + mov r1, r10 + bl MI_CpuCopy8 +_020A5180: ; 0x020A5180 + cmp r7, #0x0 + beq _020A51A4 + ldr r0, [sp, #0x10] + str r8, [sp, #0x0] + mov r1, r10 + mov r2, r7 + mov r3, r10 + str r11, [sp, #0x4] + bl FUN_020A5240 +_020A51A4: + sub r0, r8, r5, asr #0x4 + sub r0, r0, #0x1 + mov r1, r0, lsl #0x1 + ldr r0, [sp, #0x14] + and r2, r5, #0xf + mov r2, r0, lsr r2 + ldrh r0, [r9, r1] + ands r0, r2, r0 + beq _020A5210 + ldr r2, [sp, #0x8] + mov r0, r6 + mov r1, r10 + mov r3, r8 + bl FUN_020A5608 + ldr r2, [sp, #0xc] + mov r0, r6 + mov r1, r10 + bl MI_CpuCopy8 +_020A51EC: ; 0x020A51EC + cmp r7, #0x0 + beq _020A5210 + ldr r0, [sp, #0x10] + str r8, [sp, #0x0] + mov r1, r10 + mov r2, r7 + mov r3, r10 + str r11, [sp, #0x4] + bl FUN_020A5240 +_020A5210: + add r5, r5, #0x1 + cmp r5, r4 + blo _020A5160 +_020A521C: + ldr r1, _020A523C ; =0x021C8EF4 + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A5238: .word 0x021C8EC8 +_020A523C: .word 0x021C8EF4 + + arm_func_start FUN_020A5240 +FUN_020A5240: ; 0x020A5240 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + ldr r9, [sp, #0x48] + ldr r6, [sp, #0x4c] + str r1, [sp, #0x4] + add r5, r6, r9, lsl #0x1 + str r0, [sp, #0x0] + mov r10, r2 + mov r0, r5 + mov r2, r9, lsl #0x2 + mov r1, #0x0 + str r3, [sp, #0x8] + add r4, r5, r9, lsl #0x1 + bl MI_CpuFill8 + ldr r0, [sp, #0x4] + mov r1, r9 + bl thunk_FUN_020a5a28 + mov r11, r0 + mov r0, r10 + mov r1, r9 + bl thunk_FUN_020a5a28 + mov r7, r0 + cmp r11, #0x0 + ble _020A53E8 + cmp r7, #0x0 + ble _020A53E8 + sub r0, r9, r11 + add r0, r7, r0 + sub r8, r0, #0x1 + cmp r8, r9 + blt _020A52D0 + ldr r0, [sp, #0x4] + mov r1, r4 + mov r2, r9, lsl #0x1 + bl MI_CpuCopy8 + b _020A53E8 +_020A52D0: + ldr r0, [sp, #0x4] + add r1, r5, r8, lsl #0x1 + mov r2, r11, lsl #0x1 + bl MI_CpuCopy8 + cmp r7, #0x2 + ble _020A5304 + add r0, r10, r7, lsl #0x1 + sub r0, r0, #0x2 + mov r7, r7, lsl #0x1 + bl FUN_020A4AD8 + str r0, [sp, #0x14] + str r1, [sp, #0x10] + b _020A5340 +_020A5304: + cmp r7, #0x1 + ble _020A5328 + add r0, r10, r7, lsl #0x1 + sub r0, r0, #0x2 + mov r7, r7, lsl #0x1 + bl FUN_020A4AC8 + str r0, [sp, #0x14] + str r1, [sp, #0x10] + b _020A5340 +_020A5328: + add r0, r10, r7, lsl #0x1 + sub r0, r0, #0x2 + mov r7, r7, lsl #0x1 + bl FUN_020A4ABC + str r0, [sp, #0x14] + str r1, [sp, #0x10] +_020A5340: + cmp r8, r9 + bge _020A53E8 + mov r0, r9, lsl #0x1 + sub r0, r0, #0x1 + mov r11, r0, lsl #0x1 + add r0, r4, r7 + str r0, [sp, #0x1c] +_020A535C: + mov r1, r5 + add r0, r5, #0x2 + mov r2, r11 + bl memmove + ldr r0, [sp, #0x1c] + bl FUN_020A4AEC + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x10] + bl _ll_udiv + mov r7, r0 + ldr r0, _020A5434 ; =0x0000FFFF + cmp r7, r0 + movhi r7, r0 +_020A5390: + mov r2, r7, lsl #0x10 + mov r0, r6 + mov r1, r10 + mov r2, r2, lsr #0x10 + mov r3, r9 + bl FUN_020A5584 + mov r0, r4 + mov r1, r6 + mov r2, r9 + bl FUN_020A570C +_020A53B8: ; 0x020A53B8 + cmp r0, #0x0 + sublt r7, r7, #0x1 + blt _020A5390 + mov r0, r4 + mov r1, r4 + mov r2, r6 + mov r3, r9 + bl FUN_020A57BC + strh r7, [r5, #0x0] + add r8, r8, #0x1 + cmp r8, r9 + blt _020A535C +_020A53E8: + ldr r0, [sp, #0x0] + cmp r0, #0x0 + beq _020A5404 + ldr r1, [sp, #0x0] + mov r0, r5 + mov r2, r9, lsl #0x1 + bl MI_CpuCopy8 +_020A5404: + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x24 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + ldr r1, [sp, #0x8] + mov r0, r4 + mov r2, r9, lsl #0x1 + bl MI_CpuCopy8 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A5434: .word 0x0000FFFF + + arm_func_start FUN_020A5438 +FUN_020A5438: ; 0x020A5438 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + mov r8, r2 + mov r10, r0 + mov r0, r9 + mov r1, r8 + bl thunk_FUN_020a5a28 + mov r11, r0 + mov r0, r11, lsl #0x1 + cmp r0, r8 + bge _020A547C + sub r1, r8, r0 + add r0, r10, r0, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 +_020A547C: + cmp r11, #0x0 + mov r1, #0x0 + ble _020A54D4 + mov r0, r1 + sub r4, r8, #0x1 +_020A5490: + cmp r0, r8 + bge _020A54D4 + mov r2, r1, lsl #0x1 + ldrh r5, [r9, r2] + mov r2, r0, lsl #0x1 + cmp r0, r4 + mul r3, r5, r5 + strh r3, [r10, r2] + beq _020A54D4 + add r2, r0, #0x1 + add r1, r1, #0x1 + mov r3, r3, lsr #0x10 + mov r2, r2, lsl #0x1 + strh r3, [r10, r2] + cmp r1, r11 + add r0, r0, #0x2 + blt _020A5490 +_020A54D4: + cmp r11, #0x0 + mov r6, #0x0 + addle sp, sp, #0x4 + ldmleia sp!, {r4-r11,lr} + bxle lr +_020A54E8: + add r7, r6, #0x1 + b _020A5554 +_020A54F0: + mov r1, r7, lsl #0x1 + mov r0, r6, lsl #0x1 + ldrh r1, [r9, r1] + ldrh r0, [r9, r0] + mul r4, r1, r0 + ldr r0, _020A5580 ; =0x7FFF8000 + cmp r4, r0 + bhi _020A5528 + mov r0, r10 + mov r2, r5 + mov r3, r8 + mov r1, r4, lsl #0x1 + bl FUN_020A56C4 + b _020A5550 +_020A5528: + mov r0, r10 + mov r1, r4 + mov r2, r5 + mov r3, r8 + bl FUN_020A56C4 + mov r0, r10 + mov r1, r4 + mov r2, r5 + mov r3, r8 + bl FUN_020A56C4 +_020A5550: + add r7, r7, #0x1 +_020A5554: + cmp r7, r11 + bge _020A5568 + add r5, r6, r7 + cmp r5, r8 + blt _020A54F0 +_020A5568: + add r6, r6, #0x1 + cmp r6, r11 + blt _020A54E8 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + .balign 4 +_020A5580: .word 0x7FFF8000 + + arm_func_start FUN_020A5584 +FUN_020A5584: ; 0x020A5584 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + mov r4, r3 + mov r7, r0 + mov r0, r6 + mov r1, r4 + mov r5, r2 + bl thunk_FUN_020a5a28 + mov r3, #0x0 + mov r12, r3 + cmp r0, #0x0 + ble _020A55D8 +_020A55B8: + mov r2, r12, lsl #0x1 + ldrh r1, [r6, r2] + add r12, r12, #0x1 + cmp r12, r0 + mla r1, r5, r1, r3 + strh r1, [r7, r2] + mov r3, r1, lsr #0x10 + blt _020A55B8 +_020A55D8: + cmp r12, r4 + movlt r0, r12, lsl #0x1 + addlt r12, r12, #0x1 + sub r1, r4, r12 + strlth r3, [r7, r0] + mov r2, r1, lsl #0x1 + add r0, r7, r12, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A5608 +FUN_020A5608: ; 0x020A5608 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r8, r3 + mov r10, r1 + mov r9, r2 + mov r2, r8, lsl #0x1 + mov r1, #0x0 + mov r11, r0 + bl MI_CpuFill8 + mov r0, r10 + mov r1, r8 + bl thunk_FUN_020a5a28 + mov r5, r0 + mov r0, r9 + mov r1, r8 + bl thunk_FUN_020a5a28 +_020A5648: ; 0x020A5648 + str r0, [sp, #0x0] + cmp r0, #0x0 + mov r7, #0x0 + addle sp, sp, #0xc + ldmleia sp!, {r4-r11,lr} + bxle lr + str r7, [sp, #0x4] +_020A5664: + ldr r6, [sp, #0x4] + sub r4, r8, r7 + b _020A5698 +_020A5670: + mov r1, r6, lsl #0x1 + mov r0, r7, lsl #0x1 + ldrh r2, [r10, r1] + ldrh r1, [r9, r0] + mov r0, r11 + mov r3, r8 + mul r1, r2, r1 + add r2, r7, r6 + bl FUN_020A56C4 + add r6, r6, #0x1 +_020A5698: + cmp r6, r5 + bge _020A56A8 + cmp r6, r4 + blt _020A5670 +_020A56A8: + ldr r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + blt _020A5664 + add sp, sp, #0xc + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start FUN_020A56C4 +FUN_020A56C4: ; 0x020A56C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + b _020A56E8 +_020A56D0: + mov lr, r2, lsl #0x1 + ldrh r12, [r0, lr] + add r2, r2, #0x1 + add r1, r1, r12 + strh r1, [r0, lr] + mov r1, r1, lsr #0x10 +_020A56E8: + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r2, r3 + blt _020A56D0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A570C +FUN_020A570C: + subs r12, r2, #0x1 + bmi _020A5740 +_020A5714: + mov r2, r12, lsl #0x1 + ldrh r3, [r1, r2] + ldrh r2, [r0, r2] + cmp r2, r3 + movhi r0, #0x1 + bxhi lr + cmp r2, r3 + mvncc r0, #0x0 + bxcc lr + subs r12, r12, #0x1 + bpl _020A5714 +_020A5740: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020A5748 +FUN_020A5748: ; 0x020A5748 + stmdb sp!, {r4,lr} + cmp r3, #0x0 + mov r4, #0x0 + ble _020A5780 +_020A5758: + mov lr, r4, lsl #0x1 + ldrh r12, [r1, lr] + sub r12, r12, r2 + mov r2, r12, lsr #0x10 + strh r12, [r0, lr] + ands r2, r2, #0x1 + beq _020A5780 + add r4, r4, #0x1 + cmp r4, r3 + blt _020A5758 +_020A5780: + cmp r0, r1 + ldmeqia sp!, {r4,lr} + bxeq lr + add r4, r4, #0x1 + cmp r4, r3 + ldmgeia sp!, {r4,lr} + bxge lr +_020A579C: + mov r12, r4, lsl #0x1 + ldrh r2, [r1, r12] + add r4, r4, #0x1 + cmp r4, r3 + strh r2, [r0, r12] + blt _020A579C + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A57BC +FUN_020A57BC: ; 0x020A57BC + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r5, r3 + mov r8, r0 + mov r6, r2 + mov r0, r7 + mov r1, r5 + bl thunk_FUN_020a5a28 + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl thunk_FUN_020a5a28 +_020A57EC: ; 0x020A57EC + cmp r4, r0 + movlt r4, r0 + mov r3, #0x0 + cmp r4, r5 + addne r4, r4, #0x1 + mov r12, r3 + b _020A5828 +_020A5808: + mov r2, r12, lsl #0x1 + ldrh r1, [r7, r2] + ldrh r0, [r6, r2] + add r12, r12, #0x1 + sub r0, r1, r0 + add r0, r3, r0 + strh r0, [r8, r2] + mov r3, r0, asr #0x10 +_020A5828: + cmp r12, r4 + blt _020A5808 + cmp r12, r5 + bge _020A5840 + cmp r3, #0x0 + bne _020A5808 +_020A5840: + cmp r8, r7 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + cmp r8, r6 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + sub r1, r5, r12 + add r0, r8, r12, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020A5874 +FUN_020A5874: ; 0x020A5874 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r1 + cmp r3, #0x0 + mov r12, #0x0 + ble _020A58A8 +_020A588C: + mov r2, r12, lsl #0x1 + ldrh r1, [r0, r2] + add r12, r12, #0x1 + cmp r12, r3 + mvn r1, r1 + strh r1, [r0, r2] + blt _020A588C +_020A58A8: + mov r1, r0 + mov r2, #0x1 + bl FUN_020A58C0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A58C0 +FUN_020A58C0: ; 0x020A58C0 + stmdb sp!, {r4,lr} + cmp r3, #0x0 + mov r4, #0x0 + ble _020A58F4 +_020A58D0: + mov lr, r4, lsl #0x1 + ldrh r12, [r1, lr] + add r2, r2, r12 + strh r2, [r0, lr] + movs r2, r2, lsr #0x10 + beq _020A58F4 + add r4, r4, #0x1 + cmp r4, r3 + blt _020A58D0 +_020A58F4: + cmp r0, r1 + ldmeqia sp!, {r4,lr} + bxeq lr + add r4, r4, #0x1 + cmp r4, r3 + ldmgeia sp!, {r4,lr} + bxge lr +_020A5910: + mov r12, r4, lsl #0x1 + ldrh r2, [r1, r12] + add r4, r4, #0x1 + cmp r4, r3 + strh r2, [r0, r12] + blt _020A5910 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A5930 +FUN_020A5930: ; 0x020A5930 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r5, r3 + mov r8, r0 + mov r6, r2 + mov r0, r7 + mov r1, r5 + bl thunk_FUN_020a5a28 + mov r4, r0 + mov r0, r6 + mov r1, r5 + bl thunk_FUN_020a5a28 +_020A5960: ; 0x020A5960 + cmp r4, r0 + movlt r4, r0 + cmp r4, r5 + addne r4, r4, #0x1 + mov r3, #0x0 + mov r12, r3 + cmp r4, #0x0 + ble _020A59A8 +_020A5980: + mov r2, r12, lsl #0x1 + ldrh r1, [r7, r2] + ldrh r0, [r6, r2] + add r12, r12, #0x1 + cmp r12, r4 + add r0, r1, r0 + add r0, r3, r0 + strh r0, [r8, r2] + mov r3, r0, lsr #0x10 + blt _020A5980 +_020A59A8: + cmp r8, r7 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + cmp r8, r6 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + sub r1, r5, r12 + add r0, r8, r12, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, #0x0 + bl MI_CpuFill8 + ldmia sp!, {r4-r8,lr} + bx lr + + arm_func_start FUN_020A59DC +FUN_020A59DC: + stmdb sp!, {lr} + sub sp, sp, #0x4 + sub r2, r1, #0x1 + mov r2, r2, lsl #0x1 + ldrh r2, [r0, r2] + ands r2, r2, #0x8000 + addne sp, sp, #0x4 + mvnne r0, #0x0 + ldmneia sp!, {lr} + bxne lr + bl thunk_FUN_020a5a28 +_020A5A08: ; 0x020A5A08 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start thunk_FUN_020a5a28 +thunk_FUN_020a5a28: + b _020A5A28 +_020A5A24: + sub r1, r1, #0x1 +_020A5A28: + cmp r1, #0x0 + beq _020A5A44 + sub r2, r1, #0x1 + mov r2, r2, lsl #0x1 + ldrh r2, [r0, r2] + cmp r2, #0x0 + beq _020A5A24 +_020A5A44: + mov r0, r1 + bx lr + + arm_func_start FUN_020A5A4C +FUN_020A5A4C: ; 0x020A5A4C + mov r1, r0 + mov r0, #0x0 + mov r3, #0x1 +_020A5A58: + clz r2, r1 + rsbs r2, r2, #0x1f + bxcc lr + bic r1, r1, r3, lsl r2 + add r0, r0, #0x1 + b _020A5A58 + + arm_func_start FUN_020A5A70 +FUN_020A5A70: ; 0x020A5A70 + clz r0, r0 + bx lr + + arm_func_start FUN_020A5A78 +FUN_020A5A78: ; 0x020A5A78 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A5D80 + ldr r2, _020A5DA8 ; =0x021CA86C + mov r0, #0x0 + ldr r1, [r2, #0x0] + add r1, r1, #0x2000 + strb r0, [r1, #0x26b] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x82] + ldr r3, [r2, #0x0] + add r1, r3, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0xd + addls pc, pc, r1, lsl #0x2 + b _020A5D4C +_020A5AC4: + b _020A5D4C +_020A5AC8: + b _020A5D4C +_020A5ACC: + b _020A5D4C +_020A5AD0: + b _020A5D4C +_020A5AD4: + b _020A5D4C +_020A5AD8: + b _020A5AFC +_020A5ADC: + b _020A5AFC +_020A5AE0: + b _020A5B24 +_020A5AE4: + b _020A5B4C +_020A5AE8: + b _020A5C74 +_020A5AEC: + b _020A5CA4 +_020A5AF0: + b _020A5D4C +_020A5AF4: + b _020A5C74 +_020A5AF8: + b _020A5CD4 +_020A5AFC: + mov r0, #0x3 + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A5DAC ; =0x000008F5 + mov r2, r1 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5B24: + mov r0, #0x3 + bl FUN_020A6C38 +_020A5B2C: ; 0x020A5B2C + mov r0, #0x0 + ldr r3, _020A5DB0 ; =0x000008FB + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5B4C: + add r1, r3, #0x2200 + ldrh r4, [r1, #0xf8] + strh r0, [r1, #0xf8] + cmp r4, #0x12 + bne _020A5C44 + ldr r1, [r2, #0x0] + add r1, r1, #0x2100 + ldrh r3, [r1, #0x70] + and r12, r3, #0x24 + cmp r12, #0x24 + beq _020A5C44 + orr r3, r3, #0x24 + strh r3, [r1, #0x70] + ldr r2, [r2, #0x0] + add r1, r2, #0x2000 + ldr r3, [r1, #0x264] + and r1, r3, #0xc0000 + cmp r1, #0xc0000 + moveq r0, #0x1 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + and r1, r3, #0x30000 + cmp r1, #0x30000 + movne r3, #0x1 + add r1, r2, #0x2140 + ldr r0, _020A5DB4 ; =FUN_020A6144 + moveq r3, #0x0 + mov r2, #0x0 + str r12, [sp, #0x0] + bl WM_StartConnectEx + cmp r0, #0x2 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x3 + beq _020A5C14 + cmp r0, #0x8 + bne _020A5C14 + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =0x021CA86C + ldr r3, _020A5DB8 ; =0x0000091C + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C14: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =0x021CA86C + ldr r3, _020A5DBC ; =0x00000925 + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C44: + mov r0, #0x3 + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =0x021CA86C + ldr r3, _020A5DC0 ; =0x0000092D + ldr r0, [r0, #0x0] + mov r2, r4 + add r1, r0, #0x2140 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5C74: + mov r0, #0x3 + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =0x021CA86C + ldr r3, _020A5DC4 ; =0x00000935 + ldr r1, [r0, #0x0] + mov r0, #0x0 + add r1, r1, #0x2140 + mov r2, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5CA4: + mov r0, #0x3 + bl FUN_020A6C38 + ldr r1, _020A5DA8 ; =0x021CA86C + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A5DC8 ; =0x0000093C + mov r2, r0 + add r1, r1, #0x2140 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5CD4: + ldr r0, _020A5DCC ; =FUN_020A6768 + bl WM_PowerOff + cmp r0, #0x2 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x3 + beq _020A5D24 + cmp r0, #0x8 + bne _020A5D24 + mov r0, #0xc + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A5DD0 ; =0x0000094A + mov r2, r1 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D24: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A5DD4 ; =0x00000953 + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D4C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A5DA8 ; =0x021CA86C + ldr r3, _020A5DD8 ; =0x00000959 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + mov r1, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr +_020A5D80: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + mov r2, r1 + mov r0, #0x7 + mov r3, #0x960 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A5DA8: .word 0x021CA86C +_020A5DAC: .word 0x000008F5 +_020A5DB0: .word 0x000008FB +_020A5DB4: .word FUN_020A6144 +_020A5DB8: .word 0x0000091C +_020A5DBC: .word 0x00000925 +_020A5DC0: .word 0x0000092D +_020A5DC4: .word 0x00000935 +_020A5DC8: .word 0x0000093C +_020A5DCC: .word FUN_020A6768 +_020A5DD0: .word 0x0000094A +_020A5DD4: .word 0x00000953 +_020A5DD8: .word 0x00000959 + + arm_func_start FUN_020A5DDC +FUN_020A5DDC: ; 0x020A5DDC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A5EF4 +_020A5DF4: + b _020A5E08 +_020A5DF8: + b _020A5EDC +_020A5DFC: + b _020A5EF4 +_020A5E00: + b _020A5EDC +_020A5E04: + b _020A5EF4 +_020A5E08: + ldr r0, _020A5F24 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A5E38 + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5E38: + ldr r0, _020A5F28 ; =FUN_020A6058 + mov r1, #0x0 + bl WM_Disconnect + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r0, #0x3 + beq _020A5E94 + cmp r0, #0x8 + bne _020A5EAC + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A5F24 ; =0x021CA86C + ldr r3, _020A5F2C ; =0x000008B4 + ldr r1, [r0, #0x0] + mov r0, #0x1 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5E94: + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EAC: + mov r0, #0xb + bl FUN_020A6C38 + ldr r1, _020A5F24 ; =0x021CA86C + mov r0, #0x7 + ldr r1, [r1, #0x0] + mov r2, #0x0 + add r1, r1, #0x2140 + mov r3, #0x8c0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EDC: + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A5EF4: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A5F24 ; =0x021CA86C + ldr r3, _020A5F30 ; =0x000008D3 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A5F24: .word 0x021CA86C +_020A5F28: .word FUN_020A6058 +_020A5F2C: .word 0x000008B4 +_020A5F30: .word 0x000008D3 + + arm_func_start FUN_020A5F34 +FUN_020A5F34: ; 0x020A5F34 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r0, [r4, #0x2] + cmp r0, #0x0 + beq _020A5F50 + cmp r0, #0x4 + b _020A601C +_020A5F50: + ldrh r0, [r4, #0x4] + cmp r0, #0xe + beq _020A5F68 + cmp r0, #0xf + beq _020A5FC0 + b _020A5FF0 +_020A5F68: + ldr r0, _020A6048 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A5F94 + mov r0, #0x8 + bl FUN_020A6C38 + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A5F94: + mov r0, #0x9 + bl FUN_020A6C38 + ldr r1, _020A6048 ; =0x021CA86C + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A604C ; =0x00000872 + mov r2, r0 + add r1, r1, #0x2140 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A5FC0: + ldr r0, [r4, #0x8] + ldrh r0, [r0, #0xe] + mov r0, r0, asr #0x8 + and r0, r0, #0xff + bl FUN_020A89D0 + ldr r0, [r4, #0x8] + mov r1, #0x620 + bl DC_InvalidateRange + ldr r0, [r4, #0x8] + bl FUN_020A8934 + ldmia sp!, {r4,lr} + bx lr +_020A5FF0: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6048 ; =0x021CA86C + ldrh r2, [r4, #0x4] + ldr r0, [r0, #0x0] + ldr r3, _020A6050 ; =0x00000881 + add r1, r0, #0x2140 + mov r0, #0x7 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A601C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6048 ; =0x021CA86C + ldr r3, _020A6054 ; =0x0000088C + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A6048: .word 0x021CA86C +_020A604C: .word 0x00000872 +_020A6050: .word 0x00000881 +_020A6054: .word 0x0000088C + + arm_func_start FUN_020A6058 +FUN_020A6058: ; 0x020A6058 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6108 +_020A6070: + b _020A6084 +_020A6074: + b _020A60F0 +_020A6078: + b _020A6108 +_020A607C: + b _020A60F0 +_020A6080: + b _020A6108 +_020A6084: + ldr r0, _020A6138 ; =0x021CA86C + ldr r1, [r0, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A60B4 + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A60B4: + add r1, r1, #0x2200 + mov r2, #0x0 + mov r0, #0x3 + strh r2, [r1, #0x82] + bl FUN_020A6C38 + ldr r1, _020A6138 ; =0x021CA86C + mov r0, #0x0 + ldr r1, [r1, #0x0] + ldr r3, _020A613C ; =0x0000083D + mov r2, r0 + add r1, r1, #0x2140 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A60F0: + mov r0, #0xa + bl FUN_020A6C38 + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6108: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6138 ; =0x021CA86C + ldr r3, _020A6140 ; =0x0000084F + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6138: .word 0x021CA86C +_020A613C: .word 0x0000083D +_020A6140: .word 0x0000084F + + arm_func_start FUN_020A6144 +FUN_020A6144: ; 0x020A6144 + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r0, [r4, #0x2] + cmp r0, #0xc + addls pc, pc, r0, lsl #0x2 + b _020A638C +_020A615C: + b _020A6190 +_020A6160: + b _020A6364 +_020A6164: + b _020A638C +_020A6168: + b _020A638C +_020A616C: + b _020A638C +_020A6170: + b _020A638C +_020A6174: + b _020A6378 +_020A6178: + b _020A638C +_020A617C: + b _020A638C +_020A6180: + b _020A638C +_020A6184: + b _020A638C +_020A6188: + b _020A6378 +_020A618C: + b _020A6378 +_020A6190: + ldrh r0, [r4, #0x8] + cmp r0, #0x9 + bgt _020A61D0 + cmp r0, #0x0 + addge pc, pc, r0, lsl #0x2 + b _020A6338 +_020A61A8: ; 0x020A61A8 + b _020A6338 +_020A61AC: ; 0x020A61AC + b _020A6338 +_020A61B0: ; 0x020A61B0 + b _020A6338 +_020A61B4: ; 0x020A61B4 + b _020A6338 +_020A61B8: ; 0x020A61B8 + b _020A6338 +_020A61BC: ; 0x020A61BC + b _020A6338 +_020A61C0: ; 0x020A61C0 + b _020A63B0 +_020A61C4: ; 0x020A61C4 + b _020A6258 +_020A61C8: ; 0x020A61C8 + b _020A61E0 +_020A61CC: ; 0x020A61CC + b _020A61E0 +_020A61D0: + cmp r0, #0x1a + ldmeqia sp!, {r4,lr} + bxeq lr + b _020A6338 +_020A61E0: + ldr r1, _020A63B8 ; =0x021CA86C + ldr r2, [r1, #0x0] + add r0, r2, #0x2000 + ldr r0, [r0, #0x260] + sub r0, r0, #0x8 + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A63B0 +_020A6200: + b _020A6220 +_020A6204: + b _020A6230 +_020A6208: + b _020A6214 +_020A620C: + b _020A63B0 +_020A6210: + b _020A624C +_020A6214: + add r0, r2, #0x2200 + mov r1, #0x0 + strh r1, [r0, #0x82] +_020A6220: + mov r0, #0xc + bl FUN_020A6C38 + ldmia sp!, {r4,lr} + bx lr +_020A6230: + add r0, r2, #0x2200 + mov r2, #0x0 + strh r2, [r0, #0x82] + ldr r0, [r1, #0x0] + mov r1, #0x6 + add r0, r0, #0x2200 + strh r1, [r0, #0x80] +_020A624C: + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A6258: + ldr r1, _020A63B8 ; =0x021CA86C + ldr r3, [r1, #0x0] + add r0, r3, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0xc + bne _020A6284 + mov r0, #0x8 + bl FUN_020A6C38 + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A6284: + ldrh r2, [r4, #0xa] + cmp r2, #0x1 + blo _020A632C + ldr r0, _020A63BC ; =0x000007D7 + cmp r2, r0 + bhi _020A632C + add r0, r3, #0x2200 + strh r2, [r0, #0x82] + ldr r1, [r1, #0x0] + ldr r0, _020A63C0 ; =FUN_020A5F34 + add r1, r1, #0x1500 + mov r2, #0x620 + bl WM_StartDCF + cmp r0, #0x2 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x3 + beq _020A6300 + cmp r0, #0x8 + bne _020A6300 + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =0x021CA86C + ldr r3, _020A63C4 ; =0x000007ED + ldr r1, [r0, #0x0] + mov r0, #0x1 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A6300: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =0x021CA86C + ldr r3, _020A63C8 ; =0x000007F6 + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A632C: + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A6338: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =0x021CA86C + ldrh r2, [r4, #0x8] + ldr r0, [r0, #0x0] + ldr r3, _020A63CC ; =0x00000804 + add r1, r0, #0x2140 + mov r0, #0x7 + bl FUN_020A6D3C + ldmia sp!, {r4,lr} + bx lr +_020A6364: + ldr r0, _020A63B8 ; =0x021CA86C + ldrh r1, [r4, #0xe] + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0xf8] +_020A6378: + mov r0, #0x8 + bl FUN_020A6C38 + bl FUN_020A6B28 + ldmia sp!, {r4,lr} + bx lr +_020A638C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A63B8 ; =0x021CA86C + ldr r3, _020A63D0 ; =0x0000081B + ldr r1, [r0, #0x0] + mov r0, #0x7 + add r1, r1, #0x2140 + mov r2, #0x0 + bl FUN_020A6D3C +_020A63B0: + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A63B8: .word 0x021CA86C +_020A63BC: .word 0x000007D7 +_020A63C0: .word FUN_020A5F34 +_020A63C4: .word 0x000007ED +_020A63C8: .word 0x000007F6 +_020A63CC: .word 0x00000804 +_020A63D0: .word 0x0000081B + + arm_func_start FUN_020A63D4 +FUN_020A63D4: ; 0x020A63D4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r0, [r0, #0x2] + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6438 +_020A63EC: + b _020A6400 +_020A63F0: + b _020A6428 +_020A63F4: + b _020A6438 +_020A63F8: + b _020A6438 +_020A63FC: + b _020A6438 +_020A6400: + mov r0, #0x3 + bl FUN_020A6C38 +_020A6408: ; 0x020A6408 + mov r0, #0x0 + ldr r3, _020A6460 ; =0x00000783 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6428: + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6438: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6464 ; =0x00000793 + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6460: .word 0x00000783 +_020A6464: .word 0x00000793 + + arm_func_start FUN_020A6468 +FUN_020A6468: ; 0x020A6468 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r5, r0 + ldrh r0, [r5, #0x2] + mov r4, #0x14 + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6714 +_020A6488: + b _020A649C +_020A648C: + b _020A6704 +_020A6490: + b _020A6714 +_020A6494: + b _020A6714 +_020A6498: + b _020A6714 +_020A649C: + ldr r0, _020A673C ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x5 + bne _020A64D0 + mov r0, #0x6 + bl FUN_020A6C38 +_020A64BC: ; 0x020A64BC + mov r0, #0x0 + ldr r3, _020A6740 ; =0x00000704 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C +_020A64D0: + ldr r1, _020A673C ; =0x021CA86C + ldr r2, [r1, #0x0] + add r0, r2, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x6 + beq _020A64FC + cmp r0, #0x7 + beq _020A6674 + cmp r0, #0xd + beq _020A6684 + b _020A6694 +_020A64FC: + add r0, r2, #0x2200 + mov r2, #0x7 + strh r2, [r0, #0x80] + ldrh r0, [r5, #0x8] + cmp r0, #0x5 + bne _020A6588 + ldr r0, [r1, #0x0] + add r1, r0, #0x2200 + add r0, r0, #0x2000 + ldrh r1, [r1, #0x8c] + ldr r0, [r0, #0x288] + bl DC_InvalidateRange + ldrh r0, [r5, #0xe] + mov r4, #0x0 + cmp r0, #0x0 + ble _020A6588 + ldr r8, _020A6744 ; =0x0000071A + mov r6, r4 + mov r7, #0x7 +_020A6548: + add r0, r5, r4, lsl #0x1 + add r2, r5, r4, lsl #0x2 + ldrh r1, [r0, #0x50] + ldr r0, [r2, #0x10] + bl FUN_020A8298 + str r8, [sp, #0x0] + add r0, r5, r4, lsl #0x2 + ldr r2, [r0, #0x10] + mov r0, r7 + mov r1, r6 + mov r3, r5 + bl FUN_020A6CE0 + ldrh r0, [r5, #0xe] + add r4, r4, #0x1 + cmp r4, r0 + blt _020A6548 +_020A6588: + ldr r0, _020A673C ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r1, [r0, #0x264] + and r0, r1, #0xc00000 + cmp r0, #0xc00000 + bne _020A65F4 + ldr r0, _020A6748 ; =0x00003FFE + and r0, r1, r0 + bl FUN_020A5A4C + movs r1, r0 + beq _020A65F4 + ldr r0, _020A673C ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r6, [r0, #0x284] + mov r0, r6 + bl _u32_div_f +_020A65D0: ; 0x020A65D0 + cmp r1, #0x0 + bne _020A65F4 + ldr r4, _020A674C ; =0x00000728 + mov r1, #0x0 + mov r2, r6 + mov r3, r1 + mov r0, #0x8 + str r4, [sp, #0x0] + bl FUN_020A6CE0 +_020A65F4: + ldrh r0, [r5, #0xa] + bl FUN_020A5A70 + rsb r0, r0, #0x20 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl FUN_020A6D8C + ldr r1, _020A673C ; =0x021CA86C + mov r2, #0x1 + mov r2, r2, lsl r0 + ldr r0, [r1, #0x0] + mov r2, r2, asr #0x1 + add r0, r0, #0x2200 + strh r2, [r0, #0x8e] + ldr r0, [r1, #0x0] + add r1, r0, #0x2200 + add r0, r0, #0x2000 + ldrh r1, [r1, #0x8c] + ldr r0, [r0, #0x288] + bl DC_InvalidateRange + ldr r3, _020A673C ; =0x021CA86C + ldr r2, _020A6750 ; =0x00002288 + ldr r1, [r3, #0x0] + ldr r0, _020A6754 ; =FUN_020A6468 + add r1, r1, #0x2000 + ldr r4, [r1, #0x284] + add r4, r4, #0x1 + str r4, [r1, #0x284] + ldr r1, [r3, #0x0] + add r1, r1, r2 + bl WM_StartScanEx + mov r4, r0 + b _020A6694 +_020A6674: + ldr r0, _020A6758 ; =FUN_020A63D4 + bl WM_EndScan + mov r4, r0 + b _020A6694 +_020A6684: + bl FUN_020A6B28 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6694: + cmp r4, #0x2 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r8,lr} + bxeq lr + cmp r4, #0x3 + beq _020A66DC + cmp r4, #0x8 + bne _020A66DC + mov r0, #0xc + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A675C ; =0x00000753 + mov r2, r1 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A66DC: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6760 ; =0x0000075C + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6704: + bl FUN_020A6B28 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr +_020A6714: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6764 ; =0x0000076D + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x8 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A673C: .word 0x021CA86C +_020A6740: .word 0x00000704 +_020A6744: .word 0x0000071A +_020A6748: .word 0x00003FFE +_020A674C: .word 0x00000728 +_020A6750: .word 0x00002288 +_020A6754: .word FUN_020A6468 +_020A6758: .word FUN_020A63D4 +_020A675C: .word 0x00000753 +_020A6760: .word 0x0000075C +_020A6764: .word 0x0000076D + + arm_func_start FUN_020A6768 +FUN_020A6768: ; 0x020A6768 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x2] + mov r2, #0x14 + cmp r1, #0x4 + addls pc, pc, r1, lsl #0x2 + b _020A6A0C +_020A6784: + b _020A6798 +_020A6788: + b _020A69CC +_020A678C: + b _020A6A0C +_020A6790: + b _020A6A0C +_020A6794: + b _020A6A0C +_020A6798: + ldrh r0, [r0, #0x0] + cmp r0, #0x19 + bgt _020A67D4 + cmp r0, #0x19 + bge _020A68B4 + cmp r0, #0x6 + addls pc, pc, r0, lsl #0x2 + b _020A692C +_020A67B8: + b _020A692C +_020A67BC: + b _020A692C +_020A67C0: + b _020A692C +_020A67C4: + b _020A67F4 +_020A67C8: + b _020A6804 +_020A67CC: + b _020A6868 +_020A67D0: + b _020A6890 +_020A67D4: + cmp r0, #0x1d + bgt _020A67E8 + cmp r0, #0x1d + beq _020A68A0 + b _020A692C +_020A67E8: + cmp r0, #0x27 + beq _020A68DC + b _020A692C +_020A67F4: + ldr r0, _020A6A4C ; =FUN_020A6768 + bl WM_PowerOn + mov r2, r0 + b _020A692C +_020A6804: + bl WM_Finish +_020A6808: ; 0x020A6808 + cmp r0, #0x0 + beq _020A6818 + cmp r0, #0x4 + b _020A6840 +_020A6818: + mov r0, #0x1 + bl FUN_020A6C38 +_020A6820: ; 0x020A6820 + mov r0, #0x0 + ldr r3, _020A6A50 ; =0x00000663 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6840: + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + ldr r3, _020A6A54 ; =0x0000066C + mov r2, r1 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6868: + mov r0, #0x3 + bl FUN_020A6C38 +_020A6870: ; 0x020A6870 + mov r0, #0x0 + ldr r3, _020A6A58 ; =0x00000673 + mov r1, r0 + mov r2, r0 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6890: + ldr r0, _020A6A4C ; =FUN_020A6768 + bl WM_Disable + mov r2, r0 + b _020A692C +_020A68A0: + ldr r0, _020A6A4C ; =FUN_020A6768 + mov r1, #0x0 + bl WM_SetBeaconIndication + mov r2, r0 + b _020A692C +_020A68B4: + ldr r1, _020A6A5C ; =0x021CA86C + ldr r0, _020A6A4C ; =FUN_020A6768 + ldr r3, [r1, #0x0] + add r2, r3, #0x2000 + ldrb r1, [r2, #0x250] + ldrb r2, [r2, #0x251] + add r3, r3, #0x2200 + bl WM_SetWEPKeyEx + mov r2, r0 + b _020A692C +_020A68DC: + ldr r0, _020A6A5C ; =0x021CA86C + ldr r2, [r0, #0x0] + add r0, r2, #0x2000 + ldr r1, [r0, #0x264] + and r0, r1, #0xc0000 + cmp r0, #0xc0000 + moveq r0, #0x1 + movne r0, #0x0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + and r1, r1, #0x30000 + cmp r1, #0x30000 + movne r3, #0x1 + add r1, r2, #0x2140 + ldr r0, _020A6A60 ; =FUN_020A6144 + moveq r3, #0x0 + mov r2, #0x0 + str r12, [sp, #0x0] + bl WM_StartConnectEx + mov r2, r0 +_020A692C: + cmp r2, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + cmp r2, #0x3 + beq _020A698C + cmp r2, #0x8 + bne _020A698C + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =0x021CA86C + ldr r3, _020A6A64 ; =0x000006AF + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A698C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =0x021CA86C + ldr r3, _020A6A68 ; =0x000006B8 + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A69CC: + mov r0, #0xc + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =0x021CA86C + ldr r3, _020A6A6C ; =0x000006DE + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x1 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6A0C: + mov r0, #0xb + bl FUN_020A6C38 + ldr r0, _020A6A5C ; =0x021CA86C + ldr r3, _020A6A70 ; =0x000006E8 + ldr r1, [r0, #0x0] + mov r2, #0x0 + add r0, r1, #0x2200 + ldrsh r0, [r0, #0x80] + cmp r0, #0x5 + addeq r1, r1, #0x2140 + movne r1, #0x0 + mov r0, #0x7 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6A4C: .word FUN_020A6768 +_020A6A50: .word 0x00000663 +_020A6A54: .word 0x0000066C +_020A6A58: .word 0x00000673 +_020A6A5C: .word 0x021CA86C +_020A6A60: .word FUN_020A6144 +_020A6A64: .word 0x000006AF +_020A6A68: .word 0x000006B8 +_020A6A6C: .word 0x000006DE +_020A6A70: .word 0x000006E8 + + arm_func_start FUN_020A6A74 +FUN_020A6A74: ; 0x020A6A74 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x2] + cmp r1, #0x8 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r1, [r0, #0x4] + cmp r1, #0x16 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r0, [r0, #0x6] + cmp r0, #0x25 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A6B24 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + sub r0, r0, #0x8 + cmp r0, #0x4 + addls pc, pc, r0, lsl #0x2 + b _020A6B18 +_020A6AD8: + b _020A6AEC +_020A6ADC: + b _020A6B00 +_020A6AE0: + b _020A6B10 +_020A6AE4: + b _020A6B18 +_020A6AE8: + b _020A6B00 +_020A6AEC: + mov r0, #0xc + bl FUN_020A6C38 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6B00: + bl FUN_020A6B28 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A6B10: + mov r0, #0xc + bl FUN_020A6C38 +_020A6B18: + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6B24: .word 0x021CA86C + + arm_func_start FUN_020A6B28 +FUN_020A6B28: ; 0x020A6B28 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020A6B98 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r1, r0, #0x2000 + ldrb r0, [r1, #0x26b] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A6B9C ; =FUN_020A5A78 + mov r2, #0x1 + strb r2, [r1, #0x26b] + bl WM_Reset + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + mov r0, #0xb + bl FUN_020A6C38 + mov r1, #0x0 + mov r2, r1 + mov r0, #0x7 + mov r3, #0x610 + bl FUN_020A6D3C + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6B98: .word 0x021CA86C +_020A6B9C: .word FUN_020A5A78 + + arm_func_start FUN_020A6BA0 +FUN_020A6BA0: ; 0x020A6BA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A88A8 + bl FUN_020A6BBC + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A6BBC +FUN_020A6BBC: ; 0x020A6BBC + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + bl OS_DisableInterrupts + ldr r2, _020A6C28 ; =0x021CA86C + ldr r1, _020A6C2C ; =0x000022CC + ldr r2, [r2, #0x0] + mov r4, r0 + add r0, r2, r1 + bl OS_CancelAlarm + ldr r0, _020A6C28 ; =0x021CA86C + ldr r12, [r0, #0x0] + add r0, r12, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A6C14 + ldr r0, _020A6C2C ; =0x000022CC + ldr r1, _020A6C30 ; =0x022F5341 + mov r2, #0x0 + ldr r3, _020A6C34 ; =FUN_020A6BA0 + add r0, r12, r0 + str r2, [sp, #0x0] + bl OS_SetAlarm +_020A6C14: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x8 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A6C28: .word 0x021CA86C +_020A6C2C: .word 0x000022CC +_020A6C30: .word 0x022F5341 +_020A6C34: .word FUN_020A6BA0 + + arm_func_start FUN_020A6C38 +FUN_020A6C38: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020A6CD0 ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A6C78 + cmp r5, #0x9 + beq _020A6C78 + ldr r0, _020A6CD4 ; =0x000022CC + add r0, r1, r0 + bl OS_CancelAlarm +_020A6C78: + ldr r0, _020A6CD0 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0xb + strne r5, [r0, #0x260] + cmp r5, #0x9 + bne _020A6CBC + mov r2, #0x0 + ldr r0, _020A6CD0 ; =0x021CA86C + str r2, [sp, #0x0] + ldr r5, [r0, #0x0] + ldr r0, _020A6CD4 ; =0x000022CC + ldr r1, _020A6CD8 ; =0x022F5341 + ldr r3, _020A6CDC ; =FUN_020A6BA0 + add r0, r5, r0 + bl OS_SetAlarm +_020A6CBC: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6CD0: .word 0x021CA86C +_020A6CD4: .word 0x000022CC +_020A6CD8: .word 0x022F5341 +_020A6CDC: .word FUN_020A6BA0 + + arm_func_start FUN_020A6CE0 +FUN_020A6CE0: ; 0x020A6CE0 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr ip, _020A6D38 ; =0x021CA86C + ldr r12, [r12, #0x0] + add r12, r12, #0x2000 + ldr lr, [r12, #0x27c] + cmp lr, #0x0 + addeq sp, sp, #0x14 + ldmeqia sp!, {lr} + bxeq lr + ldr lr, [sp, #0x18] + strh r0, [sp, #0x0] + str r2, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + strh r1, [sp, #0x2] + ldr r1, [r12, #0x27c] + add r0, sp, #0x0 + blx r1 + add sp, sp, #0x14 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A6D38: .word 0x021CA86C + + arm_func_start FUN_020A6D3C +FUN_020A6D3C: ; 0x020A6D3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr ip, _020A6D88 ; =0x021CA86C + mov r5, r0 + ldr r0, [r12, #0x0] + mov r4, r1 + add r1, r0, #0x2200 + ldrsh r0, [r1, #0x80] + mov r12, #0x0 + mov lr, r2 + strh r12, [r1, #0x80] + str r3, [sp, #0x0] + mov r1, r5 + mov r2, r4 + mov r3, lr + bl FUN_020A6CE0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6D88: .word 0x021CA86C + + arm_func_start FUN_020A6D8C +FUN_020A6D8C: ; 0x020A6D8C + stmdb sp!, {r4-r6,lr} + ldr r1, _020A6E24 ; =0x021CA86C + mov r2, r0 + ldr r1, [r1, #0x0] + mov r3, #0x0 + add r1, r1, #0x2000 + ldr r1, [r1, #0x264] + mov r6, #0x1 + ldr r5, _020A6E28 ; =0x4EC4EC4F + ldr r4, _020A6E2C ; =0x0000000D +_020A6DB4: + smull r12, lr, r5, r2 + mov lr, lr, asr #0x2 + mov r12, r2, lsr #0x1f + add lr, r12, lr + smull r12, lr, r4, lr + sub lr, r2, r12 + add r12, lr, #0x1 + mov r12, r6, lsl r12 + ands r12, r1, r12 + bne _020A6DEC + add r3, r3, #0x1 + cmp r3, #0xd + add r2, r2, #0x1 + blt _020A6DB4 +_020A6DEC: + ldr r1, _020A6E28 ; =0x4EC4EC4F + add r3, r0, r3 + smull r0, r4, r1, r3 + mov r4, r4, asr #0x2 + mov r0, r3, lsr #0x1f + ldr r2, _020A6E2C ; =0x0000000D + add r4, r0, r4 + smull r0, r1, r2, r4 + sub r4, r3, r0 + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A6E24: .word 0x021CA86C +_020A6E28: .word 0x4EC4EC4F +_020A6E2C: .word 0x0000000D + + arm_func_start FUN_020A6E30 +FUN_020A6E30: ; 0x020A6E30 + ldr r0, _020A6E48 ; =0x021CA86C + ldr r1, _020A6E4C ; =0x00AAA082 + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x264] + bx lr + .balign 4 +_020A6E48: .word 0x021CA86C +_020A6E4C: .word 0x00AAA082 + + arm_func_start FUN_020A6E50 +FUN_020A6E50: ; 0x020A6E50 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r0, r2 + mov r4, r1 + bl FUN_020A7148 + ldr r2, _020A6FF4 ; =0x021CA86C + mov r3, #0x400 + ldr r1, [r2, #0x0] + mov r0, #0x0 + add r12, r1, #0x1500 + add r1, r1, #0x2000 + str r12, [r1, #0x288] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r3, [r1, #0x8c] + bl FUN_020A6D8C + ldr r1, _020A6FF4 ; =0x021CA86C + mov r2, #0x1 + mov r2, r2, lsl r0 + ldr r0, [r1, #0x0] + mov r2, r2, asr #0x1 + add r0, r0, #0x2200 + strh r2, [r0, #0x8e] + ldr r0, [r1, #0x0] + add r0, r0, #0x2200 + ldrh r0, [r0, #0x68] + cmp r0, #0x0 + bne _020A6EC8 + bl WM_GetDispersionScanPeriod +_020A6EC8: + ldr r2, _020A6FF4 ; =0x021CA86C + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x90] + ldr r1, [r2, #0x0] + add r0, r1, #0x2000 + ldr r0, [r0, #0x264] + and r0, r0, #0x300000 + cmp r0, #0x300000 + movne r2, #0x1 + moveq r2, #0x0 + add r0, r1, #0x2200 + strh r2, [r0, #0x98] + cmp r5, #0x0 + bne _020A6F24 + ldr r0, _020A6FF4 ; =0x021CA86C + ldr r1, _020A6FF8 ; =0x00002292 + ldr r2, [r0, #0x0] + ldr r0, _020A6FFC ; =0x020FF590 + add r1, r2, r1 + mov r2, #0x6 + bl MI_CpuCopy8 + b _020A6F40 +_020A6F24: + ldr r0, _020A6FF4 ; =0x021CA86C + ldr r1, _020A6FF8 ; =0x00002292 + ldr r2, [r0, #0x0] + mov r0, r5 + add r1, r2, r1 + mov r2, #0x6 + bl MI_CpuCopy8 +_020A6F40: + cmp r4, #0x0 + beq _020A6F54 + ldr r0, _020A7000 ; =0x020FF598 + cmp r4, r0 + bne _020A6F88 +_020A6F54: + ldr r0, _020A6FF4 ; =0x021CA86C + ldr r1, _020A7004 ; =0x0000229C + ldr r2, [r0, #0x0] + ldr r0, _020A7000 ; =0x020FF598 + add r1, r2, r1 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, _020A6FF4 ; =0x021CA86C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x9a] + b _020A6FD4 +_020A6F88: + ldr r0, _020A6FF4 ; =0x021CA86C + ldr r1, _020A7004 ; =0x0000229C + ldr r2, [r0, #0x0] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x20 + bl MI_CpuCopy8 + mov r1, #0x0 +_020A6FA8: + ldrb r0, [r4, #0x0] + cmp r0, #0x0 + beq _020A6FC4 + add r1, r1, #0x1 + cmp r1, #0x20 + add r4, r4, #0x1 + blt _020A6FA8 +_020A6FC4: + ldr r0, _020A6FF4 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x9a] +_020A6FD4: + ldr r0, _020A6FF4 ; =0x021CA86C + mov r1, #0x0 + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x284] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A6FF4: .word 0x021CA86C +_020A6FF8: .word 0x00002292 +_020A6FFC: .word 0x020FF590 +_020A7000: .word 0x020FF598 +_020A7004: .word 0x0000229C + + arm_func_start FUN_020A7008 +FUN_020A7008: ; 0x020A7008 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + bne _020A705C + ldr r1, _020A7134 ; =0x021CA86C + mov r3, #0x3 + ldr r0, [r1, #0x0] + mov r2, #0x0 + add r0, r0, #0x2000 + str r3, [r0, #0x26c] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x270] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x274] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x278] + b _020A7118 +_020A705C: + ldr r1, _020A7134 ; =0x021CA86C + ldr r2, [r5, #0x0] + ldr r0, [r1, #0x0] + and r2, r2, #0x3 + add r0, r0, #0x2000 + str r2, [r0, #0x26c] + ldr r3, [r5, #0x4] + ldr r0, [r5, #0x8] + and r2, r3, #0x3 + rsb r2, r2, #0x4 + and r2, r2, #0x3 + add r2, r2, #0xc + cmp r2, r0 + bls _020A70B4 + ldr r0, [r1, #0x0] + mov r2, #0x0 + add r0, r0, #0x2000 + str r2, [r0, #0x270] + ldr r0, [r1, #0x0] + add r0, r0, #0x2000 + str r2, [r0, #0x274] + b _020A7104 +_020A70B4: + ldr r0, [r1, #0x0] + add r2, r3, #0x3 + bic r2, r2, #0x3 + add r0, r0, #0x2000 + str r2, [r0, #0x270] + ldr r2, [r5, #0x4] + ldr r0, [r1, #0x0] + and r2, r2, #0x3 + rsb r2, r2, #0x4 + ldr r3, [r5, #0x8] + and r2, r2, #0x3 + sub r2, r3, r2 + add r0, r0, #0x2000 + str r2, [r0, #0x274] + ldr r0, [r1, #0x0] + mov r1, #0x0 + add r2, r0, #0x2000 + ldr r0, [r2, #0x270] + ldr r2, [r2, #0x274] + bl MI_CpuFill8 +_020A7104: + ldr r0, _020A7134 ; =0x021CA86C + ldr r1, [r5, #0xc] + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r1, [r0, #0x278] +_020A7118: + ldr r0, _020A7134 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r0, r0, #0x2000 + str r4, [r0, #0x27c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A7134: .word 0x021CA86C + + arm_func_start FUN_020A7138 +FUN_020A7138: + ldr r0, _020A7144 ; =0x021CA86C + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020A7144: .word 0x021CA86C + + arm_func_start FUN_020A7148 +FUN_020A7148: ; 0x020A7148 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + ldr r1, _020A71EC ; =0x021CA86C + mov r2, #0x0 + ldr r1, [r1, #0x0] + add r3, r1, #0x2000 + cmp r1, #0x0 + ldr r4, [r3, #0x264] + bne _020A7188 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7188: + ands r3, r5, #0x8000 + beq _020A71A4 + ldr r3, _020A71F0 ; =0x00003FFE + orr r2, r2, r3 + ands r3, r5, r3 + ldreq r3, _020A71F4 ; =0x0000A082 + orreq r5, r5, r3 +_020A71A4: + ands r3, r5, #0x20000 + orrne r2, r2, #0x10000 + ands r3, r5, #0x80000 + orrne r2, r2, #0x40000 + ands r3, r5, #0x200000 + orrne r2, r2, #0x100000 + ands r3, r5, #0x800000 + orrne r2, r2, #0x400000 + mvn r2, r2 + and r2, r4, r2 + orr r2, r5, r2 + add r1, r1, #0x2000 + str r2, [r1, #0x264] + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A71EC: .word 0x021CA86C +_020A71F0: .word 0x00003FFE +_020A71F4: .word 0x0000A082 + + arm_func_start FUN_020A71F8 +FUN_020A71F8: ; 0x020A71F8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A7228 ; =0x021CA86C + mov r4, #0x0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + addne r1, r1, #0x2000 + ldrne r4, [r1, #0x260] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A7228: .word 0x021CA86C + + arm_func_start FUN_020A722C +FUN_020A722C: ; 0x020A722C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r1, _020A747C ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7260 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7260: + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0xd + addls pc, pc, r2, lsl #0x2 + b _020A7308 +_020A7274: + b _020A7308 +_020A7278: + b _020A72C0 +_020A727C: + b _020A7308 +_020A7280: + b _020A7320 +_020A7284: + b _020A7308 +_020A7288: + b _020A7308 +_020A728C: + b _020A72D4 +_020A7290: + b _020A7308 +_020A7294: + b _020A7308 +_020A7298: + b _020A7320 +_020A729C: + b _020A7308 +_020A72A0: + b _020A7308 +_020A72A4: + b _020A7320 +_020A72A8: + b _020A72AC +_020A72AC: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r5,lr} + bx lr +_020A72C0: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A72D4: + mov r0, #0xd + bl FUN_020A6C38 + ldr r1, _020A747C ; =0x021CA86C + mov r0, r4 + ldr r1, [r1, #0x0] + mov r2, #0x9 + add r1, r1, #0x2200 + strh r2, [r1, #0x80] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x3 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7308: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7320: + ldrb r0, [r1, #0x26b] + cmp r0, #0x1 + bne _020A734C + mov r0, #0xd + bl FUN_020A6C38 + ldr r0, _020A747C ; =0x021CA86C + mov r1, #0x9 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7464 +_020A734C: + bl WMi_GetStatusAddress + mov r5, r0 + mov r1, #0x2 + bl DC_InvalidateRange + ldrh r0, [r5, #0x0] + cmp r0, #0x0 + beq _020A737C + cmp r0, #0x1 + beq _020A73BC + cmp r0, #0x2 + beq _020A73C8 + b _020A73D4 +_020A737C: + bl WM_Finish +_020A7380: ; 0x020A7380 + cmp r0, #0x0 + bne _020A73F0 + mov r0, #0x1 + bl FUN_020A6C38 + ldr r1, _020A747C ; =0x021CA86C + mov r0, r4 + ldr r1, [r1, #0x0] + mov r2, #0x0 + add r1, r1, #0x2200 + strh r2, [r1, #0x80] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A73BC: + ldr r0, _020A7480 ; =FUN_020A6768 + bl WM_Disable + b _020A73F0 +_020A73C8: + ldr r0, _020A7480 ; =FUN_020A6768 + bl WM_PowerOff + b _020A73F0 +_020A73D4: + ldr r1, _020A747C ; =0x021CA86C + ldr r0, _020A7484 ; =FUN_020A5A78 + ldr r1, [r1, #0x0] + mov r2, #0x1 + add r1, r1, #0x2000 + strb r2, [r1, #0x26b] + bl WM_Reset +_020A73F0: + cmp r0, #0x2 + beq _020A740C + cmp r0, #0x3 + beq _020A7444 + cmp r0, #0x8 + beq _020A742C + b _020A7444 +_020A740C: + mov r0, #0xd + bl FUN_020A6C38 + ldr r0, _020A747C ; =0x021CA86C + mov r1, #0x9 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7464 +_020A742C: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7444: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x7 + ldmia sp!, {r4-r5,lr} + bx lr +_020A7464: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A747C: .word 0x021CA86C +_020A7480: .word FUN_020A6768 +_020A7484: .word FUN_020A5A78 + + arm_func_start FUN_020A7488 +FUN_020A7488: ; 0x020A7488 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A75B8 ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A74B4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A74B4: + add r1, r1, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x3 + beq _020A74E4 + cmp r2, #0x9 + beq _020A7504 + cmp r2, #0xa + bne _020A74F4 + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4,lr} + bx lr +_020A74E4: + bl OS_RestoreInterrupts +_020A74E8: ; 0x020A74E8 + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr +_020A74F4: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A7504: + ldrb r0, [r1, #0x26b] + cmp r0, #0x1 + bne _020A7530 + mov r0, #0xa + bl FUN_020A6C38 + ldr r0, _020A75B8 ; =0x021CA86C + mov r1, #0x6 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A75A4 +_020A7530: + ldr r0, _020A75BC ; =FUN_020A5DDC + bl WM_EndDCF + cmp r0, #0x2 + beq _020A7554 + cmp r0, #0x3 + beq _020A7588 + cmp r0, #0x8 + beq _020A7574 + b _020A7588 +_020A7554: + mov r0, #0xa + bl FUN_020A6C38 + ldr r0, _020A75B8 ; =0x021CA86C + mov r1, #0x6 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A75A4 +_020A7574: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x4 + ldmia sp!, {r4,lr} + bx lr +_020A7588: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4,lr} + bx lr +_020A75A4: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A75B8: .word 0x021CA86C +_020A75BC: .word FUN_020A5DDC + + arm_func_start FUN_020A75C0 +FUN_020A75C0: ; 0x020A75C0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_DisableInterrupts + ldr r2, _020A7814 ; =0x021CA86C + mov r4, r0 + ldr r12, [r2, #0x0] + cmp r12, #0x0 + bne _020A7600 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7600: + add r1, r12, #0x2000 + ldr r3, [r1, #0x260] + cmp r3, #0x3 + beq _020A7624 + cmp r3, #0x8 + beq _020A7734 + cmp r3, #0x9 + beq _020A7748 + b _020A775C +_020A7624: + cmp r7, #0x0 + bne _020A7640 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7640: + ldrh r3, [r7, #0x3c] + cmp r3, #0x0 + beq _020A7660 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7660: + cmp r6, #0x0 + beq _020A76E8 + ldrb r3, [r6, #0x0] + cmp r3, #0x4 + bhs _020A7680 + ldrb r0, [r6, #0x1] + cmp r0, #0x4 + blo _020A7698 +_020A7680: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7698: + strb r3, [r1, #0x250] + ldr r0, [r2, #0x0] + ldrb r1, [r6, #0x1] + add r0, r0, #0x2000 + strb r1, [r0, #0x251] + ldr r1, [r2, #0x0] + add r0, r1, #0x2000 + ldrb r0, [r0, #0x250] + cmp r0, #0x0 + bne _020A76D4 + add r0, r1, #0x2200 + mov r1, #0x0 + mov r2, #0x50 + bl MI_CpuFill8 + b _020A76F8 +_020A76D4: + add r0, r6, #0x2 + add r1, r1, #0x2200 + mov r2, #0x50 + bl MI_CpuCopy8 + b _020A76F8 +_020A76E8: + add r0, r12, #0x2200 + mov r1, #0x0 + mov r2, #0x52 + bl MI_CpuFill8 +_020A76F8: + ldr r1, _020A7814 ; =0x021CA86C + mov r0, r7 + ldr r1, [r1, #0x0] + mov r2, #0xc0 + add r1, r1, #0x2140 + bl MI_CpuCopy8 + ldr r1, _020A7814 ; =0x021CA86C + mov r0, r5 + ldr r1, [r1, #0x0] + add r1, r1, #0x2100 + ldrh r2, [r1, #0x6e] + orr r2, r2, #0x3 + strh r2, [r1, #0x70] + bl FUN_020A7148 + b _020A7770 +_020A7734: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7748: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020A775C: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7770: + ldr r1, _020A7818 ; =0x0000FFFF + ldr r0, _020A781C ; =FUN_020A6768 + mov r3, r1 + mov r2, #0x50 + str r1, [sp, #0x0] + bl WM_SetLifeTime + cmp r0, #0x2 + beq _020A77A4 + cmp r0, #0x3 + beq _020A77DC + cmp r0, #0x8 + beq _020A77C4 + b _020A77DC +_020A77A4: + mov r0, #0x8 + bl FUN_020A6C38 + ldr r0, _020A7814 ; =0x021CA86C + mov r1, #0x5 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A77FC +_020A77C4: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020A77DC: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x7 + ldmia sp!, {r4-r7,lr} + bx lr +_020A77FC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A7814: .word 0x021CA86C +_020A7818: .word 0x0000FFFF +_020A781C: .word FUN_020A6768 + + arm_func_start FUN_020A7820 +FUN_020A7820: ; 0x020A7820 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A78D4 ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A784C + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A784C: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x3 + beq _020A78A0 + cmp r1, #0x6 + beq _020A7870 + cmp r1, #0x7 + beq _020A7890 + b _020A78B0 +_020A7870: + mov r0, #0x7 + bl FUN_020A6C38 + ldr r0, _020A78D4 ; =0x021CA86C + mov r1, #0x4 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A78C0 +_020A7890: + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4,lr} + bx lr +_020A78A0: + bl OS_RestoreInterrupts +_020A78A4: ; 0x020A78A4 + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr +_020A78B0: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A78C0: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A78D4: .word 0x021CA86C + + arm_func_start FUN_020A78D8 +FUN_020A78D8: ; 0x020A78D8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl OS_DisableInterrupts + ldr r1, _020A7A84 ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7918 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7918: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x3 + beq _020A79A0 + cmp r1, #0x5 + beq _020A793C + cmp r1, #0x6 + beq _020A7964 + b _020A798C +_020A793C: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_020A6E50 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x2 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7964: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_020A6E50 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,lr} + bx lr +_020A798C: + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r7,lr} + bx lr +_020A79A0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + bl FUN_020A6E50 + ldr r0, _020A7A84 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r1, r0, #0x2200 + add r0, r0, #0x2000 + ldrh r1, [r1, #0x8c] + ldr r0, [r0, #0x288] + bl DC_InvalidateRange + ldr r3, _020A7A84 ; =0x021CA86C + ldr r2, _020A7A88 ; =0x00002288 + ldr r1, [r3, #0x0] + ldr r0, _020A7A8C ; =FUN_020A6468 + add r1, r1, #0x2000 + ldr r5, [r1, #0x284] + add r5, r5, #0x1 + str r5, [r1, #0x284] + ldr r1, [r3, #0x0] + add r1, r1, r2 + bl WM_StartScanEx + cmp r0, #0x2 + beq _020A7A14 + cmp r0, #0x3 + beq _020A7A4C + cmp r0, #0x8 + beq _020A7A34 + b _020A7A4C +_020A7A14: + mov r0, #0x5 + bl FUN_020A6C38 + ldr r0, _020A7A84 ; =0x021CA86C + mov r1, #0x3 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7A6C +_020A7A34: + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7A4C: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x7 + ldmia sp!, {r4-r7,lr} + bx lr +_020A7A6C: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A7A84: .word 0x021CA86C +_020A7A88: .word 0x00002288 +_020A7A8C: .word FUN_020A6468 + + arm_func_start FUN_020A7A90 +FUN_020A7A90: ; 0x020A7A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020A7AA8 + cmp r1, #0x0 + bne _020A7AB8 +_020A7AA8: + bl FUN_020A7820 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr +_020A7AB8: + bl FUN_020A78D8 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A7AC8 +FUN_020A7AC8: ; 0x020A7AC8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + ldr r1, _020A7BCC ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7AF4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A7AF4: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x1 + beq _020A7B24 + cmp r1, #0x3 + beq _020A7B44 + cmp r1, #0x4 + bne _020A7B34 + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4,lr} + bx lr +_020A7B24: + bl OS_RestoreInterrupts +_020A7B28: ; 0x020A7B28 + mov r0, #0x0 + ldmia sp!, {r4,lr} + bx lr +_020A7B34: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4,lr} + bx lr +_020A7B44: + ldr r0, _020A7BD0 ; =FUN_020A6768 + bl WM_PowerOff + cmp r0, #0x2 + beq _020A7B68 + cmp r0, #0x3 + beq _020A7B9C + cmp r0, #0x8 + beq _020A7B88 + b _020A7B9C +_020A7B68: + mov r0, #0x4 + bl FUN_020A6C38 + ldr r0, _020A7BCC ; =0x021CA86C + mov r1, #0x2 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7BB8 +_020A7B88: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x4 + ldmia sp!, {r4,lr} + bx lr +_020A7B9C: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4,lr} + bx lr +_020A7BB8: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A7BCC: .word 0x021CA86C +_020A7BD0: .word FUN_020A6768 + + arm_func_start FUN_020A7BD4 +FUN_020A7BD4: ; 0x020A7BD4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r1, _020A7E00 ; =0x021CA86C + mov r4, r0 + ldr r1, [r1, #0x0] + cmp r1, #0x0 + bne _020A7C08 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C08: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x1 + beq _020A7C2C + cmp r1, #0x2 + beq _020A7C3C + cmp r1, #0x3 + beq _020A7C4C + b _020A7C5C +_020A7C2C: + mov r0, r6 + mov r1, r5 + bl FUN_020A7008 + b _020A7C6C +_020A7C3C: + bl OS_RestoreInterrupts + mov r0, #0x2 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C4C: + bl OS_RestoreInterrupts +_020A7C50: ; 0x020A7C50 + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C5C: + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7C6C: + ldr r0, _020A7E00 ; =0x021CA86C + ldr r0, [r0, #0x0] + add r1, r0, #0x2000 + ldr r1, [r1, #0x26c] + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl WM_Init + cmp r0, #0x6 + addls pc, pc, r0, lsl #0x2 + b _020A7CE0 +_020A7C94: + b _020A7CFC +_020A7C98: + b _020A7CE0 +_020A7C9C: + b _020A7CE0 +_020A7CA0: + b _020A7CB0 +_020A7CA4: + b _020A7CCC +_020A7CA8: + b _020A7CE0 +_020A7CAC: + b _020A7CE0 +_020A7CB0: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7CCC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7CE0: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7CFC: + bl WM_GetAllowedChannel +_020A7D00: ; 0x020A7D00 + cmp r0, #0x0 + bne _020A7D44 + bl WM_Finish +_020A7D0C: ; 0x020A7D0C + cmp r0, #0x0 + beq _020A7D30 + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D30: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x5 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D44: + ldr r0, _020A7E04 ; =FUN_020A6A74 + bl WM_SetIndCallback +_020A7D4C: ; 0x020A7D4C + cmp r0, #0x0 + beq _020A7D70 + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7D70: + ldr r0, _020A7E08 ; =FUN_020A6768 + bl WM_Enable + cmp r0, #0x2 + beq _020A7D94 + cmp r0, #0x3 + beq _020A7DD0 + cmp r0, #0x8 + beq _020A7DB4 + b _020A7DD0 +_020A7D94: + mov r0, #0x2 + bl FUN_020A6C38 + ldr r0, _020A7E00 ; =0x021CA86C + mov r1, #0x1 + ldr r0, [r0, #0x0] + add r0, r0, #0x2200 + strh r1, [r0, #0x80] + b _020A7DEC +_020A7DB4: + mov r0, #0xc + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7DD0: + mov r0, #0xb + bl FUN_020A6C38 + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x7 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7DEC: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, #0x3 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A7E00: .word 0x021CA86C +_020A7E04: .word FUN_020A6A74 +_020A7E08: .word FUN_020A6768 + + arm_func_start FUN_020A7E0C +FUN_020A7E0C: ; 0x020A7E0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + ldr r2, _020A7E7C ; =0x021CA86C + ldr r1, [r2, #0x0] + cmp r1, #0x0 + bne _020A7E3C + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {lr} + bx lr +_020A7E3C: + add r1, r1, #0x2000 + ldr r1, [r1, #0x260] + cmp r1, #0x1 + beq _020A7E60 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {lr} + bx lr +_020A7E60: + mov r1, #0x0 + str r1, [r2, #0x0] + bl OS_RestoreInterrupts +_020A7E6C: ; 0x020A7E6C + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A7E7C: .word 0x021CA86C + + arm_func_start FUN_020A7E80 +FUN_020A7E80: ; 0x020A7E80 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + bl OS_DisableInterrupts + ldr r2, _020A7FA8 ; =0x021CA86C + mov r4, r0 + ldr r1, [r2, #0x0] + cmp r1, #0x0 + beq _020A7EB4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7EB4: + cmp r6, #0x0 + bne _020A7ECC + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7ECC: + ands r1, r6, #0x1f + beq _020A7EE4 + bl OS_RestoreInterrupts + mov r0, #0x1 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7EE4: + cmp r5, #0x2300 + bhs _020A7EFC + bl OS_RestoreInterrupts + mov r0, #0x6 + ldmia sp!, {r4-r6,lr} + bx lr +_020A7EFC: + str r6, [r2, #0x0] + add r0, r6, #0x2000 + mov r1, #0x1 + str r1, [r0, #0x260] + ldr r1, [r2, #0x0] + mov r0, #0x0 + add r1, r1, #0x2200 + strh r0, [r1, #0x80] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x68] + ldr r1, [r2, #0x0] + add r1, r1, #0x2000 + strb r0, [r1, #0x26a] + ldr r1, [r2, #0x0] + add r1, r1, #0x2000 + strb r0, [r1, #0x26b] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0x82] + ldr r1, [r2, #0x0] + add r1, r1, #0x2200 + strh r0, [r1, #0xf8] + bl FUN_020A6E30 + bl FUN_020A897C + bl OS_IsTickAvailable +_020A7F64: ; 0x020A7F64 + cmp r0, #0x0 + bne _020A7F70 + bl OS_InitTick +_020A7F70: + bl OS_IsAlarmAvailable +_020A7F74: ; 0x020A7F74 + cmp r0, #0x0 + bne _020A7F80 + bl OS_InitAlarm +_020A7F80: + ldr r1, _020A7FA8 ; =0x021CA86C + ldr r0, _020A7FAC ; =0x000022CC + ldr r1, [r1, #0x0] + add r0, r1, r0 + bl OS_CreateAlarm + mov r0, r4 + bl OS_RestoreInterrupts +_020A7F9C: ; 0x020A7F9C + mov r0, #0x0 + ldmia sp!, {r4-r6,lr} + bx lr + .balign 4 +_020A7FA8: .word 0x021CA86C +_020A7FAC: .word 0x000022CC + + arm_func_start FUN_020A7FB0 +FUN_020A7FB0: ; 0x020A7FB0 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020A7138 + add r1, r0, #0x2000 + cmp r4, #0x0 + ldr r0, [r1, #0x270] + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x274] + cmp r1, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r3, [r0, #0x4] + cmp r3, #0x0 + beq _020A8040 +_020A7FF8: + cmp r3, r4 + bne _020A8034 + ldr r2, [r3, #0x8] + cmp r2, #0x0 + ldrne r1, [r3, #0xc] + strne r1, [r2, #0xc] + ldreq r1, [r3, #0xc] + streq r1, [r0, #0x4] + ldr r2, [r3, #0xc] + cmp r2, #0x0 + ldrne r1, [r3, #0x8] + strne r1, [r2, #0x8] + ldreq r1, [r3, #0x8] + streq r1, [r0, #0x8] + b _020A8040 +_020A8034: + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020A7FF8 +_020A8040: + mov r1, #0x0 + str r1, [r4, #0xc] + ldr r1, [r0, #0x8] + str r1, [r4, #0x8] + str r4, [r0, #0x8] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + strne r4, [r1, #0xc] + streq r4, [r0, #0x4] + cmp r3, #0x0 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x4] + ldreq r1, [r0, #0x0] + addeq r1, r1, #0x1 + streq r1, [r0, #0x0] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A8084 +FUN_020A8084: ; 0x020A8084 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020A7138 + add r1, r0, #0x2000 + ldr r2, [r1, #0x270] + mov r0, #0x0 + cmp r2, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, [r1, #0x274] + cmp r1, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r0, [r2, #0x4] + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr +_020A80C8: + ldr r1, [r0, #0x4] + cmp r1, r4 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, [r0, #0xc] + cmp r0, #0x0 + bne _020A80C8 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A80EC +FUN_020A80EC: ; 0x020A80EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_020A7138 + add r0, r0, #0x2000 + cmp r5, #0x0 + mov r4, #0x0 + ldr r1, [r0, #0x270] + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r5,lr} + bxeq lr + cmp r1, #0x0 + beq _020A8160 + ldr r0, [r0, #0x274] + cmp r0, #0xc + bls _020A8160 + ldr r4, [r1, #0x4] + cmp r4, #0x0 + beq _020A8160 +_020A813C: + add r0, r4, #0x10 + mov r1, r5 + add r0, r0, #0x4 + bl FUN_020A8B78 +_020A814C: ; 0x020A814C + cmp r0, #0x0 + bne _020A8160 + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020A813C +_020A8160: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A8170 +FUN_020A8170: ; 0x020A8170 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A7138 + add r0, r0, #0x2000 + ldr r1, [r0, #0x270] + cmp r1, #0x0 + beq _020A81A4 + ldr r0, [r0, #0x274] + cmp r0, #0xc + addhi sp, sp, #0x4 + ldrhi r0, [r1, #0x4] + ldmhiia sp!, {lr} + bxhi lr +_020A81A4: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A81B4 +FUN_020A81B4: ; 0x020A81B4 + stmdb sp!, {r4,lr} + bl FUN_020A7138 + add r2, r0, #0x2000 + ldr r1, [r2, #0x270] + mov r0, #0x0 + cmp r1, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r3, [r2, #0x274] + cmp r3, #0xc + ldmlsia sp!, {r4,lr} + bxls lr + ldr r2, _020A8294 ; =0x4EC4EC4F + sub r3, r3, #0xc + umull r2, r4, r3, r2 + movs r4, r4, lsr #0x6 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r2, [r1, #0x0] + cmp r4, r2 + ldmlsia sp!, {r4,lr} + bxls lr + mov lr, r0 + cmp r4, #0x0 + bls _020A8240 + add r12, r1, #0xc + mov r2, #0xd0 +_020A8220: + mul r0, lr, r2 + ldrb r3, [r12, r0] + add r0, r12, r0 + cmp r3, #0x0 + beq _020A8240 + add lr, lr, #0x1 + cmp lr, r4 + blo _020A8220 +_020A8240: + cmp lr, r4 + ldmcsia sp!, {r4,lr} + bxcs lr + mov r2, #0x1 + strb r2, [r0, #0x0] + ldr r3, [r1, #0x0] + mov r2, #0x0 + str r3, [r0, #0x4] + str r2, [r0, #0xc] + ldr r2, [r1, #0x8] + str r2, [r0, #0x8] + str r0, [r1, #0x8] + ldr r2, [r0, #0x8] + cmp r2, #0x0 + strne r0, [r2, #0xc] + streq r0, [r1, #0x4] + ldr r2, [r1, #0x0] + add r2, r2, #0x1 + str r2, [r1, #0x0] + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8294: .word 0x4EC4EC4F + + arm_func_start FUN_020A8298 +FUN_020A8298: ; 0x020A8298 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + bl FUN_020A7138 + movs r7, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + add r0, r7, #0x2000 + ldrb r0, [r0, #0x26a] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + ldrh r0, [r5, #0x3c] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,lr} + bxne lr + add r0, r5, #0x4 + bl FUN_020A80EC + movs r6, r0 + bne _020A8300 + bl FUN_020A81B4 + mov r6, r0 +_020A8300: + cmp r6, #0x0 + bne _020A8320 + add r0, r7, #0x2000 + ldr r0, [r0, #0x278] + cmp r0, #0x1 + bne _020A8320 + bl FUN_020A8170 + mov r6, r0 +_020A8320: + cmp r6, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,lr} + bxeq lr + mov r0, r5 + add r1, r6, #0x10 + mov r2, #0xc0 + strh r4, [r6, #0x2] + bl MIi_CpuCopyFast + mov r0, r6 + bl FUN_020A7FB0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FUN_020A8358 +FUN_020A8358: ; 0x020A8358 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 +_020A8370: ; 0x020A8370 + cmp r0, #0x0 + bne _020A8390 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A8390: + mov r0, r4 + bl FUN_020A8084 + movs r4, r0 + bne _020A83B8 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A83B8: + mov r0, r5 + bl OS_RestoreInterrupts + add r0, r4, #0x10 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A83D0 +FUN_020A83D0: ; 0x020A83D0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + bl FUN_020A7138 +_020A83E8: ; 0x020A83E8 + cmp r0, #0x0 + bne _020A8408 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,lr} + bx lr +_020A8408: + cmp r5, #0x0 + beq _020A8434 + add r1, r0, #0x2000 + ldrb r1, [r1, #0x26a] + add r0, r0, #0x2000 + cmp r1, #0x0 + movne r5, #0x1 + mov r1, #0x1 + moveq r5, #0x0 + strb r1, [r0, #0x26a] + b _020A8454 +_020A8434: + add r1, r0, #0x2000 + ldrb r1, [r1, #0x26a] + add r0, r0, #0x2000 + cmp r1, #0x0 + movne r5, #0x1 + mov r1, #0x0 + moveq r5, #0x0 + strb r1, [r0, #0x26a] +_020A8454: + mov r0, r4 + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A846C +FUN_020A846C: ; 0x020A846C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 +_020A8480: ; 0x020A8480 + cmp r0, #0x0 + mov r4, #0x0 + bne _020A84A4 + mov r0, r5 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + mov r0, r4 + ldmia sp!, {r4-r5,lr} + bx lr +_020A84A4: + add r0, r0, #0x2000 + ldr r1, [r0, #0x270] + cmp r1, #0x0 + beq _020A84C0 + ldr r0, [r0, #0x274] + cmp r0, #0xc + ldrhi r4, [r1, #0x0] +_020A84C0: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A84D8 +FUN_020A84D8: ; 0x020A84D8 + stmdb sp!, {r4,lr} + bl OS_DisableInterrupts + mov r4, r0 + bl FUN_020A7138 +_020A84E8: ; 0x020A84E8 + cmp r0, #0x0 + bne _020A8500 + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr +_020A8500: + add r1, r0, #0x2000 + ldr r0, [r1, #0x270] + cmp r0, #0x0 + beq _020A8524 + ldr r2, [r1, #0x274] + cmp r2, #0x0 + ble _020A8524 + mov r1, #0x0 + bl MI_CpuFill8 +_020A8524: + mov r0, r4 + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + + arm_func_start FUN_020A8534 +FUN_020A8534: ; 0x020A8534 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + ldr r1, _020A858C ; =0x01FF8000 + cmp r2, r1 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r1, [r0, #0xc] + sub r1, r1, #0x1 + str r1, [r0, #0xc] + ldr r1, [r0, #0xc] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + mov r1, #0x0 + str r1, [r0, #0x8] + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A858C: .word 0x01FF8000 + + arm_func_start FUN_020A8590 +FUN_020A8590: + ldr r2, [r0, #0x8] + cmp r2, #0x0 + bne _020A85B8 + ldr r1, _020A85D8 ; =0x01FF8000 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, #0x1 + str r1, [r0, #0xc] + mov r0, #0x1 + bx lr +_020A85B8: + ldr r1, _020A85D8 ; =0x01FF8000 + cmp r2, r1 + ldreq r1, [r0, #0xc] + addeq r1, r1, #0x1 + streq r1, [r0, #0xc] + moveq r0, #0x1 + movne r0, #0x0 + bx lr + .balign 4 +_020A85D8: .word 0x01FF8000 + + arm_func_start FUN_020A85DC +FUN_020A85DC: ; 0x020A85DC + ldr ip, _020A85E8 ; =FUN_020A8534 + ldr r0, _020A85EC ; =0x021CA87C + bx r12 + .balign 4 +_020A85E8: .word FUN_020A8534 +_020A85EC: .word 0x021CA87C + + arm_func_start FUN_020A85F0 +FUN_020A85F0: ; 0x020A85F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r1, [r0, #0x0] + cmp r1, #0x12 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldrh r2, [r0, #0x2] + ldr r1, _020A863C ; =0x021CA870 + str r2, [r1, #0x24] + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bne _020A8628 + bl FUN_020A6BBC +_020A8628: + ldr r0, _020A8640 ; =0x021CA874 + bl OS_WakeupThread + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A863C: .word 0x021CA870 +_020A8640: .word 0x021CA874 + + arm_func_start FUN_020A8644 +FUN_020A8644: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + mov r6, r2 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 +_020A8660: ; 0x020A8660 + cmp r0, #0x0 + bne _020A867C + mov r0, r5 + bl OS_RestoreInterrupts +_020A8670: ; 0x020A8670 + mvn r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020A867C: + ldr r0, _020A87AC ; =0x021CA87C + bl OS_LockMutex + bl FUN_020A7138 + movs r4, r0 + bne _020A86AC + ldr r0, _020A87AC ; =0x021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts +_020A86A0: ; 0x020A86A0 + mvn r0, #0x0 + ldmia sp!, {r4-r8,lr} + bx lr +_020A86AC: + add r0, r4, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0x9 + bne _020A86C8 + ldrb r0, [r0, #0x26b] + cmp r0, #0x1 + bne _020A86E4 +_020A86C8: + ldr r0, _020A87AC ; =0x021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x3 + ldmia sp!, {r4-r8,lr} + bx lr +_020A86E4: + mov r0, r7 + mov r2, r6 + add r1, r4, #0xf00 + bl MI_CpuCopy8 + mov r3, r6, lsl #0x10 + ldr r0, _020A87B0 ; =FUN_020A85F0 + mov r1, r8 + add r2, r4, #0xf00 + mov r3, r3, lsr #0x10 + bl WM_SetDCFData + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020A873C +_020A8718: + b _020A873C +_020A871C: + b _020A873C +_020A8720: + b _020A8758 +_020A8724: + b _020A873C +_020A8728: + b _020A873C +_020A872C: + b _020A873C +_020A8730: + b _020A873C +_020A8734: + b _020A873C +_020A8738: + b _020A873C +_020A873C: + ldr r0, _020A87AC ; =0x021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8758: + ldr r0, _020A87B4 ; =0x021CA874 + bl OS_SleepThread + ldr r0, _020A87B8 ; =0x021CA870 + ldr r0, [r0, #0x24] + cmp r0, #0x0 + beq _020A8790 + cmp r0, #0x1 + ldr r0, _020A87AC ; =0x021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mvn r0, #0x4 + ldmia sp!, {r4-r8,lr} + bx lr +_020A8790: + ldr r0, _020A87AC ; =0x021CA87C + bl OS_UnlockMutex + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r6 + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020A87AC: .word 0x021CA87C +_020A87B0: .word FUN_020A85F0 +_020A87B4: .word 0x021CA874 +_020A87B8: .word 0x021CA870 + + arm_func_start FUN_020A87BC +FUN_020A87BC: ; 0x020A87BC + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020A87DC ; =0x021CA870 + str r4, [r1, #0x28] + bl OS_RestoreInterrupts + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A87DC: .word 0x021CA870 + + arm_func_start FUN_020A87E0 +FUN_020A87E0: ; 0x020A87E0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + mov r4, r0 + mov r6, r7 + bl FUN_020A7138 + mov r5, r0 + bl OS_DisableInterrupts +_020A8800: ; 0x020A8800 + cmp r5, #0x0 + beq _020A8830 + add r1, r5, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x9 + bne _020A8830 + ldrb r1, [r1, #0x26b] + cmp r1, #0x0 + addeq r2, r5, #0x2100 + ldreq r1, _020A884C ; =0x0000214C + ldreqh r6, [r2, #0x4a] + addeq r7, r5, r1 +_020A8830: + bl OS_RestoreInterrupts +_020A8834: ; 0x020A8834 + cmp r4, #0x0 + strneh r6, [r4, #0x0] + mov r0, r7 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + .balign 4 +_020A884C: .word 0x0000214C + + arm_func_start FUN_020A8850 +FUN_020A8850: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, #0x0 + bl FUN_020A7138 + mov r4, r0 + bl OS_DisableInterrupts +_020A8868: ; 0x020A8868 + cmp r4, #0x0 + beq _020A8890 + add r1, r4, #0x2000 + ldr r2, [r1, #0x260] + cmp r2, #0x9 + bne _020A8890 + ldrb r1, [r1, #0x26b] + cmp r1, #0x0 + ldreq r1, _020A88A4 ; =0x00002144 + addeq r5, r4, r1 +_020A8890: + bl OS_RestoreInterrupts + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + .balign 4 +_020A88A4: .word 0x00002144 + + arm_func_start FUN_020A88A8 +FUN_020A88A8: ; 0x020A88A8 + stmdb sp!, {r4,lr} + bl FUN_020A7138 + movs r4, r0 + ldmeqia sp!, {r4,lr} + bxeq lr + add r0, r4, #0x2000 + ldr r1, [r0, #0x260] + cmp r1, #0x9 + ldmneia sp!, {r4,lr} + bxne lr + ldrb r0, [r0, #0x26b] + cmp r0, #0x1 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _020A8928 ; =0x021CA87C + bl FUN_020A8590 +_020A88E8: ; 0x020A88E8 + cmp r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r1, _020A892C ; =0x00002144 + ldr r0, _020A8930 ; =FUN_020A85DC + add r1, r4, r1 + add r2, r4, #0xf00 + mov r3, #0x0 + bl WM_SetDCFData + cmp r0, #0x2 + ldmeqia sp!, {r4,lr} + bxeq lr + ldr r0, _020A8928 ; =0x021CA87C + bl FUN_020A8534 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020A8928: .word 0x021CA87C +_020A892C: .word 0x00002144 +_020A8930: .word FUN_020A85DC + + arm_func_start FUN_020A8934 +FUN_020A8934: ; 0x020A8934 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8978 ; =0x021CA870 + mov r2, r0 + ldr r12, [r1, #0x28] + cmp r12, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {lr} + bxeq lr + ldrh r3, [r2, #0x6] + add r0, r2, #0x1e + add r1, r2, #0x18 + add r2, r2, #0x2c + blx r12 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8978: .word 0x021CA870 + + arm_func_start FUN_020A897C +FUN_020A897C: ; 0x020A897C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A89C8 ; =0x021CA870 + ldrb r0, [r1, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {lr} + bxne lr + ldr r0, _020A89CC ; =0x021CA87C + mov r2, #0x0 + mov r3, #0x1 + strb r3, [r1, #0x0] + str r2, [r1, #0x24] + str r2, [r1, #0x8] + str r2, [r1, #0x4] + bl OS_InitMutex + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A89C8: .word 0x021CA870 +_020A89CC: .word 0x021CA87C + + arm_func_start FUN_020A89D0 +FUN_020A89D0: ; 0x020A89D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020A8A48 ; =0x021CA89C + ands r1, r0, #0x2 + ldrb r12, [r2, #0x0] + movne r0, r0, asr #0x2 + andne lr, r0, #0xff + moveq r0, r0, asr #0x2 + addeq r0, r0, #0x19 + andeq lr, r0, #0xff + mov r1, r12, lsr #0x1f + rsb r0, r1, r12, lsl #0x1c + cmp r12, #0x10 + ldr r3, _020A8A4C ; =0x021CA8A0 + add r0, r1, r0, ror #0x1c + strb lr, [r3, r0] + addcc r0, r12, #0x1 + strccb r0, [r2, #0x0] + addcc sp, sp, #0x4 + ldmccia sp!, {lr} + bxcc lr + add r0, r12, #0x1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #0x1c + add r0, r1, r0, ror #0x1c + add r0, r0, #0x10 + strb r0, [r2, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8A48: .word 0x021CA89C +_020A8A4C: .word 0x021CA8A0 + + arm_func_start FUN_020A8A50 +FUN_020A8A50: ; 0x020A8A50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020A8A90 + mov r1, #0x0 + cmp r0, #0x1c + movcs r1, #0x3 + bhs _020A8A80 + cmp r0, #0x16 + movcs r1, #0x2 + bhs _020A8A80 + cmp r0, #0x10 + movcs r1, #0x1 +_020A8A80: + mov r0, r1 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FUN_020A8A90 +FUN_020A8A90: ; 0x020A8A90 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020A8B20 ; =0x021CA89C + mov r0, #0x0 + ldrb r1, [r1, #0x0] + cmp r1, #0x10 + bls _020A8ADC + ldr r2, _020A8B24 ; =0x021CA8A0 + mov r3, r0 +_020A8AB4: + ldrb r1, [r2, #0x0] + add r3, r3, #0x1 + cmp r3, #0x10 + add r0, r0, r1 + add r2, r2, #0x1 + blt _020A8AB4 + mov r1, r0, asr #0x3 + add r0, r0, r1, lsr #0x1c + mov r0, r0, asr #0x4 + b _020A8B10 +_020A8ADC: + cmp r1, #0x0 + beq _020A8B10 + mov r3, r0 + cmp r1, #0x0 + ble _020A8B0C + ldr ip, _020A8B24 ; =0x021CA8A0 +_020A8AF4: + ldrb r2, [r12, #0x0] + add r3, r3, #0x1 + cmp r3, r1 + add r0, r0, r2 + add r12, r12, #0x1 + blt _020A8AF4 +_020A8B0C: + bl _s32_div_f +_020A8B10: + and r0, r0, #0xff + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020A8B20: .word 0x021CA89C +_020A8B24: .word 0x021CA8A0 + + arm_func_start FUN_020A8B28 +FUN_020A8B28: ; 0x020A8B28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r5, r0 + bl FUN_020A7138 +_020A8B3C: ; 0x020A8B3C + cmp r0, #0x0 + mov r4, #0x0 + beq _020A8B60 + add r0, r0, #0x2000 + ldr r0, [r0, #0x260] + cmp r0, #0x9 + bne _020A8B60 + bl FUN_020A8A50 + mov r4, r0 +_020A8B60: + mov r0, r5 + bl OS_RestoreInterrupts + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start FUN_020A8B78 +FUN_020A8B78: + mov r12, #0x0 +_020A8B7C: + ldrb r3, [r0, r12] + ldrb r2, [r1, r12] + cmp r3, r2 + movne r0, #0x0 + bxne lr + add r12, r12, #0x1 + cmp r12, #0x6 + blt _020A8B7C + mov r0, #0x1 + bx lr + + arm_func_start FUN_020A8BA4 +FUN_020A8BA4: ; 0x020A8BA4 + ldr ip, _020A8BAC ; =DGT_Hash1GetDigest_R + bx r12 + .balign 4 +_020A8BAC: .word DGT_Hash1GetDigest_R + + arm_func_start FUN_020A8BB0 +FUN_020A8BB0: ; 0x020A8BB0 + ldr ip, _020A8BB8 ; =DGT_Hash1SetSource + bx r12 + .balign 4 +_020A8BB8: .word DGT_Hash1SetSource + + arm_func_start FUN_020A8BBC +FUN_020A8BBC: ; 0x020A8BBC + ldr ip, _020A8BC4 ; =DGT_Hash1Reset + bx r12 + .balign 4 +_020A8BC4: .word DGT_Hash1Reset + + arm_func_start FUN_020A8BC8 +FUN_020A8BC8: ; 0x020A8BC8 + stmdb sp!, {r4,lr} + ldrsh r4, [r3, #0x0] + ldr r12, [sp, #0x8] + mov lr, #0x0 + strh r4, [r0, #0x0] + ldrb r4, [r3, #0x2] + cmp r12, #0x2 + strb r4, [r0, #0x2] + strb lr, [r0, #0x3] + beq _020A8C04 + cmp r12, #0x3 + beq _020A8C10 + cmp r12, #0x4 + beq _020A8C1C + ldmia sp!, {r4,pc} +_020A8C04: + add r0, r0, #0x4 + bl FUN_020A8CA8 + ldmia sp!, {r4,pc} +_020A8C10: + add r0, r0, #0x4 + bl FUN_020A91D8 + ldmia sp!, {r4,pc} +_020A8C1C: + add r0, r0, #0x4 + bl FUN_020A9D18 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020A8C28 +FUN_020A8C28: ; 0x020A8C28 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrsh r12, [r0, #0x0] + cmp r3, #0x2 + strh r12, [sp, #0x0] + ldrb r12, [r0, #0x2] + strb r12, [sp, #0x2] + beq _020A8C60 + cmp r3, #0x3 + beq _020A8C78 + cmp r3, #0x4 + beq _020A8C90 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020A8C60: + add r3, sp, #0x0 + add r0, r0, #0x4 + sub r2, r2, #0x4 + bl FUN_020A8F58 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020A8C78: + add r3, sp, #0x0 + add r0, r0, #0x4 + sub r2, r2, #0x4 + bl FUN_020A97DC + add sp, sp, #0x4 + ldmia sp!, {pc} +_020A8C90: + add r3, sp, #0x0 + add r0, r0, #0x4 + sub r2, r2, #0x4 + bl FUN_020A9F10 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020A8CA8 +FUN_020A8CA8: ; 0x020A8CA8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + movs r2, r2, lsr #0x2 + str r2, [sp, #0x4] + mov r2, #0x0 + str r2, [sp, #0x0] + addeq sp, sp, #0x3c + ldmeqia sp!, {r4-r11,pc} +_020A8CC8: ; 0x020A8CC8 + mov r5, #0x8000 + ldr fp, _020A8F4C ; =0x020FF5D4 + ldr r4, _020A8F50 ; =0x00007FFF + str r2, [sp, #0x8] + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + str r2, [sp, #0x18] + rsb r5, r5, #0x0 + mov r6, #0x2 + mov lr, #0x58 + str r2, [sp, #0x1c] + str r2, [sp, #0x20] + str r2, [sp, #0x24] + str r2, [sp, #0x28] + str r2, [sp, #0x2c] + str r2, [sp, #0x30] + str r2, [sp, #0x34] +_020A8D10: + ldrb r9, [r3, #0x2] + ldrsh r2, [r3, #0x0] + ldrsh r7, [r1, #0x0] + mov r10, r9, lsl #0x1 + ldrsh r10, [r11, r10] + subs r8, r7, r2 + movmi r7, r6 + ldrpl r7, [sp, #0x8] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x1 + ands r8, r7, #0x1 + ldreq r10, [sp, #0xc] + ands r8, r7, #0x2 + rsbne r10, r10, #0x0 + mov r8, #0x8000 + add r2, r2, r10 + rsb r8, r8, #0x0 + cmp r2, r8 + ldr r8, _020A8F54 ; =0x020FF5B8 + movlt r2, r5 + cmp r2, r4 + ldrsb r8, [r8, r7] + movgt r2, r4 + adds r9, r9, r8 + ldrmi r9, [sp, #0x10] + bmi _020A8D84 + cmp r9, #0x58 + movgt r9, lr +_020A8D84: + strh r2, [r3, #0x0] + strb r9, [r3, #0x2] + ldrb r10, [r3, #0x2] + and r2, r7, #0xff + ldrsh r7, [r3, #0x0] + ldrsh r8, [r1, #0x2] + mov r12, r10, lsl #0x1 + ldrsh r12, [r11, r12] + subs r9, r8, r7 + movmi r8, r6 + ldrpl r8, [sp, #0x14] + rsbmi r9, r9, #0x0 + cmp r9, r12 + orrge r8, r8, #0x1 + ands r9, r8, #0x1 + ldreq r12, [sp, #0x18] + ands r9, r8, #0x2 + rsbne r12, r12, #0x0 + mov r9, #0x8000 + add r7, r7, r12 + rsb r9, r9, #0x0 + cmp r7, r9 + ldr sb, _020A8F54 ; =0x020FF5B8 + movlt r7, r5 + cmp r7, r4 + ldrsb r9, [r9, r8] + movgt r7, r4 + adds r10, r10, r9 + ldrmi r10, [sp, #0x1c] + bmi _020A8E04 + cmp r10, #0x58 + movgt r10, lr +_020A8E04: + strh r7, [r3, #0x0] + strb r10, [r3, #0x2] + and r7, r8, #0xff + orr r2, r2, r7, lsl #0x2 + ldrb r10, [r3, #0x2] + ldrsh r7, [r3, #0x0] + ldrsh r8, [r1, #0x4] + mov r12, r10, lsl #0x1 + ldrsh r12, [r11, r12] + subs r9, r8, r7 + movmi r8, r6 + ldrpl r8, [sp, #0x20] + rsbmi r9, r9, #0x0 + cmp r9, r12 + orrge r8, r8, #0x1 + ands r9, r8, #0x1 + ldreq r12, [sp, #0x24] + ands r9, r8, #0x2 + rsbne r12, r12, #0x0 + mov r9, #0x8000 + add r7, r7, r12 + rsb r9, r9, #0x0 + cmp r7, r9 + ldr sb, _020A8F54 ; =0x020FF5B8 + movlt r7, r5 + cmp r7, r4 + ldrsb r9, [r9, r8] + movgt r7, r4 + and r2, r2, #0xff + adds r10, r10, r9 + ldrmi r10, [sp, #0x28] + bmi _020A8E8C + cmp r10, #0x58 + movgt r10, lr +_020A8E8C: + strh r7, [r3, #0x0] + strb r10, [r3, #0x2] + and r7, r8, #0xff + orr r2, r2, r7, lsl #0x4 + ldrb r10, [r3, #0x2] + ldrsh r8, [r1, #0x6] + ldrsh r7, [r3, #0x0] + mov r12, r10, lsl #0x1 + ldrsh r12, [r11, r12] + subs r9, r8, r7 + movmi r8, r6 + ldrpl r8, [sp, #0x2c] + rsbmi r9, r9, #0x0 + cmp r9, r12 + orrge r8, r8, #0x1 + ands r9, r8, #0x1 + ldreq r12, [sp, #0x30] + ands r9, r8, #0x2 + rsbne r12, r12, #0x0 + mov r9, #0x8000 + add r7, r7, r12 + rsb r9, r9, #0x0 + cmp r7, r9 + ldr sb, _020A8F54 ; =0x020FF5B8 + movlt r7, r5 + cmp r7, r4 + ldrsb r9, [r9, r8] + movgt r7, r4 + and r2, r2, #0xff + adds r10, r10, r9 + add r1, r1, #0x8 + ldrmi r10, [sp, #0x34] + bmi _020A8F18 + cmp r10, #0x58 + movgt r10, lr +_020A8F18: + strh r7, [r3, #0x0] + and r7, r8, #0xff + strb r10, [r3, #0x2] + orr r2, r2, r7, lsl #0x6 + strb r2, [r0], #0x1 + ldr r2, [sp, #0x0] + add r7, r2, #0x1 + ldr r2, [sp, #0x4] + str r7, [sp, #0x0] + cmp r7, r2 + blo _020A8D10 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A8F4C: .word 0x020FF5D4 +_020A8F50: .word 0x00007FFF +_020A8F54: .word 0x020FF5B8 + + arm_func_start FUN_020A8F58 +FUN_020A8F58: ; 0x020A8F58 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + cmp r2, #0x0 + addls sp, sp, #0x34 + mov r12, #0x0 + ldmlsia sp!, {r4-r11,pc} +_020A8F70: ; 0x020A8F70 + mov r4, #0x8000 + rsb r6, r4, #0x0 + ldr r5, _020A91CC ; =0x00007FFF + ldr fp, _020A91D0 ; =0x020FF5D4 + str r12, [sp, #0x0] + str r12, [sp, #0x8] + str r12, [sp, #0xc] + str r12, [sp, #0x14] + str r12, [sp, #0x18] + mov r4, #0x58 + str r12, [sp, #0x20] + str r12, [sp, #0x24] + str r12, [sp, #0x2c] +_020A8FA4: + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0x0] + ands lr, r10, #0x2 + str lr, [sp, #0x4] + beq _020A8FE8 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A8FF4 +_020A8FE8: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A8FF4: + ldr r7, _020A91D4 ; =0x020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x8] + bmi _020A9010 + cmp r8, #0x58 + movgt r8, r4 +_020A9010: + mov r7, r9, lsl #0x10 + mov r7, r7, asr #0x10 + strh r7, [r3, #0x0] + strb r8, [r3, #0x2] + strh r7, [r1, #0x0] + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + mov r7, r7, asr #0x2 + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0xc] + ands lr, r10, #0x2 + str lr, [sp, #0x10] + beq _020A906C + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A9078 +_020A906C: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A9078: + ldr r7, _020A91D4 ; =0x020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x14] + bmi _020A9094 + cmp r8, #0x58 + movgt r8, r4 +_020A9094: + mov r7, r9, lsl #0x10 + mov r7, r7, asr #0x10 + strh r7, [r3, #0x0] + strb r8, [r3, #0x2] + strh r7, [r1, #0x2] + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + mov r7, r7, asr #0x4 + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0x18] + ands lr, r10, #0x2 + str lr, [sp, #0x1c] + beq _020A90F0 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A90FC +_020A90F0: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A90FC: + ldr r7, _020A91D4 ; =0x020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x20] + bmi _020A9118 + cmp r8, #0x58 + movgt r8, r4 +_020A9118: + mov r7, r9, lsl #0x10 + mov r7, r7, asr #0x10 + strh r7, [r3, #0x0] + strb r8, [r3, #0x2] + strh r7, [r1, #0x4] + ldrb r7, [r0, #0x0] + ldrb r8, [r3, #0x2] + ldrsh r9, [r3, #0x0] + mov r7, r7, asr #0x6 + and r10, r7, #0x3 + ands r7, r10, #0x1 + mov r7, r8, lsl #0x1 + ldrsh r7, [r11, r7] + ldreq r7, [sp, #0x24] + ands lr, r10, #0x2 + str lr, [sp, #0x28] + beq _020A9174 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r6 + b _020A9180 +_020A9174: + add r9, r9, r7 + cmp r9, r5 + movgt r9, r5 +_020A9180: + ldr r7, _020A91D4 ; =0x020FF5B8 + ldrsb r7, [r7, r10] + adds r8, r8, r7 + ldrmi r8, [sp, #0x2c] + bmi _020A919C + cmp r8, #0x58 + movgt r8, r4 +_020A919C: + mov r7, r9, lsl #0x10 + mov r9, r7, asr #0x10 + strh r9, [r3, #0x0] + strb r8, [r3, #0x2] + add r12, r12, #0x1 + strh r9, [r1, #0x6] + add r1, r1, #0x8 + add r0, r0, #0x1 + cmp r12, r2 + blo _020A8FA4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A91CC: .word 0x00007FFF +_020A91D0: .word 0x020FF5D4 +_020A91D4: .word 0x020FF5B8 + + arm_func_start FUN_020A91D8 +FUN_020A91D8: ; 0x020A91D8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + movs r2, r2, lsr #0x3 + str r2, [sp, #0x4] + mov r2, #0x0 + str r2, [sp, #0x0] + addeq sp, sp, #0x54 + ldmeqia sp!, {r4-r11,pc} +_020A91F8: ; 0x020A91F8 + ldr r5, [sp, #0x0] + mov r4, #0x8000 + rsb lr, r4, #0x0 + ldr ip, _020A97D0 ; =0x00007FFF + str r2, [sp, #0x10] + str r2, [sp, #0x14] + str r2, [sp, #0x18] + str r2, [sp, #0x1c] + str r2, [sp, #0x20] + mov r4, #0x4 + mov r2, #0x58 + str r5, [sp, #0x24] + str r5, [sp, #0x28] + str r5, [sp, #0x2c] + str r5, [sp, #0x30] + str r5, [sp, #0x34] + str r5, [sp, #0x38] + str r5, [sp, #0x3c] + str r5, [sp, #0x40] + str r5, [sp, #0x44] + str r5, [sp, #0x48] + str r5, [sp, #0x4c] +_020A9250: + ldrsh r8, [r3, #0x0] + ldrsh r6, [r1, #0x0] + ldrb r5, [r3, #0x2] + subs r7, r6, r8 + movmi r10, r4 + ldr r6, _020A97D4 ; =0x020FF5D4 + mov r9, r5, lsl #0x1 + ldrsh r6, [r6, r9] + ldrpl r10, [sp, #0x10] + rsbmi r7, r7, #0x0 + cmp r7, r6 + orrge r10, r10, #0x2 + subge r7, r7, r6 + mov r9, r6, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x2 + mov r7, r6, asr #0x2 + addne r7, r7, r6 + ands r6, r10, #0x1 + addne r7, r7, r9 + ands r6, r10, #0x4 + rsbne r7, r7, #0x0 + add r6, r8, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r6, r7 + ldr r7, _020A97D8 ; =0x020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r7, [r7, r10] + movgt r6, r12 + adds r5, r5, r7 + ldrmi r5, [sp, #0x14] + bmi _020A92E4 + cmp r5, #0x58 + movgt r5, r2 +_020A92E4: + strh r6, [r3, #0x0] + strb r5, [r3, #0x2] + and r5, r10, #0xff + mov r5, r5, lsl #0x5 + and r10, r5, #0xff + ldrb r8, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r5, [r1, #0x2] + mov r9, r8, lsl #0x1 + subs r7, r5, r11 + ldr r5, _020A97D4 ; =0x020FF5D4 + movmi r6, r4 + ldrsh r9, [r5, r9] + ldrpl r6, [sp, #0x18] + rsbmi r7, r7, #0x0 + cmp r7, r9 + orrge r6, r6, #0x2 + subge r7, r7, r9 + mov r5, r9, asr #0x1 + cmp r7, r5 + orrge r6, r6, #0x1 + ands r7, r6, #0x2 + mov r7, r9, asr #0x2 + addne r7, r7, r9 + ands r9, r6, #0x1 + addne r7, r7, r5 + ands r5, r6, #0x4 + rsbne r7, r7, #0x0 + add r5, r11, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r5, r7 + ldr r7, _020A97D8 ; =0x020FF5BC + movlt r5, lr + cmp r5, r12 + ldrsb r7, [r7, r6] + movgt r5, r12 + adds r8, r8, r7 + ldrmi r8, [sp, #0x1c] + bmi _020A938C + cmp r8, #0x58 + movgt r8, r2 +_020A938C: + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + and r5, r6, #0xff + orr r5, r10, r5, lsl #0x2 + and r10, r5, #0xff + ldrb r8, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r5, [r1, #0x4] + mov r9, r8, lsl #0x1 + subs r7, r5, r11 + ldr r5, _020A97D4 ; =0x020FF5D4 + movmi r6, r4 + ldrsh r9, [r5, r9] + ldrpl r6, [sp, #0x20] + rsbmi r7, r7, #0x0 + cmp r7, r9 + orrge r6, r6, #0x2 + subge r7, r7, r9 + mov r5, r9, asr #0x1 + cmp r7, r5 + orrge r6, r6, #0x1 + ands r7, r6, #0x2 + mov r7, r9, asr #0x2 + addne r7, r7, r9 + ands r9, r6, #0x1 + addne r7, r7, r5 + ands r5, r6, #0x4 + rsbne r7, r7, #0x0 + add r5, r11, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r5, r7 + ldr r7, _020A97D8 ; =0x020FF5BC + movlt r5, lr + cmp r5, r12 + ldrsb r7, [r7, r6] + movgt r5, r12 + adds r8, r8, r7 + ldrmi r8, [sp, #0x24] + bmi _020A9434 + cmp r8, #0x58 + movgt r8, r2 +_020A9434: + strh r5, [r3, #0x0] + and r5, r6, #0xff + str r5, [sp, #0x8] + strb r8, [r3, #0x2] + orr r5, r10, r5, asr #0x1 + strb r5, [r0, #0x0] + ldrb r5, [r3, #0x2] + ldrsh r8, [r3, #0x0] + ldrsh r6, [r1, #0x6] + mov r9, r5, lsl #0x1 + subs r7, r6, r8 + ldr r6, _020A97D4 ; =0x020FF5D4 + movmi r10, r4 + ldrsh r6, [r6, r9] + ldrpl r10, [sp, #0x28] + rsbmi r7, r7, #0x0 + cmp r7, r6 + orrge r10, r10, #0x2 + subge r7, r7, r6 + mov r9, r6, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x2 + mov r7, r6, asr #0x2 + addne r7, r7, r6 + ands r6, r10, #0x1 + addne r7, r7, r9 + ands r6, r10, #0x4 + rsbne r7, r7, #0x0 + add r6, r8, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r6, r7 + ldr r7, _020A97D8 ; =0x020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r7, [r7, r10] + movgt r6, r12 + adds r5, r5, r7 + ldrmi r5, [sp, #0x2c] + bmi _020A94E0 + cmp r5, #0x58 + movgt r5, r2 +_020A94E0: + strh r6, [r3, #0x0] + strb r5, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r6, [r1, #0x8] + ldrb r9, [r3, #0x2] + and r5, r10, #0xff + subs r8, r6, r11 + movmi r7, r4 + ldr r6, _020A97D4 ; =0x020FF5D4 + mov r10, r9, lsl #0x1 + ldrsh r10, [r6, r10] + ldrpl r7, [sp, #0x30] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x2 + subge r8, r8, r10 + mov r6, r10, asr #0x1 + cmp r8, r6 + orrge r7, r7, #0x1 + ands r8, r7, #0x2 + mov r8, r10, asr #0x2 + addne r8, r8, r10 + ands r10, r7, #0x1 + addne r8, r8, r6 + ands r6, r7, #0x4 + rsbne r8, r8, #0x0 + add r6, r11, r8 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r6, r8 + ldr r8, _020A97D8 ; =0x020FF5BC + movlt r6, lr + mov r5, r5, lsl #0x4 + cmp r6, r12 + ldrsb r8, [r8, r7] + movgt r6, r12 + and r5, r5, #0xff + adds r9, r9, r8 + ldrmi r9, [sp, #0x34] + bmi _020A9588 + cmp r9, #0x58 + movgt r9, r2 +_020A9588: + strh r6, [r3, #0x0] + strb r9, [r3, #0x2] + and r6, r7, #0xff + orr r5, r5, r6, lsl #0x1 + ldrb r9, [r3, #0x2] + ldrsh r11, [r3, #0x0] + ldrsh r6, [r1, #0xa] + mov r10, r9, lsl #0x1 + and r5, r5, #0xff + subs r8, r6, r11 + ldr r6, _020A97D4 ; =0x020FF5D4 + movmi r7, r4 + ldrsh r10, [r6, r10] + ldrpl r7, [sp, #0x38] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x2 + subge r8, r8, r10 + mov r6, r10, asr #0x1 + cmp r8, r6 + orrge r7, r7, #0x1 + ands r8, r7, #0x2 + mov r8, r10, asr #0x2 + addne r8, r8, r10 + ands r10, r7, #0x1 + addne r8, r8, r6 + ands r6, r7, #0x4 + rsbne r8, r8, #0x0 + add r6, r11, r8 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r6, r8 + ldr r8, _020A97D8 ; =0x020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r8, [r8, r7] + movgt r6, r12 + adds r9, r9, r8 + ldrmi r9, [sp, #0x3c] + bmi _020A9630 + cmp r9, #0x58 + movgt r9, r2 +_020A9630: + ldr r8, [sp, #0x8] + strh r6, [r3, #0x0] + orr r8, r5, r8, lsl #0x7 + and r5, r7, #0xff + str r5, [sp, #0xc] + strb r9, [r3, #0x2] + orr r5, r8, r5, asr #0x2 + strb r5, [r0, #0x1] + ldrb r5, [r3, #0x2] + ldrsh r8, [r3, #0x0] + ldrsh r6, [r1, #0xc] + mov r9, r5, lsl #0x1 + subs r7, r6, r8 + ldr r6, _020A97D4 ; =0x020FF5D4 + movmi r10, r4 + ldrsh r6, [r6, r9] + ldrpl r10, [sp, #0x40] + rsbmi r7, r7, #0x0 + cmp r7, r6 + orrge r10, r10, #0x2 + subge r7, r7, r6 + mov r9, r6, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x2 + mov r7, r6, asr #0x2 + addne r7, r7, r6 + ands r6, r10, #0x1 + addne r7, r7, r9 + ands r6, r10, #0x4 + rsbne r7, r7, #0x0 + add r6, r8, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r6, r7 + ldr r7, _020A97D8 ; =0x020FF5BC + movlt r6, lr + cmp r6, r12 + ldrsb r7, [r7, r10] + movgt r6, r12 + adds r5, r5, r7 + ldrmi r5, [sp, #0x44] + bmi _020A96E4 + cmp r5, #0x58 + movgt r5, r2 +_020A96E4: + strh r6, [r3, #0x0] + strb r5, [r3, #0x2] + and r5, r10, #0xff + mov r5, r5, lsl #0x3 + and r11, r5, #0xff + ldrsh r6, [r1, #0xe] + ldrsh r5, [r3, #0x0] + ldrb r9, [r3, #0x2] + add r1, r1, #0x10 + subs r8, r6, r5 + movmi r7, r4 + ldr r6, _020A97D4 ; =0x020FF5D4 + mov r10, r9, lsl #0x1 + ldrsh r10, [r6, r10] + ldrpl r7, [sp, #0x48] + rsbmi r8, r8, #0x0 + cmp r8, r10 + orrge r7, r7, #0x2 + subge r8, r8, r10 + mov r6, r10, asr #0x1 + cmp r8, r6 + orrge r7, r7, #0x1 + ands r8, r7, #0x2 + mov r8, r10, asr #0x2 + addne r8, r8, r10 + ands r10, r7, #0x1 + addne r8, r8, r6 + ands r6, r7, #0x4 + rsbne r8, r8, #0x0 + mov r6, #0x8000 + add r5, r5, r8 + rsb r6, r6, #0x0 + cmp r5, r6 + ldr r6, _020A97D8 ; =0x020FF5BC + movlt r5, lr + cmp r5, r12 + ldrsb r6, [r6, r7] + movgt r5, r12 + adds r9, r9, r6 + ldrmi r9, [sp, #0x4c] + bmi _020A9790 + cmp r9, #0x58 + movgt r9, r2 +_020A9790: + strh r5, [r3, #0x0] + and r5, r7, #0xff + orr r6, r11, r5 + ldr r5, [sp, #0xc] + strb r9, [r3, #0x2] + orr r5, r6, r5, lsl #0x6 + strb r5, [r0, #0x2] + ldr r5, [sp, #0x0] + add r0, r0, #0x3 + add r6, r5, #0x1 + ldr r5, [sp, #0x4] + str r6, [sp, #0x0] + cmp r6, r5 + blo _020A9250 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A97D0: .word 0x00007FFF +_020A97D4: .word 0x020FF5D4 +_020A97D8: .word 0x020FF5BC + + arm_func_start FUN_020A97DC +FUN_020A97DC: ; 0x020A97DC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r5, _020A9D08 ; =0xAAAAAAAB + mov r4, #0x0 + str r4, [sp, #0x0] + umull r5, r4, r2, r5 + str r4, [sp, #0xc] + movs r2, r4, lsr #0x1 + str r2, [sp, #0xc] + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} +_020A9808: ; 0x020A9808 + ldr r2, [sp, #0x0] + mov r4, #0x8000 + ldr lr, _020A9D0C ; =0x00007FFF + str r2, [sp, #0x18] + str r2, [sp, #0x24] + str r2, [sp, #0x2c] + str r2, [sp, #0x34] + str r2, [sp, #0x3c] + rsb r4, r4, #0x0 + mov r12, #0x58 + str r2, [sp, #0x40] + str r2, [sp, #0x44] + str r2, [sp, #0x48] +_020A983C: + ldrb r8, [r3, #0x2] + ldr r5, _020A9D10 ; =0x020FF5D4 + ldrb r6, [r0, #0x0] + mov r7, r8, lsl #0x1 + ldrsh r5, [r5, r7] + ldrb r11, [r0, #0x1] + ldrb r2, [r0, #0x2] + str r5, [sp, #0x4] + mov r5, r6, asr #0x5 + ands r7, r5, #0x2 + ldr r7, [sp, #0x4] + ldrne r10, [sp, #0x4] + mov r7, r7, asr #0x2 + addne r7, r7, r10 + ands r10, r5, #0x1 + str r10, [sp, #0x10] + ldrne r10, [sp, #0x4] + ldrsh r9, [r3, #0x0] + addne r7, r7, r10, asr #0x1 + ands r10, r5, #0x4 + str r10, [sp, #0x14] + beq _020A98AC + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r4 + b _020A98B8 +_020A98AC: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A98B8: + ldr r7, _020A9D14 ; =0x020FF5BC + ldrsb r5, [r7, r5] + adds r8, r8, r5 + ldrmi r8, [sp, #0x18] + bmi _020A98D4 + cmp r8, #0x58 + movgt r8, r12 +_020A98D4: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + strh r5, [r1, #0x0] + ldrb r8, [r3, #0x2] + mov r5, r6, asr #0x2 + ands r7, r5, #0x2 + ldr r7, _020A9D10 ; =0x020FF5D4 + mov r10, r8, lsl #0x1 + ldrsh r7, [r7, r10] + ldrsh r9, [r3, #0x0] + str r7, [sp, #0x8] + ldrne r10, [sp, #0x8] + mov r7, r7, asr #0x2 + addne r7, r7, r10 + ands r10, r5, #0x1 + str r10, [sp, #0x1c] + ldrne r10, [sp, #0x8] + addne r7, r7, r10, asr #0x1 + ands r10, r5, #0x4 + str r10, [sp, #0x20] + beq _020A9948 + sub r9, r9, r7 + mov r7, #0x8000 + rsb r7, r7, #0x0 + cmp r9, r7 + movlt r9, r4 + b _020A9954 +_020A9948: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A9954: + and r7, r5, #0x7 + ldr r5, _020A9D14 ; =0x020FF5BC + ldrsb r5, [r5, r7] + adds r8, r8, r5 + ldrmi r8, [sp, #0x24] + bmi _020A9974 + cmp r8, #0x58 + movgt r8, r12 +_020A9974: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + mov r6, r6, lsl #0x1 + strb r8, [r3, #0x2] + strh r5, [r1, #0x2] + and r6, r6, #0x7 + orr r6, r6, r11, asr #0x7 + ldrb r8, [r3, #0x2] + ands r5, r6, #0x2 + ldr r5, _020A9D10 ; =0x020FF5D4 + mov r7, r8, lsl #0x1 + ldrsh r10, [r5, r7] + ldrsh r9, [r3, #0x0] + mov r7, r10, asr #0x2 + addne r7, r7, r10 + ands r5, r6, #0x1 + str r5, [sp, #0x28] + addne r7, r7, r10, asr #0x1 + ands r5, r6, #0x4 + beq _020A99E0 + mov r5, #0x8000 + sub r9, r9, r7 + rsb r5, r5, #0x0 + cmp r9, r5 + movlt r9, r4 + b _020A99EC +_020A99E0: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A99EC: + ldr r5, _020A9D14 ; =0x020FF5BC + ldrsb r5, [r5, r6] + adds r8, r8, r5 + ldrmi r8, [sp, #0x2c] + bmi _020A9A08 + cmp r8, #0x58 + movgt r8, r12 +_020A9A08: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + strh r5, [r1, #0x4] + ldrb r8, [r3, #0x2] + mov r6, r11, asr #0x4 + ands r5, r6, #0x2 + ldr r5, _020A9D10 ; =0x020FF5D4 + mov r7, r8, lsl #0x1 + ldrsh r10, [r5, r7] + ldrsh r9, [r3, #0x0] + mov r7, r10, asr #0x2 + addne r7, r7, r10 + ands r5, r6, #0x1 + str r5, [sp, #0x30] + addne r7, r7, r10, asr #0x1 + ands r5, r6, #0x4 + beq _020A9A6C + mov r5, #0x8000 + sub r9, r9, r7 + rsb r5, r5, #0x0 + cmp r9, r5 + movlt r9, r4 + b _020A9A78 +_020A9A6C: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A9A78: + ldr r5, _020A9D14 ; =0x020FF5BC + and r6, r6, #0x7 + ldrsb r5, [r5, r6] + adds r8, r8, r5 + ldrmi r8, [sp, #0x34] + bmi _020A9A98 + cmp r8, #0x58 + movgt r8, r12 +_020A9A98: + mov r5, r9, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r8, [r3, #0x2] + strh r5, [r1, #0x6] + ldrb r8, [r3, #0x2] + mov r6, r11, asr #0x1 + ands r5, r6, #0x2 + ldr r5, _020A9D10 ; =0x020FF5D4 + mov r7, r8, lsl #0x1 + ldrsh r10, [r5, r7] + ldrsh r9, [r3, #0x0] + mov r7, r10, asr #0x2 + addne r7, r7, r10 + ands r5, r6, #0x1 + str r5, [sp, #0x38] + addne r7, r7, r10, asr #0x1 + ands r5, r6, #0x4 + beq _020A9AFC + mov r5, #0x8000 + sub r9, r9, r7 + rsb r5, r5, #0x0 + cmp r9, r5 + movlt r9, r4 + b _020A9B08 +_020A9AFC: + add r9, r9, r7 + cmp r9, lr + movgt r9, lr +_020A9B08: + ldr r5, _020A9D14 ; =0x020FF5BC + and r6, r6, #0x7 + ldrsb r5, [r5, r6] + adds r8, r8, r5 + ldrmi r8, [sp, #0x3c] + bmi _020A9B28 + cmp r8, #0x58 + movgt r8, r12 +_020A9B28: + mov r5, r9, lsl #0x10 + mov r6, r5, asr #0x10 + mov r5, r11, lsl #0x2 + and r5, r5, #0x7 + strh r6, [r3, #0x0] + strb r8, [r3, #0x2] + strh r6, [r1, #0x8] + orr r5, r5, r2, asr #0x6 + ands r6, r5, #0x2 + ldrb r6, [r3, #0x2] + ldr r8, _020A9D10 ; =0x020FF5D4 + ldrsh r7, [r3, #0x0] + mov r9, r6, lsl #0x1 + ldrsh r10, [r8, r9] + mov r9, r10, asr #0x2 + addne r9, r9, r10 + ands r8, r5, #0x1 + addne r9, r9, r10, asr #0x1 + ands r8, r5, #0x4 + beq _020A9B90 + mov r8, #0x8000 + sub r7, r7, r9 + rsb r8, r8, #0x0 + cmp r7, r8 + movlt r7, r4 + b _020A9B9C +_020A9B90: + add r7, r7, r9 + cmp r7, lr + movgt r7, lr +_020A9B9C: + ldr r8, _020A9D14 ; =0x020FF5BC + ldrsb r5, [r8, r5] + adds r6, r6, r5 + ldrmi r6, [sp, #0x40] + bmi _020A9BB8 + cmp r6, #0x58 + movgt r6, r12 +_020A9BB8: + mov r5, r7, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r6, [r3, #0x2] + strh r5, [r1, #0xa] + ldrb r6, [r3, #0x2] + mov r5, r2, asr #0x3 + ands r8, r5, #0x2 + ldr r8, _020A9D10 ; =0x020FF5D4 + mov r9, r6, lsl #0x1 + ldrsh r10, [r8, r9] + ldrsh r7, [r3, #0x0] + mov r9, r10, asr #0x2 + addne r9, r9, r10 + ands r8, r5, #0x1 + addne r9, r9, r10, asr #0x1 + ands r8, r5, #0x4 + beq _020A9C18 + mov r8, #0x8000 + sub r7, r7, r9 + rsb r8, r8, #0x0 + cmp r7, r8 + movlt r7, r4 + b _020A9C24 +_020A9C18: + add r7, r7, r9 + cmp r7, lr + movgt r7, lr +_020A9C24: + and r8, r5, #0x7 + ldr r5, _020A9D14 ; =0x020FF5BC + ldrsb r5, [r5, r8] + adds r6, r6, r5 + ldrmi r6, [sp, #0x44] + bmi _020A9C44 + cmp r6, #0x58 + movgt r6, r12 +_020A9C44: + mov r5, r7, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r6, [r3, #0x2] + strh r5, [r1, #0xc] + ands r5, r2, #0x2 + ldrb r5, [r3, #0x2] + ldr r7, _020A9D10 ; =0x020FF5D4 + ldrsh r6, [r3, #0x0] + mov r8, r5, lsl #0x1 + ldrsh r9, [r7, r8] + mov r8, r9, asr #0x2 + addne r8, r8, r9 + ands r7, r2, #0x1 + addne r8, r8, r9, asr #0x1 + ands r7, r2, #0x4 + beq _020A9CA0 + mov r7, #0x8000 + sub r6, r6, r8 + rsb r7, r7, #0x0 + cmp r6, r7 + movlt r6, r4 + b _020A9CAC +_020A9CA0: + add r6, r6, r8 + cmp r6, lr + movgt r6, lr +_020A9CAC: + and r7, r2, #0x7 + ldr r2, _020A9D14 ; =0x020FF5BC + ldrsb r2, [r2, r7] + adds r5, r5, r2 + ldrmi r5, [sp, #0x48] + bmi _020A9CCC + cmp r5, #0x58 + movgt r5, r12 +_020A9CCC: + mov r2, r6, lsl #0x10 + mov r2, r2, asr #0x10 + strh r2, [r3, #0x0] + strb r5, [r3, #0x2] + strh r2, [r1, #0xe] + ldr r2, [sp, #0x0] + add r0, r0, #0x3 + add r5, r2, #0x1 + ldr r2, [sp, #0xc] + add r1, r1, #0x10 + str r5, [sp, #0x0] + cmp r5, r2 + blo _020A983C + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A9D08: .word 0xAAAAAAAB +_020A9D0C: .word 0x00007FFF +_020A9D10: .word 0x020FF5D4 +_020A9D14: .word 0x020FF5BC + + arm_func_start FUN_020A9D18 +FUN_020A9D18: ; 0x020A9D18 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + movs r2, r2, lsr #0x1 + str r2, [sp, #0x4] + mov r2, #0x0 + str r2, [sp, #0x0] + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r11,pc} +_020A9D38: ; 0x020A9D38 + mov r4, #0x8000 + rsb r5, r4, #0x0 + ldr fp, _020A9F04 ; =0x00007FFF + str r2, [sp, #0xc] + str r2, [sp, #0x10] + str r2, [sp, #0x14] + str r2, [sp, #0x18] + mov r6, #0x8 + mov r4, #0x58 +_020A9D5C: + ldrb r2, [r3, #0x2] + ldrsh r8, [r3, #0x0] + ldrsh r7, [r1, #0x0] + ldr sb, _020A9F08 ; =0x020FF5D4 + mov r12, r2, lsl #0x1 + subs r7, r7, r8 + ldrsh r12, [r9, r12] + movmi r10, r6 + ldrpl r10, [sp, #0xc] + rsbmi r7, r7, #0x0 + cmp r7, r12 + orrge r10, r10, #0x4 + subge r7, r7, r12 + mov lr, r12, asr #0x1 + cmp r7, lr + orrge r10, r10, #0x2 + subge r7, r7, lr + mov r9, r12, asr #0x2 + cmp r7, r9 + orrge r10, r10, #0x1 + ands r7, r10, #0x4 + mov r7, r12, asr #0x3 + addne r7, r7, r12 + ands r12, r10, #0x2 + addne r7, r7, lr + ands r12, r10, #0x1 + addne r7, r7, r9 + ands r9, r10, #0x8 + rsbne r7, r7, #0x0 + add r7, r8, r7 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r7, r8 + ldr r8, _020A9F0C ; =0x020FF5C4 + movlt r7, r5 + cmp r7, r11 + ldrsb r8, [r8, r10] + movgt r7, r11 + adds r2, r2, r8 + ldrmi r2, [sp, #0x10] + bmi _020A9E08 + cmp r2, #0x58 + movgt r2, r4 +_020A9E08: + strh r7, [r3, #0x0] + strb r2, [r3, #0x2] + ldrsh r2, [r3, #0x0] + ldrsh r8, [r1, #0x2] + and lr, r10, #0xff + str r2, [sp, #0x8] + ldrb r2, [r3, #0x2] + ldr r7, [sp, #0x8] + add r1, r1, #0x4 + subs r7, r8, r7 + movmi r10, r6 + ldr r8, _020A9F08 ; =0x020FF5D4 + mov r9, r2, lsl #0x1 + ldrsh r12, [r8, r9] + ldrpl r10, [sp, #0x14] + rsbmi r7, r7, #0x0 + cmp r7, r12 + orrge r10, r10, #0x4 + subge r7, r7, r12 + mov r9, r12, asr #0x1 + cmp r7, r9 + orrge r10, r10, #0x2 + subge r7, r7, r9 + mov r8, r12, asr #0x2 + cmp r7, r8 + orrge r10, r10, #0x1 + ands r7, r10, #0x4 + mov r7, r12, asr #0x3 + addne r7, r7, r12 + ands r12, r10, #0x2 + addne r7, r7, r9 + ands r9, r10, #0x1 + addne r7, r7, r8 + ands r8, r10, #0x8 + ldr r8, [sp, #0x8] + rsbne r7, r7, #0x0 + add r7, r8, r7 + mov r8, #0x8000 + rsb r8, r8, #0x0 + cmp r7, r8 + ldr r8, _020A9F0C ; =0x020FF5C4 + movlt r7, r5 + cmp r7, r11 + ldrsb r8, [r8, r10] + movgt r7, r11 + adds r2, r2, r8 + ldrmi r2, [sp, #0x18] + bmi _020A9ED0 + cmp r2, #0x58 + movgt r2, r4 +_020A9ED0: + strh r7, [r3, #0x0] + strb r2, [r3, #0x2] + and r2, r10, #0xff + orr r2, lr, r2, lsl #0x4 + strb r2, [r0], #0x1 + ldr r2, [sp, #0x0] + add r7, r2, #0x1 + ldr r2, [sp, #0x4] + str r7, [sp, #0x0] + cmp r7, r2 + blo _020A9D5C + add sp, sp, #0x1c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020A9F04: .word 0x00007FFF +_020A9F08: .word 0x020FF5D4 +_020A9F0C: .word 0x020FF5C4 + + arm_func_start FUN_020A9F10 +FUN_020A9F10: ; 0x020A9F10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x1c + cmp r2, #0x0 + addls sp, sp, #0x1c + mov r12, #0x0 + ldmlsia sp!, {r4-r11,pc} +_020A9F28: ; 0x020A9F28 + mov r4, #0x8000 + ldr fp, _020AA098 ; =0x00007FFF + str r12, [sp, #0x8] + str r12, [sp, #0x14] + rsb r4, r4, #0x0 + mov lr, #0x58 +_020A9F40: + ldrb r5, [r0, #0x0] + ldrb r6, [r3, #0x2] + ldrsh r7, [r3, #0x0] + and r9, r5, #0xf + ldr r5, _020AA09C ; =0x020FF5D4 + mov r8, r6, lsl #0x1 + ldrsh r8, [r5, r8] + ands r5, r9, #0x4 + mov r5, r8, asr #0x3 + addne r5, r5, r8 + ands r10, r9, #0x2 + str r10, [sp, #0x0] + addne r5, r5, r8, asr #0x1 + ands r10, r9, #0x1 + addne r5, r5, r8, asr #0x2 + str r10, [sp, #0x4] + ands r8, r9, #0x8 + beq _020A9FA0 + sub r7, r7, r5 + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r7, r5 + movlt r7, r4 + b _020A9FAC +_020A9FA0: + add r7, r7, r5 + cmp r7, r11 + movgt r7, r11 +_020A9FAC: + ldr r5, _020AA0A0 ; =0x020FF5C4 + ldrsb r5, [r5, r9] + adds r6, r6, r5 + ldrmi r6, [sp, #0x8] + bmi _020A9FC8 + cmp r6, #0x58 + movgt r6, lr +_020A9FC8: + mov r5, r7, lsl #0x10 + mov r5, r5, asr #0x10 + strh r5, [r3, #0x0] + strb r6, [r3, #0x2] + strh r5, [r1, #0x0] + ldrb r5, [r0, #0x0] + ldrb r6, [r3, #0x2] + ldrsh r7, [r3, #0x0] + mov r5, r5, asr #0x4 + and r9, r5, #0xf + ldr r5, _020AA09C ; =0x020FF5D4 + mov r8, r6, lsl #0x1 + ldrsh r8, [r5, r8] + ands r5, r9, #0x4 + mov r5, r8, asr #0x3 + addne r5, r5, r8 + ands r10, r9, #0x2 + str r10, [sp, #0xc] + addne r5, r5, r8, asr #0x1 + ands r10, r9, #0x1 + addne r5, r5, r8, asr #0x2 + str r10, [sp, #0x10] + ands r8, r9, #0x8 + beq _020AA040 + sub r7, r7, r5 + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r7, r5 + movlt r7, r4 + b _020AA04C +_020AA040: + add r7, r7, r5 + cmp r7, r11 + movgt r7, r11 +_020AA04C: + ldr r5, _020AA0A0 ; =0x020FF5C4 + ldrsb r5, [r5, r9] + adds r6, r6, r5 + ldrmi r6, [sp, #0x14] + bmi _020AA068 + cmp r6, #0x58 + movgt r6, lr +_020AA068: + mov r5, r7, lsl #0x10 + mov r7, r5, asr #0x10 + strh r7, [r3, #0x0] + strb r6, [r3, #0x2] + add r12, r12, #0x1 + strh r7, [r1, #0x2] + cmp r12, r2 + add r1, r1, #0x4 + add r0, r0, #0x1 + blo _020A9F40 + add sp, sp, #0x1c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AA098: .word 0x00007FFF +_020AA09C: .word 0x020FF5D4 +_020AA0A0: .word 0x020FF5C4 + + arm_func_start FUN_020AA0A4 +FUN_020AA0A4: + stmdb sp!, {r4-r8,lr} + ldr r0, _020AA1B4 ; =0x021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4-r8,pc} +_020AA0BC: ; 0x020AA0BC + ldr r1, _020AA1B8 ; =0x021CAF00 + ldr r0, [r1, #0x8c8] + cmp r0, #0x0 + bne _020AA0FC + bl FUN_020AA4C0 + ldr r1, _020AA1B8 ; =0x021CAF00 + cmp r0, #0x0 + str r0, [r1, #0x8c8] + beq _020AA0F4 + ldr r0, _020AA1BC ; =0x021CA8C8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} +_020AA0F4: + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} +_020AA0FC: + ldr r0, _020AA1C0 ; =0x021CCD20 + mov r5, #0x1 + ldr r0, [r0, #0x10] + cmp r0, #0x2 + bne _020AA130 + ldr r3, [r1, #0x8d4] + ldr r2, _020AA1C4 ; =0x020FF694 + mov r0, #0x3 + mla r0, r3, r0, r2 + ldr r3, [r1, #0x8d0] + add r2, r3, #0x1 + ldrb r5, [r3, r0] + str r2, [r1, #0x8d0] +_020AA130: + mov r4, #0x0 + ldr r7, _020AA1B8 ; =0x021CAF00 + mov r8, #0x80000000 + ldr r6, _020AA1C8 ; =0x021CA8BC + b _020AA1A4 +_020AA144: + ldr r1, [r7, #0x8cc] + mov r2, r1 + clz r2, r2 + cmp r2, #0x20 + beq _020AA1AC + mvn r0, r8, lsr r2 + and r3, r1, r0 + rsb r0, r2, #0x1f + ldr r1, [r7, #0x8c8] + ldr r2, [r6, #0x0] + str r3, [r7, #0x8cc] + and r0, r0, #0xff + bl FUN_021EAE90 + ldr r0, [r7, #0x8cc] + cmp r0, #0x0 + bne _020AA1A0 + ldr r1, [r7, #0x8c0] + mov r0, #0x0 + add r1, r1, #0x1 + str r1, [r7, #0x8c0] + str r0, [r7, #0x8c8] + str r0, [r7, #0x8cc] + b _020AA1AC +_020AA1A0: + add r4, r4, #0x1 +_020AA1A4: + cmp r4, r5 + blt _020AA144 +_020AA1AC: + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AA1B4: .word 0x021CA8D0 +_020AA1B8: .word 0x021CAF00 +_020AA1BC: .word 0x021CA8C8 +_020AA1C0: .word 0x021CCD20 +_020AA1C4: .word 0x020FF694 +_020AA1C8: .word 0x021CA8BC + + arm_func_start FUN_020AA1CC +FUN_020AA1CC: ; 0x020AA1CC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + bl FUN_020AB154 +_020AA1D8: ; 0x020AA1D8 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020AA1E8: ; 0x020AA1E8 + ldrb r5, [r0, #0x11] + mov r0, r5 + bl FUN_020AB144 + mov r6, r0 + cmp r6, #0x0 + mov r7, #0x0 + ble _020AA294 +_020AA204: + mov r0, r5 + bl FUN_020AB10C + mov r4, r0 + ldr r3, [r4, #0xc] + cmp r3, #0x2 + blt _020AA230 + ldr r0, [r4, #0x474] + ldr r2, [r4, #0x14] + add r1, r4, #0x1c + bl FUN_020A8C28 + b _020AA25C +_020AA230: + cmp r3, #0x1 + bne _020AA24C + ldr r0, [r4, #0x474] + ldr r2, [r4, #0x14] + add r1, r4, #0x1c + bl FUN_020AB328 + b _020AA25C +_020AA24C: + ldr r0, [r4, #0x474] + ldr r2, [r4, #0x14] + add r1, r4, #0x1c + bl FUN_020AB2C0 +_020AA25C: + add r1, r4, #0x1c + mov r0, r4 + str r1, [r4, #0x474] + bl FUN_020AB088 + ldrb r1, [r4, #0x11] + mov r0, r4 + bl FUN_020AB500 +_020AA278: ; 0x020AA278 + cmp r0, #0x0 + bge _020AA288 + mov r0, r4 + bl FUN_020ACD90 +_020AA288: + add r7, r7, #0x1 + cmp r7, r6 + blt _020AA204 +_020AA294: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020AA2A0 +FUN_020AA2A0: ; 0x020AA2A0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r4, _020AA4A8 ; =0x021CA8D0 + mov r10, r0 + ldr r0, [r4, #0x0] + ldr r7, [sp, #0x28] + cmp r0, #0x0 + mov r5, #0x0 + mov r9, r1 + mov r8, r2 + mov r11, r3 + addeq sp, sp, #0x4 + moveq r0, r5 + ldmeqia sp!, {r4-r11,pc} +_020AA2D8: ; 0x020AA2D8 + ldr r1, _020AA4AC ; =0x021CA8E8 + mov r2, r5 +_020AA2E0: + ldr r0, [r1, #0x38] + cmp r10, r0 + ldreq r1, _020AA4AC ; =0x021CA8E8 + moveq r0, #0x94 + mlaeq r5, r2, r0, r1 + beq _020AA308 + add r2, r2, #0x1 + cmp r2, #0x3 + add r1, r1, #0x94 + blo _020AA2E0 +_020AA308: + cmp r5, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} +_020AA318: ; 0x020AA318 + ldrb r0, [r9, #0x4] + cmp r0, #0x41 + bne _020AA344 + ldrh r2, [r9, #0x6] + mov r0, #0x0 + mov r1, #0x1 + str r2, [r5, #0x30] + str r0, [r5, #0x4c] + add sp, sp, #0x4 + str r1, [r5, #0x6c] + ldmia sp!, {r4-r11,pc} +_020AA344: + cmp r0, #0x40 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} +_020AA354: ; 0x020AA354 + ldrb r0, [r9, #0x5] + and r4, r0, #0x7f + cmp r4, #0x5 + addge sp, sp, #0x4 + str r4, [r5, #0x24] + movge r0, #0x0 + ldmgeia sp!, {r4-r11,pc} +_020AA370: ; 0x020AA370 + ldr r1, _020AA4B0 ; =0x020FF689 + ldr r0, _020AA4B4 ; =0x020FF688 + ldrb r2, [r1, r4, lsl #0x1] + ldrb r1, [r0, r4, lsl #0x1] + mov r0, #0x44 + mla r0, r1, r0, r2 + add r0, r0, #0xc + cmp r8, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} +_020AA39C: ; 0x020AA39C + cmp r10, #0x0 + movne r0, #0x1 + movne r1, r0, lsl r10 + ldr r0, _020AA4B8 ; =0x021CA8B4 + moveq r1, #0x1 + ldr r0, [r0, #0x0] + ands r0, r0, r1 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} +_020AA3C4: ; 0x020AA3C4 + bl FUN_020ACDC8 + movs r6, r0 + bne _020AA40C + ldr r0, [r5, #0x34] + bl FUN_020AB6C4 + ldr r0, [r5, #0x34] + bl FUN_020AB234 + bl FUN_020ACDC8 + movs r6, r0 + bne _020AA3FC + bl FUN_020AB630 + bl FUN_020AB1E4 + bl FUN_020ACDC8 + mov r6, r0 +_020AA3FC: + cmp r6, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} +_020AA40C: + ldr r0, _020AA4BC ; =0x0000045C + sub r2, r8, #0xc + add r0, r6, r0 + sub r1, r0, r2 + add r0, r9, #0xc + str r1, [sp, #0x0] + bl MI_CpuCopy8 + ldr r0, [r5, #0x34] + sub r1, r8, #0xc + strb r0, [r6, #0x11] + ldr r0, [sp, #0x0] + str r4, [r6, #0xc] + str r0, [r6, #0x474] + str r1, [r6, #0x14] + str r11, [r6, #0x464] + str r7, [r6, #0x468] + strb r10, [r6, #0x10] + ldrb r2, [r9, #0x5] + mov r0, r5 + mov r1, r6 + and r2, r2, #0x80 + str r2, [r6, #0x45c] + ldr r2, [r9, #0x8] + str r2, [r6, #0x460] + ldrh r2, [r9, #0x6] + str r2, [r6, #0x18] + bl FUN_020AB760 +_020AA478: ; 0x020AA478 + cmp r0, #0x0 + bne _020AA494 + mov r0, r6 + bl FUN_020ACD90 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020AA494: + mov r0, r6 + bl FUN_020AB164 + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AA4A8: .word 0x021CA8D0 +_020AA4AC: .word 0x021CA8E8 +_020AA4B0: .word 0x020FF689 +_020AA4B4: .word 0x020FF688 +_020AA4B8: .word 0x021CA8B4 +_020AA4BC: .word 0x0000045C + + arm_func_start FUN_020AA4C0 +FUN_020AA4C0: ; 0x020AA4C0 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r0, _020AA728 ; =0x021CAF00 + ldr r1, _020AA72C ; =0x021CA8CC + ldr r3, [r0, #0x8c4] + ldr r2, [r0, #0x8c0] + ldr r5, [r1, #0x0] + sub r1, r3, r2 + cmp r1, #0x1 + subhi r1, r3, #0x1 + strhi r1, [r0, #0x8c0] + movhi r1, #0x1 + cmp r1, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020AA500: ; 0x020AA500 + ldr r0, _020AA728 ; =0x021CAF00 + ldr r0, [r0, #0x8c0] + ands r0, r0, #0x1 + movne r1, #0x0 + moveq r1, #0x460 + ldr r0, _020AA728 ; =0x021CAF00 + cmp r5, #0x2 + add r8, r0, r1 + ldr r1, _020AA730 ; =0x021CA8D4 + add r7, r8, #0xc + addge r7, r7, #0x4 + ldr r1, [r1, #0x0] + mov r0, r7 + bl FUN_020AD500 + ldr r2, _020AA734 ; =0x040002B0 + mov r3, #0x0 + ldr r1, _020AA738 ; =0x040002B8 + mov r6, r0 + strh r3, [r2, #0x0] + str r6, [r1, #0x0] +_020AA550: + ldrh r0, [r2, #0x0] + ands r0, r0, #0x8000 + bne _020AA550 + ldr r0, _020AA73C ; =0x021CA8C8 + ldr r1, _020AA740 ; =0x040002B4 + ldr r0, [r0, #0x0] + ldr r4, [r1, #0x0] + cmp r0, #0x0 + beq _020AA588 + ldr r1, _020AA730 ; =0x021CA8D4 + mov r0, r7 + ldr r1, [r1, #0x0] + mov r2, r4 + bl FUN_020AD1CC +_020AA588: + ldr r0, _020AA744 ; =0x0210646C + strb r5, [r8, #0x5] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020AA5FC + mov r0, r6 + mov r1, r4 + mov r2, #0x0 + bl FUN_020ACF38 + ldr r1, _020AA748 ; =0x021CA8D8 + cmp r0, #0x0 + str r0, [r1, #0x0] + beq _020AA5D4 + cmp r0, #0x1 + beq _020AA5F0 + cmp r0, #0x3 + moveq r0, #0x41 + streqb r0, [r8, #0x4] + b _020AA5FC +_020AA5D4: + ldr r1, _020AA728 ; =0x021CAF00 + add sp, sp, #0x8 + ldr r2, [r1, #0x8c0] + mov r0, #0x0 + add r2, r2, #0x1 + str r2, [r1, #0x8c0] + ldmia sp!, {r4-r8,pc} +_020AA5F0: + ldrb r0, [r8, #0x5] + orr r0, r0, #0x80 + strb r0, [r8, #0x5] +_020AA5FC: + ldr r0, _020AA744 ; =0x0210646C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020AA62C + ldr r0, _020AA74C ; =0x021CA8B8 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldrneb r2, [r8, #0x5] + movne r1, #0x0 + orrne r2, r2, #0x80 + strneb r2, [r8, #0x5] + strne r1, [r0, #0x0] +_020AA62C: + ldr r0, _020AA750 ; =0x021CA8C4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldrneb r2, [r8, #0x5] + movne r1, #0x0 + orrne r2, r2, #0x80 + strneb r2, [r8, #0x5] + strne r1, [r0, #0x0] + cmp r5, #0x2 + blt _020AA690 + ldrb r0, [r8, #0x5] + ldr r3, _020AA754 ; =0x021CA8C0 + ands r0, r0, #0x80 + ldrne r0, _020AA754 ; =0x021CA8C0 + movne r1, #0x0 + strneh r1, [r0, #0x0] + strneb r1, [r0, #0x2] + ldr r0, _020AA730 ; =0x021CA8D4 + str r5, [sp, #0x0] + ldr r2, [r0, #0x0] + mov r1, r7 + sub r0, r7, #0x4 + mov r2, r2, lsr #0x1 + bl FUN_020A8BC8 + b _020AA6D4 +_020AA690: + cmp r5, #0x1 + bne _020AA6B4 + ldr r1, _020AA730 ; =0x021CA8D4 + mov r0, r7 + ldr r2, [r1, #0x0] + mov r1, r7 + mov r2, r2, lsr #0x1 + bl FUN_020AB37C + b _020AA6D4 +_020AA6B4: + cmp r5, #0x0 + bne _020AA6D4 + ldr r1, _020AA730 ; =0x021CA8D4 + mov r0, r7 + ldr r2, [r1, #0x0] + mov r1, r7 + mov r2, r2, lsr #0x1 + bl FUN_020AB2FC +_020AA6D4: + ldr r0, _020AA758 ; =0x021CCD20 + ldr r1, _020AA75C ; =0x021CA8B4 + ldrb r0, [r0, #0x0] + mov r2, #0x1 + ldr r3, [r1, #0x0] + mvn r0, r2, lsl r0 + ldr r1, _020AA728 ; =0x021CAF00 + and r0, r3, r0 + str r3, [r1, #0x8cc] + str r0, [r1, #0x8cc] + bl MATH_CountPopulation + sub r0, r0, #0x1 + ldr r1, _020AA728 ; =0x021CAF00 + cmp r0, #0x7 + str r0, [r1, #0x8d4] + movgt r0, #0x0 + movle r2, #0x0 + movle r0, r8 + strle r2, [r1, #0x8d0] + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AA728: .word 0x021CAF00 +_020AA72C: .word 0x021CA8CC +_020AA730: .word 0x021CA8D4 +_020AA734: .word 0x040002B0 +_020AA738: .word 0x040002B8 +_020AA73C: .word 0x021CA8C8 +_020AA740: .word 0x040002B4 +_020AA744: .word 0x0210646C +_020AA748: .word 0x021CA8D8 +_020AA74C: .word 0x021CA8B8 +_020AA750: .word 0x021CA8C4 +_020AA754: .word 0x021CA8C0 +_020AA758: .word 0x021CCD20 +_020AA75C: .word 0x021CA8B4 + + arm_func_start FUN_020AA760 +FUN_020AA760: ; 0x020AA760 + ldr r1, _020AA76C ; =0x021CA8C8 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020AA76C: .word 0x021CA8C8 + + arm_func_start FUN_020AA770 +FUN_020AA770: ; 0x020AA770 + stmdb sp!, {r4,lr} + ldr r1, _020AA798 ; =0x0210646C + mov r4, r0 + str r4, [r1, #0x0] + bl FUN_020AD170 +_020AA784: ; 0x020AA784 + cmp r4, #0x0 + ldreq r0, _020AA79C ; =0x021CA8B8 + moveq r1, #0x1 + streq r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AA798: .word 0x0210646C +_020AA79C: .word 0x021CA8B8 + + arm_func_start FUN_020AA7A0 +FUN_020AA7A0: ; 0x020AA7A0 + cmp r0, #0x5 + movge r0, #0x0 + bxge lr + ldr r1, _020AA80C ; =0x021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x1 + beq _020AA7C8 + cmp r0, #0x1 + movls r0, #0x0 + bxls lr +_020AA7C8: + ldr r2, _020AA810 ; =0x020FF689 + ldr r1, _020AA814 ; =0x020FF688 + ldrb r12, [r2, r0, lsl #0x1] + ldrb r3, [r1, r0, lsl #0x1] + mov r1, #0x44 + ldr r2, _020AA818 ; =0x021CA8CC + mla r12, r3, r1, r12 + str r0, [r2, #0x0] + ldr r1, _020AA81C ; =0x021CA8BC + add r3, r12, #0xc + ldr r0, _020AA820 ; =0x021CA8C0 + mov r2, #0x0 + str r3, [r1, #0x0] + strh r2, [r0, #0x0] + strb r2, [r0, #0x2] + mov r0, #0x1 + bx lr + .balign 4 +_020AA80C: .word 0x021CCD20 +_020AA810: .word 0x020FF689 +_020AA814: .word 0x020FF688 +_020AA818: .word 0x021CA8CC +_020AA81C: .word 0x021CA8BC +_020AA820: .word 0x021CA8C0 + + arm_func_start FUN_020AA824 +FUN_020AA824: ; 0x020AA824 + stmdb sp!, {r4-r10,lr} + movs r5, r2 + mov r7, r0 + movne r0, #0x0 + strne r0, [r5, #0x0] + ldr r0, _020AA958 ; =0x021CA8D4 + mov r6, r1 + ldr r0, [r0, #0x0] + mov r4, #0x0 + cmp r6, r0 + bne _020AA920 + ldr r8, _020AA95C ; =0x021CA8D0 + ldr r0, [r8, #0x0] + cmp r0, #0x0 + beq _020AA920 + mov r9, r4 + cmp r0, #0x0 + bls _020AA89C +_020AA86C: + mov r0, r7 + mov r1, r6 + mov r2, r9 + mov r3, r5 + bl FUN_020AA968 + cmp r0, #0x1 + moveq r4, #0x1 + beq _020AA89C + ldr r0, [r8, #0x0] + add r9, r9, #0x1 + cmp r9, r0 + blo _020AA86C +_020AA89C: + cmp r4, #0x0 + beq _020AA90C + ldr r8, _020AA95C ; =0x021CA8D0 + add r10, r9, #0x1 + ldr r0, [r8, #0x0] + cmp r10, r0 + moveq r4, #0x1 + beq _020AA934 + cmp r10, r0 + bhs _020AA934 + ldr sb, _020AA960 ; =0x021CAAA4 +_020AA8C8: + mov r0, r9 + mov r1, r6 + mov r2, r10 + mov r3, r5 + bl FUN_020AA968 + cmp r0, #0x1 + bne _020AA8F8 + mov r0, r7 + mov r1, r9 + mov r2, r7 + mov r3, r6 + bl FUN_020AD61C +_020AA8F8: + ldr r0, [r8, #0x0] + add r10, r10, #0x1 + cmp r10, r0 + blo _020AA8C8 + b _020AA934 +_020AA90C: + mov r1, r7 + mov r2, r6 + mov r0, #0x0 + bl MIi_CpuClearFast + b _020AA934 +_020AA920: + mov r1, r7 + mov r2, r6 + mov r0, #0x0 + bl MIi_CpuClearFast + mov r4, #0x0 +_020AA934: + ldr r0, _020AA964 ; =0x021CA8C8 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020AA950 + mov r0, r7 + mov r1, r6 + bl FUN_020AD45C +_020AA950: + mov r0, r4 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020AA958: .word 0x021CA8D4 +_020AA95C: .word 0x021CA8D0 +_020AA960: .word 0x021CAAA4 +_020AA964: .word 0x021CA8C8 + + arm_func_start FUN_020AA968 +FUN_020AA968: ; 0x020AA968 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + ldr r4, _020AABD4 ; =0x021CA8E8 + mov r10, r2 + mov r2, #0x94 + mla r6, r10, r2, r4 + str r0, [sp, #0x0] + mov r0, r10 + str r1, [sp, #0x4] + str r3, [sp, #0x8] + mov r5, #0x1 + bl FUN_020AB434 + movs r8, r0 + beq _020AABB0 + mov r11, #0x0 +_020AA9A4: + bl OS_GetTick + mov r4, r0 + mov r0, r10 + mov r9, r1 + bl FUN_020AB4B8 + movs r7, r0 + beq _020AAB98 + mov r0, #0x34 + adds r2, r4, r0 + ldr r8, [r7, #0x46c] + ldr r3, [r7, #0x470] + mov r1, #0x0 + adc r0, r9, #0x0 + cmp r3, r0 + cmpeq r8, r2 + bls _020AAA68 + ldr r0, [r7, #0x45c] + cmp r0, #0x0 + bne _020AAA5C + ldr r0, [r6, #0x3c] + cmp r0, #0x0 + beq _020AAA5C + ldr r0, [r6, #0x20] + ldr r1, [sp, #0x0] + add r0, r0, #0x1 + str r0, [r6, #0x20] + ldr r0, [r6, #0x3c] + ldr r2, [sp, #0x4] + ldr r0, [r0, #0x474] + bl MIi_CpuCopyFast + ldr r0, [r6, #0x3c] + bl FUN_020ACD90 +_020AAA24: ; 0x020AAA24 + mov r0, #0x0 + str r0, [r6, #0x3c] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020AAA50 + ldrb r1, [r7, #0x10] + ldr r2, [r0, #0x0] + mov r0, #0x1 + orr r1, r2, r0, lsl r1 + ldr r0, [sp, #0x8] + str r1, [r0, #0x0] +_020AAA50: + add sp, sp, #0xc + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020AAA5C: + add sp, sp, #0xc + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020AAA68: + ldr r0, _020AABD8 ; =0x00008B4C + adds r2, r8, r0 + adc r0, r3, r1 + cmp r9, r0 + cmpeq r4, r2 + bls _020AAAA8 + ldr r2, [r7, #0x18] + mov r0, r6 + mov r1, r7 + str r2, [r6, #0x58] + bl FUN_020ABC0C + mov r8, r0 + mov r0, r10 + bl FUN_020AB4B8 + mov r5, r11 + b _020AABA8 +_020AAAA8: + ldr r1, [r6, #0x58] + ldr r2, [r7, #0x18] + add r0, r1, #0x1 + cmp r0, r2 + beq _020AAAE0 + cmp r1, #0x0 + beq _020AAAE0 + cmp r1, r2 + bhi _020AAAE0 + ldr r0, [r7, #0x45c] + cmp r0, #0x0 + ldreq r0, [r6, #0x14] + addeq r0, r0, #0x1 + streq r0, [r6, #0x14] +_020AAAE0: + ldr r0, [r7, #0x18] + cmp r5, #0x0 + str r0, [r6, #0x58] + beq _020AAB24 + ldr r0, [r6, #0x70] + cmp r0, #0x0 + beq _020AAB24 + mov r0, r6 + mov r1, r7 + bl FUN_020ABC0C + mov r8, r0 + mov r0, r10 + bl FUN_020AB4B8 + ldr r0, [r6, #0x70] + sub r0, r0, #0x1 + str r0, [r6, #0x70] + b _020AABA8 +_020AAB24: + ldr r1, [r7, #0x464] + ldr r0, [r6, #0x28] + subs r2, r4, r1 + str r2, [r6, #0x28] + ldr r1, [r6, #0x28] + sub r0, r2, r0 + sub r0, r0, r1 + add r0, r1, r0, lsr #0x4 + str r0, [r6, #0x2c] + str r0, [r6, #0x0] + ldr r0, [r7, #0x474] + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + bl MIi_CpuCopyFast + mov r0, r6 + mov r1, r7 + bl FUN_020ABC0C + ldr r0, [sp, #0x8] + cmp r0, #0x0 + beq _020AAB8C + ldrb r1, [r7, #0x10] + ldr r2, [r0, #0x0] + mov r0, #0x1 + orr r1, r2, r0, lsl r1 + ldr r0, [sp, #0x8] + str r1, [r0, #0x0] +_020AAB8C: + add sp, sp, #0xc + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020AAB98: + add sp, sp, #0xc + str r8, [r6, #0x8] + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020AABA8: + cmp r8, #0x0 + bne _020AA9A4 +_020AABB0: + ldr r0, [r6, #0x3c] + cmp r0, #0x0 + beq _020AABC8 + bl FUN_020ACD90 +_020AABC0: ; 0x020AABC0 + mov r0, #0x0 + str r0, [r6, #0x3c] +_020AABC8: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AABD4: .word 0x021CA8E8 +_020AABD8: .word 0x00008B4C + + arm_func_start FUN_020AABDC +FUN_020AABDC: ; 0x020AABDC + stmdb sp!, {r4,lr} + ldr r3, _020AACE0 ; =0x021CA8D4 + mov r2, r1 + ldr r1, [r3, #0x0] + mov r12, #0x0 + cmp r2, r1 + movne r0, r12 + ldmneia sp!, {r4,pc} +_020AABFC: ; 0x020AABFC + ldr r1, _020AACE4 ; =0x021CA8D0 + ldr r4, [r1, #0x0] + cmp r4, #0x0 + moveq r0, r12 + ldmeqia sp!, {r4,pc} +_020AAC10: ; 0x020AAC10 + mov lr, r12 + cmp r4, #0x0 + bls _020AAC48 + ldr r3, _020AACE8 ; =0x021CA8DC +_020AAC20: + ldr r1, [r3, lr, lsl #0x2] + cmp r1, #0x0 + beq _020AAC3C + ldr r1, [r1, #0xc] + cmp r1, #0x2 + moveq r12, #0x1 + beq _020AAC48 +_020AAC3C: + add lr, lr, #0x1 + cmp lr, r4 + blo _020AAC20 +_020AAC48: + cmp r12, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020AAC54: ; 0x020AAC54 + ldr r1, _020AACEC ; =0x021CAF00 + ldr r4, _020AACEC ; =0x021CAF00 + ldr r1, [r1, #0x8c4] + ldr r3, _020AACF0 ; =0x5F564354 + ands r1, r1, #0x1 + movne r12, #0x0 + moveq r12, #0x460 + str r3, [r4, r12] + ldr r1, _020AACF4 ; =0x021CA8CC + add r4, r4, r12 + ldr r1, [r1, #0x0] + cmp r1, #0x2 + blt _020AAC94 + add r1, r4, #0x10 + bl MIi_CpuCopyFast + b _020AAC9C +_020AAC94: + add r1, r4, #0xc + bl MIi_CpuCopyFast +_020AAC9C: + mov r1, #0x40 + ldr r0, _020AACF8 ; =0x021CA8B0 + strb r1, [r4, #0x4] + ldrh r2, [r0, #0x0] + add r1, r2, #0x1 + strh r1, [r0, #0x0] + strh r2, [r4, #0x6] + bl OS_GetTick + mov r0, r0, lsr #0x6 + orr r0, r0, r1, lsl #0x1a + ldr r1, _020AACEC ; =0x021CAF00 + str r0, [r4, #0x8] + ldr r2, [r1, #0x8c4] + mov r0, #0x1 + add r2, r2, #0x1 + str r2, [r1, #0x8c4] + ldmia sp!, {r4,pc} + .balign 4 +_020AACE0: .word 0x021CA8D4 +_020AACE4: .word 0x021CA8D0 +_020AACE8: .word 0x021CA8DC +_020AACEC: .word 0x021CAF00 +_020AACF0: .word 0x5F564354 +_020AACF4: .word 0x021CA8CC +_020AACF8: .word 0x021CA8B0 + + arm_func_start FUN_020AACFC +FUN_020AACFC: ; 0x020AACFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, #0x0 + ldr ip, _020AADB8 ; =0x021CA8DC +_020AAD10: + ldr r0, [r12, r4, lsl #0x2] + mov lr, r4, lsl #0x2 + cmp r0, r5 + bne _020AAD74 + ldr r1, _020AADBC ; =0x021CA8E8 + mov r0, #0x94 + mla r0, r4, r0, r1 + ldr r1, _020AADC0 ; =0x021CA8D0 + mov r3, #0x0 + ldr r2, [r1, #0x0] + str r3, [r12, lr] + sub r2, r2, #0x1 + str r2, [r1, #0x0] + bl FUN_020ABC40 + mov r0, r4 + bl FUN_020AB6C4 + mov r0, r4 + bl FUN_020AB234 + ldr r0, _020AADC4 ; =0x021CA8B4 + ldr r1, [r5, #0x8] + ldr r2, [r0, #0x0] + mvn r1, r1 + and r1, r2, r1 + str r1, [r0, #0x0] + b _020AAD80 +_020AAD74: + add r4, r4, #0x1 + cmp r4, #0x3 + blo _020AAD10 +_020AAD80: + ldr r0, _020AADC0 ; =0x021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} +_020AAD94: ; 0x020AAD94 + ldr r0, _020AADC8 ; =0x021CA8C4 + mov r1, #0x1 + str r1, [r0, #0x0] + bl FUN_020AD170 + ldr r0, _020AADC4 ; =0x021CA8B4 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AADB8: .word 0x021CA8DC +_020AADBC: .word 0x021CA8E8 +_020AADC0: .word 0x021CA8D0 +_020AADC4: .word 0x021CA8B4 +_020AADC8: .word 0x021CA8C4 + + arm_func_start FUN_020AADCC +FUN_020AADCC: ; 0x020AADCC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020AADE4: ; 0x020AADE4 + ldr r0, _020AAF24 ; =0x021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x3 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020AADFC: ; 0x020AADFC + ldr r0, [r5, #0xc] + cmp r0, #0x2 + beq _020AAE18 + cmp r0, #0x3 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r5,pc} +_020AAE18: + ldr r1, _020AAF28 ; =0x021CA8DC + mov r2, #0x0 +_020AAE20: + ldr r0, [r1, r2, lsl #0x2] + cmp r0, r5 + addeq sp, sp, #0x4 + moveq r0, #0x1 + ldmeqia sp!, {r4-r5,pc} +_020AAE34: ; 0x020AAE34 + add r2, r2, #0x1 + cmp r2, #0x3 + blo _020AAE20 + ldr r1, _020AAF28 ; =0x021CA8DC + mov r4, #0x0 +_020AAE48: + ldr r0, [r1, r4, lsl #0x2] + mov r2, r4, lsl #0x2 + cmp r0, #0x0 + streq r5, [r1, r2] + beq _020AAE68 + add r4, r4, #0x1 + cmp r4, #0x3 + blo _020AAE48 +_020AAE68: + ldr r0, _020AAF24 ; =0x021CA8D0 + ldr r1, _020AAF2C ; =0x021CA8B4 + ldr r3, [r0, #0x0] + ldr r2, _020AAF30 ; =0x021CA8E8 + add r3, r3, #0x1 + str r3, [r0, #0x0] + mov r0, #0x94 + ldr r12, [r1, #0x0] + ldr r3, [r5, #0x8] + mla r0, r4, r0, r2 + orr r2, r12, r3 + str r2, [r1, #0x0] + ldrb r2, [r5, #0x5] + mov r1, r4 + bl FUN_020ABC6C + mov r0, r4 + bl FUN_020AB714 + ldr r0, [r5, #0xc] + cmp r0, #0x2 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r5,pc} +_020AAEC0: ; 0x020AAEC0 + ldr r0, _020AAF24 ; =0x021CA8D0 + ldr r0, [r0, #0x0] + cmp r0, #0x1 + bne _020AAF18 + bl FUN_020AD170 + bl OS_GetTickLo + ldr r4, _020AAF34 ; =0x021CA8B0 + ldr r3, _020AAF38 ; =0x021CA8C0 + mov r12, #0x0 + ldr r1, _020AAF3C ; =0x021CAF00 + ldr r2, _020AAF40 ; =0x021CA8C4 + mov r5, #0x1 + strh r0, [r4, #0x0] + strh r12, [r3, #0x0] + strb r12, [r3, #0x2] + str r5, [r2, #0x0] + str r12, [r1, #0x8c0] + str r12, [r1, #0x8c4] + str r12, [r1, #0x8cc] + str r12, [r1, #0x8c8] + str r12, [r1, #0x8d0] + str r12, [r1, #0x8d4] +_020AAF18: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AAF24: .word 0x021CA8D0 +_020AAF28: .word 0x021CA8DC +_020AAF2C: .word 0x021CA8B4 +_020AAF30: .word 0x021CA8E8 +_020AAF34: .word 0x021CA8B0 +_020AAF38: .word 0x021CA8C0 +_020AAF3C: .word 0x021CAF00 +_020AAF40: .word 0x021CA8C4 + + arm_func_start FUN_020AAF44 +FUN_020AAF44: ; 0x020AAF44 + ldr r0, _020AAF54 ; =0x021CA8D0 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020AAF54: .word 0x021CA8D0 + + arm_func_start FUN_020AAF58 +FUN_020AAF58: + stmdb sp!, {r4-r8,lr} + bl OS_GetTickLo + ldr r1, _020AB054 ; =0x021CCD20 + ldr ip, _020AB058 ; =0x021CA8B0 + ldr r4, [r1, #0x10] + strh r0, [r12, #0x0] + cmp r4, #0x1 + ldreq r0, _020AB05C ; =0x021CA8CC + mov r5, #0x0 + ldr r1, _020AB060 ; =0x021CA8B4 + streq r5, [r0, #0x0] + str r5, [r1, #0x0] + ldr r2, _020AB064 ; =0x021CA8D0 + ldrne r0, _020AB05C ; =0x021CA8CC + movne r1, #0x4 + strne r1, [r0, #0x0] + str r5, [r2, #0x0] + ldr r0, _020AB05C ; =0x021CA8CC + ldr r3, _020AB068 ; =0x0210646C + ldr r2, [r0, #0x0] + mov r6, #0x1 + ldr r1, _020AB06C ; =0x020FF689 + str r6, [r3, #0x0] + ldr r0, _020AB070 ; =0x020FF688 + ldrb r3, [r1, r2, lsl #0x1] + ldrb r1, [r0, r2, lsl #0x1] + mov r0, #0x44 + ldr r2, _020AB074 ; =0x021CA8D4 + mla r0, r1, r0, r3 + add r4, r0, #0xc + ldr r1, _020AB078 ; =0x021CA8BC + mov r5, #0x440 + ldr r0, _020AB07C ; =0x021CAF00 + mov r3, #0x0 + str r5, [r2, #0x0] + str r4, [r1, #0x0] + str r3, [r0, #0x8c0] + str r3, [r0, #0x8c4] + str r3, [r0, #0x8cc] + str r3, [r0, #0x8c8] + str r3, [r0, #0x8d0] + str r3, [r0, #0x8d4] + bl FUN_020ACF10 + mov r8, #0x0 + ldr r7, _020AB080 ; =0x021CA8E8 + ldr r5, _020AB084 ; =0x021CA8DC + mov r6, r8 + mvn r4, #0x0 +_020AB018: + mov r0, r8 + str r6, [r5, r8, lsl #0x2] + bl FUN_020AB714 + mov r0, r7 + mov r1, r8 + mov r2, r4 + bl FUN_020ABC6C + add r8, r8, #0x1 + cmp r8, #0x3 + add r7, r7, #0x94 + blo _020AB018 + bl FUN_020AB284 + bl FUN_020AD474 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AB054: .word 0x021CCD20 +_020AB058: .word 0x021CA8B0 +_020AB05C: .word 0x021CA8CC +_020AB060: .word 0x021CA8B4 +_020AB064: .word 0x021CA8D0 +_020AB068: .word 0x0210646C +_020AB06C: .word 0x020FF689 +_020AB070: .word 0x020FF688 +_020AB074: .word 0x021CA8D4 +_020AB078: .word 0x021CA8BC +_020AB07C: .word 0x021CAF00 +_020AB080: .word 0x021CA8E8 +_020AB084: .word 0x021CA8DC + + arm_func_start FUN_020AB088 +FUN_020AB088: ; 0x020AB088 + ldr r2, [r0, #0x4] + cmp r2, #0x0 + ldrne r1, [r0, #0x8] + strne r1, [r2, #0x8] + bne _020AB0B4 + ldr r2, [r0, #0x8] + ldr r1, _020AB100 ; =0x021CB7D8 + cmp r2, #0x0 + str r2, [r1, #0x0] + movne r1, #0x0 + strne r1, [r2, #0x4] +_020AB0B4: + ldr r2, [r0, #0x8] + cmp r2, #0x0 + ldrne r1, [r0, #0x4] + strne r1, [r2, #0x4] + bne _020AB0E0 + ldr r2, [r0, #0x4] + ldr r1, _020AB104 ; =0x021CB7DC + cmp r2, #0x0 + str r2, [r1, #0x0] + movne r1, #0x0 + strne r1, [r2, #0x8] +_020AB0E0: + ldrb r2, [r0, #0x11] + ldr r3, _020AB108 ; =0x021CB7E0 + ldr r1, [r3, r2, lsl #0x2] + sub r1, r1, #0x1 + str r1, [r3, r2, lsl #0x2] + ldrb r0, [r0, #0x11] + ldr r0, [r3, r0, lsl #0x2] + bx lr + .balign 4 +_020AB100: .word 0x021CB7D8 +_020AB104: .word 0x021CB7DC +_020AB108: .word 0x021CB7E0 + + arm_func_start FUN_020AB10C +FUN_020AB10C: ; 0x020AB10C + ldr r1, _020AB140 ; =0x021CB7D8 + ldr r2, [r1, #0x0] + cmp r2, #0x0 + beq _020AB138 +_020AB11C: + ldrb r1, [r2, #0x11] + cmp r1, r0 + moveq r0, r2 + bxeq lr + ldr r2, [r2, #0x8] + cmp r2, #0x0 + bne _020AB11C +_020AB138: + mov r0, #0x0 + bx lr + .balign 4 +_020AB140: .word 0x021CB7D8 + + arm_func_start FUN_020AB144 +FUN_020AB144: ; 0x020AB144 + ldr r1, _020AB150 ; =0x021CB7E0 + ldr r0, [r1, r0, lsl #0x2] + bx lr + .balign 4 +_020AB150: .word 0x021CB7E0 + + arm_func_start FUN_020AB154 +FUN_020AB154: + ldr r0, _020AB160 ; =0x021CB7D8 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020AB160: .word 0x021CB7D8 + + arm_func_start FUN_020AB164 +FUN_020AB164: ; 0x020AB164 + ldr r2, _020AB1D8 ; =0x021CB7D8 + ldr r1, [r2, #0x0] + cmp r1, #0x0 + bne _020AB198 + str r0, [r2, #0x0] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r2, #0x0] + ldr r1, _020AB1DC ; =0x021CB7DC + str r12, [r3, #0x8] + ldr r2, [r2, #0x0] + str r2, [r1, #0x0] + b _020AB1B8 +_020AB198: + ldr r1, _020AB1DC ; =0x021CB7DC + mov r2, #0x0 + ldr r3, [r1, #0x0] + str r3, [r0, #0x4] + str r2, [r0, #0x8] + ldr r2, [r1, #0x0] + str r0, [r2, #0x8] + str r0, [r1, #0x0] +_020AB1B8: + ldrb r2, [r0, #0x11] + ldr r3, _020AB1E0 ; =0x021CB7E0 + ldr r1, [r3, r2, lsl #0x2] + add r1, r1, #0x1 + str r1, [r3, r2, lsl #0x2] + ldrb r0, [r0, #0x11] + ldr r0, [r3, r0, lsl #0x2] + bx lr + .balign 4 +_020AB1D8: .word 0x021CB7D8 +_020AB1DC: .word 0x021CB7DC +_020AB1E0: .word 0x021CB7E0 + + arm_func_start FUN_020AB1E4 +FUN_020AB1E4: ; 0x020AB1E4 + stmdb sp!, {r4,lr} + ldr r0, _020AB22C ; =0x021CB7D8 + ldr r4, [r0, #0x0] + cmp r4, #0x0 + beq _020AB20C +_020AB1F8: + mov r0, r4 + ldr r4, [r4, #0x8] + bl FUN_020ACD90 +_020AB204: ; 0x020AB204 + cmp r4, #0x0 + bne _020AB1F8 +_020AB20C: + mov r2, #0x0 + ldr r0, _020AB230 ; =0x021CB7E0 + mov r1, r2 +_020AB218: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020AB218 + ldmia sp!, {r4,pc} + .balign 4 +_020AB22C: .word 0x021CB7D8 +_020AB230: .word 0x021CB7E0 + + arm_func_start FUN_020AB234 +FUN_020AB234: ; 0x020AB234 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_020AB10C + movs r4, r0 + beq _020AB26C +_020AB24C: + mov r0, r4 + bl FUN_020AB088 + mov r0, r4 + bl FUN_020ACD90 + mov r0, r5 + bl FUN_020AB10C + movs r4, r0 + bne _020AB24C +_020AB26C: + ldr r0, _020AB280 ; =0x021CB7E0 + mov r1, #0x0 + str r1, [r0, r5, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AB280: .word 0x021CB7E0 + + arm_func_start FUN_020AB284 +FUN_020AB284: ; 0x020AB284 + ldr r1, _020AB2B4 ; =0x021CB7DC + mov r2, #0x0 + ldr r0, _020AB2B8 ; =0x021CB7D8 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r0, _020AB2BC ; =0x021CB7E0 + mov r1, r2 +_020AB2A0: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020AB2A0 + bx lr + .balign 4 +_020AB2B4: .word 0x021CB7DC +_020AB2B8: .word 0x021CB7D8 +_020AB2BC: .word 0x021CB7E0 + + arm_func_start FUN_020AB2C0 +FUN_020AB2C0: ; 0x020AB2C0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + addls sp, sp, #0x4 + mov lr, #0x0 + ldmlsia sp!, {pc} +_020AB2D8: + ldrsb r12, [r0, lr] + mov r3, lr, lsl #0x1 + add lr, lr, #0x1 + mov r12, r12, lsl #0x8 + strh r12, [r1, r3] + cmp lr, r2 + blo _020AB2D8 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AB2FC +FUN_020AB2FC: ; 0x020AB2FC + cmp r2, #0x0 + mov r12, #0x0 + bxls lr +_020AB308: + mov r3, r12, lsl #0x1 + ldrsh r3, [r1, r3] + mov r3, r3, asr #0x8 + strb r3, [r0, r12] + add r12, r12, #0x1 + cmp r12, r2 + blo _020AB308 + bx lr + + arm_func_start FUN_020AB328 +FUN_020AB328: ; 0x020AB328 + stmdb sp!, {r4,lr} + mov r4, #0x0 + cmp r2, #0x0 + ldmlsia sp!, {r4,pc} +_020AB338: + ldrb r3, [r0, r4] + mvn lr, r3 + and r3, lr, #0xf + mov r12, r3, lsl #0x3 + and r3, lr, #0x70 + add r12, r12, #0x84 + mov r3, r3, asr #0x4 + mov r12, r12, lsl r3 + ands r3, lr, #0x80 + rsbne r12, r12, #0x84 + mov r3, r4, lsl #0x1 + subeq r12, r12, #0x84 + add r4, r4, #0x1 + strh r12, [r1, r3] + cmp r4, r2 + blo _020AB338 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AB37C +FUN_020AB37C: ; 0x020AB37C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + cmp r2, #0x0 + mov r8, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r11,pc} +_020AB394: ; 0x020AB394 + mov r12, r8 + mov lr, #0xff + mov r4, #0x7f + mov r3, #0x8 +_020AB3A4: + mov r5, r8, lsl #0x1 + ldrsh r5, [r1, r5] + ldr fp, _020AB42C ; =0x02106470 + movs r7, r5, asr #0x2 + movmi r6, r4 + ldr r5, _020AB430 ; =0x00001FDF + rsbmi r7, r7, #0x0 + movpl r6, lr + cmp r7, r5 + movgt r7, r5 + mov r5, r12 + add r10, r7, #0x21 +_020AB3D4: + ldr r9, [r11], #0x4 + cmp r10, r9 + ble _020AB3F0 + add r5, r5, #0x1 + cmp r5, #0x8 + blt _020AB3D4 + mov r5, r3 +_020AB3F0: + cmp r5, #0x8 + eorge r5, r6, #0x7f + bge _020AB414 + add r9, r7, #0x21 + add r7, r5, #0x1 + mov r7, r9, asr r7 + and r7, r7, #0xf + orr r5, r7, r5, lsl #0x4 + eor r5, r5, r6 +_020AB414: + strb r5, [r0, r8] + add r8, r8, #0x1 + cmp r8, r2 + blo _020AB3A4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AB42C: .word 0x02106470 +_020AB430: .word 0x00001FDF + + arm_func_start FUN_020AB434 +FUN_020AB434: ; 0x020AB434 + ldr r1, _020AB440 ; =0x021CB7FC + ldr r0, [r1, r0, lsl #0x2] + bx lr + .balign 4 +_020AB440: .word 0x021CB7FC + + arm_func_start FUN_020AB444 +FUN_020AB444: ; 0x020AB444 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r3, _020AB4AC ; =0x021CB7F0 + ldr r1, _020AB4B0 ; =0x021CB7EC + ldr r2, [r3, r4, lsl #0x2] + str r0, [r1, #0x0] + cmp r2, #0x0 + mov r12, r4, lsl #0x2 + beq _020AB494 + ldr r1, _020AB4B4 ; =0x021CB7FC + ldr r2, [r2, #0x8] + ldr r0, [r1, r12] + sub r0, r0, #0x1 + str r0, [r1, r12] + str r2, [r3, r12] + ldr r1, [r3, r12] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x4] +_020AB494: + ldr r0, _020AB4B0 ; =0x021CB7EC + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + ldr r0, _020AB4B4 ; =0x021CB7FC + ldr r0, [r0, r4, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020AB4AC: .word 0x021CB7F0 +_020AB4B0: .word 0x021CB7EC +_020AB4B4: .word 0x021CB7FC + + arm_func_start FUN_020AB4B8 +FUN_020AB4B8: ; 0x020AB4B8 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r2, _020AB4F8 ; =0x021CB7F0 + ldr r1, _020AB4FC ; =0x021CB7EC + ldr r2, [r2, r4, lsl #0x2] + str r0, [r1, #0x0] + cmp r2, #0x0 + beq _020AB4EC + bl OS_RestoreInterrupts + ldr r0, _020AB4F8 ; =0x021CB7F0 + ldr r0, [r0, r4, lsl #0x2] + ldmia sp!, {r4,pc} +_020AB4EC: + bl OS_RestoreInterrupts +_020AB4F0: ; 0x020AB4F0 + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020AB4F8: .word 0x021CB7F0 +_020AB4FC: .word 0x021CB7EC + + arm_func_start FUN_020AB500 +FUN_020AB500: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020AB51C: ; 0x020AB51C + cmp r4, #0x3 + addcs sp, sp, #0x4 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} +_020AB52C: ; 0x020AB52C + bl OS_DisableInterrupts + ldr r3, _020AB620 ; =0x021CB7F0 + ldr r1, _020AB624 ; =0x021CB7EC + ldr r2, [r3, r4, lsl #0x2] + str r0, [r1, #0x0] + cmp r2, #0x0 + mov r12, r4, lsl #0x2 + bne _020AB574 + str r5, [r3, r12] + ldr r0, [r3, r12] + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r3, r12] + ldr r0, _020AB628 ; =0x021CB808 + str r2, [r1, #0x8] + ldr r1, [r3, r12] + str r1, [r0, r12] + b _020AB5F4 +_020AB574: + ldr r0, _020AB628 ; =0x021CB808 + ldr r3, [r0, r12] + cmp r3, #0x0 + beq _020AB5D4 + ldr r1, [r5, #0x18] +_020AB588: + ldr r0, [r3, #0x18] + cmp r0, r1 + bhs _020AB5C8 + str r3, [r5, #0x4] + ldr r0, [r3, #0x8] + ldr r1, _020AB628 ; =0x021CB808 + str r0, [r5, #0x8] + str r5, [r3, #0x8] + ldr r0, [r5, #0x8] + mov r2, r4, lsl #0x2 + cmp r0, #0x0 + strne r5, [r0, #0x4] + ldr r0, [r1, r4, lsl #0x2] + cmp r3, r0 + streq r5, [r1, r2] + b _020AB5F4 +_020AB5C8: + ldr r3, [r3, #0x4] + cmp r3, #0x0 + bne _020AB588 +_020AB5D4: + mov r0, #0x0 + ldr r1, _020AB620 ; =0x021CB7F0 + str r0, [r5, #0x4] + ldr r0, [r1, r4, lsl #0x2] + str r0, [r5, #0x8] + ldr r0, [r1, r4, lsl #0x2] + str r5, [r0, #0x4] + str r5, [r1, r4, lsl #0x2] +_020AB5F4: + ldr r2, _020AB62C ; =0x021CB7FC + ldr r0, _020AB624 ; =0x021CB7EC + ldr r1, [r2, r4, lsl #0x2] + add r1, r1, #0x1 + str r1, [r2, r4, lsl #0x2] + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + ldr r0, _020AB62C ; =0x021CB7FC + ldr r0, [r0, r4, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AB620: .word 0x021CB7F0 +_020AB624: .word 0x021CB7EC +_020AB628: .word 0x021CB808 +_020AB62C: .word 0x021CB7FC + + arm_func_start FUN_020AB630 +FUN_020AB630: ; 0x020AB630 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + bl OS_DisableInterrupts + mov r7, #0x0 + ldr r1, _020AB6B8 ; =0x021CB7EC + mov r4, r7 + mov r9, r7 + str r0, [r1, #0x0] + ldr r5, _020AB6BC ; =0x021CB7F0 + ldr r8, _020AB6C0 ; =0x021CB7FC + b _020AB69C +_020AB65C: + ldr r0, [r5, r7, lsl #0x2] + mov r6, r7, lsl #0x2 + cmp r0, #0x0 + beq _020AB694 +_020AB66C: + ldr r0, [r5, r6] + ldr r1, [r0, #0x8] + str r1, [r5, r6] + ldr r1, [r5, r6] + cmp r1, #0x0 + strne r4, [r1, #0x4] + bl FUN_020ACD90 + ldr r0, [r5, r6] + cmp r0, #0x0 + bne _020AB66C +_020AB694: + str r9, [r8, r7, lsl #0x2] + add r7, r7, #0x1 +_020AB69C: + cmp r7, #0x3 + blt _020AB65C + ldr r0, _020AB6B8 ; =0x021CB7EC + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020AB6B8: .word 0x021CB7EC +_020AB6BC: .word 0x021CB7F0 +_020AB6C0: .word 0x021CB7FC + + arm_func_start FUN_020AB6C4 +FUN_020AB6C4: ; 0x020AB6C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl FUN_020AB4B8 + movs r4, r0 + beq _020AB6FC +_020AB6DC: + mov r0, r5 + bl FUN_020AB444 + mov r0, r4 + bl FUN_020ACD90 + mov r0, r5 + bl FUN_020AB4B8 + movs r4, r0 + bne _020AB6DC +_020AB6FC: + ldr r0, _020AB710 ; =0x021CB7FC + mov r1, #0x0 + str r1, [r0, r5, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AB710: .word 0x021CB7FC + + arm_func_start FUN_020AB714 +FUN_020AB714: ; 0x020AB714 + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020AB750 ; =0x021CB7EC + ldr r3, _020AB754 ; =0x021CB808 + mov lr, #0x0 + str lr, [r3, r4, lsl #0x2] + ldr r2, _020AB758 ; =0x021CB7FC + ldr r12, [r3, r4, lsl #0x2] + ldr r3, _020AB75C ; =0x021CB7F0 + str r0, [r1, #0x0] + str r12, [r3, r4, lsl #0x2] + str lr, [r2, r4, lsl #0x2] + bl OS_RestoreInterrupts + ldmia sp!, {r4,pc} + .balign 4 +_020AB750: .word 0x021CB7EC +_020AB754: .word 0x021CB808 +_020AB758: .word 0x021CB7FC +_020AB75C: .word 0x021CB7F0 + + arm_func_start FUN_020AB760 +FUN_020AB760: + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r2, [r7, #0x5c] + mov r6, r1 + cmp r2, #0x0 + mov r4, #0x0 + beq _020AB790 + ldr r1, [r6, #0x18] + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + bl FUN_020ABBEC + b _020AB820 +_020AB790: + ldr r2, [r6, #0x18] + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl FUN_020ABB1C +_020AB7A0: ; 0x020AB7A0 + cmp r0, #0x0 + ldreq r1, [r7, #0x14] + moveq r0, r4 + addeq r1, r1, #0x1 + streq r1, [r7, #0x14] + ldmeqia sp!, {r4-r8,pc} +_020AB7B8: ; 0x020AB7B8 + ldr r0, [r6, #0x18] + str r0, [r7, #0x10] + ldr r2, [r6, #0x18] + ldr r1, [r7, #0x54] + cmp r1, r2 + ldreq r1, [r7, #0x14] + moveq r0, r4 + addeq r1, r1, #0x1 + streq r1, [r7, #0x14] + ldmeqia sp!, {r4-r8,pc} +_020AB7E0: ; 0x020AB7E0 + add r0, r1, #0x1 + cmp r0, r2 + beq _020AB820 + ldr r0, [r6, #0x45c] + cmp r0, #0x0 + bne _020AB820 + subs r0, r2, r1 + rsbmi r0, r0, #0x0 + cmp r0, #0x64 + strgt r2, [r7, #0x54] + movgt r0, #0x0 + ldmgtia sp!, {r4-r8,pc} +_020AB810: ; 0x020AB810 + cmp r1, r2 + ldrhi r0, [r7, #0x1c] + addhi r0, r0, #0x1 + strhi r0, [r7, #0x1c] +_020AB820: + ldr r0, [r6, #0x18] + str r0, [r7, #0x54] + ldr r0, [r7, #0x4c] + cmp r0, #0x0 + bne _020AB858 + ldr r1, [r6, #0x460] + ldr r0, _020ABAF4 ; =0x00000464 + str r1, [r7, #0x4c] + add r1, r6, r0 + add r0, r7, #0x44 + ldmia r1, {r2-r3} + stmia r0, {r2-r3} + mov r0, #0x0 + str r0, [r7, #0x6c] +_020AB858: + ldr r3, [r6, #0x460] + ldr r1, [r7, #0x4c] + ldr r2, [r6, #0x464] + ldr r0, [r7, #0x44] + sub r1, r3, r1 + ldr r3, [r7, #0x80] + mov r1, r1, lsl #0x6 + subs r0, r2, r0 + subs r5, r1, r0 + cmp r3, #0x0 + mov r0, #0x0 + beq _020AB894 + ldr r2, [r6, #0x45c] + cmp r2, #0x0 + beq _020AB89C +_020AB894: + str r5, [r7, #0x80] + b _020AB918 +_020AB89C: + str r5, [r7, #0x80] + subs r2, r5, r3 + ldr r8, [r7, #0x7c] + ldr r3, _020ABAF8 ; =0x00008B18 + ldr ip, _020ABAFC ; =0x0000CC8D + add r3, r8, r3 + mov r8, r3, lsl #0x1 + rsbmi r2, r2, #0x0 + mov r3, r8, asr #0x1f + adds r8, r8, r12 + mov r12, r2, asr #0x1f + adc r3, r3, #0x0 + cmp r12, r3 + cmpeq r2, r8 + bls _020AB8F4 + ldr lr, _020ABB00 ; =0x75CA82CB + mov r3, r2, lsr #0x1f + smull r12, r8, lr, r2 + mov r8, r8, asr #0xe + add r8, r3, r8 + add r3, r8, #0x2 + str r3, [r7, #0x84] +_020AB8F4: + ldr r3, [r7, #0x84] + cmp r3, #0x0 + bgt _020AB918 + ldr r3, [r7, #0x7c] + sub r2, r2, r3 + add r2, r3, r2, asr #0x4 + str r2, [r7, #0x7c] + ldr r2, [r7, #0x7c] + str r2, [r7, #0x18] +_020AB918: + ldr r3, [r7, #0x44] + ldr r12, [r7, #0x4] + ldr r2, [r7, #0x48] + adds r1, r1, r3 + adc r0, r0, r2 + adds r1, r12, r1 + str r1, [r6, #0x46c] + adc r0, r0, #0x0 + str r0, [r6, #0x470] + bl OS_GetTick + ldr r12, [r6, #0x46c] + ldr r2, _020ABAF8 ; =0x00008B18 + ldr lr, [r6, #0x470] + adds r6, r12, r2 + adc r3, lr, #0x0 + cmp r3, r1 + mov r3, #0x0 + cmpeq r6, r0 + movcc r0, r3 + ldmccia sp!, {r4-r8,pc} +_020AB968: ; 0x020AB968 + ldr r6, _020ABB04 ; =0x0007FD88 + adds r6, r0, r6 + adc r0, r1, r3 + cmp lr, r0 + cmpeq r12, r6 + movhi r0, r3 + ldmhiia sp!, {r4-r8,pc} +_020AB984: ; 0x020AB984 + ldr r0, [r7, #0x84] + cmp r0, #0x0 + bgt _020ABAE0 + ldr r1, [r7, #0x7c] + mov r0, #0x3 + mul lr, r1, r0 + ldr r6, _020ABB00 ; =0x75CA82CB + ldr r12, [r7, #0x8c] + smull r1, r0, r6, lr + mov r0, r0, asr #0xe + mov r1, lr, lsr #0x1f + cmp lr, r12 + add r0, r1, r0 + bls _020AB9EC + ldr r1, _020ABB08 ; =0x000134DF + add r6, r0, #0x1 + mla r12, r6, r2, r1 + str r12, [r7, #0x8c] + mla r1, r0, r2, r1 + ldr r2, [r7, #0x8c] + ldr r0, _020ABB0C ; =0xFFFF2F5C + add r0, r2, r0 + str r0, [r7, #0x88] + str r1, [r7, #0x4] + str r3, [r7, #0x90] + b _020ABA50 +_020AB9EC: + ldr r1, [r7, #0x88] + cmp lr, r1 + bge _020ABA50 + ldr r1, [r7, #0x90] + add r1, r1, #0x1 + str r1, [r7, #0x90] + ldr r1, [r7, #0x90] + cmp r1, #0x46 + bls _020ABA50 + ldr r1, _020ABB08 ; =0x000134DF + add r12, r0, #0x1 + mla lr, r12, r2, r1 + ldr r6, _020ABB10 ; =0xFFFFBA74 + str lr, [r7, #0x8c] + mla r1, r0, r2, r6 + str r1, [r7, #0x88] + ldr r1, [r7, #0x88] + ldr r2, _020ABB08 ; =0x000134DF + cmp r1, #0x0 + ldr r1, _020ABAF8 ; =0x00008B18 + strlt r3, [r7, #0x88] + mla r1, r0, r1, r2 + mov r3, #0x0 + str r1, [r7, #0x4] + str r3, [r7, #0x90] +_020ABA50: + ldr r1, [r7, #0x4] + ldr r0, _020ABB14 ; =0x00068520 + cmp r1, r0 + strhi r0, [r7, #0x4] + ldr r0, [r7, #0x6c] + cmp r0, #0x10 + addcc r0, r0, #0x1 + strcc r0, [r7, #0x6c] + strcc r5, [r7, #0x74] + strcc r5, [r7, #0x78] + blo _020ABA98 + ldr r1, [r7, #0x74] + mov r0, #0x1f + mla r2, r1, r0, r5 + mov r0, r2, asr #0x4 + add r0, r2, r0, lsr #0x1b + mov r0, r0, asr #0x5 + str r0, [r7, #0x74] +_020ABA98: + ldr r2, [r7, #0x78] + ldr r1, [r7, #0x74] + ldr r0, _020ABB18 ; =0x00008701 + sub r1, r2, r1 + str r1, [r7, #0xc] + ldr r1, [r7, #0xc] + cmp r1, r0 + mvn r0, #0x8700 + movgt r4, #0x1 + cmp r1, r0 + ldrlt r0, [r7, #0x70] + mvnlt r4, #0x0 + addlt r0, r0, #0x1 + strlt r0, [r7, #0x70] + cmp r4, #0x0 + movne r0, #0x0 + strne r0, [r7, #0x6c] + strne r0, [r7, #0x4c] +_020ABAE0: + ldr r1, [r7, #0x84] + mov r0, #0x1 + sub r1, r1, #0x1 + str r1, [r7, #0x84] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020ABAF4: .word 0x00000464 +_020ABAF8: .word 0x00008B18 +_020ABAFC: .word 0x0000CC8D +_020ABB00: .word 0x75CA82CB +_020ABB04: .word 0x0007FD88 +_020ABB08: .word 0x000134DF +_020ABB0C: .word 0xFFFF2F5C +_020ABB10: .word 0xFFFFBA74 +_020ABB14: .word 0x00068520 +_020ABB18: .word 0x00008701 + + arm_func_start FUN_020ABB1C +FUN_020ABB1C: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrh r12, [r6, #0x68] + mov r4, r2 + ldr r3, _020ABBE4 ; =0x00000BB8 + sub r2, r4, r12 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + mov r5, r1 + cmp r2, r3 + bhs _020ABB60 + cmp r4, r12 + ldrcc r0, [r6, #0x60] + addcc r0, r0, #0x10000 + strcc r0, [r6, #0x60] + strh r4, [r6, #0x68] + b _020ABBD0 +_020ABB60: + ldr r1, _020ABBE8 ; =0x0000FF9C + cmp r2, r1 + bhi _020ABBAC + ldr r1, [r6, #0x64] + cmp r4, r1 + bne _020ABB94 + mov r1, r4 + bl FUN_020ABBEC + sub r0, r4, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r6, #0x54] + b _020ABBD0 +_020ABB94: + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + str r0, [r6, #0x64] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} +_020ABBAC: + ldr r2, [r6, #0x60] + ldr r0, [r6, #0x54] + add r2, r4, r2 + add r0, r0, r1 + cmp r2, r0 + subhi r0, r2, #0x10000 + strhi r0, [r5, #0x18] + movhi r0, #0x1 + ldmhiia sp!, {r4-r6,pc} +_020ABBD0: + ldr r1, [r6, #0x60] + mov r0, #0x1 + add r1, r4, r1 + str r1, [r5, #0x18] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ABBE4: .word 0x00000BB8 +_020ABBE8: .word 0x0000FF9C + + arm_func_start FUN_020ABBEC +FUN_020ABBEC: ; 0x020ABBEC + ldr r2, _020ABC08 ; =0x00010001 + strh r1, [r0, #0x68] + str r2, [r0, #0x64] + mov r1, #0x0 + str r1, [r0, #0x60] + str r1, [r0, #0x5c] + bx lr + .balign 4 +_020ABC08: .word 0x00010001 + + arm_func_start FUN_020ABC0C +FUN_020ABC0C: ; 0x020ABC0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x3c] + mov r4, r1 + cmp r0, #0x0 + beq _020ABC2C + bl FUN_020ACD90 +_020ABC2C: + str r4, [r5, #0x3c] + ldr r0, [r5, #0x34] + bl FUN_020AB444 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020ABC40 +FUN_020ABC40: ; 0x020ABC40 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x3c] + cmp r0, #0x0 + beq _020ABC60 + bl FUN_020ACD90 +_020ABC58: ; 0x020ABC58 + mov r0, #0x0 + str r0, [r4, #0x3c] +_020ABC60: + mvn r0, #0x0 + str r0, [r4, #0x38] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020ABC6C +FUN_020ABC6C: ; 0x020ABC6C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, r2 + mov r1, #0x0 + mov r2, #0x28 + mov r6, r0 + bl MI_CpuFill8 + ldr r0, _020ABCF4 ; =0x000134DF + mov r1, #0x0 + str r0, [r6, #0x4] + str r1, [r6, #0x28] + str r1, [r6, #0x2c] + str r5, [r6, #0x34] + str r4, [r6, #0x38] + str r1, [r6, #0x7c] + str r1, [r6, #0x80] + str r1, [r6, #0x84] + str r1, [r6, #0x88] + str r0, [r6, #0x8c] + str r1, [r6, #0x90] + str r1, [r6, #0x4c] + str r1, [r6, #0x44] + str r1, [r6, #0x48] + str r1, [r6, #0x6c] + str r1, [r6, #0x70] + str r1, [r6, #0x50] + str r1, [r6, #0x54] + str r1, [r6, #0x58] + mov r0, #0x1 + str r0, [r6, #0x5c] + str r1, [r6, #0x3c] + str r1, [r6, #0x40] + str r1, [r6, #0x30] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ABCF4: .word 0x000134DF + + arm_func_start FUN_020ABCF8 +FUN_020ABCF8: ; 0x020ABCF8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020ABE34 ; =0x021CCD20 + ldr r2, [r3, #0x10] + cmp r2, #0x2 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {pc} + ldrb r12, [r3, #0x1] + ldrb r2, [r0, #0x8] + cmp r12, r2 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {pc} + ldrb r2, [r0, #0xa] + cmp r2, #0x0 + beq _020ABD48 + cmp r2, #0x1 + beq _020ABDA4 + b _020ABE1C +_020ABD48: + ldr r0, _020ABE38 ; =0x021CB824 + ldr r2, [r0, #0x2c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x38] + cmp r0, #0x5 + beq _020ABD74 + cmp r0, #0x2 + bne _020ABD80 +_020ABD74: + mov r0, #0x9 + str r0, [r1, #0x0] + b _020ABD88 +_020ABD80: + mov r0, #0x5 + str r0, [r1, #0x0] +_020ABD88: + ldr r0, _020ABE38 ; =0x021CB824 + mov r3, #0x0 + ldr r2, _020ABE3C ; =0x021CB850 + str r3, [r0, #0x2c] + str r3, [r0, #0x38] + str r2, [r1, #0x4] + b _020ABE28 +_020ABDA4: + ldr r2, _020ABE38 ; =0x021CB824 + mov lr, #0x2 + str lr, [r2, #0x2c] + ldrb r12, [r0, #0xb] + ldrb r3, [r3, #0x0] + cmp r12, r3 + bne _020ABDD8 + str lr, [r2, #0x38] + mov r3, #0x7 + str r3, [r1, #0x0] + ldr r3, [r0, #0xc] + str r3, [r2, #0x34] + b _020ABE04 +_020ABDD8: + mov r3, #0x3 + str r3, [r2, #0x38] + mov r2, #0x6 + str r2, [r1, #0x0] + ldrb r3, [r0, #0xb] + cmp r3, #0x0 + movne r2, #0x1 + movne r3, r2, lsl r3 + ldr r2, _020ABE38 ; =0x021CB824 + moveq r3, #0x1 + str r3, [r2, #0x34] +_020ABE04: + ldrb r3, [r0, #0xb] + ldr r0, _020ABE38 ; =0x021CB824 + ldr r2, _020ABE3C ; =0x021CB850 + strb r3, [r0, #0x31] + str r2, [r1, #0x4] + b _020ABE28 +_020ABE1C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020ABE28: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ABE34: .word 0x021CCD20 +_020ABE38: .word 0x021CB824 +_020ABE3C: .word 0x021CB850 + + arm_func_start FUN_020ABE40 +FUN_020ABE40: ; 0x020ABE40 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x4] + mov r4, r1 + cmp r0, #0xff + bne _020ABE70 + ldrb r0, [r5, #0x6] + cmp r0, #0x4 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020ABE70: + ldrb r0, [r5, #0x8] + bl FUN_020AC1E8 +_020ABE78: ; 0x020ABE78 + cmp r0, #0x0 + beq _020ABEA4 + mov r1, #0x2 + str r1, [r4, #0x0] + str r0, [r4, #0x4] + mov r2, #0x0 + str r2, [r0, #0x0] + bl FUN_020AC708 + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020ABEA4: + ldrb r1, [r5, #0x8] + ldr r0, _020ABEC8 ; =0x021CB838 + bl FUN_020AC5A4 + ldr r0, _020ABEC8 ; =0x021CB838 + mov r1, #0x2 + bl FUN_020AC708 +_020ABEBC: ; 0x020ABEBC + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020ABEC8: .word 0x021CB838 + + arm_func_start FUN_020ABECC +FUN_020ABECC: ; 0x020ABECC + stmdb sp!, {r4-r6,lr} + ldr r2, _020AC070 ; =0x021CB824 + mov r6, r0 + ldr r0, [r2, #0x2c] + mov r5, r1 + cmp r0, #0x2 + bne _020ABF84 + ldrb r1, [r2, #0x30] + ldrb r0, [r6, #0x8] + cmp r1, r0 + bne _020ABF74 + ldr r0, _020AC074 ; =0x021CB850 + mov r1, r6 + bl FUN_020AC350 + mov r4, r0 + mvn r0, #0x2 + cmp r4, r0 + beq _020ABF48 + mvn r0, #0x1 + cmp r4, r0 + beq _020ABF30 + mvn r0, #0x0 + cmp r4, r0 + beq _020ABF48 + b _020ABF50 +_020ABF30: + mov r0, #0xc + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r5, #0x4] + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} +_020ABF48: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} +_020ABF50: + ldr r1, _020AC074 ; =0x021CB850 + mov r0, r6 + bl FUN_020AC4A0 + ldr r1, _020AC074 ; =0x021CB850 + str r0, [r5, #0x0] + str r1, [r5, #0x4] + ldr r0, [r5, #0x4] + str r4, [r0, #0xc] + b _020AC028 +_020ABF74: + mov r0, #0x1 + bl FUN_020AC5E8 +_020ABF7C: ; 0x020ABF7C + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} +_020ABF84: + ldrb r12, [r6, #0x8] + cmp r12, #0x0 + movne r0, #0x1 + movne r1, r0, lsl r12 + ldr r0, _020AC078 ; =0x021CB818 + moveq r1, #0x1 + ldr r0, [r0, #0x0] + ands r0, r0, r1 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020ABFAC: ; 0x020ABFAC + ldr r2, _020AC070 ; =0x021CB824 + mov r4, #0x2 + mov r3, #0x0 + ldr r0, _020AC074 ; =0x021CB850 + mov r1, r6 + strb r12, [r2, #0x30] + str r4, [r2, #0x2c] + str r3, [r2, #0x38] + bl FUN_020AC350 + mov r4, r0 + mvn r0, #0x2 + cmp r4, r0 + beq _020ABFF8 + mvn r0, #0x1 + cmp r4, r0 + beq _020ABFF8 + mvn r0, #0x0 + cmp r4, r0 + bne _020AC008 +_020ABFF8: + ldr r1, _020AC070 ; =0x021CB824 + mov r0, #0x0 + str r0, [r1, #0x2c] + ldmia sp!, {r4-r6,pc} +_020AC008: + ldr r1, _020AC074 ; =0x021CB850 + mov r0, r6 + bl FUN_020AC4A0 + ldr r1, _020AC074 ; =0x021CB850 + str r0, [r5, #0x0] + str r1, [r5, #0x4] + ldr r0, [r5, #0x4] + str r4, [r0, #0xc] +_020AC028: + ldr r0, [r5, #0x0] + cmp r0, #0xa + bne _020AC050 + mov r0, #0x1 + bl FUN_020AC5E8 + bl OS_GetTick + ldr r2, _020AC07C ; =0x021CB81C + str r0, [r2, #0x0] + str r1, [r2, #0x4] + b _020AC068 +_020AC050: + mov r0, #0x0 + bl FUN_020AC5E8 + ldr r0, _020AC07C ; =0x021CB81C + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020AC068: + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AC070: .word 0x021CB824 +_020AC074: .word 0x021CB850 +_020AC078: .word 0x021CB818 +_020AC07C: .word 0x021CB81C + + arm_func_start FUN_020AC080 +FUN_020AC080: ; 0x020AC080 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r2, [r6, #0x4] + mov r5, r1 + cmp r2, #0xff + bne _020AC0C4 + ldrb r2, [r6, #0x6] + cmp r2, #0x4 + bne _020AC0B4 + bl FUN_020ABCF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020AC0B4: + cmp r2, #0x3 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020AC0C4: + ldrb r0, [r6, #0x8] + bl FUN_020AC1E8 + movs r4, r0 + beq _020AC154 + mov r1, r6 + bl FUN_020AC350 + mov r7, r0 + mvn r0, #0x1 + cmp r7, r0 + beq _020AC104 + mvn r0, #0x0 + cmp r7, r0 + bne _020AC124 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC104: + mov r0, #0xc + str r0, [r5, #0x0] + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + str r4, [r5, #0x4] + mov r0, #0x1 + ldmia sp!, {r4-r7,pc} +_020AC124: + mov r0, r6 + mov r1, r4 + bl FUN_020AC4A0 +_020AC130: ; 0x020AC130 + str r0, [r5, #0x0] + str r4, [r5, #0x4] + str r7, [r4, #0xc] + ldr r0, [r5, #0x0] + add sp, sp, #0x4 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC154: + ldrb r0, [r6, #0x8] + bl FUN_020AC790 + movs r7, r0 + bne _020AC188 + ldrb r1, [r6, #0x8] + ldr r0, _020AC1E4 ; =0x021CB838 + bl FUN_020AC5A4 + ldr r0, _020AC1E4 ; =0x021CB838 + mov r1, #0x3 + bl FUN_020AC708 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC188: + mov r1, r6 + bl FUN_020AC350 + mov r4, r0 + add r0, r4, #0x2 + cmp r0, #0x1 + bhi _020AC1B4 + mov r0, r7 + bl FUN_020ACC84 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AC1B4: + mov r0, r6 + mov r1, r7 + bl FUN_020AC4A0 +_020AC1C0: ; 0x020AC1C0 + str r0, [r5, #0x0] + str r7, [r5, #0x4] + str r4, [r7, #0xc] + ldr r0, [r5, #0x0] + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AC1E4: .word 0x021CB838 + + arm_func_start FUN_020AC1E8 +FUN_020AC1E8: + ldr r1, _020AC25C ; =0x021CCD20 + ldr r2, _020AC260 ; =0x021CB824 + ldr r1, [r1, #0x10] + ldr r3, [r2, #0x4] + cmp r1, #0x2 + bne _020AC224 + ldr r1, [r2, #0x2c] + cmp r1, #0x0 + beq _020AC21C + ldrb r1, [r2, #0x30] + cmp r1, r0 + ldreq r0, _020AC264 ; =0x021CB850 + bxeq lr +_020AC21C: + mov r0, #0x0 + bx lr +_020AC224: + cmp r3, #0x0 + beq _020AC254 +_020AC22C: + ldr r1, [r3, #0x0] + cmp r1, #0x0 + beq _020AC248 + ldrb r1, [r3, #0x4] + cmp r1, r0 + moveq r0, r3 + bxeq lr +_020AC248: + ldr r3, [r3, #0x14] + cmp r3, #0x0 + bne _020AC22C +_020AC254: + mov r0, #0x0 + bx lr + .balign 4 +_020AC25C: .word 0x021CCD20 +_020AC260: .word 0x021CB824 +_020AC264: .word 0x021CB850 + + arm_func_start FUN_020AC268 +FUN_020AC268: + ldrb r2, [r1, #0x4] + ldrb r12, [r1, #0x6] + cmp r2, #0x0 + addeq r12, r12, #0x5 + cmp r12, #0x0 + blt _020AC288 + cmp r12, #0xb + blt _020AC28C +_020AC288: + mvn r12, #0x0 +_020AC28C: + cmp r12, #0x0 + mvnlt r0, #0x0 + bxlt lr + ldr r1, _020AC2F8 ; =0x021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x1 + ldrne r3, [r0, #0xc] + ldrne r2, _020AC2FC ; =0x020FF788 + movne r1, #0xb + mlane r1, r3, r1, r2 + ldrnesb r2, [r12, r1] + bne _020AC2D0 + ldr r3, [r0, #0xc] + ldr r2, _020AC300 ; =0x020FF744 + mov r1, #0xb + mla r1, r3, r1, r2 + ldrsb r2, [r12, r1] +_020AC2D0: + mvn r1, #0x0 + cmp r2, r1 + moveq r0, #0x1 + bxeq lr + mvn r1, #0x1 + cmp r2, r1 + moveq r0, #0x0 + strne r2, [r0, #0xc] + movne r0, #0x1 + bx lr + .balign 4 +_020AC2F8: .word 0x021CCD20 +_020AC2FC: .word 0x020FF788 +_020AC300: .word 0x020FF744 + + arm_func_start FUN_020AC304 +FUN_020AC304: + ldr r1, _020AC34C ; =0x021CB824 + ldr r2, [r1, #0x4] + cmp r2, #0x0 + beq _020AC344 +_020AC314: + ldr r1, [r2, #0x0] + cmp r1, #0x0 + beq _020AC338 + ldr r1, [r2, #0xc] + cmp r1, #0x2 + bne _020AC338 + cmp r0, r2 + movne r0, #0x0 + bxne lr +_020AC338: + ldr r2, [r2, #0x14] + cmp r2, #0x0 + bne _020AC314 +_020AC344: + mov r0, #0x1 + bx lr + .balign 4 +_020AC34C: .word 0x021CB824 + + arm_func_start FUN_020AC350 +FUN_020AC350: ; 0x020AC350 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrb r2, [r1, #0x4] + ldrb r3, [r1, #0x6] + mov r4, r0 + cmp r2, #0x0 + addeq r3, r3, #0x5 + cmp r3, #0x0 + blt _020AC37C + cmp r3, #0xb + blt _020AC380 +_020AC37C: + mvn r3, #0x0 +_020AC380: + cmp r3, #0x0 + addlt sp, sp, #0x4 + mvnlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} +_020AC390: ; 0x020AC390 + ldr r0, _020AC44C ; =0x021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x1 + ldrne r2, [r4, #0xc] + ldrne r1, _020AC450 ; =0x020FF700 + movne r0, #0xb + mlane r0, r2, r0, r1 + ldrnesb r5, [r3, r0] + bne _020AC3C8 + ldr r2, [r4, #0xc] + ldr r1, _020AC454 ; =0x020FF6BC + mov r0, #0xb + mla r0, r2, r0, r1 + ldrsb r5, [r3, r0] +_020AC3C8: + mvn r0, #0x2 + cmp r5, r0 + beq _020AC41C + mvn r0, #0x1 + cmp r5, r0 + beq _020AC3F8 + mvn r0, #0x0 + cmp r5, r0 + bne _020AC440 + add sp, sp, #0x4 + mov r0, r5 + ldmia sp!, {r4-r5,pc} +_020AC3F8: + mov r0, r4 + mov r1, #0x1 + bl FUN_020AC708 + mov r1, #0x0 + str r1, [r4, #0xc] + add sp, sp, #0x4 + mov r0, r5 + str r1, [r4, #0x0] + ldmia sp!, {r4-r5,pc} +_020AC41C: + mov r0, r4 + mov r1, #0x3 + bl FUN_020AC708 + mov r1, #0x0 + str r1, [r4, #0xc] + add sp, sp, #0x4 + mov r0, r5 + str r1, [r4, #0x0] + ldmia sp!, {r4-r5,pc} +_020AC440: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AC44C: .word 0x021CCD20 +_020AC450: .word 0x020FF700 +_020AC454: .word 0x020FF6BC + + arm_func_start FUN_020AC458 +FUN_020AC458: + ldr ip, _020AC498 ; =0x5F564354 + mov r3, #0x10 + str r12, [r1, #0x0] + strb r3, [r1, #0x5] + ldr r3, _020AC49C ; =0x021CCD20 + strb r2, [r1, #0x6] + ldrb r2, [r3, #0x0] + strb r2, [r1, #0x8] + ldrb r2, [r0, #0x4] + mov r0, #0x0 + strb r2, [r1, #0x9] + strb r0, [r1, #0xa] + ldrb r2, [r3, #0x0] + strb r2, [r1, #0xb] + str r0, [r1, #0xc] + bx lr + .balign 4 +_020AC498: .word 0x5F564354 +_020AC49C: .word 0x021CCD20 + + arm_func_start FUN_020AC4A0 +FUN_020AC4A0: + ldrb r2, [r0, #0xb] + strb r2, [r1, #0x5] + ldrb r2, [r0, #0x4] + cmp r2, #0xff + bne _020AC4E8 + ldrb r2, [r0, #0x6] + cmp r2, #0x0 + bne _020AC4D8 + ldrb r3, [r1, #0x4] + cmp r3, #0x0 + movne r2, #0x1 + movne r2, r2, lsl r3 + moveq r2, #0x1 + str r2, [r1, #0x8] +_020AC4D8: + ldrb r1, [r0, #0x6] + ldr r0, _020AC54C ; =0x020FF6AC + ldrb r0, [r0, r1] + bx lr +_020AC4E8: + cmp r2, #0x0 + bne _020AC544 + ldrb r2, [r0, #0x6] + cmp r2, #0x0 + bne _020AC538 + ldr r0, [r1, #0xc] + cmp r0, #0x1 + bne _020AC528 + ldrb r2, [r1, #0x4] + cmp r2, #0x0 + movne r0, #0x1 + movne r0, r0, lsl r2 + moveq r0, #0x1 + str r0, [r1, #0x8] + mov r0, #0x7 + bx lr +_020AC528: + cmp r0, #0x5 + moveq r0, #0x9 + movne r0, #0xc + bx lr +_020AC538: + ldr r0, _020AC550 ; =0x020FF6B4 + ldrb r0, [r0, r2] + bx lr +_020AC544: + mov r0, #0xc + bx lr + .balign 4 +_020AC54C: .word 0x020FF6AC +_020AC550: .word 0x020FF6B4 + + arm_func_start FUN_020AC554 +FUN_020AC554: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrb r2, [r1, #0x4] + cmp r2, #0xff + bne _020AC57C + ldrb r2, [r1, #0x6] + cmp r2, #0x4 + bne _020AC57C + bl FUN_020AC628 + b _020AC598 +_020AC57C: + ldrb r0, [r0, #0x4] + mov r2, #0x10 + bl FUN_021EB044 +_020AC588: ; 0x020AC588 + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} +_020AC598: + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AC5A4 +FUN_020AC5A4: ; 0x020AC5A4 + mov r12, r0 + mov r3, #0x6 + mov r2, #0x0 +_020AC5B0: + strb r2, [r12], #0x1 + strb r2, [r12], #0x1 + strb r2, [r12], #0x1 + strb r2, [r12], #0x1 + subs r3, r3, #0x1 + bne _020AC5B0 + ldr r2, _020AC5E4 ; =0x021CCD20 + mov r3, #0x0 + ldr r2, [r2, #0x10] + str r2, [r0, #0x0] + str r3, [r0, #0xc] + strb r1, [r0, #0x4] + bx lr + .balign 4 +_020AC5E4: .word 0x021CCD20 + + arm_func_start FUN_020AC5E8 +FUN_020AC5E8: + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r3, #0xff + ldr r0, _020AC624 ; =0x021CB850 + add r1, sp, #0x0 + mov r2, #0x4 + strb r3, [sp, #0x4] + bl FUN_020AC458 + ldr r0, _020AC624 ; =0x021CB850 + add r1, sp, #0x0 + strb r4, [sp, #0xa] + bl FUN_020AC628 + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + .balign 4 +_020AC624: .word 0x021CB850 + + arm_func_start FUN_020AC628 +FUN_020AC628: ; 0x020AC628 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r11, r0 + mov r10, r1 + mov r9, #0x0 + bl FUN_020AC6E4 + ldr r4, _020AC6DC ; =0x021CCD20 + ldr r5, _020AC6E0 ; =0x021CB818 + mov r8, r9 + mov r7, #0x1 + mov r6, #0x10 +_020AC654: + cmp r8, #0x0 + movne r1, r7, lsl r8 + ldr r0, [r5, #0x0] + moveq r1, r7 + ands r0, r0, r1 + beq _020AC694 + ldrb r0, [r4, #0x0] + cmp r8, r0 + beq _020AC694 + mov r0, r8 + mov r1, r10 + mov r2, r6 + strb r8, [r10, #0x9] + bl FUN_021EB044 +_020AC68C: ; 0x020AC68C + cmp r0, #0x0 + addne r9, r9, #0x1 +_020AC694: + add r0, r8, #0x1 + and r8, r0, #0xff + cmp r8, #0x20 + blo _020AC654 + ldrb r0, [r10, #0xa] + cmp r0, #0x1 + ldreq r0, _020AC6E0 ; =0x021CB818 + ldreq r0, [r0, #0x0] + streq r0, [r11, #0x8] + beq _020AC6C8 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r11, #0x8] +_020AC6C8: + cmp r9, #0x0 + mvneq r0, #0x3 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AC6DC: .word 0x021CCD20 +_020AC6E0: .word 0x021CB818 + + arm_func_start FUN_020AC6E4 +FUN_020AC6E4: ; 0x020AC6E4 + ldrb r2, [r1, #0xa] + cmp r2, #0x1 + ldreqb r2, [r0, #0x4] + ldreq r0, _020AC704 ; =0x021CB818 + streqb r2, [r1, #0xb] + ldreq r0, [r0, #0x0] + streq r0, [r1, #0xc] + bx lr + .balign 4 +_020AC704: .word 0x021CB818 + + arm_func_start FUN_020AC708 +FUN_020AC708: + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + add r2, sp, #0x0 + mov r3, #0x10 + mov r4, r0 + bl FUN_020ACAE0 +_020AC720: ; 0x020AC720 + cmp r0, #0x0 + addne sp, sp, #0x10 + ldmneia sp!, {r4,pc} +_020AC72C: ; 0x020AC72C + add r1, sp, #0x0 + mov r0, r4 + bl FUN_020AC554 +_020AC738: ; 0x020AC738 + cmp r0, #0x0 + movne r0, #0x0 + mvneq r0, #0x3 + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AC74C +FUN_020AC74C: ; 0x020AC74C + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + add r2, sp, #0x0 + mov r3, #0x10 + mov r4, r0 + bl FUN_020ACBD0 +_020AC764: ; 0x020AC764 + cmp r0, #0x0 + addne sp, sp, #0x10 + ldmneia sp!, {r4,pc} +_020AC770: ; 0x020AC770 + add r1, sp, #0x0 + mov r0, r4 + bl FUN_020AC554 +_020AC77C: ; 0x020AC77C + cmp r0, #0x0 + movne r0, #0x0 + mvneq r0, #0x3 + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AC790 +FUN_020AC790: ; 0x020AC790 + stmdb sp!, {r4,lr} + mov r1, r0 + cmp r1, #0x20 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} +_020AC7A4: ; 0x020AC7A4 + ldr r0, _020AC7F4 ; =0x021CCD20 + ldrb r0, [r0, #0x0] + cmp r1, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020AC7B8: ; 0x020AC7B8 + ldr r2, _020AC7F8 ; =0x021CB824 + ldr r4, [r2, #0x0] + cmp r4, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020AC7CC: ; 0x020AC7CC + ldr r3, [r4, #0x14] + mov r0, r4 + str r3, [r2, #0x0] + bl FUN_020AC5A4 + ldr r1, _020AC7F8 ; =0x021CB824 + mov r0, r4 + ldr r2, [r1, #0x4] + str r2, [r4, #0x14] + str r4, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020AC7F4: .word 0x021CCD20 +_020AC7F8: .word 0x021CB824 + + arm_func_start FUN_020AC7FC +FUN_020AC7FC: + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r2, #0x10 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {pc} + ldrb r2, [r1, #0x8] + cmp r2, r0 + bne _020AC834 + ldr r0, _020AC894 ; =0x021CCD20 + ldrb r12, [r1, #0x9] + ldrb r2, [r0, #0x0] + cmp r12, r2 + beq _020AC840 +_020AC834: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AC840: + ldrb r2, [r1, #0x5] + cmp r2, #0x10 + beq _020AC860 + mov r0, r1 + mov r1, r3 + bl FUN_020ABE40 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AC860: + ldr r0, [r0, #0xc] + cmp r0, #0x0 + bne _020AC880 + mov r0, r1 + mov r1, r3 + bl FUN_020AC080 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AC880: + mov r0, r1 + mov r1, r3 + bl FUN_020ABECC + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AC894: .word 0x021CCD20 + + arm_func_start FUN_020AC898 +FUN_020AC898: ; 0x020AC898 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + bl OS_GetTick + ldr r2, _020AC950 ; =0x021CCD20 + ldr r3, [r2, #0x10] + cmp r3, #0x2 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} +_020AC8B8: ; 0x020AC8B8 + ldr r2, [r2, #0xc] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020AC8C8: ; 0x020AC8C8 + ldr r3, _020AC954 ; =0x021CB81C + mov r12, #0x0 + ldr r5, [r3, #0x4] + ldr r4, [r3, #0x0] + cmp r5, r12 + cmpeq r4, r12 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020AC8E8: ; 0x020AC8E8 + ldr r2, _020AC958 ; =0x02106490 + subs r4, r0, r4 + ldr lr, [r2, #0x0] + ldr r0, [r2, #0x4] + sbc r1, r1, r5 + cmp r1, r0 + cmpeq r4, lr + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} +_020AC90C: ; 0x020AC90C + ldr r1, _020AC95C ; =0x021CB824 + mov r0, r12 + str r12, [r3, #0x0] + str r12, [r3, #0x4] + str r12, [r1, #0x2c] + str r12, [r1, #0x38] + bl FUN_020AC5E8 + ldr r1, _020AC950 ; =0x021CCD20 + ldr r0, _020AC95C ; =0x021CB824 + ldr r3, [r1, #0x8] + ldrb r0, [r0, #0x30] + ldr r12, [r1, #0x4] + ldr r2, _020AC960 ; =0x021CB850 + mov r1, #0x9 + blx r12 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AC950: .word 0x021CCD20 +_020AC954: .word 0x021CB81C +_020AC958: .word 0x02106490 +_020AC95C: .word 0x021CB824 +_020AC960: .word 0x021CB850 + + arm_func_start FUN_020AC964 +FUN_020AC964: ; 0x020AC964 + ldr r0, _020AC978 ; =0x021CB824 + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x0] + bx lr + .balign 4 +_020AC978: .word 0x021CB824 + + arm_func_start FUN_020AC97C +FUN_020AC97C: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + beq _020AC9A8 + ldr r1, [r4, #0x4] + cmp r1, #0x0 + beq _020AC9A8 + cmp r1, #0x8 + bls _020AC9B4 +_020AC9A8: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,pc} +_020AC9B4: + ldr r1, _020ACA8C ; =0x021CB824 + mov r2, #0x18 + str r0, [r1, #0x0] + ldr r3, [r4, #0x4] + mov r1, #0x0 + mul r2, r3, r2 + bl MI_CpuFill8 + ldr r0, _020ACA90 ; =0x021CB850 + mov r1, #0x0 + mov r2, #0x18 + bl MI_CpuFill8 + ldr r0, _020ACA94 ; =0x021CB838 + mov r1, #0x0 + mov r2, #0x18 + bl MI_CpuFill8 + ldr r12, [r4, #0x4] + mov lr, #0x0 + subs r0, r12, #0x1 + beq _020ACA34 + ldr r1, _020ACA8C ; =0x021CB824 + mov r5, lr + mov r0, #0x18 +_020ACA0C: + ldr r2, [r1, #0x0] + add lr, lr, #0x1 + mla r3, lr, r0, r2 + add r2, r2, r5 + str r3, [r2, #0x14] + ldr r12, [r4, #0x4] + add r5, r5, #0x18 + sub r2, r12, #0x1 + cmp lr, r2 + blo _020ACA0C +_020ACA34: + ldr r3, _020ACA8C ; =0x021CB824 + mov r0, #0x18 + ldr r1, [r3, #0x0] + mov r5, #0x0 + mla r0, r12, r0, r1 + str r5, [r0, #-0x4] + ldr r2, _020ACA98 ; =0x021CB818 + ldr r1, _020ACA9C ; =0x021CB814 + ldr r0, _020ACAA0 ; =0x021CCD20 + ldr lr, _020ACAA4 ; =OS_GetTick + ldr ip, _020ACAA8 ; =0x5D588B65 + ldr r4, _020ACAAC ; =0x00269EC3 + str r5, [r3, #0x4] + str r5, [r2, #0x0] + str r5, [r1, #0x0] + str r5, [r0, #0x14] + str lr, [r3, #0x8] + str r12, [r3, #0xc] + str r4, [r3, #0x10] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020ACA8C: .word 0x021CB824 +_020ACA90: .word 0x021CB850 +_020ACA94: .word 0x021CB838 +_020ACA98: .word 0x021CB818 +_020ACA9C: .word 0x021CB814 +_020ACAA0: .word 0x021CCD20 +_020ACAA4: .word OS_GetTick +_020ACAA8: .word 0x5D588B65 +_020ACAAC: .word 0x00269EC3 + + arm_func_start FUN_020ACAB0 +FUN_020ACAB0: ; 0x020ACAB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020ACADC ; =0x021CCD20 + ldr r2, [r2, #0x10] + cmp r2, #0x2 + addeq sp, sp, #0x4 + mvneq r0, #0x2 + ldmeqia sp!, {pc} + bl FUN_020AC708 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACADC: .word 0x021CCD20 + + arm_func_start FUN_020ACAE0 +FUN_020ACAE0: + stmdb sp!, {r4-r6,lr} + movs r5, r0 + mov r6, r1 + mov r4, r2 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020ACAF8: ; 0x020ACAF8 + cmp r3, #0x10 + mvncc r0, #0x0 + ldmccia sp!, {r4-r6,pc} +_020ACB04: ; 0x020ACB04 + cmp r6, #0x0 + blt _020ACB14 + cmp r6, #0x6 + blt _020ACB1C +_020ACB14: + mvn r0, #0x2 + ldmia sp!, {r4-r6,pc} +_020ACB1C: + mov r3, #0x0 + mov r1, r4 + and r2, r6, #0xff + strb r3, [r4, #0x4] + bl FUN_020AC458 +_020ACB30: ; 0x020ACB30 + cmp r6, #0x0 + bne _020ACB80 + ldr r0, _020ACB9C ; =0x021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x1 + bne _020ACB68 + ldr r0, [r5, #0xc] + cmp r0, #0x4 + bne _020ACB68 + mov r0, r5 + bl FUN_020AC304 +_020ACB5C: ; 0x020ACB5C + cmp r0, #0x0 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} +_020ACB68: + ldrb r1, [r5, #0x4] + cmp r1, #0x0 + movne r0, #0x1 + movne r0, r0, lsl r1 + moveq r0, #0x1 + str r0, [r5, #0x8] +_020ACB80: + mov r0, r5 + mov r1, r4 + bl FUN_020AC268 +_020ACB8C: ; 0x020ACB8C + cmp r0, #0x0 + mvneq r0, #0x2 + movne r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ACB9C: .word 0x021CCD20 + + arm_func_start FUN_020ACBA0 +FUN_020ACBA0: ; 0x020ACBA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020ACBCC ; =0x021CCD20 + ldr r2, [r2, #0x10] + cmp r2, #0x2 + addeq sp, sp, #0x4 + mvneq r0, #0x2 + ldmeqia sp!, {pc} + bl FUN_020AC74C + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACBCC: .word 0x021CCD20 + + arm_func_start FUN_020ACBD0 +FUN_020ACBD0: + stmdb sp!, {r4-r6,lr} + movs r5, r0 + mov r4, r1 + mov r6, r2 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020ACBE8: ; 0x020ACBE8 + cmp r3, #0x10 + mvncc r0, #0x0 + ldmccia sp!, {r4-r6,pc} +_020ACBF4: ; 0x020ACBF4 + ldr r1, _020ACC80 ; =0x021CCD20 + ldr r1, [r1, #0xc] + cmp r1, #0x1 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} +_020ACC08: ; 0x020ACC08 + cmp r4, #0x0 + blt _020ACC18 + cmp r4, #0x5 + blt _020ACC20 +_020ACC18: + mvn r0, #0x2 + ldmia sp!, {r4-r6,pc} +_020ACC20: + mov r3, #0xff + mov r1, r6 + and r2, r4, #0xff + strb r3, [r6, #0x4] + bl FUN_020AC458 + mov r0, r5 + mov r1, r6 + bl FUN_020AC268 +_020ACC40: ; 0x020ACC40 + cmp r0, #0x0 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} +_020ACC4C: ; 0x020ACC4C + ldr r0, _020ACC80 ; =0x021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x1 + bne _020ACC78 + cmp r4, #0x0 + bne _020ACC78 + mov r0, r5 + bl FUN_020AC304 +_020ACC6C: ; 0x020ACC6C + cmp r0, #0x0 + mvneq r0, #0x2 + ldmeqia sp!, {r4-r6,pc} +_020ACC78: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020ACC80: .word 0x021CCD20 + + arm_func_start FUN_020ACC84 +FUN_020ACC84: ; 0x020ACC84 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020ACD48 ; =0x021CB824 + cmp r0, #0x0 + mov lr, #0x0 + addeq sp, sp, #0x4 + ldr r12, [r2, #0x4] + moveq r0, lr + ldmeqia sp!, {pc} + ldr r1, _020ACD4C ; =0x021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x2 + bne _020ACCD0 + ldr r1, _020ACD50 ; =0x021CB850 + add sp, sp, #0x4 + cmp r0, r1 + streq lr, [r2, #0x2c] + mov r0, #0x1 + ldmia sp!, {pc} +_020ACCD0: + cmp r12, #0x0 + beq _020ACD3C +_020ACCD8: + cmp r12, r0 + bne _020ACD2C + mov r3, #0x0 + str r3, [r0, #0x0] + cmp lr, #0x0 + ldrne r1, [r0, #0x14] + strne r1, [lr, #0x14] + bne _020ACD10 + ldr r2, [r12, #0x14] + cmp r2, #0x0 + ldrne r1, _020ACD48 ; =0x021CB824 + strne r2, [r1, #0x4] + ldreq r1, _020ACD48 ; =0x021CB824 + streq r3, [r1, #0x4] +_020ACD10: + ldr r1, _020ACD48 ; =0x021CB824 + add sp, sp, #0x4 + ldr r2, [r1, #0x0] + str r2, [r0, #0x14] + str r0, [r1, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020ACD2C: + mov lr, r12 + ldr r12, [r12, #0x14] + cmp r12, #0x0 + bne _020ACCD8 +_020ACD3C: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACD48: .word 0x021CB824 +_020ACD4C: .word 0x021CCD20 +_020ACD50: .word 0x021CB850 + + arm_func_start FUN_020ACD54 +FUN_020ACD54: ; 0x020ACD54 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020ACD8C ; =0x021CCD20 + ldr r1, [r1, #0x10] + cmp r1, #0x0 + beq _020ACD74 + cmp r1, #0x2 + bne _020ACD80 +_020ACD74: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020ACD80: + bl FUN_020AC790 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020ACD8C: .word 0x021CCD20 + + arm_func_start FUN_020ACD90 +FUN_020ACD90: + stmdb sp!, {r4,lr} + mov r4, r0 + bl OS_DisableInterrupts + ldr r1, _020ACDC0 ; =0x021CB86C + ldr r2, _020ACDC4 ; =0x021CB868 + ldr r3, [r1, #0x0] + str r0, [r2, #0x0] + str r3, [r4, #0x0] + ldr r0, [r2, #0x0] + str r4, [r1, #0x0] + bl OS_RestoreInterrupts + ldmia sp!, {r4,pc} + .balign 4 +_020ACDC0: .word 0x021CB86C +_020ACDC4: .word 0x021CB868 + + arm_func_start FUN_020ACDC8 +FUN_020ACDC8: ; 0x020ACDC8 + stmdb sp!, {r4,lr} + mov r4, #0x0 + bl OS_DisableInterrupts + ldr r1, _020ACE08 ; =0x021CB86C + ldr r2, _020ACE0C ; =0x021CB868 + ldr r3, [r1, #0x0] + str r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, [r3, #0x0] + movne r4, r3 + strne r0, [r1, #0x0] + ldr r0, _020ACE0C ; =0x021CB868 + ldr r0, [r0, #0x0] + bl OS_RestoreInterrupts + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020ACE08: .word 0x021CB86C +_020ACE0C: .word 0x021CB868 + + arm_func_start FUN_020ACE10 +FUN_020ACE10: + ldr r1, _020ACE28 ; =0x021CB86C + mov r2, #0x0 + ldr r0, _020ACE2C ; =0x021CB870 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020ACE28: .word 0x021CB86C +_020ACE2C: .word 0x021CB870 + + arm_func_start FUN_020ACE30 +FUN_020ACE30: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r3, _020ACF00 ; =0xE525982B + mov r2, r1 + umull r1, r4, r2, r3 + ldr r1, _020ACF04 ; =0x021CB870 + mov r4, r4, lsr #0xa + str r0, [r1, #0x0] + cmp r4, #0x4 + blo _020ACE60 + cmp r4, #0x48 + bls _020ACE6C +_020ACE60: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r5,pc} +_020ACE6C: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020ACE7C: ; 0x020ACE7C + ands r3, r0, #0x1f + movne r0, #0x0 + strne r0, [r1, #0x0] + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} +_020ACE90: ; 0x020ACE90 + mov r1, r0 + mov r0, #0x0 + bl MIi_CpuClearFast + subs r12, r4, #0x1 + mov r5, #0x0 + beq _020ACED0 + ldr r1, _020ACF04 ; =0x021CB870 + ldr r0, _020ACF08 ; =0x00000478 + mov lr, r5 +_020ACEB4: + ldr r3, [r1, #0x0] + add r5, r5, #0x1 + mla r2, r5, r0, r3 + str r2, [r3, lr] + cmp r5, r12 + add lr, lr, r0 + blo _020ACEB4 +_020ACED0: + ldr r1, _020ACF04 ; =0x021CB870 + ldr r0, _020ACF08 ; =0x00000478 + ldr r2, [r1, #0x0] + mov r3, #0x0 + mla r0, r4, r0, r2 + str r3, [r0, #-0x478] + ldr r2, [r1, #0x0] + ldr r1, _020ACF0C ; =0x021CB86C + mov r0, #0x1 + str r2, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020ACF00: .word 0xE525982B +_020ACF04: .word 0x021CB870 +_020ACF08: .word 0x00000478 +_020ACF0C: .word 0x021CB86C + + arm_func_start FUN_020ACF10 +FUN_020ACF10: ; 0x020ACF10 + mov r2, #0xf + mov r0, #0x44 + mul r1, r2, r0 + ldr r0, _020ACF30 ; =0x02106498 + ldr ip, _020ACF34 ; =FUN_020AD170 + str r2, [r0, #0x8] + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020ACF30: .word 0x02106498 +_020ACF34: .word FUN_020AD170 + + arm_func_start FUN_020ACF38 +FUN_020ACF38: ; 0x020ACF38 + stmdb sp!, {r4,lr} + ldr r3, _020AD124 ; =0x02106498 + mov r12, r1, lsr #0x8 + str r12, [r3, #0x4] + cmp r2, #0x0 + strneb r12, [r2, #0x0] + ldr r2, _020AD124 ; =0x02106498 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + bne _020AD05C + mov r4, #0x0 + mov r12, r4 + ldr r3, _020AD128 ; =0x021CB880 +_020ACF6C: + ldr r2, [r3, r12, lsl #0x2] + add r12, r12, #0x1 + cmp r12, #0x4 + add r4, r4, r2 + blt _020ACF6C + ldr ip, _020AD12C ; =0x040002B0 + mov r3, #0x0 + ldr r2, _020AD130 ; =0x040002B8 + strh r3, [r12, #0x0] + mov r3, r4, lsr #0x2 + str r3, [r2, #0x0] +_020ACF98: + ldrh r2, [r12, #0x0] + ands r2, r2, #0x8000 + bne _020ACF98 + ldr r2, _020AD134 ; =0x040002B4 + cmp r1, #0x0 + ldr r2, [r2, #0x0] + beq _020AD038 + cmp r1, r2, lsl #0x1 + blo _020AD038 + mov r4, #0x0 + mov r3, r4 + ldr r2, _020AD128 ; =0x021CB880 +_020ACFC8: + ldr r1, [r2, r3, lsl #0x2] + add r3, r3, #0x1 + cmp r3, #0x4 + add r4, r4, r1 + blo _020ACFC8 + ldr r3, _020AD12C ; =0x040002B0 + mov r2, #0x0 + ldr r1, _020AD130 ; =0x040002B8 + strh r2, [r3, #0x0] + mov r2, r4, lsr #0x2 + str r2, [r1, #0x0] +_020ACFF4: + ldrh r1, [r3, #0x0] + ands r1, r1, #0x8000 + bne _020ACFF4 + ldr r2, _020AD134 ; =0x040002B4 + mov r1, #0x3 + ldr r2, [r2, #0x0] + ldr r3, _020AD138 ; =0x021CB874 + mul r1, r2, r1 + mov lr, r1, lsr #0x1 + ldr r2, _020AD13C ; =0x021CB878 + mov r12, #0x0 + ldr r1, _020AD124 ; =0x02106498 + mov r4, #0x1 + str lr, [r3, #0x0] + str r12, [r2, #0x0] + str r4, [r1, #0x0] + b _020AD03C +_020AD038: + mov r4, #0x0 +_020AD03C: + ldr r1, _020AD13C ; =0x021CB878 + ldr r3, _020AD128 ; =0x021CB880 + ldr r12, [r1, #0x0] + add r2, r12, #0x1 + and r2, r2, #0x3 + str r0, [r3, r12, lsl #0x2] + str r2, [r1, #0x0] + b _020AD11C +_020AD05C: + ldr r1, _020AD13C ; =0x021CB878 + mov lr, #0x0 + ldr r12, [r1, #0x0] + ldr r3, _020AD128 ; =0x021CB880 + add r2, r12, #0x1 + and r2, r2, #0x3 + mov r4, lr + str r0, [r3, r12, lsl #0x2] + str r2, [r1, #0x0] +_020AD080: + ldr r0, [r3, r4, lsl #0x2] + add r4, r4, #0x1 + cmp r4, #0x4 + add lr, lr, r0 + blt _020AD080 + ldr r2, _020AD12C ; =0x040002B0 + mov r1, #0x0 + ldr r0, _020AD130 ; =0x040002B8 + strh r1, [r2, #0x0] + mov r1, lr, lsr #0x2 + str r1, [r0, #0x0] +_020AD0AC: + ldrh r0, [r2, #0x0] + ands r0, r0, #0x8000 + bne _020AD0AC + ldr r1, _020AD134 ; =0x040002B4 + ldr r0, _020AD138 ; =0x021CB874 + ldr r1, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r1, r0 + bhi _020AD10C + ldr r2, _020AD140 ; =0x021CB87C + ldr r1, _020AD124 ; =0x02106498 + ldr r3, [r2, #0x0] + ldr r0, [r1, #0x8] + add r3, r3, #0x1 + str r3, [r2, #0x0] + cmp r3, r0 + ble _020AD118 + ldr r0, _020AD13C ; =0x021CB878 + mov r3, #0x0 + str r3, [r0, #0x0] + str r3, [r1, #0x0] + str r3, [r2, #0x0] + mov r0, #0x3 + ldmia sp!, {r4,pc} +_020AD10C: + ldr r0, _020AD140 ; =0x021CB87C + mov r1, #0x0 + str r1, [r0, #0x0] +_020AD118: + mov r4, #0x2 +_020AD11C: + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020AD124: .word 0x02106498 +_020AD128: .word 0x021CB880 +_020AD12C: .word 0x040002B0 +_020AD130: .word 0x040002B8 +_020AD134: .word 0x040002B4 +_020AD138: .word 0x021CB874 +_020AD13C: .word 0x021CB878 +_020AD140: .word 0x021CB87C + + arm_func_start FUN_020AD144 +FUN_020AD144: ; 0x020AD144 + stmdb sp!, {lr} + sub sp, sp, #0x4 + movs r1, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, _020AD16C ; =0x02106498 + mov r2, #0x10 + bl MI_CpuCopy8 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD16C: .word 0x02106498 + + arm_func_start FUN_020AD170 +FUN_020AD170: + ldr r0, _020AD1B8 ; =0x021CB880 + mov r2, #0x0 + mov r1, #0x1000000 +_020AD17C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x4 + blt _020AD17C + ldr r3, _020AD1BC ; =0x021CB878 + mov r12, #0x0 + ldr r1, _020AD1C0 ; =0x02106498 + ldr r2, _020AD1C4 ; =0x021CB874 + ldr r0, _020AD1C8 ; =0x021CB87C + str r12, [r3, #0x0] + str r12, [r2, #0x0] + str r12, [r1, #0x0] + str r12, [r1, #0x4] + str r12, [r0, #0x0] + bx lr + .balign 4 +_020AD1B8: .word 0x021CB880 +_020AD1BC: .word 0x021CB878 +_020AD1C0: .word 0x02106498 +_020AD1C4: .word 0x021CB874 +_020AD1C8: .word 0x021CB87C + + arm_func_start FUN_020AD1CC +FUN_020AD1CC: ; 0x020AD1CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, r1 + mov r3, r2 + ldr r1, _020AD1F0 ; =0x021CB8D4 + mov r2, r12 + bl FUN_020AD1F4 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD1F0: .word 0x021CB8D4 + + arm_func_start FUN_020AD1F4 +FUN_020AD1F4: ; 0x020AD1F4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r4, #0x0 + str r4, [sp, #0x0] + str r4, [sp, #0x4] + mov r9, r4 + movs r8, r2, lsr #0x1 + beq _020AD330 + mov r4, #0xc0000000 + ldr ip, _020AD420 ; =0x021CB8BC + ldr r2, _020AD424 ; =0x021CB8A4 + str r4, [sp, #0xc] +_020AD224: + ldr r4, _020AD428 ; =0x021CB894 + ldr lr, [r2, #0x10] + ldr r7, [r4, #0x0] + mov r4, r9, lsl #0x1 + ldrsh r10, [r1, r4] + ldr r4, _020AD42C ; =0x021CB898 + mov r5, r7, lsl #0x1 + ldr r6, [r4, #0x0] + ldr r4, _020AD430 ; =0x021CBD14 + ldr r11, [r2, #0x14] + strh r10, [r4, r5] + ldr r10, [r12, #0x10] + mov r5, r6, lsl #0x1 + ldrsh r5, [r4, r5] + ldr r4, [r12, #0x14] + mul lr, r10, lr + str r10, [sp, #0x8] + str r10, [r12, #0x14] + mla r10, r4, r11, lr + ldr r4, [r12, #0xc] + ldr r11, [r2, #0xc] + str r4, [r12, #0x10] + mla r10, r4, r11, r10 + ldr r4, [r12, #0x8] + ldr r11, [r2, #0x8] + str r4, [r12, #0xc] + mla r10, r4, r11, r10 + ldr r4, [r12, #0x4] + ldr r11, [r2, #0x4] + str r4, [r12, #0x8] + mla r10, r4, r11, r10 + ldr r4, [r2, #0x0] + str r5, [r12, #0x0] + mla r4, r5, r4, r10 + str r5, [r12, #0x4] + ldr r5, _020AD434 ; =0x3FFF8000 + cmp r4, r5 + movgt r4, r5 + bgt _020AD2C8 + cmp r4, #0xc0000000 + ldrlt r4, [sp, #0xc] +_020AD2C8: + ldr r5, _020AD438 ; =0x000007FF + add r7, r7, #0x1 + and r7, r7, r5 + ldr r5, _020AD428 ; =0x021CB894 + add r6, r6, #0x1 + str r7, [r5, #0x0] + ldr r5, _020AD438 ; =0x000007FF + mov r7, r9, lsl #0x1 + and r6, r6, r5 + ldr r5, _020AD42C ; =0x021CB898 + mov r4, r4, asr #0xf + str r6, [r5, #0x0] + strh r4, [r1, r7] + ldrsh r6, [r1, r7] + ldrsh r4, [r0, r7] + add r9, r9, #0x1 + mul r5, r6, r6 + strh r4, [r1, r7] + ldr r4, [sp, #0x0] + adds r4, r4, r5 + str r4, [sp, #0x0] + ldr r4, [sp, #0x4] + adc r4, r4, r5, asr #0x1f + str r4, [sp, #0x4] + cmp r9, r8 + blo _020AD224 +_020AD330: + ldr r5, _020AD43C ; =0x04000280 + mov r1, #0x1 + strh r1, [r5, #0x0] + ldr r4, _020AD440 ; =0x04000290 + ldr r1, [sp, #0x0] + ldr r2, _020AD444 ; =0x04000298 + str r1, [r4, #0x0] + ldr r1, [sp, #0x4] + str r1, [r4, #0x4] + str r8, [r2, #0x0] + mov r1, #0x0 + str r1, [r2, #0x4] +_020AD360: + ldrh r1, [r5, #0x0] + ands r1, r1, #0x8000 + bne _020AD360 + ldr r1, _020AD448 ; =0x040002A0 + ldr r2, _020AD44C ; =0x040002B0 + ldr r5, [r1, #0x0] + mov r4, #0x0 + ldr r1, _020AD450 ; =0x040002B8 + strh r4, [r2, #0x0] + str r5, [r1, #0x0] +_020AD388: + ldrh r1, [r2, #0x0] + ands r1, r1, #0x8000 + bne _020AD388 + ldr r2, _020AD454 ; =0x040002B4 + mov r1, #0x3 + ldr r4, [r2, #0x0] + mov r2, r3, lsl #0x1 + mul r1, r4, r1 + cmp r2, r1 + ldrhi r0, _020AD458 ; =0x021CB890 + movhi r1, #0x0 + strhih r1, [r0, #0x0] + addhi sp, sp, #0x14 + ldmhiia sp!, {r4-r11,pc} +_020AD3C0: ; 0x020AD3C0 + cmp r3, r4 + ldrlo r1, _020AD458 ; =0x021CB890 + movcc r2, #0x4 + strcch r2, [r1, #0x0] + ldr r1, _020AD458 ; =0x021CB890 + mov r3, #0x0 + ldrsh r2, [r1, #0x0] + cmp r2, #0x4 + addlt r2, r2, #0x1 + strlth r2, [r1, #0x0] + cmp r8, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} +_020AD3F4: ; 0x020AD3F4 + ldr r1, _020AD458 ; =0x021CB890 + ldrsh r4, [r1, #0x0] +_020AD3FC: + mov r2, r3, lsl #0x1 + ldrsh r1, [r0, r2] + add r3, r3, #0x1 + cmp r3, r8 + mov r1, r1, asr r4 + strh r1, [r0, r2] + blo _020AD3FC + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AD420: .word 0x021CB8BC +_020AD424: .word 0x021CB8A4 +_020AD428: .word 0x021CB894 +_020AD42C: .word 0x021CB898 +_020AD430: .word 0x021CBD14 +_020AD434: .word 0x3FFF8000 +_020AD438: .word 0x000007FF +_020AD43C: .word 0x04000280 +_020AD440: .word 0x04000290 +_020AD444: .word 0x04000298 +_020AD448: .word 0x040002A0 +_020AD44C: .word 0x040002B0 +_020AD450: .word 0x040002B8 +_020AD454: .word 0x040002B4 +_020AD458: .word 0x021CB890 + + arm_func_start FUN_020AD45C +FUN_020AD45C: ; 0x020AD45C + ldr ip, _020AD46C ; =MIi_CpuCopyFast + mov r2, r1 + ldr r1, _020AD470 ; =0x021CB8D4 + bx r12 + .balign 4 +_020AD46C: .word MIi_CpuCopyFast +_020AD470: .word 0x021CB8D4 + + arm_func_start FUN_020AD474 +FUN_020AD474: ; 0x020AD474 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020AD4E4 ; =0x021CB894 + mov r3, #0x0 + ldr r2, _020AD4E8 ; =0x0000019D + ldr r0, _020AD4EC ; =0x021CB898 + ldr lr, _020AD4F0 ; =0x021064A8 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r0, _020AD4F4 ; =0x021CBD14 + mov r12, r3 +_020AD4A0: + mov r1, r3, lsl #0x1 + add r3, r3, #0x1 + strh r12, [r0, r1] + cmp r3, #0x800 + blt _020AD4A0 + ldr r2, _020AD4F8 ; =0x021CB8BC + ldr r0, _020AD4FC ; =0x021CB8A4 + mov r3, #0x0 +_020AD4C0: + str r3, [r2, r12, lsl #0x2] + mov r1, r12, lsl #0x1 + ldrsh r1, [lr, r1] + str r1, [r0, r12, lsl #0x2] + add r12, r12, #0x1 + cmp r12, #0x6 + blt _020AD4C0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD4E4: .word 0x021CB894 +_020AD4E8: .word 0x0000019D +_020AD4EC: .word 0x021CB898 +_020AD4F0: .word 0x021064A8 +_020AD4F4: .word 0x021CBD14 +_020AD4F8: .word 0x021CB8BC +_020AD4FC: .word 0x021CB8A4 + + arm_func_start FUN_020AD500 +FUN_020AD500: ; 0x020AD500 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldrsh r2, [r0, #0x0] + ldr r6, _020AD5FC ; =0x00000E9F + ldr sb, _020AD600 ; =0x021CB89C + ldr r8, _020AD604 ; =0x021CB8A0 + smulbb r10, r2, r6 + ldr r3, [r9, #0x0] + ldr r2, [r8, #0x0] + ldr r7, _020AD608 ; =0x00000D3E + add r3, r10, r3 + mla r5, r2, r7, r3 + mov r3, r5, asr #0xc + mul r4, r3, r3 + str r5, [r8, #0x0] + rsb r2, r10, #0x0 + mov r12, r1, lsr #0x1 + str r3, [r8, #0x0] + str r2, [r9, #0x0] + cmp r12, #0x1 + mov lr, r4, asr #0x1f + mov r5, #0x1 + bls _020AD5AC +_020AD55C: + mov r2, r5, lsl #0x1 + ldrsh r10, [r0, r2] + ldr r3, [r8, #0x0] + add r2, r0, r5, lsl #0x1 + strh r3, [r2, #-0x2] + smulbb r11, r10, r6 + ldr r2, [r9, #0x0] + rsb r10, r11, #0x0 + add r2, r11, r2 + mla r2, r3, r7, r2 + mov r3, r2, asr #0xc + mul r11, r3, r3 + str r2, [r8, #0x0] + adds r4, r4, r11 + str r10, [r9, #0x0] + add r5, r5, #0x1 + adc lr, lr, r11, asr #0x1f + str r3, [r8, #0x0] + cmp r5, r12 + blo _020AD55C +_020AD5AC: + bic r1, r1, #0x1 + add r0, r0, r1 + ldr r2, _020AD60C ; =0x04000280 + strh r3, [r0, #-0x2] + mov r0, #0x1 + ldr r1, _020AD610 ; =0x04000290 + strh r0, [r2, #0x0] + str r4, [r1, #0x0] + ldr r0, _020AD614 ; =0x04000298 + str lr, [r1, #0x4] + str r12, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] +_020AD5E0: + ldrh r0, [r2, #0x0] + ands r0, r0, #0x8000 + bne _020AD5E0 + ldr r0, _020AD618 ; =0x040002A0 + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020AD5FC: .word 0x00000E9F +_020AD600: .word 0x021CB89C +_020AD604: .word 0x021CB8A0 +_020AD608: .word 0x00000D3E +_020AD60C: .word 0x04000280 +_020AD610: .word 0x04000290 +_020AD614: .word 0x04000298 +_020AD618: .word 0x040002A0 + + arm_func_start FUN_020AD61C +FUN_020AD61C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs lr, r3, lsr #0x1 + mov r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020AD634: ; 0x020AD634 + mov r3, #0x8000 + ldr ip, _020AD720 ; =0x00007FFF + rsb r3, r3, #0x0 +_020AD640: + mov r5, r4, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD664 + cmp r6, r3 + movlt r6, r3 +_020AD664: + mov r5, r4, lsl #0x1 + add r7, r4, #0x1 + strh r6, [r2, r5] + mov r5, r7, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD694 + cmp r6, r3 + movlt r6, r3 +_020AD694: + mov r5, r7, lsl #0x1 + add r7, r4, #0x2 + strh r6, [r2, r5] + mov r5, r7, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD6CC + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r6, r5 + movlt r6, r3 +_020AD6CC: + mov r5, r7, lsl #0x1 + add r7, r4, #0x3 + strh r6, [r2, r5] + mov r5, r7, lsl #0x1 + ldrsh r6, [r0, r5] + ldrsh r5, [r1, r5] + add r6, r6, r5 + cmp r6, r12 + movgt r6, r12 + bgt _020AD704 + mov r5, #0x8000 + rsb r5, r5, #0x0 + cmp r6, r5 + movlt r6, r3 +_020AD704: + mov r5, r7, lsl #0x1 + add r4, r4, #0x4 + strh r6, [r2, r5] + cmp r4, lr + blo _020AD640 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AD720: .word 0x00007FFF + + arm_func_start FUN_020AD724 +FUN_020AD724: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r6, r1 + mov r7, r0 + mov r5, r2 + mov r4, r3 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020AD748: ; 0x020AD748 + ldr r1, [r6, #0x0] + ldr r0, _020AD824 ; =0x5F564354 + cmp r1, r0 + addne sp, sp, #0x4 + movne r0, #0x2 + ldmneia sp!, {r4-r7,pc} +_020AD760: ; 0x020AD760 + ldr r0, _020AD828 ; =0x021CCD20 + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020AD780 + ldr r0, _020AD82C ; =0x021CCD1C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020AD78C +_020AD780: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AD78C: + mov r0, #0x0 + str r0, [r4, #0x0] + str r0, [r4, #0x4] + bl OS_GetTick + ldrb r3, [r6, #0x4] + and r2, r3, #0xf0 + cmp r2, #0x40 + bne _020AD7E0 + ldr r2, _020AD830 ; =0x021CCD18 + mov r3, r0 + ldr r4, [r2, #0x0] + mov r0, r7 + add r4, r4, #0x1 + str r4, [r2, #0x0] + str r1, [sp, #0x0] + mov r1, r6 + mov r2, r5 + bl FUN_020AA2A0 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AD7E0: + cmp r3, #0x0 + beq _020AD7F0 + cmp r3, #0xff + bne _020AD818 +_020AD7F0: + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl FUN_020AC7FC +_020AD804: ; 0x020AD804 + cmp r0, #0x0 + movne r0, #0x1 + add sp, sp, #0x4 + moveq r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020AD818: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AD824: .word 0x5F564354 +_020AD828: .word 0x021CCD20 +_020AD82C: .word 0x021CCD1C +_020AD830: .word 0x021CCD18 + + arm_func_start FUN_020AD834 +FUN_020AD834: ; 0x020AD834 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + add r3, sp, #0x0 + mov r4, r0 + bl FUN_020AD724 +_020AD848: ; 0x020AD848 + cmp r0, #0x0 + beq _020AD898 + cmp r0, #0x1 + beq _020AD864 + cmp r0, #0x2 + beq _020AD88C + b _020AD898 +_020AD864: + ldr r0, _020AD8A4 ; =0x021CCD20 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [r0, #0x8] + ldr r12, [r0, #0x4] + mov r0, r4 + blx r12 + add sp, sp, #0x8 + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020AD88C: + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AD898: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AD8A4: .word 0x021CCD20 + + arm_func_start FUN_020AD8A8 +FUN_020AD8A8: ; 0x020AD8A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AD8FC ; =0x021CCD1C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, _020AD900 ; =0x021CCD14 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + ands r0, r1, #0xf + bne _020AD8E0 + bl FUN_020AC898 +_020AD8E0: + bl FUN_020AA0A4 +_020AD8E4: ; 0x020AD8E4 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl FUN_020AA1CC + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD8FC: .word 0x021CCD1C +_020AD900: .word 0x021CCD14 + + arm_func_start FUN_020AD904 +FUN_020AD904: ; 0x020AD904 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020AAF44 + bl FUN_020AC964 + bl FUN_020ACE10 + ldr r1, _020AD934 ; =0x021CCD20 + mov r2, #0x0 + ldr r0, _020AD938 ; =0x021CCD1C + str r2, [r1, #0x10] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AD934: .word 0x021CCD20 +_020AD938: .word 0x021CCD1C + + arm_func_start FUN_020AD93C +FUN_020AD93C: ; 0x020AD93C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020ADA78 ; =0x02000C1C + bl OSi_ReferSymbol +_020AD94C: ; 0x020AD94C + cmp r4, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020AD958: ; 0x020AD958 + ldr r0, _020ADA7C ; =0x021CCD1C + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movne r0, #0x1 + ldmneia sp!, {r4,pc} +_020AD96C: ; 0x020AD96C + ldr r0, [r4, #0x8] + cmp r0, #0x1 + beq _020AD98C + cmp r0, #0x2 + beq _020AD98C + cmp r0, #0x3 + movne r0, #0x0 + ldmneia sp!, {r4,pc} +_020AD98C: + ldr r0, [r4, #0x18] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020AD99C: ; 0x020AD99C + ldr r2, [r4, #0x10] + cmp r2, #0x0 + beq _020AD9B4 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + bne _020AD9BC +_020AD9B4: + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AD9BC: + mov r1, r2, lsr #0x1f + rsb r0, r1, r2, lsl #0x1b + adds r0, r1, r0, ror #0x1b + movne r0, #0x0 + ldmneia sp!, {r4,pc} +_020AD9D0: ; 0x020AD9D0 + ldr r0, _020ADA80 ; =0x021CCD20 + mov r1, #0x0 + mov r2, #0x18 + bl MI_CpuFill8 + ldr r2, [r4, #0x18] + ldr r1, _020ADA80 ; =0x021CCD20 + mov r0, #0x0 + str r2, [r1, #0x4] + ldr r2, [r4, #0x1c] + str r2, [r1, #0x8] + ldr r2, [r4, #0x8] + str r0, [r1, #0xc] + str r2, [r1, #0x10] + ldrb r2, [r4, #0xc] + cmp r2, #0x20 + ldmcsia sp!, {r4,pc} +_020ADA10: ; 0x020ADA10 + strb r2, [r1, #0x0] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl FUN_020ACE30 +_020ADA20: ; 0x020ADA20 + cmp r0, #0x0 + bne _020ADA34 + bl FUN_020ACE10 +_020ADA2C: ; 0x020ADA2C + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020ADA34: + mov r0, r4 + bl FUN_020AC97C +_020ADA3C: ; 0x020ADA3C + cmp r0, #0x0 + bne _020ADA50 + bl FUN_020ACE10 +_020ADA48: ; 0x020ADA48 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020ADA50: + bl FUN_020AAF58 +_020ADA54: ; 0x020ADA54 + cmp r0, #0x0 + ldrne r1, _020ADA7C ; =0x021CCD1C + movne r0, #0x1 + strne r0, [r1, #0x0] + ldmneia sp!, {r4,pc} +_020ADA68: ; 0x020ADA68 + bl FUN_020AC964 + bl FUN_020ACE10 +_020ADA70: ; 0x020ADA70 + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020ADA78: .word 0x02000C1C +_020ADA7C: .word 0x021CCD1C +_020ADA80: .word 0x021CCD20 + + arm_func_start FUN_020ADA84 +FUN_020ADA84: ; 0x020ADA84 + cmp r1, #0x0 + ldreq r0, [r0, #0x4] + ldrneh r0, [r0, #0xa] + ldrne r0, [r1, r0] + bx lr + + arm_func_start FUN_020ADA98 +FUN_020ADA98: ; 0x020ADA98 + cmp r1, #0x0 + ldreq r0, [r0, #0x0] + ldrneh r0, [r0, #0xa] + addne r0, r1, r0 + ldrne r0, [r0, #0x4] + bx lr + + arm_func_start FUN_020ADAB0 +FUN_020ADAB0: ; 0x020ADAB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xa] + ldr r3, [r1, r12] + add lr, r1, r12 + cmp r3, #0x0 + ldreq r1, [lr, #0x4] + streq r1, [r0, #0x0] + ldrne r2, [lr, #0x4] + addne r1, r3, r12 + strne r2, [r1, #0x4] + ldr r3, [lr, #0x4] + cmp r3, #0x0 + ldreq r1, [lr, #0x0] + streq r1, [r0, #0x4] + ldrneh r1, [r0, #0xa] + ldrne r2, [lr, #0x0] + strne r2, [r3, r1] + mov r1, #0x0 + str r1, [lr, #0x0] + str r1, [lr, #0x4] + ldrh r1, [r0, #0x8] + sub r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADB18 +FUN_020ADB18: ; 0x020ADB18 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + bne _020ADB38 + mov r1, r2 + bl FUN_020ADBE8 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB38: + ldr r3, [r0, #0x0] + cmp r1, r3 + bne _020ADB54 + mov r1, r2 + bl FUN_020ADB8C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADB54: + ldrh lr, [r0, #0xa] + ldr r3, [r1, lr] + add r12, r2, lr + str r3, [r2, lr] + str r1, [r12, #0x4] + add r3, r3, lr + str r2, [r3, #0x4] + ldrh r3, [r0, #0xa] + str r2, [r1, r3] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADB8C +FUN_020ADB8C: ; 0x020ADB8C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADBAC + bl FUN_020ADC48 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADBAC: + ldrh r3, [r0, #0xa] + mov r2, #0x0 + str r2, [r1, r3] + ldr r2, [r0, #0x0] + add r3, r1, r3 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x0] + str r1, [r3, r2] + str r1, [r0, #0x0] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADBE8 +FUN_020ADBE8: ; 0x020ADBE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + bne _020ADC08 + bl FUN_020ADC48 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADC08: + ldrh r12, [r0, #0xa] + ldr r3, [r0, #0x4] + mov r2, #0x0 + str r3, [r1, r12] + add r3, r1, r12 + str r2, [r3, #0x4] + ldrh r2, [r0, #0xa] + ldr r3, [r0, #0x4] + add r2, r3, r2 + str r1, [r2, #0x4] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020ADC48 +FUN_020ADC48: ; 0x020ADC48 + ldrh r3, [r0, #0xa] + mov r2, #0x0 + add r12, r1, r3 + str r2, [r12, #0x4] + str r2, [r1, r3] + str r1, [r0, #0x0] + str r1, [r0, #0x4] + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020ADC74 +FUN_020ADC74: ; 0x020ADC74 + mov r2, #0x0 + str r2, [r0, #0x0] + str r2, [r0, #0x4] + strh r2, [r0, #0x8] + strh r1, [r0, #0xa] + bx lr + + arm_func_start FUN_020ADC8C +FUN_020ADC8C: ; 0x020ADC8C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020ADD30 + mov r1, r4 + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020ADCA4 +FUN_020ADCA4: + stmdb sp!, {r4,lr} + mov r4, r0 + str r1, [r4, #0x0] + str r2, [r4, #0x18] + str r3, [r4, #0x1c] + mov r0, #0x0 + str r0, [r4, #0x20] + ldr r1, [r4, #0x20] + ldrh r0, [sp, #0x8] + bic r1, r1, #0xff + str r1, [r4, #0x20] + ldr r1, [r4, #0x20] + and r0, r0, #0xff + orr r2, r1, r0 + add r0, r4, #0xc + mov r1, #0x4 + str r2, [r4, #0x20] + bl FUN_020ADC74 + ldr r0, _020ADD28 ; =0x021CCD38 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020ADD14 + ldr r0, _020ADD2C ; =0x021CCD3C + mov r1, #0x4 + bl FUN_020ADC74 + ldr r0, _020ADD28 ; =0x021CCD38 + mov r1, #0x1 + str r1, [r0, #0x0] +_020ADD14: + mov r0, r4 + bl FUN_020ADD30 + mov r1, r4 + bl FUN_020ADBE8 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD28: .word 0x021CCD38 +_020ADD2C: .word 0x021CCD3C + + arm_func_start FUN_020ADD30 +FUN_020ADD30: ; 0x020ADD30 + stmdb sp!, {r4,lr} + ldr r4, _020ADD54 ; =0x021CCD3C + mov r1, r0 + mov r0, r4 + bl FUN_020ADD58 +_020ADD44: ; 0x020ADD44 + cmp r0, #0x0 + addne r4, r0, #0xc + mov r0, r4 + ldmia sp!, {r4,pc} + .balign 4 +_020ADD54: .word 0x021CCD3C + + arm_func_start FUN_020ADD58 +FUN_020ADD58: + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r1, #0x0 + mov r6, r0 + bl FUN_020ADA98 + movs r4, r0 + beq _020ADDB8 +_020ADD74: + ldr r0, [r4, #0x18] + cmp r0, r5 + bhi _020ADDA4 + ldr r0, [r4, #0x1c] + cmp r5, r0 + bhs _020ADDA4 + mov r1, r5 + add r0, r4, #0xc + bl FUN_020ADD58 +_020ADD98: ; 0x020ADD98 + cmp r0, #0x0 + moveq r0, r4 + ldmia sp!, {r4-r6,pc} +_020ADDA4: + mov r0, r6 + mov r1, r4 + bl FUN_020ADA98 + movs r4, r0 + bne _020ADD74 +_020ADDB8: + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020ADDC0 +FUN_020ADDC0: ; 0x020ADDC0 + ldr r0, [r0, #-0xc] + bx lr + + arm_func_start FUN_020ADDC8 +FUN_020ADDC8: ; 0x020ADDC8 + ldr r2, [r0, #0x24] + mov r0, #0x0 + cmp r2, #0x0 + bxeq lr +_020ADDD8: + ldr r1, [r2, #0x4] + ldr r2, [r2, #0xc] + add r0, r0, r1 + cmp r2, #0x0 + bne _020ADDD8 + bx lr + + arm_func_start FUN_020ADDF0 +FUN_020ADDF0: ; 0x020ADDF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + sub r4, r1, #0x10 + add r5, r0, #0x24 + add r0, sp, #0x0 + mov r1, r4 + bl FUN_020AE528 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020AE500 + add r1, sp, #0x0 + mov r0, r5 + bl FUN_020AE02C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020ADE2C +FUN_020ADE2C: ; 0x020ADE2C + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x10 + mov r4, r1 + mov r10, r2 + sub r6, r4, #0x10 + add r1, r10, #0x3 + mov r5, r0 + ldr r8, [r6, #0x4] + bic r10, r1, #0x3 + cmp r10, r8 + add r7, r5, #0x24 + addeq sp, sp, #0x10 + moveq r0, r10 + ldmeqia sp!, {r4-r10,pc} +_020ADE64: ; 0x020ADE64 + cmp r10, r8 + bls _020ADF60 + ldr r9, [r7, #0x0] + add r0, r6, #0x10 + cmp r9, #0x0 + add r0, r8, r0 + beq _020ADE94 +_020ADE80: + cmp r9, r0 + beq _020ADE94 + ldr r9, [r9, #0xc] + cmp r9, #0x0 + bne _020ADE80 +_020ADE94: + cmp r9, #0x0 + beq _020ADEB0 + ldr r0, [r9, #0x4] + add r1, r8, #0x10 + add r0, r1, r0 + cmp r10, r0 + bls _020ADEBC +_020ADEB0: + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r10,pc} +_020ADEBC: + add r0, sp, #0x0 + mov r1, r9 + bl FUN_020AE528 + mov r0, r7 + mov r1, r9 + bl FUN_020AE500 + ldr r2, [sp, #0x4] + add r3, r10, r4 + ldr r9, [sp, #0x0] + sub r1, r2, r3 + str r3, [sp, #0x0] + cmp r1, #0x10 + strcc r2, [sp, #0x0] + mov r8, r0 + ldr r0, [sp, #0x0] + sub r0, r0, r4 + str r0, [r6, #0x4] + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + blo _020ADF30 + ldr r1, _020ADF9C ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r8 + bl FUN_020AE4D0 +_020ADF30: + ldr r0, [r5, #0x20] + ldr r1, [sp, #0x0] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + sub r2, r1, r9 + ands r0, r0, #0x1 + beq _020ADF90 + mov r1, r9 + mov r0, #0x0 + bl MIi_CpuClear32 + b _020ADF90 +_020ADF60: + add r0, r10, r4 + str r0, [sp, #0x8] + ldr r1, [r6, #0x4] + add r0, r6, #0x10 + add r0, r1, r0 + str r0, [sp, #0xc] + add r1, sp, #0x8 + mov r0, r7 + str r10, [r6, #0x4] + bl FUN_020AE02C +_020ADF88: ; 0x020ADF88 + cmp r0, #0x0 + streq r8, [r6, #0x4] +_020ADF90: + ldr r0, [r6, #0x4] + add sp, sp, #0x10 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020ADF9C: .word 0x00004652 + + arm_func_start tempName_NNS_FndAllocFromExpHeapEx +tempName_NNS_FndAllocFromExpHeapEx: ; 0x020ADFA0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020ADFCC + bl FUN_020AE1D8 + add sp, sp, #0x4 + ldmia sp!, {pc} +_020ADFCC: + rsb r2, r2, #0x0 + bl FUN_020AE11C + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start thunk_FUN_020adc8c +thunk_FUN_020adc8c: ; 0x020ADFDC + ldr ip, _020ADFE4 ; =FUN_020ADC8C + bx r12 + .balign 4 +_020ADFE4: .word FUN_020ADC8C + + arm_func_start tempName_NNS_FndCreateExpHeapEx +tempName_NNS_FndCreateExpHeapEx: ; 0x020ADFE8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE014 + sub r3, r1, r0 + cmp r3, #0x4c + bhs _020AE020 +_020AE014: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE020: + bl FUN_020AE420 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE02C +FUN_020AE02C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r1 + ldr r2, [r5, #0x0] + ldr r1, [r5, #0x4] + mov r6, r0 + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [r6, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + beq _020AE0A0 + ldr r0, [r5, #0x0] +_020AE060: + cmp r1, r0 + movcc r4, r1 + blo _020AE094 + ldr r0, [r5, #0x4] + cmp r1, r0 + bne _020AE0A0 + ldr r2, [r1, #0x4] + add r0, r1, #0x10 + add r2, r2, r0 + mov r0, r6 + str r2, [sp, #0x4] + bl FUN_020AE500 + b _020AE0A0 +_020AE094: + ldr r1, [r1, #0xc] + cmp r1, #0x0 + bne _020AE060 +_020AE0A0: + cmp r4, #0x0 + beq _020AE0D4 + ldr r2, [r4, #0x4] + add r1, r4, #0x10 + ldr r0, [r5, #0x0] + add r1, r2, r1 + cmp r1, r0 + bne _020AE0D4 + mov r0, r6 + mov r1, r4 + str r4, [sp, #0x0] + bl FUN_020AE500 + mov r4, r0 +_020AE0D4: + ldr r1, [sp, #0x4] + ldr r0, [sp, #0x0] + sub r0, r1, r0 + cmp r0, #0x10 + addcc sp, sp, #0x8 + movcc r0, #0x0 + ldmccia sp!, {r4-r6,pc} +_020AE0F0: ; 0x020AE0F0 + ldr r1, _020AE118 ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r6 + mov r2, r4 + bl FUN_020AE4D0 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AE118: .word 0x00004652 + + arm_func_start FUN_020AE11C +FUN_020AE11C: ; 0x020AE11C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + mvn lr, #0x0 + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r5, #0x1 + mov r1, #0x0 + ldr r4, [r0, #0x4] + movne r5, #0x0 + mov r12, r1 + cmp r4, #0x0 + beq _020AE1B0 + sub r2, r2, #0x1 + mvn r2, r2 +_020AE164: + ldr r8, [r4, #0x4] + add r9, r4, #0x10 + add r6, r8, r9 + sub r6, r6, r3 + and r7, r2, r6 + subs r6, r7, r9 + bmi _020AE1A4 + cmp lr, r8 + bls _020AE1A4 + mov r1, r4 + mov lr, r8 + mov r12, r7 + cmp r5, #0x0 + bne _020AE1B0 + cmp r8, r3 + beq _020AE1B0 +_020AE1A4: + ldr r4, [r4, #0x8] + cmp r4, #0x0 + bne _020AE164 +_020AE1B0: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} +_020AE1C0: ; 0x020AE1C0 + mov r4, #0x1 + mov r2, r12 + str r4, [sp, #0x0] + bl FUN_020AE298 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020AE1D8 +FUN_020AE1D8: ; 0x020AE1D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + add r0, r0, #0x24 + ldrh r4, [r0, #0x12] + mov r3, r1 + ldr r5, [r0, #0x0] + and r1, r4, #0x1 + mov r1, r1, lsl #0x10 + movs r1, r1, lsr #0x10 + moveq r6, #0x1 + mov r1, #0x0 + movne r6, #0x0 + mov lr, r1 + cmp r5, #0x0 + mvn r4, #0x0 + beq _020AE270 + sub r12, r2, #0x1 + mvn r2, r12 +_020AE220: + add r8, r5, #0x10 + add r7, r12, r8 + and r9, r2, r7 + sub r7, r9, r8 + ldr r8, [r5, #0x4] + add r7, r3, r7 + cmp r8, r7 + blo _020AE264 + cmp r4, r8 + bls _020AE264 + mov r1, r5 + mov r4, r8 + mov lr, r9 + cmp r6, #0x0 + bne _020AE270 + cmp r8, r3 + beq _020AE270 +_020AE264: + ldr r5, [r5, #0xc] + cmp r5, #0x0 + bne _020AE220 +_020AE270: + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} +_020AE280: ; 0x020AE280 + mov r4, #0x0 + mov r2, lr + str r4, [sp, #0x0] + bl FUN_020AE298 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020AE298 +FUN_020AE298: ; 0x020AE298 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + mov r7, r0 + add r0, sp, #0x0 + mov r8, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020AE528 + ldr r3, [sp, #0x4] + sub r4, r6, #0x10 + add r2, r5, r6 + mov r0, r7 + mov r1, r8 + str r4, [sp, #0x4] + str r3, [sp, #0xc] + str r2, [sp, #0x8] + bl FUN_020AE500 + ldr r2, [sp, #0x0] + ldr r1, [sp, #0x4] + mov r5, r0 + sub r0, r1, r2 + cmp r0, #0x10 + strcc r2, [sp, #0x4] + blo _020AE318 + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x0 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl FUN_020AE4D0 + mov r5, r0 +_020AE318: + ldr r1, [sp, #0xc] + ldr r0, [sp, #0x8] + sub r0, r1, r0 + cmp r0, #0x10 + strcc r1, [sp, #0x8] + blo _020AE34C + ldr r1, _020AE418 ; =0x00004652 + add r0, sp, #0x8 + bl FUN_020AE4A0 + mov r1, r0 + mov r0, r7 + mov r2, r5 + bl FUN_020AE4D0 +_020AE34C: + ldr r0, [r7, #-0x4] + ldr r1, [sp, #0x4] + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + ldr r2, [sp, #0x8] + mov r0, r0, lsr #0x10 + sub r2, r2, r1 + ands r0, r0, #0x1 + beq _020AE378 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE378: + ldr r2, [sp, #0x8] + ldr r1, _020AE41C ; =0x00005544 + add r0, sp, #0x10 + str r4, [sp, #0x10] + str r2, [sp, #0x14] + bl FUN_020AE4A0 + mov r1, r0 + ldrh r3, [r1, #0x2] + ldrh r2, [sp, #0x30] + add r0, r7, #0x8 + bic r3, r3, #0x8000 + strh r3, [r1, #0x2] + ldrh r3, [r1, #0x2] + and r2, r2, #0x1 + orr r2, r3, r2, lsl #0xf + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldr r3, [sp, #0x4] + bic r2, r2, #0x7f00 + strh r2, [r1, #0x2] + sub r2, r1, r3 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + ldrh r3, [r1, #0x2] + and r2, r2, #0x7f + orr r2, r3, r2, lsl #0x8 + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + ldrh r3, [r7, #0x10] + bic r2, r2, #0xff + strh r2, [r1, #0x2] + ldrh r2, [r1, #0x2] + and r3, r3, #0xff + orr r2, r2, r3 + strh r2, [r1, #0x2] + ldr r2, [r7, #0xc] + bl FUN_020AE4D0 + mov r0, r6 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020AE418: .word 0x00004652 +_020AE41C: .word 0x00005544 + + arm_func_start FUN_020AE420 +FUN_020AE420: ; 0x020AE420 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE498 ; =0x45585048 + add r2, r4, #0x14 + bl FUN_020ADCA4 +_020AE444: ; 0x020AE444 + mov r0, #0x0 + strh r0, [r4, #0x10] + strh r0, [r4, #0x12] + ldrh r2, [r4, #0x12] + ldr r1, _020AE49C ; =0x00004652 + add r0, sp, #0x4 + bic r2, r2, #0x1 + strh r2, [r4, #0x12] + ldr r2, [r5, #0x18] + str r2, [sp, #0x4] + ldr r2, [r5, #0x1c] + str r2, [sp, #0x8] + bl FUN_020AE4A0 + str r0, [r5, #0x24] + str r0, [r4, #0x4] + mov r1, #0x0 + str r1, [r4, #0x8] + mov r0, r5 + str r1, [r4, #0xc] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE498: .word 0x45585048 +_020AE49C: .word 0x00004652 + + arm_func_start FUN_020AE4A0 +FUN_020AE4A0: ; 0x020AE4A0 + ldr r3, [r0, #0x0] + mov r2, #0x0 + strh r1, [r3, #0x0] + strh r2, [r3, #0x2] + ldr r1, [r0, #0x4] + add r0, r3, #0x10 + sub r0, r1, r0 + str r0, [r3, #0x4] + str r2, [r3, #0x8] + mov r0, r3 + str r2, [r3, #0xc] + bx lr + + arm_func_start FUN_020AE4D0 +FUN_020AE4D0: ; 0x020AE4D0 + str r2, [r1, #0x8] + cmp r2, #0x0 + ldrne r3, [r2, #0xc] + strne r1, [r2, #0xc] + ldreq r3, [r0, #0x0] + streq r1, [r0, #0x0] + str r3, [r1, #0xc] + cmp r3, #0x0 + strne r1, [r3, #0x8] + streq r1, [r0, #0x4] + mov r0, r1 + bx lr + + arm_func_start FUN_020AE500 +FUN_020AE500: ; 0x020AE500 + ldr r2, [r1, #0x8] + ldr r1, [r1, #0xc] + cmp r2, #0x0 + strne r1, [r2, #0xc] + streq r1, [r0, #0x0] + cmp r1, #0x0 + strne r2, [r1, #0x8] + streq r2, [r0, #0x4] + mov r0, r2 + bx lr + + arm_func_start FUN_020AE528 +FUN_020AE528: ; 0x020AE528 + ldrh r2, [r1, #0x2] + add r3, r1, #0x10 + mov r2, r2, asr #0x8 + and r2, r2, #0x7f + mov r2, r2, lsl #0x10 + sub r2, r1, r2, lsr #0x10 + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + add r1, r1, r3 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020AE554 +FUN_020AE554: ; 0x020AE554 + add r2, r0, #0x24 + cmp r1, #0x0 + ldr r3, [r2, #0x8] + beq _020AE584 + cmp r3, #0x0 + beq _020AE584 +_020AE56C: + ldr r0, [r3, #0x0] + cmp r0, r1 + beq _020AE584 + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE56C +_020AE584: + cmp r3, #0x0 + moveq r0, #0x0 + bxeq lr + ldr r1, [r3, #0x4] + mov r0, #0x1 + str r1, [r2, #0x0] + ldr r1, [r3, #0x8] + str r1, [r2, #0x4] + ldr r1, [r3, #0xc] + str r1, [r2, #0x8] + bx lr + + arm_func_start FUN_020AE5B0 +FUN_020AE5B0: ; 0x020AE5B0 + stmdb sp!, {r4-r6,lr} + add r4, r0, #0x24 + ldr r5, [r0, #0x24] + mov r6, r1 + mov r0, r4 + mov r1, #0x10 + mov r2, #0x4 + bl FUN_020AE77C +_020AE5D0: ; 0x020AE5D0 + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020AE5DC: ; 0x020AE5DC + str r6, [r0, #0x0] + str r5, [r0, #0x4] + ldr r1, [r4, #0x4] + str r1, [r0, #0x8] + ldr r1, [r4, #0x8] + str r1, [r0, #0xc] + str r0, [r4, #0x8] + mov r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AE600 +FUN_020AE600: ; 0x020AE600 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + ands r1, r4, #0x1 + beq _020AE61C + bl FUN_020AE6F8 +_020AE61C: + ands r0, r4, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020AE628: ; 0x020AE628 + mov r0, r5 + bl FUN_020AE6C8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AE638 +FUN_020AE638: ; 0x020AE638 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + moveq r1, #0x1 + add r1, r1, #0x3 + add r0, r0, #0x24 + cmp r2, #0x0 + bic r1, r1, #0x3 + blt _020AE668 + bl FUN_020AE77C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020AE668: + rsb r2, r2, #0x0 + bl FUN_020AE710 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start thunk_FUN_020adc8c_2 +thunk_FUN_020adc8c_2: ; 0x020AE678 + ldr ip, _020AE680 ; =FUN_020ADC8C + bx r12 + .balign 4 +_020AE680: .word FUN_020ADC8C + + arm_func_start FUN_020AE684 +FUN_020AE684: ; 0x020AE684 + stmdb sp!, {lr} + sub sp, sp, #0x4 + add r1, r1, r0 + add r0, r0, #0x3 + bic r1, r1, #0x3 + bic r0, r0, #0x3 + cmp r0, r1 + bhi _020AE6B0 + sub r3, r1, r0 + cmp r3, #0x30 + bhs _020AE6BC +_020AE6B0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {pc} +_020AE6BC: + bl FUN_020AE7E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE6C8 +FUN_020AE6C8: ; 0x020AE6C8 + add r2, r0, #0x24 + ldr r3, [r2, #0x8] + cmp r3, #0x0 + beq _020AE6EC +_020AE6D8: + ldr r1, [r0, #0x1c] + str r1, [r3, #0x8] + ldr r3, [r3, #0xc] + cmp r3, #0x0 + bne _020AE6D8 +_020AE6EC: + ldr r0, [r0, #0x1c] + str r0, [r2, #0x4] + bx lr + + arm_func_start FUN_020AE6F8 +FUN_020AE6F8: ; 0x020AE6F8 + ldr r1, [r0, #0x18] + add r2, r0, #0x24 + str r1, [r0, #0x24] + mov r0, #0x0 + str r0, [r2, #0x8] + bx lr + + arm_func_start FUN_020AE710 +FUN_020AE710: ; 0x020AE710 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x4] + sub r0, r2, #0x1 + mvn r2, r0 + sub r1, r3, r1 + ldr r0, [r5, #0x0] + and r4, r2, r1 + cmp r4, r0 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} +_020AE744: ; 0x020AE744 + ldr r0, [r5, #-0x4] + sub r2, r3, r4 + and r0, r0, #0xff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ands r0, r0, #0x1 + beq _020AE76C + mov r1, r4 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE76C: + mov r0, r4 + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AE77C +FUN_020AE77C: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x0] + sub r2, r2, #0x1 + mvn r3, r2 + add r2, r2, r0 + and r5, r3, r2 + ldr r2, [r6, #0x4] + add r4, r1, r5 + cmp r4, r2 + movhi r0, #0x0 + ldmhiia sp!, {r4-r6,pc} +_020AE7AC: ; 0x020AE7AC + ldr r1, [r6, #-0x4] + sub r2, r4, r0 + and r1, r1, #0xff + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + ands r1, r1, #0x1 + beq _020AE7D4 + mov r1, r0 + mov r0, #0x0 + bl MIi_CpuClear32 +_020AE7D4: + mov r0, r5 + str r4, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AE7E0 +FUN_020AE7E0: ; 0x020AE7E0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r3, r1 + add r4, r5, #0x24 + str r2, [sp, #0x0] + ldr r1, _020AE828 ; =0x46524D48 + add r2, r4, #0xc + bl FUN_020ADCA4 + ldr r0, [r5, #0x18] + mov r1, #0x0 + str r0, [r5, #0x24] + ldr r2, [r5, #0x1c] + mov r0, r5 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AE828: .word 0x46524D48 + + arm_func_start FUN_020AE82C +FUN_020AE82C: ; 0x020AE82C + ldr ip, _020AE848 ; =0x020FF7CC + mov r3, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x4] + str r2, [r0, #0x8] + str r3, [r0, #0xc] + bx lr + .balign 4 +_020AE848: .word 0x020FF7CC + + arm_func_start FUN_020AE84C +FUN_020AE84C: ; 0x020AE84C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x4] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE868 +FUN_020AE868: ; 0x020AE868 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x0] + ldr r2, [r2, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AE884 +FUN_020AE884: ; 0x020AE884 + ldr ip, _020AE890 ; =FUN_020ADDF0 + ldr r0, [r0, #0x4] + bx r12 + .balign 4 +_020AE890: .word FUN_020ADDF0 + + arm_func_start FUN_020AE894 +FUN_020AE894: ; 0x020AE894 + ldr ip, _020AE8A8 ; =tempName_NNS_FndAllocFromExpHeapEx + mov r2, r0 + ldr r0, [r2, #0x4] + ldr r2, [r2, #0x8] + bx r12 + .balign 4 +_020AE8A8: .word tempName_NNS_FndAllocFromExpHeapEx + + arm_func_start FUN_020AE8AC +FUN_020AE8AC: ; 0x020AE8AC + mvn r0, #0x0 + bx lr + + arm_func_start FUN_020AE8B4 +FUN_020AE8B4: ; 0x020AE8B4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AE8BC +FUN_020AE8BC: ; 0x020AE8BC + mvn r0, #0x0 + bx lr + + arm_func_start FUN_020AE8C4 +FUN_020AE8C4: ; 0x020AE8C4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AE8CC +FUN_020AE8CC: ; 0x020AE8CC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr r3, _020AE914 ; =0x021064E4 + mov r12, lr + mov r2, #0x1 +_020AE8E4: + ldr r1, [r0, r12, lsl #0x2] + add lr, lr, #0x1 + str r1, [r3, #0x0] + ldr r1, [r0, r2, lsl #0x2] + cmp lr, #0x5 + str r1, [r3, #0x4] + add r12, r12, #0x2 + add r3, r3, #0x18 + add r2, r2, #0x2 + blt _020AE8E4 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE914: .word 0x021064E4 + + arm_func_start FUN_020AE918 +FUN_020AE918: ; 0x020AE918 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov lr, #0x0 + ldr ip, _020AE960 ; =0x021064E4 + mov r3, lr + mov r2, #0x1 +_020AE930: + ldr r1, [r12, #0x0] + add lr, lr, #0x1 + str r1, [r0, r3, lsl #0x2] + ldr r1, [r12, #0x4] + cmp lr, #0x5 + str r1, [r0, r2, lsl #0x2] + add r12, r12, #0x18 + add r3, r3, #0x2 + add r2, r2, #0x2 + blt _020AE930 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AE960: .word 0x021064E4 + + arm_func_start FUN_020AE964 +FUN_020AE964: ; 0x020AE964 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AE96C +FUN_020AE96C: ; 0x020AE96C + stmdb sp!, {r4-r10,lr} + cmp r0, #0x0 + moveq r7, #0x10 + addne r0, r0, #0xf + bicne r7, r0, #0xf + ldr r0, _020AEADC ; =0x0007FFF0 + cmp r7, r0 + movcs r0, #0x0 + ldmcsia sp!, {r4-r10,pc} +_020AE990: ; 0x020AE990 + cmp r1, #0x0 + beq _020AEA5C + mov lr, r7, lsr #0x1 + mov r6, #0x0 + ldr r2, _020AEAE0 ; =0x02106514 + ldr r3, _020AEAE4 ; =0x021064FC + ldr ip, _020AEAE8 ; =0x021064C8 + mov r0, r6 +_020AE9B0: + ldr r5, [r12, r6, lsl #0x2] + ldr r4, [r5, #0x8] + cmp r4, #0x0 + beq _020AEA48 + ldr r9, [r5, #0x4] + ldr r4, [r5, #0x0] + sub r4, r9, r4 + cmp r4, r7 + blo _020AEA48 + ldrh r4, [r5, #0x10] + cmp r4, #0x0 + beq _020AE9EC + cmp r4, #0x3 + beq _020AE9F4 + b _020AE9FC +_020AE9EC: + mov r4, r3 + b _020AEA00 +_020AE9F4: + mov r4, r2 + b _020AEA00 +_020AE9FC: + mov r4, r0 +_020AEA00: + ldr r9, [r4, #0x8] + cmp r9, #0x0 + beq _020AEA48 + ldr r10, [r4, #0x4] + ldr r9, [r4, #0x0] + sub r9, r10, r9 + cmp r9, lr + blo _020AEA48 + ldr r3, [r5, #0x0] + mov r0, #0x1 + add r2, r3, r7 + str r2, [r5, #0x0] + ldr r2, [r4, #0x0] + add r2, r2, lr + str r2, [r4, #0x0] + ldr r2, [r5, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEA48: + add r6, r6, #0x1 + cmp r6, #0x2 + blt _020AE9B0 + mov r0, #0x0 + b _020AEAB8 +_020AEA5C: + ldr r3, _020AEAEC ; =0x021064D0 + mov r5, #0x0 +_020AEA64: + ldr r4, [r3, r5, lsl #0x2] + ldr r0, [r4, #0x8] + cmp r0, #0x0 + beq _020AEAA8 + ldr r2, [r4, #0x4] + ldr r0, [r4, #0x0] + sub r0, r2, r0 + cmp r0, r7 + blo _020AEAA8 + ldr r2, [r4, #0x4] + mov r0, #0x1 + sub r2, r2, r7 + str r2, [r4, #0x4] + ldr r3, [r4, #0x4] + ldr r2, [r4, #0x14] + add r8, r3, r2 + b _020AEAB8 +_020AEAA8: + add r5, r5, #0x1 + cmp r5, #0x5 + blt _020AEA64 + mov r0, #0x0 +_020AEAB8: + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020AEAC4: ; 0x020AEAC4 + ldr r0, _020AEAF0 ; =0x0000FFFF + mov r2, r7, lsr #0x4 + and r0, r0, r8, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r1, lsl #0x1f + ldmia sp!, {r4-r10,pc} + .balign 4 +_020AEADC: .word 0x0007FFF0 +_020AEAE0: .word 0x02106514 +_020AEAE4: .word 0x021064FC +_020AEAE8: .word 0x021064C8 +_020AEAEC: .word 0x021064D0 +_020AEAF0: .word 0x0000FFFF + + arm_func_start FUN_020AEAF4 +FUN_020AEAF4: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r0, _020AEB68 ; =0x021CCD48 + mov r6, #0x0 + ldrh r7, [r0, #0x0] + ldr r5, _020AEB6C ; =0x021064E4 + mov lr, r6 + cmp r7, #0x1 + addhi r7, r7, #0x1 + mov r1, r6 + mov r3, r6 + mov r4, #0x1 + mov r0, #0x20000 + mov r2, #0x10000 +_020AEB2C: + cmp r6, r7 + strlt r4, [r5, #0x8] + strge lr, [r5, #0x8] + ldr r12, [r5, #0xc] + add r6, r6, #0x1 + cmp r12, #0x0 + strne r3, [r5, #0x0] + strne r2, [r5, #0x4] + streq r1, [r5, #0x0] + streq r0, [r5, #0x4] + cmp r6, #0x5 + add r5, r5, #0x18 + blt _020AEB2C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEB68: .word 0x021CCD48 +_020AEB6C: .word 0x021064E4 + + arm_func_start FUN_020AEB70 +FUN_020AEB70: ; 0x020AEB70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + cmp r5, #0x2 + bhi _020AEBA8 + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x2 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020AEC10 + b _020AEBC4 +_020AEBA8: + mov r12, #0x1 + mov r0, #0x4 + mov r1, #0x3 + mov r2, #0x0 + mov r3, #0x2 + str r12, [sp, #0x0] + bl FUN_020AEC10 +_020AEBC4: + ldr r0, _020AEBFC ; =0x021CCD48 + strh r5, [r0, #0x0] + bl FUN_020AEAF4 +_020AEBD0: ; 0x020AEBD0 + cmp r4, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020AEBDC: ; 0x020AEBDC + ldr r3, _020AEC00 ; =FUN_020AE96C + ldr r1, _020AEC04 ; =0x021064B8 + ldr r2, _020AEC08 ; =FUN_020AE964 + ldr r0, _020AEC0C ; =0x021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AEBFC: .word 0x021CCD48 +_020AEC00: .word FUN_020AE96C +_020AEC04: .word 0x021064B8 +_020AEC08: .word FUN_020AE964 +_020AEC0C: .word 0x021064BC + + arm_func_start FUN_020AEC10 +FUN_020AEC10: ; 0x020AEC10 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr lr, [sp, #0x18] + ldr r6, _020AEC58 ; =0x021064E4 + mov r12, #0x18 + mla r7, r0, r12, r6 + ldr r0, _020AEC5C ; =0x021064D0 + mla r5, r1, r12, r6 + mla r4, r2, r12, r6 + mla r2, r3, r12, r6 + mla r1, lr, r12, r6 + str r7, [r0, #0x0] + str r5, [r0, #0x4] + str r4, [r0, #0x8] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020AEC58: .word 0x021064E4 +_020AEC5C: .word 0x021064D0 + + arm_func_start FUN_020AEC60 +FUN_020AEC60: + ldr r0, _020AEC78 ; =0x021CCD4C + mov r2, #0x0 + ldr r1, [r0, #0x8] + str r2, [r0, #0x0] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AEC78: .word 0x021CCD4C + + arm_func_start FUN_020AEC7C +FUN_020AEC7C: ; 0x020AEC7C + ldr r2, [r0, #0x0] + ldr r1, _020AEC94 ; =0x021CCD4C + str r2, [r1, #0x0] + ldr r0, [r0, #0x4] + str r0, [r1, #0x4] + bx lr + .balign 4 +_020AEC94: .word 0x021CCD4C + + arm_func_start FUN_020AEC98 +FUN_020AEC98: ; 0x020AEC98 + ldr r1, _020AECB0 ; =0x021CCD4C + ldr r2, [r1, #0x0] + str r2, [r0, #0x0] + ldr r1, [r1, #0x4] + str r1, [r0, #0x4] + bx lr + .balign 4 +_020AECB0: .word 0x021CCD4C + + arm_func_start FUN_020AECB4 +FUN_020AECB4: ; 0x020AECB4 + mov r0, #0x0 + bx lr + + arm_func_start FUN_020AECBC +FUN_020AECBC: ; 0x020AECBC + stmdb sp!, {r4,lr} + cmp r0, #0x0 + moveq r0, #0x8 + addne r0, r0, #0x7 + ldr ip, _020AEDE8 ; =0x0007FFF8 + bicne r0, r0, #0x7 + cmp r0, r12 + mov r3, #0x0 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} +_020AECE4: ; 0x020AECE4 + cmp r2, #0x1 + bne _020AED64 + ldr r2, _020AEDEC ; =0x021CCD4C + cmp r1, #0x0 + ldr r12, [r2, #0x0] + andne r2, r12, #0x7 + rsbne r2, r2, #0x8 + andne r4, r2, #0x7 + andeq r2, r12, #0xf + rsbeq r2, r2, #0x10 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =0x021CCD4C + add lr, r0, r4 + ldr r2, [r2, #0x4] + sub r2, r2, r12 + cmp r2, lr + blo _020AED5C + cmp r1, #0x0 + add r1, r12, lr + beq _020AED40 + cmp r1, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AED40: + ldr r1, _020AEDEC ; =0x021CCD4C + add r3, r12, r4 + ldr r2, [r1, #0x0] + mov r12, #0x1 + add r2, r2, lr + str r2, [r1, #0x0] + b _020AEDCC +_020AED5C: + mov r12, #0x0 + b _020AEDCC +_020AED64: + ldr r2, _020AEDEC ; =0x021CCD4C + ldr r12, [r2, #0x4] + cmp r12, r0 + blo _020AEDC8 + sub r2, r12, r0 + cmp r1, #0x0 + andne r4, r2, #0x7 + andeq r4, r2, #0xf + ldr r2, _020AEDEC ; =0x021CCD4C + add lr, r0, r4 + ldr r2, [r2, #0x0] + sub r2, r12, r2 + cmp r2, lr + blo _020AEDC8 + cmp r1, #0x0 + beq _020AEDB0 + cmp r12, #0x10000 + movhi r12, #0x0 + bhi _020AEDCC +_020AEDB0: + ldr r1, _020AEDEC ; =0x021CCD4C + mov r12, #0x1 + ldr r2, [r1, #0x4] + sub r3, r2, lr + str r3, [r1, #0x4] + b _020AEDCC +_020AEDC8: + mov r12, #0x0 +_020AEDCC: + cmp r12, #0x0 + ldrne r1, _020AEDF0 ; =0x0000FFFF + movne r2, r0, lsr #0x3 + andne r0, r1, r3, lsr #0x3 + orrne r0, r0, r2, lsl #0x10 + moveq r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020AEDE8: .word 0x0007FFF8 +_020AEDEC: .word 0x021CCD4C +_020AEDF0: .word 0x0000FFFF + + arm_func_start FUN_020AEDF4 +FUN_020AEDF4: ; 0x020AEDF4 + stmdb sp!, {r4,lr} + ldr r2, _020AEE2C ; =0x021CCD4C + mov r4, r1 + str r0, [r2, #0x8] + bl FUN_020AEC60 +_020AEE08: ; 0x020AEE08 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} +_020AEE10: ; 0x020AEE10 + ldr r3, _020AEE30 ; =FUN_020AECBC + ldr r1, _020AEE34 ; =0x021064C0 + ldr r2, _020AEE38 ; =FUN_020AECB4 + ldr r0, _020AEE3C ; =0x021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AEE2C: .word 0x021CCD4C +_020AEE30: .word FUN_020AECBC +_020AEE34: .word 0x021064C0 +_020AEE38: .word FUN_020AECB4 +_020AEE3C: .word 0x021064C4 + + arm_func_start FUN_020AEE40 +FUN_020AEE40: ; 0x020AEE40 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r5, _020AEEB4 ; =0x021CCD58 + mov r9, r0 + mov r0, r5 + mov r8, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020AF2F4 +_020AEE64: ; 0x020AEE64 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} +_020AEE74: ; 0x020AEE74 + mov r0, r5 + bl FUN_020AEF78 + mov r4, r0 + str r9, [r4, #0x0] + str r7, [r4, #0x4] + str r8, [r4, #0x8] + mov r0, r5 + str r6, [r4, #0xc] + bl FUN_020AEF98 + ldr r2, [r5, #0x10] + ldr r1, [r4, #0xc] + mov r0, #0x1 + add r1, r2, r1 + str r1, [r5, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020AEEB4: .word 0x021CCD58 + + arm_func_start FUN_020AEEB8 +FUN_020AEEB8: ; 0x020AEEB8 + stmdb sp!, {r4-r6,lr} + ldr r6, _020AEF18 ; =0x021CCD58 + mov r0, r6 + bl FUN_020AEF88 + mov r5, r0 + mov r0, r6 + bl FUN_020AEF3C +_020AEED4: ; 0x020AEED4 + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020AEEDC: ; 0x020AEEDC + add r4, r6, #0x10 +_020AEEE0: + mov r0, r5 + bl FUN_020AEFF0 + ldr r2, [r4, #0x0] + ldr r1, [r5, #0xc] + mov r0, r6 + sub r1, r2, r1 + str r1, [r4, #0x0] + bl FUN_020AEF88 + mov r5, r0 + mov r0, r6 + bl FUN_020AEF3C +_020AEF0C: ; 0x020AEF0C + cmp r0, #0x0 + bne _020AEEE0 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AEF18: .word 0x021CCD58 + + arm_func_start FUN_020AEF1C +FUN_020AEF1C: ; 0x020AEF1C + ldr r2, _020AEF34 ; =0x021CCD58 + ldr ip, _020AEF38 ; =FUN_020AEFD4 + str r0, [r2, #0x0] + mov r0, r2 + str r1, [r2, #0x4] + bx r12 + .balign 4 +_020AEF34: .word 0x021CCD58 +_020AEF38: .word FUN_020AEFD4 + + arm_func_start FUN_020AEF3C +FUN_020AEF3C: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020AF2E0 +_020AEF48: ; 0x020AEF48 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} +_020AEF54: ; 0x020AEF54 + ldrh r1, [r4, #0x8] + mov r0, r4 + bl FUN_020AF30C + strh r0, [r4, #0x8] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + sub r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AEF78 +FUN_020AEF78: ; 0x020AEF78 + ldrh r1, [r0, #0xa] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020AEF88 +FUN_020AEF88: ; 0x020AEF88 + ldrh r1, [r0, #0x8] + ldr r0, [r0, #0x0] + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020AEF98 +FUN_020AEF98: ; 0x020AEF98 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020AF2F4 +_020AEFA4: ; 0x020AEFA4 + cmp r0, #0x0 + movne r0, #0x0 + ldmneia sp!, {r4,pc} +_020AEFB0: ; 0x020AEFB0 + ldrh r1, [r4, #0xa] + mov r0, r4 + bl FUN_020AF30C + strh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + mov r0, #0x1 + add r1, r1, #0x1 + strh r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AEFD4 +FUN_020AEFD4: ; 0x020AEFD4 + mov r2, #0x0 + strh r2, [r0, #0xa] + ldrh r1, [r0, #0xa] + strh r1, [r0, #0x8] + strh r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + + arm_func_start FUN_020AEFF0 +FUN_020AEFF0: ; 0x020AEFF0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r3, [r5, #0x0] + ldr r2, _020AF02C ; =0x020FF7D4 + ldr r0, [r5, #0x4] + ldr r1, [r5, #0xc] + ldr r4, [r2, r3, lsl #0x2] + bl DC_FlushRange + ldr r0, [r5, #0x4] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + blx r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF02C: .word 0x020FF7D4 diff --git a/arm9/asm/unk_020AF030.s b/arm9/asm/unk_020AF030.s new file mode 100644 index 00000000..33faec27 --- /dev/null +++ b/arm9/asm/unk_020AF030.s @@ -0,0 +1,26835 @@ + .include "asm/macros.inc" + .include "global.inc" + + .text + + arm_func_start GXS_LoadOBJ_2 +GXS_LoadOBJ_2: + ldr ip, _020AF038 ; =GXS_LoadOBJ + bx r12 + .balign 4 +_020AF038: .word GXS_LoadOBJ + + arm_func_start GXS_LoadOAM_2 +GXS_LoadOAM_2: ; 0x020AF03C + ldr ip, _020AF044 ; =GXS_LoadOAM + bx r12 + .balign 4 +_020AF044: .word GXS_LoadOAM + + arm_func_start FUN_020AF048 +FUN_020AF048: ; 0x020AF048 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadBGExtPltt + bl GXS_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF074 +FUN_020AF074: ; 0x020AF074 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GXS_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start GXS_LoadBGPltt_2 +GXS_LoadBGPltt_2: ; 0x020AF0A0 + ldr ip, _020AF0A8 ; =GXS_LoadBGPltt + bx r12 + .balign 4 +_020AF0A8: .word GXS_LoadBGPltt + + arm_func_start GXS_LoadOBJPltt_2 +GXS_LoadOBJPltt_2: ; 0x020AF0AC + ldr ip, _020AF0B4 ; =GXS_LoadOBJPltt + bx r12 + .balign 4 +_020AF0B4: .word GXS_LoadOBJPltt + + arm_func_start GXS_LoadBG3Scr_3 +GXS_LoadBG3Scr_3: ; 0x020AF0B8 + ldr ip, _020AF0C0 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0C0: .word GXS_LoadBG3Scr + + arm_func_start GXS_LoadBG2Scr_3 +GXS_LoadBG2Scr_3: ; 0x020AF0C4 + ldr ip, _020AF0CC ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0CC: .word GXS_LoadBG2Scr + + arm_func_start GXS_LoadBG3Scr_2 +GXS_LoadBG3Scr_2: ; 0x020AF0D0 + ldr ip, _020AF0D8 ; =GXS_LoadBG3Scr + bx r12 + .balign 4 +_020AF0D8: .word GXS_LoadBG3Scr + + arm_func_start GXS_LoadBG2Scr_2 +GXS_LoadBG2Scr_2: ; 0x020AF0DC + ldr ip, _020AF0E4 ; =GXS_LoadBG2Scr + bx r12 + .balign 4 +_020AF0E4: .word GXS_LoadBG2Scr + + arm_func_start GXS_LoadBG1Scr_2 +GXS_LoadBG1Scr_2: ; 0x020AF0E8 + ldr ip, _020AF0F0 ; =GXS_LoadBG1Scr + bx r12 + .balign 4 +_020AF0F0: .word GXS_LoadBG1Scr + + arm_func_start GXS_LoadBG0Scr_2 +GXS_LoadBG0Scr_2: ; 0x020AF0F4 + ldr ip, _020AF0FC ; =GXS_LoadBG0Scr + bx r12 + .balign 4 +_020AF0FC: .word GXS_LoadBG0Scr + + arm_func_start GXS_LoadBG3Char_2 +GXS_LoadBG3Char_2: ; 0x020AF100 + ldr ip, _020AF108 ; =GXS_LoadBG3Char + bx r12 + .balign 4 +_020AF108: .word GXS_LoadBG3Char + + arm_func_start GXS_LoadBG2Char_2 +GXS_LoadBG2Char_2: ; 0x020AF10C + ldr ip, _020AF114 ; =GXS_LoadBG2Char + bx r12 + .balign 4 +_020AF114: .word GXS_LoadBG2Char + + arm_func_start GXS_LoadBG1Char_2 +GXS_LoadBG1Char_2: ; 0x020AF118 + ldr ip, _020AF120 ; =GXS_LoadBG1Char + bx r12 + .balign 4 +_020AF120: .word GXS_LoadBG1Char + + arm_func_start GXS_LoadBG0Char_2 +GXS_LoadBG0Char_2: ; 0x020AF124 + ldr ip, _020AF12C ; =GXS_LoadBG0Char + bx r12 + .balign 4 +_020AF12C: .word GXS_LoadBG0Char + + arm_func_start GX_LoadOBJ_2 +GX_LoadOBJ_2: ; 0x020AF130 + ldr ip, _020AF138 ; =GX_LoadOBJ + bx r12 + .balign 4 +_020AF138: .word GX_LoadOBJ + + arm_func_start GX_LoadOAM_2 +GX_LoadOAM_2: ; 0x020AF13C + ldr ip, _020AF144 ; =GX_LoadOAM + bx r12 + .balign 4 +_020AF144: .word GX_LoadOAM + + arm_func_start FUN_020AF148 +FUN_020AF148: ; 0x020AF148 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadBGExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadBGExtPltt + bl GX_EndLoadBGExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF174 +FUN_020AF174: ; 0x020AF174 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadOBJExtPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start GX_LoadBGPltt_2 +GX_LoadBGPltt_2: ; 0x020AF1A0 + ldr ip, _020AF1A8 ; =GX_LoadBGPltt + bx r12 + .balign 4 +_020AF1A8: .word GX_LoadBGPltt + + arm_func_start GX_LoadOBJPltt_2 +GX_LoadOBJPltt_2: ; 0x020AF1AC + ldr ip, _020AF1B4 ; =GX_LoadOBJPltt + bx r12 + .balign 4 +_020AF1B4: .word GX_LoadOBJPltt + + arm_func_start GX_LoadBG3Scr_3 +GX_LoadBG3Scr_3: ; 0x020AF1B8 + ldr ip, _020AF1C0 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1C0: .word GX_LoadBG3Scr + + arm_func_start GX_LoadBG2Scr_3 +GX_LoadBG2Scr_3: ; 0x020AF1C4 + ldr ip, _020AF1CC ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1CC: .word GX_LoadBG2Scr + + arm_func_start GX_LoadBG3Scr_2 +GX_LoadBG3Scr_2: ; 0x020AF1D0 + ldr ip, _020AF1D8 ; =GX_LoadBG3Scr + bx r12 + .balign 4 +_020AF1D8: .word GX_LoadBG3Scr + + arm_func_start GX_LoadBG2Scr_2 +GX_LoadBG2Scr_2: ; 0x020AF1DC + ldr ip, _020AF1E4 ; =GX_LoadBG2Scr + bx r12 + .balign 4 +_020AF1E4: .word GX_LoadBG2Scr + + arm_func_start GX_LoadBG1Scr_2 +GX_LoadBG1Scr_2: ; 0x020AF1E8 + ldr ip, _020AF1F0 ; =GX_LoadBG1Scr + bx r12 + .balign 4 +_020AF1F0: .word GX_LoadBG1Scr + + arm_func_start GX_LoadBG0Scr_2 +GX_LoadBG0Scr_2: ; 0x020AF1F4 + ldr ip, _020AF1FC ; =GX_LoadBG0Scr + bx r12 + .balign 4 +_020AF1FC: .word GX_LoadBG0Scr + + arm_func_start GX_LoadBG3Char_2 +GX_LoadBG3Char_2: ; 0x020AF200 + ldr ip, _020AF208 ; =GX_LoadBG3Char + bx r12 + .balign 4 +_020AF208: .word GX_LoadBG3Char + + arm_func_start GX_LoadBG2Char_2 +GX_LoadBG2Char_2: ; 0x020AF20C + ldr ip, _020AF214 ; =GX_LoadBG2Char + bx r12 + .balign 4 +_020AF214: .word GX_LoadBG2Char + + arm_func_start GX_LoadBG1Char_2 +GX_LoadBG1Char_2: ; 0x020AF218 + ldr ip, _020AF220 ; =GX_LoadBG1Char + bx r12 + .balign 4 +_020AF220: .word GX_LoadBG1Char + + arm_func_start GX_LoadBG0Char_2 +GX_LoadBG0Char_2: ; 0x020AF224 + ldr ip, _020AF22C ; =GX_LoadBG0Char + bx r12 + .balign 4 +_020AF22C: .word GX_LoadBG0Char + + arm_func_start FUN_020AF230 +FUN_020AF230: ; 0x020AF230 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageDepth + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AF25C +FUN_020AF25C: ; 0x020AF25C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl GX_BeginLoadClearImage + mov r0, r5 + mov r1, r4 + bl GX_LoadClearImageColor + bl GX_EndLoadClearImage + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020AF288 +FUN_020AF288: ; 0x020AF288 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTexPltt + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF2B4 +FUN_020AF2B4: ; 0x020AF2B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GX_BeginLoadTex + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl GX_LoadTex + bl GX_EndLoadTex + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF2E0 +FUN_020AF2E0: ; 0x020AF2E0 + ldrh r0, [r0, #0xc] + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020AF2F4 +FUN_020AF2F4: ; 0x020AF2F4 + ldrh r1, [r0, #0xc] + ldr r0, [r0, #0x4] + cmp r1, r0 + moveq r0, #0x1 + movne r0, #0x0 + bx lr + + arm_func_start FUN_020AF30C +FUN_020AF30C: ; 0x020AF30C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r0 + add r0, r1, #0x1 + ldr r1, [r2, #0x4] + bl _u32_div_f + mov r0, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF334 +FUN_020AF334: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + add r3, r2, r3 + str r2, [sp, #0x0] + str r2, [sp, #0x8] + str r3, [sp, #0x4] + str r3, [sp, #0xc] + ldr r3, [r0, #0x0] + add r12, sp, #0x0 + cmp r3, #0x0 + beq _020AF418 + mov r6, #0x0 +_020AF364: + ldr r5, [r3, #0x0] + ldr r4, [r12, #0x4] + ldr r2, [r3, #0xc] + cmp r5, r4 + bne _020AF3B8 + ldr r4, [r3, #0x4] + add r4, r5, r4 + str r4, [sp, #0xc] + ldr r4, [r3, #0x8] + cmp r4, #0x0 + strne r2, [r4, #0xc] + streq r2, [r0, #0x0] + cmp r2, #0x0 + strne r4, [r2, #0x8] + ldr r4, [r1, #0x0] + cmp r4, #0x0 + strne r3, [r4, #0x8] + ldr r4, [r1, #0x0] + str r4, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF3B8: + ldr r5, [r3, #0x0] + ldr lr, [r3, #0x4] + ldr r4, [r12, #0x0] + add lr, r5, lr + cmp r4, lr + bne _020AF40C + str r5, [sp, #0x8] + ldr r5, [r3, #0x8] + ldr r4, [r3, #0xc] + cmp r5, #0x0 + strne r4, [r5, #0xc] + streq r4, [r0, #0x0] + cmp r4, #0x0 + strne r5, [r4, #0x8] + ldr lr, [r1, #0x0] + cmp lr, #0x0 + strne r3, [lr, #0x8] + ldr lr, [r1, #0x0] + str lr, [r3, #0xc] + str r6, [r3, #0x8] + str r3, [r1, #0x0] +_020AF40C: + mov r3, r2 + cmp r2, #0x0 + bne _020AF364 +_020AF418: + ldr r4, [r1, #0x0] + cmp r4, #0x0 + ldrne r2, [r4, #0xc] + strne r2, [r1, #0x0] + cmp r4, #0x0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020AF438: ; 0x020AF438 + ldr r2, [sp, #0x8] + mov r1, #0x0 + str r2, [r4, #0x0] + ldr r3, [sp, #0xc] + ldr r2, [sp, #0x8] + sub r2, r3, r2 + str r2, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + ldr r1, [r0, #0x0] + cmp r1, #0x0 + strne r4, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [r4, #0xc] + str r1, [r4, #0x8] + str r4, [r0, #0x0] + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AF488 +FUN_020AF488: + stmdb sp!, {r4-r10,lr} + ldr r4, [r0, #0x0] + ldr r9, [sp, #0x20] + cmp r4, #0x0 + mov r5, #0x0 + beq _020AF4EC + sub r12, r9, #0x1 + mvn lr, r12 +_020AF4A8: + cmp r9, #0x1 + ldrls r8, [r4, #0x0] + movls r6, r5 + movls r7, r3 + bls _020AF4D0 + ldr r7, [r4, #0x0] + add r6, r7, r12 + and r8, lr, r6 + sub r6, r8, r7 + add r7, r3, r6 +_020AF4D0: + ldr r10, [r4, #0x4] + cmp r10, r7 + movcs r5, r4 + bhs _020AF4EC + ldr r4, [r4, #0xc] + cmp r4, #0x0 + bne _020AF4A8 +_020AF4EC: + cmp r5, #0x0 + beq _020AF5B8 + cmp r6, #0x0 + beq _020AF54C + ldr r9, [r1, #0x0] + cmp r9, #0x0 + ldrne r3, [r9, #0xc] + strne r3, [r1, #0x0] + cmp r9, #0x0 + beq _020AF5B8 + ldr r4, [r5, #0x0] + mov r3, #0x0 + str r4, [r9, #0x0] + str r6, [r9, #0x4] + str r3, [r9, #0x8] + str r3, [r9, #0xc] + ldr r3, [r0, #0x0] + cmp r3, #0x0 + strne r9, [r3, #0x8] + ldr r4, [r0, #0x0] + mov r3, #0x0 + str r4, [r9, #0xc] + str r3, [r9, #0x8] + str r9, [r0, #0x0] +_020AF54C: + ldr r3, [r5, #0x4] + sub r3, r3, r7 + str r3, [r5, #0x4] + ldr r3, [r5, #0x0] + add r3, r3, r7 + str r3, [r5, #0x0] + ldr r3, [r5, #0x4] + cmp r3, #0x0 + bne _020AF5AC + ldr r4, [r5, #0x8] + ldr r3, [r5, #0xc] + cmp r4, #0x0 + strne r3, [r4, #0xc] + streq r3, [r0, #0x0] + cmp r3, #0x0 + strne r4, [r3, #0x8] + ldr r0, [r1, #0x0] + cmp r0, #0x0 + strne r5, [r0, #0x8] + ldr r3, [r1, #0x0] + mov r0, #0x0 + str r3, [r5, #0xc] + str r0, [r5, #0x8] + str r5, [r1, #0x0] +_020AF5AC: + str r8, [r2, #0x0] + mov r0, #0x1 + ldmia sp!, {r4-r10,pc} +_020AF5B8: + mov r0, #0x0 + str r0, [r2, #0x0] + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020AF5C4 +FUN_020AF5C4: + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [sp, #0x0] + bl FUN_020AF488 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF5E0 +FUN_020AF5E0: ; 0x020AF5E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x0] + cmp lr, #0x0 + ldrne r12, [lr, #0xc] + strne r12, [r1, #0x0] + cmp lr, #0x0 + beq _020AF640 + str r2, [lr, #0x0] + str r3, [lr, #0x4] + mov r1, #0x0 + str r1, [lr, #0x8] + str r1, [lr, #0xc] + ldr r1, [r0, #0x0] + add sp, sp, #0x4 + cmp r1, #0x0 + strne lr, [r1, #0x8] + ldr r2, [r0, #0x0] + mov r1, #0x0 + str r2, [lr, #0xc] + str r1, [lr, #0x8] + str lr, [r0, #0x0] + mov r0, #0x1 + ldmia sp!, {pc} +_020AF640: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020AF64C +FUN_020AF64C: ; 0x020AF64C + stmdb sp!, {r4,lr} + subs lr, r1, #0x1 + mov r2, #0x0 + beq _020AF684 + mov r4, r0 +_020AF660: + add r12, r2, #0x1 + add r2, r0, r2, lsl #0x4 + add r3, r0, r12, lsl #0x4 + str r3, [r2, #0xc] + str r4, [r3, #0x8] + mov r2, r12 + cmp r12, lr + add r4, r4, #0x10 + blo _020AF660 +_020AF684: + mov r2, #0x0 + str r2, [r0, #0x8] + add r1, r0, r1, lsl #0x4 + str r2, [r1, #-0x4] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AF698 +FUN_020AF698: ; 0x020AF698 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020AF6A4 +FUN_020AF6A4: ; 0x020AF6A4 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x30 + ldr r6, _020AF884 ; =0x020FF864 + add r5, sp, #0x0 + ldmia r6!, {r0-r3} + mov r12, r5 + stmia r5!, {r0-r3} + ldmia r6!, {r0-r3} + stmia r5!, {r0-r3} + ldr r4, _020AF888 ; =0x021CCD6C + ldmia r6, {r0-r3} + stmia r5, {r0-r3} + ldr lr, [r4, #0x10] + ldr r1, [r4, #0xc] + add r0, lr, lr, lsr #0x1 + mov r4, lr, lsr #0x1 + sub r0, r1, r0 + mov r3, #0x0 +_020AF6EC: + cmp r3, #0x0 + beq _020AF6FC + cmp r3, #0x2 + bne _020AF734 +_020AF6FC: + ldr r2, [r12, #0x0] + cmp r2, #0x0 + beq _020AF734 + cmp lr, #0x0 + beq _020AF734 + ldr r1, [r12, #0x8] + cmp r2, lr + movhi r2, lr + add r1, r1, r2 + str r1, [r12, #0x8] + ldr r1, [r12, #0x0] + sub lr, lr, r2 + sub r1, r1, r2 + str r1, [r12, #0x0] +_020AF734: + add r3, r3, #0x1 + cmp r3, #0x4 + add r12, r12, #0xc + blo _020AF6EC + ldr r1, [sp, #0xc] + add r5, sp, #0x0 + sub r1, r1, r4 + str r1, [sp, #0xc] + mov r3, #0x0 +_020AF758: + ldr r2, [r5, #0x0] + cmp r2, #0x0 + beq _020AF790 + cmp r0, #0x0 + beq _020AF790 + ldr r1, [r5, #0x4] + cmp r2, r0 + movhi r2, r0 + add r1, r1, r2 + str r1, [r5, #0x4] + ldr r1, [r5, #0x0] + sub r0, r0, r2 + sub r1, r1, r2 + str r1, [r5, #0x0] +_020AF790: + add r3, r3, #0x1 + cmp r3, #0x4 + add r5, r5, #0xc + blo _020AF758 + ldr r0, _020AF888 ; =0x021CCD6C + bl FUN_020AF698 + ldr r0, _020AF88C ; =0x021CCD70 + bl FUN_020AF698 + ldr r0, _020AF888 ; =0x021CCD6C + ldr r1, [r0, #0x18] + ldr r0, [r0, #0x14] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r3, [sp, #0x8] + ldr r1, _020AF888 ; =0x021CCD6C + cmp r3, #0x0 + str r0, [r1, #0x8] + beq _020AF7E8 + ldr r0, _020AF88C ; =0x021CCD70 + ldr r1, _020AF890 ; =0x021CCD74 + mov r2, #0x0 + bl FUN_020AF5E0 +_020AF7E8: + ldr r3, [sp, #0x4] + ldr r2, [sp, #0x8] + cmp r3, #0x0 + beq _020AF804 + ldr r0, _020AF888 ; =0x021CCD6C + ldr r1, _020AF890 ; =0x021CCD74 + bl FUN_020AF5E0 +_020AF804: + ldr r3, [sp, #0x20] + cmp r3, #0x0 + beq _020AF820 + ldr r0, _020AF88C ; =0x021CCD70 + ldr r1, _020AF890 ; =0x021CCD74 + mov r2, #0x40000 + bl FUN_020AF5E0 +_020AF820: + ldr r3, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r3, #0x0 + add r2, r0, #0x40000 + beq _020AF840 + ldr r0, _020AF888 ; =0x021CCD6C + ldr r1, _020AF890 ; =0x021CCD74 + bl FUN_020AF5E0 +_020AF840: + ldr r3, [sp, #0x28] + cmp r3, #0x0 + beq _020AF85C + ldr r0, _020AF888 ; =0x021CCD6C + ldr r1, _020AF890 ; =0x021CCD74 + mov r2, #0x60000 + bl FUN_020AF5E0 +_020AF85C: + ldr r3, [sp, #0x10] + cmp r3, #0x0 + addeq sp, sp, #0x30 + ldmeqia sp!, {r4-r6,pc} +_020AF86C: ; 0x020AF86C + ldr r0, _020AF888 ; =0x021CCD6C + ldr r1, _020AF890 ; =0x021CCD74 + add r2, r4, #0x20000 + bl FUN_020AF5E0 + add sp, sp, #0x30 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020AF884: .word 0x020FF864 +_020AF888: .word 0x021CCD6C +_020AF88C: .word 0x021CCD70 +_020AF890: .word 0x021CCD74 + + arm_func_start FUN_020AF894 +FUN_020AF894: ; 0x020AF894 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, _020AF908 ; =0x7FFF0000 + ldr r1, _020AF90C ; =0x0000FFFF + and r2, r0, r2 + and r3, r0, r1 + mov r1, r2, lsr #0x10 + and r0, r0, #0x80000000 + mov r2, r3, lsl #0x3 + movs r3, r1, lsl #0x4 + mov r0, r0, lsr #0x1f + beq _020AF8FC + cmp r0, #0x0 + beq _020AF8DC + ldr r0, _020AF910 ; =0x021CCD70 + ldr r1, _020AF914 ; =0x021CCD74 + bl FUN_020AF334 + b _020AF8E8 +_020AF8DC: + ldr r0, _020AF918 ; =0x021CCD6C + ldr r1, _020AF914 ; =0x021CCD74 + bl FUN_020AF334 +_020AF8E8: + cmp r0, #0x0 + movne r0, #0x0 + add sp, sp, #0x4 + moveq r0, #0x1 + ldmia sp!, {pc} +_020AF8FC: + mov r0, #0x2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AF908: .word 0x7FFF0000 +_020AF90C: .word 0x0000FFFF +_020AF910: .word 0x021CCD70 +_020AF914: .word 0x021CCD74 +_020AF918: .word 0x021CCD6C + + arm_func_start FUN_020AF91C +FUN_020AF91C: ; 0x020AF91C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + moveq r5, #0x10 + addne r0, r0, #0xf + bicne r5, r0, #0xf + ldr r0, _020AF9B0 ; =0x0007FFF0 + mov r4, r1 + cmp r5, r0 + addcs sp, sp, #0x4 + movcs r0, #0x0 + ldmcsia sp!, {r4-r5,pc} +_020AF94C: ; 0x020AF94C + cmp r4, #0x0 + beq _020AF96C + ldr r0, _020AF9B4 ; =0x021CCD70 + ldr r1, _020AF9B8 ; =0x021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 + b _020AF980 +_020AF96C: + ldr r0, _020AF9BC ; =0x021CCD6C + ldr r1, _020AF9B8 ; =0x021CCD74 + add r2, sp, #0x0 + mov r3, r5 + bl FUN_020AF5C4 +_020AF980: + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020AF990: ; 0x020AF990 + ldr r1, [sp, #0x0] + ldr r0, _020AF9C0 ; =0x0000FFFF + mov r2, r5, lsr #0x4 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + orr r0, r0, r4, lsl #0x1f + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AF9B0: .word 0x0007FFF0 +_020AF9B4: .word 0x021CCD70 +_020AF9B8: .word 0x021CCD74 +_020AF9BC: .word 0x021CCD6C +_020AF9C0: .word 0x0000FFFF + + arm_func_start FUN_020AF9C4 +FUN_020AF9C4: ; 0x020AF9C4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020AFA14 ; =0x021CCD6C + str r0, [r12, #0xc] + str r1, [r12, #0x10] + str r2, [r12, #0x14] + str r3, [r12, #0x18] + bl FUN_020AF6A4 + ldr r0, [sp, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r3, _020AFA18 ; =FUN_020AF91C + ldr r1, _020AFA1C ; =0x021064B8 + ldr r2, _020AFA20 ; =FUN_020AF894 + ldr r0, _020AFA24 ; =0x021064BC + str r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA14: .word 0x021CCD6C +_020AFA18: .word FUN_020AF91C +_020AFA1C: .word 0x021064B8 +_020AFA20: .word FUN_020AF894 +_020AFA24: .word 0x021064BC + + arm_func_start FUN_020AFA28 +FUN_020AFA28: ; 0x020AFA28 + mov r0, r0, lsl #0x4 + bx lr + + arm_func_start FUN_020AFA30 +FUN_020AFA30: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020AFA78 ; =0x021CCD88 + ldr r1, [r0, #0x10] + ldr r0, [r0, #0xc] + mov r1, r1, lsr #0x4 + bl FUN_020AF64C + ldr r1, _020AFA78 ; =0x021CCD88 + str r0, [r1, #0x4] + mov r0, r1 + bl FUN_020AF698 + ldr r0, _020AFA78 ; =0x021CCD88 + ldr r1, _020AFA7C ; =0x021CCD8C + ldr r3, [r0, #0x8] + mov r2, #0x0 + bl FUN_020AF5E0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFA78: .word 0x021CCD88 +_020AFA7C: .word 0x021CCD8C + + arm_func_start FUN_020AFA80 +FUN_020AFA80: ; 0x020AFA80 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r1, #0x10000 + rsb r2, r1, #0x0 + ldr r1, _020AFAC8 ; =0x0000FFFF + and r2, r0, r2 + and r12, r0, r1 + mov r3, r2, lsr #0x10 + ldr r0, _020AFACC ; =0x021CCD88 + ldr r1, _020AFAD0 ; =0x021CCD8C + mov r2, r12, lsl #0x3 + mov r3, r3, lsl #0x3 + bl FUN_020AF334 +_020AFAB4: ; 0x020AFAB4 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020AFAC8: .word 0x0000FFFF +_020AFACC: .word 0x021CCD88 +_020AFAD0: .word 0x021CCD8C + + arm_func_start FUN_020AFAD4 +FUN_020AFAD4: ; 0x020AFAD4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x8 + cmp r0, #0x0 + moveq r4, #0x8 + addne r0, r0, #0x7 + bicne r4, r0, #0x7 + ldr r0, _020AFB98 ; =0x0007FFF8 + cmp r4, r0 + addcs sp, sp, #0x8 + movcs r0, #0x0 + ldmcsia sp!, {r4,pc} +_020AFB00: ; 0x020AFB00 + cmp r1, #0x0 + beq _020AFB50 + mov r12, #0x8 + ldr r0, _020AFB9C ; =0x021CCD88 + ldr r1, _020AFBA0 ; =0x021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 + ldr r2, [sp, #0x4] + add r1, r2, r4 + cmp r1, #0x10000 + bls _020AFB6C + ldr r0, _020AFB9C ; =0x021CCD88 + ldr r1, _020AFBA0 ; =0x021CCD8C + mov r3, r4 + bl FUN_020AF334 + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020AFB50: + ldr r0, _020AFB9C ; =0x021CCD88 + mov r12, #0x10 + ldr r1, _020AFBA0 ; =0x021CCD8C + add r2, sp, #0x4 + mov r3, r4 + str r12, [sp, #0x0] + bl FUN_020AF488 +_020AFB6C: + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020AFB7C: ; 0x020AFB7C + ldr r1, [sp, #0x4] + ldr r0, _020AFBA4 ; =0x0000FFFF + mov r2, r4, lsr #0x3 + and r0, r0, r1, lsr #0x3 + orr r0, r0, r2, lsl #0x10 + add sp, sp, #0x8 + ldmia sp!, {r4,pc} + .balign 4 +_020AFB98: .word 0x0007FFF8 +_020AFB9C: .word 0x021CCD88 +_020AFBA0: .word 0x021CCD8C +_020AFBA4: .word 0x0000FFFF + + arm_func_start FUN_020AFBA8 +FUN_020AFBA8: ; 0x020AFBA8 + stmdb sp!, {r4,lr} + ldr ip, _020AFBE8 ; =0x021CCD88 + mov r4, r3 + str r0, [r12, #0x8] + str r1, [r12, #0xc] + str r2, [r12, #0x10] + bl FUN_020AFA30 +_020AFBC4: ; 0x020AFBC4 + cmp r4, #0x0 + ldmeqia sp!, {r4,pc} +_020AFBCC: ; 0x020AFBCC + ldr r3, _020AFBEC ; =FUN_020AFAD4 + ldr r1, _020AFBF0 ; =0x021064C0 + ldr r2, _020AFBF4 ; =FUN_020AFA80 + ldr r0, _020AFBF8 ; =0x021064C4 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020AFBE8: .word 0x021CCD88 +_020AFBEC: .word FUN_020AFAD4 +_020AFBF0: .word 0x021064C0 +_020AFBF4: .word FUN_020AFA80 +_020AFBF8: .word 0x021064C4 + + arm_func_start FUN_020AFBFC +FUN_020AFBFC: ; 0x020AFBFC + mov r0, r0, lsl #0x4 + bx lr + + arm_func_start FUN_020AFC04 +FUN_020AFC04: ; 0x020AFC04 + ldrh r2, [r0, #0x0] + cmp r2, r1 + ldrhi r0, [r0, #0x4] + addhi r0, r0, r1, lsl #0x4 + movls r0, #0x0 + bx lr + + arm_func_start FUN_020AFC1C +FUN_020AFC1C: ; 0x020AFC1C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x4] + mov r6, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + ldrh r1, [r0, #0x0] + ldr r4, [r0, #0x4] + ldr lr, [r0, #0x8] + cmp r1, #0x0 + ldr r12, [r0, #0xc] + bls _020AFCCC + mov r1, r6 +_020AFC68: + add r2, r4, r6, lsl #0x4 + ldr r5, [r2, #0xc] + mov r3, r6, lsl #0x4 + add r5, lr, r5 + str r5, [r2, #0xc] + ldrh r7, [r4, r3] + mov r5, r1 + cmp r7, #0x0 + bls _020AFCB4 +_020AFC8C: + ldr r9, [r2, #0xc] + add r7, r5, #0x1 + ldr r8, [r9, r5, lsl #0x3] + mov r7, r7, lsl #0x10 + add r8, r12, r8 + str r8, [r9, r5, lsl #0x3] + ldrh r8, [r4, r3] + mov r5, r7, lsr #0x10 + cmp r5, r8 + blo _020AFC8C +_020AFCB4: + add r2, r6, #0x1 + mov r2, r2, lsl #0x10 + ldrh r3, [r0, #0x0] + mov r6, r2, lsr #0x10 + cmp r6, r3 + blo _020AFC68 +_020AFCCC: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} +_020AFCDC: ; 0x020AFCDC + add r1, r1, r0 + str r1, [r0, #0x14] + ldr r1, [r0, #0x14] + mov r12, #0x0 + add r2, r1, #0x8 + ldr r0, [r2, #0x4] + add r0, r0, r2 + str r0, [r2, #0x4] + ldrh r0, [r1, #0x8] + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} +_020AFD0C: ; 0x020AFD0C + mov r0, r12 + mov r6, r12 +_020AFD14: + ldr r5, [r2, #0x4] + mov r3, r6 + add r1, r5, r0 + ldr r4, [r1, #0x4] + add r4, r4, r2 + str r4, [r1, #0x4] + ldr r4, [r1, #0x8] + add r4, r4, r2 + str r4, [r1, #0x8] + ldrh r4, [r5, r0] + cmp r4, #0x0 + bls _020AFD6C + mov r7, r6 +_020AFD48: + ldr r5, [r1, #0x8] + add r3, r3, #0x1 + ldr r4, [r5, r7] + add r4, r4, r2 + str r4, [r5, r7] + ldrh r4, [r1, #0x0] + add r7, r7, #0x4 + cmp r3, r4 + blo _020AFD48 +_020AFD6C: + ldrh r1, [r2, #0x0] + add r12, r12, #0x1 + add r0, r0, #0xc + cmp r12, r1 + blo _020AFD14 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start thunk_FUN_020afda0 +thunk_FUN_020afda0: ; 0x020AFD88 + ldr ip, _020AFD90 ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD90: .word FUN_020AFDA0 + + arm_func_start thunk_FUN_020afda0_2 +thunk_FUN_020afda0_2: ; 0x020AFD94 + ldr ip, _020AFD9C ; =FUN_020AFDA0 + bx r12 + .balign 4 +_020AFD9C: .word FUN_020AFDA0 + + arm_func_start FUN_020AFDA0 +FUN_020AFDA0: ; 0x020AFDA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFDE4 ; =0x41424E4B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020AFDC8: ; 0x020AFDC8 + add r0, r4, #0x8 + bl FUN_020AFC1C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFDE4: .word 0x41424E4B + + arm_func_start FUN_020AFDE8 +FUN_020AFDE8: ; 0x020AFDE8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r1, [r5, #0x4] + add r1, r1, r5 + str r1, [r5, #0x4] + bl FUN_020AFF10 + ldrh r1, [r5, #0x0] + mov r4, r0 + mov r6, #0x0 + cmp r1, #0x0 + bls _020AFE44 +_020AFE14: + mov r0, r5 + mov r1, r6 + bl FUN_020AFE8C + ldr r2, [r0, #0x4] + add r1, r6, #0x1 + add r2, r2, r4 + str r2, [r0, #0x4] + mov r0, r1, lsl #0x10 + ldrh r1, [r5, #0x0] + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020AFE14 +_020AFE44: + ldr r0, [r5, #0xc] + cmp r0, #0x0 + beq _020AFE6C + add r0, r0, r5 + str r0, [r5, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r1, #0x4] + add r0, r0, r1 + str r0, [r1, #0x4] + str r1, [r5, #0xc] +_020AFE6C: + ldr r0, [r5, #0x14] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020AFE78: ; 0x020AFE78 + add r0, r0, r5 + str r0, [r5, #0x14] + ldr r0, [r5, #0x14] + bl FUN_020AFF00 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020AFE8C +FUN_020AFE8C: ; 0x020AFE8C + ldrh r2, [r0, #0x0] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + ldrh r2, [r0, #0x2] + ands r2, r2, #0x1 + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + + arm_func_start FUN_020AFEB8 +FUN_020AFEB8: ; 0x020AFEB8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020AFEFC ; =0x4345424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020AFEE0: ; 0x020AFEE0 + add r0, r4, #0x8 + bl FUN_020AFDE8 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020AFEFC: .word 0x4345424B + + arm_func_start FUN_020AFF00 +FUN_020AFF00: ; 0x020AFF00 + ldr ip, _020AFF0C ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFF0C: .word FUN_020B01B0 + + arm_func_start FUN_020AFF10 +FUN_020AFF10: ; 0x020AFF10 + ldrh r1, [r0, #0x2] + ands r1, r1, #0x1 + ldrneh r1, [r0, #0x0] + ldrne r0, [r0, #0x4] + addne r0, r0, r1, lsl #0x4 + ldreqh r1, [r0, #0x0] + ldreq r0, [r0, #0x4] + addeq r0, r0, r1, lsl #0x3 + bx lr + + arm_func_start FUN_020AFF34 +FUN_020AFF34: ; 0x020AFF34 + ldrh r2, [r0, #0x0] + cmp r1, r2 + ldrcc r0, [r0, #0x4] + addcc r0, r0, r1, lsl #0x3 + movcs r0, #0x0 + bx lr + + arm_func_start FUN_020AFF4C +FUN_020AFF4C: ; 0x020AFF4C + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x4] + mov r4, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r0 + str r1, [r0, #0x8] + ldrh r1, [r0, #0x0] + ldr lr, [r0, #0x4] + cmp r1, #0x0 + bls _020AFFA8 +_020AFF7C: + add r3, lr, r4, lsl #0x3 + ldr r12, [r0, #0x8] + ldr r2, [r3, #0x4] + add r1, r4, #0x1 + add r2, r12, r2 + str r2, [r3, #0x4] + mov r1, r1, lsl #0x10 + ldrh r2, [r0, #0x0] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020AFF7C +_020AFFA8: + ldr r1, [r0, #0x10] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} +_020AFFB4: ; 0x020AFFB4 + add r1, r1, r0 + str r1, [r0, #0x10] + ldr r0, [r0, #0x10] + bl FUN_020AFFC8 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020AFFC8 +FUN_020AFFC8: ; 0x020AFFC8 + ldr ip, _020AFFD4 ; =FUN_020B01B0 + add r0, r0, #0x8 + bx r12 + .balign 4 +_020AFFD4: .word FUN_020B01B0 + + arm_func_start FUN_020AFFD8 +FUN_020AFFD8: ; 0x020AFFD8 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B001C ; =0x4D43424B + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020B0000: ; 0x020B0000 + add r0, r4, #0x8 + bl FUN_020AFF4C + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B001C: .word 0x4D43424B + + arm_func_start FUN_020B0020 +FUN_020B0020: ; 0x020B0020 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + + arm_func_start FUN_020B0030 +FUN_020B0030: ; 0x020B0030 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0074 ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020B0058: ; 0x020B0058 + add r0, r4, #0x8 + bl FUN_020B0020 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0074: .word 0x43484152 + + arm_func_start FUN_020B0078 +FUN_020B0078: ; 0x020B0078 + ldr r1, [r0, #0x14] + add r1, r1, r0 + str r1, [r0, #0x14] + bx lr + + arm_func_start FUN_020B0088 +FUN_020B0088: ; 0x020B0088 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B00CC ; =0x43484152 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020B00B0: ; 0x020B00B0 + add r0, r4, #0x8 + bl FUN_020B0078 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B00CC: .word 0x43484152 + + arm_func_start FUN_020B00D0 +FUN_020B00D0: ; 0x020B00D0 + ldr r1, [r0, #0xc] + add r1, r1, r0 + str r1, [r0, #0xc] + bx lr + + arm_func_start FUN_020B00E0 +FUN_020B00E0: ; 0x020B00E0 + ldr r1, [r0, #0x4] + add r1, r1, r0 + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020B00F0 +FUN_020B00F0: ; 0x020B00F0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B0134 ; =0x50434D50 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020B0118: ; 0x020B0118 + add r0, r4, #0x8 + bl FUN_020B00E0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0134: .word 0x50434D50 + + arm_func_start FUN_020B0138 +FUN_020B0138: ; 0x020B0138 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldr r1, _020B017C ; =0x504C5454 + bl FUN_020B01F8 + movs r4, r0 + moveq r0, #0x0 + addeq sp, sp, #0x4 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r5,pc} +_020B0160: ; 0x020B0160 + add r0, r4, #0x8 + bl FUN_020B00D0 + add r0, r4, #0x8 + str r0, [r5, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B017C: .word 0x504C5454 + + arm_func_start FUN_020B0180 +FUN_020B0180: ; 0x020B0180 + stmdb sp!, {r4,lr} + mov r4, r1 + ldr r1, _020B01AC ; =0x5343524E + bl FUN_020B01F8 +_020B0190: ; 0x020B0190 + cmp r0, #0x0 + addne r0, r0, #0x8 + strne r0, [r4, #0x0] + movne r0, #0x1 + moveq r0, #0x0 + streq r0, [r4, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020B01AC: .word 0x5343524E + + arm_func_start FUN_020B01B0 +FUN_020B01B0: ; 0x020B01B0 + ldr r1, [r0, #0x4] + mov r12, #0x0 + add r1, r1, r0 + str r1, [r0, #0x4] + ldrh r1, [r0, #0x0] + cmp r1, #0x0 + bxls lr +_020B01CC: + ldr r3, [r0, #0x4] + add r1, r12, #0x1 + ldr r2, [r3, r12, lsl #0x2] + mov r1, r1, lsl #0x10 + add r2, r0, r2 + str r2, [r3, r12, lsl #0x2] + ldrh r2, [r0, #0x0] + mov r12, r1, lsr #0x10 + cmp r12, r2 + blo _020B01CC + bx lr + + arm_func_start FUN_020B01F8 +FUN_020B01F8: + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r2, [r0, #0xc] + ldrh r12, [r0, #0xe] + mov lr, #0x0 + add r0, r0, r2 + cmp r12, #0x0 + bls _020B0244 +_020B0218: + ldr r2, [r0, #0x0] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r2, lr, #0x1 + mov r2, r2, lsl #0x10 + ldr r3, [r0, #0x4] + mov lr, r2, lsr #0x10 + cmp lr, r12 + add r0, r0, r3 + blo _020B0218 +_020B0244: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B0250 +FUN_020B0250: ; 0x020B0250 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020B02C0 ; =0x04000470 + mov r0, r0, lsl #0xc + str r0, [r5, #0x0] + mov r4, r1, lsl #0xc + ldr r12, [sp, #0x10] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x1c] + str r4, [r5, #0x0] + mov r4, r2, lsl #0xc + ldr r2, [sp, #0x18] + ldr lr, _020B02C4 ; =0x0400046C + str r4, [r5, #0x0] + mov r4, r3, lsl #0xc + ldr r3, [sp, #0x20] + str r4, [lr, #0x0] + mov r12, r12, lsl #0xc + str r12, [lr, #0x0] + mov r12, #0x1000 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + mov r2, r2, lsl #0xc + mov r3, r3, lsl #0xc + str r12, [lr, #0x0] + bl FUN_020B0340 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B02C0: .word 0x04000470 +_020B02C4: .word 0x0400046C + + arm_func_start FUN_020B02C8 +FUN_020B02C8: ; 0x020B02C8 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r2, _020B0330 ; =0xBFFF0000 + ldr r0, _020B0334 ; =0x04000580 + mov r1, #0x400000 + str r2, [r0, #0x0] + rsb r0, r1, #0x0 + str r0, [sp, #0x0] + str r1, [sp, #0x4] + mov r0, #0x0 + str r1, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + mov r2, r0 + mov r1, #0xc0000 + mov r3, #0x100000 + str r0, [sp, #0x10] + bl G3i_OrthoW_ + ldr r1, _020B0338 ; =0x0400044C + mov r2, #0x0 + ldr r0, _020B033C ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B0330: .word 0xBFFF0000 +_020B0334: .word 0x04000580 +_020B0338: .word 0x0400044C +_020B033C: .word 0x04000440 + + arm_func_start FUN_020B0340 +FUN_020B0340: ; 0x020B0340 + stmdb sp!, {r4-r6,lr} + mov r3, r3, lsl #0x8 + mov r0, r0, lsl #0x8 + mov r4, r3, asr #0x10 + mov r3, r0, asr #0x10 + mov r0, r4, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r1, r1, lsl #0x8 + mov r1, r1, asr #0x10 + mov r1, r1, lsl #0x10 + mov r2, r2, lsl #0x8 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + ldr ip, _020B03F4 ; =0x04000500 + mov lr, #0x1 + mov r6, r0, lsr #0x10 + mov r5, r3, lsr #0x10 + mov r3, r1, lsr #0x10 + mov r1, r2, lsr #0x10 + ldr r4, _020B03F8 ; =0x04000488 + str lr, [r12, #0x0] + orr r0, r5, r6, lsl #0x10 + ldr lr, _020B03FC ; =0x0400048C + str r0, [r4, #0x0] + mov r0, #0x10000000 + str r0, [lr, #0x0] + mov r12, #0x0 + str r12, [lr, #0x0] + orr r2, r3, r6, lsl #0x10 + ldr r0, _020B0400 ; =0x10001000 + str r2, [r4, #0x0] + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r3, r1, lsl #0x10 + str r0, [r4, #0x0] + mov r0, #0x1000 + str r0, [lr, #0x0] + str r12, [lr, #0x0] + orr r0, r5, r1, lsl #0x10 + str r0, [r4, #0x0] + str r12, [lr, #0x0] + ldr r0, _020B0404 ; =0x04000504 + str r12, [lr, #0x0] + str r12, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B03F4: .word 0x04000500 +_020B03F8: .word 0x04000488 +_020B03FC: .word 0x0400048C +_020B0400: .word 0x10001000 +_020B0404: .word 0x04000504 + + arm_func_start FUN_020B0408 +FUN_020B0408: + ldr r1, [r0, #0x14] + cmp r1, #0x0 + ldreq r0, [r0, #0x18] + ldreq r1, [r0, #0x8] + cmp r1, #0x2 + beq _020B0428 + cmp r1, #0x4 + bne _020B0430 +_020B0428: + mov r0, #0x1 + bx lr +_020B0430: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B0438 +FUN_020B0438: ; 0x020B0438 + ldr ip, _020B0444 ; =FUN_020B0448 + str r1, [r0, #0x18] + bx r12 + .balign 4 +_020B0444: .word FUN_020B0448 + + arm_func_start FUN_020B0448 +FUN_020B0448: ; 0x020B0448 + ldr r1, [r0, #0x10] + cmp r1, #0x0 + movgt r2, #0x1 + ldr r1, [r0, #0x4] + movle r2, #0x0 + eors r1, r2, r1 + beq _020B047C + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + str r1, [r0, #0x0] + b _020B0494 +_020B047C: + ldr r2, [r0, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + str r1, [r0, #0x0] +_020B0494: + ldr ip, _020B04A4 ; =FUN_020B0534 + mov r1, #0x0 + str r1, [r0, #0xc] + bx r12 + .balign 4 +_020B04A4: .word FUN_020B0534 + + arm_func_start FUN_020B04A8 +FUN_020B04A8: ; 0x020B04A8 + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] + str r1, [r0, #0x8] + strh r1, [r0, #0xc] + bx lr + + arm_func_start FUN_020B04C0 +FUN_020B04C0: + stmdb sp!, {r4,lr} + mov r4, r0 + add r0, r4, #0x1c + bl FUN_020B04A8 + mov r1, #0x0 + str r1, [r4, #0x0] + str r1, [r4, #0x4] + mov r0, #0x1 + str r0, [r4, #0x8] + str r1, [r4, #0xc] + mov r0, #0x1000 + str r0, [r4, #0x10] + str r1, [r4, #0x14] + str r1, [r4, #0x18] + ldmia sp!, {r4,pc} +_020B04FC: ; 0x020B04FC + ldr r1, [r0, #0x18] + ldr r2, [r0, #0x0] + ldr r0, [r1, #0xc] + sub r0, r2, r0 + mov r0, r0, lsl #0xd + mov r0, r0, lsr #0x10 + bx lr + + arm_func_start FUN_020B0518 +FUN_020B0518: + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B06EC +_020B0524: ; 0x020B0524 + cmp r0, #0x0 + movne r1, #0x0 + strne r1, [r4, #0xc] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0534 +FUN_020B0534: + stmdb sp!, {r4-r8,lr} + mov r8, r0 + ldr r0, [r8, #0x8] + mov r7, #0x0 + cmp r0, #0x1 + movne r0, r7 + ldmneia sp!, {r4-r8,pc} +_020B0550: ; 0x020B0550 + ldr r2, [r8, #0x10] + mov r0, #0x800 + smull r3, r1, r2, r1 + adds r0, r3, r0 + adc r1, r1, r7 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + bl abs + ldr r1, [r8, #0xc] + add r6, r8, #0xc + add r0, r1, r0 + str r0, [r8, #0xc] + mov r4, r7 + mov r5, #0x1 + b _020B06A8 +_020B058C: + ldr r0, [r8, #0x0] + ldr r1, [r6, #0x0] + ldrh r0, [r0, #0x4] + mov r7, r5 + sub r0, r1, r0, lsl #0xc + str r0, [r6, #0x0] + ldr r0, [r8, #0x10] + cmp r0, #0x0 + movgt r1, r5 + ldr r0, [r8, #0x4] + movle r1, r4 + eors r0, r1, r0 + ldrne r0, [r8, #0x0] + addne r0, r0, #0x8 + strne r0, [r8, #0x0] + ldreq r0, [r8, #0x0] + subeq r0, r0, #0x8 + streq r0, [r8, #0x0] + ldr r1, [r8, #0x10] + ldr r0, [r8, #0x0] + cmp r1, #0x0 + movgt r2, r5 + ldr r1, [r8, #0x4] + movle r2, r4 + eors r1, r2, r1 + beq _020B0614 + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x0] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + cmp r0, r1 + movcs r0, r5 + movcc r0, r4 + b _020B0634 +_020B0614: + ldr r2, [r8, #0x18] + ldrh r1, [r2, #0x2] + ldr r2, [r2, #0xc] + add r1, r2, r1, lsl #0x3 + sub r1, r1, #0x8 + cmp r0, r1 + movls r0, r5 + movhi r0, r4 +_020B0634: + cmp r0, #0x0 + beq _020B0644 + mov r0, r8 + bl FUN_020B0710 +_020B0644: + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B06A8 + ldr r0, [r8, #0x18] + ldr r2, [r8, #0x1c] + ldr r1, [r8, #0x0] + ldr r0, [r0, #0xc] + cmp r2, #0x2 + sub r0, r1, r0 + mov r0, r0, lsl #0xd + mov r1, r0, lsr #0x10 + beq _020B0680 + cmp r2, #0x3 + beq _020B069C + b _020B06A8 +_020B0680: + ldrh r0, [r8, #0x28] + cmp r1, r0 + bne _020B06A8 + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 + b _020B06A8 +_020B069C: + ldr r0, [r8, #0x20] + ldr r2, [r8, #0x24] + blx r2 +_020B06A8: + ldr r0, [r8, #0x8] + cmp r0, #0x0 + beq _020B06CC + ldr r0, [r8, #0x0] + ldr r1, [r8, #0xc] + ldrh r0, [r0, #0x4] + cmp r1, r0, lsl #0xc + movge r0, r5 + bge _020B06D0 +_020B06CC: + mov r0, r4 +_020B06D0: + cmp r0, #0x0 + bne _020B058C + mov r0, r7 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B06E0 +FUN_020B06E0: ; 0x020B06E0 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x0] + bx lr + + arm_func_start FUN_020B06EC +FUN_020B06EC: + ldr r3, [r0, #0x18] + ldrh r2, [r3, #0x0] + cmp r1, r2 + ldrcc r2, [r3, #0xc] + addcc r1, r2, r1, lsl #0x3 + strcc r1, [r0, #0x0] + movcc r0, #0x1 + movcs r0, #0x0 + bx lr + + arm_func_start FUN_020B0710 +FUN_020B0710: ; 0x020B0710 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x3 + beq _020B0738 + cmp r0, #0x4 + bne _020B07B4 +_020B0738: + ldr r0, [r4, #0x4] + eor r0, r0, #0x1 + str r0, [r4, #0x4] + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x2] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + bhi _020B0800 + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B0780 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B0780: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07A8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07A8: + mov r0, r4 + bl FUN_020B0448 + b _020B0800 +_020B07B4: + ldr r0, [r4, #0x1c] + cmp r0, #0x1 + bne _020B07D0 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x24] + blx r2 +_020B07D0: + ldr r0, [r4, #0x14] + cmp r0, #0x0 + ldreq r0, [r4, #0x18] + ldreq r0, [r0, #0x8] + cmp r0, #0x2 + beq _020B07F8 + cmp r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x8] + bne _020B0800 +_020B07F8: + mov r0, r4 + bl FUN_020B0448 +_020B0800: + ldr r1, [r4, #0x18] + ldr r2, [r4, #0x0] + ldrh r0, [r1, #0x0] + ldr r1, [r1, #0xc] + add r0, r1, r0, lsl #0x3 + sub r0, r0, #0x8 + cmp r2, r0 + strhi r0, [r4, #0x0] + ldmhiia sp!, {r4,pc} +_020B0824: ; 0x020B0824 + cmp r2, r1 + strcc r1, [r4, #0x0] + ldmia sp!, {r4,pc} +_020B0830: ; 0x020B0830 + ldrh r3, [r0, #0x6] + ldrh r2, [r0, #0x8] + mov r12, #0x0 + add r1, r3, #0x1 + cmp r2, r1 + bgt _020B0854 + ldrh r0, [r0, #0x4] + cmp r0, r3 + movls r12, #0x1 +_020B0854: + cmp r12, #0x0 + subne r0, r3, r2 + addne r0, r0, #0x1 + movne r0, r0, lsl #0x10 + movne r0, r0, lsr #0x10 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B0870 +FUN_020B0870: ; 0x020B0870 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B09B4 + mov r0, r4 + bl FUN_020B0888 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B0888 +FUN_020B0888: ; 0x020B0888 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x14] + cmp r0, #0x0 + beq _020B0944 + ldrh r2, [r5, #0x6] + ldrh r1, [r5, #0x8] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B08C0 + ldrh r0, [r5, #0x4] + cmp r0, r2 + movls r3, #0x1 +_020B08C0: + cmp r3, #0x0 + moveq r4, #0x0 + beq _020B08E0 + ldrh r0, [r5, #0x4] + sub r0, r2, r0 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0xd +_020B08E0: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =0x021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r0, [r5, #0x4] + add r2, r1, #0x100 + mov r1, r4 + add r6, r2, r0, lsl #0x3 + mov r0, r6 + bl DC_InvalidateRange + ldr r0, _020B09B0 ; =0x02106814 + mvn r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, r1 + beq _020B0930 + mov r1, r6 + mov r3, r4 + mov r2, #0xc0 + bl MI_DmaFill32 + b _020B0998 +_020B0930: + mov r1, r6 + mov r2, r4 + mov r0, #0xc0 + bl MIi_CpuClear32 + b _020B0998 +_020B0944: + ldr r2, [r5, #0x0] + ldr r1, _020B09AC ; =0x021CCDA0 + mov r0, #0x540 + mla r1, r2, r0, r1 + ldrh r2, [r5, #0x4] + ldrh r0, [r5, #0x6] + add r1, r1, #0x100 + add r3, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + movs r2, r0, lsr #0x10 + mov r0, #0x0 + beq _020B0998 + mov r1, #0xc0 +_020B0980: + add r0, r0, #0x1 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, r2 + strh r1, [r3], #0x8 + blo _020B0980 +_020B0998: + ldrh r0, [r5, #0x4] + strh r0, [r5, #0x8] + ldrh r0, [r5, #0xa] + strh r0, [r5, #0xe] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B09AC: .word 0x021CCDA0 +_020B09B0: .word 0x02106814 + + arm_func_start FUN_020B09B4 +FUN_020B09B4: ; 0x020B09B4 + stmdb sp!, {r4-r10,lr} + mov r7, r0 + ldr r0, [r7, #0x14] + cmp r0, #0x0 + beq _020B0A48 + ldr r5, [r7, #0x0] + ldr r1, _020B0BA8 ; =0x021CCDA0 + mov r0, #0x540 + mla r1, r5, r0, r1 + ldrh r2, [r7, #0x4] + ldrh r0, [r7, #0x6] + add r1, r1, #0x100 + add r4, r1, r2, lsl #0x3 + sub r0, r0, r2 + add r0, r0, #0x1 + mov r0, r0, lsl #0x13 + mov r6, r0, lsr #0x10 + mov r2, r2, lsl #0x13 + mov r0, r4 + mov r1, r6 + mov r7, r2, lsr #0x10 + bl DC_FlushRange +_020B0A0C: ; 0x020B0A0C + cmp r5, #0x0 + beq _020B0A20 + cmp r5, #0x1 + beq _020B0A34 + ldmia sp!, {r4-r10,pc} +_020B0A20: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GX_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A34: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl GXS_LoadOAM + ldmia sp!, {r4-r10,pc} +_020B0A48: + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =0x021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0x4] + ldrh r1, [r7, #0x6] + ldr r3, _020B0BAC ; =0x0210655C + add r4, r2, #0x100 + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + mov r2, r5, lsl #0x13 + add r6, r4, r5, lsl #0x3 + movs r5, r1, lsr #0x10 + mov r4, r2, lsr #0x10 + ldr r9, [r3, r0, lsl #0x2] + mov r10, #0x0 + beq _020B0AC8 + mov r8, #0x6 +_020B0A94: + mov r0, r6 + mov r1, r4 + mov r2, r8 + blx r9 + add r0, r10, #0x1 + add r2, r4, #0x8 + mov r1, r0, lsl #0x10 + mov r0, r2, lsl #0x10 + mov r10, r1, lsr #0x10 + cmp r10, r5 + mov r4, r0, lsr #0x10 + add r6, r6, #0x8 + blo _020B0A94 +_020B0AC8: + ldrh r2, [r7, #0xc] + ldrh r1, [r7, #0xe] + mov r3, #0x0 + add r0, r2, #0x1 + cmp r1, r0 + bgt _020B0AEC + ldrh r0, [r7, #0xa] + cmp r0, r2 + movls r3, #0x1 +_020B0AEC: + cmp r3, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020B0AF4: ; 0x020B0AF4 + ldr r0, [r7, #0x0] + ldr r2, _020B0BA8 ; =0x021CCDA0 + mov r1, #0x540 + mla r2, r0, r1, r2 + ldrh r5, [r7, #0xa] + add r4, r2, #0x100 + ldrh r1, [r7, #0xc] + mov r2, r5, lsl #0x15 + ldr r3, _020B0BAC ; =0x0210655C + sub r1, r1, r5 + add r1, r1, #0x1 + mov r1, r1, lsl #0x10 + add r9, r4, r5, lsl #0x5 + ldr r5, [r3, r0, lsl #0x2] + movs r8, r1, lsr #0x10 + mov r7, r2, lsr #0x10 + mov r6, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020B0B3C: ; 0x020B0B3C + mov r4, #0x2 +_020B0B40: + mov r2, r4 + add r0, r9, #0x6 + add r1, r7, #0x6 + blx r5 + mov r2, r4 + add r0, r9, #0xe + add r1, r7, #0xe + blx r5 + mov r2, r4 + add r0, r9, #0x16 + add r1, r7, #0x16 + blx r5 + add r0, r9, #0x1e + add r1, r7, #0x1e + mov r2, r4 + blx r5 + add r0, r7, #0x20 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 + add r9, r9, #0x20 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B0B40 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B0BA8: .word 0x021CCDA0 +_020B0BAC: .word 0x0210655C + + arm_func_start FUN_020B0BB0 +FUN_020B0BB0: ; 0x020B0BB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r12, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov lr, #0x0 + add r2, r12, #0x1 + cmp r3, r2 + bgt _020B0BDC + ldrh r2, [r0, #0xa] + cmp r2, r12 + movls lr, #0x1 +_020B0BDC: + cmp lr, #0x0 + subne r2, r12, r3 + addne r2, r2, #0x1 + movne r2, r2, lsl #0x10 + movne r2, r2, lsr #0x10 + moveq r2, #0x0 + cmp r2, #0x1 + movcs r2, #0x1 + movcc r2, #0x0 + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldreq r0, _020B0C74 ; =0x0000FFFE + ldmeqia sp!, {pc} + ldr lr, [r0, #0x0] + ldr r3, _020B0C78 ; =0x021CCDA0 + mov r2, #0x540 + mla r12, lr, r2, r3 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0xe] + add r12, r12, #0x100 + mov r3, r3, asr #0x4 + add r12, r12, r2, lsl #0x5 + strh r3, [r12, #0x6] + ldr r3, [r1, #0x4] + mov r3, r3, asr #0x4 + strh r3, [r12, #0xe] + ldr r3, [r1, #0x8] + mov r3, r3, asr #0x4 + strh r3, [r12, #0x16] + ldr r1, [r1, #0xc] + mov r1, r1, asr #0x4 + strh r1, [r12, #0x1e] + ldrh r1, [r0, #0xe] + add r1, r1, #0x1 + strh r1, [r0, #0xe] + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B0C74: .word 0x0000FFFE +_020B0C78: .word 0x021CCDA0 + + arm_func_start FUN_020B0C7C +FUN_020B0C7C: ; 0x020B0C7C + stmdb sp!, {r4,lr} + ldrh r12, [r0, #0x6] + ldrh r4, [r0, #0x8] + mov lr, #0x0 + add r3, r12, #0x1 + cmp r4, r3 + bgt _020B0CA4 + ldrh r3, [r0, #0x4] + cmp r3, r12 + movls lr, #0x1 +_020B0CA4: + cmp lr, #0x0 + subne r3, r12, r4 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, #0x1 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0D48 + ldr r4, [r0, #0x0] + ldr ip, _020B0D50 ; =0x021CCDA0 + mov r3, #0x540 + mla r12, r4, r3, r12 + ldrh r3, [r0, #0x8] + add r4, r12, #0x100 + ldrh r12, [r1, #0x0] + mov lr, r3, lsl #0x3 + add r3, r4, r3, lsl #0x3 + strh r12, [r4, lr] + ldrh lr, [r1, #0x2] + ldr ip, _020B0D54 ; =0x0000FFFE + strh lr, [r3, #0x2] + ldrh r1, [r1, #0x4] + cmp r2, r12 + strh r1, [r3, #0x4] + beq _020B0D34 + ldr r1, [r3, #0x0] + mov r12, r1, lsl #0x16 + mov r12, r12, lsr #0x1e + ands r12, r12, #0x1 + bicne r12, r1, #0x3e000000 + andne r1, r2, #0x1f + orrne r1, r12, r1, lsl #0x19 + strne r1, [r3, #0x0] +_020B0D34: + ldrh r1, [r0, #0x8] + add r1, r1, #0x1 + strh r1, [r0, #0x8] + mov r0, #0x1 + ldmia sp!, {r4,pc} +_020B0D48: + mov r0, #0x0 + ldmia sp!, {r4,pc} + .balign 4 +_020B0D50: .word 0x021CCDA0 +_020B0D54: .word 0x0000FFFE + + arm_func_start FUN_020B0D58 +FUN_020B0D58: ; 0x020B0D58 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh lr, [r0, #0x6] + ldrh r12, [r0, #0x8] + mov r4, #0x0 + add r3, lr, #0x1 + cmp r12, r3 + bgt _020B0D84 + ldrh r3, [r0, #0x4] + cmp r3, lr + movls r4, #0x1 +_020B0D84: + cmp r4, #0x0 + subne r3, lr, r12 + addne r3, r3, #0x1 + movne r3, r3, lsl #0x10 + movne r3, r3, lsr #0x10 + moveq r3, #0x0 + cmp r3, r2 + movcs r3, #0x1 + movcc r3, #0x0 + cmp r3, #0x0 + beq _020B0E24 + ldr lr, [r0, #0x0] + ldr ip, _020B0E30 ; =0x021CCDA0 + mov r3, #0x540 + mla r12, lr, r3, r12 + ldrh r3, [r0, #0x8] + add r12, r12, #0x100 + cmp r2, #0x0 + add r4, r12, r3, lsl #0x3 + mov r5, #0x0 + ble _020B0E18 + add r3, r0, #0x8 +_020B0DDC: + ldrh lr, [r1, #0x0] + mov r0, r5, lsl #0x3 + add r12, r4, r5, lsl #0x3 + strh lr, [r4, r0] + ldrh r0, [r1, #0x2] + add r5, r5, #0x1 + cmp r5, r2 + strh r0, [r12, #0x2] + ldrh r0, [r1, #0x4] + add r1, r1, #0x8 + strh r0, [r12, #0x4] + ldrh r0, [r3, #0x0] + add r0, r0, #0x1 + strh r0, [r3, #0x0] + blt _020B0DDC +_020B0E18: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r5,pc} +_020B0E24: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B0E30: .word 0x021CCDA0 + + arm_func_start FUN_020B0E34 +FUN_020B0E34: ; 0x020B0E34 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, [sp, #0x1c] + ldr r6, _020B0FB4 ; =0x021CCDA0 + mov r4, #0x540 + mla r4, r5, r4, r6 + mov lr, r1 + sub r1, r2, #0x1 + add r1, lr, r1 + mov r1, r1, lsl #0x10 + mov r12, r1, lsr #0x10 + add r7, r4, lr, lsl #0x1 + add r2, r4, r12, lsl #0x1 + mov r6, r0 + mov r5, r3 + cmp r7, r2 + mov r3, lr, lsl #0x1 + bhi _020B0E9C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0E80: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0EA0 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0E80 +_020B0E9C: + mov r0, #0x1 +_020B0EA0: + cmp r0, #0x0 + beq _020B0EE0 + ldr r0, _020B0FBC ; =0x021CCD9C + sub r2, r12, lr + ldrh r7, [r0, #0x0] + add r1, r4, r3 + mov r2, r2, lsl #0x1 + add r3, r7, #0x1 + strh r3, [r0, #0x0] + strh r7, [r6, #0x10] + strh lr, [r6, #0x4] + strh r12, [r6, #0x6] + strh lr, [r6, #0x8] + ldrh r0, [r6, #0x10] + bl MIi_CpuClear16 + b _020B0EEC +_020B0EE0: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0EEC: + ldrh r0, [sp, #0x18] + add r4, r4, #0x500 + cmp r0, #0x0 + bne _020B0F18 + mov r0, #0x20 + strh r0, [r6, #0xa] + mov r0, #0x0 + strh r0, [r6, #0xc] + ldrh r0, [r6, #0xa] + strh r0, [r6, #0xe] + b _020B0F98 +_020B0F18: + sub r0, r0, #0x1 + add r0, r5, r0 + mov r0, r0, lsl #0x10 + mov r12, r0, lsr #0x10 + add r7, r4, r5, lsl #0x1 + add r2, r4, r12, lsl #0x1 + cmp r7, r2 + mov r3, r5, lsl #0x1 + bhi _020B0F5C + ldr r0, _020B0FB8 ; =0x0000FFFF +_020B0F40: + ldrh r1, [r7, #0x0] + cmp r1, r0 + movne r0, #0x0 + bne _020B0F60 + add r7, r7, #0x2 + cmp r7, r2 + bls _020B0F40 +_020B0F5C: + mov r0, #0x1 +_020B0F60: + cmp r0, #0x0 + beq _020B0F8C + strh r5, [r6, #0xa] + strh r12, [r6, #0xc] + strh r5, [r6, #0xe] + ldrh r0, [r6, #0x10] + sub r2, r12, r5 + add r1, r4, r3 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + b _020B0F98 +_020B0F8C: + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r7,pc} +_020B0F98: + mov r1, #0x0 + ldr r0, [sp, #0x1c] + str r1, [r6, #0x14] + str r0, [r6, #0x0] + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B0FB4: .word 0x021CCDA0 +_020B0FB8: .word 0x0000FFFF +_020B0FBC: .word 0x021CCD9C + + arm_func_start FUN_020B0FC0 +FUN_020B0FC0: ; 0x020B0FC0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B1060 ; =0x021CCEA0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1064 ; =0x021CD3E0 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r1, _020B1068 ; =0x021CD920 + mov r0, #0xc0 + mov r2, #0x400 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1070 ; =0x021CCDA0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1074 ; =0x021CD2E0 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1078 ; =0x021CD820 + mov r2, #0x100 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B107C ; =0x021CD2A0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1080 ; =0x021CD7E0 + mov r2, #0x40 + bl MIi_CpuClear16 + ldr r0, _020B106C ; =0x0000FFFF + ldr r1, _020B1084 ; =0x021CDD20 + mov r2, #0x40 + bl MIi_CpuClear16 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B1060: .word 0x021CCEA0 +_020B1064: .word 0x021CD3E0 +_020B1068: .word 0x021CD920 +_020B106C: .word 0x0000FFFF +_020B1070: .word 0x021CCDA0 +_020B1074: .word 0x021CD2E0 +_020B1078: .word 0x021CD820 +_020B107C: .word 0x021CD2A0 +_020B1080: .word 0x021CD7E0 +_020B1084: .word 0x021CDD20 + + arm_func_start FUN_020B1088 +FUN_020B1088: ; 0x020B1088 + ldr ip, _020B1094 ; =MIi_CpuCopy16 + add r1, r1, #0x7000000 + bx r12 + .balign 4 +_020B1094: .word MIi_CpuCopy16 + + arm_func_start FUN_020B1098 +FUN_020B1098: ; 0x020B1098 + ldr r3, _020B10A8 ; =0x07000400 + ldr ip, _020B10AC ; =MIi_CpuCopy16 + add r1, r1, r3 + bx r12 + .balign 4 +_020B10A8: .word 0x07000400 +_020B10AC: .word MIi_CpuCopy16 + + arm_func_start FUN_020B10B0 +FUN_020B10B0: ; 0x020B10B0 + mov r1, r1, lsl #0x1 + ldrh r0, [r0, r1] + bx lr + + arm_func_start FUN_020B10BC +FUN_020B10BC: ; 0x020B10BC + ldr r0, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B10C4 +FUN_020B10C4: + str r2, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B10CC +FUN_020B10CC: + mov r2, #0x0 + mvn r1, #0x0 +_020B10D4: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B10D4 + bx lr + + arm_func_start FUN_020B10E8 +FUN_020B10E8: ; 0x020B10E8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + cmp r0, #0x3 + ldr r0, [sp, #0x28] + moveq r7, #0x20 + str r0, [sp, #0x28] + ldrh r0, [r9, #0x0] + movne r7, #0x200 + mov r11, r2 + mov r8, r3 + str r0, [sp, #0x0] + mov r6, #0x0 + cmp r0, #0x0 + bls _020B1210 +_020B112C: + ldr r1, [r9, #0x4] + mov r0, r6, lsl #0x1 + ldrh r2, [r1, r0] + ldr r0, [r10, #0xc] + ldr r1, [r10, #0x8] + mla r5, r7, r2, r11 + mla r4, r7, r6, r0 + bl DC_FlushRange +_020B114C: ; 0x020B114C + cmp r8, #0x0 + beq _020B11E0 + cmp r8, #0x1 + beq _020B1168 + cmp r8, #0x2 + beq _020B11A4 + b _020B11F8 +_020B1168: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B1190 + bl GX_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B11F8 +_020B1190: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadOBJPltt + b _020B11F8 +_020B11A4: + ldr r0, [r10, #0x4] + cmp r0, #0x0 + beq _020B11CC + bl GXS_BeginLoadOBJExtPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B11F8 +_020B11CC: + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GXS_LoadOBJPltt + b _020B11F8 +_020B11E0: + bl GX_BeginLoadTexPltt + mov r0, r4 + mov r1, r5 + mov r2, r7 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B11F8: + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + ldr r0, [sp, #0x0] + cmp r6, r0 + blo _020B112C +_020B1210: + ldr r0, [sp, #0x28] + ldr r2, [r10, #0x0] + mov r1, r0 + str r2, [r1, #0x0] + ldr r4, [r10, #0x4] + mov r3, r0 + mov r1, r8 + mov r2, r11 + str r4, [r3, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B1240 +FUN_020B1240: ; 0x020B1240 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + ldr r5, [r9, #0xc] + ldr r4, [r9, #0x8] + mov r8, r1 + mov r7, r2 + mov r0, r5 + mov r1, r4 + mov r6, r3 + bl DC_FlushRange +_020B126C: ; 0x020B126C + cmp r7, #0x0 + beq _020B1300 + cmp r7, #0x1 + beq _020B1288 + cmp r7, #0x2 + beq _020B12C4 + b _020B1318 +_020B1288: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12B0 + bl GX_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJExtPltt + bl GX_EndLoadOBJExtPltt + b _020B1318 +_020B12B0: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadOBJPltt + b _020B1318 +_020B12C4: + ldr r0, [r9, #0x4] + cmp r0, #0x0 + beq _020B12EC + bl GXS_BeginLoadOBJExtPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJExtPltt + bl GXS_EndLoadOBJExtPltt + b _020B1318 +_020B12EC: + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GXS_LoadOBJPltt + b _020B1318 +_020B1300: + bl GX_BeginLoadTexPltt + mov r0, r5 + mov r1, r8 + mov r2, r4 + bl GX_LoadTexPltt + bl GX_EndLoadTexPltt +_020B1318: + ldr r1, [r9, #0x0] + mov r0, r6 + str r1, [r6, #0x0] + ldr r3, [r9, #0x4] + mov r1, r7 + mov r2, r8 + str r3, [r6, #0x4] + bl FUN_020B19D0 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B1340 +FUN_020B1340: ; 0x020B1340 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + mov r5, r2 + mov r4, r3 + bl DC_FlushRange +_020B1364: ; 0x020B1364 + cmp r5, #0x0 + ldr r0, [r7, #0x8] + beq _020B13B8 + cmp r5, #0x1 + beq _020B1384 + cmp r5, #0x2 + beq _020B13A0 + b _020B13B8 +_020B1384: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1520 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B13B8 +_020B13A0: + ldr r3, _020B1524 ; =0x04001000 + ldr r1, _020B1520 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B13B8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B14D8 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1408 + cmp r0, #0x10 + bge _020B1434 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1444 +_020B13E4: + b _020B1444 +_020B13E8: + b _020B1414 +_020B13EC: + b _020B141C +_020B13F0: + b _020B1444 +_020B13F4: + b _020B1424 +_020B13F8: + b _020B1444 +_020B13FC: + b _020B1444 +_020B1400: + b _020B1444 +_020B1404: + b _020B142C +_020B1408: + cmp r0, #0x20 + beq _020B143C + b _020B1444 +_020B1414: + mov r0, #0x0 + b _020B1448 +_020B141C: + mov r0, #0x1 + b _020B1448 +_020B1424: + mov r0, #0x2 + b _020B1448 +_020B142C: + mov r0, #0x3 + b _020B1448 +_020B1434: + mov r0, #0x4 + b _020B1448 +_020B143C: + mov r0, #0x5 + b _020B1448 +_020B1444: + mov r0, #0x0 +_020B1448: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1490 + cmp r0, #0x10 + bge _020B14BC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B14CC +_020B146C: + b _020B14CC +_020B1470: + b _020B149C +_020B1474: + b _020B14A4 +_020B1478: + b _020B14CC +_020B147C: + b _020B14AC +_020B1480: + b _020B14CC +_020B1484: + b _020B14CC +_020B1488: + b _020B14CC +_020B148C: + b _020B14B4 +_020B1490: + cmp r0, #0x20 + beq _020B14C4 + b _020B14CC +_020B149C: + mov r0, #0x0 + b _020B14D0 +_020B14A4: + mov r0, #0x1 + b _020B14D0 +_020B14AC: + mov r0, #0x2 + b _020B14D0 +_020B14B4: + mov r0, #0x3 + b _020B14D0 +_020B14BC: + mov r0, #0x4 + b _020B14D0 +_020B14C4: + mov r0, #0x5 + b _020B14D0 +_020B14CC: + mov r0, #0x0 +_020B14D0: + str r0, [r4, #0x10] + b _020B14E8 +_020B14D8: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B14E8: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1520: .word 0xFFCFFFEF +_020B1524: .word 0x04001000 + + arm_func_start FUN_020B1528 +FUN_020B1528: ; 0x020B1528 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B1590 + cmp r5, #0x1 + beq _020B155C + cmp r5, #0x2 + beq _020B1578 + b _020B1590 +_020B155C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B1760 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B1590 +_020B1578: + ldr r3, _020B1764 ; =0x04001000 + ldr r1, _020B1760 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B1590: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange +_020B159C: ; 0x020B159C + cmp r5, #0x0 + beq _020B15B8 + cmp r5, #0x1 + beq _020B15D4 + cmp r5, #0x2 + beq _020B15E8 + b _020B15F8 +_020B15B8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B15F8 +_020B15D4: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B15F8 +_020B15E8: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B15F8: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1718 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1648 + cmp r0, #0x10 + bge _020B1674 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B1684 +_020B1624: + b _020B1684 +_020B1628: + b _020B1654 +_020B162C: + b _020B165C +_020B1630: + b _020B1684 +_020B1634: + b _020B1664 +_020B1638: + b _020B1684 +_020B163C: + b _020B1684 +_020B1640: + b _020B1684 +_020B1644: + b _020B166C +_020B1648: + cmp r0, #0x20 + beq _020B167C + b _020B1684 +_020B1654: + mov r0, #0x0 + b _020B1688 +_020B165C: + mov r0, #0x1 + b _020B1688 +_020B1664: + mov r0, #0x2 + b _020B1688 +_020B166C: + mov r0, #0x3 + b _020B1688 +_020B1674: + mov r0, #0x4 + b _020B1688 +_020B167C: + mov r0, #0x5 + b _020B1688 +_020B1684: + mov r0, #0x0 +_020B1688: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B16D0 + cmp r0, #0x10 + bge _020B16FC + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B170C +_020B16AC: + b _020B170C +_020B16B0: + b _020B16DC +_020B16B4: + b _020B16E4 +_020B16B8: + b _020B170C +_020B16BC: + b _020B16EC +_020B16C0: + b _020B170C +_020B16C4: + b _020B170C +_020B16C8: + b _020B170C +_020B16CC: + b _020B16F4 +_020B16D0: + cmp r0, #0x20 + beq _020B1704 + b _020B170C +_020B16DC: + mov r0, #0x0 + b _020B1710 +_020B16E4: + mov r0, #0x1 + b _020B1710 +_020B16EC: + mov r0, #0x2 + b _020B1710 +_020B16F4: + mov r0, #0x3 + b _020B1710 +_020B16FC: + mov r0, #0x4 + b _020B1710 +_020B1704: + mov r0, #0x5 + b _020B1710 +_020B170C: + mov r0, #0x0 +_020B1710: + str r0, [r4, #0x10] + b _020B1728 +_020B1718: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1728: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B1760: .word 0xFFCFFFEF +_020B1764: .word 0x04001000 + + arm_func_start FUN_020B1768 +FUN_020B1768: ; 0x020B1768 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + movs r5, r2 + mov r6, r1 + mov r4, r3 + ldr r0, [r7, #0x8] + beq _020B17D0 + cmp r5, #0x1 + beq _020B179C + cmp r5, #0x2 + beq _020B17B8 + b _020B17D0 +_020B179C: + mov r3, #0x4000000 + ldr r2, [r3, #0x0] + ldr r1, _020B19A0 ; =0xFFCFFFEF + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] + b _020B17D0 +_020B17B8: + ldr r3, _020B19A4 ; =0x04001000 + ldr r1, _020B19A0 ; =0xFFCFFFEF + ldr r2, [r3, #0x0] + and r1, r2, r1 + orr r0, r1, r0 + str r0, [r3, #0x0] +_020B17D0: + ldr r0, [r7, #0x14] + ldr r1, [r7, #0x10] + bl DC_FlushRange +_020B17DC: ; 0x020B17DC + cmp r5, #0x0 + beq _020B17F8 + cmp r5, #0x1 + beq _020B1814 + cmp r5, #0x2 + beq _020B1828 + b _020B1838 +_020B17F8: + bl GX_BeginLoadTex + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadTex + bl GX_EndLoadTex + b _020B1838 +_020B1814: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GX_LoadOBJ + b _020B1838 +_020B1828: + ldr r0, [r7, #0x14] + ldr r2, [r7, #0x10] + mov r1, r6 + bl GXS_LoadOBJ +_020B1838: + ldr r0, [r7, #0x8] + cmp r0, #0x0 + bne _020B1958 + ldrh r0, [r7, #0x2] + cmp r0, #0x10 + bgt _020B1888 + cmp r0, #0x10 + bge _020B18B4 + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B18C4 +_020B1864: + b _020B18C4 +_020B1868: + b _020B1894 +_020B186C: + b _020B189C +_020B1870: + b _020B18C4 +_020B1874: + b _020B18A4 +_020B1878: + b _020B18C4 +_020B187C: + b _020B18C4 +_020B1880: + b _020B18C4 +_020B1884: + b _020B18AC +_020B1888: + cmp r0, #0x20 + beq _020B18BC + b _020B18C4 +_020B1894: + mov r0, #0x0 + b _020B18C8 +_020B189C: + mov r0, #0x1 + b _020B18C8 +_020B18A4: + mov r0, #0x2 + b _020B18C8 +_020B18AC: + mov r0, #0x3 + b _020B18C8 +_020B18B4: + mov r0, #0x4 + b _020B18C8 +_020B18BC: + mov r0, #0x5 + b _020B18C8 +_020B18C4: + mov r0, #0x0 +_020B18C8: + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + cmp r0, #0x10 + bgt _020B1910 + cmp r0, #0x10 + bge _020B193C + cmp r0, #0x8 + addls pc, pc, r0, lsl #0x2 + b _020B194C +_020B18EC: + b _020B194C +_020B18F0: + b _020B191C +_020B18F4: + b _020B1924 +_020B18F8: + b _020B194C +_020B18FC: + b _020B192C +_020B1900: + b _020B194C +_020B1904: + b _020B194C +_020B1908: + b _020B194C +_020B190C: + b _020B1934 +_020B1910: + cmp r0, #0x20 + beq _020B1944 + b _020B194C +_020B191C: + mov r0, #0x0 + b _020B1950 +_020B1924: + mov r0, #0x1 + b _020B1950 +_020B192C: + mov r0, #0x2 + b _020B1950 +_020B1934: + mov r0, #0x3 + b _020B1950 +_020B193C: + mov r0, #0x4 + b _020B1950 +_020B1944: + mov r0, #0x5 + b _020B1950 +_020B194C: + mov r0, #0x0 +_020B1950: + str r0, [r4, #0x10] + b _020B1968 +_020B1958: + ldrh r0, [r7, #0x2] + str r0, [r4, #0xc] + ldrh r0, [r7, #0x0] + str r0, [r4, #0x10] +_020B1968: + ldr r1, [r7, #0x4] + mov r0, #0x0 + str r1, [r4, #0x14] + str r0, [r4, #0x18] + mov r0, #0x1 + str r0, [r4, #0x1c] + ldr r3, [r7, #0x8] + mov r0, r4 + mov r1, r5 + mov r2, r6 + str r3, [r4, #0x20] + bl FUN_020B1A1C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B19A0: .word 0xFFCFFFEF +_020B19A4: .word 0x04001000 + + arm_func_start FUN_020B19A8 +FUN_020B19A8: + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x8] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B19C4 +FUN_020B19C4: ; 0x020B19C4 + add r0, r0, r1, lsl #0x2 + ldr r0, [r0, #0x8] + bx lr + + arm_func_start FUN_020B19D0 +FUN_020B19D0: ; 0x020B19D0 + add r0, r0, r1, lsl #0x2 + str r2, [r0, #0x8] + bx lr + + arm_func_start FUN_020B19DC +FUN_020B19DC: ; 0x020B19DC + mov r3, #0x0 + mvn r2, #0x0 +_020B19E4: + add r1, r0, r3, lsl #0x2 + add r3, r3, #0x1 + str r2, [r1, #0x8] + cmp r3, #0x3 + blt _020B19E4 + bx lr + + arm_func_start FUN_020B19FC +FUN_020B19FC: + ldr r1, [r0, r1, lsl #0x2] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B1A14 +FUN_020B1A14: ; 0x020B1A14 + ldr r0, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B1A1C +FUN_020B1A1C: ; 0x020B1A1C + str r2, [r0, r1, lsl #0x2] + bx lr + + arm_func_start FUN_020B1A24 +FUN_020B1A24: ; 0x020B1A24 + mov r2, #0x0 + mvn r1, #0x0 +_020B1A2C: + str r1, [r0, r2, lsl #0x2] + add r2, r2, #0x1 + cmp r2, #0x3 + blt _020B1A2C + bx lr + + arm_func_start FUN_020B1A40 +FUN_020B1A40: ; 0x020B1A40 + stmdb sp!, {r4,lr} + mov r4, r0 + add r1, r4, #0x4 + mov r0, #0x0 + mov r2, #0x18 + bl MIi_CpuClear16 + mov r0, #0x1000 + str r0, [r4, #0x4] + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1A68 +FUN_020B1A68: + ldr ip, _020B1A74 ; =FUN_020B1A40 + str r1, [r0, #0x0] + bx r12 + .balign 4 +_020B1A74: .word FUN_020B1A40 + + arm_func_start FUN_020B1A78 +FUN_020B1A78: ; 0x020B1A78 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x2 + streqh r3, [r0, #0x12] + streq r1, [r0, #0x4] + streq r2, [r0, #0x8] + bx lr + + arm_func_start FUN_020B1A98 +FUN_020B1A98: ; 0x020B1A98 + ldr r2, [r0, #0x0] + cmp r2, #0x1 + ldreqh r2, [r0, #0x12] + orreq r2, r2, #0x4 + streqh r2, [r0, #0x12] + streqh r1, [r0, #0x10] + bx lr + + arm_func_start FUN_020B1AB4 +FUN_020B1AB4: ; 0x020B1AB4 + ldr r3, [r0, #0x0] + cmp r3, #0x1 + ldreqh r3, [r0, #0x12] + orreq r3, r3, #0x8 + streqh r3, [r0, #0x12] + streqh r1, [r0, #0xc] + streqh r2, [r0, #0xe] + bx lr + + arm_func_start FUN_020B1AD4 +FUN_020B1AD4: ; 0x020B1AD4 + mov r2, #0x0 + str r2, [r0, #0x0] + str r1, [r0, #0x4] + mov r1, #0x1 + str r1, [r0, #0x8] + ldr ip, _020B1AF4 ; =FUN_020B1A68 + add r0, r0, #0xc + bx r12 + .balign 4 +_020B1AF4: .word FUN_020B1A68 + + arm_func_start FUN_020B1AF8 +FUN_020B1AF8: ; 0x020B1AF8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldrh r5, [r2, #0x0] + ldr r4, [sp, #0x60] + ldr r10, [sp, #0x58] + str r4, [sp, #0x60] + cmp r1, r5 + movcs r1, r5 + mov r4, #0x0 + cmp r1, #0x0 + str r4, [sp, #0x0] + bls _020B1E7C + ldrh r4, [sp, #0x5c] + mov r4, r4, lsl #0x19 + str r4, [sp, #0x4] + ldr r4, [sp, #0x0] + str r4, [sp, #0x14] + mov r4, #0x100 + str r4, [sp, #0xc] + mov r4, #0x300 + str r4, [sp, #0x8] + mov r4, #0x1 + str r4, [sp, #0x10] +_020B1B54: + ldr r5, [sp, #0x0] + mov r6, #0x6 + mul r6, r5, r6 + ldr r8, [r2, #0x4] + ldr r4, [sp, #0x0] + add r7, r0, r5, lsl #0x3 + ldrh r5, [r8, r6] + mov r4, r4, lsl #0x3 + add r9, r8, r6 + strh r5, [r0, r4] + ldrh r4, [r9, #0x2] + cmp r3, #0x0 + strh r4, [r7, #0x2] + ldrh r4, [r9, #0x4] + strh r4, [r7, #0x4] + bne _020B1B9C + cmp r10, #0x0 + beq _020B1E60 +_020B1B9C: + ldr r5, [r7, #0x0] + ldr r4, _020B1E88 ; =0x01FF0000 + and r4, r5, r4 + mov r4, r4, lsr #0x10 + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0xff + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x20] + ldr r4, [r7, #0x0] + and r4, r4, #0xff + mov r4, r4, lsl #0x10 + mov r4, r4, asr #0x10 + cmp r4, #0x7f + orrgt r4, r4, #0xff00 + movgt r4, r4, lsl #0x10 + movgt r4, r4, asr #0x10 + mov r4, r4, lsl #0xc + str r4, [sp, #0x24] + cmp r3, #0x0 + beq _020B1E00 + ldr r5, [r7, #0x0] + and r6, r5, #0x300 + cmp r6, #0x100 + beq _020B1C1C + cmp r6, #0x300 + beq _020B1C1C + and r4, r5, #0x30000000 + orr r6, r6, r4 +_020B1C1C: + cmp r6, #0x300 + bne _020B1C70 + ldr r4, _020B1E8C ; =0xC000C000 + ldr r8, _020B1E90 ; =0x020FF8AC + and r5, r5, r4 + and r4, r5, #0xc000 + mov r6, r4, asr #0xe + and r4, r5, #0xc0000000 + mov r4, r4, lsr #0x1e + mov r4, r4, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r4, r8] + ldr r8, _020B1E94 ; =0x020FF894 + ldr r5, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + add r5, r5, r9, lsl #0xb + str r5, [sp, #0x20] + ldrh r4, [r4, r6] + ldr r5, [sp, #0x24] + add r4, r5, r4, lsl #0xb + str r4, [sp, #0x24] +_020B1C70: + ldr r4, [sp, #0x60] + ldr r5, [r3, #0x8] + cmp r4, #0x0 + ldrne r8, [sp, #0x8] + add r4, sp, #0x20 + ldreq r8, [sp, #0xc] + mov r6, r4 + cmp r8, #0x300 + ldreq r9, [sp, #0x10] + mov r12, #0x1000 + ldrne r9, [sp, #0x14] + cmp r4, r4 + ldr r4, [sp, #0x24] + addeq r6, sp, #0x28 + smull r11, r4, r5, r4 + adds r5, r11, r12 + adc r11, r4, #0x0 + ldr r4, [r3, #0x0] + ldr lr, [sp, #0x20] + smlal r5, r11, r4, lr + mov r4, r5, lsr #0xc + orr r4, r4, r11, lsl #0x14 + str r4, [r6, #0x0] + ldr r4, [r3, #0xc] + ldr r5, [sp, #0x24] + ldr lr, [r3, #0x4] + smull r11, r5, r4, r5 + adds r11, r11, r12 + adc r4, r5, #0x0 + add r5, sp, #0x28 + cmp r6, r5 + ldr r5, [sp, #0x20] + smlal r11, r4, lr, r5 + mov r5, r11, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, #0x4] + ldreq r5, [sp, #0x28] + ldreq r4, [sp, #0x2c] + streq r5, [sp, #0x20] + streq r4, [sp, #0x24] + cmp r8, #0x100 + beq _020B1D38 + cmp r8, #0x300 + beq _020B1D38 + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r4, r4, r8 + str r4, [r7, #0x0] + b _020B1D54 +_020B1D38: + ldr r5, [r7, #0x0] + ldr r4, _020B1E98 ; =0xC1FFFCFF + and r4, r5, r4 + orr r5, r4, r8 + ldr r4, [sp, #0x4] + orr r4, r4, r5 + str r4, [r7, #0x0] +_020B1D54: + ldr r6, [r7, #0x0] + ldr r5, _020B1E8C ; =0xC000C000 + cmp r9, #0x0 + and r8, r6, r5 + and r5, r8, #0xc000 + mov r6, r5, asr #0xe + and r5, r8, #0xc0000000 + ldr r8, _020B1E90 ; =0x020FF8AC + mov r5, r5, lsr #0x1e + mov r5, r5, lsl #0x1 + add r8, r8, r6, lsl #0x3 + ldrh r9, [r5, r8] + ldr r8, _020B1E94 ; =0x020FF894 + ldr r4, [sp, #0x20] + add r6, r8, r6, lsl #0x3 + mov r11, r9, asr #0x1 + ldrh r5, [r5, r6] + mov r8, r11, lsl #0xc + ldr r6, [r3, #0x0] + rsb r12, r8, #0x0 + mov r9, r5, asr #0x1 + mla r12, r6, r11, r12 + ldr r5, [r3, #0x8] + mla r6, r5, r9, r12 + add r6, r4, r6 + str r6, [sp, #0x20] + ldr r12, [r3, #0x4] + mov r5, r9, lsl #0xc + str r12, [sp, #0x1c] + ldr r12, [r3, #0xc] + rsb lr, r5, #0x0 + str r12, [sp, #0x18] + ldr r12, [sp, #0x1c] + ldr r4, [sp, #0x24] + mla r11, r12, r11, lr + ldr r12, [sp, #0x18] + subne r6, r6, r8 + mla r9, r12, r9, r11 + add r4, r4, r9 + str r4, [sp, #0x24] + subne r4, r4, r5 + strne r6, [sp, #0x20] + strne r4, [sp, #0x24] +_020B1E00: + cmp r10, #0x0 + beq _020B1E28 + ldr r6, [sp, #0x20] + ldr r4, [r10, #0x0] + ldr r5, [sp, #0x24] + add r4, r6, r4 + str r4, [sp, #0x20] + ldr r4, [r10, #0x4] + add r4, r5, r4 + str r4, [sp, #0x24] +_020B1E28: + ldr r4, [sp, #0x20] + ldr r6, [r7, #0x0] + add r5, r4, #0x800 + ldr r4, _020B1E9C ; =0x000001FF + and r4, r4, r5, asr #0xc + ldr r5, _020B1EA0 ; =0xFE00FF00 + and r6, r6, r5 + ldr r5, [sp, #0x24] + add r5, r5, #0x800 + mov r5, r5, asr #0xc + and r5, r5, #0xff + orr r5, r6, r5 + orr r4, r5, r4, lsl #0x10 + str r4, [r7, #0x0] +_020B1E60: + ldr r4, [sp, #0x0] + add r4, r4, #0x1 + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + str r4, [sp, #0x0] + cmp r4, r1 + blo _020B1B54 +_020B1E7C: + mov r0, r1 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B1E88: .word 0x01FF0000 +_020B1E8C: .word 0xC000C000 +_020B1E90: .word 0x020FF8AC +_020B1E94: .word 0x020FF894 +_020B1E98: .word 0xC1FFFCFF +_020B1E9C: .word 0x000001FF +_020B1EA0: .word 0xFE00FF00 + + arm_func_start FUN_020B1EA4 +FUN_020B1EA4: ; 0x020B1EA4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0518 +_020B1EB0: ; 0x020B1EB0 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020B1EB8: ; 0x020B1EB8 + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EC4 +FUN_020B1EC4: ; 0x020B1EC4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0534 +_020B1ED0: ; 0x020B1ED0 + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020B1ED8: ; 0x020B1ED8 + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EE4 +FUN_020B1EE4: ; 0x020B1EE4 + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020B0438 + mov r0, r4 + bl FUN_020B1FC4 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B1EFC +FUN_020B1EFC: ; 0x020B1EFC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r4, r2 + ldr r2, [r4, #0xc] + mov r5, r1 + ldr r1, [r2, #0x0] + ldr r2, [sp, #0x34] + str r1, [sp, #0x0] + ldr r1, [sp, #0x38] + str r2, [sp, #0x4] + mov r6, r3 + mov r7, r0 + ldr r12, [sp, #0x3c] + str r1, [sp, #0x8] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + ldr r3, [sp, #0x30] + mov r0, r6 + str r12, [sp, #0xc] + bl FUN_020B45F0 + str r6, [r7, #0x34] + str r4, [r7, #0x30] + add r0, r7, #0x38 + mov r1, #0x1 + str r6, [r7, #0x34] + bl FUN_020B1A68 + mov r0, r7 + bl FUN_020B04C0 + mov r0, r7 + mov r1, r5 + bl FUN_020B1EE4 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B1F80 +FUN_020B1F80: ; 0x020B1F80 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + str r2, [r5, #0x30] + mvn r2, #0x0 + add r0, r5, #0x38 + mov r1, #0x1 + str r2, [r5, #0x34] + bl FUN_020B1A68 + mov r0, r5 + bl FUN_020B04C0 + mov r0, r5 + mov r1, r4 + bl FUN_020B1EE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B1FC4 +FUN_020B1FC4: ; 0x020B1FC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldrh r1, [r1, #0x4] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020B1FE4: ; 0x020B1FE4 + bl FUN_020B06E0 + mov r4, r0 + ldr r7, [r5, #0x30] + ldrh r1, [r4, #0x0] + mov r0, r7 + bl FUN_020AFE8C + str r0, [r5, #0x2c] + ldr r1, [r5, #0x18] + add r0, r5, #0x38 + ldr r2, [r1, #0x4] + mov r1, #0x1 + and r6, r2, #0xff + bl FUN_020B1A68 +_020B2018: ; 0x020B2018 + cmp r6, #0x0 + beq _020B2068 + cmp r6, #0x2 + bne _020B203C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r5, #0x38 + bl FUN_020B1AB4 + b _020B2068 +_020B203C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r5, #0x38 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r5, #0x38 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r5, #0x38 + bl FUN_020B1AB4 +_020B2068: + ldr r2, [r7, #0xc] + cmp r2, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020B2084: ; 0x020B2084 + ldr r1, [r5, #0x34] + mvn r0, #0x0 + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020B20A4: ; 0x020B20A4 + ldrh r1, [r4, #0x0] + ldr r2, [r2, #0x4] + ldr r0, [r5, #0x34] + add r3, r2, r1, lsl #0x3 + ldr r1, [r2, r1, lsl #0x3] + ldr r2, [r3, #0x4] + bl FUN_020B4400 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B20C8 +FUN_020B20C8: ; 0x020B20C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r6, #0x0 + str r6, [r0, #0x38] + ldr r7, [sp, #0x30] + str r6, [r0, #0x30] + mov r10, r1 + str r7, [r0, #0x34] + str r0, [sp, #0x0] + movs r8, r3 + mov r9, r2 + str r10, [r0, #0x3c] + ldr r11, [sp, #0x34] + beq _020B215C + mov r0, #0x1 + str r6, [sp, #0x8] + str r0, [sp, #0x4] +_020B210C: + mov r0, #0x28 + mul r4, r6, r0 + ldr r1, [sp, #0x4] + add r0, r10, r4 + bl FUN_020B1AD4 + mov r0, #0x54 + mla r5, r6, r0, r9 + ldr r1, [sp, #0x8] + mov r0, r7 + str r5, [r10, r4] + bl FUN_020AFC04 + mov r1, r0 + mov r0, r5 + mov r2, r11 + bl FUN_020B1F80 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r8 + blo _020B210C +_020B215C: + ldr r0, [sp, #0x0] + bl FUN_020B04C0 +_020B2164: ; 0x020B2164 + ldr r0, [sp, #0x0] + ldr r3, [sp, #0x38] + ldr r2, [sp, #0x0] + add r0, r0, #0x44 + mov r1, #0x1 + str r3, [r2, #0x40] + bl FUN_020B1A68 +_020B2180: ; 0x020B2180 + ldr r0, [sp, #0x0] + mov r1, #0x0 + strh r1, [r0, #0x2c] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B2194 +FUN_020B2194: ; 0x020B2194 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0518 +_020B21A4: ; 0x020B21A4 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020B21B0: ; 0x020B21B0 + mov r0, r7 + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 +_020B21E4: ; 0x020B21E4 + cmp r5, #0x0 + beq _020B2234 + cmp r5, #0x2 + bne _020B2208 + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B2234 +_020B2208: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B2234: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B224C +FUN_020B224C: ; 0x020B224C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r2, [r4, #0x0] + mov r6, r1 + ldrh r5, [r2, #0x4] + bl FUN_020B0534 +_020B2268: ; 0x020B2268 + cmp r0, #0x0 + beq _020B2318 + ldrh r1, [r4, #0x2c] + mov r0, r4 + add r1, r1, r5 + strh r1, [r4, #0x2c] + bl FUN_020B06E0 + mov r5, r0 + ldrh r1, [r5, #0x0] + ldr r0, [r4, #0x40] + bl FUN_020AFF34 + ldr r1, [r4, #0x18] + mov r7, r0 + ldr r1, [r1, #0x4] + add r0, r4, #0x44 + and r6, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 +_020B22B0: ; 0x020B22B0 + cmp r6, #0x0 + beq _020B2300 + cmp r6, #0x2 + bne _020B22D4 + ldrsh r1, [r5, #0x4] + ldrsh r2, [r5, #0x6] + add r0, r4, #0x44 + bl FUN_020B1AB4 + b _020B2300 +_020B22D4: + ldr r1, [r5, #0x4] + ldr r2, [r5, #0x8] + add r0, r4, #0x44 + bl FUN_020B1A78 + ldrh r1, [r5, #0x2] + add r0, r4, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r5, #0xc] + ldrsh r2, [r5, #0xe] + add r0, r4, #0x44 + bl FUN_020B1AB4 +_020B2300: + ldrh r2, [r4, #0x2c] + mov r1, r7 + add r0, r4, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B2318: + mov r1, r6 + add r0, r4, #0x30 + bl FUN_020B232C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B232C +FUN_020B232C: ; 0x020B232C + stmdb sp!, {r4-r8,lr} + mov r7, r0 + ldr r0, [r7, #0x8] + mov r6, r1 + cmp r0, #0x1 + bne _020B238C + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x2] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} +_020B235C: ; 0x020B235C + mov r8, #0x58 +_020B2360: + mla r0, r5, r8, r4 + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x2] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2360 + ldmia sp!, {r4-r8,pc} +_020B238C: + ldr r0, [r7, #0x0] + ldr r4, [r7, #0xc] + ldrh r0, [r0, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r8,pc} +_020B23A4: ; 0x020B23A4 + mov r8, #0x28 +_020B23A8: + mul r0, r5, r8 + ldr r0, [r4, r0] + mov r1, r6 + bl FUN_020B1EC4 + ldr r1, [r7, #0x0] + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B23A8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B23D8 +FUN_020B23D8: ; 0x020B23D8 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldrh r0, [r5, #0x0] + mov r4, #0x0 + mov r6, r4 + cmp r0, #0x0 + bls _020B2424 +_020B23F4: + mov r0, r5 + mov r1, r6 + bl FUN_020AFF34 + ldrh r0, [r0, #0x0] + ldrh r1, [r5, #0x0] + cmp r0, r4 + movhi r4, r0 + add r0, r6, #0x1 + mov r0, r0, lsl #0x10 + mov r6, r0, lsr #0x10 + cmp r6, r1 + blo _020B23F4 +_020B2424: + mov r0, r4 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B242C +FUN_020B242C: ; 0x020B242C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + bl FUN_020B0438 + mov r1, #0x0 + mov r0, r7 + strh r1, [r7, #0x2c] + bl FUN_020B06E0 + mov r4, r0 + ldrh r1, [r4, #0x0] + ldr r0, [r7, #0x40] + bl FUN_020AFF34 + ldr r1, [r7, #0x18] + mov r6, r0 + ldr r1, [r1, #0x4] + add r0, r7, #0x44 + and r5, r1, #0xff + mov r1, #0x1 + bl FUN_020B1A68 +_020B2478: ; 0x020B2478 + cmp r5, #0x0 + beq _020B24C8 + cmp r5, #0x2 + bne _020B249C + ldrsh r1, [r4, #0x4] + ldrsh r2, [r4, #0x6] + add r0, r7, #0x44 + bl FUN_020B1AB4 + b _020B24C8 +_020B249C: + ldr r1, [r4, #0x4] + ldr r2, [r4, #0x8] + add r0, r7, #0x44 + bl FUN_020B1A78 + ldrh r1, [r4, #0x2] + add r0, r7, #0x44 + bl FUN_020B1A98 + ldrsh r1, [r4, #0xc] + ldrsh r2, [r4, #0xe] + add r0, r7, #0x44 + bl FUN_020B1AB4 +_020B24C8: + ldrh r2, [r7, #0x2c] + mov r1, r6 + add r0, r7, #0x30 + bl FUN_020B24E0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B24E0 +FUN_020B24E0: ; 0x020B24E0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r1 + str r0, [sp, #0x0] + str r10, [r0, #0x0] + ldr r0, [r0, #0x8] + mov r9, r2 + cmp r0, #0x1 + bne _020B2654 + ldrh r1, [r10, #0x2] + ldr r0, [sp, #0x0] + mov r4, #0x0 + ldr r8, [r0, #0xc] + cmp r1, #0x0 + bls _020B2544 + mov r3, r4 + mov r0, #0x58 +_020B2524: + mla r1, r4, r0, r8 + str r3, [r1, #0x54] + add r1, r4, #0x1 + mov r1, r1, lsl #0x10 + ldrh r2, [r10, #0x2] + mov r4, r1, lsr #0x10 + cmp r4, r2 + blo _020B2524 +_020B2544: + ldrh r0, [r10, #0x0] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} +_020B2558: ; 0x020B2558 + str r5, [sp, #0x4] + mov r11, #0x1 +_020B2560: + ldr r0, [r10, #0x4] + mov r1, #0x58 + add r7, r0, r5, lsl #0x3 + ldrh r0, [r7, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x10 + mla r6, r0, r1, r8 + ldr r0, [r6, #0x54] + cmp r0, #0x0 + bne _020B2634 + ldr r0, [sp, #0x0] + ldrh r1, [r7, #0x0] + ldr r0, [r0, #0x4] + bl FUN_020AFC04 + mov r4, r0 + mov r0, r6 + mov r1, r4 + bl FUN_020B1EE4 + str r11, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2630 + ldrh r1, [r4, #0x0] + ldr r7, [sp, #0x4] + mov r3, r7 + cmp r1, #0x0 + bls _020B25F0 + ldr r2, [r4, #0xc] +_020B25D8: + add r0, r2, r3, lsl #0x3 + ldrh r0, [r0, #0x4] + add r3, r3, #0x1 + cmp r3, r1 + add r7, r7, r0 + blo _020B25D8 +_020B25F0: + mov r0, r6 + bl FUN_020B0408 +_020B25F8: ; 0x020B25F8 + cmp r0, #0x0 + beq _020B261C + mov r0, r9 + mov r1, r7 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2630 +_020B261C: + cmp r9, r7 + movcc r7, r9 + mov r0, r6 + mov r1, r7, lsl #0xc + bl FUN_020B1EC4 +_020B2630: + str r11, [r6, #0x54] +_020B2634: + add r0, r5, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r5, r0, lsr #0x10 + cmp r5, r1 + blo _020B2560 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} +_020B2654: + ldrh r1, [r10, #0x0] + ldr r0, [sp, #0x0] + mov r4, #0x0 + cmp r1, #0x0 + ldr r11, [r0, #0xc] + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} +_020B2670: ; 0x020B2670 + mov r0, #0x1 + str r4, [sp, #0xc] + str r0, [sp, #0x8] +_020B267C: + mov r0, #0x28 + mul r2, r4, r0 + ldr r3, [r10, #0x4] + mov r0, r4, lsl #0x3 + ldrh r1, [r3, r0] + ldr r0, [sp, #0x0] + ldr r6, [r11, r2] + ldr r0, [r0, #0x4] + add r7, r3, r4, lsl #0x3 + bl FUN_020AFC04 + mov r5, r0 + mov r0, r6 + mov r1, r5 + bl FUN_020B1EE4 + ldr r0, [sp, #0x8] + str r0, [r6, #0x8] + ldrh r0, [r7, #0x6] + and r0, r0, #0xf + cmp r0, #0x1 + bne _020B2740 + ldrh r1, [r5, #0x0] + ldr r8, [sp, #0xc] + mov r0, r8 + cmp r1, #0x0 + bls _020B2700 + ldr r3, [r5, #0xc] +_020B26E4: + add r1, r3, r0, lsl #0x3 + ldrh r2, [r1, #0x4] + add r0, r0, #0x1 + ldrh r1, [r5, #0x0] + add r8, r8, r2 + cmp r0, r1 + blo _020B26E4 +_020B2700: + mov r0, r6 + bl FUN_020B0408 +_020B2708: ; 0x020B2708 + cmp r0, #0x0 + beq _020B272C + mov r0, r9 + mov r1, r8 + bl _u32_div_f + mov r0, r6 + mov r1, r1, lsl #0xc + bl FUN_020B1EC4 + b _020B2740 +_020B272C: + cmp r9, r8 + movcc r8, r9 + mov r0, r6 + mov r1, r8, lsl #0xc + bl FUN_020B1EC4 +_020B2740: + mov r0, #0x28 + mla r3, r4, r0, r11 + ldr r0, [sp, #0x8] + str r0, [r3, #0x8] + ldrsh r1, [r7, #0x2] + ldrsh r2, [r7, #0x4] + add r0, r3, #0xc + bl FUN_020B1AB4 + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r10, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B267C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + + arm_func_start thunk_FUN_020b5040 +thunk_FUN_020b5040: ; 0x020B2780 + ldr ip, _020B2788 ; =FUN_020B5040 + bx r12 + .balign 4 +_020B2788: .word FUN_020B5040 + + arm_func_start FUN_020B278C +FUN_020B278C: + ldr r0, [r0, #0x78] + bx lr + + arm_func_start FUN_020B2794 +FUN_020B2794: ; 0x020B2794 + stmdb sp!, {lr} + sub sp, sp, #0x1c + ldr r2, _020B2894 ; =0x021CDD70 + mov lr, #0x0 + ldr r12, [r2, #0x0] + ldr r3, _020B2898 ; =0x021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x0] + str r1, [sp, #0xc] + mla r1, r12, r2, r3 + rsb r3, r0, #0x0 + str r0, [sp, #0x4] + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x8] + str lr, [sp, #0x10] + str lr, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B2894 ; =0x021CDD70 + ldr r1, _020B289C ; =0x021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B28A0 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2824 + ldr r1, _020B28A4 ; =0x02106570 + ldr r0, _020B28A8 ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B2828 +_020B2824: + mov r0, #0x0 +_020B2828: + cmp r0, #0x0 + ldreq r1, _020B2894 ; =0x021CDD70 + ldreq r0, _020B28A4 ; =0x02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B2894 ; =0x021CDD70 + ldr r1, _020B28AC ; =0x021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B288C +_020B2860: + b _020B2870 +_020B2864: + b _020B288C +_020B2868: + b _020B2870 +_020B286C: + b _020B2870 +_020B2870: + ldr r0, _020B28B0 ; =0x021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B288C: + add sp, sp, #0x1c + ldmia sp!, {pc} + .balign 4 +_020B2894: .word 0x021CDD70 +_020B2898: .word 0x021CDEF4 +_020B289C: .word 0x021CE1F4 +_020B28A0: .word 0x021CDD68 +_020B28A4: .word 0x02106570 +_020B28A8: .word 0x0000FFFE +_020B28AC: .word 0x021CDDF4 +_020B28B0: .word 0x021CDD64 + + arm_func_start FUN_020B28B4 +FUN_020B28B4: ; 0x020B28B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r2, _020B29E8 ; =0x021CDD70 + mov r12, #0x0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r2, _020B29EC ; =0x021CDEF4 + mov r1, #0x18 + mla r1, r3, r1, r2 + mov r5, r0 + add r0, sp, #0x0 + mov r2, r1 + str r5, [sp, #0x0] + str r12, [sp, #0x4] + str r12, [sp, #0x8] + str r4, [sp, #0xc] + str r12, [sp, #0x10] + str r12, [sp, #0x14] + bl FUN_020B423C + mov r0, r5 + bl FX_Inv + mov r1, #0x0 + str r0, [sp, #0x0] + mov r0, r4 + str r1, [sp, #0x4] + str r1, [sp, #0x8] + bl FX_Inv + mov r3, #0x0 + ldr r1, _020B29E8 ; =0x021CDD70 + str r0, [sp, #0xc] + ldr r2, [r1, #0x0] + ldr r1, _020B29F0 ; =0x021CE1F4 + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + str r3, [sp, #0x10] + str r3, [sp, #0x14] + bl FUN_020B423C + ldr r0, _020B29F4 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B2978 + ldr r1, _020B29F8 ; =0x02106570 + ldr r0, _020B29FC ; =0x0000FFFE + ldrh r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + bne _020B297C +_020B2978: + mov r0, #0x0 +_020B297C: + cmp r0, #0x0 + ldreq r1, _020B29E8 ; =0x021CDD70 + ldreq r0, _020B29F8 ; =0x02106570 + ldreq r1, [r1, #0x0] + streqh r1, [r0, #0x0] + ldr r0, _020B29E8 ; =0x021CDD70 + ldr r1, _020B2A00 ; =0x021CDDF4 + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + add r12, r1, r0, lsr #0xd + ldrh r0, [r12, #0x4] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B29E0 +_020B29B4: + b _020B29C4 +_020B29B8: + b _020B29E0 +_020B29BC: + b _020B29C4 +_020B29C0: + b _020B29C4 +_020B29C4: + ldr r0, _020B2A04 ; =0x021CDD64 + mov r1, #0x1 + ldrh r3, [r0, #0x0] + add r2, r3, #0x1 + strh r2, [r0, #0x0] + strh r3, [r12, #0x2] + strh r1, [r12, #0x4] +_020B29E0: + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B29E8: .word 0x021CDD70 +_020B29EC: .word 0x021CDEF4 +_020B29F0: .word 0x021CE1F4 +_020B29F4: .word 0x021CDD68 +_020B29F8: .word 0x02106570 +_020B29FC: .word 0x0000FFFE +_020B2A00: .word 0x021CDDF4 +_020B2A04: .word 0x021CDD64 + + arm_func_start FUN_020B2A08 +FUN_020B2A08: ; 0x020B2A08 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x1c + ldr r3, _020B2AEC ; =0x021CDD68 + mov r4, r2 + ldr r2, [r3, #0x0] + cmp r2, #0x0 + beq _020B2A6C + ldr r2, _020B2AF0 ; =0x021CDD70 + mov r3, #0x18 + ldr r2, [r2, #0x0] + ldr lr, _020B2AF4 ; =0x021CDF04 + mul r5, r2, r3 + ldr r3, [lr, r5] + ldr ip, _020B2AF8 ; =0x021CDF08 + add r0, r3, r0 + str r0, [lr, r5] + ldr r0, [r12, r5] + ldr r3, _020B2AFC ; =0x021CDD74 + add r0, r0, r1 + str r0, [r12, r5] + ldr r0, [r3, r2, lsl #0x2] + add sp, sp, #0x1c + add r0, r0, r4 + str r0, [r3, r2, lsl #0x2] + ldmia sp!, {r4-r5,pc} +_020B2A6C: + ldr r2, _020B2AF0 ; =0x021CDD70 + mov lr, #0x1000 + ldr r12, [r2, #0x0] + ldr r3, _020B2B00 ; =0x021CDEF4 + mov r2, #0x18 + str r1, [sp, #0x14] + mla r1, r12, r2, r3 + mov r3, #0x0 + str r0, [sp, #0x10] + add r0, sp, #0x0 + mov r2, r1 + str lr, [sp, #0x0] + str r3, [sp, #0x4] + str r3, [sp, #0x8] + str lr, [sp, #0xc] + bl FUN_020B423C + ldr r0, _020B2AF0 ; =0x021CDD70 + ldr r1, _020B2B04 ; =0x021CE1F4 + ldr r2, [r0, #0x0] + mov r0, #0x18 + mla r1, r2, r0, r1 + add r0, sp, #0x0 + mov r2, r1 + bl FUN_020B423C + ldr r0, _020B2AF0 ; =0x021CDD70 + ldr r2, _020B2AFC ; =0x021CDD74 + ldr r1, [r0, #0x0] + ldr r0, [r2, r1, lsl #0x2] + add r0, r0, r4 + str r0, [r2, r1, lsl #0x2] + add sp, sp, #0x1c + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B2AEC: .word 0x021CDD68 +_020B2AF0: .word 0x021CDD70 +_020B2AF4: .word 0x021CDF04 +_020B2AF8: .word 0x021CDF08 +_020B2AFC: .word 0x021CDD74 +_020B2B00: .word 0x021CDEF4 +_020B2B04: .word 0x021CE1F4 + + arm_func_start FUN_020B2B08 +FUN_020B2B08: ; 0x020B2B08 + ldr r0, _020B2B4C ; =0x021CDD70 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + movle r0, #0x1 + movgt r0, #0x0 + cmp r0, #0x0 + bxne lr + ldr r1, _020B2B4C ; =0x021CDD70 + ldr r0, _020B2B50 ; =0x02106570 + ldr r3, [r1, #0x0] + ldrh r2, [r0, #0x0] + sub r3, r3, #0x1 + str r3, [r1, #0x0] + cmp r2, r3 + ldrgt r1, _020B2B54 ; =0x0000FFFE + strgth r1, [r0, #0x0] + bx lr + .balign 4 +_020B2B4C: .word 0x021CDD70 +_020B2B50: .word 0x02106570 +_020B2B54: .word 0x0000FFFE + + arm_func_start FUN_020B2B58 +FUN_020B2B58: ; 0x020B2B58 + stmdb sp!, {r4-r10,lr} + ldr r0, _020B2D74 ; =0x021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x7c] + ands r0, r0, #0x1 + bne _020B2CA4 + ldr r0, _020B2D78 ; =0x021CDD70 + ldr r1, [r0, #0x0] + mov r0, r1, lsl #0x10 + add r5, r1, #0x1 + cmp r5, #0x20 + mov r4, r0, lsr #0x10 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + beq _020B2C44 + ldr r0, _020B2D7C ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2BE4 + ldr r1, _020B2D78 ; =0x021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =0x021CDD74 + mul r8, r3, r0 + ldr r6, _020B2D84 ; =0x021CDF04 + mul r7, r5, r0 + ldr r2, [r6, r8] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =0x021CDF08 + str r2, [r6, r7] + ldr r2, [r3, r8] + str r0, [r1, r5, lsl #0x2] + str r2, [r3, r7] + b _020B2C3C +_020B2BE4: + ldr r1, _020B2D78 ; =0x021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r7, _020B2D80 ; =0x021CDD74 + mul lr, r2, r0 + ldr r1, _020B2D8C ; =0x021CDEF4 + mul r12, r5, r0 + ldr r8, _020B2D90 ; =0x021CE1F4 + add r10, r1, lr + ldr r6, [r7, r2, lsl #0x2] + add r9, r1, r12 + ldmia r10!, {r0-r3} + stmia r9!, {r0-r3} + ldmia r10, {r0-r1} + str r6, [r7, r5, lsl #0x2] + add r7, r8, lr + stmia r9, {r0-r1} + add r6, r8, r12 + ldmia r7!, {r0-r3} + stmia r6!, {r0-r3} + ldmia r7, {r0-r1} + stmia r6, {r0-r1} +_020B2C3C: + ldr r0, _020B2D78 ; =0x021CDD70 + str r5, [r0, #0x0] +_020B2C44: + ldr r0, _020B2D78 ; =0x021CDD70 + ldr r2, _020B2D94 ; =0x021CDDF4 + ldr r0, [r0, #0x0] + mov r5, r4, lsl #0x3 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + add r4, r2, r4, lsl #0x3 + mov r6, r3, lsl #0x3 + ldrh r1, [r2, r5] + ldrh r0, [r4, #0x2] + add r3, r2, r3, lsl #0x3 + strh r1, [r2, r6] + strh r0, [r3, #0x2] + ldrh r2, [r4, #0x4] + ldrh r0, [r4, #0x6] + ldr r1, _020B2D98 ; =0x021CDDF8 + strh r2, [r3, #0x4] + strh r0, [r3, #0x6] + ldrh r0, [r1, r5] + cmp r0, #0x1 + moveq r0, #0x2 + streqh r0, [r1, r6] + strneh r0, [r1, r6] + ldmia sp!, {r4-r10,pc} +_020B2CA4: + ldr r0, _020B2D78 ; =0x021CDD70 + ldr r0, [r0, #0x0] + add r4, r0, #0x1 + cmp r4, #0x20 + movlt r0, #0x1 + movge r0, #0x0 + cmp r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020B2CC4: ; 0x020B2CC4 + ldr r0, _020B2D7C ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B2D10 + ldr r1, _020B2D78 ; =0x021CDD70 + mov r0, #0x18 + ldr r3, [r1, #0x0] + ldr r1, _020B2D80 ; =0x021CDD74 + mul r7, r3, r0 + ldr r5, _020B2D84 ; =0x021CDF04 + mul r6, r4, r0 + ldr r2, [r5, r7] + ldr r0, [r1, r3, lsl #0x2] + ldr r3, _020B2D88 ; =0x021CDF08 + str r2, [r5, r6] + ldr r2, [r3, r7] + str r0, [r1, r4, lsl #0x2] + str r2, [r3, r6] + b _020B2D68 +_020B2D10: + ldr r1, _020B2D78 ; =0x021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr ip, _020B2D80 ; =0x021CDD74 + mul r9, r2, r0 + ldr r1, _020B2D8C ; =0x021CDEF4 + mul r8, r4, r0 + ldr lr, _020B2D90 ; =0x021CE1F4 + add r6, r1, r9 + ldr r5, [r12, r2, lsl #0x2] + add r7, r1, r8 + ldmia r6!, {r0-r3} + stmia r7!, {r0-r3} + ldmia r6, {r0-r1} + add r6, lr, r9 + stmia r7, {r0-r1} + add lr, lr, r8 + ldmia r6!, {r0-r3} + stmia lr!, {r0-r3} + ldmia r6, {r0-r1} + stmia lr, {r0-r1} + str r5, [r12, r4, lsl #0x2] +_020B2D68: + ldr r0, _020B2D78 ; =0x021CDD70 + str r4, [r0, #0x0] + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B2D74: .word 0x021CDD6C +_020B2D78: .word 0x021CDD70 +_020B2D7C: .word 0x021CDD68 +_020B2D80: .word 0x021CDD74 +_020B2D84: .word 0x021CDF04 +_020B2D88: .word 0x021CDF08 +_020B2D8C: .word 0x021CDEF4 +_020B2D90: .word 0x021CE1F4 +_020B2D94: .word 0x021CDDF4 +_020B2D98: .word 0x021CDDF8 + + arm_func_start FUN_020B2D9C +FUN_020B2D9C: ; 0x020B2D9C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldrh r0, [r4, #0x56] + cmp r0, #0x0 + bne _020B2DBC + add r0, r4, #0x30 + bl FUN_020B2E78 + ldmia sp!, {r4-r6,pc} +_020B2DBC: + bl FUN_020B2B58 + ldrh r0, [r4, #0x56] + ands r0, r0, #0x8 + beq _020B2E0C + ldr r0, _020B2E70 ; =0x021CDD6C + ldrsh r6, [r4, #0x52] + ldr r0, [r0, #0x0] + ldrsh r5, [r4, #0x50] + bl FUN_020B4F88 +_020B2DE0: ; 0x020B2DE0 + cmp r0, #0x0 + ldr r0, _020B2E70 ; =0x021CDD6C + rsbne r5, r5, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 +_020B2DF4: ; 0x020B2DF4 + cmp r0, #0x0 + rsbne r6, r6, #0x0 + mov r0, r5, lsl #0xc + mov r1, r6, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B2E0C: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x4 + beq _020B2E40 + ldrh r0, [r4, #0x54] + ldr r2, _020B2E74 ; =0x020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B2E40: + ldrh r0, [r4, #0x56] + ands r0, r0, #0x2 + beq _020B2E5C + ldr r0, [r4, #0x48] + ldr r1, [r4, #0x4c] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B2E5C: + add r0, r4, #0x30 + bl FUN_020B2E78 + mov r0, #0x1 + bl FUN_020B2B08 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B2E70: .word 0x021CDD6C +_020B2E74: .word 0x020FFA38 + + arm_func_start FUN_020B2E78 +FUN_020B2E78: ; 0x020B2E78 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x1 + bne _020B309C + ldr r0, [r5, #0x0] + mov r2, #0x0 + ldrh r0, [r0, #0x2] + cmp r0, #0x0 + bls _020B2ED0 + ldr r3, _020B3174 ; =0x021CE8F4 + mov r4, r2 +_020B2EAC: + add r0, r3, r2, lsl #0x2 + str r4, [r0, #0x4] + ldr r0, [r5, #0x0] + add r2, r2, #0x1 + ldrh r1, [r0, #0x2] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0x10 + cmp r2, r1 + blo _020B2EAC +_020B2ED0: + ldr r0, _020B3178 ; =0x021CDD6C + mov r6, #0x1 + ldr r1, [r0, #0x0] + ldr r0, _020B3174 ; =0x021CE8F4 + str r6, [r0, #0x404] + ldr r0, [r1, #0x80] + cmp r0, #0x0 + beq _020B2FD8 + bl FUN_020B4948 +_020B2EF4: ; 0x020B2EF4 + str r0, [sp, #0x0] + mov r0, r6 + bl FUN_020B497C + ldr r0, _020B3178 ; =0x021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B2FC0 + mov r11, r7 +_020B2F28: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =0x021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =0x021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 +_020B2F64: ; 0x020B2F64 + cmp r0, #0x0 + ldr r0, _020B3178 ; =0x021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 +_020B2F78: ; 0x020B2F78 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + mov r2, r11 + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mov r0, #0x58 + mla r0, r8, r0, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2F28 +_020B2FC0: + mov r0, #0x0 + bl FUN_020B497C +_020B2FC8: ; 0x020B2FC8 + ldr r0, [sp, #0x0] + bl FUN_020B4958 + bl FUN_020B4968 + b _020B3088 +_020B2FD8: + ldr r2, [r5, #0x0] + mov r7, #0x0 + ldrh r0, [r2, #0x0] + cmp r0, #0x0 + bls _020B3088 + str r7, [sp, #0x4] + mov r11, #0x58 +_020B2FF4: + ldr r0, [r2, #0x4] + ldr r9, [r5, #0xc] + add r10, r0, r7, lsl #0x3 + ldrh r0, [r10, #0x6] + and r0, r0, #0xff00 + mov r0, r0, lsl #0x8 + mov r8, r0, lsr #0x10 + ldr r0, _020B3174 ; =0x021CE8F4 + strh r8, [r0, #0x0] + bl FUN_020B2B58 + ldr r0, _020B3178 ; =0x021CDD6C + ldrsh r4, [r10, #0x4] + ldr r0, [r0, #0x0] + ldrsh r10, [r10, #0x2] + bl FUN_020B4F88 +_020B3030: ; 0x020B3030 + cmp r0, #0x0 + ldr r0, _020B3178 ; =0x021CDD6C + rsbne r10, r10, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 +_020B3044: ; 0x020B3044 + cmp r0, #0x0 + rsbne r4, r4, #0x0 + ldr r2, [sp, #0x4] + mov r0, r10, lsl #0xc + mov r1, r4, lsl #0xc + bl FUN_020B2A08 + mla r0, r8, r11, r9 + bl FUN_020B3554 + mov r0, r6 + bl FUN_020B2B08 + ldr r2, [r5, #0x0] + add r0, r7, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r2, #0x0] + mov r7, r0, lsr #0x10 + cmp r7, r1 + blo _020B2FF4 +_020B3088: + ldr r0, _020B3174 ; =0x021CE8F4 + mov r1, #0x0 + str r1, [r0, #0x404] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B309C: + ldr r0, _020B3178 ; =0x021CDD6C + ldr r7, [r5, #0xc] + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + cmp r0, #0x0 + beq _020B312C + bl FUN_020B4948 + mov r6, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B3178 ; =0x021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 +_020B30D4: ; 0x020B30D4 + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + bls _020B3110 + mov r8, #0x28 +_020B30EC: + mla r0, r4, r8, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B30EC +_020B3110: + mov r0, #0x0 + bl FUN_020B497C + mov r0, r6 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020B312C: + ldr r0, [r5, #0x0] + mov r4, #0x0 + ldrh r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0xc + ldmlsia sp!, {r4-r11,pc} +_020B3144: ; 0x020B3144 + mov r6, #0x28 +_020B3148: + mla r0, r4, r6, r7 + bl FUN_020B3474 + ldr r1, [r5, #0x0] + add r0, r4, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r1, #0x0] + mov r4, r0, lsr #0x10 + cmp r4, r1 + blo _020B3148 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3174: .word 0x021CE8F4 +_020B3178: .word 0x021CDD6C + + arm_func_start FUN_020B317C +FUN_020B317C: ; 0x020B317C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B31EC ; =0x021CDD6C + mov r5, r0 + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x80] + cmp r1, #0x0 + beq _020B31E0 + bl FUN_020B4948 + mov r4, r0 + mov r0, #0x1 + bl FUN_020B497C + ldr r0, _020B31EC ; =0x021CDD6C + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x80] + bl FUN_020B4958 + mov r0, r5 + bl FUN_020B3554 +_020B31C4: ; 0x020B31C4 + mov r0, #0x0 + bl FUN_020B497C + mov r0, r4 + bl FUN_020B4958 + bl FUN_020B4968 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B31E0: + bl FUN_020B3554 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B31EC: .word 0x021CDD6C + + arm_func_start FUN_020B31F0 +FUN_020B31F0: ; 0x020B31F0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B3260 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020B3264 ; =0x021CDD6C + str r2, [r1, #0x0] + ldr r2, [r0, #0x0] + ldr r3, [r2, #0x7c] + cmp r3, #0x0 + beq _020B324C + ands r0, r3, #0x1 + ldrne r0, _020B3268 ; =0x021CDD68 + movne r1, #0x0 + strne r1, [r0, #0x0] + ands r0, r3, #0x2 + beq _020B323C + mov r0, #0x0 + str r0, [r2, #0x74] + bl FUN_020B4DA0 +_020B323C: + ldr r0, _020B3264 ; =0x021CDD6C + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x7c] +_020B324C: + ldr r0, _020B3264 ; =0x021CDD6C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B3260: .word 0x04000448 +_020B3264: .word 0x021CDD6C +_020B3268: .word 0x021CDD68 + + arm_func_start FUN_020B326C +FUN_020B326C: ; 0x020B326C + stmdb sp!, {r4-r8,lr} + ldr r5, _020B330C ; =0x021CDD60 + ldr r3, _020B3310 ; =0x021CDD6C + ldrh r6, [r5, #0x0] + ldr r2, _020B3314 ; =0x021CDD70 + mov r4, #0x0 + ldr r7, _020B3318 ; =0x0000FFFE + ldr r1, _020B331C ; =0x02106570 + str r0, [r3, #0x0] + str r4, [r2, #0x0] + strh r7, [r1, #0x0] + cmp r6, #0x0 + ble _020B32D0 + ldr r8, _020B3320 ; =0x021CE4F4 + mvn r7, #0x0 + mov r6, #0x10 +_020B32AC: + mov r0, r7 + mov r2, r6 + add r1, r8, #0x10 + bl MIi_CpuClearFast + ldrh r0, [r5, #0x0] + add r4, r4, #0x1 + add r8, r8, #0x20 + cmp r4, r0 + blt _020B32AC +_020B32D0: + ldr r4, _020B330C ; =0x021CDD60 + mov r0, #0x0 + ldr r3, _020B3324 ; =0x021CDD64 + ldr r1, _020B3328 ; =0x021CDDF4 + mov r2, #0x100 + strh r0, [r4, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r1, _020B332C ; =0x04000444 + mov r2, #0x0 + ldr r0, _020B3330 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bl FUN_020B4178 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B330C: .word 0x021CDD60 +_020B3310: .word 0x021CDD6C +_020B3314: .word 0x021CDD70 +_020B3318: .word 0x0000FFFE +_020B331C: .word 0x02106570 +_020B3320: .word 0x021CE4F4 +_020B3324: .word 0x021CDD64 +_020B3328: .word 0x021CDDF4 +_020B332C: .word 0x04000444 +_020B3330: .word 0x04000454 + + arm_func_start FUN_020B3334 +FUN_020B3334: ; 0x020B3334 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x48 + bl MIi_CpuClear16 + mov r0, #0x1 + str r0, [r4, #0x10] + mov r0, #0x3 + ldr r1, _020B3380 ; =FUN_020B3EE0 + str r0, [r4, #0x14] + ldr r0, _020B3384 ; =FUN_020B3E48 + str r1, [r4, #0x18] + ldr r1, _020B3388 ; =FUN_020B3C40 + str r0, [r4, #0x1c] + ldr r0, _020B338C ; =FUN_020B3B90 + str r1, [r4, #0x20] + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020B3380: .word FUN_020B3EE0 +_020B3384: .word FUN_020B3E48 +_020B3388: .word FUN_020B3C40 +_020B338C: .word FUN_020B3B90 + + arm_func_start FUN_020B3390 +FUN_020B3390: ; 0x020B3390 + ldr r2, [r0, #0x70] + str r2, [r1, #0x30] + str r1, [r0, #0x70] + bx lr + + arm_func_start FUN_020B33A0 +FUN_020B33A0: ; 0x020B33A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r4, r0 + bl FUN_020B504C + mov r7, #0x0 + str r7, [r4, #0x70] + str r7, [r4, #0x74] + str r7, [r4, #0x78] + str r7, [r4, #0x7c] + str r7, [r4, #0x80] + str r7, [r4, #0x84] + strh r7, [r4, #0x88] + strh r7, [r4, #0x8a] + str r7, [r4, #0x8c] + str r7, [r4, #0x90] + ldr r1, _020B3454 ; =0x021CDD70 + strh r7, [r4, #0x94] + ldr r2, _020B3458 ; =0x0000FFFE + ldr r0, _020B345C ; =0x02106570 + ldr r6, _020B3460 ; =0x021CE4F4 + str r7, [r1, #0x0] + strh r2, [r0, #0x0] + mvn r5, #0x0 + mov r4, #0x10 +_020B3400: + mov r0, r5 + mov r2, r4 + add r1, r6, #0x10 + bl MIi_CpuClearFast + add r7, r7, #0x1 + cmp r7, #0x20 + add r6, r6, #0x20 + blt _020B3400 + ldr ip, _020B3464 ; =0x021CDD60 + mov r0, #0x0 + ldr r3, _020B3468 ; =0x021CDD64 + ldr r1, _020B346C ; =0x021CDDF4 + mov r2, #0x100 + strh r0, [r12, #0x0] + strh r0, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B3470 ; =0x021CDD68 + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B3454: .word 0x021CDD70 +_020B3458: .word 0x0000FFFE +_020B345C: .word 0x02106570 +_020B3460: .word 0x021CE4F4 +_020B3464: .word 0x021CDD60 +_020B3468: .word 0x021CDD64 +_020B346C: .word 0x021CDDF4 +_020B3470: .word 0x021CDD68 + + arm_func_start FUN_020B3474 +FUN_020B3474: ; 0x020B3474 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020B3490: ; 0x020B3490 + ldr r4, [r5, #0x0] + bl FUN_020B2B58 + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x8 + beq _020B34E4 + ldr r0, _020B354C ; =0x021CDD6C + ldrsh r7, [r5, #0x1a] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x18] + bl FUN_020B4F88 +_020B34B8: ; 0x020B34B8 + cmp r0, #0x0 + ldr r0, _020B354C ; =0x021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 +_020B34CC: ; 0x020B34CC + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B34E4: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x4 + beq _020B3518 + ldrh r0, [r5, #0x1c] + ldr r2, _020B3550 ; =0x020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3518: + ldrh r0, [r5, #0x1e] + ands r0, r0, #0x2 + beq _020B3534 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3534: + mov r0, r4 + bl FUN_020B3554 + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B354C: .word 0x021CDD6C +_020B3550: .word 0x020FFA38 + + arm_func_start FUN_020B3554 +FUN_020B3554: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x4a] + ldr r4, [r5, #0x2c] + cmp r0, #0x0 + bne _020B35C0 + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B35B0 + ldr r1, _020B36B4 ; =0x02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =0x02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35B0: + mov r0, r4 + bl FUN_020B36C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B35C0: + bl FUN_020B2B58 + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x8 + beq _020B3610 + ldr r0, _020B36B8 ; =0x021CDD6C + ldrsh r7, [r5, #0x46] + ldr r0, [r0, #0x0] + ldrsh r6, [r5, #0x44] + bl FUN_020B4F88 +_020B35E4: ; 0x020B35E4 + cmp r0, #0x0 + ldr r0, _020B36B8 ; =0x021CDD6C + rsbne r6, r6, #0x0 + ldr r0, [r0, #0x0] + bl FUN_020B4F74 +_020B35F8: ; 0x020B35F8 + cmp r0, #0x0 + rsbne r7, r7, #0x0 + mov r0, r6, lsl #0xc + mov r1, r7, lsl #0xc + mov r2, #0x0 + bl FUN_020B2A08 +_020B3610: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x4 + beq _020B3644 + ldrh r0, [r5, #0x48] + ldr r2, _020B36BC ; =0x020FFA38 + mov r0, r0, asr #0x4 + mov r1, r0, lsl #0x1 + add r0, r1, #0x1 + mov r3, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + ldrsh r0, [r2, r3] + ldrsh r1, [r2, r1] + bl FUN_020B2794 +_020B3644: + ldrh r0, [r5, #0x4a] + ands r0, r0, #0x2 + beq _020B3660 + ldr r0, [r5, #0x3c] + ldr r1, [r5, #0x40] + mov r2, #0x1000 + bl FUN_020B28B4 +_020B3660: + ldr r2, [r5, #0x34] + mvn r0, #0x0 + cmp r2, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B369C + ldr r1, _020B36B4 ; =0x02106574 + mov r0, r4 + str r2, [r1, #0x0] + bl FUN_020B36C0 + ldr r0, _020B36B4 ; =0x02106574 + mvn r1, #0x0 + str r1, [r0, #0x0] + b _020B36A4 +_020B369C: + mov r0, r4 + bl FUN_020B36C0 +_020B36A4: + mov r0, #0x1 + bl FUN_020B2B08 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B36B4: .word 0x02106574 +_020B36B8: .word 0x021CDD6C +_020B36BC: .word 0x020FFA38 + + arm_func_start FUN_020B36C0 +FUN_020B36C0: ; 0x020B36C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r5, _020B3B54 ; =0x021CDD6C + mov r10, r0 + ldr r0, [r5, #0x0] + ldr r1, [r0, #0x7c] + str r0, [sp, #0x0] + ldr r9, [r0, #0x70] + ands r0, r1, #0x2 + beq _020B38EC + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3840 + ldr r0, _020B3B58 ; =0x021CDD68 + mov r1, #0x0 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3720 + ldr r2, _020B3B5C ; =0x02106570 + ldr r0, _020B3B60 ; =0x0000FFFE + ldrh r2, [r2, #0x0] + cmp r2, r0 + movne r0, #0x1 + bne _020B3724 +_020B3720: + mov r0, #0x0 +_020B3724: + cmp r0, #0x0 + beq _020B37AC + ldr r0, _020B3B64 ; =0x021CE8F4 + ldr r1, [r0, #0x404] + cmp r1, #0x0 + beq _020B3788 + ldrh r1, [r0, #0x0] + ldr r0, _020B3B68 ; =0x021CE8F8 + ldr r1, [r0, r1, lsl #0x2] + cmp r1, #0x0 + bne _020B37AC + bl FUN_020B4010 + ldr r0, _020B3B6C ; =0x021CDD70 + ldr r2, _020B3B70 ; =0x021CDDF4 + ldr r0, [r0, #0x0] + ldr r1, _020B3B64 ; =0x021CE8F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r3, [r2, r0] + ldr r4, _020B3B74 ; =0x021CE4F4 + ldrh r2, [r1, #0x0] + ldr r0, _020B3B68 ; =0x021CE8F8 + add r1, r4, r3, lsl #0x5 + str r1, [r0, r2, lsl #0x2] + b _020B37AC +_020B3788: + bl FUN_020B4010 + ldr r0, _020B3B6C ; =0x021CDD70 + ldr r1, _020B3B70 ; =0x021CDDF4 + ldr r0, [r0, #0x0] + ldr r2, _020B3B74 ; =0x021CE4F4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0xd + ldrh r0, [r1, r0] + add r1, r2, r0, lsl #0x5 +_020B37AC: + ldr r0, _020B3B58 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =0x021CDD70 + ldreq r3, _020B3B78 ; =0x021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r3 + beq _020B37FC + ldr r2, _020B3B6C ; =0x021CDD70 + mov r0, #0x18 + ldr r2, [r2, #0x0] + ldr r3, _020B3B7C ; =0x021CDF04 + mul r4, r2, r0 + ldr r2, _020B3B80 ; =0x021CDF08 + ldr r3, [r3, r4] + ldr r0, _020B3B84 ; =0x02106578 + ldr r2, [r2, r4] + str r3, [r0, #0x10] + str r2, [r0, #0x14] +_020B37FC: + bl FUN_020B4FAC + ldr r1, _020B3B88 ; =0x02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B3830 + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3830: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B3840: + ldr r0, _020B3B6C ; =0x021CDD70 + ldr r1, _020B3B8C ; =0x021CDD74 + ldr r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3B6C ; =0x021CDD70 + ldreq r2, _020B3B78 ; =0x021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r2 + beq _020B38A8 + ldr r1, _020B3B6C ; =0x021CDD70 + mov r0, #0x18 + ldr r1, [r1, #0x0] + ldr r2, _020B3B7C ; =0x021CDF04 + mul r3, r1, r0 + ldr r1, _020B3B80 ; =0x021CDF08 + ldr r2, [r2, r3] + ldr r0, _020B3B84 ; =0x02106578 + ldr r1, [r1, r3] + str r2, [r0, #0x10] + str r1, [r0, #0x14] +_020B38A8: + bl FUN_020B4FC4 + ldr r1, _020B3B88 ; =0x02106574 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B38DC + mov r0, r10 + bl FUN_020B4BF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38DC: + mov r0, r10 + bl FUN_020B4CDC + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020B38EC: + cmp r9, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r11,pc} +_020B38F8: ; 0x020B38F8 + ldr r4, _020B3B6C ; =0x021CDD70 + ldr fp, _020B3B78 ; =0x021CDEF4 + mov r7, #0x0 + mov r6, #0x1 +_020B3908: + ldr r0, [r9, #0x10] + cmp r0, #0x0 + beq _020B3B40 + ldr r0, [r9, #0x14] + cmp r0, #0x0 + beq _020B3A8C + ldr r8, [r5, #0x0] + mov r1, r9 + str r9, [r8, #0x74] + mov r0, r8 + bl FUN_020B4F9C + ldr r1, [r9, #0x28] + ldr r2, [r9, #0x2c] + mov r0, r8 + bl FUN_020B5034 + mov r0, r8 + bl FUN_020B4E0C + ldr r0, _020B3B58 ; =0x021CDD68 + mov r1, r7 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + bne _020B3978 + ldr r0, _020B3B5C ; =0x02106570 + ldrh r2, [r0, #0x0] + ldr r0, _020B3B60 ; =0x0000FFFE + cmp r2, r0 + movne r0, r6 + bne _020B397C +_020B3978: + mov r0, r7 +_020B397C: + cmp r0, #0x0 + beq _020B3A04 + ldr r0, _020B3B64 ; =0x021CE8F4 + ldr r0, [r0, #0x404] + cmp r0, #0x0 + beq _020B39E4 + ldr r0, _020B3B64 ; =0x021CE8F4 + ldrh r1, [r0, #0x0] + add r0, r0, r1, lsl #0x2 + ldr r1, [r0, #0x4] + cmp r1, #0x0 + bne _020B3A04 + bl FUN_020B4010 + ldr r0, _020B3B64 ; =0x021CE8F4 + ldr r2, [r4, #0x0] + ldrh r1, [r0, #0x0] + mov r0, r2, lsl #0x10 + mov r2, r0, lsr #0xd + ldr r0, _020B3B70 ; =0x021CDDF4 + ldrh r3, [r0, r2] + ldr r0, _020B3B64 ; =0x021CE8F4 + add r2, r0, r1, lsl #0x2 + ldr r0, _020B3B74 ; =0x021CE4F4 + add r1, r0, r3, lsl #0x5 + str r1, [r2, #0x4] + b _020B3A04 +_020B39E4: + bl FUN_020B4010 +_020B39E8: ; 0x020B39E8 + ldr r0, [r4, #0x0] + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0xd + ldr r0, _020B3B70 ; =0x021CDDF4 + ldrh r1, [r0, r1] + ldr r0, _020B3B74 ; =0x021CE4F4 + add r1, r0, r1, lsl #0x5 +_020B3A04: + ldr r0, _020B3B58 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r2, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r2, r0, r11 + beq _020B3A44 + ldr r2, [r4, #0x0] + mov r0, #0x18 + mla r8, r2, r0, r11 + ldr r0, _020B3B84 ; =0x02106578 + ldr r3, [r8, #0x10] + mov r2, r0 + str r3, [r2, #0x10] + ldr r3, [r8, #0x14] + str r3, [r2, #0x14] +_020B3A44: + bl FUN_020B4FAC + ldr r0, _020B3B88 ; =0x02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3A74 + mov r0, r10 + bl FUN_020B4BF4 + b _020B3A7C +_020B3A74: + mov r0, r10 + bl FUN_020B4CDC +_020B3A7C: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 + b _020B3B40 +_020B3A8C: + ldr r8, [r5, #0x0] + mov r1, r9 + mov r0, r8 + str r9, [r8, #0x74] + bl FUN_020B4F9C + mov r0, r8 + bl FUN_020B4E0C + ldr r2, [r4, #0x0] + ldr r1, _020B3B8C ; =0x021CDD74 + ldr r0, [sp, #0x0] + ldr r1, [r1, r2, lsl #0x2] + bl FUN_020B4FA4 + ldr r0, _020B3B58 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r1, [r4, #0x0] + moveq r0, #0x18 + mlaeq r0, r1, r0, r11 + beq _020B3AFC + ldr r1, [r4, #0x0] + mov r0, #0x18 + mla r3, r1, r0, r11 + ldr r0, _020B3B84 ; =0x02106578 + ldr r2, [r3, #0x10] + mov r1, r0 + str r2, [r1, #0x10] + ldr r2, [r3, #0x14] + str r2, [r1, #0x14] +_020B3AFC: + bl FUN_020B4FC4 + ldr r0, _020B3B88 ; =0x02106574 + ldr r1, [r0, #0x0] + mvn r0, #0x0 + cmp r1, r0 + movne r0, r6 + moveq r0, r7 + cmp r0, #0x0 + beq _020B3B2C + mov r0, r10 + bl FUN_020B4BF4 + b _020B3B34 +_020B3B2C: + mov r0, r10 + bl FUN_020B4CDC +_020B3B34: + ldr r0, [r5, #0x0] + str r7, [r0, #0x74] + bl FUN_020B4DA0 +_020B3B40: + ldr r9, [r9, #0x30] + cmp r9, #0x0 + bne _020B3908 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B3B54: .word 0x021CDD6C +_020B3B58: .word 0x021CDD68 +_020B3B5C: .word 0x02106570 +_020B3B60: .word 0x0000FFFE +_020B3B64: .word 0x021CE8F4 +_020B3B68: .word 0x021CE8F8 +_020B3B6C: .word 0x021CDD70 +_020B3B70: .word 0x021CDDF4 +_020B3B74: .word 0x021CE4F4 +_020B3B78: .word 0x021CDEF4 +_020B3B7C: .word 0x021CDF04 +_020B3B80: .word 0x021CDF08 +_020B3B84: .word 0x02106578 +_020B3B88: .word 0x02106574 +_020B3B8C: .word 0x021CDD74 + + arm_func_start FUN_020B3B90 +FUN_020B3B90: ; 0x020B3B90 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r0, _020B3C24 ; =0x021CDD6C + mov r12, r1 + ldr r0, [r0, #0x0] + mov r3, r2 + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x44] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} +_020B3BBC: ; 0x020B3BBC + ldr r2, _020B3C28 ; =0x021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3C2C ; =0x021CDD70 + ldreq r4, _020B3C30 ; =0x021CDEF4 + ldreq lr, [r2, #0x0] + moveq r2, #0x18 + mlaeq r6, lr, r2, r4 + beq _020B3C0C + ldr lr, _020B3C2C ; =0x021CDD70 + mov r2, #0x18 + ldr lr, [lr, #0x0] + ldr r4, _020B3C34 ; =0x021CDF04 + mul r5, lr, r2 + ldr r2, _020B3C38 ; =0x021CDF08 + ldr r4, [r4, r5] + ldr r6, _020B3C3C ; =0x02106578 + ldr r2, [r2, r5] + str r4, [r6, #0x10] + str r2, [r6, #0x14] +_020B3C0C: + str r6, [sp, #0x0] + ldr lr, [r1, #0x44] + mov r2, r12 + blx lr + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3C24: .word 0x021CDD6C +_020B3C28: .word 0x021CDD68 +_020B3C2C: .word 0x021CDD70 +_020B3C30: .word 0x021CDEF4 +_020B3C34: .word 0x021CDF04 +_020B3C38: .word 0x021CDF08 +_020B3C3C: .word 0x02106578 + + arm_func_start FUN_020B3C40 +FUN_020B3C40: ; 0x020B3C40 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + ldr r3, _020B3E2C ; =0x021CDD6C + add r4, r0, #0x38 + ldr r0, [r3, #0x0] + mov r6, r1 + mov r5, r2 + bl FUN_020B278C +_020B3C60: ; 0x020B3C60 + cmp r0, #0x0 + beq _020B3C90 + ldrh r1, [r4, #0x4] + and r1, r1, #0xf000 + mov r1, r1, lsl #0x4 + mov r1, r1, lsr #0x10 + bl FUN_020B10B0 + ldr r1, [r4, #0x4] + and r0, r0, #0xf + bic r1, r1, #0xf000 + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3C90: + ldr r0, _020B3E2C ; =0x021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + cmp r0, #0x0 + beq _020B3DA4 + ldr r0, [r1, #0x84] + ands r0, r0, #0x1 + beq _020B3CC8 + ldrh r0, [r1, #0x88] + ldr r1, [r4, #0x4] + bic r1, r1, #0xc00 + and r0, r0, #0x3 + orr r0, r1, r0, lsl #0xa + str r0, [r4, #0x4] +_020B3CC8: + ldr r0, _020B3E2C ; =0x021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x2 + beq _020B3CF4 + ldrh r0, [r1, #0x8a] + ldr r1, [r4, #0x4] + bic r1, r1, #0xf000 + and r0, r0, #0xf + orr r0, r1, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3CF4: + ldr r0, _020B3E2C ; =0x021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x10 + beq _020B3D2C + ldr r2, [r4, #0x4] + ldrh r0, [r1, #0x94] + mov r1, r2, lsl #0x10 + bic r2, r2, #0xf000 + add r0, r0, r1, lsr #0x1c + and r0, r0, #0xf + and r0, r0, #0xf + orr r0, r2, r0, lsl #0xc + str r0, [r4, #0x4] +_020B3D2C: + ldr r0, _020B3E2C ; =0x021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x4 + beq _020B3D60 + ldr r0, [r1, #0x90] + cmp r0, #0x0 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x1000 + strne r0, [r4, #0x0] + ldreq r0, [r4, #0x0] + biceq r0, r0, #0x1000 + streq r0, [r4, #0x0] +_020B3D60: + ldr r0, _020B3E2C ; =0x021CDD6C + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x84] + ands r0, r0, #0x8 + beq _020B3DA4 + ldr r0, [r4, #0x0] + ldrh r2, [r4, #0x4] + ldr r1, [r1, #0x8c] + bic r0, r0, #0xc00 + orr r0, r0, r1, lsl #0xa + str r0, [r4, #0x0] + ldrh r0, [r4, #0x4] + and r1, r2, #0xf000 + mov r1, r1, asr #0xc + bic r0, r0, #0xf000 + orr r0, r0, r1, lsl #0xc + strh r0, [r4, #0x4] +_020B3DA4: + ldr r0, _020B3E2C ; =0x021CDD6C + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r2, [r1, #0x40] + cmp r2, #0x0 + addeq sp, sp, #0x8 + ldmeqia sp!, {r4-r6,pc} +_020B3DC0: ; 0x020B3DC0 + ldr r2, _020B3E30 ; =0x021CDD68 + ldr r2, [r2, #0x0] + cmp r2, #0x0 + ldreq r2, _020B3E34 ; =0x021CDD70 + ldreq r4, _020B3E38 ; =0x021CDEF4 + ldreq r3, [r2, #0x0] + moveq r2, #0x18 + mlaeq r4, r3, r2, r4 + beq _020B3E10 + ldr r3, _020B3E34 ; =0x021CDD70 + mov r2, #0x18 + ldr r4, [r3, #0x0] + ldr r3, _020B3E3C ; =0x021CDF04 + mul r12, r4, r2 + ldr r2, _020B3E40 ; =0x021CDF08 + ldr r3, [r3, r12] + ldr r4, _020B3E44 ; =0x02106578 + ldr r2, [r2, r12] + str r3, [r4, #0x10] + str r2, [r4, #0x14] +_020B3E10: + str r4, [sp, #0x0] + ldr r4, [r1, #0x40] + mov r2, r6 + mov r3, r5 + blx r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3E2C: .word 0x021CDD6C +_020B3E30: .word 0x021CDD68 +_020B3E34: .word 0x021CDD70 +_020B3E38: .word 0x021CDEF4 +_020B3E3C: .word 0x021CDF04 +_020B3E40: .word 0x021CDF08 +_020B3E44: .word 0x02106578 + + arm_func_start FUN_020B3E48 +FUN_020B3E48: ; 0x020B3E48 + stmdb sp!, {r4,lr} + ldr r0, _020B3EC4 ; =0x021CDD6C + mov r2, r1 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x74] + ldr r3, [r1, #0x3c] + cmp r3, #0x0 + ldmeqia sp!, {r4,pc} +_020B3E68: ; 0x020B3E68 + ldr r3, _020B3EC8 ; =0x021CDD68 + ldr r3, [r3, #0x0] + cmp r3, #0x0 + ldreq r3, _020B3ECC ; =0x021CDD70 + ldreq lr, _020B3ED0 ; =0x021CDEF4 + ldreq r12, [r3, #0x0] + moveq r3, #0x18 + mlaeq r3, r12, r3, lr + beq _020B3EB8 + ldr ip, _020B3ECC ; =0x021CDD70 + mov r3, #0x18 + ldr r12, [r12, #0x0] + ldr lr, _020B3ED4 ; =0x021CDF04 + mul r4, r12, r3 + ldr ip, _020B3ED8 ; =0x021CDF08 + ldr lr, [lr, r4] + ldr r3, _020B3EDC ; =0x02106578 + ldr r12, [r12, r4] + str lr, [r3, #0x10] + str r12, [r3, #0x14] +_020B3EB8: + ldr r12, [r1, #0x3c] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020B3EC4: .word 0x021CDD6C +_020B3EC8: .word 0x021CDD68 +_020B3ECC: .word 0x021CDD70 +_020B3ED0: .word 0x021CDEF4 +_020B3ED4: .word 0x021CDF04 +_020B3ED8: .word 0x021CDF08 +_020B3EDC: .word 0x02106578 + + arm_func_start FUN_020B3EE0 +FUN_020B3EE0: ; 0x020B3EE0 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B3FF4 ; =0x021CDD6C + mov r6, r0 + ldr r0, [r2, #0x0] + mov r5, r1 + ldr r4, [r0, #0x74] + ldr r0, [r4, #0x34] + cmp r0, #0x0 + beq _020B3F7C + ldr r0, _020B3FF8 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =0x021CDD70 + ldreq r1, _020B4000 ; =0x021CDEF4 + ldreq r2, [r0, #0x0] + moveq r0, #0x18 + mlaeq r1, r2, r0, r1 + beq _020B3F54 + ldr r1, _020B3FFC ; =0x021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =0x021CDF04 + mul r3, r2, r0 + ldr r0, _020B4008 ; =0x021CDF08 + ldr r2, [r1, r3] + ldr r1, _020B400C ; =0x02106578 + ldr r0, [r0, r3] + str r2, [r1, #0x10] + str r0, [r1, #0x14] +_020B3F54: + ldr r3, [r4, #0x34] + mov r0, r5 + mov r2, r4 + blx r3 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r6, #0x30] + ldmeqia sp!, {r4-r6,pc} +_020B3F74: ; 0x020B3F74 + mov r0, #0x1 + str r0, [r6, #0x30] +_020B3F7C: + ldr r0, [r4, #0x38] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020B3F88: ; 0x020B3F88 + ldr r0, _020B3FF8 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldreq r0, _020B3FFC ; =0x021CDD70 + ldreq r2, _020B4000 ; =0x021CDEF4 + ldreq r1, [r0, #0x0] + moveq r0, #0x18 + mlaeq r3, r1, r0, r2 + beq _020B3FD8 + ldr r1, _020B3FFC ; =0x021CDD70 + mov r0, #0x18 + ldr r2, [r1, #0x0] + ldr r1, _020B4004 ; =0x021CDF04 + mul r6, r2, r0 + ldr r0, _020B4008 ; =0x021CDF08 + ldr r1, [r1, r6] + ldr r3, _020B400C ; =0x02106578 + ldr r0, [r0, r6] + str r1, [r3, #0x10] + str r0, [r3, #0x14] +_020B3FD8: + ldr r0, _020B3FF4 ; =0x021CDD6C + ldr r6, [r4, #0x38] + ldr r0, [r0, #0x0] + mov r1, r4 + mov r2, r5 + blx r6 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B3FF4: .word 0x021CDD6C +_020B3FF8: .word 0x021CDD68 +_020B3FFC: .word 0x021CDD70 +_020B4000: .word 0x021CDEF4 +_020B4004: .word 0x021CDF04 +_020B4008: .word 0x021CDF08 +_020B400C: .word 0x02106578 + + arm_func_start FUN_020B4010 +FUN_020B4010: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4154 ; =0x021CDD70 + ldr r1, _020B4158 ; =0x021CDDF4 + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r0, lsl #0x10 + add r3, r1, r0, lsr #0xd + ldrh r0, [r3, #0x4] + cmp r0, #0x1 + beq _020B4044 + cmp r0, #0x2 + movne r2, #0x0 +_020B4044: + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B4050: ; 0x020B4050 + ldr r0, _020B415C ; =0x021CDD60 + mov r2, #0x10 + ldrh r4, [r0, #0x0] + cmp r4, #0x1f + addcc r1, r4, #0x1 + strcch r1, [r0, #0x0] + ldr r0, _020B4160 ; =0x021CE4F4 + ldrh r5, [r3, #0x2] + add r0, r0, r4, lsl #0x5 + add r1, r0, #0x10 + mvn r0, #0x0 + strh r4, [r3, #0x0] + bl MIi_CpuClearFast + ldr r0, _020B4154 ; =0x021CDD70 + ldr r1, _020B4164 ; =0x021CDD68 + ldr r0, [r0, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsl #0x10 + cmp r2, #0x0 + ldr r3, _020B4158 ; =0x021CDDF4 + mov r1, r1, lsr #0xd + ldrh r1, [r3, r1] + ldr r3, _020B4160 ; =0x021CE4F4 + moveq r2, #0x18 + add r1, r3, r1, lsl #0x5 + ldreq r3, _020B4168 ; =0x021CE1F4 + mlaeq r12, r0, r2, r3 + beq _020B40E4 + mov r2, #0x18 + mul r3, r0, r2 + ldr r2, _020B416C ; =0x021CDF04 + ldr r0, _020B4170 ; =0x021CDF08 + ldr r2, [r2, r3] + ldr ip, _020B4174 ; =0x02106578 + ldr r0, [r0, r3] + str r2, [r12, #0x10] + str r0, [r12, #0x14] +_020B40E4: + ldr r2, [r12, #0x0] + ldr r0, _020B4154 ; =0x021CDD70 + str r2, [r1, #0x0] + ldr r2, [r12, #0x4] + str r2, [r1, #0x4] + ldr r2, [r12, #0x8] + str r2, [r1, #0x8] + ldr r2, [r12, #0xc] + str r2, [r1, #0xc] + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x10 + movs lr, r0, lsr #0x10 + addmi sp, sp, #0x4 + ldmmiia sp!, {r4-r5,pc} +_020B411C: ; 0x020B411C + ldr r3, _020B4158 ; =0x021CDDF4 + mov r0, #0x3 +_020B4124: + add r2, r3, lr, lsl #0x3 + ldrh r1, [r2, #0x2] + mov r12, lr, lsl #0x3 + cmp r5, r1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} +_020B413C: ; 0x020B413C + strh r0, [r2, #0x4] + strh r4, [r3, r12] + subs lr, lr, #0x1 + bpl _020B4124 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4154: .word 0x021CDD70 +_020B4158: .word 0x021CDDF4 +_020B415C: .word 0x021CDD60 +_020B4160: .word 0x021CE4F4 +_020B4164: .word 0x021CDD68 +_020B4168: .word 0x021CE1F4 +_020B416C: .word 0x021CDF04 +_020B4170: .word 0x021CDF08 +_020B4174: .word 0x02106578 + + arm_func_start FUN_020B4178 +FUN_020B4178: ; 0x020B4178 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r0, _020B4220 ; =0x021CDD68 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020B41B8 + ldr r1, _020B4224 ; =0x021CDD70 + mov r0, #0x18 + ldr r12, [r1, #0x0] + ldr r1, _020B4228 ; =0x021CDF04 + mul r3, r12, r0 + mov r2, #0x0 + ldr r0, _020B422C ; =0x021CDF08 + str r2, [r1, r3] + str r2, [r0, r3] + b _020B420C +_020B41B8: + ldr r0, _020B4224 ; =0x021CDD70 + mov lr, #0x18 + ldr r1, [r0, #0x0] + ldr r4, _020B4230 ; =0x021CDEF4 + mul r3, r1, lr + mov r2, #0x1000 + str r2, [r4, r3] + add r5, r4, r3 + mov r1, #0x0 + str r1, [r5, #0x4] + str r1, [r5, #0x8] + str r2, [r5, #0xc] + str r1, [r5, #0x10] + str r1, [r5, #0x14] + ldr r12, [r0, #0x0] + ldr r4, _020B4234 ; =0x021CE1F4 + ldmia r5!, {r0-r3} + mla lr, r12, lr, r4 + stmia lr!, {r0-r3} + ldmia r5, {r0-r1} + stmia lr, {r0-r1} +_020B420C: + ldr r0, _020B4238 ; =0x021CDD74 + mov r1, #0x0 + str r1, [r0, r12, lsl #0x2] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4220: .word 0x021CDD68 +_020B4224: .word 0x021CDD70 +_020B4228: .word 0x021CDF04 +_020B422C: .word 0x021CDF08 +_020B4230: .word 0x021CDEF4 +_020B4234: .word 0x021CE1F4 +_020B4238: .word 0x021CDD74 + + arm_func_start FUN_020B423C +FUN_020B423C: ; 0x020B423C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + ldr r4, [r0, #0x4] + ldr r3, [r1, #0x8] + mov r12, r2 + smull r6, r5, r4, r3 + ldr r4, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r6, r5, r4, r3 + mov r3, r6, lsr #0xc + addeq r2, sp, #0x0 + orr r3, r3, r5, lsl #0x14 + str r3, [r2, #0x0] + ldr r4, [r0, #0x4] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x0] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + add lr, sp, #0x0 + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x4] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + cmp r2, lr + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x8] + ldr r4, [r0, #0xc] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x8] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x4] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0x8] + ldr r5, [r0, #0x10] + smull r7, r6, r4, r3 + ldr r3, [r1, #0x0] + ldr r4, [r1, #0x10] + smlal r7, r6, r5, r3 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + add r3, r4, r3 + str r3, [r2, #0x10] + ldr r4, [r0, #0x14] + ldr r3, [r1, #0xc] + ldr r5, [r0, #0x10] + ldr r0, [r1, #0x4] + smull r6, r3, r4, r3 + smlal r6, r3, r5, r0 + mov r0, r6, lsr #0xc + ldr r1, [r1, #0x14] + orr r0, r0, r3, lsl #0x14 + add r0, r1, r0 + str r0, [r2, #0x14] + ldmeqia lr!, {r0-r3} + stmeqia r12!, {r0-r3} + ldmeqia lr, {r0-r1} + stmeqia r12, {r0-r1} + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B4358 +FUN_020B4358: ; 0x020B4358 + stmdb sp!, {r4,lr} + ldr r2, _020B43A0 ; =0x021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r4, r0, r1, r2 + mov r0, r4 + bl FUN_020B10CC +_020B4374: ; 0x020B4374 + mov r0, #0x0 + str r0, [r4, #0xc] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + str r0, [r4, #0x1c] + str r0, [r4, #0x20] + str r0, [r4, #0x24] + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + .balign 4 +_020B43A0: .word 0x021CED04 + + arm_func_start FUN_020B43A4 +FUN_020B43A4: ; 0x020B43A4 + ldr r1, _020B43F8 ; =0x021CED00 + mov r0, #0x0 + ldr r3, [r1, #0x0] + cmp r3, #0x0 + bls _020B43F0 + ldr r1, _020B43FC ; =0x021CED04 + ldr r2, [r1, #0x0] + mov r12, r2 +_020B43C4: + ldr r1, [r12, #0x1c] + cmp r1, #0x1 + movne r1, #0x30 + mlane r1, r0, r1, r2 + movne r2, #0x1 + strne r2, [r1, #0x1c] + bxne lr + add r0, r0, #0x1 + cmp r0, r3 + add r12, r12, #0x30 + blo _020B43C4 +_020B43F0: + mvn r0, #0x0 + bx lr + .balign 4 +_020B43F8: .word 0x021CED00 +_020B43FC: .word 0x021CED04 + + arm_func_start FUN_020B4400 +FUN_020B4400: ; 0x020B4400 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r1 + mov r4, r2 + bl FUN_020B469C + mvn r1, #0x0 + str r1, [r0, #0x24] + str r5, [r0, #0x28] + str r4, [r0, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B442C +FUN_020B442C: ; 0x020B442C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r0, _020B4558 ; =0x021CED00 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addls sp, sp, #0x14 + ldmlsia sp!, {r4-r11,pc} +_020B4450: ; 0x020B4450 + ldr r0, [sp, #0x0] + mov r5, #0x1 + str r0, [sp, #0x4] + mov r11, r0 + str r0, [sp, #0x8] + str r0, [sp, #0xc] +_020B4468: + ldr r0, _020B455C ; =0x021CED04 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x4] + add r8, r1, r0 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + beq _020B4528 + ldr r9, [sp, #0x8] + mov r0, r9 + cmp r0, #0x3 + bge _020B4520 + add r4, r8, #0x24 +_020B4498: + mov r6, r5, lsl r9 + mov r1, r11 + ldr r0, [r8, #0x24] + ands r0, r0, r6 + beq _020B44B8 + ldr r0, [r8, #0x20] + ands r0, r0, r6 + movne r1, r5 +_020B44B8: + cmp r1, #0x0 + beq _020B4514 + ldr r0, _020B4560 ; =0x020FF8C4 + cmp r9, #0x0 + ldr r7, [r0, r9, lsl #0x2] + ldreq r10, [r8, #0x14] + mov r0, r8 + mov r1, r9 + ldrne r10, [r8, #0x10] + bl FUN_020B10BC + mov r1, r0 + mov r0, r7 + ldr r7, _020B4564 ; =0x021CECFC + ldr r2, [r8, #0x28] + ldr r3, [r8, #0x2c] + ldr r7, [r7, #0x0] + add r2, r10, r2 + blx r7 + cmp r0, #0x0 + ldrne r1, [r4, #0x0] + mvnne r0, r6 + andne r0, r1, r0 + strne r0, [r4, #0x0] +_020B4514: + add r9, r9, #0x1 + cmp r9, #0x3 + blt _020B4498 +_020B4520: + ldr r0, [sp, #0xc] + str r0, [r8, #0x20] +_020B4528: + ldr r0, _020B4558 ; =0x021CED00 + ldr r1, [r0, #0x0] + ldr r0, [sp, #0x0] + add r0, r0, #0x1 + str r0, [sp, #0x0] + cmp r0, r1 + ldr r0, [sp, #0x4] + add r0, r0, #0x30 + str r0, [sp, #0x4] + blo _020B4468 + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B4558: .word 0x021CED00 +_020B455C: .word 0x021CED04 +_020B4560: .word 0x020FF8C4 +_020B4564: .word 0x021CECFC + + arm_func_start FUN_020B4568 +FUN_020B4568: ; 0x020B4568 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B45E4 ; =0x021CECFC + movs r6, r1 + ldr r1, _020B45E8 ; =0x021CED00 + ldr r3, _020B45EC ; =0x021CED04 + mov r7, r0 + str r2, [r12, #0x0] + mov r5, #0x0 + addeq sp, sp, #0x4 + str r7, [r3, #0x0] + str r6, [r1, #0x0] + ldmeqia sp!, {r4-r7,pc} +_020B459C: ; 0x020B459C + mov r4, r5 +_020B45A0: + mov r0, r7 + bl FUN_020B10CC + str r4, [r7, #0xc] + str r4, [r7, #0x10] + str r4, [r7, #0x14] + str r4, [r7, #0x18] + str r4, [r7, #0x1c] + str r4, [r7, #0x20] + str r4, [r7, #0x24] + str r4, [r7, #0x28] + add r5, r5, #0x1 + str r4, [r7, #0x2c] + cmp r5, r6 + add r7, r7, #0x30 + blo _020B45A0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B45E4: .word 0x021CECFC +_020B45E8: .word 0x021CED00 +_020B45EC: .word 0x021CED04 + + arm_func_start FUN_020B45F0 +FUN_020B45F0: ; 0x020B45F0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020B4698 ; =0x021CED04 + mov r4, #0x30 + ldr r12, [r12, #0x0] + mov r7, r1 + mla r4, r0, r4, r12 + mov r0, r4 + mov r6, r2 + mov r5, r3 + bl FUN_020B10CC +_020B461C: ; 0x020B461C + mvn r0, #0x0 + cmp r7, r0 + beq _020B4638 + mov r0, r4 + mov r2, r7 + mov r1, #0x0 + bl FUN_020B10C4 +_020B4638: + mvn r0, #0x0 + cmp r6, r0 + beq _020B4654 + mov r0, r4 + mov r2, r6 + mov r1, #0x1 + bl FUN_020B10C4 +_020B4654: + mvn r0, #0x0 + cmp r5, r0 + beq _020B4670 + mov r0, r4 + mov r2, r5 + mov r1, #0x2 + bl FUN_020B10C4 +_020B4670: + ldr r1, [sp, #0x18] + ldr r0, [sp, #0x1c] + str r1, [r4, #0xc] + ldr r1, [sp, #0x20] + str r0, [r4, #0x10] + ldr r0, [sp, #0x24] + str r1, [r4, #0x14] + str r0, [r4, #0x18] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4698: .word 0x021CED04 + + arm_func_start FUN_020B469C +FUN_020B469C: ; 0x020B469C + ldr r2, _020B46B0 ; =0x021CED04 + mov r1, #0x30 + ldr r2, [r2, #0x0] + mla r0, r1, r0, r2 + bx lr + .balign 4 +_020B46B0: .word 0x021CED04 + + arm_func_start FUN_020B46B4 +FUN_020B46B4: ; 0x020B46B4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x1c + add r12, sp, #0x4 + mov r5, r1 + mov r4, r2 + mov r7, r3 + mov r6, r0 + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + mov r0, r7 + str r12, [sp, #0x0] + bl FUN_020B498C + ldr r2, [r7, #0x0] + and r1, r2, #0x300 + cmp r1, #0x100 + beq _020B4708 + cmp r1, #0x300 + beq _020B4708 + and r0, r2, #0x30000000 + orr r1, r1, r0 +_020B4708: + cmp r1, #0x300 + bne _020B478C + ldr r0, _020B4914 ; =0xC000C000 + ldr r1, _020B4918 ; =0x021CED08 + and r0, r2, r0 + and r2, r0, #0xc0000000 + mov r12, r2, lsr #0x1e + and r0, r0, #0xc000 + mov lr, r0, asr #0xe + ldr r3, _020B491C ; =0x020FF8AC + ldr r0, [r1, #0x0] + ldr r2, _020B4920 ; =0x020FF894 + cmp r0, #0x0 + ldrne r0, _020B4924 ; =0x021CED10 + mov r12, r12, lsl #0x1 + add r1, r2, lr, lsl #0x3 + add r3, r3, lr, lsl #0x3 + ldrh r2, [r12, r3] + ldrh r1, [r12, r1] + ldrne r0, [r0, #0x0] + mov r2, r2, asr #0x1 + addne r3, r0, r4, lsl #0xc + mov r1, r1, asr #0x1 + add r0, r5, r1 + add r2, r6, r2 + ldr r1, _020B4928 ; =0x04000470 + mov r2, r2, lsl #0xc + str r2, [r1, #0x0] + mov r0, r0, lsl #0xc + moveq r3, r4, lsl #0xc + str r0, [r1, #0x0] + str r3, [r1, #0x0] + b _020B47C0 +_020B478C: + ldr r0, _020B4918 ; =0x021CED08 + ldr r1, _020B4928 ; =0x04000470 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, _020B4924 ; =0x021CED10 + ldrne r0, [r0, #0x0] + addne r2, r0, r4, lsl #0xc + mov r0, r6, lsl #0xc + str r0, [r1, #0x0] + mov r0, r5, lsl #0xc + moveq r2, r4, lsl #0xc + str r0, [r1, #0x0] + str r2, [r1, #0x0] +_020B47C0: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, _020B492C ; =0x0400046C + mov r0, r0, lsl #0xc + str r0, [r2, #0x0] + mov r0, r1, lsl #0xc + str r0, [r2, #0x0] + mov r1, #0x1000 + str r1, [r2, #0x0] + ldr r0, _020B4930 ; =0x04000500 + mov r1, #0x1 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + ldr r1, [sp, #0x10] + mov r0, r0, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r2, r2, r0, lsl #0x10 + ldr r1, _020B4934 ; =0x04000488 + ldr r0, _020B4938 ; =0x04000490 + str r2, [r1, #0x0] + mov r2, #0x10000 + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r3, r4, r2, lsl #0x10 + ldr r2, _020B493C ; =0x00010040 + str r3, [r1, #0x0] + str r2, [r0, #0x0] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x40 + str r2, [r0, #0x0] + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + mov r2, r2, lsl #0x8 + mov r3, r3, lsl #0x8 + mov r2, r2, asr #0x10 + mov r3, r3, asr #0x10 + mov r2, r2, lsl #0x10 + mov r3, r3, lsl #0x10 + mov r4, r2, lsr #0x10 + mov r2, r3, lsr #0x10 + orr r2, r4, r2, lsl #0x10 + str r2, [r1, #0x0] + mov r2, #0x0 + str r2, [r0, #0x0] + ldr r1, _020B4940 ; =0x04000504 + ldr r0, _020B4918 ; =0x021CED08 + str r2, [r1, #0x0] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r4-r7,pc} +_020B48F4: ; 0x020B48F4 + ldr r1, _020B4924 ; =0x021CED10 + ldr r0, _020B4944 ; =0x02106590 + ldr r2, [r1, #0x0] + ldr r0, [r0, #0x0] + add r0, r2, r0 + str r0, [r1, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B4914: .word 0xC000C000 +_020B4918: .word 0x021CED08 +_020B491C: .word 0x020FF8AC +_020B4920: .word 0x020FF894 +_020B4924: .word 0x021CED10 +_020B4928: .word 0x04000470 +_020B492C: .word 0x0400046C +_020B4930: .word 0x04000500 +_020B4934: .word 0x04000488 +_020B4938: .word 0x04000490 +_020B493C: .word 0x00010040 +_020B4940: .word 0x04000504 +_020B4944: .word 0x02106590 + + arm_func_start FUN_020B4948 +FUN_020B4948: + ldr r0, _020B4954 ; =0x02106590 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020B4954: .word 0x02106590 + + arm_func_start FUN_020B4958 +FUN_020B4958: + ldr r1, _020B4964 ; =0x02106590 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4964: .word 0x02106590 + + arm_func_start FUN_020B4968 +FUN_020B4968: ; 0x020B4968 + ldr r0, _020B4978 ; =0x021CED10 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4978: .word 0x021CED10 + + arm_func_start FUN_020B497C +FUN_020B497C: + ldr r1, _020B4988 ; =0x021CED08 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020B4988: .word 0x021CED08 + + arm_func_start FUN_020B498C +FUN_020B498C: ; 0x020B498C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + mov r6, r0 + ldr r4, [r6, #0x0] + ldr r0, _020B4BCC ; =0xC000C000 + ldr r5, [r6, #0x4] + and r4, r4, r0 + and r0, r4, #0xc0000000 + and r4, r4, #0xc000 + mov lr, r0, lsr #0x1e + ldr r0, _020B4BD0 ; =0x020FF8AC + mov r12, r4, asr #0xe + ldr r8, _020B4BD4 ; =0x020FF894 + mov r4, lr, lsl #0x1 + add r0, r0, r12, lsl #0x3 + ldrh r9, [r4, r0] + ldr r0, [sp, #0x28] + mov r5, r5, lsl #0x16 + mov r5, r5, lsr #0x16 + mov r7, r5, lsl #0x10 + str r9, [r0, #0x10] + add r5, r8, r12, lsl #0x3 + ldrh r8, [r4, r5] + mov r5, r1 + mov r4, r3 + str r8, [r0, #0x14] + ldr r1, [r5, #0x14] + mov r7, r7, lsr #0x10 + cmp r1, #0x0 + bne _020B4A74 + ldr r1, [r5, #0x8] + mov r2, r2, lsr #0x3 + orr r1, r2, r1, lsl #0x1a + ldr r2, [r5, #0x0] + orr r1, r1, #0x40000000 + ldr r3, [r5, #0x4] + orr r1, r1, r2, lsl #0x14 + orr r2, r1, r3, lsl #0x17 + ldr r8, [r5, #0x10] + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r8, lsl #0x1d + str r2, [r1, #0x0] + ldr r1, [r5, #0x8] + ldr r2, [r5, #0x0] + cmp r1, #0x4 + moveq r1, r7, lsl #0xf + moveq r7, r1, lsr #0x10 + ldr r1, _020B4BDC ; =0x020FF8D8 + ldr r1, [r1, r2, lsl #0x2] + sub r1, r1, #0x1 + and r1, r7, r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x0] + ldr r1, [r5, #0x0] + mov r1, r7, asr r1 + mov r1, r1, lsl #0xf + str r1, [r0, #0x4] + b _020B4AE0 +_020B4A74: + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + mov r12, r12, lsl #0x10 + add r1, r1, #0x5 + ldr r3, [r5, #0x8] + mov lr, lr, lsl #0x10 + ldr sb, _020B4BE0 ; =0x020FF8F8 + mov r12, r12, lsr #0x10 + ldr r8, _020B4BE4 ; =0x020FF928 + add r1, r2, r7, lsl r1 + mov r2, r3, lsl #0x1a + orr r3, r2, r1, lsr #0x3 + mov r7, lr, lsr #0x10 + add r2, r9, r12, lsl #0x4 + add r1, r8, r12, lsl #0x4 + ldr r2, [r2, r7, lsl #0x2] + orr r3, r3, #0x40000000 + ldr r1, [r1, r7, lsl #0x2] + orr r2, r3, r2, lsl #0x14 + ldr r3, [r5, #0x10] + orr r2, r2, r1, lsl #0x17 + ldr r1, _020B4BD8 ; =0x040004A8 + orr r2, r2, r3, lsl #0x1d + str r2, [r1, #0x0] + mov r1, #0x0 + str r1, [r0, #0x0] + str r1, [r0, #0x4] +_020B4AE0: + ldr r2, [r0, #0x0] + ldr r1, [r0, #0x10] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0x8] + ldr r2, [r0, #0x4] + ldr r1, [r0, #0x14] + add r1, r2, r1, lsl #0xc + str r1, [r0, #0xc] + ldr r1, [r6, #0x0] + mov r2, r1, lsl #0x2 + mov r1, r1, lsl #0x3 + movs r3, r1, lsr #0x1f + mov r12, r2, lsr #0x1f + ldrne r2, [r0, #0x0] + ldrne r1, [r0, #0x8] + strne r1, [r0, #0x0] + strne r2, [r0, #0x8] + cmp r12, #0x0 + ldrne r2, [r0, #0x4] + ldrne r1, [r0, #0xc] + strne r1, [r0, #0x4] + ldr r1, _020B4BE8 ; =0x021CED0C + strne r2, [r0, #0xc] + ldr r7, [r1, #0x0] + cmp r7, #0x0 + beq _020B4B60 + str r3, [sp, #0x0] + add r1, r0, #0x4 + add r2, r0, #0x8 + add r3, r0, #0xc + str r12, [sp, #0x4] + blx r7 +_020B4B60: + ldr r0, [r6, #0x4] + ldr r1, [r6, #0x0] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x1c + mov r3, r1, lsl #0x12 + ldr r1, [r5, #0xc] + mov r0, r0, lsl #0x10 + ldr r2, _020B4BEC ; =0x020FF8D0 + mov r3, r3, lsr #0x1f + cmp r1, #0x0 + mov r0, r0, lsr #0x10 + ldr r1, [r2, r3, lsl #0x2] + movne r0, r0, lsl #0x9 + bne _020B4BA4 + cmp r1, #0x4 + moveq r0, #0x0 + movne r0, r0, lsl #0x5 +_020B4BA4: + cmp r1, #0x2 + moveq r2, #0x1 + movne r2, #0x0 + add r1, r4, r0 + rsb r0, r2, #0x4 + mov r1, r1, lsr r0 + ldr r0, _020B4BF0 ; =0x040004AC + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B4BCC: .word 0xC000C000 +_020B4BD0: .word 0x020FF8AC +_020B4BD4: .word 0x020FF894 +_020B4BD8: .word 0x040004A8 +_020B4BDC: .word 0x020FF8D8 +_020B4BE0: .word 0x020FF8F8 +_020B4BE4: .word 0x020FF928 +_020B4BE8: .word 0x021CED0C +_020B4BEC: .word 0x020FF8D0 +_020B4BF0: .word 0x040004AC + + arm_func_start FUN_020B4BF4 +FUN_020B4BF4: ; 0x020B4BF4 + stmdb sp!, {r4-r6,lr} + ldr r2, _020B4CD8 ; =0x021CED14 + mov r6, r0 + ldr r3, [r2, #0x0] + mov r4, r1 + ldr r5, [r3, #0x0] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020B4C18: ; 0x020B4C18 + mov r0, #0x1 + str r0, [r3, #0x30] + ldr r3, [r5, #0x18] + cmp r3, #0x0 + beq _020B4C38 + ldr r0, [r2, #0x0] + mov r1, r6 + blx r3 +_020B4C38: + ldr r0, _020B4CD8 ; =0x021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4CB8 + mvn r0, #0x0 + cmp r4, r0 + beq _020B4C7C + mov r0, r4 + ldr r4, [r5, #0x14] + bl FUN_020B469C + mov r3, #0x1 + mvn r1, r3, lsl r4 + ldr r2, [r0, #0x20] + and r1, r2, r1 + orr r1, r1, r3, lsl r4 + str r1, [r0, #0x20] +_020B4C7C: + ldr r0, [r5, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4CB8 +_020B4C8C: + b _020B4C9C +_020B4C90: + b _020B4CAC +_020B4C94: + b _020B4CAC +_020B4C98: + b _020B4CB8 +_020B4C9C: + mov r0, r5 + mov r1, r6 + bl FUN_020B5090 + b _020B4CB8 +_020B4CAC: + mov r0, r5 + mov r1, r6 + bl FUN_020B53B4 +_020B4CB8: + ldr r2, [r5, #0x1c] + cmp r2, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020B4CC4: ; 0x020B4CC4 + ldr r0, _020B4CD8 ; =0x021CED14 + mov r1, r6 + ldr r0, [r0, #0x0] + blx r2 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B4CD8: .word 0x021CED14 + + arm_func_start FUN_020B4CDC +FUN_020B4CDC: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r1, _020B4D9C ; =0x021CED14 + mov r5, r0 + ldr r2, [r1, #0x0] + ldr r4, [r2, #0x0] + ldr r0, [r4, #0x10] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B4D04: ; 0x020B4D04 + mov r0, #0x1 + str r0, [r2, #0x30] + ldr r2, [r4, #0x18] + cmp r2, #0x0 + beq _020B4D24 + ldr r0, [r1, #0x0] + mov r1, r5 + blx r2 +_020B4D24: + ldr r0, _020B4D9C ; =0x021CED14 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B4D74 + ldr r0, [r4, #0x14] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020B4D74 +_020B4D48: + b _020B4D58 +_020B4D4C: + b _020B4D68 +_020B4D50: + b _020B4D68 +_020B4D54: + b _020B4D74 +_020B4D58: + mov r0, r4 + mov r1, r5 + bl FUN_020B5090 + b _020B4D74 +_020B4D68: + mov r0, r4 + mov r1, r5 + bl FUN_020B53B4 +_020B4D74: + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B4D84: ; 0x020B4D84 + ldr r0, _020B4D9C ; =0x021CED14 + mov r1, r5 + ldr r0, [r0, #0x0] + blx r2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4D9C: .word 0x021CED14 + + arm_func_start FUN_020B4DA0 +FUN_020B4DA0: ; 0x020B4DA0 + ldr r0, _020B4E00 ; =0x021CED14 + ldr r3, [r0, #0x0] + ldr r1, [r3, #0x0] + ldr r1, [r1, #0x14] + cmp r1, #0x0 + bne _020B4DD8 + ldr r2, _020B4E04 ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4E08 ; =0x04000448 + str r1, [r2, #0x0] + mov r1, #0x1 + str r1, [r0, #0x0] + str r1, [r2, #0x0] + b _020B4DF0 +_020B4DD8: + mov r2, #0x0 + str r2, [r3, #0x10] + ldr r1, [r0, #0x0] + str r2, [r1, #0x2c] + ldr r0, [r0, #0x0] + str r2, [r0, #0x28] +_020B4DF0: + ldr r0, _020B4E00 ; =0x021CED14 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + .balign 4 +_020B4E00: .word 0x021CED14 +_020B4E04: .word 0x04000440 +_020B4E08: .word 0x04000448 + + arm_func_start FUN_020B4E0C +FUN_020B4E0C: ; 0x020B4E0C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r2, _020B4F28 ; =0x021CED14 + mov r4, r0 + str r4, [r2, #0x0] + ldr r0, [r4, #0x0] + ldr r5, [r0, #0x14] + cmp r5, #0x0 + bne _020B4ED8 + ldr lr, _020B4F2C ; =0x04000440 + mov r1, #0x0 + ldr r0, _020B4F30 ; =0x04000444 + str r1, [lr, #0x0] + str r1, [r0, #0x0] + ldr r12, [r4, #0x0] + ldr r0, _020B4F34 ; =0x04000470 + ldr r3, [r12, #0x0] + ldr r12, [r12, #0x4] + rsb r3, r3, #0x0 + str r3, [r0, #0x0] + rsb r3, r12, #0x0 + str r3, [r0, #0x0] + str r1, [r0, #0x0] + mov r0, #0x1 + str r0, [lr, #0x0] + ldr r0, [r2, #0x0] + ldr r5, [r0, #0x8] + mov r0, r5 + bl FUN_020B19FC +_020B4E80: ; 0x020B4E80 + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4E98 + mov r0, r5 + mov r1, #0x0 + bl FUN_020B1A14 +_020B4E98: + ldr r1, _020B4F28 ; =0x021CED14 + str r0, [r4, #0x14] + ldr r0, [r1, #0x0] + mov r1, #0x0 + ldr r5, [r0, #0xc] + mov r0, r5 + bl FUN_020B19A8 +_020B4EB4: ; 0x020B4EB4 + cmp r0, #0x0 + moveq r0, #0x0 + beq _020B4ECC + mov r0, r5 + mov r1, #0x0 + bl FUN_020B19C4 +_020B4ECC: + add sp, sp, #0x4 + str r0, [r4, #0x18] + ldmia sp!, {r4-r5,pc} +_020B4ED8: + ldr r4, [r4, #0x8] + mov r1, r5 + mov r0, r4 + bl FUN_020B19FC +_020B4EE8: ; 0x020B4EE8 + cmp r0, #0x0 + moveq r1, #0x0 + beq _020B4F14 + mov r0, r4 + mov r1, r5 + bl FUN_020B1A14 + ldr r1, [r4, #0x20] + and r1, r1, #0x700000 + mov r1, r1, asr #0x14 + add r1, r1, #0x5 + mov r1, r0, lsr r1 +_020B4F14: + ldr r0, _020B4F28 ; =0x021CED14 + ldr r0, [r0, #0x0] + str r1, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B4F28: .word 0x021CED14 +_020B4F2C: .word 0x04000440 +_020B4F30: .word 0x04000444 +_020B4F34: .word 0x04000470 + + arm_func_start FUN_020B4F38 +FUN_020B4F38: ; 0x020B4F38 + cmp r1, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x1 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x1 + streq r1, [r0, #0x24] + cmp r2, #0x0 + ldrne r1, [r0, #0x24] + orrne r1, r1, #0x2 + strne r1, [r0, #0x24] + ldreq r1, [r0, #0x24] + biceq r1, r1, #0x2 + streq r1, [r0, #0x24] + bx lr + + arm_func_start FUN_020B4F74 +FUN_020B4F74: + ldr r0, [r0, #0x24] + ands r0, r0, #0x2 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B4F88 +FUN_020B4F88: + ldr r0, [r0, #0x24] + ands r0, r0, #0x1 + movne r0, #0x1 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020B4F9C +FUN_020B4F9C: ; 0x020B4F9C + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020B4FA4 +FUN_020B4FA4: ; 0x020B4FA4 + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020B4FAC +FUN_020B4FAC: ; 0x020B4FAC + ldr r2, _020B4FC0 ; =0x021CED14 + ldr r2, [r2, #0x0] + str r0, [r2, #0x2c] + str r1, [r2, #0x28] + bx lr + .balign 4 +_020B4FC0: .word 0x021CED14 + + arm_func_start FUN_020B4FC4 +FUN_020B4FC4: ; 0x020B4FC4 + ldr r1, _020B5028 ; =0x021CED14 + mov r3, #0x0 + ldr r12, [r1, #0x0] + mov r1, #0x1000 + str r0, [r12, #0x2c] + ldr r2, [r0, #0x0] + str r2, [r12, #0x40] + ldr r2, [r0, #0x4] + str r2, [r12, #0x44] + str r3, [r12, #0x48] + ldr r2, [r0, #0x8] + str r2, [r12, #0x4c] + ldr r2, [r0, #0xc] + str r2, [r12, #0x50] + str r3, [r12, #0x54] + str r3, [r12, #0x58] + str r3, [r12, #0x5c] + str r1, [r12, #0x60] + ldr r1, [r0, #0x10] + str r1, [r12, #0x64] + ldr r0, [r0, #0x14] + str r0, [r12, #0x68] + ldr r0, [r12, #0x34] + str r0, [r12, #0x6c] + bx lr + .balign 4 +_020B5028: .word 0x021CED14 + + arm_func_start FUN_020B502C +FUN_020B502C: ; 0x020B502C + str r1, [r0, #0x4] + bx lr + + arm_func_start FUN_020B5034 +FUN_020B5034: ; 0x020B5034 + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + + arm_func_start FUN_020B5040 +FUN_020B5040: ; 0x020B5040 + str r1, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + + arm_func_start FUN_020B504C +FUN_020B504C: ; 0x020B504C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r1, r4 + mov r0, #0x0 + mov r2, #0x70 + bl MIi_CpuClear16 + mov r1, #0x0 + str r1, [r4, #0x0] + mov r0, #0x2 + str r0, [r4, #0x4] + str r1, [r4, #0x8] + str r1, [r4, #0xc] + str r1, [r4, #0x24] + mov r0, #0x1 + str r0, [r4, #0x30] + str r1, [r4, #0x28] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B5090 +FUN_020B5090: ; 0x020B5090 + stmdb sp!, {r4-r10,lr} + ldr r5, _020B5158 ; =0x021CED14 + mov r9, r1 + ldrh r1, [r9, #0x0] + ldr r2, [r5, #0x0] + mov r10, r0 + add r7, r2, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + ldmlsia sp!, {r4-r10,pc} +_020B50B8: ; 0x020B50B8 + mov r6, #0x1 + mov r4, #0x6 +_020B50C0: + mul r1, r8, r4 + ldr r0, [r5, #0x0] + str r6, [r0, #0x30] + ldr r2, [r9, #0x4] + ldrh r0, [r2, r1] + add r1, r2, r1 + strh r0, [r7, #0x0] + ldrh r0, [r1, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r1, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B5108 + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B5108: + ldr r0, [r5, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5120 + mov r0, r7 + bl FUN_020B515C +_020B5120: + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B513C + ldr r0, [r5, #0x0] + mov r1, r9 + mov r2, r8 + blx r3 +_020B513C: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + ldrh r1, [r9, #0x0] + mov r8, r0, lsr #0x10 + cmp r8, r1 + blo _020B50C0 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5158: .word 0x021CED14 + + arm_func_start FUN_020B515C +FUN_020B515C: ; 0x020B515C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r1, _020B53A4 ; =0x021CED14 + mov r7, r0 + ldr r0, [r1, #0x0] + add r0, r0, #0x40 + bl G3_LoadMtx43 + ldr r0, _020B53A4 ; =0x021CED14 + ldr r0, [r0, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B533C + ldr r2, [r7, #0x0] + ldr r1, _020B53A8 ; =0xC000C000 + and r4, r2, r1 + bl FUN_020B4F88 +_020B519C: ; 0x020B519C + cmp r0, #0x0 + beq _020B51F4 + ldr r0, [r7, #0x0] + and r2, r4, #0xc000 + mov r0, r0, lsl #0x7 + mov r3, r0, lsr #0x17 + and r1, r4, #0xc0000000 + mov r1, r1, lsr #0x1e + ldr r0, _020B53AC ; =0x020FF8AC + mov r2, r2, asr #0xe + mov r1, r1, lsl #0x1 + add r0, r0, r2, lsl #0x3 + cmp r3, #0xff + ldrh r1, [r1, r0] + orrgt r0, r3, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r3, r0, asr #0x10 + add r0, r3, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + b _020B5218 +_020B51F4: + ldr r0, [r7, #0x0] + mov r0, r0, lsl #0x7 + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 +_020B5218: + ldr r0, _020B53A4 ; =0x021CED14 + mov r1, r1, lsl #0x10 + ldr r0, [r0, #0x0] + mov r6, r1, asr #0x10 + bl FUN_020B4F74 +_020B522C: ; 0x020B522C + cmp r0, #0x0 + beq _020B527C + and r1, r4, #0xc000 + and r0, r4, #0xc0000000 + ldrb r4, [r7, #0x0] + ldr r2, _020B53B0 ; =0x020FF894 + mov r0, r0, lsr #0x1e + mov r3, r1, asr #0xe + mov r1, r0, lsl #0x1 + add r0, r2, r3, lsl #0x3 + cmp r4, #0x7f + ldrh r1, [r1, r0] + orrgt r0, r4, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r4, r0, asr #0x10 + add r0, r4, r1 + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + b _020B5298 +_020B527C: + ldrb r0, [r7, #0x0] + cmp r0, #0x7f + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + movgt r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_020B5298: + ldr r0, _020B53A4 ; =0x021CED14 + ldr r1, [r7, #0x0] + ldr r0, [r0, #0x0] + mov r5, r1, lsl #0x3 + bl FUN_020B4F88 + ldr r2, [r7, #0x0] + ldr r1, _020B53A4 ; =0x021CED14 + eor r5, r0, r5, lsr #0x1f + ldr r0, [r1, #0x0] + mov r8, r2, lsl #0x2 + bl FUN_020B4F74 + ldr r2, [r7, #0x0] + eor r1, r0, r8, lsr #0x1f + bic r0, r2, #0x10000000 + str r0, [r7, #0x0] + ldr r2, [r7, #0x0] + ldr r3, _020B53A4 ; =0x021CED14 + orr r2, r2, r5, lsl #0x1c + str r2, [r7, #0x0] + ldr r2, [r7, #0x0] + mov r0, r6 + bic r2, r2, #0x20000000 + str r2, [r7, #0x0] + ldr r5, [r7, #0x0] + mov r2, r4, lsl #0x10 + orr r1, r5, r1, lsl #0x1d + str r1, [r7, #0x0] + ldr r5, [r3, #0x0] + mov r1, r2, asr #0x10 + ldr r4, [r5, #0x8] + mov r3, r7 + add r2, r4, #0xc + str r2, [sp, #0x0] + ldr r4, [r5, #0x14] + mvn r2, #0x0 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} +_020B533C: + ldr r2, _020B53A4 ; =0x021CED14 + ldr r0, [r7, #0x0] + ldr r5, [r2, #0x0] + mov r0, r0, lsl #0x7 + ldr r4, [r5, #0x8] + mov r0, r0, lsr #0x17 + cmp r0, #0xff + orrgt r0, r0, #0xff00 + movgt r0, r0, lsl #0x10 + ldrb r1, [r7, #0x0] + add r4, r4, #0xc + movgt r0, r0, asr #0x10 + str r4, [sp, #0x0] + ldr r4, [r5, #0x14] + cmp r1, #0x7f + orrgt r1, r1, #0xff00 + movgt r1, r1, lsl #0x10 + str r4, [sp, #0x4] + ldr r4, [r5, #0x18] + movgt r1, r1, asr #0x10 + mov r3, r7 + mvn r2, #0x0 + str r4, [sp, #0x8] + bl FUN_020B46B4 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B53A4: .word 0x021CED14 +_020B53A8: .word 0xC000C000 +_020B53AC: .word 0x020FF8AC +_020B53B0: .word 0x020FF894 + + arm_func_start FUN_020B53B4 +FUN_020B53B4: ; 0x020B53B4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + ldr r2, _020B57B0 ; =0x021CED14 + mov r10, r0 + ldr r0, [r2, #0x0] + mov r11, r1 + ldr r9, [r0, #0x2c] + ldr r1, _020B57B0 ; =0x021CED14 + cmp r9, #0x0 + ldreq sb, _020B57B4 ; =0x020FF958 + ldr r3, [r1, #0x0] + ldr r4, [r9, #0x10] + str r4, [sp, #0x18] + ldr r2, [r9, #0x14] + str r2, [sp, #0x1c] + ldr r1, [r10, #0x0] + sub r1, r4, r1 + str r1, [sp, #0x18] + ldr r1, [r10, #0x4] + sub r1, r2, r1 + str r1, [sp, #0x1c] + ldr r2, [r3, #0x24] + ldr r1, [r3, #0x10] + cmp r2, #0x0 + str r1, [sp, #0x4] + bne _020B5430 + ldr r1, [r3, #0x28] + cmp r1, #0x0 + movne r1, #0x1 + strne r1, [sp, #0x0] + bne _020B5438 +_020B5430: + mov r1, #0x0 + str r1, [sp, #0x0] +_020B5438: + ldrh r1, [r11, #0x0] + add r7, r0, #0x38 + mov r8, #0x0 + cmp r1, #0x0 + addls sp, sp, #0x44 + ldmlsia sp!, {r4-r11,pc} +_020B5450: ; 0x020B5450 + mov r0, #0x1 + ldr r4, _020B57B0 ; =0x021CED14 + str r8, [sp, #0x14] + str r0, [sp, #0xc] +_020B5460: + ldr r2, [r4, #0x0] + ldr r0, [sp, #0xc] + mov r1, #0x6 + str r0, [r2, #0x30] + mul r0, r8, r1 + ldr r1, [r11, #0x4] + add r2, r1, r0 + ldrh r0, [r1, r0] + strh r0, [r7, #0x0] + ldrh r0, [r2, #0x2] + strh r0, [r7, #0x2] + ldrh r0, [r2, #0x4] + strh r0, [r7, #0x4] + ldr r3, [r10, #0x20] + cmp r3, #0x0 + beq _020B54B0 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B54B0: + ldr r0, [r4, #0x0] + ldr r0, [r0, #0x30] + cmp r0, #0x0 + beq _020B5790 + ldr r0, [sp, #0x0] + ldr r1, [r7, #0x4] + cmp r0, #0x0 + mov r0, #0x400 + rsb r0, r0, #0x0 + and r2, r1, r0 + ldr r0, [sp, #0x4] + mov r1, r1, lsl #0x16 + add r1, r0, r1, lsr #0x16 + ldr r0, _020B57B8 ; =0x000003FF + and r0, r1, r0 + orr r0, r2, r0 + str r0, [r7, #0x4] + beq _020B5600 + ldr r0, [r10, #0x14] + ldr lr, [r4, #0x0] + sub r1, r0, #0x1 + ldr r0, [r7, #0x0] + ldr r6, [lr, #0x28] + mov r2, r0, lsl #0x2 + mov r2, r2, lsr #0x1f + mov r2, r2, lsl #0x1 + mov r0, r0, lsl #0x3 + orr r5, r2, r0, lsr #0x1f + add r0, r6, r5, lsl #0x2 + add r0, r0, r1, lsl #0x1 + ldrh r1, [r0, #0x10] + ldr r0, _020B57BC ; =0x0000FFFF + str r1, [sp, #0x8] + cmp r1, r0 + bne _020B55CC + cmp r5, #0x0 + bne _020B5558 + ldr r1, [lr, #0x20] + mov r0, r6 + blx r1 + str r0, [sp, #0x8] + b _020B55B4 +_020B5558: + ands r0, r5, #0x1 + add r12, sp, #0x30 + ldmia r6, {r0-r3} + stmia r12, {r0-r3} + beq _020B5584 + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x34] + rsb r1, r1, #0x0 + str r1, [sp, #0x30] + rsb r0, r0, #0x0 + str r0, [sp, #0x34] +_020B5584: + ands r0, r5, #0x2 + beq _020B55A4 + ldr r1, [sp, #0x38] + ldr r0, [sp, #0x3c] + rsb r1, r1, #0x0 + str r1, [sp, #0x38] + rsb r0, r0, #0x0 + str r0, [sp, #0x3c] +_020B55A4: + ldr r1, [lr, #0x20] + add r0, sp, #0x30 + blx r1 + str r0, [sp, #0x8] +_020B55B4: + ldr r1, [r10, #0x14] + add r0, r6, r5, lsl #0x2 + sub r1, r1, #0x1 + add r1, r0, r1, lsl #0x1 + ldr r0, [sp, #0x8] + strh r0, [r1, #0x10] +_020B55CC: + ldr r1, [r9, #0x0] + add r0, sp, #0x20 + str r1, [sp, #0x20] + ldr r2, [r9, #0x4] + mov r1, r7 + str r2, [sp, #0x24] + ldr r3, [r9, #0x8] + add r2, sp, #0x18 + str r3, [sp, #0x28] + ldr r3, [r9, #0xc] + str r3, [sp, #0x2c] + bl FUN_020B57D8 + b _020B5750 +_020B5600: + ldr r0, _020B57C0 ; =0x0000FFFE + str r0, [sp, #0x8] + ldr r0, [r4, #0x0] + ldr r1, [r0, #0x24] + cmp r1, #0x0 + beq _020B5714 + ldr r2, [r7, #0x0] + ldr r1, _020B57C4 ; =0xC000C000 + mov r6, r2, lsl #0x3 + and r5, r2, r1 + bl FUN_020B4F88 + ldr r1, [r7, #0x0] + eor r6, r0, r6, lsr #0x1f + mov r1, r1, lsl #0x2 + ldr r0, [r4, #0x0] + str r1, [sp, #0x10] + bl FUN_020B4F74 + ldr r1, [sp, #0x10] + eor r0, r0, r1, lsr #0x1f + ldr r1, [r7, #0x0] + bic r1, r1, #0x10000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r1, r1, r6, lsl #0x1c + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + bic r1, r1, #0x20000000 + str r1, [r7, #0x0] + ldr r1, [r7, #0x0] + orr r0, r1, r0, lsl #0x1d + str r0, [r7, #0x0] + ldr r0, [r4, #0x0] + bl FUN_020B4F88 +_020B5684: ; 0x020B5684 + cmp r0, #0x0 + beq _020B56D4 + and r1, r5, #0xc000 + mov r2, r1, asr #0xe + ldr r1, _020B57C8 ; =0x020FF8AC + and r3, r5, #0xc0000000 + mov r3, r3, lsr #0x1e + add r2, r1, r2, lsl #0x3 + mov r3, r3, lsl #0x1 + ldr r0, [r7, #0x0] + ldr r1, _020B57CC ; =0xFE00FFFF + ldrh r2, [r3, r2] + and r1, r0, r1 + mov r0, r0, lsl #0x7 + add r0, r2, r0, lsr #0x17 + rsb r2, r0, #0x0 + ldr r0, _020B57D0 ; =0x000001FF + and r0, r2, r0 + orr r0, r1, r0, lsl #0x10 + str r0, [r7, #0x0] +_020B56D4: + ldr r0, [r4, #0x0] + bl FUN_020B4F74 +_020B56DC: ; 0x020B56DC + cmp r0, #0x0 + beq _020B5714 + and r1, r5, #0xc000 + mov r3, r1, asr #0xe + and r1, r5, #0xc0000000 + mov r1, r1, lsr #0x1e + mov r2, r1, lsl #0x1 + ldr r1, _020B57D4 ; =0x020FF894 + ldrb r0, [r7, #0x0] + add r1, r1, r3, lsl #0x3 + ldrh r1, [r2, r1] + add r0, r0, r1 + rsb r0, r0, #0x0 + strb r0, [r7, #0x0] +_020B5714: + ldr r2, [r7, #0x0] + ldr r0, _020B57CC ; =0xFE00FFFF + ldr r1, [sp, #0x18] + and r0, r2, r0 + mov r2, r2, lsl #0x7 + mov r2, r2, lsr #0x17 + add r2, r2, r1, asr #0xc + ldr r1, _020B57D0 ; =0x000001FF + and r1, r2, r1 + orr r0, r0, r1, lsl #0x10 + str r0, [r7, #0x0] + ldrb r1, [r7, #0x0] + ldr r0, [sp, #0x1c] + add r0, r1, r0, asr #0xc + strb r0, [r7, #0x0] +_020B5750: + ldr r3, [r4, #0x0] + ldr r1, [sp, #0x8] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0x1c] + mov r0, r7 + blx r3 + cmp r0, #0x1 + addne sp, sp, #0x44 + ldmneia sp!, {r4-r11,pc} +_020B5774: ; 0x020B5774 + ldr r3, [r10, #0x24] + cmp r3, #0x0 + beq _020B5790 + ldr r0, [r4, #0x0] + mov r1, r11 + mov r2, r8 + blx r3 +_020B5790: + add r0, r8, #0x1 + mov r0, r0, lsl #0x10 + mov r8, r0, lsr #0x10 + ldrh r0, [r11, #0x0] + cmp r8, r0 + blo _020B5460 + add sp, sp, #0x44 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B57B0: .word 0x021CED14 +_020B57B4: .word 0x020FF958 +_020B57B8: .word 0x000003FF +_020B57BC: .word 0x0000FFFF +_020B57C0: .word 0x0000FFFE +_020B57C4: .word 0xC000C000 +_020B57C8: .word 0x020FF8AC +_020B57CC: .word 0xFE00FFFF +_020B57D0: .word 0x000001FF +_020B57D4: .word 0x020FF894 + + arm_func_start FUN_020B57D8 +FUN_020B57D8: ; 0x020B57D8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + ldr r4, [r1, #0x0] + ldr r3, _020B5A9C ; =0x01FF0000 + and r3, r4, r3 + mov r3, r3, lsr #0x10 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0xff + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x0] + ldr r3, [r1, #0x0] + and r3, r3, #0xff + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + cmp r3, #0x7f + orrgt r3, r3, #0xff00 + movgt r3, r3, lsl #0x10 + movgt r3, r3, asr #0x10 + mov r3, r3, lsl #0xc + str r3, [sp, #0x4] + ldr r5, [r1, #0x0] + and r4, r5, #0x300 + cmp r4, #0x100 + beq _020B5858 + cmp r4, #0x300 + beq _020B5858 + and r3, r5, #0x30000000 + orr r4, r4, r3 +_020B5858: + cmp r4, #0x300 + bne _020B58AC + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =0x020FF8AC + and r3, r5, r3 + and r5, r3, #0xc0000000 + and r3, r3, #0xc000 + mov r6, r5, lsr #0x1e + mov r5, r3, asr #0xe + ldr r3, _020B5AA8 ; =0x020FF894 + mov r6, r6, lsl #0x1 + add r4, r4, r5, lsl #0x3 + add r3, r3, r5, lsl #0x3 + ldrh r5, [r6, r4] + ldr r7, [sp, #0x0] + ldrh r3, [r6, r3] + ldr r4, [sp, #0x4] + add r5, r7, r5, lsl #0xb + add r3, r4, r3, lsl #0xb + str r5, [sp, #0x0] + str r3, [sp, #0x4] +_020B58AC: + ldr r5, [r0, #0x8] + ldr r4, [sp, #0x4] + add r3, sp, #0x0 + smull r8, r7, r5, r4 + cmp r3, r3 + ldr r6, [r0, #0x0] + mov r4, #0x1000 + addeq r3, sp, #0x8 + adds r8, r8, r4 + ldr r5, [sp, #0x0] + adc r7, r7, #0x0 + smlal r8, r7, r6, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + str r5, [r3, #0x0] + ldr r7, [r0, #0xc] + ldr r6, [sp, #0x4] + ldr r5, [r0, #0x4] + smull r8, r6, r7, r6 + adds r7, r8, r4 + ldr r4, [sp, #0x0] + adc r6, r6, #0x0 + smlal r7, r6, r5, r4 + mov r5, r7, lsr #0xc + add r4, sp, #0x8 + orr r5, r5, r6, lsl #0x14 + str r5, [r3, #0x4] + cmp r3, r4 + ldreq r3, [sp, #0xc] + ldreq r4, [sp, #0x8] + streq r3, [sp, #0x4] + ldr r3, _020B5AAC ; =0x021CED14 + streq r4, [sp, #0x0] + ldr r3, [r3, #0x0] + ldr r3, [r3, #0x4] + cmp r3, #0x0 + beq _020B597C + cmp r3, #0x2 + moveq r5, #0x300 + movne r5, #0x100 + cmp r5, #0x100 + ldreq r4, [r1, #0x0] + ldreq r3, _020B5AB0 ; =0xC1FFFCFF + andeq r3, r4, r3 + orreq r3, r3, r5 + streq r3, [r1, #0x0] + beq _020B597C + ldr r4, [r1, #0x0] + ldr r3, _020B5AB0 ; =0xC1FFFCFF + and r3, r4, r3 + orr r3, r3, r5 + str r3, [r1, #0x0] +_020B597C: + ldr r6, [r1, #0x0] + and r5, r6, #0x300 + cmp r5, #0x100 + beq _020B599C + cmp r5, #0x300 + beq _020B599C + and r3, r6, #0x30000000 + orr r5, r5, r3 +_020B599C: + ldr r3, _020B5AA0 ; =0xC000C000 + ldr r4, _020B5AA4 ; =0x020FF8AC + and r3, r6, r3 + and r6, r3, #0xc0000000 + and r3, r3, #0xc000 + mov lr, r3, asr #0xe + mov r6, r6, lsr #0x1e + mov r3, r6, lsl #0x1 + add r4, r4, lr, lsl #0x3 + ldrh r4, [r3, r4] + ldr r6, [r0, #0x0] + ldr r8, _020B5AA8 ; =0x020FF894 + mov r12, r4, asr #0x1 + mov r4, r12, lsl #0xc + rsb r7, r4, #0x0 + mla r7, r6, r12, r7 + add lr, r8, lr, lsl #0x3 + ldrh r3, [r3, lr] + ldr r6, [r0, #0x8] + ldr lr, [sp, #0x0] + mov r3, r3, asr #0x1 + mla r7, r6, r3, r7 + add r6, lr, r7 + str r6, [sp, #0x0] + mov lr, r3, lsl #0xc + ldr r6, [r0, #0x4] + rsb r7, lr, #0x0 + mla r7, r6, r12, r7 + ldr r0, [r0, #0xc] + ldr r6, [sp, #0x4] + mla r3, r0, r3, r7 + add r0, r6, r3 + str r0, [sp, #0x4] + cmp r5, #0x300 + moveq r0, #0x1 + movne r0, #0x0 + cmp r0, #0x0 + beq _020B5A4C + ldr r3, [sp, #0x0] + ldr r0, [sp, #0x4] + sub r3, r3, r4 + sub r0, r0, lr + str r3, [sp, #0x0] + str r0, [sp, #0x4] +_020B5A4C: + ldr r4, [sp, #0x0] + ldr r0, [r2, #0x0] + ldr r3, [sp, #0x4] + add r5, r4, r0 + str r5, [sp, #0x0] + ldr r2, [r2, #0x4] + ldr r0, _020B5AB4 ; =0x000001FF + add r2, r3, r2 + str r2, [sp, #0x4] + mov r3, r2, asr #0xc + ldr r4, [r1, #0x0] + ldr r2, _020B5AB8 ; =0xFE00FF00 + and r3, r3, #0xff + and r2, r4, r2 + and r4, r0, r5, asr #0xc + orr r0, r2, r3 + orr r0, r0, r4, lsl #0x10 + str r0, [r1, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B5A9C: .word 0x01FF0000 +_020B5AA0: .word 0xC000C000 +_020B5AA4: .word 0x020FF8AC +_020B5AA8: .word 0x020FF894 +_020B5AAC: .word 0x021CED14 +_020B5AB0: .word 0xC1FFFCFF +_020B5AB4: .word 0x000001FF +_020B5AB8: .word 0xFE00FF00 + + arm_func_start FUN_020B5ABC +FUN_020B5ABC: ; 0x020B5ABC + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0xc + add r5, sp, #0x0 + mov r4, #0x0 + str r4, [r5, #0x0] + str r4, [r5, #0x4] + mov r8, r2 + ldr r2, [sp, #0x28] + mov r5, r0 + mov r9, r1 + mov r4, r3 + cmp r2, #0x0 + mov r7, #0x1 + beq _020B5B24 + add r6, sp, #0x28 +_020B5AF8: + mov r0, r9 + mov r1, r8 + mov r3, r6 + bl FUN_020B5BC8 + ldr r1, [sp, #0x0] + ldr r2, [sp, #0x28] + cmp r0, r1 + strgt r0, [sp, #0x0] + add r7, r7, #0x1 + cmp r2, #0x0 + bne _020B5AF8 +_020B5B24: + ldr r0, [r9, #0x0] + sub r2, r7, #0x1 + ldrsb r1, [r0, #0x1] + ldr r0, [sp, #0x0] + add r1, r4, r1 + mul r1, r2, r1 + sub r1, r1, r4 + str r1, [sp, #0x4] + str r0, [r5, #0x0] + str r1, [r5, #0x4] + add sp, sp, #0xc + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B5B54 +FUN_020B5B54: ; 0x020B5B54 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + str r2, [sp, #0x0] + add r3, sp, #0x4 + mov r2, #0x0 + str r2, [r3, #0x0] + mov r8, r0 + str r2, [r3, #0x4] + ldr r7, [r8, #0x4] + add r0, sp, #0x0 + mov r5, r1 + mov r4, #0x1 + blx r7 + cmp r0, #0x0 + beq _020B5BAC + add r6, sp, #0x0 +_020B5B94: + cmp r0, #0xa + mov r0, r6 + addeq r4, r4, #0x1 + blx r7 + cmp r0, #0x0 + bne _020B5B94 +_020B5BAC: + ldr r0, [r8, #0x0] + ldrsb r0, [r0, #0x1] + add r0, r5, r0 + mul r0, r4, r0 + sub r0, r0, r5 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B5BC8 +FUN_020B5BC8: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x8 + mov r8, r0 + str r2, [sp, #0x0] + ldr r4, [r8, #0x4] + add r0, sp, #0x0 + mov r7, r1 + mov r6, r3 + mov r5, #0x0 + blx r4 + movs r1, r0 + beq _020B5C58 + ldr sb, _020B5C84 ; =0x0000FFFF + add r10, sp, #0x0 +_020B5C00: + cmp r1, #0xa + beq _020B5C58 + mov r0, r8 + bl FUN_020B5CE4 + mov r1, r0 + cmp r1, r9 + ldreq r0, [r8, #0x0] + ldreqh r1, [r0, #0x2] + mov r0, r8 + bl FUN_020B5C88 + ldrh r1, [r8, #0x8] + cmp r1, #0x0 + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreqsb r0, [r0, #0x2] + add r1, r7, r0 + mov r0, r10 + add r5, r5, r1 + blx r4 + movs r1, r0 + bne _020B5C00 +_020B5C58: + cmp r6, #0x0 + beq _020B5C70 + cmp r1, #0xa + ldreq r0, [sp, #0x0] + movne r0, #0x0 + str r0, [r6, #0x0] +_020B5C70: + cmp r5, #0x0 + subgt r5, r5, r7 + mov r0, r5 + add sp, sp, #0x8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B5C84: .word 0x0000FFFF + + arm_func_start FUN_020B5C88 +FUN_020B5C88: ; 0x020B5C88 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + ldr lr, [r3, #0xc] + cmp lr, #0x0 + beq _020B5CD8 +_020B5CA0: + ldrh r12, [lr, #0x0] + cmp r12, r1 + bhi _020B5CCC + ldrh r2, [lr, #0x2] + cmp r1, r2 + ldrlsh r2, [r0, #0xa] + addls r3, lr, #0x8 + subls r0, r1, r12 + mlals r0, r2, r0, r3 + addls sp, sp, #0x4 + ldmlsia sp!, {pc} +_020B5CCC: + ldr lr, [lr, #0x4] + cmp lr, #0x0 + bne _020B5CA0 +_020B5CD8: + add r0, r3, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B5CE4 +FUN_020B5CE4: ; 0x020B5CE4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + ldr r0, [r0, #0x10] + cmp r0, #0x0 + beq _020B5D2C +_020B5CFC: + ldrh r2, [r0, #0x0] + cmp r2, r1 + bhi _020B5D20 + ldrh r2, [r0, #0x2] + cmp r1, r2 + bhi _020B5D20 + bl FUN_020B5D7C + add sp, sp, #0x4 + ldmia sp!, {pc} +_020B5D20: + ldr r0, [r0, #0x8] + cmp r0, #0x0 + bne _020B5CFC +_020B5D2C: + ldr r0, _020B5D38 ; =0x0000FFFF + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5D38: .word 0x0000FFFF + + arm_func_start FUN_020B5D3C +FUN_020B5D3C: ; 0x020B5D3C + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r4 + bl FUN_020B7558 + sub r0, r0, #0x1 + strh r0, [r4, #0x8] + ldrh r0, [r4, #0x8] + cmp r0, #0x0 + movne r1, #0x2 + moveq r1, #0x3 + ldr r0, _020B5D78 ; =FUN_020B7718 + strh r1, [r4, #0xa] + str r0, [r4, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020B5D78: .word FUN_020B7718 + + arm_func_start FUN_020B5D7C +FUN_020B5D7C: ; 0x020B5D7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldrh r3, [r0, #0x4] + ldr r2, _020B5E4C ; =0x0000FFFF + cmp r3, #0x0 + beq _020B5DA8 + cmp r3, #0x1 + beq _020B5DC4 + cmp r3, #0x2 + beq _020B5DD8 + b _020B5E40 +_020B5DA8: + ldrh r2, [r0, #0x0] + ldrh r3, [r0, #0xc] + sub r0, r1, r2 + add r0, r3, r0 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + b _020B5E40 +_020B5DC4: + ldrh r2, [r0, #0x0] + sub r1, r1, r2 + add r0, r0, r1, lsl #0x1 + ldrh r2, [r0, #0xc] + b _020B5E40 +_020B5DD8: + ldrh r3, [r0, #0xc] + add r0, r0, #0xc + add r0, r0, #0x2 + sub r3, r3, #0x1 + add lr, r0, r3, lsl #0x2 + cmp r0, lr + bhi _020B5E40 +_020B5DF4: + sub r12, lr, r0 + mov r3, r12, asr #0x1 + add r3, r12, r3, lsr #0x1e + mov r3, r3, asr #0x2 + add r3, r3, r3, lsr #0x1f + mov r12, r3, asr #0x1 + mov r3, r12, lsl #0x2 + ldrh r3, [r0, r3] + add r12, r0, r12, lsl #0x2 + cmp r3, r1 + addcc r0, r12, #0x4 + blo _020B5E38 + cmp r1, r3 + subcc lr, r12, #0x4 + blo _020B5E38 + ldrh r2, [r12, #0x2] + b _020B5E40 +_020B5E38: + cmp r0, lr + bls _020B5DF4 +_020B5E40: + mov r0, r2 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B5E4C: .word 0x0000FFFF + + arm_func_start FUN_020B5E50 +FUN_020B5E50: ; 0x020B5E50 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r7, r0 + mov r0, r1 + cmp r0, #0x8 + ldr r0, [sp, #0x60] + str r1, [sp, #0x10] + str r0, [sp, #0x60] + ldr r0, [sp, #0x6c] + str r2, [sp, #0x14] + str r0, [sp, #0x6c] + ldrlt r0, [sp, #0x10] + mov r11, r3 + ldr r6, [sp, #0x64] + ldr r5, [sp, #0x68] + movge r2, #0x3 + clzlt r0, r0 + rsblt r2, r0, #0x1f + ldr r0, [sp, #0x14] + cmp r0, #0x8 + ldrlt r0, [sp, #0x14] + movge r1, #0x3 + clzlt r0, r0 + rsblt r1, r0, #0x1f + ldr r0, _020B6170 ; =0x020FF970 + mvn r3, #0x0 + add r1, r0, r1, lsl #0x3 + add r0, r1, r2, lsl #0x1 + ldrb r4, [r1, r2, lsl #0x1] + ldrb r1, [r0, #0x1] + ldr r2, [sp, #0x14] + cmp r6, #0x0 + str r1, [sp, #0x18] + ldr r1, [sp, #0x10] + and r1, r1, r3, lsl r4 + str r1, [sp, #0x1c] + ldr r1, [sp, #0x18] + and r1, r2, r3, lsl r1 + str r1, [sp, #0x20] + moveq r1, #0x1 + streq r1, [sp, #0x24] + movne r1, #0x2 + strne r1, [sp, #0x24] + mov r1, #0x0 + str r1, [sp, #0x28] + bl FUN_020B704C + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + mov r10, r1, asr r4 + ldr r1, [sp, #0x18] + mov r1, r2, asr r1 + str r1, [sp, #0x2c] + ldr r1, [sp, #0x24] + mov r2, r1, lsl r4 + ldr r1, [sp, #0x18] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x6c] + mov r9, r2, asr r1 + mov r1, #0x0 + str r1, [sp, #0x30] + str r1, [sp, #0x34] + b _020B5FE8 +_020B5F48: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x18] + ldr r8, [sp, #0x34] + mov r2, r2, lsl r1 + ldr r1, [sp, #0x60] + add lr, r1, r2, lsl #0x3 + b _020B5FD4 +_020B5F64: + mov r1, r8, lsl r4 + add r2, r11, r1, lsl #0x3 + ldr r1, _020B6174 ; =0x000001FF + ldr r3, [r7, #0x0] + and r12, r2, r1 + ldr r1, _020B6178 ; =0xFE00FF00 + and r2, lr, #0xff + and r1, r3, r1 + orr r1, r1, r2 + orr r1, r1, r12, lsl #0x10 + str r1, [r7, #0x0] + ldr r3, [r7, #0x0] + ldr r1, _020B617C ; =0x3FFF3FFF + mov r2, #0x400 + and r1, r3, r1 + orr r1, r1, r0 + str r1, [r7, #0x0] + rsb r1, r2, #0x0 + ldrh r2, [r7, #0x4] + add r8, r8, #0x1 + and r1, r2, r1 + orr r1, r1, r5 + strh r1, [r7, #0x4] + ldr r1, [r7, #0x0] + add r5, r5, r9 + bic r1, r1, #0x2000 + orr r1, r1, r6, lsl #0xd + str r1, [r7], #0x8 +_020B5FD4: + cmp r8, r10 + blt _020B5F64 + ldr r1, [sp, #0x30] + add r1, r1, #0x1 + str r1, [sp, #0x30] +_020B5FE8: + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x2c] + cmp r2, r1 + blt _020B5F48 + ldr r0, [sp, #0x28] + mla r0, r10, r1, r0 + str r0, [sp, #0x28] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6078 + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x10] + str r0, [sp, #0x0] + ldr r0, [sp, #0x1c] + str r6, [sp, #0x4] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + str r5, [sp, #0x8] + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x20] + add r3, r11, r1, lsl #0x3 + mov r0, r7 + mov r1, r4 + bl FUN_020B5E50 + ldr r1, [sp, #0x24] + add r7, r7, r0, lsl #0x3 + mul r2, r1, r4 + ldr r1, [sp, #0x20] + mul r2, r1, r2 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6078: + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B60F0 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + mov r3, r11 + add r0, r1, r0, lsl #0x3 + str r0, [sp, #0x0] + str r6, [sp, #0x4] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + str r5, [sp, #0x8] + sub r4, r1, r0 + ldr r1, [sp, #0x6c] + mov r0, r7 + str r1, [sp, #0xc] + ldr r1, [sp, #0x1c] + mov r2, r4 + bl FUN_020B5E50 + ldr r2, [sp, #0x24] + ldr r1, [sp, #0x1c] + add r7, r7, r0, lsl #0x3 + mul r1, r2, r1 + mul r2, r4, r1 + ldr r1, [sp, #0x6c] + add r5, r5, r2, lsr r1 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B60F0: + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x10] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + cmp r1, r0 + bhs _020B6164 + ldr r1, [sp, #0x60] + ldr r0, [sp, #0x20] + ldr r2, [sp, #0x10] + add r0, r1, r0, lsl #0x3 + ldr r1, [sp, #0x1c] + ldr r3, [sp, #0x14] + str r0, [sp, #0x0] + sub r1, r2, r1 + ldr r2, [sp, #0x20] + str r6, [sp, #0x4] + sub r2, r3, r2 + ldr r3, [sp, #0x1c] + ldr r4, [sp, #0x6c] + str r5, [sp, #0x8] + mov r0, r7 + add r3, r11, r3, lsl #0x3 + str r4, [sp, #0xc] + bl FUN_020B5E50 + ldr r1, [sp, #0x28] + add r0, r1, r0 + str r0, [sp, #0x28] +_020B6164: + ldr r0, [sp, #0x28] + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B6170: .word 0x020FF970 +_020B6174: .word 0x000001FF +_020B6178: .word 0xFE00FF00 +_020B617C: .word 0x3FFF3FFF + + arm_func_start FUN_020B6180 +FUN_020B6180: ; 0x020B6180 + stmdb sp!, {r4-r6,lr} + mov r3, r0, lsr #0x3 + mov r6, r1, lsr #0x3 + mul r12, r3, r6 + and r2, r0, #0x4 + and lr, r0, #0x2 + and r0, r0, #0x1 + add r4, r0, lr, lsr #0x1 + mov r5, r2, lsr #0x2 + and r0, r1, #0x4 + add lr, r12, #0x0 + add r12, r5, r4, lsl #0x1 + mla r12, r6, r12, lr + and lr, r1, #0x2 + and r1, r1, #0x1 + add lr, r1, lr, lsr #0x1 + mov r1, r0, lsr #0x2 + add r1, r1, lr, lsl #0x1 + mla r12, r3, r1, r12 + add r1, r4, r2, lsr #0x2 + add r0, lr, r0, lsr #0x2 + mla r0, r1, r0, r12 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B61DC +FUN_020B61DC: ; 0x020B61DC + stmdb sp!, {r4-r8,lr} + ldr r12, [sp, #0x1c] + ldr r8, [sp, #0x18] + mov r12, r12, lsl #0x1c + mov r4, r12, lsr #0x10 + mov r6, #0x0 + cmp r2, #0x0 + ldmleia sp!, {r4-r8,pc} +_020B61FC: ; 0x020B61FC + mov lr, r3, lsl #0x1 + mov r12, r6 +_020B6204: + mov r5, r0 + mov r7, r12 + cmp r1, #0x0 + ble _020B622C +_020B6214: + orr r3, r4, r8 + add r7, r7, #0x1 + cmp r7, r1 + add r8, r8, #0x1 + strh r3, [r5], #0x2 + blt _020B6214 +_020B622C: + add r6, r6, #0x1 + cmp r6, r2 + add r0, r0, lr + blt _020B6204 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B6240 +FUN_020B6240: ; 0x020B6240 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + ldr r5, [sp, #0x24] + ldr lr, [sp, #0x20] + cmp r5, #0x20 + ldr r12, [sp, #0x28] + bgt _020B6280 + mla r4, r5, lr, r3 + ldr lr, [sp, #0x2c] + str r12, [sp, #0x0] + mov r3, r5 + add r0, r0, r4, lsl #0x1 + str lr, [sp, #0x4] + bl FUN_020B61DC + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} +_020B6280: + ldr r4, [sp, #0x2c] + add r7, lr, r2 + mov r2, r4, lsl #0x1c + cmp lr, r7 + add r8, r3, r1 + mov r4, r2, lsr #0x10 + addge sp, sp, #0x8 + ldmgeia sp!, {r4-r8,pc} +_020B62A0: + cmp lr, #0x20 + movlt r1, lr + addge r1, lr, #0x20 + mov r6, r3 + cmp r3, r8 + add r5, r0, r1, lsl #0x6 + bge _020B62E4 +_020B62BC: + cmp r6, #0x20 + movlt r1, r6 + addge r1, r6, #0x3e0 + orr r2, r4, r12 + mov r1, r1, lsl #0x1 + add r6, r6, #0x1 + strh r2, [r5, r1] + cmp r6, r8 + add r12, r12, #0x1 + blt _020B62BC +_020B62E4: + add lr, lr, #0x1 + cmp lr, r7 + blt _020B62A0 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B62F8 +FUN_020B62F8: ; 0x020B62F8 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x18 + cmp r2, #0x8 + movlt r4, r2 + movge r12, #0x3 + clzlt r4, r4 + rsblt r12, r4, #0x1f + cmp r3, #0x8 + movlt r4, r3 + movge r6, #0x3 + clzlt r4, r4 + rsblt r6, r4, #0x1f + ldr r4, _020B6378 ; =0x020FF970 + ldr r5, [sp, #0x28] + add r4, r4, r6, lsl #0x3 + ldrb r6, [r4, r12, lsl #0x1] + add r12, r4, r12, lsl #0x1 + ldr r4, _020B637C ; =FUN_020B6908 + strb r6, [sp, #0x14] + ldrb r6, [r12, #0x1] + ldr lr, _020B6380 ; =FUN_020B68AC + ldr ip, _020B6384 ; =FUN_020B64C0 + strb r6, [sp, #0x15] + str r5, [sp, #0x0] + str r4, [sp, #0x4] + str lr, [sp, #0x8] + str r12, [sp, #0xc] + ldr r12, [sp, #0x14] + str r12, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x18 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B6378: .word 0x020FF970 +_020B637C: .word FUN_020B6908 +_020B6380: .word FUN_020B68AC +_020B6384: .word FUN_020B64C0 + + arm_func_start FUN_020B6388 +FUN_020B6388: ; 0x020B6388 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr lr, [sp, #0x18] + ldr ip, _020B63C0 ; =FUN_020B6B10 + str lr, [sp, #0x0] + ldr lr, _020B63C4 ; =FUN_020B68AC + str r12, [sp, #0x4] + ldr ip, _020B63C8 ; =FUN_020B66D4 + str lr, [sp, #0x8] + str r12, [sp, #0xc] + str r2, [sp, #0x10] + bl FUN_020B6488 + add sp, sp, #0x14 + ldmia sp!, {pc} + .balign 4 +_020B63C0: .word FUN_020B6B10 +_020B63C4: .word FUN_020B68AC +_020B63C8: .word FUN_020B66D4 + + arm_func_start FUN_020B63CC +FUN_020B63CC: ; 0x020B63CC + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r7, r1 + ldrh r1, [sp, #0x2c] + mov r8, r0 + mov r0, r7 + mov r6, r2 + mov r5, r3 + bl FUN_020B5CE4 + ldr r1, _020B6484 ; =0x0000FFFF + mov r4, r0 + cmp r4, r1 + ldreq r0, [r7, #0x0] + ldreqh r4, [r0, #0x2] + mov r0, r7 + mov r1, r4 + bl FUN_020B5C88 + str r0, [sp, #0x8] + ldr r0, [r7, #0x0] + ldr r2, [sp, #0x28] + ldr r0, [r0, #0x8] + add r1, sp, #0x8 + ldrh r3, [r0, #0x2] + add r12, r0, #0x8 + mov r0, r8 + mla r3, r4, r3, r12 + str r3, [sp, #0xc] + str r2, [sp, #0x0] + str r1, [sp, #0x4] + ldr r1, [sp, #0x8] + ldr r4, [r8, #0x14] + ldrsb r2, [r1, #0x0] + mov r1, r7 + mov r3, r5 + add r2, r6, r2 + blx r4 + ldrh r0, [r7, #0x8] + cmp r0, #0x0 + ldrne r0, [sp, #0x8] + ldrnesb r1, [r0, #0x0] + ldrneb r0, [r0, #0x1] + addne r0, r1, r0 + ldreq r0, [sp, #0x8] + ldreqsb r0, [r0, #0x2] + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020B6484: .word 0x0000FFFF + + arm_func_start FUN_020B6488 +FUN_020B6488: ; 0x020B6488 + str r2, [r0, #0x4] + ldr r2, [sp, #0x0] + str r3, [r0, #0x8] + strb r2, [r0, #0xc] + ldr r2, [sp, #0x4] + str r1, [r0, #0x0] + ldr r1, [sp, #0x8] + str r2, [r0, #0x14] + ldr r2, [sp, #0xc] + str r1, [r0, #0x18] + ldr r1, [sp, #0x10] + str r2, [r0, #0x1c] + str r1, [r0, #0x10] + bx lr + + arm_func_start FUN_020B64C0 +FUN_020B64C0: ; 0x020B64C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x54 + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x44] + ldr r1, [sp, #0x44] + ldr r4, [sp, #0x78] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x1c] + ldr r2, [sp, #0x7c] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x20] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B6528 + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B6528: + bic r1, r10, #0x7 + str r1, [sp, #0x30] + ldr r1, [sp, #0x10] + ldr r2, [r0, #0x10] + bic r1, r1, #0x7 + str r1, [sp, #0x14] + ldr r1, [sp, #0x44] + str r2, [sp, #0x4c] + mov r3, r1, lsl #0x6 + mov r2, r3, asr #0x2 + ldr r1, [sp, #0x20] + add r3, r3, r2, lsr #0x1d + ldr r2, [sp, #0x1c] + add r6, r1, #0x7 + add r2, r2, #0x7 + bic r5, r2, #0x7 + bic r2, r6, #0x7 + ldr r1, [sp, #0x30] + str r2, [sp, #0x24] + mov r2, r3, asr #0x3 + str r2, [sp, #0x48] + mov r4, r1, asr #0x2 + ldr r2, [sp, #0x30] + ldr r1, [sp, #0x14] + add r2, r2, r4, lsr #0x1d + mov r2, r2, asr #0x3 + str r2, [sp, #0x2c] + ldr r2, [sp, #0x14] + mov r1, r1, asr #0x2 + add r1, r2, r1, lsr #0x1d + mov r6, r1, asr #0x3 + ldr r1, [sp, #0x24] + cmp r2, r1 + ldr r1, [r0, #0x4] + str r1, [sp, #0x40] + ldr r1, [r0, #0x8] + ldr r0, [r0, #0x0] + str r1, [sp, #0x3c] + str r0, [sp, #0x28] + ldrb r0, [sp, #0x4c] + str r0, [sp, #0x38] + ldrb r0, [sp, #0x4d] + str r0, [sp, #0x34] + addge sp, sp, #0x54 + ldmgeia sp!, {r4-r11,pc} +_020B65DC: ; 0x020B65DC + mov r4, #0x0 + mov r11, #0x8 +_020B65E4: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r7, [sp, #0x2c] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x20] + ldr r0, [sp, #0x14] + movge r9, r4 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r11 + sub r0, r0, r9 + str r0, [sp, #0x18] + ldr r0, [sp, #0x30] + cmp r0, r5 + mov r8, r0 + bge _020B66B0 +_020B6630: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x40] + str r0, [sp, #0x0] + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x3c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + bl FUN_020B7068 + ldr r2, [sp, #0x1c] + cmp r8, r10 + sublt r1, r10, r8 + sub r2, r2, r8 + movge r1, r4 + cmp r2, #0x8 + movgt r2, r11 + sub r3, r2, r1 + ldr r2, [sp, #0x18] + ldr r12, [sp, #0x48] + str r2, [sp, #0x0] + ldr r2, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [sp, #0x44] + str r2, [sp, #0x8] + ldr r2, [sp, #0x28] + mla r0, r12, r0, r2 + mov r2, r9 + bl FUN_020B6F18 + add r8, r8, #0x8 + add r7, r7, #0x1 + cmp r8, r5 + blt _020B6630 +_020B66B0: + ldr r0, [sp, #0x14] + add r6, r6, #0x1 + add r1, r0, #0x8 + ldr r0, [sp, #0x24] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B65E4 + add sp, sp, #0x54 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B66D4 +FUN_020B66D4: ; 0x020B66D4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + ldrb r4, [r0, #0xc] + mov r10, r2 + str r1, [sp, #0xc] + str r4, [sp, #0x2c] + ldr r1, [sp, #0x2c] + ldr r4, [sp, #0x60] + cmp r1, #0x4 + add r1, r10, r4 + str r1, [sp, #0x18] + ldr r2, [sp, #0x64] + mov r1, r3 + add r1, r1, r2 + str r1, [sp, #0x1c] + ldrne r1, [sp, #0xc] + str r3, [sp, #0x10] + orrne r1, r1, r1, lsl #0x8 + orrne r1, r1, r1, lsl #0x10 + strne r1, [sp, #0xc] + bne _020B673C + ldr r1, [sp, #0xc] + orr r1, r1, r1, lsl #0x4 + orr r1, r1, r1, lsl #0x8 + orr r1, r1, r1, lsl #0x10 + str r1, [sp, #0xc] +_020B673C: + ldr r1, [sp, #0x10] + bic r1, r1, #0x7 + mov r2, r1, asr #0x2 + str r1, [sp, #0x14] + add r1, r1, r2, lsr #0x1d + ldr r2, [r0, #0x10] + mov r3, r1, asr #0x3 + mul r1, r3, r2 + bic r3, r10, #0x7 + str r3, [sp, #0x28] + ldr r3, [sp, #0x2c] + mov r6, r3, lsl #0x6 + ldr r3, [sp, #0x28] + mov r4, r6, asr #0x2 + mov r5, r3, asr #0x2 + add r5, r3, r5, lsr #0x1d + add r4, r6, r4, lsr #0x1d + mov r3, r4, asr #0x3 + str r3, [sp, #0x30] + ldr r3, [sp, #0x1c] + add r1, r1, r5, asr #0x3 + add r4, r3, #0x7 + ldr r3, [r0, #0x0] + ldr r0, [sp, #0x18] + add r5, r0, #0x7 + ldr r0, [sp, #0x30] + bic r7, r5, #0x7 + mla r1, r0, r1, r3 + bic r0, r4, #0x7 + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r1, [sp, #0x24] + mul r0, r2, r0 + str r0, [sp, #0x34] + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x20] + cmp r1, r0 + addge sp, sp, #0x3c + ldmgeia sp!, {r4-r11,pc} +_020B67D8: ; 0x020B67D8 + mov r5, #0x0 + mov r4, #0x8 +_020B67E0: + ldr r1, [sp, #0x14] + ldr r0, [sp, #0x10] + ldr r6, [sp, #0x24] + cmp r1, r0 + movlt r1, r0 + ldrlt r0, [sp, #0x14] + sublt r9, r1, r0 + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x14] + movge r9, r5 + sub r0, r1, r0 + cmp r0, #0x8 + movgt r0, r4 + sub r11, r0, r9 + ldr r0, [sp, #0x28] + cmp r0, r7 + mov r8, r0 + bge _020B687C +_020B6828: + ldr r0, [sp, #0x18] + cmp r8, r10 + sublt r1, r10, r8 + sub r0, r0, r8 + movge r1, r5 + cmp r0, #0x8 + movgt r0, r4 + sub r3, r0, r1 + ldr r0, [sp, #0xc] + str r11, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [sp, #0x2c] + mov r2, r9 + str r0, [sp, #0x8] + mov r0, r6 + bl FUN_020B6F18 + ldr r0, [sp, #0x30] + add r8, r8, #0x8 + add r6, r6, r0 + cmp r8, r7 + blt _020B6828 +_020B687C: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x34] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x14] + add r1, r0, #0x8 + ldr r0, [sp, #0x20] + str r1, [sp, #0x14] + cmp r1, r0 + blt _020B67E0 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B68AC +FUN_020B68AC: ; 0x020B68AC + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldrb r2, [r3, #0xc] + ldr r12, [r3, #0x4] + cmp r2, #0x4 + orreq r0, r1, r1, lsl #0x4 + orreq r0, r0, r0, lsl #0x8 + orreq r1, r0, r0, lsl #0x10 + orrne r0, r1, r1, lsl #0x8 + orrne r1, r0, r0, lsl #0x10 + ldr r0, [r3, #0x8] + mov r2, r2, lsl #0x6 + mul lr, r12, r0 + mov r0, r2, asr #0x2 + add r0, r2, r0, lsr #0x1d + mov r2, r0, asr #0x3 + mov r0, r1 + mul r2, lr, r2 + ldr r1, [r3, #0x0] + bl MIi_CpuClearFast + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020B6908 +FUN_020B6908: ; 0x020B6908 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4c + ldr r7, [sp, #0x74] + ldrb r5, [r0, #0xc] + ldr r6, [r1, #0x0] + ldr r4, [r7, #0x0] + ldr r9, [r6, #0x8] + mov r8, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r8, asr #0x2 + add r5, r8, r5, lsr #0x1d + ldrb r9, [r9, #0x1] + ldr r8, [r0, #0x4] + ldr r6, [r0, #0x8] + str r2, [sp, #0x8] + str r3, [sp, #0xc] + cmp r4, #0x0 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r11,pc} +_020B6958: ; 0x020B6958 + adds r3, r2, r4 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} +_020B6964: ; 0x020B6964 + ldr r2, [sp, #0xc] + adds r2, r2, r9 + addmi sp, sp, #0x4c + ldmmiia sp!, {r4-r11,pc} +_020B6974: ; 0x020B6974 + ldr r10, [sp, #0x8] + add r3, r3, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + strle r10, [sp, #0x10] + movgt r10, r10, lsr #0x3 + strgt r10, [sp, #0x10] + ldr r10, [sp, #0xc] + add r2, r2, #0x7 + cmp r10, #0x0 + movle r10, #0x0 + mov r11, r2, lsr #0x3 + mov r3, r3, lsr #0x3 + movgt r10, r10, lsr #0x3 + cmp r3, r8 + movcs r3, r8 + cmp r11, r6 + ldr r2, [sp, #0x10] + movcs r11, r6 + subs r8, r3, r2 + addmi sp, sp, #0x4c + sub r3, r11, r10 + ldmmiia sp!, {r4-r11,pc} +_020B69D0: ; 0x020B69D0 + cmp r3, #0x0 + addlt sp, sp, #0x4c + ldmltia sp!, {r4-r11,pc} +_020B69DC: ; 0x020B69DC + ldr r2, [sp, #0x8] + ldr r6, [r0, #0x0] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0x8] + ldr r2, [sp, #0xc] + ldr r11, [sp, #0x8] + cmp r2, #0x0 + andge r2, r2, #0x7 + strge r2, [sp, #0xc] + sub r8, r11, r8, lsl #0x3 + ldr r11, [sp, #0xc] + ldr r2, [sp, #0x70] + sub r3, r11, r3, lsl #0x3 + str r3, [sp, #0x14] + ldr r3, [r7, #0x4] + sub r2, r2, #0x1 + str r3, [sp, #0x28] + str r2, [sp, #0x48] + str r9, [sp, #0x38] + str r4, [sp, #0x34] + ldr r4, [r1, #0x0] + ldr r2, [sp, #0x14] + mov r3, r11 + cmp r3, r2 + ldr r2, [r4, #0x8] + ldrb r3, [r2, #0x6] + str r3, [sp, #0x40] + ldrb r2, [r0, #0xc] + str r2, [sp, #0x44] + ldr r1, [r1, #0x0] + ldr r1, [r1, #0x8] + ldrb r1, [r1, #0x0] + mul r1, r3, r1 + str r1, [sp, #0x3c] + ldr r1, [r0, #0x10] + str r1, [sp, #0x20] + ldr r1, [r0, #0x4] + ldr r0, [r0, #0x8] + ldrb r11, [sp, #0x20] + ldrb r4, [sp, #0x21] + str r1, [sp, #0x1c] + str r0, [sp, #0x18] + addle sp, sp, #0x4c + ldmleia sp!, {r4-r11,pc} +_020B6A90: + ldr r0, [sp, #0xc] + ldr r7, [sp, #0x10] + str r0, [sp, #0x30] + ldr r0, [sp, #0x8] + cmp r0, r8 + mov r9, r0 + ble _020B6AEC +_020B6AAC: + ldr r2, [sp, #0x1c] + str r11, [sp, #0x0] + ldr r3, [sp, #0x18] + mov r0, r7 + mov r1, r10 + str r4, [sp, #0x4] + bl FUN_020B7068 + mla r1, r0, r5, r6 + add r0, sp, #0x24 + str r9, [sp, #0x2c] + str r1, [sp, #0x24] + bl FUN_020B6CAC + sub r9, r9, #0x8 + add r7, r7, #0x1 + cmp r9, r8 + bgt _020B6AAC +_020B6AEC: + ldr r0, [sp, #0xc] + add r10, r10, #0x1 + sub r1, r0, #0x8 + ldr r0, [sp, #0x14] + str r1, [sp, #0xc] + cmp r1, r0 + bgt _020B6A90 + add sp, sp, #0x4c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6B10 +FUN_020B6B10: ; 0x020B6B10 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x2c + ldr r4, [sp, #0x54] + ldrb r5, [r0, #0xc] + str r4, [sp, #0x54] + ldr r4, [r4, #0x0] + ldr r6, [r1, #0x0] + mov r7, r5, lsl #0x6 + ldrb r4, [r4, #0x1] + mov r5, r7, asr #0x2 + add r5, r7, r5, lsr #0x1d + cmp r4, #0x0 + ldr r6, [r6, #0x8] + mov r9, r3 + ldr r8, [r0, #0x4] + ldr r7, [r0, #0x8] + mov r10, r2 + mov r5, r5, asr #0x3 + addeq sp, sp, #0x2c + ldr lr, [r0, #0x0] + ldrb r3, [r6, #0x1] + ldmeqia sp!, {r4-r11,pc} +_020B6B68: ; 0x020B6B68 + adds r6, r10, r4 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} +_020B6B74: ; 0x020B6B74 + adds r2, r9, r3 + addmi sp, sp, #0x2c + ldmmiia sp!, {r4-r11,pc} +_020B6B80: ; 0x020B6B80 + cmp r10, #0x0 + movle r11, #0x0 + add r6, r6, #0x7 + movgt r11, r10, lsr #0x3 + cmp r9, #0x0 + movle r12, #0x0 + add r2, r2, #0x7 + mov r6, r6, lsr #0x3 + movgt r12, r9, lsr #0x3 + cmp r6, r8 + movcs r6, r8 + mov r2, r2, lsr #0x3 + cmp r2, r7 + movcs r2, r7 + subs r7, r6, r11 + addmi sp, sp, #0x2c + sub r2, r2, r12 + ldmmiia sp!, {r4-r11,pc} +_020B6BC8: ; 0x020B6BC8 + cmp r2, #0x0 + addlt sp, sp, #0x2c + ldmltia sp!, {r4-r11,pc} +_020B6BD4: ; 0x020B6BD4 + ldr r6, [r0, #0x10] + cmp r10, #0x0 + sub r8, r6, r7 + mul r8, r5, r8 + mla r11, r6, r12, r11 + andge r10, r10, #0x7 + str r8, [sp, #0x0] + ldr r8, [sp, #0x54] + mla r6, r5, r11, lr + ldr r12, [r8, #0x4] + ldr r11, [sp, #0x50] + cmp r9, #0x0 + sub r8, r11, #0x1 + andge r9, r9, #0x7 + sub r11, r9, r2, lsl #0x3 + str r12, [sp, #0x8] + str r4, [sp, #0x14] + str r8, [sp, #0x28] + str r3, [sp, #0x18] + ldr r3, [r1, #0x0] + cmp r9, r11 + ldr r2, [r3, #0x8] + sub r7, r10, r7, lsl #0x3 + ldrb r2, [r2, #0x6] + str r2, [sp, #0x20] + ldrb r0, [r0, #0xc] + str r0, [sp, #0x24] + ldr r0, [r1, #0x0] + ldr r0, [r0, #0x8] + ldrb r0, [r0, #0x0] + mul r0, r2, r0 + str r0, [sp, #0x1c] + addle sp, sp, #0x2c + ldmleia sp!, {r4-r11,pc} +_020B6C5C: ; 0x020B6C5C + add r4, sp, #0x4 +_020B6C60: + mov r8, r10 + str r9, [sp, #0x10] + cmp r10, r7 + ble _020B6C90 +_020B6C70: + mov r0, r4 + str r6, [sp, #0x4] + str r8, [sp, #0xc] + bl FUN_020B6CAC + sub r8, r8, #0x8 + cmp r8, r7 + add r6, r6, r5 + bgt _020B6C70 +_020B6C90: + ldr r0, [sp, #0x0] + sub r9, r9, #0x8 + cmp r9, r11 + add r6, r6, r0 + bgt _020B6C60 + add sp, sp, #0x2c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6CAC +FUN_020B6CAC: ; 0x020B6CAC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + ldr r5, [r0, #0x8] + ldr r4, [r0, #0xc] + cmp r5, #0x0 + strge r5, [sp, #0x0] + movlt r1, #0x0 + strlt r1, [sp, #0x0] + ldr r1, [r0, #0x10] + cmp r4, #0x0 + add r10, r5, r1 + ldr r1, [r0, #0x14] + movge r2, r4 + movlt r2, #0x0 + cmp r10, #0x8 + add r3, r4, r1 + movge r10, #0x8 + cmp r3, #0x8 + movge r3, #0x8 + cmp r4, #0x0 + movgt r4, #0x0 + cmp r5, #0x0 + ldr r8, [r0, #0x20] + movgt r5, #0x0 + rsb r1, r4, #0x0 + mul r7, r10, r8 + ldr r6, [r0, #0x1c] + rsb r4, r5, #0x0 + mul r9, r6, r4 + ldr r4, [r0, #0x18] + mov r10, r7 + str r4, [sp, #0x8] + ldr r4, [sp, #0x0] + cmp r8, #0x4 + mul r5, r4, r8 + ldr r4, [sp, #0x8] + str r5, [sp, #0x0] + mla r11, r1, r4, r9 + ldr r1, [r0, #0x4] + str r1, [sp, #0x4] + bne _020B6E24 + ldr r1, [r0, #0x0] + ldr r7, [r0, #0x24] + add r0, r1, r2, lsl #0x2 + str r0, [sp, #0xc] + add r0, r1, r3, lsl #0x2 + ldr r1, [sp, #0xc] + str r0, [sp, #0x10] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} +_020B6D78: ; 0x020B6D78 + mov r0, #0x0 + add r9, sp, #0x24 + mov r4, #0xf + str r0, [sp, #0x1c] +_020B6D88: + ldr r0, [sp, #0xc] + mov r1, r11, lsr #0x1f + ldr r5, [r0, #0x0] + ldr r0, [sp, #0x4] + rsb r2, r1, r11, lsl #0x1d + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x24] + ldr r0, [sp, #0x1c] + add r1, r1, r2, ror #0x1d + strb r0, [sp, #0x28] + strb r0, [sp, #0x29] + mov r0, r9 + bl FUN_020B76B0 + ldr r8, [sp, #0x0] + mov r0, r8 + cmp r0, r10 + bhs _020B6DF8 +_020B6DCC: + mov r0, r9 + mov r1, r6 + bl FUN_020B76B0 +_020B6DD8: ; 0x020B6DD8 + cmp r0, #0x0 + mvnne r1, r4, lsl r8 + addne r0, r7, r0 + andne r1, r5, r1 + orrne r5, r1, r0, lsl r8 + add r8, r8, #0x4 + cmp r8, r10 + blo _020B6DCC +_020B6DF8: + ldr r0, [sp, #0xc] + add r1, r0, #0x4 + str r5, [r0, #0x0] + ldr r0, [sp, #0x10] + str r1, [sp, #0xc] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6D88 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020B6E24: + ldr r1, [r0, #0x0] + ldr r9, [r0, #0x24] + add r0, r1, r2, lsl #0x3 + str r0, [sp, #0x14] + add r0, r1, r3, lsl #0x3 + ldr r1, [sp, #0x14] + str r0, [sp, #0x18] + cmp r1, r0 + addcs sp, sp, #0x34 + ldmcsia sp!, {r4-r11,pc} +_020B6E4C: ; 0x020B6E4C + mov r0, #0x0 + mov r4, #0xff + str r0, [sp, #0x20] +_020B6E58: + mov r1, r11, lsr #0x1f + rsb r0, r1, r11, lsl #0x1d + add r1, r1, r0, ror #0x1d + ldr r0, [sp, #0x14] + ldr r8, [r0, #0x0] + ldr r7, [r0, #0x4] + ldr r0, [sp, #0x4] + add r0, r0, r11, lsr #0x3 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x20] + strb r0, [sp, #0x30] + strb r0, [sp, #0x31] + add r0, sp, #0x2c + bl FUN_020B76B0 +_020B6E90: ; 0x020B6E90 + ldr r0, [sp, #0x0] + cmp r0, r10 + mov r5, r0 + bhs _020B6EE8 +_020B6EA0: + add r0, sp, #0x2c + mov r1, r6 + bl FUN_020B76B0 +_020B6EAC: ; 0x020B6EAC + cmp r0, #0x0 + beq _020B6EDC + cmp r5, #0x20 + mvncc r1, r4, lsl r5 + addcc r0, r9, r0 + andcc r1, r8, r1 + orrcc r8, r1, r0, lsl r5 + subcs r2, r5, #0x20 + mvncs r1, r4, lsl r2 + addcs r0, r9, r0 + andcs r1, r7, r1 + orrcs r7, r1, r0, lsl r2 +_020B6EDC: + add r5, r5, #0x8 + cmp r5, r10 + blo _020B6EA0 +_020B6EE8: + ldr r0, [sp, #0x14] + str r8, [r0, #0x0] + add r1, r0, #0x8 + str r7, [r0, #0x4] + ldr r0, [sp, #0x18] + str r1, [sp, #0x14] + cmp r1, r0 + ldr r0, [sp, #0x8] + add r11, r11, r0 + blo _020B6E58 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B6F18 +FUN_020B6F18: ; 0x020B6F18 + stmdb sp!, {r4-r6,lr} + mov lr, r0 + cmp r3, #0x8 + ldr r0, [sp, #0x14] + bne _020B6F4C + ldr r4, [sp, #0x10] + cmp r4, #0x8 + bne _020B6F4C + ldr r2, [sp, #0x18] + mov r1, lr + mov r2, r2, lsl #0x3 + bl MIi_CpuClearFast + ldmia sp!, {r4-r6,pc} +_020B6F4C: + ldr r4, [sp, #0x18] + cmp r4, #0x4 + bne _020B6FAC + mov r5, r1, lsl #0x2 + add r4, r5, r3, lsl #0x2 + mvn r3, #0x0 + rsb r4, r4, #0x20 + mov r3, r3, lsr r5 + add r1, r4, r1, lsl #0x2 + mov r3, r3, lsl r1 + ldr r1, [sp, #0x10] + add r5, lr, r2, lsl #0x2 + add r2, r5, r1, lsl #0x2 + and r6, r0, r3, lsr r4 + cmp r5, r2 + mvn r1, r3, lsr r4 + ldmcsia sp!, {r4-r6,pc} +_020B6F90: + ldr r0, [r5, #0x0] + and r0, r0, r1 + orr r0, r6, r0 + str r0, [r5], #0x4 + cmp r5, r2 + blo _020B6F90 + ldmia sp!, {r4-r6,pc} +_020B6FAC: + mov r12, r1, lsl #0x3 + add r1, r12, r3, lsl #0x3 + rsb r1, r1, #0x40 + mvn r3, #0x0 + cmp r1, #0x20 + mov r5, r3, lsr r12 + subcs r4, r1, #0x20 + addcs r3, r12, r4 + movcs r3, r5, lsl r3 + movcs r3, r3, lsr r4 + movcc r3, r5, lsl r12 + mvn r4, #0x0 + add r5, lr, r2, lsl #0x3 + cmp r12, #0x20 + mov r4, r4, lsl r1 + subcs r12, r12, #0x20 + addcs r1, r12, r1 + movcs r1, r4, lsr r1 + movcs r6, r1, lsl r12 + movcc r6, r4, lsr r1 + ldr r1, [sp, #0x10] + and lr, r0, r3 + add r4, r5, r1, lsl #0x3 + cmp r5, r4 + and r12, r0, r6 + mvn r2, r3 + mvn r1, r6 + ldmcsia sp!, {r4-r6,pc} +_020B701C: + ldr r0, [r5, #0x0] + and r0, r0, r2 + orr r0, lr, r0 + str r0, [r5, #0x0] + ldr r0, [r5, #0x4] + and r0, r0, r1 + orr r0, r12, r0 + str r0, [r5, #0x4] + add r5, r5, #0x8 + cmp r5, r4 + blo _020B701C + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B704C +FUN_020B704C: ; 0x020B704C + ldrb r3, [r0, #0x1] + ldr r2, _020B7064 ; =0x020FF990 + ldrb r1, [r0, #0x0] + add r0, r2, r3, lsl #0x4 + ldr r0, [r0, r1, lsl #0x2] + bx lr + .balign 4 +_020B7064: .word 0x020FF990 + + arm_func_start FUN_020B7068 +FUN_020B7068: ; 0x020B7068 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr fp, _020B7164 ; =0x020FF970 + mov r9, #0x0 + mov r10, #0x3 + mvn r7, #0x0 +_020B7080: + ldr r4, [sp, #0x2c] + ldr r6, [sp, #0x28] + and r12, r3, r7, lsl r4 + cmp r12, r1 + mov r8, r7, lsl r6 + mov r5, r7, lsl r4 + and lr, r2, r7, lsl r6 + bhi _020B70D0 + mla r9, r2, r12, r9 + cmp lr, r0 + movhi r2, lr + subhi r1, r1, r12 + subhi r3, r3, r12 + bhi _020B7118 + sub r3, r3, r12 + mla r9, lr, r3, r9 + sub r0, r0, lr + sub r1, r1, r12 + sub r2, r2, lr + b _020B7118 +_020B70D0: + cmp lr, r0 + mlals r9, lr, r12, r9 + mvn r3, r5 + movls r3, r12 + subls r0, r0, lr + subls r2, r2, lr + bls _020B7118 + and r2, r1, r5 + mla r5, lr, r2, r9 + and r2, r0, r8 + and r1, r1, r3 + add r2, r5, r2, lsl r4 + mvn r3, r8 + add r1, r2, r1, lsl r6 + and r0, r0, r3 + add sp, sp, #0x4 + add r0, r1, r0 + ldmia sp!, {r4-r11,pc} +_020B7118: + cmp r2, #0x8 + movlt r4, r2 + movge r5, r10 + clzlt r4, r4 + rsblt r5, r4, #0x1f + cmp r3, #0x8 + movge r4, r10 + movlt r4, r3 + clzlt r4, r4 + rsblt r4, r4, #0x1f + add r4, r11, r4, lsl #0x3 + add r6, r4, r5, lsl #0x1 + ldrb r5, [r4, r5, lsl #0x1] + ldrb r4, [r6, #0x1] + str r5, [sp, #0x28] + str r4, [sp, #0x2c] + b _020B7080 +_020B715C: ; 0x020B715C + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7164: .word 0x020FF970 + + arm_func_start FUN_020B7168 +FUN_020B7168: ; 0x020B7168 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + ldr r12, [sp, #0x28] + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + ands r0, r12, #0x100 + beq _020B71AC + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r1, [sp, #0x20] + sub r0, r1, r0 + add r5, r5, r0 + b _020B71E4 +_020B71AC: + ands r0, r12, #0x80 + beq _020B71E4 + ldr r0, [r7, #0x4] + ldr r1, [r7, #0xc] + ldr r2, [sp, #0x2c] + bl FUN_020B5B54 + ldr r2, [sp, #0x20] + add r1, r0, #0x1 + add r0, r2, #0x1 + add r0, r0, r0, lsr #0x1f + mov r2, r0, asr #0x1 + add r0, r1, r1, lsr #0x1f + sub r0, r2, r0, asr #0x1 + add r5, r5, r0 +_020B71E4: + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x28] + str r1, [sp, #0x0] + ldr r12, [sp, #0x2c] + str r0, [sp, #0x4] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str r12, [sp, #0x8] + bl FUN_020B72C4 + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B7218 +FUN_020B7218: ; 0x020B7218 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x18 + ldr r4, [sp, #0x34] + mov r8, r0 + str r4, [sp, #0x0] + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x30] + ldr r1, [r8, #0x4] + ldr r2, [r8, #0x8] + ldr r3, [r8, #0xc] + add r0, sp, #0xc + bl FUN_020B5ABC + ands r0, r4, #0x10 + ldrne r0, [sp, #0xc] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r7, r7, r0, asr #0x1 + bne _020B7274 + ands r0, r4, #0x20 + ldrne r0, [sp, #0xc] + subne r7, r7, r0 +_020B7274: + ands r0, r4, #0x2 + ldrne r0, [sp, #0x10] + addne r0, r0, #0x1 + addne r0, r0, r0, lsr #0x1f + subne r6, r6, r0, asr #0x1 + bne _020B7298 + ands r0, r4, #0x4 + ldrne r0, [sp, #0x10] + subne r6, r6, r0 +_020B7298: + str r5, [sp, #0x0] + ldr r0, [sp, #0x34] + str r4, [sp, #0x4] + str r0, [sp, #0x8] + ldr r3, [sp, #0xc] + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl FUN_020B72C4 + add sp, sp, #0x18 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B72C4 +FUN_020B72C4: ; 0x020B72C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r4, [r10, #0x4] + ldr r0, [sp, #0x40] + ldr r4, [r4, #0x0] + ldr r5, [r10, #0xc] + ldrsb r4, [r4, #0x1] + cmp r0, #0x0 + mov r9, r1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x38] + mov r8, r2 + str r0, [sp, #0x38] + mov r7, r3 + add r6, r5, r4 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4-r11,pc} +_020B730C: ; 0x020B730C + add r0, r7, #0x1 + ldr r1, [sp, #0x3c] + add r0, r0, r0, lsr #0x1f + mov r0, r0, asr #0x1 + and r5, r1, #0x800 + and r11, r1, #0x400 + str r0, [sp, #0x8] + mov r4, #0x0 +_020B732C: + mov r1, r9 + cmp r5, #0x0 + beq _020B7358 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 +_020B734C: ; 0x020B734C + sub r0, r7, r0 + add r1, r9, r0 + b _020B7388 +_020B7358: + cmp r11, #0x0 + beq _020B7388 + ldr r0, [r10, #0x4] + ldr r1, [r10, #0x8] + ldr r2, [sp, #0xc] + mov r3, r4 + bl FUN_020B5BC8 + add r0, r0, #0x1 + add r1, r0, r0, lsr #0x1f + ldr r0, [sp, #0x8] + sub r0, r0, r1, asr #0x1 + add r1, r9, r0 +_020B7388: + ldr r2, [sp, #0xc] + add r3, sp, #0xc + str r2, [sp, #0x0] + str r3, [sp, #0x4] + ldr r3, [sp, #0x38] + mov r0, r10 + mov r2, r8 + bl FUN_020B73C0 + ldr r0, [sp, #0xc] + add r8, r8, r6 + cmp r0, #0x0 + bne _020B732C + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B73C0 +FUN_020B73C0: ; 0x020B73C0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r0 + ldr r6, [r10, #0x8] + ldr r5, [r10, #0x4] + ldr r4, [sp, #0x30] + add r0, sp, #0x8 + str r4, [sp, #0x8] + ldr r4, [r5, #0x4] + mov r9, r1 + mov r8, r2 + mov r7, r3 + blx r4 + cmp r0, #0x0 + beq _020B743C + add r11, sp, #0x8 +_020B7400: + cmp r0, #0xa + beq _020B743C + str r7, [sp, #0x0] + str r0, [sp, #0x4] + ldr r0, [r10, #0x0] + mov r1, r5 + mov r2, r9 + mov r3, r8 + bl FUN_020B63CC + add r1, r9, r0 + mov r0, r11 + add r9, r1, r6 + blx r4 + cmp r0, #0x0 + bne _020B7400 +_020B743C: + ldr r1, [sp, #0x34] + cmp r1, #0x0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} +_020B744C: ; 0x020B744C + cmp r0, #0xa + ldreq r1, [sp, #0x8] + ldr r0, [sp, #0x34] + movne r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B7468 +FUN_020B7468: ; 0x020B7468 + stmdb sp!, {r4-r6,lr} + ldrh r2, [r0, #0xc] + ldrh r3, [r0, #0xe] + mov r1, #0x0 + add r2, r0, r2 + cmp r3, #0x0 + ldmleia sp!, {r4-r6,pc} +_020B7484: ; 0x020B7484 + ldr r3, _020B7548 ; =0x46494E46 + ldr ip, _020B754C ; =0x43574448 + ldr r4, _020B7550 ; =0x434D4150 + ldr lr, _020B7554 ; =0x43474C50 +_020B7494: + ldr r5, [r2, #0x0] + cmp r5, r4 + bhi _020B74B0 + cmp r5, r4 + bhs _020B7518 + cmp r5, lr + b _020B752C +_020B74B0: + cmp r5, r12 + bhi _020B74C4 + cmp r5, r12 + beq _020B7500 + b _020B752C +_020B74C4: + cmp r5, r3 + bne _020B752C + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + add r5, r5, r0 + str r5, [r6, #0x8] + ldr r5, [r6, #0xc] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0xc] + ldr r5, [r6, #0x10] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x10] + b _020B752C +_020B7500: + add r6, r2, #0x8 + ldr r5, [r6, #0x4] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x4] + b _020B752C +_020B7518: + add r6, r2, #0x8 + ldr r5, [r6, #0x8] + cmp r5, #0x0 + addne r5, r5, r0 + strne r5, [r6, #0x8] +_020B752C: + ldrh r5, [r0, #0xe] + ldr r6, [r2, #0x4] + add r1, r1, #0x1 + cmp r1, r5 + add r2, r2, r6 + blt _020B7494 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B7548: .word 0x46494E46 +_020B754C: .word 0x43574448 +_020B7550: .word 0x434D4150 +_020B7554: .word 0x43474C50 + + arm_func_start FUN_020B7558 +FUN_020B7558: ; 0x020B7558 + stmdb sp!, {r4-r6,lr} + movs r6, r0 + mov r5, r1 + beq _020B75C8 + cmp r6, #0x0 + beq _020B7584 + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7588 +_020B7584: + mov r0, #0x0 +_020B7588: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B75CC + cmp r6, #0x0 + beq _020B75B4 + ldrh r0, [r6, #0x6] + cmp r0, #0x100 + movcs r0, #0x1 + bhs _020B75B8 +_020B75B4: + mov r0, #0x0 +_020B75B8: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B75CC +_020B75C8: + mov r0, #0x0 +_020B75CC: + cmp r0, #0x0 + movne r4, #0x0 + bne _020B7654 + cmp r6, #0x0 + beq _020B7640 + cmp r6, #0x0 + beq _020B75FC + ldr r1, [r6, #0x0] + ldr r0, _020B76A8 ; =0x4E465452 + cmp r1, r0 + moveq r0, #0x1 + beq _020B7600 +_020B75FC: + mov r0, #0x0 +_020B7600: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + cmp r0, #0x0 + beq _020B7644 + cmp r6, #0x0 + beq _020B762C + ldrh r0, [r6, #0x6] + cmp r0, #0x1 + movcs r0, #0x1 + bhs _020B7630 +_020B762C: + mov r0, #0x0 +_020B7630: + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + b _020B7644 +_020B7640: + mov r0, #0x0 +_020B7644: + cmp r0, #0x0 + movne r4, #0x1 + bne _020B7654 + bl OS_Terminate +_020B7654: + mov r0, r6 + bl FUN_020B7468 + ldr r1, _020B76AC ; =0x46494E46 + mov r0, r6 + bl FUN_020B01F8 +_020B7668: ; 0x020B7668 + cmp r0, #0x0 + moveq r0, #0x0 + streq r0, [r5, #0x0] + ldmeqia sp!, {r4-r6,pc} +_020B7678: ; 0x020B7678 + add r0, r0, #0x8 + str r0, [r5, #0x0] + cmp r4, #0x0 + beq _020B76A0 + ldr r2, [r5, #0x0] + mov r1, #0x0 + ldrsb r0, [r2, #0x6] + strb r0, [r2, #0x7] + ldr r0, [r5, #0x0] + strb r1, [r0, #0x6] +_020B76A0: + add r0, r4, #0x1 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B76A8: .word 0x4E465452 +_020B76AC: .word 0x46494E46 + + arm_func_start FUN_020B76B0 +FUN_020B76B0: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrsb r2, [r0, #0x4] + ldrb r12, [r0, #0x5] + mov r4, r1 + cmp r2, r4 + subge r1, r2, r4 + movge r5, r12, lsr r1 + strgeb r1, [r0, #0x4] + bge _020B7704 + ldr r3, [r0, #0x0] + sub r1, r4, r2 + add r2, r3, #0x1 + str r2, [r0, #0x0] + ldrb r2, [r3, #0x0] + mov r5, r12, lsl r1 + strb r2, [r0, #0x5] + mov r2, #0x8 + strb r2, [r0, #0x4] + bl FUN_020B76B0 + orr r5, r0, r5 +_020B7704: + rsb r0, r4, #0x8 + mov r1, #0xff + and r0, r5, r1, asr r0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7718 +FUN_020B7718: ; 0x020B7718 + ldr r1, [r0, #0x0] + ldrh r2, [r1], #0x2 + str r1, [r0, #0x0] + mov r0, r2 + bx lr + + arm_func_start FUN_020B772C +FUN_020B772C: ; 0x020B772C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + ldrb r0, [r6, #0x9] + mov r5, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} +_020B774C: ; 0x020B774C + add r4, r6, #0x8 +_020B7750: + ldrh r0, [r6, #0xe] + ldrh r1, [r4, r0] + add r0, r4, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r7, r6, r0 + mov r0, r7 + bl FUN_020B79A4 + mov r0, r7 + bl FUN_020B780C + ldrb r0, [r6, #0x9] + add r5, r5, #0x1 + cmp r5, r0 + blo _020B7750 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B7790 +FUN_020B7790: ; 0x020B7790 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrb r0, [r8, #0x9] + mov r7, r1 + mov r5, #0x1 + cmp r0, #0x0 + mov r6, #0x0 + bls _020B7800 + add r4, r8, #0x8 +_020B77B8: + ldrh r0, [r8, #0xe] + mov r1, r7 + ldrh r2, [r4, r0] + add r0, r4, r0 + mla r0, r2, r6, r0 + ldr r0, [r0, #0x4] + add r9, r8, r0 + mov r0, r9 + bl FUN_020B7A04 + and r5, r5, r0 + mov r0, r9 + mov r1, r7 + bl FUN_020B7864 + ldrb r1, [r8, #0x9] + add r6, r6, #0x1 + and r5, r5, r0 + cmp r6, r1 + blo _020B77B8 +_020B7800: + mov r0, r5 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020B780C +FUN_020B780C: ; 0x020B780C + ldr r2, [r0, #0x8] + mov r1, #0x0 + add r2, r0, r2 + ldrh r0, [r2, #0x2] + add r12, r2, r0 + ldrb r0, [r12, #0x1] + cmp r0, #0x0 + bxls lr +_020B782C: + ldrh r2, [r12, #0x6] + ldrh r0, [r12, r2] + add r2, r12, r2 + add r2, r2, #0x4 + mla r3, r0, r1, r2 + ldrb r0, [r3, #0x3] + add r1, r1, #0x1 + ands r2, r0, #0x1 + bicne r0, r0, #0x1 + strneb r0, [r3, #0x3] + ldrb r0, [r12, #0x1] + cmp r1, r0 + blo _020B782C + bx lr + + arm_func_start FUN_020B7864 +FUN_020B7864: ; 0x020B7864 + stmdb sp!, {r4-r10,lr} + ldr r2, [r0, #0x8] + mov r10, r1 + add r9, r0, r2 + ldrh r0, [r9, #0x2] + mov r6, #0x1 + mov r7, #0x0 + add r8, r9, r0 + ldrb r0, [r8, #0x1] + cmp r0, #0x0 + bls _020B7908 + mov r5, r7 + mov r4, r7 +_020B7898: + ldrh r1, [r8, #0x6] + ldrh r0, [r10, #0x34] + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r0, r10, r0 + add r1, r2, r1 + add r1, r1, r5 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B78F0 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B78F4 + mov r0, r9 + mov r2, r10 + bl FUN_020B7910 +_020B78EC: ; 0x020B78EC + b _020B78F4 +_020B78F0: + mov r6, r4 +_020B78F4: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r5, r5, #0x10 + cmp r7, r0 + blo _020B7898 +_020B7908: + mov r0, r6 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020B7910 +FUN_020B7910: + stmdb sp!, {r4-r6,lr} + ldrh r5, [r1, #0x0] + ldr r2, [r2, #0x2c] + ldrh r4, [r3, #0x2] + mov r2, r2, lsl #0x10 + add r12, r0, r5 + mov r5, r2, lsr #0x10 + ands r2, r4, #0x1 + ldrh r4, [r3, #0x0] + moveq r3, r5, lsl #0xf + moveq r5, r3, lsr #0x10 + moveq r2, r4, lsl #0xf + moveq r4, r2, lsr #0x10 + ldrb r3, [r1, #0x2] + mov r2, #0x0 + cmp r3, #0x0 + bls _020B7994 + add r3, r4, r5 + mov r3, r3, lsl #0x10 + add r6, r0, #0x4 + mov r4, r3, lsr #0x10 +_020B7964: + ldrh r5, [r0, #0xa] + ldrb r3, [r12, r2] + add r2, r2, #0x1 + ldrh lr, [r6, r5] + add r5, r6, r5 + mla r3, lr, r3, r5 + ldr r3, [r3, #0x4] + add r3, r0, r3 + strh r4, [r3, #0x1c] + ldrb r3, [r1, #0x2] + cmp r2, r3 + blo _020B7964 +_020B7994: + ldrb r0, [r1, #0x3] + orr r0, r0, #0x1 + strb r0, [r1, #0x3] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B79A4 +FUN_020B79A4: ; 0x020B79A4 + stmdb sp!, {r4-r6,lr} + ldr r2, [r0, #0x8] + mov r4, #0x0 + ldrh r1, [r0, r2] + add r6, r0, r2 + add r5, r6, r1 + ldrb r0, [r5, #0x1] + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020B79C8: + ldrh r1, [r5, #0x6] + ldrh r0, [r5, r1] + add r1, r5, r1 + add r1, r1, #0x4 + mla r1, r0, r4, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + beq _020B79F0 + mov r0, r6 + bl FUN_020B7AB8 +_020B79F0: + ldrb r0, [r5, #0x1] + add r4, r4, #0x1 + cmp r4, r0 + blo _020B79C8 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B7A04 +FUN_020B7A04: ; 0x020B7A04 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + mov r10, r1 + ldrh r1, [r0, r2] + add r9, r0, r2 + mov r11, #0x1 + add r8, r9, r1 + ldrb r0, [r8, #0x1] + mov r7, #0x0 + cmp r0, #0x0 + bls _020B7AAC + mov r6, r7 + mov r4, r7 + add r5, r10, #0x3c +_020B7A40: + ldrh r1, [r8, #0x6] + mov r0, r5 + add r2, r8, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC2A0 + movs r3, r0 + beq _020B7A94 + ldrh r1, [r8, #0x6] + ldrh r0, [r8, r1] + add r1, r8, r1 + add r1, r1, #0x4 + mla r1, r0, r7, r1 + ldrb r0, [r1, #0x3] + ands r0, r0, #0x1 + bne _020B7A98 + mov r0, r9 + mov r2, r10 + bl FUN_020B7B40 +_020B7A90: ; 0x020B7A90 + b _020B7A98 +_020B7A94: + mov r11, r4 +_020B7A98: + ldrb r0, [r8, #0x1] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020B7A40 +_020B7AAC: + mov r0, r11 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B7AB8 +FUN_020B7AB8: ; 0x020B7AB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r1, #0x0] + ldrb r2, [r1, #0x2] + mov r3, #0x0 + add r12, r0, r4 + cmp r2, #0x0 + bls _020B7B28 + add r2, r0, #0x4 + mov r5, #0x1000 + ldr lr, _020B7B3C ; =0xC00F0000 +_020B7AE4: + ldrh r7, [r0, #0xa] + ldrb r4, [r12, r3] + add r3, r3, #0x1 + ldrh r6, [r2, r7] + add r7, r2, r7 + mla r4, r6, r4, r7 + ldr r4, [r4, #0x4] + add r6, r0, r4 + ldr r4, [r6, #0x14] + and r4, r4, lr + str r4, [r6, #0x14] + str r5, [r6, #0x24] + ldr r4, [r6, #0x24] + str r4, [r6, #0x28] + ldrb r4, [r1, #0x2] + cmp r3, r4 + blo _020B7AE4 +_020B7B28: + ldrb r0, [r1, #0x3] + bic r0, r0, #0x1 + strb r0, [r1, #0x3] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B7B3C: .word 0xC00F0000 + + arm_func_start FUN_020B7B40 +FUN_020B7B40: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r11, r1 + mov r9, r3 + ldr r1, [r9, #0x0] + mov r10, r0 + and r0, r1, #0x1c000000 + cmp r0, #0x14000000 + ldrh r3, [r11, #0x0] + ldrne r1, [r2, #0x8] + mov r8, #0x0 + add r0, r10, r3 + str r0, [sp, #0x4] + ldrne r0, _020B7C50 ; =0x0000FFFF + andne r0, r1, r0 + strne r0, [sp, #0x0] + ldreq r1, [r2, #0x18] + ldreq r0, _020B7C50 ; =0x0000FFFF + andeq r0, r1, r0 + streq r0, [sp, #0x0] + ldrb r0, [r11, #0x2] + cmp r0, #0x0 + bls _020B7C3C + mov r4, #0x1000 + add r5, r10, #0x4 +_020B7BA4: + ldrh r6, [r10, #0xa] + ldr r0, [sp, #0x4] + ldr r1, [r9, #0x0] + ldrb r2, [r0, r8] + ldrh r3, [r5, r6] + ldr r0, [sp, #0x0] + add r6, r5, r6 + add r0, r1, r0 + mla r1, r3, r2, r6 + ldr r1, [r1, #0x4] + add r6, r10, r1 + ldr r1, [r6, #0x14] + orr r0, r1, r0 + str r0, [r6, #0x14] + ldr r3, [r9, #0x4] + ldr r0, _020B7C54 ; =0x000007FF + ldrh r1, [r6, #0x20] + and r2, r3, r0 + and r7, r0, r3, lsr #0xb + cmp r2, r1 + moveq r0, r4 + beq _020B7C08 + mov r0, r2, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C08: + str r0, [r6, #0x24] + ldrh r1, [r6, #0x22] + cmp r7, r1 + moveq r0, r4 + beq _020B7C28 + mov r0, r7, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020B7C28: + str r0, [r6, #0x28] + ldrb r0, [r11, #0x2] + add r8, r8, #0x1 + cmp r8, r0 + blo _020B7BA4 +_020B7C3C: + ldrb r0, [r11, #0x3] + orr r0, r0, #0x1 + strb r0, [r11, #0x3] + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B7C50: .word 0x0000FFFF +_020B7C54: .word 0x000007FF + + arm_func_start FUN_020B7C58 +FUN_020B7C58: ; 0x020B7C58 + ldrh r2, [r0, #0x32] + mov r1, #0x0 + bic r2, r2, #0x1 + strh r2, [r0, #0x32] + ldr r2, [r0, #0x2c] + str r1, [r0, #0x2c] + mov r0, r2 + bx lr + + arm_func_start FUN_020B7C78 +FUN_020B7C78: ; 0x020B7C78 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r4, r1 + mov r5, r0 + beq _020B7C90 + bl GX_BeginLoadTexPltt +_020B7C90: + ldrh r2, [r5, #0x30] + ldr r0, [r5, #0x38] + ldr r3, [r5, #0x2c] + ldr r1, _020B7CD8 ; =0x0000FFFF + add r0, r5, r0 + and r1, r3, r1 + mov r1, r1, lsl #0x3 + mov r2, r2, lsl #0x3 + bl GX_LoadTexPltt + ldrh r0, [r5, #0x32] + cmp r4, #0x0 + addeq sp, sp, #0x4 + orr r0, r0, #0x1 + strh r0, [r5, #0x32] + ldmeqia sp!, {r4-r5,pc} +_020B7CCC: ; 0x020B7CCC + bl GX_EndLoadTexPltt + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B7CD8: .word 0x0000FFFF + + arm_func_start FUN_020B7CDC +FUN_020B7CDC: ; 0x020B7CDC + str r1, [r0, #0x2c] + bx lr + + arm_func_start FUN_020B7CE4 +FUN_020B7CE4: ; 0x020B7CE4 + ldrh r0, [r0, #0x30] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7CF0 +FUN_020B7CF0: ; 0x020B7CF0 + ldrh r12, [r0, #0x10] + mov r3, #0x0 + bic r12, r12, #0x1 + strh r12, [r0, #0x10] + ldrh r12, [r0, #0x20] + bic r12, r12, #0x1 + strh r12, [r0, #0x20] + ldr r12, [r0, #0x8] + str r12, [r1, #0x0] + str r3, [r0, #0x8] + ldr r1, [r0, #0x18] + str r1, [r2, #0x0] + str r3, [r0, #0x18] + bx lr + + arm_func_start FUN_020B7D28 +FUN_020B7D28: ; 0x020B7D28 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + movs r8, r1 + mov r9, r0 + beq _020B7D40 + bl GX_BeginLoadTex +_020B7D40: + ldrh r0, [r9, #0xc] + movs r2, r0, lsl #0x3 + beq _020B7D74 + ldr r1, [r9, #0x8] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x14] + and r1, r1, r0 + add r0, r9, r3 + mov r1, r1, lsl #0x3 + bl GX_LoadTex + ldrh r0, [r9, #0x10] + orr r0, r0, #0x1 + strh r0, [r9, #0x10] +_020B7D74: + ldrh r0, [r9, #0x1c] + movs r7, r0, lsl #0x3 + beq _020B7DDC + ldr r1, [r9, #0x18] + ldr r0, _020B7DF4 ; =0x0000FFFF + ldr r3, [r9, #0x24] + and r4, r1, r0 + mov r5, r4, lsl #0x3 + ldr r6, [r9, #0x28] + mov r1, r5 + mov r2, r7 + add r0, r9, r3 + add r6, r9, r6 + bl GX_LoadTex + ldr r0, _020B7DF8 ; =0x0001FFFF + and r1, r5, #0x40000 + and r0, r0, r4, lsl #0x3 + mov r0, r0, lsr #0x1 + add r2, r0, #0x20000 + mov r0, r6 + add r1, r2, r1, lsr #0x2 + mov r2, r7, lsr #0x1 + bl GX_LoadTex + ldrh r0, [r9, #0x20] + orr r0, r0, #0x1 + strh r0, [r9, #0x20] +_020B7DDC: + cmp r8, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r9,pc} +_020B7DE8: ; 0x020B7DE8 + bl GX_EndLoadTex + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B7DF4: .word 0x0000FFFF +_020B7DF8: .word 0x0001FFFF + + arm_func_start FUN_020B7DFC +FUN_020B7DFC: ; 0x020B7DFC + cmp r1, #0x0 + strne r1, [r0, #0x8] + cmp r2, #0x0 + strne r2, [r0, #0x18] + bx lr + + arm_func_start FUN_020B7E10 +FUN_020B7E10: ; 0x020B7E10 + ldrh r0, [r0, #0x1c] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7E1C +FUN_020B7E1C: ; 0x020B7E1C + ldrh r0, [r0, #0xc] + mov r0, r0, lsl #0x3 + bx lr + + arm_func_start FUN_020B7E28 +FUN_020B7E28: ; 0x020B7E28 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x8 + mov r4, r1 + bl FUN_020B7E88 +_020B7E40: ; 0x020B7E40 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7E88 +_020B7E54: ; 0x020B7E54 + cmp r0, #0x0 + bne _020B7E74 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7E88 +_020B7E68: ; 0x020B7E68 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B7E74: + ldr r0, [r5, #0x0] + orr r0, r0, #0x10 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7E88 +FUN_020B7E88: + ldr r2, [r0, #0x0] + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r2, r1 + bne _020B7EB8 + ldr r3, [r2, #0x10] + mov r2, #0x0 + str r3, [r0, #0x0] + str r2, [r1, #0x10] + mov r0, #0x1 + bx lr +_020B7EB8: + ldr r3, [r2, #0x10] + cmp r3, #0x0 + beq _020B7EF4 +_020B7EC4: + cmp r3, r1 + bne _020B7EE4 + ldr r1, [r3, #0x10] + mov r0, #0x0 + str r1, [r2, #0x10] + str r0, [r3, #0x10] + mov r0, #0x1 + bx lr +_020B7EE4: + mov r2, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B7EC4 +_020B7EF4: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B7EFC +FUN_020B7EFC: ; 0x020B7EFC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + ldr r2, [r4, #0x8] + mov r5, r0 + ldrb r0, [r2, #0x0] + cmp r0, #0x4a + beq _020B7F50 + cmp r0, #0x4d + beq _020B7F34 + cmp r0, #0x56 + beq _020B7F6C + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F34: + add r0, r5, #0x3c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x8 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F50: + add r0, r5, #0x44 + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x10 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020B7F6C: + add r0, r5, #0x4c + bl FUN_020B7F88 + mov r1, r4 + add r0, r5, #0x18 + bl FUN_020B7FF8 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7F88 +FUN_020B7F88: ; 0x020B7F88 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020B7F9C: ; 0x020B7F9C + mov r3, #0x1 + mov r4, #0x0 +_020B7FA4: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020B7FE4 +_020B7FB4: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020B7FB4 +_020B7FE4: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020B7FA4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020B7FF8 +FUN_020B7FF8: ; 0x020B7FF8 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + streq r1, [r0, #0x0] + bxeq lr + ldr r3, [r12, #0x10] + cmp r3, #0x0 + bne _020B8058 + ldrb r3, [r12, #0x18] + ldrb r2, [r1, #0x18] + cmp r3, r2 + bls _020B8050 + ldr r2, [r1, #0x10] + mov r3, r1 + cmp r2, #0x0 + beq _020B8044 +_020B8034: + ldr r3, [r3, #0x10] + ldr r2, [r3, #0x10] + cmp r2, #0x0 + bne _020B8034 +_020B8044: + str r12, [r3, #0x10] + str r1, [r0, #0x0] + bx lr +_020B8050: + str r1, [r12, #0x10] + bx lr +_020B8058: + cmp r3, #0x0 + beq _020B80AC + ldrb r2, [r1, #0x18] +_020B8064: + ldrb r0, [r3, #0x18] + cmp r0, r2 + blo _020B809C + ldr r0, [r1, #0x10] + mov r2, r1 + cmp r0, #0x0 + beq _020B8090 +_020B8080: + ldr r2, [r2, #0x10] + ldr r0, [r2, #0x10] + cmp r0, #0x0 + bne _020B8080 +_020B8090: + str r1, [r12, #0x10] + str r3, [r2, #0x10] + bx lr +_020B809C: + mov r12, r3 + ldr r3, [r3, #0x10] + cmp r3, #0x0 + bne _020B8064 +_020B80AC: + str r1, [r12, #0x10] + bx lr + + arm_func_start FUN_020B80B4 +FUN_020B80B4: ; 0x020B80B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x54 + bl MIi_CpuClear32 + ldr r0, _020B8104 ; =0x021065B4 + ldr r1, _020B8108 ; =0x021065B0 + ldr r2, [r0, #0x0] + ldr r0, _020B810C ; =0x021065AC + str r2, [r5, #0xc] + ldr r1, [r1, #0x0] + str r1, [r5, #0x14] + ldr r0, [r0, #0x0] + str r0, [r5, #0x1c] + str r4, [r5, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020B8104: .word 0x021065B4 +_020B8108: .word 0x021065B0 +_020B810C: .word 0x021065AC + + arm_func_start FUN_020B8110 +FUN_020B8110: ; 0x020B8110 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r12, #0x0 + str r12, [r0, #0x0] + str r1, [r0, #0x8] + str r12, [r0, #0x10] + mov r4, #0x7f + strb r4, [r0, #0x18] + mov r4, #0x1000 + str r4, [r0, #0x4] + ldr lr, _020B81A4 ; =0x02106594 + str r3, [r0, #0x14] + ldr r6, [lr, #0x0] + cmp r6, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r7,pc} +_020B8150: ; 0x020B8150 + ldrb r7, [r1, #0x0] + ldr r4, _020B81A8 ; =0x021065B8 +_020B8158: + ldrb r3, [r4, r12, lsl #0x3] + mov r5, r12, lsl #0x3 + cmp r7, r3 + bne _020B8190 + add r3, r4, r5 + ldrh lr, [r1, #0x2] + ldrh r3, [r3, #0x2] + cmp lr, r3 + bne _020B8190 + ldr r3, _020B81AC ; =0x021065BC + ldr r3, [r3, r5] + blx r3 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} +_020B8190: + add r12, r12, #0x1 + cmp r12, r6 + blo _020B8158 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B81A4: .word 0x02106594 +_020B81A8: .word 0x021065B8 +_020B81AC: .word 0x021065BC + + arm_func_start FUN_020B81B0 +FUN_020B81B0: ; 0x020B81B0 + ldrb r0, [r0, #0x0] + cmp r0, #0x4a + beq _020B81E4 + cmp r0, #0x4d + beq _020B81D0 + cmp r0, #0x56 + beq _020B81E4 + b _020B81F8 +_020B81D0: + ldrb r0, [r1, #0x18] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81E4: + ldrb r0, [r1, #0x17] + mov r0, r0, lsl #0x1 + add r0, r0, #0x1c + bic r0, r0, #0x3 + bx lr +_020B81F8: + mov r0, #0x0 + bx lr + + arm_func_start FUN_020B8200 +FUN_020B8200: ; 0x020B8200 + cmp r0, #0x0 + ldrne ip, _020B8260 ; =0x021CED18 + ldrne r12, [r12, #0xa0] + andne r12, r12, #0xff + strne r12, [r0, #0x0] + cmp r1, #0x0 + ldrne r0, _020B8260 ; =0x021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x8 + andne r0, r0, #0xff + strne r0, [r1, #0x0] + cmp r2, #0x0 + ldrne r0, _020B8260 ; =0x021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x10 + andne r0, r0, #0xff + strne r0, [r2, #0x0] + cmp r3, #0x0 + ldrne r0, _020B8260 ; =0x021CED18 + ldrne r0, [r0, #0xa0] + movne r0, r0, lsr #0x18 + andne r0, r0, #0xff + strne r0, [r3, #0x0] + bx lr + .balign 4 +_020B8260: .word 0x021CED18 + + arm_func_start FUN_020B8264 +FUN_020B8264: ; 0x020B8264 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B829C ; =0x021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B8290 + bl FUN_020B82E4 + ldr r0, _020B829C ; =0x021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B8290: + ldr r0, _020B82A0 ; =0x021CEE78 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B829C: .word 0x021CED18 +_020B82A0: .word 0x021CEE78 + + arm_func_start FUN_020B82A4 +FUN_020B82A4: ; 0x020B82A4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B82DC ; =0x021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x80 + bne _020B82D0 + bl FUN_020B82E4 + ldr r0, _020B82DC ; =0x021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x80 + str r1, [r0, #0xfc] +_020B82D0: + ldr r0, _020B82E0 ; =0x021CEE48 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B82DC: .word 0x021CED18 +_020B82E0: .word 0x021CEE48 + + arm_func_start FUN_020B82E4 +FUN_020B82E4: ; 0x020B82E4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8330 ; =0x021CEDD4 + ldr r1, _020B8334 ; =0x021CED64 + ldr r2, _020B8338 ; =0x021CEE48 + bl MTX_Concat43 + ldr r3, _020B833C ; =0x021CED18 + ldr r0, _020B8338 ; =0x021CEE48 + ldr r2, [r3, #0xf4] + mov r1, r0 + str r2, [sp, #0x0] + ldr r2, [r3, #0xec] + ldr r3, [r3, #0xf0] + bl MTX_ScaleApply43 + ldr r0, _020B8338 ; =0x021CEE48 + ldr r1, _020B8340 ; =0x021CEE78 + bl MTX_Inverse43 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8330: .word 0x021CEDD4 +_020B8334: .word 0x021CED64 +_020B8338: .word 0x021CEE48 +_020B833C: .word 0x021CED18 +_020B8340: .word 0x021CEE78 + + arm_func_start FUN_020B8344 +FUN_020B8344: ; 0x020B8344 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020B8384 ; =0x021CED18 + ldr r0, [r0, #0xfc] + ands r0, r0, #0x8 + bne _020B8378 + ldr r0, _020B8388 ; =0x021CED64 + ldr r1, _020B838C ; =0x021CEE18 + bl MTX_Inverse43 + ldr r0, _020B8384 ; =0x021CED18 + ldr r1, [r0, #0xfc] + orr r1, r1, #0x8 + str r1, [r0, #0xfc] +_020B8378: + ldr r0, _020B838C ; =0x021CEE18 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B8384: .word 0x021CED18 +_020B8388: .word 0x021CED64 +_020B838C: .word 0x021CEE18 + + arm_func_start FUN_020B8390 +FUN_020B8390: ; 0x020B8390 + orr r0, r0, r1, lsl #0x4 + + arm_func_start FUN_020B8394 +FUN_020B8394: ; 0x020B8394 + ldr r1, [sp, #0x4] + orr r0, r0, r2, lsl #0x6 + orr r0, r1, r0 + ldr r2, [sp, #0x0] + orr r1, r0, r3, lsl #0x18 + ldr r0, _020B83B8 ; =0x021CED18 + orr r1, r1, r2, lsl #0x10 + str r1, [r0, #0x9c] + bx lr + .balign 4 +_020B83B8: .word 0x021CED18 + + arm_func_start FUN_020B83BC +FUN_020B83BC: ; 0x020B83BC + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B83DC ; =0x021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x98] + bx lr + .balign 4 +_020B83DC: .word 0x021CED18 + + arm_func_start FUN_020B83E0 +FUN_020B83E0: ; 0x020B83E0 + cmp r2, #0x0 + movne r2, #0x1 + orr r1, r0, r1, lsl #0x10 + moveq r2, #0x0 + ldr r0, _020B8400 ; =0x021CED18 + orr r1, r1, r2, lsl #0xf + str r1, [r0, #0x94] + bx lr + .balign 4 +_020B8400: .word 0x021CED18 + + arm_func_start FUN_020B8404 +FUN_020B8404: ; 0x020B8404 + ldr r2, _020B8414 ; =0x021CEDC0 + orr r1, r1, r0, lsl #0x1e + str r1, [r2, r0, lsl #0x2] + bx lr + .balign 4 +_020B8414: .word 0x021CEDC0 + + arm_func_start FUN_020B8418 +FUN_020B8418: ; 0x020B8418 + stmdb sp!, {r4,lr} + ldr ip, _020B8444 ; =0x000003FF + ldr lr, _020B8448 ; =0x021CED98 + and r4, r12, r1, asr #0x3 + and r1, r12, r2, asr #0x3 + and r2, r12, r3, asr #0x3 + orr r1, r4, r1, lsl #0xa + orr r1, r1, r2, lsl #0x14 + orr r1, r1, r0, lsl #0x1e + str r1, [lr, r0, lsl #0x2] + ldmia sp!, {r4,pc} + .balign 4 +_020B8444: .word 0x000003FF +_020B8448: .word 0x021CED98 + + arm_func_start FUN_020B844C +FUN_020B844C: ; 0x020B844C + ldr r3, _020B846C ; =0x021CEE04 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8470 ; =0x021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B846C: .word 0x021CEE04 +_020B8470: .word 0x021CED18 + + arm_func_start FUN_020B8474 +FUN_020B8474: ; 0x020B8474 + ldr r3, _020B8494 ; =0x021CEDF8 + ldmia r0, {r0-r2} + stmia r3, {r0-r2} + ldr r0, _020B8498 ; =0x021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0xa4 + str r1, [r0, #0xfc] + bx lr + .balign 4 +_020B8494: .word 0x021CEDF8 +_020B8498: .word 0x021CED18 + + arm_func_start FUN_020B849C +FUN_020B849C: ; 0x020B849C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, _020B84D4 ; =0x021CED18 + mov r2, #0x3e + ldr r0, [r1], #0x4 + bl FUN_020BB1C0 + ldr r0, _020B84D4 ; =0x021CED18 + ldr r1, [r0, #0xfc] + bic r1, r1, #0x1 + str r1, [r0, #0xfc] + bic r1, r1, #0x2 + str r1, [r0, #0xfc] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020B84D4: .word 0x021CED18 + + arm_func_start FUN_020B84D8 +FUN_020B84D8: ; 0x020B84D8 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r8, _020B85F4 ; =0x17101610 + ldr r1, _020B85F8 ; =0x021CED18 + ldr r5, _020B85FC ; =0x32323232 + ldr r4, _020B8600 ; =0x60293130 + ldr r3, _020B8604 ; =0x33333333 + ldr r2, _020B8608 ; =0x002A1B19 + mov r7, #0x0 + mov r6, #0x2 + ldr r0, _020B860C ; =0x021CED64 + str r8, [r1, #0x0] + str r7, [r1, #0x4] + str r6, [r1, #0x48] + str r5, [r1, #0x7c] + str r4, [r1, #0x90] + str r3, [r1, #0xa4] + str r2, [r1, #0xb8] + bl MTX_Identity43_ + ldr r0, _020B8610 ; =0x021CED20 + bl MTX_Identity44_ + mov r2, r7 + ldr r1, _020B85F8 ; =0x021CED18 + ldr r7, _020B8614 ; =0x4210C210 + ldr r0, _020B8618 ; =0x40000200 + ldr lr, _020B861C ; =0x2D8B62D8 + ldr sb, _020B8620 ; =0x800001FF + ldr r8, _020B8624 ; =0xC0080000 + ldr r6, _020B8628 ; =0x001F008F + ldr r5, _020B862C ; =0xBFFF0000 + ldr r4, _020B8630 ; =0x00007FFF + ldr ip, _020B8634 ; =0x800003E0 + ldr r3, _020B8638 ; =0xC0007C00 + str r0, [r1, #0x84] + str lr, [r1, #0x80] + mov lr, #0x4000001f + ldr r0, _020B863C ; =0x021CEDD4 + str r9, [r1, #0x88] + str r8, [r1, #0x8c] + str r7, [r1, #0x94] + str r7, [r1, #0x98] + str r6, [r1, #0x9c] + str r5, [r1, #0xa0] + str r4, [r1, #0xa8] + str lr, [r1, #0xac] + str r12, [r1, #0xb0] + str r3, [r1, #0xb4] + str r2, [r1, #0xe0] + str r2, [r1, #0xe4] + str r2, [r1, #0xe8] + bl MTX_Identity33_ + mov r3, #0x1000 + ldr r0, _020B85F8 ; =0x021CED18 + mov r2, #0x0 + rsb r1, r3, #0x0 + str r3, [r0, #0xec] + str r3, [r0, #0xf0] + str r3, [r0, #0xf4] + str r2, [r0, #0xf8] + str r2, [r0, #0xfc] + str r2, [r0, #0x248] + str r2, [r0, #0x244] + str r2, [r0, #0x240] + str r2, [r0, #0x254] + str r2, [r0, #0x24c] + str r3, [r0, #0x250] + str r2, [r0, #0x25c] + str r2, [r0, #0x258] + str r1, [r0, #0x260] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020B85F4: .word 0x17101610 +_020B85F8: .word 0x021CED18 +_020B85FC: .word 0x32323232 +_020B8600: .word 0x60293130 +_020B8604: .word 0x33333333 +_020B8608: .word 0x002A1B19 +_020B860C: .word 0x021CED64 +_020B8610: .word 0x021CED20 +_020B8614: .word 0x4210C210 +_020B8618: .word 0x40000200 +_020B861C: .word 0x2D8B62D8 +_020B8620: .word 0x800001FF +_020B8624: .word 0xC0080000 +_020B8628: .word 0x001F008F +_020B862C: .word 0xBFFF0000 +_020B8630: .word 0x00007FFF +_020B8634: .word 0x800003E0 +_020B8638: .word 0xC0007C00 +_020B863C: .word 0x021CEDD4 + + arm_func_start FUN_020B8640 +FUN_020B8640: ; 0x020B8640 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r0 + mov r0, #0x0 + mov r6, r1 + str r0, [r7, #0x0] + add r4, sp, #0x0 + mov r5, r2, lsl #0x1 + mov r8, #0x1 +_020B8664: + add r1, r5, r6 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B869C + ldr r3, [r6, #0xc] + mov r0, r4 + mov r1, r6 + and r2, r2, #0xff + blx r3 + ldr r2, [r7, #0x0] + ldr r1, [sp, #0x0] + mov r0, r8 + orr r1, r2, r1 + str r1, [r7, #0x0] +_020B869C: + ldr r6, [r6, #0x10] + cmp r6, #0x0 + bne _020B8664 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020B86B0 +FUN_020B86B0: ; 0x020B86B0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x5c + mov r9, r1 + ldr r3, [r9, #0x10] + mov r10, r0 + mov r8, r2 + cmp r3, #0x0 + bne _020B8704 + add r2, r9, r8, lsl #0x1 + ldrh r4, [r2, #0x1a] + and r2, r4, #0x300 + cmp r2, #0x100 + addne sp, sp, #0x5c + movne r0, #0x0 + ldmneia sp!, {r4-r11,pc} +_020B86EC: ; 0x020B86EC + ldr r3, [r9, #0xc] + and r2, r4, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B8704: + mov r7, #0x0 + mov r3, r7 + mov r4, r9 + mov r2, r8, lsl #0x1 +_020B8714: + add r0, r2, r4 + ldrh r0, [r0, #0x1a] + and r0, r0, #0x300 + cmp r0, #0x100 + ldreq r0, [r4, #0x4] + moveq r1, r4 + ldr r4, [r4, #0x10] + addeq r7, r7, r0 + addeq r3, r3, #0x1 + cmp r4, #0x0 + bne _020B8714 + cmp r7, #0x0 + addeq sp, sp, #0x5c + moveq r0, #0x0 + ldmeqia sp!, {r4-r11,pc} +_020B8750: ; 0x020B8750 + cmp r3, #0x1 + bne _020B877C + add r0, r1, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + ldr r3, [r1, #0xc] + mov r0, r10 + and r2, r2, #0xff + blx r3 + add sp, sp, #0x5c + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020B877C: + mov r1, r10 + mov r0, #0x0 + mov r2, #0x58 + bl MIi_CpuClearFast +_020B878C: ; 0x020B878C + mvn r0, #0x0 + str r0, [r10, #0x0] + add r5, sp, #0x0 + add r4, sp, #0x4 + add r11, sp, #0x10 +_020B87A0: + add r0, r9, r8, lsl #0x1 + ldrh r2, [r0, #0x1a] + and r0, r2, #0x300 + cmp r0, #0x100 + bne _020B8948 + ldr r0, [r9, #0x4] + cmp r0, #0x0 + ble _020B8948 + ldr r3, [r9, #0xc] + mov r0, r5 + mov r1, r9 + and r2, r2, #0xff + blx r3 + cmp r7, #0x1000 + ldreq r6, [r9, #0x4] + beq _020B87F0 + ldr r0, [r9, #0x4] + mov r1, r7 + bl FX_Div + mov r6, r0 +_020B87F0: + ldr r3, [sp, #0x0] + mov r1, r4 + mov r2, r6 + add r0, r10, #0x4 + and r3, r3, #0x1 + bl FUN_020B8998 + ldr r1, [sp, #0x0] + add r0, r10, #0x10 + and r3, r1, #0x8 + mov r1, r11 + mov r2, r6 + bl FUN_020B8998 + ldr r3, [sp, #0x0] + add r0, r10, #0x1c + add r1, sp, #0x1c + mov r2, r6 + and r3, r3, #0x10 + bl FUN_020B8998 +_020B8838: ; 0x020B8838 + ldr r0, [sp, #0x0] + ands r0, r0, #0x4 + bne _020B8898 + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x4c] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x4c] + ldr r0, [sp, #0x50] + ldr r2, [r10, #0x50] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x50] + ldr r0, [sp, #0x54] + ldr r2, [r10, #0x54] + smull r1, r0, r6, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + add r0, r2, r1 + str r0, [r10, #0x54] +_020B8898: + ldr r0, [sp, #0x0] + ands r0, r0, #0x2 + bne _020B8920 + ldr r0, [sp, #0x28] + ldr r1, [r10, #0x28] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x28] + ldr r0, [sp, #0x2c] + ldr r1, [r10, #0x2c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x2c] + ldr r0, [sp, #0x30] + ldr r1, [r10, #0x30] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x30] + ldr r0, [sp, #0x34] + ldr r1, [r10, #0x34] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x34] + ldr r0, [sp, #0x38] + ldr r1, [r10, #0x38] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x38] + ldr r0, [sp, #0x3c] + ldr r1, [r10, #0x3c] + mul r0, r6, r0 + add r0, r1, r0, asr #0xc + str r0, [r10, #0x3c] + b _020B8938 +_020B8920: + ldr r0, [r10, #0x28] + add r0, r0, r6 + str r0, [r10, #0x28] + ldr r0, [r10, #0x38] + add r0, r0, r6 + str r0, [r10, #0x38] +_020B8938: + ldr r1, [r10, #0x0] + ldr r0, [sp, #0x0] + and r0, r1, r0 + str r0, [r10, #0x0] +_020B8948: + ldr r9, [r9, #0x10] + cmp r9, #0x0 + bne _020B87A0 + add r0, r10, #0x28 + add r1, r10, #0x34 + add r2, r10, #0x40 + bl VEC_CrossProduct + add r0, r10, #0x28 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + mov r1, r0 + bl VEC_Normalize + add r0, r10, #0x40 + add r1, r10, #0x28 + add r2, r10, #0x34 + bl VEC_CrossProduct + mov r0, #0x1 + add sp, sp, #0x5c + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020B8998 +FUN_020B8998: + cmp r3, #0x0 + beq _020B89C8 + ldr r1, [r0, #0x0] + add r1, r1, r2 + str r1, [r0, #0x0] + ldr r1, [r0, #0x4] + add r1, r1, r2 + str r1, [r0, #0x4] + ldr r1, [r0, #0x8] + add r1, r1, r2 + str r1, [r0, #0x8] + bx lr +_020B89C8: + ldr r3, [r1, #0x0] + ldr r12, [r0, #0x0] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x0] + ldr r3, [r1, #0x4] + ldr r12, [r0, #0x4] + mul r3, r2, r3 + add r3, r12, r3, asr #0xc + str r3, [r0, #0x4] + ldr r1, [r1, #0x8] + ldr r3, [r0, #0x8] + mul r1, r2, r1 + add r1, r3, r1, asr #0xc + str r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020B8A08 +FUN_020B8A08: ; 0x020B8A08 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r0 + mov r5, r1 + mov r0, #0x0 + mov r4, r2, lsl #0x1 + mov r7, #0x1 +_020B8A24: + add r1, r4, r5 + ldrh r2, [r1, #0x1a] + ands r1, r2, #0x100 + beq _020B8A4C + ldr r3, [r5, #0xc] + mov r0, r6 + mov r1, r5 + and r2, r2, #0xff + blx r3 + mov r0, r7 +_020B8A4C: + ldr r5, [r5, #0x10] + cmp r5, #0x0 + bne _020B8A24 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020B8A60 +FUN_020B8A60: ; 0x020B8A60 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x80 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020B8DB4 + ands r0, r1, #0x1 + beq _020B8DB4 + add r0, sp, #0x10 + mov r1, #0x0 + bl FUN_020BB824 + mov r0, #0x1e + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x13 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r2, [r5, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0xc0000000 + beq _020B8AF0 + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r3, _020B8DC8 ; =0x02106630 + ldr r0, [r2, #0x10] + ldr r1, _020B8DCC ; =0x02106634 + orr r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r5, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8AF0: + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B8B3C + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8B40 +_020B8B3C: + mov r0, #0x0 +_020B8B40: + cmp r0, #0x0 + bne _020B8B84 + ldr r0, [r5, #0xb0] + ldr r1, _020B8DD0 ; =0x02106660 + ldrh r6, [r0, #0x2e] + ldrh r3, [r0, #0x2c] + mov r0, #0x16 + rsb r2, r6, #0x0 + mov lr, r3, lsl #0xf + mov r12, r2, lsl #0xf + mov r3, r6, lsl #0xf + mov r2, #0x10 + str lr, [r1, #0x0] + str r12, [r1, #0x14] + str lr, [r1, #0x30] + str r3, [r1, #0x34] + bl FUN_020BB1C0 +_020B8B84: + cmp r4, #0x2 + bne _020B8BC0 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x40] + cmp r0, #0x0 + ldrneb r4, [r5, #0x99] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020B8BC4 +_020B8BC0: + mov r0, #0x0 +_020B8BC4: + cmp r0, #0x0 + bne _020B8C28 + ldr r12, [r5, #0xd8] + ldr r0, [r5, #0x0] + ldrh r2, [r12, #0xa] + add r3, r12, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8C28 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8C28: + cmp r4, #0x3 + movne r0, #0x0 + bne _020B8C54 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x40] + blx r1 + ldr r0, [r5, #0x8] + and r0, r0, #0x40 +_020B8C54: + cmp r0, #0x0 + bne _020B8D84 + ldr r0, _020B8DD4 ; =0x021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B8CA0 + ldr r1, _020B8DD8 ; =0x021CEDF8 + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + ldr r1, _020B8DDC ; =0x021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CA0: + ands r0, r1, #0x2 + beq _020B8CBC + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020B8CE0 +_020B8CBC: + bl FUN_020B8344 + mov r1, r0 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + add r1, sp, #0x10 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 +_020B8CE0: + bl FUN_020BB394 + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020B8DE4 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020B8DE8 ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + add r4, sp, #0x40 +_020B8D04: + mov r0, r4 + bl G3X_GetClipMtx +_020B8D0C: ; 0x020B8D0C + cmp r0, #0x0 + bne _020B8D04 + ldr r1, _020B8DEC ; =0x04000448 + mov r2, #0x1 + str r2, [r1, #0x0] + ldr r0, _020B8DE0 ; =0x04000440 + mov r2, #0x3 + str r2, [r0, #0x0] + add r1, sp, #0x40 + mov r0, #0x16 + mov r2, #0x10 + bl FUN_020BB1C0 + ldr r1, [sp, #0x70] + ldr r0, [sp, #0x74] + mov r2, r1, asr #0x4 + mov r1, r0, asr #0x4 + mov r0, r2, lsl #0x8 + mov r1, r1, lsl #0x8 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8D84: + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + mov r3, #0x1e + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 +_020B8DB4: + ldr r0, [r5, #0x0] + add r0, r0, #0x3 + str r0, [r5, #0x0] + add sp, sp, #0x80 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020B8DC8: .word 0x02106630 +_020B8DCC: .word 0x02106634 +_020B8DD0: .word 0x02106660 +_020B8DD4: .word 0x021CED18 +_020B8DD8: .word 0x021CEDF8 +_020B8DDC: .word 0x021CEDD4 +_020B8DE0: .word 0x04000440 +_020B8DE4: .word 0x04000444 +_020B8DE8: .word 0x04000454 +_020B8DEC: .word 0x04000448 + + arm_func_start FUN_020B8DF0 +FUN_020B8DF0: ; 0x020B8DF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x44 + mov r7, r0 + ldr r1, [r7, #0x8] + ands r0, r1, #0x200 + bne _020B90E8 + ands r0, r1, #0x1 + beq _020B90E8 + ldr r2, [r7, #0xb0] + ldr r0, [r2, #0x10] + and r1, r0, #0xc0000000 + cmp r1, #0x80000000 + beq _020B8E5C + bic r0, r0, #0xc0000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r3, _020B90FC ; =0x02106638 + ldr r0, [r2, #0x10] + ldr r1, _020B9100 ; =0x0210663C + orr r0, r0, #0x80000000 + str r0, [r2, #0x10] + ldr r2, [r7, #0xb0] + ldr r0, [r3, #0x0] + ldr r4, [r2, #0x10] + mov r2, #0x1 + str r4, [r3, #0x4] + bl FUN_020BB1C0 +_020B8E5C: + mov r0, #0x3 + str r0, [sp, #0x0] + add r1, sp, #0x0 + mov r0, #0x10 + mov r2, #0x1 + bl FUN_020BB1C0 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + moveq r6, #0x0 + cmp r6, #0x1 + bne _020B8EC0 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8EC4 +_020B8EC0: + mov r0, #0x0 +_020B8EC4: + cmp r0, #0x0 + bne _020B8F3C + ldr r0, [r7, #0xb0] + add r1, sp, #0x38 + ldrh r4, [r0, #0x2e] + ldrh r5, [r0, #0x2c] + mov r3, #0x10000 + rsb r0, r4, #0x0 + mov r12, r0, lsl #0xf + mov lr, r5, lsl #0xf + mov r0, #0x1b + mov r2, #0x3 + str lr, [sp, #0x38] + str r12, [sp, #0x3c] + str r3, [sp, #0x40] + bl FUN_020BB1C0 + mov r0, r5, lsl #0x13 + mov r1, r4, lsl #0x13 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r2, r0, lsr #0x10 + mov r0, r1, lsr #0x10 + orr r3, r2, r0, lsl #0x10 + add r1, sp, #0x4 + mov r0, #0x22 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B8F3C: + cmp r6, #0x2 + bne _020B8F78 + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x3c] + cmp r0, #0x0 + ldrneb r6, [r7, #0x98] + ldr r0, [r7, #0x8] + moveq r6, #0x0 + and r0, r0, #0x40 + b _020B8F7C +_020B8F78: + mov r0, #0x0 +_020B8F7C: + cmp r0, #0x0 + bne _020B8FE0 + ldr r4, [r7, #0xd8] + ldr r0, [r7, #0x0] + ldrh r2, [r4, #0xa] + add r3, r4, #0x4 + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldrh r2, [r1, #0x1e] + ands r0, r2, #0x2000 + beq _020B8FE0 + add r1, r1, #0x2c + ands r0, r2, #0x2 + addeq r1, r1, #0x8 + ands r0, r2, #0x4 + addeq r1, r1, #0x4 + ands r0, r2, #0x8 + addeq r1, r1, #0x8 + mov r0, #0x18 + mov r2, #0x10 + bl FUN_020BB1C0 +_020B8FE0: + cmp r6, #0x3 + movne r0, #0x0 + bne _020B900C + ldr r1, [r7, #0x8] + mov r0, r7 + bic r1, r1, #0x40 + str r1, [r7, #0x8] + ldr r1, [r7, #0x3c] + blx r1 + ldr r0, [r7, #0x8] + and r0, r0, #0x40 +_020B900C: + cmp r0, #0x0 + bne _020B90D0 + mov r3, #0x2 + add r1, sp, #0x8 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x0 + bl FUN_020BB824 + mov r3, #0x3 + add r1, sp, #0xc + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0xc] + bl FUN_020BB1C0 + ldr r0, _020B9104 ; =0x021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9094 + ldr r1, _020B9108 ; =0x021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + ldr r1, _020B910C ; =0x021CEDD4 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B9094: + ands r0, r1, #0x2 + beq _020B90C0 + ldr r1, _020B9108 ; =0x021CED64 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020B90D0 +_020B90C0: + add r1, sp, #0x14 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020B90D0: + mov r3, #0x2 + add r1, sp, #0x10 + mov r0, #0x10 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020B90E8: + ldr r0, [r7, #0x0] + add r0, r0, #0x3 + str r0, [r7, #0x0] + add sp, sp, #0x44 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020B90FC: .word 0x02106638 +_020B9100: .word 0x0210663C +_020B9104: .word 0x021CED18 +_020B9108: .word 0x021CED64 +_020B910C: .word 0x021CEDD4 + + arm_func_start FUN_020B9110 +FUN_020B9110: ; 0x020B9110 + stmdb sp!, {r4,lr} + sub sp, sp, #0x10 + mov r4, r0 + ldr r2, [r4, #0x8] + ands r0, r2, #0x100 + bne _020B9164 + ands r0, r2, #0x200 + bne _020B9164 + cmp r1, #0x0 + ldreq r0, [r4, #0xe0] + add r1, sp, #0x0 + streq r0, [sp, #0x8] + streq r0, [sp, #0x4] + streq r0, [sp, #0x0] + ldrne r0, [r4, #0xe4] + mov r2, #0x3 + strne r0, [sp, #0x8] + strne r0, [sp, #0x4] + strne r0, [sp, #0x0] + mov r0, #0x1b + bl FUN_020BB1C0 +_020B9164: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x10 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020B9178 +FUN_020B9178: ; 0x020B9178 + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020B91CC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 + ldr r0, [r5, #0x34] + cmp r0, #0x0 + ldrneb r4, [r5, #0x96] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r1, r0, #0x40 + b _020B91D0 +_020B91CC: + mov r1, #0x0 +_020B91D0: + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020B9228 + cmp r1, #0x0 + bne _020B9228 + ldr r0, [r5, #0x0] + ldrb r12, [r0, #0x1] + ldrb r3, [r0, #0x2] + ldrb lr, [r0, #0x3] + ldrb r2, [r0, #0x5] + ldrb r1, [r0, #0x6] + orr r3, r12, r3, lsl #0x8 + ldrb r6, [r0, #0x4] + orr r12, r3, lr, lsl #0x10 + ldrb r3, [r0, #0x7] + orr r1, r2, r1, lsl #0x8 + orr r6, r12, r6, lsl #0x18 + ldrb r2, [r0, #0x8] + orr r1, r1, r3, lsl #0x10 + add r0, r0, r6 + orr r1, r1, r2, lsl #0x18 + bl FUN_020BB2B0 +_020B9228: + cmp r4, #0x3 + bne _020B9248 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x34] + blx r1 +_020B9248: + ldr r0, [r5, #0x0] + add r0, r0, #0x9 + str r0, [r5, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020B9258 +FUN_020B9258: ; 0x020B9258 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x8c + ldr r1, [r0, #0x4] + ldr r4, [r0, #0x0] + ldr r6, [r1, #0x4] + ldrb r2, [r4, #0x2] + ldr r3, [r6, #0x10] + mov r10, #0x0 + str r0, [sp, #0x0] + str r2, [sp, #0x8] + add r3, r6, r3 + add r1, sp, #0x34 + mov r0, r10 + mov r2, #0x54 + mov r9, r10 + str r3, [sp, #0x4] + add r8, r4, #0x3 + bl MIi_CpuClearFast + bl FUN_020BB394 + ldr r0, _020B98AC ; =0x04000440 + mov r7, r10 + str r7, [r0, #0x0] + mov r0, #0x1 + ldr r2, _020B98B0 ; =0x0400044C + ldr r1, _020B98B4 ; =0x04000454 + str r0, [r2, #0x0] + str r0, [sp, #0x10] + str r7, [r1, #0x0] + mov r1, #0x2 + ldr r0, _020B98AC ; =0x04000440 + str r1, [sp, #0x14] + str r1, [r0, #0x0] + ldr r0, [sp, #0x8] + cmp r0, #0x0 + bls _020B96CC +_020B92E4: + ldrb r4, [r8, #0x1] + mov r0, #0x64 + ldr r3, _020B98B8 ; =0x021D0380 + mul r0, r4, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x0] + mov r1, r4, lsr #0x5 + add r0, r0, r1, lsl #0x2 + ldr r1, [sp, #0x10] + and r2, r4, #0x1f + mov r1, r1, lsl r2 + ldr r11, [r0, #0xcc] + ldr r2, [sp, #0xc] + ands r11, r1, r11 + add r6, r3, r2 + bne _020B9358 + ldr r3, [r0, #0xcc] + mov r2, #0x54 + orr r1, r3, r1 + str r1, [r0, #0xcc] + ldr r0, [sp, #0x4] + ldr r1, _020B98BC ; =0x04000450 + mla r0, r4, r2, r0 + ldrb r2, [r8, #0x0] + str r2, [r1, #0x0] + ldr r2, [sp, #0x10] + ldr r1, _020B98AC ; =0x04000440 + str r2, [r1, #0x0] + bl G3_MultMtx43 +_020B9358: + cmp r7, #0x0 + beq _020B9500 + ldr r2, [sp, #0x6c] + ldr r1, [r5, #0x0] + str r2, [sp, #0x18] + ldr r2, [sp, #0x70] + mov r0, r1, asr #0x1f + str r2, [sp, #0x1c] + ldr r2, [sp, #0x74] + ldr r12, [sp, #0x64] + str r2, [sp, #0x20] + ldr r2, [sp, #0x78] + ldr lr, [sp, #0x68] + str r2, [sp, #0x24] + ldr r2, [sp, #0x7c] + str r2, [sp, #0x28] + ldr r2, [sp, #0x80] + str r2, [sp, #0x2c] + ldr r2, [sp, #0x84] + str r2, [sp, #0x30] + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r12, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, lr, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x18] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x6c] + ldr r1, [r5, #0xc] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x1c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x70] + ldr r1, [r5, #0x10] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x20] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x74] + ldr r1, [r5, #0x14] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x24] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x78] + ldr r1, [r5, #0x18] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x28] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x7c] + ldr r1, [r5, #0x1c] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x2c] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x80] + ldr r1, [r5, #0x20] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r1, r3, lsr #0xc + ldr r0, [sp, #0x30] + orr r1, r1, r2, lsl #0x14 + adds r0, r0, r1 + str r0, [sp, #0x84] +_020B9500: + cmp r11, #0x0 + bne _020B9538 +_020B9508: + mov r0, r6 + bl G3X_GetClipMtx +_020B9510: ; 0x020B9510 + cmp r0, #0x0 + bne _020B9508 + ldr r1, [sp, #0x14] + ldr r0, _020B98AC ; =0x04000440 + str r1, [r0, #0x0] + ldr r0, [sp, #0x4] + mov r1, #0x54 + mla r0, r4, r1, r0 + add r0, r0, #0x30 + bl G3_MultMtx33 +_020B9538: + ldrb r1, [r8, #0x2] + ldr r2, [sp, #0x34] + ldr r0, [r6, #0x0] + mov r10, r1, lsl #0x4 + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x34] + mov r9, r10, asr #0x1f + ldr r2, [sp, #0x38] + ldr r0, [r6, #0x4] + ldr r3, [sp, #0x3c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x38] + ldr r0, [r6, #0x8] + ldr r2, [sp, #0x40] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x3c] + ldr r0, [r6, #0x10] + ldr r3, [sp, #0x44] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x40] + ldr r0, [r6, #0x14] + ldr r2, [sp, #0x48] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x44] + ldr r0, [r6, #0x18] + ldr r3, [sp, #0x4c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x48] + ldr r0, [r6, #0x20] + ldr r2, [sp, #0x50] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x4c] + ldr r0, [r6, #0x24] + ldr r3, [sp, #0x54] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x50] + ldr r0, [r6, #0x28] + ldr r2, [sp, #0x58] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x54] + ldr r0, [r6, #0x30] + ldr r3, [sp, #0x5c] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x58] + ldr r0, [r6, #0x34] + ldr r2, [sp, #0x60] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r3, r1 + str r0, [sp, #0x5c] + ldr r0, [r6, #0x38] + smull r1, r0, r10, r0 + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + adds r0, r2, r1 + str r0, [sp, #0x60] + cmp r11, #0x0 + ldr r1, _020B98C0 ; =0x021D03C0 + ldr r0, [sp, #0xc] + add r5, r1, r0 + add r8, r8, #0x3 + bne _020B96BC +_020B96AC: + mov r0, r5 + bl G3X_GetVectorMtx +_020B96B4: ; 0x020B96B4 + cmp r0, #0x0 + bne _020B96AC +_020B96BC: + ldr r0, [sp, #0x8] + add r7, r7, #0x1 + cmp r7, r0 + blo _020B92E4 +_020B96CC: + ldr r1, [r5, #0x0] + ldr r4, [sp, #0x64] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x64] + ldr r1, [r5, #0x4] + ldr r4, [sp, #0x68] + mov r0, r1, asr #0x1f + umull r3, r2, r10, r1 + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + mov r0, r3, lsr #0xc + orr r0, r0, r2, lsl #0x14 + adds r0, r4, r0 + str r0, [sp, #0x68] + ldr r1, [r5, #0x8] + ldr r4, [sp, #0x6c] + umull r0, r2, r10, r1 + mov r3, r0, lsr #0xc + mov r0, r1, asr #0x1f + mla r2, r10, r0, r2 + mla r2, r9, r1, r2 + orr r3, r3, r2, lsl #0x14 + adds r0, r4, r3 + str r0, [sp, #0x6c] + ldr r7, [r5, #0xc] + ldr r12, [sp, #0x70] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r6, r12, r6 + str r6, [sp, #0x70] + ldr r7, [r5, #0x10] + ldr r4, [sp, #0x74] + mov r6, r7, asr #0x1f + umull r11, r8, r10, r7 + mla r8, r10, r6, r8 + mla r8, r9, r7, r8 + mov r6, r11, lsr #0xc + orr r6, r6, r8, lsl #0x14 + adds r4, r4, r6 + str r4, [sp, #0x74] + ldr r6, [r5, #0x14] + ldr r3, [sp, #0x78] + mov r4, r6, asr #0x1f + umull r8, r7, r10, r6 + mla r7, r10, r4, r7 + mla r7, r9, r6, r7 + mov r4, r8, lsr #0xc + orr r4, r4, r7, lsl #0x14 + adds r3, r3, r4 + str r3, [sp, #0x78] + ldr r4, [r5, #0x18] + ldr r2, [sp, #0x7c] + mov r3, r4, asr #0x1f + umull r7, r6, r10, r4 + mla r6, r10, r3, r6 + mla r6, r9, r4, r6 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + adds r2, r2, r3 + str r2, [sp, #0x7c] + ldr r3, [r5, #0x1c] + ldr r1, [sp, #0x80] + mov r2, r3, asr #0x1f + umull r6, r4, r10, r3 + mla r4, r10, r2, r4 + mla r4, r9, r3, r4 + mov r2, r6, lsr #0xc + orr r2, r2, r4, lsl #0x14 + adds r1, r1, r2 + str r1, [sp, #0x80] + ldr r2, [r5, #0x20] + ldr lr, [sp, #0x84] + mov r1, r2, asr #0x1f + umull r4, r3, r10, r2 + mla r3, r10, r1, r3 + mla r3, r9, r2, r3 + mov r1, r4, lsr #0xc + orr r1, r1, r3, lsl #0x14 + adds r1, lr, r1 + add r0, sp, #0x64 + str r1, [sp, #0x84] + bl G3_LoadMtx43 + ldr r1, _020B98AC ; =0x04000440 + mov r2, #0x1 + add r0, sp, #0x34 + str r2, [r1, #0x0] + bl G3_LoadMtx43 + ldr r3, _020B98AC ; =0x04000440 + mov r0, #0x0 + str r0, [r3, #0x0] + ldr r1, _020B98BC ; =0x04000450 + mov r2, #0x1 + mov r0, #0x2 + str r2, [r1, #0x0] + str r0, [r3, #0x0] + ldr r0, [sp, #0x0] + ldr r1, [r0, #0x0] + ldr r0, _020B98B0 ; =0x0400044C + ldrb r2, [r1, #0x1] + mov r1, #0x3 + str r2, [r0, #0x0] + ldr r0, [sp, #0x0] + ldr r2, [r0, #0x0] + ldrb r0, [r2, #0x2] + add r0, r0, #0x1 + mla r1, r0, r1, r2 + ldr r0, [sp, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x8c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B98AC: .word 0x04000440 +_020B98B0: .word 0x0400044C +_020B98B4: .word 0x04000454 +_020B98B8: .word 0x021D0380 +_020B98BC: .word 0x04000450 +_020B98C0: .word 0x021D03C0 + + arm_func_start FUN_020B98C4 +FUN_020B98C4: ; 0x020B98C4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xcc + mov r10, r0 + ldr r2, [r10, #0x8] + mov r9, r1 + ands r0, r2, #0x200 + mov r7, #0x2 + ldr r6, _020B9C28 ; =0x02106718 + ldr fp, _020B9C2C ; =0x02106724 + ldr r5, _020B9C30 ; =0x021066F4 + beq _020B992C + cmp r9, #0x40 + beq _020B9900 + cmp r9, #0x60 + bne _020B9904 +_020B9900: + add r7, r7, #0x1 +_020B9904: + cmp r9, #0x20 + beq _020B9914 + cmp r9, #0x60 + bne _020B9918 +_020B9914: + add r7, r7, #0x1 +_020B9918: + ldr r0, [r10, #0x0] + add sp, sp, #0xcc + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020B992C: + cmp r9, #0x40 + beq _020B993C + cmp r9, #0x60 + bne _020B9974 +_020B993C: + add r7, r7, #0x1 + ands r0, r2, #0x100 + bne _020B9974 + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9974: + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020B99C0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x2c] + cmp r0, #0x0 + ldrneb r8, [r10, #0x94] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r1, r0, #0x40 + b _020B99C4 +_020B99C0: + mov r1, #0x0 +_020B99C4: + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9BA4 + cmp r1, #0x0 + bne _020B9BA4 + bl FUN_020BB394 + ldr r2, _020B9C34 ; =0x00151110 + ldr r1, _020B9C38 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r4, sp, #0x8 +_020B99F8: + mov r0, r4 + bl G3X_GetClipMtx +_020B9A00: ; 0x020B9A00 + cmp r0, #0x0 + bne _020B99F8 + ldr r0, _020B9C3C ; =0x021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9A38 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9A5C +_020B9A38: + ands r0, r1, #0x2 + beq _020B9A5C + ldr r0, _020B9C40 ; =0x021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9A5C: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r6, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r6, #0x4] + ldr r1, [sp, #0x40] + str r1, [r6, #0x8] + bl VEC_Mag +_020B9A7C: ; 0x020B9A7C + str r0, [r11, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r11, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + str r0, [r11, #0x8] + ldr r0, [sp, #0x1c] + cmp r0, #0x0 + bne _020B9AB0 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + beq _020B9AD4 +_020B9AB0: + add r0, sp, #0x18 + add r1, r5, #0xc + bl VEC_Normalize + ldr r0, [r5, #0x14] + rsb r0, r0, #0x0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x10] + str r0, [r5, #0x20] + b _020B9AF4 +_020B9AD4: + add r0, sp, #0x28 + add r1, r5, #0x18 + bl VEC_Normalize + ldr r0, [r5, #0x1c] + rsb r0, r0, #0x0 + str r0, [r5, #0x14] + ldr r0, [r5, #0x20] + str r0, [r5, #0x10] +_020B9AF4: + ldr r0, _020B9C3C ; =0x021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9B48 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =0x021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =0x021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B48: + ands r0, r1, #0x2 + beq _020B9B94 + ldr r3, _020B9C44 ; =0x00171012 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C48 ; =0x021066EC + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9C4C ; =0x00001B19 + ldr r1, _020B9C38 ; =0x04000400 + ldr r0, _020B9C30 ; =0x021066F4 + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9BA4 +_020B9B94: + ldr r0, _020B9C50 ; =0x021066E8 + ldr r1, _020B9C38 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9BA4: + cmp r8, #0x3 + movne r0, #0x0 + bne _020B9BD0 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x2c] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020B9BD0: + cmp r9, #0x20 + beq _020B9BE0 + cmp r9, #0x60 + bne _020B9C14 +_020B9BE0: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020B9C14 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020B9C14 + ldr r0, [r10, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9C14: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0xcc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020B9C28: .word 0x02106718 +_020B9C2C: .word 0x02106724 +_020B9C30: .word 0x021066F4 +_020B9C34: .word 0x00151110 +_020B9C38: .word 0x04000400 +_020B9C3C: .word 0x021CED18 +_020B9C40: .word 0x021CED64 +_020B9C44: .word 0x00171012 +_020B9C48: .word 0x021066EC +_020B9C4C: .word 0x00001B19 +_020B9C50: .word 0x021066E8 + + arm_func_start FUN_020B9C54 +FUN_020B9C54: ; 0x020B9C54 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0xc8 + mov r9, r0 + ldr r2, [r9, #0x8] + mov r8, r1 + ands r0, r2, #0x200 + mov r6, #0x2 + ldr r5, _020B9F58 ; =0x021066D0 + ldr r4, _020B9F5C ; =0x021066DC + beq _020B9CB8 + cmp r8, #0x40 + beq _020B9C8C + cmp r8, #0x60 + bne _020B9C90 +_020B9C8C: + add r6, r6, #0x1 +_020B9C90: + cmp r8, #0x20 + beq _020B9CA0 + cmp r8, #0x60 + bne _020B9CA4 +_020B9CA0: + add r6, r6, #0x1 +_020B9CA4: + ldr r0, [r9, #0x0] + add sp, sp, #0xc8 + add r0, r0, r6 + str r0, [r9, #0x0] + ldmia sp!, {r4-r10,pc} +_020B9CB8: + cmp r8, #0x40 + beq _020B9CC8 + cmp r8, #0x60 + bne _020B9D00 +_020B9CC8: + add r6, r6, #0x1 + ands r0, r2, #0x100 + bne _020B9D00 + cmp r8, #0x40 + ldreq r0, [r9, #0x0] + add r1, sp, #0x0 + ldreqb r0, [r0, #0x2] + mov r2, #0x1 + streq r0, [sp, #0x0] + ldrne r0, [r9, #0x0] + ldrneb r0, [r0, #0x3] + strne r0, [sp, #0x0] + mov r0, #0x14 + bl FUN_020BB1C0 +_020B9D00: + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + moveq r7, #0x0 + cmp r7, #0x1 + bne _020B9D4C + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x28] + cmp r0, #0x0 + ldrneb r7, [r9, #0x93] + ldr r0, [r9, #0x8] + moveq r7, #0x0 + and r1, r0, #0x40 + b _020B9D50 +_020B9D4C: + mov r1, #0x0 +_020B9D50: + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9ED4 + cmp r1, #0x0 + bne _020B9ED4 + bl FUN_020BB394 + ldr r2, _020B9F60 ; =0x00151110 + ldr r1, _020B9F64 ; =0x04000400 + mov r0, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x0] + str r0, [r1, #0x0] + add r10, sp, #0x8 +_020B9D84: + mov r0, r10 + bl G3X_GetClipMtx +_020B9D8C: ; 0x020B9D8C + cmp r0, #0x0 + bne _020B9D84 + ldr r0, _020B9F68 ; =0x021CED18 + ldr r1, [r0, #0xfc] + ands r0, r1, #0x1 + beq _020B9DC4 + bl FUN_020B82A4 + add r1, sp, #0x48 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x48 + mov r2, r0 + bl MTX_Concat44 + b _020B9DE8 +_020B9DC4: + ands r0, r1, #0x2 + beq _020B9DE8 + ldr r0, _020B9F6C ; =0x021CED64 + add r1, sp, #0x88 + bl MTX_Copy43To44_ + add r0, sp, #0x8 + add r1, sp, #0x88 + mov r2, r0 + bl MTX_Concat44 +_020B9DE8: + ldr r1, [sp, #0x38] + add r0, sp, #0x8 + str r1, [r5, #0x0] + ldr r1, [sp, #0x3c] + str r1, [r5, #0x4] + ldr r1, [sp, #0x40] + str r1, [r5, #0x8] + bl VEC_Mag +_020B9E08: ; 0x020B9E08 + str r0, [r4, #0x0] + add r0, sp, #0x18 + bl VEC_Mag + str r0, [r4, #0x4] + add r0, sp, #0x28 + bl VEC_Mag + ldr r1, _020B9F68 ; =0x021CED18 + str r0, [r4, #0x8] + ldr r1, [r1, #0xfc] + ands r0, r1, #0x1 + beq _020B9E78 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =0x021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8264 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =0x021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9E78: + ands r0, r1, #0x2 + beq _020B9EC4 + ldr r3, _020B9F70 ; =0x00171012 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F74 ; =0x021066A4 + mov r2, #0x8 + str r3, [r1, #0x0] + bl MIi_CpuSend32 + bl FUN_020B8344 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x30 + bl MIi_CpuSend32 + ldr r2, _020B9F78 ; =0x00001B19 + ldr r1, _020B9F64 ; =0x04000400 + ldr r0, _020B9F7C ; =0x021066AC + str r2, [r1, #0x0] + mov r2, #0x3c + bl MIi_CpuSend32 + b _020B9ED4 +_020B9EC4: + ldr r0, _020B9F80 ; =0x021066A0 + ldr r1, _020B9F64 ; =0x04000400 + mov r2, #0x48 + bl MIi_CpuSend32 +_020B9ED4: + cmp r7, #0x3 + movne r0, #0x0 + bne _020B9F00 + ldr r1, [r9, #0x8] + mov r0, r9 + bic r1, r1, #0x40 + str r1, [r9, #0x8] + ldr r1, [r9, #0x28] + blx r1 + ldr r0, [r9, #0x8] + and r0, r0, #0x40 +_020B9F00: + cmp r8, #0x20 + beq _020B9F10 + cmp r8, #0x60 + bne _020B9F44 +_020B9F10: + cmp r0, #0x0 + add r6, r6, #0x1 + bne _020B9F44 + ldr r0, [r9, #0x8] + ands r0, r0, #0x100 + bne _020B9F44 + ldr r0, [r9, #0x0] + add r1, sp, #0x4 + ldrb r3, [r0, #0x2] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x4] + bl FUN_020BB1C0 +_020B9F44: + ldr r0, [r9, #0x0] + add r0, r0, r6 + str r0, [r9, #0x0] + add sp, sp, #0xc8 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020B9F58: .word 0x021066D0 +_020B9F5C: .word 0x021066DC +_020B9F60: .word 0x00151110 +_020B9F64: .word 0x04000400 +_020B9F68: .word 0x021CED18 +_020B9F6C: .word 0x021CED64 +_020B9F70: .word 0x00171012 +_020B9F74: .word 0x021066A4 +_020B9F78: .word 0x00001B19 +_020B9F7C: .word 0x021066AC +_020B9F80: .word 0x021066A0 + + arm_func_start FUN_020B9F84 +FUN_020B9F84: ; 0x020B9F84 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x14 + mov r10, r0 + ldr r0, [r10, #0x0] + mov r9, r1 + ldrb r4, [r0, #0x1] + mov r7, #0x4 + strb r4, [r10, #0xae] + ldr r0, [r10, #0x8] + orr r0, r0, #0x10 + str r0, [r10, #0x8] + ldr r1, [r10, #0x8] + ands r0, r1, #0x400 + beq _020BA01C + cmp r9, #0x40 + beq _020B9FCC + cmp r9, #0x60 + bne _020B9FD0 +_020B9FCC: + add r7, r7, #0x1 +_020B9FD0: + cmp r9, #0x20 + beq _020B9FE0 + cmp r9, #0x60 + bne _020BA008 +_020B9FE0: + add r7, r7, #0x1 + ands r0, r1, #0x100 + bne _020BA008 + ldr r0, [r10, #0x0] + add r1, sp, #0x8 + ldrb r3, [r0, #0x4] + mov r0, #0x14 + mov r2, #0x1 + str r3, [sp, #0x8] + bl FUN_020BB1C0 +_020BA008: + ldr r0, [r10, #0x0] + add sp, sp, #0x14 + add r0, r0, r7 + str r0, [r10, #0x0] + ldmia sp!, {r4-r11,pc} +_020BA01C: + cmp r9, #0x40 + beq _020BA02C + cmp r9, #0x60 + bne _020BA068 +_020BA02C: + cmp r9, #0x40 + ldreq r0, [r10, #0x0] + add r7, r7, #0x1 + ldreqb r0, [r0, #0x4] + streq r0, [sp, #0xc] + ldrne r0, [r10, #0x0] + ldrneb r0, [r0, #0x5] + strne r0, [sp, #0xc] + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA068 + add r1, sp, #0xc + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BA068: + add r0, r10, #0x12c + str r0, [r10, #0xb4] + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + moveq r8, #0x0 + cmp r8, #0x1 + bne _020BA0BC + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA0C0 +_020BA0BC: + mov r0, #0x0 +_020BA0C0: + cmp r0, #0x0 + bne _020BA2CC + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x34] + cmp r1, #0x0 + beq _020BA0F4 + mov r0, #0x58 + mla r6, r4, r0, r1 + ldr r0, [r10, #0x8] + ands r0, r0, #0x80 + moveq r0, #0x1 + movne r0, #0x0 + b _020BA0FC +_020BA0F4: + add r6, r10, #0x12c + mov r0, #0x0 +_020BA0FC: + cmp r0, #0x0 + bne _020BA2C8 + mov r0, #0x0 + str r0, [r6, #0x0] + ldr r0, [r10, #0x4] + ldr r1, [r0, #0x10] + cmp r1, #0x0 + beq _020BA134 + ldr r3, [r0, #0x14] + mov r0, r6 + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BA2C8 +_020BA134: + ldr r2, [r10, #0xd4] + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r1, [r0, #0x4] + ldrh r0, [r2, r1] + add r4, r2, r1 + add r5, r4, #0x4 + ands r0, r0, #0x1 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x4 + strne r0, [r6, #0x0] + bne _020BA188 + ldr r0, [r5, #0x0] + str r0, [r6, #0x4c] + ldr r0, [r5, #0x4] + str r0, [r6, #0x50] + ldr r0, [r5, #0x8] + add r5, r5, #0xc + str r0, [r6, #0x54] +_020BA188: + ldrh r1, [r4, #0x0] + ands r0, r1, #0x2 + ldrne r0, [r6, #0x0] + orrne r0, r0, #0x2 + strne r0, [r6, #0x0] + bne _020BA2B0 + ands r0, r1, #0x8 + beq _020BA264 + and r1, r1, #0xf0 + mov r11, r1, asr #0x4 + ldrsh r1, [r5, #0x0] + add r0, r6, #0x28 + str r1, [sp, #0x0] + ldrsh r1, [r5, #0x2] + str r1, [sp, #0x4] + blx MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r6, r11, lsl #0x2 + add r5, r5, #0x4 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + str r2, [r1, #0x28] + ldr r0, _020BA3B4 ; =0x020FF9F0 + ldr r1, _020BA3B8 ; =0x020FF9F1 + ldrb r0, [r0, r11, lsl #0x2] + add r2, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r2, #0x28] + ldrb r0, [r1, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldrne r0, [sp, #0x4] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x4] + ldr r0, _020BA3BC ; =0x020FF9F2 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x4] + str r0, [r1, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldrne r0, [sp, #0x0] + rsbne r0, r0, #0x0 + strne r0, [sp, #0x0] + ldr r0, _020BA3C0 ; =0x020FF9F3 + ldrb r0, [r0, r11, lsl #0x2] + add r1, r6, r0, lsl #0x2 + ldr r0, [sp, #0x0] + str r0, [r1, #0x28] + b _020BA2B0 +_020BA264: + ldrsh r0, [r4, #0x2] + str r0, [r6, #0x28] + ldrsh r0, [r5, #0x0] + str r0, [r6, #0x2c] + ldrsh r0, [r5, #0x2] + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x4] + str r0, [r6, #0x34] + ldrsh r0, [r5, #0x6] + str r0, [r6, #0x38] + ldrsh r0, [r5, #0x8] + str r0, [r6, #0x3c] + ldrsh r0, [r5, #0xa] + str r0, [r6, #0x40] + ldrsh r0, [r5, #0xc] + str r0, [r6, #0x44] + ldrsh r0, [r5, #0xe] + add r5, r5, #0x10 + str r0, [r6, #0x48] +_020BA2B0: + ldrh r3, [r4, #0x0] + ldr r2, [r10, #0x0] + ldr r4, [r10, #0xe8] + mov r0, r6 + mov r1, r5 + blx r4 +_020BA2C8: + str r6, [r10, #0xb4] +_020BA2CC: + cmp r8, #0x2 + bne _020BA308 + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x24] + cmp r0, #0x0 + ldrneb r8, [r10, #0x92] + ldr r0, [r10, #0x8] + moveq r8, #0x0 + and r0, r0, #0x40 + b _020BA30C +_020BA308: + mov r0, #0x0 +_020BA30C: + cmp r0, #0x0 + bne _020BA32C + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA32C + ldr r0, [r10, #0xb4] + ldr r1, [r10, #0xec] + blx r1 +_020BA32C: + mov r0, #0x0 + str r0, [r10, #0xb4] + cmp r8, #0x3 + bne _020BA35C + ldr r1, [r10, #0x8] + mov r0, r10 + bic r1, r1, #0x40 + str r1, [r10, #0x8] + ldr r1, [r10, #0x24] + blx r1 + ldr r0, [r10, #0x8] + and r0, r0, #0x40 +_020BA35C: + cmp r9, #0x20 + beq _020BA36C + cmp r9, #0x60 + bne _020BA3A0 +_020BA36C: + cmp r0, #0x0 + add r7, r7, #0x1 + bne _020BA3A0 + ldr r0, [r10, #0x8] + ands r0, r0, #0x100 + bne _020BA3A0 + ldr r0, [r10, #0x0] + add r1, sp, #0x10 + ldrb r3, [r0, #0x4] + mov r0, #0x13 + mov r2, #0x1 + str r3, [sp, #0x10] + bl FUN_020BB1C0 +_020BA3A0: + ldr r0, [r10, #0x0] + add r0, r0, r7 + str r0, [r10, #0x0] + add sp, sp, #0x14 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BA3B4: .word 0x020FF9F0 +_020BA3B8: .word 0x020FF9F1 +_020BA3BC: .word 0x020FF9F2 +_020BA3C0: .word 0x020FF9F3 + + arm_func_start FUN_020BA3C4 +FUN_020BA3C4: ; 0x020BA3C4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r3, [r4, #0x8] + ands r2, r3, #0x200 + bne _020BA420 + ands r2, r3, #0x1 + beq _020BA420 + ands r2, r3, #0x2 + bne _020BA420 + ldr r5, [r4, #0xdc] + ldr r3, [r4, #0x0] + ldrh r2, [r5, #0x6] + ldrb r3, [r3, #0x1] + ldr ip, _020BA434 ; =0x02106650 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r5, r2] + add r2, r5, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA420: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BA434: .word 0x02106650 + + arm_func_start FUN_020BA438 +FUN_020BA438: ; 0x020BA438 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x20] + mov r5, r2 + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BA490 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + ldr r0, [r6, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BA494 +_020BA490: + mov r0, #0x0 +_020BA494: + cmp r0, #0x0 + bne _020BA4B8 + ldr r0, [r6, #0x8] + ands r0, r0, #0x100 + bne _020BA4B8 + ldr r0, [r5, #0x8] + ldr r1, [r5, #0xc] + add r0, r5, r0 + bl FUN_020BB2B0 +_020BA4B8: + cmp r4, #0x2 + bne _020BA4E8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldr r0, [r6, #0x20] + cmp r0, #0x0 + ldrneb r4, [r6, #0x91] + moveq r4, #0x0 +_020BA4E8: + cmp r4, #0x3 + ldmneia sp!, {r4-r6,pc} +_020BA4F0: ; 0x020BA4F0 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x20] + blx r1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BA50C +FUN_020BA50C: ; 0x020BA50C + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r5, [r4, #0x8] + ands r0, r5, #0x200 + bne _020BA578 + ldr r2, [r4, #0x0] + ands r0, r5, #0x1 + ldrb r3, [r2, #0x1] + bne _020BA544 + ands r0, r5, #0x8 + beq _020BA544 + ldrb r0, [r4, #0xad] + cmp r3, r0 + beq _020BA578 +_020BA544: + ldr r6, [r4, #0xd8] + ldr ip, _020BA588 ; =0x02106640 + ldrh r2, [r6, #0xa] + add r5, r6, #0x4 + mov r0, r4 + ldrh lr, [r5, r2] + add r2, r5, r2 + mla r2, lr, r3, r2 + ldr r2, [r2, #0x4] + ldrh lr, [r6, r2] + add r2, r6, r2 + ldr r12, [r12, lr, lsl #0x2] + blx r12 +_020BA578: + ldr r0, [r4, #0x0] + add r0, r0, #0x2 + str r0, [r4, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BA588: .word 0x02106640 + + arm_func_start FUN_020BA58C +FUN_020BA58C: ; 0x020BA58C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x20 + mov r8, r0 + mov r6, r3 + strb r6, [r8, #0xad] + ldr r3, [r8, #0x8] + add r0, r8, #0xf4 + orr r3, r3, #0x8 + str r3, [r8, #0x8] + str r0, [r8, #0xb0] + ldr r0, [r8, #0x1c] + mov r4, r1 + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + mov r7, r2 + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BA608 + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA60C +_020BA608: + mov r0, #0x0 +_020BA60C: + cmp r0, #0x0 + bne _020BA8C0 + ldr r0, [r8, #0x4] + ldr r0, [r0, #0x38] + cmp r0, #0x0 + beq _020BA638 + ldr r1, [r8, #0x8] + ands r1, r1, #0x80 + moveq r1, #0x38 + mlaeq r4, r6, r1, r0 + beq _020BA8BC +_020BA638: + cmp r4, #0x20 + beq _020BA648 + cmp r4, #0x40 + bne _020BA684 +_020BA648: + mov r1, r6, lsr #0x5 + add r1, r8, r1, lsl #0x2 + and r2, r6, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xbc] + ands r1, r2, r1 + beq _020BA684 + cmp r0, #0x0 + movne r1, #0x38 + mlane r4, r6, r1, r0 + ldreq r1, _020BA9D8 ; =0x021CEF80 + moveq r0, #0x38 + mlaeq r4, r6, r0, r1 + b _020BA8BC +_020BA684: + cmp r0, #0x0 + beq _020BA6BC + add r4, r8, #0xbc + mov r3, r6, lsr #0x5 + ldr r2, [r4, r3, lsl #0x2] + and r0, r6, #0x1f + mov r1, #0x1 + orr r0, r2, r1, lsl r0 + str r0, [r4, r3, lsl #0x2] + ldr r1, [r8, #0x4] + mov r0, #0x38 + ldr r1, [r1, #0x38] + mla r4, r6, r0, r1 + b _020BA6F0 +_020BA6BC: + cmp r4, #0x40 + addne r4, r8, #0xf4 + bne _020BA6F0 + add lr, r8, #0xbc + mov r12, r6, lsr #0x5 + ldr r1, _020BA9D8 ; =0x021CEF80 + ldr r4, [lr, r12, lsl #0x2] + mov r0, #0x38 + and r2, r6, #0x1f + mov r3, #0x1 + orr r2, r4, r3, lsl r2 + mla r4, r6, r0, r1 + str r2, [lr, r12, lsl #0x2] +_020BA6F0: + mov r0, #0x0 + str r0, [r4, #0x0] + ldr r3, [r8, #0xd8] + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r6, r0 + ldr r0, [r0, #0x4] + ldr r1, _020BA9DC ; =0x021CED18 + add r0, r3, r0 + ldrh r0, [r0, #0x1e] + ands r0, r0, #0x20 + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x20 + strne r0, [r4, #0x0] + ldrh r2, [r7, #0x1e] + ldr r0, _020BA9E0 ; =0x020FF9D0 + ldr r12, [r1, #0x94] + mov r2, r2, asr #0x6 + and r2, r2, #0x7 + ldr lr, [r0, r2, lsl #0x2] + ldr r2, [r7, #0x4] + mvn r3, lr + and r3, r12, r3 + and r2, r2, lr + orr r2, r3, r2 + str r2, [r4, #0x4] + ldrh r12, [r7, #0x1e] + ldr r3, [r1, #0x98] + ldr r2, [r7, #0x8] + mov r12, r12, asr #0x9 + and r12, r12, #0x7 + ldr r12, [r0, r12, lsl #0x2] + mvn r0, r12 + and r3, r3, r0 + and r0, r2, r12 + orr r0, r3, r0 + str r0, [r4, #0x8] + ldr r3, [r7, #0x10] + ldr r0, [r7, #0xc] + ldr r2, [r1, #0x9c] + mvn r1, r3 + and r1, r2, r1 + and r0, r0, r3 + orr r0, r1, r0 + str r0, [r4, #0xc] + ldr r0, [r7, #0x14] + str r0, [r4, #0x10] + ldrh r0, [r7, #0x1c] + str r0, [r4, #0x14] + ldrh r1, [r7, #0x1e] + ands r0, r1, #0x1 + beq _020BA850 + ands r1, r1, #0x2 + ldrne r1, [r4, #0x0] + add r0, r7, #0x2c + orrne r1, r1, #0x1 + strne r1, [r4, #0x0] + bne _020BA7F4 + ldr r1, [r0, #0x0] + str r1, [r4, #0x18] + ldr r1, [r0, #0x4] + add r0, r0, #0x8 + str r1, [r4, #0x1c] +_020BA7F4: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x4 + ldrne r1, [r4, #0x0] + orrne r1, r1, #0x2 + strne r1, [r4, #0x0] + bne _020BA820 + ldrsh r1, [r0, #0x0] + strh r1, [r4, #0x20] + ldrsh r1, [r0, #0x2] + add r0, r0, #0x4 + strh r1, [r4, #0x22] +_020BA820: + ldrh r1, [r7, #0x1e] + ands r1, r1, #0x8 + ldreq r1, [r0, #0x0] + streq r1, [r4, #0x24] + ldreq r0, [r0, #0x4] + streq r0, [r4, #0x28] + ldrne r0, [r4, #0x0] + orrne r0, r0, #0x4 + strne r0, [r4, #0x0] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] +_020BA850: + ldr r0, [r8, #0x4] + ldr r1, [r0, #0x8] + cmp r1, #0x0 + beq _020BA890 + mov r2, r6, lsr #0x5 + add r2, r0, r2, lsl #0x2 + and r3, r6, #0x1f + mov r12, #0x1 + mov r3, r12, lsl r3 + ldr r2, [r2, #0x3c] + ands r2, r3, r2 + beq _020BA890 + ldr r3, [r0, #0xc] + mov r0, r4 + mov r2, r6 + blx r3 +_020BA890: + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA8BC + ldrh r0, [r7, #0x20] + strh r0, [r4, #0x2c] + ldrh r0, [r7, #0x22] + strh r0, [r4, #0x2e] + ldr r0, [r7, #0x24] + str r0, [r4, #0x30] + ldr r0, [r7, #0x28] + str r0, [r4, #0x34] +_020BA8BC: + str r4, [r8, #0xb0] +_020BA8C0: + cmp r5, #0x2 + bne _020BA8FC + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + ldr r0, [r8, #0x1c] + cmp r0, #0x0 + ldrneb r5, [r8, #0x90] + ldr r0, [r8, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BA900 +_020BA8FC: + mov r0, #0x0 +_020BA900: + cmp r0, #0x0 + bne _020BA9AC + ldr r4, [r8, #0xb0] + ldr r1, [r4, #0xc] + ands r0, r1, #0x1f0000 + beq _020BA9A0 + ldr r0, [r4, #0x0] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + strne r0, [r4, #0xc] + ldr r0, [r8, #0x8] + bic r0, r0, #0x2 + str r0, [r8, #0x8] + ldr r0, [r8, #0x8] + ands r0, r0, #0x100 + bne _020BA9AC + ldr r0, _020BA9E4 ; =0x00293130 + ldr r3, _020BA9E8 ; =0x00002B2A + str r0, [sp, #0x0] + ldr r2, [r4, #0x4] + add r1, sp, #0x4 + str r2, [sp, #0x4] + ldr r6, [r4, #0x8] + mov r2, #0x6 + str r6, [sp, #0x8] + ldr r6, [r4, #0xc] + str r6, [sp, #0xc] + str r3, [sp, #0x10] + ldr r3, [r4, #0x10] + str r3, [sp, #0x14] + ldr r3, [r4, #0x14] + str r3, [sp, #0x18] + bl FUN_020BB1C0 +_020BA984: ; 0x020BA984 + ldr r0, [r4, #0x0] + ands r0, r0, #0x18 + beq _020BA9AC + ldr r1, [r8, #0xf0] + mov r0, r4 + blx r1 + b _020BA9AC +_020BA9A0: + ldr r0, [r8, #0x8] + orr r0, r0, #0x2 + str r0, [r8, #0x8] +_020BA9AC: + cmp r5, #0x3 + addne sp, sp, #0x20 + ldmneia sp!, {r4-r8,pc} +_020BA9B8: ; 0x020BA9B8 + ldr r1, [r8, #0x8] + mov r0, r8 + bic r1, r1, #0x40 + str r1, [r8, #0x8] + ldr r1, [r8, #0x1c] + blx r1 + add sp, sp, #0x20 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BA9D8: .word 0x021CEF80 +_020BA9DC: .word 0x021CED18 +_020BA9E0: .word 0x020FF9D0 +_020BA9E4: .word 0x00293130 +_020BA9E8: .word 0x00002B2A + + arm_func_start FUN_020BA9EC +FUN_020BA9EC: ; 0x020BA9EC + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x8] + ands r0, r1, #0x200 + bne _020BAAAC + ands r0, r1, #0x1 + beq _020BAAAC + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + moveq r4, #0x0 + cmp r4, #0x1 + bne _020BAA58 + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 + ldr r0, [r5, #0x18] + cmp r0, #0x0 + ldrneb r4, [r5, #0x8f] + ldr r0, [r5, #0x8] + moveq r4, #0x0 + and r0, r0, #0x40 + b _020BAA5C +_020BAA58: + mov r0, #0x0 +_020BAA5C: + cmp r0, #0x0 + bne _020BAA8C + ldr r0, [r5, #0x0] + ldrb r0, [r0, #0x1] + str r0, [sp, #0x0] + ldr r0, [r5, #0x8] + ands r0, r0, #0x100 + bne _020BAA8C + add r1, sp, #0x0 + mov r0, #0x14 + mov r2, #0x1 + bl FUN_020BB1C0 +_020BAA8C: + cmp r4, #0x3 + bne _020BAAAC + ldr r1, [r5, #0x8] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r5, #0x8] + ldr r1, [r5, #0x18] + blx r1 +_020BAAAC: + ldr r0, [r5, #0x0] + add r0, r0, #0x2 + str r0, [r5, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BAAC0 +FUN_020BAAC0: ; 0x020BAAC0 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r0, [r6, #0x8] + ands r0, r0, #0x200 + bne _020BAC38 + ldr r1, [r6, #0x0] + add r0, r6, #0x184 + ldrb r1, [r1, #0x1] + strb r1, [r6, #0xac] + ldr r1, [r6, #0x8] + ldrb r4, [r6, #0xac] + orr r1, r1, #0x4 + str r1, [r6, #0x8] + str r0, [r6, #0xb8] + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + moveq r5, #0x0 + cmp r5, #0x1 + bne _020BAB44 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BAB48 +_020BAB44: + mov r0, #0x0 +_020BAB48: + cmp r0, #0x0 + bne _020BABAC + ldr r12, [r6, #0x4] + ldr r1, [r12, #0x18] + cmp r1, #0x0 + beq _020BAB98 + mov r0, r4, lsr #0x5 + add r0, r12, r0, lsl #0x2 + and r2, r4, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x4c] + ands r0, r2, r0 + beq _020BAB98 + ldr r0, [r6, #0xb8] + ldr r3, [r12, #0x1c] + mov r2, r4 + blx r3 + cmp r0, #0x0 + bne _020BABAC +_020BAB98: + ldr r1, [r6, #0x0] + ldr r0, [r6, #0xb8] + ldrb r1, [r1, #0x2] + and r1, r1, #0x1 + str r1, [r0, #0x0] +_020BABAC: + cmp r5, #0x2 + bne _020BABE8 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 + ldr r0, [r6, #0x14] + cmp r0, #0x0 + ldrneb r5, [r6, #0x8e] + ldr r0, [r6, #0x8] + moveq r5, #0x0 + and r0, r0, #0x40 + b _020BABEC +_020BABE8: + mov r0, #0x0 +_020BABEC: + cmp r0, #0x0 + bne _020BAC18 + ldr r0, [r6, #0xb8] + ldr r0, [r0, #0x0] + cmp r0, #0x0 + ldrne r0, [r6, #0x8] + orrne r0, r0, #0x1 + strne r0, [r6, #0x8] + ldreq r0, [r6, #0x8] + biceq r0, r0, #0x1 + streq r0, [r6, #0x8] +_020BAC18: + cmp r5, #0x3 + bne _020BAC38 + ldr r1, [r6, #0x8] + mov r0, r6 + bic r1, r1, #0x40 + str r1, [r6, #0x8] + ldr r1, [r6, #0x14] + blx r1 +_020BAC38: + ldr r0, [r6, #0x0] + add r0, r0, #0x3 + str r0, [r6, #0x0] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BAC48 +FUN_020BAC48: ; 0x020BAC48 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAC60 + blx r1 +_020BAC60: + ldr r0, [r4, #0x8] + orr r0, r0, #0x20 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BAC70 +FUN_020BAC70: ; 0x020BAC70 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0xc] + cmp r1, #0x0 + beq _020BAC88 + blx r1 +_020BAC88: + ldr r0, [r4, #0x0] + add r0, r0, #0x1 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BAC98 +FUN_020BAC98: ; 0x020BAC98 + stmdb sp!, {r4,lr} + sub sp, sp, #0x188 + mov r4, r0 + ldr r0, [r4, #0x0] + and r0, r0, #0x10 + cmp r0, #0x10 + bne _020BAD2C + add r1, r4, #0x3c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x44 + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + add r1, r4, #0x4c + mov r0, #0x0 + mov r2, #0x8 + bl MIi_CpuClear32 + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020BACF8 + add r0, r4, #0x3c + bl FUN_020BAD74 +_020BACF8: + ldr r1, [r4, #0x10] + cmp r1, #0x0 + beq _020BAD0C + add r0, r4, #0x44 + bl FUN_020BAD74 +_020BAD0C: + ldr r1, [r4, #0x18] + cmp r1, #0x0 + beq _020BAD20 + add r0, r4, #0x4c + bl FUN_020BAD74 +_020BAD20: + ldr r0, [r4, #0x0] + bic r0, r0, #0x10 + str r0, [r4, #0x0] +_020BAD2C: + ldr r2, _020BAD70 ; =0x021CEF7C + ldr r0, [r2, #0x0] + cmp r0, #0x0 + beq _020BAD4C + mov r1, r4 + bl FUN_020BADE4 + add sp, sp, #0x188 + ldmia sp!, {r4,pc} +_020BAD4C: + add r0, sp, #0x0 + mov r1, r4 + str r0, [r2, #0x0] + bl FUN_020BADE4 + ldr r0, _020BAD70 ; =0x021CEF7C + mov r1, #0x0 + str r1, [r0, #0x0] + add sp, sp, #0x188 + ldmia sp!, {r4,pc} + .balign 4 +_020BAD70: .word 0x021CEF7C + + arm_func_start FUN_020BAD74 +FUN_020BAD74: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020BAD88: ; 0x020BAD88 + mov r3, #0x1 + mov r4, #0x0 +_020BAD90: + ldrb r2, [r1, #0x19] + mov r5, r4 + cmp r2, #0x0 + ble _020BADD0 +_020BADA0: + add r2, r1, r5, lsl #0x1 + ldrh r2, [r2, #0x1a] + ands r2, r2, #0x100 + movne lr, r5, asr #0x5 + andne r2, r5, #0x1f + ldrne r12, [r0, lr, lsl #0x2] + add r5, r5, #0x1 + orrne r2, r12, r3, lsl r2 + strne r2, [r0, lr, lsl #0x2] + ldrb r2, [r1, #0x19] + cmp r5, r2 + blt _020BADA0 +_020BADD0: + ldr r1, [r1, #0x10] + cmp r1, #0x0 + bne _020BAD90 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BADE4 +FUN_020BADE4: ; 0x020BADE4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r1, r5 + mov r0, #0x0 + mov r2, #0x188 + bl MIi_CpuClearFast + mov r0, #0x1 + str r0, [r5, #0xc4] + str r0, [r5, #0x8] + ldr r0, [r4, #0x30] + ldr r2, _020BAF60 ; =0x02106614 + cmp r0, #0x0 + strne r0, [r5, #0x0] + ldreq r1, [r4, #0x4] + ldreq r0, [r1, #0x4] + addeq r0, r1, r0 + streq r0, [r5, #0x0] + str r4, [r5, #0x4] + ldr r0, [r4, #0x4] + ldr r1, _020BAF64 ; =0x02106608 + add r0, r0, #0x40 + str r0, [r5, #0xd4] + ldr r12, [r4, #0x4] + ldr r0, _020BAF68 ; =0x02106620 + ldr r3, [r12, #0x8] + add r3, r12, r3 + str r3, [r5, #0xd8] + ldr r12, [r4, #0x4] + ldr r3, [r12, #0xc] + add r3, r12, r3 + str r3, [r5, #0xdc] + ldr r3, [r4, #0x4] + ldrb r3, [r3, #0x15] + ldr r2, [r2, r3, lsl #0x2] + str r2, [r5, #0xe8] + ldr r2, [r4, #0x4] + ldrb r2, [r2, #0x15] + ldr r1, [r1, r2, lsl #0x2] + str r1, [r5, #0xec] + ldr r1, [r4, #0x4] + ldrb r1, [r1, #0x16] + ldr r0, [r0, r1, lsl #0x2] + str r0, [r5, #0xf0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x1c] + str r0, [r5, #0xe0] + ldr r0, [r4, #0x4] + ldr r0, [r0, #0x20] + str r0, [r5, #0xe4] + ldr r1, [r4, #0x20] + cmp r1, #0x0 + beq _020BAEE0 + ldrb r0, [r4, #0x24] + cmp r0, #0x20 + bhs _020BAEE0 + add r0, r5, r0, lsl #0x2 + str r1, [r0, #0xc] + ldrb r0, [r4, #0x24] + ldrb r1, [r4, #0x25] + add r0, r5, r0 + strb r1, [r0, #0x8c] +_020BAEE0: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x80 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x100 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x200 + strne r0, [r5, #0x8] + ldr r0, [r4, #0x0] + ands r0, r0, #0x8 + ldrne r0, [r5, #0x8] + orrne r0, r0, #0x400 + strne r0, [r5, #0x8] + ldr r1, [r4, #0x28] + cmp r1, #0x0 + beq _020BAF44 + mov r0, r5 + blx r1 +_020BAF44: + mov r0, r5 + bl FUN_020BAF6C +_020BAF4C: ; 0x020BAF4C + ldr r0, [r4, #0x0] + bic r0, r0, #0x1 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BAF60: .word 0x02106614 +_020BAF64: .word 0x02106608 +_020BAF68: .word 0x02106620 + + arm_func_start FUN_020BAF6C +FUN_020BAF6C: + stmdb sp!, {r4-r6,lr} + mov r5, r0 + ldr r6, _020BAFB4 ; =0x02106730 + add r4, r5, #0x8 +_020BAF7C: + ldr r1, [r4, #0x0] + mov r0, r5 + bic r1, r1, #0x40 + str r1, [r4, #0x0] + ldr r1, [r5, #0x0] + ldrb r3, [r1, #0x0] + and r1, r3, #0x1f + ldr r2, [r6, r1, lsl #0x2] + and r1, r3, #0xe0 + blx r2 + ldr r0, [r5, #0x8] + ands r0, r0, #0x20 + beq _020BAF7C + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BAFB4: .word 0x02106730 + + arm_func_start FUN_020BAFB8 +FUN_020BAFB8: ; 0x020BAFB8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x6c + mov r6, r0 + ldr r12, [r6, #0x1c] + mov r4, r1 + mov r5, r2 + mov r7, r3 + cmp r12, #0x1000 + beq _020BAFF8 + add r1, sp, #0x54 + mov r0, #0x1b + mov r2, #0x3 + str r12, [sp, #0x54] + str r12, [sp, #0x58] + str r12, [sp, #0x5c] + bl FUN_020BB1C0 +_020BAFF8: + cmp r7, #0x0 + beq _020BB150 + ldr r0, [r6, #0x8] + add r3, r6, r0 + ldrh r0, [r3, #0xa] + add r2, r3, #0x4 + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r4, r0 + ldr r0, [r0, #0x4] + add r4, r3, r0 + ldr r0, [r4, #0xc] + ands r0, r0, #0x1f0000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} +_020BB034: ; 0x020BB034 + ldr r0, _020BB1B4 ; =0x00293130 + str r0, [sp, #0x0] + ldr r0, [r4, #0x4] + str r0, [sp, #0x4] + ldr r0, [r4, #0x8] + str r0, [sp, #0x8] + ldr r1, [r4, #0xc] + str r1, [sp, #0xc] + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x20 + bicne r0, r1, #0x1f0000 + ldr r1, _020BB1B8 ; =0x00002B2A + strne r0, [sp, #0xc] + str r1, [sp, #0x10] + ldr r2, [r4, #0x14] + ldr r0, [sp, #0x0] + str r2, [sp, #0x14] + ldrh r3, [r4, #0x1c] + add r1, sp, #0x4 + mov r2, #0x6 + str r3, [sp, #0x18] + bl FUN_020BB1C0 + ldrh r0, [r4, #0x1e] + ands r0, r0, #0x1 + beq _020BB150 + ldrb r12, [r6, #0x16] + mov r3, #0x8 + ldr r1, _020BB1BC ; =0x02106620 + str r3, [sp, #0x1c] + ldrh r2, [r4, #0x20] + add r0, r4, #0x2c + ldr r1, [r1, r12, lsl #0x2] + strh r2, [sp, #0x48] + ldrh r2, [r4, #0x22] + strh r2, [sp, #0x4a] + ldr r2, [r4, #0x24] + str r2, [sp, #0x4c] + ldr r2, [r4, #0x28] + str r2, [sp, #0x50] + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x2 + orrne r2, r3, #0x1 + strne r2, [sp, #0x1c] + bne _020BB0F8 + ldr r2, [r0, #0x0] + str r2, [sp, #0x34] + ldr r2, [r0, #0x4] + add r0, r0, #0x8 + str r2, [sp, #0x38] +_020BB0F8: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x4 + ldrne r2, [sp, #0x1c] + orrne r2, r2, #0x2 + strne r2, [sp, #0x1c] + bne _020BB124 + ldrsh r2, [r0, #0x0] + strh r2, [sp, #0x3c] + ldrsh r2, [r0, #0x2] + add r0, r0, #0x4 + strh r2, [sp, #0x3e] +_020BB124: + ldrh r2, [r4, #0x1e] + ands r2, r2, #0x8 + ldreq r2, [r0, #0x0] + streq r2, [sp, #0x40] + ldreq r0, [r0, #0x4] + streq r0, [sp, #0x44] + ldrne r0, [sp, #0x1c] + orrne r0, r0, #0x4 + strne r0, [sp, #0x1c] + add r0, sp, #0x1c + blx r1 +_020BB150: + ldr r0, [r6, #0xc] + add r2, r6, r0 + ldrh r0, [r2, #0x6] + ldrh r1, [r2, r0] + add r0, r2, r0 + mla r0, r1, r5, r0 + ldr r0, [r0, #0x4] + add r2, r2, r0 + ldr r0, [r2, #0x8] + ldr r1, [r2, #0xc] + add r0, r2, r0 + bl FUN_020BB2B0 + ldr r3, [r6, #0x20] + cmp r3, #0x1000 + addeq sp, sp, #0x6c + ldmeqia sp!, {r4-r7,pc} +_020BB190: ; 0x020BB190 + add r1, sp, #0x60 + mov r0, #0x1b + mov r2, #0x3 + str r3, [sp, #0x60] + str r3, [sp, #0x64] + str r3, [sp, #0x68] + bl FUN_020BB1C0 + add sp, sp, #0x6c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BB1B4: .word 0x00293130 +_020BB1B8: .word 0x00002B2A +_020BB1BC: .word 0x02106620 + + arm_func_start FUN_020BB1C0 +FUN_020BB1C0: + stmdb sp!, {r4-r6,lr} + ldr r3, _020BB2A4 ; =0x021D1C80 + mov r6, r0 + ldr r12, [r3, #0x0] + mov r5, r1 + mov r4, r2 + cmp r12, #0x0 + beq _020BB278 + ldr r0, _020BB2A8 ; =0x021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB24C + ldr r2, [r12, #0x0] + add r0, r2, #0x1 + add r1, r0, r4 + cmp r1, #0xc0 + bhi _020BB24C + str r0, [r12, #0x0] + ldr r0, [r3, #0x0] + cmp r4, #0x0 + add r0, r0, r2, lsl #0x2 + str r6, [r0, #0x4] + ldmeqia sp!, {r4-r6,pc} +_020BB21C: ; 0x020BB21C + ldr r2, [r3, #0x0] + mov r0, r5 + ldr r1, [r2], #0x4 + add r1, r2, r1, lsl #0x2 + mov r2, r4, lsl #0x2 + bl MIi_CpuCopyFast + ldr r0, _020BB2A4 ; =0x021D1C80 + ldr r1, [r0, #0x0] + ldr r0, [r1, #0x0] + add r0, r0, r4 + str r0, [r1, #0x0] + ldmia sp!, {r4-r6,pc} +_020BB24C: + ldr r0, [r12, #0x0] + cmp r0, #0x0 + beq _020BB260 + bl FUN_020BB394 + b _020BB28C +_020BB260: + ldr r0, _020BB2A8 ; =0x021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C + b _020BB28C +_020BB278: + ldr r0, _020BB2A8 ; =0x021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB28C + bl FUN_020BB37C +_020BB28C: + ldr r1, _020BB2AC ; =0x04000400 + mov r0, r5 + mov r2, r4, lsl #0x2 + str r6, [r1, #0x0] + bl MIi_CpuSend32 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB2A4: .word 0x021D1C80 +_020BB2A8: .word 0x021D1C84 +_020BB2AC: .word 0x04000400 + + arm_func_start FUN_020BB2B0 +FUN_020BB2B0: ; 0x020BB2B0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r5, r0 + cmp r4, #0x100 + blo _020BB2DC + ldr r1, _020BB360 ; =0x02106814 + mvn r0, #0x0 + ldr r1, [r1, #0x0] + cmp r1, r0 + bne _020BB2F8 +_020BB2DC: + mov r2, r4, lsr #0x2 + ldr r0, [r5, #0x0] + add r1, r5, #0x4 + sub r2, r2, #0x1 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB2F8: + bl FUN_020BB394 + ldr r0, _020BB364 ; =0x021D1C88 + ldr r1, _020BB368 ; =0x021D1C84 + ldr r0, [r0, #0x0] + mov r2, #0x1 + str r2, [r1, #0x0] + cmp r0, #0x0 + beq _020BB33C + ldr r0, _020BB360 ; =0x02106814 + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsyncFast + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BB33C: + ldr r0, _020BB360 ; =0x02106814 + str r1, [sp, #0x0] + ldr r0, [r0, #0x0] + ldr r3, _020BB36C ; =FUN_020BB370 + mov r1, r5 + mov r2, r4 + bl MI_SendGXCommandAsync + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BB360: .word 0x02106814 +_020BB364: .word 0x021D1C88 +_020BB368: .word 0x021D1C84 +_020BB36C: .word FUN_020BB370 + + arm_func_start FUN_020BB370 +FUN_020BB370: ; 0x020BB370 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020BB37C +FUN_020BB37C: ; 0x020BB37C + ldr r0, _020BB390 ; =0x021D1C84 +_020BB380: + ldr r1, [r0, #0x0] + cmp r1, #0x0 + bne _020BB380 + bx lr + .balign 4 +_020BB390: .word 0x021D1C84 + + arm_func_start FUN_020BB394 +FUN_020BB394: ; 0x020BB394 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020BB3FC ; =0x021D1C84 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020BB3B0 + bl FUN_020BB37C +_020BB3B0: + ldr r0, _020BB400 ; =0x021D1C80 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r2, [r0, #0x0] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r1, _020BB404 ; =0x04000400 + add r0, r0, #0x4 + mov r2, r2, lsl #0x2 + bl MIi_CpuSend32 + ldr r0, _020BB400 ; =0x021D1C80 + mov r1, #0x0 + ldr r0, [r0, #0x0] + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB3FC: .word 0x021D1C84 +_020BB400: .word 0x021D1C80 +_020BB404: .word 0x04000400 + + arm_func_start FUN_020BB408 +FUN_020BB408: ; 0x020BB408 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + mov r5, r1 + mov r4, r2 + ldr r6, _020BB594 ; =0x021CED20 + ldr r1, _020BB598 ; =0x021CED64 + add r2, sp, #0x10 + bl MTX_MultVec43 + ldr r1, [sp, #0x14] + ldr r0, [r6, #0x1c] + ldr r2, [sp, #0x10] + smull r8, r7, r1, r0 + ldr r0, [r6, #0xc] + ldr r3, [sp, #0x18] + smlal r8, r7, r2, r0 + ldr r1, [r6, #0x2c] + ldr r0, [r6, #0x3c] + smlal r8, r7, r3, r1 + mov r1, r8, lsr #0xc + orr r1, r1, r7, lsl #0x14 + add r0, r1, r0 + bl FX_InvAsync + ldr r2, [sp, #0x14] + ldr r1, [r6, #0x10] + ldr r0, [r6, #0x14] + smull lr, r8, r2, r1 + smull r12, r9, r2, r0 + ldr r1, [sp, #0x10] + ldr r3, [r6, #0x0] + ldr r0, [sp, #0x18] + smlal lr, r8, r1, r3 + ldr r7, [r6, #0x20] + ldr r2, [r6, #0x30] + smlal lr, r8, r0, r7 + mov r3, lr, lsr #0xc + orr r3, r3, r8, lsl #0x14 + add r7, r3, r2 + ldr r3, [r6, #0x4] + ldr r8, [r6, #0x24] + smlal r12, r9, r1, r3 + smlal r12, r9, r0, r8 + mov r0, r12, lsr #0xc + ldr r2, [r6, #0x34] + orr r0, r0, r9, lsl #0x14 + add r6, r0, r2 + bl FX_GetDivResultFx64c + mov r2, r7, asr #0x1f + umull r9, lr, r0, r7 + mla lr, r0, r2, lr + mov r3, #0x80000000 + mla lr, r1, r7, lr + adds r9, r9, r3 + adc r2, lr, #0x0 + add r2, r2, #0x1000 + add r2, r2, r2, lsr #0x1f + mov r7, r2, asr #0x1 + umull lr, r2, r0, r6 + mov r12, r6, asr #0x1f + mla r2, r0, r12, r2 + mla r2, r1, r6, r2 + adds r3, lr, r3 + adc r0, r2, #0x0 + add r0, r0, #0x1000 + add r0, r0, r0, lsr #0x1f + mov r8, #0x0 + mov r6, r0, asr #0x1 + cmp r7, #0x0 + blt _020BB530 + cmp r6, #0x0 + blt _020BB530 + cmp r7, #0x1000 + bgt _020BB530 + cmp r6, #0x1000 + ble _020BB534 +_020BB530: + mvn r8, #0x0 +_020BB534: + add r0, sp, #0x0 + add r1, sp, #0x4 + add r2, sp, #0x8 + add r3, sp, #0xc + bl FUN_020B8200 + ldr r2, [sp, #0x0] + ldr r0, [sp, #0x8] + ldr r12, [sp, #0xc] + sub r0, r0, r2 + mul r0, r7, r0 + add r1, r0, #0x800 + ldr r3, [sp, #0x4] + add r1, r2, r1, asr #0xc + sub r0, r12, r3 + mul r0, r6, r0 + str r1, [r5, #0x0] + ldr r1, [sp, #0x4] + add r0, r0, #0x800 + rsb r1, r1, #0xbf + sub r1, r1, r0, asr #0xc + mov r0, r8 + str r1, [r4, #0x0] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BB594: .word 0x021CED20 +_020BB598: .word 0x021CED64 + + arm_func_start FUN_020BB59C +FUN_020BB59C: ; 0x020BB59C + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + ldr r0, _020BB7C8 ; =0x30415642 + cmp r1, r0 + bhi _020BB5F4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7CC ; =0x30414D42 + cmp r1, r0 + bhi _020BB5E4 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7D0 ; =0x30414342 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5E4: + ldr r0, _020BB7D4 ; =0x30415442 + cmp r1, r0 + beq _020BB7B0 + b _020BB7BC +_020BB5F4: + ldr r0, _020BB7D8 ; =0x30505442 + cmp r1, r0 + bhi _020BB618 + cmp r1, r0 + bhs _020BB7B0 + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + beq _020BB624 + b _020BB7BC +_020BB618: + ldr r0, _020BB7E0 ; =0x30585442 + cmp r1, r0 + bne _020BB7BC +_020BB624: + mov r11, #0x1 + mov r0, r5 + mov r9, r11 + mov r8, r11 + bl FUN_020BC0FC + movs r4, r0 + beq _020BB77C + bl FUN_020B7E1C + mov r7, r0 + mov r0, r4 + bl FUN_020B7E10 + mov r6, r0 + mov r0, r4 + bl FUN_020B7CE4 + mov r10, r0 + cmp r7, #0x0 + beq _020BB68C + ldr r0, _020BB7E4 ; =0x021064B8 + mov r1, #0x0 + ldr r3, [r0, #0x0] + mov r0, r7 + mov r2, r1 + blx r3 + movs r7, r0 + moveq r11, #0x0 + b _020BB690 +_020BB68C: + mov r7, #0x0 +_020BB690: + cmp r6, #0x0 + beq _020BB6BC + ldr r1, _020BB7E4 ; =0x021064B8 + mov r0, r6 + ldr r3, [r1, #0x0] + mov r1, #0x1 + mov r2, #0x0 + blx r3 + movs r6, r0 + moveq r9, #0x0 + b _020BB6C0 +_020BB6BC: + mov r6, #0x0 +_020BB6C0: + cmp r10, #0x0 + beq _020BB6F0 + ldr r1, _020BB7E8 ; =0x021064C0 + ldrh r2, [r4, #0x20] + ldr r3, [r1, #0x0] + mov r0, r10 + and r1, r2, #0x8000 + mov r2, #0x0 + blx r3 + movs r10, r0 + moveq r8, #0x0 + b _020BB6F4 +_020BB6F0: + mov r10, #0x0 +_020BB6F4: + cmp r11, #0x0 + beq _020BB70C + cmp r9, #0x0 + beq _020BB70C + cmp r8, #0x0 + bne _020BB748 +_020BB70C: + ldr r1, _020BB7EC ; =0x021064C4 + mov r0, r10 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =0x021064BC + mov r0, r6 + ldr r1, [r1, #0x0] + blx r1 + ldr r1, _020BB7F0 ; =0x021064BC + mov r0, r7 + ldr r1, [r1, #0x0] + blx r1 + add sp, sp, #0x4 + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020BB748: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl FUN_020B7DFC + mov r0, r4 + mov r1, r10 + bl FUN_020B7CDC + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7D28 + mov r0, r4 + mov r1, #0x1 + bl FUN_020B7C78 +_020BB77C: + ldr r1, [r5, #0x0] + ldr r0, _020BB7DC ; =0x30444D42 + cmp r1, r0 + bne _020BB7A4 + mov r0, r5 + bl FUN_020BC13C +_020BB794: ; 0x020BB794 + cmp r4, #0x0 + beq _020BB7A4 + mov r1, r4 + bl FUN_020B7790 +_020BB7A4: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7B0: + add sp, sp, #0x4 + mov r0, #0x1 + ldmia sp!, {r4-r11,pc} +_020BB7BC: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BB7C8: .word 0x30415642 +_020BB7CC: .word 0x30414D42 +_020BB7D0: .word 0x30414342 +_020BB7D4: .word 0x30415442 +_020BB7D8: .word 0x30505442 +_020BB7DC: .word 0x30444D42 +_020BB7E0: .word 0x30585442 +_020BB7E4: .word 0x021064B8 +_020BB7E8: .word 0x021064C0 +_020BB7EC: .word 0x021064C4 +_020BB7F0: .word 0x021064BC + + arm_func_start FUN_020BB7F4 +FUN_020BB7F4: ; 0x020BB7F4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl G3X_Init + bl FUN_020B84D8 + ldr r1, _020BB820 ; =0x04000600 + ldr r0, [r1, #0x0] + bic r0, r0, #0xc0000000 + orr r0, r0, #0x80000000 + str r0, [r1, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BB820: .word 0x04000600 + + arm_func_start FUN_020BB824 +FUN_020BB824: ; 0x020BB824 + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x40 + mov r6, r0 + mov r5, r1 + bl FUN_020BB394 + ldr r0, _020BB8B4 ; =0x04000440 + mov r2, #0x0 + ldr r1, _020BB8B8 ; =0x04000444 + str r2, [r0, #0x0] + ldr r0, _020BB8BC ; =0x04000454 + str r2, [r1, #0x0] + str r2, [r0, #0x0] + cmp r6, #0x0 + beq _020BB87C + add r4, sp, #0x0 +_020BB860: + mov r0, r4 + bl G3X_GetClipMtx +_020BB868: ; 0x020BB868 + cmp r0, #0x0 + bne _020BB860 + add r0, sp, #0x0 + mov r1, r6 + bl MTX_Copy44To43_ +_020BB87C: + cmp r5, #0x0 + beq _020BB894 +_020BB884: + mov r0, r5 + bl G3X_GetVectorMtx +_020BB88C: ; 0x020BB88C + cmp r0, #0x0 + bne _020BB884 +_020BB894: + ldr r1, _020BB8C0 ; =0x04000448 + mov r2, #0x1 + ldr r0, _020BB8B4 ; =0x04000440 + str r2, [r1, #0x0] + mov r1, #0x2 + str r1, [r0, #0x0] + add sp, sp, #0x40 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020BB8B4: .word 0x04000440 +_020BB8B8: .word 0x04000444 +_020BB8BC: .word 0x04000454 +_020BB8C0: .word 0x04000448 + + arm_func_start thunk_FUN_020ae84c +thunk_FUN_020ae84c: ; 0x020BB8C4 + ldr ip, _020BB8CC ; =FUN_020AE84C + bx r12 + .balign 4 +_020BB8CC: .word FUN_020AE84C + + arm_func_start FUN_020BB8D0 +FUN_020BB8D0: ; 0x020BB8D0 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, r1 + mov r1, r2 + bl FUN_020B81B0 + mov r1, r0 + mov r0, r4 + bl FUN_020AE868 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BB8F4 +FUN_020BB8F4: ; 0x020BB8F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB910: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBC74 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB910 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB934 +FUN_020BB934: ; 0x020BB934 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB950: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCB8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB950 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB974 +FUN_020BB974: ; 0x020BB974 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB990: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBCFC + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB990 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB9B4 +FUN_020BB9B4: ; 0x020BB9B4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BB9D0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD40 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BB9D0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BB9F4 +FUN_020BB9F4: ; 0x020BB9F4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBD84 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBA34 +FUN_020BBA34: ; 0x020BBA34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBDC8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBA74 +FUN_020BBA74: ; 0x020BBA74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBA90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE0C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBA90 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBAB4 +FUN_020BBAB4: ; 0x020BBAB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBAD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE50 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBAD0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBAF4 +FUN_020BBAF4: ; 0x020BBAF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBE94 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBB34 +FUN_020BBB34: ; 0x020BBB34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBED8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBB74 +FUN_020BBB74: ; 0x020BBB74 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBB90: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF1C + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBB90 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBBB4 +FUN_020BBBB4: ; 0x020BBBB4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBBD0: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBF60 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBBD0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBBF4 +FUN_020BBBF4: ; 0x020BBBF4 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC10: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFA4 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBC34 +FUN_020BBC34: ; 0x020BBC34 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldrb r0, [r6, #0x18] + mov r5, r1 + mov r4, #0x0 + cmp r0, #0x0 + ldmlsia sp!, {r4-r6,pc} +_020BBC50: + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl FUN_020BBFE8 + ldrb r0, [r6, #0x18] + add r4, r4, #0x1 + cmp r4, r0 + blo _020BBC50 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BBC74 +FUN_020BBC74: ; 0x020BBC74 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x800 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x800 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBCB8 +FUN_020BBCB8: ; 0x020BBCB8 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x1000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x1000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBCFC +FUN_020BBCFC: ; 0x020BBCFC + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x2000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x2000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBD40 +FUN_020BBD40: ; 0x020BBD40 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x4000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x4000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBD84 +FUN_020BBD84: ; 0x020BBD84 + ldr r3, [r0, #0x8] + cmp r2, #0x0 + add r12, r0, r3 + ldrh r0, [r12, #0xa] + add r3, r12, #0x4 + ldrh r2, [r3, r0] + add r0, r3, r0 + mla r0, r2, r1, r0 + ldr r0, [r0, #0x4] + add r1, r12, r0 + ldrne r0, [r1, #0xc] + orrne r0, r0, #0x8000 + strne r0, [r1, #0xc] + ldreq r0, [r1, #0xc] + biceq r0, r0, #0x8000 + streq r0, [r1, #0xc] + bx lr + + arm_func_start FUN_020BBDC8 +FUN_020BBDC8: ; 0x020BBDC8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x1f0000 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE0C +FUN_020BBE0C: ; 0x020BBE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x3f000000 + orr r0, r0, r2, lsl #0x18 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE50 +FUN_020BBE50: ; 0x020BBE50 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xc0 + orr r0, r0, r2, lsl #0x6 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBE94 +FUN_020BBE94: ; 0x020BBE94 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0x30 + orr r0, r0, r2, lsl #0x4 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBED8 +FUN_020BBED8: ; 0x020BBED8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x8] + add lr, r0, r3 + ldrh r0, [lr, #0xa] + add r12, lr, #0x4 + ldrh r3, [r12, r0] + add r0, r12, r0 + mla r0, r3, r1, r0 + ldr r0, [r0, #0x4] + add r1, lr, r0 + ldr r0, [r1, #0xc] + bic r0, r0, #0xf + orr r0, r0, r2 + str r0, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BBF1C +FUN_020BBF1C: ; 0x020BBF1C + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBF5C ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x8] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020BBF5C: .word 0x8000FFFF + + arm_func_start FUN_020BBF60 +FUN_020BBF60: ; 0x020BBF60 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x8] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BBFA4 +FUN_020BBFA4: ; 0x020BBFA4 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + ldr r3, _020BBFE4 ; =0x8000FFFF + add r4, r0, r12 + ldrh r0, [r4, #0xa] + add lr, r4, #0x4 + ldrh r12, [lr, r0] + add r0, lr, r0 + mla r0, r12, r1, r0 + ldr r0, [r0, #0x4] + add r1, r4, r0 + ldr r0, [r1, #0x4] + and r0, r0, r3 + orr r0, r0, r2, lsl #0x10 + str r0, [r1, #0x4] + ldmia sp!, {r4,pc} + .balign 4 +_020BBFE4: .word 0x8000FFFF + + arm_func_start FUN_020BBFE8 +FUN_020BBFE8: ; 0x020BBFE8 + stmdb sp!, {r4,lr} + ldr r12, [r0, #0x8] + mov r3, #0x8000 + add r4, r0, r12 + ldrh r12, [r4, #0xa] + add lr, r4, #0x4 + rsb r0, r3, #0x0 + ldrh r3, [lr, r12] + add r12, lr, r12 + mla r1, r3, r1, r12 + ldr r1, [r1, #0x4] + add r3, r4, r1 + ldr r1, [r3, #0x4] + and r0, r1, r0 + orr r0, r0, r2 + str r0, [r3, #0x4] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BC02C +FUN_020BC02C: ; 0x020BC02C + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} +_020BC048: ; 0x020BC048 + mvn r3, r2 + add r0, r12, #0x4 +_020BC050: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrne r5, [r6, #0x10] + orrne r5, r5, r2 + strne r5, [r6, #0x10] + ldreq r5, [r6, #0x10] + andeq r5, r5, r3 + streq r5, [r6, #0x10] + cmp lr, r4 + blo _020BC050 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BC094 +FUN_020BC094: ; 0x020BC094 + stmdb sp!, {r4-r6,lr} + ldrb r4, [r0, #0x18] + ldr r3, [r0, #0x8] + mov lr, #0x0 + cmp r4, #0x0 + add r12, r0, r3 + ldmlsia sp!, {r4-r6,pc} +_020BC0B0: ; 0x020BC0B0 + mvn r3, r2 + add r0, r12, #0x4 +_020BC0B8: + ldrh r5, [r12, #0xa] + cmp r1, #0x0 + ldrh r6, [r0, r5] + add r5, r0, r5 + mla r5, r6, lr, r5 + ldr r5, [r5, #0x4] + add lr, lr, #0x1 + add r6, r12, r5 + ldrneh r5, [r6, #0x1e] + orrne r5, r5, r2 + strneh r5, [r6, #0x1e] + ldreqh r5, [r6, #0x1e] + andeq r5, r5, r3 + streqh r5, [r6, #0x1e] + cmp lr, r4 + blo _020BC0B8 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BC0FC +FUN_020BC0FC: ; 0x020BC0FC + ldrh r2, [r0, #0xc] + ldrh r1, [r0, #0xe] + add r3, r0, r2 + cmp r1, #0x1 + bne _020BC12C + ldr r2, [r0, #0x0] + ldr r1, _020BC138 ; =0x30585442 + cmp r2, r1 + ldreq r1, [r3, #0x0] + addeq r0, r0, r1 + movne r0, #0x0 + bx lr +_020BC12C: + ldr r1, [r3, #0x4] + add r0, r0, r1 + bx lr + .balign 4 +_020BC138: .word 0x30585442 + + arm_func_start FUN_020BC13C +FUN_020BC13C: + ldrh r1, [r0, #0xc] + ldr r1, [r0, r1] + add r0, r0, r1 + bx lr + + arm_func_start FUN_020BC14C +FUN_020BC14C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC1E4 + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC294 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC190: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC1CC + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC1CC + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC1CC + ldr r5, [r7, #0xc] + cmp r5, r2 + addeq sp, sp, #0x4 + moveq r0, r4 + ldmeqia sp!, {r4-r7,pc} +_020BC1CC: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC190 + b _020BC294 +_020BC1E4: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC294 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC238 +_020BC208: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC208 +_020BC238: + ldrh r4, [r0, #0x6] + ldr r3, [r1, #0x0] + add r12, r0, r4 + ldrh r4, [r12, #0x2] + ldrb r0, [r2, #0x3] + add r4, r12, r4 + ldr r2, [r4, r0, lsl #0x4] + add r4, r4, r0, lsl #0x4 + cmp r2, r3 + bne _020BC294 + ldr r3, [r4, #0x4] + ldr r2, [r1, #0x4] + cmp r3, r2 + bne _020BC294 + ldr r3, [r4, #0x8] + ldr r2, [r1, #0x8] + cmp r3, r2 + bne _020BC294 + ldr r2, [r4, #0xc] + ldr r1, [r1, #0xc] + cmp r2, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020BC294: + mvn r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BC2A0 +FUN_020BC2A0: ; 0x020BC2A0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrb r2, [r0, #0x1] + cmp r2, #0x10 + bhs _020BC34C + cmp r2, #0x0 + ldr lr, [r1, #0x0] + ldr r12, [r1, #0x4] + ldr r3, [r1, #0x8] + ldr r2, [r1, #0xc] + mov r4, #0x0 + bls _020BC404 + ldrh r5, [r0, #0x6] + mov r1, r4 + add r6, r0, r5 + ldrh r5, [r6, #0x2] + add r6, r6, r5 +_020BC2E4: + ldr r5, [r6, r1] + add r7, r6, r1 + cmp r5, lr + bne _020BC334 + ldr r5, [r7, #0x4] + cmp r5, r12 + bne _020BC334 + ldr r5, [r7, #0x8] + cmp r5, r3 + bne _020BC334 + ldr r5, [r7, #0xc] + cmp r5, r2 + bne _020BC334 + ldrh r2, [r0, #0x6] + add sp, sp, #0x4 + ldrh r1, [r0, r2] + add r0, r0, r2 + add r0, r0, #0x4 + mla r0, r1, r4, r0 + ldmia sp!, {r4-r7,pc} +_020BC334: + ldrb r5, [r0, #0x1] + add r4, r4, #0x1 + add r1, r1, #0x10 + cmp r4, r5 + blo _020BC2E4 + b _020BC404 +_020BC34C: + add r3, r0, #0x8 + ldrb r2, [r3, #0x1] + cmp r2, #0x0 + beq _020BC404 + ldrb r5, [r3, r2, lsl #0x2] + ldrb r4, [r3, #0x0] + add r2, r3, r2, lsl #0x2 + cmp r4, r5 + bls _020BC3A0 +_020BC370: + mov r4, r5, asr #0x5 + ldr r12, [r1, r4, lsl #0x2] + and r4, r5, #0x1f + mov r4, r12, lsr r4 + and r4, r4, #0x1 + add r4, r2, r4 + ldrb r12, [r4, #0x1] + ldrb r4, [r2, #0x0] + ldrb r5, [r3, r12, lsl #0x2] + add r2, r3, r12, lsl #0x2 + cmp r4, r5 + bhi _020BC370 +_020BC3A0: + ldrh r4, [r0, #0x6] + ldrb r2, [r2, #0x3] + ldr r3, [r1, #0x0] + add r0, r0, r4 + ldrh r4, [r0, #0x2] + add r12, r0, r4 + ldr r4, [r12, r2, lsl #0x4] + add r12, r12, r2, lsl #0x4 + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x4] + ldr r3, [r1, #0x4] + cmp r4, r3 + bne _020BC404 + ldr r4, [r12, #0x8] + ldr r3, [r1, #0x8] + cmp r4, r3 + bne _020BC404 + ldr r3, [r12, #0xc] + ldr r1, [r1, #0xc] + cmp r3, r1 + ldreqh r1, [r0], #0x4 + addeq sp, sp, #0x4 + mlaeq r0, r1, r2, r0 + ldmeqia sp!, {r4-r7,pc} +_020BC404: + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BC410 +FUN_020BC410: ; 0x020BC410 + ldrh r3, [r0, #0x12] + add r0, r0, #0xc + ldrh r2, [r0, r3] + add r0, r0, r3 + add r0, r0, #0x4 + mla r0, r2, r1, r0 + bx lr + + arm_func_start FUN_020BC42C +FUN_020BC42C: ; 0x020BC42C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r2 + bl FUN_020BC410 + ldrsh r1, [r0, #0x4] + ldrh r3, [r0, #0x6] + mul r2, r1, r4 + add r3, r5, r3 + mov r2, r2, lsr #0xc + b _020BC45C +_020BC458: + sub r2, r2, #0x1 +_020BC45C: + cmp r2, #0x0 + beq _020BC474 + mov r1, r2, lsl #0x2 + ldrh r1, [r3, r1] + cmp r1, r4 + bhs _020BC458 +_020BC474: + ldrh r1, [r0, #0x0] + b _020BC480 +_020BC47C: + add r2, r2, #0x1 +_020BC480: + add r0, r2, #0x1 + cmp r0, r1 + bhs _020BC49C + add r0, r3, r2, lsl #0x2 + ldrh r0, [r0, #0x4] + cmp r0, r4 + bls _020BC47C +_020BC49C: + add r0, r3, r2, lsl #0x2 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BC4A8 +FUN_020BC4A8: ; 0x020BC4A8 + ldrh r2, [r0, #0xa] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020BC4B8 +FUN_020BC4B8: ; 0x020BC4B8 + ldrh r2, [r0, #0x8] + add r0, r0, r2 + add r0, r0, r1, lsl #0x4 + bx lr + + arm_func_start FUN_020BC4C8 +FUN_020BC4C8: ; 0x020BC4C8 + ldrh r2, [r0, #0xc] + ldr r2, [r0, r2] + add r12, r0, r2 + ldrh r2, [r12, #0xe] + add r3, r12, #0x8 + ldrh r0, [r3, r2] + add r2, r3, r2 + add r2, r2, #0x4 + mul r1, r0, r1 + adds r0, r2, r1 + ldrne r0, [r0, #0x0] + addne r0, r12, r0 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020BC500 +FUN_020BC500: + stmdb sp!, {r4,lr} + ands r4, r3, #0x8000 + beq _020BC5E0 + mov r2, #0x0 + str r2, [r0, #0x20] + ldr r4, [r0, #0x20] + ldr r2, _020BC684 ; =0x00007FFF + str r4, [r0, #0x1c] + ldr r4, [r0, #0x1c] + and r3, r3, r2 + str r4, [r0, #0x18] + ldr r4, [r0, #0x18] + mov r2, #0x3 + str r4, [r0, #0x14] + ldr r4, [r0, #0x14] + mul r2, r3, r2 + str r4, [r0, #0x10] + ldr r4, [r0, #0x10] + mov r3, r2, lsl #0x1 + str r4, [r0, #0xc] + ldr r4, [r0, #0xc] + add r2, r1, r2, lsl #0x1 + str r4, [r0, #0x8] + ldr r4, [r0, #0x8] + str r4, [r0, #0x4] + ldr r4, [r0, #0x4] + str r4, [r0, #0x0] + ldrsh r4, [r1, r3] + ldrsh r12, [r2, #0x2] + ldrsh r3, [r2, #0x4] + and r1, r4, #0xf + ands r4, r4, #0x10 + movne lr, #0x1000 + rsbne lr, lr, #0x0 + moveq lr, #0x1000 + str lr, [r0, r1, lsl #0x2] + ldr r4, _020BC688 ; =0x020FFA14 + ldr lr, _020BC68C ; =0x020FFA15 + ldrb r4, [r4, r1, lsl #0x2] + str r12, [r0, r4, lsl #0x2] + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh lr, [r2, #0x0] + ands lr, lr, #0x20 + ldr lr, _020BC690 ; =0x020FFA16 + rsbne r3, r3, #0x0 + ldrb lr, [lr, r1, lsl #0x2] + str r3, [r0, lr, lsl #0x2] + ldrsh r2, [r2, #0x0] + ands r2, r2, #0x40 + ldr r2, _020BC694 ; =0x020FFA17 + rsbne r12, r12, #0x0 + ldrb r1, [r2, r1, lsl #0x2] + str r12, [r0, r1, lsl #0x2] + mov r0, #0x0 + ldmia sp!, {r4,pc} +_020BC5E0: + ldr r1, _020BC684 ; =0x00007FFF + mov r12, #0x5 + and r1, r3, r1 + mul r3, r1, r12 + add r1, r2, r3, lsl #0x1 + ldrsh lr, [r1, #0x8] + mov r12, r3, lsl #0x1 + mov r3, lr, asr #0x3 + str r3, [r0, #0x10] + ldrsh r12, [r2, r12] + and r2, lr, #0x7 + mov r2, r2, lsl #0x10 + mov r3, r12, asr #0x3 + str r3, [r0, #0x0] + ldrsh r3, [r1, #0x2] + and r12, r12, #0x7 + orr lr, r12, r2, asr #0xd + mov r2, r3, asr #0x3 + str r2, [r0, #0x4] + ldrsh r12, [r1, #0x4] + mov r2, lr, lsl #0x10 + and lr, r3, #0x7 + mov r3, r12, asr #0x3 + str r3, [r0, #0x8] + ldrsh r3, [r1, #0x6] + orr r1, lr, r2, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r12, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + and r2, r3, #0x7 + orr r1, r2, r1, asr #0xd + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + mov r2, r3, asr #0x3 + mov r1, r1, lsl #0x13 + str r2, [r0, #0xc] + mov r1, r1, asr #0x13 + str r1, [r0, #0x14] + mov r0, #0x1 + ldmia sp!, {r4,pc} + .balign 4 +_020BC684: .word 0x00007FFF +_020BC688: .word 0x020FFA14 +_020BC68C: .word 0x020FFA15 +_020BC690: .word 0x020FFA16 +_020BC694: .word 0x020FFA17 + + arm_func_start FUN_020BC698 +FUN_020BC698: ; 0x020BC698 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x48 + ldrh r4, [r3, #0x4] + ldr r5, [r3, #0xc] + ldr r8, [r3, #0x10] + ldr r7, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + mov r6, r0 + cmp r12, r4 + add r5, r3, r5 + add r4, r3, r8 + add r8, r3, r7 + ldr r7, [r2, #0x0] + bne _020BC780 + ands r0, r7, #0xc0000000 + beq _020BC6F0 + ands r0, r7, #0x40000000 + andne r0, r12, #0x1 + addne r12, r0, r12, lsr #0x1 + andeq r0, r12, #0x3 + addeq r12, r0, r12, lsr #0x2 +_020BC6F0: + ldr r0, [r3, #0x8] + ands r0, r0, #0x2 + movne r7, #0x0 + bne _020BC7F4 + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 +_020BC718: ; 0x020BC718 + cmp r0, #0x0 + addeq sp, sp, #0x48 + ldmeqia sp!, {r4-r10,pc} +_020BC724: ; 0x020BC724 + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x48 + str r0, [r6, #0x20] + ldmia sp!, {r4-r10,pc} +_020BC780: + ands r0, r7, #0xc0000000 + beq _020BC7F0 + ldr r0, _020BC9C4 ; =0x1FFF0000 + ands r2, r7, #0x40000000 + and r0, r7, r0 + mov r0, r0, lsr #0x10 + beq _020BC7C4 + cmp r12, r0 + movcs r12, r0, lsr #0x1 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9C8 ; =0x00001FFF + mov r12, r12, lsr #0x1 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x2 + b _020BC800 +_020BC7C4: + cmp r12, r0 + andcs r0, r12, #0x3 + addcs r12, r0, r12, lsr #0x2 + addcs r7, r12, #0x1 + bhs _020BC7F4 + ldr r0, _020BC9CC ; =0x00003FFF + mov r12, r12, lsr #0x2 + add r7, r12, #0x1 + and r10, r1, r0 + mov r9, #0x4 + b _020BC800 +_020BC7F0: + add r7, r12, #0x1 +_020BC7F4: + ldr r0, _020BC9D0 ; =0x00000FFF + mov r9, #0x1 + and r10, r1, r0 +_020BC800: + mov r0, r12, lsl #0x1 + ldrh r3, [r8, r0] + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + mov r1, r7, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [sp, #0x24] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [sp, #0x28] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [sp, #0x2c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x8] + ldr r3, [sp, #0xc] + ldr r1, [sp, #0x30] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0xc] + ldr r2, [sp, #0x10] + ldr r1, [sp, #0x34] + orr r7, r7, r0 + sub r0, r1, r2 + mul r1, r2, r9 + mul r0, r10, r0 + add r0, r1, r0, asr #0xc + str r0, [r6, #0x10] + ldr r2, [sp, #0x14] + ldr r0, [sp, #0x38] + mul r1, r2, r9 + sub r0, r0, r2 + mul r0, r10, r0 + add r2, r1, r0, asr #0xc + mov r0, r6 + mov r1, r6 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize +_020BC8F8: ; 0x020BC8F8 + cmp r7, #0x0 + bne _020BC968 + ldr r3, [sp, #0x18] + ldr r1, [sp, #0x3c] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [sp, #0x40] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r1, r2, r1, asr #0xc + str r1, [r6, #0x1c] + ldr r3, [sp, #0x20] + ldr r1, [sp, #0x44] + mul r2, r3, r9 + sub r1, r1, r3 + mul r1, r10, r1 + add r2, r2, r1, asr #0xc + add r0, r6, #0x18 + mov r1, r0 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} +_020BC968: + ldr r9, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r9 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r9 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x48 + ldmia sp!, {r4-r10,pc} + .balign 4 +_020BC9C4: .word 0x1FFF0000 +_020BC9C8: .word 0x00001FFF +_020BC9CC: .word 0x00003FFF +_020BC9D0: .word 0x00000FFF + + arm_func_start FUN_020BC9D4 +FUN_020BC9D4: ; 0x020BC9D4 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4c + ldr r5, [r3, #0xc] + ldr r4, [r3, #0x10] + ldr r12, [r2, #0x0] + ldr r2, [r2, #0x4] + mov r6, r0 + mov r0, r1, asr #0xc + add r5, r3, r5 + add r4, r3, r4 + add r8, r3, r2 + ands r1, r12, #0xc0000000 + beq _020BCD40 + ldr r1, _020BCDC0 ; =0x1FFF0000 + ands r2, r12, #0x40000000 + and r1, r12, r1 + mov r2, r1, lsr #0x10 + beq _020BCA44 + ands r1, r0, #0x1 + beq _020BCA3C + cmp r0, r2 + movhi r0, r2, lsr #0x1 + addhi r0, r0, #0x1 + bhi _020BCD40 + mov r7, r0, lsr #0x1 + b _020BCBE8 +_020BCA3C: + mov r0, r0, lsr #0x1 + b _020BCD40 +_020BCA44: + ands r1, r0, #0x3 + beq _020BCBE0 + cmp r0, r2 + addhi r0, r1, r2, lsr #0x2 + bhi _020BCD40 + ands r1, r0, #0x1 + beq _020BCBD8 + ands r1, r0, #0x2 + movne r9, r0, lsr #0x2 + addne r0, r9, #0x1 + moveq r0, r0, lsr #0x2 + addeq r9, r0, #0x1 + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r7, #0x0 + bl FUN_020BC500 + mov r1, r9, lsl #0x1 + ldrh r3, [r8, r1] + orr r7, r7, r0 + add r0, sp, #0x0 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r3, [sp, #0x0] + ldr r1, [r6, #0x0] + mov r2, #0x3 + mla r3, r1, r2, r3 + str r3, [r6, #0x0] + ldr r3, [sp, #0x4] + ldr r1, [r6, #0x4] + orr r7, r7, r0 + mla r0, r1, r2, r3 + str r0, [r6, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r6, #0x8] + mov r0, r6 + mla r3, r1, r2, r3 + str r3, [r6, #0x8] + ldr r4, [sp, #0xc] + ldr r3, [r6, #0xc] + mov r1, r6 + mla r4, r3, r2, r4 + str r4, [r6, #0xc] + ldr r4, [sp, #0x10] + ldr r3, [r6, #0x10] + mla r4, r3, r2, r4 + str r4, [r6, #0x10] + ldr r4, [sp, #0x14] + ldr r3, [r6, #0x14] + mla r2, r3, r2, r4 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize +_020BCB2C: ; 0x020BCB2C + cmp r7, #0x0 + bne _020BCB7C + ldr r1, [sp, #0x18] + ldr r0, [r6, #0x18] + mov r2, #0x3 + mla r1, r0, r2, r1 + str r1, [r6, #0x18] + ldr r3, [sp, #0x1c] + ldr r1, [r6, #0x1c] + add r0, r6, #0x18 + mla r3, r1, r2, r3 + str r3, [r6, #0x1c] + ldr r4, [sp, #0x20] + ldr r3, [r6, #0x20] + mov r1, r0 + mla r2, r3, r2, r4 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCB7C: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCBD8: + mov r7, r0, lsr #0x2 + b _020BCBE8 +_020BCBE0: + mov r0, r0, lsr #0x2 + b _020BCD40 +_020BCBE8: + mov r0, r7, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + add r1, r8, r7, lsl #0x1 + ldrh r3, [r1, #0x2] + orr r7, r0, #0x0 + add r0, sp, #0x24 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 + ldr r2, [r6, #0x0] + ldr r1, [sp, #0x24] + orr r7, r7, r0 + add r0, r2, r1 + str r0, [r6, #0x0] + ldr r2, [r6, #0x4] + ldr r1, [sp, #0x28] + mov r0, r6 + add r1, r2, r1 + str r1, [r6, #0x4] + ldr r3, [r6, #0x8] + ldr r2, [sp, #0x2c] + mov r1, r6 + add r2, r3, r2 + str r2, [r6, #0x8] + ldr r3, [r6, #0xc] + ldr r2, [sp, #0x30] + add r2, r3, r2 + str r2, [r6, #0xc] + ldr r3, [r6, #0x10] + ldr r2, [sp, #0x34] + add r2, r3, r2 + str r2, [r6, #0x10] + ldr r3, [r6, #0x14] + ldr r2, [sp, #0x38] + add r2, r3, r2 + str r2, [r6, #0x14] + bl VEC_Normalize + add r0, r6, #0xc + mov r1, r0 + bl VEC_Normalize +_020BCC98: ; 0x020BCC98 + cmp r7, #0x0 + bne _020BCCE4 + ldr r2, [r6, #0x18] + ldr r1, [sp, #0x3c] + add r0, r6, #0x18 + add r1, r2, r1 + str r1, [r6, #0x18] + ldr r3, [r6, #0x1c] + ldr r2, [sp, #0x40] + mov r1, r0 + add r2, r3, r2 + str r2, [r6, #0x1c] + ldr r3, [r6, #0x20] + ldr r2, [sp, #0x44] + add r2, r3, r2 + str r2, [r6, #0x20] + bl VEC_Normalize + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} +_020BCCE4: + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + ldr r7, [r6, #0xc] + ldr r8, [r6, #0x0] + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + add sp, sp, #0x4c + str r0, [r6, #0x20] + ldmia sp!, {r4-r9,pc} +_020BCD40: + mov r0, r0, lsl #0x1 + ldrh r3, [r8, r0] + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl FUN_020BC500 +_020BCD58: ; 0x020BCD58 + cmp r0, #0x0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4-r9,pc} +_020BCD64: ; 0x020BCD64 + ldr r12, [r6, #0x14] + ldr r5, [r6, #0x4] + ldr r8, [r6, #0x0] + ldr r4, [r6, #0x10] + ldr r2, [r6, #0x8] + ldr r7, [r6, #0xc] + mul r1, r5, r12 + mul r0, r2, r4 + sub r0, r1, r0 + mov r3, r0, asr #0xc + mul r1, r2, r7 + mul r0, r8, r12 + sub r2, r1, r0 + mul r1, r8, r4 + mul r0, r5, r7 + sub r0, r1, r0 + str r3, [r6, #0x18] + mov r1, r2, asr #0xc + str r1, [r6, #0x1c] + mov r0, r0, asr #0xc + str r0, [r6, #0x20] + add sp, sp, #0x4c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BCDC0: .word 0x1FFF0000 + + arm_func_start FUN_020BCDC4 +FUN_020BCDC4: ; 0x020BCDC4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr r6, [r2, #0x4] + mov r5, r1, asr #0xc + sub r4, r4, #0x1 + cmp r5, r4 + add r6, r3, r6 + ldr r2, [r2, #0x0] + bne _020BCE58 + ands r4, r2, #0xc0000000 + beq _020BCE08 + ands r4, r2, #0x40000000 + andne r4, r5, #0x1 + addne r5, r4, r5, lsr #0x1 + andeq r4, r5, #0x3 + addeq r5, r4, r5, lsr #0x2 +_020BCE08: + ldr r3, [r3, #0x8] + ands r3, r3, #0x2 + movne r4, #0x0 + bne _020BCED4 + ands r1, r2, #0x20000000 + ldreq r2, [r6, r5, lsl #0x3] + addeq r1, r6, r5, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r7,pc} +_020BCE38: ; 0x020BCE38 + mov r1, r5, lsl #0x2 + ldrsh r2, [r6, r1] + add r1, r6, r5, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r7,pc} +_020BCE58: + ands r3, r2, #0xc0000000 + beq _020BCED0 + ldr r3, _020BCF60 ; =0x1FFF0000 + ands r4, r2, #0x40000000 + and r3, r2, r3 + mov r3, r3, lsr #0x10 + beq _020BCEA0 + cmp r5, r3 + movcs r5, r3, lsr #0x1 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF64 ; =0x00001FFF + mov r5, r5, lsr #0x1 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x2 + mov r3, #0x1 + b _020BCEE4 +_020BCEA0: + cmp r5, r3 + andcs r3, r5, #0x3 + addcs r5, r3, r5, lsr #0x2 + addcs r4, r5, #0x1 + bhs _020BCED4 + ldr r3, _020BCF68 ; =0x00003FFF + mov r5, r5, lsr #0x2 + add r4, r5, #0x1 + and lr, r1, r3 + mov r12, #0x4 + mov r3, #0x2 + b _020BCEE4 +_020BCED0: + add r4, r5, #0x1 +_020BCED4: + ldr r3, _020BCF6C ; =0x00000FFF + mov r12, #0x1 + and lr, r1, r3 + mov r3, #0x0 +_020BCEE4: + ands r1, r2, #0x20000000 + beq _020BCF10 + mov r2, r5, lsl #0x2 + add r1, r6, r5, lsl #0x2 + mov r5, r4, lsl #0x2 + add r4, r6, r4, lsl #0x2 + ldrsh r2, [r6, r2] + ldrsh r1, [r1, #0x2] + ldrsh r5, [r6, r5] + ldrsh r4, [r4, #0x2] + b _020BCF28 +_020BCF10: + add r1, r6, r5, lsl #0x3 + add r7, r6, r4, lsl #0x3 + ldr r2, [r6, r5, lsl #0x3] + ldr r1, [r1, #0x4] + ldr r5, [r6, r4, lsl #0x3] + ldr r4, [r7, #0x4] +_020BCF28: + sub r5, r5, r2 + sub r4, r4, r1 + mul r6, r2, r12 + mul r2, lr, r5 + add r2, r6, r2, asr #0xc + mov r5, r2, asr r3 + mul r2, r1, r12 + mul r1, lr, r4 + add r1, r2, r1, asr #0xc + mov r1, r1, asr r3 + str r5, [r0, #0x0] + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020BCF60: .word 0x1FFF0000 +_020BCF64: .word 0x00001FFF +_020BCF68: .word 0x00003FFF +_020BCF6C: .word 0x00000FFF + + arm_func_start FUN_020BCF70 +FUN_020BCF70: ; 0x020BCF70 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r4, [r2, #0x4] + ldr r12, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r4 + ands r2, r12, #0xc0000000 + beq _020BD0D0 + ldr r2, _020BD184 ; =0x1FFF0000 + ands r4, r12, #0x40000000 + and r2, r12, r2 + mov r4, r2, lsr #0x10 + beq _020BCFCC + ands r2, r1, #0x1 + beq _020BCFC4 + cmp r1, r4 + movhi r1, r4, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD0D0 + mov r2, r1, lsr #0x1 + b _020BD110 +_020BCFC4: + mov r1, r1, lsr #0x1 + b _020BD0D0 +_020BCFCC: + ands r2, r1, #0x3 + beq _020BD0CC + cmp r1, r4 + addhi r1, r2, r4, lsr #0x2 + bhi _020BD0D0 + ands r2, r1, #0x1 + beq _020BD0C4 + ands r2, r1, #0x2 + movne r1, r1, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r1, lsr #0x2 + addeq r1, r2, #0x1 + ands r4, r12, #0x20000000 + beq _020BD04C + mov r5, r2, lsl #0x2 + mov r4, r1, lsl #0x2 + ldrsh r12, [r3, r5] + ldrsh r5, [r3, r4] + add r2, r3, r2, lsl #0x2 + add r4, r12, r12, lsl #0x1 + add r4, r5, r4 + mov r4, r4, asr #0x2 + str r4, [r0, #0x0] + add r1, r3, r1, lsl #0x2 + ldrsh r3, [r2, #0x2] + ldrsh r2, [r1, #0x2] + add sp, sp, #0x4 + add r1, r3, r3, lsl #0x1 + add r1, r2, r1 + mov r1, r1, asr #0x2 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD04C: + ldr r5, [r3, r2, lsl #0x3] + ldr r4, [r3, r1, lsl #0x3] + mov r12, r5, asr #0x1f + mov r12, r12, lsl #0x1 + mov lr, r5, lsl #0x1 + orr r12, r12, r5, lsr #0x1f + adds lr, lr, r5 + adc r12, r12, r5, asr #0x1f + adds lr, lr, r4 + adc r12, r12, r4, asr #0x1f + mov lr, lr, lsr #0x2 + orr lr, lr, r12, lsl #0x1e + str lr, [r0, #0x0] + add r2, r3, r2, lsl #0x3 + ldr r12, [r2, #0x4] + add r1, r3, r1, lsl #0x3 + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + ldr r1, [r1, #0x4] + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020BD0C4: + mov r2, r1, lsr #0x2 + b _020BD110 +_020BD0CC: + mov r1, r1, lsr #0x2 +_020BD0D0: + ands r2, r12, #0x20000000 + ldreq r2, [r3, r1, lsl #0x3] + addeq r1, r3, r1, lsl #0x3 + streq r2, [r0, #0x0] + ldreq r1, [r1, #0x4] + addeq sp, sp, #0x4 + streq r1, [r0, #0x4] + ldmeqia sp!, {r4-r5,pc} +_020BD0F0: ; 0x020BD0F0 + mov r2, r1, lsl #0x2 + ldrsh r2, [r3, r2] + add r1, r3, r1, lsl #0x2 + add sp, sp, #0x4 + str r2, [r0, #0x0] + ldrsh r1, [r1, #0x2] + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD110: + ands r1, r12, #0x20000000 + beq _020BD150 + mov r1, r2, lsl #0x2 + add r12, r3, r2, lsl #0x2 + ldrsh r2, [r3, r1] + ldrsh r1, [r12, #0x4] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldrsh r2, [r12, #0x2] + ldrsh r1, [r12, #0x6] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + ldmia sp!, {r4-r5,pc} +_020BD150: + add r12, r3, r2, lsl #0x3 + ldr r2, [r3, r2, lsl #0x3] + ldr r1, [r12, #0x8] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldr r2, [r12, #0x4] + ldr r1, [r12, #0xc] + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD184: .word 0x1FFF0000 + + arm_func_start FUN_020BD188 +FUN_020BD188: ; 0x020BD188 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrh r4, [r3, #0x4] + ldr lr, [r2, #0x4] + mov r12, r1, asr #0xc + sub r4, r4, #0x1 + cmp r12, r4 + add r4, r3, lr + ldr lr, [r2, #0x0] + bne _020BD230 + ands r2, lr, #0xc0000000 + beq _020BD1CC + ands r2, lr, #0x40000000 + andne r2, r12, #0x1 + addne r12, r2, r12, lsr #0x1 + andeq r2, r12, #0x3 + addeq r12, r2, r12, lsr #0x2 +_020BD1CC: + ldr r2, [r3, #0x8] + ands r2, r2, #0x2 + beq _020BD210 + ldr r2, _020BD2E8 ; =0x00000FFF + ands r3, lr, #0x20000000 + and r3, r1, r2 + movne r1, r12, lsl #0x1 + ldrnesh r2, [r4, r1] + ldrnesh r1, [r4, #0x0] + add sp, sp, #0x4 + ldreq r2, [r4, r12, lsl #0x2] + ldreq r1, [r4, #0x0] + sub r1, r1, r2 + mul r1, r3, r1 + add r1, r2, r1, asr #0xc + str r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD210: + ands r1, lr, #0x20000000 + movne r1, r12, lsl #0x1 + ldrnesh r1, [r4, r1] + add sp, sp, #0x4 + strne r1, [r0, #0x0] + ldreq r1, [r4, r12, lsl #0x2] + streq r1, [r0, #0x0] + ldmia sp!, {r4-r5,pc} +_020BD230: + ands r2, lr, #0xc0000000 + beq _020BD298 + ldr r2, _020BD2EC ; =0x1FFF0000 + ands r3, lr, #0x40000000 + and r2, lr, r2 + mov r2, r2, lsr #0x10 + beq _020BD270 + cmp r12, r2 + movcs r12, r2, lsr #0x1 + bhs _020BD298 + ldr r2, _020BD2F0 ; =0x00001FFF + mov r12, r12, lsr #0x1 + and r5, r1, r2 + mov r2, #0x2 + mov r1, #0x1 + b _020BD2A8 +_020BD270: + cmp r12, r2 + andcs r2, r12, #0x3 + addcs r12, r2, r12, lsr #0x2 + bhs _020BD298 + ldr r2, _020BD2F4 ; =0x00003FFF + mov r12, r12, lsr #0x2 + and r5, r1, r2 + mov r2, #0x4 + mov r1, #0x2 + b _020BD2A8 +_020BD298: + ldr r3, _020BD2E8 ; =0x00000FFF + mov r2, #0x1 + and r5, r1, r3 + mov r1, #0x0 +_020BD2A8: + ands r3, lr, #0x20000000 + addne r3, r4, r12, lsl #0x1 + movne lr, r12, lsl #0x1 + ldrnesh r12, [r4, lr] + ldrnesh r3, [r3, #0x2] + addeq r3, r4, r12, lsl #0x2 + ldreq r12, [r4, r12, lsl #0x2] + ldreq r3, [r3, #0x4] + mul r4, r12, r2 + sub r3, r3, r12 + mul r2, r5, r3 + add r2, r4, r2, asr #0xc + mov r1, r2, asr r1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BD2E8: .word 0x00000FFF +_020BD2EC: .word 0x1FFF0000 +_020BD2F0: .word 0x00001FFF +_020BD2F4: .word 0x00003FFF + + arm_func_start FUN_020BD2F8 +FUN_020BD2F8: ; 0x020BD2F8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r2, #0x4] + ldr r2, [r2, #0x0] + mov r1, r1, asr #0xc + add r3, r3, r12 + ands r12, r2, #0xc0000000 + beq _020BD44C + ldr ip, _020BD46C ; =0x1FFF0000 + ands lr, r2, #0x40000000 + and r12, r2, r12 + mov lr, r12, lsr #0x10 + beq _020BD354 + ands r12, r1, #0x1 + beq _020BD34C + cmp r1, lr + movhi r1, lr, lsr #0x1 + addhi r1, r1, #0x1 + bhi _020BD44C + mov r12, r1, lsr #0x1 + b _020BD400 +_020BD34C: + mov r1, r1, lsr #0x1 + b _020BD44C +_020BD354: + ands r12, r1, #0x3 + beq _020BD3F8 + cmp r1, lr + addhi r1, r12, lr, lsr #0x2 + bhi _020BD44C + ands r12, r1, #0x1 + beq _020BD3F0 + ands r12, r1, #0x2 + movne lr, r1, lsr #0x2 + addne r12, lr, #0x1 + moveq r12, r1, lsr #0x2 + addeq lr, r12, #0x1 + ands r1, r2, #0x20000000 + beq _020BD3B4 + mov r2, r12, lsl #0x1 + mov r1, lr, lsl #0x1 + ldrsh r12, [r3, r2] + ldrsh r2, [r3, r1] + mov r1, #0x3 + add sp, sp, #0x4 + smlabb r1, r12, r1, r2 + mov r1, r1, asr #0x2 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD3B4: + ldr r12, [r3, r12, lsl #0x2] + ldr r1, [r3, lr, lsl #0x2] + mov r2, r12, asr #0x1f + mov r2, r2, lsl #0x1 + mov r3, r12, lsl #0x1 + orr r2, r2, r12, lsr #0x1f + adds r3, r3, r12 + adc r2, r2, r12, asr #0x1f + adds r3, r3, r1 + adc r1, r2, r1, asr #0x1f + mov r2, r3, lsr #0x2 + orr r2, r2, r1, lsl #0x1e + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD3F0: + mov r12, r1, lsr #0x2 + b _020BD400 +_020BD3F8: + mov r1, r1, lsr #0x2 + b _020BD44C +_020BD400: + ands r1, r2, #0x20000000 + beq _020BD42C + mov r2, r12, lsl #0x1 + add r1, r3, r12, lsl #0x1 + ldrsh r2, [r3, r2] + ldrsh r1, [r1, #0x2] + add sp, sp, #0x4 + add r1, r2, r1 + mov r1, r1, asr #0x1 + str r1, [r0, #0x0] + ldmia sp!, {pc} +_020BD42C: + add r1, r3, r12, lsl #0x2 + ldr r2, [r3, r12, lsl #0x2] + ldr r1, [r1, #0x4] + mov r2, r2, asr #0x1 + add r1, r2, r1, asr #0x1 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} +_020BD44C: + ands r2, r2, #0x20000000 + movne r1, r1, lsl #0x1 + ldrnesh r1, [r3, r1] + strne r1, [r0, #0x0] + ldreq r1, [r3, r1, lsl #0x2] + streq r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BD46C: .word 0x1FFF0000 + + arm_func_start FUN_020BD470 +FUN_020BD470: ; 0x020BD470 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x34 + mov r9, r0 + add r0, r9, r1, lsl #0x1 + ldrh r0, [r0, #0x14] + mov r7, r3 + mov r8, r2 + ldr r5, [r9, r0] + add r1, r9, r0 + ands r0, r5, #0x1 + movne r0, #0x7 + strne r0, [r7, #0x0] + bne _020BD814 + ldr r0, _020BD848 ; =0x00000FFF + add r4, r1, #0x4 + ands r0, r8, r0 + beq _020BD4C4 + ldr r0, [r9, #0x8] + ands r0, r0, #0x1 + movne r6, #0x1 + bne _020BD4C8 +_020BD4C4: + mov r6, #0x0 +_020BD4C8: + mov r0, #0x0 + str r0, [r7, #0x0] + ands r0, r5, #0x6 + bne _020BD5C0 + ands r0, r5, #0x8 + bne _020BD51C + cmp r6, #0x0 + beq _020BD500 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD188 + b _020BD514 +_020BD500: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x4c + bl FUN_020BD2F8 +_020BD514: + add r4, r4, #0x8 + b _020BD524 +_020BD51C: + ldr r0, [r4], #0x4 + str r0, [r7, #0x4c] +_020BD524: + ands r0, r5, #0x10 + bne _020BD568 + cmp r6, #0x0 + beq _020BD54C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD188 + b _020BD560 +_020BD54C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x50 + bl FUN_020BD2F8 +_020BD560: + add r4, r4, #0x8 + b _020BD570 +_020BD568: + ldr r0, [r4], #0x4 + str r0, [r7, #0x50] +_020BD570: + ands r0, r5, #0x20 + bne _020BD5B4 + cmp r6, #0x0 + beq _020BD598 + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD188 + b _020BD5AC +_020BD598: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x54 + bl FUN_020BD2F8 +_020BD5AC: + add r4, r4, #0x8 + b _020BD5DC +_020BD5B4: + ldr r0, [r4], #0x4 + str r0, [r7, #0x54] + b _020BD5DC +_020BD5C0: + ands r0, r5, #0x2 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x4 + strne r0, [r7, #0x0] + bne _020BD5DC + mov r0, r7 + bl FUN_020BDA08 +_020BD5DC: + ands r0, r5, #0xc0 + bne _020BD6A8 + ands r0, r5, #0x100 + bne _020BD628 + cmp r6, #0x0 + beq _020BD60C + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC698 + b _020BD620 +_020BD60C: + mov r1, r8 + mov r2, r4 + mov r3, r9 + add r0, r7, #0x28 + bl FUN_020BC9D4 +_020BD620: + add r4, r4, #0x8 + b _020BD6C4 +_020BD628: + ldr r1, [r9, #0xc] + ldr r2, [r9, #0x10] + ldr r3, [r4, #0x0] + add r0, r7, #0x28 + add r1, r9, r1 + add r2, r9, r2 + bl FUN_020BC500 +_020BD644: ; 0x020BD644 + cmp r0, #0x0 + beq _020BD6A0 + ldr r12, [r7, #0x3c] + ldr r0, [r7, #0x2c] + ldr r3, [r7, #0x28] + ldr r11, [r7, #0x38] + ldr r1, [r7, #0x30] + ldr r2, [r7, #0x34] + mul r10, r0, r12 + mul lr, r1, r11 + sub r10, r10, lr + mov r10, r10, asr #0xc + mul lr, r1, r2 + mul r1, r3, r12 + sub r1, lr, r1 + mul r11, r3, r11 + mul r2, r0, r2 + sub r0, r11, r2 + str r10, [r7, #0x40] + mov r1, r1, asr #0xc + str r1, [r7, #0x44] + mov r0, r0, asr #0xc + str r0, [r7, #0x48] +_020BD6A0: + add r4, r4, #0x4 + b _020BD6C4 +_020BD6A8: + ands r0, r5, #0x40 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x2 + strne r0, [r7, #0x0] + bne _020BD6C4 + mov r0, r7 + bl FUN_020BD850 +_020BD6C4: + ands r0, r5, #0x600 + bne _020BD7F0 + ands r0, r5, #0x800 + bne _020BD71C + cmp r6, #0x0 + beq _020BD6F4 + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCDC4 + b _020BD708 +_020BD6F4: + add r0, sp, #0x0 + mov r1, r8 + mov r2, r4 + mov r3, r9 + bl FUN_020BCF70 +_020BD708: + ldr r1, [sp, #0x0] + ldr r0, [sp, #0x4] + str r1, [sp, #0x18] + str r0, [sp, #0x24] + b _020BD72C +_020BD71C: + ldr r0, [r4, #0x0] + str r0, [sp, #0x18] + ldr r0, [r4, #0x4] + str r0, [sp, #0x24] +_020BD72C: + ands r0, r5, #0x1000 + bne _020BD77C + cmp r6, #0x0 + beq _020BD754 + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCDC4 + b _020BD768 +_020BD754: + add r0, sp, #0x8 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x8 + bl FUN_020BCF70 +_020BD768: + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x1c] + str r0, [sp, #0x28] + b _020BD78C +_020BD77C: + ldr r0, [r4, #0x8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x28] +_020BD78C: + ands r0, r5, #0x2000 + bne _020BD7DC + cmp r6, #0x0 + beq _020BD7B4 + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCDC4 + b _020BD7C8 +_020BD7B4: + add r0, sp, #0x10 + mov r1, r8 + mov r3, r9 + add r2, r4, #0x10 + bl FUN_020BCF70 +_020BD7C8: + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x14] + str r1, [sp, #0x20] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7DC: + ldr r0, [r4, #0x10] + str r0, [sp, #0x20] + ldr r0, [r4, #0x14] + str r0, [sp, #0x2c] + b _020BD814 +_020BD7F0: + ands r0, r5, #0x200 + ldrne r0, [r7, #0x0] + orrne r0, r0, #0x1 + strne r0, [r7, #0x0] + bne _020BD814 + mov r0, r7 + bl FUN_020BD9A4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} +_020BD814: + ldr r0, [r7, #0x0] + add r1, sp, #0x18 + ands r0, r0, #0x1 + ldr r0, _020BD84C ; =0x021CEF7C + movne r3, #0x4 + ldr r4, [r0, #0x0] + moveq r3, #0x0 + ldr r2, [r4, #0x0] + ldr r4, [r4, #0xe8] + mov r0, r7 + blx r4 + add sp, sp, #0x34 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020BD848: .word 0x00000FFF +_020BD84C: .word 0x021CEF7C + + arm_func_start FUN_020BD850 +FUN_020BD850: ; 0x020BD850 + stmdb sp!, {r4-r8,lr} + ldr r1, _020BD990 ; =0x021CEF7C + mov r8, r0 + ldr r0, [r1, #0x0] + ldr r3, [r0, #0xd4] + ldr r0, [r0, #0x0] + ldrh r2, [r3, #0x6] + ldrb r0, [r0, #0x1] + ldrh r1, [r3, r2] + add r2, r3, r2 + mla r0, r1, r0, r2 + ldr r0, [r0, #0x4] + ldrh r2, [r3, r0] + add r4, r3, r0 + add r1, r4, #0x4 + ands r0, r2, #0x1 + addeq r1, r1, #0xc + ands r0, r2, #0x2 + bne _020BD980 + ands r0, r2, #0x8 + beq _020BD934 + and r2, r2, #0xf0 + add r0, r8, #0x28 + mov r5, r2, asr #0x4 + ldrsh r7, [r1, #0x0] + ldrsh r6, [r1, #0x2] + blx MI_Zero36B + ldrh r0, [r4, #0x0] + add r1, r8, r5, lsl #0x2 + ands r0, r0, #0x100 + movne r0, #0x1000 + rsbne r2, r0, #0x0 + moveq r2, #0x1000 + ldr r0, _020BD994 ; =0x020FFA14 + str r2, [r1, #0x28] + ldrb r1, [r0, r5, lsl #0x2] + ldr r0, _020BD998 ; =0x020FFA15 + add r1, r8, r1, lsl #0x2 + str r7, [r1, #0x28] + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x200 + ldr r0, _020BD99C ; =0x020FFA16 + rsbne r6, r6, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r6, [r0, #0x28] + ldrh r0, [r4, #0x0] + ands r0, r0, #0x400 + ldr r0, _020BD9A0 ; =0x020FFA17 + rsbne r7, r7, #0x0 + ldrb r0, [r0, r5, lsl #0x2] + add r0, r8, r0, lsl #0x2 + str r7, [r0, #0x28] + ldmia sp!, {r4-r8,pc} +_020BD934: + ldrsh r0, [r4, #0x2] + str r0, [r8, #0x28] + ldrsh r0, [r1, #0x0] + str r0, [r8, #0x2c] + ldrsh r0, [r1, #0x2] + str r0, [r8, #0x30] + ldrsh r0, [r1, #0x4] + str r0, [r8, #0x34] + ldrsh r0, [r1, #0x6] + str r0, [r8, #0x38] + ldrsh r0, [r1, #0x8] + str r0, [r8, #0x3c] + ldrsh r0, [r1, #0xa] + str r0, [r8, #0x40] + ldrsh r0, [r1, #0xc] + str r0, [r8, #0x44] + ldrsh r0, [r1, #0xe] + str r0, [r8, #0x48] + ldmia sp!, {r4-r8,pc} +_020BD980: + ldr r0, [r8, #0x0] + orr r0, r0, #0x2 + str r0, [r8, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BD990: .word 0x021CEF7C +_020BD994: .word 0x020FFA14 +_020BD998: .word 0x020FFA15 +_020BD99C: .word 0x020FFA16 +_020BD9A0: .word 0x020FFA17 + + arm_func_start FUN_020BD9A4 +FUN_020BD9A4: ; 0x020BD9A4 + stmdb sp!, {r4,lr} + ldr r1, _020BDA04 ; =0x021CEF7C + ldr r12, [r1, #0x0] + ldr r4, [r12, #0xd4] + ldr r2, [r12, #0x0] + ldrh lr, [r4, #0x6] + ldrb r1, [r2, #0x1] + ldrh r3, [r4, lr] + add lr, r4, lr + mla r1, r3, r1, lr + ldr r1, [r1, #0x4] + ldrh r3, [r4, r1] + add r1, r4, r1 + add r1, r1, #0x4 + ands lr, r3, #0x1 + addeq r1, r1, #0xc + ands lr, r3, #0x2 + bne _020BD9F8 + ands lr, r3, #0x8 + addne r1, r1, #0x4 + addeq r1, r1, #0x10 +_020BD9F8: + ldr r12, [r12, #0xe8] + blx r12 + ldmia sp!, {r4,pc} + .balign 4 +_020BDA04: .word 0x021CEF7C + + arm_func_start FUN_020BDA08 +FUN_020BDA08: ; 0x020BDA08 + ldr r1, _020BDA6C ; =0x021CEF7C + ldr r1, [r1, #0x0] + ldr r12, [r1, #0xd4] + ldr r1, [r1, #0x0] + ldrh r3, [r12, #0x6] + ldrb r1, [r1, #0x1] + ldrh r2, [r12, r3] + add r3, r12, r3 + mla r1, r2, r1, r3 + ldr r2, [r1, #0x4] + ldrh r1, [r12, r2] + add r2, r12, r2 + ands r1, r1, #0x1 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x4 + strne r1, [r0, #0x0] + bxne lr + ldr r1, [r2, #0x4] + add r2, r2, #0x4 + str r1, [r0, #0x4c] + ldr r1, [r2, #0x4] + str r1, [r0, #0x50] + ldr r1, [r2, #0x8] + str r1, [r0, #0x54] + bx lr + .balign 4 +_020BDA6C: .word 0x021CEF7C + + arm_func_start FUN_020BDA70 +FUN_020BDA70: ; 0x020BDA70 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r3, r0 + ldr r0, [r1, #0x8] + ldr r12, [r1, #0x0] + ldrh r1, [r0, #0x4] + mov r1, r1, lsl #0xc + cmp r12, r1 + subge r12, r1, #0x1 + bge _020BDAA0 + cmp r12, #0x0 + movlt r12, #0x0 +_020BDAA0: + mov r1, r2 + mov r2, r12 + bl FUN_020BD470 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BDAB4 +FUN_020BDAB4: ; 0x020BDAB4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + ldr r0, _020BDB3C ; =0x0210659C + str r4, [r5, #0x8] + ldr r0, [r0, #0x0] + add r1, r5, #0x1a + str r0, [r5, #0xc] + ldrb r2, [r2, #0x17] + mov r0, #0x0 + strb r2, [r5, #0x19] + ldrb r2, [r5, #0x19] + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrh r0, [r4, #0x6] + add r2, r4, #0x14 + mov r3, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r5,pc} +_020BDB08: + mov r0, r3, lsl #0x1 + ldrh r1, [r2, r0] + add r0, r5, r3, lsl #0x1 + add r3, r3, #0x1 + ldr r1, [r4, r1] + mov r1, r1, lsr #0x18 + orr r1, r1, #0x100 + strh r1, [r0, #0x1a] + ldrh r0, [r4, #0x6] + cmp r3, r0 + blo _020BDB08 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BDB3C: .word 0x0210659C + + arm_func_start FUN_020BDB40 +FUN_020BDB40: ; 0x020BDB40 + stmdb sp!, {r4-r8,lr} + ldr r7, [r1, #0x8] + mov r2, r2, lsl #0x10 + ldrh r4, [r7, #0xe] + add r5, r7, #0x8 + ldr r6, [r1, #0x0] + ldrh r3, [r5, r4] + mov r1, r2, lsr #0x10 + add r2, r5, r4 + mul r4, r3, r1 + add r3, r2, #0x4 + mov r6, r6, asr #0xc + mov r8, r0 + ldr r1, [r3, r4] + mov r0, r7 + mov r2, r6 + add r5, r3, r4 + bl FUN_020BDDAC + mov r4, r0 + ldr r1, [r5, #0x4] + mov r0, r7 + mov r2, r6 + bl FUN_020BDDAC + ldr r1, [r8, #0x4] + mov r2, r6 + and r1, r1, #0x8000 + orr r1, r1, r4 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0x4] + mov r0, r7 + ldr r1, [r5, #0xc] + bl FUN_020BDDAC + mov r4, r0 + mov r0, r7 + ldr r1, [r5, #0x8] + mov r2, r6 + bl FUN_020BDDAC + mov r2, r6 + ldr r1, [r8, #0x8] + and r1, r1, #0x8000 + orr r0, r1, r0 + orr r0, r0, r4, lsl #0x10 + str r0, [r8, #0x8] + mov r0, r7 + ldr r1, [r5, #0x10] + bl FUN_020BDCB8 + ldr r1, [r8, #0xc] + bic r1, r1, #0x1f0000 + orr r0, r1, r0, lsl #0x10 + str r0, [r8, #0xc] + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020BDC0C +FUN_020BDC0C: ; 0x020BDC0C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BDCB4 ; =0x021065A8 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} +_020BDC60: ; 0x020BDC60 + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDC6C: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C +_020BDC88: ; 0x020BDC88 + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDC6C + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BDCB4: .word 0x021065A8 + + arm_func_start FUN_020BDCB8 +FUN_020BDCB8: ; 0x020BDCB8 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + movne r0, r0, lsr #0x10 + bxne lr + ldr r3, _020BDDA4 ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + ldreqb r0, [r0, r2] + bxeq lr + ldr r3, _020BDDA8 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDD30 + ands r1, r2, #0x1 + beq _020BDD28 + cmp r2, r3 + addhi r0, r0, r3, lsr #0x1 + ldrhib r0, [r0, #0x1] + bxhi lr + add r1, r0, r2, lsr #0x1 + ldrb r2, [r0, r2, lsr #0x1] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD28: + ldrb r0, [r0, r2, lsr #0x1] + bx lr +_020BDD30: + ands r1, r2, #0x3 + beq _020BDD9C + cmp r2, r3 + addhi r0, r0, r3, lsr #0x2 + ldrhib r0, [r1, r0] + bxhi lr + ands r1, r2, #0x1 + beq _020BDD80 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + ldrb r2, [r0, r2] + ldrb r1, [r0, r1] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, lsl #0xe + mov r0, r0, lsr #0x10 + bx lr +_020BDD80: + add r1, r0, r2, lsr #0x2 + ldrb r2, [r0, r2, lsr #0x2] + ldrb r0, [r1, #0x1] + add r0, r2, r0 + mov r0, r0, lsl #0xf + mov r0, r0, lsr #0x10 + bx lr +_020BDD9C: + ldrb r0, [r0, r2, lsr #0x2] + bx lr + .balign 4 +_020BDDA4: .word 0x0000FFFF +_020BDDA8: .word 0x1FFF0000 + + arm_func_start FUN_020BDDAC +FUN_020BDDAC: ; 0x020BDDAC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ands r3, r1, #0x20000000 + movne r0, r1, lsl #0x10 + addne sp, sp, #0x4 + movne r0, r0, lsr #0x10 + ldmneia sp!, {pc} + ldr r3, _020BDF2C ; =0x0000FFFF + ands r12, r1, #0xc0000000 + and r3, r1, r3 + add r0, r0, r3 + moveq r1, r2, lsl #0x1 + addeq sp, sp, #0x4 + ldreqh r0, [r0, r1] + ldmeqia sp!, {pc} + ldr r3, _020BDF30 ; =0x1FFF0000 + ands r12, r1, #0x40000000 + and r1, r1, r3 + mov r3, r1, lsr #0x10 + beq _020BDE34 + ands r1, r2, #0x1 + beq _020BDE24 + cmp r2, r3 + bichi r1, r3, #0x1 + addhi r0, r0, r1 + addhi sp, sp, #0x4 + ldrhih r0, [r0, #0x2] + ldmhiia sp!, {pc} + mov r1, r2, lsr #0x1 + b _020BDEE0 +_020BDE24: + bic r1, r2, #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDE34: + ands r1, r2, #0x3 + beq _020BDECC + cmp r2, r3 + movhi r2, r3, lsr #0x2 + movhi r1, r1, lsl #0x1 + addhi r0, r0, r2, lsl #0x1 + addhi sp, sp, #0x4 + ldrhih r0, [r1, r0] + ldmhiia sp!, {pc} + ands r1, r2, #0x1 + beq _020BDEC4 + ands r1, r2, #0x2 + movne r1, r2, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r2, lsr #0x2 + addeq r1, r2, #0x1 + mov r2, r2, lsl #0x1 + mov r1, r1, lsl #0x1 + ldrh r12, [r0, r2] + ldrh lr, [r0, r1] + ldr r0, _020BDF34 ; =0x00007C1F + and r3, r12, #0x3e0 + and r2, lr, #0x3e0 + mov r1, #0x3 + mla r2, r3, r1, r2 + and r12, r12, r0 + and r3, lr, r0 + mla r1, r12, r1, r3 + mov r2, r2, lsr #0x2 + and r1, r0, r1, lsr #0x2 + and r0, r2, #0x3e0 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + add sp, sp, #0x4 + mov r0, r0, lsr #0x10 + ldmia sp!, {pc} +_020BDEC4: + mov r1, r2, lsr #0x2 + b _020BDEE0 +_020BDECC: + mov r1, r2, lsr #0x2 + mov r1, r1, lsl #0x1 + add sp, sp, #0x4 + ldrh r0, [r0, r1] + ldmia sp!, {pc} +_020BDEE0: + mov r2, r1, lsl #0x1 + add r1, r0, r1, lsl #0x1 + ldrh r3, [r0, r2] + ldrh r12, [r1, #0x2] + ldr r0, _020BDF34 ; =0x00007C1F + and r2, r3, #0x3e0 + and r1, r12, #0x3e0 + add r1, r2, r1 + mov r1, r1, lsr #0x1 + and r3, r3, r0 + and r2, r12, r0 + add r2, r3, r2 + and r2, r0, r2, lsr #0x1 + and r0, r1, #0x3e0 + orr r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020BDF2C: .word 0x0000FFFF +_020BDF30: .word 0x1FFF0000 +_020BDF34: .word 0x00007C1F + + arm_func_start FUN_020BDF38 +FUN_020BDF38: ; 0x020BDF38 + stmdb sp!, {r4,lr} + ldr r12, [r1, #0x0] + mov r4, r0 + mov r2, r2, lsl #0x10 + ldr r0, [r1, #0x8] + mov r1, r2, lsr #0x10 + mov r3, r4 + mov r2, r12, asr #0xc + bl FUN_020BE030 + ldr r0, [r4, #0x10] + bic r0, r0, #0xc0000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x10] + orr r0, r0, #0x40000000 + str r0, [r4, #0x10] + ldr r0, [r4, #0x0] + orr r0, r0, #0x8 + str r0, [r4, #0x0] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BDF84 +FUN_020BDF84: ; 0x020BDF84 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE02C ; =0x021065A0 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0x9] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} +_020BDFD8: ; 0x020BDFD8 + mov r6, r7 + add r5, r8, #0x8 + add r4, r4, #0x4 +_020BDFE4: + ldrh r1, [r8, #0xe] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C +_020BE000: ; 0x020BE000 + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0x9] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BDFE4 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE02C: .word 0x021065A0 + + arm_func_start FUN_020BE030 +FUN_020BE030: ; 0x020BE030 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r8, r0 + ldrh r4, [r8, #0xe] + add r5, r8, #0x8 + mov r6, r3 + ldrh r3, [r5, r4] + add r4, r5, r4 + add r4, r4, #0x4 + mla r5, r3, r1, r4 + mov r7, r2 + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x1c] + mov r3, r7 + ldr r4, [r6, #0x0] + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x20] + mov r0, r8 + ldr r2, [r5, #0x24] + mov r3, r7 + bl FUN_020BE238 +_020BE088: ; 0x020BE088 + cmp r9, #0x0 + bne _020BE09C + cmp r0, #0x0 + orreq r4, r4, #0x4 + beq _020BE0A8 +_020BE09C: + str r9, [r6, #0x24] + str r0, [r6, #0x28] + bic r4, r4, #0x4 +_020BE0A8: + ldr r1, [r5, #0x10] + ldr r2, [r5, #0x14] + mov r0, r8 + mov r3, r7 + bl FUN_020BE12C + cmp r0, #0x10000000 + strneh r0, [r6, #0x20] + movne r0, r0, lsr #0x10 + strneh r0, [r6, #0x22] + orreq r4, r4, #0x2 + ldr r1, [r5, #0x0] + ldr r2, [r5, #0x4] + mov r0, r8 + mov r3, r7 + bicne r4, r4, #0x2 + bl FUN_020BE238 + mov r9, r0 + ldr r1, [r5, #0x8] + ldr r2, [r5, #0xc] + mov r0, r8 + mov r3, r7 + bl FUN_020BE238 + cmp r9, #0x1000 + bne _020BE114 + cmp r0, #0x1000 + orreq r4, r4, #0x1 + beq _020BE120 +_020BE114: + str r9, [r6, #0x18] + str r0, [r6, #0x1c] + bic r4, r4, #0x1 +_020BE120: + str r4, [r6, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + + arm_func_start FUN_020BE12C +FUN_020BE12C: ; 0x020BE12C + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE1F8 + ldr r2, _020BE234 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r2, r1, r2 + beq _020BE17C + ands r1, r3, #0x1 + beq _020BE174 + cmp r3, r2 + movhi r1, r2, lsr #0x1 + addhi r3, r1, #0x1 + bhi _020BE1F8 + mov r2, r3, lsr #0x1 + b _020BE200 +_020BE174: + mov r3, r3, lsr #0x1 + b _020BE1F8 +_020BE17C: + ands r1, r3, #0x3 + beq _020BE1F4 + cmp r3, r2 + addhi r3, r1, r2, lsr #0x2 + bhi _020BE1F8 + ands r1, r3, #0x1 + beq _020BE1EC + ands r1, r3, #0x2 + movne r1, r3, lsr #0x2 + addne r2, r1, #0x1 + moveq r2, r3, lsr #0x2 + addeq r1, r2, #0x1 + mov r12, r2, lsl #0x2 + add r3, r0, r2, lsl #0x2 + mov r2, r1, lsl #0x2 + add r1, r0, r1, lsl #0x2 + ldrsh r12, [r0, r12] + ldrsh r2, [r0, r2] + mov r0, #0x3 + ldrsh r3, [r3, #0x2] + ldrsh r1, [r1, #0x2] + mla r2, r12, r0, r2 + mla r1, r3, r0, r1 + ldr r0, _020BE234 ; =0x0000FFFF + mov r1, r1, asr #0x2 + and r0, r0, r2, asr #0x2 + orr r0, r0, r1, lsl #0x10 + bx lr +_020BE1EC: + mov r2, r3, lsr #0x2 + b _020BE200 +_020BE1F4: + mov r3, r3, lsr #0x2 +_020BE1F8: + ldr r0, [r0, r3, lsl #0x2] + bx lr +_020BE200: + add r1, r0, r2, lsl #0x2 + mov r2, r2, lsl #0x2 + ldrsh r12, [r0, r2] + ldrsh r3, [r1, #0x4] + ldrsh r2, [r1, #0x2] + ldrsh r1, [r1, #0x6] + ldr r0, _020BE234 ; =0x0000FFFF + add r3, r12, r3 + add r1, r2, r1 + and r2, r0, r3, asr #0x1 + mov r0, r1, asr #0x1 + orr r0, r2, r0, lsl #0x10 + bx lr + .balign 4 +_020BE234: .word 0x0000FFFF + + arm_func_start FUN_020BE238 +FUN_020BE238: + ands r12, r1, #0x20000000 + movne r0, r2 + bxne lr + add r0, r0, r2 + ands r2, r1, #0xc0000000 + beq _020BE2F0 + ldr r2, _020BE330 ; =0x0000FFFF + ands r12, r1, #0x40000000 + and r12, r1, r2 + beq _020BE288 + ands r2, r3, #0x1 + beq _020BE280 + cmp r3, r12 + movhi r2, r12, lsr #0x1 + addhi r3, r2, #0x1 + bhi _020BE2F0 + mov r3, r3, lsr #0x1 + b _020BE304 +_020BE280: + mov r3, r3, lsr #0x1 + b _020BE2F0 +_020BE288: + ands r2, r3, #0x3 + beq _020BE2EC + cmp r3, r12 + addhi r3, r2, r12, lsr #0x2 + bhi _020BE2F0 + ands r2, r3, #0x1 + beq _020BE2E4 + ands r2, r3, #0x2 + movne r3, r3, lsr #0x2 + addne r2, r3, #0x1 + moveq r2, r3, lsr #0x2 + addeq r3, r2, #0x1 + ands r1, r1, #0x10000000 + movne r2, r2, lsl #0x1 + movne r1, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r1, [r0, r1] + ldreq r2, [r0, r2, lsl #0x2] + ldreq r1, [r0, r3, lsl #0x2] + mov r0, #0x3 + mla r0, r2, r0, r1 + mov r0, r0, asr #0x2 + bx lr +_020BE2E4: + mov r3, r3, lsr #0x2 + b _020BE304 +_020BE2EC: + mov r3, r3, lsr #0x2 +_020BE2F0: + ands r1, r1, #0x10000000 + movne r1, r3, lsl #0x1 + ldrnesh r0, [r0, r1] + ldreq r0, [r0, r3, lsl #0x2] + bx lr +_020BE304: + ands r1, r1, #0x10000000 + movne r2, r3, lsl #0x1 + addne r1, r0, r3, lsl #0x1 + ldrnesh r2, [r0, r2] + ldrnesh r0, [r1, #0x2] + addeq r1, r0, r3, lsl #0x2 + ldreq r2, [r0, r3, lsl #0x2] + ldreq r0, [r1, #0x4] + add r0, r2, r0 + mov r0, r0, asr #0x1 + bx lr + .balign 4 +_020BE330: .word 0x0000FFFF + + arm_func_start FUN_020BE334 +FUN_020BE334: ; 0x020BE334 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldr r3, [r6, #0x0] + ldr r5, [r6, #0x8] + mov r1, r2, lsl #0x10 + mov r2, r3, lsl #0x4 + mov r7, r0 + mov r0, r5 + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl FUN_020BC42C + mov r4, r0 + ldrb r1, [r4, #0x2] + mov r0, r5 + bl FUN_020BC4B8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE408 + ldrb r1, [r4, #0x3] + cmp r1, #0xff + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020BE394: ; 0x020BE394 + mov r0, r5 + bl FUN_020BC4A8 + mov r1, r0 + ldr r0, [r6, #0x14] + mov r2, r7 + bl FUN_020BE3B4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BE3B4 +FUN_020BE3B4: ; 0x020BE3B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrh r0, [r5, #0x34] + mov r4, r2 + add r0, r5, r0 + bl FUN_020BC2A0 + ldr r1, [r5, #0x2c] + ldrh r2, [r0, #0x2] + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 + ands r1, r2, #0x1 + ldrh r0, [r0, #0x0] + moveq r1, r3, lsl #0xf + moveq r3, r1, lsr #0x10 + moveq r0, r0, lsl #0xf + moveq r0, r0, lsr #0x10 + add r0, r0, r3 + str r0, [r4, #0x14] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BE408 +FUN_020BE408: ; 0x020BE408 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + add r0, r5, #0x3c + mov r4, r2 + bl FUN_020BC2A0 + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + and r1, r1, #0x1c000000 + cmp r1, #0x14000000 + ldrne r2, [r5, #0x8] + ldrne r1, _020BE4E0 ; =0x0000FFFF + andne r5, r2, r1 + ldreq r2, [r5, #0x18] + ldreq r1, _020BE4E0 ; =0x0000FFFF + andeq r5, r2, r1 + ldr r1, _020BE4E4 ; =0xC00F0000 + ldr r2, _020BE4E8 ; =0x000007FF + and r1, r3, r1 + str r1, [r4, #0x10] + ldr r1, [r0, #0x0] + ldr r3, [r4, #0x10] + add r1, r1, r5 + orr r1, r3, r1 + str r1, [r4, #0x10] + ldr r3, [r0, #0x4] + ldr r1, _020BE4EC ; =0x003FF800 + and r3, r3, r2 + strh r3, [r4, #0x2c] + ldr r3, [r0, #0x4] + and r1, r3, r1 + mov r1, r1, lsr #0xb + strh r1, [r4, #0x2e] + ldr r3, [r0, #0x4] + ldrh r1, [r4, #0x2c] + and r0, r3, r2 + and r5, r2, r3, lsr #0xb + cmp r0, r1 + moveq r0, #0x1000 + beq _020BE4B4 + mov r0, r0, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4B4: + str r0, [r4, #0x30] + ldrh r1, [r4, #0x2e] + cmp r5, r1 + moveq r0, #0x1000 + beq _020BE4D4 + mov r0, r5, lsl #0xc + mov r1, r1, lsl #0xc + bl FX_Div +_020BE4D4: + str r0, [r4, #0x34] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020BE4E0: .word 0x0000FFFF +_020BE4E4: .word 0xC00F0000 +_020BE4E8: .word 0x000007FF +_020BE4EC: .word 0x003FF800 + + arm_func_start FUN_020BE4F0 +FUN_020BE4F0: ; 0x020BE4F0 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + ldr r3, _020BE59C ; =0x021065A4 + ldr r4, [r2, #0x8] + ldr r3, [r3, #0x0] + mov r9, r0 + str r3, [r9, #0xc] + ldrb r0, [r2, #0x18] + mov r8, r1 + add r4, r2, r4 + strb r0, [r9, #0x19] + str r8, [r9, #0x8] + ldrb r2, [r9, #0x19] + add r1, r9, #0x1a + mov r0, #0x0 + mov r2, r2, lsl #0x1 + bl MIi_CpuClear16 + ldrb r0, [r8, #0xd] + mov r7, #0x0 + cmp r0, #0x0 + addls sp, sp, #0x4 + ldmlsia sp!, {r4-r9,pc} +_020BE548: ; 0x020BE548 + mov r6, r7 + add r5, r8, #0xc + add r4, r4, #0x4 +_020BE554: + ldrh r1, [r8, #0x12] + mov r0, r4 + add r2, r5, r1 + ldrh r1, [r2, #0x2] + add r1, r2, r1 + add r1, r1, r6 + bl FUN_020BC14C +_020BE570: ; 0x020BE570 + cmp r0, #0x0 + orrge r1, r7, #0x100 + addge r0, r9, r0, lsl #0x1 + strgeh r1, [r0, #0x1a] + ldrb r0, [r8, #0xd] + add r7, r7, #0x1 + add r6, r6, #0x10 + cmp r7, r0 + blo _020BE554 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020BE59C: .word 0x021065A4 + + arm_func_start FUN_020BE5A0 +FUN_020BE5A0: ; 0x020BE5A0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr lr, [r1, #0x8] + ldr r3, [r1, #0x0] + ldrh r1, [lr, #0x6] + mov r12, r3, asr #0xc + mov r3, #0x1 + mla r2, r12, r1, r2 + mov r1, r2, lsr #0x5 + add r1, lr, r1, lsl #0x2 + ldr r1, [r1, #0xc] + and r2, r2, #0x1f + and r1, r1, r3, lsl r2 + str r1, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BE5E0 +FUN_020BE5E0: ; 0x020BE5E0 + ldr r3, _020BE628 ; =0x02106598 + mov r12, #0x0 + ldr r3, [r3, #0x0] + str r3, [r0, #0xc] + ldrb r2, [r2, #0x17] + strb r2, [r0, #0x19] + str r1, [r0, #0x8] + ldrb r1, [r0, #0x19] + cmp r1, #0x0 + bxls lr +_020BE608: + orr r2, r12, #0x100 + add r1, r0, r12, lsl #0x1 + strh r2, [r1, #0x1a] + ldrb r1, [r0, #0x19] + add r12, r12, #0x1 + cmp r12, r1 + blo _020BE608 + bx lr + .balign 4 +_020BE628: .word 0x02106598 + + arm_func_start FUN_020BE62C +FUN_020BE62C: ; 0x020BE62C + ands r2, r3, #0x4 + ldrne r1, [r0, #0x0] + orrne r1, r1, #0x1 + strne r1, [r0, #0x0] + bne _020BE658 + + arm_func_start FUN_020BE640 +FUN_020BE640: ; 0x020BE640 + ldr r2, [r1, #0x0] + str r2, [r0, #0x4] + ldr r2, [r1, #0x4] + str r2, [r0, #0x8] + ldr r1, [r1, #0x8] + str r1, [r0, #0xc] +_020BE658: + ldr r1, [r0, #0x0] + orr r1, r1, #0x18 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020BE668 +FUN_020BE668: ; 0x020BE668 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x0] + ands r0, r1, #0x4 + bne _020BE6AC + ands r0, r1, #0x2 + bne _020BE698 + add r1, r4, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BE6C4 +_020BE698: + add r1, r4, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + b _020BE6C4 +_020BE6AC: + ands r0, r1, #0x2 + bne _020BE6C4 + add r1, r4, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 +_020BE6C4: + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + ldmneia sp!, {r4,pc} +_020BE6D0: ; 0x020BE6D0 + add r1, r4, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BE6E4 +FUN_020BE6E4: ; 0x020BE6E4 + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BE820 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BE824 ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BE828 ; =0x021067B0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BE7B4 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BE7B4: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BE804 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BE804: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BE820: .word 0x00101610 +_020BE824: .word 0x00101810 +_020BE828: .word 0x021067B0 + + arm_func_start FUN_020BE82C +FUN_020BE82C: ; 0x020BE82C + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BE850 +FUN_020BE850: ; 0x020BE850 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + str r12, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r3, [r1, #0x2e] + mov r1, r2, lsl #0x1 + rsb r1, r1, #0x0 + add r1, r1, #0x2000 + mul r1, r3, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BE894 +FUN_020BE894: ; 0x020BE894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2c] + add r0, r1, r0 + rsb r0, r0, #0x0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x30] + ldrsh r1, [r5, #0x20] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + sub r0, r1, r0 + add r0, r0, #0x1000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BE954 +FUN_020BE954: ; 0x020BE954 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r0, r7, r6 + ldrh r3, [r9, #0x2c] + ldr r2, [r9, #0x18] + sub r0, r2, r0 + mul r0, r3, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x30] + ldrh r2, [r9, #0x2e] + ldr r0, [r9, #0x1c] + sub r0, r1, r0 + add r0, r0, #0x2000 + mul r0, r2, r0 + mov r0, r0, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BEA3C +FUN_020BEA3C: ; 0x020BEA3C + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldrh r2, [r1, #0x2c] + ldr r3, [r1, #0x24] + mul r2, r3, r2 + rsb r2, r2, #0x0 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BEA84 +FUN_020BEA84: ; 0x020BEA84 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r4, [r1, #0x18] + ldr r3, [r1, #0x24] + ldrh lr, [r1, #0x2c] + smull r12, r3, r4, r3 + mov r4, r12, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + rsb r3, r4, #0x0 + mul r3, lr, r3 + str r3, [r0, #0x30] + ldr r4, [r1, #0x1c] + ldr r12, [r1, #0x28] + mov r3, r4, lsl #0x1 + smull lr, r12, r4, r12 + rsb r4, r3, #0x0 + mov r3, lr, lsr #0x8 + ldrh lr, [r1, #0x2e] + add r1, r4, #0x2000 + orr r3, r3, r12, lsl #0x18 + mul r4, lr, r1 + mul r1, lr, r3 + add r1, r1, r4, lsl #0x3 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BEB00 +FUN_020BEB00: ; 0x020BEB00 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + rsb r2, r2, #0x0 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2c] + ldr r0, [r5, #0x24] + add r1, r2, r1 + rsb r1, r1, #0x0 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + sub r0, r0, r1, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r2, [r5, #0x20] + ldrsh r1, [r5, #0x22] + ldrh r3, [r5, #0x2e] + ldr r0, [r5, #0x28] + sub r1, r2, r1 + add r1, r1, #0x1000 + mul r2, r3, r1 + mul r1, r0, r3 + mov r0, r2, lsl #0x3 + add r0, r0, r1, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BEBD8 +FUN_020BEBD8: ; 0x020BEBD8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r5, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r0, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r6, [r10, #0x0] + str r4, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + rsb r2, r5, #0x0 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + sub r1, r5, r4 + add r2, r7, r6 + ldr r5, [r9, #0x18] + ldrh r0, [r9, #0x2c] + sub r3, r5, r2 + ldr r2, [r9, #0x24] + mul r4, r0, r3 + smull r3, r2, r5, r2 + mov r4, r4, lsl #0x3 + mov r3, r3, lsr #0x8 + orr r3, r3, r2, lsl #0x18 + mul r2, r0, r3 + sub r0, r4, r2 + str r0, [r10, #0x30] + ldr r4, [r9, #0x1c] + ldrh r3, [r9, #0x2e] + sub r0, r1, r4 + add r0, r0, #0x2000 + mul r2, r3, r0 + ldr r0, [r9, #0x28] + smull r1, r0, r4, r0 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + mul r0, r3, r1 + add r0, r0, r2, lsl #0x3 + str r0, [r10, #0x34] + bl FX_GetDivResult + mul r0, r7, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BECEC +FUN_020BECEC: ; 0x020BECEC + stmdb sp!, {r4-r8,lr} + mov r12, r0 + ands r0, r3, #0x4 + ldrb r3, [r2, #0x3] + beq _020BED40 + ldr r1, [r12, #0x0] + ands r0, r3, #0x2 + orr r0, r1, #0x1 + str r0, [r12, #0x0] + beq _020BEDB8 + ldr r0, _020BEE2C ; =0x021CEF7C + ldrb r7, [r2, #0x1] + ldr r0, [r0, #0x0] + mov r1, #0x1 + add r6, r0, #0xc4 + mov r5, r7, lsr #0x5 + ldr r4, [r6, r5, lsl #0x2] + and r0, r7, #0x1f + orr r0, r4, r1, lsl r0 + str r0, [r6, r5, lsl #0x2] + b _020BEDB8 +_020BED40: + ldr r4, [r1, #0x0] + ands r0, r3, #0x2 + str r4, [r12, #0x4] + ldr r0, [r1, #0x4] + str r0, [r12, #0x8] + ldr r0, [r1, #0x8] + str r0, [r12, #0xc] + beq _020BEDB8 + ldr lr, _020BEE2C ; =0x021CEF7C + ldrb r0, [r2, #0x1] + ldr r4, [lr, #0x0] + mov lr, #0x18 + add r8, r4, #0xc4 + mov r7, r0, lsr #0x5 + and r4, r0, #0x1f + mov r5, #0x1 + mvn r4, r5, lsl r4 + ldr r6, [r8, r7, lsl #0x2] + mul r5, r0, lr + and r0, r6, r4 + str r0, [r8, r7, lsl #0x2] + ldr r4, [r1, #0xc] + ldr r0, _020BEE30 ; =0x021CFD8C + ldr lr, _020BEE34 ; =0x021CFD90 + str r4, [r0, r5] + ldr r4, [r1, #0x10] + ldr r0, _020BEE38 ; =0x021CFD94 + str r4, [lr, r5] + ldr r1, [r1, #0x14] + str r1, [r0, r5] +_020BEDB8: + ands r0, r3, #0x1 + beq _020BEE1C + ldrb r0, [r2, #0x2] + ldr r2, [r12, #0x0] + ldr r1, _020BEE2C ; =0x021CEF7C + orr r2, r2, #0x20 + str r2, [r12, #0x0] + ldr r2, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r2, r1, lsl #0x2 + and r2, r0, #0x1f + mov r3, #0x1 + mov r2, r3, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + ldrne r0, [r12, #0x0] + orrne r0, r0, #0x8 + strne r0, [r12, #0x0] + bne _020BEE1C + ldr r2, _020BEE30 ; =0x021CFD8C + mov r1, #0x18 + mla r1, r0, r1, r2 + add r3, r12, #0x10 + ldmia r1, {r0-r2} + stmia r3, {r0-r2} +_020BEE1C: + ldr r0, [r12, #0x0] + orr r0, r0, #0x10 + str r0, [r12, #0x0] + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BEE2C: .word 0x021CEF7C +_020BEE30: .word 0x021CFD8C +_020BEE34: .word 0x021CFD90 +_020BEE38: .word 0x021CFD94 + + arm_func_start FUN_020BEE3C +FUN_020BEE3C: ; 0x020BEE3C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r1, [r5, #0x0] + mov r4, #0x0 + ands r0, r1, #0x4 + moveq r4, #0x1 + ands r0, r1, #0x20 + beq _020BEE94 + ands r0, r1, #0x8 + bne _020BEE94 + cmp r4, #0x0 + beq _020BEE84 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 + mov r4, #0x0 +_020BEE84: + add r1, r5, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEE94: + ldr r0, [r5, #0x0] + ands r0, r0, #0x2 + bne _020BEED0 + cmp r4, #0x0 + beq _020BEEBC + add r1, r5, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BEEE8 +_020BEEBC: + add r1, r5, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BEEE8 +_020BEED0: + cmp r4, #0x0 + beq _020BEEE8 + add r1, r5, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BEEE8: + ldr r0, [r5, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} +_020BEEF8: ; 0x020BEEF8 + add r1, r5, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020BEF10 +FUN_020BEF10: ; 0x020BEF10 + stmdb sp!, {lr} + sub sp, sp, #0x3c + ldr r1, [r0, #0x0] + mov r3, #0x0 + ands r1, r1, #0x8 + ldrne r1, _020BF0CC ; =0x00101710 + mov r2, #0x3 + strne r1, [sp, #0x0] + ldreq r1, _020BF0D0 ; =0x00101910 + str r3, [sp, #0x34] + streq r1, [sp, #0x0] + mov r1, #0x2 + str r1, [sp, #0x38] + str r3, [sp, #0x28] + str r3, [sp, #0x24] + str r3, [sp, #0x20] + str r3, [sp, #0x1c] + str r3, [sp, #0x14] + str r3, [sp, #0x10] + str r3, [sp, #0xc] + str r2, [sp, #0x4] + ldr r2, [r0, #0x0] + ands r1, r2, #0x4 + beq _020BEFA0 + str r3, [sp, #0x2c] + str r3, [sp, #0x30] + ldr r1, [r0, #0x0] + ands r1, r1, #0x1 + movne r1, #0x1000 + strne r1, [sp, #0x8] + strne r1, [sp, #0x18] + ldreq r1, [r0, #0x18] + streq r1, [sp, #0x8] + ldreq r1, [r0, #0x1c] + streq r1, [sp, #0x18] + b _020BF040 +_020BEFA0: + ands r1, r2, #0x1 + beq _020BEFE8 + ldr r2, [r0, #0x24] + ldrh r1, [r0, #0x2c] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r1, r2, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x28] + ldrh r1, [r0, #0x2e] + mov r2, r2, lsl #0x4 + rsb r2, r2, #0x0 + mul r3, r2, r1 + mov r1, #0x1000 + str r3, [sp, #0x30] + str r1, [sp, #0x8] + str r1, [sp, #0x18] + b _020BF040 +_020BEFE8: + ldr r2, [r0, #0x18] + ldr r1, [r0, #0x24] + ldrh r12, [r0, #0x2c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x2c] + ldr r2, [r0, #0x1c] + ldr r1, [r0, #0x28] + ldrh r12, [r0, #0x2e] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0x8 + orr r2, r2, r1, lsl #0x18 + rsb r1, r2, #0x0 + mul r1, r12, r1 + str r1, [sp, #0x30] + ldr r1, [r0, #0x18] + str r1, [sp, #0x8] + ldr r1, [r0, #0x1c] + str r1, [sp, #0x18] +_020BF040: + ldr r12, [r0, #0x30] + cmp r12, #0x1000 + beq _020BF078 + ldr r2, [sp, #0x8] + ldr r1, [sp, #0x2c] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x8] + ldr r2, [r0, #0x30] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x2c] +_020BF078: + ldr r12, [r0, #0x34] + cmp r12, #0x1000 + beq _020BF0B0 + ldr r2, [sp, #0x18] + ldr r1, [sp, #0x30] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x18] + ldr r0, [r0, #0x34] + smull r2, r1, r0, r1 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [sp, #0x30] +_020BF0B0: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0xe + bl FUN_020BB1C0 + add sp, sp, #0x3c + ldmia sp!, {pc} + .balign 4 +_020BF0CC: .word 0x00101710 +_020BF0D0: .word 0x00101910 + + arm_func_start FUN_020BF0D4 +FUN_020BF0D4: ; 0x020BF0D4 + stmdb sp!, {r4-r8,lr} + mov r5, r0 + ands r0, r3, #0x4 + ldrb r4, [r2, #0x1] + ldrb r0, [r2, #0x2] + beq _020BF174 + ldr r2, [r5, #0x0] + ldr r1, _020BF2E0 ; =0x021CEF7C + orr r2, r2, #0x1 + str r2, [r5, #0x0] + ldr r3, [r1, #0x0] + mov r1, r0, lsr #0x5 + add r1, r3, r1, lsl #0x2 + and r2, r0, #0x1f + mov r6, #0x1 + mov r2, r6, lsl r2 + ldr r1, [r1, #0xc4] + ands r1, r2, r1 + beq _020BF148 + add r3, r3, #0xc4 + mov r2, r4, lsr #0x5 + ldr r1, [r3, r2, lsl #0x2] + and r0, r4, #0x1f + orr r0, r1, r6, lsl r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF148: + ldr r1, _020BF2E4 ; =0x021CFD80 + mov r2, #0x18 + mla r6, r0, r2, r1 + mla r1, r4, r2, r1 + mov r0, r6 + bl MIi_CpuCopy32 + mov r0, r6 + add r1, r5, #0x10 + mov r2, #0x18 + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} +_020BF174: + ldr r3, [r1, #0x0] + ldr r2, _020BF2E0 ; =0x021CEF7C + str r3, [r5, #0x4] + ldr r3, [r1, #0x4] + mov r7, r0, lsr #0x5 + str r3, [r5, #0x8] + ldr r3, [r1, #0x8] + and r8, r0, #0x1f + str r3, [r5, #0xc] + ldr r6, [r2, #0x0] + mov r3, #0x1 + add r2, r6, r7, lsl #0x2 + mov r7, r3, lsl r8 + ldr r2, [r2, #0xc4] + ands r2, r7, r2 + beq _020BF200 + ldr r3, _020BF2E4 ; =0x021CFD80 + mov r2, #0x18 + mov r0, r1 + mla r1, r4, r2, r3 + bl MIi_CpuCopy32 + ldr r0, _020BF2E0 ; =0x021CEF7C + mov r2, r4, lsr #0x5 + ldr r1, [r0, #0x0] + and r0, r4, #0x1f + add r3, r1, #0xc4 + mov r1, #0x1 + mvn r0, r1, lsl r0 + ldr r1, [r3, r2, lsl #0x2] + and r0, r1, r0 + str r0, [r3, r2, lsl #0x2] + ldr r0, [r5, #0x0] + orr r0, r0, #0x18 + str r0, [r5, #0x0] + ldmia sp!, {r4-r8,pc} +_020BF200: + mov r2, #0x18 + mul r12, r0, r2 + and r7, r4, #0x1f + ldr r0, _020BF2E4 ; =0x021CFD80 + add r6, r6, #0xc4 + mov lr, r4, lsr #0x5 + mvn r7, r3, lsl r7 + ldr r8, [r6, lr, lsl #0x2] + mul r3, r4, r2 + and r4, r8, r7 + str r4, [r6, lr, lsl #0x2] + ldr r7, [r1, #0x0] + ldr r4, [r0, r12] + ldr r6, _020BF2E8 ; =0x021CFD84 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r0, r3] + ldr r8, [r1, #0x4] + ldr r4, [r6, r12] + ldr r7, _020BF2EC ; =0x021CFD88 + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r6, r3] + ldr r8, [r1, #0x8] + ldr r4, [r7, r12] + ldr r6, _020BF2F0 ; =0x021CFD8C + smull lr, r4, r8, r4 + mov r8, lr, lsr #0xc + orr r8, r8, r4, lsl #0x14 + str r8, [r7, r3] + ldr r7, [r1, #0xc] + ldr r4, [r6, r12] + ldr lr, _020BF2F4 ; =0x021CFD90 + smull r8, r4, r7, r4 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [r6, r3] + ldr r7, [r1, #0x10] + ldr r4, [lr, r12] + ldr r6, _020BF2F8 ; =0x021CFD94 + smull r8, r4, r7, r4 + add r0, r0, r12 + mov r7, r8, lsr #0xc + orr r7, r7, r4, lsl #0x14 + str r7, [lr, r3] + ldr lr, [r1, #0x14] + ldr r4, [r6, r12] + add r1, r5, #0x10 + smull r5, r4, lr, r4 + mov r5, r5, lsr #0xc + orr r5, r5, r4, lsl #0x14 + str r5, [r6, r3] + bl MIi_CpuCopy32 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020BF2E0: .word 0x021CEF7C +_020BF2E4: .word 0x021CFD80 +_020BF2E8: .word 0x021CFD84 +_020BF2EC: .word 0x021CFD88 +_020BF2F0: .word 0x021CFD8C +_020BF2F4: .word 0x021CFD90 +_020BF2F8: .word 0x021CFD94 + + arm_func_start FUN_020BF2FC +FUN_020BF2FC: ; 0x020BF2FC + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x10 + mov r6, r0 + ldr r0, [r6, #0x0] + mov r5, #0x0 + ands r4, r0, #0x18 + bne _020BF328 + add r1, r6, #0x1c + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF328: + ldr r0, [r6, #0x0] + ands r0, r0, #0x4 + bne _020BF398 + cmp r4, #0x0 + movne r5, #0x1 + bne _020BF398 + ldr r2, [r6, #0x4c] + ldr r0, [r6, #0x10] + add r1, sp, #0x0 + smull r3, r0, r2, r0 + mov r2, r3, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x0] + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x14] + mov r0, #0x1c + smull r12, r2, r3, r2 + mov r3, r12, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [sp, #0x4] + ldr r12, [r6, #0x54] + ldr r3, [r6, #0x18] + mov r2, #0x3 + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + str r12, [sp, #0x8] + bl FUN_020BB1C0 +_020BF398: + ldr r0, [r6, #0x0] + ands r0, r0, #0x2 + bne _020BF3D4 + cmp r5, #0x0 + beq _020BF3C0 + add r1, r6, #0x28 + mov r0, #0x19 + mov r2, #0xc + bl FUN_020BB1C0 + b _020BF3EC +_020BF3C0: + add r1, r6, #0x28 + mov r0, #0x1a + mov r2, #0x9 + bl FUN_020BB1C0 + b _020BF3EC +_020BF3D4: + cmp r5, #0x0 + beq _020BF3EC + add r1, r6, #0x4c + mov r0, #0x1c + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF3EC: + cmp r4, #0x0 + bne _020BF404 + add r1, r6, #0x10 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 +_020BF404: + ldr r0, [r6, #0x0] + ands r0, r0, #0x1 + addne sp, sp, #0x10 + ldmneia sp!, {r4-r6,pc} +_020BF414: ; 0x020BF414 + add r1, r6, #0x4 + mov r0, #0x1b + mov r2, #0x3 + bl FUN_020BB1C0 + add sp, sp, #0x10 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BF42C +FUN_020BF42C: ; 0x020BF42C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r1, #0x0 + ands r0, r0, #0x8 + ldrne r0, _020BF568 ; =0x00101610 + mov r3, #0x3 + strne r0, [sp, #0x0] + ldreq r0, _020BF56C ; =0x00101810 + mov r2, #0x2 + streq r0, [sp, #0x0] + mov r0, #0x1000 + str r0, [sp, #0x44] + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x40] + str r1, [sp, #0x34] + str r1, [sp, #0x30] + str r1, [sp, #0x2c] + str r1, [sp, #0x28] + str r1, [sp, #0x24] + str r1, [sp, #0x20] + str r1, [sp, #0x14] + str r1, [sp, #0x10] + ldr r1, [r4, #0x0] + ldr r0, _020BF570 ; =0x021067D0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BF4FC + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BF4FC: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BF54C + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BF54C: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BF568: .word 0x00101610 +_020BF56C: .word 0x00101810 +_020BF570: .word 0x021067D0 + + arm_func_start FUN_020BF574 +FUN_020BF574: ; 0x020BF574 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BF598 +FUN_020BF598: ; 0x020BF598 + ldr r2, [r1, #0x18] + mov r12, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r12, [r0, #0x4] + ldr r3, [r1, #0x18] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x1000 + mul r2, r3, r2 + mov r2, r2, lsl #0x3 + str r2, [r0, #0x30] + ldr r2, [r1, #0x1c] + ldrh r1, [r1, #0x2e] + rsb r2, r2, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x3 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BF5E8 +FUN_020BF5E8: ; 0x020BF5E8 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + ldrsh r4, [r5, #0x22] + rsb r0, r2, #0x0 + rsb r1, r1, #0x0 + mov r0, r0, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r1, r1, lsl #0xb + smull r7, lr, r4, r0 + smull r12, r4, r3, r1 + subs r7, r7, r12 + sbc r3, lr, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BF6C8 +FUN_020BF6C8: ; 0x020BF6C8 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r3, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + rsb r0, r3, #0x0 + rsb r1, r1, #0x0 + mov r2, r1, lsl #0xb + mov r11, r0, lsl #0xb + smull r1, r0, r7, r11 + smull r8, r7, r5, r2 + smlal r8, r7, r4, r11 + mov r4, r8, lsr #0x8 + orr r4, r4, r7, lsl #0x18 + smull r5, r2, r6, r2 + subs r1, r1, r5 + sbc r0, r0, r2 + mov r1, r1, lsr #0x8 + orr r1, r1, r0, lsl #0x18 + add r0, r1, r3, lsl #0xf + str r0, [r10, #0x30] + ldrh r0, [r9, #0x2e] + add r0, r4, r0, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BF7C8 +FUN_020BF7C8: ; 0x020BF7C8 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov r12, #0x0 + str r12, [r0, #0x4] + ldr r3, [r1, #0x24] + ldrh r2, [r1, #0x2c] + rsb r3, r3, #0x0 + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x28] + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str r12, [r0, #0x10] + bx lr + + arm_func_start FUN_020BF810 +FUN_020BF810: ; 0x020BF810 + stmdb sp!, {r4-r6,lr} + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + ldrh r5, [r1, #0x2c] + ldr r12, [r1, #0x24] + ldrh r2, [r1, #0x2e] + mul lr, r12, r5 + rsb r12, r5, #0x0 + mov r12, r12, lsl #0xb + ldr r4, [r1, #0x18] + sub r12, r12, lr + smull lr, r12, r4, r12 + ldr r6, [r1, #0x28] + mov r4, lr, lsr #0x8 + orr r4, r4, r12, lsl #0x18 + add r4, r4, r5, lsl #0xf + str r4, [r0, #0x30] + mul r4, r6, r2 + rsb r5, r2, #0x0 + ldr r2, [r1, #0x1c] + add r4, r4, r5, lsl #0xb + smull lr, r12, r2, r4 + mov r2, lr, lsr #0x8 + ldrh r1, [r1, #0x2e] + orr r2, r2, r12, lsl #0x18 + add r1, r2, r1, lsl #0xf + str r1, [r0, #0x34] + str r3, [r0, #0x10] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020BF894 +FUN_020BF894: ; 0x020BF894 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r2, [r5, #0x2c] + ldrh r7, [r5, #0x2e] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0x24] + rsb r4, r2, #0x0 + mul r3, r1, r7 + rsb r1, r7, #0x0 + add r1, r3, r1, lsl #0xb + ldrsh r3, [r5, #0x20] + mov r7, r4, lsl #0xb + mul r4, r0, r2 + sub r0, r7, r4 + ldrsh lr, [r5, #0x22] + smull r12, r4, r3, r1 + smull r7, r3, lr, r0 + subs r7, r7, r12 + sbc r3, r3, r4 + mov r4, r7, lsr #0x8 + orr r4, r4, r3, lsl #0x18 + add r2, r4, r2, lsl #0xf + str r2, [r6, #0x30] + ldrsh r2, [r5, #0x22] + ldrsh r3, [r5, #0x20] + ldrh r12, [r5, #0x2e] + smull r4, r1, r2, r1 + smlal r4, r1, r3, r0 + mov r0, r4, lsr #0x8 + orr r0, r0, r1, lsl #0x18 + add r0, r0, r12, lsl #0xf + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BF988 +FUN_020BF988: ; 0x020BF988 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r0, [r9, #0x22] + ldr r3, [r9, #0x18] + ldrsh r5, [r9, #0x20] + ldr r4, [r9, #0x1c] + smull r2, r1, r3, r0 + mov r7, r2, lsr #0xc + orr r7, r7, r1, lsl #0x14 + smull r2, r1, r3, r5 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + smull r3, r2, r4, r0 + smull r1, r0, r4, r5 + mov r5, r3, lsr #0xc + orr r5, r5, r2, lsl #0x14 + mov r4, r1, lsr #0xc + orr r4, r4, r0, lsl #0x14 + str r7, [r10, #0x0] + str r5, [r10, #0x14] + bl FX_GetDivResult + mov r1, r11 + mul r0, r4, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + bl FX_DivAsync + ldrh r1, [r9, #0x2c] + ldrh r8, [r9, #0x2e] + ldr r2, [r9, #0x28] + rsb r0, r1, #0x0 + mul r3, r2, r8 + rsb r2, r8, #0x0 + add r8, r3, r2, lsl #0xb + mov r0, r0, lsl #0xb + smull r3, r2, r5, r8 + smull r8, r5, r6, r8 + ldr r11, [r9, #0x24] + mul r12, r11, r1 + sub r0, r0, r12 + smlal r3, r2, r4, r0 + smull r4, r0, r7, r0 + subs r4, r4, r8 + sbc r0, r0, r5 + mov r4, r4, lsr #0x8 + orr r4, r4, r0, lsl #0x18 + add r0, r4, r1, lsl #0xf + str r0, [r10, #0x30] + ldrh r1, [r9, #0x2e] + mov r0, r3, lsr #0x8 + orr r0, r0, r2, lsl #0x18 + add r0, r0, r1, lsl #0xf + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BFA9C +FUN_020BFA9C: ; 0x020BFA9C + stmdb sp!, {r4,lr} + sub sp, sp, #0x50 + mov r4, r0 + ldr r0, [r4, #0x0] + mov r3, #0x3 + ands r0, r0, #0x8 + ldrne r0, _020BFC1C ; =0x00101610 + mov r2, #0x2 + strne r0, [sp, #0x0] + ldreq r0, _020BFC20 ; =0x00101810 + mov r1, #0x1000 + streq r0, [sp, #0x0] + mov r0, #0x0 + str r3, [sp, #0x4] + str r2, [sp, #0x48] + str r1, [sp, #0x44] + str r0, [sp, #0x40] + str r0, [sp, #0x34] + str r0, [sp, #0x30] + str r0, [sp, #0x2c] + str r0, [sp, #0x28] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + str r0, [sp, #0x14] + str r0, [sp, #0x10] + ldr r0, [r4, #0x0] + ands r0, r0, #0x1 + strne r1, [r4, #0x1c] + ldrne r0, [r4, #0x1c] + strne r0, [r4, #0x18] + ldr r0, [r4, #0x0] + ands r0, r0, #0x2 + movne r0, #0x1000 + strneh r0, [r4, #0x22] + movne r0, #0x0 + strneh r0, [r4, #0x20] + ldr r0, [r4, #0x0] + ands r0, r0, #0x4 + movne r0, #0x0 + strne r0, [r4, #0x28] + ldrne r0, [r4, #0x28] + strne r0, [r4, #0x24] + ldr r1, [r4, #0x0] + ldr r0, _020BFC24 ; =0x021067F0 + and r1, r1, #0x7 + ldr r2, [r0, r1, lsl #0x2] + add r0, sp, #0x8 + mov r1, r4 + blx r2 + ldr r3, [r4, #0x30] + cmp r3, #0x1000 + beq _020BFBB0 + ldr r0, [sp, #0x8] + ldr r1, [sp, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x8] + ldr r2, [r4, #0x30] + ldr r0, [sp, #0x38] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0xc] + ldr r1, [r4, #0x30] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x38] +_020BFBB0: + ldr r3, [r4, #0x34] + cmp r3, #0x1000 + beq _020BFC00 + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [sp, #0x18] + ldr r2, [r4, #0x34] + ldr r0, [sp, #0x3c] + smull r3, r1, r2, r1 + mov r2, r3, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [sp, #0x1c] + ldr r1, [r4, #0x34] + smull r2, r0, r1, r0 + mov r1, r2, lsr #0xc + orr r1, r1, r0, lsl #0x14 + str r1, [sp, #0x3c] +_020BFC00: + add r1, sp, #0x0 + ldr r0, [sp, #0x0] + add r1, r1, #0x4 + mov r2, #0x12 + bl FUN_020BB1C0 + add sp, sp, #0x50 + ldmia sp!, {r4,pc} + .balign 4 +_020BFC1C: .word 0x00101610 +_020BFC20: .word 0x00101810 +_020BFC24: .word 0x021067F0 + + arm_func_start FUN_020BFC28 +FUN_020BFC28: ; 0x020BFC28 + mov r2, #0x1000 + str r2, [r0, #0x0] + mov r1, #0x0 + str r1, [r0, #0x4] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + str r1, [r0, #0x30] + str r1, [r0, #0x34] + bx lr + + arm_func_start FUN_020BFC4C +FUN_020BFC4C: ; 0x020BFC4C + ldr r2, [r1, #0x18] + mov r3, #0x0 + str r2, [r0, #0x0] + ldr r2, [r1, #0x1c] + str r2, [r0, #0x14] + str r3, [r0, #0x4] + str r3, [r0, #0x30] + ldrh r2, [r1, #0x2e] + ldr r1, [r1, #0x1c] + rsb r2, r2, #0x0 + sub r1, r1, #0x1000 + mul r1, r2, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r3, [r0, #0x10] + bx lr + + arm_func_start FUN_020BFC8C +FUN_020BFC8C: ; 0x020BFC8C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrh r1, [r5, #0x2c] + ldrsh r0, [r5, #0x20] + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrh r1, [r5, #0x2e] + ldrsh r0, [r5, #0x22] + rsb r1, r1, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BFD38 +FUN_020BFD38: ; 0x020BFD38 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r9, r1 + ldrh r2, [r9, #0x2c] + ldrh r1, [r9, #0x2e] + mov r10, r0 + mov r8, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r8 + bl FX_DivAsync + ldrsh r3, [r9, #0x22] + ldr r0, [r9, #0x18] + ldrsh r7, [r9, #0x20] + ldr r5, [r9, #0x1c] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + str r2, [r10, #0x0] + smull r2, r1, r5, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r7 + mov r6, r2, lsr #0xc + orr r6, r6, r1, lsl #0x14 + str r4, [r10, #0x14] + bl FX_GetDivResult + smull r2, r1, r5, r7 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x4] + mov r0, r8 + mov r1, r11 + bl FX_DivAsync + sub r0, r4, #0x1000 + ldrh r1, [r9, #0x2c] + mul r2, r1, r6 + mov r1, r2, lsl #0x4 + str r1, [r10, #0x30] + ldrh r1, [r9, #0x2e] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r10, #0x34] + bl FX_GetDivResult + rsb r1, r6, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r10, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020BFE0C +FUN_020BFE0C: ; 0x020BFE0C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, #0x1000 + str r2, [r0, #0x0] + str r2, [r0, #0x14] + mov lr, #0x0 + str lr, [r0, #0x4] + ldr r2, [r1, #0x24] + ldrh r3, [r1, #0x2c] + rsb r2, r2, #0x0 + ldr r12, [r1, #0x28] + mul r2, r3, r2 + mov r2, r2, lsl #0x4 + str r2, [r0, #0x30] + ldrh r1, [r1, #0x2e] + rsb r2, r12, #0x0 + rsb r1, r1, #0x0 + mul r2, r1, r2 + mov r1, r2, lsl #0x4 + str r1, [r0, #0x34] + str lr, [r0, #0x10] + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020BFE68 +FUN_020BFE68: ; 0x020BFE68 + stmdb sp!, {r4,lr} + ldr r3, [r1, #0x18] + mov r2, #0x0 + str r3, [r0, #0x0] + ldr r3, [r1, #0x1c] + str r3, [r0, #0x14] + str r2, [r0, #0x4] + ldr r12, [r1, #0x24] + ldr r3, [r1, #0x18] + ldr r4, [r1, #0x28] + smull lr, r3, r12, r3 + mov r12, lr, lsr #0xc + orr r12, r12, r3, lsl #0x14 + ldrh lr, [r1, #0x2c] + rsb r3, r12, #0x0 + ldr r12, [r1, #0x1c] + rsb r4, r4, #0x0 + mul r3, lr, r3 + smull lr, r12, r4, r12 + mov r3, r3, lsl #0x4 + str r3, [r0, #0x30] + mov r4, lr, lsr #0xc + ldrh r3, [r1, #0x2e] + ldr r1, [r1, #0x1c] + orr r4, r4, r12, lsl #0x14 + add r1, r1, r4 + rsb r3, r3, #0x0 + sub r1, r1, #0x1000 + mul r1, r3, r1 + mov r1, r1, lsl #0x4 + str r1, [r0, #0x34] + str r2, [r0, #0x10] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020BFEEC +FUN_020BFEEC: ; 0x020BFEEC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r1 + ldrh r2, [r5, #0x2c] + ldrh r1, [r5, #0x2e] + mov r6, r0 + mov r4, r2, lsl #0xc + mov r7, r1, lsl #0xc + mov r0, r7 + mov r1, r4 + bl FX_DivAsync + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x0] + ldrsh r0, [r5, #0x22] + str r0, [r6, #0x14] + bl FX_GetDivResult + ldrsh r2, [r5, #0x20] + mov r1, r7 + mul r0, r2, r0 + mov r2, r0, asr #0xc + mov r0, r4 + str r2, [r6, #0x4] + bl FX_DivAsync + ldrsh lr, [r5, #0x20] + ldr r4, [r5, #0x28] + ldrsh r0, [r5, #0x22] + ldr r12, [r5, #0x24] + smull r3, r2, r4, lr + smlal r3, r2, r12, r0 + smull r1, r0, r4, r0 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + sub r4, lr, r3 + smull r3, r2, r12, lr + subs r1, r3, r1 + sbc r0, r2, r0 + ldrh r2, [r5, #0x2c] + mov r1, r1, lsr #0xc + orr r1, r1, r0, lsl #0x14 + mul r0, r2, r4 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x30] + ldrsh r0, [r5, #0x22] + ldrh r2, [r5, #0x2e] + add r0, r0, r1 + rsb r1, r2, #0x0 + sub r0, r0, #0x1000 + mul r0, r1, r0 + mov r0, r0, lsl #0x4 + str r0, [r6, #0x34] + bl FX_GetDivResult + ldrsh r1, [r5, #0x20] + rsb r1, r1, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r6, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020BFFD4 +FUN_020BFFD4: ; 0x020BFFD4 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r6, r1 + ldrh r2, [r6, #0x2c] + ldrh r1, [r6, #0x2e] + mov r7, r0 + mov r10, r2, lsl #0xc + mov r11, r1, lsl #0xc + mov r0, r11 + mov r1, r10 + bl FX_DivAsync + ldrsh r3, [r6, #0x22] + ldr r0, [r6, #0x18] + ldrsh r9, [r6, #0x20] + smull r2, r1, r0, r3 + mov r2, r2, lsr #0xc + ldr r8, [r6, #0x1c] + orr r2, r2, r1, lsl #0x14 + str r2, [r7, #0x0] + smull r2, r1, r8, r3 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r9 + mov r5, r2, lsr #0xc + orr r5, r5, r1, lsl #0x14 + str r4, [r7, #0x14] + bl FX_GetDivResult + smull r2, r1, r8, r9 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + mul r0, r2, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x4] + mov r0, r10 + mov r1, r11 + bl FX_DivAsync + ldr lr, [r6, #0x1c] + ldrsh r2, [r6, #0x20] + ldr r8, [r6, #0x24] + ldr r0, [r6, #0x28] + smull r10, r9, r8, r2 + ldrh r1, [r6, #0x2c] + smull r3, r2, r0, r2 + ldrsh r12, [r6, #0x22] + str r1, [sp, #0x0] + mov r11, lr, asr #0x1f + smlal r3, r2, r8, r12 + smull r8, r12, r0, r12 + subs r8, r10, r8 + sbc r0, r9, r12 + mov r9, r8, lsr #0xc + mov r12, r3, lsr #0xc + orr r9, r9, r0, lsl #0x14 + mov r3, r2, asr #0xc + orr r12, r12, r2, lsl #0x14 + umull r10, r2, r9, lr + mla r2, r9, r11, r2 + mov r8, r0, asr #0xc + mla r2, r8, lr, r2 + ldr r1, [r6, #0x18] + mov r8, r10, lsr #0xc + orr r8, r8, r2, lsl #0x14 + add r2, r4, r8 + mov r0, r1, asr #0x1f + umull r8, r4, r12, r1 + mla r4, r12, r0, r4 + mla r4, r3, r1, r4 + mov r0, r8, lsr #0xc + orr r0, r0, r4, lsl #0x14 + sub r1, r5, r0 + ldr r0, [sp, #0x0] + sub r2, r2, #0x1000 + mul r1, r0, r1 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x30] + ldrh r0, [r6, #0x2e] + rsb r0, r0, #0x0 + mul r1, r0, r2 + mov r0, r1, lsl #0x4 + str r0, [r7, #0x34] + bl FX_GetDivResult + rsb r1, r5, #0x0 + mul r0, r1, r0 + mov r0, r0, asr #0xc + str r0, [r7, #0x10] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C0130 +FUN_020C0130: ; 0x020C0130 + ldr ip, _020C0138 ; =FUN_020C187C + bx r12 + .balign 4 +_020C0138: .word FUN_020C187C + + arm_func_start FUN_020C013C +FUN_020C013C: ; 0x020C013C + stmdb sp!, {r4,lr} + bl FUN_020C18F8 +_020C0144: ; 0x020C0144 + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C0174 +FUN_020C0174: ; 0x020C0174 + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + beq _020C0194 + mov r0, #0x40 + bl SND_SetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} +_020C0194: + bl SND_ResetMasterPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C01A0 +FUN_020C01A0: ; 0x020C01A0 + stmdb sp!, {r4,lr} + mov r4, #0x0 +_020C01A8: + mov r0, r4 + bl SND_RecvCommandReply +_020C01B0: ; 0x020C01B0 + cmp r0, #0x0 + bne _020C01A8 + bl FUN_020C0BA0 + bl FUN_020C1D9C + bl FUN_020C3C88 +_020C01C4: ; 0x020C01C4 + mov r0, #0x0 + bl SND_FlushCommand + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C01D0 +FUN_020C01D0: ; 0x020C01D0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C0254 ; =0x021D1C94 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + mov r1, #0x1 + str r1, [r0, #0x0] + bl SND_Init + ldr ip, _020C0258 ; =FUN_020C013C + ldr r0, _020C025C ; =0x021D1C98 + mov r3, #0x0 + ldr r1, _020C0260 ; =0x021D1CA4 + ldr r2, _020C0264 ; =FUN_020C0130 + str r12, [r0, #0x0] + str r3, [r0, #0x4] + str r2, [r1, #0x0] + str r3, [r1, #0x4] + bl PM_PrependPreSleepCallback + ldr r0, _020C0260 ; =0x021D1CA4 + bl PM_AppendPostSleepCallback + bl FUN_020C0270 + bl FUN_020C1E38 + bl FUN_020C0D20 + ldr r1, _020C0268 ; =0x021D1C8C + mvn r3, #0x0 + ldr r0, _020C026C ; =0x021D1C90 + mov r2, #0x1 + strb r3, [r1, #0x0] + str r2, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C0254: .word 0x021D1C94 +_020C0258: .word FUN_020C013C +_020C025C: .word 0x021D1C98 +_020C0260: .word 0x021D1CA4 +_020C0264: .word FUN_020C0130 +_020C0268: .word 0x021D1C8C +_020C026C: .word 0x021D1C90 + + arm_func_start FUN_020C0270 +FUN_020C0270: ; 0x020C0270 + ldr r2, _020C0290 ; =0x021D1CB8 + mov r3, #0x0 + ldr r1, _020C0294 ; =0x021D1CB0 + ldr r0, _020C0298 ; =0x021D1CB4 + str r3, [r2, #0x0] + str r3, [r1, #0x0] + str r3, [r0, #0x0] + bx lr + .balign 4 +_020C0290: .word 0x021D1CB8 +_020C0294: .word 0x021D1CB0 +_020C0298: .word 0x021D1CB4 + + arm_func_start FUN_020C029C +FUN_020C029C: ; 0x020C029C + ldr r1, _020C02B8 ; =0x021D1CB4 + mov r2, #0x1 + mvn r0, r2, lsl r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C02B8: .word 0x021D1CB4 + + arm_func_start FUN_020C02BC +FUN_020C02BC: ; 0x020C02BC + ldr r0, _020C02FC ; =0x021D1CB4 + mov r3, #0x1 + ldr r2, [r0, #0x0] + mov r0, #0x0 +_020C02CC: + ands r1, r2, r3 + ldreq r1, _020C02FC ; =0x021D1CB4 + ldreq r2, [r1, #0x0] + orreq r2, r2, r3 + streq r2, [r1, #0x0] + bxeq lr + add r0, r0, #0x1 + cmp r0, #0x8 + mov r3, r3, lsl #0x1 + blt _020C02CC + mvn r0, #0x0 + bx lr + .balign 4 +_020C02FC: .word 0x021D1CB4 + + arm_func_start FUN_020C0300 +FUN_020C0300: ; 0x020C0300 + ldr r1, _020C0318 ; =0x021D1CB0 + mvn r0, r0 + ldr r2, [r1, #0x0] + and r0, r2, r0 + str r0, [r1, #0x0] + bx lr + .balign 4 +_020C0318: .word 0x021D1CB0 + + arm_func_start FUN_020C031C +FUN_020C031C: + ldr r1, _020C033C ; =0x021D1CB0 + ldr r2, [r1, #0x0] + ands r3, r0, r2 + movne r0, #0x0 + orreq r0, r2, r0 + streq r0, [r1, #0x0] + moveq r0, #0x1 + bx lr + .balign 4 +_020C033C: .word 0x021D1CB0 + + arm_func_start FUN_020C0340 +FUN_020C0340: + stmdb sp!, {r4,lr} + movs r4, r0 + ldmeqia sp!, {r4,pc} +_020C034C: ; 0x020C034C + mov r1, #0x0 + bl SND_UnlockChannel + ldr r0, _020C036C ; =0x021D1CB8 + mvn r1, r4 + ldr r2, [r0, #0x0] + and r1, r2, r1 + str r1, [r0, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C036C: .word 0x021D1CB8 + + arm_func_start FUN_020C0370 +FUN_020C0370: + stmdb sp!, {r4,lr} + movs r4, r0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} +_020C0380: ; 0x020C0380 + ldr r1, _020C03B4 ; =0x021D1CB8 + ldr r1, [r1, #0x0] + ands r1, r4, r1 + movne r0, #0x0 + ldmneia sp!, {r4,pc} +_020C0394: ; 0x020C0394 + mov r1, #0x0 + bl SND_LockChannel + ldr r1, _020C03B4 ; =0x021D1CB8 + mov r0, #0x1 + ldr r2, [r1, #0x0] + orr r2, r2, r4 + str r2, [r1, #0x0] + ldmia sp!, {r4,pc} + .balign 4 +_020C03B4: .word 0x021D1CB8 + + arm_func_start FUN_020C03B8 +FUN_020C03B8: ; 0x020C03B8 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C03D0: ; 0x020C03D0 + ldr r0, [r4, #0xc] + cmp r0, #0x0 + bne _020C03F8 + ldr r0, [r4, #0x10] + bl SND_IsFinishedCommandTag +_020C03E4: ; 0x020C03E4 + cmp r0, #0x0 + moveq r0, #0x1 + ldmeqia sp!, {r4,pc} +_020C03F0: ; 0x020C03F0 + mov r0, #0x1 + str r0, [r4, #0xc] +_020C03F8: + bl SND_GetChannelStatus + ldr r1, [r4, #0x0] + mov r2, #0x1 + mov r1, r2, lsl r1 + ands r0, r1, r0 + movne r0, r2 + moveq r0, #0x0 + streq r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C041C +FUN_020C041C: ; 0x020C041C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + bl SND_SetChannelPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C044C +FUN_020C044C: ; 0x020C044C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x8] + mov r4, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020C046C: ; 0x020C046C + ldr r2, [r5, #0x4] + ldr r0, _020C04D4 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + mov r2, r4 + mov r3, r4, asr #0x1f + bl _ll_udiv + mov r2, #0x0 + mov r3, r0 + mov r0, #0x10 + cmp r1, r2 + cmpeq r3, r0 + movcc r3, r0 + blo _020C04B8 + ldr r0, _020C04D8 ; =0x0000FFFF + cmp r1, r2 + cmpeq r3, r0 + movhi r3, r0 +_020C04B8: + ldr r0, [r5, #0x0] + mov r1, #0x1 + mov r0, r1, lsl r0 + mov r1, r3 + bl SND_SetChannelTimer + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C04D4: .word 0xD87F8000 +_020C04D8: .word 0x0000FFFF + + arm_func_start FUN_020C04DC +FUN_020C04DC: ; 0x020C04DC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r2, [r0, #0x8] + cmp r2, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, #0x0 + bl SND_SetChannelVolume + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0510 +FUN_020C0510: ; 0x020C0510 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C0524: ; 0x020C0524 + ldr r0, [r4, #0x0] + mov r2, #0x1 + mov r1, #0x0 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StopTimer +_020C0540: ; 0x020C0540 + mov r0, #0x0 + str r0, [r4, #0x8] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C054C +FUN_020C054C: ; 0x020C054C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x1c + movs r8, r1 + mov r9, r0 + mov r7, r2 + mov r6, r3 + beq _020C0584 + cmp r8, #0x1 + ldreq r0, [sp, #0x3c] + ldreq r1, [sp, #0x38] + moveq r0, r0, asr #0x1 + moveq r5, r1, asr #0x1 + subeq r4, r0, r1, asr #0x1 + b _020C0598 +_020C0584: + ldr r0, [sp, #0x3c] + ldr r1, [sp, #0x38] + mov r0, r0, asr #0x2 + mov r5, r1, asr #0x2 + sub r4, r0, r1, asr #0x2 +_020C0598: + ldr r2, [sp, #0x40] + ldr r0, _020C0668 ; =0xD87F8000 + mov r3, r2, asr #0x1f + mov r1, #0x7f + bl _ll_udiv + ldr r2, [sp, #0x48] + mov r3, r2, asr #0x1f + bl _ll_udiv + mov r3, #0x0 + mov r2, #0x10 + cmp r1, r3 + cmpeq r0, r2 + movcc r0, r2 + blo _020C05E0 + ldr r2, _020C066C ; =0x0000FFFF + cmp r1, r3 + cmpeq r0, r2 + movhi r0, r2 +_020C05E0: + str r5, [sp, #0x0] + ldr r1, [sp, #0x44] + str r4, [sp, #0x4] + str r1, [sp, #0x8] + mov r1, #0x0 + str r1, [sp, #0xc] + cmp r6, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x4c] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r9, #0x0] + moveq r3, #0x2 + mov r1, r8 + mov r2, r7 + bl SND_SetupChannelPcm + mov r1, #0x0 + ldr r0, [r9, #0x0] + mov r2, #0x1 + mov r0, r2, lsl r0 + mov r2, r1 + mov r3, r1 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r9, #0x8] + mov r0, #0x0 + str r0, [r9, #0xc] + bl SND_GetCurrentCommandTag + str r0, [r9, #0x10] + ldr r1, [sp, #0x40] + mov r0, #0x1 + str r1, [r9, #0x4] + add sp, sp, #0x1c + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C0668: .word 0xD87F8000 +_020C066C: .word 0x0000FFFF + + arm_func_start FUN_020C0670 +FUN_020C0670: ; 0x020C0670 + ldr r0, [r0, #0x0] + mov r1, #0x1 + ldr ip, _020C0684 ; =FUN_020C0340 + mov r0, r1, lsl r0 + bx r12 + .balign 4 +_020C0684: .word FUN_020C0340 + + arm_func_start FUN_020C0688 +FUN_020C0688: ; 0x020C0688 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x1 + mov r0, r0, lsl r4 + bl FUN_020C0370 +_020C069C: ; 0x020C069C + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C06A8: ; 0x020C06A8 + mov r0, #0x14 + mul r0, r4, r0 + ldr r2, _020C06C8 ; =0x021D1CBC + mov r1, #0x0 + str r4, [r2, r0] + add r0, r2, r0 + str r1, [r0, #0x8] + ldmia sp!, {r4,pc} + .balign 4 +_020C06C8: .word 0x021D1CBC + + arm_func_start FUN_020C06CC +FUN_020C06CC: ; 0x020C06CC + stmdb sp!, {r4-r6,lr} + mov r6, r0 + ldr r4, [r6, #0x4] + mov r5, r1 + cmp r4, #0x0 + beq _020C06F8 + mov r0, r4 + mov r1, r6 + bl FUN_020ADAB0 +_020C06F0: ; 0x020C06F0 + mov r0, #0x0 + str r0, [r6, #0x4] +_020C06F8: + ldr r0, _020C0728 ; =0x021D1E08 + mov r1, r6 + bl FUN_020ADAB0 + strb r5, [r6, #0x3d] + cmp r4, #0x0 + beq _020C071C + mov r0, r4 + mov r1, r6 + bl FUN_020C0910 +_020C071C: + mov r0, r6 + bl FUN_020C08B4 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0728: .word 0x021D1E08 + + arm_func_start FUN_020C072C +FUN_020C072C: ; 0x020C072C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x8] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C0740: ; 0x020C0740 + bl FUN_020C2A7C + ldr r1, [r4, #0xc] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x8] + ldmneia sp!, {r4,pc} +_020C0758: ; 0x020C0758 + ldr r1, [r4, #0x10] + ldr r2, _020C0778 ; =0x021D2254 + mov r0, #0x24 + mla r0, r1, r0, r2 + mov r1, r4 + add r0, r0, #0xc + bl FUN_020ADAB0 + ldmia sp!, {r4,pc} + .balign 4 +_020C0778: .word 0x021D2254 + + arm_func_start FUN_020C077C +FUN_020C077C: ; 0x020C077C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r1, [r4, #0x0] + cmp r1, #0x0 + movne r0, #0x0 + strne r0, [r1, #0x0] + strne r0, [r4, #0x0] + ldr r5, [r4, #0x4] + mov r1, r4 + mov r0, r5 + bl FUN_020ADAB0 +_020C07AC: ; 0x020C07AC + mov r0, #0x0 + str r0, [r4, #0x4] + ldr r1, [r4, #0x8] + cmp r1, #0x0 + beq _020C07D8 + add r0, r5, #0xc + bl FUN_020ADBE8 + ldr r0, [r4, #0x8] + mov r1, #0x0 + str r1, [r0, #0xc] + str r1, [r4, #0x8] +_020C07D8: + ldr r0, _020C0800 ; =0x021D1E08 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, _020C0804 ; =0x021D1DFC + mov r1, r4 + bl FUN_020ADBE8 +_020C07F0: ; 0x020C07F0 + mov r0, #0x0 + strb r0, [r4, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0800: .word 0x021D1E08 +_020C0804: .word 0x021D1DFC + + arm_func_start FUN_020C0808 +FUN_020C0808: ; 0x020C0808 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C0874 ; =0x021D1DFC + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + bne _020C0850 + ldr r0, _020C0878 ; =0x021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + mov r4, r0 + ldrb r1, [r4, #0x3d] + cmp r5, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r5,pc} +_020C084C: ; 0x020C084C + bl FUN_020C087C +_020C0850: + ldr r0, _020C0874 ; =0x021D1DFC + mov r1, r4 + bl FUN_020ADAB0 + mov r0, r4 + strb r5, [r4, #0x3d] + bl FUN_020C08B4 + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0874: .word 0x021D1DFC +_020C0878: .word 0x021D1E08 + + arm_func_start FUN_020C087C +FUN_020C087C: ; 0x020C087C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrb r0, [r4, #0x2c] + cmp r0, #0x2 + bne _020C089C + ldrb r0, [r4, #0x3c] + ldr r1, _020C08B0 ; =0xFFFFFD2D + bl SND_SetPlayerVolume +_020C089C: + ldrb r0, [r4, #0x3c] + bl SND_StopSeq + mov r0, r4 + bl FUN_020C077C + ldmia sp!, {r4,pc} + .balign 4 +_020C08B0: .word 0xFFFFFD2D + + arm_func_start FUN_020C08B4 +FUN_020C08B4: ; 0x020C08B4 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, _020C090C ; =0x021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C08F8 + ldr r4, _020C090C ; =0x021D1E08 +_020C08D8: + ldrb r2, [r5, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C08F8 + mov r0, r4 + bl FUN_020ADA98 + movs r1, r0 + bne _020C08D8 +_020C08F8: + ldr r0, _020C090C ; =0x021D1E08 + mov r2, r5 + bl FUN_020ADB18 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C090C: .word 0x021D1E08 + + arm_func_start FUN_020C0910 +FUN_020C0910: ; 0x020C0910 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, #0x0 + mov r5, r0 + bl FUN_020ADA98 + movs r1, r0 + beq _020C0950 +_020C0930: + ldrb r2, [r4, #0x3d] + ldrb r0, [r1, #0x3d] + cmp r2, r0 + blo _020C0950 + mov r0, r5 + bl FUN_020ADA98 + movs r1, r0 + bne _020C0930 +_020C0950: + mov r0, r5 + mov r2, r4 + bl FUN_020ADB18 + str r5, [r4, #0x4] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C0968 +FUN_020C0968: ; 0x020C0968 + stmdb sp!, {r4,lr} + mov r4, r0 + mov r0, #0x0 + strb r0, [r4, #0x2e] + strb r0, [r4, #0x2d] + strb r0, [r4, #0x2f] + strh r0, [r4, #0x34] + strh r0, [r4, #0x3e] + mov r1, #0x7f + strb r1, [r4, #0x40] + add r0, r4, #0x1c + strb r1, [r4, #0x41] + bl FUN_020C3E6C + add r0, r4, #0x1c + mov r1, #0x7f00 + mov r2, #0x1 + bl FUN_020C3E40 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C09B0 +FUN_020C09B0: ; 0x020C09B0 + stmdb sp!, {r4-r6,lr} + ldr r3, _020C0A00 ; =0x021D2254 + mov r2, #0x24 + mla r5, r0, r2, r3 + mov r6, r1 + add r0, r5, #0xc + mov r1, #0x0 + bl FUN_020ADA98 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C09DC: ; 0x020C09DC + mov r1, r4 + add r0, r5, #0xc + bl FUN_020ADAB0 + str r6, [r4, #0xc] + str r4, [r6, #0x8] + ldr r0, [r4, #0x8] + bl FUN_020C29C0 + ldr r0, [r4, #0x8] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0A00: .word 0x021D2254 + + arm_func_start FUN_020C0A04 +FUN_020C0A04: ; 0x020C0A04 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + movs r5, r0 + mov r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020C0A1C: ; 0x020C0A1C + ldrb r0, [r5, #0x2e] + cmp r4, r0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020C0A2C: ; 0x020C0A2C + ldrb r0, [r5, #0x3c] + bl SND_PauseSeq + strb r4, [r5, #0x2e] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C0A40 +FUN_020C0A40: ; 0x020C0A40 + stmdb sp!, {r4,lr} + movs r4, r0 + mov r2, r1 + ldmeqia sp!, {r4,pc} +_020C0A50: ; 0x020C0A50 + ldrb r1, [r4, #0x2c] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} +_020C0A5C: ; 0x020C0A5C + cmp r2, #0x0 + bne _020C0A6C + bl FUN_020C087C + ldmia sp!, {r4,pc} +_020C0A6C: + add r0, r4, #0x1c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, r4 + mov r1, #0x0 + bl FUN_020C06CC + mov r0, #0x2 + strb r0, [r4, #0x2c] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C0A90 +FUN_020C0A90: ; 0x020C0A90 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldrb r0, [r5, #0x3c] + ldr r4, [r5, #0x4] + bl SND_PrepareSeq + ldr r2, [r4, #0x1c] + cmp r2, #0x0 + beq _020C0AC0 + ldrb r0, [r5, #0x3c] + ldr r1, _020C0AE4 ; =0x0000FFFF + bl SND_SetTrackAllocatableChannel +_020C0AC0: + mov r0, r5 + bl FUN_020C0968 + bl SND_GetCurrentCommandTag + str r0, [r5, #0x30] + mov r0, #0x1 + strb r0, [r5, #0x2f] + strb r0, [r5, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C0AE4: .word 0x0000FFFF + + arm_func_start thunk_FUN_020c077c +thunk_FUN_020c077c: ; 0x020C0AE8 + ldr ip, _020C0AF0 ; =FUN_020C077C + bx r12 + .balign 4 +_020C0AF0: .word FUN_020C077C + + arm_func_start FUN_020C0AF4 +FUN_020C0AF4: ; 0x020C0AF4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr ip, _020C0B9C ; =0x021D2254 + mov r3, #0x24 + mov r4, r0 + ldr r5, [r4, #0x0] + mla r6, r1, r3, r12 + mov r7, r2 + cmp r5, #0x0 + beq _020C0B20 + bl FUN_020C0F68 +_020C0B20: + ldrh r1, [r6, #0x8] + ldr r0, [r6, #0x18] + cmp r1, r0 + blo _020C0B64 + mov r0, r6 + mov r1, #0x0 + bl FUN_020ADA98 +_020C0B3C: ; 0x020C0B3C + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020C0B4C: ; 0x020C0B4C + ldrb r1, [r0, #0x3d] + cmp r7, r1 + addlt sp, sp, #0x4 + movlt r0, #0x0 + ldmltia sp!, {r4-r7,pc} +_020C0B60: ; 0x020C0B60 + bl FUN_020C087C +_020C0B64: + mov r0, r7 + bl FUN_020C0808 + movs r5, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020C0B7C: ; 0x020C0B7C + mov r0, r6 + mov r1, r5 + bl FUN_020C0910 + str r4, [r5, #0x0] + mov r0, r5 + str r5, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C0B9C: .word 0x021D2254 + + arm_func_start FUN_020C0BA0 +FUN_020C0BA0: ; 0x020C0BA0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + bl SND_GetPlayerStatus +_020C0BAC: ; 0x020C0BAC + str r0, [sp, #0x0] + ldr r0, _020C0D14 ; =0x021D1E08 + mov r1, #0x0 + bl FUN_020ADA98 + movs r10, r0 + addeq sp, sp, #0xc + ldmeqia sp!, {r4-r11,pc} +_020C0BC8: ; 0x020C0BC8 + mov r0, #0x8000 + rsb r0, r0, #0x0 + ldr r4, _020C0D18 ; =0x02103BAC + str r0, [sp, #0x4] + mov r5, #0x1 + mov r11, #0x0 +_020C0BE0: + ldr r0, _020C0D14 ; =0x021D1E08 + mov r1, r10 + bl FUN_020ADA98 + ldrb r1, [r10, #0x2d] + mov r9, r0 + cmp r1, #0x0 + bne _020C0C0C + ldr r0, [r10, #0x30] + bl SND_IsFinishedCommandTag +_020C0C04: ; 0x020C0C04 + cmp r0, #0x0 + strneb r5, [r10, #0x2d] +_020C0C0C: + ldrb r0, [r10, #0x2d] + cmp r0, #0x0 + beq _020C0C38 + ldrb r0, [r10, #0x3c] + mov r1, r5, lsl r0 + ldr r0, [sp, #0x0] + ands r0, r0, r1 + bne _020C0C38 + mov r0, r10 + bl FUN_020C077C + b _020C0D00 +_020C0C38: + add r0, r10, #0x1c + bl FUN_020C3DF4 + ldr r0, [r10, #0x4] + ldrb r2, [r10, #0x41] + ldrb r1, [r10, #0x40] + ldrb r0, [r0, #0x20] + mov r3, r2, lsl #0x1 + mov r2, r1, lsl #0x1 + mov r1, r0, lsl #0x1 + add r0, r10, #0x1c + ldrsh r8, [r4, r3] + ldrsh r7, [r4, r2] + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r2, r0, lsl #0x1 + add r1, r7, r8 + mov r0, #0x8000 + ldrsh r2, [r4, r2] + add r1, r6, r1 + rsb r0, r0, #0x0 + add r6, r2, r1 + cmp r6, r0 + ldrlt r6, [sp, #0x4] + blt _020C0CA8 + ldr r0, _020C0D1C ; =0x00007FFF + cmp r6, r0 + movgt r6, r0 +_020C0CA8: + ldrsh r0, [r10, #0x3e] + cmp r6, r0 + beq _020C0CC4 + ldrb r0, [r10, #0x3c] + mov r1, r6 + bl SND_SetPlayerVolume + strh r6, [r10, #0x3e] +_020C0CC4: + ldrb r0, [r10, #0x2c] + cmp r0, #0x2 + bne _020C0CE8 + add r0, r10, #0x1c + bl FUN_020C3DDC +_020C0CD8: ; 0x020C0CD8 + cmp r0, #0x0 + beq _020C0CE8 + mov r0, r10 + bl FUN_020C087C +_020C0CE8: + ldrb r0, [r10, #0x2f] + cmp r0, #0x0 + beq _020C0D00 + ldrb r0, [r10, #0x3c] + bl SND_StartPreparedSeq + strb r11, [r10, #0x2f] +_020C0D00: + mov r10, r9 + cmp r9, #0x0 + bne _020C0BE0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C0D14: .word 0x021D1E08 +_020C0D18: .word 0x02103BAC +_020C0D1C: .word 0x00007FFF + + arm_func_start FUN_020C0D20 +FUN_020C0D20: ; 0x020C0D20 + stmdb sp!, {r4-r10,lr} + ldr r0, _020C0DC4 ; =0x021D1E08 + mov r1, #0x14 + bl FUN_020ADC74 + ldr r0, _020C0DC8 ; =0x021D1DFC + mov r1, #0x14 + bl FUN_020ADC74 + ldr r6, _020C0DCC ; =0x021D1E14 + mov r7, #0x0 + ldr r4, _020C0DC8 ; =0x021D1DFC + mov r5, r7 +_020C0D4C: + strb r5, [r6, #0x2c] + mov r0, r4 + mov r1, r6 + strb r7, [r6, #0x3c] + bl FUN_020ADBE8 + add r7, r7, #0x1 + cmp r7, #0x10 + add r6, r6, #0x44 + blt _020C0D4C + ldr sl, _020C0DD0 ; =0x021D2254 + mov r9, #0x0 + mov r7, r9 + mov r4, r9 + mov r8, #0xc + mov r6, #0x7f + mov r5, #0x1 +_020C0D8C: + mov r0, r10 + mov r1, r8 + bl FUN_020ADC74 + mov r1, r7 + add r0, r10, #0xc + bl FUN_020ADC74 + strb r6, [r10, #0x20] + str r5, [r10, #0x18] + add r9, r9, #0x1 + str r4, [r10, #0x1c] + cmp r9, #0x20 + add r10, r10, #0x24 + blt _020C0D8C + ldmia sp!, {r4-r10,pc} + .balign 4 +_020C0DC4: .word 0x021D1E08 +_020C0DC8: .word 0x021D1DFC +_020C0DCC: .word 0x021D1E14 +_020C0DD0: .word 0x021D2254 + + arm_func_start FUN_020C0DD4 +FUN_020C0DD4: ; 0x020C0DD4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x2d] + cmp r0, #0x0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {pc} + ldrb r0, [r1, #0x3c] + bl SND_GetPlayerTickCounter + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0E14 +FUN_020C0E14: ; 0x020C0E14 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + mvneq r0, #0x0 + bxeq lr + ldrh r0, [r1, #0x34] + cmp r0, #0x1 + mvnne r0, #0x0 + ldreqh r0, [r1, #0x38] + bx lr + + arm_func_start FUN_020C0E38 +FUN_020C0E38: ; 0x020C0E38 + ldr r12, [r0, #0x0] + cmp r12, #0x0 + bxeq lr + mov r3, #0x2 + strh r3, [r12, #0x34] + ldr r3, [r0, #0x0] + strh r1, [r3, #0x38] + ldr r0, [r0, #0x0] + strh r2, [r0, #0x3a] + bx lr + + arm_func_start FUN_020C0E60 +FUN_020C0E60: ; 0x020C0E60 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + movne r2, #0x1 + strneh r2, [r3, #0x34] + ldrne r0, [r0, #0x0] + strneh r1, [r0, #0x38] + bx lr + + arm_func_start FUN_020C0E7C +FUN_020C0E7C: ; 0x020C0E7C + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPan + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0EA4 +FUN_020C0EA4: ; 0x020C0EA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetTrackPitch + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0ECC +FUN_020C0ECC: ; 0x020C0ECC + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r0, #0x3c] + bl SND_SetPlayerChannelPriority + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0EF4 +FUN_020C0EF4: ; 0x020C0EF4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, [r0, #0x0] + cmp r3, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldrb r0, [r3, #0x2c] + cmp r0, #0x2 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + add r0, r3, #0x1c + mov r1, r1, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C0F30 +FUN_020C0F30: ; 0x020C0F30 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x40] + bx lr + + arm_func_start FUN_020C0F40 +FUN_020C0F40: ; 0x020C0F40 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + strneb r1, [r0, #0x41] + bx lr + + arm_func_start FUN_020C0F50 +FUN_020C0F50: ; 0x020C0F50 + mov r1, #0x24 + mul r1, r0, r1 + ldr r0, _020C0F64 ; =0x021D225C + ldrh r0, [r0, r1] + bx lr + .balign 4 +_020C0F64: .word 0x021D225C + + arm_func_start FUN_020C0F68 +FUN_020C0F68: ; 0x020C0F68 + ldr r2, [r0, #0x0] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020C0F80 +FUN_020C0F80: ; 0x020C0F80 + mov r1, #0x0 + str r1, [r0, #0x0] + bx lr + + arm_func_start FUN_020C0F8C +FUN_020C0F8C: ; 0x020C0F8C + ldr ip, _020C0F98 ; =FUN_020C0A04 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C0F98: .word FUN_020C0A04 + + arm_func_start FUN_020C0F9C +FUN_020C0F9C: ; 0x020C0F9C + stmdb sp!, {r4-r6,lr} + ldr r4, _020C0FD8 ; =0x021D1E14 + mov r6, r0 + mov r5, #0x0 +_020C0FAC: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C0FC4 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C0FC4: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FAC + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C0FD8: .word 0x021D1E14 + + arm_func_start FUN_020C0FDC +FUN_020C0FDC: ; 0x020C0FDC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C103C ; =0x021D1E14 + mov r7, r0 + mov r6, r1 + mov r5, #0x0 +_020C0FF4: + ldrb r0, [r4, #0x2c] + cmp r0, #0x0 + beq _020C1024 + ldrh r0, [r4, #0x34] + cmp r0, #0x1 + bne _020C1024 + ldrh r0, [r4, #0x38] + cmp r0, r7 + bne _020C1024 + mov r0, r4 + mov r1, r6 + bl FUN_020C0A40 +_020C1024: + add r5, r5, #0x1 + cmp r5, #0x10 + add r4, r4, #0x44 + blt _020C0FF4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C103C: .word 0x021D1E14 + + arm_func_start FUN_020C1040 +FUN_020C1040: ; 0x020C1040 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r3, _020C109C ; =0x021D2254 + mov r2, #0x24 + mla r4, r0, r2, r3 + ldr r5, _020C10A0 ; =0x021D1E14 + mov r7, r1 + mov r6, #0x0 +_020C1060: + ldrb r0, [r5, #0x2c] + cmp r0, #0x0 + beq _020C1084 + ldr r0, [r5, #0x4] + cmp r0, r4 + bne _020C1084 + mov r0, r5 + mov r1, r7 + bl FUN_020C0A40 +_020C1084: + add r6, r6, #0x1 + cmp r6, #0x10 + add r5, r5, #0x44 + blt _020C1060 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C109C: .word 0x021D2254 +_020C10A0: .word 0x021D1E14 + + arm_func_start FUN_020C10A4 +FUN_020C10A4: ; 0x020C10A4 + ldr ip, _020C10B0 ; =FUN_020C0A40 + ldr r0, [r0, #0x0] + bx r12 + .balign 4 +_020C10B0: .word FUN_020C0A40 + + arm_func_start FUN_020C10B4 +FUN_020C10B4: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r5, r2 + mov r6, r0 + mov r0, r1 + mov r3, #0x0 + ldr r2, _020C1140 ; =FUN_020C072C + add r1, r5, #0x14 + str r3, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C10EC: ; 0x020C10EC + mov r2, #0x0 + str r2, [r4, #0xc] + str r6, [r4, #0x10] + mov r1, r5 + add r0, r4, #0x14 + str r2, [r4, #0x8] + bl FUN_020C2A94 +_020C1108: ; 0x020C1108 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C1118: ; 0x020C1118 + ldr r2, _020C1144 ; =0x021D2254 + mov r1, #0x24 + mla r2, r6, r1, r2 + str r0, [r4, #0x8] + mov r1, r4 + add r0, r2, #0xc + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C1140: .word FUN_020C072C +_020C1144: .word 0x021D2254 + + arm_func_start FUN_020C1148 +FUN_020C1148: ; 0x020C1148 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C115C ; =0x021D2270 + str r1, [r0, r2] + bx lr + .balign 4 +_020C115C: .word 0x021D2270 + + arm_func_start FUN_020C1160 +FUN_020C1160: ; 0x020C1160 + mov r2, #0x24 + mul r2, r0, r2 + mov r0, r1, lsl #0x10 + ldr r1, _020C117C ; =0x021D226C + mov r0, r0, lsr #0x10 + str r0, [r1, r2] + bx lr + .balign 4 +_020C117C: .word 0x021D226C + + arm_func_start FUN_020C1180 +FUN_020C1180: ; 0x020C1180 + mov r2, #0x24 + mul r2, r0, r2 + ldr r0, _020C1194 ; =0x021D2274 + strb r1, [r0, r2] + bx lr + .balign 4 +_020C1194: .word 0x021D2274 + + arm_func_start FUN_020C1198 +FUN_020C1198: ; 0x020C1198 + stmdb sp!, {r4-r6,lr} + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmeqia sp!, {r4-r6,pc} +_020C11B0: ; 0x020C11B0 + ldr r0, [r4, #0x38] + cmp r0, #0x0 + beq _020C11E8 + mov r5, #0x1 +_020C11C0: + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r4 + mov r1, r5 + bl FUN_020C1254 + mov r0, r6 + bl OS_RestoreInterrupts + ldr r0, [r4, #0x38] + cmp r0, #0x0 + bne _020C11C0 +_020C11E8: + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C1208 +FUN_020C1208: ; 0x020C1208 + stmdb sp!, {r4,lr} + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1e + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} +_020C121C: ; 0x020C121C + ldr r2, [r0, #0x40] + mov r3, #0x1 + mov r1, #0x0 + mov r2, r3, lsl r2 + ldr r0, [r0, #0x44] + mov r3, r1 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C1254 +FUN_020C1254: ; 0x020C1254 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r5, r0 + mov r4, r1 + ldr r0, [r5, #0x28] + ldr r1, [r5, #0x2c] + bl _u32_div_f + ldr r1, [r5, #0x48] + ldr r2, [r5, #0x38] + mov r3, r0 + mul lr, r3, r2 + cmp r1, #0x0 + mov r12, #0x0 + ble _020C12B8 + ldr r2, _020C1300 ; =0x021D2724 + ldr r0, _020C1304 ; =0x021D26E4 +_020C1294: + add r1, r5, r12 + ldrb r1, [r1, #0x4c] + ldr r1, [r2, r1, lsl #0x3] + add r1, r1, lr + str r1, [r0, r12, lsl #0x2] + ldr r1, [r5, #0x48] + add r12, r12, #0x1 + cmp r12, r1 + blt _020C1294 +_020C12B8: + ldr r0, [r5, #0x20] + ldr r2, _020C1304 ; =0x021D26E4 + str r0, [sp, #0x0] + ldr r12, [r5, #0x34] + mov r0, r4 + str r12, [sp, #0x4] + ldr r4, [r5, #0x30] + blx r4 + ldr r0, [r5, #0x38] + add r0, r0, #0x1 + str r0, [r5, #0x38] + ldr r1, [r5, #0x38] + ldr r0, [r5, #0x2c] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r5, #0x38] + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1300: .word 0x021D2724 +_020C1304: .word 0x021D26E4 + + arm_func_start FUN_020C1308 +FUN_020C1308: ; 0x020C1308 + ldr ip, _020C1314 ; =FUN_020C1254 + mov r1, #0x1 + bx r12 + .balign 4 +_020C1314: .word FUN_020C1254 + + arm_func_start FUN_020C1318 +FUN_020C1318: ; 0x020C1318 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + bl FUN_020C029C + ldr r0, _020C1344 ; =0x021D26D8 + mov r1, r4 + bl FUN_020ADAB0 + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C1344: .word 0x021D26D8 + + arm_func_start FUN_020C1348 +FUN_020C1348: ; 0x020C1348 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r0 + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C13B4 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StopTimer + add r0, r4, #0x8 + bl PM_DeletePreSleepCallback + add r0, r4, #0x14 + bl PM_DeletePostSleepCallback + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc +_020C13B4: + mov r0, r4 + bl FUN_020C1318 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C13C4 +FUN_020C13C4: ; 0x020C13C4 + stmdb sp!, {r4-r8,lr} + mov r7, r0 + str r1, [r7, #0x3c] + ldr r0, [r7, #0x48] + mov r5, #0x0 + cmp r0, #0x0 + ldmleia sp!, {r4-r8,pc} +_020C13E0: ; 0x020C13E0 + ldr r4, _020C142C ; =0x021D2724 + mov r8, #0x1 +_020C13E8: + add r0, r7, r5 + ldrb r6, [r0, #0x4c] + ldr r1, [r7, #0x3c] + add r0, r4, r6, lsl #0x3 + ldr r0, [r0, #0x4] + add r0, r1, r0 + bl SND_CalcChannelVolume + mov r2, r0 + mov r0, r8, lsl r6 + and r1, r2, #0xff + mov r2, r2, asr #0x8 + bl SND_SetChannelVolume + ldr r0, [r7, #0x48] + add r5, r5, #0x1 + cmp r5, r0 + blt _020C13E8 + ldmia sp!, {r4-r8,pc} + .balign 4 +_020C142C: .word 0x021D2724 + + arm_func_start FUN_020C1430 +FUN_020C1430: ; 0x020C1430 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x24] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + bl FUN_020C1348 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C1458 +FUN_020C1458: ; 0x020C1458 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x40] + mov r2, #0x1 + mov r1, #0x0 + mov r2, r2, lsl r0 + ldr r0, [r4, #0x44] + mov r3, r1 + bl SND_StartTimer + ldr r0, [r4, #0x24] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + ldmneia sp!, {r4,pc} +_020C148C: ; 0x020C148C + add r0, r4, #0x8 + bl PM_PrependPreSleepCallback + add r0, r4, #0x14 + bl PM_AppendPostSleepCallback + ldr r0, [r4, #0x24] + orr r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C14AC +FUN_020C14AC: ; 0x020C14AC + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x24 + mov r10, r0 + ldr r4, [r10, #0x24] + mov r9, r1 + mov r1, r4, lsl #0x1f + movs r1, r1, asr #0x1f + ldr r1, [sp, #0x4c] + str r2, [sp, #0x18] + mov r4, r3 + str r1, [sp, #0x4c] + beq _020C14E0 + bl FUN_020C1430 +_020C14E0: + ldr r0, [sp, #0x4c] + ldr r2, [r10, #0x48] + mov r0, r0, lsl #0x5 + mul r1, r2, r0 + mov r0, r4 + bl _u32_div_f + ldr r1, [sp, #0x4c] + ldr r2, [sp, #0x48] + mul r1, r0, r1 + mov r0, r1, lsl #0x5 + str r0, [r10, #0x28] + ldr r0, [r10, #0x28] + cmp r9, #0x1 + moveq r0, r0, lsr #0x1 + mul r0, r2, r0 + ldr r1, [sp, #0x4c] + bl _u32_div_f + str r0, [sp, #0x1c] + bl FUN_020C02BC + str r0, [r10, #0x40] + ldr r0, [r10, #0x40] + cmp r0, #0x0 + addlt sp, sp, #0x24 + movlt r0, #0x0 + ldmltia sp!, {r4-r11,pc} +_020C1544: ; 0x020C1544 + ldr r0, [r10, #0x48] + mov r8, #0x0 + cmp r0, #0x0 + ble _020C15D4 + ldr r0, [sp, #0x48] + mov r7, r0, lsl #0x5 + ldr r6, _020C1668 ; =0x021D2724 + mov r5, r8 + mov r4, #0x7f + mov r11, #0x40 + mov r0, #0x1 + str r0, [sp, #0x20] +_020C1574: + ldr r2, [r10, #0x28] + ldr r1, [sp, #0x18] + add r0, r10, r8 + mla r1, r2, r8, r1 + ldrb r0, [r0, #0x4c] + ldr r3, [sp, #0x20] + str r1, [r6, r0, lsl #0x3] + add r1, r6, r0, lsl #0x3 + str r5, [r1, #0x4] + str r5, [sp, #0x0] + ldr r2, [r10, #0x28] + mov r1, r9 + mov r2, r2, lsr #0x2 + str r2, [sp, #0x4] + str r4, [sp, #0x8] + str r5, [sp, #0xc] + str r7, [sp, #0x10] + str r11, [sp, #0x14] + ldr r2, [r6, r0, lsl #0x3] + bl SND_SetupChannelPcm + ldr r0, [r10, #0x48] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C1574 +_020C15D4: + str r10, [sp, #0x0] + ldr r1, [sp, #0x1c] + ldr r0, [r10, #0x40] + ldr r3, _020C166C ; =FUN_020C1308 + mov r2, r1 + bl SND_SetupAlarm + ldr r0, _020C1670 ; =0x021D26D8 + mov r1, r10 + bl FUN_020ADBE8 + ldr r0, [sp, #0x4c] + str r9, [r10, #0x20] + str r0, [r10, #0x2c] + ldr r1, [sp, #0x50] + ldr r0, [sp, #0x54] + str r1, [r10, #0x30] + str r0, [r10, #0x34] + mov r0, #0x0 + str r0, [r10, #0x38] + str r0, [r10, #0x3c] + ldr r0, [r10, #0x24] + bic r0, r0, #0x1 + orr r0, r0, #0x1 + str r0, [r10, #0x24] + bl OS_DisableInterrupts + mov r4, r0 + mov r2, #0x1 + mov r0, r10 + mov r1, #0x0 + str r2, [r10, #0x2c] + bl FUN_020C1254 + ldr r1, [sp, #0x4c] + mov r0, r4 + str r1, [r10, #0x2c] + bl OS_RestoreInterrupts + mov r0, #0x1 + add sp, sp, #0x24 + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1668: .word 0x021D2724 +_020C166C: .word FUN_020C1308 +_020C1670: .word 0x021D26D8 + + arm_func_start FUN_020C1674 +FUN_020C1674: ; 0x020C1674 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, [r4, #0x44] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C1688: ; 0x020C1688 + bl FUN_020C0340 +_020C168C: ; 0x020C168C + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C169C +FUN_020C169C: ; 0x020C169C + stmdb sp!, {r4-r6,lr} + mov r5, r1 + mov r4, #0x0 + mov r6, r0 + mov r12, r4 + cmp r5, #0x0 + ble _020C16DC + mov r1, #0x1 +_020C16BC: + ldrb r3, [r2, r12] + add r0, r6, r12 + strb r3, [r0, #0x4c] + ldrb r0, [r2, r12] + add r12, r12, #0x1 + cmp r12, r5 + orr r4, r4, r1, lsl r0 + blt _020C16BC +_020C16DC: + mov r0, r4 + bl FUN_020C0370 +_020C16E4: ; 0x020C16E4 + cmp r0, #0x0 + moveq r0, #0x0 + strne r5, [r6, #0x48] + strne r4, [r6, #0x44] + movne r0, #0x1 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C16FC +FUN_020C16FC: ; 0x020C16FC + stmdb sp!, {r4,lr} + ldr r1, _020C176C ; =0x021D26D4 + mov r4, r0 + ldr r0, [r1, #0x0] + cmp r0, #0x0 + bne _020C172C + ldr r0, _020C1770 ; =0x021D26D8 + mov r1, #0x0 + bl FUN_020ADC74 + ldr r0, _020C176C ; =0x021D26D4 + mov r1, #0x1 + str r1, [r0, #0x0] +_020C172C: + ldr r1, _020C1774 ; =FUN_020C1208 + ldr r0, _020C1778 ; =FUN_020C1198 + str r1, [r4, #0x8] + str r4, [r4, #0xc] + str r0, [r4, #0x14] + str r4, [r4, #0x18] + mov r0, #0x0 + str r0, [r4, #0x44] + str r0, [r4, #0x48] + ldr r0, [r4, #0x24] + bic r0, r0, #0x1 + str r0, [r4, #0x24] + ldr r0, [r4, #0x24] + bic r0, r0, #0x2 + str r0, [r4, #0x24] + ldmia sp!, {r4,pc} + .balign 4 +_020C176C: .word 0x021D26D4 +_020C1770: .word 0x021D26D8 +_020C1774: .word FUN_020C1208 +_020C1778: .word FUN_020C1198 + + arm_func_start FUN_020C177C +FUN_020C177C: ; 0x020C177C + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + ldr r4, [r7, #0x18] + ldr r0, [r7, #0x1c] + ldr r1, _020C186C ; =0x021D27A4 + mul r0, r4, r0 + ldr r3, [r7, #0xc] + ldr r2, [r7, #0x10] + ldr r1, [r1, #0x0] + add r6, r3, r0 + cmp r1, #0x0 + add r5, r2, r0 + beq _020C180C + ldr r2, _020C1870 ; =0x021D27A8 + mov r1, #0x14 + ldr r2, [r2, #0x0] + ldr r3, _020C1874 ; =0x021D2820 + mul r1, r2, r1 + str r7, [r3, r1] + add r1, r3, r1 + str r4, [r1, #0x4] + str r0, [r1, #0x8] + str r6, [r1, #0xc] + ldr r0, _020C1878 ; =0x021D27AC + mov r2, #0x0 + str r5, [r1, #0x10] + bl OS_SendMessage + ldr r0, _020C1870 ; =0x021D27A8 + ldr r1, [r0, #0x0] + add r1, r1, #0x1 + str r1, [r0, #0x0] + cmp r1, #0x8 + movge r1, #0x0 + strge r1, [r0, #0x0] + b _020C1844 +_020C180C: + mov r0, r6 + mov r1, r4 + bl DC_InvalidateRange + mov r0, r5 + mov r1, r4 + bl DC_InvalidateRange + ldr r1, [r7, #0x38] + mov r0, r6 + str r1, [sp, #0x0] + ldr r3, [r7, #0x8] + ldr r6, [r7, #0x34] + mov r1, r5 + mov r2, r4 + blx r6 +_020C1844: + ldr r0, [r7, #0x1c] + add r0, r0, #0x1 + str r0, [r7, #0x1c] + ldr r1, [r7, #0x1c] + ldr r0, [r7, #0x30] + cmp r1, r0 + movge r0, #0x0 + strge r0, [r7, #0x1c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C186C: .word 0x021D27A4 +_020C1870: .word 0x021D27A8 +_020C1874: .word 0x021D2820 +_020C1878: .word 0x021D27AC + + arm_func_start FUN_020C187C +FUN_020C187C: ; 0x020C187C + stmdb sp!, {r4,lr} + ldr r4, _020C18F4 ; =0x021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C1890: ; 0x020C1890 + mov r0, #0x0 + str r0, [r4, #0x1c] + ldr r1, [r4, #0xc] + ldr r2, [r4, #0x14] + bl MIi_CpuClear32 + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x14] + mov r0, #0x0 + bl MIi_CpuClear32 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + bl DC_FlushRange + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + movlt r2, #0x0 + bl SND_StartTimer + ldmia sp!, {r4,pc} + .balign 4 +_020C18F4: .word 0x021D27CC + + arm_func_start FUN_020C18F8 +FUN_020C18F8: + stmdb sp!, {r4,lr} + ldr r3, _020C194C ; =0x021D27CC + ldr r0, [r3, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C190C: ; 0x020C190C + ldr r1, [r3, #0x2c] + cmp r1, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r1 + ldr r0, [r3, #0x24] + ldr r1, [r3, #0x28] + movlt r2, #0x0 + mov r3, #0x0 + bl SND_StopTimer + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + .balign 4 +_020C194C: .word 0x021D27CC + + arm_func_start FUN_020C1950 +FUN_020C1950: ; 0x020C1950 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r4, _020C1A3C ; =0x021D27CC + ldr r0, [r4, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020C196C: ; 0x020C196C + ldr r1, [r4, #0x2c] + mov r3, #0x0 + cmp r1, #0x0 + movge r7, #0x1 + movlt r7, #0x0 + cmp r7, #0x0 + movne r0, #0x1 + movne r2, r0, lsl r1 + ldr r0, [r4, #0x24] + ldr r1, [r4, #0x28] + moveq r2, #0x0 + bl SND_StopTimer +_020C199C: ; 0x020C199C + cmp r7, #0x0 + beq _020C19DC + bl SND_GetCurrentCommandTag + mov r5, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r5 + bl SND_WaitForCommandProc + ldr r6, _020C1A40 ; =0x021D27AC + mov r5, #0x0 +_020C19C4: + mov r0, r6 + mov r1, r5 + mov r2, r5 + bl OS_ReceiveMessage +_020C19D4: ; 0x020C19D4 + cmp r0, #0x0 + bne _020C19C4 +_020C19DC: + ldr r0, [r4, #0x28] + cmp r0, #0x0 + beq _020C19EC + bl FUN_020C0300 +_020C19EC: + ldr r0, [r4, #0x20] + cmp r0, #0x0 + beq _020C19FC + bl FUN_020C0340 +_020C19FC: + cmp r7, #0x0 + beq _020C1A0C + ldr r0, [r4, #0x2c] + bl FUN_020C029C +_020C1A0C: + ldr r0, [r4, #0x4] + cmp r0, #0x1 + bne _020C1A2C + mov r0, #0x0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + bl SND_SetOutputSelector +_020C1A2C: + mov r0, #0x0 + str r0, [r4, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1A3C: .word 0x021D27CC +_020C1A40: .word 0x021D27AC + + arm_func_start FUN_020C1A44 +FUN_020C1A44: ; 0x020C1A44 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x3c + mov r10, r3 + str r0, [sp, #0x18] + str r2, [sp, #0x20] + mov r2, #0x0 + str r1, [sp, #0x1c] + mov r0, r1 + mov r1, r10 + ldr r9, [sp, #0x6c] + ldr r8, [sp, #0x74] + str r2, [sp, #0x2c] + mvn r6, #0x0 + ldr r4, _020C1D90 ; =0x021D27CC + bl DC_FlushRange + ldr r0, [sp, #0x20] + mov r1, r10 + bl DC_FlushRange + ldr r0, [sp, #0x60] + ldr r1, [sp, #0x70] + cmp r0, #0x1 + moveq r7, #0x1 + ldr r0, _020C1D94 ; =0x00FFB0FF + movne r7, #0x0 + bl _s32_div_f + ldr r1, [sp, #0x84] + mov r11, r0 + cmp r1, #0x0 + beq _020C1B00 + add r1, r11, #0x10 + bic r11, r1, #0x1f + mov r2, r11, asr #0x5 + mov r0, r10 + cmp r7, #0x0 + ldr r1, [sp, #0x80] + moveq r0, r10, lsr #0x1 + str r2, [sp, #0x34] + bl _u32_div_f + ldr r1, [sp, #0x34] + mov r5, #0x20 + mul r0, r1, r0 + str r0, [sp, #0x30] + cmp r7, #0x0 + ldr r0, [sp, #0x34] + moveq r5, r5, lsr #0x1 + mul r0, r5, r0 + mov r5, r0 +_020C1B00: + cmp r7, #0x0 + movne r0, #0x0 + strne r0, [sp, #0x28] + moveq r0, #0x1 + streq r0, [sp, #0x28] + cmp r7, #0x0 + movne r0, #0x1 + strne r0, [sp, #0x24] + moveq r0, #0x0 + streq r0, [sp, #0x24] + ldr r0, [sp, #0x18] + cmp r0, #0x2 + movne r0, #0xa + strne r0, [sp, #0x2c] + ldr r0, [sp, #0x84] + cmp r0, #0x0 + beq _020C1B58 + bl FUN_020C02BC + movs r6, r0 + addmi sp, sp, #0x3c + movmi r0, #0x0 + ldmmiia sp!, {r4-r11,pc} +_020C1B58: + mov r0, #0x3 + bl FUN_020C031C +_020C1B60: ; 0x020C1B60 + cmp r0, #0x0 + bne _020C1B84 + cmp r6, #0x0 + blt _020C1B78 + mov r0, r6 + bl FUN_020C029C +_020C1B78: + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1B84: + mov r0, #0xa + bl FUN_020C0370 +_020C1B8C: ; 0x020C1B8C + cmp r0, #0x0 + bne _020C1BB8 + cmp r6, #0x0 + blt _020C1BA4 + mov r0, r6 + bl FUN_020C029C +_020C1BA4: + mov r0, #0x3 + bl FUN_020C0300 + add sp, sp, #0x3c + mov r0, #0x0 + ldmia sp!, {r4-r11,pc} +_020C1BB8: + mov r0, #0x0 + mov r7, r10, lsr #0x2 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r1, [sp, #0x78] + str r11, [sp, #0x10] + str r1, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x1c] + moveq r3, #0x2 + mov r0, #0x1 + bl SND_SetupChannelPcm + ldr r1, [sp, #0x64] + str r9, [sp, #0x0] + str r1, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x1c] + mov r0, #0x0 + mov r3, r7 + bl SND_SetupCapture +_020C1C20: ; 0x020C1C20 + mov r0, #0x0 + str r0, [sp, #0x0] + str r7, [sp, #0x4] + str r8, [sp, #0x8] + str r0, [sp, #0xc] + cmp r9, #0x0 + movne r3, #0x1 + ldr r2, [sp, #0x7c] + str r11, [sp, #0x10] + str r2, [sp, #0x14] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x20] + moveq r3, #0x2 + mov r0, #0x3 + bl SND_SetupChannelPcm + ldr r2, [sp, #0x64] + str r9, [sp, #0x0] + str r2, [sp, #0x4] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x24] + str r0, [sp, #0x8] + ldr r2, [sp, #0x20] + mov r3, r7 + mov r0, #0x1 + bl SND_SetupCapture +_020C1C84: ; 0x020C1C84 + cmp r6, #0x0 + blt _020C1CA8 + ldr r2, [sp, #0x30] + ldr r3, _020C1D98 ; =FUN_020C177C + mov r1, r2 + mov r0, r6 + add r1, r1, r5 + str r4, [sp, #0x0] + bl SND_SetupAlarm +_020C1CA8: + ldr r0, [sp, #0x18] + cmp r0, #0x1 + bne _020C1CC8 + mov r0, #0x1 + mov r2, r0 + mov r3, r0 + mov r1, #0x2 + bl SND_SetOutputSelector +_020C1CC8: + cmp r6, #0x0 + movge r0, #0x1 + movge r2, r0, lsl r6 + ldr r0, [sp, #0x2c] + movlt r2, #0x0 + mov r1, #0x3 + mov r3, #0x0 + bl SND_StartTimer + mov r0, #0x1 + str r0, [r4, #0x0] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x80] + str r0, [r4, #0x4] + mov r0, #0xa + str r0, [r4, #0x20] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x24] + mov r0, #0x3 + str r0, [r4, #0x28] + ldr r0, [sp, #0x60] + str r6, [r4, #0x2c] + str r0, [r4, #0x8] + ldr r0, [sp, #0x1c] + str r0, [r4, #0xc] + ldr r0, [sp, #0x20] + str r0, [r4, #0x10] + mov r0, r10 + str r10, [r4, #0x14] + bl _u32_div_f + str r0, [r4, #0x18] + mov r1, #0x0 + str r1, [r4, #0x1c] + ldr r0, [sp, #0x80] + ldr r1, [sp, #0x84] + str r0, [r4, #0x30] + ldr r0, [sp, #0x88] + str r1, [r4, #0x34] + str r0, [r4, #0x38] + add r0, r4, #0x3c + str r8, [r4, #0x50] + bl FUN_020C3E6C + add r0, r4, #0x3c + mov r1, r8, lsl #0x8 + mov r2, #0x1 + bl FUN_020C3E40 +_020C1D7C: ; 0x020C1D7C + mov r0, #0x0 + str r0, [r4, #0x4c] + mov r0, #0x1 + add sp, sp, #0x3c + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C1D90: .word 0x021D27CC +_020C1D94: .word 0x00FFB0FF +_020C1D98: .word FUN_020C177C + + arm_func_start FUN_020C1D9C +FUN_020C1D9C: ; 0x020C1D9C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r5, _020C1E34 ; =0x021D27CC + ldr r0, [r5, #0x0] + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020C1DB8: ; 0x020C1DB8 + ldr r0, [r5, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r5,pc} +_020C1DC8: ; 0x020C1DC8 + add r4, r5, #0x3c + mov r0, r4 + bl FUN_020C3DF4 + ldr r0, [r5, #0x4c] + cmp r0, #0x0 + beq _020C1DFC + mov r0, r4 + bl FUN_020C3DDC +_020C1DE8: ; 0x020C1DE8 + cmp r0, #0x0 + beq _020C1DFC + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} +_020C1DFC: + mov r0, r4 + bl FUN_020C3E0C + ldr r1, [r5, #0x50] + mov r4, r0, asr #0x8 + cmp r4, r1 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r5,pc} +_020C1E18: ; 0x020C1E18 + ldr r0, [r5, #0x24] + mov r1, r4 + mov r2, #0x0 + bl SND_SetChannelVolume + str r4, [r5, #0x50] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C1E34: .word 0x021D27CC + + arm_func_start FUN_020C1E38 +FUN_020C1E38: ; 0x020C1E38 + ldr r1, _020C1E50 ; =0x021D27A4 + mov r2, #0x0 + ldr r0, _020C1E54 ; =0x021D27CC + str r2, [r1, #0x0] + str r2, [r0, #0x0] + bx lr + .balign 4 +_020C1E50: .word 0x021D27A4 +_020C1E54: .word 0x021D27CC + + arm_func_start FUN_020C1E58 +FUN_020C1E58: ; 0x020C1E58 + ldr r0, _020C1E64 ; =0x021D27CC + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C1E64: .word 0x021D27CC + + arm_func_start FUN_020C1E68 +FUN_020C1E68: ; 0x020C1E68 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r0, _020C1EA0 ; =0x021D27CC + ldr r1, [r0, #0x0] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r0, #0x4] + cmp r0, #0x1 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1950 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1EA0: .word 0x021D27CC + + arm_func_start FUN_020C1EA4 +FUN_020C1EA4: ; 0x020C1EA4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1E68 + ldr r0, _020C1F50 ; =0x021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} +_020C1ED8: ; 0x020C1ED8 + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r2, #0x0 + str r2, [sp, #0x4] + str r2, [sp, #0x8] + mov r0, #0x1 + str r0, [sp, #0xc] + str r6, [sp, #0x10] + mov r1, #0x7f + str r1, [sp, #0x14] + str r2, [sp, #0x18] + ldr r2, [sp, #0x40] + str r1, [sp, #0x1c] + ldr r1, [sp, #0x44] + str r2, [sp, #0x20] + ldr r12, [sp, #0x48] + str r1, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r12, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C1F50: .word 0x021D27CC + + arm_func_start FUN_020C1F54 +FUN_020C1F54: ; 0x020C1F54 + stmdb sp!, {r4,lr} + ldr r4, _020C1FA0 ; =0x021D27CC + mov r2, r0 + ldr r0, [r4, #0x0] + cmp r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C1F6C: ; 0x020C1F6C + ldr r0, [r4, #0x4] + cmp r0, #0x0 + ldmneia sp!, {r4,pc} +_020C1F78: ; 0x020C1F78 + cmp r2, #0x0 + bne _020C1F88 + bl FUN_020C1950 + ldmia sp!, {r4,pc} +_020C1F88: + add r0, r4, #0x3c + mov r1, #0x0 + bl FUN_020C3E40 + mov r0, #0x1 + str r0, [r4, #0x4c] + ldmia sp!, {r4,pc} + .balign 4 +_020C1FA0: .word 0x021D27CC + + arm_func_start FUN_020C1FA4 +FUN_020C1FA4: ; 0x020C1FA4 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r3, _020C1FEC ; =0x021D27CC + mov r12, r0 + ldr r0, [r3, #0x0] + mov r2, r1 + cmp r0, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + ldr r0, [r3, #0x4] + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + add r0, r3, #0x3c + mov r1, r12, lsl #0x8 + bl FUN_020C3E40 + add sp, sp, #0x4 + ldmia sp!, {pc} + .balign 4 +_020C1FEC: .word 0x021D27CC + + arm_func_start FUN_020C1FF0 +FUN_020C1FF0: ; 0x020C1FF0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x2c + mov r5, r0 + mov r0, #0x0 + mov r4, r1 + mov r7, r2 + mov r6, r3 + bl FUN_020C1F54 + ldr r0, _020C2098 ; =0x021D27CC + ldr r0, [r0, #0x0] + cmp r0, #0x0 + addne sp, sp, #0x2c + movne r0, #0x0 + ldmneia sp!, {r4-r7,pc} +_020C2028: ; 0x020C2028 + mov r1, r5 + mov r2, r4 + mov r0, #0x0 + bl MIi_CpuClear32 + mov r0, r5 + mov r1, r4 + bl DC_FlushRange + str r7, [sp, #0x0] + mov r0, #0x0 + str r0, [sp, #0x4] + str r0, [sp, #0x8] + mov r1, #0x1 + str r1, [sp, #0xc] + ldr r1, [sp, #0x40] + str r6, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x18] + mov r1, #0x7f + str r1, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + mov r1, r5 + mov r3, r4, lsr #0x1 + add r2, r5, r4, lsr #0x1 + str r0, [sp, #0x28] + bl FUN_020C1A44 + add sp, sp, #0x2c + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2098: .word 0x021D27CC + + arm_func_start FUN_020C209C +FUN_020C209C: ; 0x020C209C + mov r0, #0x0 + str r0, [r2, #0x88] + bx lr + + arm_func_start FUN_020C20A8 +FUN_020C20A8: ; 0x020C20A8 + mov r0, #0x0 + str r0, [r2, #0x84] + bx lr + + arm_func_start FUN_020C20B4 +FUN_020C20B4: ; 0x020C20B4 + mov r0, #0x0 + str r0, [r2, #0x8c] + bx lr + + arm_func_start FUN_020C20C0 +FUN_020C20C0: ; 0x020C20C0 + ldr r2, _020C20D8 ; =0x021D28C0 + ldr r2, [r2, #0x0] + ldr r2, [r2, #0x84] + add r0, r2, r0, lsl #0x4 + str r1, [r0, #0x14] + bx lr + .balign 4 +_020C20D8: .word 0x021D28C0 + + arm_func_start FUN_020C20DC +FUN_020C20DC: + ldr r1, _020C2100 ; =0x021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x14] + bx lr + .balign 4 +_020C2100: .word 0x021D28C0 + + arm_func_start FUN_020C2104 +FUN_020C2104: + stmdb sp!, {r4-r6,lr} + ldr r4, _020C2178 ; =0x021D28C0 + mov r5, r2 + ldr r4, [r4, #0x0] + mov r6, r1 + ldr r2, [r4, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + mvncs r0, #0x0 + ldmcsia sp!, {r4-r6,pc} +_020C212C: ; 0x020C212C + add r1, r2, #0xc + add r1, r1, r0, lsl #0x4 + ldr r0, [r1, #0x4] + ldr r1, [r1, #0x0] + sub r0, r0, r3 + cmp r5, r0 + movhi r5, r0 + add r0, r4, #0x34 + add r1, r1, r3 + mov r2, #0x0 + bl FS_SeekFile +_020C2158: ; 0x020C2158 + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C2164: ; 0x020C2164 + mov r1, r6 + mov r2, r5 + add r0, r4, #0x34 + bl FS_ReadFile + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2178: .word 0x021D28C0 + + arm_func_start FUN_020C217C +FUN_020C217C: ; 0x020C217C + ldr r1, _020C21A0 ; =0x021D28C0 + ldr r1, [r1, #0x0] + ldr r2, [r1, #0x84] + ldr r1, [r2, #0x8] + cmp r0, r1 + movcs r0, #0x0 + addcc r0, r2, r0, lsl #0x4 + ldrcc r0, [r0, #0x10] + bx lr + .balign 4 +_020C21A0: .word 0x021D28C0 + + arm_func_start FUN_020C21A4 +FUN_020C21A4: ; 0x020C21A4 + ldr r1, _020C2204 ; =0x021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x1c] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2204: .word 0x021D28C0 + + arm_func_start FUN_020C2208 +FUN_020C2208: ; 0x020C2208 + ldr r1, _020C2268 ; =0x021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x18] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2268: .word 0x021D28C0 + + arm_func_start FUN_020C226C +FUN_020C226C: + ldr r1, _020C22CC ; =0x021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x14] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C22CC: .word 0x021D28C0 + + arm_func_start FUN_020C22D0 +FUN_020C22D0: ; 0x020C22D0 + ldr r1, _020C2330 ; =0x021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x10] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2330: .word 0x021D28C0 + + arm_func_start FUN_020C2334 +FUN_020C2334: + ldr r1, _020C2394 ; =0x021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0xc] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C2394: .word 0x021D28C0 + + arm_func_start FUN_020C2398 +FUN_020C2398: + ldr r1, _020C23F8 ; =0x021D28C0 + ldr r3, [r1, #0x0] + ldr r2, [r3, #0x8c] + ldr r1, [r2, #0x8] + cmp r1, #0x0 + moveq r2, #0x0 + addne r2, r2, r1 + cmp r2, #0x0 + moveq r0, #0x0 + bxeq lr + cmp r0, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r1, [r2, #0x0] + cmp r0, r1 + movcs r0, #0x0 + bxcs lr + add r0, r2, r0, lsl #0x2 + ldr r1, [r0, #0x4] + ldr r0, [r3, #0x8c] + cmp r1, #0x0 + moveq r0, #0x0 + addne r0, r0, r1 + bx lr + .balign 4 +_020C23F8: .word 0x021D28C0 + + arm_func_start FUN_020C23FC +FUN_020C23FC: ; 0x020C23FC + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C2398 +_020C2408: ; 0x020C2408 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r0, #0x4 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C241C +FUN_020C241C: ; 0x020C241C + ldr r0, _020C2428 ; =0x021D28C0 + ldr r0, [r0, #0x0] + bx lr + .balign 4 +_020C2428: .word 0x021D28C0 + + arm_func_start FUN_020C242C +FUN_020C242C: ; 0x020C242C + ldr r1, _020C2440 ; =0x021D28C0 + ldr r2, [r1, #0x0] + str r0, [r1, #0x0] + mov r0, r2 + bx lr + .balign 4 +_020C2440: .word 0x021D28C0 + + arm_func_start FUN_020C2444 +FUN_020C2444: ; 0x020C2444 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + mov r0, r4 + mov r1, r5 + mov r2, #0x30 + bl MIi_CpuCopy32 + ldr r0, [r5, #0x18] + mov r12, #0x0 + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x8c] + ldr r0, [r5, #0x20] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x84] + ldr r0, [r5, #0x10] + cmp r0, #0x0 + moveq r0, #0x0 + addne r0, r4, r0 + str r0, [r5, #0x88] + ldr r2, [r5, #0x84] + ldr r0, [r2, #0x8] + cmp r0, #0x0 + bls _020C24F0 + mov r3, r12 + mov r1, r12 +_020C24BC: + add r2, r2, #0xc + ldr r0, [r2, r3] + add r2, r2, r3 + cmp r0, #0x0 + moveq r0, r1 + addne r0, r4, r0 + str r0, [r2, #0x8] + ldr r2, [r5, #0x84] + add r12, r12, #0x1 + ldr r0, [r2, #0x8] + add r3, r3, #0x10 + cmp r12, r0 + blo _020C24BC +_020C24F0: + mov r1, #0x0 + ldr r0, _020C2508 ; =0x021D28C0 + str r1, [r5, #0x30] + str r5, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C2508: .word 0x021D28C0 + + arm_func_start FUN_020C250C +FUN_020C250C: + stmdb sp!, {r4-r6,lr} + sub sp, sp, #0x8 + mov r6, r0 + mov r5, r1 + mov r1, #0x0 + mov r4, r2 + mov r2, r1 + add r0, r6, #0x34 + bl FS_SeekFile +_020C2530: ; 0x020C2530 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C2540: ; 0x020C2540 + mov r1, r6 + add r0, r6, #0x34 + mov r2, #0x30 + bl FS_ReadFile + cmp r0, #0x30 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} +_020C2560: ; 0x020C2560 + cmp r5, #0x0 + beq _020C26E0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x1c] + ldr r2, _020C26EC ; =FUN_020C20B4 + mov r0, r5 + mov r3, r6 + bl FUN_020C2958 + str r0, [r6, #0x8c] + ldr r0, [r6, #0x8c] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C259C: ; 0x020C259C + ldr r1, [r6, #0x18] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile +_020C25AC: ; 0x020C25AC + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C25BC: ; 0x020C25BC + ldr r1, [r6, #0x8c] + ldr r2, [r6, #0x1c] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x1c] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} +_020C25E0: ; 0x020C25E0 + mov r0, #0x0 + str r0, [sp, #0x0] + ldr r1, [r6, #0x24] + ldr r2, _020C26F0 ; =FUN_020C20A8 + mov r0, r5 + mov r3, r6 + bl FUN_020C2958 + str r0, [r6, #0x84] + ldr r0, [r6, #0x84] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C2614: ; 0x020C2614 + ldr r1, [r6, #0x20] + add r0, r6, #0x34 + mov r2, #0x0 + bl FS_SeekFile +_020C2624: ; 0x020C2624 + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C2634: ; 0x020C2634 + ldr r1, [r6, #0x84] + ldr r2, [r6, #0x24] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x24] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r6,pc} +_020C2658: ; 0x020C2658 + cmp r4, #0x0 + beq _020C26E0 + ldr r1, [r6, #0x14] + cmp r1, #0x0 + beq _020C26E0 + mov r4, #0x0 + ldr r2, _020C26F4 ; =FUN_020C209C + mov r0, r5 + mov r3, r6 + str r4, [sp, #0x0] + bl FUN_020C2958 + str r0, [r6, #0x88] + ldr r0, [r6, #0x88] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} +_020C269C: ; 0x020C269C + ldr r1, [r6, #0x10] + add r0, r6, #0x34 + mov r2, r4 + bl FS_SeekFile +_020C26AC: ; 0x020C26AC + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, r4 + ldmeqia sp!, {r4-r6,pc} +_020C26BC: ; 0x020C26BC + ldr r1, [r6, #0x88] + ldr r2, [r6, #0x14] + add r0, r6, #0x34 + bl FS_ReadFile + ldr r1, [r6, #0x14] + cmp r0, r1 + addne sp, sp, #0x8 + movne r0, r4 + ldmneia sp!, {r4-r6,pc} +_020C26E0: + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C26EC: .word FUN_020C20B4 +_020C26F0: .word FUN_020C20A8 +_020C26F4: .word FUN_020C209C + + arm_func_start FUN_020C26F8 +FUN_020C26F8: ; 0x020C26F8 + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r12, #0x0 + str r12, [r6, #0x8c] + str r12, [r6, #0x84] + add r0, r6, #0x7c + mov r5, r2 + mov r4, r3 + str r12, [r6, #0x88] + bl FS_ConvertPathToFileID +_020C2720: ; 0x020C2720 + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C2728: ; 0x020C2728 + add r0, r6, #0x34 + bl FS_InitFile + add r1, r6, #0x7c + add r0, r6, #0x34 + ldmia r1, {r1-r2} + bl FS_OpenFileFast +_020C2740: ; 0x020C2740 + cmp r0, #0x0 + ldmeqia sp!, {r4-r6,pc} +_020C2748: ; 0x020C2748 + mov r3, #0x1 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r3, [r6, #0x30] + bl FUN_020C250C +_020C2760: ; 0x020C2760 + cmp r0, #0x0 + ldrne r0, _020C2770 ; =0x021D28C0 + strne r6, [r0, #0x0] + ldmia sp!, {r4-r6,pc} + .balign 4 +_020C2770: .word 0x021D28C0 + + arm_func_start FUN_020C2774 +FUN_020C2774: ; 0x020C2774 + stmdb sp!, {r4,lr} + bl SND_GetCurrentCommandTag + mov r4, r0 + mov r0, #0x1 + bl SND_FlushCommand + mov r0, r4 + bl SND_WaitForCommandProc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2794 +FUN_020C2794: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + ldr r0, [r5, #0x0] + mov r1, #0x14 + mov r2, #0x4 + bl FUN_020AE638 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020C27C0: ; 0x020C27C0 + bl FUN_020C2818 + mov r1, r4 + add r0, r5, #0x4 + bl FUN_020ADBE8 + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C27DC +FUN_020C27DC: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + mov r4, r1 + add r0, r5, #0x4 + mov r1, #0xc + bl FUN_020ADC74 + mov r0, r5 + str r4, [r5, #0x0] + bl FUN_020C2794 +_020C2804: ; 0x020C2804 + cmp r0, #0x0 + movne r0, #0x1 + moveq r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2818 +FUN_020C2818: ; 0x020C2818 + ldr ip, _020C2824 ; =FUN_020ADC74 + mov r1, #0x0 + bx r12 + .balign 4 +_020C2824: .word FUN_020ADC74 + + arm_func_start FUN_020C2828 +FUN_020C2828: ; 0x020C2828 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + mov r7, #0x0 + movs r9, r1 + mov r10, r0 + mov r6, r7 + bne _020C2850 + bl FUN_020C29C0 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} +_020C2850: + ldrh r0, [r10, #0xc] + cmp r9, r0 + bge _020C28D8 + mov r11, r7 + add r5, r10, #0x4 + mov r4, #0x1 +_020C2868: + mov r0, r5 + mov r1, r11 + bl FUN_020ADA84 + mov r1, r7 + mov r8, r0 + bl FUN_020ADA84 + movs r7, r0 + beq _020C28C0 +_020C2888: + ldr r12, [r7, #0xc] + cmp r12, #0x0 + beq _020C28AC + ldr r1, [r7, #0x8] + ldr r2, [r7, #0x10] + ldr r3, [r7, #0x14] + add r0, r7, #0x20 + blx r12 + mov r6, r4 +_020C28AC: + mov r0, r8 + mov r1, r7 + bl FUN_020ADA84 + movs r7, r0 + bne _020C2888 +_020C28C0: + mov r0, r5 + mov r1, r8 + bl FUN_020ADAB0 + ldrh r0, [r10, #0xc] + cmp r9, r0 + blt _020C2868 +_020C28D8: + ldr r0, [r10, #0x0] + mov r1, r9 + bl FUN_020AE554 +_020C28E4: ; 0x020C28E4 + cmp r6, #0x0 + beq _020C28F0 + bl FUN_020C2774 +_020C28F0: + ldrh r1, [r10, #0xc] + ldr r0, [r10, #0x0] + bl FUN_020AE5B0 + mov r0, r10 + bl FUN_020C2794 + add sp, sp, #0x4 + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C290C +FUN_020C290C: ; 0x020C290C + stmdb sp!, {r4,lr} + mov r4, r0 + ldrh r1, [r4, #0xc] + ldr r0, [r4, #0x0] + bl FUN_020AE5B0 +_020C2920: ; 0x020C2920 + cmp r0, #0x0 + mvneq r0, #0x0 + ldmeqia sp!, {r4,pc} +_020C292C: ; 0x020C292C + mov r0, r4 + bl FUN_020C2794 +_020C2934: ; 0x020C2934 + cmp r0, #0x0 + ldrneh r0, [r4, #0xc] + subne r0, r0, #0x1 + ldmneia sp!, {r4,pc} +_020C2944: ; 0x020C2944 + ldr r0, [r4, #0x0] + mov r1, #0x0 + bl FUN_020AE554 +_020C2950: ; 0x020C2950 + mvn r0, #0x0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2958 +FUN_020C2958: ; 0x020C2958 + stmdb sp!, {r4-r8,lr} + mov r7, r1 + mov r8, r0 + add r0, r7, #0x1f + bic r1, r0, #0x1f + mov r6, r2 + ldr r0, [r8, #0x0] + add r1, r1, #0x20 + mov r2, #0x20 + mov r5, r3 + bl FUN_020AE638 + movs r4, r0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C2990: ; 0x020C2990 + add r0, r8, #0x4 + mov r1, #0x0 + bl FUN_020ADA84 + str r7, [r4, #0x8] + str r6, [r4, #0xc] + ldr r2, [sp, #0x18] + str r5, [r4, #0x10] + mov r1, r4 + str r2, [r4, #0x14] + bl FUN_020ADBE8 + add r0, r4, #0x20 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C29C0 +FUN_020C29C0: + stmdb sp!, {r4-r10,lr} + mov r8, r0 + mov r5, #0x0 + mov r1, r5 + add r0, r8, #0x4 + bl FUN_020ADA84 + movs r7, r0 + beq _020C2A58 + add r9, r8, #0x4 + mov r10, #0x1 + mov r4, r5 +_020C29EC: + mov r0, r7 + mov r1, r4 + bl FUN_020ADA84 + movs r6, r0 + beq _020C2A38 +_020C2A00: + ldr r12, [r6, #0xc] + cmp r12, #0x0 + beq _020C2A24 + ldr r1, [r6, #0x8] + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r6, #0x20 + blx r12 + mov r5, r10 +_020C2A24: + mov r0, r7 + mov r1, r6 + bl FUN_020ADA84 + movs r6, r0 + bne _020C2A00 +_020C2A38: + mov r0, r9 + mov r1, r7 + bl FUN_020ADAB0 + mov r0, r9 + mov r1, r4 + bl FUN_020ADA84 + movs r7, r0 + bne _020C29EC +_020C2A58: + ldr r0, [r8, #0x0] + mov r1, #0x3 + bl FUN_020AE600 +_020C2A64: ; 0x020C2A64 + cmp r5, #0x0 + beq _020C2A70 + bl FUN_020C2774 +_020C2A70: + mov r0, r8 + bl FUN_020C2794 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020C2A7C +FUN_020C2A7C: ; 0x020C2A7C + stmdb sp!, {r4,lr} + mov r4, r0 + bl FUN_020C29C0 +_020C2A88: ; 0x020C2A88 + ldr r0, [r4, #0x0] + bl thunk_FUN_020adc8c_2 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2A94 +FUN_020C2A94: + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + add r2, r0, #0x3 + add r0, r0, r1 + bic r5, r2, #0x3 + cmp r5, r0 + addhi sp, sp, #0x4 + movhi r0, #0x0 + ldmhiia sp!, {r4-r5,pc} +_020C2AB8: ; 0x020C2AB8 + sub r1, r0, r5 + cmp r1, #0x10 + addcc sp, sp, #0x4 + movcc r0, #0x0 + ldmccia sp!, {r4-r5,pc} +_020C2ACC: ; 0x020C2ACC + add r0, r5, #0x10 + sub r1, r1, #0x10 + mov r2, #0x0 + bl FUN_020AE684 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020C2AEC: ; 0x020C2AEC + mov r0, r5 + mov r1, r4 + bl FUN_020C27DC +_020C2AF8: ; 0x020C2AF8 + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, r5 + ldmneia sp!, {r4-r5,pc} +_020C2B08: ; 0x020C2B08 + mov r0, r4 + bl thunk_FUN_020adc8c_2 +_020C2B10: ; 0x020C2B10 + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2B1C +FUN_020C2B1C: + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x20 + mov r8, r0 + add r0, sp, #0x8 + mov r7, r1 + mov r6, r2 + mov r5, r3 + ldr r4, [sp, #0x40] + bl SND_GetFirstInstDataPos + ldr r1, [sp, #0x8] + ldr r0, [sp, #0xc] + str r1, [sp, #0x0] + str r0, [sp, #0x4] + cmp r7, #0x0 + add r2, sp, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020C2B64: ; 0x020C2B64 + add r1, sp, #0x10 + mov r0, r7 + bl SND_GetNextInstData +_020C2B70: ; 0x020C2B70 + cmp r0, #0x0 + beq _020C2BD4 + add r10, sp, #0x10 + add r9, sp, #0x0 +_020C2B80: + ldrb r0, [sp, #0x10] + cmp r0, #0x1 + bne _020C2BBC + ldrh r0, [sp, #0x14] + cmp r6, r0 + bne _020C2BBC + ldrh r1, [sp, #0x12] + mov r0, r8 + mov r2, r5 + mov r3, r4 + bl FUN_020C2BE0 +_020C2BAC: ; 0x020C2BAC + cmp r0, #0x0 + addeq sp, sp, #0x20 + moveq r0, #0x0 + ldmeqia sp!, {r4-r10,pc} +_020C2BBC: + mov r0, r7 + mov r1, r10 + mov r2, r9 + bl SND_GetNextInstData +_020C2BCC: ; 0x020C2BCC + cmp r0, #0x0 + bne _020C2B80 +_020C2BD4: + mov r0, #0x1 + add sp, sp, #0x20 + ldmia sp!, {r4-r10,pc} + + arm_func_start FUN_020C2BE0 +FUN_020C2BE0: + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl SND_GetWaveDataAddress +_020C2BFC: ; 0x020C2BFC + cmp r0, #0x0 + addne sp, sp, #0x4 + movne r0, #0x1 + ldmneia sp!, {r4-r9,pc} +_020C2C0C: ; 0x020C2C0C + mov r0, r7 + bl SND_GetWaveDataCount + ldr r1, [r7, #0x38] + sub r0, r0, #0x1 + add r1, r1, r6 + add r1, r7, r1, lsl #0x2 + cmp r6, r0 + ldrcc r0, [r1, #0x40] + ldr r8, [r1, #0x3c] + ldrcs r0, [r7, #0x8] + cmp r4, #0x0 + sub r9, r0, r8 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} +_020C2C48: ; 0x020C2C48 + ldr r2, _020C2CBC ; =FUN_020C2CC0 + mov r0, r4 + mov r3, r7 + add r1, r9, #0x20 + str r6, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} +_020C2C70: ; 0x020C2C70 + mov r0, r5 + mov r1, r4 + mov r2, r9 + mov r3, r8 + bl FUN_020C2104 +_020C2C84: ; 0x020C2C84 + cmp r9, r0 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} +_020C2C94: ; 0x020C2C94 + mov r0, r4 + mov r1, r9 + bl DC_StoreRange + mov r0, r7 + mov r1, r6 + mov r2, r4 + bl SND_SetWaveDataAddress + mov r0, #0x1 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2CBC: .word FUN_020C2CC0 + + arm_func_start FUN_020C2CC0 +FUN_020C2CC0: ; 0x020C2CC0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r5, r2 + mov r7, r0 + mov r4, r3 + mov r6, r1 + mov r0, r5 + mov r1, r4 + bl SND_GetWaveDataAddress +_020C2CE4: ; 0x020C2CE4 + cmp r7, r0 + bne _020C2CFC + mov r0, r5 + mov r1, r4 + mov r2, #0x0 + bl SND_SetWaveDataAddress +_020C2CFC: + mov r0, r7 + add r1, r7, r6 + bl SND_InvalidateWaveData + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C2D10 +FUN_020C2D10: ; 0x020C2D10 + stmdb sp!, {r4,lr} + mov r1, r2 + mov r4, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r4 + bl SND_DestroyWaveArc + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C2D30 +FUN_020C2D30: ; 0x020C2D30 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateWaveData + mov r0, r5 + bl SND_DestroyWaveArc + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2D68 +FUN_020C2D68: ; 0x020C2D68 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateBankData + mov r0, r5 + bl SND_DestroyBank + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2DA0 +FUN_020C2DA0: ; 0x020C2DA0 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r4, r1 + mov r1, r2 + mov r5, r0 + mov r2, r3 + bl FUN_020C2DD0 + mov r0, r5 + add r1, r5, r4 + bl SND_InvalidateSeqData + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C2DD0 +FUN_020C2DD0: ; 0x020C2DD0 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + movs r5, r1 + mov r7, r0 + mov r6, r2 + addeq sp, sp, #0x4 + ldmeqia sp!, {r4-r7,pc} +_020C2DEC: ; 0x020C2DEC + bl OS_DisableInterrupts + mov r4, r0 + mov r0, r5 + bl FUN_020C242C + mov r5, r0 + mov r0, r6 + bl FUN_020C20DC +_020C2E08: ; 0x020C2E08 + cmp r7, r0 + bne _020C2E1C + mov r0, r6 + mov r1, #0x0 + bl FUN_020C20C0 +_020C2E1C: + mov r0, r5 + bl FUN_020C242C + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C2E34 +FUN_020C2E34: ; 0x020C2E34 + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x4 + mov r9, r0 + mov r8, r1 + mov r7, r2 + bl FUN_020C20DC + movs r6, r0 + bne _020C2F40 + ldr r1, _020C2F4C ; =0x021D28C4 + mov r0, r9 + mov r2, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + cmp r0, #0x3c + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} +_020C2E78: ; 0x020C2E78 + ldr r0, _020C2F4C ; =0x021D28C4 + cmp r8, #0x0 + ldr r0, [r0, #0x38] + addeq sp, sp, #0x4 + mov r4, r0, lsl #0x2 + mov r0, r4, lsl #0x1 + add r5, r0, #0x3c + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} +_020C2E9C: ; 0x020C2E9C + cmp r7, #0x0 + moveq r3, #0x0 + beq _020C2EB0 + bl FUN_020C241C + mov r3, r0 +_020C2EB0: + ldr r2, _020C2F50 ; =FUN_020C2D10 + mov r0, r8 + add r1, r5, #0x20 + str r9, [sp, #0x0] + bl FUN_020C2958 + movs r6, r0 + addeq sp, sp, #0x4 + moveq r0, #0x0 + ldmeqia sp!, {r4-r9,pc} +_020C2ED4: ; 0x020C2ED4 + mov r0, r9 + mov r1, r6 + add r2, r4, #0x3c + mov r3, #0x0 + bl FUN_020C2104 + add r1, r4, #0x3c + cmp r0, r1 + addne sp, sp, #0x4 + movne r0, #0x0 + ldmneia sp!, {r4-r9,pc} +_020C2EFC: ; 0x020C2EFC + ldr r1, [r6, #0x38] + add r0, r6, #0x3c + mov r2, r4 + add r1, r0, r1, lsl #0x2 + bl MI_CpuCopy8 + mov r2, r4 + add r0, r6, #0x3c + mov r1, #0x0 + bl MI_CpuFill8 + mov r0, r6 + mov r1, r5 + bl DC_StoreRange +_020C2F2C: ; 0x020C2F2C + cmp r7, #0x0 + beq _020C2F40 + mov r0, r9 + mov r1, r6 + bl FUN_020C20C0 +_020C2F40: + mov r0, r6 + add sp, sp, #0x4 + ldmia sp!, {r4-r9,pc} + .balign 4 +_020C2F4C: .word 0x021D28C4 +_020C2F50: .word FUN_020C2D10 + + arm_func_start FUN_020C2F54 +FUN_020C2F54: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C2FBC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C2F88 + bl FUN_020C241C + mov r2, r0 +_020C2F88: + ldr r1, _020C2FC8 ; =FUN_020C2D30 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C2FBC + cmp r4, #0x0 + beq _020C2FBC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C2FBC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C2FC8: .word FUN_020C2D30 + + arm_func_start FUN_020C2FCC +FUN_020C2FCC: ; 0x020C2FCC + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3034 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3000 + bl FUN_020C241C + mov r2, r0 +_020C3000: + ldr r1, _020C3040 ; =FUN_020C2D68 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3034 + cmp r4, #0x0 + beq _020C3034 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3034: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3040: .word FUN_020C2D68 + + arm_func_start FUN_020C3044 +FUN_020C3044: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C30AC + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C3078 + bl FUN_020C241C + mov r2, r0 +_020C3078: + ldr r1, _020C30B8 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C30AC + cmp r4, #0x0 + beq _020C30AC + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C30AC: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C30B8: .word FUN_020C2DA0 + + arm_func_start FUN_020C30BC +FUN_020C30BC: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl FUN_020C20DC + movs r4, r0 + bne _020C3124 + cmp r5, #0x0 + moveq r2, #0x0 + beq _020C30F0 + bl FUN_020C241C + mov r2, r0 +_020C30F0: + ldr r1, _020C3130 ; =FUN_020C2DA0 + mov r0, r7 + mov r3, r7 + str r6, [sp, #0x0] + bl FUN_020C3134 + mov r4, r0 + cmp r5, #0x0 + beq _020C3124 + cmp r4, #0x0 + beq _020C3124 + mov r0, r7 + mov r1, r4 + bl FUN_020C20C0 +_020C3124: + mov r0, r4 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3130: .word FUN_020C2DA0 + + arm_func_start FUN_020C3134 +FUN_020C3134: ; 0x020C3134 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r4, r3 + bl FUN_020C217C + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C3160: ; 0x020C3160 + ldr r0, [sp, #0x20] + cmp r0, #0x0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C3174: ; 0x020C3174 + mov r2, r7 + mov r3, r6 + add r1, r5, #0x20 + str r4, [sp, #0x0] + bl FUN_020C2958 + movs r4, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C3198: ; 0x020C3198 + mov r0, r8 + mov r1, r4 + mov r2, r5 + mov r3, #0x0 + bl FUN_020C2104 +_020C31AC: ; 0x020C31AC + cmp r5, r0 + addne sp, sp, #0x8 + movne r0, #0x0 + ldmneia sp!, {r4-r8,pc} +_020C31BC: ; 0x020C31BC + mov r0, r4 + mov r1, r5 + bl DC_StoreRange + mov r0, r4 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C31D4 +FUN_020C31D4: + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C226C +_020C31E8: ; 0x020C31E8 + cmp r0, #0x0 + moveq r0, #0x5 + ldmeqia sp!, {r4-r6,pc} +_020C31F4: ; 0x020C31F4 + ands r1, r6, #0x4 + beq _020C324C + ldrb r1, [r0, #0x3] + ands r1, r1, #0x1 + beq _020C3224 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2E34 + b _020C323C +_020C3224: + ldr r0, [r0, #0x0] + mov r1, r5 + mov r0, r0, lsl #0x8 + mov r2, r4 + mov r0, r0, lsr #0x8 + bl FUN_020C2F54 +_020C323C: + cmp r0, #0x0 + bne _020C325C + mov r0, #0x9 + ldmia sp!, {r4-r6,pc} +_020C324C: + ldr r0, [r0, #0x0] + mov r0, r0, lsl #0x8 + mov r0, r0, lsr #0x8 + bl FUN_020C20DC +_020C325C: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C3270 +FUN_020C3270: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r10, r1 + mov r9, r2 + mov r11, r3 + bl FUN_020C22D0 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x4 + ldmeqia sp!, {r4-r11,pc} +_020C3298: ; 0x020C3298 + ands r0, r10, #0x2 + beq _020C32C4 + ldr r0, [r8, #0x0] + mov r1, r9 + mov r2, r11 + bl FUN_020C2FCC + movs r7, r0 + bne _020C32D0 + add sp, sp, #0xc + mov r0, #0x8 + ldmia sp!, {r4-r11,pc} +_020C32C4: + ldr r0, [r8, #0x0] + bl FUN_020C20DC + mov r7, r0 +_020C32D0: + and r5, r10, #0x4 + mov r6, #0x0 +_020C32D8: + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + ldr r1, _020C33B4 ; =0x0000FFFF + cmp r0, r1 + beq _020C3390 + bl FUN_020C226C + movs r4, r0 + addeq sp, sp, #0xc + moveq r0, #0x5 + ldmeqia sp!, {r4-r11,pc} +_020C3300: ; 0x020C3300 + add r0, sp, #0x4 + str r0, [sp, #0x0] + add r0, r8, r6, lsl #0x1 + ldrh r0, [r0, #0x4] + mov r1, r10 + mov r2, r9 + mov r3, r11 + bl FUN_020C31D4 +_020C3320: ; 0x020C3320 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} +_020C332C: ; 0x020C332C + ldrb r0, [r4, #0x3] + ands r0, r0, #0x1 + beq _020C3370 + cmp r5, #0x0 + beq _020C3370 + str r9, [sp, #0x0] + ldr r1, [r4, #0x0] + ldr r0, [sp, #0x4] + mov r3, r1, lsl #0x8 + mov r1, r7 + mov r2, r6 + mov r3, r3, lsr #0x8 + bl FUN_020C2B1C +_020C3360: ; 0x020C3360 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x9 + ldmeqia sp!, {r4-r11,pc} +_020C3370: + cmp r7, #0x0 + beq _020C3390 + ldr r2, [sp, #0x4] + cmp r2, #0x0 + beq _020C3390 + mov r0, r7 + mov r1, r6 + bl SND_AssignWaveArc +_020C3390: + add r6, r6, #0x1 + cmp r6, #0x4 + blt _020C32D8 + ldr r0, [sp, #0x30] + cmp r0, #0x0 + strne r7, [r0, #0x0] + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + .balign 4 +_020C33B4: .word 0x0000FFFF + + arm_func_start FUN_020C33B8 +FUN_020C33B8: + stmdb sp!, {r4-r6,lr} + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2334 +_020C33CC: ; 0x020C33CC + cmp r0, #0x0 + moveq r0, #0x3 + ldmeqia sp!, {r4-r6,pc} +_020C33D8: ; 0x020C33D8 + ands r1, r6, #0x8 + beq _020C3400 + ldr r0, [r0, #0x0] + mov r1, r5 + mov r2, r4 + bl FUN_020C3044 +_020C33F0: ; 0x020C33F0 + cmp r0, #0x0 + bne _020C3408 + mov r0, #0x7 + ldmia sp!, {r4-r6,pc} +_020C3400: + ldr r0, [r0, #0x0] + bl FUN_020C20DC +_020C3408: + ldr r1, [sp, #0x10] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C341C +FUN_020C341C: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl FUN_020C2398 + movs r4, r0 + addeq sp, sp, #0x4 + moveq r0, #0x2 + ldmeqia sp!, {r4-r7,pc} +_020C3444: ; 0x020C3444 + mov r0, #0x0 + str r0, [sp, #0x0] + ldrh r0, [r4, #0x4] + mov r1, r7 + mov r2, r6 + mov r3, r5 + bl FUN_020C3270 +_020C3460: ; 0x020C3460 + cmp r0, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {r4-r7,pc} +_020C346C: ; 0x020C346C + ands r0, r7, #0x1 + beq _020C3498 + ldr r0, [r4, #0x0] + mov r1, r6 + mov r2, r5 + bl FUN_020C30BC +_020C3484: ; 0x020C3484 + cmp r0, #0x0 + bne _020C34A0 + add sp, sp, #0x4 + mov r0, #0x6 + ldmia sp!, {r4-r7,pc} +_020C3498: + ldr r0, [r4, #0x0] + bl FUN_020C20DC +_020C34A0: + ldr r1, [sp, #0x18] + cmp r1, #0x0 + strne r0, [r1, #0x0] + mov r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C34B8 +FUN_020C34B8: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0xc + mov r9, r1 + bl FUN_020C21A4 + movs r8, r0 + addeq sp, sp, #0xc + moveq r0, #0x1 + ldmeqia sp!, {r4-r11,pc} +_020C34D8: ; 0x020C34D8 + ldr r0, [r8, #0x0] + mov r7, #0x0 + cmp r0, #0x0 + bls _020C35D4 + add r6, r8, #0x4 + str r7, [sp, #0x4] + mov r11, r7 + mov r10, r7 + mov r5, r7 + mov r4, #0x1 +_020C3500: + ldrb r0, [r6, #0x0] + cmp r0, #0x3 + addls pc, pc, r0, lsl #0x2 + b _020C35C0 +_020C3510: + b _020C3520 +_020C3514: + b _020C3570 +_020C3518: + b _020C3598 +_020C351C: + b _020C3548 +_020C3520: + str r5, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C341C +_020C3538: ; 0x020C3538 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3548: + str r10, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C33B8 +_020C3560: ; 0x020C3560 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3570: + str r11, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r2, r9 + mov r3, r4 + bl FUN_020C3270 +_020C3588: ; 0x020C3588 + cmp r0, #0x0 + beq _020C35C0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} +_020C3598: + ldr r0, [sp, #0x4] + mov r2, r9 + str r0, [sp, #0x0] + ldrb r1, [r6, #0x1] + ldr r0, [r6, #0x4] + mov r3, r4 + bl FUN_020C31D4 +_020C35B4: ; 0x020C35B4 + cmp r0, #0x0 + addne sp, sp, #0xc + ldmneia sp!, {r4-r11,pc} +_020C35C0: + ldr r0, [r8, #0x0] + add r7, r7, #0x1 + cmp r7, r0 + add r6, r6, #0x8 + blo _020C3500 +_020C35D4: + mov r0, #0x0 + add sp, sp, #0xc + ldmia sp!, {r4-r11,pc} + + arm_func_start FUN_020C35E0 +FUN_020C35E0: ; 0x020C35E0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r12, #0x0 + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C +_020C35F8: ; 0x020C35F8 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C360C +FUN_020C360C: ; 0x020C360C + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C31D4 +_020C362C: ; 0x020C362C + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3640 +FUN_020C3640: ; 0x020C3640 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C3270 +_020C3660: ; 0x020C3660 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3674 +FUN_020C3674: ; 0x020C3674 + stmdb sp!, {lr} + sub sp, sp, #0x4 + mov r2, r1 + mov r12, #0x0 + mov r1, #0xff + mov r3, #0x1 + str r12, [sp, #0x0] + bl FUN_020C341C +_020C3694: ; 0x020C3694 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C36A8 +FUN_020C36A8: ; 0x020C36A8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FUN_020C34B8 +_020C36B4: ; 0x020C36B4 + cmp r0, #0x0 + moveq r0, #0x1 + movne r0, #0x0 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C36C8 +FUN_020C36C8: ; 0x020C36C8 + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x8 + mov r7, r2 + mov r2, r3 + ldr r6, [sp, #0x20] + mov r4, r0 + mov r8, r1 + bl FUN_020C0AF4 + movs r5, r0 + addeq sp, sp, #0x8 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C36F8: ; 0x020C36F8 + mov r0, r8 + mov r1, r5 + bl FUN_020C09B0 + add r12, sp, #0x4 + mov r2, r0 + mov r0, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 +_020C3720: ; 0x020C3720 + cmp r0, #0x0 + beq _020C373C + mov r0, r5 + bl thunk_FUN_020c077c + add sp, sp, #0x8 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C373C: + ldr r12, [sp, #0x24] + ldr r2, [r6, #0x0] + ldr r1, [r12, #0x18] + ldr r3, [sp, #0x4] + mov r0, r5 + add r1, r12, r1 + bl FUN_020C0A90 + ldrb r1, [r6, #0x6] + mov r0, r4 + bl FUN_020C0F30 + ldrb r1, [r6, #0x7] + mov r0, r4 + bl FUN_020C0ECC + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + mov r0, r4 + bl FUN_020C0E38 + mov r0, #0x1 + add sp, sp, #0x8 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C378C +FUN_020C378C: ; 0x020C378C + stmdb sp!, {r4-r8,lr} + sub sp, sp, #0x10 + mov r8, r2 + mov r2, r3 + ldr r5, [sp, #0x28] + mov r6, r0 + mov r7, r1 + bl FUN_020C0AF4 + movs r4, r0 + addeq sp, sp, #0x10 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C37BC: ; 0x020C37BC + mov r0, r7 + mov r1, r4 + bl FUN_020C09B0 + mov r7, r0 + add r12, sp, #0x8 + mov r0, r8 + mov r2, r7 + mov r1, #0x6 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C3270 +_020C37E8: ; 0x020C37E8 + cmp r0, #0x0 + beq _020C3804 + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C3804: + ldr r0, [sp, #0x2c] + add r12, sp, #0x4 + mov r2, r7 + mov r1, #0x1 + mov r3, #0x0 + str r12, [sp, #0x0] + bl FUN_020C341C +_020C3820: ; 0x020C3820 + cmp r0, #0x0 + beq _020C383C + mov r0, r4 + bl thunk_FUN_020c077c + add sp, sp, #0x10 + mov r0, #0x0 + ldmia sp!, {r4-r8,pc} +_020C383C: + ldr r2, [sp, #0x4] + ldr r3, [sp, #0x8] + ldr r1, [r2, #0x18] + mov r0, r4 + add r1, r2, r1 + mov r2, #0x0 + bl FUN_020C0A90 + ldrb r1, [r5, #0x6] + mov r0, r6 + bl FUN_020C0F30 + ldrb r1, [r5, #0x7] + mov r0, r6 + bl FUN_020C0ECC + ldr r1, [sp, #0x2c] + mov r0, r6 + bl FUN_020C0E60 + mov r0, #0x1 + add sp, sp, #0x10 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3888 +FUN_020C3888: ; 0x020C3888 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x14 + mov r6, r1 + mov r7, r0 + mov r0, r6 + mov r5, r2 + bl FUN_020C2334 +_020C38A4: ; 0x020C38A4 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020C38B4: ; 0x020C38B4 + ldr r0, [r0, #0x0] + bl FUN_020C20DC + movs r4, r0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020C38CC: ; 0x020C38CC + mov r1, r5 + bl FUN_020C3D9C +_020C38D4: ; 0x020C38D4 + cmp r0, #0x0 + addeq sp, sp, #0x14 + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020C38E4: ; 0x020C38E4 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + str r6, [sp, #0x8] + str r5, [sp, #0xc] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r7 + bl FUN_020C36C8 + add sp, sp, #0x14 + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C3910 +FUN_020C3910: ; 0x020C3910 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [sp, #0x20] + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl FUN_020C2398 +_020C3930: ; 0x020C3930 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r7,pc} +_020C3940: ; 0x020C3940 + cmp r4, #0x0 + ldrltb r4, [r0, #0x8] + cmp r5, #0x0 + ldrlth r5, [r0, #0x4] + cmp r6, #0x0 + ldrltb r6, [r0, #0x9] + ldr r12, [sp, #0x20] + mov r2, r5 + str r0, [sp, #0x0] + mov r0, r7 + mov r1, r6 + mov r3, r4 + str r12, [sp, #0x4] + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r7,pc} + + arm_func_start FUN_020C3980 +FUN_020C3980: ; 0x020C3980 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0xc + mov r4, r1 + mov r5, r0 + mov r0, r4 + bl FUN_020C2398 +_020C3998: ; 0x020C3998 + cmp r0, #0x0 + addeq sp, sp, #0xc + moveq r0, #0x0 + ldmeqia sp!, {r4-r5,pc} +_020C39A8: ; 0x020C39A8 + str r0, [sp, #0x0] + str r4, [sp, #0x4] + ldrb r1, [r0, #0x9] + ldrh r2, [r0, #0x4] + ldrb r3, [r0, #0x8] + mov r0, r5 + bl FUN_020C378C + add sp, sp, #0xc + ldmia sp!, {r4-r5,pc} + + arm_func_start FUN_020C39CC +FUN_020C39CC: ; 0x020C39CC + stmdb sp!, {r4-r8,lr} + mov r6, r0 + bl FUN_020C241C + mov r5, #0x0 + mov r7, r5 +_020C39E0: + mov r0, r5 + bl FUN_020C2208 + movs r4, r0 + beq _020C3A58 + ldrb r1, [r4, #0x0] + mov r0, r5 + bl FUN_020C1160 + ldrh r1, [r4, #0x2] + mov r0, r5 + bl FUN_020C1148 + ldr r0, [r4, #0x4] + cmp r0, #0x0 + beq _020C3A58 + cmp r6, #0x0 + beq _020C3A58 + ldrb r0, [r4, #0x0] + mov r8, r7 + cmp r0, #0x0 + ble _020C3A58 +_020C3A2C: + ldr r2, [r4, #0x4] + mov r0, r5 + mov r1, r6 + bl FUN_020C10B4 +_020C3A3C: ; 0x020C3A3C + cmp r0, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4-r8,pc} +_020C3A48: ; 0x020C3A48 + ldrb r0, [r4, #0x0] + add r8, r8, #0x1 + cmp r8, r0 + blt _020C3A2C +_020C3A58: + add r5, r5, #0x1 + cmp r5, #0x20 + blt _020C39E0 + mov r0, #0x1 + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3A6C +FUN_020C3A6C: ; 0x020C3A6C + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + mov r5, r0 + bl OS_DisableInterrupts + mov r4, r0 + ldr r0, _020C3A9C ; =0x021D2904 + mov r1, r5 + bl FUN_020ADBE8 + mov r0, r4 + bl OS_RestoreInterrupts + add sp, sp, #0x4 + ldmia sp!, {r4-r5,pc} + .balign 4 +_020C3A9C: .word 0x021D2904 + + arm_func_start FUN_020C3AA0 +FUN_020C3AA0: ; 0x020C3AA0 + stmdb sp!, {r4-r8,lr} + mov r8, r0 + mov r7, r1 + bl OS_DisableInterrupts + mov r6, r0 + mov r0, r8 + mov r1, #0x0 + bl FUN_020ADA98 + movs r5, r0 + beq _020C3B04 +_020C3AC8: + mov r0, r8 + mov r1, r5 + bl FUN_020ADA98 + ldr r1, [r5, #0x8] + mov r4, r0 + cmp r1, r7 + bne _020C3AF8 + mov r0, r8 + mov r1, r5 + bl FUN_020ADAB0 + mov r0, r5 + bl FUN_020C3A6C +_020C3AF8: + mov r5, r4 + cmp r4, #0x0 + bne _020C3AC8 +_020C3B04: + mov r0, r6 + bl OS_RestoreInterrupts + ldmia sp!, {r4-r8,pc} + + arm_func_start FUN_020C3B10 +FUN_020C3B10: ; 0x020C3B10 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addeq sp, sp, #0x4 + ldmeqia sp!, {pc} + sub r1, r1, #0x1 + str r1, [r0, #0x120] + ldr r1, [r0, #0x120] + cmp r1, #0x0 + addne sp, sp, #0x4 + ldmneia sp!, {pc} + bl FUN_020C1674 + add sp, sp, #0x4 + ldmia sp!, {pc} + + arm_func_start FUN_020C3B4C +FUN_020C3B4C: ; 0x020C3B4C + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r1, [r4, #0x110] + mov r1, r1, lsl #0x1f + movs r1, r1, asr #0x1f + ldmeqia sp!, {r4,pc} +_020C3B64: ; 0x020C3B64 + bl FUN_020C3B10 + ldr r1, [r4, #0x164] + mov r0, r4 + blx r1 + ldr r0, _020C3BA8 ; =0x021D2DF0 + mov r1, r4 + bl FUN_020C3AA0 + ldr r0, _020C3BAC ; =0x021D2900 + ldr r0, [r0, #0x0] + cmp r0, #0x0 + beq _020C3B9C + mov r1, r4 + add r0, r0, #0x4e0 + bl FUN_020C3AA0 +_020C3B9C: + mov r0, r4 + bl FUN_020C3C4C + ldmia sp!, {r4,pc} + .balign 4 +_020C3BA8: .word 0x021D2DF0 +_020C3BAC: .word 0x021D2900 + + arm_func_start FUN_020C3BB0 +FUN_020C3BB0: ; 0x020C3BB0 + stmdb sp!, {r4,lr} + mov r4, r0 + ldr r0, _020C3C40 ; =0x021D2DD8 + bl OS_LockMutex + ldr r0, _020C3C44 ; =0x021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + beq _020C3BDC + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_LockMutex +_020C3BDC: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3BF4 + mov r0, r4 + bl FUN_020C1430 +_020C3BF4: + ldr r0, [r4, #0x110] + mov r0, r0, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3C10 + ldr r1, [r4, #0x16c] + mov r0, r4 + blx r1 +_020C3C10: + mov r0, r4 + bl FUN_020C3B4C + ldr r0, _020C3C40 ; =0x021D2DD8 + bl OS_UnlockMutex + ldr r0, _020C3C44 ; =0x021D2900 + ldr r1, [r0, #0x0] + cmp r1, #0x0 + ldmeqia sp!, {r4,pc} +_020C3C30: ; 0x020C3C30 + ldr r0, _020C3C48 ; =0x000004C8 + add r0, r1, r0 + bl OS_UnlockMutex + ldmia sp!, {r4,pc} + .balign 4 +_020C3C40: .word 0x021D2DD8 +_020C3C44: .word 0x021D2900 +_020C3C48: .word 0x000004C8 + + arm_func_start FUN_020C3C4C +FUN_020C3C4C: ; 0x020C3C4C + ldr r2, [r0, #0x14c] + cmp r2, #0x0 + movne r1, #0x0 + strne r1, [r2, #0x0] + strne r1, [r0, #0x14c] + ldr r1, [r0, #0x110] + bic r1, r1, #0x1 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x4 + str r1, [r0, #0x110] + ldr r1, [r0, #0x110] + bic r1, r1, #0x2 + str r1, [r0, #0x110] + bx lr + + arm_func_start FUN_020C3C88 +FUN_020C3C88: + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + ldr r5, _020C3D94 ; =0x021D2DFC + mov r7, #0x0 + ldr r4, _020C3D98 ; =0x02103BAC +_020C3C9C: + ldr r1, [r5, #0x110] + mov r0, r1, lsl #0x1f + movs r0, r0, asr #0x1f + beq _020C3D7C + ldr r0, [r5, #0x114] + cmp r0, #0x0 + bne _020C3CC4 + mov r0, r5 + bl FUN_020C3BB0 + b _020C3D7C +_020C3CC4: + mov r0, r1, lsl #0x1d + movs r0, r0, asr #0x1f + beq _020C3CFC + ldr r0, [r5, #0x118] + cmp r0, #0x0 + beq _020C3CFC + mov r0, r5 + bl FUN_020C1458 + ldr r0, [r5, #0x110] + orr r0, r0, #0x2 + str r0, [r5, #0x110] + ldr r0, [r5, #0x110] + bic r0, r0, #0x4 + str r0, [r5, #0x110] +_020C3CFC: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1e + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DF4 + ldr r1, [r5, #0x154] + add r0, r5, #0xe8 + mov r1, r1, lsl #0x1 + ldrsh r6, [r4, r1] + bl FUN_020C3E0C + mov r0, r0, asr #0x8 + mov r0, r0, lsl #0x1 + ldrsh r1, [r4, r0] + ldr r0, [r5, #0x158] + add r6, r1, r6 + cmp r6, r0 + beq _020C3D54 + mov r0, r5 + mov r1, r6 + bl FUN_020C13C4 + str r6, [r5, #0x158] +_020C3D54: + ldr r0, [r5, #0x110] + mov r0, r0, lsl #0x1c + movs r0, r0, asr #0x1f + beq _020C3D7C + add r0, r5, #0xe8 + bl FUN_020C3DDC +_020C3D6C: ; 0x020C3D6C + cmp r0, #0x0 + beq _020C3D7C + mov r0, r5 + bl FUN_020C3BB0 +_020C3D7C: + add r7, r7, #0x1 + cmp r7, #0x4 + add r5, r5, #0x170 + blt _020C3C9C + add sp, sp, #0x4 + ldmia sp!, {r4-r7,pc} + .balign 4 +_020C3D94: .word 0x021D2DFC +_020C3D98: .word 0x02103BAC + + arm_func_start FUN_020C3D9C +FUN_020C3D9C: + cmp r1, #0x0 + movlt r0, #0x0 + bxlt lr + ldr r2, [r0, #0x1c] + cmp r1, r2 + movcs r0, #0x0 + bxcs lr + mov r2, #0xc + mul r2, r1, r2 + add r3, r0, #0x20 + ldr r1, [r3, r2] + mvn r0, #0x0 + cmp r1, r0 + add r0, r3, r2 + moveq r0, #0x0 + bx lr + + arm_func_start FUN_020C3DDC +FUN_020C3DDC: + ldr r1, [r0, #0x8] + ldr r0, [r0, #0xc] + cmp r1, r0 + movge r0, #0x1 + movlt r0, #0x0 + bx lr + + arm_func_start FUN_020C3DF4 +FUN_020C3DF4: ; 0x020C3DF4 + ldr r2, [r0, #0x8] + ldr r1, [r0, #0xc] + cmp r2, r1 + addlt r1, r2, #0x1 + strlt r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020C3E0C +FUN_020C3E0C: + stmdb sp!, {r4,lr} + ldr r1, [r0, #0xc] + ldr r2, [r0, #0x8] + cmp r2, r1 + ldrge r0, [r0, #0x4] + ldmgeia sp!, {r4,pc} +_020C3E24: ; 0x020C3E24 + ldr r4, [r0, #0x0] + ldr r0, [r0, #0x4] + sub r0, r0, r4 + mul r0, r2, r0 + bl _s32_div_f +_020C3E38: ; 0x020C3E38 + add r0, r4, r0 + ldmia sp!, {r4,pc} + + arm_func_start FUN_020C3E40 +FUN_020C3E40: + stmdb sp!, {r4-r6,lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl FUN_020C3E0C +_020C3E54: ; 0x020C3E54 + str r0, [r6, #0x0] + str r5, [r6, #0x4] + str r4, [r6, #0xc] + mov r0, #0x0 + str r0, [r6, #0x8] + ldmia sp!, {r4-r6,pc} + + arm_func_start FUN_020C3E6C +FUN_020C3E6C: ; 0x020C3E6C + mov r2, #0x0 + str r2, [r0, #0x4] + ldr r1, [r0, #0x4] + str r1, [r0, #0x0] + str r2, [r0, #0xc] + ldr r1, [r0, #0xc] + str r1, [r0, #0x8] + bx lr + + arm_func_start FUN_020C3E8C +FUN_020C3E8C: ; 0x020C3E8C + mov r1, #0x0 + mov r2, #0x1000 + mov r3, #0x0 + stmia r0!, {r2-r3} + stmia r0!, {r1-r2} + bx lr + + thumb_func_start FUN_020C3EA4 +FUN_020C3EA4: ; 0x020C3EA4 + str r2, [r0, #0x0] + str r1, [r0, #0x4] + neg r1, r1 + str r1, [r0, #0x8] + str r2, [r0, #0xc] + bx lr + + arm_func_start FUN_020C3EB0 +FUN_020C3EB0: ; 0x020C3EB0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr r12, [r0, #0x0] + smull lr, r12, r2, r12 + mov lr, lr, lsr #0xc + orr lr, lr, r12, lsl #0x14 + str lr, [r1, #0x0] + ldr r12, [r0, #0x4] + smull lr, r12, r2, r12 + mov r2, lr, lsr #0xc + orr r2, r2, r12, lsl #0x14 + str r2, [r1, #0x4] + ldr r2, [r0, #0x8] + smull r12, r2, r3, r2 + mov r12, r12, lsr #0xc + orr r12, r12, r2, lsl #0x14 + str r12, [r1, #0x8] + ldr r0, [r0, #0xc] + smull r2, r0, r3, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [r1, #0xc] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start MTX_Identity33_ +MTX_Identity33_: ; 0x020C3F14 + mov r2, #0x1000 + str r2, [r0, #0x20] + mov r3, #0x0 + stmia r0!, {r2-r3} + mov r1, #0x0 + stmia r0!, {r1,r3} + stmia r0!, {r2-r3} + stmia r0!, {r1,r3} + bx lr + + thumb_func_start MTX_RotX33_ +MTX_RotX33_: ; 0x020C3F38 + mov r3, #0x1 + lsl r3, r3, #0xc + str r3, [r0, #0x0] + mov r3, #0x0 + str r3, [r0, #0x4] + str r3, [r0, #0x8] + str r3, [r0, #0xc] + str r2, [r0, #0x10] + str r1, [r0, #0x14] + str r3, [r0, #0x18] + neg r1, r1 + str r1, [r0, #0x1c] + str r2, [r0, #0x20] + bx lr + + thumb_func_start MTX_RotY33_ +MTX_RotY33_: ; 0x020C3F54 + str r2, [r0, #0x0] + str r2, [r0, #0x20] + mov r3, #0x0 + str r3, [r0, #0x4] + str r3, [r0, #0xc] + str r3, [r0, #0x14] + str r3, [r0, #0x1c] + neg r2, r1 + mov r3, #0x1 + lsl r3, r3, #0xc + str r1, [r0, #0x18] + str r2, [r0, #0x8] + str r3, [r0, #0x10] + bx lr + + thumb_func_start MTX_RotZ33_ +MTX_RotZ33_: ; 0x020C3F70 + stmia r0!, {r2} + mov r3, #0x0 + stmia r0!, {r1,r3} + neg r1, r1 + stmia r0!, {r1-r2} + mov r1, #0x1 + lsl r1, r1, #0xc + str r3, [r0, #0x0] + str r3, [r0, #0x4] + str r3, [r0, #0x8] + str r1, [r0, #0xc] + bx lr + + arm_func_start MTX_MultVec33 +MTX_MultVec33: ; 0x020C3F88 + stmdb sp!, {r4-r6,lr} + ldr r12, [r0, #0x4] + ldr r4, [r1, #0xc] + ldr r3, [r0, #0x0] + smull r6, r5, r12, r4 + ldr r4, [r1, #0x0] + ldr r0, [r0, #0x8] + smlal r6, r5, r3, r4 + ldr r4, [r1, #0x18] + smlal r6, r5, r0, r4 + mov r4, r6, lsr #0xc + orr r4, r4, r5, lsl #0x14 + str r4, [r2, #0x0] + ldr r4, [r1, #0x10] + ldr r5, [r1, #0x4] + smull r6, lr, r12, r4 + smlal r6, lr, r3, r5 + ldr r4, [r1, #0x1c] + smlal r6, lr, r0, r4 + mov r4, r6, lsr #0xc + orr r4, r4, lr, lsl #0x14 + str r4, [r2, #0x4] + ldr lr, [r1, #0x14] + ldr r4, [r1, #0x8] + smull r5, lr, r12, lr + smlal r5, lr, r3, r4 + ldr r1, [r1, #0x20] + smlal r5, lr, r0, r1 + mov r0, r5, lsr #0xc + orr r0, r0, lr, lsl #0x14 + str r0, [r2, #0x8] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start MTX_Concat33 +MTX_Concat33: ; 0x020C400C + stmdb sp!, {r4-r9,lr} + sub sp, sp, #0x24 + ldr r5, [r0, #0x4] + ldr r3, [r1, #0xc] + mov r12, r2 + smull r8, r7, r5, r3 + ldr r6, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r8, r7, r6, r3 + ldr r4, [r0, #0x8] + ldr r3, [r1, #0x18] + addeq r2, sp, #0x0 + smlal r8, r7, r4, r3 + mov r3, r8, lsr #0xc + orr r3, r3, r7, lsl #0x14 + str r3, [r2, #0x0] + ldr r3, [r1, #0x10] + ldr r7, [r1, #0x4] + smull r9, r8, r5, r3 + smlal r9, r8, r6, r7 + ldr r3, [r1, #0x1c] + add lr, sp, #0x0 + smlal r9, r8, r4, r3 + mov r3, r9, lsr #0xc + orr r3, r3, r8, lsl #0x14 + str r3, [r2, #0x4] + ldr r3, [r1, #0x14] + ldr r7, [r1, #0x8] + smull r9, r8, r5, r3 + smlal r9, r8, r6, r7 + ldr r6, [r1, #0x20] + cmp r2, lr + smlal r9, r8, r4, r6 + mov r4, r9, lsr #0xc + orr r4, r4, r8, lsl #0x14 + str r4, [r2, #0x8] + ldr r4, [r0, #0x10] + ldr r5, [r0, #0xc] + smull r9, r8, r4, r3 + smlal r9, r8, r5, r7 + ldr r3, [r0, #0x14] + addne sp, sp, #0x24 + smlal r9, r8, r3, r6 + mov r6, r9, lsr #0xc + orr r6, r6, r8, lsl #0x14 + str r6, [r2, #0x14] + ldr r6, [r1, #0x10] + ldr r7, [r1, #0x4] + smull r9, r8, r4, r6 + smlal r9, r8, r5, r7 + ldr r6, [r1, #0x1c] + smlal r9, r8, r3, r6 + mov r6, r9, lsr #0xc + orr r6, r6, r8, lsl #0x14 + str r6, [r2, #0x10] + ldr r7, [r1, #0xc] + ldr r6, [r1, #0x0] + smull r9, r8, r4, r7 + smlal r9, r8, r5, r6 + ldr r5, [r1, #0x18] + smlal r9, r8, r3, r5 + mov r3, r9, lsr #0xc + orr r3, r3, r8, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x1c] + ldr r3, [r0, #0x18] + smull r8, r7, r4, r7 + smlal r8, r7, r3, r6 + ldr r0, [r0, #0x20] + smlal r8, r7, r0, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + str r5, [r2, #0x18] + ldr r5, [r1, #0x10] + ldr r6, [r1, #0x4] + smull r8, r5, r4, r5 + smlal r8, r5, r3, r6 + ldr r7, [r1, #0x1c] + smlal r8, r5, r0, r7 + mov r6, r8, lsr #0xc + orr r6, r6, r5, lsl #0x14 + str r6, [r2, #0x1c] + ldr r6, [r1, #0x20] + ldr r5, [r1, #0x8] + ldr r1, [r1, #0x14] + smull r7, r1, r4, r1 + smlal r7, r1, r3, r5 + smlal r7, r1, r0, r6 + mov r0, r7, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [r2, #0x20] + ldmneia sp!, {r4-r9,lr} + bxne lr + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldr r0, [lr, #0x0] + str r0, [r12, #0x0] + add sp, sp, #0x24 + ldmia sp!, {r4-r9,lr} + bx lr + + arm_func_start MTX_ScaleApply33 +MTX_ScaleApply33: ; 0x020C41A8 + stmdb sp!, {r4,lr} + ldr r4, [r0, #0x0] + ldr r12, [sp, #0x8] + smull lr, r4, r2, r4 + mov lr, lr, lsr #0xc + orr lr, lr, r4, lsl #0x14 + str lr, [r1, #0x0] + ldr r4, [r0, #0x4] + smull lr, r4, r2, r4 + mov lr, lr, lsr #0xc + orr lr, lr, r4, lsl #0x14 + str lr, [r1, #0x4] + ldr lr, [r0, #0x8] + smull r4, lr, r2, lr + mov r2, r4, lsr #0xc + orr r2, r2, lr, lsl #0x14 + str r2, [r1, #0x8] + ldr r2, [r0, #0xc] + smull lr, r2, r3, r2 + mov lr, lr, lsr #0xc + orr lr, lr, r2, lsl #0x14 + str lr, [r1, #0xc] + ldr r2, [r0, #0x10] + smull lr, r2, r3, r2 + mov lr, lr, lsr #0xc + orr lr, lr, r2, lsl #0x14 + str lr, [r1, #0x10] + ldr r2, [r0, #0x14] + smull lr, r2, r3, r2 + mov r3, lr, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [r1, #0x14] + ldr r2, [r0, #0x18] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [r1, #0x18] + ldr r2, [r0, #0x1c] + smull r3, r2, r12, r2 + mov r3, r3, lsr #0xc + orr r3, r3, r2, lsl #0x14 + str r3, [r1, #0x1c] + ldr r0, [r0, #0x20] + smull r2, r0, r12, r0 + mov r2, r2, lsr #0xc + orr r2, r2, r0, lsl #0x14 + str r2, [r1, #0x20] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start MTX_Identity43_ +MTX_Identity43_: ; 0x020C426C + mov r2, #0x1000 + mov r3, #0x0 + stmia r0!, {r2-r3} + mov r1, #0x0 + stmia r0!, {r1,r3} + stmia r0!, {r2-r3} + stmia r0!, {r1,r3} + stmia r0!, {r2-r3} + stmia r0!, {r1,r3} + bx lr + + arm_func_start MTX_Copy43To44_ +MTX_Copy43To44_: ; 0x020C4294 + stmdb sp!, {r4} + mov r12, #0x0 + ldmia r0!, {r2-r4} + stmia r1!, {r2-r4,r12} + ldmia r0!, {r2-r4} + stmia r1!, {r2-r4,r12} + ldmia r0!, {r2-r4} + stmia r1!, {r2-r4,r12} + mov r12, #0x1000 + ldmia r0!, {r2-r4} + stmia r1!, {r2-r4,r12} + ldmia sp!, {r4} + bx lr + + thumb_func_start MTX_Scale43_ +MTX_Scale43_: ; 0x020C42C8 + stmia r0!, {r1} + mov r1, #0x0 + str r3, [r0, #0x1c] + mov r3, #0x0 + stmia r0!, {r1,r3} + stmia r0!, {r1-r3} + mov r2, #0x0 + stmia r0!, {r1,r3} + add r0, #0x4 + stmia r0!, {r1-r3} + bx lr + .balign 4 + + thumb_func_start MTX_RotX43_ +MTX_RotX43_: ; 0x020C42E0 + str r1, [r0, #0x14] + neg r1, r1 + str r1, [r0, #0x1c] + mov r1, #0x1 + lsl r1, r1, #0xc + stmia r0!, {r1} + mov r3, #0x0 + mov r1, #0x0 + stmia r0!, {r1,r3} + stmia r0!, {r1-r2} + str r1, [r0, #0x4] + add r0, #0xc + stmia r0!, {r2-r3} + stmia r0!, {r1,r3} + bx lr + .balign 4 + + thumb_func_start MTX_RotY43_ +MTX_RotY43_: ; 0x020C4300 + str r1, [r0, #0x18] + mov r3, #0x0 + stmia r0!, {r2-r3} + neg r1, r1 + stmia r0!, {r1,r3} + mov r1, #0x1 + lsl r1, r1, #0xc + stmia r0!, {r1,r3} + add r0, #0x4 + mov r1, #0x0 + stmia r0!, {r1-r3} + stmia r0!, {r1,r3} + bx lr + .balign 4 + + arm_func_start MTX_MultVec43 +MTX_MultVec43: ; 0x020C431C + stmdb sp!, {r4-r6,lr} + ldr r12, [r0, #0x4] + ldr r4, [r1, #0xc] + ldr r3, [r0, #0x0] + smull r6, r5, r12, r4 + ldr r4, [r1, #0x0] + ldr r0, [r0, #0x8] + smlal r6, r5, r3, r4 + ldr r4, [r1, #0x18] + smlal r6, r5, r0, r4 + mov r4, r6, lsr #0xc + orr r4, r4, r5, lsl #0x14 + str r4, [r2, #0x0] + ldr r5, [r2, #0x0] + ldr r4, [r1, #0x24] + add r4, r5, r4 + str r4, [r2, #0x0] + ldr r4, [r1, #0x10] + ldr r5, [r1, #0x4] + smull r6, lr, r12, r4 + smlal r6, lr, r3, r5 + ldr r4, [r1, #0x1c] + smlal r6, lr, r0, r4 + mov r4, r6, lsr #0xc + orr r4, r4, lr, lsl #0x14 + str r4, [r2, #0x4] + ldr r5, [r2, #0x4] + ldr r4, [r1, #0x28] + add r4, r5, r4 + str r4, [r2, #0x4] + ldr lr, [r1, #0x14] + ldr r4, [r1, #0x8] + smull r5, lr, r12, lr + smlal r5, lr, r3, r4 + ldr r3, [r1, #0x20] + smlal r5, lr, r0, r3 + mov r0, r5, lsr #0xc + orr r0, r0, lr, lsl #0x14 + str r0, [r2, #0x8] + ldr r3, [r2, #0x8] + ldr r0, [r1, #0x2c] + add r0, r3, r0 + str r0, [r2, #0x8] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start MTX_Concat43 +MTX_Concat43: ; 0x020C43D0 + stmdb sp!, {r4-r10,lr} + sub sp, sp, #0x30 + ldr r5, [r0, #0x4] + ldr r3, [r1, #0xc] + mov r12, r2 + smull r8, r7, r5, r3 + ldr r6, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r8, r7, r6, r3 + ldr r4, [r0, #0x8] + ldr r3, [r1, #0x18] + addeq r2, sp, #0x0 + smlal r8, r7, r4, r3 + mov r3, r8, lsr #0xc + orr r3, r3, r7, lsl #0x14 + str r3, [r2, #0x0] + ldr r3, [r1, #0x10] + ldr r7, [r1, #0x4] + smull r9, r8, r5, r3 + smlal r9, r8, r6, r7 + ldr r3, [r1, #0x1c] + add lr, sp, #0x0 + smlal r9, r8, r4, r3 + mov r3, r9, lsr #0xc + orr r3, r3, r8, lsl #0x14 + str r3, [r2, #0x4] + ldr r3, [r1, #0x14] + ldr r7, [r1, #0x8] + smull r9, r8, r5, r3 + smlal r9, r8, r6, r7 + ldr r6, [r1, #0x20] + smlal r9, r8, r4, r6 + mov r4, r9, lsr #0xc + orr r4, r4, r8, lsl #0x14 + str r4, [r2, #0x8] + ldr r4, [r0, #0x10] + ldr r5, [r0, #0xc] + smull r9, r8, r4, r3 + smlal r9, r8, r5, r7 + ldr r3, [r0, #0x14] + smlal r9, r8, r3, r6 + mov r6, r9, lsr #0xc + orr r6, r6, r8, lsl #0x14 + str r6, [r2, #0x14] + ldr r6, [r1, #0x10] + ldr r7, [r1, #0x4] + smull r9, r8, r4, r6 + smlal r9, r8, r5, r7 + ldr r6, [r1, #0x1c] + smlal r9, r8, r3, r6 + mov r6, r9, lsr #0xc + orr r6, r6, r8, lsl #0x14 + str r6, [r2, #0x10] + ldr r7, [r1, #0xc] + ldr r8, [r1, #0x0] + smull r10, r9, r4, r7 + smlal r10, r9, r5, r8 + ldr r6, [r1, #0x18] + smlal r10, r9, r3, r6 + mov r3, r10, lsr #0xc + orr r3, r3, r9, lsl #0x14 + str r3, [r2, #0xc] + ldr r4, [r0, #0x1c] + ldr r5, [r0, #0x18] + smull r9, r7, r4, r7 + smlal r9, r7, r5, r8 + ldr r3, [r0, #0x20] + smlal r9, r7, r3, r6 + mov r6, r9, lsr #0xc + orr r6, r6, r7, lsl #0x14 + str r6, [r2, #0x18] + ldr r6, [r1, #0x10] + ldr r7, [r1, #0x4] + smull r9, r6, r4, r6 + smlal r9, r6, r5, r7 + ldr r8, [r1, #0x1c] + smlal r9, r6, r3, r8 + mov r7, r9, lsr #0xc + orr r7, r7, r6, lsl #0x14 + str r7, [r2, #0x1c] + ldr r7, [r1, #0x14] + ldr r6, [r1, #0x8] + smull r9, r8, r4, r7 + smlal r9, r8, r5, r6 + ldr r5, [r1, #0x20] + smlal r9, r8, r3, r5 + mov r3, r9, lsr #0xc + orr r3, r3, r8, lsl #0x14 + str r3, [r2, #0x20] + ldr r4, [r0, #0x28] + ldr r3, [r0, #0x24] + smull r8, r7, r4, r7 + smlal r8, r7, r3, r6 + ldr r0, [r0, #0x2c] + ldr r6, [r1, #0x2c] + smlal r8, r7, r0, r5 + mov r5, r8, lsr #0xc + orr r5, r5, r7, lsl #0x14 + adds r5, r6, r5 + str r5, [r2, #0x2c] + ldr r5, [r1, #0x10] + ldr r6, [r1, #0x4] + smull r8, r5, r4, r5 + smlal r8, r5, r3, r6 + ldr r7, [r1, #0x1c] + ldr r9, [r1, #0x28] + smlal r8, r5, r0, r7 + mov r6, r8, lsr #0xc + orr r6, r6, r5, lsl #0x14 + adds r5, r9, r6 + str r5, [r2, #0x28] + ldr r8, [r1, #0x24] + ldr r6, [r1, #0x18] + ldr r5, [r1, #0x0] + ldr r1, [r1, #0xc] + smull r7, r1, r4, r1 + smlal r7, r1, r3, r5 + smlal r7, r1, r0, r6 + mov r0, r7, lsr #0xc + orr r0, r0, r1, lsl #0x14 + adds r0, r8, r0 + cmp r2, lr + str r0, [r2, #0x24] + addne sp, sp, #0x30 + ldmneia sp!, {r4-r10,lr} + bxne lr + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr, {r0-r3} + stmia r12, {r0-r3} + add sp, sp, #0x30 + ldmia sp!, {r4-r10,lr} + bx lr + + arm_func_start MTX_Inverse43 +MTX_Inverse43: ; 0x020C45F0 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x5c + mov r10, r0 + ldr r11, [r10, #0x14] + cmp r10, r1 + addeq r9, sp, #0x2c + ldr r3, [r10, #0x18] + ldr r2, [r10, #0xc] + ldr r8, [r10, #0x20] + str r1, [sp, #0x0] + movne r9, r1 + smull r7, r5, r2, r8 + smull r6, r1, r11, r3 + ldr r4, [r10, #0x1c] + subs r12, r7, r6 + ldr r0, [r10, #0x10] + smull r6, lr, r11, r4 + sbc r11, r5, r1 + smull r5, r4, r2, r4 + mov r1, #0x800 + smull r8, r7, r0, r8 + smull r3, r2, r0, r3 + adds r12, r12, r1 + adc r0, r11, #0x0 + subs r8, r8, r6 + sbc r6, r7, lr + adds r7, r8, r1 + adc r11, r6, #0x0 + mov r7, r7, lsr #0xc + mov r8, r12, lsr #0xc + orr r7, r7, r11, lsl #0x14 + orr r8, r8, r0, lsl #0x14 + subs r0, r5, r3 + sbc r12, r4, r2 + ldr r6, [r10, #0x4] + ldr r11, [r10, #0x0] + smull r3, r2, r6, r8 + adds r0, r0, r1 + smull r5, r4, r11, r7 + adc r11, r12, #0x0 + mov r6, r0, lsr #0xc + subs r3, r5, r3 + ldr r0, [r10, #0x8] + orr r6, r6, r11, lsl #0x14 + sbc r2, r4, r2 + smlal r3, r2, r0, r6 + adds r0, r3, r1 + mov r1, r8, asr #0x1f + str r1, [sp, #0x4] + mov r1, r7, asr #0x1f + str r1, [sp, #0x8] + mov r1, r6, asr #0x1f + adc r2, r2, #0x0 + mov r0, r0, lsr #0xc + orrs r0, r0, r2, lsl #0x14 + str r1, [sp, #0xc] + addeq sp, sp, #0x5c + mvneq r0, #0x0 + ldmeqia sp!, {r4-r11,lr} + bxeq lr + bl FX_InvAsync + ldr r1, [r10, #0x8] + ldr r2, [r10, #0x1c] + ldr r11, [r10, #0x10] + smull r0, r4, r2, r1 + smull r3, r2, r11, r1 + ldr r5, [r10, #0x18] + str r2, [sp, #0x18] + str r3, [sp, #0x14] + smull r3, r2, r5, r1 + str r2, [sp, #0x20] + ldr r2, [r10, #0x20] + ldr lr, [r10, #0x4] + str r2, [sp, #0x10] + ldr r5, [sp, #0x10] + str r3, [sp, #0x1c] + smull r12, r5, lr, r5 + subs r0, r12, r0 + ldr r2, [r10, #0xc] + sbc r4, r5, r4 + smull r1, r5, r2, r1 + str r5, [sp, #0x28] + mov r5, r0, lsr #0xc + ldr r11, [r10, #0x14] + orr r5, r5, r4, lsl #0x14 + smull r4, r2, lr, r11 + ldr r0, [sp, #0x14] + ldr r3, [r10, #0x0] + subs r4, r4, r0 + ldr r0, [sp, #0x18] + mov r4, r4, lsr #0xc + sbc r0, r2, r0 + orr r4, r4, r0, lsl #0x14 + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x1c] + smull r12, r0, r3, r0 + subs r2, r12, r2 + ldr r12, [sp, #0x20] + sbc r0, r0, r12 + smull r12, r11, r3, r11 + ldr r3, [sp, #0x28] + subs r1, r12, r1 + sbc r3, r11, r3 + mov r11, r2, lsr #0xc + orr r11, r11, r0, lsl #0x14 + mov r0, r1, lsr #0xc + str r0, [sp, #0x24] + orr r0, r0, r3, lsl #0x14 + str r0, [sp, #0x24] + bl FX_GetDivResult + smull r2, r1, r0, r5 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + rsb lr, r2, #0x0 + smull r2, r1, r0, r4 + mov r4, r2, lsr #0xc + orr r4, r4, r1, lsl #0x14 + smull r2, r1, r0, r11 + mov r3, r2, lsr #0xc + orr r3, r3, r1, lsl #0x14 + ldr r1, [sp, #0x24] + umull r11, r5, r0, r7 + smull r2, r1, r0, r1 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + ldr r1, [sp, #0x8] + mov r12, r0, asr #0x1f + mla r5, r0, r1, r5 + mla r5, r12, r7, r5 + mov r1, r11, lsr #0xc + orr r1, r1, r5, lsl #0x14 + str r1, [r9, #0x0] + str lr, [r9, #0x4] + str r4, [r9, #0x8] + ldr r1, [sp, #0x4] + umull r5, r4, r0, r8 + mla r4, r0, r1, r4 + mla r4, r12, r8, r4 + mov r1, r5, lsr #0xc + orr r1, r1, r4, lsl #0x14 + rsb r1, r1, #0x0 + str r1, [r9, #0xc] + ldr r1, [sp, #0xc] + rsb r2, r2, #0x0 + str r3, [r9, #0x10] + str r2, [r9, #0x14] + umull r3, r2, r0, r6 + mla r2, r0, r1, r2 + mla r2, r12, r6, r2 + mov r1, r3, lsr #0xc + orr r1, r1, r2, lsl #0x14 + str r1, [r9, #0x18] + ldr r3, [r10, #0x0] + ldr r1, [r10, #0x1c] + ldr r2, [r10, #0x18] + smull r5, r4, r3, r1 + ldr r1, [r10, #0x4] + smull r3, r1, r2, r1 + subs r2, r5, r3 + sbc r1, r4, r1 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + smull r2, r1, r0, r2 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + rsb r1, r2, #0x0 + str r1, [r9, #0x1c] + ldr r3, [r10, #0x0] + ldr r1, [r10, #0x10] + ldr r2, [r10, #0xc] + smull r5, r4, r3, r1 + ldr r1, [r10, #0x4] + smull r3, r1, r2, r1 + subs r2, r5, r3 + sbc r1, r4, r1 + mov r2, r2, lsr #0xc + orr r2, r2, r1, lsl #0x14 + smull r2, r1, r0, r2 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [r9, #0x20] + add r0, sp, #0x2c + ldr r2, [r9, #0xc] + ldr r1, [r10, #0x28] + ldr r4, [r9, #0x0] + smull r7, r1, r2, r1 + ldr r3, [r10, #0x24] + ldr r6, [r9, #0x18] + smlal r7, r1, r4, r3 + ldr r5, [r10, #0x2c] + cmp r9, r0 + smlal r7, r1, r6, r5 + mov r2, r7, lsr #0xc + orr r2, r2, r1, lsl #0x14 + rsb r1, r2, #0x0 + str r1, [r9, #0x24] + ldr r2, [r9, #0x10] + ldr r1, [r10, #0x28] + ldr r4, [r9, #0x4] + smull r7, r1, r2, r1 + ldr r3, [r10, #0x24] + ldr r6, [r9, #0x1c] + smlal r7, r1, r4, r3 + ldr r5, [r10, #0x2c] + smlal r7, r1, r6, r5 + mov r2, r7, lsr #0xc + orr r2, r2, r1, lsl #0x14 + rsb r1, r2, #0x0 + str r1, [r9, #0x28] + ldr r1, [r10, #0x28] + ldr r2, [r9, #0x14] + ldr r4, [r9, #0x8] + smull r7, r1, r2, r1 + ldr r3, [r10, #0x24] + ldr r6, [r9, #0x20] + smlal r7, r1, r4, r3 + ldr r5, [r10, #0x2c] + smlal r7, r1, r6, r5 + mov r2, r7, lsr #0xc + orr r2, r2, r1, lsl #0x14 + rsb r1, r2, #0x0 + str r1, [r9, #0x2c] + bne _020C4974 + ldr r1, [sp, #0x0] + bl MI_Copy48B +_020C4974: + mov r0, #0x0 + add sp, sp, #0x5c + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start MTX_ScaleApply43 +MTX_ScaleApply43: ; 0x020C4984 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldr r12, [sp, #0x10] + mov r5, r0 + str r12, [sp, #0x0] + mov r4, r1 + bl MTX_ScaleApply33 + ldr r0, [r5, #0x24] + str r0, [r4, #0x24] + ldr r0, [r5, #0x28] + str r0, [r4, #0x28] + ldr r0, [r5, #0x2c] + str r0, [r4, #0x2c] + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start MTX_Identity44_ +MTX_Identity44_: ; 0x020C49C4 + mov r2, #0x1000 + mov r3, #0x0 + stmia r0!, {r2-r3} + mov r1, #0x0 + stmia r0!, {r1,r3} + stmia r0!, {r1-r3} + stmia r0!, {r1,r3} + stmia r0!, {r1-r3} + stmia r0!, {r1,r3} + stmia r0!, {r1-r2} + bx lr + + arm_func_start MTX_Copy44To43_ +MTX_Copy44To43_: + ldmia r0!, {r2-r3,r12} + add r0, r0, #0x4 + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + add r0, r0, #0x4 + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + add r0, r0, #0x4 + stmia r1!, {r2-r3,r12} + ldmia r0!, {r2-r3,r12} + add r0, r0, #0x4 + stmia r1!, {r2-r3,r12} + bx lr + + thumb_func_start MTX_RotX44_ +MTX_RotX44_: ; 0x020C4A24 + str r2, [r0, #0x14] + str r2, [r0, #0x28] + str r1, [r0, #0x18] + neg r1, r1 + str r1, [r0, #0x24] + mov r1, #0x1 + mov r2, #0x0 + lsl r1, r1, #0xc + mov r3, #0x0 + stmia r0!, {r1-r3} + stmia r0!, {r2-r3} + add r0, #0x8 + stmia r0!, {r2-r3} + add r0, #0x8 + stmia r0!, {r2-r3} + stmia r0!, {r2-r3} + str r1, [r0, #0x0] + bx lr + + thumb_func_start MTX_RotY44_ +MTX_RotY44_: ; 0x020C4A48 + str r2, [r0, #0x0] + str r2, [r0, #0x28] + str r1, [r0, #0x20] + neg r1, r1 + str r1, [r0, #0x8] + mov r3, #0x1 + mov r1, #0x0 + lsl r3, r3, #0xc + mov r2, #0x0 + str r2, [r0, #0x4] + add r0, #0xc + stmia r0!, {r1-r3} + stmia r0!, {r1-r2} + str r2, [r0, #0x4] + add r0, #0xc + stmia r0!, {r1-r2} + stmia r0!, {r1-r3} + bx lr + + thumb_func_start MTX_RotZ44_ +MTX_RotZ44_: ; 0x020C4A6C + str r2, [r0, #0x0] + str r2, [r0, #0x14] + str r1, [r0, #0x4] + neg r1, r1 + str r1, [r0, #0x10] + mov r3, #0x1 + mov r1, #0x0 + lsl r3, r3, #0xc + mov r2, #0x0 + add r0, #0x8 + stmia r0!, {r1-r2} + add r0, #0x8 + stmia r0!, {r1-r2} + stmia r0!, {r1-r3} + stmia r0!, {r1-r2} + stmia r0!, {r1-r3} + bx lr + .balign 4 + + arm_func_start MTX_Concat44 +MTX_Concat44: ; 0x020C4A90 + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x44 + ldr r5, [r0, #0x4] + ldr r3, [r1, #0x10] + mov r12, r2 + smull r6, r4, r5, r3 + ldr r9, [r0, #0x0] + ldr r3, [r1, #0x0] + cmp r12, r1 + smlal r6, r4, r9, r3 + ldr r10, [r0, #0x8] + ldr r3, [r1, #0x20] + ldr r8, [r0, #0xc] + smlal r6, r4, r10, r3 + ldr r3, [r1, #0x30] + addeq r2, sp, #0x0 + smlal r6, r4, r8, r3 + mov r3, r6, lsr #0xc + orr r3, r3, r4, lsl #0x14 + str r3, [r2, #0x0] + ldr r3, [r1, #0x14] + ldr r4, [r1, #0x4] + smull r7, r6, r5, r3 + smlal r7, r6, r9, r4 + ldr r3, [r1, #0x24] + ldr r4, [r1, #0x34] + smlal r7, r6, r10, r3 + smlal r7, r6, r8, r4 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0x4] + ldr r3, [r1, #0x1c] + ldr r4, [r1, #0xc] + smull r7, r6, r5, r3 + smlal r7, r6, r9, r4 + ldr r3, [r1, #0x2c] + ldr r4, [r1, #0x3c] + smlal r7, r6, r10, r3 + smlal r7, r6, r8, r4 + mov r3, r7, lsr #0xc + orr r3, r3, r6, lsl #0x14 + str r3, [r2, #0xc] + ldr r6, [r1, #0x18] + ldr r7, [r1, #0x8] + smull r4, r3, r5, r6 + smlal r4, r3, r9, r7 + ldr r9, [r1, #0x28] + ldr r5, [r1, #0x38] + smlal r4, r3, r10, r9 + smlal r4, r3, r8, r5 + mov r4, r4, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x8] + ldr r8, [r0, #0x14] + ldr r10, [r0, #0x10] + smull r4, r3, r8, r6 + smlal r4, r3, r10, r7 + ldr r7, [r0, #0x18] + ldr r6, [r0, #0x1c] + smlal r4, r3, r7, r9 + smlal r4, r3, r6, r5 + mov r4, r4, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x18] + ldr r3, [r1, #0x14] + ldr r4, [r1, #0x4] + smull r11, r3, r8, r3 + smlal r11, r3, r10, r4 + ldr r5, [r1, #0x24] + ldr r9, [r1, #0x34] + smlal r11, r3, r7, r5 + smlal r11, r3, r6, r9 + mov r4, r11, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x14] + ldr r3, [r1, #0x1c] + ldr r4, [r1, #0xc] + smull r11, r3, r8, r3 + smlal r11, r3, r10, r4 + ldr r5, [r1, #0x2c] + ldr r9, [r1, #0x3c] + smlal r11, r3, r7, r5 + smlal r11, r3, r6, r9 + mov r4, r11, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x1c] + ldr r9, [r1, #0x10] + ldr r11, [r1, #0x0] + smull r4, r3, r8, r9 + smlal r4, r3, r10, r11 + ldr r5, [r1, #0x20] + ldr r8, [r1, #0x30] + smlal r4, r3, r7, r5 + smlal r4, r3, r6, r8 + mov r4, r4, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x10] + ldr r6, [r0, #0x24] + ldr r7, [r0, #0x20] + smull r4, r3, r6, r9 + smlal r4, r3, r7, r11 + ldr r10, [r0, #0x28] + add lr, sp, #0x0 + smlal r4, r3, r10, r5 + ldr r5, [r0, #0x2c] + cmp r2, lr + smlal r4, r3, r5, r8 + mov r4, r4, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x20] + ldr r3, [r1, #0x14] + ldr r4, [r1, #0x4] + smull r11, r3, r6, r3 + smlal r11, r3, r7, r4 + ldr r8, [r1, #0x24] + ldr r9, [r1, #0x34] + smlal r11, r3, r10, r8 + smlal r11, r3, r5, r9 + mov r4, r11, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x24] + ldr r3, [r1, #0x1c] + ldr r4, [r1, #0xc] + smull r11, r3, r6, r3 + smlal r11, r3, r7, r4 + ldr r8, [r1, #0x2c] + ldr r9, [r1, #0x3c] + smlal r11, r3, r10, r8 + smlal r11, r3, r5, r9 + mov r4, r11, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x2c] + ldr r9, [r1, #0x18] + ldr r8, [r1, #0x8] + smull r4, r3, r6, r9 + smlal r4, r3, r7, r8 + ldr r7, [r1, #0x28] + ldr r6, [r1, #0x38] + smlal r4, r3, r10, r7 + smlal r4, r3, r5, r6 + mov r4, r4, lsr #0xc + orr r4, r4, r3, lsl #0x14 + str r4, [r2, #0x28] + ldr r5, [r0, #0x34] + ldr r4, [r0, #0x30] + smull r10, r9, r5, r9 + ldr r3, [r0, #0x38] + smlal r10, r9, r4, r8 + smlal r10, r9, r3, r7 + ldr r0, [r0, #0x3c] + addne sp, sp, #0x44 + smlal r10, r9, r0, r6 + mov r6, r10, lsr #0xc + orr r6, r6, r9, lsl #0x14 + str r6, [r2, #0x38] + ldr r6, [r1, #0x14] + ldr r7, [r1, #0x4] + smull r10, r6, r5, r6 + smlal r10, r6, r4, r7 + ldr r8, [r1, #0x24] + ldr r9, [r1, #0x34] + smlal r10, r6, r3, r8 + smlal r10, r6, r0, r9 + mov r7, r10, lsr #0xc + orr r7, r7, r6, lsl #0x14 + str r7, [r2, #0x34] + ldr r6, [r1, #0x10] + ldr r7, [r1, #0x0] + smull r10, r6, r5, r6 + smlal r10, r6, r4, r7 + ldr r8, [r1, #0x20] + ldr r9, [r1, #0x30] + smlal r10, r6, r3, r8 + smlal r10, r6, r0, r9 + mov r7, r10, lsr #0xc + orr r7, r7, r6, lsl #0x14 + str r7, [r2, #0x30] + ldr r8, [r1, #0x3c] + ldr r7, [r1, #0x2c] + ldr r6, [r1, #0xc] + ldr r1, [r1, #0x1c] + smull r9, r1, r5, r1 + smlal r9, r1, r4, r6 + smlal r9, r1, r3, r7 + smlal r9, r1, r0, r8 + mov r0, r9, lsr #0xc + orr r0, r0, r1, lsl #0x14 + str r0, [r2, #0x3c] + ldmneia sp!, {r4-r11,lr} + bxne lr + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr!, {r0-r3} + stmia r12!, {r0-r3} + ldmia lr, {r0-r3} + stmia r12, {r0-r3} + add sp, sp, #0x44 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start MTX_TransApply44 +MTX_TransApply44: ; 0x020C4DB4 + stmdb sp!, {r4-r7,lr} + sub sp, sp, #0x4 + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + cmp r7, r6 + beq _020C4DD8 + bl MI_Copy48B +_020C4DD8: + ldr r0, [r7, #0x10] + ldr r1, [r7, #0x0] + smull r3, r2, r4, r0 + smlal r3, r2, r5, r1 + ldr r0, [sp, #0x18] + ldr r1, [r7, #0x20] + ldr r12, [r7, #0x30] + smlal r3, r2, r0, r1 + mov r1, r3, lsr #0xc + orr r1, r1, r2, lsl #0x14 + add r1, r12, r1 + str r1, [r6, #0x30] + ldr r1, [r7, #0x14] + ldr r2, [r7, #0x4] + smull r12, r3, r4, r1 + smlal r12, r3, r5, r2 + ldr r1, [r7, #0x24] + ldr r2, [r7, #0x34] + smlal r12, r3, r0, r1 + mov r1, r12, lsr #0xc + orr r1, r1, r3, lsl #0x14 + add r1, r2, r1 + str r1, [r6, #0x34] + ldr r1, [r7, #0x18] + ldr r2, [r7, #0x8] + smull r12, r3, r4, r1 + smlal r12, r3, r5, r2 + ldr r1, [r7, #0x28] + ldr r2, [r7, #0x38] + smlal r12, r3, r0, r1 + mov r1, r12, lsr #0xc + orr r1, r1, r3, lsl #0x14 + add r1, r2, r1 + str r1, [r6, #0x38] + ldr r1, [r7, #0x1c] + ldr r2, [r7, #0xc] + smull r12, r3, r4, r1 + smlal r12, r3, r5, r2 + ldr r1, [r7, #0x2c] + ldr r2, [r7, #0x3c] + smlal r12, r3, r0, r1 + mov r0, r12, lsr #0xc + orr r0, r0, r3, lsl #0x14 + add r0, r2, r0 + str r0, [r6, #0x3c] + add sp, sp, #0x4 + ldmia sp!, {r4-r7,lr} + bx lr + + arm_func_start FX_ModS32 +FX_ModS32: ; 0x020C4E98 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020C4EE0 ; =0x04000280 + mov lr, #0x0 + ldr r3, _020C4EE4 ; =0x04000290 + strh lr, [r12, #0x0] + ldr r2, _020C4EE8 ; =0x04000298 + str r0, [r3, #0x0] + str r1, [r2, #0x0] + str lr, [r2, #0x4] +_020C4EC0: + ldrh r0, [r12, #0x0] + ands r0, r0, #0x8000 + bne _020C4EC0 + ldr r0, _020C4EEC ; =0x040002A8 + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C4EE0: .word 0x04000280 +_020C4EE4: .word 0x04000290 +_020C4EE8: .word 0x04000298 +_020C4EEC: .word 0x040002A8 + + arm_func_start FX_DivS32 +FX_DivS32: ; 0x020C4EF0 + stmdb sp!, {lr} + sub sp, sp, #0x4 + ldr ip, _020C4F38 ; =0x04000280 + mov lr, #0x0 + ldr r3, _020C4F3C ; =0x04000290 + strh lr, [r12, #0x0] + ldr r2, _020C4F40 ; =0x04000298 + str r0, [r3, #0x0] + str r1, [r2, #0x0] + str lr, [r2, #0x4] +_020C4F18: + ldrh r0, [r12, #0x0] + ands r0, r0, #0x8000 + bne _020C4F18 + ldr r0, _020C4F44 ; =0x040002A0 + ldr r0, [r0, #0x0] + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C4F38: .word 0x04000280 +_020C4F3C: .word 0x04000290 +_020C4F40: .word 0x04000298 +_020C4F44: .word 0x040002A0 + + arm_func_start FX_DivAsync +FX_DivAsync: ; 0x020C4F48 + ldr r2, _020C4F74 ; =0x04000280 + mov r12, #0x1 + ldr r3, _020C4F78 ; =0x04000290 + strh r12, [r2, #0x0] + mov r12, #0x0 + str r12, [r3, #0x0] + ldr r2, _020C4F7C ; =0x04000298 + str r0, [r3, #0x4] + str r1, [r2, #0x0] + str r12, [r2, #0x4] + bx lr + .balign 4 +_020C4F74: .word 0x04000280 +_020C4F78: .word 0x04000290 +_020C4F7C: .word 0x04000298 + + arm_func_start FX_GetSqerResult +FX_GetSqerResult: ; 0x020C4F80 + ldr r1, _020C4FA4 ; =0x040002B0 +_020C4F84: + ldrh r0, [r1, #0x0] + ands r0, r0, #0x8000 + bne _020C4F84 + ldr r0, _020C4FA8 ; =0x040002B4 + ldr r0, [r0, #0x0] + add r0, r0, #0x200 + mov r0, r0, lsr #0xa + bx lr + .balign 4 +_020C4FA4: .word 0x040002B0 +_020C4FA8: .word 0x040002B4 + + arm_func_start FX_InvAsync +FX_InvAsync: + ldr r1, _020C4FDC ; =0x04000280 + mov r3, #0x1 + ldr r2, _020C4FE0 ; =0x04000290 + strh r3, [r1, #0x0] + mov r12, #0x0 + str r12, [r2, #0x0] + mov r3, #0x1000 + ldr r1, _020C4FE4 ; =0x04000298 + str r3, [r2, #0x4] + str r0, [r1, #0x0] + str r12, [r1, #0x4] + bx lr + .balign 4 +_020C4FDC: .word 0x04000280 +_020C4FE0: .word 0x04000290 +_020C4FE4: .word 0x04000298 + + arm_func_start FX_GetDivResult +FX_GetDivResult: ; 0x020C4FE8 + ldr r1, _020C501C ; =0x04000280 +_020C4FEC: + ldrh r0, [r1, #0x0] + ands r0, r0, #0x8000 + bne _020C4FEC + ldr r1, _020C5020 ; =0x040002A0 + mov r0, #0x80000 + ldr r2, [r1, #0x0] + ldr r1, [r1, #0x4] + adds r0, r2, r0 + adc r1, r1, #0x0 + mov r0, r0, lsr #0x14 + orr r0, r0, r1, lsl #0xc + bx lr + .balign 4 +_020C501C: .word 0x04000280 +_020C5020: .word 0x040002A0 + + arm_func_start FX_GetDivResultFx64c +FX_GetDivResultFx64c: ; 0x020C5024 + ldr r1, _020C5044 ; =0x04000280 +_020C5028: + ldrh r0, [r1, #0x0] + ands r0, r0, #0x8000 + bne _020C5028 + ldr r1, _020C5048 ; =0x040002A0 + ldr r0, [r1, #0x0] + ldr r1, [r1, #0x4] + bx lr + .balign 4 +_020C5044: .word 0x04000280 +_020C5048: .word 0x040002A0 + + arm_func_start FX_Sqrt +FX_Sqrt: ; 0x020C504C + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + addle sp, sp, #0x4 + movle r0, #0x0 + ldmleia sp!, {lr} + bxle lr + ldr r2, _020C5094 ; =0x040002B0 + mov r3, #0x1 + strh r3, [r2, #0x0] + ldr r1, _020C5098 ; =0x040002B8 + mov r2, #0x0 + str r2, [r1, #0x0] + str r0, [r1, #0x4] + bl FX_GetSqerResult + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C5094: .word 0x040002B0 +_020C5098: .word 0x040002B8 + + arm_func_start FX_Inv +FX_Inv: ; 0x020C509C + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FX_InvAsync + bl FX_GetDivResult + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start FX_Div +FX_Div: ; 0x020C50B8 + stmdb sp!, {lr} + sub sp, sp, #0x4 + bl FX_DivAsync + bl FX_GetDivResult + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + + arm_func_start VEC_MultAdd +VEC_MultAdd: ; 0x020C50D4 + stmdb sp!, {r4,lr} + ldr r4, [r1, #0x0] + ldr lr, [r2, #0x0] + smull r12, r4, r0, r4 + mov r12, r12, lsr #0xc + orr r12, r12, r4, lsl #0x14 + add r4, lr, r12 + str r4, [r3, #0x0] + ldr r12, [r1, #0x4] + ldr r4, [r2, #0x4] + smull lr, r12, r0, r12 + mov lr, lr, lsr #0xc + orr lr, lr, r12, lsl #0x14 + add r4, r4, lr + str r4, [r3, #0x4] + ldr r1, [r1, #0x8] + ldr r12, [r2, #0x8] + smull r2, r1, r0, r1 + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + add r0, r12, r0 + str r0, [r3, #0x8] + ldmia sp!, {r4,lr} + bx lr + + arm_func_start VEC_Fx16Normalize +VEC_Fx16Normalize: ; 0x020C5134 + stmdb sp!, {r4-r8,lr} + ldrsh r4, [r0, #0x0] + ldrsh r3, [r0, #0x2] + ldrsh r2, [r0, #0x4] + mul r8, r4, r4 + mul r7, r3, r3 + mul r6, r2, r2 + ldr r2, _020C526C ; =0x04000280 + mov r3, #0x2 + ldr r4, _020C5270 ; =0x04000290 + strh r3, [r2, #0x0] + mov r2, #0x0 + str r2, [r4, #0x0] + mov r5, #0x1000000 + mov r2, r8, asr #0x1f + adds r3, r8, r7 + adc r2, r2, r7, asr #0x1f + adds r7, r3, r6 + adc r6, r2, r6, asr #0x1f + mov r3, r6, lsl #0x2 + ldr r2, _020C5274 ; =0x04000298 + str r5, [r4, #0x4] + str r7, [r2, #0x0] + ldr r5, _020C5278 ; =0x040002B0 + str r6, [r2, #0x4] + mov r4, #0x1 + ldr r2, _020C527C ; =0x040002B8 + strh r4, [r5, #0x0] + mov r4, r7, lsl #0x2 + str r4, [r2, #0x0] + orr r3, r3, r7, lsr #0x1e + str r3, [r2, #0x4] +_020C51B4: + ldrh r2, [r5, #0x0] + ands r2, r2, #0x8000 + bne _020C51B4 + ldr r2, _020C5280 ; =0x040002B4 + ldr r12, [r2, #0x0] + ldr r3, _020C526C ; =0x04000280 +_020C51CC: + ldrh r2, [r3, #0x0] + ands r2, r2, #0x8000 + bne _020C51CC + ldr r7, _020C5284 ; =0x040002A0 + ldrsh r5, [r0, #0x0] + ldr r6, [r7, #0x0] + mov r4, r12, asr #0x1f + umull r3, r2, r6, r12 + mla r2, r6, r4, r2 + ldr r8, [r7, #0x4] + mov r4, r5, asr #0x1f + umull r7, r6, r3, r5 + mov lr, #0x0 + mla r2, r8, r12, r2 + mla r6, r3, r4, r6 + mla r6, r2, r5, r6 + adds r4, r7, lr + adc r4, r6, #0x1000 + mov r4, r4, asr #0xd + strh r4, [r1, #0x0] + ldrsh r5, [r0, #0x2] + umull r6, r12, r3, r5 + mov r4, r5, asr #0x1f + mla r12, r3, r4, r12 + mla r12, r2, r5, r12 + adds r4, r6, lr + adc r4, r12, #0x1000 + mov r4, r4, asr #0xd + strh r4, [r1, #0x2] + ldrsh r12, [r0, #0x4] + umull r5, r4, r3, r12 + mov r0, r12, asr #0x1f + adds r5, r5, lr + mla r4, r3, r0, r4 + mla r4, r2, r12, r4 + adc r0, r4, #0x1000 + mov r0, r0, asr #0xd + strh r0, [r1, #0x4] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020C526C: .word 0x04000280 +_020C5270: .word 0x04000290 +_020C5274: .word 0x04000298 +_020C5278: .word 0x040002B0 +_020C527C: .word 0x040002B8 +_020C5280: .word 0x040002B4 +_020C5284: .word 0x040002A0 + + arm_func_start VEC_Normalize +VEC_Normalize: + stmdb sp!, {r4-r8,lr} + ldr r3, [r0, #0x4] + ldr r4, [r0, #0x0] + smull r2, r7, r3, r3 + smlal r2, r7, r4, r4 + ldr r4, [r0, #0x8] + ldr r3, _020C53AC ; =0x04000280 + smlal r2, r7, r4, r4 + mov r6, #0x2 + mov r4, r7, lsl #0x2 + ldr r5, _020C53B0 ; =0x04000290 + strh r6, [r3, #0x0] + mov r3, #0x0 + str r3, [r5, #0x0] + mov r6, #0x1000000 + ldr r3, _020C53B4 ; =0x04000298 + str r6, [r5, #0x4] + str r2, [r3, #0x0] + ldr r6, _020C53B8 ; =0x040002B0 + str r7, [r3, #0x4] + mov r5, #0x1 + ldr r3, _020C53BC ; =0x040002B8 + strh r5, [r6, #0x0] + mov r5, r2, lsl #0x2 + str r5, [r3, #0x0] + orr r4, r4, r2, lsr #0x1e + str r4, [r3, #0x4] +_020C52F4: + ldrh r2, [r6, #0x0] + ands r2, r2, #0x8000 + bne _020C52F4 + ldr r2, _020C53C0 ; =0x040002B4 + ldr r12, [r2, #0x0] + ldr r3, _020C53AC ; =0x04000280 +_020C530C: + ldrh r2, [r3, #0x0] + ands r2, r2, #0x8000 + bne _020C530C + ldr r7, _020C53C4 ; =0x040002A0 + ldr r5, [r0, #0x0] + ldr r6, [r7, #0x0] + mov r4, r12, asr #0x1f + umull r3, r2, r6, r12 + mla r2, r6, r4, r2 + ldr r8, [r7, #0x4] + mov r4, r5, asr #0x1f + umull r7, r6, r3, r5 + mov lr, #0x0 + mla r2, r8, r12, r2 + mla r6, r3, r4, r6 + mla r6, r2, r5, r6 + adds r4, r7, lr + adc r4, r6, #0x1000 + mov r4, r4, asr #0xd + str r4, [r1, #0x0] + ldr r5, [r0, #0x4] + umull r6, r12, r3, r5 + mov r4, r5, asr #0x1f + mla r12, r3, r4, r12 + mla r12, r2, r5, r12 + adds r4, r6, lr + adc r4, r12, #0x1000 + mov r4, r4, asr #0xd + str r4, [r1, #0x4] + ldr r12, [r0, #0x8] + umull r5, r4, r3, r12 + mov r0, r12, asr #0x1f + adds r5, r5, lr + mla r4, r3, r0, r4 + mla r4, r2, r12, r4 + adc r0, r4, #0x1000 + mov r0, r0, asr #0xd + str r0, [r1, #0x8] + ldmia sp!, {r4-r8,lr} + bx lr + .balign 4 +_020C53AC: .word 0x04000280 +_020C53B0: .word 0x04000290 +_020C53B4: .word 0x04000298 +_020C53B8: .word 0x040002B0 +_020C53BC: .word 0x040002B8 +_020C53C0: .word 0x040002B4 +_020C53C4: .word 0x040002A0 + + arm_func_start VEC_Mag +VEC_Mag: + ldr r2, [r0, #0x4] + ldr r3, [r0, #0x0] + smull r12, r1, r2, r2 + smlal r12, r1, r3, r3 + ldr r0, [r0, #0x8] + ldr r3, _020C5424 ; =0x040002B0 + smlal r12, r1, r0, r0 + mov r2, #0x1 + mov r1, r1, lsl #0x2 + ldr r0, _020C5428 ; =0x040002B8 + strh r2, [r3, #0x0] + mov r2, r12, lsl #0x2 + str r2, [r0, #0x0] + orr r1, r1, r12, lsr #0x1e + str r1, [r0, #0x4] +_020C5404: + ldrh r0, [r3, #0x0] + ands r0, r0, #0x8000 + bne _020C5404 + ldr r0, _020C542C ; =0x040002B4 + ldr r0, [r0, #0x0] + add r0, r0, #0x1 + mov r0, r0, asr #0x1 + bx lr + .balign 4 +_020C5424: .word 0x040002B0 +_020C5428: .word 0x040002B8 +_020C542C: .word 0x040002B4 + + arm_func_start VEC_Fx16CrossProduct +VEC_Fx16CrossProduct: ; 0x020C5430 + stmdb sp!, {r4-r6,lr} + ldrsh r4, [r1, #0x4] + ldrsh r12, [r0, #0x2] + ldrsh lr, [r0, #0x0] + ldrsh r3, [r1, #0x2] + ldrsh r6, [r0, #0x4] + ldrsh r1, [r1, #0x0] + mul r5, r12, r4 + mul r0, r6, r3 + sub r0, r5, r0 + add r0, r0, #0x800 + mov r0, r0, asr #0xc + mul r5, r6, r1 + mul r4, lr, r4 + sub r4, r5, r4 + add r4, r4, #0x800 + mul r3, lr, r3 + mul r1, r12, r1 + sub r1, r3, r1 + add r1, r1, #0x800 + strh r0, [r2, #0x0] + mov r0, r4, asr #0xc + strh r0, [r2, #0x2] + mov r0, r1, asr #0xc + strh r0, [r2, #0x4] + ldmia sp!, {r4-r6,lr} + bx lr + + arm_func_start VEC_CrossProduct +VEC_CrossProduct: + stmdb sp!, {r4-r11,lr} + sub sp, sp, #0x4 + ldr r12, [r1, #0x8] + ldr r9, [r0, #0x4] + ldr r3, [r0, #0x0] + ldr r11, [r1, #0x4] + ldr r0, [r0, #0x8] + ldr r10, [r1, #0x0] + smull r4, r7, r9, r12 + smull r1, r6, r0, r11 + subs r8, r4, r1 + smull r5, r4, r0, r10 + smull lr, r12, r3, r12 + smull r1, r0, r3, r11 + smull r10, r3, r9, r10 + sbc r6, r7, r6 + mov r9, #0x800 + adds r7, r8, r9 + adc r6, r6, #0x0 + subs r8, r5, lr + sbc r5, r4, r12 + adds r8, r8, r9 + mov r4, r7, lsr #0xc + adc r5, r5, #0x0 + subs r1, r1, r10 + orr r4, r4, r6, lsl #0x14 + mov r6, r8, lsr #0xc + sbc r0, r0, r3 + adds r1, r1, r9 + str r4, [r2, #0x0] + orr r6, r6, r5, lsl #0x14 + adc r0, r0, #0x0 + mov r1, r1, lsr #0xc + str r6, [r2, #0x4] + orr r1, r1, r0, lsl #0x14 + str r1, [r2, #0x8] + add sp, sp, #0x4 + ldmia sp!, {r4-r11,lr} + bx lr + + arm_func_start VEC_Fx16DotProduct +VEC_Fx16DotProduct: ; 0x020C5538 + stmdb sp!, {r4-r5,lr} + sub sp, sp, #0x4 + ldrsh lr, [r0, #0x2] + ldrsh r12, [r1, #0x2] + ldrsh r3, [r0, #0x4] + ldrsh r2, [r1, #0x4] + ldrsh r5, [r0, #0x0] + ldrsh r4, [r1, #0x0] + smulbb r1, lr, r12 + smulbb r0, r3, r2 + smlabb r1, r5, r4, r1 + add r0, r0, #0x800 + adds r2, r1, r0 + mov r1, r1, asr #0x1f + adc r1, r1, r0, asr #0x1f + mov r0, r2, lsr #0xc + orr r0, r0, r1, lsl #0x14 + add sp, sp, #0x4 + ldmia sp!, {r4-r5,lr} + bx lr + + arm_func_start VEC_DotProduct +VEC_DotProduct: + stmdb sp!, {r4,lr} + ldr r3, [r0, #0x4] + ldr r2, [r1, #0x4] + ldr r12, [r0, #0x0] + smull r4, lr, r3, r2 + ldr r2, [r1, #0x0] + ldr r3, [r0, #0x8] + smlal r4, lr, r12, r2 + ldr r1, [r1, #0x8] + mov r0, #0x800 + smlal r4, lr, r3, r1 + adds r0, r4, r0 + adc r1, lr, #0x0 + mov r0, r0, lsr #0xc + orr r0, r0, r1, lsl #0x14 + ldmia sp!, {r4,lr} + bx lr + + arm_func_start VEC_Fx16Add +VEC_Fx16Add: ; 0x020C55CC + ldrsh r12, [r0, #0x0] + ldrsh r3, [r1, #0x0] + add r3, r12, r3 + strh r3, [r2, #0x0] + ldrsh r12, [r0, #0x2] + ldrsh r3, [r1, #0x2] + add r3, r12, r3 + strh r3, [r2, #0x2] + ldrsh r3, [r0, #0x4] + ldrsh r0, [r1, #0x4] + add r0, r3, r0 + strh r0, [r2, #0x4] + bx lr + + arm_func_start VEC_Subtract +VEC_Subtract: ; 0x020C5600 + ldr r12, [r0, #0x0] + ldr r3, [r1, #0x0] + sub r3, r12, r3 + str r3, [r2, #0x0] + ldr r12, [r0, #0x4] + ldr r3, [r1, #0x4] + sub r3, r12, r3 + str r3, [r2, #0x4] + ldr r3, [r0, #0x8] + ldr r0, [r1, #0x8] + sub r0, r3, r0 + str r0, [r2, #0x8] + bx lr + + arm_func_start VEC_Add +VEC_Add: ; 0x020C5634 + ldr r12, [r0, #0x0] + ldr r3, [r1, #0x0] + add r3, r12, r3 + str r3, [r2, #0x0] + ldr r12, [r0, #0x4] + ldr r3, [r1, #0x4] + add r3, r12, r3 + str r3, [r2, #0x4] + ldr r3, [r0, #0x8] + ldr r0, [r1, #0x8] + add r0, r3, r0 + str r0, [r2, #0x8] + bx lr + + arm_func_start FX_Modf +FX_Modf: ; 0x020C5668 + stmdb sp!, {r4,lr} + cmp r0, #0x0 + ble _020C5704 + cmp r1, #0x0 + ble _020C56B4 + cmp r1, r0 + movgt r3, r0 + movgt r4, #0x0 + movgt r0, #0x1 + bgt _020C57C8 + cmp r1, r0 + movlt r3, r1 + movlt r1, r0 + movlt r4, #0x4000 + movlt r0, #0x0 + blt _020C57C8 + mov r0, #0x2000 + ldmia sp!, {r4,lr} + bx lr +_020C56B4: + cmp r1, #0x0 + bge _020C56F8 + rsb r1, r1, #0x0 + cmp r1, r0 + movlt r3, r1 + movlt r1, r0 + movlt r4, #0x4000 + movlt r0, #0x1 + blt _020C57C8 + cmp r1, r0 + movgt r3, r0 + movgt r4, #0x8000 + movgt r0, #0x0 + bgt _020C57C8 + mov r0, #0x6000 + ldmia sp!, {r4,lr} + bx lr +_020C56F8: + mov r0, #0x4000 + ldmia sp!, {r4,lr} + bx lr +_020C5704: + cmp r0, #0x0 + bge _020C57B4 + cmp r1, #0x0 + rsb r2, r0, #0x0 + bge _020C5760 + rsb r1, r1, #0x0 + cmp r1, r2 + movgt r0, #0x8000 + rsbgt r4, r0, #0x0 + movgt r3, r2 + movgt r0, #0x1 + bgt _020C57C8 + cmp r1, r2 + bge _020C5754 + mov r0, #0x4000 + mov r3, r1 + mov r1, r2 + rsb r4, r0, #0x0 + mov r0, #0x0 + b _020C57C8 +_020C5754: + mov r0, #0xa000 + ldmia sp!, {r4,lr} + bx lr +_020C5760: + cmp r1, #0x0 + ble _020C57A8 + cmp r1, r2 + bge _020C5788 + mov r0, #0x4000 + mov r3, r1 + mov r1, r2 + rsb r4, r0, #0x0 + mov r0, #0x1 + b _020C57C8 +_020C5788: + cmp r1, r2 + movgt r4, #0x0 + movgt r3, r2 + movgt r0, r4 + bgt _020C57C8 + mov r0, #0xe000 + ldmia sp!, {r4,lr} + bx lr +_020C57A8: + mov r0, #0xc000 + ldmia sp!, {r4,lr} + bx lr +_020C57B4: + cmp r1, #0x0 + movge r0, #0x0 + movlt r0, #0x8000 + ldmia sp!, {r4,lr} + bx lr +_020C57C8: + cmp r1, #0x0 + moveq r0, #0x0 + ldmeqia sp!, {r4,lr} + bxeq lr + cmp r0, #0x0 + beq _020C580C + mov r0, r3 + bl FX_Div + mov r1, r0, asr #0x5 + ldr r0, _020C5838 ; =0x02103A38 + mov r1, r1, lsl #0x1 + ldrsh r0, [r0, r1] + add r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4,lr} + bx lr +_020C580C: + mov r0, r3 + bl FX_Div + mov r1, r0, asr #0x5 + ldr r0, _020C5838 ; =0x02103A38 + mov r1, r1, lsl #0x1 + ldrsh r0, [r0, r1] + sub r0, r4, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {r4,lr} + bx lr + .balign 4 +_020C5838: .word 0x02103A38 + + arm_func_start FUN_020C583C +FUN_020C583C: ; 0x020C583C + stmdb sp!, {lr} + sub sp, sp, #0x4 + cmp r0, #0x0 + blt _020C58A4 + cmp r0, #0x1000 + ble _020C5880 + bl FX_Inv + mov r1, r0, asr #0x5 + ldr r0, _020C5924 ; =0x02103A38 + mov r1, r1, lsl #0x1 + ldrsh r0, [r0, r1] + add sp, sp, #0x4 + rsb r0, r0, #0x4000 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {lr} + bx lr +_020C5880: + cmp r0, #0x1000 + movlt r1, r0, asr #0x5 + ldrlt r0, _020C5924 ; =0x02103A38 + movlt r1, r1, lsl #0x1 + ldrlth r0, [r0, r1] + add sp, sp, #0x4 + movge r0, #0x2000 + ldmia sp!, {lr} + bx lr +_020C58A4: + mov r1, #0x1000 + rsb r1, r1, #0x0 + cmp r0, r1 + bge _020C58E4 + rsb r0, r0, #0x0 + bl FX_Inv + mov r1, r0, asr #0x5 + ldr r0, _020C5924 ; =0x02103A38 + + arm_func_start FUN_020C58C4 +FUN_020C58C4: ; 0x020C58C4 + mov r1, r1, lsl #0x1 + ldrsh r0, [r0, r1] + add sp, sp, #0x4 + sub r0, r0, #0x4000 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + ldmia sp!, {lr} + bx lr +_020C58E4: + cmp r0, r1 + addle sp, sp, #0x4 + movle r0, #0xe000 + ldmleia sp!, {lr} + bxle lr + rsb r0, r0, #0x0 + mov r1, r0, asr #0x5 + ldr r0, _020C5924 ; =0x02103A38 + mov r1, r1, lsl #0x1 + ldrsh r0, [r0, r1] + rsb r0, r0, #0x0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add sp, sp, #0x4 + ldmia sp!, {lr} + bx lr + .balign 4 +_020C5924: .word 0x02103A38 + + arm_func_start FUN_020C5928 +FUN_020C5928: ; 0x020C5928 + cmp r0, #0x0 + blt _020C5948 + ldr r2, _020C596C ; =0x7FFFF000 + ldr r3, _020C5970 ; =0x00000FFF + and r2, r0, r2 + str r2, [r1, #0x0] + and r0, r0, r3 + bx lr +_020C5948: + ldr r2, _020C596C ; =0x7FFFF000 + rsb r3, r0, #0x0 + ldr r0, _020C5970 ; =0x00000FFF + and r2, r3, r2 + rsb r2, r2, #0x0 + and r0, r3, r0 + str r2, [r1, #0x0] + rsb r0, r0, #0x0 + bx lr + .balign 4 +_020C596C: .word 0x7FFFF000 +_020C5970: .word 0x00000FFF + + arm_func_start FX_Init +FX_Init: ; 0x020C5974 + bx lr diff --git a/arm9/asm/unk_10b724.s b/arm9/asm/unk_10b724.s new file mode 100644 index 00000000..cfa5f27a --- /dev/null +++ b/arm9/asm/unk_10b724.s @@ -0,0 +1,4 @@ + .text + .word 0xdec00621 + .word 0x00000b68 + .word 0x00000000 -- cgit v1.2.3