.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