diff options
Diffstat (limited to 'arm9/modules/56/asm/module_56.s')
-rw-r--r-- | arm9/modules/56/asm/module_56.s | 8689 |
1 files changed, 8689 insertions, 0 deletions
diff --git a/arm9/modules/56/asm/module_56.s b/arm9/modules/56/asm/module_56.s new file mode 100644 index 00000000..4ab4e3a4 --- /dev/null +++ b/arm9/modules/56/asm/module_56.s @@ -0,0 +1,8689 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD56_02211E60 +MOD56_02211E60: ; 0x02211E60 + sub r0, #9 + cmp r0, #5 + bhi _02211E82 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02211E72: ; jump table + .short _02211E7E - _02211E72 - 2 ; case 0 + .short _02211E7E - _02211E72 - 2 ; case 1 + .short _02211E7E - _02211E72 - 2 ; case 2 + .short _02211E7E - _02211E72 - 2 ; case 3 + .short _02211E7E - _02211E72 - 2 ; case 4 + .short _02211E7E - _02211E72 - 2 ; case 5 +_02211E7E: + mov r0, #1 + bx lr +_02211E82: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD56_02211E60 + + thumb_func_start MOD56_02211E88 +MOD56_02211E88: ; 0x02211E88 + push {r4, lr} + add r4, r0, #0 + bl MOD56_02211E60 + cmp r0, #0 + beq _02211E98 + mov r0, #1 + pop {r4, pc} +_02211E98: + cmp r4, #0xf + bne _02211EA0 + mov r0, #1 + pop {r4, pc} +_02211EA0: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD56_02211E88 + + thumb_func_start MOD56_02211EA4 +MOD56_02211EA4: ; 0x02211EA4 + cmp r0, #7 + bhi _02211EC8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02211EB4: ; jump table + .short _02211EC8 - _02211EB4 - 2 ; case 0 + .short _02211EC8 - _02211EB4 - 2 ; case 1 + .short _02211EC4 - _02211EB4 - 2 ; case 2 + .short _02211EC4 - _02211EB4 - 2 ; case 3 + .short _02211EC4 - _02211EB4 - 2 ; case 4 + .short _02211EC4 - _02211EB4 - 2 ; case 5 + .short _02211EC4 - _02211EB4 - 2 ; case 6 + .short _02211EC4 - _02211EB4 - 2 ; case 7 +_02211EC4: + mov r0, #1 + bx lr +_02211EC8: + mov r0, #0 + bx lr + thumb_func_end MOD56_02211EA4 + + thumb_func_start MOD56_02211ECC +MOD56_02211ECC: ; 0x02211ECC + push {r4, lr} + add r4, r0, #0 + bl MOD56_02211EA4 + cmp r0, #0 + beq _02211EDC + mov r0, #1 + pop {r4, pc} +_02211EDC: + cmp r4, #1 + beq _02211EE4 + cmp r4, #8 + bne _02211EE8 +_02211EE4: + mov r0, #1 + pop {r4, pc} +_02211EE8: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD56_02211ECC + + thumb_func_start MOD56_02211EEC +MOD56_02211EEC: ; 0x02211EEC + sub r0, #0xc + cmp r0, #3 + bhi _02211F0A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02211EFE: ; jump table + .short _02211F06 - _02211EFE - 2 ; case 0 + .short _02211F06 - _02211EFE - 2 ; case 1 + .short _02211F06 - _02211EFE - 2 ; case 2 + .short _02211F06 - _02211EFE - 2 ; case 3 +_02211F06: + mov r0, #1 + bx lr +_02211F0A: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD56_02211EEC + + thumb_func_start MOD56_02211F10 +MOD56_02211F10: ; 0x02211F10 + mov r1, #0x11 + cmp r0, #0x10 + bhi _02211F82 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02211F22: ; jump table + .short _02211F82 - _02211F22 - 2 ; case 0 + .short _02211F80 - _02211F22 - 2 ; case 1 + .short _02211F68 - _02211F22 - 2 ; case 2 + .short _02211F6C - _02211F22 - 2 ; case 3 + .short _02211F70 - _02211F22 - 2 ; case 4 + .short _02211F74 - _02211F22 - 2 ; case 5 + .short _02211F78 - _02211F22 - 2 ; case 6 + .short _02211F7C - _02211F22 - 2 ; case 7 + .short _02211F64 - _02211F22 - 2 ; case 8 + .short _02211F48 - _02211F22 - 2 ; case 9 + .short _02211F4C - _02211F22 - 2 ; case 10 + .short _02211F50 - _02211F22 - 2 ; case 11 + .short _02211F54 - _02211F22 - 2 ; case 12 + .short _02211F58 - _02211F22 - 2 ; case 13 + .short _02211F5C - _02211F22 - 2 ; case 14 + .short _02211F44 - _02211F22 - 2 ; case 15 + .short _02211F60 - _02211F22 - 2 ; case 16 +_02211F44: + mov r1, #8 + b _02211F82 +_02211F48: + mov r1, #2 + b _02211F82 +_02211F4C: + mov r1, #3 + b _02211F82 +_02211F50: + mov r1, #4 + b _02211F82 +_02211F54: + mov r1, #5 + b _02211F82 +_02211F58: + mov r1, #6 + b _02211F82 +_02211F5C: + mov r1, #7 + b _02211F82 +_02211F60: + mov r1, #1 + b _02211F82 +_02211F64: + mov r1, #0xf + b _02211F82 +_02211F68: + mov r1, #9 + b _02211F82 +_02211F6C: + mov r1, #0xa + b _02211F82 +_02211F70: + mov r1, #0xb + b _02211F82 +_02211F74: + mov r1, #0xc + b _02211F82 +_02211F78: + mov r1, #0xd + b _02211F82 +_02211F7C: + mov r1, #0xe + b _02211F82 +_02211F80: + mov r1, #0x10 +_02211F82: + add r0, r1, #0 + bx lr + .align 2, 0 + thumb_func_end MOD56_02211F10 + + thumb_func_start MOD56_02211F88 +MOD56_02211F88: ; 0x02211F88 + push {r3, r4, r5, r6, r7, lr} + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0206BB1C + str r0, [sp] + bl FUN_0206B9AC + mov r5, #0 + add r7, r0, #0 + add r4, r5, #0 + cmp r7, #0 + ble _02211FCE +_02211FA2: + ldr r0, [sp] + add r1, r4, #0 + bl FUN_0206B9B0 + mov r1, #0xa2 + mov r2, #0 + add r6, r0, #0 + bl FUN_020671BC + cmp r0, #0 + beq _02211FC8 + add r0, r6, #0 + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _02211FC8 + add r5, r5, #1 +_02211FC8: + add r4, r4, #1 + cmp r4, r7 + blt _02211FA2 +_02211FCE: + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD56_02211F88 + + thumb_func_start MOD56_02211FD4 +MOD56_02211FD4: ; 0x02211FD4 + push {r4, lr} + add r4, r0, #0 + 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, _02212074 ; =0xFFFFE0FF + and r1, r0 + str r1, [r2] + ldr r2, _02212078 ; =0x04001000 + ldr r1, [r2] + and r0, r1 + str r0, [r2] + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + mov r0, #0x36 + bl FUN_02016B94 + add r1, r4, #0 + add r1, #0xc0 + str r0, [r1] + mov r0, #0x36 + bl FUN_0200AA80 + add r1, r4, #0 + add r1, #0xc8 + str r0, [r1] + mov r2, #0x25 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #4 + mov r3, #0x36 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0xcc + str r0, [r1] + ldr r2, _0221207C ; =0x00000265 + mov r0, #0 + mov r1, #0x1a + mov r3, #0x36 + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0xd0 + str r0, [r1] + bl MOD56_022122B4 + add r0, r4, #0 + add r0, #0xc0 + ldr r0, [r0] + bl MOD56_022122D4 + add r0, r4, #0 + bl MOD56_0221257C + ldr r0, _02212080 ; =MOD56_0221228C + add r1, r4, #0 + bl FUN_02015F10 + bl MOD56_0221269C + add r0, r4, #0 + bl MOD56_022126E0 + add r0, r4, #0 + bl MOD56_022127D4 + pop {r4, pc} + .align 2, 0 +_02212074: .word 0xFFFFE0FF +_02212078: .word 0x04001000 +_0221207C: .word 0x00000265 +_02212080: .word MOD56_0221228C + thumb_func_end MOD56_02211FD4 + + thumb_func_start MOD56_02212084 +MOD56_02212084: ; 0x02212084 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _02212098 + cmp r1, #1 + beq _0221214E + b _0221215C +_02212098: + bl FUN_0200628C + add r6, r0, #0 + ldr r0, [r6, #4] + cmp r0, #1 + bne _022120B2 + mov r2, #7 + mov r0, #3 + mov r1, #0x36 + lsl r2, r2, #0x10 + bl FUN_0201681C + b _022120BE +_022120B2: + mov r2, #0xb + mov r0, #3 + mov r1, #0x36 + lsl r2, r2, #0x10 + bl FUN_0201681C +_022120BE: + mov r1, #0x3f + add r0, r4, #0 + lsl r1, r1, #4 + mov r2, #0x36 + bl FUN_02006268 + mov r2, #0x3f + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x5e + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r4, #0 + ldr r1, [r6] + add r0, #0xc4 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_020286EC + str r0, [r4] + mov r1, #0xef + ldr r0, [r6, #4] + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r1, #0 + mov r2, #8 + sub r0, #8 + str r2, [r4, r0] + sub r2, #9 + add r1, #0x1c + str r2, [r4, r1] + mov r0, #0xf + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0xf + mov r1, #0 + bl FUN_0201E74C + add r0, r4, #0 + bl MOD56_0221244C + add r0, r4, #0 + bl MOD56_02211FD4 + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #0x36 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + bl FUN_02033590 + cmp r0, #0 + bne _02212146 + bl FUN_02088858 +_02212146: + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0221215C +_0221214E: + bl FUN_02006278 + mov r0, #0 + str r0, [r5] + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0221215C: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_02212084 + + thumb_func_start MOD56_02212164 +MOD56_02212164: ; 0x02212164 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_02006278 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _0221217E + cmp r1, #1 + beq _0221218C + cmp r1, #2 + beq _022121A2 + b _022121AE +_0221217E: + bl FUN_0200E308 + cmp r0, #0 + beq _022121AE + mov r0, #1 + str r0, [r5] + b _022121AE +_0221218C: + mov r2, #0x3b + lsl r2, r2, #4 + ldr r2, [r4, r2] + lsl r3, r2, #2 + ldr r2, _022121C0 ; =0x022164E0 + ldr r2, [r2, r3] + cmp r2, #0 + beq _022121AE + blx r2 + str r0, [r5] + b _022121AE +_022121A2: + bl FUN_0200E308 + cmp r0, #0 + beq _022121AE + mov r0, #1 + pop {r3, r4, r5, pc} +_022121AE: + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022121BC + bl FUN_0201FDEC +_022121BC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022121C0: .word 0x022164E0 + thumb_func_end MOD56_02212164 + + thumb_func_start MOD56_022121C4 +MOD56_022121C4: ; 0x022121C4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + mov r0, #0xb + lsl r0, r0, #6 + ldr r0, [r6, r0] + bl FUN_02009C0C + mov r0, #0xb1 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009E04 + mov r7, #0x2b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_022121EC: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _022121EC + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + add r0, r6, #0 + bl MOD56_0221295C + add r0, r6, #0 + add r0, #0xc0 + ldr r0, [r0] + bl MOD56_02212540 + add r0, r6, #0 + add r0, #0xd0 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r6, #0 + add r0, #0xcc + ldr r0, [r0] + bl FUN_0200A8B8 + add r6, #0xc8 + ldr r0, [r6] + bl FUN_0200AB18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD56_022121C4 + + thumb_func_start MOD56_02212240 +MOD56_02212240: ; 0x02212240 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02006278 + add r4, r0, #0 + bl MOD56_022121C4 + add r0, r5, #0 + bl FUN_0200628C + add r6, r0, #0 + mov r0, #0xed + lsl r0, r0, #2 + ldr r1, [r4, r0] + str r1, [r6, #4] + ldr r0, [r4, r0] + cmp r0, #8 + beq _02212268 + cmp r0, #0xa + bne _0221226E +_02212268: + bl FUN_02088868 + b _02212274 +_0221226E: + bl MOD04_021D853C + str r0, [r6, #8] +_02212274: + add r0, r4, #0 + bl MOD56_022124E4 + add r0, r5, #0 + bl FUN_0200627C + mov r0, #0x36 + bl FUN_020168D0 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_02212240 + + thumb_func_start MOD56_0221228C +MOD56_0221228C: ; 0x0221228C + push {r3, lr} + add r0, #0xc0 + ldr r0, [r0] + bl FUN_0201AB60 + bl FUN_0201C30C + bl FUN_02009F80 + ldr r3, _022122AC ; =0x027E0000 + ldr r1, _022122B0 ; =0x00003FF8 + mov r0, #1 + ldr r2, [r3, r1] + orr r0, r2 + str r0, [r3, r1] + pop {r3, pc} + .align 2, 0 +_022122AC: .word 0x027E0000 +_022122B0: .word 0x00003FF8 + thumb_func_end MOD56_0221228C + + thumb_func_start MOD56_022122B4 +MOD56_022122B4: ; 0x022122B4 + push {r4, lr} + sub sp, #0x28 + ldr r4, _022122D0 ; =0x02216454 + add r3, sp, #0 + mov r2, #5 +_022122BE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022122BE + add r0, sp, #0 + bl FUN_0201E66C + add sp, #0x28 + pop {r4, pc} + .align 2, 0 +_022122D0: .word 0x02216454 + thumb_func_end MOD56_022122B4 + + thumb_func_start MOD56_022122D4 +MOD56_022122D4: ; 0x022122D4 + push {r4, r5, lr} + sub sp, #0x9c + ldr r5, _0221242C ; =0x02216330 + 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, _02212430 ; =0x02216368 + 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, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x36 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _02212434 ; =0x02216384 + 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, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x36 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _02212438 ; =0x022163A0 + 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, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x36 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _0221243C ; =0x022163BC + 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, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x36 + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + ldr r5, _02212440 ; =0x022163D8 + 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] + 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 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x36 + bl FUN_02017F18 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x36 + bl FUN_02017F18 + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #3 + mov r1, #1 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + ldr r0, _02212444 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + ldr r0, _02212448 ; =0x04001050 + strh r1, [r0] + add sp, #0x9c + pop {r4, r5, pc} + .align 2, 0 +_0221242C: .word 0x02216330 +_02212430: .word 0x02216368 +_02212434: .word 0x02216384 +_02212438: .word 0x022163A0 +_0221243C: .word 0x022163BC +_02212440: .word 0x022163D8 +_02212444: .word 0x04000050 +_02212448: .word 0x04001050 + thumb_func_end MOD56_022122D4 + + thumb_func_start MOD56_0221244C +MOD56_0221244C: ; 0x0221244C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + add r5, r6, #0 + mov r7, #8 +_02212456: + add r0, r7, #0 + mov r1, #0x36 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0xd4 + str r0, [r1] + ldr r0, [r6] + add r1, r4, #0 + bl FUN_020283A4 + add r1, r0, #0 + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02021E28 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x20 + blt _02212456 + mov r0, #0x5f + lsl r0, r0, #2 + mov r1, #0x36 + bl FUN_020219F4 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r6, r1] + add r1, #0x20 + add r0, r1, #0 + mov r1, #0x36 + bl FUN_020219F4 + mov r1, #0x5d + lsl r1, r1, #2 + add r7, r1, #0 + str r0, [r6, r1] + mov r5, #0 + add r4, r6, #0 + sub r7, #0x10 +_022124A8: + mov r0, #0x5f + lsl r0, r0, #2 + mov r1, #0x36 + bl FUN_020219F4 + str r0, [r4, r7] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #4 + blt _022124A8 + mov r0, #0x5f + lsl r0, r0, #2 + mov r1, #0x36 + bl FUN_020219F4 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r6, r1] + mov r0, #0xb4 + mov r1, #0x36 + bl FUN_020219F4 + mov r1, #0x16 + lsl r1, r1, #4 + str r0, [r6, r1] + mov r0, #0x3b + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD56_0221244C + + thumb_func_start MOD56_022124E4 +MOD56_022124E4: ; 0x022124E4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r4, #0 + add r5, r7, #0 +_022124EC: + add r0, r5, #0 + add r0, #0xd4 + ldr r0, [r0] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x20 + blt _022124EC + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r7, r0] + bl FUN_02021A20 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02021A20 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02021A20 + mov r6, #0x59 + mov r5, #0 + add r4, r7, #0 + lsl r6, r6, #2 +_02212524: + ldr r0, [r4, r6] + bl FUN_02021A20 + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #4 + blt _02212524 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r7, r0] + bl FUN_02021A20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD56_022124E4 + + thumb_func_start MOD56_02212540 +MOD56_02212540: ; 0x02212540 + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #3 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #2 + 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 MOD56_02212540 + + thumb_func_start MOD56_0221257C +MOD56_0221257C: ; 0x0221257C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r0, #0xc0 + ldr r4, [r0] + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r2, #0 + str r2, [sp] + mov r0, #0x36 + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + add r3, r2, #0 + bl FUN_02006930 + mov r3, #0 + str r3, [sp] + mov r0, #0x36 + str r0, [sp, #4] + mov r0, #0x5c + mov r1, #3 + mov r2, #4 + bl FUN_02006930 + mov r1, #0x1a + mov r0, #0 + lsl r1, r1, #4 + mov r2, #0x36 + bl FUN_02002EEC + mov r1, #6 + mov r0, #0 + lsl r1, r1, #6 + mov r2, #0x36 + bl FUN_02002EEC + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #2 + add r2, r4, #0 + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #4 + add r2, r4, #0 + bl FUN_020068C8 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #9 + add r2, r4, #0 + mov r3, #4 + bl FUN_0200687C + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + mov r0, #0x5c + mov r1, #0xa + add r2, r4, #0 + mov r3, #4 + bl FUN_020068C8 + add r5, #0xc4 + ldr r0, [r5] + bl LoadPlayerDataAddress + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0x36 + str r0, [sp, #4] + ldr r2, _02212694 ; =0x000001E2 + add r0, r4, #0 + mov r1, #2 + mov r3, #0xa + bl FUN_0200CD68 + mov r0, #0 + str r0, [sp] + mov r0, #0x36 + str r0, [sp, #4] + ldr r2, _02212698 ; =0x000001D9 + add r0, r4, #0 + mov r1, #2 + mov r3, #0xb + bl FUN_0200CB00 + mov r0, #0 + str r0, [sp] + mov r0, #0x36 + str r0, [sp, #4] + ldr r2, _02212698 ; =0x000001D9 + add r0, r4, #0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CB00 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212694: .word 0x000001E2 +_02212698: .word 0x000001D9 + thumb_func_end MOD56_0221257C + + thumb_func_start MOD56_0221269C +MOD56_0221269C: ; 0x0221269C + push {r4, lr} + sub sp, #0x10 + ldr r4, _022126D8 ; =0x02216340 + 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, #0x36 + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + ldr r1, _022126DC ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + add sp, #0x10 + pop {r4, pc} + nop +_022126D8: .word 0x02216340 +_022126DC: .word 0x00100010 + thumb_func_end MOD56_0221269C + + thumb_func_start MOD56_022126E0 +MOD56_022126E0: ; 0x022126E0 + 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, #0x36 + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + mov r1, #0x62 + lsl r1, r1, #2 + mov r0, #0x1e + add r1, r6, r1 + mov r2, #0x36 + bl FUN_02008C9C + mov r1, #0x61 + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #4 + mov r2, #1 + add r0, r6, r0 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r7, #0x2b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #4 +_0221272C: + mov r0, #2 + add r1, r4, #0 + mov r2, #0x36 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0221272C + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x36 + str r0, [sp, #8] + mov r0, #0x2b + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r1, #0x5c + mov r2, #7 + bl FUN_02008F34 + mov r1, #0xb + lsl r1, r1, #6 + str r0, [r6, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #0x36 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x5c + mov r2, #8 + bl FUN_02008FEC + mov r1, #0xb1 + lsl r1, r1, #2 + str r0, [r6, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x36 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x5c + mov r2, #1 + bl FUN_020090AC + mov r1, #0xb2 + lsl r1, r1, #2 + str r0, [r6, r1] + mov r2, #0 + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x36 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x5c + add r3, r2, #0 + bl FUN_020090AC + mov r1, #0xb3 + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009A50 + mov r0, #0xb1 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009CF0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD56_022126E0 + + thumb_func_start MOD56_022127D4 +MOD56_022127D4: ; 0x022127D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + mov r1, #0 + add r5, r0, #0 + str r1, [sp] + sub r0, r1, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r2, #0x2b + str r1, [sp, #0x10] + lsl r2, r2, #4 + ldr r0, [r5, r2] + add r3, r1, #0 + str r0, [sp, #0x14] + add r0, r2, #4 + ldr r0, [r5, r0] + str r0, [sp, #0x18] + add r0, r2, #0 + add r0, #8 + ldr r0, [r5, r0] + str r0, [sp, #0x1c] + add r0, r2, #0 + add r0, #0xc + ldr r0, [r5, r0] + add r2, #0x30 + str r0, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r5, r2 + add r2, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + mov r0, #0x61 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r4, #0 + str r0, [sp, #0x2c] + mov r0, #0x2e + lsl r0, r0, #4 + add r0, r5, r0 + str r0, [sp, #0x30] + mov r0, #1 + lsl r0, r0, #0xc + mov r7, #6 + str r4, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r4, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x50] + str r0, [sp, #0x54] + mov r0, #0x36 + str r0, [sp, #0x58] + mov r6, #0x20 + lsl r7, r7, #0xe +_02212848: + mov r0, #1 + lsl r1, r6, #0xc + lsl r0, r0, #0x14 + add r0, r1, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r7, [sp, #0x34] + bl FUN_0201FE94 + mov r1, #0xca + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02020130 + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_02020238 + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r6, #0x20 + add r5, r5, #4 + cmp r4, #5 + blt _02212848 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD56_022127D4 + + thumb_func_start MOD56_022128A4 +MOD56_022128A4: ; 0x022128A4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022128CE + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_022128CE: + mov r0, #1 + str r0, [sp] + mov r0, #0x16 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02212954 ; =0x000001CA + mov r1, #0xd7 + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xc0 + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #3 + mov r3, #5 + bl FUN_02019064 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r4, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x11 + bl FUN_0200A8E0 + mov r1, #0x16 + lsl r1, r1, #4 + ldr r1, [r4, r1] + mov r0, #1 + mov r2, #0 + mov r3, #0xb0 + bl FUN_02002F40 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02212958 ; =0x000F0E00 + add r2, #0x61 + str r0, [sp, #8] + str r1, [sp, #0xc] + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r2, [r4, r2] + add r0, r4, r0 + mov r1, #1 + bl FUN_0201BDE0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019220 + add sp, #0x14 + pop {r3, r4, pc} + nop +_02212954: .word 0x000001CA +_02212958: .word 0x000F0E00 + thumb_func_end MOD56_022128A4 + + thumb_func_start MOD56_0221295C +MOD56_0221295C: ; 0x0221295C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02212978 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_02212978: + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02212990 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_02212990: + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022129A8 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_022129A8: + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022129C0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_022129C0: + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022129D8 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_022129D8: + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + cmp r0, #0 + beq _022129EA + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 +_022129EA: + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _02212A00 + bl FUN_02012870 + add r0, r4, #0 + mov r1, #0 + add r0, #0xb0 + str r1, [r0] +_02212A00: + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02212A18 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_02212A18: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_0221295C + + thumb_func_start MOD56_02212A1C +MOD56_02212A1C: ; 0x02212A1C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r1, _02212B30 ; =0x00000497 + mov r0, #0xb + mov r2, #1 + bl FUN_0200433C + bl FUN_02033590 + cmp r0, #0 + beq _02212A9A + bl FUN_02033E74 + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + bl FUN_020334DC + add r1, r0, #0 + str r0, [r5, #4] + add r1, #0x22 + ldrb r1, [r1] + add r0, #0x21 + strb r1, [r0] + ldr r0, [r5, #4] + ldrb r0, [r0, #0x1b] + cmp r0, #8 + bne _02212A80 + bl FUN_02033208 + bl FUN_020334DC + add r1, r0, #0 + str r0, [r5, #4] + add r1, #0x22 + ldrb r1, [r1] + add r0, #0x21 + strb r1, [r0] + mov r0, #0xf1 + mov r1, #0x14 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x40 + sub r0, #0x14 + str r1, [r5, r0] + b _02212B2C +_02212A80: + add r0, r5, #0 + mov r1, #0x2b + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x10 + bl FUN_02031588 + mov r0, #0x3b + mov r1, #0x3c + lsl r0, r0, #4 + str r1, [r5, r0] + b _02212B2C +_02212A9A: + add r0, r5, #0 + bl MOD56_022128A4 + ldr r0, [r5] + bl FUN_02028228 + bl FUN_02096F80 + cmp r0, #0 + bne _02212AFA + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #3 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + add r0, r5, #0 + mov r1, #0x11 + bl MOD56_02215FF4 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02212B34 ; =0x02216310 + ldr r2, _02212B38 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #6 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02212B2C +_02212AFA: + ldr r0, [r5] + bl FUN_02028228 + bl FUN_02096F18 + cmp r0, #0 + bne _02212B1A + add r0, r5, #0 + mov r1, #0x13 + bl MOD56_02215FF4 + mov r0, #0x3b + mov r1, #3 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02212B2C +_02212B1A: + add r0, r5, #0 + mov r1, #0x10 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #1 + lsl r0, r0, #4 + str r1, [r5, r0] +_02212B2C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212B30: .word 0x00000497 +_02212B34: .word 0x02216310 +_02212B38: .word 0x000001D9 + thumb_func_end MOD56_02212A1C + + thumb_func_start MOD56_02212B3C +MOD56_02212B3C: ; 0x02212B3C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02212B76 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02212B7C ; =0x022162F8 + ldr r2, _02212B80 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #2 + lsl r0, r0, #4 + str r1, [r5, r0] +_02212B76: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02212B7C: .word 0x022162F8 +_02212B80: .word 0x000001D9 + thumb_func_end MOD56_02212B3C + + thumb_func_start MOD56_02212B84 +MOD56_02212B84: ; 0x02212B84 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02212BA2 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02212BA2: + cmp r0, #0 + bne _02212BD4 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + ldr r1, _02212BE0 ; =0x000004A4 + bl FUN_0203346C + str r0, [r5, #4] + add r0, r5, #0 + mov r1, #0x16 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02212BE4 ; =0x000001E2 + add r0, r5, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r1, #0xe + b _02212BD6 +_02212BD4: + mov r1, #0x22 +_02212BD6: + mov r0, #0x3b + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212BE0: .word 0x000004A4 +_02212BE4: .word 0x000001E2 + thumb_func_end MOD56_02212B84 + + thumb_func_start MOD56_02212BE8 +MOD56_02212BE8: ; 0x02212BE8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _02212C44 ; =0x021C48B8 + add r5, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + beq _02212C40 + mov r1, #0x14 + bl MOD56_02215FF4 + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #3 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #1 + mov r1, #0 + bl FUN_020178BC + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02212C48 ; =0x02216310 + ldr r2, _02212C4C ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #4 + lsl r0, r0, #4 + str r1, [r5, r0] +_02212C40: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02212C44: .word 0x021C48B8 +_02212C48: .word 0x02216310 +_02212C4C: .word 0x000001D9 + thumb_func_end MOD56_02212BE8 + + thumb_func_start MOD56_02212C50 +MOD56_02212C50: ; 0x02212C50 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + bne _02212C74 + add sp, #4 + add r0, r4, #0 + pop {r3, r4, r5, r6, pc} +_02212C74: + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + cmp r6, #0 + bne _02212CB4 + add r0, r5, #0 + mov r1, #0x15 + bl MOD56_02215FF4 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02212CC4 ; =0x02216310 + ldr r2, _02212CC8 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r1, #5 + b _02212CB6 +_02212CB4: + mov r1, #0x22 +_02212CB6: + mov r0, #0x3b + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02212CC4: .word 0x02216310 +_02212CC8: .word 0x000001D9 + thumb_func_end MOD56_02212C50 + + thumb_func_start MOD56_02212CCC +MOD56_02212CCC: ; 0x02212CCC + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + bne _02212CEC + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02212CEC: + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + cmp r6, #0 + bne _02212D44 + ldr r0, [r5] + bl FUN_020281E8 + mov r1, #0x3b + mov r0, #0xe + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, #0xf4 + bl FUN_0203346C + str r0, [r5, #4] + add r0, r5, #0 + mov r1, #0x16 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02212D50 ; =0x000001E2 + add r0, r5, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r1, #1 + mov r0, #0x3d + b _02212D48 +_02212D44: + mov r1, #0x22 + mov r0, #0x3b +_02212D48: + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02212D50: .word 0x000001E2 + thumb_func_end MOD56_02212CCC + + thumb_func_start MOD56_02212D54 +MOD56_02212D54: ; 0x02212D54 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r6, r0, #0 + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + bne _02212D74 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02212D74: + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + cmp r6, #0 + bne _02212DC6 + mov r1, #0x3b + mov r0, #0xe + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, #0xf4 + bl FUN_0203346C + str r0, [r5, #4] + add r0, r5, #0 + mov r1, #0x16 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02212DD4 ; =0x000001E2 + add r0, r5, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r1, #1 + mov r0, #0x3d + b _02212DCA +_02212DC6: + mov r1, #0x22 + mov r0, #0x3b +_02212DCA: + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_02212DD4: .word 0x000001E2 + thumb_func_end MOD56_02212D54 + + thumb_func_start MOD56_02212DD8 +MOD56_02212DD8: ; 0x02212DD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #3 + mov r1, #1 + bl FUN_020178BC + mov r0, #2 + mov r1, #0 + bl FUN_020178BC + mov r0, #0x3b + mov r1, #0xf + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_02212DD8 + + thumb_func_start MOD56_02212E0C +MOD56_02212E0C: ; 0x02212E0C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r0, #0xc4 + ldr r0, [r0] + str r1, [sp] + bl FUN_020238F4 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_02024DA0 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_0206BB1C + str r0, [sp, #0xc] + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_02029AFC + str r0, [sp, #8] + ldr r0, [sp, #0xc] + bl FUN_0206B9AC + mov r6, #0 + str r0, [sp, #4] + cmp r0, #0 + ble _02212E82 + add r4, r6, #0 +_02212E52: + ldr r0, [sp, #0xc] + add r1, r6, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + ldr r1, [r5, #4] + mov r2, #0 + strh r0, [r1, r4] + add r0, r7, #0 + mov r1, #6 + bl FUN_020671BC + ldr r1, [r5, #4] + add r6, r6, #1 + add r1, r1, r4 + strh r0, [r1, #0xc] + ldr r0, [sp, #4] + add r4, r4, #2 + cmp r6, r0 + blt _02212E52 +_02212E82: + ldr r0, [sp, #0x14] + bl FUN_02023A68 + ldr r1, [r5, #4] + strb r0, [r1, #0x18] + ldr r0, [sp, #0x14] + bl FUN_02023A70 + ldr r1, [r5, #4] + strb r0, [r1, #0x19] + ldr r0, [sp, #0x10] + bl FUN_02024CA4 + ldr r1, [r5, #4] + strb r0, [r1, #0x1a] + ldr r1, [r5, #4] + ldr r0, [sp] + strb r0, [r1, #0x1b] + ldr r0, [r5, #4] + mov r1, #0 + strb r1, [r0, #0x1c] + ldr r0, [sp, #0x14] + bl FUN_02023A28 + ldr r1, [r5, #4] + strb r0, [r1, #0x1d] + ldr r0, [sp, #0x14] + bl FUN_020239CC + ldr r1, [r5, #4] + strb r0, [r1, #0x1e] + ldr r0, [sp, #8] + bl FUN_02029B38 + ldr r1, [r5, #4] + strb r0, [r1, #0x1f] + ldr r0, [sp, #8] + bl FUN_02029B3C + ldr r1, [r5, #4] + add r1, #0x20 + strb r0, [r1] + ldr r0, [r5, #4] + mov r1, #1 + add r0, #0x21 + strb r1, [r0] + ldr r0, [r5, #4] + add r0, #0x22 + strb r1, [r0] + ldr r0, [r5, #4] + mov r1, #0x24 + bl MOD04_021D8478 + ldr r0, [r5, #4] + mov r1, #0x24 + add r0, #0x24 + bl MOD04_021D83D4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD56_02212E0C + + thumb_func_start MOD56_02212EFC +MOD56_02212EFC: ; 0x02212EFC + push {r3, r4, r5, r6, r7, lr} + mov r5, #0 + add r6, r0, #0 + add r4, r5, #0 + add r7, r5, #0 +_02212F06: + add r0, r6, r4 + strb r7, [r0, #0xc] + add r0, r4, #0 + bl MOD04_021D8480 + cmp r0, #0 + beq _02212F1C + add r0, r6, r5 + add r1, r4, #1 + strb r1, [r0, #0xc] + add r5, r5, #1 +_02212F1C: + add r4, r4, #1 + cmp r4, #0x20 + blt _02212F06 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD56_02212EFC + + thumb_func_start MOD56_02212F28 +MOD56_02212F28: ; 0x02212F28 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + add r7, r0, #0 + str r4, [sp] + add r5, r4, #0 + add r6, r7, #0 +_02212F34: + ldr r0, [r7, #4] + add r0, r0, r5 + add r0, #0x3f + ldrb r1, [r0] + ldr r0, [r6, #0x2c] + cmp r0, r1 + beq _02212F6E + str r1, [r6, #0x2c] + ldr r3, [r7, #4] + ldr r0, [r7] + add r3, r3, r5 + add r3, #0x41 + ldrb r3, [r3] + add r1, r4, #0 + mov r2, #7 + bl FUN_020282E8 + ldr r3, [r7, #4] + ldr r0, [r7] + add r3, r3, r5 + add r3, #0x42 + ldrb r3, [r3] + add r1, r4, #0 + mov r2, #8 + bl FUN_020282E8 + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] +_02212F6E: + add r4, r4, #1 + add r5, #0x24 + add r6, r6, #4 + cmp r4, #0x20 + blt _02212F34 + ldr r0, [sp] + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD56_02212F28 + + thumb_func_start MOD56_02212F7C +MOD56_02212F7C: ; 0x02212F7C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + add r5, r1, #0 + bl FUN_02033180 + mov r1, #0 + mvn r1, r1 + cmp r5, r1 + beq _02212F98 + cmp r5, #0xb + beq _02212F98 + cmp r0, r1 + bne _02212F9E +_02212F98: + mov r6, #0xe + mov r5, #0xb + b _02212FAC +_02212F9E: + sub r1, r1, #1 + cmp r0, r1 + bne _02212FAA + mov r6, #0xd + mov r5, #0xc + b _02212FAC +_02212FAA: + add r6, r5, #0 +_02212FAC: + add r0, r4, #0 + bl MOD56_02216120 + bl FUN_02033180 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + mov r3, #5 + bl FUN_0200AD38 + add r0, r4, #0 + add r1, r6, #0 + bl MOD56_02215FF4 + cmp r5, #0xb + bhi _02213022 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02212FE6: ; jump table + .short _02213022 - _02212FE6 - 2 ; case 0 + .short _02212FFE - _02212FE6 - 2 ; case 1 + .short _02213022 - _02212FE6 - 2 ; case 2 + .short _02213022 - _02212FE6 - 2 ; case 3 + .short _02212FFE - _02212FE6 - 2 ; case 4 + .short _02212FFE - _02212FE6 - 2 ; case 5 + .short _0221300A - _02212FE6 - 2 ; case 6 + .short _0221300A - _02212FE6 - 2 ; case 7 + .short _0221300A - _02212FE6 - 2 ; case 8 + .short _0221300A - _02212FE6 - 2 ; case 9 + .short _02213016 - _02212FE6 - 2 ; case 10 + .short _02212FFE - _02212FE6 - 2 ; case 11 +_02212FFE: + mov r0, #0x3b + mov r1, #0xa + lsl r0, r0, #4 + add sp, #8 + str r1, [r4, r0] + pop {r4, r5, r6, pc} +_0221300A: + mov r0, #0x3b + mov r1, #0xa + lsl r0, r0, #4 + add sp, #8 + str r1, [r4, r0] + pop {r4, r5, r6, pc} +_02213016: + mov r0, #0x3b + mov r1, #0xa + lsl r0, r0, #4 + add sp, #8 + str r1, [r4, r0] + pop {r4, r5, r6, pc} +_02213022: + mov r0, #0x3b + mov r1, #0x23 + lsl r0, r0, #4 + str r1, [r4, r0] + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_02212F7C + + thumb_func_start MOD56_02213030 +MOD56_02213030: ; 0x02213030 + push {r4, lr} + add r4, r0, #0 + bl FUN_02033180 + bl MOD04_021D80E0 + add r1, r0, #0 + add r0, r4, #0 + bl MOD56_02212F7C + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_02213030 + + thumb_func_start MOD56_02213048 +MOD56_02213048: ; 0x02213048 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02213088 ; =0x021C48B8 + add r4, r1, #0 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02213084 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _0221307C + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_0221307C: + mov r0, #0x3b + mov r1, #8 + lsl r0, r0, #4 + str r1, [r5, r0] +_02213084: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02213088: .word 0x021C48B8 + thumb_func_end MOD56_02213048 + + thumb_func_start MOD56_0221308C +MOD56_0221308C: ; 0x0221308C + mov r2, #0x3b + mov r3, #9 + lsl r2, r2, #4 + str r3, [r0, r2] + add r0, r1, #0 + bx lr + thumb_func_end MOD56_0221308C + + thumb_func_start MOD56_02213098 +MOD56_02213098: ; 0x02213098 + mov r2, #0x3b + mov r3, #0xb + lsl r2, r2, #4 + str r3, [r0, r2] + add r0, r1, #0 + bx lr + thumb_func_end MOD56_02213098 + + thumb_func_start MOD56_022130A4 +MOD56_022130A4: ; 0x022130A4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _022130F0 ; =0x021C48B8 + add r4, r1, #0 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _022130EA + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022130D8 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_022130D8: + add r0, r5, #0 + mov r1, #0x33 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0xb + lsl r0, r0, #4 + str r1, [r5, r0] +_022130EA: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_022130F0: .word 0x021C48B8 + thumb_func_end MOD56_022130A4 + + thumb_func_start MOD56_022130F4 +MOD56_022130F4: ; 0x022130F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0221312E + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02213134 ; =0x02216308 + ldr r2, _02213138 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0xc + lsl r0, r0, #4 + str r1, [r5, r0] +_0221312E: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02213134: .word 0x02216308 +_02213138: .word 0x000001D9 + thumb_func_end MOD56_022130F4 + + thumb_func_start MOD56_0221313C +MOD56_0221313C: ; 0x0221313C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0221315A + add r0, r4, #0 + pop {r3, r4, r5, pc} +_0221315A: + cmp r0, #0 + bne _02213172 + bl FUN_020331C4 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + mov r0, #0x3b + mov r1, #0xd + lsl r0, r0, #4 + b _02213186 +_02213172: + bl FUN_020331C4 + bl FUN_0202DBA4 + mov r0, #0xed + mov r1, #8 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x22 + sub r0, r0, #4 +_02213186: + str r1, [r5, r0] + add r0, r5, #0 + bl MOD56_02216120 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_0221313C + + thumb_func_start MOD56_02213194 +MOD56_02213194: ; 0x02213194 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + str r1, [sp, #0x10] + bl FUN_0202E4C8 + cmp r0, #0 + bne _0221326E + add r0, r6, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02018744 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r6, #0 + str r3, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5c + mov r1, #4 + bl FUN_020068C8 + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _02213206 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r6, r0 + bl FUN_02019178 + add r0, r6, #0 + add r0, #0xb4 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02001300 + add r0, r6, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + add r0, r6, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_02012870 + add r0, r6, #0 + mov r1, #0 + add r0, #0xb0 + str r1, [r0] +_02213206: + add r0, r6, #0 + add r0, #0xc + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + add r0, r6, #0 + add r0, #0x2c + mov r1, #0 + mov r2, #0x80 + bl MI_CpuFill8 + mov r7, #0xca + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02213226: + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #5 + blt _02213226 + add r0, r6, #0 + bl MOD56_022128A4 + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + ldr r1, _02213274 ; =0x000004A4 + bl FUN_0203346C + str r0, [r6, #4] + add r0, r6, #0 + mov r1, #0x16 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02213278 ; =0x000001E2 + add r0, r6, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r6, r1] + mov r0, #0x3b + mov r1, #0xe + lsl r0, r0, #4 + str r1, [r6, r0] +_0221326E: + ldr r0, [sp, #0x10] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02213274: .word 0x000004A4 +_02213278: .word 0x000001E2 + thumb_func_end MOD56_02213194 + + thumb_func_start MOD56_0221327C +MOD56_0221327C: ; 0x0221327C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02033138 + cmp r0, #0 + beq _022132E0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #8 + beq _022132B6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _022132B6 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C + mov r0, #0x5e + mov r1, #8 + lsl r0, r0, #2 + str r1, [r5, r0] +_022132B6: + mov r0, #0x3d + lsl r0, r0, #4 + ldr r1, [r5, r0] + cmp r1, #0 + beq _022132C8 + mov r1, #0x10 + sub r0, #0x20 + str r1, [r5, r0] + b _022132F6 +_022132C8: + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_02212E0C + add r0, r5, #0 + bl MOD56_02212EFC + mov r0, #0x3b + mov r1, #0x12 + lsl r0, r0, #4 + str r1, [r5, r0] + b _022132F6 +_022132E0: + bl FUN_02033250 + cmp r0, #0 + bne _022132F0 + bl FUN_0203300C + cmp r0, #3 + bne _022132F6 +_022132F0: + add r0, r5, #0 + bl MOD56_02213030 +_022132F6: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_0221327C + + thumb_func_start MOD56_022132FC +MOD56_022132FC: ; 0x022132FC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xf1 + lsl r0, r0, #2 + add r4, r1, #0 + ldr r1, [r5, r0] + cmp r1, #0 + ble _02213314 + sub r1, r1, #1 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02213314: + bl FUN_02033154 + cmp r0, #0 + beq _02213326 + mov r0, #0x3b + mov r1, #0x12 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213364 +_02213326: + bl FUN_0203300C + cmp r0, #4 + bge _02213340 + bl FUN_02033128 + cmp r0, #0 + bne _02213340 + mov r0, #0 + bl FUN_02030E7C + cmp r0, #0 + bne _0221334E +_02213340: + bl FUN_020331E8 + mov r0, #0x3b + mov r1, #0x12 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213364 +_0221334E: + bl FUN_02033250 + cmp r0, #0 + bne _0221335E + bl FUN_0203300C + cmp r0, #3 + bne _02213364 +_0221335E: + add r0, r5, #0 + bl MOD56_02213030 +_02213364: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_022132FC + + thumb_func_start MOD56_02213368 +MOD56_02213368: ; 0x02213368 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_02216120 + add r0, r5, #0 + mov r1, #0x12 + bl MOD56_02215FF4 + mov r0, #0x3b + mov r1, #0x11 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_02213368 + + thumb_func_start MOD56_02213388 +MOD56_02213388: ; 0x02213388 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _02213418 ; =0x021C48B8 + add r4, r1, #0 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02213412 + mov r1, #0xef + lsl r1, r1, #2 + ldr r0, [r5, r1] + cmp r0, #1 + bne _022133B6 + add r0, r1, #0 + mov r2, #0xa + sub r0, #8 + str r2, [r5, r0] + mov r0, #0x22 + sub r1, #0xc + str r0, [r5, r1] + bl FUN_020331C4 + b _02213412 +_022133B6: + ldr r0, [r5] + bl FUN_02028448 + cmp r0, #0 + bne _022133DA + add r0, r5, #0 + mov r1, #0x19 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x3a + lsl r0, r0, #4 + str r1, [r5, r0] + mov r1, #1 + add r0, #0x14 + str r1, [r5, r0] + b _02213412 +_022133DA: + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_02212E0C + add r0, r5, #0 + bl MOD56_02212EFC + mov r0, #0x3b + mov r1, #0x12 + lsl r0, r0, #4 + str r1, [r5, r0] + sub r0, #0x44 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02213412 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02213412: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02213418: .word 0x021C48B8 + thumb_func_end MOD56_02213388 + + thumb_func_start MOD56_0221341C +MOD56_0221341C: ; 0x0221341C + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r0, #0 + add r0, #0xc4 + ldr r0, [r0] + ldr r5, _02213618 ; =0x00010200 + bl FUN_020238F4 + mov r1, #0x36 + bl FUN_020239A0 + add r6, r0, #0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + bne _0221344C + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r4, r5, r6, pc} +_0221344C: + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_02019620 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + str r0, [sp, #8] + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + add r2, r6, #0 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [r4, #4] + ldrb r0, [r0, #0x1b] + cmp r0, #0x10 + bls _02213484 + b _02213614 +_02213484: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213490: ; jump table + .short _022135D8 - _02213490 - 2 ; case 0 + .short _022134B2 - _02213490 - 2 ; case 1 + .short _0221350C - _02213490 - 2 ; case 2 + .short _0221350C - _02213490 - 2 ; case 3 + .short _0221350C - _02213490 - 2 ; case 4 + .short _0221350C - _02213490 - 2 ; case 5 + .short _0221350C - _02213490 - 2 ; case 6 + .short _0221350C - _02213490 - 2 ; case 7 + .short _0221359A - _02213490 - 2 ; case 8 + .short _02213522 - _02213490 - 2 ; case 9 + .short _02213536 - _02213490 - 2 ; case 10 + .short _0221354A - _02213490 - 2 ; case 11 + .short _0221355E - _02213490 - 2 ; case 12 + .short _02213572 - _02213490 - 2 ; case 13 + .short _02213586 - _02213490 - 2 ; case 14 + .short _022135B0 - _02213490 - 2 ; case 15 + .short _022135C4 - _02213490 - 2 ; case 16 +_022134B2: + ldr r5, _0221361C ; =0x00020E00 + bl MOD04_021D853C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _022134D4 + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x1a + bl FUN_0200A8E0 + b _022135DC +_022134D4: + bl MOD04_021D853C + add r1, r0, #0 + ldr r0, [r4] + mov r2, #8 + bl FUN_0202822C + cmp r0, #0 + bne _022134EA + ldr r5, _02213620 ; =0x00050600 + b _022134F2 +_022134EA: + cmp r0, #1 + bne _022134F2 + mov r5, #0xc1 + lsl r5, r5, #0xa +_022134F2: + bl MOD04_021D853C + add r1, r0, #0 + ldr r0, [r4] + bl FUN_020283A4 + add r1, r0, #0 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02021E28 + b _022135DC +_0221350C: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x17 + bl FUN_0200A8E0 + ldr r5, _0221361C ; =0x00020E00 + b _022135DC +_02213522: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x3b + bl FUN_0200A8E0 + b _022135DC +_02213536: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x3c + bl FUN_0200A8E0 + b _022135DC +_0221354A: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x3a + bl FUN_0200A8E0 + b _022135DC +_0221355E: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x3e + bl FUN_0200A8E0 + b _022135DC +_02213572: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x3f + bl FUN_0200A8E0 + b _022135DC +_02213586: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x3d + bl FUN_0200A8E0 + b _022135DC +_0221359A: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x19 + bl FUN_0200A8E0 + ldr r5, _0221361C ; =0x00020E00 + b _022135DC +_022135B0: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x18 + bl FUN_0200A8E0 + b _022135DC +_022135C4: + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + mov r1, #0x2d + bl FUN_0200A8E0 + b _022135DC +_022135D8: + add sp, #0x10 + pop {r4, r5, r6, pc} +_022135DC: + mov r1, #0x56 + lsl r1, r1, #2 + mov r0, #0 + ldr r1, [r4, r1] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0 + add r3, r0, #0 + mov r0, #0xd3 + lsl r0, r0, #2 + str r1, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r5, [sp, #8] + mov r5, #0x9c + str r1, [sp, #0xc] + add r2, #0x59 + ldr r2, [r4, r2] + add r0, r4, r0 + sub r3, r5, r3 + bl FUN_0201BDE0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019220 +_02213614: + add sp, #0x10 + pop {r4, r5, r6, pc} + .align 2, 0 +_02213618: .word 0x00010200 +_0221361C: .word 0x00020E00 +_02213620: .word 0x00050600 + thumb_func_end MOD56_0221341C + + thumb_func_start MOD56_02213624 +MOD56_02213624: ; 0x02213624 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + mov r1, #0x13 + add r7, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + ldr r6, _02213750 ; =0x00010200 + cmp r5, #0x20 + beq _02213642 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _02213644 +_02213642: + b _0221374C +_02213644: + mov r1, #0x24 + ldr r0, [r4, #4] + mul r1, r5 + add r0, r0, r1 + add r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x11 + bhi _022136B6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02213660: ; jump table + .short _022136B6 - _02213660 - 2 ; case 0 + .short _02213684 - _02213660 - 2 ; case 1 + .short _0221368A - _02213660 - 2 ; case 2 + .short _0221368A - _02213660 - 2 ; case 3 + .short _0221368A - _02213660 - 2 ; case 4 + .short _0221368A - _02213660 - 2 ; case 5 + .short _0221368A - _02213660 - 2 ; case 6 + .short _0221368A - _02213660 - 2 ; case 7 + .short _022136A8 - _02213660 - 2 ; case 8 + .short _02213690 - _02213660 - 2 ; case 9 + .short _02213694 - _02213660 - 2 ; case 10 + .short _02213698 - _02213660 - 2 ; case 11 + .short _0221369C - _02213660 - 2 ; case 12 + .short _022136A0 - _02213660 - 2 ; case 13 + .short _022136A4 - _02213660 - 2 ; case 14 + .short _022136AE - _02213660 - 2 ; case 15 + .short _022136B2 - _02213660 - 2 ; case 16 + .short _022136B6 - _02213660 - 2 ; case 17 +_02213684: + mov r1, #0x1a + ldr r6, _02213754 ; =0x00020E00 + b _022136B8 +_0221368A: + mov r1, #0x17 + ldr r6, _02213754 ; =0x00020E00 + b _022136B8 +_02213690: + mov r1, #0x3b + b _022136B8 +_02213694: + mov r1, #0x3c + b _022136B8 +_02213698: + mov r1, #0x3a + b _022136B8 +_0221369C: + mov r1, #0x3e + b _022136B8 +_022136A0: + mov r1, #0x3f + b _022136B8 +_022136A4: + mov r1, #0x3d + b _022136B8 +_022136A8: + mov r1, #0x19 + ldr r6, _02213754 ; =0x00020E00 + b _022136B8 +_022136AE: + mov r1, #0x18 + b _022136B8 +_022136B2: + mov r1, #0x2d + b _022136B8 +_022136B6: + mov r1, #0x37 +_022136B8: + cmp r1, #0 + beq _02213706 + add r0, r4, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r4, r2] + bl FUN_0200A8E0 + mov r1, #0x56 + lsl r1, r1, #2 + mov r0, #0 + ldr r1, [r4, r1] + add r2, r0, #0 + bl FUN_02002E14 + mov ip, r0 + mov r0, #0xdf + lsl r0, r0, #2 + str r7, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r6, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + add r2, #0x59 + ldr r2, [r4, r2] + mov r6, #0xa4 + mov r3, ip + add r0, r4, r0 + sub r3, r6, r3 + bl FUN_0201BDE0 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019220 +_02213706: + ldr r0, [r4] + add r1, r5, #0 + mov r2, #8 + bl FUN_0202822C + ldr r1, _02213750 ; =0x00010200 + cmp r0, #0 + bne _0221371A + ldr r1, _02213758 ; =0x00050600 + b _02213722 +_0221371A: + cmp r0, #1 + bne _02213722 + mov r1, #0xc1 + lsl r1, r1, #0xa +_02213722: + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + lsl r2, r5, #2 + str r1, [sp, #8] + mov r1, #0 + add r2, r4, r2 + mov r0, #0xdf + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0xd4 + ldr r2, [r2] + add r0, r4, r0 + mov r3, #8 + bl FUN_0201BDE0 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019220 +_0221374C: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02213750: .word 0x00010200 +_02213754: .word 0x00020E00 +_02213758: .word 0x00050600 + thumb_func_end MOD56_02213624 + + thumb_func_start MOD56_0221375C +MOD56_0221375C: ; 0x0221375C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r4, r1, #0 + ldr r1, _0221389C ; =0x022162E0 + add r5, r3, #0 + ldrh r3, [r1, #0x10] + add r7, r2, #0 + add r2, sp, #0 + strh r3, [r2, #0x30] + ldrh r3, [r1, #0x12] + add r0, #0xc0 + strh r3, [r2, #0x32] + ldrh r3, [r1, #0x14] + strh r3, [r2, #0x34] + ldrh r3, [r1, #0x16] + strh r3, [r2, #0x36] + ldrh r3, [r1, #8] + strh r3, [r2, #0x28] + ldrh r3, [r1, #0xa] + strh r3, [r2, #0x2a] + ldrh r3, [r1, #0xc] + strh r3, [r2, #0x2c] + ldrh r3, [r1, #0xe] + strh r3, [r2, #0x2e] + ldrh r3, [r1, #0x38] + strh r3, [r2, #0x20] + ldrh r3, [r1, #0x3a] + strh r3, [r2, #0x22] + ldrh r3, [r1, #0x3c] + strh r3, [r2, #0x24] + ldrh r3, [r1, #0x3e] + strh r3, [r2, #0x26] + ldrh r3, [r1] + strh r3, [r2, #0x18] + ldrh r3, [r1, #2] + strh r3, [r2, #0x1a] + ldrh r3, [r1, #4] + strh r3, [r2, #0x1c] + ldrh r3, [r1, #6] + strh r3, [r2, #0x1e] + ldrh r3, [r1, #0x20] + strh r3, [r2, #0x10] + ldrh r3, [r1, #0x22] + strh r3, [r2, #0x12] + ldrh r3, [r1, #0x24] + strh r3, [r2, #0x14] + ldrh r1, [r1, #0x26] + strh r1, [r2, #0x16] + ldr r1, _022138A0 ; =0x02216320 + ldrh r3, [r1] + strh r3, [r2, #8] + ldrh r3, [r1, #2] + strh r3, [r2, #0xa] + ldrh r3, [r1, #4] + strh r3, [r2, #0xc] + ldrh r3, [r1, #6] + strh r3, [r2, #0xe] + ldrh r3, [r1, #8] + strh r3, [r2] + ldrh r3, [r1, #0xa] + strh r3, [r2, #2] + ldrh r3, [r1, #0xc] + strh r3, [r2, #4] + ldrh r1, [r1, #0xe] + strh r1, [r2, #6] + ldr r0, [r0] + mov r1, #0 + bl FUN_0201886C + add r1, r0, #0 + mov r2, #0 + cmp r4, #0x11 + bhi _0221383A + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022137FA: ; jump table + .short _0221383A - _022137FA - 2 ; case 0 + .short _0221381E - _022137FA - 2 ; case 1 + .short _02213826 - _022137FA - 2 ; case 2 + .short _02213826 - _022137FA - 2 ; case 3 + .short _02213826 - _022137FA - 2 ; case 4 + .short _02213826 - _022137FA - 2 ; case 5 + .short _02213826 - _022137FA - 2 ; case 6 + .short _02213826 - _022137FA - 2 ; case 7 + .short _0221382E - _022137FA - 2 ; case 8 + .short _02213822 - _022137FA - 2 ; case 9 + .short _02213822 - _022137FA - 2 ; case 10 + .short _02213822 - _022137FA - 2 ; case 11 + .short _02213822 - _022137FA - 2 ; case 12 + .short _02213822 - _022137FA - 2 ; case 13 + .short _02213822 - _022137FA - 2 ; case 14 + .short _0221382A - _022137FA - 2 ; case 15 + .short _02213832 - _022137FA - 2 ; case 16 + .short _02213836 - _022137FA - 2 ; case 17 +_0221381E: + add r0, sp, #0x18 + b _0221383C +_02213822: + mov r2, #1 + lsl r2, r2, #0xc +_02213826: + add r0, sp, #0x30 + b _0221383C +_0221382A: + mov r2, #1 + lsl r2, r2, #0xc +_0221382E: + add r0, sp, #0x28 + b _0221383C +_02213832: + add r0, sp, #0x20 + b _0221383C +_02213836: + add r0, sp, #8 + b _0221383C +_0221383A: + add r0, sp, #0 +_0221383C: + ldr r3, [sp, #0x50] + ldrh r4, [r0] + lsl r3, r3, #5 + add r5, r5, r3 + add r6, r4, r2 + lsl r4, r5, #1 + strh r6, [r1, r4] + ldrh r4, [r0, #2] + add r6, r5, #1 + lsl r6, r6, #1 + add r4, r4, r2 + strh r4, [r1, r6] + add r6, r5, #0 + ldrh r4, [r0, #4] + add r6, #0x20 + lsl r6, r6, #1 + add r4, r4, r2 + strh r4, [r1, r6] + ldrh r0, [r0, #6] + add r5, #0x21 + add r2, r0, r2 + lsl r0, r5, #1 + strh r2, [r1, r0] + cmp r7, #0 + beq _02213872 + add r2, sp, #0 + b _02213874 +_02213872: + add r2, sp, #0x10 +_02213874: + ldr r0, [sp, #0x54] + ldrh r4, [r2] + add r0, r0, r3 + lsl r3, r0, #1 + strh r4, [r1, r3] + add r3, r0, #1 + ldrh r4, [r2, #2] + lsl r3, r3, #1 + strh r4, [r1, r3] + add r3, r0, #0 + add r3, #0x20 + add r0, #0x21 + ldrh r4, [r2, #4] + lsl r3, r3, #1 + lsl r0, r0, #1 + strh r4, [r1, r3] + ldrh r2, [r2, #6] + strh r2, [r1, r0] + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0221389C: .word 0x022162E0 +_022138A0: .word 0x02216320 + thumb_func_end MOD56_0221375C + + thumb_func_start MOD56_022138A4 +MOD56_022138A4: ; 0x022138A4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r0, #0xc0 + add r7, r1, #0 + ldr r0, [r0] + mov r1, #0 + bl FUN_0201886C + mov r6, #0 + mov r4, #5 +_022138BA: + add r0, r7, r6 + cmp r0, #0x20 + blt _022138C6 + mov r1, #0 + mov r2, #1 + b _022138E2 +_022138C6: + add r0, r5, r0 + ldrb r1, [r0, #0xc] + cmp r1, #0 + bne _022138D4 + mov r1, #0 + mov r2, #1 + b _022138E2 +_022138D4: + mov r2, #0x24 + ldr r0, [r5, #4] + mul r2, r1 + add r0, r0, r2 + ldrb r1, [r0, #0x1b] + add r0, #0x21 + ldrb r2, [r0] +_022138E2: + str r4, [sp] + mov r0, #0x1b + str r0, [sp, #4] + add r0, r5, #0 + mov r3, #3 + bl MOD56_0221375C + add r6, r6, #1 + add r4, r4, #3 + cmp r6, #5 + blt _022138BA + ldr r0, [r5, #4] + ldrb r1, [r0, #0x1b] + add r0, #0x21 + ldrb r2, [r0] + cmp r1, #1 + bne _02213906 + mov r1, #0 +_02213906: + mov r0, #0x15 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + add r0, r5, #0 + mov r3, #3 + bl MOD56_0221375C + add r5, #0xc0 + ldr r0, [r5] + mov r1, #0 + bl FUN_02017CD0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD56_022138A4 + + thumb_func_start MOD56_02213924 +MOD56_02213924: ; 0x02213924 + push {r3, lr} + cmp r2, #0 + bne _02213930 + ldr r0, _02213934 ; =0x000005DC + bl FUN_020054C8 +_02213930: + pop {r3, pc} + nop +_02213934: .word 0x000005DC + thumb_func_end MOD56_02213924 + + thumb_func_start MOD56_02213938 +MOD56_02213938: ; 0x02213938 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + mov r7, #0x5d + add r5, r0, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02213944: + add r0, r5, r4 + ldrb r2, [r0, #0xc] + cmp r2, #0 + beq _0221395C + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + ldr r1, [r5, r7] + sub r2, r2, #1 + bl FUN_020128A0 + add r6, r6, #1 +_0221395C: + add r4, r4, #1 + cmp r4, #0x20 + blt _02213944 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xb0 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x1b + mov r3, #0x20 + bl FUN_02012880 + add r0, r5, #0 + add r0, #0xb0 + add r5, #0xcc + mov r2, #0x2e + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [r5] + sub r3, #0x30 + bl FUN_02012880 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD56_02213938 + + thumb_func_start MOD56_02213990 +MOD56_02213990: ; 0x02213990 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #0x22 + mov r1, #0x36 + bl FUN_02012838 + add r1, r5, #0 + add r1, #0xb0 + str r0, [r1] + add r0, r5, #0 + bl MOD56_02213938 + add r4, r0, #0 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022139D0 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_022139D0: + mov r0, #5 + str r0, [sp] + mov r0, #0x15 + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + mov r1, #0xdf + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r5, r1 + mov r2, #3 + mov r3, #6 + bl FUN_02019064 + ldr r6, _02213A3C ; =0x022163F4 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + add r1, r4, #2 + str r0, [sp, #0x14] + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x20] + add r0, sp, #0x14 + strh r1, [r0, #0x10] + mov r1, #0 + add r0, r2, #0 + add r2, r1, #0 + mov r3, #0x36 + str r5, [sp, #0x30] + bl FUN_020010A8 + add r5, #0xb4 + str r0, [r5] + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02213A3C: .word 0x022163F4 + thumb_func_end MOD56_02213990 + + thumb_func_start MOD56_02213A40 +MOD56_02213A40: ; 0x02213A40 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02213A6A + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_02213A6A: + mov r0, #0x15 + str r0, [sp] + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + lsl r0, r0, #5 + str r0, [sp, #0x10] + add r0, r4, #0 + add r0, #0xc0 + mov r1, #0xd3 + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r4, r1 + mov r2, #3 + mov r3, #7 + bl FUN_02019064 + add sp, #0x14 + pop {r3, r4, pc} + thumb_func_end MOD56_02213A40 + + thumb_func_start MOD56_02213A94 +MOD56_02213A94: ; 0x02213A94 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_02216248 + add r0, r5, #0 + bl MOD56_02216274 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02018744 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r5, #0 + str r3, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5c + mov r1, #5 + bl FUN_020068C8 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02213AF0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02213AF0: + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + beq _02213B2C + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + add r0, r5, #0 + add r0, #0xb4 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02001300 + add r0, r5, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_02012870 + add r0, r5, #0 + mov r1, #0 + add r0, #0xb0 + str r1, [r0] +_02213B2C: + mov r0, #1 + str r0, [sp] + mov r0, #0x15 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02213BEC ; =0x000001CA + mov r1, #0xd7 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r5, r1 + mov r2, #3 + mov r3, #4 + bl FUN_02019064 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x12 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02213BF0 ; =0x000F0E00 + add r2, #0x61 + str r0, [sp, #8] + str r3, [sp, #0xc] + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BDE0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + add r0, r5, #0 + bl MOD56_02216120 + add r0, r5, #0 + bl MOD56_02212EFC + add r0, r5, #0 + bl MOD56_02213990 + add r0, r5, #0 + bl MOD56_02213A40 + add r0, r5, #0 + mov r1, #0 + bl MOD56_022138A4 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + mov r1, #0 + mov r0, #0xf6 + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + bl MOD04_021D865C + mov r0, #0x33 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + add sp, #0x14 + pop {r4, r5, pc} + nop +_02213BEC: .word 0x000001CA +_02213BF0: .word 0x000F0E00 + thumb_func_end MOD56_02213A94 + + thumb_func_start MOD56_02213BF4 +MOD56_02213BF4: ; 0x02213BF4 + push {r3, lr} + bl FUN_0203300C + cmp r0, #1 + bne _02213C02 + mov r0, #1 + pop {r3, pc} +_02213C02: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD56_02213BF4 + + thumb_func_start MOD56_02213C08 +MOD56_02213C08: ; 0x02213C08 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + bl MOD56_02212EFC + add r4, r0, #0 + add r0, r5, #0 + bl MOD56_02212F28 + ldr r1, [r5, #8] + cmp r1, r4 + bne _02213C24 + cmp r0, #0 + beq _02213CA8 +_02213C24: + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_0201291C + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + mov r1, #2 + add r2, r4, #2 + bl FUN_02001538 + cmp r4, #3 + ble _02213C50 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + mov r1, #3 + mov r2, #5 + bl FUN_02001538 + b _02213C5E +_02213C50: + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + mov r1, #3 + add r2, r4, #2 + bl FUN_02001538 +_02213C5E: + add r0, r5, #0 + bl MOD56_02213938 + add r0, r5, #0 + add r0, #0xb4 + add r1, sp, #0xc + ldr r0, [r0] + add r1, #2 + add r2, sp, #0xc + bl FUN_02001448 + cmp r4, #3 + blt _02213C84 + add r0, sp, #0xc + ldrh r1, [r0, #2] + sub r2, r4, #3 + cmp r2, r1 + bgt _02213C84 + strh r2, [r0, #2] +_02213C84: + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r0, r5, #0 + str r1, [sp, #8] + add r3, sp, #0xc + add r0, #0xb4 + ldrh r2, [r3, #2] + ldrh r3, [r3] + ldr r0, [r0] + bl FUN_020013C8 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02001328 + str r4, [r5, #8] +_02213CA8: + add r0, r5, #0 + add r0, #0xb4 + add r1, sp, #0xc + ldr r0, [r0] + add r1, #2 + add r2, sp, #0xc + bl FUN_02001448 + add r0, sp, #0xc + ldr r1, [r5, #8] + ldrh r3, [r0] + ldrh r2, [r0, #2] + add r1, r1, #2 + add r4, r2, r3 + cmp r1, r4 + bgt _02213D0C + cmp r1, r4 + bgt _02213CF0 +_02213CCC: + cmp r2, #0 + beq _02213CD8 + ldrh r1, [r0, #2] + sub r1, r1, #1 + strh r1, [r0, #2] + b _02213CE2 +_02213CD8: + cmp r3, #0 + beq _02213CE2 + ldrh r1, [r0] + sub r1, r1, #1 + strh r1, [r0] +_02213CE2: + ldrh r3, [r0] + ldr r1, [r5, #8] + ldrh r2, [r0, #2] + add r4, r1, #2 + add r1, r2, r3 + cmp r4, r1 + ble _02213CCC +_02213CF0: + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r0, r5, #0 + str r1, [sp, #8] + add r0, #0xb4 + ldr r0, [r0] + bl FUN_020013C8 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02001328 +_02213D0C: + add r1, sp, #0xc + ldrh r1, [r1, #2] + add r0, r5, #0 + bl MOD56_022138A4 + add r2, sp, #0xc + ldrh r3, [r2] + mov r0, #0x33 + lsl r0, r0, #4 + lsl r2, r3, #1 + add r2, r3, r2 + add r2, r2, #6 + ldr r0, [r5, r0] + mov r1, #0x10 + lsl r2, r2, #3 + bl MOD56_02214470 + add r0, sp, #0xc + ldrh r0, [r0, #2] + cmp r0, #0 + beq _02213D52 + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x20 + bl MOD56_02214470 + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + b _02213D5E +_02213D52: + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 +_02213D5E: + add r0, sp, #0xc + ldrh r1, [r0, #2] + ldr r0, [r5, #8] + sub r0, r0, #3 + cmp r1, r0 + bge _02213D88 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x80 + mov r2, #0x9c + bl MOD56_02214470 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x10 + pop {r3, r4, r5, pc} +_02213D88: + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_02213C08 + + thumb_func_start MOD56_02213D98 +MOD56_02213D98: ; 0x02213D98 + push {r4, r5, r6, lr} + mov r6, #0 + mvn r6, r6 + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_02213C08 + bl MOD04_021D8640 + add r1, r6, #0 + cmp r0, r1 + bne _02213DEE + ldr r0, _02213F84 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + lsl r0, r0, #0xa + tst r0, r1 + beq _02213DEE + add r0, r5, #0 + bl MOD56_0221620C + cmp r0, #0 + beq _02213DD2 + add r0, r5, #0 + mov r1, #0x35 + mov r2, #0 + bl MOD56_02215EA4 + b _02213DDC +_02213DD2: + add r0, r5, #0 + mov r1, #0x36 + mov r2, #0 + bl MOD56_02215EA4 +_02213DDC: + ldr r0, _02213F88 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x3b + mov r1, #0x14 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02213DEE: + bl FUN_02033250 + cmp r0, #0 + beq _02213E00 + add r0, r5, #0 + bl MOD56_02213030 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02213E00: + add r0, r5, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02213E1C + ldr r0, _02213F8C ; =0x00000624 + bl FUN_020054C8 + mov r0, #0x3b + mov r1, #0x2f + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02213E1C: + mov r0, #0xf6 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02213E5C + bl MOD04_021D8640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02213E5C + bl MOD04_021D8640 + mov r1, #0xf6 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0x2a + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0xeb + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + b _02213ECE +_02213E5C: + mov r0, #0xf6 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _02213ECE + bl MOD04_021D8640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02213ECE + mov r0, #0xdf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + add r0, r5, #0 + add r0, #0xb4 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02001300 + add r0, r5, #0 + mov r1, #0 + add r0, #0xb4 + str r1, [r0] + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + bl FUN_02012870 + add r0, r5, #0 + mov r1, #0 + add r0, #0xb0 + str r1, [r0] + mov r1, #0xf6 + lsl r1, r1, #2 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + bl FUN_020331E8 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02213ECE: + mov r0, #0xf6 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02213EE8 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + bl FUN_02001204 + add r6, r0, #0 +_02213EE8: + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _02213EFA + add r0, r0, #1 + cmp r6, r0 + bne _02213F32 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02213EFA: + ldr r0, _02213F88 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r5, #4] + ldrb r0, [r0, #0x1b] + bl MOD56_02211E88 + cmp r0, #0 + beq _02213F16 + mov r0, #0x3b + mov r1, #0x27 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213F2E +_02213F16: + mov r0, #0xed + mov r1, #8 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x38 + sub r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + mov r1, #0x18 + mov r2, #1 + bl MOD56_02215EA4 +_02213F2E: + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02213F32: + ldr r0, _02213F88 ; =0x000005DD + bl FUN_020054C8 + ldr r0, [r5, #4] + ldrb r0, [r0, #0x1b] + bl MOD56_02211E88 + cmp r0, #0 + beq _02213F4E + mov r0, #0x3b + mov r1, #0x27 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213F7E +_02213F4E: + cmp r6, #0x20 + bne _02213F76 + ldr r0, [r5, #4] + ldrb r0, [r0, #0x1b] + cmp r0, #0x10 + bne _02213F64 + mov r0, #0x3b + mov r1, #0x24 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213F7E +_02213F64: + bl MOD56_02211E88 + cmp r0, #0 + beq _02213F7E + mov r0, #0x3b + mov r1, #0x27 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213F7E +_02213F76: + mov r0, #0x3b + mov r1, #0x2a + lsl r0, r0, #4 + str r1, [r5, r0] +_02213F7E: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_02213F84: .word 0x021C48B8 +_02213F88: .word 0x000005DD +_02213F8C: .word 0x00000624 + thumb_func_end MOD56_02213D98 + + thumb_func_start MOD56_02213F90 +MOD56_02213F90: ; 0x02213F90 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02213FA8 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02213FC8 +_02213FA8: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02213FC8 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD56_02216120 +_02213FC8: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_02213F90 + + thumb_func_start MOD56_02213FCC +MOD56_02213FCC: ; 0x02213FCC + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _022140A0 ; =0x021C48B8 + add r5, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #2 + tst r1, r2 + beq _02213FEE + mov r1, #0x43 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x41 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221407C +_02213FEE: + bl FUN_0203300C + cmp r0, #5 + bne _02214016 + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xb + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221407C +_02214016: + bl FUN_0203300C + cmp r0, #3 + bne _0221403E + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221407C +_0221403E: + bl FUN_0203300C + cmp r0, #4 + beq _0221404E + bl FUN_02033128 + cmp r0, #0 + beq _0221406E +_0221404E: + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xf + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221407C +_0221406E: + bl FUN_02033250 + cmp r0, #0 + beq _0221407C + add r0, r5, #0 + bl MOD56_02213030 +_0221407C: + bl FUN_0203300C + cmp r0, #1 + bne _0221409A + add r0, r5, #0 + bl MOD56_02216274 + add r0, r5, #0 + mov r1, #1 + bl MOD56_0221617C + mov r0, #0x3b + mov r1, #0x18 + lsl r0, r0, #4 + str r1, [r5, r0] +_0221409A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_022140A0: .word 0x021C48B8 + thumb_func_end MOD56_02213FCC + + thumb_func_start MOD56_022140A4 +MOD56_022140A4: ; 0x022140A4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0203300C + cmp r0, #1 + bne _022140D8 + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xa + mov r2, #0 + bl MOD56_02215EA4 + add r0, r5, #0 + mov r1, #1 + bl MOD56_0221617C + mov r0, #0x3b + mov r1, #0x17 + lsl r0, r0, #4 + str r1, [r5, r0] +_022140D8: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_022140A4 + + thumb_func_start MOD56_022140DC +MOD56_022140DC: ; 0x022140DC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02214116 + ldr r0, _0221411C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0221410E + add r0, r5, #0 + bl MOD56_02216120 + mov r0, #0x3b + mov r1, #0x18 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214116 +_0221410E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD56_02214120 +_02214116: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_0221411C: .word 0x021C48B8 + thumb_func_end MOD56_022140DC + + thumb_func_start MOD56_02214120 +MOD56_02214120: ; 0x02214120 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_02213C08 + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xcd + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + bl FUN_0203300C + cmp r0, #5 + bne _0221416A + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xb + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221422E +_0221416A: + bl FUN_0203300C + cmp r0, #3 + bne _02214192 + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221422E +_02214192: + bl FUN_0203300C + cmp r0, #4 + beq _022141A2 + bl FUN_02033128 + cmp r0, #0 + beq _022141C2 +_022141A2: + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xf + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221422E +_022141C2: + bl FUN_02033250 + cmp r0, #0 + beq _022141D2 + add r0, r5, #0 + bl MOD56_02213030 + b _0221422E +_022141D2: + ldr r0, _02214234 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _022141F0 + add r0, r5, #0 + mov r1, #0x10 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x19 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221422E +_022141F0: + bl MOD04_021D861C + cmp r0, #0 + beq _02214214 + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x20 + mov r2, #0xb0 + bl MOD56_02214470 + mov r0, #0xce + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + b _0221422E +_02214214: + mov r0, #0xcd + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x20 + mov r2, #0xb0 + bl MOD56_02214470 + mov r0, #0xcd + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 +_0221422E: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02214234: .word 0x021C48B8 + thumb_func_end MOD56_02214120 + + thumb_func_start MOD56_02214238 +MOD56_02214238: ; 0x02214238 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0221427E + bl MOD04_021D853C + add r1, r0, #0 + ldr r0, [r5] + bl FUN_020285D0 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02214284 ; =0x02216308 + ldr r2, _02214288 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x1a + lsl r0, r0, #4 + str r1, [r5, r0] +_0221427E: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02214284: .word 0x02216308 +_02214288: .word 0x000001D9 + thumb_func_end MOD56_02214238 + + thumb_func_start MOD56_0221428C +MOD56_0221428C: ; 0x0221428C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _022142F0 + bl FUN_0203300C + cmp r0, #4 + bge _022142C0 + bl FUN_02033128 + cmp r0, #0 + bne _022142C0 + mov r0, #0 + bl FUN_02030E7C + cmp r0, #0 + bne _022142EC +_022142C0: + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC + mov r0, #0 + mov r1, #0xf6 + mvn r0, r0 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + mov r2, #0x14 + sub r0, #0x14 + str r2, [r5, r0] + mov r0, #0x40 + sub r1, #0x28 + str r0, [r5, r1] +_022142EC: + add r0, r4, #0 + pop {r3, r4, r5, pc} +_022142F0: + cmp r0, #0 + bne _0221431A + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + bl FUN_0203323C + mov r0, #0 + mov r1, #0xf6 + mvn r0, r0 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + mov r2, #0x14 + sub r0, #0x14 + str r2, [r5, r0] + mov r0, #0x40 + sub r1, #0x28 + str r0, [r5, r1] + b _02214322 +_0221431A: + mov r0, #0x3b + mov r1, #0x18 + lsl r0, r0, #4 + str r1, [r5, r0] +_02214322: + add r0, r5, #0 + bl MOD56_02216120 + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_0221428C + + thumb_func_start MOD56_0221432C +MOD56_0221432C: ; 0x0221432C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + ldrb r1, [r1, #0x1b] + cmp r1, #0x10 + beq _02214340 + mov r1, #0x10 + bl MOD56_0221617C +_02214340: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0221435E + mov r0, #0xf1 + mov r1, #0x1e + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} +_0221435E: + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r1, [r5, r0] + sub r1, r1, #1 + str r1, [r5, r0] + ldr r1, _022143B0 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + bne _02214378 + ldr r0, [r5, r0] + cmp r0, #0 + bne _022143AC +_02214378: + add r0, r5, #0 + bl MOD56_02216120 + bl FUN_020331E8 + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + bne _0221439C + mov r0, #0xf1 + mov r1, #0x14 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x40 + sub r0, #0x14 + str r1, [r5, r0] + b _022143AC +_0221439C: + mov r1, #0 + mov r0, #0xf6 + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x13 + sub r0, #0x28 + str r1, [r5, r0] +_022143AC: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022143B0: .word 0x021C48B8 + thumb_func_end MOD56_0221432C + + thumb_func_start MOD56_022143B4 +MOD56_022143B4: ; 0x022143B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _022143D0 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_022143D0: + ldr r0, _02214400 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _022143FA + add r0, r5, #0 + bl MOD56_02216120 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + bl FUN_020331E8 + mov r0, #0xf1 + mov r1, #0x14 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x40 + sub r0, #0x14 + str r1, [r5, r0] +_022143FA: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02214400: .word 0x021C48B8 + thumb_func_end MOD56_022143B4 + + thumb_func_start MOD56_02214404 +MOD56_02214404: ; 0x02214404 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02214420 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02214420: + ldr r0, _02214460 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0221445C + add r0, r5, #0 + bl MOD56_02216120 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + add r0, r5, #0 + add r0, #0xb0 + ldr r0, [r0] + cmp r0, #0 + bne _0221444C + mov r0, #0x3b + mov r1, #0x12 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221445C +_0221444C: + mov r1, #0 + mov r0, #0xf6 + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x13 + sub r0, #0x28 + str r1, [r5, r0] +_0221445C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02214460: .word 0x021C48B8 + thumb_func_end MOD56_02214404 + + thumb_func_start MOD56_02214464 +MOD56_02214464: ; 0x02214464 + add r0, r1, #0 + bx lr + thumb_func_end MOD56_02214464 + + thumb_func_start MOD56_02214468 +MOD56_02214468: ; 0x02214468 + add r0, r1, #0 + bx lr + thumb_func_end MOD56_02214468 + + thumb_func_start MOD56_0221446C +MOD56_0221446C: ; 0x0221446C + add r0, r1, #0 + bx lr + thumb_func_end MOD56_0221446C + + thumb_func_start MOD56_02214470 +MOD56_02214470: ; 0x02214470 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + add r5, r2, #0 + cmp r1, #0 + ble _0221448E + lsl r0, r1, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _0221449C +_0221448E: + lsl r0, r1, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_0221449C: + bl _ffix + str r0, [sp] + cmp r5, #0 + ble _022144B8 + lsl r0, r5, #0xc + bl _fflt + add r1, r0, #0 + mov r0, #0x3f + lsl r0, r0, #0x18 + bl _fadd + b _022144C6 +_022144B8: + lsl r0, r5, #0xc + bl _fflt + mov r1, #0x3f + lsl r1, r1, #0x18 + bl _fsub +_022144C6: + bl _ffix + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + add sp, #0xc + pop {r4, r5, pc} + thumb_func_end MOD56_02214470 + + thumb_func_start MOD56_022144DC +MOD56_022144DC: ; 0x022144DC + push {r4, lr} + add r4, r1, #0 + ldr r1, _02214500 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + beq _022144FC + mov r1, #0xed + mov r2, #8 + lsl r1, r1, #2 + str r2, [r0, r1] + mov r2, #0x22 + sub r1, r1, #4 + str r2, [r0, r1] + bl FUN_020331C4 +_022144FC: + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_02214500: .word 0x021C48B8 + thumb_func_end MOD56_022144DC + + thumb_func_start MOD56_02214504 +MOD56_02214504: ; 0x02214504 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #6 + mov r2, #0 + add r5, r0, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x28 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_02214504 + + thumb_func_start MOD56_02214520 +MOD56_02214520: ; 0x02214520 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0221455A + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02214560 ; =0x02216308 + ldr r2, _02214564 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x29 + lsl r0, r0, #4 + str r1, [r5, r0] +_0221455A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02214560: .word 0x02216308 +_02214564: .word 0x000001D9 + thumb_func_end MOD56_02214520 + + thumb_func_start MOD56_02214568 +MOD56_02214568: ; 0x02214568 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r6, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r4, r0, #0 + mov r0, #0xf6 + lsl r0, r0, #2 + ldr r1, [r5, r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _022145A8 + bl MOD04_021D8640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022145A8 + cmp r4, r1 + bne _022145A6 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC +_022145A6: + mov r4, #1 +_022145A8: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _022145B4 + add r0, r6, #0 + pop {r4, r5, r6, pc} +_022145B4: + cmp r4, #0 + bne _022145C0 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C +_022145C0: + add r0, r5, #0 + bl MOD56_02216120 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_02214568 + + thumb_func_start MOD56_022145D4 +MOD56_022145D4: ; 0x022145D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r3, _022146C0 ; =0x02216414 + add r2, sp, #0x14 + add r5, r0, #0 + add r7, r1, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + mov r0, #4 + mov r1, #0x36 + bl FUN_02012838 + add r1, r5, #0 + add r1, #0xb8 + ldr r4, _022146C4 ; =0x02216480 + str r0, [r1] + mov r6, #0 +_02214602: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xb8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, #4 + blt _02214602 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02214642 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02214642: + mov r0, #9 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x33 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + mov r1, #0xe3 + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r5, r1 + mov r2, #2 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #0xe3 + lsl r0, r0, #2 + ldr r2, _022146C8 ; =0x000001D9 + add r0, r5, r0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + mov r2, #0xe3 + lsl r2, r2, #2 + str r0, [sp, #0x14] + add r0, r5, r2 + str r0, [sp, #0x20] + add r2, #0x50 + ldrh r2, [r5, r2] + add r0, sp, #0x14 + mov r1, #0 + mov r3, #0x36 + bl FUN_020010A8 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x25 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r7, #0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022146C0: .word 0x02216414 +_022146C4: .word 0x02216480 +_022146C8: .word 0x000001D9 + thumb_func_end MOD56_022145D4 + + thumb_func_start MOD56_022146CC +MOD56_022146CC: ; 0x022146CC + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + bl MOD56_02211F88 + add r7, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _022146EE + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_022146EE: + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02214708 + mov r4, #1 + mvn r4, r4 +_02214708: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0221471A + add r0, r0, #1 + cmp r4, r0 + bne _02214730 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_0221471A: + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD56_02216120 + ldr r0, _02214804 ; =0x000005DD + bl FUN_020054C8 + b _022147CE +_02214730: + ldr r0, _02214804 ; =0x000005DD + bl FUN_020054C8 + cmp r4, #0xf + bne _02214752 + cmp r7, #2 + bge _02214752 + add r0, r5, #0 + mov r1, #0x34 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1d + lsl r0, r0, #4 + str r1, [r5, r0] + b _022147CE +_02214752: + cmp r4, #1 + bne _0221476E + cmp r7, #2 + bge _0221476E + add r0, r5, #0 + mov r1, #0x42 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1d + lsl r0, r0, #4 + str r1, [r5, r0] + b _022147CE +_0221476E: + cmp r4, #1 + bhi _022147B8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + add r0, r5, #0 + add r0, #0xbc + mov r2, #0xf7 + lsl r2, r2, #2 + ldr r0, [r0] + mov r1, #0 + add r2, r5, r2 + bl FUN_02001300 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + bl FUN_02012870 + add r0, r5, #0 + add r1, r4, #0 + bl MOD56_02214808 + mov r0, #0x3b + mov r1, #0x26 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_022147B8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD56_0221617C + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD56_02216120 +_022147CE: + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + add r0, r5, #0 + add r0, #0xbc + mov r2, #0xf7 + lsl r2, r2, #2 + ldr r0, [r0] + mov r1, #0 + add r2, r5, r2 + bl FUN_02001300 + add r5, #0xb8 + ldr r0, [r5] + bl FUN_02012870 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214804: .word 0x000005DD + thumb_func_end MOD56_022146CC + + thumb_func_start MOD56_02214808 +MOD56_02214808: ; 0x02214808 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + cmp r1, #0 + bne _0221481A + ldr r4, _0221490C ; =0x022164A0 + mov r7, #4 + mov r1, #1 + b _02214820 +_0221481A: + ldr r4, _02214910 ; =0x022164C0 + mov r7, #4 + mov r1, #0 +_02214820: + ldr r0, _02214914 ; =0x000003E2 + ldr r3, _02214918 ; =0x02216414 + strh r1, [r5, r0] + add r2, sp, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r7, #0 + mov r1, #0x36 + bl FUN_02012838 + add r1, r5, #0 + add r1, #0xb8 + mov r6, #0 + str r0, [r1] + cmp r7, #0 + ble _02214868 +_0221484C: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xb8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, r7 + blt _0221484C +_02214868: + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _0221488C + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_0221488C: + mov r1, #9 + str r1, [sp] + mov r1, #0xf + lsl r0, r7, #1 + str r1, [sp, #4] + lsl r1, r0, #0x18 + lsr r1, r1, #0x18 + str r1, [sp, #8] + mov r1, #0xd + str r1, [sp, #0xc] + mov r1, #0x3b + sub r0, r1, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + mov r1, #0xe3 + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r5, r1 + mov r2, #2 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #0xe3 + lsl r0, r0, #2 + ldr r2, _0221491C ; =0x000001D9 + add r0, r5, r0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + mov r3, #0xe3 + lsl r3, r3, #2 + str r0, [sp, #0x14] + add r0, r5, r3 + add r2, r3, #0 + str r0, [sp, #0x20] + add r2, #0x56 + ldrh r2, [r5, r2] + add r3, #0x52 + add r0, sp, #0x14 + lsl r2, r2, #1 + add r2, r5, r2 + ldrh r2, [r2, r3] + mov r1, #0 + mov r3, #0x36 + bl FUN_020010A8 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + mov r0, #1 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0221490C: .word 0x022164A0 +_02214910: .word 0x022164C0 +_02214914: .word 0x000003E2 +_02214918: .word 0x02216414 +_0221491C: .word 0x000001D9 + thumb_func_end MOD56_02214808 + + thumb_func_start MOD56_02214920 +MOD56_02214920: ; 0x02214920 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r6, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0221493C + add r0, r6, #0 + pop {r4, r5, r6, pc} +_0221493C: + add r0, r5, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02214956 + mov r4, #1 + mvn r4, r4 +_02214956: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02214968 + add r0, r0, #1 + cmp r4, r0 + bne _02214978 + add r0, r6, #0 + pop {r4, r5, r6, pc} +_02214968: + ldr r0, _022149D0 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x3b + mov r1, #0x24 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214994 +_02214978: + ldr r0, _022149D0 ; =0x000005DD + bl FUN_020054C8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD56_0221617C + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + bl MOD56_02216120 +_02214994: + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + ldr r3, _022149D4 ; =0x000003DE + add r0, r5, #0 + add r2, r5, r3 + add r3, r3, #4 + ldrh r3, [r5, r3] + add r0, #0xbc + ldr r0, [r0] + lsl r3, r3, #1 + mov r1, #0 + add r2, r2, r3 + bl FUN_02001300 + add r5, #0xb8 + ldr r0, [r5] + bl FUN_02012870 + add r0, r6, #0 + pop {r4, r5, r6, pc} + nop +_022149D0: .word 0x000005DD +_022149D4: .word 0x000003DE + thumb_func_end MOD56_02214920 + + thumb_func_start MOD56_022149D8 +MOD56_022149D8: ; 0x022149D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + ldr r3, _02214BB0 ; =0x02216434 + add r5, r0, #0 + mov r0, #3 + add r2, sp, #0x2c + str r1, [sp, #0x14] + str r0, [sp, #0x20] + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + add r1, sp, #0x28 + bl FUN_0200143C + add r0, sp, #0x28 + ldrh r0, [r0] + add r0, r5, r0 + ldrb r0, [r0, #0xc] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + mov r0, #0x24 + mul r0, r1 + ldr r1, [r5, #4] + add r1, r1, r0 + add r1, #0x3f + ldrb r6, [r1] + mov r1, #0xf9 + lsl r1, r1, #2 + strh r6, [r5, r1] + ldr r2, [r5, #4] + add r2, #0x45 + ldrb r2, [r2, r0] + add r0, r1, #2 + mov r1, #0x36 + strh r2, [r5, r0] + ldr r0, [r5, #4] + add r0, #0x21 + ldrb r0, [r0] + add r0, r2, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0x1c] + mov r0, #3 + bl FUN_02012838 + add r1, r5, #0 + add r1, #0xb8 + str r0, [r1] + mov r0, #0 + ldr r4, _02214BB4 ; =0x02216350 + str r0, [sp, #0x24] + add r7, sp, #0x28 +_02214A52: + ldr r0, [sp, #0x24] + cmp r0, #0 + bne _02214AC8 + add r0, r6, #0 + bl MOD56_02211ECC + cmp r0, #0 + bne _02214A6A + cmp r6, #0 + beq _02214A6A + cmp r6, #0x11 + blo _02214A7E +_02214A6A: + ldrh r0, [r7, #0x16] + sub r0, r0, #1 + strh r0, [r7, #0x16] + ldrh r0, [r7, #0x14] + sub r0, r0, #1 + strh r0, [r7, #0x14] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _02214ADC +_02214A7E: + cmp r6, #0x10 + bne _02214AB2 + ldr r0, [sp, #0x1c] + cmp r0, #2 + bne _02214A9E + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xb8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + ldr r3, [r4, #4] + mov r2, #0x1a + bl FUN_02012880 + b _02214ADC +_02214A9E: + ldrh r0, [r7, #0x16] + sub r0, r0, #1 + strh r0, [r7, #0x16] + ldrh r0, [r7, #0x14] + sub r0, r0, #1 + strh r0, [r7, #0x14] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _02214ADC +_02214AB2: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xb8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + b _02214ADC +_02214AC8: + add r0, r5, #0 + add r1, r5, #0 + add r0, #0xb8 + add r1, #0xcc + ldr r0, [r0] + ldr r1, [r1] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 +_02214ADC: + ldr r0, [sp, #0x24] + add r4, #8 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #3 + blo _02214A52 + ldr r0, [sp, #0x20] + mov r1, #3 + sub r0, r1, r0 + lsl r0, r0, #1 + add r0, #0xb + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xf + str r0, [sp, #4] + ldr r0, [sp, #0x20] + mov r1, #0xe3 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x3b + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r5, r1 + mov r2, #2 + mov r3, #0x10 + bl FUN_02019064 + mov r0, #0xe3 + lsl r0, r0, #2 + ldr r2, _02214BB8 ; =0x000001D9 + add r0, r5, r0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0xb8 + ldr r0, [r0] + mov r1, #0 + str r0, [sp, #0x2c] + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + str r0, [sp, #0x38] + add r0, sp, #0x2c + add r2, r1, #0 + mov r3, #0x36 + bl FUN_020010A8 + add r1, r5, #0 + add r1, #0xbc + str r0, [r1] + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + ldr r1, [sp, #0x18] + add r0, r5, #0 + bl MOD56_022160E4 + cmp r6, #0xf + bne _02214B6C + mov r1, #3 + b _02214B9A +_02214B6C: + add r0, r6, #0 + bl MOD56_02211E60 + cmp r0, #0 + beq _02214B7A + mov r1, #2 + b _02214B9A +_02214B7A: + cmp r6, #8 + bne _02214B82 + mov r1, #0x30 + b _02214B9A +_02214B82: + add r0, r6, #0 + bl MOD56_02211EA4 + cmp r0, #0 + beq _02214B90 + mov r1, #0x2f + b _02214B9A +_02214B90: + cmp r6, #1 + bne _02214B98 + mov r1, #0x31 + b _02214B9A +_02214B98: + mov r1, #4 +_02214B9A: + add r0, r5, #0 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x2b + lsl r0, r0, #4 + str r1, [r5, r0] + ldr r0, [sp, #0x14] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02214BB0: .word 0x02216434 +_02214BB4: .word 0x02216350 +_02214BB8: .word 0x000001D9 + thumb_func_end MOD56_022149D8 + + thumb_func_start MOD56_02214BBC +MOD56_02214BBC: ; 0x02214BBC + push {r4, r5} + ldr r2, _02214BF8 ; =0x000001EF + mov r5, #0 + add r1, r2, #0 + sub r1, #0x1f + add r3, r2, #0 +_02214BC8: + ldrh r4, [r0] + cmp r4, r3 + bne _02214BD4 + mov r0, #0 + pop {r4, r5} + bx lr +_02214BD4: + cmp r4, r2 + bls _02214BDE + mov r0, #0 + pop {r4, r5} + bx lr +_02214BDE: + ldrh r4, [r0, #0xc] + cmp r4, r1 + bls _02214BEA + mov r0, #0 + pop {r4, r5} + bx lr +_02214BEA: + add r5, r5, #1 + add r0, r0, #2 + cmp r5, #6 + blt _02214BC8 + mov r0, #1 + pop {r4, r5} + bx lr + .align 2, 0 +_02214BF8: .word 0x000001EF + thumb_func_end MOD56_02214BBC + + thumb_func_start MOD56_02214BFC +MOD56_02214BFC: ; 0x02214BFC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + str r1, [sp] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + mov r6, #0 + bl FUN_0201BD70 + cmp r0, #0 + beq _02214C1E + ldr r0, [sp] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02214C1E: + add r0, r4, #0 + add r0, #0xbc + ldr r0, [r0] + bl FUN_02001204 + add r5, r0, #0 + add r0, r4, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02214C36 + sub r5, r6, #2 +_02214C36: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _02214C4A + add r0, r0, #1 + cmp r5, r0 + bne _02214C5A + ldr r0, [sp] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02214C4A: + ldr r0, _02214E20 ; =0x000005DD + bl FUN_020054C8 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r4, r0] + b _02214DE2 +_02214C5A: + ldr r0, _02214E20 ; =0x000005DD + bl FUN_020054C8 + cmp r5, #1 + beq _02214C66 + b _02214DD6 +_02214C66: + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r4, r0] + add r0, r4, #0 + add r0, #0xb4 + ldr r0, [r0] + add r1, sp, #0xc + bl FUN_0200143C + add r0, sp, #0xc + ldrh r0, [r0] + add r0, r4, r0 + ldrb r5, [r0, #0xc] + mov r0, #0xfa + lsl r0, r0, #2 + strh r5, [r4, r0] + cmp r5, #0 + bne _02214C8E + b _02214DE2 +_02214C8E: + add r0, r4, #0 + bl MOD56_02211F88 + sub r1, r5, #1 + str r0, [sp, #8] + mov r0, #0x24 + add r3, r1, #0 + ldr r2, [r4, #4] + mul r3, r0 + add r0, r2, r3 + add r0, #0x3f + ldrb r0, [r0] + str r0, [sp, #4] + add r0, r2, r3 + add r0, #0x45 + ldrb r7, [r0] + mov r0, #0xf9 + lsl r0, r0, #2 + ldrh r1, [r4, r0] + ldr r0, [sp, #4] + cmp r1, r0 + bne _02214CC6 + mov r0, #0xf9 + lsl r0, r0, #2 + add r0, r0, #2 + ldrh r0, [r4, r0] + cmp r0, r7 + beq _02214CE4 +_02214CC6: + add r0, r4, #0 + sub r1, r5, #1 + bl MOD56_022160E4 + add r0, r4, #0 + mov r1, #0xc + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1d + lsl r0, r0, #4 + str r1, [r4, r0] + mov r6, #1 + b _02214DE2 +_02214CE4: + add r2, #0x24 + add r0, r2, r3 + bl MOD56_02214BBC + cmp r0, #0 + bne _02214D0E + add r0, r4, #0 + sub r1, r5, #1 + bl MOD56_022160E4 + add r0, r4, #0 + mov r1, #0xc + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1d + lsl r0, r0, #4 + str r1, [r4, r0] + mov r6, #1 + b _02214DE2 +_02214D0E: + ldr r0, [sp, #4] + bl MOD56_02211EEC + cmp r0, #0 + beq _02214D46 + ldr r0, [sp, #8] + cmp r0, #2 + bge _02214D46 + ldr r0, [sp, #4] + cmp r0, #0xf + bne _02214D30 + add r0, r4, #0 + mov r1, #0x34 + mov r2, #0 + bl MOD56_02215EA4 + b _02214D3A +_02214D30: + add r0, r4, #0 + mov r1, #0x42 + mov r2, #0 + bl MOD56_02215EA4 +_02214D3A: + mov r0, #0x3b + mov r1, #0x1d + lsl r0, r0, #4 + str r1, [r4, r0] + mov r6, #1 + b _02214DE2 +_02214D46: + ldr r0, [r4, #4] + add r0, #0x21 + ldrb r0, [r0] + cmp r7, r0 + beq _02214D76 + cmp r7, #0 + beq _02214D60 + add r0, r4, #0 + mov r1, #0x44 + mov r2, #0 + bl MOD56_02215EA4 + b _02214D6A +_02214D60: + add r0, r4, #0 + mov r1, #0x45 + mov r2, #0 + bl MOD56_02215EA4 +_02214D6A: + mov r0, #0x3b + mov r1, #0x3e + lsl r0, r0, #4 + str r1, [r4, r0] + mov r6, #1 + b _02214DE2 +_02214D76: + ldr r0, [sp, #4] + bl MOD56_02211F10 + add r7, r0, #0 + cmp r7, #0x11 + beq _02214DE2 + sub r0, r5, #1 + bl MOD04_021D8480 + cmp r0, #6 + bne _02214DE2 + sub r0, r5, #1 + bl FUN_02032FDC + cmp r0, #0 + beq _02214DE2 + add r0, r4, #0 + add r1, r7, #0 + bl MOD56_0221617C + add r0, r4, #0 + sub r1, r5, #1 + bl MOD56_022160E4 + add r0, r4, #0 + mov r1, #0xd + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02214E24 ; =0x000001E2 + add r0, r4, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r4, r1] + cmp r7, #1 + beq _02214DCA + mov r1, #0x2c + b _02214DCC +_02214DCA: + mov r1, #0x15 +_02214DCC: + mov r0, #0x3b + lsl r0, r0, #4 + str r1, [r4, r0] + mov r6, #1 + b _02214DE2 +_02214DD6: + cmp r5, #2 + bne _02214DE2 + mov r0, #0x3b + mov r1, #0x35 + lsl r0, r0, #4 + str r1, [r4, r0] +_02214DE2: + cmp r6, #0 + bne _02214DEC + add r0, r4, #0 + bl MOD56_02216120 +_02214DEC: + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe3 + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0xbc + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02001300 + add r4, #0xb8 + ldr r0, [r4] + bl FUN_02012870 + ldr r0, [sp] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02214E20: .word 0x000005DD +_02214E24: .word 0x000001E2 + thumb_func_end MOD56_02214BFC + + thumb_func_start MOD56_02214E28 +MOD56_02214E28: ; 0x02214E28 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _02214F08 ; =0x021C48B8 + add r5, r0, #0 + ldr r2, [r1, #0x48] + mov r1, #2 + tst r1, r2 + beq _02214E4A + mov r1, #0x43 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x2d + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214F02 +_02214E4A: + bl FUN_0203300C + cmp r0, #3 + bne _02214E72 + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214F02 +_02214E72: + bl FUN_0203300C + cmp r0, #5 + bne _02214E9A + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xb + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214F02 +_02214E9A: + bl FUN_0203300C + cmp r0, #4 + beq _02214EAA + bl FUN_02033128 + cmp r0, #0 + beq _02214ECA +_02214EAA: + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214F02 +_02214ECA: + bl FUN_02033250 + cmp r0, #0 + beq _02214EDA + add r0, r5, #0 + bl MOD56_02213030 + b _02214F02 +_02214EDA: + bl FUN_0203300C + cmp r0, #1 + bne _02214F02 + add r0, r5, #0 + bl MOD56_02216274 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #0 + bl FUN_0202DB14 + mov r0, #0xf1 + mov r1, #0x1e + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x30 + sub r0, #0x14 + str r1, [r5, r0] +_02214F02: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02214F08: .word 0x021C48B8 + thumb_func_end MOD56_02214E28 + + thumb_func_start MOD56_02214F0C +MOD56_02214F0C: ; 0x02214F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02214F46 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02214F4C ; =0x02216308 + ldr r2, _02214F50 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x42 + lsl r0, r0, #4 + str r1, [r5, r0] +_02214F46: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02214F4C: .word 0x02216308 +_02214F50: .word 0x000001D9 + thumb_func_end MOD56_02214F0C + + thumb_func_start MOD56_02214F54 +MOD56_02214F54: ; 0x02214F54 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r6, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r4, r0, #0 + add r0, r5, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02214F90 + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02214F86 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC +_02214F86: + mov r0, #0x3b + mov r1, #0x15 + lsl r0, r0, #4 + str r1, [r5, r0] + b _02214FCC +_02214F90: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02214F9C + add r0, r6, #0 + pop {r4, r5, r6, pc} +_02214F9C: + cmp r4, #0 + bne _02214FC4 + add r0, r5, #0 + bl MOD56_02216248 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + bl FUN_020331E8 + mov r1, #0 + mov r0, #0xf6 + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x13 + sub r0, #0x28 + str r1, [r5, r0] + b _02214FCC +_02214FC4: + mov r0, #0x3b + mov r1, #0x15 + lsl r0, r0, #4 + str r1, [r5, r0] +_02214FCC: + add r0, r5, #0 + bl MOD56_02216120 + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_02214F54 + + thumb_func_start MOD56_02214FD8 +MOD56_02214FD8: ; 0x02214FD8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02215012 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02215018 ; =0x02216308 + ldr r2, _0221501C ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x2e + lsl r0, r0, #4 + str r1, [r5, r0] +_02215012: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02215018: .word 0x02216308 +_0221501C: .word 0x000001D9 + thumb_func_end MOD56_02214FD8 + + thumb_func_start MOD56_02215020 +MOD56_02215020: ; 0x02215020 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r6, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r4, r0, #0 + add r0, r5, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _0221505C + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02215052 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC +_02215052: + mov r0, #0x3b + mov r1, #0x2c + lsl r0, r0, #4 + str r1, [r5, r0] + b _02215098 +_0221505C: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02215068 + add r0, r6, #0 + pop {r4, r5, r6, pc} +_02215068: + cmp r4, #0 + bne _02215090 + add r0, r5, #0 + bl MOD56_02216248 + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + bl FUN_020331E8 + mov r1, #0 + mov r0, #0xf6 + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x13 + sub r0, #0x28 + str r1, [r5, r0] + b _02215098 +_02215090: + mov r0, #0x3b + mov r1, #0x2c + lsl r0, r0, #4 + str r1, [r5, r0] +_02215098: + add r0, r5, #0 + bl MOD56_02216120 + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_02215020 + + thumb_func_start MOD56_022150A4 +MOD56_022150A4: ; 0x022150A4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + add r6, r1, #0 + ldrb r4, [r0, #0x1b] + bl MOD04_021D853C + mov r1, #0x24 + ldr r2, [r5, #4] + mul r1, r0 + add r0, r2, r1 + add r0, #0x3f + ldrb r0, [r0] + cmp r4, #0xc + bne _022150D0 + cmp r0, #5 + bne _022150D0 + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_022150D0: + cmp r4, #0xd + bne _022150E2 + cmp r0, #6 + bne _022150E2 + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_022150E2: + cmp r4, #0xe + bne _022150F4 + cmp r0, #7 + bne _022150F4 + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_022150F4: + cmp r4, #9 + bne _02215106 + cmp r0, #2 + bne _02215106 + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_02215106: + cmp r4, #0xa + bne _02215118 + cmp r0, #3 + bne _02215118 + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_02215118: + cmp r4, #0xb + bne _0221512A + cmp r0, #4 + bne _0221512A + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_0221512A: + cmp r4, #0xf + bne _0221513C + cmp r0, #8 + bne _0221513C + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221517E +_0221513C: + cmp r4, #0x10 + bne _02215150 + cmp r0, #1 + bne _02215150 + mov r0, #0x3b + mov r1, #0x16 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r6, #0 + pop {r4, r5, r6, pc} +_02215150: + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1d + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r5, #0 + mov r1, #0x10 + bl MOD56_0221617C + bl FUN_020331E8 + add r0, r6, #0 + pop {r4, r5, r6, pc} +_0221517E: + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #7 + mov r2, #0 + bl MOD56_02215EA4 + add r0, r5, #0 + add r0, #0xc4 + ldr r0, [r0] + mov r1, #0 + bl FUN_0202DB14 + mov r0, #0x3b + mov r1, #0x30 + lsl r0, r0, #4 + str r1, [r5, r0] + mov r1, #0x1e + add r0, #0x14 + str r1, [r5, r0] + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_022150A4 + + thumb_func_start MOD56_022151B4 +MOD56_022151B4: ; 0x022151B4 + push {r4, lr} + add r4, r0, #0 + bl FUN_0203300C + cmp r0, #3 + blt _022151E0 + mov r1, #0xf6 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + bl MOD56_022160E4 + add r0, r4, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r4, r0] + b _022151F4 +_022151E0: + bl FUN_02033250 + cmp r0, #0 + beq _022151F0 + add r0, r4, #0 + bl MOD56_02213030 + b _022151F4 +_022151F0: + mov r0, #0 + pop {r4, pc} +_022151F4: + mov r0, #0xfb + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #1 + pop {r4, pc} + thumb_func_end MOD56_022151B4 + + thumb_func_start MOD56_02215200 +MOD56_02215200: ; 0x02215200 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0203300C + cmp r0, #4 + bge _02215220 + bl FUN_02033128 + cmp r0, #0 + bne _02215220 + mov r0, #0 + bl FUN_02030E7C + cmp r0, #0 + bne _0221525A +_02215220: + mov r1, #0xfb + lsl r1, r1, #2 + ldr r0, [r5, r1] + cmp r0, #0 + beq _02215236 + add r0, r5, #0 + mov r1, #0x40 + mov r2, #0 + bl MOD56_02215EA4 + b _0221524A +_02215236: + sub r1, #0x14 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xe + mov r2, #0 + bl MOD56_02215EA4 +_0221524A: + mov r0, #0xfb + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x1b + sub r0, #0x3c + str r1, [r5, r0] + b _022152A2 +_0221525A: + add r0, r5, #0 + bl MOD56_022151B4 + cmp r0, #0 + bne _022152A2 + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #0 + bne _02215292 + mov r0, #0xd + bl FUN_020315D8 + cmp r0, #0 + beq _022152A2 + bl FUN_0203168C + mov r0, #0xe + bl FUN_02031588 + mov r0, #0xfb + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x31 + sub r0, #0x3c + str r1, [r5, r0] + b _022152A2 +_02215292: + sub r1, r1, #1 + str r1, [r5, r0] + ldr r0, [r5, r0] + cmp r0, #0 + bne _022152A2 + mov r0, #0xd + bl FUN_02031588 +_022152A2: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_02215200 + + thumb_func_start MOD56_022152A8 +MOD56_022152A8: ; 0x022152A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_022151B4 + cmp r0, #0 + bne _022152DA + mov r0, #0xe + bl FUN_020315D8 + cmp r0, #0 + beq _022152DA + ldr r0, [r5, #4] + ldrb r1, [r0, #0x1b] + add r0, sp, #0 + strh r1, [r0] + bl FUN_02031190 + add r1, sp, #0 + bl FUN_020316AC + mov r0, #0x3b + mov r1, #0x32 + lsl r0, r0, #4 + str r1, [r5, r0] +_022152DA: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_022152A8 + + thumb_func_start MOD56_022152E0 +MOD56_022152E0: ; 0x022152E0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + bl FUN_02031190 + mov r1, #1 + sub r0, r1, r0 + bl FUN_020316E0 + add r4, r0, #0 + add r0, r5, #0 + bl MOD56_022151B4 + cmp r0, #0 + bne _0221534A + cmp r4, #0 + beq _0221534A + ldr r0, [r5, #4] + ldrb r0, [r0, #0x1b] + bl MOD56_02211F10 + lsl r0, r0, #0x10 + ldrh r1, [r4] + lsr r0, r0, #0x10 + cmp r1, r0 + beq _0221531C + ldr r0, [r5, #4] + ldrb r0, [r0, #0x1b] + cmp r1, r0 + bne _0221532C +_0221531C: + mov r0, #0xf + bl FUN_02031588 + mov r0, #0x3b + mov r1, #0x33 + lsl r0, r0, #4 + str r1, [r5, r0] + b _0221534A +_0221532C: + bl MOD04_021D853C + add r1, r0, #0 + add r0, r5, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xc + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1b + lsl r0, r0, #4 + str r1, [r5, r0] +_0221534A: + add r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_022152E0 + + thumb_func_start MOD56_02215350 +MOD56_02215350: ; 0x02215350 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_022151B4 + cmp r0, #0 + bne _02215382 + mov r0, #0xf + bl FUN_020315D8 + cmp r0, #0 + beq _02215382 + bl FUN_0202DBE0 + mov r0, #1 + add r1, r0, #0 + bl FUN_020334E8 + mov r0, #0x12 + bl FUN_02031588 + mov r0, #0x3b + mov r1, #0x34 + lsl r0, r0, #4 + str r1, [r5, r0] +_02215382: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD56_02215350 + + thumb_func_start MOD56_02215388 +MOD56_02215388: ; 0x02215388 + push {r4, r5, lr} + sub sp, #0x2c + add r4, r0, #0 + add r5, r1, #0 + bl MOD56_022151B4 + cmp r0, #0 + bne _02215476 + mov r0, #0x12 + bl FUN_020315D8 + cmp r0, #0 + beq _02215476 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r1, sp, #0xc + mov r2, #0x36 + bl FUN_020339B4 + add r0, r4, #0 + bl MOD56_02216120 + bl MOD04_021D853C + mov r1, #0x24 + ldr r2, [r4, #4] + mul r1, r0 + add r0, r2, r1 + add r0, #0x3f + ldrb r1, [r0] + cmp r1, #0xf + beq _022153CE + cmp r1, #8 + bne _022153DA +_022153CE: + mov r0, #0xed + mov r2, #7 + lsl r0, r0, #2 + mov r1, #8 + str r2, [r4, r0] + b _02215450 +_022153DA: + cmp r1, #9 + beq _022153E2 + cmp r1, #2 + bne _022153EE +_022153E2: + mov r0, #0xed + mov r2, #1 + lsl r0, r0, #2 + mov r1, #2 + str r2, [r4, r0] + b _02215450 +_022153EE: + cmp r1, #0xa + beq _022153F6 + cmp r1, #3 + bne _02215402 +_022153F6: + mov r0, #0xed + mov r2, #2 + lsl r0, r0, #2 + mov r1, #3 + str r2, [r4, r0] + b _02215450 +_02215402: + cmp r1, #0xb + beq _0221540A + cmp r1, #4 + bne _02215416 +_0221540A: + mov r0, #0xed + mov r2, #3 + lsl r0, r0, #2 + mov r1, #4 + str r2, [r4, r0] + b _02215450 +_02215416: + cmp r1, #0xc + beq _0221541E + cmp r1, #5 + bne _0221542A +_0221541E: + mov r0, #0xed + mov r2, #4 + lsl r0, r0, #2 + mov r1, #5 + str r2, [r4, r0] + b _02215450 +_0221542A: + cmp r1, #0xd + beq _02215432 + cmp r1, #6 + bne _0221543E +_02215432: + mov r0, #0xed + mov r2, #5 + lsl r0, r0, #2 + mov r1, #6 + str r2, [r4, r0] + b _02215450 +_0221543E: + cmp r1, #0xe + beq _02215446 + cmp r1, #7 + bne _02215450 +_02215446: + mov r0, #0xed + mov r2, #6 + lsl r0, r0, #2 + mov r1, #7 + str r2, [r4, r0] +_02215450: + add r0, r4, #0 + bl MOD56_0221617C + mov r0, #1 + bl FUN_02031400 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x36 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r5, #2 +_02215476: + add r0, r5, #0 + add sp, #0x2c + pop {r4, r5, pc} + thumb_func_end MOD56_02215388 + + thumb_func_start MOD56_0221547C +MOD56_0221547C: ; 0x0221547C + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + add r0, #0xc0 + add r4, r1, #0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02018744 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r5, #0 + str r3, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5c + mov r1, #5 + bl FUN_020068C8 + mov r0, #0xf3 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r5, r0] + mov r1, #0x12 + sub r0, #0x1c + str r1, [r5, r0] + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_0221547C + + thumb_func_start MOD56_022154BC +MOD56_022154BC: ; 0x022154BC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + add r0, #0xc0 + add r7, r1, #0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x36 + add r2, r5, #0 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5c + mov r1, #6 + mov r3, #1 + bl FUN_020068C8 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x33 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xca + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02215532 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02215532: + mov r0, #2 + str r0, [sp] + mov r0, #0x1a + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + mov r1, #0xe7 + lsl r1, r1, #2 + mov r2, #3 + ldr r0, [r0] + add r1, r5, r1 + add r3, r2, #0 + bl FUN_02019064 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + add r0, #0xb4 + ldr r0, [r0] + add r1, sp, #0x14 + bl FUN_0200143C + add r0, sp, #0x14 + ldrh r0, [r0] + add r0, r5, r0 + ldrb r0, [r0, #0xc] + sub r0, r0, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r5, #0 + add r1, r4, #0 + bl MOD56_022160E4 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x20 + bl FUN_0200A8E0 + mov r2, #0x16 + add r0, r5, #0 + lsl r2, r2, #4 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, #8 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + add r2, #0x61 + str r0, [sp, #8] + str r3, [sp, #0xc] + mov r0, #0xe7 + lsl r0, r0, #2 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BDE0 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + add r0, r5, #0 + mov r1, #0x29 + mov r2, #0 + bl MOD56_02215EA4 + add r0, r5, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x21 + bl FUN_0200A8E0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + mov r0, #0x36 + bl FUN_02023928 + add r6, r0, #0 + ldr r0, [r5] + add r1, r4, #0 + bl FUN_020283E8 + add r1, r0, #0 + add r0, r6, #0 + bl FUN_0202395C + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + add r2, r6, #0 + bl FUN_0200ABC0 + add r0, r6, #0 + bl FUN_02016A18 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x4e + bl FUN_0200A8E0 + mov r2, #0x16 + add r0, r5, #0 + lsl r2, r2, #4 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, #8 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r1, #0x16 + lsl r1, r1, #4 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + mov r1, #0xce + sub r3, r1, r0 + mov r0, #0x10 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + bl FUN_0201BDE0 + add r0, r5, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x22 + bl FUN_0200A8E0 + mov r0, #0x20 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [r5] + add r1, r4, #0 + mov r2, #1 + bl FUN_0202822C + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x23 + bl FUN_0200A8E0 + mov r2, #0x16 + add r0, r5, #0 + lsl r2, r2, #4 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, #8 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r0, #0x30 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r3, #0x1e + bl FUN_0201BDE0 + ldr r0, [r5] + add r1, r4, #0 + mov r2, #2 + bl FUN_0202822C + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x24 + bl FUN_0200A8E0 + mov r2, #0x16 + add r0, r5, #0 + lsl r2, r2, #4 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, #8 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r1, #0x16 + lsl r1, r1, #4 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + mov r0, #0x30 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r3, #0xce + str r0, [sp, #8] + mov r1, #0 + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + sub r3, r3, r6 + bl FUN_0201BDE0 + add r0, r5, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x25 + bl FUN_0200A8E0 + mov r0, #0x40 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [r5] + add r1, r4, #0 + mov r2, #3 + bl FUN_0202822C + add r6, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + add r2, r6, #0 + mov r3, #4 + bl FUN_0200AD38 + cmp r6, #1 + bne _02215810 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x26 + bl FUN_0200A8E0 + b _02215822 +_02215810: + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x4f + bl FUN_0200A8E0 +_02215822: + mov r2, #0x16 + add r0, r5, #0 + lsl r2, r2, #4 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, #8 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r1, #0x16 + lsl r1, r1, #4 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + mov r0, #0x40 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r3, #0xce + str r0, [sp, #8] + mov r1, #0 + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + sub r3, r3, r6 + bl FUN_0201BDE0 + add r0, r5, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x27 + bl FUN_0200A8E0 + mov r0, #0x50 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r1, #0 + str r0, [sp, #8] + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + add r3, r1, #0 + bl FUN_0201BDE0 + ldr r0, [r5] + add r1, r4, #0 + mov r2, #6 + bl FUN_0202822C + add r2, r0, #0 + beq _0221594C + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xc8 + mov r1, #2 + ldr r0, [r0] + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [r5] + add r1, r4, #0 + mov r2, #4 + bl FUN_0202822C + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + ldr r0, [r5] + add r1, r4, #0 + mov r2, #5 + bl FUN_0202822C + add r2, r0, #0 + add r0, r5, #0 + add r0, #0xc8 + ldr r0, [r0] + mov r1, #1 + bl FUN_0200B764 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x28 + bl FUN_0200A8E0 + mov r2, #0x16 + add r0, r5, #0 + lsl r2, r2, #4 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, #8 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r1, #0x16 + lsl r1, r1, #4 + mov r0, #0 + ldr r1, [r5, r1] + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + mov r0, #0x60 + str r0, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215964 ; =0x00010200 + mov r4, #0xce + str r0, [sp, #8] + mov r1, #0 + mov r0, #0xe7 + lsl r0, r0, #2 + str r1, [sp, #0xc] + add r2, #0x61 + ldr r2, [r5, r2] + add r0, r5, r0 + sub r3, r4, r3 + bl FUN_0201BDE0 +_0221594C: + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + mov r0, #0x3b + mov r1, #0x36 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r7, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02215964: .word 0x00010200 + thumb_func_end MOD56_022154BC + + thumb_func_start MOD56_02215968 +MOD56_02215968: ; 0x02215968 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02215984 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02215984: + add r0, r5, #0 + bl MOD56_02213BF4 + cmp r0, #0 + beq _02215996 + mov r0, #0x3b + mov r1, #0x37 + lsl r0, r0, #4 + str r1, [r5, r0] +_02215996: + ldr r0, _022159AC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _022159A8 + mov r0, #0x3b + mov r1, #0x37 + lsl r0, r0, #4 + str r1, [r5, r0] +_022159A8: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022159AC: .word 0x021C48B8 + thumb_func_end MOD56_02215968 + + thumb_func_start MOD56_022159B0 +MOD56_022159B0: ; 0x022159B0 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0xe7 + lsl r0, r0, #2 + add r4, r1, #0 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200CCF8 + mov r0, #0xe7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #1 + bl FUN_02018744 + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + mov r1, #3 + bl FUN_02018744 + add r0, r5, #0 + bl MOD56_02216120 + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r2, r5, #0 + str r3, [sp, #8] + mov r0, #0x36 + str r0, [sp, #0xc] + add r2, #0xc0 + ldr r2, [r2] + mov r0, #0x5c + mov r1, #5 + bl FUN_020068C8 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_02019620 + add r0, r5, #0 + mov r2, #0x16 + add r0, #0xcc + lsl r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + mov r1, #0x12 + bl FUN_0200A8E0 + mov r3, #0 + str r3, [sp] + mov r2, #0xff + str r2, [sp, #4] + ldr r0, _02215A88 ; =0x000F0E00 + add r2, #0x61 + str r0, [sp, #8] + str r3, [sp, #0xc] + mov r0, #0xd7 + lsl r0, r0, #2 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BDE0 + mov r0, #0xd7 + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + add r0, r5, #0 + bl MOD56_02212EFC + add r0, r5, #0 + bl MOD56_02213A40 + add r0, r5, #0 + mov r1, #0 + bl MOD56_022138A4 + ldr r1, [r5, #4] + add r0, r5, #0 + ldrb r1, [r1, #0x1b] + bl MOD56_0221617C + mov r0, #0x33 + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + sub r1, #0x14 + str r1, [r5, #8] + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02215A88: .word 0x000F0E00 + thumb_func_end MOD56_022159B0 + + thumb_func_start MOD56_02215A8C +MOD56_02215A8C: ; 0x02215A8C + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02215AC6 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02215ACC ; =0x02216308 + ldr r2, _02215AD0 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x39 + lsl r0, r0, #4 + str r1, [r5, r0] +_02215AC6: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02215ACC: .word 0x02216308 +_02215AD0: .word 0x000001D9 + thumb_func_end MOD56_02215A8C + + thumb_func_start MOD56_02215AD4 +MOD56_02215AD4: ; 0x02215AD4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x5f + lsl r0, r0, #2 + add r6, r1, #0 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + add r4, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02215AFE + add r0, r6, #0 + pop {r4, r5, r6, pc} +_02215AFE: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02215B0A + add r0, r6, #0 + pop {r4, r5, r6, pc} +_02215B0A: + cmp r4, #0 + bne _02215B26 + add r0, r5, #0 + mov r1, #0x19 + mov r2, #1 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x3a + lsl r0, r0, #4 + str r1, [r5, r0] + mov r1, #1 + add r0, #0x14 + b _02215B32 +_02215B26: + add r0, r5, #0 + bl MOD56_02216120 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 +_02215B32: + str r1, [r5, r0] + add r0, r6, #0 + pop {r4, r5, r6, pc} + thumb_func_end MOD56_02215AD4 + + thumb_func_start MOD56_02215B38 +MOD56_02215B38: ; 0x02215B38 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02215B54 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02215B54: + mov r0, #0xf1 + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #1 + bne _02215B66 + mov r1, #0 + str r1, [r5, r0] + bl FUN_020331C4 +_02215B66: + bl FUN_02031810 + cmp r0, #0 + bne _02215B8C + ldr r0, [r5] + bl FUN_0202858C + add r0, r5, #0 + mov r1, #0x1a + mov r2, #1 + bl MOD56_02215EA4 + mov r1, #0x3b + lsl r0, r1, #4 + str r1, [r5, r0] + mov r0, #0xf1 + mov r1, #0x1e + lsl r0, r0, #2 + str r1, [r5, r0] +_02215B8C: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_02215B38 + + thumb_func_start MOD56_02215B90 +MOD56_02215B90: ; 0x02215B90 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02215BAC + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02215BAC: + mov r1, #0xf1 + lsl r1, r1, #2 + ldr r0, [r5, r1] + sub r0, r0, #1 + str r0, [r5, r1] + ldr r0, [r5, r1] + cmp r0, #0 + bne _02215BD0 + add r0, r1, #0 + mov r2, #8 + sub r0, #0x10 + str r2, [r5, r0] + mov r0, #0x22 + sub r1, #0x14 + str r0, [r5, r1] + add r0, r5, #0 + bl MOD56_02216120 +_02215BD0: + add r0, r4, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD56_02215B90 + + thumb_func_start MOD56_02215BD4 +MOD56_02215BD4: ; 0x02215BD4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + add r1, r0, #0 + bl FUN_020334E8 + mov r0, #0x10 + bl FUN_020315D8 + cmp r0, #0 + bne _02215BF0 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02215BF0: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02215C24 + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02215C28 ; =0x02216308 + ldr r2, _02215C2C ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x3d + lsl r0, r0, #4 + str r1, [r5, r0] +_02215C24: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02215C28: .word 0x02216308 +_02215C2C: .word 0x000001D9 + thumb_func_end MOD56_02215BD4 + + thumb_func_start MOD56_02215C30 +MOD56_02215C30: ; 0x02215C30 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02215C4C + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02215C4C: + bl FUN_02033138 + cmp r0, #0 + bne _02215C64 + bl FUN_02033128 + cmp r0, #0 + bne _02215C64 + bl FUN_0203300C + cmp r0, #3 + blt _02215C84 +_02215C64: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC + add r0, r5, #0 + mov r1, #0x40 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1c + lsl r0, r0, #4 + str r1, [r5, r0] + b _02215D18 +_02215C84: + bl FUN_02033250 + cmp r0, #0 + beq _02215CA0 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC + add r0, r5, #0 + bl MOD56_02213030 + b _02215D18 +_02215CA0: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02215CB8 + add r0, r4, #0 + pop {r3, r4, r5, pc} +_02215CB8: + cmp r0, #0 + bne _02215CF0 + add r0, r5, #0 + mov r1, #0x48 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02215D1C ; =0x000001E2 + add r0, r5, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r1, #0xfb + mov r0, #1 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + mov r2, #0x30 + sub r0, #0x3c + str r2, [r5, r0] + mov r0, #0x1e + sub r1, #0x28 + str r0, [r5, r1] + b _02215D08 +_02215CF0: + add r0, r5, #0 + bl MOD56_02216120 + bl FUN_0203323C + mov r0, #0xf1 + mov r1, #0x14 + lsl r0, r0, #2 + str r1, [r5, r0] + mov r1, #0x40 + sub r0, #0x14 + str r1, [r5, r0] +_02215D08: + bl FUN_020334DC + add r1, r0, #0 + str r0, [r5, #4] + add r1, #0x22 + ldrb r1, [r1] + add r0, #0x21 + strb r1, [r0] +_02215D18: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02215D1C: .word 0x000001E2 + thumb_func_end MOD56_02215C30 + + thumb_func_start MOD56_02215D20 +MOD56_02215D20: ; 0x02215D20 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r4, r1, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _02215D5A + mov r0, #0x36 + str r0, [sp] + add r0, r5, #0 + add r0, #0xc0 + ldr r0, [r0] + ldr r1, _02215D60 ; =0x02216308 + ldr r2, _02215D64 ; =0x000001D9 + mov r3, #0xb + bl FUN_02002198 + mov r1, #0x5f + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0x3b + mov r1, #0x3f + lsl r0, r0, #4 + str r1, [r5, r0] +_02215D5A: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02215D60: .word 0x02216308 +_02215D64: .word 0x000001D9 + thumb_func_end MOD56_02215D20 + + thumb_func_start MOD56_02215D68 +MOD56_02215D68: ; 0x02215D68 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0203300C + cmp r0, #3 + blt _02215D96 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC + add r0, r5, #0 + mov r1, #0x40 + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0x3b + mov r1, #0x1c + lsl r0, r0, #4 + str r1, [r5, r0] + b _02215E6A +_02215D96: + bl FUN_02033250 + cmp r0, #0 + beq _02215DB2 + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021EC + add r0, r5, #0 + bl MOD56_02213030 + b _02215E6A +_02215DB2: + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0x36 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _02215DCA + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02215DCA: + cmp r0, #0 + bne _02215E58 + mov r0, #0xf9 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + bl MOD56_02211F10 + add r6, r0, #0 + cmp r6, #0x11 + beq _02215E58 + mov r0, #0xfa + lsl r0, r0, #2 + ldrh r0, [r5, r0] + sub r0, r0, #1 + bl MOD04_021D8480 + cmp r0, #6 + bne _02215E58 + mov r0, #0xfa + lsl r0, r0, #2 + ldrh r0, [r5, r0] + sub r0, r0, #1 + bl FUN_02032FDC + cmp r0, #0 + beq _02215E58 + mov r0, #0 + bl FUN_02031400 + add r0, r5, #0 + bl MOD56_022161DC + add r0, r5, #0 + add r1, r6, #0 + bl MOD56_0221617C + mov r1, #0xfa + lsl r1, r1, #2 + ldrh r1, [r5, r1] + add r0, r5, #0 + sub r1, r1, #1 + bl MOD56_022160E4 + add r0, r5, #0 + mov r1, #0xd + mov r2, #0 + bl MOD56_02215EA4 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r1, _02215E70 ; =0x000001E2 + add r0, r5, r0 + bl FUN_0200D858 + mov r1, #6 + lsl r1, r1, #6 + str r0, [r5, r1] + cmp r6, #1 + beq _02215E4C + mov r0, #0x3b + mov r1, #0x2c + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02215E4C: + mov r0, #0x3b + mov r1, #0x15 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02215E58: + add r0, r5, #0 + bl MOD56_02216120 + mov r0, #0x3b + mov r1, #0x13 + lsl r0, r0, #4 + str r1, [r5, r0] + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02215E6A: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_02215E70: .word 0x000001E2 + thumb_func_end MOD56_02215D68 + + thumb_func_start MOD56_02215E74 +MOD56_02215E74: ; 0x02215E74 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + bl FUN_02031810 + cmp r0, #0 + bne _02215E9C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x36 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + mov r4, #2 +_02215E9C: + add r0, r4, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + thumb_func_end MOD56_02215E74 + + thumb_func_start MOD56_02215EA4 +MOD56_02215EA4: ; 0x02215EA4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, r1, #0 + add r6, r2, #0 + bl LoadPlayerDataAddress + bl FUN_02024FF4 + add r7, r0, #0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02215EE0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02215EE0: + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02215F04 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02215F04: + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #8 + beq _02215F30 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02215F30 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C + mov r0, #0x5e + mov r1, #8 + lsl r0, r0, #2 + str r1, [r5, r0] +_02215F30: + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02215FEC ; =0x0000012D + mov r1, #0xcf + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + lsl r1, r1, #2 + mov r2, #2 + ldr r0, [r0] + add r1, r5, r1 + add r3, r2, #0 + bl FUN_02019064 + cmp r6, #0 + beq _02215F70 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xd0 + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + add r1, r4, #0 + bl FUN_0200A8E0 + b _02215F82 +_02215F70: + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xcc + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + add r1, r4, #0 + bl FUN_0200A8E0 +_02215F82: + mov r2, #0x57 + add r0, r5, #0 + lsl r2, r2, #2 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0xcf + lsl r0, r0, #2 + ldr r2, _02215FF0 ; =0x000001E2 + add r0, r5, r0 + mov r1, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r0, #1 + bl FUN_02002B60 + mov r0, #0 + bl FUN_02002B7C + mov r3, #0 + str r3, [sp] + str r7, [sp, #4] + mov r2, #0x57 + mov r0, #0xcf + lsl r0, r0, #2 + str r3, [sp, #8] + lsl r2, r2, #2 + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02215FEC: .word 0x0000012D +_02215FF0: .word 0x000001E2 + thumb_func_end MOD56_02215EA4 + + thumb_func_start MOD56_02215FF4 +MOD56_02215FF4: ; 0x02215FF4 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + add r4, r1, #0 + bl MOD56_02216274 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02216024 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02216024: + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02216048 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019178 +_02216048: + mov r3, #4 + str r3, [sp] + mov r0, #0x17 + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + mov r0, #0x69 + str r0, [sp, #0x10] + add r0, r5, #0 + add r0, #0xc0 + mov r1, #0xdb + lsl r1, r1, #2 + ldr r0, [r0] + add r1, r5, r1 + mov r2, #2 + bl FUN_02019064 + add r0, r5, #0 + mov r2, #0x56 + add r0, #0xd0 + lsl r2, r2, #2 + ldr r0, [r0] + ldr r2, [r5, r2] + add r1, r4, #0 + bl FUN_0200A8E0 + mov r2, #0x57 + add r0, r5, #0 + lsl r2, r2, #2 + add r0, #0xc8 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r0, [r0] + ldr r2, [r5, r2] + bl FUN_0200B7B8 + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0xdb + lsl r0, r0, #2 + ldr r2, _022160E0 ; =0x000001D9 + add r0, r5, r0 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r3, #0 + mov r0, #0xdb + lsl r0, r0, #2 + str r3, [sp] + mov r2, #0xff + str r2, [sp, #4] + str r3, [sp, #8] + add r2, #0x5d + ldr r2, [r5, r2] + add r0, r5, r0 + mov r1, #1 + bl FUN_0201BD84 + mov r1, #0x5e + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0xdb + lsl r0, r0, #2 + add r0, r5, r0 + bl FUN_02019220 + add sp, #0x14 + pop {r4, r5, pc} + nop +_022160E0: .word 0x000001D9 + thumb_func_end MOD56_02215FF4 + + thumb_func_start MOD56_022160E4 +MOD56_022160E4: ; 0x022160E4 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0 + add r6, r1, #0 + mvn r0, r0 + cmp r6, r0 + beq _0221611C + mov r0, #0x36 + bl FUN_02023928 + add r4, r0, #0 + ldr r0, [r5] + add r1, r6, #0 + bl FUN_020283A4 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_0202395C + add r5, #0xc8 + ldr r0, [r5] + mov r1, #0 + add r2, r4, #0 + bl FUN_0200ABC0 + add r0, r4, #0 + bl FUN_02016A18 +_0221611C: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD56_022160E4 + + thumb_func_start MOD56_02216120 +MOD56_02216120: ; 0x02216120 + push {r4, lr} + add r4, r0, #0 + bl MOD56_02216274 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #8 + beq _02216154 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _02216154 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C + mov r0, #0x5e + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] +_02216154: + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _02216178 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_02216178: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_02216120 + + thumb_func_start MOD56_0221617C +MOD56_0221617C: ; 0x0221617C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #4] + ldrb r0, [r1, #0x1b] + cmp r0, r4 + beq _022161C8 + add r0, r4, #0 + strb r4, [r1, #0x1b] + bl MOD56_02211EA4 + cmp r0, #0 + bne _022161C8 + cmp r4, #8 + beq _022161C8 + cmp r4, #1 + bne _022161A8 + mov r0, #0 + mov r1, #0x1e + bl FUN_020053CC + b _022161C8 +_022161A8: + cmp r4, #0x10 + bne _022161C8 + ldr r0, _022161D8 ; =0x00000497 + mov r1, #0x5a + bl FUN_0200488C + mov r0, #7 + mov r1, #0x12 + mov r2, #0 + bl FUN_02004828 + mov r0, #0x7f + mov r1, #0x1e + mov r2, #1 + bl FUN_0200538C +_022161C8: + ldr r0, [r5, #4] + mov r1, #0x24 + bl MOD04_021D8478 + add r0, r5, #0 + bl MOD56_0221341C + pop {r3, r4, r5, pc} + .align 2, 0 +_022161D8: .word 0x00000497 + thumb_func_end MOD56_0221617C + + thumb_func_start MOD56_022161DC +MOD56_022161DC: ; 0x022161DC + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4, #4] + add r0, r2, #0 + add r0, #0x21 + ldrb r1, [r0] + mov r0, #1 + add r2, #0x21 + sub r0, r0, r1 + strb r0, [r2] + ldr r0, [r4, #4] + add r0, #0x21 + ldrb r0, [r0] + bl MOD04_021D8678 + ldr r0, [r4, #4] + mov r1, #0x24 + bl MOD04_021D8478 + ldr r0, [r4, #4] + add r0, #0x21 + ldrb r0, [r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_022161DC + + thumb_func_start MOD56_0221620C +MOD56_0221620C: ; 0x0221620C + push {r4, lr} + add r4, r0, #0 + ldr r2, [r4, #4] + add r0, r2, #0 + add r0, #0x22 + ldrb r1, [r0] + mov r0, #1 + add r2, #0x22 + sub r0, r0, r1 + strb r0, [r2] + ldr r1, [r4, #4] + add r0, r1, #0 + add r0, #0x22 + ldrb r0, [r0] + add r1, #0x21 + strb r0, [r1] + ldr r0, [r4, #4] + add r0, #0x21 + ldrb r0, [r0] + bl MOD04_021D8678 + ldr r0, [r4, #4] + mov r1, #0x24 + bl MOD04_021D8478 + ldr r0, [r4, #4] + add r0, #0x22 + ldrb r0, [r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_0221620C + + thumb_func_start MOD56_02216248 +MOD56_02216248: ; 0x02216248 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #4] + add r0, r1, #0 + add r0, #0x22 + ldrb r0, [r0] + add r1, #0x21 + strb r0, [r1] + ldr r0, [r4, #4] + add r0, #0x21 + ldrb r0, [r0] + bl MOD04_021D8678 + ldr r0, [r4, #4] + mov r1, #0x24 + bl MOD04_021D8478 + ldr r0, [r4, #4] + add r0, #0x22 + ldrb r0, [r0] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_02216248 + + thumb_func_start MOD56_02216274 +MOD56_02216274: ; 0x02216274 + push {r4, lr} + add r4, r0, #0 + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022162DC + bl FUN_0200DC24 + mov r0, #6 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r4, r0] + sub r0, #8 + ldr r0, [r4, r0] + cmp r0, #8 + beq _022162B8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _022162B8 + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C + mov r0, #0x5e + mov r1, #8 + lsl r0, r0, #2 + str r1, [r4, r0] +_022162B8: + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019048 + cmp r0, #0 + beq _022162DC + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0xcf + lsl r0, r0, #2 + add r0, r4, r0 + bl FUN_02019178 +_022162DC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD56_02216274 + + .section .rodata + ; 0x022162E0 + .incbin "baserom.nds", 0x2A5E80, 0x19C + + .section .data + ; 0x02216480 + .incbin "baserom.nds", 0x2A6020, 0x180 |