From 8fb894b2676635e4dc9ad989d39a09fbf8b4c186 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 2 May 2020 17:30:12 -0400 Subject: Disassemble module 08 --- arm9/arm9.lcf | 16 +- arm9/global.inc | 73 + arm9/modules/08/asm/module_08.s | 49981 ++++++++++++++++++++++++++++++++++++++ arm9/undefined_syms.txt | 8 + 4 files changed, 50076 insertions(+), 2 deletions(-) create mode 100644 arm9/modules/08/asm/module_08.s diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index b332a790..2fa78f43 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -18,7 +18,7 @@ MEMORY { MODULE_05 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_06 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_07 (RWX) : ORIGIN=0x02211E60, LENGTH=0 - MODULE_08 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_08 (RWX) : ORIGIN=0x02211E60, LENGTH=0 MODULE_09 (RWX) : ORIGIN=0, LENGTH=0 MODULE_10 (RWX) : ORIGIN=0, LENGTH=0 MODULE_11 (RWX) : ORIGIN=0, LENGTH=0 @@ -444,7 +444,19 @@ SECTIONS { module_07.o (.bss) } >> MODULE_07 - OVERLAY_FILE(08, 0x183800, FILE_187800.o) + .MODULE.08 : AT (0x183800) + { + module_08.o (.text) + module_08.o (.sdata) + module_08.o (.data) + } > MODULE_08 + + .MODULE.08.bss : + { + module_08.o (.sbss) + module_08.o (.bss) + } >> MODULE_08 + OVERLAY_FILE(09, 0x19F000, FILE_1A3000.o) OVERLAY_FILE(10, 0x1A9200, FILE_1AD200.o) OVERLAY_FILE(11, 0x1A9400, FILE_1AD400.o) diff --git a/arm9/global.inc b/arm9/global.inc index db7694f5..9dee371a 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4591,3 +4591,76 @@ .extern FUN_021F6234 .extern FUN_021F6240 .extern FUN_021F6254 +.extern FUN_020031B8 +.extern FUN_02003204 +.extern FUN_020039E8 +.extern FUN_02003A64 +.extern FUN_02003B40 +.extern FUN_020054A8 +.extern FUN_02005530 +.extern FUN_0200554C +.extern FUN_02005614 +.extern FUN_02007E40 +.extern FUN_020080E0 +.extern FUN_0200813C +.extern FUN_020081C0 +.extern FUN_02008268 +.extern FUN_0200C59C +.extern FUN_0200C5B4 +.extern FUN_0200C5E0 +.extern FUN_0200C5F4 +.extern FUN_0200C608 +.extern FUN_0200C630 +.extern FUN_0200C658 +.extern FUN_0200C680 +.extern FUN_0200C68C +.extern FUN_0200C6A4 +.extern FUN_0200C6B0 +.extern FUN_0200C6C4 +.extern FUN_0200C7FC +.extern FUN_0200C898 +.extern FUN_0200C8BC +.extern FUN_0200C8D0 +.extern FUN_0200C8DC +.extern FUN_0200C8F8 +.extern FUN_0200C90C +.extern FUN_020129C8 +.extern FUN_020129D8 +.extern FUN_02013348 +.extern FUN_020133DC +.extern FUN_020133EC +.extern FUN_020133FC +.extern FUN_0201341C +.extern FUN_02013428 +.extern FUN_02013448 +.extern FUN_02013514 +.extern FUN_02013530 +.extern FUN_02013548 +.extern FUN_0201357C +.extern FUN_02013594 +.extern FUN_020135B0 +.extern FUN_020135C4 +.extern FUN_020135E0 +.extern FUN_020135F4 +.extern FUN_02013610 +.extern FUN_02013628 +.extern FUN_0201365C +.extern FUN_02013674 +.extern FUN_020170F4 +.extern FUN_020187B0 +.extern FUN_0201B6CC +.extern FUN_02029CE4 +.extern FUN_02029CE8 +.extern FUN_02068E88 +.extern FUN_02069FB0 +.extern FUN_02085FF4 +.extern FUN_02086018 +.extern FUN_02230078 +.extern FUN_02230080 +.extern FUN_022300CC +.extern FUN_022312D0 +.extern FUN_02231504 +.extern FUN_02231534 +.extern FUN_02231678 +.extern FUN_02233560 +.extern FX_Modf diff --git a/arm9/modules/08/asm/module_08.s b/arm9/modules/08/asm/module_08.s new file mode 100644 index 00000000..50ed884f --- /dev/null +++ b/arm9/modules/08/asm/module_08.s @@ -0,0 +1,49981 @@ + .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 .data + ; 0x0222A760 + .incbin "baserom.nds", 0x1A0100, 0x2E60 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 021deaa1..5626ffc3 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -344,6 +344,14 @@ FUN_0222F440 = 0x0222F440; FUN_0222F480 = 0x0222F480; FUN_0222F7E0 = 0x0222F7E0; FUN_0222F990 = 0x0222F990; +FUN_02230078 = 0x02230078; +FUN_02230080 = 0x02230080; +FUN_022300CC = 0x022300CC; +FUN_022312D0 = 0x022312D0; +FUN_02231504 = 0x02231504; +FUN_02231534 = 0x02231534; +FUN_02231678 = 0x02231678; +FUN_02233560 = 0x02233560; FUN_022300D4 = 0x022300D4; FUN_022300DC = 0x022300DC; FUN_022300E4 = 0x022300E4; -- cgit v1.2.3