summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arm9/arm9.lcf16
-rw-r--r--arm9/global.inc214
-rw-r--r--arm9/modules/18/asm/module_18.s46260
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