diff options
-rw-r--r-- | arm9/arm9.lcf | 16 | ||||
-rw-r--r-- | arm9/global.inc | 214 | ||||
-rw-r--r-- | arm9/modules/18/asm/module_18.s | 46260 |
3 files changed, 46488 insertions, 2 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index e1ad11e3..7664e03d 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -28,7 +28,7 @@ MEMORY { MODULE_15 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_16 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 MODULE_17 (RWX) : ORIGIN=0x021D74E0, LENGTH=0 - MODULE_18 (RWX) : ORIGIN=0, LENGTH=0 + MODULE_18 (RWX) : ORIGIN=0x022396A0, LENGTH=0 MODULE_19 (RWX) : ORIGIN=0, LENGTH=0 MODULE_20 (RWX) : ORIGIN=0, LENGTH=0 MODULE_21 (RWX) : ORIGIN=0, LENGTH=0 @@ -590,7 +590,19 @@ SECTIONS { module_17.o (.bss) } >> MODULE_17 - OVERLAY_FILE(18, 0x267200, FILE_26B200.o) + .MODULE.18 : AT (0x267200) + { + module_18.o (.text) + module_18.o (.sdata) + module_18.o (.data) + } > MODULE_18 + + .MODULE.18.bss : + { + module_18.o (.sbss) + module_18.o (.bss) + } >> MODULE_18 + OVERLAY_FILE(19, 0x27F000, FILE_283000.o) OVERLAY_FILE(20, 0x27F200, FILE_283200.o) OVERLAY_FILE(21, 0x281600, FILE_285600.o) diff --git a/arm9/global.inc b/arm9/global.inc index 3c2d00ba..4d02cd08 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -5181,6 +5181,220 @@ .extern G3X_ResetMtxStack_2
.extern FUN_0200825C
.extern FUN_02013DEC
+.extern FUN_02001658
+.extern FUN_02001B80
+.extern FUN_02004928
+.extern FUN_02009BB8
+.extern FUN_0200B2E0
+.extern FUN_0200B318
+.extern FUN_0200E31C
+.extern FUN_020128C4
+.extern FUN_0201B21C
+.extern FUN_0201D2AC
+.extern FUN_0201E1B4
+.extern FUN_02020184
+.extern FUN_0202595C
+.extern FUN_02025960
+.extern FUN_02025964
+.extern FUN_02025C00
+.extern FUN_02025C18
+.extern FUN_02025C38
+.extern FUN_02025CD8
+.extern FUN_02025D40
+.extern FUN_02025D48
+.extern FUN_02025DC8
+.extern FUN_02025DD4
+.extern FUN_02025EDC
+.extern FUN_02025F0C
+.extern FUN_02025F30
+.extern FUN_02025F44
+.extern FUN_02025F80
+.extern FUN_02025F98
+.extern FUN_02025FA4
+.extern FUN_02025FD8
+.extern FUN_02026050
+.extern FUN_02026068
+.extern FUN_02026074
+.extern FUN_02026080
+.extern FUN_0202616C
+.extern FUN_02026188
+.extern FUN_02026194
+.extern FUN_020261C8
+.extern FUN_0202623C
+.extern FUN_02026258
+.extern FUN_02026264
+.extern FUN_0202630C
+.extern FUN_02026354
+.extern FUN_02026370
+.extern FUN_0202639C
+.extern FUN_020263C8
+.extern FUN_020263F4
+.extern FUN_02026444
+.extern FUN_02026450
+.extern FUN_02026470
+.extern FUN_02026490
+.extern FUN_0202649C
+.extern FUN_020264F0
+.extern FUN_020264FC
+.extern FUN_0202651C
+.extern FUN_0202653C
+.extern FUN_02026548
+.extern FUN_02026554
+.extern FUN_020265B8
+.extern FUN_020265E0
+.extern FUN_02026600
+.extern FUN_02026620
+.extern FUN_02026634
+.extern FUN_02026648
+.extern FUN_02026654
+.extern FUN_02026664
+.extern FUN_02026688
+.extern FUN_020266D4
+.extern FUN_020266E0
+.extern FUN_02026714
+.extern FUN_0202671C
+.extern FUN_02026778
+.extern FUN_02026874
+.extern FUN_020268A0
+.extern FUN_020268E8
+.extern FUN_02026940
+.extern FUN_02026A0C
+.extern FUN_02026A58
+.extern FUN_02026A9C
+.extern FUN_02026AE8
+.extern FUN_02026B20
+.extern FUN_02026B58
+.extern FUN_02026B90
+.extern FUN_02026C38
+.extern FUN_02026C68
+.extern FUN_02026C88
+.extern FUN_02026C90
+.extern FUN_02026C98
+.extern FUN_02026CA0
+.extern FUN_02026CA8
+.extern FUN_02026CC0
+.extern FUN_02029160
+.extern FUN_0202916C
+.extern FUN_0202D31C
+.extern FUN_0202D344
+.extern FUN_0202D380
+.extern FUN_0202DEC0
+.extern FUN_0202DEF4
+.extern FUN_0202E068
+.extern FUN_020307A8
+.extern FUN_020307BC
+.extern FUN_020307D0
+.extern FUN_0203086C
+.extern FUN_02031000
+.extern FUN_0203105C
+.extern FUN_02031354
+.extern FUN_020318A4
+.extern FUN_020335A4
+.extern FUN_02049824
+.extern FUN_02049CB0
+.extern FUN_0204CAA0
+.extern FUN_0204CAB0
+.extern FUN_0204CAC0
+.extern FUN_0204CAD0
+.extern FUN_0204CAF0
+.extern FUN_0204CB00
+.extern FUN_0204CB10
+.extern FUN_0204CB20
+.extern FUN_0204CC48
+.extern FUN_0204CC9C
+.extern FUN_0204CCE0
+.extern FUN_0204CDB4
+.extern FUN_0204CF60
+.extern FUN_0204D118
+.extern FUN_0204D168
+.extern FUN_0204D320
+.extern FUN_0204D610
+.extern FUN_0204D76C
+.extern FUN_0204D830
+.extern FUN_0204E1E8
+.extern FUN_0204E200
+.extern FUN_0204E214
+.extern FUN_0204E254
+.extern FUN_0204E34C
+.extern FUN_0204E35C
+.extern FUN_0204E3A4
+.extern FUN_0204E3EC
+.extern FUN_0204E440
+.extern FUN_0204E494
+.extern FUN_0204E4B4
+.extern FUN_0204E4D4
+.extern FUN_0204E50C
+.extern FUN_0204E544
+.extern FUN_0204E598
+.extern FUN_0204E5EC
+.extern FUN_0204E60C
+.extern FUN_0204E62C
+.extern FUN_0204E664
+.extern FUN_0204E69C
+.extern FUN_0204E6CC
+.extern FUN_0204E6FC
+.extern FUN_0204E758
+.extern FUN_0204E778
+.extern FUN_0204E794
+.extern FUN_0204E7CC
+.extern FUN_0204E8B0
+.extern FUN_0204EAD8
+.extern FUN_0204EB14
+.extern FUN_0204EE9C
+.extern FUN_0204EEBC
+.extern FUN_0204F074
+.extern FUN_0204F08C
+.extern FUN_0204F0A8
+.extern FUN_0204F0C8
+.extern FUN_0204F1B0
+.extern FUN_0204F210
+.extern FUN_0204F610
+.extern FUN_0204F63C
+.extern FUN_0204F660
+.extern FUN_0204F678
+.extern FUN_0204F69C
+.extern FUN_0204F6C8
+.extern FUN_0204F70C
+.extern FUN_0204F72C
+.extern FUN_0204F74C
+.extern FUN_0204F774
+.extern FUN_0204F7D4
+.extern FUN_0204F7E4
+.extern FUN_0204F7FC
+.extern FUN_0204FB14
+.extern FUN_0204FCF4
+.extern FUN_0204FD24
+.extern FUN_0204FD38
+.extern FUN_0204FDE4
+.extern FUN_0205537C
+.extern FUN_0205EB38
+.extern FUN_0205EBEC
+.extern FUN_0205EC18
+.extern FUN_0205EC48
+.extern FUN_0205EC6C
+.extern FUN_0205EDAC
+.extern FUN_0205EDBC
+.extern FUN_0205EDCC
+.extern FUN_0205EDD8
+.extern FUN_0205EDE8
+.extern FUN_0205F730
+.extern FUN_0205F750
+.extern FUN_0205F770
+.extern FUN_0206151C
+.extern FUN_02061B0C
+.extern FUN_020BB408
+.extern MOD05_021D8024
+.extern MOD05_021D80A4
+.extern MOD05_021E53B4
+.extern MOD05_021E5420
+.extern MOD05_021E5D0C
+.extern MOD05_021E5E8C
+.extern MOD05_021E7C1C
+.extern MOD05_021EF4F8
+.extern MOD05_021F0318
+.extern MOD05_021F043C
+.extern MOD05_021F04F8
+.extern MOD05_021F4CD4
.extern FUN_02013E5C
.extern FUN_02013ECC
.extern FUN_02013EF0
diff --git a/arm9/modules/18/asm/module_18.s b/arm9/modules/18/asm/module_18.s new file mode 100644 index 00000000..767c2f6c --- /dev/null +++ b/arm9/modules/18/asm/module_18.s @@ -0,0 +1,46260 @@ + .include "asm/macros.inc" + .include "global.inc" + .section .text + .balign 4, 0 + + thumb_func_start MOD18_022396A0 +MOD18_022396A0: ; 0x022396A0 + push {r3, r4, r5, r6, r7, lr} + ldr r2, _02239730 ; =0x000008CC + ldr r4, _02239734 ; =0x02251380 + add r3, r2, #0 + mov r1, #0 + mov r0, #0xff + add r3, #8 +_022396AE: + ldr r5, [r4] + add r5, r5, r1 + strb r0, [r5, r2] + ldr r5, [r4] + add r5, r5, r1 + add r1, r1, #1 + strb r0, [r5, r3] + cmp r1, #8 + blt _022396AE + ldr r0, _02239734 ; =0x02251380 + ldr r1, _02239738 ; =0x000009E4 + ldr r2, [r0] + mov r3, #1 + strb r3, [r2, r1] + ldr r4, [r0] + mov r2, #0 + add r3, r1, #1 + strb r2, [r4, r3] + ldr r3, [r0] + mov r4, #0xc4 + add r1, r1, #3 + strb r4, [r3, r1] + mov r3, #0x81 + lsl r3, r3, #4 + add r4, r3, #0 + add r1, r2, #0 + add r5, r2, #0 + add r4, #8 +_022396E6: + ldr r6, [r0] + add r2, r2, #1 + add r6, r6, r1 + str r5, [r6, r3] + ldr r6, [r0] + add r6, r6, r1 + add r1, #0xc + strb r5, [r6, r4] + cmp r2, #8 + blt _022396E6 + ldr r6, _02239734 ; =0x02251380 + mov r7, #0 +_022396FE: + add r0, r5, #0 + mov r1, #0xd + bl _s32_div_f + add r4, r0, #0 + mov r1, #0xd + add r0, r5, #0 + mul r4, r1 + bl _s32_div_f + ldr r0, [r6] + add r5, r5, #1 + add r0, r0, r4 + add r2, r1, r0 + ldr r0, _0223973C ; =0x000008DC + strb r7, [r2, r0] + ldr r0, [r6] + add r0, r0, r4 + add r2, r1, r0 + mov r1, #2 + ldr r0, _02239740 ; =0x0000095E + cmp r5, #0x82 + strb r1, [r2, r0] + blt _022396FE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239730: .word 0x000008CC +_02239734: .word 0x02251380 +_02239738: .word 0x000009E4 +_0223973C: .word 0x000008DC +_02239740: .word 0x0000095E + thumb_func_end MOD18_022396A0 + + thumb_func_start MOD18_02239744 +MOD18_02239744: ; 0x02239744 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r1, _02239834 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + bne _02239830 + mov r2, #0x9f + str r0, [r1] + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + ldr r0, _02239834 ; =0x02251380 + ldr r0, [r0] + add r0, #8 + bl FUN_020312BC + ldr r5, _02239834 ; =0x02251380 + mov r2, #0 + ldr r0, [r5] + ldr r7, _02239838 ; =0x0000020A + str r4, [r0] + ldr r0, _0223983C ; =0x0000FFFF + add r3, r2, #0 + mov r1, #0xff +_02239778: + ldr r4, [r5] + add r2, r2, #1 + add r6, r4, r3 + mov r4, #0x83 + lsl r4, r4, #2 + strb r1, [r6, r4] + ldr r4, [r5] + add r6, r4, r3 + mov r4, #0x82 + lsl r4, r4, #2 + strh r0, [r6, r4] + ldr r4, [r5] + add r4, r4, r3 + add r3, r3, #6 + strh r0, [r4, r7] + cmp r2, #0xfa + blt _02239778 + bl MOD18_022396A0 + ldr r1, _02239834 ; =0x02251380 + mov r3, #0 + mov r0, #0x9e + ldr r2, [r1] + mvn r3, r3 + lsl r0, r0, #4 + str r3, [r2, r0] + ldr r0, [r1] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r4, r0, #0 + bl FUN_02026648 + cmp r0, #0 + beq _02239828 + add r0, r4, #0 + bl FUN_02025D40 + str r0, [sp, #4] + ldr r0, _02239840 ; =0x5D588B65 + mov r5, #0 + str r0, [sp, #8] + ldr r0, _02239844 ; =0x00269EC3 + str r0, [sp, #0xc] +_022397D2: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020265B8 + add r5, r5, #1 + cmp r5, #0xff + blt _022397D2 + mov r5, #0 + add r6, r5, #0 +_022397E4: + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + add r3, r6, #0 + str r6, [sp] + bl FUN_0202630C + add r5, r5, #1 + cmp r5, #0x40 + blt _022397E4 + add r0, sp, #4 + bl MOD18_0223D298 + mov r1, #0xa + bl _s32_div_f + mov r1, #0x18 + sub r6, r1, r0 + mov r5, #0 + cmp r6, #0 + ble _0223981E + add r7, sp, #4 +_02239810: + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_02239994 + add r5, r5, #1 + cmp r5, r6 + blt _02239810 +_0223981E: + add r0, r4, #0 + bl FUN_02026654 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02239828: + bl MOD18_02239D94 + bl MOD18_0223F174 +_02239830: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239834: .word 0x02251380 +_02239838: .word 0x0000020A +_0223983C: .word 0x0000FFFF +_02239840: .word 0x5D588B65 +_02239844: .word 0x00269EC3 + thumb_func_end MOD18_02239744 + + thumb_func_start MOD18_02239848 +MOD18_02239848: ; 0x02239848 + mov r0, #0x9f + lsl r0, r0, #4 + bx lr + .align 2, 0 + thumb_func_end MOD18_02239848 + + thumb_func_start MOD18_02239850 +MOD18_02239850: ; 0x02239850 + bx lr + .align 2, 0 + thumb_func_end MOD18_02239850 + + thumb_func_start MOD18_02239854 +MOD18_02239854: ; 0x02239854 + bx lr + .align 2, 0 + thumb_func_end MOD18_02239854 + + thumb_func_start MOD18_02239858 +MOD18_02239858: ; 0x02239858 + push {r3, lr} + ldr r0, _022398A8 ; =0x02251380 + ldr r1, [r0] + cmp r1, #0 + beq _022398A4 + ldr r0, _022398AC ; =0x0000087C + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239896 + bl FUN_0200CAB4 + ldr r0, _022398A8 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _022398AC ; =0x0000087C + str r2, [r1, r0] + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, _022398A8 ; =0x02251380 + ldr r1, [r0] + ldr r0, _022398B0 ; =0x000007E4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239892 + mov r1, #4 + bl FUN_020021EC +_02239892: + bl FUN_0204F7FC +_02239896: + ldr r0, _022398A8 ; =0x02251380 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _022398A8 ; =0x02251380 + mov r1, #0 + str r1, [r0] +_022398A4: + pop {r3, pc} + nop +_022398A8: .word 0x02251380 +_022398AC: .word 0x0000087C +_022398B0: .word 0x000007E4 + thumb_func_end MOD18_02239858 + + thumb_func_start MOD18_022398B4 +MOD18_022398B4: ; 0x022398B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldrh r0, [r1] + ldrh r1, [r1, #2] + bl MOD18_02239DEC + add r4, r0, #0 + add r0, sp, #0 + strb r5, [r0] + beq _022398FE + ldrb r0, [r4, #4] + cmp r0, #0xff + bne _022398FE + add r0, r5, #0 + bl FUN_0204F210 + cmp r0, #0 + beq _022398DC + mov r0, #1 + pop {r3, r4, r5, pc} +_022398DC: + mov r0, #0x40 + add r1, sp, #0 + mov r2, #1 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + ldr r0, _02239904 ; =0x02251380 + ldr r1, [r0] + lsl r0, r5, #2 + add r1, r1, r0 + ldr r0, _02239908 ; =0x000007E8 + str r4, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, pc} +_022398FE: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_02239904: .word 0x02251380 +_02239908: .word 0x000007E8 + thumb_func_end MOD18_022398B4 + + thumb_func_start MOD18_0223990C +MOD18_0223990C: ; 0x0223990C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02239924 + mov r0, #0 + pop {r4, r5, r6, pc} +_02239924: + ldr r0, _02239990 ; =0x000001DE + cmp r4, r0 + ble _0223992E + mov r0, #0 + pop {r4, r5, r6, pc} +_0223992E: + cmp r5, r0 + ble _02239936 + mov r0, #0 + pop {r4, r5, r6, pc} +_02239936: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223998C + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #1 + bl FUN_0204A6B4 + cmp r0, #0 + bne _02239956 + mov r0, #1 + pop {r4, r5, r6, pc} +_02239956: + add r0, r6, #0 + add r1, r5, #0 + sub r2, r4, #1 + bl FUN_0204A6B4 + cmp r0, #0 + bne _02239968 + mov r0, #1 + pop {r4, r5, r6, pc} +_02239968: + add r0, r6, #0 + add r1, r5, #1 + add r2, r4, #0 + bl FUN_0204A6B4 + cmp r0, #0 + bne _0223997A + mov r0, #1 + pop {r4, r5, r6, pc} +_0223997A: + add r0, r6, #0 + sub r1, r5, #1 + add r2, r4, #0 + bl FUN_0204A6B4 + cmp r0, #0 + bne _0223998C + mov r0, #1 + pop {r4, r5, r6, pc} +_0223998C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02239990: .word 0x000001DE + thumb_func_end MOD18_0223990C + + thumb_func_start MOD18_02239994 +MOD18_02239994: ; 0x02239994 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + ldr r0, _02239BA8 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + str r0, [sp, #0x10] + ldr r0, _02239BA8 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0x28] + bl FUN_020344FC + sub r0, r0, #2 + lsl r0, r0, #0x15 + lsr r6, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0x28] + bl FUN_0203450C + sub r0, r0, #2 + lsl r0, r0, #0x15 + lsr r4, r0, #0x10 +_022399CC: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + cmp r6, #0 + ldr r0, [r5] + bne _022399E2 + lsr r1, r0, #0x10 + b _022399EA +_022399E2: + lsr r1, r0, #0x10 + add r2, r1, #0 + mul r2, r6 + lsr r1, r2, #0x10 +_022399EA: + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r1, #0x20 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + str r1, [sp, #0xc] + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + cmp r4, #0 + ldr r0, [r5] + bne _02239A0A + lsr r0, r0, #0x10 + b _02239A12 +_02239A0A: + lsr r0, r0, #0x10 + add r1, r0, #0 + mul r1, r4 + lsr r0, r1, #0x10 +_02239A12: + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, #0x40 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + ldr r1, [sp, #0xc] + ldr r0, [r0] + add r2, r7, #0 + ldr r0, [r0] + bl MOD18_0223990C + cmp r0, #0 + beq _022399CC + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #6 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r0, #6 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x20] + cmp r0, #0 + ble _02239AEE +_02239A54: + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] +_02239A5A: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + lsr r2, r0, #0x10 + mov r1, #0x14 + mul r1, r2 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldr r1, [sp, #0xc] + str r0, [r5] + add r1, r1, r2 + sub r1, #0xa + lsl r1, r1, #0x10 + lsr r4, r1, #0x10 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #0x14 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r7, r0 + sub r0, #0xa + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + add r1, r4, #0 + ldr r0, [r0] + add r2, r6, #0 + ldr r0, [r0] + bl MOD18_0223990C + cmp r0, #0 + beq _02239AB2 + mov r0, #1 + str r0, [sp, #0x14] + b _02239ABC +_02239AB2: + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #0x64 + blt _02239A5A +_02239ABC: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _02239AE2 + bl MOD18_02239C58 + cmp r0, #0 + beq _02239AEE + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02239CA0 + str r0, [sp, #0x24] + ldr r0, [sp, #0x10] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_02026554 + ldr r1, [sp, #0x24] + strb r0, [r1, #5] +_02239AE2: + ldr r0, [sp, #0x1c] + add r1, r0, #1 + ldr r0, [sp, #0x20] + str r1, [sp, #0x1c] + cmp r1, r0 + blt _02239A54 +_02239AEE: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #6 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [sp, #8] + cmp r0, #0 + ble _02239BA2 +_02239B12: + mov r0, #0 + str r0, [sp] +_02239B16: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + lsr r2, r0, #0x10 + mov r1, #0x14 + mul r1, r2 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldr r1, [sp, #0xc] + str r0, [r5] + add r1, r1, r2 + sub r1, #0xa + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #0x14 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r7, r0 + sub r0, #0xa + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, _02239BA8 ; =0x02251380 + add r1, r6, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + bne _02239B8C + ldr r3, _02239BA8 ; =0x02251380 + add r1, r4, #0 + ldr r4, [r3] + ldr r3, _02239BAC ; =0x000009EC + add r0, r6, #0 + ldrb r3, [r4, r3] + add r2, r5, #0 + bl MOD18_0223F0C8 + cmp r0, #0 + beq _02239B8C + ldr r0, _02239BA8 ; =0x02251380 + ldr r2, [r0] + ldr r0, _02239BAC ; =0x000009EC + ldrb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, r0] + b _02239B96 +_02239B8C: + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #0x64 + blt _02239B16 +_02239B96: + ldr r0, [sp, #4] + add r1, r0, #1 + ldr r0, [sp, #8] + str r1, [sp, #4] + cmp r1, r0 + blt _02239B12 +_02239BA2: + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239BA8: .word 0x02251380 +_02239BAC: .word 0x000009EC + thumb_func_end MOD18_02239994 + + thumb_func_start MOD18_02239BB0 +MOD18_02239BB0: ; 0x02239BB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp] + ldr r0, _02239C54 ; =0x02251380 + str r1, [sp, #4] + ldr r0, [r0] + add r5, r2, #0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + mov r4, #0 + str r0, [sp, #8] + str r4, [sp, #0xc] +_02239BCC: + ldr r1, [r5, #4] + ldr r0, [r5] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + lsr r2, r0, #0x10 + mov r1, #0x14 + mul r1, r2 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r2, r1, #0x10 + ldr r1, [sp] + str r0, [r5] + add r1, r1, r2 + sub r1, #0xa + lsl r1, r1, #0x10 + lsr r6, r1, #0x10 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + mul r0, r1 + add r0, r2, r0 + str r0, [r5] + lsr r1, r0, #0x10 + mov r0, #0x14 + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #4] + add r0, r0, r1 + sub r0, #0xa + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldr r0, _02239C54 ; =0x02251380 + add r1, r6, #0 + ldr r0, [r0] + add r2, r7, #0 + ldr r0, [r0] + bl MOD18_0223990C + cmp r0, #0 + beq _02239C26 + mov r0, #1 + str r0, [sp, #0xc] + b _02239C2C +_02239C26: + add r4, r4, #1 + cmp r4, #0x64 + blt _02239BCC +_02239C2C: + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _02239C50 + bl MOD18_02239C58 + cmp r0, #0 + beq _02239C50 + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_02239CA0 + add r4, r0, #0 + ldr r0, [sp, #8] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_02026554 + strb r0, [r4, #5] +_02239C50: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239C54: .word 0x02251380 + thumb_func_end MOD18_02239BB0 + + thumb_func_start MOD18_02239C58 +MOD18_02239C58: ; 0x02239C58 + push {r4, r5, r6, r7} + ldr r1, _02239C94 ; =0x02251380 + ldr r3, _02239C98 ; =0x0000020A + ldr r2, [r1] + ldr r4, _02239C9C ; =0x0000FFFF + mov r0, #0 + add r1, r2, #0 + sub r5, r3, #2 + add r6, r4, #0 +_02239C6A: + ldrh r7, [r1, r5] + cmp r7, r6 + bne _02239C86 + ldrh r7, [r1, r3] + cmp r7, r4 + bne _02239C86 + mov r1, #0x82 + lsl r1, r1, #2 + add r2, r2, r1 + mov r1, #6 + mul r1, r0 + add r0, r2, r1 + pop {r4, r5, r6, r7} + bx lr +_02239C86: + add r0, r0, #1 + add r1, r1, #6 + cmp r0, #0xfa + blt _02239C6A + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02239C94: .word 0x02251380 +_02239C98: .word 0x0000020A +_02239C9C: .word 0x0000FFFF + thumb_func_end MOD18_02239C58 + + thumb_func_start MOD18_02239CA0 +MOD18_02239CA0: ; 0x02239CA0 + push {r3, r4, r5, r6, r7, lr} + mov lr, r1 + mov r1, #0xf + str r0, [sp] + lsl r1, r1, #6 + mov r0, lr + mul r1, r0 + ldr r0, [sp] + mov r6, #0 + add r5, r0, r1 + ldr r0, _02239D80 ; =0x02251380 + mvn r6, r6 + ldr r3, [r0] + mov r2, #0 + mov ip, r3 + lsr r7, r6, #0x10 +_02239CC0: + mov r0, #0x82 + lsl r0, r0, #2 + ldrh r1, [r3, r0] + cmp r1, r7 + beq _02239CE4 + add r0, r0, #2 + ldrh r0, [r3, r0] + ldr r4, _02239D84 ; =0x0000FFFF + cmp r0, r4 + beq _02239CE4 + mov r4, #0xf + lsl r4, r4, #6 + mul r4, r0 + add r0, r1, r4 + cmp r5, r0 + bge _02239D08 + add r6, r2, #0 + b _02239D10 +_02239CE4: + mov r0, #6 + mul r0, r2 + mov r1, ip + add r2, r1, r0 + mov r3, #0x82 + ldr r1, [sp] + lsl r3, r3, #2 + strh r1, [r2, r3] + ldr r4, _02239D80 ; =0x02251380 + add r2, r3, #2 + ldr r1, [r4] + add r5, r1, r0 + mov r1, lr + strh r1, [r5, r2] + ldr r1, [r4] + add r1, r1, r3 + add r0, r1, r0 + pop {r3, r4, r5, r6, r7, pc} +_02239D08: + add r2, r2, #1 + add r3, r3, #6 + cmp r2, #0xfa + blt _02239CC0 +_02239D10: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _02239D6E + mov r1, #0xf8 + cmp r6, #0xf8 + bgt _02239D52 + mov r0, #0x5d + ldr r3, _02239D80 ; =0x02251380 + ldr r7, _02239D88 ; =0x00000213 + lsl r0, r0, #4 +_02239D26: + ldr r2, [r3] + sub r1, r1, #1 + add r5, r2, r0 + mov r2, #0x82 + lsl r2, r2, #2 + ldrh r4, [r5, r2] + add r2, r2, #6 + strh r4, [r5, r2] + ldr r2, [r3] + add r5, r2, r0 + ldr r2, _02239D8C ; =0x0000020A + ldrh r4, [r5, r2] + add r2, r2, #6 + strh r4, [r5, r2] + ldr r2, [r3] + ldr r4, _02239D90 ; =0x0000020D + add r2, r2, r0 + ldrb r4, [r2, r4] + sub r0, r0, #6 + strb r4, [r2, r7] + cmp r1, r6 + bge _02239D26 +_02239D52: + ldr r3, _02239D80 ; =0x02251380 + mov r0, #6 + ldr r1, [r3] + mul r0, r6 + add r4, r1, r0 + mov r2, #0x82 + ldr r1, [sp] + lsl r2, r2, #2 + strh r1, [r4, r2] + ldr r1, [r3] + add r3, r1, r0 + add r1, r2, #2 + mov r0, lr + strh r0, [r3, r1] +_02239D6E: + ldr r0, _02239D80 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #6 + mul r0, r6 + add r0, r1, r0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02239D80: .word 0x02251380 +_02239D84: .word 0x0000FFFF +_02239D88: .word 0x00000213 +_02239D8C: .word 0x0000020A +_02239D90: .word 0x0000020D + thumb_func_end MOD18_02239CA0 + + thumb_func_start MOD18_02239D94 +MOD18_02239D94: ; 0x02239D94 + push {r4, r5, r6, lr} + ldr r0, _02239DD4 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + mov r5, #0 +_02239DA6: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020265E0 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_02026600 + add r1, r0, #0 + cmp r4, #0 + beq _02239DCA + cmp r1, #0 + beq _02239DCA + add r0, r4, #0 + bl MOD18_02239CA0 + strb r5, [r0, #5] +_02239DCA: + add r5, r5, #1 + cmp r5, #0xff + blt _02239DA6 + pop {r4, r5, r6, pc} + nop +_02239DD4: .word 0x02251380 + thumb_func_end MOD18_02239D94 + + thumb_func_start MOD18_02239DD8 +MOD18_02239DD8: ; 0x02239DD8 + push {r3, lr} + bl FUN_02031190 + cmp r0, #0 + bne _02239DEA + bl MOD18_0223C9B8 + bl MOD18_0223C898 +_02239DEA: + pop {r3, pc} + thumb_func_end MOD18_02239DD8 + + thumb_func_start MOD18_02239DEC +MOD18_02239DEC: ; 0x02239DEC + push {r4, r5, r6, r7} + ldr r3, _02239E24 ; =0x02251380 + ldr r5, _02239E28 ; =0x0000020A + ldr r4, [r3] + mov r2, #0 + add r3, r4, #0 + sub r6, r5, #2 +_02239DFA: + ldrh r7, [r3, r6] + cmp r0, r7 + bne _02239E16 + ldrh r7, [r3, r5] + cmp r1, r7 + bne _02239E16 + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r4, r0 + mov r0, #6 + mul r0, r2 + add r0, r1, r0 + pop {r4, r5, r6, r7} + bx lr +_02239E16: + add r2, r2, #1 + add r3, r3, #6 + cmp r2, #0xfa + blt _02239DFA + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02239E24: .word 0x02251380 +_02239E28: .word 0x0000020A + thumb_func_end MOD18_02239DEC + + thumb_func_start MOD18_02239E2C +MOD18_02239E2C: ; 0x02239E2C + push {r3, r4, r5, r6, r7, lr} + add r2, r1, #0 + add r6, r1, #0 + str r2, [sp] + add r2, #0x50 + add r4, r0, #0 + add r7, r0, #0 + sub r6, #0x50 + str r2, [sp] + sub r4, #0x50 + add r7, #0x50 + mov r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02239E50 + sub r0, r5, #1 + pop {r3, r4, r5, r6, r7, pc} +_02239E50: + cmp r4, #0x40 + bge _02239E56 + mov r4, #0x40 +_02239E56: + mov r0, #2 + lsl r0, r0, #8 + cmp r7, r0 + ble _02239E60 + add r7, r0, #0 +_02239E60: + cmp r6, #0x20 + bge _02239E66 + mov r6, #0x20 +_02239E66: + mov r1, #0x1e + ldr r0, [sp] + lsl r1, r1, #4 + cmp r0, r1 + ble _02239E72 + str r1, [sp] +_02239E72: + ldr r0, _02239EF4 ; =0x02251380 + mov r2, #0 + ldr r3, [r0] +_02239E78: + ldr r0, _02239EF8 ; =0x0000020A + ldrh r1, [r3, r0] + cmp r1, r6 + blt _02239E96 + ldr r0, [sp] + cmp r1, r0 + bgt _02239E96 + mov r0, #0x82 + lsl r0, r0, #2 + ldrh r0, [r3, r0] + cmp r0, r4 + ble _02239E96 + cmp r0, r7 + bge _02239E96 + add r5, r5, #1 +_02239E96: + add r2, r2, #1 + add r3, r3, #6 + cmp r2, #0xfa + blt _02239E78 + cmp r5, #0 + bne _02239EA8 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_02239EA8: + bl FUN_0201B9EC + add r1, r5, #0 + bl _s32_div_f + ldr r0, _02239EF4 ; =0x02251380 + mov r3, #0 + ldr r2, [r0] + mov ip, r1 + add r5, r3, #0 +_02239EBC: + ldr r0, _02239EF8 ; =0x0000020A + ldrh r1, [r2, r0] + cmp r1, r6 + blt _02239EE4 + ldr r0, [sp] + cmp r1, r0 + bgt _02239EE4 + mov r0, #0x82 + lsl r0, r0, #2 + ldrh r0, [r2, r0] + cmp r0, r4 + ble _02239EE4 + cmp r0, r7 + bge _02239EE4 + mov r0, ip + cmp r3, r0 + bne _02239EE2 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_02239EE2: + add r3, r3, #1 +_02239EE4: + add r5, r5, #1 + add r2, r2, #6 + cmp r5, #0xfa + blt _02239EBC + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02239EF4: .word 0x02251380 +_02239EF8: .word 0x0000020A + thumb_func_end MOD18_02239E2C + + thumb_func_start MOD18_02239EFC +MOD18_02239EFC: ; 0x02239EFC + push {r4, lr} + add r4, r0, #0 + ldr r0, _02239F2C ; =0x02251380 + ldr r1, [r0] + ldr r0, _02239F30 ; =0x000007E4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02239F12 + mov r1, #4 + bl FUN_020021EC +_02239F12: + ldr r1, _02239F2C ; =0x02251380 + ldr r0, _02239F30 ; =0x000007E4 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0x98 + str r3, [r1, r0] + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + nop +_02239F2C: .word 0x02251380 +_02239F30: .word 0x000007E4 + thumb_func_end MOD18_02239EFC + + thumb_func_start MOD18_02239F34 +MOD18_02239F34: ; 0x02239F34 + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02239F84 + bl FUN_02030FE0 + cmp r0, #0 + beq _02239F84 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x13 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r2, _02239F88 ; =0x02251380 + mov r1, #0x9e + ldr r3, [r2] + lsl r1, r1, #4 + str r0, [r3, r1] + ldr r1, [r2] + ldr r0, _02239F8C ; =MOD18_02239F98 + mov r2, #0 + bl FUN_0200CA44 + ldr r2, _02239F88 ; =0x02251380 + ldr r1, _02239F90 ; =0x0000087C + ldr r3, [r2] + str r0, [r3, r1] + ldr r2, [r2] + mov r0, #0 + ldr r1, [r2, r1] + ldr r2, _02239F94 ; =MOD18_02239EFC + bl MOD18_0223E688 + bl FUN_0204F7E4 +_02239F84: + pop {r4, pc} + nop +_02239F88: .word 0x02251380 +_02239F8C: .word MOD18_02239F98 +_02239F90: .word 0x0000087C +_02239F94: .word MOD18_02239EFC + thumb_func_end MOD18_02239F34 + + thumb_func_start MOD18_02239F98 +MOD18_02239F98: ; 0x02239F98 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223A044 ; =0x02251380 + ldr r2, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r1, [r2, r0] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _02239FEA + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223A03E + mov r0, #4 + str r0, [sp] + ldr r0, _0223A044 ; =0x02251380 + ldr r1, _0223A048 ; =0x0224FFE6 + ldr r0, [r0] + ldr r2, _0223A04C ; =0x000003D9 + ldr r0, [r0] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + ldr r2, _0223A044 ; =0x02251380 + ldr r1, _0223A050 ; =0x000007E4 + ldr r3, [r2] + add sp, #8 + str r0, [r3, r1] + mov r3, #0 + mov r0, #0x9e + ldr r1, [r2] + mvn r3, r3 + lsl r0, r0, #4 + str r3, [r1, r0] + pop {r4, pc} +_02239FEA: + ldr r0, _0223A050 ; =0x000007E4 + mov r1, #4 + ldr r0, [r2, r0] + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223A03E + cmp r0, #0 + add r0, sp, #4 + bne _0223A008 + mov r1, #1 + strb r1, [r0] + b _0223A010 +_0223A008: + mov r1, #0 + strb r1, [r0] + bl FUN_0204F7FC +_0223A010: + mov r0, #0x41 + add r1, sp, #4 + bl FUN_020311D0 + ldr r0, _0223A044 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223A050 ; =0x000007E4 + str r2, [r1, r0] + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r4, #0 + bl FUN_0200CAB4 + bl MOD18_0223E6A0 + ldr r0, _0223A044 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223A054 ; =0x0000087C + str r2, [r1, r0] +_0223A03E: + add sp, #8 + pop {r4, pc} + nop +_0223A044: .word 0x02251380 +_0223A048: .word 0x0224FFE6 +_0223A04C: .word 0x000003D9 +_0223A050: .word 0x000007E4 +_0223A054: .word 0x0000087C + thumb_func_end MOD18_02239F98 + + thumb_func_start MOD18_0223A058 +MOD18_0223A058: ; 0x0223A058 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _0223A0DC ; =0x02251380 + add r7, r2, #0 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + str r0, [sp] + ldr r0, _0223A0DC ; =0x02251380 + lsl r6, r5, #2 + ldr r1, [r0] + ldr r0, _0223A0E0 ; =0x000007E8 + add r2, r1, r6 + ldr r4, [r2, r0] + add r0, sp, #4 + strb r5, [r0] + ldrb r0, [r7] + cmp r0, #0 + beq _0223A0C4 + cmp r4, #0 + beq _0223A0C4 + ldrb r0, [r4, #4] + cmp r0, #0xff + bne _0223A0D6 + mov r0, #0x42 + add r1, sp, #4 + mov r2, #1 + bl FUN_02030BC4 + mov r0, #0xff + strb r0, [r4, #4] + ldr r0, _0223A0E4 ; =0x0000FFFF + strh r0, [r4] + strh r0, [r4, #2] + ldrb r1, [r4, #5] + ldr r0, [sp] + bl FUN_020265B8 + ldr r1, _0223A0DC ; =0x02251380 + mov r3, #1 + ldr r0, [r1] + add sp, #8 + add r2, r0, r5 + ldr r0, _0223A0E8 ; =0x00000808 + strb r3, [r2, r0] + ldr r1, [r1] + mov r2, #0 + add r1, r1, r6 + sub r0, #0x20 + str r2, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_0223A0C4: + add r2, r1, r5 + ldr r1, _0223A0E8 ; =0x00000808 + mov r0, #0 + strb r0, [r2, r1] + ldr r2, _0223A0DC ; =0x02251380 + sub r1, #0x20 + ldr r2, [r2] + add r2, r2, r6 + str r0, [r2, r1] +_0223A0D6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A0DC: .word 0x02251380 +_0223A0E0: .word 0x000007E8 +_0223A0E4: .word 0x0000FFFF +_0223A0E8: .word 0x00000808 + thumb_func_end MOD18_0223A058 + + thumb_func_start MOD18_0223A0EC +MOD18_0223A0EC: ; 0x0223A0EC + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223A108 + bl FUN_0204F7E4 + ldr r0, _0223A118 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl MOD18_0223AC24 +_0223A108: + ldr r0, _0223A118 ; =0x02251380 + mov r2, #1 + ldr r1, [r0] + ldrb r0, [r4] + add r1, r1, r0 + ldr r0, _0223A11C ; =0x000008C4 + strb r2, [r1, r0] + pop {r4, pc} + .align 2, 0 +_0223A118: .word 0x02251380 +_0223A11C: .word 0x000008C4 + thumb_func_end MOD18_0223A0EC + + thumb_func_start MOD18_0223A120 +MOD18_0223A120: ; 0x0223A120 + ldr r1, _0223A130 ; =0x02251380 + mov r2, #0 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _0223A134 ; =0x00000808 + strb r2, [r1, r0] + bx lr + nop +_0223A130: .word 0x02251380 +_0223A134: .word 0x00000808 + thumb_func_end MOD18_0223A120 + + thumb_func_start MOD18_0223A138 +MOD18_0223A138: ; 0x0223A138 + push {r3, lr} + add r1, sp, #0 + strb r0, [r1] + ldrb r0, [r2] + strb r0, [r1, #1] + ldrb r0, [r2, #1] + strb r0, [r1, #2] + mov r0, #0x45 + add r1, sp, #0 + bl FUN_02030C4C + pop {r3, pc} + thumb_func_end MOD18_0223A138 + + thumb_func_start MOD18_0223A150 +MOD18_0223A150: ; 0x0223A150 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223A150 + + thumb_func_start MOD18_0223A154 +MOD18_0223A154: ; 0x0223A154 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldrb r4, [r5] + bl FUN_02031190 + cmp r4, r0 + beq _0223A17A + ldr r1, _0223A17C ; =0x02251380 + ldrb r3, [r5, #1] + ldr r0, [r1] + add r2, r0, r4 + ldr r0, _0223A180 ; =0x000008CC + strb r3, [r2, r0] + ldr r2, [r1] + ldrb r1, [r5] + ldrb r3, [r5, #2] + add r0, #8 + add r1, r2, r1 + strb r3, [r1, r0] +_0223A17A: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223A17C: .word 0x02251380 +_0223A180: .word 0x000008CC + thumb_func_end MOD18_0223A154 + + thumb_func_start MOD18_0223A184 +MOD18_0223A184: ; 0x0223A184 + mov r0, #3 + bx lr + thumb_func_end MOD18_0223A184 + + thumb_func_start MOD18_0223A188 +MOD18_0223A188: ; 0x0223A188 + push {r3, r4, r5, lr} + sub sp, #0xa8 + ldr r5, _0223A2A4 ; =0x02250080 + add r4, r0, #0 + add r3, sp, #0x80 + mov r2, #5 +_0223A194: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223A194 + add r0, sp, #0x80 + bl FUN_0201E66C + ldr r5, _0223A2A8 ; =0x02250000 + add r3, sp, #0x70 + add r2, r3, #0 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r2, #0 + bl FUN_02016BBC + ldr r5, _0223A2AC ; =0x02250010 + add r3, sp, #0x54 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #0 + str r0, [r3] + add r0, r4, #0 + add r3, r1, #0 + bl FUN_02016C18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + ldr r5, _0223A2B0 ; =0x0225002C + add r3, sp, #0x38 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #1 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + ldr r5, _0223A2B4 ; =0x02250048 + add r3, sp, #0x1c + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + ldr r5, _0223A2B8 ; =0x02250064 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + mov r1, #3 + str r0, [r3] + add r0, r4, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #3 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + add r0, r4, #0 + mov r1, #3 + bl FUN_02018744 + mov r0, #4 + mov r1, #0x20 + mov r2, #0 + mov r3, #0x1d + bl FUN_02017F18 + mov r0, #0 + mov r1, #0x20 + add r2, r0, #0 + mov r3, #0x1d + bl FUN_02017F18 + add sp, #0xa8 + pop {r3, r4, r5, pc} + nop +_0223A2A4: .word 0x02250080 +_0223A2A8: .word 0x02250000 +_0223A2AC: .word 0x02250010 +_0223A2B0: .word 0x0225002C +_0223A2B4: .word 0x02250048 +_0223A2B8: .word 0x02250064 + thumb_func_end MOD18_0223A188 + + thumb_func_start MOD18_0223A2BC +MOD18_0223A2BC: ; 0x0223A2BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r2, #0 + add r5, r0, #0 + add r6, r1, #0 + add r7, r3, #0 + cmp r4, #0 + beq _0223A2DE + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + b _0223A2EE +_0223A2DE: + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 +_0223A2EE: + cmp r7, #0 + beq _0223A30A + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02020130 + ldr r0, _0223A3C8 ; =0x000006A4 + bl FUN_020054C8 + b _0223A33C +_0223A30A: + cmp r4, #0 + beq _0223A326 + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #3 + bl FUN_02020130 + ldr r0, _0223A3CC ; =0x000006A2 + bl FUN_020054C8 + b _0223A33C +_0223A326: + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #4 + bl FUN_02020130 + ldr r0, _0223A3D0 ; =0x000006A3 + bl FUN_020054C8 +_0223A33C: + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + add r5, #8 + lsl r0, r5, #0xc + add r6, #8 + str r0, [sp] + lsl r0, r6, #0xc + str r0, [sp, #4] + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7d + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _0223A3BE + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #5 + bl FUN_02020130 + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _0223A3C4 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 +_0223A3BE: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223A3C4: .word 0x02251380 +_0223A3C8: .word 0x000006A4 +_0223A3CC: .word 0x000006A2 +_0223A3D0: .word 0x000006A3 + thumb_func_end MOD18_0223A2BC + + thumb_func_start MOD18_0223A3D4 +MOD18_0223A3D4: ; 0x0223A3D4 + push {r4, r5, r6, lr} + sub sp, #0x10 + mov r1, #0 + add r5, r0, #0 + mov r0, #0x3a + add r2, r1, #0 + bl FUN_0200433C + bl MOD18_022396A0 + mov r0, #1 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r2, #5 + mov r0, #3 + mov r1, #0x1d + lsl r2, r2, #0x10 + bl FUN_0201681C + mov r0, #0x1d + bl FUN_02016B94 + add r4, r0, #0 + ldr r0, _0223A4CC ; =0x02251380 + add r1, r4, #0 + ldr r0, [r0] + str r4, [r0, #4] + ldr r0, _0223A4D0 ; =MOD18_0223C6CC + bl FUN_02015F10 + bl MOD18_0223D638 + add r1, r4, #0 + bl MOD18_0224DBB0 + add r0, r4, #0 + bl MOD18_0223A188 + add r0, r4, #0 + mov r1, #0 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #1 + bl FUN_02018744 + add r0, r4, #0 + mov r1, #2 + bl FUN_02018744 + mov r0, #0 + str r0, [sp] + mov r0, #0x1d + str r0, [sp, #4] + ldr r2, _0223A4D4 ; =0x000001E2 + add r0, r4, #0 + mov r1, #3 + mov r3, #0xa + bl FUN_0200CD68 + mov r0, #0x60 + str r0, [sp] + mov r0, #0x1d + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x34 + mov r1, #1 + add r3, r2, #0 + bl FUN_02006930 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + mov r0, #0x34 + add r2, r4, #0 + add r3, r1, #0 + bl FUN_0200687C + mov r3, #0 + str r3, [sp] + str r3, [sp, #4] + add r6, r0, #0 + str r3, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + mov r0, #0x34 + mov r1, #2 + add r2, r4, #0 + bl FUN_020068C8 + mov r3, #0x80 + str r3, [sp] + mov r0, #0x1d + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + add r0, r4, #0 + add r1, r6, #0 + add r2, r5, #0 + bl MOD18_0223AF48 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0223A4CC: .word 0x02251380 +_0223A4D0: .word MOD18_0223C6CC +_0223A4D4: .word 0x000001E2 + thumb_func_end MOD18_0223A3D4 + + thumb_func_start MOD18_0223A4D8 +MOD18_0223A4D8: ; 0x0223A4D8 + push {r3, lr} + sub sp, #0x10 + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B9BC + ldr r0, _0223A55C ; =0x02251380 + mov r1, #1 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_02017CD0 + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B480 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r2, _0223A55C ; =0x02251380 + mov r0, #0x37 + ldr r2, [r2] + mov r1, #9 + ldr r2, [r2, #4] + mov r3, #2 + bl FUN_0200687C + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B6A4 + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #3 + mov r1, #0 + bl FUN_020178BC + bl MOD18_0223C37C + bl MOD18_0223C570 + ldr r0, _0223A55C ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223BB7C + add sp, #0x10 + pop {r3, pc} + nop +_0223A55C: .word 0x02251380 + thumb_func_end MOD18_0223A4D8 + + thumb_func_start MOD18_0223A560 +MOD18_0223A560: ; 0x0223A560 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #0 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #1 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #2 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #3 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_020178A0 + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009C0C + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x5b + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009C0C + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x16 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009E04 + ldr r0, _0223A648 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009E04 + mov r6, #0 + ldr r7, _0223A648 ; =0x02251380 + add r4, r6, #0 +_0223A5D2: + ldr r0, [r7] + add r1, r0, r4 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02008E2C + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0223A5D2 + mov r4, #0 + add r6, r4, #0 +_0223A5EC: + ldr r0, [r5, #0x18] + cmp r0, #0 + beq _0223A5F8 + bl FUN_02016A18 + str r6, [r5, #0x18] +_0223A5F8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223A5EC + ldr r0, _0223A648 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FD58 + bl FUN_02009FA0 + bl FUN_0201D12C + bl FUN_0201E08C + mov r0, #0 + add r1, r0, #0 + bl FUN_02015F10 + ldr r0, _0223A648 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, _0223A648 ; =0x02251380 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #4] + mov r0, #0x1d + bl FUN_020168D0 + bl MOD18_0223D638 + ldr r1, _0223A648 ; =0x02251380 + ldr r1, [r1] + ldr r1, [r1] + ldr r1, [r1, #8] + bl MOD18_0224DBB0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223A648: .word 0x02251380 + thumb_func_end MOD18_0223A560 + + thumb_func_start MOD18_0223A64C +MOD18_0223A64C: ; 0x0223A64C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + ldr r5, [r4, #0x10] + cmp r0, #0x1b + bls _0223A65E + b _0223AC10 +_0223A65E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223A66A: ; jump table + .short _0223A6A2 - _0223A66A - 2 ; case 0 + .short _0223A6BE - _0223A66A - 2 ; case 1 + .short _0223A6E6 - _0223A66A - 2 ; case 2 + .short _0223A704 - _0223A66A - 2 ; case 3 + .short _0223A71C - _0223A66A - 2 ; case 4 + .short _0223A72C - _0223A66A - 2 ; case 5 + .short _0223A73A - _0223A66A - 2 ; case 6 + .short _0223A780 - _0223A66A - 2 ; case 7 + .short _0223A79A - _0223A66A - 2 ; case 8 + .short _0223A7AC - _0223A66A - 2 ; case 9 + .short _0223A7DE - _0223A66A - 2 ; case 10 + .short _0223A81E - _0223A66A - 2 ; case 11 + .short _0223A844 - _0223A66A - 2 ; case 12 + .short _0223A87E - _0223A66A - 2 ; case 13 + .short _0223A8A2 - _0223A66A - 2 ; case 14 + .short _0223A8E4 - _0223A66A - 2 ; case 15 + .short _0223A934 - _0223A66A - 2 ; case 16 + .short _0223A958 - _0223A66A - 2 ; case 17 + .short _0223A9A8 - _0223A66A - 2 ; case 18 + .short _0223A9DC - _0223A66A - 2 ; case 19 + .short _0223AA08 - _0223A66A - 2 ; case 20 + .short _0223AA4C - _0223A66A - 2 ; case 21 + .short _0223AAD6 - _0223A66A - 2 ; case 22 + .short _0223AB28 - _0223A66A - 2 ; case 23 + .short _0223AB58 - _0223A66A - 2 ; case 24 + .short _0223AB94 - _0223A66A - 2 ; case 25 + .short _0223ABAC - _0223A66A - 2 ; case 26 + .short _0223ABDC - _0223A66A - 2 ; case 27 +_0223A6A2: + mov r0, #0 + bl MOD18_02247970 + bl MOD18_0223CC80 + bl FUN_0204CC48 + bl MOD18_022451BC + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A6BE: + ldr r0, [r5, #0x68] + bl MOD18_0224484C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x12 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A6E6: + bl FUN_0200E308 + cmp r0, #0 + beq _0223A7E8 + ldr r0, [r5, #0x68] + cmp r0, #0 + bne _0223A7E8 + add r0, r5, #0 + bl FUN_02037394 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A704: + add r0, r5, #0 + bl FUN_0203739C + cmp r0, #0 + bne _0223A7E8 + bl FUN_02033ED0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A71C: + add r0, r4, #0 + bl MOD18_0223A3D4 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A72C: + bl MOD18_0223A4D8 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A73A: + bl FUN_02033E74 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + mov r1, #0x11 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A780: + bl FUN_0200E308 + cmp r0, #0 + beq _0223A7E8 + mov r0, #0 + str r0, [r4, #8] + ldr r0, _0223AB00 ; =0x00000621 + bl FUN_020054C8 + mov r0, #8 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A79A: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x14 + ble _0223A7E8 + mov r0, #9 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A7AC: + bl MOD18_0223D638 + ldr r2, [r4, #0xc] + mov r1, #0 + bl MOD18_0224DE5C + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3e + add r3, r2, #0 + bl MOD18_0224DCD8 + ldr r1, _0223AB04 ; =0x02251380 + add sp, #0xc + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A7DE: + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + cmp r0, #0x50 + bgt _0223A7EA +_0223A7E8: + b _0223AC10 +_0223A7EA: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r5, r0, #0 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + bl FUN_02026620 + cmp r0, #0 + beq _0223A816 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A816: + mov r0, #0xd + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A81E: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x55 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223AB04 ; =0x02251380 + add sp, #0xc + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0 + str r0, [r4, #8] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A844: + ldr r0, _0223AB04 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223A922 + ldr r0, _0223AB08 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223A86C + ldr r0, _0223AB0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223A922 +_0223A86C: + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A87E: + add r0, r4, #0 + bl MOD18_0223C1F0 + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223C078 + add r0, r4, #0 + bl MOD18_0223B2D4 + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223A8A2: + add r0, r4, #0 + bl MOD18_0223B2D4 + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + ldr r0, [r4, #8] + sub r0, r0, #1 + str r0, [r4, #8] + bne _0223A922 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x40 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223AB04 ; =0x02251380 + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, _0223AB10 ; =0x000005E3 + bl FUN_020054C8 + mov r0, #0x3c + str r0, [r4, #0x4c] + mov r0, #0xf + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A8E4: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + ldr r0, _0223AB04 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223A922 + ldr r0, [r4, #0x4c] + sub r0, r0, #1 + str r0, [r4, #0x4c] + ldr r0, _0223AB08 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223A924 + ldr r0, _0223AB0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0223A924 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _0223A924 +_0223A922: + b _0223AC10 +_0223A924: + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0x10 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A934: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add r0, r4, #0 + bl MOD18_0223BEE4 + cmp r0, #0 + beq _0223A950 + mov r0, #0x11 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A950: + mov r0, #0x12 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A958: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + ldr r0, _0223AB04 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223AA5A + ldr r0, _0223AB08 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223A98A + ldr r0, _0223AB0C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223AA5A +_0223A98A: + add r0, r4, #0 + bl MOD18_0223BF84 + cmp r0, #0 + beq _0223A9A0 + mov r0, #0x3c + str r0, [r4, #0x4c] + mov r0, #0xf + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A9A0: + mov r0, #0x10 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A9A8: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + mov r1, #0x10 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223A9DC: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + bl FUN_0200E308 + cmp r0, #0 + beq _0223AA5A + bl FUN_02033ED0 + add r0, r4, #0 + bl MOD18_0223A560 + add r0, r5, #0 + bl FUN_0204649C + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AA08: + add r0, r5, #0 + bl FUN_020464A4 + cmp r0, #0 + beq _0223AA5A + add r0, r5, #0 + bl MOD18_02244824 + str r0, [r5, #0x68] + bl FUN_02033E74 + bl FUN_0204F7E4 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x13 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4] + add sp, #0xc + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AA4C: + mov r0, #0 + bl FUN_0200E394 + bl FUN_0200E308 + cmp r0, #0 + bne _0223AA5C +_0223AA5A: + b _0223AC10 +_0223AA5C: + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + ldr r0, [r4, #0x10] + ldr r0, [r0, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F45E8 + mov r3, #0x80 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4, #0x10] + ldr r2, _0223AB14 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + bl FUN_0204CC9C + bl MOD18_022451EC + bl MOD18_0223CC94 + add r1, r4, #0 + mov r0, #0x43 + add r1, #0x50 + bl FUN_020311D0 + bl FUN_0204F7FC + ldr r0, _0223AB04 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x22 + lsl r0, r0, #6 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r6, #0 + bl FUN_0200CAB4 + mov r0, #1 + bl MOD18_02247970 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223AAD6: + ldr r1, _0223AB04 ; =0x02251380 + ldr r0, _0223AB18 ; =0x000009E8 + ldr r2, [r1] + mov r3, #1 + strb r3, [r2, r0] + ldr r2, [r4, #8] + sub r2, r2, #1 + str r2, [r4, #8] + bne _0223AAF2 + ldr r1, [r1] + mov r2, #0x64 + strb r2, [r1, r0] + mov r0, #0x17 + str r0, [r4] +_0223AAF2: + ldr r0, _0223AB04 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223C078 + ldr r0, _0223AB04 ; =0x02251380 + b _0223AB1C + .align 2, 0 +_0223AB00: .word 0x00000621 +_0223AB04: .word 0x02251380 +_0223AB08: .word 0x021C48F8 +_0223AB0C: .word 0x021C48B8 +_0223AB10: .word 0x000005E3 +_0223AB14: .word 0x000003D9 +_0223AB18: .word 0x000009E8 +_0223AB1C: + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223AB28: + ldr r0, _0223AC14 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + mov r0, #0xf + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + mov r1, #2 + str r0, [sp, #8] + mov r0, #3 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, _0223AC18 ; =0x000006A1 + bl FUN_020054C8 + mov r0, #0x18 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AB58: + bl FUN_0200E308 + cmp r0, #0 + beq _0223AB86 + mov r6, #0 + ldr r7, _0223AC14 ; =0x02251380 + add r5, r6, #0 +_0223AB66: + ldr r0, [r7] + add r1, r0, r5 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _0223AB66 + mov r0, #0x19 + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223AB86: + ldr r0, _0223AC14 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #0x20] + bl FUN_0201FDEC + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0223AB94: + mov r0, #1 + add r1, r0, #0 + sub r1, #0x11 + add r2, r1, #0 + mov r3, #7 + str r0, [sp] + bl FUN_0200A208 + mov r0, #0x1a + add sp, #0xc + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223ABAC: + mov r0, #0 + bl FUN_0200E388 + mov r0, #0 + bl FUN_0200E394 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3f + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223AC14 ; =0x02251380 + add sp, #0xc + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0x3c + str r0, [r4, #0x4c] + mov r0, #0xf + str r0, [r4] + pop {r4, r5, r6, r7, pc} +_0223ABDC: + ldr r0, _0223AC14 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x9e + lsl r0, r0, #4 + ldr r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0223AC10 + ldr r0, _0223AC1C ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + bne _0223AC04 + ldr r0, _0223AC20 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0223AC10 +_0223AC04: + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0x13 + str r0, [r4] +_0223AC10: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223AC14: .word 0x02251380 +_0223AC18: .word 0x000006A1 +_0223AC1C: .word 0x021C48F8 +_0223AC20: .word 0x021C48B8 + thumb_func_end MOD18_0223A64C + + thumb_func_start MOD18_0223AC24 +MOD18_0223AC24: ; 0x0223AC24 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xb + bl FUN_02029160 + add r1, r0, #0 + add r0, r5, #0 + add r0, #0x98 + ldr r0, [r0] + mov r2, #1 + bl FUN_02028AD4 + mov r0, #0xb + mov r1, #0x54 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x54 + bl MI_CpuFill8 + str r5, [r4, #0x10] + ldr r0, [r5, #4] + ldr r0, [r0, #0x1c] + bl FUN_021F4608 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205EDBC + ldr r0, _0223AC78 ; =MOD18_0223A64C + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _0223AC7C ; =0x02251380 + ldr r2, [r1] + mov r1, #0x22 + lsl r1, r1, #6 + str r0, [r2, r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223AC78: .word MOD18_0223A64C +_0223AC7C: .word 0x02251380 + thumb_func_end MOD18_0223AC24 + + thumb_func_start MOD18_0223AC80 +MOD18_0223AC80: ; 0x0223AC80 + ldr r0, _0223ACA0 ; =0x02251380 + mov r2, #0 + ldr r3, [r0] + mov r0, #0x81 + lsl r0, r0, #4 +_0223AC8A: + ldr r1, [r3, r0] + cmp r1, #0 + bne _0223AC94 + mov r0, #1 + bx lr +_0223AC94: + add r2, r2, #1 + add r3, #0xc + cmp r2, #8 + blt _0223AC8A + mov r0, #0 + bx lr + .align 2, 0 +_0223ACA0: .word 0x02251380 + thumb_func_end MOD18_0223AC80 + + thumb_func_start MOD18_0223ACA4 +MOD18_0223ACA4: ; 0x0223ACA4 + push {r3, r4, r5, r6, r7, lr} + add r7, r2, #0 + ldr r2, _0223AD10 ; =0x02251380 + mov r3, #0x81 + ldr r2, [r2] + mov ip, r1 + mov r1, #0 + add r5, r2, #0 + lsl r3, r3, #4 +_0223ACB6: + ldr r4, [r5, r3] + cmp r4, #0 + bne _0223AD00 + add r4, r0, #0 + mov r3, #0x14 + mul r4, r3 + ldr r3, _0223AD14 ; =0x02250B30 + mov r0, #0xc + mul r0, r1 + add r5, r3, r4 + mov r3, #0x81 + add r2, r2, r0 + lsl r3, r3, #4 + str r5, [r2, r3] + ldr r2, _0223AD18 ; =0x02250B3E + ldrb r6, [r2, r4] + ldr r4, _0223AD10 ; =0x02251380 + ldr r2, [r4] + add r5, r2, r0 + add r2, r3, #4 + strb r6, [r5, r2] + ldr r2, [r4] + mov r6, ip + add r5, r2, r0 + add r2, r3, #5 + strb r6, [r5, r2] + ldr r2, [r4] + add r5, r2, r0 + add r2, r3, #6 + strb r7, [r5, r2] + ldr r2, [r4] + mov r5, #0 + add r0, r2, r0 + add r3, #8 + strb r5, [r0, r3] + add r0, r1, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223AD00: + add r1, r1, #1 + add r5, #0xc + cmp r1, #8 + blt _0223ACB6 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223AD10: .word 0x02251380 +_0223AD14: .word 0x02250B30 +_0223AD18: .word 0x02250B3E + thumb_func_end MOD18_0223ACA4 + + thumb_func_start MOD18_0223AD1C +MOD18_0223AD1C: ; 0x0223AD1C + push {r3, r4} + ldr r3, [r0] + cmp r3, #0 + bne _0223AD2A + mov r0, #1 + pop {r3, r4} + bx lr +_0223AD2A: + lsr r4, r1, #0x1f + add r4, r1, r4 + ldrb r0, [r0, #0xc] + asr r1, r4, #1 + lsr r4, r2, #0x1f + add r4, r2, r4 + asr r2, r4, #1 + lsr r0, r0, #1 + mul r0, r2 + add r0, r1, r0 + ldrb r0, [r3, r0] + cmp r0, #0x6f + beq _0223AD4A + mov r0, #1 + pop {r3, r4} + bx lr +_0223AD4A: + mov r0, #0 + pop {r3, r4} + bx lr + thumb_func_end MOD18_0223AD1C + + thumb_func_start MOD18_0223AD50 +MOD18_0223AD50: ; 0x0223AD50 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + str r0, [sp] + str r1, [sp, #4] + add r6, r2, #0 + bl MOD18_0223AC80 + cmp r0, #0 + bne _0223AD68 + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223AD68: + ldr r0, [sp] + mov r1, #0x14 + mul r1, r0 + str r1, [sp, #0xc] + ldr r1, _0223AE74 ; =0x02250B3C + ldr r0, [sp, #0xc] + ldrb r0, [r1, r0] + lsr r1, r0, #1 + ldr r0, [sp, #4] + add r0, r0, r1 + str r0, [sp, #0x1c] + ldr r1, _0223AE78 ; =0x02250B3D + ldr r0, [sp, #0xc] + ldrb r0, [r1, r0] + lsr r0, r0, #1 + add r7, r6, r0 + ldr r0, [sp, #0x1c] + cmp r0, #0xd + ble _0223AD94 + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223AD94: + cmp r7, #0xa + ble _0223AD9E + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223AD9E: + ldr r0, [sp, #4] + str r0, [sp, #0x10] + add r1, r0, #0 + ldr r0, [sp, #0x1c] + cmp r1, r0 + bge _0223AE02 + mov r0, #0xd + mul r0, r6 + str r0, [sp, #0x20] +_0223ADB0: + add r4, r6, #0 + cmp r6, r7 + bge _0223ADF6 + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + ldr r5, [sp, #0x20] + sub r0, r1, r0 + lsl r0, r0, #1 + str r0, [sp, #0x14] +_0223ADC2: + ldr r1, _0223AE7C ; =0x02250B30 + ldr r0, [sp, #0xc] + sub r2, r4, r6 + add r0, r1, r0 + ldr r1, [sp, #0x14] + lsl r2, r2, #1 + bl MOD18_0223AD1C + cmp r0, #0 + beq _0223ADEE + ldr r0, _0223AE80 ; =0x02251380 + ldr r1, [r0] + ldr r0, [sp, #0x10] + add r0, r0, r1 + add r1, r5, r0 + ldr r0, _0223AE84 ; =0x000008DC + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223ADEE + add sp, #0x2c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223ADEE: + add r4, r4, #1 + add r5, #0xd + cmp r4, r7 + blt _0223ADC2 +_0223ADF6: + ldr r0, [sp, #0x10] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [sp, #0x10] + cmp r1, r0 + blt _0223ADB0 +_0223AE02: + ldr r0, [sp] + ldr r1, [sp, #4] + add r2, r6, #0 + bl MOD18_0223ACA4 + ldr r1, [sp, #4] + str r1, [sp, #8] + add r2, r1, #0 + ldr r1, [sp, #0x1c] + cmp r2, r1 + bge _0223AE6E + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x28] + mov r0, #0xd + mul r0, r6 + str r0, [sp, #0x24] +_0223AE24: + add r5, r6, #0 + cmp r6, r7 + bge _0223AE62 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + ldr r4, [sp, #0x24] + sub r0, r1, r0 + lsl r0, r0, #1 + str r0, [sp, #0x18] +_0223AE36: + ldr r1, _0223AE7C ; =0x02250B30 + ldr r0, [sp, #0xc] + sub r2, r5, r6 + add r0, r1, r0 + ldr r1, [sp, #0x18] + lsl r2, r2, #1 + bl MOD18_0223AD1C + cmp r0, #0 + beq _0223AE5A + ldr r0, _0223AE80 ; =0x02251380 + ldr r1, [r0] + ldr r0, [sp, #8] + add r0, r0, r1 + add r2, r4, r0 + ldr r1, [sp, #0x28] + ldr r0, _0223AE84 ; =0x000008DC + strb r1, [r2, r0] +_0223AE5A: + add r5, r5, #1 + add r4, #0xd + cmp r5, r7 + blt _0223AE36 +_0223AE62: + ldr r0, [sp, #8] + add r1, r0, #1 + ldr r0, [sp, #0x1c] + str r1, [sp, #8] + cmp r1, r0 + blt _0223AE24 +_0223AE6E: + mov r0, #1 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223AE74: .word 0x02250B3C +_0223AE78: .word 0x02250B3D +_0223AE7C: .word 0x02250B30 +_0223AE80: .word 0x02251380 +_0223AE84: .word 0x000008DC + thumb_func_end MOD18_0223AD50 + + thumb_func_start MOD18_0223AE88 +MOD18_0223AE88: ; 0x0223AE88 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223AED0 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + add r6, r0, #0 + bl FUN_02026CC4 + bl FUN_02025C38 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02024DA0 + bl FUN_02024CA4 + mov r1, #0 + cmp r0, #0 + beq _0223AEB6 + ldrh r0, [r5, #8] + b _0223AEB8 +_0223AEB6: + ldrh r0, [r5, #4] +_0223AEB8: + add r0, r1, r0 + cmp r4, #0 + beq _0223AECC + ldrb r1, [r5, #0xe] + cmp r1, #6 + bne _0223AEC6 + add r0, #0x21 +_0223AEC6: + cmp r1, #1 + bne _0223AECC + add r0, #0x42 +_0223AECC: + pop {r4, r5, r6, pc} + nop +_0223AED0: .word 0x02251380 + thumb_func_end MOD18_0223AE88 + + thumb_func_start MOD18_0223AED4 +MOD18_0223AED4: ; 0x0223AED4 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r5, _0223AEF8 ; =0x02250B30 + add r6, r4, #0 +_0223AEDC: + ldrb r0, [r5, #0xe] + cmp r0, #0x3c + beq _0223AEF2 + add r0, r5, #0 + bl MOD18_0223AE88 + add r6, r6, #1 + add r4, r4, r0 + add r5, #0x14 + cmp r6, #0x55 + blo _0223AEDC +_0223AEF2: + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_0223AEF8: .word 0x02250B30 + thumb_func_end MOD18_0223AED4 + + thumb_func_start MOD18_0223AEFC +MOD18_0223AEFC: ; 0x0223AEFC + push {r4, r5, r6, lr} + ldr r5, _0223AF28 ; =0x02250B30 + add r6, r0, #0 + mov r4, #0 +_0223AF04: + ldrb r0, [r5, #0xe] + cmp r0, #0x3c + beq _0223AF20 + add r0, r5, #0 + bl MOD18_0223AE88 + sub r6, r6, r0 + bpl _0223AF18 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_0223AF18: + add r4, r4, #1 + add r5, #0x14 + cmp r4, #0x55 + blo _0223AF04 +_0223AF20: + bl ErrorHandling + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223AF28: .word 0x02250B30 + thumb_func_end MOD18_0223AEFC + + thumb_func_start MOD18_0223AF2C +MOD18_0223AF2C: ; 0x0223AF2C + mov r0, #0 + ldr r3, _0223AF44 ; =0x02250B30 + add r2, r0, #0 +_0223AF32: + ldrb r1, [r3, #0xe] + cmp r1, #0x3c + blo _0223AF3A + add r0, r0, #1 +_0223AF3A: + add r2, r2, #1 + add r3, #0x14 + cmp r2, #0x55 + blo _0223AF32 + bx lr + .align 2, 0 +_0223AF44: .word 0x02250B30 + thumb_func_end MOD18_0223AF2C + + thumb_func_start MOD18_0223AF48 +MOD18_0223AF48: ; 0x0223AF48 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x58 + str r0, [sp] + ldr r0, _0223B1A0 ; =0x02251380 + str r1, [sp, #4] + ldr r0, [r0] + str r2, [sp, #8] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + str r0, [sp, #0x38] + bl MOD18_0223AED4 + str r0, [sp, #0x1c] + bl MOD18_0223AF2C + str r0, [sp, #0x28] + ldr r0, _0223B1A0 ; =0x02251380 + ldr r4, [r0] + add r5, r4, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #8] + str r3, [r5, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #3 + mov r3, #0 + bl _ll_mul + ldr r0, [sp, #8] + add r1, r1, #2 + str r1, [r0, #0xc] + ldr r0, [sp, #0x38] + bl FUN_02026620 + cmp r0, #0 + beq _0223AFB0 + ldr r0, [sp, #8] + mov r1, #3 + str r1, [r0, #0xc] +_0223AFB0: + ldr r0, [sp, #8] + mov r4, #0 + ldr r0, [r0, #0xc] + cmp r0, #0 + ble _0223B0BA + add r7, sp, #0x48 + str r4, [sp, #0x20] +_0223AFBE: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r6, [r0] + add r5, r6, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r6, #8] + ldr r3, [r5, #4] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [r5, #0x10] + ldr r1, [r5, #0x14] + add r0, r0, r2 + str r0, [r6, #8] + adc r1, r3 + ldr r0, [sp, #0x1c] + str r1, [r5, #4] + cmp r0, #0 + bne _0223AFEC + ldr r1, [r5, #4] + b _0223AFF8 +_0223AFEC: + ldr r0, [r5, #4] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + mov r1, #0 + bl _ll_mul +_0223AFF8: + add r0, r1, #0 + bl MOD18_0223AEFC + mov r1, #0x14 + str r0, [sp, #0x30] + mul r1, r0 + ldr r0, _0223B1A4 ; =0x02250B30 + add r0, r0, r1 + ldrb r5, [r0, #0xe] + ldr r0, [sp, #0x38] + add r1, r5, #0 + bl FUN_02026688 + cmp r0, #0 + beq _0223B0B2 + cmp r5, #0x2c + blt _0223B042 + cmp r5, #0x3b + bgt _0223B042 + mov r3, #0 + add r2, r3, #0 + str r5, [r7] + cmp r4, #0 + ble _0223B03C + add r6, sp, #0x48 + mov r0, #1 +_0223B02C: + ldr r1, [r6] + cmp r5, r1 + bne _0223B034 + add r3, r0, #0 +_0223B034: + add r2, r2, #1 + add r6, r6, #4 + cmp r2, r4 + blt _0223B02C +_0223B03C: + cmp r3, #0 + bne _0223B0B2 + b _0223B046 +_0223B042: + mov r0, #0x1c + str r0, [r7] +_0223B046: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r5, [r0] + add r6, r5, #0 + add r6, #8 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + ldr r0, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r0, r3 + adc r2, r1 + str r0, [r5, #8] + str r2, [r6, #4] + add r0, r2, #0 + mov r1, #0 + mov r2, #0xd + mov r3, #0 + bl _ll_mul + add r6, r5, #0 + add r6, #8 + str r1, [sp, #0x18] + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + ldr r0, [r6, #0x10] + ldr r2, [r6, #0x14] + add r0, r0, r3 + adc r2, r1 + str r0, [r5, #8] + str r2, [r6, #4] + add r0, r2, #0 + mov r1, #0 + mov r2, #0xa + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x18] + bl MOD18_0223AD50 + cmp r0, #0 + beq _0223B0B2 + add r7, r7, #4 + add r4, r4, #1 +_0223B0B2: + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + cmp r4, r0 + blt _0223AFBE +_0223B0BA: + ldr r0, [sp, #0x38] + bl FUN_02026620 + cmp r0, #0 + bne _0223B18E + mov r0, #0 + str r0, [sp, #0x34] + str r0, [sp, #0x2c] + ldr r0, [sp, #0x28] + mov r1, #0x55 + sub r0, r1, r0 + str r0, [sp, #0x24] + mov r0, #0 + str r0, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] +_0223B0DA: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r6, [r0] + add r5, r6, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r6, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + str r0, [r6, #8] + adc r3, r1 + ldr r0, [sp, #0x28] + str r3, [r5, #4] + cmp r0, #0 + ldr r0, [r5, #4] + bne _0223B106 + str r0, [sp, #0x10] + b _0223B112 +_0223B106: + ldr r1, [sp, #0x3c] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + bl _ll_mul + str r1, [sp, #0x10] +_0223B112: + ldr r0, _0223B1A0 ; =0x02251380 + ldr r5, [r0] + add r6, r5, #0 + add r6, #8 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + ldr r1, [sp, #0x40] + str r3, [r6, #4] + add r0, r3, #0 + mov r2, #0xd + mov r3, #0 + bl _ll_mul + add r6, r5, #0 + add r6, #8 + add r7, r1, #0 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r2 + adc r1, r3 + str r0, [r5, #8] + str r1, [r6, #4] + add r0, r1, #0 + ldr r1, [sp, #0x44] + mov r2, #0xa + mov r3, #0 + bl _ll_mul + add r2, r1, #0 + ldr r1, [sp, #0x10] + ldr r0, [sp, #0x24] + add r0, r1, r0 + add r1, r7, #0 + bl MOD18_0223AD50 + cmp r0, #0 + beq _0223B180 + add r4, r4, #1 +_0223B180: + cmp r4, #0xc + bgt _0223B18E + ldr r0, [sp, #0x34] + add r0, r0, #1 + str r0, [sp, #0x34] + cmp r0, #0x64 + blt _0223B0DA +_0223B18E: + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD18_0223B454 + add sp, #0x58 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B1A0: .word 0x02251380 +_0223B1A4: .word 0x02250B30 + thumb_func_end MOD18_0223AF48 + + thumb_func_start MOD18_0223B1A8 +MOD18_0223B1A8: ; 0x0223B1A8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r4, r0, #0 + ldr r0, _0223B2D0 ; =0x02251380 + str r1, [sp, #0x10] + ldr r1, [r0] + mov r0, #0x81 + lsl r0, r0, #4 + add r5, r1, r0 + mov r0, #0xc + add r6, r4, #0 + mul r6, r0 + add r0, r5, r6 + str r0, [sp, #0x38] + ldr r0, [sp, #0x10] + mov r1, #1 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + bl FUN_0201886C + ldr r1, [r5, r6] + str r0, [sp, #0x34] + ldr r0, [sp, #0x38] + ldrb r2, [r1, #0xd] + ldrb r0, [r0, #5] + add r6, r4, #0 + lsl r7, r0, #1 + ldr r0, [sp, #0x38] + ldrb r0, [r0, #6] + lsl r0, r0, #1 + str r0, [sp, #0x30] + ldrb r0, [r1, #0xc] + add r0, r7, r0 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x30] + add r0, r0, r2 + str r0, [sp, #0x28] + ldr r0, [sp, #0x18] + ldr r0, [r0, #0xc] + cmp r4, r0 + blt _0223B1FC + mov r6, #4 +_0223B1FC: + cmp r4, r0 + blt _0223B218 + mov r0, #0x20 + str r0, [sp] + mov r0, #0x1d + str r0, [sp, #4] + add r3, r6, #3 + ldrh r1, [r1, #0x12] + mov r0, #0x37 + mov r2, #0 + lsl r3, r3, #5 + bl FUN_02006930 + b _0223B248 +_0223B218: + ldr r5, [sp, #0x18] + ldrh r1, [r1, #0x12] + lsl r4, r4, #2 + add r5, #0x28 + mov r0, #0x37 + add r2, r5, r4 + mov r3, #0x1d + bl FUN_02006C08 + ldr r1, [sp, #0x18] + add r1, r1, r4 + str r0, [r1, #0x18] + ldr r0, [r5, r4] + mov r1, #0x20 + ldr r0, [r0, #0xc] + bl DC_FlushRange + ldr r0, [r5, r4] + add r1, r6, #3 + ldr r0, [r0, #0xc] + lsl r1, r1, #5 + mov r2, #0x20 + bl GX_LoadBGPltt +_0223B248: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x38] + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r1, [r1] + ldr r2, [sp, #0x10] + ldrh r1, [r1, #0x10] + mov r0, #0x37 + mov r3, #1 + bl FUN_0200687C + str r0, [sp, #0x20] + ldr r0, [sp, #0x30] + str r0, [sp, #0x24] + add r1, r0, #0 + ldr r0, [sp, #0x28] + cmp r1, r0 + bge _0223B2CA + add r0, r6, #3 + lsl r1, r0, #0xc + ldr r0, [sp, #0x14] + add r6, r0, r1 + lsl r0, r7, #1 + str r0, [sp, #0x3c] +_0223B280: + ldr r0, [sp, #0x2c] + add r4, r7, #0 + cmp r7, r0 + bge _0223B2BE + ldr r0, [sp, #0x24] + add r0, r0, #4 + lsl r1, r0, #6 + ldr r0, [sp, #0x34] + add r1, r0, r1 + ldr r0, [sp, #0x3c] + add r5, r1, r0 + ldr r1, [sp, #0x24] + ldr r0, [sp, #0x30] + sub r0, r1, r0 + str r0, [sp, #0x1c] +_0223B29E: + ldr r0, [sp, #0x38] + ldr r2, [sp, #0x1c] + ldr r0, [r0] + sub r1, r4, r7 + add r6, r6, #1 + bl MOD18_0223AD1C + cmp r0, #0 + beq _0223B2B4 + sub r0, r6, #1 + strh r0, [r5] +_0223B2B4: + ldr r0, [sp, #0x2c] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, r0 + blt _0223B29E +_0223B2BE: + ldr r0, [sp, #0x24] + add r1, r0, #1 + ldr r0, [sp, #0x28] + str r1, [sp, #0x24] + cmp r1, r0 + blt _0223B280 +_0223B2CA: + ldr r0, [sp, #0x20] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B2D0: .word 0x02251380 + thumb_func_end MOD18_0223B1A8 + + thumb_func_start MOD18_0223B2D4 +MOD18_0223B2D4: ; 0x0223B2D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + str r0, [sp] + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp] + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + str r0, [sp, #0x10] +_0223B2E6: + ldr r0, [sp, #0x14] + ldr r0, [r0, #0x38] + cmp r0, #1 + bne _0223B3DA + ldr r0, _0223B440 ; =0x000006A7 + bl FUN_020054C8 + mov r0, #0 + mov r4, #0 + str r4, [sp, #0x18] + str r0, [sp, #0x20] + str r0, [sp, #0x24] +_0223B2FE: + ldr r0, _0223B444 ; =0x02251380 + ldr r5, [r0] + ldr r0, [sp, #0x10] + add r6, r5, #0 + add r1, r0, r5 + mov r0, #0x81 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r6, #8 + ldrb r0, [r0, #0xc] + str r1, [sp, #0xc] + ldr r1, [r6, #0xc] + lsl r7, r0, #3 + ldr r0, [r6, #8] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + add r2, r1, #0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + str r0, [r5, #8] + str r1, [r6, #4] + cmp r7, #0 + ldr r0, [r6, #4] + bne _0223B33C + str r0, [sp, #8] + b _0223B348 +_0223B33C: + ldr r1, [sp, #0x20] + add r2, r7, #0 + mov r3, #0 + bl _ll_mul + str r1, [sp, #8] +_0223B348: + mov r0, #0x81 + ldr r1, [sp, #0xc] + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r6, r5, #0 + ldrb r0, [r0, #0xd] + add r6, #8 + ldr r1, [r6, #0xc] + lsl r7, r0, #3 + ldr r0, [r6, #8] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + add r3, r0, #0 + add r2, r1, #0 + ldr r0, [r6, #0x10] + ldr r1, [r6, #0x14] + add r0, r0, r3 + adc r1, r2 + str r0, [r5, #8] + str r1, [r6, #4] + cmp r7, #0 + bne _0223B37C + ldr r1, [r6, #4] + b _0223B388 +_0223B37C: + ldr r0, [r6, #4] + ldr r1, [sp, #0x24] + add r2, r7, #0 + mov r3, #0 + bl _ll_mul +_0223B388: + ldr r0, _0223B444 ; =0x02251380 + ldr r3, [sp, #0xc] + ldr r2, [r0] + ldr r0, _0223B448 ; =0x00000815 + ldr r5, [sp, #0xc] + ldrb r0, [r3, r0] + lsl r3, r0, #4 + ldr r0, [sp, #8] + add r0, r0, r3 + ldr r3, _0223B44C ; =0x00000816 + lsl r0, r0, #0xc + ldrb r3, [r5, r3] + lsl r3, r3, #4 + str r0, [sp, #0x28] + add r0, r1, r3 + add r0, #0x20 + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + mov r0, #0x7f + add r1, r2, r4 + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp, #0x18] + add r1, #8 + bl FUN_02020130 + ldr r0, _0223B444 ; =0x02251380 + ldr r0, [r0] + add r1, r0, r4 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x28 + bl FUN_02020044 + ldr r0, [sp, #0x18] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #3 + blt _0223B2FE +_0223B3DA: + ldr r0, [sp, #0x14] + add r0, r0, #4 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r0, #0xc + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #4 + bge _0223B3F2 + b _0223B2E6 +_0223B3F2: + mov r5, #0 + ldr r4, _0223B450 ; =0x022511F0 + mov r7, #0x20 + add r6, r5, #0 +_0223B3FA: + ldr r0, [sp] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _0223B430 + ldr r1, [sp] + ldr r1, [r1, #0x28] + ldr r3, [r1, #0xc] + add r1, r4, r0 + sub r1, r1, #1 + ldrb r2, [r1] + cmp r2, #0xff + bne _0223B418 + ldr r0, [sp] + str r6, [r0, #0x38] + b _0223B430 +_0223B418: + add r1, r0, #1 + ldr r0, [sp] + cmp r2, #0xfe + str r1, [r0, #0x38] + beq _0223B430 + lsl r0, r2, #1 + add r1, r5, #3 + add r0, r3, r0 + lsl r1, r1, #5 + add r2, r7, #0 + bl GX_LoadBGPltt +_0223B430: + ldr r0, [sp] + add r5, r5, #1 + add r0, r0, #4 + str r0, [sp] + cmp r5, #4 + blt _0223B3FA + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B440: .word 0x000006A7 +_0223B444: .word 0x02251380 +_0223B448: .word 0x00000815 +_0223B44C: .word 0x00000816 +_0223B450: .word 0x022511F0 + thumb_func_end MOD18_0223B2D4 + + thumb_func_start MOD18_0223B454 +MOD18_0223B454: ; 0x0223B454 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + mov r4, #0 + str r3, [sp] + ldr r5, _0223B47C ; =0x00000269 + cmp r6, #0 + ble _0223B47A +_0223B464: + ldr r3, [sp] + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD18_0223B1A8 + lsr r0, r0, #5 + add r4, r4, #1 + add r5, r5, r0 + cmp r4, r6 + blt _0223B464 +_0223B47A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223B47C: .word 0x00000269 + thumb_func_end MOD18_0223B454 + + thumb_func_start MOD18_0223B480 +MOD18_0223B480: ; 0x0223B480 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + mov r0, #0 + str r0, [sp, #0xc] +_0223B488: + ldr r0, _0223B694 ; =0x02251380 + ldr r4, [r0] + add r5, r4, #0 + add r5, #8 + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #8] + str r3, [r5, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0x15 + mov r3, #0 + bl _ll_mul + add r5, r4, #0 + add r5, #8 + str r1, [sp, #0x20] + sub r1, #8 + str r1, [sp, #0x20] + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r4, #8] + ldr r3, [r5, #4] + bl _ll_mul + ldr r2, [r5, #0x10] + ldr r3, [r5, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r4, #8] + str r3, [r5, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0x12 + mov r3, #0 + bl _ll_mul + sub r5, r1, #5 + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #8 + add r1, r5, #0 + str r5, [sp, #0x10] + str r0, [sp, #0x14] + cmp r1, r0 + bge _0223B548 + add r0, r5, #0 + ldr r3, [sp, #0x20] + mov r1, #0xd + add r6, r0, #0 + mul r6, r1 + add r3, #8 +_0223B500: + cmp r5, #0xa + bge _0223B53E + cmp r5, #0 + blt _0223B53E + ldr r4, [sp, #0x20] + add r0, r4, #0 + cmp r0, r3 + bge _0223B53E + ldr r0, [sp, #0x10] + sub r0, r5, r0 + lsl r1, r0, #3 + ldr r0, _0223B698 ; =0x02250AF0 + add r7, r0, r1 +_0223B51A: + cmp r4, #0xd + bge _0223B538 + cmp r4, #0 + blt _0223B538 + ldr r0, [sp, #0x20] + sub r0, r4, r0 + ldrb r2, [r7, r0] + cmp r2, #0 + beq _0223B538 + ldr r0, _0223B694 ; =0x02251380 + ldr r0, [r0] + add r0, r6, r0 + add r1, r4, r0 + ldr r0, _0223B69C ; =0x0000095E + strb r2, [r1, r0] +_0223B538: + add r4, r4, #1 + cmp r4, r3 + blt _0223B51A +_0223B53E: + ldr r0, [sp, #0x14] + add r5, r5, #1 + add r6, #0xd + cmp r5, r0 + blt _0223B500 +_0223B548: + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #0xa + blt _0223B488 + mov r0, #0 + str r0, [sp, #4] +_0223B556: + ldr r0, _0223B694 ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + str r3, [r4, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0x12 + mov r3, #0 + bl _ll_mul + add r6, r5, #0 + add r6, #8 + sub r4, r1, #5 + ldr r0, [r6, #8] + ldr r1, [r6, #0xc] + ldr r2, [r5, #8] + ldr r3, [r6, #4] + bl _ll_mul + ldr r2, [r6, #0x10] + ldr r3, [r6, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + str r3, [r6, #4] + add r0, r3, #0 + mov r1, #0 + mov r2, #0xf + mov r3, #0 + bl _ll_mul + sub r0, r1, #5 + str r0, [sp] + ldr r3, [sp] + mov r0, #1 + str r0, [sp, #8] + add r0, r3, #0 + add r0, r0, #5 + add r1, r3, #0 + str r0, [sp, #0x18] + cmp r1, r0 + bge _0223B61A + mov r1, #0xd + add r0, r3, #0 + mul r1, r0 + ldr r7, _0223B69C ; =0x0000095E + add r1, r5, r1 + add r0, r4, #5 +_0223B5CE: + cmp r3, #0xa + bge _0223B610 + cmp r3, #0 + blt _0223B610 + add r5, r4, #0 + cmp r4, r0 + bge _0223B60A + ldr r2, [sp] + sub r2, r3, r2 + lsl r6, r2, #3 + ldr r2, _0223B698 ; =0x02250AF0 + add r2, r2, r6 +_0223B5E6: + cmp r5, #0xd + bge _0223B604 + cmp r5, #0 + blt _0223B604 + sub r6, r5, r4 + ldrb r6, [r2, r6] + cmp r6, #0 + beq _0223B604 + add r6, r1, r5 + ldrb r6, [r6, r7] + cmp r6, #4 + bhs _0223B604 + mov r2, #0 + str r2, [sp, #8] + b _0223B60A +_0223B604: + add r5, r5, #1 + cmp r5, r0 + blt _0223B5E6 +_0223B60A: + ldr r2, [sp, #8] + cmp r2, #0 + beq _0223B61A +_0223B610: + ldr r2, [sp, #0x18] + add r3, r3, #1 + add r1, #0xd + cmp r3, r2 + blt _0223B5CE +_0223B61A: + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223B684 + ldr r0, [sp] + ldr r1, [sp] + str r0, [sp, #0x1c] + add r0, r0, #5 + mov ip, r0 + cmp r1, r0 + bge _0223B684 + ldr r0, [sp] + mov r1, #0xd + add r3, r0, #0 + mul r3, r1 + add r6, r4, #5 +_0223B638: + ldr r0, [sp, #0x1c] + cmp r0, #0xa + bge _0223B676 + cmp r0, #0 + blt _0223B676 + add r5, r4, #0 + cmp r4, r6 + bge _0223B676 + ldr r1, [sp] + sub r1, r0, r1 + lsl r0, r1, #2 + add r1, r1, r0 + ldr r0, _0223B6A0 ; =0x02250ABA + add r7, r0, r1 +_0223B654: + cmp r5, #0xd + bge _0223B670 + cmp r5, #0 + blt _0223B670 + sub r0, r5, r4 + ldrb r2, [r7, r0] + cmp r2, #0 + beq _0223B670 + ldr r0, _0223B694 ; =0x02251380 + ldr r0, [r0] + add r0, r3, r0 + add r1, r5, r0 + ldr r0, _0223B69C ; =0x0000095E + strb r2, [r1, r0] +_0223B670: + add r5, r5, #1 + cmp r5, r6 + blt _0223B654 +_0223B676: + ldr r0, [sp, #0x1c] + mov r1, ip + add r0, r0, #1 + add r3, #0xd + str r0, [sp, #0x1c] + cmp r0, r1 + blt _0223B638 +_0223B684: + ldr r0, [sp, #4] + add r0, r0, #1 + str r0, [sp, #4] + cmp r0, #0xf + bge _0223B690 + b _0223B556 +_0223B690: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223B694: .word 0x02251380 +_0223B698: .word 0x02250AF0 +_0223B69C: .word 0x0000095E +_0223B6A0: .word 0x02250ABA + thumb_func_end MOD18_0223B480 + + thumb_func_start MOD18_0223B6A4 +MOD18_0223B6A4: ; 0x0223B6A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r1, #2 + str r0, [sp] + bl FUN_0201886C + str r0, [sp, #8] + mov r2, #0 + mov r0, #4 + mov ip, r2 + str r0, [sp, #4] +_0223B6BA: + ldr r0, [sp, #4] + mov r6, #0 + lsl r3, r0, #5 +_0223B6C0: + ldr r0, _0223B728 ; =0x02251380 + lsl r7, r3, #1 + ldr r0, [r0] + ldr r4, _0223B72C ; =0x00002001 + add r0, r2, r0 + add r1, r6, r0 + ldr r0, _0223B730 ; =0x0000095E + add r6, r6, #1 + ldrb r0, [r1, r0] + add r3, r3, #2 + lsl r1, r0, #2 + ldr r0, _0223B734 ; =0x02250AD4 + ldr r1, [r0, r1] + ldr r0, [sp, #8] + ldrb r5, [r1] + add r0, r0, r7 + add r5, r5, r4 + ldr r4, [sp, #8] + strh r5, [r4, r7] + ldrb r5, [r1, #1] + ldr r4, _0223B72C ; =0x00002001 + add r4, r5, r4 + strh r4, [r0, #2] + ldrb r5, [r1, #2] + ldr r4, _0223B72C ; =0x00002001 + add r4, r5, r4 + add r5, r0, #0 + add r5, #0x40 + strh r4, [r5] + ldrb r4, [r1, #3] + ldr r1, _0223B72C ; =0x00002001 + add r0, #0x42 + add r1, r4, r1 + strh r1, [r0] + cmp r6, #0xd + blt _0223B6C0 + ldr r0, [sp, #4] + add r2, #0xd + add r0, r0, #2 + str r0, [sp, #4] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #0xa + blt _0223B6BA + ldr r0, [sp] + mov r1, #2 + bl FUN_02017CD0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223B728: .word 0x02251380 +_0223B72C: .word 0x00002001 +_0223B730: .word 0x0000095E +_0223B734: .word 0x02250AD4 + thumb_func_end MOD18_0223B6A4 + + thumb_func_start MOD18_0223B738 +MOD18_0223B738: ; 0x0223B738 + ldr r2, _0223B76C ; =0x02251380 + mov r3, #0xd + ldr r2, [r2] + mul r3, r1 + add r1, r2, r3 + add r0, r1, r0 + ldr r1, _0223B770 ; =0x000008DC + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B750 + mov r0, #0 + bx lr +_0223B750: + sub r3, r0, #1 + mov r0, #0xc + mul r0, r3 + add r0, r2, r0 + sub r1, #0xc8 + ldrb r0, [r0, r1] + cmp r0, #0 + beq _0223B768 + cmp r0, #0x3c + bge _0223B768 + mov r0, #1 + bx lr +_0223B768: + mov r0, #0 + bx lr + .align 2, 0 +_0223B76C: .word 0x02251380 +_0223B770: .word 0x000008DC + thumb_func_end MOD18_0223B738 + + thumb_func_start MOD18_0223B774 +MOD18_0223B774: ; 0x0223B774 + ldr r2, _0223B7A4 ; =0x02251380 + mov r3, #0xd + ldr r2, [r2] + mul r3, r1 + add r1, r2, r3 + add r0, r1, r0 + ldr r1, _0223B7A8 ; =0x000008DC + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223B78C + mov r0, #0 + bx lr +_0223B78C: + sub r3, r0, #1 + mov r0, #0xc + mul r0, r3 + add r0, r2, r0 + sub r1, #0xc8 + ldrb r0, [r0, r1] + cmp r0, #0x3c + blo _0223B7A0 + mov r0, #1 + bx lr +_0223B7A0: + mov r0, #0 + bx lr + .align 2, 0 +_0223B7A4: .word 0x02251380 +_0223B7A8: .word 0x000008DC + thumb_func_end MOD18_0223B774 + + thumb_func_start MOD18_0223B7AC +MOD18_0223B7AC: ; 0x0223B7AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r2, [sp, #4] + asr r2, r0, #3 + lsr r2, r2, #0x1c + add r2, r0, r2 + asr r0, r1, #3 + lsr r0, r0, #0x1c + add r0, r1, r0 + asr r0, r0, #4 + mov r5, #0 + sub r0, r0, #2 + asr r7, r2, #4 + add r6, r5, #0 + str r3, [sp, #8] + str r0, [sp, #0xc] + cmp r7, #0 + blt _0223B7DC + cmp r7, #0xd + bge _0223B7DC + cmp r0, #0 + blt _0223B7DC + cmp r0, #0xa + blt _0223B7DE +_0223B7DC: + b _0223B92A +_0223B7DE: + add r4, r0, #0 + mov r1, #0xd + ldr r0, _0223B930 ; =0x02251380 + mul r4, r1 + ldr r1, [r0] + ldr r0, _0223B934 ; =0x0000095E + add r0, r1, r0 + add r1, r0, r4 + ldrb r0, [r1, r7] + cmp r0, #0 + beq _0223B7F8 + sub r0, r0, #1 + strb r0, [r1, r7] +_0223B7F8: + ldr r0, _0223B930 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223B934 ; =0x0000095E + add r0, r1, r0 + add r1, r0, r4 + ldrb r0, [r1, r7] + cmp r0, #0 + beq _0223B80C + sub r0, r0, #1 + strb r0, [r1, r7] +_0223B80C: + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD18_0223B774 + cmp r0, #0 + beq _0223B82A + ldr r0, _0223B930 ; =0x02251380 + ldr r0, [r0] + add r0, r0, r4 + add r1, r0, r7 + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B82A + mov r5, #1 +_0223B82A: + ldr r1, [sp, #0xc] + add r0, r7, #0 + bl MOD18_0223B738 + cmp r0, #0 + beq _0223B84E + ldr r0, _0223B930 ; =0x02251380 + ldr r0, [r0] + add r0, r0, r4 + add r1, r0, r7 + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223B84E + ldr r0, [sp, #8] + mov r1, #0xf + mov r6, #1 + str r1, [r0, #0x14] +_0223B84E: + ldr r1, [sp, #0xc] + ldr r2, [sp, #4] + add r1, r1, #2 + lsl r0, r7, #4 + lsl r1, r1, #4 + add r3, r5, #0 + str r6, [sp] + bl MOD18_0223A2BC + cmp r5, #0 + bne _0223B92A + ldr r0, [sp, #4] + cmp r0, #0 + bne _0223B8B6 + ldr r4, _0223B938 ; =0x022511D4 + ldr r5, _0223B93C ; =0x02250860 + mov r3, #0 +_0223B870: + mov r0, #0 + ldrsb r1, [r4, r0] + ldr r0, [sp, #0xc] + add r2, r0, r1 + mov r0, #0 + ldrsb r0, [r5, r0] + add r1, r7, r0 + cmp r2, #0 + blt _0223B8AC + cmp r2, #0xa + bge _0223B8AC + cmp r1, #0 + blt _0223B8AC + cmp r1, #0xd + bge _0223B8AC + ldr r0, _0223B930 ; =0x02251380 + mov r6, #0xd + ldr r0, [r0] + mul r6, r2 + add r0, r0, r6 + add r0, r0, r1 + ldr r1, _0223B934 ; =0x0000095E + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223B8AC + ldr r1, _0223B934 ; =0x0000095E + ldrb r1, [r0, r1] + sub r2, r1, #1 + ldr r1, _0223B934 ; =0x0000095E + strb r2, [r0, r1] +_0223B8AC: + add r3, r3, #1 + add r4, r4, #1 + add r5, r5, #1 + cmp r3, #4 + blt _0223B870 +_0223B8B6: + mov r0, #0 + ldr r2, _0223B940 ; =0x022511EC + ldr r3, _0223B944 ; =0x022511D8 + mov ip, r0 +_0223B8BE: + mov r0, #0 + ldrsb r1, [r2, r0] + ldr r0, [sp, #0xc] + add r0, r0, r1 + mov r1, #0 + ldrsb r1, [r3, r1] + add r5, r7, r1 + cmp r0, #0 + blt _0223B91C + cmp r0, #0xa + bge _0223B91C + cmp r5, #0 + blt _0223B91C + cmp r5, #0xd + bge _0223B91C + add r4, r0, #0 + ldr r0, _0223B930 ; =0x02251380 + mov r1, #0xd + ldr r0, [r0] + mul r4, r1 + add r0, r0, r4 + add r6, r0, r5 + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r6, r0] + cmp r0, #0 + beq _0223B8FC + ldr r0, _0223B934 ; =0x0000095E + ldrb r0, [r6, r0] + sub r1, r0, #1 + ldr r0, _0223B934 ; =0x0000095E + strb r1, [r6, r0] +_0223B8FC: + ldr r0, [sp, #4] + cmp r0, #0 + bne _0223B91C + ldr r0, _0223B930 ; =0x02251380 + ldr r1, _0223B934 ; =0x0000095E + ldr r0, [r0] + add r0, r0, r4 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223B91C + ldr r1, _0223B934 ; =0x0000095E + ldrb r1, [r0, r1] + sub r4, r1, #1 + ldr r1, _0223B934 ; =0x0000095E + strb r4, [r0, r1] +_0223B91C: + mov r0, ip + add r0, r0, #1 + add r2, r2, #1 + add r3, r3, #1 + mov ip, r0 + cmp r0, #4 + blt _0223B8BE +_0223B92A: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223B930: .word 0x02251380 +_0223B934: .word 0x0000095E +_0223B938: .word 0x022511D4 +_0223B93C: .word 0x02250860 +_0223B940: .word 0x022511EC +_0223B944: .word 0x022511D8 + thumb_func_end MOD18_0223B7AC + + thumb_func_start MOD18_0223B948 +MOD18_0223B948: ; 0x0223B948 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + ldrb r1, [r6, #1] + str r2, [sp] + ldrb r2, [r6, #3] + mov ip, r1 + mov r1, #0 + mov lr, r1 + mov r1, ip + str r3, [sp, #4] + cmp r1, r2 + bge _0223B9B6 + mov r1, ip + cmp r1, r2 + bge _0223B9B6 + mov r1, lr + str r1, [sp, #8] + mov r1, ip + mov r7, #0x3f + lsl r5, r1, #5 + lsl r7, r7, #0xa +_0223B974: + ldr r2, [sp] + ldr r1, [sp, #8] + add r3, r2, r1 + ldrb r2, [r6] + ldrb r1, [r6, #2] + cmp r2, r1 + bge _0223B998 +_0223B982: + add r1, r2, r5 + lsl r1, r1, #1 + ldrh r4, [r0, r1] + add r2, r2, #1 + and r4, r7 + add r4, r3, r4 + strh r4, [r0, r1] + ldrb r1, [r6, #2] + add r3, r3, #1 + cmp r2, r1 + blt _0223B982 +_0223B998: + mov r1, ip + add r1, r1, #1 + mov ip, r1 + ldr r2, [sp, #8] + ldr r1, [sp, #4] + add r5, #0x20 + add r1, r2, r1 + str r1, [sp, #8] + mov r1, lr + add r1, r1, #1 + mov lr, r1 + ldrb r2, [r6, #3] + mov r1, ip + cmp r1, r2 + blt _0223B974 +_0223B9B6: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0223B948 + + thumb_func_start MOD18_0223B9BC +MOD18_0223B9BC: ; 0x0223B9BC + push {r4, lr} + ldr r3, _0223B9E0 ; =0x02251380 + ldr r2, _0223B9E4 ; =0x000009E6 + ldr r4, [r3] + mov r1, #1 + strb r1, [r4, r2] + ldr r3, [r3] + sub r2, r2, #2 + strb r1, [r3, r2] + bl FUN_0201886C + ldr r1, _0223B9E8 ; =0x02250874 + mov r2, #0x30 + mov r3, #0x36 + bl MOD18_0223B948 + pop {r4, pc} + nop +_0223B9E0: .word 0x02251380 +_0223B9E4: .word 0x000009E6 +_0223B9E8: .word 0x02250874 + thumb_func_end MOD18_0223B9BC + + thumb_func_start MOD18_0223B9EC +MOD18_0223B9EC: ; 0x0223B9EC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r3, #0 + add r5, r0, #0 + cmp r4, #2 + blt _0223BA24 + bne _0223BA36 + cmp r1, #0xd6 + ble _0223BA24 + cmp r1, #0xfc + bge _0223BA24 + cmp r2, #0x2b + ble _0223BA1C + cmp r2, #0x6e + bge _0223BA1C + ldr r2, _0223BB40 ; =0x02251380 + ldr r1, _0223BB44 ; =0x000009E6 + ldr r3, [r2] + mov r0, #0 + strb r0, [r3, r1] + ldr r2, [r2] + sub r1, r1, #2 + strb r0, [r2, r1] + b _0223BA36 +_0223BA1C: + cmp r2, #0x72 + ble _0223BA24 + cmp r2, #0xae + blt _0223BA26 +_0223BA24: + b _0223BB3C +_0223BA26: + ldr r2, _0223BB40 ; =0x02251380 + ldr r1, _0223BB44 ; =0x000009E6 + ldr r3, [r2] + mov r0, #1 + strb r0, [r3, r1] + ldr r2, [r2] + sub r1, r1, #2 + strb r0, [r2, r1] +_0223BA36: + add r0, r5, #0 + mov r1, #1 + bl FUN_0201886C + ldr r1, _0223BB40 ; =0x02251380 + add r6, r0, #0 + ldr r2, [r1] + ldr r1, _0223BB44 ; =0x000009E6 + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223BA52 + cmp r1, #1 + beq _0223BAC4 + b _0223BB34 +_0223BA52: + cmp r4, #2 + bne _0223BA74 + ldr r1, _0223BB48 ; =0x02250878 + mov r2, #0x18 + mov r3, #0x36 + bl MOD18_0223B948 + ldr r1, _0223BB4C ; =0x02250874 + add r0, r6, #0 + mov r2, #0x24 + mov r3, #0x36 + bl MOD18_0223B948 + ldr r0, _0223BB50 ; =0x000005DC + bl FUN_020054C8 + b _0223BA82 +_0223BA74: + cmp r4, #3 + bne _0223BA82 + ldr r1, _0223BB48 ; =0x02250878 + mov r2, #0x1e + mov r3, #0x36 + bl MOD18_0223B948 +_0223BA82: + cmp r4, #2 + bne _0223BB34 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #6 + bl FUN_02020130 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x3a + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #5 + lsl r0, r0, #0x10 + str r0, [sp, #4] + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + b _0223BB34 +_0223BAC4: + cmp r4, #2 + bne _0223BAE6 + ldr r1, _0223BB48 ; =0x02250878 + mov r2, #0x12 + mov r3, #0x36 + bl MOD18_0223B948 + ldr r1, _0223BB4C ; =0x02250874 + add r0, r6, #0 + mov r2, #0x2a + mov r3, #0x36 + bl MOD18_0223B948 + ldr r0, _0223BB50 ; =0x000005DC + bl FUN_020054C8 + b _0223BAF4 +_0223BAE6: + cmp r4, #3 + bne _0223BAF4 + ldr r1, _0223BB4C ; =0x02250874 + mov r2, #0x30 + mov r3, #0x36 + bl MOD18_0223B948 +_0223BAF4: + cmp r4, #2 + bne _0223BB34 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #7 + bl FUN_02020130 + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0x3a + lsl r0, r0, #0xe + str r0, [sp] + mov r0, #0x26 + lsl r0, r0, #0xe + str r0, [sp, #4] + ldr r0, _0223BB40 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 +_0223BB34: + add r0, r5, #0 + mov r1, #1 + bl FUN_02017CD0 +_0223BB3C: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223BB40: .word 0x02251380 +_0223BB44: .word 0x000009E6 +_0223BB48: .word 0x02250878 +_0223BB4C: .word 0x02250874 +_0223BB50: .word 0x000005DC + thumb_func_end MOD18_0223B9EC + + thumb_func_start MOD18_0223BB54 +MOD18_0223BB54: ; 0x0223BB54 + ldr r1, _0223BB74 ; =0x02251380 + ldr r2, [r1] + ldr r1, _0223BB78 ; =0x000009E7 + ldrb r2, [r2, r1] + asr r1, r2, #1 + lsr r1, r1, #0x1e + add r1, r2, r1 + asr r1, r1, #2 + lsl r1, r1, #2 + add r1, #0x10 + lsl r1, r1, #0xc + str r1, [r0] + mov r1, #1 + lsl r1, r1, #0x10 + str r1, [r0, #4] + bx lr + .align 2, 0 +_0223BB74: .word 0x02251380 +_0223BB78: .word 0x000009E7 + thumb_func_end MOD18_0223BB54 + + thumb_func_start MOD18_0223BB7C +MOD18_0223BB7C: ; 0x0223BB7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r1, _0223BC44 ; =0x02251380 + str r0, [sp] + ldr r2, [r1] + ldr r1, _0223BC48 ; =0x000009E7 + ldrb r4, [r2, r1] + mov r1, #0 + bl FUN_0201886C + add r5, r0, #0 + asr r0, r4, #1 + lsr r0, r0, #0x1e + add r0, r4, r0 + asr r0, r0, #2 + lsl r4, r0, #2 + add r0, sp, #4 + bl MOD18_0223BB54 + add r0, r4, #0 + mov r1, #0x18 + bl _s32_div_f + ldr r0, _0223BC44 ; =0x02251380 + ldr r2, [r0] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r2, r0] + asr r2, r1, #1 + lsr r2, r2, #0x1e + add r2, r1, r2 + asr r2, r2, #2 + mov r1, #6 + sub r1, r1, r2 + bl FUN_02020130 + add r4, #8 + mov r0, #0xd0 + sub r1, r0, r4 + asr r0, r1, #2 + lsr r0, r0, #0x1d + add r0, r1, r0 + asr r7, r0, #3 + mov r4, #0 + cmp r7, #0 + ble _0223BC38 +_0223BBD8: + mov r0, #0x19 + sub r0, r0, r4 + lsl r6, r0, #1 + add r0, r4, #0 + mov r1, #3 + bl _s32_div_f + add r0, r1, #0 + mov r1, #0x3f + ldrh r2, [r5, r6] + lsl r1, r1, #0xa + and r1, r2 + add r1, #0xb + sub r1, r1, r0 + strh r1, [r5, r6] + mov r1, #0x39 + sub r1, r1, r4 + lsl r1, r1, #1 + mov r2, #0x3f + ldrh r3, [r5, r1] + lsl r2, r2, #0xa + and r2, r3 + add r2, #0x41 + sub r2, r2, r0 + strh r2, [r5, r1] + mov r1, #0x59 + sub r1, r1, r4 + lsl r1, r1, #1 + mov r2, #0x3f + ldrh r3, [r5, r1] + lsl r2, r2, #0xa + and r2, r3 + add r2, #0x77 + sub r2, r2, r0 + strh r2, [r5, r1] + mov r1, #0x79 + sub r1, r1, r4 + lsl r1, r1, #1 + mov r2, #0x3f + ldrh r3, [r5, r1] + lsl r2, r2, #0xa + add r4, r4, #1 + and r2, r3 + add r2, #0xad + sub r0, r2, r0 + strh r0, [r5, r1] + cmp r4, r7 + blt _0223BBD8 +_0223BC38: + ldr r0, [sp] + mov r1, #0 + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223BC44: .word 0x02251380 +_0223BC48: .word 0x000009E7 + thumb_func_end MOD18_0223BB7C + + thumb_func_start MOD18_0223BC4C +MOD18_0223BC4C: ; 0x0223BC4C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 + str r0, [sp] + str r5, [sp, #4] +_0223BC56: + ldr r0, _0223BCF4 ; =0x02251380 + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _0223BCF8 ; =0x000008CC + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _0223BCDA + ldr r0, _0223BCFC ; =0x000008D4 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _0223BCDA + bl FUN_02031190 + bl FUN_0204E3EC + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E440 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E35C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0204E3A4 + add r1, r4, #0 + sub r1, #0xa + cmp r7, r1 + ble _0223BCDA + add r4, #0xa + cmp r7, r4 + bge _0223BCDA + add r1, r6, #0 + sub r1, #0xa + cmp r0, r1 + ble _0223BCDA + add r6, #0xa + cmp r0, r6 + bge _0223BCDA + ldr r0, _0223BCF4 ; =0x02251380 + ldr r1, _0223BCFC ; =0x000008D4 + ldr r0, [r0] + ldr r3, [sp] + add r2, r0, r5 + ldr r0, _0223BCF8 ; =0x000008CC + ldrb r1, [r2, r1] + ldrb r0, [r2, r0] + mov r2, #1 + bl MOD18_0223B7AC + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223BCF4 ; =0x02251380 + mov r1, #0xff + ldr r0, [r0] + add r2, r0, r5 + ldr r0, _0223BCF8 ; =0x000008CC + strb r1, [r2, r0] + ldr r0, _0223BCF4 ; =0x02251380 + ldr r0, [r0] + add r2, r0, r5 + ldr r0, _0223BCFC ; =0x000008D4 + strb r1, [r2, r0] +_0223BCDA: + add r5, r5, #1 + cmp r5, #8 + blt _0223BC56 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0223BCF0 + ldr r0, _0223BCF4 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B6A4 +_0223BCF0: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223BCF4: .word 0x02251380 +_0223BCF8: .word 0x000008CC +_0223BCFC: .word 0x000008D4 + thumb_func_end MOD18_0223BC4C + + thumb_func_start MOD18_0223BD00 +MOD18_0223BD00: ; 0x0223BD00 + push {r4, r5, r6, lr} + add r6, r0, #0 + mov r4, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BD88 + cmp r6, #6 + beq _0223BD1C + cmp r6, #7 + beq _0223BD1C + sub r0, r6, #1 + cmp r0, #1 + bhi _0223BD42 +_0223BD1C: + ldr r0, _0223BD8C ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + mov r0, #0 + str r3, [r4, #4] + add r4, r0, #1 + b _0223BD6C +_0223BD42: + ldr r0, _0223BD8C ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r3, [r4, #0x10] + ldr r2, [r4, #0x14] + add r0, r3, r0 + adc r2, r1 + str r0, [r5, #8] + mov r1, #0 + lsr r0, r2, #0x1e + lsl r1, r1, #2 + orr r1, r0 + str r2, [r4, #4] + add r4, r1, #1 +_0223BD6C: + sub r0, r6, #6 + cmp r0, #4 + bhi _0223BD74 + add r4, #0xa +_0223BD74: + ldr r0, _0223BD90 ; =0x000009E7 + mov r1, #0x27 + ldrb r5, [r5, r0] + add r0, r5, #0 + bl _s32_div_f + add r4, r4, r0 + cmp r5, #0 + beq _0223BD88 + add r4, r4, #5 +_0223BD88: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BD8C: .word 0x02251380 +_0223BD90: .word 0x000009E7 + thumb_func_end MOD18_0223BD00 + + thumb_func_start MOD18_0223BD94 +MOD18_0223BD94: ; 0x0223BD94 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223BDDC ; =0x02251380 + add r4, r1, #0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CB4 + ldr r0, _0223BDDC ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BDCC + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02249450 + pop {r4, r5, r6, pc} +_0223BDCC: + add r0, r5, #0 + bl MOD18_02249480 + add r0, r6, #0 + add r1, r5, #0 + bl FUN_02026664 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BDDC: .word 0x02251380 + thumb_func_end MOD18_0223BD94 + + thumb_func_start MOD18_0223BDE0 +MOD18_0223BDE0: ; 0x0223BDE0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0223BE24 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r5, r0, #0 + add r0, r4, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BE10 + add r0, r5, #0 + bl FUN_02026050 + cmp r0, #0x28 + beq _0223BE0C + mov r0, #1 + pop {r3, r4, r5, pc} +_0223BE0C: + mov r0, #0 + pop {r3, r4, r5, pc} +_0223BE10: + add r0, r5, #0 + bl FUN_0202616C + cmp r0, #0x28 + beq _0223BE1E + mov r0, #1 + pop {r3, r4, r5, pc} +_0223BE1E: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0223BE24: .word 0x02251380 + thumb_func_end MOD18_0223BDE0 + + thumb_func_start MOD18_0223BE28 +MOD18_0223BE28: ; 0x0223BE28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + mov r0, #1 + mov lr, r0 + ldr r0, [r4, #0xc] + mov r2, #0 + cmp r0, #0 + ble _0223BE48 + add r3, sp, #0 + mov r1, #1 +_0223BE3E: + stmia r3!, {r1} + ldr r0, [r4, #0xc] + add r2, r2, #1 + cmp r2, r0 + blt _0223BE3E +_0223BE48: + mov r0, #0 + mov ip, r0 + ldr r0, _0223BED4 ; =0x02251380 + mov r6, #0 + ldr r3, [r0] + add r7, sp, #0 +_0223BE54: + mov r2, #0 +_0223BE56: + ldr r0, _0223BED8 ; =0x000008DC + add r1, r3, r2 + ldrb r0, [r1, r0] + ldr r5, [r4, #0xc] + cmp r0, r5 + bgt _0223BE76 + cmp r0, #0 + beq _0223BE76 + ldr r5, _0223BEDC ; =0x0000095E + ldrb r1, [r1, r5] + cmp r1, #0 + beq _0223BE76 + lsl r0, r0, #2 + add r0, r7, r0 + sub r0, r0, #4 + str r6, [r0] +_0223BE76: + add r2, r2, #1 + cmp r2, #0xd + blt _0223BE56 + mov r0, ip + add r0, r0, #1 + add r3, #0xd + mov ip, r0 + cmp r0, #0xa + blt _0223BE54 + ldr r0, [r4, #0xc] + mov r3, #0 + cmp r0, #0 + ble _0223BECC + add r0, sp, #0 + add r1, r3, #0 + add r2, r4, #0 + mov r7, #1 +_0223BE98: + ldr r5, [r0] + cmp r5, #0 + bne _0223BEA4 + mov r5, #0 + mov lr, r5 + b _0223BEBE +_0223BEA4: + ldr r5, _0223BED4 ; =0x02251380 + ldr r5, [r5] + add r6, r5, r1 + ldr r5, _0223BEE0 ; =0x00000818 + ldrb r5, [r6, r5] + cmp r5, #0 + bne _0223BEBE + ldr r5, _0223BED4 ; =0x02251380 + str r7, [r2, #0x38] + ldr r5, [r5] + add r6, r5, r1 + ldr r5, _0223BEE0 ; =0x00000818 + strb r7, [r6, r5] +_0223BEBE: + ldr r5, [r4, #0xc] + add r3, r3, #1 + add r0, r0, #4 + add r1, #0xc + add r2, r2, #4 + cmp r3, r5 + blt _0223BE98 +_0223BECC: + mov r0, lr + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223BED4: .word 0x02251380 +_0223BED8: .word 0x000008DC +_0223BEDC: .word 0x0000095E +_0223BEE0: .word 0x00000818 + thumb_func_end MOD18_0223BE28 + + thumb_func_start MOD18_0223BEE4 +MOD18_0223BEE4: ; 0x0223BEE4 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r1, [r5, #0xc] + mov r0, #0 + cmp r1, #0 + ble _0223BF74 + ldr r2, _0223BF78 ; =0x02251380 + ldr r3, _0223BF7C ; =0x00000818 + ldr r2, [r2] + add r6, r2, #0 +_0223BEF8: + ldrb r4, [r6, r3] + cmp r4, #1 + bne _0223BF6C + add r4, r0, #0 + mov r1, #0xc + mul r4, r1 + ldr r0, _0223BF80 ; =0x00000814 + add r1, r2, r4 + ldrb r0, [r1, r0] + bl MOD18_0223BD00 + str r0, [r5, #0x48] + bl MOD18_0223D638 + ldr r1, _0223BF78 ; =0x02251380 + ldr r1, [r1] + add r2, r1, r4 + ldr r1, _0223BF80 ; =0x00000814 + ldrb r1, [r2, r1] + bl MOD18_0224DDD0 + ldr r0, _0223BF78 ; =0x02251380 + ldr r0, [r0] + add r1, r0, r4 + ldr r0, _0223BF80 ; =0x00000814 + ldrb r0, [r1, r0] + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BF44 + mov r4, #0x45 + bl MOD18_0223D638 + ldr r2, [r5, #0x48] + mov r1, #1 + bl MOD18_0224DEA4 + b _0223BF50 +_0223BF44: + mov r4, #0x11 + bl MOD18_0223D638 + mov r1, #2 + bl MOD18_0224DF54 +_0223BF50: + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223BF78 ; =0x02251380 + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #1 + pop {r4, r5, r6, pc} +_0223BF6C: + add r0, r0, #1 + add r6, #0xc + cmp r0, r1 + blt _0223BEF8 +_0223BF74: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223BF78: .word 0x02251380 +_0223BF7C: .word 0x00000818 +_0223BF80: .word 0x00000814 + thumb_func_end MOD18_0223BEE4 + + thumb_func_start MOD18_0223BF84 +MOD18_0223BF84: ; 0x0223BF84 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _0223C070 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CB4 + add r7, r0, #0 + ldr r0, _0223C070 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + ldr r5, [r4, #0xc] + mov r2, #0 + cmp r5, #0 + ble _0223C06A + ldr r0, _0223C070 ; =0x02251380 + ldr r6, [r0] + ldr r0, _0223C074 ; =0x00000818 + add r3, r6, #0 +_0223BFB2: + ldrb r1, [r3, r0] + cmp r1, #1 + bne _0223C062 + mov r0, #0xc + mul r0, r2 + ldr r1, _0223C074 ; =0x00000818 + mov r3, #0 + add r2, r6, r0 + strb r3, [r2, r1] + ldr r2, _0223C070 ; =0x02251380 + ldr r2, [r2] + add r2, r2, r0 + sub r0, r1, #4 + ldrb r5, [r2, r0] + add r0, r5, #0 + bl MOD18_0223D194 + cmp r0, #0 + beq _0223BFE2 + add r0, r7, #0 + mov r1, #1 + bl FUN_02026A0C + b _0223C032 +_0223BFE2: + ldr r0, _0223C070 ; =0x02251380 + add r1, r5, #0 + ldr r0, [r0] + mov r2, #1 + ldr r0, [r0] + bl FUN_0206151C + cmp r5, #0x17 + blt _0223BFF8 + cmp r5, #0x1d + blt _0223C000 +_0223BFF8: + add r0, r5, #0 + sub r0, #0x24 + cmp r0, #1 + bhi _0223C02A +_0223C000: + add r0, r7, #0 + mov r1, #1 + bl FUN_02026A58 + ldr r0, _0223C070 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r6, r0, #0 + bl FUN_0205F740 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_0205F750 + b _0223C032 +_0223C02A: + add r0, r7, #0 + mov r1, #1 + bl FUN_02026A9C +_0223C032: + add r0, r5, #0 + bl MOD18_0223BDE0 + cmp r0, #0 + beq _0223C046 + ldr r1, [r4, #0x48] + add r0, r5, #0 + bl MOD18_0223BD94 + b _0223C06A +_0223C046: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x41 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, _0223C070 ; =0x02251380 + ldr r2, [r1] + mov r1, #0x9e + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223C062: + add r2, r2, #1 + add r3, #0xc + cmp r2, r5 + blt _0223BFB2 +_0223C06A: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223C070: .word 0x02251380 +_0223C074: .word 0x00000818 + thumb_func_end MOD18_0223BF84 + + thumb_func_start MOD18_0223C078 +MOD18_0223C078: ; 0x0223C078 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _0223C178 ; =0x02251380 + ldr r4, [r0] + ldr r0, _0223C17C ; =0x000009E8 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223C174 + sub r0, r0, #1 + ldrb r1, [r4, r0] + mov r0, #0xc4 + sub r6, r0, r1 + add r0, r6, #0 + mov r1, #0x32 + bl _s32_div_f + add r7, r0, #0 + ldr r0, _0223C17C ; =0x000009E8 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldr r0, _0223C178 ; =0x02251380 + mov r1, #0xf + ldr r5, [r0] + add r0, r6, #0 + bl _s32_div_f + ldr r1, _0223C17C ; =0x000009E8 + ldrb r2, [r5, r1] + cmp r2, r0 + ble _0223C0CA + mov r2, #0 + add r0, r1, #2 + strb r2, [r5, r0] + ldr r0, _0223C178 ; =0x02251380 + ldr r3, [r0] + add r0, r1, #2 + ldrsb r2, [r3, r0] + add r0, r1, #1 + strb r2, [r3, r0] + b _0223C146 +_0223C0CA: + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + ldr r2, [r4, #0x10] + ldr r3, [r4, #0x14] + add r0, r2, r0 + adc r3, r1 + str r0, [r5, #8] + str r3, [r4, #4] + add r6, r7, #3 + bne _0223C0EE + ldr r1, [r4, #4] + b _0223C0FA +_0223C0EE: + ldr r0, [r4, #4] + mov r1, #0 + mov r3, #0 + add r2, r6, #0 + bl _ll_mul +_0223C0FA: + add r2, r7, #3 + lsr r0, r2, #0x1f + add r0, r2, r0 + asr r7, r0, #1 + ldr r0, _0223C180 ; =0x000009E9 + sub r1, r1, r7 + strb r1, [r5, r0] + ldr r0, _0223C178 ; =0x02251380 + ldr r5, [r0] + add r4, r5, #0 + add r4, #8 + ldr r0, [r4, #8] + ldr r1, [r4, #0xc] + ldr r2, [r5, #8] + ldr r3, [r4, #4] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x14] + add r0, r0, r2 + adc r1, r3 + str r0, [r5, #8] + str r1, [r4, #4] + cmp r6, #0 + bne _0223C134 + ldr r1, [r4, #4] + b _0223C140 +_0223C134: + ldr r0, [r4, #4] + mov r1, #0 + mov r3, #0 + add r2, r6, #0 + bl _ll_mul +_0223C140: + ldr r0, _0223C184 ; =0x000009EA + sub r1, r1, r7 + strb r1, [r5, r0] +_0223C146: + add r0, sp, #0 + bl MOD18_0223BB54 + ldr r0, _0223C178 ; =0x02251380 + ldr r1, _0223C180 ; =0x000009E9 + ldr r0, [r0] + ldr r3, [sp] + ldrsb r2, [r0, r1] + add r1, r1, #1 + lsl r2, r2, #0xc + sub r2, r3, r2 + str r2, [sp] + ldrsb r1, [r0, r1] + ldr r2, [sp, #4] + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [sp, #4] + mov r1, #0x7b + lsl r1, r1, #2 + ldr r0, [r0, r1] + add r1, sp, #0 + bl FUN_02020044 +_0223C174: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C178: .word 0x02251380 +_0223C17C: .word 0x000009E8 +_0223C180: .word 0x000009E9 +_0223C184: .word 0x000009EA + thumb_func_end MOD18_0223C078 + + thumb_func_start MOD18_0223C188 +MOD18_0223C188: ; 0x0223C188 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223C1E0 ; =0x02251380 + ldr r4, [r0] + ldr r0, _0223C1E4 ; =0x000009E8 + ldrb r6, [r4, r0] + cmp r6, #0 + beq _0223C1DE + sub r0, r0, #1 + ldrb r1, [r4, r0] + mov r0, #0xc4 + sub r0, r0, r1 + mov r1, #0xa + bl _s32_div_f + cmp r6, r0 + ble _0223C1B0 + ldr r0, _0223C1E4 ; =0x000009E8 + mov r1, #0 + strb r1, [r4, r0] +_0223C1B0: + ldr r7, _0223C1E0 ; =0x02251380 + mov r4, #0 +_0223C1B4: + ldr r6, [r7] + ldr r3, _0223C1E8 ; =0x000009E9 + lsl r1, r4, #0x18 + ldrsb r3, [r6, r3] + add r0, r5, #0 + lsr r1, r1, #0x18 + mov r2, #0 + bl FUN_020179E0 + lsl r1, r4, #0x18 + ldr r6, [r7] + ldr r3, _0223C1EC ; =0x000009EA + add r0, r5, #0 + ldrsb r3, [r6, r3] + lsr r1, r1, #0x18 + mov r2, #3 + bl FUN_020179E0 + add r4, r4, #1 + cmp r4, #3 + blt _0223C1B4 +_0223C1DE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C1E0: .word 0x02251380 +_0223C1E4: .word 0x000009E8 +_0223C1E8: .word 0x000009E9 +_0223C1EC: .word 0x000009EA + thumb_func_end MOD18_0223C188 + + thumb_func_start MOD18_0223C1F0 +MOD18_0223C1F0: ; 0x0223C1F0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r6, r0, #0 + ldr r0, _0223C338 ; =0x02251380 + ldr r2, [r0] + ldr r0, _0223C33C ; =0x000009E5 + ldrb r1, [r2, r0] + cmp r1, #1 + bne _0223C216 + mov r1, #0 + strb r1, [r2, r0] +_0223C216: + ldr r1, _0223C340 ; =0x021C48F8 + ldrh r0, [r1, #0x20] + cmp r0, #0 + beq _0223C29A + ldrh r0, [r1, #0x1c] + cmp r0, #0xd0 + bhs _0223C28C + ldrh r1, [r1, #0x1e] + cmp r1, #0x20 + blo _0223C28C + add r2, sp, #0 + strb r0, [r2] + strb r1, [r2, #1] + ldr r2, _0223C338 ; =0x02251380 + ldr r3, [r2] + ldr r2, _0223C344 ; =0x000009E4 + ldrb r2, [r3, r2] + add r3, r5, #0 + bl MOD18_0223B7AC + ldr r0, _0223C338 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C344 ; =0x000009E4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223C24E + mov r4, #4 + b _0223C250 +_0223C24E: + mov r4, #8 +_0223C250: + mov r0, #0x44 + add r1, sp, #0 + bl FUN_020311D0 + ldr r0, _0223C338 ; =0x02251380 + ldr r1, _0223C348 ; =0x000009E7 + ldr r0, [r0] + ldrb r2, [r0, r1] + cmp r2, r4 + ble _0223C268 + sub r2, r2, r4 + b _0223C26A +_0223C268: + mov r2, #0 +_0223C26A: + strb r2, [r0, r1] + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223B6A4 + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0, #4] + bl MOD18_0223BB7C + ldr r0, _0223C338 ; =0x02251380 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223C34C ; =0x000009E8 + strb r2, [r1, r0] + b _0223C29A +_0223C28C: + cmp r0, #0xd0 + blo _0223C29A + ldr r0, _0223C338 ; =0x02251380 + mov r2, #2 + ldr r1, [r0] + ldr r0, _0223C33C ; =0x000009E5 + strb r2, [r1, r0] +_0223C29A: + ldr r0, [r5, #0x14] + cmp r0, #0 + beq _0223C2AC + sub r0, r0, #1 + str r0, [r5, #0x14] + bne _0223C2AC + ldr r0, _0223C350 ; =0x000006A5 + bl FUN_020054C8 +_0223C2AC: + ldr r0, _0223C338 ; =0x02251380 + ldr r2, _0223C340 ; =0x021C48F8 + ldr r3, [r0] + ldr r4, _0223C33C ; =0x000009E5 + ldr r0, [r3, #4] + ldrh r1, [r2, #0x1c] + ldrh r2, [r2, #0x1e] + ldrb r3, [r3, r4] + bl MOD18_0223B9EC + ldr r0, _0223C338 ; =0x02251380 + ldr r2, [r0] + add r0, r4, #0 + ldrb r1, [r2, r0] + cmp r1, #2 + blo _0223C2D0 + add r1, r1, #1 + strb r1, [r2, r0] +_0223C2D0: + add r0, r5, #0 + bl MOD18_0223BC4C + add r0, r5, #0 + bl MOD18_0223BE28 + cmp r0, #0 + beq _0223C30A + add r0, r6, #0 + bl FUN_02026634 + ldr r0, _0223C338 ; =0x02251380 + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x1e + bl FUN_0202A170 + mov r0, #0xe + str r0, [r5] + mov r0, #0x19 + str r0, [r5, #8] + mov r0, #1 + add r5, #0x50 + add sp, #4 + strb r0, [r5] + pop {r3, r4, r5, r6, pc} +_0223C30A: + ldr r0, _0223C338 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C348 ; =0x000009E7 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223C332 + add r0, r6, #0 + bl FUN_02026634 + add r0, r5, #0 + mov r1, #0 + add r0, #0x50 + strb r1, [r0] + mov r0, #0x2d + str r0, [r5, #8] + mov r0, #0x16 + str r0, [r5] + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0223C332: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223C338: .word 0x02251380 +_0223C33C: .word 0x000009E5 +_0223C340: .word 0x021C48F8 +_0223C344: .word 0x000009E4 +_0223C348: .word 0x000009E7 +_0223C34C: .word 0x000009E8 +_0223C350: .word 0x000006A5 + thumb_func_end MOD18_0223C1F0 + + thumb_func_start MOD18_0223C354 +MOD18_0223C354: ; 0x0223C354 + push {r3, r4} + ldr r3, _0223C374 ; =0x02251380 + ldr r2, _0223C378 ; =0x000009EB + ldr r4, [r3] + ldrb r1, [r4, r2] + lsl r1, r1, #2 + add r4, r4, r1 + mov r1, #0x57 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r1, [r3] + ldrb r0, [r1, r2] + add r0, r0, #1 + strb r0, [r1, r2] + pop {r3, r4} + bx lr + .align 2, 0 +_0223C374: .word 0x02251380 +_0223C378: .word 0x000009EB + thumb_func_end MOD18_0223C354 + + thumb_func_start MOD18_0223C37C +MOD18_0223C37C: ; 0x0223C37C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _0223C568 ; =0x02251380 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + strb r2, [r1, r0] + bl FUN_020B0FC0 + mov r0, #0 + str r0, [sp] + mov r1, #0x7c + str r1, [sp, #4] + str r0, [sp, #8] + mov r3, #0x1f + str r3, [sp, #0xc] + mov r2, #0x1d + str r2, [sp, #0x10] + add r2, r0, #0 + bl FUN_02009EAC + bl MOD18_0223C680 + ldr r1, _0223C568 ; =0x02251380 + mov r0, #0x1a + ldr r1, [r1] + mov r2, #0x1d + add r1, #0x24 + bl FUN_02008C9C + ldr r1, _0223C568 ; =0x02251380 + ldr r2, [r1] + str r0, [r2, #0x20] + ldr r0, [r1] + mov r2, #6 + add r0, #0x24 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r4, #0 + mov r7, #0x53 + ldr r6, _0223C568 ; =0x02251380 + add r5, r4, #0 + lsl r7, r7, #2 +_0223C3D6: + mov r0, #2 + add r1, r4, #0 + mov r2, #0x1d + bl FUN_02008DEC + ldr r1, [r6] + add r4, r4, #1 + add r1, r1, r5 + add r5, r5, #4 + str r0, [r1, r7] + cmp r4, #4 + blt _0223C3D6 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #6 + ldr r1, [r0] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_02008F34 + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009A50 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #7 + ldr r1, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_02008FEC + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #5 + ldr r1, [r0] + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #4 + ldr r1, [r0] + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r2, #3 + ldr r1, [r0] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + mov r3, #0 + bl FUN_02008F34 + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009A50 + mov r2, #1 + str r2, [sp] + str r2, [sp, #4] + mov r0, #3 + str r0, [sp, #8] + mov r0, #0x1d + str r0, [sp, #0xc] + ldr r0, _0223C568 ; =0x02251380 + mov r3, #0 + ldr r1, [r0] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x34 + bl FUN_02008FEC + bl MOD18_0223C354 + ldr r0, _0223C568 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C56C ; =0x000009EB + ldrb r0, [r1, r0] + sub r0, r0, #1 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + mov r0, #1 + str r0, [sp] + mov r2, #2 + str r2, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r3, #0 + ldr r1, [r0] + mov r0, #0x55 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + mov r2, #1 + str r2, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #0x1d + str r0, [sp, #8] + ldr r0, _0223C568 ; =0x02251380 + mov r3, #0 + ldr r1, [r0] + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x40 + bl FUN_020090AC + bl MOD18_0223C354 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223C568: .word 0x02251380 +_0223C56C: .word 0x000009EB + thumb_func_end MOD18_0223C37C + + thumb_func_start MOD18_0223C570 +MOD18_0223C570: ; 0x0223C570 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + mov r7, #0 + str r7, [sp, #0x30] + str r7, [sp, #0x2c] +_0223C57A: + ldr r0, _0223C67C ; =0x02251380 + mov r3, #0x53 + ldr r1, [r0] + mov r0, #0 + str r7, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r1, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r1, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r1, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r1, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r1, r1, r3 + ldr r0, [sp, #0x30] + add r2, r7, #0 + add r0, r1, r0 + add r1, r7, #0 + add r3, r7, #0 + bl FUN_02008AA4 + ldr r6, _0223C67C ; =0x02251380 + mov r2, #2 + ldr r1, [r6] + lsl r2, r2, #0x10 + ldr r0, [r1, #0x20] + str r0, [sp, #0x34] + mov r0, #0x1a + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, [sp, #0x30] + str r2, [sp, #0x3c] + add r0, r1, r0 + str r0, [sp, #0x38] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x40] + lsr r0, r2, #5 + mov r1, #0 + str r1, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + str r0, [sp, #0x50] + add r0, sp, #0x34 + strh r1, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x5c] + mov r0, #0x1d + str r0, [sp, #0x60] + mov r0, #0xf + lsl r0, r0, #0x10 + str r1, [sp, #0x58] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + cmp r7, #0 + bne _0223C634 + mov r4, #2 + mov r5, #8 +_0223C60C: + add r0, sp, #0x34 + bl FUN_0201FE94 + ldr r1, [r6] + add r2, r1, r5 + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r6] + add r1, r0, r5 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + ble _0223C60C +_0223C634: + add r0, sp, #0x34 + bl FUN_0201FE94 + ldr r2, _0223C67C ; =0x02251380 + ldr r1, [sp, #0x2c] + ldr r3, [r2] + add r3, r3, r1 + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r3, r1] + ldr r2, [r2] + ldr r0, [sp, #0x2c] + add r0, r2, r0 + ldr r0, [r0, r1] + mov r1, #1 + bl FUN_020200BC + ldr r0, [sp, #0x30] + add r7, r7, #1 + add r0, #0x24 + str r0, [sp, #0x30] + ldr r0, [sp, #0x2c] + add r0, r0, #4 + str r0, [sp, #0x2c] + cmp r7, #2 + blt _0223C57A + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223C67C: .word 0x02251380 + thumb_func_end MOD18_0223C570 + + thumb_func_start MOD18_0223C680 +MOD18_0223C680: ; 0x0223C680 + push {r4, lr} + sub sp, #0x10 + ldr r4, _0223C6C0 ; =0x0224FFF0 + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r1, _0223C6C4 ; =0x00200010 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_0201D060 + mov r0, #0x14 + mov r1, #0x1d + bl FUN_0201E00C + bl FUN_0201D168 + bl FUN_0201E0BC + ldr r1, _0223C6C8 ; =0x00100010 + mov r0, #1 + bl FUN_02008D44 + mov r0, #1 + bl FUN_02008DDC + add sp, #0x10 + pop {r4, pc} + nop +_0223C6C0: .word 0x0224FFF0 +_0223C6C4: .word 0x00200010 +_0223C6C8: .word 0x00100010 + thumb_func_end MOD18_0223C680 + + thumb_func_start MOD18_0223C6CC +MOD18_0223C6CC: ; 0x0223C6CC + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223C188 + add r0, r4, #0 + bl FUN_0201AB60 + bl FUN_0201C30C + bl FUN_02009F80 + pop {r4, pc} + thumb_func_end MOD18_0223C6CC + + thumb_func_start MOD18_0223C6E4 +MOD18_0223C6E4: ; 0x0223C6E4 + push {r3, lr} + lsl r0, r0, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD18_02239DEC + cmp r0, #0 + beq _0223C6FA + mov r0, #1 + pop {r3, pc} +_0223C6FA: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223C6E4 + + thumb_func_start MOD18_0223C700 +MOD18_0223C700: ; 0x0223C700 + ldr r1, _0223C718 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C714 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C71C ; =0x00000888 + add r1, r2, r1 + ldrh r0, [r1, r0] + bx lr +_0223C714: + mov r0, #0 + bx lr + .align 2, 0 +_0223C718: .word 0x02251380 +_0223C71C: .word 0x00000888 + thumb_func_end MOD18_0223C700 + + thumb_func_start MOD18_0223C720 +MOD18_0223C720: ; 0x0223C720 + ldr r1, _0223C738 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C734 + mov r1, #6 + mul r1, r0 + ldr r0, _0223C73C ; =0x0000088A + add r1, r2, r1 + ldrh r0, [r1, r0] + bx lr +_0223C734: + mov r0, #0 + bx lr + .align 2, 0 +_0223C738: .word 0x02251380 +_0223C73C: .word 0x0000088A + thumb_func_end MOD18_0223C720 + + thumb_func_start MOD18_0223C740 +MOD18_0223C740: ; 0x0223C740 + push {r4, lr} + ldr r1, _0223C76C ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C766 + ldr r1, _0223C770 ; =0x00000884 + ldr r4, [r2, r1] + cmp r4, #0 + beq _0223C766 + ldr r1, _0223C774 ; =0x000005DE + ldrh r1, [r4, r1] + add r0, r1, r0 + mov r1, #0x53 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + ldrh r0, [r4, r0] + pop {r4, pc} +_0223C766: + mov r0, #0 + pop {r4, pc} + nop +_0223C76C: .word 0x02251380 +_0223C770: .word 0x00000884 +_0223C774: .word 0x000005DE + thumb_func_end MOD18_0223C740 + + thumb_func_start MOD18_0223C778 +MOD18_0223C778: ; 0x0223C778 + push {r4, lr} + ldr r1, _0223C7A4 ; =0x02251380 + ldr r2, [r1] + cmp r2, #0 + beq _0223C7A0 + ldr r1, _0223C7A8 ; =0x00000884 + ldr r4, [r2, r1] + cmp r4, #0 + beq _0223C7A0 + ldr r1, _0223C7AC ; =0x000005DE + ldrh r1, [r4, r1] + add r0, r1, r0 + mov r1, #0x53 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #2] + pop {r4, pc} +_0223C7A0: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0223C7A4: .word 0x02251380 +_0223C7A8: .word 0x00000884 +_0223C7AC: .word 0x000005DE + thumb_func_end MOD18_0223C778 + + thumb_func_start MOD18_0223C7B0 +MOD18_0223C7B0: ; 0x0223C7B0 + push {r4, lr} + ldr r0, _0223C7D0 ; =0x000005DE + add r4, r1, #0 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r1, [r4, r0] + cmp r1, #0x53 + bls _0223C7CE + add r0, #0x43 + bl FUN_020054C8 + ldr r0, _0223C7D0 ; =0x000005DE + mov r1, #0 + strh r1, [r4, r0] +_0223C7CE: + pop {r4, pc} + .align 2, 0 +_0223C7D0: .word 0x000005DE + thumb_func_end MOD18_0223C7B0 + + thumb_func_start MOD18_0223C7D4 +MOD18_0223C7D4: ; 0x0223C7D4 + push {r4, lr} + ldr r0, _0223C834 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C838 ; =0x00000884 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223C7E6 + bl ErrorHandling +_0223C7E6: + ldr r0, _0223C834 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C83C ; =0x00000878 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223C7F6 + bl ErrorHandling +_0223C7F6: + mov r1, #0x5e + mov r0, #0xb + lsl r1, r1, #4 + bl FUN_020169D8 + mov r2, #0x5e + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x47 + bl FUN_020311DC + ldr r0, _0223C840 ; =0x000005DE + mov r1, #0x49 + strh r1, [r4, r0] + ldr r0, _0223C834 ; =0x02251380 + mov r2, #0x64 + ldr r1, [r0] + ldr r0, _0223C838 ; =0x00000884 + str r4, [r1, r0] + ldr r0, _0223C844 ; =MOD18_0223C7B0 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _0223C834 ; =0x02251380 + ldr r2, [r1] + ldr r1, _0223C83C ; =0x00000878 + str r0, [r2, r1] + pop {r4, pc} + .align 2, 0 +_0223C834: .word 0x02251380 +_0223C838: .word 0x00000884 +_0223C83C: .word 0x00000878 +_0223C840: .word 0x000005DE +_0223C844: .word MOD18_0223C7B0 + thumb_func_end MOD18_0223C7D4 + + thumb_func_start MOD18_0223C848 +MOD18_0223C848: ; 0x0223C848 + push {r3, lr} + ldr r0, _0223C878 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C87C ; =0x00000878 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223C876 + bl FUN_0200CAB4 + ldr r0, _0223C878 ; =0x02251380 + ldr r1, [r0] + ldr r0, _0223C880 ; =0x00000884 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _0223C878 ; =0x02251380 + ldr r0, _0223C87C ; =0x00000878 + ldr r2, [r1] + mov r3, #0 + str r3, [r2, r0] + ldr r1, [r1] + add r0, #0xc + str r3, [r1, r0] +_0223C876: + pop {r3, pc} + .align 2, 0 +_0223C878: .word 0x02251380 +_0223C87C: .word 0x00000878 +_0223C880: .word 0x00000884 + thumb_func_end MOD18_0223C848 + + thumb_func_start MOD18_0223C884 +MOD18_0223C884: ; 0x0223C884 + ldr r1, _0223C894 ; =0x02251380 + mov r2, #1 + ldr r1, [r1] + add r1, r1, r0 + mov r0, #0x87 + lsl r0, r0, #4 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223C894: .word 0x02251380 + thumb_func_end MOD18_0223C884 + + thumb_func_start MOD18_0223C898 +MOD18_0223C898: ; 0x0223C898 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r5, #0 +_0223C89E: + ldr r0, _0223C908 ; =0x02251380 + ldr r1, [r0] + mov r0, #0x87 + add r7, r1, r5 + lsl r0, r0, #4 + ldrb r0, [r7, r0] + sub r4, r0, #1 + cmp r0, #0 + beq _0223C8FE + mov r0, #0x82 + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #6 + mul r0, r4 + add r6, r1, r0 + ldr r0, _0223C90C ; =0x0000FFFF + add r1, r0, #0 +_0223C8C0: + ldrh r3, [r6] + cmp r3, r1 + beq _0223C8EE + ldrh r2, [r6, #2] + cmp r2, r0 + beq _0223C8EE + add r0, sp, #0 + strh r3, [r0] + ldrh r1, [r6, #2] + strh r1, [r0, #2] + strb r5, [r0, #4] + mov r0, #0x48 + add r1, sp, #0 + bl FUN_02030C4C + ldr r0, _0223C908 ; =0x02251380 + add r2, r4, #3 + ldr r0, [r0] + add r1, r0, r5 + mov r0, #0x87 + lsl r0, r0, #4 + strb r2, [r1, r0] + b _0223C8FE +_0223C8EE: + add r4, r4, #3 + add r6, #0x12 + cmp r4, #0xfa + blt _0223C8C0 + mov r1, #0x87 + lsl r1, r1, #4 + mov r0, #0 + strb r0, [r7, r1] +_0223C8FE: + add r5, r5, #1 + cmp r5, #8 + blt _0223C89E + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C908: .word 0x02251380 +_0223C90C: .word 0x0000FFFF + thumb_func_end MOD18_0223C898 + + thumb_func_start MOD18_0223C910 +MOD18_0223C910: ; 0x0223C910 + push {r3, r4, r5, lr} + ldr r0, _0223C9A4 ; =0x02251380 + add r5, r2, #0 + ldr r2, [r0] + cmp r2, #0 + beq _0223C9A0 + ldrb r1, [r5, #4] + mov r0, #0xf + add r4, r1, #0 + and r4, r0 + ldr r0, _0223C9A8 ; =0x00000884 + ldr r0, [r2, r0] + cmp r0, #0 + bne _0223C960 + bl FUN_02031190 + cmp r4, r0 + bne _0223C9A0 + ldrb r0, [r5, #4] + asr r1, r0, #4 + mov r0, #0xf + add r3, r1, #0 + and r3, r0 + cmp r3, #0 + ble _0223C9A0 + cmp r3, #8 + bgt _0223C9A0 + ldr r1, _0223C9A4 ; =0x02251380 + add r0, r5, #0 + ldr r2, [r1] + ldr r1, _0223C9AC ; =0x00000888 + add r4, r2, r1 + sub r1, r3, #1 + mov r2, #6 + add r3, r1, #0 + mul r3, r2 + add r1, r4, r3 + bl MI_CpuCopy8 + pop {r3, r4, r5, pc} +_0223C960: + bl FUN_02031190 + cmp r4, r0 + bne _0223C9A0 + ldr r0, _0223C9A4 ; =0x02251380 + mov r2, #6 + ldr r1, [r0] + ldr r0, _0223C9A8 ; =0x00000884 + ldr r4, [r1, r0] + ldr r1, _0223C9B0 ; =0x000005DC + add r0, r5, #0 + ldrb r1, [r4, r1] + add r3, r1, #0 + mul r3, r2 + add r1, r4, r3 + bl MI_CpuCopy8 + ldr r2, _0223C9A4 ; =0x02251380 + ldr r0, _0223C9A8 ; =0x00000884 + ldr r1, [r2] + ldr r4, [r1, r0] + ldr r1, _0223C9B0 ; =0x000005DC + ldrb r3, [r4, r1] + add r3, r3, #1 + strb r3, [r4, r1] + ldr r2, [r2] + ldr r2, [r2, r0] + ldrb r0, [r2, r1] + cmp r0, #0xfa + blo _0223C9A0 + mov r0, #0 + strb r0, [r2, r1] +_0223C9A0: + pop {r3, r4, r5, pc} + nop +_0223C9A4: .word 0x02251380 +_0223C9A8: .word 0x00000884 +_0223C9AC: .word 0x00000888 +_0223C9B0: .word 0x000005DC + thumb_func_end MOD18_0223C910 + + thumb_func_start MOD18_0223C9B4 +MOD18_0223C9B4: ; 0x0223C9B4 + mov r0, #6 + bx lr + thumb_func_end MOD18_0223C9B4 + + thumb_func_start MOD18_0223C9B8 +MOD18_0223C9B8: ; 0x0223C9B8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r4, _0223CA6C ; =0x02251380 + mov r5, #0 + add r7, sp, #0 +_0223C9C2: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _0223CA62 + add r0, r5, #0 + bl FUN_0204F6B4 + cmp r0, #0 + ldr r0, [r4] + beq _0223C9E4 + add r2, r0, r5 + ldr r0, _0223CA70 ; =0x000008B8 + mov r1, #0 + strb r1, [r2, r0] + b _0223CA62 +_0223C9E4: + ldr r1, _0223CA70 ; =0x000008B8 + add r0, r0, r5 + ldrb r1, [r0, r1] + cmp r1, #0x1c + bhs _0223CA62 + ldr r1, _0223CA70 ; =0x000008B8 + ldrb r1, [r0, r1] + add r2, r1, #1 + ldr r1, _0223CA70 ; =0x000008B8 + strb r2, [r0, r1] + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _0223CA70 ; =0x000008B8 + ldrb r0, [r1, r0] + cmp r0, #0x14 + blo _0223CA62 + add r0, r5, #0 + bl FUN_0204E544 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E598 + add r1, r0, #0 + lsl r0, r6, #0x10 + lsl r1, r1, #0x10 + lsr r0, r0, #0x10 + lsr r1, r1, #0x10 + bl MOD18_02239E2C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223CA62 + mov r2, #0x82 + ldr r1, [r4] + lsl r2, r2, #2 + add r3, r1, r2 + mov r2, #6 + mul r2, r0 + add r0, r3, r2 + ldrh r3, [r3, r2] + ldr r2, _0223CA74 ; =0x0000FFFF + cmp r3, r2 + beq _0223CA62 + ldrh r3, [r0, #2] + cmp r3, r2 + beq _0223CA62 + add r2, r1, r5 + ldr r1, _0223CA70 ; =0x000008B8 + ldrb r1, [r2, r1] + sub r1, #0x13 + lsl r1, r1, #4 + add r1, r5, r1 + strb r1, [r7, #4] + ldrh r1, [r0] + strh r1, [r7] + ldrh r0, [r0, #2] + add r1, sp, #0 + strh r0, [r7, #2] + mov r0, #0x48 + bl FUN_02030C4C +_0223CA62: + add r5, r5, #1 + cmp r5, #8 + blt _0223C9C2 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CA6C: .word 0x02251380 +_0223CA70: .word 0x000008B8 +_0223CA74: .word 0x0000FFFF + thumb_func_end MOD18_0223C9B8 + + thumb_func_start MOD18_0223CA78 +MOD18_0223CA78: ; 0x0223CA78 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _0223CAC4 ; =0x02251380 + add r5, r0, #0 + ldr r0, [r6] + cmp r0, #0 + bne _0223CA88 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223CA88: + mov r4, #0 + add r7, r4, #0 +_0223CA8C: + ldr r0, [r6] + add r1, r0, r4 + ldr r0, _0223CAC8 ; =0x000008C4 + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223CAB8 + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [r6] + add r3, r5, #0 + add r2, r1, r4 + ldr r1, _0223CAC8 ; =0x000008C4 + strb r7, [r2, r1] + add r1, r7, #0 + mov r2, #0x69 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223CAB8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223CAB8: + add r4, r4, #1 + cmp r4, #8 + blt _0223CA8C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CAC4: .word 0x02251380 +_0223CAC8: .word 0x000008C4 + thumb_func_end MOD18_0223CA78 + + thumb_func_start MOD18_0223CACC +MOD18_0223CACC: ; 0x0223CACC + push {r3, lr} + ldr r0, _0223CAE4 ; =0x02251380 + ldr r1, [r0] + cmp r1, #0 + beq _0223CAE2 + ldr r0, _0223CAE8 ; =0x000008C4 + mov r2, #8 + add r0, r1, r0 + mov r1, #0 + bl MI_CpuFill8 +_0223CAE2: + pop {r3, pc} + .align 2, 0 +_0223CAE4: .word 0x02251380 +_0223CAE8: .word 0x000008C4 + thumb_func_end MOD18_0223CACC + + thumb_func_start MOD18_0223CAEC +MOD18_0223CAEC: ; 0x0223CAEC + ldr r1, _0223CB00 ; =0x02251380 + ldr r1, [r1] + cmp r1, #0 + beq _0223CAFC + add r1, r1, r0 + ldr r0, _0223CB04 ; =0x00000808 + ldrb r0, [r1, r0] + bx lr +_0223CAFC: + mov r0, #0 + bx lr + .align 2, 0 +_0223CB00: .word 0x02251380 +_0223CB04: .word 0x00000808 + thumb_func_end MOD18_0223CAEC + + thumb_func_start MOD18_0223CB08 +MOD18_0223CB08: ; 0x0223CB08 + ldr r1, _0223CB1C ; =0x02251380 + ldr r1, [r1] + cmp r1, #0 + beq _0223CB18 + add r1, r1, r0 + ldr r0, _0223CB20 ; =0x00000808 + mov r2, #0 + strb r2, [r1, r0] +_0223CB18: + bx lr + nop +_0223CB1C: .word 0x02251380 +_0223CB20: .word 0x00000808 + thumb_func_end MOD18_0223CB08 + + thumb_func_start MOD18_0223CB24 +MOD18_0223CB24: ; 0x0223CB24 + ldr r0, _0223CB40 ; =0x02251380 + ldr r1, [r0] + cmp r1, #0 + beq _0223CB3A + mov r0, #0x22 + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223CB3A + mov r0, #1 + bx lr +_0223CB3A: + mov r0, #0 + bx lr + nop +_0223CB40: .word 0x02251380 + thumb_func_end MOD18_0223CB24 + + thumb_func_start MOD18_0223CB44 +MOD18_0223CB44: ; 0x0223CB44 + ldr r2, _0223CB54 ; =0x02251380 + ldr r2, [r2] + cmp r2, #0 + beq _0223CB52 + add r2, r2, r0 + ldr r0, _0223CB58 ; =0x00000808 + strb r1, [r2, r0] +_0223CB52: + bx lr + .align 2, 0 +_0223CB54: .word 0x02251380 +_0223CB58: .word 0x00000808 + thumb_func_end MOD18_0223CB44 + + thumb_func_start MOD18_0223CB5C +MOD18_0223CB5C: ; 0x0223CB5C + ldr r3, _0223CB60 ; =0x0204F7FD + bx r3 + .align 2, 0 +_0223CB60: .word 0x0204F7FD + thumb_func_end MOD18_0223CB5C + + thumb_func_start MOD18_0223CB64 +MOD18_0223CB64: ; 0x0223CB64 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0 + ble _0223CB88 + bl MOD18_0223D638 + mov r1, #0 + add r2, r4, #0 + bl MOD18_0224DEA4 + bl MOD18_0223D638 + ldr r3, _0223CB90 ; =MOD18_0223CB5C + mov r1, #0x4b + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223CB88: + bl MOD18_0223CB5C + pop {r4, pc} + nop +_0223CB90: .word MOD18_0223CB5C + thumb_func_end MOD18_0223CB64 + + thumb_func_start MOD18_0223CB94 +MOD18_0223CB94: ; 0x0223CB94 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r1, _0223CC20 ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + bne _0223CC1E + ldr r2, _0223CC24 ; =0x000004DC + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _0223CC20 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CC28 ; =0x000004C8 + str r4, [r1, r0] + add r0, r4, #0 + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + ldr r7, _0223CC20 ; =0x02251384 + add r6, r0, #0 + add r5, r4, #0 +_0223CBC4: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020264F0 + ldr r1, [r7] + add r1, r1, r5 + strb r0, [r1, #6] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_020264FC + ldr r1, [r7] + strh r0, [r1, r5] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202651C + ldr r1, [r7] + add r1, r1, r5 + strh r0, [r1, #2] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202653C + ldr r1, [r7] + add r1, r1, r5 + strb r0, [r1, #4] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026548 + ldr r1, [r7] + add r1, r1, r5 + strb r0, [r1, #5] + ldr r0, [r7] + add r0, r0, r5 + ldrb r1, [r0, #6] + cmp r1, #0 + beq _0223CC16 + bl MOD18_0223CD74 +_0223CC16: + add r4, r4, #1 + add r5, #8 + cmp r4, #0x64 + blt _0223CBC4 +_0223CC1E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223CC20: .word 0x02251384 +_0223CC24: .word 0x000004DC +_0223CC28: .word 0x000004C8 + thumb_func_end MOD18_0223CB94 + + thumb_func_start MOD18_0223CC2C +MOD18_0223CC2C: ; 0x0223CC2C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _0223CC70 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CC74 ; =0x000004C8 + ldr r0, [r1, r0] + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + ldr r7, _0223CC70 ; =0x02251384 + add r6, r0, #0 + add r5, r4, #0 +_0223CC48: + ldr r3, [r7] + add r2, r4, #0 + add r1, r3, r5 + ldrh r0, [r1, #2] + str r0, [sp] + ldrb r0, [r1, #4] + str r0, [sp, #4] + ldrb r0, [r1, #5] + str r0, [sp, #8] + ldrb r1, [r1, #6] + ldrh r3, [r3, r5] + add r0, r6, #0 + bl FUN_0202649C + add r4, r4, #1 + add r5, #8 + cmp r4, #0x64 + blt _0223CC48 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223CC70: .word 0x02251384 +_0223CC74: .word 0x000004C8 + thumb_func_end MOD18_0223CC2C + + thumb_func_start MOD18_0223CC78 +MOD18_0223CC78: ; 0x0223CC78 + ldr r0, _0223CC7C ; =0x000004DC + bx lr + .align 2, 0 +_0223CC7C: .word 0x000004DC + thumb_func_end MOD18_0223CC78 + + thumb_func_start MOD18_0223CC80 +MOD18_0223CC80: ; 0x0223CC80 + ldr r0, _0223CC8C ; =0x02251384 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223CC90 ; =0x000004DA + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223CC8C: .word 0x02251384 +_0223CC90: .word 0x000004DA + thumb_func_end MOD18_0223CC80 + + thumb_func_start MOD18_0223CC94 +MOD18_0223CC94: ; 0x0223CC94 + ldr r0, _0223CCA0 ; =0x02251384 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223CCA4 ; =0x000004DA + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223CCA0: .word 0x02251384 +_0223CCA4: .word 0x000004DA + thumb_func_end MOD18_0223CC94 + + thumb_func_start MOD18_0223CCA8 +MOD18_0223CCA8: ; 0x0223CCA8 + push {r3, lr} + ldr r0, _0223CCC0 ; =0x02251384 + ldr r0, [r0] + cmp r0, #0 + beq _0223CCBC + bl FUN_02016A18 + ldr r0, _0223CCC0 ; =0x02251384 + mov r1, #0 + str r1, [r0] +_0223CCBC: + pop {r3, pc} + nop +_0223CCC0: .word 0x02251384 + thumb_func_end MOD18_0223CCA8 + + thumb_func_start MOD18_0223CCC4 +MOD18_0223CCC4: ; 0x0223CCC4 + push {r3, r4, r5, lr} + ldr r3, _0223CD34 ; =0x02251384 + ldr r2, _0223CD38 ; =0x000004DA + ldr r0, [r3] + ldrb r1, [r0, r2] + cmp r1, #0 + bne _0223CD32 + sub r1, r2, #6 + ldr r1, [r0, r1] + add r4, r1, #1 + sub r1, r2, #6 + str r4, [r0, r1] + ldr r3, [r3] + add r0, r1, #0 + ldr r1, [r3, r0] + mov r0, #0x7d + lsl r0, r0, #4 + cmp r1, r0 + blt _0223CCF0 + mov r1, #0 + sub r0, r2, #6 + str r1, [r3, r0] +_0223CCF0: + ldr r0, _0223CD34 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CD3C ; =0x000004D4 + ldr r4, [r1, r0] + mov r1, #0x14 + add r0, r4, #0 + bl _s32_div_f + cmp r1, #0xa + bne _0223CD32 + add r0, r4, #0 + mov r1, #0x14 + bl _s32_div_f + add r5, r0, #0 + bl MOD18_0223D1B8 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_0223D1D8 + add r2, r0, #0 + cmp r4, #0 + beq _0223CD32 + cmp r2, #0 + beq _0223CD32 + ldr r0, _0223CD34 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223CD40 ; =0x000004C8 + ldr r0, [r1, r0] + add r1, r4, #0 + bl MOD05_021E5D0C +_0223CD32: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223CD34: .word 0x02251384 +_0223CD38: .word 0x000004DA +_0223CD3C: .word 0x000004D4 +_0223CD40: .word 0x000004C8 + thumb_func_end MOD18_0223CCC4 + + thumb_func_start MOD18_0223CD44 +MOD18_0223CD44: ; 0x0223CD44 + push {r3, r4} + ldr r3, _0223CD70 ; =0x02251384 + lsl r1, r1, #2 + ldr r2, [r3] + add r4, r2, r1 + mov r2, #0x32 + lsl r2, r2, #4 + ldr r4, [r4, r2] + cmp r4, #0 + bne _0223CD5E + mov r0, #0 + pop {r3, r4} + bx lr +_0223CD5E: + ldrh r4, [r4] + strh r4, [r0] + ldr r3, [r3] + add r1, r3, r1 + ldr r1, [r1, r2] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + pop {r3, r4} + bx lr + .align 2, 0 +_0223CD70: .word 0x02251384 + thumb_func_end MOD18_0223CD44 + + thumb_func_start MOD18_0223CD74 +MOD18_0223CD74: ; 0x0223CD74 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + ldrh r0, [r0] + add r1, sp, #4 + strh r0, [r1] + ldr r0, [sp] + ldrh r0, [r0, #2] + strh r0, [r1, #2] + ldr r1, _0223CDD4 ; =MOD18_0223CD44 + mov r0, #0x64 + bl MOD18_0223DC7C + add r0, sp, #4 + bl MOD18_0223DC28 + add r4, r0, #0 + cmp r4, #0x64 + blt _0223CD9E + bl ErrorHandling +_0223CD9E: + mov r5, #0x63 + cmp r4, #0x63 + bge _0223CDBE + mov r7, #0xc7 + lsl r7, r7, #2 + ldr r1, _0223CDD8 ; =0x02251384 + lsl r6, r5, #2 + add r0, r7, #4 +_0223CDAE: + ldr r2, [r1] + sub r5, r5, #1 + add r3, r2, r6 + ldr r2, [r3, r7] + sub r6, r6, #4 + str r2, [r3, r0] + cmp r5, r4 + bgt _0223CDAE +_0223CDBE: + ldr r0, _0223CDD8 ; =0x02251384 + ldr r1, [r0] + lsl r0, r4, #2 + add r2, r1, r0 + mov r1, #0x32 + ldr r0, [sp] + lsl r1, r1, #4 + str r0, [r2, r1] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223CDD4: .word MOD18_0223CD44 +_0223CDD8: .word 0x02251384 + thumb_func_end MOD18_0223CD74 + + thumb_func_start MOD18_0223CDDC +MOD18_0223CDDC: ; 0x0223CDDC + push {r4, r5, r6, lr} + ldr r0, _0223CE10 ; =0x02251384 + mov r2, #0x32 + ldr r0, [r0] + lsl r2, r2, #4 + add r0, r0, r2 + mov r1, #0 + lsr r2, r2, #1 + bl MI_CpuFill8 + mov r4, #0 + ldr r6, _0223CE10 ; =0x02251384 + add r5, r4, #0 +_0223CDF6: + ldr r0, [r6] + add r0, r0, r5 + ldrb r1, [r0, #6] + cmp r1, #0 + beq _0223CE04 + bl MOD18_0223CD74 +_0223CE04: + add r4, r4, #1 + add r5, #8 + cmp r4, #0x64 + blt _0223CDF6 + pop {r4, r5, r6, pc} + nop +_0223CE10: .word 0x02251384 + thumb_func_end MOD18_0223CDDC + + thumb_func_start MOD18_0223CE14 +MOD18_0223CE14: ; 0x0223CE14 + mov r2, #0 +_0223CE16: + ldrb r1, [r0, #6] + cmp r1, #0 + beq _0223CE26 + add r2, r2, #1 + add r0, #8 + cmp r2, #0x64 + blt _0223CE16 + mov r0, #0 +_0223CE26: + bx lr + thumb_func_end MOD18_0223CE14 + + thumb_func_start MOD18_0223CE28 +MOD18_0223CE28: ; 0x0223CE28 + bx lr + .align 2, 0 + thumb_func_end MOD18_0223CE28 + + thumb_func_start MOD18_0223CE2C +MOD18_0223CE2C: ; 0x0223CE2C + push {r3, lr} + add r2, sp, #0 + strh r0, [r2] + strh r1, [r2, #2] + ldr r1, _0223CE60 ; =MOD18_0223CD44 + mov r0, #0x64 + bl MOD18_0223DC7C + add r0, sp, #0 + bl MOD18_0223DBBC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223CE4E + mov r0, #0 + pop {r3, pc} +_0223CE4E: + ldr r1, _0223CE64 ; =0x02251384 + lsl r0, r0, #2 + ldr r1, [r1] + add r1, r1, r0 + mov r0, #0x32 + lsl r0, r0, #4 + ldr r0, [r1, r0] + pop {r3, pc} + nop +_0223CE60: .word MOD18_0223CD44 +_0223CE64: .word 0x02251384 + thumb_func_end MOD18_0223CE2C + + thumb_func_start MOD18_0223CE68 +MOD18_0223CE68: ; 0x0223CE68 + push {r3, r4, r5, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + add r5, r0, #0 + cmp r1, r5 + bne _0223CF1C + bl FUN_0204E4D4 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E50C + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223CE2C + add r4, r0, #0 + beq _0223CF1C + bl FUN_0204F7E4 + ldrb r2, [r4, #4] + ldrb r1, [r4, #5] + ldrb r0, [r4, #6] + add r1, r2, r1 + bl MOD18_02249450 + cmp r0, #0 + beq _0223CF0E + ldr r0, _0223CF20 ; =0x02251384 + ldrb r2, [r4, #6] + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _0223CF24 ; =0x000004CC + strb r2, [r1, r0] + ldr r0, _0223CF28 ; =0x000005E3 + bl FUN_020054C8 + ldrb r1, [r4, #4] + ldrb r0, [r4, #5] + mov r5, #0x63 + add r0, r1, r0 + cmp r0, #0x63 + bge _0223CEC4 + add r5, r0, #0 +_0223CEC4: + bl MOD18_0223D638 + mov r1, #1 + add r2, r5, #0 + bl MOD18_0224DEA4 + bl MOD18_0223D638 + ldrb r2, [r4, #6] + mov r1, #2 + bl MOD18_0224DF2C + ldrb r5, [r4, #5] + ldrb r1, [r4, #4] + add r0, r5, r1 + cmp r0, #0x63 + ble _0223CEEA + mov r0, #0x63 + sub r5, r0, r1 +_0223CEEA: + bl MOD18_0223D638 + ldr r3, _0223CF2C ; =MOD18_0223CB64 + mov r1, #0x45 + mov r2, #1 + str r5, [sp] + bl MOD18_0224DCF0 + bl MOD18_0223D638 + bl MOD18_0224DD10 + add r0, r4, #0 + bl MOD18_0223D0E8 + bl MOD18_0223CC2C + pop {r3, r4, r5, pc} +_0223CF0E: + bl MOD18_0223D638 + ldr r3, _0223CF30 ; =MOD18_0223CB5C + mov r1, #0x53 + mov r2, #1 + bl MOD18_0224DCB8 +_0223CF1C: + pop {r3, r4, r5, pc} + nop +_0223CF20: .word 0x02251384 +_0223CF24: .word 0x000004CC +_0223CF28: .word 0x000005E3 +_0223CF2C: .word MOD18_0223CB64 +_0223CF30: .word MOD18_0223CB5C + thumb_func_end MOD18_0223CE68 + + thumb_func_start MOD18_0223CF34 +MOD18_0223CF34: ; 0x0223CF34 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0] + bx lr + thumb_func_end MOD18_0223CF34 + + thumb_func_start MOD18_0223CF3C +MOD18_0223CF3C: ; 0x0223CF3C + push {r3, r4, r5, r6} + ldrh r6, [r0, #2] + mov r2, #0 + ldrh r3, [r0] + cmp r6, #0 + blt _0223CF96 + add r5, r2, #0 +_0223CF4A: + sub r4, r3, r5 + cmp r4, #0 + ble _0223CF54 + add r3, r4, #0 + b _0223CF8E +_0223CF54: + cmp r3, #0 + beq _0223CF5A + sub r3, r3, #1 +_0223CF5A: + lsl r4, r2, #1 + cmp r3, r4 + bge _0223CF64 + sub r5, r2, r3 + b _0223CF68 +_0223CF64: + add r5, r2, r4 + sub r5, r3, r5 +_0223CF68: + cmp r3, r2 + blt _0223CF7E + lsl r6, r2, #1 + add r6, r2, r6 + cmp r3, r6 + bge _0223CF78 + sub r3, r4, r3 + b _0223CF7E +_0223CF78: + lsl r2, r2, #2 + neg r2, r2 + add r3, r2, r3 +_0223CF7E: + strh r3, [r1] + strh r5, [r1, #2] + ldrh r1, [r0] + add r1, r1, #1 + strh r1, [r0] + mov r0, #1 + pop {r3, r4, r5, r6} + bx lr +_0223CF8E: + add r2, r2, #1 + add r5, r5, #4 + cmp r2, r6 + ble _0223CF4A +_0223CF96: + mov r0, #0 + pop {r3, r4, r5, r6} + bx lr + thumb_func_end MOD18_0223CF3C + + thumb_func_start MOD18_0223CF9C +MOD18_0223CF9C: ; 0x0223CF9C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + str r0, [sp] + mov r0, #0 + str r0, [sp, #8] + add r6, r2, #0 + add r1, sp, #0xc + add r7, r3, #0 + strh r6, [r1] + strh r7, [r1, #2] + ldr r0, [sp] + strb r5, [r1, #4] + strb r0, [r1, #6] + ldr r0, [sp, #8] + strb r0, [r1, #5] + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0223CFDA + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x54 + add r3, r2, #0 + bl MOD18_0224DCB8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223CFDA: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_0204D76C + cmp r0, #0 + beq _0223CFF8 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x37 + add r3, r2, #0 + bl MOD18_0224DCB8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223CFF8: + ldr r0, _0223D0DC ; =0x02251384 + add r2, r7, #0 + ldr r1, [r0] + ldr r0, _0223D0E0 ; =0x000004C8 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223D01E + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3c + add r3, r2, #0 + bl MOD18_0224DCB8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223D01E: + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_0223CE2C + add r4, r0, #0 + add r0, sp, #0xc + beq _0223D076 + ldrb r1, [r4, #6] + ldrb r0, [r0, #6] + cmp r1, r0 + bne _0223D066 + ldrb r0, [r4, #4] + str r0, [sp, #4] + cmp r0, r5 + ble _0223D04A + add r0, r5, #0 + mov r1, #5 + bl _s32_div_f + ldr r1, [sp, #4] + add r0, r1, r0 + b _0223D052 +_0223D04A: + mov r1, #5 + bl _s32_div_f + add r0, r5, r0 +_0223D052: + add r0, r0, #1 + strb r0, [r4, #4] + ldrb r0, [r4, #4] + cmp r0, #0x63 + bls _0223D060 + mov r0, #0x63 + strb r0, [r4, #4] +_0223D060: + mov r0, #1 + str r0, [sp, #8] + b _0223D07E +_0223D066: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3b + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0223D07E +_0223D076: + bl MOD18_0223D14C + mov r0, #1 + str r0, [sp, #8] +_0223D07E: + ldr r0, [sp, #8] + cmp r0, #0 + beq _0223D0D8 + bl MOD18_0223D638 + ldr r2, [sp] + mov r1, #0 + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r1, #1 + add r2, r5, #0 + bl MOD18_0224DEA4 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x3a + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, [sp] + bl MOD18_02249E98 + ldr r0, _0223D0E4 ; =0x00000631 + bl FUN_020054C8 + ldr r0, _0223D0DC ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D0E0 ; =0x000004C8 + ldr r0, [r1, r0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDCC + ldr r0, _0223D0DC ; =0x02251384 + add r2, r7, #0 + ldr r1, [r0] + ldr r0, _0223D0E0 ; =0x000004C8 + ldr r0, [r1, r0] + add r1, r6, #0 + bl MOD05_021E5D0C +_0223D0D8: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223D0DC: .word 0x02251384 +_0223D0E0: .word 0x000004C8 +_0223D0E4: .word 0x00000631 + thumb_func_end MOD18_0223CF9C + + thumb_func_start MOD18_0223D0E8 +MOD18_0223D0E8: ; 0x0223D0E8 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _0223D144 ; =0x02251384 + mov r1, #0 + ldr r0, [r0] + mvn r1, r1 + mov r4, #0 +_0223D0F6: + cmp r0, r6 + bne _0223D0FE + add r1, r4, #0 + b _0223D106 +_0223D0FE: + add r4, r4, #1 + add r0, #8 + cmp r4, #0x64 + blt _0223D0F6 +_0223D106: + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _0223D112 + bl ErrorHandling +_0223D112: + cmp r4, #0x63 + bge _0223D132 + ldr r7, _0223D144 ; =0x02251384 + lsl r5, r4, #3 +_0223D11A: + add r0, r4, #1 + ldr r1, [r7] + lsl r0, r0, #3 + add r0, r1, r0 + add r1, r1, r5 + mov r2, #8 + bl MI_CpuCopy8 + add r4, r4, #1 + add r5, #8 + cmp r4, #0x63 + blt _0223D11A +_0223D132: + ldr r0, _0223D144 ; =0x02251384 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223D148 ; =0x0000031E + strb r2, [r1, r0] + add r0, r6, #0 + bl MOD18_0223CDDC + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D144: .word 0x02251384 +_0223D148: .word 0x0000031E + thumb_func_end MOD18_0223D0E8 + + thumb_func_start MOD18_0223D14C +MOD18_0223D14C: ; 0x0223D14C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0223D190 ; =0x02251384 + ldr r0, [r0] + bl MOD18_0223CE14 + add r5, r0, #0 + bne _0223D178 + ldr r0, _0223D190 ; =0x02251384 + ldr r0, [r0] + bl MOD18_0223CE28 + bl MOD18_0223D0E8 + ldr r0, _0223D190 ; =0x02251384 + ldr r0, [r0] + bl MOD18_0223CE14 + add r5, r0, #0 + bne _0223D178 + bl ErrorHandling +_0223D178: + add r0, r4, #0 + add r1, r5, #0 + mov r2, #8 + bl MI_CpuCopy8 + add r0, r5, #0 + bl MOD18_0223CD74 + bl MOD18_0223CC2C + pop {r3, r4, r5, pc} + nop +_0223D190: .word 0x02251384 + thumb_func_end MOD18_0223D14C + + thumb_func_start MOD18_0223D194 +MOD18_0223D194: ; 0x0223D194 + cmp r0, #0 + beq _0223D1A0 + cmp r0, #0xb + bge _0223D1A0 + mov r0, #1 + bx lr +_0223D1A0: + mov r0, #0 + bx lr + thumb_func_end MOD18_0223D194 + + thumb_func_start MOD18_0223D1A4 +MOD18_0223D1A4: ; 0x0223D1A4 + push {r3, lr} + bl MOD18_0223CE2C + cmp r0, #0 + beq _0223D1B2 + mov r0, #1 + pop {r3, pc} +_0223D1B2: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223D1A4 + + thumb_func_start MOD18_0223D1B8 +MOD18_0223D1B8: ; 0x0223D1B8 + ldr r1, _0223D1D4 ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + beq _0223D1CE + lsl r1, r0, #3 + add r0, r2, r1 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0223D1CE + ldrh r0, [r2, r1] + bx lr +_0223D1CE: + mov r0, #0 + bx lr + nop +_0223D1D4: .word 0x02251384 + thumb_func_end MOD18_0223D1B8 + + thumb_func_start MOD18_0223D1D8 +MOD18_0223D1D8: ; 0x0223D1D8 + ldr r1, _0223D1F4 ; =0x02251384 + ldr r1, [r1] + cmp r1, #0 + beq _0223D1EE + lsl r0, r0, #3 + add r1, r1, r0 + ldrb r0, [r1, #6] + cmp r0, #0 + beq _0223D1EE + ldrh r0, [r1, #2] + bx lr +_0223D1EE: + mov r0, #0 + bx lr + nop +_0223D1F4: .word 0x02251384 + thumb_func_end MOD18_0223D1D8 + + thumb_func_start MOD18_0223D1F8 +MOD18_0223D1F8: ; 0x0223D1F8 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + ldr r0, _0223D290 ; =0x02251384 + mov r5, #0 + ldr r2, [r0] + add r6, r5, #0 + add r7, r5, #0 + cmp r2, #0 + bne _0223D20E + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D20E: + ldr r0, _0223D294 ; =0x000004CC + add r4, r5, #0 +_0223D212: + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223D26E + mov r0, #4 + bl FUN_0200AA80 + add r5, r0, #0 + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + ldr r2, _0223D290 ; =0x02251384 + add r6, r0, #0 + ldr r2, [r2] + add r0, r5, #0 + add r3, r2, r4 + ldr r2, _0223D294 ; =0x000004CC + mov r1, #2 + ldrb r2, [r3, r2] + bl FUN_0200B19C + add r0, r5, #0 + mov r1, #2 + bl FUN_0200B7A8 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + mov r1, #0x5f + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r1, [sp] + add r0, r5, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + ldr r1, _0223D290 ; =0x02251384 + mov r0, #0 + ldr r1, [r1] + mov r7, #1 + add r2, r1, r4 + ldr r1, _0223D294 ; =0x000004CC + strb r0, [r2, r1] + b _0223D276 +_0223D26E: + add r4, r4, #1 + add r2, r2, #1 + cmp r4, #8 + blt _0223D212 +_0223D276: + cmp r6, #0 + beq _0223D280 + add r0, r6, #0 + bl FUN_02021A20 +_0223D280: + cmp r5, #0 + beq _0223D28A + add r0, r5, #0 + bl FUN_0200AB18 +_0223D28A: + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D290: .word 0x02251384 +_0223D294: .word 0x000004CC + thumb_func_end MOD18_0223D1F8 + + thumb_func_start MOD18_0223D298 +MOD18_0223D298: ; 0x0223D298 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + ldr r0, _0223D2E4 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D2E8 ; =0x000004C8 + ldr r0, [r1, r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0 + mov r5, #0 +_0223D2B0: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020264F0 + cmp r0, #0 + beq _0223D2D8 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_020264FC + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_0202651C + add r1, r0, #0 + add r0, r6, #0 + add r2, r7, #0 + bl MOD18_02239BB0 +_0223D2D8: + add r5, r5, #1 + cmp r5, #0x64 + blt _0223D2B0 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D2E4: .word 0x02251384 +_0223D2E8: .word 0x000004C8 + thumb_func_end MOD18_0223D298 + + thumb_func_start MOD18_0223D2EC +MOD18_0223D2EC: ; 0x0223D2EC + push {r4, lr} + add r4, r1, #0 + ldrh r0, [r4, #2] + add r0, r0, #1 + strh r0, [r4, #2] + ldrh r0, [r4, #2] + cmp r0, #0x64 + bls _0223D306 + ldr r0, _0223D308 ; =0x00000621 + bl FUN_020054C8 + mov r0, #0 + strh r0, [r4, #2] +_0223D306: + pop {r4, pc} + .align 2, 0 +_0223D308: .word 0x00000621 + thumb_func_end MOD18_0223D2EC + + thumb_func_start MOD18_0223D30C +MOD18_0223D30C: ; 0x0223D30C + push {r4, lr} + ldr r0, _0223D364 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D368 ; =0x000004C4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223D31E + bl ErrorHandling +_0223D31E: + ldr r0, _0223D364 ; =0x02251384 + ldr r1, [r0] + mov r0, #0x13 + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223D330 + bl ErrorHandling +_0223D330: + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + mov r1, #0 + mov r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r2, #0x64 + ldr r0, _0223D364 ; =0x02251384 + strh r2, [r4, #2] + ldr r1, [r0] + ldr r0, _0223D368 ; =0x000004C4 + str r4, [r1, r0] + ldr r0, _0223D36C ; =MOD18_0223D2EC + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _0223D364 ; =0x02251384 + ldr r2, [r1] + mov r1, #0x13 + lsl r1, r1, #6 + str r0, [r2, r1] + pop {r4, pc} + nop +_0223D364: .word 0x02251384 +_0223D368: .word 0x000004C4 +_0223D36C: .word MOD18_0223D2EC + thumb_func_end MOD18_0223D30C + + thumb_func_start MOD18_0223D370 +MOD18_0223D370: ; 0x0223D370 + push {r3, lr} + ldr r0, _0223D3A4 ; =0x02251384 + ldr r1, [r0] + mov r0, #0x13 + lsl r0, r0, #6 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223D3A2 + bl FUN_0200CAB4 + ldr r0, _0223D3A4 ; =0x02251384 + ldr r1, [r0] + ldr r0, _0223D3A8 ; =0x000004C4 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _0223D3A4 ; =0x02251384 + mov r0, #0x13 + ldr r2, [r1] + mov r3, #0 + lsl r0, r0, #6 + str r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #4 + str r3, [r1, r0] +_0223D3A2: + pop {r3, pc} + .align 2, 0 +_0223D3A4: .word 0x02251384 +_0223D3A8: .word 0x000004C4 + thumb_func_end MOD18_0223D370 + + thumb_func_start MOD18_0223D3AC +MOD18_0223D3AC: ; 0x0223D3AC + push {r3, lr} + ldr r1, _0223D3D8 ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + beq _0223D3D2 + ldr r1, _0223D3DC ; =0x000004C4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _0223D3D2 + ldrh r1, [r1, #2] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x64 + bl _s32_div_f + add r0, r1, #0 + bl MOD18_0223D1B8 + pop {r3, pc} +_0223D3D2: + mov r0, #0 + pop {r3, pc} + nop +_0223D3D8: .word 0x02251384 +_0223D3DC: .word 0x000004C4 + thumb_func_end MOD18_0223D3AC + + thumb_func_start MOD18_0223D3E0 +MOD18_0223D3E0: ; 0x0223D3E0 + push {r3, lr} + ldr r1, _0223D40C ; =0x02251384 + ldr r2, [r1] + cmp r2, #0 + beq _0223D406 + ldr r1, _0223D410 ; =0x000004C4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _0223D406 + ldrh r1, [r1, #2] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x64 + bl _s32_div_f + add r0, r1, #0 + bl MOD18_0223D1D8 + pop {r3, pc} +_0223D406: + mov r0, #0 + pop {r3, pc} + nop +_0223D40C: .word 0x02251384 +_0223D410: .word 0x000004C4 + thumb_func_end MOD18_0223D3E0 + + thumb_func_start MOD18_0223D414 +MOD18_0223D414: ; 0x0223D414 + push {r4, r5, r6, lr} + sub sp, #8 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + bl FUN_02024FF4 + add r4, r0, #0 + ldr r0, _0223D580 ; =0x02251388 + mov r2, #0x15 + str r6, [r0] + add r0, r6, #0 + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + ldr r2, _0223D580 ; =0x02251388 + mov r3, #0x4d + ldr r0, [r2] + lsl r3, r3, #2 + str r5, [r0, #0xc] + ldr r1, [r2] + mov r0, #0 + strb r0, [r1, r3] + ldr r1, [r2] + strh r0, [r1, #0x1c] + ldr r1, [r2] + strh r0, [r1, #0x1e] + add r1, r3, #0 + ldr r6, [r2] + add r1, #0x17 + strb r0, [r6, r1] + add r0, r3, #0 + ldr r1, [r2] + mov r6, #1 + add r0, #0x13 + strb r6, [r1, r0] + add r3, #0xc0 + str r3, [sp] + ldr r0, _0223D584 ; =0x0000023F + ldr r2, [r5, #8] + mov r1, #0x21 + add r3, r4, #0 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x46 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0 + str r0, [sp] + ldr r0, _0223D588 ; =0x00000243 + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x47 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + ldr r0, _0223D58C ; =0x00000241 + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x12 + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0 + str r0, [sp] + ldr r0, _0223D590 ; =0x00000242 + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + add r3, r4, #0 + ldr r2, [r1] + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0 + str r0, [sp] + ldr r0, _0223D594 ; =0x0000023B + ldr r2, [r5, #8] + mov r1, #0x21 + bl MOD18_0224DAE0 + ldr r1, _0223D580 ; =0x02251388 + mov r2, #0x4a + ldr r3, [r1] + lsl r2, r2, #2 + str r0, [r3, r2] + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r1] + mov r1, #3 + ldr r0, [r0, #0xc] + add r2, #0xba + ldr r0, [r0, #8] + mov r3, #0xa + bl FUN_0200CD68 + mov r3, #0x80 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, _0223D580 ; =0x02251388 + ldr r2, _0223D598 ; =0x000003D9 + ldr r0, [r0] + mov r1, #3 + ldr r0, [r0, #0xc] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_0200CB00 + mov r3, #0 + ldr r0, _0223D580 ; =0x02251388 + add r4, r3, #0 + mov r2, #0xff + add r1, r3, #0 +_0223D536: + ldr r5, [r0] + add r5, r5, r3 + add r5, #0xc2 + strb r2, [r5] + ldr r5, [r0] + add r5, r5, r3 + add r5, #0xd2 + strb r2, [r5] + ldr r5, [r0] + add r3, r3, #1 + add r5, r5, r4 + add r5, #0xdc + add r4, r4, #4 + str r1, [r5] + cmp r3, #8 + blt _0223D536 + ldr r0, _0223D580 ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDAC + mov r1, #0 + ldr r0, _0223D59C ; =MOD18_0223E7AC + add r2, r1, #0 + bl FUN_0200CA44 + ldr r1, _0223D580 ; =0x02251388 + ldr r1, [r1] + str r0, [r1, #0x14] + ldr r0, _0223D5A0 ; =MOD18_0223E890 + bl FUN_0202D31C + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D580: .word 0x02251388 +_0223D584: .word 0x0000023F +_0223D588: .word 0x00000243 +_0223D58C: .word 0x00000241 +_0223D590: .word 0x00000242 +_0223D594: .word 0x0000023B +_0223D598: .word 0x000003D9 +_0223D59C: .word MOD18_0223E7AC +_0223D5A0: .word MOD18_0223E890 + thumb_func_end MOD18_0223D414 + + thumb_func_start MOD18_0223D5A4 +MOD18_0223D5A4: ; 0x0223D5A4 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0223D634 ; =0x02251388 + add r5, r4, #0 +_0223D5AC: + ldr r0, [r6] + add r0, r0, r5 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + beq _0223D5BC + bl FUN_02021A20 +_0223D5BC: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _0223D5AC + mov r0, #0 + bl FUN_0202D31C + ldr r0, _0223D634 ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl FUN_0200CAB4 + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DB5C + ldr r0, _0223D634 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + ldr r1, [r1, #0xc] + add r1, #0x8c + str r2, [r1] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _0223D634 ; =0x02251388 + mov r1, #0 + str r1, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_0223D634: .word 0x02251388 + thumb_func_end MOD18_0223D5A4 + + thumb_func_start MOD18_0223D638 +MOD18_0223D638: ; 0x0223D638 + ldr r0, _0223D644 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D644: .word 0x02251388 + thumb_func_end MOD18_0223D638 + + thumb_func_start MOD18_0223D648 +MOD18_0223D648: ; 0x0223D648 + ldr r0, _0223D654 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D654: .word 0x02251388 + thumb_func_end MOD18_0223D648 + + thumb_func_start MOD18_0223D658 +MOD18_0223D658: ; 0x0223D658 + ldr r0, _0223D664 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D664: .word 0x02251388 + thumb_func_end MOD18_0223D658 + + thumb_func_start MOD18_0223D668 +MOD18_0223D668: ; 0x0223D668 + ldr r0, _0223D674 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D674: .word 0x02251388 + thumb_func_end MOD18_0223D668 + + thumb_func_start MOD18_0223D678 +MOD18_0223D678: ; 0x0223D678 + ldr r0, _0223D684 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bx lr + .align 2, 0 +_0223D684: .word 0x02251388 + thumb_func_end MOD18_0223D678 + + thumb_func_start MOD18_0223D688 +MOD18_0223D688: ; 0x0223D688 + push {r3, lr} + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + ldr r0, _0223D6D4 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DF60 + pop {r3, pc} + nop +_0223D6D4: .word 0x02251388 + thumb_func_end MOD18_0223D688 + + thumb_func_start MOD18_0223D6D8 +MOD18_0223D6D8: ; 0x0223D6D8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r6, r1, #0 + str r2, [sp] + str r3, [sp, #4] + cmp r5, #0 + beq _0223D73E + cmp r6, #0 + beq _0223D73E + mov r0, #4 + bl FUN_0200AA80 + add r4, r0, #0 + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + add r7, r0, #0 + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl FUN_0200ABC0 + add r0, r4, #0 + mov r1, #1 + add r2, r6, #0 + bl FUN_0200ABC0 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r1, [sp] + add r2, r7, #0 + bl FUN_0200A8E0 + ldr r1, [sp, #4] + add r0, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D73E: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0223D6D8 + + thumb_func_start MOD18_0223D744 +MOD18_0223D744: ; 0x0223D744 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + str r3, [sp, #4] + cmp r5, #0 + beq _0223D79C + mov r0, #4 + bl FUN_0200AA80 + add r4, r0, #0 + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl FUN_0200ABC0 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r1, [sp] + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r1, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200AB18 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D79C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0223D744 + + thumb_func_start MOD18_0223D7A4 +MOD18_0223D7A4: ; 0x0223D7A4 + push {r3, r4, r5, r6, r7, lr} + ldr r4, _0223D8A0 ; =0x02251388 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0223D7B4 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D7B4: + mov r5, #0 +_0223D7B6: + add r0, r5, #0 + bl FUN_0202DEC0 + cmp r0, #0 + beq _0223D7E2 + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0202DEF4 + add r0, r7, #0 + mov r1, #1 + mov r2, #0x5b + add r3, r6, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223D7E2 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D7E2: + ldr r0, [r4] + add r0, r0, r5 + add r0, #0xc2 + ldrb r0, [r0] + cmp r0, #0xff + beq _0223D820 + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + ldr r0, [r4] + add r0, r0, r5 + add r0, #0xc2 + ldrb r0, [r0] + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [r4] + add r3, r6, #0 + add r2, r0, r5 + add r2, #0xc2 + mov r0, #0xff + strb r0, [r2] + add r0, r7, #0 + mov r2, #0x6f + bl MOD18_0223D6D8 + cmp r0, #0 + beq _0223D820 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D820: + ldr r0, [r4] + add r0, r0, r5 + add r0, #0xd2 + ldrb r0, [r0] + cmp r0, #0xff + beq _0223D84E + add r0, r5, #0 + bl FUN_0202DFA4 + ldr r1, [r4] + add r3, r6, #0 + add r2, r1, r5 + add r2, #0xd2 + mov r1, #0xff + strb r1, [r2] + mov r1, #0 + mov r2, #0x70 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223D84E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D84E: + ldr r0, [r4] + ldr r1, _0223D8A4 ; =0x0000013D + add r2, r0, r5 + ldrb r1, [r2, r1] + cmp r1, #1 + bne _0223D896 + lsl r4, r5, #2 + add r0, r0, r4 + add r0, #0xdc + ldr r1, [r0] + cmp r1, #0 + beq _0223D886 + add r0, r6, #0 + bl FUN_02021A74 + ldr r0, _0223D8A0 ; =0x02251388 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xdc + ldr r0, [r0] + bl FUN_02021A20 + ldr r0, _0223D8A0 ; =0x02251388 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r4 + add r0, #0xdc + str r1, [r0] +_0223D886: + ldr r0, _0223D8A0 ; =0x02251388 + mov r2, #0 + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _0223D8A4 ; =0x0000013D + strb r2, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223D896: + add r5, r5, #1 + cmp r5, #8 + blt _0223D7B6 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D8A0: .word 0x02251388 +_0223D8A4: .word 0x0000013D + thumb_func_end MOD18_0223D7A4 + + thumb_func_start MOD18_0223D8A8 +MOD18_0223D8A8: ; 0x0223D8A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + add r0, sp, #0 + strh r5, [r0] + strh r4, [r0, #2] + ldr r0, _0223D8F0 ; =0x02251388 + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0, #0xc] + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223D8CA + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D8CA: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223F764 + cmp r0, #0 + beq _0223D8DA + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D8DA: + mov r1, #0 + add r0, sp, #0 + mvn r1, r1 + bl MOD18_0224B04C + cmp r0, #0xff + beq _0223D8EC + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D8EC: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D8F0: .word 0x02251388 + thumb_func_end MOD18_0223D8A8 + + thumb_func_start MOD18_0223D8F4 +MOD18_0223D8F4: ; 0x0223D8F4 + push {r3, lr} + sub sp, #0x18 + ldr r0, _0223D9D4 ; =0x02251388 + ldr r1, _0223D9D8 ; =0x00000146 + ldr r0, [r0] + ldrb r2, [r0, r1] + cmp r2, #0 + beq _0223D912 + sub r1, #0x12 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _0223D912 + add sp, #0x18 + mov r0, #0 + pop {r3, pc} +_0223D912: + ldr r1, _0223D9DC ; =0x021C48F8 + ldrh r1, [r1, #0x20] + cmp r1, #0 + beq _0223D9BA + mov r1, #0x4d + mov r2, #0x1e + lsl r1, r1, #2 + strb r2, [r0, r1] + ldr r0, _0223D9D4 ; =0x02251388 + add r1, #0x17 + ldr r0, [r0] + ldrb r0, [r0, r1] + cmp r0, #0 + bne _0223D9BA + bl FUN_0204D610 + cmp r0, #0 + beq _0223D9BA + bl FUN_02031190 + bl FUN_0204D830 + cmp r0, #0 + bne _0223D9BA + bl FUN_020311F0 + cmp r0, #0 + beq _0223D950 + add sp, #0x18 + mov r0, #0 + pop {r3, pc} +_0223D950: + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + beq _0223D962 + add sp, #0x18 + mov r0, #0 + pop {r3, pc} +_0223D962: + ldr r3, _0223D9D4 ; =0x02251388 + ldr r2, _0223D9DC ; =0x021C48F8 + ldr r3, [r3] + ldrh r1, [r2, #0x1c] + ldr r3, [r3, #0xc] + ldrh r2, [r2, #0x1e] + add r3, #0x88 + ldr r3, [r3] + add r0, sp, #0xc + bl MOD05_021F0318 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x14] + add r2, sp, #8 + add r3, sp, #4 + bl MOD05_021EF4F8 + ldr r1, [sp, #8] + add r0, sp, #0 + strh r1, [r0] + ldr r1, [sp, #4] + strh r1, [r0, #2] + ldr r1, _0223D9DC ; =0x021C48F8 + ldr r0, _0223D9D4 ; =0x02251388 + ldrh r3, [r1, #0x1c] + ldr r2, [r0] + strh r3, [r2, #0x18] + ldrh r2, [r1, #0x1e] + ldr r1, [r0] + strh r2, [r1, #0x1a] + ldr r2, [sp, #8] + ldr r1, [r0] + strh r2, [r1, #0x1c] + ldr r1, [sp, #4] + ldr r0, [r0] + mov r2, #4 + strh r1, [r0, #0x1e] + mov r0, #0x30 + add r1, sp, #0 + bl FUN_02030ADC + add sp, #0x18 + mov r0, #1 + pop {r3, pc} +_0223D9BA: + ldr r0, _0223D9D4 ; =0x02251388 + ldr r2, [r0] + mov r0, #0x4d + lsl r0, r0, #2 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223D9CC + sub r1, r1, #1 + strb r1, [r2, r0] +_0223D9CC: + mov r0, #0 + add sp, #0x18 + pop {r3, pc} + nop +_0223D9D4: .word 0x02251388 +_0223D9D8: .word 0x00000146 +_0223D9DC: .word 0x021C48F8 + thumb_func_end MOD18_0223D8F4 + + thumb_func_start MOD18_0223D9E0 +MOD18_0223D9E0: ; 0x0223D9E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r2, #0 + str r0, [sp] + ldrh r0, [r6] + str r1, [sp, #4] + mov r1, #6 + sub r0, r0, #6 + str r0, [sp, #0xc] + ldrh r0, [r6, #2] + mov r4, #1 + sub r0, r0, #6 + str r0, [sp, #8] + add r0, sp, #0x14 + bl MOD18_0223CF34 + add r0, sp, #0x14 + add r1, sp, #0x10 + bl MOD18_0223CF3C + cmp r0, #0 + beq _0223DA50 +_0223DA0C: + add r1, sp, #0x10 + mov r0, #0 + ldrh r2, [r6] + ldrsh r0, [r1, r0] + add r5, r2, r0 + mov r0, #2 + ldrh r2, [r6, #2] + ldrsh r0, [r1, r0] + add r7, r2, r0 + ldr r2, [sp, #4] + add r0, r5, #0 + add r1, r7, #0 + blx r2 + cmp r0, #0 + beq _0223DA44 + ldr r0, [sp, #0xc] + sub r1, r5, r0 + ldr r0, [sp, #8] + sub r0, r7, r0 + lsl r0, r0, #4 + add r1, r1, r0 + ldr r0, [sp] + cmp r4, #8 + strb r1, [r0, r4] + bne _0223DA42 + add r4, r4, #1 + b _0223DA50 +_0223DA42: + add r4, r4, #1 +_0223DA44: + add r0, sp, #0x14 + add r1, sp, #0x10 + bl MOD18_0223CF3C + cmp r0, #0 + bne _0223DA0C +_0223DA50: + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0223D9E0 + + thumb_func_start MOD18_0223DA58 +MOD18_0223DA58: ; 0x0223DA58 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + strb r0, [r1] + ldr r1, _0223DA90 ; =MOD18_0223F764 + add r0, sp, #0 + add r2, r4, #0 + bl MOD18_0223D9E0 + add r2, r0, #0 + mov r0, #0x31 + add r1, sp, #0 + bl FUN_02030BC4 + ldr r1, _0223DA94 ; =MOD18_0223C6E4 + add r0, sp, #0 + add r2, r4, #0 + bl MOD18_0223D9E0 + add r2, r0, #0 + mov r0, #0x32 + add r1, sp, #0 + bl FUN_02030BC4 + add sp, #0xc + pop {r3, r4, pc} + nop +_0223DA90: .word MOD18_0223F764 +_0223DA94: .word MOD18_0223C6E4 + thumb_func_end MOD18_0223DA58 + + thumb_func_start MOD18_0223DA98 +MOD18_0223DA98: ; 0x0223DA98 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DAC0 + add r0, r5, #0 + bl FUN_0204D830 + cmp r0, #0 + bne _0223DAC0 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223DA58 +_0223DAC0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0223DA98 + + thumb_func_start MOD18_0223DAC4 +MOD18_0223DAC4: ; 0x0223DAC4 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223DAEE + ldr r1, _0223DAF0 ; =0x02251388 + add r0, r4, #1 + ldr r1, [r1] + sub r2, r5, #1 + add r1, #0xfc + bl MI_CpuCopy8 + ldr r0, _0223DAF0 ; =0x02251388 + sub r2, r5, #1 + ldr r1, [r0] + mov r0, #0x52 + lsl r0, r0, #2 + strb r2, [r1, r0] +_0223DAEE: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223DAF0: .word 0x02251388 + thumb_func_end MOD18_0223DAC4 + + thumb_func_start MOD18_0223DAF4 +MOD18_0223DAF4: ; 0x0223DAF4 + push {r3, r4, r5, lr} + sub sp, #0x28 + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223DB8E + ldr r1, _0223DB94 ; =0x02251388 + add r0, r4, #1 + ldr r2, [r1] + mov r1, #0x41 + lsl r1, r1, #2 + add r1, r2, r1 + sub r2, r5, #1 + bl MI_CpuCopy8 + ldr r2, _0223DB94 ; =0x02251388 + ldr r0, _0223DB98 ; =0x00000149 + ldr r1, [r2] + sub r3, r5, #1 + strb r3, [r1, r0] + ldr r2, [r2] + ldr r1, _0223DB9C ; =MOD18_0223D1A4 + add r0, sp, #0x1c + add r2, #0x1c + bl MOD18_0223D9E0 + ldr r1, _0223DB94 ; =0x02251388 + ldr r2, _0223DBA0 ; =0x0000014A + ldr r3, [r1] + strb r0, [r3, r2] + ldr r3, [r1] + ldrb r0, [r3, r2] + sub r0, r0, #1 + strb r0, [r3, r2] + ldr r3, [r1] + add r1, r2, #0 + add r0, sp, #0x1c + sub r1, #0x3e + ldrb r2, [r3, r2] + add r0, #1 + add r1, r3, r1 + bl MI_CpuCopy8 + ldr r0, _0223DB94 ; =0x02251388 + ldr r3, [r0] + ldrh r0, [r3, #0x1a] + str r0, [sp] + add r0, r3, #0 + add r0, #0xfc + str r0, [sp, #4] + mov r0, #0x52 + lsl r0, r0, #2 + ldrb r1, [r3, r0] + str r1, [sp, #8] + add r1, r0, #0 + sub r1, #0x44 + add r1, r3, r1 + str r1, [sp, #0xc] + add r1, r0, #1 + ldrb r1, [r3, r1] + str r1, [sp, #0x10] + add r1, r0, #0 + sub r1, #0x3c + add r1, r3, r1 + str r1, [sp, #0x14] + add r0, r0, #2 + ldrb r0, [r3, r0] + str r0, [sp, #0x18] + ldr r0, [r3, #0xc] + ldrh r1, [r3, #0x1c] + ldrh r2, [r3, #0x1e] + ldrh r3, [r3, #0x18] + bl MOD18_02243E18 +_0223DB8E: + add sp, #0x28 + pop {r3, r4, r5, pc} + nop +_0223DB94: .word 0x02251388 +_0223DB98: .word 0x00000149 +_0223DB9C: .word MOD18_0223D1A4 +_0223DBA0: .word 0x0000014A + thumb_func_end MOD18_0223DAF4 + + thumb_func_start MOD18_0223DBA4 +MOD18_0223DBA4: ; 0x0223DBA4 + cmp r0, #0 + bne _0223DBAE + mov r0, #0xe1 + lsl r0, r0, #0xc + bx lr +_0223DBAE: + ldrh r1, [r0, #2] + ldrh r2, [r0] + mov r0, #0xf + lsl r0, r0, #6 + mul r0, r1 + add r0, r2, r0 + bx lr + thumb_func_end MOD18_0223DBA4 + + thumb_func_start MOD18_0223DBBC +MOD18_0223DBBC: ; 0x0223DBBC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223DC24 ; =0x02251388 + mov r4, #0 + ldr r2, [r1] + mov r1, #0x4b + lsl r1, r1, #2 + ldr r1, [r2, r1] + sub r5, r1, #1 + bl MOD18_0223DBA4 + str r0, [sp] + ldr r0, _0223DC24 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r7, [r1, r0] + cmp r5, #0 + ble _0223DC04 +_0223DBE2: + add r1, r4, r5 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r6, r0, #1 + add r0, sp, #4 + add r1, r6, #0 + blx r7 + bl MOD18_0223DBA4 + ldr r1, [sp] + cmp r0, r1 + bge _0223DBFE + add r4, r6, #1 + b _0223DC00 +_0223DBFE: + add r5, r6, #0 +_0223DC00: + cmp r4, r5 + blt _0223DBE2 +_0223DC04: + add r0, sp, #4 + add r1, r4, #0 + blx r7 + bl MOD18_0223DBA4 + ldr r1, [sp] + cmp r1, r0 + bne _0223DC1A + add sp, #8 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223DC1A: + mov r0, #0 + mvn r0, r0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DC24: .word 0x02251388 + thumb_func_end MOD18_0223DBBC + + thumb_func_start MOD18_0223DC28 +MOD18_0223DC28: ; 0x0223DC28 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223DC78 ; =0x02251388 + mov r4, #0 + ldr r2, [r1] + mov r1, #0x4b + lsl r1, r1, #2 + ldr r1, [r2, r1] + sub r5, r1, #2 + bl MOD18_0223DBA4 + str r0, [sp] + ldr r0, _0223DC78 ; =0x02251388 + add r5, r5, #1 + ldr r1, [r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r7, [r1, r0] + cmp r5, #0 + ble _0223DC72 +_0223DC50: + add r1, r4, r5 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r6, r0, #1 + add r0, sp, #4 + add r1, r6, #0 + blx r7 + bl MOD18_0223DBA4 + ldr r1, [sp] + cmp r0, r1 + bge _0223DC6C + add r4, r6, #1 + b _0223DC6E +_0223DC6C: + add r5, r6, #0 +_0223DC6E: + cmp r4, r5 + blt _0223DC50 +_0223DC72: + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223DC78: .word 0x02251388 + thumb_func_end MOD18_0223DC28 + + thumb_func_start MOD18_0223DC7C +MOD18_0223DC7C: ; 0x0223DC7C + push {r3, r4} + ldr r3, _0223DC94 ; =0x02251388 + mov r2, #0x45 + ldr r4, [r3] + lsl r2, r2, #2 + str r1, [r4, r2] + ldr r1, [r3] + add r2, #0x18 + str r0, [r1, r2] + pop {r3, r4} + bx lr + nop +_0223DC94: .word 0x02251388 + thumb_func_end MOD18_0223DC7C + + thumb_func_start MOD18_0223DC98 +MOD18_0223DC98: ; 0x0223DC98 + push {r3, lr} + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + bne _0223DCB0 + mov r0, #0x1b + bl FUN_020311DC + bl FUN_0203086C +_0223DCB0: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223DC98 + + thumb_func_start MOD18_0223DCB4 +MOD18_0223DCB4: ; 0x0223DCB4 + ldr r0, _0223DCC8 ; =0x02251388 + ldr r2, [r0] + ldr r0, _0223DCCC ; =0x00000146 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223DCC4 + sub r1, r1, #1 + strb r1, [r2, r0] +_0223DCC4: + bx lr + nop +_0223DCC8: .word 0x02251388 +_0223DCCC: .word 0x00000146 + thumb_func_end MOD18_0223DCB4 + + thumb_func_start MOD18_0223DCD0 +MOD18_0223DCD0: ; 0x0223DCD0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + ldr r0, _0223DD6C ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r4, r0, #0 + ldr r0, _0223DD6C ; =0x02251388 + ldr r2, [r0] + ldr r0, _0223DD70 ; =0x00000146 + ldrb r1, [r2, r0] + cmp r1, #0 + beq _0223DCF8 + sub r0, #0x12 + ldrb r0, [r2, r0] + cmp r0, #0 + bne _0223DD66 +_0223DCF8: + bl FUN_02031190 + bl FUN_0204F6B4 + cmp r0, #0 + bne _0223DD66 + add r0, r4, #0 + bl FUN_0202623C + cmp r0, #0x28 + bne _0223DD16 + mov r0, #0x10 + orr r0, r5 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0223DD16: + bl FUN_02031190 + bl FUN_0204E4D4 + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E50C + add r6, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_0223D1A4 + cmp r0, #0 + beq _0223DD3E + mov r0, #0x20 + orr r0, r5 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0223DD3E: + mov r0, #0xf + add r2, r6, #0 + and r2, r0 + lsl r0, r4, #0x1c + add r1, sp, #0 + lsr r0, r0, #0x18 + strb r5, [r1] + add r0, r2, r0 + strb r0, [r1, #1] + mov r0, #0x1c + add r1, sp, #0 + bl FUN_020311D0 + bl FUN_0203086C + ldr r0, _0223DD6C ; =0x02251388 + mov r2, #8 + ldr r1, [r0] + ldr r0, _0223DD70 ; =0x00000146 + strb r2, [r1, r0] +_0223DD66: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0223DD6C: .word 0x02251388 +_0223DD70: .word 0x00000146 + thumb_func_end MOD18_0223DCD0 + + thumb_func_start MOD18_0223DD74 +MOD18_0223DD74: ; 0x0223DD74 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223DD74 + + thumb_func_start MOD18_0223DD78 +MOD18_0223DD78: ; 0x0223DD78 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r1, sp, #0 + add r6, r2, #0 + strb r5, [r1] + bl FUN_0204E62C + add r1, sp, #0 + strh r0, [r1, #2] + add r0, r5, #0 + bl FUN_0204E664 + add r1, sp, #0 + strh r0, [r1, #4] + add r0, r5, #0 + bl FUN_0204E544 + ldr r1, _0223DFB0 ; =0x0000FFFF + cmp r0, r1 + bne _0223DDAE + add r0, r5, #0 + bl FUN_0204E598 + ldr r1, _0223DFB0 ; =0x0000FFFF + cmp r0, r1 + beq _0223DE62 +_0223DDAE: + add r0, r5, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DE62 + add r0, r5, #0 + bl FUN_0204D830 + cmp r0, #0 + bne _0223DE62 + add r1, sp, #0 + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl FUN_0204E8B0 + add r4, r0, #0 + cmp r4, #0xff + bne _0223DDD4 + b _0223DEDA +_0223DDD4: + bl MOD18_02245F4C + cmp r0, #0 + bne _0223DE62 + add r0, r4, #0 + bl MOD18_0223CAEC + cmp r0, #0 + beq _0223DE08 + mov r1, #4 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + add r1, sp, #4 + strb r5, [r0, #7] + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE08: + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl FUN_0204F1B0 + cmp r0, #0 + bne _0223DE62 + add r0, r4, #0 + bl FUN_0204D830 + cmp r0, #0 + beq _0223DE58 + add r0, r4, #0 + bl MOD18_0223F8FC + cmp r0, #0 + bne _0223DE36 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_022409F0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE36: + mov r1, #2 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + add r1, sp, #4 + strb r5, [r0, #7] + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE58: + add r0, r5, #0 + bl FUN_0204EB14 + cmp r0, #0 + bne _0223DE64 +_0223DE62: + b _0223DFAC +_0223DE64: + add r0, r4, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DE78 + add r0, r4, #0 + bl FUN_0204F6C8 + cmp r0, #0 + beq _0223DE9A +_0223DE78: + mov r1, #2 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + add r1, sp, #4 + strb r5, [r0, #7] + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DE9A: + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #6] + strb r4, [r0, #8] + strb r5, [r0, #7] + add r0, r4, #0 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223DFAC + add r1, sp, #4 + mov r0, #0x1e + add r1, #2 + mov r2, #3 + bl FUN_02030BC4 + cmp r0, #0 + beq _0223DFAC + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, r4, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0204E6FC + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DEDA: + ldrb r2, [r6] + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_0223F50C + cmp r0, #0 + beq _0223DEF6 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DEF6: + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_022398B4 + cmp r0, #0 + beq _0223DF10 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF10: + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_0224B09C + cmp r0, #0 + beq _0223DF2A + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF2A: + add r1, sp, #0 + add r0, r5, #0 + add r1, #2 + bl MOD18_022471D0 + cmp r0, #0 + beq _0223DF44 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF44: + add r1, sp, #0 + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl FUN_0204D76C + cmp r0, #0 + beq _0223DF74 + add r0, r5, #0 + mov r1, #0xff + mov r2, #0 + bl FUN_0204F1B0 + cmp r0, #0 + bne _0223DFAC + mov r0, #0x18 + add r1, sp, #0 + bl FUN_02030C4C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0223DF74: + ldrb r1, [r6] + mov r0, #0x20 + tst r0, r1 + beq _0223DFAC + add r0, r5, #0 + bl FUN_0204F210 + cmp r0, #0 + bne _0223DFAC + add r2, sp, #0 + ldrh r3, [r2, #4] + mov r1, #0xf + ldrb r0, [r6, #1] + and r3, r1 + ldrh r1, [r2, #2] + lsl r1, r1, #0x1c + lsr r1, r1, #0x18 + add r1, r3, r1 + cmp r0, r1 + bne _0223DFAC + mov r0, #0x3f + add r1, sp, #0 + bl FUN_02030C4C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 +_0223DFAC: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223DFB0: .word 0x0000FFFF + thumb_func_end MOD18_0223DD78 + + thumb_func_start MOD18_0223DFB4 +MOD18_0223DFB4: ; 0x0223DFB4 + push {r3, r4, r5, r6, r7, lr} + bl FUN_02031190 + cmp r0, #0 + bne _0223E00C + mov r5, #0 + ldr r4, _0223E050 ; =0x02251388 + add r7, r5, #0 + mov r6, #1 +_0223DFC6: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _0223DFE2 + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _0223E054 ; =0x00000135 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223DFE2 + add r0, r5, #0 + bl MOD18_02245358 +_0223DFE2: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + ldr r0, [r4] + beq _0223DFF6 + add r1, r0, r5 + ldr r0, _0223E054 ; =0x00000135 + strb r6, [r1, r0] + b _0223DFFC +_0223DFF6: + add r1, r0, r5 + ldr r0, _0223E054 ; =0x00000135 + strb r7, [r1, r0] +_0223DFFC: + add r5, r5, #1 + cmp r5, #8 + blt _0223DFC6 + bl MOD18_0223E86C + add r0, r0, #2 + bl FUN_02032B6C +_0223E00C: + ldr r0, _0223E050 ; =0x02251388 + ldr r2, [r0] + ldr r0, _0223E058 ; =0x00000145 + ldrb r1, [r2, r0] + add r1, r1, #1 + strb r1, [r2, r0] + bl FUN_02031190 + cmp r0, #0 + bne _0223E02E + bl FUN_0202DDE8 + cmp r0, #0 + beq _0223E02E + mov r0, #1 + bl FUN_0204D168 +_0223E02E: + bl MOD18_0223CCC4 + bl MOD18_0223EF74 + bl MOD18_02239DD8 + ldr r0, _0223E050 ; =0x02251388 + ldr r1, [r0] + ldr r0, _0223E05C ; =0x0000014B + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223E04E + ldr r0, [r1, #0xc] + ldr r0, [r0, #8] + bl MOD18_02241D38 +_0223E04E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223E050: .word 0x02251388 +_0223E054: .word 0x00000135 +_0223E058: .word 0x00000145 +_0223E05C: .word 0x0000014B + thumb_func_end MOD18_0223DFB4 + + thumb_func_start MOD18_0223E060 +MOD18_0223E060: ; 0x0223E060 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _0223E114 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + bne _0223E110 + mov r1, #0x15 + mov r0, #0xf + lsl r1, r1, #4 + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_0223D414 + bl FUN_0204D320 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + mov r2, #1 + bl FUN_0204CB20 + bl MOD18_0223ECE4 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_0223E958 + bl MOD18_02245350 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_02244ED0 + bl MOD18_0223CC78 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_0223CB94 + bl MOD18_02239848 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r1, r5, #0 + bl MOD18_02239744 + bl MOD18_0224D360 + add r1, r0, #0 + mov r0, #0xf + bl FUN_02016998 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02026CB4 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_020377AC + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_0224D2F0 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02026CC4 + bl MOD18_022492F8 +_0223E110: + pop {r4, r5, r6, pc} + nop +_0223E114: .word 0x02251388 + thumb_func_end MOD18_0223E060 + + thumb_func_start MOD18_0223E118 +MOD18_0223E118: ; 0x0223E118 + push {r3, lr} + ldr r0, _0223E14C ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E148 + bl MOD18_0224D344 + bl MOD18_0223CC80 + bl MOD18_022451BC + bl MOD18_0223E9BC + bl FUN_0204CC48 + bl MOD18_02239850 + bl MOD18_0223D688 + ldr r0, _0223E14C ; =0x02251388 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223E150 ; =0x0000014B + strb r2, [r1, r0] +_0223E148: + pop {r3, pc} + nop +_0223E14C: .word 0x02251388 +_0223E150: .word 0x0000014B + thumb_func_end MOD18_0223E118 + + thumb_func_start MOD18_0223E154 +MOD18_0223E154: ; 0x0223E154 + push {r3, lr} + sub sp, #8 + ldr r0, _0223E19C ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E198 + bl FUN_0204CC9C + bl MOD18_0224D35C + bl MOD18_0223CC94 + bl MOD18_022451EC + bl MOD18_0223EA44 + bl MOD18_02239854 + ldr r0, _0223E19C ; =0x02251388 + ldr r2, _0223E1A0 ; =0x0000014B + ldr r1, [r0] + mov r3, #0 + strb r3, [r1, r2] + str r3, [sp] + mov r1, #4 + str r1, [sp, #4] + ldr r0, [r0] + mov r1, #3 + ldr r0, [r0, #0xc] + add r2, #0x97 + ldr r0, [r0, #8] + mov r3, #0xa + bl FUN_0200CD68 +_0223E198: + add sp, #8 + pop {r3, pc} + .align 2, 0 +_0223E19C: .word 0x02251388 +_0223E1A0: .word 0x0000014B + thumb_func_end MOD18_0223E154 + + thumb_func_start MOD18_0223E1A4 +MOD18_0223E1A4: ; 0x0223E1A4 + push {r3, lr} + ldr r0, _0223E1DC ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E1D8 + ldr r0, [r0, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02025C00 + bl MOD18_02245270 + bl MOD18_0223EA78 + mov r0, #1 + bl FUN_0204CCE0 + bl MOD18_0223CCA8 + bl MOD18_02239858 + bl MOD18_02249328 + bl MOD18_0224D324 + bl MOD18_0223D5A4 +_0223E1D8: + pop {r3, pc} + nop +_0223E1DC: .word 0x02251388 + thumb_func_end MOD18_0223E1A4 + + thumb_func_start MOD18_0223E1E0 +MOD18_0223E1E0: ; 0x0223E1E0 + push {r3, lr} + ldr r1, _0223E1F8 ; =0x02251388 + ldr r1, [r1] + cmp r1, #0 + beq _0223E1F6 + bl MOD18_0223EB0C + bl FUN_0204CDB4 + bl MOD18_022452A4 +_0223E1F6: + pop {r3, pc} + .align 2, 0 +_0223E1F8: .word 0x02251388 + thumb_func_end MOD18_0223E1E0 + + thumb_func_start MOD18_0223E1FC +MOD18_0223E1FC: ; 0x0223E1FC + push {r4, lr} + ldr r1, _0223E2A8 ; =0x02251388 + add r4, r0, #0 + ldr r3, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + ldrb r2, [r3, r1] + cmp r2, #0 + beq _0223E214 + mov r0, #0 + strb r0, [r3, r1] + pop {r4, pc} +_0223E214: + bl MOD18_0223D7A4 + cmp r0, #0 + beq _0223E22A + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E22A: + add r0, r4, #0 + bl MOD18_0223FB3C + cmp r0, #0 + beq _0223E242 + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E242: + add r0, r4, #0 + bl MOD18_0223FC14 + cmp r0, #0 + beq _0223E25A + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E25A: + add r0, r4, #0 + bl MOD18_02246D9C + cmp r0, #0 + beq _0223E272 + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E272: + add r0, r4, #0 + bl MOD18_0223CA78 + cmp r0, #0 + beq _0223E28A + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E28A: + add r0, r4, #0 + bl MOD18_0223D1F8 + cmp r0, #0 + beq _0223E2A2 + ldr r1, _0223E2A8 ; =0x02251388 + mov r0, #1 + ldr r2, [r1] + mov r1, #0x53 + lsl r1, r1, #2 + strb r0, [r2, r1] + pop {r4, pc} +_0223E2A2: + mov r0, #0 + pop {r4, pc} + nop +_0223E2A8: .word 0x02251388 + thumb_func_end MOD18_0223E1FC + + thumb_func_start MOD18_0223E2AC +MOD18_0223E2AC: ; 0x0223E2AC + push {r3, lr} + ldr r1, _0223E2C0 ; =0x02251388 + ldr r1, [r1] + cmp r1, #0 + beq _0223E2BC + bl MOD18_02246EAC + pop {r3, pc} +_0223E2BC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E2C0: .word 0x02251388 + thumb_func_end MOD18_0223E2AC + + thumb_func_start MOD18_0223E2C4 +MOD18_0223E2C4: ; 0x0223E2C4 + push {r3, lr} + ldr r0, _0223E2D8 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E2D4 + bl MOD18_02246ECC + pop {r3, pc} +_0223E2D4: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E2D8: .word 0x02251388 + thumb_func_end MOD18_0223E2C4 + + thumb_func_start MOD18_0223E2DC +MOD18_0223E2DC: ; 0x0223E2DC + push {r3, lr} + ldr r0, _0223E2F0 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E2EC + bl MOD18_02246EF4 + pop {r3, pc} +_0223E2EC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E2F0: .word 0x02251388 + thumb_func_end MOD18_0223E2DC + + thumb_func_start MOD18_0223E2F4 +MOD18_0223E2F4: ; 0x0223E2F4 + cmp r0, #0x20 + ble _0223E30A + cmp r1, #0x40 + ble _0223E30A + ldr r2, _0223E310 ; =0x000001DF + cmp r0, r2 + bge _0223E30A + cmp r1, r2 + bge _0223E30A + mov r0, #0 + bx lr +_0223E30A: + mov r0, #1 + bx lr + nop +_0223E310: .word 0x000001DF + thumb_func_end MOD18_0223E2F4 + + thumb_func_start MOD18_0223E314 +MOD18_0223E314: ; 0x0223E314 + push {r3, lr} + ldr r1, _0223E374 ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E36E + cmp r0, #0x10 + bge _0223E360 + ldr r1, _0223E378 ; =0x00000147 + ldrb r1, [r2, r1] + cmp r1, #4 + bhi _0223E36E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223E336: ; jump table + .short _0223E340 - _0223E336 - 2 ; case 0 + .short _0223E344 - _0223E336 - 2 ; case 1 + .short _0223E34E - _0223E336 - 2 ; case 2 + .short _0223E35A - _0223E336 - 2 ; case 3 + .short _0223E354 - _0223E336 - 2 ; case 4 +_0223E340: + mov r0, #0 + pop {r3, pc} +_0223E344: + cmp r0, #8 + bge _0223E34E + bl MOD18_0223C700 + pop {r3, pc} +_0223E34E: + bl MOD18_0223D3AC + pop {r3, pc} +_0223E354: + bl MOD18_02240B28 + pop {r3, pc} +_0223E35A: + bl MOD18_0223C740 + pop {r3, pc} +_0223E360: + ldr r0, [r2, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CA8 + bl FUN_02026C88 + pop {r3, pc} +_0223E36E: + mov r0, #0 + pop {r3, pc} + nop +_0223E374: .word 0x02251388 +_0223E378: .word 0x00000147 + thumb_func_end MOD18_0223E314 + + thumb_func_start MOD18_0223E37C +MOD18_0223E37C: ; 0x0223E37C + push {r3, lr} + ldr r1, _0223E3DC ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E3D6 + cmp r0, #0x10 + bge _0223E3C8 + ldr r1, _0223E3E0 ; =0x00000147 + ldrb r1, [r2, r1] + cmp r1, #4 + bhi _0223E3D6 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223E39E: ; jump table + .short _0223E3A8 - _0223E39E - 2 ; case 0 + .short _0223E3AC - _0223E39E - 2 ; case 1 + .short _0223E3B6 - _0223E39E - 2 ; case 2 + .short _0223E3C2 - _0223E39E - 2 ; case 3 + .short _0223E3BC - _0223E39E - 2 ; case 4 +_0223E3A8: + mov r0, #0 + pop {r3, pc} +_0223E3AC: + cmp r0, #8 + bge _0223E3B6 + bl MOD18_0223C720 + pop {r3, pc} +_0223E3B6: + bl MOD18_0223D3E0 + pop {r3, pc} +_0223E3BC: + bl MOD18_02240B5C + pop {r3, pc} +_0223E3C2: + bl MOD18_0223C778 + pop {r3, pc} +_0223E3C8: + ldr r0, [r2, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CA8 + bl FUN_02026C90 + pop {r3, pc} +_0223E3D6: + mov r0, #0 + pop {r3, pc} + nop +_0223E3DC: .word 0x02251388 +_0223E3E0: .word 0x00000147 + thumb_func_end MOD18_0223E37C + + thumb_func_start MOD18_0223E3E4 +MOD18_0223E3E4: ; 0x0223E3E4 + push {r3, lr} + ldr r1, _0223E43C ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E438 + cmp r0, #0x10 + bge _0223E424 + ldr r1, _0223E440 ; =0x00000147 + ldrb r1, [r2, r1] + cmp r1, #4 + bhi _0223E438 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223E406: ; jump table + .short _0223E438 - _0223E406 - 2 ; case 0 + .short _0223E410 - _0223E406 - 2 ; case 1 + .short _0223E418 - _0223E406 - 2 ; case 2 + .short _0223E420 - _0223E406 - 2 ; case 3 + .short _0223E41C - _0223E406 - 2 ; case 4 +_0223E410: + cmp r0, #8 + bge _0223E418 + mov r0, #0xc + pop {r3, pc} +_0223E418: + mov r0, #9 + pop {r3, pc} +_0223E41C: + mov r0, #0xb + pop {r3, pc} +_0223E420: + mov r0, #0xc + pop {r3, pc} +_0223E424: + ldr r0, [r2, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CA8 + bl FUN_02026CA0 + cmp r0, #0 + beq _0223E438 + mov r0, #3 + pop {r3, pc} +_0223E438: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223E43C: .word 0x02251388 +_0223E440: .word 0x00000147 + thumb_func_end MOD18_0223E3E4 + + thumb_func_start MOD18_0223E444 +MOD18_0223E444: ; 0x0223E444 + ldr r0, _0223E450 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + ldr r0, _0223E454 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E450: .word 0x02251388 +_0223E454: .word 0x00000147 + thumb_func_end MOD18_0223E444 + + thumb_func_start MOD18_0223E458 +MOD18_0223E458: ; 0x0223E458 + ldr r0, _0223E464 ; =0x02251388 + mov r2, #1 + ldr r1, [r0] + ldr r0, _0223E468 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E464: .word 0x02251388 +_0223E468: .word 0x00000147 + thumb_func_end MOD18_0223E458 + + thumb_func_start MOD18_0223E46C +MOD18_0223E46C: ; 0x0223E46C + ldr r0, _0223E478 ; =0x02251388 + mov r2, #2 + ldr r1, [r0] + ldr r0, _0223E47C ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E478: .word 0x02251388 +_0223E47C: .word 0x00000147 + thumb_func_end MOD18_0223E46C + + thumb_func_start MOD18_0223E480 +MOD18_0223E480: ; 0x0223E480 + ldr r0, _0223E48C ; =0x02251388 + mov r2, #4 + ldr r1, [r0] + ldr r0, _0223E490 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E48C: .word 0x02251388 +_0223E490: .word 0x00000147 + thumb_func_end MOD18_0223E480 + + thumb_func_start MOD18_0223E494 +MOD18_0223E494: ; 0x0223E494 + ldr r0, _0223E4A0 ; =0x02251388 + mov r2, #3 + ldr r1, [r0] + ldr r0, _0223E4A4 ; =0x00000147 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223E4A0: .word 0x02251388 +_0223E4A4: .word 0x00000147 + thumb_func_end MOD18_0223E494 + + thumb_func_start MOD18_0223E4A8 +MOD18_0223E4A8: ; 0x0223E4A8 + ldr r2, _0223E4B8 ; =0x02251388 + ldr r2, [r2] + cmp r2, #0 + beq _0223E4B6 + add r0, r2, r0 + add r0, #0xc2 + strb r1, [r0] +_0223E4B6: + bx lr + .align 2, 0 +_0223E4B8: .word 0x02251388 + thumb_func_end MOD18_0223E4A8 + + thumb_func_start MOD18_0223E4BC +MOD18_0223E4BC: ; 0x0223E4BC + ldr r1, _0223E4D0 ; =0x02251388 + ldr r2, [r1] + cmp r2, #0 + beq _0223E4CC + add r0, r2, r0 + mov r1, #1 + add r0, #0xd2 + strb r1, [r0] +_0223E4CC: + bx lr + nop +_0223E4D0: .word 0x02251388 + thumb_func_end MOD18_0223E4BC + + thumb_func_start MOD18_0223E4D4 +MOD18_0223E4D4: ; 0x0223E4D4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223E550 ; =0x02251388 + ldr r0, [r0] + cmp r0, #0 + beq _0223E54E + lsl r4, r5, #2 + add r0, r0, r4 + add r0, #0xdc + ldr r0, [r0] + cmp r0, #0 + bne _0223E54E + mov r0, #0x64 + mov r1, #0xf + bl FUN_020219F4 + ldr r1, _0223E550 ; =0x02251388 + ldr r1, [r1] + add r1, r1, r4 + add r1, #0xdc + str r0, [r1] + mov r0, #0xb + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0x64 + mov r1, #0xb + bl FUN_020219F4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl FUN_0200ABC0 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + mov r1, #0x73 + add r2, r7, #0 + bl FUN_0200A8E0 + ldr r1, _0223E550 ; =0x02251388 + add r0, r6, #0 + ldr r1, [r1] + add r2, r7, #0 + add r1, r1, r4 + add r1, #0xdc + ldr r1, [r1] + bl FUN_0200B7B8 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_0200AB18 +_0223E54E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223E550: .word 0x02251388 + thumb_func_end MOD18_0223E4D4 + + thumb_func_start MOD18_0223E554 +MOD18_0223E554: ; 0x0223E554 + ldr r1, _0223E564 ; =0x02251388 + mov r2, #1 + ldr r1, [r1] + add r1, r1, r0 + ldr r0, _0223E568 ; =0x0000013D + strb r2, [r1, r0] + bx lr + nop +_0223E564: .word 0x02251388 +_0223E568: .word 0x0000013D + thumb_func_end MOD18_0223E554 + + thumb_func_start MOD18_0223E56C +MOD18_0223E56C: ; 0x0223E56C + ldr r1, _0223E578 ; =0x02251388 + ldr r1, [r1] + add r1, #0xc0 + strh r0, [r1] + bx lr + nop +_0223E578: .word 0x02251388 + thumb_func_end MOD18_0223E56C + + thumb_func_start MOD18_0223E57C +MOD18_0223E57C: ; 0x0223E57C + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldr r1, _0223E5EC ; =0x02251388 + add r5, r2, #0 + ldr r3, [r1] + add r1, r3, #0 + add r1, #0xc0 + ldrh r4, [r1] + cmp r4, #0 + beq _0223E5EA + mov r1, #0 + add r2, r3, #0 +_0223E594: + ldrh r6, [r2, #0x20] + cmp r4, r6 + bne _0223E5B0 + ldrh r6, [r2, #0x22] + cmp r0, r6 + bne _0223E5B0 + lsl r1, r1, #3 + add r0, r3, r1 + strh r7, [r0, #0x24] + ldr r0, _0223E5EC ; =0x02251388 + ldr r0, [r0] + add r0, r0, r1 + strh r5, [r0, #0x26] + pop {r3, r4, r5, r6, r7, pc} +_0223E5B0: + add r1, r1, #1 + add r2, #8 + cmp r1, #0x14 + blt _0223E594 + mov r6, #0 + add r2, r3, #0 +_0223E5BC: + ldrh r1, [r2, #0x20] + cmp r1, #0 + bne _0223E5DE + lsl r1, r6, #3 + add r2, r3, r1 + strh r4, [r2, #0x20] + ldr r2, _0223E5EC ; =0x02251388 + ldr r3, [r2] + add r3, r3, r1 + strh r0, [r3, #0x22] + ldr r0, [r2] + add r0, r0, r1 + strh r7, [r0, #0x24] + ldr r0, [r2] + add r0, r0, r1 + strh r5, [r0, #0x26] + pop {r3, r4, r5, r6, r7, pc} +_0223E5DE: + add r6, r6, #1 + add r2, #8 + cmp r6, #0x14 + blt _0223E5BC + bl ErrorHandling +_0223E5EA: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223E5EC: .word 0x02251388 + thumb_func_end MOD18_0223E57C + + thumb_func_start MOD18_0223E5F0 +MOD18_0223E5F0: ; 0x0223E5F0 + push {r4, r5} + ldr r1, _0223E624 ; =0x02251388 + mov r3, #0 + ldr r1, [r1] + add r2, r1, #0 + add r2, #0xc0 + ldrh r5, [r2] + add r4, r1, #0 +_0223E600: + ldrh r2, [r4, #0x20] + cmp r5, r2 + bne _0223E616 + ldrh r2, [r4, #0x22] + cmp r0, r2 + bne _0223E616 + lsl r0, r3, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x26] + pop {r4, r5} + bx lr +_0223E616: + add r3, r3, #1 + add r4, #8 + cmp r3, #0x14 + blt _0223E600 + mov r0, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0223E624: .word 0x02251388 + thumb_func_end MOD18_0223E5F0 + + thumb_func_start MOD18_0223E628 +MOD18_0223E628: ; 0x0223E628 + push {r4, r5} + ldr r1, _0223E65C ; =0x02251388 + mov r3, #0 + ldr r1, [r1] + add r2, r1, #0 + add r2, #0xc0 + ldrh r5, [r2] + add r4, r1, #0 +_0223E638: + ldrh r2, [r4, #0x20] + cmp r5, r2 + bne _0223E64E + ldrh r2, [r4, #0x22] + cmp r0, r2 + bne _0223E64E + lsl r0, r3, #3 + add r0, r1, r0 + ldrh r0, [r0, #0x24] + pop {r4, r5} + bx lr +_0223E64E: + add r3, r3, #1 + add r4, #8 + cmp r3, #0x14 + blt _0223E638 + mov r0, #0 + pop {r4, r5} + bx lr + .align 2, 0 +_0223E65C: .word 0x02251388 + thumb_func_end MOD18_0223E628 + + thumb_func_start MOD18_0223E660 +MOD18_0223E660: ; 0x0223E660 + push {r4, lr} + ldrb r4, [r2] + bl FUN_02031190 + cmp r4, r0 + bne _0223E680 + ldr r0, _0223E684 ; =0x02251388 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl MOD18_0224D1F8 + mov r0, #0x19 + bl FUN_020311DC + bl FUN_0204F7E4 +_0223E680: + pop {r4, pc} + nop +_0223E684: .word 0x02251388 + thumb_func_end MOD18_0223E660 + + thumb_func_start MOD18_0223E688 +MOD18_0223E688: ; 0x0223E688 + push {r3, r4} + ldr r3, _0223E69C ; =0x02251388 + ldr r4, [r3] + str r0, [r4] + ldr r0, [r3] + str r1, [r0, #4] + ldr r0, [r3] + str r2, [r0, #8] + pop {r3, r4} + bx lr + .align 2, 0 +_0223E69C: .word 0x02251388 + thumb_func_end MOD18_0223E688 + + thumb_func_start MOD18_0223E6A0 +MOD18_0223E6A0: ; 0x0223E6A0 + ldr r0, _0223E6B4 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + str r2, [r0, #8] + bx lr + nop +_0223E6B4: .word 0x02251388 + thumb_func_end MOD18_0223E6A0 + + thumb_func_start MOD18_0223E6B8 +MOD18_0223E6B8: ; 0x0223E6B8 + push {r4, lr} + ldr r0, _0223E730 ; =0x02251388 + mov r4, #0 + ldr r2, [r0] + ldr r0, [r2, #4] + cmp r0, #0 + beq _0223E6D2 + ldr r1, [r2] + ldr r2, [r2, #8] + blx r2 + bl MOD18_0223E6A0 + mov r4, #1 +_0223E6D2: + bl MOD18_0223D688 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + ldr r0, _0223E730 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DD94 + add r0, r4, #0 + pop {r4, pc} + nop +_0223E730: .word 0x02251388 + thumb_func_end MOD18_0223E6B8 + + thumb_func_start MOD18_0223E734 +MOD18_0223E734: ; 0x0223E734 + push {r3, r4, r5, lr} + ldr r2, _0223E7A8 ; =0x02251388 + add r4, r0, #0 + ldr r1, [r2] + ldr r3, [r1, #4] + cmp r3, #0 + beq _0223E746 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E746: + ldr r3, [r1, #0xc] + ldr r3, [r3, #0x10] + cmp r3, #0 + beq _0223E768 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r3, [r1, r0] + add r3, r3, #1 + str r3, [r1, r0] + ldr r1, [r2] + ldr r0, [r1, r0] + cmp r0, #0x64 + ble _0223E764 + bl ErrorHandling +_0223E764: + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E768: + bl FUN_0204D830 + cmp r0, #0 + beq _0223E774 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E774: + add r0, r4, #0 + bl FUN_0204E494 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204E4B4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0223E796 + cmp r4, #0 + beq _0223E796 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223E796: + ldr r0, _0223E7A8 ; =0x02251388 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x13 + lsl r0, r0, #4 + str r2, [r1, r0] + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0223E7A8: .word 0x02251388 + thumb_func_end MOD18_0223E734 + + thumb_func_start MOD18_0223E7AC +MOD18_0223E7AC: ; 0x0223E7AC + push {r3, lr} + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x46 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x47 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + ldr r0, _0223E7F8 ; =0x02251388 + ldr r1, [r0] + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl MOD18_0224DFA0 + pop {r3, pc} + nop +_0223E7F8: .word 0x02251388 + thumb_func_end MOD18_0223E7AC + + thumb_func_start MOD18_0223E7FC +MOD18_0223E7FC: ; 0x0223E7FC + push {r3, lr} + sub sp, #8 + bl MOD18_022478C4 + add r1, sp, #0 + strh r0, [r1] + bl MOD18_022478E0 + add r1, sp, #0 + strh r0, [r1, #2] + bl MOD18_02247900 + add r1, sp, #0 + strb r0, [r1, #4] + bl MOD18_0223CB24 + add r1, sp, #0 + strb r0, [r1, #5] + mov r0, #0x46 + add r1, sp, #0 + bl FUN_020311D0 + add sp, #8 + pop {r3, pc} + thumb_func_end MOD18_0223E7FC + + thumb_func_start MOD18_0223E82C +MOD18_0223E82C: ; 0x0223E82C + push {r3, r4, r5, lr} + add r4, r2, #0 + ldrh r1, [r4] + add r5, r0, #0 + bl MOD18_0224791C + ldrh r1, [r4, #2] + add r0, r5, #0 + bl MOD18_02247938 + ldrb r1, [r4, #4] + add r0, r5, #0 + bl MOD18_02247954 + ldrb r1, [r4, #5] + add r0, r5, #0 + bl MOD18_0223CB44 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0223E82C + + thumb_func_start MOD18_0223E854 +MOD18_0223E854: ; 0x0223E854 + mov r0, #6 + bx lr + thumb_func_end MOD18_0223E854 + + thumb_func_start MOD18_0223E858 +MOD18_0223E858: ; 0x0223E858 + ldr r1, _0223E868 ; =0x02251388 + mov r2, #1 + ldr r1, [r1] + add r0, r1, r0 + add r0, #0xca + strb r2, [r0] + bx lr + nop +_0223E868: .word 0x02251388 + thumb_func_end MOD18_0223E858 + + thumb_func_start MOD18_0223E86C +MOD18_0223E86C: ; 0x0223E86C + ldr r1, _0223E88C ; =0x02251388 + mov r0, #0 + ldr r3, [r1] + add r2, r0, #0 +_0223E874: + add r1, r3, #0 + add r1, #0xca + ldrb r1, [r1] + cmp r1, #0 + beq _0223E880 + add r0, r0, #1 +_0223E880: + add r2, r2, #1 + add r3, r3, #1 + cmp r2, #8 + blt _0223E874 + bx lr + nop +_0223E88C: .word 0x02251388 + thumb_func_end MOD18_0223E86C + + thumb_func_start MOD18_0223E890 +MOD18_0223E890: ; 0x0223E890 + ldr r1, _0223E8A0 ; =0x02251388 + ldr r3, _0223E8A4 ; =MOD18_02245358 + ldr r1, [r1] + mov r2, #0 + add r1, r1, r0 + add r1, #0xca + strb r2, [r1] + bx r3 + .align 2, 0 +_0223E8A0: .word 0x02251388 +_0223E8A4: .word MOD18_02245358 + thumb_func_end MOD18_0223E890 + + thumb_func_start MOD18_0223E8A8 +MOD18_0223E8A8: ; 0x0223E8A8 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0223E948 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + ldr r7, _0223E948 ; =0x022513A0 + add r6, r0, #0 + add r5, r4, #0 + str r4, [sp] +_0223E8C2: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026444 + ldr r1, [r7, #4] + add r2, r1, r5 + mov r1, #0xaa + lsl r1, r1, #2 + strb r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026450 + ldr r1, [r7, #4] + add r2, r1, r5 + mov r1, #0xa9 + lsl r1, r1, #2 + strh r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026470 + ldr r1, [r7, #4] + add r2, r1, r5 + ldr r1, _0223E94C ; =0x000002A6 + strh r0, [r2, r1] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_02026490 + ldr r1, [r7, #4] + add r2, r1, r5 + ldr r1, _0223E950 ; =0x000002A9 + strb r0, [r2, r1] + ldr r1, [r7, #4] + ldr r0, _0223E954 ; =0x00000B46 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223E936 + mov r0, #0xaa + add r2, r1, r5 + lsl r0, r0, #2 + ldrb r3, [r2, r0] + cmp r3, #0 + beq _0223E936 + ldr r1, _0223E94C ; =0x000002A6 + sub r0, r0, #4 + ldrh r0, [r2, r0] + ldrh r1, [r2, r1] + mov r2, #1 + bl MOD18_022402F8 + ldr r2, [r7, #4] + ldr r1, [sp] + add r2, r2, r1 + mov r1, #0xc1 + lsl r1, r1, #2 + str r0, [r2, r1] +_0223E936: + ldr r0, [sp] + add r4, r4, #1 + add r0, r0, #4 + add r5, r5, #6 + str r0, [sp] + cmp r4, #0x10 + blt _0223E8C2 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223E948: .word 0x022513A0 +_0223E94C: .word 0x000002A6 +_0223E950: .word 0x000002A9 +_0223E954: .word 0x00000B46 + thumb_func_end MOD18_0223E8A8 + + thumb_func_start MOD18_0223E958 +MOD18_0223E958: ; 0x0223E958 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r1, _0223E9B0 ; =0x022513A0 + ldr r2, [r1, #4] + cmp r2, #0 + bne _0223E9AC + ldr r2, _0223E9B4 ; =0x00000B48 + str r0, [r1, #4] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _0223E9B0 ; =0x022513A0 + ldr r0, [r0, #4] + str r4, [r0, #0x40] + add r0, r4, #0 + bl FUN_020377AC + bl FUN_02026CC4 + ldr r2, _0223E9B0 ; =0x022513A0 + mov r1, #0xa3 + ldr r3, [r2, #4] + mov r0, #0 + lsl r1, r1, #2 + str r0, [r3, r1] + ldr r1, _0223E9B8 ; =0x00000B04 + mov r5, #0xff +_0223E98E: + ldr r3, [r2, #4] + add r3, r3, r0 + add r0, r0, #1 + strb r5, [r3, r1] + cmp r0, #8 + blt _0223E98E + ldr r0, [r4, #0x20] + bl MOD05_021F043C + add r4, #0x88 + str r0, [r4] + bl MOD18_0223EBF0 + bl MOD18_0223E8A8 +_0223E9AC: + pop {r3, r4, r5, pc} + nop +_0223E9B0: .word 0x022513A0 +_0223E9B4: .word 0x00000B48 +_0223E9B8: .word 0x00000B04 + thumb_func_end MOD18_0223E958 + + thumb_func_start MOD18_0223E9BC +MOD18_0223E9BC: ; 0x0223E9BC + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0223EA3C ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + add r0, #0x88 + bl MOD05_021F04F8 + bl MOD18_0223ECB8 + bl MOD18_02243FF0 + mov r5, #0 + mov r7, #0xc1 + lsl r7, r7, #2 + ldr r1, _0223EA3C ; =0x022513A0 + add r6, r5, #0 + add r2, r5, #0 + add r0, r7, #0 +_0223E9E0: + ldr r3, [r1, #4] + add r4, r3, r6 + ldr r3, [r4, r0] + cmp r3, #0 + beq _0223E9EC + str r2, [r4, r7] +_0223E9EC: + add r5, r5, #1 + add r6, r6, #4 + cmp r5, #0x10 + blt _0223E9E0 + ldr r0, _0223EA3C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EA12 + bl FUN_0200CAB4 + ldr r0, _0223EA3C ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + str r2, [r1, r0] +_0223EA12: + ldr r0, _0223EA3C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EA30 + bl FUN_02016A18 + ldr r0, _0223EA3C ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r2, [r1, r0] +_0223EA30: + ldr r0, _0223EA3C ; =0x022513A0 + mov r2, #1 + ldr r1, [r0, #4] + ldr r0, _0223EA40 ; =0x00000B46 + strb r2, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EA3C: .word 0x022513A0 +_0223EA40: .word 0x00000B46 + thumb_func_end MOD18_0223E9BC + + thumb_func_start MOD18_0223EA44 +MOD18_0223EA44: ; 0x0223EA44 + push {r3, lr} + ldr r0, _0223EA70 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x20] + bl MOD05_021F043C + ldr r1, _0223EA70 ; =0x022513A0 + ldr r2, [r1, #4] + ldr r2, [r2, #0x40] + add r2, #0x88 + str r0, [r2] + ldr r1, [r1, #4] + ldr r0, _0223EA74 ; =0x00000B46 + mov r2, #0 + strb r2, [r1, r0] + bl MOD18_0223E8A8 + bl MOD18_0223EBF0 + pop {r3, pc} + nop +_0223EA70: .word 0x022513A0 +_0223EA74: .word 0x00000B46 + thumb_func_end MOD18_0223EA44 + + thumb_func_start MOD18_0223EA78 +MOD18_0223EA78: ; 0x0223EA78 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223EB04 ; =0x022513A0 + add r5, r4, #0 + add r7, r4, #0 +_0223EA82: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EA9E + bl FUN_02064520 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + str r7, [r1, r0] +_0223EA9E: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0223EA82 + bl MOD18_02243FF0 + bl MOD18_0223ECB8 + ldr r0, _0223EB04 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + add r0, #0x88 + bl MOD05_021F04F8 + ldr r0, _0223EB04 ; =0x022513A0 + ldr r1, _0223EB08 ; =0x00000B34 + ldr r3, [r0, #4] + ldrh r2, [r3, r1] + cmp r2, #0xa + blo _0223EAD0 + add r1, r1, #2 + ldrb r1, [r3, r1] + ldr r0, [r3, #0x40] + bl FUN_02061B0C +_0223EAD0: + ldr r0, _0223EB04 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EAE2 + bl FUN_0200CAB4 +_0223EAE2: + ldr r0, _0223EB04 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EAF4 + bl FUN_02016A18 +_0223EAF4: + ldr r0, _0223EB04 ; =0x022513A0 + ldr r0, [r0, #4] + bl FUN_02016A18 + ldr r0, _0223EB04 ; =0x022513A0 + mov r1, #0 + str r1, [r0, #4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EB04: .word 0x022513A0 +_0223EB08: .word 0x00000B34 + thumb_func_end MOD18_0223EA78 + + thumb_func_start MOD18_0223EB0C +MOD18_0223EB0C: ; 0x0223EB0C + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r6, _0223EB80 ; =0x022513A0 + add r5, r4, #0 + add r7, r4, #0 +_0223EB16: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223EB32 + bl FUN_02064520 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0xc1 + lsl r0, r0, #2 + str r7, [r1, r0] +_0223EB32: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x10 + blt _0223EB16 + bl MOD18_02243FF0 + bl MOD18_0223E8A8 + mov r4, #0 + ldr r2, _0223EB80 ; =0x022513A0 + ldr r0, _0223EB84 ; =0x00000B3C + add r1, r4, #0 +_0223EB4A: + ldr r3, [r2, #4] + add r3, r3, r4 + add r4, r4, #1 + strb r1, [r3, r0] + cmp r4, #8 + blt _0223EB4A + ldr r0, _0223EB80 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r0, r2, r0 + mov r2, #0x12 + lsl r2, r2, #6 + bl MI_CpuFill8 + ldr r0, _0223EB80 ; =0x022513A0 + mov r2, #3 + ldr r1, [r0, #4] + ldr r0, _0223EB88 ; =0x000007C4 + lsl r2, r2, #8 + add r0, r1, r0 + mov r1, #0 + bl MI_CpuFill8 + bl MOD18_0223F174 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EB80: .word 0x022513A0 +_0223EB84: .word 0x00000B3C +_0223EB88: .word 0x000007C4 + thumb_func_end MOD18_0223EB0C + + thumb_func_start MOD18_0223EB8C +MOD18_0223EB8C: ; 0x0223EB8C + push {r4, lr} + add r4, r0, #0 + ldr r0, _0223EBE8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r2, r1, r0 + lsl r1, r4, #4 + mov r0, #6 + mul r0, r1 + add r1, r2, r0 + mov r2, #0 + add r0, r2, #0 +_0223EBA6: + add r2, r2, #1 + strb r0, [r1, #4] + add r1, r1, #6 + cmp r2, #0x10 + blt _0223EBA6 + add r0, r4, #0 + bl MOD18_0223EDFC + ldr r0, _0223EBE8 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223EBEC ; =0x00000B3C + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223EBE6 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _0223EBE8 ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _0223EBEC ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 + ldr r0, _0223EBE8 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223EBEC ; =0x00000B3C + strb r2, [r1, r0] +_0223EBE6: + pop {r4, pc} + .align 2, 0 +_0223EBE8: .word 0x022513A0 +_0223EBEC: .word 0x00000B3C + thumb_func_end MOD18_0223EB8C + + thumb_func_start MOD18_0223EBF0 +MOD18_0223EBF0: ; 0x0223EBF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r4, #0 + mov r7, #6 + ldr r6, _0223ECB4 ; =0x022513A0 + add r5, r4, #0 + lsl r7, r7, #6 +_0223EBFE: + mov r0, #1 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + ldr r1, [r6, #4] + add r4, r4, #1 + add r1, r1, r5 + add r5, r5, #4 + str r0, [r1, r7] + cmp r4, #4 + blt _0223EBFE + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _0223ECB4 ; =0x022513A0 + mov r2, #0x11 + ldr r1, [r0, #4] + mov r0, #6 + lsl r0, r0, #6 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008F34 + ldr r2, _0223ECB4 ; =0x022513A0 + mov r1, #0x1a + ldr r3, [r2, #4] + lsl r1, r1, #4 + str r0, [r3, r1] + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, [r2, #4] + sub r1, #0x1c + ldr r0, [r0, r1] + mov r1, #0x32 + mov r2, #0x12 + bl FUN_02008FEC + ldr r2, _0223ECB4 ; =0x022513A0 + mov r1, #0x69 + ldr r3, [r2, #4] + lsl r1, r1, #2 + str r0, [r3, r1] + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r2, #4] + sub r1, #0x1c + ldr r0, [r0, r1] + mov r1, #0x32 + mov r2, #0x10 + bl FUN_020090AC + ldr r2, _0223ECB4 ; =0x022513A0 + mov r1, #0x6a + ldr r3, [r2, #4] + lsl r1, r1, #2 + str r0, [r3, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r2, #4] + sub r1, #0x1c + ldr r0, [r0, r1] + mov r1, #0x32 + mov r2, #0xf + bl FUN_020090AC + ldr r1, _0223ECB4 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r2, r1] + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223ECB4: .word 0x022513A0 + thumb_func_end MOD18_0223EBF0 + + thumb_func_start MOD18_0223ECB8 +MOD18_0223ECB8: ; 0x0223ECB8 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + mov r7, #6 + ldr r6, _0223ECD8 ; =0x022513A0 + add r5, r4, #0 + lsl r7, r7, #6 +_0223ECC4: + ldr r0, [r6, #4] + add r0, r0, r5 + ldr r0, [r0, r7] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0223ECC4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ECD8: .word 0x022513A0 + thumb_func_end MOD18_0223ECB8 + + thumb_func_start MOD18_0223ECDC +MOD18_0223ECDC: ; 0x0223ECDC + ldr r3, _0223ECE0 ; =0x0204F7FD + bx r3 + .align 2, 0 +_0223ECE0: .word 0x0204F7FD + thumb_func_end MOD18_0223ECDC + + thumb_func_start MOD18_0223ECE4 +MOD18_0223ECE4: ; 0x0223ECE4 + ldr r0, _0223ECE8 ; =0x00000B48 + bx lr + .align 2, 0 +_0223ECE8: .word 0x00000B48 + thumb_func_end MOD18_0223ECE4 + + thumb_func_start MOD18_0223ECEC +MOD18_0223ECEC: ; 0x0223ECEC + mov r0, #0x60 + bx lr + thumb_func_end MOD18_0223ECEC + + thumb_func_start MOD18_0223ECF0 +MOD18_0223ECF0: ; 0x0223ECF0 + push {r3, r4} + ldr r3, _0223ED1C ; =0x022513A0 + lsl r1, r1, #2 + ldr r2, [r3, #4] + add r4, r2, r1 + ldr r2, _0223ED20 ; =0x000007C4 + ldr r4, [r4, r2] + cmp r4, #0 + bne _0223ED08 + mov r0, #0 + pop {r3, r4} + bx lr +_0223ED08: + ldrh r4, [r4] + strh r4, [r0] + ldr r3, [r3, #4] + add r1, r3, r1 + ldr r1, [r1, r2] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + pop {r3, r4} + bx lr + nop +_0223ED1C: .word 0x022513A0 +_0223ED20: .word 0x000007C4 + thumb_func_end MOD18_0223ECF0 + + thumb_func_start MOD18_0223ED24 +MOD18_0223ED24: ; 0x0223ED24 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldrh r1, [r4] + add r0, sp, #0 + strh r1, [r0] + ldrh r1, [r4, #2] + strh r1, [r0, #2] + ldr r1, _0223ED8C ; =MOD18_0223ECF0 + mov r0, #0xc0 + bl MOD18_0223DC7C + add r0, sp, #0 + bl MOD18_0223DC28 + cmp r0, #0xc0 + bge _0223ED8A + ldr r1, _0223ED90 ; =0x022513A0 + mov r3, #0 + ldr r5, [r1, #4] + ldr r1, _0223ED94 ; =0x000007C4 +_0223ED4C: + ldr r2, [r5, r1] + cmp r2, r4 + beq _0223ED8A + add r3, r3, #1 + add r5, r5, #4 + cmp r3, #0xc0 + blt _0223ED4C + mov r2, #0xbe + cmp r0, #0xbe + bgt _0223ED78 + ldr r7, _0223ED90 ; =0x022513A0 + ldr r6, _0223ED98 ; =0x000007C8 + lsl r3, r2, #2 +_0223ED66: + ldr r1, [r7, #4] + ldr r5, _0223ED94 ; =0x000007C4 + add r1, r1, r3 + ldr r5, [r1, r5] + sub r2, r2, #1 + str r5, [r1, r6] + sub r3, r3, #4 + cmp r2, r0 + bge _0223ED66 +_0223ED78: + ldr r1, _0223ED90 ; =0x022513A0 + lsl r3, r0, #2 + ldr r0, [r1, #4] + add r2, r0, r3 + ldr r0, _0223ED94 ; =0x000007C4 + str r4, [r2, r0] + ldr r1, [r1, #4] + add r1, r1, r3 + str r4, [r1, r0] +_0223ED8A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223ED8C: .word MOD18_0223ECF0 +_0223ED90: .word 0x022513A0 +_0223ED94: .word 0x000007C4 +_0223ED98: .word 0x000007C8 + thumb_func_end MOD18_0223ED24 + + thumb_func_start MOD18_0223ED9C +MOD18_0223ED9C: ; 0x0223ED9C + push {r3, r4, r5, r6} + ldr r2, _0223EDF0 ; =0x022513A0 + mov r1, #0 + ldr r5, [r2, #4] + ldr r2, _0223EDF4 ; =0x000007C4 + mvn r1, r1 + mov r4, #0 +_0223EDAA: + ldr r3, [r5, r2] + cmp r3, r0 + bne _0223EDB4 + add r1, r4, #0 + b _0223EDBC +_0223EDB4: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc0 + blt _0223EDAA +_0223EDBC: + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _0223EDEC + cmp r1, #0xbf + bge _0223EDE0 + ldr r0, _0223EDF8 ; =0x000007C8 + ldr r3, _0223EDF0 ; =0x022513A0 + lsl r6, r1, #2 + sub r2, r0, #4 +_0223EDD0: + ldr r4, [r3, #4] + add r1, r1, #1 + add r5, r4, r6 + ldr r4, [r5, r0] + add r6, r6, #4 + str r4, [r5, r2] + cmp r1, #0xbf + blt _0223EDD0 +_0223EDE0: + ldr r0, _0223EDF0 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x2b + lsl r0, r0, #6 + str r2, [r1, r0] +_0223EDEC: + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_0223EDF0: .word 0x022513A0 +_0223EDF4: .word 0x000007C4 +_0223EDF8: .word 0x000007C8 + thumb_func_end MOD18_0223ED9C + + thumb_func_start MOD18_0223EDFC +MOD18_0223EDFC: ; 0x0223EDFC + push {r3, r4, r5, r6, r7, lr} + lsl r5, r0, #4 + ldr r7, _0223EE58 ; =0x022513A0 + mov r6, #0 + add r4, r5, #0 +_0223EE06: + mov r0, #0xd1 + ldr r1, [r7, #4] + lsl r0, r0, #2 + add r1, r1, r0 + mov r0, #6 + mul r0, r4 + add r0, r1, r0 + bl MOD18_0223ED9C + add r6, r6, #1 + add r4, r4, #1 + cmp r6, #0x10 + blt _0223EE06 + mov r6, #0 + mov r0, #6 + add r7, r5, #0 + add r4, r6, #0 + mul r7, r0 +_0223EE2A: + ldr r0, _0223EE58 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r7, r0 + add r2, r4, r1 + mov r1, #0xd2 + lsl r1, r1, #2 + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223EE4C + mov r1, #0xd1 + lsl r1, r1, #2 + add r1, r0, r1 + mov r0, #6 + mul r0, r5 + add r0, r1, r0 + bl MOD18_0223ED24 +_0223EE4C: + add r6, r6, #1 + add r4, r4, #6 + add r5, r5, #1 + cmp r6, #0x10 + blt _0223EE2A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EE58: .word 0x022513A0 + thumb_func_end MOD18_0223EDFC + + thumb_func_start MOD18_0223EE5C +MOD18_0223EE5C: ; 0x0223EE5C + mov r2, #0 +_0223EE5E: + ldrb r1, [r0, #4] + cmp r1, #0 + beq _0223EE6E + add r2, r2, #1 + add r0, r0, #6 + cmp r2, #0x10 + blt _0223EE5E + mov r0, #0 +_0223EE6E: + bx lr + thumb_func_end MOD18_0223EE5C + + thumb_func_start MOD18_0223EE70 +MOD18_0223EE70: ; 0x0223EE70 + mov r2, #0 +_0223EE72: + ldrb r1, [r0, #4] + cmp r1, #0 + bne _0223EE7C + add r0, r2, #0 + bx lr +_0223EE7C: + add r2, r2, #1 + add r0, r0, #6 + cmp r2, #0x10 + blt _0223EE72 + mov r0, #0 + mvn r0, r0 + bx lr + .align 2, 0 + thumb_func_end MOD18_0223EE70 + + thumb_func_start MOD18_0223EE8C +MOD18_0223EE8C: ; 0x0223EE8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223EF04 ; =0x022513A0 + ldr r6, [r1, #4] + mov r1, #0xd1 + lsl r1, r1, #2 + add r1, r6, r1 + sub r0, r0, r1 + mov r1, #6 + bl _u32_div_f + add r4, r0, #0 + lsr r0, r4, #4 + str r0, [sp, #4] + add r0, r0, #1 + lsl r0, r0, #4 + str r0, [sp] + mov r0, #6 + add r5, r4, #0 + mul r5, r0 + mov r0, #0xd2 + mov r2, #0 + add r1, r6, r5 + lsl r0, r0, #2 + strb r2, [r1, r0] + ldr r0, [sp] + sub r6, r0, #1 + cmp r4, r6 + bhs _0223EEE8 + ldr r7, _0223EF04 ; =0x022513A0 +_0223EEC8: + mov r0, #0xd1 + ldr r1, [r7, #4] + lsl r0, r0, #2 + add r1, r1, r0 + add r2, r4, #1 + mov r0, #6 + mul r0, r2 + add r0, r1, r0 + add r1, r1, r5 + mov r2, #6 + bl MI_CpuCopy8 + add r4, r4, #1 + add r5, r5, #6 + cmp r4, r6 + blo _0223EEC8 +_0223EEE8: + ldr r1, _0223EF04 ; =0x022513A0 + mov r2, #6 + ldr r3, [r1, #4] + ldr r1, [sp] + mov r0, #0 + mul r2, r1 + ldr r1, _0223EF08 ; =0x00000342 + add r2, r3, r2 + strb r0, [r2, r1] + ldr r0, [sp, #4] + bl MOD18_0223EDFC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EF04: .word 0x022513A0 +_0223EF08: .word 0x00000342 + thumb_func_end MOD18_0223EE8C + + thumb_func_start MOD18_0223EF0C +MOD18_0223EF0C: ; 0x0223EF0C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _0223EF5C ; =0x022513A0 + add r6, r1, #0 + ldr r0, [r0, #4] + add r7, r2, #0 + ldr r0, [r0, #0x40] + add r1, r5, #0 + add r2, r6, #0 + str r3, [sp] + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223EF2C + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223EF2C: + add r0, r7, #0 + bl MOD18_0223EE5C + add r4, r0, #0 + bne _0223EF4A + add r0, r7, #0 + bl MOD18_02240330 + add r4, r0, #0 + bl MOD18_0223EE8C + add r0, r4, #0 + bl MOD18_0223EE5C + add r4, r0, #0 +_0223EF4A: + strh r5, [r4] + ldr r0, [sp] + strh r6, [r4, #2] + strb r0, [r4, #4] + add r0, r4, #0 + bl MOD18_0223ED24 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EF5C: .word 0x022513A0 + thumb_func_end MOD18_0223EF0C + + thumb_func_start MOD18_0223EF60 +MOD18_0223EF60: ; 0x0223EF60 + push {r0, r1, r2, r3} + push {r3, lr} + mov r0, #0x20 + add r1, sp, #8 + bl FUN_020311D0 + pop {r3} + pop {r3} + add sp, #0x10 + bx r3 + thumb_func_end MOD18_0223EF60 + + thumb_func_start MOD18_0223EF74 +MOD18_0223EF74: ; 0x0223EF74 + ldr r3, _0223EF78 ; =MOD18_02240C8C + bx r3 + .align 2, 0 +_0223EF78: .word MOD18_02240C8C + thumb_func_end MOD18_0223EF74 + + thumb_func_start MOD18_0223EF7C +MOD18_0223EF7C: ; 0x0223EF7C + ldr r1, _0223EF90 ; =0x022513A0 + ldr r3, _0223EF94 ; =0x0203105D + ldr r2, [r1, #4] + mov r1, #0xa9 + lsl r1, r1, #2 + add r1, r2, r1 + mov r0, #0x23 + mov r2, #0x60 + bx r3 + nop +_0223EF90: .word 0x022513A0 +_0223EF94: .word 0x0203105D + thumb_func_end MOD18_0223EF7C + + thumb_func_start MOD18_0223EF98 +MOD18_0223EF98: ; 0x0223EF98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r1, _0223F0BC ; =0x022513A0 + add r5, r0, #0 + ldr r1, [r1, #4] + add r7, r2, #0 + cmp r1, #0 + bne _0223EFAA + b _0223F0B6 +_0223EFAA: + add r1, sp, #0 + strb r5, [r1, #6] + mov r2, #3 + strb r2, [r1, #7] + bl FUN_0204E62C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E664 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E544 + ldr r1, _0223F0C0 ; =0x0000FFFF + cmp r0, r1 + bne _0223EFEC + add r0, r5, #0 + bl FUN_0204E598 + ldr r1, _0223F0C0 ; =0x0000FFFF + cmp r0, r1 + bne _0223EFEC + mov r1, #7 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223EFEC: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0204E8B0 + cmp r0, #0xff + beq _0223F00C + mov r1, #5 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F00C: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0204D76C + cmp r0, #0 + beq _0223F02C + mov r1, #5 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F02C: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0223F04C + mov r1, #4 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F04C: + ldr r0, _0223F0BC ; =0x022513A0 + add r1, r6, #0 + ldr r0, [r0, #4] + add r2, r4, #0 + ldr r0, [r0, #0x40] + bl FUN_0204A6B4 + cmp r0, #0 + beq _0223F072 + mov r1, #6 + add r0, sp, #0 + strb r1, [r0, #7] + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_0223F072: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0223D8A8 + cmp r0, #0 + bne _0223F0AC + ldr r2, _0223F0BC ; =0x022513A0 + add r1, r4, #0 + ldr r3, [r2, #4] + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r3, r2 + lsl r4, r5, #4 + mov r3, #6 + mul r3, r4 + add r2, r2, r3 + ldrb r3, [r7] + add r0, r6, #0 + bl MOD18_0223EF0C + cmp r0, #0 + beq _0223F0AC + mov r2, #1 + add r1, sp, #0 + strb r2, [r1, #7] + add r1, sp, #0 + mov r2, #6 + bl MI_CpuCopy8 +_0223F0AC: + mov r0, #0x22 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 +_0223F0B6: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F0BC: .word 0x022513A0 +_0223F0C0: .word 0x0000FFFF + thumb_func_end MOD18_0223EF98 + + thumb_func_start MOD18_0223F0C4 +MOD18_0223F0C4: ; 0x0223F0C4 + mov r0, #8 + bx lr + thumb_func_end MOD18_0223F0C4 + + thumb_func_start MOD18_0223F0C8 +MOD18_0223F0C8: ; 0x0223F0C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #4] + ldr r0, _0223F16C ; =0x022513A0 + str r1, [sp, #8] + ldr r0, [r0, #4] + add r7, r2, #0 + ldr r0, [r0, #0x40] + add r5, r3, #0 + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + str r0, [sp, #0xc] + cmp r5, #0x40 + blt _0223F0EC + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F0EC: + ldr r0, _0223F16C ; =0x022513A0 + ldr r2, [r7, #4] + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r4, r1, r0 + asr r0, r5, #3 + lsr r0, r0, #0x1c + add r0, r5, r0 + asr r0, r0, #4 + add r0, #8 + lsl r1, r0, #4 + add r6, r1, #0 + mov r0, #6 + ldr r1, [r7] + mul r6, r0 + ldr r0, [r7, #8] + mul r1, r2 + add r0, r0, r1 + str r0, [r7] + lsr r1, r0, #0x10 + mov r0, #0x1a + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, _0223F170 ; =0x02250460 + ldrb r7, [r0, r1] + ldr r0, [sp, #4] + ldr r1, [sp, #8] + bl MOD18_0223D8A8 + cmp r0, #0 + bne _0223F166 + add r0, r4, r6 + bl MOD18_0223EE5C + cmp r0, #0 + beq _0223F166 + ldr r0, [sp, #4] + ldr r1, [sp, #8] + add r2, r4, r6 + add r3, r7, #0 + bl MOD18_0223EF0C + cmp r0, #0 + beq _0223F166 + strb r5, [r0, #5] + ldr r0, [sp, #8] + ldr r3, [sp, #4] + str r0, [sp] + ldr r0, [sp, #0xc] + add r1, r7, #0 + add r2, r5, #0 + bl FUN_0202630C + add sp, #0x10 + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223F166: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F16C: .word 0x022513A0 +_0223F170: .word 0x02250460 + thumb_func_end MOD18_0223F0C8 + + thumb_func_start MOD18_0223F174 +MOD18_0223F174: ; 0x0223F174 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _0223F1D8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r5, r0, #0 + mov r4, #0 +_0223F186: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026354 + add r7, r0, #0 + beq _0223F1D0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026370 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202639C + ldr r2, _0223F1D8 ; =0x022513A0 + add r1, r0, #0 + ldr r3, [r2, #4] + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r3, r2 + asr r3, r4, #3 + lsr r3, r3, #0x1c + add r3, r4, r3 + asr r3, r3, #4 + add r3, #8 + add r0, r6, #0 + lsl r6, r3, #4 + mov r3, #6 + mul r3, r6 + add r2, r2, r3 + add r3, r7, #0 + bl MOD18_0223EF0C + cmp r0, #0 + beq _0223F1D0 + strb r4, [r0, #5] +_0223F1D0: + add r4, r4, #1 + cmp r4, #0x40 + blt _0223F186 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F1D8: .word 0x022513A0 + thumb_func_end MOD18_0223F174 + + thumb_func_start MOD18_0223F1DC +MOD18_0223F1DC: ; 0x0223F1DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + ldr r0, _0223F228 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CC4 + mov r4, #0 + add r7, r0, #0 + add r5, r4, #0 +_0223F1F4: + ldr r0, _0223F228 ; =0x022513A0 + mov r1, #0xaa + ldr r0, [r0, #4] + mov r3, #0xa9 + add r6, r0, r5 + ldr r0, _0223F22C ; =0x000002A6 + lsl r1, r1, #2 + ldrh r0, [r6, r0] + lsl r3, r3, #2 + add r2, r4, #0 + str r0, [sp] + ldr r0, _0223F230 ; =0x000002A9 + ldrb r0, [r6, r0] + str r0, [sp, #4] + ldrb r1, [r6, r1] + ldrh r3, [r6, r3] + add r0, r7, #0 + bl FUN_020263F4 + add r4, r4, #1 + add r5, r5, #6 + cmp r4, #0x10 + blt _0223F1F4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F228: .word 0x022513A0 +_0223F22C: .word 0x000002A6 +_0223F230: .word 0x000002A9 + thumb_func_end MOD18_0223F1DC + + thumb_func_start MOD18_0223F234 +MOD18_0223F234: ; 0x0223F234 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_0223EE5C + add r5, r0, #0 + bne _0223F26C + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_02240330 + bl MOD18_0223F2AC + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_0223EE5C + add r5, r0, #0 +_0223F26C: + ldr r0, _0223F2A8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa9 + lsl r0, r0, #2 + add r0, r1, r0 + bl MOD18_0223EE70 + add r4, r0, #0 + add r0, r6, #0 + add r1, r5, #0 + mov r2, #6 + bl MI_CpuCopy8 + bl MOD18_0223F1DC + ldrh r0, [r5] + ldrh r1, [r5, #2] + ldrb r3, [r5, #4] + mov r2, #1 + bl MOD18_022402F8 + ldr r1, _0223F2A8 ; =0x022513A0 + ldr r2, [r1, #4] + lsl r1, r4, #2 + add r2, r2, r1 + mov r1, #0xc1 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + nop +_0223F2A8: .word 0x022513A0 + thumb_func_end MOD18_0223F234 + + thumb_func_start MOD18_0223F2AC +MOD18_0223F2AC: ; 0x0223F2AC + push {r3, r4, r5, r6, r7, lr} + ldr r2, _0223F358 ; =0x022513A0 + mov r6, #0 + ldr r3, [r2, #4] + mov r2, #0xa9 + lsl r2, r2, #2 + add r2, r3, r2 + ldrh r3, [r0] + mvn r6, r6 + mov r1, #0 +_0223F2C0: + ldrh r4, [r2] + cmp r3, r4 + bne _0223F2D2 + ldrh r5, [r0, #2] + ldrh r4, [r2, #2] + cmp r5, r4 + bne _0223F2D2 + add r6, r1, #0 + b _0223F2DA +_0223F2D2: + add r1, r1, #1 + add r2, r2, #6 + cmp r1, #0x10 + blt _0223F2C0 +_0223F2DA: + mov r0, #0 + mvn r0, r0 + cmp r6, r0 + beq _0223F354 + add r5, r6, #0 + cmp r6, #0xf + bge _0223F310 + mov r0, #6 + add r4, r6, #0 + ldr r7, _0223F358 ; =0x022513A0 + mul r4, r0 +_0223F2F0: + mov r0, #0xa9 + ldr r1, [r7, #4] + lsl r0, r0, #2 + add r1, r1, r0 + add r2, r5, #1 + mov r0, #6 + mul r0, r2 + add r0, r1, r0 + add r1, r1, r4 + mov r2, #6 + bl MI_CpuCopy8 + add r5, r5, #1 + add r4, r4, #6 + cmp r5, #0xf + blt _0223F2F0 +_0223F310: + ldr r1, _0223F358 ; =0x022513A0 + ldr r0, _0223F35C ; =0x00000302 + ldr r2, [r1, #4] + mov r3, #0 + strb r3, [r2, r0] + ldr r1, [r1, #4] + lsl r4, r6, #2 + add r1, r1, r4 + add r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0223F32C + bl FUN_02064520 +_0223F32C: + cmp r6, #0xf + bge _0223F348 + mov r0, #0xc2 + lsl r0, r0, #2 + ldr r2, _0223F358 ; =0x022513A0 + sub r1, r0, #4 +_0223F338: + ldr r3, [r2, #4] + add r6, r6, #1 + add r5, r3, r4 + ldr r3, [r5, r0] + add r4, r4, #4 + str r3, [r5, r1] + cmp r6, #0xf + blt _0223F338 +_0223F348: + ldr r0, _0223F358 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0xd + lsl r0, r0, #6 + str r2, [r1, r0] +_0223F354: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F358: .word 0x022513A0 +_0223F35C: .word 0x00000302 + thumb_func_end MOD18_0223F2AC + + thumb_func_start MOD18_0223F360 +MOD18_0223F360: ; 0x0223F360 + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4, #6] + cmp r1, r0 + bne _0223F3FA + bl FUN_0204F7E4 + ldrb r0, [r4, #7] + cmp r0, #1 + bne _0223F3A4 + add r0, r4, #0 + bl MOD18_0223F234 + ldrb r0, [r4, #4] + bl MOD18_02249AD8 + bl MOD18_0223D638 + ldrb r1, [r4, #4] + bl MOD18_0224DDE8 + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x83 + mov r2, #1 + bl MOD18_0224DCB8 + ldr r0, _0223F400 ; =0x00000623 + bl FUN_020054C8 + pop {r4, pc} +_0223F3A4: + cmp r0, #4 + bne _0223F3B8 + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x49 + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223F3B8: + cmp r0, #5 + bne _0223F3CC + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x37 + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223F3CC: + cmp r0, #6 + bne _0223F3E0 + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x3c + mov r2, #1 + bl MOD18_0224DCB8 + pop {r4, pc} +_0223F3E0: + cmp r0, #7 + bne _0223F3EC + mov r0, #0 + bl MOD18_0223ECDC + pop {r4, pc} +_0223F3EC: + bl MOD18_0223D638 + ldr r3, _0223F3FC ; =MOD18_0223ECDC + mov r1, #0x3b + mov r2, #1 + bl MOD18_0224DCB8 +_0223F3FA: + pop {r4, pc} + .align 2, 0 +_0223F3FC: .word MOD18_0223ECDC +_0223F400: .word 0x00000623 + thumb_func_end MOD18_0223F360 + + thumb_func_start MOD18_0223F404 +MOD18_0223F404: ; 0x0223F404 + ldr r0, _0223F41C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r3, r1, r0 + ldrh r1, [r2] + mov r0, #6 + mul r0, r1 + add r0, r3, r0 + ldr r3, _0223F420 ; =MOD18_0223EE8C + bx r3 + nop +_0223F41C: .word 0x022513A0 +_0223F420: .word MOD18_0223EE8C + thumb_func_end MOD18_0223F404 + + thumb_func_start MOD18_0223F424 +MOD18_0223F424: ; 0x0223F424 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223F424 + + thumb_func_start MOD18_0223F428 +MOD18_0223F428: ; 0x0223F428 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + lsl r1, r0, #4 + str r0, [sp] + mov r0, #6 + add r7, r1, #0 + mul r7, r0 + ldr r0, _0223F4A4 ; =0x022513A0 + add r5, r2, #0 + ldr r1, [r0, #4] + mov r0, #0xd1 + lsl r0, r0, #2 + add r0, r1, r0 + add r6, r0, r7 + bl FUN_02031190 + cmp r0, #0 + bne _0223F49E + cmp r4, #0x60 + beq _0223F456 + bl ErrorHandling +_0223F456: + mov r0, #0 + add r4, r0, #0 +_0223F45A: + add r0, r0, #1 + strb r4, [r6, #4] + add r6, r6, #6 + cmp r0, #0x10 + blt _0223F45A +_0223F464: + ldrb r3, [r5, #4] + cmp r3, #0 + beq _0223F47E + ldr r2, _0223F4A4 ; =0x022513A0 + ldrh r0, [r5] + ldr r6, [r2, #4] + mov r2, #0xd1 + lsl r2, r2, #2 + add r2, r6, r2 + ldrh r1, [r5, #2] + add r2, r2, r7 + bl MOD18_0223EF0C +_0223F47E: + add r4, r4, #1 + add r5, r5, #6 + cmp r4, #0x10 + blt _0223F464 + ldr r0, [sp] + add r1, sp, #4 + strb r0, [r1] + mov r0, #1 + strb r0, [r1, #1] + mov r0, #0x24 + add r1, sp, #4 + mov r2, #2 + bl FUN_02030BC4 + bl MOD18_0223FAC4 +_0223F49E: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223F4A4: .word 0x022513A0 + thumb_func_end MOD18_0223F428 + + thumb_func_start MOD18_0223F4A8 +MOD18_0223F4A8: ; 0x0223F4A8 + push {r4, lr} + ldr r0, _0223F4CC ; =0x022513A0 + add r4, r2, #0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _0223F4C8 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0223F4C8 + ldr r0, _0223F4CC ; =0x022513A0 + ldrb r2, [r4, #1] + ldr r1, [r0, #4] + ldr r0, _0223F4D0 ; =0x00000B45 + strb r2, [r1, r0] +_0223F4C8: + pop {r4, pc} + nop +_0223F4CC: .word 0x022513A0 +_0223F4D0: .word 0x00000B45 + thumb_func_end MOD18_0223F4A8 + + thumb_func_start MOD18_0223F4D4 +MOD18_0223F4D4: ; 0x0223F4D4 + mov r0, #2 + bx lr + thumb_func_end MOD18_0223F4D4 + + thumb_func_start MOD18_0223F4D8 +MOD18_0223F4D8: ; 0x0223F4D8 + ldr r0, _0223F4EC ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _0223F4F0 ; =0x00000B45 + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223F4E8 + mov r0, #1 + bx lr +_0223F4E8: + mov r0, #0 + bx lr + .align 2, 0 +_0223F4EC: .word 0x022513A0 +_0223F4F0: .word 0x00000B45 + thumb_func_end MOD18_0223F4D8 + + thumb_func_start MOD18_0223F4F4 +MOD18_0223F4F4: ; 0x0223F4F4 + ldr r0, _0223F500 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _0223F504 ; =0x00000B45 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_0223F500: .word 0x022513A0 +_0223F504: .word 0x00000B45 + thumb_func_end MOD18_0223F4F4 + + thumb_func_start MOD18_0223F508 +MOD18_0223F508: ; 0x0223F508 + mov r0, #4 + bx lr + thumb_func_end MOD18_0223F508 + + thumb_func_start MOD18_0223F50C +MOD18_0223F50C: ; 0x0223F50C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _0223F5C4 ; =0x022513A0 + add r6, r2, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CC4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_0204E62C + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E664 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223F728 + add r4, r0, #0 + beq _0223F5BE + add r0, r5, #0 + bl FUN_0204F210 + cmp r0, #0 + beq _0223F54E + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223F54E: + add r3, sp, #0 + ldrb r2, [r3, #7] + mov r0, #0xf + bic r2, r0 + lsl r0, r5, #0x18 + lsr r1, r0, #0x18 + mov r0, #0xf + and r0, r1 + orr r0, r2 + strb r0, [r3, #7] + add r0, r4, #0 + bl MOD18_0223F6F8 + add r1, sp, #0 + strb r0, [r1, #6] + add r0, r4, #0 + add r1, sp, #0 + mov r2, #6 + bl MI_CpuCopy8 + mov r0, #0x10 + tst r0, r6 + add r1, sp, #0 + beq _0223F588 + ldrb r2, [r1, #7] + mov r0, #0x40 + orr r0, r2 + strb r0, [r1, #7] + b _0223F596 +_0223F588: + ldrb r2, [r1, #7] + mov r0, #0x40 + bic r2, r0 + add r0, r4, #0 + strb r2, [r1, #7] + bl MOD18_0223EE8C +_0223F596: + add r1, sp, #0 + ldrb r0, [r1, #6] + cmp r0, #8 + blo _0223F5A6 + ldrb r1, [r1, #5] + add r0, r7, #0 + bl FUN_020263C8 +_0223F5A6: + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + mov r0, #0x33 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223F5BE: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F5C4: .word 0x022513A0 + thumb_func_end MOD18_0223F50C + + thumb_func_start MOD18_0223F5C8 +MOD18_0223F5C8: ; 0x0223F5C8 + mov r0, #8 + bx lr + thumb_func_end MOD18_0223F5C8 + + thumb_func_start MOD18_0223F5CC +MOD18_0223F5CC: ; 0x0223F5CC + push {r3, r4, r5, lr} + add r4, r2, #0 + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r0, #8 + blo _0223F5DE + bl ErrorHandling +_0223F5DE: + ldrb r3, [r4, #7] + lsl r0, r3, #0x19 + lsr r0, r0, #0x1f + cmp r0, #1 + bne _0223F60A + bl FUN_02031190 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, r0 + bne _0223F6DC + bl MOD18_0223D638 + ldr r3, _0223F6E0 ; =MOD18_0223ECDC + mov r1, #0x4e + mov r2, #1 + bl MOD18_0224DCB8 + bl FUN_0204F7E4 + pop {r3, r4, r5, pc} +_0223F60A: + ldr r1, _0223F6E4 ; =0x022513A0 + mov r0, #1 + ldr r2, [r1, #4] + lsl r1, r3, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223F6E8 ; =0x00000B2C + strb r0, [r2, r1] + bl FUN_02031190 + ldrb r1, [r4, #6] + cmp r1, r0 + bne _0223F62E + add r0, r4, #0 + bl MOD18_0223F2AC + bl MOD18_0223F1DC +_0223F62E: + bl FUN_02031190 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, r0 + bne _0223F6DC + ldrb r0, [r4, #4] + bl MOD18_022494A0 + cmp r0, #0 + beq _0223F6CA + bl FUN_02031190 + ldrb r1, [r4, #6] + cmp r1, r0 + beq _0223F674 + ldr r0, _0223F6E4 ; =0x022513A0 + ldr r2, [r0, #4] + ldr r0, _0223F6EC ; =0x00000B34 + ldrh r1, [r2, r0] + cmp r1, #0 + bne _0223F662 + ldrb r1, [r4, #4] + add r0, r0, #2 + strb r1, [r2, r0] +_0223F662: + ldr r0, _0223F6E4 ; =0x022513A0 + ldr r1, _0223F6F0 ; =0x0000FFFF + ldr r3, [r0, #4] + ldr r0, _0223F6EC ; =0x00000B34 + ldrh r2, [r3, r0] + cmp r2, r1 + beq _0223F674 + add r1, r2, #1 + strh r1, [r3, r0] +_0223F674: + ldr r0, _0223F6F4 ; =0x000005E3 + bl FUN_020054C8 + bl MOD18_0223D638 + add r5, r0, #0 + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDA0 + bl MOD18_0223D638 + ldrb r2, [r4, #4] + mov r1, #2 + bl MOD18_0224DF40 + bl MOD18_0223D638 + mov r1, #2 + bl MOD18_0224DF54 + bl MOD18_0223D638 + ldrb r1, [r4, #4] + bl MOD18_0224DDE8 + bl MOD18_0223D638 + ldr r3, _0223F6E0 ; =MOD18_0223ECDC + mov r1, #0x12 + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_0223D638 + bl MOD18_0224DD10 + b _0223F6D8 +_0223F6CA: + bl MOD18_0223D638 + ldr r3, _0223F6E0 ; =MOD18_0223ECDC + mov r1, #0x4e + mov r2, #1 + bl MOD18_0224DCB8 +_0223F6D8: + bl FUN_0204F7E4 +_0223F6DC: + pop {r3, r4, r5, pc} + nop +_0223F6E0: .word MOD18_0223ECDC +_0223F6E4: .word 0x022513A0 +_0223F6E8: .word 0x00000B2C +_0223F6EC: .word 0x00000B34 +_0223F6F0: .word 0x0000FFFF +_0223F6F4: .word 0x000005E3 + thumb_func_end MOD18_0223F5CC + + thumb_func_start MOD18_0223F6F8 +MOD18_0223F6F8: ; 0x0223F6F8 + push {r3, lr} + ldr r1, _0223F724 ; =0x022513A0 + mov r3, #0 + ldr r2, [r1, #4] + mov r1, #0xd1 + lsl r1, r1, #2 + add r1, r2, r1 +_0223F706: + cmp r1, r0 + bne _0223F714 + asr r0, r3, #3 + lsr r0, r0, #0x1c + add r0, r3, r0 + asr r0, r0, #4 + pop {r3, pc} +_0223F714: + add r3, r3, #1 + add r1, r1, #6 + cmp r3, #0xc0 + blt _0223F706 + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0223F724: .word 0x022513A0 + thumb_func_end MOD18_0223F6F8 + + thumb_func_start MOD18_0223F728 +MOD18_0223F728: ; 0x0223F728 + push {r3, lr} + add r2, sp, #0 + strh r0, [r2] + strh r1, [r2, #2] + ldr r1, _0223F758 ; =MOD18_0223ECF0 + mov r0, #0xc0 + bl MOD18_0223DC7C + add r0, sp, #0 + bl MOD18_0223DBBC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0223F74A + mov r0, #0 + pop {r3, pc} +_0223F74A: + ldr r1, _0223F75C ; =0x022513A0 + lsl r0, r0, #2 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223F760 ; =0x000007C4 + ldr r0, [r1, r0] + pop {r3, pc} + .align 2, 0 +_0223F758: .word MOD18_0223ECF0 +_0223F75C: .word 0x022513A0 +_0223F760: .word 0x000007C4 + thumb_func_end MOD18_0223F728 + + thumb_func_start MOD18_0223F764 +MOD18_0223F764: ; 0x0223F764 + push {r3, lr} + bl MOD18_0223F728 + cmp r0, #0 + beq _0223F772 + mov r0, #1 + pop {r3, pc} +_0223F772: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0223F764 + + thumb_func_start MOD18_0223F778 +MOD18_0223F778: ; 0x0223F778 + mov r0, #8 + bx lr + thumb_func_end MOD18_0223F778 + + thumb_func_start MOD18_0223F77C +MOD18_0223F77C: ; 0x0223F77C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223F850 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r4, #0 + bl MOD18_0223CAEC + cmp r0, #0 + beq _0223F7A0 + add sp, #8 + mov r0, #0 + pop {r4, r5, r6, pc} +_0223F7A0: + add r0, r4, #0 + bl FUN_0204E544 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204E598 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0223F728 + add r5, r0, #0 + bne _0223F7C0 + add sp, #8 + mov r0, #0 + pop {r4, r5, r6, pc} +_0223F7C0: + ldr r0, _0223F850 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223F854 ; =0x00000B3C + ldrb r0, [r1, r0] + cmp r0, #0 + beq _0223F7E4 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _0223F850 ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _0223F854 ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 +_0223F7E4: + ldrb r1, [r5, #4] + add r0, r4, #0 + bl MOD18_0223FCC0 + add r0, sp, #0 + ldrb r2, [r0, #7] + mov r1, #0x80 + bic r2, r1 + strb r2, [r0, #7] + ldrb r1, [r0, #7] + mov r2, #0xf + bic r1, r2 + lsl r2, r4, #0x18 + lsr r3, r2, #0x18 + mov r2, #0xf + and r2, r3 + orr r1, r2 + strb r1, [r0, #7] + add r0, r5, #0 + bl MOD18_0223F6F8 + add r1, sp, #0 + strb r0, [r1, #6] + add r0, r5, #0 + add r1, sp, #0 + mov r2, #6 + bl MI_CpuCopy8 + add r1, sp, #0 + ldrb r0, [r1, #6] + cmp r0, #8 + blo _0223F82C + ldrb r1, [r1, #5] + add r0, r6, #0 + bl FUN_020263C8 +_0223F82C: + mov r0, #0x25 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + ldr r0, _0223F850 ; =0x022513A0 + ldrb r2, [r5, #4] + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _0223F854 ; =0x00000B3C + strb r2, [r1, r0] + add r0, r5, #0 + bl MOD18_0223EE8C + mov r0, #1 + add sp, #8 + pop {r4, r5, r6, pc} + nop +_0223F850: .word 0x022513A0 +_0223F854: .word 0x00000B3C + thumb_func_end MOD18_0223F77C + + thumb_func_start MOD18_0223F858 +MOD18_0223F858: ; 0x0223F858 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r1, #0 + ldr r1, _0223F8D0 ; =0x022513A0 + add r5, r0, #0 + ldr r1, [r1, #4] + add r4, r2, #0 + add r2, r1, r5 + ldr r1, _0223F8D4 ; =0x00000B3C + add r7, r3, #0 + ldrb r1, [r2, r1] + cmp r1, #0 + beq _0223F876 + bl MOD18_0223FCD4 +_0223F876: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223FCC0 + add r1, sp, #0 + ldrb r3, [r1, #7] + mov r0, #0xf + bic r3, r0 + lsl r0, r5, #0x18 + lsr r2, r0, #0x18 + mov r0, #0xf + and r0, r2 + orr r0, r3 + strb r0, [r1, #7] + strb r6, [r1, #6] + ldrb r2, [r1, #7] + mov r0, #0x80 + orr r0, r2 + strb r0, [r1, #7] + strb r4, [r1, #4] + ldr r0, [sp, #0x20] + strh r7, [r1] + strh r0, [r1, #2] + ldrb r0, [r1, #7] + mov r2, #0x30 + bic r0, r2 + ldr r2, [sp, #0x24] + lsl r2, r2, #0x18 + lsr r2, r2, #0x18 + lsl r2, r2, #0x1e + lsr r2, r2, #0x1a + orr r0, r2 + strb r0, [r1, #7] + mov r0, #0x25 + add r1, sp, #0 + mov r2, #8 + bl FUN_02030BC4 + ldr r0, _0223F8D0 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + ldr r0, _0223F8D4 ; =0x00000B3C + strb r4, [r1, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223F8D0: .word 0x022513A0 +_0223F8D4: .word 0x00000B3C + thumb_func_end MOD18_0223F858 + + thumb_func_start MOD18_0223F8D8 +MOD18_0223F8D8: ; 0x0223F8D8 + push {r4, lr} + ldr r1, _0223F8F8 ; =0x022513A0 + add r4, r0, #0 + ldr r1, [r1, #4] + cmp r1, #0 + beq _0223F8F4 + bl FUN_0204EB14 + cmp r0, #0 + beq _0223F8F4 + add r0, r4, #0 + bl MOD18_0223F77C + pop {r4, pc} +_0223F8F4: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_0223F8F8: .word 0x022513A0 + thumb_func_end MOD18_0223F8D8 + + thumb_func_start MOD18_0223F8FC +MOD18_0223F8FC: ; 0x0223F8FC + ldr r1, _0223F910 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223F914 ; =0x00000ACB + ldrb r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x1f + bx lr + nop +_0223F910: .word 0x022513A0 +_0223F914: .word 0x00000ACB + thumb_func_end MOD18_0223F8FC + + thumb_func_start MOD18_0223F918 +MOD18_0223F918: ; 0x0223F918 + push {r4, r5, r6, lr} + ldr r0, _0223FA60 ; =0x022513A0 + add r4, r2, #0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _0223F926 + b _0223FA5E +_0223F926: + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CB4 + add r6, r0, #0 + ldr r0, _0223FA64 ; =0x00000622 + bl FUN_020054C8 + ldr r1, _0223FA60 ; =0x022513A0 + add r0, r4, #0 + ldr r2, [r1, #4] + ldr r1, _0223FA68 ; =0x00000AC4 + add r1, r2, r1 + ldrb r2, [r4, #7] + lsl r2, r2, #0x1c + lsr r2, r2, #0x19 + add r1, r1, r2 + mov r2, #8 + bl MI_CpuCopy8 + ldrb r0, [r4, #4] + sub r0, #0x18 + cmp r0, #3 + bhi _0223F9BC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223F964: ; jump table + .short _0223F96C - _0223F964 - 2 ; case 0 + .short _0223F980 - _0223F964 - 2 ; case 1 + .short _0223F994 - _0223F964 - 2 ; case 2 + .short _0223F9A8 - _0223F964 - 2 ; case 3 +_0223F96C: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x75 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F980: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x76 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F994: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x77 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F9A8: + ldr r1, _0223FA60 ; =0x022513A0 + mov r0, #0x78 + ldr r2, [r1, #4] + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + add r2, r2, r1 + ldr r1, _0223FA6C ; =0x00000B24 + strb r0, [r2, r1] + b _0223F9D2 +_0223F9BC: + ldr r0, _0223FA60 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _0223FA70 ; =0x00000ACB + add r0, r1, r0 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r3, r1, #0x19 + ldrb r2, [r0, r3] + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, r3] +_0223F9D2: + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r5, r0, #0x1c + bl FUN_02031190 + cmp r5, r0 + bne _0223F9F4 + ldrb r3, [r4, #7] + ldrb r1, [r4, #4] + add r0, r5, #0 + lsl r2, r3, #0x18 + lsl r3, r3, #0x1a + lsr r2, r2, #0x1f + lsr r3, r3, #0x1e + bl MOD18_0223FD54 + b _0223F9FC +_0223F9F4: + ldrb r1, [r4, #4] + add r0, r5, #0 + bl MOD18_02243F5C +_0223F9FC: + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + bl FUN_0204F074 + bl FUN_02031190 + ldrb r1, [r4, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1c + cmp r1, r0 + bne _0223FA1A + add r0, r6, #0 + bl FUN_02026B20 +_0223FA1A: + ldrb r5, [r4, #6] + bl FUN_02031190 + cmp r5, r0 + bne _0223FA5E + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1c + cmp r5, r0 + beq _0223FA34 + add r0, r6, #0 + bl FUN_02026AE8 +_0223FA34: + ldr r0, _0223FA60 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r5, r0, #0 + bl FUN_0205F760 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r5, #0 + lsr r1, r1, #0x10 + bl FUN_0205F770 + add r0, r4, #0 + bl MOD18_0223F2AC + bl MOD18_0223F1DC +_0223FA5E: + pop {r4, r5, r6, pc} + .align 2, 0 +_0223FA60: .word 0x022513A0 +_0223FA64: .word 0x00000622 +_0223FA68: .word 0x00000AC4 +_0223FA6C: .word 0x00000B24 +_0223FA70: .word 0x00000ACB + thumb_func_end MOD18_0223F918 + + thumb_func_start MOD18_0223FA74 +MOD18_0223FA74: ; 0x0223FA74 + push {r4, lr} + ldrb r2, [r2] + ldr r1, _0223FA9C ; =0x02250230 + lsl r3, r2, #2 + ldr r1, [r1, r3] + ldr r3, _0223FAA0 ; =0x022513A0 + ldr r3, [r3, #4] + add r4, r3, r0 + ldr r3, _0223FAA4 ; =0x00000B3C + ldrb r3, [r4, r3] + cmp r2, r3 + beq _0223FA94 + mov r0, #1 + bl FUN_020335A4 + pop {r4, pc} +_0223FA94: + cmp r1, #0 + beq _0223FA9A + blx r1 +_0223FA9A: + pop {r4, pc} + .align 2, 0 +_0223FA9C: .word 0x02250230 +_0223FAA0: .word 0x022513A0 +_0223FAA4: .word 0x00000B3C + thumb_func_end MOD18_0223FA74 + + thumb_func_start MOD18_0223FAA8 +MOD18_0223FAA8: ; 0x0223FAA8 + push {r3, r4, r5, lr} + add r5, r2, #0 + ldrb r4, [r5] + bl FUN_02031190 + cmp r4, r0 + beq _0223FAC0 + ldrb r1, [r5, #1] + ldrb r2, [r5, #2] + add r0, r4, #0 + bl FUN_0204E214 +_0223FAC0: + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0223FAA8 + + thumb_func_start MOD18_0223FAC4 +MOD18_0223FAC4: ; 0x0223FAC4 + push {r3, r4, r5, r6, lr} + sub sp, #4 + mov r0, #0 + add r3, sp, #0 + ldr r1, _0223FB00 ; =0x022513A0 + strb r0, [r3] + ldr r1, [r1, #4] + cmp r1, #0 + beq _0223FAFA + ldr r2, _0223FB04 ; =0x00000B3C + mov r4, #1 +_0223FADA: + ldrb r5, [r1, r2] + cmp r5, #0 + beq _0223FAEA + add r5, r4, #0 + ldrb r6, [r3] + lsl r5, r0 + orr r5, r6 + strb r5, [r3] +_0223FAEA: + add r0, r0, #1 + add r1, r1, #1 + cmp r0, #8 + blt _0223FADA + mov r0, #0x2d + add r1, sp, #0 + bl FUN_02030C4C +_0223FAFA: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0223FB00: .word 0x022513A0 +_0223FB04: .word 0x00000B3C + thumb_func_end MOD18_0223FAC4 + + thumb_func_start MOD18_0223FB08 +MOD18_0223FB08: ; 0x0223FB08 + push {r4, r5, r6, lr} + ldr r0, _0223FB34 ; =0x022513A0 + ldrb r5, [r2] + ldr r1, [r0, #4] + ldr r0, _0223FB38 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0223FB30 + mov r4, #0 + mov r6, #1 +_0223FB1C: + add r0, r6, #0 + lsl r0, r4 + tst r0, r5 + beq _0223FB2A + add r0, r4, #0 + bl FUN_0204F074 +_0223FB2A: + add r4, r4, #1 + cmp r4, #8 + blt _0223FB1C +_0223FB30: + pop {r4, r5, r6, pc} + nop +_0223FB34: .word 0x022513A0 +_0223FB38: .word 0x00000B3B + thumb_func_end MOD18_0223FB08 + + thumb_func_start MOD18_0223FB3C +MOD18_0223FB3C: ; 0x0223FB3C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r7, _0223FC04 ; =0x022513A0 + add r6, r0, #0 + ldr r0, [r7, #4] + cmp r0, #0 + bne _0223FB50 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223FB50: + mov r4, #0 + mov r0, #0x40 + add r5, r4, #0 + str r0, [sp, #8] +_0223FB58: + ldr r1, [r7, #4] + ldr r0, _0223FC08 ; =0x00000ACB + add r0, r1, r0 + ldrb r2, [r0, r5] + lsl r1, r2, #0x19 + lsr r1, r1, #0x1f + cmp r1, #1 + bne _0223FBB4 + ldr r1, [sp, #8] + bic r2, r1 + strb r2, [r0, r5] + ldr r0, [r7, #4] + add r1, r0, r5 + ldr r0, _0223FC0C ; =0x00000ACA + ldrb r0, [r1, r0] + cmp r0, #8 + blo _0223FB94 + add r0, r4, #0 + bl FUN_0202DFA4 + mov r1, #0 + mov r2, #0x63 + add r3, r6, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FBB4 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223FB94: + bl FUN_0202DFA4 + str r0, [sp] + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [sp] + mov r2, #0x64 + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _0223FBB4 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223FBB4: + ldr r0, [r7, #4] + add r1, r0, r4 + ldr r0, _0223FC10 ; =0x00000B04 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _0223FBF6 + add r0, r4, #0 + bl FUN_0202DFA4 + str r0, [sp, #4] + ldr r0, [r7, #4] + add r1, r0, r4 + ldr r0, _0223FC10 ; =0x00000B04 + ldrb r0, [r1, r0] + bl FUN_0202DFA4 + add r3, r0, #0 + ldr r0, [r7, #4] + mov r1, #0xff + add r2, r0, r4 + ldr r0, _0223FC10 ; =0x00000B04 + strb r1, [r2, r0] + add r1, r3, #0 + ldr r0, [sp, #4] + mov r2, #0x74 + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _0223FBF6 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223FBF6: + add r4, r4, #1 + add r5, #8 + cmp r4, #8 + blt _0223FB58 + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223FC04: .word 0x022513A0 +_0223FC08: .word 0x00000ACB +_0223FC0C: .word 0x00000ACA +_0223FC10: .word 0x00000B04 + thumb_func_end MOD18_0223FB3C + + thumb_func_start MOD18_0223FC14 +MOD18_0223FC14: ; 0x0223FC14 + push {r3, r4, r5, r6, r7, lr} + ldr r6, _0223FCB0 ; =0x022513A0 + add r5, r0, #0 + ldr r0, [r6, #4] + cmp r0, #0 + bne _0223FC24 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223FC24: + mov r4, #0 +_0223FC26: + ldr r0, [r6, #4] + ldr r1, _0223FCB4 ; =0x00000B24 + add r0, r0, r4 + ldrb r7, [r0, r1] + cmp r7, #0 + beq _0223FC4E + mov r2, #0 + strb r2, [r0, r1] + add r0, r4, #0 + bl FUN_0202DFA4 + mov r1, #0 + add r2, r7, #0 + add r3, r5, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FC4E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FC4E: + ldr r0, [r6, #4] + ldr r1, _0223FCB8 ; =0x00000B2C + add r0, r0, r4 + ldrb r1, [r0, r1] + cmp r1, #1 + bne _0223FC78 + ldr r1, _0223FCB8 ; =0x00000B2C + mov r2, #0 + strb r2, [r0, r1] + add r0, r4, #0 + bl FUN_0202DFA4 + mov r1, #0 + mov r2, #0x5a + add r3, r5, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FC78 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FC78: + ldr r0, [r6, #4] + add r1, r0, r4 + ldr r0, _0223FCBC ; =0x00000B1C + ldrb r0, [r1, r0] + cmp r0, #1 + bne _0223FCA6 + add r0, r4, #0 + bl FUN_0202DFA4 + ldr r1, [r6, #4] + mov r2, #0 + add r3, r1, r4 + ldr r1, _0223FCBC ; =0x00000B1C + strb r2, [r3, r1] + add r1, r2, #0 + mov r2, #0x62 + add r3, r5, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _0223FCA6 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FCA6: + add r4, r4, #1 + cmp r4, #8 + blt _0223FC26 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FCB0: .word 0x022513A0 +_0223FCB4: .word 0x00000B24 +_0223FCB8: .word 0x00000B2C +_0223FCBC: .word 0x00000B1C + thumb_func_end MOD18_0223FC14 + + thumb_func_start MOD18_0223FCC0 +MOD18_0223FCC0: ; 0x0223FCC0 + push {r3, lr} + lsl r2, r1, #2 + ldr r1, _0223FCD0 ; =0x022501A4 + ldr r1, [r1, r2] + cmp r1, #0 + beq _0223FCCE + blx r1 +_0223FCCE: + pop {r3, pc} + .align 2, 0 +_0223FCD0: .word 0x022501A4 + thumb_func_end MOD18_0223FCC0 + + thumb_func_start MOD18_0223FCD4 +MOD18_0223FCD4: ; 0x0223FCD4 + push {r3, lr} + lsl r2, r1, #2 + ldr r1, _0223FCE4 ; =0x022502BC + ldr r1, [r1, r2] + cmp r1, #0 + beq _0223FCE2 + blx r1 +_0223FCE2: + pop {r3, pc} + .align 2, 0 +_0223FCE4: .word 0x022502BC + thumb_func_end MOD18_0223FCD4 + + thumb_func_start MOD18_0223FCE8 +MOD18_0223FCE8: ; 0x0223FCE8 + push {r4, lr} + ldr r2, _0223FD44 ; =0x022513A0 + add r4, r0, #0 + ldr r3, [r2, #4] + ldr r2, _0223FD48 ; =0x00000B3B + ldrb r2, [r3, r2] + cmp r2, #0 + beq _0223FD42 + lsl r3, r2, #2 + ldr r2, _0223FD4C ; =0x022503D4 + ldr r2, [r2, r3] + cmp r2, #0 + beq _0223FD04 + blx r2 +_0223FD04: + bl FUN_02031190 + cmp r0, #0 + beq _0223FD12 + add r0, r4, #0 + bl FUN_0204E778 +_0223FD12: + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _0223FD50 ; =0x00000609 + bl FUN_020054C8 + ldr r0, _0223FD44 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x2a + lsl r0, r0, #4 + str r2, [r1, r0] + add r0, r4, #0 + bl FUN_0204F0A8 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, _0223FD44 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _0223FD48 ; =0x00000B3B + strb r2, [r1, r0] +_0223FD42: + pop {r4, pc} + .align 2, 0 +_0223FD44: .word 0x022513A0 +_0223FD48: .word 0x00000B3B +_0223FD4C: .word 0x022503D4 +_0223FD50: .word 0x00000609 + thumb_func_end MOD18_0223FCE8 + + thumb_func_start MOD18_0223FD54 +MOD18_0223FD54: ; 0x0223FD54 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD18_0223FCE8 + ldr r0, _0223FD80 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _0223FD84 ; =0x00000B3B + strb r4, [r1, r0] + ldr r0, _0223FD88 ; =0x02250118 + lsl r1, r4, #2 + ldr r3, [r0, r1] + cmp r3, #0 + beq _0223FD7E + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + blx r3 +_0223FD7E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223FD80: .word 0x022513A0 +_0223FD84: .word 0x00000B3B +_0223FD88: .word 0x02250118 + thumb_func_end MOD18_0223FD54 + + thumb_func_start MOD18_0223FD8C +MOD18_0223FD8C: ; 0x0223FD8C + push {r3, r4, r5, r6, r7, lr} + bl FUN_0204F610 + add r6, r0, #0 + ldr r0, _0223FDE0 ; =0x022513A0 + add r1, r6, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055304 + bl FUN_02031190 + ldr r1, _0223FDE0 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FDE4 ; =0x00000AC4 + ldrh r4, [r1, r0] + bl FUN_02031190 + ldr r1, _0223FDE0 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FDE8 ; =0x00000AC6 + ldrh r5, [r1, r0] + add r0, r6, #0 + bl FUN_02059BF4 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02059C00 + add r2, r0, #0 + mov r0, #0 + add r1, r4, r7 + add r2, r5, r2 + bl FUN_0204D118 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FDE0: .word 0x022513A0 +_0223FDE4: .word 0x00000AC4 +_0223FDE8: .word 0x00000AC6 + thumb_func_end MOD18_0223FD8C + + thumb_func_start MOD18_0223FDEC +MOD18_0223FDEC: ; 0x0223FDEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223FE64 ; =0x022513A0 + add r6, r1, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + str r0, [sp] + ldr r0, _0223FE64 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204F610 + str r0, [sp, #4] + bl FUN_02031190 + ldr r1, _0223FE64 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FE68 ; =0x00000AC4 + ldrh r4, [r1, r0] + bl FUN_02031190 + ldr r1, _0223FE64 ; =0x022513A0 + lsl r0, r0, #3 + ldr r1, [r1, #4] + add r1, r1, r0 + ldr r0, _0223FE6C ; =0x00000AC6 + cmp r6, #0 + ldrh r5, [r1, r0] + bne _0223FE4C + ldr r0, [sp, #4] + bl FUN_02059BF4 + add r4, r4, r0 + ldr r0, [sp, #4] + bl FUN_02059C00 + add r5, r5, r0 +_0223FE4C: + ldr r0, [sp] + cmp r0, r4 + bne _0223FE5C + cmp r7, r5 + bne _0223FE5C + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223FE5C: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223FE64: .word 0x022513A0 +_0223FE68: .word 0x00000AC4 +_0223FE6C: .word 0x00000AC6 + thumb_func_end MOD18_0223FDEC + + thumb_func_start MOD18_0223FE70 +MOD18_0223FE70: ; 0x0223FE70 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0x1e + bl FUN_0204F63C + pop {r4, pc} + thumb_func_end MOD18_0223FE70 + + thumb_func_start MOD18_0223FE84 +MOD18_0223FE84: ; 0x0223FE84 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0x1e + bl FUN_0204F63C + pop {r4, pc} + thumb_func_end MOD18_0223FE84 + + thumb_func_start MOD18_0223FE98 +MOD18_0223FE98: ; 0x0223FE98 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0204E758 + add r0, r4, #0 + bl FUN_0204F660 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FE98 + + thumb_func_start MOD18_0223FEAC +MOD18_0223FEAC: ; 0x0223FEAC + ldr r3, _0223FEB4 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_0223FEB4: .word 0x0204E759 + thumb_func_end MOD18_0223FEAC + + thumb_func_start MOD18_0223FEB8 +MOD18_0223FEB8: ; 0x0223FEB8 + ldr r3, _0223FEC0 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_0223FEC0: .word 0x0204E759 + thumb_func_end MOD18_0223FEB8 + + thumb_func_start MOD18_0223FEC4 +MOD18_0223FEC4: ; 0x0223FEC4 + push {r4, lr} + add r4, r0, #0 + mov r1, #3 + bl FUN_0204E758 + add r0, r4, #0 + bl FUN_0204E200 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FEC4 + + thumb_func_start MOD18_0223FED8 +MOD18_0223FED8: ; 0x0223FED8 + ldr r3, _0223FEE0 ; =0x0204E179 + mov r1, #0 + add r2, r1, #0 + bx r3 + .align 2, 0 +_0223FEE0: .word 0x0204E179 + thumb_func_end MOD18_0223FED8 + + thumb_func_start MOD18_0223FEE4 +MOD18_0223FEE4: ; 0x0223FEE4 + ldr r3, _0223FEEC ; =0x0204E179 + mov r1, #1 + mov r2, #0 + bx r3 + .align 2, 0 +_0223FEEC: .word 0x0204E179 + thumb_func_end MOD18_0223FEE4 + + thumb_func_start MOD18_0223FEF0 +MOD18_0223FEF0: ; 0x0223FEF0 + ldr r3, _0223FEF8 ; =0x0204E179 + mov r1, #2 + mov r2, #0 + bx r3 + .align 2, 0 +_0223FEF8: .word 0x0204E179 + thumb_func_end MOD18_0223FEF0 + + thumb_func_start MOD18_0223FEFC +MOD18_0223FEFC: ; 0x0223FEFC + ldr r3, _0223FF04 ; =0x0204E179 + mov r1, #3 + mov r2, #0 + bx r3 + .align 2, 0 +_0223FF04: .word 0x0204E179 + thumb_func_end MOD18_0223FEFC + + thumb_func_start MOD18_0223FF08 +MOD18_0223FF08: ; 0x0223FF08 + ldr r3, _0223FF10 ; =0x0204E179 + mov r1, #0 + mov r2, #1 + bx r3 + .align 2, 0 +_0223FF10: .word 0x0204E179 + thumb_func_end MOD18_0223FF08 + + thumb_func_start MOD18_0223FF14 +MOD18_0223FF14: ; 0x0223FF14 + ldr r3, _0223FF1C ; =0x0204E179 + mov r1, #1 + add r2, r1, #0 + bx r3 + .align 2, 0 +_0223FF1C: .word 0x0204E179 + thumb_func_end MOD18_0223FF14 + + thumb_func_start MOD18_0223FF20 +MOD18_0223FF20: ; 0x0223FF20 + ldr r3, _0223FF28 ; =0x0204E179 + mov r1, #2 + mov r2, #1 + bx r3 + .align 2, 0 +_0223FF28: .word 0x0204E179 + thumb_func_end MOD18_0223FF20 + + thumb_func_start MOD18_0223FF2C +MOD18_0223FF2C: ; 0x0223FF2C + ldr r3, _0223FF34 ; =0x0204E179 + mov r1, #3 + mov r2, #1 + bx r3 + .align 2, 0 +_0223FF34: .word 0x0204E179 + thumb_func_end MOD18_0223FF2C + + thumb_func_start MOD18_0223FF38 +MOD18_0223FF38: ; 0x0223FF38 + push {r4, lr} + add r4, r0, #0 + mov r1, #0 + bl FUN_0204E758 + add r0, r4, #0 + bl FUN_0204E1E8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FF38 + + thumb_func_start MOD18_0223FF4C +MOD18_0223FF4C: ; 0x0223FF4C + bx lr + .align 2, 0 + thumb_func_end MOD18_0223FF4C + + thumb_func_start MOD18_0223FF50 +MOD18_0223FF50: ; 0x0223FF50 + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r4, r0 + bne _0223FF68 + mov r0, #1 + bl MOD18_02240EE8 +_0223FF68: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FF50 + + thumb_func_start MOD18_0223FF6C +MOD18_0223FF6C: ; 0x0223FF6C + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r4, r0 + bne _0223FF84 + mov r0, #0 + bl MOD18_02240EE8 +_0223FF84: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0223FF6C + + thumb_func_start MOD18_0223FF88 +MOD18_0223FF88: ; 0x0223FF88 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _0223FFAC + ldr r0, _0223FFB0 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240334 +_0223FFAC: + pop {r4, r5, r6, pc} + nop +_0223FFB0: .word 0x022513A0 + thumb_func_end MOD18_0223FF88 + + thumb_func_start MOD18_0223FFB4 +MOD18_0223FFB4: ; 0x0223FFB4 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _0223FFD8 + ldr r0, _0223FFDC ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + bl MOD18_02241738 +_0223FFD8: + pop {r4, r5, r6, pc} + nop +_0223FFDC: .word 0x022513A0 + thumb_func_end MOD18_0223FFB4 + + thumb_func_start MOD18_0223FFE0 +MOD18_0223FFE0: ; 0x0223FFE0 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0223FFF4 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r3, r2, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0223FFF4: .word 0x022513A0 + thumb_func_end MOD18_0223FFE0 + + thumb_func_start MOD18_0223FFF8 +MOD18_0223FFF8: ; 0x0223FFF8 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224000C ; =0x022513A0 + mov r2, #1 + ldr r0, [r0, #4] + mov r3, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224000C: .word 0x022513A0 + thumb_func_end MOD18_0223FFF8 + + thumb_func_start MOD18_02240010 +MOD18_02240010: ; 0x02240010 + push {r3, lr} + add r1, r0, #0 + ldr r0, _02240024 ; =0x022513A0 + mov r2, #2 + ldr r0, [r0, #4] + mov r3, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_02240024: .word 0x022513A0 + thumb_func_end MOD18_02240010 + + thumb_func_start MOD18_02240028 +MOD18_02240028: ; 0x02240028 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224003C ; =0x022513A0 + mov r2, #3 + ldr r0, [r0, #4] + mov r3, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224003C: .word 0x022513A0 + thumb_func_end MOD18_02240028 + + thumb_func_start MOD18_02240040 +MOD18_02240040: ; 0x02240040 + push {r3, lr} + add r1, r0, #0 + ldr r0, _02240054 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + mov r3, #1 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_02240054: .word 0x022513A0 + thumb_func_end MOD18_02240040 + + thumb_func_start MOD18_02240058 +MOD18_02240058: ; 0x02240058 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224006C ; =0x022513A0 + mov r2, #1 + ldr r0, [r0, #4] + add r3, r2, #0 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224006C: .word 0x022513A0 + thumb_func_end MOD18_02240058 + + thumb_func_start MOD18_02240070 +MOD18_02240070: ; 0x02240070 + push {r3, lr} + add r1, r0, #0 + ldr r0, _02240084 ; =0x022513A0 + mov r2, #2 + ldr r0, [r0, #4] + mov r3, #1 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_02240084: .word 0x022513A0 + thumb_func_end MOD18_02240070 + + thumb_func_start MOD18_02240088 +MOD18_02240088: ; 0x02240088 + push {r3, lr} + add r1, r0, #0 + ldr r0, _0224009C ; =0x022513A0 + mov r2, #3 + ldr r0, [r0, #4] + mov r3, #1 + ldr r0, [r0, #0x40] + bl MOD18_02240210 + pop {r3, pc} + .align 2, 0 +_0224009C: .word 0x022513A0 + thumb_func_end MOD18_02240088 + + thumb_func_start MOD18_022400A0 +MOD18_022400A0: ; 0x022400A0 + push {r4, lr} + ldr r0, _022400F8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, _022400F8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r3, r0, #0 + ldr r0, _022400F8 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + mov r2, #0 + ldr r0, [r0, #0x40] + bl FUN_021E5B30 + bl MOD18_0223D638 + ldr r2, _022400F8 ; =0x022513A0 + mov r1, #0 + ldr r3, [r2, #4] + ldr r2, _022400FC ; =0x00000B3B + ldrb r2, [r3, r2] + bl MOD18_0224DF04 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x46 + add r3, r2, #0 + bl MOD18_0224DCD8 + add r4, r0, #0 + mov r0, #0x10 + bl FUN_0204F74C + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_022400F8: .word 0x022513A0 +_022400FC: .word 0x00000B3B + thumb_func_end MOD18_022400A0 + + thumb_func_start MOD18_02240100 +MOD18_02240100: ; 0x02240100 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bhi _02240200 + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224011A: ; jump table + .short _0224012A - _0224011A - 2 ; case 0 + .short _0224013A - _0224011A - 2 ; case 1 + .short _02240152 - _0224011A - 2 ; case 2 + .short _0224015A - _0224011A - 2 ; case 3 + .short _02240172 - _0224011A - 2 ; case 4 + .short _022401CA - _0224011A - 2 ; case 5 + .short _02240200 - _0224011A - 2 ; case 6 + .short _022401D2 - _0224011A - 2 ; case 7 +_0224012A: + bl MOD18_022400A0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_0224013A: + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_02240152: + add r0, r0, #1 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_0224015A: + mov r0, #1 + str r0, [sp] + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #8 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_02240172: + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + cmp r0, #0x1c + bne _02240190 + ldr r0, _02240204 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02240208 ; =0x00000B3B + ldrb r1, [r1, r0] + add r0, sp, #4 + strb r1, [r0] + mov r0, #0x26 + add r1, sp, #4 + bl FUN_020311D0 +_02240190: + ldr r0, [r4, #0x14] + cmp r0, #0x1e + ble _02240200 + mov r0, #0x10 + bl FUN_0204F774 + mov r0, #1 + str r0, [sp] + sub r1, r0, #5 + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, [r4, #0x18] + bl FUN_0204E214 + ldr r0, _0224020C ; =0x0000065F + bl FUN_020054C8 + mov r0, #5 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_022401CA: + mov r0, #6 + add sp, #8 + str r0, [r4] + pop {r3, r4, r5, pc} +_022401D2: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r2, _02240204 ; =0x022513A0 + mov r0, #0xa3 + ldr r3, [r2, #4] + mov r1, #0 + lsl r0, r0, #2 + str r1, [r3, r0] + ldr r2, [r2, #4] + add r0, #0x10 + str r1, [r2, r0] + ldr r0, _0224020C ; =0x0000065F + bl FUN_020054F0 +_02240200: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02240204: .word 0x022513A0 +_02240208: .word 0x00000B3B +_0224020C: .word 0x0000065F + thumb_func_end MOD18_02240100 + + thumb_func_start MOD18_02240210 +MOD18_02240210: ; 0x02240210 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x1c + add r7, r2, #0 + str r3, [sp] + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x1c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02240268 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224023E + bl ErrorHandling +_0224023E: + ldr r0, _02240268 ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + str r5, [r4, #8] + str r6, [r4, #0xc] + ldr r0, [sp] + str r7, [r4, #0x10] + str r0, [r4, #0x18] + ldr r0, _0224026C ; =MOD18_02240100 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _02240268 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240268: .word 0x022513A0 +_0224026C: .word MOD18_02240100 + thumb_func_end MOD18_02240210 + + thumb_func_start MOD18_02240270 +MOD18_02240270: ; 0x02240270 + push {r3, lr} + bl FUN_0204E254 + ldr r2, _02240298 ; =0x022513A0 + mov r0, #0xa7 + ldr r1, [r2, #4] + lsl r0, r0, #2 + ldr r3, [r1, r0] + cmp r3, #0 + beq _02240294 + mov r1, #7 + str r1, [r3] + ldr r2, [r2, #4] + mov r1, #0 + str r1, [r2, r0] + ldr r0, _0224029C ; =0x0000065F + bl FUN_020054F0 +_02240294: + pop {r3, pc} + nop +_02240298: .word 0x022513A0 +_0224029C: .word 0x0000065F + thumb_func_end MOD18_02240270 + + thumb_func_start MOD18_022402A0 +MOD18_022402A0: ; 0x022402A0 + push {r4, lr} + bl FUN_0204E254 + ldr r0, _022402EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _022402EA + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + add r0, r4, #0 + bl FUN_02016A18 + ldr r0, _022402EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r2, _022402EC ; =0x022513A0 + mov r0, #0xa3 + ldr r3, [r2, #4] + mov r1, #0 + lsl r0, r0, #2 + str r1, [r3, r0] + ldr r2, [r2, #4] + add r0, #0x10 + str r1, [r2, r0] + ldr r0, _022402F0 ; =0x0000065F + bl FUN_020054F0 +_022402EA: + pop {r4, pc} + .align 2, 0 +_022402EC: .word 0x022513A0 +_022402F0: .word 0x0000065F + thumb_func_end MOD18_022402A0 + + thumb_func_start MOD18_022402F4 +MOD18_022402F4: ; 0x022402F4 + bx lr + .align 2, 0 + thumb_func_end MOD18_022402F4 + + thumb_func_start MOD18_022402F8 +MOD18_022402F8: ; 0x022402F8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r6, r0, #0 + ldr r0, _02240328 ; =0x022513A0 + add r5, r1, #0 + ldr r0, [r0, #4] + ldr r1, _0224032C ; =0x00000B46 + add r4, r2, #0 + ldrb r1, [r0, r1] + cmp r1, #0 + bne _02240322 + sub r1, r3, #1 + str r1, [sp] + ldr r0, [r0, #0x40] + add r1, r6, #0 + add r2, r5, #0 + add r3, r4, #0 + bl MOD05_021E53B4 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_02240322: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02240328: .word 0x022513A0 +_0224032C: .word 0x00000B46 + thumb_func_end MOD18_022402F8 + + thumb_func_start MOD18_02240330 +MOD18_02240330: ; 0x02240330 + bx lr + .align 2, 0 + thumb_func_end MOD18_02240330 + + thumb_func_start MOD18_02240334 +MOD18_02240334: ; 0x02240334 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x20 + add r7, r2, #0 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x20 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02240380 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + add r0, r4, #0 + bl MOD18_0224064C + ldr r0, [r5, #8] + add r1, r4, #0 + str r0, [r4, #0x10] + str r5, [r4, #0x14] + strb r6, [r4, #0x19] + ldr r0, _02240384 ; =MOD18_02240658 + mov r2, #0x64 + strb r7, [r4, #0x18] + bl FUN_0200CA44 + ldr r1, _02240380 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02240380: .word 0x022513A0 +_02240384: .word MOD18_02240658 + thumb_func_end MOD18_02240334 + + thumb_func_start MOD18_02240388 +MOD18_02240388: ; 0x02240388 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r0, [sp, #0x38] + str r3, [sp, #4] + str r0, [sp, #0x38] + add r0, r2, #0 + sub r0, r5, r0 + add r4, r1, #0 + str r2, [sp] + bl abs + str r0, [sp, #0x20] + ldr r0, [sp, #4] + sub r0, r0, r4 + bl abs + ldr r1, [sp] + mov r7, #0 + cmp r5, r1 + bge _022403B8 + mov r1, #1 + str r1, [sp, #0x1c] + b _022403BC +_022403B8: + sub r1, r7, #1 + str r1, [sp, #0x1c] +_022403BC: + ldr r1, [sp, #4] + cmp r4, r1 + bge _022403C8 + mov r1, #1 + str r1, [sp, #0x18] + b _022403CE +_022403C8: + mov r1, #0 + mvn r1, r1 + str r1, [sp, #0x18] +_022403CE: + ldr r1, [sp, #0x20] + cmp r1, r0 + blt _0224040C + neg r6, r1 + ldr r1, [sp] + cmp r5, r1 + beq _02240442 + lsl r0, r0, #1 + str r0, [sp, #0xc] + ldr r0, [sp, #0x20] + lsl r0, r0, #1 + str r0, [sp, #8] +_022403E6: + ldr r2, [sp, #0x38] + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02240564 + add r7, r7, r0 + ldr r0, [sp, #0x1c] + add r5, r5, r0 + ldr r0, [sp, #0xc] + add r6, r6, r0 + bmi _02240404 + ldr r0, [sp, #8] + sub r6, r6, r0 + ldr r0, [sp, #0x18] + add r4, r4, r0 +_02240404: + ldr r0, [sp] + cmp r5, r0 + bne _022403E6 + b _02240442 +_0224040C: + ldr r1, [sp, #4] + neg r6, r0 + cmp r4, r1 + beq _02240442 + ldr r1, [sp, #0x20] + lsl r0, r0, #1 + lsl r1, r1, #1 + str r1, [sp, #0x14] + str r0, [sp, #0x10] +_0224041E: + ldr r2, [sp, #0x38] + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02240564 + add r7, r7, r0 + ldr r0, [sp, #0x18] + add r4, r4, r0 + ldr r0, [sp, #0x14] + add r6, r6, r0 + bmi _0224043C + ldr r0, [sp, #0x10] + sub r6, r6, r0 + ldr r0, [sp, #0x1c] + add r5, r5, r0 +_0224043C: + ldr r0, [sp, #4] + cmp r4, r0 + bne _0224041E +_02240442: + cmp r7, #0 + beq _02240456 + ldr r0, _0224045C ; =0x00000629 + bl FUN_02005508 + cmp r0, #0 + bne _02240456 + ldr r0, _0224045C ; =0x00000629 + bl FUN_020054C8 +_02240456: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224045C: .word 0x00000629 + thumb_func_end MOD18_02240388 + + thumb_func_start MOD18_02240460 +MOD18_02240460: ; 0x02240460 + push {r4, lr} + ldr r0, _022404EC ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _022404E8 + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _02240480 + cmp r1, #0 + beq _02240480 + ldrb r0, [r4, #0x18] + bl MOD18_0223FD8C +_02240480: + ldr r1, _022404F0 ; =0x04000050 + mov r0, #0 + strh r0, [r1] + mov r1, #1 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _022404EC ; =0x022513A0 + mov r1, #2 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl FUN_0201886C + mov r3, #0 + mov r1, #2 + add r2, r3, #0 + lsl r1, r1, #0xa +_022404A4: + strb r2, [r0, r3] + add r3, r3, #2 + cmp r3, r1 + blt _022404A4 + mov r0, #2 + mov r1, #3 + bl FUN_020178BC + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022404EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _022404EC ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_022404E8: + pop {r4, pc} + nop +_022404EC: .word 0x022513A0 +_022404F0: .word 0x04000050 + thumb_func_end MOD18_02240460 + + thumb_func_start MOD18_022404F4 +MOD18_022404F4: ; 0x022404F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r0, #0 + str r1, [sp, #4] + add r0, r1, #0 + mov r1, #2 + add r6, r2, #0 + mov r4, #0 + bl FUN_0201886C + add r5, r0, #0 + bne _02240512 + add sp, #8 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_02240512: + ldrh r2, [r6, #8] + ldr r0, _02240560 ; =0x0000FFFF + cmp r2, r0 + beq _02240532 + ldrh r3, [r6, #0xa] + cmp r3, r0 + beq _02240532 + str r5, [sp] + ldrh r0, [r7] + ldrh r1, [r7, #2] + bl MOD18_02240388 + ldr r0, [sp, #4] + mov r1, #2 + bl FUN_02017CD0 +_02240532: + ldrh r0, [r7] + mov r2, #0 + strh r0, [r6, #8] + ldrh r0, [r7, #2] + strh r0, [r6, #0xa] + mov r0, #2 + lsl r0, r0, #0xa +_02240540: + ldrb r1, [r5, r2] + cmp r1, #0 + beq _02240548 + add r4, r4, #1 +_02240548: + add r2, r2, #2 + cmp r2, r0 + blt _02240540 + cmp r4, #0xd + bge _02240558 + add sp, #8 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02240558: + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240560: .word 0x0000FFFF + thumb_func_end MOD18_022404F4 + + thumb_func_start MOD18_02240564 +MOD18_02240564: ; 0x02240564 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r5, r2, #0 + asr r2, r0, #2 + lsr r2, r2, #0x1d + add r2, r0, r2 + asr r0, r2, #3 + asr r2, r1, #2 + lsr r2, r2, #0x1d + add r2, r1, r2 + asr r1, r2, #3 + lsl r1, r1, #5 + add r0, r0, r1 + lsl r0, r0, #0x11 + lsr r0, r0, #0x10 + ldr r4, _02240648 ; =0x022500F4 + str r0, [sp, #4] + add r3, sp, #0xc + mov r2, #4 +_0224058A: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224058A + ldr r0, [r4] + mov r1, #2 + str r0, [r3] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #4] + lsl r1, r1, #0xa + cmp r0, r1 + bls _022405AA + ldr r0, [sp, #8] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_022405AA: + ldr r1, [sp, #4] + lsr r0, r0, #0x1f + lsl r2, r1, #0x1a + sub r2, r2, r0 + mov r1, #0x1a + ror r2, r1 + add r0, r0, r2 + ldr r6, [sp, #8] + add r7, sp, #0xc + str r0, [sp] +_022405BE: + ldr r1, [r7] + ldr r0, [sp, #4] + add r4, r0, r1 + ldr r0, [sp] + cmp r0, #0x3e + bne _022405D6 + add r0, r6, #0 + mov r1, #3 + bl _s32_div_f + cmp r1, #2 + beq _02240638 +_022405D6: + ldr r0, [sp] + cmp r0, #0 + bne _022405E8 + add r0, r6, #0 + mov r1, #3 + bl _s32_div_f + cmp r1, #0 + beq _02240638 +_022405E8: + mov r0, #2 + lsl r0, r0, #0xa + cmp r4, r0 + bge _02240638 + cmp r4, #0 + blt _02240638 + ldrb r0, [r5, r4] + cmp r0, #0 + beq _02240638 + mov r1, #1 + str r1, [sp, #8] + cmp r6, #7 + bhi _0224062A + add r1, r6, r6 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224060E: ; jump table + .short _0224062A - _0224060E - 2 ; case 0 + .short _02240624 - _0224060E - 2 ; case 1 + .short _0224062A - _0224060E - 2 ; case 2 + .short _02240624 - _0224060E - 2 ; case 3 + .short _0224061E - _0224060E - 2 ; case 4 + .short _02240624 - _0224060E - 2 ; case 5 + .short _0224062A - _0224060E - 2 ; case 6 + .short _02240624 - _0224060E - 2 ; case 7 +_0224061E: + add r0, r0, #3 + strb r0, [r5, r4] + b _0224062E +_02240624: + add r0, r0, #2 + strb r0, [r5, r4] + b _0224062E +_0224062A: + add r0, r0, #1 + strb r0, [r5, r4] +_0224062E: + ldrb r0, [r5, r4] + cmp r0, #5 + bls _02240638 + mov r0, #0 + strb r0, [r5, r4] +_02240638: + add r6, r6, #1 + add r7, r7, #4 + cmp r6, #9 + blo _022405BE + ldr r0, [sp, #8] + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02240648: .word 0x022500F4 + thumb_func_end MOD18_02240564 + + thumb_func_start MOD18_0224064C +MOD18_0224064C: ; 0x0224064C + ldr r1, _02240654 ; =0x0000FFFF + strh r1, [r0, #8] + strh r1, [r0, #0xa] + bx lr + .align 2, 0 +_02240654: .word 0x0000FFFF + thumb_func_end MOD18_0224064C + + thumb_func_start MOD18_02240658 +MOD18_02240658: ; 0x02240658 + push {r3, r4, lr} + sub sp, #0x1c + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02240666 + b _02240880 +_02240666: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240672: ; jump table + .short _0224068C - _02240672 - 2 ; case 0 + .short _022406A4 - _02240672 - 2 ; case 1 + .short _022406D8 - _02240672 - 2 ; case 2 + .short _022406F6 - _02240672 - 2 ; case 3 + .short _0224079E - _02240672 - 2 ; case 4 + .short _0224079E - _02240672 - 2 ; case 5 + .short _0224079E - _02240672 - 2 ; case 6 + .short _022407DE - _02240672 - 2 ; case 7 + .short _02240836 - _02240672 - 2 ; case 8 + .short _02240842 - _02240672 - 2 ; case 9 + .short _02240880 - _02240672 - 2 ; case 10 + .short _02240850 - _02240672 - 2 ; case 11 + .short _0224086C - _02240672 - 2 ; case 12 +_0224068C: + mov r0, #4 + mov r1, #0 + bl FUN_0201E6E4 + bl MOD18_022400A0 + str r0, [r4, #4] + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022406A4: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r1, #0 + mov r0, #0x12 + str r1, [sp] + lsl r0, r0, #4 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #0x10] + mov r0, #0x32 + mov r1, #9 + mov r3, #2 + bl FUN_0200687C + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022406D8: + mov r0, #0x20 + str r0, [sp] + mov r0, #4 + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0xa + add r3, r2, #0 + bl FUN_02006930 + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022406F6: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _02240884 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02240888 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x13 + bne _0224072E + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r2, [r4, #0x10] + mov r0, #0x32 + mov r1, #8 + mov r3, #2 + bl FUN_020068C8 + b _02240774 +_0224072E: + ldr r1, _0224088C ; =0x022500A8 + add r0, sp, #0x10 + ldrh r2, [r1, #0x10] + strh r2, [r0, #4] + ldrh r2, [r1, #0x12] + strh r2, [r0, #6] + ldrh r2, [r1, #0x14] + ldrh r1, [r1, #0x16] + strh r2, [r0, #8] + strh r1, [r0, #0xa] + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r1, r0, #0x10 + mov r2, #0 + mov r0, #6 + str r2, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + lsr r2, r1, #0xf + add r1, sp, #0x14 + ldrh r1, [r1, r2] + ldr r2, [r4, #0x10] + mov r0, #0x32 + mov r3, #2 + bl FUN_020068C8 +_02240774: + mov r0, #0 + mov r1, #3 + bl FUN_020178BC + mov r0, #1 + mov r1, #2 + bl FUN_020178BC + mov r0, #2 + mov r1, #1 + bl FUN_020178BC + mov r0, #3 + mov r1, #0 + bl FUN_020178BC + ldr r0, [r4] + add sp, #0x1c + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_0224079E: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0x1e + ble _02240880 + mov r0, #1 + sub r1, r0, #5 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r0, #4 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #7 + str r0, [r4] + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4d + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, _02240890 ; =0x00000661 + bl FUN_020054C8 + add sp, #0x1c + pop {r3, r4, pc} +_022407DE: + ldr r1, _02240894 ; =0x021C48F8 + ldrh r0, [r1, #0x22] + cmp r0, #0 + beq _02240816 + ldrh r2, [r1, #0x1c] + add r0, sp, #0x10 + strh r2, [r0] + ldrh r1, [r1, #0x1e] + add r2, r4, #0 + strh r1, [r0, #2] + ldr r1, [r4, #0x10] + add r0, sp, #0x10 + bl MOD18_022404F4 + cmp r0, #0 + beq _0224081C + ldrb r0, [r4, #0x19] + cmp r0, #0 + beq _0224080A + mov r0, #0xb + str r0, [r4] + b _0224081C +_0224080A: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] + b _0224081C +_02240816: + add r0, r4, #0 + bl MOD18_0224064C +_0224081C: + ldr r0, [r4, #0x1c] + cmp r0, #0x3c + bge _02240880 + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x3c + bne _02240880 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x1c + pop {r3, r4, pc} +_02240836: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x1c + pop {r3, r4, pc} +_02240842: + bl FUN_02031190 + ldrb r1, [r4, #0x19] + bl MOD18_02240460 + add sp, #0x1c + pop {r3, r4, pc} +_02240850: + mov r0, #0 + strb r0, [r4, #0x19] + mov r0, #0x10 + bl FUN_0204F774 + ldrb r0, [r4, #0x18] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #0xc + add sp, #0x1c + str r0, [r4] + pop {r3, r4, pc} +_0224086C: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #8 + ble _02240880 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02240880: + add sp, #0x1c + pop {r3, r4, pc} + .align 2, 0 +_02240884: .word 0x022513A0 +_02240888: .word 0x00000B3B +_0224088C: .word 0x022500A8 +_02240890: .word 0x00000661 +_02240894: .word 0x021C48F8 + thumb_func_end MOD18_02240658 + + thumb_func_start MOD18_02240898 +MOD18_02240898: ; 0x02240898 + mov r0, #4 + bx lr + thumb_func_end MOD18_02240898 + + thumb_func_start MOD18_0224089C +MOD18_0224089C: ; 0x0224089C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl FUN_0204D830 + cmp r0, #0 + beq _022408E4 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _022408F4 ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _022408F8 ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 + add r0, r4, #0 + bl MOD18_022475F8 + add r1, sp, #0 + strb r0, [r1, #3] + ldr r0, _022408F4 ; =0x022513A0 + ldr r0, [r0, #4] + add r2, r0, r4 + ldr r0, _022408F8 ; =0x00000B3C + ldrb r0, [r2, r0] + strb r0, [r1] + strb r4, [r1, #1] + mov r0, #1 + strb r0, [r1, #2] + mov r0, #0x2a + add r1, sp, #0 + bl FUN_02030C4C +_022408E4: + ldr r0, _022408F4 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _022408F8 ; =0x00000B3C + strb r2, [r1, r0] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022408F4: .word 0x022513A0 +_022408F8: .word 0x00000B3C + thumb_func_end MOD18_0224089C + + thumb_func_start MOD18_022408FC +MOD18_022408FC: ; 0x022408FC + push {r4, lr} + add r4, r0, #0 + bl FUN_0204E778 + ldr r0, _0224093C ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + ldr r0, _02240940 ; =0x00000B3C + ldrb r1, [r1, r0] + cmp r1, #0 + beq _02240918 + add r0, r4, #0 + bl MOD18_0223FCD4 +_02240918: + ldr r1, _0224093C ; =0x022513A0 + mov r3, #0 + ldr r0, [r1, #4] + add r2, r0, r4 + ldr r0, _02240940 ; =0x00000B3C + strb r3, [r2, r0] + ldr r1, [r1, #4] + sub r0, #0x71 + add r3, r1, r0 + lsl r2, r4, #3 + ldrb r1, [r3, r2] + mov r0, #0x80 + bic r1, r0 + add r0, r4, #0 + strb r1, [r3, r2] + bl MOD18_022475F8 + pop {r4, pc} + .align 2, 0 +_0224093C: .word 0x022513A0 +_02240940: .word 0x00000B3C + thumb_func_end MOD18_022408FC + + thumb_func_start MOD18_02240944 +MOD18_02240944: ; 0x02240944 + push {r4, r5, r6, lr} + add r4, r2, #0 + ldrb r0, [r4, #2] + ldrb r5, [r4] + cmp r0, #0 + ldrb r0, [r4, #1] + beq _02240958 + bl FUN_0204F08C + b _0224095C +_02240958: + bl FUN_0204F0A8 +_0224095C: + ldrb r0, [r4, #1] + bl MOD18_02243FB8 + ldrb r6, [r4, #1] + bl FUN_02031190 + cmp r6, r0 + bne _02240986 + ldr r0, _022409C0 ; =0x02250348 + lsl r1, r5, #2 + ldr r2, [r0, r1] + cmp r2, #0 + beq _0224097C + ldrb r1, [r4, #3] + add r0, r6, #0 + blx r2 +_0224097C: + ldr r0, _022409C4 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + ldr r0, _022409C8 ; =0x00000B3B + strb r2, [r1, r0] +_02240986: + sub r5, #0x18 + cmp r5, #3 + bhi _022409A0 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240998: ; jump table + .short _022409AE - _02240998 - 2 ; case 0 + .short _022409AE - _02240998 - 2 ; case 1 + .short _022409AE - _02240998 - 2 ; case 2 + .short _022409AE - _02240998 - 2 ; case 3 +_022409A0: + ldr r0, _022409C4 ; =0x022513A0 + mov r2, #1 + ldr r1, [r0, #4] + ldrb r0, [r4, #1] + add r1, r1, r0 + ldr r0, _022409CC ; =0x00000B1C + strb r2, [r1, r0] +_022409AE: + bl FUN_02031190 + cmp r0, #0 + beq _022409BC + ldrb r0, [r4, #1] + bl FUN_0204E778 +_022409BC: + pop {r4, r5, r6, pc} + nop +_022409C0: .word 0x02250348 +_022409C4: .word 0x022513A0 +_022409C8: .word 0x00000B3B +_022409CC: .word 0x00000B1C + thumb_func_end MOD18_02240944 + + thumb_func_start MOD18_022409D0 +MOD18_022409D0: ; 0x022409D0 + push {r3, lr} + ldr r0, _022409E8 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _022409EC ; =0x00000B3B + ldrb r0, [r1, r0] + sub r0, #0xb + cmp r0, #1 + bhi _022409E6 + ldrb r0, [r2] + bl MOD18_02241008 +_022409E6: + pop {r3, pc} + .align 2, 0 +_022409E8: .word 0x022513A0 +_022409EC: .word 0x00000B3B + thumb_func_end MOD18_022409D0 + + thumb_func_start MOD18_022409F0 +MOD18_022409F0: ; 0x022409F0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204E778 + ldr r1, _02240A3C ; =0x022513A0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r2, r1, r4 + ldr r1, _02240A40 ; =0x00000B3C + ldrb r1, [r2, r1] + bl MOD18_0223FCD4 + add r1, sp, #0 + strb r4, [r1, #1] + ldr r0, _02240A3C ; =0x022513A0 + strb r5, [r1] + ldr r0, [r0, #4] + add r2, r0, r4 + ldr r0, _02240A40 ; =0x00000B3C + ldrb r0, [r2, r0] + strb r0, [r1, #2] + mov r0, #0x2c + add r1, sp, #0 + bl FUN_02030C4C + ldr r0, _02240A3C ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + add r2, r0, r4 + ldr r0, _02240A40 ; =0x00000B3C + strb r1, [r2, r0] + add r0, r5, #0 + bl FUN_0204EAD8 + pop {r3, r4, r5, pc} + nop +_02240A3C: .word 0x022513A0 +_02240A40: .word 0x00000B3C + thumb_func_end MOD18_022409F0 + + thumb_func_start MOD18_02240A44 +MOD18_02240A44: ; 0x02240A44 + push {r3, r4, r5, lr} + ldr r0, _02240B10 ; =0x022513A0 + add r4, r2, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + bl FUN_020377AC + bl FUN_02026CB4 + add r5, r0, #0 + ldrb r0, [r4, #1] + bl FUN_0204F08C + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02240AA6 + add r0, r5, #0 + bl FUN_02026B58 + ldr r0, _02240B10 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x22 + bl FUN_0202A170 + bl FUN_0204F7E4 + bl MOD18_0223D638 + add r5, r0, #0 + ldrb r0, [r4, #1] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + ldr r3, _02240B14 ; =MOD18_0223ECDC + mov r1, #0x47 + mov r2, #1 + bl MOD18_0224DCB8 +_02240AA6: + ldrb r0, [r4, #1] + bl MOD18_02243FB8 + ldrb r5, [r4, #1] + bl FUN_02031190 + cmp r5, r0 + bne _02240AF2 + ldr r0, _02240B10 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02240B18 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0 + beq _02240AF2 + lsl r1, r0, #2 + ldr r0, _02240B1C ; =0x022503D4 + ldr r2, [r0, r1] + cmp r2, #0 + beq _02240AD2 + add r0, r5, #0 + mov r1, #0 + blx r2 +_02240AD2: + ldr r1, _02240B10 ; =0x022513A0 + mov r0, #0x2a + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #4 + str r3, [r2, r0] + ldr r1, [r1, #4] + ldr r0, _02240B18 ; =0x00000B3B + strb r3, [r1, r0] + mov r0, #0x10 + bl FUN_0204F774 + bl MOD18_0223D638 + bl MOD18_0224DD94 +_02240AF2: + bl FUN_02031190 + cmp r0, #0 + beq _02240B00 + ldrb r0, [r4, #1] + bl FUN_0204E778 +_02240B00: + ldr r0, _02240B10 ; =0x022513A0 + ldrb r2, [r4, #1] + ldr r1, [r0, #4] + ldrb r0, [r4] + add r1, r1, r0 + ldr r0, _02240B20 ; =0x00000B04 + strb r2, [r1, r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02240B10: .word 0x022513A0 +_02240B14: .word MOD18_0223ECDC +_02240B18: .word 0x00000B3B +_02240B1C: .word 0x022503D4 +_02240B20: .word 0x00000B04 + thumb_func_end MOD18_02240A44 + + thumb_func_start MOD18_02240B24 +MOD18_02240B24: ; 0x02240B24 + mov r0, #3 + bx lr + thumb_func_end MOD18_02240B24 + + thumb_func_start MOD18_02240B28 +MOD18_02240B28: ; 0x02240B28 + push {r4, lr} + ldr r1, _02240B58 ; =0x022513A0 + ldr r2, [r1, #4] + cmp r2, #0 + beq _02240B52 + mov r1, #0xa6 + lsl r1, r1, #2 + ldr r4, [r2, r1] + cmp r4, #0 + beq _02240B52 + sub r1, #0xb6 + ldrh r1, [r4, r1] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x50 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + ldrh r0, [r4, r0] + pop {r4, pc} +_02240B52: + mov r0, #0 + pop {r4, pc} + nop +_02240B58: .word 0x022513A0 + thumb_func_end MOD18_02240B28 + + thumb_func_start MOD18_02240B5C +MOD18_02240B5C: ; 0x02240B5C + push {r4, lr} + ldr r1, _02240B8C ; =0x022513A0 + ldr r2, [r1, #4] + cmp r2, #0 + beq _02240B88 + mov r1, #0xa6 + lsl r1, r1, #2 + ldr r4, [r2, r1] + cmp r4, #0 + beq _02240B88 + sub r1, #0xb6 + ldrh r1, [r4, r1] + lsr r1, r1, #1 + add r0, r1, r0 + mov r1, #0x50 + bl _s32_div_f + mov r0, #6 + mul r0, r1 + add r0, r4, r0 + ldrh r0, [r0, #2] + pop {r4, pc} +_02240B88: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02240B8C: .word 0x022513A0 + thumb_func_end MOD18_02240B5C + + thumb_func_start MOD18_02240B90 +MOD18_02240B90: ; 0x02240B90 + push {r4, lr} + ldr r0, _02240BB0 ; =0x000001E2 + add r4, r1, #0 + ldrh r1, [r4, r0] + add r1, r1, #1 + strh r1, [r4, r0] + ldrh r0, [r4, r0] + cmp r0, #0xa0 + bls _02240BAE + ldr r0, _02240BB4 ; =0x00000621 + bl FUN_020054C8 + ldr r0, _02240BB0 ; =0x000001E2 + mov r1, #0 + strh r1, [r4, r0] +_02240BAE: + pop {r4, pc} + .align 2, 0 +_02240BB0: .word 0x000001E2 +_02240BB4: .word 0x00000621 + thumb_func_end MOD18_02240B90 + + thumb_func_start MOD18_02240BB8 +MOD18_02240BB8: ; 0x02240BB8 + push {r4, lr} + ldr r0, _02240C0C ; =0x022513A0 + mov r1, #0xa6 + ldr r2, [r0, #4] + lsl r1, r1, #2 + ldr r0, [r2, r1] + cmp r0, #0 + bne _02240C08 + sub r0, r1, #4 + ldr r0, [r2, r0] + cmp r0, #0 + bne _02240C08 + mov r0, #4 + sub r1, #0xb4 + bl FUN_020169D8 + mov r2, #0x79 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x2e + bl FUN_020311DC + ldr r0, _02240C0C ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa6 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _02240C10 ; =MOD18_02240B90 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _02240C0C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa5 + lsl r1, r1, #2 + str r0, [r2, r1] +_02240C08: + pop {r4, pc} + nop +_02240C0C: .word 0x022513A0 +_02240C10: .word MOD18_02240B90 + thumb_func_end MOD18_02240BB8 + + thumb_func_start MOD18_02240C14 +MOD18_02240C14: ; 0x02240C14 + push {r3, lr} + ldr r0, _02240C6C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa5 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02240C68 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02240C70 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + ldr r0, _02240C6C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa5 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02240C6C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02240C6C ; =0x022513A0 + mov r0, #0xa5 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, r0, #4 + str r3, [r1, r0] +_02240C68: + pop {r3, pc} + nop +_02240C6C: .word 0x022513A0 +_02240C70: .word 0x04000050 + thumb_func_end MOD18_02240C14 + + thumb_func_start MOD18_02240C74 +MOD18_02240C74: ; 0x02240C74 + ldr r1, _02240C84 ; =0x022513A0 + lsl r0, r0, #1 + ldr r1, [r1, #4] + mov r2, #1 + add r1, r1, r0 + ldr r0, _02240C88 ; =0x00000B0C + strh r2, [r1, r0] + bx lr + .align 2, 0 +_02240C84: .word 0x022513A0 +_02240C88: .word 0x00000B0C + thumb_func_end MOD18_02240C74 + + thumb_func_start MOD18_02240C8C +MOD18_02240C8C: ; 0x02240C8C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r5, #0 + str r5, [sp] +_02240C94: + ldr r0, _02240D20 ; =0x022513A0 + ldr r1, _02240D24 ; =0x00000B0C + ldr r0, [r0, #4] + add r2, r0, r5 + ldrh r1, [r2, r1] + sub r4, r1, #1 + cmp r1, #0 + beq _02240D10 + lsl r7, r4, #2 +_02240CA6: + add r1, r0, r7 + ldr r0, _02240D28 ; =0x000007C4 + ldr r6, [r1, r0] + cmp r6, #0 + beq _02240CEA + ldrb r0, [r6, #4] + cmp r0, #0 + beq _02240CEA + add r0, r6, #0 + bl MOD18_0223F6F8 + ldr r1, [sp] + cmp r0, r1 + beq _02240CC6 + cmp r0, #8 + blt _02240CEA +_02240CC6: + ldrh r0, [r6] + add r1, sp, #4 + strh r0, [r1] + ldrh r0, [r6, #2] + strh r0, [r1, #2] + ldr r0, [sp] + strb r0, [r1, #4] + mov r0, #0x2f + add r1, sp, #4 + bl FUN_02030C4C + ldr r0, _02240D20 ; =0x022513A0 + add r2, r4, #2 + ldr r0, [r0, #4] + add r1, r0, r5 + ldr r0, _02240D24 ; =0x00000B0C + strh r2, [r1, r0] + b _02240D10 +_02240CEA: + add r4, r4, #1 + add r7, r7, #4 + cmp r4, #0xc0 + blt _02240D00 + ldr r0, _02240D20 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r5 + ldr r0, _02240D24 ; =0x00000B0C + strh r2, [r1, r0] + b _02240D10 +_02240D00: + ldr r0, _02240D20 ; =0x022513A0 + ldr r1, _02240D24 ; =0x00000B0C + ldr r0, [r0, #4] + add r2, r5, r0 + ldrh r1, [r2, r1] + sub r1, r1, #1 + cmp r4, r1 + bne _02240CA6 +_02240D10: + ldr r0, [sp] + add r5, r5, #2 + add r0, r0, #1 + str r0, [sp] + cmp r0, #8 + blt _02240C94 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240D20: .word 0x022513A0 +_02240D24: .word 0x00000B0C +_02240D28: .word 0x000007C4 + thumb_func_end MOD18_02240C8C + + thumb_func_start MOD18_02240D2C +MOD18_02240D2C: ; 0x02240D2C + push {r3, r4, r5, lr} + ldr r0, _02240D94 ; =0x022513A0 + add r4, r2, #0 + ldr r1, [r0, #4] + mov r0, #0xa6 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02240D90 + bl FUN_02031190 + ldrb r1, [r4, #4] + cmp r1, r0 + bne _02240D90 + ldr r0, _02240D94 ; =0x022513A0 + mov r1, #0xa6 + ldr r0, [r0, #4] + lsl r1, r1, #2 + ldr r5, [r0, r1] + sub r1, #0xb8 + ldrb r1, [r5, r1] + mov r2, #6 + add r0, r4, #0 + add r3, r1, #0 + mul r3, r2 + add r1, r5, r3 + bl MI_CpuCopy8 + ldr r2, _02240D94 ; =0x022513A0 + mov r1, #0xa6 + ldr r0, [r2, #4] + lsl r1, r1, #2 + ldr r4, [r0, r1] + add r0, r1, #0 + sub r0, #0xb8 + ldrb r0, [r4, r0] + add r3, r0, #1 + add r0, r1, #0 + sub r0, #0xb8 + strb r3, [r4, r0] + ldr r0, [r2, #4] + ldr r2, [r0, r1] + add r0, r1, #0 + sub r0, #0xb8 + ldrb r0, [r2, r0] + cmp r0, #0x50 + blo _02240D90 + mov r0, #0 + sub r1, #0xb8 + strb r0, [r2, r1] +_02240D90: + pop {r3, r4, r5, pc} + nop +_02240D94: .word 0x022513A0 + thumb_func_end MOD18_02240D2C + + thumb_func_start MOD18_02240D98 +MOD18_02240D98: ; 0x02240D98 + mov r0, #6 + bx lr + thumb_func_end MOD18_02240D98 + + thumb_func_start MOD18_02240D9C +MOD18_02240D9C: ; 0x02240D9C + push {r4, lr} + add r4, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _02240DC0 + ldr r1, _02240DC4 ; =0x022513A0 + mov r0, #0xa7 + ldr r2, [r1, #4] + lsl r0, r0, #2 + ldr r3, [r2, r0] + cmp r3, #0 + beq _02240DC0 + mov r2, #2 + str r2, [r3] + ldr r1, [r1, #4] + mov r2, #0 + str r2, [r1, r0] +_02240DC0: + pop {r4, pc} + nop +_02240DC4: .word 0x022513A0 + thumb_func_end MOD18_02240D9C + + thumb_func_start MOD18_02240DC8 +MOD18_02240DC8: ; 0x02240DC8 + push {r3, lr} + ldr r0, _02240E24 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02240E20 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02240E28 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + bl FUN_020307D0 + ldr r0, _02240E24 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02240E24 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02240E24 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240E20: + pop {r3, pc} + nop +_02240E24: .word 0x022513A0 +_02240E28: .word 0x04000050 + thumb_func_end MOD18_02240DC8 + + thumb_func_start MOD18_02240E2C +MOD18_02240E2C: ; 0x02240E2C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02240E42 + cmp r0, #1 + beq _02240EDC + cmp r0, #2 + beq _02240EA4 + pop {r3, r4, r5, pc} +_02240E42: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #1 + bne _02240E54 + bl MOD18_022400A0 + str r0, [r4, #4] + b _02240E7A +_02240E54: + cmp r0, #2 + bne _02240E68 + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + b _02240E7A +_02240E68: + cmp r0, #4 + bne _02240E7A + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 +_02240E7A: + ldr r0, [r4, #0x10] + cmp r0, #0x1e + ble _02240EDC + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #1 + str r0, [r4] + ldr r0, [r4, #8] + cmp r0, #0 + beq _02240E98 + bl FUN_020307BC + b _02240E9C +_02240E98: + bl FUN_020307A8 +_02240E9C: + mov r0, #0x10 + bl FUN_0204F774 + pop {r3, r4, r5, pc} +_02240EA4: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02240EE0 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + bl FUN_020307D0 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r1, _02240EE4 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240EDC: + pop {r3, r4, r5, pc} + nop +_02240EE0: .word 0x04000050 +_02240EE4: .word 0x022513A0 + thumb_func_end MOD18_02240E2C + + thumb_func_start MOD18_02240EE8 +MOD18_02240EE8: ; 0x02240EE8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #4 + mov r1, #0x14 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + str r5, [r4, #8] + str r0, [r4, #0x10] + ldr r0, _02240F2C ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _02240F30 ; =MOD18_02240E2C + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _02240F2C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #0x10 + bl FUN_0204F74C + pop {r3, r4, r5, pc} + .align 2, 0 +_02240F2C: .word 0x022513A0 +_02240F30: .word MOD18_02240E2C + thumb_func_end MOD18_02240EE8 + + thumb_func_start MOD18_02240F34 +MOD18_02240F34: ; 0x02240F34 + push {r4, lr} + add r4, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _02240F7E + ldr r0, _02240F80 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _02240F7E + ldr r0, [r1, #0x40] + mov r1, #0 + ldr r0, [r0, #0x38] + bl FUN_02055540 + ldr r0, _02240F80 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _02240F80 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240F7E: + pop {r4, pc} + .align 2, 0 +_02240F80: .word 0x022513A0 + thumb_func_end MOD18_02240F34 + + thumb_func_start MOD18_02240F84 +MOD18_02240F84: ; 0x02240F84 + push {r3, r4, r5, lr} + ldr r0, _02241000 ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _02240FFE + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02240FA4 + bl FUN_02064520 + mov r0, #0 + str r0, [r4, #0x14] +_02240FA4: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02240FB4 + cmp r5, #0 + beq _02240FB4 + ldrb r0, [r4, #0xc] + bl MOD18_0223FD8C +_02240FB4: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02241004 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + ldr r0, _02241000 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + ldr r0, _02241000 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _02241000 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02240FFE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02241000: .word 0x022513A0 +_02241004: .word 0x04000050 + thumb_func_end MOD18_02240F84 + + thumb_func_start MOD18_02241008 +MOD18_02241008: ; 0x02241008 + push {r4, lr} + add r4, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _0224102C + ldr r0, _02241030 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r1, [r1, r0] + cmp r1, #0 + beq _0224102C + mov r0, #0xe + str r0, [r1] + ldr r0, _02241034 ; =0x0000060B + bl FUN_020054C8 +_0224102C: + pop {r4, pc} + nop +_02241030: .word 0x022513A0 +_02241034: .word 0x0000060B + thumb_func_end MOD18_02241008 + + thumb_func_start MOD18_02241038 +MOD18_02241038: ; 0x02241038 + push {r4, r5, lr} + sub sp, #0x14 + ldr r3, _02241274 ; =0x022500CC + add r4, r1, #0 + add r5, r0, #0 + add r2, sp, #4 + mov r1, #0xf +_02241046: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02241046 + ldr r0, [r4] + cmp r0, #0xe + bhi _0224110A + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241064: ; jump table + .short _02241082 - _02241064 - 2 ; case 0 + .short _02241096 - _02241064 - 2 ; case 1 + .short _022410AE - _02241064 - 2 ; case 2 + .short _022410B6 - _02241064 - 2 ; case 3 + .short _022410CE - _02241064 - 2 ; case 4 + .short _02241100 - _02241064 - 2 ; case 5 + .short _02241100 - _02241064 - 2 ; case 6 + .short _0224118C - _02241064 - 2 ; case 7 + .short _0224126E - _02241064 - 2 ; case 8 + .short _022411B0 - _02241064 - 2 ; case 9 + .short _0224126E - _02241064 - 2 ; case 10 + .short _022411E0 - _02241064 - 2 ; case 11 + .short _022411FC - _02241064 - 2 ; case 12 + .short _0224126E - _02241064 - 2 ; case 13 + .short _02241222 - _02241064 - 2 ; case 14 +_02241082: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x1c] + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, pc} +_02241096: + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, pc} +_022410AE: + add r0, r0, #1 + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_022410B6: + mov r0, #1 + str r0, [sp] + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + pop {r4, r5, pc} +_022410CE: + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x3c + ble _022410E6 + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x1c] + pop {r4, r5, pc} +_022410E6: + ldrb r0, [r4, #0xc] + mov r1, #1 + bl MOD18_0223FDEC + cmp r0, #0 + beq _0224110A + ldr r0, [r4] + add sp, #0x14 + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x1c] + pop {r4, r5, pc} +_02241100: + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + cmp r0, #0x1e + bgt _0224110C +_0224110A: + b _0224126E +_0224110C: + mov r0, #0x10 + bl FUN_0204F774 + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #7 + str r0, [r4] + ldr r0, _02241278 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, _02241278 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + bne _02241166 + mov r0, #0x20 + str r0, [sp] + ldr r0, _02241278 ; =0x022513A0 + add r1, r5, #0 + ldr r0, [r0, #4] + mov r3, #2 + ldr r0, [r0, #0x40] + bl MOD05_021E53B4 + str r0, [r4, #0x14] + ldr r0, _02241278 ; =0x022513A0 + ldr r1, _0224127C ; =0xFFFFE000 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + add sp, #0x14 + pop {r4, r5, pc} +_02241166: + mov r0, #0x20 + str r0, [sp] + ldr r0, _02241278 ; =0x022513A0 + add r1, r5, #0 + ldr r0, [r0, #4] + mov r3, #3 + ldr r0, [r0, #0x40] + bl MOD05_021E53B4 + str r0, [r4, #0x14] + ldr r0, _02241278 ; =0x022513A0 + ldr r1, _02241280 ; =0xFFFFD000 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + add sp, #0x14 + pop {r4, r5, pc} +_0224118C: + ldr r0, _02241278 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + add r5, r0, #0 + ldr r0, [r4, #0x18] + cmp r0, r5 + beq _022411A6 + ldr r0, _02241284 ; =0x000005EB + bl FUN_020054C8 +_022411A6: + str r5, [r4, #0x18] + mov r0, #0 + add sp, #0x14 + str r0, [r4, #0x10] + pop {r4, r5, pc} +_022411B0: + ldr r0, _02241278 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r1, _02241278 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] + add sp, #0x14 + pop {r4, r5, pc} +_022411E0: + mov r0, #0 + strb r0, [r4, #0xd] + mov r0, #0x10 + bl FUN_0204F774 + ldrb r0, [r4, #0xc] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0x1c] + mov r0, #0xc + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_022411FC: + ldr r0, [r4, #0x1c] + mov r1, #0 + add r0, r0, #1 + str r0, [r4, #0x1c] + ldrb r0, [r4, #0xc] + bl MOD18_0223FDEC + cmp r0, #0 + bne _02241214 + ldr r0, [r4, #0x1c] + cmp r0, #0x3c + ble _0224126E +_02241214: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_02241222: + ldr r1, [r4, #0x10] + add r0, sp, #4 + ldrsb r1, [r0, r1] + mov r0, #9 + mvn r0, r0 + cmp r1, r0 + beq _0224126E + ldr r0, _02241278 ; =0x022513A0 + lsl r1, r1, #0xc + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055540 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + cmp r0, #5 + bne _0224126E + ldr r0, [r4, #0x14] + cmp r0, #0 + beq _02241256 + bl FUN_02064520 + mov r0, #0 + str r0, [r4, #0x14] +_02241256: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _02241264 + mov r0, #0xb + add sp, #0x14 + str r0, [r4] + pop {r4, r5, pc} +_02241264: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #9 + str r0, [r4] +_0224126E: + add sp, #0x14 + pop {r4, r5, pc} + nop +_02241274: .word 0x022500CC +_02241278: .word 0x022513A0 +_0224127C: .word 0xFFFFE000 +_02241280: .word 0xFFFFD000 +_02241284: .word 0x000005EB + thumb_func_end MOD18_02241038 + + thumb_func_start MOD18_02241288 +MOD18_02241288: ; 0x02241288 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x24 + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x24 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + str r5, [r4, #8] + str r0, [r4, #0x10] + ldr r0, _022412DC ; =0x022513A0 + strb r6, [r4, #0xd] + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_020552F8 + str r0, [r4, #0x18] + ldr r0, _022412DC ; =0x022513A0 + strb r7, [r4, #0xc] + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022412E0 ; =MOD18_02241038 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _022412DC ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022412DC: .word 0x022513A0 +_022412E0: .word MOD18_02241038 + thumb_func_end MOD18_02241288 + + thumb_func_start MOD18_022412E4 +MOD18_022412E4: ; 0x022412E4 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #4 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02241304 + mov r0, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD18_02241288 +_02241304: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_022412E4 + + thumb_func_start MOD18_02241308 +MOD18_02241308: ; 0x02241308 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #4 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02241328 + mov r0, #1 + add r1, r4, #0 + add r2, r6, #0 + bl MOD18_02241288 +_02241328: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_02241308 + + thumb_func_start MOD18_0224132C +MOD18_0224132C: ; 0x0224132C + push {r4, lr} + add r4, r0, #0 + bl FUN_0204E778 + add r0, r4, #0 + bl FUN_0204F69C + pop {r4, pc} + thumb_func_end MOD18_0224132C + + thumb_func_start MOD18_0224133C +MOD18_0224133C: ; 0x0224133C + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0xa + bl FUN_0204F678 + pop {r4, pc} + thumb_func_end MOD18_0224133C + + thumb_func_start MOD18_02241350 +MOD18_02241350: ; 0x02241350 + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_0204E758 + add r0, r4, #0 + mov r1, #0x14 + bl FUN_0204F678 + pop {r4, pc} + thumb_func_end MOD18_02241350 + + thumb_func_start MOD18_02241364 +MOD18_02241364: ; 0x02241364 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r0, #0 + add r0, sp, #0xc + bl FUN_020312BC + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r7, r0] + mov r4, #0 + cmp r0, #0 + ble _0224141A + mov r0, #0 + add r5, r7, #0 + add r6, r7, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] +_02241388: + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r0, r2 + str r0, [sp, #0xc] + adc r1, r3 + ldr r0, [sp] + str r1, [sp, #0x10] + lsl r2, r0, #8 + lsr r1, r1, #0x18 + add r0, r5, #0 + orr r2, r1 + add r0, #0x48 + strh r2, [r0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r0, r2 + adc r1, r3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r0, r1, #0 + ldr r1, [sp, #4] + mov r2, #0xc0 + mov r3, #0 + bl _ll_mul + add r0, r5, #0 + add r0, #0x4a + strh r1, [r0] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl _ll_mul + add r2, r0, #0 + add r3, r1, #0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r0, r0, r2 + adc r1, r3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r0, r1, #0 + ldr r1, [sp, #8] + ldr r2, _02241420 ; =0x0000FFFF + mov r3, #0 + bl _ll_mul + mov r0, #0x45 + strh r1, [r6, #8] + lsl r0, r0, #2 + ldrb r0, [r7, r0] + add r4, r4, #1 + add r5, r5, #4 + add r6, r6, #2 + cmp r4, r0 + blt _02241388 +_0224141A: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02241420: .word 0x0000FFFF + thumb_func_end MOD18_02241364 + + thumb_func_start MOD18_02241424 +MOD18_02241424: ; 0x02241424 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02241432 + b _02241698 +_02241432: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224143E: ; jump table + .short _02241458 - _0224143E - 2 ; case 0 + .short _02241472 - _0224143E - 2 ; case 1 + .short _022414BE - _0224143E - 2 ; case 2 + .short _02241500 - _0224143E - 2 ; case 3 + .short _0224154C - _0224143E - 2 ; case 4 + .short _0224158A - _0224143E - 2 ; case 5 + .short _022415C0 - _0224143E - 2 ; case 6 + .short _022415FA - _0224143E - 2 ; case 7 + .short _02241642 - _0224143E - 2 ; case 8 + .short _0224164E - _0224143E - 2 ; case 9 + .short _02241698 - _0224143E - 2 ; case 10 + .short _0224165E - _0224143E - 2 ; case 11 + .short _02241680 - _0224143E - 2 ; case 12 +_02241458: + bl MOD18_022400A0 + str r0, [r4, #4] + ldr r0, _0224169C ; =0x00000111 + mov r1, #0 + strb r1, [r4, r0] + bl MOD18_022417B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241472: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _02241490 + mov r2, #2 + b _02241492 +_02241490: + mov r2, #0x1c +_02241492: + mov r3, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x17 + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_02008F34 + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022414BE: + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _022414CE + mov r2, #3 + b _022414D0 +_022414CE: + mov r2, #0x1d +_022414D0: + mov r3, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #7 + str r1, [sp, #8] + mov r1, #4 + str r1, [sp, #0xc] + mov r1, #0x5d + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241500: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _0224151E + mov r2, #1 + b _02241520 +_0224151E: + mov r2, #0x1b +_02241520: + mov r3, #0 + str r3, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5e + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224154C: + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, _022416A4 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1d + bne _0224155C + mov r2, #0 + b _0224155E +_0224155C: + mov r2, #0x1a +_0224155E: + mov r3, #0 + str r3, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5f + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _022416A0 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224158A: + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _022416A0 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl MOD18_022418DC + add r0, r4, #0 + bl MOD18_02241364 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022415C0: + ldr r0, _0224169C ; =0x00000111 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0x1e + bls _02241698 + mov r0, #1 + sub r1, r0, #5 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4c + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #7 + str r0, [r4] + mov r0, #0x46 + mov r1, #0 + lsl r0, r0, #2 + add sp, #0x10 + str r1, [r4, r0] + pop {r4, pc} +_022415FA: + ldr r0, _022416A0 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02241AD0 + cmp r0, #0 + beq _02241622 + ldr r0, _022416A8 ; =0x00000113 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _02241618 + mov r0, #0xb + str r0, [r4] + b _02241622 +_02241618: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02241622: + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0x3c + bge _02241698 + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x3c + bne _02241698 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_02241642: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_0224164E: + bl FUN_02031190 + ldr r1, _022416A8 ; =0x00000113 + ldrb r1, [r4, r1] + bl MOD18_022416B0 + add sp, #0x10 + pop {r4, pc} +_0224165E: + ldr r0, _022416A8 ; =0x00000113 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022416AC ; =0x00000112 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C + ldr r0, _0224169C ; =0x00000111 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r4, pc} +_02241680: + ldr r0, _0224169C ; =0x00000111 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #8 + bls _02241698 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02241698: + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0224169C: .word 0x00000111 +_022416A0: .word 0x022513A0 +_022416A4: .word 0x00000B3B +_022416A8: .word 0x00000113 +_022416AC: .word 0x00000112 + thumb_func_end MOD18_02241424 + + thumb_func_start MOD18_022416B0 +MOD18_022416B0: ; 0x022416B0 + push {r3, r4, lr} + sub sp, #4 + ldr r0, _02241730 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _0224172C + ldr r0, _02241734 ; =0x00000113 + ldrb r2, [r4, r0] + cmp r2, #0 + beq _022416D6 + cmp r1, #0 + beq _022416D6 + sub r0, r0, #1 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C +_022416D6: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + mov r0, #1 + mov r1, #0 + sub r2, r1, #4 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl MOD18_02241800 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _02241730 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02241730 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02241730 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_0224172C: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02241730: .word 0x022513A0 +_02241734: .word 0x00000113 + thumb_func_end MOD18_022416B0 + + thumb_func_start MOD18_02241738 +MOD18_02241738: ; 0x02241738 + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0x12 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + add r7, r2, #0 + bl FUN_02016998 + mov r2, #0x12 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _022417A0 ; =0x00000113 + add r1, r0, #0 + strb r6, [r4, r0] + add r1, #9 + str r5, [r4, r1] + ldr r1, _022417A4 ; =0x022513A0 + ldr r2, [r1, #4] + ldr r1, _022417A8 ; =0x00000B3B + ldrb r1, [r2, r1] + cmp r1, #0x1d + bne _02241774 + mov r1, #0x20 + add r0, r1, #0 + add r0, #0xf4 + b _02241778 +_02241774: + mov r1, #0x10 + add r0, r0, #1 +_02241778: + strb r1, [r4, r0] + ldr r0, _022417AC ; =0x00000112 + mov r2, #0x64 + strb r7, [r4, r0] + ldr r0, _022417A4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022417B0 ; =MOD18_02241424 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022417A4 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_022417A0: .word 0x00000113 +_022417A4: .word 0x022513A0 +_022417A8: .word 0x00000B3B +_022417AC: .word 0x00000112 +_022417B0: .word MOD18_02241424 + thumb_func_end MOD18_02241738 + + thumb_func_start MOD18_022417B4 +MOD18_022417B4: ; 0x022417B4 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _022417FC ; =0x022513A0 + mov r0, #0x20 + ldr r1, [r1, #4] + mov r2, #4 + add r1, #0x48 + bl FUN_02008C9C + ldr r1, _022417FC ; =0x022513A0 + ldr r2, [r1, #4] + str r0, [r2, #0x44] + ldr r0, [r1, #4] + mov r2, #6 + add r0, #0x48 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r4, #0 + mov r7, #0x17 + ldr r6, _022417FC ; =0x022513A0 + add r5, r4, #0 + lsl r7, r7, #4 +_022417E2: + mov r0, #2 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + ldr r1, [r6, #4] + add r4, r4, #1 + add r1, r1, r5 + add r5, r5, #4 + str r0, [r1, r7] + cmp r4, #4 + blt _022417E2 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022417FC: .word 0x022513A0 + thumb_func_end MOD18_022417B4 + + thumb_func_start MOD18_02241800 +MOD18_02241800: ; 0x02241800 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r4, #0 + cmp r6, #0 + ble _02241834 + ldr r7, _022418D8 ; =0x022513A0 + add r5, r4, #0 +_0224180E: + ldr r0, [r7, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224182C + bl FUN_0201FFC8 + ldr r0, [r7, #4] + mov r1, #0 + add r2, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + str r1, [r2, r0] +_0224182C: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r6 + blt _0224180E +_02241834: + ldr r0, _022418D8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224185C + bl FUN_02009530 + bl FUN_0201D2AC + cmp r0, #0 + beq _0224185C + ldr r0, _022418D8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009C0C +_0224185C: + ldr r1, _022418D8 ; =0x022513A0 + mov r0, #0x19 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #4 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _0224188C + bl FUN_02009530 + bl FUN_0201E1B4 + cmp r0, #0 + beq _0224188C + ldr r0, _022418D8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009E04 +_0224188C: + ldr r6, _022418D8 ; =0x022513A0 + mov r5, #0 + mov r0, #0x65 + ldr r1, [r6, #4] + lsl r0, r0, #2 + str r5, [r1, r0] + add r4, r5, #0 + add r7, r5, #0 +_0224189C: + ldr r0, [r6, #4] + add r1, r0, r4 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022418AE + bl FUN_02008E2C +_022418AE: + ldr r0, [r6, #4] + add r5, r5, #1 + add r1, r0, r4 + mov r0, #0x17 + lsl r0, r0, #4 + add r4, r4, #4 + str r7, [r1, r0] + cmp r5, #4 + blt _0224189C + ldr r0, _022418D8 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + cmp r0, #0 + beq _022418CE + bl FUN_0201FD58 +_022418CE: + ldr r0, _022418D8 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x44] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022418D8: .word 0x022513A0 + thumb_func_end MOD18_02241800 + + thumb_func_start MOD18_022418DC +MOD18_022418DC: ; 0x022418DC + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r7, r0, #0 + ldr r0, _022419D4 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + sub r2, r1, #1 + str r1, [sp] + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + mov r3, #0x17 + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r4, _022419D4 ; =0x022513A0 + mov r6, #0 + ldr r1, [r4, #4] + ldr r0, [r1, #0x44] + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + str r1, [sp, #0x34] + str r6, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r6, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r6, [sp, #0x50] + str r0, [sp, #0x58] + cmp r7, #0 + ble _022419BE + add r5, r6, #0 +_0224195E: + mov r0, #0x4b + lsl r0, r0, #0xe + str r0, [sp, #0x34] + str r0, [sp, #0x38] + add r0, sp, #0x2c + bl FUN_0201FE94 + ldr r1, [r4, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200BC + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, r7 + blt _0224195E +_022419BE: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_022419D4: .word 0x022513A0 + thumb_func_end MOD18_022418DC + + thumb_func_start MOD18_022419D8 +MOD18_022419D8: ; 0x022419D8 + push {r4, lr} + lsl r4, r0, #2 + ldr r0, _02241A00 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r4 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _022419FE + bl FUN_0201FFC8 + ldr r0, _02241A00 ; =0x022513A0 + mov r2, #0 + ldr r0, [r0, #4] + add r1, r0, r4 + mov r0, #0x7e + lsl r0, r0, #2 + str r2, [r1, r0] +_022419FE: + pop {r4, pc} + .align 2, 0 +_02241A00: .word 0x022513A0 + thumb_func_end MOD18_022419D8 + + thumb_func_start MOD18_02241A04 +MOD18_02241A04: ; 0x02241A04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r3, r0, #0 + add r0, r1, #0 + lsl r5, r3, #2 + add r1, r0, r5 + add r1, #0x48 + ldrh r1, [r1] + str r1, [sp] + add r1, r0, r5 + add r1, #0x4a + ldrh r7, [r1] + cmp r2, #0 + bne _02241A30 + add r6, r0, #0 + add r6, #8 + lsl r4, r3, #1 + mov r1, #1 + ldrh r2, [r6, r4] + lsl r1, r1, #0xa + add r1, r2, r1 + strh r1, [r6, r4] +_02241A30: + lsl r1, r3, #1 + add r0, r0, r1 + ldrh r0, [r0, #8] + mov r2, #0x12 + lsl r2, r2, #0xa + asr r0, r0, #4 + lsl r6, r0, #1 + ldr r0, _02241AAC ; =0x020FFA38 + lsl r1, r6, #1 + ldrsh r0, [r0, r1] + mov r3, #0 + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r2, r0, r2 + adc r1, r3 + lsr r4, r2, #0xc + lsl r0, r1, #0x14 + orr r4, r0 + add r0, r6, #1 + lsl r1, r0, #1 + ldr r0, _02241AAC ; =0x020FFA38 + mov r2, #0xa + ldrsh r0, [r0, r1] + lsl r2, r2, #0xa + 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 + bpl _02241A82 + neg r1, r1 +_02241A82: + ldr r0, _02241AB0 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + add r0, r2, r0 + ldr r2, [r0, r5] + cmp r2, #0 + beq _02241AA8 + ldr r2, [sp] + lsl r2, r2, #0xc + add r2, r4, r2 + str r2, [sp, #4] + lsl r2, r7, #0xc + add r1, r1, r2 + str r1, [sp, #8] + ldr r0, [r0, r5] + add r1, sp, #4 + bl FUN_02020044 +_02241AA8: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241AAC: .word 0x020FFA38 +_02241AB0: .word 0x022513A0 + thumb_func_end MOD18_02241A04 + + thumb_func_start MOD18_02241AB4 +MOD18_02241AB4: ; 0x02241AB4 + cmp r0, #0 + bne _02241AC4 + ldr r1, _02241AC8 ; =0x022513A0 + mov r0, #0 + ldrsb r2, [r1, r0] + ldr r1, [r1, #4] + ldr r0, _02241ACC ; =0x00000B3A + strb r2, [r1, r0] +_02241AC4: + bx lr + nop +_02241AC8: .word 0x022513A0 +_02241ACC: .word 0x00000B3A + thumb_func_end MOD18_02241AB4 + + thumb_func_start MOD18_02241AD0 +MOD18_02241AD0: ; 0x02241AD0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r1, _02241D20 ; =0x022513A0 + ldr r2, _02241D24 ; =MOD18_02241AB4 + mov r3, #0 + mov r0, #2 + bl FUN_02004928 + ldr r0, _02241D28 ; =0x022513A0 + ldr r2, [r0, #4] + ldr r0, _02241D2C ; =0x00000B3B + ldrb r1, [r2, r0] + cmp r1, #0x1d + bne _02241AFE + sub r0, r0, #1 + ldrsb r0, [r2, r0] + bl abs + mov r1, #0x21 + bl _s32_div_f + b _02241B0C +_02241AFE: + sub r0, r0, #1 + ldrsb r0, [r2, r0] + bl abs + mov r1, #0x19 + bl _s32_div_f +_02241B0C: + mov r1, #0x11 + lsl r1, r1, #4 + ldrb r1, [r5, r1] + mov r2, #0x7e + lsl r2, r2, #2 + add r1, r5, r1 + add r1, #0xc8 + strb r0, [r1] + ldr r0, _02241D28 ; =0x022513A0 + add r1, r2, #0 + mov r4, #0 + ldr r0, [r0, #4] + sub r1, #0xe4 + b _02241B34 +_02241B28: + lsl r3, r4, #2 + add r3, r0, r3 + ldr r3, [r3, r2] + cmp r3, #0 + bne _02241B3A + add r4, r4, #1 +_02241B34: + ldrb r3, [r5, r1] + cmp r4, r3 + blt _02241B28 +_02241B3A: + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r4, r0 + bne _02241B4A + add sp, #0x18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241B4A: + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x4a + add r7, r5, #0 + mov r4, #0 + str r0, [sp, #0x10] + add r7, #0x48 + b _02241CEE +_02241B5A: + lsl r2, r4, #2 + add r0, r5, r2 + add r0, #0x48 + ldrh r1, [r0] + cmp r1, #0 + beq _02241B7C + mov r0, #1 + lsl r0, r0, #8 + cmp r1, r0 + bhs _02241B7C + add r0, r5, r2 + add r0, #0x4a + ldrh r0, [r0] + cmp r0, #0 + beq _02241B7C + cmp r0, #0xc0 + blo _02241B84 +_02241B7C: + add r0, r4, #0 + bl MOD18_022419D8 + b _02241CEC +_02241B84: + mov r0, #0x11 + lsl r0, r0, #4 + ldrb r1, [r5, r0] + add r0, r5, r4 + add r0, #0xf0 + ldrb r0, [r0] + sub r0, r1, r0 + bpl _02241B96 + add r0, #0x28 +_02241B96: + add r0, r5, r0 + add r0, #0xc8 + lsl r1, r4, #2 + ldrb r6, [r0] + add r0, r5, r1 + add r0, #0x48 + add r1, r5, r1 + ldrh r0, [r0] + add r1, #0x4a + ldrh r1, [r1] + sub r0, #0x80 + lsl r0, r0, #0xc + sub r1, #0x60 + str r0, [sp, #4] + lsl r0, r1, #0xc + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsr r0, r0, #0xc + lsl r1, r1, #0x14 + str r0, [sp, #8] + orr r0, r1 + str r0, [sp, #8] + ldr r0, [sp, #4] + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsr r2, r0, #0xc + lsl r1, r1, #0x14 + ldr r0, [sp, #8] + orr r2, r1 + add r0, r2, r0 + bl FX_Sqrt + str r0, [sp, #0xc] + cmp r6, #0 + bne _02241C2A + mov r1, #0xa + lsl r1, r1, #0x10 + bl FX_Div + mov r2, #0x26 + asr r1, r0, #0x1f + lsl r2, r2, #0xc + mov r3, #0 + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0xc + add r0, r5, r4 + add r0, #0xf0 + strb r1, [r0] + b _02241CE2 +_02241C2A: + lsl r2, r4, #2 + add r0, r5, r2 + add r0, #0x48 + ldrh r1, [r0] + add r0, r5, r2 + add r0, #0x4a + ldrh r0, [r0] + sub r1, #0x80 + sub r0, #0x60 + bne _02241C50 + cmp r1, #0 + ldrh r0, [r7, r2] + bge _02241C4A + sub r0, r0, r6 + strh r0, [r7, r2] + b _02241CE2 +_02241C4A: + add r0, r0, r6 + strh r0, [r7, r2] + b _02241CE2 +_02241C50: + cmp r1, #0 + bne _02241C70 + cmp r0, #0 + bge _02241C64 + ldr r0, [sp, #0x10] + ldrh r0, [r0, r2] + sub r1, r0, r6 + ldr r0, [sp, #0x10] + strh r1, [r0, r2] + b _02241CE2 +_02241C64: + ldr r0, [sp, #0x10] + ldrh r0, [r0, r2] + add r1, r0, r6 + ldr r0, [sp, #0x10] + strh r1, [r0, r2] + b _02241CE2 +_02241C70: + bl FX_Atan2 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + lsl r1, r6, #0xc + add r0, r0, r1 + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r2, [sp] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02241D34 ; =0x020FFA38 + asr r3, r2, #0x1f + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0xc + lsl r0, r4, #2 + add r0, r5, r0 + ldr r2, [sp] + add r1, #0x60 + add r0, #0x4a + strh r1, [r0] + ldr r0, [sp, #0x14] + asr r3, r2, #0x1f + asr r0, r0, #4 + lsl r0, r0, #1 + add r0, r0, #1 + lsl r1, r0, #1 + ldr r0, _02241D34 ; =0x020FFA38 + ldrsh r0, [r0, r1] + asr r1, r0, #0x1f + bl _ll_mul + mov r2, #2 + lsl r2, r2, #0xa + add r0, r0, r2 + ldr r2, _02241D30 ; =0x00000000 + adc r1, r2 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + asr r1, r0, #0xc + lsl r0, r4, #2 + add r0, r5, r0 + add r1, #0x80 + add r0, #0x48 + strh r1, [r0] +_02241CE2: + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_02241A04 +_02241CEC: + add r4, r4, #1 +_02241CEE: + mov r0, #0x45 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + cmp r4, r0 + bge _02241CFA + b _02241B5A +_02241CFA: + mov r0, #0x11 + lsl r0, r0, #4 + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + ldrb r1, [r5, r0] + cmp r1, #0x28 + blo _02241D0E + mov r1, #0 + strb r1, [r5, r0] +_02241D0E: + ldr r0, _02241D28 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02241D20: .word 0x022513A0 +_02241D24: .word MOD18_02241AB4 +_02241D28: .word 0x022513A0 +_02241D2C: .word 0x00000B3B +_02241D30: .word 0x00000000 +_02241D34: .word 0x020FFA38 + thumb_func_end MOD18_02241AD0 + + thumb_func_start MOD18_02241D38 +MOD18_02241D38: ; 0x02241D38 + push {r3, lr} + ldr r1, _02241D4C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x2a + lsl r1, r1, #4 + ldr r1, [r2, r1] + cmp r1, #0 + beq _02241D4A + blx r1 +_02241D4A: + pop {r3, pc} + .align 2, 0 +_02241D4C: .word 0x022513A0 + thumb_func_end MOD18_02241D38 + + thumb_func_start MOD18_02241D50 +MOD18_02241D50: ; 0x02241D50 + ldr r0, _02241D64 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02241D68 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x17 + bne _02241D60 + mov r0, #0x14 + bx lr +_02241D60: + mov r0, #7 + bx lr + .align 2, 0 +_02241D64: .word 0x022513A0 +_02241D68: .word 0x00000B3B + thumb_func_end MOD18_02241D50 + + thumb_func_start MOD18_02241D6C +MOD18_02241D6C: ; 0x02241D6C + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0xc] + add r0, sp, #0x24 + bl FUN_020312BC + bl MOD18_02241D50 + str r0, [sp, #4] + ldr r0, _02241F00 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02241F04 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x17 + bne _02241DB2 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r2, r0 + adc r3, r1 + mov r1, #0 + str r0, [sp, #0x24] + lsr r0, r3, #0x1f + lsl r1, r1, #1 + orr r1, r0 + add r0, r1, #1 + str r3, [sp, #0x28] + str r0, [sp, #0xc] +_02241DB2: + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r2, r0 + adc r3, r1 + str r0, [sp, #0x24] + str r3, [sp, #0x28] + add r0, r3, #0 + mov r1, #0 + mov r2, #3 + mov r3, #0 + bl _ll_mul + ldr r0, [sp, #0xc] + mov r6, #0 + add r0, r0, r1 + add r0, r0, #5 + str r0, [sp, #8] + ldr r0, [sp, #4] + cmp r0, #0 + bgt _02241DE8 + b _02241EFA +_02241DE8: + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + str r0, [sp, #0x20] +_02241DF2: + ldr r0, [sp, #4] + sub r0, r0, r6 + sub r4, r0, #1 + ldr r0, [sp, #0xc] + cmp r6, r0 + bge _02241E06 + add r1, r5, r4 + mov r0, #0 + strb r0, [r1, #8] + b _02241E1A +_02241E06: + ldr r0, [sp, #8] + cmp r6, r0 + bge _02241E14 + add r1, r5, r4 + mov r0, #1 + strb r0, [r1, #8] + b _02241E1A +_02241E14: + add r1, r5, r4 + mov r0, #2 + strb r0, [r1, #8] +_02241E1A: + ldrb r0, [r1, #8] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + lsl r1, r0, #2 + ldr r0, _02241F08 ; =0x022500C0 + ldr r0, [r0, r1] + ldr r1, [sp, #0x30] + str r0, [sp] + lsl r7, r0, #1 + mov r0, #0xc0 + sub r0, r0, r7 + str r0, [sp, #0x10] + ldr r0, [sp, #0x2c] + bl _ll_mul + add r3, r1, #0 + add r2, r0, #0 + ldr r1, [sp, #0x34] + ldr r0, [sp, #0x38] + add r1, r1, r2 + adc r0, r3 + str r1, [sp, #0x24] + mov r1, #1 + lsl r1, r1, #8 + str r0, [sp, #0x28] + sub r2, r1, r7 + beq _02241E5A + ldr r1, [sp, #0x14] + mov r3, #0 + bl _ll_mul + add r0, r1, #0 +_02241E5A: + lsl r1, r4, #3 + add r7, r5, r1 + ldr r1, [sp] + add r0, r1, r0 + lsl r0, r0, #0xc + str r0, [r7, #0x44] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + add r2, r0, #0 + ldr r0, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r0, r2 + str r0, [sp, #0x24] + adc r3, r1 + ldr r0, [sp, #0x10] + str r3, [sp, #0x28] + cmp r0, #0 + beq _02241E94 + ldr r1, [sp, #0x18] + add r0, r3, #0 + ldr r2, [sp, #0x10] + mov r3, #0 + bl _ll_mul + add r3, r1, #0 +_02241E94: + ldr r0, [sp] + add r0, r0, r3 + lsl r0, r0, #0xc + str r0, [r7, #0x48] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r3, [sp, #0x34] + ldr r2, [sp, #0x38] + add r0, r3, r0 + adc r2, r1 + str r0, [sp, #0x24] + lsl r0, r4, #1 + add r4, r5, r0 + str r2, [sp, #0x28] + add r0, r2, #0 + ldr r1, [sp, #0x1c] + ldr r2, _02241F0C ; =0x0000FFFF + mov r3, #0 + bl _ll_mul + strh r1, [r4, #0x1c] + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x30] + ldr r2, [sp, #0x24] + ldr r3, [sp, #0x28] + bl _ll_mul + ldr r2, [sp, #0x34] + ldr r3, [sp, #0x38] + add r0, r2, r0 + adc r3, r1 + str r0, [sp, #0x24] + ldr r1, [sp, #0x20] + ldr r2, _02241F0C ; =0x0000FFFF + str r3, [sp, #0x28] + add r0, r3, #0 + mov r3, #0 + bl _ll_mul + mov r0, #0x4d + lsl r0, r0, #2 + strh r1, [r4, r0] + ldr r0, [sp, #4] + add r6, r6, #1 + cmp r6, r0 + bge _02241EFA + b _02241DF2 +_02241EFA: + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_02241F00: .word 0x022513A0 +_02241F04: .word 0x00000B3B +_02241F08: .word 0x022500C0 +_02241F0C: .word 0x0000FFFF + thumb_func_end MOD18_02241D6C + + thumb_func_start MOD18_02241F10 +MOD18_02241F10: ; 0x02241F10 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02241F1E + b _02242166 +_02241F1E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02241F2A: ; jump table + .short _02241F44 - _02241F2A - 2 ; case 0 + .short _02241F60 - _02241F2A - 2 ; case 1 + .short _02241FA0 - _02241F2A - 2 ; case 2 + .short _02241FD4 - _02241F2A - 2 ; case 3 + .short _02242014 - _02241F2A - 2 ; case 4 + .short _02242044 - _02241F2A - 2 ; case 5 + .short _0224205A - _02241F2A - 2 ; case 6 + .short _0224209A - _02241F2A - 2 ; case 7 + .short _022420FE - _02241F2A - 2 ; case 8 + .short _02242114 - _02241F2A - 2 ; case 9 + .short _02242166 - _02241F2A - 2 ; case 10 + .short _02242128 - _02241F2A - 2 ; case 11 + .short _0224214C - _02241F2A - 2 ; case 12 +_02241F44: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0x57 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + bl MOD18_022417B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241F60: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _0224216C ; =0x022513A0 + mov r2, #6 + ldr r1, [r0, #4] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008F34 + ldr r1, _0224216C ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241FA0: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r2, #7 + str r2, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, _0224216C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _0224216C ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02241FD4: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _0224216C ; =0x022513A0 + mov r2, #5 + ldr r1, [r0, #4] + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _0224216C ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02242014: + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r2, #4 + ldr r0, _0224216C ; =0x022513A0 + str r2, [sp, #8] + ldr r1, [r0, #4] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _0224216C ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02242044: + add r0, r4, #0 + bl MOD18_02241D6C + add r0, r4, #0 + bl MOD18_022421D4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224205A: + mov r0, #0x57 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0x1e + bls _02242166 + mov r1, #3 + ldr r0, _02242170 ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + mov r0, #7 + str r0, [r4] + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4d + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #0x16 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] + mov r0, #0x66 + lsl r0, r0, #4 + bl FUN_020054C8 + add sp, #0x10 + pop {r4, pc} +_0224209A: + mov r0, #7 + str r0, [sp] + ldr r0, _02242174 ; =0x04000050 + mov r1, #0x10 + mov r2, #1 + mov r3, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, _0224216C ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022423B0 + cmp r0, #0 + beq _022420DE + mov r0, #0x66 + lsl r0, r0, #4 + mov r1, #0 + bl FUN_020054F0 + ldr r0, _02242178 ; =0x0000015E + ldrb r0, [r4, r0] + cmp r0, #0 + beq _022420D4 + mov r0, #0xb + str r0, [r4] + b _022420DE +_022420D4: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_022420DE: + mov r0, #0x16 + lsl r0, r0, #4 + ldr r1, [r4, r0] + cmp r1, #0x3c + bge _02242166 + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x3c + bne _02242166 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_022420FE: + mov r0, #0x66 + lsl r0, r0, #4 + mov r1, #0 + bl FUN_020054F0 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_02242114: + mov r0, #0xa + str r0, [r4] + bl FUN_02031190 + ldr r1, _02242178 ; =0x0000015E + ldrb r1, [r4, r1] + bl MOD18_022425D4 + add sp, #0x10 + pop {r4, pc} +_02242128: + ldr r0, _02242178 ; =0x0000015E + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _0224217C ; =0x0000015D + ldrb r0, [r4, r0] + bl MOD18_0223FD8C + mov r0, #0x57 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r4, pc} +_0224214C: + mov r0, #0x57 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #8 + bls _02242166 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02242166: + add sp, #0x10 + pop {r4, pc} + nop +_0224216C: .word 0x022513A0 +_02242170: .word 0x0400006C +_02242174: .word 0x04000050 +_02242178: .word 0x0000015E +_0224217C: .word 0x0000015D + thumb_func_end MOD18_02241F10 + + thumb_func_start MOD18_02242180 +MOD18_02242180: ; 0x02242180 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x59 + mov r0, #4 + lsl r1, r1, #2 + add r6, r2, #0 + bl FUN_020169D8 + mov r2, #0x59 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _022421C4 ; =0x0000015E + mov r2, #0x64 + strb r5, [r4, r0] + ldr r0, _022421C8 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022421CC ; =MOD18_02241F10 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022421C8 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, _022421D0 ; =0x0000015D + strb r6, [r4, r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_022421C4: .word 0x0000015E +_022421C8: .word 0x022513A0 +_022421CC: .word MOD18_02241F10 +_022421D0: .word 0x0000015D + thumb_func_end MOD18_02242180 + + thumb_func_start MOD18_022421D4 +MOD18_022421D4: ; 0x022421D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + str r0, [sp, #0x2c] + ldr r0, _0224231C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _0224231C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _0224231C ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #0x17 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r0, _0224231C ; =0x022513A0 + mov r4, #0 + ldr r1, [r0, #4] + ldr r0, [r1, #0x44] + str r0, [sp, #0x30] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x34] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] + lsr r0, r1, #5 + str r1, [sp, #0x38] + str r4, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + add r0, sp, #0x30 + strh r4, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x58] + mov r0, #4 + str r4, [sp, #0x54] + str r0, [sp, #0x5c] + bl MOD18_02241D50 + cmp r0, #0 + ble _02242308 + add r5, r4, #0 + ldr r6, _0224231C ; =0x022513A0 + add r7, r5, #0 +_0224227A: + mov r0, #0x4b + lsl r0, r0, #0xe + str r0, [sp, #0x38] + str r0, [sp, #0x3c] + add r0, sp, #0x30 + bl FUN_0201FE94 + ldr r1, [r6, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200EC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp, #0x2c] + add r1, r1, r4 + ldrb r1, [r1, #8] + lsl r1, r1, #1 + bl FUN_02020130 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + lsl r1, r7, #0x10 + lsr r1, r1, #0x10 + bl FUN_02020208 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020398 + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + add r5, r5, #4 + add r7, r7, #4 + add r4, r4, #1 + bl MOD18_02241D50 + cmp r4, r0 + blt _0224227A +_02242308: + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224231C: .word 0x022513A0 + thumb_func_end MOD18_022421D4 + + thumb_func_start MOD18_02242320 +MOD18_02242320: ; 0x02242320 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _022423A8 ; =0x022513A0 + add r4, r1, #0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + add r1, r1, r0 + lsl r0, r5, #2 + ldr r2, [r1, r0] + cmp r2, #0 + beq _022423A4 + lsl r2, r5, #3 + add r3, r4, r2 + ldr r2, [r3, #0x44] + str r2, [sp] + ldr r2, [r3, #0x48] + str r2, [sp, #4] + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x4d + lsl r0, r0, #2 + add r2, r4, r0 + lsl r1, r5, #1 + mov r3, #0x64 + add r4, r5, #0 + mul r4, r3 + mov r3, #0x25 + lsl r3, r3, #4 + ldrh r0, [r2, r1] + add r3, r4, r3 + add r0, r0, r3 + strh r0, [r2, r1] + ldrh r0, [r2, r1] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _022423AC ; =0x020FFA38 + ldrsh r1, [r0, r1] + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + lsl r0, r0, #0x10 + mov r1, #5 + asr r0, r0, #0x10 + lsl r1, r1, #0xe + bl FX_Div + mov r1, #1 + lsl r1, r1, #0xc + sub r0, r1, r0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, _022423A8 ; =0x022513A0 + ldr r1, [r0, #4] + lsl r0, r5, #2 + add r1, r1, r0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020064 +_022423A4: + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_022423A8: .word 0x022513A0 +_022423AC: .word 0x020FFA38 + thumb_func_end MOD18_02242320 + + thumb_func_start MOD18_022423B0 +MOD18_022423B0: ; 0x022423B0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + mov r6, #0 + str r1, [sp] + add r4, r6, #0 + bl MOD18_02241D50 + cmp r0, #0 + ble _022423E6 + ldr r5, [sp] +_022423C4: + add r0, r5, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _022423D8 + ldr r1, [sp] + add r0, r4, #0 + bl MOD18_02242320 + b _022423DA +_022423D8: + add r6, r6, #1 +_022423DA: + add r5, r5, #4 + add r4, r4, #1 + bl MOD18_02241D50 + cmp r4, r0 + blt _022423C4 +_022423E6: + bl MOD18_02241D50 + cmp r6, r0 + bne _022423F4 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022423F4: + ldr r0, _02242580 ; =0x021C48F8 + ldrh r0, [r0, #0x20] + cmp r0, #0 + beq _022424C4 + mov r5, #0 + bl MOD18_02241D50 + cmp r0, #0 + ble _022424C4 + ldr r6, [sp] + add r4, r6, #0 +_0224240A: + add r0, r6, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _022424B6 + ldr r0, _02242580 ; =0x021C48F8 + ldrh r0, [r0, #0x1e] + lsl r1, r0, #0xc + ldr r0, [r4, #0x48] + sub r0, r1, r0 + str r0, [sp, #0xc] + asr r7, r0, #0x1f + ldr r0, _02242580 ; =0x021C48F8 + ldrh r0, [r0, #0x1c] + lsl r1, r0, #0xc + ldr r0, [r4, #0x44] + sub r0, r1, r0 + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + str r1, [sp, #8] + add r1, r7, #0 + add r2, r0, #0 + add r3, r7, #0 + bl _ll_mul + add r7, r0, #0 + add r3, r1, #0 + mov r0, #2 + ldr r1, [sp, #0x10] + lsl r0, r0, #0xa + add r2, r1, r0 + ldr r1, [sp, #8] + ldr r0, _02242584 ; =0x00000000 + adc r1, r0 + str r1, [sp, #8] + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + mov r0, #2 + lsl r0, r0, #0xa + ldr r2, _02242584 ; =0x00000000 + add r0, r7, r0 + adc r3, r2 + lsl r2, r3, #0x14 + lsr r0, r0, #0xc + orr r0, r2 + add r0, r1, r0 + bl FX_Sqrt + ldr r1, [sp] + add r1, r1, r5 + ldrb r1, [r1, #8] + lsl r2, r1, #2 + ldr r1, _02242588 ; =0x022500C0 + ldr r1, [r1, r2] + lsl r1, r1, #0xc + cmp r1, r0 + ble _022424B6 + ldr r0, _0224258C ; =0x00000626 + bl FUN_020054C8 + ldr r0, _02242590 ; =0x022513A0 + lsl r4, r5, #2 + ldr r0, [r0, #4] + add r1, r0, r4 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + ldr r1, [sp] + add r1, r1, r5 + ldrb r1, [r1, #8] + lsl r1, r1, #1 + add r1, r1, #1 + bl FUN_02020130 + ldr r0, [sp] + mov r1, #1 + add r0, r0, r4 + add r0, #0xe4 + str r1, [r0] + b _022424C4 +_022424B6: + add r6, r6, #4 + add r4, #8 + add r5, r5, #1 + bl MOD18_02241D50 + cmp r5, r0 + blt _0224240A +_022424C4: + mov r6, #0 + bl MOD18_02241D50 + cmp r0, #0 + ble _02242570 + ldr r7, [sp] + add r4, r7, #0 + add r5, r7, #0 +_022424D4: + add r0, r7, #0 + add r0, #0xe4 + ldr r0, [r0] + cmp r0, #0 + bne _02242560 + ldrh r0, [r4, #0x1c] + asr r0, r0, #4 + lsl r1, r0, #2 + ldr r0, _02242594 ; =0x020FFA38 + ldrsh r1, [r0, r1] + ldr r0, [r5, #0x48] + sub r0, r0, r1 + str r0, [r5, #0x48] + ldrh r1, [r4, #0x1c] + ldr r0, [r5, #0x44] + asr r1, r1, #4 + lsl r2, r1, #2 + ldr r1, _02242594 ; =0x020FFA38 + add r2, r1, r2 + mov r1, #2 + ldrsh r1, [r2, r1] + add r0, r0, r1 + str r0, [r5, #0x44] + ldr r0, [sp] + add r0, r0, r6 + ldrb r0, [r0, #8] + lsl r1, r0, #2 + ldr r0, _02242588 ; =0x022500C0 + ldr r1, [r0, r1] + ldr r0, [r5, #0x48] + lsl r3, r1, #0xc + cmp r0, r3 + bge _02242520 + ldrh r2, [r4, #0x1c] + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r2 + strh r0, [r4, #0x1c] + b _02242532 +_02242520: + mov r2, #0xc0 + sub r2, r2, r1 + lsl r2, r2, #0xc + cmp r0, r2 + blt _02242532 + ldrh r2, [r4, #0x1c] + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r2 + strh r0, [r4, #0x1c] +_02242532: + ldr r0, [r5, #0x44] + cmp r0, r3 + bge _02242548 + ldrh r1, [r4, #0x1c] + mov r0, #2 + lsl r0, r0, #0xe + sub r1, r1, r0 + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r1 + strh r0, [r4, #0x1c] + b _02242560 +_02242548: + mov r2, #1 + lsl r2, r2, #8 + sub r1, r2, r1 + lsl r1, r1, #0xc + cmp r0, r1 + blt _02242560 + ldrh r1, [r4, #0x1c] + lsl r0, r2, #7 + sub r1, r1, r0 + ldr r0, _02242598 ; =0x0000FFFF + sub r0, r0, r1 + strh r0, [r4, #0x1c] +_02242560: + add r7, r7, #4 + add r4, r4, #2 + add r5, #8 + add r6, r6, #1 + bl MOD18_02241D50 + cmp r6, r0 + blt _022424D4 +_02242570: + ldr r0, _02242590 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02242580: .word 0x021C48F8 +_02242584: .word 0x00000000 +_02242588: .word 0x022500C0 +_0224258C: .word 0x00000626 +_02242590: .word 0x022513A0 +_02242594: .word 0x020FFA38 +_02242598: .word 0x0000FFFF + thumb_func_end MOD18_022423B0 + + thumb_func_start MOD18_0224259C +MOD18_0224259C: ; 0x0224259C + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _022425C2 + ldr r0, _022425C4 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02242180 +_022425C2: + pop {r4, r5, r6, pc} + .align 2, 0 +_022425C4: .word 0x022513A0 + thumb_func_end MOD18_0224259C + + thumb_func_start MOD18_022425C8 +MOD18_022425C8: ; 0x022425C8 + ldr r3, _022425D0 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_022425D0: .word 0x0204E759 + thumb_func_end MOD18_022425C8 + + thumb_func_start MOD18_022425D4 +MOD18_022425D4: ; 0x022425D4 + push {r3, r4, r5, lr} + ldr r0, _02242658 ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _02242656 + mov r0, #0x66 + lsl r0, r0, #4 + mov r1, #0 + bl FUN_020054F0 + ldr r0, _0224265C ; =0x0000015E + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02242604 + cmp r5, #0 + beq _02242604 + sub r0, r0, #1 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C +_02242604: + ldr r1, _02242660 ; =0x04000050 + mov r0, #0 + strh r0, [r1] + mov r1, #1 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02242664 ; =0x0400006C + mov r1, #0 + bl GXx_SetMasterBrightness_ + bl MOD18_02241D50 + bl MOD18_02241800 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _02242658 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + ldr r0, _02242658 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02016A18 + ldr r1, _02242658 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02242656: + pop {r3, r4, r5, pc} + .align 2, 0 +_02242658: .word 0x022513A0 +_0224265C: .word 0x0000015E +_02242660: .word 0x04000050 +_02242664: .word 0x0400006C + thumb_func_end MOD18_022425D4 + + thumb_func_start MOD18_02242668 +MOD18_02242668: ; 0x02242668 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + ldr r0, _02242798 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _02242798 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _02242798 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #0x17 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r4, _02242798 ; =0x022513A0 + mov r6, #0 + ldr r1, [r4, #4] + mov r7, #0x19 + ldr r0, [r1, #0x44] + add r5, r6, #0 + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + str r1, [sp, #0x34] + str r6, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r6, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r6, [sp, #0x50] + str r0, [sp, #0x58] + lsl r7, r7, #0xe +_02242704: + add r0, sp, #0x2c + str r7, [sp, #0x34] + str r7, [sp, #0x38] + bl FUN_0201FE94 + ldr r1, [r4, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02020130 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0xf + sub r1, r1, r6 + bl FUN_02020310 + ldr r0, [r4, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0xf + blt _02242704 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_02242798: .word 0x022513A0 + thumb_func_end MOD18_02242668 + + thumb_func_start MOD18_0224279C +MOD18_0224279C: ; 0x0224279C + push {r4, lr} + lsl r1, r1, #2 + add r4, r0, r1 + str r2, [r4, #8] + add r0, r4, #0 + ldr r2, [sp, #8] + add r0, #0x80 + str r2, [r0] + str r3, [r4, #0x44] + ldr r0, [sp, #0xc] + add r4, #0xbc + str r0, [r4] + ldr r0, _022427C8 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r1 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + pop {r4, pc} + .align 2, 0 +_022427C8: .word 0x022513A0 + thumb_func_end MOD18_0224279C + + thumb_func_start MOD18_022427CC +MOD18_022427CC: ; 0x022427CC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + cmp r1, #4 + bhi _022427EC + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022427E2: ; jump table + .short _02242946 - _022427E2 - 2 ; case 0 + .short _0224290E - _022427E2 - 2 ; case 1 + .short _022428BE - _022427E2 - 2 ; case 2 + .short _02242856 - _022427E2 - 2 ; case 3 + .short _022427EC - _022427E2 - 2 ; case 4 +_022427EC: + mov r0, #2 + mov r2, #0x69 + str r0, [sp] + sub r0, r0, #6 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xb7 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xb + sub r3, r3, #5 + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x8c + str r0, [sp] + sub r0, r0, #2 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x94 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xc + sub r3, #0xf + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x87 + str r0, [sp] + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x99 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xd + sub r3, #0x14 + bl MOD18_0224279C + mov r0, #2 + mov r2, #0x78 + str r0, [sp] + mov r0, #0 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa8 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xe + sub r3, #0xb + bl MOD18_0224279C +_02242856: + mov r0, #3 + mov r2, #0x80 + str r0, [sp] + sub r0, r0, #7 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa0 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #7 + sub r3, r3, #5 + bl MOD18_0224279C + mov r0, #2 + mvn r0, r0 + mov r2, #0x84 + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x9c + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #8 + sub r3, #0xf + bl MOD18_0224279C + mov r0, #1 + mov r2, #0x70 + str r0, [sp] + sub r0, r0, #3 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xb0 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #9 + bl MOD18_0224279C + mov r0, #1 + mov r2, #0x73 + str r0, [sp] + sub r0, r0, #3 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xad + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #0xa + add r3, r3, #2 + bl MOD18_0224279C +_022428BE: + mov r0, #2 + mov r2, #0x8c + str r0, [sp] + sub r0, r0, #5 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x94 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #4 + sub r3, #0xa + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x8c + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0x94 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #5 + sub r3, #0x14 + bl MOD18_0224279C + mov r0, #0 + mvn r0, r0 + mov r2, #0x6e + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xb2 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #6 + bl MOD18_0224279C +_0224290E: + mov r0, #1 + mvn r0, r0 + mov r2, #0x78 + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa8 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #2 + sub r3, #0x1e + bl MOD18_0224279C + mov r0, #1 + mvn r0, r0 + mov r2, #0x64 + str r0, [sp] + sub r0, r0, #1 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xbc + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #3 + sub r3, #0xa + bl MOD18_0224279C +_02242946: + mov r0, #2 + mov r2, #0x80 + str r0, [sp] + sub r0, r0, #5 + add r3, r2, #0 + str r0, [sp, #4] + add r3, #0xa0 + ldr r3, [r4, r3] + add r0, r4, #0 + mov r1, #1 + sub r3, #0x1e + bl MOD18_0224279C + add sp, #8 + pop {r4, pc} + thumb_func_end MOD18_022427CC + + thumb_func_start MOD18_02242964 +MOD18_02242964: ; 0x02242964 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + mov r7, #0 + add r4, r6, #0 + add r5, r7, #0 +_02242970: + add r0, r4, #0 + add r0, #0x80 + ldr r1, [r0] + cmp r1, #0 + beq _022429E6 + ldr r0, [r4, #8] + add r0, r0, r1 + str r0, [r4, #8] + add r0, r4, #0 + add r0, #0xbc + ldr r1, [r4, #0x44] + ldr r0, [r0] + add r0, r1, r0 + str r0, [r4, #0x44] + add r0, r4, #0 + add r0, #0xbc + ldr r1, [r0] + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r0, [r6, r0] + add r1, r1, r0 + add r0, r4, #0 + add r0, #0xbc + str r1, [r0] + ldr r0, [r4, #8] + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r4, #0x44] + lsl r0, r0, #0xc + str r0, [sp, #4] + ldr r0, _022429F4 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r6, r0] + ldr r1, [r4, #0x44] + add r0, #0x23 + cmp r1, r0 + ble _022429E6 + ldr r0, _022429F4 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add r1, r4, #0 + add r1, #0x80 + mov r0, #0 + str r0, [r1] +_022429E6: + add r7, r7, #1 + add r4, r4, #4 + add r5, r5, #4 + cmp r7, #0xf + blt _02242970 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022429F4: .word 0x022513A0 + thumb_func_end MOD18_02242964 + + thumb_func_start MOD18_022429F8 +MOD18_022429F8: ; 0x022429F8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + ldr r0, _02242D64 ; =0x00000125 + add r4, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #6 + bhi _02242AFE + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02242A12: ; jump table + .short _02242A20 - _02242A12 - 2 ; case 0 + .short _02242A68 - _02242A12 - 2 ; case 1 + .short _02242A98 - _02242A12 - 2 ; case 2 + .short _02242B22 - _02242A12 - 2 ; case 3 + .short _02242C30 - _02242A12 - 2 ; case 4 + .short _02242CAA - _02242A12 - 2 ; case 5 + .short _02242E42 - _02242A12 - 2 ; case 6 +_02242A20: + mov r1, #0 + sub r0, r0, #1 + strb r1, [r4, r0] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r2, r0, #0 + mov r0, #0x20 + str r0, [sp] + ldr r0, _02242D68 ; =0x022513A0 + add r1, r5, #0 + ldr r0, [r0, #4] + mov r3, #5 + ldr r0, [r0, #0x40] + bl MOD05_021E5420 + mov r1, #0x45 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #1 + add r1, #0x11 + strb r0, [r4, r1] + ldr r0, _02242D6C ; =0x0000065E + bl FUN_020054C8 + b _02242E6C +_02242A68: + sub r1, r0, #1 + ldrb r1, [r4, r1] + add r2, r1, #1 + sub r1, r0, #1 + strb r2, [r4, r1] + ldrb r1, [r4, r1] + cmp r1, #0x14 + bls _02242AFE + mov r1, #2 + strb r1, [r4, r0] + mov r1, #0 + sub r2, r0, #5 + str r1, [r4, r2] + add r2, r0, #0 + mov r3, #5 + sub r2, #9 + str r3, [r4, r2] + ldr r2, _02242D68 ; =0x022513A0 + add r0, #0xd3 + ldr r2, [r2, #4] + ldr r0, [r2, r0] + bl FUN_02020130 + b _02242E6C +_02242A98: + mov r1, #2 + lsl r1, r1, #0x12 + str r1, [sp, #8] + sub r1, r0, #5 + ldr r1, [r4, r1] + add r0, #0xd3 + lsl r1, r1, #0xc + str r1, [sp, #0xc] + ldr r1, _02242D68 ; =0x022513A0 + ldr r1, [r1, #4] + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + mov r1, #0x12 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #0x41 + ble _02242B0E + mov r2, #3 + add r0, r1, #5 + strb r2, [r4, r0] + ldr r0, _02242D70 ; =0x0000065D + bl FUN_020054C8 + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02242D74 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x15 + bne _02242AEC + mov r1, #0 + mvn r1, r1 + b _02242AEE +_02242AEC: + mov r1, #5 +_02242AEE: + mov r0, #0x46 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02242B00 +_02242AFE: + b _02242E6C +_02242B00: + bl FUN_02064520 + mov r0, #0x45 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + b _02242E6C +_02242B0E: + sub r0, r1, #4 + ldr r0, [r4, r0] + add r0, r2, r0 + str r0, [r4, r1] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r0, #3 + sub r0, r1, #4 + str r2, [r4, r0] + b _02242E6C +_02242B22: + ldr r1, _02242D78 ; =0x021C48F8 + ldrh r2, [r1, #0x20] + cmp r2, #0 + beq _02242BD2 + sub r0, r0, #5 + ldrh r2, [r1, #0x1e] + ldr r0, [r4, r0] + sub r0, r2, r0 + lsl r0, r0, #0xc + str r0, [sp, #4] + asr r7, r0, #0x1f + ldrh r0, [r1, #0x1c] + sub r0, #0x80 + lsl r0, r0, #0xc + asr r1, r0, #0x1f + add r2, r0, #0 + add r3, r1, #0 + bl _ll_mul + add r6, r0, #0 + ldr r0, [sp, #4] + add r5, r1, #0 + add r1, r7, #0 + add r2, r0, #0 + add r3, r7, #0 + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r6, r6, r2 + adc r5, r3 + lsl r5, r5, #0x14 + lsr r6, r6, #0xc + orr r6, r5 + add r2, r0, r2 + adc r1, r3 + lsl r0, r1, #0x14 + lsr r1, r2, #0xc + orr r1, r0 + add r0, r6, r1 + bl FX_Sqrt + mov r1, #3 + lsl r1, r1, #0x10 + cmp r0, r1 + bge _02242BD2 + mov r0, #0x4b + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + ldr r0, _02242D7C ; =0x00000627 + bl FUN_020054C8 + mov r0, #0x46 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + ldr r5, [r4, r0] + mov r1, #3 + add r0, r5, #0 + bl _s32_div_f + cmp r1, #2 + bne _02242BD2 + add r0, r5, #0 + mov r1, #3 + bl _s32_div_f + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #2 + add r0, r4, #0 + add r1, r4, r1 + add r0, #0xf8 + add r1, #0xf8 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_02009BB8 + mov r0, #0x49 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + mov r1, #4 + add r0, r0, #1 + strb r1, [r4, r0] +_02242BD2: + mov r1, #0x46 + lsl r1, r1, #2 + ldr r0, [r4, r1] + cmp r0, #0xf + ble _02242BF0 + add r0, r1, #0 + mov r3, #0 + add r0, #0xc + strb r3, [r4, r0] + add r0, r1, #0 + mov r2, #5 + add r0, #0xd + strb r2, [r4, r0] + add r1, #0x14 + str r3, [r4, r1] +_02242BF0: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02242C0A + bge _02242C00 + add r1, r1, #1 + str r1, [r4, r0] +_02242C00: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + neg r1, r1 + str r1, [r4, r0] +_02242C0A: + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r0, #0x80 + lsl r0, r0, #0xc + str r0, [sp, #8] + add r0, r1, #0 + sub r0, #0xc + ldr r0, [r4, r0] + add r1, #0xcc + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, r1] + add r1, sp, #8 + bl FUN_02020044 + b _02242E6C +_02242C30: + sub r1, r0, #1 + ldrb r1, [r4, r1] + cmp r1, #0 + bne _02242C4A + sub r0, #0xd + ldr r0, [r4, r0] + mov r1, #3 + bl _s32_div_f + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_022427CC +_02242C4A: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD18_02242964 + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + cmp r1, #0x14 + bne _02242C6A + mov r1, #3 + add r0, r0, #1 + strb r1, [r4, r0] +_02242C6A: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _02242C84 + bge _02242C7A + add r1, r1, #1 + str r1, [r4, r0] +_02242C7A: + mov r0, #0x4b + lsl r0, r0, #2 + ldr r1, [r4, r0] + neg r1, r1 + str r1, [r4, r0] +_02242C84: + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r0, #0x80 + lsl r0, r0, #0xc + str r0, [sp, #8] + add r0, r1, #0 + sub r0, #0xc + ldr r0, [r4, r0] + add r1, #0xcc + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, r1] + add r1, sp, #8 + bl FUN_02020044 + b _02242E6C +_02242CAA: + sub r0, r0, #1 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _02242CB4 + b _02242DD2 +_02242CB4: + ldr r0, _02242D80 ; =0x0000062A + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x11 + add r0, #0xf8 + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + bl FUN_02009BB8 + mov r7, #1 + mov r5, #4 + mov r6, #0x52 +_02242CD0: + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + lsl r0, r6, #0xc + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r2, [r4, r0] + lsr r1, r7, #0x1f + lsl r3, r7, #0x1f + sub r3, r3, r1 + mov r0, #0x1f + ror r3, r0 + add r2, #0x27 + add r0, r1, r3 + add r0, r2, r0 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242D68 ; =0x022513A0 + ldr r0, [r0, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + add r7, r7, #1 + add r5, r5, #4 + add r6, #0xc + cmp r7, #9 + blt _02242CD0 + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x19 + lsl r0, r0, #0xe + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r0, #0x15 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242D68 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242D68 ; =0x022513A0 + b _02242D84 + .align 2, 0 +_02242D64: .word 0x00000125 +_02242D68: .word 0x022513A0 +_02242D6C: .word 0x0000065E +_02242D70: .word 0x0000065D +_02242D74: .word 0x00000B3B +_02242D78: .word 0x021C48F8 +_02242D7C: .word 0x00000627 +_02242D80: .word 0x0000062A +_02242D84: + ldr r1, [r0, #4] + mov r0, #0x22 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + mov r0, #0x7a + lsl r0, r0, #0xc + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r4, r0] + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x89 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200A0 +_02242DD2: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + bl FUN_0201B9EC + mov r1, #0xa + bl _s32_div_f + add r1, #0x7b + lsl r0, r1, #0xc + str r0, [sp, #8] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r0, #0xd8 + lsl r1, r1, #0xc + str r1, [sp, #0xc] + ldr r1, _02242E7C ; =0x022513A0 + ldr r1, [r1, #4] + ldr r0, [r1, r0] + add r1, sp, #8 + bl FUN_02020044 + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + mov r2, #0x1d + add r1, r1, #1 + str r1, [r4, r0] + add r1, r0, #4 + ldrb r1, [r4, r1] + lsr r5, r1, #0x1f + lsl r3, r1, #0x1d + sub r3, r3, r5 + ror r3, r2 + add r2, r5, r3 + beq _02242E30 + ldr r2, _02242E7C ; =0x022513A0 + lsr r1, r1, #3 + ldr r2, [r2, #4] + add r0, #0xd8 + ldr r0, [r2, r0] + add r1, r1, #3 + bl FUN_02020130 +_02242E30: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + cmp r1, #0x4b + bne _02242E6C + mov r1, #6 + add r0, r0, #1 + strb r1, [r4, r0] + b _02242E6C +_02242E42: + sub r0, #0x11 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02242E56 + bl FUN_02064520 + mov r0, #0x45 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02242E56: + ldr r0, _02242E7C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02242E6C: + ldr r0, _02242E7C ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02242E7C: .word 0x022513A0 + thumb_func_end MOD18_022429F8 + + thumb_func_start MOD18_02242E80 +MOD18_02242E80: ; 0x02242E80 + push {r4, r5, lr} + sub sp, #0x24 + ldr r4, _02242ED4 ; =0x022500DC + add r3, sp, #0xc + add r5, r0, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r5, r0] + sub r4, r1, #1 + cmp r4, #6 + bge _02242ECE + add r1, r4, #1 + str r1, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + ldr r1, _02242ED8 ; =0x022513A0 + lsl r3, r4, #2 + ldr r2, [r2, r3] + ldr r1, [r1, #4] + add r0, #0x4c + ldr r0, [r1, r0] + mov r1, #0x32 + mov r3, #0 + bl FUN_02008F34 + add r1, r4, #1 + lsl r1, r1, #2 + add r1, r5, r1 + add r1, #0xf8 + str r0, [r1] +_02242ECE: + add sp, #0x24 + pop {r4, r5, pc} + nop +_02242ED4: .word 0x022500DC +_02242ED8: .word 0x022513A0 + thumb_func_end MOD18_02242E80 + + thumb_func_start MOD18_02242EDC +MOD18_02242EDC: ; 0x02242EDC + push {r3, r4, r5, r6, r7, lr} + mov r7, #0x17 + ldr r6, _02242F04 ; =0x022513A0 + mov r4, #1 + add r5, r0, #4 + lsl r7, r7, #4 +_02242EE8: + add r0, r5, #0 + add r0, #0xf8 + ldr r1, [r0] + cmp r1, #0 + beq _02242EFA + ldr r0, [r6, #4] + ldr r0, [r0, r7] + bl FUN_02009490 +_02242EFA: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #7 + blt _02242EE8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242F04: .word 0x022513A0 + thumb_func_end MOD18_02242EDC + + thumb_func_start MOD18_02242F08 +MOD18_02242F08: ; 0x02242F08 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _02242F16 + b _0224318E +_02242F16: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242F22: ; jump table + .short _02242F3C - _02242F22 - 2 ; case 0 + .short _02242F98 - _02242F22 - 2 ; case 1 + .short _02242FE2 - _02242F22 - 2 ; case 2 + .short _02243018 - _02242F22 - 2 ; case 3 + .short _02243058 - _02242F22 - 2 ; case 4 + .short _0224308A - _02242F22 - 2 ; case 5 + .short _0224309A - _02242F22 - 2 ; case 6 + .short _022430EC - _02242F22 - 2 ; case 7 + .short _02243134 - _02242F22 - 2 ; case 8 + .short _02243140 - _02242F22 - 2 ; case 9 + .short _0224318E - _02242F22 - 2 ; case 10 + .short _02243150 - _02242F22 - 2 ; case 11 + .short _02243174 - _02242F22 - 2 ; case 12 +_02242F3C: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0x49 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + ldr r1, _02243194 ; =0x022513A0 + mov r0, #0x20 + ldr r1, [r1, #4] + mov r2, #4 + add r1, #0x48 + bl FUN_02008C9C + ldr r1, _02243194 ; =0x022513A0 + ldr r2, [r1, #4] + str r0, [r2, #0x44] + ldr r0, [r1, #4] + mov r2, #6 + add r0, #0x48 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r6, #0 + ldr r7, _02243194 ; =0x022513A0 + add r5, r6, #0 +_02242F72: + mov r0, #8 + add r1, r6, #0 + mov r2, #4 + bl FUN_02008DEC + ldr r1, [r7, #4] + add r6, r6, #1 + add r2, r1, r5 + mov r1, #0x17 + lsl r1, r1, #4 + add r5, r5, #4 + str r0, [r2, r1] + cmp r6, #4 + blt _02242F72 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02242F98: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x20 + ldr r1, [r0, #4] + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008F34 + ldr r2, _02243194 ; =0x022513A0 + mov r1, #0x19 + ldr r3, [r2, #4] + lsl r1, r1, #4 + str r0, [r3, r1] + ldr r0, [r2, #4] + add sp, #0x10 + ldr r1, [r0, r1] + add r0, r4, #0 + add r0, #0xf8 + str r1, [r0] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02242FE2: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x33 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _02243194 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02243018: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x1f + ldr r1, [r0, #4] + mov r0, #0x5e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243194 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02243058: + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, _02243194 ; =0x022513A0 + mov r2, #0x1e + ldr r1, [r0, #4] + mov r0, #0x5f + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243194 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224308A: + add r0, r4, #0 + bl MOD18_02242668 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224309A: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + add r0, r4, #0 + bl MOD18_02242E80 + mov r1, #0x49 + lsl r1, r1, #2 + ldrb r0, [r4, r1] + cmp r0, #0x1e + bls _0224318E + ldr r0, _02243194 ; =0x022513A0 + ldr r2, [r0, #4] + ldr r0, _02243198 ; =0x00000B3B + ldrb r0, [r2, r0] + cmp r0, #0x14 + bne _022430CE + add r0, r4, #0 + add r0, #0xf8 + sub r1, #0x24 + ldr r0, [r0] + ldr r1, [r4, r1] + bl FUN_02009BB8 +_022430CE: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4d + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #0x4a + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + mov r0, #7 + add sp, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022430EC: + ldr r0, _02243194 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022429F8 + cmp r0, #0 + beq _02243114 + ldr r0, _0224319C ; =0x00000127 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _0224310A + mov r0, #0xb + str r0, [r4] + b _02243114 +_0224310A: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02243114: + mov r0, #0x4a + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0x3c + bge _0224318E + add r1, r1, #1 + str r1, [r4, r0] + ldr r0, [r4, r0] + cmp r0, #0x3c + bne _0224318E + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02243134: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02243140: + bl FUN_02031190 + ldr r1, _0224319C ; =0x00000127 + ldrb r1, [r4, r1] + bl MOD18_0224322C + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02243150: + ldr r0, _0224319C ; =0x00000127 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022431A0 ; =0x00000126 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C + mov r0, #0x49 + mov r1, #0 + lsl r0, r0, #2 + strb r1, [r4, r0] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_02243174: + mov r0, #0x49 + lsl r0, r0, #2 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #8 + bls _0224318E + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_0224318E: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02243194: .word 0x022513A0 +_02243198: .word 0x00000B3B +_0224319C: .word 0x00000127 +_022431A0: .word 0x00000126 + thumb_func_end MOD18_02242F08 + + thumb_func_start MOD18_022431A4 +MOD18_022431A4: ; 0x022431A4 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x13 + mov r0, #4 + lsl r1, r1, #4 + add r6, r2, #0 + bl FUN_020169D8 + mov r2, #0x13 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _022431E8 ; =0x00000127 + mov r2, #0x64 + strb r5, [r4, r0] + sub r0, r0, #1 + strb r6, [r4, r0] + ldr r0, _022431EC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022431F0 ; =MOD18_02242F08 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022431EC ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_022431E8: .word 0x00000127 +_022431EC: .word 0x022513A0 +_022431F0: .word MOD18_02242F08 + thumb_func_end MOD18_022431A4 + + thumb_func_start MOD18_022431F4 +MOD18_022431F4: ; 0x022431F4 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _0224321A + ldr r0, _0224321C ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022431A4 +_0224321A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0224321C: .word 0x022513A0 + thumb_func_end MOD18_022431F4 + + thumb_func_start MOD18_02243220 +MOD18_02243220: ; 0x02243220 + ldr r3, _02243228 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_02243228: .word 0x0204E759 + thumb_func_end MOD18_02243220 + + thumb_func_start MOD18_0224322C +MOD18_0224322C: ; 0x0224322C + push {r3, r4, r5, lr} + ldr r0, _022432AC ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r1, r0] + cmp r4, #0 + beq _022432AA + mov r0, #0x45 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02243254 + bl FUN_02064520 + mov r0, #0x45 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02243254: + ldr r0, _022432B0 ; =0x00000127 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _02243268 + cmp r5, #0 + beq _02243268 + sub r0, r0, #1 + ldrb r0, [r4, r0] + bl MOD18_0223FD8C +_02243268: + add r0, r4, #0 + bl MOD18_02242EDC + mov r0, #0xf + bl MOD18_02241800 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _022432AC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _022432AC ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_022432AA: + pop {r3, r4, r5, pc} + .align 2, 0 +_022432AC: .word 0x022513A0 +_022432B0: .word 0x00000127 + thumb_func_end MOD18_0224322C + + thumb_func_start MOD18_022432B4 +MOD18_022432B4: ; 0x022432B4 + push {lr} + sub sp, #0x5c + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x19 + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x65 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _022433C4 ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #0x17 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #4 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x64 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r0, _022433C4 ; =0x022513A0 + mov r2, #2 + ldr r1, [r0, #4] + lsl r2, r2, #0x10 + ldr r0, [r1, #0x44] + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r0, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r2, #5 + mov r1, #0 + str r2, [sp, #0x34] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r1, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r0, [sp, #0x58] + lsl r0, r0, #0x11 + str r0, [sp, #0x34] + mov r0, #0x15 + lsl r0, r0, #0xe + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r1, [sp, #0x50] + bl FUN_0201FE94 + ldr r2, _022433C4 ; =0x022513A0 + mov r1, #0x7e + ldr r3, [r2, #4] + lsl r1, r1, #2 + str r0, [r3, r1] + ldr r0, [r2, #4] + ldr r0, [r0, r1] + mov r1, #2 + bl FUN_020200EC + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + ldr r0, _022433C4 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020238 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {pc} + nop +_022433C4: .word 0x022513A0 + thumb_func_end MOD18_022432B4 + + thumb_func_start MOD18_022433C8 +MOD18_022433C8: ; 0x022433C8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + add r0, r5, #0 + add r0, #0x28 + ldrb r0, [r0] + mov r4, #0 + cmp r0, #0 + beq _022433E2 + cmp r0, #1 + beq _02243402 + cmp r0, #2 + b _02243512 +_022433E2: + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02243528 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x1f + bne _022433F2 + mov r0, #4 + b _022433F4 +_022433F2: + mov r0, #2 +_022433F4: + str r0, [r5, #0x20] + mov r0, #0 + str r0, [r5, #0x24] + add r0, r5, #0 + mov r1, #1 + add r0, #0x28 + strb r1, [r0] +_02243402: + ldr r1, _0224352C ; =0x022513A0 + ldr r2, _02243530 ; =MOD18_02241AB4 + mov r0, #2 + mov r3, #0 + bl FUN_02004928 + ldr r0, [r5, #0x14] + add r0, r0, #1 + str r0, [r5, #0x14] + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02243534 ; =0x00000B3A + ldrsb r0, [r1, r0] + bl abs + add r6, r0, #0 + ldr r0, [r5, #0x14] + mov r1, #0xa + bl _s32_div_f + add r0, r5, r1 + strb r6, [r0, #8] + mov r1, #0 + b _0224343A +_02243432: + add r0, r5, r1 + ldrb r0, [r0, #8] + add r1, r1, #1 + add r4, r4, r0 +_0224343A: + cmp r1, #0xa + blt _02243432 + mov r0, #0x7d + lsl r0, r0, #2 + cmp r4, r0 + ble _02243454 + ldr r0, [r5, #0x24] + add r0, r0, #1 + str r0, [r5, #0x24] + ldr r0, _02243538 ; =0x00000628 + bl FUN_020054C8 + b _0224345C +_02243454: + add r0, r5, #0 + mov r1, #0 + add r0, #0x28 + strb r1, [r0] +_0224345C: + ldr r0, [r5, #0x24] + mov r1, #0xa + bl _s32_div_f + cmp r1, #9 + bne _0224346E + ldr r0, [r5, #0x20] + sub r0, r0, #1 + str r0, [r5, #0x20] +_0224346E: + ldr r2, [r5, #0x20] + cmp r2, #0 + bne _02243480 + mov r0, #2 + add r5, #0x28 + strb r0, [r5] + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02243480: + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, _02243528 ; =0x00000B3B + ldrb r0, [r1, r0] + cmp r0, #0x1f + bne _022434B0 + cmp r2, #2 + beq _022434A4 + cmp r2, #3 + beq _0224349E + cmp r2, #4 + bne _022434AA + mov r4, #1 + lsl r4, r4, #0x1e + b _022434BE +_0224349E: + mov r4, #0xff + lsl r4, r4, #0x16 + b _022434BE +_022434A4: + mov r4, #0xfe + lsl r4, r4, #0x16 + b _022434BE +_022434AA: + mov r4, #0x3f + lsl r4, r4, #0x18 + b _022434BE +_022434B0: + cmp r2, #2 + bne _022434BA + mov r4, #1 + lsl r4, r4, #0x1e + b _022434BE +_022434BA: + mov r4, #0xff + lsl r4, r4, #0x16 +_022434BE: + ldr r0, [r5, #0x24] + mov r6, #0 + cmp r0, #0 + beq _022434C8 + add r6, r6, #1 +_022434C8: + ldr r0, _0224353C ; =0x45800000 + add r1, r4, #0 + bl _fmul + bl _ffix + str r0, [sp] + ldr r0, _0224353C ; =0x45800000 + add r1, r4, #0 + bl _fmul + bl _ffix + str r0, [sp, #4] + ldr r0, _0224353C ; =0x45800000 + add r1, r4, #0 + bl _fmul + bl _ffix + str r0, [sp, #8] + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0 + bl FUN_02020064 + ldr r0, _02243524 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, r6, #0 + bl FUN_02020184 +_02243512: + ldr r0, _02243524 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02243524: .word 0x022513A0 +_02243528: .word 0x00000B3B +_0224352C: .word 0x022513A0 +_02243530: .word MOD18_02241AB4 +_02243534: .word 0x00000B3A +_02243538: .word 0x00000628 +_0224353C: .word 0x45800000 + thumb_func_end MOD18_022433C8 + + thumb_func_start MOD18_02243540 +MOD18_02243540: ; 0x02243540 + push {r4, lr} + sub sp, #0x10 + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _0224354E + b _02243780 +_0224354E: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224355A: ; jump table + .short _02243574 - _0224355A - 2 ; case 0 + .short _0224358C - _0224355A - 2 ; case 1 + .short _022435D8 - _0224355A - 2 ; case 2 + .short _0224360E - _0224355A - 2 ; case 3 + .short _0224365A - _0224355A - 2 ; case 4 + .short _02243698 - _0224355A - 2 ; case 5 + .short _022436A8 - _0224355A - 2 ; case 6 + .short _022436D6 - _0224355A - 2 ; case 7 + .short _0224372C - _0224355A - 2 ; case 8 + .short _02243738 - _0224355A - 2 ; case 9 + .short _02243780 - _0224355A - 2 ; case 10 + .short _02243748 - _0224355A - 2 ; case 11 + .short _0224376C - _0224355A - 2 ; case 12 +_02243574: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0x24] + bl MOD18_022417B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224358C: + mov r0, #1 + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _02243784 ; =0x022513A0 + ldr r1, _02243788 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1f + bne _022435AA + mov r2, #0x16 + b _022435AC +_022435AA: + mov r2, #0x19 +_022435AC: + mov r3, #0 + str r3, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x17 + lsl r1, r1, #4 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_02008F34 + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x19 + lsl r1, r1, #4 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022435D8: + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #7 + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, _02243784 ; =0x022513A0 + mov r2, #0x13 + ldr r1, [r0, #4] + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0x32 + bl FUN_02008FEC + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x65 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224360E: + mov r0, #1 + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + ldr r0, _02243784 ; =0x022513A0 + ldr r1, _02243788 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1f + bne _0224362C + mov r2, #0x15 + b _0224362E +_0224362C: + mov r2, #0x18 +_0224362E: + mov r3, #0 + str r3, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5e + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x66 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0224365A: + ldr r0, _02243784 ; =0x022513A0 + ldr r1, _02243788 ; =0x00000B3B + ldr r0, [r0, #4] + ldrb r1, [r0, r1] + cmp r1, #0x1f + bne _0224366A + mov r2, #0x14 + b _0224366C +_0224366A: + mov r2, #0x17 +_0224366C: + mov r3, #0 + str r3, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x5f + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #0x32 + bl FUN_020090AC + ldr r1, _02243784 ; =0x022513A0 + add sp, #0x10 + ldr r2, [r1, #4] + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r2, r1] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_02243698: + add r0, r4, #0 + bl MOD18_022432B4 + ldr r0, [r4] + add sp, #0x10 + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_022436A8: + ldr r0, [r4, #0x24] + add r0, r0, #1 + str r0, [r4, #0x24] + cmp r0, #0x1e + ble _02243780 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4c + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r1, #3 + ldr r0, _0224378C ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + mov r0, #7 + str r0, [r4] + mov r0, #0 + add sp, #0x10 + str r0, [r4, #0x2c] + pop {r4, pc} +_022436D6: + mov r0, #7 + str r0, [sp] + ldr r0, _02243790 ; =0x04000050 + mov r1, #0x10 + mov r2, #1 + mov r3, #0xe + bl G2x_SetBlendAlpha_ + ldr r0, _02243784 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022433C8 + cmp r0, #0 + beq _02243712 + add r0, r4, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #0 + beq _02243708 + mov r0, #0xb + str r0, [r4] + b _02243712 +_02243708: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02243712: + ldr r0, [r4, #0x2c] + cmp r0, #0x3c + bge _02243780 + add r0, r0, #1 + str r0, [r4, #0x2c] + cmp r0, #0x3c + bne _02243780 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_0224372C: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x10 + pop {r4, pc} +_02243738: + bl FUN_02031190 + add r4, #0x2a + ldrb r1, [r4] + bl MOD18_02243818 + add sp, #0x10 + pop {r4, pc} +_02243748: + mov r0, #0x10 + bl FUN_0204F774 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #0xc + add sp, #0x10 + str r0, [r4] + pop {r4, pc} +_0224376C: + ldr r0, [r4, #0x24] + add r0, r0, #1 + str r0, [r4, #0x24] + cmp r0, #8 + ble _02243780 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_02243780: + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_02243784: .word 0x022513A0 +_02243788: .word 0x00000B3B +_0224378C: .word 0x0400006C +_02243790: .word 0x04000050 + thumb_func_end MOD18_02243540 + + thumb_func_start MOD18_02243794 +MOD18_02243794: ; 0x02243794 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #4 + mov r1, #0x30 + add r6, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x30 + bl MI_CpuFill8 + add r0, r4, #0 + add r0, #0x2a + strb r5, [r0] + add r0, r4, #0 + add r0, #0x29 + strb r6, [r0] + ldr r0, _022437D8 ; =0x022513A0 + mov r2, #0x64 + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022437DC ; =MOD18_02243540 + add r1, r4, #0 + bl FUN_0200CA44 + ldr r1, _022437D8 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_022437D8: .word 0x022513A0 +_022437DC: .word MOD18_02243540 + thumb_func_end MOD18_02243794 + + thumb_func_start MOD18_022437E0 +MOD18_022437E0: ; 0x022437E0 + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02243806 + ldr r0, _02243808 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02243794 +_02243806: + pop {r4, r5, r6, pc} + .align 2, 0 +_02243808: .word 0x022513A0 + thumb_func_end MOD18_022437E0 + + thumb_func_start MOD18_0224380C +MOD18_0224380C: ; 0x0224380C + ldr r3, _02243814 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_02243814: .word 0x0204E759 + thumb_func_end MOD18_0224380C + + thumb_func_start MOD18_02243818 +MOD18_02243818: ; 0x02243818 + push {r4, lr} + ldr r0, _0224388C ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _02243888 + add r0, r4, #0 + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #0 + beq _02243840 + cmp r1, #0 + beq _02243840 + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + bl MOD18_0223FD8C +_02243840: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02243890 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + mov r0, #1 + bl MOD18_02241800 + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _0224388C ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _0224388C ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02243888: + pop {r4, pc} + nop +_0224388C: .word 0x022513A0 +_02243890: .word 0x04000050 + thumb_func_end MOD18_02243818 + + thumb_func_start MOD18_02243894 +MOD18_02243894: ; 0x02243894 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + ldr r1, [r4] + cmp r1, #0xc + bhi _022439A0 + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022438AC: ; jump table + .short _022438C6 - _022438AC - 2 ; case 0 + .short _022438DA - _022438AC - 2 ; case 1 + .short _022438F2 - _022438AC - 2 ; case 2 + .short _022438FA - _022438AC - 2 ; case 3 + .short _02243912 - _022438AC - 2 ; case 4 + .short _0224391A - _022438AC - 2 ; case 5 + .short _02243922 - _022438AC - 2 ; case 6 + .short _02243946 - _022438AC - 2 ; case 7 + .short _022439A0 - _022438AC - 2 ; case 8 + .short _02243962 - _022438AC - 2 ; case 9 + .short _022439A0 - _022438AC - 2 ; case 10 + .short _02243970 - _022438AC - 2 ; case 11 + .short _0224398C - _022438AC - 2 ; case 12 +_022438C6: + bl MOD18_022400A0 + str r0, [r4, #4] + mov r0, #0 + str r0, [r4, #0xc] + ldr r0, [r4] + add sp, #4 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022438DA: + mov r0, #1 + str r0, [sp] + mov r1, #0xa + mov r2, #0 + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #4 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_022438F2: + add r0, r1, #1 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_022438FA: + mov r0, #1 + str r0, [sp] + mov r1, #0 + mov r2, #0xa + add r3, r0, #0 + bl FUN_0200A208 + ldr r0, [r4] + add sp, #4 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, pc} +_02243912: + add r0, r1, #1 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_0224391A: + add r0, r1, #1 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243922: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0x1e + ble _022439A0 + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r1, #3 + ldr r0, _022439A4 ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + mov r0, #7 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243946: + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _02243954 + mov r0, #0xb + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243954: + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_02243962: + bl FUN_02031190 + ldrb r1, [r4, #0x11] + bl MOD18_02243A24 + add sp, #4 + pop {r3, r4, pc} +_02243970: + mov r0, #0x10 + bl FUN_0204F774 + mov r0, #0 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x10] + bl MOD18_0223FD8C + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #0xc + add sp, #4 + str r0, [r4] + pop {r3, r4, pc} +_0224398C: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #8 + ble _022439A0 + mov r0, #0x29 + bl FUN_020311DC + mov r0, #8 + str r0, [r4] +_022439A0: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_022439A4: .word 0x0400006C + thumb_func_end MOD18_02243894 + + thumb_func_start MOD18_022439A8 +MOD18_022439A8: ; 0x022439A8 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r0, #4 + mov r1, #0x14 + add r6, r2, #0 + bl FUN_020169D8 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x14 + bl MI_CpuFill8 + strb r5, [r4, #0x11] + ldr r0, _022439E4 ; =0x022513A0 + strb r6, [r4, #0x10] + ldr r1, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + str r4, [r1, r0] + ldr r0, _022439E8 ; =MOD18_02243894 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _022439E4 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0xa3 + lsl r1, r1, #2 + str r0, [r2, r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_022439E4: .word 0x022513A0 +_022439E8: .word MOD18_02243894 + thumb_func_end MOD18_022439A8 + + thumb_func_start MOD18_022439EC +MOD18_022439EC: ; 0x022439EC + push {r4, r5, r6, lr} + add r4, r1, #0 + mov r1, #2 + add r5, r0, #0 + add r6, r2, #0 + bl FUN_0204E758 + bl FUN_02031190 + cmp r5, r0 + bne _02243A12 + ldr r0, _02243A14 ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + add r2, r6, #0 + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_022439A8 +_02243A12: + pop {r4, r5, r6, pc} + .align 2, 0 +_02243A14: .word 0x022513A0 + thumb_func_end MOD18_022439EC + + thumb_func_start MOD18_02243A18 +MOD18_02243A18: ; 0x02243A18 + ldr r3, _02243A20 ; =0x0204E759 + mov r1, #2 + bx r3 + nop +_02243A20: .word 0x0204E759 + thumb_func_end MOD18_02243A18 + + thumb_func_start MOD18_02243A24 +MOD18_02243A24: ; 0x02243A24 + push {r4, lr} + ldr r0, _02243A88 ; =0x022513A0 + ldr r2, [r0, #4] + mov r0, #0xa7 + lsl r0, r0, #2 + ldr r4, [r2, r0] + cmp r4, #0 + beq _02243A86 + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _02243A44 + cmp r1, #0 + beq _02243A44 + ldrb r0, [r4, #0x10] + bl MOD18_0223FD8C +_02243A44: + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + ldr r0, _02243A8C ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + mov r0, #0x10 + bl FUN_0204F774 + ldr r0, _02243A88 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0xa3 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + ldr r1, _02243A88 ; =0x022513A0 + mov r0, #0xa3 + ldr r2, [r1, #4] + mov r3, #0 + lsl r0, r0, #2 + str r3, [r2, r0] + ldr r1, [r1, #4] + add r0, #0x10 + str r3, [r1, r0] +_02243A86: + pop {r4, pc} + .align 2, 0 +_02243A88: .word 0x022513A0 +_02243A8C: .word 0x04000050 + thumb_func_end MOD18_02243A24 + + thumb_func_start MOD18_02243A90 +MOD18_02243A90: ; 0x02243A90 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r0, [r1, #0x28] + str r1, [sp, #0x10] + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + add r0, r1, #0 + ldr r0, [r0, #0x2c] + lsl r0, r0, #0xc + str r0, [sp, #0x20] + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x1c + bl FUN_02020044 + ldr r0, [sp, #0x10] + mov r1, #0xa + ldr r0, [r0, #0x30] + lsl r0, r0, #0xc + bl _s32_div_f + str r0, [sp, #0x1c] + str r0, [sp, #0x24] + str r0, [sp, #0x20] + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x1c + bl FUN_02020064 + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020398 + mov r1, #0x10 + ldr r3, [sp, #0x10] + str r1, [sp] + ldr r4, [r3, #0x30] + ldr r0, _02243BC0 ; =0x04000050 + lsr r3, r4, #0x1f + add r3, r4, r3 + asr r3, r3, #1 + mov r2, #1 + sub r3, r1, r3 + bl G2x_SetBlendAlpha_ + mov r0, #0 + ldr r7, [sp, #0x10] + str r0, [sp, #0xc] + str r0, [sp, #8] +_02243B06: + ldr r0, [r7, #0x14] + mov r4, #0 + cmp r0, #0 + ble _02243B86 + ldr r0, [sp, #8] + add r5, r4, #0 + lsl r0, r0, #2 + str r0, [sp, #4] +_02243B16: + ldr r0, [r7, #8] + ldrb r6, [r0, r4] + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x20] + lsr r2, r6, #0x1f + lsl r1, r6, #0x1c + sub r3, r0, #6 + sub r1, r1, r2 + mov r0, #0x1c + ror r1, r0 + add r0, r2, r1 + add r0, r3, r0 + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, [sp, #0x10] + add r2, sp, #0x14 + ldr r0, [r0, #0x24] + sub r1, r0, #6 + lsr r0, r6, #4 + add r0, r1, r0 + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x24] + add r0, sp, #0x1c + add r1, sp, #0x18 + bl FUN_020BB408 + ldr r0, [sp, #0x18] + lsl r0, r0, #0xc + str r0, [sp, #0x1c] + ldr r0, [sp, #0x14] + lsl r0, r0, #0xc + str r0, [sp, #0x20] + ldr r0, _02243BBC ; =0x022513A0 + ldr r1, [r0, #4] + ldr r0, [sp, #4] + add r0, r0, r1 + add r1, r5, r0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r1, r0] + add r1, sp, #0x1c + bl FUN_02020044 + ldr r0, [r7, #0x14] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r0 + blt _02243B16 +_02243B86: + ldr r0, [sp, #8] + add r7, r7, #4 + add r0, #8 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r0, r0, #1 + str r0, [sp, #0xc] + cmp r0, #3 + blt _02243B06 + ldr r0, [sp, #0x10] + ldr r0, [r0, #0x30] + add r1, r0, #1 + ldr r0, [sp, #0x10] + cmp r1, #0x14 + str r1, [r0, #0x30] + ble _02243BAC + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02243BAC: + ldr r0, _02243BBC ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243BBC: .word 0x022513A0 +_02243BC0: .word 0x04000050 + thumb_func_end MOD18_02243A90 + + thumb_func_start MOD18_02243BC4 +MOD18_02243BC4: ; 0x02243BC4 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + ldr r0, _02243CFC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009B78 + ldr r0, _02243CFC ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009D68 + ldr r0, _02243CFC ; =0x022513A0 + mov r1, #0 + ldr r0, [r0, #4] + mov r3, #6 + str r1, [sp] + sub r2, r1, #1 + str r2, [sp, #4] + str r2, [sp, #8] + str r1, [sp, #0xc] + str r1, [sp, #0x10] + lsl r3, r3, #6 + ldr r2, [r0, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r0, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r0, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r0, r2] + add r3, #0x54 + str r2, [sp, #0x20] + str r1, [sp, #0x24] + add r0, r0, r3 + add r2, r1, #0 + add r3, r1, #0 + str r1, [sp, #0x28] + bl FUN_02008AA4 + ldr r6, _02243CFC ; =0x022513A0 + mov r4, #0 + ldr r1, [r6, #4] + mov r7, #0x4b + ldr r0, [r1, #0x44] + add r5, r4, #0 + str r0, [sp, #0x2c] + mov r0, #0x75 + lsl r0, r0, #2 + add r0, r1, r0 + str r0, [sp, #0x30] + mov r1, #2 + mov r0, #6 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + lsr r0, r1, #5 + str r1, [sp, #0x34] + str r4, [sp, #0x3c] + str r0, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + add r0, sp, #0x2c + strh r4, [r0, #0x20] + mov r0, #1 + str r0, [sp, #0x54] + mov r0, #4 + str r4, [sp, #0x50] + str r0, [sp, #0x58] + lsl r7, r7, #0xe +_02243C60: + add r0, sp, #0x2c + str r7, [sp, #0x34] + str r7, [sp, #0x38] + bl FUN_0201FE94 + ldr r1, [r6, #4] + add r2, r1, r5 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r2, r1] + cmp r4, #0 + bne _02243C9A + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_020200EC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020130 + b _02243CBE +_02243C9A: + cmp r4, #9 + ldr r0, [r6, #4] + bge _02243CB0 + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_02020130 + b _02243CBE +_02243CB0: + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #2 + bl FUN_02020130 +_02243CBE: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + bl FUN_02020208 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0x19 + blt _02243C60 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + nop +_02243CFC: .word 0x022513A0 + thumb_func_end MOD18_02243BC4 + + thumb_func_start MOD18_02243D00 +MOD18_02243D00: ; 0x02243D00 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7] + cmp r0, #9 + bhi _02243E06 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243D18: ; jump table + .short _02243D2C - _02243D18 - 2 ; case 0 + .short _02243E06 - _02243D18 - 2 ; case 1 + .short _02243E06 - _02243D18 - 2 ; case 2 + .short _02243E06 - _02243D18 - 2 ; case 3 + .short _02243E06 - _02243D18 - 2 ; case 4 + .short _02243D68 - _02243D18 - 2 ; case 5 + .short _02243E06 - _02243D18 - 2 ; case 6 + .short _02243D74 - _02243D18 - 2 ; case 7 + .short _02243E06 - _02243D18 - 2 ; case 8 + .short _02243D8A - _02243D18 - 2 ; case 9 +_02243D2C: + mov r1, #3 + ldr r0, _02243E08 ; =0x0400006C + mvn r1, r1 + bl GXx_SetMasterBrightness_ + bl FUN_0204F7E4 + ldr r0, _02243E0C ; =0x00000621 + bl FUN_020054C8 + ldr r1, _02243E10 ; =0x022513A0 + mov r0, #0x20 + ldr r1, [r1, #4] + mov r2, #4 + add r1, #0x48 + bl FUN_02008C9C + ldr r1, _02243E10 ; =0x022513A0 + ldr r2, [r1, #4] + str r0, [r2, #0x44] + ldr r0, [r1, #4] + mov r2, #6 + add r0, #0x48 + mov r1, #0 + lsl r2, r2, #0x12 + bl FUN_02008D24 + mov r0, #5 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_02243D68: + add r0, r7, #0 + bl MOD18_02243BC4 + mov r0, #7 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_02243D74: + ldr r0, _02243E10 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + ldr r0, [r0, #8] + bl MOD18_02243A90 + cmp r0, #0 + beq _02243E06 + mov r0, #9 + str r0, [r7] + pop {r3, r4, r5, r6, r7, pc} +_02243D8A: + ldr r0, _02243E14 ; =0x04000050 + mov r1, #0 + strh r1, [r0] + add r0, #0x1c + bl GXx_SetMasterBrightness_ + ldr r0, _02243E10 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r1, r0] + bl FUN_02009C0C + ldr r0, _02243E10 ; =0x022513A0 + ldr r1, [r0, #4] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r1, r0] + bl FUN_02009E04 + mov r4, #0 + ldr r6, _02243E10 ; =0x022513A0 + add r5, r4, #0 +_02243DB8: + ldr r0, [r6, #4] + add r1, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02243DCA + bl FUN_0201FFC8 +_02243DCA: + ldr r0, [r6, #4] + mov r1, #0 + add r2, r0, r5 + mov r0, #0x7e + lsl r0, r0, #2 + add r4, r4, #1 + add r5, r5, #4 + str r1, [r2, r0] + cmp r4, #0x19 + blt _02243DB8 + ldr r0, _02243E10 ; =0x022513A0 + ldr r0, [r0, #4] + ldr r0, [r0, #0x44] + bl FUN_0201FD58 + ldr r0, [sp] + bl FUN_0200CAB4 + add r0, r7, #0 + bl FUN_02016A18 + ldr r0, _02243E10 ; =0x022513A0 + mov r2, #0 + ldr r1, [r0, #4] + mov r0, #0x29 + lsl r0, r0, #4 + str r2, [r1, r0] + mov r0, #0x80 + bl FUN_0204F774 +_02243E06: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243E08: .word 0x0400006C +_02243E0C: .word 0x00000621 +_02243E10: .word 0x022513A0 +_02243E14: .word 0x04000050 + thumb_func_end MOD18_02243D00 + + thumb_func_start MOD18_02243E18 +MOD18_02243E18: ; 0x02243E18 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02243E84 ; =0x022513A0 + add r5, r1, #0 + ldr r1, [r0, #4] + mov r0, #0x29 + lsl r0, r0, #4 + ldr r0, [r1, r0] + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + bne _02243E82 + mov r0, #4 + mov r1, #0x34 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x34 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + str r0, [r4, #0x30] + str r5, [r4, #0x20] + str r6, [r4, #0x24] + ldr r0, [sp, #0x18] + str r7, [r4, #0x28] + str r0, [r4, #0x2c] + ldr r0, [sp, #0x1c] + add r1, r4, #0 + str r0, [r4, #8] + ldr r0, [sp, #0x24] + mov r2, #0x64 + str r0, [r4, #0xc] + ldr r0, [sp, #0x2c] + str r0, [r4, #0x10] + ldr r0, [sp, #0x20] + str r0, [r4, #0x14] + ldr r0, [sp, #0x28] + str r0, [r4, #0x18] + ldr r0, [sp, #0x30] + str r0, [r4, #0x1c] + ldr r0, _02243E88 ; =MOD18_02243D00 + bl FUN_0200CA44 + ldr r1, _02243E84 ; =0x022513A0 + ldr r2, [r1, #4] + mov r1, #0x29 + lsl r1, r1, #4 + str r0, [r2, r1] + mov r0, #0x80 + bl FUN_0204F74C +_02243E82: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243E84: .word 0x022513A0 +_02243E88: .word MOD18_02243D00 + thumb_func_end MOD18_02243E18 + + thumb_func_start MOD18_02243E8C +MOD18_02243E8C: ; 0x02243E8C + push {r4, r5, r6, lr} + add r4, r1, #0 + ldr r1, _02243F58 ; =0x022513A0 + add r6, r0, #0 + ldr r1, [r1, #4] + cmp r1, #0 + bne _02243EA6 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} +_02243EA6: + ldr r5, [r4, #8] + add r0, r5, #0 + bl FUN_0204F72C + add r1, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _02243EBE + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + bne _02243EE2 +_02243EBE: + ldr r2, _02243F58 ; =0x022513A0 + lsl r1, r5, #2 + ldr r3, [r2, #4] + mov r0, #0 + str r0, [r3, r1] + ldr r2, [r2, #4] + add r1, r2, r1 + str r0, [r1, #0x20] + add r0, r6, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0204E254 + pop {r4, r5, r6, pc} +_02243EE2: + ldr r0, [r4, #0xc] + cmp r0, #0xe + bhi _02243F14 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243EF4: ; jump table + .short _02243F14 - _02243EF4 - 2 ; case 0 + .short _02243F12 - _02243EF4 - 2 ; case 1 + .short _02243F12 - _02243EF4 - 2 ; case 2 + .short _02243F12 - _02243EF4 - 2 ; case 3 + .short _02243F12 - _02243EF4 - 2 ; case 4 + .short _02243F12 - _02243EF4 - 2 ; case 5 + .short _02243F12 - _02243EF4 - 2 ; case 6 + .short _02243F12 - _02243EF4 - 2 ; case 7 + .short _02243F12 - _02243EF4 - 2 ; case 8 + .short _02243F14 - _02243EF4 - 2 ; case 9 + .short _02243F14 - _02243EF4 - 2 ; case 10 + .short _02243F14 - _02243EF4 - 2 ; case 11 + .short _02243F14 - _02243EF4 - 2 ; case 12 + .short _02243F12 - _02243EF4 - 2 ; case 13 + .short _02243F12 - _02243EF4 - 2 ; case 14 +_02243F12: + pop {r4, r5, r6, pc} +_02243F14: + ldr r0, [r4, #4] + add r0, r0, #1 + lsr r3, r0, #0x1f + lsl r2, r0, #0x1d + str r0, [r4, #4] + sub r2, r2, r3 + mov r0, #0x1d + ror r2, r0 + add r0, r3, r2 + bne _02243F54 + cmp r1, #3 + bhi _02243F4E + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243F38: ; jump table + .short _02243F40 - _02243F38 - 2 ; case 0 + .short _02243F44 - _02243F38 - 2 ; case 1 + .short _02243F48 - _02243F38 - 2 ; case 2 + .short _02243F4C - _02243F38 - 2 ; case 3 +_02243F40: + mov r1, #3 + b _02243F4E +_02243F44: + mov r1, #2 + b _02243F4E +_02243F48: + mov r1, #0 + b _02243F4E +_02243F4C: + mov r1, #1 +_02243F4E: + add r0, r5, #0 + bl FUN_0204F70C +_02243F54: + pop {r4, r5, r6, pc} + nop +_02243F58: .word 0x022513A0 + thumb_func_end MOD18_02243E8C + + thumb_func_start MOD18_02243F5C +MOD18_02243F5C: ; 0x02243F5C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _02243FAC ; =0x022513A0 + add r7, r1, #0 + ldr r1, [r0, #4] + cmp r1, #0 + beq _02243FA8 + ldr r0, _02243FB0 ; =0x00000B46 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _02243FA8 + lsl r5, r6, #2 + ldr r4, [r1, r5] + cmp r4, #0 + bne _02243FA4 + mov r0, #4 + mov r1, #0x10 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x10 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02243FAC ; =0x022513A0 + add r1, r4, #0 + ldr r0, [r0, #4] + mov r2, #0x64 + str r4, [r0, r5] + ldr r0, _02243FB4 ; =MOD18_02243E8C + bl FUN_0200CA44 + ldr r1, _02243FAC ; =0x022513A0 + ldr r1, [r1, #4] + add r1, r1, r5 + str r0, [r1, #0x20] +_02243FA4: + str r6, [r4, #8] + str r7, [r4, #0xc] +_02243FA8: + pop {r3, r4, r5, r6, r7, pc} + nop +_02243FAC: .word 0x022513A0 +_02243FB0: .word 0x00000B46 +_02243FB4: .word MOD18_02243E8C + thumb_func_end MOD18_02243F5C + + thumb_func_start MOD18_02243FB8 +MOD18_02243FB8: ; 0x02243FB8 + push {r3, r4, r5, lr} + ldr r1, _02243FEC ; =0x022513A0 + add r5, r0, #0 + ldr r1, [r1, #4] + lsl r4, r5, #2 + ldr r1, [r1, r4] + cmp r1, #0 + beq _02243FE8 + bl FUN_0204F0A8 + ldr r0, _02243FEC ; =0x022513A0 + mov r2, #1 + ldr r1, [r0, #4] + ldr r1, [r1, r4] + str r2, [r1] + ldr r1, [r0, #4] + mov r2, #0 + str r2, [r1, r4] + ldr r0, [r0, #4] + add r0, r0, r4 + str r2, [r0, #0x20] + add r0, r5, #0 + bl FUN_0204E254 +_02243FE8: + pop {r3, r4, r5, pc} + nop +_02243FEC: .word 0x022513A0 + thumb_func_end MOD18_02243FB8 + + thumb_func_start MOD18_02243FF0 +MOD18_02243FF0: ; 0x02243FF0 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + ldr r4, _02244024 ; =0x022513A0 + add r5, r6, #0 + add r7, r6, #0 +_02243FFA: + ldr r0, [r4, #4] + add r0, r0, r5 + ldr r0, [r0, #0x20] + cmp r0, #0 + beq _0224401A + bl FUN_0200CAB4 + ldr r0, [r4, #4] + ldr r0, [r0, r5] + bl FUN_02016A18 + ldr r0, [r4, #4] + add r0, r0, r5 + str r7, [r0, #0x20] + ldr r0, [r4, #4] + str r7, [r0, r5] +_0224401A: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _02243FFA + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244024: .word 0x022513A0 + thumb_func_end MOD18_02243FF0 + + thumb_func_start MOD18_02244028 +MOD18_02244028: ; 0x02244028 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r1, [sp] + add r5, r0, #0 + str r2, [sp, #4] + add r0, r3, #0 + mov r1, #0x24 + str r3, [sp, #8] + bl FUN_02016998 + str r0, [sp, #0xc] + mov r1, #0 + mov r2, #0x24 + bl MI_CpuFill8 + ldr r1, [sp, #0x28] + ldr r0, [sp, #0xc] + cmp r1, #0 + str r1, [r0] + beq _0224409E + ldr r1, [sp, #0x2c] + str r1, [r0, #4] + ldr r1, [sp, #0x30] + strb r1, [r0, #0x1e] + ldr r0, [sp, #8] + bl FUN_02013690 + ldr r1, [sp, #0xc] + str r0, [r1, #0x10] + ldr r1, _022440C0 ; =0x0008090F + bl FUN_020136E0 + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + strb r1, [r0, #0x1d] + ldr r1, [sp, #0xc] + ldrh r0, [r5, #0x10] + ldrb r1, [r1, #0x1d] + bl FUN_02012838 + add r7, r0, #0 + ldrh r0, [r5, #0x10] + mov r6, #0 + cmp r0, #0 + ble _02244098 + add r4, r6, #0 +_02244084: + ldr r1, [r5] + add r0, r7, #0 + add r1, r1, r4 + bl FUN_020128C4 + ldrh r0, [r5, #0x10] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02244084 +_02244098: + ldr r0, [sp, #0xc] + str r7, [r5] + str r7, [r0, #8] +_0224409E: + ldr r1, [sp] + ldr r0, [sp, #4] + add r1, r1, r0 + ldr r0, [sp, #0xc] + strh r1, [r0, #0x20] + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r5, #0 + bl FUN_020010A8 + ldr r1, [sp, #0xc] + str r0, [r1, #0xc] + add r0, r1, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022440C0: .word 0x0008090F + thumb_func_end MOD18_02244028 + + thumb_func_start MOD18_022440C4 +MOD18_022440C4: ; 0x022440C4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r2, #0 + add r5, r0, #0 + add r7, r1, #0 + ldrh r1, [r4, #0x14] + ldrh r0, [r4, #0x16] + add r0, r1, r0 + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [r4, #0xc] + mov r1, #3 + bl FUN_02001470 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldrh r0, [r4, #0x18] + cmp r0, r5 + bne _022440F0 + ldrh r0, [r4, #0x1a] + cmp r0, r7 + beq _0224413A +_022440F0: + strh r5, [r4, #0x18] + add r0, r5, r1 + strh r7, [r4, #0x1a] + cmp r0, r6 + blt _0224413A + cmp r5, r6 + bhi _0224413A + ldr r0, [r4, #0xc] + mov r1, #7 + bl FUN_02001470 + str r0, [sp] + ldr r0, [r4, #0xc] + mov r1, #9 + bl FUN_02001470 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [r4, #0xc] + mov r1, #8 + bl FUN_02001470 + str r0, [sp, #4] + sub r0, r6, r5 + add r5, r7, #0 + mul r5, r0 + ldr r0, [r4, #0xc] + mov r1, #0x12 + bl FUN_02001470 + ldr r3, [sp, #4] + add r1, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [sp] + add r3, r5, r3 + bl FUN_020136F8 +_0224413A: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_022440C4 + + thumb_func_start MOD18_02244140 +MOD18_02244140: ; 0x02244140 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0xc] + str r0, [sp, #4] + ldr r0, [r5] + cmp r0, #0 + beq _0224418A + ldr r0, [sp, #4] + mov r1, #2 + bl FUN_02001470 + add r7, r0, #0 + add r1, sp, #0xc + ldr r0, [sp, #4] + add r1, #2 + add r2, sp, #0xc + bl FUN_02001448 + ldrb r0, [r5, #0x1c] + cmp r0, #0 + bne _0224416E + b _0224428C +_0224416E: + add r1, sp, #0xc + ldrh r0, [r1, #2] + ldrh r1, [r1] + add r2, r5, #0 + bl MOD18_022440C4 + ldr r0, _02244310 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0224418C + mov r0, #4 + tst r0, r1 + bne _0224418C +_0224418A: + b _022442CA +_0224418C: + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 + add r0, sp, #0xc + ldrh r1, [r0, #2] + ldrh r0, [r0] + add r2, r1, r0 + sub r0, r7, #1 + cmp r0, r2 + bne _022441A8 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022441A8: + ldrh r1, [r5, #0x14] + ldrh r0, [r5, #0x16] + add r1, r1, r0 + cmp r2, r1 + bne _022441BA + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022441BA: + ldr r0, [r5, #4] + ldr r3, [r5] + blx r3 + ldrb r1, [r5, #0x1d] + add r0, r7, #0 + bl FUN_02012838 + mov r4, #0 + add r6, r4, #0 + str r0, [sp] + cmp r7, #0 + ble _02244210 +_022441D2: + ldrh r1, [r5, #0x14] + ldrh r0, [r5, #0x16] + add r0, r1, r0 + cmp r6, r0 + bne _022441DE + b _022441EA +_022441DE: + ldr r2, [r5, #8] + lsl r1, r4, #3 + ldr r0, [sp] + add r1, r2, r1 + bl FUN_020128C4 +_022441EA: + add r0, sp, #0xc + ldrh r1, [r0, #2] + ldrh r0, [r0] + add r4, r4, #1 + add r0, r1, r0 + cmp r6, r0 + bne _0224420A + ldrh r2, [r5, #0x14] + ldrh r1, [r5, #0x16] + ldr r3, [r5, #8] + ldr r0, [sp] + add r1, r2, r1 + lsl r1, r1, #3 + add r1, r3, r1 + bl FUN_020128C4 +_0224420A: + add r6, r6, #1 + cmp r6, r7 + blt _022441D2 +_02244210: + ldrb r0, [r5, #0x1e] + cmp r0, #0 + beq _02244254 + sub r0, r7, #1 + mov r4, #0 + str r0, [sp, #8] + cmp r0, #0 + ble _02244246 + ldr r6, [sp] + add r7, r4, #0 +_02244224: + ldr r0, [r5, #4] + add r1, r4, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _02244234 + mov r0, #1 + b _02244236 +_02244234: + mov r0, #0 +_02244236: + add r0, r7, r0 + str r0, [r6, #4] + ldr r0, [sp, #8] + add r4, r4, #1 + add r7, r7, #2 + add r6, #8 + cmp r4, r0 + blt _02244224 +_02244246: + lsl r0, r4, #1 + add r2, r0, #1 + ldr r0, [sp] + lsl r1, r4, #3 + add r0, r0, r1 + str r2, [r0, #4] + b _02244268 +_02244254: + sub r0, r7, #1 + mov r2, #0 + cmp r0, #0 + ble _02244268 + ldr r1, [sp] +_0224425E: + str r2, [r1, #4] + add r2, r2, #1 + add r1, #8 + cmp r2, r0 + blt _0224425E +_02244268: + ldr r0, [r5, #8] + bl FUN_02016A18 + ldr r0, [sp] + ldr r1, [sp] + str r0, [r5, #8] + ldr r0, [sp, #4] + bl FUN_02001658 + mov r0, #0 + strb r0, [r5, #0x1c] + ldr r0, [sp, #4] + bl FUN_02001328 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224428C: + ldr r0, _02244310 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #4 + tst r0, r1 + beq _022442CA + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 + add r0, sp, #0xc + ldrh r3, [r0, #2] + ldrh r1, [r0] + sub r2, r7, #1 + add r1, r3, r1 + cmp r2, r1 + bne _022442B2 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_022442B2: + strh r3, [r5, #0x14] + ldrh r1, [r0] + add sp, #0x10 + strh r1, [r5, #0x16] + ldrh r1, [r0, #2] + strh r1, [r5, #0x18] + ldrh r0, [r0] + strh r0, [r5, #0x1a] + mov r0, #1 + strb r0, [r5, #0x1c] + sub r0, r0, #2 + pop {r3, r4, r5, r6, r7, pc} +_022442CA: + ldr r0, [sp, #4] + bl FUN_02001204 + add r4, r0, #0 + add r1, r5, #0 + ldr r0, [sp, #4] + add r1, #0x20 + ldrh r6, [r5, #0x20] + bl FUN_0200143C + ldrh r0, [r5, #0x20] + cmp r6, r0 + beq _022442EA + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 +_022442EA: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _022442FA + add r0, r0, #1 + cmp r4, r0 + beq _02244308 + b _02244302 +_022442FA: + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 + b _02244308 +_02244302: + ldr r0, _02244314 ; =0x000005DC + bl FUN_020054C8 +_02244308: + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244310: .word 0x021C48B8 +_02244314: .word 0x000005DC + thumb_func_end MOD18_02244140 + + thumb_func_start MOD18_02244318 +MOD18_02244318: ; 0x02244318 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02001300 + ldr r0, [r4] + cmp r0, #0 + beq _02244334 + ldr r0, [r4, #0x10] + bl FUN_020136C0 + ldr r0, [r4, #8] + bl FUN_02016A18 +_02244334: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD18_02244318 + + thumb_func_start MOD18_0224433C +MOD18_0224433C: ; 0x0224433C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x60 + add r4, r1, #0 + mov r1, #0x6e + lsl r1, r1, #2 + ldr r2, [r4, r1] + str r2, [sp, #0x2c] + ldr r2, _022445E8 ; =0x022513A8 + str r4, [r2] + ldr r2, [r4] + cmp r2, #8 + bls _02244356 + b _022445E4 +_02244356: + add r3, r2, r2 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_02244362: ; jump table + .short _02244374 - _02244362 - 2 ; case 0 + .short _0224439E - _02244362 - 2 ; case 1 + .short _022444A4 - _02244362 - 2 ; case 2 + .short _022444AC - _02244362 - 2 ; case 3 + .short _022444DE - _02244362 - 2 ; case 4 + .short _022444E6 - _02244362 - 2 ; case 5 + .short _02244550 - _02244362 - 2 ; case 6 + .short _0224456C - _02244362 - 2 ; case 7 + .short _022445D8 - _02244362 - 2 ; case 8 +_02244374: + mov r1, #0x39 + lsl r1, r1, #4 + ldr r0, [sp, #0x2c] + add r1, r4, r1 + bl MOD18_0224486C + add r1, r4, #0 + add r0, r4, #4 + add r1, #0x44 + bl MOD18_022445EC + mov r0, #0xeb + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD18_02244B28 + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224439E: + add r0, r4, #0 + bl MOD18_02244998 + mov r1, #0xfa + lsl r1, r1, #2 + mov r0, #0 + mov r3, #0xba + str r1, [sp] + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + lsl r3, r3, #2 + ldr r2, [r4, r3] + str r2, [sp, #0x14] + add r2, r3, #4 + ldr r2, [r4, r2] + str r2, [sp, #0x18] + add r2, r3, #0 + add r2, #8 + ldr r2, [r4, r2] + str r2, [sp, #0x1c] + add r2, r3, #0 + add r2, #0xc + ldr r2, [r4, r2] + add r3, #0x20 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r4, r3 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_02008AA4 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #2 + str r0, [sp, #0x30] + mov r0, #0xc2 + lsl r0, r0, #2 + add r0, r4, r0 + str r0, [sp, #0x34] + mov r0, #0x12 + lsl r1, r1, #0x10 + lsl r0, r0, #0x10 + str r0, [sp, #0x3c] + lsr r0, r1, #5 + mov r6, #0 + mov r7, #0xcb + str r1, [sp, #0x38] + str r6, [sp, #0x40] + str r0, [sp, #0x44] + str r0, [sp, #0x48] + str r0, [sp, #0x4c] + add r0, sp, #0x30 + strh r6, [r0, #0x20] + mov r0, #2 + str r0, [sp, #0x58] + mov r0, #4 + str r6, [sp, #0x54] + str r0, [sp, #0x5c] + add r5, r4, #0 + lsl r7, r7, #2 +_02244422: + add r0, sp, #0x30 + bl FUN_0201FE94 + mov r1, #0xcb + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + ldr r0, [r5, r7] + mov r1, #0 + bl FUN_020200A0 + cmp r6, #0 + bne _02244450 + mov r0, #0xcb + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_02020130 +_02244450: + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #8 + blt _02244422 + mov r7, #0xd3 + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_02244460: + add r0, sp, #0x30 + bl FUN_0201FE94 + mov r1, #0xd3 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + bl FUN_020200BC + mov r0, #0xd3 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r5, r7] + mov r1, #2 + bl FUN_02020130 + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #0x11 + blt _02244460 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E74C + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444A4: + add r0, r2, #1 + add sp, #0x60 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444AC: + mov r0, #8 + mov r1, #1 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_0201E74C + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E74C + mov r0, #4 + mov r1, #0 + bl FUN_02017FE4 + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444DE: + add r0, r2, #1 + add sp, #0x60 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022444E6: + sub r0, r1, #4 + ldr r0, [r4, r0] + add r2, r4, #0 + ldr r0, [r0, #0x38] + add r1, r4, #4 + add r2, #0x44 + bl MOD18_02244634 + mov r1, #0xcb + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0x44 + add r1, r4, r1 + bl MOD18_022446E8 + add r0, r4, #0 + add r0, #0xa4 + bl MOD18_02244754 + mov r1, #0xd3 + add r0, r4, #0 + lsl r1, r1, #2 + add r0, #0xa4 + add r1, r4, r1 + bl MOD18_0224479C + mov r3, #0xea + lsl r3, r3, #2 + add r0, r4, r3 + str r0, [sp] + add r0, r3, #4 + add r0, r4, r0 + str r0, [sp, #4] + mov r0, #0x6e + lsl r0, r0, #2 + add r1, r3, #0 + add r2, r3, #0 + sub r1, #0x18 + sub r2, #8 + sub r3, r3, #4 + ldr r0, [r4, r0] + add r1, r4, r1 + add r2, r4, r2 + add r3, r4, r3 + bl MOD18_02244A70 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FDEC + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} +_02244550: + mov r0, #0x3a + lsl r0, r0, #4 + ldr r0, [r4, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _022445E4 + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224456C: + mov r0, #0xbe + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02009C0C + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02009E04 + mov r7, #0xba + mov r6, #0 + add r5, r4, #0 + lsl r7, r7, #2 +_02244588: + ldr r0, [r5, r7] + bl FUN_02008E2C + add r6, r6, #1 + add r5, r5, #4 + cmp r6, #4 + blt _02244588 + mov r0, #0x6f + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201FD58 + mov r0, #0x39 + lsl r0, r0, #4 + add r0, r4, r0 + mov r1, #0 + bl FUN_0200D0E0 + mov r0, #0x39 + lsl r0, r0, #4 + add r0, r4, r0 + bl FUN_02019178 + ldr r0, [sp, #0x2c] + mov r1, #7 + bl FUN_020178A0 + ldr r0, [sp, #0x2c] + bl MOD18_02244858 + mov r0, #0xeb + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD18_02244B7C + ldr r0, [r4] + add sp, #0x60 + add r0, r0, #1 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_022445D8: + sub r1, r1, #4 + ldr r1, [r4, r1] + mov r2, #0 + str r2, [r1, #0x68] + bl FUN_0200621C +_022445E4: + add sp, #0x60 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022445E8: .word 0x022513A8 + thumb_func_end MOD18_0224433C + + thumb_func_start MOD18_022445EC +MOD18_022445EC: ; 0x022445EC + push {r3, r4, r5, r6, r7, lr} + ldr r4, _02244630 ; =0x022513AC + add r6, r0, #0 + add r5, r1, #0 + mov r7, #0 +_022445F6: + mov r0, #0 + str r0, [r6] + str r0, [r6, #4] + str r0, [r5] + str r0, [r5, #4] + str r0, [r5, #8] + bl FUN_0201B9EC + mov r1, #0x7d + lsl r1, r1, #2 + bl _s32_div_f + add r1, #0x32 + str r1, [r4] + bl FUN_0201B9EC + mov r1, #0x7d + lsl r1, r1, #2 + bl _s32_div_f + add r1, #0x32 + str r1, [r4, #4] + add r7, r7, #1 + add r6, #8 + add r5, #0xc + add r4, #8 + cmp r7, #8 + blt _022445F6 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244630: .word 0x022513AC + thumb_func_end MOD18_022445EC + + thumb_func_start MOD18_02244634 +MOD18_02244634: ; 0x02244634 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + str r0, [sp] + add r4, r2, #0 + mov r7, #0 + add r6, r5, #0 +_02244640: + add r0, r7, #0 + bl FUN_0204E3EC + str r0, [r6] + add r0, r7, #0 + bl FUN_0204E440 + str r0, [r6, #4] + add r7, r7, #1 + add r6, #8 + cmp r7, #8 + blt _02244640 + bl FUN_02030F40 + cmp r0, #0 + beq _022446AA + bl FUN_02031190 + bl FUN_02030E7C + cmp r0, #0 + bne _0224467E + ldr r0, [sp] + bl FUN_02055320 + str r0, [r5] + ldr r0, [sp] + bl FUN_0205532C + str r0, [r5, #4] + b _022446AA +_0224467E: + ldr r7, [r5] + ldr r6, [r5, #4] + bl FUN_02031190 + lsl r0, r0, #3 + ldr r0, [r5, r0] + str r0, [r5] + bl FUN_02031190 + lsl r0, r0, #3 + add r0, r5, r0 + ldr r0, [r0, #4] + str r0, [r5, #4] + bl FUN_02031190 + lsl r0, r0, #3 + str r7, [r5, r0] + bl FUN_02031190 + lsl r0, r0, #3 + add r0, r5, r0 + str r6, [r0, #4] +_022446AA: + mov r6, #0 + mov r7, #0x3c +_022446AE: + ldr r0, [r5] + ldr r1, [r5, #4] + bl MOD18_0223E2F4 + cmp r0, #0 + bne _022446CA + ldr r0, [r5] + sub r0, #0x20 + str r0, [r4] + ldr r0, [r5, #4] + sub r0, #0x40 + str r0, [r4, #4] + str r7, [r4, #8] + b _022446DA +_022446CA: + ldr r1, [r4, #8] + cmp r1, #0 + beq _022446DA + ldr r0, [r4] + cmp r0, #0 + blt _022446DA + sub r0, r1, #1 + str r0, [r4, #8] +_022446DA: + add r6, r6, #1 + add r5, #8 + add r4, #0xc + cmp r6, #8 + blt _022446AE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02244634 + + thumb_func_start MOD18_022446E8 +MOD18_022446E8: ; 0x022446E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r7, #1 + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + lsl r7, r7, #0xc +_022446F6: + ldr r0, [r5, #8] + cmp r0, #0 + beq _0224473C + ldr r1, [r5] + mov r0, #0x8a + mul r0, r1 + mov r1, #7 + lsl r1, r1, #6 + bl _s32_div_f + add r0, #0x3c + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x1a + lsl r0, r0, #7 + lsl r1, r1, #4 + bl _s32_div_f + add r0, #9 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r7, [sp, #8] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + b _02244744 +_0224473C: + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 +_02244744: + add r6, r6, #1 + add r5, #0xc + add r4, r4, #4 + cmp r6, #8 + blt _022446F6 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_022446E8 + + thumb_func_start MOD18_02244754 +MOD18_02244754: ; 0x02244754 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r4, #0 +_0224475A: + add r0, r4, #0 + bl MOD18_0223E314 + add r6, r0, #0 + add r0, r4, #0 + bl MOD18_0223E37C + add r7, r0, #0 + add r0, r4, #0 + bl MOD18_0223E3E4 + str r0, [sp] + add r0, r6, #0 + add r1, r7, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _0224478A + sub r6, #0x20 + str r6, [r5] + sub r7, #0x40 + str r7, [r5, #4] + ldr r0, [sp] + b _02244790 +_0224478A: + mov r0, #0 + str r0, [r5] + str r0, [r5, #4] +_02244790: + add r4, r4, #1 + str r0, [r5, #8] + add r5, #0x10 + cmp r4, #0x11 + blt _0224475A + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02244754 + + thumb_func_start MOD18_0224479C +MOD18_0224479C: ; 0x0224479C + push {r4, r5, r6, r7, lr} + sub sp, #0xc + mov r7, #1 + add r5, r0, #0 + add r4, r1, #0 + mov r6, #0 + lsl r7, r7, #0xc +_022447AA: + ldr r1, [r5] + cmp r1, #0 + beq _02244808 + mov r0, #0x8a + mul r0, r1 + mov r1, #7 + lsl r1, r1, #6 + bl _s32_div_f + add r0, #0x3c + lsl r0, r0, #0xc + str r0, [sp] + ldr r0, [r5, #4] + mov r1, #0x1a + lsl r0, r0, #7 + lsl r1, r1, #4 + bl _s32_div_f + add r0, #9 + lsl r1, r0, #0xc + mov r0, #3 + lsl r0, r0, #0x12 + add r0, r1, r0 + str r7, [sp, #8] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [r5, #8] + ldr r0, [r5, #0xc] + cmp r1, r0 + beq _02244810 + cmp r1, #0 + ldr r0, [r4] + beq _02244800 + bl FUN_02020130 + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + b _02244810 +_02244800: + mov r1, #0 + bl FUN_020200A0 + b _02244810 +_02244808: + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 +_02244810: + ldr r0, [r5, #8] + add r6, r6, #1 + str r0, [r5, #0xc] + add r5, #0x10 + add r4, r4, #4 + cmp r6, #0x11 + blt _022447AA + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224479C + + thumb_func_start MOD18_02244824 +MOD18_02244824: ; 0x02244824 + push {r4, lr} + add r4, r0, #0 + mov r1, #0x4e + mov r2, #4 + ldr r0, _02244848 ; =MOD18_0224433C + lsl r1, r1, #4 + add r3, r2, #0 + bl FUN_020061E8 + bl FUN_0201B6C8 + mov r1, #0x6d + lsl r1, r1, #2 + str r4, [r0, r1] + ldr r2, [r4, #8] + add r1, r1, #4 + str r2, [r0, r1] + pop {r4, pc} + .align 2, 0 +_02244848: .word MOD18_0224433C + thumb_func_end MOD18_02244824 + + thumb_func_start MOD18_0224484C +MOD18_0224484C: ; 0x0224484C + ldr r1, [r0] + cmp r1, #5 + bne _02244856 + mov r1, #6 + str r1, [r0] +_02244856: + bx lr + thumb_func_end MOD18_0224484C + + thumb_func_start MOD18_02244858 +MOD18_02244858: ; 0x02244858 + push {r4, lr} + add r4, r0, #0 + mov r1, #4 + bl FUN_020178A0 + add r0, r4, #0 + mov r1, #5 + bl FUN_020178A0 + pop {r4, pc} + thumb_func_end MOD18_02244858 + + thumb_func_start MOD18_0224486C +MOD18_0224486C: ; 0x0224486C + push {r3, r4, r5, r6, lr} + sub sp, #0x64 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #1 + mov r1, #0 + bl FUN_0200E3A0 + add r0, r5, #0 + bl MOD18_02244858 + ldr r6, _0224498C ; =0x022504B4 + add r3, sp, #0x48 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #4 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #1 + mov r1, #0 + bl FUN_0201E74C + ldr r6, _02244990 ; =0x02250498 + add r3, sp, #0x2c + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #5 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #2 + mov r1, #0 + bl FUN_0201E74C + ldr r6, _02244994 ; =0x0225047C + add r3, sp, #0x10 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + mov r1, #7 + str r0, [r3] + add r0, r5, #0 + mov r3, #0 + bl FUN_02016C18 + mov r0, #8 + mov r1, #0 + bl FUN_0201E74C + add r0, r5, #0 + mov r1, #7 + bl FUN_02018744 + mov r0, #0x40 + mov r1, #0 + str r0, [sp] + mov r2, #4 + mov r0, #0x1c + add r3, r1, #0 + str r2, [sp, #4] + bl FUN_02006930 + mov r1, #0 + mov r0, #5 + str r1, [sp] + lsl r0, r0, #0xa + str r0, [sp, #4] + str r1, [sp, #8] + mov r3, #4 + mov r0, #0x1c + mov r1, #1 + add r2, r5, #0 + str r3, [sp, #0xc] + bl FUN_0200687C + mov r1, #0 + mov r0, #6 + str r1, [sp] + lsl r0, r0, #8 + str r0, [sp, #4] + str r1, [sp, #8] + mov r3, #4 + mov r0, #0x1c + mov r1, #2 + add r2, r5, #0 + str r3, [sp, #0xc] + bl FUN_020068C8 + mov r0, #4 + mov r1, #0 + bl FUN_02054590 + mov r0, #7 + mov r1, #0x20 + mov r2, #0 + mov r3, #4 + bl FUN_02017F18 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #7 + bl FUN_020545B8 + add r0, r4, #0 + mov r1, #0 + bl FUN_02019620 + mov r3, #0x80 + str r3, [sp] + mov r2, #4 + mov r0, #0x32 + mov r1, #0x34 + add r3, #0xc0 + str r2, [sp, #4] + bl FUN_02006930 + mov r0, #1 + bl FUN_0200E394 + add sp, #0x64 + pop {r3, r4, r5, r6, pc} + nop +_0224498C: .word 0x022504B4 +_02244990: .word 0x02250498 +_02244994: .word 0x0225047C + thumb_func_end MOD18_0224486C + + thumb_func_start MOD18_02244998 +MOD18_02244998: ; 0x02244998 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + mov r1, #7 + add r6, r0, #0 + lsl r1, r1, #6 + mov r0, #0x19 + add r1, r6, r1 + mov r2, #4 + bl FUN_02008C9C + mov r1, #0x6f + lsl r1, r1, #2 + mov r7, #0xba + str r0, [r6, r1] + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_022449BA: + mov r0, #1 + add r1, r4, #0 + mov r2, #4 + bl FUN_02008DEC + str r0, [r5, r7] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _022449BA + mov r0, #0xfa + lsl r0, r0, #2 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r2, #4 + mov r0, #0xba + str r2, [sp, #8] + lsl r0, r0, #2 + ldr r0, [r6, r0] + mov r1, #0x1c + mov r3, #0 + bl FUN_02008F34 + mov r1, #0xbe + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0xf0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #0xc] + ldr r0, [r6, r1] + mov r1, #0x1c + mov r2, #3 + mov r3, #0 + bl FUN_02008FEC + mov r1, #0xbf + lsl r1, r1, #2 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0xec + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x1c + mov r2, #5 + mov r3, #0 + bl FUN_020090AC + mov r1, #3 + lsl r1, r1, #8 + str r0, [r6, r1] + add r0, r1, #0 + add r0, #0xe8 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r6, r1] + mov r1, #0x1c + mov r2, #6 + mov r3, #0 + bl FUN_020090AC + mov r1, #0xc1 + lsl r1, r1, #2 + str r0, [r6, r1] + sub r1, #0xc + ldr r0, [r6, r1] + bl FUN_02009B04 + mov r0, #0xbf + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02009D68 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02244998 + + thumb_func_start MOD18_02244A70 +MOD18_02244A70: ; 0x02244A70 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r4, [sp, #0x2c] + str r1, [sp, #0xc] + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + add r7, r2, #0 + add r6, r3, #0 + ldr r5, [sp, #0x28] + bl MOD18_0223E1FC + cmp r0, #0 + beq _02244AA6 +_02244A8C: + add r1, r4, #0 + add r1, #0x80 + ldr r1, [r1] + add r0, r4, #0 + bl MOD18_02244C48 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + bl MOD18_0223E1FC + cmp r0, #0 + bne _02244A8C +_02244AA6: + ldr r0, [r6] + cmp r0, #0 + beq _02244AB8 + cmp r0, #1 + beq _02244ADE + cmp r0, #2 + beq _02244AF8 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02244AB8: + add r0, r4, #0 + bl MOD18_02244CC8 + add r2, r0, #0 + beq _02244B24 + mov r0, #0x10 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r3, #0 + ldr r0, [sp, #0xc] + str r3, [sp, #8] + bl FUN_0201BD84 + str r0, [r7] + mov r0, #1 + add sp, #0x10 + str r0, [r6] + pop {r3, r4, r5, r6, r7, pc} +_02244ADE: + ldr r0, [r7] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _02244B24 + mov r0, #2 + str r0, [r6] + mov r0, #0 + add sp, #0x10 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_02244AF8: + add r0, r4, #0 + bl MOD18_02244D04 + cmp r0, #0 + bne _02244B24 + mov r1, #0 + ldr r0, [sp, #0xc] + mov r2, #2 + add r3, r1, #0 + bl FUN_0201A8C8 + ldr r0, [sp, #0xc] + bl FUN_020191D0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + cmp r0, #8 + blt _02244B24 + mov r0, #0 + str r0, [r5] + str r0, [r6] +_02244B24: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02244A70 + + thumb_func_start MOD18_02244B28 +MOD18_02244B28: ; 0x02244B28 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 + mov r7, #0x64 +_02244B32: + add r0, r7, #0 + mov r1, #4 + bl FUN_020219F4 + add r6, r6, #1 + stmia r4!, {r0} + cmp r6, #0x20 + blt _02244B32 + add r0, r5, #0 + mov r1, #0 + add r0, #0x8c + str r1, [r0] + add r0, r5, #0 + add r0, #0x90 + str r1, [r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0x80 + str r0, [r1] + mov r4, #0 + mov r6, #0x50 + mov r7, #4 +_02244B64: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_020219F4 + add r1, r5, #0 + add r1, #0x84 + add r4, r4, #1 + add r5, r5, #4 + str r0, [r1] + cmp r4, #2 + blt _02244B64 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02244B28 + + thumb_func_start MOD18_02244B7C +MOD18_02244B7C: ; 0x02244B7C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r6, #0 + add r4, r5, #0 +_02244B84: + ldr r0, [r4] + bl FUN_02021A20 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #0x20 + blt _02244B84 + add r0, r5, #0 + add r0, #0x80 + ldr r0, [r0] + bl FUN_02021A20 + mov r4, #0 +_02244B9E: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _02244B9E + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_02244B7C + + thumb_func_start MOD18_02244BB4 +MOD18_02244BB4: ; 0x02244BB4 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + str r1, [sp] + add r0, r1, #0 + add r1, r5, #0 + add r1, #0x94 + mov r2, #0x50 + bl FUN_02021EF0 + add r0, r5, #0 + add r0, #0x94 + ldrh r2, [r0] + mov r4, #0 + ldr r0, _02244C44 ; =0x0000FFFF + add r1, r4, #0 + cmp r2, r0 + beq _02244BFA + add r7, r0, #0 + mov r0, #0xe + add r2, r5, #0 + lsl r0, r0, #0xc +_02244BDE: + add r3, r2, #0 + add r3, #0x94 + ldrh r3, [r3] + cmp r3, r0 + bne _02244BEC + add r4, r4, #1 + add r6, r1, #0 +_02244BEC: + add r2, r2, #2 + add r3, r2, #0 + add r3, #0x94 + ldrh r3, [r3] + add r1, r1, #1 + cmp r3, r7 + bne _02244BDE +_02244BFA: + cmp r4, #2 + blt _02244C02 + bl ErrorHandling +_02244C02: + cmp r4, #0 + bne _02244C14 + add r5, #0x84 + ldr r0, [r5] + ldr r1, [sp] + bl FUN_02021A74 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02244C14: + lsl r0, r6, #1 + add r0, r5, r0 + ldr r1, _02244C44 ; =0x0000FFFF + add r0, #0x94 + strh r1, [r0] + add r0, r5, #0 + add r0, #0x84 + add r1, r5, #0 + ldr r0, [r0] + add r1, #0x94 + bl FUN_02021E28 + add r0, r5, #0 + add r0, #0x88 + add r1, r6, #1 + ldr r0, [r0] + add r5, #0x94 + lsl r1, r1, #1 + add r1, r5, r1 + bl FUN_02021E28 + mov r0, #2 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244C44: .word 0x0000FFFF + thumb_func_end MOD18_02244BB4 + + thumb_func_start MOD18_02244C48 +MOD18_02244C48: ; 0x02244C48 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl MOD18_02244BB4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x8c + mov r2, #0 + ldr r1, [r0] + cmp r6, #0 + ble _02244C7C + add r0, r5, #0 + add r0, #0x90 + ldr r3, [r0] + add r0, r2, #0 +_02244C66: + add r1, r1, #1 + cmp r1, #0x20 + bne _02244C6E + add r1, r0, #0 +_02244C6E: + cmp r1, r3 + bne _02244C76 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02244C76: + add r2, r2, #1 + cmp r2, r6 + blt _02244C66 +_02244C7C: + mov r0, #0 + str r0, [sp] + cmp r6, #0 + ble _02244CC2 + add r7, r5, #0 + add r4, r5, #0 + add r7, #0x8c +_02244C8A: + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + lsl r0, r0, #2 + add r1, #0x84 + ldr r0, [r5, r0] + ldr r1, [r1] + bl FUN_02021A74 + ldr r0, [r7] + add r0, r0, #1 + str r0, [r7] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + cmp r0, #0x20 + bne _02244CB6 + add r1, r5, #0 + add r1, #0x8c + mov r0, #0 + str r0, [r1] +_02244CB6: + ldr r0, [sp] + add r4, r4, #4 + add r0, r0, #1 + str r0, [sp] + cmp r0, r6 + blt _02244C8A +_02244CC2: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02244C48 + + thumb_func_start MOD18_02244CC8 +MOD18_02244CC8: ; 0x02244CC8 + add r1, r0, #0 + add r2, r0, #0 + add r1, #0x90 + add r2, #0x8c + ldr r1, [r1] + ldr r2, [r2] + cmp r2, r1 + beq _02244CFE + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + add r3, r2, #1 + add r2, r0, #0 + add r2, #0x90 + str r3, [r2] + add r2, r0, #0 + add r2, #0x90 + ldr r2, [r2] + cmp r2, #0x20 + bne _02244CF8 + add r2, r0, #0 + mov r3, #0 + add r2, #0x90 + str r3, [r2] +_02244CF8: + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr +_02244CFE: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244CC8 + + thumb_func_start MOD18_02244D04 +MOD18_02244D04: ; 0x02244D04 + add r1, r0, #0 + add r1, #0x8c + add r0, #0x90 + ldr r1, [r1] + ldr r0, [r0] + cmp r1, r0 + bne _02244D16 + mov r0, #1 + bx lr +_02244D16: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244D04 + + thumb_func_start MOD18_02244D1C +MOD18_02244D1C: ; 0x02244D1C + mov r0, #0x78 + bx lr + thumb_func_end MOD18_02244D1C + + thumb_func_start MOD18_02244D20 +MOD18_02244D20: ; 0x02244D20 + push {r4, lr} + add r4, r0, #0 + bl FUN_020312BC + mov r1, #0 + add r4, #0x18 + add r0, r1, #0 +_02244D2E: + strb r0, [r4, #0xa] + str r0, [r4, #4] + add r1, r1, #1 + add r4, #0xc + cmp r1, #8 + blt _02244D2E + pop {r4, pc} + thumb_func_end MOD18_02244D20 + + thumb_func_start MOD18_02244D3C +MOD18_02244D3C: ; 0x02244D3C + bx lr + .align 2, 0 + thumb_func_end MOD18_02244D3C + + thumb_func_start MOD18_02244D40 +MOD18_02244D40: ; 0x02244D40 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #8 + blt _02244D4E + bl ErrorHandling +_02244D4E: + mov r0, #0xc + add r5, #0x18 + mul r0, r4 + add r0, r5, r0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_02244D40 + + thumb_func_start MOD18_02244D58 +MOD18_02244D58: ; 0x02244D58 + mov r3, #0 + add r0, #0x18 + add r1, r3, #0 +_02244D5E: + ldr r2, [r0, #4] + cmp r2, #0 + ble _02244D68 + sub r2, r2, #1 + str r2, [r0, #4] +_02244D68: + ldr r2, [r0, #4] + cmp r2, #0 + bne _02244D70 + strb r1, [r0, #0xa] +_02244D70: + add r3, r3, #1 + add r0, #0xc + cmp r3, #8 + blt _02244D5E + bx lr + .align 2, 0 + thumb_func_end MOD18_02244D58 + + thumb_func_start MOD18_02244D7C +MOD18_02244D7C: ; 0x02244D7C + strb r1, [r0, #0xa] + lsl r2, r1, #2 + ldr r1, _02244D90 ; =0x02251200 + ldr r1, [r1, r2] + str r1, [r0, #4] + ldr r1, _02244D94 ; =0x0225121C + ldr r1, [r1, r2] + str r1, [r0] + bx lr + nop +_02244D90: .word 0x02251200 +_02244D94: .word 0x0225121C + thumb_func_end MOD18_02244D7C + + thumb_func_start MOD18_02244D98 +MOD18_02244D98: ; 0x02244D98 + ldr r3, _02244D9C ; =MOD18_02244D7C + bx r3 + .align 2, 0 +_02244D9C: .word MOD18_02244D7C + thumb_func_end MOD18_02244D98 + + thumb_func_start MOD18_02244DA0 +MOD18_02244DA0: ; 0x02244DA0 + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _02244DAA + mov r0, #1 + bx lr +_02244DAA: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244DA0 + + thumb_func_start MOD18_02244DB0 +MOD18_02244DB0: ; 0x02244DB0 + ldrb r0, [r0, #0xa] + cmp r0, #2 + bne _02244DBA + mov r0, #0 + bx lr +_02244DBA: + cmp r0, #5 + bne _02244DC2 + mov r0, #0 + bx lr +_02244DC2: + cmp r0, #3 + bne _02244DCA + mov r0, #1 + bx lr +_02244DCA: + cmp r0, #1 + bne _02244DD2 + mov r0, #1 + bx lr +_02244DD2: + cmp r0, #4 + bne _02244DDA + mov r0, #1 + bx lr +_02244DDA: + cmp r0, #0 + bne _02244DE2 + mov r0, #1 + bx lr +_02244DE2: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_02244DB0 + + thumb_func_start MOD18_02244DE8 +MOD18_02244DE8: ; 0x02244DE8 + push {r4, r5} + asr r2, r0, #4 + lsr r2, r2, #0x1b + add r2, r0, r2 + asr r0, r1, #4 + lsr r0, r0, #0x1b + add r0, r1, r0 + asr r3, r0, #5 + ldr r4, _02244E1C ; =0x02251238 + ldr r5, _02244E20 ; =0x0225124C + asr r2, r2, #5 + mov r0, #0 +_02244E00: + ldrb r1, [r4] + cmp r2, r1 + bne _02244E0C + ldrb r1, [r5] + cmp r3, r1 + beq _02244E18 +_02244E0C: + add r0, r0, #1 + add r4, r4, #1 + add r5, r5, #1 + cmp r0, #0x11 + blt _02244E00 + mov r0, #0x10 +_02244E18: + pop {r4, r5} + bx lr + .align 2, 0 +_02244E1C: .word 0x02251238 +_02244E20: .word 0x0225124C + thumb_func_end MOD18_02244DE8 + + thumb_func_start MOD18_02244E24 +MOD18_02244E24: ; 0x02244E24 + push {r4, r5} + sub sp, #8 + ldr r3, _02244E64 ; =0x022504D0 + add r2, sp, #0 + ldrh r4, [r3, #0x1c] + strh r4, [r2] + ldrh r4, [r3, #0x1e] + ldrh r3, [r3, #0x20] + strh r4, [r2, #2] + strh r3, [r2, #4] + ldrh r4, [r2] + ldrh r5, [r2, #2] + mov r3, #0 +_02244E3E: + add r2, r4, #0 + add r2, #0x20 + cmp r0, r2 + bne _02244E52 + cmp r1, r5 + bne _02244E52 + add sp, #8 + mov r0, #1 + pop {r4, r5} + bx lr +_02244E52: + add r3, r3, #1 + add r4, #0x20 + cmp r3, #8 + blt _02244E3E + mov r0, #0 + add sp, #8 + pop {r4, r5} + bx lr + nop +_02244E64: .word 0x022504D0 + thumb_func_end MOD18_02244E24 + + thumb_func_start MOD18_02244E68 +MOD18_02244E68: ; 0x02244E68 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _02244EB0 ; =0x022504D0 + add r5, r0, #0 + ldrh r2, [r1, #0x22] + add r0, sp, #0 + strh r2, [r0] + ldrh r2, [r1, #0x24] + ldrh r1, [r1, #0x26] + strh r2, [r0, #2] + strh r1, [r0, #4] + bl FUN_0202EDD8 + cmp r0, #0 + beq _02244E96 + add r0, sp, #0 + ldrh r1, [r0] + add sp, #8 + strh r1, [r4] + ldrh r0, [r0, #2] + strh r0, [r4, #2] + pop {r3, r4, r5, pc} +_02244E96: + cmp r5, #0x10 + bne _02244E9C + mov r5, #0 +_02244E9C: + add r0, sp, #0 + ldrh r2, [r0] + lsl r1, r5, #5 + add r1, r2, r1 + add r1, #0x20 + strh r1, [r4] + ldrh r0, [r0, #2] + strh r0, [r4, #2] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02244EB0: .word 0x022504D0 + thumb_func_end MOD18_02244E68 + + thumb_func_start MOD18_02244EB4 +MOD18_02244EB4: ; 0x02244EB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031280 + cmp r0, #0 + beq _02244EC4 + mov r5, #0x10 +_02244EC4: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02244E68 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_02244EB4 + + thumb_func_start MOD18_02244ED0 +MOD18_02244ED0: ; 0x02244ED0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _02245000 ; =0x022513EC + str r1, [sp] + ldr r0, [r0] + cmp r0, #0 + beq _02244EE0 + b _02244FFE +_02244EE0: + bl FUN_0202595C + cmp r0, #0x94 + beq _02244EEC + bl ErrorHandling +_02244EEC: + ldr r0, _02245000 ; =0x022513EC + ldr r2, _02245004 ; =0x000013E8 + str r4, [r0] + add r0, r4, #0 + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _02245000 ; =0x022513EC + ldr r1, [sp] + ldr r2, [r0] + mov r7, #0xff + str r1, [r2] + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 +_02244F0A: + ldr r4, [r0] + ldr r5, _02245008 ; =0x00001284 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + strh r4, [r6, r5] + ldr r4, [r0] + add r5, r5, #2 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + strh r4, [r6, r5] + ldr r4, [r0] + ldr r5, _02245010 ; =0x000012B4 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + strh r4, [r6, r5] + ldr r4, [r0] + add r5, r5, #2 + add r6, r4, r2 + ldr r4, _0224500C ; =0x00000FFF + add r2, r2, #6 + strh r4, [r6, r5] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245014 ; =0x0000136B + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245018 ; =0x00001373 + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _0224501C ; =0x00001363 + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245020 ; =0x0000137B + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245024 ; =0x0000134B + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _02245028 ; =0x00001353 + strb r7, [r5, r4] + ldr r4, [r0] + add r5, r4, r1 + ldr r4, _0224502C ; =0x0000135B + add r1, r1, #1 + strb r7, [r5, r4] + ldr r4, [r0] + ldr r5, _02245030 ; =0x000013AC + add r6, r4, r3 + mov r4, #0x48 + strh r4, [r6, r5] + ldr r4, [r0] + ldr r5, _02245034 ; =0x000001B5 + add r6, r4, r3 + ldr r4, _02245038 ; =0x000013BC + strh r5, [r6, r4] + ldr r4, [r0] + mov r5, #1 + add r6, r4, r3 + ldr r4, _0224503C ; =0x000013CC + add r3, r3, #2 + strh r5, [r6, r4] + cmp r1, #8 + blt _02244F0A + mov r5, #0 + ldr r6, _02245000 ; =0x022513EC + add r4, r5, #0 + mov r7, #0xff +_02244F9A: + ldr r0, [r6] + add r0, #0xa + add r0, r0, r4 + bl FUN_020266D4 + ldr r0, [r6] + add r4, #0x96 + add r1, r0, r5 + ldr r0, _02245040 ; =0x000012E5 + strb r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _02245044 ; =0x0000133A + add r5, r5, #1 + strb r7, [r1, r0] + cmp r5, #0x11 + blt _02244F9A + ldr r0, _02245000 ; =0x022513EC + mov r2, #0x22 + ldr r1, [r0] + ldr r0, _02245048 ; =0x00000A04 + lsl r2, r2, #6 + add r0, r1, r0 + add r1, r7, #0 + bl MI_CpuFill8 + ldr r0, [sp] + bl MOD18_02245054 + ldr r2, _02245000 ; =0x022513EC + ldr r0, _0224504C ; =0x000013DC + ldr r1, [r2] + mov r3, #0x48 + strh r3, [r1, r0] + add r1, r0, #2 + ldr r4, _02245034 ; =0x000001B5 + ldr r3, [r2] + add r0, r0, #4 + strh r4, [r3, r1] + ldr r1, [r2] + mov r3, #1 + strb r3, [r1, r0] + ldr r0, _02245050 ; =MOD18_02246338 + mov r1, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _02245000 ; =0x022513EC + ldr r1, [r1] + str r0, [r1, #4] +_02244FFE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245000: .word 0x022513EC +_02245004: .word 0x000013E8 +_02245008: .word 0x00001284 +_0224500C: .word 0x00000FFF +_02245010: .word 0x000012B4 +_02245014: .word 0x0000136B +_02245018: .word 0x00001373 +_0224501C: .word 0x00001363 +_02245020: .word 0x0000137B +_02245024: .word 0x0000134B +_02245028: .word 0x00001353 +_0224502C: .word 0x0000135B +_02245030: .word 0x000013AC +_02245034: .word 0x000001B5 +_02245038: .word 0x000013BC +_0224503C: .word 0x000013CC +_02245040: .word 0x000012E5 +_02245044: .word 0x0000133A +_02245048: .word 0x00000A04 +_0224504C: .word 0x000013DC +_02245050: .word MOD18_02246338 + thumb_func_end MOD18_02244ED0 + + thumb_func_start MOD18_02245054 +MOD18_02245054: ; 0x02245054 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02026CA8 + add r4, r0, #0 + bl FUN_02026CC0 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + bl FUN_0202A1B8 + add r1, r0, #0 + add r0, r6, #0 + bl FUN_020268E8 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r2, [r1] + ldr r1, _022450BC ; =0x0000096A + add r1, r2, r1 + mov r2, #0x94 + bl MI_CpuCopy8 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r2, [r1] + ldr r1, _022450C0 ; =0x00001204 + add r1, r2, r1 + bl MOD18_02245128 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r1, [r1] + mov r2, #0x94 + add r1, #0xa + bl MI_CpuCopy8 + ldr r1, _022450B8 ; =0x022513EC + add r0, r4, #0 + ldr r2, [r1] + ldr r1, _022450C4 ; =0x00000A04 + add r1, r2, r1 + bl MOD18_02245128 + pop {r4, r5, r6, pc} + nop +_022450B8: .word 0x022513EC +_022450BC: .word 0x0000096A +_022450C0: .word 0x00001204 +_022450C4: .word 0x00000A04 + thumb_func_end MOD18_02245054 + + thumb_func_start MOD18_022450C8 +MOD18_022450C8: ; 0x022450C8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + mov r0, #0 + mov ip, r0 + mov lr, r0 + add r0, r1, #0 + lsl r0, r0, #2 + str r1, [sp] + str r2, [sp, #4] + add r3, r3, r0 + mov r7, #1 +_022450E0: + ldr r1, [sp] + mov r0, ip + add r0, r1, r0 + cmp r0, #0x20 + bge _02245112 + ldr r1, [sp, #4] + mov r0, lr + mov r2, #0 + add r4, r1, r0 +_022450F2: + ldrb r0, [r4] + cmp r0, #0 + beq _0224510A + add r1, r6, r2 + cmp r1, #0x20 + bge _0224510A + add r0, r7, #0 + lsl r0, r1 + ldr r5, [r3] + mvn r0, r0 + and r0, r5 + str r0, [r3] +_0224510A: + add r2, r2, #1 + add r4, r4, #1 + cmp r2, #3 + blt _022450F2 +_02245112: + mov r0, lr + add r0, r0, #3 + mov lr, r0 + mov r0, ip + add r0, r0, #1 + add r3, r3, #4 + mov ip, r0 + cmp r0, #3 + blt _022450E0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_022450C8 + + thumb_func_start MOD18_02245128 +MOD18_02245128: ; 0x02245128 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r2, sp, #0x10 + str r1, [sp] + ldr r3, _022451B4 ; =0x02250508 + add r5, r0, #0 + add r2, #1 + mov r1, #9 +_02245138: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02245138 + ldr r3, _022451B8 ; =0x02250511 + add r2, sp, #8 + mov r1, #9 +_0224514A: + ldrb r0, [r3] + add r3, r3, #1 + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224514A + ldr r0, [sp] + mov r1, #0xff + mov r2, #0x80 + bl MI_CpuFill8 + mov r4, #0 +_02245162: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020267C4 + str r0, [sp, #4] + cmp r0, #0 + beq _022451A8 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026810 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026840 + add r6, r0, #0 + cmp r4, #0 + bne _0224518E + add r2, sp, #0x10 + add r2, #1 + b _0224519E +_0224518E: + cmp r4, #0x10 + bge _0224519C + ldr r0, [sp, #4] + bl FUN_0204CAA0 + add r2, r0, #0 + b _0224519E +_0224519C: + add r2, sp, #8 +_0224519E: + ldr r3, [sp] + add r0, r7, #0 + add r1, r6, #0 + bl MOD18_022450C8 +_022451A8: + add r4, r4, #1 + cmp r4, #0x20 + blt _02245162 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022451B4: .word 0x02250508 +_022451B8: .word 0x02250511 + thumb_func_end MOD18_02245128 + + thumb_func_start MOD18_022451BC +MOD18_022451BC: ; 0x022451BC + push {r3, lr} + bl MOD18_0224646C + ldr r0, _022451E4 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _022451D8 + bl FUN_0200CAB4 + ldr r0, _022451E4 ; =0x022513EC + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #4] +_022451D8: + ldr r0, _022451E4 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _022451E8 ; =0x000013E4 + strb r2, [r1, r0] + pop {r3, pc} + .align 2, 0 +_022451E4: .word 0x022513EC +_022451E8: .word 0x000013E4 + thumb_func_end MOD18_022451BC + + thumb_func_start MOD18_022451EC +MOD18_022451EC: ; 0x022451EC + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0224525C ; =0x022513EC + ldr r0, _02245260 ; =0x000013E4 + ldr r2, [r1] + mov r4, #0 + strb r4, [r2, r0] + ldr r1, [r1] + add r0, r0, #2 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _0224523E +_02245202: + add r0, r4, #0 + bl MOD18_02246430 + add r4, r4, #1 + cmp r4, #8 + blt _02245202 + mov r5, #0 + ldr r6, _0224525C ; =0x022513EC + ldr r7, _02245264 ; =0x00000FFF + add r4, r5, #0 +_02245216: + ldr r1, [r6] + ldr r0, _02245268 ; =0x00001284 + add r0, r1, r0 + ldrh r3, [r0, r4] + add r2, r0, r4 + cmp r3, r7 + beq _02245236 + ldrh r1, [r2, #2] + ldr r0, _02245264 ; =0x00000FFF + cmp r1, r0 + beq _02245236 + ldrb r2, [r2, #4] + add r0, r3, #0 + add r3, r5, #0 + bl MOD18_0224630C +_02245236: + add r5, r5, #1 + add r4, r4, #6 + cmp r5, #8 + blt _02245216 +_0224523E: + ldr r0, _0224525C ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + bne _02245258 + ldr r0, _0224526C ; =MOD18_02246338 + mov r1, #0 + mov r2, #0x64 + bl FUN_0200CA44 + ldr r1, _0224525C ; =0x022513EC + ldr r1, [r1] + str r0, [r1, #4] +_02245258: + pop {r3, r4, r5, r6, r7, pc} + nop +_0224525C: .word 0x022513EC +_02245260: .word 0x000013E4 +_02245264: .word 0x00000FFF +_02245268: .word 0x00001284 +_0224526C: .word MOD18_02246338 + thumb_func_end MOD18_022451EC + + thumb_func_start MOD18_02245270 +MOD18_02245270: ; 0x02245270 + push {r3, lr} + ldr r0, _022452A0 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02245288 + bl FUN_0200CAB4 + ldr r0, _022452A0 ; =0x022513EC + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #4] +_02245288: + bl MOD18_0224646C + ldr r0, _022452A0 ; =0x022513EC + ldr r0, [r0] + cmp r0, #0 + beq _02245298 + bl FUN_02016A18 +_02245298: + ldr r0, _022452A0 ; =0x022513EC + mov r1, #0 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_022452A0: .word 0x022513EC + thumb_func_end MOD18_02245270 + + thumb_func_start MOD18_022452A4 +MOD18_022452A4: ; 0x022452A4 + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _02245308 ; =0x00000FFF + ldr r6, _0224530C ; =0x022513EC + str r4, [sp] + add r5, r4, #0 +_022452B0: + ldr r0, [r6] + add r0, #0xa + add r0, r0, r4 + bl FUN_02026714 + ldr r0, [r6] + add r4, #0x96 + add r1, r0, r5 + ldr r0, _02245310 ; =0x00001284 + strh r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _02245314 ; =0x00001286 + strh r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _02245318 ; =0x000012B4 + strh r7, [r1, r0] + ldr r0, [r6] + add r1, r0, r5 + ldr r0, _0224531C ; =0x000012B6 + add r5, r5, #6 + strh r7, [r1, r0] + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #8 + blt _022452B0 + ldr r0, _0224530C ; =0x022513EC + mov r2, #0x22 + ldr r1, [r0] + ldr r0, _02245320 ; =0x00000A04 + lsl r2, r2, #6 + add r0, r1, r0 + mov r1, #0xff + bl MI_CpuFill8 + ldr r0, _0224530C ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl MOD18_02245054 + pop {r3, r4, r5, r6, r7, pc} + nop +_02245308: .word 0x00000FFF +_0224530C: .word 0x022513EC +_02245310: .word 0x00001284 +_02245314: .word 0x00001286 +_02245318: .word 0x000012B4 +_0224531C: .word 0x000012B6 +_02245320: .word 0x00000A04 + thumb_func_end MOD18_022452A4 + + thumb_func_start MOD18_02245324 +MOD18_02245324: ; 0x02245324 + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0224534C ; =0x022513EC + add r5, r4, #0 +_0224532C: + ldr r0, [r6] + add r0, #0xa + add r0, r0, r5 + bl FUN_020266D4 + add r4, r4, #1 + add r5, #0x96 + cmp r4, #0x11 + blt _0224532C + ldr r0, _0224534C ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl MOD18_02245054 + pop {r4, r5, r6, pc} + nop +_0224534C: .word 0x022513EC + thumb_func_end MOD18_02245324 + + thumb_func_start MOD18_02245350 +MOD18_02245350: ; 0x02245350 + ldr r0, _02245354 ; =0x000013E8 + bx lr + .align 2, 0 +_02245354: .word 0x000013E8 + thumb_func_end MOD18_02245350 + + thumb_func_start MOD18_02245358 +MOD18_02245358: ; 0x02245358 + push {r4, r5} + ldr r2, _0224539C ; =0x022513EC + ldr r1, [r2] + cmp r1, #0 + beq _02245396 + add r4, r1, r0 + ldr r1, _022453A0 ; =0x00001363 + mov r3, #0xff + strb r3, [r4, r1] + ldr r4, [r2] + add r5, r4, r0 + add r4, r1, #0 + add r4, #8 + strb r3, [r5, r4] + ldr r4, [r2] + add r5, r4, r0 + add r4, r1, #0 + add r4, #0x10 + strb r3, [r5, r4] + mov r3, #6 + mul r3, r0 + ldr r4, [r2] + ldr r0, _022453A4 ; =0x00000FFF + add r5, r4, r3 + add r4, r1, #0 + sub r4, #0xaf + strh r0, [r5, r4] + ldr r2, [r2] + sub r1, #0xad + add r2, r2, r3 + strh r0, [r2, r1] +_02245396: + pop {r4, r5} + bx lr + nop +_0224539C: .word 0x022513EC +_022453A0: .word 0x00001363 +_022453A4: .word 0x00000FFF + thumb_func_end MOD18_02245358 + + thumb_func_start MOD18_022453A8 +MOD18_022453A8: ; 0x022453A8 + push {r3, r4, r5, lr} + ldr r1, _022453D4 ; =0x022513EC + add r4, r0, #0 + ldr r1, [r1] + cmp r1, #0 + beq _022453D2 + bl MOD18_02246430 + ldr r1, _022453D4 ; =0x022513EC + mov r0, #6 + add r5, r4, #0 + mul r5, r0 + ldr r0, [r1] + ldr r3, _022453D8 ; =0x00000FFF + add r2, r0, r5 + ldr r0, _022453DC ; =0x00001284 + strh r3, [r2, r0] + ldr r1, [r1] + add r0, r0, #2 + add r1, r1, r5 + strh r3, [r1, r0] +_022453D2: + pop {r3, r4, r5, pc} + .align 2, 0 +_022453D4: .word 0x022513EC +_022453D8: .word 0x00000FFF +_022453DC: .word 0x00001284 + thumb_func_end MOD18_022453A8 + + thumb_func_start MOD18_022453E0 +MOD18_022453E0: ; 0x022453E0 + ldr r3, _022453E4 ; =0x0204F7FD + bx r3 + .align 2, 0 +_022453E4: .word 0x0204F7FD + thumb_func_end MOD18_022453E0 + + thumb_func_start MOD18_022453E8 +MOD18_022453E8: ; 0x022453E8 + push {r3, r4, r5, r6, r7, lr} + mov r6, #0 + add r7, r0, #0 + str r1, [sp] + add r5, r6, #0 +_022453F2: + ldr r0, _02245434 ; =0x022513EC + ldr r4, [r0] + add r4, #0xa + add r0, r4, r5 + bl FUN_02026CA0 + cmp r0, #0 + beq _02245426 + add r0, r6, #0 + bl FUN_0204E34C + cmp r0, #0 + beq _02245426 + add r0, r4, r5 + bl FUN_02026C88 + cmp r7, r0 + bne _02245426 + add r0, r4, r5 + bl FUN_02026C90 + ldr r1, [sp] + cmp r1, r0 + bne _02245426 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} +_02245426: + add r6, r6, #1 + add r5, #0x96 + cmp r6, #8 + blt _022453F2 + mov r0, #0xff + pop {r3, r4, r5, r6, r7, pc} + nop +_02245434: .word 0x022513EC + thumb_func_end MOD18_022453E8 + + thumb_func_start MOD18_02245438 +MOD18_02245438: ; 0x02245438 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r2, #0 + ldrb r4, [r5, #4] + bl FUN_02031190 + cmp r4, r0 + bne _02245480 + ldr r0, _02245484 ; =0x022513EC + ldr r1, _02245488 ; =0x000013E4 + ldr r0, [r0] + ldrb r1, [r0, r1] + cmp r1, #0 + bne _02245480 + ldrb r1, [r5, #7] + cmp r1, #0 + str r4, [sp] + beq _02245470 + ldrb r1, [r5, #5] + mov r3, #0 + str r1, [sp, #4] + ldrh r1, [r5] + ldrh r2, [r5, #2] + ldr r0, [r0] + bl MOD18_02245E1C + add sp, #8 + pop {r3, r4, r5, pc} +_02245470: + ldrb r1, [r5, #5] + str r1, [sp, #4] + ldrh r1, [r5] + ldrh r2, [r5, #2] + ldrb r3, [r5, #6] + ldr r0, [r0] + bl MOD18_022459E8 +_02245480: + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02245484: .word 0x022513EC +_02245488: .word 0x000013E4 + thumb_func_end MOD18_02245438 + + thumb_func_start MOD18_0224548C +MOD18_0224548C: ; 0x0224548C + push {r4, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _022454B0 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _022454B4 ; =MOD18_022453E0 + mov r1, #0x58 + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_022479A0 +_022454B0: + pop {r4, pc} + nop +_022454B4: .word MOD18_022453E0 + thumb_func_end MOD18_0224548C + + thumb_func_start MOD18_022454B8 +MOD18_022454B8: ; 0x022454B8 + mov r0, #8 + bx lr + thumb_func_end MOD18_022454B8 + + thumb_func_start MOD18_022454BC +MOD18_022454BC: ; 0x022454BC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, sp, #0 + add r4, r2, #0 + strb r5, [r0] + bl FUN_02031190 + cmp r0, #0 + beq _022454D4 + bl ErrorHandling + pop {r3, r4, r5, pc} +_022454D4: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _0224550C + ldrb r0, [r4, #2] + cmp r0, #0 + ldrb r0, [r4] + beq _02245502 + add r1, r5, #0 + bl MOD18_02245528 + cmp r0, #0 + bne _02245518 + ldr r0, _0224551C ; =0x022513EC + mov r2, #0xff + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _02245520 ; =0x0000136B + strb r2, [r1, r0] + mov r0, #0x3d + add r1, sp, #0 + bl FUN_02030C4C + pop {r3, r4, r5, pc} +_02245502: + add r1, r5, #0 + mov r2, #0 + bl MOD18_022455D0 + pop {r3, r4, r5, pc} +_0224550C: + ldr r0, _0224551C ; =0x022513EC + mov r2, #0xff + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _02245520 ; =0x0000136B + strb r2, [r1, r0] +_02245518: + pop {r3, r4, r5, pc} + nop +_0224551C: .word 0x022513EC +_02245520: .word 0x0000136B + thumb_func_end MOD18_022454BC + + thumb_func_start MOD18_02245524 +MOD18_02245524: ; 0x02245524 + mov r0, #3 + bx lr + thumb_func_end MOD18_02245524 + + thumb_func_start MOD18_02245528 +MOD18_02245528: ; 0x02245528 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _022455C4 ; =0x022513EC + add r6, r1, #0 + ldr r1, [r0] + mov r0, #0x96 + add r1, #8 + mul r0, r5 + add r0, r1, r0 + str r0, [sp] + add r0, r0, #2 + bl FUN_02026CA0 + cmp r0, #0 + bne _0224554E + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224554E: + mov r0, #0x36 + bl FUN_02031354 + cmp r0, #0 + beq _0224555E + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224555E: + ldr r7, _022455C4 ; =0x022513EC + mov r4, #0 +_02245562: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _02245580 + ldr r0, [r7] + add r1, r0, r4 + ldr r0, _022455C8 ; =0x00001373 + ldrb r0, [r1, r0] + cmp r5, r0 + bne _02245580 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02245580: + add r4, r4, #1 + cmp r4, #8 + blt _02245562 + add r0, r5, #0 + add r1, sp, #4 + bl MOD18_02244EB4 + ldr r0, [sp] + strb r6, [r0, #1] + add r0, r5, #0 + bl MOD18_02245FC0 + ldr r2, _022455C4 ; =0x022513EC + lsl r0, r5, #0x18 + ldr r1, [r2] + lsr r0, r0, #0x18 + add r3, r1, r6 + ldr r1, _022455CC ; =0x0000136B + strb r0, [r3, r1] + ldr r2, [r2] + add r1, #8 + add r2, r2, r6 + strb r0, [r2, r1] + add r2, sp, #4 + ldrh r1, [r2] + ldrh r2, [r2, #2] + add r0, r6, #0 + mov r3, #0 + bl FUN_0204E794 + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022455C4: .word 0x022513EC +_022455C8: .word 0x00001373 +_022455CC: .word 0x0000136B + thumb_func_end MOD18_02245528 + + thumb_func_start MOD18_022455D0 +MOD18_022455D0: ; 0x022455D0 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r1, sp, #4 + add r4, r0, #0 + str r2, [sp] + bl MOD18_02244E68 + ldr r0, _0224565C ; =0x022513EC + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _02245660 ; =0x0000136B + strb r4, [r1, r0] + bl FUN_02031280 + cmp r0, #0 + beq _02245604 + ldr r0, _0224565C ; =0x022513EC + ldr r2, [r0] + ldr r0, _02245664 ; =0x000013DC + add r1, r0, #2 + ldrh r4, [r2, r0] + add r0, r0, #4 + ldrh r7, [r2, r1] + ldrb r6, [r2, r0] + b _0224561A +_02245604: + ldr r0, _0224565C ; =0x022513EC + lsl r1, r5, #1 + ldr r0, [r0] + add r2, r0, r1 + ldr r1, _02245668 ; =0x000013AC + add r0, r1, #0 + ldrh r4, [r2, r1] + add r0, #0x10 + add r1, #0x20 + ldrh r7, [r2, r0] + ldrh r6, [r2, r1] +_0224561A: + add r0, r5, #0 + add r1, r4, #0 + add r2, r7, #0 + add r3, r6, #0 + bl FUN_0204E794 + add r0, r6, #0 + bl FUN_02059BF4 + add r4, r4, r0 + add r0, r6, #0 + bl FUN_02059C00 + add r1, sp, #4 + add r0, r7, r0 + strh r4, [r1, #6] + strh r0, [r1, #8] + strb r5, [r1, #0xa] + ldr r0, [sp] + strb r6, [r1, #0xb] + strb r0, [r1, #0xc] + add r1, sp, #8 + mov r0, #0x39 + add r1, #2 + bl FUN_02030C4C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0224565C: .word 0x022513EC +_02245660: .word 0x0000136B +_02245664: .word 0x000013DC +_02245668: .word 0x000013AC + thumb_func_end MOD18_022455D0 + + thumb_func_start MOD18_0224566C +MOD18_0224566C: ; 0x0224566C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + ldr r0, _022457C8 ; =0x022513EC + add r7, r1, #0 + ldr r0, [r0] + str r2, [sp] + cmp r0, #0 + bne _02245684 + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02245684: + cmp r6, #0 + beq _0224569A + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _0224569A + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224569A: + add r0, r6, #0 + bl FUN_0204D830 + cmp r0, #0 + beq _022456AA + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_022456AA: + ldr r0, _022457C8 ; =0x022513EC + ldr r0, [r0] + add r1, r0, r6 + ldr r0, _022457CC ; =0x0000136B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _022456BE + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022456BE: + ldr r1, [sp] + add r0, r7, #0 + bl MOD18_022453E8 + cmp r0, #0xff + beq _02245702 + ldr r1, _022457C8 ; =0x022513EC + lsl r0, r0, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + add r2, r1, r6 + ldr r1, _022457CC ; =0x0000136B + strb r0, [r2, r1] + mov r1, #1 + add r2, sp, #4 + strb r1, [r2, #7] + ldr r1, [sp] + strh r7, [r2] + strh r1, [r2, #2] + mov r1, #0 + strb r1, [r2, #6] + strb r6, [r2, #4] + strb r0, [r2, #5] + mov r0, #0x3a + add r1, sp, #4 + bl FUN_02030C4C + add r0, r6, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245702: + mov r5, #0 + add r4, r5, #0 +_02245706: + ldr r0, _022457C8 ; =0x022513EC + ldr r0, [r0] + add r0, #0xa + add r0, r0, r4 + bl FUN_02026CA0 + cmp r0, #0 + beq _02245766 + add r0, r5, #0 + add r1, sp, #0xc + bl MOD18_02244E68 + add r0, sp, #4 + ldrh r0, [r0, #8] + cmp r7, r0 + bne _02245766 + add r0, sp, #4 + ldrh r1, [r0, #0xa] + ldr r0, [sp] + cmp r0, r1 + bne _02245766 + ldr r1, _022457C8 ; =0x022513EC + lsl r0, r5, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + add r2, r1, r6 + ldr r1, _022457CC ; =0x0000136B + mov r3, #0 + strb r0, [r2, r1] + add r2, sp, #4 + strb r3, [r2, #7] + ldr r1, [sp] + strh r7, [r2] + strh r1, [r2, #2] + strb r3, [r2, #6] + strb r6, [r2, #4] + strb r0, [r2, #5] + mov r0, #0x3a + add r1, sp, #4 + bl FUN_02030C4C + add r0, r6, #0 + mov r1, #0 + bl FUN_0204EAD8 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245766: + add r5, r5, #1 + add r4, #0x96 + cmp r5, #8 + ble _02245706 + ldr r1, [sp] + add r0, r7, #0 + bl MOD18_02244E24 + cmp r0, #0 + beq _022457C2 + ldr r0, _022457C8 ; =0x022513EC + lsl r2, r6, #1 + ldr r1, [r0] + ldr r4, _022457D0 ; =0x000013AC + add r0, r1, r2 + ldrh r2, [r0, r4] + add r3, sp, #4 + strh r2, [r3, #0xe] + add r2, r4, #0 + add r2, #0x10 + ldrh r2, [r0, r2] + strh r2, [r3, #0x10] + add r2, r4, #0 + strb r6, [r3, #0x12] + add r2, #0x20 + ldrh r0, [r0, r2] + mov r2, #0 + sub r4, #0x41 + strb r0, [r3, #0x13] + strb r2, [r3, #0x14] + add r0, r1, r6 + strb r2, [r0, r4] + ldrh r1, [r3, #0xe] + ldrh r2, [r3, #0x10] + ldrb r3, [r3, #0x13] + add r0, r6, #0 + bl FUN_0204E794 + add r1, sp, #0x10 + mov r0, #0x39 + add r1, #2 + bl FUN_02030C4C + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022457C2: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022457C8: .word 0x022513EC +_022457CC: .word 0x0000136B +_022457D0: .word 0x000013AC + thumb_func_end MOD18_0224566C + + thumb_func_start MOD18_022457D4 +MOD18_022457D4: ; 0x022457D4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _022457E6 + mov r1, #4 + bl FUN_020021EC +_022457E6: + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_022457D4 + + thumb_func_start MOD18_022457F8 +MOD18_022457F8: ; 0x022457F8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0224580A + mov r1, #4 + bl FUN_020021EC +_0224580A: + add r0, r4, #0 + mov r2, #0 + add r1, sp, #0 + strb r2, [r1, #1] + add r0, #0x2c + ldrb r0, [r0] + strb r0, [r1] + strb r2, [r1, #2] + mov r0, #0x3b + add r1, sp, #0 + bl FUN_020311D0 + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + bl MOD18_022479A0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_022457F8 + + thumb_func_start MOD18_02245838 +MOD18_02245838: ; 0x02245838 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + mov r5, #0 + ldr r6, [r4] + cmp r0, #7 + bhi _02245896 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02245856: ; jump table + .short _02245866 - _02245856 - 2 ; case 0 + .short _0224588A - _02245856 - 2 ; case 1 + .short _022458B0 - _02245856 - 2 ; case 2 + .short _022458D4 - _02245856 - 2 ; case 3 + .short _022458F8 - _02245856 - 2 ; case 4 + .short _0224592A - _02245856 - 2 ; case 5 + .short _0224594E - _02245856 - 2 ; case 6 + .short _02245972 - _02245856 - 2 ; case 7 +_02245866: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02245874 + mov r6, #0x2f + mov r0, #3 + b _02245878 +_02245874: + mov r6, #0x32 + mov r0, #1 +_02245878: + str r0, [r4, #0xc] + bl MOD18_0223D638 + mov r2, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _022459A0 +_0224588A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02245898 +_02245896: + b _022459A0 +_02245898: + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _022459E0 ; =0x022504F8 + ldr r2, _022459E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #2 + str r0, [r4, #0xc] + b _022459A0 +_022458B0: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _022458C6 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #7 + str r0, [r4, #0xc] + b _022459A0 +_022458C6: + sub r1, r5, #1 + cmp r0, r1 + beq _022459A0 + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _022459A0 +_022458D4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022459A0 + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _022459E0 ; =0x022504F8 + ldr r2, _022459E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #4 + str r0, [r4, #0xc] + b _022459A0 +_022458F8: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _0224591C + add r0, r5, #0 + str r0, [r4, #4] + bl MOD18_0223D638 + add r2, r5, #0 + mov r1, #0x30 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #5 + str r0, [r4, #0xc] + b _022459A0 +_0224591C: + sub r1, r5, #1 + cmp r0, r1 + beq _022459A0 + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _022459A0 +_0224592A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022459A0 + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _022459E0 ; =0x022504F8 + ldr r2, _022459E4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #6 + str r0, [r4, #0xc] + b _022459A0 +_0224594E: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245964 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #7 + str r0, [r4, #0xc] + b _022459A0 +_02245964: + sub r1, r5, #1 + cmp r0, r1 + beq _022459A0 + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _022459A0 +_02245972: + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #1 + add r1, sp, #4 + strb r0, [r1, #1] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + strb r0, [r1] + add r0, r5, #0 + strb r0, [r1, #2] + mov r0, #0x3b + add r1, sp, #4 + bl FUN_020311D0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457D4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022459A0: + bl FUN_0202EDD8 + cmp r0, #0 + bne _022459C4 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #8 + bhs _022459C4 + bl FUN_02030E7C + cmp r0, #0 + bne _022459C4 + bl FUN_02031190 + cmp r0, #0 + beq _022459C4 + mov r5, #1 +_022459C4: + cmp r5, #0 + beq _022459DC + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457F8 + bl FUN_0204F7FC +_022459DC: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022459E0: .word 0x022504F8 +_022459E4: .word 0x000003D9 + thumb_func_end MOD18_02245838 + + thumb_func_start MOD18_022459E8 +MOD18_022459E8: ; 0x022459E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + str r3, [sp] + bl MOD18_02247984 + mov r0, #4 + mov r1, #0x30 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x18] + str r6, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [sp, #0x18] + str r7, [r4, #0x20] + add r0, #0x2b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x2c + strb r1, [r0] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [sp] + add r1, r4, #0 + str r0, [r4, #0x24] + ldr r0, _02245A48 ; =MOD18_02245838 + str r5, [r4] + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r4, #8] + ldr r1, [r4, #8] + ldr r2, _02245A4C ; =MOD18_022457F8 + add r0, r4, #0 + bl MOD18_0223E688 + bl FUN_0204F7E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245A48: .word MOD18_02245838 +_02245A4C: .word MOD18_022457F8 + thumb_func_end MOD18_022459E8 + + thumb_func_start MOD18_02245A50 +MOD18_02245A50: ; 0x02245A50 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r6, r1, #0 + add r7, r2, #0 + mov r4, #0 + str r3, [sp] + cmp r0, #0 + bne _02245AA2 + mov r0, #0xb + mov r1, #0x30 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x18] + str r6, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [sp, #0x18] + str r7, [r4, #0x20] + add r0, #0x2b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x2c + strb r1, [r0] + ldr r0, [r5, #0x1c] + ldr r0, [r0] + cmp r0, #2 + beq _02245A9A + bl ErrorHandling +_02245A9A: + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [sp] + str r0, [r4, #0x24] +_02245AA2: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02245A50 + + thumb_func_start MOD18_02245AA8 +MOD18_02245AA8: ; 0x02245AA8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + mov r7, #0 + str r0, [sp] + str r1, [sp, #4] + add r4, r7, #0 +_02245AB4: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _02245B0C + ldr r0, [sp, #4] + cmp r0, #0 + beq _02245AD6 + add r0, r4, #0 + bl FUN_0204E544 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E598 + b _02245AE4 +_02245AD6: + add r0, r4, #0 + bl FUN_0204E3EC + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E440 +_02245AE4: + add r5, r0, #0 + ldr r0, _02245B18 ; =0x0000FFFF + cmp r6, r0 + bne _02245AF0 + cmp r5, r0 + beq _02245B0C +_02245AF0: + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02245B0C + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02244DE8 + ldr r1, [sp] + cmp r0, r1 + bne _02245B0C + add r7, r7, #1 +_02245B0C: + add r4, r4, #1 + cmp r4, #8 + blt _02245AB4 + add r0, r7, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245B18: .word 0x0000FFFF + thumb_func_end MOD18_02245AA8 + + thumb_func_start MOD18_02245B1C +MOD18_02245B1C: ; 0x02245B1C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r2, [sp, #8] + add r6, r0, #0 + add r7, r1, #0 + str r3, [sp, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DBB4 + add r5, r0, #0 + ldr r1, [sp, #0x30] + mov r0, #2 + bl FUN_02012838 + add r4, r0, #0 + add r1, r5, #0 + mov r2, #0x26 + mov r3, #0 + bl FUN_02012880 + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x27 + mov r3, #1 + bl FUN_02012880 + ldr r0, [sp, #0x30] + mov r1, #1 + str r4, [sp, #0x10] + bl FUN_02018FF4 + add r1, r0, #0 + str r1, [sp, #0x14] + mov r0, #0 + add r3, sp, #0x10 + strb r0, [r3, #8] + mov r0, #1 + strb r0, [r3, #9] + mov r0, #2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + mov r2, #0xf + bic r0, r2 + strb r0, [r3, #0xb] + ldrb r4, [r3, #0xb] + mov r0, #0x30 + bic r4, r0 + strb r4, [r3, #0xb] + ldrb r0, [r3, #0xb] + bic r0, r2 + strb r0, [r3, #0xb] + add r0, r6, #0 + add r2, r7, #0 + bl FUN_02019150 + ldr r0, [sp, #0x14] + ldr r2, [sp, #8] + ldr r3, [sp, #0xc] + mov r1, #1 + bl FUN_0200CCA4 + ldr r0, [sp, #0x30] + mov r2, #0 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + add r0, sp, #0x10 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_02245B1C + + thumb_func_start MOD18_02245BB4 +MOD18_02245BB4: ; 0x02245BB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r1, #0 + add r7, r0, #0 + ldr r0, [r4, #0xc] + mov r5, #0 + ldr r6, [r4] + cmp r0, #0xa + bhi _02245C7A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02245BD2: ; jump table + .short _02245BE8 - _02245BD2 - 2 ; case 0 + .short _02245C14 - _02245BD2 - 2 ; case 1 + .short _02245C38 - _02245BD2 - 2 ; case 2 + .short _02245C5C - _02245BD2 - 2 ; case 3 + .short _02245C6E - _02245BD2 - 2 ; case 4 + .short _02245C94 - _02245BD2 - 2 ; case 5 + .short _02245CF8 - _02245BD2 - 2 ; case 6 + .short _02245D1C - _02245BD2 - 2 ; case 7 + .short _02245D4E - _02245BD2 - 2 ; case 8 + .short _02245D6C - _02245BD2 - 2 ; case 9 + .short _02245D96 - _02245BD2 - 2 ; case 10 +_02245BE8: + add r0, r4, #0 + add r0, #0x2c + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x2b + ldrb r0, [r0] + cmp r1, r0 + beq _02245BFE + mov r6, #0x2d + mov r0, #1 + b _02245C02 +_02245BFE: + mov r6, #0x29 + mov r0, #4 +_02245C02: + str r0, [r4, #0xc] + bl MOD18_0223D638 + mov r2, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _02245DCE +_02245C14: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245C7A + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _02245E08 ; =0x022504F8 + ldr r2, _02245E0C ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #2 + str r0, [r4, #0xc] + b _02245DCE +_02245C38: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245C4E + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #3 + str r0, [r4, #0xc] + b _02245DCE +_02245C4E: + sub r1, r5, #1 + cmp r0, r1 + beq _02245C7A + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _02245DCE +_02245C5C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245C7A + mov r0, #0xa + str r0, [r4, #0xc] + b _02245DCE +_02245C6E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02245C7C +_02245C7A: + b _02245DCE +_02245C7C: + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _02245E08 ; =0x022504F8 + ldr r2, _02245E0C ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #4] + mov r0, #5 + str r0, [r4, #0xc] + b _02245DCE +_02245C94: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245CEA + add r0, r5, #0 + str r0, [r4, #4] + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + bl FUN_0204EE9C + cmp r0, #0 + bne _02245CC2 + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + add r1, r5, #0 + bl MOD18_02245AA8 + cmp r0, #0 + ble _02245CD6 +_02245CC2: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x2c + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #3 + str r0, [r4, #0xc] + b _02245DCE +_02245CD6: + bl MOD18_0223D638 + add r2, r5, #0 + mov r1, #0x25 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #6 + str r0, [r4, #0xc] + b _02245DCE +_02245CEA: + sub r1, r5, #1 + cmp r0, r1 + beq _02245DCE + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _02245DCE +_02245CF8: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245DCE + mov r0, #4 + str r0, [sp] + ldr r0, [r6, #8] + ldr r1, _02245E10 ; =0x02250500 + ldr r2, _02245E0C ; =0x000003D9 + mov r3, #0xb + bl MOD18_02245B1C + str r0, [r4, #4] + mov r0, #7 + str r0, [r4, #0xc] + b _02245DCE +_02245D1C: + ldr r0, [r4, #4] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02245D32 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #3 + str r0, [r4, #0xc] + b _02245DCE +_02245D32: + cmp r0, #1 + bne _02245D40 + add r0, r5, #0 + str r0, [r4, #4] + mov r0, #8 + str r0, [r4, #0xc] + b _02245DCE +_02245D40: + sub r1, r5, #1 + cmp r0, r1 + beq _02245DCE + add r0, r5, #0 + str r0, [r4, #4] + mov r5, #1 + b _02245DCE +_02245D4E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02245DCE + bl MOD18_0223D638 + bl MOD18_0224DD94 + bl FUN_0204FCF4 + mov r0, #9 + str r0, [r4, #0xc] + b _02245DCE +_02245D6C: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02245DCE + bl FUN_02031190 + cmp r0, #0 + bne _02245DCE + mov r1, #1 + add r0, sp, #4 + strb r1, [r0] + mov r0, #0x56 + add r1, sp, #4 + bl FUN_020311D0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457D4 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02245D96: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r4, #0 + mov r2, #1 + add r1, sp, #4 + strb r2, [r1, #2] + add r0, #0x2c + ldrb r0, [r0] + strb r0, [r1, #1] + strb r2, [r1, #3] + add r1, sp, #4 + mov r0, #0x3b + add r1, #1 + bl FUN_020311D0 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457D4 + ldr r0, _02245E14 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _02245E18 ; =0x000012E4 + add sp, #8 + strb r2, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} +_02245DCE: + add r0, r4, #0 + add r0, #0x2c + ldrb r0, [r0] + cmp r0, #0x10 + beq _02245DEC + bl FUN_0204E34C + cmp r0, #0 + bne _02245DEC + ldr r0, [r4, #0xc] + cmp r0, #8 + beq _02245DEC + cmp r0, #9 + beq _02245DEC + mov r5, #1 +_02245DEC: + cmp r5, #0 + beq _02245E04 + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r7, #0 + add r1, r4, #0 + bl MOD18_022457F8 + bl FUN_0204F7FC +_02245E04: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245E08: .word 0x022504F8 +_02245E0C: .word 0x000003D9 +_02245E10: .word 0x02250500 +_02245E14: .word 0x022513EC +_02245E18: .word 0x000012E4 + thumb_func_end MOD18_02245BB4 + + thumb_func_start MOD18_02245E1C +MOD18_02245E1C: ; 0x02245E1C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #4 + mov r1, #0x30 + add r7, r2, #0 + str r3, [sp] + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x30 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x18] + str r6, [r4, #0x1c] + add r0, r4, #0 + ldr r1, [sp, #0x18] + str r7, [r4, #0x20] + add r0, #0x2b + strb r1, [r0] + add r0, r4, #0 + ldr r1, [sp, #0x1c] + add r0, #0x2c + strb r1, [r0] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [sp] + mov r1, #0 + str r0, [r4, #0x24] + add r0, r4, #0 + str r5, [r4] + add r0, #0x29 + strb r1, [r0] + bl MOD18_02247984 + ldr r0, _02245E84 ; =MOD18_02245BB4 + add r1, r4, #0 + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r4, #8] + ldr r1, [r4, #8] + ldr r2, _02245E88 ; =MOD18_022457F8 + add r0, r4, #0 + bl MOD18_0223E688 + bl FUN_0204F7E4 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245E84: .word MOD18_02245BB4 +_02245E88: .word MOD18_022457F8 + thumb_func_end MOD18_02245E1C + + thumb_func_start MOD18_02245E8C +MOD18_02245E8C: ; 0x02245E8C + mov r0, #8 + bx lr + thumb_func_end MOD18_02245E8C + + thumb_func_start MOD18_02245E90 +MOD18_02245E90: ; 0x02245E90 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r0, _02245F10 ; =0x022513EC + add r4, r2, #0 + ldr r1, [r0] + ldrb r0, [r4, #4] + mov r2, #0xff + add r1, r1, r0 + ldr r0, _02245F14 ; =0x00001363 + strb r2, [r1, r0] + ldrb r5, [r4, #4] + bl FUN_02031190 + cmp r5, r0 + bne _02245EFA + bl MOD18_0224D344 + bl MOD18_02248FC8 + bl MOD18_0223E6B8 + bl FUN_02031190 + mov r1, #0 + bl MOD18_0223FCE8 + mov r0, #0x2b + bl FUN_020311DC + ldr r1, _02245F10 ; =0x022513EC + ldr r0, _02245F18 ; =0x000013E6 + ldr r2, [r1] + mov r3, #0 + strb r3, [r2, r0] + ldrb r0, [r4, #4] + str r0, [sp] + ldrb r0, [r4, #6] + str r0, [sp, #4] + ldr r0, [r1] + ldrh r1, [r4] + ldrh r2, [r4, #2] + ldrb r3, [r4, #5] + ldr r0, [r0] + bl MOD18_0224686C + ldr r0, _02245F10 ; =0x022513EC + mov r2, #0 + ldr r1, [r0] + mov r0, #0xa + lsl r0, r0, #8 + str r2, [r1, r0] + add sp, #8 + pop {r3, r4, r5, pc} +_02245EFA: + add r0, r5, #0 + bl MOD18_02243FB8 + ldrb r0, [r4, #4] + ldrh r1, [r4] + ldrh r2, [r4, #2] + ldrb r3, [r4, #5] + bl FUN_0204E7CC + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02245F10: .word 0x022513EC +_02245F14: .word 0x00001363 +_02245F18: .word 0x000013E6 + thumb_func_end MOD18_02245E90 + + thumb_func_start MOD18_02245F1C +MOD18_02245F1C: ; 0x02245F1C + ldr r3, _02245F24 ; =0x020311DD + mov r0, #0x38 + bx r3 + nop +_02245F24: .word 0x020311DD + thumb_func_end MOD18_02245F1C + + thumb_func_start MOD18_02245F28 +MOD18_02245F28: ; 0x02245F28 + push {r3, r4} + ldr r2, _02245F44 ; =0x022513EC + mov r4, #0xff + ldr r1, [r2] + add r3, r1, r0 + ldr r1, _02245F48 ; =0x0000136B + strb r4, [r3, r1] + ldr r2, [r2] + add r1, #8 + add r0, r2, r0 + strb r4, [r0, r1] + pop {r3, r4} + bx lr + nop +_02245F44: .word 0x022513EC +_02245F48: .word 0x0000136B + thumb_func_end MOD18_02245F28 + + thumb_func_start MOD18_02245F4C +MOD18_02245F4C: ; 0x02245F4C + ldr r1, _02245F68 ; =0x022513EC + ldr r1, [r1] + cmp r1, #0 + beq _02245F62 + add r1, r1, r0 + ldr r0, _02245F6C ; =0x0000136B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02245F62 + mov r0, #1 + bx lr +_02245F62: + mov r0, #0 + bx lr + nop +_02245F68: .word 0x022513EC +_02245F6C: .word 0x0000136B + thumb_func_end MOD18_02245F4C + + thumb_func_start MOD18_02245F70 +MOD18_02245F70: ; 0x02245F70 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, _02245F9C ; =0x022513EC + add r7, r1, #0 + ldr r1, [r0] + add r5, r3, #0 + mov r0, #0x96 + add r1, #8 + mul r0, r5 + add r4, r1, r0 + beq _02245F9A + add r0, r2, #0 + bl FUN_0204F610 + add r3, r0, #0 + add r0, r4, #2 + add r1, r6, #0 + add r2, r7, #0 + bl FUN_02026C68 + strb r5, [r4] +_02245F9A: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245F9C: .word 0x022513EC + thumb_func_end MOD18_02245F70 + + thumb_func_start MOD18_02245FA0 +MOD18_02245FA0: ; 0x02245FA0 + push {r3, lr} + bl FUN_02031190 + ldr r1, _02245FB8 ; =0x022513EC + mov r0, #0x35 + ldr r2, [r1] + ldr r1, _02245FBC ; =0x00000968 + add r1, r2, r1 + mov r2, #0x96 + bl FUN_0203105C + pop {r3, pc} + .align 2, 0 +_02245FB8: .word 0x022513EC +_02245FBC: .word 0x00000968 + thumb_func_end MOD18_02245FA0 + + thumb_func_start MOD18_02245FC0 +MOD18_02245FC0: ; 0x02245FC0 + push {r4, lr} + ldr r1, _02245FDC ; =0x022513EC + add r4, r0, #0 + ldr r3, [r1] + mov r2, #0x96 + add r1, r4, #0 + add r3, #8 + mul r1, r2 + mov r0, #0x36 + add r1, r3, r1 + bl FUN_02031000 + pop {r4, pc} + nop +_02245FDC: .word 0x022513EC + thumb_func_end MOD18_02245FC0 + + thumb_func_start MOD18_02245FE0 +MOD18_02245FE0: ; 0x02245FE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + ldr r0, _022460EC ; =0x022513EC + add r6, r2, #0 + ldr r0, [r0] + cmp r0, #0 + beq _022460E6 + bl FUN_02031190 + ldrb r1, [r6, #1] + cmp r1, r0 + bne _02246020 + ldr r0, _022460EC ; =0x022513EC + ldr r2, [r0] + ldr r0, _022460F0 ; =0x000012E4 + ldrb r1, [r2, r0] + cmp r1, #2 + bne _02246020 + mov r1, #0 + strb r1, [r2, r0] + bl FUN_0204F7FC + mov r0, #0x38 + bl FUN_020311DC + mov r0, #0 + bl FUN_0204D168 + bl MOD18_022479A0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_02246020: + ldr r0, _022460EC ; =0x022513EC + mov r2, #5 + ldr r1, [r0] + ldr r0, _022460F0 ; =0x000012E4 + strb r2, [r1, r0] + ldrb r5, [r6] + cmp r5, #0x11 + blt _02246034 + bl ErrorHandling +_02246034: + ldr r0, _022460EC ; =0x022513EC + mov r2, #0x96 + ldr r4, [r0] + add r7, r5, #0 + add r4, #8 + mul r7, r2 + add r5, r4, r7 + add r0, r6, #0 + add r1, r5, #0 + bl MI_CpuCopy8 + ldr r2, _022460EC ; =0x022513EC + ldrb r1, [r5, #1] + ldr r3, [r2] + ldrb r0, [r4, r7] + add r3, r3, r1 + ldr r1, _022460F4 ; =0x00001363 + strb r0, [r3, r1] + ldrb r3, [r4, r7] + cmp r3, #0x10 + beq _02246068 + ldrb r0, [r5, #1] + ldr r2, [r2] + add r1, #0x18 + add r0, r2, r0 + strb r3, [r0, r1] +_02246068: + ldrb r0, [r5] + add r1, sp, #8 + bl MOD18_02244EB4 + ldrb r4, [r5, #1] + bl FUN_02031190 + cmp r4, r0 + bne _022460D8 + ldr r1, _022460EC ; =0x022513EC + ldr r0, _022460F8 ; =0x000013E6 + ldr r2, [r1] + mov r3, #1 + strb r3, [r2, r0] + ldrb r0, [r5, #1] + mov r3, #0 + add r2, sp, #8 + str r0, [sp] + str r3, [sp, #4] + ldr r0, [r1] + ldrh r1, [r2] + ldrh r2, [r2, #2] + ldr r0, [r0] + sub r2, r2, #1 + bl MOD18_0224686C + ldr r0, _022460EC ; =0x022513EC + ldr r1, [r0] + mov r0, #0xa + lsl r0, r0, #8 + str r5, [r1, r0] + add r0, r5, #2 + bl FUN_02026C88 + ldr r1, _022460EC ; =0x022513EC + ldr r2, [r1] + ldr r1, _022460FC ; =0x000013DC + strh r0, [r2, r1] + add r0, r5, #2 + bl FUN_02026C90 + ldr r1, _022460EC ; =0x022513EC + ldr r2, [r1] + ldr r1, _02246100 ; =0x000013DE + strh r0, [r2, r1] + add r0, r5, #2 + bl FUN_02026C98 + ldr r1, _022460EC ; =0x022513EC + ldr r2, [r1] + ldr r1, _02246104 ; =0x000013E0 + strb r0, [r2, r1] + bl MOD18_0223E7FC + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_022460D8: + add r2, sp, #8 + ldrh r1, [r2] + ldrh r2, [r2, #2] + add r0, r4, #0 + mov r3, #0 + bl FUN_0204E7CC +_022460E6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_022460EC: .word 0x022513EC +_022460F0: .word 0x000012E4 +_022460F4: .word 0x00001363 +_022460F8: .word 0x000013E6 +_022460FC: .word 0x000013DC +_02246100: .word 0x000013DE +_02246104: .word 0x000013E0 + thumb_func_end MOD18_02245FE0 + + thumb_func_start MOD18_02246108 +MOD18_02246108: ; 0x02246108 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, _02246188 ; =0x022513EC + ldr r6, [r0] + cmp r6, #0 + beq _02246186 + mov r3, #0x96 + add r7, r5, #0 + add r6, #8 + mul r7, r3 + add r4, r6, r7 + add r0, r2, #0 + add r1, r4, #0 + add r2, r3, #0 + bl MI_CpuCopy8 + strb r5, [r6, r7] + ldr r0, _02246188 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _0224618C ; =0x000013E2 + add r6, r5, #0 + strb r2, [r1, r0] + mov r0, #6 + mul r6, r0 + add r0, r4, #2 + bl FUN_02026C88 + ldr r1, _02246188 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r6 + ldr r1, _02246190 ; =0x000012B4 + strh r0, [r2, r1] + add r0, r4, #2 + bl FUN_02026C90 + ldr r1, _02246188 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r6 + ldr r1, _02246194 ; =0x000012B6 + strh r0, [r2, r1] + add r0, r4, #2 + bl FUN_02026C98 + ldr r1, _02246188 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r6 + ldr r1, _02246198 ; =0x000012B8 + strb r0, [r2, r1] + bl MOD18_022461CC + ldr r1, _02246188 ; =0x022513EC + add r0, r4, #2 + ldr r2, [r1] + ldr r1, _0224619C ; =0x00000A04 + add r2, r2, r1 + lsl r1, r5, #7 + add r1, r2, r1 + bl MOD18_02245128 + add r0, r5, #0 + bl MOD18_0224784C +_02246186: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246188: .word 0x022513EC +_0224618C: .word 0x000013E2 +_02246190: .word 0x000012B4 +_02246194: .word 0x000012B6 +_02246198: .word 0x000012B8 +_0224619C: .word 0x00000A04 + thumb_func_end MOD18_02246108 + + thumb_func_start MOD18_022461A0 +MOD18_022461A0: ; 0x022461A0 + mov r0, #0x96 + bx lr + thumb_func_end MOD18_022461A0 + + thumb_func_start MOD18_022461A4 +MOD18_022461A4: ; 0x022461A4 + ldr r0, _022461B0 ; =0x022513EC + ldr r1, [r0] + ldr r0, _022461B4 ; =0x000013E3 + ldrb r0, [r1, r0] + bx lr + nop +_022461B0: .word 0x022513EC +_022461B4: .word 0x000013E3 + thumb_func_end MOD18_022461A4 + + thumb_func_start MOD18_022461B8 +MOD18_022461B8: ; 0x022461B8 + ldr r0, _022461C4 ; =0x022513EC + mov r2, #0 + ldr r1, [r0] + ldr r0, _022461C8 ; =0x000013E3 + strb r2, [r1, r0] + bx lr + .align 2, 0 +_022461C4: .word 0x022513EC +_022461C8: .word 0x000013E3 + thumb_func_end MOD18_022461B8 + + thumb_func_start MOD18_022461CC +MOD18_022461CC: ; 0x022461CC + push {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r7, _02246238 ; =0x022513EC + mov ip, r4 + add r5, r4, #0 +_022461D6: + ldr r0, [r7] + ldr r1, _0224623C ; =0x000012B4 + add r2, r0, r1 + add r1, r0, r4 + ldrh r6, [r2, r5] + ldr r0, _02246240 ; =0x0000138B + add r3, r2, r5 + strb r6, [r1, r0] + ldrh r0, [r2, r5] + add r5, r5, #6 + asr r1, r0, #8 + mov r0, #0xf + add r2, r1, #0 + and r2, r0 + ldrh r0, [r3, #2] + asr r1, r0, #4 + mov r0, #0xf0 + and r0, r1 + add r2, r2, r0 + ldr r0, [r7] + add r1, r0, r4 + ldr r0, _02246244 ; =0x0000138C + strb r2, [r1, r0] + ldr r0, [r7] + ldrh r2, [r3, #2] + add r1, r0, r4 + ldr r0, _02246248 ; =0x0000138D + strb r2, [r1, r0] + ldr r1, [r7] + ldrb r0, [r3, #4] + add r2, r1, r4 + ldr r1, _0224624C ; =0x0000138E + add r4, r4, #4 + strb r0, [r2, r1] + mov r0, ip + add r0, r0, #1 + mov ip, r0 + cmp r0, #8 + blt _022461D6 + ldr r1, _02246238 ; =0x022513EC + mov r0, #0x37 + ldr r2, [r1] + ldr r1, _02246240 ; =0x0000138B + add r1, r2, r1 + mov r2, #0x20 + bl FUN_02031000 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246238: .word 0x022513EC +_0224623C: .word 0x000012B4 +_02246240: .word 0x0000138B +_02246244: .word 0x0000138C +_02246248: .word 0x0000138D +_0224624C: .word 0x0000138E + thumb_func_end MOD18_022461CC + + thumb_func_start MOD18_02246250 +MOD18_02246250: ; 0x02246250 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, _022462F8 ; =0x022513EC + str r2, [sp] + ldr r0, [r0] + cmp r0, #0 + beq _022462F2 + mov r4, #0 +_02246260: + add r0, r4, #0 + bl MOD18_02246430 + add r4, r4, #1 + cmp r4, #8 + blt _02246260 + mov r5, #0 + add r7, r5, #0 + add r6, r5, #0 + add r4, sp, #4 +_02246274: + ldr r0, _022462F8 ; =0x022513EC + ldr r1, [r0] + ldr r0, _022462FC ; =0x00001284 + add r0, r1, r0 + mov ip, r0 + ldr r0, [sp] + add r2, r0, r5 + ldrb r0, [r0, r5] + add r5, r5, #4 + strh r0, [r4] + ldrb r0, [r2, #1] + ldrh r3, [r4] + lsl r1, r0, #8 + mov r0, #0xf + lsl r0, r0, #8 + and r0, r1 + add r0, r3, r0 + strh r0, [r4] + ldrb r0, [r2, #1] + lsl r1, r0, #4 + mov r0, #0xf + lsl r0, r0, #8 + and r0, r1 + strh r0, [r4, #2] + ldrh r1, [r4, #2] + ldrb r0, [r2, #2] + add r0, r1, r0 + strh r0, [r4, #2] + ldrb r0, [r2, #3] + strb r0, [r4, #4] + ldrh r1, [r4] + ldr r0, _02246300 ; =0x00000FFF + cmp r1, r0 + beq _022462E0 + add r0, sp, #4 + ldrh r1, [r0, #2] + ldr r0, _02246300 ; =0x00000FFF + cmp r1, r0 + beq _022462E0 + mov r1, ip + add r0, sp, #4 + add r1, r1, r6 + mov r2, #6 + bl MI_CpuCopy8 + add r0, sp, #4 + add r1, sp, #4 + add r2, sp, #4 + ldrh r0, [r0] + ldrh r1, [r1, #2] + ldrb r2, [r2, #4] + add r3, r7, #0 + bl MOD18_0224630C +_022462E0: + add r7, r7, #1 + add r6, r6, #6 + cmp r7, #8 + blt _02246274 + ldr r0, _022462F8 ; =0x022513EC + mov r2, #1 + ldr r1, [r0] + ldr r0, _02246304 ; =0x000013E3 + strb r2, [r1, r0] +_022462F2: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_022462F8: .word 0x022513EC +_022462FC: .word 0x00001284 +_02246300: .word 0x00000FFF +_02246304: .word 0x000013E3 + thumb_func_end MOD18_02246250 + + thumb_func_start MOD18_02246308 +MOD18_02246308: ; 0x02246308 + mov r0, #0x20 + bx lr + thumb_func_end MOD18_02246308 + + thumb_func_start MOD18_0224630C +MOD18_0224630C: ; 0x0224630C + push {r3, r4, r5, r6} + ldr r5, _02246330 ; =0x022513EC + ldr r4, [r5] + add r6, r4, r3 + ldr r4, _02246334 ; =0x0000133A + strb r2, [r6, r4] + lsl r2, r3, #1 + ldr r3, [r5] + add r6, r3, r2 + add r3, r4, #0 + sub r3, #0x44 + strh r0, [r6, r3] + ldr r0, [r5] + sub r4, #0x22 + add r0, r0, r2 + strh r1, [r0, r4] + pop {r3, r4, r5, r6} + bx lr + .align 2, 0 +_02246330: .word 0x022513EC +_02246334: .word 0x0000133A + thumb_func_end MOD18_0224630C + + thumb_func_start MOD18_02246338 +MOD18_02246338: ; 0x02246338 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + ldr r0, _02246414 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02246418 ; =0x000013E4 + ldrb r1, [r2, r0] + cmp r1, #0 + bne _0224640E + add r0, r0, #1 + ldrb r0, [r2, r0] + cmp r0, #0 + beq _0224640E + ldr r0, [r2] + ldr r0, [r0, #0x38] + cmp r0, #0 + beq _0224640E + bl FUN_02055320 + add r4, r0, #0 + ldr r0, _02246414 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _0224640E + mov r5, #0 + add r4, r5, #0 +_0224637A: + cmp r5, #8 + bge _02246394 + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + bne _02246394 + add r0, r5, #0 + bl MOD18_022453A8 + add r0, r5, #0 + bl MOD18_022475F8 +_02246394: + ldr r0, _02246414 ; =0x022513EC + ldr r1, [r0] + ldr r0, _0224641C ; =0x0000133A + add r2, r1, r5 + ldrb r6, [r2, r0] + cmp r6, #0xff + beq _02246406 + ldr r3, _02246420 ; =0x000012F6 + add r0, r1, r4 + ldrh r3, [r0, r3] + str r3, [sp, #8] + ldr r3, _02246424 ; =0x00001318 + ldrh r7, [r0, r3] + add r0, r3, #0 + sub r0, #0x33 + ldrb r0, [r2, r0] + cmp r0, #0xff + beq _022463C2 + ldr r1, [r1] + add r1, #0xa0 + ldr r1, [r1] + bl FUN_021E7C80 +_022463C2: + ldr r0, [sp, #8] + ldr r2, _02246428 ; =0x000001AD + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, #2 + lsl r1, r7, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, _02246414 ; =0x022513EC + add r2, r6, r2 + ldr r0, [r0] + add r3, sp, #0xc + ldr r1, [r0] + mov r0, #0 + str r0, [sp] + ldr r0, [r1, #0x4c] + str r0, [sp, #4] + add r0, r1, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r1, #0x2c] + bl FUN_021E7FBC + ldr r1, _02246414 ; =0x022513EC + ldr r1, [r1] + add r2, r1, r5 + ldr r1, _0224642C ; =0x000012E5 + strb r0, [r2, r1] +_02246406: + add r5, r5, #1 + add r4, r4, #2 + cmp r5, #0x11 + blt _0224637A +_0224640E: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246414: .word 0x022513EC +_02246418: .word 0x000013E4 +_0224641C: .word 0x0000133A +_02246420: .word 0x000012F6 +_02246424: .word 0x00001318 +_02246428: .word 0x000001AD +_0224642C: .word 0x000012E5 + thumb_func_end MOD18_02246338 + + thumb_func_start MOD18_02246430 +MOD18_02246430: ; 0x02246430 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02246464 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02246468 ; =0x000012E5 + add r1, r2, r4 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246460 + ldr r1, [r2] + add r1, #0xa0 + ldr r1, [r1] + bl FUN_021E7C80 + ldr r1, _02246464 ; =0x022513EC + mov r3, #0xff + ldr r0, [r1] + add r2, r0, r4 + ldr r0, _02246468 ; =0x000012E5 + strb r3, [r2, r0] + ldr r1, [r1] + add r0, #0x55 + add r1, r1, r4 + strb r3, [r1, r0] +_02246460: + pop {r4, pc} + nop +_02246464: .word 0x022513EC +_02246468: .word 0x000012E5 + thumb_func_end MOD18_02246430 + + thumb_func_start MOD18_0224646C +MOD18_0224646C: ; 0x0224646C + push {r4, lr} + ldr r0, _02246488 ; =0x022513EC + ldr r0, [r0] + cmp r0, #0 + beq _02246484 + mov r4, #0 +_02246478: + add r0, r4, #0 + bl MOD18_02246430 + add r4, r4, #1 + cmp r4, #0x11 + blt _02246478 +_02246484: + pop {r4, pc} + nop +_02246488: .word 0x022513EC + thumb_func_end MOD18_0224646C + + thumb_func_start MOD18_0224648C +MOD18_0224648C: ; 0x0224648C + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022464AA + cmp r0, #1 + beq _022464B8 + b _022464CA +_022464AA: + add r0, r5, #0 + bl FUN_02037394 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _022464CA +_022464B8: + add r0, r5, #0 + bl FUN_0203739C + cmp r0, #0 + bne _022464CA + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} +_022464CA: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224648C + + thumb_func_start MOD18_022464D0 +MOD18_022464D0: ; 0x022464D0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _022464EE + cmp r0, #1 + beq _022464FC + b _0224650E +_022464EE: + add r0, r5, #0 + bl FUN_02037350 + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + b _0224650E +_022464FC: + add r0, r5, #0 + bl FUN_020464A4 + cmp r0, #0 + beq _0224650E + mov r0, #0 + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} +_0224650E: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_022464D0 + + thumb_func_start MOD18_02246514 +MOD18_02246514: ; 0x02246514 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0xd + bhi _02246606 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224653A: ; jump table + .short _02246556 - _0224653A - 2 ; case 0 + .short _02246580 - _0224653A - 2 ; case 1 + .short _022465B0 - _0224653A - 2 ; case 2 + .short _022465C6 - _0224653A - 2 ; case 3 + .short _022465D8 - _0224653A - 2 ; case 4 + .short _022465FC - _0224653A - 2 ; case 5 + .short _02246610 - _0224653A - 2 ; case 6 + .short _0224663A - _0224653A - 2 ; case 7 + .short _02246802 - _0224653A - 2 ; case 8 + .short _022466DA - _0224653A - 2 ; case 9 + .short _022466F6 - _0224653A - 2 ; case 10 + .short _0224672E - _0224653A - 2 ; case 11 + .short _02246762 - _0224653A - 2 ; case 12 + .short _0224678C - _0224653A - 2 ; case 13 +_02246556: + mov r0, #0 + bl MOD18_02247970 + bl MOD18_02247984 + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x28 + strb r0, [r1] + bl FUN_02030FC8 + bl MOD18_0223CC80 + bl FUN_0204FD38 + cmp r0, #0 + beq _02246606 + mov r0, #1 + str r0, [r4, #0xc] + b _02246848 +_02246580: + bl FUN_0200E31C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + mov r1, #0x10 + mov r2, #0x12 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r5, #0x68] + bl MOD18_0224484C + ldr r0, _02246850 ; =0x00000603 + bl FUN_020054C8 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465B0: + bl FUN_0200E308 + cmp r0, #0 + beq _02246606 + ldr r0, [r5, #0x68] + cmp r0, #0 + bne _02246606 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465C6: + add r0, r6, #0 + bl MOD18_0224648C + cmp r0, #0 + beq _02246606 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465D8: + ldr r0, [r4, #0x14] + add r1, sp, #0xc + str r0, [sp, #0xc] + ldr r0, [r4, #0x18] + str r0, [sp, #0x10] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x14] + ldr r0, [r4, #0x20] + str r0, [sp, #0x18] + ldr r0, [r4, #0x24] + str r0, [sp, #0x1c] + add r0, r6, #0 + bl FUN_02049CB0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_022465FC: + add r0, r6, #0 + bl MOD18_022464D0 + cmp r0, #0 + bne _02246608 +_02246606: + b _02246848 +_02246608: + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_02246610: + add r0, r5, #0 + bl MOD18_02244824 + str r0, [r5, #0x68] + bl FUN_0200E31C + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x11 + mov r2, #0x13 + mov r3, #0 + bl FUN_0200E1D0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02246848 +_0224663A: + bl FUN_0200E308 + cmp r0, #0 + beq _0224670E + bl FUN_0202EDD8 + cmp r0, #0 + beq _02246660 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + bl MOD18_0223E2F4 + cmp r0, #0 + bne _02246660 + add r0, r4, #0 + mov r1, #0 + add r0, #0x2e + strb r1, [r0] + b _02246668 +_02246660: + add r0, r4, #0 + mov r1, #1 + add r0, #0x2e + strb r1, [r0] +_02246668: + bl FUN_02030FA8 + bl FUN_0204F7E4 + mov r3, #0x80 + str r3, [sp] + mov r0, #4 + str r0, [sp, #4] + mov r0, #0x32 + mov r1, #0x34 + mov r2, #0 + add r3, #0xc0 + bl FUN_02006930 + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r5, #8] + ldr r2, _02246854 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add r0, r4, #0 + add r0, #0x2d + ldrb r0, [r0] + cmp r0, #0 + beq _022466BA + bl FUN_0204F7D4 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x33 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #8 + str r0, [r4, #0xc] + b _02246848 +_022466BA: + ldr r0, _02246858 ; =0x022513EC + ldr r1, [r0] + ldr r0, _0224685C ; =0x000013E6 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _022466CC + mov r0, #0xd + str r0, [r4, #0xc] + b _02246848 +_022466CC: + add r0, r4, #0 + mov r1, #0 + add r0, #0x29 + strb r1, [r0] + mov r0, #9 + str r0, [r4, #0xc] + b _02246848 +_022466DA: + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x29 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x29 + strb r1, [r0] + mov r0, #0xa + str r0, [r4, #0xc] + b _02246848 +_022466F6: + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x29 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x29 + ldrb r0, [r0] + cmp r0, #0xa + bhi _02246710 +_0224670E: + b _02246848 +_02246710: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02246722 + add r0, r4, #0 + add r0, #0x2e + ldrb r0, [r0] + cmp r0, #0 + bne _02246728 +_02246722: + mov r0, #0xd + str r0, [r4, #0xc] + b _02246848 +_02246728: + mov r0, #0xb + str r0, [r4, #0xc] + b _02246848 +_0224672E: + bl FUN_0204FB14 + mov r0, #1 + mov r1, #0x24 + bl FUN_0205AFDC + add r1, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02057260 + mov r0, #1 + bl FUN_0204F6DC + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x44 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _02246860 ; =0x00000604 + bl FUN_020054C8 + mov r0, #0xc + str r0, [r4, #0xc] + b _02246848 +_02246762: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246848 + ldr r0, _02246864 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02246848 + mov r0, #0xd + str r0, [r4, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0 + bl FUN_0204F6DC + b _02246848 +_0224678C: + bl FUN_0202EDD8 + cmp r0, #0 + beq _022467A6 + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + bl MOD18_0223E2F4 + cmp r0, #0 + bne _022467A6 + bl FUN_0204FD24 + b _022467AA +_022467A6: + bl FUN_0204FDE4 +_022467AA: + bl FUN_0204F7FC + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_0202EDD8 + cmp r0, #0 + beq _022467CE + ldr r0, [r4, #0x1c] + ldr r1, [r4, #0x20] + bl MOD18_0223E2F4 + cmp r0, #0 + beq _022467CE + bl MOD18_0223E444 + b _022467D2 +_022467CE: + bl MOD18_0223E458 +_022467D2: + ldr r0, _02246858 ; =0x022513EC + ldr r2, _02246868 ; =0x000012E4 + ldr r0, [r0] + ldrb r1, [r0, r2] + cmp r1, #4 + bne _022467EC + ldr r1, _0224685C ; =0x000013E6 + ldrb r1, [r0, r1] + cmp r1, #0 + beq _022467EC + mov r1, #6 + strb r1, [r0, r2] + b _022467F2 +_022467EC: + ldr r1, _02246868 ; =0x000012E4 + mov r2, #0 + strb r2, [r0, r1] +_022467F2: + bl MOD18_022479A0 + mov r0, #1 + bl MOD18_02247970 + add sp, #0x20 + mov r0, #1 + pop {r4, r5, r6, pc} +_02246802: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224682A + ldr r0, _02246864 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224682A + mov r0, #0xd + str r0, [r4, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DD94 + add sp, #0x20 + mov r0, #0 + pop {r4, r5, r6, pc} +_0224682A: + bl FUN_02030F20 + cmp r0, #1 + ble _02246848 + add r0, r4, #0 + add r0, #0x28 + ldrb r0, [r0] + cmp r0, #0 + bne _02246848 + mov r0, #0xd + str r0, [r4, #0xc] + bl MOD18_0223D638 + bl MOD18_0224DD94 +_02246848: + mov r0, #0 + add sp, #0x20 + pop {r4, r5, r6, pc} + nop +_02246850: .word 0x00000603 +_02246854: .word 0x000003D9 +_02246858: .word 0x022513EC +_0224685C: .word 0x000013E6 +_02246860: .word 0x00000604 +_02246864: .word 0x021C48B8 +_02246868: .word 0x000012E4 + thumb_func_end MOD18_02246514 + + thumb_func_start MOD18_0224686C +MOD18_0224686C: ; 0x0224686C + push {r3, r4, r5, lr} + sub sp, #8 + ldr r5, [sp, #0x18] + add r4, r0, #0 + str r5, [sp] + str r5, [sp, #4] + bl MOD18_02245A50 + add r2, r0, #0 + beq _0224688E + ldr r1, [sp, #0x1c] + add r0, #0x2d + strb r1, [r0] + ldr r1, _02246894 ; =MOD18_02246514 + add r0, r4, #0 + bl FUN_020463CC +_0224688E: + add sp, #8 + pop {r3, r4, r5, pc} + nop +_02246894: .word MOD18_02246514 + thumb_func_end MOD18_0224686C + + thumb_func_start MOD18_02246898 +MOD18_02246898: ; 0x02246898 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + str r0, [sp, #4] + ldr r0, [r4, #0xc] + mov r7, #0 + ldr r5, [r4] + cmp r0, #0xa + bhi _0224692C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022468B6: ; jump table + .short _022468CC - _022468B6 - 2 ; case 0 + .short _02246914 - _022468B6 - 2 ; case 1 + .short _02246934 - _022468B6 - 2 ; case 2 + .short _02246980 - _022468B6 - 2 ; case 3 + .short _022469C6 - _022468B6 - 2 ; case 4 + .short _022469E0 - _022468B6 - 2 ; case 5 + .short _02246A04 - _022468B6 - 2 ; case 6 + .short _02246A80 - _022468B6 - 2 ; case 7 + .short _02246A80 - _022468B6 - 2 ; case 8 + .short _02246A28 - _022468B6 - 2 ; case 9 + .short _02246A40 - _022468B6 - 2 ; case 10 +_022468CC: + ldr r0, [r5, #0xc] + bl FUN_02026CA8 + bl FUN_02026CA0 + strb r0, [r4, #0x12] + bl FUN_0204F7E4 + bl MOD18_0223D638 + mov r1, #0x21 + bl MOD18_0224DDE8 + ldr r0, _02246AD0 ; =0x0000061E + bl FUN_020054C8 + ldr r0, [r5, #0x38] + bl FUN_020553A0 + add r1, r7, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD05_021E5E8C + bl MOD18_0223D638 + add r2, r7, #0 + mov r1, #0x21 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r0, #1 + str r0, [r4, #0xc] + add r0, r7, #0 + strb r0, [r4, #0x11] + b _02246A80 +_02246914: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224692C + ldrb r0, [r4, #0x11] + add r0, r0, #1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0x11] + cmp r0, #0x1e + bhi _0224692E +_0224692C: + b _02246A80 +_0224692E: + mov r0, #2 + str r0, [r4, #0xc] + b _02246A80 +_02246934: + bl FUN_02031190 + bl FUN_0204E4D4 + add r6, r0, #0 + bl FUN_02031190 + bl FUN_0204E50C + str r0, [sp, #8] + ldr r0, [r5, #0x38] + bl FUN_020552F8 + bl FUN_0204F610 + str r0, [sp, #0xc] + bl MOD18_0223D638 + add r2, r7, #0 + mov r1, #0x22 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r6, #0 + mov r3, #0x10 + bl MOD18_0224630C + ldr r3, [sp, #8] + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl FUN_021E5B30 + mov r0, #3 + str r0, [r4, #0xc] + b _02246A80 +_02246980: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246A80 + bl FUN_02031190 + add r1, r7, #0 + bl MOD18_02245AA8 + cmp r0, #0 + beq _022469A2 + mov r0, #4 + mov r6, #0x39 + str r0, [r4, #0xc] + b _022469B6 +_022469A2: + ldrb r0, [r4, #0x12] + cmp r0, #0 + beq _022469B0 + mov r0, #5 + mov r6, #0x24 + str r0, [r4, #0xc] + b _022469B6 +_022469B0: + mov r0, #5 + mov r6, #0x23 + str r0, [r4, #0xc] +_022469B6: + bl MOD18_0223D638 + mov r2, #0 + add r1, r6, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _02246A80 +_022469C6: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246A80 + ldr r0, _02246AD4 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r1, r0 + beq _02246A80 + add r7, r0, #0 + b _02246A80 +_022469E0: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02246A80 + mov r0, #4 + str r0, [sp] + ldr r0, [r5, #8] + ldr r1, _02246AD8 ; =0x022504F8 + ldr r2, _02246ADC ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #8] + mov r0, #6 + str r0, [r4, #0xc] + b _02246A80 +_02246A04: + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02246A1A + mov r0, #9 + str r0, [r4, #0xc] + add r0, r7, #0 + str r0, [r4, #8] + b _02246A80 +_02246A1A: + sub r1, r7, #1 + cmp r0, r1 + beq _02246A80 + mov r0, #0 + mov r7, #1 + str r0, [r4, #8] + b _02246A80 +_02246A28: + mov r0, #0x21 + bl MOD18_02249AD8 + bl MOD18_0223D638 + bl MOD18_0224DD94 + bl FUN_0204FCF4 + mov r0, #0xa + str r0, [r4, #0xc] + b _02246A80 +_02246A40: + bl FUN_0202EDD8 + cmp r0, #0 + beq _02246A80 + bl FUN_02031190 + cmp r0, #0 + bne _02246A80 + mov r1, #2 + add r0, sp, #0x10 + strb r1, [r0] + ldrb r1, [r4, #0x12] + cmp r1, #0 + beq _02246A60 + mov r1, #3 + strb r1, [r0] +_02246A60: + bl MOD18_02246FB4 + mov r0, #0x56 + add r1, sp, #0x10 + bl FUN_020311D0 + ldr r0, [sp, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_02246A80: + cmp r7, #0 + beq _02246ACA + bl MOD18_0223D638 + ldr r3, _02246AE0 ; =MOD18_022453E0 + mov r1, #0x38 + mov r2, #1 + bl MOD18_0224DCB8 + mov r0, #0x10 + bl MOD18_02246430 + bl FUN_02031190 + bl FUN_0204E4D4 + add r6, r0, #0 + bl FUN_02031190 + bl FUN_0204E50C + add r3, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + mov r2, #0 + bl FUN_021E5B30 + ldr r0, [sp, #4] + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + bl MOD18_022479A0 +_02246ACA: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02246AD0: .word 0x0000061E +_02246AD4: .word 0x021C48B8 +_02246AD8: .word 0x022504F8 +_02246ADC: .word 0x000003D9 +_02246AE0: .word MOD18_022453E0 + thumb_func_end MOD18_02246898 + + thumb_func_start MOD18_02246AE4 +MOD18_02246AE4: ; 0x02246AE4 + push {r3, lr} + mov r1, #0 + add r0, sp, #0 + strb r1, [r0] + mov r0, #0x56 + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02246AE4 + + thumb_func_start MOD18_02246AF8 +MOD18_02246AF8: ; 0x02246AF8 + mov r0, #2 + bx lr + thumb_func_end MOD18_02246AF8 + + thumb_func_start MOD18_02246AFC +MOD18_02246AFC: ; 0x02246AFC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + add r6, r2, #0 + bl FUN_0204E62C + add r4, r0, #0 + add r0, r7, #0 + bl FUN_0204E664 + add r5, r0, #0 + add r0, r7, #0 + bl FUN_0204E6CC + str r0, [sp, #4] + add r0, r7, #0 + bl FUN_0204E544 + add r0, r7, #0 + bl FUN_0204E598 + sub r0, r5, r0 + beq _02246B38 + add r0, r4, #1 + str r0, [sp, #0x10] + sub r0, r4, #1 + str r0, [sp, #8] + str r5, [sp, #0xc] + str r5, [sp] + b _02246B44 +_02246B38: + add r0, r5, #1 + str r0, [sp, #0xc] + sub r0, r5, #1 + str r0, [sp] + str r4, [sp, #0x10] + str r4, [sp, #8] +_02246B44: + add r0, sp, #0x14 + strb r7, [r0] + ldrb r1, [r6] + cmp r1, #0 + bne _02246B52 + mov r1, #0 + b _02246B54 +_02246B52: + mov r1, #5 +_02246B54: + strb r1, [r0, #1] + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_022453E8 + ldrb r1, [r6] + cmp r1, #0 + bne _02246B68 + cmp r0, #0xff + bne _02246BFE +_02246B68: + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _02246B7C + mov r1, #6 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246B7C: + ldr r0, _02246C0C ; =0x022513EC + add r1, r4, #0 + ldr r0, [r0] + add r2, r5, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _02246BFE + ldr r0, _02246C0C ; =0x022513EC + ldr r1, [sp, #0x10] + ldr r0, [r0] + ldr r2, [sp, #0xc] + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _02246BFE + ldr r0, _02246C0C ; =0x022513EC + ldr r1, [sp, #8] + ldr r0, [r0] + ldr r2, [sp] + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _02246BFE + ldrb r0, [r6] + cmp r0, #0 + bne _02246BC0 + mov r1, #1 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246BC0: + ldr r2, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + mov r3, #0x10 + bl MOD18_02245F70 + mov r0, #0x10 + add r1, r7, #0 + bl MOD18_02245528 + cmp r0, #0 + beq _02246BFE + ldrb r0, [r6] + cmp r0, #1 + beq _02246BE8 + cmp r0, #2 + beq _02246BF8 + cmp r0, #3 + beq _02246BF0 + b _02246BFE +_02246BE8: + mov r1, #2 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246BF0: + mov r1, #3 + add r0, sp, #0x14 + strb r1, [r0, #1] + b _02246BFE +_02246BF8: + mov r1, #4 + add r0, sp, #0x14 + strb r1, [r0, #1] +_02246BFE: + mov r0, #0x57 + add r1, sp, #0x14 + bl FUN_02030C4C + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246C0C: .word 0x022513EC + thumb_func_end MOD18_02246AFC + + thumb_func_start MOD18_02246C10 +MOD18_02246C10: ; 0x02246C10 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0x10 + bl MOD18_02246430 + ldr r0, [r4, #8] + cmp r0, #0 + beq _02246C28 + mov r1, #4 + bl FUN_020021EC +_02246C28: + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + bl FUN_0204F7FC + bl MOD18_022479A0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_02246C10 + + thumb_func_start MOD18_02246C44 +MOD18_02246C44: ; 0x02246C44 + push {r4, lr} + bl MOD18_02247984 + mov r0, #4 + mov r1, #0x14 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4, #0xc] + bl FUN_02031190 + strb r0, [r4, #0x10] + ldr r0, _02246C88 ; =0x022513EC + add r1, r4, #0 + ldr r0, [r0] + mov r2, #0x64 + ldr r0, [r0] + str r0, [r4] + ldr r0, _02246C8C ; =MOD18_02246898 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _02246C90 ; =MOD18_02246C10 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, pc} + nop +_02246C88: .word 0x022513EC +_02246C8C: .word MOD18_02246898 +_02246C90: .word MOD18_02246C10 + thumb_func_end MOD18_02246C44 + + thumb_func_start MOD18_02246C94 +MOD18_02246C94: ; 0x02246C94 + push {r3, r4, r5, r6, r7, lr} + ldr r0, _02246D94 ; =0x022513EC + add r5, r2, #0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CB4 + ldrb r4, [r5] + add r7, r0, #0 + bl FUN_02031190 + cmp r4, r0 + bne _02246D92 + ldrb r0, [r5, #1] + cmp r0, #0 + bne _02246CD0 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _02246D98 ; =MOD18_022453E0 + mov r1, #0x36 + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_022479A0 + pop {r3, r4, r5, r6, r7, pc} +_02246CD0: + cmp r0, #1 + bne _02246CDA + bl MOD18_02246C44 + pop {r3, r4, r5, r6, r7, pc} +_02246CDA: + cmp r0, #6 + bne _02246CF6 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _02246D98 ; =MOD18_022453E0 + mov r1, #0x4a + mov r2, #1 + bl MOD18_0224DCB8 + bl MOD18_022479A0 + pop {r3, r4, r5, r6, r7, pc} +_02246CF6: + cmp r0, #5 + bne _02246D16 + bl FUN_0204F7E4 + bl MOD18_0223D638 + ldr r3, _02246D98 ; =MOD18_022453E0 + mov r1, #0x58 + mov r2, #1 + bl MOD18_0224DCB8 + bl FUN_0204FD24 + bl MOD18_022479A0 + pop {r3, r4, r5, r6, r7, pc} +_02246D16: + add r0, #0xfe + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #2 + bhi _02246D92 + add r0, r4, #0 + bl FUN_0204E4D4 + add r4, r0, #0 + ldrb r0, [r5] + bl FUN_0204E50C + add r6, r0, #0 + ldrb r0, [r5] + bl FUN_0204E69C + str r0, [sp] + ldrb r3, [r5] + ldr r2, [sp] + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02245F70 + ldr r2, [sp] + add r0, r4, #0 + add r1, r6, #0 + mov r3, #0x10 + bl MOD18_02245F70 + ldrb r0, [r5, #1] + cmp r0, #3 + bne _02246D5C + add r0, r7, #0 + bl FUN_02026C38 +_02246D5C: + ldrb r0, [r5, #1] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _02246D92 + mov r0, #0xb + bl FUN_0202916C + add r1, r0, #0 + ldr r0, _02246D94 ; =0x022513EC + mov r2, #1 + ldr r0, [r0] + ldr r0, [r0] + add r0, #0x98 + ldr r0, [r0] + bl FUN_02028AD4 + ldr r0, _02246D94 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x23 + bl FUN_0202A170 +_02246D92: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246D94: .word 0x022513EC +_02246D98: .word MOD18_022453E0 + thumb_func_end MOD18_02246C94 + + thumb_func_start MOD18_02246D9C +MOD18_02246D9C: ; 0x02246D9C + push {r3, r4, r5, r6, r7, lr} + ldr r4, _02246E98 ; =0x022513EC + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _02246DAC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02246DAC: + mov r5, #0 +_02246DAE: + ldr r0, [r4] + ldr r1, _02246E9C ; =0x0000137B + add r0, r0, r5 + ldrb r7, [r0, r1] + cmp r7, #0xff + beq _02246DE4 + mov r2, #0xff + strb r2, [r0, r1] + cmp r5, r7 + beq _02246DE4 + add r0, r5, #0 + bl FUN_0202DFA4 + str r0, [sp] + add r0, r7, #0 + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [sp] + mov r2, #0x68 + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _02246DE4 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246DE4: + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA0 ; =0x0000134B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246E22 + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA0 ; =0x0000134B + ldrb r0, [r1, r0] + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [r4] + mov r2, #0xff + add r3, r0, r5 + ldr r0, _02246EA0 ; =0x0000134B + strb r2, [r3, r0] + add r0, r7, #0 + mov r2, #0x6c + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _02246E22 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246E22: + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA4 ; =0x0000135B + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246E52 + add r0, r5, #0 + bl FUN_0202DFA4 + ldr r2, _02246E98 ; =0x022513EC + mov r1, #0xff + ldr r2, [r2] + add r3, r2, r5 + ldr r2, _02246EA4 ; =0x0000135B + strb r1, [r3, r2] + mov r1, #0 + mov r2, #0x6d + add r3, r6, #0 + bl MOD18_0223D744 + cmp r0, #0 + beq _02246E92 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246E52: + ldr r0, _02246EA8 ; =0x00001353 + ldrb r0, [r1, r0] + cmp r0, #0xff + beq _02246E8C + add r0, r5, #0 + bl FUN_0202DFA4 + add r7, r0, #0 + ldr r0, [r4] + add r1, r0, r5 + ldr r0, _02246EA8 ; =0x00001353 + ldrb r0, [r1, r0] + bl FUN_0202DFA4 + add r1, r0, #0 + ldr r0, [r4] + mov r2, #0xff + add r3, r0, r5 + ldr r0, _02246EA8 ; =0x00001353 + strb r2, [r3, r0] + add r0, r7, #0 + mov r2, #0x6e + add r3, r6, #0 + bl MOD18_0223D6D8 + cmp r0, #0 + beq _02246E8C + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02246E8C: + add r5, r5, #1 + cmp r5, #8 + blt _02246DAE +_02246E92: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246E98: .word 0x022513EC +_02246E9C: .word 0x0000137B +_02246EA0: .word 0x0000134B +_02246EA4: .word 0x0000135B +_02246EA8: .word 0x00001353 + thumb_func_end MOD18_02246D9C + + thumb_func_start MOD18_02246EAC +MOD18_02246EAC: ; 0x02246EAC + ldr r0, _02246EC8 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _02246EC2 + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246EC2 + add r0, r0, #2 + bx lr +_02246EC2: + mov r0, #0 + bx lr + nop +_02246EC8: .word 0x022513EC + thumb_func_end MOD18_02246EAC + + thumb_func_start MOD18_02246ECC +MOD18_02246ECC: ; 0x02246ECC + ldr r0, _02246EEC ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _02246EE6 + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246EE6 + ldrb r1, [r0] + ldr r0, _02246EF0 ; =0x02251238 + ldrb r0, [r0, r1] + bx lr +_02246EE6: + mov r0, #0 + bx lr + nop +_02246EEC: .word 0x022513EC +_02246EF0: .word 0x02251238 + thumb_func_end MOD18_02246ECC + + thumb_func_start MOD18_02246EF4 +MOD18_02246EF4: ; 0x02246EF4 + ldr r0, _02246F14 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _02246F0E + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + cmp r0, #0 + beq _02246F0E + ldrb r1, [r0] + ldr r0, _02246F18 ; =0x0225124C + ldrb r0, [r0, r1] + bx lr +_02246F0E: + mov r0, #0 + bx lr + nop +_02246F14: .word 0x022513EC +_02246F18: .word 0x0225124C + thumb_func_end MOD18_02246EF4 + + thumb_func_start MOD18_02246F1C +MOD18_02246F1C: ; 0x02246F1C + push {r4, r5, r6, r7} + add r7, r0, #0 + ldr r0, _02246FA4 ; =0x022513EC + add r5, r1, #0 + ldr r0, [r0] + mov ip, r0 + cmp r0, #0 + bne _02246F32 + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_02246F32: + cmp r5, #0x40 + blt _02246F3C + mov r0, #1 + pop {r4, r5, r6, r7} + bx lr +_02246F3C: + asr r0, r7, #4 + asr r1, r5, #4 + lsr r0, r0, #0x1b + lsr r1, r1, #0x1b + add r0, r7, r0 + add r1, r5, r1 + ldr r3, _02246FA8 ; =0x02251238 + ldr r4, _02246FAC ; =0x0225124C + asr r0, r0, #5 + asr r1, r1, #5 + mov r2, #0 +_02246F52: + ldrb r6, [r3] + cmp r0, r6 + bne _02246F92 + ldrb r6, [r4] + cmp r1, r6 + bne _02246F92 + lsr r4, r7, #0x1f + lsl r3, r7, #0x1b + sub r3, r3, r4 + mov r1, #0x1b + ror r3, r1 + mov r0, #1 + add r4, r4, r3 + add r3, r0, #0 + lsl r3, r4 + lsl r4, r2, #7 + mov r2, ip + add r2, r2, r4 + lsr r6, r5, #0x1f + lsl r4, r5, #0x1b + sub r4, r4, r6 + ror r4, r1 + add r1, r6, r4 + lsl r1, r1, #2 + add r2, r2, r1 + ldr r1, _02246FB0 ; =0x00000A04 + ldr r1, [r2, r1] + tst r1, r3 + bne _02246F9E + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr +_02246F92: + add r2, r2, #1 + add r3, r3, #1 + add r4, r4, #1 + cmp r2, #0x11 + blt _02246F52 + mov r0, #1 +_02246F9E: + pop {r4, r5, r6, r7} + bx lr + nop +_02246FA4: .word 0x022513EC +_02246FA8: .word 0x02251238 +_02246FAC: .word 0x0225124C +_02246FB0: .word 0x00000A04 + thumb_func_end MOD18_02246F1C + + thumb_func_start MOD18_02246FB4 +MOD18_02246FB4: ; 0x02246FB4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0xb0 + ldr r0, _02247108 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CA8 + str r0, [sp, #0xc] + ldr r0, _02247108 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0 + mov r0, #0 + bl FUN_0204E62C + str r0, [sp, #8] + mov r0, #0 + bl FUN_0204E664 + str r0, [sp, #4] + mov r0, #0 + bl FUN_0204E6CC + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #0x28] + mov r0, #0xc + str r0, [sp, #0x2c] + ldr r0, _02247108 ; =0x022513EC + ldr r0, [r0] + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205EDD8 + ldr r0, [sp, #0xc] + bl FUN_020266E0 + add r0, r4, #0 + bl FUN_02025F44 + add r0, sp, #0x10 + bl FUN_020312BC + mov r4, #0 +_0224701C: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + bl _ll_mul + ldr r2, [sp, #0x20] + ldr r6, [sp, #0x24] + add r7, r2, r0 + adc r6, r1 + mov r1, #0 + add r0, r6, #0 + mov r2, #5 + mov r3, #0 + str r7, [sp, #0x10] + str r6, [sp, #0x14] + bl _ll_mul + cmp r1, #2 + bge _0224704A + lsl r5, r1, #1 + add r5, #0xa + b _02247050 +_0224704A: + sub r0, r1, #3 + lsl r5, r0, #1 + add r5, #0x12 +_02247050: + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x1c] + add r2, r7, #0 + add r3, r6, #0 + bl _ll_mul + ldr r2, [sp, #0x20] + ldr r3, [sp, #0x24] + add r0, r2, r0 + adc r3, r1 + str r0, [sp, #0x10] + str r3, [sp, #0x14] + add r0, r3, #0 + mov r1, #0 + mov r2, #6 + mov r3, #0 + bl _ll_mul + lsl r6, r1, #1 + add r6, #0xc + mov r0, #1 + mov r1, #0 + cmp r4, #0 + blt _0224709A + add r2, sp, #0x28 +_02247082: + ldr r3, [r2] + cmp r5, r3 + bne _02247092 + ldr r3, [r2, #4] + cmp r6, r3 + bne _02247092 + mov r0, #0 + b _0224709A +_02247092: + add r1, r1, #1 + add r2, #8 + cmp r1, r4 + ble _02247082 +_0224709A: + cmp r0, #0 + bne _022470A2 + sub r4, r4, #1 + b _022470BA +_022470A2: + add r1, r4, #0 + ldr r0, [sp, #0xc] + add r1, #0x10 + add r2, r5, #0 + add r3, r6, #0 + bl FUN_02026778 + add r1, sp, #0x28 + lsl r0, r4, #3 + add r0, r1, r0 + str r5, [r0, #8] + str r6, [r0, #0xc] +_022470BA: + add r4, r4, #1 + cmp r4, #0x10 + blt _0224701C + ldr r0, _02247108 ; =0x022513EC + mov r2, #0x22 + ldr r1, [r0] + ldr r0, _0224710C ; =0x00000A04 + lsl r2, r2, #6 + add r0, r1, r0 + mov r1, #0xff + bl MI_CpuFill8 + ldr r0, [sp] + bl FUN_0204F610 + add r3, r0, #0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #8] + ldr r2, [sp, #4] + bl FUN_02026C68 + ldr r1, _02247108 ; =0x022513EC + ldr r0, [sp, #0xc] + ldr r2, [r1] + ldr r1, _02247110 ; =0x0000096A + add r1, r2, r1 + mov r2, #0x94 + bl MI_CpuCopy8 + ldr r1, _02247108 ; =0x022513EC + ldr r0, [sp, #0xc] + ldr r2, [r1] + ldr r1, _02247114 ; =0x00001204 + add r1, r2, r1 + bl MOD18_02245128 + add sp, #0xb0 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247108: .word 0x022513EC +_0224710C: .word 0x00000A04 +_02247110: .word 0x0000096A +_02247114: .word 0x00001204 + thumb_func_end MOD18_02246FB4 + + thumb_func_start MOD18_02247118 +MOD18_02247118: ; 0x02247118 + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D668 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + thumb_func_end MOD18_02247118 + + thumb_func_start MOD18_0224712C +MOD18_0224712C: ; 0x0224712C + push {r3, lr} + bl MOD18_0223D668 + bl MOD18_0224DD94 + pop {r3, pc} + thumb_func_end MOD18_0224712C + + thumb_func_start MOD18_02247138 +MOD18_02247138: ; 0x02247138 + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D668 + mov r1, #0 + add r2, r4, #0 + bl MOD18_0224DF18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247138 + + thumb_func_start MOD18_0224714C +MOD18_0224714C: ; 0x0224714C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D668 + add r1, r4, #0 + add r2, r5, #0 + bl MOD18_0224DEA4 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224714C + + thumb_func_start MOD18_02247160 +MOD18_02247160: ; 0x02247160 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + str r1, [sp] + str r2, [sp, #4] + mov r4, #0 +_0224716C: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020267C4 + str r0, [sp, #8] + cmp r0, #0 + beq _022471C4 + cmp r4, #0 + beq _022471C4 + cmp r4, #0x10 + bge _022471C4 + bl FUN_0204CAA0 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026810 + add r7, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026840 + ldr r1, [sp] + ldr r2, [sp, #4] + sub r1, r1, r7 + sub r2, r2, r0 + cmp r1, #0 + blt _022471C4 + cmp r1, #2 + bgt _022471C4 + cmp r2, #0 + blt _022471C4 + cmp r2, #2 + bgt _022471C4 + lsl r0, r2, #1 + add r2, r2, r0 + add r0, r6, r1 + ldrb r0, [r2, r0] + cmp r0, #0 + beq _022471C4 + ldr r0, [sp, #8] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_022471C4: + add r4, r4, #1 + cmp r4, #0x20 + blt _0224716C + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_02247160 + + thumb_func_start MOD18_022471D0 +MOD18_022471D0: ; 0x022471D0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + ldrh r4, [r1] + ldrh r6, [r1, #2] + add r5, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02246F1C + cmp r0, #0 + bne _0224723C + add r0, sp, #0 + strb r5, [r0] + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_02244DE8 + ldr r1, _02247244 ; =0x022513EC + mov r3, #0x1b + ldr r2, [r1] + mov r1, #0x96 + add r2, #0xa + mul r1, r0 + add r0, r2, r1 + lsr r2, r4, #0x1f + lsl r1, r4, #0x1b + sub r1, r1, r2 + ror r1, r3 + add r1, r2, r1 + lsr r4, r6, #0x1f + lsl r2, r6, #0x1b + sub r2, r2, r4 + ror r2, r3 + add r2, r4, r2 + bl MOD18_02247160 + bl FUN_0204CAF0 + add r1, sp, #0 + strb r0, [r1, #1] + ldrb r0, [r1, #1] + cmp r0, #0 + beq _0224723C + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + mov r0, #0x3c + add r1, sp, #0 + bl FUN_02030C4C + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0224723C: + mov r0, #0 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02247244: .word 0x022513EC + thumb_func_end MOD18_022471D0 + + thumb_func_start MOD18_02247248 +MOD18_02247248: ; 0x02247248 + push {r3, r4, r5, lr} + ldr r0, _02247274 ; =0x022513EC + add r5, r2, #0 + ldr r1, [r0] + mov r0, #0xa + lsl r0, r0, #8 + ldr r0, [r1, r0] + add r0, r0, #2 + bl FUN_02026CC0 + add r4, r0, #0 + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _02247270 + ldrb r1, [r5, #1] + add r0, r4, #0 + bl MOD18_0224D79C +_02247270: + pop {r3, r4, r5, pc} + nop +_02247274: .word 0x022513EC + thumb_func_end MOD18_02247248 + + thumb_func_start MOD18_02247278 +MOD18_02247278: ; 0x02247278 + mov r0, #2 + bx lr + thumb_func_end MOD18_02247278 + + thumb_func_start MOD18_0224727C +MOD18_0224727C: ; 0x0224727C + ldr r2, _0224728C ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _0224728A + add r2, r2, r0 + ldr r0, _02247290 ; =0x0000134B + strb r1, [r2, r0] +_0224728A: + bx lr + .align 2, 0 +_0224728C: .word 0x022513EC +_02247290: .word 0x0000134B + thumb_func_end MOD18_0224727C + + thumb_func_start MOD18_02247294 +MOD18_02247294: ; 0x02247294 + ldr r2, _022472A4 ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _022472A2 + add r2, r2, r0 + ldr r0, _022472A8 ; =0x00001353 + strb r1, [r2, r0] +_022472A2: + bx lr + .align 2, 0 +_022472A4: .word 0x022513EC +_022472A8: .word 0x00001353 + thumb_func_end MOD18_02247294 + + thumb_func_start MOD18_022472AC +MOD18_022472AC: ; 0x022472AC + ldr r1, _022472C0 ; =0x022513EC + ldr r1, [r1] + cmp r1, #0 + beq _022472BC + add r1, r1, r0 + ldr r0, _022472C4 ; =0x0000135B + mov r2, #1 + strb r2, [r1, r0] +_022472BC: + bx lr + nop +_022472C0: .word 0x022513EC +_022472C4: .word 0x0000135B + thumb_func_end MOD18_022472AC + + thumb_func_start MOD18_022472C8 +MOD18_022472C8: ; 0x022472C8 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _0224731C ; =0x022513EC + mov r1, #0 + ldr r0, [r0] + ldr r0, [r0] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7ED0 + add r1, r0, #0 + add r0, sp, #8 + bl FUN_021E7EA0 + ldr r1, _0224731C ; =0x022513EC + mov r0, #0 + ldr r1, [r1] + ldr r1, [r1] + add r1, #0xa0 + ldr r1, [r1] + bl FUN_021E7C80 + ldr r0, _0224731C ; =0x022513EC + ldr r2, _02247320 ; =0x0000013D + ldr r0, [r0] + ldr r1, [r0] + mov r0, #0 + str r0, [sp] + ldr r0, [r1, #0x4c] + str r0, [sp, #4] + add r0, r1, #0 + ldrb r3, [r4, #5] + add r0, #0xa0 + ldr r0, [r0] + add r2, r3, r2 + ldr r1, [r1, #0x2c] + add r3, sp, #8 + bl FUN_021E7FBC + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_0224731C: .word 0x022513EC +_02247320: .word 0x0000013D + thumb_func_end MOD18_022472C8 + + thumb_func_start MOD18_02247324 +MOD18_02247324: ; 0x02247324 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247324 + + thumb_func_start MOD18_02247338 +MOD18_02247338: ; 0x02247338 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _02247406 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02247352: ; jump table + .short _0224735C - _02247352 - 2 ; case 0 + .short _0224737C - _02247352 - 2 ; case 1 + .short _022473AA - _02247352 - 2 ; case 2 + .short _022473DA - _02247352 - 2 ; case 3 + .short _022473F6 - _02247352 - 2 ; case 4 +_0224735C: + bl FUN_0204F7E4 + bl MOD18_0223D648 + mov r2, #0 + mov r1, #7 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224740C ; =0x000005E3 + bl FUN_020054C8 + mov r0, #1 + add sp, #0xc + str r0, [r4] + pop {r4, r5, pc} +_0224737C: + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02247406 + ldr r0, _02247410 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02247406 + bl MOD18_0223D648 + ldrb r1, [r4, #5] + mov r2, #0 + add r3, r2, #0 + add r1, #0xe + bl MOD18_0224DCB8 + mov r0, #2 + add sp, #0xc + str r0, [r4] + pop {r4, r5, pc} +_022473AA: + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02247406 + ldr r0, _02247410 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02247406 + add r0, r4, #0 + bl MOD18_022472C8 + mov r0, #4 + str r0, [r4] + bl MOD18_0223D648 + bl MOD18_0224DD94 + bl FUN_0204F7FC + add sp, #0xc + pop {r4, r5, pc} +_022473DA: + mov r0, #6 + str r0, [sp] + mov r1, #0 + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {r4, r5, pc} +_022473F6: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + bl MOD18_0223E6A0 +_02247406: + add sp, #0xc + pop {r4, r5, pc} + nop +_0224740C: .word 0x000005E3 +_02247410: .word 0x021C48B8 + thumb_func_end MOD18_02247338 + + thumb_func_start MOD18_02247414 +MOD18_02247414: ; 0x02247414 + push {r3, lr} + add r1, sp, #0 + strb r0, [r1] + ldrb r0, [r2] + strb r0, [r1, #1] + mov r0, #0x61 + add r1, sp, #0 + bl FUN_02030C4C + pop {r3, pc} + thumb_func_end MOD18_02247414 + + thumb_func_start MOD18_02247428 +MOD18_02247428: ; 0x02247428 + push {r3, r4, r5, lr} + add r5, r2, #0 + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _02247464 + mov r0, #0xb + mov r1, #8 + bl FUN_02016998 + mov r1, #0 + mov r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + ldrb r0, [r5, #1] + add r1, r4, #0 + mov r2, #0x64 + strb r0, [r4, #5] + ldr r0, _02247468 ; =MOD18_02247338 + bl FUN_0200CA44 + add r1, r0, #0 + ldr r2, _0224746C ; =MOD18_02247324 + add r0, r4, #0 + bl MOD18_0223E688 +_02247464: + pop {r3, r4, r5, pc} + nop +_02247468: .word MOD18_02247338 +_0224746C: .word MOD18_02247324 + thumb_func_end MOD18_02247428 + + thumb_func_start MOD18_02247470 +MOD18_02247470: ; 0x02247470 + mov r0, #2 + bx lr + thumb_func_end MOD18_02247470 + + thumb_func_start MOD18_02247474 +MOD18_02247474: ; 0x02247474 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + mov r4, #0 +_02247480: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020267C4 + str r0, [sp, #4] + cmp r0, #0 + beq _022474C0 + cmp r4, #0 + beq _022474C0 + cmp r4, #0x10 + bge _022474C0 + bl FUN_0204CAA0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026810 + add r6, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_02026840 + ldr r1, [sp] + sub r2, r7, r6 + sub r0, r1, r0 + cmp r2, #0 + bne _022474C0 + cmp r0, #0 + bne _022474C0 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022474C0: + add r4, r4, #1 + cmp r4, #0x20 + blt _02247480 + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_02247474 + + thumb_func_start MOD18_022474CC +MOD18_022474CC: ; 0x022474CC + sub r0, #0x38 + cmp r0, #0xf + bhi _0224753E + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022474DE: ; jump table + .short _022474FE - _022474DE - 2 ; case 0 + .short _02247502 - _022474DE - 2 ; case 1 + .short _02247506 - _022474DE - 2 ; case 2 + .short _0224750A - _022474DE - 2 ; case 3 + .short _0224750E - _022474DE - 2 ; case 4 + .short _02247512 - _022474DE - 2 ; case 5 + .short _02247516 - _022474DE - 2 ; case 6 + .short _0224751A - _022474DE - 2 ; case 7 + .short _0224751E - _022474DE - 2 ; case 8 + .short _02247522 - _022474DE - 2 ; case 9 + .short _02247526 - _022474DE - 2 ; case 10 + .short _0224752A - _022474DE - 2 ; case 11 + .short _0224752E - _022474DE - 2 ; case 12 + .short _02247532 - _022474DE - 2 ; case 13 + .short _02247536 - _022474DE - 2 ; case 14 + .short _0224753A - _022474DE - 2 ; case 15 +_022474FE: + mov r0, #0xb + bx lr +_02247502: + mov r0, #0xc + bx lr +_02247506: + mov r0, #0x12 + bx lr +_0224750A: + mov r0, #0x13 + bx lr +_0224750E: + mov r0, #0x14 + bx lr +_02247512: + mov r0, #0x15 + bx lr +_02247516: + mov r0, #0x16 + bx lr +_0224751A: + mov r0, #0x17 + bx lr +_0224751E: + mov r0, #0x18 + bx lr +_02247522: + mov r0, #0x19 + bx lr +_02247526: + mov r0, #0x1a + bx lr +_0224752A: + mov r0, #0x1b + bx lr +_0224752E: + mov r0, #0x1c + bx lr +_02247532: + mov r0, #0x1d + bx lr +_02247536: + mov r0, #0x1e + bx lr +_0224753A: + mov r0, #0x1f + bx lr +_0224753E: + mov r0, #0 + bx lr + .align 2, 0 + thumb_func_end MOD18_022474CC + + thumb_func_start MOD18_02247544 +MOD18_02247544: ; 0x02247544 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_0204E544 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204E598 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204E6CC + str r0, [sp, #8] + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _02247572 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02247572: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_02246F1C + cmp r0, #1 + bne _022475EA + ldr r0, _022475F0 ; =0x022513EC + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _022475F4 ; =0x00001383 + ldrb r0, [r1, r0] + cmp r0, #0 + bne _022475EA + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_02244DE8 + ldr r1, _022475F0 ; =0x022513EC + lsr r3, r6, #0x1f + ldr r2, [r1] + mov r1, #0x96 + add r2, #0xa + mul r1, r0 + add r0, r2, r1 + lsl r2, r6, #0x1b + sub r2, r2, r3 + mov r1, #0x1b + ror r2, r1 + add r1, r3, r2 + lsr r3, r4, #0x1f + lsl r7, r4, #0x1b + sub r7, r7, r3 + mov r2, #0x1b + ror r7, r2 + add r2, r3, r7 + bl MOD18_02247474 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD18_022474CC + add r2, r0, #0 + beq _022475EA + ldr r1, _022475F0 ; =0x022513EC + mov r0, #1 + ldr r1, [r1] + add r3, r1, r5 + ldr r1, _022475F4 ; =0x00001383 + strb r0, [r3, r1] + ldr r0, [sp, #8] + str r4, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0xff + add r3, r6, #0 + bl MOD18_0223F858 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022475EA: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022475F0: .word 0x022513EC +_022475F4: .word 0x00001383 + thumb_func_end MOD18_02247544 + + thumb_func_start MOD18_022475F8 +MOD18_022475F8: ; 0x022475F8 + ldr r1, _0224760C ; =0x022513EC + ldr r1, [r1] + cmp r1, #0 + beq _02247608 + add r1, r1, r0 + ldr r0, _02247610 ; =0x00001383 + mov r2, #0 + strb r2, [r1, r0] +_02247608: + mov r0, #0 + bx lr + .align 2, 0 +_0224760C: .word 0x022513EC +_02247610: .word 0x00001383 + thumb_func_end MOD18_022475F8 + + thumb_func_start MOD18_02247614 +MOD18_02247614: ; 0x02247614 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r0, sp, #4 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r4, #0 + add r5, sp, #4 +_02247626: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _022476A2 + add r0, r4, #0 + bl FUN_0204E544 + str r0, [sp] + add r0, r4, #0 + bl FUN_0204E598 + add r7, r0, #0 + ldr r1, [sp] + ldr r0, _02247714 ; =0x0000FFFF + cmp r1, r0 + bne _0224764E + cmp r7, r0 + beq _022476A2 +_0224764E: + ldr r0, [sp] + add r1, r7, #0 + bl MOD18_02244DE8 + add r6, r0, #0 + cmp r4, r6 + beq _022476A2 + cmp r6, #0x10 + beq _022476A2 + lsl r0, r6, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _022476A2 + ldr r0, _02247718 ; =0x022513EC + ldr r1, _0224771C ; =0x0000136B + ldr r0, [r0] + add r0, r0, r4 + ldrb r1, [r0, r1] + cmp r1, #0xff + bne _022476A2 + ldr r1, _02247720 ; =0x00001373 + ldrb r0, [r0, r1] + cmp r0, #0xff + bne _022476A2 + ldr r0, [sp] + add r1, r7, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _022476A2 + ldrb r0, [r5] + cmp r0, #0 + bne _022476A2 + add r0, r6, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_022455D0 + mov r0, #1 + strb r0, [r5] +_022476A2: + add r4, r4, #1 + add r5, r5, #1 + cmp r4, #8 + blt _02247626 + bl FUN_02031190 + ldr r1, _02247718 ; =0x022513EC + add r4, r0, #0 + ldr r2, [r1] + ldr r1, _02247724 ; =0x000012E4 + ldrb r1, [r2, r1] + cmp r1, #6 + bne _0224770E + bl FUN_0204E544 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E598 + add r5, r0, #0 + ldr r0, _02247714 ; =0x0000FFFF + cmp r6, r0 + bne _022476D4 + cmp r5, r0 + beq _022476FC +_022476D4: + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _022476FC + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02244DE8 + add r5, sp, #4 + ldrb r1, [r5, r4] + cmp r1, #0 + bne _022476FC + add r1, r4, #0 + mov r2, #1 + bl MOD18_022455D0 + mov r0, #1 + strb r0, [r5, r4] +_022476FC: + add r0, sp, #4 + ldrb r0, [r0, r4] + cmp r0, #0 + beq _0224770E + ldr r0, _02247718 ; =0x022513EC + mov r2, #0 + ldr r1, [r0] + ldr r0, _02247724 ; =0x000012E4 + strb r2, [r1, r0] +_0224770E: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02247714: .word 0x0000FFFF +_02247718: .word 0x022513EC +_0224771C: .word 0x0000136B +_02247720: .word 0x00001373 +_02247724: .word 0x000012E4 + thumb_func_end MOD18_02247614 + + thumb_func_start MOD18_02247728 +MOD18_02247728: ; 0x02247728 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, _022477F8 ; =0x022513EC + str r1, [sp, #8] + ldr r0, [r0] + add r1, r0, r5 + ldr r0, _022477FC ; =0x00001363 + ldrb r0, [r1, r0] + cmp r0, #0xff + bne _02247744 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02247744: + bl FUN_02031190 + bl FUN_0204E3EC + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E440 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _02247774 + ldr r0, _022477F8 ; =0x022513EC + mov r2, #0xff + ldr r0, [r0] + add sp, #0x10 + add r1, r0, r5 + ldr r0, _022477FC ; =0x00001363 + strb r2, [r1, r0] + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02247774: + bl MOD18_0224D344 + bl MOD18_02248FC8 + bl MOD18_0223E6B8 + bl FUN_02031190 + mov r1, #0 + bl MOD18_0223FCE8 + ldr r0, _022477F8 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02247800 ; =0x000013DC + add r1, r0, #2 + ldrh r6, [r2, r0] + add r0, r0, #4 + ldrh r4, [r2, r1] + ldrb r7, [r2, r0] + cmp r6, #0 + beq _022477A2 + cmp r4, #0 + bne _022477A6 +_022477A2: + bl ErrorHandling +_022477A6: + add r0, r7, #0 + bl FUN_02059BF4 + str r0, [sp, #0xc] + add r0, r7, #0 + bl FUN_02059C00 + add r2, r0, #0 + ldr r0, _022477F8 ; =0x022513EC + mov r3, #0 + ldr r1, [r0] + ldr r0, _02247804 ; =0x000013E6 + add r2, r4, r2 + strb r3, [r1, r0] + ldr r1, [sp, #0xc] + ldr r0, [sp, #8] + str r5, [sp] + str r0, [sp, #4] + ldr r0, _022477F8 ; =0x022513EC + add r1, r6, r1 + ldr r0, [r0] + add r3, r7, #0 + ldr r0, [r0] + bl MOD18_0224686C + bl FUN_0204FD38 + ldr r1, _022477F8 ; =0x022513EC + mov r0, #0xa + ldr r2, [r1] + mov r3, #0 + lsl r0, r0, #8 + str r3, [r2, r0] + ldr r0, [r1] + mov r2, #0xff + add r1, r0, r5 + ldr r0, _022477FC ; =0x00001363 + strb r2, [r1, r0] + mov r0, #1 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022477F8: .word 0x022513EC +_022477FC: .word 0x00001363 +_02247800: .word 0x000013DC +_02247804: .word 0x000013E6 + thumb_func_end MOD18_02247728 + + thumb_func_start MOD18_02247808 +MOD18_02247808: ; 0x02247808 + push {r3, lr} + ldr r0, _02247828 ; =0x022513EC + ldr r2, [r0] + ldr r0, _0224782C ; =0x000012E4 + ldrb r1, [r2, r0] + cmp r1, #1 + bne _02247824 + mov r1, #2 + strb r1, [r2, r0] + bl FUN_0204CF60 + mov r0, #0 + bl MOD18_02245358 +_02247824: + pop {r3, pc} + nop +_02247828: .word 0x022513EC +_0224782C: .word 0x000012E4 + thumb_func_end MOD18_02247808 + + thumb_func_start MOD18_02247830 +MOD18_02247830: ; 0x02247830 + ldr r0, _02247844 ; =0x022513EC + ldr r2, [r0] + ldr r0, _02247848 ; =0x000012E4 + ldrb r1, [r2, r0] + cmp r1, #5 + bne _02247840 + mov r1, #4 + strb r1, [r2, r0] +_02247840: + bx lr + nop +_02247844: .word 0x022513EC +_02247848: .word 0x000012E4 + thumb_func_end MOD18_02247830 + + thumb_func_start MOD18_0224784C +MOD18_0224784C: ; 0x0224784C + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_0204E5EC + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204E60C + add r4, r0, #0 + ldr r0, _022478BC ; =0x022513EC + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + bne _0224787C + cmp r6, #0 + beq _022478BA + bl FUN_0202EDD8 + cmp r0, #0 + bne _022478BA +_0224787C: + ldr r0, _022478C0 ; =0x0000FFFF + cmp r5, r0 + bne _02247892 + cmp r4, r0 + bne _02247892 + add r0, r6, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD18_022455D0 + pop {r4, r5, r6, pc} +_02247892: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + bne _022478B0 + ldr r0, _022478BC ; =0x022513EC + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_0204A6B4 + cmp r0, #0 + beq _022478BA +_022478B0: + add r0, r6, #0 + add r1, r6, #0 + mov r2, #1 + bl MOD18_022455D0 +_022478BA: + pop {r4, r5, r6, pc} + .align 2, 0 +_022478BC: .word 0x022513EC +_022478C0: .word 0x0000FFFF + thumb_func_end MOD18_0224784C + + thumb_func_start MOD18_022478C4 +MOD18_022478C4: ; 0x022478C4 + ldr r0, _022478D8 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _022478D2 + ldr r0, _022478DC ; =0x000013DC + ldrh r0, [r1, r0] + bx lr +_022478D2: + mov r0, #0x48 + bx lr + nop +_022478D8: .word 0x022513EC +_022478DC: .word 0x000013DC + thumb_func_end MOD18_022478C4 + + thumb_func_start MOD18_022478E0 +MOD18_022478E0: ; 0x022478E0 + ldr r0, _022478F4 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _022478EE + ldr r0, _022478F8 ; =0x000013DE + ldrh r0, [r1, r0] + bx lr +_022478EE: + ldr r0, _022478FC ; =0x000001B5 + bx lr + nop +_022478F4: .word 0x022513EC +_022478F8: .word 0x000013DE +_022478FC: .word 0x000001B5 + thumb_func_end MOD18_022478E0 + + thumb_func_start MOD18_02247900 +MOD18_02247900: ; 0x02247900 + ldr r0, _02247914 ; =0x022513EC + ldr r1, [r0] + cmp r1, #0 + beq _0224790E + ldr r0, _02247918 ; =0x000013E0 + ldrb r0, [r1, r0] + bx lr +_0224790E: + mov r0, #1 + bx lr + nop +_02247914: .word 0x022513EC +_02247918: .word 0x000013E0 + thumb_func_end MOD18_02247900 + + thumb_func_start MOD18_0224791C +MOD18_0224791C: ; 0x0224791C + ldr r2, _02247930 ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _0224792C + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _02247934 ; =0x000013AC + strh r1, [r2, r0] +_0224792C: + bx lr + nop +_02247930: .word 0x022513EC +_02247934: .word 0x000013AC + thumb_func_end MOD18_0224791C + + thumb_func_start MOD18_02247938 +MOD18_02247938: ; 0x02247938 + ldr r2, _0224794C ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _02247948 + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _02247950 ; =0x000013BC + strh r1, [r2, r0] +_02247948: + bx lr + nop +_0224794C: .word 0x022513EC +_02247950: .word 0x000013BC + thumb_func_end MOD18_02247938 + + thumb_func_start MOD18_02247954 +MOD18_02247954: ; 0x02247954 + ldr r2, _02247968 ; =0x022513EC + ldr r2, [r2] + cmp r2, #0 + beq _02247964 + lsl r0, r0, #1 + add r2, r2, r0 + ldr r0, _0224796C ; =0x000013CC + strh r1, [r2, r0] +_02247964: + bx lr + nop +_02247968: .word 0x022513EC +_0224796C: .word 0x000013CC + thumb_func_end MOD18_02247954 + + thumb_func_start MOD18_02247970 +MOD18_02247970: ; 0x02247970 + ldr r1, _0224797C ; =0x022513EC + ldr r2, [r1] + ldr r1, _02247980 ; =0x000013E5 + strb r0, [r2, r1] + bx lr + nop +_0224797C: .word 0x022513EC +_02247980: .word 0x000013E5 + thumb_func_end MOD18_02247970 + + thumb_func_start MOD18_02247984 +MOD18_02247984: ; 0x02247984 + push {r3, lr} + mov r0, #1 + bl FUN_0202D380 + mov r0, #1 + bl FUN_0202D344 + mov r0, #1 + bl FUN_020318A4 + bl FUN_0202F0B8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02247984 + + thumb_func_start MOD18_022479A0 +MOD18_022479A0: ; 0x022479A0 + push {r3, lr} + mov r0, #0 + bl FUN_0202D380 + mov r0, #0 + bl FUN_0202D344 + mov r0, #0 + bl FUN_020318A4 + bl FUN_0202F0B8 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_022479A0 + + thumb_func_start MOD18_022479BC +MOD18_022479BC: ; 0x022479BC + push {r3, lr} + ldrh r2, [r0, #0x2c] + add r0, sp, #0 + strb r2, [r0] + strb r1, [r0, #1] + mov r0, #0x4a + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, pc} + thumb_func_end MOD18_022479BC + + thumb_func_start MOD18_022479D0 +MOD18_022479D0: ; 0x022479D0 + push {r3, lr} + ldrh r2, [r0, #0x30] + add r0, sp, #0 + strb r2, [r0] + strb r1, [r0, #1] + mov r0, #0x49 + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, pc} + thumb_func_end MOD18_022479D0 + + thumb_func_start MOD18_022479E4 +MOD18_022479E4: ; 0x022479E4 + push {r4, lr} + add r4, r1, #0 + cmp r4, #0x88 + blt _022479FC + ldrh r0, [r0, #0x30] + bl FUN_0202DFA4 + bl FUN_020239CC + cmp r0, #1 + bne _022479FC + add r4, #0x13 +_022479FC: + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + thumb_func_end MOD18_022479E4 + + thumb_func_start MOD18_02247A0C +MOD18_02247A0C: ; 0x02247A0C + push {r4, lr} + add r4, r1, #0 + cmp r4, #0x88 + blt _02247A24 + ldrh r0, [r0, #0x2c] + bl FUN_0202DFA4 + bl FUN_020239CC + cmp r0, #1 + bne _02247A24 + add r4, #0x13 +_02247A24: + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + thumb_func_end MOD18_02247A0C + + thumb_func_start MOD18_02247A34 +MOD18_02247A34: ; 0x02247A34 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r0, #0x21 + mov r1, #0x3c + add r7, r2, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x3c + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02247A98 ; =0x022513F0 + mov r1, #1 + str r4, [r0, #4] + str r7, [r4, #8] + str r6, [r4, #0x2c] + add r0, r4, #0 + strh r5, [r4, #0x30] + add r0, #0x37 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x29 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x2a + strb r1, [r0] + add r0, r4, #0 + ldrh r1, [r4, #0x30] + add r0, #0x28 + strb r1, [r0] + ldr r0, _02247A9C ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD18_022479E4 + ldr r0, _02247AA0 ; =MOD18_02248054 + ldr r2, _02247AA4 ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02247A98: .word 0x022513F0 +_02247A9C: .word 0x000005DC +_02247AA0: .word MOD18_02248054 +_02247AA4: .word 0x00002710 + thumb_func_end MOD18_02247A34 + + thumb_func_start MOD18_02247AA8 +MOD18_02247AA8: ; 0x02247AA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x1c] + mov r3, #1 + str r3, [sp] + mov r0, #0xa + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02247B50 ; =0x000002DD + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, #0xc + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02247B54 ; =0x000003D9 + add r0, #0xc + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02247B58 ; =0x0000023F + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + ldr r4, _02247B5C ; =0x02250548 + add r7, r0, #0 + mov r6, #0 +_02247AFA: + ldr r0, [r5, #0x1c] + ldr r2, [r4] + ldr r3, [r4, #4] + add r1, r7, #0 + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, #4 + blo _02247AFA + add r0, r7, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x14 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x1c] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xc + str r0, [sp, #0x20] + mov r3, #4 + add r0, sp, #0x14 + strh r3, [r0, #0x10] + strh r3, [r0, #0x12] + strh r1, [r5, #0x3a] + add r0, sp, #0x14 + add r2, r1, #0 + bl FUN_020010A8 + str r0, [r5, #0x20] + add r5, #0xc + add r0, r5, #0 + bl FUN_020191D0 + bl FUN_0204F7E4 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02247B50: .word 0x000002DD +_02247B54: .word 0x000003D9 +_02247B58: .word 0x0000023F +_02247B5C: .word 0x02250548 + thumb_func_end MOD18_02247AA8 + + thumb_func_start MOD18_02247B60 +MOD18_02247B60: ; 0x02247B60 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _02247B76 + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x24] +_02247B76: + ldr r0, [r4, #4] + cmp r0, #0 + beq _02247B88 + mov r1, #1 + mvn r1, r1 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 +_02247B88: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247FC0 + ldr r1, [r4, #0x2c] + cmp r1, #0 + beq _02247B9A + mov r0, #0 + blx r1 +_02247B9A: + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_0204F7FC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _02247BB4 ; =0x022513F0 + mov r1, #0 + str r1, [r0, #4] + pop {r3, r4, r5, pc} + nop +_02247BB4: .word 0x022513F0 + thumb_func_end MOD18_02247B60 + + thumb_func_start MOD18_02247BB8 +MOD18_02247BB8: ; 0x02247BB8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x1c] + mov r3, #1 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02247C88 ; =0x000002AD + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, #0xc + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02247C8C ; =0x000003D9 + add r0, #0xc + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02247C90 ; =0x0000023E + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + mov r4, #0 + add r7, sp, #0x14 +_02247C0A: + bl FUN_0201BA60 + mov r1, #0xc + bl _u32_div_f + add r2, r1, #0 + mov r1, #0 + cmp r4, #0 + ble _02247C2C + add r3, r7, #0 +_02247C1E: + ldrb r0, [r3] + cmp r0, r2 + beq _02247C2C + add r1, r1, #1 + add r3, r3, #1 + cmp r1, r4 + blt _02247C1E +_02247C2C: + cmp r1, r4 + bne _02247C3E + strb r2, [r7, r4] + ldr r0, [r5, #0x1c] + add r1, r6, #0 + add r3, r2, #0 + bl FUN_02012880 + b _02247C40 +_02247C3E: + sub r4, r4, #1 +_02247C40: + add r4, r4, #1 + cmp r4, #4 + blt _02247C0A + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r4, _02247C94 ; =0x02250528 + add r3, sp, #0x18 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x1c] + mov r1, #0 + str r0, [sp, #0x18] + add r0, r5, #0 + add r0, #0xc + str r0, [sp, #0x24] + add r0, r2, #0 + strh r1, [r5, #0x3a] + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x20] + add r5, #0xc + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02247C88: .word 0x000002AD +_02247C8C: .word 0x000003D9 +_02247C90: .word 0x0000023E +_02247C94: .word 0x02250528 + thumb_func_end MOD18_02247BB8 + + thumb_func_start MOD18_02247C98 +MOD18_02247C98: ; 0x02247C98 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x20] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_02248FEC + bl FUN_020311F0 + cmp r0, #0 + beq _02247CCC + add r0, r5, #0 + mov r1, #3 + add r0, #0x37 + strb r1, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02247CCC: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02247CDA + add r0, r0, #1 + cmp r4, r0 + bne _02247CE0 +_02247CDA: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02247CE0: + ldr r0, _02247D18 ; =0x000005DC + bl FUN_020054C8 + add r0, sp, #0 + strb r4, [r0] + ldrh r1, [r5, #0x30] + strb r1, [r0, #1] + mov r1, #0 + strb r1, [r0, #2] + mov r0, #0x4f + add r1, sp, #0 + bl FUN_020311D0 + add r0, r5, #0 + add r0, #0x32 + strb r4, [r0] + add r0, r5, #0 + mov r1, #0x1e + add r0, #0x37 + strb r1, [r0] + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02247D18: .word 0x000005DC + thumb_func_end MOD18_02247C98 + + thumb_func_start MOD18_02247D1C +MOD18_02247D1C: ; 0x02247D1C + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x1c] + mov r3, #1 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02247DC8 ; =0x000002AD + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #8] + add r1, #0xc + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02247DCC ; =0x000003D9 + add r0, #0xc + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _02247DD0 ; =0x0000023D + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + mov r4, #0 +_02247D6C: + add r2, r5, #0 + add r2, #0x32 + ldrb r2, [r2] + ldr r0, [r5, #0x1c] + add r1, r6, #0 + lsl r2, r2, #2 + add r2, r4, r2 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #4 + blt _02247D6C + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r4, _02247DD4 ; =0x02250528 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x1c] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0xc + str r0, [sp, #0x20] + add r0, r2, #0 + strh r1, [r5, #0x3a] + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x20] + add r5, #0xc + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02247DC8: .word 0x000002AD +_02247DCC: .word 0x000003D9 +_02247DD0: .word 0x0000023D +_02247DD4: .word 0x02250528 + thumb_func_end MOD18_02247D1C + + thumb_func_start MOD18_02247DD8 +MOD18_02247DD8: ; 0x02247DD8 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x20] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_02248FEC + bl FUN_020311F0 + cmp r0, #0 + beq _02247E0A + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + mov r0, #3 + add r5, #0x37 + strb r0, [r5] + add sp, #4 + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02247E0A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02247E18 + add r0, r0, #1 + cmp r4, r0 + bne _02247E1E +_02247E18: + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_02247E1E: + ldr r0, _02247E9C ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + add r0, r5, #0 + add r0, #0x32 + ldrb r0, [r0] + lsl r0, r0, #2 + add r1, r4, r0 + add r0, sp, #0 + strb r1, [r0] + ldrh r1, [r5, #0x30] + strb r1, [r0, #1] + mov r1, #2 + strb r1, [r0, #2] + mov r0, #0x4f + add r1, sp, #0 + bl FUN_020311D0 + bl MOD18_0223D638 + add r1, sp, #0 + ldrb r1, [r1] + bl MOD18_0224DE18 + bl MOD18_0223D638 + add r2, r5, #0 + add r2, #0x33 + ldrb r2, [r2] + mov r1, #6 + bl MOD18_0224DE30 + add r0, r5, #0 + add r0, #0x33 + ldrb r1, [r0] + add r0, sp, #0 + ldrb r0, [r0] + cmp r1, r0 + bne _02247E7E + add r0, r5, #0 + mov r1, #0x8d + bl MOD18_022479E4 + b _02247E86 +_02247E7E: + add r0, r5, #0 + mov r1, #0x8c + bl MOD18_022479E4 +_02247E86: + add r0, r5, #0 + mov r1, #0x24 + add r0, #0x37 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x1b + bl MOD18_022479D0 + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02247E9C: .word 0x000005DC + thumb_func_end MOD18_02247DD8 + + thumb_func_start MOD18_02247EA0 +MOD18_02247EA0: ; 0x02247EA0 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl MOD18_0223D638 + add r5, r0, #0 + ldrh r0, [r4, #0x30] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + add r1, r4, #0 + add r1, #0x2a + ldrb r1, [r1] + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0xe + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, [r4, #8] + bl FUN_020377AC + bl FUN_02026CB4 + bl FUN_02026940 + add r4, #0x2a + ldrb r0, [r4] + bl MOD18_022493A4 + ldr r0, _02247EF4 ; =0x000005E3 + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_02247EF4: .word 0x000005E3 + thumb_func_end MOD18_02247EA0 + + thumb_func_start MOD18_02247EF8 +MOD18_02247EF8: ; 0x02247EF8 + push {r4, lr} + add r4, r1, #0 + bl MOD18_0223D638 + add r1, r4, #0 + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0xc + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247EF8 + + thumb_func_start MOD18_02247F18 +MOD18_02247F18: ; 0x02247F18 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x24] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02247F5A + cmp r0, #0 + bne _02247F46 + ldrh r1, [r4, #0x30] + add r0, r4, #0 + add r0, #0x28 + strb r1, [r0] + add r1, r4, #0 + mov r0, #0x4d + add r1, #0x28 + bl FUN_020311D0 + mov r1, #0x15 + b _02247F50 +_02247F46: + add r0, r4, #0 + mov r1, #0xb + bl MOD18_022479E4 + mov r1, #0xf +_02247F50: + add r0, r4, #0 + add r0, #0x37 + strb r1, [r0] + mov r0, #0 + str r0, [r4, #0x24] +_02247F5A: + pop {r4, pc} + thumb_func_end MOD18_02247F18 + + thumb_func_start MOD18_02247F5C +MOD18_02247F5C: ; 0x02247F5C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x20] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_02248FEC + bl FUN_020311F0 + cmp r0, #0 + beq _02247F7C + mov r4, #1 + mvn r4, r4 +_02247F7C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02247F8E + add r0, r0, #1 + cmp r4, r0 + bne _02247FA4 + mov r0, #0 + pop {r4, r5, r6, pc} +_02247F8E: + ldr r0, _02247FBC ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_0224865C + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 + b _02247FB6 +_02247FA4: + ldr r0, _02247FBC ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + blx r4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_02247FC0 +_02247FB6: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_02247FBC: .word 0x000005DC + thumb_func_end MOD18_02247F5C + + thumb_func_start MOD18_02247FC0 +MOD18_02247FC0: ; 0x02247FC0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + beq _02247FF8 + add r0, r4, #0 + add r0, #0xc + mov r1, #0 + bl FUN_0200CCF8 + mov r1, #0 + ldr r0, [r4, #0x20] + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0xc + bl FUN_02019570 + add r0, r4, #0 + add r0, #0xc + bl FUN_02019178 + ldr r0, [r4, #0x1c] + bl FUN_02012870 + mov r0, #0 + str r0, [r4, #0x1c] +_02247FF8: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247FC0 + + thumb_func_start MOD18_02247FFC +MOD18_02247FFC: ; 0x02247FFC + push {r4, lr} + add r4, r0, #0 + mov r1, #5 + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #7 + bl MOD18_022479E4 + mov r0, #5 + add r4, #0x37 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02247FFC + + thumb_func_start MOD18_02248018 +MOD18_02248018: ; 0x02248018 + push {r4, lr} + mov r1, #0x16 + add r4, r0, #0 + bl MOD18_022479D0 + mov r0, #0x1b + add r4, #0x37 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02248018 + + thumb_func_start MOD18_0224802C +MOD18_0224802C: ; 0x0224802C + mov r1, #0x10 + add r0, #0x37 + strb r1, [r0] + bx lr + thumb_func_end MOD18_0224802C + + thumb_func_start MOD18_02248034 +MOD18_02248034: ; 0x02248034 + ldr r1, _02248048 ; =0x022513F0 + ldr r2, [r1, #4] + add r2, #0x2a + strb r0, [r2] + ldr r0, [r1, #4] + mov r2, #0x12 + add r0, #0x37 + strb r2, [r0] + bx lr + nop +_02248048: .word 0x022513F0 + thumb_func_end MOD18_02248034 + + thumb_func_start MOD18_0224804C +MOD18_0224804C: ; 0x0224804C + mov r1, #0xb + add r0, #0x37 + strb r1, [r0] + bx lr + thumb_func_end MOD18_0224804C + + thumb_func_start MOD18_02248054 +MOD18_02248054: ; 0x02248054 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #0x11 + beq _02248080 + ldrh r0, [r4, #0x30] + bl FUN_02030E7C + cmp r0, #0 + bne _02248080 + mov r0, #0 + str r0, [r4, #4] + bl MOD18_0224D344 + add r0, r4, #0 + mov r1, #4 + add r0, #0x37 + strb r1, [r0] +_02248080: + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #0x29 + bhi _02248134 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02248096: ; jump table + .short _022485F6 - _02248096 - 2 ; case 0 + .short _022480EA - _02248096 - 2 ; case 1 + .short _0224810C - _02248096 - 2 ; case 2 + .short _02248116 - _02248096 - 2 ; case 3 + .short _02248116 - _02248096 - 2 ; case 4 + .short _02248128 - _02248096 - 2 ; case 5 + .short _02248174 - _02248096 - 2 ; case 6 + .short _02248186 - _02248096 - 2 ; case 7 + .short _02248162 - _02248096 - 2 ; case 8 + .short _022481A6 - _02248096 - 2 ; case 9 + .short _022485F6 - _02248096 - 2 ; case 10 + .short _022481D8 - _02248096 - 2 ; case 11 + .short _022481FC - _02248096 - 2 ; case 12 + .short _0224821A - _02248096 - 2 ; case 13 + .short _0224822E - _02248096 - 2 ; case 14 + .short _02248240 - _02248096 - 2 ; case 15 + .short _02248262 - _02248096 - 2 ; case 16 + .short _022485F6 - _02248096 - 2 ; case 17 + .short _02248276 - _02248096 - 2 ; case 18 + .short _0224830C - _02248096 - 2 ; case 19 + .short _02248348 - _02248096 - 2 ; case 20 + .short _02248352 - _02248096 - 2 ; case 21 + .short _022483BC - _02248096 - 2 ; case 22 + .short _02248398 - _02248096 - 2 ; case 23 + .short _022483AA - _02248096 - 2 ; case 24 + .short _022483F6 - _02248096 - 2 ; case 25 + .short _02248400 - _02248096 - 2 ; case 26 + .short _02248420 - _02248096 - 2 ; case 27 + .short _02248432 - _02248096 - 2 ; case 28 + .short _0224844E - _02248096 - 2 ; case 29 + .short _02248458 - _02248096 - 2 ; case 30 + .short _02248478 - _02248096 - 2 ; case 31 + .short _0224849A - _02248096 - 2 ; case 32 + .short _022484F4 - _02248096 - 2 ; case 33 + .short _0224851C - _02248096 - 2 ; case 34 + .short _02248538 - _02248096 - 2 ; case 35 + .short _02248542 - _02248096 - 2 ; case 36 + .short _0224856E - _02248096 - 2 ; case 37 + .short _0224858E - _02248096 - 2 ; case 38 + .short _022485AA - _02248096 - 2 ; case 39 + .short _022485C6 - _02248096 - 2 ; case 40 + .short _022485E4 - _02248096 - 2 ; case 41 +_022480EA: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248134 + add r0, r4, #0 + bl MOD18_02247AA8 + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224810C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247F5C + b _022485F6 +_02248116: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247B60 + b _022485F6 +_02248128: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02248136 +_02248134: + b _022485F6 +_02248136: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #9 + bne _0224814E + add r0, r4, #0 + mov r1, #9 + add r0, #0x37 + strb r1, [r0] + ldrh r0, [r4, #0x30] + bl MOD18_0224D698 +_0224814E: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #6 + bne _02248256 + add r0, r4, #0 + mov r1, #6 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248162: + add r0, r4, #0 + mov r1, #0xf + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #7 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248174: + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #7 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248186: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248256 + ldr r0, _022484C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02248256 + add r0, r4, #0 + mov r1, #4 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022481A6: + bl MOD18_0224D774 + cmp r0, #0 + beq _02248256 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldrh r0, [r4, #0x30] + bl FUN_0202DFA4 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #8] + ldr r2, _022484C4 ; =MOD18_0224804C + ldr r0, [r0, #8] + add r3, r4, #0 + bl MOD18_0224D5CC + add r0, r4, #0 + mov r1, #0xa + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022481D8: + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x20 + bl FUN_0202A170 + bl MOD18_0224D784 + add r0, r4, #0 + mov r1, #9 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xc + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022481FC: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248256 + add r0, r4, #0 + mov r1, #0xe + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #0xd + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224821A: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0xd + bne _02248256 + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224822E: + add r0, r4, #0 + mov r1, #0xa + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #1 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248240: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248256 + ldr r0, _022484C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _02248258 +_02248256: + b _022485F6 +_02248258: + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248262: + ldr r0, _022484C8 ; =MOD18_02248034 + ldr r1, [r4, #8] + bl MOD18_0224AF28 + str r0, [r4, #4] + add r0, r4, #0 + mov r1, #0x11 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248276: + mov r0, #0 + str r0, [r4, #4] + ldr r0, _022484CC ; =0x022513F0 + ldr r0, [r0, #4] + add r0, #0x2a + ldrb r0, [r0] + cmp r0, #0 + bne _02248298 + add r0, r4, #0 + mov r1, #0xb + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248298: + ldrh r0, [r4, #0x30] + bl FUN_0202E068 + cmp r0, #0 + beq _022482B4 + add r0, r4, #0 + mov r1, #0x57 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022482B4: + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02025C18 + cmp r0, #0 + bne _022482D2 + add r0, r4, #0 + mov r1, #0x57 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022482D2: + ldr r0, _022484CC ; =0x022513F0 + ldr r0, [r0, #4] + add r0, #0x2a + ldrb r0, [r0] + bl FUN_0204CB10 + cmp r0, #0 + beq _022482F4 + add r0, r4, #0 + mov r1, #0x56 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0xf + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022482F4: + ldr r1, _022484CC ; =0x022513F0 + add r0, r4, #0 + ldr r1, [r1, #4] + add r1, #0x2a + ldrb r1, [r1] + bl MOD18_02247EF8 + add r0, r4, #0 + mov r1, #0x13 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224830C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224838C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #8] + ldr r1, _022484D0 ; =0x02250520 + ldr r0, [r0, #8] + ldr r2, _022484D4 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x24] + add r0, r4, #0 + mov r1, #0x14 + add r0, #0x37 + strb r1, [r0] + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #8 + beq _0224838C + add r0, r4, #0 + mov r1, #1 + add r0, #0x38 + strb r1, [r0] + b _022485F6 +_02248348: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247F18 + b _022485F6 +_02248352: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224838C + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x16 + bne _02248370 + add r0, r4, #0 + mov r1, #0x16 + add r0, #0x37 + strb r1, [r0] +_02248370: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x18 + bne _02248382 + add r0, r4, #0 + mov r1, #0x18 + add r0, #0x37 + strb r1, [r0] +_02248382: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x17 + beq _0224838E +_0224838C: + b _022485F6 +_0224838E: + add r0, r4, #0 + mov r1, #0x17 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248398: + add r0, r4, #0 + mov r1, #0x1e + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022483AA: + add r0, r4, #0 + mov r1, #0xd + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022483BC: + add r0, r4, #0 + bl MOD18_02247EA0 + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_020462AC + add r6, r0, #0 + bl FUN_0205F720 + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + bl FUN_0205F730 + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x1f + bl FUN_0202A170 + add r0, r4, #0 + mov r1, #0x19 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022483F6: + add r0, r4, #0 + mov r1, #0x1a + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248400: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224848E + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0xf + bne _0224848E + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248420: + add r0, r4, #0 + mov r1, #0x88 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1c + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248432: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224848E + add r0, r4, #0 + bl MOD18_02247BB8 + add r0, r4, #0 + mov r1, #0x1d + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224844E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247C98 + b _022485F6 +_02248458: + bl MOD18_0223D638 + add r1, r4, #0 + add r1, #0x32 + ldrb r1, [r1] + bl MOD18_0224DE00 + add r0, r4, #0 + mov r1, #0x89 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x1f + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248478: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224848E + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x20 + beq _02248490 +_0224848E: + b _022485F6 +_02248490: + add r0, r4, #0 + mov r1, #0x20 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224849A: + add r0, r4, #0 + add r0, #0x33 + ldrb r6, [r0] + cmp r6, #0x33 + bne _022484D8 + add r0, r4, #0 + mov r1, #0x8b + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x21 + add r0, #0x37 + strb r1, [r0] + b _022485F6 + nop +_022484C0: .word 0x021C48B8 +_022484C4: .word MOD18_0224804C +_022484C8: .word MOD18_02248034 +_022484CC: .word 0x022513F0 +_022484D0: .word 0x02250520 +_022484D4: .word 0x000003D9 +_022484D8: + bl MOD18_0223D638 + add r1, r6, #0 + bl MOD18_0224DE18 + add r0, r4, #0 + mov r1, #0x8a + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x22 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022484F4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x2a + bne _022485F6 + add r0, r4, #0 + mov r1, #0 + add r0, #0x38 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224851C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + add r0, r4, #0 + bl MOD18_02247D1C + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_02248538: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247DD8 + b _022485F6 +_02248542: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + ldr r0, [r4, #8] + ldr r0, [r0, #0xc] + bl FUN_02029FC8 + mov r1, #0x21 + bl FUN_0202A170 + add r0, r4, #0 + mov r1, #0x8e + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x25 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224856E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + ldr r0, _02248658 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _022485F6 + add r0, r4, #0 + mov r1, #0x26 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_0224858E: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x25 + bne _022485F6 + add r0, r4, #0 + mov r1, #0x64 + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #0x27 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022485AA: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x64 + bne _022485F6 + add r0, r4, #0 + mov r1, #0x96 + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #0x28 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022485C6: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022485F6 + add r0, r4, #0 + mov r1, #0x65 + bl MOD18_022479D0 + add r0, r4, #0 + mov r1, #0x29 + add r0, #0x37 + strb r1, [r0] + b _022485F6 +_022485E4: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #0x65 + bne _022485F6 + add r0, r4, #0 + mov r1, #0xe + add r0, #0x37 + strb r1, [r0] +_022485F6: + add r0, r4, #0 + add r0, #0x38 + ldrb r0, [r0] + cmp r0, #8 + bne _02248652 + add r0, r4, #0 + add r0, #0x37 + ldrb r0, [r0] + cmp r0, #4 + beq _02248652 + cmp r0, #7 + beq _02248652 + ldr r0, [r4, #0x24] + cmp r0, #0 + beq _0224861E + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x24] +_0224861E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0224863C + mov r1, #1 + mvn r1, r1 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 + bl MOD18_0223D678 + bl MOD18_0224DD94 + mov r0, #0 + str r0, [r4, #4] +_0224863C: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02247FC0 + add r0, r4, #0 + mov r1, #8 + add r0, #0x37 + strb r1, [r0] + mov r0, #0 + add r4, #0x38 + strb r0, [r4] +_02248652: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_02248658: .word 0x021C48B8 + thumb_func_end MOD18_02248054 + + thumb_func_start MOD18_0224865C +MOD18_0224865C: ; 0x0224865C + push {r4, lr} + add r4, r0, #0 + mov r1, #0xf + bl MOD18_022479E4 + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479D0 + mov r0, #7 + add r4, #0x37 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224865C + + thumb_func_start MOD18_02248678 +MOD18_02248678: ; 0x02248678 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _022486B6 + cmp r0, #0 + bne _022486A2 + add r0, r4, #0 + mov r1, #9 + bl MOD18_022479BC + ldrh r0, [r4, #0x2c] + bl MOD18_0224D698 + mov r1, #0xa + b _022486AC +_022486A2: + add r0, r4, #0 + mov r1, #6 + bl MOD18_022479BC + mov r1, #8 +_022486AC: + add r0, r4, #0 + add r0, #0x34 + strb r1, [r0] + mov r0, #0 + str r0, [r4, #0x20] +_022486B6: + pop {r4, pc} + thumb_func_end MOD18_02248678 + + thumb_func_start MOD18_022486B8 +MOD18_022486B8: ; 0x022486B8 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224873A + cmp r0, #0 + bne _0224871E + add r0, r4, #0 + add r0, #0x26 + ldrb r0, [r0] + bl MOD18_022494B4 + cmp r0, #0 + beq _02248704 + ldr r0, [r4, #4] + bl FUN_020377AC + bl FUN_02026CB4 + bl FUN_02026B90 + ldr r0, _0224873C ; =0x000005E3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x16 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x13 + add r0, #0x34 + strb r1, [r0] + b _02248736 +_02248704: + add r0, r4, #0 + mov r1, #0x17 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x15 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x15 + add r0, #0x34 + strb r1, [r0] + b _02248736 +_0224871E: + add r0, r4, #0 + mov r1, #0x18 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x1d + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x15 + add r0, #0x34 + strb r1, [r0] +_02248736: + mov r0, #0 + str r0, [r4, #0x20] +_0224873A: + pop {r4, pc} + .align 2, 0 +_0224873C: .word 0x000005E3 + thumb_func_end MOD18_022486B8 + + thumb_func_start MOD18_02248740 +MOD18_02248740: ; 0x02248740 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02248756 + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x20] +_02248756: + ldr r1, [r4, #0x28] + cmp r1, #0 + beq _02248760 + mov r0, #0 + blx r1 +_02248760: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248784 + add r0, r4, #0 + bl FUN_02016A18 + bl FUN_0204F7FC + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _02248780 ; =0x022513F0 + mov r1, #0 + str r1, [r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_02248780: .word 0x022513F0 + thumb_func_end MOD18_02248740 + + thumb_func_start MOD18_02248784 +MOD18_02248784: ; 0x02248784 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _022487BC + add r0, r4, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200CCF8 + mov r1, #0 + ldr r0, [r4, #0x1c] + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + ldr r0, [r4, #0x18] + bl FUN_02012870 + mov r0, #0 + str r0, [r4, #0x18] +_022487BC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02248784 + + thumb_func_start MOD18_022487C0 +MOD18_022487C0: ; 0x022487C0 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + bl MOD18_0223D638 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r6, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_022487C0 + + thumb_func_start MOD18_022487EC +MOD18_022487EC: ; 0x022487EC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD18_0223D638 + add r4, r0, #0 + ldrh r0, [r5, #0x2c] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + add r5, #0x26 + ldrb r1, [r5] + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x1f + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_022487EC + + thumb_func_start MOD18_02248820 +MOD18_02248820: ; 0x02248820 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #5 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x18] + mov r3, #1 + add r1, r5, #0 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #0xa + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _022488E0 ; =0x0000028D + add r1, #8 + str r0, [sp, #0x10] + ldr r0, [r5, #4] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _022488E4 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _022488E8 ; =0x0000023D + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + mov r4, #0 +_02248870: + add r2, r5, #0 + add r2, #0x2e + ldrb r2, [r2] + ldr r0, [r5, #0x18] + add r1, r6, #0 + lsl r2, r2, #2 + add r2, r4, r2 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #4 + blt _02248870 + ldr r0, [r5, #0x18] + add r1, r6, #0 + mov r2, #0x30 + mov r3, #0x33 + bl FUN_02012880 + add r0, r6, #0 + bl FUN_0200A8B8 + ldr r4, _022488EC ; =0x02250528 + add r3, sp, #0x14 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5, #0x18] + mov r1, #5 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x20] + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + mov r1, #0 + add r0, r2, #0 + strh r1, [r5, #0x36] + add r2, r1, #0 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x1c] + add r5, #8 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022488E0: .word 0x0000028D +_022488E4: .word 0x000003D9 +_022488E8: .word 0x0000023D +_022488EC: .word 0x02250528 + thumb_func_end MOD18_02248820 + + thumb_func_start MOD18_022488F0 +MOD18_022488F0: ; 0x022488F0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + ldr r0, [r5, #0x1c] + bl FUN_02001204 + add r4, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x1c] + add r1, #0x36 + ldrh r6, [r5, #0x36] + bl FUN_0200143C + ldrh r0, [r5, #0x36] + cmp r6, r0 + beq _02248916 + ldr r0, _022489C0 ; =0x000005DC + bl FUN_020054C8 +_02248916: + bl FUN_020311F0 + cmp r0, #0 + beq _02248922 + mov r4, #1 + mvn r4, r4 +_02248922: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02248934 + add r0, r0, #1 + cmp r4, r0 + bne _02248936 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02248934: + mov r4, #0x33 +_02248936: + ldr r0, _022489C0 ; =0x000005DC + bl FUN_020054C8 + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_02248784 + cmp r4, #0x33 + beq _02248978 + add r0, r5, #0 + add r0, #0x2e + ldrb r0, [r0] + lsl r0, r0, #2 + add r1, r4, r0 + add r0, r5, #0 + add r0, #0x2f + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x1a + add r0, #0x34 + strb r1, [r0] + bl MOD18_0223D638 + add r1, r5, #0 + add r1, #0x2f + ldrb r1, [r1] + bl MOD18_0224DE18 + add r0, r5, #0 + mov r1, #0x92 + bl MOD18_02247A0C + b _02248998 +_02248978: + add r0, r5, #0 + mov r1, #0x33 + add r0, #0x2f + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x10 + add r0, #0x34 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0x35 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x91 + bl MOD18_02247A0C +_02248998: + add r0, r5, #0 + add r0, #0x2f + ldrb r1, [r0] + add r0, sp, #0 + strb r1, [r0] + ldrh r1, [r5, #0x2c] + strb r1, [r0, #1] + mov r1, #1 + strb r1, [r0, #2] + mov r0, #0x4f + add r1, sp, #0 + bl FUN_020311D0 + add r0, r5, #0 + mov r1, #0x20 + bl MOD18_022479BC + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_022489C0: .word 0x000005DC + thumb_func_end MOD18_022488F0 + + thumb_func_start MOD18_022489C4 +MOD18_022489C4: ; 0x022489C4 + mov r1, #0xc + add r0, #0x34 + strb r1, [r0] + bx lr + thumb_func_end MOD18_022489C4 + + thumb_func_start MOD18_022489CC +MOD18_022489CC: ; 0x022489CC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r4, r1, #0 + add r5, r0, #0 + ldrh r0, [r4, #0x2c] + bl FUN_02030E7C + cmp r0, #0 + bne _022489EA + bl MOD18_0224D344 + add r0, r4, #0 + mov r1, #4 + add r0, #0x34 + strb r1, [r0] +_022489EA: + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #0x20 + bls _022489F6 + b _02248DB6 +_022489F6: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02248A02: ; jump table + .short _02248DB6 - _02248A02 - 2 ; case 0 + .short _02248DB6 - _02248A02 - 2 ; case 1 + .short _02248A56 - _02248A02 - 2 ; case 2 + .short _02248DB6 - _02248A02 - 2 ; case 3 + .short _02248A44 - _02248A02 - 2 ; case 4 + .short _02248A9C - _02248A02 - 2 ; case 5 + .short _02248AAE - _02248A02 - 2 ; case 6 + .short _02248AD8 - _02248A02 - 2 ; case 7 + .short _02248AE2 - _02248A02 - 2 ; case 8 + .short _02248AF4 - _02248A02 - 2 ; case 9 + .short _02248B14 - _02248A02 - 2 ; case 10 + .short _02248DB6 - _02248A02 - 2 ; case 11 + .short _02248B46 - _02248A02 - 2 ; case 12 + .short _02248B5E - _02248A02 - 2 ; case 13 + .short _02248B7C - _02248A02 - 2 ; case 14 + .short _02248B92 - _02248A02 - 2 ; case 15 + .short _02248BA4 - _02248A02 - 2 ; case 16 + .short _02248BC2 - _02248A02 - 2 ; case 17 + .short _02248BEC - _02248A02 - 2 ; case 18 + .short _02248BF6 - _02248A02 - 2 ; case 19 + .short _02248C06 - _02248A02 - 2 ; case 20 + .short _02248C10 - _02248A02 - 2 ; case 21 + .short _02248C38 - _02248A02 - 2 ; case 22 + .short _02248C50 - _02248A02 - 2 ; case 23 + .short _02248C82 - _02248A02 - 2 ; case 24 + .short _02248CA0 - _02248A02 - 2 ; case 25 + .short _02248CAA - _02248A02 - 2 ; case 26 + .short _02248CD2 - _02248A02 - 2 ; case 27 + .short _02248D1C - _02248A02 - 2 ; case 28 + .short _02248D3A - _02248A02 - 2 ; case 29 + .short _02248D50 - _02248A02 - 2 ; case 30 + .short _02248D74 - _02248A02 - 2 ; case 31 + .short _02248D9C - _02248A02 - 2 ; case 32 +_02248A44: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248740 + b _02248DB6 +_02248A56: + add r0, r4, #0 + mov r1, #0xc + add r0, #0x2e + strb r1, [r0] + ldr r0, _02248D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _02248A7A + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #8 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248A7A: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #5 + bne _02248A8E + add r0, r4, #0 + mov r1, #5 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248A8E: + cmp r0, #0x16 + bne _02248B86 + add r0, r4, #0 + mov r1, #0x16 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248A9C: + add r0, r4, #0 + mov r1, #0x18 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #6 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248AAE: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248B86 + add r0, r4, #0 + mov r1, #7 + add r0, #0x34 + strb r1, [r0] + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _02248D90 ; =0x02250520 + ldr r0, [r0, #8] + ldr r2, _02248D94 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x20] + b _02248DB6 +_02248AD8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248678 + b _02248DB6 +_02248AE2: + add r0, r4, #0 + mov r1, #0xf + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #9 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248AF4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248B86 + ldr r0, _02248D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02248B86 + add r0, r4, #0 + mov r1, #4 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B14: + bl MOD18_0224D774 + cmp r0, #0 + beq _02248B86 + bl MOD18_0223D638 + bl MOD18_0224DD94 + ldrh r0, [r4, #0x2c] + bl FUN_0202DFA4 + add r1, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #4] + ldr r2, _02248D98 ; =MOD18_022489C4 + ldr r0, [r0, #8] + add r3, r4, #0 + bl MOD18_0224D5CC + add r0, r4, #0 + mov r1, #0xb + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B46: + bl MOD18_0224D784 + ldrh r1, [r4, #0x2c] + add r0, r4, #0 + mov r2, #0x1a + bl MOD18_022487C0 + add r0, r4, #0 + mov r1, #0xd + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B5E: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248B86 + add r0, r4, #0 + mov r1, #0xd + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0xe + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B7C: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0xe + beq _02248B88 +_02248B86: + b _02248DB6 +_02248B88: + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248B92: + add r0, r4, #0 + mov r1, #0x1b + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #2 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248BA4: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0x2a + bl MOD18_022479BC + b _02248DB6 +_02248BC2: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + add r0, r4, #0 + mov r1, #0x12 + add r0, #0x34 + strb r1, [r0] + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _02248D90 ; =0x02250520 + ldr r0, [r0, #8] + ldr r2, _02248D94 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x20] + b _02248DB6 +_02248BEC: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_022486B8 + b _02248DB6 +_02248BF6: + add r0, r4, #0 + bl MOD18_022487EC + add r0, r4, #0 + mov r1, #0x14 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C06: + add r0, r4, #0 + mov r1, #0x15 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C10: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + ldr r0, _02248D8C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _02248C8E + add r0, r4, #0 + mov r1, #0xf + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C38: + add r0, r4, #0 + mov r1, #0x8f + bl MOD18_02247A0C + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C50: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248C8E + add r0, r4, #0 + add r0, #0x2e + ldrb r6, [r0] + cmp r6, #0xc + beq _02248C8E + bl MOD18_0223D638 + add r1, r6, #0 + bl MOD18_0224DE00 + add r0, r4, #0 + mov r1, #0x90 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x18 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248C82: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + beq _02248C90 +_02248C8E: + b _02248DB6 +_02248C90: + add r0, r4, #0 + bl MOD18_02248820 + add r0, r4, #0 + mov r1, #0x19 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248CA0: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_022488F0 + b _02248DB6 +_02248CAA: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x1b + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x25 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x1b + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248CD2: + bl MOD18_0223D638 + add r1, r4, #0 + add r1, #0x30 + ldrb r1, [r1] + bl MOD18_0224DE18 + bl MOD18_0223D638 + add r2, r4, #0 + add r2, #0x2f + ldrb r2, [r2] + mov r1, #6 + bl MOD18_0224DE30 + add r0, r4, #0 + add r0, #0x2f + ldrb r1, [r0] + add r0, r4, #0 + add r0, #0x30 + ldrb r0, [r0] + cmp r1, r0 + bne _02248D0A + add r0, r4, #0 + mov r1, #0x94 + bl MOD18_02247A0C + b _02248D12 +_02248D0A: + add r0, r4, #0 + mov r1, #0x93 + bl MOD18_02247A0C +_02248D12: + add r0, r4, #0 + mov r1, #0x1c + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D1C: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x95 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x1d + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D3A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x1e + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D50: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x64 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x64 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0x96 + bl MOD18_02247A0C + add r0, r4, #0 + mov r1, #0x1f + add r0, #0x34 + strb r1, [r0] + b _02248DB6 +_02248D74: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x20 + add r0, #0x34 + strb r1, [r0] + b _02248DB6 + nop +_02248D8C: .word 0x021C48B8 +_02248D90: .word 0x02250520 +_02248D94: .word 0x000003D9 +_02248D98: .word MOD18_022489C4 +_02248D9C: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #0x65 + bne _02248DB6 + add r0, r4, #0 + mov r1, #0x65 + bl MOD18_022479BC + add r0, r4, #0 + mov r1, #0xf + add r0, #0x34 + strb r1, [r0] +_02248DB6: + add r0, r4, #0 + add r0, #0x35 + ldrb r0, [r0] + cmp r0, #8 + bne _02248DF4 + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #4 + beq _02248DF4 + cmp r0, #9 + beq _02248DF4 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _02248DDE + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x20] +_02248DDE: + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_02248784 + add r0, r4, #0 + mov r1, #8 + add r0, #0x34 + strb r1, [r0] + mov r0, #0 + add r4, #0x35 + strb r0, [r4] +_02248DF4: + add sp, #4 + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD18_022489CC + + thumb_func_start MOD18_02248DF8 +MOD18_02248DF8: ; 0x02248DF8 + push {r4, r5, r6, lr} + ldr r0, _02248E60 ; =0x022513F0 + add r5, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + cmp r0, #0 + beq _02248E0C + bl ErrorHandling + pop {r4, r5, r6, pc} +_02248E0C: + mov r0, #0x21 + mov r1, #0x38 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x38 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, _02248E60 ; =0x022513F0 + mov r1, #2 + str r4, [r0] + str r6, [r4, #4] + add r0, r4, #0 + strh r5, [r4, #0x2c] + add r0, #0x34 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0 + add r0, #0x35 + strb r1, [r0] + add r0, r4, #0 + mov r1, #0xc + add r0, #0x2e + strb r1, [r0] + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x16 + add r3, r2, #0 + bl MOD18_0224DCB8 + bl FUN_0204FB14 + ldr r0, _02248E64 ; =MOD18_022489CC + ldr r2, _02248E68 ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4] + pop {r4, r5, r6, pc} + nop +_02248E60: .word 0x022513F0 +_02248E64: .word MOD18_022489CC +_02248E68: .word 0x00002710 + thumb_func_end MOD18_02248DF8 + + thumb_func_start MOD18_02248E6C +MOD18_02248E6C: ; 0x02248E6C + ldr r3, _02248E74 ; =0x02030C4D + mov r0, #0x4b + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248E74: .word 0x02030C4D + thumb_func_end MOD18_02248E6C + + thumb_func_start MOD18_02248E78 +MOD18_02248E78: ; 0x02248E78 + ldr r3, _02248E80 ; =0x02030C4D + mov r0, #0x4c + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248E80: .word 0x02030C4D + thumb_func_end MOD18_02248E78 + + thumb_func_start MOD18_02248E84 +MOD18_02248E84: ; 0x02248E84 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02248EAE + ldr r0, _02248EB0 ; =0x022513F0 + ldr r0, [r0] + cmp r0, #0 + beq _02248EAE + cmp r5, #2 + beq _02248EA4 + bl ErrorHandling +_02248EA4: + ldr r0, _02248EB0 ; =0x022513F0 + ldrb r1, [r4, #1] + ldr r0, [r0] + add r0, #0x35 + strb r1, [r0] +_02248EAE: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248EB0: .word 0x022513F0 + thumb_func_end MOD18_02248E84 + + thumb_func_start MOD18_02248EB4 +MOD18_02248EB4: ; 0x02248EB4 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _02248EEA + ldr r0, _02248EEC ; =0x022513F0 + ldr r0, [r0, #4] + cmp r0, #0 + beq _02248EEA + cmp r5, #2 + beq _02248ED4 + bl ErrorHandling +_02248ED4: + ldr r0, _02248EEC ; =0x022513F0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _02248EE0 + bl ErrorHandling +_02248EE0: + ldr r0, _02248EEC ; =0x022513F0 + ldrb r1, [r4, #1] + ldr r0, [r0, #4] + add r0, #0x38 + strb r1, [r0] +_02248EEA: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248EEC: .word 0x022513F0 + thumb_func_end MOD18_02248EB4 + + thumb_func_start MOD18_02248EF0 +MOD18_02248EF0: ; 0x02248EF0 + mov r0, #2 + bx lr + thumb_func_end MOD18_02248EF0 + + thumb_func_start MOD18_02248EF4 +MOD18_02248EF4: ; 0x02248EF4 + ldr r3, _02248EFC ; =0x02030C4D + mov r0, #0x4e + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248EFC: .word 0x02030C4D + thumb_func_end MOD18_02248EF4 + + thumb_func_start MOD18_02248F00 +MOD18_02248F00: ; 0x02248F00 + push {r3, r4, r5, lr} + ldr r0, _02248F70 ; =0x022513F0 + add r5, r2, #0 + ldr r4, [r0] + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _02248F6E + ldr r0, _02248F70 ; =0x022513F0 + ldr r0, [r0] + cmp r0, #0 + bne _02248F1E + bl ErrorHandling +_02248F1E: + add r0, r4, #0 + add r0, #0x34 + ldrb r0, [r0] + cmp r0, #2 + beq _02248F38 + add r0, r4, #0 + mov r1, #8 + bl MOD18_022479BC + mov r0, #8 + add r4, #0x34 + strb r0, [r4] + pop {r3, r4, r5, pc} +_02248F38: + ldrb r1, [r5] + add r0, r4, #0 + add r0, #0x24 + strb r1, [r0] + add r0, r4, #0 + ldrb r1, [r5, #1] + add r0, #0x25 + strb r1, [r0] + add r0, r4, #0 + ldrb r1, [r5, #2] + add r0, #0x26 + add r4, #0x34 + strb r1, [r0] + mov r0, #0x11 + strb r0, [r4] + bl MOD18_0223D638 + ldrb r1, [r5, #2] + bl MOD18_0224DE44 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x1c + add r3, r2, #0 + bl MOD18_0224DCB8 +_02248F6E: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248F70: .word 0x022513F0 + thumb_func_end MOD18_02248F00 + + thumb_func_start MOD18_02248F74 +MOD18_02248F74: ; 0x02248F74 + mov r0, #3 + bx lr + thumb_func_end MOD18_02248F74 + + thumb_func_start MOD18_02248F78 +MOD18_02248F78: ; 0x02248F78 + ldr r3, _02248F80 ; =0x02030C4D + mov r0, #0x50 + add r1, r2, #0 + bx r3 + .align 2, 0 +_02248F80: .word 0x02030C4D + thumb_func_end MOD18_02248F78 + + thumb_func_start MOD18_02248F84 +MOD18_02248F84: ; 0x02248F84 + push {r4, r5, r6, lr} + ldr r0, _02248FC0 ; =0x022513F0 + add r5, r2, #0 + ldr r4, [r0] + ldr r6, [r0, #4] + bl FUN_02031190 + ldrb r1, [r5, #1] + cmp r1, r0 + bne _02248FBE + ldrb r0, [r5, #2] + cmp r0, #0 + beq _02248FA8 + cmp r0, #1 + beq _02248FB0 + cmp r0, #2 + beq _02248FB8 + pop {r4, r5, r6, pc} +_02248FA8: + ldrb r0, [r5] + add r4, #0x2e + strb r0, [r4] + pop {r4, r5, r6, pc} +_02248FB0: + ldrb r0, [r5] + add r6, #0x33 + strb r0, [r6] + pop {r4, r5, r6, pc} +_02248FB8: + ldrb r0, [r5] + add r4, #0x30 + strb r0, [r4] +_02248FBE: + pop {r4, r5, r6, pc} + .align 2, 0 +_02248FC0: .word 0x022513F0 + thumb_func_end MOD18_02248F84 + + thumb_func_start MOD18_02248FC4 +MOD18_02248FC4: ; 0x02248FC4 + mov r0, #3 + bx lr + thumb_func_end MOD18_02248FC4 + + thumb_func_start MOD18_02248FC8 +MOD18_02248FC8: ; 0x02248FC8 + push {r3, lr} + ldr r0, _02248FE8 ; =0x022513F0 + ldr r1, [r0, #4] + cmp r1, #0 + beq _02248FD8 + ldr r0, [r1] + bl MOD18_02247B60 +_02248FD8: + ldr r0, _02248FE8 ; =0x022513F0 + ldr r1, [r0] + cmp r1, #0 + beq _02248FE6 + ldr r0, [r1] + bl MOD18_02248740 +_02248FE6: + pop {r3, pc} + .align 2, 0 +_02248FE8: .word 0x022513F0 + thumb_func_end MOD18_02248FC8 + + thumb_func_start MOD18_02248FEC +MOD18_02248FEC: ; 0x02248FEC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r1, r5, #0 + ldr r0, [r5, #0x20] + add r1, #0x3a + ldrh r4, [r5, #0x3a] + bl FUN_0200143C + ldrh r0, [r5, #0x3a] + cmp r4, r0 + beq _02249008 + ldr r0, _0224900C ; =0x000005DC + bl FUN_020054C8 +_02249008: + pop {r3, r4, r5, pc} + nop +_0224900C: .word 0x000005DC + thumb_func_end MOD18_02248FEC + + thumb_func_start MOD18_02249010 +MOD18_02249010: ; 0x02249010 + push {r4, r5, r6, r7, lr} + sub sp, #0xb4 + ldr r4, _022491BC ; =0x02250580 + add r3, sp, #0x9c + str r2, [sp, #0x14] + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [sp, #0xc] + add r1, r2, #0 + add r0, #0x74 + mov r2, #8 + mov r3, #0xb + bl FUN_021D959C + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x74 + mov r2, #9 + mov r3, #0 + bl FUN_021D967C + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x74 + mov r2, #1 + mov r3, #0 + bl FUN_021D96F4 + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r2, #0 + add r0, #0x74 + mov r1, #0x42 + add r3, r2, #0 + bl FUN_021D9708 + mov r0, #1 + str r0, [sp] + mov r0, #0xe3 + lsl r0, r0, #6 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r1, #0x42 + add r0, #0x74 + mov r2, #2 + mov r3, #0 + bl FUN_021D971C + ldr r0, [sp, #0xc] + ldr r1, _022491C0 ; =0x022505F0 + add r0, #0x74 + bl FUN_021D9820 + mov r2, #0x76 + ldr r1, [sp, #0xc] + lsl r2, r2, #2 + str r0, [r1, r2] + add r0, r1, #0 + ldr r0, [r0, r2] + add r2, #0x60 + ldrh r1, [r1, r2] + ldr r0, [r0] + bl MOD18_02249240 + ldr r0, _022491C4 ; =0x000038C1 + mov r1, #0x42 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r2, #8 + add r0, #0x74 + mov r3, #0 + bl FUN_021D96F4 + ldr r0, _022491C4 ; =0x000038C1 + mov r1, #0x42 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r2, #7 + add r0, #0x74 + mov r3, #0 + bl FUN_021D9708 + mov r0, #1 + str r0, [sp] + ldr r0, _022491C4 ; =0x000038C1 + mov r1, #0x42 + str r0, [sp, #4] + ldr r0, [sp, #0xc] + mov r2, #0xa + add r0, #0x74 + mov r3, #0 + bl FUN_021D971C + ldr r0, [sp, #0x14] + mov r4, #0 + cmp r0, #0 + bls _02249184 + ldr r5, [sp, #0xc] + ldr r3, _022491C8 ; =0x02250624 + add r7, r4, #0 + add r2, sp, #0x28 + mov r6, #6 +_02249102: + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + sub r6, r6, #1 + bne _02249102 + ldr r0, [r3] + ldr r3, _022491CC ; =0x02250574 + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x1c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [sp, #0xc] + str r0, [sp, #0x18] + add r0, #0x74 + str r0, [sp, #0x18] +_02249122: + add r6, sp, #0x28 + add r3, sp, #0x68 + mov r2, #6 +_02249128: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249128 + ldr r0, [r6] + add r1, sp, #0x68 + str r0, [r3] + mov r0, #2 + ldrsh r0, [r1, r0] + add r1, r0, r7 + add r0, sp, #0x68 + strh r1, [r0, #2] + ldr r0, [sp, #0x10] + ldrb r1, [r0, r4] + lsl r0, r1, #1 + add r1, r1, r0 + add r0, sp, #0x68 + strh r1, [r0, #6] + ldr r0, [sp, #0x18] + add r1, sp, #0x68 + bl FUN_021D9820 + mov r1, #0x77 + lsl r1, r1, #2 + add r2, sp, #0x5c + add r3, sp, #0x1c + str r0, [r5, r1] + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r6, #0 + str r0, [r2] + mov r0, #0x77 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r2, #1 + ldr r0, [r0] + bl FUN_02020074 + ldr r0, [sp, #0x14] + add r4, r4, #1 + add r7, #0x18 + add r5, r5, #4 + cmp r4, r0 + blo _02249122 +_02249184: + mov r1, #0x8e + ldr r0, [sp, #0xc] + lsl r1, r1, #2 + ldrh r0, [r0, r1] + sub r1, #0x60 + add r0, r0, #1 + lsl r2, r0, #2 + ldr r0, [sp, #0xc] + add r0, r0, r2 + ldr r0, [r0, r1] + mov r1, #2 + ldr r0, [r0] + mov r2, #1 + bl MOD18_02249270 + ldr r0, [sp, #0x14] + mov r1, #0x7e + add r2, r0, #1 + ldr r0, [sp, #0xc] + lsl r1, r1, #2 + str r2, [r0, r1] + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + add sp, #0xb4 + pop {r4, r5, r6, r7, pc} + nop +_022491BC: .word 0x02250580 +_022491C0: .word 0x022505F0 +_022491C4: .word 0x000038C1 +_022491C8: .word 0x02250624 +_022491CC: .word 0x02250574 + thumb_func_end MOD18_02249010 + + thumb_func_start MOD18_022491D0 +MOD18_022491D0: ; 0x022491D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r4, #0 + cmp r0, #0 + bls _022491FE + mov r7, #0x76 + lsl r7, r7, #2 + add r6, r7, #0 + add r6, #0x20 +_022491E8: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r7] + bl FUN_0200C3DC + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _022491E8 +_022491FE: + add r5, #0x74 + add r0, r5, #0 + bl FUN_021D99F8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_022491D0 + + thumb_func_start MOD18_02249208 +MOD18_02249208: ; 0x02249208 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r4, #0 + cmp r0, #0 + bls _0224923C + mov r7, #0x76 + lsl r7, r7, #2 + add r6, r7, #0 + add r6, #0x20 +_02249220: + lsl r0, r4, #2 + add r0, r5, r0 + ldr r0, [r0, r7] + mov r1, #1 + ldr r0, [r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldr r0, [r5, r6] + cmp r4, r0 + blo _02249220 +_0224923C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_02249208 + + thumb_func_start MOD18_02249240 +MOD18_02249240: ; 0x02249240 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0202011C + add r6, r0, #0 + add r3, sp, #0 + ldmia r6!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r6] + add r1, r2, #0 + str r0, [r3] + mov r0, #0x18 + mul r0, r4 + add r0, #0x14 + lsl r0, r0, #0xc + str r0, [sp, #4] + add r0, r5, #0 + bl FUN_02020044 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + thumb_func_end MOD18_02249240 + + thumb_func_start MOD18_02249270 +MOD18_02249270: ; 0x02249270 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl FUN_020201DC + mov r1, #3 + bl _u32_div_f + add r2, r0, #0 + lsl r1, r2, #1 + add r1, r2, r1 + add r0, r5, #0 + add r1, r4, r1 + bl FUN_02020130 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0202027C + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_02249270 + + thumb_func_start MOD18_0224929C +MOD18_0224929C: ; 0x0224929C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #1 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x76 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #0 + add r4, r2, #0 + ldr r0, [r0] + add r2, r1, #0 + bl MOD18_02249270 + add r0, r4, #1 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x76 + lsl r0, r0, #2 + ldr r0, [r1, r0] + mov r1, #1 + ldr r0, [r0] + add r2, r1, #0 + bl MOD18_02249270 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224929C + + thumb_func_start MOD18_022492D0 +MOD18_022492D0: ; 0x022492D0 + push {r4, lr} + add r4, r0, #0 + bl FUN_020201DC + mov r1, #3 + bl _u32_div_f + cmp r1, #1 + bne _022492F6 + add r0, r4, #0 + bl FUN_02020388 + cmp r0, #0 + bne _022492F6 + add r0, r4, #0 + mov r1, #2 + mov r2, #1 + bl MOD18_02249270 +_022492F6: + pop {r4, pc} + thumb_func_end MOD18_022492D0 + + thumb_func_start MOD18_022492F8 +MOD18_022492F8: ; 0x022492F8 + push {r4, lr} + add r4, r0, #0 + mov r0, #0xf + mov r1, #8 + bl FUN_02016998 + ldr r1, _02249324 ; =0x022513F8 + mov r2, #8 + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _02249324 ; =0x022513F8 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #4] + ldr r1, [r0] + strb r2, [r1, #5] + ldr r0, [r0] + str r4, [r0] + pop {r4, pc} + nop +_02249324: .word 0x022513F8 + thumb_func_end MOD18_022492F8 + + thumb_func_start MOD18_02249328 +MOD18_02249328: ; 0x02249328 + ldr r0, _02249330 ; =0x022513F8 + ldr r3, _02249334 ; =0x02016A19 + ldr r0, [r0] + bx r3 + .align 2, 0 +_02249330: .word 0x022513F8 +_02249334: .word 0x02016A19 + thumb_func_end MOD18_02249328 + + thumb_func_start MOD18_02249338 +MOD18_02249338: ; 0x02249338 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_0202623C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02249338 + + thumb_func_start MOD18_0224934C +MOD18_0224934C: ; 0x0224934C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02025DB0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224934C + + thumb_func_start MOD18_02249360 +MOD18_02249360: ; 0x02249360 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02025DC8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249360 + + thumb_func_start MOD18_02249378 +MOD18_02249378: ; 0x02249378 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02025F80 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02249378 + + thumb_func_start MOD18_0224938C +MOD18_0224938C: ; 0x0224938C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02025F98 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224938C + + thumb_func_start MOD18_022493A4 +MOD18_022493A4: ; 0x022493A4 + push {r3, lr} + ldr r1, _022493C4 ; =0x022513F8 + ldr r1, [r1] + ldrb r1, [r1, #5] + cmp r1, r0 + beq _022493B4 + bl ErrorHandling +_022493B4: + ldr r0, _022493C4 ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02025FA4 + pop {r3, pc} + nop +_022493C4: .word 0x022513F8 + thumb_func_end MOD18_022493A4 + + thumb_func_start MOD18_022493C8 +MOD18_022493C8: ; 0x022493C8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02026050 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_022493C8 + + thumb_func_start MOD18_022493DC +MOD18_022493DC: ; 0x022493DC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026258 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_022493DC + + thumb_func_start MOD18_022493F4 +MOD18_022493F4: ; 0x022493F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026068 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_022493F4 + + thumb_func_start MOD18_0224940C +MOD18_0224940C: ; 0x0224940C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026074 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224940C + + thumb_func_start MOD18_02249424 +MOD18_02249424: ; 0x02249424 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_0202616C + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_02249424 + + thumb_func_start MOD18_02249438 +MOD18_02249438: ; 0x02249438 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02026188 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249438 + + thumb_func_start MOD18_02249450 +MOD18_02249450: ; 0x02249450 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0xb + blt _0224945E + bl ErrorHandling +_0224945E: + cmp r5, #6 + blt _02249464 + sub r5, r5, #5 +_02249464: + cmp r4, #0x63 + ble _0224946A + mov r4, #0x63 +_0224946A: + ldr r0, _0224947C ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0] + bl FUN_020260C4 + pop {r3, r4, r5, pc} + nop +_0224947C: .word 0x022513F8 + thumb_func_end MOD18_02249450 + + thumb_func_start MOD18_02249480 +MOD18_02249480: ; 0x02249480 + push {r4, lr} + add r4, r0, #0 + cmp r4, #0x3c + blt _0224948C + bl ErrorHandling +_0224948C: + ldr r0, _0224949C ; =0x022513F8 + add r1, r4, #0 + ldr r0, [r0] + ldr r0, [r0] + bl FUN_020261C8 + pop {r4, pc} + nop +_0224949C: .word 0x022513F8 + thumb_func_end MOD18_02249480 + + thumb_func_start MOD18_022494A0 +MOD18_022494A0: ; 0x022494A0 + add r1, r0, #0 + ldr r0, _022494AC ; =0x022513F8 + ldr r3, _022494B0 ; =0x02026299 + ldr r0, [r0] + ldr r0, [r0] + bx r3 + .align 2, 0 +_022494AC: .word 0x022513F8 +_022494B0: .word 0x02026299 + thumb_func_end MOD18_022494A0 + + thumb_func_start MOD18_022494B4 +MOD18_022494B4: ; 0x022494B4 + add r1, r0, #0 + ldr r0, _022494C0 ; =0x022513F8 + ldr r3, _022494C4 ; =0x02025FD9 + ldr r0, [r0] + ldr r0, [r0] + bx r3 + .align 2, 0 +_022494C0: .word 0x022513F8 +_022494C4: .word 0x02025FD9 + thumb_func_end MOD18_022494B4 + + thumb_func_start MOD18_022494C8 +MOD18_022494C8: ; 0x022494C8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, _02249534 ; =0x000005FD + add r6, r1, #0 + bl FUN_020054C8 + mov r0, #2 + bl MOD18_0223E56C + mov r1, #0x25 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x7f + str r6, [r4, #0xc] + lsl r0, r0, #2 + str r5, [r4, r0] + mov r1, #0 + add r0, #0x4a + strb r1, [r4, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + ldr r0, _02249538 ; =MOD18_02249684 + ldr r2, _0224953C ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _02249540 ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, r5, r6, pc} + nop +_02249534: .word 0x000005FD +_02249538: .word MOD18_02249684 +_0224953C: .word 0x00002710 +_02249540: .word MOD18_0224AFE8 + thumb_func_end MOD18_022494C8 + + thumb_func_start MOD18_02249544 +MOD18_02249544: ; 0x02249544 + mov r1, #0 + strb r1, [r0] + mov r1, #1 + strb r1, [r0, #1] + mov r1, #2 + strb r1, [r0, #2] + mov r1, #3 + strb r1, [r0, #3] + mov r1, #4 + strb r1, [r0, #4] + mov r1, #5 + strb r1, [r0, #5] + mov r1, #6 + strb r1, [r0, #6] + mov r0, #7 + bx lr + thumb_func_end MOD18_02249544 + + thumb_func_start MOD18_02249564 +MOD18_02249564: ; 0x02249564 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r0, sp, #0x18 + bl MOD18_02249544 + mov r0, #7 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r0, #1 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0x15 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02249674 ; =0x000002E7 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + add r1, #0x10 + ldr r0, [r0, #8] + mov r2, #3 + mov r3, #0x14 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02249678 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r4, _0224967C ; =0x022505B8 + str r0, [sp, #0x14] + mov r6, #0 +_022495BA: + cmp r6, #4 + bne _022495E2 + ldr r0, [r5, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + mov r1, #4 + bl FUN_020239A0 + add r7, r0, #0 + ldr r0, [r5, #0x40] + ldr r2, [r4, #4] + add r1, r7, #0 + bl FUN_020128A0 + add r0, r7, #0 + bl FUN_02021A20 + b _022495EE +_022495E2: + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x14] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 +_022495EE: + add r6, r6, #1 + add r4, #8 + cmp r6, #7 + blo _022495BA + ldr r0, [r5, #0xc] + mov r3, #0x8e + add r0, #0x8c + ldr r0, [r0] + lsl r3, r3, #2 + strh r0, [r5, r3] + ldr r0, [r5, #0x40] + mov r1, #1 + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x24] + add r0, sp, #0x18 + strb r1, [r0, #0x10] + strb r1, [r0, #0x11] + mov r1, #7 + strb r1, [r0, #0x12] + ldrb r2, [r0, #0x13] + mov r1, #0xf + bic r2, r1 + mov r1, #8 + orr r1, r2 + strb r1, [r0, #0x13] + ldrb r2, [r0, #0x13] + mov r1, #0x30 + bic r2, r1 + mov r1, #0x10 + orr r1, r2 + strb r1, [r0, #0x13] + ldrb r2, [r0, #0x13] + mov r1, #0xc0 + bic r2, r1 + mov r1, #0x40 + orr r1, r2 + strb r1, [r0, #0x13] + mov r0, #0xb + str r0, [sp] + ldr r0, _02249680 ; =0x00000402 + mov r1, #0x1c + str r0, [sp, #4] + ldrh r3, [r5, r3] + add r0, sp, #0x20 + mov r2, #4 + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + bl FUN_02001B8C + str r0, [r5, #0x54] + mov r0, #0 + str r0, [r5, #0x48] + add r0, r5, #0 + add r0, #0x10 + bl FUN_02019220 + add r0, r5, #0 + add r1, sp, #0x18 + mov r2, #7 + bl MOD18_02249010 + bl FUN_0204F7E4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02249674: .word 0x000002E7 +_02249678: .word 0x000003D9 +_0224967C: .word 0x022505B8 +_02249680: .word 0x00000402 + thumb_func_end MOD18_02249564 + + thumb_func_start MOD18_02249684 +MOD18_02249684: ; 0x02249684 + push {r3, r4, r5, lr} + ldr r2, _022497BC ; =0x00000246 + add r4, r1, #0 + ldrb r2, [r4, r2] + add r5, r0, #0 + cmp r2, #0x13 + bls _02249694 + b _022497BA +_02249694: + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_022496A0: ; jump table + .short _022496C8 - _022496A0 - 2 ; case 0 + .short _022496D8 - _022496A0 - 2 ; case 1 + .short _022496DE - _022496A0 - 2 ; case 2 + .short _022496F4 - _022496A0 - 2 ; case 3 + .short _022497BA - _022496A0 - 2 ; case 4 + .short _0224970A - _022496A0 - 2 ; case 5 + .short _02249710 - _022496A0 - 2 ; case 6 + .short _02249716 - _022496A0 - 2 ; case 7 + .short _0224971C - _022496A0 - 2 ; case 8 + .short _02249722 - _022496A0 - 2 ; case 9 + .short _022497BA - _022496A0 - 2 ; case 10 + .short _02249728 - _022496A0 - 2 ; case 11 + .short _0224972E - _022496A0 - 2 ; case 12 + .short _02249734 - _022496A0 - 2 ; case 13 + .short _02249762 - _022496A0 - 2 ; case 14 + .short _02249788 - _022496A0 - 2 ; case 15 + .short _022497AA - _022496A0 - 2 ; case 16 + .short _022497B0 - _022496A0 - 2 ; case 17 + .short _022497A4 - _022496A0 - 2 ; case 18 + .short _022497B6 - _022496A0 - 2 ; case 19 +_022496C8: + add r0, r4, #0 + bl MOD18_02249564 + ldr r0, _022497BC ; =0x00000246 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_022496D8: + bl MOD18_022497C8 + pop {r3, r4, r5, pc} +_022496DE: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD18_0224A8AC + pop {r3, r4, r5, pc} +_022496F4: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_0224A8AC + pop {r3, r4, r5, pc} +_0224970A: + bl MOD18_02249CC8 + pop {r3, r4, r5, pc} +_02249710: + bl MOD18_0224A0EC + pop {r3, r4, r5, pc} +_02249716: + bl MOD18_0224A47C + pop {r3, r4, r5, pc} +_0224971C: + bl MOD18_0224AC24 + pop {r3, r4, r5, pc} +_02249722: + bl MOD18_0224AE68 + pop {r3, r4, r5, pc} +_02249728: + bl MOD18_0224A710 + pop {r3, r4, r5, pc} +_0224972E: + bl MOD18_0224A74C + pop {r3, r4, r5, pc} +_02249734: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022497BA + ldr r0, _022497C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _022497BA + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD18_0224A8AC + bl MOD18_0223E6A0 + pop {r3, r4, r5, pc} +_02249762: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _022497BA + ldr r0, _022497C0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _022497BA + ldr r1, [r4] + add r0, r4, #0 + blx r1 + ldr r0, _022497C4 ; =0x00000245 + ldrb r1, [r4, r0] + add r0, r0, #1 + strb r1, [r4, r0] + pop {r3, r4, r5, pc} +_02249788: + add r0, r4, #0 + bl MOD18_022498EC + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_0224A8AC + bl MOD18_0223E6A0 + ldr r0, [r4, #0xc] + bl FUN_02049824 + pop {r3, r4, r5, pc} +_022497A4: + bl MOD18_02249DB8 + pop {r3, r4, r5, pc} +_022497AA: + bl MOD18_0224A1C0 + pop {r3, r4, r5, pc} +_022497B0: + bl MOD18_0224A550 + pop {r3, r4, r5, pc} +_022497B6: + bl MOD18_0224AD04 +_022497BA: + pop {r3, r4, r5, pc} + .align 2, 0 +_022497BC: .word 0x00000246 +_022497C0: .word 0x021C48B8 +_022497C4: .word 0x00000245 + thumb_func_end MOD18_02249684 + + thumb_func_start MOD18_022497C8 +MOD18_022497C8: ; 0x022497C8 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x54] + bl FUN_02001E5C + add r5, r0, #0 + mov r1, #0x5e + ldr r0, [r4, #0x54] + lsl r1, r1, #4 + bl FUN_02001D2C + mov r1, #0x8f + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, #0x54] + bl FUN_02001E5C + mov r2, #0x8e + lsl r2, r2, #2 + strh r0, [r4, r2] + ldrh r1, [r4, r2] + cmp r5, r1 + beq _0224981A + sub r2, #0x60 + ldr r0, [r4, r2] + ldr r0, [r0] + bl MOD18_02249240 + mov r2, #0x8e + lsl r2, r2, #2 + ldrh r2, [r4, r2] + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224929C + mov r0, #0x8e + lsl r0, r0, #2 + ldrh r1, [r4, r0] + ldr r0, [r4, #0xc] + add r0, #0x8c + str r1, [r0] +_0224981A: + mov r0, #0x8e + lsl r0, r0, #2 + ldrh r1, [r4, r0] + sub r0, #0x60 + add r1, r1, #1 + lsl r1, r1, #2 + add r1, r4, r1 + ldr r0, [r1, r0] + ldr r0, [r0] + bl MOD18_022492D0 + bl FUN_020311F0 + cmp r0, #0 + beq _02249842 + mov r1, #1 + mov r0, #0x8f + mvn r1, r1 + lsl r0, r0, #2 + str r1, [r4, r0] +_02249842: + mov r1, #0x8f + lsl r1, r1, #2 + mov r2, #1 + ldr r0, [r4, r1] + mvn r2, r2 + cmp r0, r2 + beq _02249866 + add r1, r2, #1 + cmp r0, r1 + bne _0224986E + add r0, r4, #0 + bl MOD18_02249208 + ldr r0, [r4, #0x74] + bl FUN_0201FDEC + mov r0, #0 + pop {r3, r4, r5, pc} +_02249866: + mov r0, #2 + add r1, #0xa + strb r0, [r4, r1] + b _022498D6 +_0224986E: + ldr r1, _022498DC ; =MOD18_02249B50 + cmp r0, r1 + beq _02249886 + ldr r1, _022498E0 ; =MOD18_02249F2C + cmp r0, r1 + beq _02249886 + ldr r1, _022498E4 ; =MOD18_0224AA4C + cmp r0, r1 + beq _02249886 + ldr r1, _022498E8 ; =MOD18_0224A30C + cmp r0, r1 + bne _022498AC +_02249886: + mov r0, #4 + bl FUN_0205EB38 + str r0, [r4, #8] + mov r1, #0xc8 + mov r2, #0x14 + mov r3, #0x7a + bl FUN_0205EC48 + mov r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_022498AC: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _022498CC + add r0, r4, #0 + bl MOD18_022491D0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_02001C5C + mov r0, #0x7e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_022498CC: + mov r1, #0x8f + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r0, r4, #0 + blx r1 +_022498D6: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_022498DC: .word MOD18_02249B50 +_022498E0: .word MOD18_02249F2C +_022498E4: .word MOD18_0224AA4C +_022498E8: .word MOD18_0224A30C + thumb_func_end MOD18_022497C8 + + thumb_func_start MOD18_022498EC +MOD18_022498EC: ; 0x022498EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x4c] + cmp r0, #0 + beq _02249902 + mov r1, #0 + add r2, r1, #0 + bl MOD18_02244318 + mov r0, #0 + str r0, [r4, #0x4c] +_02249902: + ldr r0, [r4, #0x48] + cmp r0, #0 + beq _02249916 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + mov r0, #0 + str r0, [r4, #0x48] + b _02249936 +_02249916: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02249936 + add r0, r4, #0 + bl MOD18_022491D0 + ldr r0, [r4, #0x54] + mov r1, #0 + bl FUN_02001C5C + mov r0, #0x7e + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02249936: + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019048 + cmp r0, #0 + beq _02249968 + add r0, r4, #0 + add r0, #0x10 + mov r1, #1 + bl FUN_0200CCF8 + ldrb r1, [r4, #0x14] + ldr r0, [r4, #0x10] + bl FUN_0201AC68 + add r0, r4, #0 + add r0, #0x10 + bl FUN_02019178 + ldr r0, [r4, #0x40] + bl FUN_02012870 + add r0, r4, #0 + bl MOD18_0224CBAC +_02249968: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_022498EC + + thumb_func_start MOD18_0224996C +MOD18_0224996C: ; 0x0224996C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + mov r0, #6 + str r0, [sp, #0x1c] + mov r0, #0x19 + mov r7, #0xb + str r0, [sp, #0x18] + cmp r1, #1 + beq _0224998A + cmp r1, #2 + beq _02249990 + cmp r1, #3 + beq _02249998 + b _022499A2 +_0224998A: + mov r6, #3 + ldr r4, _02249A4C ; =0x02251270 + b _022499A2 +_02249990: + mov r6, #2 + mov r7, #0xd + ldr r4, _02249A50 ; =0x02251260 + b _022499A2 +_02249998: + mov r0, #0x14 + ldr r4, _02249A54 ; =0x02251288 + mov r6, #3 + str r7, [sp, #0x1c] + str r0, [sp, #0x18] +_022499A2: + add r0, r6, #0 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x44] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + lsl r0, r6, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02249A58 ; =0x000002E7 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + lsl r3, r3, #0x18 + ldr r0, [r0, #8] + add r1, #0x20 + mov r2, #3 + lsr r3, r3, #0x18 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02249A5C ; =0x000003D9 + add r0, #0x20 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + mov r7, #0 + str r0, [sp, #0x14] + cmp r6, #0 + ble _02249A0E +_022499FA: + ldr r0, [r5, #0x44] + ldr r1, [sp, #0x14] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r7, r7, #1 + add r4, #8 + cmp r7, r6 + blt _022499FA +_02249A0E: + ldr r4, _02249A60 ; =0x02250598 + add r3, sp, #0x20 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + lsl r0, r6, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x20 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #0x44] + mov r1, #0 + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x20 + str r0, [sp, #0x2c] + add r0, r2, #0 + add r2, r1, #0 + mov r3, #4 + str r5, [sp, #0x3c] + bl FUN_020010A8 + str r0, [r5, #0x50] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249A4C: .word 0x02251270 +_02249A50: .word 0x02251260 +_02249A54: .word 0x02251288 +_02249A58: .word 0x000002E7 +_02249A5C: .word 0x000003D9 +_02249A60: .word 0x02250598 + thumb_func_end MOD18_0224996C + + thumb_func_start MOD18_02249A64 +MOD18_02249A64: ; 0x02249A64 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _02249A8C + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + add r1, r4, #0 + add r1, #0x24 + ldrb r1, [r1] + ldr r0, [r4, #0x20] + bl FUN_0201AC68 + ldr r0, [r4, #0x44] + bl FUN_02012870 + mov r0, #0 + str r0, [r4, #0x50] +_02249A8C: + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + beq _02249AAA + add r0, r4, #0 + add r0, #0x20 + mov r1, #1 + bl FUN_0200CCF8 + add r4, #0x20 + add r0, r4, #0 + bl FUN_02019178 +_02249AAA: + pop {r4, pc} + thumb_func_end MOD18_02249A64 + + thumb_func_start MOD18_02249AAC +MOD18_02249AAC: ; 0x02249AAC + push {r4, lr} + add r4, r0, #0 + bl MOD18_022498EC + ldr r0, [r4, #8] + cmp r0, #0 + beq _02249AC2 + bl FUN_0205EBEC + mov r0, #0 + str r0, [r4, #8] +_02249AC2: + ldr r0, _02249AD4 ; =0x00000246 + mov r1, #0 + strb r1, [r4, r0] + bl MOD18_0223D678 + bl MOD18_0224DD94 + pop {r4, pc} + nop +_02249AD4: .word 0x00000246 + thumb_func_end MOD18_02249AAC + + thumb_func_start MOD18_02249AD8 +MOD18_02249AD8: ; 0x02249AD8 + push {r3, lr} + ldr r1, _02249AF0 ; =0x022513F8 + ldr r2, [r1] + ldrb r1, [r2, #5] + cmp r1, r0 + bne _02249AEC + ldrb r1, [r2, #4] + ldr r0, [r2] + bl FUN_02026264 +_02249AEC: + pop {r3, pc} + nop +_02249AF0: .word 0x022513F8 + thumb_func_end MOD18_02249AD8 + + thumb_func_start MOD18_02249AF4 +MOD18_02249AF4: ; 0x02249AF4 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _02249B16 + mov r4, #0x44 + b _02249B1A +_02249B16: + add r4, r0, #0 + add r4, #0x22 +_02249B1A: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249AF4 + + thumb_func_start MOD18_02249B2C +MOD18_02249B2C: ; 0x02249B2C + mov r1, #2 + ldr r2, _02249B44 ; =MOD18_02249338 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _02249B48 ; =MOD18_022493DC + add r1, r1, #4 + str r2, [r0, r1] + mov r1, #0 + ldr r3, _02249B4C ; =MOD18_02249BA8 + str r1, [r0, #0x64] + bx r3 + nop +_02249B44: .word MOD18_02249338 +_02249B48: .word MOD18_022493DC +_02249B4C: .word MOD18_02249BA8 + thumb_func_end MOD18_02249B2C + + thumb_func_start MOD18_02249B50 +MOD18_02249B50: ; 0x02249B50 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #8 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _02249B98 ; =MOD18_02249338 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _02249B9C ; =MOD18_022493DC + sub r0, #0x2c + str r2, [r4, r0] + ldr r0, _02249BA0 ; =MOD18_02249AF4 + str r0, [r4, #0x60] + mov r0, #0 + str r0, [r4, #0x64] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _02249BA4 ; =0x020262BD + add r0, r4, #0 + bl MOD18_02249BA8 + pop {r4, pc} + nop +_02249B98: .word MOD18_02249338 +_02249B9C: .word MOD18_022493DC +_02249BA0: .word MOD18_02249AF4 +_02249BA4: .word 0x020262BD + thumb_func_end MOD18_02249B50 + + thumb_func_start MOD18_02249BA8 +MOD18_02249BA8: ; 0x02249BA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r1, [sp, #0x14] + mov r1, #0x81 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r7, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _02249CB0 ; =0x0000023B + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02249CB4 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02249CB8 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _02249C30 +_02249C18: + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blt _02249C18 +_02249C30: + mov r2, #0x22 + add r3, r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, #0x24 + bl FUN_02012880 + ldr r3, _02249CBC ; =0x02250598 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x1c + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x1c] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [r5, #0x60] + str r0, [sp, #0x20] + ldr r0, [r5, #0x64] + str r0, [sp, #0x24] + str r5, [sp, #0x38] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _02249CC0 ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _02249CC4 ; =0x00000246 + mov r1, #5 + strb r1, [r5, r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_02249CB0: .word 0x0000023B +_02249CB4: .word 0x00000257 +_02249CB8: .word 0x000003D9 +_02249CBC: .word 0x02250598 +_02249CC0: .word 0x022513F8 +_02249CC4: .word 0x00000246 + thumb_func_end MOD18_02249BA8 + + thumb_func_start MOD18_02249CC8 +MOD18_02249CC8: ; 0x02249CC8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #8 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _02249D12 + mov r4, #1 + mvn r4, r4 +_02249D12: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _02249D1C + add r4, r0, #0 +_02249D1C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02249D2E + add r0, r0, #1 + cmp r4, r0 + bne _02249D36 + mov r0, #0 + pop {r3, r4, r5, pc} +_02249D2E: + add r0, r5, #0 + bl MOD18_02249AAC + b _02249DAC +_02249D36: + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _02249DB0 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_022493DC + ldr r1, _02249DB0 ; =0x022513F8 + ldr r2, [r1] + strb r0, [r2, #5] + ldr r0, [r1] + ldrb r0, [r0, #5] + cmp r0, #0x21 + bne _02249D66 + bl MOD18_02246AE4 + ldr r0, _02249DB4 ; =0x00000246 + mov r1, #3 + strb r1, [r5, r0] + b _02249D98 +_02249D66: + add r0, r5, #0 + bl MOD18_022498EC + add r0, r5, #0 + mov r1, #1 + bl MOD18_0224996C + ldr r0, _02249DB4 ; =0x00000246 + mov r1, #0x12 + strb r1, [r5, r0] + bl MOD18_0223D638 + ldr r2, _02249DB0 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF04 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 +_02249D98: + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_02249DAC: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_02249DB0: .word 0x022513F8 +_02249DB4: .word 0x00000246 + thumb_func_end MOD18_02249CC8 + + thumb_func_start MOD18_02249DB8 +MOD18_02249DB8: ; 0x02249DB8 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _02249DE2 + ldr r0, _02249E80 ; =0x000005DC + bl FUN_020054C8 +_02249DE2: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02249DF4 + add r0, r0, #1 + cmp r4, r0 + bne _02249E0E + mov r0, #0 + pop {r4, r5, r6, pc} +_02249DF4: + ldr r0, _02249E80 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_02249B50 + ldr r0, _02249E84 ; =0x00000246 + mov r1, #5 + strb r1, [r5, r0] + b _02249E7C +_02249E0E: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #1 + bne _02249E3A + ldr r0, _02249E88 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + ldrb r0, [r0, #4] + bl MOD18_022493DC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD18_0223EF60 + ldr r0, _02249E8C ; =0x00000631 + bl FUN_020054C8 + ldr r0, _02249E84 ; =0x00000246 + mov r1, #3 + strb r1, [r5, r0] + b _02249E7C +_02249E3A: + cmp r4, #2 + bne _02249E7C + ldr r0, _02249E80 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _02249E88 ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl MOD18_02249AD8 + bl MOD18_0223D638 + ldr r2, _02249E88 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF04 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _02249E90 ; =MOD18_02249B50 + mov r1, #5 + str r0, [r5] + ldr r0, _02249E94 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_02249E7C: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_02249E80: .word 0x000005DC +_02249E84: .word 0x00000246 +_02249E88: .word 0x022513F8 +_02249E8C: .word 0x00000631 +_02249E90: .word MOD18_02249B50 +_02249E94: .word 0x00000245 + thumb_func_end MOD18_02249DB8 + + thumb_func_start MOD18_02249E98 +MOD18_02249E98: ; 0x02249E98 + push {r3, lr} + ldr r1, _02249EB8 ; =0x022513F8 + ldr r1, [r1] + ldrb r1, [r1, #5] + cmp r1, r0 + beq _02249EA8 + bl ErrorHandling +_02249EA8: + ldr r0, _02249EB8 ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02026080 + pop {r3, pc} + nop +_02249EB8: .word 0x022513F8 + thumb_func_end MOD18_02249E98 + + thumb_func_start MOD18_02249EBC +MOD18_02249EBC: ; 0x02249EBC + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _02249EDE + mov r4, #0x3d + b _02249EE2 +_02249EDE: + add r4, r0, #0 + add r4, #0x3e +_02249EE2: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_02249EBC + + thumb_func_start MOD18_02249EF4 +MOD18_02249EF4: ; 0x02249EF4 + mov r2, #2 + ldr r1, _02249F14 ; =MOD18_022493C8 + lsl r2, r2, #8 + str r1, [r0, r2] + add r1, r2, #4 + ldr r3, _02249F18 ; =MOD18_022493F4 + add r2, #8 + str r3, [r0, r1] + ldr r1, _02249F1C ; =MOD18_0224940C + ldr r3, _02249F20 ; =MOD18_02249F8C + str r1, [r0, r2] + ldr r1, _02249F24 ; =MOD18_02249EBC + str r1, [r0, #0x60] + ldr r1, _02249F28 ; =0x020260ED + bx r3 + nop +_02249F14: .word MOD18_022493C8 +_02249F18: .word MOD18_022493F4 +_02249F1C: .word MOD18_0224940C +_02249F20: .word MOD18_02249F8C +_02249F24: .word MOD18_02249EBC +_02249F28: .word 0x020260ED + thumb_func_end MOD18_02249EF4 + + thumb_func_start MOD18_02249F2C +MOD18_02249F2C: ; 0x02249F2C + push {r4, lr} + add r4, r0, #0 + mov r0, #9 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #9 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _02249F78 ; =MOD18_022493C8 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _02249F7C ; =MOD18_022493F4 + sub r0, #0x2c + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _02249F80 ; =MOD18_0224940C + sub r0, #0x28 + str r2, [r4, r0] + ldr r0, _02249F84 ; =MOD18_02249EBC + str r0, [r4, #0x60] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _02249F88 ; =0x020260ED + add r0, r4, #0 + bl MOD18_02249F8C + pop {r4, pc} + nop +_02249F78: .word MOD18_022493C8 +_02249F7C: .word MOD18_022493F4 +_02249F80: .word MOD18_0224940C +_02249F84: .word MOD18_02249EBC +_02249F88: .word 0x020260ED + thumb_func_end MOD18_02249F2C + + thumb_func_start MOD18_02249F8C +MOD18_02249F8C: ; 0x02249F8C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + mov r2, #0x81 + add r5, r0, #0 + lsl r2, r2, #2 + str r1, [sp, #0x14] + ldr r1, [r5, r2] + str r1, [sp, #0x1c] + add r1, r2, #4 + ldr r7, [r5, r1] + sub r1, r2, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _0224A0D4 ; =0x00000239 + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224A0D8 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224A0DC ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _0224A058 +_0224A002: + ldr r2, [sp, #0x1c] + add r0, r4, #0 + add r1, r5, #0 + blx r2 + add r2, r0, #0 + ldr r0, [r5, #0x70] + mov r1, #2 + bl FUN_0200B164 + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r5, #0x70] + mov r1, #6 + mov r3, #2 + bl FUN_0200AD38 + bl MOD18_0223D638 + bl MOD18_0224DBB4 + ldr r2, [r5, #0x6c] + mov r1, #0x80 + bl FUN_0200A8E0 + ldr r0, [r5, #0x70] + ldr r1, [r5, #0x68] + ldr r2, [r5, #0x6c] + bl FUN_0200B7B8 + ldr r0, [r5, #0x40] + ldr r1, [r5, #0x68] + add r2, r4, #0 + bl FUN_020128A0 + add r4, r4, #1 + cmp r4, r6 + blt _0224A002 +_0224A058: + mov r2, #0x3c + add r3, r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, #0x3e + bl FUN_02012880 + ldr r3, _0224A0E0 ; =0x02250598 + add r2, sp, #0x20 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x20 + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [r5, #0x60] + str r0, [sp, #0x24] + str r5, [sp, #0x3c] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _0224A0E4 ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x20 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _0224A0E8 ; =0x00000246 + mov r1, #6 + strb r1, [r5, r0] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A0D4: .word 0x00000239 +_0224A0D8: .word 0x00000257 +_0224A0DC: .word 0x000003D9 +_0224A0E0: .word 0x02250598 +_0224A0E4: .word 0x022513F8 +_0224A0E8: .word 0x00000246 + thumb_func_end MOD18_02249F8C + + thumb_func_start MOD18_0224A0EC +MOD18_0224A0EC: ; 0x0224A0EC + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #9 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _0224A136 + mov r4, #1 + mvn r4, r4 +_0224A136: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224A140 + add r4, r0, #0 +_0224A140: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A152 + add r0, r0, #1 + cmp r4, r0 + bne _0224A15A + mov r0, #0 + pop {r3, r4, r5, pc} +_0224A152: + add r0, r5, #0 + bl MOD18_02249AAC + b _0224A1B4 +_0224A15A: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, _0224A1B8 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_022493F4 + ldr r1, _0224A1B8 ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + add r0, r5, #0 + mov r1, #1 + bl MOD18_0224996C + ldr r0, _0224A1BC ; =0x00000246 + mov r1, #0x10 + strb r1, [r5, r0] + bl MOD18_0223D638 + ldr r2, _0224A1B8 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224A1B4: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A1B8: .word 0x022513F8 +_0224A1BC: .word 0x00000246 + thumb_func_end MOD18_0224A0EC + + thumb_func_start MOD18_0224A1C0 +MOD18_0224A1C0: ; 0x0224A1C0 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _0224A1EA + ldr r0, _0224A2A0 ; =0x000005DC + bl FUN_020054C8 +_0224A1EA: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A1FC + add r0, r0, #1 + cmp r4, r0 + bne _0224A216 + mov r0, #0 + pop {r4, r5, r6, pc} +_0224A1FC: + ldr r0, _0224A2A0 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_02249F2C + ldr r0, _0224A2A4 ; =0x00000246 + mov r1, #6 + strb r1, [r5, r0] + b _0224A29C +_0224A216: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #1 + bne _0224A25A + bl FUN_02031190 + add r4, r0, #0 + bl FUN_0204E4D4 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204E50C + add r4, r0, #0 + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _0224A2A8 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + ldrb r0, [r0, #4] + bl MOD18_0224940C + add r1, r0, #0 + ldr r0, _0224A2A8 ; =0x022513F8 + add r2, r6, #0 + ldr r0, [r0] + add r3, r4, #0 + ldrb r0, [r0, #5] + bl MOD18_0223CF9C + b _0224A28C +_0224A25A: + cmp r4, #2 + bne _0224A28C + ldr r0, _0224A2A0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224A2A8 ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl MOD18_02249E98 + bl MOD18_0223D638 + ldr r2, _0224A2A8 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224A28C: + ldr r0, _0224A2AC ; =MOD18_02249F2C + mov r1, #6 + str r0, [r5] + ldr r0, _0224A2B0 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_0224A29C: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224A2A0: .word 0x000005DC +_0224A2A4: .word 0x00000246 +_0224A2A8: .word 0x022513F8 +_0224A2AC: .word MOD18_02249F2C +_0224A2B0: .word 0x00000245 + thumb_func_end MOD18_0224A1C0 + + thumb_func_start MOD18_0224A2B4 +MOD18_0224A2B4: ; 0x0224A2B4 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _0224A2D6 + mov r4, #0x3d + b _0224A2DA +_0224A2D6: + add r4, r0, #0 + add r4, #0x3e +_0224A2DA: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224A2B4 + + thumb_func_start MOD18_0224A2EC +MOD18_0224A2EC: ; 0x0224A2EC + mov r1, #2 + ldr r2, _0224A300 ; =MOD18_02249424 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224A304 ; =MOD18_02249438 + add r1, r1, #4 + str r2, [r0, r1] + ldr r3, _0224A308 ; =MOD18_0224A360 + mov r1, #0 + bx r3 + .align 2, 0 +_0224A300: .word MOD18_02249424 +_0224A304: .word MOD18_02249438 +_0224A308: .word MOD18_0224A360 + thumb_func_end MOD18_0224A2EC + + thumb_func_start MOD18_0224A30C +MOD18_0224A30C: ; 0x0224A30C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xb + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xb + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _0224A350 ; =MOD18_02249424 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _0224A354 ; =MOD18_02249438 + sub r0, #0x2c + str r2, [r4, r0] + ldr r0, _0224A358 ; =MOD18_0224A2B4 + str r0, [r4, #0x60] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _0224A35C ; =0x020261ED + add r0, r4, #0 + bl MOD18_0224A360 + pop {r4, pc} + nop +_0224A350: .word MOD18_02249424 +_0224A354: .word MOD18_02249438 +_0224A358: .word MOD18_0224A2B4 +_0224A35C: .word 0x020261ED + thumb_func_end MOD18_0224A30C + + thumb_func_start MOD18_0224A360 +MOD18_0224A360: ; 0x0224A360 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r1, [sp, #0x14] + mov r1, #0x81 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r7, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _0224A464 ; =0x00000239 + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224A468 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224A46C ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _0224A3E8 +_0224A3D0: + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blt _0224A3D0 +_0224A3E8: + mov r2, #0x3c + add r3, r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, #0x3e + bl FUN_02012880 + ldr r3, _0224A470 ; =0x02250598 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x1c + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x1c] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [r5, #0x60] + str r0, [sp, #0x20] + str r5, [sp, #0x38] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _0224A474 ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _0224A478 ; =0x00000246 + mov r1, #7 + strb r1, [r5, r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + nop +_0224A464: .word 0x00000239 +_0224A468: .word 0x00000257 +_0224A46C: .word 0x000003D9 +_0224A470: .word 0x02250598 +_0224A474: .word 0x022513F8 +_0224A478: .word 0x00000246 + thumb_func_end MOD18_0224A360 + + thumb_func_start MOD18_0224A47C +MOD18_0224A47C: ; 0x0224A47C + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0xb + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _0224A4C6 + mov r4, #1 + mvn r4, r4 +_0224A4C6: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224A4D0 + add r4, r0, #0 +_0224A4D0: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A4E2 + add r0, r0, #1 + cmp r4, r0 + bne _0224A4EA + mov r0, #0 + pop {r3, r4, r5, pc} +_0224A4E2: + add r0, r5, #0 + bl MOD18_02249AAC + b _0224A544 +_0224A4EA: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, _0224A548 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_02249438 + ldr r1, _0224A548 ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + add r0, r5, #0 + mov r1, #3 + bl MOD18_0224996C + bl MOD18_0223D638 + ldr r2, _0224A548 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 + ldr r0, _0224A54C ; =0x00000246 + mov r1, #0x11 + strb r1, [r5, r0] + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224A544: + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A548: .word 0x022513F8 +_0224A54C: .word 0x00000246 + thumb_func_end MOD18_0224A47C + + thumb_func_start MOD18_0224A550 +MOD18_0224A550: ; 0x0224A550 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _0224A57A + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 +_0224A57A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224A58C + add r0, r0, #1 + cmp r4, r0 + bne _0224A5A6 + mov r0, #0 + pop {r4, r5, r6, pc} +_0224A58C: + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_0224A30C + ldr r0, _0224A698 ; =0x00000246 + mov r1, #7 + strb r1, [r5, r0] + b _0224A68E +_0224A5A6: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #3 + bne _0224A64A + ldr r0, _0224A69C ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + bl FUN_02025D48 + add r4, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #0xc] + bl FUN_0206F158 + add r6, r0, #0 + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 + lsl r1, r4, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #1 + mov r3, #4 + bl FUN_0206ED38 + cmp r0, #0 + beq _0224A62A + ldr r0, _0224A69C ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02026194 + bl MOD18_0223D638 + ldr r2, _0224A69C ; =0x022513F8 + mov r1, #0 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + ldr r0, _0224A69C ; =0x022513F8 + ldr r0, [r0] + ldrb r0, [r0, #5] + add r0, #0xe3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _0224A61A + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x51 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224A67E +_0224A61A: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x4f + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224A67E +_0224A62A: + bl MOD18_0223D638 + ldr r2, _0224A69C ; =0x022513F8 + mov r1, #0 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x50 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224A67E +_0224A64A: + cmp r4, #2 + bne _0224A67E + ldr r0, _0224A694 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224A69C ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02026194 + bl MOD18_0223D638 + ldr r2, _0224A69C ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DEF0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224A67E: + ldr r0, _0224A6A0 ; =MOD18_0224A30C + mov r1, #7 + str r0, [r5] + ldr r0, _0224A6A4 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_0224A68E: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_0224A694: .word 0x000005DC +_0224A698: .word 0x00000246 +_0224A69C: .word 0x022513F8 +_0224A6A0: .word MOD18_0224A30C +_0224A6A4: .word 0x00000245 + thumb_func_end MOD18_0224A550 + + thumb_func_start MOD18_0224A6A8 +MOD18_0224A6A8: ; 0x0224A6A8 + ldr r1, _0224A6B0 ; =0x00000246 + mov r2, #2 + strb r2, [r0, r1] + bx lr + .align 2, 0 +_0224A6B0: .word 0x00000246 + thumb_func_end MOD18_0224A6A8 + + thumb_func_start MOD18_0224A6B4 +MOD18_0224A6B4: ; 0x0224A6B4 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD18_022498EC + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x38] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0xc] + ldr r0, [r0, #0x38] + bl FUN_0205532C + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0223E2F4 + cmp r0, #0 + beq _0224A6F0 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x42 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224A70C ; =0x00000246 + mov r1, #0xd + strb r1, [r5, r0] + pop {r3, r4, r5, pc} +_0224A6F0: + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x34 + add r3, r2, #0 + bl MOD18_0224DCB8 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #0xb + add r1, #0x1e + strb r0, [r5, r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A70C: .word 0x00000246 + thumb_func_end MOD18_0224A6B4 + + thumb_func_start MOD18_0224A710 +MOD18_0224A710: ; 0x0224A710 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224A73C + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _0224A740 ; =0x0225056C + ldr r0, [r0, #8] + ldr r2, _0224A744 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x5c] + ldr r0, _0224A748 ; =0x00000246 + mov r1, #0xc + strb r1, [r4, r0] +_0224A73C: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224A740: .word 0x0225056C +_0224A744: .word 0x000003D9 +_0224A748: .word 0x00000246 + thumb_func_end MOD18_0224A710 + + thumb_func_start MOD18_0224A74C +MOD18_0224A74C: ; 0x0224A74C + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224A77E + cmp r0, #0 + bne _0224A76C + ldr r0, _0224A780 ; =0x00000246 + mov r1, #0xf + strb r1, [r4, r0] + b _0224A77A +_0224A76C: + bl MOD18_0223D638 + bl MOD18_0224DD94 + add r0, r4, #0 + bl MOD18_02249AAC +_0224A77A: + mov r0, #0 + str r0, [r4, #0x5c] +_0224A77E: + pop {r4, pc} + .align 2, 0 +_0224A780: .word 0x00000246 + thumb_func_end MOD18_0224A74C + + thumb_func_start MOD18_0224A784 +MOD18_0224A784: ; 0x0224A784 + ldr r3, _0224A788 ; =MOD18_02249AAC + bx r3 + .align 2, 0 +_0224A788: .word MOD18_02249AAC + thumb_func_end MOD18_0224A784 + + thumb_func_start MOD18_0224A78C +MOD18_0224A78C: ; 0x0224A78C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD18_022498EC + bl MOD18_0224D704 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r2, _0224A7C0 ; =MOD18_0224A784 + ldr r0, [r0, #8] + add r3, r4, #0 + bl MOD18_0224D5CC + ldr r0, _0224A7C4 ; =0x00000246 + mov r1, #0xa + strb r1, [r4, r0] + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224A7C0: .word MOD18_0224A784 +_0224A7C4: .word 0x00000246 + thumb_func_end MOD18_0224A78C + + thumb_func_start MOD18_0224A7C8 +MOD18_0224A7C8: ; 0x0224A7C8 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x25 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x7f + str r6, [r4, #0xc] + lsl r0, r0, #2 + str r5, [r4, r0] + mov r1, #0 + add r0, #0x4a + strb r1, [r4, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + bl FUN_0204F7E4 + bl MOD18_0223D648 + mov r1, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD18_0224DCB8 + ldr r0, _0224A838 ; =MOD18_0224A914 + ldr r2, _0224A83C ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _0224A840 ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224A838: .word MOD18_0224A914 +_0224A83C: .word 0x00002710 +_0224A840: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224A7C8 + + thumb_func_start MOD18_0224A844 +MOD18_0224A844: ; 0x0224A844 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224A870 + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _0224A874 ; =0x0225056C + ldr r0, [r0, #8] + ldr r2, _0224A878 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x5c] + ldr r0, _0224A87C ; =0x00000246 + mov r1, #1 + strb r1, [r4, r0] +_0224A870: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224A874: .word 0x0225056C +_0224A878: .word 0x000003D9 +_0224A87C: .word 0x00000246 + thumb_func_end MOD18_0224A844 + + thumb_func_start MOD18_0224A880 +MOD18_0224A880: ; 0x0224A880 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224A8A6 + cmp r0, #0 + bne _0224A89C + mov r1, #3 + b _0224A89E +_0224A89C: + mov r1, #2 +_0224A89E: + ldr r0, _0224A8A8 ; =0x00000246 + strb r1, [r4, r0] + mov r0, #0 + str r0, [r4, #0x5c] +_0224A8A6: + pop {r4, pc} + .align 2, 0 +_0224A8A8: .word 0x00000246 + thumb_func_end MOD18_0224A880 + + thumb_func_start MOD18_0224A8AC +MOD18_0224A8AC: ; 0x0224A8AC + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + ldr r0, [r5, #0x5c] + add r4, r2, #0 + cmp r0, #0 + beq _0224A8C0 + mov r1, #4 + bl FUN_020021EC +_0224A8C0: + ldr r0, [r5, #0x68] + bl FUN_02021A20 + ldr r0, [r5, #0x6c] + bl FUN_02021A20 + ldr r0, [r5, #0x70] + bl FUN_0200AB18 + bl MOD18_0223D648 + bl MOD18_0224DD94 + bl MOD18_0223D638 + bl MOD18_0224DD94 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #0 + beq _0224A8F0 + mov r0, #0 + blx r1 +_0224A8F0: + mov r0, #0 + str r0, [r5, #4] + ldr r0, [r5, #8] + cmp r0, #0 + beq _0224A8FE + bl FUN_0205EBEC +_0224A8FE: + add r0, r5, #0 + bl FUN_02016A18 + cmp r4, #0 + bne _0224A90C + bl FUN_0204F7FC +_0224A90C: + add r0, r6, #0 + bl FUN_0200CAB4 + pop {r4, r5, r6, pc} + thumb_func_end MOD18_0224A8AC + + thumb_func_start MOD18_0224A914 +MOD18_0224A914: ; 0x0224A914 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + bl FUN_0204EE9C + cmp r0, #0 + bne _0224A932 + ldr r0, _0224A9AC ; =0x00000246 + ldrb r1, [r4, r0] + cmp r1, #1 + bhi _0224A932 + mov r1, #2 + strb r1, [r4, r0] +_0224A932: + ldr r0, _0224A9AC ; =0x00000246 + ldrb r0, [r4, r0] + cmp r0, #4 + bhi _0224A9AA + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224A946: ; jump table + .short _0224A950 - _0224A946 - 2 ; case 0 + .short _0224A958 - _0224A946 - 2 ; case 1 + .short _0224A960 - _0224A946 - 2 ; case 2 + .short _0224A970 - _0224A946 - 2 ; case 3 + .short _0224A98E - _0224A946 - 2 ; case 4 +_0224A950: + add r0, r4, #0 + bl MOD18_0224A844 + pop {r3, r4, r5, pc} +_0224A958: + add r0, r4, #0 + bl MOD18_0224A880 + pop {r3, r4, r5, pc} +_0224A960: + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + bl MOD18_0224A8AC + pop {r3, r4, r5, pc} +_0224A970: + bl MOD18_0223E6A0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #1 + bl MOD18_0224A8AC + mov r1, #0 + add r0, sp, #0 + strb r1, [r0] + mov r0, #0x54 + add r1, sp, #0 + bl FUN_020311D0 + pop {r3, r4, r5, pc} +_0224A98E: + bl MOD18_0223D648 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224A9AA + ldr r0, _0224A9B0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224A9AA + ldr r0, _0224A9AC ; =0x00000246 + mov r1, #2 + strb r1, [r4, r0] +_0224A9AA: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A9AC: .word 0x00000246 +_0224A9B0: .word 0x021C48B8 + thumb_func_end MOD18_0224A914 + + thumb_func_start MOD18_0224A9B4 +MOD18_0224A9B4: ; 0x0224A9B4 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r2, #0x81 + add r1, r0, #0 + lsl r2, r2, #2 + ldr r2, [r1, r2] + add r0, r4, #0 + blx r2 + mov r1, #1 + mvn r1, r1 + cmp r4, r1 + bne _0224A9D6 + mov r4, #0x8b + b _0224A9DA +_0224A9D6: + add r4, r0, #0 + add r4, #0x8a +_0224A9DA: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224A9B4 + + thumb_func_start MOD18_0224A9EC +MOD18_0224A9EC: ; 0x0224A9EC + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x13 + add r5, r0, #0 + bl FUN_02001470 + ldr r0, [r0, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r4, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _0224AA1A + add r0, r5, #0 + mov r1, #1 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, r4, r5, pc} +_0224AA1A: + mov r1, #2 + add r0, r5, #0 + mov r2, #0xf + add r3, r1, #0 + bl FUN_020013E8 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224A9EC + + thumb_func_start MOD18_0224AA28 +MOD18_0224AA28: ; 0x0224AA28 + mov r1, #2 + ldr r2, _0224AA40 ; =MOD18_02249378 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224AA44 ; =MOD18_0224938C + add r1, r1, #4 + str r2, [r0, r1] + mov r1, #0 + ldr r3, _0224AA48 ; =MOD18_0224AB08 + str r1, [r0, #0x64] + bx r3 + nop +_0224AA40: .word MOD18_02249378 +_0224AA44: .word MOD18_0224938C +_0224AA48: .word MOD18_0224AB08 + thumb_func_end MOD18_0224AA28 + + thumb_func_start MOD18_0224AA4C +MOD18_0224AA4C: ; 0x0224AA4C + push {r4, lr} + add r4, r0, #0 + mov r0, #0xa + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xa + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r1, #0 + ldr r2, _0224AA94 ; =MOD18_02249378 + sub r0, #0x30 + str r2, [r4, r0] + add r0, r1, #0 + ldr r2, _0224AA98 ; =MOD18_0224938C + sub r0, #0x2c + str r2, [r4, r0] + ldr r0, _0224AA9C ; =MOD18_0224A9B4 + str r0, [r4, #0x60] + mov r0, #0 + str r0, [r4, #0x64] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1c + strh r0, [r4, r1] + ldr r1, _0224AAA0 ; =0x02025FFD + add r0, r4, #0 + bl MOD18_0224AB08 + pop {r4, pc} + nop +_0224AA94: .word MOD18_02249378 +_0224AA98: .word MOD18_0224938C +_0224AA9C: .word MOD18_0224A9B4 +_0224AAA0: .word 0x02025FFD + thumb_func_end MOD18_0224AA4C + + thumb_func_start MOD18_0224AAA4 +MOD18_0224AAA4: ; 0x0224AAA4 + mov r1, #2 + ldr r2, _0224AAC0 ; =MOD18_02249378 + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224AAC4 ; =MOD18_0224938C + add r1, r1, #4 + str r2, [r0, r1] + ldr r1, _0224AAC8 ; =MOD18_0224A9B4 + ldr r3, _0224AACC ; =MOD18_0224AB08 + str r1, [r0, #0x60] + mov r1, #0 + str r1, [r0, #0x64] + ldr r1, _0224AAD0 ; =0x02025FFD + bx r3 + .align 2, 0 +_0224AAC0: .word MOD18_02249378 +_0224AAC4: .word MOD18_0224938C +_0224AAC8: .word MOD18_0224A9B4 +_0224AACC: .word MOD18_0224AB08 +_0224AAD0: .word 0x02025FFD + thumb_func_end MOD18_0224AAA4 + + thumb_func_start MOD18_0224AAD4 +MOD18_0224AAD4: ; 0x0224AAD4 + mov r1, #2 + ldr r2, _0224AAF0 ; =MOD18_0224934C + lsl r1, r1, #8 + str r2, [r0, r1] + ldr r2, _0224AAF4 ; =MOD18_02249360 + add r1, r1, #4 + str r2, [r0, r1] + ldr r1, _0224AAF8 ; =MOD18_0224A9B4 + ldr r3, _0224AAFC ; =MOD18_0224AB08 + str r1, [r0, #0x60] + ldr r1, _0224AB00 ; =MOD18_0224A9EC + str r1, [r0, #0x64] + ldr r1, _0224AB04 ; =0x02025E21 + bx r3 + .align 2, 0 +_0224AAF0: .word MOD18_0224934C +_0224AAF4: .word MOD18_02249360 +_0224AAF8: .word MOD18_0224A9B4 +_0224AAFC: .word MOD18_0224AB08 +_0224AB00: .word MOD18_0224A9EC +_0224AB04: .word 0x02025E21 + thumb_func_end MOD18_0224AAD4 + + thumb_func_start MOD18_0224AB08 +MOD18_0224AB08: ; 0x0224AB08 + push {r4, r5, r6, r7, lr} + sub sp, #0x3c + str r1, [sp, #0x14] + mov r1, #0x81 + add r5, r0, #0 + lsl r1, r1, #2 + ldr r7, [r5, r1] + sub r1, r1, #4 + ldr r1, [r5, r1] + blx r1 + add r6, r0, #0 + add r0, r5, #0 + bl MOD18_022498EC + bl MOD18_0223D678 + ldr r1, _0224AC0C ; =0x00000237 + mov r2, #0 + bl MOD18_0224DB80 + add r0, r6, #1 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224AC10 ; =0x00000257 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224AC14 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + bl MOD18_0223D678 + bl MOD18_0224DBB4 + mov r4, #0 + str r0, [sp, #0x18] + cmp r6, #0 + ble _0224AB90 +_0224AB78: + add r0, r4, #0 + add r1, r5, #0 + blx r7 + add r2, r0, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, r6 + blt _0224AB78 +_0224AB90: + mov r2, #0 + ldr r0, [r5, #0x40] + ldr r1, [sp, #0x18] + sub r3, r2, #2 + bl FUN_02012880 + ldr r3, _0224AC18 ; =0x02250598 + add r2, sp, #0x1c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r6, #1 + add r2, sp, #0x1c + strh r0, [r2, #0x10] + mov r1, #6 + strh r1, [r2, #0x12] + ldr r0, [r5, #0x64] + str r0, [sp, #0x24] + ldr r0, [r5, #0x40] + str r0, [sp, #0x1c] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x28] + ldr r0, [r5, #0x60] + str r0, [sp, #0x20] + str r5, [sp, #0x38] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + ldr r0, [sp, #0x14] + mov r2, #0x23 + str r0, [sp] + ldr r0, _0224AC1C ; =0x022513F8 + lsl r2, r2, #4 + ldr r0, [r0] + mov r3, #4 + ldr r0, [r0] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x1c + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl MOD18_02244028 + str r0, [r5, #0x4c] + ldr r0, _0224AC20 ; =0x00000246 + mov r1, #8 + strb r1, [r5, r0] + add sp, #0x3c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224AC0C: .word 0x00000237 +_0224AC10: .word 0x00000257 +_0224AC14: .word 0x000003D9 +_0224AC18: .word 0x02250598 +_0224AC1C: .word 0x022513F8 +_0224AC20: .word 0x00000246 + thumb_func_end MOD18_0224AB08 + + thumb_func_start MOD18_0224AC24 +MOD18_0224AC24: ; 0x0224AC24 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0xa + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + bl FUN_020311F0 + cmp r0, #0 + beq _0224AC6E + mov r4, #1 + mvn r4, r4 +_0224AC6E: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224AC78 + add r4, r0, #0 +_0224AC78: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224AC8A + add r0, r0, #1 + cmp r4, r0 + bne _0224AC98 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224AC8A: + ldr r0, _0224ACF8 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249AAC + b _0224ACF2 +_0224AC98: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, _0224ACFC ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_0224938C + ldr r1, _0224ACFC ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + add r0, r5, #0 + mov r1, #2 + bl MOD18_0224996C + bl MOD18_0223D638 + ldr r2, _0224ACFC ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF18 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x81 + add r3, r2, #0 + bl MOD18_0224DCD8 + ldr r0, _0224AD00 ; =0x00000246 + mov r1, #0x13 + strb r1, [r5, r0] + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224ACF2: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224ACF8: .word 0x000005DC +_0224ACFC: .word 0x022513F8 +_0224AD00: .word 0x00000246 + thumb_func_end MOD18_0224AC24 + + thumb_func_start MOD18_0224AD04 +MOD18_0224AD04: ; 0x0224AD04 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldr r0, [r5, #0x50] + bl FUN_02001204 + mov r1, #0x93 + add r4, r0, #0 + lsl r1, r1, #2 + ldrh r6, [r5, r1] + ldr r0, [r5, #0x50] + add r1, r5, r1 + bl FUN_0200143C + mov r0, #0x93 + lsl r0, r0, #2 + ldrh r0, [r5, r0] + cmp r6, r0 + beq _0224AD2E + ldr r0, _0224ADA8 ; =0x000005DC + bl FUN_020054C8 +_0224AD2E: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224AD40 + add r0, r0, #1 + cmp r4, r0 + bne _0224AD5A + mov r0, #0 + pop {r4, r5, r6, pc} +_0224AD40: + ldr r0, _0224ADA8 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD18_02249A64 + add r0, r5, #0 + bl MOD18_0224AA4C + ldr r0, _0224ADAC ; =0x00000246 + mov r1, #8 + strb r1, [r5, r0] + b _0224ADA4 +_0224AD5A: + add r0, r5, #0 + bl MOD18_02249A64 + cmp r4, #2 + bne _0224AD94 + ldr r0, _0224ADA8 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224ADB0 ; =0x022513F8 + ldr r1, [r0] + ldr r0, [r1] + ldrb r1, [r1, #4] + bl FUN_02025FA4 + bl MOD18_0223D638 + ldr r2, _0224ADB0 ; =0x022513F8 + mov r1, #2 + ldr r2, [r2] + ldrb r2, [r2, #5] + bl MOD18_0224DF18 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x82 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224AD94: + ldr r0, _0224ADB4 ; =MOD18_0224AA4C + mov r1, #8 + str r0, [r5] + ldr r0, _0224ADB8 ; =0x00000245 + strb r1, [r5, r0] + mov r1, #0xe + add r0, r0, #1 + strb r1, [r5, r0] +_0224ADA4: + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224ADA8: .word 0x000005DC +_0224ADAC: .word 0x00000246 +_0224ADB0: .word 0x022513F8 +_0224ADB4: .word MOD18_0224AA4C +_0224ADB8: .word 0x00000245 + thumb_func_end MOD18_0224AD04 + + thumb_func_start MOD18_0224ADBC +MOD18_0224ADBC: ; 0x0224ADBC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_022498EC + bl MOD18_0223E458 + bl MOD18_0224D344 + bl MOD18_02240C14 + bl MOD18_0223C848 + bl MOD18_0223D370 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224ADE8 + bl MOD18_0224DAA8 +_0224ADE8: + ldr r0, [r5, #0x5c] + cmp r0, #0 + beq _0224ADF4 + mov r1, #4 + bl FUN_020021EC +_0224ADF4: + add r0, r5, #0 + bl MOD18_02249A64 + ldr r0, [r5, #8] + cmp r0, #0 + beq _0224AE04 + bl FUN_0205EBEC +_0224AE04: + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224AE34 + ldr r0, _0224AE64 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_0224938C + ldr r1, _0224AE64 ; =0x022513F8 + ldr r1, [r1] + strb r0, [r1, #5] + mov r1, #0x7f + lsl r1, r1, #2 + ldr r1, [r5, r1] + mov r0, #0 + blx r1 + mov r0, #0x7f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0224AE34: + ldr r0, [r5, #0x68] + cmp r0, #0 + beq _0224AE3E + bl FUN_02021A20 +_0224AE3E: + ldr r0, [r5, #0x6c] + cmp r0, #0 + beq _0224AE48 + bl FUN_02021A20 +_0224AE48: + ldr r0, [r5, #0x70] + cmp r0, #0 + beq _0224AE52 + bl FUN_0200AB18 +_0224AE52: + ldr r0, [r5, #4] + cmp r0, #0 + beq _0224AE5C + bl FUN_0200CAB4 +_0224AE5C: + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224AE64: .word 0x022513F8 + thumb_func_end MOD18_0224ADBC + + thumb_func_start MOD18_0224AE68 +MOD18_0224AE68: ; 0x0224AE68 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + bl FUN_020311F0 + cmp r0, #0 + beq _0224AE80 + mov r4, #1 + mvn r4, r4 +_0224AE80: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224AE8A + add r4, r0, #0 +_0224AE8A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224AE9C + add r0, r0, #1 + cmp r4, r0 + bne _0224AEDA + mov r0, #0 + pop {r3, r4, r5, pc} +_0224AE9C: + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r5, r1] + cmp r0, #0 + beq _0224AEC2 + ldr r0, _0224AF24 ; =0x022513F8 + mov r3, #0 + ldr r2, [r0] + strb r4, [r2, #4] + ldr r2, [r0] + strb r3, [r2, #5] + ldr r0, [r0] + ldr r1, [r5, r1] + ldrb r0, [r0, #5] + blx r1 + mov r0, #0x7f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0224AEC2: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224AEDA: + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + cmp r0, #0 + beq _0224AF0C + ldr r0, _0224AF24 ; =0x022513F8 + add r1, r5, #0 + ldr r0, [r0] + strb r4, [r0, #4] + add r0, r4, #0 + bl MOD18_0224938C + ldr r1, _0224AF24 ; =0x022513F8 + ldr r2, [r1] + strb r0, [r2, #5] + ldr r0, [r1] + mov r1, #0x7f + lsl r1, r1, #2 + ldrb r0, [r0, #5] + ldr r1, [r5, r1] + blx r1 + mov r0, #0x7f + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] +_0224AF0C: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0224ADBC + bl MOD18_0223E6A0 + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224AF24: .word 0x022513F8 + thumb_func_end MOD18_0224AE68 + + thumb_func_start MOD18_0224AF28 +MOD18_0224AF28: ; 0x0224AF28 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0x25 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x7f + lsl r0, r0, #2 + str r6, [r4, #0xc] + add r1, r0, #0 + str r5, [r4, r0] + mov r2, #0 + add r1, #0x4a + strb r2, [r4, r1] + sub r0, r0, #4 + str r2, [r4, r0] + str r2, [r4, #0x48] + str r2, [r4, #0x60] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + add r0, r4, #0 + bl MOD18_0224AA4C + ldr r0, _0224AFA0 ; =0x00000246 + mov r1, #9 + strb r1, [r4, r0] + ldr r0, _0224AFA4 ; =MOD18_02249684 + ldr r2, _0224AFA8 ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _0224AFAC ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + add r0, r4, #0 + pop {r4, r5, r6, pc} + nop +_0224AFA0: .word 0x00000246 +_0224AFA4: .word MOD18_02249684 +_0224AFA8: .word 0x00002710 +_0224AFAC: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224AF28 + + thumb_func_start MOD18_0224AFB0 +MOD18_0224AFB0: ; 0x0224AFB0 + push {r3, r4} + mov r3, #0x23 + lsl r3, r3, #4 + ldr r4, [r0, r3] + add r4, r4, r1 + cmp r4, r2 + blt _0224AFCC + sub r1, r2, r1 + str r1, [r0, r3] + ldr r1, [r0, r3] + cmp r1, #0 + bge _0224AFCC + mov r1, #0 + str r1, [r0, r3] +_0224AFCC: + mov r1, #0x8b + lsl r1, r1, #2 + ldr r3, [r0, r1] + sub r2, r2, #1 + cmp r3, r2 + blt _0224AFE4 + str r2, [r0, r1] + ldr r2, [r0, r1] + cmp r2, #0 + bge _0224AFE4 + mov r2, #0 + str r2, [r0, r1] +_0224AFE4: + pop {r3, r4} + bx lr + thumb_func_end MOD18_0224AFB0 + + thumb_func_start MOD18_0224AFE8 +MOD18_0224AFE8: ; 0x0224AFE8 + push {r4, lr} + add r4, r1, #0 + mov r1, #1 + mov r0, #0 + add r2, r1, #0 + bl FUN_0200A274 + mov r1, #1 + add r0, r4, #0 + mvn r1, r1 + bl MOD18_0224ADBC + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224AFE8 + + thumb_func_start MOD18_0224B004 +MOD18_0224B004: ; 0x0224B004 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r7, r3, #0 + add r5, r0, #0 + add r4, r1, #0 + cmp r6, r7 + ble _0224B04A + cmp r4, #0 + ldr r0, [r5, #8] + beq _0224B022 + mov r1, #0 + mov r2, #1 + bl FUN_0205EC6C + b _0224B02A +_0224B022: + mov r1, #0 + add r2, r1, #0 + bl FUN_0205EC6C +_0224B02A: + add r0, r4, r7 + cmp r6, r0 + ldr r0, [r5, #8] + beq _0224B03C + mov r1, #1 + add r2, r1, #0 + bl FUN_0205EC6C + b _0224B044 +_0224B03C: + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224B044: + ldr r0, [r5, #8] + bl FUN_0205EC18 +_0224B04A: + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224B004 + + thumb_func_start MOD18_0224B04C +MOD18_0224B04C: ; 0x0224B04C + ldrh r2, [r0] + ldrh r3, [r0, #2] + mov r0, #0 + mvn r0, r0 + cmp r1, r0 + beq _0224B060 + cmp r1, #0 + beq _0224B060 + mov r0, #0xff + bx lr +_0224B060: + cmp r3, #0xc + bne _0224B068 + mov r3, #0 + b _0224B074 +_0224B068: + cmp r3, #0x2c + bne _0224B070 + mov r3, #8 + b _0224B074 +_0224B070: + mov r0, #0xff + bx lr +_0224B074: + add r0, r2, #0 + sub r0, #0xf + cmp r0, #1 + bhi _0224B080 + mov r0, #0 + bx lr +_0224B080: + mov r1, #0 +_0224B082: + add r0, r2, #0 + sub r0, #0x2f + cmp r0, #1 + bhi _0224B08E + add r0, r1, r3 + bx lr +_0224B08E: + add r1, r1, #1 + sub r2, #0x20 + cmp r1, #8 + blt _0224B082 + mov r0, #0xff + bx lr + .align 2, 0 + thumb_func_end MOD18_0224B04C + + thumb_func_start MOD18_0224B09C +MOD18_0224B09C: ; 0x0224B09C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0204E6CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0224B04C + add r4, r0, #0 + bl FUN_0204E69C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224B0BE + mov r4, #0xff +_0224B0BE: + cmp r4, #0xff + beq _0224B118 + add r0, r5, #0 + mov r1, #0 + bl FUN_0204EAD8 + add r0, sp, #0 + strb r4, [r0, #2] + strb r5, [r0, #1] + mov r1, #0 + strb r1, [r0, #3] + cmp r4, r5 + beq _0224B0EA + add r0, r5, #0 + bl FUN_0204EE9C + cmp r0, #0 + bne _0224B10A + mov r1, #1 + add r0, sp, #0 + strb r1, [r0, #3] + b _0224B10A +_0224B0EA: + add r0, r5, #0 + bl FUN_0204EE9C + cmp r0, #0 + beq _0224B10A + mov r1, #3 + add r0, sp, #0 + strb r1, [r0] + add r0, r5, #0 + mov r1, #1 + add r2, sp, #0 + mov r3, #0 + bl FUN_0204F0C8 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B10A: + add r1, sp, #0 + mov r0, #0x53 + add r1, #1 + bl FUN_02030C4C + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B118: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224B09C + + thumb_func_start MOD18_0224B11C +MOD18_0224B11C: ; 0x0224B11C + ldr r3, _0224B124 ; =0x0204F775 + mov r0, #0x40 + bx r3 + nop +_0224B124: .word 0x0204F775 + thumb_func_end MOD18_0224B11C + + thumb_func_start MOD18_0224B128 +MOD18_0224B128: ; 0x0224B128 + push {r3, r4, r5, lr} + add r5, r2, #0 + add r4, r3, #0 + bl FUN_02030FE0 + cmp r0, #0 + beq _0224B180 + bl FUN_02031190 + ldrb r1, [r5] + cmp r1, r0 + bne _0224B180 + bl FUN_02031190 + ldrb r1, [r5, #1] + cmp r1, r0 + bne _0224B15C + ldr r0, _0224B184 ; =0x0000060C + bl FUN_020054C8 + bl FUN_0204F7E4 + add r0, r4, #0 + bl MOD18_0224BD54 + pop {r3, r4, r5, pc} +_0224B15C: + mov r0, #0x40 + bl FUN_0204F74C + ldrb r0, [r5, #2] + cmp r0, #0 + beq _0224B172 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224BEA4 + pop {r3, r4, r5, pc} +_0224B172: + bl MOD18_0223D648 + ldr r3, _0224B188 ; =MOD18_0224B11C + mov r1, #9 + mov r2, #1 + bl MOD18_0224DCB8 +_0224B180: + pop {r3, r4, r5, pc} + nop +_0224B184: .word 0x0000060C +_0224B188: .word MOD18_0224B11C + thumb_func_end MOD18_0224B128 + + thumb_func_start MOD18_0224B18C +MOD18_0224B18C: ; 0x0224B18C + mov r0, #3 + bx lr + thumb_func_end MOD18_0224B18C + + thumb_func_start MOD18_0224B190 +MOD18_0224B190: ; 0x0224B190 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r4, r0, #0 + add r1, r5, #0 + bl FUN_02025F98 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02025D6C + cmp r0, #0 + beq _0224B1BE + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02025FA4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B1BE: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224B190 + + thumb_func_start MOD18_0224B1C4 +MOD18_0224B1C4: ; 0x0224B1C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r1, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + add r1, r5, #0 + add r4, r0, #0 + bl FUN_02025F0C + cmp r0, #0 + beq _0224B1E4 + mov r0, #0 + mvn r0, r0 + pop {r3, r4, r5, pc} +_0224B1E4: + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02025DC8 + bl MOD18_022494B4 + cmp r0, #0 + beq _0224B200 + add r0, r4, #0 + add r1, r5, #0 + bl FUN_02025DD4 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224B200: + mov r0, #0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224B1C4 + + thumb_func_start MOD18_0224B204 +MOD18_0224B204: ; 0x0224B204 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B218 + mov r4, #5 +_0224B218: + bl MOD18_0223D658 + mov r2, #0 + add r1, r4, #6 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + thumb_func_end MOD18_0224B204 + + thumb_func_start MOD18_0224B228 +MOD18_0224B228: ; 0x0224B228 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + bl FUN_02001470 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B23C + mov r4, #3 +_0224B23C: + bl MOD18_0223D658 + add r4, #0x2c + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224B228 + + thumb_func_start MOD18_0224B250 +MOD18_0224B250: ; 0x0224B250 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4, #0x48] + bl FUN_02001204 + add r5, r0, #0 + add r1, sp, #0 + ldr r0, [r4, #0x48] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0x17 + bl MOD18_0223E57C + add r0, r4, #0 + bl MOD18_0224BF84 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bhi _0224B29E + bhs _0224B2AA + cmp r5, #4 + bhi _0224B33E + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B294: ; jump table + .short _0224B2B8 - _0224B294 - 2 ; case 0 + .short _0224B324 - _0224B294 - 2 ; case 1 + .short _0224B332 - _0224B294 - 2 ; case 2 + .short _0224B316 - _0224B294 - 2 ; case 3 + .short _0224B308 - _0224B294 - 2 ; case 4 +_0224B29E: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _0224B33E + mov r0, #0 + pop {r3, r4, r5, pc} +_0224B2AA: + ldr r0, _0224B344 ; =0x0000060E + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #2 + strb r1, [r4, r0] + b _0224B33E +_0224B2B8: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + bl FUN_02025DB0 + cmp r0, #0 + bne _0224B2DE + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x3c + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x17 + strb r1, [r4, r0] + b _0224B33E +_0224B2DE: + bl FUN_0202EDD8 + cmp r0, #0 + beq _0224B2F2 + bl MOD18_0223E6A0 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #3 + strb r1, [r4, r0] + b _0224B33E +_0224B2F2: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x17 + strb r1, [r4, r0] + b _0224B33E +_0224B308: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #8 + strb r1, [r4, r0] + b _0224B33E +_0224B316: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #6 + strb r1, [r4, r0] + b _0224B33E +_0224B324: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x11 + strb r1, [r4, r0] + b _0224B33E +_0224B332: + ldr r0, _0224B34C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B348 ; =0x00000246 + mov r1, #0x14 + strb r1, [r4, r0] +_0224B33E: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224B344: .word 0x0000060E +_0224B348: .word 0x00000246 +_0224B34C: .word 0x000005DC + thumb_func_end MOD18_0224B250 + + thumb_func_start MOD18_0224B350 +MOD18_0224B350: ; 0x0224B350 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r0, r2, #1 + str r0, [sp, #0x18] + ldr r0, [r5, #0xc] + add r6, r1, #0 + ldr r0, [r0, #0xc] + str r3, [sp, #0x14] + bl FUN_02026CB4 + bl FUN_020269A0 + cmp r0, #3 + bge _0224B374 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] +_0224B374: + add r0, r5, #0 + bl MOD18_022498EC + ldr r0, [sp, #0x18] + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + str r2, [sp] + mov r0, #0xe + str r0, [sp, #4] + ldr r0, [sp, #0x18] + add r1, r5, #0 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224B45C ; =0x000002F9 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x11 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224B460 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x91 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [sp, #0x18] + mov r4, #0 + cmp r0, #0 + ble _0224B3FC + sub r0, r0, #1 + str r0, [sp, #0x1c] +_0224B3D4: + ldr r0, [sp, #0x1c] + cmp r4, r0 + ldr r0, [r5, #0x40] + bne _0224B3EA + mov r3, #1 + add r1, r7, #0 + add r2, r6, #5 + mvn r3, r3 + bl FUN_02012880 + b _0224B3F4 +_0224B3EA: + add r1, r7, #0 + add r2, r6, r4 + add r3, r4, #0 + bl FUN_02012880 +_0224B3F4: + ldr r0, [sp, #0x18] + add r4, r4, #1 + cmp r4, r0 + blt _0224B3D4 +_0224B3FC: + add r0, r7, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x20 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [sp, #0x18] + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x20 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0224B42C + str r0, [sp, #0x24] +_0224B42C: + str r5, [sp, #0x3c] + add r2, sp, #0x20 + ldrh r2, [r2, #0x10] + ldr r1, [sp, #0x18] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x20 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B45C: .word 0x000002F9 +_0224B460: .word 0x000003D9 + thumb_func_end MOD18_0224B350 + + thumb_func_start MOD18_0224B464 +MOD18_0224B464: ; 0x0224B464 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r6, r1, #0 + add r1, r2, #0 + add r1, r1, #1 + str r1, [sp, #0x1c] + add r5, r0, #0 + str r2, [sp, #0x14] + str r3, [sp, #0x18] + bl MOD18_022498EC + ldr r0, [sp, #0x1c] + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xe + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r1, #0x10 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224B558 ; =0x00000219 + mov r3, #0x11 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224B55C ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x91 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + ldr r0, [sp, #0x1c] + mov r4, #0 + cmp r0, #0 + ble _0224B4F8 +_0224B4D0: + ldr r0, [sp, #0x14] + cmp r4, r0 + ldr r0, [r5, #0x40] + bne _0224B4E6 + mov r3, #1 + add r1, r7, #0 + add r2, r6, r4 + mvn r3, r3 + bl FUN_02012880 + b _0224B4F0 +_0224B4E6: + add r1, r7, #0 + add r2, r6, r4 + add r3, r4, #0 + bl FUN_02012880 +_0224B4F0: + ldr r0, [sp, #0x1c] + add r4, r4, #1 + cmp r4, r0 + blt _0224B4D0 +_0224B4F8: + add r0, r7, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x20 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [sp, #0x14] + add r1, sp, #0x20 + add r0, r0, #1 + strh r0, [r1, #0x10] + ldr r0, [sp, #0x1c] + strh r0, [r1, #0x12] + ldr r0, [r5, #0x40] + str r0, [sp, #0x20] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x2c] + ldr r0, [sp, #0x18] + cmp r0, #0 + beq _0224B528 + str r0, [sp, #0x24] +_0224B528: + str r5, [sp, #0x3c] + add r2, sp, #0x20 + ldrh r2, [r2, #0x10] + ldr r1, [sp, #0x1c] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x20 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B558: .word 0x00000219 +_0224B55C: .word 0x000003D9 + thumb_func_end MOD18_0224B464 + + thumb_func_start MOD18_0224B560 +MOD18_0224B560: ; 0x0224B560 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x48] + bl FUN_02001204 + add r4, r0, #0 + add r1, sp, #0 + ldr r0, [r5, #0x48] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0x16 + bl MOD18_0223E57C + add r0, r5, #0 + bl MOD18_0224BF84 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bhi _0224B5A6 + bhs _0224B5B0 + cmp r4, #2 + bhi _0224B600 + cmp r4, #0 + beq _0224B5BE + cmp r4, #1 + beq _0224B5D4 + cmp r4, #2 + beq _0224B5EA + b _0224B600 +_0224B5A6: + add r0, r0, #1 + cmp r4, r0 + bne _0224B600 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224B5B0: + ldr r0, _0224B60C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224B610 ; =0x00000246 + mov r1, #0 + strb r1, [r5, r0] + b _0224B606 +_0224B5BE: + bl FUN_0202EDD8 + cmp r0, #0 + ldr r0, _0224B610 ; =0x00000246 + beq _0224B5CE + mov r1, #0xb + strb r1, [r5, r0] + b _0224B606 +_0224B5CE: + mov r1, #0xa + strb r1, [r5, r0] + b _0224B606 +_0224B5D4: + bl FUN_0202EDD8 + cmp r0, #0 + ldr r0, _0224B610 ; =0x00000246 + beq _0224B5E4 + mov r1, #0xd + strb r1, [r5, r0] + b _0224B606 +_0224B5E4: + mov r1, #0xc + strb r1, [r5, r0] + b _0224B606 +_0224B5EA: + bl FUN_0202EDD8 + cmp r0, #0 + ldr r0, _0224B610 ; =0x00000246 + beq _0224B5FA + mov r1, #0xf + strb r1, [r5, r0] + b _0224B606 +_0224B5FA: + mov r1, #0xe + strb r1, [r5, r0] + b _0224B606 +_0224B600: + ldr r0, _0224B610 ; =0x00000246 + mov r1, #2 + strb r1, [r5, r0] +_0224B606: + mov r0, #1 + pop {r3, r4, r5, pc} + nop +_0224B60C: .word 0x000005DC +_0224B610: .word 0x00000246 + thumb_func_end MOD18_0224B560 + + thumb_func_start MOD18_0224B614 +MOD18_0224B614: ; 0x0224B614 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #2 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B65E + add r4, r0, #0 +_0224B65E: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224B672 + add r0, r0, #1 + cmp r4, r0 + bne _0224B682 + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0224B672: + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _0224B6DC ; =0x00000246 + mov r1, #0 + strb r1, [r5, r0] + b _0224B6D4 +_0224B682: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224938C + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224B190 + cmp r0, #0 + beq _0224B6BA + bl MOD18_0223D658 + add r1, r6, #0 + bl MOD18_0224DE44 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x25 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224B6C8 +_0224B6BA: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x26 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224B6C8: + ldr r0, _0224B6DC ; =0x00000246 + mov r1, #0x13 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD18_022498EC +_0224B6D4: + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0224B6DC: .word 0x00000246 + thumb_func_end MOD18_0224B614 + + thumb_func_start MOD18_0224B6E0 +MOD18_0224B6E0: ; 0x0224B6E0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r1, #0 + ldr r0, [r5, #0x4c] + bl MOD18_02244140 + add r4, r0, #0 + ldr r0, [r5, #0x4c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + add r2, sp, #0 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #6 + bl MOD18_0223E57C + ldr r0, [r5, #0x4c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r1, sp, #0 + add r2, r0, #0 + ldrh r1, [r1, #2] + add r0, r5, #0 + mov r3, #6 + bl MOD18_0224B004 + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + bne _0224B72A + add r4, r0, #0 +_0224B72A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224B73E + add r0, r0, #1 + cmp r4, r0 + bne _0224B74E + add sp, #4 + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0224B73E: + bl MOD18_0223D678 + bl MOD18_0224DD94 + ldr r0, _0224B7D4 ; =0x00000246 + mov r1, #0 + strb r1, [r5, r0] + b _0224B7B8 +_0224B74E: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_02249360 + add r6, r0, #0 + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224B1C4 + cmp r0, #1 + bne _0224B786 + bl MOD18_0223D658 + add r1, r6, #0 + bl MOD18_0224DE44 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x24 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224B7AC +_0224B786: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224B79E + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x37 + add r3, r2, #0 + bl MOD18_0224DCB8 + b _0224B7AC +_0224B79E: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x27 + add r3, r2, #0 + bl MOD18_0224DCB8 +_0224B7AC: + ldr r0, _0224B7D4 ; =0x00000246 + mov r1, #0x16 + strb r1, [r5, r0] + add r0, r5, #0 + bl MOD18_022498EC +_0224B7B8: + mov r1, #0 + ldr r0, [r5, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C + mov r0, #1 + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0224B7D4: .word 0x00000246 + thumb_func_end MOD18_0224B6E0 + + thumb_func_start MOD18_0224B7D8 +MOD18_0224B7D8: ; 0x0224B7D8 + push {r3, lr} + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224B7FC + ldr r0, _0224B800 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224B7FC + bl MOD18_0223D658 + bl MOD18_0224DD94 + mov r0, #1 + pop {r3, pc} +_0224B7FC: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_0224B800: .word 0x021C48B8 + thumb_func_end MOD18_0224B7D8 + + thumb_func_start MOD18_0224B804 +MOD18_0224B804: ; 0x0224B804 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0 + add r4, r1, #0 + str r0, [sp, #4] + ldr r0, [r4, #0x38] + bl FUN_02055320 + lsl r1, r0, #0x10 + mov r0, #0xf + lsl r0, r0, #0x10 + sub r0, r0, r1 + str r0, [sp] + ldr r0, [r4, #0x38] + bl FUN_0205532C + lsl r1, r0, #0x10 + mov r0, #0x11 + lsl r0, r0, #0x10 + sub r1, r0, r1 + str r1, [sp, #8] + cmp r5, #0 + bne _0224B83E + ldr r0, [sp] + neg r0, r0 + str r0, [sp] + neg r0, r1 + str r0, [sp, #8] +_0224B83E: + ldr r1, [r4, #0x20] + add r0, sp, #0 + bl FUN_0201EF70 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224B804 + + thumb_func_start MOD18_0224B84C +MOD18_0224B84C: ; 0x0224B84C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5] + cmp r0, #5 + bls _0224B868 + b _0224B970 +_0224B868: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B874: ; jump table + .short _0224B880 - _0224B874 - 2 ; case 0 + .short _0224B8A4 - _0224B874 - 2 ; case 1 + .short _0224B8D8 - _0224B874 - 2 ; case 2 + .short _0224B8EE - _0224B874 - 2 ; case 3 + .short _0224B912 - _0224B874 - 2 ; case 4 + .short _0224B946 - _0224B874 - 2 ; case 5 +_0224B880: + ldr r0, _0224B978 ; =0x0000060D + bl FUN_020054C8 + mov r1, #0 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0200E1D0 + mov r0, #1 + str r0, [r5] + b _0224B970 +_0224B8A4: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + ldr r0, [r4, #0x38] + mov r1, #0 + bl FUN_0205537C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224B804 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r1, #0x29 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #2 + str r0, [r5] + b _0224B970 +_0224B8D8: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + add r0, r4, #0 + add r1, r6, #0 + bl MOD18_0224EA74 + mov r0, #3 + str r0, [r5] + b _0224B970 +_0224B8EE: + ldr r0, _0224B97C ; =0x0000060E + bl FUN_020054C8 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + mov r1, #0x28 + str r0, [sp, #8] + mov r0, #2 + add r2, r1, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #4 + str r0, [r5] + b _0224B970 +_0224B912: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + ldr r0, [r4, #0x38] + mov r1, #1 + bl FUN_0205537C + mov r0, #0 + add r1, r4, #0 + bl MOD18_0224B804 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + add r1, r0, #0 + add r2, r0, #0 + mov r3, #0 + bl FUN_0200E1D0 + mov r0, #5 + str r0, [r5] + b _0224B970 +_0224B946: + bl FUN_0200E308 + cmp r0, #0 + beq _0224B970 + add r0, r4, #0 + bl MOD18_02245054 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205EDE8 + add r0, r4, #0 + bl MOD18_0224BD54 + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0224B970: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0224B978: .word 0x0000060D +_0224B97C: .word 0x0000060E + thumb_func_end MOD18_0224B84C + + thumb_func_start MOD18_0224B980 +MOD18_0224B980: ; 0x0224B980 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02021A20 + ldr r0, [r4, #0x6c] + bl FUN_02021A20 + ldr r0, [r4, #0x70] + bl FUN_0200AB18 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r1, [r4, r0] + cmp r1, #0 + beq _0224B9A6 + mov r0, #0 + blx r1 +_0224B9A6: + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224B9B4 + bl FUN_0205EBEC + mov r0, #0 + str r0, [r4, #8] +_0224B9B4: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223D658 + bl MOD18_0224DD94 + add r0, r5, #0 + bl FUN_0200CAB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224B980 + + thumb_func_start MOD18_0224B9D0 +MOD18_0224B9D0: ; 0x0224B9D0 + push {r3, r4, r5, r6, lr} + sub sp, #4 + ldr r2, _0224BD40 ; =0x00000246 + add r4, r1, #0 + ldrb r3, [r4, r2] + add r6, r0, #0 + cmp r3, #0x17 + bhi _0224BABE + add r3, r3, r3 + add r3, pc + ldrh r3, [r3, #6] + lsl r3, r3, #0x10 + asr r3, r3, #0x10 + add pc, r3 +_0224B9EC: ; jump table + .short _0224BA1C - _0224B9EC - 2 ; case 0 + .short _0224BA54 - _0224B9EC - 2 ; case 1 + .short _0224BA5C - _0224B9EC - 2 ; case 2 + .short _0224BC5C - _0224B9EC - 2 ; case 3 + .short _0224BD3A - _0224B9EC - 2 ; case 4 + .short _0224BD3A - _0224B9EC - 2 ; case 5 + .short _0224BA70 - _0224B9EC - 2 ; case 6 + .short _0224BAB4 - _0224B9EC - 2 ; case 7 + .short _0224BAD8 - _0224B9EC - 2 ; case 8 + .short _0224BB1A - _0224B9EC - 2 ; case 9 + .short _0224BB22 - _0224B9EC - 2 ; case 10 + .short _0224BB56 - _0224B9EC - 2 ; case 11 + .short _0224BB6E - _0224B9EC - 2 ; case 12 + .short _0224BBA2 - _0224B9EC - 2 ; case 13 + .short _0224BBBA - _0224B9EC - 2 ; case 14 + .short _0224BBEE - _0224B9EC - 2 ; case 15 + .short _0224BC06 - _0224B9EC - 2 ; case 16 + .short _0224BC92 - _0224B9EC - 2 ; case 17 + .short _0224BCC2 - _0224B9EC - 2 ; case 18 + .short _0224BCCA - _0224B9EC - 2 ; case 19 + .short _0224BCDE - _0224B9EC - 2 ; case 20 + .short _0224BD0E - _0224B9EC - 2 ; case 21 + .short _0224BD16 - _0224B9EC - 2 ; case 22 + .short _0224BD2A - _0224B9EC - 2 ; case 23 +_0224BA1C: + mov r0, #0x17 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x17 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1a + strh r0, [r4, r1] + mov r1, #0 + ldr r3, _0224BD44 ; =MOD18_0224B204 + add r0, r4, #0 + mov r2, #5 + str r1, [sp] + bl MOD18_0224B350 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #1 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BA54: + bl MOD18_0224B250 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BA5C: + bl FUN_0204F7FC + bl MOD18_0223E6A0 + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0224B980 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BA70: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223D658 + bl MOD18_0224DD94 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_020238F4 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + mov r3, #0 + str r3, [sp] + add r2, r0, #0 + ldr r0, [r4, #0xc] + add r1, r5, #0 + ldr r0, [r0, #8] + bl MOD18_0224DA00 + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #7 + add r1, #0x3a + add sp, #4 + strb r0, [r4, r1] + pop {r3, r4, r5, r6, pc} +_0224BAB4: + ldr r0, _0224BD48 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _0224BAC0 +_0224BABE: + b _0224BD3A +_0224BAC0: + sub r2, #0x3a + ldr r0, [r4, r2] + bl MOD18_0224DAA8 + mov r0, #0x83 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, #0x3a + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BAD8: + bl MOD18_0223D658 + bl MOD18_0224DD94 + mov r0, #0x16 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0x16 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + sub r0, r1, #4 + ldr r0, [r4, r0] + add r1, #0x1a + strh r0, [r4, r1] + mov r0, #1 + str r0, [sp] + ldr r3, _0224BD4C ; =MOD18_0224B228 + add r0, r4, #0 + mov r1, #0x28 + mov r2, #3 + bl MOD18_0224B464 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #9 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BB1A: + bl MOD18_0224B560 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BB22: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E494 + bl MOD18_0223C7D4 + mov r0, #1 + sub r1, r0, #7 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x30 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BB56: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x39 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BB6E: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E46C + bl MOD18_0223D30C + mov r0, #1 + sub r1, r0, #7 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x31 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BBA2: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x3a + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BBBA: + add r0, r4, #0 + bl MOD18_022498EC + bl MOD18_0223E480 + bl MOD18_02240BB8 + mov r0, #1 + sub r1, r0, #7 + mov r2, #0 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x32 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BBEE: + bl MOD18_0223D658 + mov r2, #0 + mov r1, #0x3b + add r3, r2, #0 + bl MOD18_0224DCB8 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x10 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BC06: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224BC1C + ldr r0, _0224BD48 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + bne _0224BC1E +_0224BC1C: + b _0224BD3A +_0224BC1E: + mov r0, #1 + mov r1, #0 + sub r2, r1, #6 + add r3, r0, #0 + str r0, [sp] + bl FUN_0200A208 + bl MOD18_0223D658 + bl MOD18_0224DD94 + bl FUN_0202EDD8 + cmp r0, #0 + beq _0224BC42 + bl MOD18_0223E444 + b _0224BC46 +_0224BC42: + bl MOD18_0223E458 +_0224BC46: + bl MOD18_02240C14 + bl MOD18_0223C848 + bl MOD18_0223D370 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #8 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BC5C: + ldr r0, [r4, #0xc] + ldr r0, [r0, #0x10] + cmp r0, #0 + bne _0224BC86 + mov r0, #0xb + mov r1, #0xc + bl FUN_020169D8 + mov r1, #0 + mov r2, #0xc + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r5] + str r0, [r5, #4] + ldr r0, [r4, #0xc] + ldr r1, _0224BD50 ; =MOD18_0224B84C + add r2, r5, #0 + bl FUN_020463CC +_0224BC86: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0224B980 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BC92: + mov r0, #2 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #2 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD18_0224AAA4 + add r0, r4, #0 + mov r1, #0x1c + bl MOD18_0224CB34 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x12 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BCC2: + bl MOD18_0224B614 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BCCA: + add r0, r4, #0 + bl MOD18_0224B7D8 + cmp r0, #0 + beq _0224BD3A + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x11 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BCDE: + mov r0, #6 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #6 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD18_0224AAD4 + add r0, r4, #0 + mov r1, #0x20 + bl MOD18_0224CB34 + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x15 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BD0E: + bl MOD18_0224B6E0 + add sp, #4 + pop {r3, r4, r5, r6, pc} +_0224BD16: + add r0, r4, #0 + bl MOD18_0224B7D8 + cmp r0, #0 + beq _0224BD3A + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0x14 + add sp, #4 + strb r1, [r4, r0] + pop {r3, r4, r5, r6, pc} +_0224BD2A: + add r0, r4, #0 + bl MOD18_0224B7D8 + cmp r0, #0 + beq _0224BD3A + ldr r0, _0224BD40 ; =0x00000246 + mov r1, #0 + strb r1, [r4, r0] +_0224BD3A: + add sp, #4 + pop {r3, r4, r5, r6, pc} + nop +_0224BD40: .word 0x00000246 +_0224BD44: .word MOD18_0224B204 +_0224BD48: .word 0x021C48B8 +_0224BD4C: .word MOD18_0224B228 +_0224BD50: .word MOD18_0224B84C + thumb_func_end MOD18_0224B9D0 + + thumb_func_start MOD18_0224BD54 +MOD18_0224BD54: ; 0x0224BD54 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #1 + bl MOD18_0223E56C + mov r1, #0x25 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + str r5, [r4, #0xc] + bl MOD18_0223D658 + mov r1, #0x91 + lsl r1, r1, #2 + mov r2, #1 + bl MOD18_0224DB80 + ldr r0, _0224BDE4 ; =0x00000246 + mov r1, #0 + strb r1, [r4, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x70] + mov r0, #4 + bl FUN_0205EB38 + str r0, [r4, #8] + mov r1, #0xc8 + mov r2, #0x14 + mov r3, #0x7a + bl FUN_0205EC48 + mov r1, #0 + ldr r0, [r4, #8] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r4, #8] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C + ldr r0, _0224BDE8 ; =MOD18_0224B9D0 + ldr r2, _0224BDEC ; =0x00002710 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #4] + ldr r1, [r4, #4] + ldr r2, _0224BDF0 ; =MOD18_0224AFE8 + add r0, r4, #0 + bl MOD18_0223E688 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224BDE4: .word 0x00000246 +_0224BDE8: .word MOD18_0224B9D0 +_0224BDEC: .word 0x00002710 +_0224BDF0: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224BD54 + + thumb_func_start MOD18_0224BDF4 +MOD18_0224BDF4: ; 0x0224BDF4 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224BE0A + cmp r0, #1 + beq _0224BE30 + cmp r0, #2 + beq _0224BE68 + pop {r3, r4, r5, pc} +_0224BE0A: + bl MOD18_0223D638 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224BE78 + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #4] + ldr r1, _0224BE7C ; =0x0225065C + ldr r0, [r0, #8] + ldr r2, _0224BE80 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #8] + mov r0, #1 + str r0, [r4] + pop {r3, r4, r5, pc} +_0224BE30: + ldr r0, [r4, #8] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224BE78 + cmp r0, #0 + bne _0224BE50 + add r1, r4, #0 + mov r0, #0x59 + add r1, #0xc + bl FUN_020311D0 + b _0224BE5E +_0224BE50: + mov r0, #0x40 + bl FUN_0204F774 + bl MOD18_0223D638 + bl MOD18_0224DD94 +_0224BE5E: + mov r0, #2 + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224BE68: + add r0, r4, #0 + bl FUN_02016A18 + bl MOD18_0223E6A0 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224BE78: + pop {r3, r4, r5, pc} + nop +_0224BE7C: .word 0x0225065C +_0224BE80: .word 0x000003D9 + thumb_func_end MOD18_0224BDF4 + + thumb_func_start MOD18_0224BE84 +MOD18_0224BE84: ; 0x0224BE84 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224BE96 + mov r1, #4 + bl FUN_020021EC +_0224BE96: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224BE84 + + thumb_func_start MOD18_0224BEA4 +MOD18_0224BEA4: ; 0x0224BEA4 + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x25 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x14 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4] + ldr r0, _0224BF0C ; =MOD18_0224BDF4 + ldr r2, _0224BF10 ; =0x00002710 + str r6, [r4, #4] + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x10] + bl MOD18_0223D638 + add r6, r0, #0 + ldrb r0, [r5, #1] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r6, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D638 + mov r2, #0 + mov r1, #0x43 + add r3, r2, #0 + bl MOD18_0224DCB8 + ldrb r0, [r5] + ldr r2, _0224BF14 ; =MOD18_0224BE84 + strb r0, [r4, #0xc] + ldrb r0, [r5, #1] + strb r0, [r4, #0xd] + ldrb r0, [r5, #2] + strb r0, [r4, #0xe] + ldr r1, [r4, #0x10] + add r0, r4, #0 + bl MOD18_0223E688 + pop {r4, r5, r6, pc} + nop +_0224BF0C: .word MOD18_0224BDF4 +_0224BF10: .word 0x00002710 +_0224BF14: .word MOD18_0224BE84 + thumb_func_end MOD18_0224BEA4 + + thumb_func_start MOD18_0224BF18 +MOD18_0224BF18: ; 0x0224BF18 + push {r4, lr} + add r4, r2, #0 + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl FUN_0204EEBC + cmp r0, #0 + beq _0224BF30 + mov r0, #0x5a + add r1, r4, #0 + bl FUN_02030C4C +_0224BF30: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224BF18 + + thumb_func_start MOD18_0224BF34 +MOD18_0224BF34: ; 0x0224BF34 + push {r3, r4, r5, lr} + add r4, r2, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0224BF6A + bl MOD18_0223D648 + add r5, r0, #0 + ldrb r0, [r4, #1] + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D648 + ldr r3, _0224BF7C ; =MOD18_0224B11C + mov r1, #8 + mov r2, #1 + bl MOD18_0224DCB8 + ldr r0, _0224BF80 ; =0x00000425 + bl FUN_0200521C +_0224BF6A: + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl FUN_0204EEBC + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl MOD18_0224727C + pop {r3, r4, r5, pc} + .align 2, 0 +_0224BF7C: .word MOD18_0224B11C +_0224BF80: .word 0x00000425 + thumb_func_end MOD18_0224BF34 + + thumb_func_start MOD18_0224BF84 +MOD18_0224BF84: ; 0x0224BF84 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, _0224BFA4 ; =0x0000024A + ldr r0, [r5, #0x48] + ldrh r4, [r5, r1] + add r1, r5, r1 + bl FUN_0200143C + ldr r0, _0224BFA4 ; =0x0000024A + ldrh r0, [r5, r0] + cmp r4, r0 + beq _0224BFA2 + ldr r0, _0224BFA8 ; =0x000005DC + bl FUN_020054C8 +_0224BFA2: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224BFA4: .word 0x0000024A +_0224BFA8: .word 0x000005DC + thumb_func_end MOD18_0224BF84 + + thumb_func_start MOD18_0224BFAC +MOD18_0224BFAC: ; 0x0224BFAC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + ldr r0, [r6, #0xc] + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02026CC4 + bl FUN_02025D40 + add r7, r4, r0 + mov r4, #0 +_0224BFC6: + cmp r4, #0 + bne _0224BFCE + mov r5, #0x21 + b _0224BFE6 +_0224BFCE: + ldr r0, _0224C09C ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C0A0 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #5 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224BFE6: + mov r0, #0 + cmp r4, #0 + ble _0224C002 + mov r1, #0x21 + add r3, r0, #0 + lsl r1, r1, #4 +_0224BFF2: + add r2, r6, r0 + ldrb r2, [r2, r1] + cmp r5, r2 + bne _0224BFFC + add r5, r3, #0 +_0224BFFC: + add r0, r0, #1 + cmp r0, r4 + blt _0224BFF2 +_0224C002: + cmp r5, #0 + bne _0224C00A + sub r4, r4, #1 + b _0224C092 +_0224C00A: + add r0, r5, #0 + bl MOD18_0224DFFC + str r0, [sp, #4] + add r0, r5, #0 + bl MOD18_0224E00C + str r0, [sp, #8] + ldr r0, [sp, #4] + cmp r0, #0 + bne _0224C02A + ldr r0, [sp, #8] + cmp r0, #0 + bne _0224C02A + sub r4, r4, #1 + b _0224C092 +_0224C02A: + mov r1, #0x21 + add r0, r6, r4 + lsl r1, r1, #4 + str r0, [sp] + strb r5, [r0, r1] + add r0, r5, #0 + bl MOD18_0224DFEC + ldr r1, _0224C0A4 ; =0x00000215 + ldr r2, [sp] + strb r0, [r2, r1] + add r0, r2, #0 + ldrb r0, [r0, r1] + cmp r0, #6 + bne _0224C064 + ldr r0, _0224C09C ; =0x5D588B65 + add r2, r7, #0 + mul r2, r0 + ldr r0, _0224C0A0 ; =0x00269EC3 + add r7, r2, r0 + lsr r2, r7, #0x10 + lsl r0, r2, #2 + add r0, r2, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r2, r0, #1 + ldr r0, [sp] + strb r2, [r0, r1] +_0224C064: + ldr r0, _0224C09C ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C0A0 ; =0x00269EC3 + add r7, r1, r0 + ldr r1, [sp, #8] + ldr r0, [sp, #4] + sub r0, r1, r0 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + bne _0224C07E + lsr r0, r7, #0x10 + b _0224C084 +_0224C07E: + lsr r0, r7, #0x10 + mul r1, r0 + lsr r0, r1, #0x10 +_0224C084: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #4] + add r2, r0, r1 + ldr r1, _0224C0A8 ; =0x0000021A + ldr r0, [sp] + strb r2, [r0, r1] +_0224C092: + add r4, r4, #1 + cmp r4, #5 + blt _0224BFC6 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C09C: .word 0x5D588B65 +_0224C0A0: .word 0x00269EC3 +_0224C0A4: .word 0x00000215 +_0224C0A8: .word 0x0000021A + thumb_func_end MOD18_0224BFAC + + thumb_func_start MOD18_0224C0AC +MOD18_0224C0AC: ; 0x0224C0AC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r0, #0 + ldr r0, [r6, #0xc] + add r4, r1, #0 + bl FUN_020377AC + add r5, r0, #0 + bl FUN_02026CC4 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02024DA0 + bl FUN_02024CA4 + str r0, [sp, #4] + add r0, r7, #0 + bl FUN_02025D40 + add r7, r4, r0 + mov r4, #0 +_0224C0D8: + ldr r0, _0224C1B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C1B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + mov r0, #0x8a + mul r0, r1 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 + mov r0, #0 + cmp r4, #0 + ble _0224C10C + mov r1, #0x21 + add r3, r0, #0 + lsl r1, r1, #4 +_0224C0FC: + add r2, r6, r0 + ldrb r2, [r2, r1] + cmp r5, r2 + bne _0224C106 + add r5, r3, #0 +_0224C106: + add r0, r0, #1 + cmp r0, r4 + blt _0224C0FC +_0224C10C: + cmp r5, #0 + bne _0224C114 + sub r4, r4, #1 + b _0224C1A6 +_0224C114: + mov r1, #0x21 + add r0, r6, r4 + lsl r1, r1, #4 + str r0, [sp] + strb r5, [r0, r1] + add r0, r5, #0 + bl FUN_0204CAB0 + ldr r2, _0224C1B8 ; =0x00000215 + ldr r1, [sp] + strb r0, [r1, r2] + ldr r0, [sp, #4] + cmp r0, #0 + bne _0224C13E + add r0, r5, #0 + bl FUN_0204CB00 + cmp r0, #1 + bne _0224C13E + sub r4, r4, #1 + b _0224C1A6 +_0224C13E: + ldr r0, _0224C1B8 ; =0x00000215 + ldr r1, [sp] + ldrb r1, [r1, r0] + cmp r1, #0 + bne _0224C14C + sub r4, r4, #1 + b _0224C1A6 +_0224C14C: + cmp r1, #6 + bne _0224C16C + ldr r1, _0224C1B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C1B4 ; =0x00269EC3 + add r7, r2, r1 + lsr r2, r7, #0x10 + lsl r1, r2, #2 + add r1, r2, r1 + lsr r1, r1, #0x10 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + add r2, r1, #1 + ldr r1, [sp] + strb r2, [r1, r0] +_0224C16C: + add r0, r5, #0 + bl FUN_0204CAC0 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_0204CAD0 + ldr r1, _0224C1B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C1B4 ; =0x00269EC3 + add r7, r2, r1 + ldr r1, [sp, #8] + sub r0, r0, r1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + bne _0224C192 + lsr r0, r7, #0x10 + b _0224C198 +_0224C192: + lsr r0, r7, #0x10 + mul r1, r0 + lsr r0, r1, #0x10 +_0224C198: + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #8] + add r2, r0, r1 + ldr r1, _0224C1BC ; =0x0000021A + ldr r0, [sp] + strb r2, [r0, r1] +_0224C1A6: + add r4, r4, #1 + cmp r4, #5 + blt _0224C0D8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C1B0: .word 0x5D588B65 +_0224C1B4: .word 0x00269EC3 +_0224C1B8: .word 0x00000215 +_0224C1BC: .word 0x0000021A + thumb_func_end MOD18_0224C0AC + + thumb_func_start MOD18_0224C1C0 +MOD18_0224C1C0: ; 0x0224C1C0 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0xc] + add r7, r2, #0 + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_022493F4 + ldr r1, _0224C260 ; =0x00000215 + add r2, r5, r4 + ldrb r1, [r2, r1] + cmp r1, r0 + beq _0224C1EE + ldr r0, _0224C264 ; =0x0000FFFD + pop {r3, r4, r5, r6, r7, pc} +_0224C1EE: + add r0, r7, #0 + add r1, r5, #0 + bl MOD18_0224940C + ldr r1, _0224C268 ; =0x0000021A + add r2, r5, r4 + add r3, r0, #0 + ldrb r0, [r2, r1] + cmp r0, r3 + ble _0224C206 + ldr r0, _0224C26C ; =0x0000FFFB + pop {r3, r4, r5, r6, r7, pc} +_0224C206: + add r0, r1, #0 + add r0, #0x2e + ldrb r0, [r5, r0] + cmp r0, #1 + bne _0224C21E + sub r1, #0xa + ldrb r1, [r2, r1] + add r0, r6, #0 + bl FUN_02026298 + str r0, [sp] + b _0224C240 +_0224C21E: + cmp r0, #0 + bne _0224C230 + sub r1, #0xa + ldrb r1, [r2, r1] + add r0, r6, #0 + bl FUN_02025FD8 + str r0, [sp] + b _0224C240 +_0224C230: + cmp r0, #2 + bne _0224C240 + sub r1, #0xa + ldrb r1, [r2, r1] + add r0, r6, #0 + bl FUN_020261C8 + str r0, [sp] +_0224C240: + ldr r0, [sp] + cmp r0, #0 + beq _0224C250 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02026080 + b _0224C254 +_0224C250: + ldr r0, _0224C270 ; =0x0000FFFC + pop {r3, r4, r5, r6, r7, pc} +_0224C254: + mov r0, #0x21 + add r1, r5, r4 + lsl r0, r0, #4 + ldrb r0, [r1, r0] + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C260: .word 0x00000215 +_0224C264: .word 0x0000FFFD +_0224C268: .word 0x0000021A +_0224C26C: .word 0x0000FFFB +_0224C270: .word 0x0000FFFC + thumb_func_end MOD18_0224C1C0 + + thumb_func_start MOD18_0224C274 +MOD18_0224C274: ; 0x0224C274 + push {r4, r5, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r4, #3 + cmp r0, #2 + bne _0224C288 + mov r4, #2 +_0224C288: + add r0, r5, #0 + bl MOD18_022498EC + add r0, r4, #0 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + lsl r0, r4, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224C410 ; =0x00000391 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224C414 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r5, r1] + cmp r0, #1 + bne _0224C31E + sub r1, #0x24 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD18_0224BFAC + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0xd + mov r3, #0 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0xe + mov r3, #1 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + mov r2, #0xf + add r1, r0, #0 + add r3, r2, #0 + ldr r0, [r5, #0x40] + sub r3, #0x11 + bl FUN_02012880 + b _0224C396 +_0224C31E: + cmp r0, #0 + bne _0224C36C + sub r1, #0x24 + ldr r1, [r5, r1] + add r0, r5, #0 + bl MOD18_0224C0AC + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0x10 + mov r3, #0 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0x11 + mov r3, #1 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + mov r2, #0x12 + add r1, r0, #0 + add r3, r2, #0 + ldr r0, [r5, #0x40] + sub r3, #0x14 + bl FUN_02012880 + b _0224C396 +_0224C36C: + bl MOD18_0223D658 + bl MOD18_0224DBB4 + add r1, r0, #0 + ldr r0, [r5, #0x40] + mov r2, #0x1c + mov r3, #0 + bl FUN_02012880 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + mov r2, #0x16 + add r1, r0, #0 + add r3, r2, #0 + ldr r0, [r5, #0x40] + sub r3, #0x18 + bl FUN_02012880 +_0224C396: + bl MOD18_0224DAD8 + add r1, sp, #0x14 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x40] + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x20] + lsl r0, r4, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + mov r0, #0x13 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #0x13 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r5, r1] + add r2, sp, #0x14 + ldrh r1, [r2, #0x12] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x14 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + mov r0, #0x8b + lsl r0, r0, #2 + ldr r1, [r5, r0] + add r0, #0x1e + strh r1, [r5, r0] + add r0, r5, #0 + add r0, #0x10 + bl FUN_020191D0 + add r0, r5, #0 + add sp, #0x34 + pop {r4, r5, pc} + nop +_0224C410: .word 0x00000391 +_0224C414: .word 0x000003D9 + thumb_func_end MOD18_0224C274 + + thumb_func_start MOD18_0224C418 +MOD18_0224C418: ; 0x0224C418 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + mov r1, #0x13 + add r7, r0, #0 + add r6, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + cmp r6, #0 + beq _0224C434 + add r0, r7, #0 + bl FUN_02001B80 +_0224C434: + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xf + bl FUN_02019620 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r1, _0224C504 ; =0x00000247 + ldr r2, [r4, #0x68] + ldrb r1, [r4, r1] + add r1, #0x17 + bl FUN_0200A8E0 + mov r3, #1 + add r0, r4, #0 + str r3, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r4, #0x68] + add r0, #0x20 + bl FUN_0201BD84 + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224C4C2 + ldr r2, _0224C508 ; =0x00000215 + add r3, r4, r5 + ldrb r2, [r3, r2] + ldr r0, [r4, #0x70] + mov r1, #2 + bl FUN_0200B164 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r2, _0224C50C ; =0x0000021A + add r3, r4, r5 + ldrb r2, [r3, r2] + ldr r0, [r4, #0x70] + mov r1, #6 + mov r3, #2 + bl FUN_0200AD38 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r4, #0x68] + mov r1, #0x19 + bl FUN_0200A8E0 + ldr r0, [r4, #0x70] + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x68] + bl FUN_0200B7B8 + mov r0, #0x11 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x6c] + add r0, #0x20 + mov r3, #1 + bl FUN_0201BD84 +_0224C4C2: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _0224C4CC + add r5, r0, #0 +_0224C4CC: + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224C4E4 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_02249AF4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224C4E4: + cmp r0, #0 + bne _0224C4F6 + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_0224A9B4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224C4F6: + add r0, r7, #0 + add r1, r5, #0 + add r2, r6, #0 + bl MOD18_0224A2B4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C504: .word 0x00000247 +_0224C508: .word 0x00000215 +_0224C50C: .word 0x0000021A + thumb_func_end MOD18_0224C418 + + thumb_func_start MOD18_0224C510 +MOD18_0224C510: ; 0x0224C510 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r6, r1, #0 + mov r1, #0x13 + str r0, [sp, #0xc] + str r2, [sp, #0x10] + bl FUN_02001470 + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + str r0, [sp, #0x2c] + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xf + mov r5, #0 + bl FUN_02019620 + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224C546 + ldr r0, [sp, #0xc] + bl FUN_02001B80 +_0224C546: + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + bne _0224C550 + b _0224C6C4 +_0224C550: + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224C5D4 + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_022493DC + str r0, [sp, #0x24] + ldr r0, [sp, #0x2c] + bl FUN_02025D40 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r1, r1, r0 + ldr r0, [sp, #0x24] + add r7, r0, r1 + bl MOD18_0224DFEC + add r5, r0, #0 + cmp r5, #6 + bne _0224C598 + ldr r0, _0224C7B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C7B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #2 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224C598: + ldr r0, [sp, #0x24] + bl MOD18_0224DFFC + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + bl MOD18_0224E00C + ldr r1, _0224C7B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C7B4 ; =0x00269EC3 + add r1, r2, r1 + ldr r2, [sp, #0x28] + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + bne _0224C5BC + b _0224C5C2 +_0224C5BC: + lsr r0, r1, #0x10 + add r1, r0, #0 + mul r1, r2 +_0224C5C2: + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x28] + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r7, r0, #1 + b _0224C6C4 +_0224C5D4: + cmp r0, #0 + bne _0224C652 + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_0224938C + str r0, [sp, #0x20] + ldr r0, [sp, #0x2c] + bl FUN_02025D40 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r1, r1, r0 + ldr r0, [sp, #0x20] + add r7, r0, r1 + bl FUN_0204CAB0 + add r5, r0, #0 + cmp r5, #6 + bne _0224C616 + ldr r0, _0224C7B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C7B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #2 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224C616: + ldr r0, [sp, #0x20] + bl FUN_0204CAC0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + bl FUN_0204CAD0 + ldr r1, _0224C7B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C7B4 ; =0x00269EC3 + add r1, r2, r1 + ldr r2, [sp, #0x14] + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + bne _0224C63A + b _0224C640 +_0224C63A: + lsr r0, r1, #0x10 + add r1, r0, #0 + mul r1, r2 +_0224C640: + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x14] + add r1, r0, r1 + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r7, r0, #1 + b _0224C6C4 +_0224C652: + add r0, r6, #0 + add r1, r4, #0 + bl MOD18_02249438 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x2c] + bl FUN_02025D40 + mov r1, #0x89 + lsl r1, r1, #2 + ldr r1, [r4, r1] + add r1, r1, r0 + ldr r0, [sp, #0x1c] + add r7, r0, r1 + bl MOD18_0224DFBC + add r5, r0, #0 + cmp r5, #6 + bne _0224C690 + ldr r0, _0224C7B0 ; =0x5D588B65 + add r1, r7, #0 + mul r1, r0 + ldr r0, _0224C7B4 ; =0x00269EC3 + add r7, r1, r0 + lsr r1, r7, #0x10 + lsl r0, r1, #2 + add r0, r1, r0 + lsr r0, r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r5, r0, #1 +_0224C690: + ldr r0, [sp, #0x1c] + bl MOD18_0224DFCC + str r0, [sp, #0x18] + ldr r0, [sp, #0x1c] + bl MOD18_0224DFDC + ldr r1, _0224C7B0 ; =0x5D588B65 + add r2, r7, #0 + mul r2, r1 + ldr r1, _0224C7B4 ; =0x00269EC3 + add r1, r2, r1 + ldr r2, [sp, #0x18] + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + bne _0224C6B4 + b _0224C6BA +_0224C6B4: + lsr r0, r1, #0x10 + add r1, r0, #0 + mul r1, r2 +_0224C6BA: + lsr r0, r1, #0x10 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + ldr r0, [sp, #0x18] + add r7, r0, r1 +_0224C6C4: + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r1, _0224C7B8 ; =0x00000247 + ldr r2, [r4, #0x68] + ldrb r1, [r4, r1] + add r1, #0x17 + bl FUN_0200A8E0 + mov r3, #1 + add r0, r4, #0 + str r3, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r4, #0x68] + add r0, #0x20 + bl FUN_0201BD84 + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _0224C778 + cmp r5, #0 + beq _0224C74E + ldr r0, [r4, #0x70] + mov r1, #2 + add r2, r5, #0 + bl FUN_0200B164 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x70] + mov r1, #6 + add r2, r7, #0 + mov r3, #2 + bl FUN_0200AD38 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r4, #0x68] + mov r1, #0x19 + bl FUN_0200A8E0 + ldr r0, [r4, #0x70] + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x68] + bl FUN_0200B7B8 + mov r0, #0x11 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x6c] + add r0, #0x20 + mov r3, #1 + bl FUN_0201BD84 + ldr r0, _0224C7BC ; =0x00000215 + strb r5, [r4, r0] + add r0, r0, #5 + strb r7, [r4, r0] + b _0224C778 +_0224C74E: + ldr r0, _0224C7BC ; =0x00000215 + strb r5, [r4, r0] + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r4, #0x68] + mov r1, #0x1a + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + add r0, r4, #0 + ldr r2, [r4, #0x68] + add r0, #0x20 + mov r3, #1 + bl FUN_0201BD84 +_0224C778: + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224C790 + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD18_02249AF4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_0224C790: + cmp r0, #0 + bne _0224C7A2 + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD18_0224A9B4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_0224C7A2: + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + add r1, r6, #0 + bl MOD18_0224A2B4 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224C7B0: .word 0x5D588B65 +_0224C7B4: .word 0x00269EC3 +_0224C7B8: .word 0x00000247 +_0224C7BC: .word 0x00000215 + thumb_func_end MOD18_0224C510 + + thumb_func_start MOD18_0224C7C0 +MOD18_0224C7C0: ; 0x0224C7C0 + cmp r0, #5 + blt _0224C7C8 + mov r0, #0 + bx lr +_0224C7C8: + add r1, r1, r0 + mov r0, #0x21 + lsl r0, r0, #4 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224C7C0 + + thumb_func_start MOD18_0224C7D4 +MOD18_0224C7D4: ; 0x0224C7D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + bl MOD18_022498EC + mov r0, #6 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #0x40] + mov r2, #3 + add r1, r5, #0 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224C930 ; =0x00000301 + add r1, #0x10 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224C934 ; =0x000003D9 + add r0, #0x10 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x92 + lsl r2, r2, #2 + ldrb r0, [r5, r2] + cmp r0, #1 + bne _0224C83C + mov r0, #0 + mov r1, #0x1a + sub r2, #0xd + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + bl MOD18_0223D678 + ldr r1, _0224C938 ; =0x0000023B + mov r2, #0 + bl MOD18_0224DB80 + b _0224C876 +_0224C83C: + cmp r0, #0 + bne _0224C85C + mov r0, #0 + mov r1, #0x1a + sub r2, #0x11 + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + bl MOD18_0223D678 + ldr r1, _0224C93C ; =0x00000237 + mov r2, #0 + bl MOD18_0224DB80 + b _0224C876 +_0224C85C: + mov r0, #0 + mov r1, #0x1a + sub r2, #0xf + mov r3, #4 + bl FUN_0200A86C + add r6, r0, #0 + bl MOD18_0223D678 + ldr r1, _0224C940 ; =0x00000239 + mov r2, #0 + bl MOD18_0224DB80 +_0224C876: + mov r7, #0x21 + mov r4, #0 + lsl r7, r7, #4 +_0224C87C: + add r2, r5, r4 + ldrb r2, [r2, r7] + ldr r0, [r5, #0x40] + add r1, r6, #0 + add r3, r4, #0 + bl FUN_02012880 + add r4, r4, #1 + cmp r4, #5 + blt _0224C87C + mov r2, #0 + ldr r0, [r5, #0x40] + add r1, r6, #0 + sub r3, r2, #2 + bl FUN_02012880 + add r0, r6, #0 + bl FUN_0200A8B8 + bl MOD18_0224DAD8 + add r1, sp, #0x14 + mov r2, #0x20 + bl MI_CpuCopy8 + ldr r0, [r5, #0x40] + mov r1, #6 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x10 + str r0, [sp, #0x20] + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, _0224C944 ; =MOD18_0224C418 + ldr r1, _0224C948 ; =MOD18_0224C7C0 + str r0, [sp, #0x18] + mov r0, #0x81 + str r5, [sp, #0x30] + lsl r0, r0, #2 + str r1, [r5, r0] + add r0, #0x44 + ldrb r0, [r5, r0] + add r0, #0xd + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r5, r1] + add r1, #0x18 + ldrb r0, [r5, r1] + add r0, #0xd + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, #0x1e + strh r0, [r5, r1] + add r2, sp, #0x14 + ldrh r1, [r2, #0x12] + ldrh r2, [r2, #0x10] + add r0, r5, #0 + bl MOD18_0224AFB0 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, r2, #4 + ldr r2, [r5, r2] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0x14 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #0x48] + add r5, #0x10 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224C930: .word 0x00000301 +_0224C934: .word 0x000003D9 +_0224C938: .word 0x0000023B +_0224C93C: .word 0x00000237 +_0224C940: .word 0x00000239 +_0224C944: .word MOD18_0224C418 +_0224C948: .word MOD18_0224C7C0 + thumb_func_end MOD18_0224C7D4 + + thumb_func_start MOD18_0224C94C +MOD18_0224C94C: ; 0x0224C94C + push {r4, lr} + add r4, r0, #0 + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + beq _0224C96C + add r0, r4, #0 + add r0, #0x20 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019178 +_0224C96C: + add r0, r4, #0 + bl MOD18_022498EC + pop {r4, pc} + thumb_func_end MOD18_0224C94C + + thumb_func_start MOD18_0224C974 +MOD18_0224C974: ; 0x0224C974 + push {r4, lr} + mov r2, #0x92 + add r4, r1, #0 + lsl r2, r2, #2 + ldrb r2, [r4, r2] + cmp r2, #1 + bne _0224C990 + bl MOD18_022493DC + add r1, r0, #0 + mov r0, #2 + bl MOD18_0224CAB4 + b _0224C9AE +_0224C990: + cmp r2, #0 + bne _0224C9A2 + bl MOD18_0224938C + add r1, r0, #0 + mov r0, #2 + bl MOD18_0224CAC8 + b _0224C9AE +_0224C9A2: + bl MOD18_02249438 + add r1, r0, #0 + mov r0, #2 + bl MOD18_0224CAA0 +_0224C9AE: + ldr r1, _0224C9C0 ; =0x00000215 + mov r0, #4 + ldrb r1, [r4, r1] + bl MOD18_0224CAA0 + mov r0, #0xa + bl MOD18_0224CA58 + pop {r4, pc} + .align 2, 0 +_0224C9C0: .word 0x00000215 + thumb_func_end MOD18_0224C974 + + thumb_func_start MOD18_0224C9C4 +MOD18_0224C9C4: ; 0x0224C9C4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_020377AC + bl FUN_02026CC4 + ldr r1, _0224CA24 ; =0x00000215 + add r4, r0, #0 + ldrb r0, [r5, r1] + add r1, r1, #5 + ldrb r1, [r5, r1] + bl MOD18_02249450 + cmp r0, #0 + beq _0224CA1E + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r5, r1] + cmp r0, #1 + bne _0224C9FA + sub r1, r1, #4 + ldrb r1, [r5, r1] + add r0, r4, #0 + bl FUN_02026264 + b _0224CA18 +_0224C9FA: + cmp r0, #0 + bne _0224CA0A + sub r1, r1, #4 + ldrb r1, [r5, r1] + add r0, r4, #0 + bl FUN_02025FA4 + b _0224CA18 +_0224CA0A: + cmp r0, #2 + bne _0224CA18 + sub r1, r1, #4 + ldrb r1, [r5, r1] + add r0, r4, #0 + bl FUN_02026194 +_0224CA18: + ldr r0, _0224CA24 ; =0x00000215 + ldrb r0, [r5, r0] + pop {r3, r4, r5, pc} +_0224CA1E: + ldr r0, _0224CA28 ; =0x0000FFFC + pop {r3, r4, r5, pc} + nop +_0224CA24: .word 0x00000215 +_0224CA28: .word 0x0000FFFC + thumb_func_end MOD18_0224C9C4 + + thumb_func_start MOD18_0224CA2C +MOD18_0224CA2C: ; 0x0224CA2C + ldr r0, _0224CA30 ; =0x0000FFFE + bx lr + .align 2, 0 +_0224CA30: .word 0x0000FFFE + thumb_func_end MOD18_0224CA2C + + thumb_func_start MOD18_0224CA34 +MOD18_0224CA34: ; 0x0224CA34 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02021A20 + ldr r0, [r4, #0x6c] + bl FUN_02021A20 + ldr r0, [r4, #0x70] + bl FUN_0200AB18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224CA34 + + thumb_func_start MOD18_0224CA54 +MOD18_0224CA54: ; 0x0224CA54 + mov r0, #0 + bx lr + thumb_func_end MOD18_0224CA54 + + thumb_func_start MOD18_0224CA58 +MOD18_0224CA58: ; 0x0224CA58 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD18_0223D658 + ldr r1, _0224CA90 ; =0x00000241 + mov r2, #1 + bl MOD18_0224DB80 + bl MOD18_0223D658 + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0202DFA4 + add r1, r0, #0 + add r0, r4, #0 + bl MOD18_0224DDB8 + bl MOD18_0223D658 + mov r2, #0 + add r1, r5, #0 + add r3, r2, #0 + bl MOD18_0224DCB8 + pop {r3, r4, r5, pc} + nop +_0224CA90: .word 0x00000241 + thumb_func_end MOD18_0224CA58 + + thumb_func_start MOD18_0224CA94 +MOD18_0224CA94: ; 0x0224CA94 + push {r3, lr} + bl MOD18_0223D658 + bl MOD18_0224DD94 + pop {r3, pc} + thumb_func_end MOD18_0224CA94 + + thumb_func_start MOD18_0224CAA0 +MOD18_0224CAA0: ; 0x0224CAA0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D658 + add r1, r5, #0 + add r2, r4, #0 + bl MOD18_0224DEF0 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224CAA0 + + thumb_func_start MOD18_0224CAB4 +MOD18_0224CAB4: ; 0x0224CAB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D658 + add r1, r5, #0 + add r2, r4, #0 + bl MOD18_0224DF04 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224CAB4 + + thumb_func_start MOD18_0224CAC8 +MOD18_0224CAC8: ; 0x0224CAC8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD18_0223D658 + add r1, r5, #0 + add r2, r4, #0 + bl MOD18_0224DF18 + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224CAC8 + + thumb_func_start MOD18_0224CADC +MOD18_0224CADC: ; 0x0224CADC + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + bne _0224CB1A + mov r0, #0xc + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r3, #1 + str r3, [sp, #0x10] + ldr r0, [r4, #0xc] + add r1, r4, #0 + ldr r0, [r0, #8] + add r1, #0x20 + mov r2, #3 + bl FUN_02019064 + add r0, r4, #0 + ldr r2, _0224CB30 ; =0x000003D9 + add r0, #0x20 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 +_0224CB1A: + add r0, r4, #0 + add r0, #0x20 + mov r1, #0xf + bl FUN_02019620 + add r4, #0x20 + add r0, r4, #0 + bl FUN_020191D0 + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_0224CB30: .word 0x000003D9 + thumb_func_end MOD18_0224CADC + + thumb_func_start MOD18_0224CB34 +MOD18_0224CB34: ; 0x0224CB34 + push {r4, r5, lr} + sub sp, #0x14 + mov r3, #1 + add r5, r0, #0 + str r3, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x33 + str r0, [sp, #0x10] + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r1, r5, #0 + ldr r0, [r0, #8] + add r1, #0x30 + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224CBA8 ; =0x000003D9 + add r0, #0x30 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x30 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x30 + bl FUN_020191D0 + bl MOD18_0223D658 + bl MOD18_0224DBB4 + ldr r2, [r5, #0x68] + add r1, r4, #0 + bl FUN_0200A8E0 + mov r3, #1 + add r0, r5, #0 + str r3, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r5, #0x68] + add r0, #0x30 + bl FUN_0201BD84 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0224CBA8: .word 0x000003D9 + thumb_func_end MOD18_0224CB34 + + thumb_func_start MOD18_0224CBAC +MOD18_0224CBAC: ; 0x0224CBAC + push {r4, lr} + add r4, r0, #0 + add r0, #0x30 + bl FUN_02019048 + cmp r0, #0 + beq _0224CBCC + add r0, r4, #0 + add r0, #0x30 + mov r1, #1 + bl FUN_0200CCF8 + add r4, #0x30 + add r0, r4, #0 + bl FUN_02019178 +_0224CBCC: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224CBAC + + thumb_func_start MOD18_0224CBD0 +MOD18_0224CBD0: ; 0x0224CBD0 + push {r3, r4, r5, lr} + ldr r5, _0224CC00 ; =0x022512A0 + mov r3, #0 +_0224CBD6: + ldrh r4, [r5, #2] + cmp r0, r4 + bne _0224CBF0 + ldrh r4, [r5, #4] + cmp r1, r4 + bne _0224CBF0 + mov r0, #6 + add r1, r3, #0 + mul r1, r0 + ldr r0, _0224CC00 ; =0x022512A0 + str r3, [r2] + ldrh r0, [r0, r1] + pop {r3, r4, r5, pc} +_0224CBF0: + add r3, r3, #1 + add r5, r5, #6 + cmp r3, #0x14 + blt _0224CBD6 + bl ErrorHandling + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224CC00: .word 0x022512A0 + thumb_func_end MOD18_0224CBD0 + + thumb_func_start MOD18_0224CC04 +MOD18_0224CC04: ; 0x0224CC04 + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r1, #0 + ldr r1, _0224CF50 ; =0x00000246 + add r5, r0, #0 + ldrb r0, [r4, r1] + cmp r0, #0x13 + bhi _0224CCD6 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224CC20: ; jump table + .short _0224CC48 - _0224CC20 - 2 ; case 0 + .short _0224CC68 - _0224CC20 - 2 ; case 1 + .short _0224CC7E - _0224CC20 - 2 ; case 2 + .short _0224CC8E - _0224CC20 - 2 ; case 3 + .short _0224CD32 - _0224CC20 - 2 ; case 4 + .short _0224CD48 - _0224CC20 - 2 ; case 5 + .short _0224CE38 - _0224CC20 - 2 ; case 6 + .short _0224CE68 - _0224CC20 - 2 ; case 7 + .short _0224CF40 - _0224CC20 - 2 ; case 8 + .short _0224CFA8 - _0224CC20 - 2 ; case 9 + .short _0224CF30 - _0224CC20 - 2 ; case 10 + .short _0224CFCE - _0224CC20 - 2 ; case 11 + .short _0224D046 - _0224CC20 - 2 ; case 12 + .short _0224D0DA - _0224CC20 - 2 ; case 13 + .short _0224D104 - _0224CC20 - 2 ; case 14 + .short _0224D14E - _0224CC20 - 2 ; case 15 + .short _0224D190 - _0224CC20 - 2 ; case 16 + .short _0224D1A0 - _0224CC20 - 2 ; case 17 + .short _0224CDE2 - _0224CC20 - 2 ; case 18 + .short _0224CE20 - _0224CC20 - 2 ; case 19 +_0224CC48: + add r0, r1, #2 + ldrb r0, [r4, r0] + cmp r0, #2 + bne _0224CC58 + mov r0, #0x1b + bl MOD18_0224CA58 + b _0224CC5E +_0224CC58: + mov r0, #0 + bl MOD18_0224CA58 +_0224CC5E: + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #1 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CC68: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224CCD6 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CC7E: + add r0, r4, #0 + bl MOD18_0224C274 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #3 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CC8E: + ldr r0, [r4, #0x48] + bl FUN_02001204 + add r5, r0, #0 + add r1, sp, #4 + ldr r0, [r4, #0x48] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + add r2, sp, #4 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0x13 + bl MOD18_0223E57C + ldr r1, _0224CF54 ; =0x0000024A + ldr r0, [r4, #0x48] + ldrh r6, [r4, r1] + add r1, r4, r1 + bl FUN_0200143C + ldr r0, _0224CF54 ; =0x0000024A + ldrh r0, [r4, r0] + cmp r6, r0 + beq _0224CCC8 + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 +_0224CCC8: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224CCDA + add r0, r0, #1 + cmp r5, r0 + bne _0224CCD8 +_0224CCD6: + b _0224D1CE +_0224CCD8: + b _0224CCF2 +_0224CCDA: + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0 + bl MOD18_0224C94C + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0x10 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CCF2: + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r4, r1] + cmp r0, #2 + bne _0224CD0C + mov r2, #1 + sub r0, r1, #1 + strb r2, [r4, r0] + mov r2, #0xb + sub r0, r1, #2 + add sp, #8 + strb r2, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD0C: + sub r0, r1, #1 + strb r5, [r4, r0] + cmp r5, #0 + ldr r0, _0224CF58 ; =0x000005DC + bne _0224CD24 + bl FUN_020054C8 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #4 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD24: + bl FUN_020054C8 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0xb + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD32: + add r0, r4, #0 + bl MOD18_0224CADC + add r0, r4, #0 + bl MOD18_0224C7D4 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #5 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CD48: + ldr r0, [r4, #0x48] + bl FUN_02001204 + add r5, r0, #0 + add r1, sp, #4 + ldr r0, [r4, #0x48] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r2, sp, #4 + ldrh r1, [r2] + add r0, #0xd + lsl r0, r0, #0x10 + ldrh r2, [r2, #2] + lsr r0, r0, #0x10 + bl MOD18_0223E57C + ldr r1, _0224CF54 ; =0x0000024A + ldr r0, [r4, #0x48] + ldrh r6, [r4, r1] + add r1, r4, r1 + bl FUN_0200143C + ldr r0, _0224CF54 ; =0x0000024A + ldrh r0, [r4, r0] + cmp r6, r0 + beq _0224CD8C + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 +_0224CD8C: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + bne _0224CD96 + add r5, r0, #0 +_0224CD96: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0224CDA6 + bl MOD18_0223D678 + bl MOD18_0224DD94 +_0224CDA6: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224CDB6 + add r0, r0, #1 + cmp r5, r0 + beq _0224CE2C + b _0224CDCE +_0224CDB6: + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CDCE: + ldr r0, _0224CF58 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0x12 + strb r1, [r4, r0] + sub r0, r0, #2 + add sp, #8 + strb r5, [r4, r0] + pop {r4, r5, r6, pc} +_0224CDE2: + add r0, r1, #2 + ldrb r0, [r4, r0] + cmp r0, #1 + bne _0224CDFC + sub r2, r1, #2 + ldrb r2, [r4, r2] + sub r1, #0x36 + mov r0, #2 + add r2, r4, r2 + ldrb r1, [r2, r1] + bl MOD18_0224CAB4 + b _0224CE10 +_0224CDFC: + cmp r0, #0 + bne _0224CE10 + sub r2, r1, #2 + ldrb r2, [r4, r2] + sub r1, #0x36 + mov r0, #2 + add r2, r4, r2 + ldrb r1, [r2, r1] + bl MOD18_0224CAC8 +_0224CE10: + mov r0, #1 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #0x13 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CE20: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + beq _0224CE2E +_0224CE2C: + b _0224D1CE +_0224CE2E: + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #6 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CE38: + mov r0, #0xc + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + mov r0, #0xc + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD18_02249EF4 + add r0, r4, #0 + mov r1, #0x13 + bl MOD18_0224CB34 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #7 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CE68: + ldr r0, [r4, #0x4c] + bl MOD18_02244140 + add r5, r0, #0 + ldr r0, [r4, #0x4c] + add r1, sp, #4 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + add r2, sp, #4 + ldrh r1, [r2] + ldrh r2, [r2, #2] + mov r0, #0xc + bl MOD18_0223E57C + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0224CE9A + bl MOD18_0223D678 + bl MOD18_0224DD94 +_0224CE9A: + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224CEAA + add r0, r0, #1 + cmp r5, r0 + beq _0224CF6C + b _0224CEBA +_0224CEAA: + add r0, r4, #0 + bl MOD18_0224CBAC + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #4 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CEBA: + mov r1, #0x91 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + add r0, r4, #0 + add r2, r5, #0 + bl MOD18_0224C1C0 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + add r0, r4, #0 + bl MOD18_0224CBAC + ldr r1, _0224CF5C ; =0x0000FFFC + cmp r5, r1 + bne _0224CEEE + mov r0, #3 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CEEE: + add r0, r1, #1 + cmp r5, r0 + bne _0224CF04 + mov r0, #4 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF04: + sub r0, r1, #1 + cmp r5, r0 + bne _0224CF1A + mov r0, #5 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF1A: + mov r0, #0x91 + lsl r0, r0, #2 + strb r5, [r4, r0] + mov r0, #2 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #8 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF30: + mov r0, #3 + bl MOD18_0224CA58 + ldr r0, _0224CF50 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CF40: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224CF6C + ldr r0, _0224CF60 ; =0x021C48B8 + b _0224CF64 + .align 2, 0 +_0224CF50: .word 0x00000246 +_0224CF54: .word 0x0000024A +_0224CF58: .word 0x000005DC +_0224CF5C: .word 0x0000FFFC +_0224CF60: .word 0x021C48B8 +_0224CF64: + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + bne _0224CF6E +_0224CF6C: + b _0224D1CE +_0224CF6E: + mov r1, #0x92 + lsl r1, r1, #2 + ldrb r0, [r4, r1] + cmp r0, #1 + bne _0224CF84 + sub r1, r1, #4 + ldrb r1, [r4, r1] + mov r0, #2 + bl MOD18_0224CAB4 + b _0224CF92 +_0224CF84: + cmp r0, #0 + bne _0224CF92 + sub r1, r1, #4 + ldrb r1, [r4, r1] + mov r0, #2 + bl MOD18_0224CAC8 +_0224CF92: + mov r0, #6 + bl MOD18_0224CA58 + ldr r0, _0224D1D4 ; =0x000005E3 + bl FUN_020054C8 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CFA8: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D0AA + ldr r0, _0224D1DC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224D0AA + mov r0, #8 + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224CFCE: + add r0, r4, #0 + bl MOD18_0224CADC + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E628 + mov r1, #0x8b + lsl r1, r1, #2 + str r0, [r4, r1] + add r1, #0x1c + ldrb r0, [r4, r1] + add r0, #0x10 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E5F0 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, _0224D1E0 ; =MOD18_0224C510 + add r1, #0x18 + str r0, [r4, #0x60] + ldrb r0, [r4, r1] + cmp r0, #1 + bne _0224D01A + add r0, r4, #0 + bl MOD18_02249B2C + add r0, r4, #0 + mov r1, #0x14 + bl MOD18_0224CB34 + b _0224D03C +_0224D01A: + cmp r0, #0 + bne _0224D02E + add r0, r4, #0 + bl MOD18_0224AA28 + add r0, r4, #0 + mov r1, #0x15 + bl MOD18_0224CB34 + b _0224D03C +_0224D02E: + add r0, r4, #0 + bl MOD18_0224A2EC + add r0, r4, #0 + mov r1, #0x1d + bl MOD18_0224CB34 +_0224D03C: + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xc + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D046: + ldr r0, [r4, #0x4c] + bl MOD18_02244140 + add r5, r0, #0 + ldr r0, [r4, #0x4c] + add r1, sp, #4 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #4 + bl FUN_02001448 + mov r0, #0x92 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + add r2, sp, #4 + ldrh r1, [r2] + add r0, #0x10 + lsl r0, r0, #0x10 + ldrh r2, [r2, #2] + lsr r0, r0, #0x10 + bl MOD18_0223E57C + mov r0, #1 + mvn r0, r0 + cmp r5, r0 + beq _0224D082 + add r0, r0, #1 + cmp r5, r0 + beq _0224D0AA + b _0224D0A2 +_0224D082: + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + add r0, r4, #0 + bl MOD18_0224CBAC + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #2 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D0A2: + ldr r0, _0224D1E4 ; =0x00000215 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0224D0AC +_0224D0AA: + b _0224D1CE +_0224D0AC: + bl MOD18_0223D678 + bl MOD18_0224DD94 + mov r0, #0x91 + lsl r0, r0, #2 + strb r5, [r4, r0] + add r0, r4, #0 + mov r1, #1 + bl MOD18_0224C94C + add r0, r4, #0 + bl MOD18_0224CBAC + add r0, r5, #0 + add r1, r4, #0 + bl MOD18_0224C974 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xd + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D0DA: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D1CE + mov r0, #4 + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _0224D1E8 ; =0x0225066C + ldr r0, [r0, #8] + ldr r2, _0224D1EC ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x5c] + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xe + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D104: + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_020021AC + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224D1CE + cmp r0, #0 + bne _0224D140 + add r0, r4, #0 + bl MOD18_0224C9C4 + ldr r1, _0224D1F0 ; =0x0000FFFC + cmp r0, r1 + bne _0224D132 + mov r0, #3 + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #9 + strb r1, [r4, r0] + b _0224D146 +_0224D132: + mov r0, #0xb + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0xf + strb r1, [r4, r0] + b _0224D146 +_0224D140: + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0x10 + strb r1, [r4, r0] +_0224D146: + mov r0, #0 + add sp, #8 + str r0, [r4, #0x5c] + pop {r4, r5, r6, pc} +_0224D14E: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D1CE + ldr r0, _0224D1DC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224D1CE + bl MOD18_0223D658 + ldr r1, _0224D1F4 ; =0x0000021A + ldrb r1, [r4, r1] + bl MOD18_0224DE7C + ldr r1, _0224D1E4 ; =0x00000215 + mov r0, #2 + ldrb r1, [r4, r1] + bl MOD18_0224CAA0 + mov r0, #7 + bl MOD18_0224CA58 + ldr r0, _0224D1D4 ; =0x000005E3 + bl FUN_020054C8 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #9 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D190: + mov r0, #9 + bl MOD18_0224CA58 + ldr r0, _0224D1D8 ; =0x00000246 + mov r1, #0x11 + add sp, #8 + strb r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224D1A0: + bl MOD18_0223D658 + bl MOD18_0224DF88 + cmp r0, #0 + bne _0224D1CE + ldr r0, _0224D1DC ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224D1CE + bl MOD18_0224CA94 + add r0, r4, #0 + bl MOD18_0224CA34 + bl MOD18_0223E6A0 + add r0, r5, #0 + bl FUN_0200CAB4 + bl FUN_0204F7FC +_0224D1CE: + add sp, #8 + pop {r4, r5, r6, pc} + nop +_0224D1D4: .word 0x000005E3 +_0224D1D8: .word 0x00000246 +_0224D1DC: .word 0x021C48B8 +_0224D1E0: .word MOD18_0224C510 +_0224D1E4: .word 0x00000215 +_0224D1E8: .word 0x0225066C +_0224D1EC: .word 0x000003D9 +_0224D1F0: .word 0x0000FFFC +_0224D1F4: .word 0x0000021A + thumb_func_end MOD18_0224CC04 + + thumb_func_start MOD18_0224D1F8 +MOD18_0224D1F8: ; 0x0224D1F8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + bl FUN_02031190 + bl FUN_0204E4D4 + str r0, [sp, #8] + bl FUN_02031190 + bl FUN_0204E50C + str r0, [sp, #4] + bl FUN_02031190 + bl FUN_0204E69C + bl FUN_0204F610 + str r0, [sp] + ldr r0, [sp, #8] + ldr r1, [sp, #4] + add r2, sp, #0xc + bl MOD18_0224CBD0 + add r5, r0, #0 + add r0, r5, #3 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD18_0223E56C + mov r1, #0x25 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + mov r2, #0x25 + mov r1, #0 + lsl r2, r2, #4 + add r6, r0, #0 + bl MI_CpuFill8 + mov r0, #0x92 + str r4, [r6, #0xc] + lsl r0, r0, #2 + strb r5, [r6, r0] + ldr r1, [sp, #0xc] + sub r0, #0x24 + str r1, [r6, r0] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r6, #0x68] + mov r0, #0x64 + mov r1, #4 + bl FUN_020219F4 + str r0, [r6, #0x6c] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r6, #0x70] + ldr r0, _0224D2DC ; =0x00000246 + mov r1, #0 + strb r1, [r6, r0] + ldr r0, _0224D2E0 ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0224D2E4 ; =MOD18_0224CC04 + ldr r2, _0224D2E8 ; =0x00002710 + add r1, r6, #0 + bl FUN_0200CA44 + str r0, [r6, #4] + ldr r1, [r6, #4] + ldr r2, _0224D2EC ; =MOD18_0224AFE8 + add r0, r6, #0 + bl MOD18_0223E688 + ldr r0, [r6, #0xc] + bl FUN_02034B64 + add r7, r0, #0 + ldr r0, [r6, #0xc] + bl FUN_02034B6C + add r5, r0, #0 + mov r4, #0 + cmp r7, #0 + ble _0224D2D6 +_0224D2AE: + ldrh r1, [r5, #0x18] + ldr r0, [sp, #8] + cmp r0, r1 + bne _0224D2CE + ldrh r1, [r5, #0x1a] + ldr r0, [sp, #4] + cmp r0, r1 + bne _0224D2CE + ldr r0, [r6, #0xc] + add r1, r4, #0 + ldr r0, [r0, #0x34] + bl FUN_02058060 + ldr r1, [sp] + bl FUN_020584AC +_0224D2CE: + add r4, r4, #1 + add r5, #0x20 + cmp r4, r7 + blt _0224D2AE +_0224D2D6: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D2DC: .word 0x00000246 +_0224D2E0: .word 0x000005DC +_0224D2E4: .word MOD18_0224CC04 +_0224D2E8: .word 0x00002710 +_0224D2EC: .word MOD18_0224AFE8 + thumb_func_end MOD18_0224D1F8 + + thumb_func_start MOD18_0224D2F0 +MOD18_0224D2F0: ; 0x0224D2F0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + mov r1, #0 + mov r2, #0x30 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, _0224D320 ; =0x022513FC + str r5, [r0] + str r6, [r5, #8] + ldr r0, [r0] + str r4, [r0, #0xc] + mov r0, #0xf + bl FUN_02025964 + ldr r1, _0224D320 ; =0x022513FC + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + add r0, #0x14 + bl FUN_020312BC + pop {r4, r5, r6, pc} + .align 2, 0 +_0224D320: .word 0x022513FC + thumb_func_end MOD18_0224D2F0 + + thumb_func_start MOD18_0224D324 +MOD18_0224D324: ; 0x0224D324 + push {r3, lr} + ldr r0, _0224D340 ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #0x10] + bl FUN_02016A18 + ldr r0, _0224D340 ; =0x022513FC + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _0224D340 ; =0x022513FC + mov r1, #0 + str r1, [r0] + pop {r3, pc} + .align 2, 0 +_0224D340: .word 0x022513FC + thumb_func_end MOD18_0224D324 + + thumb_func_start MOD18_0224D344 +MOD18_0224D344: ; 0x0224D344 + push {r3, lr} + ldr r0, _0224D358 ; =0x022513FC + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #0 + beq _0224D356 + ldr r1, [r1] + bl MOD18_0224D56C +_0224D356: + pop {r3, pc} + .align 2, 0 +_0224D358: .word 0x022513FC + thumb_func_end MOD18_0224D344 + + thumb_func_start MOD18_0224D35C +MOD18_0224D35C: ; 0x0224D35C + bx lr + .align 2, 0 + thumb_func_end MOD18_0224D35C + + thumb_func_start MOD18_0224D360 +MOD18_0224D360: ; 0x0224D360 + mov r0, #0x30 + bx lr + thumb_func_end MOD18_0224D360 + + thumb_func_start MOD18_0224D364 +MOD18_0224D364: ; 0x0224D364 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r7, r0, #0 + mov r0, #4 + str r1, [sp, #0xc] + add r5, r2, #0 + str r3, [sp, #0x10] + bl FUN_0200AA80 + str r0, [sp, #0x1c] + mov r0, #0x1e + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x1e + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x18] + ldr r0, [sp, #0xc] + mov r1, #0 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #1 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #2 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x84 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0xc] + mov r1, #3 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r5, #0 + bl FUN_020239C0 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + mov r1, #6 + mov r3, #5 + bl FUN_0200AD38 + ldr r0, [sp, #0xc] + mov r1, #5 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r2, [sp, #0x18] + add r0, r7, #0 + mov r3, #0x94 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x1c] + mov r1, #0 + add r2, r5, #0 + bl FUN_0200ABC0 + ldr r0, [sp, #0xc] + mov r1, #4 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r2, [sp, #0x18] + add r0, r7, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + bl FUN_020269A0 + add r1, r0, #0 + ldr r0, [sp, #0xc] + add r1, #0x14 + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x11 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r7, #0 + add r2, r4, #0 + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r5, #0 + mov r6, #0x27 +_0224D4D0: + ldr r0, [sp, #0xc] + add r1, r5, #6 + add r2, r4, #0 + bl FUN_0200A8E0 + str r6, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r7, #0 + mov r1, #0 + add r2, r4, #0 + mov r3, #2 + bl FUN_0201BD84 + add r5, r5, #1 + add r6, #0x10 + cmp r5, #7 + blt _0224D4D0 + mov r0, #0 + ldr r6, _0224D568 ; =0x02251318 + str r0, [sp, #0x14] + mov r5, #0x27 +_0224D500: + ldr r0, [sp, #0x10] + ldr r1, [r6] + blx r1 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r1, #6 + ldr r0, [sp, #0x1c] + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0xc] + mov r1, #0xd + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x18] + add r2, r4, #0 + bl FUN_0200B7B8 + str r5, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r2, [sp, #0x18] + add r0, r7, #0 + mov r1, #0 + mov r3, #0x94 + bl FUN_0201BD84 + ldr r0, [sp, #0x14] + add r6, r6, #4 + add r0, r0, #1 + add r5, #0x10 + str r0, [sp, #0x14] + cmp r0, #7 + blt _0224D500 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x18] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_0200AB18 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D568: .word 0x02251318 + thumb_func_end MOD18_0224D364 + + thumb_func_start MOD18_0224D56C +MOD18_0224D56C: ; 0x0224D56C + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + ldr r1, [r4] + cmp r1, #0 + beq _0224D596 + ldr r0, [r4, #4] + blx r1 +_0224D596: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 + ldr r0, _0224D5B0 ; =0x022513FC + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + str r2, [r0] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224D5B0: .word 0x022513FC + thumb_func_end MOD18_0224D56C + + thumb_func_start MOD18_0224D5B4 +MOD18_0224D5B4: ; 0x0224D5B4 + push {r3, lr} + ldr r2, _0224D5C8 ; =0x021C48B8 + ldr r3, [r2, #0x48] + mov r2, #3 + tst r2, r3 + beq _0224D5C4 + bl MOD18_0224D56C +_0224D5C4: + pop {r3, pc} + nop +_0224D5C8: .word 0x021C48B8 + thumb_func_end MOD18_0224D5B4 + + thumb_func_start MOD18_0224D5CC +MOD18_0224D5CC: ; 0x0224D5CC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp, #0x14] + mov r0, #4 + mov r1, #0x2c + add r5, r2, #0 + add r6, r3, #0 + bl FUN_02016998 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x2c + bl MI_CpuFill8 + str r5, [r4] + add r1, r4, #0 + str r6, [r4, #4] + mov r0, #2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, #8 + mov r2, #3 + mov r3, #4 + bl FUN_02019064 + add r0, r4, #0 + ldr r2, _0224D684 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _0224D688 ; =0x00000245 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r5, r0, #0 + add r0, r4, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x30] + cmp r0, #0 + beq _0224D644 + ldr r0, _0224D68C ; =0x022513FC + ldr r0, [r0] + ldr r3, [r0, #0xc] + b _0224D64A +_0224D644: + ldr r0, _0224D68C ; =0x022513FC + ldr r0, [r0] + ldr r3, [r0, #0x10] +_0224D64A: + add r0, r4, #0 + ldr r2, [sp, #0x14] + add r0, #8 + add r1, r5, #0 + bl MOD18_0224D364 + add r0, r4, #0 + add r0, #8 + bl FUN_02019220 + ldr r0, _0224D690 ; =0x000005FD + bl FUN_020054C8 + ldr r0, _0224D694 ; =MOD18_0224D5B4 + add r1, r4, #0 + mov r2, #0xa + bl FUN_0200CA44 + ldr r1, _0224D68C ; =0x022513FC + ldr r2, [r1] + str r0, [r2, #4] + ldr r0, [r1] + str r4, [r0] + add r0, r5, #0 + bl FUN_0200A8B8 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D684: .word 0x000003D9 +_0224D688: .word 0x00000245 +_0224D68C: .word 0x022513FC +_0224D690: .word 0x000005FD +_0224D694: .word MOD18_0224D5B4 + thumb_func_end MOD18_0224D5CC + + thumb_func_start MOD18_0224D698 +MOD18_0224D698: ; 0x0224D698 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + bl FUN_02025960 + add r4, r0, #0 + ldr r0, _0224D6FC ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #8] + bl FUN_02029FC8 + bl FUN_0202A1B8 + add r6, r0, #0 + mov r0, #4 + add r1, r4, #1 + bl FUN_02016998 + mov r1, #0 + add r2, r4, #1 + add r5, r0, #0 + bl MI_CpuFill8 + ldr r0, _0224D700 ; =0x000F423F + strb r7, [r5] + cmp r6, r0 + blt _0224D6CE + add r6, r0, #0 +_0224D6CE: + ldr r0, _0224D6FC ; =0x022513FC + add r1, r6, #0 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020268E8 + ldr r0, _0224D6FC ; =0x022513FC + add r1, r5, #1 + ldr r0, [r0] + add r2, r4, #0 + ldr r0, [r0, #0xc] + bl MI_CpuCopy8 + mov r0, #0x51 + add r1, r5, #0 + add r2, r4, #1 + bl FUN_02030ADC + add r0, r5, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D6FC: .word 0x022513FC +_0224D700: .word 0x000F423F + thumb_func_end MOD18_0224D698 + + thumb_func_start MOD18_0224D704 +MOD18_0224D704: ; 0x0224D704 + push {r3, lr} + ldr r0, _0224D72C ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #8] + bl FUN_02029FC8 + bl FUN_0202A1B8 + add r1, r0, #0 + ldr r0, _0224D730 ; =0x000F423F + cmp r1, r0 + blt _0224D71E + add r1, r0, #0 +_0224D71E: + ldr r0, _0224D72C ; =0x022513FC + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl FUN_020268E8 + pop {r3, pc} + nop +_0224D72C: .word 0x022513FC +_0224D730: .word 0x000F423F + thumb_func_end MOD18_0224D704 + + thumb_func_start MOD18_0224D734 +MOD18_0224D734: ; 0x0224D734 + add r3, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + ldr r3, _0224D740 ; =0x02030BC5 + mov r0, #0x52 + bx r3 + .align 2, 0 +_0224D740: .word 0x02030BC5 + thumb_func_end MOD18_0224D734 + + thumb_func_start MOD18_0224D744 +MOD18_0224D744: ; 0x0224D744 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + bl FUN_02031190 + ldrb r1, [r4] + cmp r1, r0 + bne _0224D76C + ldr r1, _0224D770 ; =0x022513FC + add r0, r4, #1 + ldr r1, [r1] + sub r2, r5, #1 + ldr r1, [r1, #0x10] + bl MI_CpuCopy8 + ldr r0, _0224D770 ; =0x022513FC + mov r1, #1 + ldr r0, [r0] + add r0, #0x2c + strb r1, [r0] +_0224D76C: + pop {r3, r4, r5, pc} + nop +_0224D770: .word 0x022513FC + thumb_func_end MOD18_0224D744 + + thumb_func_start MOD18_0224D774 +MOD18_0224D774: ; 0x0224D774 + ldr r0, _0224D780 ; =0x022513FC + ldr r0, [r0] + add r0, #0x2c + ldrb r0, [r0] + bx lr + nop +_0224D780: .word 0x022513FC + thumb_func_end MOD18_0224D774 + + thumb_func_start MOD18_0224D784 +MOD18_0224D784: ; 0x0224D784 + ldr r0, _0224D790 ; =0x022513FC + mov r1, #0 + ldr r0, [r0] + add r0, #0x2c + strb r1, [r0] + bx lr + .align 2, 0 +_0224D790: .word 0x022513FC + thumb_func_end MOD18_0224D784 + + thumb_func_start MOD18_0224D794 +MOD18_0224D794: ; 0x0224D794 + ldr r3, _0224D798 ; =0x0204F7FD + bx r3 + .align 2, 0 +_0224D798: .word 0x0204F7FD + thumb_func_end MOD18_0224D794 + + thumb_func_start MOD18_0224D79C +MOD18_0224D79C: ; 0x0224D79C + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + add r0, r5, #0 + sub r0, #0x20 + lsl r1, r0, #2 + ldr r0, _0224D808 ; =0x02251318 + cmp r5, #0x20 + ldr r4, [r0, r1] + bge _0224D7B4 + bl ErrorHandling +_0224D7B4: + cmp r5, #0x2d + ble _0224D7BC + bl ErrorHandling +_0224D7BC: + bl FUN_0204F7E4 + bl MOD18_0223D658 + ldr r1, _0224D80C ; =0x00000245 + mov r2, #1 + bl MOD18_0224DB80 + mov r0, #4 + bl FUN_02025964 + add r6, r0, #0 + bl FUN_02025960 + add r2, r0, #0 + add r0, r7, #0 + add r1, r6, #0 + bl MI_CpuCopy8 + add r0, r6, #0 + blx r4 + add r4, r0, #0 + add r0, r6, #0 + bl FUN_02016A18 + bl MOD18_0223D658 + add r1, r4, #0 + bl MOD18_0224DEC8 + bl MOD18_0223D658 + ldr r3, _0224D810 ; =MOD18_0224D794 + add r1, r5, #0 + mov r2, #1 + bl MOD18_0224DCB8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224D808: .word 0x02251318 +_0224D80C: .word 0x00000245 +_0224D810: .word MOD18_0224D794 + thumb_func_end MOD18_0224D79C + + thumb_func_start MOD18_0224D814 +MOD18_0224D814: ; 0x0224D814 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0xc] + ldr r0, [sp, #0x40] + str r1, [sp, #0x10] + str r0, [sp, #0x40] + mov r0, #4 + add r5, r2, #0 + str r3, [sp, #0x14] + bl FUN_0200AA80 + add r7, r0, #0 + mov r0, #0x28 + mov r1, #4 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x28 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r7, #0 + mov r1, #1 + add r2, r5, #0 + bl FUN_0200ABC0 + ldr r0, [sp, #0x10] + mov r1, #0xc + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #1 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r6, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + mov r1, #0xd + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x12 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x14] + bl FUN_020269CC + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + mov r1, #6 + str r0, [sp, #4] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + mov r1, #0xe + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r0, #0x12 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r6, #0 + mov r3, #0x66 + str r1, [sp, #8] + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + mov r1, #0xf + add r2, r4, #0 + bl FUN_0200A8E0 + mov r0, #0x34 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + ldr r0, [sp, #0xc] + add r2, r4, #0 + mov r3, #2 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r5, #0 + str r5, [sp, #0x20] +_0224D8FA: + ldr r0, [sp, #0x40] + ldr r2, [sp, #0x20] + mov r1, #4 + bl FUN_02025CD8 + str r0, [sp, #0x24] + cmp r0, #0 + beq _0224D994 + ldr r2, [sp, #0x24] + add r0, r7, #0 + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [sp, #0x10] + mov r1, #0x10 + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + str r0, [sp, #0x1c] + add r0, #0x45 + str r0, [sp, #0x1c] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #0 + add r2, r6, #0 + mov r3, #2 + bl FUN_0201BD84 + ldr r0, [sp, #0x24] + bl FUN_020239C0 + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + mov r1, #5 + str r0, [sp, #4] + add r0, r7, #0 + add r3, r1, #0 + bl FUN_0200AD38 + ldr r0, [sp, #0x10] + mov r1, #0x11 + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r7, #0 + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #0x1c] + mov r1, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r2, r6, #0 + mov r3, #0x66 + bl FUN_0201BD84 + ldr r0, [sp, #0x24] + bl FUN_02016A18 + b _0224D9DE +_0224D994: + ldr r0, [sp, #0x10] + mov r1, #0x33 + add r2, r4, #0 + bl FUN_0200A8E0 + add r0, r5, #0 + str r0, [sp, #0x18] + add r0, #0x45 + str r0, [sp, #0x18] + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #0 + add r2, r4, #0 + mov r3, #2 + bl FUN_0201BD84 + ldr r0, [sp, #0x10] + mov r1, #0x34 + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0x18] + mov r1, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + add r2, r4, #0 + mov r3, #0x66 + bl FUN_0201BD84 +_0224D9DE: + ldr r0, [sp, #0x20] + add r5, #0x11 + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blt _0224D8FA + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200AB18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224D814 + + thumb_func_start MOD18_0224DA00 +MOD18_0224DA00: ; 0x0224DA00 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r7, r0, #0 + str r1, [sp, #0x14] + mov r0, #4 + mov r1, #0x2c + add r6, r2, #0 + add r4, r3, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x2c + add r5, r0, #0 + bl MI_CpuFill8 + add r1, r5, #0 + ldr r0, [sp, #0x30] + str r4, [r5] + str r0, [r5, #4] + mov r0, #2 + str r0, [sp] + mov r0, #0x18 + str r0, [sp, #4] + mov r0, #0x13 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + add r0, r7, #0 + add r1, #8 + mov r2, #3 + mov r3, #4 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224DA9C ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r2, #0x91 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #4 + bl FUN_0200A86C + add r4, r0, #0 + add r0, r5, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + ldr r3, _0224DAA0 ; =0x022513FC + str r6, [sp] + ldr r3, [r3] + ldr r2, [sp, #0x14] + ldr r3, [r3, #0xc] + add r0, #8 + add r1, r4, #0 + bl MOD18_0224D814 + ldr r0, _0224DAA4 ; =0x000005FD + bl FUN_020054C8 + add r0, r5, #0 + add r0, #8 + bl FUN_02019220 + add r0, r4, #0 + bl FUN_0200A8B8 + add r0, r5, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224DA9C: .word 0x000003D9 +_0224DAA0: .word 0x022513FC +_0224DAA4: .word 0x000005FD + thumb_func_end MOD18_0224DA00 + + thumb_func_start MOD18_0224DAA8 +MOD18_0224DAA8: ; 0x0224DAA8 + push {r4, lr} + add r4, r0, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + ldr r1, [r4] + cmp r1, #0 + beq _0224DACE + ldr r0, [r4, #4] + blx r1 +_0224DACE: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DAA8 + + thumb_func_start MOD18_0224DAD8 +MOD18_0224DAD8: ; 0x0224DAD8 + ldr r0, _0224DADC ; =0x02250674 + bx lr + .align 2, 0 +_0224DADC: .word 0x02250674 + thumb_func_end MOD18_0224DAD8 + + thumb_func_start MOD18_0224DAE0 +MOD18_0224DAE0: ; 0x0224DAE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #0x44 + add r7, r2, #0 + str r3, [sp, #4] + ldr r6, [sp, #0x20] + bl FUN_02016998 + mov r1, #0 + mov r2, #0x44 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r0, [sp, #0x20] + cmp r0, #0 + bne _0224DB08 + mov r6, #0xe6 +_0224DB08: + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020219F4 + str r0, [r4] + add r0, r6, #0 + add r1, r5, #0 + bl FUN_020219F4 + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_0200AA80 + str r0, [r4, #0x28] + ldr r0, [sp] + ldr r2, [sp] + str r0, [r4, #0x2c] + mov r0, #1 + mov r1, #0x1a + add r3, r5, #0 + bl FUN_0200A86C + str r0, [r4, #0x24] + str r5, [r4, #0x34] + add r0, r4, #0 + str r7, [r4, #0x18] + add r0, #8 + bl FUN_0201901C + ldr r1, [r4, #0x40] + mov r0, #1 + bic r1, r0 + mov r0, #2 + bic r1, r0 + str r1, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [sp, #4] + str r0, [r4, #0x38] + add r0, r4, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224DAE0 + + thumb_func_start MOD18_0224DB5C +MOD18_0224DB5C: ; 0x0224DB5C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02021A20 + ldr r0, [r4, #4] + bl FUN_02021A20 + ldr r0, [r4, #0x28] + bl FUN_0200AB18 + ldr r0, [r4, #0x24] + bl FUN_0200A8B8 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + thumb_func_end MOD18_0224DB5C + + thumb_func_start MOD18_0224DB80 +MOD18_0224DB80: ; 0x0224DB80 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, r4 + beq _0224DBAC + str r4, [r5, #0x2c] + ldr r0, [r5, #0x24] + bl FUN_0200A8B8 + ldr r3, [r5, #0x34] + add r0, r6, #0 + mov r1, #0x1a + add r2, r4, #0 + bl FUN_0200A86C + str r0, [r5, #0x24] + cmp r0, #0 + bne _0224DBAC + bl ErrorHandling +_0224DBAC: + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DB80 + + thumb_func_start MOD18_0224DBB0 +MOD18_0224DBB0: ; 0x0224DBB0 + str r1, [r0, #0x18] + bx lr + thumb_func_end MOD18_0224DBB0 + + thumb_func_start MOD18_0224DBB4 +MOD18_0224DBB4: ; 0x0224DBB4 + ldr r0, [r0, #0x24] + bx lr + thumb_func_end MOD18_0224DBB4 + + thumb_func_start MOD18_0224DBB8 +MOD18_0224DBB8: ; 0x0224DBB8 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x30] + cmp r0, #8 + bge _0224DBCE + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224DBDE +_0224DBCE: + ldr r0, _0224DBE0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #1 + tst r0, r1 + beq _0224DBDE + add r0, r4, #0 + bl MOD18_0224DD94 +_0224DBDE: + pop {r4, pc} + .align 2, 0 +_0224DBE0: .word 0x021C48B8 + thumb_func_end MOD18_0224DBB8 + + thumb_func_start MOD18_0224DBE4 +MOD18_0224DBE4: ; 0x0224DBE4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x40] + ldr r2, [r4] + lsl r0, r0, #0x1e + asr r0, r0, #0x1f + beq _0224DC04 + ldr r0, [r4, #0x28] + ldr r1, [r4, #4] + bl FUN_0200B7B8 + ldr r1, [r4, #0x40] + mov r0, #2 + ldr r2, [r4, #4] + bic r1, r0 + str r1, [r4, #0x40] +_0224DC04: + add r0, r2, #0 + pop {r4, pc} + thumb_func_end MOD18_0224DBE4 + + thumb_func_start MOD18_0224DC08 +MOD18_0224DC08: ; 0x0224DC08 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD18_0224DD1C + bl MOD18_0223D688 + add r0, r5, #0 + add r0, #8 + bl FUN_02019048 + cmp r0, #0 + bne _0224DC4C + mov r0, #0x13 + str r0, [sp] + mov r0, #0x1b + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + ldr r0, _0224DCAC ; =0x0000012D + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x18] + add r1, #8 + mov r2, #3 + mov r3, #2 + bl FUN_02019064 +_0224DC4C: + add r0, r5, #0 + add r0, #8 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + ldr r2, _0224DCB0 ; =0x000001E2 + add r0, #8 + mov r1, #1 + mov r3, #0xa + bl FUN_0200D0BC + cmp r4, #0 + beq _0224DC74 + ldr r0, _0224DCB4 ; =MOD18_0224DBB8 + add r1, r5, #0 + mov r2, #0x64 + bl FUN_0200CA44 + str r0, [r5, #0x20] +_0224DC74: + ldr r1, [r5, #0x40] + mov r0, #1 + bic r1, r0 + mov r0, #1 + orr r1, r0 + mov r0, #4 + bic r1, r0 + add r0, r5, #0 + str r1, [r5, #0x40] + bl MOD18_0224DBE4 + mov r3, #0 + str r3, [sp] + add r2, r0, #0 + ldr r0, [r5, #0x38] + mov r1, #1 + str r0, [sp, #4] + add r0, r5, #0 + str r3, [sp, #8] + add r0, #8 + bl FUN_0201BD84 + str r0, [r5, #0x30] + str r6, [r5, #0x1c] + str r7, [r5, #0x3c] + ldr r0, [r5, #0x30] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224DCAC: .word 0x0000012D +_0224DCB0: .word 0x000001E2 +_0224DCB4: .word MOD18_0224DBB8 + thumb_func_end MOD18_0224DC08 + + thumb_func_start MOD18_0224DCB8 +MOD18_0224DCB8: ; 0x0224DCB8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + ldr r0, [r5, #0x24] + ldr r2, [r5] + add r6, r3, #0 + bl FUN_0200A8E0 + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + mov r3, #0 + bl MOD18_0224DC08 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DCB8 + + thumb_func_start MOD18_0224DCD8 +MOD18_0224DCD8: ; 0x0224DCD8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r4, [r5, #0x38] + mov r6, #0 + str r6, [r5, #0x38] + bl MOD18_0224DCB8 + mov r1, #8 + str r1, [r5, #0x30] + str r4, [r5, #0x38] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DCD8 + + thumb_func_start MOD18_0224DCF0 +MOD18_0224DCF0: ; 0x0224DCF0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r2, #0 + ldr r0, [r5, #0x24] + ldr r2, [r5] + add r6, r3, #0 + bl FUN_0200A8E0 + ldr r3, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + add r2, r6, #0 + bl MOD18_0224DC08 + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224DCF0 + + thumb_func_start MOD18_0224DD10 +MOD18_0224DD10: ; 0x0224DD10 + ldr r2, [r0, #0x40] + mov r1, #4 + orr r1, r2 + str r1, [r0, #0x40] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224DD10 + + thumb_func_start MOD18_0224DD1C +MOD18_0224DD1C: ; 0x0224DD1C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldr r1, [r5, #0x40] + lsl r0, r1, #0x1f + asr r0, r0, #0x1f + beq _0224DD92 + mov r0, #1 + bic r1, r0 + str r1, [r5, #0x40] + ldr r0, [r5, #0x30] + cmp r0, #8 + bge _0224DD4C + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0224DD4C + ldr r0, [r5, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C +_0224DD4C: + cmp r4, #1 + bne _0224DD6C + add r0, r5, #0 + add r0, #8 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r5, #0 + add r0, #8 + bl FUN_02019570 + add r0, r5, #0 + add r0, #8 + bl FUN_02019178 + b _0224DD76 +_0224DD6C: + add r0, r5, #0 + add r0, #8 + mov r1, #1 + bl FUN_0200D0E0 +_0224DD76: + mov r0, #8 + str r0, [r5, #0x30] + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0224DD88 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r5, #0x20] +_0224DD88: + ldr r1, [r5, #0x1c] + cmp r1, #0 + beq _0224DD92 + ldr r0, [r5, #0x3c] + blx r1 +_0224DD92: + pop {r3, r4, r5, pc} + thumb_func_end MOD18_0224DD1C + + thumb_func_start MOD18_0224DD94 +MOD18_0224DD94: ; 0x0224DD94 + ldr r3, _0224DD9C ; =MOD18_0224DD1C + mov r1, #1 + bx r3 + nop +_0224DD9C: .word MOD18_0224DD1C + thumb_func_end MOD18_0224DD94 + + thumb_func_start MOD18_0224DDA0 +MOD18_0224DDA0: ; 0x0224DDA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #1 + bl FUN_0200ABC0 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDA0 + + thumb_func_start MOD18_0224DDB8 +MOD18_0224DDB8: ; 0x0224DDB8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #0 + bl FUN_0200ABC0 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDB8 + + thumb_func_start MOD18_0224DDD0 +MOD18_0224DDD0: ; 0x0224DDD0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #2 + bl FUN_0200B19C + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDD0 + + thumb_func_start MOD18_0224DDE8 +MOD18_0224DDE8: ; 0x0224DDE8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #3 + bl FUN_0200B1D4 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DDE8 + + thumb_func_start MOD18_0224DE00 +MOD18_0224DE00: ; 0x0224DE00 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #5 + bl FUN_0200B2E0 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE00 + + thumb_func_start MOD18_0224DE18 +MOD18_0224DE18: ; 0x0224DE18 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #5 + bl FUN_0200B318 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE18 + + thumb_func_start MOD18_0224DE30 +MOD18_0224DE30: ; 0x0224DE30 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B318 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE30 + + thumb_func_start MOD18_0224DE44 +MOD18_0224DE44: ; 0x0224DE44 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + add r2, r1, #0 + mov r1, #2 + bl FUN_0200B350 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DE44 + + thumb_func_start MOD18_0224DE5C +MOD18_0224DE5C: ; 0x0224DE5C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r3, #1 + str r3, [sp, #4] + ldr r0, [r4, #0x28] + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + thumb_func_end MOD18_0224DE5C + + thumb_func_start MOD18_0224DE7C +MOD18_0224DE7C: ; 0x0224DE7C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r2, r1, #0 + ldr r0, [r4, #0x28] + mov r1, #6 + mov r3, #2 + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DE7C + + thumb_func_start MOD18_0224DEA4 +MOD18_0224DEA4: ; 0x0224DEA4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x28] + mov r3, #2 + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DEA4 + + thumb_func_start MOD18_0224DEC8 +MOD18_0224DEC8: ; 0x0224DEC8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + add r2, r1, #0 + str r0, [sp, #4] + mov r1, #6 + ldr r0, [r4, #0x28] + add r3, r1, #0 + bl FUN_0200AD38 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + add sp, #8 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DEC8 + + thumb_func_start MOD18_0224DEF0 +MOD18_0224DEF0: ; 0x0224DEF0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B164 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DEF0 + + thumb_func_start MOD18_0224DF04 +MOD18_0224DF04: ; 0x0224DF04 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B1D4 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF04 + + thumb_func_start MOD18_0224DF18 +MOD18_0224DF18: ; 0x0224DF18 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B350 + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF18 + + thumb_func_start MOD18_0224DF2C +MOD18_0224DF2C: ; 0x0224DF2C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B19C + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF2C + + thumb_func_start MOD18_0224DF40 +MOD18_0224DF40: ; 0x0224DF40 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x28] + bl FUN_0200B20C + ldr r1, [r4, #0x40] + mov r0, #2 + orr r0, r1 + str r0, [r4, #0x40] + pop {r4, pc} + thumb_func_end MOD18_0224DF40 + + thumb_func_start MOD18_0224DF54 +MOD18_0224DF54: ; 0x0224DF54 + ldr r3, _0224DF5C ; =0x0200B7A9 + ldr r0, [r0, #0x28] + bx r3 + nop +_0224DF5C: .word 0x0200B7A9 + thumb_func_end MOD18_0224DF54 + + thumb_func_start MOD18_0224DF60 +MOD18_0224DF60: ; 0x0224DF60 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #8 + bge _0224DF84 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + beq _0224DF84 + ldr r0, [r4, #0x30] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD7C + mov r0, #8 + str r0, [r4, #0x30] +_0224DF84: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224DF60 + + thumb_func_start MOD18_0224DF88 +MOD18_0224DF88: ; 0x0224DF88 + push {r3, lr} + ldr r0, [r0, #0x30] + cmp r0, #8 + bne _0224DF94 + mov r0, #0 + pop {r3, pc} +_0224DF94: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224DF88 + + thumb_func_start MOD18_0224DFA0 +MOD18_0224DFA0: ; 0x0224DFA0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x30] + cmp r0, #8 + bge _0224DFBA + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224DFBA + mov r0, #8 + str r0, [r4, #0x30] +_0224DFBA: + pop {r4, pc} + thumb_func_end MOD18_0224DFA0 + + thumb_func_start MOD18_0224DFBC +MOD18_0224DFBC: ; 0x0224DFBC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFC8 ; =0x02250694 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFC8: .word 0x02250694 + thumb_func_end MOD18_0224DFBC + + thumb_func_start MOD18_0224DFCC +MOD18_0224DFCC: ; 0x0224DFCC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFD8 ; =0x02250695 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFD8: .word 0x02250695 + thumb_func_end MOD18_0224DFCC + + thumb_func_start MOD18_0224DFDC +MOD18_0224DFDC: ; 0x0224DFDC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFE8 ; =0x02250696 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFE8: .word 0x02250696 + thumb_func_end MOD18_0224DFDC + + thumb_func_start MOD18_0224DFEC +MOD18_0224DFEC: ; 0x0224DFEC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224DFF8 ; =0x02250748 + ldrb r0, [r0, r1] + bx lr + nop +_0224DFF8: .word 0x02250748 + thumb_func_end MOD18_0224DFEC + + thumb_func_start MOD18_0224DFFC +MOD18_0224DFFC: ; 0x0224DFFC + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224E008 ; =0x02250749 + ldrb r0, [r0, r1] + bx lr + nop +_0224E008: .word 0x02250749 + thumb_func_end MOD18_0224DFFC + + thumb_func_start MOD18_0224E00C +MOD18_0224E00C: ; 0x0224E00C + lsl r1, r0, #1 + add r1, r0, r1 + ldr r0, _0224E018 ; =0x0225074A + ldrb r0, [r0, r1] + bx lr + nop +_0224E018: .word 0x0225074A + thumb_func_end MOD18_0224E00C + + thumb_func_start MOD18_0224E01C +MOD18_0224E01C: ; 0x0224E01C + ldr r3, _0224E024 ; =0x02016999 + mov r0, #4 + mov r1, #0x44 + bx r3 + .align 2, 0 +_0224E024: .word 0x02016999 + thumb_func_end MOD18_0224E01C + + thumb_func_start MOD18_0224E028 +MOD18_0224E028: ; 0x0224E028 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + str r1, [r0] + mov r5, #0 + add r4, #0x38 + strb r5, [r4] + str r2, [r0, #0x30] + str r3, [r0, #0x34] + add r0, #0x40 + strh r5, [r0] + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r1, #8] + ldr r2, _0224E058 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0224E058: .word 0x000003D9 + thumb_func_end MOD18_0224E028 + + thumb_func_start MOD18_0224E05C +MOD18_0224E05C: ; 0x0224E05C + ldr r3, _0224E060 ; =0x02016A19 + bx r3 + .align 2, 0 +_0224E060: .word 0x02016A19 + thumb_func_end MOD18_0224E05C + + thumb_func_start MOD18_0224E064 +MOD18_0224E064: ; 0x0224E064 + ldr r0, [r0, #0x3c] + bx lr + thumb_func_end MOD18_0224E064 + + thumb_func_start MOD18_0224E068 +MOD18_0224E068: ; 0x0224E068 + push {r3, lr} + add r1, r0, #0 + add r1, #0x38 + ldrb r1, [r1] + cmp r1, #0 + beq _0224E07E + cmp r1, #1 + beq _0224E084 + cmp r1, #2 + beq _0224E08A + b _0224E09A +_0224E07E: + bl MOD18_0224E0CC + b _0224E09A +_0224E084: + bl MOD18_0224E210 + b _0224E09A +_0224E08A: + add r1, r0, #0 + mov r2, #0 + add r1, #0x38 + strb r2, [r1] + bl MOD18_0224E26C + mov r0, #1 + pop {r3, pc} +_0224E09A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224E068 + + thumb_func_start MOD18_0224E0A0 +MOD18_0224E0A0: ; 0x0224E0A0 + push {r4, lr} + sub sp, #0x10 + ldr r3, _0224E0C8 ; =0x022507B0 + add r2, sp, #0 + add r4, r1, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + bl MOD18_0223D668 + lsl r2, r4, #2 + add r1, sp, #0 + ldr r1, [r1, r2] + mov r2, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0224E0C8: .word 0x022507B0 + thumb_func_end MOD18_0224E0A0 + + thumb_func_start MOD18_0224E0CC +MOD18_0224E0CC: ; 0x0224E0CC + push {r4, r5, r6, r7, lr} + sub sp, #0x44 + add r5, r0, #0 + mov r0, #4 + add r1, r0, #0 + bl FUN_02012838 + str r0, [r5, #0x24] + mov r2, #3 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E1F4 ; =0x000002CD + add r1, r5, #4 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + mov r3, #1 + add r1, r5, #0 + str r3, [sp] + mov r0, #7 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E1F8 ; =0x000002BF + add r1, #0x14 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + ldr r2, _0224E1FC ; =0x000003D9 + add r0, r5, #4 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + ldr r2, _0224E1FC ; =0x000003D9 + add r0, #0x14 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r3, _0224E200 ; =0x022507C0 + add r2, sp, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r2, _0224E204 ; =0x00000242 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + add r7, r0, #0 + add r0, r5, #0 + add r0, #0x14 + mov r1, #0xf + bl FUN_02019620 + add r0, r7, #0 + mov r1, #0 + bl FUN_0200A914 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x14 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + mov r6, #0 + add r4, sp, #0x14 +_0224E186: + ldr r0, [r5, #0x24] + ldr r2, [r4] + add r1, r7, #0 + add r3, r6, #0 + bl FUN_02012880 + add r6, r6, #1 + add r4, r4, #4 + cmp r6, #4 + blt _0224E186 + add r0, r7, #0 + bl FUN_0200A8B8 + ldr r4, _0224E208 ; =0x022507D0 + add r3, sp, #0x24 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + mov r3, #4 + add r0, sp, #0x14 + strh r3, [r0, #0x20] + strh r3, [r0, #0x22] + ldr r0, [r5, #0x24] + str r0, [sp, #0x24] + add r0, r5, #4 + str r0, [sp, #0x30] + ldr r0, _0224E20C ; =MOD18_0224E0A0 + str r0, [sp, #0x28] + add r0, r2, #0 + ldr r1, [r5, #0x30] + ldr r2, [r5, #0x34] + ldrh r1, [r1] + ldrh r2, [r2] + bl FUN_020010A8 + str r0, [r5, #0x28] + add r0, r5, #4 + bl FUN_020191D0 + add r0, r5, #0 + add r0, #0x14 + bl FUN_020191D0 + mov r0, #1 + add r5, #0x38 + strb r0, [r5] + add sp, #0x44 + pop {r4, r5, r6, r7, pc} + nop +_0224E1F4: .word 0x000002CD +_0224E1F8: .word 0x000002BF +_0224E1FC: .word 0x000003D9 +_0224E200: .word 0x022507C0 +_0224E204: .word 0x00000242 +_0224E208: .word 0x022507D0 +_0224E20C: .word MOD18_0224E0A0 + thumb_func_end MOD18_0224E0CC + + thumb_func_start MOD18_0224E210 +MOD18_0224E210: ; 0x0224E210 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x28] + bl FUN_02001204 + add r4, r0, #0 + add r0, r5, #0 + bl MOD18_0224E73C + cmp r4, #3 + bne _0224E22A + mov r4, #1 + mvn r4, r4 +_0224E22A: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0224E23A + add r0, r0, #1 + cmp r4, r0 + bne _0224E250 + pop {r3, r4, r5, pc} +_0224E23A: + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + str r4, [r5, #0x3c] + mov r0, #2 + add r5, #0x38 + strb r0, [r5] + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, pc} +_0224E250: + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + str r4, [r5, #0x3c] + mov r0, #2 + add r5, #0x38 + strb r0, [r5] + ldr r0, _0224E268 ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, pc} + nop +_0224E268: .word 0x000005DC + thumb_func_end MOD18_0224E210 + + thumb_func_start MOD18_0224E26C +MOD18_0224E26C: ; 0x0224E26C + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D668 + bl MOD18_0224DD94 + add r0, r4, #0 + add r0, #0x14 + mov r1, #1 + bl FUN_0200CCF8 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x30] + ldr r2, [r4, #0x34] + bl FUN_02001300 + add r0, r4, #4 + mov r1, #1 + bl FUN_0200CCF8 + ldrb r1, [r4, #8] + ldr r0, [r4, #4] + bl FUN_0201AC68 + add r0, r4, #4 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02019178 + ldr r0, [r4, #0x24] + bl FUN_02012870 + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224E26C + + thumb_func_start MOD18_0224E2B4 +MOD18_0224E2B4: ; 0x0224E2B4 + push {r3, lr} + mov r2, #1 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + beq _0224E2CC + add r1, r2, #0 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, pc} +_0224E2CC: + mov r1, #2 + mov r2, #0xf + add r3, r1, #0 + bl FUN_020013E8 + pop {r3, pc} + thumb_func_end MOD18_0224E2B4 + + thumb_func_start MOD18_0224E2D8 +MOD18_0224E2D8: ; 0x0224E2D8 + ldr r3, _0224E2E0 ; =0x02016999 + mov r0, #4 + mov r1, #0x4c + bx r3 + .align 2, 0 +_0224E2E0: .word 0x02016999 + thumb_func_end MOD18_0224E2D8 + + thumb_func_start MOD18_0224E2E4 +MOD18_0224E2E4: ; 0x0224E2E4 + push {r3, r4, r5, lr} + sub sp, #8 + add r4, r0, #0 + str r1, [r0] + mov r5, #0 + add r4, #0x42 + strb r5, [r4] + str r5, [r0, #4] + str r2, [r0, #0x38] + str r3, [r0, #0x3c] + mov r0, #2 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r1, #8] + ldr r2, _0224E310 ; =0x000003D9 + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224E310: .word 0x000003D9 + thumb_func_end MOD18_0224E2E4 + + thumb_func_start MOD18_0224E314 +MOD18_0224E314: ; 0x0224E314 + add r3, r0, #0 + add r3, #0x40 + strb r1, [r3] + add r0, #0x41 + strb r2, [r0] + bx lr + thumb_func_end MOD18_0224E314 + + thumb_func_start MOD18_0224E320 +MOD18_0224E320: ; 0x0224E320 + ldr r3, _0224E324 ; =0x02016A19 + bx r3 + .align 2, 0 +_0224E324: .word 0x02016A19 + thumb_func_end MOD18_0224E320 + + thumb_func_start MOD18_0224E328 +MOD18_0224E328: ; 0x0224E328 + ldr r0, [r0, #0x44] + bx lr + thumb_func_end MOD18_0224E328 + + thumb_func_start MOD18_0224E32C +MOD18_0224E32C: ; 0x0224E32C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x42 + ldrb r1, [r1] + cmp r1, #0 + beq _0224E344 + cmp r1, #1 + beq _0224E34A + cmp r1, #2 + beq _0224E350 + b _0224E35E +_0224E344: + bl MOD18_0224E430 + b _0224E35E +_0224E34A: + bl MOD18_0224E36C + b _0224E35E +_0224E350: + mov r1, #0 + add r4, #0x42 + strb r1, [r4] + bl MOD18_0224E6A8 + mov r0, #1 + pop {r4, pc} +_0224E35E: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0224E368 + bl FUN_0205EC18 +_0224E368: + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD18_0224E32C + + thumb_func_start MOD18_0224E36C +MOD18_0224E36C: ; 0x0224E36C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x2c] + bl MOD18_02244140 + add r6, r0, #0 + ldr r0, [r5, #0x48] + lsr r4, r6, #1 + cmp r0, r4 + bne _0224E384 + mov r4, #1 + mvn r4, r4 +_0224E384: + ldr r0, [r5, #0x2c] + add r1, sp, #0 + ldr r0, [r0, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_02001448 + ldr r0, [r5, #0x2c] + mov r1, #2 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r7, r0, #0 + ldr r0, [r5, #0x2c] + mov r1, #3 + ldr r0, [r0, #0xc] + bl FUN_02001470 + add r3, r0, #0 + add r1, sp, #0 + lsl r2, r7, #0x10 + lsl r3, r3, #0x10 + ldrh r1, [r1, #2] + ldr r0, [r5, #4] + lsr r2, r2, #0x10 + lsr r3, r3, #0x10 + bl MOD18_0224E6F8 + mov r0, #1 + mvn r0, r0 + cmp r6, r0 + beq _0224E3CC + add r0, r0, #1 + cmp r6, r0 + bne _0224E3DC + pop {r3, r4, r5, r6, r7, pc} +_0224E3CC: + str r0, [r5, #0x44] + mov r0, #2 + add r5, #0x42 + strb r0, [r5] + ldr r0, _0224E3EC ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} +_0224E3DC: + str r4, [r5, #0x44] + mov r0, #2 + add r5, #0x42 + strb r0, [r5] + ldr r0, _0224E3EC ; =0x000005DC + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E3EC: .word 0x000005DC + thumb_func_end MOD18_0224E36C + + thumb_func_start MOD18_0224E3F0 +MOD18_0224E3F0: ; 0x0224E3F0 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + mov r1, #0x13 + bl FUN_02001470 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #2 + bl FUN_02001470 + lsr r1, r4, #1 + sub r0, r0, #1 + cmp r1, r0 + bne _0224E412 + ldr r4, _0224E42C ; =0x00000116 + b _0224E41C +_0224E412: + add r0, r6, #0 + bl FUN_02025DC8 + add r4, r0, #0 + add r4, #0x8a +_0224E41C: + bl MOD18_0223D678 + mov r2, #0 + add r1, r4, #0 + add r3, r2, #0 + bl MOD18_0224DCD8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224E42C: .word 0x00000116 + thumb_func_end MOD18_0224E3F0 + + thumb_func_start MOD18_0224E430 +MOD18_0224E430: ; 0x0224E430 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x50 + add r5, r0, #0 + ldr r0, [r5] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r7, r0, #0 + bl FUN_02025DB0 + str r0, [sp, #0x20] + str r0, [r5, #0x48] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #7 + ble _0224E454 + mov r0, #7 + str r0, [sp, #0x1c] +_0224E454: + ldr r0, [sp, #0x20] + mov r1, #4 + add r0, r0, #1 + bl FUN_02012838 + str r0, [r5, #0x28] + mov r2, #3 + str r2, [sp] + mov r0, #0xc + str r0, [sp, #4] + ldr r0, [sp, #0x1c] + add r1, r5, #0 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E680 ; =0x00000285 + add r1, #8 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r3, #0x13 + ldr r0, [r0, #8] + bl FUN_02019064 + mov r3, #1 + add r1, r5, #0 + str r3, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _0224E684 ; =0x00000265 + add r1, #0x18 + str r0, [sp, #0x10] + ldr r0, [r5] + mov r2, #3 + ldr r0, [r0, #8] + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _0224E688 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + ldr r2, _0224E688 ; =0x000003D9 + add r0, #0x18 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r2, _0224E68C ; =0x00000237 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x18] + ldr r2, _0224E690 ; =0x00000242 + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x24] + add r0, r5, #0 + add r0, #0x18 + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x24] + mov r1, #9 + bl FUN_0200A914 + str r0, [sp, #0x28] + ldr r0, [sp, #0x24] + mov r1, #0xa + bl FUN_0200A914 + str r0, [sp, #0x2c] + mov r0, #6 + mov r1, #4 + bl FUN_020219F4 + mov r1, #0 + add r4, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + ldr r2, [sp, #0x28] + add r0, #0x18 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r0, #4 + bl FUN_0200AA80 + mov r1, #1 + str r1, [sp] + add r2, r5, #0 + str r1, [sp, #4] + add r2, #0x40 + ldrb r2, [r2] + mov r1, #0 + mov r3, #2 + add r6, r0, #0 + bl FUN_0200AD38 + mov r1, #1 + str r1, [sp] + add r2, r5, #0 + str r1, [sp, #4] + add r2, #0x41 + ldrb r2, [r2] + add r0, r6, #0 + mov r3, #2 + bl FUN_0200AD38 + ldr r2, [sp, #0x2c] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0200B7B8 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r5, #0 + add r0, #0x18 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x24] + bl FUN_0200A8B8 + ldr r0, [sp, #0x20] + mov r4, #0 + cmp r0, #0 + ble _0224E5CE + add r6, r4, #0 +_0224E598: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02025DC8 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _0224E5B2 + mov r3, #1 + b _0224E5B4 +_0224E5B2: + mov r3, #0 +_0224E5B4: + lsl r3, r3, #0x18 + lsr r3, r3, #0x18 + ldr r0, [r5, #0x28] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x14] + add r3, r6, r3 + bl FUN_02012880 + ldr r0, [sp, #0x20] + add r4, r4, #1 + add r6, r6, #2 + cmp r4, r0 + blt _0224E598 +_0224E5CE: + lsl r3, r4, #1 + ldr r0, [r5, #0x28] + ldr r1, [sp, #0x18] + ldr r2, _0224E694 ; =0x00000115 + add r3, r3, #1 + bl FUN_02012880 + ldr r0, [sp, #0x18] + bl FUN_0200A8B8 + bl MOD18_0223D678 + ldr r1, _0224E68C ; =0x00000237 + mov r2, #0 + bl MOD18_0224DB80 + ldr r4, _0224E698 ; =0x022507D0 + add r3, sp, #0x30 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, _0224E69C ; =MOD18_0224E2B4 + add r1, sp, #0x30 + str r0, [sp, #0x38] + ldr r0, [sp, #0x20] + mov r3, #4 + add r0, r0, #1 + strh r0, [r1, #0x10] + ldr r0, [sp, #0x1c] + strh r0, [r1, #0x12] + ldr r0, [r5, #0x28] + str r0, [sp, #0x30] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x3c] + ldr r0, _0224E6A0 ; =MOD18_0224E3F0 + str r7, [sp, #0x4c] + str r0, [sp, #0x34] + ldr r0, _0224E6A4 ; =0x02025E21 + str r0, [sp] + str r7, [sp, #4] + mov r0, #1 + str r0, [sp, #8] + add r0, r2, #0 + ldr r1, [r5, #0x38] + ldr r2, [r5, #0x3c] + ldrh r1, [r1] + ldrh r2, [r2] + bl MOD18_02244028 + str r0, [r5, #0x2c] + add r0, r5, #0 + add r0, #8 + bl FUN_020191D0 + add r0, r5, #0 + add r0, #0x18 + bl FUN_020191D0 + mov r0, #4 + bl FUN_0205EB38 + str r0, [r5, #4] + mov r1, #0xc8 + mov r2, #0x1a + mov r3, #0x86 + bl FUN_0205EC48 + mov r1, #0 + ldr r0, [r5, #4] + add r2, r1, #0 + bl FUN_0205EC6C + ldr r0, [r5, #4] + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C + mov r0, #1 + add r5, #0x42 + strb r0, [r5] + add sp, #0x50 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224E680: .word 0x00000285 +_0224E684: .word 0x00000265 +_0224E688: .word 0x000003D9 +_0224E68C: .word 0x00000237 +_0224E690: .word 0x00000242 +_0224E694: .word 0x00000115 +_0224E698: .word 0x022507D0 +_0224E69C: .word MOD18_0224E2B4 +_0224E6A0: .word MOD18_0224E3F0 +_0224E6A4: .word 0x02025E21 + thumb_func_end MOD18_0224E430 + + thumb_func_start MOD18_0224E6A8 +MOD18_0224E6A8: ; 0x0224E6A8 + push {r4, lr} + add r4, r0, #0 + bl MOD18_0223D678 + bl MOD18_0224DD94 + add r0, r4, #0 + add r0, #0x18 + mov r1, #1 + bl FUN_0200CCF8 + ldr r0, [r4, #0x2c] + ldr r1, [r4, #0x38] + ldr r2, [r4, #0x3c] + bl MOD18_02244318 + add r0, r4, #0 + add r0, #8 + mov r1, #1 + bl FUN_0200CCF8 + ldrb r1, [r4, #0xc] + ldr r0, [r4, #8] + bl FUN_0201AC68 + add r0, r4, #0 + add r0, #8 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + ldr r0, [r4, #0x28] + bl FUN_02012870 + ldr r0, [r4, #4] + bl FUN_0205EBEC + pop {r4, pc} + thumb_func_end MOD18_0224E6A8 + + thumb_func_start MOD18_0224E6F8 +MOD18_0224E6F8: ; 0x0224E6F8 + push {r3, r4, r5, r6, r7, lr} + add r4, r2, #0 + add r7, r3, #0 + add r6, r0, #0 + add r5, r1, #0 + cmp r4, r7 + bls _0224E738 + cmp r5, #0 + beq _0224E714 + mov r1, #0 + mov r2, #1 + bl FUN_0205EC6C + b _0224E71C +_0224E714: + mov r1, #0 + add r2, r1, #0 + bl FUN_0205EC6C +_0224E71C: + add r0, r5, r7 + cmp r4, r0 + beq _0224E72E + mov r1, #1 + add r0, r6, #0 + add r2, r1, #0 + bl FUN_0205EC6C + pop {r3, r4, r5, r6, r7, pc} +_0224E72E: + add r0, r6, #0 + mov r1, #1 + mov r2, #0 + bl FUN_0205EC6C +_0224E738: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224E6F8 + + thumb_func_start MOD18_0224E73C +MOD18_0224E73C: ; 0x0224E73C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x40 + ldrh r4, [r0] + add r1, r5, #0 + ldr r0, [r5, #0x28] + add r1, #0x40 + bl FUN_0200143C + add r5, #0x40 + ldrh r0, [r5] + cmp r4, r0 + beq _0224E75C + ldr r0, _0224E760 ; =0x000005DC + bl FUN_020054C8 +_0224E75C: + pop {r3, r4, r5, pc} + nop +_0224E760: .word 0x000005DC + thumb_func_end MOD18_0224E73C + + thumb_func_start MOD18_0224E764 +MOD18_0224E764: ; 0x0224E764 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r1, #0 + add r6, r0, #0 + add r7, r2, #0 + cmp r5, #0 + bne _0224E776 + bl ErrorHandling +_0224E776: + add r4, r7, #0 + add r4, #0x3c + add r0, r5, #0 + bl FUN_0204CA80 + str r0, [r4, #0x18] + add r0, r5, #0 + bl FUN_0204CA90 + str r0, [r4, #0x1c] + ldr r0, [r4, #0x18] + lsl r1, r0, #0xf + mov r0, #1 + lsl r0, r0, #0x14 + add r1, r1, r0 + lsr r0, r0, #8 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + lsl r1, r0, #0xf + mov r0, #0xd + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r6, #0 + add r1, r5, #0 + bl MOD18_0224FAEC + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #8 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + str r0, [r4, #0x10] + mov r0, #0x10 + str r0, [r7, #0x3c] + mov r0, #0xd + str r0, [r4, #4] + ldr r0, [r4, #0x18] + add r0, #0xf + str r0, [r4, #8] + ldr r0, [r4, #0x1c] + add r0, #0xc + str r0, [r4, #0xc] + str r5, [r4, #0x14] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224E764 + + thumb_func_start MOD18_0224E7E4 +MOD18_0224E7E4: ; 0x0224E7E4 + add r2, r0, #0 + ldr r3, _0224E7F0 ; =0x021E7C81 + add r2, #0xa0 + add r0, r1, #0 + ldr r1, [r2] + bx r3 + .align 2, 0 +_0224E7F0: .word 0x021E7C81 + thumb_func_end MOD18_0224E7E4 + + thumb_func_start MOD18_0224E7F4 +MOD18_0224E7F4: ; 0x0224E7F4 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r1, #0x24 + add r4, r0, #0 + mul r4, r1 + add r0, r5, r4 + ldr r0, [r0, #0x5c] + cmp r0, #0 + bne _0224E80A + bl ErrorHandling +_0224E80A: + add r2, r5, r4 + add r2, #0x60 + add r5, #0x3c + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r2!, {r0, r1} + stmia r5!, {r0, r1} + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224E7F4 + + thumb_func_start MOD18_0224E824 +MOD18_0224E824: ; 0x0224E824 + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bhi _0224E93C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E848: ; jump table + .short _0224E858 - _0224E848 - 2 ; case 0 + .short _0224E8B4 - _0224E848 - 2 ; case 1 + .short _0224E8C0 - _0224E848 - 2 ; case 2 + .short _0224E8CC - _0224E848 - 2 ; case 3 + .short _0224E8D8 - _0224E848 - 2 ; case 4 + .short _0224E8E4 - _0224E848 - 2 ; case 5 + .short _0224E8F0 - _0224E848 - 2 ; case 6 + .short _0224E91A - _0224E848 - 2 ; case 7 +_0224E858: + mov r0, #4 + mov r1, #8 + bl FUN_0201669C + bl MOD18_0224E01C + ldr r3, _0224E940 ; =0x00000504 + add r1, r6, #0 + add r2, r3, #0 + str r0, [r4, r3] + ldr r0, [r4, r3] + add r2, #0x14 + add r3, #0x18 + add r2, r4, r2 + add r3, r4, r3 + bl MOD18_0224E028 + bl MOD18_0224E2D8 + ldr r3, _0224E944 ; =0x00000508 + add r1, r6, #0 + add r2, r3, #0 + str r0, [r4, r3] + ldr r0, [r4, r3] + add r2, #0x12 + add r3, #0x16 + add r2, r4, r2 + add r3, r4, r3 + bl MOD18_0224E2E4 + add r2, r4, #0 + add r0, r6, #0 + add r1, r4, #0 + add r2, #0x5c + bl MOD18_0224F950 + add r1, r4, #0 + add r0, r6, #0 + add r1, #0x5c + bl MOD18_0224FA50 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + b _0224E93C +_0224E8B4: + ldr r1, _0224E948 ; =MOD18_0224E960 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8C0: + ldr r1, _0224E94C ; =MOD18_0224EAD4 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8CC: + ldr r1, _0224E950 ; =MOD18_0224EDDC + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8D8: + ldr r1, _0224E954 ; =MOD18_0224F258 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8E4: + ldr r1, _0224E958 ; =MOD18_0224F528 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + b _0224E93C +_0224E8F0: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224E93C + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224E93C + bl MOD18_0224712C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + b _0224E93C +_0224E91A: + ldr r0, _0224E944 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E320 + ldr r0, _0224E940 ; =0x00000504 + ldr r0, [r4, r0] + bl MOD18_0224E05C + ldr r0, _0224E95C ; =0x0000050C + ldr r0, [r4, r0] + bl MOD05_021D80A4 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, r5, r6, pc} +_0224E93C: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224E940: .word 0x00000504 +_0224E944: .word 0x00000508 +_0224E948: .word MOD18_0224E960 +_0224E94C: .word MOD18_0224EAD4 +_0224E950: .word MOD18_0224EDDC +_0224E954: .word MOD18_0224F258 +_0224E958: .word MOD18_0224F528 +_0224E95C: .word 0x0000050C + thumb_func_end MOD18_0224E824 + + thumb_func_start MOD18_0224E960 +MOD18_0224E960: ; 0x0224E960 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, _0224EA68 ; =0x00000504 + ldr r0, [r4, r0] + bl MOD18_0224E068 + cmp r0, #0 + beq _0224EA62 + ldr r0, _0224EA68 ; =0x00000504 + ldr r0, [r4, r0] + bl MOD18_0224E064 + cmp r0, #0 + beq _0224E994 + cmp r0, #1 + beq _0224EA1C + cmp r0, #2 + beq _0224EA34 + b _0224EA4C +_0224E994: + ldr r0, [r5, #0xc] + bl FUN_02026CC4 + bl FUN_02025DB0 + cmp r0, #0 + bne _0224E9BE + mov r0, #0x13 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E9BE: + ldr r3, _0224EA6C ; =0x00000521 + ldrb r1, [r4, r3] + cmp r1, #0xf + bls _0224E9E2 + mov r0, #0x14 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E9E2: + add r0, r3, #3 + ldrb r2, [r4, r0] + add r0, r1, #1 + cmp r0, r2 + ble _0224EA08 + mov r0, #0x14 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA08: + sub r3, #0x19 + ldr r0, [r4, r3] + bl MOD18_0224E314 + mov r0, #2 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA1C: + ldr r2, _0224EA70 ; =0x000004FC + mov r0, #0x10 + ldr r2, [r4, r2] + mov r1, #0xd + bl MOD18_0224FBDC + mov r0, #3 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA34: + ldr r2, _0224EA70 ; =0x000004FC + mov r0, #0x10 + ldr r2, [r4, r2] + mov r1, #0xd + bl MOD18_0224FBDC + mov r0, #4 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA4C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x5c + bl MOD18_0224FAB4 + mov r0, #7 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224EA62: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224EA68: .word 0x00000504 +_0224EA6C: .word 0x00000521 +_0224EA70: .word 0x000004FC + thumb_func_end MOD18_0224E960 + + thumb_func_start MOD18_0224EA74 +MOD18_0224EA74: ; 0x0224EA74 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + ldr r1, _0224EAC0 ; =0x00000528 + mov r0, #0xb + bl FUN_020169D8 + ldr r2, _0224EAC0 ; =0x00000528 + add r4, r0, #0 + mov r1, #0 + bl MI_CpuFill8 + mov r0, #0 + add r1, r4, #0 + bl MOD18_0224FB94 + mov r0, #5 + lsl r0, r0, #8 + str r5, [r4, r0] + ldr r0, [r5, #4] + ldr r1, _0224EAC4 ; =0x0225081C + ldr r0, [r0, #4] + bl MOD05_021D8024 + ldr r1, _0224EAC8 ; =0x0000050C + str r0, [r4, r1] + ldr r0, [r4, r1] + bl FUN_021D80E4 + ldr r1, _0224EACC ; =0x000004FC + add r2, r4, #0 + str r0, [r4, r1] + ldr r1, _0224EAD0 ; =MOD18_0224E824 + add r0, r6, #0 + bl FUN_0204640C + pop {r4, r5, r6, pc} + nop +_0224EAC0: .word 0x00000528 +_0224EAC4: .word 0x0225081C +_0224EAC8: .word 0x0000050C +_0224EACC: .word 0x000004FC +_0224EAD0: .word MOD18_0224E824 + thumb_func_end MOD18_0224EA74 + + thumb_func_start MOD18_0224EAD4 +MOD18_0224EAD4: ; 0x0224EAD4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #5 + bhi _0224EB12 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224EAFA: ; jump table + .short _0224EB06 - _0224EAFA - 2 ; case 0 + .short _0224EB88 - _0224EAFA - 2 ; case 1 + .short _0224EBA2 - _0224EAFA - 2 ; case 2 + .short _0224ED42 - _0224EAFA - 2 ; case 3 + .short _0224ED68 - _0224EAFA - 2 ; case 4 + .short _0224ED96 - _0224EAFA - 2 ; case 5 +_0224EB06: + ldr r0, _0224EDC0 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E32C + cmp r0, #0 + bne _0224EB14 +_0224EB12: + b _0224EDBA +_0224EB14: + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + ldr r0, _0224EDC0 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E328 + add r7, r0, #0 + mov r0, #1 + mvn r0, r0 + cmp r7, r0 + bne _0224EB42 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224EB42: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02025DC8 + str r0, [sp, #4] + cmp r0, #0 + beq _0224EB82 + add r0, r6, #0 + add r1, r7, #0 + bl FUN_02025F0C + cmp r0, #0 + bne _0224EB6C + ldr r1, [sp, #4] + add r0, r5, #0 + add r2, r4, #0 + bl MOD18_0224E764 + mov r0, #1 + str r0, [r4, #4] + b _0224EDBA +_0224EB6C: + mov r0, #0x15 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #5 + str r0, [r4, #4] + b _0224EDBA +_0224EB82: + bl ErrorHandling + b _0224EDBA +_0224EB88: + ldr r0, _0224EDC4 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 + ldr r2, _0224EDC4 ; =0x000004DC + ldr r0, [r4, #0x4c] + mov r1, #4 + add r2, r4, r2 + bl MOD18_0224FF14 + mov r0, #2 + str r0, [r4, #4] + b _0224EDBA +_0224EBA2: + ldr r1, _0224EDC4 ; =0x000004DC + add r0, r5, #0 + add r1, r4, r1 + bl MOD18_0224FF24 + add r0, r4, #0 + add r1, r5, #0 + add r2, sp, #8 + bl MOD18_0224FD70 + cmp r0, #0 + bne _0224ECAE + add r3, r4, #0 + add r3, #0x3c + add r2, sp, #0x18 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0224EDC8 ; =0x021C48B8 + mov r1, #0x20 + ldr r0, [r0, #0x4c] + mov r6, #1 + tst r1, r0 + beq _0224EBE8 + ldr r0, _0224EDCC ; =0xFFFF0000 + mov r7, #0 + str r0, [sp] + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224EC3A +_0224EBE8: + mov r1, #0x10 + add r2, r0, #0 + tst r2, r1 + beq _0224EC04 + lsl r0, r1, #0xc + str r0, [sp] + ldr r0, [sp, #0x18] + mov r7, #0 + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224EC3A +_0224EC04: + mov r1, #0x40 + tst r1, r0 + beq _0224EC1E + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + ldr r7, _0224EDCC ; =0xFFFF0000 + sub r0, r0, #1 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + sub r0, r0, #1 + str r0, [sp, #0x24] + b _0224EC3A +_0224EC1E: + mov r1, #0x80 + tst r0, r1 + beq _0224EC38 + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x1c] + lsl r7, r1, #9 + add r0, r0, #1 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x24] + add r0, r0, #1 + str r0, [sp, #0x24] + b _0224EC3A +_0224EC38: + mov r6, #0 +_0224EC3A: + cmp r6, #0 + beq _0224EC88 + add r0, sp, #0x18 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224EC88 + add r2, r4, #0 + add r3, sp, #0x18 + add r2, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x4c] + bl FUN_021E7EEC + add r6, r0, #0 + add r0, sp, #0xc + add r1, r6, #0 + bl FUN_021E7EA0 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x14] + add r1, sp, #0xc + add r0, r0, r7 + str r0, [sp, #0x14] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0x10] + add r0, r6, #0 + bl FUN_021E7EB0 +_0224EC88: + ldr r0, _0224EDC8 ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #1 + add r1, r2, #0 + tst r1, r0 + beq _0224EC98 + str r0, [sp, #8] + b _0224ECAE +_0224EC98: + mov r0, #2 + tst r0, r2 + beq _0224ECAE + ldr r1, [r4, #0x4c] + add r0, r5, #0 + bl MOD18_0224E7E4 + mov r0, #0 + add sp, #0x28 + str r0, [r4, #4] + pop {r3, r4, r5, r6, r7, pc} +_0224ECAE: + ldr r0, [sp, #8] + cmp r0, #0 + bne _0224ECB6 + b _0224EDBA +_0224ECB6: + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x3c + add r1, #0x5c + bl MOD18_0224F770 + cmp r0, #0 + beq _0224ED26 + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r6, r0, #0 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x3c + add r1, #0x5c + bl MOD18_0224F850 + add r7, r0, #0 + ldr r0, _0224EDC0 ; =0x00000508 + ldr r0, [r4, r0] + bl MOD18_0224E328 + add r1, r0, #0 + add r0, r6, #0 + add r2, r7, #0 + bl FUN_02025EDC + ldr r0, _0224EDD0 ; =0x000005FE + bl FUN_020054C8 + ldr r0, [r4, #0x50] + bl MOD18_02247138 + mov r0, #0xb + bl MOD18_02247118 + ldr r1, _0224EDC4 ; =0x000004DC + str r0, [r4, #8] + add r0, r5, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + ldr r0, _0224EDD4 ; =0x00000521 + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #1 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224EDBA +_0224ED26: + ldr r0, _0224EDD8 ; =0x00000602 + bl FUN_020054C8 + mov r0, #0xc + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r4, #4] + b _0224EDBA +_0224ED42: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224EDBA + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224EDBA + bl MOD18_0224712C + mov r0, #2 + str r0, [r4, #4] + b _0224EDBA +_0224ED68: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224EDBA + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224EDBA + bl MOD18_0224712C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224ED96: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224EDBA + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224EDBA + bl MOD18_0224712C + mov r0, #0 + str r0, [r4, #4] +_0224EDBA: + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224EDC0: .word 0x00000508 +_0224EDC4: .word 0x000004DC +_0224EDC8: .word 0x021C48B8 +_0224EDCC: .word 0xFFFF0000 +_0224EDD0: .word 0x000005FE +_0224EDD4: .word 0x00000521 +_0224EDD8: .word 0x00000602 + thumb_func_end MOD18_0224EAD4 + + thumb_func_start MOD18_0224EDDC +MOD18_0224EDDC: ; 0x0224EDDC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #6 + bls _0224EDF8 + b _0224F252 +_0224EDF8: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224EE04: ; jump table + .short _0224EE12 - _0224EE04 - 2 ; case 0 + .short _0224EE52 - _0224EE04 - 2 ; case 1 + .short _0224F122 - _0224EE04 - 2 ; case 2 + .short _0224F192 - _0224EE04 - 2 ; case 3 + .short _0224F1BC - _0224EE04 - 2 ; case 4 + .short _0224F1E2 - _0224EE04 - 2 ; case 5 + .short _0224F224 - _0224EE04 - 2 ; case 6 +_0224EE12: + ldr r0, _0224F148 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + bl MOD18_0224FBD4 + ldr r0, _0224F14C ; =0x000004FC + add r2, r4, #0 + ldr r1, [r4, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #0xc + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224EE4C + ldr r1, [sp, #0xc] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r2, _0224F148 ; =0x000004DC + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r4, r2 + bl MOD18_0224FF14 +_0224EE4C: + mov r0, #1 + str r0, [r4, #4] + b _0224F252 +_0224EE52: + ldr r1, _0224F148 ; =0x000004DC + mov r0, #1 + str r0, [sp] + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF24 + add r0, r4, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD18_0224FDDC + ldr r1, _0224F14C ; =0x000004FC + cmp r0, #0 + ldr r2, [r4, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x14] + ldr r2, [r4, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x1c] + ldr r2, [r4, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x18] + ldr r2, [r4, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x20] + ldr r2, [r4, r1] + ldr r6, [r2, #0x58] + ldr r5, [r2, #0x60] + bne _0224EF54 + ldr r0, _0224F150 ; =0x021C48B8 + mov r2, #0x20 + ldr r0, [r0, #0x4c] + tst r2, r0 + beq _0224EEB4 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r6, r6, r0 + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + sub r0, r0, #1 + str r0, [sp, #0x1c] + b _0224EF1E +_0224EEB4: + mov r2, #0x10 + tst r2, r0 + beq _0224EED6 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, r0 + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0224EF1E +_0224EED6: + mov r2, #0x40 + tst r2, r0 + beq _0224EEF8 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r5, r5, r0 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224EF1E +_0224EEF8: + mov r2, #0x80 + tst r0, r2 + beq _0224EF1A + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r5, r5, r0 + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224EF1E +_0224EF1A: + mov r0, #0 + str r0, [sp] +_0224EF1E: + ldr r0, _0224F150 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + add r2, r0, #0 + tst r2, r1 + beq _0224EF2E + str r1, [sp, #0x10] + b _0224EF54 +_0224EF2E: + mov r1, #2 + tst r0, r1 + beq _0224EF54 + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + bl MOD18_0224FBF8 + ldr r1, _0224F148 ; =0x000004DC + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224EF54: + ldr r0, [sp] + cmp r0, #0 + beq _0224EFD6 + add r0, sp, #0x14 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224EFD6 + ldr r0, _0224F14C ; =0x000004FC + add r3, sp, #8 + ldr r1, [r4, r0] + str r6, [r1, #0x58] + ldr r1, [r4, r0] + str r5, [r1, #0x60] + ldr r2, [sp, #0x14] + ldr r1, [r4, r0] + str r2, [r1, #0x64] + ldr r2, [sp, #0x18] + ldr r1, [r4, r0] + str r2, [r1, #0x68] + ldr r1, [r4, r0] + add r2, r4, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r2, #0x5c + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224EFC4 + ldr r0, _0224F148 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF80 + ldr r2, [sp, #8] + mov r1, #0x24 + mul r1, r2 + add r1, r4, r1 + ldr r1, [r1, #0x70] + cmp r0, r1 + beq _0224EFD6 + ldr r1, _0224F148 ; =0x000004DC + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + ldr r2, _0224F148 ; =0x000004DC + ldr r1, [sp, #8] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r4, r2 + bl MOD18_0224FF14 + b _0224EFD6 +_0224EFC4: + ldr r1, _0224F148 ; =0x000004DC + add r0, r7, #0 + add r1, r4, r1 + bl MOD18_0224FF64 + ldr r0, _0224F148 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 +_0224EFD6: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224F00E + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + ldr r0, [r0, #0x64] + cmp r0, #0x20 + blt _0224EFEA + bl ErrorHandling +_0224EFEA: + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + ldr r0, [r0, #0x68] + cmp r0, #0x20 + blt _0224EFF8 + bl ErrorHandling +_0224EFF8: + ldr r0, _0224F14C ; =0x000004FC + add r2, r4, #0 + ldr r1, [r4, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #4 + bl MOD18_0224F7EC + cmp r0, #0 + bne _0224F010 +_0224F00E: + b _0224F252 +_0224F010: + ldr r1, [sp, #4] + cmp r1, #0 + beq _0224F10C + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x74] + bl MOD18_02247138 + ldr r1, [sp, #4] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x74] + cmp r0, #6 + bne _0224F09E + ldr r0, _0224F154 ; =0x00000523 + ldrb r1, [r4, r0] + cmp r1, #0x10 + bne _0224F04E + mov r0, #0xf + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224F252 +_0224F04E: + sub r0, r0, #1 + ldrb r0, [r4, r0] + sub r0, r0, #1 + cmp r0, r1 + bge _0224F06E + mov r0, #0x12 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224F252 +_0224F06E: + mov r0, #0x19 + lsl r0, r0, #6 + bl FUN_020054C8 + mov r0, #0xe + bl MOD18_02247118 + str r0, [r4, #8] + ldr r0, _0224F158 ; =0x00000522 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0224F08A + bl ErrorHandling +_0224F08A: + ldr r0, _0224F158 ; =0x00000522 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #2 + strb r1, [r4, r0] + mov r0, #2 + str r0, [r4, #4] + b _0224F0E0 +_0224F09E: + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r0, [r0, #0xc] + bl FUN_02026CC4 + add r5, r0, #0 + ldr r0, _0224F15C ; =0x000005EB + bl FUN_020054C8 + ldr r1, [sp, #4] + add r0, r5, #0 + bl FUN_02025F30 + mov r0, #0xd + bl MOD18_02247118 + str r0, [r4, #8] + ldr r0, _0224F160 ; =0x00000521 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0224F0CE + bl ErrorHandling +_0224F0CE: + ldr r0, _0224F160 ; =0x00000521 + ldrb r1, [r4, r0] + sub r1, r1, #1 + strb r1, [r4, r0] + mov r1, #0 + sub r0, r0, #1 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r4, #4] +_0224F0E0: + ldr r2, [sp, #4] + mov r1, #0x24 + mul r1, r2 + add r1, r4, r1 + ldr r1, [r1, #0x70] + add r0, r7, #0 + bl MOD18_0224E7E4 + add r1, r4, #0 + ldr r0, [sp, #4] + add r1, #0x5c + bl MOD18_0224F8CC + ldr r0, _0224F14C ; =0x000004FC + ldr r0, [r4, r0] + bl MOD18_0224FBF8 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + b _0224F252 +_0224F10C: + mov r0, #0x16 + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #4 + str r0, [r4, #4] + b _0224F252 +_0224F122: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F13E + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + bhs _0224F140 +_0224F13E: + b _0224F252 +_0224F140: + bl MOD18_0224712C + ldr r0, _0224F158 ; =0x00000522 + b _0224F164 + .align 2, 0 +_0224F148: .word 0x000004DC +_0224F14C: .word 0x000004FC +_0224F150: .word 0x021C48B8 +_0224F154: .word 0x00000523 +_0224F158: .word 0x00000522 +_0224F15C: .word 0x000005EB +_0224F160: .word 0x00000521 +_0224F164: + ldrb r1, [r4, r0] + add r0, r0, #1 + ldrb r0, [r4, r0] + sub r5, r1, r0 + bpl _0224F172 + bl ErrorHandling +_0224F172: + cmp r5, #0 + bne _0224F184 + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F184: + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #5 + str r0, [r4, #4] + b _0224F252 +_0224F192: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F252 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F252 + bl MOD18_0224712C + mov r0, #0 + str r0, [r4, #4] + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F1BC: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F252 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F252 + bl MOD18_0224712C + mov r0, #1 + str r0, [r4, #4] + b _0224F252 +_0224F1E2: + mov r1, #0x52 + lsl r1, r1, #4 + ldrb r2, [r4, r1] + add r0, r2, #1 + strb r0, [r4, r1] + cmp r2, #0xa + blo _0224F252 + add r0, r1, #2 + ldrb r2, [r4, r0] + add r0, r1, #3 + ldrb r0, [r4, r0] + mov r1, #0 + sub r5, r2, r0 + add r0, r5, #0 + bl MOD18_0224714C + cmp r5, #1 + bne _0224F20E + mov r0, #0x11 + bl MOD18_02247118 + b _0224F214 +_0224F20E: + mov r0, #0x19 + bl MOD18_02247118 +_0224F214: + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #6 + str r0, [r4, #4] + b _0224F252 +_0224F224: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F252 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F252 + bl MOD18_0224712C + mov r0, #1 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F252: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224EDDC + + thumb_func_start MOD18_0224F258 +MOD18_0224F258: ; 0x0224F258 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r0, [r5, #4] + cmp r0, #0 + beq _0224F27E + cmp r0, #1 + beq _0224F2BE + cmp r0, #2 + bne _0224F27C + b _0224F4EC +_0224F27C: + b _0224F510 +_0224F27E: + ldr r0, _0224F518 ; =0x000004DC + add r0, r5, r0 + bl MOD18_0224FF00 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + bl MOD18_0224FBD4 + ldr r0, _0224F51C ; =0x000004FC + add r2, r5, #0 + ldr r1, [r5, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #0xc + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224F2B8 + ldr r1, [sp, #0xc] + mov r0, #0x24 + mul r0, r1 + add r0, r5, r0 + ldr r2, _0224F518 ; =0x000004DC + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r5, r2 + bl MOD18_0224FF14 +_0224F2B8: + mov r0, #1 + str r0, [r5, #4] + b _0224F510 +_0224F2BE: + ldr r1, _0224F518 ; =0x000004DC + mov r0, #1 + str r0, [sp] + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF24 + add r0, r5, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl MOD18_0224FE4C + ldr r1, _0224F51C ; =0x000004FC + cmp r0, #0 + ldr r2, [r5, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x14] + ldr r2, [r5, r1] + ldr r2, [r2, #0x64] + str r2, [sp, #0x1c] + ldr r2, [r5, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x18] + ldr r2, [r5, r1] + ldr r2, [r2, #0x68] + str r2, [sp, #0x20] + ldr r2, [r5, r1] + ldr r6, [r2, #0x58] + ldr r4, [r2, #0x60] + bne _0224F3C0 + ldr r0, _0224F520 ; =0x021C48B8 + mov r2, #0x20 + ldr r0, [r0, #0x4c] + tst r2, r0 + beq _0224F320 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r6, r6, r0 + ldr r0, [sp, #0x14] + sub r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + sub r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F38A +_0224F320: + mov r2, #0x10 + tst r2, r0 + beq _0224F342 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r6, r6, r0 + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F38A +_0224F342: + mov r2, #0x40 + tst r2, r0 + beq _0224F364 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + sub r4, r4, r0 + ldr r0, [sp, #0x18] + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224F38A +_0224F364: + mov r2, #0x80 + tst r0, r2 + beq _0224F386 + add r1, #0xe9 + add r0, r1, #0 + bl FUN_020054C8 + mov r0, #1 + lsl r0, r0, #0x10 + add r4, r4, r0 + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224F38A +_0224F386: + mov r0, #0 + str r0, [sp] +_0224F38A: + ldr r0, _0224F520 ; =0x021C48B8 + mov r1, #1 + ldr r0, [r0, #0x48] + add r2, r0, #0 + tst r2, r1 + beq _0224F39A + str r1, [sp, #0x10] + b _0224F3C0 +_0224F39A: + mov r1, #2 + tst r0, r1 + beq _0224F3C0 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + bl MOD18_0224FBF8 + ldr r1, _0224F518 ; =0x000004DC + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF64 + mov r0, #1 + add r1, r5, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F3C0: + ldr r0, [sp] + cmp r0, #0 + beq _0224F442 + add r0, sp, #0x14 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224F442 + ldr r0, _0224F51C ; =0x000004FC + add r3, sp, #8 + ldr r1, [r5, r0] + str r6, [r1, #0x58] + ldr r1, [r5, r0] + str r4, [r1, #0x60] + ldr r2, [sp, #0x14] + ldr r1, [r5, r0] + str r2, [r1, #0x64] + ldr r2, [sp, #0x18] + ldr r1, [r5, r0] + str r2, [r1, #0x68] + ldr r1, [r5, r0] + add r2, r5, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r2, #0x5c + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224F430 + ldr r0, _0224F518 ; =0x000004DC + add r0, r5, r0 + bl MOD18_0224FF80 + ldr r2, [sp, #8] + mov r1, #0x24 + mul r1, r2 + add r1, r5, r1 + ldr r1, [r1, #0x70] + cmp r0, r1 + beq _0224F442 + ldr r1, _0224F518 ; =0x000004DC + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF64 + ldr r2, _0224F518 ; =0x000004DC + ldr r1, [sp, #8] + mov r0, #0x24 + mul r0, r1 + add r0, r5, r0 + ldr r0, [r0, #0x70] + mov r1, #8 + add r2, r5, r2 + bl MOD18_0224FF14 + b _0224F442 +_0224F430: + ldr r1, _0224F518 ; =0x000004DC + add r0, r7, #0 + add r1, r5, r1 + bl MOD18_0224FF64 + ldr r0, _0224F518 ; =0x000004DC + add r0, r5, r0 + bl MOD18_0224FF00 +_0224F442: + ldr r0, [sp, #0x10] + cmp r0, #0 + beq _0224F510 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + ldr r0, [r0, #0x64] + cmp r0, #0x20 + blt _0224F456 + bl ErrorHandling +_0224F456: + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + ldr r0, [r0, #0x68] + cmp r0, #0x20 + blt _0224F464 + bl ErrorHandling +_0224F464: + ldr r0, _0224F51C ; =0x000004FC + add r2, r5, #0 + ldr r1, [r5, r0] + add r2, #0x5c + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x68] + add r3, sp, #4 + bl MOD18_0224F7EC + cmp r0, #0 + beq _0224F510 + ldr r0, [sp, #4] + cmp r0, #0 + beq _0224F4D6 + mov r1, #0x24 + mul r1, r0 + add r1, r5, r1 + ldr r1, [r1, #0x74] + cmp r1, #6 + bne _0224F4A2 + mov r0, #0x10 + bl MOD18_02247118 + str r0, [r5, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r5, r0] + mov r0, #2 + str r0, [r5, #4] + b _0224F510 +_0224F4A2: + add r1, r5, #0 + bl MOD18_0224E7F4 + ldr r0, [sp, #4] + add r1, r5, #0 + bl MOD18_0224FB04 + add r1, r5, #0 + ldr r0, [sp, #4] + add r1, #0x5c + bl MOD18_0224F8CC + ldr r0, _0224F524 ; =0x000005EB + bl FUN_020054C8 + ldr r0, _0224F51C ; =0x000004FC + ldr r0, [r5, r0] + bl MOD18_0224FBF8 + mov r0, #5 + add r1, r5, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F4D6: + mov r0, #0x17 + bl MOD18_02247118 + str r0, [r5, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r5, r0] + mov r0, #2 + str r0, [r5, #4] + b _0224F510 +_0224F4EC: + ldr r0, [r5, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F510 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r5, r0] + add r1, r2, #1 + strb r1, [r5, r0] + cmp r2, #0x1e + blo _0224F510 + bl MOD18_0224712C + mov r0, #1 + str r0, [r5, #4] +_0224F510: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224F518: .word 0x000004DC +_0224F51C: .word 0x000004FC +_0224F520: .word 0x021C48B8 +_0224F524: .word 0x000005EB + thumb_func_end MOD18_0224F258 + + thumb_func_start MOD18_0224F528 +MOD18_0224F528: ; 0x0224F528 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + str r0, [sp] + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #3 + bls _0224F544 + b _0224F750 +_0224F544: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224F550: ; jump table + .short _0224F558 - _0224F550 - 2 ; case 0 + .short _0224F572 - _0224F550 - 2 ; case 1 + .short _0224F6FC - _0224F550 - 2 ; case 2 + .short _0224F722 - _0224F550 - 2 ; case 3 +_0224F558: + ldr r0, _0224F758 ; =0x000004DC + add r0, r4, r0 + bl MOD18_0224FF00 + ldr r2, _0224F758 ; =0x000004DC + ldr r0, [r4, #0x4c] + mov r1, #4 + add r2, r4, r2 + bl MOD18_0224FF14 + mov r0, #1 + str r0, [r4, #4] + b _0224F750 +_0224F572: + ldr r1, _0224F758 ; =0x000004DC + ldr r0, [sp] + add r1, r4, r1 + bl MOD18_0224FF24 + ldr r1, [sp] + add r0, r4, #0 + add r2, sp, #4 + bl MOD18_0224FE94 + cmp r0, #0 + beq _0224F58C + b _0224F692 +_0224F58C: + add r3, r4, #0 + add r3, #0x3c + add r2, sp, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, _0224F75C ; =0x021C48B8 + mov r1, #0x20 + ldr r0, [r0, #0x4c] + mov r6, #1 + tst r1, r0 + beq _0224F5B8 + ldr r0, [sp, #0x14] + ldr r7, _0224F760 ; =0xFFFF0000 + sub r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + mov r5, #0 + sub r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F604 +_0224F5B8: + mov r1, #0x10 + add r2, r0, #0 + tst r2, r1 + beq _0224F5D2 + ldr r0, [sp, #0x14] + lsl r7, r1, #0xc + add r0, r0, #1 + str r0, [sp, #0x14] + ldr r0, [sp, #0x1c] + mov r5, #0 + add r0, r0, #1 + str r0, [sp, #0x1c] + b _0224F604 +_0224F5D2: + mov r1, #0x40 + tst r1, r0 + beq _0224F5EA + ldr r0, [sp, #0x18] + mov r7, #0 + sub r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + ldr r5, _0224F760 ; =0xFFFF0000 + sub r0, r0, #1 + str r0, [sp, #0x20] + b _0224F604 +_0224F5EA: + mov r1, #0x80 + tst r0, r1 + beq _0224F602 + ldr r0, [sp, #0x18] + mov r7, #0 + add r0, r0, #1 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + lsl r5, r1, #9 + add r0, r0, #1 + str r0, [sp, #0x20] + b _0224F604 +_0224F602: + mov r6, #0 +_0224F604: + cmp r6, #0 + beq _0224F650 + add r0, sp, #0x14 + bl MOD18_0224F830 + cmp r0, #0 + bne _0224F650 + add r2, r4, #0 + add r3, sp, #0x14 + add r2, #0x3c + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [sp] + ldr r1, [r4, #0x4c] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7EEC + add r6, r0, #0 + add r0, sp, #8 + add r1, r6, #0 + bl FUN_021E7EA0 + ldr r0, [sp, #8] + add r1, sp, #8 + add r0, r0, r7 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + add r0, r0, r5 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + add r0, r6, #0 + bl FUN_021E7EB0 +_0224F650: + ldr r0, _0224F75C ; =0x021C48B8 + ldr r2, [r0, #0x48] + mov r0, #1 + add r1, r2, #0 + tst r1, r0 + beq _0224F660 + str r0, [sp, #4] + b _0224F692 +_0224F660: + mov r0, #2 + tst r0, r2 + beq _0224F692 + add r0, r4, #0 + add r2, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x1c + add r2, #0x5c + bl MOD18_0224F890 + add r0, r4, #0 + bl MOD18_0224FB64 + ldr r1, _0224F758 ; =0x000004DC + ldr r0, [sp] + add r1, r4, r1 + bl MOD18_0224FF64 + mov r0, #4 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F692: + ldr r0, [sp, #4] + cmp r0, #0 + beq _0224F750 + add r0, r4, #0 + add r1, r4, #0 + add r0, #0x3c + add r1, #0x5c + bl MOD18_0224F770 + cmp r0, #0 + beq _0224F6E0 + add r0, r4, #0 + add r2, r4, #0 + ldr r1, [r4, #0xc] + add r0, #0x3c + add r2, #0x5c + bl MOD18_0224F890 + ldr r0, _0224F764 ; =0x000005FE + bl FUN_020054C8 + ldr r2, _0224F768 ; =0x000004FC + ldr r0, [r4, #0x3c] + ldr r1, [r4, #0x40] + ldr r2, [r4, r2] + bl MOD18_0224FBDC + ldr r1, _0224F758 ; =0x000004DC + ldr r0, [sp] + add r1, r4, r1 + bl MOD18_0224FF64 + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #3 + str r0, [r4, #4] + b _0224F750 +_0224F6E0: + ldr r0, _0224F76C ; =0x00000602 + bl FUN_020054C8 + mov r0, #0xc + bl MOD18_02247118 + str r0, [r4, #8] + mov r0, #0x52 + mov r1, #0 + lsl r0, r0, #4 + strb r1, [r4, r0] + mov r0, #2 + str r0, [r4, #4] + b _0224F750 +_0224F6FC: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F750 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F750 + bl MOD18_0224712C + mov r0, #1 + str r0, [r4, #4] + b _0224F750 +_0224F722: + ldr r0, [r4, #8] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224F750 + mov r0, #0x52 + lsl r0, r0, #4 + ldrb r2, [r4, r0] + add r1, r2, #1 + strb r1, [r4, r0] + cmp r2, #0x1e + blo _0224F750 + bl MOD18_0224712C + mov r0, #4 + add r1, r4, #0 + bl MOD18_0224FB94 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224F750: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224F758: .word 0x000004DC +_0224F75C: .word 0x021C48B8 +_0224F760: .word 0xFFFF0000 +_0224F764: .word 0x000005FE +_0224F768: .word 0x000004FC +_0224F76C: .word 0x00000602 + thumb_func_end MOD18_0224F528 + + thumb_func_start MOD18_0224F770 +MOD18_0224F770: ; 0x0224F770 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r1, #0 + add r7, r0, #0 + mov r6, #0 + add r4, r5, #0 +_0224F77C: + ldr r0, [r5] + cmp r0, #1 + bne _0224F794 + add r0, r4, #4 + add r1, r7, #0 + bl MOD18_0224F908 + cmp r0, #0 + beq _0224F794 + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F794: + add r6, r6, #1 + add r5, #0x24 + add r4, #0x24 + cmp r6, #0x20 + blt _0224F77C + ldr r4, _0224F7E4 ; =0x0225080C + add r3, sp, #0x10 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r7, #0 + add r1, r2, #0 + bl MOD18_0224F908 + cmp r0, #0 + beq _0224F7BE + add sp, #0x20 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224F7BE: + ldr r4, _0224F7E8 ; =0x022507FC + add r3, sp, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, r7, #0 + add r1, r2, #0 + bl MOD18_0224F908 + cmp r0, #0 + bne _0224F7DE + add sp, #0x20 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224F7DE: + mov r0, #0 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224F7E4: .word 0x0225080C +_0224F7E8: .word 0x022507FC + thumb_func_end MOD18_0224F770 + + thumb_func_start MOD18_0224F7EC +MOD18_0224F7EC: ; 0x0224F7EC + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r2, #0 + add r7, r0, #0 + str r1, [sp] + str r3, [sp, #4] + mov r6, #0 + add r4, r5, #0 +_0224F7FC: + ldr r0, [r5] + cmp r0, #1 + bne _0224F81A + ldr r2, [sp] + add r0, r4, #4 + add r1, r7, #0 + bl MOD18_0224F930 + cmp r0, #0 + beq _0224F81A + ldr r0, [sp, #4] + add sp, #8 + str r6, [r0] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224F81A: + add r6, r6, #1 + add r5, #0x24 + add r4, #0x24 + cmp r6, #0x20 + blt _0224F7FC + ldr r0, [sp, #4] + mov r1, #0x20 + str r1, [r0] + mov r0, #0 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224F7EC + + thumb_func_start MOD18_0224F830 +MOD18_0224F830: ; 0x0224F830 + ldr r1, [r0] + cmp r1, #0xa + blt _0224F84C + ldr r1, [r0, #8] + cmp r1, #0x15 + bgt _0224F84C + ldr r1, [r0, #4] + cmp r1, #0xc + blt _0224F84C + ldr r0, [r0, #0xc] + cmp r0, #0x17 + bgt _0224F84C + mov r0, #0 + bx lr +_0224F84C: + mov r0, #1 + bx lr + thumb_func_end MOD18_0224F830 + + thumb_func_start MOD18_0224F850 +MOD18_0224F850: ; 0x0224F850 + push {r4, lr} + add r3, r0, #0 + mov r2, #0 + add r4, r1, #0 +_0224F858: + ldr r0, [r4] + cmp r0, #0 + bne _0224F880 + mov r0, #0x24 + add r4, r2, #0 + mul r4, r0 + mov r0, #1 + str r0, [r1, r4] + add r0, r1, r4 + add r4, r0, #4 + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r4!, {r0, r1} + add r0, r2, #0 + pop {r4, pc} +_0224F880: + add r2, r2, #1 + add r4, #0x24 + cmp r2, #0x20 + blt _0224F858 + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + thumb_func_end MOD18_0224F850 + + thumb_func_start MOD18_0224F890 +MOD18_0224F890: ; 0x0224F890 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r5, r0, #0 + add r4, r2, #0 + cmp r7, #0x20 + blt _0224F8A0 + bl ErrorHandling +_0224F8A0: + mov r0, #0x24 + add r6, r7, #0 + mul r6, r0 + ldr r0, [r4, r6] + cmp r0, #0 + beq _0224F8B0 + bl ErrorHandling +_0224F8B0: + mov r0, #1 + str r0, [r4, r6] + add r0, r4, r6 + add r2, r0, #4 + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r2!, {r0, r1} + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224F890 + + thumb_func_start MOD18_0224F8CC +MOD18_0224F8CC: ; 0x0224F8CC + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0x20 + blt _0224F8DA + bl ErrorHandling +_0224F8DA: + cmp r5, #0 + bne _0224F8E2 + bl ErrorHandling +_0224F8E2: + mov r0, #0x24 + add r6, r5, #0 + mul r6, r0 + ldr r0, [r4, r6] + cmp r0, #0 + bne _0224F8F2 + bl ErrorHandling +_0224F8F2: + mov r1, #0 + add r0, r4, r6 + str r1, [r0, #0x14] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [r0, #0xc] + str r1, [r0, #0x10] + str r1, [r0, #0x18] + str r1, [r4, r6] + pop {r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224F8CC + + thumb_func_start MOD18_0224F908 +MOD18_0224F908: ; 0x0224F908 + ldr r3, [r0] + ldr r2, [r1, #8] + cmp r3, r2 + bgt _0224F92C + ldr r3, [r1] + ldr r2, [r0, #8] + cmp r3, r2 + bgt _0224F92C + ldr r3, [r0, #4] + ldr r2, [r1, #0xc] + cmp r3, r2 + bgt _0224F92C + ldr r1, [r1, #4] + ldr r0, [r0, #0xc] + cmp r1, r0 + bgt _0224F92C + mov r0, #1 + bx lr +_0224F92C: + mov r0, #0 + bx lr + thumb_func_end MOD18_0224F908 + + thumb_func_start MOD18_0224F930 +MOD18_0224F930: ; 0x0224F930 + ldr r3, [r0] + cmp r3, r1 + bgt _0224F94C + ldr r3, [r0, #8] + cmp r1, r3 + bgt _0224F94C + ldr r1, [r0, #4] + cmp r1, r2 + bgt _0224F94C + ldr r0, [r0, #0xc] + cmp r2, r0 + bgt _0224F94C + mov r0, #1 + bx lr +_0224F94C: + mov r0, #0 + bx lr + thumb_func_end MOD18_0224F930 + + thumb_func_start MOD18_0224F950 +MOD18_0224F950: ; 0x0224F950 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r0, [r0, #0xc] + add r6, r1, #0 + str r2, [sp, #4] + bl FUN_02026CA8 + ldr r1, _0224F9E4 ; =0x00000521 + mov r2, #0 + strb r2, [r6, r1] + add r1, r1, #1 + add r7, r0, #0 + strb r2, [r6, r1] + bl FUN_02026874 + ldr r1, _0224F9E8 ; =0x00000523 + strb r0, [r6, r1] + add r0, r7, #0 + bl FUN_020268A0 + ldr r1, _0224F9EC ; =0x00000524 + mov r4, #0 + strb r0, [r6, r1] +_0224F97E: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_020267C4 + add r5, r0, #0 + beq _0224F9DA + cmp r5, #6 + bne _0224F99A + ldr r0, _0224F9F0 ; =0x00000522 + ldrb r0, [r6, r0] + add r1, r0, #1 + ldr r0, _0224F9F0 ; =0x00000522 + strb r1, [r6, r0] + b _0224F9B8 +_0224F99A: + cmp r5, #1 + beq _0224F9B8 + cmp r5, #2 + beq _0224F9B8 + cmp r5, #3 + beq _0224F9B8 + cmp r5, #4 + beq _0224F9B8 + cmp r5, #5 + beq _0224F9B8 + ldr r0, _0224F9E4 ; =0x00000521 + ldrb r0, [r6, r0] + add r1, r0, #1 + ldr r0, _0224F9E4 ; =0x00000521 + strb r1, [r6, r0] +_0224F9B8: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026810 + str r0, [sp, #8] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02026840 + add r3, r0, #0 + ldr r0, [sp, #4] + ldr r2, [sp, #8] + str r0, [sp] + add r0, r4, #0 + add r1, r5, #0 + bl MOD18_0224F9F4 +_0224F9DA: + add r4, r4, #1 + cmp r4, #0x20 + blt _0224F97E + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224F9E4: .word 0x00000521 +_0224F9E8: .word 0x00000523 +_0224F9EC: .word 0x00000524 +_0224F9F0: .word 0x00000522 + thumb_func_end MOD18_0224F950 + + thumb_func_start MOD18_0224F9F4 +MOD18_0224F9F4: ; 0x0224F9F4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r7, r0, #0 + mov r0, #0 + add r5, r2, #0 + add r6, r3, #0 + str r0, [sp, #0x14] + add r0, r1, #0 + str r1, [sp] + ldr r4, [sp, #0x38] + str r0, [sp, #0x18] + str r5, [sp, #4] + str r6, [sp, #8] + bl FUN_0204CA80 + str r0, [sp, #0x1c] + ldr r0, [sp] + bl FUN_0204CA90 + str r0, [sp, #0x20] + sub r0, r0, #1 + add r0, r6, r0 + ldr r1, [sp, #0x1c] + str r0, [sp, #0x10] + sub r1, r1, #1 + add r1, r5, r1 + mov r0, #0x24 + add r2, r7, #0 + mul r2, r0 + add r0, r4, r2 + add r5, sp, #4 + add r3, r0, #4 + str r1, [sp, #0xc] + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + mov r0, #1 + str r0, [r4, r2] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + thumb_func_end MOD18_0224F9F4 + + thumb_func_start MOD18_0224FA50 +MOD18_0224FA50: ; 0x0224FA50 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r5, r0, #0 + add r0, #0xa0 + ldr r0, [r0] + add r4, r1, #0 + bl MOD05_021E7C1C + mov r7, #1 + mov r6, #0 + lsl r7, r7, #0xc +_0224FA66: + ldr r0, [r4] + cmp r0, #0 + beq _0224FAA8 + ldr r1, [r4, #0x18] + add r0, r5, #0 + bl MOD18_0224FAEC + add r2, r0, #0 + ldr r0, [r4, #4] + ldr r3, [r4, #0x1c] + ldr r1, [r4, #0x20] + lsl r0, r0, #0x10 + lsl r3, r3, #0xf + add r0, r0, r3 + str r0, [sp, #8] + ldr r0, [r4, #8] + lsl r1, r1, #0xf + lsl r0, r0, #0x10 + add r0, r0, r1 + str r0, [sp, #0x10] + str r7, [sp, #0xc] + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x4c] + add r3, sp, #8 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + bl FUN_021E7FBC + str r0, [r4, #0x14] +_0224FAA8: + add r6, r6, #1 + add r4, #0x24 + cmp r6, #0x20 + blt _0224FA66 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224FA50 + + thumb_func_start MOD18_0224FAB4 +MOD18_0224FAB4: ; 0x0224FAB4 + push {r3, r4, r5, r6, r7, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl FUN_02026CA8 + mov r4, #0 + add r6, r0, #0 + add r7, r4, #0 +_0224FAC4: + ldr r0, [r5] + cmp r0, #1 + bne _0224FAD2 + ldr r2, [r5, #0x18] + ldr r3, [r5, #4] + ldr r0, [r5, #8] + b _0224FAD8 +_0224FAD2: + add r2, r7, #0 + add r3, r7, #0 + add r0, r7, #0 +_0224FAD8: + str r0, [sp] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202671C + add r4, r4, #1 + add r5, #0x24 + cmp r4, #0x20 + blt _0224FAC4 + pop {r3, r4, r5, r6, r7, pc} + thumb_func_end MOD18_0224FAB4 + + thumb_func_start MOD18_0224FAEC +MOD18_0224FAEC: ; 0x0224FAEC + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bne _0224FAF8 + bl ErrorHandling +_0224FAF8: + ldr r0, [r5, #0x2c] + add r1, r4, #0 + bl MOD05_021F4CD4 + pop {r3, r4, r5, pc} + .align 2, 0 + thumb_func_end MOD18_0224FAEC + + thumb_func_start MOD18_0224FB04 +MOD18_0224FB04: ; 0x0224FB04 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + mov r0, #0x24 + add r4, r6, #0 + add r5, r1, #0 + mul r4, r0 + add r0, r5, r4 + ldr r0, [r0, #0x5c] + cmp r0, #0 + bne _0224FB1E + bl ErrorHandling +_0224FB1E: + add r0, r5, #0 + add r0, #0x60 + add r4, r0, r4 + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r5, r0] + ldr r1, [r4, #0x10] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7EEC + add r1, r0, #0 + add r0, sp, #0 + bl FUN_021E7EA0 + add r3, sp, #0 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r6, [r5, #0xc] + add r5, #0x1c + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r5!, {r0, r1} + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + thumb_func_end MOD18_0224FB04 + + thumb_func_start MOD18_0224FB64 +MOD18_0224FB64: ; 0x0224FB64 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0xc] + mov r0, #0x24 + mul r0, r1 + add r0, r4, r0 + ldr r0, [r0, #0x5c] + cmp r0, #0 + bne _0224FB7A + bl ErrorHandling +_0224FB7A: + mov r0, #5 + lsl r0, r0, #8 + ldr r0, [r4, r0] + ldr r1, [r4, #0x2c] + add r0, #0xa0 + ldr r0, [r0] + bl FUN_021E7EEC + add r4, #0x10 + add r1, r4, #0 + bl FUN_021E7EB0 + pop {r4, pc} + thumb_func_end MOD18_0224FB64 + + thumb_func_start MOD18_0224FB94 +MOD18_0224FB94: ; 0x0224FB94 + str r0, [r1] + mov r0, #0 + str r0, [r1, #4] + bx lr + thumb_func_end MOD18_0224FB94 + + thumb_func_start MOD18_0224FB9C +MOD18_0224FB9C: ; 0x0224FB9C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r0, #0x54 + str r0, [sp] + ldr r1, _0224FBC4 ; =0x02251350 + mov r0, #4 + add r2, r4, #0 + add r3, sp, #4 + bl FUN_0201B21C + mov r0, #0 + str r0, [r4, #0x58] + str r0, [r4, #0x5c] + str r0, [r4, #0x60] + str r0, [r4, #0x64] + str r0, [r4, #0x68] + str r0, [r4, #0x6c] + add sp, #8 + pop {r4, pc} + .align 2, 0 +_0224FBC4: .word 0x02251350 + thumb_func_end MOD18_0224FB9C + + thumb_func_start MOD18_0224FBC8 +MOD18_0224FBC8: ; 0x0224FBC8 + ldr r3, _0224FBD0 ; =0x02016A19 + ldr r0, [r0, #0x54] + bx r3 + nop +_0224FBD0: .word 0x02016A19 + thumb_func_end MOD18_0224FBC8 + + thumb_func_start MOD18_0224FBD4 +MOD18_0224FBD4: ; 0x0224FBD4 + mov r1, #1 + str r1, [r0, #0x6c] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FBD4 + + thumb_func_start MOD18_0224FBDC +MOD18_0224FBDC: ; 0x0224FBDC + str r0, [r2, #0x64] + lsl r3, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + str r1, [r2, #0x68] + add r3, r3, r0 + str r3, [r2, #0x58] + lsr r3, r0, #3 + lsl r1, r1, #0x10 + str r3, [r2, #0x5c] + add r0, r1, r0 + str r0, [r2, #0x60] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FBDC + + thumb_func_start MOD18_0224FBF8 +MOD18_0224FBF8: ; 0x0224FBF8 + mov r1, #0 + str r1, [r0, #0x6c] + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FBF8 + + thumb_func_start MOD18_0224FC00 +MOD18_0224FC00: ; 0x0224FC00 + ldr r3, _0224FC14 ; =0x0000FFFF + cmp r0, r3 + beq _0224FC08 + str r0, [r2] +_0224FC08: + ldr r0, _0224FC14 ; =0x0000FFFF + cmp r1, r0 + beq _0224FC10 + str r1, [r2, #4] +_0224FC10: + bx lr + nop +_0224FC14: .word 0x0000FFFF + thumb_func_end MOD18_0224FC00 + + thumb_func_start MOD18_0224FC18 +MOD18_0224FC18: ; 0x0224FC18 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r1, #0 + str r0, [sp] + add r0, #0x88 + ldr r1, _0224FCD4 ; =0x021C48F8 + ldr r6, [r0] + ldrh r0, [r1, #0x1c] + ldrh r1, [r1, #0x1e] + add r4, r2, #0 + bl MOD18_0224FC00 + ldr r1, [r4] + ldr r2, [r4, #4] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #8 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + add r3, r6, #0 + bl MOD05_021F0318 + ldr r1, [sp, #8] + mov r3, #0x1b + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + ldr r1, [sp, #0x10] + str r0, [sp, #4] + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r7, r0, #0x10 + ldr r0, [sp, #4] + ldr r1, [sp, #4] + lsr r0, r0, #0x1f + lsl r1, r1, #0x1b + sub r1, r1, r0 + ror r1, r3 + add r2, r0, r1 + lsr r1, r7, #0x1f + lsl r0, r7, #0x1b + sub r0, r0, r1 + ror r0, r3 + ldr r6, [r5, #0x18] + ldr r4, [r5, #0x1c] + add r0, r1, r0 + sub r1, r6, #1 + add r1, r2, r1 + str r1, [sp, #0x1c] + sub r1, r4, #1 + str r0, [sp, #0x18] + add r0, r0, r1 + str r0, [sp, #0x20] + add r0, sp, #0x14 + str r2, [sp, #0x14] + bl MOD18_0224F830 + cmp r0, #0 + bne _0224FCCE + add r3, sp, #0x14 + add r2, r5, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [sp, #4] + lsl r1, r7, #0x10 + lsl r2, r0, #0x10 + lsl r0, r6, #0xf + str r2, [sp, #8] + add r0, r2, r0 + str r0, [sp, #8] + lsl r0, r4, #0xf + str r1, [sp, #0x10] + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [sp, #0xc] + ldr r0, [sp] + ldr r1, [r5, #0x10] + add r0, #0xa0 + str r0, [sp] + ldr r0, [r0] + bl FUN_021E7EEC + add r1, sp, #8 + bl FUN_021E7EB0 +_0224FCCE: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0224FCD4: .word 0x021C48F8 + thumb_func_end MOD18_0224FC18 + + thumb_func_start MOD18_0224FCD8 +MOD18_0224FCD8: ; 0x0224FCD8 + push {r3, r4, r5, r6, lr} + sub sp, #0x1c + add r4, r1, #0 + add r0, #0x88 + ldr r1, _0224FD6C ; =0x021C48F8 + ldr r5, [r0] + ldrh r0, [r1, #0x1c] + add r6, r2, #0 + ldrh r1, [r1, #0x1e] + add r2, r4, #0 + bl MOD18_0224FC00 + ldr r1, [r4] + ldr r2, [r4, #4] + lsl r1, r1, #0x10 + lsl r2, r2, #0x10 + add r0, sp, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + add r3, r5, #0 + bl MOD05_021F0318 + ldr r1, [sp] + mov r2, #0x1b + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + ldr r1, [sp, #8] + asr r4, r0, #0x10 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r5, r0, #0x10 + lsr r1, r4, #0x1f + lsl r0, r4, #0x1b + sub r0, r0, r1 + ror r0, r2 + add r0, r1, r0 + lsr r3, r5, #0x1f + lsl r1, r5, #0x1b + sub r1, r1, r3 + ror r1, r2 + add r1, r3, r1 + str r0, [sp, #0xc] + str r0, [sp, #0x14] + add r0, sp, #0xc + str r1, [sp, #0x10] + str r1, [sp, #0x18] + bl MOD18_0224F830 + cmp r0, #0 + bne _0224FD66 + mov r0, #2 + lsl r1, r4, #0x10 + lsl r0, r0, #0xe + add r1, r1, r0 + str r1, [sp] + lsl r1, r5, #0x10 + add r1, r1, r0 + lsr r0, r0, #3 + add r2, r6, #0 + add r3, sp, #0 + str r1, [sp, #8] + str r0, [sp, #4] + ldmia r3!, {r0, r1} + add r2, #0x58 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r4, [r6, #0x64] + str r5, [r6, #0x68] +_0224FD66: + add sp, #0x1c + pop {r3, r4, r5, r6, pc} + nop +_0224FD6C: .word 0x021C48F8 + thumb_func_end MOD18_0224FCD8 + + thumb_func_start MOD18_0224FD70 +MOD18_0224FD70: ; 0x0224FD70 + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FDD0 ; =0x021C48F8 + str r0, [r2] + ldrh r5, [r4, #0x20] + cmp r5, #0 + beq _0224FDA0 + ldr r0, _0224FDD4 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FD9C + ldr r2, _0224FDD8 ; =0x000004F8 + mov r0, #1 + str r0, [r3, r2] + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FD9C: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FDA0: + ldrh r4, [r4, #0x22] + cmp r4, #0 + beq _0224FDC0 + ldr r2, _0224FDD8 ; =0x000004F8 + ldr r0, [r3, r2] + cmp r0, #0 + beq _0224FDBC + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FDBC: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FDC0: + ldr r1, _0224FDD8 ; =0x000004F8 + ldr r4, [r3, r1] + cmp r4, #0 + beq _0224FDCE + str r0, [r3, r1] + mov r1, #1 + str r1, [r2] +_0224FDCE: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224FDD0: .word 0x021C48F8 +_0224FDD4: .word 0x021C48B8 +_0224FDD8: .word 0x000004F8 + thumb_func_end MOD18_0224FD70 + + thumb_func_start MOD18_0224FDDC +MOD18_0224FDDC: ; 0x0224FDDC + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FE40 ; =0x021C48F8 + str r0, [r2] + ldrh r5, [r4, #0x20] + cmp r5, #0 + beq _0224FE0E + ldr r0, _0224FE44 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FE0A + ldr r2, _0224FE48 ; =0x000004F8 + mov r0, #1 + str r0, [r3, r2] + add r0, r1, #0 + add r1, r2, #0 + add r2, r2, #4 + sub r1, #8 + ldr r2, [r3, r2] + add r1, r3, r1 + bl MOD18_0224FCD8 +_0224FE0A: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FE0E: + ldrh r4, [r4, #0x22] + cmp r4, #0 + beq _0224FE30 + ldr r2, _0224FE48 ; =0x000004F8 + ldr r0, [r3, r2] + cmp r0, #0 + beq _0224FE2C + add r0, r1, #0 + add r1, r2, #0 + add r2, r2, #4 + sub r1, #8 + ldr r2, [r3, r2] + add r1, r3, r1 + bl MOD18_0224FCD8 +_0224FE2C: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FE30: + ldr r1, _0224FE48 ; =0x000004F8 + ldr r4, [r3, r1] + cmp r4, #0 + beq _0224FE3E + str r0, [r3, r1] + mov r1, #1 + str r1, [r2] +_0224FE3E: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224FE40: .word 0x021C48F8 +_0224FE44: .word 0x021C48B8 +_0224FE48: .word 0x000004F8 + thumb_func_end MOD18_0224FDDC + + thumb_func_start MOD18_0224FE4C +MOD18_0224FE4C: ; 0x0224FE4C + push {r4, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FE88 ; =0x021C48F8 + str r0, [r2] + ldrh r4, [r4, #0x20] + cmp r4, #0 + beq _0224FE80 + ldr r0, _0224FE8C ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FE7C + ldr r4, _0224FE90 ; =0x000004F8 + mov r0, #1 + str r0, [r3, r4] + str r0, [r2] + add r0, r1, #0 + add r1, r4, #0 + add r2, r4, #4 + sub r1, #8 + ldr r2, [r3, r2] + add r1, r3, r1 + bl MOD18_0224FCD8 +_0224FE7C: + mov r0, #1 + pop {r4, pc} +_0224FE80: + ldr r1, _0224FE90 ; =0x000004F8 + str r0, [r3, r1] + pop {r4, pc} + nop +_0224FE88: .word 0x021C48F8 +_0224FE8C: .word 0x021C48B8 +_0224FE90: .word 0x000004F8 + thumb_func_end MOD18_0224FE4C + + thumb_func_start MOD18_0224FE94 +MOD18_0224FE94: ; 0x0224FE94 + push {r3, r4, r5, lr} + add r3, r0, #0 + mov r0, #0 + ldr r4, _0224FEF4 ; =0x021C48F8 + str r0, [r2] + ldrh r5, [r4, #0x20] + cmp r5, #0 + beq _0224FEC4 + ldr r0, _0224FEF8 ; =0x021C48B8 + ldr r0, [r0, #0x44] + cmp r0, #0 + bne _0224FEC0 + ldr r2, _0224FEFC ; =0x000004F8 + mov r0, #1 + str r0, [r3, r2] + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FEC0: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FEC4: + ldrh r4, [r4, #0x22] + cmp r4, #0 + beq _0224FEE4 + ldr r2, _0224FEFC ; =0x000004F8 + ldr r0, [r3, r2] + cmp r0, #0 + beq _0224FEE0 + add r0, r1, #0 + add r1, r3, #0 + sub r2, #8 + add r1, #0x3c + add r2, r3, r2 + bl MOD18_0224FC18 +_0224FEE0: + mov r0, #1 + pop {r3, r4, r5, pc} +_0224FEE4: + ldr r1, _0224FEFC ; =0x000004F8 + ldr r4, [r3, r1] + cmp r4, #0 + beq _0224FEF2 + str r0, [r3, r1] + mov r1, #1 + str r1, [r2] +_0224FEF2: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224FEF4: .word 0x021C48F8 +_0224FEF8: .word 0x021C48B8 +_0224FEFC: .word 0x000004F8 + thumb_func_end MOD18_0224FE94 + + thumb_func_start MOD18_0224FF00 +MOD18_0224FF00: ; 0x0224FF00 + mov r2, #0 + str r2, [r0, #4] + ldr r1, _0224FF10 ; =0x0000FFFF + str r2, [r0, #8] + str r1, [r0] + str r2, [r0, #0xc] + str r2, [r0, #0x10] + bx lr + .align 2, 0 +_0224FF10: .word 0x0000FFFF + thumb_func_end MOD18_0224FF00 + + thumb_func_start MOD18_0224FF14 +MOD18_0224FF14: ; 0x0224FF14 + mov r3, #0 + str r3, [r2, #4] + str r1, [r2, #8] + str r0, [r2] + str r3, [r2, #0xc] + mov r0, #1 + str r0, [r2, #0x10] + bx lr + thumb_func_end MOD18_0224FF14 + + thumb_func_start MOD18_0224FF24 +MOD18_0224FF24: ; 0x0224FF24 + push {r4, lr} + add r4, r1, #0 + ldr r1, [r4, #0x10] + cmp r1, #0 + beq _0224FF60 + ldr r1, [r4, #4] + add r2, r1, #1 + str r2, [r4, #4] + ldr r1, [r4, #8] + cmp r2, r1 + blt _0224FF60 + mov r1, #0 + str r1, [r4, #4] + ldr r1, [r4, #0xc] + add r0, #0xa0 + add r1, r1, #1 + lsr r3, r1, #0x1f + lsl r2, r1, #0x1f + sub r2, r2, r3 + mov r1, #0x1f + ror r2, r1 + add r1, r3, r2 + str r1, [r4, #0xc] + ldr r0, [r0] + ldr r1, [r4] + bl FUN_021E7EEC + ldr r1, [r4, #0xc] + bl FUN_021E7EC0 +_0224FF60: + pop {r4, pc} + .align 2, 0 + thumb_func_end MOD18_0224FF24 + + thumb_func_start MOD18_0224FF64 +MOD18_0224FF64: ; 0x0224FF64 + push {r3, lr} + ldr r2, [r1, #0x10] + cmp r2, #0 + beq _0224FF7C + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r1] + bl FUN_021E7EEC + mov r1, #0 + bl FUN_021E7EC0 +_0224FF7C: + pop {r3, pc} + .align 2, 0 + thumb_func_end MOD18_0224FF64 + + thumb_func_start MOD18_0224FF80 +MOD18_0224FF80: ; 0x0224FF80 + ldr r0, [r0] + bx lr + thumb_func_end MOD18_0224FF80 + + thumb_func_start MOD18_0224FF84 +MOD18_0224FF84: ; 0x0224FF84 + ldr r3, _0224FF8C ; =MOD18_0224FB9C + add r0, r2, #0 + bx r3 + nop +_0224FF8C: .word MOD18_0224FB9C + thumb_func_end MOD18_0224FF84 + + thumb_func_start MOD18_0224FF90 +MOD18_0224FF90: ; 0x0224FF90 + bx lr + .align 2, 0 + thumb_func_end MOD18_0224FF90 + + thumb_func_start MOD18_0224FF94 +MOD18_0224FF94: ; 0x0224FF94 + ldr r3, _0224FF9C ; =MOD18_0224FBC8 + add r0, r2, #0 + bx r3 + nop +_0224FF9C: .word MOD18_0224FBC8 + thumb_func_end MOD18_0224FF94 + + thumb_func_start MOD18_0224FFA0 +MOD18_0224FFA0: ; 0x0224FFA0 + push {r3, r4, r5, lr} + sub sp, #0x30 + ldr r0, [r2, #0x6c] + cmp r0, #0 + beq _0224FFD6 + ldr r5, _0224FFDC ; =0x02250834 + add r4, sp, #0xc + mov r3, #4 +_0224FFB0: + ldmia r5!, {r0, r1} + stmia r4!, {r0, r1} + sub r3, r3, #1 + bne _0224FFB0 + ldr r0, [r5] + ldr r5, _0224FFE0 ; =0x022507F0 + str r0, [r4] + add r4, sp, #0 + ldmia r5!, {r0, r1} + add r3, r4, #0 + stmia r4!, {r0, r1} + ldr r0, [r5] + str r0, [r4] + add r0, r2, #0 + add r2, #0x58 + add r1, r2, #0 + add r2, sp, #0xc + bl FUN_0201B26C +_0224FFD6: + add sp, #0x30 + pop {r3, r4, r5, pc} + nop +_0224FFDC: .word 0x02250834 +_0224FFE0: .word 0x022507F0 + thumb_func_end MOD18_0224FFA0 + + .section .data + ; 0x0224FFE4 + .incbin "baserom.nds", 0x281B44, 0x139C + + .section .bss + ; 0x02251380 + .space 0x80 |