diff options
Diffstat (limited to 'arm9/asm/unk_02000E0C.s')
-rw-r--r-- | arm9/asm/unk_02000E0C.s | 2758 |
1 files changed, 2758 insertions, 0 deletions
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 |