.include "asm/macros.inc" .include "global.inc" .section .text .balign 4, 0 thumb_func_start MOD08_02211E60 MOD08_02211E60: ; 0x02211E60 mov r1, #0 mvn r1, r1 cmp r0, r1 beq _02211E70 lsl r1, r0, #2 ldr r0, _02211E74 ; =0x0222A9E4 ldr r0, [r0, r1] bx lr _02211E70: ldr r0, _02211E78 ; =0x0222A780 bx lr .align 2, 0 _02211E74: .word 0x0222A9E4 _02211E78: .word 0x0222A780 thumb_func_start MOD08_02211E7C MOD08_02211E7C: ; 0x02211E7C push {r3, r4, r5, lr} add r5, r0, #0 add r0, r1, #0 add r4, r3, #0 bl MOD08_02211E60 ldr r3, [sp, #0x10] add r1, r0, #0 mov r0, #0x20 lsl r3, r3, #0x14 str r0, [sp] add r0, r5, #0 add r2, r4, #0 lsr r3, r3, #0x10 bl FUN_02003054 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02211EA0 MOD08_02211EA0: ; 0x02211EA0 add r1, r0, #0 add r1, #0x8d ldrb r1, [r1] cmp r1, #0 bne _02211EB2 ldr r1, _02211EC0 ; =MOD08_02211EC4 add r0, #0xbc str r1, [r0] bx lr _02211EB2: add r1, r0, #0 add r1, #0x8d ldrb r1, [r1] add r0, #0x8d sub r1, r1, #1 strb r1, [r0] bx lr .align 2, 0 _02211EC0: .word MOD08_02211EC4 thumb_func_start MOD08_02211EC4 MOD08_02211EC4: ; 0x02211EC4 push {r4, lr} add r4, r0, #0 _02211EC8: ldr r0, [r4, #0x18] ldr r0, [r0] bl MOD08_0221533C add r1, r0, #0 add r0, r4, #0 blx r1 add r0, r4, #0 add r0, #0x8d ldrb r0, [r0] cmp r0, #0 bne _02211EE6 ldr r0, [r4, #0x10] cmp r0, #1 beq _02211EC8 _02211EE6: pop {r4, pc} thumb_func_start MOD08_02211EE8 MOD08_02211EE8: ; 0x02211EE8 push {r3, r4, r5, lr} add r5, r2, #0 add r4, r3, #0 cmp r0, #1 beq _02211EF8 cmp r0, #2 beq _02211F06 b _02211F14 _02211EF8: add r0, r1, #0 add r0, #0x8e ldrh r0, [r0] add r1, #0x8e add r0, r0, #1 strh r0, [r1] b _02211F18 _02211F06: add r0, r1, #0 add r0, #0x90 ldrh r0, [r0] add r1, #0x90 add r0, r0, #1 strh r0, [r1] b _02211F18 _02211F14: bl ErrorHandling _02211F18: ldr r2, [sp, #0x10] add r0, r5, #0 add r1, r4, #0 bl FUN_0200CA44 pop {r3, r4, r5, pc} thumb_func_start MOD08_02211F24 MOD08_02211F24: ; 0x02211F24 push {r4, lr} add r4, r2, #0 cmp r0, #1 beq _02211F32 cmp r0, #2 beq _02211F40 b _02211F4E _02211F32: add r0, r1, #0 add r0, #0x8e ldrh r0, [r0] add r1, #0x8e sub r0, r0, #1 strh r0, [r1] b _02211F52 _02211F40: add r0, r1, #0 add r0, #0x90 ldrh r0, [r0] add r1, #0x90 sub r0, r0, #1 strh r0, [r1] b _02211F52 _02211F4E: bl ErrorHandling _02211F52: add r0, r4, #0 bl FUN_0200CAB4 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02211F5C MOD08_02211F5C: ; 0x02211F5C push {r3, r4, r5, lr} mov r1, #0x69 lsl r1, r1, #2 add r5, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _02211F78 cmp r4, #0 bne _02211F74 bl ErrorHandling _02211F74: mov r0, #0 pop {r3, r4, r5, pc} _02211F78: mov r2, #0x69 mov r1, #0 lsl r2, r2, #2 bl Call_FillMemWithValue mov r1, #0x47 str r5, [r4] mov r0, #0 str r0, [r4, #8] ldr r0, [r4] lsl r1, r1, #2 bl FUN_02016998 add r1, r4, #0 add r1, #0xc0 str r0, [r1] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] cmp r0, #0 bne _02211FAC bne _02211FA8 bl ErrorHandling _02211FA8: mov r0, #0 pop {r3, r4, r5, pc} _02211FAC: mov r2, #0x47 mov r1, #0 lsl r2, r2, #2 bl Call_FillMemWithValue mov r1, #0 str r1, [r4, #0xc] str r1, [r4, #0x18] add r2, r4, #0 add r3, r1, #0 _02211FC0: add r0, r2, #0 add r0, #0xcc add r1, r1, #1 add r2, r2, #4 str r3, [r0] cmp r1, #4 blt _02211FC0 mov r0, #0x59 add r2, r4, #0 mov r1, #0 lsl r0, r0, #2 _02211FD6: add r3, r3, #1 str r1, [r2, r0] add r2, r2, #4 cmp r3, #5 blt _02211FD6 mov r0, #0x5e lsl r0, r0, #2 str r1, [r4, r0] mov r0, #1 str r0, [r4, #0xc] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02211FF0 MOD08_02211FF0: ; 0x02211FF0 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 cmp r5, #0 bne _02211FFE bl ErrorHandling _02211FFE: str r4, [r5, #8] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02212004 MOD08_02212004: ; 0x02212004 push {r4, lr} add r4, r0, #0 bne _0221200E bl ErrorHandling _0221200E: ldr r0, [r4, #8] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02212014 MOD08_02212014: ; 0x02212014 push {r4, lr} add r4, r0, #0 bne _0221201E bl ErrorHandling _0221201E: ldr r0, [r4] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02212024 MOD08_02212024: ; 0x02212024 push {r4, lr} add r4, r0, #0 bl MOD08_022123CC cmp r0, #0 bne _02212034 mov r0, #0 pop {r4, pc} _02212034: add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] bl FUN_02016A18 add r0, r4, #0 bl FUN_02016A18 mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02212048 MOD08_02212048: ; 0x02212048 push {r4, r5, r6, r7, lr} sub sp, #0x3c add r4, r0, #0 add r5, r1, #0 str r2, [sp] str r3, [sp, #4] bl MOD08_0221268C add r0, r4, #0 bl MOD08_022123CC cmp r0, #0 bne _02212068 add sp, #0x3c mov r0, #0 pop {r4, r5, r6, r7, pc} _02212068: mov r3, #0 mov r2, #1 add r1, r3, #0 _0221206E: add r0, r4, r3 add r0, #0x6c strb r2, [r0] add r0, r4, r3 add r0, #0x7c add r3, r3, #1 strb r1, [r0] cmp r3, #0x10 blt _0221206E add r3, r4, #0 mov r0, #0 _02212084: add r2, r3, #0 add r2, #0x94 add r1, r1, #1 add r3, r3, #4 str r0, [r2] cmp r1, #0xa blt _02212084 add r3, r4, #0 mov r2, #0 _02212096: str r2, [r3, #0x30] add r1, r3, #0 str r2, [r3, #0x28] add r1, #0x2c strb r2, [r1] add r1, r3, #0 add r1, #0x2d add r0, r0, #1 add r3, #0xc strb r2, [r1] cmp r0, #3 blt _02212096 add r0, r4, #0 add r0, #0xc0 ldrb r1, [r5] ldr r0, [r0] strb r1, [r0] add r0, r4, #0 add r0, #0xc0 ldrb r1, [r5, #1] ldr r0, [r0] strb r1, [r0, #1] add r0, r4, #0 add r0, #0xc0 ldrh r1, [r5, #2] ldr r0, [r0] strh r1, [r0, #2] add r0, r4, #0 add r0, #0xc0 ldr r1, [r5, #4] ldr r0, [r0] str r1, [r0, #4] add r0, r4, #0 add r0, #0xc0 ldrh r1, [r5, #8] ldr r0, [r0] strh r1, [r0, #8] add r0, r4, #0 add r0, #0xc0 ldrh r1, [r5, #0xc] ldr r0, [r0] strh r1, [r0, #0xa] add r0, r4, #0 add r0, #0xc0 ldr r1, [r5, #0x10] ldr r0, [r0] str r1, [r0, #0xc] add r0, r4, #0 add r0, #0xc0 ldrh r1, [r5, #0xa] ldr r0, [r0] strh r1, [r0, #0x10] add r0, r4, #0 add r0, #0xc0 ldr r1, [r5, #0x54] ldr r0, [r0] strh r1, [r0, #0x12] add r0, r4, #0 add r0, #0xc0 ldrh r1, [r5, #0x14] ldr r0, [r0] strh r1, [r0, #0x14] add r0, r4, #0 add r0, #0xc0 ldrh r1, [r5, #0x16] ldr r0, [r0] strh r1, [r0, #0x16] ldrh r0, [r5, #0xe] lsl r0, r0, #0x1e lsr r2, r0, #0x1f add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] mov r0, #0x46 lsl r0, r0, #2 str r2, [r1, r0] ldr r0, [sp, #4] ldr r1, [r0] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac str r1, [r0] ldr r0, [sp, #4] ldr r0, [r0] cmp r0, #0 bne _02212148 bl ErrorHandling _02212148: ldr r0, [sp, #4] mov r5, #0 ldr r1, [r0, #4] add r0, r4, #0 add r0, #0xc4 str r1, [r0] ldr r0, [sp, #4] ldr r2, [sp, #4] ldr r1, [r0, #8] add r0, r4, #0 add r0, #0xc8 str r1, [r0] ldr r0, [sp, #4] add r3, r5, #0 ldr r1, [r0, #0x30] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r7, r5, #0 add r0, #0xd4 str r1, [r0] add r0, r2, #0 mov ip, r0 _02212176: add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] ldr r0, [r2, #0xc] add r1, r1, r3 add r1, #0xb0 str r0, [r1] ldr r0, [sp, #4] add r1, r0, r5 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldrb r6, [r1, #0x1c] add r0, r0, r5 add r0, #0xc0 strb r6, [r0] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r6, [r2, #0x20] add r0, r0, r3 add r0, #0xc4 str r6, [r0] mov r0, ip ldrh r6, [r0, #0x34] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r0, r0, r7 add r0, #0xd8 strh r6, [r0] add r0, r1, #0 add r0, #0x3c ldrb r6, [r0] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r7, r7, #2 add r0, r0, r5 add r0, #0xe0 strb r6, [r0] add r0, r1, #0 add r0, #0x40 ldrb r6, [r0] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r1, #0x44 add r0, r0, r5 add r0, #0xe4 strb r6, [r0] ldrb r0, [r1] add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] add r1, r1, r5 add r1, #0xe8 strb r0, [r1] add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] ldr r0, [r2, #0x48] add r1, r1, r3 add r1, #0xec str r0, [r1] add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] ldr r0, [r2, #0x58] add r1, r1, r3 add r1, #0xfc str r0, [r1] mov r0, ip add r0, r0, #2 add r5, r5, #1 add r2, r2, #4 add r3, r3, #4 mov ip, r0 cmp r5, #4 blt _02212176 ldr r5, [sp, #4] mov r2, #0x61 lsl r2, r2, #2 add r5, #0x6c add r3, r4, r2 ldmia r5!, {r0, r1} stmia r3!, {r0, r1} ldmia r5!, {r0, r1} stmia r3!, {r0, r1} ldmia r5!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [sp, #4] add r0, #0x84 ldr r3, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] add r0, r2, #0 sub r0, #0x78 str r3, [r1, r0] ldr r0, [sp, #4] add r0, #0x8c ldr r3, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] add r0, r2, #0 sub r0, #0x70 str r3, [r1, r0] ldr r0, [sp, #4] add r0, #0x88 ldr r3, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] add r0, r2, #0 sub r0, #0x74 str r3, [r1, r0] ldr r0, [sp] sub r2, #0x62 cmp r0, r2 bne _02212296 ldr r5, _0221236C ; =0x0222AB18 add r3, sp, #8 mov r2, #6 _02212270: ldmia r5!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _02212270 ldr r0, [r5] str r0, [r3] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #0x12] cmp r0, #0xc blo _0221228E mov r0, #0xa1 str r0, [sp] b _02212296 _0221228E: lsl r1, r0, #2 add r0, sp, #8 ldr r0, [r0, r1] str r0, [sp] _02212296: ldr r0, [sp] cmp r0, #0 beq _022122A2 ldr r1, _02212370 ; =0x000001D3 cmp r0, r1 ble _022122A6 _022122A2: mov r0, #1 str r0, [sp] _022122A6: ldr r0, [sp, #4] ldr r0, [r0, #0x68] str r0, [r4, #4] ldr r1, [sp] ldr r2, [r4] bl LoadFromNarc_2 str r0, [r4, #0x14] cmp r0, #0 bne _022122C6 bne _022122C0 bl ErrorHandling _022122C0: add sp, #0x3c mov r0, #0 pop {r4, r5, r6, r7, pc} _022122C6: str r0, [r4, #0x18] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #0 bl FUN_02018884 mov r1, #0x1a lsl r1, r1, #4 strb r0, [r4, r1] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #1 bl FUN_02018884 ldr r1, _02212374 ; =0x000001A1 strb r0, [r4, r1] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #2 bl FUN_02018884 ldr r1, _02212378 ; =0x000001A2 strb r0, [r4, r1] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #3 bl FUN_02018884 ldr r1, _0221237C ; =0x000001A3 mov r3, #0 strb r0, [r4, r1] add r2, r4, #0 add r1, r3, #0 _02212310: add r0, r2, #0 add r0, #0xdc add r3, r3, #1 add r2, r2, #4 str r1, [r0] cmp r3, #0xa blt _02212310 mov r2, #0x4f lsl r2, r2, #2 add r3, r2, #0 add r5, r4, #0 mov r0, #0 add r3, #0x14 _0221232A: str r0, [r5, r2] str r0, [r5, r3] add r1, r1, #1 add r5, r5, #4 cmp r1, #5 blt _0221232A mov r1, #6 lsl r1, r1, #6 str r0, [r4, r1] add r1, r4, #0 ldr r2, _02212380 ; =MOD08_02211EC4 add r1, #0xbc str r2, [r1] add r1, r4, #0 add r1, #0x8d strb r0, [r1] add r0, r4, #0 bl MOD08_02212004 cmp r0, #1 bne _0221235C mov r0, #0x67 mov r1, #7 lsl r0, r0, #2 b _02212362 _0221235C: mov r1, #0xff add r0, r1, #0 add r0, #0x9d _02212362: str r1, [r4, r0] mov r0, #1 str r0, [r4, #0x10] add sp, #0x3c pop {r4, r5, r6, r7, pc} .align 2, 0 _0221236C: .word 0x0222AB18 _02212370: .word 0x000001D3 _02212374: .word 0x000001A1 _02212378: .word 0x000001A2 _0221237C: .word 0x000001A3 _02212380: .word MOD08_02211EC4 thumb_func_start MOD08_02212384 MOD08_02212384: ; 0x02212384 push {r4, lr} add r4, r0, #0 bl MOD08_022123CC cmp r0, #0 bne _02212394 mov r0, #0 pop {r4, pc} _02212394: add r0, r4, #0 add r4, #0xbc ldr r1, [r4] blx r1 mov r0, #1 pop {r4, pc} thumb_func_start MOD08_022123A0 MOD08_022123A0: ; 0x022123A0 ldr r0, [r0, #0x10] cmp r0, #1 bne _022123AA mov r0, #1 bx lr _022123AA: mov r0, #0 bx lr .align 2, 0 thumb_func_start MOD08_022123B0 MOD08_022123B0: ; 0x022123B0 push {r3, lr} ldr r0, [r0, #0x14] cmp r0, #0 bne _022123C2 bne _022123BE bl ErrorHandling _022123BE: mov r0, #0 pop {r3, pc} _022123C2: bl FUN_02016A18 mov r0, #1 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_022123CC MOD08_022123CC: ; 0x022123CC cmp r0, #0 bne _022123D4 mov r0, #0 bx lr _022123D4: ldr r0, [r0, #0xc] cmp r0, #1 bne _022123DE mov r0, #1 bx lr _022123DE: mov r0, #0 bx lr .align 2, 0 thumb_func_start MOD08_022123E4 MOD08_022123E4: ; 0x022123E4 push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r0, #0 add r5, r1, #0 add r4, r2, #0 str r3, [sp] mov r0, #1 add r1, r6, #0 add r2, r5, #0 add r3, r4, #0 bl MOD08_02211EE8 add sp, #4 pop {r3, r4, r5, r6, pc} thumb_func_start MOD08_02212400 MOD08_02212400: ; 0x02212400 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, _02212418 ; =0x0000044C add r4, r1, #0 add r3, r2, #0 str r0, [sp] mov r0, #1 add r1, r5, #0 add r2, r4, #0 bl MOD08_02211EE8 pop {r3, r4, r5, pc} .align 2, 0 _02212418: .word 0x0000044C thumb_func_start MOD08_0221241C MOD08_0221241C: ; 0x0221241C push {r3, r4, r5, r6, lr} sub sp, #4 add r6, r0, #0 add r5, r1, #0 add r4, r2, #0 str r3, [sp] mov r0, #2 add r1, r6, #0 add r2, r5, #0 add r3, r4, #0 bl MOD08_02211EE8 add sp, #4 pop {r3, r4, r5, r6, pc} thumb_func_start MOD08_02212438 MOD08_02212438: ; 0x02212438 add r3, r0, #0 add r2, r1, #0 add r1, r3, #0 ldr r3, _02212444 ; =MOD08_02211F24 mov r0, #1 bx r3 .align 2, 0 _02212444: .word MOD08_02211F24 thumb_func_start MOD08_02212448 MOD08_02212448: ; 0x02212448 add r3, r0, #0 add r2, r1, #0 add r1, r3, #0 ldr r3, _02212454 ; =MOD08_02211F24 mov r0, #2 bx r3 .align 2, 0 _02212454: .word MOD08_02211F24 thumb_func_start MOD08_02212458 MOD08_02212458: ; 0x02212458 add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #0x14] bx lr thumb_func_start MOD08_02212460 MOD08_02212460: ; 0x02212460 add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #0x16] bx lr thumb_func_start MOD08_02212468 MOD08_02212468: ; 0x02212468 add r0, #0xc0 ldr r1, [r0] ldr r0, [r1, #0x18] lsl r0, r0, #2 add r0, r1, r0 ldr r0, [r0, #0x1c] bx lr .align 2, 0 thumb_func_start MOD08_02212478 MOD08_02212478: ; 0x02212478 add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 ldr r0, [r0, #0x1c] bx lr thumb_func_start MOD08_02212484 MOD08_02212484: ; 0x02212484 add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 ldr r0, [r0, #0x5c] bx lr thumb_func_start MOD08_02212490 MOD08_02212490: ; 0x02212490 add r0, #0xc4 ldr r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_02212498 MOD08_02212498: ; 0x02212498 push {r3, r4, r5, lr} add r5, r1, #0 add r4, r0, #0 cmp r5, #0xa blt _022124A6 bl ErrorHandling _022124A6: lsl r0, r5, #2 add r0, r4, r0 add r0, #0x94 ldr r0, [r0] pop {r3, r4, r5, pc} thumb_func_start MOD08_022124B0 MOD08_022124B0: ; 0x022124B0 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #0xa blt _022124BE bl ErrorHandling _022124BE: cmp r5, #0 bne _022124C6 bl ErrorHandling _022124C6: add r5, #0xdc lsl r4, r4, #2 ldr r0, [r5, r4] cmp r0, #0 bne _022124D4 bl ErrorHandling _022124D4: ldr r0, [r5, r4] pop {r3, r4, r5, pc} thumb_func_start MOD08_022124D8 MOD08_022124D8: ; 0x022124D8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 cmp r4, #5 blt _022124E6 bl ErrorHandling _022124E6: cmp r5, #0 bne _022124EE bl ErrorHandling _022124EE: mov r0, #0x4f lsl r0, r0, #2 add r5, r5, r0 lsl r4, r4, #2 ldr r0, [r5, r4] cmp r0, #0 bne _02212500 bl ErrorHandling _02212500: ldr r0, [r5, r4] pop {r3, r4, r5, pc} thumb_func_start MOD08_02212504 MOD08_02212504: ; 0x02212504 push {r4, lr} add r4, r0, #0 bne _0221250E bl ErrorHandling _0221250E: mov r0, #0x4e lsl r0, r0, #2 ldr r0, [r4, r0] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02212518 MOD08_02212518: ; 0x02212518 add r0, #0xcc ldr r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_02212520 MOD08_02212520: ; 0x02212520 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_0221252C MOD08_0221252C: ; 0x0221252C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5] mov r1, #0x3c bl FUN_02016998 add r4, r0, #0 bne _02212544 bl ErrorHandling mov r0, #0 pop {r3, r4, r5, pc} _02212544: mov r1, #0 mov r2, #0x3c bl Call_FillMemWithValue add r0, r5, #0 add r0, #0x90 ldrh r0, [r0] add r5, #0x90 add r0, r0, #1 strh r0, [r5] add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_0221255C MOD08_0221255C: ; 0x0221255C ldr r3, _02212568 ; =0x0200CA45 str r0, [r1, #0x38] ldr r0, _0221256C ; =MOD08_02212574 ldr r2, _02212570 ; =0x0000044C bx r3 nop _02212568: .word 0x0200CA45 _0221256C: .word MOD08_02212574 _02212570: .word 0x0000044C thumb_func_start MOD08_02212574 MOD08_02212574: ; 0x02212574 push {r3, r4, r5, lr} add r4, r1, #0 ldrb r1, [r4] add r5, r0, #0 add r0, r4, #0 lsl r2, r1, #2 ldr r1, _022125B0 ; =0x0222AAC4 ldr r1, [r1, r2] blx r1 cmp r0, #0 bne _022125AE ldr r0, [r4, #0x38] add r1, r0, #0 add r1, #0x90 ldrh r1, [r1] cmp r1, #0 beq _022125A2 add r1, r0, #0 add r1, #0x90 ldrh r1, [r1] add r0, #0x90 sub r1, r1, #1 strh r1, [r0] _022125A2: add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 bl FUN_0200CAB4 _022125AE: pop {r3, r4, r5, pc} .align 2, 0 _022125B0: .word 0x0222AAC4 thumb_func_start MOD08_022125B4 MOD08_022125B4: ; 0x022125B4 mov r0, #0 bx lr thumb_func_start MOD08_022125B8 MOD08_022125B8: ; 0x022125B8 push {r3, r4, r5, lr} add r5, r0, #0 ldrb r1, [r5, #4] add r0, r1, #1 strb r0, [r5, #4] ldrb r0, [r5, #3] cmp r1, r0 bhs _022125CC mov r0, #1 pop {r3, r4, r5, pc} _022125CC: mov r0, #0 strb r0, [r5, #4] ldr r2, [r5, #0x14] ldr r1, [r5, #0x10] mov r4, #1 add r1, r2, r1 str r1, [r5, #0x14] ldr r1, [r5, #0x10] cmp r1, #0 bne _022125E4 add r4, r0, #0 b _022125FC _022125E4: ldr r2, [r5, #0xc] ldr r1, [r5, #8] cmp r1, r2 ldr r1, [r5, #0x14] bge _022125F6 cmp r1, r2 blt _022125FC add r4, r0, #0 b _022125FC _022125F6: cmp r1, r2 bgt _022125FC add r4, r0, #0 _022125FC: ldr r0, [r5, #0x14] bl FUN_0200554C ldrh r0, [r5, #0x1a] bl FUN_02005508 cmp r0, #0 bne _0221260E mov r4, #0 _0221260E: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02212614 MOD08_02212614: ; 0x02212614 ldr r3, _02212618 ; =MOD08_022125B8 bx r3 .align 2, 0 _02212618: .word MOD08_022125B8 thumb_func_start MOD08_0221261C MOD08_0221261C: ; 0x0221261C ldr r3, _02212620 ; =MOD08_022125B8 bx r3 .align 2, 0 _02212620: .word MOD08_022125B8 thumb_func_start MOD08_02212624 MOD08_02212624: ; 0x02212624 push {r3, r4, r5, lr} add r5, r0, #0 ldrb r1, [r5, #4] add r0, r1, #1 strb r0, [r5, #4] ldrb r0, [r5, #3] cmp r1, r0 bhs _02212638 mov r0, #1 pop {r3, r4, r5, pc} _02212638: mov r0, #0 strb r0, [r5, #4] ldrb r0, [r5, #0x18] mov r4, #1 sub r0, r0, #1 strb r0, [r5, #0x18] ldrh r0, [r5, #0x1a] bl FUN_020054C8 ldrh r0, [r5, #0x1a] ldr r1, _02212660 ; =0x0000FFFF ldr r2, [r5, #0x14] bl FUN_02005530 ldrb r0, [r5, #0x18] cmp r0, #0 bne _0221265C mov r4, #0 _0221265C: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 _02212660: .word 0x0000FFFF thumb_func_start MOD08_02212664 MOD08_02212664: ; 0x02212664 push {r4, lr} add r4, r0, #0 ldrb r2, [r4, #3] mov r0, #1 sub r1, r2, #1 strb r1, [r4, #3] cmp r2, #0 bne _02212686 ldrh r0, [r4, #0x1a] bl FUN_020054C8 ldrh r0, [r4, #0x1a] ldr r1, _02212688 ; =0x0000FFFF ldr r2, [r4, #0x14] bl FUN_02005530 mov r0, #0 _02212686: pop {r4, pc} .align 2, 0 _02212688: .word 0x0000FFFF thumb_func_start MOD08_0221268C MOD08_0221268C: ; 0x0221268C push {r3, lr} ldr r0, _022126A0 ; =0x04000050 mov r3, #8 mov r1, #0 mov r2, #0x3f str r3, [sp] bl G2x_SetBlendAlpha_ pop {r3, pc} nop _022126A0: .word 0x04000050 thumb_func_start MOD08_022126A4 MOD08_022126A4: ; 0x022126A4 push {r3, r4} add r2, r0, #0 mov r1, #1 add r2, #0x8d strb r1, [r2] ldr r3, _022126D8 ; =0x021C48B8 lsl r2, r1, #9 ldr r4, [r3, #0x44] tst r2, r4 beq _022126D4 add r2, r1, #0 add r2, #0xff tst r2, r4 beq _022126D4 ldr r2, [r3, #0x48] lsl r1, r1, #0xa tst r1, r2 beq _022126D4 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] mov r1, #0 add r0, #0x8d strb r1, [r0] _022126D4: pop {r3, r4} bx lr .align 2, 0 _022126D8: .word 0x021C48B8 thumb_func_start MOD08_022126DC MOD08_022126DC: ; 0x022126DC ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r0, #0 add r1, #0x8d strb r2, [r1] ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r1, _022126F8 ; =MOD08_02211EA0 add r0, #0xbc str r1, [r0] bx lr .align 2, 0 _022126F8: .word MOD08_02211EA0 thumb_func_start MOD08_022126FC MOD08_022126FC: ; 0x022126FC add r1, r0, #0 add r1, #0x8e ldrh r1, [r1] cmp r1, #0 bne _02212714 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] mov r1, #0 add r0, #0x8d strb r1, [r0] bx lr _02212714: mov r1, #1 add r0, #0x8d strb r1, [r0] bx lr thumb_func_start MOD08_0221271C MOD08_0221271C: ; 0x0221271C ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] cmp r3, #0xa bhs _0221273A lsl r1, r3, #2 add r0, r0, r1 add r0, #0x94 str r2, [r0] _0221273A: bx lr thumb_func_start MOD08_0221273C MOD08_0221273C: ; 0x0221273C ldr r1, [r0, #0x18] mov r3, #0 add r1, r1, #4 str r1, [r0, #0x18] add r2, r3, #0 _02212746: add r1, r0, #0 add r1, #0x94 add r3, r3, #1 add r0, r0, #4 str r2, [r1] cmp r3, #0xa blt _02212746 bx lr .align 2, 0 thumb_func_start MOD08_02212758 MOD08_02212758: ; 0x02212758 cmp r1, #5 bhi _022127A4 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02212768: ; jump table .short _02212774 - _02212768 - 2 ; case 0 .short _0221277C - _02212768 - 2 ; case 1 .short _02212784 - _02212768 - 2 ; case 2 .short _0221278C - _02212768 - 2 ; case 3 .short _02212794 - _02212768 - 2 ; case 4 .short _0221279C - _02212768 - 2 ; case 5 _02212774: add r0, #0xc0 ldr r0, [r0] ldr r0, [r0, #4] bx lr _0221277C: add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #8] bx lr _02212784: add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #0xa] bx lr _0221278C: add r0, #0xc0 ldr r0, [r0] ldr r0, [r0, #0xc] bx lr _02212794: add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #0x10] bx lr _0221279C: add r0, #0xc0 ldr r0, [r0] ldrh r0, [r0, #0x12] bx lr _022127A4: mov r0, #0 bx lr thumb_func_start MOD08_022127A8 MOD08_022127A8: ; 0x022127A8 push {r3, r4, r5, r6, r7, lr} mov r4, #0 add r3, r0, #0 add r0, r1, #0 str r2, [sp] add r6, r4, #0 add r5, r0, #0 mov ip, r4 add r7, r0, #0 _022127BA: add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r1, r1, r6 add r1, #0xb0 ldr r1, [r1] str r1, [r5, #8] add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r1, r1, r6 add r1, #0xc4 ldr r1, [r1] str r1, [r5, #0x18] add r1, r3, #0 add r1, #0xc0 ldr r2, [r1] mov r1, ip add r1, r2, r1 add r1, #0xd8 ldrh r1, [r1] add r2, r0, r4 add r2, #0x30 strh r1, [r7, #0x28] add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r7, r7, #2 add r1, r1, r4 add r1, #0xe0 ldrb r1, [r1] strb r1, [r2] add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r2, r0, r4 add r1, r1, r4 add r1, #0xe4 ldrb r1, [r1] add r2, #0x34 strb r1, [r2] add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r2, r0, r4 add r1, r1, r4 add r1, #0xe8 ldrb r1, [r1] add r2, #0x38 strb r1, [r2] add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r2, r0, r4 add r1, r1, r6 add r1, #0xec ldr r1, [r1] add r2, #0x4c str r1, [r5, #0x3c] add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r6, r6, #4 add r1, r1, r4 add r1, #0xc0 ldrb r1, [r1] add r4, r4, #1 add r5, r5, #4 strb r1, [r2] mov r1, ip add r1, r1, #2 mov ip, r1 cmp r4, #4 blt _022127BA ldr r1, [sp] cmp r1, #3 bhi _022128B8 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02212860: ; jump table .short _02212868 - _02212860 - 2 ; case 0 .short _0221287C - _02212860 - 2 ; case 1 .short _02212890 - _02212860 - 2 ; case 2 .short _022128A4 - _02212860 - 2 ; case 3 _02212868: add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r3, #0xc0 ldrh r1, [r1, #0x14] str r1, [r0] ldr r1, [r3] ldrh r1, [r1, #0x16] str r1, [r0, #4] pop {r3, r4, r5, r6, r7, pc} _0221287C: add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r3, #0xc0 ldrh r1, [r1, #0x14] str r1, [r0] ldr r1, [r3] ldrh r1, [r1, #0x14] str r1, [r0, #4] pop {r3, r4, r5, r6, r7, pc} _02212890: add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r3, #0xc0 ldrh r1, [r1, #0x14] str r1, [r0] ldr r1, [r3] ldrh r1, [r1, #0x14] str r1, [r0, #4] pop {r3, r4, r5, r6, r7, pc} _022128A4: add r1, r3, #0 add r1, #0xc0 ldr r1, [r1] add r3, #0xc0 ldrh r1, [r1, #0x14] str r1, [r0] ldr r1, [r3] ldrh r1, [r1, #0x14] str r1, [r0, #4] pop {r3, r4, r5, r6, r7, pc} _022128B8: bl ErrorHandling pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_022128C0 MOD08_022128C0: ; 0x022128C0 push {r3, r4, r5, lr} sub sp, #0x50 add r5, r0, #0 ldr r1, [r5, #0x18] add r1, r1, #4 str r1, [r5, #0x18] ldr r4, [r1] add r1, r1, #4 str r1, [r5, #0x18] add r1, sp, #0 add r2, r4, #0 bl MOD08_022127A8 cmp r4, #2 add r0, sp, #0 bne _022128EA ldr r1, [r5] bl MOD08_0222A568 add sp, #0x50 pop {r3, r4, r5, pc} _022128EA: cmp r4, #3 bne _022128F8 ldr r1, [r5] bl MOD08_0222A2A4 add sp, #0x50 pop {r3, r4, r5, pc} _022128F8: ldr r1, [r5] bl MOD08_0222A294 add sp, #0x50 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02212904 MOD08_02212904: ; 0x02212904 push {r4, lr} sub sp, #0x50 add r4, r0, #0 ldr r1, [r4, #0x18] add r1, r1, #4 str r1, [r4, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r4, #0x18] add r1, sp, #0 bl MOD08_022127A8 ldr r1, [r4] add r0, sp, #0 bl MOD08_0222A494 add sp, #0x50 pop {r4, pc} thumb_func_start MOD08_02212928 MOD08_02212928: ; 0x02212928 ldr r1, [r0, #0x18] mov r2, #0 add r1, r1, #4 str r1, [r0, #0x18] add r3, r0, #0 _02212932: ldr r1, [r3, #0x30] cmp r1, #1 beq _0221295E mov r1, #0xc mul r1, r2 mov r2, #1 add r1, r0, r1 str r2, [r1, #0x30] add r2, r1, #0 mov r3, #0 add r2, #0x2c strb r3, [r2] ldr r2, [r0, #0x18] ldr r3, [r2] add r2, r1, #0 add r2, #0x2d strb r3, [r2] ldr r2, [r0, #0x18] add r2, r2, #4 str r2, [r0, #0x18] str r2, [r1, #0x28] bx lr _0221295E: add r2, r2, #1 add r3, #0xc cmp r2, #3 blt _02212932 bx lr thumb_func_start MOD08_02212968 MOD08_02212968: ; 0x02212968 push {r3, r4} ldr r1, [r0, #0x18] add r3, r0, #0 add r1, r1, #4 add r3, #0x18 str r1, [r0, #0x18] mov r2, #2 _02212976: ldr r1, [r3, #0x30] cmp r1, #0 beq _022129AA add r4, r2, #0 mov r1, #0xc add r2, r0, #0 mul r4, r1 add r2, #0x2c ldrb r1, [r2, r4] add r1, r1, #1 strb r1, [r2, r4] ldrb r3, [r2, r4] add r2, r0, r4 add r1, r2, #0 add r1, #0x2d ldrb r1, [r1] cmp r3, r1 bne _022129A2 mov r0, #0 str r0, [r2, #0x30] pop {r3, r4} bx lr _022129A2: ldr r1, [r2, #0x28] str r1, [r0, #0x18] pop {r3, r4} bx lr _022129AA: sub r3, #0xc sub r2, r2, #1 bpl _02212976 pop {r3, r4} bx lr thumb_func_start MOD08_022129B4 MOD08_022129B4: ; 0x022129B4 push {r3, r4, r5, r6, r7, lr} ldr r1, _02212BB0 ; =0x0000017E add r5, r0, #0 ldrb r0, [r5, r1] mov r6, #0 cmp r0, #1 bhs _022129D2 add r0, r5, #0 mov r2, #1 add r0, #0x8d strb r2, [r0] ldrb r0, [r5, r1] add r0, r0, #1 strb r0, [r5, r1] pop {r3, r4, r5, r6, r7, pc} _022129D2: add r7, r6, #0 add r4, r6, #0 _022129D6: add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, r0, r4 ldr r0, [r0, #0x1c] cmp r0, #0 beq _022129EA bl FUN_020133C8 add r6, r6, r0 _022129EA: add r7, r7, #1 add r4, r4, #4 cmp r7, #0x10 blt _022129D6 cmp r6, #0 bne _02212A0A add r0, r5, #0 add r0, #0x8e ldrh r0, [r0] cmp r0, #0 bne _02212A0A add r0, r5, #0 add r0, #0x90 ldrh r0, [r0] cmp r0, #0 beq _02212A1A _02212A0A: add r0, r5, #0 mov r1, #1 add r0, #0x8d strb r1, [r0] ldr r0, _02212BB4 ; =0x0000017D mov r1, #0 strb r1, [r5, r0] pop {r3, r4, r5, r6, r7, pc} _02212A1A: bl FUN_02005514 cmp r0, #0 beq _02212A44 ldr r0, _02212BB4 ; =0x0000017D ldrb r1, [r5, r0] add r1, r1, #1 strb r1, [r5, r0] ldrb r1, [r5, r0] cmp r1, #0x5a bls _02212A3C mov r1, #0 strb r1, [r5, r0] add r0, r5, #0 add r0, #0x8d strb r1, [r0] b _02212A44 _02212A3C: mov r0, #1 add r5, #0x8d strb r0, [r5] pop {r3, r4, r5, r6, r7, pc} _02212A44: ldr r0, _02212BB4 ; =0x0000017D mov r1, #0 strb r1, [r5, r0] add r0, r0, #1 strb r1, [r5, r0] add r0, r5, #0 add r2, r1, #0 _02212A52: add r1, r1, #1 str r2, [r0, #0x1c] add r0, r0, #4 cmp r1, #3 blt _02212A52 add r1, r5, #0 mov r4, #0 _02212A60: add r0, r1, #0 str r4, [r1, #0x28] add r0, #0x2c strb r4, [r0] add r0, r1, #0 add r0, #0x2d strb r4, [r0] str r4, [r1, #0x30] add r2, r2, #1 add r1, #0xc cmp r2, #3 blt _02212A60 add r7, r5, #0 mov r6, #0 _02212A7C: add r0, r7, #0 add r0, #0xcc ldr r1, [r0] cmp r1, #0 beq _02212A94 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200C398 _02212A94: add r0, r7, #0 add r0, #0xcc add r4, r4, #1 add r7, r7, #4 str r6, [r0] cmp r4, #4 blt _02212A7C _02212AA2: add r0, r5, #0 add r1, r6, #0 bl MOD08_02213454 add r6, r6, #1 cmp r6, #5 blt _02212AA2 mov r6, #0 add r4, r6, #0 add r7, r6, #0 _02212AB6: add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, r0, r4 ldr r0, [r0, #0x1c] cmp r0, #0 beq _02212AD2 bl MOD08_02215B40 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, r0, r4 str r7, [r0, #0x1c] _02212AD2: add r6, r6, #1 add r4, r4, #4 cmp r6, #0x10 blt _02212AB6 mov r0, #6 lsl r0, r0, #6 ldr r1, [r5, r0] cmp r1, #0 beq _02212AE8 mov r1, #0 str r1, [r5, r0] _02212AE8: add r0, r5, #0 bl MOD08_02212004 cmp r0, #0 bne _02212B3C bl FUN_02231678 add r0, r5, #0 mov r1, #1 bl MOD08_02215588 add r4, r0, #0 add r0, r5, #0 bl MOD08_02212014 add r3, r0, #0 lsl r0, r4, #0x18 mov r1, #1 lsr r0, r0, #0x18 lsl r1, r1, #0xe mov r2, #0 bl FUN_02017F18 add r0, r5, #0 bl MOD08_02212490 add r4, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD08_02215588 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r4, #0 lsr r1, r1, #0x18 bl FUN_02018744 mov r0, #2 mov r1, #1 bl FUN_0201797C b _02212B40 _02212B3C: bl FUN_02233560 _02212B40: mov r1, #0x1a lsl r1, r1, #4 ldrb r1, [r5, r1] mov r0, #0 bl FUN_020178BC ldr r1, _02212BB8 ; =0x000001A1 mov r0, #1 ldrb r1, [r5, r1] bl FUN_020178BC ldr r1, _02212BBC ; =0x000001A2 mov r0, #2 ldrb r1, [r5, r1] bl FUN_020178BC ldr r1, _02212BC0 ; =0x000001A3 mov r0, #3 ldrb r1, [r5, r1] bl FUN_020178BC add r0, r5, #0 add r0, #0xc4 mov r2, #0 ldr r0, [r0] mov r1, #2 add r3, r2, #0 bl FUN_020179E0 add r0, r5, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #2 mov r2, #3 mov r3, #0 bl FUN_020179E0 add r0, r5, #0 add r0, #0xc4 mov r2, #0 ldr r0, [r0] mov r1, #3 add r3, r2, #0 bl FUN_020179E0 add r0, r5, #0 add r0, #0xc4 mov r1, #3 ldr r0, [r0] add r2, r1, #0 mov r3, #0 bl FUN_020179E0 mov r0, #0 str r0, [r5, #0x10] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02212BB0: .word 0x0000017E _02212BB4: .word 0x0000017D _02212BB8: .word 0x000001A1 _02212BBC: .word 0x000001A2 _02212BC0: .word 0x000001A3 thumb_func_start MOD08_02212BC4 MOD08_02212BC4: ; 0x02212BC4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r4, [r0] add r1, r0, #4 str r1, [r5, #0x18] ldr r0, [r1] str r0, [sp] add r0, r1, #4 str r0, [r5, #0x18] ldr r7, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] str r4, [r0, #0x18] add r0, r5, r4 add r0, #0x7c ldrb r0, [r0] cmp r0, #0 beq _02212C22 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldr r0, [r0, #0x1c] add r1, sp, #4 bl FUN_020133EC mov r0, #0 ldr r1, [sp, #8] mvn r0, r0 mul r0, r1 str r0, [sp, #8] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r1, sp, #4 add r0, r0, r6 ldr r0, [r0, #0x1c] bl FUN_020133FC _02212C22: add r0, r5, #0 add r0, #0xc0 add r1, r5, r4 add r1, #0x6c ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldrb r1, [r1] ldr r0, [r0, #0x1c] bl FUN_02013440 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] ldr r1, [sp] add r0, r0, r6 ldr r0, [r0, #0x1c] add r2, r7, #0 add r3, r5, #0 bl MOD08_02215B2C add r5, #0xc0 ldr r1, [r5] str r0, [r1, #0x5c] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02212C58 MOD08_02212C58: ; 0x02212C58 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r4, [r0] add r0, r0, #4 str r0, [r5, #0x18] ldr r7, [r0] add r1, r0, #4 str r1, [r5, #0x18] ldr r0, [r1] add r1, r1, #4 str r1, [r5, #0x18] str r0, [sp, #4] ldr r0, [r1] str r0, [sp] add r0, r1, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] str r4, [r0, #0x18] add r0, r5, r4 add r0, #0x7c ldrb r0, [r0] cmp r0, #0 beq _02212CBE add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldr r0, [r0, #0x1c] add r1, sp, #8 bl FUN_020133EC mov r0, #0 ldr r1, [sp, #0xc] mvn r0, r0 mul r0, r1 str r0, [sp, #0xc] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r1, sp, #8 add r0, r0, r6 ldr r0, [r0, #0x1c] bl FUN_020133FC _02212CBE: add r0, r5, #0 add r0, #0xc0 add r1, r5, r4 add r1, #0x6c ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldrb r1, [r1] ldr r0, [r0, #0x1c] bl FUN_02013440 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] ldr r1, [sp, #4] add r0, r0, r6 ldr r0, [r0, #0x1c] ldr r2, [sp] add r3, r5, #0 bl MOD08_02215B2C add r5, #0xc0 ldr r2, [r5] lsl r1, r7, #2 add r1, r2, r1 str r0, [r1, #0x5c] add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02212CF8 MOD08_02212CF8: ; 0x02212CF8 push {r4, r5, r6, lr} sub sp, #0x90 ldr r5, _02212D4C ; =0x0222AB4C add r4, r0, #0 add r3, sp, #0 mov r2, #0x12 _02212D04: ldmia r5!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _02212D04 add r0, r4, #0 bl MOD08_02212458 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212460 add r6, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD08_02227468 mov r1, #0x18 add r3, r5, #0 mul r3, r1 add r2, sp, #0 lsl r1, r0, #2 add r0, r2, r3 ldr r4, [r1, r0] cmp r4, #0xff bne _02212D44 bl ErrorHandling _02212D44: sub r0, r4, #1 add sp, #0x90 pop {r4, r5, r6, pc} nop _02212D4C: .word 0x0222AB4C thumb_func_start MOD08_02212D50 MOD08_02212D50: ; 0x02212D50 push {r4, r5, r6, lr} sub sp, #0x90 ldr r5, _02212DA4 ; =0x0222ABDC add r4, r0, #0 add r3, sp, #0 mov r2, #0x12 _02212D5C: ldmia r5!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _02212D5C add r0, r4, #0 bl MOD08_02212458 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212460 add r6, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD08_02227468 mov r1, #0x18 add r3, r5, #0 mul r3, r1 add r2, sp, #0 lsl r1, r0, #2 add r0, r2, r3 ldr r4, [r1, r0] cmp r4, #0xff bne _02212D9C bl ErrorHandling _02212D9C: add r0, r4, #0 add sp, #0x90 pop {r4, r5, r6, pc} nop _02212DA4: .word 0x0222ABDC thumb_func_start MOD08_02212DA8 MOD08_02212DA8: ; 0x02212DA8 push {r3, r4, r5, r6, r7, lr} sub sp, #0x28 add r5, r0, #0 ldr r1, [r5, #0x18] add r0, #0x18 add r1, r1, #4 str r1, [r5, #0x18] ldr r4, [r1] add r1, r1, #4 str r1, [r5, #0x18] mov r1, #0 add r2, sp, #0x10 _02212DC0: ldr r3, [r5, #0x18] add r1, r1, #1 ldr r3, [r3] str r3, [r2] ldr r3, [r0] add r2, r2, #4 add r3, r3, #4 str r3, [r0] cmp r1, #6 blt _02212DC0 ldr r1, [r5, #0x18] ldr r1, [r1] str r1, [sp] ldr r1, [r0] add r1, r1, #4 str r1, [r0] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] str r4, [r0, #0x18] add r0, r5, r4 add r0, #0x7c ldrb r0, [r0] cmp r0, #0 beq _02212E1E add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldr r0, [r0, #0x1c] add r1, sp, #4 bl FUN_020133EC mov r0, #0 ldr r1, [sp, #8] mvn r0, r0 mul r0, r1 str r0, [sp, #8] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r1, sp, #4 add r0, r0, r6 ldr r0, [r0, #0x1c] bl FUN_020133FC _02212E1E: add r0, r5, #0 bl MOD08_02212CF8 add r7, r0, #0 add r0, r5, #0 add r0, #0xc0 add r1, r5, r4 add r1, #0x6c ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldrb r1, [r1] ldr r0, [r0, #0x1c] bl FUN_02013440 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r2, r7, #2 add r0, r0, r6 add r1, sp, #0x10 ldr r1, [r1, r2] ldr r0, [r0, #0x1c] ldr r2, [sp] add r3, r5, #0 bl MOD08_02215B2C add r5, #0xc0 ldr r1, [r5] str r0, [r1, #0x5c] add sp, #0x28 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02212E60 MOD08_02212E60: ; 0x02212E60 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r5, r0, #0 ldr r1, [r5, #0x18] add r0, #0x18 add r1, r1, #4 str r1, [r5, #0x18] ldr r4, [r1] add r1, r1, #4 str r1, [r5, #0x18] mov r1, #0 add r2, sp, #0x10 _02212E78: ldr r3, [r5, #0x18] add r1, r1, #1 ldr r3, [r3] str r3, [r2] ldr r3, [r0] add r2, r2, #4 add r3, r3, #4 str r3, [r0] cmp r1, #4 blt _02212E78 ldr r1, [r5, #0x18] ldr r1, [r1] str r1, [sp] ldr r1, [r0] add r1, r1, #4 str r1, [r0] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] str r4, [r0, #0x18] add r0, r5, r4 add r0, #0x7c ldrb r0, [r0] cmp r0, #0 beq _02212ED6 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldr r0, [r0, #0x1c] add r1, sp, #4 bl FUN_020133EC mov r0, #0 ldr r1, [sp, #8] mvn r0, r0 mul r0, r1 str r0, [sp, #8] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r1, sp, #4 add r0, r0, r6 ldr r0, [r0, #0x1c] bl FUN_020133FC _02212ED6: add r0, r5, #0 bl MOD08_02212D50 add r7, r0, #0 add r0, r5, #0 add r0, #0xc0 add r1, r5, r4 add r1, #0x6c ldr r0, [r0] lsl r6, r4, #2 add r0, r0, r6 ldrb r1, [r1] ldr r0, [r0, #0x1c] bl FUN_02013440 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r2, r7, #2 add r0, r0, r6 add r1, sp, #0x10 ldr r1, [r1, r2] ldr r0, [r0, #0x1c] ldr r2, [sp] add r3, r5, #0 bl MOD08_02215B2C add r5, #0xc0 ldr r1, [r5] str r0, [r1, #0x5c] add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02212F18 MOD08_02212F18: ; 0x02212F18 push {r3, r4, r5, r6, r7, lr} mov r6, #0 add r5, r0, #0 add r7, r6, #0 add r4, r6, #0 _02212F22: add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, r0, r4 ldr r0, [r0, #0x1c] cmp r0, #0 beq _02212F36 bl FUN_020133C8 add r6, r6, r0 _02212F36: add r7, r7, #1 add r4, r4, #4 cmp r7, #0x10 blt _02212F22 cmp r6, #0 bne _02212F50 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] mov r0, #0 add r5, #0x8d strb r0, [r5] pop {r3, r4, r5, r6, r7, pc} _02212F50: mov r0, #1 add r5, #0x8d strb r0, [r5] pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02212F58 MOD08_02212F58: ; 0x02212F58 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r4, r1, #2 add r0, r0, r4 ldr r0, [r0, #0x1c] cmp r0, #0 beq _02212F7C bl ErrorHandling _02212F7C: ldr r0, [r5, #0x18] mov r2, #0 ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r5] bl MOD08_02215AA4 add r1, r5, #0 add r1, #0xc0 ldr r1, [r1] add r1, r1, r4 str r0, [r1, #0x1c] add r0, r5, #0 mov r1, #2 add r0, #0x8d strb r1, [r0] ldr r0, _02212FA8 ; =MOD08_02211EA0 add r5, #0xbc str r0, [r5] pop {r3, r4, r5, pc} nop _02212FA8: .word MOD08_02211EA0 thumb_func_start MOD08_02212FAC MOD08_02212FAC: ; 0x02212FAC push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r4, r1, #2 add r0, r0, r4 ldr r0, [r0, #0x1c] cmp r0, #0 beq _02212FD2 bl ErrorHandling _02212FD2: ldr r0, [r5, #0x18] mov r1, #0x64 ldr r2, [r0] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r5] mov r3, #0 bl MOD08_02215ACC add r1, r5, #0 add r1, #0xc0 ldr r1, [r1] add r1, r1, r4 str r0, [r1, #0x1c] add r0, r5, #0 mov r1, #2 add r0, #0x8d strb r1, [r0] ldr r0, _02213000 ; =MOD08_02211EA0 add r5, #0xbc str r0, [r5] pop {r3, r4, r5, pc} nop _02213000: .word MOD08_02211EA0 thumb_func_start MOD08_02213004 MOD08_02213004: ; 0x02213004 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] lsl r4, r1, #2 add r0, r0, r4 ldr r0, [r0, #0x1c] bl MOD08_02215B40 add r5, #0xc0 ldr r0, [r5] mov r1, #0 add r0, r0, r4 str r1, [r0, #0x1c] pop {r3, r4, r5, pc} thumb_func_start MOD08_02213030 MOD08_02213030: ; 0x02213030 ldr r1, [r0, #0x18] mov r3, #0 add r1, r1, #4 str r1, [r0, #0x18] add r2, r0, #0 _0221303A: ldr r1, [r2, #0x1c] cmp r1, #0 bne _02213056 ldr r1, [r0, #0x18] add r2, r1, #4 lsl r1, r3, #2 add r1, r0, r1 str r2, [r1, #0x1c] ldr r2, [r0, #0x18] ldr r1, [r2] lsl r1, r1, #2 add r1, r2, r1 str r1, [r0, #0x18] bx lr _02213056: add r3, r3, #1 add r2, r2, #4 cmp r3, #3 blt _0221303A bx lr thumb_func_start MOD08_02213060 MOD08_02213060: ; 0x02213060 ldr r1, [r0, #0x18] add r3, r0, #0 add r1, r1, #4 str r1, [r0, #0x18] mov r2, #2 add r3, #8 _0221306C: ldr r1, [r3, #0x1c] cmp r1, #0 beq _02213082 add r3, r0, #0 add r3, #0x1c lsl r2, r2, #2 ldr r1, [r3, r2] str r1, [r0, #0x18] mov r0, #0 str r0, [r3, r2] bx lr _02213082: sub r3, r3, #4 sub r2, r2, #1 bpl _0221306C bx lr .align 2, 0 thumb_func_start MOD08_0221308C MOD08_0221308C: ; 0x0221308C push {r3, r4} ldr r2, [r0, #0x18] add r1, r0, #0 add r2, r2, #4 str r2, [r0, #0x18] ldr r4, [r2] add r2, r2, #4 str r2, [r0, #0x18] ldr r3, [r2] add r2, r2, #4 str r2, [r0, #0x18] lsl r2, r4, #2 add r2, r0, r2 add r2, #0x94 ldr r2, [r2] add r1, #0x18 cmp r3, r2 bne _022130BA ldr r1, [r0, #0x18] ldr r1, [r1] str r1, [r0, #0x18] pop {r3, r4} bx lr _022130BA: ldr r0, [r1] add r0, r0, #4 str r0, [r1] pop {r3, r4} bx lr thumb_func_start MOD08_022130C4 MOD08_022130C4: ; 0x022130C4 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] bl MOD08_02215350 cmp r0, #0 ldr r0, [r4, #0x18] beq _022130E4 ldr r0, [r0] str r0, [r4, #0x18] pop {r4, pc} _022130E4: add r0, r0, #4 str r0, [r4, #0x18] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022130EC MOD08_022130EC: ; 0x022130EC push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 ldr r0, [r4, #0x18] add r1, r0, #4 str r1, [r4, #0x18] ldr r0, [r1] add r1, r1, #4 str r1, [r4, #0x18] bl MOD08_02218C48 add r7, r0, #0 ldr r0, [r4, #0x18] add r2, r4, #0 ldr r5, [r0] add r0, r0, #4 add r2, #0x18 mov r3, #0 str r0, [r4, #0x18] cmp r5, #0 bls _0221312E add r6, r4, #0 _02213116: ldr r0, [r4, #0x18] add r3, r3, #1 ldr r1, [r0] add r0, r6, #0 add r0, #0x94 str r1, [r0] ldr r0, [r2] add r6, r6, #4 add r0, r0, #4 str r0, [r2] cmp r3, r5 blo _02213116 _0221312E: cmp r3, #0xa bge _02213146 lsl r0, r3, #2 add r2, r4, r0 mov r1, #0 _02213138: add r0, r2, #0 add r0, #0x94 add r3, r3, #1 add r2, r2, #4 str r1, [r0] cmp r3, #0xa blt _02213138 _02213146: add r0, r4, #0 blx r7 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0221314C MOD08_0221314C: ; 0x0221314C ldr r2, [r0, #0x18] add r1, r0, #0 add r2, r2, #4 str r2, [r0, #0x18] add r2, r0, #0 add r2, #0xc0 ldr r2, [r2] add r1, #0x18 ldrh r3, [r2, #0x10] mov r2, #1 tst r2, r3 beq _0221316A ldr r2, [r1] add r2, r2, #4 str r2, [r1] _0221316A: ldr r2, [r0, #0x18] ldr r1, [r2] lsl r1, r1, #2 add r1, r2, r1 str r1, [r0, #0x18] bx lr .align 2, 0 thumb_func_start MOD08_02213178 MOD08_02213178: ; 0x02213178 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0x18] add r1, r1, #4 str r1, [r4, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r4, #0x18] cmp r2, #0 bne _0221319A add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] ldrh r1, [r1, #0x14] bl MOD08_02227470 b _022131A6 _0221319A: add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] ldrh r1, [r1, #0x16] bl MOD08_02227470 _022131A6: cmp r0, #4 bne _022131B0 ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] _022131B0: ldr r1, [r4, #0x18] ldr r0, [r1] lsl r0, r0, #2 add r0, r1, r0 str r0, [r4, #0x18] pop {r4, pc} thumb_func_start MOD08_022131BC MOD08_022131BC: ; 0x022131BC push {r4, r5} sub sp, #0x10 ldr r5, _02213214 ; =0x0222AA3C add r2, sp, #0 add r4, r0, #0 add r3, r2, #0 ldmia r5!, {r0, r1} stmia r2!, {r0, r1} ldmia r5!, {r0, r1} stmia r2!, {r0, r1} ldr r1, [r4, #0x18] add r0, r4, #0 add r1, r1, #4 str r1, [r4, #0x18] add r1, r4, #0 add r1, #0xc0 ldr r1, [r1] add r0, #0x18 ldr r1, [r1, #0xc] cmp r1, #0 beq _02213202 ldr r2, [r0] add r2, r2, #4 str r2, [r0] mov r2, #0 _022131EE: ldr r5, [r3] tst r5, r1 bne _02213202 ldr r5, [r0] add r2, r2, #1 add r5, r5, #4 add r3, r3, #4 str r5, [r0] cmp r2, #4 blo _022131EE _02213202: ldr r1, [r4, #0x18] ldr r0, [r1] lsl r0, r0, #2 add r0, r1, r0 str r0, [r4, #0x18] add sp, #0x10 pop {r4, r5} bx lr nop _02213214: .word 0x0222AA3C thumb_func_start MOD08_02213218 MOD08_02213218: ; 0x02213218 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0x18] add r1, r1, #4 str r1, [r4, #0x18] bl MOD08_02212004 cmp r0, #1 bne _02213236 ldr r1, [r4, #0x18] ldr r0, [r1] lsl r0, r0, #2 add r0, r1, r0 str r0, [r4, #0x18] pop {r4, pc} _02213236: ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02213240 MOD08_02213240: ; 0x02213240 push {r3, r4, r5, lr} add r5, r0, #0 ldr r1, [r5, #0x18] add r1, r1, #4 str r1, [r5, #0x18] add r1, r5, #0 add r1, #0xc0 ldr r1, [r1] ldrh r1, [r1, #0x14] bl MOD08_02227470 add r1, r5, #0 add r1, #0xc0 ldr r1, [r1] add r4, r0, #0 ldrh r1, [r1, #0x16] add r0, r5, #0 bl MOD08_02227470 cmp r4, r0 bne _02213276 ldr r1, [r5, #0x18] ldr r0, [r1] lsl r0, r0, #2 add r0, r1, r0 str r0, [r5, #0x18] pop {r3, r4, r5, pc} _02213276: ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02213280 MOD08_02213280: ; 0x02213280 ldr r2, [r0, #0x18] add r1, r0, #0 add r2, r2, #4 str r2, [r0, #0x18] ldr r3, [r2] add r2, r2, #4 str r2, [r0, #0x18] add r2, r0, #0 add r2, #0xc0 ldr r2, [r2] add r1, #0x18 ldrh r2, [r2, #0x10] cmp r3, r2 bne _022132AA ldr r0, [r0, #0x18] ldr r2, [r1] ldr r0, [r0] lsl r0, r0, #2 add r0, r2, r0 str r0, [r1] bx lr _022132AA: ldr r0, [r1] add r0, r0, #4 str r0, [r1] bx lr .align 2, 0 thumb_func_start MOD08_022132B4 MOD08_022132B4: ; 0x022132B4 ldr r1, [r0, #0x18] add r2, r1, #4 str r2, [r0, #0x18] ldr r1, [r2] lsl r1, r1, #2 add r1, r2, r1 str r1, [r0, #0x18] bx lr thumb_func_start MOD08_022132C4 MOD08_022132C4: ; 0x022132C4 push {r4, r5, r6, lr} add r4, r0, #0 cmp r1, #7 bhi _022133A2 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _022132D8: ; jump table .short _022132E8 - _022132D8 - 2 ; case 0 .short _022132F0 - _022132D8 - 2 ; case 1 .short _022132F8 - _022132D8 - 2 ; case 2 .short _02213306 - _022132D8 - 2 ; case 3 .short _02213314 - _022132D8 - 2 ; case 4 .short _0221333A - _022132D8 - 2 ; case 5 .short _02213360 - _022132D8 - 2 ; case 6 .short _02213382 - _022132D8 - 2 ; case 7 _022132E8: add r4, #0xc0 ldr r0, [r4] ldrh r6, [r0, #0x14] b _022133A2 _022132F0: add r4, #0xc0 ldr r0, [r4] ldrh r6, [r0, #0x16] b _022133A2 _022132F8: add r4, #0xc0 ldr r1, [r4] ldrh r1, [r1, #0x14] bl MOD08_022274C0 add r6, r0, #0 b _022133A2 _02213306: add r4, #0xc0 ldr r1, [r4] ldrh r1, [r1, #0x16] bl MOD08_022274C0 add r6, r0, #0 b _022133A2 _02213314: mov r6, #0xff mov r5, #0 _02213318: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #0 beq _02213328 cmp r0, #2 bne _0221332C _02213328: add r6, r5, #0 b _02213332 _0221332C: add r5, r5, #1 cmp r5, #4 blt _02213318 _02213332: cmp r6, #0xff bne _022133A2 mov r6, #0 b _022133A2 _0221333A: mov r6, #0xff mov r5, #0 _0221333E: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #1 beq _0221334E cmp r0, #3 bne _02213352 _0221334E: add r6, r5, #0 b _02213358 _02213352: add r5, r5, #1 cmp r5, #4 blt _0221333E _02213358: cmp r6, #0xff bne _022133A2 mov r6, #0 b _022133A2 _02213360: mov r6, #0xff mov r5, #0 _02213364: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #4 bne _02213374 add r6, r5, #0 b _0221337A _02213374: add r5, r5, #1 cmp r5, #4 blt _02213364 _0221337A: cmp r6, #0xff bne _022133A2 mov r6, #0 b _022133A2 _02213382: mov r6, #0xff mov r5, #0 _02213386: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #5 bne _02213396 add r6, r5, #0 b _0221339C _02213396: add r5, r5, #1 cmp r5, #4 blt _02213386 _0221339C: cmp r6, #0xff bne _022133A2 mov r6, #0 _022133A2: add r0, r6, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_022133A8 MOD08_022133A8: ; 0x022133A8 push {r4, r5, r6, lr} add r5, r1, #0 ldrb r0, [r5, #5] cmp r0, #0 beq _022133C4 ldrb r0, [r5, #4] add r0, r0, #1 strb r0, [r5, #4] ldrb r1, [r5, #4] ldrb r0, [r5, #5] cmp r1, r0 bne _022133F2 mov r0, #0 strb r0, [r5, #4] _022133C4: ldr r0, [r5, #8] mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [r5, #8] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r4, r0, #0x10 ldr r0, [r5, #8] mov r1, #0x29 bl FUN_0200782C sub r0, r4, r0 lsl r0, r0, #0x10 asr r2, r0, #0x10 ldr r0, [r5] add r1, r6, #0 bl FUN_0200C714 _022133F2: pop {r4, r5, r6, pc} thumb_func_start MOD08_022133F4 MOD08_022133F4: ; 0x022133F4 push {r4, r5, r6, lr} add r5, r1, #0 ldrb r0, [r5, #5] cmp r0, #0 beq _02213410 ldrb r0, [r5, #4] add r0, r0, #1 strb r0, [r5, #4] ldrb r1, [r5, #4] ldrb r0, [r5, #5] cmp r1, r0 bne _02213452 mov r0, #0 strb r0, [r5, #4] _02213410: ldr r0, [r5, #8] mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [r5, #8] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r4, r0, #0x10 ldr r0, [r5, #8] mov r1, #0x29 bl FUN_0200782C sub r0, r4, r0 lsl r0, r0, #0x10 asr r4, r0, #0x10 sub r6, #0x28 ldr r0, [r5] mov r1, #2 mov r2, #0 neg r3, r6 bl FUN_020179E0 sub r4, #0x28 ldr r0, [r5] mov r1, #2 mov r2, #3 neg r3, r4 bl FUN_020179E0 _02213452: pop {r4, r5, r6, pc} thumb_func_start MOD08_02213454 MOD08_02213454: ; 0x02213454 push {r3, r4, r5, lr} add r4, r0, #0 cmp r1, #4 bne _02213480 mov r0, #0x5e lsl r0, r0, #2 ldr r0, [r4, r0] cmp r0, #0 beq _0221349E ldr r0, [r0, #0xc] bl FUN_0200CAB4 mov r0, #0x5e lsl r0, r0, #2 ldr r0, [r4, r0] bl FUN_02016A18 mov r0, #0x5e mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] pop {r3, r4, r5, pc} _02213480: mov r0, #0x59 lsl r0, r0, #2 lsl r5, r1, #2 add r4, r4, r0 ldr r0, [r4, r5] cmp r0, #0 beq _0221349E ldr r0, [r0, #0xc] bl FUN_0200CAB4 ldr r0, [r4, r5] bl FUN_02016A18 mov r0, #0 str r0, [r4, r5] _0221349E: pop {r3, r4, r5, pc} thumb_func_start MOD08_022134A0 MOD08_022134A0: ; 0x022134A0 bx lr .align 2, 0 thumb_func_start MOD08_022134A4 MOD08_022134A4: ; 0x022134A4 bx lr .align 2, 0 thumb_func_start MOD08_022134A8 MOD08_022134A8: ; 0x022134A8 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r5, r0, #0 ldr r1, [r5, #0x18] add r2, r1, #4 str r2, [r5, #0x18] ldr r1, [r2] add r2, r2, #4 str r2, [r5, #0x18] ldr r4, [r2] add r2, r2, #4 str r2, [r5, #0x18] bl MOD08_022132C4 add r6, r0, #0 add r0, r5, #0 add r0, #0xc0 ldr r1, [r0] lsl r0, r6, #2 add r0, r1, r0 add r0, #0xb0 ldr r1, [r0] ldr r0, [r1, #4] str r0, [sp, #0x14] ldr r0, [r1, #8] str r0, [sp, #0x10] ldr r0, [r1] str r0, [sp, #0x18] add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _022134FE add r0, r5, #0 add r1, r6, #0 bl MOD08_022154A8 bl MOD08_0222A6C8 cmp r0, #1 bne _022134FE mov r7, #0xc9 b _02213500 _022134FE: mov r7, #0xc8 _02213500: mov r0, #2 bl FUN_020187B0 mov r2, #0x19 mov r1, #0 lsl r2, r2, #8 bl MI_CpuFill8 mov r0, #2 mov r1, #0 bl FUN_0201797C mov r0, #0 str r0, [sp] add r0, r5, #0 add r0, #0xc4 mov r3, #0x32 ldr r0, [r0] ldr r2, [sp, #0x18] mov r1, #2 lsl r3, r3, #6 bl FUN_02017E14 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #0x80 str r0, [sp, #8] add r0, r5, #0 add r0, #0xc8 ldr r0, [r0] ldr r1, [sp, #0x14] ldr r2, [sp, #0x10] ldr r3, [r5] bl FUN_020030E8 mov r0, #0 str r0, [sp] str r0, [sp, #4] str r0, [sp, #8] ldr r0, [r5] add r2, r5, #0 str r0, [sp, #0xc] add r2, #0xc4 ldr r2, [r2] mov r0, #7 add r1, r7, #0 mov r3, #2 bl FUN_020068C8 cmp r4, #1 bne _022135AC ldr r0, [r5] mov r1, #0x10 bl FUN_02016998 mov r1, #0x5e lsl r1, r1, #2 str r0, [r5, r1] add r0, r5, #0 add r0, #0xc4 ldr r2, [r0] ldr r0, [r5, r1] add r1, r6, #0 str r2, [r0] add r0, r5, #0 bl MOD08_022154D4 mov r1, #0x5e lsl r1, r1, #2 ldr r2, [r5, r1] str r0, [r2, #8] ldr r0, [r5, r1] mov r2, #0 strb r2, [r0, #4] ldr r0, [r5, r1] strb r2, [r0, #5] ldr r0, _02213628 ; =MOD08_022133F4 ldr r1, [r5, r1] ldr r2, _0221362C ; =0x00001001 bl FUN_0200CA44 mov r1, #0x5e lsl r1, r1, #2 ldr r1, [r5, r1] str r0, [r1, #0xc] _022135AC: add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r7, r0, #0x10 add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r4, r0, #0x10 add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 mov r1, #0x29 bl FUN_0200782C sub r0, r4, r0 lsl r0, r0, #0x10 asr r4, r0, #0x10 add r0, r5, #0 add r0, #0xc4 sub r7, #0x28 ldr r0, [r0] mov r1, #2 mov r2, #0 neg r3, r7 bl FUN_020179E0 add r0, r5, #0 add r0, #0xc4 sub r4, #0x28 ldr r0, [r0] mov r1, #2 mov r2, #3 neg r3, r4 bl FUN_020179E0 mov r0, #2 mov r1, #1 bl FUN_0201797C add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 lsl r1, r1, #0x18 mov r0, #2 lsr r1, r1, #0x18 bl FUN_020178BC add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _02213628: .word MOD08_022133F4 _0221362C: .word 0x00001001 thumb_func_start MOD08_02213630 MOD08_02213630: ; 0x02213630 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] add r0, r0, #4 add r0, r0, #4 str r0, [r4, #0x18] mov r0, #2 bl FUN_020187B0 mov r2, #0x19 mov r1, #0 lsl r2, r2, #8 bl MI_CpuFill8 add r0, r4, #0 mov r1, #4 bl MOD08_02213454 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02213658 MOD08_02213658: ; 0x02213658 push {r4, lr} sub sp, #0x18 ldr r3, _022136CC ; =0x0222AA7C add r2, sp, #0 add r4, r0, #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} ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200BB34 mov r1, #0x4e lsl r1, r1, #2 str r0, [r4, r1] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r1, [r4, r1] add r0, #0xac ldr r0, [r0] mov r2, #5 bl FUN_0200BBF0 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200BB68 mov r2, #0x11 mov r1, #0 lsl r2, r2, #0x10 bl FUN_02008D24 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] mov r1, #0x4e add r0, #0xac lsl r1, r1, #2 ldr r0, [r0] ldr r1, [r4, r1] add r2, sp, #0 bl FUN_0200BF60 add sp, #0x18 pop {r4, pc} .align 2, 0 _022136CC: .word 0x0222AA7C thumb_func_start MOD08_022136D0 MOD08_022136D0: ; 0x022136D0 push {r3, r4, r5, lr} sub sp, #0x18 add r5, r0, #0 ldr r0, [r5, #0x18] ldr r1, _0221377C ; =0x00004E21 add r0, r0, #4 str r0, [r5, #0x18] ldr r2, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r4, r2, r1 ldrh r3, [r0, #0x14] lsr r2, r1, #2 add r0, #0xac mul r2, r3 add r4, r4, r2 mov r2, #0 str r2, [sp] mov r2, #1 str r2, [sp, #4] str r4, [sp, #8] lsr r1, r1, #6 ldr r0, [r0] ldr r1, [r5, r1] mov r2, #0x1b mov r3, #0x28 bl FUN_0200C00C mov r0, #0x1b str r0, [sp] mov r3, #0x27 str r3, [sp, #4] mov r0, #0 str r0, [sp, #8] mov r0, #1 str r0, [sp, #0xc] str r0, [sp, #0x10] add r2, r5, #0 add r0, r5, #0 str r4, [sp, #0x14] add r2, #0xc0 ldr r2, [r2] add r0, #0xc8 add r2, #0xac lsl r3, r3, #3 ldr r0, [r0] ldr r2, [r2] ldr r3, [r5, r3] mov r1, #2 bl FUN_0200C0DC mov r0, #0 str r0, [sp] add r0, r5, #0 mov r1, #0x4e str r4, [sp, #4] add r0, #0xc0 ldr r0, [r0] lsl r1, r1, #2 add r0, #0xac ldr r0, [r0] ldr r1, [r5, r1] mov r2, #0x1b mov r3, #0x29 bl FUN_0200C124 mov r0, #0 str r0, [sp] add r0, r5, #0 mov r1, #0x4e str r4, [sp, #4] add r0, #0xc0 ldr r0, [r0] lsl r1, r1, #2 add r0, #0xac ldr r0, [r0] ldr r1, [r5, r1] mov r2, #0x1b mov r3, #0x2a bl FUN_0200C13C add sp, #0x18 pop {r3, r4, r5, pc} .align 2, 0 _0221377C: .word 0x00004E21 thumb_func_start MOD08_02213780 MOD08_02213780: ; 0x02213780 push {r3, r4, r5, r6, r7, lr} sub sp, #0x70 add r4, r0, #0 ldr r1, [r4, #0x18] ldr r6, _02213994 ; =0x00004E21 add r2, r1, #4 str r2, [r4, #0x18] ldr r1, [r2] add r2, r2, #4 str r2, [r4, #0x18] mov ip, r1 ldr r1, [r2] add r2, r2, #4 str r2, [r4, #0x18] str r1, [sp, #0x10] ldr r1, [r2] add r2, r2, #4 str r2, [r4, #0x18] str r1, [sp, #0xc] ldr r1, [r2] add r2, r2, #4 str r2, [r4, #0x18] add r2, r4, #0 add r2, #0xc0 ldr r2, [r2] add r1, r1, r6 ldrh r3, [r2, #0x14] lsr r2, r6, #2 mul r2, r3 add r2, r1, r2 str r2, [sp, #0x58] add r2, r4, #0 add r2, #0xc0 ldr r2, [r2] ldrh r3, [r2, #0x14] lsr r2, r6, #2 mul r2, r3 add r2, r1, r2 str r2, [sp, #0x5c] add r2, r4, #0 add r2, #0xc0 ldr r2, [r2] ldrh r3, [r2, #0x14] lsr r2, r6, #2 mul r2, r3 add r2, r1, r2 str r2, [sp, #0x60] add r2, r4, #0 add r2, #0xc0 ldr r2, [r2] lsr r3, r6, #2 ldrh r2, [r2, #0x14] mul r3, r2 add r1, r1, r3 str r1, [sp, #0x64] mov r1, #0 str r1, [sp, #0x68] str r1, [sp, #0x6c] mov r1, ip bl MOD08_022132C4 str r0, [sp, #0x1c] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] ldr r0, [sp, #0x1c] lsl r0, r0, #2 add r0, r1, r0 add r0, #0xb0 ldr r1, [r0] ldr r0, [r1, #4] str r0, [sp, #0x18] ldr r0, [r1, #8] str r0, [sp, #0x14] ldr r0, [r1] ldr r1, [sp, #0x1c] str r0, [sp, #0x20] add r0, r4, #0 bl MOD08_022154D4 add r6, r0, #0 beq _02213848 mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r7, r0, #0x10 add r0, r6, #0 mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 add r0, r6, #0 mov r1, #0x29 bl FUN_0200782C sub r0, r5, r0 lsl r0, r0, #0x10 asr r5, r0, #0x10 _02213848: add r0, sp, #0x24 strh r7, [r0] strh r5, [r0, #2] mov r1, #0 strh r1, [r0, #4] strh r1, [r0, #6] mov r0, #0x64 str r0, [sp, #0x2c] mov r0, #1 str r1, [sp, #0x30] str r0, [sp, #0x34] str r0, [sp, #0x50] str r1, [sp, #0x54] add r2, sp, #0x58 add r3, sp, #0x24 _02213866: ldr r0, [r2] add r1, r1, #1 str r0, [r3, #0x14] add r2, r2, #4 add r3, r3, #4 cmp r1, #6 blt _02213866 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] mov r1, #0x4e add r0, #0xac lsl r1, r1, #2 ldr r0, [r0] ldr r1, [r4, r1] add r2, sp, #0x24 bl FUN_0200C154 add r7, r0, #0 cmp r6, #0 bne _02213898 mov r1, #0 bl FUN_0200C644 b _022138AC _02213898: add r0, r6, #0 mov r1, #6 bl FUN_0200782C cmp r0, #1 bne _022138AC add r0, r7, #0 mov r1, #0 bl FUN_0200C644 _022138AC: add r0, r4, #0 bl MOD08_02212004 cmp r0, #1 bne _022138CE ldr r1, [sp, #0x1c] add r0, r4, #0 bl MOD08_022154A8 bl MOD08_0222A6C8 cmp r0, #1 bne _022138CE add r0, r7, #0 mov r1, #1 bl FUN_0200C8D0 _022138CE: ldr r1, [sp, #0x1c] add r0, r4, #0 bl MOD08_022154D4 cmp r0, #0 beq _022138F0 ldr r0, [r7] bl FUN_02020350 add r1, r0, #0 mov r3, #0x32 ldr r1, [r1, #4] ldr r2, [sp, #0x20] mov r0, #0x13 lsl r3, r3, #6 bl FUN_0201C2C8 _022138F0: ldr r1, [sp, #0x1c] add r0, r4, #0 bl MOD08_022154D4 cmp r0, #0 beq _02213926 ldr r0, [r7] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C mov r1, #2 str r1, [sp] mov r1, #0x20 lsl r0, r0, #0x14 str r1, [sp, #4] lsr r0, r0, #0x10 str r0, [sp, #8] add r0, r4, #0 add r0, #0xc8 ldr r0, [r0] ldr r1, [sp, #0x18] ldr r2, [sp, #0x14] ldr r3, [r4] bl FUN_020030E8 _02213926: ldr r0, [sp, #0xc] lsl r5, r0, #2 mov r0, #0x4f lsl r0, r0, #2 add r6, r4, r0 ldr r0, [r6, r5] cmp r0, #0 beq _0221393A bl ErrorHandling _0221393A: mov r0, #0x15 str r7, [r6, r5] mov r2, #1 add r1, r4, r5 lsl r0, r0, #4 str r2, [r1, r0] ldr r0, [sp, #0x10] cmp r0, #1 bne _02213990 ldr r1, [sp, #0x1c] add r0, r4, #0 bl MOD08_022154D4 cmp r0, #0 beq _02213990 mov r0, #0x59 lsl r0, r0, #2 add r6, r4, r0 ldr r0, [r4] mov r1, #0x10 bl FUN_02016998 str r0, [r6, r5] ldr r0, [r6, r5] ldr r1, [sp, #0x1c] str r7, [r0] add r0, r4, #0 bl MOD08_022154D4 ldr r1, [r6, r5] ldr r2, _02213998 ; =0x00001001 str r0, [r1, #8] ldr r0, [r6, r5] mov r1, #0 strb r1, [r0, #4] ldr r0, [r6, r5] strb r1, [r0, #5] ldr r0, _0221399C ; =MOD08_022133A8 ldr r1, [r6, r5] bl FUN_0200CA44 ldr r1, [r6, r5] str r0, [r1, #0xc] _02213990: add sp, #0x70 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02213994: .word 0x00004E21 _02213998: .word 0x00001001 _0221399C: .word MOD08_022133A8 thumb_func_start MOD08_022139A0 MOD08_022139A0: ; 0x022139A0 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] mov r0, #0x4e lsl r0, r0, #2 ldr r1, [r4, r0] cmp r1, #0 beq _022139C2 add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200C398 _022139C2: mov r0, #0x4e mov r1, #0 lsl r0, r0, #2 str r1, [r4, r0] pop {r4, pc} thumb_func_start MOD08_022139CC MOD08_022139CC: ; 0x022139CC push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] mov r0, #0x4f lsl r0, r0, #2 lsl r4, r1, #2 add r6, r5, r0 ldr r0, [r6, r4] cmp r0, #0 beq _022139EE bl FUN_0200C3DC _022139EE: mov r0, #0x15 mov r2, #0 add r1, r5, r4 lsl r0, r0, #4 str r2, [r1, r0] str r2, [r6, r4] pop {r4, r5, r6, pc} thumb_func_start MOD08_022139FC MOD08_022139FC: ; 0x022139FC push {r3, lr} ldr r2, [r1, #0xc] cmp r2, #0 bne _02213A0A bl FUN_0200CAB4 pop {r3, pc} _02213A0A: mov r0, #0x4e ldr r2, [r1] lsl r0, r0, #2 ldr r0, [r2, r0] cmp r0, #0 beq _02213A1C ldr r0, [r1, #4] bl FUN_0200BC1C _02213A1C: pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02213A20 MOD08_02213A20: ; 0x02213A20 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 ldr r0, [r5, #0x18] add r6, r5, #0 add r1, r0, #4 str r1, [r5, #0x18] ldr r0, [r1] add r6, #0x54 str r0, [sp] add r0, r1, #4 str r0, [r5, #0x18] ldr r2, [r0] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 lsl r4, r2, #4 str r0, [sp, #8] add r0, #0x4c lsl r1, r1, #2 str r0, [sp, #8] str r5, [r0, r4] mov r0, #0x4e lsl r0, r0, #2 ldr r3, [r5, r0] add r2, r5, r4 str r3, [r2, #0x50] add r1, r5, r1 add r0, r0, #4 ldr r0, [r1, r0] mov r1, #0 str r0, [r6, r4] mov r0, #1 str r0, [r2, #0x58] ldr r0, [r6, r4] bl FUN_0200C644 add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 beq _02213A7C b _02213BCA _02213A7C: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227468 str r0, [sp, #4] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227468 add r7, r0, #0 ldr r1, [sp] add r0, r5, #0 bl MOD08_022132C4 add r1, r0, #0 add r0, r5, #0 bl MOD08_022154D4 cmp r0, #0 beq _02213AB8 mov r1, #6 bl FUN_0200782C b _02213ABA _02213AB8: mov r0, #0 _02213ABA: cmp r0, #1 ldr r0, [r6, r4] bne _02213AC8 mov r1, #0 bl FUN_0200C644 b _02213ACE _02213AC8: mov r1, #1 bl FUN_0200C644 _02213ACE: ldr r0, [sp] cmp r0, #3 bhi _02213BBC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02213AE0: ; jump table .short _02213AE8 - _02213AE0 - 2 ; case 0 .short _02213B36 - _02213AE0 - 2 ; case 1 .short _02213B0E - _02213AE0 - 2 ; case 2 .short _02213B7A - _02213AE0 - 2 ; case 3 _02213AE8: ldr r0, [sp, #4] sub r0, r0, #3 cmp r0, #1 bhi _02213AFA ldr r0, [r6, r4] mov r1, #1 bl FUN_0200C6C4 b _02213BBC _02213AFA: add r5, #0x54 ldr r0, [r5, r4] mov r1, #0 bl FUN_0200C644 ldr r0, [r5, r4] mov r1, #0xff bl FUN_0200C6C4 b _02213BBC _02213B0E: ldr r0, [sp, #4] cmp r0, #5 beq _02213B18 cmp r0, #2 bne _02213B22 _02213B18: ldr r0, [r6, r4] mov r1, #1 bl FUN_0200C6C4 b _02213BBC _02213B22: add r5, #0x54 ldr r0, [r5, r4] mov r1, #0 bl FUN_0200C644 ldr r0, [r5, r4] mov r1, #0xff bl FUN_0200C6C4 b _02213BBC _02213B36: cmp r7, #5 bhi _02213BBC add r0, r7, r7 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02213B46: ; jump table .short _02213BBC - _02213B46 - 2 ; case 0 .short _02213BBC - _02213B46 - 2 ; case 1 .short _02213B52 - _02213B46 - 2 ; case 2 .short _02213B5C - _02213B46 - 2 ; case 3 .short _02213B66 - _02213B46 - 2 ; case 4 .short _02213B70 - _02213B46 - 2 ; case 5 _02213B52: ldr r0, [r6, r4] mov r1, #0xff bl FUN_0200C6C4 b _02213BBC _02213B5C: ldr r0, [r6, r4] mov r1, #1 bl FUN_0200C6C4 b _02213BBC _02213B66: ldr r0, [r6, r4] mov r1, #1 bl FUN_0200C6C4 b _02213BBC _02213B70: ldr r0, [r6, r4] mov r1, #0xff bl FUN_0200C6C4 b _02213BBC _02213B7A: cmp r7, #5 bhi _02213BBC add r0, r7, r7 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02213B8A: ; jump table .short _02213BBC - _02213B8A - 2 ; case 0 .short _02213BBC - _02213B8A - 2 ; case 1 .short _02213B96 - _02213B8A - 2 ; case 2 .short _02213BA0 - _02213B8A - 2 ; case 3 .short _02213BAA - _02213B8A - 2 ; case 4 .short _02213BB4 - _02213B8A - 2 ; case 5 _02213B96: ldr r0, [r6, r4] mov r1, #1 bl FUN_0200C6C4 b _02213BBC _02213BA0: ldr r0, [r6, r4] mov r1, #0xff bl FUN_0200C6C4 b _02213BBC _02213BAA: ldr r0, [r6, r4] mov r1, #0xff bl FUN_0200C6C4 b _02213BBC _02213BB4: ldr r0, [r6, r4] mov r1, #1 bl FUN_0200C6C4 _02213BBC: ldr r1, [sp, #8] mov r2, #1 ldr r0, _02213BD0 ; =MOD08_022139FC add r1, r1, r4 lsl r2, r2, #0xc bl FUN_0200CA44 _02213BCA: add sp, #0xc pop {r4, r5, r6, r7, pc} nop _02213BD0: .word MOD08_022139FC thumb_func_start MOD08_02213BD4 MOD08_02213BD4: ; 0x02213BD4 ldr r1, [r0, #0x18] mov r2, #0 add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r1, r1, #4 str r1, [r0, #0x18] lsl r1, r3, #4 add r0, r0, r1 str r2, [r0, #0x58] bx lr .align 2, 0 thumb_func_start MOD08_02213BEC MOD08_02213BEC: ; 0x02213BEC ldr r1, [r0, #0x18] ldr r3, _02213BFC ; =MOD08_02213454 add r2, r1, #4 str r2, [r0, #0x18] ldr r1, [r2] add r2, r2, #4 str r2, [r0, #0x18] bx r3 .align 2, 0 _02213BFC: .word MOD08_02213454 thumb_func_start MOD08_02213C00 MOD08_02213C00: ; 0x02213C00 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] add r0, r0, r3 add r0, #0x6c strb r2, [r0] bx lr .align 2, 0 thumb_func_start MOD08_02213C1C MOD08_02213C1C: ; 0x02213C1C ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] add r0, r0, r3 add r0, #0x7c strb r2, [r0] bx lr .align 2, 0 thumb_func_start MOD08_02213C38 MOD08_02213C38: ; 0x02213C38 bx lr .align 2, 0 thumb_func_start MOD08_02213C3C MOD08_02213C3C: ; 0x02213C3C bx lr .align 2, 0 thumb_func_start MOD08_02213C40 MOD08_02213C40: ; 0x02213C40 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r1, #0xc0 ldr r1, [r1] add r5, r0, #0 ldrh r1, [r1, #0x14] add r0, r4, #0 add r6, r2, #0 bl MOD08_02227470 add r7, r0, #0 add r0, r4, #0 add r4, #0xc0 ldr r1, [r4] ldrh r1, [r1, #0x16] bl MOD08_02227470 lsl r1, r6, #2 add r1, r5, r1 ldr r1, [r1, #0x1c] cmp r1, #2 bne _02213C84 cmp r7, r0 bne _02213C7C cmp r0, #3 beq _02213C78 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02213C78: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} _02213C7C: cmp r0, #3 bne _02213C90 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02213C84: cmp r1, #0 beq _02213C90 cmp r0, #3 bne _02213C90 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02213C90: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02213C94 MOD08_02213C94: ; 0x02213C94 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r0, #0 add r5, r1, #0 add r0, r3, #0 mov r1, #0 add r4, r2, #0 str r3, [sp, #0x10] bl MOD08_022156AC add r1, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r5] add r2, r5, #0 str r0, [sp, #0xc] add r2, #0xc4 ldr r2, [r2] mov r0, #7 add r3, r4, #0 bl FUN_0200687C ldr r0, [sp, #0x10] mov r1, #1 bl MOD08_022156AC add r2, r0, #0 mov r0, #0 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x90 str r0, [sp, #8] add r0, r5, #0 add r0, #0xc8 ldr r0, [r0] ldr r3, [r5] mov r1, #7 bl FUN_020030E8 add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 bl FUN_02018744 add r0, r5, #0 mov r6, #2 bl MOD08_02212004 cmp r0, #1 bne _02213D08 mov r6, #4 b _02213D18 _02213D08: add r0, r7, #0 add r1, r5, #0 mov r2, #7 bl MOD08_02213C40 cmp r0, #1 bne _02213D18 mov r6, #3 _02213D18: ldr r0, [sp, #0x10] add r1, r6, #0 bl MOD08_022156AC add r1, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r5] add r5, #0xc4 str r0, [sp, #0xc] ldr r2, [r5] mov r0, #7 add r3, r4, #0 bl FUN_020068C8 add sp, #0x14 pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_02213D40 MOD08_02213D40: ; 0x02213D40 lsl r0, r0, #0x10 and r0, r1 cmp r1, r0 bne _02213D4C mov r0, #1 bx lr _02213D4C: mov r0, #0 bx lr thumb_func_start MOD08_02213D50 MOD08_02213D50: ; 0x02213D50 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 ldr r3, _02213DA0 ; =0x0222AA2C add r2, sp, #0 add r5, r0, #0 add r4, r2, #0 ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r7, _02213DA4 ; =0x0222AADC mov r6, #0 _02213D68: ldr r0, [r5, #0x18] ldr r1, [r4] bl MOD08_02213D40 cmp r0, #0 beq _02213D92 ldr r0, [r4] mov r1, #0 lsr r2, r0, #0x10 cmp r2, #2 blt _02213D8A _02213D7E: lsr r0, r2, #0x1f add r0, r2, r0 asr r2, r0, #1 add r1, r1, #1 cmp r2, #2 bge _02213D7E _02213D8A: lsl r1, r1, #2 ldr r1, [r7, r1] add r0, r5, #0 blx r1 _02213D92: add r6, r6, #1 add r4, r4, #4 cmp r6, #4 blo _02213D68 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _02213DA0: .word 0x0222AA2C _02213DA4: .word 0x0222AADC thumb_func_start MOD08_02213DA8 MOD08_02213DA8: ; 0x02213DA8 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5] mov r1, #0x4c bl FUN_02016998 add r4, r0, #0 bne _02213DC0 bl ErrorHandling mov r0, #0 pop {r3, r4, r5, pc} _02213DC0: mov r1, #0 mov r2, #0x4c bl Call_FillMemWithValue mov r0, #0 str r0, [r4] strb r0, [r4, #5] str r5, [r4, #0x48] strb r0, [r4, #9] mov r0, #0x1f strb r0, [r4, #0xa] mov r0, #0x1d strb r0, [r4, #0xb] mov r0, #2 strb r0, [r4, #0xc] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 cmp r0, #1 bne _02213DFA mov r0, #0 strb r0, [r4, #9] mov r0, #0x1f strb r0, [r4, #0xa] mov r0, #0xf strb r0, [r4, #0xb] mov r0, #7 strb r0, [r4, #0xc] _02213DFA: add r0, r5, #0 mov r1, #5 bl MOD08_02212498 cmp r0, #2 bne _02213E16 mov r0, #7 strb r0, [r4, #9] mov r0, #0xf strb r0, [r4, #0xa] mov r0, #0x1d strb r0, [r4, #0xb] mov r0, #2 strb r0, [r4, #0xc] _02213E16: mov r1, #0 add r2, r5, #0 add r3, r4, #0 _02213E1C: add r0, r2, #0 add r0, #0x94 ldr r0, [r0] add r1, r1, #1 str r0, [r3, #0x1c] add r2, r2, #4 add r3, r3, #4 cmp r1, #0xa blt _02213E1C mov r0, #0x5f mov r1, #1 lsl r0, r0, #2 strb r1, [r5, r0] add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02213E3C MOD08_02213E3C: ; 0x02213E3C push {r3, r4, r5, lr} add r5, r1, #0 ldrb r0, [r5, #5] cmp r0, #0 beq _02213E50 cmp r0, #1 beq _02213E8E cmp r0, #2 beq _02213EE0 b _02213F2A _02213E50: ldr r0, [r5, #0x48] mov r1, #2 bl MOD08_0221477C ldr r0, [r5, #0x48] mov r1, #2 bl MOD08_02215600 add r4, r0, #0 ldr r0, [r5, #0x48] mov r1, #1 bl MOD08_02215600 lsl r1, r4, #0x18 mov r0, #3 lsr r1, r1, #0x18 bl FUN_020178BC lsl r1, r4, #0x18 mov r0, #2 lsr r1, r1, #0x18 bl FUN_020178BC mov r0, #2 mov r1, #1 bl FUN_0201797C ldrb r0, [r5, #5] add r0, r0, #1 strb r0, [r5, #5] b _02213F2E _02213E8E: ldr r0, [r5, #0x48] mov r1, #3 add r0, #0xc4 ldr r0, [r0] mov r2, #2 add r3, r1, #0 bl FUN_020170F4 ldr r0, [r5, #0x48] bl MOD08_02212004 cmp r0, #1 beq _02213EB8 ldr r0, [r5, #0x48] mov r2, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #3 add r3, r2, #0 bl FUN_020170F4 _02213EB8: ldr r1, [r5, #0x48] ldr r3, [r5, #0x10] add r0, r5, #0 mov r2, #3 bl MOD08_02213C94 ldrb r0, [r5, #9] mov r1, #4 mov r2, #8 str r0, [sp] ldrb r3, [r5, #0xa] ldr r0, _02213F34 ; =0x04000050 bl G2x_SetBlendAlpha_ add r0, r5, #0 bl MOD08_02213D50 ldrb r0, [r5, #5] add r0, r0, #1 strb r0, [r5, #5] _02213EE0: ldrb r1, [r5, #9] ldrb r0, [r5, #0xb] mov r2, #0 cmp r1, r0 bhs _02213EF0 add r0, r1, #2 strb r0, [r5, #9] b _02213EF2 _02213EF0: add r2, r2, #1 _02213EF2: ldrb r1, [r5, #0xa] ldrb r0, [r5, #0xc] cmp r1, r0 bls _02213F00 sub r0, r1, #2 strb r0, [r5, #0xa] b _02213F02 _02213F00: add r2, r2, #1 _02213F02: cmp r2, #2 bne _02213F14 ldrb r0, [r5, #0xb] strb r0, [r5, #9] ldrb r0, [r5, #0xc] strb r0, [r5, #0xa] ldrb r0, [r5, #5] add r0, r0, #1 strb r0, [r5, #5] _02213F14: ldrb r0, [r5, #9] ldrb r1, [r5, #0xa] lsl r0, r0, #8 orr r1, r0 ldr r0, _02213F38 ; =0x04000052 strh r1, [r0] ldrb r0, [r5, #5] cmp r0, #2 beq _02213F2E mov r0, #0 pop {r3, r4, r5, pc} _02213F2A: mov r0, #0 pop {r3, r4, r5, pc} _02213F2E: mov r0, #1 pop {r3, r4, r5, pc} nop _02213F34: .word 0x04000050 _02213F38: .word 0x04000052 thumb_func_start MOD08_02213F3C MOD08_02213F3C: ; 0x02213F3C push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 ldrb r0, [r4, #5] cmp r0, #4 bls _02213F4A b _0221411C _02213F4A: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02213F56: ; jump table .short _02213F60 - _02213F56 - 2 ; case 0 .short _02213F6E - _02213F56 - 2 ; case 1 .short _02213FB0 - _02213F56 - 2 ; case 2 .short _02213FF6 - _02213F56 - 2 ; case 3 .short _022140F8 - _02213F56 - 2 ; case 4 _02213F60: mov r0, #2 mov r1, #1 bl FUN_0201797C ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _02213F6E: ldr r0, [r4, #0x48] mov r1, #2 bl MOD08_02215600 add r5, r0, #0 ldr r0, [r4, #0x48] mov r1, #1 bl MOD08_02215600 lsl r1, r5, #0x18 mov r0, #3 lsr r1, r1, #0x18 bl FUN_020178BC lsl r1, r5, #0x18 mov r0, #2 lsr r1, r1, #0x18 bl FUN_020178BC ldrb r0, [r4, #0xa] mov r1, #4 mov r2, #8 str r0, [sp] ldrb r3, [r4, #9] ldr r0, _02214128 ; =0x04000050 bl G2x_SetBlendAlpha_ add r0, r4, #0 bl MOD08_02213D50 ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _02213FB0: ldrb r1, [r4, #9] ldrb r0, [r4, #0xb] mov r2, #0 cmp r1, r0 bhs _02213FC0 add r0, r1, #2 strb r0, [r4, #9] b _02213FC2 _02213FC0: add r2, r2, #1 _02213FC2: ldrb r1, [r4, #0xa] ldrb r0, [r4, #0xc] cmp r1, r0 bls _02213FD0 sub r0, r1, #2 strb r0, [r4, #0xa] b _02213FD2 _02213FD0: add r2, r2, #1 _02213FD2: cmp r2, #2 bne _02213FE8 ldrb r0, [r4, #0xb] add r0, r0, #2 strb r0, [r4, #9] ldrb r0, [r4, #0xc] sub r0, r0, #2 strb r0, [r4, #0xa] ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _02213FE8: ldrb r0, [r4, #0xa] ldrb r1, [r4, #9] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221412C ; =0x04000052 strh r1, [r0] b _02214122 _02213FF6: add r0, r4, #0 add r0, #0x44 ldrh r0, [r0] lsl r0, r0, #0x1f lsr r0, r0, #0x1f cmp r0, #1 bne _0221400A ldr r0, [r4, #0x48] bl MOD08_02214524 _0221400A: add r0, r4, #0 add r0, #0x44 ldrh r0, [r0] lsl r0, r0, #0x1e lsr r0, r0, #0x1f cmp r0, #1 bne _0221401E ldr r0, [r4, #0x48] bl MOD08_02214524 _0221401E: ldr r0, [r4, #0x48] mov r2, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #3 add r3, r2, #0 bl FUN_020179E0 ldr r0, [r4, #0x48] mov r1, #3 add r0, #0xc4 ldr r0, [r0] add r2, r1, #0 mov r3, #0 bl FUN_020179E0 ldr r0, [r4, #0x48] mov r1, #3 add r0, #0xc4 ldr r0, [r0] mov r2, #2 mov r3, #4 bl FUN_020170F4 ldr r0, [r4, #0x48] bl MOD08_02212004 cmp r0, #0 bne _02214078 ldr r0, [r4, #0x48] mov r1, #3 add r0, #0xc4 ldr r0, [r0] mov r2, #0 mov r3, #1 bl FUN_020170F4 ldr r0, [r4, #0x48] mov r1, #3 bl MOD08_02215638 ldr r0, [r4, #0x48] bl MOD08_02215660 b _022140CC _02214078: ldr r2, [r4, #0x48] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r2] mov r1, #0x61 lsl r1, r1, #2 str r0, [sp, #0xc] ldr r0, [r2, r1] add r1, r1, #4 ldr r1, [r2, r1] add r2, #0xc4 ldr r2, [r2] mov r3, #3 bl FUN_0200687C mov r2, #0x66 lsl r2, r2, #2 add r1, r2, #0 ldr r3, [r4, #0x48] mov r0, #0 str r0, [sp] ldr r0, [r3, r2] sub r1, #0x14 lsl r0, r0, #5 str r0, [sp, #4] sub r0, r2, #4 ldr r0, [r3, r0] sub r2, #0xc lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] add r0, r3, #0 add r0, #0xc8 ldr r0, [r0] ldr r1, [r3, r1] ldr r2, [r3, r2] ldr r3, [r3] bl FUN_020030E8 _022140CC: ldr r2, [r4, #0x48] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r2] mov r1, #0x61 lsl r1, r1, #2 str r0, [sp, #0xc] ldr r0, [r2, r1] add r1, #0xc ldr r1, [r2, r1] add r2, #0xc4 ldr r2, [r2] mov r3, #3 bl FUN_020068C8 ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] b _02214122 _022140F8: ldr r0, [r4, #0x48] bl MOD08_02212004 cmp r0, #0 bne _02214108 bl FUN_02231678 b _0221410C _02214108: bl FUN_02233560 _0221410C: ldr r0, [r4, #0x48] mov r1, #2 bl MOD08_02214850 ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] b _02214122 _0221411C: add sp, #0x10 mov r0, #0 pop {r3, r4, r5, pc} _02214122: mov r0, #1 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _02214128: .word 0x04000050 _0221412C: .word 0x04000052 thumb_func_start MOD08_02214130 MOD08_02214130: ; 0x02214130 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 ldrb r0, [r4, #5] cmp r0, #0 beq _02214142 cmp r0, #1 beq _022141BE b _0221423A _02214142: ldrb r0, [r4, #0xd] ldr r2, [r4, #0x48] cmp r0, #0 bne _02214180 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] mov r5, #0x67 add r0, r2, #0 str r3, [sp, #8] lsl r5, r5, #2 ldr r2, [r2, r5] add r0, #0xc8 lsl r2, r2, #0x10 ldr r0, [r0] mov r1, #1 lsr r2, r2, #0x10 bl FUN_02003210 mov r1, #0 str r1, [sp] ldr r0, [r4, #0x48] add r2, r5, #0 add r0, #0xc8 ldr r0, [r0] add r2, #0x64 mov r3, #0x10 bl FUN_02003A64 b _022141B8 _02214180: mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] ldr r0, _02214254 ; =0x0000FFFF mov r5, #0x67 str r0, [sp, #8] add r0, r2, #0 lsl r5, r5, #2 ldr r2, [r2, r5] add r0, #0xc8 lsl r2, r2, #0x10 ldr r0, [r0] mov r1, #1 lsr r2, r2, #0x10 bl FUN_02003210 ldr r0, _02214254 ; =0x0000FFFF add r2, r5, #0 str r0, [sp] ldr r0, [r4, #0x48] mov r1, #0 add r0, #0xc8 ldr r0, [r0] add r2, #0x64 mov r3, #0x10 bl FUN_02003A64 _022141B8: ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _022141BE: ldr r0, [r4, #0x48] add r0, #0xc8 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _0221424E ldr r0, [r4, #0x48] mov r2, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #3 add r3, r2, #0 bl FUN_020170F4 ldr r1, [r4, #0x48] ldr r3, [r4, #0x10] add r0, r4, #0 mov r2, #3 bl MOD08_02213C94 ldrb r0, [r4, #0xd] cmp r0, #0 bne _02214208 mov r0, #0x10 str r0, [sp] mov r3, #0 str r3, [sp, #4] str r3, [sp, #8] ldr r0, [r4, #0x48] mov r1, #1 add r0, #0xc8 ldr r0, [r0] lsl r2, r1, #9 bl FUN_02003210 b _02214222 _02214208: mov r0, #0x10 str r0, [sp] mov r3, #0 ldr r0, _02214254 ; =0x0000FFFF str r3, [sp, #4] str r0, [sp, #8] ldr r0, [r4, #0x48] mov r1, #1 add r0, #0xc8 ldr r0, [r0] lsl r2, r1, #9 bl FUN_02003210 _02214222: add r0, r4, #0 bl MOD08_02213D50 mov r0, #0x5f ldr r1, [r4, #0x48] mov r2, #2 lsl r0, r0, #2 strb r2, [r1, r0] ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] b _0221424E _0221423A: ldr r0, [r4, #0x48] add r0, #0xc8 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _0221424E add sp, #0xc mov r0, #0 pop {r4, r5, pc} _0221424E: mov r0, #1 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _02214254: .word 0x0000FFFF thumb_func_start MOD08_02214258 MOD08_02214258: ; 0x02214258 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 ldrb r0, [r4, #5] cmp r0, #3 bls _02214266 b _02214462 _02214266: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02214272: ; jump table .short _0221427A - _02214272 - 2 ; case 0 .short _02214286 - _02214272 - 2 ; case 1 .short _02214300 - _02214272 - 2 ; case 2 .short _022143F0 - _02214272 - 2 ; case 3 _0221427A: add r0, r4, #0 bl MOD08_02213D50 ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _02214286: ldrb r0, [r4, #0xd] cmp r0, #0 bne _022142C2 mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] str r3, [sp, #8] ldr r0, [r4, #0x48] mov r1, #1 add r0, #0xc8 ldr r0, [r0] lsl r2, r1, #9 bl FUN_02003210 ldr r3, [r4, #0x48] mov r1, #0 mov r2, #0x67 add r0, r3, #0 str r1, [sp] lsl r2, r2, #2 ldr r2, [r3, r2] add r0, #0xc8 lsl r2, r2, #0x10 ldr r0, [r0] lsr r2, r2, #0x10 mov r3, #0x10 bl FUN_02003A64 b _022142FA _022142C2: mov r3, #0 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] ldr r0, _0221448C ; =0x0000FFFF mov r1, #1 str r0, [sp, #8] ldr r0, [r4, #0x48] lsl r2, r1, #9 add r0, #0xc8 ldr r0, [r0] bl FUN_02003210 mov r2, #0x67 ldr r3, [r4, #0x48] ldr r0, _0221448C ; =0x0000FFFF lsl r2, r2, #2 str r0, [sp] add r0, r3, #0 ldr r2, [r3, r2] add r0, #0xc8 lsl r2, r2, #0x10 ldr r0, [r0] mov r1, #0 lsr r2, r2, #0x10 mov r3, #0x10 bl FUN_02003A64 _022142FA: ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _02214300: ldr r0, [r4, #0x48] add r0, #0xc8 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 beq _02214310 b _02214486 _02214310: add r0, r4, #0 add r0, #0x44 ldrh r0, [r0] lsl r0, r0, #0x1f lsr r0, r0, #0x1f cmp r0, #1 bne _02214324 ldr r0, [r4, #0x48] bl MOD08_02214524 _02214324: add r0, r4, #0 add r0, #0x44 ldrh r0, [r0] lsl r0, r0, #0x1e lsr r0, r0, #0x1f cmp r0, #1 bne _02214338 ldr r0, [r4, #0x48] bl MOD08_02214524 _02214338: mov r0, #3 mov r1, #0 bl FUN_0201797C ldr r0, [r4, #0x48] bl MOD08_02212004 cmp r0, #0 bne _0221436A ldr r0, [r4, #0x48] mov r1, #3 add r0, #0xc4 ldr r0, [r0] mov r2, #0 mov r3, #1 bl FUN_020170F4 ldr r0, [r4, #0x48] mov r1, #3 bl MOD08_02215638 ldr r0, [r4, #0x48] bl MOD08_02215660 b _022143BE _0221436A: ldr r2, [r4, #0x48] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r2] mov r1, #0x61 lsl r1, r1, #2 str r0, [sp, #0xc] ldr r0, [r2, r1] add r1, r1, #4 ldr r1, [r2, r1] add r2, #0xc4 ldr r2, [r2] mov r3, #3 bl FUN_0200687C mov r2, #0x66 lsl r2, r2, #2 add r1, r2, #0 ldr r3, [r4, #0x48] mov r0, #0 str r0, [sp] ldr r0, [r3, r2] sub r1, #0x14 lsl r0, r0, #5 str r0, [sp, #4] sub r0, r2, #4 ldr r0, [r3, r0] sub r2, #0xc lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] add r0, r3, #0 add r0, #0xc8 ldr r0, [r0] ldr r1, [r3, r1] ldr r2, [r3, r2] ldr r3, [r3] bl FUN_020030E8 _022143BE: ldr r2, [r4, #0x48] mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r2] mov r1, #0x61 lsl r1, r1, #2 str r0, [sp, #0xc] ldr r0, [r2, r1] add r1, #0xc ldr r1, [r2, r1] add r2, #0xc4 ldr r2, [r2] mov r3, #3 bl FUN_020068C8 mov r0, #3 mov r1, #1 bl FUN_0201797C ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _022143F0: ldr r0, [r4, #0x48] mov r2, #0 add r0, #0xc4 ldr r0, [r0] mov r1, #3 add r3, r2, #0 bl FUN_020179E0 ldr r0, [r4, #0x48] mov r1, #3 add r0, #0xc4 ldr r0, [r0] add r2, r1, #0 mov r3, #0 bl FUN_020179E0 ldrb r0, [r4, #0xd] ldr r2, [r4, #0x48] cmp r0, #0 bne _0221443A mov r0, #0x10 str r0, [sp] mov r3, #0 str r3, [sp, #4] mov r5, #0x67 add r0, r2, #0 str r3, [sp, #8] lsl r5, r5, #2 ldr r2, [r2, r5] add r0, #0xc8 lsl r2, r2, #0x10 ldr r0, [r0] mov r1, #1 lsr r2, r2, #0x10 bl FUN_02003210 b _0221445C _0221443A: mov r0, #0x10 str r0, [sp] mov r3, #0 mov r5, #0x67 ldr r0, _0221448C ; =0x0000FFFF str r3, [sp, #4] str r0, [sp, #8] add r0, r2, #0 lsl r5, r5, #2 ldr r2, [r2, r5] add r0, #0xc8 lsl r2, r2, #0x10 ldr r0, [r0] mov r1, #1 lsr r2, r2, #0x10 bl FUN_02003210 _0221445C: ldrb r0, [r4, #5] add r0, r0, #1 strb r0, [r4, #5] _02214462: ldr r0, [r4, #0x48] add r0, #0xc8 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _02214486 mov r0, #0x5f ldr r1, [r4, #0x48] mov r2, #2 lsl r0, r0, #2 strb r2, [r1, r0] ldrb r0, [r4, #5] add sp, #0x10 add r0, r0, #1 strb r0, [r4, #5] mov r0, #0 pop {r3, r4, r5, pc} _02214486: mov r0, #1 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _0221448C: .word 0x0000FFFF thumb_func_start MOD08_02214490 MOD08_02214490: ; 0x02214490 push {r3, lr} add r0, r1, #0 bl MOD08_02213D50 mov r0, #0 pop {r3, pc} thumb_func_start MOD08_0221449C MOD08_0221449C: ; 0x0221449C push {r4, lr} add r4, r1, #0 add r0, r4, #0 bl MOD08_02213D50 add r0, r4, #0 add r0, #0x44 ldrh r0, [r0] lsl r0, r0, #0x1f lsr r0, r0, #0x1f cmp r0, #1 bne _022144BA ldr r0, [r4, #0x48] bl MOD08_02214524 _022144BA: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022144C0 MOD08_022144C0: ; 0x022144C0 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x18] cmp r0, #1 bne _022144DA add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} _022144DA: mov r3, #4 mov r1, #8 ldrsh r2, [r4, r3] ldrsh r0, [r4, r1] add r0, r2, r0 strh r0, [r4, #4] mov r0, #6 ldrsh r2, [r4, r0] mov r0, #0xa ldrsh r0, [r4, r0] add r0, r2, r0 strh r0, [r4, #6] ldrsh r0, [r4, r1] cmp r0, #0 beq _02214508 ldr r1, [r4, #0xc] ldrsh r3, [r4, r3] lsl r1, r1, #0x18 ldr r0, [r4] lsr r1, r1, #0x18 mov r2, #0 bl FUN_020179E0 _02214508: mov r0, #0xa ldrsh r0, [r4, r0] cmp r0, #0 beq _02214522 ldr r1, [r4, #0xc] mov r3, #6 lsl r1, r1, #0x18 ldrsh r3, [r4, r3] ldr r0, [r4] lsr r1, r1, #0x18 mov r2, #3 bl FUN_020179E0 _02214522: pop {r3, r4, r5, pc} thumb_func_start MOD08_02214524 MOD08_02214524: ; 0x02214524 push {r4, lr} add r4, r0, #0 bne _0221452E bl ErrorHandling _0221452E: mov r0, #6 lsl r0, r0, #6 ldr r1, [r4, r0] cmp r1, #0 beq _0221453C mov r0, #1 str r0, [r1, #0x18] _0221453C: pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02214540 MOD08_02214540: ; 0x02214540 mov r1, #0x67 lsl r1, r1, #2 ldr r0, [r0, r1] bx lr thumb_func_start MOD08_02214548 MOD08_02214548: ; 0x02214548 mov r0, #0 bx lr thumb_func_start MOD08_0221454C MOD08_0221454C: ; 0x0221454C push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x48] mov r1, #0x20 ldr r0, [r0] bl FUN_02016998 add r4, r0, #0 ldr r0, [r5, #0x48] mov r2, #6 add r0, #0xc4 ldr r0, [r0] str r0, [r4] ldr r0, [r5, #0x48] add r0, #0x9c ldr r0, [r0] strh r0, [r4, #4] ldr r0, [r5, #0x48] add r0, #0xa0 ldr r0, [r0] strh r0, [r4, #6] ldr r0, [r5, #0x48] add r0, #0x94 ldr r0, [r0] strh r0, [r4, #8] ldr r0, [r5, #0x48] add r0, #0x98 ldr r0, [r0] strh r0, [r4, #0xa] mov r0, #3 str r0, [r4, #0xc] str r0, [r4, #0x10] ldr r1, [r5, #0x48] add r0, r5, #0 bl MOD08_02213C40 cmp r0, #1 bne _022145C0 mov r0, #8 ldrsh r1, [r4, r0] sub r0, #9 mul r0, r1 strh r0, [r4, #8] mov r0, #0xa ldrsh r1, [r4, r0] sub r0, #0xb mul r0, r1 strh r0, [r4, #0xa] mov r0, #4 ldrsh r1, [r4, r0] sub r0, r0, #5 mul r0, r1 strh r0, [r4, #4] mov r0, #6 ldrsh r1, [r4, r0] sub r0, r0, #7 mul r0, r1 strh r0, [r4, #6] _022145C0: mov r0, #1 str r0, [r4, #0x14] mov r1, #0 str r1, [r4, #0x18] mov r1, #6 ldr r2, [r5, #0x48] lsl r1, r1, #6 str r4, [r2, r1] add r1, r5, #0 add r1, #0x44 ldrh r2, [r1] mov r1, #1 add r5, #0x44 bic r2, r1 orr r0, r2 strh r0, [r5] ldr r0, _022145F0 ; =MOD08_022144C0 ldr r2, _022145F4 ; =0x00001001 add r1, r4, #0 bl FUN_0200CA44 mov r0, #0 pop {r3, r4, r5, pc} nop _022145F0: .word MOD08_022144C0 _022145F4: .word 0x00001001 thumb_func_start MOD08_022145F8 MOD08_022145F8: ; 0x022145F8 push {r3, r4, r5, r6, r7, lr} sub sp, #8 ldr r4, [r0, #0x48] str r0, [sp] ldr r0, [r4] mov r1, #0x20 bl FUN_02016998 add r6, r0, #0 ldr r0, [r4] mov r1, #0xc4 bl FUN_02016998 str r0, [r6, #0x1c] mov r0, #6 lsl r0, r0, #6 str r6, [r4, r0] ldr r0, [sp] mov r1, #2 add r0, #0x44 ldrh r0, [r0] add r2, r0, #0 ldr r0, [sp] orr r2, r1 add r0, #0x44 strh r2, [r0] mov r0, #0 str r0, [r6, #0x18] add r0, r4, #0 bl MOD08_022155C4 bl MOD08_022189A0 add r5, r0, #0 mov r0, #0 add r1, r0, #0 bl MOD08_02218998 add r1, r0, #0 ldr r2, [r4] add r0, r5, #0 bl MOD08_022187F4 mov r4, #0 ldr r1, [r6, #0x1c] ldr r7, _022146C8 ; =0x0222AAF8 add r1, #0xc0 str r0, [r1] str r4, [sp, #4] add r5, r4, #0 _0221465C: ldr r0, [r6, #0x1c] strh r4, [r0, r5] ldr r0, [r6, #0x1c] add r1, r0, r5 ldrsh r0, [r0, r5] add r0, #8 strh r0, [r1, #2] mov r0, #0 ldrsh r1, [r7, r0] ldr r0, [r6, #0x1c] add r0, r0, r5 strh r1, [r0, #4] ldr r0, [r6, #0x1c] add r1, r0, r5 mov r0, #0 strh r0, [r1, #6] add r1, r0, #0 bl MOD08_02218998 ldr r1, [r6, #0x1c] mov r2, #6 add r1, r1, r5 str r0, [r1, #8] ldr r0, [sp] add r1, r0, #0 ldr r1, [r1, #0x48] bl MOD08_02213C40 cmp r0, #1 bne _022146A6 ldr r0, [r6, #0x1c] mov r1, #4 add r0, r0, r5 ldrsh r2, [r0, r1] sub r1, r1, #5 mul r1, r2 strh r1, [r0, #4] _022146A6: ldr r0, [sp, #4] add r4, #8 add r0, r0, #1 add r5, #0xc add r7, r7, #2 str r0, [sp, #4] cmp r0, #0x10 blt _0221465C mov r2, #1 ldr r0, _022146CC ; =MOD08_022146E4 add r1, r6, #0 lsl r2, r2, #0xc bl FUN_0200CA44 mov r0, #0 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _022146C8: .word 0x0222AAF8 _022146CC: .word MOD08_022146E4 thumb_func_start MOD08_022146D0 MOD08_022146D0: ; 0x022146D0 add r1, r0, #0 add r1, #0x44 ldrh r2, [r1] mov r1, #2 add r0, #0x44 orr r1, r2 strh r1, [r0] mov r0, #0 bx lr .align 2, 0 thumb_func_start MOD08_022146E4 MOD08_022146E4: ; 0x022146E4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x18] ldr r4, [r5, #0x1c] cmp r0, #1 bne _02214712 add r4, #0xc0 ldr r0, [r4] bl MOD08_02218870 ldr r0, [r5, #0x1c] bl FUN_02016A18 add r0, r5, #0 bl FUN_02016A18 add r0, r6, #0 bl FUN_0200CAB4 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02214712: add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] bl MOD08_02218894 str r0, [sp] mov r0, #0 str r0, [sp, #4] _02214722: mov r0, #6 ldrsh r1, [r4, r0] mov r0, #4 ldrsh r0, [r4, r0] add r0, r1, r0 strh r0, [r4, #6] mov r0, #0 ldrsh r6, [r4, r0] mov r0, #2 ldrsh r0, [r4, r0] cmp r6, r0 bge _0221476A ldr r0, [sp] lsl r1, r6, #2 add r5, r0, r1 mov r7, #2 _02214742: ldr r1, [r4, #8] mov r2, #6 lsl r0, r1, #0x10 asr r1, r1, #0x10 lsl r1, r1, #0x10 asr r1, r1, #0x10 lsl r1, r1, #0x10 ldrsh r2, [r4, r2] asr r0, r0, #0x10 lsr r1, r1, #0x10 add r0, r0, r2 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl MOD08_02218998 stmia r5!, {r0} ldrsh r0, [r4, r7] add r6, r6, #1 cmp r6, r0 blt _02214742 _0221476A: ldr r0, [sp, #4] add r4, #0xc add r0, r0, #1 str r0, [sp, #4] cmp r0, #0x10 blt _02214722 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0221477C MOD08_0221477C: ; 0x0221477C push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 mov r1, #2 add r5, r0, #0 bl MOD08_02215600 add r1, r0, #0 lsl r0, r4, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC lsl r0, r4, #0x18 lsr r0, r0, #0x18 mov r1, #0 bl FUN_0201797C add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _022147C0 add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 mov r2, #2 mov r3, #4 bl FUN_020170F4 b _022147E4 _022147C0: add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 mov r2, #0 mov r3, #1 bl FUN_020170F4 add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 mov r2, #2 mov r3, #4 bl FUN_020170F4 _022147E4: add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 bl FUN_02018744 add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02214822 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r5] mov r1, #0x61 add r2, r5, #0 lsl r1, r1, #2 str r0, [sp, #0xc] ldr r0, [r5, r1] add r1, r1, #4 add r2, #0xc4 ldr r1, [r5, r1] ldr r2, [r2] add r3, r4, #0 bl FUN_0200687C b _0221482A _02214822: add r0, r5, #0 add r1, r4, #0 bl MOD08_02215638 _0221482A: mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r5] mov r1, #0x61 lsl r1, r1, #2 str r0, [sp, #0xc] ldr r0, [r5, r1] add r1, #0xc ldr r1, [r5, r1] add r5, #0xc4 ldr r2, [r5] add r3, r4, #0 bl FUN_020068C8 add sp, #0x10 pop {r3, r4, r5, pc} thumb_func_start MOD08_02214850 MOD08_02214850: ; 0x02214850 push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #1 add r5, r0, #0 bl MOD08_02215600 add r1, r0, #0 lsl r0, r4, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02214888 add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 mov r2, #2 mov r3, #3 bl FUN_020170F4 b _022148AC _02214888: add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 mov r2, #0 ldr r0, [r0] lsr r1, r1, #0x18 add r3, r2, #0 bl FUN_020170F4 add r0, r5, #0 add r0, #0xc4 lsl r1, r4, #0x18 ldr r0, [r0] lsr r1, r1, #0x18 mov r2, #2 mov r3, #3 bl FUN_020170F4 _022148AC: add r5, #0xc4 lsl r1, r4, #0x18 ldr r0, [r5] lsr r1, r1, #0x18 bl FUN_02018744 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022148BC MOD08_022148BC: ; 0x022148BC add r1, r0, #0 add r1, #0x44 ldrh r2, [r1] mov r1, #1 add r0, #0x44 bic r2, r1 mov r1, #1 orr r1, r2 strh r1, [r0] mov r0, #0 bx lr .align 2, 0 thumb_func_start MOD08_022148D4 MOD08_022148D4: ; 0x022148D4 push {r3, lr} ldr r0, [r0, #0x48] bl MOD08_02214524 mov r0, #0 pop {r3, pc} thumb_func_start MOD08_022148E0 MOD08_022148E0: ; 0x022148E0 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4, #0x14] add r5, r0, #0 lsl r3, r2, #2 ldr r2, _0221490C ; =0x0222AA64 ldr r2, [r2, r3] blx r2 cmp r0, #0 bne _0221490A mov r0, #0x5f ldr r1, [r4, #0x48] mov r2, #0 lsl r0, r0, #2 strb r2, [r1, r0] add r0, r4, #0 bl FUN_02016A18 add r0, r5, #0 bl FUN_0200CAB4 _0221490A: pop {r3, r4, r5, pc} .align 2, 0 _0221490C: .word 0x0222AA64 thumb_func_start MOD08_02214910 MOD08_02214910: ; 0x02214910 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_02213DA8 add r4, r0, #0 add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strb r0, [r4, #0xd] ldr r0, [r5, #0x18] ldr r2, _02214954 ; =0x0000044C add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] str r0, [r4, #0x10] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] lsl r0, r1, #0x10 lsr r0, r0, #0x10 str r0, [r4, #0x14] ldr r0, _02214958 ; =0xFFFF0000 and r0, r1 lsr r0, r0, #0x10 str r0, [r4, #0x18] ldr r0, _0221495C ; =MOD08_022148E0 add r1, r4, #0 bl FUN_0200CA44 pop {r3, r4, r5, pc} .align 2, 0 _02214954: .word 0x0000044C _02214958: .word 0xFFFF0000 _0221495C: .word MOD08_022148E0 thumb_func_start MOD08_02214960 MOD08_02214960: ; 0x02214960 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r2, r1, #4 str r2, [r0, #0x18] ldr r1, [r2] add r2, r2, #4 lsl r1, r1, #0x10 asr r1, r1, #0x10 str r2, [r0, #0x18] cmp r3, #3 bhi _022149B4 add r2, r3, r3 add r2, pc ldrh r2, [r2, #6] lsl r2, r2, #0x10 asr r2, r2, #0x10 add pc, r2 _02214986: ; jump table .short _0221498E - _02214986 - 2 ; case 0 .short _02214998 - _02214986 - 2 ; case 1 .short _022149A2 - _02214986 - 2 ; case 2 .short _022149AC - _02214986 - 2 ; case 3 _0221498E: mov r2, #6 lsl r2, r2, #6 ldr r0, [r0, r2] strh r1, [r0, #8] bx lr _02214998: mov r2, #6 lsl r2, r2, #6 ldr r0, [r0, r2] strh r1, [r0, #0xa] bx lr _022149A2: mov r2, #6 lsl r2, r2, #6 ldr r0, [r0, r2] strh r1, [r0, #4] bx lr _022149AC: mov r2, #6 lsl r2, r2, #6 ldr r0, [r0, r2] strh r1, [r0, #4] _022149B4: bx lr .align 2, 0 thumb_func_start MOD08_022149B8 MOD08_022149B8: ; 0x022149B8 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_02213DA8 add r4, r0, #0 add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strb r0, [r4, #0xd] ldr r0, [r5, #0x18] ldr r2, _02214A00 ; =0x0000044C add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] str r0, [r4, #0x10] ldr r0, [r5, #0x18] add r1, r0, #4 str r1, [r5, #0x18] ldr r0, [r1] add r1, r1, #4 str r1, [r5, #0x18] lsl r1, r0, #0x10 lsr r1, r1, #0x10 add r1, r1, #3 str r1, [r4, #0x14] ldr r1, _02214A04 ; =0xFFFF0000 and r0, r1 lsr r0, r0, #0x10 str r0, [r4, #0x18] ldr r0, _02214A08 ; =MOD08_022148E0 add r1, r4, #0 bl FUN_0200CA44 pop {r3, r4, r5, pc} nop _02214A00: .word 0x0000044C _02214A04: .word 0xFFFF0000 _02214A08: .word MOD08_022148E0 thumb_func_start MOD08_02214A0C MOD08_02214A0C: ; 0x02214A0C mov r1, #0x5f lsl r1, r1, #2 ldrb r1, [r0, r1] cmp r1, #2 bne _02214A24 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] mov r1, #0 add r0, #0x8d strb r1, [r0] bx lr _02214A24: mov r1, #1 add r0, #0x8d strb r1, [r0] bx lr thumb_func_start MOD08_02214A2C MOD08_02214A2C: ; 0x02214A2C mov r1, #0x5f lsl r1, r1, #2 ldrb r1, [r0, r1] cmp r1, #0 bne _02214A44 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] mov r1, #0 add r0, #0x8d strb r1, [r0] bx lr _02214A44: mov r1, #1 add r0, #0x8d strb r1, [r0] bx lr thumb_func_start MOD08_02214A4C MOD08_02214A4C: ; 0x02214A4C push {r3, r4, r5, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5, #0x18] mov r1, #0 add r0, r0, #4 str r0, [r5, #0x18] ldr r4, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r4, #0 bl MOD08_022156AC add r1, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r5] add r2, r5, #0 str r0, [sp, #0xc] add r2, #0xc4 ldr r2, [r2] mov r0, #7 mov r3, #3 bl FUN_0200687C add r0, r4, #0 mov r1, #1 bl MOD08_022156AC mov r2, #0 str r2, [sp] add r1, r0, #0 ldr r0, [r5] add r3, r2, #0 str r0, [sp, #4] mov r0, #7 bl FUN_02006930 add r0, r4, #0 mov r1, #2 bl MOD08_022156AC add r1, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] ldr r0, [r5] add r5, #0xc4 str r0, [sp, #0xc] ldr r2, [r5] mov r0, #7 mov r3, #3 bl FUN_020068C8 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02214AC8 MOD08_02214AC8: ; 0x02214AC8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 bl MOD08_02213DA8 add r4, r0, #0 ldr r0, [r5, #0x18] add r1, r0, #4 str r1, [r5, #0x18] ldr r0, [r1] str r0, [sp] add r0, r1, #4 str r0, [r5, #0x18] ldr r7, [r0] add r0, r0, #4 str r0, [r5, #0x18] ldr r6, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02214AFA str r6, [r4, #0x10] b _02214B12 _02214AFA: add r0, r5, #0 add r5, #0xc0 ldr r1, [r5] ldrh r1, [r1, #0x16] bl MOD08_02227470 cmp r0, #3 bne _02214B0E str r7, [r4, #0x10] b _02214B12 _02214B0E: ldr r0, [sp] str r0, [r4, #0x10] _02214B12: ldr r0, _02214B20 ; =MOD08_022148E0 ldr r2, _02214B24 ; =0x0000044C add r1, r4, #0 bl FUN_0200CA44 pop {r3, r4, r5, r6, r7, pc} nop _02214B20: .word MOD08_022148E0 _02214B24: .word 0x0000044C thumb_func_start MOD08_02214B28 MOD08_02214B28: ; 0x02214B28 bx lr .align 2, 0 thumb_func_start MOD08_02214B2C MOD08_02214B2C: ; 0x02214B2C bx lr .align 2, 0 thumb_func_start MOD08_02214B30 MOD08_02214B30: ; 0x02214B30 bx lr .align 2, 0 thumb_func_start MOD08_02214B34 MOD08_02214B34: ; 0x02214B34 bx lr .align 2, 0 thumb_func_start MOD08_02214B38 MOD08_02214B38: ; 0x02214B38 bx lr .align 2, 0 thumb_func_start MOD08_02214B3C MOD08_02214B3C: ; 0x02214B3C ldr r1, [r0, #0x18] ldr r3, _02214B50 ; =0x020054C9 add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] lsl r0, r2, #0x10 lsr r0, r0, #0x10 bx r3 .align 2, 0 _02214B50: .word 0x020054C9 thumb_func_start MOD08_02214B54 MOD08_02214B54: ; 0x02214B54 ldr r1, [r0, #0x18] ldr r3, _02214B6C ; =0x020054F1 add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] lsl r0, r2, #0x10 lsr r0, r0, #0x10 mov r1, #0 bx r3 nop _02214B6C: .word 0x020054F1 thumb_func_start MOD08_02214B70 MOD08_02214B70: ; 0x02214B70 push {r3, r4, r5, lr} ldr r1, [r0, #0x18] add r2, r1, #4 str r2, [r0, #0x18] ldr r1, [r2] lsl r1, r1, #0x10 lsr r4, r1, #0x10 add r1, r2, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] lsl r1, r2, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 add r5, r0, #0 add r0, r4, #0 bl FUN_020054C8 ldr r1, _02214BA4 ; =0x0000FFFF add r0, r4, #0 add r2, r5, #0 bl FUN_02005530 pop {r3, r4, r5, pc} .align 2, 0 _02214BA4: .word 0x0000FFFF thumb_func_start MOD08_02214BA8 MOD08_02214BA8: ; 0x02214BA8 push {r3, lr} ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] lsl r1, r2, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 bl FUN_0200554C pop {r3, pc} thumb_func_start MOD08_02214BC4 MOD08_02214BC4: ; 0x02214BC4 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_0221252C mov r1, #0 mov r2, #0x3c add r4, r0, #0 bl Call_FillMemWithValue mov r0, #1 strb r0, [r4] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strh r0, [r4, #0x1a] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] str r0, [r4, #8] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] str r0, [r4, #0xc] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] str r0, [r4, #0x10] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strb r0, [r4, #3] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r4, #8] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #8] ldr r1, [r4, #0xc] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #0xc] ldr r0, [r4, #8] ldr r1, [r4, #0xc] ldr r2, [r4, #0x10] lsl r0, r0, #0x18 lsl r1, r1, #0x18 lsl r2, r2, #0x18 asr r0, r0, #0x18 asr r1, r1, #0x18 asr r2, r2, #0x18 bl MOD08_0221540C str r0, [r4, #0x10] ldrh r0, [r4, #0x1a] bl FUN_020054C8 ldrh r0, [r4, #0x1a] ldr r1, _02214C60 ; =0x0000FFFF ldr r2, [r4, #8] bl FUN_02005530 add r0, r5, #0 add r1, r4, #0 bl MOD08_0221255C pop {r3, r4, r5, pc} .align 2, 0 _02214C60: .word 0x0000FFFF thumb_func_start MOD08_02214C64 MOD08_02214C64: ; 0x02214C64 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_0221252C mov r1, #0 mov r2, #0x3c add r4, r0, #0 bl Call_FillMemWithValue mov r0, #2 strb r0, [r4] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strh r0, [r4, #0x1a] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #8] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #0xc] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #0x10] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strb r0, [r4, #3] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldrh r0, [r4, #0x1a] bl FUN_020054C8 ldrh r0, [r4, #0x1a] ldr r1, _02214CD8 ; =0x0000FFFF ldr r2, [r4, #8] bl FUN_02005530 add r0, r5, #0 add r1, r4, #0 bl MOD08_0221255C pop {r3, r4, r5, pc} .align 2, 0 _02214CD8: .word 0x0000FFFF thumb_func_start MOD08_02214CDC MOD08_02214CDC: ; 0x02214CDC push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_0221252C mov r1, #0 mov r2, #0x3c add r4, r0, #0 bl Call_FillMemWithValue mov r0, #1 strb r0, [r4] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strh r0, [r4, #0x1a] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #8] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #0xc] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #0x10] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strb r0, [r4, #3] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r4, #8] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #8] ldr r1, [r4, #0xc] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #0xc] ldr r1, [r4, #0x10] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #0x10] ldrh r0, [r4, #0x1a] bl FUN_020054C8 ldrh r0, [r4, #0x1a] ldr r1, _02214D7C ; =0x0000FFFF ldr r2, [r4, #8] bl FUN_02005530 add r0, r5, #0 add r1, r4, #0 bl MOD08_0221255C pop {r3, r4, r5, pc} nop _02214D7C: .word 0x0000FFFF thumb_func_start MOD08_02214D80 MOD08_02214D80: ; 0x02214D80 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_0221252C mov r1, #0 mov r2, #0x3c add r4, r0, #0 bl Call_FillMemWithValue mov r0, #4 strb r0, [r4] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strh r0, [r4, #0x1a] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #0x14] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strb r0, [r4, #3] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strb r0, [r4, #0x18] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldrb r0, [r4, #3] strb r0, [r4, #4] ldr r1, [r4, #0x14] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #0x14] add r0, r5, #0 add r1, r4, #0 bl MOD08_0221255C pop {r3, r4, r5, pc} thumb_func_start MOD08_02214DE4 MOD08_02214DE4: ; 0x02214DE4 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_0221252C mov r1, #0 mov r2, #0x3c add r4, r0, #0 bl Call_FillMemWithValue mov r0, #5 strb r0, [r4] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strh r0, [r4, #0x1a] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [r4, #0x14] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r0, [r0] strb r0, [r4, #3] ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r4, #0x14] add r0, r5, #0 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 str r0, [r4, #0x14] add r0, r5, #0 add r1, r4, #0 bl MOD08_0221255C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02214E3C MOD08_02214E3C: ; 0x02214E3C bx lr .align 2, 0 thumb_func_start MOD08_02214E40 MOD08_02214E40: ; 0x02214E40 push {r4, lr} add r4, r0, #0 add r0, #0x90 ldrh r0, [r0] cmp r0, #0 beq _02214E5C add r0, r4, #0 mov r1, #1 add r0, #0x8d strb r1, [r0] ldr r0, _02214E94 ; =0x0000017D mov r1, #0 strb r1, [r4, r0] pop {r4, pc} _02214E5C: bl FUN_02005514 cmp r0, #0 beq _02214E80 ldr r0, _02214E94 ; =0x0000017D ldrb r1, [r4, r0] add r1, r1, #1 strb r1, [r4, r0] ldrb r1, [r4, r0] cmp r1, #0x5a bls _02214E78 mov r1, #0 strb r1, [r4, r0] pop {r4, pc} _02214E78: mov r0, #1 add r4, #0x8d strb r0, [r4] pop {r4, pc} _02214E80: add r0, r4, #0 mov r1, #0 add r0, #0x8d strb r1, [r0] ldr r0, _02214E94 ; =0x0000017D strb r1, [r4, r0] ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] pop {r4, pc} .align 2, 0 _02214E94: .word 0x0000017D thumb_func_start MOD08_02214E98 MOD08_02214E98: ; 0x02214E98 push {r3, lr} ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 str r1, [r0, #0x18] lsl r0, r2, #0x10 lsr r0, r0, #0x10 str r0, [sp] lsl r3, r3, #0x10 ldr r0, _02214EC4 ; =0x04001050 mov r1, #1 mov r2, #2 lsr r3, r3, #0x10 bl G2x_SetBlendAlpha_ pop {r3, pc} nop _02214EC4: .word 0x04001050 thumb_func_start MOD08_02214EC8 MOD08_02214EC8: ; 0x02214EC8 ldr r3, _02214ECC ; =MOD08_0221268C bx r3 .align 2, 0 _02214ECC: .word MOD08_0221268C thumb_func_start MOD08_02214ED0 MOD08_02214ED0: ; 0x02214ED0 bx lr .align 2, 0 thumb_func_start MOD08_02214ED4 MOD08_02214ED4: ; 0x02214ED4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 ldr r0, [r5, #0x18] add r6, r5, #0 add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] ldr r7, [r0] add r0, r0, #4 lsl r4, r1, #2 add r6, #0xcc str r0, [r5, #0x18] ldr r0, [r6, r4] cmp r0, #0 beq _02214EFC bl ErrorHandling _02214EFC: add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200BB34 str r0, [r6, r4] ldr r0, [r6, r4] cmp r0, #0 bne _02214F16 bl ErrorHandling _02214F16: add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] ldr r1, [r6, r4] add r0, #0xac ldr r0, [r0] add r2, r7, #0 bl FUN_0200BBF0 add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200BB68 mov r2, #0x11 mov r1, #0 lsl r2, r2, #0x10 bl FUN_02008D24 add r0, r5, #0 mov r1, #0 add r2, sp, #0 add r0, #0x18 _02214F48: ldr r3, [r5, #0x18] add r1, r1, #1 ldr r3, [r3] str r3, [r2] ldr r3, [r0] add r2, r2, #4 add r3, r3, #4 str r3, [r0] cmp r1, #6 blt _02214F48 add r5, #0xc0 ldr r0, [r5] ldr r1, [r6, r4] add r0, #0xac ldr r0, [r0] add r2, sp, #0 bl FUN_0200BF60 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02214F70 MOD08_02214F70: ; 0x02214F70 push {lr} sub sp, #0xc add r2, r0, #0 ldr r0, [r2, #0x18] add r0, r0, #4 str r0, [r2, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r2, #0x18] ldr r3, [r0] add r0, r0, #4 str r0, [r2, #0x18] mov r0, #1 str r0, [sp] str r0, [sp, #4] ldr r0, _02214FB0 ; =0x00001388 lsl r1, r1, #2 add r0, r3, r0 str r0, [sp, #8] add r0, r2, #0 add r1, r2, r1 add r0, #0xc0 ldr r0, [r0] add r1, #0xcc add r0, #0xac ldr r0, [r0] ldr r1, [r1] mov r2, #0x15 bl FUN_0200C00C add sp, #0xc pop {pc} .align 2, 0 _02214FB0: .word 0x00001388 thumb_func_start MOD08_02214FB4 MOD08_02214FB4: ; 0x02214FB4 push {r4, lr} sub sp, #0x18 add r4, r0, #0 ldr r0, [r4, #0x18] add r0, r0, #4 str r0, [r4, #0x18] ldr r3, [r0] add r0, r0, #4 str r0, [r4, #0x18] ldr r1, [r0] add r2, r0, #4 str r2, [r4, #0x18] ldr r0, [r2] add r2, r2, #4 str r2, [r4, #0x18] mov r2, #0x16 str r2, [sp] str r1, [sp, #4] mov r2, #0 str r2, [sp, #8] mov r2, #1 str r2, [sp, #0xc] str r0, [sp, #0x10] ldr r0, _0221500C ; =0x00001388 add r2, r4, #0 add r0, r1, r0 str r0, [sp, #0x14] add r2, #0xc0 ldr r2, [r2] lsl r3, r3, #2 add r0, r4, #0 add r3, r4, r3 add r0, #0xc8 add r2, #0xac add r3, #0xcc ldr r0, [r0] ldr r2, [r2] ldr r3, [r3] mov r1, #2 bl FUN_0200C0DC add sp, #0x18 pop {r4, pc} nop _0221500C: .word 0x00001388 thumb_func_start MOD08_02215010 MOD08_02215010: ; 0x02215010 push {r3, lr} sub sp, #8 add r2, r0, #0 ldr r0, [r2, #0x18] add r0, r0, #4 str r0, [r2, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r2, #0x18] ldr r3, [r0] add r0, r0, #4 str r0, [r2, #0x18] mov r0, #1 str r0, [sp] ldr r0, _02215050 ; =0x00001388 lsl r1, r1, #2 add r0, r3, r0 str r0, [sp, #4] add r0, r2, #0 add r1, r2, r1 add r0, #0xc0 ldr r0, [r0] add r1, #0xcc add r0, #0xac ldr r0, [r0] ldr r1, [r1] mov r2, #0x17 bl FUN_0200C124 add sp, #8 pop {r3, pc} nop _02215050: .word 0x00001388 thumb_func_start MOD08_02215054 MOD08_02215054: ; 0x02215054 push {r3, lr} sub sp, #8 add r2, r0, #0 ldr r0, [r2, #0x18] add r0, r0, #4 str r0, [r2, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r2, #0x18] ldr r3, [r0] add r0, r0, #4 str r0, [r2, #0x18] mov r0, #1 str r0, [sp] ldr r0, _02215094 ; =0x00001388 lsl r1, r1, #2 add r0, r3, r0 str r0, [sp, #4] add r0, r2, #0 add r1, r2, r1 add r0, #0xc0 ldr r0, [r0] add r1, #0xcc add r0, #0xac ldr r0, [r0] ldr r1, [r1] mov r2, #0x18 bl FUN_0200C13C add sp, #8 pop {r3, pc} nop _02215094: .word 0x00001388 thumb_func_start MOD08_02215098 MOD08_02215098: ; 0x02215098 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 add r4, r0, #0 ldr r1, [r4, #0x18] add r1, r1, #4 str r1, [r4, #0x18] ldr r5, [r1] add r2, r1, #4 str r2, [r4, #0x18] ldr r1, [r2] str r1, [sp] add r1, r2, #4 str r1, [r4, #0x18] bl MOD08_02212460 add r6, r0, #0 add r0, r4, #0 add r1, r6, #0 mov r2, #0 bl MOD08_02217B98 add r1, sp, #0xc strh r0, [r1] add r0, r4, #0 add r1, r6, #0 mov r2, #1 bl MOD08_02217B98 add r2, sp, #0xc strh r0, [r2, #2] mov r1, #0 strh r1, [r2, #4] strh r1, [r2, #6] mov r0, #0x64 str r0, [sp, #0x14] mov r0, #1 str r0, [sp, #0x1c] str r0, [sp, #0x38] add r0, r4, #0 ldr r3, _022151A0 ; =0x00001388 str r1, [sp, #0x18] str r1, [sp, #0x3c] add r2, sp, #0xc add r0, #0x18 _022150F0: ldr r6, [r4, #0x18] add r1, r1, #1 ldr r6, [r6] add r6, r6, r3 str r6, [r2, #0x14] ldr r6, [r0] add r2, r2, #4 add r6, r6, #4 str r6, [r0] cmp r1, #6 blt _022150F0 mov r0, #0x41 lsl r0, r0, #2 add r3, sp, #0xc add r2, r4, r0 mov r6, #6 _02215110: ldmia r3!, {r0, r1} stmia r2!, {r0, r1} sub r6, r6, #1 bne _02215110 ldr r0, [r3] lsl r7, r5, #2 str r0, [r2] add r0, r4, #0 str r0, [sp, #8] add r0, #0xcc str r0, [sp, #8] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] ldr r1, [sp, #8] add r0, #0xac ldr r0, [r0] ldr r1, [r1, r7] add r2, sp, #0xc bl FUN_0200C154 str r0, [sp, #4] ldr r0, [r4, #0x18] add r2, r4, #0 ldr r3, [r0] add r0, r0, #4 add r2, #0x18 mov r6, #0 str r0, [r4, #0x18] cmp r3, #0 ble _02215168 add r5, r4, #0 _02215150: ldr r0, [r4, #0x18] add r6, r6, #1 ldr r1, [r0] add r0, r5, #0 add r0, #0x94 str r1, [r0] ldr r0, [r2] add r5, r5, #4 add r0, r0, #4 str r0, [r2] cmp r6, r3 blt _02215150 _02215168: cmp r6, #0xa bge _02215180 lsl r0, r6, #2 add r2, r4, r0 mov r1, #0 _02215172: add r0, r2, #0 add r0, #0x94 add r6, r6, #1 add r2, r2, #4 str r1, [r0] cmp r6, #0xa blt _02215172 _02215180: ldr r0, [sp] bl MOD08_02218C5C add r5, r0, #0 add r0, r4, #0 add r4, #0xc0 ldr r1, [r4] ldr r2, [sp, #8] add r1, #0xac ldr r1, [r1] ldr r2, [r2, r7] ldr r3, [sp, #4] blx r5 add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} nop _022151A0: .word 0x00001388 thumb_func_start MOD08_022151A4 MOD08_022151A4: ; 0x022151A4 push {r4, r5, r6, r7, lr} sub sp, #0x34 add r5, r0, #0 ldr r1, [r5, #0x18] add r1, r1, #4 str r1, [r5, #0x18] ldr r4, [r1] add r1, r1, #4 str r1, [r5, #0x18] ldr r7, [r1] add r1, r1, #4 str r1, [r5, #0x18] bl MOD08_02212460 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 mov r2, #0 bl MOD08_02217B98 add r1, sp, #0 strh r0, [r1] add r0, r5, #0 add r1, r6, #0 mov r2, #1 bl MOD08_02217B98 add r2, sp, #0 strh r0, [r2, #2] mov r1, #0 strh r1, [r2, #4] strh r1, [r2, #6] mov r0, #0x64 str r0, [sp, #8] mov r0, #1 str r0, [sp, #0x10] str r0, [sp, #0x2c] add r0, r5, #0 ldr r3, _02215254 ; =0x00001388 str r1, [sp, #0xc] str r1, [sp, #0x30] add r2, sp, #0 add r0, #0x18 _022151FA: ldr r6, [r5, #0x18] add r1, r1, #1 ldr r6, [r6] add r6, r6, r3 str r6, [r2, #0x14] ldr r6, [r0] add r2, r2, #4 add r6, r6, #4 str r6, [r0] cmp r1, #6 blt _022151FA mov r0, #0x41 lsl r0, r0, #2 add r6, sp, #0 add r3, r5, r0 mov r2, #6 _0221521A: ldmia r6!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _0221521A ldr r0, [r6] lsl r1, r4, #2 str r0, [r3] add r0, r5, #0 add r0, #0xc0 ldr r0, [r0] add r1, r5, r1 add r0, #0xac add r1, #0xcc ldr r0, [r0] ldr r1, [r1] add r2, sp, #0 bl FUN_0200C154 add r5, #0xdc lsl r4, r7, #2 add r6, r0, #0 ldr r0, [r5, r4] cmp r0, #0 beq _0221524E bl ErrorHandling _0221524E: str r6, [r5, r4] add sp, #0x34 pop {r4, r5, r6, r7, pc} .align 2, 0 _02215254: .word 0x00001388 thumb_func_start MOD08_02215258 MOD08_02215258: ; 0x02215258 push {r3, r4, r5, lr} ldr r1, [r0, #0x18] add r5, r0, #0 add r1, r1, #4 str r1, [r0, #0x18] ldr r2, [r1] add r1, r1, #4 add r5, #0xcc lsl r4, r2, #2 str r1, [r0, #0x18] ldr r1, [r5, r4] cmp r1, #0 beq _0221527E add r0, #0xc0 ldr r0, [r0] add r0, #0xac ldr r0, [r0] bl FUN_0200C398 _0221527E: mov r0, #0 str r0, [r5, r4] pop {r3, r4, r5, pc} thumb_func_start MOD08_02215284 MOD08_02215284: ; 0x02215284 ldr r1, [r0, #0x18] add r1, r1, #4 str r1, [r0, #0x18] ldr r3, [r1] add r2, r1, #4 str r2, [r0, #0x18] ldr r1, [r2] add r2, r2, #4 str r2, [r0, #0x18] lsl r2, r3, #2 add r2, r0, r2 mov r0, #0x4f lsl r0, r0, #2 ldr r3, _022152A4 ; =0x0200C645 ldr r0, [r2, r0] bx r3 .align 2, 0 _022152A4: .word 0x0200C645 thumb_func_start MOD08_022152A8 MOD08_022152A8: ; 0x022152A8 ldr r3, _022152AC ; =0x02020C2D bx r3 .align 2, 0 _022152AC: .word 0x02020C2D thumb_func_start MOD08_022152B0 MOD08_022152B0: ; 0x022152B0 push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 ldr r1, [r5, #0x18] add r1, r1, #4 str r1, [r5, #0x18] ldr r4, [r1] add r1, r1, #4 str r1, [r5, #0x18] ldr r1, [r1] lsl r1, r1, #0x10 asr r1, r1, #0x10 lsl r1, r1, #0x18 asr r1, r1, #0x18 bl MOD08_02215354 add r3, r0, #0 ldr r0, [r5, #0x18] add r0, r0, #4 str r0, [r5, #0x18] ldr r1, [r0] add r0, r0, #4 str r0, [r5, #0x18] add r0, r5, #0 add r0, #0xc0 ldr r2, [r0] mov r0, #0x46 lsl r0, r0, #2 str r1, [sp] ldr r1, [r2, r0] sub r0, #0xc str r1, [sp, #4] ldr r1, [r5] str r1, [sp, #8] add r1, r4, #0 ldrh r4, [r2, #0x14] ldr r0, [r2, r0] lsl r4, r4, #1 add r2, r2, r4 add r2, #0xd8 ldrh r2, [r2] bl FUN_02069FB0 add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221530C MOD08_0221530C: ; 0x0221530C push {r4, lr} add r4, r0, #0 bl FUN_02005670 cmp r0, #0 bne _02215330 ldr r0, [r4, #0x18] add r1, r0, #4 str r1, [r4, #0x18] ldr r0, [r1] add r1, r1, #4 str r1, [r4, #0x18] mov r1, #0 add r4, #0x8d strb r1, [r4] bl FUN_02005614 pop {r4, pc} _02215330: mov r0, #1 add r4, #0x8d strb r0, [r4] pop {r4, pc} thumb_func_start MOD08_02215338 MOD08_02215338: ; 0x02215338 bx lr .align 2, 0 thumb_func_start MOD08_0221533C MOD08_0221533C: ; 0x0221533C cmp r0, #0x55 bls _02215344 mov r0, #0 bx lr _02215344: lsl r1, r0, #2 ldr r0, _0221534C ; =0x0222AC6C ldr r0, [r0, r1] bx lr .align 2, 0 _0221534C: .word 0x0222AC6C thumb_func_start MOD08_02215350 MOD08_02215350: ; 0x02215350 ldrb r0, [r0, #1] bx lr thumb_func_start MOD08_02215354 MOD08_02215354: ; 0x02215354 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 bl MOD08_02212458 add r7, r0, #0 add r0, r5, #0 bl MOD08_02212460 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 bl MOD08_02227470 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227470 add r0, r5, #0 add r1, r7, #0 bl MOD08_02227470 cmp r0, #3 bne _02215390 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227470 cmp r0, #4 beq _022153F6 _02215390: add r0, r5, #0 add r1, r7, #0 bl MOD08_02227470 cmp r0, #4 bne _022153B0 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227470 cmp r0, #3 bne _022153B0 mov r0, #0 mvn r0, r0 mul r4, r0 b _022153F6 _022153B0: add r0, r5, #0 add r1, r7, #0 bl MOD08_02227470 cmp r0, #3 bne _022153D4 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227470 cmp r0, #3 bne _022153D4 cmp r4, #0 ble _022153F6 mov r0, #0 mvn r0, r0 mul r4, r0 b _022153F6 _022153D4: add r0, r5, #0 add r1, r7, #0 bl MOD08_02227470 cmp r0, #4 bne _022153F6 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227470 cmp r0, #4 bne _022153F6 cmp r4, #0 bge _022153F6 mov r0, #0 mvn r0, r0 mul r4, r0 _022153F6: add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02215406 mov r0, #0 mvn r0, r0 mul r4, r0 _02215406: lsl r0, r4, #0x18 asr r0, r0, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0221540C MOD08_0221540C: ; 0x0221540C push {r3, lr} cmp r0, r1 bge _0221541E add r0, r2, #0 bl abs lsl r0, r0, #0x18 asr r0, r0, #0x18 pop {r3, pc} _0221541E: cmp r0, r1 ble _02215430 add r0, r2, #0 bl abs neg r0, r0 lsl r0, r0, #0x18 asr r0, r0, #0x18 pop {r3, pc} _02215430: mov r0, #0 pop {r3, pc} thumb_func_start MOD08_02215434 MOD08_02215434: ; 0x02215434 push {r3, r4, r5, lr} ldr r4, [r0, #0x18] add r3, r0, #0 add r4, r4, #4 str r4, [r0, #0x18] ldr r5, [r4] add r4, r4, #4 add r3, #0x18 str r4, [r0, #0x18] cmp r5, r2 beq _02215456 cmp r5, r2 beq _02215452 bl ErrorHandling _02215452: mov r0, #0 pop {r3, r4, r5, pc} _02215456: mov r4, #0 cmp r2, #0 ble _02215470 _0221545C: ldr r5, [r0, #0x18] add r4, r4, #1 ldr r5, [r5] str r5, [r1] ldr r5, [r3] add r1, r1, #4 add r5, r5, #4 str r5, [r3] cmp r4, r2 blt _0221545C _02215470: mov r0, #1 pop {r3, r4, r5, pc} thumb_func_start MOD08_02215474 MOD08_02215474: ; 0x02215474 push {r3, r4} add r4, r0, #0 mov r0, #0x41 lsl r0, r0, #2 add r3, r1, r0 mov r2, #6 _02215480: ldmia r3!, {r0, r1} stmia r4!, {r0, r1} sub r2, r2, #1 bne _02215480 ldr r0, [r3] str r0, [r4] pop {r3, r4} bx lr thumb_func_start MOD08_02215490 MOD08_02215490: ; 0x02215490 add r0, #0xc0 ldr r0, [r0] add r0, r0, r1 add r0, #0xc0 ldrb r0, [r0] bx lr thumb_func_start MOD08_0221549C MOD08_0221549C: ; 0x0221549C add r0, #0xc0 ldr r0, [r0] add r0, r0, r1 add r0, #0xe0 ldrb r0, [r0] bx lr thumb_func_start MOD08_022154A8 MOD08_022154A8: ; 0x022154A8 add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #1 add r0, r2, r0 add r0, #0xd8 ldrh r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_022154B8 MOD08_022154B8: ; 0x022154B8 add r0, #0xc0 ldr r0, [r0] add r0, r0, r1 add r0, #0xe8 ldrb r0, [r0] bx lr thumb_func_start MOD08_022154C4 MOD08_022154C4: ; 0x022154C4 add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 add r0, #0xec ldr r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_022154D4 MOD08_022154D4: ; 0x022154D4 push {r3, r4, r5, lr} add r5, r0, #0 add r0, #0xc0 ldr r0, [r0] lsl r4, r1, #2 add r0, r0, r4 add r0, #0xc4 ldr r0, [r0] cmp r0, #0 bne _022154EC mov r0, #0 pop {r3, r4, r5, pc} _022154EC: bl FUN_02008268 cmp r0, #0 beq _02215500 add r5, #0xc0 ldr r0, [r5] add r0, r0, r4 add r0, #0xc4 ldr r0, [r0] pop {r3, r4, r5, pc} _02215500: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_02215504 MOD08_02215504: ; 0x02215504 add r0, #0xc8 ldr r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_0221550C MOD08_0221550C: ; 0x0221550C add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 add r0, #0xb0 ldr r0, [r0] ldr r0, [r0, #8] bx lr thumb_func_start MOD08_0221551C MOD08_0221551C: ; 0x0221551C add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 add r0, #0xb0 ldr r0, [r0] ldr r0, [r0, #4] bx lr thumb_func_start MOD08_0221552C MOD08_0221552C: ; 0x0221552C add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 add r0, #0xb0 ldr r0, [r0] ldr r0, [r0, #0xc] bx lr thumb_func_start MOD08_0221553C MOD08_0221553C: ; 0x0221553C add r0, #0xc0 ldr r0, [r0] add r0, #0xd4 ldr r1, [r0] mov r0, #2 tst r0, r1 beq _0221554E mov r0, #1 bx lr _0221554E: mov r0, #0 bx lr .align 2, 0 thumb_func_start MOD08_02215554 MOD08_02215554: ; 0x02215554 add r0, #0xc0 ldr r2, [r0] lsl r0, r1, #2 add r0, r2, r0 add r0, #0xfc ldr r1, [r0] ldr r0, _02215570 ; =0x200400C0 tst r0, r1 beq _0221556A mov r0, #1 bx lr _0221556A: mov r0, #0 bx lr nop _02215570: .word 0x200400C0 thumb_func_start MOD08_02215574 MOD08_02215574: ; 0x02215574 push {r3, lr} bl MOD08_02212004 cmp r0, #1 bne _02215582 mov r0, #2 pop {r3, pc} _02215582: mov r0, #1 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02215588 MOD08_02215588: ; 0x02215588 push {r3, r4, r5, lr} sub sp, #0x18 ldr r3, _022155C0 ; =0x0222AAAC add r2, sp, #0 add r5, r0, #0 add r4, 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} add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _022155B4 add r0, sp, #0xc lsl r1, r4, #2 add sp, #0x18 ldr r0, [r0, r1] pop {r3, r4, r5, pc} _022155B4: lsl r1, r4, #2 add r0, sp, #0 ldr r0, [r0, r1] add sp, #0x18 pop {r3, r4, r5, pc} nop _022155C0: .word 0x0222AAAC thumb_func_start MOD08_022155C4 MOD08_022155C4: ; 0x022155C4 push {r3, r4, r5, lr} sub sp, #0x18 ldr r3, _022155FC ; =0x0222AA94 add r2, sp, #0 add r5, r0, #0 add r4, 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} add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _022155F0 add r0, sp, #0xc lsl r1, r4, #2 add sp, #0x18 ldr r0, [r0, r1] pop {r3, r4, r5, pc} _022155F0: lsl r1, r4, #2 add r0, sp, #0 ldr r0, [r0, r1] add sp, #0x18 pop {r3, r4, r5, pc} nop _022155FC: .word 0x0222AA94 thumb_func_start MOD08_02215600 MOD08_02215600: ; 0x02215600 push {r3, lr} cmp r1, #3 bhi _02215636 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02215612: ; jump table .short _0221561A - _02215612 - 2 ; case 0 .short _02215622 - _02215612 - 2 ; case 1 .short _0221562A - _02215612 - 2 ; case 2 .short _02215632 - _02215612 - 2 ; case 3 _0221561A: bl MOD08_02212004 mov r0, #0 pop {r3, pc} _02215622: bl MOD08_02212004 mov r0, #1 pop {r3, pc} _0221562A: bl MOD08_02212004 mov r0, #3 pop {r3, pc} _02215632: bl MOD08_02215574 _02215636: pop {r3, pc} thumb_func_start MOD08_02215638 MOD08_02215638: ; 0x02215638 push {r3, lr} add r2, r0, #0 mov r0, #0 str r0, [sp] add r0, r2, #0 add r2, #0xc0 ldr r3, [r2] mov r2, #0x11 add r0, #0xc4 lsl r2, r2, #4 lsl r1, r1, #0x18 ldr r2, [r3, r2] mov r3, #1 ldr r0, [r0] lsr r1, r1, #0x18 lsl r3, r3, #0x10 bl FUN_02017E14 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02215660 MOD08_02215660: ; 0x02215660 push {r3, lr} mov r2, #2 add r1, r0, #0 lsl r2, r2, #8 str r2, [sp] add r1, #0xc0 add r0, #0xc8 ldr r1, [r1] sub r2, #0xec ldr r1, [r1, r2] mov r2, #0 ldr r0, [r0] add r3, r2, #0 bl FUN_02003054 pop {r3, pc} thumb_func_start MOD08_02215680 MOD08_02215680: ; 0x02215680 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_022132C4 add r4, r0, #0 add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _022156A8 add r0, r5, #0 add r1, r4, #0 bl MOD08_022154A8 bl MOD08_0222A6C8 cmp r0, #1 bne _022156A8 mov r0, #1 pop {r3, r4, r5, pc} _022156A8: mov r0, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_022156AC MOD08_022156AC: ; 0x022156AC mov r2, #0x14 mul r2, r0 ldr r0, _022156BC ; =0x0222ADC0 lsl r1, r1, #2 add r0, r0, r2 ldr r0, [r1, r0] bx lr nop _022156BC: .word 0x0222ADC0 thumb_func_start MOD08_022156C0 MOD08_022156C0: ; 0x022156C0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x90 ldr r3, _02215900 ; =0x0222AA4C add r6, r2, #0 add r2, sp, #0x78 add r7, r0, #0 add r5, 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} add r0, r5, #0 mov r1, #0x58 bl FUN_02016998 add r4, r0, #0 str r5, [r4] str r6, [r4, #4] add r0, r7, #0 bl FUN_02230078 str r0, [r4, #8] add r0, r7, #0 bl FUN_02230080 str r0, [r4, #0xc] add r0, r7, #0 bl FUN_022300CC str r0, [r4, #0x10] mov r6, #0 add r5, r4, #0 _02215704: mov r0, #0 str r0, [r5, #0x24] add r0, r7, #0 add r1, r6, #0 bl FUN_022312D0 str r0, [r5, #0x34] add r6, r6, #1 add r5, r5, #4 cmp r6, #4 blt _02215704 add r1, r4, #0 add r0, r7, #0 add r1, #0x44 bl FUN_02231504 add r1, r4, #0 add r0, r7, #0 add r1, #0x48 bl FUN_02231534 mov r6, #0 add r7, r6, #0 _02215732: ldr r0, [r4, #4] cmp r6, r0 beq _0221573C cmp r0, #0xff bne _0221579E _0221573C: ldr r1, _02215904 ; =0x0000D903 str r7, [sp] add r2, r6, r1 ldr r1, _02215908 ; =0x00001388 mov r3, #0x28 mul r1, r0 mov r0, #1 add r5, r2, r1 str r0, [sp, #4] str r5, [sp, #8] ldr r0, [r4, #8] ldr r1, [r4, #0xc] mov r2, #0x1b bl FUN_0200C00C mov r0, #0x1b str r0, [sp] mov r0, #0x27 str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] mov r0, #1 str r0, [sp, #0xc] str r0, [sp, #0x10] str r5, [sp, #0x14] ldr r0, [r4, #0x10] ldr r2, [r4, #8] ldr r3, [r4, #0xc] mov r1, #2 bl FUN_0200C0DC mov r0, #0 str r0, [sp] str r5, [sp, #4] ldr r0, [r4, #8] ldr r1, [r4, #0xc] mov r2, #0x1b mov r3, #0x29 bl FUN_0200C124 mov r0, #0 str r0, [sp] str r5, [sp, #4] ldr r0, [r4, #8] ldr r1, [r4, #0xc] mov r2, #0x1b mov r3, #0x2a bl FUN_0200C13C _0221579E: add r6, r6, #1 cmp r6, #4 blt _02215732 mov r0, #0 str r0, [sp, #0x24] add r7, r4, #0 _022157AA: ldr r1, [r4, #4] ldr r0, [sp, #0x24] cmp r0, r1 beq _022157B8 cmp r1, #0xff beq _022157B8 b _022158EC _022157B8: ldr r2, _02215904 ; =0x0000D903 ldr r0, [sp, #0x24] add r3, r1, #0 add r0, r0, r2 ldr r2, _02215908 ; =0x00001388 mul r3, r2 add r1, r0, r3 str r1, [r7, #0x14] ldr r1, [r4, #4] add r3, r1, #0 mul r3, r2 add r1, r0, r3 str r1, [sp, #0x60] ldr r1, [r4, #4] add r3, r1, #0 mul r3, r2 add r1, r0, r3 str r1, [sp, #0x64] ldr r1, [r4, #4] add r3, r1, #0 mul r3, r2 add r1, r0, r3 str r1, [sp, #0x68] ldr r1, [r4, #4] mul r2, r1 mov r1, #0 add r0, r0, r2 str r0, [sp, #0x6c] str r1, [sp, #0x70] str r1, [sp, #0x74] ldr r2, [r7, #0x34] ldr r5, [r7, #0x48] ldr r0, [r2, #4] cmp r5, #0 str r0, [sp, #0x20] ldr r0, [r2, #8] str r0, [sp, #0x1c] ldr r0, [r2] str r0, [sp, #0x18] beq _022158EC add r0, r5, #0 bl FUN_0200782C str r0, [sp, #0x28] add r0, r5, #0 mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 add r0, r5, #0 mov r1, #0x29 bl FUN_0200782C sub r2, r6, r0 ldr r0, [sp, #0x28] add r1, sp, #0x2c strh r0, [r1] strh r2, [r1, #2] mov r0, #0 strh r0, [r1, #4] strh r0, [r1, #6] ldr r1, [sp, #0x24] add r3, sp, #0x2c add r1, r4, r1 add r1, #0x44 ldrb r1, [r1] lsl r2, r1, #2 add r1, sp, #0x78 ldr r1, [r1, r2] str r0, [sp, #0x38] str r1, [sp, #0x34] mov r1, #1 str r1, [sp, #0x3c] str r1, [sp, #0x58] str r0, [sp, #0x5c] add r2, sp, #0x60 _02215852: ldr r1, [r2] add r0, r0, #1 str r1, [r3, #0x14] add r2, r2, #4 add r3, r3, #4 cmp r0, #6 blt _02215852 ldr r0, [r4, #8] ldr r1, [r4, #0xc] add r2, sp, #0x2c bl FUN_0200C154 add r6, r0, #0 bl FUN_0200C5A8 str r6, [r7, #0x24] cmp r5, #0 bne _02215880 add r0, r6, #0 mov r1, #0 bl FUN_0200C644 b _022158A8 _02215880: add r0, r5, #0 bl FUN_02008268 cmp r0, #0 bne _02215894 add r0, r6, #0 mov r1, #0 bl FUN_0200C644 b _022158A8 _02215894: add r0, r5, #0 mov r1, #6 bl FUN_0200782C cmp r0, #1 bne _022158A8 add r0, r6, #0 mov r1, #0 bl FUN_0200C644 _022158A8: cmp r5, #0 beq _022158C2 ldr r0, [r6] bl FUN_02020350 add r1, r0, #0 mov r3, #0x32 ldr r1, [r1, #4] ldr r2, [sp, #0x18] mov r0, #0x13 lsl r3, r3, #6 bl FUN_0201C2C8 _022158C2: cmp r5, #0 beq _022158EC ldr r0, [r6] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C mov r1, #2 str r1, [sp] mov r1, #0x20 lsl r0, r0, #0x14 str r1, [sp, #4] lsr r0, r0, #0x10 str r0, [sp, #8] ldr r0, [r4, #0x10] ldr r1, [sp, #0x20] ldr r2, [sp, #0x1c] ldr r3, [r4] bl FUN_020030E8 _022158EC: ldr r0, [sp, #0x24] add r7, r7, #4 add r0, r0, #1 str r0, [sp, #0x24] cmp r0, #4 bge _022158FA b _022157AA _022158FA: add r0, r4, #0 add sp, #0x90 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02215900: .word 0x0222AA4C _02215904: .word 0x0000D903 _02215908: .word 0x00001388 thumb_func_start MOD08_0221590C MOD08_0221590C: ; 0x0221590C ldr r3, _02215914 ; =MOD08_022156C0 mov r2, #0xff bx r3 nop _02215914: .word MOD08_022156C0 thumb_func_start MOD08_02215918 MOD08_02215918: ; 0x02215918 push {r4, r5, r6, lr} add r5, r0, #0 mov r6, #0 add r4, r5, #0 _02215920: ldr r0, [r4, #0x24] cmp r0, #0 beq _0221593C ldr r0, [r5, #0xc] ldr r1, [r4, #0x14] bl FUN_0200C358 ldr r0, [r5, #0xc] ldr r1, [r4, #0x14] bl FUN_0200C368 ldr r0, [r4, #0x24] bl FUN_0200C3DC _0221593C: add r6, r6, #1 add r4, r4, #4 cmp r6, #4 blt _02215920 add r0, r5, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} thumb_func_start MOD08_0221594C MOD08_0221594C: ; 0x0221594C push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 add r7, r1, #0 mov r4, #0 add r5, r6, #0 _02215956: cmp r4, r7 bne _02215976 ldr r0, [r5, #0x24] cmp r0, #0 beq _02215976 ldr r0, [r6, #0xc] ldr r1, [r5, #0x14] bl FUN_0200C358 ldr r0, [r6, #0xc] ldr r1, [r5, #0x14] bl FUN_0200C368 ldr r0, [r5, #0x24] bl FUN_0200C3DC _02215976: add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _02215956 add r0, r6, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02215988 MOD08_02215988: ; 0x02215988 push {r4, lr} add r4, r0, #0 bne _02215992 bl ErrorHandling _02215992: ldr r0, [r4, #4] add r0, r4, r0 add r0, #0x44 ldrb r0, [r0] pop {r4, pc} thumb_func_start MOD08_0221599C MOD08_0221599C: ; 0x0221599C push {r4, lr} sub sp, #8 mov r1, #0x12 lsl r1, r1, #0xa add r4, r0, #0 bl FUN_02016998 add r2, r0, #0 mov r0, #1 str r0, [sp] mov r3, #0x12 ldr r0, _022159DC ; =MOD08_02215A68 ldr r1, _022159E0 ; =MOD08_02215A84 lsl r3, r3, #0xa str r4, [sp, #4] bl FUN_02012CDC add r4, r0, #0 bl FUN_0201343C add r2, r0, #0 beq _022159D4 mov r0, #1 mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe bl FUN_0201EC94 _022159D4: add r0, r4, #0 add sp, #8 pop {r4, pc} nop _022159DC: .word MOD08_02215A68 _022159E0: .word MOD08_02215A84 thumb_func_start MOD08_022159E4 MOD08_022159E4: ; 0x022159E4 push {r4, lr} sub sp, #8 mov r1, #0x42 lsl r1, r1, #8 add r4, r0, #0 bl FUN_02016998 add r2, r0, #0 mov r0, #1 str r0, [sp] mov r3, #0x42 ldr r0, _02215A24 ; =MOD08_02215A68 ldr r1, _02215A28 ; =MOD08_02215A84 lsl r3, r3, #8 str r4, [sp, #4] bl FUN_02012CDC add r4, r0, #0 bl FUN_0201343C add r2, r0, #0 beq _02215A1C mov r0, #1 mov r1, #0xe1 lsl r0, r0, #0xc lsl r1, r1, #0xe bl FUN_0201EC94 _02215A1C: add r0, r4, #0 add sp, #8 pop {r4, pc} nop _02215A24: .word MOD08_02215A68 _02215A28: .word MOD08_02215A84 thumb_func_start MOD08_02215A2C MOD08_02215A2C: ; 0x02215A2C push {r3, r4, r5, lr} add r5, r0, #0 bl FUN_020133E8 add r4, r0, #0 add r0, r5, #0 bl FUN_02012DE4 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} thumb_func_start MOD08_02215A44 MOD08_02215A44: ; 0x02215A44 push {r3, lr} bl FUN_020222AC bl FUN_02013348 cmp r0, #0 beq _02215A66 bl FUN_02013364 cmp r0, #0 ble _02215A62 bl FUN_020222AC bl FUN_020B02C8 _02215A62: bl FUN_02013388 _02215A66: pop {r3, pc} thumb_func_start MOD08_02215A68 MOD08_02215A68: ; 0x02215A68 push {r4, lr} ldr r3, _02215A80 ; =0x021064B8 mov r2, #0 ldr r3, [r3] blx r3 add r4, r0, #0 bl FUN_0201327C lsl r0, r4, #0x10 lsr r0, r0, #0xd pop {r4, pc} nop _02215A80: .word 0x021064B8 thumb_func_start MOD08_02215A84 MOD08_02215A84: ; 0x02215A84 push {r4, lr} ldr r3, _02215A9C ; =0x021064C0 mov r2, #0 ldr r3, [r3] blx r3 add r4, r0, #0 bl FUN_020132BC lsl r0, r4, #0x10 lsr r0, r0, #0xd pop {r4, pc} nop _02215A9C: .word 0x021064C0 thumb_func_start MOD08_02215AA0 MOD08_02215AA0: ; 0x02215AA0 bx lr .align 2, 0 thumb_func_start MOD08_02215AA4 MOD08_02215AA4: ; 0x02215AA4 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 bl MOD08_0221599C add r4, r0, #0 mov r0, #0x1d add r1, r6, #0 add r2, r5, #0 bl FUN_0201318C add r1, r0, #0 add r0, r4, #0 mov r2, #0xa add r3, r7, #0 bl FUN_02013194 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02215ACC MOD08_02215ACC: ; 0x02215ACC push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 str r3, [sp] bl MOD08_0221599C add r4, r0, #0 add r0, r6, #0 add r1, r7, #0 add r2, r5, #0 bl FUN_0201318C add r1, r0, #0 ldr r3, [sp] add r0, r4, #0 mov r2, #0xa bl FUN_02013194 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02215AF8 MOD08_02215AF8: ; 0x02215AF8 ldr r3, _02215AFC ; =0x02006705 bx r3 .align 2, 0 _02215AFC: .word 0x02006705 thumb_func_start MOD08_02215B00 MOD08_02215B00: ; 0x02215B00 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r6, r0, #0 add r7, r2, #0 add r0, r5, #0 str r3, [sp] bl MOD08_022159E4 add r4, r0, #0 add r0, r6, #0 add r1, r7, #0 add r2, r5, #0 bl MOD08_02215AF8 add r1, r0, #0 ldr r3, [sp] add r0, r4, #0 mov r2, #0xa bl FUN_02013194 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02215B2C MOD08_02215B2C: ; 0x02215B2C push {r4, lr} lsl r4, r2, #2 ldr r2, _02215B3C ; =0x0222B248 ldr r2, [r2, r4] bl FUN_020133AC pop {r4, pc} nop _02215B3C: .word 0x0222B248 thumb_func_start MOD08_02215B40 MOD08_02215B40: ; 0x02215B40 ldr r3, _02215B44 ; =MOD08_02215A2C bx r3 .align 2, 0 _02215B44: .word MOD08_02215A2C thumb_func_start MOD08_02215B48 MOD08_02215B48: ; 0x02215B48 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 add r7, r2, #0 mov r4, #1 bl MOD08_02227468 add r5, r0, #0 add r0, r6, #0 add r1, r7, #0 bl MOD08_02227468 cmp r5, #5 bhi _02215B84 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02215B6E: ; jump table .short _02215B84 - _02215B6E - 2 ; case 0 .short _02215B7A - _02215B6E - 2 ; case 1 .short _02215B84 - _02215B6E - 2 ; case 2 .short _02215B7E - _02215B6E - 2 ; case 3 .short _02215B84 - _02215B6E - 2 ; case 4 .short _02215B82 - _02215B6E - 2 ; case 5 _02215B7A: sub r4, r4, #2 b _02215B84 _02215B7E: sub r4, r4, #2 b _02215B84 _02215B82: sub r4, r4, #2 _02215B84: add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02215B88 MOD08_02215B88: ; 0x02215B88 bx lr .align 2, 0 thumb_func_start MOD08_02215B8C MOD08_02215B8C: ; 0x02215B8C push {r4, r5, r6, r7, lr} sub sp, #0x34 add r5, r0, #0 bl FUN_0201341C add r4, r0, #0 bl MOD08_02212458 add r0, r4, #0 bl MOD08_02212460 add r0, r4, #0 bl MOD08_02212468 add r6, r0, #0 add r0, r4, #0 mov r1, #1 bl MOD08_02227470 cmp r0, #3 bne _02215BC2 add r0, r4, #0 mov r1, #1 add r2, sp, #0x28 bl MOD08_0222771C b _02215BFA _02215BC2: add r0, r4, #0 mov r1, #1 bl MOD08_02227468 str r0, [sp] bl MOD08_02227524 str r0, [sp, #4] add r0, r6, #0 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r4, r0, #0 ldr r0, [sp, #4] add r1, sp, #0x28 add r2, r4, #0 add r3, r7, #0 bl MOD08_0222765C ldr r0, [sp] add r1, sp, #0x1c add r2, r4, #0 add r3, r7, #0 bl MOD08_0222765C _02215BFA: ldr r0, [r5, #0x20] ldr r1, [sp, #0x28] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #0x2c] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #0x30] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] mov r0, #1 add r1, sp, #0x10 bl MOD08_02227974 add r0, r6, #0 bl FUN_0201343C add r4, r0, #0 add r0, sp, #8 add r1, r4, #0 bl FUN_0201F014 add r0, sp, #8 add r1, r4, #0 bl FUN_0201EF90 add sp, #0x34 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02215C44 MOD08_02215C44: ; 0x02215C44 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r0, #0 bl FUN_0201341C add r4, r0, #0 bl MOD08_02212460 add r6, r0, #0 add r0, r4, #0 bl MOD08_02212468 add r7, r0, #0 add r0, r4, #0 mov r1, #0 add r2, sp, #0xc bl MOD08_0222771C ldr r0, [r5, #0x20] ldr r1, [sp, #0xc] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #0x10] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #0x14] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] add r0, r6, #0 add r1, sp, #0 bl MOD08_02227974 add r0, r7, #0 add r1, sp, #0 bl FUN_020133FC add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02215CA0 MOD08_02215CA0: ; 0x02215CA0 push {r4, r5, lr} sub sp, #0xc add r4, r0, #0 bl FUN_0201341C add r5, r0, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 add r2, sp, #0 bl MOD08_0222771C ldr r0, [r4, #0x20] ldr r1, [sp] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r4, #0x28] ldr r0, [r4, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r4, #0x2c] ldr r0, [r4, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r4, #0x30] add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02215CE4 MOD08_02215CE4: ; 0x02215CE4 push {r4, r5, lr} sub sp, #0xc add r4, r0, #0 bl FUN_0201341C add r5, r0, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 add r2, sp, #0 bl MOD08_0222771C ldr r0, [r4, #0x20] ldr r1, [sp] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r4, #0x28] ldr r0, [r4, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r4, #0x2c] ldr r0, [r4, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r4, #0x30] add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02215D28 MOD08_02215D28: ; 0x02215D28 push {r3, r4, r5, r6, lr} sub sp, #0xc add r5, r0, #0 bl FUN_0201341C add r4, r0, #0 bl MOD08_02212458 add r6, r0, #0 add r0, r4, #0 bl MOD08_02212460 add r0, r4, #0 add r1, r6, #0 add r2, sp, #0 bl MOD08_0222771C ldr r0, [r5, #0x20] ldr r1, [sp] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] add sp, #0xc pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_02215D74 MOD08_02215D74: ; 0x02215D74 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 bl FUN_0201341C add r6, r0, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_02227470 cmp r0, #3 beq _02215DA0 mov r4, #1 b _02215DA2 _02215DA0: mov r4, #0 _02215DA2: add r0, r6, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r4, #0 add r1, sp, #0 add r3, r7, #0 bl MOD08_0222765C ldr r0, [r5, #0x20] ldr r1, [sp] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_02215DDC MOD08_02215DDC: ; 0x02215DDC push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 bl FUN_0201341C add r6, r0, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_02227470 cmp r0, #3 beq _02215E08 mov r4, #1 b _02215E0A _02215E08: mov r4, #0 _02215E0A: add r0, r6, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r4, #0 add r1, sp, #0 add r3, r7, #0 bl MOD08_0222765C ldr r0, [r5, #0x20] ldr r1, [sp] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_02215E44 MOD08_02215E44: ; 0x02215E44 push {r4, r5, r6, r7, lr} sub sp, #0x9c add r5, r0, #0 add r1, sp, #0 mov r0, #0 strh r0, [r1] strh r0, [r1, #2] strh r0, [r1, #4] strh r0, [r1, #6] strh r0, [r1, #8] strh r0, [r1, #0xa] ldr r3, _02215EE4 ; =0x0222B2A4 add r2, sp, #0x54 mov r1, #0x24 _02215E60: ldrh r0, [r3] add r3, r3, #2 strh r0, [r2] add r2, r2, #2 sub r1, r1, #1 bne _02215E60 ldr r3, _02215EE8 ; =0x0222B2EC add r2, sp, #0xc mov r1, #0x24 _02215E72: ldrh r0, [r3] add r3, r3, #2 strh r0, [r2] add r2, r2, #2 sub r1, r1, #1 bne _02215E72 bl FUN_0201341C add r4, r0, #0 bl MOD08_02212458 add r6, r0, #0 add r0, r4, #0 bl MOD08_02212460 add r7, r0, #0 add r0, r4, #0 add r1, r6, #0 bl MOD08_02227468 add r6, r0, #0 add r0, r4, #0 add r1, r7, #0 bl MOD08_02227468 lsl r2, r0, #1 mov r0, #0xc add r1, r6, #0 mul r1, r0 add r0, sp, #0x54 add r0, r0, r1 ldrsh r4, [r2, r0] mov r3, #0xac add r0, r4, #0 ldr r4, [r5, #0x20] mul r0, r3 ldr r4, [r4] ldr r4, [r4, #4] add r0, r0, r4 str r0, [r5, #0x28] add r0, sp, #0xc add r0, r0, r1 ldrsh r0, [r2, r0] add r1, r0, #0 ldr r0, [r5, #0x20] mul r1, r3 ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r0, [r0] ldr r0, [r0, #0xc] str r0, [r5, #0x30] add sp, #0x9c pop {r4, r5, r6, r7, pc} nop _02215EE4: .word 0x0222B2A4 _02215EE8: .word 0x0222B2EC thumb_func_start MOD08_02215EEC MOD08_02215EEC: ; 0x02215EEC push {r3, r4} add r3, r2, #0 add r3, #8 cmp r0, #7 bhi _02215F7C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02215F02: ; jump table .short _02215F7C - _02215F02 - 2 ; case 0 .short _02215F12 - _02215F02 - 2 ; case 1 .short _02215F1C - _02215F02 - 2 ; case 2 .short _02215F26 - _02215F02 - 2 ; case 3 .short _02215F30 - _02215F02 - 2 ; case 4 .short _02215F42 - _02215F02 - 2 ; case 5 .short _02215F54 - _02215F02 - 2 ; case 6 .short _02215F66 - _02215F02 - 2 ; case 7 _02215F12: ldr r0, [r2] mul r1, r0 str r1, [r2] pop {r3, r4} bx lr _02215F1C: ldr r0, [r2, #4] mul r1, r0 str r1, [r2, #4] pop {r3, r4} bx lr _02215F26: ldr r0, [r3] mul r1, r0 str r1, [r3] pop {r3, r4} bx lr _02215F30: ldr r0, [r2] add r3, r0, #0 mul r3, r1 str r3, [r2] ldr r0, [r2, #4] mul r1, r0 str r1, [r2, #4] pop {r3, r4} bx lr _02215F42: ldr r0, [r2] add r4, r0, #0 mul r4, r1 str r4, [r2] ldr r0, [r3] mul r1, r0 str r1, [r3] pop {r3, r4} bx lr _02215F54: ldr r0, [r2, #4] add r4, r0, #0 mul r4, r1 str r4, [r2, #4] ldr r0, [r3] mul r1, r0 str r1, [r3] pop {r3, r4} bx lr _02215F66: ldr r0, [r2] add r4, r0, #0 mul r4, r1 str r4, [r2] ldr r0, [r2, #4] add r4, r0, #0 mul r4, r1 str r4, [r2, #4] ldr r0, [r3] mul r1, r0 str r1, [r3] _02215F7C: pop {r3, r4} bx lr thumb_func_start MOD08_02215F80 MOD08_02215F80: ; 0x02215F80 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r6, r2, #0 add r5, r1, #0 add r1, r3, #0 add r7, sp, #0x10 mov r2, #0 str r2, [r7] ldr r3, [sp, #0x30] str r2, [r7, #4] ldr r4, [sp, #0x38] str r2, [r7, #8] cmp r3, #5 bhi _0221602A add r3, r3, r3 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _02215FA8: ; jump table .short _0221602A - _02215FA8 - 2 ; case 0 .short _02215FB4 - _02215FA8 - 2 ; case 1 .short _02215FDA - _02215FA8 - 2 ; case 2 .short _02215FEE - _02215FA8 - 2 ; case 3 .short _02215FF6 - _02215FA8 - 2 ; case 4 .short _02216000 - _02215FA8 - 2 ; case 5 _02215FB4: add r0, r5, #0 add r1, r7, #0 bl FUN_02013628 add r1, sp, #0x20 mov r0, #0x14 ldrsb r0, [r1, r0] ldr r1, [sp, #0x10] add r2, r1, #0 mul r2, r0 ldr r1, [sp, #0x14] str r2, [sp, #0x10] add r2, r1, #0 mul r2, r0 ldr r1, [sp, #0x18] str r2, [sp, #0x14] mul r0, r1 str r0, [sp, #0x18] b _0221602A _02215FDA: str r2, [sp, #0x10] add r1, sp, #0x20 mov r0, #0x14 ldrsb r1, [r1, r0] mov r0, #0x32 lsl r0, r0, #6 mul r0, r1 str r0, [sp, #0x14] str r2, [sp, #0x18] b _0221602A _02215FEE: add r2, r7, #0 bl MOD08_0222771C b _0221602A _02215FF6: add r1, r6, #0 add r2, r7, #0 bl MOD08_0222771C b _0221602A _02216000: add r1, sp, #0 str r2, [r1] str r2, [r1, #4] str r2, [r1, #8] str r2, [r1, #0xc] mov r2, #4 bl MOD08_02215434 ldr r0, [sp] add r2, sp, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #4] mov r1, #0x14 str r0, [sp, #0x14] ldr r0, [sp, #8] str r0, [sp, #0x18] ldrsb r1, [r2, r1] ldr r0, [sp, #0xc] add r2, r7, #0 bl MOD08_02215EEC _0221602A: ldr r1, [sp, #0x10] ldr r0, [r4] sub r0, r1, r0 str r0, [sp, #0x10] ldr r1, [sp, #0x14] ldr r0, [r4, #4] sub r0, r1, r0 str r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r0, [r4, #8] sub r0, r1, r0 str r0, [sp, #0x18] add r0, r5, #0 add r1, sp, #0x10 bl FUN_02013610 add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02216050 MOD08_02216050: ; 0x02216050 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r6, r2, #0 add r5, r1, #0 add r1, r3, #0 add r7, sp, #0x10 mov r2, #0 str r2, [r7] ldr r3, [sp, #0x30] str r2, [r7, #4] ldr r4, [sp, #0x38] str r2, [r7, #8] cmp r3, #5 bhi _022160FA add r3, r3, r3 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _02216078: ; jump table .short _022160FA - _02216078 - 2 ; case 0 .short _02216084 - _02216078 - 2 ; case 1 .short _022160AA - _02216078 - 2 ; case 2 .short _022160BE - _02216078 - 2 ; case 3 .short _022160C6 - _02216078 - 2 ; case 4 .short _022160D0 - _02216078 - 2 ; case 5 _02216084: add r0, r5, #0 add r1, r7, #0 bl FUN_02013548 add r1, sp, #0x20 mov r0, #0x14 ldrsb r0, [r1, r0] ldr r1, [sp, #0x10] add r2, r1, #0 mul r2, r0 ldr r1, [sp, #0x14] str r2, [sp, #0x10] add r2, r1, #0 mul r2, r0 ldr r1, [sp, #0x18] str r2, [sp, #0x14] mul r0, r1 str r0, [sp, #0x18] b _022160FA _022160AA: str r2, [sp, #0x10] add r1, sp, #0x20 mov r0, #0x14 ldrsb r1, [r1, r0] mov r0, #0x32 lsl r0, r0, #6 mul r0, r1 str r0, [sp, #0x14] str r2, [sp, #0x18] b _022160FA _022160BE: add r2, r7, #0 bl MOD08_0222771C b _022160FA _022160C6: add r1, r6, #0 add r2, r7, #0 bl MOD08_0222771C b _022160FA _022160D0: add r1, sp, #0 str r2, [r1] str r2, [r1, #4] str r2, [r1, #8] str r2, [r1, #0xc] mov r2, #4 bl MOD08_02215434 ldr r0, [sp] add r2, sp, #0x20 str r0, [sp, #0x10] ldr r0, [sp, #4] mov r1, #0x14 str r0, [sp, #0x14] ldr r0, [sp, #8] str r0, [sp, #0x18] ldrsb r1, [r2, r1] ldr r0, [sp, #0xc] add r2, r7, #0 bl MOD08_02215EEC _022160FA: ldr r1, [sp, #0x10] ldr r0, [r4] sub r0, r1, r0 str r0, [sp, #0x10] ldr r1, [sp, #0x14] ldr r0, [r4, #4] sub r0, r1, r0 str r0, [sp, #0x14] ldr r1, [sp, #0x18] ldr r0, [r4, #8] sub r0, r1, r0 str r0, [sp, #0x18] add r0, r5, #0 add r1, sp, #0x10 bl FUN_02013530 add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02216120 MOD08_02216120: ; 0x02216120 push {r4, r5, r6, r7, lr} sub sp, #0x94 add r6, r0, #0 add r7, r2, #0 add r4, r1, #0 str r3, [sp, #0xc] bl MOD08_02212468 add r0, r6, #0 add r1, r7, #0 bl MOD08_02227468 str r0, [sp, #0x10] ldr r1, [sp, #0xc] add r0, r6, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r6, #0 add r1, sp, #0x7c mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, sp, #0x70 mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, sp, #0x58 mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, sp, #0x64 mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, sp, #0x40 mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, sp, #0x34 mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, sp, #0x4c mov r2, #3 bl MOD08_02215434 ldr r0, [sp, #0x10] cmp r0, #5 bhi _022161A8 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221619C: ; jump table .short _022161A8 - _0221619C - 2 ; case 0 .short _022161B8 - _0221619C - 2 ; case 1 .short _022161CE - _0221619C - 2 ; case 2 .short _02216202 - _0221619C - 2 ; case 3 .short _0221624C - _0221619C - 2 ; case 4 .short _02216280 - _0221619C - 2 ; case 5 _022161A8: ldr r1, [sp, #0x7c] add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x80] strh r1, [r0, #2] ldr r1, [sp, #0x84] strh r1, [r0, #4] b _022162C8 _022161B8: ldr r0, [sp, #0x7c] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x80] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x84] neg r1, r1 strh r1, [r0, #4] b _022162C8 _022161CE: cmp r5, #3 add r0, sp, #0x14 bne _022161E2 ldr r1, [sp, #0x70] strh r1, [r0] ldr r1, [sp, #0x74] strh r1, [r0, #2] ldr r1, [sp, #0x78] strh r1, [r0, #4] b _022162C8 _022161E2: cmp r5, #5 bne _022161F4 ldr r1, [sp, #0x58] strh r1, [r0] ldr r1, [sp, #0x5c] strh r1, [r0, #2] ldr r1, [sp, #0x60] strh r1, [r0, #4] b _022162C8 _022161F4: ldr r1, [sp, #0x64] strh r1, [r0] ldr r1, [sp, #0x68] strh r1, [r0, #2] ldr r1, [sp, #0x6c] strh r1, [r0, #4] b _022162C8 _02216202: cmp r5, #2 bne _0221621C ldr r0, [sp, #0x70] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x74] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x78] neg r1, r1 strh r1, [r0, #4] b _022162C8 _0221621C: cmp r5, #5 bne _02216236 ldr r0, [sp, #0x64] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x68] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x6c] neg r1, r1 strh r1, [r0, #4] b _022162C8 _02216236: ldr r0, [sp, #0x40] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x44] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x48] neg r1, r1 strh r1, [r0, #4] b _022162C8 _0221624C: cmp r5, #3 add r0, sp, #0x14 bne _02216260 ldr r1, [sp, #0x40] strh r1, [r0] ldr r1, [sp, #0x44] strh r1, [r0, #2] ldr r1, [sp, #0x48] strh r1, [r0, #4] b _022162C8 _02216260: cmp r5, #5 bne _02216272 ldr r1, [sp, #0x34] strh r1, [r0] ldr r1, [sp, #0x38] strh r1, [r0, #2] ldr r1, [sp, #0x3c] strh r1, [r0, #4] b _022162C8 _02216272: ldr r1, [sp, #0x4c] strh r1, [r0] ldr r1, [sp, #0x50] strh r1, [r0, #2] ldr r1, [sp, #0x54] strh r1, [r0, #4] b _022162C8 _02216280: cmp r5, #3 bne _0221629A ldr r0, [sp, #0x4c] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x50] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x54] neg r1, r1 strh r1, [r0, #4] b _022162C8 _0221629A: cmp r5, #2 bne _022162B4 ldr r0, [sp, #0x58] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x5c] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x60] neg r1, r1 strh r1, [r0, #4] b _022162C8 _022162B4: ldr r0, [sp, #0x34] neg r1, r0 add r0, sp, #0x14 strh r1, [r0] ldr r1, [sp, #0x38] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x3c] neg r1, r1 strh r1, [r0, #4] _022162C8: ldr r2, [sp, #0xc] add r0, r6, #0 add r1, r7, #0 bl MOD08_02215B48 add r5, r0, #0 add r1, sp, #0x28 mov r0, #0 str r0, [r1] str r0, [r1, #4] str r0, [r1, #8] add r0, r6, #0 mov r2, #3 bl MOD08_02215434 add r0, r6, #0 add r1, r7, #0 add r2, sp, #0x1c bl MOD08_0222771C ldr r0, [sp, #0x28] cmp r0, #0 bne _02216334 ldr r0, [sp, #0x2c] cmp r0, #0 bne _02216334 ldr r0, [sp, #0x30] cmp r0, #0 bne _02216334 add r3, sp, #0x1c ldmia r3!, {r0, r1} add r2, sp, #0x88 stmia r2!, {r0, r1} ldr r0, [r3] str r0, [r2] ldr r1, [r4, #0x20] ldr r0, [sp, #0x1c] ldr r1, [r1] ldr r1, [r1, #4] add r0, r0, r1 str r0, [r4, #0x28] ldr r1, [r4, #0x20] ldr r0, [sp, #0x20] ldr r1, [r1] ldr r1, [r1, #8] add r0, r0, r1 str r0, [r4, #0x2c] ldr r1, [r4, #0x20] ldr r0, [sp, #0x24] ldr r1, [r1] ldr r1, [r1, #0xc] add r0, r0, r1 str r0, [r4, #0x30] b _02216388 _02216334: ldr r2, [sp, #0x28] ldr r1, [sp, #0x2c] ldr r0, [sp, #0x30] str r2, [sp, #0x88] str r1, [sp, #0x8c] str r0, [sp, #0x90] cmp r2, #0 bne _0221634E mov r0, #0x32 lsl r0, r0, #6 cmp r1, r0 bne _0221634E mov r5, #1 _0221634E: ldr r1, [sp, #0x88] add r0, r1, #0 ldr r1, [sp, #0x8c] mul r0, r5 add r2, r1, #0 mul r2, r5 ldr r1, [sp, #0x24] str r2, [sp, #0x8c] add r2, r1, #0 mul r2, r5 str r0, [sp, #0x88] str r2, [sp, #0x90] ldr r1, [r4, #0x20] ldr r1, [r1] ldr r1, [r1, #4] add r0, r0, r1 str r0, [r4, #0x28] ldr r1, [r4, #0x20] ldr r0, [sp, #0x8c] ldr r1, [r1] ldr r1, [r1, #8] add r0, r0, r1 str r0, [r4, #0x2c] ldr r1, [r4, #0x20] ldr r0, [sp, #0x90] ldr r1, [r1] ldr r1, [r1, #0xc] add r0, r0, r1 str r0, [r4, #0x30] _02216388: ldr r0, [sp, #0xa8] cmp r0, #0 beq _022163C6 cmp r0, #1 beq _02216398 cmp r0, #2 beq _022163B0 b _022163C6 _02216398: ldr r0, [sp, #0xac] ldr r3, [sp, #0xc] str r0, [sp] str r5, [sp, #4] add r0, sp, #0x88 str r0, [sp, #8] add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 bl MOD08_02215F80 b _022163C6 _022163B0: ldr r0, [sp, #0xac] ldr r3, [sp, #0xc] str r0, [sp] str r5, [sp, #4] add r0, sp, #0x88 str r0, [sp, #8] add r0, r6, #0 add r1, r4, #0 add r2, r7, #0 bl MOD08_02216050 _022163C6: add r1, sp, #0x14 ldrh r2, [r1] add r0, r4, #0 add r0, #0x50 strh r2, [r0] add r0, r4, #0 ldrh r2, [r1, #2] add r0, #0x52 add r4, #0x54 strh r2, [r0] ldrh r0, [r1, #4] strh r0, [r4] add sp, #0x94 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_022163E4 MOD08_022163E4: ; 0x022163E4 push {r4, r5, r6, r7, lr} sub sp, #0xc add r7, r0, #0 add r5, r1, #0 add r4, r2, #0 bl FUN_0201341C add r6, r0, #0 bl MOD08_02212458 str r0, [sp, #8] add r0, r6, #0 bl MOD08_02212460 add r3, r0, #0 str r5, [sp] ldr r2, [sp, #8] add r0, r6, #0 add r1, r7, #0 str r4, [sp, #4] bl MOD08_02216120 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_02216414 MOD08_02216414: ; 0x02216414 ldr r3, _0221641C ; =MOD08_022163E4 mov r1, #0 add r2, r1, #0 bx r3 .align 2, 0 _0221641C: .word MOD08_022163E4 thumb_func_start MOD08_02216420 MOD08_02216420: ; 0x02216420 ldr r3, _02216428 ; =MOD08_022163E4 mov r1, #1 add r2, r1, #0 bx r3 .align 2, 0 _02216428: .word MOD08_022163E4 thumb_func_start MOD08_0221642C MOD08_0221642C: ; 0x0221642C ldr r3, _02216434 ; =MOD08_022163E4 mov r1, #1 mov r2, #2 bx r3 .align 2, 0 _02216434: .word MOD08_022163E4 thumb_func_start MOD08_02216438 MOD08_02216438: ; 0x02216438 ldr r3, _02216440 ; =MOD08_022163E4 mov r1, #1 mov r2, #3 bx r3 .align 2, 0 _02216440: .word MOD08_022163E4 thumb_func_start MOD08_02216444 MOD08_02216444: ; 0x02216444 ldr r3, _0221644C ; =MOD08_022163E4 mov r1, #1 mov r2, #4 bx r3 .align 2, 0 _0221644C: .word MOD08_022163E4 thumb_func_start MOD08_02216450 MOD08_02216450: ; 0x02216450 ldr r3, _02216458 ; =MOD08_022163E4 mov r1, #1 mov r2, #5 bx r3 .align 2, 0 _02216458: .word MOD08_022163E4 thumb_func_start MOD08_0221645C MOD08_0221645C: ; 0x0221645C ldr r3, _02216464 ; =MOD08_022163E4 mov r1, #2 mov r2, #1 bx r3 .align 2, 0 _02216464: .word MOD08_022163E4 thumb_func_start MOD08_02216468 MOD08_02216468: ; 0x02216468 ldr r3, _02216470 ; =MOD08_022163E4 mov r1, #2 add r2, r1, #0 bx r3 .align 2, 0 _02216470: .word MOD08_022163E4 thumb_func_start MOD08_02216474 MOD08_02216474: ; 0x02216474 ldr r3, _0221647C ; =MOD08_022163E4 mov r1, #2 mov r2, #3 bx r3 .align 2, 0 _0221647C: .word MOD08_022163E4 thumb_func_start MOD08_02216480 MOD08_02216480: ; 0x02216480 ldr r3, _02216488 ; =MOD08_022163E4 mov r1, #2 mov r2, #4 bx r3 .align 2, 0 _02216488: .word MOD08_022163E4 thumb_func_start MOD08_0221648C MOD08_0221648C: ; 0x0221648C ldr r3, _02216494 ; =MOD08_022163E4 mov r1, #2 mov r2, #5 bx r3 .align 2, 0 _02216494: .word MOD08_022163E4 thumb_func_start MOD08_02216498 MOD08_02216498: ; 0x02216498 push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 bl FUN_0201341C add r4, r0, #0 bl MOD08_02212458 add r6, r0, #0 add r0, r4, #0 bl MOD08_02212460 add r2, r0, #0 mov r0, #0 str r0, [sp] str r0, [sp, #4] add r0, r4, #0 add r1, r5, #0 add r3, r6, #0 bl MOD08_02216120 add sp, #8 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_022164C8 MOD08_022164C8: ; 0x022164C8 push {r3, r4, r5, lr} add r4, r1, #0 ldr r2, [r4, #0x14] add r5, r0, #0 cmp r2, #0 beq _022164D8 bl MOD08_0221658C _022164D8: ldr r0, [r4, #0x18] cmp r0, #0 beq _022164E6 add r0, r5, #0 add r1, r4, #0 bl MOD08_022168C0 _022164E6: ldr r0, [r4, #0x1c] cmp r0, #0 beq _022164F4 add r0, r5, #0 add r1, r4, #0 bl MOD08_02217124 _022164F4: add r0, r5, #0 add r1, r4, #0 bl MOD08_02217158 ldr r0, [r4, #0xc] cmp r0, #0 beq _0221650A add r0, r5, #0 add r1, r4, #0 bl MOD08_02217168 _0221650A: pop {r3, r4, r5, pc} thumb_func_start MOD08_0221650C MOD08_0221650C: ; 0x0221650C push {r3, r4, r5, r6, r7, lr} ldr r4, [r1] add r6, r2, #0 add r0, r4, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r4, #0 bl MOD08_02227470 cmp r0, #3 beq _02216534 mov r5, #1 b _02216536 _02216534: mov r5, #0 _02216536: add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222765C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0221654C MOD08_0221654C: ; 0x0221654C push {r3, r4, r5, r6, r7, lr} ldr r4, [r1] add r6, r2, #0 add r0, r4, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r4, #0 bl MOD08_02227470 cmp r0, #3 beq _02216574 mov r5, #1 b _02216576 _02216574: mov r5, #0 _02216576: add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222765C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0221658C MOD08_0221658C: ; 0x0221658C push {r3, r4, r5, r6, lr} sub sp, #0xbc add r4, r1, #0 ldr r2, [r4, #0x14] add r5, r0, #0 cmp r2, #0x64 bgt _022165F4 blt _0221659E b _02216768 _0221659E: cmp r2, #0x22 bhi _022165FA add r3, r2, r2 add r3, pc ldrh r3, [r3, #6] lsl r3, r3, #0x10 asr r3, r3, #0x10 add pc, r3 _022165AE: ; jump table .short _02216872 - _022165AE - 2 ; case 0 .short _022165FC - _022165AE - 2 ; case 1 .short _02216608 - _022165AE - 2 ; case 2 .short _02216704 - _022165AE - 2 ; case 3 .short _02216740 - _022165AE - 2 ; case 4 .short _02216754 - _022165AE - 2 ; case 5 .short _02216614 - _022165AE - 2 ; case 6 .short _02216620 - _022165AE - 2 ; case 7 .short _022166EC - _022165AE - 2 ; case 8 .short _022166F8 - _022165AE - 2 ; case 9 .short _0221662C - _022165AE - 2 ; case 10 .short _02216638 - _022165AE - 2 ; case 11 .short _02216794 - _022165AE - 2 ; case 12 .short _022167A4 - _022165AE - 2 ; case 13 .short _02216644 - _022165AE - 2 ; case 14 .short _02216650 - _022165AE - 2 ; case 15 .short _0221665C - _022165AE - 2 ; case 16 .short _02216668 - _022165AE - 2 ; case 17 .short _02216674 - _022165AE - 2 ; case 18 .short _02216680 - _022165AE - 2 ; case 19 .short _0221668C - _022165AE - 2 ; case 20 .short _02216698 - _022165AE - 2 ; case 21 .short _022166A4 - _022165AE - 2 ; case 22 .short _022166B0 - _022165AE - 2 ; case 23 .short _022166BC - _022165AE - 2 ; case 24 .short _022166C8 - _022165AE - 2 ; case 25 .short _022166D4 - _022165AE - 2 ; case 26 .short _022166E0 - _022165AE - 2 ; case 27 .short _022167B4 - _022165AE - 2 ; case 28 .short _02216872 - _022165AE - 2 ; case 29 .short _02216804 - _022165AE - 2 ; case 30 .short _022167DA - _022165AE - 2 ; case 31 .short _0221683C - _022165AE - 2 ; case 32 .short _022167C0 - _022165AE - 2 ; case 33 .short _022167CE - _022165AE - 2 ; case 34 _022165F4: cmp r2, #0x65 bne _022165FA b _0221677E _022165FA: b _02216872 _022165FC: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222771C b _02216872 _02216608: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222771C b _02216872 _02216614: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222774C b _02216872 _02216620: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222774C b _02216872 _0221662C: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222777C b _02216872 _02216638: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222777C b _02216872 _02216644: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_022277AC b _02216872 _02216650: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_022277AC b _02216872 _0221665C: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_022277DC b _02216872 _02216668: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_022277DC b _02216872 _02216674: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222780C b _02216872 _02216680: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222780C b _02216872 _0221668C: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222783C b _02216872 _02216698: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222783C b _02216872 _022166A4: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222786C b _02216872 _022166B0: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222786C b _02216872 _022166BC: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222789C b _02216872 _022166C8: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222789C b _02216872 _022166D4: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_022278CC b _02216872 _022166E0: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_022278CC b _02216872 _022166EC: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222792C b _02216872 _022166F8: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222792C b _02216872 _02216704: ldr r0, [r4] add r1, sp, #0xa0 mov r2, #4 bl MOD08_02215434 add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #0xa4] str r0, [sp, #0xb0] ldr r0, [sp, #0xa8] str r0, [sp, #0xb4] ldr r0, [sp, #0xac] str r0, [sp, #0xb8] ldr r0, [sp, #0xa0] cmp r0, #1 bne _0221672C mov r0, #1 strb r0, [r4, #8] _0221672C: mov r0, #8 ldrsb r1, [r4, r0] ldr r2, [sp, #0xb0] mul r1, r2 str r1, [sp, #0xb0] ldrsb r0, [r4, r0] ldr r1, [sp, #0xb4] mul r0, r1 str r0, [sp, #0xb4] b _02216872 _02216740: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222771C add r0, r4, #0 add r1, sp, #0xb0 bl MOD08_0221734C b _02216872 _02216754: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222771C add r0, r4, #0 add r1, sp, #0xb0 bl MOD08_0221734C b _02216872 _02216768: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222771C ldr r1, [r4, #0x24] add r0, r4, #0 add r2, sp, #0xb0 bl MOD08_022172C0 b _02216872 _0221677E: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0xb0 bl MOD08_0222771C ldr r1, [r4, #0x28] add r0, r4, #0 add r2, sp, #0xb0 bl MOD08_022172C0 b _02216872 _02216794: add r2, sp, #0xb0 bl MOD08_0221654C add r0, r4, #0 add r1, sp, #0xb0 bl MOD08_0221734C b _02216872 _022167A4: add r2, sp, #0xb0 bl MOD08_0221650C add r0, r4, #0 add r1, sp, #0xb0 bl MOD08_0221734C b _02216872 _022167B4: ldr r0, _022168A8 ; =0x00002CE0 str r0, [sp, #0xb0] mov r0, #0 str r0, [sp, #0xb4] str r0, [sp, #0xb8] b _02216872 _022167C0: ldr r0, _022168AC ; =0xFFFFEC78 str r0, [sp, #0xb0] ldr r0, _022168B0 ; =0xFFFFE890 str r0, [sp, #0xb4] mov r0, #0 str r0, [sp, #0xb8] b _02216872 _022167CE: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0xb0 bl MOD08_0222771C b _02216872 _022167DA: ldr r6, _022168B4 ; =0x0222B344 add r3, sp, #0x70 mov r2, #6 _022167E0: ldmia r6!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _022167E0 ldr r0, [r4] ldr r1, [r4, #0x24] bl MOD08_02227468 lsl r1, r0, #3 add r0, sp, #0x70 ldr r0, [r0, r1] str r0, [sp, #0xb0] add r0, sp, #0x74 ldr r0, [r0, r1] str r0, [sp, #0xb4] mov r0, #0 str r0, [sp, #0xb8] b _02216872 _02216804: ldr r6, _022168B8 ; =0x0222B3DC add r3, sp, #0x38 mov r2, #7 _0221680A: ldmia r6!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _0221680A ldr r0, [r4] bl MOD08_02212004 cmp r0, #1 bne _02216820 mov r0, #6 b _02216828 _02216820: ldr r0, [r4] ldr r1, [r4, #0x24] bl MOD08_02227468 _02216828: lsl r1, r0, #3 add r0, sp, #0x38 ldr r0, [r0, r1] str r0, [sp, #0xb0] add r0, sp, #0x3c ldr r0, [r0, r1] str r0, [sp, #0xb4] mov r0, #0 str r0, [sp, #0xb8] b _02216872 _0221683C: ldr r6, _022168BC ; =0x0222B3A4 add r3, sp, #0 mov r2, #7 _02216842: ldmia r6!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _02216842 ldr r0, [r4] bl MOD08_02212004 cmp r0, #1 bne _02216858 mov r0, #6 b _02216860 _02216858: ldr r0, [r4] ldr r1, [r4, #0x24] bl MOD08_02227468 _02216860: lsl r1, r0, #3 add r0, sp, #0 ldr r0, [r0, r1] str r0, [sp, #0xb0] add r0, sp, #4 ldr r0, [r0, r1] str r0, [sp, #0xb4] mov r0, #0 str r0, [sp, #0xb8] _02216872: add r2, sp, #0xb0 ldmia r2!, {r0, r1} add r4, #0x2c stmia r4!, {r0, r1} ldr r0, [r2] str r0, [r4] ldr r0, [r5, #0x20] ldr r1, [sp, #0xb0] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #0xb4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #0xb8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] add sp, #0xbc pop {r3, r4, r5, r6, pc} nop _022168A8: .word 0x00002CE0 _022168AC: .word 0xFFFFEC78 _022168B0: .word 0xFFFFE890 _022168B4: .word 0x0222B344 _022168B8: .word 0x0222B3DC _022168BC: .word 0x0222B3A4 thumb_func_start MOD08_022168C0 MOD08_022168C0: ; 0x022168C0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x148 str r0, [sp] str r1, [sp, #4] ldr r0, [r1] ldr r1, [r1, #0x24] bl MOD08_02227468 str r0, [sp, #0x18] ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x28] bl MOD08_02227468 str r0, [sp, #0x14] ldr r0, [sp, #4] ldr r0, [r0, #0x18] cmp r0, #0x1a bls _022168EC bl _022170F2 _022168EC: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022168F8: ; jump table .short _0221692E - _022168F8 - 2 ; case 0 .short _0221693A - _022168F8 - 2 ; case 1 .short _0221693A - _022168F8 - 2 ; case 2 .short _02217024 - _022168F8 - 2 ; case 3 .short _022169A2 - _022168F8 - 2 ; case 4 .short _02216A5C - _022168F8 - 2 ; case 5 .short _02216D90 - _022168F8 - 2 ; case 6 .short _02216D90 - _022168F8 - 2 ; case 7 .short _02216B16 - _022168F8 - 2 ; case 8 .short _02216B16 - _022168F8 - 2 ; case 9 .short _02216B7E - _022168F8 - 2 ; case 10 .short _02216B7E - _022168F8 - 2 ; case 11 .short _02216BCC - _022168F8 - 2 ; case 12 .short _02216BCC - _022168F8 - 2 ; case 13 .short _02216C14 - _022168F8 - 2 ; case 14 .short _02216C14 - _022168F8 - 2 ; case 15 .short _02216C5C - _022168F8 - 2 ; case 16 .short _02216C5C - _022168F8 - 2 ; case 17 .short _02216D00 - _022168F8 - 2 ; case 18 .short _02216D00 - _022168F8 - 2 ; case 19 .short _02216D48 - _022168F8 - 2 ; case 20 .short _02216D48 - _022168F8 - 2 ; case 21 .short _02217038 - _022168F8 - 2 ; case 22 .short _022170F2 - _022168F8 - 2 ; case 23 .short _022170C4 - _022168F8 - 2 ; case 24 .short _02217080 - _022168F8 - 2 ; case 25 .short _02217092 - _022168F8 - 2 ; case 26 _0221692E: mov r1, #0 add r0, sp, #0x20 strh r1, [r0] strh r1, [r0, #2] strh r1, [r0, #4] b _022170F2 _0221693A: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216974 ldr r0, [sp, #4] ldr r0, [r0, #0x10] cmp r0, #2 add r0, sp, #0x20 bne _02216962 ldr r1, _02216CA4 ; =0xFFFFF2F8 strh r1, [r0] mov r1, #0x73 lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216962: mov r1, #0x92 lsl r1, r1, #4 strh r1, [r0] ldr r1, _02216CA8 ; =0xFFFFFA60 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216974: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CAC ; =0x0222BB44 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CB0 ; =0x0222BB48 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CB4 ; =0x0222BB4C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _022169A2: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _022169DE ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CAC ; =0x0222BB44 add r2, r2, r0 ldr r2, [r1, r2] neg r3, r2 add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CB0 ; =0x0222BB48 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CB4 ; =0x0222BB4C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _022169DE: ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x24] bl MOD08_02227470 add r4, r0, #0 ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x28] bl MOD08_02227470 cmp r4, r0 bne _02216A2A ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CAC ; =0x0222BB44 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CB0 ; =0x0222BB48 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CB4 ; =0x0222BB4C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _02216A2A: ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x24] bl MOD08_02227470 cmp r0, #3 add r0, sp, #0x20 bne _02216A4E mov r1, #0x3b lsl r1, r1, #6 strh r1, [r0] mov r1, #0x21 lsl r1, r1, #6 strh r1, [r0, #2] ldr r1, _02216CB8 ; =0x000005FC strh r1, [r0, #4] b _022170F2 _02216A4E: ldr r1, _02216CBC ; =0xFFFFEF7C strh r1, [r0] ldr r1, _02216CC0 ; =0xFFFFF558 strh r1, [r0, #2] ldr r1, _02216CB8 ; =0x000005FC strh r1, [r0, #4] b _022170F2 _02216A5C: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216A98 ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CAC ; =0x0222BB44 add r2, r2, r0 ldr r2, [r1, r2] neg r3, r2 add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CB0 ; =0x0222BB48 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CB4 ; =0x0222BB4C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _02216A98: ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x24] bl MOD08_02227470 add r4, r0, #0 ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x28] bl MOD08_02227470 cmp r4, r0 bne _02216AE4 ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CAC ; =0x0222BB44 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CB0 ; =0x0222BB48 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CB4 ; =0x0222BB4C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _02216AE4: ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x24] bl MOD08_02227470 cmp r0, #3 add r0, sp, #0x20 bne _02216B08 mov r1, #0x3b lsl r1, r1, #6 strh r1, [r0] mov r1, #0x21 lsl r1, r1, #6 strh r1, [r0, #2] ldr r1, _02216CB8 ; =0x000005FC strh r1, [r0, #4] b _022170F2 _02216B08: ldr r1, _02216CBC ; =0xFFFFEF7C strh r1, [r0] ldr r1, _02216CC0 ; =0xFFFFF558 strh r1, [r0, #2] ldr r1, _02216CB8 ; =0x000005FC strh r1, [r0, #4] b _022170F2 _02216B16: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216B50 ldr r0, [sp, #4] ldr r0, [r0, #0x10] cmp r0, #2 add r0, sp, #0x20 bne _02216B3E ldr r1, _02216CC4 ; =0xFFFFF6E0 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216B3E: mov r1, #0x92 lsl r1, r1, #4 strh r1, [r0] ldr r1, _02216CA8 ; =0xFFFFFA60 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216B50: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CC8 ; =0x0222B484 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CCC ; =0x0222B488 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CD0 ; =0x0222B48C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _02216B7E: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216B9E ldr r1, _02216CC4 ; =0xFFFFF6E0 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216B9E: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CD4 ; =0x0222B634 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CCC ; =0x0222B488 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CD0 ; =0x0222B48C add r0, r3, r0 ldr r1, [r1, r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 strh r0, [r2, #4] b _022170F2 _02216BCC: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216BEC ldr r1, _02216CD8 ; =0xFFFFF488 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216BEC: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CDC ; =0x0222B994 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CE0 ; =0x0222B998 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CE4 ; =0x0222B99C add r0, r3, r0 ldr r0, [r1, r0] strh r0, [r2, #4] b _022170F2 _02216C14: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216C34 ldr r1, _02216CC4 ; =0xFFFFF6E0 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216C34: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CE8 ; =0x0222BCF4 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CEC ; =0x0222BCF8 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CF0 ; =0x0222BCFC add r0, r3, r0 ldr r0, [r1, r0] strh r0, [r2, #4] b _022170F2 _02216C5C: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216C7C ldr r1, _02216CC4 ; =0xFFFFF6E0 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216C7C: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02216CF4 ; =0x0222B7E4 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _02216CF8 ; =0x0222B7E8 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02216CFC ; =0x0222B7EC add r0, r3, r0 ldr r0, [r1, r0] strh r0, [r2, #4] b _022170F2 .align 2, 0 _02216CA4: .word 0xFFFFF2F8 _02216CA8: .word 0xFFFFFA60 _02216CAC: .word 0x0222BB44 _02216CB0: .word 0x0222BB48 _02216CB4: .word 0x0222BB4C _02216CB8: .word 0x000005FC _02216CBC: .word 0xFFFFEF7C _02216CC0: .word 0xFFFFF558 _02216CC4: .word 0xFFFFF6E0 _02216CC8: .word 0x0222B484 _02216CCC: .word 0x0222B488 _02216CD0: .word 0x0222B48C _02216CD4: .word 0x0222B634 _02216CD8: .word 0xFFFFF488 _02216CDC: .word 0x0222B994 _02216CE0: .word 0x0222B998 _02216CE4: .word 0x0222B99C _02216CE8: .word 0x0222BCF4 _02216CEC: .word 0x0222BCF8 _02216CF0: .word 0x0222BCFC _02216CF4: .word 0x0222B7E4 _02216CF8: .word 0x0222B7E8 _02216CFC: .word 0x0222B7EC _02216D00: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216D20 ldr r1, _02217044 ; =0xFFFFF6E0 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216D20: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02217048 ; =0x0222BEA4 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _0221704C ; =0x0222BEA8 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02217050 ; =0x0222BEAC add r0, r3, r0 ldr r0, [r1, r0] strh r0, [r2, #4] b _022170F2 _02216D48: ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216D68 ldr r1, _02217054 ; =0xFFFFEF10 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x5a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x2e lsl r1, r1, #4 strh r1, [r0, #4] b _022170F2 _02216D68: ldr r0, [sp, #0x14] mov r1, #0xc mul r1, r0 ldr r2, [sp, #0x18] mov r0, #0x48 mul r0, r2 ldr r2, _02217058 ; =0x0222C054 add r2, r2, r0 ldr r3, [r1, r2] add r2, sp, #0x20 strh r3, [r2] ldr r3, _0221705C ; =0x0222C058 add r3, r3, r0 ldr r3, [r1, r3] strh r3, [r2, #2] ldr r3, _02217060 ; =0x0222C05C add r0, r3, r0 ldr r0, [r1, r0] strh r0, [r2, #4] b _022170F2 _02216D90: ldr r4, _02217064 ; =0x0222B414 add r3, sp, #0xd8 mov r2, #0xe _02216D96: ldmia r4!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _02216D96 ldr r3, _02217068 ; =0x0222B334 add r2, sp, #0x58 ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} add r1, sp, #0xc8 mov r0, #0 str r1, [sp, #0xc] add r1, sp, #0xb8 mov ip, r0 str r1, [sp, #0x1c] add r0, sp, #0xd8 add r7, sp, #0xa8 add r6, sp, #0x98 add r5, sp, #0x88 add r1, sp, #0x78 add r2, sp, #0x68 _02216DC2: ldr r4, [r0] ldr r3, [sp, #0xc] str r4, [r3] ldr r4, [r0, #0x10] ldr r3, [sp, #0x1c] str r4, [r3] ldr r3, [r0, #0x20] stmia r7!, {r3} ldr r3, [r0, #0x30] stmia r6!, {r3} ldr r3, [r0, #0x40] stmia r5!, {r3} ldr r3, [r0, #0x50] stmia r1!, {r3} ldr r3, [r0, #0x60] add r0, r0, #4 stmia r2!, {r3} ldr r3, [sp, #0xc] add r3, r3, #4 str r3, [sp, #0xc] ldr r3, [sp, #0x1c] add r3, r3, #4 str r3, [sp, #0x1c] mov r3, ip add r3, r3, #1 mov ip, r3 cmp r3, #4 blt _02216DC2 ldr r0, [sp, #4] ldr r0, [r0] bl MOD08_02212004 cmp r0, #1 bne _02216E3E mov r0, #0 str r0, [sp, #8] add r0, sp, #0x58 str r0, [sp, #0x10] add r7, sp, #0xc8 add r6, sp, #0xb8 add r0, sp, #0xa8 add r1, sp, #0x98 add r2, sp, #0x88 add r3, sp, #0x78 add r4, sp, #0x68 _02216E1C: ldr r5, [sp, #0x10] ldr r5, [r5] stmia r7!, {r5} stmia r6!, {r5} stmia r0!, {r5} stmia r1!, {r5} stmia r2!, {r5} stmia r3!, {r5} stmia r4!, {r5} ldr r5, [sp, #0x10] add r5, r5, #4 str r5, [sp, #0x10] ldr r5, [sp, #8] add r5, r5, #1 str r5, [sp, #8] cmp r5, #4 blt _02216E1C _02216E3E: ldr r0, [sp, #0x18] cmp r0, #5 bhi _02216E5C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02216E50: ; jump table .short _02216E5C - _02216E50 - 2 ; case 0 .short _02216E6C - _02216E50 - 2 ; case 1 .short _02216E98 - _02216E50 - 2 ; case 2 .short _02216ED0 - _02216E50 - 2 ; case 3 .short _02216F5E - _02216E50 - 2 ; case 4 .short _02216F96 - _02216E50 - 2 ; case 5 _02216E5C: ldr r1, [sp, #0xc8] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0xcc] strh r1, [r0, #2] ldr r1, [sp, #0xd0] strh r1, [r0, #4] b _022170F2 _02216E6C: ldr r0, [sp, #0xd4] cmp r0, #1 bne _02216E82 ldr r1, [sp, #0xc8] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0xcc] strh r1, [r0, #2] ldr r1, [sp, #0xd0] strh r1, [r0, #4] b _022170F2 _02216E82: ldr r0, [sp, #0xc8] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0xcc] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0xd0] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02216E98: ldr r0, [sp, #0x14] cmp r0, #3 bne _02216EAE ldr r1, [sp, #0xb8] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0xbc] strh r1, [r0, #2] ldr r1, [sp, #0xc0] strh r1, [r0, #4] b _022170F2 _02216EAE: cmp r0, #5 add r0, sp, #0x20 bne _02216EC2 ldr r1, [sp, #0x98] strh r1, [r0] ldr r1, [sp, #0x9c] strh r1, [r0, #2] ldr r1, [sp, #0xa0] strh r1, [r0, #4] b _022170F2 _02216EC2: ldr r1, [sp, #0xa8] strh r1, [r0] ldr r1, [sp, #0xac] strh r1, [r0, #2] ldr r1, [sp, #0xb0] strh r1, [r0, #4] b _022170F2 _02216ED0: ldr r0, [sp, #0x14] cmp r0, #2 bne _02216F02 ldr r0, [sp, #0xc4] cmp r0, #1 bne _02216EEC ldr r1, [sp, #0xb8] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0xbc] strh r1, [r0, #2] ldr r1, [sp, #0xc0] strh r1, [r0, #4] b _022170F2 _02216EEC: ldr r0, [sp, #0xb8] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0xbc] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0xc0] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02216F02: cmp r0, #5 bne _02216F32 ldr r0, [sp, #0xb4] cmp r0, #1 bne _02216F22 ldr r0, [sp, #0x88] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x8c] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x90] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02216F22: ldr r1, [sp, #0x88] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x8c] strh r1, [r0, #2] ldr r1, [sp, #0x90] strh r1, [r0, #4] b _022170F2 _02216F32: ldr r0, [sp, #0x84] cmp r0, #1 bne _02216F48 ldr r1, [sp, #0x78] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x7c] strh r1, [r0, #2] ldr r1, [sp, #0x80] strh r1, [r0, #4] b _022170F2 _02216F48: ldr r0, [sp, #0x78] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x7c] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x80] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02216F5E: ldr r0, [sp, #0x14] cmp r0, #3 bne _02216F74 ldr r1, [sp, #0x78] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x7c] strh r1, [r0, #2] ldr r1, [sp, #0x80] strh r1, [r0, #4] b _022170F2 _02216F74: cmp r0, #5 add r0, sp, #0x20 bne _02216F88 ldr r1, [sp, #0x68] strh r1, [r0] ldr r1, [sp, #0x6c] strh r1, [r0, #2] ldr r1, [sp, #0x70] strh r1, [r0, #4] b _022170F2 _02216F88: ldr r1, [sp, #0x88] strh r1, [r0] ldr r1, [sp, #0x8c] strh r1, [r0, #2] ldr r1, [sp, #0x90] strh r1, [r0, #4] b _022170F2 _02216F96: ldr r0, [sp, #0x14] cmp r0, #3 bne _02216FC8 ldr r0, [sp, #0xc4] cmp r0, #1 bne _02216FB2 ldr r1, [sp, #0x88] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x8c] strh r1, [r0, #2] ldr r1, [sp, #0x90] strh r1, [r0, #4] b _022170F2 _02216FB2: ldr r0, [sp, #0x88] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x8c] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x90] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02216FC8: cmp r0, #2 bne _02216FF8 ldr r0, [sp, #0xc4] cmp r0, #1 bne _02216FE2 ldr r1, [sp, #0x98] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x9c] strh r1, [r0, #2] ldr r1, [sp, #0xa0] strh r1, [r0, #4] b _022170F2 _02216FE2: ldr r0, [sp, #0x98] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x9c] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0xa0] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02216FF8: ldr r0, [sp, #0xc4] cmp r0, #1 bne _0221700E ldr r1, [sp, #0x68] add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x6c] strh r1, [r0, #2] ldr r1, [sp, #0x70] strh r1, [r0, #4] b _022170F2 _0221700E: ldr r0, [sp, #0x68] neg r1, r0 add r0, sp, #0x20 strh r1, [r0] ldr r1, [sp, #0x6c] neg r1, r1 strh r1, [r0, #2] ldr r1, [sp, #0x70] neg r1, r1 strh r1, [r0, #4] b _022170F2 _02217024: ldr r1, _0221706C ; =0xFFFFFCE0 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x4b lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0x7d lsl r1, r1, #2 strh r1, [r0, #4] b _022170F2 _02217038: ldr r1, _02217070 ; =0xFFFFF2AE add r0, sp, #0x20 strh r1, [r0] ldr r1, _02217074 ; =0xFFFFF5AC b _02217078 nop _02217044: .word 0xFFFFF6E0 _02217048: .word 0x0222BEA4 _0221704C: .word 0x0222BEA8 _02217050: .word 0x0222BEAC _02217054: .word 0xFFFFEF10 _02217058: .word 0x0222C054 _0221705C: .word 0x0222C058 _02217060: .word 0x0222C05C _02217064: .word 0x0222B414 _02217068: .word 0x0222B334 _0221706C: .word 0xFFFFFCE0 _02217070: .word 0xFFFFF2AE _02217074: .word 0xFFFFF5AC _02217078: strh r1, [r0, #2] mov r1, #0 strh r1, [r0, #4] b _022170F2 _02217080: ldr r1, _02217114 ; =0xFFFFF290 add r0, sp, #0x20 strh r1, [r0] mov r1, #0x7a lsl r1, r1, #4 strh r1, [r0, #2] mov r1, #0 strh r1, [r0, #4] b _022170F2 _02217092: ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x24] bl MOD08_02227470 cmp r0, #3 add r0, sp, #0x20 bne _022170B6 mov r1, #0x3b lsl r1, r1, #6 strh r1, [r0] mov r1, #0x21 lsl r1, r1, #6 strh r1, [r0, #2] mov r1, #0 strh r1, [r0, #4] b _022170F2 _022170B6: ldr r1, _02217118 ; =0xFFFFE890 strh r1, [r0] ldr r1, _0221711C ; =0xFFFFF768 strh r1, [r0, #2] mov r1, #0 strh r1, [r0, #4] b _022170F2 _022170C4: ldr r4, _02217120 ; =0x0222B374 add r3, sp, #0x28 mov r2, #6 _022170CA: ldmia r4!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _022170CA ldr r0, [sp, #4] ldr r1, [sp, #4] ldr r0, [r0] ldr r1, [r1, #0x24] bl MOD08_02227468 lsl r2, r0, #3 add r0, sp, #0x28 ldr r1, [r0, r2] add r0, sp, #0x20 strh r1, [r0] add r1, sp, #0x2c ldr r1, [r1, r2] strh r1, [r0, #2] mov r1, #0 strh r1, [r0, #4] _022170F2: add r1, sp, #0x20 ldr r0, [sp] ldrh r2, [r1] add r0, #0x50 strh r2, [r0] ldr r0, [sp] ldrh r2, [r1, #2] add r0, #0x52 strh r2, [r0] ldr r0, [sp] ldrh r1, [r1, #4] add r0, #0x54 str r0, [sp] strh r1, [r0] add sp, #0x148 pop {r3, r4, r5, r6, r7, pc} nop _02217114: .word 0xFFFFF290 _02217118: .word 0xFFFFE890 _0221711C: .word 0xFFFFF768 _02217120: .word 0x0222B374 thumb_func_start MOD08_02217124 MOD08_02217124: ; 0x02217124 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 add r5, r1, #0 bl MOD08_022178CC add r6, r0, #0 mov r4, #0 cmp r6, #0 ble _02217154 _02217136: add r0, r4, #0 bl MOD08_022178A4 ldr r1, [r5, #0x1c] and r1, r0 cmp r0, r1 bne _0221714E add r0, r4, #0 add r1, r7, #0 add r2, r5, #0 bl MOD08_0221788C _0221714E: add r4, r4, #1 cmp r4, r6 blt _02217136 _02217154: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02217158 MOD08_02217158: ; 0x02217158 add r3, r0, #0 add r2, r1, #0 add r1, r3, #0 ldr r3, _02217164 ; =MOD08_02217B04 ldr r0, [r2, #0x20] bx r3 .align 2, 0 _02217164: .word MOD08_02217B04 thumb_func_start MOD08_02217168 MOD08_02217168: ; 0x02217168 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4] ldr r1, [r4, #0x24] bl MOD08_02227468 ldr r0, [r4] ldr r1, [r4, #0x28] bl MOD08_02227468 ldr r1, [r4, #0xc] cmp r1, #3 bhi _022171B0 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02217190: ; jump table .short _022171B0 - _02217190 - 2 ; case 0 .short _02217198 - _02217190 - 2 ; case 1 .short _022171A6 - _02217190 - 2 ; case 2 .short _022171B0 - _02217190 - 2 ; case 3 _02217198: cmp r0, #0 bne _022171A2 mov r5, #1 lsl r5, r5, #8 b _022171B0 _022171A2: ldr r5, _022171C4 ; =0xFFFFEC00 b _022171B0 _022171A6: cmp r0, #0 bne _022171AE mov r5, #0 b _022171B0 _022171AE: ldr r5, _022171C8 ; =0xFFFFEB00 _022171B0: ldr r0, [r4, #4] bl FUN_02013448 ldr r0, [r6, #0x20] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r5, r0 str r0, [r6, #0x30] pop {r4, r5, r6, pc} nop _022171C4: .word 0xFFFFEC00 _022171C8: .word 0xFFFFEB00 thumb_func_start MOD08_022171CC MOD08_022171CC: ; 0x022171CC push {r4, r5, r6, lr} add r6, r0, #0 bl FUN_0201341C add r5, r0, #0 bl MOD08_02212014 mov r1, #0x38 bl FUN_02016998 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212468 str r0, [r4, #4] add r1, r4, #0 ldr r0, [r4] add r1, #0xc mov r2, #6 bl MOD08_02215434 ldr r0, [r4, #0x10] cmp r0, #4 bhi _02217214 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221720A: ; jump table .short _02217214 - _0221720A - 2 ; case 0 .short _02217226 - _0221720A - 2 ; case 1 .short _02217238 - _0221720A - 2 ; case 2 .short _0221724A - _0221720A - 2 ; case 3 .short _0221725C - _0221720A - 2 ; case 4 _02217214: ldr r0, [r4] bl MOD08_02212458 str r0, [r4, #0x24] ldr r0, [r4] bl MOD08_02212460 str r0, [r4, #0x28] b _0221726C _02217226: ldr r0, [r4] bl MOD08_02212460 str r0, [r4, #0x24] ldr r0, [r4] bl MOD08_02212458 str r0, [r4, #0x28] b _0221726C _02217238: ldr r0, [r4] bl MOD08_02212458 str r0, [r4, #0x24] ldr r0, [r4] bl MOD08_02212460 str r0, [r4, #0x28] b _0221726C _0221724A: ldr r0, [r4] bl MOD08_02212460 str r0, [r4, #0x24] ldr r0, [r4] bl MOD08_02212458 str r0, [r4, #0x28] b _0221726C _0221725C: ldr r0, [r4] bl MOD08_02212458 str r0, [r4, #0x24] ldr r0, [r4] bl MOD08_02212460 str r0, [r4, #0x28] _0221726C: add r0, r6, #0 add r1, r4, #0 bl MOD08_022164C8 add r0, r4, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} thumb_func_start MOD08_0221727C MOD08_0221727C: ; 0x0221727C push {r4, r5, r6, lr} add r6, r0, #0 ldr r0, [r6] ldr r1, [r6, #0x24] mov r4, #1 bl MOD08_02227468 add r5, r0, #0 ldr r0, [r6] ldr r1, [r6, #0x28] bl MOD08_02227468 cmp r5, #5 bhi _022172BA add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022172A4: ; jump table .short _022172BA - _022172A4 - 2 ; case 0 .short _022172B0 - _022172A4 - 2 ; case 1 .short _022172BA - _022172A4 - 2 ; case 2 .short _022172B4 - _022172A4 - 2 ; case 3 .short _022172BA - _022172A4 - 2 ; case 4 .short _022172B8 - _022172A4 - 2 ; case 5 _022172B0: sub r4, r4, #2 b _022172BA _022172B4: sub r4, r4, #2 b _022172BA _022172B8: sub r4, r4, #2 _022172BA: add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_022172C0 MOD08_022172C0: ; 0x022172C0 push {r4, r5, r6, r7, lr} sub sp, #0x2c add r5, r0, #0 add r0, sp, #0x20 mov r4, #0 str r4, [r0] str r4, [r0, #4] add r6, r1, #0 add r7, r2, #0 str r4, [r0, #8] _022172D4: ldr r0, [r5] add r1, r6, #0 bl MOD08_02227468 cmp r4, r0 ldr r0, [r5] bne _022172EC add r1, sp, #0x10 mov r2, #4 bl MOD08_02215434 b _022172F4 _022172EC: add r1, sp, #0 mov r2, #4 bl MOD08_02215434 _022172F4: add r4, r4, #1 cmp r4, #6 blt _022172D4 add r0, r5, #0 bl MOD08_0221727C strb r0, [r5, #8] ldr r0, [sp, #0x14] str r0, [sp, #0x20] ldr r0, [sp, #0x18] str r0, [sp, #0x24] ldr r0, [sp, #0x1c] str r0, [sp, #0x28] ldr r0, [sp, #0x10] cmp r0, #1 bne _02217318 mov r0, #1 strb r0, [r5, #8] _02217318: mov r1, #8 ldrsb r0, [r5, r1] ldr r2, [sp, #0x20] ldr r3, [sp, #0x24] mul r0, r2 str r0, [sp, #0x20] ldrsb r2, [r5, r1] mul r2, r3 str r2, [sp, #0x24] ldrsb r1, [r5, r1] ldr r2, [sp, #0x28] mul r1, r2 str r1, [sp, #0x28] ldr r1, [r7] add r0, r1, r0 str r0, [r7] ldr r1, [r7, #4] ldr r0, [sp, #0x24] add r0, r1, r0 str r0, [r7, #4] ldr r1, [r7, #8] ldr r0, [sp, #0x28] add r0, r1, r0 str r0, [r7, #8] add sp, #0x2c pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_0221734C MOD08_0221734C: ; 0x0221734C push {r4, r5, lr} sub sp, #0x1c add r5, r0, #0 add r4, r1, #0 add r1, sp, #0 mov r0, #0 str r0, [r1] str r0, [r1, #4] str r0, [r1, #8] ldr r0, [r5] add r1, sp, #0xc mov r2, #4 bl MOD08_02215434 add r0, r5, #0 bl MOD08_0221727C strb r0, [r5, #8] ldr r0, [sp, #0x10] str r0, [sp] ldr r0, [sp, #0x14] str r0, [sp, #4] ldr r0, [sp, #0x18] str r0, [sp, #8] ldr r0, [sp, #0xc] cmp r0, #1 bne _02217386 mov r0, #1 strb r0, [r5, #8] _02217386: mov r1, #8 ldrsb r0, [r5, r1] ldr r2, [sp] ldr r3, [sp, #4] mul r0, r2 str r0, [sp] ldrsb r2, [r5, r1] mul r2, r3 str r2, [sp, #4] ldrsb r1, [r5, r1] ldr r2, [sp, #8] mul r1, r2 str r1, [sp, #8] ldr r1, [r4] add r0, r1, r0 str r0, [r4] ldr r1, [r4, #4] ldr r0, [sp, #4] add r0, r1, r0 str r0, [r4, #4] ldr r1, [r4, #8] ldr r0, [sp, #8] add r0, r1, r0 str r0, [r4, #8] add sp, #0x1c pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022173BC MOD08_022173BC: ; 0x022173BC ldr r3, _022173C4 ; =MOD08_02215434 ldr r0, [r0] mov r2, #5 bx r3 .align 2, 0 _022173C4: .word MOD08_02215434 thumb_func_start MOD08_022173C8 MOD08_022173C8: ; 0x022173C8 mov r0, #1 bx lr thumb_func_start MOD08_022173CC MOD08_022173CC: ; 0x022173CC push {r4, r5, lr} sub sp, #0x1c add r5, r0, #0 add r4, r1, #0 add r1, sp, #0 mov r0, #0 strh r0, [r1] strh r0, [r1, #2] strh r0, [r1, #4] add r0, r4, #0 add r1, sp, #8 bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #0xc] cmp r0, #1 bne _022173F8 mov r0, #1 strb r0, [r4, #8] _022173F8: ldr r0, [sp, #8] cmp r0, #3 bgt _02217416 cmp r0, #0 blt _02217482 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0221740E: ; jump table .short _0221741A - _0221740E - 2 ; case 0 .short _02217446 - _0221740E - 2 ; case 1 .short _02217482 - _0221740E - 2 ; case 2 .short _02217482 - _0221740E - 2 ; case 3 _02217416: cmp r0, #0xff b _02217482 _0221741A: add r0, r5, #0 add r1, sp, #0 bl FUN_02013514 add r2, sp, #0 mov r0, #0 mov r1, #8 ldrsh r3, [r2, r0] ldrsb r0, [r4, r1] mul r0, r3 strh r0, [r2] mov r0, #2 ldrsh r3, [r2, r0] ldrsb r0, [r4, r1] mul r0, r3 strh r0, [r2, #2] mov r0, #4 ldrsh r3, [r2, r0] ldrsb r0, [r4, r1] mul r0, r3 strh r0, [r2, #4] b _02217482 _02217446: ldr r0, [sp, #0x10] add r2, sp, #0 strh r0, [r2] ldr r0, [sp, #0x14] mov r1, #8 strh r0, [r2, #2] ldr r0, [sp, #0x18] strh r0, [r2, #4] mov r0, #0 ldrsh r3, [r2, r0] ldrsb r0, [r4, r1] mul r0, r3 strh r0, [r2] mov r0, #2 ldrsh r3, [r2, r0] ldrsb r0, [r4, r1] mul r0, r3 strh r0, [r2, #2] mov r0, #4 ldrsh r3, [r2, r0] ldrsb r0, [r4, r1] add r1, sp, #0 mul r0, r3 strh r0, [r2, #4] add r0, r5, #0 bl FUN_02013514 add sp, #0x1c mov r0, #1 pop {r4, r5, pc} _02217482: add r1, sp, #0 mov r0, #0 ldrsh r2, [r1, r0] ldr r0, [r4, #0x2c] sub r0, r2, r0 strh r0, [r1] mov r0, #2 ldrsh r2, [r1, r0] ldr r0, [r4, #0x30] sub r0, r2, r0 strh r0, [r1, #2] mov r0, #4 ldrsh r2, [r1, r0] ldr r0, [r4, #0x34] sub r0, r2, r0 strh r0, [r1, #4] add r0, r5, #0 add r1, sp, #0 bl FUN_02013514 mov r0, #1 add sp, #0x1c pop {r4, r5, pc} thumb_func_start MOD08_022174B0 MOD08_022174B0: ; 0x022174B0 mov r0, #1 bx lr thumb_func_start MOD08_022174B4 MOD08_022174B4: ; 0x022174B4 mov r0, #1 bx lr thumb_func_start MOD08_022174B8 MOD08_022174B8: ; 0x022174B8 push {r4, r5, r6, lr} sub sp, #0x20 add r5, r0, #0 add r4, r1, #0 add r1, sp, #0 mov r0, #0 str r0, [r1] str r0, [r1, #4] str r0, [r1, #8] add r0, r4, #0 add r1, sp, #0xc bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #0x10] cmp r0, #1 bne _022174E4 mov r0, #1 strb r0, [r4, #8] _022174E4: ldr r0, [sp, #0xc] cmp r0, #3 bgt _02217502 cmp r0, #0 blt _02217562 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _022174FA: ; jump table .short _02217506 - _022174FA - 2 ; case 0 .short _0221752A - _022174FA - 2 ; case 1 .short _0221754C - _022174FA - 2 ; case 2 .short _02217558 - _022174FA - 2 ; case 3 _02217502: cmp r0, #0xff b _02217562 _02217506: add r0, r5, #0 add r1, sp, #0 bl FUN_02013548 mov r0, #8 ldrsb r1, [r4, r0] ldr r2, [sp] mul r1, r2 str r1, [sp] ldrsb r1, [r4, r0] ldr r2, [sp, #4] mul r1, r2 str r1, [sp, #4] ldrsb r0, [r4, r0] ldr r1, [sp, #8] mul r0, r1 str r0, [sp, #8] b _02217562 _0221752A: ldr r2, [sp, #0x14] ldr r1, [sp, #0x18] ldr r0, [sp, #0x1c] str r2, [sp] str r1, [sp, #4] str r0, [sp, #8] mov r3, #8 ldrsb r6, [r4, r3] mul r6, r2 str r6, [sp] ldrsb r2, [r4, r3] mul r2, r1 str r2, [sp, #4] ldrsb r1, [r4, r3] mul r1, r0 str r1, [sp, #8] b _02217562 _0221754C: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0 bl MOD08_0222771C b _02217562 _02217558: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0 bl MOD08_0222771C _02217562: ldr r1, [sp] ldr r0, [r4, #0x2c] sub r0, r1, r0 str r0, [sp] ldr r1, [sp, #4] ldr r0, [r4, #0x30] sub r0, r1, r0 str r0, [sp, #4] add r0, r5, #0 add r1, sp, #0 bl FUN_02013530 mov r0, #1 add sp, #0x20 pop {r4, r5, r6, pc} thumb_func_start MOD08_02217580 MOD08_02217580: ; 0x02217580 push {r3, r4, r5, lr} sub sp, #0x18 add r5, r0, #0 add r4, r1, #0 mov r1, #0 add r0, sp, #0 strh r1, [r0] add r0, r4, #0 add r1, sp, #4 bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #8] cmp r0, #1 bne _022175A8 mov r0, #1 strb r0, [r4, #8] _022175A8: ldr r0, [sp, #4] cmp r0, #3 bgt _022175C6 cmp r0, #0 blt _022175F4 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _022175BE: ; jump table .short _022175CA - _022175BE - 2 ; case 0 .short _022175E2 - _022175BE - 2 ; case 1 .short _022175F4 - _022175BE - 2 ; case 2 .short _022175F4 - _022175BE - 2 ; case 3 _022175C6: cmp r0, #0xff b _022175F4 _022175CA: add r0, r5, #0 add r1, sp, #0 bl FUN_02013594 add r1, sp, #0 mov r0, #0 ldrsh r2, [r1, r0] mov r0, #8 ldrsb r0, [r4, r0] mul r0, r2 strh r0, [r1] b _022175F4 _022175E2: ldr r0, [sp, #0xc] add r1, sp, #0 strh r0, [r1] mov r0, #0 ldrsh r2, [r1, r0] mov r0, #8 ldrsb r0, [r4, r0] mul r0, r2 strh r0, [r1] _022175F4: add r0, r5, #0 add r1, sp, #0 bl FUN_0201357C mov r0, #1 add sp, #0x18 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02217604 MOD08_02217604: ; 0x02217604 push {r3, r4, r5, lr} sub sp, #0x18 add r5, r0, #0 add r4, r1, #0 mov r1, #0 add r0, sp, #0 strh r1, [r0] add r0, r4, #0 add r1, sp, #4 bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #8] cmp r0, #1 bne _0221762C mov r0, #1 strb r0, [r4, #8] _0221762C: ldr r0, [sp, #4] cmp r0, #3 bgt _0221764A cmp r0, #0 blt _02217674 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02217642: ; jump table .short _0221764E - _02217642 - 2 ; case 0 .short _02217664 - _02217642 - 2 ; case 1 .short _02217674 - _02217642 - 2 ; case 2 .short _02217674 - _02217642 - 2 ; case 3 _0221764A: cmp r0, #0xff b _02217674 _0221764E: add r0, r5, #0 add r1, sp, #0 bl FUN_020135C4 add r1, sp, #0 mov r0, #8 ldrh r2, [r1] ldrsb r0, [r4, r0] mul r0, r2 strh r0, [r1] b _02217674 _02217664: ldr r0, [sp, #0xc] add r1, sp, #0 strh r0, [r1] mov r0, #8 ldrh r2, [r1] ldrsb r0, [r4, r0] mul r0, r2 strh r0, [r1] _02217674: add r0, r5, #0 add r1, sp, #0 bl FUN_020135B0 mov r0, #1 add sp, #0x18 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02217684 MOD08_02217684: ; 0x02217684 push {r3, r4, r5, lr} sub sp, #0x18 add r5, r0, #0 add r4, r1, #0 mov r1, #0 add r0, sp, #0 strh r1, [r0] add r0, r4, #0 add r1, sp, #4 bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #8] cmp r0, #1 bne _022176AC mov r0, #1 strb r0, [r4, #8] _022176AC: ldr r1, [sp, #4] cmp r1, #3 bgt _022176CA cmp r1, #0 blt _022176DE add r0, r1, r1 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022176C2: ; jump table .short _022176CE - _022176C2 - 2 ; case 0 .short _022176D8 - _022176C2 - 2 ; case 1 .short _022176DE - _022176C2 - 2 ; case 2 .short _022176DE - _022176C2 - 2 ; case 3 _022176CA: cmp r1, #0xff b _022176DE _022176CE: add r0, r5, #0 add r1, sp, #0 bl FUN_020135F4 b _022176DE _022176D8: ldr r1, [sp, #0xc] add r0, sp, #0 strh r1, [r0] _022176DE: add r0, r5, #0 add r1, sp, #0 bl FUN_020135E0 mov r0, #1 add sp, #0x18 pop {r3, r4, r5, pc} thumb_func_start MOD08_022176EC MOD08_022176EC: ; 0x022176EC mov r0, #1 bx lr thumb_func_start MOD08_022176F0 MOD08_022176F0: ; 0x022176F0 mov r0, #1 bx lr thumb_func_start MOD08_022176F4 MOD08_022176F4: ; 0x022176F4 mov r0, #1 bx lr thumb_func_start MOD08_022176F8 MOD08_022176F8: ; 0x022176F8 mov r0, #1 bx lr thumb_func_start MOD08_022176FC MOD08_022176FC: ; 0x022176FC push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r7, r0, #0 add r4, r1, #0 add r1, sp, #0 mov r0, #0 str r0, [r1] str r0, [r1, #4] str r0, [r1, #8] add r0, r4, #0 add r1, sp, #0xc bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #0x10] cmp r0, #1 bne _02217728 mov r0, #1 strb r0, [r4, #8] _02217728: ldr r0, [sp, #0xc] cmp r0, #4 bgt _02217748 cmp r0, #0 blt _022177E2 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0221773E: ; jump table .short _0221774C - _0221773E - 2 ; case 0 .short _02217770 - _0221773E - 2 ; case 1 .short _022177CC - _0221773E - 2 ; case 2 .short _022177D8 - _0221773E - 2 ; case 3 .short _02217792 - _0221773E - 2 ; case 4 _02217748: cmp r0, #0xff b _022177E2 _0221774C: add r0, r7, #0 add r1, sp, #0 bl FUN_02013628 mov r0, #8 ldrsb r1, [r4, r0] ldr r2, [sp] mul r1, r2 str r1, [sp] ldrsb r1, [r4, r0] ldr r2, [sp, #4] mul r1, r2 str r1, [sp, #4] ldrsb r0, [r4, r0] ldr r1, [sp, #8] mul r0, r1 str r0, [sp, #8] b _022177E2 _02217770: ldr r2, [sp, #0x14] ldr r1, [sp, #0x18] ldr r0, [sp, #0x1c] str r2, [sp] str r1, [sp, #4] str r0, [sp, #8] mov r3, #8 ldrsb r5, [r4, r3] mul r5, r2 str r5, [sp] ldrsb r2, [r4, r3] mul r2, r1 str r2, [sp, #4] ldrsb r1, [r4, r3] mul r1, r0 str r1, [sp, #8] b _022177E2 _02217792: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0 bl MOD08_0222771C ldr r1, [sp] ldr r5, [sp, #0x14] add r0, r1, #0 ldr r6, [sp, #0x18] mul r0, r5 add r1, r6, #0 bl _s32_div_f ldr r1, [sp, #4] str r0, [sp] add r0, r1, #0 mul r0, r5 add r1, r6, #0 bl _s32_div_f ldr r1, [sp, #8] str r0, [sp, #4] add r0, r1, #0 mul r0, r5 add r1, r6, #0 bl _s32_div_f str r0, [sp, #8] b _022177E2 _022177CC: ldr r0, [r4] ldr r1, [r4, #0x24] add r2, sp, #0 bl MOD08_0222771C b _022177E2 _022177D8: ldr r0, [r4] ldr r1, [r4, #0x28] add r2, sp, #0 bl MOD08_0222771C _022177E2: ldr r1, [sp] ldr r0, [r4, #0x2c] sub r0, r1, r0 str r0, [sp] ldr r1, [sp, #4] ldr r0, [r4, #0x30] sub r0, r1, r0 str r0, [sp, #4] ldr r1, [sp, #8] ldr r0, [r4, #0x34] sub r0, r1, r0 str r0, [sp, #8] add r0, r7, #0 add r1, sp, #0 bl FUN_02013610 mov r0, #1 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02217808 MOD08_02217808: ; 0x02217808 push {r3, r4, r5, lr} sub sp, #0x18 add r5, r0, #0 add r4, r1, #0 mov r1, #0 add r0, sp, #0 strh r1, [r0] add r0, r4, #0 add r1, sp, #4 bl MOD08_022173BC add r0, r4, #0 bl MOD08_0221727C strb r0, [r4, #8] ldr r0, [sp, #8] cmp r0, #1 bne _02217830 mov r0, #1 strb r0, [r4, #8] _02217830: ldr r0, [sp, #4] cmp r0, #3 bgt _0221784E cmp r0, #0 blt _0221787C add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02217846: ; jump table .short _02217852 - _02217846 - 2 ; case 0 .short _0221786A - _02217846 - 2 ; case 1 .short _0221787C - _02217846 - 2 ; case 2 .short _0221787C - _02217846 - 2 ; case 3 _0221784E: cmp r0, #0xff b _0221787C _02217852: add r0, r5, #0 add r1, sp, #0 bl FUN_02013674 add r1, sp, #0 mov r0, #0 ldrsh r2, [r1, r0] mov r0, #8 ldrsb r0, [r4, r0] mul r0, r2 strh r0, [r1] b _0221787C _0221786A: ldr r0, [sp, #0xc] add r1, sp, #0 strh r0, [r1] mov r0, #0 ldrsh r2, [r1, r0] mov r0, #8 ldrsb r0, [r4, r0] mul r0, r2 strh r0, [r1] _0221787C: add r0, r5, #0 add r1, sp, #0 bl FUN_0201365C mov r0, #1 add sp, #0x18 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221788C MOD08_0221788C: ; 0x0221788C push {r3, lr} add r3, r0, #0 add r0, r1, #0 add r1, r2, #0 ldr r2, _022178A0 ; =0x0222C204 lsl r3, r3, #2 ldr r2, [r2, r3] blx r2 pop {r3, pc} nop _022178A0: .word 0x0222C204 thumb_func_start MOD08_022178A4 MOD08_022178A4: ; 0x022178A4 push {r3, r4, r5} sub sp, #0x3c ldr r4, _022178C8 ; =0x0222C23C add r5, r0, #0 add r3, sp, #0 mov r2, #7 _022178B0: ldmia r4!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _022178B0 ldr r0, [r4] lsl r1, r5, #2 str r0, [r3] add r0, sp, #0 ldr r0, [r0, r1] add sp, #0x3c pop {r3, r4, r5} bx lr .align 2, 0 _022178C8: .word 0x0222C23C thumb_func_start MOD08_022178CC MOD08_022178CC: ; 0x022178CC push {r4, r5, r6, lr} mov r4, #0 ldr r6, _022178F4 ; =0x0000FEFE add r5, r4, #0 _022178D4: add r0, r4, #0 bl MOD08_022178A4 add r4, r4, #1 cmp r0, r6 beq _022178E6 add r5, r5, #1 cmp r5, #0xff blt _022178D4 _022178E6: cmp r5, #0xff blt _022178EE mov r0, #0 pop {r4, r5, r6, pc} _022178EE: add r0, r4, #0 pop {r4, r5, r6, pc} nop _022178F4: .word 0x0000FEFE thumb_func_start MOD08_022178F8 MOD08_022178F8: ; 0x022178F8 ldr r3, _02217900 ; =MOD08_02215434 ldr r0, [r0] mov r2, #4 bx r3 .align 2, 0 _02217900: .word MOD08_02215434 thumb_func_start MOD08_02217904 MOD08_02217904: ; 0x02217904 push {r3, lr} sub sp, #8 add r2, sp, #0 mov r0, #0 strh r0, [r2] strh r0, [r2, #2] strh r0, [r2, #4] strh r0, [r2, #6] ldr r0, [r1, #4] bl FUN_0201343C add r1, r0, #0 add r0, sp, #0 bl FUN_0201EF90 mov r0, #1 add sp, #8 pop {r3, pc} thumb_func_start MOD08_02217928 MOD08_02217928: ; 0x02217928 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 ldr r1, _02217960 ; =0x0222C278 add r0, sp, #0 ldrh r2, [r1, #0x20] strh r2, [r0] ldrh r2, [r1, #0x22] strh r2, [r0, #2] ldrh r2, [r1, #0x24] ldrh r1, [r1, #0x26] strh r2, [r0, #4] strh r1, [r0, #6] ldr r0, [r4, #4] bl FUN_0201343C add r5, r0, #0 ldr r0, [r4, #4] mov r1, #1 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 bl FUN_0201EF90 mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _02217960: .word 0x0222C278 thumb_func_start MOD08_02217964 MOD08_02217964: ; 0x02217964 push {r4, lr} sub sp, #0x18 add r4, r1, #0 add r1, sp, #0 mov r0, #0 strh r0, [r1] strh r0, [r1, #2] strh r0, [r1, #4] strh r0, [r1, #6] add r0, r4, #0 add r1, sp, #8 bl MOD08_022178F8 ldr r1, [sp, #0xc] add r0, sp, #0 strh r1, [r0] ldr r1, [sp, #0x10] strh r1, [r0, #2] ldr r1, [sp, #0x14] strh r1, [r0, #4] ldr r0, [r4, #4] bl FUN_0201343C add r1, r0, #0 add r0, sp, #0 bl FUN_0201EF90 mov r0, #1 add sp, #0x18 pop {r4, pc} thumb_func_start MOD08_022179A0 MOD08_022179A0: ; 0x022179A0 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 ldr r1, _022179D8 ; =0x0222C278 add r0, sp, #0 ldrh r2, [r1, #0x18] strh r2, [r0] ldrh r2, [r1, #0x1a] strh r2, [r0, #2] ldrh r2, [r1, #0x1c] ldrh r1, [r1, #0x1e] strh r2, [r0, #4] strh r1, [r0, #6] ldr r0, [r4, #4] bl FUN_0201343C add r5, r0, #0 ldr r0, [r4, #4] mov r1, #1 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 bl FUN_0201EF90 mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _022179D8: .word 0x0222C278 thumb_func_start MOD08_022179DC MOD08_022179DC: ; 0x022179DC push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 ldr r1, _02217A38 ; =0x0222C278 add r0, sp, #0 ldrh r2, [r1, #0x10] strh r2, [r0, #8] ldrh r2, [r1, #0x12] strh r2, [r0, #0xa] ldrh r2, [r1, #0x14] strh r2, [r0, #0xc] ldrh r2, [r1, #0x16] strh r2, [r0, #0xe] ldrh r2, [r1, #0x28] strh r2, [r0] ldrh r2, [r1, #0x2a] strh r2, [r0, #2] ldrh r2, [r1, #0x2c] strh r2, [r0, #4] ldrh r1, [r1, #0x2e] strh r1, [r0, #6] ldr r0, [r4, #4] bl FUN_0201343C add r5, r0, #0 ldr r0, [r4, #4] mov r1, #1 bl FUN_02013440 ldr r0, [r4] bl MOD08_02212004 cmp r0, #1 bne _02217A2A add r0, sp, #8 add r1, r5, #0 bl FUN_0201EF90 b _02217A32 _02217A2A: add r0, sp, #0 add r1, r5, #0 bl FUN_0201EF90 _02217A32: mov r0, #1 add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _02217A38: .word 0x0222C278 thumb_func_start MOD08_02217A3C MOD08_02217A3C: ; 0x02217A3C push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 ldr r1, _02217A74 ; =0x0222C278 add r0, sp, #0 ldrh r2, [r1] strh r2, [r0] ldrh r2, [r1, #2] strh r2, [r0, #2] ldrh r2, [r1, #4] ldrh r1, [r1, #6] strh r2, [r0, #4] strh r1, [r0, #6] ldr r0, [r4, #4] bl FUN_0201343C add r5, r0, #0 ldr r0, [r4, #4] mov r1, #1 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 bl FUN_0201EF90 mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _02217A74: .word 0x0222C278 thumb_func_start MOD08_02217A78 MOD08_02217A78: ; 0x02217A78 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 ldr r1, _02217AB0 ; =0x0222C278 add r0, sp, #0 ldrh r2, [r1, #8] strh r2, [r0] ldrh r2, [r1, #0xa] strh r2, [r0, #2] ldrh r2, [r1, #0xc] ldrh r1, [r1, #0xe] strh r2, [r0, #4] strh r1, [r0, #6] ldr r0, [r4, #4] bl FUN_0201343C add r5, r0, #0 ldr r0, [r4, #4] mov r1, #1 bl FUN_02013440 add r0, sp, #0 add r1, r5, #0 bl FUN_0201EF90 mov r0, #1 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 _02217AB0: .word 0x0222C278 thumb_func_start MOD08_02217AB4 MOD08_02217AB4: ; 0x02217AB4 push {r4, r5, lr} sub sp, #0xc add r5, r1, #0 ldr r0, [r5, #4] bl FUN_0201343C add r4, r0, #0 ldr r0, [r5] ldr r1, [r5, #0x24] add r2, sp, #0 bl MOD08_022278FC add r0, sp, #0 add r1, r4, #0 bl FUN_0201F04C mov r0, #1 add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02217ADC MOD08_02217ADC: ; 0x02217ADC push {r4, r5, lr} sub sp, #0xc add r5, r1, #0 ldr r0, [r5, #4] bl FUN_0201343C add r4, r0, #0 ldr r0, [r5] ldr r1, [r5, #0x28] add r2, sp, #0 bl MOD08_022278FC add r0, sp, #0 add r1, r4, #0 bl FUN_0201F04C mov r0, #1 add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02217B04 MOD08_02217B04: ; 0x02217B04 push {r3, lr} add r3, r0, #0 add r0, r1, #0 add r1, r2, #0 ldr r2, _02217B18 ; =0x0222C2A8 lsl r3, r3, #2 ldr r2, [r2, r3] blx r2 pop {r3, pc} nop _02217B18: .word 0x0222C2A8 thumb_func_start MOD08_02217B1C MOD08_02217B1C: ; 0x02217B1C push {r3, r4, r5, r6} cmp r2, #0 beq _02217B32 mov r4, #0x18 add r6, r0, #0 mul r6, r4 ldr r4, _02217B48 ; =0x0222C2CC lsl r5, r1, #2 add r4, r4, r6 ldrsh r4, [r5, r4] strh r4, [r2] _02217B32: cmp r3, #0 beq _02217B44 mov r2, #0x18 mul r2, r0 ldr r0, _02217B4C ; =0x0222C2CE lsl r1, r1, #2 add r0, r0, r2 ldrsh r0, [r1, r0] strh r0, [r3] _02217B44: pop {r3, r4, r5, r6} bx lr .align 2, 0 _02217B48: .word 0x0222C2CC _02217B4C: .word 0x0222C2CE thumb_func_start MOD08_02217B50 MOD08_02217B50: ; 0x02217B50 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 add r5, r1, #0 add r4, r2, #0 add r6, r3, #0 bl MOD08_02212004 cmp r0, #1 bne _02217B70 mov r0, #0 add r1, r5, #2 add r2, r4, #0 add r3, r6, #0 bl MOD08_02217B1C pop {r3, r4, r5, r6, r7, pc} _02217B70: add r0, r7, #0 bl MOD08_0221553C cmp r0, #1 bne _02217B88 mov r0, #1 sub r1, r5, #2 add r2, r4, #0 add r3, r6, #0 bl MOD08_02217B1C pop {r3, r4, r5, r6, r7, pc} _02217B88: mov r0, #0 add r1, r5, #0 add r2, r4, #0 add r3, r6, #0 bl MOD08_02217B1C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02217B98 MOD08_02217B98: ; 0x02217B98 push {r3, r4, r5, r6, r7, lr} add r7, r0, #0 add r6, r2, #0 bl MOD08_02227468 add r4, r0, #0 add r0, r7, #0 bl MOD08_0221553C cmp r0, #1 bne _02217BB2 mov r5, #1 b _02217BB4 _02217BB2: mov r5, #0 _02217BB4: add r0, r7, #0 bl MOD08_02212004 cmp r0, #1 bne _02217BC0 add r4, r4, #2 _02217BC0: cmp r6, #3 bhi _02217BF8 add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02217BD0: ; jump table .short _02217BD8 - _02217BD0 - 2 ; case 0 .short _02217BE8 - _02217BD0 - 2 ; case 1 .short _02217BD8 - _02217BD0 - 2 ; case 2 .short _02217BE8 - _02217BD0 - 2 ; case 3 _02217BD8: mov r0, #0x18 add r2, r5, #0 mul r2, r0 ldr r0, _02217C00 ; =0x0222C2CC lsl r1, r4, #2 add r0, r0, r2 ldrsh r0, [r1, r0] pop {r3, r4, r5, r6, r7, pc} _02217BE8: mov r0, #0x18 add r2, r5, #0 mul r2, r0 ldr r0, _02217C04 ; =0x0222C2CE lsl r1, r4, #2 add r0, r0, r2 ldrsh r0, [r1, r0] pop {r3, r4, r5, r6, r7, pc} _02217BF8: bl ErrorHandling mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02217C00: .word 0x0222C2CC _02217C04: .word 0x0222C2CE thumb_func_start MOD08_02217C08 MOD08_02217C08: ; 0x02217C08 push {r3, lr} ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C lsl r0, r0, #0x18 lsr r0, r0, #0x18 pop {r3, pc} thumb_func_start MOD08_02217C1C MOD08_02217C1C: ; 0x02217C1C push {r4, r5, r6, lr} add r6, r0, #0 mov r5, #1 bl MOD08_02227470 add r4, r0, #0 add r0, r6, #0 bl MOD08_02212004 cmp r0, #0 beq _02217C3A cmp r4, #3 bne _02217C40 sub r5, r5, #2 b _02217C40 _02217C3A: cmp r4, #4 bne _02217C40 sub r5, r5, #2 _02217C40: add r0, r5, #0 pop {r4, r5, r6, pc} thumb_func_start MOD08_02217C44 MOD08_02217C44: ; 0x02217C44 push {r4, lr} mov r4, #1 bl MOD08_02227470 cmp r0, #4 bne _02217C52 sub r4, r4, #2 _02217C52: add r0, r4, #0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02217C58 MOD08_02217C58: ; 0x02217C58 ldr r3, _02217C60 ; =0x020C50B8 sub r0, r1, r0 lsl r1, r2, #0xc bx r3 .align 2, 0 _02217C60: .word 0x020C50B8 thumb_func_start MOD08_02217C64 MOD08_02217C64: ; 0x02217C64 push {r3, lr} sub r0, r1, r0 add r1, r2, #0 bl FX_Div add r1, sp, #0 str r0, [sp] bl FX_Modf cmp r0, #0 beq _02217C84 mov r0, #1 ldr r1, [sp] lsl r0, r0, #0xc add r0, r1, r0 str r0, [sp] _02217C84: ldr r0, [sp] cmp r0, #0 bge _02217C8C neg r0, r0 _02217C8C: str r0, [sp] asr r0, r0, #0xc pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02217C94 MOD08_02217C94: ; 0x02217C94 push {r4, lr} add r4, r0, #0 add r0, r1, #0 mov r1, #0 ldrsh r1, [r4, r1] add r1, r2, r1 mov r2, #2 ldrsh r2, [r4, r2] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 pop {r4, pc} thumb_func_start MOD08_02217CB4 MOD08_02217CB4: ; 0x02217CB4 push {r4, lr} sub sp, #8 add r4, r1, #0 add r1, sp, #4 add r2, sp, #0 bl MOD08_0221825C ldr r1, [sp, #4] ldr r2, [sp] add r0, r4, #0 bl FUN_0200C884 add sp, #8 pop {r4, pc} thumb_func_start MOD08_02217CD0 MOD08_02217CD0: ; 0x02217CD0 push {r4, r5, r6, lr} add r4, r1, #0 add r5, r0, #0 mov r1, #0 add r6, r3, #0 ldrsh r3, [r5, r1] add r0, r4, #0 add r2, r2, r3 bl FUN_02007558 mov r2, #2 ldrsh r2, [r5, r2] add r0, r4, #0 mov r1, #1 add r2, r6, r2 bl FUN_02007558 pop {r4, r5, r6, pc} thumb_func_start MOD08_02217CF4 MOD08_02217CF4: ; 0x02217CF4 push {r3, r4, r5, lr} add r5, r0, #0 mov r2, #0 add r4, r1, #0 ldrsh r2, [r5, r2] add r0, r4, #0 mov r1, #0xc bl FUN_02007558 mov r2, #2 ldrsh r2, [r5, r2] add r0, r4, #0 mov r1, #0xd bl FUN_02007558 pop {r3, r4, r5, pc} thumb_func_start MOD08_02217D14 MOD08_02217D14: ; 0x02217D14 push {r3, r4, r5, lr} add r4, r3, #0 add r5, r0, #0 ldr r3, [sp, #0x1c] ldr r0, [sp, #0x14] str r3, [r5, #4] str r1, [r5, #8] str r0, [r5, #0xc] ldr r0, [sp, #0x18] str r4, [r5, #0x10] str r0, [r5, #0x14] sub r0, r2, r1 add r1, r3, #0 bl _s32_div_f str r0, [r5, #0x18] add r0, sp, #0 ldrh r0, [r0, #0x10] ldr r1, [sp, #0x1c] sub r0, r0, r4 bl _s32_div_f str r0, [r5, #0x1c] pop {r3, r4, r5, pc} thumb_func_start MOD08_02217D44 MOD08_02217D44: ; 0x02217D44 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r7, r2, #0 str r3, [sp] cmp r5, #0 bne _02217D56 bl ErrorHandling _02217D56: cmp r4, r7 bls _02217D62 add r0, sp, #8 ldrh r1, [r0, #0x1c] neg r1, r1 strh r1, [r0, #0x1c] _02217D62: add r1, sp, #8 mov r0, #0x1c ldrsh r6, [r1, r0] lsl r0, r4, #0xc lsl r1, r7, #0xc lsl r2, r6, #0xc bl MOD08_02217C64 str r0, [r5, #4] ldr r0, [sp, #0x1c] str r4, [r5, #8] str r0, [r5, #0xc] ldr r0, [sp] str r0, [r5, #0x10] ldr r0, [sp, #0x20] str r0, [r5, #0x14] str r6, [r5, #0x18] add r0, sp, #8 ldrh r1, [r0, #0x10] ldr r0, [sp] sub r0, r1, r0 ldr r1, [r5, #4] bl _s32_div_f str r0, [r5, #0x1c] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02217D98 MOD08_02217D98: ; 0x02217D98 push {r4, lr} add r4, r0, #0 bne _02217DA2 bl ErrorHandling _02217DA2: ldr r0, [r4, #4] cmp r0, #0 beq _02217E26 ldr r1, [r4, #8] ldr r0, [r4, #0x18] add r0, r1, r0 str r0, [r4, #8] ldr r1, [r4, #0x10] ldr r0, [r4, #0x1c] add r0, r1, r0 str r0, [r4, #0x10] ldr r0, [r4, #8] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [r4, #8] ldr r0, [r4, #0x10] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [r4, #0x10] ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #8] ldr r2, [r4, #0xc] asr r0, r0, #4 lsl r1, r0, #2 ldr r0, _02217E2C ; =0x020FFA38 asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 asr r0, r1, #0xc strh r0, [r4] ldr r0, [r4, #0x10] ldr r2, [r4, #0x14] asr r0, r0, #4 lsl r0, r0, #1 add r0, r0, #1 lsl r1, r0, #1 ldr r0, _02217E2C ; =0x020FFA38 asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 asr r0, r1, #0xc strh r0, [r4, #2] mov r0, #1 pop {r4, pc} _02217E26: mov r0, #0 pop {r4, pc} nop _02217E2C: .word 0x020FFA38 thumb_func_start MOD08_02217E30 MOD08_02217E30: ; 0x02217E30 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bl MOD08_02217D98 cmp r0, #0 beq _02217E52 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 add r3, r6, #0 bl MOD08_02217C94 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02217E52: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02217E58 MOD08_02217E58: ; 0x02217E58 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bl MOD08_02217D98 cmp r0, #0 beq _02217E7A add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 add r3, r6, #0 bl MOD08_02217CD0 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02217E7A: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02217E80 MOD08_02217E80: ; 0x02217E80 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 add r4, r1, #0 add r6, r3, #0 str r2, [sp] cmp r5, #0 bne _02217E94 bl ErrorHandling _02217E94: strh r4, [r5] strh r6, [r5, #2] add r0, sp, #0x10 ldrh r7, [r0, #0x14] lsl r0, r4, #0xc str r0, [sp, #4] str r7, [r5, #4] ldr r1, [sp] add r2, r7, #0 lsl r1, r1, #0xc bl MOD08_02217C58 str r0, [r5, #8] lsl r4, r6, #0xc add r2, sp, #0x10 mov r1, #0x10 ldrsh r1, [r2, r1] add r0, r4, #0 add r2, r7, #0 lsl r1, r1, #0xc bl MOD08_02217C58 str r0, [r5, #0xc] ldr r0, [sp, #4] str r0, [r5, #0x10] str r4, [r5, #0x14] add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02217ECC MOD08_02217ECC: ; 0x02217ECC push {r4, lr} add r4, r0, #0 bne _02217ED6 bl ErrorHandling _02217ED6: ldr r0, [r4, #4] cmp r0, #0 beq _02217F02 ldr r1, [r4, #0x10] ldr r0, [r4, #8] add r0, r1, r0 str r0, [r4, #0x10] ldr r1, [r4, #0x14] ldr r0, [r4, #0xc] add r0, r1, r0 str r0, [r4, #0x14] ldr r0, [r4, #0x10] asr r0, r0, #0xc strh r0, [r4] ldr r0, [r4, #0x14] asr r0, r0, #0xc strh r0, [r4, #2] ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] mov r0, #1 pop {r4, pc} _02217F02: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02217F08 MOD08_02217F08: ; 0x02217F08 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD08_02217ECC cmp r0, #0 beq _02217F26 mov r2, #0 add r0, r5, #0 add r1, r4, #0 add r3, r2, #0 bl MOD08_02217C94 mov r0, #1 pop {r3, r4, r5, pc} _02217F26: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02217F2C MOD08_02217F2C: ; 0x02217F2C push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD08_02217ECC cmp r0, #0 beq _02217F4A mov r2, #0 add r0, r5, #0 add r1, r4, #0 add r3, r2, #0 bl MOD08_02217CD0 mov r0, #1 pop {r3, r4, r5, pc} _02217F4A: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02217F50 MOD08_02217F50: ; 0x02217F50 push {r3, r4, r5, lr} sub sp, #0x10 add r5, r1, #0 add r4, sp, #0x10 mov r1, #0x14 ldrsh r1, [r4, r1] str r1, [sp] ldrh r1, [r4, #0x18] str r1, [sp, #4] add r1, r2, #0 add r2, r3, #0 mov r3, #0x10 ldrsh r3, [r4, r3] bl MOD08_02217E80 mov r1, #0 strh r1, [r5] ldr r0, _02217F94 ; =0x0000BFFF strh r1, [r5, #2] str r0, [sp] ldr r0, [sp, #0x2c] str r1, [sp, #4] str r0, [sp, #8] add r0, r4, #0 ldrh r0, [r0, #0x18] ldr r3, _02217F98 ; =0x00003FFF add r2, r1, #0 str r0, [sp, #0xc] add r0, r5, #0 bl MOD08_02217D14 add sp, #0x10 pop {r3, r4, r5, pc} nop _02217F94: .word 0x0000BFFF _02217F98: .word 0x00003FFF thumb_func_start MOD08_02217F9C MOD08_02217F9C: ; 0x02217F9C push {r4, r5, r6, lr} add r5, r0, #0 add r4, r1, #0 cmp r5, #0 bne _02217FAA bl ErrorHandling _02217FAA: cmp r4, #0 bne _02217FB2 bl ErrorHandling _02217FB2: add r0, r5, #0 bl MOD08_02217ECC add r6, r0, #0 add r0, r4, #0 bl MOD08_02217D98 mov r2, #0 ldrsh r3, [r5, r2] ldrsh r1, [r4, r2] add r1, r3, r1 strh r1, [r5] mov r1, #2 ldrsh r3, [r5, r1] ldrsh r1, [r4, r1] add r1, r3, r1 strh r1, [r5, #2] cmp r6, r0 bne _02217FE0 cmp r6, #0 bne _02217FE0 add r0, r2, #0 pop {r4, r5, r6, pc} _02217FE0: mov r0, #1 pop {r4, r5, r6, pc} thumb_func_start MOD08_02217FE4 MOD08_02217FE4: ; 0x02217FE4 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r2, #0 bl MOD08_02217F9C cmp r0, #0 beq _02218002 mov r2, #0 add r0, r5, #0 add r1, r4, #0 add r3, r2, #0 bl MOD08_02217C94 mov r0, #1 pop {r3, r4, r5, pc} _02218002: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02218008 MOD08_02218008: ; 0x02218008 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r4, r3, #0 cmp r5, #0 bne _0221801A bl ErrorHandling _0221801A: str r6, [r5] lsl r0, r6, #0xc lsl r1, r7, #0xc add r2, r4, #0 str r4, [r5, #4] bl MOD08_02217C58 asr r0, r0, #0xc str r0, [r5, #8] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02218030 MOD08_02218030: ; 0x02218030 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 add r4, r3, #0 cmp r5, #0 bne _02218042 bl ErrorHandling _02218042: str r6, [r5] lsl r6, r6, #0xc add r0, r6, #0 lsl r1, r7, #0xc add r2, r4, #0 str r4, [r5, #4] bl MOD08_02217C58 str r0, [r5, #8] str r6, [r5, #0xc] pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02218058 MOD08_02218058: ; 0x02218058 push {r4, lr} add r4, r0, #0 bne _02218062 bl ErrorHandling _02218062: ldr r0, [r4, #4] cmp r0, #0 beq _0221807A ldr r1, [r4] ldr r0, [r4, #8] add r0, r1, r0 str r0, [r4] ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] mov r0, #1 pop {r4, pc} _0221807A: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218080 MOD08_02218080: ; 0x02218080 push {r4, lr} add r4, r0, #0 bne _0221808A bl ErrorHandling _0221808A: ldr r0, [r4, #4] cmp r0, #0 beq _022180A6 ldr r1, [r4, #0xc] ldr r0, [r4, #8] add r0, r1, r0 str r0, [r4, #0xc] asr r0, r0, #0xc str r0, [r4] ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] mov r0, #1 pop {r4, pc} _022180A6: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022180AC MOD08_022180AC: ; 0x022180AC push {r3, r4, r5, lr} ldr r4, [sp, #0x10] add r5, r0, #0 str r4, [r5, #4] str r1, [r5, #8] sub r0, r2, r1 add r1, r4, #0 str r3, [r5, #0xc] bl _u32_div_f str r0, [r5, #0x10] pop {r3, r4, r5, pc} thumb_func_start MOD08_022180C4 MOD08_022180C4: ; 0x022180C4 push {r4, lr} add r4, r0, #0 bne _022180CE bl ErrorHandling _022180CE: ldr r0, [r4, #4] cmp r0, #0 beq _02218116 ldr r1, [r4, #8] ldr r0, [r4, #0x10] add r0, r1, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [r4, #8] ldr r0, [r4, #4] sub r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #8] ldr r2, [r4, #0xc] asr r0, r0, #4 lsl r0, r0, #1 add r0, r0, #1 lsl r1, r0, #1 ldr r0, _0221811C ; =0x020FFA38 asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 asr r0, r1, #0xc str r0, [r4] mov r0, #1 pop {r4, pc} _02218116: mov r0, #0 pop {r4, pc} nop _0221811C: .word 0x020FFA38 thumb_func_start MOD08_02218120 MOD08_02218120: ; 0x02218120 push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 add r7, r3, #0 cmp r4, #0 bne _02218132 bl ErrorHandling _02218132: ldr r0, [sp, #0x18] add r1, r6, #0 str r0, [r4, #4] lsl r0, r5, #8 bl _s32_div_f add r5, r0, #0 lsl r0, r7, #8 add r1, r6, #0 bl _s32_div_f add r1, r0, #0 ldr r2, [sp, #0x18] lsl r0, r5, #0xc lsl r1, r1, #0xc bl MOD08_02217C58 str r0, [r4, #8] lsl r0, r5, #0x10 asr r0, r0, #0x10 strh r0, [r4] strh r0, [r4, #2] mov r0, #0 ldrsh r0, [r4, r0] lsl r0, r0, #0xc str r0, [r4, #0x10] mov r0, #2 ldrsh r0, [r4, r0] lsl r0, r0, #0xc str r0, [r4, #0x14] pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02218170 MOD08_02218170: ; 0x02218170 push {r4, lr} add r4, r0, #0 bne _0221817A bl ErrorHandling _0221817A: ldr r0, [r4, #4] cmp r0, #0 beq _022181A4 sub r0, r0, #1 str r0, [r4, #4] ldr r1, [r4, #0x10] ldr r0, [r4, #8] add r0, r1, r0 str r0, [r4, #0x10] ldr r1, [r4, #0x14] ldr r0, [r4, #8] add r0, r1, r0 str r0, [r4, #0x14] ldr r0, [r4, #0x10] asr r0, r0, #0xc strh r0, [r4] ldr r0, [r4, #0x14] asr r0, r0, #0xc strh r0, [r4, #2] mov r0, #1 pop {r4, pc} _022181A4: mov r0, #0 pop {r4, pc} thumb_func_start MOD08_022181A8 MOD08_022181A8: ; 0x022181A8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 str r3, [sp] cmp r5, #0 bne _022181BA bl ErrorHandling _022181BA: ldr r0, [sp, #0x20] add r1, sp, #8 str r0, [r5, #4] mov r0, #0x14 ldrsh r4, [r1, r0] lsl r0, r6, #8 add r1, r4, #0 bl _s32_div_f add r6, r0, #0 lsl r0, r7, #8 add r1, r4, #0 bl _s32_div_f add r1, r0, #0 ldr r2, [sp, #0x20] lsl r0, r6, #0xc lsl r1, r1, #0xc bl MOD08_02217C58 str r0, [r5, #8] ldr r0, [sp] add r1, r4, #0 lsl r0, r0, #8 bl _s32_div_f add r7, r0, #0 add r1, sp, #8 mov r0, #0x10 ldrsh r0, [r1, r0] add r1, r4, #0 lsl r0, r0, #8 bl _s32_div_f add r1, r0, #0 ldr r2, [sp, #0x20] lsl r0, r7, #0xc lsl r1, r1, #0xc bl MOD08_02217C58 str r0, [r5, #0xc] strh r6, [r5] strh r7, [r5, #2] mov r0, #0 ldrsh r0, [r5, r0] lsl r0, r0, #0xc str r0, [r5, #0x10] mov r0, #2 ldrsh r0, [r5, r0] lsl r0, r0, #0xc str r0, [r5, #0x14] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02218224 MOD08_02218224: ; 0x02218224 push {r4, lr} add r4, r0, #0 bne _0221822E bl ErrorHandling _0221822E: ldr r0, [r4, #4] cmp r0, #0 beq _02218258 sub r0, r0, #1 str r0, [r4, #4] ldr r1, [r4, #0x10] ldr r0, [r4, #8] add r0, r1, r0 str r0, [r4, #0x10] ldr r1, [r4, #0x14] ldr r0, [r4, #0xc] add r0, r1, r0 str r0, [r4, #0x14] ldr r0, [r4, #0x10] asr r0, r0, #0xc strh r0, [r4] ldr r0, [r4, #0x14] asr r0, r0, #0xc strh r0, [r4, #2] mov r0, #1 pop {r4, pc} _02218258: mov r0, #0 pop {r4, pc} thumb_func_start MOD08_0221825C MOD08_0221825C: ; 0x0221825C push {r4, r5, r6, lr} add r5, r0, #0 mov r0, #0 ldrsh r0, [r5, r0] add r4, r1, #0 add r6, r2, #0 bl _fflt ldr r1, _02218288 ; =0x43800000 bl _fdiv str r0, [r4] mov r0, #2 ldrsh r0, [r5, r0] bl _fflt ldr r1, _02218288 ; =0x43800000 bl _fdiv str r0, [r6] pop {r4, r5, r6, pc} nop _02218288: .word 0x43800000 thumb_func_start MOD08_0221828C MOD08_0221828C: ; 0x0221828C push {r3, r4, lr} sub sp, #4 lsl r1, r1, #1 mov r0, #0x50 sub r0, r0, r1 lsl r4, r0, #0xc asr r1, r4, #0x1f add r0, r4, #0 asr r3, r2, #0x1f bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r0, r0, r2 adc r1, r3 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 lsl r1, r2, #9 bl FX_Div sub r0, r4, r0 add r1, sp, #0 bl FX_Modf cmp r0, #0 beq _022182CA mov r1, #2 lsl r1, r1, #0xa add r0, r0, r1 _022182CA: ldr r1, [sp] add r0, r1, r0 asr r1, r0, #0xc lsr r0, r1, #0x1f add r0, r1, r0 lsl r0, r0, #0xf asr r0, r0, #0x10 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022182DC MOD08_022182DC: ; 0x022182DC push {r4, r5, r6, lr} add r6, r2, #0 add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 add r1, r6, #0 add r2, r3, #0 bl MOD08_0221828C add r2, r0, #0 ldr r0, [sp, #0x10] cmp r0, #1 bne _02218306 mov r0, #0 mvn r0, r0 mul r0, r2 lsl r0, r0, #0x10 asr r2, r0, #0x10 sub r0, r4, r6 lsl r0, r0, #0x10 asr r4, r0, #0x10 _02218306: add r0, r5, #0 mov r1, #1 add r2, r4, r2 bl FUN_02007558 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_02218314 MOD08_02218314: ; 0x02218314 push {r3, r4, r5, r6, r7, lr} add r7, r2, #0 add r5, r1, #0 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 add r2, r3, #0 bl MOD08_0221828C add r4, r0, #0 ldr r0, [sp, #0x18] cmp r0, #1 bne _0221833E mov r0, #0 mvn r0, r0 mul r0, r4 lsl r0, r0, #0x10 asr r4, r0, #0x10 sub r0, r5, r7 lsl r0, r0, #0x10 asr r5, r0, #0x10 _0221833E: add r1, sp, #0 add r0, r6, #0 add r1, #2 add r2, sp, #0 bl FUN_0200C7A0 add r2, sp, #0 mov r1, #2 ldrsh r1, [r2, r1] add r2, r5, r4 lsl r2, r2, #0x10 add r0, r6, #0 asr r2, r2, #0x10 bl FUN_0200C714 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02218360 MOD08_02218360: ; 0x02218360 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD08_02218170 cmp r0, #0 beq _0221837A add r0, r5, #0 add r1, r4, #0 bl MOD08_02217CB4 mov r0, #1 pop {r3, r4, r5, pc} _0221837A: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02218380 MOD08_02218380: ; 0x02218380 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD08_02218170 cmp r0, #0 beq _0221839A add r0, r5, #0 add r1, r4, #0 bl MOD08_02217CF4 mov r0, #1 pop {r3, r4, r5, pc} _0221839A: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022183A0 MOD08_022183A0: ; 0x022183A0 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 bl MOD08_02218224 cmp r0, #0 beq _022183BA add r0, r5, #0 add r1, r4, #0 bl MOD08_02217CF4 mov r0, #1 pop {r3, r4, r5, pc} _022183BA: mov r0, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022183C0 MOD08_022183C0: ; 0x022183C0 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r6, r1, #0 add r4, r2, #0 add r7, r3, #0 cmp r5, #0 bne _022183D2 bl ErrorHandling _022183D2: str r7, [r5, #4] ldr r0, [sp, #0x18] str r7, [r5, #8] str r0, [r5, #0xc] mov r1, #0 str r1, [r5, #0x10] str r6, [r5, #0x14] str r4, [r5, #0x18] neg r0, r6 str r0, [r5, #0x1c] neg r0, r4 str r0, [r5, #0x20] strh r1, [r5] strh r1, [r5, #2] pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_022183F0 MOD08_022183F0: ; 0x022183F0 push {r4, lr} add r4, r0, #0 bne _022183FA bl ErrorHandling _022183FA: ldr r0, [r4, #0xc] cmp r0, #0 beq _0221844E ldr r0, [r4, #4] add r1, r0, #1 str r1, [r4, #4] ldr r0, [r4, #8] cmp r1, r0 blt _0221844A mov r2, #0 str r2, [r4, #4] ldrsh r0, [r4, r2] ldr r1, [r4, #0x1c] str r0, [r4, #0x1c] cmp r1, #0 bne _0221841E strh r2, [r4] b _02218422 _0221841E: neg r0, r1 strh r0, [r4] _02218422: mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #0x20] str r0, [r4, #0x20] cmp r1, #0 bne _02218432 mov r0, #0 b _02218434 _02218432: neg r0, r1 _02218434: strh r0, [r4, #2] ldr r0, [r4, #0x10] add r0, r0, #1 str r0, [r4, #0x10] cmp r0, #4 blt _0221844A mov r0, #0 str r0, [r4, #0x10] ldr r0, [r4, #0xc] sub r0, r0, #1 str r0, [r4, #0xc] _0221844A: mov r0, #1 pop {r4, pc} _0221844E: mov r0, #0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218454 MOD08_02218454: ; 0x02218454 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 bl MOD08_022183F0 cmp r0, #0 beq _02218476 add r0, r5, #0 add r1, r7, #0 add r2, r4, #0 add r3, r6, #0 bl MOD08_02217CD0 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02218476: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0221847C MOD08_0221847C: ; 0x0221847C push {r3, r4, r5, r6, r7, lr} mov ip, r1 str r0, [sp] strh r3, [r0] add r0, sp, #8 mov r1, #0x10 ldrsh r3, [r0, r1] ldr r1, [sp] mov r6, #0 strh r3, [r1, #2] add r1, #0x94 str r2, [r1] ldr r1, [sp] ldrh r2, [r0, #0x14] add r1, #0xa8 strh r2, [r1] ldr r1, [sp] add r1, #0xaa strh r6, [r1] ldr r1, [sp] ldrb r7, [r0, #0x18] add r1, #0xac strb r7, [r1] ldr r1, [sp] add r1, #0xad strb r6, [r1] ldrb r1, [r0, #0x1c] ldr r0, [sp] add r0, #0xae strb r1, [r0] cmp r7, #0 ble _022184D8 ldr r5, [sp] _022184BE: mov r4, ip add r3, r5, #4 mov r2, #4 _022184C4: ldmia r4!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _022184C4 ldr r0, [r4] add r6, r6, #1 str r0, [r3] add r5, #0x24 cmp r6, r7 blt _022184BE _022184D8: ldr r0, [sp] ldr r1, [sp, #0x28] add r0, #0x98 str r1, [r0] ldr r0, [sp] ldr r1, [sp, #0x2c] add r0, #0x9c str r1, [r0] ldr r0, [sp] ldr r1, [sp, #0x30] add r0, #0xa0 str r1, [r0] ldr r0, [sp] ldr r1, [sp, #0x34] add r0, #0xa4 str r1, [r0] ldr r0, [sp] mov r5, #0 add r0, #0xac ldrb r0, [r0] cmp r0, #0 ble _02218522 ldr r4, [sp] add r6, r5, #0 _02218508: add r0, r4, #0 add r0, #0x98 ldr r0, [r0] add r1, r6, #0 bl FUN_0200C644 ldr r0, [sp] add r5, r5, #1 add r0, #0xac ldrb r0, [r0] add r4, r4, #4 cmp r5, r0 blt _02218508 _02218522: pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02218524 MOD08_02218524: ; 0x02218524 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r5, r0, #0 mov r0, #0 add r2, sp, #0x10 mov r1, #1 _02218530: add r0, r0, #1 stmia r2!, {r1} cmp r0, #4 blt _02218530 add r0, r5, #0 add r0, #0xa8 ldrh r2, [r0] add r0, r5, #0 add r0, #0xaa ldrh r0, [r0] cmp r2, r0 bhi _02218570 add r0, r5, #0 add r0, #0xad ldrb r0, [r0] lsl r0, r0, #2 add r0, r5, r0 add r0, #0x98 ldr r0, [r0] bl FUN_0200C644 add r0, r5, #0 add r0, #0xad ldrb r0, [r0] add r1, r0, #1 add r0, r5, #0 add r0, #0xad strb r1, [r0] add r0, r5, #0 mov r1, #0 add r0, #0xaa strh r1, [r0] _02218570: add r0, r5, #0 add r0, #0xad ldrb r1, [r0] add r0, r5, #0 add r0, #0xac ldrb r0, [r0] cmp r1, r0 bhs _0221858E add r0, r5, #0 add r0, #0xaa ldrh r0, [r0] add r1, r0, #1 add r0, r5, #0 add r0, #0xaa strh r1, [r0] _0221858E: mov r0, #0 str r0, [sp] add r0, r5, #0 add r0, #0xad ldrb r0, [r0] cmp r0, #0 ble _0221862E add r0, sp, #0x10 add r7, r5, #4 str r0, [sp, #4] add r6, r5, #0 add r4, r5, #0 _022185A6: add r1, r5, #0 add r1, #0x94 ldr r1, [r1] add r0, r7, #0 blx r1 ldr r1, [sp, #4] cmp r0, #0 str r0, [r1] beq _02218604 add r0, r5, #0 add r0, #0xae ldrb r0, [r0] cmp r0, #0 bne _022185EA mov r1, #0 mov r2, #4 ldrsh r1, [r5, r1] ldrsh r2, [r6, r2] add r0, r4, #0 add r0, #0x98 add r1, r1, r2 mov r2, #2 ldrsh r3, [r5, r2] mov r2, #6 ldrsh r2, [r6, r2] lsl r1, r1, #0x10 ldr r0, [r0] add r2, r3, r2 lsl r2, r2, #0x10 asr r1, r1, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 b _02218610 _022185EA: add r0, r7, #0 add r1, sp, #0xc add r2, sp, #8 bl MOD08_0221825C add r0, r4, #0 add r0, #0x98 ldr r0, [r0] ldr r1, [sp, #0xc] ldr r2, [sp, #8] bl FUN_0200C884 b _02218610 _02218604: add r0, r4, #0 add r0, #0x98 ldr r0, [r0] mov r1, #0 bl FUN_0200C644 _02218610: ldr r0, [sp, #4] add r7, #0x24 add r0, r0, #4 str r0, [sp, #4] ldr r0, [sp] add r6, #0x24 add r0, r0, #1 str r0, [sp] add r0, r5, #0 add r0, #0xad ldrb r1, [r0] ldr r0, [sp] add r4, r4, #4 cmp r0, r1 blt _022185A6 _0221862E: add r5, #0xac ldrb r2, [r5] mov r3, #0 cmp r2, #0 ble _0221864E add r1, sp, #0x10 _0221863A: ldr r0, [r1] cmp r0, #1 bne _02218646 add sp, #0x20 mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02218646: add r3, r3, #1 add r1, r1, #4 cmp r3, r2 blt _0221863A _0221864E: mov r0, #0 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02218654 MOD08_02218654: ; 0x02218654 push {r3, r4, r5, lr} sub sp, #0x10 ldr r3, _02218684 ; =0x0000FFFF add r4, r1, #0 mov r1, #2 str r3, [sp] lsl r1, r1, #0x10 str r1, [sp, #4] ldr r1, _02218688 ; =0xFFFF8000 add r5, r0, #0 str r1, [sp, #8] str r2, [sp, #0xc] mov r1, #0 add r2, r3, #0 add r3, r1, #0 bl MOD08_02217D14 ldr r0, [r5, #4] add r1, r0, #0 mul r1, r4 str r1, [r5, #4] add sp, #0x10 pop {r3, r4, r5, pc} nop _02218684: .word 0x0000FFFF _02218688: .word 0xFFFF8000 thumb_func_start MOD08_0221868C MOD08_0221868C: ; 0x0221868C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 bl MOD08_02217ECC cmp r0, #0 bne _022186A8 mov r0, #1 str r0, [r4, #0x24] add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} _022186A8: mov r0, #0 ldrsh r1, [r4, r0] cmp r1, #0 bge _022186B2 strh r0, [r4] _022186B2: mov r0, #2 ldrsh r0, [r4, r0] cmp r0, #0 bge _022186BE mov r0, #0 strh r0, [r4, #2] _022186BE: mov r0, #0 ldrsh r1, [r4, r0] mov r0, #2 ldrsh r0, [r4, r0] lsl r0, r0, #8 orr r1, r0 ldr r0, _022186D0 ; =0x04000052 strh r1, [r0] pop {r3, r4, r5, pc} .align 2, 0 _022186D0: .word 0x04000052 thumb_func_start MOD08_022186D4 MOD08_022186D4: ; 0x022186D4 push {r4, r5, r6, lr} sub sp, #8 add r6, sp, #8 mov r5, #0x10 ldrsh r5, [r6, r5] add r4, r0, #0 str r5, [sp] ldr r5, [sp, #0x1c] lsl r5, r5, #0x10 lsr r5, r5, #0x10 str r5, [sp, #4] bl MOD08_02217E80 mov r2, #0 ldr r0, _02218700 ; =MOD08_0221868C add r1, r4, #0 str r2, [r4, #0x24] bl FUN_0200CA44 add sp, #8 pop {r4, r5, r6, pc} nop _02218700: .word MOD08_0221868C thumb_func_start MOD08_02218704 MOD08_02218704: ; 0x02218704 ldr r0, [r0, #0x24] bx lr thumb_func_start MOD08_02218708 MOD08_02218708: ; 0x02218708 push {r3, lr} ldr r0, [r1, #8] cmp r0, #0 beq _0221871C mov r0, #1 str r0, [r1, #0xc] ldr r0, [r1, #0x18] ldr r1, [r1, #0x10] blx r1 pop {r3, pc} _0221871C: bl FUN_020129C8 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02218724 MOD08_02218724: ; 0x02218724 push {r4, lr} add r4, r1, #0 ldr r0, [r4, #8] cmp r0, #0 beq _0221873E ldr r0, [r4, #0xc] cmp r0, #0 beq _0221873E ldr r0, [r4, #0x18] ldr r1, [r4, #0x14] blx r1 mov r0, #0 str r0, [r4, #0xc] _0221873E: pop {r4, pc} thumb_func_start MOD08_02218740 MOD08_02218740: ; 0x02218740 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r1, #0 add r6, r2, #0 add r7, r3, #0 cmp r5, #0 bne _02218752 bl ErrorHandling _02218752: mov r0, #1 str r0, [r5, #8] mov r2, #0 str r2, [r5, #0xc] str r4, [r5, #0x18] str r6, [r5, #0x10] ldr r0, _02218778 ; =MOD08_02218708 str r7, [r5, #0x14] add r1, r5, #0 bl FUN_0200CA98 str r0, [r5, #4] ldr r0, _0221877C ; =MOD08_02218724 add r1, r5, #0 mov r2, #0 bl FUN_0200CA60 str r0, [r5] pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02218778: .word MOD08_02218708 _0221877C: .word MOD08_02218724 thumb_func_start MOD08_02218780 MOD08_02218780: ; 0x02218780 push {r4, lr} add r4, r0, #0 bne _0221878A bl ErrorHandling _0221878A: ldr r0, [r4, #4] cmp r0, #0 beq _02218794 bl FUN_0200CAB4 _02218794: ldr r0, [r4] cmp r0, #0 beq _0221879E bl FUN_0200CAB4 _0221879E: bl FUN_020129C8 pop {r4, pc} thumb_func_start MOD08_022187A4 MOD08_022187A4: ; 0x022187A4 push {r4, lr} add r4, r0, #0 bne _022187AE bl ErrorHandling _022187AE: mov r0, #0 str r0, [r4, #8] pop {r4, pc} thumb_func_start MOD08_022187B4 MOD08_022187B4: ; 0x022187B4 push {r3, r4, r5, lr} add r4, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0201299C add r5, r0, #0 bl FUN_020129C8 mov r1, #0x62 lsl r1, r1, #4 ldr r1, [r4, r1] add r0, r5, #0 mov r2, #4 mov r3, #1 bl FUN_020129D8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022187D8 MOD08_022187D8: ; 0x022187D8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x1c] bl FUN_020129B4 add r0, r4, #0 bl MOD08_022187B4 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022187EC MOD08_022187EC: ; 0x022187EC ldr r3, _022187F0 ; =MOD08_022187B4 bx r3 .align 2, 0 _022187F0: .word MOD08_022187B4 thumb_func_start MOD08_022187F4 MOD08_022187F4: ; 0x022187F4 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r7, r2, #0 add r5, r0, #0 ldr r1, _02218864 ; =0x00000624 add r0, r7, #0 bl FUN_02016998 ldr r2, _02218864 ; =0x00000624 mov r1, #0 add r4, r0, #0 bl Call_FillMemWithValue cmp r4, #0 bne _02218816 bl ErrorHandling _02218816: mov r2, #0x32 add r1, r4, #0 lsl r2, r2, #4 add r0, r7, #0 add r1, #0x20 add r2, r4, r2 bl FUN_02012944 str r0, [r4, #0x1c] cmp r0, #0 bne _02218830 bl ErrorHandling _02218830: mov r0, #0x62 lsl r0, r0, #4 add r1, r4, #0 mov r2, #3 str r5, [r4, r0] add r0, r6, #0 add r1, #0x20 lsl r2, r2, #8 bl MIi_CpuClear32 mov r2, #0x32 lsl r2, r2, #4 add r1, r4, r2 add r0, r6, #0 sub r2, #0x20 bl MIi_CpuClear32 ldr r2, _02218868 ; =MOD08_022187D8 ldr r3, _0221886C ; =MOD08_022187EC add r0, r4, #0 add r1, r4, #0 bl MOD08_02218740 add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} nop _02218864: .word 0x00000624 _02218868: .word MOD08_022187D8 _0221886C: .word MOD08_022187EC thumb_func_start MOD08_02218870 MOD08_02218870: ; 0x02218870 push {r4, lr} add r4, r0, #0 bne _0221887A bl ErrorHandling _0221887A: add r0, r4, #0 bl MOD08_02218780 ldr r0, [r4, #0x1c] cmp r0, #0 beq _0221888A bl FUN_02012974 _0221888A: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218894 MOD08_02218894: ; 0x02218894 push {r4, lr} add r4, r0, #0 bne _0221889E bl ErrorHandling _0221889E: ldr r0, [r4, #0x1c] bl FUN_02012988 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022188A8 MOD08_022188A8: ; 0x022188A8 push {r4, lr} add r4, r0, #0 bne _022188B2 bl ErrorHandling _022188B2: add r0, r4, #0 bl MOD08_022187A4 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022188BC MOD08_022188BC: ; 0x022188BC push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x1c] bl FUN_02012B30 ldr r0, [r4, #0x1c] bl FUN_02012B68 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022188D0 MOD08_022188D0: ; 0x022188D0 ldr r3, _022188D8 ; =0x02012B69 ldr r0, [r0, #0x1c] bx r3 nop _022188D8: .word 0x02012B69 thumb_func_start MOD08_022188DC MOD08_022188DC: ; 0x022188DC push {r4, r5, r6, r7, lr} sub sp, #0x1c add r7, r0, #0 str r1, [sp, #0x14] ldr r0, [sp, #0x40] mov r1, #0x20 str r2, [sp, #0x18] add r5, r3, #0 bl FUN_02016998 add r4, r0, #0 bne _022188F8 bl ErrorHandling _022188F8: add r0, r4, #0 mov r1, #0 mov r2, #0x20 bl Call_FillMemWithValue ldr r0, [sp, #0x34] bl MOD08_022189A0 add r6, r0, #0 ldr r0, [sp, #0x40] bl FUN_02012A00 str r0, [r4, #0x1c] str r5, [sp] add r1, sp, #0x20 mov r0, #0x10 ldrsh r0, [r1, r0] add r1, r7, #0 str r0, [sp, #4] ldr r0, [sp, #0x3c] str r6, [sp, #8] str r0, [sp, #0xc] ldr r0, [sp, #0x38] str r0, [sp, #0x10] ldr r0, [r4, #0x1c] ldr r2, [sp, #0x14] ldr r3, [sp, #0x18] bl FUN_02012A30 ldr r2, _02218944 ; =MOD08_022188BC ldr r3, _02218948 ; =MOD08_022188D0 add r0, r4, #0 add r1, r4, #0 bl MOD08_02218740 add r0, r4, #0 add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 _02218944: .word MOD08_022188BC _02218948: .word MOD08_022188D0 thumb_func_start MOD08_0221894C MOD08_0221894C: ; 0x0221894C push {r4, lr} add r4, r0, #0 bne _02218956 bl ErrorHandling _02218956: add r0, r4, #0 bl MOD08_02218780 ldr r0, [r4, #0x1c] cmp r0, #0 beq _02218966 bl FUN_02012B00 _02218966: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218970 MOD08_02218970: ; 0x02218970 push {r4, lr} add r4, r0, #0 bne _0221897A bl ErrorHandling _0221897A: ldr r0, [r4, #0x1c] bl FUN_02012B20 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218984 MOD08_02218984: ; 0x02218984 push {r4, lr} add r4, r0, #0 bne _0221898E bl ErrorHandling _0221898E: add r0, r4, #0 bl MOD08_022187A4 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218998 MOD08_02218998: ; 0x02218998 lsl r1, r1, #0x10 orr r0, r1 bx lr .align 2, 0 thumb_func_start MOD08_022189A0 MOD08_022189A0: ; 0x022189A0 cmp r0, #3 bhi _022189C6 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _022189B0: ; jump table .short _022189B8 - _022189B0 - 2 ; case 0 .short _022189BC - _022189B0 - 2 ; case 1 .short _022189C0 - _022189B0 - 2 ; case 2 .short _022189C4 - _022189B0 - 2 ; case 3 _022189B8: ldr r0, _022189C8 ; =0x04000010 bx lr _022189BC: ldr r0, _022189CC ; =0x04000014 bx lr _022189C0: ldr r0, _022189D0 ; =0x04000018 bx lr _022189C4: ldr r0, _022189D4 ; =0x0400001C _022189C6: bx lr .align 2, 0 _022189C8: .word 0x04000010 _022189CC: .word 0x04000014 _022189D0: .word 0x04000018 _022189D4: .word 0x0400001C thumb_func_start MOD08_022189D8 MOD08_022189D8: ; 0x022189D8 add r2, r0, r2 lsr r0, r2, #0x1f add r0, r2, r0 asr r2, r0, #1 ldr r0, [sp] add r1, r1, r3 strh r2, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r1, r0, #1 ldr r0, [sp, #4] strh r1, [r0] bx lr .align 2, 0 thumb_func_start MOD08_022189F4 MOD08_022189F4: ; 0x022189F4 push {r3, lr} sub r1, r1, r3 neg r1, r1 sub r0, r0, r2 lsl r1, r1, #0x10 lsl r0, r0, #0x10 asr r1, r1, #0x10 add r2, r1, #0 asr r0, r0, #0x10 mul r2, r1 add r1, r0, #0 mul r1, r0 add r0, r2, r1 lsl r0, r0, #0xc bl FX_Sqrt ldr r1, [sp, #8] str r0, [r1] pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02218A1C MOD08_02218A1C: ; 0x02218A1C push {r4, r5, r6, lr} add r6, r0, #0 sub r0, r1, r3 neg r0, r0 lsl r0, r0, #0x10 sub r1, r6, r2 asr r4, r0, #0x10 lsl r1, r1, #0x10 ldr r5, [sp, #0x10] lsl r0, r4, #0xc asr r1, r1, #4 bl FX_Atan2 strh r0, [r5] ldrh r1, [r5] cmp r1, #0 beq _02218A4C cmp r4, #0 bge _02218A4C ldr r0, _02218A50 ; =0x00007FFF sub r1, r1, r0 ldr r0, _02218A54 ; =0x0000FFFF mul r0, r1 strh r0, [r5] _02218A4C: pop {r4, r5, r6, pc} nop _02218A50: .word 0x00007FFF _02218A54: .word 0x0000FFFF thumb_func_start MOD08_02218A58 MOD08_02218A58: ; 0x02218A58 cmp r2, #0 ldr r3, [r0] bge _02218A70 add r2, r3, r2 cmp r2, r1 ble _02218A6A str r2, [r0] mov r0, #0 bx lr _02218A6A: str r1, [r0] mov r0, #1 bx lr _02218A70: add r2, r3, r2 cmp r2, r1 bge _02218A7C str r2, [r0] mov r0, #0 bx lr _02218A7C: str r1, [r0] mov r0, #1 bx lr .align 2, 0 thumb_func_start MOD08_02218A84 MOD08_02218A84: ; 0x02218A84 push {r4, lr} sub sp, #8 add r4, r1, #0 ldr r0, [r4] cmp r0, #0 beq _02218AF4 mov r0, #0x17 ldrsb r1, [r4, r0] add r1, r1, #1 strb r1, [r4, #0x17] ldrsb r1, [r4, r0] mov r0, #0x16 ldrsb r0, [r4, r0] cmp r1, r0 blt _02218AF4 mov r0, #0 strb r0, [r4, #0x17] ldrb r0, [r4, #0x14] str r0, [sp] ldrh r0, [r4, #0x10] str r0, [sp, #4] ldrh r2, [r4, #0xc] ldrh r3, [r4, #0xe] ldr r0, [r4, #0x18] ldr r1, [r4, #8] bl FUN_020039E8 ldrb r3, [r4, #0x13] ldrb r1, [r4, #0x14] cmp r1, r3 bne _02218ACA mov r0, #0 add sp, #8 str r0, [r4] pop {r4, pc} _02218ACA: mov r0, #0x15 ldrsb r2, [r4, r0] add r1, r1, r2 lsl r0, r1, #0x18 asr r0, r0, #0x18 cmp r2, #0 ble _02218AE8 cmp r0, r3 ble _02218AE2 add sp, #8 strb r3, [r4, #0x14] pop {r4, pc} _02218AE2: add sp, #8 strb r1, [r4, #0x14] pop {r4, pc} _02218AE8: cmp r0, r3 bge _02218AF2 add sp, #8 strb r3, [r4, #0x14] pop {r4, pc} _02218AF2: strb r1, [r4, #0x14] _02218AF4: add sp, #8 pop {r4, pc} thumb_func_start MOD08_02218AF8 MOD08_02218AF8: ; 0x02218AF8 push {r4, lr} add r4, r0, #0 bne _02218B02 bl ErrorHandling _02218B02: ldr r0, [r4] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218B08 MOD08_02218B08: ; 0x02218B08 push {r4, lr} add r4, r0, #0 bne _02218B12 bl ErrorHandling _02218B12: ldr r0, [r4, #4] bl FUN_0200CAB4 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_start MOD08_02218B20 MOD08_02218B20: ; 0x02218B20 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r0, r1, #0 mov r1, #0x1c add r6, r2, #0 add r7, r3, #0 bl FUN_02016998 add r4, r0, #0 bne _02218B38 bl ErrorHandling _02218B38: str r5, [r4, #0x18] str r6, [r4, #8] strh r7, [r4, #0xc] add r1, sp, #8 ldrh r0, [r1, #0x10] strh r0, [r4, #0xe] ldrh r0, [r1, #0x24] strh r0, [r4, #0x10] ldrb r2, [r1, #0x1c] add r0, sp, #0x28 ldrb r0, [r0] strb r2, [r4, #0x12] strb r0, [r4, #0x13] strb r2, [r4, #0x14] mov r0, #0x14 ldrsb r0, [r1, r0] strb r0, [r4, #0x16] strb r0, [r4, #0x17] ldrb r2, [r4, #0x12] ldrb r0, [r4, #0x13] cmp r2, r0 bhs _02218B6A mov r0, #0x18 ldrsb r0, [r1, r0] b _02218B70 _02218B6A: mov r0, #0x18 ldrsb r0, [r1, r0] neg r0, r0 _02218B70: strb r0, [r4, #0x15] mov r0, #1 str r0, [r4] ldr r0, _02218B88 ; =MOD08_02218A84 ldr r2, [sp, #0x30] add r1, r4, #0 bl FUN_0200CA44 str r0, [r4, #4] add r0, r4, #0 pop {r3, r4, r5, r6, r7, pc} nop _02218B88: .word MOD08_02218A84 thumb_func_start MOD08_02218B8C MOD08_02218B8C: ; 0x02218B8C push {r4, r5, r6, r7} mov r7, #0 cmp r1, #0 ble _02218BCE mov r2, #0x97 _02218B96: ldrh r6, [r0] mov r3, #0x1f add r7, r7, #1 asr r4, r6, #0xa and r4, r3 add r5, r4, #0 mov r3, #0x1d mul r5, r3 mov r3, #0x1f and r3, r6 mov r4, #0x4c mul r4, r3 asr r6, r6, #5 mov r3, #0x1f and r3, r6 add r6, r3, #0 mul r6, r2 add r3, r4, r6 add r3, r5, r3 asr r5, r3, #8 lsl r4, r5, #0xa lsl r3, r5, #5 orr r3, r4 orr r3, r5 strh r3, [r0] add r0, r0, #2 cmp r7, r1 blt _02218B96 _02218BCE: pop {r4, r5, r6, r7} bx lr .align 2, 0 thumb_func_start MOD08_02218BD4 MOD08_02218BD4: ; 0x02218BD4 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_02215504 mov r1, #0 bl FUN_02003204 add r4, r0, #0 add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02218BF8 add r0, r4, #0 mov r1, #0x30 bl MOD08_02218B8C pop {r3, r4, r5, pc} _02218BF8: add r0, r4, #0 mov r1, #0x80 bl MOD08_02218B8C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02218C04 MOD08_02218C04: ; 0x02218C04 push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 bl MOD08_02215504 add r4, r0, #0 add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02218C30 mov r1, #0 str r1, [sp] mov r0, #0x60 str r0, [sp, #4] add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 bl FUN_020031B8 add sp, #8 pop {r3, r4, r5, pc} _02218C30: mov r1, #0 mov r0, #1 str r1, [sp] lsl r0, r0, #8 str r0, [sp, #4] add r0, r4, #0 add r2, r1, #0 add r3, r1, #0 bl FUN_020031B8 add sp, #8 pop {r3, r4, r5, pc} thumb_func_start MOD08_02218C48 MOD08_02218C48: ; 0x02218C48 cmp r0, #0x54 blo _02218C50 mov r0, #0 bx lr _02218C50: lsl r1, r0, #2 ldr r0, _02218C58 ; =0x0222C384 ldr r0, [r0, r1] bx lr .align 2, 0 _02218C58: .word 0x0222C384 thumb_func_start MOD08_02218C5C MOD08_02218C5C: ; 0x02218C5C cmp r0, #0x21 blo _02218C64 mov r0, #0 bx lr _02218C64: lsl r1, r0, #2 ldr r0, _02218C6C ; =0x0222C300 ldr r0, [r0, r1] bx lr .align 2, 0 _02218C6C: .word 0x0222C300 thumb_func_start MOD08_02218C70 MOD08_02218C70: ; 0x02218C70 bx lr .align 2, 0 thumb_func_start MOD08_02218C74 MOD08_02218C74: ; 0x02218C74 push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _02218C86 cmp r0, #1 beq _02218C8C pop {r4, pc} _02218C86: add r0, r0, #1 strb r0, [r4] pop {r4, pc} _02218C8C: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_start MOD08_02218C9C MOD08_02218C9C: ; 0x02218C9C push {r4, lr} add r4, r0, #0 mov r0, #5 mov r1, #8 bl FUN_02016998 add r2, r0, #0 mov r0, #0 strb r0, [r2] mov r3, #1 ldr r1, _02218CC0 ; =MOD08_02218C74 add r0, r4, #0 lsl r3, r3, #0xc str r4, [r2, #4] bl MOD08_022123E4 pop {r4, pc} nop _02218CC0: .word MOD08_02218C74 thumb_func_start MOD08_02218CC4 MOD08_02218CC4: ; 0x02218CC4 push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _02218CD6 cmp r0, #1 beq _02218CDC pop {r4, pc} _02218CD6: add r0, r0, #1 strb r0, [r4] pop {r4, pc} _02218CDC: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212448 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_start MOD08_02218CEC MOD08_02218CEC: ; 0x02218CEC push {r4, lr} add r4, r0, #0 mov r0, #5 mov r1, #8 bl FUN_02016998 add r2, r0, #0 mov r0, #0 strb r0, [r2] mov r3, #1 ldr r1, _02218D10 ; =MOD08_02218CC4 add r0, r4, #0 lsl r3, r3, #0xc str r4, [r2, #4] bl MOD08_0221241C pop {r4, pc} nop _02218D10: .word MOD08_02218CC4 thumb_func_start MOD08_02218D14 MOD08_02218D14: ; 0x02218D14 push {r4, lr} add r4, r1, #0 ldrb r1, [r4] cmp r1, #0 beq _02218D24 cmp r1, #1 beq _02218D2A pop {r4, pc} _02218D24: add r0, r1, #1 strb r0, [r4] pop {r4, pc} _02218D2A: bl FUN_0200CAB4 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02218D38 MOD08_02218D38: ; 0x02218D38 push {r4, lr} add r4, r0, #0 mov r0, #5 mov r1, #8 bl FUN_02016998 add r1, r0, #0 mov r0, #0 strb r0, [r1] mov r2, #1 ldr r0, _02218D58 ; =MOD08_02218D14 lsl r2, r2, #0xc str r4, [r1, #4] bl FUN_0200CA44 pop {r4, pc} .align 2, 0 _02218D58: .word MOD08_02218D14 thumb_func_start MOD08_02218D5C MOD08_02218D5C: ; 0x02218D5C push {r4, r5, r6, lr} add r5, r1, #0 add r6, r0, #0 ldrb r0, [r5] cmp r0, #0 beq _02218D6E cmp r0, #1 beq _02218DB4 pop {r4, r5, r6, pc} _02218D6E: ldr r0, [r5, #0x14] ldr r0, [r0] bl FUN_0200C59C ldr r0, [r5, #0x18] ldr r0, [r0] bl FUN_0200C59C ldr r0, [r5, #0x1c] ldr r0, [r0] bl FUN_0200C59C ldr r0, [r5, #0x14] mov r1, #1 ldr r0, [r0] mov r2, #0 bl FUN_0200C7FC ldr r0, [r5, #0x18] mov r1, #0 ldr r0, [r0] mvn r1, r1 mov r2, #0 bl FUN_0200C7FC ldr r0, [r5, #0x1c] mov r1, #1 ldr r0, [r0] add r2, r1, #0 bl FUN_0200C7FC ldr r0, [r5, #0xc] bl FUN_0200BC1C pop {r4, r5, r6, pc} _02218DB4: ldr r0, [r5, #0x10] ldr r4, [r5, #4] bl FUN_0200C3DC add r0, r5, #0 bl FUN_02016A18 add r0, r4, #0 add r1, r6, #0 bl MOD08_02212438 pop {r4, r5, r6, pc} thumb_func_start MOD08_02218DCC MOD08_02218DCC: ; 0x02218DCC push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r6, r1, #0 mov r1, #0x73 str r0, [sp] mov r0, #5 lsl r1, r1, #2 add r7, r2, #0 add r5, r3, #0 bl FUN_02016998 add r4, r0, #0 bne _02218DEA bl ErrorHandling _02218DEA: mov r0, #0 strb r0, [r4] str r6, [r4, #8] str r7, [r4, #0xc] ldr r0, [sp] str r5, [r4, #0x10] str r0, [r4, #4] ldr r1, [sp] add r0, sp, #4 bl MOD08_02215474 str r5, [r4, #0x14] mov r6, #1 add r5, r4, #4 add r7, sp, #4 _02218E08: ldr r0, [r4, #8] ldr r1, [r4, #0xc] add r2, r7, #0 bl FUN_0200C154 str r0, [r5, #0x14] add r6, r6, #1 add r5, r5, #4 cmp r6, #3 blt _02218E08 mov r3, #1 ldr r0, [sp] ldr r1, _02218E30 ; =MOD08_02218D5C add r2, r4, #0 lsl r3, r3, #0xc bl MOD08_022123E4 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} nop _02218E30: .word MOD08_02218D5C thumb_func_start MOD08_02218E34 MOD08_02218E34: ; 0x02218E34 push {r4, lr} mov r1, #0xc add r2, r1, #0 add r2, #0xf4 add r4, r0, #0 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 add r0, r4, #0 add r2, #0xf3 bl FUN_02007558 pop {r4, pc} thumb_func_start MOD08_02218E50 MOD08_02218E50: ; 0x02218E50 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r2, r0, #0 ldrb r0, [r5, #4] cmp r0, #0 beq _02218E62 cmp r0, #1 beq _02218E84 b _02218F4E _02218E62: mov r0, #0x26 ldrsh r0, [r5, r0] mov r1, #0x20 mov r2, #0x22 str r0, [sp] mov r3, #0x24 add r0, r5, #0 ldrsh r1, [r5, r1] ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] add r0, #0x7c bl MOD08_022183C0 ldrb r0, [r5, #4] add r0, r0, #1 strb r0, [r5, #4] pop {r3, r4, r5, r6, r7, pc} _02218E84: add r0, r5, #0 add r0, #0x7c bl MOD08_022183F0 cmp r0, #0 bne _02218E98 ldrb r0, [r5, #4] add r0, r0, #1 strb r0, [r5, #4] pop {r3, r4, r5, r6, r7, pc} _02218E98: ldr r2, [r5, #0x28] mov r1, #1 lsl r1, r1, #8 add r0, r2, #0 and r0, r1 cmp r0, r1 bne _02218EE4 ldr r0, [r5] mov r6, #0 cmp r0, #0 ble _02218F32 add r4, r5, #0 mov r7, #0x32 _02218EB2: ldr r0, [r4, #0x34] cmp r0, #0 beq _02218ED8 mov r2, #0x7c mov r3, #0x30 ldrsh r2, [r5, r2] ldrsh r3, [r4, r3] mov r1, #0 add r2, r2, r3 bl FUN_02007558 mov r2, #0x7e ldrsh r3, [r5, r2] ldrsh r2, [r4, r7] ldr r0, [r4, #0x34] mov r1, #1 add r2, r3, r2 bl FUN_02007558 _02218ED8: ldr r0, [r5] add r6, r6, #1 add r4, #0x14 cmp r6, r0 blt _02218EB2 b _02218F32 _02218EE4: lsl r0, r1, #1 and r2, r0 cmp r2, r0 bne _02218F32 ldr r0, [r5] mov r6, #0 cmp r0, #0 ble _02218F2C add r4, r5, #0 mov r7, #0x32 _02218EF8: ldr r0, [r4, #0x38] cmp r0, #0 beq _02218F22 mov r1, #0x7c mov r2, #0x30 ldrsh r1, [r5, r1] ldrsh r2, [r4, r2] add r1, r1, r2 mov r2, #0x7e ldrsh r3, [r5, r2] ldrsh r2, [r4, r7] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 ldr r0, [r4, #0x38] bl FUN_0200C5A8 _02218F22: ldr r0, [r5] add r6, r6, #1 add r4, #0x14 cmp r6, r0 blt _02218EF8 _02218F2C: ldr r0, [r5, #0x10] bl FUN_0200BC1C _02218F32: mov r0, #1 ldr r1, [r5, #0x28] lsl r0, r0, #0xa and r1, r0 cmp r1, r0 bne _02218F5C mov r3, #0x7c ldrsh r3, [r5, r3] ldr r0, [r5, #0x18] mov r1, #3 mov r2, #0 bl FUN_020179E0 pop {r3, r4, r5, r6, r7, pc} _02218F4E: ldr r0, [r5, #8] add r1, r2, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 _02218F5C: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02218F60 MOD08_02218F60: ; 0x02218F60 push {r3, r4, r5, lr} mov r1, #0xa0 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #4 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 strh r0, [r4, #0x20] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0x22] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 strh r0, [r4, #0x24] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #0x26] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 mov r2, #1 lsl r2, r2, #8 str r0, [r4, #0x28] add r1, r0, #0 and r0, r2 cmp r0, r2 bne _02218FC0 add r2, r4, #0 add r0, r5, #0 add r2, #0x2c add r3, r4, #0 bl MOD08_02227BAC b _02218FD6 _02218FC0: lsl r0, r2, #1 add r3, r1, #0 and r3, r0 cmp r3, r0 bne _02218FD6 add r2, r4, #0 add r0, r5, #0 add r2, #0x2c add r3, r4, #0 bl MOD08_02227F88 _02218FD6: ldr r0, [r4, #8] ldr r1, _02218FE4 ; =MOD08_02218E50 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _02218FE4: .word MOD08_02218E50 thumb_func_start MOD08_02218FE8 MOD08_02218FE8: ; 0x02218FE8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4, #0x1c] cmp r0, #3 bhi _022190B2 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02219000: ; jump table .short _02219008 - _02219000 - 2 ; case 0 .short _02219026 - _02219000 - 2 ; case 1 .short _02219068 - _02219000 - 2 ; case 2 .short _02219074 - _02219000 - 2 ; case 3 _02219008: ldrh r0, [r4, #0x18] mov r1, #4 mov r2, #0x39 str r0, [sp] ldrh r3, [r4, #0x16] ldr r0, _02219154 ; =0x04000050 bl G2x_SetBlendAlpha_ mov r0, #2 mov r1, #1 bl FUN_0201797C ldrb r0, [r4, #0x1c] add r0, r0, #1 strb r0, [r4, #0x1c] _02219026: ldrh r1, [r4, #8] ldrh r2, [r4, #0x16] mov r0, #0 sub r1, r1, #2 cmp r2, r1 bge _02219038 add r1, r2, #2 strh r1, [r4, #0x16] b _0221903A _02219038: add r0, r0, #1 _0221903A: ldrh r1, [r4, #0x18] cmp r1, #9 bls _02219046 sub r1, r1, #2 strh r1, [r4, #0x18] b _02219048 _02219046: add r0, r0, #1 _02219048: cmp r0, #2 bne _0221905A ldrh r0, [r4, #8] strh r0, [r4, #0x16] mov r0, #7 strh r0, [r4, #0x18] ldrb r0, [r4, #0x1c] add r0, r0, #1 strb r0, [r4, #0x1c] _0221905A: ldrh r0, [r4, #0x18] ldrh r1, [r4, #0x16] lsl r0, r0, #8 orr r1, r0 ldr r0, _02219158 ; =0x04000052 strh r1, [r0] b _022190CA _02219068: ldr r1, [r4, #4] cmp r1, #0 beq _022190CA add r0, r0, #1 strb r0, [r4, #0x1c] b _022190CA _02219074: ldrh r0, [r4, #0x16] mov r1, #0 cmp r0, #2 bls _02219082 sub r0, r0, #2 strh r0, [r4, #0x16] b _02219084 _02219082: add r1, r1, #1 _02219084: ldrh r0, [r4, #0x18] cmp r0, #0x1d bhs _02219090 add r0, r0, #2 strh r0, [r4, #0x18] b _02219092 _02219090: add r1, r1, #1 _02219092: cmp r1, #2 bne _022190A4 mov r0, #0 strh r0, [r4, #0x16] mov r0, #0x1f strh r0, [r4, #0x18] ldrb r0, [r4, #0x1c] add r0, r0, #1 strb r0, [r4, #0x1c] _022190A4: ldrh r0, [r4, #0x18] ldrh r1, [r4, #0x16] lsl r0, r0, #8 orr r1, r0 ldr r0, _02219158 ; =0x04000052 strh r1, [r0] b _022190CA _022190B2: mov r0, #2 mov r1, #0 bl FUN_0201797C ldr r0, [r4, #0x20] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _022190CA: mov r1, #0x10 ldrsh r3, [r4, r1] cmp r3, #0 ble _022190DC mov r0, #0xc ldrsh r2, [r4, r0] lsl r0, r1, #5 cmp r2, r0 bge _022190EA _022190DC: cmp r3, #0 bge _022190EE mov r0, #0xc ldrsh r1, [r4, r0] ldr r0, _0221915C ; =0xFFFFFE64 cmp r1, r0 bgt _022190EE _022190EA: mov r0, #1 str r0, [r4, #4] _022190EE: mov r0, #0xa ldrsh r1, [r4, r0] mov r0, #0xe ldrsh r0, [r4, r0] add r0, r1, r0 strh r0, [r4, #0xa] mov r0, #0xc ldrsh r2, [r4, r0] mov r0, #0x10 ldrsh r1, [r4, r0] add r1, r2, r1 strh r1, [r4, #0xc] ldrh r2, [r4, #0x12] ldrh r1, [r4, #0x14] cmp r2, r1 bhs _02219132 ldrsh r0, [r4, r0] cmp r0, #0 bge _02219118 add r0, r0, #1 b _0221911A _02219118: mov r0, #0 _0221911A: strh r0, [r4, #0x10] mov r0, #0xe ldrsh r0, [r4, r0] cmp r0, #0 bge _02219128 add r0, r0, #1 b _0221912A _02219128: mov r0, #0 _0221912A: strh r0, [r4, #0xe] mov r0, #0 strh r0, [r4, #0x14] b _02219136 _02219132: add r0, r1, #1 strh r0, [r4, #0x14] _02219136: mov r3, #0xa ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #0 bl FUN_020179E0 mov r3, #0xc ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #3 bl FUN_020179E0 pop {r3, r4, r5, pc} .align 2, 0 _02219154: .word 0x04000050 _02219158: .word 0x04000052 _0221915C: .word 0xFFFFFE64 thumb_func_start MOD08_02219160 MOD08_02219160: ; 0x02219160 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 mov r1, #0xb8 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r5, #0 add r1, #0x1c bl MOD08_02227B70 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0xa] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 strh r0, [r4, #0xc] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #0xe] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strh r0, [r4, #0x10] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 strh r0, [r4, #8] add r0, r5, #0 mov r1, #7 bl MOD08_02212498 strh r0, [r4, #0x12] mov r0, #0 strh r0, [r4, #0x14] ldr r0, [r4] cmp r0, #0 beq _0221920C add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 bne _0221920C mov r0, #0xa ldrsh r1, [r4, r0] sub r0, #0xb mul r0, r1 strh r0, [r4, #0xa] mov r1, #0xc add r0, r1, #0 ldrsh r2, [r4, r1] sub r0, #0xd mul r0, r2 strh r0, [r4, #0xc] mov r0, #0xe ldrsh r2, [r4, r0] sub r0, #0xf mul r0, r2 strh r0, [r4, #0xe] mov r0, #0x10 ldrsh r2, [r4, r0] sub r0, #0x11 mul r0, r2 strh r0, [r4, #0x10] ldrsh r0, [r4, r1] sub r0, #0x54 strh r0, [r4, #0xc] b _02219214 _0221920C: mov r0, #0xc ldrsh r0, [r4, r0] add r0, #0x54 strh r0, [r4, #0xc] _02219214: add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02219228 mov r0, #0xe ldrsh r1, [r4, r0] sub r0, #0xf mul r0, r1 strh r0, [r4, #0xe] _02219228: mov r1, #0 strh r1, [r4, #0x16] mov r0, #0x1f strh r0, [r4, #0x18] mov r0, #2 str r1, [r4, #4] bl FUN_0201797C add r0, r5, #0 mov r1, #0 bl MOD08_02212498 mov r1, #0 add r7, r0, #0 bl MOD08_022156AC add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r0, [sp, #0xc] ldr r2, [r4, #0x30] mov r0, #7 add r1, r6, #0 mov r3, #2 bl FUN_0200687C add r0, r7, #0 mov r1, #1 bl MOD08_022156AC add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 add r3, r0, #0 mov r0, #0 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x90 str r0, [sp, #8] ldr r0, [r4, #0x34] mov r1, #7 add r2, r6, #0 bl FUN_020030E8 ldr r0, [r4, #0x30] mov r1, #2 bl FUN_02018744 add r0, r5, #0 mov r6, #2 bl MOD08_02212004 cmp r0, #1 bne _022192A8 mov r6, #4 b _022192BC _022192A8: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 bne _022192BC mov r6, #3 _022192BC: add r0, r7, #0 add r1, r6, #0 bl MOD08_022156AC add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r0, [sp, #0xc] ldr r2, [r4, #0x30] mov r0, #7 add r1, r6, #0 mov r3, #2 bl FUN_020068C8 mov r3, #0xa ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #0 bl FUN_020179E0 mov r3, #0xc ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #3 bl FUN_020179E0 ldr r0, [r4, #0x20] ldr r1, _02219310 ; =MOD08_02218FE8 add r2, r4, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _02219310: .word MOD08_02218FE8 thumb_func_start MOD08_02219314 MOD08_02219314: ; 0x02219314 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4, #0x1c] cmp r0, #3 bhi _022193DA add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0221932C: ; jump table .short _02219334 - _0221932C - 2 ; case 0 .short _02219352 - _0221932C - 2 ; case 1 .short _02219390 - _0221932C - 2 ; case 2 .short _0221939C - _0221932C - 2 ; case 3 _02219334: ldrh r0, [r4, #0x18] mov r1, #4 mov r2, #0x39 str r0, [sp] ldrh r3, [r4, #0x16] ldr r0, _0221947C ; =0x04000050 bl G2x_SetBlendAlpha_ mov r0, #2 mov r1, #1 bl FUN_0201797C ldrb r0, [r4, #0x1c] add r0, r0, #1 strb r0, [r4, #0x1c] _02219352: ldrh r0, [r4, #0x16] mov r1, #0 cmp r0, #0x10 bhs _02219360 add r0, r0, #2 strh r0, [r4, #0x16] b _02219362 _02219360: add r1, r1, #1 _02219362: ldrh r0, [r4, #0x18] cmp r0, #4 bls _0221936E sub r0, r0, #2 strh r0, [r4, #0x18] b _02219370 _0221936E: add r1, r1, #1 _02219370: cmp r1, #2 bne _02219382 mov r0, #0x10 strh r0, [r4, #0x16] mov r0, #4 strh r0, [r4, #0x18] ldrb r0, [r4, #0x1c] add r0, r0, #1 strb r0, [r4, #0x1c] _02219382: ldrh r0, [r4, #0x18] ldrh r1, [r4, #0x16] lsl r0, r0, #8 orr r1, r0 ldr r0, _02219480 ; =0x04000052 strh r1, [r0] b _022193F2 _02219390: ldr r1, [r4, #4] cmp r1, #0 beq _022193F2 add r0, r0, #1 strb r0, [r4, #0x1c] b _022193F2 _0221939C: ldrh r0, [r4, #0x16] mov r1, #0 cmp r0, #2 bls _022193AA sub r0, r0, #2 strh r0, [r4, #0x16] b _022193AC _022193AA: add r1, r1, #1 _022193AC: ldrh r0, [r4, #0x18] cmp r0, #0x10 bhs _022193B8 add r0, r0, #2 strh r0, [r4, #0x18] b _022193BA _022193B8: add r1, r1, #1 _022193BA: cmp r1, #2 bne _022193CC mov r0, #0 strh r0, [r4, #0x16] mov r0, #0x1f strh r0, [r4, #0x18] ldrb r0, [r4, #0x1c] add r0, r0, #1 strb r0, [r4, #0x1c] _022193CC: ldrh r0, [r4, #0x18] ldrh r1, [r4, #0x16] lsl r0, r0, #8 orr r1, r0 ldr r0, _02219480 ; =0x04000052 strh r1, [r0] b _022193F2 _022193DA: mov r0, #2 mov r1, #0 bl FUN_0201797C ldr r0, [r4, #0x20] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _022193F2: mov r1, #0x10 ldrsh r3, [r4, r1] cmp r3, #0 ble _02219404 mov r0, #0xc ldrsh r2, [r4, r0] lsl r0, r1, #5 cmp r2, r0 bge _02219412 _02219404: cmp r3, #0 bge _02219416 mov r0, #0xc ldrsh r1, [r4, r0] ldr r0, _02219484 ; =0xFFFFFE64 cmp r1, r0 bgt _02219416 _02219412: mov r0, #1 str r0, [r4, #4] _02219416: mov r0, #0xa ldrsh r1, [r4, r0] mov r0, #0xe ldrsh r0, [r4, r0] add r0, r1, r0 strh r0, [r4, #0xa] mov r0, #0xc ldrsh r2, [r4, r0] mov r0, #0x10 ldrsh r1, [r4, r0] add r1, r2, r1 strh r1, [r4, #0xc] ldrh r2, [r4, #0x12] ldrh r1, [r4, #0x14] cmp r2, r1 bhs _0221945A ldrsh r0, [r4, r0] cmp r0, #0 bge _02219440 add r0, r0, #1 b _02219442 _02219440: mov r0, #0 _02219442: strh r0, [r4, #0x10] mov r0, #0xe ldrsh r0, [r4, r0] cmp r0, #0 bge _02219450 add r0, r0, #1 b _02219452 _02219450: mov r0, #0 _02219452: strh r0, [r4, #0xe] mov r0, #0 strh r0, [r4, #0x14] b _0221945E _0221945A: add r0, r1, #1 strh r0, [r4, #0x14] _0221945E: mov r3, #0xa ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #0 bl FUN_020179E0 mov r3, #0xc ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #3 bl FUN_020179E0 pop {r3, r4, r5, pc} .align 2, 0 _0221947C: .word 0x04000050 _02219480: .word 0x04000052 _02219484: .word 0xFFFFFE64 thumb_func_start MOD08_02219488 MOD08_02219488: ; 0x02219488 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 mov r1, #0xb8 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r5, #0 add r1, #0x1c bl MOD08_02227B70 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0xa] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 strh r0, [r4, #0xc] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #0xe] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strh r0, [r4, #0x10] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 strh r0, [r4, #8] add r0, r5, #0 mov r1, #7 bl MOD08_02212498 strh r0, [r4, #0x12] mov r0, #0 strh r0, [r4, #0x14] ldr r0, [r4] cmp r0, #0 beq _02219534 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 bne _02219534 mov r0, #0xa ldrsh r1, [r4, r0] sub r0, #0xb mul r0, r1 strh r0, [r4, #0xa] mov r1, #0xc add r0, r1, #0 ldrsh r2, [r4, r1] sub r0, #0xd mul r0, r2 strh r0, [r4, #0xc] mov r0, #0xe ldrsh r2, [r4, r0] sub r0, #0xf mul r0, r2 strh r0, [r4, #0xe] mov r0, #0x10 ldrsh r2, [r4, r0] sub r0, #0x11 mul r0, r2 strh r0, [r4, #0x10] ldrsh r0, [r4, r1] sub r0, #0x54 strh r0, [r4, #0xc] b _0221953C _02219534: mov r0, #0xc ldrsh r0, [r4, r0] add r0, #0x54 strh r0, [r4, #0xc] _0221953C: add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _02219550 mov r0, #0xe ldrsh r1, [r4, r0] sub r0, #0xf mul r0, r1 strh r0, [r4, #0xe] _02219550: mov r0, #4 strh r0, [r4, #0x16] mov r0, #0x10 strh r0, [r4, #0x18] mov r1, #0 strh r1, [r4, #0x16] strh r0, [r4, #0x18] mov r0, #2 str r1, [r4, #4] bl FUN_0201797C add r0, r5, #0 mov r1, #0 bl MOD08_02212498 mov r1, #0 add r7, r0, #0 bl MOD08_022156AC add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r0, [sp, #0xc] ldr r2, [r4, #0x30] mov r0, #7 add r1, r6, #0 mov r3, #2 bl FUN_0200687C add r0, r7, #0 mov r1, #1 bl MOD08_022156AC add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 add r3, r0, #0 mov r0, #0 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x90 str r0, [sp, #8] ldr r0, [r4, #0x34] mov r1, #7 add r2, r6, #0 bl FUN_020030E8 ldr r0, [r4, #0x30] mov r1, #2 bl FUN_02018744 add r0, r5, #0 mov r6, #2 bl MOD08_02212004 cmp r0, #1 bne _022195D6 mov r6, #4 b _022195EA _022195D6: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 bne _022195EA mov r6, #3 _022195EA: add r0, r7, #0 add r1, r6, #0 bl MOD08_022156AC add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 mov r1, #0 str r1, [sp] str r1, [sp, #4] mov r1, #1 str r1, [sp, #8] str r0, [sp, #0xc] ldr r2, [r4, #0x30] mov r0, #7 add r1, r6, #0 mov r3, #2 bl FUN_020068C8 mov r3, #0xa ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #0 bl FUN_020179E0 mov r3, #0xc ldrsh r3, [r4, r3] ldr r0, [r4, #0x30] mov r1, #2 mov r2, #3 bl FUN_020179E0 ldr r0, [r4, #0x20] ldr r1, _0221963C ; =MOD08_02219314 add r2, r4, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221963C: .word MOD08_02219314 thumb_func_start MOD08_02219640 MOD08_02219640: ; 0x02219640 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _02219656 cmp r0, #1 beq _02219656 cmp r0, #2 beq _02219688 pop {r3, r4, r5, pc} _02219656: add r0, r4, #0 add r0, #0xc bl MOD08_02218058 cmp r0, #1 bne _02219672 ldr r2, [r4, #0xc] ldr r0, [r4, #8] lsl r2, r2, #0x10 mov r1, #9 lsr r2, r2, #0x10 bl FUN_02007558 pop {r3, r4, r5, pc} _02219672: add r0, r4, #0 ldr r1, [r4, #0xc] ldr r2, [r4, #0x20] ldr r3, [r4, #0x24] add r0, #0xc bl MOD08_02218008 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, pc} _02219688: ldr r0, [r4, #8] mov r1, #0xa mov r2, #0 bl FUN_02007558 ldr r0, [r4, #8] mov r1, #0xb mov r2, #0 bl FUN_02007558 ldr r0, [r4, #8] mov r1, #9 mov r2, #0 bl FUN_02007558 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022196B8 MOD08_022196B8: ; 0x022196B8 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 bl MOD08_02212014 mov r1, #0x2c bl FUN_02016998 add r4, r0, #0 mov r0, #0 strb r0, [r4] str r5, [r4, #4] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [r4, #0x24] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #0x20] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 add r7, r0, #0 beq _022196F2 cmp r7, #2 bne _022196FC _022196F2: ldr r0, [r4, #4] bl MOD08_02212460 str r0, [sp] b _02219704 _022196FC: ldr r0, [r4, #4] bl MOD08_02212458 str r0, [sp] _02219704: add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r2, r0, #0 add r0, r4, #0 ldr r1, [r4, #0x20] ldr r3, [r4, #0x24] add r0, #0xc bl MOD08_02218008 ldr r1, [sp] add r0, r5, #0 bl MOD08_02217C1C add r6, r0, #0 ldr r0, [r4, #0x14] add r1, r0, #0 mul r1, r6 str r1, [r4, #0x14] cmp r7, #2 bne _02219736 mov r0, #0 mvn r0, r0 mul r6, r0 _02219736: ldr r0, [r4, #4] ldr r1, [sp] bl MOD08_022154D4 str r0, [r4, #8] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 cmp r0, #1 bne _02219760 add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strh r0, [r4, #0x28] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 b _02219768 _02219760: mov r0, #0x28 add r1, r6, #0 mul r1, r0 strh r1, [r4, #0x28] _02219768: strh r0, [r4, #0x2a] mov r2, #0x28 ldrsh r2, [r4, r2] ldr r0, [r4, #8] mov r1, #0xa bl FUN_02007558 mov r2, #0x2a ldrsh r2, [r4, r2] ldr r0, [r4, #8] mov r1, #0xb bl FUN_02007558 ldr r0, [r4, #4] ldr r1, _02219790 ; =MOD08_02219640 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _02219790: .word MOD08_02219640 thumb_func_start MOD08_02219794 MOD08_02219794: ; 0x02219794 push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #0x2c mov r2, #0x2e add r5, r0, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x28] add r0, r4, #4 bl MOD08_02217E58 cmp r0, #0 bne _022197E0 mov r2, #0x2c ldrsh r2, [r4, r2] ldr r0, [r4, #0x28] mov r1, #0 bl FUN_02007558 mov r2, #0x2e ldrsh r2, [r4, r2] ldr r0, [r4, #0x28] mov r1, #1 sub r2, #8 bl FUN_02007558 ldr r0, [r4, #0x28] mov r1, #9 mov r2, #0 bl FUN_02007558 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _022197E0: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022197E4 MOD08_022197E4: ; 0x022197E4 push {r4, r5, r6, lr} add r5, r0, #0 bl MOD08_02212014 mov r1, #0x30 bl FUN_02016998 add r4, r0, #0 add r0, r5, #0 mov r1, #0 str r5, [r4] bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r2, r0, #0 add r0, r4, #4 add r1, r6, #0 bl MOD08_02218654 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 cmp r0, #8 bgt _0221982E cmp r0, #2 blt _022198A0 beq _02219834 cmp r0, #4 beq _02219850 cmp r0, #8 beq _02219874 b _022198A0 _0221982E: cmp r0, #0x10 beq _02219886 b _022198A0 _02219834: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x28] mov r0, #0 ldr r1, [r4, #0x10] mvn r0, r0 mul r0, r1 str r0, [r4, #0x10] b _022198A4 _02219850: ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022274C0 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x28] mov r0, #0 ldr r1, [r4, #0x10] mvn r0, r0 mul r0, r1 str r0, [r4, #0x10] b _022198A4 _02219874: add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x28] b _022198A4 _02219886: ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022274C0 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x28] b _022198A4 _022198A0: bl ErrorHandling _022198A4: ldr r0, [r4, #0x28] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x2c] ldr r0, [r4, #0x28] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x2e] mov r0, #0x2e ldrsh r0, [r4, r0] ldr r1, _022198CC ; =MOD08_02219794 add r2, r4, #0 add r0, #8 strh r0, [r4, #0x2e] ldr r0, [r4] bl MOD08_02212400 pop {r4, r5, r6, pc} .align 2, 0 _022198CC: .word MOD08_02219794 thumb_func_start MOD08_022198D0 MOD08_022198D0: ; 0x022198D0 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 ldr r0, [r5, #0x14] add r4, r1, #0 mov r1, #1 add r6, r2, #0 bl FUN_0200C644 ldr r0, [r5, #0x14] add r1, r4, #0 add r2, r6, #0 bl FUN_0200C714 mov r0, #0 str r0, [r5, #0x40] mov r0, #4 mov r1, #0xa add r5, #0x18 str r0, [sp] add r0, r5, #0 add r2, r1, #0 mov r3, #0xe bl MOD08_02218120 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_02219908 MOD08_02219908: ; 0x02219908 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 ldr r1, [r4, #0x14] add r0, #0x18 bl MOD08_02218360 cmp r0, #0 bne _02219944 ldr r0, [r4, #0x40] cmp r0, #0 beq _0221992E ldr r0, [r4, #0x14] mov r1, #0 bl FUN_0200C644 add sp, #4 mov r0, #1 pop {r3, r4, pc} _0221992E: mov r0, #1 str r0, [r4, #0x40] mov r0, #2 add r4, #0x18 str r0, [sp] add r0, r4, #0 mov r1, #0xe mov r2, #0xa mov r3, #0xc bl MOD08_02218120 _02219944: mov r0, #0 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_0221994C MOD08_0221994C: ; 0x0221994C push {r3, r4, r5, lr} add r4, r0, #0 ldr r1, [r4, #0x48] mov r5, #0 cmp r1, #4 bhi _022199E4 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02219964: ; jump table .short _0221996E - _02219964 - 2 ; case 0 .short _02219994 - _02219964 - 2 ; case 1 .short _022199A4 - _02219964 - 2 ; case 2 .short _022199D2 - _02219964 - 2 ; case 3 .short _022199E2 - _02219964 - 2 ; case 4 _0221996E: mov r1, #0x4c ldrsh r3, [r4, r1] ldr r2, [r4, #0x3c] mov r1, #0x18 mul r1, r2 mov r2, #0x4e ldrsh r2, [r4, r2] add r1, r3, r1 lsl r1, r1, #0x10 sub r2, #0x10 lsl r2, r2, #0x10 asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_022198D0 ldr r0, [r4, #0x48] add r0, r0, #1 str r0, [r4, #0x48] b _022199E4 _02219994: bl MOD08_02219908 cmp r0, #0 beq _022199E4 ldr r0, [r4, #0x48] add r0, r0, #1 str r0, [r4, #0x48] b _022199E4 _022199A4: ldr r1, [r4, #0x44] sub r1, r1, #1 str r1, [r4, #0x44] bpl _022199E4 ldr r1, [r4, #0x48] add r1, r1, #1 str r1, [r4, #0x48] mov r1, #0x4c ldrsh r3, [r4, r1] ldr r2, [r4, #0x3c] mov r1, #0x18 mul r1, r2 mov r2, #0x4e ldrsh r2, [r4, r2] sub r1, r3, r1 lsl r1, r1, #0x10 sub r2, #0x18 lsl r2, r2, #0x10 asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_022198D0 b _022199E4 _022199D2: bl MOD08_02219908 cmp r0, #0 beq _022199E4 ldr r0, [r4, #0x48] add r0, r0, #1 str r0, [r4, #0x48] b _022199E4 _022199E2: mov r5, #1 _022199E4: add r0, r5, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_022199E8 MOD08_022199E8: ; 0x022199E8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #0 beq _022199FA cmp r0, #1 beq _02219A0C b _02219A22 _022199FA: add r0, r4, #0 bl MOD08_0221994C cmp r0, #0 beq _02219A22 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02219A22 _02219A0C: ldr r0, [r4, #0x14] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _02219A22: ldr r0, [r4, #8] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02219A2C MOD08_02219A2C: ; 0x02219A2C push {r3, r4, r5, r6, r7, lr} add r7, r1, #0 mov r1, #0x50 add r5, r0, #0 str r2, [sp] add r6, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] ldr r0, [sp] str r7, [r4, #4] str r0, [r4, #8] str r6, [r4, #0x14] add r0, r6, #0 mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x14] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x14] mov r1, #0 bl FUN_0200C644 mov r0, #4 str r0, [r4, #0x44] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C str r0, [r4, #0x3c] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 add r5, r0, #0 bl FUN_0200782C add r1, r4, #0 add r1, #0x4c strh r0, [r1] add r0, r5, #0 mov r1, #1 bl FUN_0200782C add r1, r4, #0 add r1, #0x4e strh r0, [r1] ldr r0, [r4] ldr r1, _02219AB4 ; =MOD08_022199E8 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _02219AB4: .word MOD08_022199E8 thumb_func_start MOD08_02219AB8 MOD08_02219AB8: ; 0x02219AB8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] bl FUN_020038E4 cmp r0, #0 bne _02219AD6 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _02219AD6: pop {r3, r4, r5, pc} thumb_func_start MOD08_02219AD8 MOD08_02219AD8: ; 0x02219AD8 push {r4, r5, r6, r7, lr} sub sp, #0x14 mov r1, #8 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02215504 str r0, [r4, #4] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 cmp r0, #0 beq _02219B06 cmp r0, #1 beq _02219B12 cmp r0, #2 beq _02219B18 b _02219B1E _02219B06: add r0, r5, #0 bl MOD08_02214540 lsl r0, r0, #0x10 lsr r6, r0, #0x10 b _02219B22 _02219B12: mov r6, #1 lsl r6, r6, #8 b _02219B22 _02219B18: mov r6, #2 lsl r6, r6, #8 b _02219B22 _02219B1E: bl ErrorHandling _02219B22: add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r7, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [sp, #0xc] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 str r0, [sp, #0x10] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 ldr r1, [sp, #0xc] lsl r0, r0, #0x10 lsl r1, r1, #0x18 lsr r1, r1, #0x18 str r1, [sp] ldr r1, [sp, #0x10] lsl r3, r7, #0x18 lsl r1, r1, #0x18 lsr r1, r1, #0x18 str r1, [sp, #4] lsr r0, r0, #0x10 str r0, [sp, #8] ldr r0, [r4, #4] mov r1, #1 add r2, r6, #0 asr r3, r3, #0x18 bl FUN_02003210 ldr r0, [r4] ldr r1, _02219B7C ; =MOD08_02219AB8 add r2, r4, #0 bl MOD08_02212400 add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _02219B7C: .word MOD08_02219AB8 thumb_func_start MOD08_02219B80 MOD08_02219B80: ; 0x02219B80 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #8] cmp r0, #5 bhi _02219C28 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02219B98: ; jump table .short _02219BA4 - _02219B98 - 2 ; case 0 .short _02219BBC - _02219B98 - 2 ; case 1 .short _02219BCE - _02219B98 - 2 ; case 2 .short _02219BE0 - _02219B98 - 2 ; case 3 .short _02219BF8 - _02219B98 - 2 ; case 4 .short _02219C1A - _02219B98 - 2 ; case 5 _02219BA4: ldr r0, [r4, #0x14] mov r1, #0 str r0, [sp] ldr r0, [r4, #4] ldr r2, [r4, #0x18] ldr r3, [r4, #0x10] bl FUN_02007E68 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] pop {r3, r4, r5, pc} _02219BBC: ldr r0, [r4, #4] bl FUN_02007F20 cmp r0, #0 bne _02219C28 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] pop {r3, r4, r5, pc} _02219BCE: ldr r1, [r4, #0x1c] cmp r1, #0 bne _02219BDA add r0, r0, #1 str r0, [r4, #8] b _02219BE0 _02219BDA: sub r0, r1, #1 str r0, [r4, #0x1c] pop {r3, r4, r5, pc} _02219BE0: ldr r0, [r4, #0x14] mov r2, #0 str r0, [sp] ldr r0, [r4, #4] ldr r1, [r4, #0x18] ldr r3, [r4, #0x10] bl FUN_02007E68 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] pop {r3, r4, r5, pc} _02219BF8: ldr r0, [r4, #4] bl FUN_02007F20 cmp r0, #0 bne _02219C28 ldr r0, [r4, #0xc] sub r0, r0, #1 str r0, [r4, #0xc] cmp r0, #0 bgt _02219C14 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] pop {r3, r4, r5, pc} _02219C14: mov r0, #0 str r0, [r4, #8] pop {r3, r4, r5, pc} _02219C1A: add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _02219C28: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02219C2C MOD08_02219C2C: ; 0x02219C2C push {r3, r4, r5, r6, r7, lr} mov r1, #0x20 add r4, r0, #0 bl MOD08_02228064 add r6, r0, #0 str r4, [r6] mov r1, #0 add r0, r4, #0 str r1, [r6, #4] bl MOD08_02212498 ldr r2, _02219DF4 ; =0x00000802 cmp r0, r2 bgt _02219C66 bge _02219CEC cmp r0, #8 bgt _02219C60 cmp r0, #2 blt _02219C5E beq _02219C7E cmp r0, #4 beq _02219C90 cmp r0, #8 beq _02219CB6 _02219C5E: b _02219DA4 _02219C60: cmp r0, #0x10 beq _02219CC8 b _02219DA4 _02219C66: add r1, r2, #6 cmp r0, r1 bgt _02219C76 bge _02219D48 add r1, r2, #2 cmp r0, r1 beq _02219D1C b _02219DA4 _02219C76: add r2, #0xe cmp r0, r2 beq _02219D78 b _02219DA4 _02219C7E: add r0, r4, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219C90: add r0, r4, #0 bl MOD08_0221553C cmp r0, #1 beq _02219C9C b _02219DA8 _02219C9C: ldr r0, [r6] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_022274C0 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219CB6: add r0, r4, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219CC8: add r0, r4, #0 bl MOD08_0221553C cmp r0, #1 bne _02219DA8 ldr r0, [r6] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r6] bl MOD08_022274C0 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219CEC: mov r7, #0xff mov r5, #0 _02219CF0: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #0 beq _02219D00 cmp r0, #2 bne _02219D04 _02219D00: add r7, r5, #0 b _02219D0A _02219D04: add r5, r5, #1 cmp r5, #4 blt _02219CF0 _02219D0A: cmp r7, #0xff bne _02219D10 mov r7, #0 _02219D10: ldr r0, [r6] add r1, r7, #0 bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219D1C: mov r7, #0xff mov r5, #0 _02219D20: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #4 bne _02219D30 add r7, r5, #0 b _02219D36 _02219D30: add r5, r5, #1 cmp r5, #4 blt _02219D20 _02219D36: cmp r7, #0xff bne _02219D3C mov r7, #0 _02219D3C: ldr r0, [r6] add r1, r7, #0 bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219D48: mov r7, #0xff mov r5, #0 _02219D4C: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #1 beq _02219D5C cmp r0, #3 bne _02219D60 _02219D5C: add r7, r5, #0 b _02219D66 _02219D60: add r5, r5, #1 cmp r5, #4 blt _02219D4C _02219D66: cmp r7, #0xff bne _02219D6C mov r7, #0 _02219D6C: ldr r0, [r6] add r1, r7, #0 bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219D78: mov r7, #0xff mov r5, #0 _02219D7C: add r0, r4, #0 add r1, r5, #0 bl MOD08_02215490 cmp r0, #5 bne _02219D8C add r7, r5, #0 b _02219D92 _02219D8C: add r5, r5, #1 cmp r5, #4 blt _02219D7C _02219D92: cmp r7, #0xff bne _02219D98 mov r7, #0 _02219D98: ldr r0, [r6] add r1, r7, #0 bl MOD08_022154D4 str r0, [r6, #4] b _02219DA8 _02219DA4: bl ErrorHandling _02219DA8: ldr r0, [r6, #4] cmp r0, #0 bne _02219DB6 add r0, r6, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _02219DB6: add r0, r4, #0 mov r1, #1 bl MOD08_02212498 str r0, [r6, #0x10] add r0, r4, #0 mov r1, #2 bl MOD08_02212498 str r0, [r6, #0xc] add r0, r4, #0 mov r1, #3 bl MOD08_02212498 str r0, [r6, #0x14] add r0, r4, #0 mov r1, #4 bl MOD08_02212498 str r0, [r6, #0x18] add r0, r4, #0 mov r1, #5 bl MOD08_02212498 str r0, [r6, #0x1c] ldr r0, [r6] ldr r1, _02219DF8 ; =MOD08_02219B80 add r2, r6, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02219DF4: .word 0x00000802 _02219DF8: .word MOD08_02219B80 thumb_func_start MOD08_02219DFC MOD08_02219DFC: ; 0x02219DFC push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #8] cmp r0, #4 bls _02219E0C b _02219F60 _02219E0C: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02219E18: ; jump table .short _02219E22 - _02219E18 - 2 ; case 0 .short _02219E70 - _02219E18 - 2 ; case 1 .short _02219EC2 - _02219E18 - 2 ; case 2 .short _02219EEC - _02219E18 - 2 ; case 3 .short _02219F4E - _02219E18 - 2 ; case 4 _02219E22: ldr r0, [r4, #0x4c] asr r0, r0, #0x10 str r0, [sp] ldr r1, [r4, #0x3c] ldr r2, [r4, #0x44] ldr r3, [r4, #0x40] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x14 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02218120 add r0, r4, #0 add r0, #0x14 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x50] cmp r0, #1 bne _02219E5E ldr r1, [sp, #8] mov r0, #0 bl _fsub str r0, [sp, #8] _02219E5E: ldr r0, [r4, #0x10] ldr r1, [sp, #8] ldr r2, [sp, #4] bl FUN_0200C884 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02219F60 _02219E70: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 add r5, r0, #0 add r0, r4, #0 add r0, #0x14 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x50] cmp r0, #1 bne _02219E96 ldr r1, [sp, #8] mov r0, #0 bl _fsub str r0, [sp, #8] _02219E96: ldr r0, [r4, #0x10] ldr r1, [sp, #8] ldr r2, [sp, #4] bl FUN_0200C884 cmp r5, #0 beq _02219EBA mov r0, #0 str r0, [sp] mov r1, #0xc mov r2, #0xe ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] ldr r3, [r4, #0x28] bl MOD08_02218314 b _02219F60 _02219EBA: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02219F60 _02219EC2: ldr r0, [r4, #0x4c] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp] ldr r1, [r4, #0x40] ldr r2, [r4, #0x44] ldr r3, [r4, #0x3c] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x14 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02218120 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02219F60 _02219EEC: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 add r5, r0, #0 add r0, r4, #0 add r0, #0x14 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x50] cmp r0, #1 bne _02219F12 ldr r1, [sp, #8] mov r0, #0 bl _fsub str r0, [sp, #8] _02219F12: ldr r0, [r4, #0x10] ldr r1, [sp, #8] ldr r2, [sp, #4] bl FUN_0200C884 cmp r5, #0 beq _02219F36 mov r0, #0 str r0, [sp] mov r1, #0xc mov r2, #0xe ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] ldr r3, [r4, #0x28] bl MOD08_02218314 b _02219F60 _02219F36: ldr r0, [r4, #0x48] sub r0, r0, #1 str r0, [r4, #0x48] cmp r0, #0 bgt _02219F48 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02219F60 _02219F48: mov r0, #0 str r0, [r4, #8] b _02219F60 _02219F4E: add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add sp, #0xc pop {r4, r5, pc} _02219F60: ldr r0, [r4, #4] bl FUN_0200BC1C add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02219F6C MOD08_02219F6C: ; 0x02219F6C push {r4, r5, r6, lr} mov r1, #0x54 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #4] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 cmp r0, #0 bne _02219FAE add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 add r6, r0, #0 ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C b _02219FCC _02219FAE: ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 add r6, r0, #0 ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C _02219FCC: strh r0, [r4, #0xe] add r0, r6, #0 mov r1, #1 bl FUN_0200782C strh r0, [r4, #0xc] add r0, r6, #0 mov r1, #0x29 bl FUN_0200782C mov r1, #0xc ldrsh r1, [r4, r1] sub r0, r1, r0 strh r0, [r4, #0xc] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 str r0, [r4, #0x38] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [r4, #0x3c] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 str r0, [r4, #0x40] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 str r0, [r4, #0x44] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4, #0x48] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 str r0, [r4, #0x4c] add r0, r5, #0 mov r1, #7 bl MOD08_02212498 add r1, r0, #0 ldr r0, [r4] bl MOD08_022124D8 str r0, [r4, #0x10] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x10] mov r1, #2 bl FUN_0200C840 ldr r1, [r4, #0x38] mov r2, #0x10 ldr r0, [r4] sub r2, r2, r1 bl MOD08_02227994 ldr r0, [r4] ldr r1, _0221A08C ; =MOD08_02219DFC add r2, r4, #0 bl MOD08_02212400 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 cmp r0, #0 beq _0221A07A mov r1, #1 b _0221A07C _0221A07A: mov r1, #0 _0221A07C: ldr r0, [r4] bl MOD08_02215680 cmp r0, #1 bne _0221A08A mov r0, #1 str r0, [r4, #0x50] _0221A08A: pop {r4, r5, r6, pc} .align 2, 0 _0221A08C: .word MOD08_02219DFC thumb_func_start MOD08_0221A090 MOD08_0221A090: ; 0x0221A090 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #5 bls _0221A0A0 b _0221A1DC _0221A0A0: add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0221A0AC: ; jump table .short _0221A0B8 - _0221A0AC - 2 ; case 0 .short _0221A0FC - _0221A0AC - 2 ; case 1 .short _0221A12C - _0221A0AC - 2 ; case 2 .short _0221A140 - _0221A0AC - 2 ; case 3 .short _0221A186 - _0221A0AC - 2 ; case 4 .short _0221A1C8 - _0221A0AC - 2 ; case 5 _0221A0B8: ldr r0, [r4, #0x40] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldr r0, [r4, #0x44] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r4, #0x4c] asr r0, r0, #0x10 str r0, [sp, #8] ldr r1, [r4, #0x34] ldr r2, [r4, #0x38] ldr r3, [r4, #0x3c] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x10 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_022181A8 add r0, r4, #0 ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_02218380 ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _0221A0FC: add r0, r4, #0 ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_022183A0 cmp r0, #0 beq _0221A122 mov r0, #0 str r0, [sp] mov r1, #8 mov r2, #0xa ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] bl MOD08_022182DC add sp, #0xc pop {r4, r5, pc} _0221A122: ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _0221A12C: ldr r1, [r4, #0x50] cmp r1, #0 bne _0221A138 add r0, r0, #1 str r0, [r4, #4] b _0221A140 _0221A138: sub r0, r1, #1 add sp, #0xc str r0, [r4, #0x50] pop {r4, r5, pc} _0221A140: ldr r0, [r4, #0x3c] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldr r0, [r4, #0x44] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r4, #0x4c] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] ldr r1, [r4, #0x38] ldr r2, [r4, #0x34] ldr r3, [r4, #0x40] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x10 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_022181A8 add r0, r4, #0 ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_022183A0 ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _0221A186: add r0, r4, #0 ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_022183A0 cmp r0, #0 beq _0221A1AC mov r0, #0 str r0, [sp] mov r1, #8 mov r2, #0xa ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] bl MOD08_022182DC add sp, #0xc pop {r4, r5, pc} _0221A1AC: ldr r0, [r4, #0x48] sub r0, r0, #1 str r0, [r4, #0x48] cmp r0, #0 bgt _0221A1C0 ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _0221A1C0: mov r0, #0 add sp, #0xc str r0, [r4, #4] pop {r4, r5, pc} _0221A1C8: ldr r0, [r4, #0xc] bl MOD08_02218E34 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _0221A1DC: add sp, #0xc pop {r4, r5, pc} thumb_func_start MOD08_0221A1E0 MOD08_0221A1E0: ; 0x0221A1E0 push {r4, r5, r6, r7, lr} sub sp, #0x54 add r5, r0, #0 mov r1, #0x54 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 mov r1, #0 str r5, [r4] bl MOD08_02212498 ldr r2, _0221A3E4 ; =0x00000802 cmp r0, r2 bgt _0221A224 bge _0221A290 mov r2, #0x42 lsl r2, r2, #2 cmp r0, r2 bgt _0221A21C sub r1, r2, #6 cmp r0, r1 blt _0221A21A beq _0221A23C sub r1, r2, #4 cmp r0, r1 beq _0221A23C cmp r0, r2 beq _0221A266 _0221A21A: b _0221A346 _0221A21C: add r2, #8 cmp r0, r2 beq _0221A266 b _0221A346 _0221A224: add r1, r2, #6 cmp r0, r1 bgt _0221A234 bge _0221A2EC add r1, r2, #2 cmp r0, r1 beq _0221A2C0 b _0221A346 _0221A234: add r2, #0xe cmp r0, r2 beq _0221A31C b _0221A346 _0221A23C: ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C strh r0, [r4, #0xa] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r1, r0, #0 ldr r0, [r4] add r2, sp, #4 add r3, sp, #0 bl MOD08_02227BAC ldr r0, [sp, #0xc] str r0, [r4, #0xc] b _0221A346 _0221A266: ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C strh r0, [r4, #0xa] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r1, r0, #0 ldr r0, [r4] add r2, sp, #4 add r3, sp, #0 bl MOD08_02227BAC ldr r0, [sp, #0xc] str r0, [r4, #0xc] b _0221A346 _0221A290: mov r7, #0xff mov r6, #0 _0221A294: add r0, r5, #0 add r1, r6, #0 bl MOD08_02215490 cmp r0, #0 beq _0221A2A4 cmp r0, #2 bne _0221A2A8 _0221A2A4: add r7, r6, #0 b _0221A2AE _0221A2A8: add r6, r6, #1 cmp r6, #4 blt _0221A294 _0221A2AE: cmp r7, #0xff bne _0221A2B4 mov r7, #0 _0221A2B4: ldr r0, [r4] add r1, r7, #0 bl MOD08_022154D4 str r0, [r4, #0xc] b _0221A346 _0221A2C0: mov r7, #0xff mov r6, #0 _0221A2C4: add r0, r5, #0 add r1, r6, #0 bl MOD08_02215490 cmp r0, #4 bne _0221A2D4 add r7, r6, #0 b _0221A2DA _0221A2D4: add r6, r6, #1 cmp r6, #4 blt _0221A2C4 _0221A2DA: cmp r7, #0xff bne _0221A2E0 mov r7, #0 _0221A2E0: ldr r0, [r4] add r1, r7, #0 bl MOD08_022154D4 str r0, [r4, #0xc] b _0221A346 _0221A2EC: mov r7, #0xff mov r6, #0 _0221A2F0: add r0, r5, #0 add r1, r6, #0 bl MOD08_02215490 cmp r0, #1 beq _0221A300 cmp r0, #3 bne _0221A304 _0221A300: add r7, r6, #0 b _0221A30A _0221A304: add r6, r6, #1 cmp r6, #4 blt _0221A2F0 _0221A30A: cmp r7, #0xff bne _0221A310 mov r7, #0 _0221A310: ldr r0, [r4] add r1, r7, #0 bl MOD08_022154D4 str r0, [r4, #0xc] b _0221A346 _0221A31C: mov r7, #0xff mov r6, #0 _0221A320: add r0, r5, #0 add r1, r6, #0 bl MOD08_02215490 cmp r0, #5 bne _0221A330 add r7, r6, #0 b _0221A336 _0221A330: add r6, r6, #1 cmp r6, #4 blt _0221A320 _0221A336: cmp r7, #0xff bne _0221A33C mov r7, #0 _0221A33C: ldr r0, [r4] add r1, r7, #0 bl MOD08_022154D4 str r0, [r4, #0xc] _0221A346: ldr r0, [r4, #0xc] cmp r0, #0 bne _0221A356 add r0, r4, #0 bl FUN_02016A18 add sp, #0x54 pop {r4, r5, r6, r7, pc} _0221A356: mov r1, #1 bl FUN_0200782C strh r0, [r4, #8] ldr r0, [r4, #0xc] mov r1, #0x29 bl FUN_0200782C strh r0, [r4, #0xa] mov r0, #0xa ldrsh r0, [r4, r0] mov r1, #1 add r0, #0x10 strh r0, [r4, #0xa] add r0, r5, #0 bl MOD08_02212498 str r0, [r4, #0x34] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [r4, #0x38] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 str r0, [r4, #0x3c] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 str r0, [r4, #0x40] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4, #0x44] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 str r0, [r4, #0x48] add r0, r5, #0 mov r1, #7 bl MOD08_02212498 str r0, [r4, #0x4c] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [r4, #0x48] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 asr r0, r0, #0x10 str r0, [r4, #0x50] ldr r0, [r4] ldr r1, _0221A3E8 ; =MOD08_0221A090 add r2, r4, #0 bl MOD08_02212400 add r1, r4, #0 bl MOD08_0221A090 add sp, #0x54 pop {r4, r5, r6, r7, pc} .align 2, 0 _0221A3E4: .word 0x00000802 _0221A3E8: .word MOD08_0221A090 thumb_func_start MOD08_0221A3EC MOD08_0221A3EC: ; 0x0221A3EC push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 add r0, #8 bl MOD08_02218704 cmp r0, #0 beq _0221A40E add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 pop {r3, r4, r5, pc} _0221A40E: ldr r0, [r4, #4] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221A418 MOD08_0221A418: ; 0x0221A418 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 mov r1, #0x30 add r7, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r7, [r4] add r0, r7, #0 bl MOD08_02212504 str r0, [r4, #4] add r0, r7, #0 mov r1, #0 bl MOD08_02212498 add r6, r0, #0 mov r5, #0 _0221A43C: mov r0, #1 lsl r0, r5 tst r0, r6 beq _0221A452 ldr r0, [r4] add r1, r5, #0 bl MOD08_022124D8 mov r1, #1 bl FUN_0200C90C _0221A452: add r5, r5, #1 cmp r5, #4 blt _0221A43C add r0, r7, #0 mov r1, #1 bl MOD08_02212498 add r5, r0, #0 add r0, r7, #0 mov r1, #3 bl MOD08_02212498 str r0, [sp, #8] ldr r0, [r4] ldr r2, [sp, #8] add r1, r5, #0 bl MOD08_02227994 add r0, r7, #0 mov r1, #2 bl MOD08_02212498 add r6, r0, #0 add r0, r7, #0 mov r1, #4 bl MOD08_02212498 str r0, [sp, #0xc] add r0, r7, #0 mov r1, #5 bl MOD08_02212498 ldr r1, [sp, #0xc] ldr r3, [sp, #8] lsl r1, r1, #0x10 asr r1, r1, #0x10 str r1, [sp] str r0, [sp, #4] add r0, r4, #0 lsl r1, r5, #0x10 lsl r2, r6, #0x10 lsl r3, r3, #0x10 add r0, #8 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_022186D4 ldr r0, [r4] ldr r1, _0221A4C0 ; =MOD08_0221A3EC add r2, r4, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221A4C0: .word MOD08_0221A3EC thumb_func_start MOD08_0221A4C4 MOD08_0221A4C4: ; 0x0221A4C4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r6, r0, #0 mov r1, #1 bl MOD08_02212498 add r5, r0, #0 add r0, r6, #0 mov r1, #0 bl MOD08_02212498 add r1, r0, #0 add r0, r6, #0 add r2, sp, #4 add r3, sp, #0 bl MOD08_02227BAC ldr r0, [sp] mov r4, #0 cmp r0, #0 ble _0221A512 mov r7, #6 _0221A4F0: ldr r1, [sp, #0x14] add r0, r6, #0 bl MOD08_02215554 cmp r0, #1 bne _0221A500 cmp r5, #0 beq _0221A50A _0221A500: ldr r0, [sp, #0xc] add r1, r7, #0 add r2, r5, #0 bl FUN_02007558 _0221A50A: ldr r0, [sp] add r4, r4, #1 cmp r4, r0 blt _0221A4F0 _0221A512: add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0221A518 MOD08_0221A518: ; 0x0221A518 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r1, [r4, #4] ldr r0, [r4, #8] cmp r1, r0 blt _0221A566 ldr r0, [r4] cmp r0, #0 ldr r0, [r4, #0x14] bne _0221A546 mov r1, #6 mov r2, #0 bl FUN_02007558 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4, #0x3c] add r1, r5, #0 bl MOD08_02212438 pop {r3, r4, r5, pc} _0221A546: mov r1, #6 bl FUN_0200782C add r3, r0, #0 mov r2, #1 ldr r0, [r4, #0x14] mov r1, #6 eor r2, r3 bl FUN_02007558 ldr r0, [r4] sub r0, r0, #1 str r0, [r4] mov r0, #0 str r0, [r4, #4] pop {r3, r4, r5, pc} _0221A566: add r0, r1, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} thumb_func_start MOD08_0221A56C MOD08_0221A56C: ; 0x0221A56C push {r3, r4, r5, lr} add r5, r0, #0 mov r1, #0x40 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 mov r1, #0 str r5, [r4, #0x3c] bl MOD08_02212498 lsl r0, r0, #1 str r0, [r4] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r1, r4, #0 str r0, [r4, #8] add r0, r5, #0 add r1, #0x20 bl MOD08_02227B70 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022154D4 str r0, [r4, #0x14] ldr r0, [r4, #0x3c] ldr r1, _0221A5B8 ; =MOD08_0221A518 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0221A5B8: .word MOD08_0221A518 thumb_func_start MOD08_0221A5BC MOD08_0221A5BC: ; 0x0221A5BC push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 add r0, r4, #0 add r0, #0x24 ldrb r0, [r0] cmp r0, #0 beq _0221A5D4 cmp r0, #1 beq _0221A608 b _0221A632 _0221A5D4: mov r0, #0x16 ldrsh r3, [r4, r0] mov r0, #0x14 ldrsh r1, [r4, r0] mov r2, #0xc str r3, [sp] ldr r0, [r4, #8] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] ldrsh r2, [r4, r2] add r0, r4, #0 add r0, #0x40 add r2, r1, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 add r0, r4, #0 add r0, #0x24 ldrb r0, [r0] add r4, #0x24 add sp, #8 add r0, r0, #1 strb r0, [r4] pop {r4, pc} _0221A608: add r0, r4, #0 add r0, #0x40 bl MOD08_02217ECC cmp r0, #0 bne _0221A622 add r0, r4, #0 add r0, #0x24 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x24 strb r1, [r0] _0221A622: mov r2, #0x40 ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _0221A632: ldr r0, [r4, #0x64] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r4, pc} thumb_func_start MOD08_0221A644 MOD08_0221A644: ; 0x0221A644 push {r4, r5, r6, lr} mov r1, #0x68 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #0x64] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #8] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0xc] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 mov r6, #0xff add r1, r6, #0 add r1, #9 cmp r0, r1 bgt _0221A690 add r1, r6, #3 cmp r0, r1 blt _0221A6E6 beq _0221A69A add r1, r6, #5 cmp r0, r1 beq _0221A6A4 add r1, r6, #0 add r1, #9 cmp r0, r1 beq _0221A6C0 b _0221A6E6 _0221A690: add r1, r6, #0 add r1, #0x11 cmp r0, r1 beq _0221A6CA b _0221A6E6 _0221A69A: add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 b _0221A6EA _0221A6A4: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 bne _0221A6EA add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221A6EA _0221A6C0: add r0, r5, #0 bl MOD08_02212460 add r6, r0, #0 b _0221A6EA _0221A6CA: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 bne _0221A6EA add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221A6EA _0221A6E6: bl ErrorHandling _0221A6EA: cmp r6, #0xff bne _0221A6F6 add r0, r4, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} _0221A6F6: add r1, r4, #0 add r0, r5, #0 add r1, #0x24 bl MOD08_02227B70 add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 add r1, r4, #0 add r1, #0x14 str r0, [r4, #0x18] bl MOD08_02227B2C add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C cmp r0, #0 bgt _0221A728 mov r0, #0xc ldrsh r1, [r4, r0] sub r0, #0xd mul r0, r1 strh r0, [r4, #0xc] _0221A728: ldr r0, [r4, #0x64] ldr r1, _0221A734 ; =MOD08_0221A5BC add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} .align 2, 0 _0221A734: .word MOD08_0221A5BC thumb_func_start MOD08_0221A738 MOD08_0221A738: ; 0x0221A738 push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] cmp r0, #0 beq _0221A750 cmp r0, #1 beq _0221A792 b _0221A7BC _0221A750: ldr r0, [r4, #0x14] cmp r0, #0 bne _0221A760 mov r0, #0xff add r4, #0x20 add sp, #8 strb r0, [r4] pop {r4, pc} _0221A760: mov r0, #0x12 ldrsh r3, [r4, r0] mov r0, #0x10 ldrsh r1, [r4, r0] mov r2, #0x64 str r3, [sp] ldr r0, [r4, #8] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] ldrsh r2, [r4, r2] add r0, r4, #0 add r0, #0x3c add r2, r1, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] _0221A792: add r0, r4, #0 add r0, #0x3c bl MOD08_02217ECC cmp r0, #0 bne _0221A7AC add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] _0221A7AC: mov r2, #0x3c ldrsh r2, [r4, r2] ldr r0, [r4, #0x14] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _0221A7BC: ldr r0, [r4, #0x60] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_0221A7D0 MOD08_0221A7D0: ; 0x0221A7D0 push {r3, r4, r5, r6, r7, lr} mov r1, #0x68 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #0x60] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #8] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r1, r4, #0 add r1, #0x64 strh r0, [r1] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r1, r4, #0 add r7, r0, #0 add r0, r5, #0 add r1, #0x20 bl MOD08_02227B70 mov r6, #0xff add r0, r6, #0 add r0, #9 cmp r7, r0 bgt _0221A82C add r0, r6, #3 cmp r7, r0 blt _0221A882 beq _0221A836 add r0, r6, #5 cmp r7, r0 beq _0221A840 add r0, r6, #0 add r0, #9 cmp r7, r0 beq _0221A85C b _0221A882 _0221A82C: add r0, r6, #0 add r0, #0x11 cmp r7, r0 beq _0221A866 b _0221A882 _0221A836: add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 b _0221A886 _0221A840: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 bne _0221A886 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221A886 _0221A85C: add r0, r5, #0 bl MOD08_02212460 add r6, r0, #0 b _0221A886 _0221A866: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 bne _0221A886 add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221A886 _0221A882: bl ErrorHandling _0221A886: cmp r6, #0xff bne _0221A892 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _0221A892: add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 add r1, r4, #0 add r1, #0x10 str r0, [r4, #0x14] bl MOD08_02227B2C add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C cmp r0, #0 bgt _0221A8C0 mov r0, #0x64 ldrsh r1, [r4, r0] sub r0, #0x65 add r2, r1, #0 mul r2, r0 add r0, r4, #0 add r0, #0x64 strh r2, [r0] _0221A8C0: add r0, r5, #0 bl MOD08_02212004 ldr r0, [r4, #0x60] ldr r1, _0221A8D8 ; =MOD08_0221A738 add r2, r4, #0 bl MOD08_02212400 add r1, r4, #0 bl MOD08_0221A738 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221A8D8: .word MOD08_0221A738 thumb_func_start MOD08_0221A8DC MOD08_0221A8DC: ; 0x0221A8DC push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #3 bls _0221A8EC b _0221AA6A _0221A8EC: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221A8F8: ; jump table .short _0221A900 - _0221A8F8 - 2 ; case 0 .short _0221A962 - _0221A8F8 - 2 ; case 1 .short _0221A9AC - _0221A8F8 - 2 ; case 2 .short _0221A9FA - _0221A8F8 - 2 ; case 3 _0221A900: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 bne _0221A958 add r0, r4, #0 add r0, #0x38 bl MOD08_022183F0 mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xc bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xd bl FUN_02007558 mov r2, #0x38 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_020079E0 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x28] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #4 pop {r3, r4, r5, r6, pc} _0221A958: ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221A962: ldrb r0, [r4, #9] add r0, r0, #1 strb r0, [r4, #9] ldrb r1, [r4, #9] ldrb r0, [r4, #0xa] cmp r1, r0 bhi _0221A972 b _0221AA78 _0221A972: ldr r0, [r4, #0xc] mov r1, #0 bl MOD08_02212498 add r5, r0, #0 ldr r0, [r4, #0xc] mov r1, #1 bl MOD08_02212498 add r6, r0, #0 ldr r0, [r4, #0xc] mov r1, #3 bl MOD08_02212498 str r0, [sp] add r0, r4, #0 lsl r1, r5, #0x10 lsl r3, r6, #0x10 add r0, #0x14 asr r1, r1, #0x10 mov r2, #0x64 asr r3, r3, #0x10 bl MOD08_02218120 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221A9AC: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 bne _0221A9F0 mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xc bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x28] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #4 pop {r3, r4, r5, r6, pc} _0221A9F0: ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221A9FA: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 ldr r0, [r4, #0x10] bne _0221AA3E mov r2, #0x14 ldrsh r2, [r4, r2] mov r1, #0xc bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x28] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #4 pop {r3, r4, r5, r6, pc} _0221AA3E: mov r1, #0xc add r2, r1, #0 add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0x10] add r2, #0xf3 bl FUN_02007558 mov r2, #2 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007558 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221AA6A: ldr r0, [r4, #0xc] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221AA78: add sp, #4 pop {r3, r4, r5, r6, pc} thumb_func_start MOD08_0221AA7C MOD08_0221AA7C: ; 0x0221AA7C push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 bl MOD08_02212014 mov r1, #0x5c bl FUN_02016998 add r4, r0, #0 mov r0, #0 strb r0, [r4, #8] strb r0, [r4] str r5, [r4, #0xc] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_022154D4 str r0, [r4, #0x10] mov r0, #0 strb r0, [r4, #9] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strb r0, [r4, #0xa] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] ldr r0, [r4, #0xc] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_0221552C str r0, [r4, #4] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [sp] add r0, r4, #0 mov r1, #0x64 lsl r3, r6, #0x10 add r0, #0x14 add r2, r1, #0 asr r3, r3, #0x10 bl MOD08_02218120 mov r0, #0xa str r0, [sp] add r0, r4, #0 mov r2, #0 add r0, #0x38 mov r1, #2 add r3, r2, #0 bl MOD08_022183C0 ldr r0, [r4, #0xc] ldr r1, _0221AB14 ; =MOD08_0221A8DC add r2, r4, #0 bl MOD08_02212400 add sp, #4 pop {r3, r4, r5, r6, pc} nop _0221AB14: .word MOD08_0221A8DC thumb_func_start MOD08_0221AB18 MOD08_0221AB18: ; 0x0221AB18 push {r3, r4, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #3 bls _0221AB28 b _0221ACA8 _0221AB28: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221AB34: ; jump table .short _0221AB3C - _0221AB34 - 2 ; case 0 .short _0221AB9E - _0221AB34 - 2 ; case 1 .short _0221ABEA - _0221AB34 - 2 ; case 2 .short _0221AC38 - _0221AB34 - 2 ; case 3 _0221AB3C: add r0, r4, #0 add r0, #0x20 bl MOD08_02218224 cmp r0, #1 bne _0221AB94 add r0, r4, #0 add r0, #0x44 bl MOD08_022183F0 mov r2, #0x20 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xc bl FUN_02007558 mov r2, #0x22 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xd bl FUN_02007558 mov r2, #0x44 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_020079E0 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x34] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221AB94: ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221AB9E: ldrb r0, [r4, #9] add r0, r0, #1 strb r0, [r4, #9] ldrb r1, [r4, #9] ldrb r0, [r4, #0xa] cmp r1, r0 bhi _0221ABAE b _0221ACB6 _0221ABAE: ldr r3, [r4, #0x10] ldr r2, [r4, #0xc] lsl r0, r3, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] asr r1, r2, #0x10 mov r0, #0x64 str r0, [sp, #4] ldr r0, [r4, #0x14] lsl r2, r2, #0x18 lsr r2, r2, #0x18 asr r3, r3, #0x10 str r0, [sp, #8] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x20 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_022181A8 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221ABEA: add r0, r4, #0 add r0, #0x20 bl MOD08_02218224 cmp r0, #1 bne _0221AC2E mov r2, #0x20 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xc bl FUN_02007558 mov r2, #0x22 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x34] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221AC2E: ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221AC38: add r0, r4, #0 add r0, #0x20 bl MOD08_02218224 cmp r0, #1 ldr r0, [r4, #0x1c] bne _0221AC7C mov r2, #0x20 ldrsh r2, [r4, r2] mov r1, #0xc bl FUN_02007558 mov r2, #0x22 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x34] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221AC7C: mov r1, #0xc add r2, r1, #0 add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0x1c] add r2, #0xf3 bl FUN_02007558 mov r2, #2 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_02007558 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221ACA8: ldr r0, [r4, #0x18] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221ACB6: add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_0221ACBC MOD08_0221ACBC: ; 0x0221ACBC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 bl MOD08_02212014 mov r1, #0x68 bl FUN_02016998 add r4, r0, #0 mov r0, #0 strb r0, [r4, #8] strb r0, [r4] str r5, [r4, #0x18] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0x18] bl MOD08_022154D4 str r0, [r4, #0x1c] mov r0, #0 strb r0, [r4, #9] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 strb r0, [r4, #0xa] ldr r0, [r4, #0x18] mov r1, #3 bl MOD08_02212498 str r0, [r4, #0xc] ldr r0, [r4, #0x18] mov r1, #4 bl MOD08_02212498 str r0, [r4, #0x10] ldr r0, [r4, #0x18] mov r1, #5 bl MOD08_02212498 str r0, [r4, #0x14] ldr r0, [r4, #0x18] bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 mov r2, #0 add r3, r4, #2 bl MOD08_02217B50 ldr r0, [r4, #0x18] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0x18] bl MOD08_0221552C str r0, [r4, #4] mov r1, #2 ldrsh r1, [r4, r1] add r0, r1, r0 strh r0, [r4, #2] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 asr r0, r0, #0x10 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #0x10] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x10 asr r7, r0, #0x10 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 asr r0, r0, #0x10 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #0xc] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsl r0, r0, #0x10 asr r6, r0, #0x10 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r6, [sp] mov r1, #0x64 str r1, [sp, #4] str r0, [sp, #8] add r0, r4, #0 ldr r1, [sp, #0x10] ldr r3, [sp, #0xc] add r0, #0x20 add r2, r7, #0 bl MOD08_022181A8 mov r0, #0xa str r0, [sp] add r0, r4, #0 mov r2, #0 add r0, #0x44 mov r1, #2 add r3, r2, #0 bl MOD08_022183C0 ldr r0, [r4, #0x18] ldr r1, _0221ADBC ; =MOD08_0221AB18 add r2, r4, #0 bl MOD08_02212400 add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _0221ADBC: .word MOD08_0221AB18 thumb_func_start MOD08_0221ADC0 MOD08_0221ADC0: ; 0x0221ADC0 push {r3, r4, r5, lr} mov r2, #1 lsl r2, r2, #0x1a add r5, r0, #0 add r4, r1, #0 ldr r1, [r2] ldr r0, _0221ADEC ; =0xFFFF1FFF and r0, r1 str r0, [r2] ldr r0, [r4, #8] mov r1, #2 bl MOD08_02214850 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} nop _0221ADEC: .word 0xFFFF1FFF thumb_func_start MOD08_0221ADF0 MOD08_0221ADF0: ; 0x0221ADF0 push {r3, r4, r5, lr} add r5, r0, #0 mov r1, #0x28 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r0, r5, #0 add r1, r4, #4 bl MOD08_02227B70 ldr r0, [r4, #8] mov r1, #2 bl MOD08_0221477C ldr r0, [r4, #8] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x24] mov r1, #2 bl FUN_0200C90C ldr r0, [r4, #0x24] mov r1, #2 bl FUN_0200C840 ldr r1, _0221AE70 ; =0x3F99999A ldr r0, [r4, #0x24] add r2, r1, #0 bl FUN_0200C884 mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] ldr r1, _0221AE74 ; =0xFFFF1FFF and r2, r1 lsr r1, r0, #0xb orr r1, r2 str r1, [r0] add r0, #0x4a ldrh r2, [r0] mov r1, #0x3f bic r2, r1 mov r1, #0x1b orr r1, r2 strh r1, [r0] ldrh r2, [r0] ldr r1, _0221AE78 ; =0xFFFFC0FF and r2, r1 mov r1, #7 lsl r1, r1, #8 orr r1, r2 strh r1, [r0] ldr r0, [r4, #8] ldr r1, _0221AE7C ; =MOD08_0221ADC0 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0221AE70: .word 0x3F99999A _0221AE74: .word 0xFFFF1FFF _0221AE78: .word 0xFFFFC0FF _0221AE7C: .word MOD08_0221ADC0 thumb_func_start MOD08_0221AE80 MOD08_0221AE80: ; 0x0221AE80 push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] cmp r0, #0 beq _0221AE98 cmp r0, #1 beq _0221AED4 b _0221AF0A _0221AE98: mov r0, #0x12 ldrsh r3, [r4, r0] mov r0, #0x10 ldrsh r1, [r4, r0] mov r0, #0x66 ldrsh r0, [r4, r0] mov r2, #0x64 add r0, r3, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldr r0, [r4, #8] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #4] ldrsh r2, [r4, r2] add r0, r4, #0 add r0, #0x3c add r2, r1, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] _0221AED4: add r0, r4, #0 add r0, #0x3c bl MOD08_02217ECC cmp r0, #0 bne _0221AEEE add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] _0221AEEE: mov r2, #0x3c ldrsh r2, [r4, r2] ldr r0, [r4, #0x14] mov r1, #0 bl FUN_02007558 mov r2, #0x3e ldrsh r2, [r4, r2] ldr r0, [r4, #0x14] mov r1, #1 bl FUN_02007558 add sp, #8 pop {r4, pc} _0221AF0A: ldr r0, [r4, #0x60] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r4, pc} thumb_func_start MOD08_0221AF1C MOD08_0221AF1C: ; 0x0221AF1C push {r3, r4, r5, r6, r7, lr} mov r1, #0x68 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #0x60] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #8] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r1, r4, #0 add r1, #0x64 strh r0, [r1] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r1, r4, #0 add r1, #0x66 strh r0, [r1] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 add r1, r4, #0 add r7, r0, #0 add r0, r5, #0 add r1, #0x20 bl MOD08_02227B70 mov r6, #0xff add r0, r6, #0 add r0, #9 cmp r7, r0 bgt _0221AF86 add r0, r6, #3 cmp r7, r0 blt _0221AFDC beq _0221AF90 add r0, r6, #5 cmp r7, r0 beq _0221AF9A add r0, r6, #0 add r0, #9 cmp r7, r0 beq _0221AFB6 b _0221AFDC _0221AF86: add r0, r6, #0 add r0, #0x11 cmp r7, r0 beq _0221AFC0 b _0221AFDC _0221AF90: add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 b _0221AFE0 _0221AF9A: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 bne _0221AFE0 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221AFE0 _0221AFB6: add r0, r5, #0 bl MOD08_02212460 add r6, r0, #0 b _0221AFE0 _0221AFC0: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 bne _0221AFE0 add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221AFE0 _0221AFDC: bl ErrorHandling _0221AFE0: cmp r6, #0xff bne _0221AFEC add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _0221AFEC: add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x14] cmp r0, #0 bne _0221B002 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _0221B002: add r1, r4, #0 add r1, #0x10 bl MOD08_02227B2C add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C cmp r0, #0 bgt _0221B036 mov r0, #0x64 ldrsh r1, [r4, r0] sub r0, #0x65 add r2, r1, #0 mul r2, r0 add r0, r4, #0 add r0, #0x64 strh r2, [r0] mov r0, #0x66 ldrsh r1, [r4, r0] sub r0, #0x67 add r2, r1, #0 mul r2, r0 add r0, r4, #0 add r0, #0x66 strh r2, [r0] _0221B036: add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _0221B050 mov r0, #0x66 ldrsh r1, [r4, r0] sub r0, #0x67 add r2, r1, #0 mul r2, r0 add r0, r4, #0 add r0, #0x66 strh r2, [r0] _0221B050: ldr r0, [r4, #0x60] ldr r1, _0221B064 ; =MOD08_0221AE80 add r2, r4, #0 bl MOD08_02212400 add r1, r4, #0 bl MOD08_0221AE80 pop {r3, r4, r5, r6, r7, pc} nop _0221B064: .word MOD08_0221AE80 thumb_func_start MOD08_0221B068 MOD08_0221B068: ; 0x0221B068 push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #0x20 mov r2, #0x22 add r5, r0, #0 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x24] add r0, #0x30 bl MOD08_02217E58 cmp r0, #0 bne _0221B0AC mov r2, #0x20 ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] mov r1, #0 bl FUN_02007558 mov r2, #0x22 ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] mov r1, #1 sub r2, #8 bl FUN_02007558 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221B0AC: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221B0B0 MOD08_0221B0B0: ; 0x0221B0B0 push {r3, r4, r5, r6, lr} sub sp, #4 mov r1, #0x54 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r2, r4, #0 add r1, r0, #0 add r0, r5, #0 add r2, #0x1c add r3, sp, #0 bl MOD08_02227BAC mov r0, #0x22 ldrsh r0, [r4, r0] mov r1, #1 add r0, #8 strh r0, [r4, #0x22] add r0, r5, #0 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r2, r0, #0 add r0, r4, #0 add r0, #0x30 add r1, r6, #0 bl MOD08_02218654 ldr r1, [r4, #0x3c] add r2, r4, #0 lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 str r0, [r4, #0x3c] ldr r1, [r4, #0x44] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 str r0, [r4, #0x44] ldr r0, [r4, #4] ldr r1, _0221B124 ; =MOD08_0221B068 bl MOD08_02212400 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _0221B124: .word MOD08_0221B068 thumb_func_start MOD08_0221B128 MOD08_0221B128: ; 0x0221B128 push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 bne _0221B160 add r0, r4, #0 add r0, #0x30 bl MOD08_02217ECC cmp r0, #0 bne _0221B146 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221B146: mov r2, #0x30 ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] mov r1, #0 bl FUN_02007558 mov r2, #0x32 ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] mov r1, #1 bl FUN_02007558 pop {r4, pc} _0221B160: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_start MOD08_0221B170 MOD08_0221B170: ; 0x0221B170 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 mov r1, #0x5c add r6, r0, #0 bl MOD08_02228064 add r5, r0, #0 add r0, r6, #0 add r1, r5, #0 bl MOD08_02227B70 add r0, r6, #0 mov r1, #0 bl MOD08_02212498 add r4, r0, #0 add r0, r6, #0 mov r1, #1 bl MOD08_02212498 add r7, r0, #0 cmp r4, #8 bgt _0221B1AE cmp r4, #2 blt _0221B1EC beq _0221B1B4 cmp r4, #4 beq _0221B1BE cmp r4, #8 beq _0221B1D0 b _0221B1EC _0221B1AE: cmp r4, #0x10 beq _0221B1DA b _0221B1EC _0221B1B4: add r0, r6, #0 bl MOD08_02212458 str r0, [sp, #8] b _0221B1F0 _0221B1BE: add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_022274C0 str r0, [sp, #8] b _0221B1F0 _0221B1D0: add r0, r6, #0 bl MOD08_02212460 str r0, [sp, #8] b _0221B1F0 _0221B1DA: add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_022274C0 str r0, [sp, #8] b _0221B1F0 _0221B1EC: bl ErrorHandling _0221B1F0: add r2, r5, #0 ldr r1, [sp, #8] add r0, r6, #0 add r2, #0x54 bl MOD08_022275C0 add r2, r5, #0 add r0, r6, #0 add r1, r4, #0 add r2, #0x1c add r3, sp, #0xc bl MOD08_02227BAC add r0, r5, #0 mov r1, #0 add r0, #0x58 strh r1, [r0] add r0, r5, #0 add r0, #0x5a strh r1, [r0] ldr r0, [r5, #4] ldr r1, [sp, #8] bl MOD08_02227470 cmp r0, #3 bne _0221B22A mov r1, #0x4f mvn r1, r1 b _0221B22E _0221B22A: mov r1, #0x15 lsl r1, r1, #4 _0221B22E: add r0, r5, #0 add r0, #0x58 strh r1, [r0] mov r0, #0x22 ldrsh r3, [r5, r0] lsl r0, r7, #0x10 lsr r0, r0, #0x10 str r3, [sp] str r0, [sp, #4] mov r1, #0x20 mov r2, #0x58 add r0, r5, #0 ldrsh r1, [r5, r1] ldrsh r2, [r5, r2] add r0, #0x30 bl MOD08_02217E80 ldr r0, [r5, #4] ldr r1, _0221B260 ; =MOD08_0221B128 add r2, r5, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _0221B260: .word MOD08_0221B128 thumb_func_start MOD08_0221B264 MOD08_0221B264: ; 0x0221B264 push {r4, r5, r6, r7, lr} sub sp, #0x14 mov r1, #0x5c add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [sp, #0xc] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r7, r0, #0 cmp r6, #8 bgt _0221B2AC cmp r6, #2 blt _0221B2EA beq _0221B2B2 cmp r6, #4 beq _0221B2BC cmp r6, #8 beq _0221B2CE b _0221B2EA _0221B2AC: cmp r6, #0x10 beq _0221B2D8 b _0221B2EA _0221B2B2: add r0, r5, #0 bl MOD08_02212458 str r0, [sp, #8] b _0221B2EE _0221B2BC: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 str r0, [sp, #8] b _0221B2EE _0221B2CE: add r0, r5, #0 bl MOD08_02212460 str r0, [sp, #8] b _0221B2EE _0221B2D8: add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 str r0, [sp, #8] b _0221B2EE _0221B2EA: bl ErrorHandling _0221B2EE: add r2, r4, #0 ldr r1, [sp, #8] add r0, r5, #0 add r2, #0x54 bl MOD08_022275C0 add r2, r4, #0 add r0, r5, #0 add r1, r6, #0 add r2, #0x1c add r3, sp, #0x10 bl MOD08_02227BAC add r0, r4, #0 mov r1, #0 add r0, #0x58 strh r1, [r0] add r0, r4, #0 add r0, #0x5a strh r1, [r0] ldr r0, [r4, #4] ldr r1, [sp, #8] bl MOD08_02227470 cmp r0, #3 bne _0221B328 mov r1, #0x4f mvn r1, r1 b _0221B32C _0221B328: mov r1, #0x15 lsl r1, r1, #4 _0221B32C: add r0, r4, #0 add r0, #0x58 strh r1, [r0] ldr r0, [sp, #0xc] cmp r0, #0 bne _0221B356 mov r0, #0x22 ldrsh r3, [r4, r0] lsl r0, r7, #0x10 lsr r0, r0, #0x10 str r3, [sp] str r0, [sp, #4] mov r1, #0x20 mov r2, #0x58 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] add r0, #0x30 bl MOD08_02217E80 b _0221B37A _0221B356: ldr r1, [sp, #8] add r0, r5, #0 mov r2, #0 bl MOD08_02217B98 add r2, r0, #0 mov r0, #0x22 ldrsh r3, [r4, r0] lsl r0, r7, #0x10 lsr r0, r0, #0x10 str r3, [sp] str r0, [sp, #4] mov r1, #0x58 add r0, r4, #0 ldrsh r1, [r4, r1] add r0, #0x30 bl MOD08_02217E80 _0221B37A: ldr r0, [r4, #4] ldr r1, _0221B388 ; =MOD08_0221B128 add r2, r4, #0 bl MOD08_02212400 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _0221B388: .word MOD08_0221B128 thumb_func_start MOD08_0221B38C MOD08_0221B38C: ; 0x0221B38C push {r3, r4, r5, r6, lr} sub sp, #0x1c mov r1, #0 add r5, r0, #0 bl MOD08_02212498 add r4, r0, #0 cmp r4, #8 bgt _0221B3AE cmp r4, #2 blt _0221B3EC beq _0221B3B4 cmp r4, #4 beq _0221B3BE cmp r4, #8 beq _0221B3D0 b _0221B3EC _0221B3AE: cmp r4, #0x10 beq _0221B3DA b _0221B3EC _0221B3B4: add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 b _0221B3F0 _0221B3BE: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221B3F0 _0221B3D0: add r0, r5, #0 bl MOD08_02212460 add r6, r0, #0 b _0221B3F0 _0221B3DA: add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r6, r0, #0 b _0221B3F0 _0221B3EC: bl ErrorHandling _0221B3F0: add r0, r5, #0 add r1, r6, #0 add r2, sp, #0 bl MOD08_022275C0 add r0, r5, #0 add r1, r4, #0 add r2, sp, #8 add r3, sp, #4 bl MOD08_02227BAC add r0, r5, #0 add r1, r6, #0 bl MOD08_0221552C lsl r0, r0, #0x10 asr r4, r0, #0x10 mov r1, #0 add r2, sp, #0 ldrsh r2, [r2, r1] ldr r0, [sp, #0x10] bl FUN_02007558 add r3, sp, #0 mov r2, #2 ldrsh r2, [r3, r2] ldr r0, [sp, #0x10] mov r1, #1 add r2, r2, r4 bl FUN_02007558 add sp, #0x1c pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0221B434 MOD08_0221B434: ; 0x0221B434 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x30] bl MOD08_02218AF8 cmp r0, #0 bne _0221B458 ldr r0, [r4, #0x30] bl MOD08_02218B08 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221B458: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221B45C MOD08_0221B45C: ; 0x0221B45C push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 mov r1, #0x34 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r7, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [sp, #0x1c] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 str r0, [sp, #0x20] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 str r0, [sp, #0x24] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 add r2, r4, #0 str r0, [sp, #0x28] add r0, r5, #0 add r1, r7, #0 add r2, #0x1c add r3, sp, #0x2c bl MOD08_02227F88 ldr r0, [r4, #0x28] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r7, r0, #0 add r0, r5, #0 bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] lsl r0, r6, #0x18 asr r0, r0, #0x18 str r0, [sp, #4] ldr r0, [sp, #0x1c] lsl r3, r7, #0x14 lsl r0, r0, #0x18 asr r0, r0, #0x18 str r0, [sp, #8] ldr r0, [sp, #0x20] mov r2, #2 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0xc] ldr r0, [sp, #0x24] lsr r3, r3, #0x10 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] ldr r0, [sp, #0x28] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #0x14] ldr r0, _0221B520 ; =0x0000044C str r0, [sp, #0x18] ldr r0, [r4, #0x18] bl MOD08_02218B20 str r0, [r4, #0x30] ldr r0, [r4, #4] ldr r1, _0221B524 ; =MOD08_0221B434 add r2, r4, #0 bl MOD08_02212400 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} nop _0221B520: .word 0x0000044C _0221B524: .word MOD08_0221B434 thumb_func_start MOD08_0221B528 MOD08_0221B528: ; 0x0221B528 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 bne _0221B59C ldr r0, [r4, #0x4c] add r1, r0, #1 str r1, [r4, #0x4c] ldr r0, [r4, #0x44] cmp r1, r0 blt _0221B5B0 mov r1, #0 str r1, [r4, #0x4c] ldr r0, [r4, #0x48] cmp r0, #0 ldr r0, [r4, #0x54] bne _0221B560 cmp r0, #0 bge _0221B552 str r1, [r4, #0x54] _0221B552: ldr r0, [r4, #0x54] cmp r0, #0 bne _0221B574 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221B574 _0221B560: cmp r0, #0x50 ble _0221B568 mov r0, #0x50 str r0, [r4, #0x54] _0221B568: ldr r0, [r4, #0x54] cmp r0, #0x50 bne _0221B574 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221B574: ldr r0, [r4, #0x24] ldr r2, [r4, #0x54] mov r1, #0x12 bl FUN_02007558 ldr r0, [r4, #0x24] ldr r2, [r4, #0x50] mov r1, #1 bl FUN_02007558 mov r0, #0x42 ldrsh r1, [r4, r0] ldr r2, [r4, #0x50] sub r1, r2, r1 str r1, [r4, #0x50] ldrsh r0, [r4, r0] ldr r1, [r4, #0x54] add r0, r1, r0 str r0, [r4, #0x54] pop {r3, r4, r5, pc} _0221B59C: ldr r0, [r4, #0x24] bl MOD08_02218E34 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221B5B0: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221B5B4 MOD08_0221B5B4: ; 0x0221B5B4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 mov r1, #0x58 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r6, r0, #0 add r2, r4, #0 add r0, r5, #0 add r1, r6, #0 add r2, #0x1c add r3, sp, #4 bl MOD08_02227BAC cmp r6, #8 bgt _0221B5F6 cmp r6, #2 blt _0221B634 beq _0221B5FC cmp r6, #4 beq _0221B606 cmp r6, #8 beq _0221B618 b _0221B634 _0221B5F6: cmp r6, #0x10 beq _0221B622 b _0221B634 _0221B5FC: add r0, r5, #0 bl MOD08_02212458 add r7, r0, #0 b _0221B638 _0221B606: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r7, r0, #0 b _0221B638 _0221B618: add r0, r5, #0 bl MOD08_02212460 add r7, r0, #0 b _0221B638 _0221B622: add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r7, r0, #0 b _0221B638 _0221B634: bl ErrorHandling _0221B638: add r0, r5, #0 mov r1, #1 bl MOD08_02212498 str r0, [r4, #0x48] cmp r0, #0 ldr r0, [r4, #0x24] bne _0221B68C mov r1, #1 bl FUN_0200782C str r0, [r4, #0x50] ldr r0, [r4, #0x24] mov r1, #0x12 bl FUN_0200782C mov r1, #0x50 sub r0, r1, r0 str r0, [r4, #0x54] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r1, r4, #0 add r1, #0x40 strh r0, [r1] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 add r1, r4, #0 add r1, #0x42 strh r0, [r1] mov r0, #0x42 ldrsh r1, [r4, r0] sub r0, #0x43 add r2, r1, #0 mul r2, r0 add r0, r4, #0 add r0, #0x42 strh r2, [r0] b _0221B6BA _0221B68C: mov r1, #1 bl FUN_0200782C str r0, [r4, #0x50] ldr r0, [r4, #0x24] mov r1, #0x12 bl FUN_0200782C str r0, [r4, #0x54] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r1, r4, #0 add r1, #0x40 strh r0, [r1] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 add r1, r4, #0 add r1, #0x42 strh r0, [r1] _0221B6BA: mov r0, #0 str r0, [r4, #0x30] str r0, [r4, #0x34] mov r0, #0x50 str r0, [r4, #0x38] add r0, r5, #0 add r1, r7, #0 bl MOD08_0221552C mov r1, #0x50 sub r0, r1, r0 str r0, [r4, #0x3c] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 str r0, [r4, #0x44] mov r0, #0 str r0, [r4, #0x4c] ldr r0, [r4, #0x3c] str r0, [sp] ldr r0, [r4, #0x24] ldr r1, [r4, #0x30] ldr r2, [r4, #0x34] ldr r3, [r4, #0x38] bl FUN_02007E40 ldr r0, [r4, #4] ldr r1, _0221B700 ; =MOD08_0221B528 add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _0221B700: .word MOD08_0221B528 thumb_func_start MOD08_0221B704 MOD08_0221B704: ; 0x0221B704 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 cmp r1, #8 bgt _0221B71E cmp r1, #2 blt _0221B754 beq _0221B724 cmp r1, #4 beq _0221B72C cmp r1, #8 beq _0221B73C b _0221B754 _0221B71E: cmp r1, #0x10 beq _0221B744 b _0221B754 _0221B724: bl MOD08_02212458 add r4, r0, #0 b _0221B758 _0221B72C: bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r4, r0, #0 b _0221B758 _0221B73C: bl MOD08_02212460 add r4, r0, #0 b _0221B758 _0221B744: bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022274C0 add r4, r0, #0 b _0221B758 _0221B754: bl ErrorHandling _0221B758: add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_0221B75C MOD08_0221B75C: ; 0x0221B75C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221B76E cmp r0, #1 beq _0221B7B4 pop {r3, r4, r5, pc} _0221B76E: ldr r0, [r4, #0x24] add r1, r0, #1 str r1, [r4, #0x24] ldr r0, [r4, #0x20] cmp r1, r0 blt _0221B7E6 mov r0, #0 str r0, [r4, #0x24] mov r0, #0x1c ldrsh r0, [r4, r0] ldr r1, [r4, #0x44] add r2, r1, r0 str r2, [r4, #0x44] ldr r0, [r4, #0x30] mov r1, #1 bl FUN_02007558 mov r0, #0x1c ldrsh r0, [r4, r0] ldr r1, [r4, #0x3c] sub r1, r1, r0 str r1, [r4, #0x3c] ldr r0, [r4, #0x40] cmp r1, r0 ble _0221B7A8 str r0, [r4, #0x3c] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221B7A8: ldr r0, [r4, #0x30] ldr r2, [r4, #0x3c] mov r1, #0x12 bl FUN_02007558 pop {r3, r4, r5, pc} _0221B7B4: ldr r0, [r4, #0x30] mov r1, #0xe mov r2, #0 bl FUN_02007558 ldr r0, [r4, #0x30] ldr r2, [r4, #0x48] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #0x30] ldr r2, [r4, #0x40] mov r1, #0x12 bl FUN_02007558 ldr r0, [r4, #0x30] bl MOD08_02218E34 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221B7E6: pop {r3, r4, r5, pc} thumb_func_start MOD08_0221B7E8 MOD08_0221B7E8: ; 0x0221B7E8 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221B7FA cmp r0, #1 beq _0221B83E pop {r3, r4, r5, pc} _0221B7FA: ldr r0, [r4, #0x24] add r1, r0, #1 str r1, [r4, #0x24] ldr r0, [r4, #0x20] cmp r1, r0 blt _0221B870 mov r0, #0 str r0, [r4, #0x24] mov r0, #0x1c ldrsh r0, [r4, r0] ldr r1, [r4, #0x44] add r2, r1, r0 str r2, [r4, #0x44] ldr r0, [r4, #0x30] mov r1, #1 bl FUN_02007558 mov r0, #0x1c ldrsh r0, [r4, r0] ldr r1, [r4, #0x3c] sub r0, r1, r0 str r0, [r4, #0x3c] bpl _0221B832 mov r0, #0 str r0, [r4, #0x3c] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221B832: ldr r0, [r4, #0x30] ldr r2, [r4, #0x3c] mov r1, #0x12 bl FUN_02007558 pop {r3, r4, r5, pc} _0221B83E: ldr r0, [r4, #0x30] mov r1, #0xe mov r2, #0 bl FUN_02007558 ldr r0, [r4, #0x30] ldr r2, [r4, #0x48] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #0x30] ldr r2, [r4, #0x40] mov r1, #0x12 bl FUN_02007558 ldr r0, [r4, #0x30] bl MOD08_02218E34 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221B870: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221B874 MOD08_0221B874: ; 0x0221B874 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221B886 cmp r0, #1 beq _0221B8C8 pop {r3, r4, r5, pc} _0221B886: ldr r0, [r4, #0x24] add r1, r0, #1 str r1, [r4, #0x24] ldr r0, [r4, #0x20] cmp r1, r0 blt _0221B8E6 mov r0, #0 str r0, [r4, #0x24] mov r1, #0x1c ldrsh r2, [r4, r1] ldr r3, [r4, #0x3c] sub r2, r3, r2 str r2, [r4, #0x3c] ldrsh r1, [r4, r1] ldr r2, [r4, #0x40] add r1, r2, r1 str r1, [r4, #0x40] ldr r1, [r4, #0x3c] cmp r1, #0 bge _0221B8B6 str r0, [r4, #0x3c] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221B8B6: ldr r0, [r4, #0x40] mov r1, #0 str r0, [sp] ldr r0, [r4, #0x30] ldr r2, [r4, #0x3c] mov r3, #0x50 bl FUN_02007E40 pop {r3, r4, r5, pc} _0221B8C8: ldr r0, [r4, #0x30] mov r1, #0xe mov r2, #0 bl FUN_02007558 ldr r0, [r4, #0x30] bl MOD08_02218E34 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221B8E6: pop {r3, r4, r5, pc} thumb_func_start MOD08_0221B8E8 MOD08_0221B8E8: ; 0x0221B8E8 push {r4, r5, r6, lr} sub sp, #8 mov r1, #0x50 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #0x1c] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 str r0, [r4, #0x20] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r6, r0, #0 add r2, r4, #0 add r0, r5, #0 add r1, r6, #0 add r2, #0x28 add r3, sp, #4 bl MOD08_02227BAC add r0, r5, #0 add r1, r6, #0 bl MOD08_0221B704 add r6, r0, #0 add r0, r5, #0 mov r1, #5 bl MOD08_02212498 cmp r0, #0 beq _0221B96A add r0, r5, #0 add r1, r6, #0 bl MOD08_0221552C mov r3, #0x50 sub r0, r3, r0 str r0, [r4, #0x3c] mov r1, #0 str r1, [r4, #0x40] str r1, [sp] ldr r0, [r4, #0x30] ldr r2, [r4, #0x3c] bl FUN_02007E40 ldr r0, [r4, #4] ldr r1, _0221B9DC ; =MOD08_0221B874 add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r4, r5, r6, pc} _0221B96A: ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200782C str r0, [r4, #0x44] str r0, [r4, #0x48] add r0, r5, #0 add r1, r6, #0 bl MOD08_0221552C mov r3, #0x50 sub r0, r3, r0 str r0, [r4, #0x3c] str r0, [r4, #0x40] mov r0, #0x1c ldrsh r0, [r4, r0] cmp r0, #0 ble _0221B9AA ldr r0, [r4, #0x3c] mov r1, #0 str r0, [sp] ldr r0, [r4, #0x30] add r2, r1, #0 bl FUN_02007E40 ldr r0, [r4, #4] ldr r1, _0221B9E0 ; =MOD08_0221B7E8 add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r4, r5, r6, pc} _0221B9AA: mov r0, #0 str r0, [r4, #0x3c] ldr r1, [r4, #0x44] ldr r0, [r4, #0x40] add r2, r1, r0 str r2, [r4, #0x44] ldr r0, [r4, #0x30] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #0x3c] mov r1, #0 str r0, [sp] ldr r0, [r4, #0x30] add r2, r1, #0 mov r3, #0x50 bl FUN_02007E40 ldr r0, [r4, #4] ldr r1, _0221B9E4 ; =MOD08_0221B75C add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r4, r5, r6, pc} .align 2, 0 _0221B9DC: .word MOD08_0221B874 _0221B9E0: .word MOD08_0221B7E8 _0221B9E4: .word MOD08_0221B75C thumb_func_start MOD08_0221B9E8 MOD08_0221B9E8: ; 0x0221B9E8 push {r3, r4, lr} sub sp, #4 add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221B9FC cmp r0, #1 beq _0221BA1C b _0221BAAC _0221B9FC: ldr r0, [r4, #0x10] str r0, [sp] ldr r1, [r4, #4] ldr r2, [r4, #8] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 ldr r3, [r4, #0xc] add r0, #0xd4 asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_022183C0 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221BA1C: add r0, r4, #0 add r0, #0xd4 bl MOD08_022183F0 cmp r0, #0 bne _0221BA70 ldrb r1, [r4, #1] ldr r0, [r4, #0x18] cmp r1, r0 ldrb r0, [r4] blt _0221BA36 add r0, r0, #1 b _0221BA38 _0221BA36: sub r0, r0, #1 _0221BA38: strb r0, [r4] ldr r0, [r4, #0x20] cmp r0, #0 beq _0221BA50 ldr r1, [r4, #0x1c] mov r2, #0 lsl r1, r1, #0x18 ldr r0, [r4, #0x28] lsr r1, r1, #0x18 add r3, r2, #0 bl FUN_020179E0 _0221BA50: ldr r0, [r4, #0x24] cmp r0, #0 beq _0221BA66 ldr r1, [r4, #0x1c] ldr r0, [r4, #0x28] lsl r1, r1, #0x18 lsr r1, r1, #0x18 mov r2, #3 mov r3, #0 bl FUN_020179E0 _0221BA66: ldrb r0, [r4, #1] add sp, #4 add r0, r0, #1 strb r0, [r4, #1] pop {r3, r4, pc} _0221BA70: mov r3, #0xd4 ldrsh r0, [r4, r3] cmp r0, #0 beq _0221BA8C mov r0, #1 str r0, [r4, #0x20] ldr r1, [r4, #0x1c] ldrsh r3, [r4, r3] lsl r1, r1, #0x18 ldr r0, [r4, #0x28] lsr r1, r1, #0x18 mov r2, #0 bl FUN_020179E0 _0221BA8C: mov r3, #0xd6 ldrsh r0, [r4, r3] cmp r0, #0 beq _0221BABA mov r0, #1 str r0, [r4, #0x24] ldr r1, [r4, #0x1c] ldrsh r3, [r4, r3] lsl r1, r1, #0x18 ldr r0, [r4, #0x28] lsr r1, r1, #0x18 mov r2, #3 bl FUN_020179E0 add sp, #4 pop {r3, r4, pc} _0221BAAC: ldr r0, [r4, #0x2c] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221BABA: add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_0221BAC0 MOD08_0221BAC0: ; 0x0221BAC0 push {r3, r4, r5, lr} mov r1, #0xf8 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] str r5, [r4, #0x2c] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #0x30] ldr r0, [r4, #0x2c] bl MOD08_02212490 str r0, [r4, #0x28] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #4] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 str r0, [r4, #8] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [r4, #0xc] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 str r0, [r4, #0x10] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 str r0, [r4, #0x18] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 cmp r0, #0 bne _0221BB26 mov r0, #3 b _0221BB28 _0221BB26: mov r0, #2 _0221BB28: str r0, [r4, #0x1c] ldr r0, [r4, #0x2c] ldr r1, _0221BB38 ; =MOD08_0221B9E8 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0221BB38: .word MOD08_0221B9E8 thumb_func_start MOD08_0221BB3C MOD08_0221BB3C: ; 0x0221BB3C push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldr r0, [r4, #0x2c] ldr r3, [r4, #0x24] cmp r3, r0 beq _0221BB50 ldr r1, [r4, #0x28] cmp r1, r0 bne _0221BB60 _0221BB50: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} _0221BB60: mov r1, #0x20 ldrsh r2, [r4, r1] cmp r2, #0 bge _0221BB82 add r2, r3, r2 cmp r2, #0 ble _0221BB7A str r2, [r4, #0x24] ldrsh r0, [r4, r1] ldr r2, [r4, #0x28] add r0, r2, r0 str r0, [r4, #0x28] b _0221BB9A _0221BB7A: str r0, [r4, #0x24] ldr r0, [r4, #0x2c] str r0, [r4, #0x28] b _0221BB9A _0221BB82: add r2, r3, r2 cmp r2, #0xf bge _0221BB94 str r2, [r4, #0x24] ldrsh r0, [r4, r1] ldr r2, [r4, #0x28] add r0, r2, r0 str r0, [r4, #0x28] b _0221BB9A _0221BB94: str r0, [r4, #0x24] ldr r0, [r4, #0x2c] str r0, [r4, #0x28] _0221BB9A: ldr r0, [r4, #0x1c] bl FUN_0200C5A8 ldr r0, [r4, #0x28] ldr r1, [r4, #0x24] lsl r0, r0, #4 orr r1, r0 ldr r0, _0221BBB4 ; =0x0400004D strb r1, [r0] ldr r0, [r4, #0xc] bl FUN_0200BC1C pop {r4, pc} .align 2, 0 _0221BBB4: .word 0x0400004D thumb_func_start MOD08_0221BBB8 MOD08_0221BBB8: ; 0x0221BBB8 push {r3, r4, r5, lr} mov r1, #0x30 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r0, [r4, #4] mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0x20] ldr r0, [r4, #4] mov r1, #2 bl MOD08_02212498 str r0, [r4, #0x24] ldr r0, [r4, #4] mov r1, #3 bl MOD08_02212498 str r0, [r4, #0x28] ldr r0, [r4, #4] mov r1, #0 bl MOD08_02212498 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022124D8 mov r1, #1 str r0, [r4, #0x1c] bl FUN_0200C644 mov r0, #0x20 ldrsh r0, [r4, r0] cmp r0, #0 bge _0221BC0E mov r0, #0 b _0221BC10 _0221BC0E: mov r0, #0xf _0221BC10: str r0, [r4, #0x2c] ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200C8F8 ldr r0, [r4, #4] ldr r1, _0221BC2C ; =MOD08_0221BB3C add r2, r4, #0 bl MOD08_02212400 add r1, r4, #0 bl MOD08_0221BB3C pop {r3, r4, r5, pc} .align 2, 0 _0221BC2C: .word MOD08_0221BB3C thumb_func_start MOD08_0221BC30 MOD08_0221BC30: ; 0x0221BC30 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0xc] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 strh r0, [r4, #0xe] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #4] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strh r0, [r4, #6] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4, #8] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 str r0, [r4, #0x10] add r0, r5, #0 mov r1, #8 bl MOD08_02212498 str r0, [r4, #0x30] add r0, r5, #0 mov r1, #7 bl MOD08_02212498 ldr r2, _0221BCFC ; =0xFFFF0000 mov r1, #0 and r2, r0 lsl r0, r0, #0x10 str r1, [r4, #0x1c] lsr r2, r2, #0x10 str r2, [r4, #0x20] lsr r0, r0, #0x10 str r0, [r4, #0x24] ldr r0, [r4, #0x20] cmp r0, #0 bne _0221BCA6 str r1, [r4, #0x20] _0221BCA6: ldr r0, [r4, #0x24] cmp r0, #0 bne _0221BCB0 mov r0, #0xff str r0, [r4, #0x24] _0221BCB0: ldr r1, [r4] add r0, r5, #0 bl MOD08_02212484 str r0, [r4, #0x38] add r0, r5, #0 bl MOD08_02212468 str r0, [r4, #0x34] ldr r0, [r4, #0x10] cmp r0, #0 bne _0221BCDA add r0, r5, #0 bl MOD08_02212458 str r0, [r4, #0x14] add r0, r5, #0 bl MOD08_02212460 str r0, [r4, #0x18] b _0221BCEE _0221BCDA: cmp r0, #1 bne _0221BCEE add r0, r5, #0 bl MOD08_02212460 str r0, [r4, #0x14] add r0, r5, #0 bl MOD08_02212458 str r0, [r4, #0x18] _0221BCEE: ldr r0, [r4, #0x38] cmp r0, #0 bne _0221BCF8 bl ErrorHandling _0221BCF8: pop {r3, r4, r5, pc} nop _0221BCFC: .word 0xFFFF0000 thumb_func_start MOD08_0221BD00 MOD08_0221BD00: ; 0x0221BD00 ldr r0, [r0, #8] mov r1, #0 cmp r0, #0 beq _0221BD12 _0221BD08: ldrh r2, [r0, #0x26] ldrh r3, [r0, #0x24] ldr r0, [r0] cmp r0, #0 bne _0221BD08 _0221BD12: cmp r2, r3 beq _0221BD18 mov r1, #1 _0221BD18: add r0, r1, #0 bx lr thumb_func_start MOD08_0221BD1C MOD08_0221BD1C: ; 0x0221BD1C push {r4, r5, r6, lr} add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x38] bl MOD08_0221BD00 add r4, r0, #0 mov r0, #4 ldrsh r0, [r5, r0] ldr r1, [r5, #0x28] cmp r1, r0 bge _0221BD3A add r0, r1, #1 str r0, [r5, #0x28] pop {r4, r5, r6, pc} _0221BD3A: add r0, r5, #0 add r0, #0xa8 bl MOD08_02217ECC cmp r0, #0 bne _0221BD62 cmp r4, #0 bne _0221BD62 ldr r0, [r5, #0x34] ldr r1, [r5, #0x38] bl FUN_020133DC ldr r0, [r5, #0x40] add r1, r6, #0 bl MOD08_02212438 add r0, r5, #0 bl MOD08_02228094 pop {r4, r5, r6, pc} _0221BD62: ldr r1, [r5, #0x1c] ldr r0, [r5, #0x20] cmp r0, r1 bgt _0221BD70 ldr r0, [r5, #0x24] cmp r0, r1 bge _0221BD76 _0221BD70: ldr r0, [r5, #0x24] cmp r0, #0xff bne _0221BDD4 _0221BD76: mov r0, #0xa8 ldrsh r2, [r5, r0] ldr r1, [r5, #0x38] mov r3, #0xac add r0, r2, #0 ldr r2, [r1, #0x20] mul r0, r3 ldr r2, [r2] ldr r2, [r2, #4] add r0, r0, r2 str r0, [r1, #0x28] mov r0, #0xaa ldrsh r4, [r5, r0] ldr r2, [r5, #0x38] add r1, r4, #0 mul r1, r3 ldr r3, [r2, #0x20] ldr r3, [r3] ldr r3, [r3, #8] add r1, r1, r3 str r1, [r2, #0x2c] ldr r1, [r5, #0x30] cmp r1, #0 beq _0221BDD4 mov r1, #6 ldrsh r1, [r5, r1] add r0, #0xbe bl _s32_div_f ldr r1, [r5, #0x2c] add r0, r1, r0 str r0, [r5, #0x2c] lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_0201B970 mov r1, #0xaa ldrsh r2, [r5, r1] mov r1, #0xac mul r1, r2 add r2, r1, r0 ldr r1, [r5, #0x38] ldr r0, [r1, #0x20] ldr r0, [r0] ldr r0, [r0, #8] add r0, r2, r0 str r0, [r1, #0x2c] _0221BDD4: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0221BDD8 MOD08_0221BDD8: ; 0x0221BDD8 push {r4, r5, r6, r7, lr} sub sp, #0x24 mov r1, #0x41 lsl r1, r1, #2 add r6, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r6, #0 add r1, #0x3c bl MOD08_02227B70 add r0, r6, #0 add r1, r4, #0 bl MOD08_0221BC30 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_02217C1C add r5, r0, #0 ldr r1, [r4, #0x14] add r0, r6, #0 add r2, sp, #0x18 bl MOD08_0222771C ldr r1, [r4, #0x18] add r0, r6, #0 add r2, sp, #0xc bl MOD08_0222771C ldr r0, [sp, #0x18] mov r1, #0xac bl _s32_div_f add r6, r0, #0 ldr r0, [sp, #0xc] mov r1, #0xac bl _s32_div_f add r7, r0, #0 ldr r0, [sp, #0x1c] mov r1, #0xac bl _s32_div_f str r0, [sp, #8] ldr r0, [sp, #0x10] mov r1, #0xac bl _s32_div_f mov r1, #0xe ldrsh r1, [r4, r1] add r2, r1, #0 mul r2, r5 add r0, r0, r2 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldrh r0, [r4, #6] lsl r1, r6, #0x10 mov r2, #0xc str r0, [sp, #4] ldrsh r2, [r4, r2] add r0, r4, #0 add r0, #0xa8 add r3, r2, #0 mul r3, r5 add r2, r7, r3 ldr r3, [sp, #8] lsl r2, r2, #0x10 lsl r3, r3, #0x10 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 cmp r5, #0 ldr r2, _0221BEFC ; =0x00005C71 ble _0221BE90 ldr r1, _0221BF00 ; =0x00000E38 add r0, r4, #0 add r0, #0xf0 mul r1, r5 mul r2, r5 mov r3, #0xa bl MOD08_02218008 b _0221BEA0 _0221BE90: ldr r1, _0221BF04 ; =0x00003FFF add r0, r4, #0 add r0, #0xf0 mul r1, r5 mul r2, r5 mov r3, #0xa bl MOD08_02218008 _0221BEA0: ldr r0, [r4, #0x20] mov r5, #0 cmp r0, #0 ble _0221BEBA add r6, r4, #0 add r6, #0xa8 _0221BEAC: add r0, r6, #0 bl MOD08_02217ECC ldr r0, [r4, #0x20] add r5, r5, #1 cmp r5, r0 blt _0221BEAC _0221BEBA: ldr r0, [r4, #0x24] cmp r0, #0xff beq _0221BEC4 add r0, r0, #1 str r0, [r4, #0x1c] _0221BEC4: mov r0, #0xa8 ldrsh r3, [r4, r0] ldr r1, [r4, #0x38] mov r2, #0xac add r0, r3, #0 ldr r3, [r1, #0x20] mul r0, r2 ldr r3, [r3] ldr r3, [r3, #4] add r0, r0, r3 str r0, [r1, #0x28] mov r1, #0xaa ldrsh r1, [r4, r1] ldr r0, [r4, #0x38] mul r2, r1 ldr r1, [r0, #0x20] ldr r1, [r1] ldr r1, [r1, #8] add r1, r2, r1 str r1, [r0, #0x2c] ldr r0, [r4, #0x40] ldr r1, _0221BF08 ; =MOD08_0221BD1C add r2, r4, #0 bl MOD08_02212400 add sp, #0x24 pop {r4, r5, r6, r7, pc} nop _0221BEFC: .word 0x00005C71 _0221BF00: .word 0x00000E38 _0221BF04: .word 0x00003FFF _0221BF08: .word MOD08_0221BD1C thumb_func_start MOD08_0221BF0C MOD08_0221BF0C: ; 0x0221BF0C push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 mov r1, #0x41 lsl r1, r1, #2 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r5, #0 add r1, #0x3c bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 str r0, [r4, #0x10] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #6] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strh r0, [r4, #4] mov r0, #0 str r0, [r4, #0x28] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 ldr r2, _0221C098 ; =0xFFFF0000 mov r1, #0 and r2, r0 lsl r0, r0, #0x10 str r1, [r4, #0x1c] lsr r2, r2, #0x10 str r2, [r4, #0x20] lsr r0, r0, #0x10 str r0, [r4, #0x24] ldr r0, [r4, #0x20] cmp r0, #0 bne _0221BF7E str r1, [r4, #0x20] _0221BF7E: ldr r0, [r4, #0x24] cmp r0, #0 bne _0221BF88 mov r0, #0xff str r0, [r4, #0x24] _0221BF88: ldr r1, [r4] add r0, r5, #0 bl MOD08_02212484 str r0, [r4, #0x38] add r0, r5, #0 bl MOD08_02212468 str r0, [r4, #0x34] ldr r0, [r4, #0x10] cmp r0, #0 bne _0221BFB0 add r0, r5, #0 bl MOD08_02212458 str r0, [r4, #0x14] add r0, r5, #0 bl MOD08_02212458 b _0221BFBE _0221BFB0: add r0, r5, #0 bl MOD08_02212460 str r0, [r4, #0x14] add r0, r5, #0 bl MOD08_02212460 _0221BFBE: str r0, [r4, #0x18] ldr r0, [r4, #0x38] cmp r0, #0 bne _0221BFCA bl ErrorHandling _0221BFCA: ldr r1, [r4, #0x14] add r0, r5, #0 add r2, sp, #0x14 bl MOD08_0222771C ldr r1, [r4, #0x18] add r0, r5, #0 add r2, sp, #8 bl MOD08_0222771C cmp r6, #0 bne _0221BFEE add r0, sp, #0x14 bl MOD08_0222795C ldr r0, [sp, #8] str r0, [sp, #0x14] b _0221BFF8 _0221BFEE: add r0, sp, #8 bl MOD08_0222795C ldr r0, [sp, #0x14] str r0, [sp, #8] _0221BFF8: ldr r0, [sp, #0x14] mov r1, #0xac bl _s32_div_f add r5, r0, #0 ldr r0, [sp, #8] mov r1, #0xac bl _s32_div_f add r6, r0, #0 ldr r0, [sp, #0x18] mov r1, #0xac bl _s32_div_f add r7, r0, #0 ldr r0, [sp, #0xc] mov r1, #0xac bl _s32_div_f lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldrh r0, [r4, #6] lsl r1, r5, #0x10 lsl r2, r6, #0x10 str r0, [sp, #4] add r0, r4, #0 lsl r3, r7, #0x10 add r0, #0xa8 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 ldr r0, [r4, #0x20] mov r5, #0 cmp r0, #0 ble _0221C056 add r6, r4, #0 add r6, #0xa8 _0221C048: add r0, r6, #0 bl MOD08_02217ECC ldr r0, [r4, #0x20] add r5, r5, #1 cmp r5, r0 blt _0221C048 _0221C056: ldr r0, [r4, #0x24] cmp r0, #0xff beq _0221C060 add r0, r0, #1 str r0, [r4, #0x1c] _0221C060: mov r0, #0xa8 ldrsh r3, [r4, r0] ldr r1, [r4, #0x38] mov r2, #0xac add r0, r3, #0 ldr r3, [r1, #0x20] mul r0, r2 ldr r3, [r3] ldr r3, [r3, #4] add r0, r0, r3 str r0, [r1, #0x28] mov r1, #0xaa ldrsh r1, [r4, r1] ldr r0, [r4, #0x38] mul r2, r1 ldr r1, [r0, #0x20] ldr r1, [r1] ldr r1, [r1, #8] add r1, r2, r1 str r1, [r0, #0x2c] ldr r0, [r4, #0x40] ldr r1, _0221C09C ; =MOD08_0221BD1C add r2, r4, #0 bl MOD08_02212400 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} nop _0221C098: .word 0xFFFF0000 _0221C09C: .word MOD08_0221BD1C thumb_func_start MOD08_0221C0A0 MOD08_0221C0A0: ; 0x0221C0A0 push {r4, r5, r6, lr} add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x38] bl MOD08_0221BD00 add r4, r0, #0 add r0, r5, #0 add r1, r5, #0 add r0, #0xa8 add r1, #0xcc bl MOD08_02217F9C cmp r0, #0 bne _0221C0DA cmp r4, #0 bne _0221C0DA ldr r0, [r5, #0x34] ldr r1, [r5, #0x38] bl FUN_020133DC ldr r0, [r5, #0x40] add r1, r6, #0 bl MOD08_02212438 add r0, r5, #0 bl MOD08_02228094 pop {r4, r5, r6, pc} _0221C0DA: mov r1, #0xa8 ldrsh r1, [r5, r1] ldr r0, [r5, #0x38] mov r2, #0xac add r3, r1, #0 ldr r1, [r0, #0x20] mul r3, r2 ldr r1, [r1] ldr r1, [r1, #4] add r1, r3, r1 str r1, [r0, #0x28] mov r1, #0xaa ldrsh r1, [r5, r1] ldr r0, [r5, #0x38] mul r2, r1 ldr r1, [r0, #0x20] ldr r1, [r1] ldr r1, [r1, #8] add r1, r2, r1 str r1, [r0, #0x2c] pop {r4, r5, r6, pc} thumb_func_start MOD08_0221C104 MOD08_0221C104: ; 0x0221C104 push {r4, r5, r6, r7, lr} sub sp, #0x2c mov r1, #0x41 lsl r1, r1, #2 add r6, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r6, #0 add r1, #0x3c bl MOD08_02227B70 add r0, r6, #0 add r1, r4, #0 bl MOD08_0221BC30 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_02217C1C add r5, r0, #0 ldr r1, [r4, #0x14] add r0, r6, #0 add r2, sp, #0x20 bl MOD08_0222771C ldr r1, [r4, #0x18] add r0, r6, #0 add r2, sp, #0x14 bl MOD08_0222771C ldr r0, [sp, #0x20] mov r1, #0xac bl _s32_div_f add r6, r0, #0 ldr r0, [sp, #0x14] mov r1, #0xac bl _s32_div_f str r0, [sp, #0x10] ldr r0, [sp, #0x24] mov r1, #0xac bl _s32_div_f add r7, r0, #0 ldr r0, [sp, #0x18] mov r1, #0xac bl _s32_div_f lsl r1, r7, #0x10 asr r1, r1, #0x10 str r1, [sp] mov r1, #0xe ldrsh r1, [r4, r1] mov r3, #0xc add r2, r1, #0 mul r2, r5 add r0, r0, r2 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] ldrh r0, [r4, #6] lsl r2, r6, #0x10 add r1, r4, #0 str r0, [sp, #8] ldr r0, [r4, #8] add r1, #0xcc lsl r0, r0, #0xc neg r0, r0 str r0, [sp, #0xc] ldrsh r6, [r4, r3] add r0, r4, #0 add r0, #0xa8 add r3, r6, #0 ldr r6, [sp, #0x10] mul r3, r5 add r3, r6, r3 lsl r3, r3, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02217F50 cmp r5, #0 ldr r2, _0221C23C ; =0x00005C71 ble _0221C1CA ldr r1, _0221C240 ; =0x00000E38 add r0, r4, #0 add r0, #0xf0 mul r1, r5 mul r2, r5 mov r3, #0xa bl MOD08_02218008 b _0221C1DA _0221C1CA: ldr r1, _0221C244 ; =0x00003FFF add r0, r4, #0 add r0, #0xf0 mul r1, r5 mul r2, r5 mov r3, #0xa bl MOD08_02218008 _0221C1DA: ldr r0, [r4, #0x20] mov r5, #0 cmp r0, #0 ble _0221C1FA add r6, r4, #0 add r7, r4, #0 add r6, #0xa8 add r7, #0xcc _0221C1EA: add r0, r6, #0 add r1, r7, #0 bl MOD08_02217F9C ldr r0, [r4, #0x20] add r5, r5, #1 cmp r5, r0 blt _0221C1EA _0221C1FA: ldr r0, [r4, #0x24] cmp r0, #0xff beq _0221C204 add r0, r0, #1 str r0, [r4, #0x1c] _0221C204: mov r0, #0xa8 ldrsh r3, [r4, r0] ldr r1, [r4, #0x38] mov r2, #0xac add r0, r3, #0 ldr r3, [r1, #0x20] mul r0, r2 ldr r3, [r3] ldr r3, [r3, #4] add r0, r0, r3 str r0, [r1, #0x28] mov r1, #0xaa ldrsh r1, [r4, r1] ldr r0, [r4, #0x38] mul r2, r1 ldr r1, [r0, #0x20] ldr r1, [r1] ldr r1, [r1, #8] add r1, r2, r1 str r1, [r0, #0x2c] ldr r0, [r4, #0x40] ldr r1, _0221C248 ; =MOD08_0221C0A0 add r2, r4, #0 bl MOD08_02212400 add sp, #0x2c pop {r4, r5, r6, r7, pc} nop _0221C23C: .word 0x00005C71 _0221C240: .word 0x00000E38 _0221C244: .word 0x00003FFF _0221C248: .word MOD08_0221C0A0 thumb_func_start MOD08_0221C24C MOD08_0221C24C: ; 0x0221C24C push {r4, r5, r6, lr} add r5, r1, #0 add r6, r0, #0 ldr r0, [r5, #0x38] bl MOD08_0221BD00 add r4, r0, #0 add r0, r5, #0 add r0, #0x58 bl MOD08_02217D98 cmp r0, #0 bne _0221C282 cmp r4, #0 bne _0221C282 ldr r0, [r5, #0x34] ldr r1, [r5, #0x38] bl FUN_020133DC ldr r0, [r5, #0x40] add r1, r6, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} _0221C282: add r0, r5, #0 add r0, #0x8c ldr r2, [r0] mov r0, #0x5a ldrsh r0, [r5, r0] mov r3, #0xac add r1, r0, #0 mul r1, r3 add r1, r2, r1 add r2, r5, #0 add r2, #0x88 ldr r4, [r2] mov r2, #0x58 ldrsh r2, [r5, r2] ldr r0, [r5, #0x38] mul r3, r2 ldr r2, [r0, #0x20] add r3, r4, r3 ldr r2, [r2] ldr r2, [r2, #4] add r2, r3, r2 str r2, [r0, #0x28] ldr r2, [r5, #0x38] ldr r0, [r2, #0x20] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r2, #0x2c] pop {r4, r5, r6, pc} thumb_func_start MOD08_0221C2BC MOD08_0221C2BC: ; 0x0221C2BC push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 mov r1, #0x94 add r4, r0, #0 bl MOD08_02228064 add r5, r0, #0 add r1, r5, #0 add r0, r4, #0 add r1, #0x3c bl MOD08_02227B70 add r0, r4, #0 mov r1, #0 bl MOD08_02212498 str r0, [r5] add r0, r4, #0 mov r1, #1 bl MOD08_02212498 str r0, [r5, #4] add r0, r4, #0 mov r1, #2 bl MOD08_02212498 str r0, [r5, #0xc] add r0, r4, #0 mov r1, #3 bl MOD08_02212498 str r0, [r5, #8] add r0, r4, #0 mov r1, #4 bl MOD08_02212498 str r0, [r5, #0x10] add r0, r4, #0 mov r1, #5 bl MOD08_02212498 str r0, [r5, #0x14] add r0, r4, #0 mov r1, #6 bl MOD08_02212498 str r0, [r5, #0x18] add r0, r4, #0 mov r1, #7 bl MOD08_02212498 str r0, [r5, #0x1c] add r0, r4, #0 mov r1, #8 bl MOD08_02212498 str r0, [r5, #0x20] cmp r0, #0 bne _0221C33A add r0, r4, #0 bl MOD08_02212458 b _0221C340 _0221C33A: add r0, r4, #0 bl MOD08_02212460 _0221C340: str r0, [r5, #0x24] add r2, r5, #0 ldr r1, [r5, #0x24] add r0, r4, #0 add r2, #0x88 bl MOD08_0222771C ldr r1, [r5] add r0, r4, #0 bl MOD08_02212484 str r0, [r5, #0x38] add r0, r4, #0 mov r1, #9 bl MOD08_02212498 add r1, r0, #0 add r0, r4, #0 bl MOD08_02212478 str r0, [r5, #0x34] ldr r1, [r5, #4] ldr r0, _0221C420 ; =0x0000FFFF mul r0, r1 mov r1, #0x5a lsl r1, r1, #2 bl _s32_div_f add r4, r0, #0 ldr r1, [r5, #0xc] ldr r0, _0221C420 ; =0x0000FFFF mul r0, r1 mov r1, #0x5a lsl r1, r1, #2 bl _s32_div_f add r6, r0, #0 ldr r1, [r5, #8] ldr r0, _0221C420 ; =0x0000FFFF mul r0, r1 mov r1, #0x5a lsl r1, r1, #2 bl _s32_div_f add r7, r0, #0 ldr r1, [r5, #0x10] ldr r0, _0221C420 ; =0x0000FFFF mul r0, r1 mov r1, #0x5a lsl r1, r1, #2 bl _s32_div_f lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp] ldr r0, [r5, #0x14] lsl r1, r4, #0x10 lsl r0, r0, #0xc str r0, [sp, #4] ldr r0, [r5, #0x18] lsl r2, r6, #0x10 lsl r0, r0, #0xc str r0, [sp, #8] ldr r0, [r5, #0x1c] lsl r3, r7, #0x10 str r0, [sp, #0xc] add r0, r5, #0 add r0, #0x58 lsr r1, r1, #0x10 lsr r2, r2, #0x10 lsr r3, r3, #0x10 bl MOD08_02217D14 add r0, r5, #0 add r0, #0x58 bl MOD08_02217D98 add r0, r5, #0 add r0, #0x8c ldr r2, [r0] mov r0, #0x5a ldrsh r0, [r5, r0] mov r3, #0x58 mov r4, #0xac add r1, r0, #0 add r0, r5, #0 mul r1, r4 ldrsh r3, [r5, r3] add r0, #0x88 add r2, r2, r1 ldr r1, [r5, #0x38] ldr r0, [r0] mul r4, r3 add r3, r0, r4 ldr r0, [r1, #0x20] ldr r0, [r0] ldr r0, [r0, #4] add r0, r3, r0 str r0, [r1, #0x28] ldr r1, [r5, #0x38] ldr r0, [r1, #0x20] ldr r0, [r0] ldr r0, [r0, #8] add r0, r2, r0 str r0, [r1, #0x2c] ldr r0, [r5, #0x40] ldr r1, _0221C424 ; =MOD08_0221C24C add r2, r5, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221C420: .word 0x0000FFFF _0221C424: .word MOD08_0221C24C thumb_func_start MOD08_0221C428 MOD08_0221C428: ; 0x0221C428 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0200C608 cmp r0, #0 ldr r0, [r4, #0x1c] bne _0221C44E bl FUN_0200C3DC ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _0221C44E: bl FUN_0200C5A8 ldr r0, [r4, #0x10] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221C45C MOD08_0221C45C: ; 0x0221C45C push {r3, r4, r5, r6, r7, lr} mov r1, #0x20 add r5, r0, #0 add r4, r3, #0 bl MOD08_02228064 add r7, r0, #0 add r0, r5, #0 add r1, r7, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 str r4, [r7, #0x1c] bl MOD08_02212498 lsl r0, r0, #0x10 asr r6, r0, #0x10 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 lsl r0, r0, #0x10 asr r2, r0, #0x10 add r0, r4, #0 add r1, r6, #0 bl FUN_0200C82C ldr r0, [r7, #4] ldr r1, _0221C4A0 ; =MOD08_0221C428 add r2, r7, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221C4A0: .word MOD08_0221C428 thumb_func_start MOD08_0221C4A4 MOD08_0221C4A4: ; 0x0221C4A4 push {r4, r5, r6, lr} add r5, r1, #0 add r4, r0, #0 ldrb r0, [r5] cmp r0, #0 beq _0221C4B6 cmp r0, #1 beq _0221C534 b _0221C59E _0221C4B6: ldr r1, [r5, #0x34] ldr r0, _0221C5C4 ; =0x0222C4D4 lsl r2, r1, #1 ldrsh r4, [r0, r2] add r0, r1, #1 str r0, [r5, #0x34] cmp r4, #0xff beq _0221C506 cmp r4, #0 bne _0221C4FA ldr r0, [r5, #0x1c] bl FUN_0200C6A4 add r6, r0, #0 ldr r0, [r5, #4] bl MOD08_02215574 cmp r6, r0 ldr r0, [r5, #4] bne _0221C4EE mov r1, #2 bl MOD08_02215600 add r1, r0, #0 ldr r0, [r5, #0x1c] bl FUN_0200C6B0 b _0221C4FA _0221C4EE: bl MOD08_02215574 add r1, r0, #0 ldr r0, [r5, #0x1c] bl FUN_0200C6B0 _0221C4FA: ldr r0, [r5, #0x1c] add r1, r4, #0 mov r2, #0 bl FUN_0200C82C b _0221C5B4 _0221C506: ldr r0, [r5, #0x1c] mov r1, #2 bl FUN_0200C840 add r0, r5, #0 ldr r2, _0221C5C8 ; =0x00001FFF add r0, #0x20 mov r1, #0 mov r3, #8 bl MOD08_02218008 mov r1, #7 ldr r0, [r5, #0x1c] mvn r1, r1 mov r2, #0x10 bl FUN_0200C8DC mov r0, #0 str r0, [r5, #0x34] ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] b _0221C5B4 _0221C534: add r0, r5, #0 add r0, #0x20 bl MOD08_02218058 cmp r0, #1 bne _0221C54E ldr r1, [r5, #0x20] ldr r0, [r5, #0x1c] lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_0200C898 b _0221C5B4 _0221C54E: ldr r0, [r5, #0x34] cmp r0, #3 ble _0221C55C ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] b _0221C5B4 _0221C55C: add r0, r0, #1 str r0, [r5, #0x34] cmp r0, #1 beq _0221C56E cmp r0, #2 beq _0221C57E cmp r0, #3 beq _0221C58E b _0221C5B4 _0221C56E: add r0, r5, #0 ldr r1, _0221C5C8 ; =0x00001FFF ldr r2, _0221C5CC ; =0xFFFFE001 add r0, #0x20 mov r3, #8 bl MOD08_02218008 b _0221C5B4 _0221C57E: ldr r1, _0221C5CC ; =0xFFFFE001 add r0, r5, #0 add r0, #0x20 lsr r2, r1, #0x13 mov r3, #8 bl MOD08_02218008 b _0221C5B4 _0221C58E: add r0, r5, #0 ldr r1, _0221C5C8 ; =0x00001FFF add r0, #0x20 mov r2, #0 mov r3, #8 bl MOD08_02218008 b _0221C5B4 _0221C59E: ldr r0, [r5, #0x1c] bl FUN_0200C3DC ldr r0, [r5, #4] add r1, r4, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} _0221C5B4: ldr r0, [r5, #0x1c] bl FUN_0200C5A8 ldr r0, [r5, #0x10] bl FUN_0200BC1C pop {r4, r5, r6, pc} nop _0221C5C4: .word 0x0222C4D4 _0221C5C8: .word 0x00001FFF _0221C5CC: .word 0xFFFFE001 thumb_func_start MOD08_0221C5D0 MOD08_0221C5D0: ; 0x0221C5D0 push {r3, r4, r5, r6, r7, lr} mov r1, #0x38 add r5, r0, #0 add r6, r3, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 str r6, [r4, #0x1c] mov r0, #0 str r0, [r4, #0x34] add r0, r5, #0 bl MOD08_02212460 add r7, r0, #0 add r0, r5, #0 add r1, r7, #0 mov r2, #0 bl MOD08_02217B98 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 mov r2, #1 bl MOD08_02217B98 add r2, r0, #0 ldr r0, [r4, #0x1c] add r1, r6, #0 bl FUN_0200C714 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 ldr r0, [r4, #0x1c] bne _0221C630 mov r1, #1 bl FUN_0200C5C0 b _0221C636 _0221C630: mov r1, #0 bl FUN_0200C5C0 _0221C636: ldr r0, [r4, #4] bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0200C6B0 ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #0xc bl FUN_0200C82C ldr r0, [r4, #4] ldr r1, _0221C65C ; =MOD08_0221C4A4 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _0221C65C: .word MOD08_0221C4A4 thumb_func_start MOD08_0221C660 MOD08_0221C660: ; 0x0221C660 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0200C608 cmp r0, #0 ldr r0, [r4, #0x1c] bne _0221C686 bl FUN_0200C3DC ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _0221C686: bl FUN_0200C5A8 ldr r0, [r4, #0x10] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221C694 MOD08_0221C694: ; 0x0221C694 push {r3, r4, r5, r6, r7, lr} mov r1, #0x38 add r5, r0, #0 add r6, r3, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 str r6, [r4, #0x1c] bl MOD08_02212460 add r7, r0, #0 add r0, r5, #0 add r1, r7, #0 mov r2, #0 bl MOD08_02217B98 add r6, r0, #0 add r0, r5, #0 add r1, r7, #0 mov r2, #1 bl MOD08_02217B98 add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _0221C6DC mov r6, #0x48 mov r2, #0x20 mov r5, #0 b _0221C6F2 _0221C6DC: ldr r0, [r4, #4] add r1, r7, #0 bl MOD08_02227470 cmp r0, #3 bne _0221C6EE mov r2, #0x7e mov r5, #1 b _0221C6F2 _0221C6EE: mov r2, #0x20 mov r5, #0 _0221C6F2: ldr r0, [r4, #0x1c] add r1, r6, #0 bl FUN_0200C714 ldr r0, [r4, #0x1c] add r1, r5, #0 bl FUN_0200C5C0 ldr r0, [r4, #4] mov r1, #2 bl MOD08_02215600 add r1, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0200C6B0 ldr r0, [r4, #4] ldr r1, _0221C720 ; =MOD08_0221C660 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _0221C720: .word MOD08_0221C660 thumb_func_start MOD08_0221C724 MOD08_0221C724: ; 0x0221C724 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #3 bhi _0221C816 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221C73E: ; jump table .short _0221C746 - _0221C73E - 2 ; case 0 .short _0221C76C - _0221C73E - 2 ; case 1 .short _0221C784 - _0221C73E - 2 ; case 2 .short _0221C7C0 - _0221C73E - 2 ; case 3 _0221C746: mov r0, #0xa0 str r0, [sp] mov r3, #0x70 mov r0, #1 str r3, [sp, #4] mov r2, #0x15 str r2, [sp, #8] lsl r0, r0, #0x12 str r0, [sp, #0xc] add r0, r4, #0 add r0, #0x24 add r1, #0x48 sub r2, #0x33 bl MOD08_02217F50 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221C82E _0221C76C: add r0, r4, #0 ldr r2, [r4, #0x1c] add r0, #0x24 add r1, #0x48 bl MOD08_02217FE4 cmp r0, #0 bne _0221C82E ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221C82E _0221C784: ldr r0, [r4, #0x1c] bl FUN_0200C608 cmp r0, #0 bne _0221C82E ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200C90C add r0, r4, #0 add r2, r4, #0 mov r1, #0x10 add r0, #0x20 strb r1, [r0] add r0, r4, #0 mov r1, #0 add r0, #0x21 strb r1, [r0] add r1, r4, #0 add r1, #0x20 add r2, #0x21 ldrb r1, [r1] ldrb r2, [r2] ldr r0, [r4, #4] bl MOD08_02227994 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221C82E _0221C7C0: add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] cmp r0, #0 beq _0221C7D8 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] _0221C7D8: add r0, r4, #0 add r0, #0x21 ldrb r0, [r0] cmp r0, #0x10 bhs _0221C7F0 add r0, r4, #0 add r0, #0x21 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x21 strb r1, [r0] _0221C7F0: add r0, r4, #0 add r0, #0x20 ldrb r1, [r0] add r0, r4, #0 add r0, #0x21 ldrb r0, [r0] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221C840 ; =0x04000052 strh r1, [r0] add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] cmp r0, #0 bne _0221C82E ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221C82E _0221C816: ldr r0, [r4, #0x1c] bl FUN_0200C3DC ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x10 pop {r3, r4, r5, pc} _0221C82E: ldr r0, [r4, #0x1c] bl FUN_0200C5A8 ldr r0, [r4, #0x10] bl FUN_0200BC1C add sp, #0x10 pop {r3, r4, r5, pc} nop _0221C840: .word 0x04000052 thumb_func_start MOD08_0221C844 MOD08_0221C844: ; 0x0221C844 push {r4, r5, r6, lr} mov r1, #0x6c add r6, r0, #0 add r5, r3, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r6, #0 add r1, r4, #0 bl MOD08_02227B70 mov r1, #0x1d str r5, [r4, #0x1c] add r0, r5, #0 mvn r1, r1 mov r2, #0xa0 bl FUN_0200C714 ldr r0, [r4, #4] mov r1, #2 bl MOD08_02215600 add r1, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0200C6B0 ldr r0, [r4, #4] ldr r1, _0221C884 ; =MOD08_0221C724 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} .align 2, 0 _0221C884: .word MOD08_0221C724 thumb_func_start MOD08_0221C888 MOD08_0221C888: ; 0x0221C888 push {r4, lr} mov r1, #0 add r4, r0, #0 bl MOD08_02212498 cmp r0, #0 beq _0221C89E add r0, r4, #0 bl MOD08_02218BD4 pop {r4, pc} _0221C89E: add r0, r4, #0 bl MOD08_02218C04 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_0221C8A8 MOD08_0221C8A8: ; 0x0221C8A8 push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r0, #0 ldrb r0, [r4] cmp r0, #0x18 bls _0221C8B6 b _0221CAAA _0221C8B6: add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0221C8C2: ; jump table .short _0221C8F4 - _0221C8C2 - 2 ; case 0 .short _0221CAAA - _0221C8C2 - 2 ; case 1 .short _0221CAAA - _0221C8C2 - 2 ; case 2 .short _0221CAAA - _0221C8C2 - 2 ; case 3 .short _0221CAAA - _0221C8C2 - 2 ; case 4 .short _0221C9A0 - _0221C8C2 - 2 ; case 5 .short _0221C9A0 - _0221C8C2 - 2 ; case 6 .short _0221C9CA - _0221C8C2 - 2 ; case 7 .short _0221CAAA - _0221C8C2 - 2 ; case 8 .short _0221CAAA - _0221C8C2 - 2 ; case 9 .short _0221C9E4 - _0221C8C2 - 2 ; case 10 .short _0221C9E4 - _0221C8C2 - 2 ; case 11 .short _0221CA0E - _0221C8C2 - 2 ; case 12 .short _0221CAAA - _0221C8C2 - 2 ; case 13 .short _0221CAAA - _0221C8C2 - 2 ; case 14 .short _0221CA26 - _0221C8C2 - 2 ; case 15 .short _0221CA26 - _0221C8C2 - 2 ; case 16 .short _0221CA50 - _0221C8C2 - 2 ; case 17 .short _0221CAAA - _0221C8C2 - 2 ; case 18 .short _0221CAAA - _0221C8C2 - 2 ; case 19 .short _0221CAAA - _0221C8C2 - 2 ; case 20 .short _0221CAAA - _0221C8C2 - 2 ; case 21 .short _0221CA68 - _0221C8C2 - 2 ; case 22 .short _0221CA68 - _0221C8C2 - 2 ; case 23 .short _0221CA92 - _0221C8C2 - 2 ; case 24 _0221C8F4: ldr r0, [r4, #0x34] ldr r1, _0221CAF0 ; =0xFFFF1FFF cmp r0, #0 bne _0221C94E mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] add r5, r0, #0 and r2, r1 lsr r1, r0, #0xd orr r1, r2 str r1, [r0] add r5, #0x48 ldrh r3, [r5] mov r2, #0x3f mov r1, #0xf bic r3, r2 orr r1, r3 mov r3, #0x20 orr r1, r3 strh r1, [r5] add r5, r0, #0 add r5, #0x4a ldrh r6, [r5] mov r1, #0x1f bic r6, r2 orr r1, r6 orr r1, r3 strh r1, [r5] add r1, r0, #0 mov r2, #0x80 add r1, #0x40 strh r2, [r1] ldr r1, _0221CAF4 ; =0x0000A0C0 add r0, #0x44 strh r1, [r0] bl FUN_0201B9EC mov r1, #5 bl _s32_div_f add r1, #0x23 add sp, #4 str r1, [r4, #0x3c] pop {r3, r4, r5, r6, pc} _0221C94E: mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] add r5, r0, #0 and r2, r1 lsr r1, r0, #0xd orr r1, r2 str r1, [r0] add r5, #0x48 ldrh r3, [r5] mov r2, #0x3f mov r1, #0xf bic r3, r2 orr r1, r3 mov r3, #0x20 orr r1, r3 strh r1, [r5] add r5, r0, #0 add r5, #0x4a ldrh r6, [r5] mov r1, #0x1f bic r6, r2 orr r1, r6 orr r1, r3 strh r1, [r5] add r1, r0, #0 lsl r2, r3, #0xa add r1, #0x40 strh r2, [r1] ldr r1, _0221CAF8 ; =0x000056C0 add r0, #0x44 strh r1, [r0] bl FUN_0201B9EC mov r1, #5 bl _s32_div_f add r1, #0x23 add sp, #4 str r1, [r4, #0x3c] pop {r3, r4, r5, r6, pc} _0221C9A0: bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 beq _0221C9D0 ldr r0, [r4, #0x38] cmp r0, #0 bne _0221C9D0 add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #4 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221C9CA: ldr r0, [r4, #0x38] cmp r0, #1 bne _0221C9D2 _0221C9D0: b _0221CAEC _0221C9D2: add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #4 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221C9E4: bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 beq _0221CAEC ldr r0, [r4, #0x38] cmp r0, #1 bne _0221CAEC add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #4 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221CA0E: ldr r0, [r4, #0x38] cmp r0, #2 beq _0221CAEC add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #4 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221CA26: bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 beq _0221CAEC ldr r0, [r4, #0x38] cmp r0, #2 bne _0221CAEC add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #4 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221CA50: ldr r0, [r4, #0x38] cmp r0, #3 beq _0221CAEC add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #4 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221CA68: bl FUN_0201B9EC lsr r2, r0, #0x1f lsl r1, r0, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 beq _0221CAEC ldr r0, [r4, #0x38] cmp r0, #3 bne _0221CAEC add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #8 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221CA92: ldr r0, [r4, #0x38] cmp r0, #4 beq _0221CAEC add r0, r0, #1 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #8 bl FUN_0200C82C add sp, #4 pop {r3, r4, r5, r6, pc} _0221CAAA: ldr r1, [r4, #0x3c] cmp r0, r1 ble _0221CAEC ldr r0, [r4, #0x38] cmp r0, #0x14 ldr r0, [r4, #0x1c] bge _0221CAE6 mov r1, #0 mov r2, #4 bl FUN_0200C82C add r1, sp, #0 ldr r0, [r4, #0x1c] add r1, #2 add r2, sp, #0 bl FUN_0200C7A0 add r0, sp, #0 mov r1, #0 ldrsh r0, [r0, r1] cmp r0, #0x82 ble _0221CADC ldr r0, [r4, #0x1c] bl FUN_0200C644 _0221CADC: ldr r0, [r4, #0x38] add sp, #4 add r0, r0, #1 str r0, [r4, #0x38] pop {r3, r4, r5, r6, pc} _0221CAE6: mov r1, #0 bl FUN_0200C644 _0221CAEC: add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _0221CAF0: .word 0xFFFF1FFF _0221CAF4: .word 0x0000A0C0 _0221CAF8: .word 0x000056C0 thumb_func_start MOD08_0221CAFC MOD08_0221CAFC: ; 0x0221CAFC push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x30] cmp r0, #0 beq _0221CB0E add r0, r4, #0 bl MOD08_0221C8A8 _0221CB0E: ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] ldrb r1, [r4] ldr r0, [r4, #0x24] cmp r1, r0 blt _0221CB66 mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] ldr r1, _0221CB74 ; =0xFFFF1FFF and r1, r2 add r2, r0, #0 str r1, [r0] add r2, #0x48 ldrh r3, [r2] mov r1, #0x3f bic r3, r1 strh r3, [r2] add r2, r0, #0 add r2, #0x4a ldrh r3, [r2] bic r3, r1 strh r3, [r2] add r2, r0, #0 mov r1, #0 add r2, #0x40 strh r1, [r2] add r0, #0x44 strh r1, [r0] ldr r0, [r4, #0x1c] bl FUN_0200C644 ldr r0, [r4, #0xc] bl FUN_0200BC1C ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _0221CB66: ldr r0, [r4, #0x1c] bl FUN_0200C5A8 ldr r0, [r4, #0xc] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 _0221CB74: .word 0xFFFF1FFF thumb_func_start MOD08_0221CB78 MOD08_0221CB78: ; 0x0221CB78 push {r3, r4, r5, r6, r7, lr} mov r1, #0x40 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #0x20] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 str r0, [r4, #0x24] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [r4, #0x28] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 str r0, [r4, #0x2c] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4, #0x30] add r0, r5, #0 mov r1, #6 bl MOD08_02212498 str r0, [r4, #0x34] ldr r0, [r4, #4] ldr r1, [r4, #0x20] bl MOD08_022124D8 str r0, [r4, #0x1c] mov r0, #0 str r0, [r4, #0x38] ldr r1, [r4, #0x28] cmp r1, #0xff beq _0221CBEA add r0, r5, #0 bl MOD08_02215600 add r1, r0, #0 ldr r0, [r4, #0x1c] bl FUN_0200C6B0 _0221CBEA: ldr r1, [r4, #0x2c] cmp r1, #0xff beq _0221CBF6 ldr r0, [r4, #0x1c] bl FUN_0200C6C4 _0221CBF6: add r0, r5, #0 bl MOD08_0221553C cmp r0, #1 beq _0221CC28 add r0, r5, #0 mov r1, #4 bl MOD08_02212498 cmp r0, #2 beq _0221CC18 add r0, r5, #0 mov r1, #4 bl MOD08_02212498 cmp r0, #3 bne _0221CC28 _0221CC18: ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_0200C644 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _0221CC28: add r0, r5, #0 mov r1, #4 bl MOD08_02212498 add r7, r0, #0 add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 add r0, r5, #0 bl MOD08_02212460 str r0, [sp] ldr r0, [r4, #0x2c] cmp r0, #0xff beq _0221CC76 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227468 add r6, r0, #0 ldr r1, [sp] add r0, r5, #0 bl MOD08_02227468 cmp r7, #3 bhi _0221CC76 add r1, r7, r7 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0221CC6A: ; jump table .short _0221CC72 - _0221CC6A - 2 ; case 0 .short _0221CCFC - _0221CC6A - 2 ; case 1 .short _0221CCB8 - _0221CC6A - 2 ; case 2 .short _0221CD40 - _0221CC6A - 2 ; case 3 _0221CC72: cmp r6, #5 bls _0221CC78 _0221CC76: b _0221CD82 _0221CC78: add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221CC84: ; jump table .short _0221CD82 - _0221CC84 - 2 ; case 0 .short _0221CD82 - _0221CC84 - 2 ; case 1 .short _0221CC90 - _0221CC84 - 2 ; case 2 .short _0221CC9A - _0221CC84 - 2 ; case 3 .short _0221CCA4 - _0221CC84 - 2 ; case 4 .short _0221CCAE - _0221CC84 - 2 ; case 5 _0221CC90: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CC9A: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CCA4: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CCAE: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CCB8: cmp r6, #5 bhi _0221CD82 add r0, r6, r6 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221CCC8: ; jump table .short _0221CD82 - _0221CCC8 - 2 ; case 0 .short _0221CD82 - _0221CCC8 - 2 ; case 1 .short _0221CCD4 - _0221CCC8 - 2 ; case 2 .short _0221CCDE - _0221CCC8 - 2 ; case 3 .short _0221CCE8 - _0221CCC8 - 2 ; case 4 .short _0221CCF2 - _0221CCC8 - 2 ; case 5 _0221CCD4: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CCDE: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CCE8: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CCF2: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CCFC: cmp r0, #5 bhi _0221CD82 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221CD0C: ; jump table .short _0221CD82 - _0221CD0C - 2 ; case 0 .short _0221CD82 - _0221CD0C - 2 ; case 1 .short _0221CD18 - _0221CD0C - 2 ; case 2 .short _0221CD22 - _0221CD0C - 2 ; case 3 .short _0221CD2C - _0221CD0C - 2 ; case 4 .short _0221CD36 - _0221CD0C - 2 ; case 5 _0221CD18: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CD22: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CD2C: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CD36: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CD40: cmp r0, #5 bhi _0221CD82 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221CD50: ; jump table .short _0221CD82 - _0221CD50 - 2 ; case 0 .short _0221CD82 - _0221CD50 - 2 ; case 1 .short _0221CD5C - _0221CD50 - 2 ; case 2 .short _0221CD66 - _0221CD50 - 2 ; case 3 .short _0221CD70 - _0221CD50 - 2 ; case 4 .short _0221CD7A - _0221CD50 - 2 ; case 5 _0221CD5C: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 b _0221CD82 _0221CD66: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CD70: ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 b _0221CD82 _0221CD7A: ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 _0221CD82: ldr r0, [r4, #4] ldr r1, _0221CD90 ; =MOD08_0221CAFC add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _0221CD90: .word MOD08_0221CAFC thumb_func_start MOD08_0221CD94 MOD08_0221CD94: ; 0x0221CD94 push {r4, r5, r6, lr} add r6, r1, #0 add r2, r0, #0 ldr r0, [r6, #0x2c] cmp r0, #0 bne _0221CDB0 ldr r0, [r6, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r6, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} _0221CDB0: sub r0, r0, #1 str r0, [r6, #0x2c] mov r4, #0 add r5, r6, #0 _0221CDB8: ldr r0, [r5, #0x1c] cmp r0, #0 beq _0221CDC2 bl FUN_0200C5A8 _0221CDC2: add r4, r4, #1 add r5, r5, #4 cmp r4, #4 blt _0221CDB8 ldr r0, [r6, #0xc] bl FUN_0200BC1C pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0221CDD4 MOD08_0221CDD4: ; 0x0221CDD4 push {r3, r4, r5, r6, r7, lr} mov r1, #0x34 add r4, r0, #0 bl MOD08_02228064 add r7, r0, #0 add r0, r4, #0 add r1, r7, #0 bl MOD08_02227B70 add r0, r4, #0 mov r1, #0 bl MOD08_02212498 cmp r0, #0 bne _0221CDF8 mov r0, #3 b _0221CE00 _0221CDF8: add r0, r4, #0 mov r1, #0 bl MOD08_02212498 _0221CE00: ldr r5, _0221CE38 ; =0x0222D5A0 str r0, [r7, #0x2c] mov r6, #0 add r4, r7, #0 _0221CE08: ldr r0, [r7, #4] add r1, r6, #0 bl MOD08_022124D8 str r0, [r4, #0x1c] cmp r0, #0 beq _0221CE1C ldr r1, [r5] bl FUN_0200C6C4 _0221CE1C: add r6, r6, #1 add r4, r4, #4 add r5, r5, #4 cmp r6, #4 blt _0221CE08 ldr r0, [r7, #4] ldr r1, _0221CE3C ; =MOD08_0221CD94 add r2, r7, #0 bl MOD08_02212400 add r1, r7, #0 bl MOD08_0221CD94 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221CE38: .word 0x0222D5A0 _0221CE3C: .word MOD08_0221CD94 thumb_func_start MOD08_0221CE40 MOD08_0221CE40: ; 0x0221CE40 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r5, r1, #0 add r4, r0, #0 ldrb r0, [r5, #8] cmp r0, #0 beq _0221CE54 cmp r0, #1 beq _0221CE9A b _0221CEB2 _0221CE54: mov r0, #0 str r0, [r5] ldr r0, [r5, #0xc] mov r1, #2 bl MOD08_022155C4 add r4, r0, #0 mov r0, #0 add r1, r0, #0 bl MOD08_02218998 add r6, r0, #0 ldr r0, [r5, #0xc] bl MOD08_02212014 mov r1, #0xc8 str r1, [sp] mov r3, #2 str r4, [sp, #4] mov r1, #0 str r1, [sp, #8] str r6, [sp, #0xc] str r0, [sp, #0x10] add r0, r1, #0 mov r1, #0xa0 mov r2, #0xb6 lsl r3, r3, #0x10 bl MOD08_022188DC str r0, [r5, #0x24] ldrb r0, [r5, #8] add sp, #0x14 add r0, r0, #1 strb r0, [r5, #8] pop {r3, r4, r5, r6, pc} _0221CE9A: ldr r0, [r5] add r1, r0, #1 str r1, [r5] ldr r0, [r5, #4] cmp r1, r0 blt _0221CEC0 ldr r0, [r5, #0x24] bl MOD08_0221894C ldrb r0, [r5, #8] add r0, r0, #1 strb r0, [r5, #8] _0221CEB2: ldr r0, [r5, #0xc] add r1, r4, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 _0221CEC0: add sp, #0x14 pop {r3, r4, r5, r6, pc} thumb_func_start MOD08_0221CEC4 MOD08_0221CEC4: ; 0x0221CEC4 push {r3, r4, r5, lr} mov r1, #0x28 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r5, #0 add r1, #8 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #4] ldr r0, [r4, #0xc] ldr r1, _0221CEF0 ; =MOD08_0221CE40 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} .align 2, 0 _0221CEF0: .word MOD08_0221CE40 thumb_func_start MOD08_0221CEF4 MOD08_0221CEF4: ; 0x0221CEF4 push {r4, r5, r6, r7, lr} sub sp, #0x1c add r4, r1, #0 str r0, [sp, #0xc] ldrb r0, [r4] cmp r0, #3 bls _0221CF04 b _0221D076 _0221CF04: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221CF10: ; jump table .short _0221CF18 - _0221CF10 - 2 ; case 0 .short _0221CFCA - _0221CF10 - 2 ; case 1 .short _0221CFE8 - _0221CF10 - 2 ; case 2 .short _0221D042 - _0221CF10 - 2 ; case 3 _0221CF18: ldrb r0, [r4, #4] mov r7, #0 add r1, r7, #0 add r0, r0, #1 strb r0, [r4, #4] ldr r0, [r4, #8] bl MOD08_02212498 cmp r0, #0 ble _0221CF8E ldr r6, _0221D0E4 ; =0x0222C536 add r5, r4, #0 _0221CF30: add r1, sp, #0x10 ldr r0, [r5, #0x14] add r1, #2 add r2, sp, #0x10 bl FUN_0200C7A0 ldrb r1, [r4, #4] ldrb r0, [r6] cmp r1, r0 blo _0221CF74 add r0, r4, r7 ldrb r1, [r0, #1] add r1, r1, #1 strb r1, [r0, #1] ldrb r2, [r0, #1] ldrb r1, [r6, #1] cmp r2, r1 blo _0221CF7C mov r1, #0 strb r1, [r0, #1] ldr r0, [r5, #0x14] bl FUN_0200C658 cmp r0, #1 ldr r0, [r5, #0x14] bne _0221CF6C mov r1, #0 bl FUN_0200C644 b _0221CF7C _0221CF6C: mov r1, #1 bl FUN_0200C644 b _0221CF7C _0221CF74: ldr r0, [r5, #0x14] mov r1, #0 bl FUN_0200C644 _0221CF7C: ldr r0, [r4, #8] mov r1, #0 add r5, r5, #4 add r6, r6, #2 add r7, r7, #1 bl MOD08_02212498 cmp r7, r0 blt _0221CF30 _0221CF8E: ldrb r0, [r4, #4] cmp r0, #0x2d blo _0221D02C mov r5, #0 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212498 cmp r0, #0 ble _0221CFBE add r6, r4, #0 mov r7, #1 _0221CFA6: ldr r0, [r6, #0x14] add r1, r7, #0 bl FUN_0200C644 ldr r0, [r4, #8] mov r1, #0 add r6, r6, #4 add r5, r5, #1 bl MOD08_02212498 cmp r5, r0 blt _0221CFA6 _0221CFBE: mov r0, #0 strb r0, [r4, #4] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221D0B0 _0221CFCA: mov r1, #0x64 str r1, [sp] str r1, [sp, #4] mov r0, #0xa str r0, [sp, #8] add r0, r4, #0 add r0, #0x20 mov r2, #0x3c add r3, r1, #0 bl MOD08_022181A8 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221D0B0 _0221CFE8: add r0, r4, #0 add r0, #0x20 bl MOD08_02218224 cmp r0, #1 bne _0221D02E mov r5, #0 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212498 cmp r0, #0 ble _0221D0B0 add r7, r4, #0 add r6, r4, #0 add r7, #0x20 _0221D008: add r0, r7, #0 add r1, sp, #0x18 add r2, sp, #0x14 bl MOD08_0221825C ldr r0, [r6, #0x14] ldr r1, [sp, #0x18] ldr r2, [sp, #0x14] bl FUN_0200C884 ldr r0, [r4, #8] mov r1, #0 add r6, r6, #4 add r5, r5, #1 bl MOD08_02212498 cmp r5, r0 blt _0221D008 _0221D02C: b _0221D0B0 _0221D02E: ldrb r0, [r4, #4] add r0, r0, #1 strb r0, [r4, #4] ldrb r0, [r4, #4] cmp r0, #0x2d blo _0221D0B0 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221D0B0 _0221D042: ldrb r0, [r4, #5] cmp r0, #0 beq _0221D04C sub r0, r0, #1 strb r0, [r4, #5] _0221D04C: ldrb r0, [r4, #6] cmp r0, #0xf bhs _0221D056 add r0, r0, #1 strb r0, [r4, #6] _0221D056: ldrb r0, [r4, #5] cmp r0, #0 bne _0221D068 ldrb r0, [r4, #6] cmp r0, #0xf bne _0221D068 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221D068: ldrb r0, [r4, #6] ldrb r1, [r4, #5] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221D0E8 ; =0x04000052 strh r1, [r0] b _0221D0B0 _0221D076: mov r5, #0 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212498 cmp r0, #0 ble _0221D09E add r6, r4, #0 add r7, r5, #0 _0221D088: ldr r0, [r6, #0x14] bl FUN_0200C3DC ldr r0, [r4, #8] add r1, r7, #0 add r6, r6, #4 add r5, r5, #1 bl MOD08_02212498 cmp r5, r0 blt _0221D088 _0221D09E: ldr r0, [r4, #8] ldr r1, [sp, #0xc] bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x1c pop {r4, r5, r6, r7, pc} _0221D0B0: mov r5, #0 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212498 cmp r0, #0 ble _0221D0DA add r6, r4, #0 add r7, r5, #0 _0221D0C2: ldr r0, [r6, #0x14] ldr r0, [r0] bl FUN_0200C59C ldr r0, [r4, #8] add r1, r7, #0 add r6, r6, #4 add r5, r5, #1 bl MOD08_02212498 cmp r5, r0 blt _0221D0C2 _0221D0DA: ldr r0, [r4, #0x10] bl FUN_0200BC1C add sp, #0x1c pop {r4, r5, r6, r7, pc} .align 2, 0 _0221D0E4: .word 0x0222C536 _0221D0E8: .word 0x04000052 thumb_func_start MOD08_0221D0EC MOD08_0221D0EC: ; 0x0221D0EC push {r4, r5, r6, r7, lr} sub sp, #0x3c str r0, [sp] add r5, r1, #0 add r6, r2, #0 add r7, r3, #0 bl MOD08_02212014 mov r1, #0x44 bl FUN_02016998 add r4, r0, #0 bne _0221D10A bl ErrorHandling _0221D10A: mov r0, #0 strb r0, [r4, #4] strb r0, [r4] str r5, [r4, #0xc] ldr r0, [sp] str r6, [r4, #0x10] str r0, [r4, #8] ldr r1, [sp] add r0, sp, #8 bl MOD08_02215474 mov r1, #0 mvn r1, r1 ldr r0, [r4, #8] add r2, r1, #0 bl MOD08_02227994 mov r0, #0xf strb r0, [r4, #5] mov r0, #0 strb r0, [r4, #6] ldrb r0, [r4, #6] ldrb r1, [r4, #5] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221D21C ; =0x04000052 strh r1, [r0] ldr r0, [sp] str r7, [r4, #0x14] bl MOD08_02212460 add r1, r0, #0 ldr r0, [sp] bl MOD08_02227470 cmp r0, #3 bne _0221D166 ldr r0, [sp] bl MOD08_02212004 add r1, r0, #0 mov r0, #0 add r2, sp, #4 bl MOD08_02227564 b _0221D176 _0221D166: ldr r0, [sp] bl MOD08_02212004 add r1, r0, #0 mov r0, #1 add r2, sp, #4 bl MOD08_02227564 _0221D176: ldr r0, [r4, #8] mov r1, #0 mov r6, #1 bl MOD08_02212498 cmp r0, #1 ble _0221D1B0 add r5, r4, #4 add r7, sp, #4 _0221D188: ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] add r2, sp, #8 bl FUN_0200C154 str r0, [r5, #0x14] mov r1, #0 mov r2, #2 ldrsh r1, [r7, r1] ldrsh r2, [r7, r2] bl FUN_0200C714 ldr r0, [r4, #8] mov r1, #0 add r5, r5, #4 add r6, r6, #1 bl MOD08_02212498 cmp r6, r0 blt _0221D188 _0221D1B0: add r3, sp, #4 mov r1, #0 mov r2, #2 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] ldr r0, [r4, #0x14] bl FUN_0200C714 mov r6, #0 ldr r0, [r4, #8] add r1, r6, #0 bl MOD08_02212498 cmp r0, #0 ble _0221D20A add r5, r4, #0 add r7, r6, #0 _0221D1D2: add r1, r4, r6 mov r0, #0 strb r0, [r1, #1] ldr r0, [r5, #0x14] mov r1, #2 bl FUN_0200C840 mov r2, #0x20 sub r2, r2, r7 lsl r2, r2, #0x10 ldr r0, [r5, #0x14] mov r1, #0 asr r2, r2, #0x10 bl FUN_0200C82C ldr r0, [r5, #0x14] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #8] mov r1, #0 add r5, r5, #4 add r7, r7, #4 add r6, r6, #1 bl MOD08_02212498 cmp r6, r0 blt _0221D1D2 _0221D20A: mov r3, #1 ldr r0, [sp] ldr r1, _0221D220 ; =MOD08_0221CEF4 add r2, r4, #0 lsl r3, r3, #0xc bl MOD08_022123E4 add sp, #0x3c pop {r4, r5, r6, r7, pc} .align 2, 0 _0221D21C: .word 0x04000052 _0221D220: .word MOD08_0221CEF4 thumb_func_start MOD08_0221D224 MOD08_0221D224: ; 0x0221D224 push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #5 bls _0221D234 b _0221D404 _0221D234: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221D240: ; jump table .short _0221D24C - _0221D240 - 2 ; case 0 .short _0221D2AE - _0221D240 - 2 ; case 1 .short _0221D2C8 - _0221D240 - 2 ; case 2 .short _0221D2EC - _0221D240 - 2 ; case 3 .short _0221D346 - _0221D240 - 2 ; case 4 .short _0221D394 - _0221D240 - 2 ; case 5 _0221D24C: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 bne _0221D2A4 add r0, r4, #0 add r0, #0x38 bl MOD08_022183F0 mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xc bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xd bl FUN_02007558 mov r2, #0x38 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_020079E0 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x28] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #4 pop {r3, r4, r5, r6, pc} _0221D2A4: ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D2AE: mov r0, #0x1f str r0, [sp] mov r1, #0 ldr r0, [r4, #0x10] mov r2, #0xa add r3, r1, #0 bl FUN_02007E68 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D2C8: ldr r0, [r4, #0x10] bl FUN_02007F20 cmp r0, #0 bne _0221D2F6 mov r0, #0x1f str r0, [sp] mov r2, #0 ldr r0, [r4, #0x10] mov r1, #0xa add r3, r2, #0 bl FUN_02007E68 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D2EC: ldr r0, [r4, #0x10] bl FUN_02007F20 cmp r0, #0 beq _0221D2F8 _0221D2F6: b _0221D412 _0221D2F8: ldrb r0, [r4, #8] add r0, r0, #1 strb r0, [r4, #8] ldrb r0, [r4, #8] cmp r0, #3 blo _0221D33E ldr r0, [r4, #0xc] mov r1, #0 bl MOD08_02212498 add r5, r0, #0 ldr r0, [r4, #0xc] mov r1, #1 bl MOD08_02212498 add r6, r0, #0 ldr r0, [r4, #0xc] mov r1, #3 bl MOD08_02212498 str r0, [sp] add r0, r4, #0 lsl r1, r5, #0x10 lsl r3, r6, #0x10 add r0, #0x14 asr r1, r1, #0x10 mov r2, #0x64 asr r3, r3, #0x10 bl MOD08_02218120 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D33E: mov r0, #1 add sp, #4 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D346: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 bne _0221D38A mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xc bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x28] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #4 pop {r3, r4, r5, r6, pc} _0221D38A: ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D394: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 ldr r0, [r4, #0x10] bne _0221D3D8 mov r2, #0x14 ldrsh r2, [r4, r2] mov r1, #0xc bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x28] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #4 pop {r3, r4, r5, r6, pc} _0221D3D8: mov r1, #0xc add r2, r1, #0 add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0x10] add r2, #0xf3 bl FUN_02007558 mov r2, #2 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007558 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221D404: ldr r0, [r4, #0xc] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221D412: add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0221D418 MOD08_0221D418: ; 0x0221D418 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 bl MOD08_02212014 mov r1, #0x5c bl FUN_02016998 add r4, r0, #0 mov r0, #0 strb r0, [r4, #8] strb r0, [r4] str r5, [r4, #0xc] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] ldr r0, [r4, #0xc] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_0221552C str r0, [r4, #4] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_02212498 str r0, [sp] add r0, r4, #0 mov r1, #0x64 lsl r3, r6, #0x10 add r0, #0x14 add r2, r1, #0 asr r3, r3, #0x10 bl MOD08_02218120 mov r0, #0xa str r0, [sp] add r0, r4, #0 mov r2, #0 add r0, #0x38 mov r1, #2 add r3, r2, #0 bl MOD08_022183C0 ldr r0, [r4, #0xc] ldr r1, _0221D4A0 ; =MOD08_0221D224 add r2, r4, #0 bl MOD08_02212400 add sp, #4 pop {r3, r4, r5, r6, pc} nop _0221D4A0: .word MOD08_0221D224 thumb_func_start MOD08_0221D4A4 MOD08_0221D4A4: ; 0x0221D4A4 push {r3, r4, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #4 bls _0221D4B4 b _0221D6CC _0221D4B4: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221D4C0: ; jump table .short _0221D4CA - _0221D4C0 - 2 ; case 0 .short _0221D530 - _0221D4C0 - 2 ; case 1 .short _0221D594 - _0221D4C0 - 2 ; case 2 .short _0221D5F8 - _0221D4C0 - 2 ; case 3 .short _0221D65C - _0221D4C0 - 2 ; case 4 _0221D4CA: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #1 bne _0221D50E mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x24] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221D50E: mov r1, #0x96 str r1, [sp] mov r0, #0x64 str r0, [sp, #4] mov r0, #0xa str r0, [sp, #8] add r0, r4, #0 mov r2, #0x32 add r0, #0x10 add r3, r2, #0 bl MOD08_022181A8 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221D530: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #1 bne _0221D574 mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x24] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221D574: mov r2, #0x64 str r2, [sp] str r2, [sp, #4] mov r0, #5 str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 mov r1, #0x32 mov r3, #0x96 bl MOD08_022181A8 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221D594: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #1 bne _0221D5D8 mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x24] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221D5D8: mov r2, #0x96 mov r1, #0x64 str r2, [sp] str r1, [sp, #4] mov r0, #5 str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 add r3, r1, #0 bl MOD08_022181A8 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221D5F8: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #1 bne _0221D63C mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x24] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221D63C: mov r2, #0x64 str r2, [sp] str r2, [sp, #4] mov r0, #5 str r0, [sp, #8] add r0, r4, #0 mov r1, #0x96 add r0, #0x10 add r3, r1, #0 bl MOD08_022181A8 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221D65C: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #1 ldr r0, [r4, #0xc] bne _0221D6A0 mov r2, #0x10 ldrsh r2, [r4, r2] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #2 ldrsh r0, [r4, r0] ldr r1, [r4, #4] ldr r2, [r4, #0x24] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r3, r4, pc} _0221D6A0: mov r1, #0xc add r2, r1, #0 add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0xc] add r2, #0xf3 bl FUN_02007558 mov r2, #2 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_02007558 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221D6CC: ldr r0, [r4, #8] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_0221D6E0 MOD08_0221D6E0: ; 0x0221D6E0 push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 bl MOD08_02212014 mov r1, #0x58 bl FUN_02016998 add r4, r0, #0 mov r0, #0 strb r0, [r4] str r5, [r4, #8] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_0221552C str r0, [r4, #4] mov r0, #0x32 str r0, [sp] mov r1, #0x64 str r1, [sp, #4] mov r0, #0xa str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 mov r2, #0x96 add r3, r1, #0 bl MOD08_022181A8 ldr r0, [r4, #8] ldr r1, _0221D748 ; =MOD08_0221D4A4 add r2, r4, #0 bl MOD08_02212400 add sp, #0xc pop {r4, r5, pc} nop _0221D748: .word MOD08_0221D4A4 thumb_func_start MOD08_0221D74C MOD08_0221D74C: ; 0x0221D74C push {r3, r4, r5, r6, r7, lr} sub sp, #0x18 add r5, r1, #0 add r2, r0, #0 ldrb r0, [r5, #1] cmp r0, #0 beq _0221D766 cmp r0, #1 beq _0221D84C cmp r0, #2 bne _0221D764 b _0221D8AE _0221D764: b _0221D8E2 _0221D766: ldrb r3, [r5] mov r0, #0x1f lsr r2, r3, #0x1f lsl r1, r3, #0x1f sub r1, r1, r2 ror r1, r0 add r0, r2, r1 lsl r0, r0, #1 add r1, r3, #1 str r0, [sp, #0xc] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 str r0, [sp, #8] ldr r1, [sp, #0xc] mov r0, #6 mul r0, r1 ldr r1, _0221D900 ; =0x0222C59A ldrsh r2, [r1, r0] ldr r1, [sp, #8] sub r7, r2, r1 mov r1, #0xa ldrsh r3, [r5, r1] ldr r1, _0221D904 ; =0x0222C598 ldrsh r6, [r1, r0] mov r1, #8 ldrsh r2, [r5, r1] ldr r1, _0221D908 ; =0x0222C596 ldrsh r4, [r1, r0] lsl r0, r7, #0x10 str r3, [sp] add r1, r2, r4 lsr r0, r0, #0x10 add r2, r2, r6 str r0, [sp, #4] add r0, r5, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 add r0, #0x28 asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 mov r0, #0xa ldrsh r3, [r5, r0] mov r0, #8 ldrsh r2, [r5, r0] lsl r0, r7, #0x10 lsr r0, r0, #0x10 sub r1, r2, r4 str r3, [sp] sub r2, r2, r6 str r0, [sp, #4] add r0, r5, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 add r0, #0x4c asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 ldr r0, [sp, #0xc] add r1, r0, #1 mov r0, #6 mul r0, r1 ldr r1, _0221D900 ; =0x0222C59A ldrsh r2, [r1, r0] ldr r1, [sp, #8] sub r7, r2, r1 mov r1, #0xa ldrsh r3, [r5, r1] ldr r1, _0221D904 ; =0x0222C598 ldrsh r6, [r1, r0] mov r1, #8 ldrsh r2, [r5, r1] ldr r1, _0221D908 ; =0x0222C596 ldrsh r4, [r1, r0] lsl r0, r7, #0x10 str r3, [sp] add r1, r2, r4 lsr r0, r0, #0x10 add r2, r2, r6 str r0, [sp, #4] add r0, r5, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 add r0, #0x70 asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 mov r0, #0xa ldrsh r3, [r5, r0] mov r0, #8 ldrsh r2, [r5, r0] lsl r0, r7, #0x10 lsr r0, r0, #0x10 sub r1, r2, r4 str r3, [sp] sub r2, r2, r6 str r0, [sp, #4] add r0, r5, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 add r0, #0x94 asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_02217E80 ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] ldrb r0, [r5, #1] add r0, r0, #1 strb r0, [r5, #1] _0221D84C: mov r0, #0 add r7, r5, #0 str r0, [sp, #0x10] str r0, [sp, #0x14] add r7, #0x28 add r6, r5, #0 add r4, r5, #0 _0221D85A: add r0, r7, #0 bl MOD08_02217ECC cmp r0, #0 bne _0221D870 ldr r0, [sp, #0x10] add r0, r0, #1 lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #0x10] b _0221D87E _0221D870: mov r1, #0x28 mov r2, #0x2a ldrsh r1, [r6, r1] ldrsh r2, [r6, r2] ldr r0, [r4, #0x18] bl FUN_0200C714 _0221D87E: ldr r0, [r4, #0x18] bl FUN_0200C5A8 ldr r0, [sp, #0x14] add r7, #0x24 add r0, r0, #1 add r6, #0x24 add r4, r4, #4 str r0, [sp, #0x14] cmp r0, #4 blt _0221D85A ldr r0, [sp, #0x10] cmp r0, #4 bne _0221D8F4 ldrb r0, [r5] cmp r0, #9 bne _0221D8A8 ldrb r0, [r5, #1] add r0, r0, #1 strb r0, [r5, #1] b _0221D8F4 _0221D8A8: mov r0, #0 strb r0, [r5, #1] b _0221D8F4 _0221D8AE: ldrb r0, [r5, #4] cmp r0, #0 beq _0221D8B8 sub r0, r0, #1 strb r0, [r5, #4] _0221D8B8: ldrb r0, [r5, #5] cmp r0, #0xf bhs _0221D8C2 add r0, r0, #1 strb r0, [r5, #5] _0221D8C2: ldrb r0, [r5, #4] cmp r0, #0 bne _0221D8D4 ldrb r0, [r5, #5] cmp r0, #0xf bne _0221D8D4 ldrb r0, [r5, #1] add r0, r0, #1 strb r0, [r5, #1] _0221D8D4: ldrb r0, [r5, #5] ldrb r1, [r5, #4] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221D90C ; =0x04000052 strh r1, [r0] b _0221D8F4 _0221D8E2: ldr r0, [r5, #0xc] add r1, r2, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} _0221D8F4: ldr r0, [r5, #0x14] bl FUN_0200BC1C add sp, #0x18 pop {r3, r4, r5, r6, r7, pc} nop _0221D900: .word 0x0222C59A _0221D904: .word 0x0222C598 _0221D908: .word 0x0222C596 _0221D90C: .word 0x04000052 thumb_func_start MOD08_0221D910 MOD08_0221D910: ; 0x0221D910 push {r4, r5, r6, r7, lr} sub sp, #0x24 str r0, [sp, #0x18] bl MOD08_02212014 mov r1, #0xb8 bl FUN_02016998 add r4, r0, #0 mov r0, #0 strb r0, [r4, #1] strb r0, [r4] ldr r0, [sp, #0x18] str r0, [r4, #0xc] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C strh r0, [r4, #8] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0xa] ldr r0, [r4, #0x10] mov r1, #0x29 bl FUN_0200782C mov r1, #0xa ldrsh r1, [r4, r1] sub r0, r1, r0 strh r0, [r4, #0xa] ldr r0, [r4, #0xc] bl MOD08_02212504 str r0, [r4, #0x14] mov r0, #8 strb r0, [r4, #4] mov r1, #6 strb r1, [r4, #5] sub r1, r1, #7 ldr r0, [r4, #0xc] add r2, r1, #0 bl MOD08_02227994 ldrb r0, [r4, #5] ldrb r1, [r4, #4] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221DB90 ; =0x04000052 strh r1, [r0] ldr r0, [r4, #0xc] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_0221550C str r0, [sp, #0x20] ldr r0, [r4, #0xc] bl MOD08_02215574 add r7, r0, #0 ldr r0, [r4, #0xc] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_0221551C str r0, [sp, #0x1c] mov r6, #0 add r5, r4, #0 _0221D9AE: ldr r0, [r4, #0xc] add r1, r6, #0 bl MOD08_022124D8 mov r1, #1 str r0, [r5, #0x18] bl FUN_0200C90C add r6, r6, #1 add r5, r5, #4 cmp r6, #4 blt _0221D9AE ldr r0, [r4, #0xc] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0xc] bl MOD08_02227470 cmp r0, #3 ldr r0, [r4, #0x18] bne _0221DA9E mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x1c] mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x20] mov r1, #0x14 bl FUN_0200C6C4 ldr r0, [r4, #0x24] mov r1, #0x14 bl FUN_0200C6C4 ldr r0, [r4, #0x18] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x1c] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x20] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x24] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x18] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r0, [r4, #0xc] bl MOD08_02215504 add r6, r0, #0 ldr r0, [sp, #0x18] bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] lsl r0, r5, #0x14 lsr r0, r0, #0x10 str r0, [sp, #8] mov r0, #0x80 str r0, [sp, #0xc] str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r1, [sp, #0x1c] ldr r2, [sp, #0x20] add r0, r6, #0 bl FUN_02003B40 ldr r0, [r4, #0x20] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r0, [r4, #0xc] bl MOD08_02215504 add r6, r0, #0 ldr r0, [sp, #0x18] bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] lsl r0, r5, #0x14 lsr r0, r0, #0x10 str r0, [sp, #8] mov r0, #0xc4 str r0, [sp, #0xc] str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r1, [sp, #0x1c] ldr r2, [sp, #0x20] add r0, r6, #0 bl FUN_02003B40 b _0221DB80 _0221DA9E: mov r1, #0x14 bl FUN_0200C6C4 ldr r0, [r4, #0x1c] mov r1, #0x14 bl FUN_0200C6C4 ldr r0, [r4, #0x20] mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x24] mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x18] add r1, r7, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x1c] add r1, r7, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x20] add r1, r7, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x24] add r1, r7, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x18] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x1c] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x20] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x24] add r1, r7, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x18] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r0, [r4, #0xc] bl MOD08_02215504 add r6, r0, #0 ldr r0, [sp, #0x18] bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] lsl r0, r5, #0x14 lsr r0, r0, #0x10 str r0, [sp, #8] mov r0, #0xc4 str r0, [sp, #0xc] str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r1, [sp, #0x1c] ldr r2, [sp, #0x20] add r0, r6, #0 bl FUN_02003B40 ldr r0, [r4, #0x20] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C lsl r0, r0, #0x10 lsr r5, r0, #0x10 ldr r0, [r4, #0xc] bl MOD08_02215504 add r6, r0, #0 ldr r0, [sp, #0x18] bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] lsl r0, r5, #0x14 lsr r0, r0, #0x10 str r0, [sp, #8] mov r0, #0x80 str r0, [sp, #0xc] str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r1, [sp, #0x1c] ldr r2, [sp, #0x20] add r0, r6, #0 bl FUN_02003B40 _0221DB80: ldr r0, [r4, #0xc] ldr r1, _0221DB94 ; =MOD08_0221D74C add r2, r4, #0 bl MOD08_02212400 add sp, #0x24 pop {r4, r5, r6, r7, pc} nop _0221DB90: .word 0x04000052 _0221DB94: .word MOD08_0221D74C thumb_func_start MOD08_0221DB98 MOD08_0221DB98: ; 0x0221DB98 push {r3, r4, r5, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221DBAA cmp r0, #1 beq _0221DC04 b _0221DC44 _0221DBAA: ldrb r1, [r4, #2] ldr r5, _0221DC54 ; =0x0222C531 mov r2, #0x64 lsl r0, r1, #1 add r3, r1, r0 ldr r0, _0221DC58 ; =0x0222C532 ldr r1, _0221DC5C ; =0x0222C530 ldrb r0, [r0, r3] ldrb r1, [r1, r3] ldrb r3, [r5, r3] str r0, [sp] add r0, r4, #0 add r0, #0xc bl MOD08_02218120 ldrb r0, [r4, #2] cmp r0, #0 ldr r0, _0221DC60 ; =0x00007FFF bne _0221DBE0 str r0, [sp] mov r1, #0 ldr r0, [r4, #8] mov r2, #6 add r3, r1, #0 bl FUN_02007E68 b _0221DBEE _0221DBE0: str r0, [sp] mov r2, #0 ldr r0, [r4, #8] mov r1, #6 add r3, r2, #0 bl FUN_02007E68 _0221DBEE: ldrb r1, [r4, #2] mov r0, #1 eor r0, r1 strb r0, [r4, #2] ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, pc} _0221DC04: add r0, r4, #0 add r0, #0xc bl MOD08_02218170 cmp r0, #0 bne _0221DC2C ldr r0, [r4, #8] bl FUN_02007F20 cmp r0, #0 bne _0221DC2C ldrb r0, [r4, #1] cmp r0, #4 ldrb r0, [r4] bhs _0221DC28 sub r0, r0, #1 strb r0, [r4] b _0221DC2C _0221DC28: add r0, r0, #1 strb r0, [r4] _0221DC2C: mov r1, #0xc ldrsh r2, [r4, r1] ldr r0, [r4, #8] bl FUN_02007558 mov r2, #0xe ldrsh r2, [r4, r2] ldr r0, [r4, #8] mov r1, #0xd bl FUN_02007558 pop {r3, r4, r5, pc} _0221DC44: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} .align 2, 0 _0221DC54: .word 0x0222C531 _0221DC58: .word 0x0222C532 _0221DC5C: .word 0x0222C530 _0221DC60: .word 0x00007FFF thumb_func_start MOD08_0221DC64 MOD08_0221DC64: ; 0x0221DC64 push {r3, r4, r5, lr} mov r1, #0x30 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #2] strb r0, [r4, #1] str r5, [r4, #4] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #8] ldr r0, [r4, #4] ldr r1, _0221DC98 ; =MOD08_0221DB98 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0221DC98: .word MOD08_0221DB98 thumb_func_start MOD08_0221DC9C MOD08_0221DC9C: ; 0x0221DC9C push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221DCB0 cmp r0, #1 beq _0221DCEA b _0221DD42 _0221DCB0: ldrb r1, [r4, #1] ldr r2, _0221DD54 ; =0x0222C578 ldr r5, _0221DD58 ; =0x0222C579 lsl r0, r1, #2 add r3, r1, r0 ldr r0, _0221DD5C ; =0x0222C57A ldr r1, _0221DD60 ; =0x0222C577 ldrb r0, [r0, r3] ldrb r1, [r1, r3] ldrb r2, [r2, r3] str r0, [sp] mov r0, #0x64 str r0, [sp, #4] ldr r0, _0221DD64 ; =0x0222C57B ldrb r0, [r0, r3] ldrb r3, [r5, r3] str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 bl MOD08_022181A8 ldrb r0, [r4, #1] add sp, #0xc add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] pop {r4, r5, pc} _0221DCEA: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #0 bne _0221DD08 ldrb r0, [r4, #1] cmp r0, #3 ldrb r0, [r4] bhs _0221DD04 sub r0, r0, #1 strb r0, [r4] b _0221DD08 _0221DD04: add r0, r0, #1 strb r0, [r4] _0221DD08: mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #2 mov r1, #4 ldrsh r0, [r4, r0] ldrsh r1, [r4, r1] ldr r2, [r4, #0x24] bl MOD08_0221828C mov r2, #2 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 add r2, r2, r3 bl FUN_02007558 add sp, #0xc pop {r4, r5, pc} _0221DD42: ldr r0, [r4, #8] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _0221DD54: .word 0x0222C578 _0221DD58: .word 0x0222C579 _0221DD5C: .word 0x0222C57A _0221DD60: .word 0x0222C577 _0221DD64: .word 0x0222C57B thumb_func_start MOD08_0221DD68 MOD08_0221DD68: ; 0x0221DD68 push {r3, r4, r5, lr} mov r1, #0x34 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] str r5, [r4, #8] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_0221552C strh r0, [r4, #4] ldr r0, [r4, #8] ldr r1, _0221DDB0 ; =MOD08_0221DC9C add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} .align 2, 0 _0221DDB0: .word MOD08_0221DC9C thumb_func_start MOD08_0221DDB4 MOD08_0221DDB4: ; 0x0221DDB4 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #5 bls _0221DDC4 b _0221DF24 _0221DDC4: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221DDD0: ; jump table .short _0221DDDC - _0221DDD0 - 2 ; case 0 .short _0221DE16 - _0221DDD0 - 2 ; case 1 .short _0221DE58 - _0221DDD0 - 2 ; case 2 .short _0221DE82 - _0221DDD0 - 2 ; case 3 .short _0221DEA4 - _0221DDD0 - 2 ; case 4 .short _0221DEE2 - _0221DDD0 - 2 ; case 5 _0221DDDC: ldrb r1, [r4, #1] ldr r2, _0221DF64 ; =0x0222C550 ldr r5, _0221DF68 ; =0x0222C551 lsl r0, r1, #2 add r3, r1, r0 ldr r0, _0221DF6C ; =0x0222C552 ldr r1, _0221DF70 ; =0x0222C54F ldrb r0, [r0, r3] ldrb r1, [r1, r3] ldrb r2, [r2, r3] str r0, [sp] mov r0, #0x64 str r0, [sp, #4] ldr r0, _0221DF74 ; =0x0222C553 ldrb r0, [r0, r3] ldrb r3, [r5, r3] str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 bl MOD08_022181A8 ldrb r0, [r4, #1] add sp, #0xc add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] pop {r4, r5, pc} _0221DE16: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #0 bne _0221DE28 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221DE28: mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #0 str r0, [sp] mov r1, #2 mov r2, #6 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] bl MOD08_022182DC add sp, #0xc pop {r4, r5, pc} _0221DE58: ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C mov r1, #0 add r3, r0, #0 lsl r3, r3, #0x10 str r1, [sp] mov r0, #5 str r0, [sp, #4] add r0, r4, #0 add r0, #0x10 add r2, r1, #0 asr r3, r3, #0x10 bl MOD08_02217E80 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r4, r5, pc} _0221DE82: add r0, r4, #0 add r0, #0x10 bl MOD08_02217ECC cmp r0, #0 bne _0221DE94 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221DE94: mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_02007558 add sp, #0xc pop {r4, r5, pc} _0221DEA4: ldrb r1, [r4, #1] ldr r2, _0221DF64 ; =0x0222C550 ldr r5, _0221DF68 ; =0x0222C551 lsl r0, r1, #2 add r3, r1, r0 ldr r0, _0221DF6C ; =0x0222C552 ldr r1, _0221DF70 ; =0x0222C54F ldrb r0, [r0, r3] ldrb r1, [r1, r3] ldrb r2, [r2, r3] str r0, [sp] mov r0, #0x64 str r0, [sp, #4] ldr r0, _0221DF74 ; =0x0222C553 ldrb r0, [r0, r3] ldrb r3, [r5, r3] str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 bl MOD08_022181A8 ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r4, r5, pc} _0221DEE2: add r0, r4, #0 add r0, #0x10 bl MOD08_02218224 cmp r0, #0 bne _0221DEF4 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221DEF4: mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #1 str r0, [sp] mov r1, #2 mov r2, #6 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] bl MOD08_022182DC add sp, #0xc pop {r4, r5, pc} _0221DF24: mov r2, #4 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #0xc] mov r1, #6 mov r2, #1 bl FUN_02007558 mov r1, #0xc add r2, r1, #0 ldr r0, [r4, #0xc] add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0xc] add r2, #0xf3 bl FUN_02007558 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _0221DF64: .word 0x0222C550 _0221DF68: .word 0x0222C551 _0221DF6C: .word 0x0222C552 _0221DF70: .word 0x0222C54F _0221DF74: .word 0x0222C553 thumb_func_start MOD08_0221DF78 MOD08_0221DF78: ; 0x0221DF78 push {r3, r4, r5, lr} mov r1, #0x34 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] str r5, [r4, #8] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] mov r0, #2 ldrsh r0, [r4, r0] strh r0, [r4, #4] ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_0221552C strh r0, [r4, #6] ldr r0, [r4, #8] ldr r1, _0221DFC8 ; =MOD08_0221DDB4 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0221DFC8: .word MOD08_0221DDB4 thumb_func_start MOD08_0221DFCC MOD08_0221DFCC: ; 0x0221DFCC push {r3, r4, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #4 bhi _0221E0B6 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221DFE6: ; jump table .short _0221DFF0 - _0221DFE6 - 2 ; case 0 .short _0221E02A - _0221DFE6 - 2 ; case 1 .short _0221E048 - _0221DFE6 - 2 ; case 2 .short _0221E05E - _0221DFE6 - 2 ; case 3 .short _0221E098 - _0221DFE6 - 2 ; case 4 _0221DFF0: ldr r0, [r4, #8] bl MOD08_02214540 add r2, r0, #0 mov r0, #0 str r0, [sp] mov r0, #0x10 str r0, [sp, #4] ldr r0, _0221E0C8 ; =0x00007FFF mov r1, #1 str r0, [sp, #8] lsl r2, r2, #0x10 ldr r0, [r4, #4] lsr r2, r2, #0x10 sub r3, r1, #3 bl FUN_02003210 mov r1, #0 str r1, [sp] ldr r0, [r4, #0x10] mov r2, #0x10 add r3, r1, #0 bl FUN_02007E68 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221E02A: ldr r0, [r4, #4] bl FUN_020038E4 cmp r0, #0 bne _0221E0C4 ldr r0, [r4, #0x10] bl FUN_02007F20 cmp r0, #0 bne _0221E0C4 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221E048: ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4, #1] cmp r0, #5 bls _0221E0C4 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221E05E: ldr r0, [r4, #8] bl MOD08_02214540 add r2, r0, #0 mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] ldr r0, _0221E0C8 ; =0x00007FFF mov r1, #1 str r0, [sp, #8] lsl r2, r2, #0x10 ldr r0, [r4, #4] lsr r2, r2, #0x10 sub r3, r1, #3 bl FUN_02003210 mov r2, #0 str r2, [sp] ldr r0, [r4, #0x10] mov r1, #0x10 add r3, r2, #0 bl FUN_02007E68 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221E098: ldr r0, [r4, #4] bl FUN_020038E4 cmp r0, #0 bne _0221E0C4 ldr r0, [r4, #0x10] bl FUN_02007F20 cmp r0, #0 bne _0221E0C4 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221E0B6: ldr r0, [r4, #8] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221E0C4: add sp, #0xc pop {r3, r4, pc} .align 2, 0 _0221E0C8: .word 0x00007FFF thumb_func_start MOD08_0221E0CC MOD08_0221E0CC: ; 0x0221E0CC push {r3, r4, r5, lr} mov r1, #0x14 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #8] add r0, r5, #0 bl MOD08_02215504 str r0, [r4, #4] ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 str r0, [r4, #0x10] ldr r0, [r4, #8] ldr r1, _0221E100 ; =MOD08_0221DFCC add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0221E100: .word MOD08_0221DFCC thumb_func_start MOD08_0221E104 MOD08_0221E104: ; 0x0221E104 push {r3, r4, r5, r6, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221E118 cmp r0, #1 beq _0221E184 b _0221E1F8 _0221E118: ldrb r1, [r4, #1] ldr r2, _0221E20C ; =0x0222C55A ldr r5, _0221E210 ; =0x0222C55B lsl r0, r1, #2 add r3, r1, r0 ldr r0, _0221E214 ; =0x0222C55C ldr r1, _0221E218 ; =0x0222C559 ldrb r0, [r0, r3] ldrb r1, [r1, r3] ldrb r2, [r2, r3] str r0, [sp] mov r0, #0x64 str r0, [sp, #4] ldr r0, _0221E21C ; =0x0222C55D ldrb r0, [r0, r3] ldrb r3, [r5, r3] str r0, [sp, #8] add r0, r4, #0 add r0, #0x10 bl MOD08_022181A8 ldrb r1, [r4, #1] ldr r6, _0221E220 ; =0x0222C53C lsl r0, r1, #1 add r5, r1, r0 mov r0, #4 ldrsh r3, [r4, r0] ldr r0, _0221E224 ; =0x0222C53D mov r1, #0 ldrb r0, [r0, r5] add r2, r1, #0 add r0, r3, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldr r0, _0221E228 ; =0x0222C53E ldrb r0, [r0, r5] ldrb r5, [r6, r5] str r0, [sp, #4] add r3, r3, r5 add r0, r4, #0 lsl r3, r3, #0x10 add r0, #0x34 asr r3, r3, #0x10 bl MOD08_02217E80 ldrb r0, [r4, #1] add sp, #0xc add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0221E184: add r0, r4, #0 add r0, #0x10 mov r5, #0 bl MOD08_02218224 cmp r0, #0 bne _0221E194 add r5, r5, #1 _0221E194: add r0, r4, #0 add r0, #0x34 bl MOD08_02217ECC cmp r0, #0 bne _0221E1A2 add r5, r5, #1 _0221E1A2: cmp r5, #2 blt _0221E1C8 ldrb r0, [r4, #1] cmp r0, #3 blo _0221E1C4 ldrb r0, [r4, #2] add r0, r0, #1 strb r0, [r4, #2] mov r0, #0 strb r0, [r4, #1] ldrb r0, [r4, #2] cmp r0, #3 blo _0221E1C8 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E1C8 _0221E1C4: mov r0, #0 strb r0, [r4] _0221E1C8: mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xc bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0xd bl FUN_02007558 mov r0, #0 str r0, [sp] mov r1, #0x36 mov r2, #6 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] bl MOD08_022182DC add sp, #0xc pop {r3, r4, r5, r6, pc} _0221E1F8: ldr r0, [r4, #8] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r3, r4, r5, r6, pc} nop _0221E20C: .word 0x0222C55A _0221E210: .word 0x0222C55B _0221E214: .word 0x0222C55C _0221E218: .word 0x0222C559 _0221E21C: .word 0x0222C55D _0221E220: .word 0x0222C53C _0221E224: .word 0x0222C53D _0221E228: .word 0x0222C53E thumb_func_start MOD08_0221E22C MOD08_0221E22C: ; 0x0221E22C push {r3, r4, r5, lr} mov r1, #0x58 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] str r5, [r4, #8] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #4] ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_0221552C strh r0, [r4, #6] ldr r0, [r4, #8] ldr r1, _0221E274 ; =MOD08_0221E104 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} .align 2, 0 _0221E274: .word MOD08_0221E104 thumb_func_start MOD08_0221E278 MOD08_0221E278: ; 0x0221E278 push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221E28E cmp r0, #1 beq _0221E2A6 cmp r0, #2 beq _0221E2C6 b _0221E308 _0221E28E: ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4, #1] cmp r0, #0xa blo _0221E324 mov r0, #0 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E324 _0221E2A6: ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200C644 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C644 ldr r0, [r4, #0x10] mov r1, #2 bl FUN_0200C90C ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E324 _0221E2C6: ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4, #1] cmp r0, #0xa blo _0221E324 ldr r0, _0221E338 ; =0x0400004A mov r1, #0x3f ldrh r2, [r0] bic r2, r1 mov r1, #0x1f orr r2, r1 strh r2, [r0] ldrh r3, [r0] ldr r2, _0221E33C ; =0xFFFFC0FF lsl r1, r1, #8 and r2, r3 orr r1, r2 strh r1, [r0] ldr r0, [r4, #0xc] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200C644 mov r0, #0 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E324 _0221E308: mov r3, #1 lsl r3, r3, #0x1a ldr r1, [r3] ldr r0, _0221E340 ; =0xFFFF1FFF and r0, r1 str r0, [r3] ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} _0221E324: ldr r0, [r4, #0xc] bl FUN_0200C5A8 ldr r0, [r4, #0x10] bl FUN_0200C5A8 ldr r0, [r4, #8] bl FUN_0200BC1C pop {r4, pc} .align 2, 0 _0221E338: .word 0x0400004A _0221E33C: .word 0xFFFFC0FF _0221E340: .word 0xFFFF1FFF thumb_func_start MOD08_0221E344 MOD08_0221E344: ; 0x0221E344 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 mov r1, #0x14 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #4] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #8] ldr r0, [r4, #4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0xc] ldr r0, [r4, #4] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x10] mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] ldr r1, _0221E41C ; =0xFFFF1FFF and r2, r1 lsr r1, r0, #0xb orr r1, r2 str r1, [r0] add r0, #0x4a ldrh r2, [r0] mov r1, #0x3f bic r2, r1 mov r1, #0x1f orr r1, r2 strh r1, [r0] ldrh r2, [r0] ldr r1, _0221E420 ; =0xFFFFC0FF and r2, r1 mov r1, #0x12 lsl r1, r1, #8 orr r1, r2 strh r1, [r0] ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_0221550C add r7, r0, #0 ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_0221551C str r0, [sp, #0x18] ldr r0, [r4, #0xc] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r6, r0, #0 ldr r0, [r4, #4] bl MOD08_02215504 str r0, [sp, #0x1c] add r0, r5, #0 bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r1, #0x20 lsl r0, r6, #0x14 str r1, [sp, #4] lsr r0, r0, #0x10 str r0, [sp, #8] add r1, #0xe0 str r1, [sp, #0xc] str r1, [sp, #0x10] str r1, [sp, #0x14] ldr r0, [sp, #0x1c] ldr r1, [sp, #0x18] add r2, r7, #0 bl FUN_02003B40 ldr r0, [r4, #0xc] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #4] ldr r1, _0221E424 ; =MOD08_0221E278 add r2, r4, #0 bl MOD08_02212400 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} nop _0221E41C: .word 0xFFFF1FFF _0221E420: .word 0xFFFFC0FF _0221E424: .word MOD08_0221E278 thumb_func_start MOD08_0221E428 MOD08_0221E428: ; 0x0221E428 push {r4, r5, r6, r7, lr} sub sp, #0x2c add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #3 bls _0221E438 b _0221E61A _0221E438: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221E444: ; jump table .short _0221E44C - _0221E444 - 2 ; case 0 .short _0221E45E - _0221E444 - 2 ; case 1 .short _0221E576 - _0221E444 - 2 ; case 2 .short _0221E5AE - _0221E444 - 2 ; case 3 _0221E44C: ldr r0, [r4, #0xc] mov r1, #0xe mov r2, #1 bl FUN_02007558 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E636 _0221E45E: mov r0, #0 add r6, r4, #0 ldr r7, _0221E640 ; =0x0222C52C str r0, [sp, #0x10] str r0, [sp, #0x14] add r5, r4, #0 add r6, #0x20 _0221E46C: ldrb r0, [r5, #0x18] cmp r0, #0 beq _0221E478 cmp r0, #1 beq _0221E4A6 b _0221E4F4 _0221E478: ldrb r0, [r5, #0x19] add r0, r0, #1 strb r0, [r5, #0x19] ldrb r1, [r5, #0x19] ldrb r0, [r7] cmp r1, r0 blo _0221E4FA mov r0, #5 str r0, [sp] mov r0, #0x64 str r0, [sp, #4] mov r0, #5 mov r1, #0x64 str r0, [sp, #8] add r0, r6, #0 mov r2, #5 add r3, r1, #0 bl MOD08_022181A8 ldrb r0, [r5, #0x18] add r0, r0, #1 strb r0, [r5, #0x18] b _0221E4FA _0221E4A6: add r0, r6, #0 bl MOD08_02218224 cmp r0, #0 bne _0221E4B8 ldrb r0, [r5, #0x18] add r0, r0, #1 strb r0, [r5, #0x18] b _0221E4FA _0221E4B8: add r0, r6, #0 add r1, sp, #0x28 add r2, sp, #0x24 bl MOD08_0221825C mov r0, #8 ldrsb r0, [r4, r0] bl _fflt add r1, r0, #0 ldr r0, [sp, #0x28] bl _fmul add r1, r0, #0 ldr r0, [r5, #0x1c] ldr r2, [sp, #0x24] bl FUN_0200C884 mov r0, #0 str r0, [sp] mov r1, #2 ldr r2, [r4, #4] ldrsh r1, [r4, r1] lsl r2, r2, #0x10 ldr r0, [r5, #0x1c] ldr r3, [r5, #0x34] asr r2, r2, #0x10 bl MOD08_02218314 b _0221E4FA _0221E4F4: ldr r0, [sp, #0x10] add r0, r0, #1 str r0, [sp, #0x10] _0221E4FA: ldr r0, [r5, #0x1c] bl FUN_0200C5A8 ldr r0, [sp, #0x14] add r5, #0x2c add r0, r0, #1 add r7, r7, #1 add r6, #0x2c str r0, [sp, #0x14] cmp r0, #3 blt _0221E46C ldr r0, [sp, #0x10] cmp r0, #3 bge _0221E518 b _0221E636 _0221E518: ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4, #1] cmp r0, #3 bhs _0221E56E mov r6, #0 add r5, r4, #0 add r7, r6, #0 _0221E52A: add r1, sp, #0x18 ldr r0, [r5, #0x1c] add r1, #2 add r2, sp, #0x18 bl FUN_0200C7A0 add r2, sp, #0x18 mov r1, #2 ldrsh r1, [r2, r1] mov r2, #2 ldrsh r2, [r4, r2] ldr r0, [r5, #0x1c] bl FUN_0200C714 mov r0, #8 ldrsb r0, [r4, r0] bl _fflt add r1, r0, #0 mov r2, #0xfe ldr r0, [r5, #0x1c] lsl r2, r2, #0x16 bl FUN_0200C884 strb r7, [r5, #0x18] strb r7, [r5, #0x19] add r6, r6, #1 add r5, #0x2c cmp r6, #3 blt _0221E52A ldrb r0, [r4] sub r0, r0, #1 strb r0, [r4] b _0221E636 _0221E56E: ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E636 _0221E576: add r5, r4, #0 mov r7, #0 add r6, r4, #0 add r5, #0x20 _0221E57E: ldr r0, [r6, #0x1c] mov r1, #0 bl FUN_0200C90C mov r0, #0x64 str r0, [sp] str r0, [sp, #4] mov r0, #5 mov r1, #5 str r0, [sp, #8] add r0, r5, #0 mov r2, #0x64 add r3, r1, #0 bl MOD08_022181A8 add r7, r7, #1 add r6, #0x2c add r5, #0x2c cmp r7, #3 blt _0221E57E ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E636 _0221E5AE: mov r7, #0 add r6, r4, #0 str r7, [sp, #0xc] add r6, #0x20 add r5, r4, #0 _0221E5B8: add r0, r6, #0 bl MOD08_02218224 cmp r0, #0 bne _0221E5C6 add r7, r7, #1 b _0221E600 _0221E5C6: add r0, r6, #0 add r1, sp, #0x20 add r2, sp, #0x1c bl MOD08_0221825C mov r0, #8 ldrsb r0, [r4, r0] bl _fflt add r1, r0, #0 ldr r0, [sp, #0x20] bl _fmul add r1, r0, #0 ldr r0, [r5, #0x1c] ldr r2, [sp, #0x1c] bl FUN_0200C884 mov r0, #0 str r0, [sp] mov r1, #2 ldr r2, [r4, #4] ldrsh r1, [r4, r1] lsl r2, r2, #0x10 ldr r0, [r5, #0x1c] ldr r3, [r5, #0x34] asr r2, r2, #0x10 bl MOD08_02218314 _0221E600: ldr r0, [sp, #0xc] add r6, #0x2c add r0, r0, #1 add r5, #0x2c str r0, [sp, #0xc] cmp r0, #3 blt _0221E5B8 cmp r7, #3 blt _0221E636 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221E636 _0221E61A: ldr r0, [r4, #0xc] mov r1, #0xe mov r2, #0 bl FUN_02007558 ldr r0, [r4, #0x10] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x2c pop {r4, r5, r6, r7, pc} _0221E636: ldr r0, [r4, #0x14] bl FUN_0200BC1C add sp, #0x2c pop {r4, r5, r6, r7, pc} .align 2, 0 _0221E640: .word 0x0222C52C thumb_func_start MOD08_0221E644 MOD08_0221E644: ; 0x0221E644 push {r3, r4, r5, r6, r7, lr} mov r1, #0x9c str r0, [sp] bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] ldr r0, [sp] str r0, [r4, #0x10] bl MOD08_02212504 str r0, [r4, #0x14] ldr r0, [r4, #0x10] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0x10] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] ldr r0, [r4, #0xc] mov r1, #0x29 bl FUN_0200782C mov r1, #2 ldrsh r1, [r4, r1] sub r0, r1, r0 strh r0, [r4, #2] ldr r0, [r4, #0x10] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0x10] bl MOD08_0221552C mov r1, #0 str r0, [r4, #4] mvn r1, r1 ldr r0, [r4, #0x10] add r2, r1, #0 bl MOD08_02227994 mov r6, #0 ldr r1, _0221E720 ; =0x0000060C ldr r0, _0221E724 ; =0x04000052 add r5, r4, #0 strh r1, [r0] add r7, r6, #0 _0221E6B0: strb r7, [r5, #0x18] strb r7, [r5, #0x19] ldr r0, [r4, #0x10] add r1, r6, #0 bl MOD08_022124D8 str r0, [r5, #0x1c] mov r1, #2 bl FUN_0200C840 ldr r0, [r5, #0x1c] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x1c] add r1, r6, #1 bl FUN_0200C6C4 add r6, r6, #1 add r5, #0x2c cmp r6, #3 blt _0221E6B0 ldr r0, [sp] mov r1, #0 bl MOD08_02215680 cmp r0, #1 bne _0221E6EE mov r0, #0 mvn r0, r0 b _0221E6F0 _0221E6EE: mov r0, #1 _0221E6F0: strb r0, [r4, #8] mov r6, #0 add r5, r4, #0 mov r7, #8 _0221E6F8: ldrsb r0, [r4, r7] bl _fflt add r1, r0, #0 mov r2, #0xfe ldr r0, [r5, #0x1c] lsl r2, r2, #0x16 bl FUN_0200C884 add r6, r6, #1 add r5, #0x2c cmp r6, #3 blt _0221E6F8 ldr r0, [r4, #0x10] ldr r1, _0221E728 ; =MOD08_0221E428 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _0221E720: .word 0x0000060C _0221E724: .word 0x04000052 _0221E728: .word MOD08_0221E428 thumb_func_start MOD08_0221E72C MOD08_0221E72C: ; 0x0221E72C push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #3 bls _0221E73C b _0221E866 _0221E73C: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221E748: ; jump table .short _0221E750 - _0221E748 - 2 ; case 0 .short _0221E782 - _0221E748 - 2 ; case 1 .short _0221E796 - _0221E748 - 2 ; case 2 .short _0221E7F2 - _0221E748 - 2 ; case 3 _0221E750: ldr r0, [r4, #0xc] bl MOD08_02215504 add r5, r0, #0 ldr r0, [r4, #0xc] bl MOD08_02214540 add r2, r0, #0 mov r1, #0 lsl r2, r2, #0x10 str r1, [sp] mov r0, #0xa str r0, [sp, #4] str r1, [sp, #8] mov r1, #1 add r0, r5, #0 lsr r2, r2, #0x10 add r3, r1, #0 bl FUN_02003210 ldrb r0, [r4] add sp, #0xc add r0, r0, #1 strb r0, [r4] pop {r4, r5, r6, r7, pc} _0221E782: ldr r0, [r4, #0xc] bl MOD08_02215504 bl FUN_020038E4 cmp r0, #0 bne _0221E874 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221E796: mov r0, #5 str r0, [sp] ldrb r1, [r4, #1] add r0, r4, #0 add r0, #0xb4 lsl r2, r1, #1 ldr r1, _0221E878 ; =0x0222C586 ldrsh r1, [r1, r2] mov r2, #0 add r3, r2, #0 bl MOD08_022183C0 ldrb r0, [r4, #2] cmp r0, #0 ldr r0, [r4, #0xc] bne _0221E7C8 bl MOD08_02215504 mov r1, #0 mov r2, #0xff mov r3, #0xa str r1, [sp] bl FUN_02003A64 b _0221E7DA _0221E7C8: bl MOD08_02215504 ldr r1, _0221E87C ; =0x00007FFF mov r2, #0xff str r1, [sp] mov r1, #0 mov r3, #0xa bl FUN_02003A64 _0221E7DA: mov r0, #3 strb r0, [r4, #3] ldrb r1, [r4, #2] mov r0, #1 eor r0, r1 strb r0, [r4, #2] ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221E7F2: add r0, r4, #0 add r0, #0xb4 bl MOD08_022183F0 cmp r0, #0 bne _0221E810 ldrb r0, [r4, #1] cmp r0, #8 ldrb r0, [r4] blo _0221E80C add r0, r0, #1 strb r0, [r4] b _0221E810 _0221E80C: sub r0, r0, #1 strb r0, [r4] _0221E810: ldrb r0, [r4, #3] cmp r0, #0 beq _0221E832 sub r0, r0, #1 strb r0, [r4, #3] ldrb r0, [r4, #3] cmp r0, #0 bne _0221E832 ldr r0, [r4, #0xc] bl MOD08_02215504 mov r1, #0 mov r2, #0xff add r3, r1, #0 str r1, [sp] bl FUN_02003A64 _0221E832: mov r6, #0 add r5, r4, #0 mov r7, #0x14 _0221E838: ldr r0, [r5, #0x1c] cmp r0, #0 beq _0221E84C mov r2, #0xb4 ldrsh r3, [r4, r2] ldrsh r2, [r5, r7] mov r1, #0 add r2, r3, r2 bl FUN_02007558 _0221E84C: add r6, r6, #1 add r5, #0x14 cmp r6, #4 blt _0221E838 mov r3, #0xb4 ldrsh r3, [r4, r3] ldr r0, [r4, #8] mov r1, #3 mov r2, #0 bl FUN_020179E0 add sp, #0xc pop {r4, r5, r6, r7, pc} _0221E866: ldr r0, [r4, #0xc] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221E874: add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _0221E878: .word 0x0222C586 _0221E87C: .word 0x00007FFF thumb_func_start MOD08_0221E880 MOD08_0221E880: ; 0x0221E880 push {r3, r4, r5, r6, r7, lr} mov r1, #0xd8 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] str r5, [r4, #0xc] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #0x10] ldr r0, [r4, #0xc] bl MOD08_02212490 str r0, [r4, #8] ldr r0, [r4, #0xc] bl MOD08_0221553C cmp r0, #1 bne _0221E8B2 mov r1, #0x40 b _0221E8B4 _0221E8B2: mov r1, #0xa _0221E8B4: add r2, r4, #0 add r0, r5, #0 add r2, #0x14 add r3, r4, #4 bl MOD08_02227BAC ldr r0, [r4, #4] mov r6, #0 cmp r0, #0 ble _0221E8EA add r5, r4, #0 add r7, r6, #0 _0221E8CC: ldr r0, [r5, #0x1c] add r1, r7, #0 bl FUN_0200782C strh r0, [r5, #0x14] ldr r0, [r5, #0x1c] mov r1, #1 bl FUN_0200782C strh r0, [r5, #0x16] ldr r0, [r4, #4] add r6, r6, #1 add r5, #0x14 cmp r6, r0 blt _0221E8CC _0221E8EA: ldr r0, [r4, #0xc] ldr r1, _0221E8F8 ; =MOD08_0221E72C add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _0221E8F8: .word MOD08_0221E72C thumb_func_start MOD08_0221E8FC MOD08_0221E8FC: ; 0x0221E8FC push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 bne _0221E946 add r0, r4, #0 add r0, #0x40 bl MOD08_02217ECC cmp r0, #0 bne _0221E91A ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221E91A: add r0, r4, #0 add r0, #0x1c bl MOD08_022183F0 add r0, r4, #0 add r0, #0x64 bl MOD08_02218704 mov r1, #0x40 mov r2, #0x42 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] bl FUN_0200C714 ldr r0, [r4, #0x18] bl FUN_0200C5A8 ldr r0, [r4, #0x10] bl FUN_0200BC1C pop {r4, pc} _0221E946: ldr r0, [r4, #0xc] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_0221E958 MOD08_0221E958: ; 0x0221E958 push {r3, r4, r5, r6, r7, lr} sub sp, #8 mov r1, #0x8c add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0 strb r0, [r4] strb r0, [r4, #1] str r5, [r4, #0xc] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #0x10] ldr r0, [r4, #0xc] bl MOD08_02212490 str r0, [r4, #8] ldr r0, [r4, #0xc] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x18] add r0, r5, #0 mov r1, #0 bl MOD08_02212498 cmp r0, #0 ldr r0, [r4, #0xc] bne _0221E99C bl MOD08_02212460 b _0221E9A0 _0221E99C: bl MOD08_02212458 _0221E9A0: add r6, r0, #0 ldr r0, [r4, #0xc] add r1, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x14] add r1, r4, #4 bl MOD08_02227B2C ldr r0, [r4, #0x14] mov r1, #0x29 bl FUN_0200782C mov r1, #6 ldrsh r1, [r4, r1] sub r0, r1, r0 strh r0, [r4, #6] ldr r0, [r4, #0xc] add r1, r6, #0 bl MOD08_02217C1C add r7, r0, #0 ldr r0, [r4, #0xc] add r1, r6, #0 bl MOD08_02217C44 add r6, r0, #0 mov r0, #6 ldrsh r3, [r4, r0] mov r0, #4 ldrsh r1, [r4, r0] mov r2, #0x14 add r0, r6, #0 mul r0, r2 add r0, r3, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] str r2, [sp, #4] sub r2, #0x28 mul r2, r7 add r2, r1, r2 add r0, r4, #0 lsl r2, r2, #0x10 add r0, #0x40 asr r2, r2, #0x10 bl MOD08_02217E80 add r0, r5, #0 mov r1, #2 bl MOD08_022155C4 add r6, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD08_022155C4 mov r5, #1 add r3, r5, #0 lsl r3, r6 add r1, r0, #0 add r6, r3, #0 mov r2, #0x20 add r3, r5, #0 orr r6, r2 lsl r3, r1 add r1, r6, #0 orr r1, r3 sub r2, #0x21 ldr r0, [r4, #0xc] orr r1, r5 add r3, r2, #0 bl MOD08_022279D0 mov r1, #0x1f mov r2, #0 str r1, [sp] mov r0, #0xf str r0, [sp, #4] add r0, r4, #0 add r0, #0x64 add r3, r2, #0 bl MOD08_022186D4 ldr r0, [r4, #0x18] add r1, r5, #0 bl FUN_0200C90C ldr r0, [r4, #0xc] ldr r1, _0221EA60 ; =MOD08_0221E8FC add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _0221EA60: .word MOD08_0221E8FC thumb_func_start MOD08_0221EA64 MOD08_0221EA64: ; 0x0221EA64 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221EA76 cmp r0, #1 beq _0221EAB6 b _0221EAE6 _0221EA76: ldrb r0, [r4, #1] cmp r0, #0 ldrb r0, [r4, #2] bne _0221EA88 lsl r3, r0, #3 ldr r0, _0221EB00 ; =0x0222C5B0 ldr r2, [r0, r3] neg r1, r2 b _0221EA90 _0221EA88: lsl r3, r0, #3 ldr r0, _0221EB00 ; =0x0222C5B0 ldr r1, [r0, r3] neg r2, r1 _0221EA90: ldr r5, _0221EB04 ; =0x0222C5B4 add r0, r4, #0 ldr r3, [r5, r3] add r0, #0x5c bl MOD08_02218008 ldrb r0, [r4, #1] cmp r0, #1 bne _0221EAA8 ldrb r0, [r4, #2] add r0, r0, #1 strb r0, [r4, #2] _0221EAA8: ldrb r1, [r4, #1] mov r0, #1 eor r0, r1 strb r0, [r4, #1] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221EAB6: add r0, r4, #0 add r0, #0x5c bl MOD08_02218058 cmp r0, #1 bne _0221EAD2 ldr r2, [r4, #0x5c] ldr r0, [r4, #0x28] lsl r2, r2, #0x10 mov r1, #9 lsr r2, r2, #0x10 bl FUN_02007558 pop {r3, r4, r5, pc} _0221EAD2: ldrb r0, [r4, #2] cmp r0, #5 ldrb r0, [r4] blo _0221EAE0 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, pc} _0221EAE0: sub r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, pc} _0221EAE6: ldr r0, [r4, #0x28] mov r1, #9 mov r2, #0 bl FUN_02007558 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} .align 2, 0 _0221EB00: .word 0x0222C5B0 _0221EB04: .word 0x0222C5B4 thumb_func_start MOD08_0221EB08 MOD08_0221EB08: ; 0x0221EB08 push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221EB1C cmp r0, #1 beq _0221EB40 b _0221EB6A _0221EB1C: mov r0, #0x22 ldrsh r0, [r4, r0] mov r1, #0x1c mov r2, #0x1e str r0, [sp] mov r3, #0x20 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] add r0, #0x38 bl MOD08_022183C0 ldrb r0, [r4] add sp, #8 add r0, r0, #1 strb r0, [r4] pop {r4, pc} _0221EB40: ldr r0, [r4, #0x2c] add r1, sp, #4 bl MOD08_02227B2C add r0, r4, #0 add r3, sp, #4 mov r1, #0 mov r2, #2 ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] ldr r3, [r4, #0x2c] add r0, #0x38 bl MOD08_02218454 cmp r0, #0 bne _0221EB78 ldrb r0, [r4] add sp, #8 add r0, r0, #1 strb r0, [r4] pop {r4, pc} _0221EB6A: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0221EB78: add sp, #8 pop {r4, pc} thumb_func_start MOD08_0221EB7C MOD08_0221EB7C: ; 0x0221EB7C push {r4, r5, r6, lr} mov r1, #0x70 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0x28] ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0x2c] ldr r0, [r4, #0x28] mov r1, #0xb mov r2, #0x64 bl FUN_02007558 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 add r6, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0x1c] add r0, r5, #0 mov r1, #2 bl MOD08_02212498 strh r0, [r4, #0x1e] add r0, r5, #0 mov r1, #3 bl MOD08_02212498 strh r0, [r4, #0x20] add r0, r5, #0 mov r1, #4 bl MOD08_02212498 strh r0, [r4, #0x22] add r0, r5, #0 mov r1, #5 bl MOD08_02212498 str r0, [r4, #0x24] cmp r6, #0 ldr r0, [r4, #4] bne _0221EC06 ldr r1, _0221EC10 ; =MOD08_0221EA64 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} _0221EC06: ldr r1, _0221EC14 ; =MOD08_0221EB08 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} .align 2, 0 _0221EC10: .word MOD08_0221EA64 _0221EC14: .word MOD08_0221EB08 thumb_func_start MOD08_0221EC18 MOD08_0221EC18: ; 0x0221EC18 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r2, r0, #0 ldrb r0, [r5] cmp r0, #0 beq _0221EC2A cmp r0, #1 beq _0221EC4C b _0221ECA0 _0221EC2A: ldr r2, [r5, #0x48] mov r0, #0xa add r1, r2, #2 str r0, [sp] add r0, r5, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 add r0, #0x4c asr r1, r1, #0x10 asr r2, r2, #0x10 mov r3, #0 bl MOD08_022183C0 ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] pop {r3, r4, r5, r6, r7, pc} _0221EC4C: add r0, r5, #0 add r0, #0x4c bl MOD08_022183F0 cmp r0, #0 bne _0221EC60 ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] pop {r3, r4, r5, r6, r7, pc} _0221EC60: mov r6, #0 add r4, r5, #0 mov r7, #0x28 _0221EC66: ldr r0, [r4, #0x38] cmp r0, #0 beq _0221EC7A mov r2, #0x4c ldrsh r3, [r5, r2] ldrsh r2, [r4, r7] mov r1, #0 add r2, r3, r2 bl FUN_02007558 _0221EC7A: add r6, r6, #1 add r4, r4, #4 cmp r6, #4 blt _0221EC66 mov r3, #0x4c ldrsh r3, [r5, r3] ldr r0, [r5, #0x14] mov r1, #3 mov r2, #0 bl FUN_020179E0 mov r3, #0x4e mov r1, #3 ldrsh r3, [r5, r3] ldr r0, [r5, #0x14] add r2, r1, #0 bl FUN_020179E0 pop {r3, r4, r5, r6, r7, pc} _0221ECA0: ldr r0, [r5, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0221ECB0 MOD08_0221ECB0: ; 0x0221ECB0 push {r3, r4, r5, r6, r7, lr} mov r1, #0x70 add r4, r0, #0 bl MOD08_02228064 add r7, r0, #0 add r0, r4, #0 add r1, r7, #0 bl MOD08_02227B70 ldr r0, [r7, #4] mov r1, #1 bl MOD08_02212758 cmp r0, #0x46 bgt _0221ECE0 bge _0221ED02 cmp r0, #0x1e bgt _0221ECDA beq _0221ED0E b _0221ED14 _0221ECDA: cmp r0, #0x32 beq _0221ED08 b _0221ED14 _0221ECE0: cmp r0, #0x6e bgt _0221ECEC bge _0221ECF6 cmp r0, #0x5a beq _0221ECFC b _0221ED14 _0221ECEC: cmp r0, #0x96 bne _0221ED14 mov r0, #6 str r0, [r7, #0x48] b _0221ED18 _0221ECF6: mov r0, #5 str r0, [r7, #0x48] b _0221ED18 _0221ECFC: mov r0, #4 str r0, [r7, #0x48] b _0221ED18 _0221ED02: mov r0, #3 str r0, [r7, #0x48] b _0221ED18 _0221ED08: mov r0, #2 str r0, [r7, #0x48] b _0221ED18 _0221ED0E: mov r0, #1 str r0, [r7, #0x48] b _0221ED18 _0221ED14: mov r0, #0 str r0, [r7, #0x48] _0221ED18: add r5, r7, #0 mov r6, #0 add r4, r7, #0 add r5, #0x28 _0221ED20: ldr r0, [r7, #4] add r1, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x38] cmp r0, #0 beq _0221ED34 add r1, r5, #0 bl MOD08_02227B2C _0221ED34: add r6, r6, #1 add r4, r4, #4 add r5, r5, #4 cmp r6, #4 blt _0221ED20 ldr r0, [r7, #4] ldr r1, _0221ED4C ; =MOD08_0221EC18 add r2, r7, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _0221ED4C: .word MOD08_0221EC18 thumb_func_start MOD08_0221ED50 MOD08_0221ED50: ; 0x0221ED50 push {r3, r4, lr} sub sp, #4 add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _0221ED64 cmp r0, #1 beq _0221ED92 b _0221EE00 _0221ED64: mov r0, #0xa str r0, [sp] add r0, r4, #0 mov r2, #0 add r0, #0x40 mov r1, #0x14 add r3, r2, #0 bl MOD08_022183C0 mov r0, #0xa str r0, [sp] add r0, r4, #0 mov r2, #0 add r0, #0x64 mov r1, #2 add r3, r2, #0 bl MOD08_022183C0 ldrb r0, [r4] add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, pc} _0221ED92: add r0, r4, #0 add r0, #0x40 bl MOD08_022183F0 cmp r0, #0 bne _0221EDA6 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221EDF6 _0221EDA6: mov r1, #0x2c ldrsh r2, [r4, r1] mov r1, #0x40 ldrsh r1, [r4, r1] ldr r0, [r4, #0x38] add r1, r2, r1 mov r2, #0x2e ldrsh r3, [r4, r2] mov r2, #0x42 ldrsh r2, [r4, r2] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 mov r1, #0x40 ldrsh r2, [r4, r1] mov r1, #0x2c ldrsh r1, [r4, r1] ldr r0, [r4, #0x3c] sub r1, r2, r1 mov r2, #0x2e ldrsh r3, [r4, r2] mov r2, #0x42 ldrsh r2, [r4, r2] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 ldr r0, [r4, #0x38] bl FUN_0200C5A8 ldr r0, [r4, #0x3c] bl FUN_0200C5A8 _0221EDF6: ldr r0, [r4, #0xc] bl FUN_0200BC1C add sp, #4 pop {r3, r4, pc} _0221EE00: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_0221EE14 MOD08_0221EE14: ; 0x0221EE14 push {r3, r4, r5, lr} mov r1, #0x88 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r0, [r4, #4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x38] ldr r0, [r4, #4] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x3c] ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0x30] ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0x34] add r1, r4, #0 ldr r0, [r4, #0x30] add r1, #0x28 bl MOD08_02227B2C add r1, r4, #0 ldr r0, [r4, #0x34] add r1, #0x2c bl MOD08_02227B2C ldr r0, [r4, #4] ldr r1, _0221EE7C ; =MOD08_0221ED50 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} .align 2, 0 _0221EE7C: .word MOD08_0221ED50 thumb_func_start MOD08_0221EE80 MOD08_0221EE80: ; 0x0221EE80 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 ldr r2, [r4, #0x38] add r0, #0x8c add r1, #0xb0 bl MOD08_02217FE4 cmp r0, #0 bne _0221EEAC ldr r0, [r4, #0x38] bl FUN_0200C3DC ldr r0, [r4, #0x14] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl MOD08_02228094 pop {r3, r4, r5, pc} _0221EEAC: add r0, r4, #0 add r0, #0xd4 bl MOD08_02218058 cmp r0, #1 bne _0221EEC8 add r1, r4, #0 add r1, #0xd4 ldr r1, [r1] ldr r0, [r4, #0x38] lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_0200C898 _0221EEC8: ldr r0, [r4, #0x38] bl FUN_0200C5A8 ldr r0, [r4, #0x20] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0221EED8 MOD08_0221EED8: ; 0x0221EED8 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 mov r1, #0xe8 add r6, r0, #0 add r7, r3, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r6, #0 add r1, #0x10 bl MOD08_02227B70 add r0, r6, #0 mov r1, #0 bl MOD08_02212498 strh r0, [r4, #0xc] add r0, r6, #0 mov r1, #1 bl MOD08_02212498 strh r0, [r4, #0xe] add r0, r6, #0 mov r1, #2 bl MOD08_02212498 str r0, [r4, #4] add r0, r6, #0 mov r1, #3 bl MOD08_02212498 str r0, [r4, #8] add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_02217C1C add r5, r0, #0 add r0, r7, #0 mov r1, #2 str r7, [r4, #0x38] bl FUN_0200C840 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x44] add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x58] add r1, r4, #0 ldr r0, [r4, #0x44] add r1, #0x40 bl MOD08_02227B2C add r1, r4, #0 ldr r0, [r4, #0x58] add r1, #0x54 bl MOD08_02227B2C mov r0, #0x42 ldrsh r0, [r4, r0] mov r3, #0x54 str r0, [sp] mov r0, #0x56 ldrsh r2, [r4, r0] mov r0, #0xe ldrsh r0, [r4, r0] add r1, r0, #0 mul r1, r5 add r0, r2, r1 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r4, #4] add r1, r4, #0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] ldr r0, [r4, #8] mov r2, #0x40 lsl r0, r0, #0xc str r0, [sp, #0xc] ldrsh r3, [r4, r3] add r0, r4, #0 ldrsh r2, [r4, r2] mov ip, r3 mov r3, #0xc ldrsh r3, [r4, r3] add r0, #0x8c add r1, #0xb0 add r7, r3, #0 mul r7, r5 mov r3, ip add r3, r3, r7 lsl r3, r3, #0x10 asr r3, r3, #0x10 bl MOD08_02217F50 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_02215490 cmp r0, #4 bne _0221EFE0 add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_02215490 cmp r0, #2 bne _0221EFE0 mov r0, #0 mvn r0, r0 mul r5, r0 _0221EFE0: add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_02215490 cmp r0, #5 bne _0221F00A add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_02215490 cmp r0, #3 bne _0221F00A mov r0, #0 mvn r0, r0 mul r5, r0 _0221F00A: cmp r5, #0 ldr r2, _0221F064 ; =0x00005C71 ble _0221F022 ldr r1, _0221F068 ; =0x00000E38 add r0, r4, #0 add r0, #0xd4 mul r1, r5 mul r2, r5 mov r3, #0xa bl MOD08_02218008 b _0221F032 _0221F022: ldr r1, _0221F06C ; =0x00003FFF add r0, r4, #0 add r0, #0xd4 mul r1, r5 mul r2, r5 mov r3, #0xa bl MOD08_02218008 _0221F032: add r1, r4, #0 add r1, #0xd4 ldr r1, [r1] ldr r0, [r4, #0x38] lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_0200C898 add r0, r4, #0 add r1, r4, #0 ldr r2, [r4, #0x38] add r0, #0x8c add r1, #0xb0 bl MOD08_02217FE4 ldr r0, [r4, #0x38] bl FUN_0200C5A8 ldr r0, [r4, #0x14] ldr r1, _0221F070 ; =MOD08_0221EE80 add r2, r4, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221F064: .word 0x00005C71 _0221F068: .word 0x00000E38 _0221F06C: .word 0x00003FFF _0221F070: .word MOD08_0221EE80 thumb_func_start MOD08_0221F074 MOD08_0221F074: ; 0x0221F074 push {r4, r5, lr} sub sp, #0x1c add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4, #0x18] cmp r0, #3 bls _0221F084 b _0221F1F0 _0221F084: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221F090: ; jump table .short _0221F098 - _0221F090 - 2 ; case 0 .short _0221F0C8 - _0221F090 - 2 ; case 1 .short _0221F168 - _0221F090 - 2 ; case 2 .short _0221F17A - _0221F090 - 2 ; case 3 _0221F098: mov r0, #0x12 ldrsh r2, [r4, r0] mov r0, #0x96 mov r3, #0x3c str r0, [sp] mov r1, #0x64 str r1, [sp, #4] mov r0, #0xc mul r1, r2 mul r3, r2 lsl r2, r3, #0x10 str r0, [sp, #8] add r0, r4, #0 lsl r1, r1, #0x10 add r0, #0x9c asr r1, r1, #0x10 asr r2, r2, #0x10 mov r3, #5 bl MOD08_022181A8 ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] b _0221F20E _0221F0C8: add r0, r4, #0 add r0, #0x9c bl MOD08_02218224 cmp r0, #0 bne _0221F106 mov r0, #0x12 ldrsh r2, [r4, r0] mov r0, #0xa mov r1, #0x3c str r0, [sp] mov r0, #0x64 str r0, [sp, #4] mov r0, #0xc mul r1, r2 str r0, [sp, #8] add r0, r4, #0 lsl r1, r1, #0x10 mov r3, #0x96 add r5, r2, #0 mul r5, r3 lsl r2, r5, #0x10 add r0, #0x9c asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_022181A8 ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] b _0221F20E _0221F106: add r0, r4, #0 add r0, #0x9c add r1, sp, #0x18 add r2, sp, #0x14 bl MOD08_0221825C ldr r0, [r4, #0x40] ldr r1, [sp, #0x18] ldr r2, [sp, #0x14] bl FUN_0200C884 mov r0, #0x16 add r2, r4, #0 add r2, #0xb0 ldrsh r0, [r4, r0] ldr r2, [r2] mov r1, #0x10 bl MOD08_0221828C mov r2, #0x16 add r3, r0, #0 ldrsh r2, [r4, r2] mov r1, #0x14 ldrsh r1, [r4, r1] add r2, r2, r3 lsl r2, r2, #0x10 ldr r0, [r4, #0x40] asr r2, r2, #0x10 bl FUN_0200C714 ldrb r1, [r4, #0xc] ldrb r0, [r4, #0x10] cmp r1, r0 bhs _0221F14E add r0, r1, #1 strb r0, [r4, #0xc] _0221F14E: ldrb r1, [r4, #0xd] ldrb r0, [r4, #0x11] cmp r1, r0 bls _0221F15A sub r0, r1, #1 strb r0, [r4, #0xd] _0221F15A: ldrb r0, [r4, #0xd] ldrb r1, [r4, #0xc] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221F220 ; =0x04000052 strh r1, [r0] b _0221F20E _0221F168: ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] cmp r0, #4 blt _0221F20E ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] b _0221F20E _0221F17A: add r0, r4, #0 add r0, #0x9c bl MOD08_02218224 cmp r0, #0 bne _0221F18E ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] b _0221F20E _0221F18E: add r0, r4, #0 add r0, #0x9c add r1, sp, #0x10 add r2, sp, #0xc bl MOD08_0221825C ldr r0, [r4, #0x40] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] bl FUN_0200C884 mov r0, #0x16 add r2, r4, #0 add r2, #0xb0 ldrsh r0, [r4, r0] ldr r2, [r2] mov r1, #0x10 bl MOD08_0221828C mov r2, #0x16 add r3, r0, #0 ldrsh r2, [r4, r2] mov r1, #0x14 ldrsh r1, [r4, r1] add r2, r2, r3 lsl r2, r2, #0x10 ldr r0, [r4, #0x40] asr r2, r2, #0x10 bl FUN_0200C714 ldrb r1, [r4, #0xc] ldrb r0, [r4, #0xe] cmp r1, r0 bls _0221F1D6 sub r0, r1, #1 strb r0, [r4, #0xc] _0221F1D6: ldrb r1, [r4, #0xd] ldrb r0, [r4, #0xf] cmp r1, r0 bhs _0221F1E2 add r0, r1, #1 strb r0, [r4, #0xd] _0221F1E2: ldrb r0, [r4, #0xd] ldrb r1, [r4, #0xc] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221F220 ; =0x04000052 strh r1, [r0] b _0221F20E _0221F1F0: ldr r0, [r4, #0x44] bl FUN_0200C3DC ldr r0, [r4, #0x48] bl FUN_0200C3DC ldr r0, [r4, #0x1c] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl MOD08_02228094 add sp, #0x1c pop {r4, r5, pc} _0221F20E: ldr r0, [r4, #0x40] bl FUN_0200C5A8 ldr r0, [r4, #0x28] bl FUN_0200BC1C add sp, #0x1c pop {r4, r5, pc} nop _0221F220: .word 0x04000052 thumb_func_start MOD08_0221F224 MOD08_0221F224: ; 0x0221F224 push {r4, r5, lr} sub sp, #0x14 mov r1, #0xd4 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r5, #0 add r1, #0x18 bl MOD08_02227B70 add r0, r5, #0 mov r1, #0 bl MOD08_022124B0 str r0, [r4, #0x44] add r0, r5, #0 mov r1, #1 bl MOD08_022124B0 mov r1, #0 str r0, [r4, #0x48] mvn r1, r1 ldr r0, [r4, #0x1c] add r2, r1, #0 bl MOD08_02227994 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 mov r1, #0 strb r1, [r4, #0xc] mov r0, #0x1f strb r0, [r4, #0xd] strb r1, [r4, #0xe] strb r0, [r4, #0xf] strb r0, [r4, #0x10] mov r0, #4 strb r0, [r4, #0x11] add r0, r5, #0 bl MOD08_02212004 cmp r0, #1 bne _0221F2B4 ldr r0, [r4, #0x44] mov r1, #0 str r0, [r4, #0x40] ldr r0, [r4, #0x48] bl FUN_0200C644 ldr r0, [r4, #0x40] mov r1, #0 bl FUN_0200C5C0 mov r0, #0xb3 strh r0, [r4, #0x14] mov r0, #0x78 strh r0, [r4, #0x16] add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x40] add r1, r1, #1 bl FUN_0200C6B0 mov r0, #0 mvn r0, r0 strh r0, [r4, #0x12] b _0221F314 _0221F2B4: add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 bne _0221F2E4 ldr r0, [r4, #0x48] mov r1, #0 str r0, [r4, #0x40] ldr r0, [r4, #0x44] bl FUN_0200C644 ldr r0, [r4, #0x40] mov r1, #1 bl FUN_0200C5C0 mov r0, #0x90 strh r0, [r4, #0x14] mov r0, #0x40 strh r0, [r4, #0x16] b _0221F310 _0221F2E4: ldr r0, [r4, #0x44] mov r1, #0 str r0, [r4, #0x40] ldr r0, [r4, #0x48] bl FUN_0200C644 ldr r0, [r4, #0x40] mov r1, #0 bl FUN_0200C5C0 mov r0, #0x4c strh r0, [r4, #0x14] mov r0, #0x78 strh r0, [r4, #0x16] add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x40] add r1, r1, #1 bl FUN_0200C6B0 _0221F310: mov r0, #1 strh r0, [r4, #0x12] _0221F314: mov r1, #0x14 mov r2, #0x16 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x40] bl FUN_0200C714 ldr r0, [r4, #0x40] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x40] mov r1, #1 bl FUN_0200C90C mov r0, #0x12 ldrsh r0, [r4, r0] mov r3, #0x64 add r1, r0, #0 mov r0, #5 str r0, [sp] mul r1, r3 lsl r1, r1, #0x10 asr r1, r1, #0x10 str r3, [sp, #4] mov r0, #1 str r0, [sp, #8] add r0, r4, #0 add r0, #0x9c add r2, r1, #0 bl MOD08_022181A8 add r0, r4, #0 add r0, #0x9c bl MOD08_02218224 add r0, r4, #0 add r0, #0x9c add r1, sp, #0x10 add r2, sp, #0xc bl MOD08_0221825C ldr r0, [r4, #0x40] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] bl FUN_0200C884 mov r0, #0x16 add r2, r4, #0 add r2, #0xb0 ldrsh r0, [r4, r0] ldr r2, [r2] mov r1, #0x10 bl MOD08_0221828C mov r2, #0x16 add r3, r0, #0 ldrsh r2, [r4, r2] mov r1, #0x14 ldrsh r1, [r4, r1] add r2, r2, r3 lsl r2, r2, #0x10 ldr r0, [r4, #0x40] asr r2, r2, #0x10 bl FUN_0200C714 ldr r0, [r4, #0x1c] ldr r1, _0221F3A8 ; =MOD08_0221F074 add r2, r4, #0 bl MOD08_02212400 add sp, #0x14 pop {r4, r5, pc} nop _0221F3A8: .word MOD08_0221F074 thumb_func_start MOD08_0221F3AC MOD08_0221F3AC: ; 0x0221F3AC push {r4, r5, r6, r7, lr} sub sp, #0x3c add r4, r1, #0 str r0, [sp, #0x10] ldrb r0, [r4] cmp r0, #8 bls _0221F3BC b _0221F710 _0221F3BC: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221F3C8: ; jump table .short _0221F3DA - _0221F3C8 - 2 ; case 0 .short _0221F412 - _0221F3C8 - 2 ; case 1 .short _0221F46C - _0221F3C8 - 2 ; case 2 .short _0221F486 - _0221F3C8 - 2 ; case 3 .short _0221F4BA - _0221F3C8 - 2 ; case 4 .short _0221F53E - _0221F3C8 - 2 ; case 5 .short _0221F5D0 - _0221F3C8 - 2 ; case 6 .short _0221F66E - _0221F3C8 - 2 ; case 7 .short _0221F6B6 - _0221F3C8 - 2 ; case 8 _0221F3DA: ldrb r1, [r4, #0xc] ldr r2, _0221F6F4 ; =0x0222C569 ldr r5, _0221F6F8 ; =0x0222C56A lsl r0, r1, #2 add r3, r1, r0 ldr r0, _0221F6FC ; =0x0222C56B ldr r1, _0221F700 ; =0x0222C568 ldrb r0, [r0, r3] ldrb r1, [r1, r3] ldrb r2, [r2, r3] str r0, [sp] mov r0, #0x64 str r0, [sp, #4] ldr r0, _0221F704 ; =0x0222C56C ldrb r0, [r0, r3] ldrb r3, [r5, r3] str r0, [sp, #8] add r0, r4, #0 add r0, #0xcc bl MOD08_022181A8 ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F412: add r0, r4, #0 add r0, #0xcc bl MOD08_02218224 cmp r0, #1 bne _0221F458 mov r2, #0xcc ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xc bl FUN_02007558 mov r2, #0xce ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #0xd bl FUN_02007558 mov r0, #0x20 add r2, r4, #0 add r2, #0xe0 ldrsh r0, [r4, r0] ldr r1, [r4, #0x24] ldr r2, [r2] bl MOD08_0221828C mov r2, #0x20 add r3, r0, #0 ldrsh r2, [r4, r2] ldr r0, [r4, #0x1c] mov r1, #1 add r2, r2, r3 bl FUN_02007558 b _0221F74A _0221F458: ldrb r0, [r4, #0xc] cmp r0, #3 ldrb r0, [r4] blo _0221F466 add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F466: sub r0, r0, #1 strb r0, [r4] b _0221F74A _0221F46C: ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4, #1] cmp r0, #0xf blo _0221F54A mov r0, #0 strb r0, [r4, #1] strb r0, [r4, #0xc] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F486: add r1, sp, #0x2c ldr r0, [r4, #0x30] add r1, #2 add r2, sp, #0x2c bl FUN_0200C7A0 add r1, sp, #0x14 mov r0, #0x18 ldrsh r0, [r1, r0] cmp r0, #0x68 bgt _0221F4B2 ldr r0, [r4, #0x30] mov r1, #0 mov r2, #2 bl FUN_0200C82C ldr r0, [r4, #0x7c] mov r1, #0 mov r2, #2 bl FUN_0200C82C b _0221F74A _0221F4B2: ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F4BA: add r1, sp, #0x28 ldr r0, [r4, #0x30] add r1, #2 add r2, sp, #0x28 bl FUN_0200C7A0 add r1, sp, #0x14 mov r0, #0x14 ldrsh r0, [r1, r0] cmp r0, #0x68 bgt _0221F4E6 ldr r0, [r4, #0x30] mov r1, #0 mov r2, #2 bl FUN_0200C82C ldr r0, [r4, #0x7c] mov r1, #0 mov r2, #2 bl FUN_0200C82C b _0221F4F2 _0221F4E6: ldr r0, _0221F708 ; =0x04000052 mov r1, #0x10 strh r1, [r0] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221F4F2: ldrb r0, [r4, #1] mov r1, #0x10 add r2, r1, #0 add r0, r0, #1 strb r0, [r4, #1] add r0, r4, #4 bl MOD08_02218A58 mov r1, #0 add r0, r4, #0 add r2, r1, #0 add r0, #8 sub r2, #0x10 bl MOD08_02218A58 ldr r0, [r4, #8] ldr r1, [r4, #4] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221F708 ; =0x04000052 strh r1, [r0] ldrb r0, [r4, #1] cmp r0, #0xa bne _0221F52C ldr r0, [r4, #0x30] mov r1, #0 mov r2, #0x10 bl FUN_0200C82C _0221F52C: ldrb r0, [r4, #1] cmp r0, #0xc bne _0221F54A ldr r0, [r4, #0x7c] mov r1, #0 mov r2, #0x10 bl FUN_0200C82C b _0221F74A _0221F53E: ldrb r0, [r4, #1] add r0, r0, #1 strb r0, [r4, #1] ldrb r0, [r4, #1] cmp r0, #0xf bhs _0221F54C _0221F54A: b _0221F74A _0221F54C: mov r0, #0 strb r0, [r4, #1] add r1, sp, #0x24 ldr r0, [r4, #0x30] add r1, #2 add r2, sp, #0x24 bl FUN_0200C7A0 add r1, sp, #0x20 ldr r0, [r4, #0x7c] add r1, #2 add r2, sp, #0x20 bl FUN_0200C7A0 add r0, r4, #0 add r0, #0xc8 str r0, [sp] add r0, r4, #0 add r0, #0xca str r0, [sp, #4] add r3, sp, #0x14 mov r0, #0x12 mov r1, #0x10 mov r2, #0xe mov r5, #0xc ldrsh r0, [r3, r0] ldrsh r1, [r3, r1] ldrsh r2, [r3, r2] ldrsh r3, [r3, r5] bl MOD08_022189D8 add r0, r4, #0 add r0, #0x2c str r0, [sp] mov r3, #0xca add r2, sp, #0x14 mov r0, #0x12 mov r1, #0x10 ldrsh r0, [r2, r0] ldrsh r1, [r2, r1] mov r2, #0xc8 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] bl MOD08_022189F4 add r0, r4, #0 add r0, #0x28 str r0, [sp] mov r3, #0xca add r2, sp, #0x14 mov r0, #0x12 mov r1, #0x10 ldrsh r0, [r2, r0] ldrsh r1, [r2, r1] mov r2, #0xc8 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] bl MOD08_02218A1C mov r0, #0xa lsl r0, r0, #0xe str r0, [r4, #0x2c] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F5D0: ldr r3, _0221F70C ; =0x0222C545 add r2, sp, #0x30 mov r1, #0xa _0221F5D6: ldrb r0, [r3] add r3, r3, #1 strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _0221F5D6 add r1, sp, #0x1c ldr r0, [r4, #0x30] add r1, #2 add r2, sp, #0x1c bl FUN_0200C7A0 add r1, sp, #0x18 ldr r0, [r4, #0x7c] add r1, #2 add r2, sp, #0x18 bl FUN_0200C7A0 add r3, sp, #0x14 mov r0, #8 ldrsh r0, [r3, r0] mov r2, #0xa str r0, [sp] mov r0, #4 ldrsh r0, [r3, r0] str r0, [sp, #4] str r2, [sp, #8] ldrb r1, [r4, #0xc] ldr r0, [r4, #0x2c] lsl r5, r1, #1 add r1, sp, #0x30 ldrsb r1, [r1, r5] mov r5, #6 mul r1, r0 str r1, [sp, #0xc] ldrsh r2, [r3, r2] add r0, r4, #0 add r1, r4, #0 ldrsh r3, [r3, r5] add r0, #0x34 add r1, #0x58 bl MOD08_02217F50 add r3, sp, #0x14 mov r0, #4 ldrsh r0, [r3, r0] mov r5, #0xa str r0, [sp] mov r0, #8 ldrsh r0, [r3, r0] str r0, [sp, #4] str r5, [sp, #8] ldrb r1, [r4, #0xc] ldr r0, [r4, #0x2c] lsl r2, r1, #1 add r1, sp, #0x30 add r1, #1 ldrsb r1, [r1, r2] mov r2, #6 mul r1, r0 str r1, [sp, #0xc] ldrsh r2, [r3, r2] add r0, r4, #0 add r1, r4, #0 ldrsh r3, [r3, r5] add r0, #0x80 add r1, #0xa4 bl MOD08_02217F50 ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F66E: add r0, r4, #0 ldr r2, [r4, #0x30] add r0, #0x34 add r1, #0x58 mov r5, #0 bl MOD08_02217FE4 cmp r0, #0 bne _0221F686 add r0, r5, #1 lsl r0, r0, #0x18 lsr r5, r0, #0x18 _0221F686: add r0, r4, #0 add r1, r4, #0 ldr r2, [r4, #0x7c] add r0, #0x80 add r1, #0xa4 bl MOD08_02217FE4 cmp r0, #0 bne _0221F69E add r0, r5, #1 lsl r0, r0, #0x18 lsr r5, r0, #0x18 _0221F69E: cmp r5, #2 bne _0221F74A ldrb r0, [r4, #0xc] cmp r0, #5 ldrb r0, [r4] bne _0221F6B0 add r0, r0, #1 strb r0, [r4] b _0221F74A _0221F6B0: sub r0, r0, #1 strb r0, [r4] b _0221F74A _0221F6B6: mov r5, #0 add r0, r4, #4 add r1, r5, #0 sub r2, r5, #2 bl MOD08_02218A58 cmp r0, #1 bne _0221F6C8 add r5, r5, #1 _0221F6C8: add r0, r4, #0 add r0, #8 mov r1, #0x10 mov r2, #2 bl MOD08_02218A58 cmp r0, #1 bne _0221F6DA add r5, r5, #1 _0221F6DA: ldr r0, [r4, #8] ldr r1, [r4, #4] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221F708 ; =0x04000052 cmp r5, #2 strh r1, [r0] bne _0221F74A ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221F74A nop _0221F6F4: .word 0x0222C569 _0221F6F8: .word 0x0222C56A _0221F6FC: .word 0x0222C56B _0221F700: .word 0x0222C568 _0221F704: .word 0x0222C56C _0221F708: .word 0x04000052 _0221F70C: .word 0x0222C545 _0221F710: mov r6, #0 ldr r0, [r4, #0x10] add r1, r6, #0 bl MOD08_02212498 cmp r0, #0 ble _0221F738 add r5, r4, #0 add r7, r6, #0 _0221F722: ldr r0, [r5, #0x30] bl FUN_0200C3DC ldr r0, [r4, #0x10] add r1, r7, #0 add r5, #0x4c add r6, r6, #1 bl MOD08_02212498 cmp r6, r0 blt _0221F722 _0221F738: ldr r0, [r4, #0x10] ldr r1, [sp, #0x10] bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x3c pop {r4, r5, r6, r7, pc} _0221F74A: mov r6, #0 ldr r0, [r4, #0x10] add r1, r6, #0 bl MOD08_02212498 cmp r0, #0 ble _0221F7B6 add r5, r4, #0 add r7, sp, #0x14 _0221F75C: add r1, sp, #0x14 ldr r0, [r5, #0x30] add r1, #2 add r2, sp, #0x14 bl FUN_0200C7A0 mov r0, #0 ldrsh r0, [r7, r0] cmp r0, #0x50 bge _0221F780 ldr r0, [r4, #0x10] bl MOD08_02215574 add r1, r0, #0 ldr r0, [r5, #0x30] bl FUN_0200C6B0 b _0221F7A6 _0221F780: mov r0, #2 ldrsh r0, [r7, r0] cmp r0, #0x80 ldr r0, [r4, #0x10] ble _0221F798 bl MOD08_02215574 add r1, r0, #0 ldr r0, [r5, #0x30] bl FUN_0200C6B0 b _0221F7A6 _0221F798: bl MOD08_02215574 add r1, r0, #0 ldr r0, [r5, #0x30] add r1, r1, #1 bl FUN_0200C6B0 _0221F7A6: ldr r0, [r4, #0x10] mov r1, #0 add r5, #0x4c add r6, r6, #1 bl MOD08_02212498 cmp r6, r0 blt _0221F75C _0221F7B6: ldrb r0, [r4] cmp r0, #4 blo _0221F7EA mov r5, #0 ldr r0, [r4, #0x10] add r1, r5, #0 bl MOD08_02212498 cmp r0, #0 ble _0221F7E4 add r6, r4, #0 add r7, r5, #0 _0221F7CE: ldr r0, [r6, #0x30] bl FUN_0200C5A8 ldr r0, [r4, #0x10] add r1, r7, #0 add r6, #0x4c add r5, r5, #1 bl MOD08_02212498 cmp r5, r0 blt _0221F7CE _0221F7E4: ldr r0, [r4, #0x18] bl FUN_0200BC1C _0221F7EA: add sp, #0x3c pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0221F7F0 MOD08_0221F7F0: ; 0x0221F7F0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r5, r1, #0 mov r1, #0xf0 str r0, [sp] add r6, r2, #0 add r7, r3, #0 bl MOD08_02228064 add r4, r0, #0 mov r1, #0 strb r1, [r4] ldr r0, [sp] strb r1, [r4, #1] str r0, [r4, #0x10] str r6, [r4, #0x18] str r5, [r4, #0x14] str r1, [r4, #4] mov r0, #0x10 str r0, [r4, #8] ldr r0, [r4, #0x10] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0x10] bl MOD08_022154D4 str r0, [r4, #0x1c] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x20] ldr r0, [r4, #0x10] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #0x10] bl MOD08_0221552C str r0, [r4, #0x24] ldr r0, [sp] mov r1, #2 bl MOD08_022155C4 add r5, r0, #0 ldr r0, [sp] mov r1, #1 bl MOD08_022155C4 mov r2, #1 add r1, r2, #0 add r3, r0, #0 lsl r1, r5 add r5, r2, #0 lsl r5, r3 orr r1, r5 orr r1, r2 sub r2, r2, #2 ldr r0, [r4, #0x10] add r3, r2, #0 bl MOD08_022279D0 ldr r0, [r4, #8] ldr r1, [r4, #4] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221F92C ; =0x04000052 strh r1, [r0] ldr r1, [sp] add r0, sp, #4 bl MOD08_02215474 str r7, [r4, #0x30] ldr r0, [r4, #0x10] mov r1, #0 mov r6, #1 bl MOD08_02212498 cmp r0, #1 ble _0221F8B2 add r5, r4, #0 add r5, #0x4c add r7, sp, #4 _0221F896: ldr r0, [r4, #0x14] ldr r1, [r4, #0x18] add r2, r7, #0 bl FUN_0200C154 str r0, [r5, #0x30] ldr r0, [r4, #0x10] mov r1, #0 add r5, #0x4c add r6, r6, #1 bl MOD08_02212498 cmp r6, r0 blt _0221F896 _0221F8B2: mov r6, #0 ldr r0, [r4, #0x10] add r1, r6, #0 bl MOD08_02212498 cmp r0, #0 ble _0221F8EC add r5, r4, #0 mov r7, #1 _0221F8C4: ldr r0, [r5, #0x30] add r1, r7, #0 bl FUN_0200C90C ldr r0, [r4, #0x10] bl MOD08_02215574 add r1, r0, #0 ldr r0, [r5, #0x30] add r1, r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x10] mov r1, #0 add r5, #0x4c add r6, r6, #1 bl MOD08_02212498 cmp r6, r0 blt _0221F8C4 _0221F8EC: ldr r0, [sp] bl MOD08_02212004 cmp r0, #1 ldr r0, [r4, #0x30] bne _0221F90C mov r1, #0xa0 mov r2, #0x2c bl FUN_0200C714 ldr r0, [r4, #0x7c] mov r1, #0x50 mov r2, #0x1d bl FUN_0200C714 b _0221F91E _0221F90C: mov r1, #0x64 mov r2, #0x2c bl FUN_0200C714 ldr r0, [r4, #0x7c] mov r1, #0xb4 mov r2, #0x1d bl FUN_0200C714 _0221F91E: ldr r0, [r4, #0x10] ldr r1, _0221F930 ; =MOD08_0221F3AC add r2, r4, #0 bl MOD08_02212400 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221F92C: .word 0x04000052 _0221F930: .word MOD08_0221F3AC thumb_func_start MOD08_0221F934 MOD08_0221F934: ; 0x0221F934 push {r3, r4, r5, r6, r7, lr} add r5, r1, #0 add r7, r0, #0 ldrb r0, [r5] cmp r0, #0 beq _0221F946 cmp r0, #1 beq _0221F9BA b _0221F9EE _0221F946: ldrb r0, [r5, #6] cmp r0, #0xf bhs _0221F950 add r0, r0, #1 strb r0, [r5, #6] _0221F950: ldrb r0, [r5, #7] cmp r0, #0 beq _0221F95A sub r0, r0, #1 strb r0, [r5, #7] _0221F95A: ldrb r0, [r5, #7] ldrb r1, [r5, #6] mov r6, #0 lsl r0, r0, #8 orr r1, r0 ldr r0, _0221FA3C ; =0x04000052 strh r1, [r0] ldrb r0, [r5, #4] add r0, r0, #1 strb r0, [r5, #4] ldrb r0, [r5, #5] cmp r0, #0 ble _0221F9AC ldr r4, _0221FA40 ; =0x0222C5DC add r7, r5, #0 _0221F978: add r1, sp, #0 ldr r0, [r7, #0x14] add r1, #2 add r2, sp, #0 bl FUN_0200C7A0 ldrb r1, [r5, #4] ldrb r0, [r4] cmp r1, r0 blo _0221F9A0 add r0, r5, r6 ldrb r1, [r0, #1] add r1, r1, #1 strb r1, [r0, #1] ldrb r2, [r0, #1] ldrb r1, [r4, #1] cmp r2, r1 blo _0221F9A0 mov r1, #0 strb r1, [r0, #1] _0221F9A0: ldrb r0, [r5, #5] add r6, r6, #1 add r7, r7, #4 add r4, r4, #2 cmp r6, r0 blt _0221F978 _0221F9AC: ldrb r0, [r5, #4] cmp r0, #0x2d blo _0221FA18 ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] b _0221FA18 _0221F9BA: ldrb r0, [r5, #6] cmp r0, #0 beq _0221F9C4 sub r0, r0, #1 strb r0, [r5, #6] _0221F9C4: ldrb r0, [r5, #7] cmp r0, #0xf bhs _0221F9CE add r0, r0, #1 strb r0, [r5, #7] _0221F9CE: ldrb r0, [r5, #6] cmp r0, #0 bne _0221F9E0 ldrb r0, [r5, #7] cmp r0, #0xf bne _0221F9E0 ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] _0221F9E0: ldrb r0, [r5, #7] ldrb r1, [r5, #6] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221FA3C ; =0x04000052 strh r1, [r0] b _0221FA18 _0221F9EE: ldrb r0, [r5, #5] mov r6, #0 cmp r0, #0 ble _0221FA08 add r4, r5, #0 _0221F9F8: ldr r0, [r4, #0x14] bl FUN_0200C3DC ldrb r0, [r5, #5] add r6, r6, #1 add r4, r4, #4 cmp r6, r0 blt _0221F9F8 _0221FA08: ldr r0, [r5, #8] add r1, r7, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _0221FA18: ldrb r0, [r5, #5] mov r6, #0 cmp r0, #0 ble _0221FA34 add r4, r5, #0 _0221FA22: ldr r0, [r4, #0x14] ldr r0, [r0] bl FUN_0200C59C ldrb r0, [r5, #5] add r6, r6, #1 add r4, r4, #4 cmp r6, r0 blt _0221FA22 _0221FA34: ldr r0, [r5, #0x10] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221FA3C: .word 0x04000052 _0221FA40: .word 0x0222C5DC thumb_func_start MOD08_0221FA44 MOD08_0221FA44: ; 0x0221FA44 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r7, r0, #0 add r5, r1, #0 add r6, r2, #0 str r3, [sp] bl MOD08_02212014 mov r1, #0x44 bl FUN_02016998 add r4, r0, #0 bne _0221FA62 bl ErrorHandling _0221FA62: mov r0, #0 strb r0, [r4, #4] strb r0, [r4] str r5, [r4, #0xc] str r6, [r4, #0x10] add r0, sp, #4 add r1, r7, #0 str r7, [r4, #8] bl MOD08_02215474 mov r1, #0 mvn r1, r1 ldr r0, [r4, #8] add r2, r1, #0 bl MOD08_02227994 ldr r0, [r4, #8] mov r1, #0 bl MOD08_02212498 strb r0, [r4, #5] mov r0, #0 strb r0, [r4, #6] mov r0, #0xf strb r0, [r4, #7] ldrb r0, [r4, #7] ldrb r1, [r4, #6] mov r6, #1 lsl r0, r0, #8 orr r1, r0 ldr r0, _0221FBA8 ; =0x04000052 strh r1, [r0] ldr r0, [sp] str r0, [r4, #0x14] ldrb r0, [r4, #5] cmp r0, #1 ble _0221FAC4 add r5, r4, #4 _0221FAAE: ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] add r2, sp, #4 bl FUN_0200C154 str r0, [r5, #0x14] ldrb r0, [r4, #5] add r6, r6, #1 add r5, r5, #4 cmp r6, r0 blt _0221FAAE _0221FAC4: add r0, r7, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r7, #0 bl MOD08_02227470 cmp r0, #3 bne _0221FB18 add r0, r7, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r7, #0 bl MOD08_02227470 cmp r0, #3 bne _0221FB04 add r0, r7, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r7, #0 bl MOD08_02227470 cmp r0, #3 bne _0221FB04 ldr r0, [r4, #0x14] mov r1, #0 bl FUN_0200C5C0 b _0221FB0C _0221FB04: ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C5C0 _0221FB0C: ldr r0, [r4, #0x14] mov r1, #0x80 mov r2, #0x50 bl FUN_0200C714 b _0221FB58 _0221FB18: add r0, r7, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r7, #0 bl MOD08_02227470 cmp r0, #4 bne _0221FB46 add r0, r7, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r7, #0 bl MOD08_02227470 cmp r0, #4 bne _0221FB46 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C5C0 b _0221FB4E _0221FB46: ldr r0, [r4, #0x14] mov r1, #0 bl FUN_0200C5C0 _0221FB4E: ldr r0, [r4, #0x14] mov r1, #0x80 mov r2, #0x50 bl FUN_0200C714 _0221FB58: ldrb r0, [r4, #5] mov r6, #0 cmp r0, #0 ble _0221FB98 add r5, r4, #0 _0221FB62: add r1, r4, r6 mov r0, #0 strb r0, [r1, #1] ldr r0, [r5, #0x14] mov r1, #2 bl FUN_0200C840 ldr r0, [r5, #0x14] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #8] bl MOD08_02212004 cmp r0, #1 bne _0221FB8E mov r2, #0xfe ldr r0, [r5, #0x14] ldr r1, _0221FBAC ; =0xBF800000 lsl r2, r2, #0x16 bl FUN_0200C884 _0221FB8E: ldrb r0, [r4, #5] add r6, r6, #1 add r5, r5, #4 cmp r6, r0 blt _0221FB62 _0221FB98: ldr r1, _0221FBB0 ; =MOD08_0221F934 ldr r3, _0221FBB4 ; =0x0000044C add r0, r7, #0 add r2, r4, #0 bl MOD08_022123E4 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221FBA8: .word 0x04000052 _0221FBAC: .word 0xBF800000 _0221FBB0: .word MOD08_0221F934 _0221FBB4: .word 0x0000044C thumb_func_start MOD08_0221FBB8 MOD08_0221FBB8: ; 0x0221FBB8 push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r1, #0 add r7, r0, #0 ldrb r0, [r4] mov r6, #0 cmp r0, #3 bls _0221FBCA b _0221FD70 _0221FBCA: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221FBD6: ; jump table .short _0221FBDE - _0221FBD6 - 2 ; case 0 .short _0221FC12 - _0221FBD6 - 2 ; case 1 .short _0221FCEA - _0221FBD6 - 2 ; case 2 .short _0221FD36 - _0221FBD6 - 2 ; case 3 _0221FBDE: ldrb r0, [r4, #9] cmp r0, #0xf bhs _0221FBE8 add r0, r0, #1 strb r0, [r4, #9] _0221FBE8: ldrb r0, [r4, #0xa] cmp r0, #0 beq _0221FBF2 sub r0, r0, #1 strb r0, [r4, #0xa] _0221FBF2: ldrb r0, [r4, #9] cmp r0, #0xf bne _0221FC04 ldrb r0, [r4, #0xa] cmp r0, #0 bne _0221FC04 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221FC04: ldrb r0, [r4, #0xa] ldrb r1, [r4, #9] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221FDCC ; =0x04000052 strh r1, [r0] b _0221FD9C _0221FC12: ldr r0, [r4, #0x30] cmp r0, #3 bhi _0221FC78 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221FC24: ; jump table .short _0221FC2C - _0221FC24 - 2 ; case 0 .short _0221FC46 - _0221FC24 - 2 ; case 1 .short _0221FC60 - _0221FC24 - 2 ; case 2 .short _0221FC60 - _0221FC24 - 2 ; case 3 _0221FC2C: ldr r0, [r4, #0x18] mov r1, #1 str r0, [r4, #0x34] ldr r0, [r4, #0x24] str r0, [r4, #0x38] ldr r0, [r4, #0x34] bl FUN_0200C644 ldr r0, [r4, #0x38] mov r1, #1 bl FUN_0200C644 b _0221FC78 _0221FC46: ldr r0, [r4, #0x1c] mov r1, #1 str r0, [r4, #0x34] ldr r0, [r4, #0x20] str r0, [r4, #0x38] ldr r0, [r4, #0x34] bl FUN_0200C644 ldr r0, [r4, #0x38] mov r1, #1 bl FUN_0200C644 b _0221FC78 _0221FC60: ldr r0, [r4, #0x28] mov r1, #1 str r0, [r4, #0x34] ldr r0, [r4, #0x2c] str r0, [r4, #0x38] ldr r0, [r4, #0x34] bl FUN_0200C644 ldr r0, [r4, #0x38] mov r1, #1 bl FUN_0200C644 _0221FC78: add r1, sp, #8 ldr r0, [r4, #0x34] add r1, #2 add r2, sp, #8 bl FUN_0200C7A0 ldr r1, [r4, #0x30] ldr r0, _0221FDD0 ; =0x0222C614 lsl r2, r1, #3 ldrsh r0, [r0, r2] ldr r5, _0221FDD4 ; =0x0222C612 add r3, sp, #8 str r0, [sp] ldr r0, _0221FDD8 ; =0x0222C5D8 ldrsh r2, [r5, r2] ldrb r0, [r0, r1] mov r1, #2 mov r5, #0 str r0, [sp, #4] ldrsh r1, [r3, r1] add r0, r4, #0 ldrsh r3, [r3, r5] add r0, #0x3c bl MOD08_02217E80 add r1, sp, #8 ldr r0, [r4, #0x38] add r1, #2 add r2, sp, #8 bl FUN_0200C7A0 ldr r1, [r4, #0x30] ldr r0, _0221FDDC ; =0x0222C618 lsl r2, r1, #3 ldrsh r0, [r0, r2] ldr r5, _0221FDE0 ; =0x0222C616 add r3, sp, #8 str r0, [sp] ldr r0, _0221FDD8 ; =0x0222C5D8 ldrsh r2, [r5, r2] ldrb r0, [r0, r1] mov r1, #2 mov r5, #0 str r0, [sp, #4] ldrsh r1, [r3, r1] add r0, r4, #0 ldrsh r3, [r3, r5] add r0, #0x60 bl MOD08_02217E80 ldr r0, [r4, #0x30] add r0, r0, #1 str r0, [r4, #0x30] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221FD9C _0221FCEA: add r0, r4, #0 ldr r1, [r4, #0x34] add r0, #0x3c add r5, r6, #0 bl MOD08_02217F08 cmp r0, #0 bne _0221FCFC add r5, r5, #1 _0221FCFC: add r0, r4, #0 ldr r1, [r4, #0x38] add r0, #0x60 bl MOD08_02217F08 cmp r0, #0 bne _0221FD0C add r5, r5, #1 _0221FD0C: cmp r5, #2 blt _0221FD9C ldr r0, [r4, #0x30] cmp r0, #3 bgt _0221FD2E ldr r0, [r4, #0x34] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x38] mov r1, #0 bl FUN_0200C644 ldrb r0, [r4] sub r0, r0, #1 strb r0, [r4] b _0221FD9C _0221FD2E: ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0221FD9C _0221FD36: ldrb r0, [r4, #9] cmp r0, #0 beq _0221FD40 sub r0, r0, #1 strb r0, [r4, #9] _0221FD40: ldrb r0, [r4, #0xa] cmp r0, #0xf bhs _0221FD4A add r0, r0, #1 strb r0, [r4, #0xa] _0221FD4A: ldrb r1, [r4, #0xa] cmp r1, #7 blo _0221FD52 mov r6, #1 _0221FD52: ldrb r0, [r4, #9] cmp r0, #0 bne _0221FD62 cmp r1, #0xf bne _0221FD62 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _0221FD62: ldrb r0, [r4, #0xa] ldrb r1, [r4, #9] lsl r0, r0, #8 orr r1, r0 ldr r0, _0221FDCC ; =0x04000052 strh r1, [r0] b _0221FD9C _0221FD70: ldrb r0, [r4, #8] mov r6, #0 cmp r0, #0 ble _0221FD8A add r5, r4, #0 _0221FD7A: ldr r0, [r5, #0x18] bl FUN_0200C3DC ldrb r0, [r4, #8] add r6, r6, #1 add r5, r5, #4 cmp r6, r0 blt _0221FD7A _0221FD8A: ldr r0, [r4, #0xc] add r1, r7, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r4, r5, r6, r7, pc} _0221FD9C: ldrb r0, [r4] cmp r0, #3 bhs _0221FDC2 cmp r6, #0 bne _0221FDC2 ldrb r0, [r4, #8] mov r6, #0 cmp r0, #0 ble _0221FDC2 add r5, r4, #0 _0221FDB0: ldr r0, [r5, #0x18] ldr r0, [r0] bl FUN_0200C59C ldrb r0, [r4, #8] add r6, r6, #1 add r5, r5, #4 cmp r6, r0 blt _0221FDB0 _0221FDC2: ldr r0, [r4, #0x14] bl FUN_0200BC1C add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _0221FDCC: .word 0x04000052 _0221FDD0: .word 0x0222C614 _0221FDD4: .word 0x0222C612 _0221FDD8: .word 0x0222C5D8 _0221FDDC: .word 0x0222C618 _0221FDE0: .word 0x0222C616 thumb_func_start MOD08_0221FDE4 MOD08_0221FDE4: ; 0x0221FDE4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 str r0, [sp] add r5, r1, #0 add r6, r2, #0 add r7, r3, #0 bl MOD08_02212014 mov r1, #0x84 bl FUN_02016998 add r4, r0, #0 bne _0221FE02 bl ErrorHandling _0221FE02: mov r0, #0 strb r0, [r4, #7] strb r0, [r4] str r5, [r4, #0x10] str r6, [r4, #0x14] str r0, [r4, #0x30] ldr r0, [sp] ldr r1, [sp] str r0, [r4, #0xc] add r0, sp, #4 bl MOD08_02215474 mov r1, #0 mvn r1, r1 ldr r0, [r4, #0xc] add r2, r1, #0 bl MOD08_02227994 mov r1, #0 strb r1, [r4, #9] mov r0, #0xf strb r0, [r4, #0xa] ldrb r0, [r4, #0xa] ldrb r2, [r4, #9] lsl r0, r0, #8 orr r2, r0 ldr r0, _0221FF0C ; =0x04000052 strh r2, [r0] ldr r0, [r4, #0xc] bl MOD08_02212498 strb r0, [r4, #8] str r7, [r4, #0x18] ldrb r0, [r4, #8] mov r6, #1 cmp r0, #1 ble _0221FE66 add r5, r4, #4 add r7, sp, #4 _0221FE50: ldr r0, [r4, #0x10] ldr r1, [r4, #0x14] add r2, r7, #0 bl FUN_0200C154 str r0, [r5, #0x18] ldrb r0, [r4, #8] add r6, r6, #1 add r5, r5, #4 cmp r6, r0 blt _0221FE50 _0221FE66: ldr r0, [r4, #0x18] mov r1, #0 bl FUN_0200C5C0 ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_0200C5C0 ldr r0, [r4, #0x20] mov r1, #1 bl FUN_0200C5C0 ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200C5C0 ldr r0, [r4, #0x28] mov r1, #2 bl FUN_0200C5C0 ldr r0, [r4, #0x2c] mov r1, #3 bl FUN_0200C5C0 ldr r0, [r4, #0x18] mov r1, #1 bl FUN_0200C8D0 ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200C8D0 ldrb r0, [r4, #8] mov r7, #0 cmp r0, #0 ble _0221FEDC ldr r6, _0221FF10 ; =0x0222C5FA add r5, r4, #0 _0221FEB2: ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C5E0 mov r1, #0 mov r2, #2 ldrsh r1, [r6, r1] ldrsh r2, [r6, r2] ldr r0, [r5, #0x18] bl FUN_0200C714 ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C90C ldrb r0, [r4, #8] add r7, r7, #1 add r5, r5, #4 add r6, r6, #4 cmp r7, r0 blt _0221FEB2 _0221FEDC: ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x20] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x28] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x2c] mov r1, #0 bl FUN_0200C644 ldr r0, [sp] ldr r1, _0221FF14 ; =MOD08_0221FBB8 ldr r3, _0221FF18 ; =0x0000044C add r2, r4, #0 bl MOD08_022123E4 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0221FF0C: .word 0x04000052 _0221FF10: .word 0x0222C5FA _0221FF14: .word MOD08_0221FBB8 _0221FF18: .word 0x0000044C thumb_func_start MOD08_0221FF1C MOD08_0221FF1C: ; 0x0221FF1C push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4, #0xc] cmp r0, #7 bls _0221FF2C b _02220084 _0221FF2C: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0221FF38: ; jump table .short _0221FF48 - _0221FF38 - 2 ; case 0 .short _0221FF5C - _0221FF38 - 2 ; case 1 .short _0221FF7E - _0221FF38 - 2 ; case 2 .short _0221FFAC - _0221FF38 - 2 ; case 3 .short _0221FFDA - _0221FF38 - 2 ; case 4 .short _0221FFF8 - _0221FF38 - 2 ; case 5 .short _02220020 - _0221FF38 - 2 ; case 6 .short _02220068 - _0221FF38 - 2 ; case 7 _0221FF48: ldrb r0, [r4, #0xe] sub r0, r0, #1 strb r0, [r4, #0xe] ldrb r0, [r4, #0xe] cmp r0, #0xa bhi _0221FF68 ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _0221FF5C: ldrb r0, [r4, #0xd] add r0, r0, #1 strb r0, [r4, #0xd] ldrb r0, [r4, #0xd] cmp r0, #3 bhs _0221FF6A _0221FF68: b _02220092 _0221FF6A: ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C644 mov r0, #0 strb r0, [r4, #0xd] ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _0221FF7E: ldrb r0, [r4, #0xd] add r0, r0, #1 strb r0, [r4, #0xd] ldrb r0, [r4, #0xd] cmp r0, #3 bhi _0221FFA0 ldr r0, [r4, #0x38] ldr r1, _0222009C ; =0x3DCCCCCD bl _fadd str r0, [r4, #0x38] ldr r1, [r4, #0x38] ldr r0, [r4, #0x10] add r2, r1, #0 bl FUN_0200C884 b _02220092 _0221FFA0: mov r0, #0 strb r0, [r4, #0xd] ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _0221FFAC: ldrb r0, [r4, #0xd] add r0, r0, #1 strb r0, [r4, #0xd] ldrb r0, [r4, #0xd] cmp r0, #3 bhi _0221FFCE ldr r0, [r4, #0x38] ldr r1, _0222009C ; =0x3DCCCCCD bl _fsub str r0, [r4, #0x38] ldr r1, [r4, #0x38] ldr r0, [r4, #0x10] add r2, r1, #0 bl FUN_0200C884 b _02220092 _0221FFCE: mov r0, #0 strb r0, [r4, #0xd] ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _0221FFDA: ldrb r0, [r4, #0xe] sub r0, r0, #1 strb r0, [r4, #0xe] ldrb r0, [r4, #0xe] cmp r0, #0xa bhi _02220092 ldr r0, [r4, #0x3c] mov r1, #1 str r1, [r0] mov r0, #0 strb r0, [r4, #0xd] ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _0221FFF8: ldrb r0, [r4, #0xd] add r0, r0, #1 strb r0, [r4, #0xd] ldrb r0, [r4, #0xd] cmp r0, #0x1e bls _02220010 mov r0, #0 strb r0, [r4, #0xd] ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _02220010: ldr r0, [r4, #0x3c] ldr r0, [r0] cmp r0, #2 bne _02220092 ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _02220020: bl FUN_0201B9EC mov r1, #0xa bl _s32_div_f add r5, r1, #0 add r2, sp, #8 ldr r0, [r4, #0x10] add r1, sp, #8 add r2, #2 add r5, #0xa bl FUN_0200C7A0 ldrb r0, [r4, #0xf] add r3, sp, #8 mov r1, #0 lsl r2, r0, #2 ldr r0, _022200A0 ; =0x0222C5E4 ldrsh r0, [r0, r2] str r0, [sp] lsl r0, r5, #0x10 ldr r5, _022200A4 ; =0x0222C5E2 lsr r0, r0, #0x10 str r0, [sp, #4] ldrsh r2, [r5, r2] add r0, r4, #0 mov r5, #2 ldrsh r1, [r3, r1] ldrsh r3, [r3, r5] add r0, #0x14 bl MOD08_02217E80 ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] b _02220092 _02220068: add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x14 bl MOD08_02217F08 cmp r0, #0 bne _02220092 ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200C644 ldrb r0, [r4, #0xc] add r0, r0, #1 strb r0, [r4, #0xc] _02220084: ldr r0, [r4, #0x3c] mov r1, #3 str r1, [r0] ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _02220092: ldr r0, [r4, #0x10] bl FUN_0200C5A8 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _0222009C: .word 0x3DCCCCCD _022200A0: .word 0x0222C5E4 _022200A4: .word 0x0222C5E2 thumb_func_start MOD08_022200A8 MOD08_022200A8: ; 0x022200A8 push {r4, r5, r6, lr} add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #3 bhi _02220164 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022200C0: ; jump table .short _022200C8 - _022200C0 - 2 ; case 0 .short _022200F4 - _022200C0 - 2 ; case 1 .short _02220116 - _022200C0 - 2 ; case 2 .short _02220142 - _022200C0 - 2 ; case 3 _022200C8: ldrb r6, [r4, #2] mov r3, #1 mov r2, #0 cmp r6, #0 ble _022200E8 ldr r0, _0222017C ; =0x00000514 add r5, r4, #0 _022200D6: ldr r1, [r5, r0] cmp r1, #1 beq _022200E0 mov r3, #0 b _022200E8 _022200E0: add r2, r2, #1 add r5, r5, #4 cmp r2, r6 blt _022200D6 _022200E8: cmp r3, #1 bne _02220174 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _02220174 _022200F4: ldrb r0, [r4, #2] mov r5, #0 cmp r0, #0 ble _0222010E ldr r0, _0222017C ; =0x00000514 add r3, r4, #0 mov r2, #2 _02220102: str r2, [r3, r0] ldrb r1, [r4, #2] add r5, r5, #1 add r3, r3, #4 cmp r5, r1 blt _02220102 _0222010E: ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _02220174 _02220116: ldrb r5, [r4, #2] mov r2, #1 mov r6, #0 cmp r5, #0 ble _02220136 ldr r0, _0222017C ; =0x00000514 add r3, r4, #0 _02220124: ldr r1, [r3, r0] cmp r1, #3 beq _0222012E mov r2, #0 b _02220136 _0222012E: add r6, r6, #1 add r3, r3, #4 cmp r6, r5 blt _02220124 _02220136: cmp r2, #1 bne _02220174 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _02220174 _02220142: ldrb r0, [r4, #2] mov r6, #0 cmp r0, #0 ble _0222015C add r5, r4, #0 _0222014C: ldr r0, [r5, #0x24] bl FUN_0200C3DC ldrb r0, [r4, #2] add r6, r6, #1 add r5, #0x40 cmp r6, r0 blt _0222014C _0222015C: ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _02220174 _02220164: ldr r0, [r4, #8] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} _02220174: ldr r0, [r4, #0x10] bl FUN_0200BC1C pop {r4, r5, r6, pc} .align 2, 0 _0222017C: .word 0x00000514 thumb_func_start MOD08_02220180 MOD08_02220180: ; 0x02220180 push {r3, r4, r5, r6, r7, lr} sub sp, #0x50 str r0, [sp] add r5, r1, #0 add r6, r2, #0 add r7, r3, #0 bl MOD08_02212014 ldr r1, _022202E8 ; =0x00000564 bl FUN_02016998 add r4, r0, #0 bne _0222019E bl ErrorHandling _0222019E: mov r0, #0 strb r0, [r4, #1] strb r0, [r4] str r5, [r4, #0xc] ldr r0, [sp] str r6, [r4, #0x10] str r0, [r4, #8] ldr r1, [sp] add r0, sp, #0x1c bl MOD08_02215474 mov r1, #0 mvn r1, r1 ldr r0, [r4, #8] add r2, r1, #0 bl MOD08_02227994 ldr r0, [r4, #8] mov r1, #0 bl MOD08_02212498 strb r0, [r4, #2] mov r0, #0xc strb r0, [r4, #2] mov r0, #0 str r7, [r4, #0x24] str r0, [sp, #4] str r0, [sp, #0x14] ldrb r0, [r4, #2] cmp r0, #0 ble _022202D8 ldr r0, _022202EC ; =0x00000514 add r5, r4, #0 add r0, r4, r0 str r0, [sp, #0xc] add r0, r4, #0 str r0, [sp, #8] add r0, #0x14 str r0, [sp, #8] _022201EC: ldr r0, [sp, #0x14] cmp r0, #0 beq _022201FE ldr r0, [r4, #0xc] ldr r1, [r4, #0x10] add r2, sp, #0x1c bl FUN_0200C154 str r0, [r5, #0x24] _022201FE: add r1, r5, #0 ldr r6, [r5, #0x24] add r1, #0x20 mov r0, #0 strb r0, [r1] add r1, r5, #0 add r1, #0x21 strb r0, [r1] bl FUN_0201B9EC mov r1, #0xa bl _s32_div_f ldr r0, [sp, #0x14] add r1, #0xa add r1, r0, r1 add r0, r5, #0 add r0, #0x22 strb r1, [r0] bl FUN_0201B9EC mov r1, #6 bl _s32_div_f add r0, r5, #0 add r0, #0x23 strb r1, [r0] mov r0, #0xfe lsl r0, r0, #0x16 str r0, [r5, #0x4c] ldr r0, [r4, #8] ldr r1, _022202F0 ; =0x0222C632 str r0, [r5, #0x14] ldr r0, [r4, #0xc] str r0, [r5, #0x18] ldr r0, [r4, #0x10] str r0, [r5, #0x1c] ldr r0, [sp, #0xc] str r0, [r5, #0x50] ldr r0, [sp, #4] lsl r0, r0, #3 str r0, [sp, #0x18] add r7, r1, r0 bl FUN_0201B9EC mov r1, #6 ldrsh r1, [r7, r1] bl _s32_div_f mov r0, #2 ldrsh r0, [r7, r0] add r0, r0, r1 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #0x10] bl FUN_0201B9EC mov r1, #4 ldrsh r1, [r7, r1] bl _s32_div_f ldr r2, _022202F0 ; =0x0222C632 ldr r0, [sp, #0x18] ldrsh r0, [r2, r0] add r0, r0, r1 lsl r0, r0, #0x10 asr r2, r0, #0x10 ldr r1, [sp, #0x10] add r0, r6, #0 bl FUN_0200C714 add r0, r6, #0 mov r1, #2 bl FUN_0200C840 ldr r1, [r5, #0x4c] add r0, r6, #0 add r2, r1, #0 bl FUN_0200C884 add r0, r6, #0 mov r1, #0 bl FUN_0200C644 ldr r0, [sp] ldr r1, _022202F4 ; =MOD08_0221FF1C ldr r2, [sp, #8] ldr r3, _022202F8 ; =0x0000044B bl MOD08_022123E4 ldr r0, [sp, #4] mov r1, #6 add r0, r0, #1 bl _s32_div_f ldr r0, [sp, #0xc] str r1, [sp, #4] add r0, r0, #4 str r0, [sp, #0xc] ldr r0, [sp, #8] ldrb r1, [r4, #2] add r0, #0x40 str r0, [sp, #8] ldr r0, [sp, #0x14] add r5, #0x40 add r0, r0, #1 str r0, [sp, #0x14] cmp r0, r1 blt _022201EC _022202D8: ldr r0, [sp] ldr r1, _022202FC ; =MOD08_022200A8 ldr r3, _02220300 ; =0x0000044D add r2, r4, #0 bl MOD08_022123E4 add sp, #0x50 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _022202E8: .word 0x00000564 _022202EC: .word 0x00000514 _022202F0: .word 0x0222C632 _022202F4: .word MOD08_0221FF1C _022202F8: .word 0x0000044B _022202FC: .word MOD08_022200A8 _02220300: .word 0x0000044D thumb_func_start MOD08_02220304 MOD08_02220304: ; 0x02220304 push {r3, r4, r5, r6, lr} sub sp, #0x14 add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4, #4] cmp r0, #3 bhi _022203EA add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222031E: ; jump table .short _02220326 - _0222031E - 2 ; case 0 .short _02220344 - _0222031E - 2 ; case 1 .short _02220396 - _0222031E - 2 ; case 2 .short _022203C0 - _0222031E - 2 ; case 3 _02220326: ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 mov r1, #6 mov r2, #1 bl FUN_02007558 ldrb r0, [r4, #4] add r0, r0, #1 strb r0, [r4, #4] b _02220410 _02220344: add r0, r4, #0 add r0, #0x2c bl MOD08_02218704 cmp r0, #0 beq _02220410 mov r0, #0 str r0, [r4] ldr r0, [r4, #8] mov r1, #1 bl MOD08_022155C4 add r5, r0, #0 mov r0, #0 add r1, r0, #0 bl MOD08_02218998 add r6, r0, #0 ldr r0, [r4, #8] bl MOD08_02212014 mov r1, #0xc8 str r1, [sp] mov r3, #3 str r5, [sp, #4] mov r1, #0 str r1, [sp, #8] str r6, [sp, #0xc] str r0, [sp, #0x10] add r0, r1, #0 mov r1, #0xa0 add r2, r1, #0 add r2, #0xcc lsl r3, r3, #0xe bl MOD08_022188DC str r0, [r4, #0x28] ldrb r0, [r4, #4] add r0, r0, #1 strb r0, [r4, #4] b _02220410 _02220396: ldr r0, [r4] add r0, r0, #1 str r0, [r4] cmp r0, #0x78 blt _02220410 ldr r0, [r4, #0x28] bl MOD08_0221894C mov r1, #2 mov r2, #0x10 str r1, [sp] add r0, r4, #0 str r2, [sp, #4] add r0, #0x2c add r3, r2, #0 bl MOD08_022186D4 ldrb r0, [r4, #4] add r0, r0, #1 strb r0, [r4, #4] b _02220410 _022203C0: add r0, r4, #0 add r0, #0x2c bl MOD08_02218704 cmp r0, #0 beq _02220410 ldr r0, [r4, #8] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #8] bl MOD08_022154D4 mov r1, #6 mov r2, #0 bl FUN_02007558 ldrb r0, [r4, #4] add r0, r0, #1 strb r0, [r4, #4] b _02220410 _022203EA: mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] ldr r0, _02220428 ; =0xFFFF1FFF and r0, r1 str r0, [r2] ldr r0, [r4, #8] mov r1, #2 bl MOD08_02214850 ldr r0, [r4, #8] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x14 pop {r3, r4, r5, r6, pc} _02220410: ldr r0, [r4, #0x24] bl FUN_0200C5A8 ldr r0, [r4, #0x20] bl FUN_0200C5A8 ldr r0, [r4, #0x10] bl FUN_0200BC1C add sp, #0x14 pop {r3, r4, r5, r6, pc} nop _02220428: .word 0xFFFF1FFF thumb_func_start MOD08_0222042C MOD08_0222042C: ; 0x0222042C push {r3, r4, r5, lr} sub sp, #8 mov r1, #0x54 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #4 bl MOD08_02227B70 ldr r0, [r4, #8] mov r1, #0 bl MOD08_022124D8 mov r1, #2 str r0, [r4, #0x20] bl FUN_0200C90C mov r0, #1 lsl r0, r0, #0x1a ldr r2, [r0] ldr r1, _022204C0 ; =0xFFFF1FFF and r2, r1 lsr r1, r0, #0xb orr r1, r2 str r1, [r0] add r0, #0x4a ldrh r2, [r0] mov r1, #0x3f bic r2, r1 mov r1, #0x1b orr r1, r2 strh r1, [r0] ldrh r2, [r0] ldr r1, _022204C4 ; =0xFFFFC0FF and r2, r1 mov r1, #0x17 lsl r1, r1, #8 orr r1, r2 strh r1, [r0] ldr r0, [r4, #8] mov r1, #1 bl MOD08_022124D8 mov r1, #1 str r0, [r4, #0x24] bl FUN_0200C90C mov r1, #0x10 str r1, [sp] add r0, r4, #0 mov r2, #2 str r1, [sp, #4] add r0, #0x2c add r3, r2, #0 bl MOD08_022186D4 ldr r0, [r4, #8] mov r1, #2 bl MOD08_0221477C mov r0, #2 mov r1, #1 bl FUN_0201797C ldr r0, [r4, #8] ldr r1, _022204C8 ; =MOD08_02220304 add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r3, r4, r5, pc} nop _022204C0: .word 0xFFFF1FFF _022204C4: .word 0xFFFFC0FF _022204C8: .word MOD08_02220304 thumb_func_start MOD08_022204CC MOD08_022204CC: ; 0x022204CC push {r4, lr} add r4, r0, #0 bl FUN_0200C658 cmp r0, #1 bne _022204DE add r0, r4, #0 bl FUN_0200C5A8 _022204DE: pop {r4, pc} thumb_func_start MOD08_022204E0 MOD08_022204E0: ; 0x022204E0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 str r1, [sp, #4] str r0, [sp] ldr r0, [sp, #4] mov r1, #0x1c ldrsh r0, [r0, r1] cmp r0, #0 bgt _02220504 ldr r0, [sp, #4] ldr r0, [r0, #0x30] bl MOD08_022204CC ldr r0, [sp, #4] ldr r0, [r0, #0x34] bl MOD08_022204CC b _0222050A _02220504: sub r1, r0, #1 ldr r0, [sp, #4] strh r1, [r0, #0x1c] _0222050A: ldr r0, [sp, #4] ldr r0, [r0, #0x28] bl MOD08_022204CC ldr r0, [sp, #4] ldr r0, [r0, #0x2c] bl MOD08_022204CC ldr r4, [sp, #4] mov r6, #0 add r7, r6, #0 add r5, r4, #0 _02220522: mov r0, #0x1e ldrsh r0, [r4, r0] add r0, r0, #1 strh r0, [r4, #0x1e] mov r0, #0x1e ldrsh r0, [r4, r0] cmp r0, #0x28 blt _0222053C ldr r0, [r5, #0x28] mov r1, #0 bl FUN_0200C644 add r6, r6, #1 _0222053C: add r7, r7, #1 add r4, r4, #2 add r5, r5, #4 cmp r7, #4 blt _02220522 cmp r6, #4 bne _02220570 ldr r4, [sp, #4] mov r5, #0 _0222054E: ldr r0, [r4, #0x28] bl FUN_0200C3DC add r5, r5, #1 add r4, r4, #4 cmp r5, #4 blt _0222054E ldr r0, [sp, #4] ldr r1, [sp] ldr r0, [r0, #4] bl MOD08_02212438 ldr r0, [sp, #4] bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02220570: ldr r0, [sp, #4] ldr r0, [r0, #0x10] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222057C MOD08_0222057C: ; 0x0222057C push {r4, r5, r6, r7, lr} sub sp, #0x34 mov r1, #0x38 add r5, r0, #0 add r4, r3, #0 bl MOD08_02228064 add r6, r0, #0 mov r0, #0xa strh r0, [r6, #0x1c] add r0, r5, #0 add r1, r6, #0 bl MOD08_02227B70 ldr r1, [r6, #4] add r0, sp, #0 bl MOD08_02215474 str r4, [r6, #0x28] mov r0, #0 strh r0, [r6, #0x1e] mov r7, #1 add r4, r6, #2 add r5, r6, #4 _022205AC: mov r0, #0 strh r0, [r4, #0x1e] ldr r0, [r6, #8] ldr r1, [r6, #0x10] add r2, sp, #0 bl FUN_0200C154 str r0, [r5, #0x28] add r7, r7, #1 add r4, r4, #2 add r5, r5, #4 cmp r7, #4 blt _022205AC ldr r0, [r6, #0x28] mov r1, #1 bl FUN_0200C8D0 ldr r0, [r6, #0x2c] mov r1, #1 bl FUN_0200C8D0 mov r1, #0x1f ldr r0, [r6, #0x28] mvn r1, r1 mov r2, #0 bl FUN_0200C82C mov r1, #0x1f ldr r0, [r6, #0x2c] mvn r1, r1 mov r2, #0x20 bl FUN_0200C82C ldr r0, [r6, #0x30] mov r1, #0x20 mov r2, #0 bl FUN_0200C82C mov r1, #0x20 ldr r0, [r6, #0x34] add r2, r1, #0 bl FUN_0200C82C ldr r0, [r6, #4] ldr r1, _02220610 ; =MOD08_022204E0 add r2, r6, #0 bl MOD08_02212400 add sp, #0x34 pop {r4, r5, r6, r7, pc} .align 2, 0 _02220610: .word MOD08_022204E0 thumb_func_start MOD08_02220614 MOD08_02220614: ; 0x02220614 push {r4, r5, r6, r7, lr} sub sp, #0x24 add r5, r1, #0 mov r4, #0 str r0, [sp, #0x1c] str r4, [sp, #0x20] add r6, r5, #0 add r7, r5, #0 _02220624: mov r0, #0x22 ldrsh r0, [r6, r0] add r0, r0, #1 strh r0, [r6, #0x22] mov r0, #0x22 ldrsh r0, [r6, r0] cmp r0, #0x14 blt _02220676 ldr r0, [r7, #0x2c] bl MOD08_022204CC mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x6e bne _02220676 mov r1, #0 mvn r1, r1 ldr r0, [r5, #4] add r2, r1, #0 bl MOD08_02227994 ldr r0, [r5, #0x2c] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x30] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x34] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x38] mov r1, #1 bl FUN_0200C90C mov r0, #0xf str r0, [r5, #0x54] mov r0, #0 str r0, [r5, #0x58] _02220676: add r4, r4, #1 add r6, r6, #2 add r7, r7, #4 cmp r4, #4 blt _02220624 mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x32 bne _022206BA ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _02220894 ; =0x0000FFFF str r0, [sp, #0x14] ldr r0, _02220898 ; =0x000003EA str r0, [sp, #0x18] ldr r3, [r5, #0x1c] ldr r0, [r5, #0x18] lsl r3, r3, #0x14 lsr r3, r3, #0x10 bl MOD08_02218B20 str r0, [r5, #0x3c] _022206BA: mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x3c bne _022206F4 ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 str r2, [sp, #8] mov r0, #0xe str r0, [sp, #0xc] mov r0, #0 str r0, [sp, #0x10] ldr r0, _02220894 ; =0x0000FFFF str r0, [sp, #0x14] ldr r0, _02220898 ; =0x000003EA str r0, [sp, #0x18] ldr r3, [r5, #0x1c] ldr r0, [r5, #0x18] lsl r3, r3, #0x14 lsr r3, r3, #0x10 bl MOD08_02218B20 str r0, [r5, #0x40] _022206F4: mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x46 bne _0222072E ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _02220894 ; =0x0000FFFF str r0, [sp, #0x14] ldr r0, _02220898 ; =0x000003EA str r0, [sp, #0x18] ldr r3, [r5, #0x1c] ldr r0, [r5, #0x18] lsl r3, r3, #0x14 lsr r3, r3, #0x10 bl MOD08_02218B20 str r0, [r5, #0x44] _0222072E: mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x50 bne _02220768 ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 str r2, [sp, #8] mov r0, #0xe str r0, [sp, #0xc] mov r0, #0 str r0, [sp, #0x10] ldr r0, _02220894 ; =0x0000FFFF str r0, [sp, #0x14] ldr r0, _02220898 ; =0x000003EA str r0, [sp, #0x18] ldr r3, [r5, #0x1c] ldr r0, [r5, #0x18] lsl r3, r3, #0x14 lsr r3, r3, #0x10 bl MOD08_02218B20 str r0, [r5, #0x48] _02220768: mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x5a bne _022207A2 ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _02220894 ; =0x0000FFFF str r0, [sp, #0x14] ldr r0, _02220898 ; =0x000003EA str r0, [sp, #0x18] ldr r3, [r5, #0x1c] ldr r0, [r5, #0x18] lsl r3, r3, #0x14 lsr r3, r3, #0x10 bl MOD08_02218B20 str r0, [r5, #0x4c] _022207A2: mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x64 bne _022207DC ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 str r2, [sp, #8] mov r0, #0xe str r0, [sp, #0xc] mov r0, #0 str r0, [sp, #0x10] ldr r0, _02220894 ; =0x0000FFFF str r0, [sp, #0x14] ldr r0, _02220898 ; =0x000003EA str r0, [sp, #0x18] ldr r3, [r5, #0x1c] ldr r0, [r5, #0x18] lsl r3, r3, #0x14 lsr r3, r3, #0x10 bl MOD08_02218B20 str r0, [r5, #0x50] _022207DC: mov r1, #0x22 ldrsh r0, [r5, r1] cmp r0, #0x6e bne _02220816 sub r1, #0x23 ldr r0, [r5, #4] add r2, r1, #0 bl MOD08_02227994 ldr r0, [r5, #0x2c] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x30] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x34] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x38] mov r1, #1 bl FUN_0200C90C mov r0, #0xf str r0, [r5, #0x54] mov r0, #0 str r0, [r5, #0x58] _02220816: mov r0, #0x22 ldrsh r0, [r5, r0] cmp r0, #0x6e blt _0222084E ldr r0, [r5, #0x54] cmp r0, #0 ble _02220828 sub r0, r0, #1 str r0, [r5, #0x54] _02220828: ldr r0, [r5, #0x58] cmp r0, #0xf bge _02220832 add r0, r0, #1 str r0, [r5, #0x58] _02220832: ldr r0, [r5, #0x58] ldr r1, [r5, #0x54] lsl r0, r0, #8 orr r1, r0 ldr r0, _0222089C ; =0x04000052 strh r1, [r0] ldr r0, [r5, #0x54] cmp r0, #0 bne _0222084E ldr r0, [r5, #0x58] cmp r0, #0xf bne _0222084E mov r0, #4 str r0, [sp, #0x20] _0222084E: ldr r0, [sp, #0x20] cmp r0, #4 bne _0222088A mov r6, #0 add r4, r5, #0 _02220858: ldr r0, [r4, #0x2c] bl FUN_0200C3DC add r6, r6, #1 add r4, r4, #4 cmp r6, #4 blt _02220858 mov r6, #0 add r4, r5, #0 _0222086A: ldr r0, [r4, #0x3c] bl MOD08_02218B08 add r6, r6, #1 add r4, r4, #4 cmp r6, #6 blt _0222086A ldr r0, [r5, #4] ldr r1, [sp, #0x1c] bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 add sp, #0x24 pop {r4, r5, r6, r7, pc} _0222088A: ldr r0, [r5, #0x10] bl FUN_0200BC1C add sp, #0x24 pop {r4, r5, r6, r7, pc} .align 2, 0 _02220894: .word 0x0000FFFF _02220898: .word 0x000003EA _0222089C: .word 0x04000052 thumb_func_start MOD08_022208A0 MOD08_022208A0: ; 0x022208A0 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 mov r1, #0x5c str r0, [sp] add r5, r3, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0xa strh r0, [r4, #0x20] ldr r0, [sp] add r1, r4, #0 bl MOD08_02227B70 ldr r1, [r4, #4] add r0, sp, #0xc bl MOD08_02215474 str r5, [r4, #0x2c] mov r0, #0 strh r0, [r4, #0x22] mov r0, #1 str r0, [sp, #8] mov r7, #5 add r6, r4, #2 add r5, r4, #4 _022208D4: bl FUN_0201B9EC lsr r1, r0, #0x1f lsl r2, r0, #0x1e sub r2, r2, r1 mov r0, #0x1e ror r2, r0 add r0, r1, r2 add r0, r7, r0 strh r0, [r6, #0x22] ldr r0, [r4, #8] ldr r1, [r4, #0x10] add r2, sp, #0xc bl FUN_0200C154 str r0, [r5, #0x2c] ldr r0, [sp, #8] add r7, r7, #5 add r0, r0, #1 add r6, r6, #2 add r5, r5, #4 str r0, [sp, #8] cmp r0, #4 blt _022208D4 ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C8D0 ldr r0, [r4, #0x34] mov r1, #1 bl FUN_0200C8D0 ldr r0, [sp] bl MOD08_02212458 add r1, r0, #0 ldr r0, [sp] bl MOD08_022154D4 mov r1, #0 add r5, r0, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] add r0, r5, #0 mov r1, #1 bl FUN_0200782C add r0, r5, #0 mov r1, #0x29 bl FUN_0200782C ldr r0, [sp] bl MOD08_02212458 add r1, r0, #0 ldr r0, [sp] bl MOD08_02227470 cmp r0, #3 bne _02220956 mov r7, #0x8c b _02220958 _02220956: mov r7, #0x54 _02220958: mov r6, #0 add r5, r4, #0 _0222095C: ldr r0, [r5, #0x2c] ldr r1, [sp, #4] add r2, r7, #0 bl FUN_0200C714 add r6, r6, #1 add r5, r5, #4 cmp r6, #4 blt _0222095C ldr r0, [sp] bl MOD08_02212458 add r1, r0, #0 ldr r0, [sp] bl MOD08_02227470 cmp r0, #3 ldr r0, [r4, #0x2c] bne _022209A2 mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x34] mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x30] mov r1, #0x12 bl FUN_0200C6C4 ldr r0, [r4, #0x38] mov r1, #0x12 bl FUN_0200C6C4 b _022209C0 _022209A2: mov r1, #0x12 bl FUN_0200C6C4 ldr r0, [r4, #0x34] mov r1, #0x12 bl FUN_0200C6C4 ldr r0, [r4, #0x30] mov r1, #0xa bl FUN_0200C6C4 ldr r0, [r4, #0x38] mov r1, #0xa bl FUN_0200C6C4 _022209C0: mov r1, #0x1f ldr r0, [r4, #0x2c] mvn r1, r1 mov r2, #0 bl FUN_0200C82C mov r1, #0x27 ldr r0, [r4, #0x38] mvn r1, r1 mov r2, #4 bl FUN_0200C82C ldr r0, [r4, #0x34] mov r1, #0x20 mov r2, #0 bl FUN_0200C82C ldr r0, [r4, #0x30] mov r1, #0x28 mov r2, #4 bl FUN_0200C82C ldr r0, [r4, #0x2c] bl FUN_0200C68C str r0, [r4, #0x1c] ldr r0, [r4, #4] ldr r1, _02220A04 ; =MOD08_02220614 add r2, r4, #0 bl MOD08_02212400 add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} nop _02220A04: .word MOD08_02220614 thumb_func_start MOD08_02220A08 MOD08_02220A08: ; 0x02220A08 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 bne _02220A8E add r0, r4, #0 add r0, #0x60 bl MOD08_02218224 cmp r0, #0 bne _02220A4C ldr r0, [r4, #0x28] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x3c] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x3c] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl MOD08_02228094 add sp, #0xc pop {r4, r5, pc} _02220A4C: add r0, r4, #0 add r0, #0x60 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x28] ldr r1, [sp, #8] ldr r2, [sp, #4] bl FUN_0200C884 mov r0, #0 str r0, [sp] mov r1, #0x58 mov r2, #0x5a ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x28] ldr r3, [r4, #0x74] bl MOD08_02218314 ldr r0, [r4, #0x28] bl FUN_0200C5A8 ldr r0, [r4, #0x3c] bl FUN_0200C5A8 ldr r0, [r4, #0x50] bl FUN_0200C5A8 ldr r0, [r4, #0xc] bl FUN_0200BC1C _02220A8E: add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02220A94 MOD08_02220A94: ; 0x02220A94 push {r4, r5, lr} sub sp, #0xc mov r1, #0x84 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 mov r1, #1 str r0, [r4, #0x24] bl FUN_0200782C add r1, r4, #0 add r1, #0x58 strh r0, [r1] mov r0, #0x58 ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0x5c strh r1, [r0] ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_0221552C add r1, r4, #0 add r1, #0x5a strh r0, [r1] add r0, r5, #0 mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x28] add r0, r5, #0 mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x3c] add r0, r5, #0 mov r1, #2 bl MOD08_022124D8 str r0, [r4, #0x50] ldr r0, [r4, #0x28] mov r1, #2 bl FUN_0200C840 add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x28] bl FUN_0200C6B0 add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x3c] bl FUN_0200C6B0 add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x50] bl FUN_0200C6B0 ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02215490 sub r0, r0, #3 cmp r0, #1 ldr r0, [r4, #0x28] bhi _02220B62 mov r1, #0x1e bl FUN_0200C6C4 ldr r0, [r4, #0x3c] mov r1, #0x32 bl FUN_0200C6C4 ldr r0, [r4, #0x50] mov r1, #0x46 bl FUN_0200C6C4 b _02220B78 _02220B62: mov r1, #0x3c bl FUN_0200C6C4 ldr r0, [r4, #0x3c] mov r1, #0x46 bl FUN_0200C6C4 ldr r0, [r4, #0x50] mov r1, #0x32 bl FUN_0200C6C4 _02220B78: mov r2, #0x14 mov r1, #0x64 str r2, [sp] str r1, [sp, #4] mov r0, #0xa str r0, [sp, #8] add r0, r4, #0 add r0, #0x60 add r3, r1, #0 bl MOD08_022181A8 ldr r0, [r4, #4] ldr r1, _02220B9C ; =MOD08_02220A08 add r2, r4, #0 bl MOD08_02212400 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _02220B9C: .word MOD08_02220A08 thumb_func_start MOD08_02220BA0 MOD08_02220BA0: ; 0x02220BA0 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _02220BB4 cmp r0, #1 beq _02220CB2 b _02220D00 _02220BB4: add r0, r4, #0 add r0, #0xa0 ldrb r0, [r0] cmp r0, #0 bne _02220C2E mov r0, #0x22 ldrsh r3, [r4, r0] mov r0, #0x20 ldrsh r1, [r4, r0] mov r0, #3 add r2, r1, #0 str r3, [sp] add r2, #0x30 str r0, [sp, #4] add r0, r4, #0 lsl r2, r2, #0x10 add r0, #0x34 asr r2, r2, #0x10 bl MOD08_02217E80 mov r0, #0x22 ldrsh r1, [r4, r0] mov r0, #0xa4 ldrsh r0, [r4, r0] add r2, r1, r0 mov r0, #0x20 ldrsh r1, [r4, r0] lsl r0, r2, #0x10 asr r3, r0, #0x10 add r2, r1, #0 add r2, #0x30 lsl r2, r2, #0x10 str r3, [sp] mov r0, #6 str r0, [sp, #4] add r0, r4, #0 add r0, #0x58 asr r2, r2, #0x10 bl MOD08_02217E80 mov r0, #0x22 ldrsh r1, [r4, r0] mov r0, #0xa4 ldrsh r0, [r4, r0] add r2, r1, r0 mov r0, #0x20 ldrsh r1, [r4, r0] lsl r0, r2, #0x10 asr r3, r0, #0x10 add r2, r1, #0 add r2, #0x30 lsl r2, r2, #0x10 str r3, [sp] mov r0, #8 str r0, [sp, #4] add r0, r4, #0 add r0, #0x7c asr r2, r2, #0x10 bl MOD08_02217E80 b _02220C9C _02220C2E: mov r0, #0x22 ldrsh r3, [r4, r0] mov r0, #0x20 ldrsh r2, [r4, r0] mov r0, #3 add r1, r2, #0 str r3, [sp] add r1, #0x30 str r0, [sp, #4] add r0, r4, #0 lsl r1, r1, #0x10 add r0, #0x34 asr r1, r1, #0x10 bl MOD08_02217E80 mov r0, #0x22 ldrsh r1, [r4, r0] mov r0, #0xa4 ldrsh r0, [r4, r0] add r1, r1, r0 mov r0, #0x20 ldrsh r2, [r4, r0] lsl r0, r1, #0x10 asr r3, r0, #0x10 add r1, r2, #0 add r1, #0x30 lsl r1, r1, #0x10 str r3, [sp] mov r0, #6 str r0, [sp, #4] add r0, r4, #0 add r0, #0x58 asr r1, r1, #0x10 bl MOD08_02217E80 mov r0, #0x22 ldrsh r1, [r4, r0] mov r0, #0xa4 ldrsh r0, [r4, r0] add r1, r1, r0 mov r0, #0x20 ldrsh r2, [r4, r0] lsl r0, r1, #0x10 asr r3, r0, #0x10 add r1, r2, #0 add r1, #0x30 lsl r1, r1, #0x10 str r3, [sp] mov r0, #9 str r0, [sp, #4] add r0, r4, #0 add r0, #0x7c asr r1, r1, #0x10 bl MOD08_02217E80 _02220C9C: add r0, r4, #0 add r0, #0xa0 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xa0 strb r1, [r0] ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _02220D12 _02220CB2: add r0, r4, #0 ldr r1, [r4, #0x28] add r0, #0x58 mov r5, #0 bl MOD08_02217F08 cmp r0, #0 bne _02220CC4 add r5, r5, #1 _02220CC4: add r0, r4, #0 ldr r1, [r4, #0x24] add r0, #0x34 bl MOD08_02217F2C cmp r0, #0 bne _02220CD4 add r5, r5, #1 _02220CD4: add r0, r4, #0 ldr r1, [r4, #0x30] add r0, #0x7c bl MOD08_02217F08 cmp r0, #0 bne _02220CE4 add r5, r5, #1 _02220CE4: cmp r5, #3 blt _02220D12 add r0, r4, #0 add r0, #0xa0 ldrb r0, [r0] cmp r0, #1 ldrb r0, [r4] bne _02220CFA sub r0, r0, #1 strb r0, [r4] b _02220D12 _02220CFA: add r0, r0, #1 strb r0, [r4] b _02220D12 _02220D00: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl MOD08_02228094 add sp, #8 pop {r3, r4, r5, pc} _02220D12: ldr r0, [r4, #0x28] bl FUN_0200C5A8 ldr r0, [r4, #0xc] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02220D24 MOD08_02220D24: ; 0x02220D24 push {r4, r5, r6, r7, lr} sub sp, #0x24 mov r1, #0xa8 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 add r0, r4, #0 mov r1, #0 add r0, #0xa1 strb r1, [r0] add r0, r4, #0 mov r1, #8 add r0, #0xa2 strb r1, [r0] add r0, r4, #0 add r0, #0xa3 strb r1, [r0] sub r1, #9 ldr r0, [r4, #4] add r2, r1, #0 bl MOD08_02227994 add r0, r4, #0 add r0, #0xa2 ldrb r1, [r0] add r0, r4, #0 add r0, #0xa3 ldrb r0, [r0] lsl r0, r0, #8 orr r1, r0 ldr r0, _02220E94 ; =0x04000052 strh r1, [r0] ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0x24] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x20] ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x22] ldr r0, [r4, #4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x28] ldr r0, [r4, #4] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x30] ldr r0, [r4, #0x24] mov r1, #0x29 bl FUN_0200782C neg r1, r0 add r0, r4, #0 add r0, #0xa4 strh r1, [r0] ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_0221550C add r7, r0, #0 ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_0221551C str r0, [sp, #0x18] ldr r0, [r4, #4] ldr r5, [r4, #0x28] bl MOD08_02215574 add r1, r0, #0 add r0, r5, #0 add r1, r1, #1 bl FUN_0200C6B0 ldr r0, [r5] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r6, r0, #0 ldr r0, [r4, #4] bl MOD08_02215504 str r0, [sp, #0x1c] ldr r0, [r4, #4] bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] lsl r0, r6, #0x14 lsr r0, r0, #0x10 str r0, [sp, #8] mov r0, #0xc4 str r0, [sp, #0xc] str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r0, [sp, #0x1c] ldr r1, [sp, #0x18] add r2, r7, #0 bl FUN_02003B40 add r0, r5, #0 mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #4] ldr r5, [r4, #0x30] bl MOD08_02215574 add r1, r0, #0 add r0, r5, #0 add r1, r1, #1 bl FUN_0200C6B0 ldr r0, [r5] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r6, r0, #0 ldr r0, [r4, #4] bl MOD08_02215504 str r0, [sp, #0x20] ldr r0, [r4, #4] bl MOD08_02212014 add r3, r0, #0 mov r0, #2 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] lsl r0, r6, #0x14 lsr r0, r0, #0x10 str r0, [sp, #8] mov r0, #0xc4 str r0, [sp, #0xc] str r0, [sp, #0x10] str r0, [sp, #0x14] ldr r0, [sp, #0x20] ldr r1, [sp, #0x18] add r2, r7, #0 bl FUN_02003B40 add r0, r5, #0 mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #4] ldr r1, _02220E98 ; =MOD08_02220BA0 add r2, r4, #0 bl MOD08_02212400 add sp, #0x24 pop {r4, r5, r6, r7, pc} nop _02220E94: .word 0x04000052 _02220E98: .word MOD08_02220BA0 thumb_func_start MOD08_02220E9C MOD08_02220E9C: ; 0x02220E9C push {r3, r4, r5, r6, r7, lr} sub sp, #8 mov r6, #0 str r0, [sp] str r1, [sp, #4] add r7, r6, #0 add r4, r1, #0 add r5, r1, #0 _02220EAC: mov r0, #0x1e ldrsh r0, [r4, r0] add r0, r0, #1 strh r0, [r4, #0x1e] mov r0, #0x1e ldrsh r0, [r4, r0] cmp r0, #0x20 blt _02220ED4 ldr r0, [r5, #0x30] bl MOD08_022204CC mov r0, #0x1e ldrsh r0, [r4, r0] cmp r0, #0xa0 blt _02220ED4 ldr r0, [r5, #0x30] mov r1, #0 bl FUN_0200C644 add r6, r6, #1 _02220ED4: add r7, r7, #1 add r4, r4, #2 add r5, r5, #4 cmp r7, #8 blt _02220EAC cmp r6, #8 bne _02220F08 ldr r4, [sp, #4] mov r5, #0 _02220EE6: ldr r0, [r4, #0x30] bl FUN_0200C3DC add r5, r5, #1 add r4, r4, #4 cmp r5, #8 blt _02220EE6 ldr r0, [sp, #4] ldr r1, [sp] ldr r0, [r0, #4] bl MOD08_02212438 ldr r0, [sp, #4] bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02220F08: ldr r0, [sp, #4] ldr r0, [r0, #0x10] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02220F14 MOD08_02220F14: ; 0x02220F14 push {r3, r4, r5, r6, r7, lr} sub sp, #0x58 mov r1, #0x74 add r6, r0, #0 add r5, r3, #0 bl MOD08_02228064 add r4, r0, #0 mov r0, #0xa strh r0, [r4, #0x1c] add r0, r6, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r1, [r4, #4] add r0, sp, #0x24 bl MOD08_02215474 str r5, [r4, #0x30] mov r6, #1 add r5, r4, #4 mov r7, #0x1f _02220F40: ldr r0, [r4, #8] ldr r1, [r4, #0x10] add r2, sp, #0x24 bl FUN_0200C154 str r0, [r5, #0x30] lsr r1, r6, #0x1f lsl r0, r6, #0x1f sub r0, r0, r1 ror r0, r7 add r0, r1, r0 beq _02220F60 ldr r0, [r5, #0x30] mov r1, #1 bl FUN_0200C8D0 _02220F60: add r6, r6, #1 add r5, r5, #4 cmp r6, #8 blt _02220F40 ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 mov r1, #0 add r5, r0, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r7, r0, #0x10 add r0, r5, #0 mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 mov r1, #0 str r0, [sp, #0x1c] bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [sp, #0x1c] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] mov r0, #0x14 str r0, [sp, #4] add r0, r4, #0 add r0, #0x50 add r1, r7, #0 add r2, r6, #0 add r3, r5, #0 bl MOD08_02217E80 mov r7, #0 ldr r0, [r4, #4] add r6, r7, #0 str r7, [sp, #0x14] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02227470 cmp r0, #4 bne _02220FE4 mov r0, #1 str r0, [sp, #0x14] _02220FE4: add r0, r4, #0 str r0, [sp, #0x20] add r0, #0x50 add r5, r4, #0 str r0, [sp, #0x20] _02220FEE: ldr r0, [sp, #0x20] bl MOD08_02217ECC str r0, [sp, #0x18] lsr r2, r7, #0x1f lsl r1, r7, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 beq _02221026 ldr r0, [sp, #0x14] cmp r0, #0 bne _02221022 cmp r6, #8 bge _02221026 mov r1, #0x50 mov r2, #0x52 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r5, #0x30] bl FUN_0200C714 add r5, r5, #4 add r6, r6, #1 b _02221026 _02221022: mov r0, #0 str r0, [sp, #0x14] _02221026: ldr r0, [sp, #0x18] add r7, r7, #1 cmp r0, #1 beq _02220FEE ldr r0, [r4, #4] mov r1, #1 bl MOD08_02215600 str r0, [sp, #0x10] ldr r0, [r4, #4] mov r1, #2 bl MOD08_02215600 add r7, r0, #0 mov r6, #0 str r4, [sp, #0xc] add r5, r4, #0 _02221048: mov r0, #8 sub r0, r0, r6 str r0, [sp, #8] lsl r1, r0, #2 ldr r0, [sp, #0xc] strh r1, [r0, #0x1e] ldr r0, [r4, #4] bl MOD08_02212004 cmp r0, #0 bne _022210A4 ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02227470 cmp r0, #3 bne _02221086 cmp r6, #4 ldr r0, [r5, #0x30] bge _0222107E add r1, r7, #0 bl FUN_0200C6B0 b _0222109A _0222107E: ldr r1, [sp, #0x10] bl FUN_0200C6B0 b _0222109A _02221086: cmp r6, #4 ldr r0, [r5, #0x30] blt _02221094 add r1, r7, #0 bl FUN_0200C6B0 b _0222109A _02221094: ldr r1, [sp, #0x10] bl FUN_0200C6B0 _0222109A: ldr r0, [r5, #0x30] ldr r1, [sp, #8] bl FUN_0200C6C4 b _022210B4 _022210A4: ldr r0, [r5, #0x30] add r1, r6, #0 bl FUN_0200C6C4 ldr r0, [r5, #0x30] add r1, r7, #0 bl FUN_0200C6B0 _022210B4: ldr r0, [sp, #0xc] add r6, r6, #1 add r0, r0, #2 add r5, r5, #4 str r0, [sp, #0xc] cmp r6, #8 blt _02221048 ldr r0, [r4, #4] ldr r1, _022210D0 ; =MOD08_02220E9C add r2, r4, #0 bl MOD08_02212400 add sp, #0x58 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _022210D0: .word MOD08_02220E9C thumb_func_start MOD08_022210D4 MOD08_022210D4: ; 0x022210D4 push {r4, r5, lr} sub sp, #0x1c add r5, r1, #0 add r4, r0, #0 ldrb r0, [r5] cmp r0, #0 beq _022210EA cmp r0, #1 beq _02221178 cmp r0, #2 b _022211D6 _022210EA: ldr r0, [r5, #0x28] cmp r0, #0xe ble _02221140 ldr r0, [r5, #0x30] ldr r1, _0222121C ; =0x3E4CCCCD bl _fsub str r0, [r5, #0x30] ldr r0, [r5, #0x2c] ldr r1, _0222121C ; =0x3E4CCCCD bl _fadd str r0, [r5, #0x2c] ldr r0, [r5, #0x30] bl _f2d ldr r2, _02221220 ; =0x9999999A ldr r3, _02221224 ; =0x3FC99999 bl _dleq bhi _02221124 ldrb r0, [r5] mov r1, #0 add r0, r0, #1 strb r0, [r5] ldr r0, [r5, #0x1c] bl FUN_0200C644 b _022211FE _02221124: mov r0, #0x36 ldrsb r0, [r5, r0] bl _fflt add r1, r0, #0 ldr r0, [r5, #0x2c] bl _fmul add r1, r0, #0 ldr r0, [r5, #0x1c] ldr r2, [r5, #0x30] bl FUN_0200C884 b _022211FE _02221140: add r0, r5, #0 add r0, #0x34 ldrb r0, [r0] add r1, r0, #1 add r0, r5, #0 add r0, #0x34 strb r1, [r0] add r0, r5, #0 add r0, #0x35 ldrb r0, [r0] sub r1, r0, #1 add r0, r5, #0 add r0, #0x35 strb r1, [r0] add r0, r5, #0 add r0, #0x34 ldrb r1, [r0] add r0, r5, #0 add r0, #0x35 ldrb r0, [r0] lsl r0, r0, #8 orr r1, r0 ldr r0, _02221228 ; =0x04000052 strh r1, [r0] ldr r0, [r5, #0x28] add r0, r0, #1 str r0, [r5, #0x28] b _022211FE _02221178: ldr r0, [r5, #0x3c] bl MOD08_02218AF8 cmp r0, #0 bne _022211FE ldr r0, [r5, #0x38] bl MOD08_02218B08 ldr r0, [r5, #0x3c] bl MOD08_02218B08 ldr r0, [r5, #0x24] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r4, r0, #0 ldr r0, [r5, #4] bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] mov r2, #0 lsl r3, r4, #0x14 str r2, [sp, #4] mov r0, #1 str r0, [sp, #8] mov r0, #0xf str r0, [sp, #0xc] str r2, [sp, #0x10] ldr r0, _0222122C ; =0x0000FFFF mov r2, #2 str r0, [sp, #0x14] ldr r0, _02221230 ; =0x0000044C lsr r3, r3, #0x10 str r0, [sp, #0x18] ldr r0, [r5, #0x18] bl MOD08_02218B20 str r0, [r5, #0x3c] ldrb r0, [r5] add r0, r0, #1 strb r0, [r5] b _022211FE _022211D6: ldr r0, [r5, #0x3c] bl MOD08_02218AF8 cmp r0, #0 bne _022211FE ldr r0, [r5, #0x20] bl FUN_0200C5A8 ldr r0, [r5, #0x3c] bl MOD08_02218B08 ldr r0, [r5, #4] add r1, r4, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 add sp, #0x1c pop {r4, r5, pc} _022211FE: ldr r0, [r5, #0x1c] bl FUN_0200C5A8 ldr r0, [r5, #0x20] bl FUN_0200C5A8 ldr r0, [r5, #0x24] bl FUN_0200C5A8 ldr r0, [r5, #0xc] bl FUN_0200BC1C add sp, #0x1c pop {r4, r5, pc} nop _0222121C: .word 0x3E4CCCCD _02221220: .word 0x9999999A _02221224: .word 0x3FC99999 _02221228: .word 0x04000052 _0222122C: .word 0x0000FFFF _02221230: .word 0x0000044C thumb_func_start MOD08_02221234 MOD08_02221234: ; 0x02221234 push {r3, r4, r5, r6, r7, lr} sub sp, #0x30 mov r1, #0x40 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r0, [r4, #4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x1c] ldr r0, [r4, #4] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x20] ldr r0, [r4, #4] mov r1, #2 bl MOD08_022124D8 str r0, [r4, #0x24] mov r6, #0 str r6, [r4, #0x28] add r0, r5, #0 sub r6, #0x20 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02217C1C lsl r0, r0, #0x10 asr r0, r0, #0x10 mul r0, r6 add r6, r0, #0 mov r0, #0xfe lsl r0, r0, #0x16 str r0, [r4, #0x2c] str r0, [r4, #0x30] add r0, r5, #0 mov r1, #1 bl MOD08_02215680 cmp r0, #1 bne _0222129E mov r1, #0 mvn r1, r1 b _022212A0 _0222129E: mov r1, #1 _022212A0: add r0, r4, #0 add r0, #0x36 strb r1, [r0] add r1, sp, #0x24 ldr r0, [r4, #0x20] add r1, #2 add r2, sp, #0x24 bl FUN_0200C7A0 add r2, sp, #0x24 mov r1, #2 ldrsh r1, [r2, r1] mov r3, #0 ldrsh r2, [r2, r3] add r1, r1, r6 lsl r1, r1, #0x10 ldr r0, [r4, #0x1c] asr r1, r1, #0x10 bl FUN_0200C714 ldr r0, [r4, #0x1c] mov r1, #2 bl FUN_0200C840 mov r0, #0x36 ldrsb r0, [r4, r0] bl _fflt add r1, r0, #0 ldr r0, [r4, #0x2c] bl _fmul add r1, r0, #0 ldr r0, [r4, #0x1c] ldr r2, [r4, #0x30] bl FUN_0200C884 ldr r0, [r4, #0x1c] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] mov r2, #0 lsl r3, r6, #0x14 str r2, [sp, #4] mov r0, #1 str r0, [sp, #8] str r2, [sp, #0xc] mov r0, #0xf str r0, [sp, #0x10] ldr r0, _0222147C ; =0x0000FFFF mov r2, #2 str r0, [sp, #0x14] ldr r0, _02221480 ; =0x0000044C lsr r3, r3, #0x10 str r0, [sp, #0x18] ldr r0, [r4, #0x18] bl MOD08_02218B20 str r0, [r4, #0x38] ldr r0, [r4, #0x24] ldr r0, [r0] bl FUN_02020354 mov r1, #1 bl FUN_0201E28C add r6, r0, #0 add r0, r5, #0 bl MOD08_02212014 add r1, r0, #0 mov r0, #0x10 str r0, [sp] mov r2, #0 lsl r3, r6, #0x14 str r2, [sp, #4] mov r0, #1 str r0, [sp, #8] str r2, [sp, #0xc] mov r0, #0xf str r0, [sp, #0x10] ldr r0, _0222147C ; =0x0000FFFF mov r2, #2 str r0, [sp, #0x14] ldr r0, _02221480 ; =0x0000044C lsr r3, r3, #0x10 str r0, [sp, #0x18] ldr r0, [r4, #0x18] bl MOD08_02218B20 str r0, [r4, #0x3c] ldr r0, [r4, #4] bl MOD08_02212458 lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_02227468 lsl r0, r0, #0x18 lsr r5, r0, #0x18 ldr r0, [r4, #4] bl MOD08_02212004 add r1, r0, #0 add r0, r5, #0 add r2, sp, #0x2c bl MOD08_02227564 add r2, sp, #0x28 ldr r0, [r4, #0x1c] add r1, sp, #0x28 add r2, #2 bl FUN_0200C7A0 ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_02227470 cmp r0, #3 bne _022213BC ldr r0, [r4, #0x1c] mov r1, #1 mov r5, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x1c] add r1, r5, #0 bl FUN_0200C6C4 b _022213CE _022213BC: ldr r0, [r4, #0x1c] mov r1, #2 bl FUN_0200C6B0 ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_0200C6C4 mov r5, #2 _022213CE: ldr r0, [r4, #4] bl MOD08_02212460 lsl r0, r0, #0x18 lsr r6, r0, #0x18 ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_022154A8 add r7, r0, #0 ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_0221549C str r0, [sp, #0x1c] ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_022154B8 str r0, [sp, #0x20] ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_022154C4 ldr r1, [sp, #0x1c] ldr r3, [sp, #0x20] str r0, [sp] lsl r0, r7, #0x10 lsl r1, r1, #0x18 lsl r2, r5, #0x18 lsl r3, r3, #0x18 lsr r0, r0, #0x10 lsr r1, r1, #0x18 lsr r2, r2, #0x18 lsr r3, r3, #0x18 bl FUN_02068E88 add r2, r0, #0 add r5, sp, #0x24 mov r3, #0xa ldrsh r3, [r5, r3] mov r1, #4 ldrsh r1, [r5, r1] add r2, r3, r2 lsl r2, r2, #0x10 ldr r0, [r4, #0x1c] asr r2, r2, #0x10 bl FUN_0200C714 ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200C644 add r0, r4, #0 mov r1, #0 add r0, #0x34 strb r1, [r0] add r0, r4, #0 mov r1, #0xf add r0, #0x35 strb r1, [r0] sub r1, #0x10 ldr r0, [r4, #4] add r2, r1, #0 bl MOD08_02227994 add r0, r4, #0 add r0, #0x34 ldrb r1, [r0] add r0, r4, #0 add r0, #0x35 ldrb r0, [r0] add r2, r4, #0 lsl r0, r0, #8 orr r1, r0 ldr r0, _02221484 ; =0x04000052 strh r1, [r0] ldr r0, [r4, #4] ldr r1, _02221488 ; =MOD08_022210D4 bl MOD08_02212400 add r1, r4, #0 bl MOD08_022210D4 add sp, #0x30 pop {r3, r4, r5, r6, r7, pc} nop _0222147C: .word 0x0000FFFF _02221480: .word 0x0000044C _02221484: .word 0x04000052 _02221488: .word MOD08_022210D4 thumb_func_start MOD08_0222148C MOD08_0222148C: ; 0x0222148C push {r3, r4, r5, lr} sub sp, #0x58 add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4] cmp r0, #0 beq _022214A0 cmp r0, #1 beq _022214E6 b _02221560 _022214A0: ldr r0, [r4, #0x68] mov r1, #0x20 lsl r0, r0, #2 add r2, r4, r0 ldr r0, [r2, #0x78] lsl r0, r0, #0x10 asr r3, r0, #0x10 str r3, [sp] mov r0, #0xf str r0, [sp, #4] ldr r2, [r2, #0x6c] add r0, r4, #0 lsl r2, r2, #0x10 ldrsh r1, [r4, r1] add r0, #0x30 asr r2, r2, #0x10 bl MOD08_02217E80 ldr r2, [r4, #0x68] ldr r0, [r4, #0x24] lsl r2, r2, #2 add r2, r4, r2 add r2, #0x84 ldr r2, [r2] mov r1, #2 bl FUN_02007558 ldr r0, [r4, #0x24] mov r1, #0x2c mov r2, #1 bl FUN_02007558 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] _022214E6: add r0, r4, #0 add r0, #0x30 bl MOD08_02217ECC cmp r0, #0 bne _02221544 ldr r0, [r4, #0x68] add r0, r0, #1 str r0, [r4, #0x68] cmp r0, #2 ble _02221504 ldrb r0, [r4] add r0, r0, #1 strb r0, [r4] b _0222153A _02221504: ldr r0, [r4, #0x58] cmp r0, #0 bne _02221536 ldr r0, [r4, #4] add r1, sp, #8 mov r2, #3 bl MOD08_022127A8 ldr r0, [r4, #0x68] cmp r0, #2 ldr r0, [r4, #4] bne _0222152A bl MOD08_02212014 add r1, r0, #0 add r0, sp, #8 bl MOD08_0222A494 b _02221536 _0222152A: bl MOD08_02212014 add r1, r0, #0 add r0, sp, #8 bl MOD08_0222A2A4 _02221536: mov r0, #0 strb r0, [r4] _0222153A: ldr r0, [r4, #0x24] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x20] _02221544: mov r2, #0x30 ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] mov r1, #0 bl FUN_02007558 mov r2, #0x32 ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] mov r1, #1 bl FUN_02007558 add sp, #0x58 pop {r3, r4, r5, pc} _02221560: ldr r0, [r4, #0x24] mov r1, #0x2c mov r2, #0 bl FUN_02007558 ldr r0, [r4, #4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x58 pop {r3, r4, r5, pc} thumb_func_start MOD08_0222157C MOD08_0222157C: ; 0x0222157C push {r3, r4, r5, r6, lr} sub sp, #4 mov r1, #0x90 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02227B70 ldr r0, [r4, #4] bl MOD08_02212458 add r6, r0, #0 ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 add r2, r4, #0 ldr r0, [r4, #4] add r2, #0x5c bl MOD08_022275C0 ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 add r2, r4, #0 ldr r0, [r4, #4] add r2, #0x60 bl MOD08_022275C0 ldr r0, [r4, #4] add r1, r6, #0 bl MOD08_02227470 cmp r0, #3 bne _022215CE mov r1, #1 b _022215D2 _022215CE: mov r1, #0 mvn r1, r1 _022215D2: add r0, r4, #0 add r0, #0x54 strh r1, [r0] ldr r0, [r4, #4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02227470 add r6, r0, #0 ldr r0, [r4, #4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02227470 cmp r6, r0 bne _022215FE mov r0, #1 b _02221600 _022215FE: mov r0, #0 _02221600: str r0, [r4, #0x58] mov r1, #0 add r0, r5, #0 str r1, [r4, #0x68] bl MOD08_02212498 add r2, r4, #0 add r1, r0, #0 add r0, r5, #0 add r2, #0x1c add r3, sp, #0 bl MOD08_02227BAC ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200782C mov r1, #0x5e ldrsh r2, [r4, r1] mov r3, #0x54 sub r0, r0, r2 ldrsh r2, [r4, r3] cmp r2, #0 ble _02221672 add r2, r3, #0 add r2, #0xfb str r2, [r4, #0x6c] sub r3, #0xa4 str r3, [r4, #0x70] mov r2, #0x5c ldrsh r2, [r4, r2] str r2, [r4, #0x74] ldrsh r2, [r4, r1] add r2, r2, r0 str r2, [r4, #0x78] mov r2, #0x62 ldrsh r2, [r4, r2] add r2, r2, r0 str r2, [r4, #0x7c] ldrsh r1, [r4, r1] add r1, r1, r0 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 mov r1, #0xa add r0, #0x84 str r1, [r0] add r0, r4, #0 ldr r1, _022216C8 ; =0xFFFFFD76 add r0, #0x88 str r1, [r0] ldr r0, [r4, #0x24] mov r1, #2 bl FUN_0200782C b _022216B2 _02221672: add r2, r3, #0 sub r2, #0xa4 str r2, [r4, #0x6c] add r3, #0xfb str r3, [r4, #0x70] mov r2, #0x5c ldrsh r2, [r4, r2] str r2, [r4, #0x74] ldrsh r2, [r4, r1] add r2, r2, r0 str r2, [r4, #0x78] mov r2, #0x62 ldrsh r2, [r4, r2] add r2, r2, r0 str r2, [r4, #0x7c] ldrsh r1, [r4, r1] add r1, r1, r0 add r0, r4, #0 add r0, #0x80 str r1, [r0] add r0, r4, #0 ldr r1, _022216C8 ; =0xFFFFFD76 add r0, #0x84 str r1, [r0] add r0, r4, #0 mov r1, #0xa add r0, #0x88 str r1, [r0] ldr r0, [r4, #0x24] mov r1, #2 bl FUN_0200782C _022216B2: add r1, r4, #0 add r1, #0x8c str r0, [r1] ldr r0, [r4, #4] ldr r1, _022216CC ; =MOD08_0222148C add r2, r4, #0 bl MOD08_02212400 add sp, #4 pop {r3, r4, r5, r6, pc} nop _022216C8: .word 0xFFFFFD76 _022216CC: .word MOD08_0222148C thumb_func_start MOD08_022216D0 MOD08_022216D0: ; 0x022216D0 push {r3, r4, lr} sub sp, #4 add r4, r2, #0 ldr r2, [sp, #0x10] str r2, [sp] mov r2, #0x50 sub r2, r2, r3 add r3, r4, #0 bl FUN_02007E40 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022216E8 MOD08_022216E8: ; 0x022216E8 push {r3, r4, r5, r6, lr} sub sp, #4 add r4, r1, #0 add r2, r0, #0 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] cmp r0, #3 bls _022216FC b _0222181E _022216FC: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02221708: ; jump table .short _02221710 - _02221708 - 2 ; case 0 .short _0222176C - _02221708 - 2 ; case 1 .short _022217AE - _02221708 - 2 ; case 2 .short _02221804 - _02221708 - 2 ; case 3 _02221710: ldr r2, [r4, #0x10] add r2, #0x4f str r2, [r4, #0x10] cmp r2, #0x50 blt _02221738 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add sp, #4 add r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] ldr r1, [r4, #0x14] mov r0, #1 eor r0, r1 str r0, [r4, #0x14] mov r0, #0 str r0, [r4, #0x10] pop {r3, r4, r5, r6, pc} _02221738: ldr r0, [r4, #0x14] cmp r0, #0 bne _02221754 mov r0, #2 str r0, [sp] ldr r3, [r4] ldr r0, [r4, #0x1c] add r3, r3, #2 mov r1, #0 lsl r3, r3, #1 bl MOD08_022216D0 add sp, #4 pop {r3, r4, r5, r6, pc} _02221754: mov r0, #2 str r0, [sp] ldr r3, [r4] mov r1, #0x50 add r3, r3, #2 ldr r0, [r4, #0x1c] sub r1, r1, r2 lsl r3, r3, #1 bl MOD08_022216D0 add sp, #4 pop {r3, r4, r5, r6, pc} _0222176C: ldr r0, [r4, #4] mov r3, #0xff sub r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #0xc] lsl r3, r3, #8 add r2, r0, #1 str r2, [r4, #0xc] ldr r6, [r4, #8] ldr r1, [r4, #4] lsl r0, r6, #8 add r5, r0, #0 add r6, #0x50 lsl r0, r6, #0x18 and r5, r3 lsr r0, r0, #0x18 lsl r1, r1, #8 orr r5, r0 ldr r0, _02221868 ; =0x04000040 and r3, r1 lsl r1, r2, #0x18 lsr r1, r1, #0x18 strh r5, [r0] orr r1, r3 strh r1, [r0, #4] add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r4, #0x20 add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _022217AE: ldr r0, [r4, #4] mov r3, #0xff sub r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #0xc] lsl r3, r3, #8 add r2, r0, #1 str r2, [r4, #0xc] ldr r6, [r4, #8] ldr r1, [r4, #4] lsl r0, r6, #8 add r5, r0, #0 add r6, #0x50 lsl r0, r6, #0x18 and r5, r3 lsr r0, r0, #0x18 lsl r1, r1, #8 orr r5, r0 ldr r0, _02221868 ; =0x04000040 and r3, r1 lsl r1, r2, #0x18 lsr r1, r1, #0x18 strh r5, [r0] orr r1, r3 strh r1, [r0, #4] ldr r0, [r4] add r0, r0, #1 str r0, [r4] cmp r0, #0x26 ble _022217FA add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r4, #0x20 add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _022217FA: mov r0, #0 add r4, #0x20 add sp, #4 strb r0, [r4] pop {r3, r4, r5, r6, pc} _02221804: ldr r0, [r4, #0x1c] mov r1, #0xe mov r2, #0 bl FUN_02007558 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] add r4, #0x20 add sp, #4 add r0, r0, #1 strb r0, [r4] pop {r3, r4, r5, r6, pc} _0222181E: mov r0, #1 lsl r0, r0, #0x1a ldr r3, [r0] ldr r1, _0222186C ; =0xFFFF1FFF and r1, r3 add r3, r0, #0 str r1, [r0] add r3, #0x48 ldrh r5, [r3] mov r1, #0x3f bic r5, r1 strh r5, [r3] add r3, r0, #0 add r3, #0x4a ldrh r5, [r3] bic r5, r1 add r1, r0, #0 strh r5, [r3] mov r3, #0 add r1, #0x40 strh r3, [r1] add r0, #0x44 strh r3, [r0] ldr r0, [r4, #0x24] add r1, r2, #0 bl MOD08_02212438 ldr r0, [r4, #0x1c] ldr r2, [r4, #0x18] mov r1, #0x17 bl FUN_02007558 add r0, r4, #0 bl FUN_02016A18 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _02221868: .word 0x04000040 _0222186C: .word 0xFFFF1FFF thumb_func_start MOD08_02221870 MOD08_02221870: ; 0x02221870 push {r4, r5, r6, lr} mov r1, #0x50 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r5, #0 add r1, #0x20 bl MOD08_02227B70 add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_022154D4 str r0, [r4, #0x1c] mov r0, #0 str r0, [r4] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227468 cmp r0, #3 beq _022218B0 cmp r0, #4 bne _022218C4 _022218B0: add r0, r5, #0 bl MOD08_02215574 add r1, r0, #0 sub r1, r1, #1 lsl r1, r1, #0x18 mov r0, #2 lsr r1, r1, #0x18 bl FUN_020178BC _022218C4: ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #0x1c] mov r1, #0x29 bl FUN_0200782C sub r0, r5, r0 lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #0x1c] mov r1, #0x17 bl FUN_0200782C str r0, [r4, #0x18] ldr r0, [r4, #0x1c] mov r1, #0x17 mov r2, #8 bl FUN_02007558 sub r6, #0x28 str r6, [r4, #8] add r5, #0x28 mov r6, #1 lsl r6, r6, #0x1a add r3, r6, #0 str r5, [r4, #4] mov r1, #0 str r1, [r4, #0x10] ldr r0, [r4, #4] add r3, #0x48 str r0, [r4, #0xc] str r1, [r4, #0x14] ldr r1, [r6] ldr r0, _0222197C ; =0xFFFF1FFF and r1, r0 lsr r0, r6, #0xd orr r0, r1 str r0, [r6] ldrh r2, [r3] mov r1, #0x3f mov r0, #0x1f bic r2, r1 orr r0, r2 mov r2, #0x20 orr r0, r2 strh r0, [r3] add r3, r6, #0 add r3, #0x4a ldrh r5, [r3] mov r0, #0x1b bic r5, r1 orr r0, r5 orr r0, r2 strh r0, [r3] ldr r2, [r4, #8] mov r0, #0xff lsl r1, r2, #8 add r2, #0x50 lsl r0, r0, #8 lsl r2, r2, #0x18 and r1, r0 lsr r2, r2, #0x18 orr r2, r1 add r1, r6, #0 ldr r5, [r4, #0xc] ldr r3, [r4, #4] add r1, #0x40 strh r2, [r1] lsl r1, r3, #8 and r1, r0 lsl r0, r5, #0x18 lsr r0, r0, #0x18 orr r0, r1 add r6, #0x44 strh r0, [r6] ldr r0, [r4, #0x24] ldr r1, _02221980 ; =MOD08_022216E8 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} nop _0222197C: .word 0xFFFF1FFF _02221980: .word MOD08_022216E8 thumb_func_start MOD08_02221984 MOD08_02221984: ; 0x02221984 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 mov r1, #0xe8 mov r2, #0xea add r5, r0, #0 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #8] add r0, #0xc bl MOD08_02217E58 str r0, [sp] add r0, r4, #0 add r0, #0x38 bl MOD08_02218524 str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] ldr r0, [r4, #4] bl FUN_0200BC1C mov r1, #0 add r2, sp, #0 _022219B8: ldr r0, [r2] cmp r0, #1 beq _022219EE add r1, r1, #1 add r2, r2, #4 cmp r1, #3 blt _022219B8 mov r2, #0xe8 ldrsh r2, [r4, r2] ldr r0, [r4, #8] mov r1, #0 bl FUN_02007558 mov r2, #0xea ldrsh r2, [r4, r2] ldr r0, [r4, #8] mov r1, #1 sub r2, #8 bl FUN_02007558 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _022219EE: add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022219F4 MOD08_022219F4: ; 0x022219F4 push {r4, r5, r6, r7, lr} sub sp, #0x44 add r5, r0, #0 bl MOD08_02212014 mov r1, #0xf0 bl FUN_02016998 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #4] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #8] bl FUN_0200782C add r1, r4, #0 add r1, #0xe8 strh r0, [r1] ldr r0, [r4, #8] mov r1, #1 bl FUN_0200782C add r1, r4, #0 add r1, #0xea strh r0, [r1] ldr r0, [r4, #8] mov r1, #0x29 bl FUN_0200782C add r1, r4, #0 add r1, #0xec strh r0, [r1] mov r0, #0xea ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xea add r1, #8 strh r1, [r0] add r0, r4, #0 add r0, #0xc mov r1, #1 mov r2, #8 bl MOD08_02218654 add r0, sp, #0x20 mov r1, #1 mov r2, #0xa bl MOD08_02218654 ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C ldr r1, [r4, #0x18] mov r6, #0 add r2, r1, #0 mul r2, r0 str r2, [r4, #0x18] ldr r1, [sp, #0x2c] add r5, r4, #0 mul r0, r1 str r0, [sp, #0x2c] mov r7, #0x64 _02221A8C: ldr r0, [r4] add r1, r6, #0 bl MOD08_022124D8 str r0, [r5, #0x30] add r1, r7, #0 bl FUN_0200C6C4 ldr r0, [r5, #0x30] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r5, #0x30] mov r1, #1 bl FUN_0200C90C add r6, r6, #1 add r5, r5, #4 cmp r6, #2 blt _02221A8C mov r0, #0xea ldrsh r1, [r4, r0] mov r0, #0xec ldrsh r0, [r4, r0] mov r3, #0xe8 ldr r2, _02221B04 ; =MOD08_02217D98 sub r0, r1, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] mov r0, #2 str r0, [sp, #4] str r0, [sp, #8] mov r1, #0 str r1, [sp, #0xc] ldr r0, [r4, #0x30] str r0, [sp, #0x10] ldr r0, [r4, #0x34] str r0, [sp, #0x14] str r1, [sp, #0x18] str r1, [sp, #0x1c] add r0, r4, #0 ldrsh r3, [r4, r3] add r0, #0x38 add r1, sp, #0x20 bl MOD08_0221847C mov r1, #0 mvn r1, r1 ldr r0, [r4] add r2, r1, #0 bl MOD08_02227994 ldr r0, [r4] ldr r1, _02221B08 ; =MOD08_02221984 add r2, r4, #0 bl MOD08_02212400 add sp, #0x44 pop {r4, r5, r6, r7, pc} .align 2, 0 _02221B04: .word MOD08_02217D98 _02221B08: .word MOD08_02221984 thumb_func_start MOD08_02221B0C MOD08_02221B0C: ; 0x02221B0C push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #6 bls _02221B1C b _02221C62 _02221B1C: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02221B28: ; jump table .short _02221B36 - _02221B28 - 2 ; case 0 .short _02221B78 - _02221B28 - 2 ; case 1 .short _02221BAE - _02221B28 - 2 ; case 2 .short _02221BC6 - _02221B28 - 2 ; case 3 .short _02221BF6 - _02221B28 - 2 ; case 4 .short _02221C0E - _02221B28 - 2 ; case 5 .short _02221C32 - _02221B28 - 2 ; case 6 _02221B36: add r0, r4, #0 add r0, #0x10 bl MOD08_02217ECC cmp r0, #0 beq _02221B58 mov r2, #0x48 mov r3, #0x4a add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_02217CD0 add sp, #8 pop {r3, r4, r5, pc} _02221B58: mov r2, #0 str r2, [sp] mov r0, #2 str r0, [sp, #4] mov r1, #0x10 add r0, r4, #0 ldrsh r1, [r4, r1] add r0, #0x10 add r3, r2, #0 bl MOD08_02217E80 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _02221B78: add r0, r4, #0 add r0, #0x34 bl MOD08_02218058 cmp r0, #0 beq _02221B92 ldr r0, [r4, #0xc] ldr r2, [r4, #0x34] mov r1, #9 bl FUN_02007558 add sp, #8 pop {r3, r4, r5, pc} _02221B92: add r0, r4, #0 ldr r1, [r4, #0x34] add r0, #0x34 mov r2, #0 mov r3, #4 bl MOD08_02218008 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] mov r0, #2 strh r0, [r4, #8] pop {r3, r4, r5, pc} _02221BAE: mov r0, #8 ldrsh r1, [r4, r0] sub r1, r1, #1 strh r1, [r4, #8] ldrsh r0, [r4, r0] cmp r0, #0 bge _02221C62 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _02221BC6: add r0, r4, #0 add r0, #0x10 bl MOD08_02217ECC cmp r0, #0 beq _02221BE8 mov r2, #0x48 mov r3, #0x4a add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_02217CD0 add sp, #8 pop {r3, r4, r5, pc} _02221BE8: ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] mov r0, #0x20 strh r0, [r4, #8] pop {r3, r4, r5, pc} _02221BF6: mov r0, #8 ldrsh r1, [r4, r0] sub r1, r1, #1 strh r1, [r4, #8] ldrsh r0, [r4, r0] cmp r0, #0 bge _02221C62 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _02221C0E: add r0, r4, #0 add r0, #0x34 bl MOD08_02218058 cmp r0, #0 beq _02221C28 ldr r0, [r4, #0xc] ldr r2, [r4, #0x34] mov r1, #9 bl FUN_02007558 add sp, #8 pop {r3, r4, r5, pc} _02221C28: ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _02221C32: mov r2, #0x48 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02007558 mov r2, #0x4a ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #0xc] mov r1, #9 mov r2, #0 bl FUN_02007558 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _02221C62: add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02221C68 MOD08_02221C68: ; 0x02221C68 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r5, r0, #0 bl MOD08_02212014 mov r1, #0xf0 bl FUN_02016998 add r4, r0, #0 str r5, [r4] mov r0, #0 str r0, [r4, #4] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #0xc] bl FUN_0200782C add r1, r4, #0 add r1, #0x48 strh r0, [r1] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C add r1, r4, #0 add r1, #0x4a strh r0, [r1] mov r1, #0 add r0, r4, #0 str r1, [sp] mov r2, #3 str r2, [sp, #4] add r0, #0x10 sub r2, #0x23 add r3, r1, #0 bl MOD08_02217E80 add r0, r4, #0 ldr r2, _02221D78 ; =0x00000E38 add r0, #0x34 mov r1, #0 mov r3, #8 bl MOD08_02218008 ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C ldr r1, [r4, #0x18] add r2, r1, #0 mul r2, r0 str r2, [r4, #0x18] ldr r1, [r4, #0x3c] mul r0, r1 str r0, [r4, #0x3c] ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C add r7, r0, #0 ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 add r6, r0, #0 ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r6, #3 bne _02221D36 cmp r0, #3 bne _02221D36 mov r1, #0xa add r2, r1, #0 ldr r0, [r4, #0xc] sub r2, #0x32 bl FUN_02007558 ldr r0, [r4, #0xc] mov r1, #0xb mov r2, #0x28 bl FUN_02007558 b _02221D6A _02221D36: cmp r6, #4 bne _02221D54 cmp r0, #4 bne _02221D54 ldr r0, [r4, #0xc] mov r1, #0xa mov r2, #0x28 bl FUN_02007558 ldr r0, [r4, #0xc] mov r1, #0xb mov r2, #0x28 bl FUN_02007558 b _02221D6A _02221D54: mov r2, #0x28 ldr r0, [r4, #0xc] mov r1, #0xa mul r2, r7 bl FUN_02007558 ldr r0, [r4, #0xc] mov r1, #0xb mov r2, #0x28 bl FUN_02007558 _02221D6A: ldr r0, [r4] ldr r1, _02221D7C ; =MOD08_02221B0C add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02221D78: .word 0x00000E38 _02221D7C: .word MOD08_02221B0C thumb_func_start MOD08_02221D80 MOD08_02221D80: ; 0x02221D80 push {r4, r5, r6, lr} add r5, r0, #0 add r0, r1, #0 add r1, r2, #0 add r2, r3, #0 ldr r4, [sp, #0x10] bl FUN_0200C154 str r0, [r5] add r6, r4, #4 add r3, r5, #4 mov r2, #4 _02221D98: ldmia r6!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _02221D98 ldr r0, [r6] add r2, r5, #0 str r0, [r3] add r3, r4, #0 add r3, #0x28 ldmia r3!, {r0, r1} add r2, #0x28 stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r3] str r0, [r2] mov r0, #0x3c ldrsh r0, [r4, r0] strh r0, [r5, #0x3c] mov r0, #0x3e ldrsh r0, [r4, r0] strh r0, [r5, #0x3e] mov r0, #0x40 ldrsh r1, [r4, r0] add r0, r5, #0 add r0, #0x40 strh r1, [r0] ldr r0, [r4, #0x44] mov r1, #0 str r0, [r5, #0x44] str r1, [r5, #0x48] ldr r0, [r5] bl FUN_0200C644 ldr r0, [r5] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5] mov r1, #1 bl FUN_0200C6B0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_02221DF0 MOD08_02221DF0: ; 0x02221DF0 ldr r3, _02221DF8 ; =0x0200C3DD ldr r0, [r0] bx r3 nop _02221DF8: .word 0x0200C3DD thumb_func_start MOD08_02221DFC MOD08_02221DFC: ; 0x02221DFC ldr r3, _02221E04 ; =0x0200C645 ldr r0, [r0] bx r3 nop _02221E04: .word 0x0200C645 thumb_func_start MOD08_02221E08 MOD08_02221E08: ; 0x02221E08 push {r4, lr} sub sp, #0x10 add r4, r0, #0 ldr r0, [r4, #0x48] cmp r0, #0 bne _02221E1A add sp, #0x10 mov r0, #1 pop {r4, pc} _02221E1A: ldr r0, [r4, #0x44] cmp r0, #0 beq _02221E2A cmp r0, #1 beq _02221E2A cmp r0, #2 beq _02221EAC b _02221EB2 _02221E2A: add r0, r4, #4 bl MOD08_02217D98 cmp r0, #0 beq _02221E6A add r0, r4, #0 add r0, #0x28 bl MOD08_022180C4 mov r0, #0x3c ldrsh r1, [r4, r0] ldr r0, [r4, #0x28] add r0, r1, r0 str r0, [r4, #0x1c] mov r1, #0x3e ldrsh r2, [r4, r1] mov r1, #4 ldrsh r1, [r4, r1] ldr r0, [r4] add r1, r2, r1 mov r2, #0x40 ldrsh r3, [r4, r2] mov r2, #6 ldrsh r2, [r4, r2] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 b _02221EB2 _02221E6A: ldr r0, [r4, #0x44] cmp r0, #1 bge _02221EA4 cmp r0, #0 bne _02221E92 ldr r1, [r4, #0xc] ldr r2, _02221EB8 ; =0x00007FFF lsl r1, r1, #0x10 str r2, [sp] ldr r0, [r4, #0x10] lsr r1, r1, #0x10 str r0, [sp, #4] ldr r0, [r4, #0x18] add r3, r1, #0 str r0, [sp, #8] ldr r0, _02221EBC ; =0x0000071C str r0, [sp, #0xc] add r0, r4, #4 bl MOD08_02217D44 _02221E92: ldr r0, [r4, #8] ldr r2, _02221EC0 ; =0x0000FFFF str r0, [sp] add r0, r4, #0 ldr r3, _02221EC4 ; =0xFFFFF000 add r0, #0x28 mov r1, #0 bl MOD08_022180AC _02221EA4: ldr r0, [r4, #0x44] add r0, r0, #1 str r0, [r4, #0x44] b _02221EB2 _02221EAC: add sp, #0x10 mov r0, #0 pop {r4, pc} _02221EB2: mov r0, #1 add sp, #0x10 pop {r4, pc} .align 2, 0 _02221EB8: .word 0x00007FFF _02221EBC: .word 0x0000071C _02221EC0: .word 0x0000FFFF _02221EC4: .word 0xFFFFF000 thumb_func_start MOD08_02221EC8 MOD08_02221EC8: ; 0x02221EC8 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r7, r0, #0 add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] cmp r0, #6 bhi _02221F3C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02221EE4: ; jump table .short _02221EF2 - _02221EE4 - 2 ; case 0 .short _02221F0A - _02221EE4 - 2 ; case 1 .short _02221F56 - _02221EE4 - 2 ; case 2 .short _02221F6C - _02221EE4 - 2 ; case 3 .short _0222200C - _02221EE4 - 2 ; case 4 .short _02222036 - _02221EE4 - 2 ; case 5 .short _02222076 - _02221EE4 - 2 ; case 6 _02221EF2: add r0, r4, #0 add r0, #0xc bl MOD08_02221E08 add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] b _022220A0 _02221F0A: add r0, r4, #0 add r0, #0xfc ldr r1, [r0] add r0, r4, #0 add r1, #0xa add r0, #0xfc str r1, [r0] add r0, r4, #0 add r0, #0xfc ldr r0, [r0] mov r1, #0xa bl _s32_div_f mov r1, #0x1f sub r1, r1, r0 lsl r1, r1, #8 orr r1, r0 ldr r0, _022220A8 ; =0x04000052 strh r1, [r0] add r0, r4, #0 add r0, #0xfc ldr r1, [r0] ldr r0, _022220AC ; =0x00000136 cmp r1, r0 bge _02221F3E _02221F3C: b _022220A0 _02221F3E: ldr r0, [r4, #0xc] mov r1, #0 bl FUN_0200C90C add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] b _022220A0 _02221F56: ldr r1, _022220B0 ; =0x0000FFFF ldr r0, _022220A8 ; =0x04000052 strh r1, [r0] add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] b _022220A0 _02221F6C: add r0, r4, #0 add r0, #0xf4 ldr r0, [r0] cmp r0, #0 bgt _02221FB0 add r0, r4, #0 add r0, #0xf8 ldr r0, [r0] mov r2, #0x4c add r3, r0, #0 mul r3, r2 add r0, r4, r3 mov r1, #1 add r0, #0xa0 str r1, [r0] add r0, r4, #0 add r0, #0xf8 ldr r0, [r0] mul r2, r0 add r0, r4, r2 ldr r0, [r0, #0x58] bl FUN_0200C644 add r0, r4, #0 add r0, #0xf8 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf8 str r1, [r0] add r0, r4, #0 mov r1, #8 add r0, #0xf4 str r1, [r0] _02221FB0: add r0, r4, #0 add r0, #0xf8 ldr r0, [r0] cmp r0, #2 bge _02221FC8 add r0, r4, #0 add r0, #0xf4 ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0xf4 str r1, [r0] _02221FC8: add r0, r4, #0 add r0, #0xc bl MOD08_02221E08 add r5, r4, #0 add r6, r0, #0 mov r7, #0 add r5, #0x58 _02221FD8: add r0, r5, #0 bl MOD08_02221E08 str r0, [sp] cmp r0, #0 bne _02221FEC add r0, r5, #0 mov r1, #0 bl MOD08_02221DFC _02221FEC: ldr r0, [sp] add r7, r7, #1 orr r6, r0 add r5, #0x4c cmp r7, #2 blt _02221FD8 cmp r6, #0 bne _022220A0 add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] b _022220A0 _0222200C: ldr r0, [r4, #0xc] bl FUN_0200C5A8 ldr r0, [r4, #0xc] ldr r0, [r0] bl FUN_02020388 cmp r0, #0 bne _022220A0 ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200C90C add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] b _022220A0 _02222036: add r0, r4, #0 add r0, #0xfc ldr r1, [r0] add r0, r4, #0 sub r1, #0xa add r0, #0xfc str r1, [r0] add r0, r4, #0 add r0, #0xfc ldr r0, [r0] mov r1, #0xa bl _s32_div_f mov r1, #0x1f sub r1, r1, r0 lsl r1, r1, #8 orr r1, r0 ldr r0, _022220A8 ; =0x04000052 strh r1, [r0] add r0, r4, #0 add r0, #0xfc ldr r0, [r0] cmp r0, #0 bgt _022220A0 add r0, r4, #0 add r0, #0xf0 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xf0 str r1, [r0] b _022220A0 _02222076: add r5, r4, #0 mov r6, #0 add r5, #0x58 _0222207C: add r0, r5, #0 bl MOD08_02221DF0 add r6, r6, #1 add r5, #0x4c cmp r6, #2 blt _0222207C ldr r0, [r4, #0xc] bl FUN_0200C3DC ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _022220A0: ldr r0, [r4, #8] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _022220A8: .word 0x04000052 _022220AC: .word 0x00000136 _022220B0: .word 0x0000FFFF thumb_func_start MOD08_022220B4 MOD08_022220B4: ; 0x022220B4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x48 add r5, r0, #0 add r6, r1, #0 add r7, r2, #0 str r3, [sp, #0x10] bl MOD08_02212014 mov r1, #1 lsl r1, r1, #8 bl FUN_02016998 add r4, r0, #0 str r5, [r4] str r6, [r4, #4] str r7, [r4, #8] mov r1, #8 add r0, #0xf4 str r1, [r0] add r0, r4, #0 mov r1, #0 add r0, #0xf8 str r1, [r0] add r0, r4, #0 add r0, #0xf0 str r1, [r0] add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C ldr r1, [sp, #0x10] lsl r0, r0, #0x11 str r1, [r4, #0xc] mov r1, #0 str r1, [r4, #0x50] ldr r2, _022221EC ; =0x0000BFFF neg r0, r0 str r2, [sp] str r0, [sp, #4] ldr r1, _022221F0 ; =0xFFFF8000 ldr r0, _022221F4 ; =0x0000071C str r1, [sp, #8] str r0, [sp, #0xc] add r0, r4, #0 lsr r1, r1, #0x12 add r0, #0x10 add r3, r1, #0 bl MOD08_02217D44 ldr r0, [r4, #0x14] ldr r2, _022221F8 ; =0x0000FFFF str r0, [sp] add r0, r4, #0 ldr r3, _022221FC ; =0xFFFFF000 add r0, #0x34 mov r1, #0 bl MOD08_022180AC add r0, r4, #0 ldr r1, [r4, #0x28] add r0, #0x48 strh r1, [r0] mov r0, #1 str r0, [r4, #0x54] add r0, r5, #0 add r1, r6, #0 mov r2, #0 bl MOD08_02217B98 add r1, r4, #0 add r1, #0x4a strh r0, [r1] add r0, r5, #0 add r1, r6, #0 mov r2, #1 bl MOD08_02217B98 add r1, r4, #0 add r1, #0x4c strh r0, [r1] mov r1, #0x4a mov r2, #0x4c ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] bl FUN_0200C714 ldr r0, [r4, #0xc] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200C6B0 ldr r1, [r4] add r0, sp, #0x14 bl MOD08_02215474 mov r0, #0x4a ldrsh r0, [r4, r0] add r1, sp, #0x14 add r5, r4, #0 strh r0, [r1] mov r0, #0x4c ldrsh r0, [r4, r0] add r7, r4, #0 mov r6, #0 strh r0, [r1, #2] add r5, #0x58 add r7, #0xc _0222219A: str r7, [sp] ldr r1, [r4, #4] ldr r2, [r4, #8] add r0, r5, #0 add r3, sp, #0x14 bl MOD08_02221D80 add r6, r6, #1 add r5, #0x4c cmp r6, #2 blt _0222219A add r0, r4, #0 mov r1, #0 add r0, #0xfc str r1, [r0] ldr r0, [r4] mov r2, #0x1f bl MOD08_02227994 ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200C90C mov r6, #0 add r5, r4, #0 mov r7, #1 _022221CE: ldr r0, [r5, #0x58] add r1, r7, #0 bl FUN_0200C90C add r6, r6, #1 add r5, #0x4c cmp r6, #2 blt _022221CE ldr r0, [r4] ldr r1, _02222200 ; =MOD08_02221EC8 add r2, r4, #0 bl MOD08_02212400 add sp, #0x48 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _022221EC: .word 0x0000BFFF _022221F0: .word 0xFFFF8000 _022221F4: .word 0x0000071C _022221F8: .word 0x0000FFFF _022221FC: .word 0xFFFFF000 _02222200: .word MOD08_02221EC8 thumb_func_start MOD08_02222204 MOD08_02222204: ; 0x02222204 push {r4, lr} sub sp, #8 add r4, r0, #0 mov r2, #0x60 ldrsh r3, [r4, r2] mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0x5c] mov r1, #0 add r2, r3, r2 bl FUN_02007558 mov r2, #0x62 ldrsh r3, [r4, r2] mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0x5c] mov r1, #1 add r2, r3, r2 bl FUN_02007558 mov r1, #0x60 ldrsh r2, [r4, r1] mov r1, #0x10 ldrsh r1, [r4, r1] ldr r0, [r4, #0x58] add r1, r2, r1 mov r2, #0x62 ldrsh r3, [r4, r2] mov r2, #0x12 ldrsh r2, [r4, r2] lsl r1, r1, #0x10 asr r1, r1, #0x10 add r3, r3, r2 mov r2, #0x66 ldrsh r2, [r4, r2] sub r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 add r0, r4, #0 add r0, #0x34 add r1, sp, #4 add r2, sp, #0 bl MOD08_0221825C mov r0, #0x64 ldrsh r0, [r4, r0] bl _fflt add r1, r0, #0 ldr r0, _02222298 ; =0x3DCCCCCD bl _fmul add r1, r0, #0 ldr r0, [sp, #4] bl _fadd add r1, r0, #0 str r1, [sp, #4] ldr r0, [r4, #0x58] ldr r2, [sp] bl FUN_0200C884 mov r0, #0x64 ldrsh r1, [r4, r0] sub r0, #0x65 add r4, #0x64 mul r0, r1 strh r0, [r4] add sp, #8 pop {r4, pc} nop _02222298: .word 0x3DCCCCCD thumb_func_start MOD08_0222229C MOD08_0222229C: ; 0x0222229C push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r2, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _022222B4 cmp r0, #1 beq _022222EE cmp r0, #2 beq _0222232A b _0222233C _022222B4: add r0, r4, #0 add r0, #0x10 bl MOD08_022183F0 add r0, r4, #0 add r0, #0x34 bl MOD08_02218224 add r5, r0, #0 add r0, r4, #0 bl MOD08_02222204 cmp r5, #0 bne _0222233C mov r2, #0xa str r2, [sp] str r2, [sp, #4] mov r0, #4 str r0, [sp, #8] add r0, r4, #0 add r0, #0x34 mov r1, #0xc mov r3, #0xf bl MOD08_022181A8 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _0222233C _022222EE: add r0, r4, #0 add r0, #0x10 bl MOD08_022183F0 add r0, r4, #0 add r0, #0x34 bl MOD08_02218224 add r5, r0, #0 add r0, r4, #0 bl MOD08_02222204 cmp r5, #0 bne _0222233C mov r2, #0x60 ldrsh r2, [r4, r2] ldr r0, [r4, #0x5c] mov r1, #0 bl FUN_02007558 mov r2, #0x62 ldrsh r2, [r4, r2] ldr r0, [r4, #0x5c] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _0222233C _0222232A: ldr r0, [r4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r4, r5, pc} _0222233C: ldr r0, [r4, #4] bl FUN_0200BC1C add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02222348 MOD08_02222348: ; 0x02222348 push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 bl MOD08_02212014 mov r1, #0x68 bl FUN_02016998 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #4] mov r0, #0 str r0, [r4, #8] str r0, [r4, #0xc] ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #0x5c] bl FUN_0200782C add r1, r4, #0 add r1, #0x60 strh r0, [r1] ldr r0, [r4, #0x5c] mov r1, #1 bl FUN_0200782C add r1, r4, #0 add r1, #0x62 strh r0, [r1] ldr r0, [r4, #0x5c] mov r1, #0x29 bl FUN_0200782C add r1, r4, #0 add r1, #0x66 strh r0, [r1] mov r0, #6 str r0, [sp] add r0, r4, #0 add r0, #0x10 mov r1, #2 mov r2, #0 mov r3, #1 bl MOD08_022183C0 ldr r0, [r4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x58] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x58] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x58] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x58] mov r1, #1 bl FUN_0200C6B0 mov r0, #0xf str r0, [sp] mov r1, #0xa str r1, [sp, #4] mov r0, #7 str r0, [sp, #8] add r0, r4, #0 add r0, #0x34 mov r2, #0xc add r3, r1, #0 bl MOD08_022181A8 add r0, r4, #0 mov r1, #1 add r0, #0x64 strh r1, [r0] ldr r0, [r4] mov r1, #0x1c mov r2, #0xf bl MOD08_02227994 ldr r0, [r4] ldr r1, _02222414 ; =MOD08_0222229C add r2, r4, #0 bl MOD08_02212400 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _02222414: .word MOD08_0222229C thumb_func_start MOD08_02222418 MOD08_02222418: ; 0x02222418 mov r2, #0x12 ldrsh r2, [r0, r2] mov r3, #0x10 ldrsh r0, [r0, r3] neg r2, r2 lsl r2, r2, #0x10 neg r0, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 orr r0, r2 mov r2, #3 ldr r3, _02222434 ; =0x020CE1FC lsl r2, r2, #8 bx r3 .align 2, 0 _02222434: .word 0x020CE1FC thumb_func_start MOD08_02222438 MOD08_02222438: ; 0x02222438 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5, #0x18] bl MOD08_02218970 str r0, [sp, #0xc] ldr r1, [sp, #0xc] add r0, r5, #0 bl MOD08_02222418 add r0, r5, #0 add r0, #0x1c bl MOD08_02217ECC str r0, [sp, #8] mov r0, #0x14 ldrsh r4, [r5, r0] mov r0, #0x16 ldrsh r0, [r5, r0] cmp r4, r0 bgt _022224D8 ldr r1, [sp, #0xc] lsl r2, r4, #2 add r1, r1, r2 str r1, [sp] _0222246C: ldr r1, [sp] sub r0, r0, r4 ldr r2, [r1] lsl r1, r2, #0x10 asr r1, r1, #0x10 str r1, [sp, #4] lsr r1, r2, #0x10 lsl r1, r1, #0x10 asr r7, r1, #0x10 mov r1, #0x1e ldrsh r1, [r5, r1] mul r0, r1 mov r1, #0x64 bl _s32_div_f sub r0, r7, r0 lsl r0, r0, #0x10 asr r7, r0, #0x10 mov r0, #0x1c ldrsh r1, [r5, r0] mov r0, #0x14 ldrsh r0, [r5, r0] add r0, #0x28 sub r0, r0, r4 mul r0, r1 mov r1, #0x64 bl _s32_div_f ldr r1, [sp, #4] sub r0, r1, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] sub r6, r4, #1 bpl _022224B4 add r6, #0xc0 _022224B4: ldr r0, [sp, #4] lsl r1, r7, #0x10 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsr r1, r1, #0x10 bl MOD08_02218998 ldr r1, [sp, #0xc] lsl r2, r6, #2 str r0, [r1, r2] ldr r0, [sp] add r4, r4, #1 add r0, r0, #4 str r0, [sp] mov r0, #0x16 ldrsh r0, [r5, r0] cmp r4, r0 ble _0222246C _022224D8: ldr r0, [sp, #8] add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_022224E0 MOD08_022224E0: ; 0x022224E0 push {r4, r5, r6, lr} sub sp, #8 add r4, r1, #0 add r6, r0, #0 ldr r0, [r4, #4] cmp r0, #4 bhi _02222548 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022224FA: ; jump table .short _02222504 - _022224FA - 2 ; case 0 .short _02222536 - _022224FA - 2 ; case 1 .short _0222255E - _022224FA - 2 ; case 2 .short _022225AE - _022224FA - 2 ; case 3 .short _022225CE - _022224FA - 2 ; case 4 _02222504: add r0, r4, #0 bl MOD08_02222438 cmp r0, #0 bne _02222548 ldr r0, [r4, #4] mov r1, #0x1f add r0, r0, #1 str r0, [r4, #4] ldr r0, [r4] mov r2, #0 bl MOD08_02227A00 mov r1, #0x1f mov r2, #0 str r1, [sp] mov r0, #0x10 add r4, #0x40 str r0, [sp, #4] add r0, r4, #0 add r3, r2, #0 bl MOD08_022186D4 add sp, #8 pop {r4, r5, r6, pc} _02222536: add r0, r4, #0 bl MOD08_02222438 add r0, r4, #0 add r0, #0x40 bl MOD08_02218704 cmp r0, #0 bne _0222254A _02222548: b _02222650 _0222254A: ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #0x18] bl MOD08_02218984 mov r0, #0 add sp, #8 str r0, [r4, #8] pop {r4, r5, r6, pc} _0222255E: ldr r0, [r4] bl MOD08_02212490 mov r3, #0x10 ldrsh r3, [r4, r3] mov r1, #2 mov r2, #0 neg r3, r3 bl FUN_020179E0 ldr r0, [r4] bl MOD08_02212490 mov r3, #0x12 ldrsh r3, [r4, r3] mov r1, #2 mov r2, #3 neg r3, r3 bl FUN_020179E0 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] cmp r0, #8 ble _02222650 mov r1, #0 str r1, [sp] mov r0, #0x10 str r0, [sp, #4] add r0, r4, #0 mov r2, #0x1f add r0, #0x40 add r3, r2, #0 bl MOD08_022186D4 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, r6, pc} _022225AE: add r0, r4, #0 add r0, #0x40 bl MOD08_02218704 cmp r0, #0 beq _02222650 ldr r0, [r4, #0xc] mov r1, #6 mov r2, #0 bl FUN_02007558 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, r6, pc} _022225CE: ldr r0, [r4, #0x18] bl MOD08_0221894C ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] mov r1, #1 bl MOD08_02215600 add r1, r0, #0 lsl r0, r5, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 lsl r1, r1, #0x18 mov r0, #0 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] bl MOD08_02212014 add r3, r0, #0 lsl r0, r5, #0x18 mov r1, #1 lsr r0, r0, #0x18 lsl r1, r1, #0xe mov r2, #0 bl FUN_02017F18 ldr r0, [r4] bl MOD08_02212490 add r5, r0, #0 ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl FUN_02018744 ldr r0, [r4] add r1, r6, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _02222650: add sp, #8 pop {r4, r5, r6, pc} thumb_func_start MOD08_02222654 MOD08_02222654: ; 0x02222654 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r5, r0, #0 bl MOD08_02212014 mov r1, #0x68 bl FUN_02016998 mov r1, #0 mov r2, #0x68 add r4, r0, #0 bl Call_FillMemWithValue ldr r1, _022227BC ; =MOD08_022224E0 str r5, [r4] add r0, r5, #0 add r2, r4, #0 bl MOD08_02212400 str r0, [sp, #0x14] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x10] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x12] ldr r0, [r4, #0xc] mov r1, #0x29 bl FUN_0200782C mov r1, #0x12 ldrsh r2, [r4, r1] sub r0, r2, r0 strh r0, [r4, #0x12] mov r0, #0x10 ldrsh r0, [r4, r0] mov r2, #1 sub r0, #0x28 strh r0, [r4, #0x10] ldrsh r0, [r4, r1] mov r1, #6 sub r0, #0x28 strh r0, [r4, #0x12] ldr r0, [r4, #0xc] bl FUN_02007558 ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C add r6, r0, #0 mov r0, #0x12 ldrsh r1, [r4, r0] sub r1, #8 strh r1, [r4, #0x14] ldrsh r0, [r4, r0] add r0, #0x58 strh r0, [r4, #0x16] mov r0, #0x14 ldrsh r0, [r4, r0] cmp r0, #0 bge _022226F0 mov r0, #0 strh r0, [r4, #0x14] _022226F0: mov r0, #0x16 ldrsh r0, [r4, r0] cmp r0, #0xc0 ble _022226FC mov r0, #0xc0 strh r0, [r4, #0x16] _022226FC: add r0, r5, #0 mov r1, #1 bl MOD08_022155C4 add r7, r0, #0 ldr r0, [sp, #0x14] bl FUN_0201B6CC str r0, [sp, #0x18] ldrh r0, [r4, #0x10] ldrh r1, [r4, #0x12] bl MOD08_02218998 str r0, [sp, #0x1c] add r0, r5, #0 bl MOD08_02212014 mov r1, #0x50 str r1, [sp] ldr r1, [sp, #0x18] str r7, [sp, #4] add r1, r1, #1 str r1, [sp, #8] ldr r1, [sp, #0x1c] ldr r2, _022227C0 ; =0x0000038E str r1, [sp, #0xc] str r0, [sp, #0x10] mov r0, #0x14 mov r1, #0x16 ldrsh r0, [r4, r0] ldrsh r1, [r4, r1] lsl r3, r6, #0xf lsl r0, r0, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl MOD08_022188DC str r0, [r4, #0x18] mov r0, #0x28 str r0, [sp] mov r0, #0x18 str r0, [sp, #4] add r0, r4, #0 mov r1, #0 add r0, #0x1c mov r2, #0x50 add r3, r1, #0 bl MOD08_02217E80 ldr r0, [r4, #0x24] add r1, r0, #0 mul r1, r6 str r1, [r4, #0x24] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 sub r0, r0, #3 cmp r0, #1 bhi _022227AE ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 lsl r0, r5, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 add r1, r1, #1 lsl r1, r1, #0x18 mov r0, #0 lsr r1, r1, #0x18 bl FUN_020178BC _022227AE: ldr r0, [sp, #0x14] add r1, r4, #0 bl MOD08_022224E0 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} nop _022227BC: .word MOD08_022224E0 _022227C0: .word 0x0000038E thumb_func_start MOD08_022227C4 MOD08_022227C4: ; 0x022227C4 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 ldr r0, [r4, #8] cmp r0, #3 bhi _02222874 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022227DE: ; jump table .short _022227E6 - _022227DE - 2 ; case 0 .short _0222280C - _022227DE - 2 ; case 1 .short _0222281E - _022227DE - 2 ; case 2 .short _02222862 - _022227DE - 2 ; case 3 _022227E6: add r0, r4, #0 add r0, #0x38 bl MOD08_02218080 ldr r2, [r4, #0x38] mov r1, #0x1f sub r1, r1, r2 lsl r1, r1, #8 orr r2, r1 ldr r1, _02222880 ; =0x04000052 cmp r0, #0 strh r2, [r1] bne _02222874 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #0 str r0, [r4, #0xc] b _02222874 _0222280C: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] cmp r0, #0x20 ble _02222874 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02222874 _0222281E: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 add r5, r0, #0 add r0, r4, #0 add r0, #0x14 add r1, sp, #4 add r2, sp, #0 bl MOD08_0221825C ldr r0, [r4, #0x4c] cmp r0, #1 bne _02222844 ldr r1, [sp, #4] mov r0, #0 bl _fsub str r0, [sp, #4] _02222844: ldr r0, [r4, #0x10] ldr r1, [sp, #4] ldr r2, [sp] bl FUN_0200C884 cmp r5, #0 bne _02222874 ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02222874 _02222862: ldr r0, [r4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, pc} _02222874: ldr r0, [r4, #4] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} nop _02222880: .word 0x04000052 thumb_func_start MOD08_02222884 MOD08_02222884: ; 0x02222884 push {r4, r5, lr} sub sp, #0xc add r5, r1, #0 add r2, r0, #0 ldr r0, [r5, #4] cmp r0, #0 beq _022228A0 cmp r0, #1 beq _02222928 cmp r0, #2 bne _0222289C b _022229B4 _0222289C: add sp, #0xc pop {r4, r5, pc} _022228A0: add r0, r5, #0 add r0, #0x14 bl MOD08_022183F0 mov r2, #0x38 mov r3, #0x3a add r0, r5, #0 ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] ldr r1, [r5, #8] add r0, #0x14 bl MOD08_02217CD0 ldr r0, [r5, #0x10] cmp r0, #1 bne _022228DA mov r3, #0x3a ldrsh r4, [r5, r3] ldr r3, [r5, #0x3c] mov r2, #0x38 sub r3, r4, r3 add r0, r5, #0 lsl r3, r3, #0x10 ldrsh r2, [r5, r2] ldr r1, [r5, #0xc] add r0, #0x14 asr r3, r3, #0x10 bl MOD08_02217C94 _022228DA: ldr r0, [r5, #8] bl FUN_02007F20 cmp r0, #0 bne _022229C2 mov r2, #0 str r2, [sp] ldr r0, [r5, #8] mov r1, #0x10 add r3, r2, #0 bl FUN_02007E68 ldr r0, [r5, #0x10] cmp r0, #1 bne _0222291E ldr r0, [r5, #0xc] bl MOD08_02217C08 mov r1, #1 add r4, r1, #0 lsl r4, r0 ldr r0, [r5] bl MOD08_02215504 mov r1, #0x10 str r1, [sp] mov r3, #0 lsl r2, r4, #0x10 str r3, [sp, #4] mov r1, #4 lsr r2, r2, #0x10 str r3, [sp, #8] bl FUN_02003210 _0222291E: ldr r0, [r5, #4] add sp, #0xc add r0, r0, #1 str r0, [r5, #4] pop {r4, r5, pc} _02222928: add r0, r5, #0 add r0, #0x14 bl MOD08_022183F0 mov r2, #0x38 mov r3, #0x3a add r0, r5, #0 ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] ldr r1, [r5, #8] add r0, #0x14 bl MOD08_02217CD0 ldr r0, [r5, #0x10] cmp r0, #1 bne _02222962 mov r3, #0x3a ldrsh r4, [r5, r3] ldr r3, [r5, #0x3c] mov r2, #0x38 sub r3, r4, r3 add r0, r5, #0 lsl r3, r3, #0x10 ldrsh r2, [r5, r2] ldr r1, [r5, #0xc] add r0, #0x14 asr r3, r3, #0x10 bl MOD08_02217C94 _02222962: ldr r0, [r5, #8] bl FUN_02007F20 cmp r0, #0 bne _022229C2 mov r2, #0x38 ldrsh r2, [r5, r2] ldr r0, [r5, #8] mov r1, #0 bl FUN_02007558 mov r2, #0x3a ldrsh r2, [r5, r2] ldr r0, [r5, #8] mov r1, #1 bl FUN_02007558 ldr r0, [r5, #0x10] cmp r0, #1 bne _022229AA ldr r0, [r5, #8] mov r1, #6 mov r2, #0 bl FUN_02007558 mov r2, #0x3a ldrsh r3, [r5, r2] ldr r2, [r5, #0x3c] mov r1, #0x38 sub r2, r3, r2 lsl r2, r2, #0x10 ldrsh r1, [r5, r1] ldr r0, [r5, #0xc] asr r2, r2, #0x10 bl FUN_0200C714 _022229AA: ldr r0, [r5, #4] add sp, #0xc add r0, r0, #1 str r0, [r5, #4] pop {r4, r5, pc} _022229B4: ldr r0, [r5] add r1, r2, #0 bl MOD08_02212438 add r0, r5, #0 bl FUN_02016A18 _022229C2: add sp, #0xc pop {r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022229C8 MOD08_022229C8: ; 0x022229C8 push {r3, r4, r5, lr} add r5, r0, #0 bl MOD08_02212014 mov r1, #0x50 bl FUN_02016998 add r4, r0, #0 mov r1, #0 mov r2, #0x50 bl Call_FillMemWithValue str r5, [r4] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #4] add r0, r5, #0 bl MOD08_02212004 str r0, [r4, #0x4c] ldr r0, [r4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x10] mov r0, #8 str r0, [sp] add r0, r4, #0 mov r2, #0xa add r0, #0x14 mov r1, #0xe add r3, r2, #0 bl MOD08_02218120 add r0, r4, #0 add r0, #0x38 mov r1, #0 mov r2, #0x10 mov r3, #8 bl MOD08_02218030 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C90C ldr r0, [r4] mov r1, #0 mov r2, #0x1f bl MOD08_02227994 ldr r0, [r4, #0x10] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x4c] cmp r0, #1 ldr r0, [r4, #0x10] bne _02222A48 ldr r1, _02222A6C ; =0xBFB33333 ldr r2, _02222A70 ; =0x3FB33333 bl FUN_0200C884 b _02222A50 _02222A48: ldr r1, _02222A70 ; =0x3FB33333 add r2, r1, #0 bl FUN_0200C884 _02222A50: ldr r0, [r4, #0x10] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4] ldr r1, _02222A74 ; =MOD08_022227C4 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} .align 2, 0 _02222A6C: .word 0xBFB33333 _02222A70: .word 0x3FB33333 _02222A74: .word MOD08_022227C4 thumb_func_start MOD08_02222A78 MOD08_02222A78: ; 0x02222A78 push {r4, r5, lr} sub sp, #0xc add r5, r0, #0 bl MOD08_02212014 mov r1, #0x40 bl FUN_02016998 add r4, r0, #0 mov r1, #0 mov r2, #0x40 bl Call_FillMemWithValue str r5, [r4] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #8] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x38] ldr r0, [r4, #8] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x3a] ldr r0, [r4, #8] mov r1, #0x29 bl FUN_0200782C str r0, [r4, #0x3c] mov r1, #4 add r0, r4, #0 str r1, [sp] add r0, #0x14 mov r2, #0 mov r3, #1 bl MOD08_022183C0 ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C mov r1, #0x14 ldrsh r1, [r4, r1] mov r2, #0x10 add r0, r1, r0 mov r1, #0 strh r0, [r4, #0x14] str r1, [sp] ldr r0, [r4, #8] add r3, r1, #0 bl FUN_02007E68 ldr r0, [r4] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0xc] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 add r5, r0, #0 ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 cmp r5, #2 bne _02222B24 cmp r0, #4 beq _02222B2C _02222B24: cmp r5, #5 bne _02222B5E cmp r0, #3 bne _02222B5E _02222B2C: ldr r0, [r4, #0xc] bl MOD08_02217C08 mov r1, #1 add r5, r1, #0 lsl r5, r0 ldr r0, [r4] bl MOD08_02215504 mov r3, #0 lsl r2, r5, #0x10 str r3, [sp] mov r1, #0x10 str r1, [sp, #4] mov r1, #4 lsr r2, r2, #0x10 str r3, [sp, #8] bl FUN_02003210 mov r2, #1 str r2, [r4, #0x10] ldr r0, [r4, #8] mov r1, #6 bl FUN_02007558 _02222B5E: ldr r0, [r4] ldr r1, _02222B6C ; =MOD08_02222884 add r2, r4, #0 bl MOD08_02212400 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _02222B6C: .word MOD08_02222884 thumb_func_start MOD08_02222B70 MOD08_02222B70: ; 0x02222B70 push {r3, r4, r5, lr} sub sp, #8 add r4, r0, #0 ldr r0, [r4, #8] mov r5, #0 cmp r0, #3 bhi _02222BEC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02222B8A: ; jump table .short _02222B92 - _02222B8A - 2 ; case 0 .short _02222BAA - _02222B8A - 2 ; case 1 .short _02222BD0 - _02222B8A - 2 ; case 2 .short _02222BEA - _02222B8A - 2 ; case 3 _02222B92: add r0, r4, #0 add r0, #0x1c bl MOD08_02218704 cmp r0, #1 bne _02222BEC ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #0x20 str r0, [r4, #0x44] b _02222BEC _02222BAA: ldr r0, [r4, #0x44] sub r0, r0, #1 str r0, [r4, #0x44] bpl _02222BEC ldr r0, [r4, #8] mov r1, #8 add r0, r0, #1 str r0, [r4, #8] mov r0, #0x10 str r0, [sp] mov r0, #0x18 add r4, #0x1c str r0, [sp, #4] add r0, r4, #0 add r2, r5, #0 add r3, r1, #0 bl MOD08_022186D4 b _02222BEC _02222BD0: add r0, r4, #0 add r0, #0x1c bl MOD08_02218704 cmp r0, #1 bne _02222BEC ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] ldr r0, [r4, #0x14] bl MOD08_0221894C b _02222BEC _02222BEA: mov r5, #1 _02222BEC: add r0, r5, #0 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02222BF4 MOD08_02222BF4: ; 0x02222BF4 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _02222C0A cmp r0, #1 beq _02222C2C cmp r0, #2 beq _02222C3E pop {r4, r5, r6, pc} _02222C0A: ldr r0, [r4, #0x48] bl FUN_0200C658 cmp r0, #1 bne _02222C1E ldr r0, [r4, #0x10] mov r1, #6 mov r2, #1 bl FUN_02007558 _02222C1E: add r0, r4, #0 bl MOD08_02222B70 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, r6, pc} _02222C2C: add r0, r4, #0 bl MOD08_02222B70 cmp r0, #0 beq _02222CC4 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, r6, pc} _02222C3E: ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] mov r1, #1 bl MOD08_02215600 add r1, r0, #0 lsl r0, r5, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 lsl r1, r1, #0x18 mov r0, #0 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4, #0x10] mov r1, #6 mov r2, #0 bl FUN_02007558 ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] bl MOD08_02212014 add r3, r0, #0 lsl r0, r5, #0x18 mov r1, #1 lsr r0, r0, #0x18 lsl r1, r1, #0xe mov r2, #0 bl FUN_02017F18 ldr r0, [r4] bl MOD08_02212490 add r5, r0, #0 ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl FUN_02018744 ldr r0, [r4] add r1, r6, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _02222CC4: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_02222CC8 MOD08_02222CC8: ; 0x02222CC8 push {r4, r5, r6, r7, lr} sub sp, #0x1c mov r1, #0x4c add r7, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r7, [r4] add r0, r7, #0 bl MOD08_02215504 str r0, [r4, #0x18] ldr r0, [r4] mov r1, #0 mov r2, #0x10 bl MOD08_02227A00 mov r2, #8 str r2, [sp] mov r0, #0x18 str r0, [sp, #4] add r0, r4, #0 add r0, #0x1c mov r1, #0 mov r3, #0x10 bl MOD08_022186D4 ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #0x10] bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #0x10] mov r1, #0x29 bl FUN_0200782C sub r0, r5, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 sub r0, #0x28 lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x48] ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 cmp r0, #5 beq _02222D58 cmp r0, #2 bne _02222D6A _02222D58: ldr r0, [r4, #0x48] mov r1, #1 bl FUN_0200C644 ldr r0, [r4, #0x48] mov r1, #2 bl FUN_0200C6B0 b _02222DA6 _02222D6A: ldr r0, [r4] mov r1, #1 bl MOD08_02215588 str r0, [sp, #0x14] ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 ldr r0, [sp, #0x14] lsl r1, r1, #0x18 lsl r0, r0, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 add r1, r1, #1 lsl r1, r1, #0x18 mov r0, #0 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4, #0x48] mov r1, #0 bl FUN_0200C644 _02222DA6: add r0, r7, #0 mov r1, #1 bl MOD08_022155C4 neg r1, r5 lsl r1, r1, #0x10 sub r6, #0x28 str r0, [sp, #0x18] lsl r0, r6, #0x10 asr r0, r0, #0x10 neg r0, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 lsr r1, r1, #0x10 bl MOD08_02218998 add r6, r0, #0 add r0, r7, #0 bl MOD08_02212014 mov r1, #0x64 str r1, [sp] ldr r1, [sp, #0x18] mov r3, #5 str r1, [sp, #4] mov r1, #0 str r1, [sp, #8] str r6, [sp, #0xc] str r0, [sp, #0x10] lsl r0, r5, #0x18 add r5, #0x50 lsl r1, r5, #0x18 ldr r2, _02222E14 ; =0x0000038E lsr r0, r0, #0x18 lsr r1, r1, #0x18 lsl r3, r3, #0xc bl MOD08_022188DC mov r2, #1 str r0, [r4, #0x14] mov r1, #0 str r1, [sp] ldr r0, [r4, #0x18] lsl r2, r2, #8 mov r3, #8 bl FUN_02003A64 ldr r0, [r4] ldr r1, _02222E18 ; =MOD08_02222BF4 add r2, r4, #0 bl MOD08_02212400 add sp, #0x1c pop {r4, r5, r6, r7, pc} nop _02222E14: .word 0x0000038E _02222E18: .word MOD08_02222BF4 thumb_func_start MOD08_02222E1C MOD08_02222E1C: ; 0x02222E1C push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #3 bhi _02222F1E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02222E36: ; jump table .short _02222E3E - _02222E36 - 2 ; case 0 .short _02222E8E - _02222E36 - 2 ; case 1 .short _02222ECC - _02222E36 - 2 ; case 2 .short _02222F06 - _02222E36 - 2 ; case 3 _02222E3E: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 bne _02222E70 add r0, r4, #0 add r0, #0x14 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x54] bl _fflt add r1, r0, #0 ldr r0, [sp, #8] bl _fmul add r1, r0, #0 ldr r0, [r4, #0x10] ldr r2, [sp, #4] bl FUN_0200C884 b _02222F1E _02222E70: ldr r0, [r4, #0xc] mov r1, #0xa add r0, r0, #1 str r0, [r4, #0xc] mov r0, #5 str r0, [r4, #0x4c] mov r0, #8 str r0, [sp] add r0, r4, #0 add r0, #0x14 add r2, r1, #0 mov r3, #1 bl MOD08_02218120 b _02222F1E _02222E8E: add r0, r4, #0 add r0, #0x38 bl MOD08_02218058 ldr r1, [r4, #0x38] add r5, r0, #0 lsl r1, r1, #0x10 ldr r0, [r4, #0x10] lsr r1, r1, #0x10 bl FUN_0200C898 cmp r5, #0 bne _02222F1E ldr r0, [r4, #0x4c] cmp r0, #0 ble _02222EC4 sub r0, r0, #1 str r0, [r4, #0x4c] add r0, r4, #0 ldr r1, [r4, #0x38] ldr r2, [r4, #0x50] add r0, #0x38 mov r3, #4 str r1, [r4, #0x50] bl MOD08_02218008 b _02222F1E _02222EC4: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02222F1E _02222ECC: add r0, r4, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #1 bne _02222EFE add r0, r4, #0 add r0, #0x14 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x54] bl _fflt add r1, r0, #0 ldr r0, [sp, #8] bl _fmul add r1, r0, #0 ldr r0, [r4, #0x10] ldr r2, [sp, #4] bl FUN_0200C884 b _02222F1E _02222EFE: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02222F1E _02222F06: ldr r0, [r4, #0x10] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r4, r5, pc} _02222F1E: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #0xc pop {r4, r5, pc} thumb_func_start MOD08_02222F28 MOD08_02222F28: ; 0x02222F28 push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r6, r1, #0 mov r1, #0x58 add r5, r0, #0 add r7, r2, #0 str r3, [sp, #4] bl MOD08_02228064 add r4, r0, #0 str r5, [r4] str r6, [r4, #4] str r7, [r4, #8] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C add r7, r0, #0 ldr r0, [r4] mov r1, #0 bl MOD08_02215680 cmp r0, #1 bne _02222F68 mov r0, #0 mvn r0, r0 str r0, [r4, #0x54] neg r6, r7 b _02222F6E _02222F68: mov r0, #1 str r0, [r4, #0x54] add r6, r7, #0 _02222F6E: ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 mov r2, #0 bl MOD08_02217B98 str r0, [sp, #8] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 mov r2, #1 bl MOD08_02217B98 str r0, [sp, #0xc] ldr r0, [sp, #4] mov r1, #2 str r0, [r4, #0x10] bl FUN_0200C840 mov r1, #0xfe lsl r1, r1, #0x16 ldr r0, [r4, #0x10] add r2, r1, #0 bl FUN_0200C884 ldr r0, [r4, #0x10] ldr r1, [sp, #8] ldr r2, [sp, #0xc] bl FUN_0200C714 mov r1, #0x28 mul r1, r7 lsl r1, r1, #0x10 ldr r0, [r4, #0x10] asr r1, r1, #0x10 mov r2, #0 bl FUN_0200C82C ldr r0, [r4, #0x10] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C6B0 mov r1, #0xb mvn r1, r1 mul r1, r6 lsl r1, r1, #0x10 ldr r0, [r4, #0x10] asr r1, r1, #0x10 mov r2, #0xc bl FUN_0200C8DC add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 bl MOD08_02227470 cmp r0, #4 ldr r0, [r4, #0x10] bne _02223000 mov r1, #1 bl FUN_0200C5C0 b _02223006 _02223000: mov r1, #0 bl FUN_0200C5C0 _02223006: mov r0, #8 str r0, [sp] add r0, r4, #0 mov r2, #0xa add r0, #0x14 mov r1, #1 add r3, r2, #0 bl MOD08_02218120 cmp r6, #0 blt _0222302E add r0, r4, #0 ldr r1, _02223050 ; =0x0000FF48 ldr r2, _02223054 ; =0x0000E38D add r0, #0x38 mov r3, #4 bl MOD08_02218008 ldr r0, _02223050 ; =0x0000FF48 b _0222303E _0222302E: add r0, r4, #0 ldr r2, _02223058 ; =0x00001C71 add r0, #0x38 mov r1, #0 mov r3, #4 bl MOD08_02218008 mov r0, #0 _0222303E: str r0, [r4, #0x50] ldr r0, [r4] ldr r1, _0222305C ; =MOD08_02222E1C add r2, r4, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _02223050: .word 0x0000FF48 _02223054: .word 0x0000E38D _02223058: .word 0x00001C71 _0222305C: .word MOD08_02222E1C thumb_func_start MOD08_02223060 MOD08_02223060: ; 0x02223060 push {r3, r4, r5, r6, lr} sub sp, #4 add r5, r0, #0 str r1, [r5] add r6, r3, #0 mov r3, #8 mov r1, #0xa add r4, r2, #0 add r0, r5, #4 add r2, r1, #0 str r3, [sp] bl MOD08_02218120 mov r0, #3 str r0, [r5, #0x2c] mov r0, #8 str r0, [r5, #0x30] mov r0, #0xa str r0, [r5, #0x34] ldr r0, [sp, #0x18] add r1, r4, #0 str r0, [r5, #0x28] ldr r0, [r5] add r2, r6, #0 bl FUN_0200C714 ldr r0, [r5] add r1, r4, #0 add r2, r6, #0 bl FUN_0200C714 ldr r0, [r5] mov r1, #2 bl FUN_0200C840 ldr r0, [r5] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5] mov r1, #1 bl FUN_0200C6B0 ldr r0, [sp, #0x18] cmp r0, #0 beq _022230C8 mov r2, #0xfe ldr r0, [r5] ldr r1, _022230D4 ; =0xBF800000 lsl r2, r2, #0x16 bl FUN_0200C884 _022230C8: ldr r0, [r5] mov r1, #0 bl FUN_0200C644 add sp, #4 pop {r3, r4, r5, r6, pc} .align 2, 0 _022230D4: .word 0xBF800000 thumb_func_start MOD08_022230D8 MOD08_022230D8: ; 0x022230D8 ldr r3, _022230E0 ; =0x0200C3DD ldr r0, [r0] bx r3 nop _022230E0: .word 0x0200C3DD thumb_func_start MOD08_022230E4 MOD08_022230E4: ; 0x022230E4 push {r4, lr} add r4, r0, #0 ldr r0, [r4] mov r1, #1 bl FUN_0200C644 ldr r0, [r4] mov r1, #1 bl FUN_0200C5E0 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022230FC MOD08_022230FC: ; 0x022230FC push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 add r0, r4, #4 bl MOD08_02218170 cmp r0, #1 bne _02223140 add r0, r4, #4 add r1, sp, #8 add r2, sp, #4 bl MOD08_0221825C ldr r0, [r4, #0x28] cmp r0, #0 beq _02223132 ldr r1, [sp, #8] mov r0, #0 bl _fsub add r1, r0, #0 mov r2, #0xfe ldr r0, [r4] lsl r2, r2, #0x16 bl FUN_0200C884 b _02223172 _02223132: mov r2, #0xfe ldr r0, [r4] ldr r1, [sp, #8] lsl r2, r2, #0x16 bl FUN_0200C884 b _02223172 _02223140: ldr r0, [r4, #0x2c] cmp r0, #0 ble _0222316C sub r0, r0, #1 str r0, [r4, #0x2c] mov r0, #8 str r0, [sp] ldr r1, [r4, #0x30] ldr r3, [r4, #0x34] lsl r1, r1, #0x10 lsl r3, r3, #0x10 add r0, r4, #4 asr r1, r1, #0x10 mov r2, #0xa asr r3, r3, #0x10 bl MOD08_02218120 ldr r1, [r4, #0x30] ldr r0, [r4, #0x34] str r0, [r4, #0x30] str r1, [r4, #0x34] b _02223172 _0222316C: add sp, #0xc mov r0, #0 pop {r3, r4, pc} _02223172: mov r0, #1 add sp, #0xc pop {r3, r4, pc} thumb_func_start MOD08_02223178 MOD08_02223178: ; 0x02223178 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r7, r0, #0 ldr r0, [r4, #0xc] cmp r0, #3 bhi _02223244 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02223190: ; jump table .short _02223198 - _02223190 - 2 ; case 0 .short _022231CA - _02223190 - 2 ; case 1 .short _022231E8 - _02223190 - 2 ; case 2 .short _02223208 - _02223190 - 2 ; case 3 _02223198: ldr r0, [r4, #0x10] cmp r0, #4 blt _022231C2 mov r0, #0 str r0, [r4, #0x10] ldr r1, [r4, #0x14] add r2, r4, #0 mov r0, #0x38 add r2, #0x44 mul r0, r1 add r0, r2, r0 bl MOD08_022230E4 ldr r0, [r4, #0x14] add r0, r0, #1 str r0, [r4, #0x14] cmp r0, #4 blt _022231C2 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] _022231C2: ldr r0, [r4, #0x10] add r0, r0, #1 str r0, [r4, #0x10] b _02223244 _022231CA: mov r1, #0x1c mov r2, #0x1e add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x18] add r0, #0x20 bl MOD08_02218454 cmp r0, #0 bne _02223244 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02223244 _022231E8: add r5, r4, #0 mov r6, #0 add r5, #0x44 _022231EE: add r0, r5, #0 bl MOD08_022230FC add r6, r6, #1 add r5, #0x38 cmp r6, #4 blt _022231EE cmp r0, #0 bne _02223244 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02223244 _02223208: mov r2, #0x1c ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] mov r1, #0 bl FUN_02007558 mov r2, #0x1e ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] mov r1, #1 bl FUN_02007558 add r5, r4, #0 mov r6, #0 add r5, #0x44 _02223226: add r0, r5, #0 bl MOD08_022230D8 add r6, r6, #1 add r5, #0x38 cmp r6, #4 blt _02223226 ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _02223244: ldr r0, [r4, #8] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222324C MOD08_0222324C: ; 0x0222324C push {r3, r4, r5, r6, r7, lr} sub sp, #0x48 str r1, [sp, #4] mov r1, #0x4a lsl r1, r1, #2 add r4, r0, #0 str r2, [sp, #8] str r3, [sp, #0xc] bl MOD08_02228064 add r7, r0, #0 ldr r0, [sp, #4] str r4, [r7] str r0, [r7, #4] ldr r0, [sp, #8] str r0, [r7, #8] add r0, r4, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r7] bl MOD08_022154D4 str r0, [r7, #0x18] mov r1, #0 bl FUN_0200782C strh r0, [r7, #0x1c] ldr r0, [r7, #0x18] mov r1, #1 bl FUN_0200782C strh r0, [r7, #0x1e] add r0, r7, #0 mov r3, #1 add r0, #0x20 mov r1, #4 mov r2, #0 str r3, [sp] bl MOD08_022183C0 mov r0, #0x1e ldrsh r4, [r7, r0] ldr r1, [r7] add r0, sp, #0x14 add r4, #0x10 mov r5, #0 bl MOD08_02215474 add r0, r5, #0 add r6, r7, #0 str r0, [sp, #0x10] add r6, #0x44 _022232B6: ldr r0, [sp, #0x10] cmp r0, #0 bne _022232D0 str r5, [sp] mov r2, #0x1c lsl r3, r4, #0x10 ldrsh r2, [r7, r2] ldr r1, [sp, #0xc] add r0, r6, #0 asr r3, r3, #0x10 bl MOD08_02223060 b _022232EC _022232D0: ldr r0, [sp, #4] ldr r1, [sp, #8] add r2, sp, #0x14 bl FUN_0200C154 lsl r3, r4, #0x10 add r1, r0, #0 str r5, [sp] mov r2, #0x1c ldrsh r2, [r7, r2] add r0, r6, #0 asr r3, r3, #0x10 bl MOD08_02223060 _022232EC: mov r0, #1 eor r5, r0 ldr r0, [sp, #0x10] sub r4, #0xa add r0, r0, #1 add r6, #0x38 str r0, [sp, #0x10] cmp r0, #4 blt _022232B6 ldr r0, [r7] ldr r1, _0222330C ; =MOD08_02223178 add r2, r7, #0 bl MOD08_02212400 add sp, #0x48 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _0222330C: .word MOD08_02223178 thumb_func_start MOD08_02223310 MOD08_02223310: ; 0x02223310 push {r3, r4, r5, lr} sub sp, #0x10 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #6 bls _02223320 b _022234D2 _02223320: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222332C: ; jump table .short _0222333A - _0222332C - 2 ; case 0 .short _0222337C - _0222332C - 2 ; case 1 .short _022233DC - _0222332C - 2 ; case 2 .short _0222341C - _0222332C - 2 ; case 3 .short _0222343C - _0222332C - 2 ; case 4 .short _0222347A - _0222332C - 2 ; case 5 .short _022234BA - _0222332C - 2 ; case 6 _0222333A: add r0, r4, #0 add r0, #0x18 bl MOD08_02217ECC cmp r0, #0 beq _0222335C mov r2, #0x14 mov r3, #0x16 add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0x10] add r0, #0x18 bl MOD08_02217CD0 add sp, #0x10 pop {r3, r4, r5, pc} _0222335C: mov r2, #0 str r2, [sp] mov r0, #2 str r0, [sp, #4] mov r1, #0x18 add r0, r4, #0 ldrsh r1, [r4, r1] add r0, #0x18 add r3, r2, #0 bl MOD08_02217E80 ldr r0, [r4, #0xc] add sp, #0x10 add r0, r0, #1 str r0, [r4, #0xc] pop {r3, r4, r5, pc} _0222337C: add r0, r4, #0 add r0, #0x18 bl MOD08_02217ECC cmp r0, #0 beq _0222339E mov r2, #0x14 mov r3, #0x16 add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0x10] add r0, #0x18 bl MOD08_02217CD0 add sp, #0x10 pop {r3, r4, r5, pc} _0222339E: mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007558 mov r1, #0 str r1, [sp] mov r0, #4 str r0, [sp, #4] ldr r2, [r4, #0x3c] add r0, r4, #0 lsl r2, r2, #5 neg r2, r2 lsl r2, r2, #0x10 add r0, #0x18 asr r2, r2, #0x10 add r3, r1, #0 bl MOD08_02217E80 ldr r0, [r4, #0xc] add sp, #0x10 add r0, r0, #1 str r0, [r4, #0xc] pop {r3, r4, r5, pc} _022233DC: add r0, r4, #0 ldr r2, [r4, #0x48] add r0, #0x4c add r1, #0x70 bl MOD08_02217FE4 cmp r0, #0 bne _022234D2 mov r0, #0x46 ldrsh r0, [r4, r0] add r1, r4, #0 mov r2, #0x44 str r0, [sp] mov r0, #0x16 ldrsh r0, [r4, r0] mov r3, #0x14 add r1, #0x70 str r0, [sp, #4] mov r0, #0xa str r0, [sp, #8] ldr r0, _022234DC ; =0xFFFE0000 str r0, [sp, #0xc] add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] add r0, #0x4c bl MOD08_02217F50 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _022234D2 _0222341C: add r0, r4, #0 ldr r2, [r4, #0x48] add r0, #0x4c add r1, #0x70 bl MOD08_02217FE4 cmp r0, #0 bne _022234D2 ldr r0, [r4, #0x48] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _022234D2 _0222343C: add r0, r4, #0 add r0, #0x18 bl MOD08_02217ECC cmp r0, #0 beq _0222345C mov r2, #0x14 mov r3, #0x16 add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0x10] add r0, #0x18 bl MOD08_02217CD0 b _022234D2 _0222345C: mov r2, #0 str r2, [sp] mov r0, #4 str r0, [sp, #4] mov r1, #0x18 add r0, r4, #0 ldrsh r1, [r4, r1] add r0, #0x18 add r3, r2, #0 bl MOD08_02217E80 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _022234D2 _0222347A: add r0, r4, #0 add r0, #0x18 bl MOD08_02217ECC cmp r0, #0 beq _0222349A mov r2, #0x14 mov r3, #0x16 add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0x10] add r0, #0x18 bl MOD08_02217CD0 b _022234D2 _0222349A: mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _022234D2 _022234BA: ldr r0, [r4, #0x48] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0x10 pop {r3, r4, r5, pc} _022234D2: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #0x10 pop {r3, r4, r5, pc} .align 2, 0 _022234DC: .word 0xFFFE0000 thumb_func_start MOD08_022234E0 MOD08_022234E0: ; 0x022234E0 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r7, r1, #0 mov r1, #0x94 add r5, r0, #0 str r2, [sp, #0x10] add r6, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] ldr r0, [sp, #0x10] str r7, [r4, #4] str r0, [r4, #8] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C str r0, [r4, #0x3c] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x14] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x16] mov r1, #0 str r1, [sp] mov r0, #4 str r0, [sp, #4] ldr r2, [r4, #0x3c] add r0, r4, #0 lsl r2, r2, #4 neg r2, r2 lsl r2, r2, #0x10 add r0, #0x18 asr r2, r2, #0x10 add r3, r1, #0 bl MOD08_02217E80 add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #0x40] bl FUN_0200782C add r1, r4, #0 add r1, #0x44 strh r0, [r1] ldr r0, [r4, #0x40] mov r1, #1 bl FUN_0200782C add r1, r4, #0 add r1, #0x46 strh r0, [r1] add r0, r6, #0 mov r1, #1 str r6, [r4, #0x48] bl FUN_0200C5E0 ldr r0, [r4, #0x48] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x48] mov r1, #1 bl FUN_0200C6B0 mov r0, #0x16 ldrsh r0, [r4, r0] add r1, r4, #0 mov r2, #0x14 str r0, [sp] mov r0, #0x46 ldrsh r0, [r4, r0] mov r3, #0x44 add r1, #0x70 str r0, [sp, #4] mov r0, #0xa str r0, [sp, #8] mov r0, #2 lsl r0, r0, #0x10 str r0, [sp, #0xc] add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] add r0, #0x4c bl MOD08_02217F50 ldr r0, [r4] ldr r1, _022235C8 ; =MOD08_02223310 add r2, r4, #0 bl MOD08_02212400 add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _022235C8: .word MOD08_02223310 thumb_func_start MOD08_022235CC MOD08_022235CC: ; 0x022235CC push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 ldr r0, [r4, #8] cmp r0, #3 bhi _02223676 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022235E6: ; jump table .short _022235EE - _022235E6 - 2 ; case 0 .short _0222361A - _022235E6 - 2 ; case 1 .short _0222363E - _022235E6 - 2 ; case 2 .short _02223664 - _022235E6 - 2 ; case 3 _022235EE: mov r2, #0x1a ldrsh r3, [r4, r2] mov r2, #0x68 ldrsh r2, [r4, r2] mov r1, #0x18 ldrsh r1, [r4, r1] sub r2, r3, r2 add r0, r4, #0 lsl r2, r2, #0x10 ldr r3, [r4, #0x14] add r0, #0x1c asr r2, r2, #0x10 bl MOD08_02217E30 cmp r0, #0 bne _02223676 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #0x10 str r0, [r4, #0xc] b _02223676 _0222361A: ldr r0, [r4, #0xc] sub r0, r0, #1 str r0, [r4, #0xc] bpl _02223676 ldr r0, [r4, #8] mov r2, #0x10 add r0, r0, #1 str r0, [r4, #8] mov r1, #0 str r1, [sp] mov r0, #0x20 str r0, [sp, #4] add r0, r4, #0 add r0, #0x40 add r3, r2, #0 bl MOD08_022186D4 b _02223676 _0222363E: add r0, r4, #0 add r0, #0x40 bl MOD08_02218704 cmp r0, #0 beq _02223676 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C644 ldr r0, [r4, #0x10] mov r1, #6 mov r2, #0 bl FUN_02007558 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02223676 _02223664: ldr r0, [r4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r4, pc} _02223676: ldr r0, [r4, #4] bl FUN_0200BC1C add sp, #8 pop {r4, pc} thumb_func_start MOD08_02223680 MOD08_02223680: ; 0x02223680 push {r4, r5, r6, lr} sub sp, #8 mov r1, #0x6c add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #4] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C add r6, r0, #0 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x18] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x1a] ldr r0, [r4, #0x10] mov r1, #0x29 bl FUN_0200782C add r1, r4, #0 add r1, #0x68 strh r0, [r1] mov r0, #0x1a ldrsh r0, [r4, r0] mov r1, #0 add r0, #8 strh r0, [r4, #0x1a] ldr r0, [r4] bl MOD08_022124D8 str r0, [r4, #0x14] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x10] mov r1, #6 mov r2, #1 bl FUN_02007558 add r0, r4, #0 add r0, #0x1c mov r1, #2 mov r2, #0x10 bl MOD08_02218654 ldr r0, [r4] mov r1, #0x10 mov r2, #0 bl MOD08_02227994 mov r1, #0x10 str r1, [sp] mov r0, #0x20 str r0, [sp, #4] add r0, r4, #0 mov r2, #0 add r0, #0x40 add r3, r2, #0 bl MOD08_022186D4 ldr r0, [r4, #0x28] add r2, r4, #0 add r1, r0, #0 mul r1, r6 str r1, [r4, #0x28] ldr r0, [r4] ldr r1, _02223740 ; =MOD08_022235CC bl MOD08_02212400 ldr r0, [r4, #4] bl FUN_0200BC1C add sp, #8 pop {r4, r5, r6, pc} .align 2, 0 _02223740: .word MOD08_022235CC thumb_func_start MOD08_02223744 MOD08_02223744: ; 0x02223744 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #0x38] mov r4, #0 cmp r0, #0 beq _0222375A cmp r0, #1 beq _0222378E cmp r0, #2 beq _022237BA b _022237BC _0222375A: add r0, r5, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #0 beq _02223774 mov r2, #0x16 ldrsh r2, [r5, r2] ldr r0, [r5, #0x10] mov r1, #0xd bl FUN_02007558 b _022237BC _02223774: ldr r0, [r5, #0x38] mov r2, #0xa add r0, r0, #1 str r0, [r5, #0x38] mov r0, #0xc add r5, #0x14 str r0, [sp] add r0, r5, #0 mov r1, #0xf add r3, r2, #0 bl MOD08_02218120 b _022237BC _0222378E: add r0, r5, #0 add r0, #0x14 bl MOD08_02218170 cmp r0, #0 ldr r0, [r5, #0x10] beq _022237A8 mov r2, #0x16 ldrsh r2, [r5, r2] mov r1, #0xd bl FUN_02007558 b _022237BC _022237A8: mov r1, #0xd add r2, r1, #0 add r2, #0xf3 bl FUN_02007558 ldr r0, [r5, #0x38] add r0, r0, #1 str r0, [r5, #0x38] b _022237BC _022237BA: mov r4, #1 _022237BC: add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_022237C0 MOD08_022237C0: ; 0x022237C0 push {r3, r4, r5, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5, #0x40] mov r4, #0 cmp r0, #0 beq _022237D8 cmp r0, #1 beq _0222381E cmp r0, #2 beq _0222383A b _0222383C _022237D8: add r0, r5, #0 ldr r1, [r5, #0x3c] add r0, #0x44 bl MOD08_02218360 add r0, r5, #0 add r0, #0x68 bl MOD08_02217ECC cmp r0, #0 beq _02223802 mov r2, #0xb4 mov r3, #0xb6 add r0, r5, #0 ldrsh r2, [r5, r2] ldrsh r3, [r5, r3] ldr r1, [r5, #0x3c] add r0, #0x68 bl MOD08_02217C94 b _0222383C _02223802: ldr r0, [r5, #0x40] mov r1, #0x10 add r0, r0, #1 str r0, [r5, #0x40] str r1, [sp] mov r0, #8 add r5, #0x8c str r0, [sp, #4] add r0, r5, #0 add r2, r4, #0 mov r3, #0xe bl MOD08_022186D4 b _0222383C _0222381E: add r0, r5, #0 add r0, #0x8c bl MOD08_02218704 cmp r0, #0 beq _0222383C ldr r0, [r5, #0x3c] add r1, r4, #0 bl FUN_0200C644 ldr r0, [r5, #0x40] add r0, r0, #1 str r0, [r5, #0x40] b _0222383C _0222383A: mov r4, #1 _0222383C: add r0, r4, #0 add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02223844 MOD08_02223844: ; 0x02223844 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #0 beq _02223856 cmp r0, #1 beq _0222386E b _02223884 _02223856: add r0, r4, #0 bl MOD08_02223744 add r0, r4, #0 bl MOD08_022237C0 cmp r0, #0 beq _02223884 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02223884 _0222386E: ldr r0, [r4, #0x3c] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _02223884: ldr r0, [r4, #8] bl FUN_0200BC1C pop {r3, r4, r5, pc} thumb_func_start MOD08_0222388C MOD08_0222388C: ; 0x0222388C push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r5, r1, #0 mov r1, #0xb8 add r6, r0, #0 add r7, r2, #0 str r3, [sp, #8] bl MOD08_02228064 add r4, r0, #0 str r6, [r4] str r5, [r4, #4] str r7, [r4, #8] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C1C str r0, [sp, #0xc] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02217C44 add r5, r0, #0 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #0x10] bl FUN_0200782C lsl r0, r0, #0x10 asr r7, r0, #0x10 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 mov r0, #0xc str r0, [sp] add r0, r4, #0 mov r1, #0xa add r0, #0x14 add r2, r1, #0 mov r3, #0xf bl MOD08_02218120 ldr r0, [sp, #8] mov r1, #1 str r0, [r4, #0x3c] bl FUN_0200C5E0 ldr r0, [r4, #0x3c] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x3c] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x3c] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x3c] mov r1, #1 bl FUN_0200C6B0 ldr r0, [sp, #0xc] lsl r0, r0, #5 add r1, r7, r0 add r0, r4, #0 add r0, #0xb4 strh r1, [r0] add r0, r4, #0 add r0, #0xb6 strh r6, [r0] cmp r5, #0 bge _02223942 mov r1, #7 b _02223944 _02223942: mov r1, #0x17 _02223944: mvn r1, r1 add r0, r1, #0 mul r0, r5 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] mov r1, #0 mov r0, #0x20 str r0, [sp, #4] add r0, r4, #0 add r0, #0x68 add r2, r1, #0 add r3, r1, #0 bl MOD08_02217E80 mov r0, #0x20 str r0, [sp] add r0, r4, #0 add r0, #0x44 mov r1, #5 mov r2, #0xa mov r3, #0xc bl MOD08_02218120 mov r0, #0x1a str r0, [sp] ldr r0, _02223994 ; =0x04000050 mov r1, #0 mov r2, #0x3f mov r3, #0x1f bl G2x_SetBlendAlpha_ ldr r0, [r4] ldr r1, _02223998 ; =MOD08_02223844 add r2, r4, #0 bl MOD08_02212400 add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} nop _02223994: .word 0x04000050 _02223998: .word MOD08_02223844 thumb_func_start MOD08_0222399C MOD08_0222399C: ; 0x0222399C push {r3, lr} sub sp, #8 ldr r1, [r0, #0x68] cmp r1, #5 bhi _02223A50 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _022239B2: ; jump table .short _022239BE - _022239B2 - 2 ; case 0 .short _022239D4 - _022239B2 - 2 ; case 1 .short _022239EE - _022239B2 - 2 ; case 2 .short _02223A08 - _022239B2 - 2 ; case 3 .short _02223A22 - _022239B2 - 2 ; case 4 .short _02223A38 - _022239B2 - 2 ; case 5 _022239BE: mov r2, #0x28 str r2, [sp] mov r1, #8 str r1, [sp, #4] mov r1, #0 add r0, #0x18 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _022239D4: mov r1, #0x4f mvn r1, r1 str r1, [sp] mov r1, #8 str r1, [sp, #4] mov r1, #0 add r0, #0x18 add r2, r1, #0 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _022239EE: mov r1, #0x50 str r1, [sp] mov r1, #8 str r1, [sp, #4] mov r1, #0 add r2, r1, #0 add r0, #0x18 sub r2, #0x50 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223A08: mov r1, #0x4f mvn r1, r1 str r1, [sp] mov r1, #8 str r1, [sp, #4] mov r1, #0 add r0, #0x18 add r2, r1, #0 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223A22: mov r2, #0x50 str r2, [sp] mov r1, #8 str r1, [sp, #4] mov r1, #0 add r0, #0x18 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223A38: mov r2, #0x27 mvn r2, r2 str r2, [sp] mov r1, #8 str r1, [sp, #4] mov r1, #0 add r0, #0x18 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223A50: bl ErrorHandling add sp, #8 pop {r3, pc} thumb_func_start MOD08_02223A58 MOD08_02223A58: ; 0x02223A58 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #4 bls _02223A68 b _02223B7C _02223A68: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02223A74: ; jump table .short _02223A7E - _02223A74 - 2 ; case 0 .short _02223A9A - _02223A74 - 2 ; case 1 .short _02223B1C - _02223A74 - 2 ; case 2 .short _02223B52 - _02223A74 - 2 ; case 3 .short _02223B64 - _02223A74 - 2 ; case 4 _02223A7E: ldr r0, [r4, #0x6c] add r0, r0, #1 str r0, [r4, #0x6c] cmp r0, #4 ble _02223B7C add r0, r4, #0 bl MOD08_0222399C ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0 str r0, [r4, #0x6c] b _02223B7C _02223A9A: add r0, r4, #0 add r0, #0x18 bl MOD08_02217ECC cmp r0, #0 beq _02223ABA mov r2, #0x64 mov r3, #0x66 add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0x14] add r0, #0x18 bl MOD08_02217C94 b _02223B7C _02223ABA: ldr r0, [r4, #0x68] add r0, r0, #1 str r0, [r4, #0x68] cmp r0, #6 bge _02223AEA mov r0, #0 str r0, [r4, #0xc] mov r0, #0x64 ldrsh r1, [r4, r0] mov r0, #0x18 ldrsh r0, [r4, r0] add r1, r1, r0 add r0, r4, #0 add r0, #0x64 strh r1, [r0] mov r0, #0x66 ldrsh r1, [r4, r0] mov r0, #0x1a ldrsh r0, [r4, r0] add r1, r1, r0 add r0, r4, #0 add r0, #0x66 strh r1, [r0] b _02223B7C _02223AEA: ldr r0, [r4, #0xc] mov r1, #1 add r0, r0, #1 str r0, [r4, #0xc] ldr r0, [r4, #0x14] bl FUN_0200C90C mov r1, #0x10 add r0, r4, #0 mov r2, #0 str r1, [sp] add r0, #0x3c add r3, r2, #0 str r1, [sp, #4] bl MOD08_022186D4 ldr r0, _02223B88 ; =0x00007FFF mov r1, #0 str r0, [sp] ldr r0, [r4, #0x10] mov r2, #0xa add r3, r1, #0 bl FUN_02007E68 b _02223B7C _02223B1C: add r0, r4, #0 add r0, #0x3c bl MOD08_02218704 cmp r0, #0 beq _02223B30 ldr r0, [r4, #0x14] mov r1, #0 bl FUN_0200C644 _02223B30: ldr r0, [r4, #0x10] bl FUN_02007F20 cmp r0, #0 bne _02223B7C ldr r0, [r4, #0xc] mov r2, #0 add r0, r0, #1 str r0, [r4, #0xc] ldr r0, _02223B88 ; =0x00007FFF mov r1, #0xa str r0, [sp] ldr r0, [r4, #0x10] add r3, r2, #0 bl FUN_02007E68 b _02223B7C _02223B52: ldr r0, [r4, #0x10] bl FUN_02007F20 cmp r0, #0 bne _02223B7C ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02223B7C _02223B64: ldr r0, [r4, #0x14] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, pc} _02223B7C: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} nop _02223B88: .word 0x00007FFF thumb_func_start MOD08_02223B8C MOD08_02223B8C: ; 0x02223B8C push {r3, r4, r5, r6, r7, lr} add r7, r1, #0 mov r1, #0x70 add r5, r0, #0 str r2, [sp] add r6, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] ldr r0, [sp] str r7, [r4, #4] str r0, [r4, #8] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x10] str r6, [r4, #0x14] add r0, r6, #0 mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C6B0 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x14] add r1, #0x64 add r2, #0x66 bl FUN_0200C7A0 ldr r0, [r4] ldr r1, _02223BE4 ; =MOD08_02223A58 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _02223BE4: .word MOD08_02223A58 thumb_func_start MOD08_02223BE8 MOD08_02223BE8: ; 0x02223BE8 push {r3, lr} sub sp, #8 ldr r1, [r0, #0x50] cmp r1, #3 bhi _02223C6A add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02223BFE: ; jump table .short _02223C06 - _02223BFE - 2 ; case 0 .short _02223C1C - _02223BFE - 2 ; case 1 .short _02223C36 - _02223BFE - 2 ; case 2 .short _02223C50 - _02223BFE - 2 ; case 3 _02223C06: mov r2, #0x50 str r2, [sp] mov r1, #4 str r1, [sp, #4] mov r1, #0 add r0, #0x28 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223C1C: mov r1, #0x4f mvn r1, r1 str r1, [sp] mov r1, #4 str r1, [sp, #4] mov r1, #0 add r0, #0x28 add r2, r1, #0 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223C36: mov r1, #0x50 str r1, [sp] mov r1, #4 str r1, [sp, #4] mov r1, #0 add r2, r1, #0 add r0, #0x28 sub r2, #0x50 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223C50: mov r1, #0x27 mvn r1, r1 str r1, [sp] mov r1, #4 str r1, [sp, #4] mov r1, #0 add r0, #0x28 mov r2, #0x28 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02223C6A: bl ErrorHandling add sp, #8 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02223C74 MOD08_02223C74: ; 0x02223C74 push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #6 bhi _02223D7E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02223C8E: ; jump table .short _02223C9C - _02223C8E - 2 ; case 0 .short _02223CB8 - _02223C8E - 2 ; case 1 .short _02223D24 - _02223C8E - 2 ; case 2 .short _02223D80 - _02223C8E - 2 ; case 3 .short _02223DE2 - _02223C8E - 2 ; case 4 .short _02223E02 - _02223C8E - 2 ; case 5 .short _02223E30 - _02223C8E - 2 ; case 6 _02223C9C: ldr r0, [r4, #0x54] add r0, r0, #1 str r0, [r4, #0x54] cmp r0, #1 ble _02223D7E add r0, r4, #0 bl MOD08_02223BE8 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0 str r0, [r4, #0x54] b _02223E48 _02223CB8: add r0, r4, #0 add r0, #0x28 bl MOD08_02217ECC cmp r0, #0 beq _02223CD8 mov r2, #0x4c mov r3, #0x4e add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #0x24] add r0, #0x28 bl MOD08_02217C94 b _02223E48 _02223CD8: ldr r0, [r4, #0x50] add r0, r0, #1 str r0, [r4, #0x50] cmp r0, #4 bge _02223D08 mov r0, #0 str r0, [r4, #0xc] mov r0, #0x4c ldrsh r1, [r4, r0] mov r0, #0x28 ldrsh r0, [r4, r0] add r1, r1, r0 add r0, r4, #0 add r0, #0x4c strh r1, [r0] mov r0, #0x4e ldrsh r1, [r4, r0] mov r0, #0x2a ldrsh r0, [r4, r0] add r1, r1, r0 add r0, r4, #0 add r0, #0x4e strh r1, [r0] b _02223E48 _02223D08: ldr r0, [r4, #0xc] mov r1, #1 add r0, r0, #1 str r0, [r4, #0xc] mov r0, #8 str r0, [r4, #0x54] ldr r0, [r4, #0x24] bl FUN_0200C5C0 ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200C5E0 b _02223E48 _02223D24: ldr r0, [r4, #0x54] sub r0, r0, #1 str r0, [r4, #0x54] bpl _02223D7E ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] ldr r0, [r4] bl MOD08_02215504 add r5, r0, #0 ldr r0, [r4] bl MOD08_02214540 add r2, r0, #0 mov r0, #0 str r0, [sp] mov r0, #0x10 str r0, [sp, #4] ldr r0, _02223E54 ; =0x0000FFFF mov r1, #1 lsl r2, r2, #0x10 add r3, r1, #0 str r0, [sp, #8] add r0, r5, #0 lsr r2, r2, #0x10 sub r3, #9 bl FUN_02003210 ldr r7, _02223E54 ; =0x0000FFFF mov r6, #0 add r5, r4, #0 _02223D64: ldr r0, [r5, #0x14] cmp r0, #0 beq _02223D76 mov r1, #0xe mov r2, #0x10 mov r3, #0 str r7, [sp] bl FUN_02007E68 _02223D76: add r6, r6, #1 add r5, r5, #4 cmp r6, #4 blt _02223D64 _02223D7E: b _02223E48 _02223D80: ldr r0, [r4] bl MOD08_02215504 bl FUN_020038E4 cmp r0, #0 bne _02223E48 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] ldr r0, [r4] bl MOD08_02215504 add r5, r0, #0 ldr r0, [r4] bl MOD08_02214540 add r2, r0, #0 mov r0, #0x10 str r0, [sp] mov r0, #0 str r0, [sp, #4] ldr r0, _02223E54 ; =0x0000FFFF mov r1, #1 lsl r2, r2, #0x10 add r3, r1, #0 str r0, [sp, #8] add r0, r5, #0 lsr r2, r2, #0x10 sub r3, #9 bl FUN_02003210 ldr r7, _02223E54 ; =0x0000FFFF mov r6, #0 add r5, r4, #0 _02223DC6: ldr r0, [r5, #0x14] cmp r0, #0 beq _02223DD8 mov r2, #0 mov r1, #2 add r3, r2, #0 str r7, [sp] bl FUN_02007E68 _02223DD8: add r6, r6, #1 add r5, r5, #4 cmp r6, #4 blt _02223DC6 b _02223E48 _02223DE2: ldr r0, [r4] bl MOD08_02215504 bl FUN_020038E4 cmp r0, #0 bne _02223E48 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] mov r0, #4 str r0, [r4, #0x54] str r0, [r4, #0x50] mov r0, #0 str r0, [r4, #0x58] b _02223E48 _02223E02: ldr r0, [r4, #0x54] sub r0, r0, #1 str r0, [r4, #0x54] bpl _02223E48 mov r0, #4 str r0, [r4, #0x54] ldr r0, [r4, #0x50] sub r0, r0, #1 str r0, [r4, #0x50] bpl _02223E1E ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02223E48 _02223E1E: ldr r0, [r4, #0x24] ldr r1, [r4, #0x58] bl FUN_0200C644 ldr r1, [r4, #0x58] mov r0, #1 eor r0, r1 str r0, [r4, #0x58] b _02223E48 _02223E30: ldr r0, [r4, #0x24] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #0xc pop {r4, r5, r6, r7, pc} _02223E48: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #0xc pop {r4, r5, r6, r7, pc} nop _02223E54: .word 0x0000FFFF thumb_func_start MOD08_02223E58 MOD08_02223E58: ; 0x02223E58 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r6, r1, #0 mov r1, #0x5c add r5, r0, #0 str r2, [sp, #4] add r7, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] ldr r0, [sp, #4] str r6, [r4, #4] str r0, [r4, #8] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x10] mov r6, #0 add r5, r4, #0 _02223E88: ldr r0, [r4] add r1, r6, #0 bl MOD08_022154D4 str r0, [r5, #0x14] add r6, r6, #1 add r5, r5, #4 cmp r6, #4 blt _02223E88 str r7, [r4, #0x24] add r0, r7, #0 mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200C6B0 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x24] add r1, #0x4c add r2, #0x4e bl FUN_0200C7A0 mov r1, #0x4c ldrsh r2, [r4, r1] add r0, r4, #0 add r0, #0x4c sub r2, #0x28 strh r2, [r0] mov r2, #0x4e ldrsh r3, [r4, r2] add r0, r4, #0 add r0, #0x4e sub r3, #0x28 strh r3, [r0] ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x24] bl FUN_0200C714 ldr r0, [r4, #0x24] mov r1, #1 bl FUN_0200C90C mov r0, #0xf mvn r0, r0 str r0, [r4, #0x54] mov r0, #0x1a str r0, [sp] ldr r0, _02223F08 ; =0x04000050 mov r1, #0 mov r2, #0x3f mov r3, #0x1f bl G2x_SetBlendAlpha_ ldr r0, [r4] ldr r1, _02223F0C ; =MOD08_02223C74 add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02223F08: .word 0x04000050 _02223F0C: .word MOD08_02223C74 thumb_func_start MOD08_02223F10 MOD08_02223F10: ; 0x02223F10 push {r3, r4, r5, lr} ldr r2, _02223F50 ; =0x00000AAA add r4, r0, #0 add r5, r1, #0 add r0, #0x10 mov r1, #0 mov r3, #3 bl MOD08_02218030 cmp r5, #0 beq _02223F3C mov r0, #0 ldr r1, [r4, #0x18] mvn r0, r0 mul r0, r1 str r0, [r4, #0x18] ldr r0, [r4, #8] mov r1, #0xa mov r2, #0x10 bl FUN_02007558 b _02223F48 _02223F3C: mov r1, #0xa add r2, r1, #0 ldr r0, [r4, #8] sub r2, #0x1a bl FUN_02007558 _02223F48: mov r0, #0 str r0, [r4, #0x4c] str r0, [r4, #0x50] pop {r3, r4, r5, pc} .align 2, 0 _02223F50: .word 0x00000AAA thumb_func_start MOD08_02223F54 MOD08_02223F54: ; 0x02223F54 push {r3, r4, r5, lr} sub sp, #8 add r4, r0, #0 ldr r0, [r4, #0x4c] mov r5, #0 cmp r0, #3 bhi _0222405E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02223F6E: ; jump table .short _02223F76 - _02223F6E - 2 ; case 0 .short _02223FB6 - _02223F6E - 2 ; case 1 .short _02224012 - _02223F6E - 2 ; case 2 .short _0222405C - _02223F6E - 2 ; case 3 _02223F76: add r0, r4, #0 add r0, #0x10 bl MOD08_02218080 ldr r0, [r4, #8] ldr r2, [r4, #0x10] mov r1, #9 bl FUN_02007558 ldr r0, [r4, #0x50] sub r0, r0, #1 str r0, [r4, #0x50] bpl _0222405E ldr r0, [r4, #0x4c] add r0, r0, #1 str r0, [r4, #0x4c] mov r0, #0xe ldrsh r3, [r4, r0] mov r0, #0xc ldrsh r1, [r4, r0] add r0, r3, #2 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] mov r0, #2 add r4, #0x24 str r0, [sp, #4] add r0, r4, #0 add r2, r1, #0 bl MOD08_02217E80 b _0222405E _02223FB6: add r0, r4, #0 add r0, #0x10 bl MOD08_02218080 cmp r0, #0 beq _02223FCC ldr r0, [r4, #8] ldr r2, [r4, #0x10] mov r1, #9 bl FUN_02007558 _02223FCC: add r0, r4, #0 ldr r1, [r4, #8] add r0, #0x24 bl MOD08_02217F2C cmp r0, #0 bne _0222405E ldr r0, [r4, #0x4c] mov r2, #0 add r0, r0, #1 str r0, [r4, #0x4c] ldr r1, [r4, #0x10] add r0, r4, #0 lsl r1, r1, #0x10 add r0, #0x10 asr r1, r1, #0x10 mov r3, #3 bl MOD08_02218030 mov r0, #0xe ldrsh r3, [r4, r0] mov r0, #0xc ldrsh r1, [r4, r0] mov r0, #2 add r4, #0x24 str r3, [sp] add r3, r3, #2 lsl r3, r3, #0x10 str r0, [sp, #4] add r0, r4, #0 add r2, r1, #0 asr r3, r3, #0x10 bl MOD08_02217E80 b _0222405E _02224012: add r0, r4, #0 ldr r1, [r4, #8] add r0, #0x24 bl MOD08_02217F2C add r0, r4, #0 add r0, #0x10 bl MOD08_02218080 cmp r0, #0 ldr r0, [r4, #8] beq _02224034 ldr r2, [r4, #0x10] mov r1, #9 bl FUN_02007558 b _0222405E _02224034: mov r2, #0xc ldrsh r2, [r4, r2] add r1, r5, #0 bl FUN_02007558 mov r2, #0xe ldrsh r2, [r4, r2] ldr r0, [r4, #8] mov r1, #1 bl FUN_02007558 ldr r0, [r4, #8] mov r1, #9 add r2, r5, #0 bl FUN_02007558 ldr r0, [r4, #0x4c] add r0, r0, #1 str r0, [r4, #0x4c] b _0222405E _0222405C: mov r5, #1 _0222405E: add r0, r5, #0 add sp, #8 pop {r3, r4, r5, pc} thumb_func_start MOD08_02224064 MOD08_02224064: ; 0x02224064 push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldr r0, [r4] cmp r0, #0 beq _02224076 cmp r0, #1 beq _022240A8 pop {r4, pc} _02224076: add r0, r4, #0 bl MOD08_02223F54 cmp r0, #0 beq _022240B6 ldr r0, [r4, #0x48] add r0, r0, #1 str r0, [r4, #0x48] cmp r0, #4 bge _022240A0 ldr r1, [r4, #0x54] mov r0, #1 eor r1, r0 add r0, r4, #0 str r1, [r4, #0x54] bl MOD08_02223F10 add r0, r4, #0 bl MOD08_02223F54 pop {r4, pc} _022240A0: ldr r0, [r4] add r0, r0, #1 str r0, [r4] pop {r4, pc} _022240A8: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _022240B6: pop {r4, pc} thumb_func_start MOD08_022240B8 MOD08_022240B8: ; 0x022240B8 push {r4, r5, r6, lr} mov r1, #0x58 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #4] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02217C1C add r6, r0, #0 add r0, r5, #0 mov r1, #0 bl MOD08_02212498 cmp r0, #0 bne _02224104 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #8] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0xc] ldr r0, [r4, #8] mov r1, #1 bl FUN_0200782C b _02224124 _02224104: add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #8] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0xc] ldr r0, [r4, #8] mov r1, #1 bl FUN_0200782C _02224124: strh r0, [r4, #0xe] ldr r0, [r4, #8] mov r1, #0xb mov r2, #0x32 bl FUN_02007558 cmp r6, #1 bne _02224138 mov r0, #0 b _0222413A _02224138: mov r0, #1 _0222413A: str r0, [r4, #0x54] ldr r1, [r4, #0x54] add r0, r4, #0 bl MOD08_02223F10 ldr r0, [r4, #4] ldr r1, _02224150 ; =MOD08_02224064 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} .align 2, 0 _02224150: .word MOD08_02224064 thumb_func_start MOD08_02224154 MOD08_02224154: ; 0x02224154 push {r3, r4, r5, lr} add r4, r0, #0 ldr r0, [r4, #0x38] mov r5, #0 cmp r0, #3 bhi _02224210 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222416C: ; jump table .short _02224174 - _0222416C - 2 ; case 0 .short _022241A4 - _0222416C - 2 ; case 1 .short _022241C6 - _0222416C - 2 ; case 2 .short _022241F6 - _0222416C - 2 ; case 3 _02224174: add r0, r4, #0 ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_02218380 cmp r0, #0 beq _0222419C add r0, r5, #0 str r0, [sp] ldr r1, [r4, #0x3c] ldr r2, [r4, #0x40] lsl r1, r1, #0x10 lsl r2, r2, #0x10 ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_022182DC b _02224210 _0222419C: ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] b _02224210 _022241A4: ldr r0, [r4, #0x34] sub r0, r0, #1 str r0, [r4, #0x34] bpl _02224210 ldr r0, [r4, #0x38] mov r2, #0xa add r0, r0, #1 str r0, [r4, #0x38] mov r0, #8 add r4, #0x10 str r0, [sp] add r0, r4, #0 mov r1, #0xf add r3, r2, #0 bl MOD08_02218120 b _02224210 _022241C6: add r0, r4, #0 ldr r1, [r4, #0xc] add r0, #0x10 bl MOD08_02218380 cmp r0, #0 beq _022241EE add r0, r5, #0 str r0, [sp] ldr r1, [r4, #0x3c] ldr r2, [r4, #0x40] lsl r1, r1, #0x10 lsl r2, r2, #0x10 ldr r0, [r4, #0xc] ldr r3, [r4, #0x24] asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_022182DC b _02224210 _022241EE: ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] b _02224210 _022241F6: mov r1, #0xc add r2, r1, #0 ldr r0, [r4, #0xc] add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0xc] add r2, #0xf3 bl FUN_02007558 mov r5, #1 _02224210: add r0, r5, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_02224214 MOD08_02224214: ; 0x02224214 push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldr r0, [r4, #4] cmp r0, #0 beq _0222422A cmp r0, #1 beq _02224240 cmp r0, #2 beq _02224250 pop {r4, pc} _0222422A: add r0, r4, #0 bl MOD08_02224154 cmp r0, #0 beq _0222425E ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] mov r0, #0x10 str r0, [r4, #8] pop {r4, pc} _02224240: ldr r0, [r4, #8] sub r0, r0, #1 str r0, [r4, #8] bpl _0222425E ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] pop {r4, pc} _02224250: ldr r0, [r4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _0222425E: pop {r4, pc} thumb_func_start MOD08_02224260 MOD08_02224260: ; 0x02224260 push {r3, r4, r5, lr} mov r1, #0x44 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0xc] mov r0, #8 str r0, [sp] add r0, r4, #0 mov r1, #0xa add r0, #0x10 add r2, r1, #0 mov r3, #0xf bl MOD08_02218120 mov r0, #4 str r0, [r4, #0x34] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C str r0, [r4, #0x40] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C str r0, [r4, #0x3c] ldr r0, [r4] ldr r1, _022242BC ; =MOD08_02224214 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _022242BC: .word MOD08_02224214 thumb_func_start MOD08_022242C0 MOD08_022242C0: ; 0x022242C0 push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 ldr r0, [r5, #0x74] mov r1, #0x64 bl _s32_div_f add r4, r0, #0 ldr r0, [r5, #0x78] mov r1, #0x64 bl _s32_div_f add r6, r0, #0 ldr r0, [r5, #0x70] mov r1, #0x64 bl _s32_div_f str r0, [sp] add r0, r5, #0 lsl r1, r4, #0x10 lsl r3, r6, #0x10 add r0, #0x18 asr r1, r1, #0x10 mov r2, #0xa asr r3, r3, #0x10 bl MOD08_02218120 ldr r0, [r5] mov r1, #0x10 mov r2, #0 bl MOD08_02227994 ldr r0, [r5, #0x70] mov r1, #0x64 bl _s32_div_f mov r1, #6 str r1, [sp] lsl r0, r0, #1 str r0, [sp, #4] add r0, r5, #0 add r0, #0x3c mov r1, #0x10 mov r2, #0xa mov r3, #0 bl MOD08_022186D4 mov r0, #0 str r0, [r5, #0x64] str r0, [r5, #0x68] add sp, #8 pop {r4, r5, r6, pc} thumb_func_start MOD08_02224328 MOD08_02224328: ; 0x02224328 push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 ldr r0, [r4, #0x64] mov r5, #0 cmp r0, #3 bhi _022243FC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02224340: ; jump table .short _02224348 - _02224340 - 2 ; case 0 .short _0222438E - _02224340 - 2 ; case 1 .short _022243E4 - _02224340 - 2 ; case 2 .short _022243FA - _02224340 - 2 ; case 3 _02224348: add r0, r4, #0 ldr r1, [r4, #0x14] add r0, #0x18 bl MOD08_02218360 cmp r0, #0 bne _022243FC ldr r0, [r4, #0x78] mov r1, #0x64 bl _s32_div_f add r6, r0, #0 ldr r0, [r4, #0x74] mov r1, #0x64 bl _s32_div_f add r7, r0, #0 ldr r0, [r4, #0x70] mov r1, #0x64 bl _s32_div_f str r0, [sp] add r0, r4, #0 lsl r1, r6, #0x10 lsl r3, r7, #0x10 add r0, #0x18 asr r1, r1, #0x10 mov r2, #0xa asr r3, r3, #0x10 bl MOD08_02218120 ldr r0, [r4, #0x64] add r0, r0, #1 str r0, [r4, #0x64] b _022243FC _0222438E: add r0, r4, #0 ldr r1, [r4, #0x14] add r0, #0x18 bl MOD08_02218360 cmp r0, #0 bne _022243FC ldr r0, [r4, #0x68] add r0, r0, #1 str r0, [r4, #0x68] cmp r0, #2 bge _022243DC add r0, r5, #0 str r0, [r4, #0x64] ldr r0, [r4, #0x74] mov r1, #0x64 bl _s32_div_f add r6, r0, #0 ldr r0, [r4, #0x78] mov r1, #0x64 bl _s32_div_f add r7, r0, #0 ldr r0, [r4, #0x70] mov r1, #0x64 bl _s32_div_f lsl r1, r6, #0x10 lsl r3, r7, #0x10 add r4, #0x18 str r0, [sp] add r0, r4, #0 asr r1, r1, #0x10 mov r2, #0xa asr r3, r3, #0x10 bl MOD08_02218120 b _022243FC _022243DC: ldr r0, [r4, #0x64] add r0, r0, #1 str r0, [r4, #0x64] b _022243FC _022243E4: add r0, r4, #0 add r0, #0x3c bl MOD08_02218704 cmp r0, #0 beq _022243FC ldr r0, [r4, #0x64] mov r5, #1 add r0, r0, #1 str r0, [r4, #0x64] b _022243FC _022243FA: mov r5, #1 _022243FC: add r0, r5, #0 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02224400 MOD08_02224400: ; 0x02224400 push {r3, r4, r5, lr} add r5, r0, #0 ldr r1, [r5, #0x7c] mov r4, #0 cmp r1, #0 beq _02224416 cmp r1, #1 beq _02224428 cmp r1, #2 beq _02224472 b _02224474 _02224416: bl MOD08_022242C0 add r0, r5, #0 bl MOD08_02224328 ldr r0, [r5, #0x7c] add r0, r0, #1 str r0, [r5, #0x7c] b _02224474 _02224428: bl MOD08_02224328 cmp r0, #0 beq _02224474 ldr r0, [r5, #0x6c] sub r0, r0, #1 str r0, [r5, #0x6c] bmi _02224468 ldr r0, [r5, #0x70] mov r1, #3 bl _s32_div_f ldr r1, [r5, #0x70] sub r0, r1, r0 str r0, [r5, #0x70] ldr r0, [r5, #0x74] mov r1, #3 bl _s32_div_f ldr r1, [r5, #0x74] sub r0, r1, r0 str r0, [r5, #0x74] ldr r0, [r5, #0x78] mov r1, #3 bl _s32_div_f ldr r1, [r5, #0x78] sub r0, r1, r0 str r0, [r5, #0x78] add r0, r4, #0 str r0, [r5, #0x7c] b _02224474 _02224468: ldr r0, [r5, #0x7c] mov r4, #1 add r0, r0, #1 str r0, [r5, #0x7c] b _02224474 _02224472: mov r4, #1 _02224474: add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_02224478 MOD08_02224478: ; 0x02224478 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #4 bls _02224488 b _022245A8 _02224488: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02224494: ; jump table .short _0222449E - _02224494 - 2 ; case 0 .short _022244E4 - _02224494 - 2 ; case 1 .short _02224544 - _02224494 - 2 ; case 2 .short _02224574 - _02224494 - 2 ; case 3 .short _02224590 - _02224494 - 2 ; case 4 _0222449E: add r0, r4, #0 bl MOD08_02224400 cmp r0, #0 beq _022245A8 ldr r0, [r4, #0xc] mov r1, #0 add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0x1e str r0, [r4, #0x10] ldr r0, [r4, #0x14] bl FUN_0200C5C0 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C5E0 mov r1, #0xfe lsl r1, r1, #0x16 ldr r0, [r4, #0x14] add r2, r1, #0 bl FUN_0200C884 mov r1, #0 mov r2, #0x10 str r1, [sp] mov r0, #4 str r0, [sp, #4] add r0, r4, #0 add r0, #0x3c add r3, r2, #0 bl MOD08_022186D4 b _022245A8 _022244E4: ldr r0, [r4, #0x10] cmp r0, #0 bne _02224502 mov r0, #1 str r0, [sp] mov r0, #8 mov r1, #0x10 mov r2, #0 mov r3, #0xd bl FUN_0200A208 mov r0, #0 mvn r0, r0 str r0, [r4, #0x10] b _02224508 _02224502: ble _02224508 sub r0, r0, #1 str r0, [r4, #0x10] _02224508: mov r0, #0 ldr r1, [r4, #0x10] mvn r0, r0 cmp r1, r0 bne _02224532 mov r0, #1 bl FUN_0200A344 cmp r0, #0 beq _02224532 mov r0, #1 str r0, [sp] mov r0, #8 mov r1, #0 mov r2, #0x10 mov r3, #0xd bl FUN_0200A208 mov r0, #1 mvn r0, r0 str r0, [r4, #0x10] _02224532: ldr r0, [r4, #0x14] bl FUN_0200C608 cmp r0, #0 bne _022245A8 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _022245A8 _02224544: mov r0, #1 bl FUN_0200A344 cmp r0, #0 beq _022245A8 ldr r0, [r4, #0xc] mov r1, #0x10 add r0, r0, #1 str r0, [r4, #0xc] ldr r0, [r4] mov r2, #0 bl MOD08_02227994 mov r1, #0x10 mov r2, #0 str r1, [sp] mov r0, #8 str r0, [sp, #4] add r0, r4, #0 add r0, #0x3c add r3, r2, #0 bl MOD08_022186D4 b _022245A8 _02224574: add r0, r4, #0 add r0, #0x3c bl MOD08_02218704 cmp r0, #0 beq _022245A8 ldr r0, [r4, #0x14] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _022245A8 _02224590: ldr r0, [r4, #0x14] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, pc} _022245A8: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022245B4 MOD08_022245B4: ; 0x022245B4 push {r3, r4, r5, r6, r7, lr} add r7, r1, #0 mov r1, #0x80 add r6, r0, #0 str r2, [sp] add r5, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r6, [r4] ldr r0, [sp] str r7, [r4, #4] str r0, [r4, #8] str r5, [r4, #0x14] add r0, r5, #0 mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x14] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x14] mov r1, #4 bl FUN_0200C61C mov r0, #3 str r0, [r4, #0x6c] mov r0, #0x19 lsl r0, r0, #4 str r0, [r4, #0x70] ldr r0, _02224618 ; =0x000005DC ldr r1, _0222461C ; =MOD08_02224478 str r0, [r4, #0x74] mov r0, #0xfa lsl r0, r0, #2 str r0, [r4, #0x78] ldr r0, [r4] add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02224618: .word 0x000005DC _0222461C: .word MOD08_02224478 thumb_func_start MOD08_02224620 MOD08_02224620: ; 0x02224620 push {r3, lr} sub sp, #8 ldr r1, [r0, #0x34] cmp r1, #3 bhi _02224668 add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _02224636: ; jump table .short _0222463E - _02224636 - 2 ; case 0 .short _02224656 - _02224636 - 2 ; case 1 .short _0222463E - _02224636 - 2 ; case 2 .short _02224656 - _02224636 - 2 ; case 3 _0222463E: mov r1, #0x20 str r1, [sp] mov r1, #6 str r1, [sp, #4] mov r1, #0 add r0, #0x10 add r2, r1, #0 add r3, r1, #0 bl MOD08_02217E80 add sp, #8 pop {r3, pc} _02224656: mov r1, #0 str r1, [sp] mov r2, #6 str r2, [sp, #4] add r0, #0x10 add r2, r1, #0 mov r3, #0x20 bl MOD08_02217E80 _02224668: add sp, #8 pop {r3, pc} thumb_func_start MOD08_0222466C MOD08_0222466C: ; 0x0222466C push {r4, lr} add r4, r1, #0 add r2, r0, #0 ldr r0, [r4] cmp r0, #0 beq _02224682 cmp r0, #1 beq _02224690 cmp r0, #2 beq _022246C8 pop {r4, pc} _02224682: add r0, r4, #0 bl MOD08_02224620 ldr r0, [r4] add r0, r0, #1 str r0, [r4] pop {r4, pc} _02224690: add r0, r4, #0 add r0, #0x10 bl MOD08_02217ECC cmp r0, #0 beq _022246B0 mov r2, #0xc mov r3, #0xe add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] ldr r1, [r4, #8] add r0, #0x10 bl MOD08_02217CD0 pop {r4, pc} _022246B0: ldr r0, [r4, #0x34] add r0, r0, #1 str r0, [r4, #0x34] cmp r0, #4 bge _022246C0 mov r0, #0 str r0, [r4] pop {r4, pc} _022246C0: ldr r0, [r4] add r0, r0, #1 str r0, [r4] pop {r4, pc} _022246C8: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} thumb_func_start MOD08_022246D8 MOD08_022246D8: ; 0x022246D8 push {r3, r4, r5, lr} mov r1, #0x38 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #4] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #8] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0xc] ldr r0, [r4, #8] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0xe] mov r0, #0 str r0, [r4, #0x34] ldr r0, [r4, #4] ldr r1, _02224718 ; =MOD08_0222466C add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} .align 2, 0 _02224718: .word MOD08_0222466C thumb_func_start MOD08_0222471C MOD08_0222471C: ; 0x0222471C push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 ldr r0, [r4] cmp r0, #6 bhi _0222477E add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02224736: ; jump table .short _02224744 - _02224736 - 2 ; case 0 .short _02224762 - _02224736 - 2 ; case 1 .short _022247DA - _02224736 - 2 ; case 2 .short _0222481E - _02224736 - 2 ; case 3 .short _0222485C - _02224736 - 2 ; case 4 .short _022248A4 - _02224736 - 2 ; case 5 .short _022248D4 - _02224736 - 2 ; case 6 _02224744: add r0, r4, #0 add r0, #0x14 mov r1, #1 mov r2, #0x40 bl MOD08_02218654 ldr r1, [r4, #0x20] ldr r0, [r4, #8] add sp, #8 mul r0, r1 str r0, [r4, #0x20] ldr r0, [r4] add r0, r0, #1 str r0, [r4] pop {r4, pc} _02224762: mov r2, #0x12 ldrsh r2, [r4, r2] mov r1, #0x10 add r0, r4, #0 add r2, #8 lsl r2, r2, #0x10 ldrsh r1, [r4, r1] ldr r3, [r4, #0xc] add r0, #0x14 asr r2, r2, #0x10 bl MOD08_02217E58 cmp r0, #0 beq _02224780 _0222477E: b _022248E2 _02224780: mov r2, #0x10 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02007558 mov r2, #0x12 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_02007558 mov r0, #0x10 ldrsh r1, [r4, r0] mov r3, #0 mov r0, #2 add r2, r1, #0 str r3, [sp] add r2, #0x20 str r0, [sp, #4] add r0, r4, #0 lsl r2, r2, #0x10 add r0, #0x14 asr r2, r2, #0x10 bl MOD08_02217E80 ldr r1, [r4, #0x1c] ldr r0, [r4, #8] mul r0, r1 str r0, [r4, #0x1c] ldr r0, [r4] add r0, r0, #1 str r0, [r4] add r0, r4, #0 add r0, #0x14 bl MOD08_02217ECC mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _022247DA: add r0, r4, #0 add r0, #0x14 bl MOD08_02217ECC cmp r0, #0 beq _022247F6 mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0xc] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _022247F6: mov r0, #0x3c ldrsh r1, [r4, r0] mov r3, #0 mov r0, #2 str r3, [sp] str r0, [sp, #4] ldr r2, [r4, #8] add r0, r4, #0 lsl r2, r2, #5 add r2, r1, r2 lsl r2, r2, #0x10 add r0, #0x40 asr r2, r2, #0x10 bl MOD08_02217E80 ldr r0, [r4] add sp, #8 add r0, r0, #1 str r0, [r4] pop {r4, pc} _0222481E: add r0, r4, #0 add r0, #0x40 bl MOD08_02217ECC cmp r0, #0 beq _0222483A mov r2, #0x40 ldrsh r2, [r4, r2] ldr r0, [r4, #0x38] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _0222483A: mov r3, #0 str r3, [sp] mov r0, #8 str r0, [sp, #4] mov r1, #0x14 mov r2, #0x10 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] add r0, #0x14 bl MOD08_02217E80 ldr r0, [r4] add sp, #8 add r0, r0, #1 str r0, [r4] pop {r4, pc} _0222485C: add r0, r4, #0 add r0, #0x14 bl MOD08_02217ECC cmp r0, #0 ldr r0, [r4, #0xc] beq _02224878 mov r2, #0x14 ldrsh r2, [r4, r2] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _02224878: mov r2, #0x10 ldrsh r2, [r4, r2] mov r1, #0 bl FUN_02007558 mov r3, #0 str r3, [sp] mov r0, #8 str r0, [sp, #4] mov r1, #0x40 mov r2, #0x3c add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] add r0, #0x40 bl MOD08_02217E80 ldr r0, [r4] add sp, #8 add r0, r0, #1 str r0, [r4] pop {r4, pc} _022248A4: add r0, r4, #0 add r0, #0x40 bl MOD08_02217ECC cmp r0, #0 ldr r0, [r4, #0x38] beq _022248C0 mov r2, #0x40 ldrsh r2, [r4, r2] mov r1, #0 bl FUN_02007558 add sp, #8 pop {r4, pc} _022248C0: mov r2, #0x3c ldrsh r2, [r4, r2] mov r1, #0 bl FUN_02007558 ldr r0, [r4] add sp, #8 add r0, r0, #1 str r0, [r4] pop {r4, pc} _022248D4: ldr r0, [r4, #4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _022248E2: add sp, #8 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022248E8 MOD08_022248E8: ; 0x022248E8 push {r3, r4, r5, lr} mov r1, #0x64 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4, #4] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_02217C1C str r0, [r4, #8] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0xc] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x10] ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x12] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4, #4] bl MOD08_022154D4 str r0, [r4, #0x38] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x3c] ldr r0, [r4, #0x38] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x3e] ldr r0, [r4, #4] ldr r1, _02224958 ; =MOD08_0222471C add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _02224958: .word MOD08_0222471C thumb_func_start MOD08_0222495C MOD08_0222495C: ; 0x0222495C push {lr} sub sp, #0xc mov r1, #0 str r1, [r0, #0x40] mov r1, #8 str r1, [sp] mov r1, #0xa str r1, [sp, #4] mov r2, #2 str r2, [sp, #8] add r0, #0x1c mov r2, #9 add r3, r1, #0 bl MOD08_022181A8 add sp, #0xc pop {pc} .align 2, 0 thumb_func_start MOD08_02224980 MOD08_02224980: ; 0x02224980 push {r4, r5, lr} sub sp, #0xc add r4, r0, #0 ldr r0, [r4, #0x40] mov r5, #0 cmp r0, #3 bhi _02224A72 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222499A: ; jump table .short _022249A2 - _0222499A - 2 ; case 0 .short _022249E8 - _0222499A - 2 ; case 1 .short _02224A2A - _0222499A - 2 ; case 2 .short _02224A70 - _0222499A - 2 ; case 3 _022249A2: add r0, r4, #0 ldr r1, [r4, #0x18] add r0, #0x1c bl MOD08_022183A0 cmp r0, #0 beq _022249C6 add r0, r5, #0 str r0, [sp] mov r1, #0x44 mov r2, #0x46 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] ldr r3, [r4, #0x30] bl MOD08_022182DC b _02224A72 _022249C6: ldr r0, [r4, #0x40] mov r1, #9 add r0, r0, #1 str r0, [r4, #0x40] mov r0, #0xf str r0, [sp] mov r0, #0xa str r0, [sp, #4] mov r0, #2 add r4, #0x1c str r0, [sp, #8] add r0, r4, #0 mov r2, #0xb mov r3, #8 bl MOD08_022181A8 b _02224A72 _022249E8: add r0, r4, #0 ldr r1, [r4, #0x18] add r0, #0x1c bl MOD08_022183A0 cmp r0, #0 beq _02224A0C add r0, r5, #0 str r0, [sp] mov r1, #0x44 mov r2, #0x46 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] ldr r3, [r4, #0x30] bl MOD08_022182DC b _02224A72 _02224A0C: ldr r0, [r4, #0x40] mov r2, #0xa add r0, r0, #1 str r0, [r4, #0x40] str r2, [sp] str r2, [sp, #4] mov r0, #2 add r4, #0x1c str r0, [sp, #8] add r0, r4, #0 mov r1, #0xb mov r3, #0xf bl MOD08_022181A8 b _02224A72 _02224A2A: add r0, r4, #0 ldr r1, [r4, #0x18] add r0, #0x1c bl MOD08_022183A0 cmp r0, #0 beq _02224A4E add r0, r5, #0 str r0, [sp] mov r1, #0x44 mov r2, #0x46 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x18] ldr r3, [r4, #0x30] bl MOD08_022182DC b _02224A72 _02224A4E: mov r1, #0xc add r2, r1, #0 ldr r0, [r4, #0x18] add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0x18] add r2, #0xf3 bl FUN_02007558 ldr r0, [r4, #0x40] mov r5, #1 add r0, r0, #1 str r0, [r4, #0x40] b _02224A72 _02224A70: mov r5, #1 _02224A72: add r0, r5, #0 add sp, #0xc pop {r4, r5, pc} thumb_func_start MOD08_02224A78 MOD08_02224A78: ; 0x02224A78 push {r3, r4, r5, lr} add r4, r2, #0 mov r2, #0 str r2, [r1] add r5, r0, #0 mov r1, #0x64 bl FUN_0200C6C4 add r0, r5, #0 mov r1, #1 bl FUN_0200C6B0 add r0, r5, #0 mov r1, #1 bl FUN_0200C644 add r0, r5, #0 mov r1, #1 bl FUN_0200C5E0 add r0, r5, #0 add r1, r4, #0 bl FUN_0200C5F4 add r0, r5, #0 mov r1, #0 bl FUN_0200C5C0 add r0, r5, #0 mov r1, #0 bl FUN_0200C61C mov r1, #0x37 add r0, r5, #0 lsl r1, r1, #0xc bl FUN_0200C5B4 pop {r3, r4, r5, pc} thumb_func_start MOD08_02224AC4 MOD08_02224AC4: ; 0x02224AC4 push {r3, r4, r5, lr} add r5, r1, #0 ldr r1, [r5] mov r4, #0 cmp r1, #0 beq _02224AD6 cmp r1, #1 beq _02224AE8 b _02224AEC _02224AD6: bl FUN_0200C608 cmp r0, #0 bne _02224AEE ldr r0, [r5] mov r4, #1 add r0, r0, #1 str r0, [r5] b _02224AEE _02224AE8: mov r4, #1 b _02224AEE _02224AEC: mov r4, #1 _02224AEE: add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02224AF4 MOD08_02224AF4: ; 0x02224AF4 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r7, r0, #0 ldr r0, [r4, #0xc] cmp r0, #5 bls _02224B02 b _02224C14 _02224B02: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02224B0E: ; jump table .short _02224B1A - _02224B0E - 2 ; case 0 .short _02224B3E - _02224B0E - 2 ; case 1 .short _02224B76 - _02224B0E - 2 ; case 2 .short _02224BA6 - _02224B0E - 2 ; case 3 .short _02224BCC - _02224B0E - 2 ; case 4 .short _02224BF2 - _02224B0E - 2 ; case 5 _02224B1A: add r0, r4, #0 bl MOD08_0222495C ldr r0, [r4, #0x10] add r1, r4, #0 lsl r2, r0, #2 add r0, r4, r2 add r1, #0x60 add r1, r1, r2 mov r2, #2 ldr r0, [r0, #0x48] lsl r2, r2, #0xc bl MOD08_02224A78 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224C14 _02224B3E: add r0, r4, #0 bl MOD08_02224980 add r5, r0, #0 ldr r0, [r4, #0x10] add r1, r4, #0 lsl r2, r0, #2 add r0, r4, r2 add r1, #0x60 ldr r0, [r0, #0x48] add r1, r1, r2 bl MOD08_02224AC4 cmp r5, r0 bne _02224C14 cmp r5, #1 bne _02224C14 ldr r0, [r4, #0x10] mov r1, #1 lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x48] bl FUN_0200C5C0 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224C14 _02224B76: ldr r0, [r4, #0x10] add r2, r4, #0 add r2, #0x78 lsl r1, r0, #2 ldr r0, [r2, r1] sub r0, r0, #1 str r0, [r2, r1] ldr r1, [r4, #0x10] lsl r0, r1, #2 add r0, r4, r0 ldr r0, [r0, #0x78] cmp r0, #0 bge _02224C14 add r0, r1, #1 str r0, [r4, #0x10] cmp r0, #6 bge _02224B9E mov r0, #0 str r0, [r4, #0xc] b _02224C14 _02224B9E: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224C14 _02224BA6: add r6, r4, #0 mov r7, #0 add r6, #0x60 add r5, r4, #0 _02224BAE: mov r2, #2 ldr r0, [r5, #0x48] add r1, r6, #0 lsl r2, r2, #0xc bl MOD08_02224A78 add r7, r7, #1 add r6, r6, #4 add r5, r5, #4 cmp r7, #6 blt _02224BAE ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224C14 _02224BCC: add r6, r4, #0 mov r7, #0 add r6, #0x60 add r5, r4, #0 _02224BD4: ldr r0, [r5, #0x48] add r1, r6, #0 bl MOD08_02224AC4 add r7, r7, #1 add r6, r6, #4 add r5, r5, #4 cmp r7, #6 blt _02224BD4 cmp r0, #1 bne _02224C14 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224C14 _02224BF2: mov r6, #0 add r5, r4, #0 _02224BF6: ldr r0, [r5, #0x48] bl FUN_0200C3DC add r6, r6, #1 add r5, r5, #4 cmp r6, #6 blt _02224BF6 ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _02224C14: ldr r0, [r4, #8] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02224C1C MOD08_02224C1C: ; 0x02224C1C push {r3, r4, r5, r6, r7, lr} sub sp, #0x50 str r1, [sp] mov r1, #0x90 add r4, r0, #0 str r2, [sp, #4] str r3, [sp, #8] bl MOD08_02228064 ldr r1, [sp] str r4, [r0] str r1, [r0, #4] ldr r1, [sp, #4] str r0, [sp, #0x14] str r1, [r0, #8] ldr r0, [r0] bl MOD08_02212458 add r1, r0, #0 ldr r0, [sp, #0x14] ldr r0, [r0] bl MOD08_022154D4 ldr r1, [sp, #0x14] str r0, [r1, #0x18] mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r7, r0, #0x10 ldr r0, [sp, #0x14] mov r1, #1 ldr r0, [r0, #0x18] bl FUN_0200782C ldr r1, [sp, #0x14] lsl r0, r0, #0x10 asr r0, r0, #0x10 add r1, #0x44 str r0, [sp, #0xc] strh r0, [r1] ldr r0, [sp, #0x14] ldr r0, [r0] bl MOD08_02212458 add r1, r0, #0 ldr r0, [sp, #0x14] ldr r0, [r0] bl MOD08_0221552C ldr r1, [sp, #0x14] add r1, #0x46 strh r0, [r1] ldr r1, [sp, #0x14] add r0, sp, #0x1c ldr r1, [r1] bl MOD08_02215474 ldr r5, [sp, #0x14] mov r4, #0 _02224C94: cmp r4, #0 bne _02224C9C ldr r0, [sp, #8] b _02224CA6 _02224C9C: ldr r0, [sp] ldr r1, [sp, #4] add r2, sp, #0x1c bl FUN_0200C154 _02224CA6: str r0, [r5, #0x48] ldr r0, [r5, #0x48] mov r1, #0 bl FUN_0200C644 lsr r0, r4, #0x1f add r0, r4, r0 asr r1, r0, #1 ldr r0, _02224D6C ; =0x00001555 mov r2, #3 mul r0, r1 asr r0, r0, #4 lsl r0, r0, #2 ldr r1, _02224D70 ; =0x020FFA38 str r0, [sp, #0x18] add r1, r1, r0 mov r0, #2 ldrsh r0, [r1, r0] lsl r2, r2, #0x10 mov r3, #0 asr r1, r0, #0x1f bl _ll_mul mov r2, #2 lsl r2, r2, #0xa add r2, r0, r2 ldr r0, _02224D74 ; =0x00000000 adc r1, r0 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 lsl r0, r1, #4 asr r6, r0, #0x10 mov r2, #3 ldr r1, _02224D70 ; =0x020FFA38 ldr r0, [sp, #0x18] lsl r2, r2, #0x10 ldrsh r0, [r1, r0] mov r3, #0 asr r1, r0, #0x1f bl _ll_mul mov r2, #2 lsl r2, r2, #0xa add r0, r0, r2 ldr r2, _02224D74 ; =0x00000000 adc r1, r2 lsl r1, r1, #0x14 lsr r0, r0, #0xc orr r0, r1 lsl r0, r0, #4 asr r0, r0, #0x10 str r0, [sp, #0x10] lsr r2, r4, #0x1f lsl r1, r4, #0x1f sub r1, r1, r2 mov r0, #0x1f ror r1, r0 add r0, r2, r1 bne _02224D2E add r0, r7, r6 lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [r5, #0x48] mov r1, #1 bl FUN_0200C8D0 b _02224D34 _02224D2E: sub r0, r7, r6 lsl r0, r0, #0x10 asr r6, r0, #0x10 _02224D34: ldr r1, [sp, #0xc] ldr r0, [sp, #0x10] sub r0, r1, r0 lsl r0, r0, #0x10 asr r2, r0, #0x10 ldr r0, [r5, #0x48] add r1, r6, #0 bl FUN_0200C714 cmp r4, #2 bge _02224D4E mov r0, #8 b _02224D50 _02224D4E: mov r0, #0 _02224D50: add r4, r4, #1 str r0, [r5, #0x78] add r5, r5, #4 cmp r4, #6 blt _02224C94 ldr r0, [sp, #0x14] ldr r1, _02224D78 ; =MOD08_02224AF4 ldr r0, [r0] ldr r2, [sp, #0x14] bl MOD08_02212400 add sp, #0x50 pop {r3, r4, r5, r6, r7, pc} nop _02224D6C: .word 0x00001555 _02224D70: .word 0x020FFA38 _02224D74: .word 0x00000000 _02224D78: .word MOD08_02224AF4 thumb_func_start MOD08_02224D7C MOD08_02224D7C: ; 0x02224D7C push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #5 bhi _02224DBC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02224D96: ; jump table .short _02224DA2 - _02224D96 - 2 ; case 0 .short _02224DB2 - _02224D96 - 2 ; case 1 .short _02224E12 - _02224D96 - 2 ; case 2 .short _02224E6E - _02224D96 - 2 ; case 3 .short _02224E9E - _02224D96 - 2 ; case 4 .short _02224EC2 - _02224D96 - 2 ; case 5 _02224DA2: ldr r0, [r4, #0x5c] mov r1, #1 bl FUN_0200C5E0 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224EDA _02224DB2: ldr r0, [r4, #0x5c] bl FUN_0200C608 cmp r0, #0 beq _02224DBE _02224DBC: b _02224EDA _02224DBE: ldr r0, [r4, #0x5c] mov r1, #0 bl FUN_0200C5E0 ldr r0, [r4, #0xc] mov r1, #0xa add r0, r0, #1 str r0, [r4, #0xc] mov r0, #8 str r0, [sp] add r0, r4, #0 add r0, #0x14 add r2, r1, #0 mov r3, #0 bl MOD08_02218120 ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C add r5, r0, #0 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C add r3, r0, #0 mov r0, #0x8a ldrsh r0, [r4, r0] lsl r1, r5, #0x10 lsl r3, r3, #0x10 str r0, [sp] mov r0, #8 str r0, [sp, #4] mov r2, #0x88 add r0, r4, #0 ldrsh r2, [r4, r2] add r0, #0x38 asr r1, r1, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 b _02224EDA _02224E12: add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x38 bl MOD08_02217F2C add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x14 bl MOD08_02218380 cmp r0, #0 bne _02224EDA ldr r0, [r4, #0x10] mov r1, #6 mov r2, #1 bl FUN_02007558 mov r1, #0xc add r2, r1, #0 ldr r0, [r4, #0x10] add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0x10] add r2, #0xf3 bl FUN_02007558 ldr r0, [r4, #0x5c] mov r1, #1 bl FUN_0200C5C0 mov r1, #1 ldr r0, [r4, #0x5c] lsl r1, r1, #0xc bl FUN_0200C5F4 ldr r0, [r4, #0x5c] mov r1, #1 bl FUN_0200C5E0 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224EDA _02224E6E: ldr r0, [r4, #0x5c] bl FUN_0200C608 cmp r0, #0 bne _02224EDA ldr r0, [r4, #0x5c] mov r1, #0 bl FUN_0200C5E0 ldr r0, [r4, #0xc] mov r1, #0 add r0, r0, #1 str r0, [r4, #0xc] str r1, [sp] mov r0, #8 str r0, [sp, #4] mov r3, #0x8a add r0, r4, #0 ldrsh r3, [r4, r3] add r0, #0x60 add r2, r1, #0 bl MOD08_02217E80 b _02224EDA _02224E9E: add r0, r4, #0 add r0, #0x60 bl MOD08_02217ECC cmp r0, #0 beq _02224EBA mov r1, #0x88 mov r2, #0x62 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x5c] bl FUN_0200C714 b _02224EDA _02224EBA: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02224EDA _02224EC2: ldr r0, [r4, #0x5c] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, pc} _02224EDA: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} thumb_func_start MOD08_02224EE4 MOD08_02224EE4: ; 0x02224EE4 push {r3, r4, r5, r6, r7, lr} add r7, r1, #0 mov r1, #0x8c add r5, r0, #0 str r2, [sp] add r6, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] ldr r0, [sp] str r7, [r4, #4] str r0, [r4, #8] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #6 mov r2, #0 str r0, [r4, #0x10] bl FUN_02007558 add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 mov r2, #0 bl MOD08_02217B98 add r1, r4, #0 add r1, #0x88 strh r0, [r1] add r0, r5, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r5, #0 mov r2, #1 bl MOD08_02217B98 add r1, r4, #0 add r1, #0x8a strh r0, [r1] str r6, [r4, #0x5c] add r0, r6, #0 mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x5c] mov r1, #1 bl FUN_0200C6B0 mov r1, #0x88 mov r2, #0x8a ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x5c] bl FUN_0200C714 ldr r0, [r4] ldr r1, _02224F70 ; =MOD08_02224D7C add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _02224F70: .word MOD08_02224D7C thumb_func_start MOD08_02224F74 MOD08_02224F74: ; 0x02224F74 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 add r0, r1, #0 bl MOD08_02217C08 mov r1, #1 add r2, r1, #0 lsl r2, r0 mov r0, #0 lsl r2, r2, #0x10 add r4, #0xc4 str r0, [sp] ldr r0, [r4] mov r1, #2 lsr r2, r2, #0x10 mov r3, #8 bl FUN_02003A64 add sp, #4 pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_02224FA0 MOD08_02224FA0: ; 0x02224FA0 push {r3, r4, lr} sub sp, #0x14 add r4, r0, #0 mov r1, #0xa mov r0, #0x14 str r0, [sp] str r1, [sp, #4] mov r0, #8 str r0, [sp, #8] add r0, r4, #0 add r0, #0x28 add r2, r1, #0 add r3, r1, #0 bl MOD08_022181A8 mov r0, #4 str r0, [sp] add r0, r4, #0 mov r1, #0xa add r0, #0x4c add r2, r1, #0 mov r3, #1 bl MOD08_02218120 add r0, r4, #0 mov r1, #0 add r0, #0x94 str r1, [r0] add r0, r4, #0 mov r1, #6 add r0, #0x98 str r1, [r0] ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 add r1, r0, #0 lsl r2, r1, #1 ldr r1, _0222503C ; =0x0222C664 ldr r0, [r4, #0x20] ldrh r1, [r1, r2] bl FUN_0200C644 ldr r0, [r4, #0x18] mov r1, #1 bl FUN_0200C644 add r0, r4, #0 add r0, #0x28 add r1, sp, #0x10 add r2, sp, #0xc bl MOD08_0221825C add r0, r4, #0 add r0, #0xc8 ldr r0, [r0] cmp r0, #1 bne _02225024 ldr r1, [sp, #0x10] mov r0, #0 bl _fsub str r0, [sp, #0x10] _02225024: ldr r0, [r4, #0x18] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] bl FUN_0200C884 ldr r1, [r4, #0x18] add r0, r4, #0 bl MOD08_02224F74 add sp, #0x14 pop {r3, r4, pc} nop _0222503C: .word 0x0222C664 thumb_func_start MOD08_02225040 MOD08_02225040: ; 0x02225040 push {r4, r5, lr} sub sp, #0x14 add r5, r0, #0 add r0, #0x94 ldr r0, [r0] mov r4, #0 cmp r0, #0 beq _0222505C cmp r0, #1 beq _022250E4 cmp r0, #2 bne _0222505A b _02225164 _0222505A: b _02225166 _0222505C: add r0, r5, #0 add r0, #0x28 bl MOD08_02218224 add r0, r5, #0 add r0, #0x28 add r1, sp, #0x10 add r2, sp, #0xc bl MOD08_0221825C add r0, r5, #0 add r0, #0xc8 ldr r0, [r0] cmp r0, #1 bne _02225084 ldr r1, [sp, #0x10] add r0, r4, #0 bl _fsub str r0, [sp, #0x10] _02225084: ldr r0, [r5, #0x18] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] bl FUN_0200C884 mov r0, #0 str r0, [sp] ldr r1, [r5, #0x14] ldr r2, [r5, #0x10] lsl r1, r1, #0x10 lsl r2, r2, #0x10 ldr r0, [r5, #0x18] ldr r3, [r5, #0x3c] asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_02218314 add r0, r5, #0 add r0, #0x98 ldr r0, [r0] sub r1, r0, #1 add r0, r5, #0 add r0, #0x98 str r1, [r0] add r0, r5, #0 add r0, #0x98 ldr r0, [r0] cmp r0, #0 bge _02225166 add r0, r5, #0 add r0, #0x94 ldr r0, [r0] mov r3, #0x14 add r1, r0, #1 add r0, r5, #0 add r0, #0x94 str r1, [r0] str r3, [sp] mov r1, #0xa str r1, [sp, #4] mov r0, #4 add r5, #0x28 str r0, [sp, #8] add r0, r5, #0 mov r2, #1 bl MOD08_022181A8 b _02225166 _022250E4: add r0, r5, #0 add r0, #0x28 bl MOD08_02218224 add r0, r5, #0 add r0, #0x4c bl MOD08_02218170 cmp r0, #0 beq _02225142 mov r0, #0x4c ldrsh r0, [r5, r0] add r1, sp, #0x10 add r2, sp, #0xc strh r0, [r5, #0x28] add r0, r5, #0 add r0, #0x28 bl MOD08_0221825C add r0, r5, #0 add r0, #0xc8 ldr r0, [r0] cmp r0, #1 bne _0222511E ldr r1, [sp, #0x10] add r0, r4, #0 bl _fsub str r0, [sp, #0x10] _0222511E: ldr r0, [r5, #0x18] ldr r1, [sp, #0x10] ldr r2, [sp, #0xc] bl FUN_0200C884 mov r0, #0 str r0, [sp] ldr r1, [r5, #0x14] ldr r2, [r5, #0x10] lsl r1, r1, #0x10 lsl r2, r2, #0x10 ldr r0, [r5, #0x18] ldr r3, [r5, #0x3c] asr r1, r1, #0x10 asr r2, r2, #0x10 bl MOD08_02218314 b _02225166 _02225142: add r0, r5, #0 add r0, #0x94 ldr r0, [r0] add r1, r0, #1 add r0, r5, #0 add r0, #0x94 str r1, [r0] ldr r0, [r5, #0x20] add r1, r4, #0 bl FUN_0200C644 ldr r0, [r5, #0x18] add r1, r4, #0 bl FUN_0200C644 mov r4, #1 b _02225166 _02225164: mov r4, #1 _02225166: add r0, r4, #0 add sp, #0x14 pop {r4, r5, pc} thumb_func_start MOD08_0222516C MOD08_0222516C: ; 0x0222516C push {r4, lr} sub sp, #0x18 add r4, r0, #0 add r1, sp, #0xc ldr r0, [r4, #0x1c] add r1, #2 add r2, sp, #0xc bl FUN_0200C7A0 add r1, sp, #0xc mov r0, #0 ldrsh r3, [r1, r0] mov r0, #2 ldrsh r1, [r1, r0] mov r0, #8 str r3, [sp] sub r3, #0x40 str r0, [sp, #4] add r0, r4, #0 lsl r3, r3, #0x10 add r0, #0x70 add r2, r1, #0 asr r3, r3, #0x10 bl MOD08_02217E80 mov r2, #0xa str r2, [sp] str r2, [sp, #4] mov r0, #8 str r0, [sp, #8] add r0, r4, #0 add r0, #0x28 mov r1, #2 mov r3, #0x14 bl MOD08_022181A8 add r0, r4, #0 add r0, #0x28 add r1, sp, #0x14 add r2, sp, #0x10 bl MOD08_0221825C add r0, r4, #0 add r0, #0xcc ldr r0, [r0] cmp r0, #1 bne _022251D4 ldr r1, [sp, #0x14] mov r0, #0 bl _fsub str r0, [sp, #0x14] _022251D4: ldr r0, [r4, #0x1c] ldr r1, [sp, #0x14] ldr r2, [sp, #0x10] bl FUN_0200C884 add r0, r4, #0 ldr r1, [r4, #0x1c] add r0, #0x70 bl MOD08_02217F08 add r0, r4, #0 mov r1, #0 add r0, #0x94 str r1, [r0] add r0, r4, #0 mov r1, #6 add r0, #0x98 str r1, [r0] ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 add r1, r0, #0 lsl r2, r1, #1 ldr r1, _02225228 ; =0x0222C664 ldr r0, [r4, #0x24] ldrh r1, [r1, r2] bl FUN_0200C644 ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200C644 ldr r1, [r4, #0x1c] add r0, r4, #0 bl MOD08_02224F74 add sp, #0x18 pop {r4, pc} .align 2, 0 _02225228: .word 0x0222C664 thumb_func_start MOD08_0222522C MOD08_0222522C: ; 0x0222522C push {r4, r5, r6, lr} sub sp, #8 add r5, r0, #0 add r0, #0x94 ldr r0, [r0] mov r4, #0 cmp r0, #0 beq _02225246 cmp r0, #1 beq _02225276 cmp r0, #2 beq _022252C8 b _022252CA _02225246: add r0, r5, #0 add r0, #0x98 ldr r0, [r0] sub r1, r0, #1 add r0, r5, #0 add r0, #0x98 str r1, [r0] add r0, r5, #0 ldr r1, [r5, #0x1c] add r0, #0x70 bl MOD08_02217F08 add r0, r5, #0 add r0, #0x98 ldr r0, [r0] cmp r0, #0 bge _022252CA add r0, r5, #0 add r0, #0x94 ldr r0, [r0] add r5, #0x94 add r0, r0, #1 str r0, [r5] b _022252CA _02225276: add r0, r5, #0 ldr r1, [r5, #0x1c] add r0, #0x70 bl MOD08_02217F08 add r0, r5, #0 add r0, #0x28 bl MOD08_02218224 add r6, r0, #0 add r0, r5, #0 add r0, #0x28 add r1, sp, #4 add r2, sp, #0 bl MOD08_0221825C add r0, r5, #0 add r0, #0xcc ldr r0, [r0] cmp r0, #1 bne _022252AA ldr r1, [sp, #4] add r0, r4, #0 bl _fsub str r0, [sp, #4] _022252AA: ldr r0, [r5, #0x1c] ldr r1, [sp, #4] ldr r2, [sp] bl FUN_0200C884 cmp r6, #0 bne _022252CA add r0, r5, #0 add r0, #0x94 ldr r0, [r0] add r5, #0x94 add r0, r0, #1 str r0, [r5] mov r4, #1 b _022252CA _022252C8: mov r4, #1 _022252CA: add r0, r4, #0 add sp, #8 pop {r4, r5, r6, pc} thumb_func_start MOD08_022252D0 MOD08_022252D0: ; 0x022252D0 push {r4, lr} sub sp, #8 add r4, r1, #0 add r2, r0, #0 ldr r0, [r4, #8] cmp r0, #6 bhi _022253AA add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022252EA: ; jump table .short _022252F8 - _022252EA - 2 ; case 0 .short _0222531C - _022252EA - 2 ; case 1 .short _02225336 - _022252EA - 2 ; case 2 .short _0222534C - _022252EA - 2 ; case 3 .short _02225362 - _022252EA - 2 ; case 4 .short _02225388 - _022252EA - 2 ; case 5 .short _0222539C - _022252EA - 2 ; case 6 _022252F8: ldr r0, [r4] mov r1, #0 mov r2, #0x10 bl MOD08_02227994 mov r2, #8 str r2, [sp] add r0, r4, #0 str r2, [sp, #4] add r0, #0x9c mov r1, #0 mov r3, #0x10 bl MOD08_022186D4 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022253AA _0222531C: add r0, r4, #0 add r0, #0x9c bl MOD08_02218704 cmp r0, #0 beq _022253AA ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] add r0, r4, #0 bl MOD08_02224FA0 b _022253AA _02225336: add r0, r4, #0 bl MOD08_02225040 cmp r0, #0 beq _022253AA ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] mov r0, #2 str r0, [r4, #0xc] b _022253AA _0222534C: ldr r0, [r4, #0xc] sub r0, r0, #1 str r0, [r4, #0xc] bpl _022253AA add r0, r4, #0 bl MOD08_0222516C ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022253AA _02225362: add r0, r4, #0 bl MOD08_0222522C cmp r0, #0 beq _022253AA ldr r0, [r4, #8] mov r1, #8 add r0, r0, #1 str r0, [r4, #8] mov r0, #0x10 str r0, [sp] add r0, r4, #0 add r0, #0x9c mov r2, #0 add r3, r1, #0 str r1, [sp, #4] bl MOD08_022186D4 b _022253AA _02225388: add r0, r4, #0 add r0, #0x9c bl MOD08_02218704 cmp r0, #0 beq _022253AA ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022253AA _0222539C: ldr r0, [r4] add r1, r2, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 _022253AA: ldr r0, [r4, #4] bl FUN_0200BC1C add sp, #8 pop {r4, pc} thumb_func_start MOD08_022253B4 MOD08_022253B4: ; 0x022253B4 push {r3, r4, r5, r6, r7, lr} sub sp, #8 mov r1, #0xd0 add r6, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r6, [r4] add r0, r6, #0 bl MOD08_02212504 str r0, [r4, #4] ldr r0, [r4] bl MOD08_02215504 add r1, r4, #0 add r1, #0xc4 str r0, [r1] add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 add r7, r0, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] add r0, r7, #0 mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 add r0, r7, #0 mov r1, #0x29 bl FUN_0200782C sub r0, r5, r0 lsl r0, r0, #0x10 asr r5, r0, #0x10 add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [sp, #4] bl FUN_0200782C lsl r0, r0, #0x10 asr r7, r0, #0x10 ldr r0, [sp, #4] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [sp, #4] mov r1, #0x29 bl FUN_0200782C sub r0, r6, r0 lsl r0, r0, #0x10 str r5, [r4, #0x14] asr r6, r0, #0x10 ldr r0, [r4] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C str r0, [r4, #0x10] ldr r0, [r4] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x18] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x18] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x18] ldr r1, [sp] add r2, r5, #0 bl FUN_0200C714 ldr r0, [r4, #0x18] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x18] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x18] mov r1, #2 bl FUN_0200C840 ldr r0, [r4] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x1c] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x1c] add r1, r7, #0 add r2, r6, #0 bl FUN_0200C714 ldr r0, [r4, #0x1c] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x1c] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x1c] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x1c] mov r1, #0 mov r2, #0x28 bl FUN_0200C8DC ldr r0, [r4] mov r1, #0 bl MOD08_02215680 add r1, r4, #0 add r1, #0xc8 str r0, [r1] ldr r0, [r4] mov r1, #1 bl MOD08_02215680 add r1, r4, #0 add r1, #0xcc str r0, [r1] ldr r0, [r4] mov r1, #2 bl MOD08_022124D8 str r0, [r4, #0x20] ldr r0, [r4] mov r1, #3 bl MOD08_022124D8 str r0, [r4, #0x24] ldr r0, [r4, #0x20] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x24] mov r1, #0 bl FUN_0200C644 ldr r0, [r4] ldr r1, _02225520 ; =MOD08_022252D0 add r2, r4, #0 bl MOD08_02212400 add sp, #8 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02225520: .word MOD08_022252D0 thumb_func_start MOD08_02225524 MOD08_02225524: ; 0x02225524 push {r4, lr} sub sp, #0x20 mov r2, #0xa add r4, r0, #0 add r0, #0xf8 mov r1, #0x19 add r3, r2, #0 str r2, [sp] bl MOD08_02218120 mov r0, #0x3a ldrsh r0, [r4, r0] add r1, r4, #0 mov r3, #0x38 str r0, [sp] mov r0, #9 str r0, [sp, #4] mov r0, #3 str r0, [sp, #8] mov r0, #1 str r0, [sp, #0xc] ldr r0, [r4, #0x44] ldr r2, _02225570 ; =MOD08_02218170 str r0, [sp, #0x10] ldr r0, [r4, #0x40] add r1, #0xf8 str r0, [sp, #0x14] ldr r0, [r4, #0x3c] str r0, [sp, #0x18] mov r0, #0 str r0, [sp, #0x1c] add r0, r4, #0 ldrsh r3, [r4, r3] add r0, #0x48 bl MOD08_0221847C add sp, #0x20 pop {r4, pc} .align 2, 0 _02225570: .word MOD08_02218170 thumb_func_start MOD08_02225574 MOD08_02225574: ; 0x02225574 push {r4, lr} sub sp, #0x20 add r4, r0, #0 mov r0, #6 str r0, [sp] add r0, r4, #0 mov r1, #0xa add r0, #0xf8 add r2, r1, #0 mov r3, #0x19 bl MOD08_02218120 mov r0, #0x3a ldrsh r0, [r4, r0] add r1, r4, #0 mov r3, #0x38 str r0, [sp] mov r0, #5 str r0, [sp, #4] mov r0, #3 str r0, [sp, #8] mov r0, #1 str r0, [sp, #0xc] ldr r0, [r4, #0x3c] ldr r2, _022255CC ; =MOD08_02218170 str r0, [sp, #0x10] ldr r0, [r4, #0x40] add r1, #0xf8 str r0, [sp, #0x14] ldr r0, [r4, #0x44] str r0, [sp, #0x18] mov r0, #0 str r0, [sp, #0x1c] add r0, r4, #0 ldrsh r3, [r4, r3] add r0, #0x48 bl MOD08_0221847C ldr r0, [r4, #0x3c] mov r1, #1 bl FUN_0200C644 add sp, #0x20 pop {r4, pc} .align 2, 0 _022255CC: .word MOD08_02218170 thumb_func_start MOD08_022255D0 MOD08_022255D0: ; 0x022255D0 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r7, r0, #0 ldr r0, [r4, #0xc] cmp r0, #4 bhi _02225688 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022255E8: ; jump table .short _022255F2 - _022255E8 - 2 ; case 0 .short _02225600 - _022255E8 - 2 ; case 1 .short _0222562E - _022255E8 - 2 ; case 2 .short _02225652 - _022255E8 - 2 ; case 3 .short _02225666 - _022255E8 - 2 ; case 4 _022255F2: add r0, r4, #0 bl MOD08_02225524 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02225688 _02225600: add r0, r4, #0 add r0, #0x48 bl MOD08_02218524 cmp r0, #0 bne _02225688 ldr r0, [r4, #0x3c] mov r1, #1 bl FUN_0200C644 ldr r0, [r4, #0xc] mov r1, #4 add r0, r0, #1 str r0, [r4, #0xc] mov r0, #6 str r0, [sp] add r0, r4, #0 add r0, #0x14 mov r2, #0 mov r3, #1 bl MOD08_022183C0 b _02225688 _0222562E: mov r1, #0x38 mov r2, #0x3a add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x10] add r0, #0x14 bl MOD08_02218454 cmp r0, #0 bne _02225688 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] add r0, r4, #0 bl MOD08_02225574 b _02225688 _02225652: add r0, r4, #0 add r0, #0x48 bl MOD08_02218524 cmp r0, #0 bne _02225688 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02225688 _02225666: mov r6, #0 add r5, r4, #0 _0222566A: ldr r0, [r5, #0x3c] bl FUN_0200C3DC add r6, r6, #1 add r5, r5, #4 cmp r6, #3 blt _0222566A add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 pop {r3, r4, r5, r6, r7, pc} _02225688: ldr r0, [r4, #8] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02225690 MOD08_02225690: ; 0x02225690 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r6, r1, #0 mov r1, #0x47 lsl r1, r1, #2 add r5, r0, #0 str r2, [sp] add r7, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] ldr r0, [sp] str r6, [r4, #4] str r0, [r4, #8] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x38] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x3a] ldr r0, [r4, #0x10] mov r1, #0x29 bl FUN_0200782C mov r1, #0x3a ldrsh r1, [r4, r1] sub r0, r1, r0 strh r0, [r4, #0x3a] add r0, sp, #4 add r1, r5, #0 bl MOD08_02215474 mov r6, #0 add r5, r4, #0 _022256EC: cmp r6, #0 bne _022256FC add r0, r7, #0 mov r1, #1 str r7, [r5, #0x3c] bl FUN_0200C5C0 b _0222570E _022256FC: ldr r0, [r4, #4] ldr r1, [r4, #8] add r2, sp, #4 bl FUN_0200C154 mov r1, #1 str r0, [r5, #0x3c] bl FUN_0200C90C _0222570E: ldr r0, [r5, #0x3c] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5, #0x3c] mov r1, #1 bl FUN_0200C6B0 mov r1, #0x38 mov r2, #0x3a ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r5, #0x3c] bl FUN_0200C714 ldr r0, [r5, #0x3c] mov r1, #0 bl FUN_0200C644 ldr r0, [r5, #0x3c] mov r1, #2 bl FUN_0200C840 add r6, r6, #1 add r5, r5, #4 cmp r6, #3 blt _022256EC ldr r0, [r4] ldr r1, _02225754 ; =MOD08_022255D0 add r2, r4, #0 bl MOD08_02212400 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} nop _02225754: .word MOD08_022255D0 thumb_func_start MOD08_02225758 MOD08_02225758: ; 0x02225758 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 mov r7, #0 add r6, r5, #0 str r1, [sp, #0x10] add r6, #0x30 add r4, r7, #0 _02225768: mov r0, #0 str r0, [sp] mov r0, #0x32 lsl r0, r0, #0xc str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] mov r0, #0x30 mov r1, #0 str r0, [sp, #0xc] ldr r2, _022257A8 ; =0x00007FFF add r0, r6, #0 add r3, r1, #0 bl MOD08_02217D14 ldr r0, [r5, #0x38] add r7, r7, #1 add r0, r0, r4 str r0, [r5, #0x38] ldr r1, [r5, #0x48] ldr r0, [sp, #0x10] add r6, #0x24 mul r0, r1 str r0, [r5, #0x48] ldr r0, _022257AC ; =0x00002AAA add r5, #0x24 add r4, r4, r0 cmp r7, #6 blt _02225768 add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _022257A8: .word 0x00007FFF _022257AC: .word 0x00002AAA thumb_func_start MOD08_022257B0 MOD08_022257B0: ; 0x022257B0 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r6, r0, #0 mov r0, #0 str r0, [sp, #4] add r0, r6, #0 str r0, [sp] add r0, #0x30 str r0, [sp] add r5, r6, #0 add r4, r6, #0 _022257C6: ldr r0, [sp] bl MOD08_02217D98 ldr r1, [r5, #0x38] mov r2, #0xa lsl r0, r1, #2 add r0, r1, r0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 ldr r0, _0222586C ; =0x020FFA38 ldr r3, [r6, #0x14] ldrsh r0, [r0, r1] lsl r2, r2, #0xc mul r2, r3 asr r1, r0, #0x1f asr r3, r2, #0x1f bl _ll_mul add r3, r1, #0 mov r1, #0x13 lsl r1, r1, #4 mov r2, #0x30 add r7, r0, #0 ldrsh r1, [r6, r1] ldrsh r2, [r5, r2] ldr r0, [r4, #0x18] add r1, r1, r2 ldr r2, _02225870 ; =0x00000132 lsl r1, r1, #0x10 ldrsh r2, [r6, r2] asr r1, r1, #0x10 mov ip, r2 mov r2, #2 lsl r2, r2, #0xa add r7, r7, r2 ldr r2, _02225874 ; =0x00000000 adc r3, r2 lsl r2, r3, #0x14 lsr r3, r7, #0xc orr r3, r2 lsl r2, r3, #4 asr r2, r2, #0x10 mov r3, ip add r2, r3, r2 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 ldr r1, [r5, #0x38] ldr r0, _02225878 ; =0x00003FFF cmp r1, r0 blt _02225842 ldr r0, _0222587C ; =0x0000BF49 cmp r1, r0 bgt _02225842 ldr r0, [r4, #0x18] mov r1, #1 bl FUN_0200C6B0 b _02225852 _02225842: ldr r0, [r6] bl MOD08_02215574 add r1, r0, #0 ldr r0, [r4, #0x18] add r1, r1, #1 bl FUN_0200C6B0 _02225852: ldr r0, [sp] add r5, #0x24 add r0, #0x24 str r0, [sp] ldr r0, [sp, #4] add r4, r4, #4 add r0, r0, #1 str r0, [sp, #4] cmp r0, #6 blt _022257C6 add sp, #8 pop {r3, r4, r5, r6, r7, pc} nop _0222586C: .word 0x020FFA38 _02225870: .word 0x00000132 _02225874: .word 0x00000000 _02225878: .word 0x00003FFF _0222587C: .word 0x0000BF49 thumb_func_start MOD08_02225880 MOD08_02225880: ; 0x02225880 push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r1, #0 add r7, r0, #0 ldr r0, [r4, #0xc] cmp r0, #4 bhi _02225966 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222589A: ; jump table .short _022258A4 - _0222589A - 2 ; case 0 .short _022258DA - _0222589A - 2 ; case 1 .short _022258FA - _0222589A - 2 ; case 2 .short _02225926 - _0222589A - 2 ; case 3 .short _02225942 - _0222589A - 2 ; case 4 _022258A4: ldr r0, [r4] mov r1, #1 mov r2, #0xf bl MOD08_02227994 mov r0, #0 str r0, [sp] mov r0, #0xa str r0, [sp, #4] add r0, #0xfe add r0, r4, r0 mov r1, #1 mov r2, #0x10 mov r3, #0xf bl MOD08_022186D4 ldr r1, [r4, #0x14] add r0, r4, #0 bl MOD08_02225758 add r0, r4, #0 bl MOD08_022257B0 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02225966 _022258DA: add r0, r4, #0 bl MOD08_022257B0 mov r0, #0x42 lsl r0, r0, #2 add r0, r4, r0 bl MOD08_02218704 cmp r0, #0 beq _02225966 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0x1c str r0, [r4, #0x10] b _02225966 _022258FA: add r0, r4, #0 bl MOD08_022257B0 ldr r0, [r4, #0x10] sub r0, r0, #1 str r0, [r4, #0x10] bpl _02225966 ldr r0, [r4, #0xc] mov r1, #0x10 add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0xf str r0, [sp] mov r0, #0xa str r0, [sp, #4] add r0, #0xfe add r0, r4, r0 mov r2, #1 mov r3, #0 bl MOD08_022186D4 b _02225966 _02225926: add r0, r4, #0 bl MOD08_022257B0 mov r0, #0x42 lsl r0, r0, #2 add r0, r4, r0 bl MOD08_02218704 cmp r0, #0 beq _02225966 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02225966 _02225942: mov r6, #0 add r5, r4, #0 _02225946: ldr r0, [r5, #0x18] bl FUN_0200C3DC add r6, r6, #1 add r5, r5, #4 cmp r6, #6 blt _02225946 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02225966: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02225970 MOD08_02225970: ; 0x02225970 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r5, r1, #0 mov r1, #0x4d lsl r1, r1, #2 add r4, r0, #0 str r2, [sp] add r7, r3, #0 bl MOD08_02228064 add r6, r0, #0 str r4, [r6] ldr r0, [sp] str r5, [r6, #4] str r0, [r6, #8] add r0, r4, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 mov r1, #0 add r5, r0, #0 bl FUN_0200782C mov r1, #0x13 lsl r1, r1, #4 strh r0, [r6, r1] add r0, r5, #0 mov r1, #1 bl FUN_0200782C ldr r1, _02225A14 ; =0x00000132 strh r0, [r6, r1] add r0, sp, #4 add r1, r4, #0 bl MOD08_02215474 mov r4, #0 add r5, r6, #0 _022259C2: cmp r4, #0 bne _022259CA str r7, [r5, #0x18] b _022259D6 _022259CA: ldr r0, [r6, #4] ldr r1, [r6, #8] add r2, sp, #4 bl FUN_0200C154 str r0, [r5, #0x18] _022259D6: ldr r0, [r5, #0x18] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C5E0 add r4, r4, #1 add r5, r5, #4 cmp r4, #6 blt _022259C2 ldr r0, [r6] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_02217C1C str r0, [r6, #0x14] ldr r0, [r6] ldr r1, _02225A18 ; =MOD08_02225880 add r2, r6, #0 bl MOD08_02212400 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02225A14: .word 0x00000132 _02225A18: .word MOD08_02225880 thumb_func_start MOD08_02225A1C MOD08_02225A1C: ; 0x02225A1C push {r4, r5, r6, r7, lr} sub sp, #0xc add r7, r1, #0 add r1, sp, #8 add r5, r2, #0 add r1, #2 add r2, sp, #8 add r6, r0, #0 add r4, r3, #0 bl FUN_0200C7A0 add r0, sp, #8 mov r1, #0 ldrsh r3, [r0, r1] mov r1, #2 ldrsh r2, [r0, r1] lsl r0, r4, #7 neg r0, r0 add r0, r3, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 lsl r1, r2, #0x10 lsl r4, r5, #8 add r2, r2, r4 str r0, [sp] mov r0, #0x3b lsl r2, r2, #0x10 lsl r3, r3, #0x10 str r0, [sp, #4] add r0, r7, #0 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 add r0, r6, #0 mov r1, #1 bl FUN_0200C644 add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02225A70 MOD08_02225A70: ; 0x02225A70 push {r4, r5, r6, r7, lr} sub sp, #0xc add r4, r0, #0 add r0, r1, #0 add r1, r4, #0 bl MOD08_02217F08 cmp r0, #0 beq _02225B2A add r1, sp, #8 add r0, r4, #0 add r1, #2 add r2, sp, #8 bl FUN_0200C7A0 add r1, sp, #8 mov r0, #2 ldrsh r0, [r1, r0] mov r1, #0x5b lsl r1, r1, #2 str r0, [sp] ldr r0, [sp] mov r2, #0xe mul r1, r0 lsl r0, r1, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 ldr r0, _02225B30 ; =0x020FFA38 lsl r2, r2, #0xc ldrsh r0, [r0, r1] mov r3, #0 asr r7, r0, #0x1f add r1, r7, #0 str r0, [sp, #4] bl _ll_mul add r3, r0, #0 add r5, r1, #0 add r6, sp, #8 mov r2, #0 ldrsh r2, [r6, r2] mov r6, #2 lsl r6, r6, #0xa add r0, r4, #0 add r6, r3, r6 ldr r3, _02225B34 ; =0x00000000 ldr r1, [sp] adc r5, r3 lsl r3, r5, #0x14 lsr r5, r6, #0xc orr r5, r3 lsl r3, r5, #4 asr r3, r3, #0x10 add r2, r2, r3 lsl r2, r2, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 mov r2, #0xae ldr r0, [sp, #4] add r1, r7, #0 lsl r2, r2, #2 mov r3, #0 bl _ll_mul mov r2, #2 mov r3, #0 lsl r2, r2, #0xa add r2, r0, r2 adc r1, r3 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 neg r0, r1 bl _fflt ldr r1, _02225B38 ; =0x45800000 bl _fdiv add r1, r0, #0 mov r0, #0xfe lsl r0, r0, #0x16 bl _fadd add r1, r0, #0 add r0, r4, #0 add r2, r1, #0 bl FUN_0200C884 add sp, #0xc mov r0, #0 pop {r4, r5, r6, r7, pc} _02225B2A: mov r0, #1 add sp, #0xc pop {r4, r5, r6, r7, pc} .align 2, 0 _02225B30: .word 0x020FFA38 _02225B34: .word 0x00000000 _02225B38: .word 0x45800000 thumb_func_start MOD08_02225B3C MOD08_02225B3C: ; 0x02225B3C push {r3, r4, r5, r6, r7, lr} mov r1, #0x9d add r7, r0, #0 lsl r1, r1, #2 ldr r0, [r7, r1] cmp r0, #0xf bge _02225B84 sub r0, r1, #4 ldr r0, [r7, r0] add r2, r0, #1 sub r0, r1, #4 str r2, [r7, r0] ldr r0, [r7, r0] cmp r0, #6 ble _02225B84 mov r2, #0 sub r0, r1, #4 str r2, [r7, r0] ldr r1, [r7, r1] add r3, r7, #0 lsl r0, r1, #2 mov r2, #0x24 add r0, r7, r0 add r3, #0x54 mul r2, r1 add r1, r3, r2 ldr r0, [r0, #0x18] ldr r2, [r7, #0x10] ldr r3, [r7, #0x14] bl MOD08_02225A1C mov r0, #0x9d lsl r0, r0, #2 ldr r1, [r7, r0] add r1, r1, #1 str r1, [r7, r0] _02225B84: mov r0, #0x9d lsl r0, r0, #2 ldr r0, [r7, r0] mov r4, #0 cmp r0, #0 ble _02225BB0 add r6, r7, #0 add r6, #0x54 add r5, r7, #0 _02225B96: ldr r0, [r5, #0x18] add r1, r6, #0 bl MOD08_02225A70 str r0, [sp] mov r0, #0x9d lsl r0, r0, #2 ldr r0, [r7, r0] add r4, r4, #1 add r6, #0x24 add r5, r5, #4 cmp r4, r0 blt _02225B96 _02225BB0: cmp r0, #0xf blt _02225BBE ldr r0, [sp] cmp r0, #1 bne _02225BBE mov r0, #1 pop {r3, r4, r5, r6, r7, pc} _02225BBE: mov r0, #0 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02225BC4 MOD08_02225BC4: ; 0x02225BC4 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r7, r0, #0 add r0, r6, #0 bl MOD08_02225B3C cmp r0, #0 beq _02225BF6 mov r4, #0 add r5, r6, #0 _02225BD8: ldr r0, [r5, #0x18] bl FUN_0200C3DC add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _02225BD8 add r0, r6, #0 bl FUN_02016A18 ldr r0, [r6] add r1, r7, #0 bl MOD08_02212438 pop {r3, r4, r5, r6, r7, pc} _02225BF6: ldr r0, [r6, #8] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02225C00 MOD08_02225C00: ; 0x02225C00 push {r3, r4, r5, r6, r7, lr} sub sp, #0x40 add r5, r1, #0 mov r1, #0x9e lsl r1, r1, #2 add r4, r0, #0 str r2, [sp] add r7, r3, #0 bl MOD08_02228064 add r6, r0, #0 str r4, [r6] ldr r0, [sp] str r5, [r6, #4] str r0, [r6, #8] add r0, r4, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 mov r1, #0 add r5, r0, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #8] add r0, r5, #0 mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] add r0, sp, #0xc add r1, r4, #0 bl MOD08_02215474 mov r4, #0 add r5, r6, #0 _02225C54: cmp r4, #0 bne _02225C5C str r7, [r5, #0x18] b _02225C68 _02225C5C: ldr r0, [r6, #4] ldr r1, [r6, #8] add r2, sp, #0xc bl FUN_0200C154 str r0, [r5, #0x18] _02225C68: ldr r0, [r5, #0x18] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r5, #0x18] mov r1, #2 bl FUN_0200C840 ldr r0, [r5, #0x18] mov r1, #0 bl FUN_0200C644 ldr r0, [r5, #0x18] ldr r1, [sp, #8] ldr r2, [sp, #4] bl FUN_0200C714 add r0, r4, #0 mov r1, #3 bl _s32_div_f ldr r0, [r5, #0x18] bl FUN_0200C5C0 add r4, r4, #1 add r5, r5, #4 cmp r4, #0xf blt _02225C54 ldr r0, [r6] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_02217C1C str r0, [r6, #0x10] ldr r0, [r6] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_02217C44 str r0, [r6, #0x14] ldr r0, [r6] ldr r1, _02225CD8 ; =MOD08_02225BC4 add r2, r6, #0 bl MOD08_02212400 add sp, #0x40 pop {r3, r4, r5, r6, r7, pc} nop _02225CD8: .word MOD08_02225BC4 thumb_func_start MOD08_02225CDC MOD08_02225CDC: ; 0x02225CDC ldr r1, [r0, #0x2c] cmp r1, #0 beq _02225CEC cmp r1, #1 beq _02225D00 cmp r1, #2 beq _02225D14 bx lr _02225CEC: ldr r1, _02225D28 ; =0x00007FFF str r1, [r0, #0x18] mov r1, #5 str r1, [r0, #0x24] mov r1, #1 lsl r1, r1, #0x10 str r1, [r0, #0x1c] mov r1, #0x10 str r1, [r0, #0x28] bx lr _02225D00: ldr r1, _02225D28 ; =0x00007FFF str r1, [r0, #0x18] mov r1, #4 mvn r1, r1 str r1, [r0, #0x24] ldr r1, _02225D2C ; =0xFFFF0000 str r1, [r0, #0x1c] mov r1, #0x10 str r1, [r0, #0x28] bx lr _02225D14: ldr r1, _02225D28 ; =0x00007FFF str r1, [r0, #0x18] mov r1, #0xa str r1, [r0, #0x24] lsl r1, r1, #0xd str r1, [r0, #0x1c] mov r1, #0x10 str r1, [r0, #0x28] bx lr nop _02225D28: .word 0x00007FFF _02225D2C: .word 0xFFFF0000 thumb_func_start MOD08_02225D30 MOD08_02225D30: ; 0x02225D30 push {r4, r5, r6, r7, lr} sub sp, #0xc add r5, r0, #0 ldr r0, [r5, #4] bl MOD08_02218894 str r0, [sp, #8] ldr r0, [r5, #0x10] str r0, [sp] str r0, [sp, #4] sub r0, #8 str r0, [sp, #4] ldr r0, [sp] add r0, #0x58 str r0, [sp] ldr r0, [sp, #4] cmp r0, #0 bge _02225D58 mov r0, #0 str r0, [sp, #4] _02225D58: ldr r0, [sp] cmp r0, #0xc0 ble _02225D62 mov r0, #0xc0 str r0, [sp] _02225D62: mov r0, #0 ldr r1, [r5, #0x20] mvn r0, r0 mul r0, r1 ldr r4, [sp, #4] str r0, [r5, #0x20] ldr r0, [sp] add r1, r4, #0 cmp r1, r0 bge _02225E02 _02225D76: mov r0, #2 tst r0, r4 ldr r1, [r5, #0x1c] beq _02225D86 ldr r0, [r5, #0x20] lsl r0, r0, #0xc add r2, r1, r0 b _02225D8C _02225D86: ldr r0, [r5, #0x20] lsl r0, r0, #0xc sub r2, r1, r0 _02225D8C: ldr r1, [sp, #4] ldr r0, [r5, #0x18] sub r3, r4, r1 ldr r1, _02225E08 ; =0x00000199 mul r1, r3 add r0, r0, r1 lsl r0, r0, #0x10 lsr r0, r0, #0x10 asr r0, r0, #4 lsl r1, r0, #2 ldr r0, _02225E0C ; =0x020FFA38 asr r3, r2, #0x1f ldrsh r0, [r0, r1] asr r1, r0, #0x1f bl _ll_mul mov r2, #2 lsl r2, r2, #0xa add r2, r0, r2 ldr r0, _02225E10 ; =0x00000000 adc r1, r0 lsl r0, r1, #0x14 lsr r1, r2, #0xc orr r1, r0 lsl r0, r1, #4 asr r7, r0, #0x10 ldr r0, [r5, #0x14] ldr r1, [r5, #0x24] sub r0, r4, r0 mul r0, r1 mov r1, #0xa bl _s32_div_f add r0, r7, r0 lsl r0, r0, #0x10 ldr r1, [r5, #0x30] asr r7, r0, #0x10 lsl r0, r1, #0x10 lsr r1, r1, #0x10 lsl r1, r1, #0x10 asr r0, r0, #0x10 asr r1, r1, #0x10 sub r6, r4, #1 bpl _02225DE6 add r6, #0xc0 _02225DE6: add r0, r0, r7 lsl r0, r0, #0x10 lsl r1, r1, #0x10 lsr r0, r0, #0x10 lsr r1, r1, #0x10 bl MOD08_02218998 ldr r1, [sp, #8] lsl r2, r6, #2 str r0, [r1, r2] ldr r0, [sp] add r4, r4, #1 cmp r4, r0 blt _02225D76 _02225E02: add sp, #0xc pop {r4, r5, r6, r7, pc} nop _02225E08: .word 0x00000199 _02225E0C: .word 0x020FFA38 _02225E10: .word 0x00000000 thumb_func_start MOD08_02225E14 MOD08_02225E14: ; 0x02225E14 push {r4, r5, r6, lr} add r4, r1, #0 add r6, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _02225E2A cmp r0, #1 beq _02225E3E cmp r0, #2 beq _02225E68 pop {r4, r5, r6, pc} _02225E2A: add r0, r4, #0 bl MOD08_02225CDC add r0, r4, #0 bl MOD08_02225D30 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] pop {r4, r5, r6, pc} _02225E3E: ldr r0, [r4, #0x28] sub r0, r0, #1 str r0, [r4, #0x28] add r0, r4, #0 bl MOD08_02225D30 ldr r0, [r4, #0x28] cmp r0, #0 bge _02225EFA ldr r0, [r4, #0x2c] add r0, r0, #1 str r0, [r4, #0x2c] cmp r0, #3 bge _02225E60 mov r0, #0 str r0, [r4, #8] pop {r4, r5, r6, pc} _02225E60: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] pop {r4, r5, r6, pc} _02225E68: ldr r0, [r4, #0xc] mov r1, #6 mov r2, #0 bl FUN_02007558 ldr r0, [r4, #4] bl MOD08_022188A8 ldr r0, [r4, #4] bl MOD08_02218870 ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] mov r1, #1 bl MOD08_02215600 add r1, r0, #0 lsl r0, r5, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 lsl r1, r1, #0x18 mov r0, #0 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] bl MOD08_02212014 add r3, r0, #0 lsl r0, r5, #0x18 mov r1, #1 lsr r0, r0, #0x18 lsl r1, r1, #0xe mov r2, #0 bl FUN_02017F18 ldr r0, [r4] bl MOD08_02212490 add r5, r0, #0 ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r1, r0, #0 lsl r1, r1, #0x18 add r0, r5, #0 lsr r1, r1, #0x18 bl FUN_02018744 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r6, #0 bl MOD08_02212438 _02225EFA: pop {r4, r5, r6, pc} thumb_func_start MOD08_02225EFC MOD08_02225EFC: ; 0x02225EFC push {r3, r4, r5, r6, r7, lr} mov r1, #0x34 add r7, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r7, [r4] add r0, r7, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 mov r1, #0 str r0, [r4, #0xc] bl FUN_0200782C lsl r0, r0, #0x10 asr r6, r0, #0x10 ldr r0, [r4, #0xc] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #0xc] mov r1, #0x29 bl FUN_0200782C sub r0, r5, r0 lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #0xc] mov r1, #6 mov r2, #1 bl FUN_02007558 sub r6, #0x28 lsl r0, r6, #0x10 str r5, [r4, #0x14] sub r5, #0x28 asr r0, r0, #0x10 neg r0, r0 neg r1, r5 lsl r0, r0, #0x10 lsl r1, r1, #0x10 str r5, [r4, #0x10] lsr r0, r0, #0x10 lsr r1, r1, #0x10 bl MOD08_02218998 str r0, [r4, #0x30] ldr r0, [r4] mov r1, #1 bl MOD08_022155C4 bl MOD08_022189A0 add r5, r0, #0 ldr r0, [r4] bl MOD08_02212014 add r2, r0, #0 ldr r1, [r4, #0x30] add r0, r5, #0 bl MOD08_022187F4 str r0, [r4, #4] mov r0, #1 str r0, [r4, #0x20] add r0, r7, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_02227468 sub r0, r0, #3 cmp r0, #1 bhi _02225FD0 ldr r0, [r4] mov r1, #1 bl MOD08_02215588 add r5, r0, #0 ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 lsl r0, r5, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC ldr r0, [r4] bl MOD08_02215574 add r1, r0, #0 add r1, r1, #1 lsl r1, r1, #0x18 mov r0, #0 lsr r1, r1, #0x18 bl FUN_020178BC _02225FD0: ldr r0, [r4] ldr r1, _02225FDC ; =MOD08_02225E14 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02225FDC: .word MOD08_02225E14 thumb_func_start MOD08_02225FE0 MOD08_02225FE0: ; 0x02225FE0 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #5 bls _02225FF0 b _02226134 _02225FF0: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02225FFC: ; jump table .short _02226008 - _02225FFC - 2 ; case 0 .short _0222604E - _02225FFC - 2 ; case 1 .short _02226088 - _02225FFC - 2 ; case 2 .short _022260C2 - _02225FFC - 2 ; case 3 .short _0222610E - _02225FFC - 2 ; case 4 .short _02226126 - _02225FFC - 2 ; case 5 _02226008: mov r2, #0 str r2, [sp] mov r0, #8 str r0, [sp, #4] add r0, r4, #0 add r0, #0xc mov r1, #0x7f add r3, r2, #0 bl MOD08_02217E80 mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] ldr r0, _02226138 ; =0xFFFF1FFF and r1, r0 lsr r0, r2, #0xd orr r0, r1 str r0, [r2] mov r1, #0 ldr r0, [r4] add r2, r1, #0 bl MOD08_02227A4C ldr r1, _0222613C ; =0x04000040 mov r0, #0xff strh r0, [r1] mov r0, #0xbf strh r0, [r1, #4] mov r0, #7 str r0, [r4, #8] ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _0222604E: ldr r0, [r4, #8] sub r0, r0, #1 str r0, [r4, #8] bpl _02226134 ldr r0, [r4] bl MOD08_02215504 add r5, r0, #0 ldr r0, [r4] bl MOD08_02214540 add r2, r0, #0 mov r3, #0 lsl r2, r2, #0x10 str r3, [sp] mov r0, #0x10 str r0, [sp, #4] ldr r0, _02226140 ; =0x0000FFFF mov r1, #1 str r0, [sp, #8] add r0, r5, #0 lsr r2, r2, #0x10 bl FUN_02003210 ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _02226088: add r0, r4, #0 add r0, #0xc bl MOD08_02217ECC cmp r0, #0 beq _022260B8 mov r0, #0xc ldrsh r2, [r4, r0] mov r0, #0x7f add sp, #0xc sub r0, r0, r2 lsl r1, r0, #8 mov r0, #0xff lsl r0, r0, #8 add r2, #0x80 and r1, r0 lsl r0, r2, #0x18 lsr r0, r0, #0x18 orr r0, r1 ldr r1, _0222613C ; =0x04000040 strh r0, [r1] mov r0, #0xbf strh r0, [r1, #4] pop {r4, r5, pc} _022260B8: ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _022260C2: ldr r0, [r4] bl MOD08_02215504 bl FUN_020038E4 cmp r0, #0 bne _02226134 ldr r0, [r4, #4] mov r2, #1 add r0, r0, #1 str r0, [r4, #4] lsl r2, r2, #0x1a ldr r1, [r2] ldr r0, _02226138 ; =0xFFFF1FFF and r0, r1 str r0, [r2] ldr r0, [r4] bl MOD08_02215504 add r5, r0, #0 ldr r0, [r4] bl MOD08_02214540 add r2, r0, #0 mov r0, #0x10 str r0, [sp] mov r3, #0 lsl r2, r2, #0x10 ldr r0, _02226140 ; =0x0000FFFF str r3, [sp, #4] str r0, [sp, #8] add r0, r5, #0 mov r1, #1 lsr r2, r2, #0x10 bl FUN_02003210 add sp, #0xc pop {r4, r5, pc} _0222610E: ldr r0, [r4] bl MOD08_02215504 bl FUN_020038E4 cmp r0, #0 bne _02226134 ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _02226126: add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _02226134: add sp, #0xc pop {r4, r5, pc} .align 2, 0 _02226138: .word 0xFFFF1FFF _0222613C: .word 0x04000040 _02226140: .word 0x0000FFFF thumb_func_start MOD08_02226144 MOD08_02226144: ; 0x02226144 push {r4, lr} mov r1, #0x34 add r4, r0, #0 bl MOD08_02228064 add r2, r0, #0 ldr r1, _0222615C ; =MOD08_02225FE0 add r0, r4, #0 str r4, [r2] bl MOD08_02212400 pop {r4, pc} .align 2, 0 _0222615C: .word MOD08_02225FE0 thumb_func_start MOD08_02226160 MOD08_02226160: ; 0x02226160 push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0xc] cmp r0, #4 bhi _02226210 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222617A: ; jump table .short _02226184 - _0222617A - 2 ; case 0 .short _022261AA - _0222617A - 2 ; case 1 .short _022261BE - _0222617A - 2 ; case 2 .short _022261E4 - _0222617A - 2 ; case 3 .short _022261F8 - _0222617A - 2 ; case 4 _02226184: ldr r0, [r4] mov r1, #0 mov r2, #0x10 bl MOD08_02227994 mov r1, #0 mov r2, #0x10 str r1, [sp] mov r0, #8 str r0, [sp, #4] add r0, r4, #0 add r0, #0x14 add r3, r2, #0 bl MOD08_022186D4 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02226210 _022261AA: add r0, r4, #0 add r0, #0x14 bl MOD08_02218704 cmp r0, #0 beq _02226210 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02226210 _022261BE: ldr r0, [r4, #0x10] bl FUN_0200C608 cmp r0, #0 bne _02226210 ldr r0, [r4, #0xc] mov r2, #0 add r0, r0, #1 str r0, [r4, #0xc] mov r1, #0x10 str r1, [sp] mov r0, #8 str r0, [sp, #4] add r0, r4, #0 add r0, #0x14 add r3, r2, #0 bl MOD08_022186D4 b _02226210 _022261E4: add r0, r4, #0 add r0, #0x14 bl MOD08_02218704 cmp r0, #0 beq _02226210 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02226210 _022261F8: ldr r0, [r4, #0x10] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, pc} _02226210: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0222621C MOD08_0222621C: ; 0x0222621C push {r3, r4, r5, r6, r7, lr} add r7, r1, #0 mov r1, #0x3c add r6, r0, #0 str r2, [sp] add r5, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r6, [r4] ldr r0, [sp] str r7, [r4, #4] str r0, [r4, #8] str r5, [r4, #0x10] add r0, r5, #0 mov r1, #1 bl FUN_0200C5E0 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C90C ldr r0, [r4] ldr r1, _02226254 ; =MOD08_02226160 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02226254: .word MOD08_02226160 thumb_func_start MOD08_02226258 MOD08_02226258: ; 0x02226258 push {r4, r5, lr} sub sp, #0xc add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #4 bhi _0222631C add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02226272: ; jump table .short _0222627C - _02226272 - 2 ; case 0 .short _022262E6 - _02226272 - 2 ; case 1 .short _02226328 - _02226272 - 2 ; case 2 .short _02226394 - _02226272 - 2 ; case 3 .short _022263E6 - _02226272 - 2 ; case 4 _0222627C: ldr r0, [r4, #0x68] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldr r0, [r4, #0x6c] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r4, #0x74] asr r0, r0, #0x10 str r0, [sp, #8] ldr r1, [r4, #0x5c] ldr r2, [r4, #0x60] ldr r3, [r4, #0x64] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x14 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_022181A8 mov r1, #0xa mov r2, #8 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x10] add r0, #0x38 bl MOD08_02218454 add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x14 bl MOD08_022183A0 mov r0, #0 str r0, [sp] mov r1, #8 mov r2, #0xc ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] ldr r3, [r4, #0x28] bl MOD08_022182DC ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _022262E6: mov r1, #0xa mov r2, #8 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x10] add r0, #0x38 bl MOD08_02218454 add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x14 bl MOD08_022183A0 add r5, r0, #0 mov r0, #0 str r0, [sp] mov r1, #8 mov r2, #0xc ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] ldr r3, [r4, #0x28] bl MOD08_022182DC cmp r5, #0 beq _0222631E _0222631C: b _02226424 _0222631E: ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _02226328: ldr r0, [r4, #0x64] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] ldr r0, [r4, #0x6c] lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp, #4] ldr r0, [r4, #0x74] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] ldr r1, [r4, #0x60] ldr r2, [r4, #0x5c] ldr r3, [r4, #0x68] add r0, r4, #0 lsl r1, r1, #0x10 lsl r2, r2, #0x10 lsl r3, r3, #0x10 add r0, #0x14 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_022181A8 mov r1, #0xa mov r2, #8 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x10] add r0, #0x38 bl MOD08_02218454 add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x14 bl MOD08_022183A0 mov r0, #0 str r0, [sp] mov r1, #8 mov r2, #0xc ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] ldr r3, [r4, #0x28] bl MOD08_022182DC ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _02226394: mov r1, #0xa mov r2, #8 add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x10] add r0, #0x38 bl MOD08_02218454 add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x14 bl MOD08_022183A0 add r5, r0, #0 mov r0, #0 str r0, [sp] mov r1, #8 mov r2, #0xc ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] ldr r3, [r4, #0x28] bl MOD08_022182DC cmp r5, #0 bne _02226424 ldr r0, [r4, #0x70] sub r0, r0, #1 str r0, [r4, #0x70] cmp r0, #0 bgt _022263DE ldr r0, [r4, #4] add sp, #0xc add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, pc} _022263DE: mov r0, #0 add sp, #0xc str r0, [r4, #4] pop {r4, r5, pc} _022263E6: mov r2, #0xa ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_02007558 mov r2, #8 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007558 mov r1, #0xc add r2, r1, #0 ldr r0, [r4, #0x10] add r2, #0xf4 bl FUN_02007558 mov r1, #0xd add r2, r1, #0 ldr r0, [r4, #0x10] add r2, #0xf3 bl FUN_02007558 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _02226424: add sp, #0xc pop {r4, r5, pc} thumb_func_start MOD08_02226428 MOD08_02226428: ; 0x02226428 push {r3, r4, r5, lr} mov r1, #0x78 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_0221552C strh r0, [r4, #0xc] ldr r0, [r4] bl MOD08_02212460 add r1, r0, #0 ldr r0, [r4] bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #8] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0xa] mov r1, #0xa str r1, [r4, #0x5c] mov r0, #7 str r0, [r4, #0x60] str r1, [r4, #0x64] mov r0, #0x1e str r0, [r4, #0x68] str r1, [r4, #0x6c] mov r3, #1 ldr r0, _0222649C ; =0x00040003 str r3, [r4, #0x70] str r0, [r4, #0x74] mov r1, #2 add r0, r4, #0 str r1, [sp] add r0, #0x38 mov r2, #0 bl MOD08_022183C0 ldr r0, [r4] ldr r1, _022264A0 ; =MOD08_02226258 add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, pc} nop _0222649C: .word 0x00040003 _022264A0: .word MOD08_02226258 thumb_func_start MOD08_022264A4 MOD08_022264A4: ; 0x022264A4 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 add r0, r4, #0 ldr r1, [r4, #0x2c] add r0, #8 bl MOD08_02217F08 cmp r0, #0 bne _022264CE ldr r0, [r4, #0x2c] bl FUN_0200C3DC add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 pop {r3, r4, r5, pc} _022264CE: ldr r0, [r4, #4] bl FUN_0200BC1C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_022264D8 MOD08_022264D8: ; 0x022264D8 push {r4, r5, r6, r7, lr} sub sp, #0x14 mov r1, #0x30 add r5, r0, #0 bl MOD08_02228064 add r4, r0, #0 str r5, [r4] add r0, r5, #0 bl MOD08_02212518 str r0, [r4, #4] add r0, r5, #0 bl MOD08_02212458 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 bl MOD08_02227470 cmp r0, #3 bne _0222651C add r0, r5, #0 mov r1, #0 bl MOD08_022124B0 str r0, [r4, #0x2c] add r0, r5, #0 mov r1, #1 bl MOD08_022124B0 bl FUN_0200C3DC b _02226532 _0222651C: add r0, r5, #0 mov r1, #1 bl MOD08_022124B0 str r0, [r4, #0x2c] add r0, r5, #0 mov r1, #0 bl MOD08_022124B0 bl FUN_0200C3DC _02226532: add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C add r7, r0, #0 add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C44 str r0, [sp, #0xc] add r0, r5, #0 add r1, r6, #0 mov r2, #0 bl MOD08_02217B98 str r0, [sp, #0x10] add r0, r5, #0 add r1, r6, #0 mov r2, #1 bl MOD08_02217B98 ldr r1, [sp, #0x10] lsl r2, r7, #6 add r6, r1, r2 ldr r1, [sp, #0xc] lsl r1, r1, #4 neg r1, r1 add r5, r0, r1 str r1, [sp, #8] lsl r1, r6, #0x10 lsl r2, r5, #0x10 ldr r0, [r4, #0x2c] asr r1, r1, #0x10 asr r2, r2, #0x10 bl FUN_0200C714 ldr r0, [sp, #8] mov r2, #0x30 add r0, r5, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 mul r2, r7 str r0, [sp] mov r0, #6 add r2, r6, r2 str r0, [sp, #4] add r0, r4, #0 lsl r1, r6, #0x10 lsl r2, r2, #0x10 lsl r3, r5, #0x10 add r0, #8 asr r1, r1, #0x10 asr r2, r2, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 ldr r0, [r4] ldr r1, _022265B0 ; =MOD08_022264A4 add r2, r4, #0 bl MOD08_02212400 add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 _022265B0: .word MOD08_022264A4 thumb_func_start MOD08_022265B4 MOD08_022265B4: ; 0x022265B4 push {r4, r5, r6, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #5 bls _022265C4 b _022266E0 _022265C4: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022265D0: ; jump table .short _022265DC - _022265D0 - 2 ; case 0 .short _022265F6 - _022265D0 - 2 ; case 1 .short _02226644 - _022265D0 - 2 ; case 2 .short _02226660 - _022265D0 - 2 ; case 3 .short _022266A2 - _022265D0 - 2 ; case 4 .short _022266BA - _022265D0 - 2 ; case 5 _022265DC: mov r1, #4 add r0, r4, #0 str r1, [sp] add r0, #0x40 mov r2, #0 mov r3, #1 bl MOD08_022183C0 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, r6, pc} _022265F6: mov r1, #0x18 mov r2, #0x1a add r0, r4, #0 ldrsh r1, [r4, r1] ldrsh r2, [r4, r2] ldr r3, [r4, #0x14] add r0, #0x40 bl MOD08_02218454 cmp r0, #0 bne _022266E0 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] mov r0, #0x1a ldrsh r3, [r4, r0] mov r0, #0x18 ldrsh r1, [r4, r0] ldr r2, [r4, #0x10] sub r0, #0x1f mul r0, r2 add r0, r3, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] mov r0, #4 str r0, [sp, #4] add r0, r4, #0 ldr r4, [r4, #0xc] mov r2, #0x28 mul r2, r4 add r2, r1, r2 lsl r2, r2, #0x10 add r0, #0x1c asr r2, r2, #0x10 bl MOD08_02217E80 add sp, #8 pop {r4, r5, r6, pc} _02226644: add r0, r4, #0 ldr r1, [r4, #0x14] add r0, #0x1c bl MOD08_02217F2C cmp r0, #0 bne _022266E0 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] mov r0, #8 str r0, [r4, #8] pop {r4, r5, r6, pc} _02226660: ldr r0, [r4, #8] sub r0, r0, #1 str r0, [r4, #8] bpl _022266E0 ldr r0, [r4, #4] mov r5, #0x28 add r0, r0, #1 str r0, [r4, #4] mov r0, #0x1a ldrsh r3, [r4, r0] mov r0, #0x18 ldrsh r2, [r4, r0] mov r0, #4 str r3, [sp] str r0, [sp, #4] ldr r1, [r4, #0xc] add r0, r4, #0 add r6, r1, #0 mul r6, r5 add r1, r2, r6 lsl r1, r1, #0x10 ldr r4, [r4, #0x10] sub r5, #0x2f mul r5, r4 add r3, r3, r5 lsl r3, r3, #0x10 add r0, #0x1c asr r1, r1, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 add sp, #8 pop {r4, r5, r6, pc} _022266A2: add r0, r4, #0 ldr r1, [r4, #0x14] add r0, #0x1c bl MOD08_02217F2C cmp r0, #0 bne _022266E0 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r4, r5, r6, pc} _022266BA: mov r2, #0x18 ldrsh r2, [r4, r2] ldr r0, [r4, #0x14] mov r1, #0 bl FUN_02007558 mov r2, #0x1a ldrsh r2, [r4, r2] ldr r0, [r4, #0x14] mov r1, #1 bl FUN_02007558 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _022266E0: add sp, #8 pop {r4, r5, r6, pc} thumb_func_start MOD08_022266E4 MOD08_022266E4: ; 0x022266E4 push {r4, r5, r6, lr} add r5, r0, #0 mov r1, #0x64 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 str r5, [r4] bl MOD08_02212458 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x14] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x18] ldr r0, [r4, #0x14] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x1a] add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C str r0, [r4, #0xc] add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C44 str r0, [r4, #0x10] ldr r0, [r4] ldr r1, _02226738 ; =MOD08_022265B4 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} nop _02226738: .word MOD08_022265B4 thumb_func_start MOD08_0222673C MOD08_0222673C: ; 0x0222673C push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #4 bls _0222674C b _0222685C _0222674C: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02226758: ; jump table .short _02226762 - _02226758 - 2 ; case 0 .short _02226798 - _02226758 - 2 ; case 1 .short _022267C0 - _02226758 - 2 ; case 2 .short _0222681E - _02226758 - 2 ; case 3 .short _02226836 - _02226758 - 2 ; case 4 _02226762: mov r0, #0x16 ldrsh r3, [r4, r0] mov r0, #0x14 ldrsh r1, [r4, r0] ldr r0, [r4, #0xc] mov r5, #4 lsl r0, r0, #4 add r0, r3, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] str r5, [sp, #4] ldr r2, [r4, #8] sub r5, #0x2c mul r5, r2 add r2, r1, r5 add r0, r4, #0 lsl r2, r2, #0x10 add r0, #0x18 asr r2, r2, #0x10 bl MOD08_02217E80 ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _02226798: add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x18 bl MOD08_02217F2C cmp r0, #0 bne _0222685C ldr r0, [r4, #4] mov r1, #4 add r0, r0, #1 str r0, [r4, #4] add r4, #0x3c add r0, r4, #0 mov r2, #0 mov r3, #1 str r1, [sp] bl MOD08_022183C0 add sp, #8 pop {r3, r4, r5, pc} _022267C0: ldr r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C lsl r0, r0, #0x10 asr r5, r0, #0x10 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C lsl r0, r0, #0x10 asr r2, r0, #0x10 add r0, r4, #0 ldr r3, [r4, #0x10] add r0, #0x3c add r1, r5, #0 bl MOD08_02218454 cmp r0, #0 bne _0222685C ldr r0, [r4, #4] mov r5, #4 add r0, r0, #1 str r0, [r4, #4] mov r0, #0x16 ldrsh r3, [r4, r0] mov r0, #0x14 ldrsh r2, [r4, r0] add r0, r4, #0 add r0, #0x18 str r3, [sp] str r5, [sp, #4] ldr r1, [r4, #8] ldr r4, [r4, #0xc] sub r5, #0x2c mul r5, r1 lsl r4, r4, #4 add r1, r2, r5 add r3, r3, r4 lsl r1, r1, #0x10 lsl r3, r3, #0x10 asr r1, r1, #0x10 asr r3, r3, #0x10 bl MOD08_02217E80 add sp, #8 pop {r3, r4, r5, pc} _0222681E: add r0, r4, #0 ldr r1, [r4, #0x10] add r0, #0x18 bl MOD08_02217F2C cmp r0, #0 bne _0222685C ldr r0, [r4, #4] add sp, #8 add r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} _02226836: mov r2, #0x14 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #0 bl FUN_02007558 mov r2, #0x16 ldrsh r2, [r4, r2] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02007558 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 _0222685C: add sp, #8 pop {r3, r4, r5, pc} thumb_func_start MOD08_02226860 MOD08_02226860: ; 0x02226860 push {r4, r5, r6, lr} add r5, r0, #0 mov r1, #0x60 bl MOD08_02228064 add r4, r0, #0 add r0, r5, #0 str r5, [r4] bl MOD08_02212460 add r6, r0, #0 add r0, r5, #0 add r1, r6, #0 bl MOD08_022154D4 str r0, [r4, #0x10] mov r1, #0 bl FUN_0200782C strh r0, [r4, #0x14] ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200782C strh r0, [r4, #0x16] add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C1C str r0, [r4, #8] add r0, r5, #0 add r1, r6, #0 bl MOD08_02217C44 str r0, [r4, #0xc] ldr r0, [r4] ldr r1, _022268B4 ; =MOD08_0222673C add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} nop _022268B4: .word MOD08_0222673C thumb_func_start MOD08_022268B8 MOD08_022268B8: ; 0x022268B8 push {r4, r5, r6, r7, lr} sub sp, #0x3c add r7, r1, #0 add r4, r0, #0 mov r1, #0xac add r6, r2, #0 str r3, [sp] bl MOD08_02228064 str r4, [r0] str r0, [sp, #4] str r6, [r0, #0xc] add r0, r4, #0 bl MOD08_02212458 add r5, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02217C1C ldr r1, [sp, #4] str r0, [r1, #0x10] ldr r1, [r1] add r0, sp, #8 bl MOD08_02215474 add r0, r4, #0 add r1, r5, #0 mov r2, #0 bl MOD08_02217B98 add r1, sp, #8 strh r0, [r1] add r0, r4, #0 add r1, r5, #0 mov r2, #1 bl MOD08_02217B98 add r1, sp, #8 ldr r5, [sp, #4] strh r0, [r1, #2] mov r4, #0 _0222690C: cmp r4, #0 add r2, sp, #8 bne _02226926 ldr r0, [sp] mov r1, #0 str r0, [r5, #0x14] ldrsh r1, [r2, r1] add r3, r2, #0 mov r2, #2 ldrsh r2, [r3, r2] bl FUN_0200C714 b _02226930 _02226926: add r0, r7, #0 add r1, r6, #0 bl FUN_0200C154 str r0, [r5, #0x14] _02226930: ldr r0, [r5, #0x14] mov r1, #0 bl FUN_0200C644 ldr r0, [r5, #0x14] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5, #0x14] mov r1, #1 bl FUN_0200C6B0 add r4, r4, #1 add r5, r5, #4 cmp r4, #2 blt _0222690C ldr r0, [sp, #4] ldr r1, _02226960 ; =MOD08_02226964 ldr r0, [r0] ldr r2, [sp, #4] bl MOD08_02212400 add sp, #0x3c pop {r4, r5, r6, r7, pc} .align 2, 0 _02226960: .word MOD08_02226964 thumb_func_start MOD08_02226964 MOD08_02226964: ; 0x02226964 push {r3, r4, r5, r6, r7, lr} add r4, r1, #0 add r7, r0, #0 ldr r0, [r4, #4] cmp r0, #4 bhi _02226A48 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222697C: ; jump table .short _02226986 - _0222697C - 2 ; case 0 .short _022269AE - _0222697C - 2 ; case 1 .short _022269CE - _0222697C - 2 ; case 2 .short _02226A00 - _0222697C - 2 ; case 3 .short _02226A26 - _0222697C - 2 ; case 4 _02226986: add r2, r4, #0 ldr r0, [r4, #0x14] ldr r3, [r4, #0x10] add r1, #0x1c add r2, #0x64 bl MOD08_02226A50 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x14] add r1, #0x1c add r2, #0x64 bl MOD08_02226AB0 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] mov r0, #8 str r0, [r4, #8] b _02226A48 _022269AE: ldr r0, [r4, #8] add r2, r4, #0 sub r0, r0, #1 str r0, [r4, #8] ldr r0, [r4, #0x14] add r1, #0x1c add r2, #0x64 bl MOD08_02226AB0 ldr r0, [r4, #8] cmp r0, #0 bge _02226A48 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] b _02226A48 _022269CE: add r2, r4, #0 ldr r0, [r4, #0x18] ldr r3, [r4, #0x10] add r1, #0x40 add r2, #0x88 bl MOD08_02226A50 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x18] add r1, #0x40 add r2, #0x88 bl MOD08_02226AB0 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x14] add r1, #0x1c add r2, #0x64 bl MOD08_02226AB0 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] b _02226A48 _02226A00: add r2, r4, #0 ldr r0, [r4, #0x14] add r1, #0x1c add r2, #0x64 bl MOD08_02226AB0 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x18] add r1, #0x40 add r2, #0x88 bl MOD08_02226AB0 cmp r0, #0 beq _02226A48 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] b _02226A48 _02226A26: mov r6, #0 add r5, r4, #0 _02226A2A: ldr r0, [r5, #0x14] bl FUN_0200C3DC add r6, r6, #1 add r5, r5, #4 cmp r6, #2 blt _02226A2A ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _02226A48: ldr r0, [r4, #0xc] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02226A50 MOD08_02226A50: ; 0x02226A50 push {r4, r5, r6, r7, lr} sub sp, #0xc add r6, r1, #0 add r5, r0, #0 mov r1, #2 add r7, r2, #0 add r4, r3, #0 bl FUN_0200C840 add r0, r5, #0 mov r1, #1 bl FUN_0200C644 add r1, sp, #8 add r0, r5, #0 add r1, #2 add r2, sp, #8 bl FUN_0200C7A0 add r1, sp, #8 mov r0, #0 ldrsh r3, [r1, r0] mov r0, #2 ldrsh r1, [r1, r0] add r0, r3, #0 sub r0, #0x20 lsl r0, r0, #0x10 lsl r2, r4, #4 asr r0, r0, #0x10 add r2, r1, r2 str r0, [sp] mov r0, #0x20 lsl r2, r2, #0x10 str r0, [sp, #4] add r0, r6, #0 asr r2, r2, #0x10 bl MOD08_02217E80 mov r0, #0x20 mov r2, #0xa str r0, [sp] add r0, r7, #0 mov r1, #2 add r3, r2, #0 bl MOD08_02218120 add sp, #0xc pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_02226AB0 MOD08_02226AB0: ; 0x02226AB0 push {r3, r4, r5, lr} add r5, r0, #0 add r0, r1, #0 add r4, r2, #0 add r1, r5, #0 bl MOD08_02217F08 add r0, r4, #0 add r1, r5, #0 bl MOD08_02218360 cmp r0, #0 beq _02226ACE mov r0, #0 pop {r3, r4, r5, pc} _02226ACE: add r0, r5, #0 mov r1, #0 bl FUN_0200C644 mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02226ADC MOD08_02226ADC: ; 0x02226ADC push {r3, r4, r5, r6, r7, lr} mov r1, #0x3c add r6, r0, #0 add r7, r2, #0 add r5, r3, #0 bl MOD08_02228064 add r4, r0, #0 str r6, [r4] str r7, [r4, #0xc] str r5, [r4, #0x10] add r0, r5, #0 mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #0x10] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r4, #0x10] bl FUN_0200C68C str r0, [r4, #8] ldr r0, [r4] ldr r1, _02226B28 ; =MOD08_02226B2C add r2, r4, #0 bl MOD08_02212400 pop {r3, r4, r5, r6, r7, pc} nop _02226B28: .word MOD08_02226B2C thumb_func_start MOD08_02226B2C MOD08_02226B2C: ; 0x02226B2C push {r3, r4, r5, lr} sub sp, #8 add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #4 bhi _02226C18 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02226B46: ; jump table .short _02226B50 - _02226B46 - 2 ; case 0 .short _02226B80 - _02226B46 - 2 ; case 1 .short _02226BA6 - _02226B46 - 2 ; case 2 .short _02226BE4 - _02226B46 - 2 ; case 3 .short _02226C00 - _02226B46 - 2 ; case 4 _02226B50: mov r0, #4 str r0, [sp] mov r0, #0xa str r0, [sp, #4] add r0, r4, #0 add r0, #0x14 mov r1, #0 mov r2, #0x10 mov r3, #0x14 bl MOD08_022186D4 ldr r0, [r4, #0x10] mov r1, #1 bl FUN_0200C644 ldr r0, [r4] mov r1, #0 mov r2, #0x14 bl MOD08_02227994 ldr r0, [r4, #4] add r0, r0, #1 str r0, [r4, #4] b _02226C18 _02226B80: add r0, r4, #0 add r0, #0x14 bl MOD08_02218704 cmp r0, #0 beq _02226C18 ldr r0, [r4, #4] mov r1, #1 add r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #0x10] bl FUN_0200C5E0 mov r1, #1 ldr r0, [r4, #0x10] lsl r1, r1, #0xc bl FUN_0200C5F4 b _02226C18 _02226BA6: ldr r0, [r4, #0x10] bl FUN_0200C630 mov r1, #3 bl _s32_div_f ldr r2, [r4, #8] ldr r0, [r4, #0x10] add r1, r2, r1 bl FUN_0200C680 ldr r0, [r4, #0x10] bl FUN_0200C608 cmp r0, #0 bne _02226C18 ldr r0, [r4, #4] mov r1, #0x10 add r0, r0, #1 str r0, [r4, #4] mov r0, #0x14 str r0, [sp] mov r0, #8 str r0, [sp, #4] add r0, r4, #0 add r0, #0x14 mov r2, #0 mov r3, #4 bl MOD08_022186D4 b _02226C18 _02226BE4: add r0, r4, #0 add r0, #0x14 bl MOD08_02218704 cmp r0, #0 beq _02226C18 ldr r0, [r4, #4] mov r1, #0 add r0, r0, #1 str r0, [r4, #4] ldr r0, [r4, #0x10] bl FUN_0200C644 b _02226C18 _02226C00: ldr r0, [r4, #0x10] bl FUN_0200C3DC ldr r0, [r4] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl FUN_02016A18 add sp, #8 pop {r3, r4, r5, pc} _02226C18: ldr r0, [r4, #0xc] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02226C24 MOD08_02226C24: ; 0x02226C24 push {r4, r5, r6, r7, lr} sub sp, #0x4c str r1, [sp, #4] str r2, [sp, #8] mov r1, #0x54 add r5, r0, #0 str r3, [sp, #0xc] bl MOD08_02228064 ldr r1, [sp, #8] str r5, [r0] str r0, [sp, #0x14] str r1, [r0, #8] ldr r0, [r0] bl MOD08_02212458 add r4, r0, #0 add r0, r5, #0 add r1, r4, #0 bl MOD08_02217C1C ldr r1, [sp, #0x14] str r0, [sp, #0x10] ldr r1, [r1] add r0, sp, #0x18 bl MOD08_02215474 add r0, r5, #0 add r1, r4, #0 mov r2, #0 bl MOD08_02217B98 add r1, sp, #0x18 strh r0, [r1] add r0, r5, #0 add r1, r4, #0 mov r2, #1 bl MOD08_02217B98 ldr r7, [sp, #0x14] ldr r6, [sp, #0x14] ldr r5, [sp, #0x14] add r1, sp, #0x18 add r7, #0x3c add r6, #0x24 strh r0, [r1, #2] mov r4, #5 add r5, #0x14 add r7, #0x14 add r6, #0x14 _02226C88: cmp r4, #5 add r2, sp, #0x18 bne _02226CA2 ldr r0, [sp, #0xc] mov r1, #0 str r0, [r5, #0xc] ldrsh r1, [r2, r1] add r3, r2, #0 mov r2, #2 ldrsh r2, [r3, r2] bl FUN_0200C714 b _02226CAC _02226CA2: ldr r0, [sp, #4] ldr r1, [sp, #8] bl FUN_0200C154 str r0, [r5, #0xc] _02226CAC: ldr r0, [r5, #0xc] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5, #0xc] mov r1, #1 bl FUN_0200C6B0 ldr r0, [r5, #0xc] mov r1, #0 bl FUN_0200C644 ldr r0, [sp, #0x10] add r1, r6, #0 str r0, [sp] ldr r0, [r5, #0xc] add r2, r7, #0 add r3, r4, #0 bl MOD08_02226CF4 sub r5, r5, #4 sub r7, r7, #4 sub r6, r6, #4 sub r4, r4, #1 bpl _02226C88 ldr r0, [sp, #0x14] ldr r1, _02226CF0 ; =MOD08_02226D78 ldr r0, [r0] ldr r2, [sp, #0x14] bl MOD08_02212400 add sp, #0x4c pop {r4, r5, r6, r7, pc} nop _02226CF0: .word MOD08_02226D78 thumb_func_start MOD08_02226CF4 MOD08_02226CF4: ; 0x02226CF4 push {r3, r4, r5, r6, r7, lr} add r4, r3, #0 add r6, r1, #0 lsr r1, r4, #0x1f add r1, r4, r1 asr r1, r1, #1 add r5, r0, #0 add r7, r2, #0 bl FUN_0200C5C0 lsl r0, r4, #1 str r0, [r7] mov r0, #0x10 add r1, sp, #0 str r0, [r6] add r0, r5, #0 add r1, #2 add r2, sp, #0 bl FUN_0200C7A0 mov r1, #2 add r6, r1, #0 add r2, sp, #0 sub r6, #0xe mul r6, r4 ldr r0, [sp, #0x18] ldrsh r3, [r2, r1] add r6, #0x28 add r4, r0, #0 mul r4, r6 add r0, r3, r4 mov r3, #0 strh r0, [r2, #2] ldrsh r0, [r2, r3] add r0, #0x28 strh r0, [r2] ldrsh r1, [r2, r1] ldrsh r2, [r2, r3] add r0, r5, #0 bl FUN_0200C714 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02226D48 MOD08_02226D48: ; 0x02226D48 push {r3, lr} ldr r3, [r2] cmp r3, #0 ble _02226D5E sub r1, r3, #1 str r1, [r2] bne _02226D74 mov r1, #1 bl FUN_0200C644 b _02226D74 _02226D5E: ldr r2, [r1] cmp r2, #0 ble _02226D6A sub r0, r2, #1 str r0, [r1] b _02226D74 _02226D6A: mov r1, #0 bl FUN_0200C644 mov r0, #1 pop {r3, pc} _02226D74: mov r0, #0 pop {r3, pc} thumb_func_start MOD08_02226D78 MOD08_02226D78: ; 0x02226D78 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 ldr r0, [r1, #4] str r1, [sp] cmp r0, #0 beq _02226D8A cmp r0, #1 beq _02226DBC b _02226DE0 _02226D8A: add r6, r1, #0 add r4, r1, #0 mov r7, #0 add r6, #0x3c add r4, #0x24 add r5, r1, #0 _02226D96: ldr r0, [r5, #0xc] add r1, r4, #0 add r2, r6, #0 bl MOD08_02226D48 add r7, r7, #1 add r6, r6, #4 add r4, r4, #4 add r5, r5, #4 cmp r7, #6 blt _02226D96 cmp r0, #0 beq _02226DE0 ldr r0, [sp] ldr r0, [r0, #4] add r1, r0, #1 ldr r0, [sp] str r1, [r0, #4] b _02226DE0 _02226DBC: mov r5, #0 add r4, r1, #0 _02226DC0: ldr r0, [r4, #0xc] bl FUN_0200C3DC add r5, r5, #1 add r4, r4, #4 cmp r5, #6 blt _02226DC0 ldr r0, [sp] add r1, r6, #0 ldr r0, [r0] bl MOD08_02212438 ldr r0, [sp] bl FUN_02016A18 pop {r3, r4, r5, r6, r7, pc} _02226DE0: ldr r0, [sp] ldr r0, [r0, #8] bl FUN_0200BC1C pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02226DEC MOD08_02226DEC: ; 0x02226DEC push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 mov r7, #0 add r6, r5, #0 str r1, [sp, #0x10] add r6, #0x30 add r4, r7, #0 _02226DFC: mov r0, #0 str r0, [sp] mov r0, #0x32 lsl r0, r0, #0xc str r0, [sp, #4] mov r0, #0 str r0, [sp, #8] mov r0, #0x30 mov r1, #0 str r0, [sp, #0xc] ldr r2, _02226E3C ; =0x00007FFF add r0, r6, #0 add r3, r1, #0 bl MOD08_02217D14 ldr r0, [r5, #0x38] add r7, r7, #1 add r0, r0, r4 str r0, [r5, #0x38] ldr r1, [r5, #0x48] ldr r0, [sp, #0x10] add r6, #0x24 mul r0, r1 str r0, [r5, #0x48] ldr r0, _02226E40 ; =0x00002AAA add r5, #0x24 add r4, r4, r0 cmp r7, #6 blt _02226DFC add sp, #0x14 pop {r4, r5, r6, r7, pc} nop _02226E3C: .word 0x00007FFF _02226E40: .word 0x00002AAA thumb_func_start MOD08_02226E44 MOD08_02226E44: ; 0x02226E44 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 mov r0, #0 add r7, r6, #0 str r0, [sp] add r7, #0x30 add r4, r6, #0 add r5, r6, #0 _02226E54: add r0, r7, #0 bl MOD08_02217D98 mov r1, #0x13 lsl r1, r1, #4 mov r2, #0x30 ldrsh r1, [r6, r1] ldrsh r2, [r4, r2] ldr r0, [r5, #0x18] add r1, r1, r2 ldr r2, _02226EB0 ; =0x00000132 lsl r1, r1, #0x10 ldrsh r2, [r6, r2] asr r1, r1, #0x10 bl FUN_0200C714 ldr r1, [r4, #0x38] ldr r0, _02226EB4 ; =0x00003FFF cmp r1, r0 blt _02226E8C ldr r0, _02226EB8 ; =0x0000BF49 cmp r1, r0 bgt _02226E8C ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C6B0 b _02226E9C _02226E8C: ldr r0, [r6] bl MOD08_02215574 add r1, r0, #0 ldr r0, [r5, #0x18] add r1, r1, #1 bl FUN_0200C6B0 _02226E9C: ldr r0, [sp] add r7, #0x24 add r0, r0, #1 add r4, #0x24 add r5, r5, #4 str r0, [sp] cmp r0, #6 blt _02226E54 pop {r3, r4, r5, r6, r7, pc} nop _02226EB0: .word 0x00000132 _02226EB4: .word 0x00003FFF _02226EB8: .word 0x0000BF49 thumb_func_start MOD08_02226EBC MOD08_02226EBC: ; 0x02226EBC push {r3, r4, r5, r6, r7, lr} sub sp, #8 add r4, r1, #0 add r7, r0, #0 ldr r0, [r4, #0xc] cmp r0, #4 bhi _02226FA2 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02226ED6: ; jump table .short _02226EE0 - _02226ED6 - 2 ; case 0 .short _02226F16 - _02226ED6 - 2 ; case 1 .short _02226F36 - _02226ED6 - 2 ; case 2 .short _02226F62 - _02226ED6 - 2 ; case 3 .short _02226F7E - _02226ED6 - 2 ; case 4 _02226EE0: ldr r0, [r4] mov r1, #1 mov r2, #0xf bl MOD08_02227994 mov r0, #0 str r0, [sp] mov r0, #0xa str r0, [sp, #4] add r0, #0xfe add r0, r4, r0 mov r1, #1 mov r2, #0x10 mov r3, #0xf bl MOD08_022186D4 ldr r1, [r4, #0x14] add r0, r4, #0 bl MOD08_02226DEC add r0, r4, #0 bl MOD08_02226E44 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02226FA2 _02226F16: add r0, r4, #0 bl MOD08_02226E44 mov r0, #0x42 lsl r0, r0, #2 add r0, r4, r0 bl MOD08_02218704 cmp r0, #0 beq _02226FA2 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0x1c str r0, [r4, #0x10] b _02226FA2 _02226F36: add r0, r4, #0 bl MOD08_02226E44 ldr r0, [r4, #0x10] sub r0, r0, #1 str r0, [r4, #0x10] bpl _02226FA2 ldr r0, [r4, #0xc] mov r1, #0x10 add r0, r0, #1 str r0, [r4, #0xc] mov r0, #0xf str r0, [sp] mov r0, #0xa str r0, [sp, #4] add r0, #0xfe add r0, r4, r0 mov r2, #1 mov r3, #0 bl MOD08_022186D4 b _02226FA2 _02226F62: add r0, r4, #0 bl MOD08_02226E44 mov r0, #0x42 lsl r0, r0, #2 add r0, r4, r0 bl MOD08_02218704 cmp r0, #0 beq _02226FA2 ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02226FA2 _02226F7E: mov r6, #0 add r5, r4, #0 _02226F82: ldr r0, [r5, #0x18] bl FUN_0200C3DC add r6, r6, #1 add r5, r5, #4 cmp r6, #6 blt _02226F82 add r0, r4, #0 bl FUN_02016A18 ldr r0, [r4] add r1, r7, #0 bl MOD08_02212438 add sp, #8 pop {r3, r4, r5, r6, r7, pc} _02226FA2: ldr r0, [r4, #8] bl FUN_0200BC1C add sp, #8 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02226FAC MOD08_02226FAC: ; 0x02226FAC push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r5, r1, #0 mov r1, #0x4d lsl r1, r1, #2 add r4, r0, #0 str r2, [sp] add r7, r3, #0 bl MOD08_02228064 add r6, r0, #0 str r4, [r6] ldr r0, [sp] str r5, [r6, #4] str r0, [r6, #8] add r0, r4, #0 bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_022154D4 mov r1, #0 add r5, r0, #0 bl FUN_0200782C mov r1, #0x13 lsl r1, r1, #4 strh r0, [r6, r1] add r0, r5, #0 mov r1, #1 bl FUN_0200782C ldr r1, _02227050 ; =0x00000132 strh r0, [r6, r1] add r0, sp, #4 add r1, r4, #0 bl MOD08_02215474 mov r4, #0 add r5, r6, #0 _02226FFE: cmp r4, #0 bne _02227006 str r7, [r5, #0x18] b _02227012 _02227006: ldr r0, [r6, #4] ldr r1, [r6, #8] add r2, sp, #4 bl FUN_0200C154 str r0, [r5, #0x18] _02227012: ldr r0, [r5, #0x18] mov r1, #0x64 bl FUN_0200C6C4 ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C90C ldr r0, [r5, #0x18] mov r1, #1 bl FUN_0200C5E0 add r4, r4, #1 add r5, r5, #4 cmp r4, #6 blt _02226FFE ldr r0, [r6] bl MOD08_02212458 add r1, r0, #0 ldr r0, [r6] bl MOD08_02217C1C str r0, [r6, #0x14] ldr r0, [r6] ldr r1, _02227054 ; =MOD08_02226EBC add r2, r6, #0 bl MOD08_02212400 add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02227050: .word 0x00000132 _02227054: .word MOD08_02226EBC thumb_func_start MOD08_02227058 MOD08_02227058: ; 0x02227058 strh r1, [r0, #0xc] strh r2, [r0, #0xe] bx lr .align 2, 0 thumb_func_start MOD08_02227060 MOD08_02227060: ; 0x02227060 strh r1, [r0, #0x14] strh r2, [r0, #0x16] bx lr .align 2, 0 thumb_func_start MOD08_02227068 MOD08_02227068: ; 0x02227068 push {r4, r5, r6, lr} sub sp, #0x10 add r5, r0, #0 ldr r0, [r5, #0x1c] add r4, r1, #0 bl MOD08_02212014 add r6, r0, #0 ldr r0, [r5, #0x1c] mov r1, #3 bl MOD08_02215600 add r1, r0, #0 lsl r0, r4, #0x18 lsl r1, r1, #0x18 lsr r0, r0, #0x18 lsr r1, r1, #0x18 bl FUN_020178BC mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] str r6, [sp, #0xc] ldr r1, [r5, #4] ldr r0, [r5] lsl r2, r1, #4 ldr r1, _022270F8 ; =0x0222C670 add r3, r4, #0 ldr r1, [r1, r2] ldr r2, [r5, #0x2c] bl FUN_0200687C mov r0, #0 str r0, [sp] mov r0, #0x20 str r0, [sp, #4] mov r0, #0x80 str r0, [sp, #8] ldr r2, [r5, #4] ldr r0, [r5, #0x30] lsl r3, r2, #4 ldr r2, _022270FC ; =0x0222C674 ldr r1, [r5] ldr r2, [r2, r3] add r3, r6, #0 bl FUN_020030E8 lsl r1, r4, #0x18 ldr r0, [r5, #0x2c] lsr r1, r1, #0x18 bl FUN_02018744 mov r0, #0 str r0, [sp] str r0, [sp, #4] mov r0, #1 str r0, [sp, #8] str r6, [sp, #0xc] ldr r1, [r5, #4] ldr r0, [r5] lsl r2, r1, #4 ldr r1, _02227100 ; =0x0222C678 add r3, r4, #0 ldr r1, [r1, r2] ldr r2, [r5, #0x2c] bl FUN_020068C8 add sp, #0x10 pop {r4, r5, r6, pc} nop _022270F8: .word 0x0222C670 _022270FC: .word 0x0222C674 _02227100: .word 0x0222C678 thumb_func_start MOD08_02227104 MOD08_02227104: ; 0x02227104 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldrb r0, [r4, #0x18] cmp r0, #3 bhi _022271C0 add r1, r0, r0 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0222711C: ; jump table .short _02227124 - _0222711C - 2 ; case 0 .short _02227134 - _0222711C - 2 ; case 1 .short _0222714C - _0222711C - 2 ; case 2 .short _0222716C - _0222711C - 2 ; case 3 _02227124: add r0, r4, #0 mov r1, #2 bl MOD08_02227068 ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] b _0222720E _02227134: ldrh r0, [r4, #0x16] mov r1, #4 mov r2, #0x39 str r0, [sp] ldrh r3, [r4, #0x14] ldr r0, _0222725C ; =0x04000050 bl G2x_SetBlendAlpha_ ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] b _0222720E _0222714C: add r1, r4, #0 add r1, #0x40 ldrb r1, [r1] cmp r1, #0x14 bls _0222715C add r0, r0, #1 strb r0, [r4, #0x18] b _0222720E _0222715C: add r0, r4, #0 add r0, #0x40 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x40 strb r1, [r0] b _0222720E _0222716C: ldrh r0, [r4, #0x14] cmp r0, #0 beq _02227176 sub r0, r0, #1 strh r0, [r4, #0x14] _02227176: ldrh r0, [r4, #0x16] cmp r0, #0x10 bhs _02227180 add r0, r0, #1 strh r0, [r4, #0x16] _02227180: ldrh r0, [r4, #0x14] cmp r0, #0 bne _022271B2 ldrh r0, [r4, #0x16] cmp r0, #0x10 bne _022271B2 ldr r0, [r4, #0x2c] mov r1, #2 bl FUN_02018744 ldr r0, [r4, #0x34] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x38] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x3c] mov r1, #0 bl FUN_0200C644 ldrb r0, [r4, #0x18] add r0, r0, #1 strb r0, [r4, #0x18] _022271B2: ldrh r0, [r4, #0x16] ldrh r1, [r4, #0x14] lsl r0, r0, #8 orr r1, r0 ldr r0, _02227260 ; =0x04000052 strh r1, [r0] b _0222720E _022271C0: ldr r0, _02227264 ; =0x0400004A mov r1, #0x3f ldrh r2, [r0] bic r2, r1 mov r1, #0x1f orr r2, r1 strh r2, [r0] ldrh r3, [r0] ldr r2, _02227268 ; =0xFFFFC0FF lsl r1, r1, #8 and r2, r3 orr r1, r2 strh r1, [r0] mov r2, #0 ldr r0, [r4, #0x2c] mov r1, #2 add r3, r2, #0 bl FUN_020179E0 ldr r0, [r4, #0x2c] mov r1, #2 mov r2, #3 mov r3, #0 bl FUN_020179E0 mov r2, #1 lsl r2, r2, #0x1a ldr r1, [r2] ldr r0, _0222726C ; =0xFFFF1FFF and r0, r1 str r0, [r2] ldr r0, [r4, #0x1c] add r1, r5, #0 bl MOD08_02212438 add r0, r4, #0 bl MOD08_02228094 pop {r3, r4, r5, pc} _0222720E: mov r3, #0x10 mov r0, #0xc ldrsh r1, [r4, r3] ldrsh r0, [r4, r0] mov r2, #0 add r0, r1, r0 strh r0, [r4, #0x10] mov r0, #0x12 ldrsh r1, [r4, r0] mov r0, #0xe ldrsh r0, [r4, r0] add r0, r1, r0 strh r0, [r4, #0x12] ldrsh r3, [r4, r3] ldr r0, [r4, #0x2c] mov r1, #2 bl FUN_020179E0 mov r3, #0x12 ldrsh r3, [r4, r3] ldr r0, [r4, #0x2c] mov r1, #2 mov r2, #3 bl FUN_020179E0 ldr r0, [r4, #0x34] bl FUN_0200C5A8 ldr r0, [r4, #0x38] bl FUN_0200C5A8 ldr r0, [r4, #0x3c] bl FUN_0200C5A8 ldr r0, [r4, #0x24] bl FUN_0200BC1C pop {r3, r4, r5, pc} nop _0222725C: .word 0x04000050 _02227260: .word 0x04000052 _02227264: .word 0x0400004A _02227268: .word 0xFFFFC0FF _0222726C: .word 0xFFFF1FFF thumb_func_start MOD08_02227270 MOD08_02227270: ; 0x02227270 push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #7 str r1, [r4] add r5, r0, #0 mov r1, #0 bl MOD08_02212498 str r0, [r4, #4] add r0, r5, #0 mov r1, #1 bl MOD08_02212498 str r0, [r4, #8] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02227290 MOD08_02227290: ; 0x02227290 push {r4, r5, r6, lr} add r5, r1, #0 mov r1, #0x44 add r6, r0, #0 bl MOD08_02228064 add r4, r0, #0 add r1, r4, #0 add r0, r6, #0 add r1, #0x18 bl MOD08_02227B70 add r2, r4, #0 ldmia r5!, {r0, r1} stmia r2!, {r0, r1} ldmia r5!, {r0, r1} stmia r2!, {r0, r1} ldmia r5!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r4, #0x1c] mov r1, #0 bl MOD08_022124D8 str r0, [r4, #0x34] ldr r0, [r4, #0x1c] mov r1, #1 bl MOD08_022124D8 str r0, [r4, #0x38] ldr r0, [r4, #0x1c] mov r1, #2 bl MOD08_022124D8 str r0, [r4, #0x3c] ldr r0, [r4, #0x1c] mov r1, #2 bl MOD08_02215600 ldr r0, [r4, #0x34] mov r1, #2 bl FUN_0200C6B0 ldr r0, [r4, #0x38] mov r1, #2 bl FUN_0200C6B0 ldr r0, [r4, #8] cmp r0, #0 bne _022272FA add r0, r6, #0 bl MOD08_02212458 b _02227300 _022272FA: add r0, r6, #0 bl MOD08_02212460 _02227300: add r1, r0, #0 add r0, r6, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r6, #0 bl MOD08_02212004 cmp r0, #1 bne _02227338 ldr r0, [r4, #0x3c] mov r1, #0 bl FUN_0200C644 ldr r0, [r4, #0x1c] mov r1, #2 bl MOD08_02215600 add r5, r0, #0 ldr r0, [r4, #0x34] add r1, r5, #0 bl FUN_0200C6B0 ldr r0, [r4, #0x38] add r1, r5, #0 bl FUN_0200C6B0 b _0222735C _02227338: cmp r5, #1 bhi _02227346 ldr r0, [r4, #0x3c] mov r1, #0 bl FUN_0200C644 b _0222735C _02227346: sub r0, r5, #3 cmp r0, #1 ldr r0, [r4, #0x3c] bhi _02227356 mov r1, #3 bl FUN_0200C6B0 b _0222735C _02227356: mov r1, #1 bl FUN_0200C6B0 _0222735C: ldr r0, _022273A8 ; =0x0400004A ldr r1, _022273AC ; =0xFFFFC0FF ldrh r2, [r0] and r2, r1 mov r1, #0x16 lsl r1, r1, #8 orr r2, r1 lsr r1, r0, #0xd orr r1, r2 strh r1, [r0] ldrh r2, [r0] mov r1, #0x3f bic r2, r1 mov r1, #0x1b orr r2, r1 mov r1, #0x20 orr r2, r1 strh r2, [r0] lsl r3, r1, #0x15 ldr r2, [r3] ldr r0, _022273B0 ; =0xFFFF1FFF and r2, r0 lsl r0, r1, #0xa orr r0, r2 str r0, [r3] ldr r0, [r4, #0x38] mov r1, #2 bl FUN_0200C90C mov r0, #0 strh r0, [r4, #0x10] strh r0, [r4, #0x12] ldr r0, [r4, #0x1c] ldr r1, _022273B4 ; =MOD08_02227104 add r2, r4, #0 bl MOD08_02212400 pop {r4, r5, r6, pc} .align 2, 0 _022273A8: .word 0x0400004A _022273AC: .word 0xFFFFC0FF _022273B0: .word 0xFFFF1FFF _022273B4: .word MOD08_02227104 thumb_func_start MOD08_022273B8 MOD08_022273B8: ; 0x022273B8 push {r4, lr} sub sp, #0x18 add r1, sp, #0 add r4, r0, #0 bl MOD08_02227270 add r0, sp, #0 mov r1, #0 mov r2, #3 bl MOD08_02227058 add r0, sp, #0 mov r1, #0xc mov r2, #4 bl MOD08_02227060 add r0, r4, #0 add r1, sp, #0 bl MOD08_02227290 add sp, #0x18 pop {r4, pc} thumb_func_start MOD08_022273E4 MOD08_022273E4: ; 0x022273E4 push {r4, lr} sub sp, #0x18 add r1, sp, #0 add r4, r0, #0 bl MOD08_02227270 mov r1, #0 add r0, sp, #0 sub r2, r1, #3 bl MOD08_02227058 add r0, sp, #0 mov r1, #0xc mov r2, #4 bl MOD08_02227060 add r0, r4, #0 add r1, sp, #0 bl MOD08_02227290 add sp, #0x18 pop {r4, pc} thumb_func_start MOD08_02227410 MOD08_02227410: ; 0x02227410 push {r4, lr} sub sp, #0x18 add r1, sp, #0 add r4, r0, #0 bl MOD08_02227270 add r0, sp, #0 mov r1, #0 mov r2, #3 bl MOD08_02227058 add r0, sp, #0 mov r1, #0xc mov r2, #4 bl MOD08_02227060 add r0, r4, #0 add r1, sp, #0 bl MOD08_02227290 add sp, #0x18 pop {r4, pc} thumb_func_start MOD08_0222743C MOD08_0222743C: ; 0x0222743C push {r4, lr} sub sp, #0x18 add r1, sp, #0 add r4, r0, #0 bl MOD08_02227270 mov r1, #0 add r0, sp, #0 sub r2, r1, #6 bl MOD08_02227058 add r0, sp, #0 mov r1, #0xc mov r2, #4 bl MOD08_02227060 add r0, r4, #0 add r1, sp, #0 bl MOD08_02227290 add sp, #0x18 pop {r4, pc} thumb_func_start MOD08_02227468 MOD08_02227468: ; 0x02227468 ldr r3, _0222746C ; =MOD08_02215490 bx r3 .align 2, 0 _0222746C: .word MOD08_02215490 thumb_func_start MOD08_02227470 MOD08_02227470: ; 0x02227470 push {r4, lr} bl MOD08_02215490 cmp r0, #5 bhi _02227498 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02227486: ; jump table .short _02227492 - _02227486 - 2 ; case 0 .short _02227496 - _02227486 - 2 ; case 1 .short _02227492 - _02227486 - 2 ; case 2 .short _02227496 - _02227486 - 2 ; case 3 .short _02227492 - _02227486 - 2 ; case 4 .short _02227496 - _02227486 - 2 ; case 5 _02227492: mov r4, #3 b _02227498 _02227496: mov r4, #4 _02227498: add r0, r4, #0 pop {r4, pc} thumb_func_start MOD08_0222749C MOD08_0222749C: ; 0x0222749C push {r4, r5, r6, lr} add r6, r0, #0 add r5, r1, #0 mov r4, #0 _022274A4: add r0, r6, #0 add r1, r4, #0 bl MOD08_02215490 cmp r0, r5 bne _022274B4 add r0, r4, #0 pop {r4, r5, r6, pc} _022274B4: add r4, r4, #1 cmp r4, #4 blt _022274A4 mov r0, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_022274C0 MOD08_022274C0: ; 0x022274C0 push {r4, r5, r6, lr} add r6, r0, #0 bl MOD08_02215490 add r5, r0, #0 cmp r5, #1 bls _02227520 mov r4, #0 _022274D0: add r0, r6, #0 add r1, r4, #0 bl MOD08_02215490 cmp r5, #5 bhi _02227514 add r1, r5, r5 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _022274E8: ; jump table .short _02227514 - _022274E8 - 2 ; case 0 .short _02227514 - _022274E8 - 2 ; case 1 .short _022274F4 - _022274E8 - 2 ; case 2 .short _02227504 - _022274E8 - 2 ; case 3 .short _022274FC - _022274E8 - 2 ; case 4 .short _0222750C - _022274E8 - 2 ; case 5 _022274F4: cmp r0, #4 bne _02227514 add r0, r4, #0 pop {r4, r5, r6, pc} _022274FC: cmp r0, #2 bne _02227514 add r0, r4, #0 pop {r4, r5, r6, pc} _02227504: cmp r0, #5 bne _02227514 add r0, r4, #0 pop {r4, r5, r6, pc} _0222750C: cmp r0, #3 bne _02227514 add r0, r4, #0 pop {r4, r5, r6, pc} _02227514: add r4, r4, #1 cmp r4, #4 blt _022274D0 bl ErrorHandling add r0, r5, #0 _02227520: pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_02227524 MOD08_02227524: ; 0x02227524 push {r3, lr} cmp r0, #5 bhi _0222755A add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02227536: ; jump table .short _02227542 - _02227536 - 2 ; case 0 .short _02227546 - _02227536 - 2 ; case 1 .short _0222754A - _02227536 - 2 ; case 2 .short _0222754E - _02227536 - 2 ; case 3 .short _02227552 - _02227536 - 2 ; case 4 .short _02227556 - _02227536 - 2 ; case 5 _02227542: mov r0, #1 pop {r3, pc} _02227546: mov r0, #0 pop {r3, pc} _0222754A: mov r0, #3 pop {r3, pc} _0222754E: mov r0, #2 pop {r3, pc} _02227552: mov r0, #5 pop {r3, pc} _02227556: mov r0, #4 pop {r3, pc} _0222755A: bl ErrorHandling mov r0, #0 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_02227564 MOD08_02227564: ; 0x02227564 push {r3, r4, r5, r6} sub sp, #0x30 ldr r6, _022275B8 ; =0x0222C6C8 add r5, sp, #0x18 mov r4, #0xc _0222756E: ldrh r3, [r6] add r6, r6, #2 strh r3, [r5] add r5, r5, #2 sub r4, r4, #1 bne _0222756E ldr r6, _022275BC ; =0x0222C6E0 add r5, sp, #0 mov r4, #0xc _02227580: ldrh r3, [r6] add r6, r6, #2 strh r3, [r5] add r5, r5, #2 sub r4, r4, #1 bne _02227580 cmp r1, #0 beq _022275A4 lsl r3, r0, #2 add r0, sp, #0 add r1, r0, r3 ldrh r0, [r0, r3] add sp, #0x30 strh r0, [r2] ldrh r0, [r1, #2] strh r0, [r2, #2] pop {r3, r4, r5, r6} bx lr _022275A4: lsl r3, r0, #2 add r0, sp, #0x18 add r1, r0, r3 ldrh r0, [r0, r3] strh r0, [r2] ldrh r0, [r1, #2] strh r0, [r2, #2] add sp, #0x30 pop {r3, r4, r5, r6} bx lr .align 2, 0 _022275B8: .word 0x0222C6C8 _022275BC: .word 0x0222C6E0 thumb_func_start MOD08_022275C0 MOD08_022275C0: ; 0x022275C0 push {r4, r5, r6, lr} add r5, r0, #0 add r4, r2, #0 bl MOD08_02227468 add r6, r0, #0 add r0, r5, #0 bl MOD08_02212004 add r1, r0, #0 add r0, r6, #0 add r2, r4, #0 bl MOD08_02227564 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_022275E0 MOD08_022275E0: ; 0x022275E0 push {r4, r5, r6, r7, lr} sub sp, #0x1fc sub sp, #0x1fc sub sp, #0x1fc sub sp, #0x1fc sub sp, #0x114 add r7, r2, #0 mov r2, #0x12 str r3, [sp] ldr r6, _02227654 ; =0x0222C6F8 add r5, r0, #0 add r4, r1, #0 add r3, sp, #4 lsl r2, r2, #4 _022275FC: ldmia r6!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _022275FC cmp r7, #1 bne _0222761E cmp r5, #0 beq _02227612 cmp r5, #1 beq _02227616 b _0222761A _02227612: mov r5, #6 b _0222761E _02227616: mov r5, #7 b _0222761E _0222761A: bl ErrorHandling _0222761E: mov r0, #0x12 lsl r0, r0, #4 add r1, sp, #4 mul r0, r5 add r0, r1, r0 ldr r1, _02227658 ; =0x00000908 add r1, sp ldr r1, [r1, #0x10] lsl r2, r1, #1 ldr r1, [sp] add r2, r1, r2 mov r1, #0xc add r3, r2, #0 mul r3, r1 add r1, r0, r3 ldr r2, [r1, #8] ldr r1, [r1, #4] ldr r0, [r0, r3] str r0, [r4] str r1, [r4, #4] str r2, [r4, #8] add sp, #0x1fc add sp, #0x1fc add sp, #0x1fc add sp, #0x1fc add sp, #0x114 pop {r4, r5, r6, r7, pc} .align 2, 0 _02227654: .word 0x0222C6F8 _02227658: .word 0x00000908 thumb_func_start MOD08_0222765C MOD08_0222765C: ; 0x0222765C push {r3, r4, lr} sub sp, #4 mov r4, #0 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_0222766C MOD08_0222766C: ; 0x0222766C push {r3, r4, lr} sub sp, #4 mov r4, #1 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_0222767C MOD08_0222767C: ; 0x0222767C push {r3, r4, lr} sub sp, #4 mov r4, #2 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_0222768C MOD08_0222768C: ; 0x0222768C push {r3, r4, lr} sub sp, #4 mov r4, #3 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_0222769C MOD08_0222769C: ; 0x0222769C push {r3, r4, lr} sub sp, #4 mov r4, #4 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022276AC MOD08_022276AC: ; 0x022276AC push {r3, r4, lr} sub sp, #4 mov r4, #5 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022276BC MOD08_022276BC: ; 0x022276BC push {r3, r4, lr} sub sp, #4 mov r4, #6 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022276CC MOD08_022276CC: ; 0x022276CC push {r3, r4, lr} sub sp, #4 mov r4, #7 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022276DC MOD08_022276DC: ; 0x022276DC push {r3, r4, lr} sub sp, #4 mov r4, #8 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022276EC MOD08_022276EC: ; 0x022276EC push {r3, r4, lr} sub sp, #4 mov r4, #9 str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022276FC MOD08_022276FC: ; 0x022276FC push {r3, r4, lr} sub sp, #4 mov r4, #0xa str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_0222770C MOD08_0222770C: ; 0x0222770C push {r3, r4, lr} sub sp, #4 mov r4, #0xb str r4, [sp] bl MOD08_022275E0 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_0222771C MOD08_0222771C: ; 0x0222771C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222765C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222774C MOD08_0222774C: ; 0x0222774C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222766C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222777C MOD08_0222777C: ; 0x0222777C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222767C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_022277AC MOD08_022277AC: ; 0x022277AC push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222768C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_022277DC MOD08_022277DC: ; 0x022277DC push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222769C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222780C MOD08_0222780C: ; 0x0222780C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_022276AC pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222783C MOD08_0222783C: ; 0x0222783C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_022276BC pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222786C MOD08_0222786C: ; 0x0222786C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_022276CC pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222789C MOD08_0222789C: ; 0x0222789C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_022276DC pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_022278CC MOD08_022278CC: ; 0x022278CC push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_022276EC pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_022278FC MOD08_022278FC: ; 0x022278FC push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_022276FC pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222792C MOD08_0222792C: ; 0x0222792C push {r3, r4, r5, r6, r7, lr} add r4, r0, #0 add r5, r1, #0 add r6, r2, #0 bl MOD08_02212468 bl FUN_02013448 add r7, r0, #0 add r0, r4, #0 add r1, r5, #0 bl MOD08_02227468 add r5, r0, #0 add r0, r4, #0 bl MOD08_02212004 add r2, r0, #0 add r0, r5, #0 add r1, r6, #0 add r3, r7, #0 bl MOD08_0222770C pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222795C MOD08_0222795C: ; 0x0222795C mov r2, #0 ldr r1, _02227968 ; =0x000068D0 str r2, [r0] str r1, [r0, #4] str r2, [r0, #8] bx lr .align 2, 0 _02227968: .word 0x000068D0 thumb_func_start MOD08_0222796C MOD08_0222796C: ; 0x0222796C push {r3, lr} bl MOD08_0222765C pop {r3, pc} thumb_func_start MOD08_02227974 MOD08_02227974: ; 0x02227974 push {r3, lr} add r3, r1, #0 cmp r0, #0 bne _02227984 add r0, r3, #0 bl FUN_02013428 pop {r3, pc} _02227984: ldr r2, _02227990 ; =0x0222C6BC ldmia r2!, {r0, r1} stmia r3!, {r0, r1} ldr r0, [r2] str r0, [r3] pop {r3, pc} .align 2, 0 _02227990: .word 0x0222C6BC thumb_func_start MOD08_02227994 MOD08_02227994: ; 0x02227994 push {r3, r4, r5, lr} add r5, r1, #0 mov r1, #0 mvn r1, r1 add r4, r2, #0 cmp r5, r1 bne _022279A4 mov r5, #0x1a _022279A4: mov r1, #0 mvn r1, r1 cmp r4, r1 bne _022279AE mov r4, #5 _022279AE: mov r1, #2 bl MOD08_022155C4 mov r1, #1 add r2, r1, #0 lsl r2, r0 orr r2, r1 ldr r0, _022279CC ; =0x04000050 mov r1, #0 add r3, r5, #0 str r4, [sp] bl G2x_SetBlendAlpha_ pop {r3, r4, r5, pc} nop _022279CC: .word 0x04000050 thumb_func_start MOD08_022279D0 MOD08_022279D0: ; 0x022279D0 push {r3, r4, r5, lr} mov r0, #0 add r4, r2, #0 mvn r0, r0 add r5, r1, #0 cmp r4, r0 bne _022279E0 mov r4, #0x1a _022279E0: mov r0, #0 mvn r0, r0 cmp r3, r0 bne _022279EA mov r3, #5 _022279EA: ldr r0, _022279FC ; =0x04000050 str r3, [sp] mov r1, #0 add r2, r5, #0 add r3, r4, #0 bl G2x_SetBlendAlpha_ pop {r3, r4, r5, pc} nop _022279FC: .word 0x04000050 thumb_func_start MOD08_02227A00 MOD08_02227A00: ; 0x02227A00 push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 mov r0, #0 add r5, r1, #0 mvn r0, r0 add r4, r2, #0 cmp r5, r0 bne _02227A12 mov r5, #0x1a _02227A12: mov r0, #0 mvn r0, r0 cmp r4, r0 bne _02227A1C mov r4, #5 _02227A1C: add r0, r6, #0 mov r1, #2 bl MOD08_022155C4 mov r1, #1 add r2, r1, #0 lsl r2, r0 mov r0, #0x11 add r7, r2, #0 orr r7, r0 add r0, r6, #0 bl MOD08_022155C4 mov r1, #1 lsl r1, r0 ldr r0, _02227A48 ; =0x04000050 add r2, r7, #0 add r3, r5, #0 str r4, [sp] bl G2x_SetBlendAlpha_ pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02227A48: .word 0x04000050 thumb_func_start MOD08_02227A4C MOD08_02227A4C: ; 0x02227A4C push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 add r4, r2, #0 cmp r1, #0 bne _02227AA0 mov r1, #1 bl MOD08_022155C4 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_022155C4 add r7, r0, #0 add r0, r5, #0 mov r1, #0 bl MOD08_022155C4 add r2, r0, #0 mov r0, #1 add r3, r0, #0 add r1, r0, #0 lsl r3, r7 lsl r0, r2 lsl r1, r6 orr r0, r3 orr r1, r0 mov r0, #0x11 add r2, r1, #0 orr r2, r0 ldr r0, _02227B20 ; =0x04000048 ldrh r1, [r0] mov r0, #0x3f bic r1, r0 orr r1, r2 cmp r4, #0 beq _02227A9A mov r0, #0x20 orr r1, r0 _02227A9A: ldr r0, _02227B20 ; =0x04000048 strh r1, [r0] b _02227AEA _02227AA0: mov r1, #1 bl MOD08_022155C4 add r6, r0, #0 add r0, r5, #0 mov r1, #2 bl MOD08_022155C4 add r7, r0, #0 add r0, r5, #0 mov r1, #0 bl MOD08_022155C4 add r2, r0, #0 mov r0, #1 add r3, r0, #0 add r1, r0, #0 lsl r0, r2 lsl r3, r7 lsl r1, r6 orr r0, r3 orr r1, r0 ldr r2, _02227B20 ; =0x04000048 add r3, r1, #0 mov r0, #0x11 orr r3, r0 ldrh r1, [r2] ldr r0, _02227B24 ; =0xFFFFC0FF and r1, r0 lsl r0, r3, #8 orr r1, r0 cmp r4, #0 beq _02227AE6 lsr r0, r2, #0xd orr r1, r0 _02227AE6: ldr r0, _02227B20 ; =0x04000048 strh r1, [r0] _02227AEA: add r0, r5, #0 mov r1, #0 bl MOD08_022155C4 add r4, r0, #0 add r0, r5, #0 mov r1, #1 bl MOD08_022155C4 mov r1, #1 add r2, r1, #0 lsl r1, r0 lsl r2, r4 orr r1, r2 add r3, r1, #0 ldr r1, _02227B28 ; =0x0400004A mov r0, #0x11 orr r3, r0 ldrh r2, [r1] mov r0, #0x3f bic r2, r0 orr r2, r3 mov r0, #0x20 orr r0, r2 strh r0, [r1] pop {r3, r4, r5, r6, r7, pc} nop _02227B20: .word 0x04000048 _02227B24: .word 0xFFFFC0FF _02227B28: .word 0x0400004A thumb_func_start MOD08_02227B2C MOD08_02227B2C: ; 0x02227B2C push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 cmp r5, #0 bne _02227B3E mov r0, #0 strh r0, [r4] strh r0, [r4, #2] pop {r3, r4, r5, pc} _02227B3E: bl FUN_02008268 cmp r0, #0 bne _02227B4E mov r0, #0 strh r0, [r4] strh r0, [r4, #2] pop {r3, r4, r5, pc} _02227B4E: add r0, r5, #0 mov r1, #0 bl FUN_0200782C strh r0, [r4] add r0, r5, #0 mov r1, #1 bl FUN_0200782C strh r0, [r4, #2] pop {r3, r4, r5, pc} thumb_func_start MOD08_02227B64 MOD08_02227B64: ; 0x02227B64 ldr r3, _02227B6C ; =0x0200C7A1 add r2, r1, #2 bx r3 nop _02227B6C: .word 0x0200C7A1 thumb_func_start MOD08_02227B70 MOD08_02227B70: ; 0x02227B70 push {r3, r4, r5, lr} add r4, r1, #0 mov r1, #0 strb r1, [r4] strb r1, [r4, #1] strb r1, [r4, #2] add r5, r0, #0 strb r1, [r4, #3] str r5, [r4, #4] bl MOD08_02212520 str r0, [r4, #8] add r0, r5, #0 bl MOD08_02212504 str r0, [r4, #0xc] add r0, r5, #0 bl MOD08_02212518 str r0, [r4, #0x10] add r0, r5, #0 bl MOD08_02212490 str r0, [r4, #0x14] add r0, r5, #0 bl MOD08_02215504 str r0, [r4, #0x18] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02227BAC MOD08_02227BAC: ; 0x02227BAC push {r3, r4, r5, r6, r7, lr} sub sp, #0x10 add r7, r1, #0 add r4, r3, #0 mov r1, #0 str r1, [r4] mov r1, #0x40 and r1, r7 add r6, r0, #0 add r5, r2, #0 cmp r1, #0x40 beq _02227BC6 b _02227CE8 _02227BC6: bl MOD08_02212458 add r7, r0, #0 add r0, r6, #0 add r1, r7, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] cmp r0, #0 beq _02227C08 str r7, [r1, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227C08: add r0, r6, #0 add r1, r7, #0 bl MOD08_022274C0 str r0, [sp, #4] ldr r1, [sp, #4] add r0, r6, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r0, r5, r1 ldr r1, [r0, #8] cmp r1, #0 beq _02227C50 ldr r1, [sp, #4] str r1, [r0, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227C50: add r0, r6, #0 add r1, r7, #0 bl MOD08_02215490 bl MOD08_02227524 add r1, r0, #0 add r0, r6, #0 bl MOD08_0222749C add r7, r0, #0 add r0, r6, #0 add r1, r7, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] cmp r0, #0 beq _02227CA2 str r7, [r1, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227CA2: add r0, r6, #0 add r1, r7, #0 bl MOD08_022274C0 add r7, r0, #0 add r0, r6, #0 add r1, r7, #0 bl MOD08_022154D4 ldr r2, [r4] mov r1, #0x14 add r3, r2, #0 mul r3, r1 add r2, r5, r3 str r0, [r2, #8] ldr r0, [r4] add r2, r0, #0 mul r2, r1 add r2, r5, r2 ldr r0, [r2, #8] cmp r0, #0 beq _02227DCA str r7, [r2, #0x10] ldr r0, [r4] mul r1, r0 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add sp, #0x10 add r0, r0, #1 str r0, [r4] pop {r3, r4, r5, r6, r7, pc} _02227CE8: mov r1, #0x20 and r1, r7 cmp r1, #0x20 bne _02227DE8 bl MOD08_02212458 add r7, r0, #0 add r0, r6, #0 add r1, r7, #0 bl MOD08_022274C0 str r0, [sp, #8] cmp r0, r7 beq _02227D42 ldr r1, [sp, #8] add r0, r6, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r0, r5, r1 ldr r1, [r0, #8] cmp r1, #0 beq _02227D42 ldr r1, [sp, #8] str r1, [r0, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227D42: add r0, r6, #0 add r1, r7, #0 bl MOD08_02215490 bl MOD08_02227524 add r1, r0, #0 add r0, r6, #0 bl MOD08_0222749C str r0, [sp] cmp r0, r7 beq _02227D9A ldr r1, [sp] add r0, r6, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r0, r5, r1 ldr r1, [r0, #8] cmp r1, #0 beq _02227D9A ldr r1, [sp] str r1, [r0, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227D9A: ldr r1, [sp] add r0, r6, #0 bl MOD08_022274C0 str r0, [sp, #0xc] cmp r0, r7 beq _02227DCA ldr r1, [sp, #0xc] add r0, r6, #0 bl MOD08_022154D4 ldr r2, [r4] mov r1, #0x14 add r3, r2, #0 mul r3, r1 add r2, r5, r3 str r0, [r2, #8] ldr r0, [r4] add r2, r0, #0 mul r2, r1 add r2, r5, r2 ldr r0, [r2, #8] cmp r0, #0 bne _02227DCC _02227DCA: b _02227F82 _02227DCC: ldr r0, [sp, #0xc] str r0, [r2, #0x10] ldr r0, [r4] mul r1, r0 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add sp, #0x10 add r0, r0, #1 str r0, [r4] pop {r3, r4, r5, r6, r7, pc} _02227DE8: mov r1, #2 and r1, r7 cmp r1, #2 bne _02227E42 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r0, r5, r1 ldr r0, [r0, #8] cmp r0, #0 beq _02227E42 add r0, r6, #0 bl MOD08_02212458 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227E42: add r0, r6, #0 bl MOD08_0221553C cmp r0, #1 bne _02227EB8 mov r0, #4 and r0, r7 cmp r0, #4 bne _02227EB8 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_022274C0 add r1, r0, #0 add r0, r6, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r0, r5, r1 ldr r0, [r0, #8] cmp r0, #0 beq _02227EB8 add r0, r6, #0 bl MOD08_02212458 add r1, r0, #0 add r0, r6, #0 bl MOD08_022274C0 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227EB8: mov r0, #8 and r0, r7 cmp r0, #8 bne _02227F14 add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_022154D4 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #8] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r0, r5, r1 ldr r0, [r0, #8] cmp r0, #0 beq _02227F14 add r0, r6, #0 bl MOD08_02212460 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #0x10] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227F14: add r0, r6, #0 bl MOD08_0221553C cmp r0, #1 bne _02227F82 mov r0, #0x10 and r0, r7 cmp r0, #0x10 bne _02227F82 add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_022274C0 add r1, r0, #0 add r0, r6, #0 bl MOD08_022154D4 ldr r2, [r4] mov r1, #0x14 add r3, r2, #0 mul r3, r1 add r2, r5, r3 str r0, [r2, #8] ldr r0, [r4] mul r1, r0 add r0, r5, r1 ldr r0, [r0, #8] cmp r0, #0 beq _02227F82 add r0, r6, #0 bl MOD08_02212460 add r1, r0, #0 add r0, r6, #0 bl MOD08_022274C0 ldr r2, [r4] mov r1, #0x14 add r3, r2, #0 mul r3, r1 add r2, r5, r3 str r0, [r2, #0x10] ldr r0, [r4] mul r1, r0 add r1, r5, r1 ldr r0, [r1, #8] add r1, r1, #4 bl MOD08_02227B2C ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227F82: add sp, #0x10 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02227F88 MOD08_02227F88: ; 0x02227F88 push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 add r4, r3, #0 mov r1, #0 str r1, [r4] mov r1, #2 and r1, r6 add r7, r0, #0 add r5, r2, #0 cmp r1, #2 bne _02227FC8 ldr r1, [r4] bl MOD08_022124D8 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #0xc] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #0xc] add r1, r1, #4 bl MOD08_02227B64 ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227FC8: mov r0, #4 and r0, r6 cmp r0, #4 bne _02227FFC ldr r1, [r4] add r0, r7, #0 bl MOD08_022124D8 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #0xc] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #0xc] add r1, r1, #4 bl MOD08_02227B64 ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02227FFC: mov r0, #8 and r0, r6 cmp r0, #8 bne _02228030 ldr r1, [r4] add r0, r7, #0 bl MOD08_022124D8 add r2, r0, #0 ldr r0, [r4] mov r3, #0x14 add r1, r0, #0 mul r1, r3 add r0, r5, r1 str r2, [r0, #0xc] ldr r0, [r4] add r1, r0, #0 mul r1, r3 add r1, r5, r1 ldr r0, [r1, #0xc] add r1, r1, #4 bl MOD08_02227B64 ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02228030: mov r0, #0x10 and r0, r6 cmp r0, #0x10 bne _02228060 ldr r1, [r4] add r0, r7, #0 bl MOD08_022124D8 ldr r2, [r4] mov r1, #0x14 add r3, r2, #0 mul r3, r1 add r2, r5, r3 str r0, [r2, #0xc] ldr r0, [r4] mul r1, r0 add r1, r5, r1 ldr r0, [r1, #0xc] add r1, r1, #4 bl MOD08_02227B64 ldr r0, [r4] add r0, r0, #1 str r0, [r4] _02228060: pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_02228064 MOD08_02228064: ; 0x02228064 push {r3, r4, r5, lr} add r4, r0, #0 add r5, r1, #0 cmp r4, #0 bne _02228072 bl ErrorHandling _02228072: add r0, r4, #0 bl MOD08_02212014 add r1, r5, #0 bl FUN_02016998 add r4, r0, #0 bne _02228086 bl ErrorHandling _02228086: add r0, r4, #0 mov r1, #0 add r2, r5, #0 bl Call_FillMemWithValue add r0, r4, #0 pop {r3, r4, r5, pc} thumb_func_start MOD08_02228094 MOD08_02228094: ; 0x02228094 push {r4, lr} add r4, r0, #0 bne _0222809E bl ErrorHandling _0222809E: add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_022280A8 MOD08_022280A8: ; 0x022280A8 cmp r0, #1 blt _022280B2 ldr r1, _022280C0 ; =0x00000113 cmp r0, r1 ble _022280B6 _022280B2: mov r0, #4 b _022280BC _022280B6: cmp r0, #0xff blt _022280BC sub r0, #0xff _022280BC: sub r0, r0, #1 bx lr .align 2, 0 _022280C0: .word 0x00000113 thumb_func_start MOD08_022280C4 MOD08_022280C4: ; 0x022280C4 push {r3, r4, r5} sub sp, #0x2c ldr r5, _02228100 ; =0x0222D0A4 add r2, r0, #0 add r4, sp, #0 mov r3, #5 _022280D0: ldmia r5!, {r0, r1} stmia r4!, {r0, r1} sub r3, r3, #1 bne _022280D0 ldr r0, [r5] str r0, [r4] mov r0, #0 add r3, r0, #0 add r4, sp, #0 _022280E2: ldr r1, [r4] cmp r2, r1 bne _022280F0 add sp, #0x2c mov r0, #1 pop {r3, r4, r5} bx lr _022280F0: add r3, r3, #1 add r4, r4, #4 cmp r3, #0xb blo _022280E2 add sp, #0x2c pop {r3, r4, r5} bx lr nop _02228100: .word 0x0222D0A4 thumb_func_start MOD08_02228104 MOD08_02228104: ; 0x02228104 push {r4, r5} sub sp, #0x18 ldr r3, _0222813C ; =0x0222D004 add r2, sp, #0 add r5, r0, #0 add r4, r2, #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} mov r0, #0 add r2, r0, #0 _02228120: ldr r1, [r4] cmp r5, r1 bne _0222812E add sp, #0x18 mov r0, #1 pop {r4, r5} bx lr _0222812E: add r2, r2, #1 add r4, r4, #4 cmp r2, #6 blo _02228120 add sp, #0x18 pop {r4, r5} bx lr .align 2, 0 _0222813C: .word 0x0222D004 thumb_func_start MOD08_02228140 MOD08_02228140: ; 0x02228140 push {r3, r4, r5} sub sp, #0xc ldr r5, _02228174 ; =0x0222CFF8 add r3, r0, #0 ldmia r5!, {r0, r1} add r4, sp, #0 add r2, r4, #0 stmia r4!, {r0, r1} ldr r0, [r5] str r0, [r4] mov r0, #1 mov r4, #0 _02228158: ldr r1, [r2] cmp r3, r1 bne _02228166 add sp, #0xc mov r0, #0 pop {r3, r4, r5} bx lr _02228166: add r4, r4, #1 add r2, r2, #4 cmp r4, #3 blo _02228158 add sp, #0xc pop {r3, r4, r5} bx lr .align 2, 0 _02228174: .word 0x0222CFF8 thumb_func_start MOD08_02228178 MOD08_02228178: ; 0x02228178 push {r3, lr} bl MOD08_022280A8 lsl r1, r0, #3 ldr r0, _02228188 ; =0x0222D208 ldr r0, [r0, r1] pop {r3, pc} nop _02228188: .word 0x0222D208 thumb_func_start MOD08_0222818C MOD08_0222818C: ; 0x0222818C push {r3, lr} bl MOD08_022280A8 lsl r1, r0, #3 ldr r0, _0222819C ; =0x0222D20C ldr r0, [r0, r1] pop {r3, pc} nop _0222819C: .word 0x0222D20C thumb_func_start MOD08_022281A0 MOD08_022281A0: ; 0x022281A0 push {r3, lr} bl MOD08_022280A8 mov r1, #0xc mul r1, r0 ldr r0, _022281B0 ; =0x0222D2A8 ldr r0, [r0, r1] pop {r3, pc} .align 2, 0 _022281B0: .word 0x0222D2A8 thumb_func_start MOD08_022281B4 MOD08_022281B4: ; 0x022281B4 push {r3, lr} bl MOD08_022280A8 mov r1, #0xc mul r1, r0 ldr r0, _022281C4 ; =0x0222D2B0 ldr r0, [r0, r1] pop {r3, pc} .align 2, 0 _022281C4: .word 0x0222D2B0 thumb_func_start MOD08_022281C8 MOD08_022281C8: ; 0x022281C8 push {r3, lr} bl MOD08_022280A8 mov r1, #0xc mul r1, r0 ldr r0, _022281D8 ; =0x0222D2AC ldr r0, [r0, r1] pop {r3, pc} .align 2, 0 _022281D8: .word 0x0222D2AC thumb_func_start MOD08_022281DC MOD08_022281DC: ; 0x022281DC push {r4, lr} add r4, r1, #0 bl MOD08_022280A8 lsl r2, r0, #4 ldr r0, _022281F0 ; =0x0222D398 lsl r1, r4, #2 add r0, r0, r2 ldr r0, [r1, r0] pop {r4, pc} .align 2, 0 _022281F0: .word 0x0222D398 thumb_func_start MOD08_022281F4 MOD08_022281F4: ; 0x022281F4 push {r4, lr} mov r1, #0xb8 add r4, r0, #0 bl FUN_02016998 cmp r0, #0 bne _0222820A bl ErrorHandling mov r0, #0 pop {r4, pc} _0222820A: add r1, r0, #0 str r4, [r0] mov r2, #0 add r1, #0x88 str r2, [r1] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02228218 MOD08_02228218: ; 0x02228218 push {r3, r4, r5, lr} add r5, r1, #0 bl MOD08_022281F4 add r1, r5, #0 add r4, r0, #0 bl MOD08_02228244 mov r1, #0 str r1, [r4, #0x10] add r2, r4, #0 add r0, r1, #0 _02228230: str r0, [r2, #0x14] str r0, [r2, #0x38] str r0, [r2, #0x5c] add r1, r1, #1 add r2, r2, #4 cmp r1, #9 blt _02228230 add r0, r4, #0 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_02228244 MOD08_02228244: ; 0x02228244 push {r4, lr} add r3, r1, #0 add r4, r0, #0 ldmia r3!, {r0, r1} add r2, r4, #4 stmia r2!, {r0, r1} ldr r0, [r3] mov r1, #0xa1 str r0, [r2] ldr r0, [r4, #0xc] mov r2, #0 bl FUN_020671BC add r1, r4, #0 add r1, #0x9c str r0, [r1] add r0, r4, #0 add r0, #0x9c ldr r0, [r0] cmp r0, #0xd blt _02228272 bl ErrorHandling _02228272: add r0, r4, #0 add r0, #0x9c ldr r0, [r0] cmp r0, #0 bne _0222829E add r0, r4, #0 mov r2, #0 add r0, #0x94 str r2, [r0] ldr r0, [r4, #8] cmp r0, #0 beq _02228290 add r4, #0x98 str r0, [r4] pop {r4, pc} _02228290: ldr r0, [r4, #0xc] mov r1, #0x9a bl FUN_020671BC add r4, #0x98 str r0, [r4] pop {r4, pc} _0222829E: add r0, r4, #0 mov r1, #1 add r0, #0x94 str r1, [r0] ldr r0, [r4, #0xc] add r4, #0xa0 mov r1, #0xaa add r2, r4, #0 bl FUN_020671BC pop {r4, pc} thumb_func_start MOD08_022282B4 MOD08_022282B4: ; 0x022282B4 push {r4, r5, r6, r7, lr} sub sp, #0x24 add r4, r1, #0 str r0, [sp] add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #3 bls _022282C8 b _02228520 _022282C8: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022282D4: ; jump table .short _022282DC - _022282D4 - 2 ; case 0 .short _02228376 - _022282D4 - 2 ; case 1 .short _02228402 - _022282D4 - 2 ; case 2 .short _0222848E - _022282D4 - 2 ; case 3 _022282DC: ldr r1, [r4] mov r0, #0x63 bl FUN_02006670 add r1, r4, #0 add r1, #0x8c str r0, [r1] add r0, r4, #0 add r6, r4, #0 str r0, [sp, #0x14] add r0, #0xa0 mov r5, #0 add r6, #0x10 str r0, [sp, #0x14] _022282F8: ldr r0, [sp, #0x14] add r1, r5, #0 bl FUN_02029CC8 add r7, r0, #0 beq _02228360 bl FUN_02029CE0 cmp r0, #0 beq _02228360 cmp r0, #0x51 bge _02228360 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02085FF4 str r0, [sp, #0x10] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 str r7, [r0, #0x38] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 beq _02228332 bl ErrorHandling _02228332: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] ldr r1, [r4] ldr r2, [sp, #0x10] mov r3, #0 bl MOD08_02215B00 ldr r1, [r4, #0x10] lsl r1, r1, #2 add r1, r4, r1 str r0, [r1, #0x14] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 bne _0222835A bl ErrorHandling _0222835A: ldr r0, [r6] add r0, r0, #1 str r0, [r6] _02228360: add r5, r5, #1 cmp r5, #2 blt _022282F8 add r0, r4, #0 add r0, #0x90 ldr r0, [r0] add r4, #0x90 add r0, r0, #1 add sp, #0x24 str r0, [r4] pop {r4, r5, r6, r7, pc} _02228376: add r0, r4, #0 add r6, r4, #0 str r0, [sp, #0x18] add r0, #0xa0 mov r5, #2 add r6, #0x10 str r0, [sp, #0x18] _02228384: ldr r0, [sp, #0x18] add r1, r5, #0 bl FUN_02029CC8 add r7, r0, #0 beq _022283EC bl FUN_02029CE0 cmp r0, #0 beq _022283EC cmp r0, #0x51 bge _022283EC lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02085FF4 str r0, [sp, #4] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 str r7, [r0, #0x38] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 beq _022283BE bl ErrorHandling _022283BE: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] ldr r1, [r4] ldr r2, [sp, #4] mov r3, #0 bl MOD08_02215B00 ldr r1, [r4, #0x10] lsl r1, r1, #2 add r1, r4, r1 str r0, [r1, #0x14] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 bne _022283E6 bl ErrorHandling _022283E6: ldr r0, [r6] add r0, r0, #1 str r0, [r6] _022283EC: add r5, r5, #1 cmp r5, #4 blt _02228384 add r0, r4, #0 add r0, #0x90 ldr r0, [r0] add r4, #0x90 add r0, r0, #1 add sp, #0x24 str r0, [r4] pop {r4, r5, r6, r7, pc} _02228402: add r0, r4, #0 add r6, r4, #0 str r0, [sp, #0x1c] add r0, #0xa0 mov r5, #4 add r6, #0x10 str r0, [sp, #0x1c] _02228410: ldr r0, [sp, #0x1c] add r1, r5, #0 bl FUN_02029CC8 add r7, r0, #0 beq _02228478 bl FUN_02029CE0 cmp r0, #0 beq _02228478 cmp r0, #0x51 bge _02228478 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02085FF4 str r0, [sp, #8] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 str r7, [r0, #0x38] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 beq _0222844A bl ErrorHandling _0222844A: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] ldr r1, [r4] ldr r2, [sp, #8] mov r3, #0 bl MOD08_02215B00 ldr r1, [r4, #0x10] lsl r1, r1, #2 add r1, r4, r1 str r0, [r1, #0x14] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 bne _02228472 bl ErrorHandling _02228472: ldr r0, [r6] add r0, r0, #1 str r0, [r6] _02228478: add r5, r5, #1 cmp r5, #6 blt _02228410 add r0, r4, #0 add r0, #0x90 ldr r0, [r0] add r4, #0x90 add r0, r0, #1 add sp, #0x24 str r0, [r4] pop {r4, r5, r6, r7, pc} _0222848E: add r0, r4, #0 add r6, r4, #0 str r0, [sp, #0x20] add r0, #0xa0 mov r5, #6 add r6, #0x10 str r0, [sp, #0x20] _0222849C: ldr r0, [sp, #0x20] add r1, r5, #0 bl FUN_02029CC8 add r7, r0, #0 beq _02228504 bl FUN_02029CE0 cmp r0, #0 beq _02228504 cmp r0, #0x51 bge _02228504 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02085FF4 str r0, [sp, #0xc] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 str r7, [r0, #0x38] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 beq _022284D6 bl ErrorHandling _022284D6: add r0, r4, #0 add r0, #0x8c ldr r0, [r0] ldr r1, [r4] ldr r2, [sp, #0xc] mov r3, #0 bl MOD08_02215B00 ldr r1, [r4, #0x10] lsl r1, r1, #2 add r1, r4, r1 str r0, [r1, #0x14] ldr r0, [r4, #0x10] lsl r0, r0, #2 add r0, r4, r0 ldr r0, [r0, #0x14] cmp r0, #0 bne _022284FE bl ErrorHandling _022284FE: ldr r0, [r6] add r0, r0, #1 str r0, [r6] _02228504: add r5, r5, #1 cmp r5, #8 blt _0222849C add r0, r4, #0 mov r1, #0xff add r0, #0x90 add r4, #0x8c str r1, [r0] ldr r0, [r4] bl FUN_020066F4 ldr r0, [sp] bl FUN_0200CAB4 _02228520: add sp, #0x24 pop {r4, r5, r6, r7, pc} thumb_func_start MOD08_02228524 MOD08_02228524: ; 0x02228524 push {r4, lr} add r4, r0, #0 add r0, #0x94 ldr r0, [r0] cmp r0, #0 bne _0222854E add r0, r4, #0 add r0, #0x98 ldr r0, [r0] bl MOD08_02228178 add r2, r0, #0 mov r0, #1 str r0, [r4, #0x10] ldr r0, [r4] mov r1, #0x63 mov r3, #0 bl MOD08_02215ACC str r0, [r4, #0x14] pop {r4, pc} _0222854E: mov r1, #0 add r0, r4, #0 mov r2, #0xfa str r1, [r4, #0x10] add r0, #0x90 str r1, [r0] ldr r0, _0222856C ; =MOD08_022282B4 add r1, r4, #0 lsl r2, r2, #2 bl FUN_0200CA44 add r1, r4, #0 bl MOD08_022282B4 pop {r4, pc} .align 2, 0 _0222856C: .word MOD08_022282B4 thumb_func_start MOD08_02228570 MOD08_02228570: ; 0x02228570 mov r0, #1 bx lr thumb_func_start MOD08_02228574 MOD08_02228574: ; 0x02228574 push {r3, r4, r5, lr} add r5, r0, #0 add r4, r1, #0 mov r1, #1 add r0, #0x88 str r1, [r0] bl MOD08_0221268C add r0, r5, #0 add r1, r4, #0 bl MOD08_0222865C mov r2, #0xfa ldr r0, _022285A0 ; =MOD08_022285BC add r1, r5, #0 lsl r2, r2, #2 bl FUN_0200CA44 add r5, #0x84 str r0, [r5] pop {r3, r4, r5, pc} nop _022285A0: .word MOD08_022285BC thumb_func_start MOD08_022285A4 MOD08_022285A4: ; 0x022285A4 ldr r3, _022285AC ; =MOD08_02228574 ldr r1, _022285B0 ; =MOD08_02228788 bx r3 nop _022285AC: .word MOD08_02228574 _022285B0: .word MOD08_02228788 thumb_func_start MOD08_022285B4 MOD08_022285B4: ; 0x022285B4 add r0, #0x88 ldr r0, [r0] bx lr .align 2, 0 thumb_func_start MOD08_022285BC MOD08_022285BC: ; 0x022285BC push {r3, r4, r5, r6, r7, lr} add r6, r1, #0 str r0, [sp] ldr r0, [r6, #0x10] mov r7, #0 cmp r0, #9 ble _022285CE bl ErrorHandling _022285CE: ldr r0, [r6, #0x10] mov r4, #0 cmp r0, #0 ble _02228606 add r5, r6, #0 _022285D8: ldr r0, [r5, #0x14] cmp r0, #0 beq _022285FC bl FUN_020133C8 cmp r0, #0 bne _022285FA ldr r0, [r5, #0x5c] cmp r0, #0 beq _022285FA ldr r0, [r5, #0x14] bl MOD08_02215B40 mov r0, #0 str r0, [r5, #0x14] str r0, [r5, #0x5c] b _022285FC _022285FA: mov r7, #1 _022285FC: ldr r0, [r6, #0x10] add r4, r4, #1 add r5, r5, #4 cmp r4, r0 blt _022285D8 _02228606: cmp r7, #0 bne _02228616 mov r0, #0 add r6, #0x88 str r0, [r6] ldr r0, [sp] bl FUN_0200CAB4 _02228616: pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_02228618 MOD08_02228618: ; 0x02228618 ldr r3, _0222861C ; =0x02016A19 bx r3 .align 2, 0 _0222861C: .word 0x02016A19 thumb_func_start MOD08_02228620 MOD08_02228620: ; 0x02228620 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #4] cmp r0, #0 bne _02228654 ldr r0, [r4, #0xc] mov r1, #1 str r1, [r0] ldr r0, [r4, #0x10] ldr r2, [r4, #0x18] mov r1, #0 add r3, r4, #0 bl FUN_020133AC ldr r0, [r4, #0x10] mov r1, #1 bl FUN_02013440 add r0, r5, #0 bl FUN_0200CAB4 add r0, r4, #0 bl FUN_02016A18 pop {r3, r4, r5, pc} _02228654: sub r0, r0, #1 str r0, [r4, #4] pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0222865C MOD08_0222865C: ; 0x0222865C push {r3, r4, r5, r6, r7, lr} add r6, r0, #0 add r0, #0x94 ldr r0, [r0] add r7, r1, #0 cmp r0, #0 bne _0222869A add r0, r6, #0 add r0, #0x98 ldr r0, [r0] bl MOD08_0222818C add r5, r0, #0 mov r4, #0 cmp r5, #0 ble _0222868E _0222867C: ldr r0, [r6, #0x14] add r1, r4, #0 add r2, r7, #0 add r3, r6, #0 bl FUN_020133AC add r4, r4, #1 cmp r4, r5 blt _0222867C _0222868E: mov r1, #1 str r1, [r6, #0x5c] ldr r0, [r6, #0x14] bl FUN_02013440 pop {r3, r4, r5, r6, r7, pc} _0222869A: ldr r0, [r6, #0x10] mov r7, #0 cmp r0, #0 ble _02228700 add r0, r6, #0 str r0, [sp] add r0, #0x5c add r5, r6, #0 str r0, [sp] _022286AC: ldr r0, [r6] mov r1, #0x1c bl FUN_02016998 add r4, r0, #0 bne _022286BC bl ErrorHandling _022286BC: str r7, [r4] ldr r0, [r6, #4] str r0, [r4, #8] ldr r0, _02228704 ; =MOD08_022287C4 str r0, [r4, #0x18] mov r0, #0 str r0, [r5, #0x5c] ldr r0, [sp] str r0, [r4, #0xc] ldr r0, [r5, #0x14] str r0, [r4, #0x10] ldr r0, [r5, #0x38] str r0, [r4, #0x14] cmp r0, #0 bne _022286DE bl ErrorHandling _022286DE: ldr r0, [r4, #0x14] bl MOD08_0222A078 str r0, [r4, #4] ldr r0, _02228708 ; =MOD08_02228620 ldr r2, _0222870C ; =0x000003E9 add r1, r4, #0 bl FUN_0200CA44 ldr r0, [sp] add r7, r7, #1 add r0, r0, #4 str r0, [sp] ldr r0, [r6, #0x10] add r5, r5, #4 cmp r7, r0 blt _022286AC _02228700: pop {r3, r4, r5, r6, r7, pc} nop _02228704: .word MOD08_022287C4 _02228708: .word MOD08_02228620 _0222870C: .word 0x000003E9 thumb_func_start MOD08_02228710 MOD08_02228710: ; 0x02228710 push {r3, r4, r5, lr} mov r2, #0 mov r3, #1 add r5, r0, #0 add r4, r1, #0 bl MOD08_0222796C cmp r5, #5 bhi _02228766 add r0, r5, r5 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222872E: ; jump table .short _0222873A - _0222872E - 2 ; case 0 .short _02228742 - _0222872E - 2 ; case 1 .short _0222874C - _0222872E - 2 ; case 2 .short _02228754 - _0222872E - 2 ; case 3 .short _0222875E - _0222872E - 2 ; case 4 .short _02228766 - _0222872E - 2 ; case 5 _0222873A: mov r5, #0 add r0, r5, #0 sub r0, #0x10 b _0222876E _02228742: mov r5, #0xe mvn r5, r5 add r0, r5, #0 sub r0, #0xa b _0222876E _0222874C: mov r5, #7 mvn r5, r5 sub r0, r5, #4 b _0222876E _02228754: mov r5, #0xd mvn r5, r5 add r0, r5, #0 sub r0, #0xb b _0222876E _0222875E: mov r5, #7 mvn r5, r5 sub r0, r5, #4 b _0222876E _02228766: mov r5, #0xf mvn r5, r5 add r0, r5, #0 sub r0, #0xd _0222876E: add r5, #0xa ldr r3, [r4] mov r1, #0xac add r2, r5, #0 mul r2, r1 sub r2, r3, r2 str r2, [r4] add r0, #0x20 ldr r2, [r4, #4] mul r1, r0 sub r0, r2, r1 str r0, [r4, #4] pop {r3, r4, r5, pc} thumb_func_start MOD08_02228788 MOD08_02228788: ; 0x02228788 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 bl FUN_0201341C ldr r0, [r0, #4] add r1, sp, #0 bl MOD08_02228710 ldr r0, [r4, #0x20] ldr r1, [sp] ldr r0, [r0] ldr r0, [r0, #4] add r0, r1, r0 str r0, [r4, #0x28] ldr r0, [r4, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r4, #0x2c] ldr r0, [r4, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r4, #0x30] add sp, #0xc pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_022287C4 MOD08_022287C4: ; 0x022287C4 push {r3, r4, r5, r6, lr} sub sp, #0xc add r5, r0, #0 bl FUN_0201341C add r4, r0, #0 ldr r0, [r4, #8] add r1, sp, #0 bl MOD08_02228710 ldr r0, [r4, #0x14] bl FUN_02029CE0 bl FUN_02086018 ldr r0, [r4, #0x14] bl FUN_02029CE4 add r6, r0, #0 ldr r0, [r4, #0x14] bl FUN_02029CE8 sub r6, #0xbe lsl r1, r6, #0x10 asr r3, r1, #0x10 ldr r2, [sp] mov r1, #0xac add r4, r3, #0 mul r4, r1 add r3, r2, r4 mov r4, #0x64 sub r0, r4, r0 lsl r0, r0, #0x10 asr r0, r0, #0x10 ldr r2, [sp, #4] mul r1, r0 add r0, r2, r1 str r3, [sp] str r0, [sp, #4] ldr r0, [r5, #0x20] ldr r0, [r0] ldr r0, [r0, #4] add r0, r3, r0 str r0, [r5, #0x28] ldr r0, [r5, #0x20] ldr r1, [sp, #4] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r5, #0x2c] ldr r0, [r5, #0x20] ldr r1, [sp, #8] ldr r0, [r0] ldr r0, [r0, #0xc] add r0, r1, r0 str r0, [r5, #0x30] add sp, #0xc pop {r3, r4, r5, r6, pc} thumb_func_start MOD08_02228838 MOD08_02228838: ; 0x02228838 push {r4, lr} add r4, r0, #0 bl FUN_0201341C mov r1, #2 ldrsh r2, [r0, r1] mov r1, #0x64 mov r3, #0xac sub r1, r1, r2 lsl r1, r1, #0x10 asr r2, r1, #0x10 add r1, r2, #0 mov r2, #0 ldrsh r0, [r0, r2] mul r1, r3 sub r0, #0x81 lsl r0, r0, #0x10 asr r0, r0, #0x10 add r2, r0, #0 ldr r0, [r4, #0x20] mul r2, r3 ldr r0, [r0] ldr r0, [r0, #4] add r0, r2, r0 str r0, [r4, #0x28] ldr r0, [r4, #0x20] ldr r0, [r0] ldr r0, [r0, #8] add r0, r1, r0 str r0, [r4, #0x2c] ldr r0, [r4, #0x20] ldr r0, [r0] ldr r0, [r0, #0xc] str r0, [r4, #0x30] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02228880 MOD08_02228880: ; 0x02228880 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #8] mov r1, #0x24 bl FUN_02016998 add r4, r0, #0 bne _02228894 bl ErrorHandling _02228894: ldmia r5!, {r0, r1} add r2, r4, #0 stmia r2!, {r0, r1} ldmia r5!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r5] str r0, [r2] ldr r0, [r4, #0x10] cmp r0, #0 beq _022288B8 ldr r0, _022288DC ; =0x00000113 bl MOD08_022281A0 str r0, [r4, #0x20] ldr r0, _022288DC ; =0x00000113 bl MOD08_022281B4 b _022288C6 _022288B8: ldr r0, [r4, #4] bl MOD08_022281A0 str r0, [r4, #0x20] ldr r0, [r4, #4] bl MOD08_022281B4 _022288C6: str r0, [r4, #0x1c] ldr r0, [r4, #8] ldr r2, [r4, #0x20] mov r1, #0x63 mov r3, #0 bl MOD08_02215ACC str r0, [r4, #0x18] add r0, r4, #0 pop {r3, r4, r5, pc} nop _022288DC: .word 0x00000113 thumb_func_start MOD08_022288E0 MOD08_022288E0: ; 0x022288E0 push {r4, r5, r6, lr} add r5, r0, #0 ldr r1, [r5, #0xc] cmp r1, #0xff bne _0222893A ldr r0, [r5, #0x10] cmp r0, #0 beq _02228910 ldr r0, [r5, #0x1c] mov r4, #0 cmp r0, #0 ble _02228944 ldr r6, _02228950 ; =MOD08_02228838 _022288FA: ldr r0, [r5, #0x18] add r1, r4, #0 add r2, r6, #0 add r3, r5, #0 bl FUN_020133AC ldr r0, [r5, #0x1c] add r4, r4, #1 cmp r4, r0 blt _022288FA b _02228944 _02228910: ldr r0, [r5, #0x1c] mov r4, #0 cmp r0, #0 ble _02228944 ldr r6, _02228950 ; =MOD08_02228838 _0222891A: ldr r0, [r5, #4] bl MOD08_022281C8 cmp r4, r0 beq _02228930 ldr r0, [r5, #0x18] add r1, r4, #0 add r2, r6, #0 add r3, r5, #0 bl FUN_020133AC _02228930: ldr r0, [r5, #0x1c] add r4, r4, #1 cmp r4, r0 blt _0222891A b _02228944 _0222893A: ldr r0, [r5, #0x18] ldr r2, _02228950 ; =MOD08_02228838 add r3, r5, #0 bl FUN_020133AC _02228944: ldr r0, [r5, #0x18] mov r1, #1 bl FUN_02013440 pop {r4, r5, r6, pc} nop _02228950: .word MOD08_02228838 thumb_func_start MOD08_02228954 MOD08_02228954: ; 0x02228954 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x18] bl FUN_020133C8 cmp r0, #0 bne _0222896C ldr r0, [r4, #0x18] bl MOD08_02215B40 mov r0, #0 pop {r4, pc} _0222896C: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228970 MOD08_02228970: ; 0x02228970 ldr r3, _02228974 ; =0x02016A19 bx r3 .align 2, 0 _02228974: .word 0x02016A19 thumb_func_start MOD08_02228978 MOD08_02228978: ; 0x02228978 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _0222898C add r1, r1, #1 str r1, [r4, #4] mov r1, #1 bl MOD08_02229A18 _0222898C: add r0, r4, #0 mov r1, #2 bl MOD08_02229A1C cmp r0, #1 bne _0222899C mov r0, #0 pop {r4, pc} _0222899C: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_022289A0 MOD08_022289A0: ; 0x022289A0 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _022289B4 add r1, r1, #1 str r1, [r4, #4] mov r1, #3 bl MOD08_02229A18 _022289B4: add r0, r4, #0 mov r1, #4 bl MOD08_02229A1C cmp r0, #1 bne _022289C4 mov r0, #0 pop {r4, pc} _022289C4: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_022289C8 MOD08_022289C8: ; 0x022289C8 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _022289DC add r1, r1, #1 str r1, [r4, #4] mov r1, #5 bl MOD08_02229A18 _022289DC: add r0, r4, #0 mov r1, #6 bl MOD08_02229A1C cmp r0, #1 bne _022289EC mov r0, #0 pop {r4, pc} _022289EC: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_022289F0 MOD08_022289F0: ; 0x022289F0 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _02228A04 add r1, r1, #1 str r1, [r4, #4] mov r1, #7 bl MOD08_02229A18 _02228A04: add r0, r4, #0 mov r1, #0xe bl MOD08_02229A1C cmp r0, #1 bne _02228A14 mov r0, #0 pop {r4, pc} _02228A14: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228A18 MOD08_02228A18: ; 0x02228A18 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _02228A2C add r1, r1, #1 str r1, [r4, #4] mov r1, #0xf bl MOD08_02229A18 _02228A2C: add r0, r4, #0 mov r1, #0x12 bl MOD08_02229A1C cmp r0, #1 bne _02228A3C mov r0, #0 pop {r4, pc} _02228A3C: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228A40 MOD08_02228A40: ; 0x02228A40 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _02228A54 add r1, r1, #1 str r1, [r4, #4] mov r1, #0x13 bl MOD08_02229A18 _02228A54: add r0, r4, #0 mov r1, #0x1b bl MOD08_02229A1C cmp r0, #1 bne _02228A64 mov r0, #0 pop {r4, pc} _02228A64: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228A68 MOD08_02228A68: ; 0x02228A68 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _02228A7C add r1, r1, #1 str r1, [r4, #4] mov r1, #0x15 bl MOD08_02229A18 _02228A7C: add r0, r4, #0 mov r1, #0x16 bl MOD08_02229A1C cmp r0, #1 bne _02228A8C mov r0, #0 pop {r4, pc} _02228A8C: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228A90 MOD08_02228A90: ; 0x02228A90 push {r4, lr} add r4, r0, #0 ldr r1, [r4, #4] cmp r1, #0 bne _02228AA4 add r1, r1, #1 str r1, [r4, #4] mov r1, #0x17 bl MOD08_02229A18 _02228AA4: add r0, r4, #0 mov r1, #0x1b bl MOD08_02229A1C cmp r0, #1 bne _02228AB4 mov r0, #0 pop {r4, pc} _02228AB4: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228AB8 MOD08_02228AB8: ; 0x02228AB8 str r1, [r0] mov r1, #0 str r1, [r0, #4] bx lr thumb_func_start MOD08_02228AC0 MOD08_02228AC0: ; 0x02228AC0 push {r3, lr} ldr r1, [r0] lsl r2, r1, #2 ldr r1, _02228AD0 ; =0x0222D034 ldr r1, [r1, r2] blx r1 pop {r3, pc} nop _02228AD0: .word 0x0222D034 thumb_func_start MOD08_02228AD4 MOD08_02228AD4: ; 0x02228AD4 str r1, [r0, #0x14] mov r1, #0 str r1, [r0, #8] str r1, [r0, #0xc] str r1, [r0, #0x10] bx lr thumb_func_start MOD08_02228AE0 MOD08_02228AE0: ; 0x02228AE0 mov r0, #1 bx lr thumb_func_start MOD08_02228AE4 MOD08_02228AE4: ; 0x02228AE4 push {r4, lr} add r4, r0, #0 bl MOD08_02229114 cmp r0, #0 bne _02228AF8 add r0, r4, #0 mov r1, #2 bl MOD08_02228AD4 _02228AF8: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228AFC MOD08_02228AFC: ; 0x02228AFC push {r3, lr} mov r1, #3 bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228B08 MOD08_02228B08: ; 0x02228B08 push {r3, r4, lr} sub sp, #0x14 add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #3 bhi _02228BD8 add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02228B20: ; jump table .short _02228B28 - _02228B20 - 2 ; case 0 .short _02228B7E - _02228B20 - 2 ; case 1 .short _02228B94 - _02228B20 - 2 ; case 2 .short _02228BB0 - _02228B20 - 2 ; case 3 _02228B28: ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C5C0 add r0, r4, #0 add r0, #0xa0 ldr r0, [r0] add r2, sp, #0 str r0, [sp, #4] add r0, r4, #0 add r0, #0x94 ldr r0, [r0] add r1, sp, #0 str r0, [sp, #8] mov r0, #0xff str r0, [sp, #0xc] mov r0, #0 str r0, [sp, #0x10] ldr r0, [r4, #0x30] add r2, #2 bl FUN_0200C7A0 add r0, r4, #0 add r1, r4, #0 add r0, #0xb4 add r1, #0x94 ldr r0, [r0] ldr r1, [r1] bl MOD08_0221590C add r1, r4, #0 add r1, #0xd8 str r0, [r1] add r0, sp, #0 bl MOD08_02228880 add r1, r4, #0 add r1, #0xd0 str r0, [r1] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228BE0 _02228B7E: ldr r0, [r4, #0x30] bl FUN_0200C630 cmp r0, #2 blt _02228BE0 mov r0, #0 str r0, [r4, #0x24] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228BE0 _02228B94: add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_022288E0 add r0, r4, #0 add r0, #0xd8 ldr r0, [r0] bl MOD08_02215918 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228BE0 _02228BB0: add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_02228954 cmp r0, #0 bne _02228BE0 ldr r0, [r4, #0x30] mov r1, #0 bl FUN_0200C61C add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_02228970 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228BE0 _02228BD8: add r0, r4, #0 mov r1, #4 bl MOD08_02228AD4 _02228BE0: mov r0, #1 add sp, #0x14 pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_02228BE8 MOD08_02228BE8: ; 0x02228BE8 mov r0, #1 bx lr thumb_func_start MOD08_02228BEC MOD08_02228BEC: ; 0x02228BEC push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0xc] cmp r1, #0 bne _02228C2C add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x30] add r1, #0xb8 add r2, #0xba bl FUN_0200C7A0 add r0, r4, #0 mov r1, #0x3c add r0, #0xbc strh r1, [r0] add r0, r4, #0 mov r1, #0xb4 add r0, #0xbe strh r1, [r0] add r0, r4, #0 mov r1, #0xa add r0, #0xc0 str r1, [r0] add r0, r4, #0 mov r1, #0xc add r0, #0xc8 str r1, [r0] ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] b _02228C3C _02228C2C: bl MOD08_02229114 cmp r0, #0 bne _02228C3C add r0, r4, #0 mov r1, #6 bl MOD08_02228AD4 _02228C3C: mov r0, #1 pop {r4, pc} thumb_func_start MOD08_02228C40 MOD08_02228C40: ; 0x02228C40 mov r0, #1 bx lr thumb_func_start MOD08_02228C44 MOD08_02228C44: ; 0x02228C44 push {r3, lr} mov r1, #8 bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228C50 MOD08_02228C50: ; 0x02228C50 push {r3, lr} mov r1, #9 bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228C5C MOD08_02228C5C: ; 0x02228C5C push {r4, r5, lr} sub sp, #0xc add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _02228C6E cmp r0, #1 beq _02228CA2 b _02228CE4 _02228C6E: ldr r0, [r4, #0x30] bl FUN_0200C68C add r2, r0, #0 mov r0, #0 str r0, [sp] mov r0, #0xc str r0, [sp, #4] ldr r0, _02228D00 ; =0x0000037F mov r3, #1 add r5, r3, #0 str r0, [sp, #8] add r0, r4, #0 lsl r5, r2 add r0, #0xb0 lsl r2, r5, #0x10 ldr r0, [r0] mov r1, #4 lsr r2, r2, #0x10 sub r3, r3, #2 bl FUN_02003210 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228CFA _02228CA2: add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _02228CFA ldr r0, [r4, #0x30] bl FUN_0200C68C add r2, r0, #0 mov r0, #0xc str r0, [sp] mov r0, #0 str r0, [sp, #4] ldr r0, _02228D00 ; =0x0000037F mov r3, #1 add r5, r3, #0 str r0, [sp, #8] add r0, r4, #0 lsl r5, r2 add r0, #0xb0 lsl r2, r5, #0x10 ldr r0, [r0] mov r1, #4 lsr r2, r2, #0x10 sub r3, r3, #2 bl FUN_02003210 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228CFA _02228CE4: add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _02228CFA add r0, r4, #0 mov r1, #0xa bl MOD08_02228AD4 _02228CFA: mov r0, #1 add sp, #0xc pop {r4, r5, pc} .align 2, 0 _02228D00: .word 0x0000037F thumb_func_start MOD08_02228D04 MOD08_02228D04: ; 0x02228D04 push {r3, lr} mov r1, #0xb bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228D10 MOD08_02228D10: ; 0x02228D10 push {r3, r4, lr} sub sp, #0xc add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _02228D22 cmp r0, #1 beq _02228D62 b _02228D7E _02228D22: ldr r0, [r4, #0xc] add r0, r0, #1 str r0, [r4, #0xc] cmp r0, #1 blt _02228D7E add r1, sp, #8 ldr r0, [r4, #0x30] add r1, #2 add r2, sp, #8 bl FUN_0200C7A0 add r1, sp, #8 mov r0, #0 ldrsh r3, [r1, r0] mov r0, #2 ldrsh r1, [r1, r0] add r0, r3, #0 add r0, #0x20 lsl r0, r0, #0x10 asr r0, r0, #0x10 str r0, [sp] mov r0, #0xa str r0, [sp, #4] add r0, r4, #0 add r0, #0x48 add r2, r1, #0 bl MOD08_02217E80 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228D7E _02228D62: add r0, r4, #0 ldr r1, [r4, #0x30] add r0, #0x48 bl MOD08_02217F08 cmp r0, #0 bne _02228D7E ldr r0, [r4, #8] mov r1, #0xd add r0, r0, #1 str r0, [r4, #8] add r0, r4, #0 bl MOD08_02228AD4 _02228D7E: mov r0, #1 add sp, #0xc pop {r3, r4, pc} thumb_func_start MOD08_02228D84 MOD08_02228D84: ; 0x02228D84 mov r0, #1 bx lr thumb_func_start MOD08_02228D88 MOD08_02228D88: ; 0x02228D88 push {r3, r4, r5, r6, r7, lr} add r5, r0, #0 ldr r1, [r5, #8] cmp r1, #0 beq _02228D98 cmp r1, #1 beq _02228DAE b _02228E0E _02228D98: ldr r0, [r5, #0x30] mov r1, #1 bl FUN_0200C5C0 ldr r0, [r5, #0x30] mov r1, #0 bl FUN_0200C61C ldr r0, [r5, #8] add r0, r0, #1 str r0, [r5, #8] _02228DAE: ldr r1, [r5, #0xc] mov r0, #6 add r2, r1, #0 mul r2, r0 ldr r0, _02228E18 ; =0x0222D18A ldr r1, _02228E1C ; =0x0222D18C ldrsh r0, [r0, r2] ldrh r1, [r1, r2] str r0, [sp] ldr r0, [r5, #0x30] bl FUN_0200C61C ldr r0, [r5, #0xc] ldr r4, _02228E20 ; =0x0222D07C add r0, r0, #1 str r0, [r5, #0xc] mov r6, #0 mov r7, #0x75 _02228DD2: ldr r1, [r5, #0xc] ldr r0, [r4] cmp r1, r0 bne _02228DE6 ldr r0, [r4, #4] add r1, r7, #0 lsl r0, r0, #0x10 lsr r0, r0, #0x10 bl FUN_020054A8 _02228DE6: add r6, r6, #1 add r4, #8 cmp r6, #5 blt _02228DD2 ldr r0, [r5, #0xc] cmp r0, #0x14 bgt _02228DFA ldr r0, [sp] cmp r0, #0xff bne _02228E02 _02228DFA: ldr r0, [r5, #8] add r0, r0, #1 str r0, [r5, #8] b _02228E14 _02228E02: ldr r0, [r5, #0x30] ldr r2, [sp] mov r1, #0 bl FUN_0200C82C b _02228E14 _02228E0E: mov r1, #0xe bl MOD08_02228AD4 _02228E14: mov r0, #1 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 _02228E18: .word 0x0222D18A _02228E1C: .word 0x0222D18C _02228E20: .word 0x0222D07C thumb_func_start MOD08_02228E24 MOD08_02228E24: ; 0x02228E24 mov r0, #1 bx lr thumb_func_start MOD08_02228E28 MOD08_02228E28: ; 0x02228E28 push {r3, lr} ldr r1, [r0, #0xc] add r1, r1, #1 str r1, [r0, #0xc] cmp r1, #0xe blt _02228E44 ldr r1, [r0, #8] add r1, r1, #1 str r1, [r0, #8] mov r1, #0 str r1, [r0, #0xc] mov r1, #0x10 bl MOD08_02228AD4 _02228E44: mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228E48 MOD08_02228E48: ; 0x02228E48 push {r3, lr} mov r1, #0x11 bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228E54 MOD08_02228E54: ; 0x02228E54 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #8] cmp r0, #0 beq _02228E64 cmp r0, #1 beq _02228E74 b _02228EDC _02228E64: ldr r0, [r5, #0x18] cmp r0, #3 blt _02228E6E bl ErrorHandling _02228E6E: ldr r0, [r5, #8] add r0, r0, #1 str r0, [r5, #8] _02228E74: ldr r1, [r5, #0x18] mov r0, #0x18 add r3, r1, #0 mul r3, r0 ldr r0, _02228EE0 ; =0x0222D0D0 ldr r1, [r5, #0xc] add r0, r0, r3 lsl r2, r1, #1 ldrsh r4, [r2, r0] add r0, r1, #1 str r0, [r5, #0xc] cmp r0, #0xb bgt _02228E92 cmp r4, #0xff bne _02228EB2 _02228E92: ldr r0, [r5, #8] mov r1, #0 add r0, r0, #1 str r0, [r5, #8] ldr r0, [r5, #0x18] add r0, r0, #1 str r0, [r5, #0x18] ldr r0, [r5, #0x30] bl FUN_0200C898 add r0, r5, #0 mov r1, #0x12 bl MOD08_02228AD4 mov r0, #1 pop {r3, r4, r5, pc} _02228EB2: cmp r0, #5 bne _02228EBE ldr r0, _02228EE4 ; =0x000005FE mov r1, #0x75 bl FUN_020054A8 _02228EBE: ldr r0, [r5, #0x30] add r1, r4, #0 mov r2, #0 bl FUN_0200C82C ldr r0, _02228EE8 ; =0x0001FFFE mov r1, #0x5a mul r0, r4 lsl r1, r1, #2 bl _s32_div_f add r1, r0, #0 ldr r0, [r5, #0x30] bl FUN_0200C8BC _02228EDC: mov r0, #1 pop {r3, r4, r5, pc} .align 2, 0 _02228EE0: .word 0x0222D0D0 _02228EE4: .word 0x000005FE _02228EE8: .word 0x0001FFFE thumb_func_start MOD08_02228EEC MOD08_02228EEC: ; 0x02228EEC mov r0, #1 bx lr thumb_func_start MOD08_02228EF0 MOD08_02228EF0: ; 0x02228EF0 push {r3, lr} mov r1, #0x14 bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228EFC MOD08_02228EFC: ; 0x02228EFC push {r3, lr} mov r1, #0x1b bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_02228F08 MOD08_02228F08: ; 0x02228F08 push {r3, r4, r5, lr} sub sp, #0x20 add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #3 bhi _02228FDC add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02228F20: ; jump table .short _02228F28 - _02228F20 - 2 ; case 0 .short _02228F5A - _02228F20 - 2 ; case 1 .short _02228FA2 - _02228F20 - 2 ; case 2 .short _02228FB4 - _02228F20 - 2 ; case 3 _02228F28: ldr r0, [r4, #0x30] bl FUN_0200C68C mov r1, #0 mov r3, #1 add r2, r0, #0 add r5, r3, #0 lsl r5, r2 lsl r2, r5, #0x10 str r1, [sp] mov r0, #0xa str r0, [sp, #4] add r0, r4, #0 str r1, [sp, #8] add r0, #0xb0 ldr r0, [r0] mov r1, #4 lsr r2, r2, #0x10 sub r3, r3, #6 bl FUN_02003210 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228FF2 _02228F5A: add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _02228FF2 add r0, r4, #0 add r0, #0xa0 ldr r0, [r0] add r1, r4, #0 str r0, [sp, #0x10] add r1, #0x94 ldr r1, [r1] str r1, [sp, #0x14] bl MOD08_022281C8 str r0, [sp, #0x18] mov r0, #0 str r0, [sp, #0x1c] add r2, sp, #0xc ldr r0, [r4, #0x30] add r1, sp, #0xc add r2, #2 bl FUN_0200C7A0 add r0, sp, #0xc bl MOD08_02228880 add r1, r4, #0 add r1, #0xd0 str r0, [r1] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228FF2 _02228FA2: add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_022288E0 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228FF2 _02228FB4: add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_02228954 cmp r0, #0 bne _02228FF2 ldr r0, [r4, #0x30] mov r1, #0 bl FUN_0200C61C add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_02228970 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02228FF2 _02228FDC: add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _02228FF2 add r0, r4, #0 mov r1, #0x16 bl MOD08_02228AD4 _02228FF2: mov r0, #1 add sp, #0x20 pop {r3, r4, r5, pc} thumb_func_start MOD08_02228FF8 MOD08_02228FF8: ; 0x02228FF8 mov r0, #1 bx lr thumb_func_start MOD08_02228FFC MOD08_02228FFC: ; 0x02228FFC push {r4, r5, lr} sub sp, #0xc add r4, r0, #0 ldr r1, [r4, #8] cmp r1, #0 beq _0222900E cmp r1, #1 beq _02229040 b _02229054 _0222900E: ldr r0, [r4, #0x30] bl FUN_0200C68C add r2, r0, #0 mov r0, #0xa str r0, [sp] mov r0, #0 mov r3, #1 add r5, r3, #0 str r0, [sp, #4] str r0, [sp, #8] add r0, r4, #0 lsl r5, r2 add r0, #0xb0 lsl r2, r5, #0x10 ldr r0, [r0] mov r1, #4 lsr r2, r2, #0x10 sub r3, r3, #6 bl FUN_02003210 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _0222905A _02229040: add r0, #0xb0 ldr r0, [r0] bl FUN_020038E4 cmp r0, #0 bne _0222905A ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _0222905A _02229054: mov r1, #0x18 bl MOD08_02228AD4 _0222905A: mov r0, #1 add sp, #0xc pop {r4, r5, pc} thumb_func_start MOD08_02229060 MOD08_02229060: ; 0x02229060 push {r3, lr} mov r1, #0x19 bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_0222906C MOD08_0222906C: ; 0x0222906C push {r4, lr} add r4, r0, #0 ldr r1, [r4, #8] cmp r1, #0 beq _0222907C cmp r1, #1 beq _0222908A b _022290E2 _0222907C: ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C90C ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] _0222908A: add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] cmp r0, #0 beq _022290B2 add r0, r4, #0 add r0, #0x20 ldrb r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0x20 strb r1, [r0] add r0, r4, #0 add r0, #0x21 ldrb r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0x21 strb r1, [r0] b _022290CE _022290B2: add r0, r4, #0 mov r1, #0 add r0, #0x20 strb r1, [r0] add r0, r4, #0 mov r2, #0xf add r0, #0x21 strb r2, [r0] ldr r0, [r4, #0x30] bl FUN_0200C644 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] _022290CE: add r0, r4, #0 add r0, #0x20 add r4, #0x21 ldrb r1, [r0] ldrb r0, [r4] lsl r0, r0, #8 orr r1, r0 ldr r0, _022290EC ; =0x04000052 strh r1, [r0] b _022290E8 _022290E2: mov r1, #0x1a bl MOD08_02228AD4 _022290E8: mov r0, #1 pop {r4, pc} .align 2, 0 _022290EC: .word 0x04000052 thumb_func_start MOD08_022290F0 MOD08_022290F0: ; 0x022290F0 push {r3, lr} mov r1, #0x1b bl MOD08_02228AD4 mov r0, #1 pop {r3, pc} thumb_func_start MOD08_022290FC MOD08_022290FC: ; 0x022290FC mov r0, #0 bx lr thumb_func_start MOD08_02229100 MOD08_02229100: ; 0x02229100 push {r3, lr} ldr r1, [r0, #0x14] lsl r2, r1, #2 ldr r1, _02229110 ; =0x0222D118 ldr r1, [r1, r2] blx r1 pop {r3, pc} nop _02229110: .word 0x0222D118 thumb_func_start MOD08_02229114 MOD08_02229114: ; 0x02229114 push {r3, r4, lr} sub sp, #0x1c add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #3 bls _02229122 b _02229322 _02229122: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _0222912E: ; jump table .short _02229136 - _0222912E - 2 ; case 0 .short _022291A4 - _0222912E - 2 ; case 1 .short _0222929E - _0222912E - 2 ; case 2 .short _02229302 - _0222912E - 2 ; case 3 _02229136: mov r0, #0xba ldrsh r0, [r4, r0] add r1, r4, #0 mov r2, #0xb8 str r0, [sp] mov r0, #0xbe ldrsh r0, [r4, r0] mov r3, #0xbc add r1, #0x6c str r0, [sp, #4] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] add r0, r4, #0 add r0, #0xc8 ldr r0, [r0] lsl r0, r0, #0xc str r0, [sp, #0xc] add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] add r0, #0x48 bl MOD08_02217F50 add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] add r0, r4, #0 add r0, #0xd4 str r1, [r0] add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_022280C4 cmp r0, #1 bne _0222928C bl FUN_0201B9EC mov r1, #0x14 bl _s32_div_f add r1, #0xa ldr r0, [r4, #0x30] lsl r1, r1, #0xd bl FUN_0200C8BC b _022293BE _022291A4: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_022280C4 cmp r0, #1 bne _02229242 mov r1, #2 ldr r0, [r4, #0x30] lsl r1, r1, #0xc bl FUN_0200C8BC add r0, r4, #0 add r0, #0xc4 ldr r2, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 add r0, #0xa cmp r2, r0 ble _022291DE mov r1, #2 ldr r0, [r4, #0x30] lsl r1, r1, #0xc bl FUN_0200C8BC _022291DE: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_02228104 cmp r0, #1 bne _02229242 add r0, r4, #0 add r0, #0xc4 ldr r2, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 add r0, #0xa cmp r2, r0 bne _02229242 ldr r0, [r4, #0x30] bl FUN_0200C68C add r3, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 add r1, r4, #0 lsl r3, r3, #0x14 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _022293C4 ; =0x0000FFFF add r1, #0x94 str r0, [sp, #0x14] ldr r0, _022293C8 ; =0x000003EA lsr r3, r3, #0x10 str r0, [sp, #0x18] add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] ldr r1, [r1] bl MOD08_02218B20 add r1, r4, #0 add r1, #0xd4 str r0, [r1] _02229242: add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #6 blt _0222927A cmp r0, #8 bgt _0222927A add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r2, r0, #1 add r0, r4, #0 add r0, #0xc4 ldr r1, [r0] cmp r1, r2 ble _0222927A add r0, r2, #5 cmp r1, r0 blt _0222928C _0222927A: add r0, r4, #0 add r1, r4, #0 ldr r2, [r4, #0x30] add r0, #0x48 add r1, #0x6c bl MOD08_02217FE4 cmp r0, #0 beq _0222928E _0222928C: b _022293BE _0222928E: add r0, r4, #0 mov r1, #0 bl MOD08_02229FFC ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022293BE _0222929E: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_02228104 cmp r0, #1 bne _022292D2 add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] cmp r0, #0 beq _022292D2 bl MOD08_02218AF8 cmp r0, #1 beq _022293BE add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] bl MOD08_02218B08 mov r0, #1 str r0, [r4, #0x28] add sp, #0x1c mov r0, #0 pop {r3, r4, pc} _022292D2: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #0xf blt _022292E6 mov r0, #1 str r0, [r4, #0x28] add sp, #0x1c mov r0, #0 pop {r3, r4, pc} _022292E6: add r0, r4, #0 add r0, #0xa0 ldr r1, [r0] ldr r0, _022293CC ; =0x00000111 cmp r1, r0 bne _022292FA ldr r0, _022293D0 ; =0x000007E8 mov r1, #0x75 bl FUN_020054A8 _022292FA: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022293BE _02229302: ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C5C0 add r0, r4, #0 mov r1, #1 bl MOD08_0222A008 add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022293BE _02229322: add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0xf bne _0222937C add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #0xc beq _02229378 cmp r0, #0xd beq _02229378 ldr r0, [r4, #0x30] bl FUN_0200C68C add r3, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 add r1, r4, #0 lsl r3, r3, #0x14 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _022293C4 ; =0x0000FFFF add r1, #0x94 str r0, [sp, #0x14] ldr r0, _022293C8 ; =0x000003EA lsr r3, r3, #0x10 str r0, [sp, #0x18] add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] ldr r1, [r1] bl MOD08_02218B20 add r1, r4, #0 add r1, #0xd4 str r0, [r1] _02229378: mov r0, #1 str r0, [r4, #0x28] _0222937C: add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0xf ble _022293BE add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #0xc beq _022293B8 cmp r0, #0xd beq _022293B8 add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] bl MOD08_02218AF8 cmp r0, #1 beq _022293BE add r4, #0xd4 ldr r0, [r4] bl MOD08_02218B08 _022293B8: add sp, #0x1c mov r0, #0 pop {r3, r4, pc} _022293BE: mov r0, #1 add sp, #0x1c pop {r3, r4, pc} .align 2, 0 _022293C4: .word 0x0000FFFF _022293C8: .word 0x000003EA _022293CC: .word 0x00000111 _022293D0: .word 0x000007E8 thumb_func_start MOD08_022293D4 MOD08_022293D4: ; 0x022293D4 push {r3, r4, lr} sub sp, #0x1c add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #3 bls _022293E2 b _022295CE _022293E2: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _022293EE: ; jump table .short _022293F6 - _022293EE - 2 ; case 0 .short _02229464 - _022293EE - 2 ; case 1 .short _0222955E - _022293EE - 2 ; case 2 .short _022295AE - _022293EE - 2 ; case 3 _022293F6: mov r0, #0xba ldrsh r0, [r4, r0] add r1, r4, #0 mov r2, #0xb8 str r0, [sp] mov r0, #0xbe ldrsh r0, [r4, r0] mov r3, #0xbc add r1, #0x6c str r0, [sp, #4] add r0, r4, #0 add r0, #0xc0 ldr r0, [r0] lsl r0, r0, #0x10 lsr r0, r0, #0x10 str r0, [sp, #8] add r0, r4, #0 add r0, #0xc8 ldr r0, [r0] lsl r0, r0, #0xc str r0, [sp, #0xc] add r0, r4, #0 ldrsh r2, [r4, r2] ldrsh r3, [r4, r3] add r0, #0x48 bl MOD08_02217F50 add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] add r0, r4, #0 add r0, #0xd4 str r1, [r0] add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_022280C4 cmp r0, #1 bne _0222954C bl FUN_0201B9EC mov r1, #0x14 bl _s32_div_f add r1, #0xa ldr r0, [r4, #0x30] lsl r1, r1, #0xd bl FUN_0200C8BC b _02229656 _02229464: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_022280C4 cmp r0, #1 bne _02229502 mov r1, #2 ldr r0, [r4, #0x30] lsl r1, r1, #0xc bl FUN_0200C8BC add r0, r4, #0 add r0, #0xc4 ldr r2, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 add r0, #0xa cmp r2, r0 ble _0222949E mov r1, #2 ldr r0, [r4, #0x30] lsl r1, r1, #0xc bl FUN_0200C8BC _0222949E: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_02228104 cmp r0, #1 bne _02229502 add r0, r4, #0 add r0, #0xc4 ldr r2, [r0] add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r0, r0, #1 add r0, #0xa cmp r2, r0 bne _02229502 ldr r0, [r4, #0x30] bl FUN_0200C68C add r3, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 add r1, r4, #0 lsl r3, r3, #0x14 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _0222965C ; =0x0000FFFF add r1, #0x94 str r0, [sp, #0x14] ldr r0, _02229660 ; =0x000003EA lsr r3, r3, #0x10 str r0, [sp, #0x18] add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] ldr r1, [r1] bl MOD08_02218B20 add r1, r4, #0 add r1, #0xd4 str r0, [r1] _02229502: add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #6 blt _0222953A cmp r0, #8 bgt _0222953A add r0, r4, #0 add r0, #0xc0 ldr r1, [r0] lsr r0, r1, #0x1f add r0, r1, r0 asr r2, r0, #1 add r0, r4, #0 add r0, #0xc4 ldr r1, [r0] cmp r1, r2 ble _0222953A add r0, r2, #5 cmp r1, r0 blt _0222954C _0222953A: add r0, r4, #0 add r1, r4, #0 ldr r2, [r4, #0x30] add r0, #0x48 add r1, #0x6c bl MOD08_02217FE4 cmp r0, #0 beq _0222954E _0222954C: b _02229656 _0222954E: add r0, r4, #0 mov r1, #0 bl MOD08_02229FFC ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02229656 _0222955E: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_02228104 cmp r0, #1 bne _02229592 add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] cmp r0, #0 beq _02229592 bl MOD08_02218AF8 cmp r0, #1 beq _02229656 add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] bl MOD08_02218B08 mov r0, #1 str r0, [r4, #0x28] add sp, #0x1c mov r0, #0 pop {r3, r4, pc} _02229592: add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #0xf blt _022295A6 mov r0, #1 str r0, [r4, #0x28] add sp, #0x1c mov r0, #0 pop {r3, r4, pc} _022295A6: ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02229656 _022295AE: ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C5C0 add r0, r4, #0 mov r1, #0 bl MOD08_0222A008 add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02229656 _022295CE: add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0xf bne _02229622 ldr r0, [r4, #0x30] mov r1, #2 bl FUN_0200C61C ldr r0, [r4, #0x30] bl FUN_0200C68C add r3, r0, #0 mov r0, #0x10 str r0, [sp] sub r0, #0x12 str r0, [sp, #4] mov r2, #2 add r1, r4, #0 lsl r3, r3, #0x14 str r2, [sp, #8] mov r0, #0 str r0, [sp, #0xc] mov r0, #0xe str r0, [sp, #0x10] ldr r0, _0222965C ; =0x0000FFFF add r1, #0x94 str r0, [sp, #0x14] ldr r0, _02229660 ; =0x000003EA lsr r3, r3, #0x10 str r0, [sp, #0x18] add r0, r4, #0 add r0, #0xb0 ldr r0, [r0] ldr r1, [r1] bl MOD08_02218B20 add r1, r4, #0 add r1, #0xd4 str r0, [r1] mov r0, #1 str r0, [r4, #0x28] _02229622: add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #0xf ble _02229656 add r0, r4, #0 add r0, #0xd4 ldr r0, [r0] bl MOD08_02218AF8 cmp r0, #1 beq _02229656 add r4, #0xd4 ldr r0, [r4] bl MOD08_02218B08 add sp, #0x1c mov r0, #0 pop {r3, r4, pc} _02229656: mov r0, #1 add sp, #0x1c pop {r3, r4, pc} .align 2, 0 _0222965C: .word 0x0000FFFF _02229660: .word 0x000003EA thumb_func_start MOD08_02229664 MOD08_02229664: ; 0x02229664 push {r3, r4, lr} sub sp, #0x14 add r4, r0, #0 ldr r1, [r4, #8] cmp r1, #7 bls _02229672 b _022297EA _02229672: add r1, r1, r1 add r1, pc ldrh r1, [r1, #6] lsl r1, r1, #0x10 asr r1, r1, #0x10 add pc, r1 _0222967E: ; jump table .short _0222968E - _0222967E - 2 ; case 0 .short _022296CC - _0222967E - 2 ; case 1 .short _022296FC - _0222967E - 2 ; case 2 .short _02229732 - _0222967E - 2 ; case 3 .short _02229742 - _0222967E - 2 ; case 4 .short _02229770 - _0222967E - 2 ; case 5 .short _0222979E - _0222967E - 2 ; case 6 .short _022297CC - _0222967E - 2 ; case 7 _0222968E: mov r1, #0 bl MOD08_0222A008 ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C5C0 add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #2 blt _022296E2 ldr r0, [r4, #0x30] mov r1, #0 bl FUN_0200C61C add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _022296CC: add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #2 bge _022296E4 _022296E2: b _022297F0 _022296E4: ldr r0, [r4, #0x30] mov r1, #2 bl FUN_0200C61C add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _022296FC: add r0, #0xa0 ldr r0, [r0] add r2, sp, #0 str r0, [sp, #4] add r0, r4, #0 add r0, #0x94 ldr r0, [r0] add r1, sp, #0 str r0, [sp, #8] mov r0, #0xff str r0, [sp, #0xc] mov r0, #1 str r0, [sp, #0x10] ldr r0, [r4, #0x30] add r2, #2 bl FUN_0200C7A0 add r0, sp, #0 bl MOD08_02228880 add r1, r4, #0 add r1, #0xd0 str r0, [r1] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _02229732: add r0, #0xd0 ldr r0, [r0] bl MOD08_022288E0 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _02229742: add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #6 blt _022297F0 ldr r0, [r4, #0x30] mov r1, #2 bl FUN_0200C61C add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _02229770: add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #6 blt _022297F0 ldr r0, [r4, #0x30] mov r1, #1 bl FUN_0200C61C add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _0222979E: add r0, #0xc4 ldr r0, [r0] add r1, r0, #1 add r0, r4, #0 add r0, #0xc4 str r1, [r0] add r0, r4, #0 add r0, #0xc4 ldr r0, [r0] cmp r0, #6 blt _022297F0 ldr r0, [r4, #0x30] mov r1, #0 bl FUN_0200C61C add r0, r4, #0 mov r1, #0 add r0, #0xc4 str r1, [r0] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _022297CC: add r0, #0xd0 ldr r0, [r0] bl MOD08_02228954 cmp r0, #0 bne _022297F0 add r0, r4, #0 add r0, #0xd0 ldr r0, [r0] bl MOD08_02228970 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _022297F0 _022297EA: add sp, #0x14 mov r0, #0 pop {r3, r4, pc} _022297F0: mov r0, #1 add sp, #0x14 pop {r3, r4, pc} .align 2, 0 thumb_func_start MOD08_022297F8 MOD08_022297F8: ; 0x022297F8 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #0 beq _02229808 cmp r0, #1 beq _0222983C b _0222986E _02229808: ldr r0, [r4, #0x10] cmp r0, #0 bne _0222981E ldr r1, _0222987C ; =0xFFFFE001 add r0, r4, #0 add r0, #0x34 lsr r2, r1, #0x13 mov r3, #0xa bl MOD08_02218008 b _0222982C _0222981E: add r0, r4, #0 ldr r1, _02229880 ; =0x00001FFF ldr r2, _0222987C ; =0xFFFFE001 add r0, #0x34 mov r3, #0xa bl MOD08_02218008 _0222982C: ldr r1, [r4, #0x10] mov r0, #1 eor r0, r1 str r0, [r4, #0x10] ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02229876 _0222983C: ldr r1, [r4, #0x34] ldr r0, [r4, #0x30] lsl r1, r1, #0x10 lsr r1, r1, #0x10 bl FUN_0200C898 add r0, r4, #0 add r0, #0x34 bl MOD08_02218058 cmp r0, #0 bne _02229876 ldr r0, [r4, #0xc] cmp r0, #1 blt _02229862 ldr r0, [r4, #8] add r0, r0, #1 str r0, [r4, #8] b _02229876 _02229862: add r0, r0, #1 str r0, [r4, #0xc] ldr r0, [r4, #8] sub r0, r0, #1 str r0, [r4, #8] b _02229876 _0222986E: mov r0, #0 add r4, #0xc4 str r0, [r4] pop {r4, pc} _02229876: mov r0, #1 pop {r4, pc} nop _0222987C: .word 0xFFFFE001 _02229880: .word 0x00001FFF thumb_func_start MOD08_02229884 MOD08_02229884: ; 0x02229884 push {r3, r4, lr} sub sp, #4 add r4, r0, #0 ldr r0, [r4, #8] cmp r0, #0xff bne _02229896 add sp, #4 mov r0, #0 pop {r3, r4, pc} _02229896: ldr r0, [r4, #0x30] cmp r0, #0 beq _022298BA add r1, sp, #0 add r1, #2 add r2, sp, #0 bl FUN_0200C7A0 add r1, sp, #0 mov r0, #2 ldrsh r2, [r1, r0] add r0, r4, #0 add r0, #0xb8 strh r2, [r0] mov r0, #0 ldrsh r0, [r1, r0] add r4, #0xba strh r0, [r4] _022298BA: mov r0, #1 add sp, #4 pop {r3, r4, pc} thumb_func_start MOD08_022298C0 MOD08_022298C0: ; 0x022298C0 push {r4, lr} add r4, r1, #0 ldr r0, [r4, #0x1c] cmp r0, #0 beq _02229912 add r0, r4, #0 add r0, #0xdc ldr r0, [r0] cmp r0, #0 ble _022298EA add r0, r4, #0 add r0, #0xdc ldr r0, [r0] sub r1, r0, #1 add r0, r4, #0 add r0, #0xdc str r1, [r0] ldr r0, [r4, #0x2c] bl FUN_0200BC1C pop {r4, pc} _022298EA: add r1, #0x98 ldr r1, [r1] add r0, r4, #0 lsl r2, r1, #2 ldr r1, _02229914 ; =0x0222D01C ldr r1, [r1, r2] blx r1 cmp r0, #0 bne _02229900 mov r0, #0 str r0, [r4, #0x1c] _02229900: ldr r0, [r4, #0x24] cmp r0, #1 bne _0222990C ldr r0, [r4, #0x30] bl FUN_0200C5A8 _0222990C: ldr r0, [r4, #0x2c] bl FUN_0200BC1C _02229912: pop {r4, pc} .align 2, 0 _02229914: .word 0x0222D01C thumb_func_start MOD08_02229918 MOD08_02229918: ; 0x02229918 push {r3, r4, r5, lr} add r5, r0, #0 ldr r0, [r5, #4] mov r1, #0xe0 bl FUN_02016998 mov r1, #0 mov r2, #0xe0 add r4, r0, #0 bl MI_CpuFill8 cmp r4, #0 bne _02229936 bl ErrorHandling _02229936: add r3, r4, #0 add r3, #0x90 mov r2, #5 _0222993C: ldmia r5!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _0222993C mov r0, #0 str r0, [r4, #8] str r0, [r4, #0x10] str r0, [r4, #0xc] str r0, [r4, #0x14] str r0, [r4, #0x18] str r0, [r4] str r0, [r4, #4] add r0, r4, #0 add r0, #0xac ldr r0, [r0] bl FUN_0200BB34 str r0, [r4, #0x2c] add r0, r4, #0 mov r1, #0 add r0, #0xdc str r1, [r0] add r0, r4, #0 add r0, #0x90 ldr r0, [r0] bl MOD08_02228140 str r0, [r4, #0x24] add r0, r4, #0 mov r2, #0 add r0, #0xc4 str r2, [r0] add r0, r4, #0 mov r1, #0x10 add r0, #0x20 strb r1, [r0] add r0, r4, #0 add r0, #0x21 strb r2, [r0] bl MOD08_0221268C bl FUN_0201B9EC lsr r1, r0, #0x1f lsl r0, r0, #0x1f sub r0, r0, r1 mov r2, #0x1f ror r0, r2 add r0, r1, r0 beq _022299AA add r0, r4, #0 mov r1, #1 add r0, #0x22 strb r1, [r0] b _022299B2 _022299AA: add r0, r4, #0 sub r2, #0x20 add r0, #0x22 strb r2, [r0] _022299B2: add r0, r4, #0 bl MOD08_02229E40 add r0, r4, #0 bl MOD08_02229F64 add r0, r4, #0 bl MOD08_02229A90 mov r0, #1 str r0, [r4, #0x1c] mov r0, #0 str r0, [r4, #0x28] mov r2, #0xfa ldr r0, _022299E4 ; =MOD08_022298C0 add r1, r4, #0 lsl r2, r2, #2 bl FUN_0200CA44 add r1, r4, #0 add r1, #0xcc str r0, [r1] add r0, r4, #0 pop {r3, r4, r5, pc} nop _022299E4: .word MOD08_022298C0 thumb_func_start MOD08_022299E8 MOD08_022299E8: ; 0x022299E8 push {r4, lr} add r4, r0, #0 bne _022299F2 bl ErrorHandling _022299F2: ldr r0, [r4, #0x1c] cmp r0, #0 beq _022299FC mov r0, #1 pop {r4, pc} _022299FC: mov r0, #0 pop {r4, pc} thumb_func_start MOD08_02229A00 MOD08_02229A00: ; 0x02229A00 push {r4, lr} add r4, r0, #0 bne _02229A0A bl ErrorHandling _02229A0A: ldr r0, [r4, #0x28] cmp r0, #0 beq _02229A14 mov r0, #1 pop {r4, pc} _02229A14: mov r0, #0 pop {r4, pc} thumb_func_start MOD08_02229A18 MOD08_02229A18: ; 0x02229A18 str r1, [r0, #0x14] bx lr thumb_func_start MOD08_02229A1C MOD08_02229A1C: ; 0x02229A1C ldr r0, [r0, #0x14] cmp r0, r1 bne _02229A26 mov r0, #1 bx lr _02229A26: mov r0, #0 bx lr .align 2, 0 thumb_func_start MOD08_02229A2C MOD08_02229A2C: ; 0x02229A2C push {r4, lr} add r4, r0, #0 bne _02229A36 bl ErrorHandling _02229A36: add r0, r4, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r4, #0x2c] bl FUN_0200C398 ldr r0, [r4, #0x30] bl FUN_0200C3DC add r0, r4, #0 add r0, #0xcc ldr r0, [r0] bl FUN_0200CAB4 add r0, r4, #0 bl FUN_02016A18 pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02229A5C MOD08_02229A5C: ; 0x02229A5C add r2, r0, #0 add r0, #0x98 str r1, [r0] mov r0, #0 str r0, [r2, #8] str r0, [r2, #0xc] str r0, [r2, #0x10] mov r0, #1 add r1, r2, #0 str r0, [r2, #0x1c] ldr r0, [r2, #0x30] ldr r3, _02229A7C ; =0x0200C7A1 add r1, #0xb8 add r2, #0xba bx r3 nop _02229A7C: .word 0x0200C7A1 thumb_func_start MOD08_02229A80 MOD08_02229A80: ; 0x02229A80 push {r4, lr} add r4, r0, #0 bne _02229A8A bl ErrorHandling _02229A8A: add r4, #0x98 ldr r0, [r4] pop {r4, pc} thumb_func_start MOD08_02229A90 MOD08_02229A90: ; 0x02229A90 push {r4, lr} add r4, r0, #0 add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x30] add r1, #0xb8 add r2, #0xba bl FUN_0200C7A0 add r0, r4, #0 add r0, #0x90 ldr r0, [r0] cmp r0, #0x11 bls _02229AAE b _02229CF6 _02229AAE: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02229ABA: ; jump table .short _02229ADE - _02229ABA - 2 ; case 0 .short _02229ADE - _02229ABA - 2 ; case 1 .short _02229ADE - _02229ABA - 2 ; case 2 .short _02229ADE - _02229ABA - 2 ; case 3 .short _02229ADE - _02229ABA - 2 ; case 4 .short _02229ADE - _02229ABA - 2 ; case 5 .short _02229AF6 - _02229ABA - 2 ; case 6 .short _02229B1C - _02229ABA - 2 ; case 7 .short _02229B50 - _02229ABA - 2 ; case 8 .short _02229B76 - _02229ABA - 2 ; case 9 .short _02229B9C - _02229ABA - 2 ; case 10 .short _02229BC2 - _02229ABA - 2 ; case 11 .short _02229BE8 - _02229ABA - 2 ; case 12 .short _02229C14 - _02229ABA - 2 ; case 13 .short _02229C4C - _02229ABA - 2 ; case 14 .short _02229C72 - _02229ABA - 2 ; case 15 .short _02229C9E - _02229ABA - 2 ; case 16 .short _02229CCA - _02229ABA - 2 ; case 17 _02229ADE: add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x30] add r1, #0xbc add r2, #0xbe bl FUN_0200C7A0 add r0, r4, #0 mov r1, #0 add r0, #0xc8 str r1, [r0] b _02229CF6 _02229AF6: mov r0, #0 add r2, r4, #0 add r3, r4, #0 add r1, r0, #0 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x30 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229B1C: add r1, r4, #0 add r2, r4, #0 ldr r0, [r4, #0x30] add r1, #0xb8 add r2, #0xba bl FUN_0200C7A0 add r2, r4, #0 add r3, r4, #0 mov r0, #1 mov r1, #4 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x30 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229B50: add r2, r4, #0 add r3, r4, #0 mov r0, #1 mov r1, #2 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x30 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229B76: add r2, r4, #0 add r3, r4, #0 mov r0, #0 mov r1, #1 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x30 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229B9C: add r2, r4, #0 add r3, r4, #0 mov r0, #1 mov r1, #3 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x30 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229BC2: add r2, r4, #0 add r3, r4, #0 mov r0, #1 mov r1, #5 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x30 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229BE8: add r2, r4, #0 add r3, r4, #0 mov r0, #0 mov r1, #1 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x10 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x10 strh r1, [r0] mov r0, #0xc add r4, #0xc0 str r0, [r4] pop {r4, pc} _02229C14: add r2, r4, #0 add r3, r4, #0 mov r0, #0 mov r1, #1 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x20 add r0, #0xc8 str r1, [r0] mov r0, #0xbc ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbc sub r1, #0x14 strh r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x26 strh r1, [r0] mov r0, #0x10 add r4, #0xc0 str r0, [r4] pop {r4, pc} _02229C4C: add r0, r4, #0 mov r1, #0x80 add r0, #0xbc strh r1, [r0] add r0, r4, #0 mov r1, #0x40 add r0, #0xbe strh r1, [r0] add r0, r4, #0 mov r1, #0x20 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #0x20 strh r1, [r0] b _02229CF6 _02229C72: add r2, r4, #0 add r3, r4, #0 mov r0, #0 mov r1, #1 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x40 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #8 strh r1, [r0] mov r0, #0x10 add r4, #0xc0 str r0, [r4] pop {r4, pc} _02229C9E: add r2, r4, #0 add r3, r4, #0 mov r0, #1 mov r1, #3 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x40 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #8 strh r1, [r0] mov r0, #0x10 add r4, #0xc0 str r0, [r4] pop {r4, pc} _02229CCA: add r2, r4, #0 add r3, r4, #0 mov r0, #1 mov r1, #5 add r2, #0xbc add r3, #0xbe bl MOD08_02217B1C add r0, r4, #0 mov r1, #0x40 add r0, #0xc8 str r1, [r0] mov r0, #0xbe ldrsh r1, [r4, r0] add r0, r4, #0 add r0, #0xbe add r1, #8 strh r1, [r0] mov r0, #0x10 add r4, #0xc0 str r0, [r4] pop {r4, pc} _02229CF6: mov r0, #0x14 add r4, #0xc0 str r0, [r4] pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02229D00 MOD08_02229D00: ; 0x02229D00 push {r4, lr} add r0, #0x90 ldr r0, [r0] add r3, r1, #0 add r4, r2, #0 cmp r0, #0x11 bls _02229D10 b _02229E3C _02229D10: add r0, r0, r0 add r0, pc ldrh r0, [r0, #6] lsl r0, r0, #0x10 asr r0, r0, #0x10 add pc, r0 _02229D1C: ; jump table .short _02229D40 - _02229D1C - 2 ; case 0 .short _02229D56 - _02229D1C - 2 ; case 1 .short _02229D6C - _02229D1C - 2 ; case 2 .short _02229D98 - _02229D1C - 2 ; case 3 .short _02229D82 - _02229D1C - 2 ; case 4 .short _02229DAE - _02229D1C - 2 ; case 5 .short _02229DC4 - _02229D1C - 2 ; case 6 .short _02229DCE - _02229D1C - 2 ; case 7 .short _02229DD8 - _02229D1C - 2 ; case 8 .short _02229DE2 - _02229D1C - 2 ; case 9 .short _02229DF0 - _02229D1C - 2 ; case 10 .short _02229DFE - _02229D1C - 2 ; case 11 .short _02229E0C - _02229D1C - 2 ; case 12 .short _02229E1A - _02229D1C - 2 ; case 13 .short _02229E28 - _02229D1C - 2 ; case 14 .short _02229E32 - _02229D1C - 2 ; case 15 .short _02229E32 - _02229D1C - 2 ; case 16 .short _02229E32 - _02229D1C - 2 ; case 17 _02229D40: mov r0, #0 add r2, r3, #0 add r1, r0, #0 add r3, r4, #0 bl MOD08_02217B1C mov r0, #0 ldrsh r0, [r4, r0] add r0, #0x20 strh r0, [r4] pop {r4, pc} _02229D56: add r2, r3, #0 mov r0, #0 mov r1, #1 add r3, r4, #0 bl MOD08_02217B1C mov r0, #0 ldrsh r0, [r4, r0] add r0, #0x26 strh r0, [r4] pop {r4, pc} _02229D6C: add r2, r3, #0 mov r0, #1 mov r1, #2 add r3, r4, #0 bl MOD08_02217B1C mov r0, #0 ldrsh r0, [r4, r0] add r0, #0x20 strh r0, [r4] pop {r4, pc} _02229D82: add r2, r3, #0 mov r0, #1 mov r1, #4 add r3, r4, #0 bl MOD08_02217B1C mov r0, #0 ldrsh r0, [r4, r0] add r0, #0x20 strh r0, [r4] pop {r4, pc} _02229D98: add r2, r3, #0 mov r0, #1 mov r1, #3 add r3, r4, #0 bl MOD08_02217B1C mov r0, #0 ldrsh r0, [r4, r0] add r0, #0x26 strh r0, [r4] pop {r4, pc} _02229DAE: add r2, r3, #0 mov r0, #1 mov r1, #5 add r3, r4, #0 bl MOD08_02217B1C mov r0, #0 ldrsh r0, [r4, r0] add r0, #0x26 strh r0, [r4] pop {r4, pc} _02229DC4: mov r0, #0xa strh r0, [r3] mov r0, #0x64 strh r0, [r4] pop {r4, pc} _02229DCE: mov r0, #0xa strh r0, [r3] mov r0, #0x64 strh r0, [r4] pop {r4, pc} _02229DD8: mov r0, #0xa strh r0, [r3] mov r0, #0x64 strh r0, [r4] pop {r4, pc} _02229DE2: mov r0, #0 add r2, r3, #0 add r1, r0, #0 add r3, r4, #0 bl MOD08_02217B1C pop {r4, pc} _02229DF0: mov r0, #0 add r2, r3, #0 add r1, r0, #0 add r3, r4, #0 bl MOD08_02217B1C pop {r4, pc} _02229DFE: mov r0, #0 add r2, r3, #0 add r1, r0, #0 add r3, r4, #0 bl MOD08_02217B1C pop {r4, pc} _02229E0C: mov r0, #0 add r2, r3, #0 add r1, r0, #0 add r3, r4, #0 bl MOD08_02217B1C pop {r4, pc} _02229E1A: mov r0, #0 add r2, r3, #0 add r1, r0, #0 add r3, r4, #0 bl MOD08_02217B1C pop {r4, pc} _02229E28: mov r0, #0xe6 strh r0, [r3] mov r0, #0x20 strh r0, [r4] pop {r4, pc} _02229E32: mov r0, #0x1d mvn r0, r0 strh r0, [r3] mov r0, #0xa0 strh r0, [r4] _02229E3C: pop {r4, pc} .align 2, 0 thumb_func_start MOD08_02229E40 MOD08_02229E40: ; 0x02229E40 push {r4, r5, r6, r7, lr} sub sp, #0x34 add r5, r0, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r5, #0x2c] mov r2, #0xa bl FUN_0200BBF0 add r0, r5, #0 add r0, #0xa8 ldr r0, [r0] cmp r0, #0 bne _02229E70 add r0, r5, #0 add r0, #0xac ldr r0, [r0] bl FUN_0200BB68 mov r2, #0x11 mov r1, #0 lsl r2, r2, #0x10 bl FUN_02008D24 _02229E70: mov r1, #0 add r2, sp, #0x1c mov r0, #0xa _02229E76: add r1, r1, #1 stmia r2!, {r0} cmp r1, #6 blt _02229E76 mov r0, #0 str r0, [sp, #0x2c] str r0, [sp, #0x30] add r0, r5, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r5, #0x2c] add r2, sp, #0x1c bl FUN_0200BF60 add r0, r5, #0 add r0, #0xa0 ldr r0, [r0] mov r1, #0 bl MOD08_022281DC add r6, r0, #0 add r0, r5, #0 add r0, #0xa0 ldr r0, [r0] mov r1, #1 bl MOD08_022281DC add r4, r0, #0 add r0, r5, #0 add r0, #0xa0 ldr r0, [r0] mov r1, #2 bl MOD08_022281DC add r7, r0, #0 add r0, r5, #0 add r0, #0xa0 ldr r0, [r0] mov r1, #3 bl MOD08_022281DC str r0, [sp, #0x18] mov r0, #1 str r0, [sp] str r0, [sp, #4] add r0, r5, #0 add r0, #0x9c ldr r1, [r0] ldr r0, _02229F60 ; =0x00001770 mov r2, #0x1b add r0, r1, r0 str r0, [sp, #8] add r0, r5, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r5, #0x2c] add r3, r6, #0 bl FUN_0200C00C mov r0, #0x1b str r0, [sp] add r2, r5, #0 str r4, [sp, #4] mov r0, #0 str r0, [sp, #8] mov r0, #1 str r0, [sp, #0xc] str r0, [sp, #0x10] add r0, r5, #0 add r0, #0x9c ldr r1, [r0] ldr r0, _02229F60 ; =0x00001770 add r2, #0xac add r0, r1, r0 str r0, [sp, #0x14] add r0, r5, #0 add r0, #0xb0 ldr r0, [r0] ldr r2, [r2] ldr r3, [r5, #0x2c] mov r1, #2 bl FUN_0200C0DC mov r0, #1 str r0, [sp] add r0, r5, #0 add r0, #0x9c ldr r1, [r0] ldr r0, _02229F60 ; =0x00001770 mov r2, #0x1b add r0, r1, r0 str r0, [sp, #4] add r0, r5, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r5, #0x2c] add r3, r7, #0 bl FUN_0200C124 mov r0, #1 str r0, [sp] add r0, r5, #0 add r0, #0x9c ldr r1, [r0] ldr r0, _02229F60 ; =0x00001770 ldr r3, [sp, #0x18] add r0, r1, r0 str r0, [sp, #4] add r0, r5, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r5, #0x2c] mov r2, #0x1b bl FUN_0200C13C add sp, #0x34 pop {r4, r5, r6, r7, pc} .align 2, 0 _02229F60: .word 0x00001770 thumb_func_start MOD08_02229F64 MOD08_02229F64: ; 0x02229F64 push {r3, r4, lr} sub sp, #0x34 add r2, sp, #0 add r1, sp, #0 add r2, #2 add r4, r0, #0 bl MOD08_02229D00 mov r0, #0 add r1, sp, #0 strh r0, [r1, #4] strh r0, [r1, #6] mov r1, #1 str r1, [sp, #0x10] add r1, r4, #0 str r0, [sp, #8] str r0, [sp, #0xc] add r1, #0xa4 ldr r1, [r1] ldr r2, _02229FE0 ; =0x00001770 str r1, [sp, #0x2c] str r0, [sp, #0x30] add r3, sp, #0 _02229F92: add r1, r4, #0 add r1, #0x9c ldr r1, [r1] add r0, r0, #1 add r1, r1, r2 str r1, [r3, #0x14] add r3, r3, #4 cmp r0, #6 blt _02229F92 add r0, r4, #0 add r0, #0xac ldr r0, [r0] ldr r1, [r4, #0x2c] add r2, sp, #0 bl FUN_0200C154 str r0, [r4, #0x30] mov r1, #1 bl FUN_0200C644 ldr r0, [r4, #0x30] mov r1, #2 bl FUN_0200C840 ldr r0, [r4, #0x30] mov r1, #0 bl FUN_0200C61C ldr r0, [r4, #0x30] mov r1, #0 bl FUN_0200C5C0 ldr r0, [r4, #0x30] bl FUN_0200C5A8 bl MOD08_0221268C add sp, #0x34 pop {r3, r4, pc} .align 2, 0 _02229FE0: .word 0x00001770 thumb_func_start MOD08_02229FE4 MOD08_02229FE4: ; 0x02229FE4 ldr r3, _02229FEC ; =0x0200C645 ldr r0, [r0, #0x30] bx r3 nop _02229FEC: .word 0x0200C645 thumb_func_start MOD08_02229FF0 MOD08_02229FF0: ; 0x02229FF0 ldr r3, _02229FF8 ; =0x0200C715 ldr r0, [r0, #0x30] bx r3 nop _02229FF8: .word 0x0200C715 thumb_func_start MOD08_02229FFC MOD08_02229FFC: ; 0x02229FFC ldr r3, _0222A004 ; =0x0200C899 ldr r0, [r0, #0x30] bx r3 nop _0222A004: .word 0x0200C899 thumb_func_start MOD08_0222A008 MOD08_0222A008: ; 0x0222A008 str r1, [r0, #0x24] bx lr thumb_func_start MOD08_0222A00C MOD08_0222A00C: ; 0x0222A00C ldr r3, _0222A014 ; =0x0200C6C5 ldr r0, [r0, #0x30] bx r3 nop _0222A014: .word 0x0200C6C5 thumb_func_start MOD08_0222A018 MOD08_0222A018: ; 0x0222A018 ldr r3, _0222A020 ; =0x0200C6B1 ldr r0, [r0, #0x30] bx r3 nop _0222A020: .word 0x0200C6B1 thumb_func_start MOD08_0222A024 MOD08_0222A024: ; 0x0222A024 add r0, #0xdc str r1, [r0] bx lr .align 2, 0 thumb_func_start MOD08_0222A02C MOD08_0222A02C: ; 0x0222A02C push {r3, lr} sub r1, r1, r3 neg r1, r1 sub r0, r0, r2 lsl r1, r1, #0x10 lsl r0, r0, #0x10 asr r1, r1, #0x10 add r2, r1, #0 asr r0, r0, #0x10 mul r2, r1 add r1, r0, #0 mul r1, r0 add r0, r2, r1 lsl r0, r0, #0xc bl FX_Sqrt asr r1, r0, #0xb lsr r1, r1, #0x14 add r1, r0, r1 asr r0, r1, #0xc pop {r3, pc} .align 2, 0 thumb_func_start MOD08_0222A058 MOD08_0222A058: ; 0x0222A058 push {r3, r4, r5, lr} add r5, r0, #0 bl FUN_02029CE4 add r4, r0, #0 add r0, r5, #0 bl FUN_02029CE8 add r1, r0, #0 add r0, r4, #0 mov r2, #0xbe mov r3, #0x46 bl MOD08_0222A02C pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0222A078 MOD08_0222A078: ; 0x0222A078 push {r4, lr} sub sp, #8 ldr r3, _0222A0D0 ; =0x0222D4D8 add r4, r0, #0 add r2, sp, #0 mov r1, #7 _0222A084: ldrb r0, [r3] add r3, r3, #1 strb r0, [r2] add r2, r2, #1 sub r1, r1, #1 bne _0222A084 add r0, r4, #0 bl FUN_02029CE0 lsl r0, r0, #0x18 lsr r0, r0, #0x18 bl FUN_02086018 cmp r0, #0 bne _0222A0C6 add r0, r4, #0 bl MOD08_0222A058 cmp r0, #0x38 blt _0222A0B0 mov r0, #3 b _0222A0BE _0222A0B0: add r0, r0, #1 mov r1, #0x14 bl _s32_div_f cmp r0, #3 blt _0222A0BE mov r0, #3 _0222A0BE: add r1, sp, #0 add sp, #8 ldrb r0, [r1, r0] pop {r4, pc} _0222A0C6: add r0, sp, #0 ldrb r0, [r0, #1] add sp, #8 pop {r4, pc} nop _0222A0D0: .word 0x0222D4D8 thumb_func_start MOD08_0222A0D4 MOD08_0222A0D4: ; 0x0222A0D4 push {r4, r5, r6, lr} add r5, r1, #0 mov r1, #0x48 add r6, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _0222A0EC bl ErrorHandling mov r0, #0 pop {r4, r5, r6, pc} _0222A0EC: bl MOD08_0221268C str r6, [r4] cmp r5, #0 beq _0222A0FA ldr r0, [r5] str r0, [r4, #4] _0222A0FA: mov r1, #0 add r2, r4, #0 add r0, r1, #0 _0222A100: add r1, r1, #1 str r0, [r2, #8] add r2, r2, #4 cmp r1, #0x10 blt _0222A100 add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0222A110 MOD08_0222A110: ; 0x0222A110 push {r4, r5, r6, lr} mov r4, #0 add r5, r4, #0 add r3, r0, #0 _0222A118: ldr r2, [r3, #8] cmp r2, #0 bne _0222A138 add r4, r0, #0 ldr r0, [r0] add r4, #8 lsl r6, r5, #2 bl MOD08_0222A1A0 str r0, [r4, r6] ldr r0, [r4, r6] mov r1, #0 str r1, [r0, #0x18] ldr r4, [r4, r6] str r5, [r4] b _0222A140 _0222A138: add r5, r5, #1 add r3, r3, #4 cmp r5, #0x10 blt _0222A118 _0222A140: cmp r4, #0 bne _0222A148 bl ErrorHandling _0222A148: add r0, r4, #0 pop {r4, r5, r6, pc} thumb_func_start MOD08_0222A14C MOD08_0222A14C: ; 0x0222A14C push {r4, r5, r6, lr} add r6, r0, #0 mov r4, #0 add r5, r6, #0 _0222A154: ldr r0, [r5, #8] cmp r0, #0 beq _0222A15E bl FUN_02016A18 _0222A15E: add r4, r4, #1 add r5, r5, #4 cmp r4, #0x10 blt _0222A154 add r0, r6, #0 bl FUN_02016A18 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0222A170 MOD08_0222A170: ; 0x0222A170 push {r3, r4, r5, lr} add r5, r0, #0 mov r4, #0 _0222A176: ldr r0, [r5, #8] cmp r0, #0 beq _0222A194 ldr r0, [r0, #0x10] bl MOD08_02215B40 ldr r1, [r5, #8] ldr r0, [r1, #0x20] cmp r0, #0 beq _0222A194 ldr r0, [r1, #0x18] cmp r0, #0 beq _0222A194 bl FUN_0200CAB4 _0222A194: add r4, r4, #1 add r5, r5, #4 cmp r4, #0x10 blt _0222A176 pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0222A1A0 MOD08_0222A1A0: ; 0x0222A1A0 push {r4, r5, r6, lr} add r6, r1, #0 mov r1, #0x24 add r5, r0, #0 bl FUN_02016998 add r4, r0, #0 bne _0222A1B8 bl ErrorHandling mov r0, #0 pop {r4, r5, r6, pc} _0222A1B8: str r5, [r4, #4] ldr r1, [r6] ldr r0, [r6, #4] str r1, [r4, #8] str r0, [r4, #0xc] ldr r0, [r4, #8] bl MOD08_0222A260 str r0, [r4, #0x1c] ldr r0, [r4, #4] ldr r1, [r4, #8] mov r2, #1 bl MOD08_02215AA4 str r0, [r4, #0x10] add r0, r4, #0 pop {r4, r5, r6, pc} .align 2, 0 thumb_func_start MOD08_0222A1DC MOD08_0222A1DC: ; 0x0222A1DC push {r4, lr} add r4, r0, #0 mov r1, #1 str r1, [r4, #0x20] ldr r1, _0222A1FC ; =MOD08_0222A258 bl MOD08_0222A22C mov r2, #0xfa ldr r0, _0222A200 ; =MOD08_0222A208 add r1, r4, #0 lsl r2, r2, #2 bl FUN_0200CA44 str r0, [r4, #0x18] pop {r4, pc} nop _0222A1FC: .word MOD08_0222A258 _0222A200: .word MOD08_0222A208 thumb_func_start MOD08_0222A204 MOD08_0222A204: ; 0x0222A204 ldr r0, [r0, #0x20] bx lr thumb_func_start MOD08_0222A208 MOD08_0222A208: ; 0x0222A208 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 ldr r0, [r4, #0x10] bl FUN_020133C8 cmp r0, #0 bne _0222A228 mov r0, #0 str r0, [r4, #0x20] ldr r0, [r4, #0x10] bl MOD08_02215B40 add r0, r5, #0 bl FUN_0200CAB4 _0222A228: pop {r3, r4, r5, pc} .align 2, 0 thumb_func_start MOD08_0222A22C MOD08_0222A22C: ; 0x0222A22C push {r4, r5, r6, lr} add r5, r0, #0 ldr r0, [r5, #0x1c] add r6, r1, #0 mov r4, #0 cmp r0, #0 ble _0222A24E _0222A23A: ldr r0, [r5, #0x10] add r1, r4, #0 add r2, r6, #0 add r3, r5, #0 bl FUN_020133AC ldr r0, [r5, #0x1c] add r4, r4, #1 cmp r4, r0 blt _0222A23A _0222A24E: ldr r0, [r5, #0x10] ldr r1, [r5, #0xc] bl FUN_02013440 pop {r4, r5, r6, pc} thumb_func_start MOD08_0222A258 MOD08_0222A258: ; 0x0222A258 ldr r3, _0222A25C ; =0x0201341D bx r3 .align 2, 0 _0222A25C: .word 0x0201341D thumb_func_start MOD08_0222A260 MOD08_0222A260: ; 0x0222A260 push {r3, r4, r5, lr} sub sp, #0x58 ldr r4, _0222A290 ; =0x0222D4E0 add r5, r0, #0 add r3, sp, #0 mov r2, #0xb _0222A26C: ldmia r4!, {r0, r1} stmia r3!, {r0, r1} sub r2, r2, #1 bne _0222A26C sub r0, r5, #5 cmp r0, #0x16 blo _0222A284 bl ErrorHandling add sp, #0x58 mov r0, #0 pop {r3, r4, r5, pc} _0222A284: lsl r1, r0, #2 add r0, sp, #0 ldr r0, [r0, r1] add sp, #0x58 pop {r3, r4, r5, pc} nop _0222A290: .word 0x0222D4E0 thumb_func_start MOD08_0222A294 MOD08_0222A294: ; 0x0222A294 push {r3, lr} add r3, r1, #0 ldr r1, [r0] mov r2, #0 bl MOD08_0222A2B4 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_0222A2A4 MOD08_0222A2A4: ; 0x0222A2A4 push {r3, lr} add r3, r1, #0 ldr r1, [r0, #4] mov r2, #1 bl MOD08_0222A2B4 pop {r3, pc} .align 2, 0 thumb_func_start MOD08_0222A2B4 MOD08_0222A2B4: ; 0x0222A2B4 push {r3, r4, r5, r6, r7, lr} sub sp, #0x38 add r5, r0, #0 ldr r0, [r5] add r4, r1, #0 lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] add r7, r2, #0 str r3, [sp, #0x10] bl FUN_020080E0 ldr r0, [r5, #4] lsl r1, r0, #1 add r1, r5, r1 ldrh r6, [r1, #0x28] add r1, r5, r0 add r1, #0x30 ldrb r1, [r1] add r2, r5, r0 add r2, #0x38 str r1, [sp, #0x1c] add r1, r5, r0 lsl r0, r0, #2 ldrb r2, [r2] add r0, r5, r0 add r1, #0x34 ldr r0, [r0, #0x3c] ldrb r1, [r1] str r2, [sp, #0x18] str r0, [sp, #0x14] cmp r7, #0 beq _0222A30A add r0, r5, r4 add r0, #0x4c ldrb r2, [r0] mov r0, #1 tst r0, r2 beq _0222A306 mov r4, #0 b _0222A31C _0222A306: mov r4, #2 b _0222A31C _0222A30A: add r0, r5, r4 add r0, #0x4c ldrb r2, [r0] mov r0, #1 tst r0, r2 beq _0222A31A mov r4, #2 b _0222A31C _0222A31A: mov r4, #0 _0222A31C: lsl r0, r1, #0x18 lsr r0, r0, #0x18 str r0, [sp] ldr r0, [sp, #0x18] ldr r2, [sp, #0x1c] lsl r0, r0, #0x18 lsr r0, r0, #0x18 str r0, [sp, #4] ldr r0, [sp, #0x14] lsl r1, r6, #0x10 lsl r2, r2, #0x18 lsl r3, r4, #0x18 str r0, [sp, #8] add r0, sp, #0x28 lsr r1, r1, #0x10 lsr r2, r2, #0x18 lsr r3, r3, #0x18 bl FUN_02068C00 ldr r0, [r5] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_020081C0 add r7, r0, #0 add r3, sp, #0x28 add r2, r7, #0 ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r5] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_020080D0 ldr r0, [sp, #0x14] ldr r2, [sp, #0x10] str r0, [sp] mov r0, #0 str r0, [sp, #4] str r4, [sp, #8] ldrh r0, [r7, #6] str r0, [sp, #0xc] ldr r3, [r5] ldrh r0, [r7] lsl r3, r3, #2 add r3, r5, r3 ldr r3, [r3, #8] ldrh r1, [r7, #2] ldr r3, [r3] bl FUN_02012560 ldr r1, [r5] ldr r3, [sp, #0x18] lsl r1, r1, #2 add r1, r5, r1 lsl r2, r4, #0x18 lsl r3, r3, #0x18 ldrh r0, [r7] ldr r1, [r1, #8] lsr r2, r2, #0x18 str r0, [r1, #4] ldr r1, [r5] ldrh r0, [r7, #4] lsl r1, r1, #2 add r1, r5, r1 ldr r1, [r1, #8] lsr r3, r3, #0x18 str r0, [r1, #8] ldr r0, [sp, #0x14] ldr r1, [sp, #0x1c] str r0, [sp] lsl r0, r6, #0x10 lsl r1, r1, #0x18 lsr r0, r0, #0x10 lsr r1, r1, #0x18 bl FUN_02068E88 ldr r1, [r5] lsl r1, r1, #2 add r1, r5, r1 ldr r1, [r1, #8] str r0, [r1, #0xc] ldr r0, [r5] lsl r1, r0, #2 add r1, r5, r1 ldr r1, [r1, #8] add r0, r5, r0 ldr r1, [r1, #0xc] add r0, #0x4c lsl r1, r1, #0x18 asr r7, r1, #0x18 ldrb r0, [r0] mov r1, #1 bl MOD08_0222A6A4 str r0, [sp, #0x20] ldr r0, [r5] ldr r2, [sp, #0x20] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] mov r1, #1 add r2, r2, r7 bl FUN_02007558 cmp r4, #2 bne _0222A48E mov r0, #1 str r0, [sp] add r0, sp, #0x24 add r0, #2 mov r1, #0x8a mov r2, #0 add r3, r6, #0 bl FUN_02006548 mov r0, #1 str r0, [sp] add r0, sp, #0x24 add r0, #1 mov r1, #0x90 mov r2, #0 add r3, r6, #0 bl FUN_02006548 mov r0, #1 str r0, [sp] add r0, sp, #0x24 mov r1, #0x8e mov r2, #0 add r3, r6, #0 bl FUN_02006548 ldr r0, [r5] add r2, sp, #0x24 lsl r0, r0, #2 add r0, r5, r0 ldrb r2, [r2] ldr r0, [r0, #0x18] mov r1, #0x2e bl FUN_02007558 ldr r0, [r5] ldr r2, [sp, #0x20] lsl r0, r0, #2 add r0, r5, r0 add r2, #0x24 ldr r0, [r0, #0x18] mov r1, #0x14 str r2, [sp, #0x20] bl FUN_02007558 ldr r0, [r5] add r3, sp, #0x24 lsl r0, r0, #2 mov r2, #1 add r0, r5, r0 ldrsb r2, [r3, r2] ldr r0, [r0, #0x18] mov r1, #0x15 bl FUN_02007558 ldr r0, [r5] mov r2, #0x24 lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] mov r1, #0x16 sub r2, r2, r7 bl FUN_02007558 ldr r0, [r5] add r3, sp, #0x24 lsl r0, r0, #2 mov r2, #2 add r0, r5, r0 ldrsb r2, [r3, r2] ldr r0, [r0, #0x18] mov r1, #0x29 bl FUN_02007558 _0222A48E: add sp, #0x38 pop {r3, r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0222A494 MOD08_0222A494: ; 0x0222A494 push {r3, r4, r5, r6, r7, lr} sub sp, #0x20 add r5, r0, #0 ldr r0, [r5] str r1, [sp, #0x10] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_0200813C ldr r0, [r5] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_020081C0 add r4, r0, #0 ldr r0, [r5] lsl r1, r0, #1 add r1, r5, r1 ldrh r1, [r1, #0x28] lsl r3, r0, #2 str r1, [sp, #0x1c] add r1, r5, r0 add r1, #0x30 ldrb r1, [r1] str r1, [sp, #0x18] add r1, r5, r0 add r1, #0x38 ldrb r1, [r1] add r0, r5, r0 add r0, #0x4c str r1, [sp, #0x14] add r1, r5, r3 ldr r7, [r1, #0x3c] ldrb r1, [r0] mov r0, #1 tst r0, r1 beq _0222A4E6 mov r6, #2 b _0222A4E8 _0222A4E6: mov r6, #0 _0222A4E8: str r7, [sp] mov r0, #0 str r0, [sp, #4] str r6, [sp, #8] ldrh r0, [r4, #6] add r3, r5, r3 ldr r2, [sp, #0x10] str r0, [sp, #0xc] ldr r3, [r3, #8] ldrh r0, [r4] ldrh r1, [r4, #2] ldr r3, [r3] bl FUN_02012560 ldr r1, [r5] ldrh r0, [r4] lsl r1, r1, #2 add r1, r5, r1 ldr r1, [r1, #8] ldr r3, [sp, #0x14] str r0, [r1, #4] ldr r1, [r5] lsl r2, r6, #0x18 lsl r1, r1, #2 add r1, r5, r1 lsl r3, r3, #0x18 ldrh r0, [r4, #4] ldr r1, [r1, #8] lsr r2, r2, #0x18 str r0, [r1, #8] ldr r0, [sp, #0x1c] ldr r1, [sp, #0x18] lsl r0, r0, #0x10 lsl r1, r1, #0x18 str r7, [sp] lsr r0, r0, #0x10 lsr r1, r1, #0x18 lsr r3, r3, #0x18 bl FUN_02068E88 ldr r1, [r5] lsl r1, r1, #2 add r1, r5, r1 ldr r1, [r1, #8] str r0, [r1, #0xc] ldr r0, [r5] mov r1, #1 lsl r4, r0, #2 add r0, r5, r0 add r0, #0x4c ldrb r0, [r0] bl MOD08_0222A6A4 add r1, r5, r4 add r2, r0, #0 ldr r0, [r1, #8] ldr r3, [r0, #0xc] ldr r0, [r1, #0x18] mov r1, #1 add r2, r3, r2 bl FUN_02007558 add sp, #0x20 pop {r3, r4, r5, r6, r7, pc} thumb_func_start MOD08_0222A568 MOD08_0222A568: ; 0x0222A568 push {r4, r5, r6, r7, lr} sub sp, #0x14 add r5, r0, #0 ldr r0, [r5] add r6, r1, #0 lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_020080E0 mov r0, #0x75 add r2, sp, #0 strh r0, [r2, #4] mov r0, #0xd2 strh r0, [r2, #8] mov r0, #0 strh r0, [r2, #0xa] strb r0, [r2, #0xc] str r0, [sp, #0x10] ldr r0, [r5] add r1, r5, r0 add r1, #0x4c ldrb r3, [r1] mov r1, #1 tst r1, r3 beq _0222A5A4 mov r1, #0xd1 strh r1, [r2, #6] mov r4, #0x87 b _0222A5AA _0222A5A4: mov r1, #0xd0 strh r1, [r2, #6] mov r4, #0x86 _0222A5AA: lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_020081C0 add r7, r0, #0 add r3, sp, #4 add r2, r7, #0 ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldmia r3!, {r0, r1} stmia r2!, {r0, r1} ldr r0, [r5] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] bl FUN_020080D0 ldr r3, [r5] ldrh r0, [r7] lsl r3, r3, #2 add r3, r5, r3 ldr r3, [r3, #8] ldrh r1, [r7, #2] ldr r3, [r3] add r2, r6, #0 bl FUN_02012420 ldr r2, [r5] add r1, sp, #0 lsl r2, r2, #2 add r2, r5, r2 ldrh r0, [r1, #4] ldr r2, [r2, #8] str r0, [r2, #4] ldr r0, [r5] ldrh r1, [r1, #8] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #8] add r2, r4, #0 str r1, [r0, #8] add r0, sp, #0 mov r1, #0x79 bl LoadFromNARC add r0, sp, #0 ldrb r1, [r0] ldr r0, [r5] lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #8] str r1, [r0, #0xc] ldr r0, [r5] mov r1, #1 lsl r4, r0, #2 add r0, r5, r0 add r0, #0x4c ldrb r0, [r0] bl MOD08_0222A6A4 add r2, r5, r4 ldr r1, [r2, #8] ldr r1, [r1, #0xc] add r4, r1, r0 ldr r0, [r2, #0x18] mov r1, #1 add r2, r4, #0 bl FUN_02007558 ldr r1, [r5] mov r2, #1 add r0, r5, r1 add r0, #0x4c ldrb r0, [r0] tst r0, r2 beq _0222A69E lsl r0, r1, #2 add r0, r5, r0 ldr r0, [r0, #0x18] mov r1, #0x2e bl FUN_02007558 ldr r0, [r5] add r2, sp, #0 ldrb r3, [r2] lsl r0, r0, #2 add r0, r5, r0 mov r2, #0x24 sub r2, r2, r3 ldr r0, [r0, #0x18] mov r1, #0x14 add r2, r4, r2 bl FUN_02007558 ldr r0, [r5] mov r1, #0x15 lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] mov r2, #0 bl FUN_02007558 ldr r0, [r5] add r2, sp, #0 lsl r0, r0, #2 ldrb r3, [r2] add r0, r5, r0 mov r2, #0x24 ldr r0, [r0, #0x18] mov r1, #0x16 sub r2, r2, r3 bl FUN_02007558 ldr r0, [r5] mov r1, #0x29 lsl r0, r0, #2 add r0, r5, r0 ldr r0, [r0, #0x18] mov r2, #0 bl FUN_02007558 _0222A69E: add sp, #0x14 pop {r4, r5, r6, r7, pc} .align 2, 0 thumb_func_start MOD08_0222A6A4 MOD08_0222A6A4: ; 0x0222A6A4 cmp r1, #0 bne _0222A6B0 lsl r1, r0, #2 ldr r0, _0222A6C0 ; =0x0222D538 ldrsh r0, [r0, r1] bx lr _0222A6B0: mov r2, #6 mul r2, r0 ldr r0, _0222A6C4 ; =0x0222D550 lsl r1, r1, #1 add r0, r0, r2 ldrsh r0, [r1, r0] bx lr nop _0222A6C0: .word 0x0222D538 _0222A6C4: .word 0x0222D550 thumb_func_start MOD08_0222A6C8 MOD08_0222A6C8: ; 0x0222A6C8 ldr r1, _0222A75C ; =0x0000013B cmp r0, r1 bhi _0222A6F6 bhs _0222A754 cmp r0, #0x7d bhi _0222A6E4 bhs _0222A754 cmp r0, #0x63 bhi _0222A6DE beq _0222A754 b _0222A758 _0222A6DE: cmp r0, #0x78 beq _0222A754 b _0222A758 _0222A6E4: cmp r0, #0xc9 bhi _0222A6F0 bhs _0222A754 cmp r0, #0x9f beq _0222A754 b _0222A758 _0222A6F0: cmp r0, #0xd7 beq _0222A754 b _0222A758 _0222A6F6: add r2, r1, #0 add r2, #0x4a cmp r0, r2 bhi _0222A71E add r2, r1, #0 add r2, #0x4a cmp r0, r2 bhs _0222A754 add r2, r1, #0 add r2, #0x14 cmp r0, r2 bhi _0222A716 add r1, #0x14 cmp r0, r1 beq _0222A754 b _0222A758 _0222A716: add r1, #0x2c cmp r0, r1 beq _0222A754 b _0222A758 _0222A71E: add r2, r1, #0 add r2, #0x98 cmp r0, r2 bhi _0222A74E add r2, r1, #0 add r2, #0x98 cmp r0, r2 bhs _0222A754 add r2, r1, #0 add r2, #0x5c cmp r0, r2 bhi _0222A758 add r2, r1, #0 add r2, #0x5b cmp r0, r2 blo _0222A758 add r2, r1, #0 add r2, #0x5b cmp r0, r2 beq _0222A754 add r1, #0x5c cmp r0, r1 beq _0222A754 b _0222A758 _0222A74E: add r1, #0x99 cmp r0, r1 bne _0222A758 _0222A754: mov r0, #0 bx lr _0222A758: mov r0, #1 bx lr .align 2, 0 _0222A75C: .word 0x0000013B .section .rodata ; 0x0222A760 .incbin "baserom.nds", 0x1A0100, 0x2E38 .section .data .incbin "baserom.nds", 0x1A2F40, 0x20