diff options
Diffstat (limited to 'arm9/modules/54')
-rw-r--r-- | arm9/modules/54/asm/module_54.s | 4382 |
1 files changed, 4382 insertions, 0 deletions
diff --git a/arm9/modules/54/asm/module_54.s b/arm9/modules/54/asm/module_54.s new file mode 100644 index 00000000..817d6824 --- /dev/null +++ b/arm9/modules/54/asm/module_54.s @@ -0,0 +1,4382 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD54_021D74E0 +MOD54_021D74E0: ; 0x021D74E0 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [r5] + add r6, r0, #0 + cmp r1, #0 + beq _021D74F6 + cmp r1, #1 + bne _021D74F4 + b _021D761A +_021D74F4: + b _021D7628 +_021D74F6: + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + bl FUN_02015F1C + bl FUN_0201E6D8 + bl FUN_0201E740 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _021D7630 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _021D7634 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r2, #0x41 + mov r0, #3 + mov r1, #0x33 + lsl r2, r2, #0xc + bl FUN_0201681C + ldr r1, _021D7638 ; =0x00004A60 + add r0, r6, #0 + mov r2, #0x33 + bl FUN_02006268 + ldr r2, _021D7638 ; =0x00004A60 + mov r1, #0 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x33 + bl FUN_02016B94 + str r0, [r4] + add r0, r6, #0 + bl FUN_0200628C + str r0, [r4, #8] + ldr r1, [r0] + ldr r0, _021D763C ; =0x00004A38 + str r1, [r4, r0] + mov r0, #0x33 + bl FUN_0200AA80 + str r0, [r4, #0x24] + ldr r2, _021D7640 ; =0x000001E2 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x33 + bl FUN_0200A86C + str r0, [r4, #0x28] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + bl MOD54_021D7874 + ldr r0, [r4] + bl MOD54_021D7894 + mov r0, #0 + bl FUN_0200E394 + mov r0, #1 + bl FUN_0200E394 + mov r0, #0x10 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x33 + str r0, [sp, #8] + mov r0, #0 + mov r1, #0x11 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + add r0, r4, #0 + bl MOD54_021D7AA0 + ldr r0, _021D7644 ; =MOD54_021D784C + add r1, r4, #0 + bl FUN_02015F10 + add r0, r4, #0 + bl MOD54_021D799C + bl MOD54_021D7B8C + add r0, r4, #0 + bl MOD54_021D7BBC + add r0, r4, #0 + bl MOD54_021D7CAC + add r0, r4, #0 + add r1, r6, #0 + bl MOD54_021D7DB4 + mov r1, #0 + mov r0, #0x34 + add r2, r1, #0 + bl FUN_0200433C + add r0, r4, #0 + bl FUN_02084098 + bl FUN_020328E4 + mov r0, #3 + bl FUN_02032B6C + bl FUN_02031190 + cmp r0, #0 + bne _021D75F4 + mov r0, #2 + bl FUN_02052B74 +_021D75F4: + bl FUN_02033E74 + ldr r0, _021D763C ; =0x00004A38 + mov r1, #0xed + lsl r1, r1, #2 + ldr r0, [r4, r0] + add r1, r4, r1 + bl MOD54_021D9570 + ldr r0, _021D7648 ; =MOD54_021D77E8 + add r1, r4, #0 + mov r2, #5 + bl FUN_0200CA60 + str r0, [r4, #0x20] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _021D7628 +_021D761A: + bl FUN_02006278 + mov r0, #0 + str r0, [r5] + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D7628: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_021D7630: .word 0xFFFFE0FF +_021D7634: .word 0x04001000 +_021D7638: .word 0x00004A60 +_021D763C: .word 0x00004A38 +_021D7640: .word 0x000001E2 +_021D7644: .word MOD54_021D784C +_021D7648: .word MOD54_021D77E8 + thumb_func_end MOD54_021D74E0 + + thumb_func_start MOD54_021D764C +MOD54_021D764C: ; 0x021D764C + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_02006278 + add r4, r0, #0 + bl FUN_02031190 + cmp r0, #0 + bne _021D7672 + ldr r0, _021D7730 ; =0x00004A50 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D7672 + bl FUN_0202CB8C + ldr r1, _021D7730 ; =0x00004A50 + ldr r2, [r4, r1] + and r0, r2 + str r0, [r4, r1] +_021D7672: + ldr r1, [r5] + cmp r1, #3 + bhi _021D7726 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D7684: ; jump table + .short _021D768C - _021D7684 - 2 ; case 0 + .short _021D76B4 - _021D7684 - 2 ; case 1 + .short _021D7702 - _021D7684 - 2 ; case 2 + .short _021D771A - _021D7684 - 2 ; case 3 +_021D768C: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7726 + mov r0, #1 + str r0, [r5] + bl FUN_02031190 + cmp r0, #0 + beq _021D7726 + bl MOD54_021D8C08 + cmp r0, #2 + ble _021D7726 + mov r1, #0 + mov r0, #0x72 + add r2, r1, #0 + bl FUN_02030ADC + b _021D7726 +_021D76B4: + mov r0, #0xd1 + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r2, r0, #2 + ldr r0, _021D7734 ; =0x021D97E0 + ldr r2, [r0, r2] + cmp r2, #0 + beq _021D76CA + add r0, r4, #0 + blx r2 + str r0, [r5] +_021D76CA: + ldr r0, _021D7738 ; =0x00004A40 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _021D76E2 + mov r0, #0xa6 + lsl r0, r0, #2 + ldr r2, _021D773C ; =0x00010300 + add r0, r4, r0 + mov r1, #0 + add r3, r4, #0 + bl MOD54_021D8AF8 +_021D76E2: + add r0, r4, #0 + bl MOD54_021D8D50 + bl FUN_02031190 + cmp r0, #0 + bne _021D7726 + add r0, r4, #0 + mov r1, #1 + bl MOD54_021D8F94 + ldr r1, [r5] + cmp r1, #1 + bne _021D7726 + str r0, [r5] + b _021D7726 +_021D7702: + mov r0, #0xd1 + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r2, r0, #2 + ldr r0, _021D7734 ; =0x021D97E0 + ldr r2, [r0, r2] + cmp r2, #0 + beq _021D7726 + add r0, r4, #0 + blx r2 + str r0, [r5] + b _021D7726 +_021D771A: + bl FUN_0200E308 + cmp r0, #0 + beq _021D7726 + mov r0, #1 + pop {r3, r4, r5, pc} +_021D7726: + ldr r0, [r4, #0x50] + bl FUN_0201FDEC + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D7730: .word 0x00004A50 +_021D7734: .word 0x021D97E0 +_021D7738: .word 0x00004A40 +_021D773C: .word 0x00010300 + thumb_func_end MOD54_021D764C + + thumb_func_start MOD54_021D7740 +MOD54_021D7740: ; 0x021D7740 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + bl FUN_02006278 + add r6, r0, #0 + ldr r0, [r6, #0x20] + bl FUN_0200CAB4 + mov r0, #0x6b + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0x1b + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0x5f + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_021D776C: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D776C + ldr r0, [r6, #0x50] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + add r0, r6, #0 + bl MOD54_021D7EDC + ldr r0, [r6] + bl MOD54_021D7A6C + mov r0, #2 + bl FUN_02032B6C + bl FUN_02031B50 + ldr r0, [r6, #8] + ldr r0, [r0, #4] + bl FUN_02052F8C + ldr r0, [r6, #0x28] + bl FUN_0200A8B8 + ldr r0, [r6, #0x24] + bl FUN_0200AB18 + add r0, r6, #0 + bl MOD54_021D7A34 + ldr r0, [sp] + bl FUN_0200627C + ldr r2, _021D77E4 ; =0x04000304 + ldrh r1, [r2] + lsr r0, r2, #0xb + orr r0, r1 + strh r0, [r2] + mov r0, #0 + bl FUN_02052B74 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0x33 + bl FUN_020168D0 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D77E4: .word 0x04000304 + thumb_func_end MOD54_021D7740 + + thumb_func_start MOD54_021D77E8 +MOD54_021D77E8: ; 0x021D77E8 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0xc] + add r1, #0xc + cmp r0, #0 + beq _021D7842 + ldr r0, [r1, #4] + ldr r3, [r1, #8] + lsl r2, r0, #1 + ldr r0, _021D7844 ; =0x021D968A + ldrb r0, [r0, r2] + cmp r3, r0 + ble _021D7832 + mov r0, #0 + str r0, [r1, #8] + ldr r2, [r1, #4] + add r2, r2, #1 + str r2, [r1, #4] + lsl r3, r2, #1 + ldr r2, _021D7848 ; =0x021D968B + ldrb r2, [r2, r3] + cmp r2, #0xff + bne _021D7818 + str r0, [r1, #4] +_021D7818: + ldr r0, [r1, #0x10] + ldr r1, [r1, #4] + ldr r0, [r0, #0xc] + lsl r2, r1, #1 + ldr r1, _021D7848 ; =0x021D968B + ldrb r1, [r1, r2] + mov r2, #0x20 + lsl r1, r1, #5 + add r0, r0, r1 + mov r1, #0 + bl GX_LoadOBJPltt + b _021D7838 +_021D7832: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] +_021D7838: + mov r0, #0xe9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD54_021D8A90 +_021D7842: + pop {r4, pc} + .align 2, 0 +_021D7844: .word 0x021D968A +_021D7848: .word 0x021D968B + thumb_func_end MOD54_021D77E8 + + thumb_func_start MOD54_021D784C +MOD54_021D784C: ; 0x021D784C + push {r4, lr} + add r4, r0, #0 + bl FUN_0201C30C + bl FUN_02009F80 + add r0, r4, #0 + bl FUN_0201AB60 + ldr r3, _021D786C ; =0x027E0000 + ldr r1, _021D7870 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r4, pc} + .align 2, 0 +_021D786C: .word 0x027E0000 +_021D7870: .word 0x00003FF8 + thumb_func_end MOD54_021D784C + + thumb_func_start MOD54_021D7874 +MOD54_021D7874: ; 0x021D7874 + push {r4, lr} + sub sp, #0x28 + ldr r4, _021D7890 ; =0x021D9758 + add r3, sp, #0 + mov r2, #5 +_021D787E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D787E + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_021D7890: .word 0x021D9758 + thumb_func_end MOD54_021D7874 + + thumb_func_start MOD54_021D7894 +MOD54_021D7894: ; 0x021D7894 + push {r4, r5, lr} + sub sp, #0x9c + ldr r5, _021D7984 ; =0x021D9694 + add r3, sp, #0x8c + add r4, r0, #0 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _021D7988 ; =0x021D9720 + add r3, sp, #0x70 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #4 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #4 + bl FUN_02018744 + ldr r5, _021D798C ; =0x021D973C + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #5 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #5 + bl FUN_02018744 + ldr r5, _021D7990 ; =0x021D96CC + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #6 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + ldr r5, _021D7994 ; =0x021D96E8 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _021D7998 ; =0x021D9704 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + mov r1, #1 + mov r3, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x33 + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x33 + bl FUN_02017F18 + add sp, #0x9c + pop {r4, r5, pc} + nop +_021D7984: .word 0x021D9694 +_021D7988: .word 0x021D9720 +_021D798C: .word 0x021D973C +_021D7990: .word 0x021D96CC +_021D7994: .word 0x021D96E8 +_021D7998: .word 0x021D9704 + thumb_func_end MOD54_021D7894 + + thumb_func_start MOD54_021D799C +MOD54_021D799C: ; 0x021D799C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0 + add r4, r7, #0 + add r5, r7, #0 +_021D79A6: + mov r0, #8 + mov r1, #0x33 + bl FUN_020219F4 + str r0, [r4, #0x2c] + mov r0, #0xd9 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + mov r0, #0xe3 + lsl r0, r0, #2 + str r1, [r4, r0] + add r6, r6, #1 + add r4, r4, #4 + add r5, #8 + cmp r6, #5 + blt _021D79A6 + mov r0, #0xb4 + mov r1, #0x33 + bl FUN_020219F4 + str r0, [r7, #0x44] + mov r0, #0x28 + mov r1, #0x33 + bl FUN_020219F4 + str r0, [r7, #0x48] + mov r0, #0xd1 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r7, r0] + ldr r0, [r7, #0x28] + ldr r2, [r7, #0x48] + mov r1, #0x11 + bl FUN_0200A8E0 + add r0, r7, #0 + bl MOD54_021D8E64 + mov r0, #0x33 + bl FUN_02053708 + mov r1, #0xea + lsl r1, r1, #2 + str r0, [r7, r1] + mov r0, #0 + str r0, [r7, #0xc] + str r0, [r7, #0x14] + add r2, r7, #0 + str r0, [r7, #0x10] + mov r0, #0x56 + mov r1, #1 + add r2, #0x1c + mov r3, #0x33 + bl FUN_02006C08 + str r0, [r7, #0x18] + mov r1, #0x32 + ldr r0, _021D7A30 ; =0x00004A44 + mov r2, #0 + str r2, [r7, r0] + lsl r1, r1, #4 + str r2, [r7, r1] + mov r1, #2 + add r0, r0, #4 + str r1, [r7, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D7A30: .word 0x00004A44 + thumb_func_end MOD54_021D799C + + thumb_func_start MOD54_021D7A34 +MOD54_021D7A34: ; 0x021D7A34 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl MOD54_021D8F0C + ldr r0, [r6, #0x18] + bl FUN_02016A18 + mov r0, #0xea + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02016A18 + mov r4, #0 + add r5, r6, #0 +_021D7A50: + ldr r0, [r5, #0x2c] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _021D7A50 + ldr r0, [r6, #0x48] + bl FUN_02021A20 + ldr r0, [r6, #0x44] + bl FUN_02021A20 + pop {r4, r5, r6, pc} + thumb_func_end MOD54_021D7A34 + + thumb_func_start MOD54_021D7A6C +MOD54_021D7A6C: ; 0x021D7A6C + push {r4, lr} + add r4, r0, #0 + mov r1, #6 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #0 + bl FUN_020178A0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D7A6C + + thumb_func_start MOD54_021D7AA0 +MOD54_021D7AA0: ; 0x021D7AA0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #2 + ldr r4, [r5] + mov r1, #0 + lsl r0, r0, #8 + str r0, [sp] + mov r0, #0x33 + str r0, [sp, #4] + mov r0, #0x56 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02006930 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x33 + str r0, [sp, #4] + mov r0, #0xc + add r1, r0, #0 + mov r2, #4 + mov r3, #0 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x33 + bl FUN_02002EEC + mov r1, #0x1a + mov r0, #4 + lsl r1, r1, #4 + mov r2, #0x33 + bl FUN_02002EEC + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x33 + str r0, [sp, #0xc] + mov r0, #0xc + mov r1, #0xa + add r2, r4, #0 + mov r3, #6 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + mov r0, #0x33 + str r0, [sp, #0xc] + mov r0, #0xc + mov r1, #0xb + add r2, r4, #0 + mov r3, #6 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + mov r0, #2 + lsl r0, r0, #0xc + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x33 + str r0, [sp, #0xc] + mov r0, #0x56 + mov r1, #2 + add r2, r4, #0 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + mov r0, #6 + lsl r0, r0, #8 + str r0, [sp, #4] + mov r3, #1 + str r3, [sp, #8] + mov r0, #0x33 + str r0, [sp, #0xc] + mov r0, #0x56 + mov r1, #3 + add r2, r4, #0 + bl FUN_020068C8 + ldr r0, [r5, #8] + ldr r0, [r0, #8] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x33 + str r0, [sp, #4] + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #0 + str r1, [sp] + mov r0, #0x33 + str r0, [sp, #4] + add r0, r4, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D7AA0 + + thumb_func_start MOD54_021D7B8C +MOD54_021D7B8C: ; 0x021D7B8C + push {r4, lr} + sub sp, #0x10 + ldr r4, _021D7BB8 ; =0x021D96A4 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_0201D040 + mov r0, #0x14 + mov r1, #0x33 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_021D7BB8: .word 0x021D96A4 + thumb_func_end MOD54_021D7B8C + + thumb_func_start MOD54_021D7BBC +MOD54_021D7BBC: ; 0x021D7BBC + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7e + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x20 + str r3, [sp, #0xc] + mov r2, #0x33 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + add r1, r6, #0 + mov r0, #0x1e + add r1, #0x54 + mov r2, #0x33 + bl FUN_02008C9C + str r0, [r6, #0x50] + add r0, r6, #0 + mov r2, #1 + add r0, #0x54 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r7, #0x5f + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_021D7C02: + mov r0, #3 + add r1, r4, #0 + mov r2, #0x33 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _021D7C02 + mov r0, #2 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + mov r0, #0x33 + str r0, [sp, #8] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0x56 + mov r2, #0xc + bl FUN_02008F34 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r6, r1] + mov r0, #2 + str r0, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r0, #0xf + str r0, [sp, #8] + mov r0, #0x33 + sub r1, #0x2c + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x56 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x1b + lsl r1, r1, #4 + str r0, [r6, r1] + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x33 + sub r1, #0x2c + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x56 + mov r2, #0xd + mov r3, #1 + bl FUN_020090AC + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r6, r1] + mov r0, #2 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x33 + sub r1, #0x2c + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x56 + mov r2, #0xe + mov r3, #1 + bl FUN_020090AC + mov r1, #0x6e + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009A50 + mov r0, #0x1b + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02009CF0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD54_021D7BBC + + thumb_func_start MOD54_021D7CAC +MOD54_021D7CAC: ; 0x021D7CAC + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + mov r1, #2 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #3 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r3, #0x5f + str r0, [sp, #0xc] + mov r2, #1 + lsl r3, r3, #2 + str r2, [sp, #0x10] + ldr r2, [r5, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r5, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r5, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r5, r2] + add r3, #0x88 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r5, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + ldr r0, [r5, #0x50] + mov r1, #0 + str r0, [sp, #0x2c] + mov r0, #0x81 + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x30] + mov r0, #1 + lsl r0, r0, #0xc + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r1, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x50] + str r0, [sp, #0x54] + mov r0, #0x33 + str r0, [sp, #0x58] + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #0x15 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r7, #0x8b + ldr r4, _021D7DB0 ; =0x021D96B4 + mov r6, #0 + lsl r7, r7, #2 +_021D7D4C: + ldrh r0, [r4, #4] + lsl r0, r0, #0xc + str r0, [sp, #0x34] + ldrh r0, [r4, #6] + lsl r0, r0, #0xc + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x8b + lsl r0, r0, #2 + sub r1, r6, #1 + lsl r1, r1, #1 + ldr r0, [r5, r0] + add r1, #0x1b + bl FUN_02020130 + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r6, #5 + blt _021D7D4C + mov r0, #6 + lsl r0, r0, #0xe + str r0, [sp, #0x34] + mov r0, #0x1a + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D7DB0: .word 0x021D96B4 + thumb_func_end MOD54_021D7CAC + + thumb_func_start MOD54_021D7DB4 +MOD54_021D7DB4: ; 0x021D7DB4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0x14 + str r0, [sp] + mov r0, #6 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _021D7E90 ; =0x000001C3 + mov r1, #0xbe + str r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r4] + add r1, r4, r1 + mov r2, #5 + mov r3, #0x1a + bl FUN_02019064 + mov r0, #0xbe + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x28 + mov r1, #0xba + str r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0xba + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #1 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + mov r0, #0x94 + mov r1, #0xc2 + str r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r4] + add r1, r4, r1 + mov r2, #0 + mov r3, #3 + bl FUN_02019064 + mov r0, #0xc2 + lsl r0, r0, #2 + ldr r1, [r4, #0x48] + add r0, r4, r0 + mov r2, #0 + bl MOD54_021D7E98 + mov r0, #6 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0xb + str r0, [sp, #8] + mov r0, #0xf + str r0, [sp, #0xc] + mov r0, #0xc8 + mov r1, #0xa6 + str r0, [sp, #0x10] + lsl r1, r1, #2 + ldr r0, [r4] + add r1, r4, r1 + mov r2, #0 + mov r3, #2 + bl FUN_02019064 + mov r0, #0xa6 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r0, #0xa6 + lsl r0, r0, #2 + ldr r2, _021D7E94 ; =0x00010300 + add r0, r4, r0 + mov r1, #0 + add r3, r4, #0 + bl MOD54_021D8AF8 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_021D7E90: .word 0x000001C3 +_021D7E94: .word 0x00010300 + thumb_func_end MOD54_021D7DB4 + + thumb_func_start MOD54_021D7E98 +MOD54_021D7E98: ; 0x021D7E98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r4, r2, #0 + mov r0, #1 + mov r2, #0 + add r7, r1, #0 + bl FUN_02002E14 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0 + bl FUN_02019620 + mov r1, #1 + str r1, [sp] + mov r0, #0x41 + mov r3, #0xd0 + str r4, [sp, #4] + sub r4, r3, r6 + lsl r0, r0, #0xa + lsr r3, r4, #0x1f + str r0, [sp, #8] + mov r0, #0 + add r3, r4, r3 + str r0, [sp, #0xc] + add r0, r5, #0 + add r2, r7, #0 + asr r3, r3, #1 + bl FUN_0201BDE0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD54_021D7E98 + + thumb_func_start MOD54_021D7EDC +MOD54_021D7EDC: ; 0x021D7EDC + push {r4, lr} + add r4, r0, #0 + mov r0, #0xa6 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xc2 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xbe + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 + mov r0, #0xba + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D7EDC + + thumb_func_start MOD54_021D7F0C +MOD54_021D7F0C: ; 0x021D7F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + mov r1, #1 + bl FUN_020334E8 + bl FUN_02031190 + cmp r0, #0 + bne _021D7F2E + add r0, r5, #0 + mov r1, #2 + mov r2, #0 + bl MOD54_021D8C90 + b _021D7F38 +_021D7F2E: + add r0, r5, #0 + mov r1, #8 + mov r2, #0 + bl MOD54_021D8C90 +_021D7F38: + add r0, r5, #0 + mov r1, #3 + bl MOD54_021D80BC + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D7F0C + + thumb_func_start MOD54_021D7F44 +MOD54_021D7F44: ; 0x021D7F44 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD54_021D7F70 + bl FUN_02031190 + cmp r0, #0 + bne _021D7F66 + bl MOD54_021D8ADC + cmp r0, #1 + beq _021D7F6C + add r0, r5, #0 + bl MOD54_021D8C04 + b _021D7F6C +_021D7F66: + add r0, r5, #0 + bl MOD54_021D8C04 +_021D7F6C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D7F44 + + thumb_func_start MOD54_021D7F70 +MOD54_021D7F70: ; 0x021D7F70 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _021D808C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _021D7FD6 + bl FUN_02031190 + cmp r0, #0 + bne _021D8086 + bl MOD54_021D8C08 + ldr r1, _021D8090 ; =0x00004A48 + ldr r2, [r4, r1] + cmp r2, r0 + bne _021D7FCC + add r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021D7FCC + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #2] + add r0, r4, #0 + mov r1, #3 + mov r2, #0 + bl MOD54_021D8C90 + add r0, r4, #0 + mov r1, #0x16 + bl MOD54_021D80BC + add r1, sp, #0 + mov r0, #0x75 + add r1, #2 + mov r2, #1 + bl FUN_02030ADC + add r0, r4, #0 + mov r1, #0 + bl MOD54_021D8F40 + add sp, #4 + pop {r3, r4, pc} +_021D7FCC: + ldr r0, _021D8094 ; =0x000005F2 + bl FUN_020054C8 + add sp, #4 + pop {r3, r4, pc} +_021D7FD6: + mov r0, #2 + tst r0, r1 + beq _021D805A + bl FUN_02031190 + cmp r0, #0 + beq _021D800C + ldr r0, _021D8098 ; =0x00004A3C + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D8002 + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD54_021D8C90 + add r0, r4, #0 + mov r1, #4 + bl MOD54_021D80BC + add sp, #4 + pop {r3, r4, pc} +_021D8002: + ldr r0, _021D8094 ; =0x000005F2 + bl FUN_020054C8 + add sp, #4 + pop {r3, r4, pc} +_021D800C: + bl FUN_02030F20 + ldr r1, _021D8090 ; =0x00004A48 + ldr r2, [r4, r1] + cmp r2, r0 + bne _021D8050 + add r1, #8 + ldr r0, [r4, r1] + cmp r0, #0 + bne _021D8050 + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #1] + add r0, r4, #0 + mov r1, #4 + mov r2, #0 + bl MOD54_021D8C90 + add r0, r4, #0 + mov r1, #4 + bl MOD54_021D80BC + add r1, sp, #0 + mov r0, #0x75 + add r1, #1 + mov r2, #1 + bl FUN_02030ADC + add r0, r4, #0 + mov r1, #0 + bl MOD54_021D8F40 + add sp, #4 + pop {r3, r4, pc} +_021D8050: + ldr r0, _021D8094 ; =0x000005F2 + bl FUN_020054C8 + add sp, #4 + pop {r3, r4, pc} +_021D805A: + ldr r0, _021D809C ; =0x00004A4C + ldr r0, [r4, r0] + cmp r0, #0 + bne _021D8086 + bl FUN_02031190 + cmp r0, #0 + bne _021D8086 + bl FUN_02030F20 + ldr r1, _021D8090 ; =0x00004A48 + ldr r1, [r4, r1] + cmp r1, r0 + bne _021D8086 + mov r1, #0 + add r0, sp, #0 + strb r1, [r0] + mov r0, #0x75 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030ADC +_021D8086: + add sp, #4 + pop {r3, r4, pc} + nop +_021D808C: .word 0x021C48B8 +_021D8090: .word 0x00004A48 +_021D8094: .word 0x000005F2 +_021D8098: .word 0x00004A3C +_021D809C: .word 0x00004A4C + thumb_func_end MOD54_021D7F70 + + thumb_func_start MOD54_021D80A0 +MOD54_021D80A0: ; 0x021D80A0 + bx lr + .align 2, 0 + thumb_func_end MOD54_021D80A0 + + thumb_func_start MOD54_021D80A4 +MOD54_021D80A4: ; 0x021D80A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #2 + bl MOD54_021D80BC + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D80A4 + + thumb_func_start MOD54_021D80BC +MOD54_021D80BC: ; 0x021D80BC + mov r2, #0xd1 + mov r3, #0x1e + lsl r2, r2, #2 + str r3, [r0, r2] + add r2, r2, #4 + str r1, [r0, r2] + bx lr + .align 2, 0 + thumb_func_end MOD54_021D80BC + + thumb_func_start MOD54_021D80CC +MOD54_021D80CC: ; 0x021D80CC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + add r4, r1, #0 + bl MOD54_021D8D20 + cmp r0, #0 + beq _021D80E6 + mov r0, #0xd2 + lsl r0, r0, #2 + ldr r1, [r5, r0] + sub r0, r0, #4 + str r1, [r5, r0] +_021D80E6: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D80CC + + thumb_func_start MOD54_021D80F0 +MOD54_021D80F0: ; 0x021D80F0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _021D810C + mov r0, #0 + str r0, [sp] + mov r0, #0x75 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030ADC +_021D810C: + mov r0, #0xd1 + mov r1, #3 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D80F0 + + thumb_func_start MOD54_021D8120 +MOD54_021D8120: ; 0x021D8120 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x33 + add r4, r1, #0 + str r0, [sp] + ldr r0, [r5] + ldr r1, _021D814C ; =0x021D9678 + mov r2, #0x1f + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x32 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #5 + add r1, #0x24 + str r0, [r5, r1] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D814C: .word 0x021D9678 + thumb_func_end MOD54_021D8120 + + thumb_func_start MOD54_021D8150 +MOD54_021D8150: ; 0x021D8150 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + beq _021D8184 + ldr r0, _021D826C ; =0x00004A3C + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D81A8 + ldr r0, _021D8270 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xc3 + tst r0, r1 + beq _021D8178 + ldr r0, _021D8274 ; =0x000005F2 + bl FUN_020054C8 +_021D8178: + add r0, r5, #0 + bl MOD54_021D80A0 + add sp, #8 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021D8184: + ldr r0, _021D8278 ; =0x00004A50 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D81A8 + ldr r0, _021D8270 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xc3 + tst r0, r1 + beq _021D819C + ldr r0, _021D8274 ; =0x000005F2 + bl FUN_020054C8 +_021D819C: + add r0, r5, #0 + bl MOD54_021D80A0 + add sp, #8 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021D81A8: + bl MOD54_021D8C08 + add r6, r0, #0 + bl FUN_02030F20 + cmp r6, r0 + beq _021D81C2 + add r0, r5, #0 + bl MOD54_021D80A0 + add sp, #8 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_021D81C2: + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x33 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021D825E + sub r1, r1, #1 + cmp r0, r1 + bne _021D8204 + bl FUN_02031190 + cmp r0, #0 + bne _021D81FA + mov r0, #0 + str r0, [sp, #4] + mov r0, #0x75 + add r1, sp, #4 + mov r2, #1 + bl FUN_02030ADC + add r0, r5, #0 + mov r1, #1 + bl MOD54_021D8F40 +_021D81FA: + add r0, r5, #0 + mov r1, #0 + bl MOD54_021D80BC + b _021D8256 +_021D8204: + bl FUN_02031190 + cmp r0, #0 + bne _021D8220 + add r0, r5, #0 + mov r1, #0xb + bl MOD54_021D80BC + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD54_021D8C90 + b _021D8256 +_021D8220: + add r0, sp, #0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r1, #0 + add r0, sp, #0 + strb r1, [r0, #2] + bl FUN_02031190 + add r1, sp, #0 + strb r0, [r1] + ldr r0, _021D827C ; =0x00004A54 + mov r1, #1 + strb r1, [r5, r0] + mov r1, #0 + add r0, #0xa + strh r1, [r5, r0] + mov r0, #0xd1 + mov r1, #6 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0x70 + add r1, sp, #0 + mov r2, #4 + bl FUN_02030ADC +_021D8256: + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] +_021D825E: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_021D826C: .word 0x00004A3C +_021D8270: .word 0x021C48B8 +_021D8274: .word 0x000005F2 +_021D8278: .word 0x00004A50 +_021D827C: .word 0x00004A54 + thumb_func_end MOD54_021D8150 + + thumb_func_start MOD54_021D8280 +MOD54_021D8280: ; 0x021D8280 + push {r4, lr} + add r4, r1, #0 + ldr r1, _021D8294 ; =0x00004A5E + mov r2, #0 + strh r2, [r0, r1] + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r4, pc} + nop +_021D8294: .word 0x00004A5E + thumb_func_end MOD54_021D8280 + + thumb_func_start MOD54_021D8298 +MOD54_021D8298: ; 0x021D8298 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02030F20 + ldr r1, _021D8318 ; =0x00004A5C + ldrh r1, [r5, r1] + cmp r1, r0 + bne _021D82B6 + bl MOD54_021D8C08 + ldr r1, _021D8318 ; =0x00004A5C + ldrh r2, [r5, r1] + cmp r2, r0 + beq _021D82CE +_021D82B6: + ldr r0, _021D831C ; =0x00004A5E + mov r1, #0 + strh r1, [r5, r0] + mov r0, #0xd1 + mov r1, #8 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021D82CE: + add r0, r1, #2 + ldrsh r0, [r5, r0] + add r2, r0, #1 + add r0, r1, #2 + strh r2, [r5, r0] + ldrsh r0, [r5, r0] + cmp r0, #0x1e + ble _021D830E + add r0, sp, #0 + mov r1, #0 + mov r2, #4 + bl MI_CpuFill8 + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #2] + bl FUN_02031190 + add r1, sp, #0 + strb r0, [r1] + mov r0, #0x70 + add r1, sp, #0 + mov r2, #4 + bl FUN_02030ADC + ldr r0, _021D831C ; =0x00004A5E + mov r1, #0 + strh r1, [r5, r0] + mov r0, #0xd1 + mov r1, #9 + lsl r0, r0, #2 + str r1, [r5, r0] +_021D830E: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D8318: .word 0x00004A5C +_021D831C: .word 0x00004A5E + thumb_func_end MOD54_021D8298 + + thumb_func_start MOD54_021D8320 +MOD54_021D8320: ; 0x021D8320 + push {r3, r4, r5, lr} + ldr r2, _021D833C ; =0x00004A54 + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + strb r1, [r5, r2] + bl MOD54_021D80BC + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D833C: .word 0x00004A54 + thumb_func_end MOD54_021D8320 + + thumb_func_start MOD54_021D8340 +MOD54_021D8340: ; 0x021D8340 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x33 + add r4, r1, #0 + str r0, [sp] + ldr r0, [r5] + ldr r1, _021D836C ; =0x021D9678 + mov r2, #0x1f + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x32 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0x17 + add r1, #0x24 + str r0, [r5, r1] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D836C: .word 0x021D9678 + thumb_func_end MOD54_021D8340 + + thumb_func_start MOD54_021D8370 +MOD54_021D8370: ; 0x021D8370 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD54_021D8C08 + ldr r1, _021D8410 ; =0x00004A48 + ldr r2, [r5, r1] + cmp r2, r0 + bne _021D838A + add r1, #8 + ldr r0, [r5, r1] + cmp r0, #0 + beq _021D83A4 +_021D838A: + ldr r0, _021D8414 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xc3 + tst r0, r1 + beq _021D839A + ldr r0, _021D8418 ; =0x000005F2 + bl FUN_020054C8 +_021D839A: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021D83A4: + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x33 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021D8404 + sub r1, r1, #1 + cmp r0, r1 + bne _021D83DE + mov r0, #0 + str r0, [sp] + mov r0, #0x75 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030ADC + add r0, r5, #0 + mov r1, #1 + bl MOD54_021D8F40 + add r0, r5, #0 + mov r1, #0 + bl MOD54_021D80BC + b _021D83FC +_021D83DE: + bl FUN_02031190 + cmp r0, #0 + bne _021D83F8 + mov r0, #0xd1 + mov r1, #0x18 + lsl r0, r0, #2 + str r1, [r5, r0] + bl MOD54_021D8C08 + ldr r1, _021D841C ; =0x00004A56 + strb r0, [r5, r1] + b _021D83FC +_021D83F8: + bl ErrorHandling +_021D83FC: + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] +_021D8404: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D8410: .word 0x00004A48 +_021D8414: .word 0x021C48B8 +_021D8418: .word 0x000005F2 +_021D841C: .word 0x00004A56 + thumb_func_end MOD54_021D8370 + + thumb_func_start MOD54_021D8420 +MOD54_021D8420: ; 0x021D8420 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D8448 ; =0x00004A57 + add r4, r1, #0 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _021D8442 + mov r1, #0 + mov r0, #0x73 + add r2, r1, #0 + bl FUN_02030ADC + cmp r0, #1 + bne _021D8442 + ldr r0, _021D8448 ; =0x00004A57 + mov r1, #1 + strb r1, [r5, r0] +_021D8442: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D8448: .word 0x00004A57 + thumb_func_end MOD54_021D8420 + + thumb_func_start MOD54_021D844C +MOD54_021D844C: ; 0x021D844C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + ldr r2, [r4, #0x48] + mov r1, #0x12 + bl FUN_0200A8E0 + mov r0, #0xc2 + lsl r0, r0, #2 + ldr r1, [r4, #0x48] + add r0, r4, r0 + mov r2, #0 + bl MOD54_021D7E98 + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0x25 + bl FUN_02020130 + mov r0, #1 + str r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D844C + + thumb_func_start MOD54_021D847C +MOD54_021D847C: ; 0x021D847C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _021D848E + bl FUN_02030F20 +_021D848E: + bl FUN_02030F20 + ldr r1, _021D84A8 ; =0x00004A34 + ldr r1, [r5, r1] + cmp r1, r0 + bne _021D84A2 + mov r0, #0xd1 + mov r1, #0x1a + lsl r0, r0, #2 + str r1, [r5, r0] +_021D84A2: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D84A8: .word 0x00004A34 + thumb_func_end MOD54_021D847C + + thumb_func_start MOD54_021D84AC +MOD54_021D84AC: ; 0x021D84AC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D84CC ; =0x00004A38 + add r4, r1, #0 + ldr r1, _021D84D0 ; =0x00000F74 + ldr r0, [r5, r0] + add r1, r5, r1 + bl MOD54_021D95CC + mov r0, #0xd1 + mov r1, #0x1b + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D84CC: .word 0x00004A38 +_021D84D0: .word 0x00000F74 + thumb_func_end MOD54_021D84AC + + thumb_func_start MOD54_021D84D4 +MOD54_021D84D4: ; 0x021D84D4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r0, _021D8514 ; =0x021C4918 + mov r1, #1 + strb r1, [r0, #8] + mov r0, #0x33 + bl FUN_020294F4 + add r1, r0, #0 + ldr r0, [r5, #8] + mov r2, #4 + ldr r0, [r0, #0x10] + bl FUN_02028AD4 + ldr r0, [r5, #8] + mov r1, #0x14 + ldr r0, [r0, #0xc] + bl FUN_0202A170 + mov r0, #0x3a + lsl r0, r0, #4 + add r0, r5, r0 + bl FUN_020336C0 + mov r0, #0xd1 + mov r1, #0x1c + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D8514: .word 0x021C4918 + thumb_func_end MOD54_021D84D4 + + thumb_func_start MOD54_021D8518 +MOD54_021D8518: ; 0x021D8518 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _021D852A + bl FUN_02030F20 +_021D852A: + ldr r0, [r5, #8] + mov r2, #0x3a + lsl r2, r2, #4 + ldr r0, [r0] + mov r1, #2 + add r2, r5, r2 + bl FUN_020336C8 + cmp r0, #0 + beq _021D8576 + ldr r0, _021D857C ; =0x00000658 + mov r1, #8 + bl FUN_020054F0 + add r0, r5, #0 + mov r1, #0xd + mov r2, #0 + bl MOD54_021D8C90 + add r0, r5, #0 + mov r1, #0x1d + bl MOD54_021D80BC + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_02020130 + mov r1, #0 + mov r0, #0x35 + str r1, [r5, #0xc] + lsl r0, r0, #4 + str r1, [r5, r0] + ldr r0, _021D8580 ; =0x021C4918 + strb r1, [r0, #8] + ldr r0, _021D8584 ; =0x00004A40 + strb r1, [r5, r0] +_021D8576: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D857C: .word 0x00000658 +_021D8580: .word 0x021C4918 +_021D8584: .word 0x00004A40 + thumb_func_end MOD54_021D8518 + + thumb_func_start MOD54_021D8588 +MOD54_021D8588: ; 0x021D8588 + push {r3, r4} + mov r2, #0x35 + lsl r2, r2, #4 + ldr r4, [r0, r2] + add r3, r4, #1 + str r3, [r0, r2] + cmp r4, #0x3c + ble _021D859E + mov r3, #0xf + sub r2, #0xc + str r3, [r0, r2] +_021D859E: + add r0, r1, #0 + pop {r3, r4} + bx lr + thumb_func_end MOD54_021D8588 + + thumb_func_start MOD54_021D85A4 +MOD54_021D85A4: ; 0x021D85A4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #5 + mov r2, #0 + bl MOD54_021D8C90 + add r0, r5, #0 + mov r1, #0xa + bl MOD54_021D80BC + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D85A4 + + thumb_func_start MOD54_021D85C4 +MOD54_021D85C4: ; 0x021D85C4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0x35 + lsl r0, r0, #4 + add r4, r1, #0 + ldr r1, [r5, r0] + add r1, r1, #1 + str r1, [r5, r0] + ldr r0, [r5, r0] + cmp r0, #0x3c + ble _021D85F4 + mov r1, #0x10 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x33 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r4, #3 +_021D85F4: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD54_021D85C4 + + thumb_func_start MOD54_021D8600 +MOD54_021D8600: ; 0x021D8600 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x33 + add r4, r1, #0 + str r0, [sp] + ldr r0, [r5] + ldr r1, _021D862C ; =0x021D9678 + mov r2, #0x1f + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x32 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0xc + add r1, #0x24 + str r0, [r5, r1] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D862C: .word 0x021D9678 + thumb_func_end MOD54_021D8600 + + thumb_func_start MOD54_021D8630 +MOD54_021D8630: ; 0x021D8630 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD54_021D8C08 + ldr r1, _021D86D0 ; =0x00004A48 + ldr r2, [r5, r1] + cmp r2, r0 + bne _021D864A + add r1, #8 + ldr r0, [r5, r1] + cmp r0, #0 + beq _021D8664 +_021D864A: + ldr r0, _021D86D4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #0xc3 + tst r0, r1 + beq _021D865A + ldr r0, _021D86D8 ; =0x000005F2 + bl FUN_020054C8 +_021D865A: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_021D8664: + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0x33 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _021D86C6 + sub r1, r1, #1 + cmp r0, r1 + bne _021D869C + mov r1, #0 + mov r0, #0xd1 + str r1, [sp] + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #0x75 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030ADC + add r0, r5, #0 + mov r1, #1 + bl MOD54_021D8F40 + b _021D86BE +_021D869C: + mov r0, #0xd1 + mov r1, #0xd + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0 + mov r0, #0x71 + add r2, r1, #0 + bl FUN_02030ADC + mov r0, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0200ABC0 +_021D86BE: + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] +_021D86C6: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D86D0: .word 0x00004A48 +_021D86D4: .word 0x021C48B8 +_021D86D8: .word 0x000005F2 + thumb_func_end MOD54_021D8630 + + thumb_func_start MOD54_021D86DC +MOD54_021D86DC: ; 0x021D86DC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _021D86F6 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl MOD54_021D8C90 + b _021D8710 +_021D86F6: + mov r0, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0200ABC0 + add r0, r5, #0 + mov r1, #0x10 + mov r2, #0 + bl MOD54_021D8C90 +_021D8710: + add r0, r5, #0 + mov r1, #0xe + bl MOD54_021D80BC + mov r0, #0x35 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D86DC + + thumb_func_start MOD54_021D872C +MOD54_021D872C: ; 0x021D872C + push {r4, lr} + add r4, r1, #0 + mov r1, #0x35 + lsl r1, r1, #4 + ldr r2, [r0, r1] + add r2, r2, #1 + str r2, [r0, r1] + ldr r2, [r0, r1] + cmp r2, #0x2d + ble _021D8746 + mov r2, #0xf + sub r1, #0xc + str r2, [r0, r1] +_021D8746: + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D872C + + thumb_func_start MOD54_021D8750 +MOD54_021D8750: ; 0x021D8750 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xc9 + add r4, r1, #0 + bl FUN_02031588 + mov r0, #0xd1 + mov r1, #0x10 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D8750 + + thumb_func_start MOD54_021D8770 +MOD54_021D8770: ; 0x021D8770 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0xc9 + add r5, r1, #0 + bl FUN_020315D8 + cmp r0, #0 + beq _021D87A2 + mov r0, #0 + add r1, r0, #0 + bl FUN_020334E8 + mov r1, #0x10 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x33 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r5, #3 +_021D87A2: + add r0, r4, #0 + bl MOD54_021D80A0 + add r0, r5, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D8770 + + thumb_func_start MOD54_021D87B0 +MOD54_021D87B0: ; 0x021D87B0 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #9 + mov r2, #0 + add r5, r0, #0 + bl MOD54_021D8C90 + mov r0, #0xd1 + mov r1, #0x12 + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D87B0 + + thumb_func_start MOD54_021D87D0 +MOD54_021D87D0: ; 0x021D87D0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + add r4, r1, #0 + bl MOD54_021D8D20 + cmp r0, #0 + beq _021D87E8 + mov r0, #0xd1 + mov r1, #0xa + lsl r0, r0, #2 + str r1, [r5, r0] +_021D87E8: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D87D0 + + thumb_func_start MOD54_021D87F4 +MOD54_021D87F4: ; 0x021D87F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x4c] + add r4, r1, #0 + cmp r0, #0xff + beq _021D8812 + bl MOD54_021D8D20 + cmp r0, #0 + bne _021D8812 + ldr r0, [r5, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C +_021D8812: + add r0, r5, #0 + mov r1, #0xf + mov r2, #1 + bl MOD54_021D8C90 + mov r0, #0xd1 + mov r1, #0x14 + lsl r0, r0, #2 + str r1, [r5, r0] + bl FUN_02031190 + cmp r0, #0 + bne _021D8834 + add r0, r5, #0 + mov r1, #0 + bl MOD54_021D8F40 +_021D8834: + bl FUN_02030F20 + ldr r1, _021D8848 ; =0x00004A58 + str r0, [r5, r1] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D8848: .word 0x00004A58 + thumb_func_end MOD54_021D87F4 + + thumb_func_start MOD54_021D884C +MOD54_021D884C: ; 0x021D884C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D8884 ; =0x00004A58 + add r4, r1, #0 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D886A + bl FUN_02030F20 + ldr r1, _021D8884 ; =0x00004A58 + ldr r2, [r5, r1] + cmp r2, r0 + beq _021D886A + mov r0, #0 + str r0, [r5, r1] +_021D886A: + mov r0, #0xd1 + mov r1, #0x15 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0 + add r0, #0xc + str r1, [r5, r0] + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D8884: .word 0x00004A58 + thumb_func_end MOD54_021D884C + + thumb_func_start MOD54_021D8888 +MOD54_021D8888: ; 0x021D8888 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _021D88E0 ; =0x00004A58 + add r4, r1, #0 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D88A6 + bl FUN_02030F20 + ldr r1, _021D88E0 ; =0x00004A58 + ldr r2, [r5, r1] + cmp r2, r0 + beq _021D88A6 + mov r0, #0 + str r0, [r5, r1] +_021D88A6: + mov r1, #0x35 + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r0, r0, #1 + str r0, [r5, r1] + ldr r0, [r5, r1] + cmp r0, #0x3c + ble _021D88D4 + ldr r0, _021D88E0 ; =0x00004A58 + ldr r0, [r5, r0] + cmp r0, #0 + bne _021D88D4 + mov r0, #0 + sub r1, #0xc + str r0, [r5, r1] + bl FUN_02031190 + cmp r0, #0 + bne _021D88D4 + add r0, r5, #0 + mov r1, #1 + bl MOD54_021D8F40 +_021D88D4: + add r0, r5, #0 + bl MOD54_021D80A0 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_021D88E0: .word 0x00004A58 + thumb_func_end MOD54_021D8888 + + thumb_func_start MOD54_021D88E4 +MOD54_021D88E4: ; 0x021D88E4 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r6, r2, #0 + cmp r4, #0xd + bgt _021D8906 + bge _021D891A + cmp r4, #8 + bgt _021D89BE + cmp r4, #2 + blt _021D89BE + beq _021D8914 + cmp r4, #7 + beq _021D89B8 + cmp r4, #8 + beq _021D89B8 + pop {r4, r5, r6, pc} +_021D8906: + cmp r4, #0x13 + bgt _021D890E + beq _021D896C + pop {r4, r5, r6, pc} +_021D890E: + cmp r4, #0x19 + beq _021D8934 + pop {r4, r5, r6, pc} +_021D8914: + bl MOD54_021D8D40 + b _021D89B8 +_021D891A: + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D89B8 + mov r1, #0x33 + bl FUN_020021EC + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + b _021D89B8 +_021D8934: + ldr r0, [r5, #0x4c] + bl MOD54_021D8D20 + cmp r0, #0 + bne _021D8948 + ldr r0, [r5, #0x4c] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C +_021D8948: + add r0, r5, #0 + mov r1, #0xc + mov r2, #0 + bl MOD54_021D8C90 + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D89B8 + mov r1, #0x33 + bl FUN_020021EC + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] + b _021D89B8 +_021D896C: + ldr r0, _021D89C0 ; =0x00004A54 + ldrb r0, [r5, r0] + cmp r0, #1 + beq _021D89BE + add r0, r6, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0200ABC0 + bl FUN_02031190 + cmp r6, r0 + beq _021D89BE + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _021D89A4 + mov r1, #0x33 + bl FUN_020021EC + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r5, r0] +_021D89A4: + bl FUN_02031190 + cmp r0, #0 + bne _021D89B8 + ldr r1, _021D89C4 ; =0x00004A50 + ldr r0, _021D89C8 ; =0x0000FFFF + ldr r2, [r5, r1] + eor r0, r6 + and r0, r2 + str r0, [r5, r1] +_021D89B8: + mov r0, #0xd1 + lsl r0, r0, #2 + str r4, [r5, r0] +_021D89BE: + pop {r4, r5, r6, pc} + .align 2, 0 +_021D89C0: .word 0x00004A54 +_021D89C4: .word 0x00004A50 +_021D89C8: .word 0x0000FFFF + thumb_func_end MOD54_021D88E4 + + thumb_func_start MOD54_021D89CC +MOD54_021D89CC: ; 0x021D89CC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #0xd1 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, #3 + bne _021D8A6C + cmp r4, #1 + beq _021D89EA + cmp r4, #0x13 + beq _021D8A2E + b _021D8A64 +_021D89EA: + add r0, r6, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0200ABC0 + add r0, r5, #0 + mov r1, #1 + bl MOD54_021D8F40 + mov r0, #0xd1 + lsl r0, r0, #2 + str r4, [r5, r0] + bl FUN_02030F20 + ldr r1, _021D8A84 ; =0x00004A48 + str r0, [r5, r1] + mov r0, #0 + add r1, #8 + str r0, [r5, r1] + bl FUN_02031190 + cmp r0, #0 + bne _021D8A7E + mov r2, #1 + mov r0, #0x75 + add r1, sp, #0 + str r2, [sp] + bl FUN_02030ADC + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021D8A2E: + add r0, r6, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r5, #0x24] + mov r1, #0 + bl FUN_0200ABC0 + bl FUN_02031190 + cmp r6, r0 + beq _021D8A7E + bl FUN_02031190 + cmp r0, #0 + bne _021D8A5A + ldr r1, _021D8A88 ; =0x00004A50 + ldr r0, _021D8A8C ; =0x0000FFFF + ldr r2, [r5, r1] + eor r0, r6 + and r0, r2 + str r0, [r5, r1] +_021D8A5A: + mov r0, #0xd1 + lsl r0, r0, #2 + add sp, #4 + str r4, [r5, r0] + pop {r3, r4, r5, r6, pc} +_021D8A64: + bl ErrorHandling + add sp, #4 + pop {r3, r4, r5, r6, pc} +_021D8A6C: + cmp r4, #1 + bne _021D8A7E + ldr r0, _021D8A88 ; =0x00004A50 + mov r1, #0 + str r1, [r5, r0] + bl FUN_02030F20 + ldr r1, _021D8A84 ; =0x00004A48 + str r0, [r5, r1] +_021D8A7E: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021D8A84: .word 0x00004A48 +_021D8A88: .word 0x00004A50 +_021D8A8C: .word 0x0000FFFF + thumb_func_end MOD54_021D89CC + + thumb_func_start MOD54_021D8A90 +MOD54_021D8A90: ; 0x021D8A90 + push {r3, lr} + ldrh r1, [r0] + add r1, #0xa + strh r1, [r0] + ldrh r2, [r0] + mov r1, #0x5a + lsl r1, r1, #2 + cmp r2, r1 + bls _021D8AA6 + mov r1, #0 + strh r1, [r0] +_021D8AA6: + ldrh r0, [r0] + bl FUN_0201B970 + mov r1, #0xa + add r2, r0, #0 + mul r2, r1 + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + asr r0, r0, #0xc + add r0, #0xf + lsl r2, r0, #5 + mov r0, #0x1d + orr r2, r0 + add r0, sp, #0 + strh r2, [r0] + add r0, sp, #0 + mov r2, #2 + bl GX_LoadOBJPltt + add r0, sp, #0 + mov r1, #0x2a + mov r2, #2 + bl GX_LoadOBJPltt + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD54_021D8A90 + + thumb_func_start MOD54_021D8ADC +MOD54_021D8ADC: ; 0x021D8ADC + push {r3, r4, r5, lr} + mov r5, #0 + add r4, r5, #0 +_021D8AE2: + add r0, r4, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _021D8AEE + add r5, r5, #1 +_021D8AEE: + add r4, r4, #1 + cmp r4, #5 + blt _021D8AE2 + add r0, r5, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D8ADC + + thumb_func_start MOD54_021D8AF8 +MOD54_021D8AF8: ; 0x021D8AF8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r3, [sp, #0x14] + add r6, r0, #0 + str r2, [sp, #0x10] + bl FUN_02031190 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + bl MOD54_021D8C2C + cmp r0, #0 + bne _021D8B18 + add sp, #0x28 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_021D8B18: + add r0, r6, #0 + mov r1, #0 + bl FUN_02019620 + ldr r7, [sp, #0x14] + mov r0, #0 + str r0, [sp, #0x20] + add r4, r7, #0 + mov r5, #1 +_021D8B2A: + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r0, [r7, r0] + cmp r0, #0 + beq _021D8BE4 + bl FUN_020239C0 + str r0, [sp, #0x24] + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r0, [r7, r0] + ldr r1, [r4, #0x2c] + bl FUN_02023990 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x24] + ldr r0, [r0, #0x24] + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x14] + ldr r0, [r0, #0x24] + ldr r1, [r1, #0x28] + mov r2, #1 + mov r3, #0x33 + bl FUN_0200A9C4 + str r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r1, r0 + str r5, [sp] + bne _021D8BAC + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8C00 ; =0x00020300 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r4, #0x2c] + add r0, r6, #0 + mov r3, #5 + bl FUN_0201BDE0 + str r5, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _021D8C00 ; =0x00020300 + ldr r2, [sp, #0x18] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + mov r1, #0 + mov r3, #0x46 + bl FUN_0201BDE0 + b _021D8BDE +_021D8BAC: + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x10] + mov r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r2, [r4, #0x2c] + add r0, r6, #0 + mov r3, #5 + bl FUN_0201BDE0 + str r5, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x10] + ldr r2, [sp, #0x18] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + add r0, r6, #0 + mov r1, #0 + mov r3, #0x46 + bl FUN_0201BDE0 +_021D8BDE: + ldr r0, [sp, #0x18] + bl FUN_02021A20 +_021D8BE4: + ldr r0, [sp, #0x20] + add r7, #8 + add r0, r0, #1 + add r4, r4, #4 + add r5, #0x12 + str r0, [sp, #0x20] + cmp r0, #5 + blt _021D8B2A + add r0, r6, #0 + bl FUN_020191D0 + mov r0, #1 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D8C00: .word 0x00020300 + thumb_func_end MOD54_021D8AF8 + + thumb_func_start MOD54_021D8C04 +MOD54_021D8C04: ; 0x021D8C04 + bx lr + .align 2, 0 + thumb_func_end MOD54_021D8C04 + + thumb_func_start MOD54_021D8C08 +MOD54_021D8C08: ; 0x021D8C08 + push {r3, r4, r5, lr} + mov r5, #0 + add r4, r5, #0 +_021D8C0E: + add r0, r4, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _021D8C1A + add r5, r5, #1 +_021D8C1A: + add r4, r4, #1 + cmp r4, #5 + blt _021D8C0E + add r0, r5, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD54_021D8C08 + + thumb_func_start MOD54_021D8C24 +MOD54_021D8C24: ; 0x021D8C24 + ldr r3, _021D8C28 ; =MOD54_021D8C08 + bx r3 + .align 2, 0 +_021D8C28: .word MOD54_021D8C08 + thumb_func_end MOD54_021D8C24 + + thumb_func_start MOD54_021D8C2C +MOD54_021D8C2C: ; 0x021D8C2C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + mov r7, #0xd9 + str r4, [sp] + add r5, r6, #0 + lsl r7, r7, #2 +_021D8C3A: + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r1, [r5, r0] + add r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + bl FUN_0202DFA4 + str r0, [r5, r7] + add r4, r4, #1 + add r5, #8 + cmp r4, #5 + blt _021D8C3A + mov r7, #0xda + mov r5, #0 + add r4, r6, #0 + mov r1, #1 + mov r0, #3 + lsl r7, r7, #2 +_021D8C60: + mov r2, #0xd9 + lsl r2, r2, #2 + ldr r3, [r6, r2] + ldr r2, [r6, r7] + cmp r2, r3 + beq _021D8C80 + str r1, [sp] + cmp r3, #0 + bne _021D8C7A + mov r2, #0xe3 + lsl r2, r2, #2 + str r0, [r4, r2] + b _021D8C80 +_021D8C7A: + mov r2, #0xe3 + lsl r2, r2, #2 + str r1, [r4, r2] +_021D8C80: + add r5, r5, #1 + add r6, #8 + add r4, r4, #4 + cmp r5, #5 + blt _021D8C60 + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD54_021D8C2C + + thumb_func_start MOD54_021D8C90 +MOD54_021D8C90: ; 0x021D8C90 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r7, r1, #0 + mov r0, #0xb4 + mov r1, #0x33 + add r6, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + ldr r0, [r5, #0x28] + add r1, r7, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x24] + ldr r1, [r5, #0x44] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r0, #0xba + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0xba + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + cmp r6, #0 + bne _021D8D00 + add r0, r5, #0 + bl MOD54_021D8F3C + mov r3, #0 + str r3, [sp] + str r0, [sp, #4] + str r3, [sp, #8] + mov r0, #0xba + lsl r0, r0, #2 + ldr r2, [r5, #0x44] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + add sp, #0xc + str r0, [r5, #0x4c] + pop {r4, r5, r6, r7, pc} +_021D8D00: + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0xba + lsl r0, r0, #2 + ldr r2, [r5, #0x44] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r0, #0xff + str r0, [r5, #0x4c] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD54_021D8C90 + + thumb_func_start MOD54_021D8D20 +MOD54_021D8D20: ; 0x021D8D20 + push {r3, lr} + cmp r0, #0xff + bne _021D8D2A + mov r0, #1 + pop {r3, pc} +_021D8D2A: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _021D8D3A + mov r0, #1 + pop {r3, pc} +_021D8D3A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD54_021D8D20 + + thumb_func_start MOD54_021D8D40 +MOD54_021D8D40: ; 0x021D8D40 + mov r1, #0xba + lsl r1, r1, #2 + add r0, r0, r1 + ldr r3, _021D8D4C ; =0x0200D0E1 + mov r1, #0 + bx r3 + .align 2, 0 +_021D8D4C: .word 0x0200D0E1 + thumb_func_end MOD54_021D8D40 + + thumb_func_start MOD54_021D8D50 +MOD54_021D8D50: ; 0x021D8D50 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #0xcb + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x14] + mov r0, #0xcf + lsl r0, r0, #2 + mov r4, #0 + add r0, r5, r0 + str r4, [sp, #8] + add r6, r5, #0 + mov r7, #0x1c + str r0, [sp, #0x18] +_021D8D72: + mov r0, #0xe3 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #3 + bhi _021D8E3E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8D88: ; jump table + .short _021D8E3E - _021D8D88 - 2 ; case 0 + .short _021D8D90 - _021D8D88 - 2 ; case 1 + .short _021D8E3E - _021D8D88 - 2 ; case 2 + .short _021D8E06 - _021D8D88 - 2 ; case 3 +_021D8D90: + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + bne _021D8D9E + bl ErrorHandling +_021D8D9E: + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_020239CC + str r0, [sp, #0xc] + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02023A28 + str r0, [sp, #0x10] + bl FUN_02031190 + cmp r4, r0 + bne _021D8DD0 + mov r0, #0x8b + ldr r1, [sp, #0xc] + lsl r0, r0, #2 + lsl r1, r1, #1 + ldr r0, [r5, r0] + add r1, #0x26 + bl FUN_02020130 + b _021D8DEC +_021D8DD0: + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0x10] + add r2, r4, #0 + bl MOD54_021D8EC8 + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [sp, #4] + bl FUN_02020130 +_021D8DEC: + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0xe3 + mov r1, #2 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r0, #1 + str r0, [sp, #8] + b _021D8E3E +_021D8E06: + bl FUN_02031190 + cmp r4, r0 + bne _021D8E2A + mov r0, #0xd9 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_020239CC + add r1, r0, #0 + mov r0, #0x8b + lsl r0, r0, #2 + lsl r1, r1, #1 + ldr r0, [r5, r0] + add r1, #0x27 + bl FUN_02020130 + b _021D8E36 +_021D8E2A: + mov r0, #0x8b + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r7, #0 + bl FUN_02020130 +_021D8E36: + mov r0, #0xe3 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_021D8E3E: + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, r0, #2 + add r5, r5, #4 + add r6, #8 + add r7, r7, #2 + str r0, [sp, #4] + cmp r4, #5 + blt _021D8D72 + ldr r0, [sp, #8] + cmp r0, #0 + beq _021D8E5C + ldr r0, _021D8E60 ; =0x0000064F + bl FUN_020054C8 +_021D8E5C: + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D8E60: .word 0x0000064F + thumb_func_end MOD54_021D8D50 + + thumb_func_start MOD54_021D8E64 +MOD54_021D8E64: ; 0x021D8E64 + push {r3, r4, lr} + sub sp, #4 + mov r2, #0xcf + add r4, r0, #0 + lsl r2, r2, #2 + mov r0, #0x68 + mov r1, #8 + add r2, r4, r2 + mov r3, #0x33 + bl FUN_02006C08 + mov r2, #0xcd + lsl r2, r2, #2 + str r0, [r4, r2] + add r2, #0xc + mov r0, #0x56 + mov r1, #7 + add r2, r4, r2 + mov r3, #0x33 + bl FUN_02006C08 + mov r3, #0xce + lsl r3, r3, #2 + str r0, [r4, r3] + mov r0, #0x33 + sub r3, #0xc + str r0, [sp] + mov r0, #0x68 + mov r1, #0x20 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BB0 + mov r1, #0xc9 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r3, #0x33 + str r3, [sp] + lsl r3, r3, #4 + mov r0, #0x56 + mov r1, #9 + mov r2, #1 + add r3, r4, r3 + bl FUN_02006BB0 + mov r1, #0xca + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD54_021D8E64 + + thumb_func_start MOD54_021D8EC8 +MOD54_021D8EC8: ; 0x021D8EC8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + ldr r0, [sp, #0x18] + add r1, r3, #0 + add r5, r2, #0 + bl FUN_020536C8 + add r4, r0, #0 + ldr r0, [r6, #4] + mov r2, #6 + ldr r6, [r0, #0xc] + ldr r0, [r7, #4] + lsl r2, r2, #8 + ldr r1, [r0, #0x14] + add r0, r4, #0 + mul r0, r2 + add r0, r1, r0 + ldr r1, _021D8F08 ; =0x021D9680 + lsl r3, r5, #1 + ldrh r1, [r1, r3] + bl GX_LoadOBJ + lsl r0, r4, #5 + add r1, r5, #7 + add r0, r6, r0 + lsl r1, r1, #5 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + nop +_021D8F08: .word 0x021D9680 + thumb_func_end MOD54_021D8EC8 + + thumb_func_start MOD54_021D8F0C +MOD54_021D8F0C: ; 0x021D8F0C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xcd + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xc9 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D8F0C + + thumb_func_start MOD54_021D8F3C +MOD54_021D8F3C: ; 0x021D8F3C + mov r0, #1 + bx lr + thumb_func_end MOD54_021D8F3C + + thumb_func_start MOD54_021D8F40 +MOD54_021D8F40: ; 0x021D8F40 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _021D8F8C + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _021D8F5E + mov r0, #1 + bl FUN_02032B6C + b _021D8F6E +_021D8F5E: + bl FUN_02030F20 + add r0, r4, r0 + cmp r0, #5 + ble _021D8F6A + mov r0, #5 +_021D8F6A: + bl FUN_02032B6C +_021D8F6E: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + ldr r0, _021D8F90 ; =0x00004A55 + bne _021D8F7E + mov r1, #2 + strb r1, [r5, r0] + pop {r3, r4, r5, pc} +_021D8F7E: + cmp r4, #0 + bne _021D8F88 + mov r1, #1 + strb r1, [r5, r0] + pop {r3, r4, r5, pc} +_021D8F88: + mov r1, #0 + strb r1, [r5, r0] +_021D8F8C: + pop {r3, r4, r5, pc} + nop +_021D8F90: .word 0x00004A55 + thumb_func_end MOD54_021D8F40 + + thumb_func_start MOD54_021D8F94 +MOD54_021D8F94: ; 0x021D8F94 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r0, #0 + add r6, r1, #0 + bl MOD54_021D8C08 + add r5, r0, #0 + ldr r0, _021D9088 ; =0x00004A48 + ldr r1, [r4, r0] + cmp r5, r1 + ble _021D8FBE + mov r2, #1 + add r0, sp, #0 + strb r2, [r0] + mov r0, #0x75 + add r1, sp, #0 + bl FUN_02030ADC + mov r1, #1 + ldr r0, _021D908C ; =0x00004A4C + b _021D8FC2 +_021D8FBE: + mov r1, #0 + add r0, r0, #4 +_021D8FC2: + str r1, [r4, r0] + ldr r0, _021D9090 ; =0x00004A44 + ldr r0, [r4, r0] + cmp r5, r0 + bne _021D8FD2 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D8FD2: + cmp r5, #5 + bhi _021D9078 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_021D8FE2: ; jump table + .short _021D9078 - _021D8FE2 - 2 ; case 0 + .short _021D8FEE - _021D8FE2 - 2 ; case 1 + .short _021D9032 - _021D8FE2 - 2 ; case 2 + .short _021D9032 - _021D8FE2 - 2 ; case 3 + .short _021D9032 - _021D8FE2 - 2 ; case 4 + .short _021D906A - _021D8FE2 - 2 ; case 5 +_021D8FEE: + bl FUN_02030F20 + cmp r0, #1 + bgt _021D8FFE + bl FUN_0202CB8C + cmp r0, #1 + bls _021D9004 +_021D8FFE: + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_021D9004: + mov r0, #0xd1 + mov r1, #0x11 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + sub r1, #0x12 + bl MOD54_021D8F40 + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _021D902C + mov r1, #0x33 + bl FUN_020021EC + mov r0, #0x32 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_021D902C: + add sp, #4 + mov r0, #2 + pop {r3, r4, r5, r6, pc} +_021D9032: + mov r0, #2 + bl FUN_02052B74 + ldr r0, _021D9090 ; =0x00004A44 + ldr r1, [r4, r0] + cmp r5, r1 + bge _021D9078 + add r0, #0x11 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _021D904E + cmp r0, #1 + beq _021D9058 + b _021D9060 +_021D904E: + add r0, r4, #0 + add r1, r6, #0 + bl MOD54_021D8F40 + b _021D9060 +_021D9058: + add r0, r4, #0 + mov r1, #0 + bl MOD54_021D8F40 +_021D9060: + bl FUN_02030F20 + ldr r1, _021D9088 ; =0x00004A48 + str r0, [r4, r1] + b _021D9078 +_021D906A: + mov r0, #9 + bl FUN_02052B74 + add r0, r4, #0 + add r1, r6, #0 + bl MOD54_021D8F40 +_021D9078: + bl MOD54_021D8C08 + ldr r1, _021D9090 ; =0x00004A44 + str r0, [r4, r1] + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_021D9088: .word 0x00004A48 +_021D908C: .word 0x00004A4C +_021D9090: .word 0x00004A44 + thumb_func_end MOD54_021D8F94 + + thumb_func_start MOD54_021D9094 +MOD54_021D9094: ; 0x021D9094 + mov r0, #0x2c + bx lr + thumb_func_end MOD54_021D9094 + + thumb_func_start MOD54_021D9098 +MOD54_021D9098: ; 0x021D9098 + add r0, #0x2c + bx lr + thumb_func_end MOD54_021D9098 + + thumb_func_start MOD54_021D909C +MOD54_021D909C: ; 0x021D909C + push {r4, r5, r6, r7} + add r7, r0, #0 + add r6, r7, #0 + mov ip, r1 + mov r5, #5 + add r6, #0xdc +_021D90A8: + add r4, r6, #0 + sub r4, #0x2c + add r3, r6, #0 + mov r2, #5 +_021D90B0: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D90B0 + ldr r0, [r4] + sub r5, r5, #1 + sub r6, #0x2c + str r0, [r3] + cmp r5, #2 + bgt _021D90A8 + add r7, #0x58 + mov r3, #5 +_021D90C8: + mov r2, ip + ldmia r2!, {r0, r1} + mov ip, r2 + stmia r7!, {r0, r1} + sub r3, r3, #1 + bne _021D90C8 + mov r0, ip + ldr r0, [r0] + str r0, [r7] + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 + thumb_func_end MOD54_021D909C + + thumb_func_start MOD54_021D90E0 +MOD54_021D90E0: ; 0x021D90E0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r4, r0, #0 + cmp r5, #2 + blt _021D90EE + cmp r5, #5 + ble _021D90F2 +_021D90EE: + bl ErrorHandling +_021D90F2: + add r2, r5, #1 + cmp r2, #5 + bgt _021D911A + mov r0, #0x2c + mul r0, r2 + add r3, r4, r0 +_021D90FE: + add r6, r3, #0 + add r7, r3, #0 + sub r6, #0x2c + mov r5, #5 +_021D9106: + ldmia r7!, {r0, r1} + stmia r6!, {r0, r1} + sub r5, r5, #1 + bne _021D9106 + ldr r0, [r7] + add r2, r2, #1 + add r3, #0x2c + str r0, [r6] + cmp r2, #5 + ble _021D90FE +_021D911A: + ldr r0, _021D9128 ; =0x0000FFFF + add r1, r4, #0 + add r4, #0xdc + add r1, #0xdc + strh r0, [r4] + strh r0, [r1, #0x10] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9128: .word 0x0000FFFF + thumb_func_end MOD54_021D90E0 + + thumb_func_start MOD54_021D912C +MOD54_021D912C: ; 0x021D912C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [sp] + add r5, r2, #0 + str r1, [sp, #4] + str r3, [sp, #8] + cmp r0, #0 + ble _021D91A6 + mov r7, #0x2c +_021D9144: + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + ldr r6, [r0] + ldr r0, [sp, #4] + cmp r1, r0 + beq _021D9194 + cmp r6, #0 + beq _021D9194 + add r0, r6, #0 + bl FUN_0202888C + cmp r0, #1 + beq _021D9194 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020288AC + cmp r0, #0 + bne _021D9194 + mov r4, #0 +_021D916C: + add r1, r4, #2 + add r2, r1, #0 + mul r2, r7 + add r0, r6, #0 + add r1, r5, r2 + bl FUN_020288AC + cmp r0, #0 + beq _021D9186 + add r0, r5, #0 + add r1, r4, #2 + bl MOD54_021D90E0 +_021D9186: + add r4, r4, #1 + cmp r4, #4 + blt _021D916C + add r0, r5, #0 + add r1, r6, #0 + bl MOD54_021D909C +_021D9194: + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r1, r0, #1 + ldr r0, [sp] + str r1, [sp, #0xc] + cmp r1, r0 + blt _021D9144 +_021D91A6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD54_021D912C + + thumb_func_start MOD54_021D91AC +MOD54_021D91AC: ; 0x021D91AC + mov r0, #0x12 + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD54_021D91AC + + thumb_func_start MOD54_021D91B4 +MOD54_021D91B4: ; 0x021D91B4 + mov r0, #0x12 + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD54_021D91B4 + + thumb_func_start MOD54_021D91BC +MOD54_021D91BC: ; 0x021D91BC + mov r0, #0x12 + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD54_021D91BC + + thumb_func_start MOD54_021D91C4 +MOD54_021D91C4: ; 0x021D91C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r3, [sp, #4] + add r5, r1, #0 + str r2, [sp] + bl FUN_020238F4 + add r4, r0, #0 + ldr r0, [sp, #4] + mov r7, #0 + cmp r0, #0 + ble _021D9234 +_021D91DC: + mov r0, #0 + add r1, r5, #0 + mov r2, #0x48 + bl MIi_CpuClearFast + add r0, r4, #0 + bl FUN_020239BC + str r0, [r5] + add r0, r4, #0 + bl FUN_020239CC + strb r0, [r5, #4] + mov r0, #0xa + strb r0, [r5, #5] + mov r0, #2 + strb r0, [r5, #6] + add r0, r4, #0 + bl FUN_0202398C + add r1, r0, #0 + add r0, r5, #0 + add r0, #8 + mov r2, #8 + bl StringCopyN + add r3, r5, #0 + ldr r6, [sp] + add r3, #0x18 + mov r2, #6 +_021D9218: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _021D9218 + mov r0, #0 + strb r0, [r5, #0x19] + ldr r0, [sp] + add r7, r7, #1 + add r0, #0x30 + str r0, [sp] + ldr r0, [sp, #4] + add r5, #0x48 + cmp r7, r0 + blt _021D91DC +_021D9234: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD54_021D91C4 + + thumb_func_start MOD54_021D9238 +MOD54_021D9238: ; 0x021D9238 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r0, #0 + add r0, r1, #0 + add r1, r4, #0 + bl FUN_020169D8 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02022504 + add r6, r0, #0 + add r0, r5, #0 + bl MOD54_021D91AC + cmp r4, r0 + beq _021D925E + bl ErrorHandling +_021D925E: + mov r2, #0x63 + lsl r2, r2, #2 + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, r2 + mov r3, #4 + bl MOD54_021D91C4 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD54_021D9238 + + thumb_func_start MOD54_021D9274 +MOD54_021D9274: ; 0x021D9274 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r0, #0 + add r0, r1, #0 + add r1, r4, #0 + bl FUN_020169D8 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02022504 + add r6, r0, #0 + add r0, r5, #0 + bl MOD54_021D91B4 + cmp r4, r0 + beq _021D929A + bl ErrorHandling +_021D929A: + add r6, #0xc + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + mov r3, #4 + bl MOD54_021D91C4 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD54_021D9274 + + thumb_func_start MOD54_021D92AC +MOD54_021D92AC: ; 0x021D92AC + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r5, r0, #0 + add r0, r1, #0 + add r1, r4, #0 + bl FUN_020169D8 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02022504 + add r6, r0, #0 + add r0, r5, #0 + bl MOD54_021D91BC + cmp r4, r0 + beq _021D92D2 + bl ErrorHandling +_021D92D2: + add r6, #0xcc + add r0, r5, #0 + add r1, r7, #0 + add r2, r6, #0 + mov r3, #4 + bl MOD54_021D91C4 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD54_021D92AC + + thumb_func_start MOD54_021D92E4 +MOD54_021D92E4: ; 0x021D92E4 + push {r4, r5} + ldrb r3, [r2, #0x18] + cmp r3, #0 + bne _021D92F2 + mov r0, #0 + pop {r4, r5} + bx lr +_021D92F2: + mov r4, #0 + cmp r1, #0 + ble _021D931E + add r5, r0, #0 +_021D92FA: + ldrb r3, [r5, #0x18] + cmp r3, #0 + bne _021D9316 + mov r1, #0x48 + mul r1, r4 + add r4, r0, r1 + mov r3, #9 +_021D9308: + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _021D9308 + mov r0, #1 + pop {r4, r5} + bx lr +_021D9316: + add r4, r4, #1 + add r5, #0x48 + cmp r4, r1 + blt _021D92FA +_021D931E: + mov r5, #0 + cmp r1, #0 + ble _021D934A + add r4, r0, #0 +_021D9326: + ldrb r3, [r4, #0x19] + cmp r3, #3 + blo _021D9342 + mov r1, #0x48 + mul r1, r5 + add r4, r0, r1 + mov r3, #9 +_021D9334: + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _021D9334 + mov r0, #1 + pop {r4, r5} + bx lr +_021D9342: + add r5, r5, #1 + add r4, #0x48 + cmp r5, r1 + blt _021D9326 +_021D934A: + mov r0, #0 + pop {r4, r5} + bx lr + thumb_func_end MOD54_021D92E4 + + thumb_func_start MOD54_021D9350 +MOD54_021D9350: ; 0x021D9350 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp] + str r1, [sp, #4] + add r7, r2, #0 + add r0, sp, #0x18 + mov r1, #0 + mov r2, #0x10 + str r3, [sp, #8] + ldr r5, [sp, #0x40] + bl MI_CpuFill8 + mov r4, #0 + add r6, r4, #0 + cmp r7, #0 + ble _021D93D8 + str r5, [sp, #0x10] +_021D9372: + ldr r0, [sp, #0x10] + ldr r0, [r0] + cmp r0, #0 + beq _021D93CC + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0xc] + b _021D93C6 +_021D9382: + add r0, r4, #1 + add r1, r7, #0 + bl _s32_div_f + add r4, r1, #0 +_021D938C: + lsl r2, r4, #2 + ldr r0, [r5, r2] + cmp r0, #0 + beq _021D9382 + cmp r4, r6 + beq _021D9382 + add r0, sp, #0x18 + ldrb r0, [r0, r4] + cmp r0, #4 + beq _021D9382 + add r1, r0, #1 + add r0, sp, #0x18 + strb r1, [r0, r4] + ldr r0, [sp, #8] + cmp r4, r0 + beq _021D93BA + ldr r3, [r5, r2] + ldr r2, [sp, #0xc] + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r3, r2 + bl MOD54_021D92E4 +_021D93BA: + ldr r0, [sp, #0xc] + add r0, #0x48 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] +_021D93C6: + ldr r0, [sp, #0x14] + cmp r0, #4 + blt _021D938C +_021D93CC: + ldr r0, [sp, #0x10] + add r6, r6, #1 + add r0, r0, #4 + str r0, [sp, #0x10] + cmp r6, r7 + blt _021D9372 +_021D93D8: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD54_021D9350 + + thumb_func_start MOD54_021D93DC +MOD54_021D93DC: ; 0x021D93DC + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x93 + add r4, r2, #0 + lsl r1, r1, #2 + str r3, [sp] + add r0, r0, r1 + mov r1, #0x10 + add r2, r5, #0 + add r3, r4, #0 + bl MOD54_021D9350 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD54_021D93DC + + thumb_func_start MOD54_021D93F8 +MOD54_021D93F8: ; 0x021D93F8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, _021D9410 ; =0x000006CC + add r4, r2, #0 + str r3, [sp] + add r0, r0, r1 + mov r1, #8 + add r2, r5, #0 + add r3, r4, #0 + bl MOD54_021D9350 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D9410: .word 0x000006CC + thumb_func_end MOD54_021D93F8 + + thumb_func_start MOD54_021D9414 +MOD54_021D9414: ; 0x021D9414 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r1, _021D942C ; =0x0000090C + add r4, r2, #0 + str r3, [sp] + add r0, r0, r1 + mov r1, #8 + add r2, r5, #0 + add r3, r4, #0 + bl MOD54_021D9350 + pop {r3, r4, r5, pc} + .align 2, 0 +_021D942C: .word 0x0000090C + thumb_func_end MOD54_021D9414 + + thumb_func_start MOD54_021D9430 +MOD54_021D9430: ; 0x021D9430 + push {r3, lr} + bl FUN_0202881C + bl MOD54_021D9094 + pop {r3, pc} + thumb_func_end MOD54_021D9430 + + thumb_func_start MOD54_021D943C +MOD54_021D943C: ; 0x021D943C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r2, #0 + bl FUN_0202881C + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020169D8 + add r4, r0, #0 + add r0, r6, #0 + bl MOD54_021D9098 + add r1, r4, #0 + add r2, r5, #0 + bl MIi_CpuCopyFast + add r0, r4, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD54_021D943C + + thumb_func_start MOD54_021D9464 +MOD54_021D9464: ; 0x021D9464 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202881C + add r2, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r3, [r4, #0x10] + bl MOD54_021D912C + pop {r4, pc} + thumb_func_end MOD54_021D9464 + + thumb_func_start MOD54_021D947C +MOD54_021D947C: ; 0x021D947C + push {r3, lr} + bl FUN_02027E24 + bl FUN_02026FE0 + pop {r3, pc} + thumb_func_end MOD54_021D947C + + thumb_func_start MOD54_021D9488 +MOD54_021D9488: ; 0x021D9488 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r2, #0 + bl FUN_02027E24 + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020169D8 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl FUN_02027008 + add r1, r4, #0 + add r2, r5, #0 + bl MIi_CpuCopyFast + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD54_021D9488 + + thumb_func_start MOD54_021D94B4 +MOD54_021D94B4: ; 0x021D94B4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02027E24 + add r2, r0, #0 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + lsl r0, r0, #0x18 + ldr r3, [r4, #0x10] + lsr r0, r0, #0x18 + bl FUN_02027D7C + pop {r4, pc} + thumb_func_end MOD54_021D94B4 + + thumb_func_start MOD54_021D94D0 +MOD54_021D94D0: ; 0x021D94D0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02022504 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + ldr r3, [r4, #0x10] + bl MOD54_021D93DC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D94D0 + + thumb_func_start MOD54_021D94E8 +MOD54_021D94E8: ; 0x021D94E8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02022504 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + ldr r3, [r4, #0x10] + bl MOD54_021D93F8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D94E8 + + thumb_func_start MOD54_021D9500 +MOD54_021D9500: ; 0x021D9500 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_02022504 + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + ldr r3, [r4, #0x10] + bl MOD54_021D9414 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD54_021D9500 + + thumb_func_start MOD54_021D9518 +MOD54_021D9518: ; 0x021D9518 + ldr r3, _021D951C ; =0x0202B9ED + bx r3 + .align 2, 0 +_021D951C: .word 0x0202B9ED + thumb_func_end MOD54_021D9518 + + thumb_func_start MOD54_021D9520 +MOD54_021D9520: ; 0x021D9520 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #4] + bl FUN_0202B8E4 + ldr r0, [r4] + str r0, [sp] + ldr r2, [r4, #8] + ldr r0, [r4, #4] + lsl r2, r2, #0x18 + ldr r1, [r4, #0xc] + ldr r3, [r4, #0x10] + lsr r2, r2, #0x18 + bl FUN_0202BCF4 + add sp, #4 + pop {r3, r4, pc} + thumb_func_end MOD54_021D9520 + + thumb_func_start MOD54_021D9544 +MOD54_021D9544: ; 0x021D9544 + push {r4, r5, r6, lr} + add r5, r2, #0 + add r6, r0, #0 + add r0, r1, #0 + add r1, r5, #0 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + add r2, r5, #0 + bl MI_CpuFill8 + add r0, r6, #0 + mov r1, #0 + add r2, r4, #0 + bl FUN_02066840 + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD54_021D9544 + + thumb_func_start MOD54_021D956C +MOD54_021D956C: ; 0x021D956C + bx lr + .align 2, 0 + thumb_func_end MOD54_021D956C + + thumb_func_start MOD54_021D9570 +MOD54_021D9570: ; 0x021D9570 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + str r0, [sp] + mov r0, #0 + ldr r6, _021D95C4 ; =0x00000BB8 + ldr r5, _021D95C8 ; =0x021D9780 + str r1, [sp, #4] + str r0, [sp, #8] +_021D9580: + ldr r0, [sp] + ldr r1, [r5] + blx r1 + add r4, r0, #0 + ldr r0, [sp] + ldr r3, [r5, #4] + mov r1, #0x33 + add r2, r4, #0 + blx r3 + add r7, r0, #0 + cmp r6, r4 + bhi _021D959C + bl ErrorHandling +_021D959C: + ldr r1, [sp, #4] + add r0, r7, #0 + add r2, r4, #0 + bl MIi_CpuCopyFast + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, [sp, #4] + sub r6, r6, r4 + add r0, r0, r4 + str r0, [sp, #4] + ldr r0, [sp, #8] + add r5, #0xc + add r0, r0, #1 + str r0, [sp, #8] + cmp r0, #7 + blt _021D9580 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_021D95C4: .word 0x00000BB8 +_021D95C8: .word 0x021D9780 + thumb_func_end MOD54_021D9570 + + thumb_func_start MOD54_021D95CC +MOD54_021D95CC: ; 0x021D95CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + str r0, [sp] + ldr r0, _021D9670 ; =0x00000BB8 + str r1, [sp, #4] + str r0, [sp, #0x10] + mov r0, #0x33 + str r0, [sp, #0x2c] + ldr r0, [sp] + mov r7, #0 + str r0, [sp, #0x30] + bl FUN_02031190 + str r0, [sp, #0x38] + mov r0, #5 + str r0, [sp, #0x34] + add r0, sp, #0x18 + str r0, [sp, #0x3c] + add r0, r7, #0 + str r0, [sp, #0xc] + ldr r0, _021D9674 ; =0x021D9780 + str r0, [sp, #8] +_021D95F8: + ldr r1, [sp, #8] + ldr r0, [sp] + ldr r1, [r1] + blx r1 + ldr r1, [sp, #0x10] + str r0, [sp, #0x14] + cmp r1, r0 + bhi _021D960C + bl ErrorHandling +_021D960C: + mov r6, #0 + ldr r4, [sp, #4] + add r5, r6, #0 +_021D9612: + add r0, r6, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _021D9624 + ldr r0, [sp, #0x3c] + add r1, r4, r7 + str r1, [r0, r5] + b _021D962A +_021D9624: + ldr r1, [sp, #0x3c] + mov r0, #0 + str r0, [r1, r5] +_021D962A: + mov r0, #0x2f + lsl r0, r0, #6 + add r6, r6, #1 + add r4, r4, r0 + add r5, r5, #4 + cmp r6, #5 + blt _021D9612 + ldr r1, [sp, #8] + add r0, sp, #0x2c + ldr r1, [r1, #8] + blx r1 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x10] + add r7, r7, r0 + sub r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [sp, #8] + add r0, #0xc + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #7 + blo _021D95F8 + ldr r0, [sp] + bl FUN_02022504 + add r4, r0, #0 + bl FUN_0202B390 + add r0, r4, #0 + bl FUN_0202B3F8 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_021D9670: .word 0x00000BB8 +_021D9674: .word 0x021D9780 + thumb_func_end MOD54_021D95CC + + .section .rodata + ; 0x021D9678 + .incbin "baserom.nds", 0x29E598, 0x15C + + .section .data + ; 0x021D97E0 + .incbin "baserom.nds", 0x29E700, 0x80 |