diff options
-rw-r--r-- | arm9/arm9.lcf | 2 | ||||
-rw-r--r-- | arm9/global.inc | 256 | ||||
-rw-r--r-- | arm9/modules/06/asm/module_06.s | 44287 | ||||
-rw-r--r-- | arm9/undefined_syms.txt | 77 |
4 files changed, 44568 insertions, 54 deletions
diff --git a/arm9/arm9.lcf b/arm9/arm9.lcf index a76bb2c1..b332a790 100644 --- a/arm9/arm9.lcf +++ b/arm9/arm9.lcf @@ -394,6 +394,8 @@ SECTIONS { arm_04.o (.text) thumb_04.o (.sdata) arm_04.o (.sdata) + thumb_04.o (.rodata) + arm_04.o (.rodata) thumb_04.o (.data) arm_04.o (.data) } > MODULE_04 diff --git a/arm9/global.inc b/arm9/global.inc index f66095bf..db7694f5 100644 --- a/arm9/global.inc +++ b/arm9/global.inc @@ -4335,3 +4335,259 @@ .extern FUN_02058544
.extern FUN_02061208
.extern FUN_0223BD14
+.extern FUN_02001328
+.extern FUN_020021EC
+.extern FUN_020090FC
+.extern FUN_020091E0
+.extern FUN_02009298
+.extern FUN_020094F0
+.extern FUN_02009BE8
+.extern FUN_02009C5C
+.extern FUN_02009E54
+.extern FUN_0201244C
+.extern FUN_02012470
+.extern FUN_02012560
+.extern FUN_02012794
+.extern FUN_02013C28
+.extern FUN_02013C6C
+.extern FUN_02016B90
+.extern FUN_0201B988
+.extern FUN_0201B9A0
+.extern FUN_0201E720
+.extern FUN_0201E7CC
+.extern FUN_0201EB78
+.extern FUN_0201F7F0
+.extern FUN_0201FDB4
+.extern FUN_02020054
+.extern FUN_02020120
+.extern FUN_02021ACC
+.extern FUN_02023948
+.extern FUN_02023BA4
+.extern FUN_02023BE8
+.extern FUN_02023C04
+.extern FUN_02029054
+.extern FUN_02029060
+.extern FUN_0202906C
+.extern FUN_02029078
+.extern FUN_02029084
+.extern FUN_02029578
+.extern FUN_0202A1E4
+.extern FUN_0202A36C
+.extern FUN_0202A3A0
+.extern FUN_0202A40C
+.extern FUN_0202A444
+.extern FUN_0202A474
+.extern FUN_0202A4B8
+.extern FUN_0202A744
+.extern FUN_0202A798
+.extern FUN_0202AA90
+.extern FUN_0202AAB8
+.extern FUN_0202AB4C
+.extern FUN_0202AB54
+.extern FUN_0202AB80
+.extern FUN_0202AB8C
+.extern FUN_0202ABA0
+.extern FUN_0202B40C
+.extern FUN_0202B410
+.extern FUN_0202B414
+.extern FUN_0202B440
+.extern FUN_0202B458
+.extern FUN_0202B534
+.extern FUN_0202B538
+.extern FUN_0202B53C
+.extern FUN_0202B540
+.extern FUN_0202B544
+.extern FUN_0202B5C8
+.extern FUN_0202B5CC
+.extern FUN_0202B678
+.extern FUN_0202B7C8
+.extern FUN_0202B7F4
+.extern FUN_0202B820
+.extern FUN_0202C12C
+.extern FUN_0202DEA4
+.extern FUN_0202DEE0
+.extern FUN_0202DF08
+.extern FUN_0202DF28
+.extern FUN_0202E08C
+.extern FUN_0202E810
+.extern FUN_0202E844
+.extern FUN_0202E878
+.extern FUN_0202E88C
+.extern FUN_0202E9AC
+.extern FUN_0202EE84
+.extern FUN_020314E8
+.extern FUN_0203162C
+.extern FUN_02031640
+.extern FUN_02031668
+.extern FUN_02031A24
+.extern FUN_020345FC
+.extern FUN_020349AC
+.extern FUN_020349B8
+.extern FUN_02034CB4
+.extern FUN_02034CE0
+.extern FUN_0203781C
+.extern FUN_020469B8
+.extern FUN_020476CC
+.extern FUN_020477EC
+.extern FUN_020479FC
+.extern FUN_02047A78
+.extern FUN_02047BB0
+.extern FUN_020480AC
+.extern FUN_020480E4
+.extern FUN_02049494
+.extern FUN_0204A9F0
+.extern FUN_0204AA5C
+.extern FUN_0204AAD4
+.extern FUN_0204B2CC
+.extern FUN_0204B2E4
+.extern FUN_0204CAE0
+.extern FUN_0204FEB0
+.extern FUN_0204FEF0
+.extern FUN_0204FF30
+.extern FUN_0204FF4C
+.extern FUN_0205464C
+.extern FUN_02054798
+.extern FUN_02054890
+.extern FUN_0205489C
+.extern FUN_020548A8
+.extern FUN_02054AFC
+.extern FUN_02055350
+.extern FUN_02055540
+.extern FUN_0205557C
+.extern FUN_020572B8
+.extern FUN_020582F8
+.extern FUN_0205845C
+.extern FUN_020584C8
+.extern FUN_02058750
+.extern FUN_020587F4
+.extern FUN_02058890
+.extern FUN_020589CC
+.extern FUN_02058A00
+.extern FUN_02058B14
+.extern FUN_02058B1C
+.extern FUN_02058B24
+.extern FUN_02058B3C
+.extern FUN_02058B80
+.extern FUN_0205DD80
+.extern FUN_0205DFE8
+.extern FUN_0205E080
+.extern FUN_0205E098
+.extern FUN_0205E480
+.extern FUN_0205EB14
+.extern FUN_0205F154
+.extern FUN_0205F164
+.extern FUN_0205F1A4
+.extern FUN_0205F6E8
+.extern FUN_0205FC50
+.extern FUN_02060064
+.extern FUN_020600A0
+.extern FUN_020600DC
+.extern FUN_020603B0
+.extern FUN_0206043C
+.extern FUN_02060D1C
+.extern FUN_02060D48
+.extern FUN_02060FBC
+.extern FUN_02061904
+.extern FUN_020646DC
+.extern FUN_02066D90
+.extern FUN_02066DD4
+.extern FUN_02066EA4
+.extern FUN_02068758
+.extern FUN_02068A80
+.extern FUN_02068AD8
+.extern FUN_0206A094
+.extern FUN_0206A92C
+.extern FUN_0206A964
+.extern FUN_0206A984
+.extern FUN_0206ABC4
+.extern FUN_0206B8CC
+.extern FUN_0206B9DC
+.extern FUN_0206BB5C
+.extern FUN_0206BB74
+.extern FUN_0206BE48
+.extern FUN_0206E640
+.extern FUN_0206E790
+.extern FUN_02079AAC
+.extern FUN_02085FD0
+.extern FUN_0208603C
+.extern FUN_02086060
+.extern FUN_02089368
+.extern FUN_02089394
+.extern FUN_020BC02C
+.extern FUN_021D80E4
+.extern FUN_021D9320
+.extern FUN_021D94B4
+.extern FUN_021D9510
+.extern FUN_021DA03C
+.extern FUN_021DA080
+.extern FUN_021DA0DC
+.extern FUN_021DA0E0
+.extern FUN_021DA0E8
+.extern FUN_021DA118
+.extern FUN_021DA138
+.extern FUN_021DA1A0
+.extern FUN_021DA1A4
+.extern FUN_021DA1A8
+.extern FUN_021DA20C
+.extern FUN_021DA4BC
+.extern FUN_021DB44C
+.extern FUN_021DB4B0
+.extern FUN_021DB52C
+.extern FUN_021DB53C
+.extern FUN_021DBA40
+.extern FUN_021DBA78
+.extern FUN_021DBAA0
+.extern FUN_021E4BE8
+.extern FUN_021E4C00
+.extern FUN_021E4C08
+.extern FUN_021E4C20
+.extern FUN_021E4C24
+.extern FUN_021E4C6C
+.extern FUN_021E4DC4
+.extern FUN_021E4E90
+.extern FUN_021E4EE4
+.extern FUN_021E4EFC
+.extern FUN_021E506C
+.extern FUN_021E5078
+.extern FUN_021E5094
+.extern FUN_021E50A0
+.extern FUN_021E50AC
+.extern FUN_021E50C8
+.extern FUN_021E50D4
+.extern FUN_021E5114
+.extern FUN_021E5198
+.extern FUN_021E51EC
+.extern FUN_021E5224
+.extern FUN_021E5260
+.extern FUN_021E5294
+.extern FUN_021E7C80
+.extern FUN_021E7E9C
+.extern FUN_021E7EC0
+.extern FUN_021E7ECC
+.extern FUN_021E7EEC
+.extern FUN_021E8698
+.extern FUN_021F0514
+.extern FUN_021F1C1C
+.extern FUN_021F1C30
+.extern FUN_021F1E64
+.extern FUN_021F220C
+.extern FUN_021F51D0
+.extern FUN_021F522C
+.extern FUN_021F5268
+.extern FUN_021F52C8
+.extern FUN_021F531C
+.extern FUN_021F5348
+.extern FUN_021F5358
+.extern FUN_021F5384
+.extern FUN_021F53BC
+.extern FUN_021F53F8
+.extern FUN_021F5400
+.extern FUN_021F5424
+.extern FUN_021F5430
+.extern FUN_021F54CC
+.extern FUN_021F54D0
+.extern FUN_021F54D8
+.extern FUN_021F61F4
+.extern FUN_021F6234
+.extern FUN_021F6240
+.extern FUN_021F6254
diff --git a/arm9/modules/06/asm/module_06.s b/arm9/modules/06/asm/module_06.s index cccb02ee..ac7d6b48 100644 --- a/arm9/modules/06/asm/module_06.s +++ b/arm9/modules/06/asm/module_06.s @@ -11,7 +11,7 @@ MOD06_022396A0: ; 0x022396A0 add r4, r2, #0 add r6, r3, #0 str r1, [r5] - bl FUN_0223972C + bl MOD06_0223972C mov r0, #0 str r0, [r5, #0x38] str r4, [r5, #0x30] @@ -19,8 +19,8 @@ MOD06_022396A0: ; 0x022396A0 pop {r4, r5, r6, pc} .align 2, 0 - thumb_func_start FUN_022396BC -FUN_022396BC: ; 0x022396BC + thumb_func_start MOD06_022396BC +MOD06_022396BC: ; 0x022396BC push {r4, lr} add r4, r0, #0 ldr r1, [r4, #0x38] @@ -40,7 +40,7 @@ _022396D2: ; jump table .short _02239708 - _022396D2 - 2 ; case 4 .short _02239712 - _022396D2 - 2 ; case 5 _022396DE: - bl FUN_022397F4 + bl MOD06_022397F4 ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] @@ -48,28 +48,28 @@ _022396DE: _022396EA: ldr r0, [r4, #0x30] ldr r1, [r4, #0x34] - bl FUN_0223987C + bl MOD06_0223987C str r0, [r4, #0x2c] ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] pop {r4, pc} _022396FC: - bl FUN_022398A8 + bl MOD06_022398A8 ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] pop {r4, pc} _02239708: - bl FUN_02239808 + bl MOD06_02239808 ldr r0, [r4, #0x38] add r0, r0, #1 str r0, [r4, #0x38] _02239712: pop {r4, pc} - thumb_func_start FUN_02239714 -FUN_02239714: ; 0x02239714 + thumb_func_start MOD06_02239714 +MOD06_02239714: ; 0x02239714 push {r4, lr} add r4, r0, #0 ldr r0, [r4, #0x38] @@ -81,13 +81,13 @@ _02239722: str r0, [r4, #0x38] pop {r4, pc} - thumb_func_start FUN_02239728 -FUN_02239728: ; 0x02239728 + thumb_func_start MOD06_02239728 +MOD06_02239728: ; 0x02239728 ldr r0, [r0, #0x38] bx lr - thumb_func_start FUN_0223972C -FUN_0223972C: ; 0x0223972C + thumb_func_start MOD06_0223972C +MOD06_0223972C: ; 0x0223972C push {r4, lr} add r4, r0, #0 bl GX_GetBankForBGExtPltt_2 @@ -113,8 +113,8 @@ FUN_0223972C: ; 0x0223972C pop {r4, pc} .align 2, 0 - thumb_func_start FUN_02239770 -FUN_02239770: ; 0x02239770 + thumb_func_start MOD06_02239770 +MOD06_02239770: ; 0x02239770 push {r4, lr} sub sp, #0x28 ldr r4, _0223978C ; =0x0224F1F4 @@ -132,8 +132,8 @@ _0223977A: .align 2, 0 _0223978C: .word 0x0224F1F4 - thumb_func_start FUN_02239790 -FUN_02239790: ; 0x02239790 + thumb_func_start MOD06_02239790 +MOD06_02239790: ; 0x02239790 push {r4, r5, lr} sub sp, #0x2c ldr r5, _022397EC ; =0x0224F180 @@ -178,49 +178,49 @@ FUN_02239790: ; 0x02239790 _022397EC: .word 0x0224F180 _022397F0: .word 0x0224F1D8 - thumb_func_start FUN_022397F4 -FUN_022397F4: ; 0x022397F4 - ldr r3, _02239800 ; =FUN_0200CA98 + thumb_func_start MOD06_022397F4 +MOD06_022397F4: ; 0x022397F4 + ldr r3, _02239800 ; =0x0200CA99 mov r2, #1 add r1, r0, #0 - ldr r0, _02239804 ; =FUN_0223981C + ldr r0, _02239804 ; =MOD06_0223981C lsl r2, r2, #0xa bx r3 .align 2, 0 -_02239800: .word FUN_0200CA98 -_02239804: .word FUN_0223981C +_02239800: .word 0x0200CA99 +_02239804: .word MOD06_0223981C - thumb_func_start FUN_02239808 -FUN_02239808: ; 0x02239808 - ldr r3, _02239814 ; =FUN_0200CA98 + thumb_func_start MOD06_02239808 +MOD06_02239808: ; 0x02239808 + ldr r3, _02239814 ; =0x0200CA99 mov r2, #1 add r1, r0, #0 - ldr r0, _02239818 ; =FUN_02239840 + ldr r0, _02239818 ; =MOD06_02239840 lsl r2, r2, #0xa bx r3 .align 2, 0 -_02239814: .word FUN_0200CA98 -_02239818: .word FUN_02239840 +_02239814: .word 0x0200CA99 +_02239818: .word MOD06_02239840 - thumb_func_start FUN_0223981C -FUN_0223981C: ; 0x0223981C + thumb_func_start MOD06_0223981C +MOD06_0223981C: ; 0x0223981C push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 - bl FUN_02239770 + bl MOD06_02239770 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02239864 + bl MOD06_02239864 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02239790 + bl MOD06_02239790 add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} .align 2, 0 - thumb_func_start FUN_02239840 -FUN_02239840: ; 0x02239840 + thumb_func_start MOD06_02239840 +MOD06_02239840: ; 0x02239840 push {r3, r4, r5, lr} add r4, r1, #0 add r5, r0, #0 @@ -228,23 +228,23 @@ FUN_02239840: ; 0x02239840 bl FUN_0201E66C ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_02239864 + bl MOD06_02239864 ldr r0, [r4] ldr r0, [r0, #8] - bl FUN_0223986C + bl MOD06_0223986C add r0, r5, #0 bl FUN_0200CAB4 pop {r3, r4, r5, pc} - thumb_func_start FUN_02239864 -FUN_02239864: ; 0x02239864 - ldr r3, _02239868 ; =FUN_021D7A28 + thumb_func_start MOD06_02239864 +MOD06_02239864: ; 0x02239864 + ldr r3, _02239868 ; =0x021D7A29 bx r3 .align 2, 0 -_02239868: .word FUN_021D7A28 + 1 ; TODO: disassemble the module that defines this +_02239868: .word 0x021D7A29 - thumb_func_start FUN_0223986C -FUN_0223986C: ; 0x0223986C + thumb_func_start MOD06_0223986C +MOD06_0223986C: ; 0x0223986C push {r3, lr} bl FUN_021D7A20 mov r0, #1 @@ -252,8 +252,8 @@ FUN_0223986C: ; 0x0223986C bl FUN_0201E6E4 pop {r3, pc} - thumb_func_start FUN_0223987C -FUN_0223987C: ; 0x0223987C + thumb_func_start MOD06_0223987C +MOD06_0223987C: ; 0x0223987C push {r3, r4, r5, r6, lr} sub sp, #0x2c ldr r6, _022398A4 ; =0x0224F21C @@ -277,21 +277,44200 @@ _0223988A: .align 2, 0 _022398A4: .word 0x0224F21C - thumb_func_start FUN_022398A8 -FUN_022398A8: ; 0x022398A8 - ldr r3, _022398B4 ; =FUN_0200CA98 + thumb_func_start MOD06_022398A8 +MOD06_022398A8: ; 0x022398A8 + ldr r3, _022398B4 ; =0x0200CA99 mov r2, #1 add r1, r0, #0 - ldr r0, _022398B8 ; =0x022398BD + ldr r0, _022398B8 ; =MOD06_022398BC lsl r2, r2, #0xa bx r3 .align 2, 0 -_022398B4: .word FUN_0200CA98 -_022398B8: .word 0x022398BD +_022398B4: .word 0x0200CA99 +_022398B8: .word MOD06_022398BC + + thumb_func_start MOD06_022398BC +MOD06_022398BC: ; 0x022398BC + push {r4, lr} + add r1, #0x2c + add r4, r0, #0 + add r0, r1, #0 + mov r1, #1 + mov r2, #0 + add r3, r1, #0 + bl FUN_021E8698 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022398D8 +MOD06_022398D8: ; 0x022398D8 + push {r4, lr} + ldr r0, [r0, #0x34] + add r4, r2, #0 + bl FUN_02058060 + cmp r4, #1 + bne _022398F0 + mov r1, #1 + lsl r1, r1, #0x14 + bl FUN_02058410 + pop {r4, pc} +_022398F0: + mov r1, #1 + lsl r1, r1, #0x14 + bl FUN_02058418 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022398FC +MOD06_022398FC: ; 0x022398FC + push {r4, lr} + add r4, r0, #0 + bl FUN_02046528 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _02239918 + cmp r0, #1 + beq _02239930 + b _02239940 +_02239918: + ldr r0, [r4] + bl MOD06_0223A4E0 + ldr r0, [r4] + bl MOD06_0223A5B0 + cmp r0, #1 + bne _02239940 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239940 +_02239930: + ldr r0, [r4] + bl MOD06_0223A44C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_02239940: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02239944 +MOD06_02239944: ; 0x02239944 + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r2, r5, #0 + mov r1, #0x10 + mov r0, #0 +_02239960: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02239960 + mov r0, #4 + bl MOD06_0223A428 + str r0, [r5] + mov r1, #0x10 + str r1, [sp] + ldr r0, [r4, #0x20] + lsl r1, r1, #9 + str r0, [sp, #4] + ldr r0, [r5] + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r1, _02239994 ; =MOD06_022398FC + add r0, r6, #0 + add r2, r5, #0 + bl FUN_0204640C + add sp, #8 + pop {r4, r5, r6, pc} + nop +_02239994: .word MOD06_022398FC + + thumb_func_start MOD06_02239998 +MOD06_02239998: ; 0x02239998 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + bl MOD06_0223A63C + add r4, r0, #0 + ldr r0, [r5] + bl MOD06_0223A638 + ldr r1, [r5, #8] + cmp r1, r0 + beq _022399C4 + mov r1, #2 + str r0, [r5, #8] + add r0, r4, #0 + lsl r1, r1, #0xe + bl FX_Div + sub r1, r4, r0 + ldr r0, [r5] + bl MOD06_0223A640 +_022399C4: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022399C8 +MOD06_022399C8: ; 0x022399C8 + push {r4, lr} + add r4, r0, #0 + bl FUN_02046528 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #7 + bhi _02239AA4 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022399EA: ; jump table + .short _022399FA - _022399EA - 2 ; case 0 + .short _02239A0A - _022399EA - 2 ; case 1 + .short _02239A1E - _022399EA - 2 ; case 2 + .short _02239A36 - _022399EA - 2 ; case 3 + .short _02239A60 - _022399EA - 2 ; case 4 + .short _02239A72 - _022399EA - 2 ; case 5 + .short _02239A84 - _022399EA - 2 ; case 6 + .short _02239A94 - _022399EA - 2 ; case 7 +_022399FA: + mov r0, #0 + mov r1, #1 + bl FUN_020053CC + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A0A: + bl FUN_02005404 + cmp r0, #0 + bne _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x10 + str r0, [r4, #4] + b _02239AA4 +_02239A1E: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, _02239AA8 ; =0x0000065C + bl FUN_020054C8 + b _02239AA4 +_02239A36: + ldr r0, [r4] + bl MOD06_0223A4E0 + add r0, r4, #0 + bl MOD06_02239998 + ldr r0, [r4] + bl MOD06_0223A5B0 + cmp r0, #1 + bne _02239AA4 + ldr r0, _02239AA8 ; =0x0000065C + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + mov r0, #0x10 + str r0, [r4, #4] + b _02239AA4 +_02239A60: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A72: + mov r0, #0x7f + mov r1, #0x10 + mov r2, #0 + bl FUN_0200538C + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A84: + bl FUN_02005404 + cmp r0, #0 + bne _02239AA4 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + b _02239AA4 +_02239A94: + ldr r0, [r4] + bl MOD06_0223A44C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_02239AA4: + mov r0, #0 + pop {r4, pc} + .align 2, 0 +_02239AA8: .word 0x0000065C + + thumb_func_start MOD06_02239AAC +MOD06_02239AAC: ; 0x02239AAC + push {r4, r5, r6, lr} + sub sp, #8 + add r6, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x10 + bl FUN_02016998 + add r5, r0, #0 + add r2, r5, #0 + mov r1, #0x10 + mov r0, #0 +_02239AC8: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02239AC8 + mov r0, #4 + bl MOD06_0223A428 + str r0, [r5] + mov r0, #0x18 + str r0, [sp] + ldr r0, [r4, #0x20] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [r5] + lsl r1, r1, #0xe + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r5] + bl MOD06_0223A638 + str r0, [r5, #8] + ldr r1, _02239B04 ; =MOD06_022399C8 + add r0, r6, #0 + add r2, r5, #0 + bl FUN_0204640C + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_02239B04: .word MOD06_022399C8 + + thumb_func_start MOD06_02239B08 +MOD06_02239B08: ; 0x02239B08 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0x74 + bl Call_FillMemWithValue + mov r0, #4 + add r1, r5, #0 + bl MOD06_0223AC78 + str r0, [r4, #0x44] + mov r0, #4 + bl MOD06_0223A428 + str r0, [r4, #0x48] + mov r0, #4 + bl MOD06_0223A644 + str r0, [r4, #0x4c] + mov r0, #0 + str r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02239B38 +MOD06_02239B38: ; 0x02239B38 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x44] + bl MOD06_0223ACC0 + ldr r0, [r4, #0x50] + bl MOD06_0223B8C0 + ldr r0, [r4, #0x48] + bl MOD06_0223A44C + ldr r0, [r4, #0x4c] + bl MOD06_0223A660 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02239B58 +MOD06_02239B58: ; 0x02239B58 + push {r4, r5, r6, lr} + add r4, r2, #0 + ldr r0, [r4] + add r5, r1, #0 + cmp r0, #0xb + bhi _02239BB0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239B70: ; jump table + .short _02239B88 - _02239B70 - 2 ; case 0 + .short _02239B9C - _02239B70 - 2 ; case 1 + .short _02239BBA - _02239B70 - 2 ; case 2 + .short _02239BCE - _02239B70 - 2 ; case 3 + .short _02239BEC - _02239B70 - 2 ; case 4 + .short _02239C16 - _02239B70 - 2 ; case 5 + .short _02239C46 - _02239B70 - 2 ; case 6 + .short _02239C56 - _02239B70 - 2 ; case 7 + .short _02239C72 - _02239B70 - 2 ; case 8 + .short _02239C86 - _02239B70 - 2 ; case 9 + .short _02239CA0 - _02239B70 - 2 ; case 10 + .short _02239CBA - _02239B70 - 2 ; case 11 +_02239B88: + add r0, r4, #0 + mov r2, #8 + add r0, #8 + add r3, r2, #0 + bl MOD06_022396A0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239B9C: + add r0, r4, #0 + add r0, #8 + bl MOD06_022396BC + add r0, r4, #0 + add r0, #8 + bl MOD06_02239728 + cmp r0, #2 + beq _02239BB2 +_02239BB0: + b _02239CBA +_02239BB2: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239BBA: + ldr r0, [r4, #0x44] + mov r1, #5 + bl MOD06_0223ACD8 + mov r0, #0xf0 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239BCE: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239CBA + add r0, r4, #0 + ldr r1, [r4, #0x48] + ldr r2, [r4, #0x4c] + ldr r3, [r5, #0x20] + add r0, #0x54 + bl MOD06_02239D18 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239BEC: + add r0, r4, #0 + add r0, #0x54 + bl MOD06_02239D2C + add r5, r0, #0 + ldr r0, [r4, #0x44] + bl MOD06_0223AD10 + cmp r5, #1 + bne _02239CBA + cmp r0, #1 + bne _02239CBA + add r0, r4, #0 + ldr r1, [r4, #0x4c] + add r0, #0x68 + bl MOD06_02239E60 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C16: + add r0, r4, #0 + add r0, #0x68 + bl MOD06_02239E6C + add r6, r0, #0 + ldr r0, [r4, #0x68] + cmp r0, #3 + bne _02239C3A + ldr r0, [r4, #0x70] + bl MOD06_0223A748 + cmp r0, #0xd + bne _02239C3A + mov r0, #4 + add r1, r5, #0 + bl MOD06_0223B828 + str r0, [r4, #0x50] +_02239C3A: + cmp r6, #1 + bne _02239CBA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C46: + add r0, r4, #0 + add r0, #8 + bl MOD06_02239714 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C56: + add r0, r4, #0 + add r0, #8 + bl MOD06_022396BC + add r0, r4, #0 + add r0, #8 + bl MOD06_02239728 + cmp r0, #5 + bne _02239CBA + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C72: + ldr r0, [r4, #0x50] + mov r1, #5 + bl MOD06_0223B8EC + mov r0, #0x48 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239CBA +_02239C86: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0 + bgt _02239CA0 + add r0, r5, #0 + mov r1, #5 + mov r2, #1 + bl MOD06_022398D8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02239CA0: + ldr r0, [r4, #0x50] + bl MOD06_0223B924 + cmp r0, #1 + bne _02239CBA + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl MOD06_022398D8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02239CBA: + ldr r0, [r4, #0x44] + bl MOD06_0223AD24 + ldr r0, [r4, #0x48] + bl MOD06_0223A4E0 + ldr r0, [r4, #0x4c] + bl MOD06_0223A6DC + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02239CD0 +MOD06_02239CD0: ; 0x02239CD0 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x44] + bl MOD06_0223AD9C + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _02239CE4 + bl MOD06_0223B93C +_02239CE4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02239CE8 +MOD06_02239CE8: ; 0x02239CE8 + ldr r0, [r0, #4] + ldr r3, _02239CF4 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _02239CF8 ; =0x0224F1C0 + bx r3 + nop +_02239CF4: .word 0x021D8025 +_02239CF8: .word 0x0224F1C0 + + thumb_func_start MOD06_02239CFC +MOD06_02239CFC: ; 0x02239CFC + ldr r3, _02239D00 ; =0x021D80A5 + bx r3 + .align 2, 0 +_02239D00: .word 0x021D80A5 + + thumb_func_start MOD06_02239D04 +MOD06_02239D04: ; 0x02239D04 + push {r3, lr} + bl FUN_021D80E4 + ldr r0, [r0] + cmp r0, #0xb + bne _02239D14 + mov r0, #1 + pop {r3, pc} +_02239D14: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02239D18 +MOD06_02239D18: ; 0x02239D18 + push {r3, r4} + mov r4, #0 + str r4, [r0] + str r4, [r0, #4] + str r1, [r0, #8] + str r2, [r0, #0xc] + str r3, [r0, #0x10] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_02239D2C +MOD06_02239D2C: ; 0x02239D2C + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #7 + bls _02239D3A + b _02239E58 +_02239D3A: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239D46: ; jump table + .short _02239D56 - _02239D46 - 2 ; case 0 + .short _02239D62 - _02239D46 - 2 ; case 1 + .short _02239D82 - _02239D46 - 2 ; case 2 + .short _02239DB6 - _02239D46 - 2 ; case 3 + .short _02239DD6 - _02239D46 - 2 ; case 4 + .short _02239E00 - _02239D46 - 2 ; case 5 + .short _02239E20 - _02239D46 - 2 ; case 6 + .short _02239E52 - _02239D46 - 2 ; case 7 +_02239D56: + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239E58 +_02239D62: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x10 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x50 + str r0, [r4, #4] + b _02239E58 +_02239D82: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x18 + bl MOD06_0223A67C + mov r1, #8 + str r1, [sp] + ldr r0, [r4, #0x10] + lsl r1, r1, #0xa + str r0, [sp, #4] + ldr r0, [r4, #8] + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x20 + str r0, [r4, #4] + b _02239E58 +_02239DB6: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x1b + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x3c + str r0, [r4, #4] + b _02239E58 +_02239DD6: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + mov r0, #0xa + str r0, [sp] + ldr r0, [r4, #0x10] + mov r1, #3 + str r0, [sp, #4] + ldr r0, [r4, #8] + lsl r1, r1, #0xc + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x3c + str r0, [r4, #4] + b _02239E58 +_02239E00: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #8 + mov r3, #0x20 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x28 + str r0, [r4, #4] + b _02239E58 +_02239E20: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239E58 + ldr r0, [r4, #0xc] + mov r1, #0xd + mov r2, #4 + mov r3, #0x10 + bl MOD06_0223A67C + mov r0, #0xc + str r0, [sp] + ldr r0, [r4, #0x10] + mov r1, #1 + str r0, [sp, #4] + ldr r0, [r4, #8] + lsl r1, r1, #0xe + mov r2, #0 + mov r3, #1 + bl MOD06_0223A460 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239E58 +_02239E52: + add sp, #8 + mov r0, #1 + pop {r4, pc} +_02239E58: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02239E60 +MOD06_02239E60: ; 0x02239E60 + mov r2, #0 + str r2, [r0] + mov r2, #0x20 + str r2, [r0, #4] + str r1, [r0, #8] + bx lr + + thumb_func_start MOD06_02239E6C +MOD06_02239E6C: ; 0x02239E6C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #4 + bhi _02239F00 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02239E82: ; jump table + .short _02239E8C - _02239E82 - 2 ; case 0 + .short _02239E9C - _02239E82 - 2 ; case 1 + .short _02239EB4 - _02239E82 - 2 ; case 2 + .short _02239ED4 - _02239E82 - 2 ; case 3 + .short _02239EF4 - _02239E82 - 2 ; case 4 +_02239E8C: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02239F00 +_02239E9C: + ldr r0, [r4, #8] + mov r1, #0xd + mov r2, #4 + mov r3, #8 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x10 + str r0, [r4, #4] + b _02239F00 +_02239EB4: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + ldr r0, [r4, #8] + mov r1, #0xd + mov r2, #4 + mov r3, #8 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x10 + str r0, [r4, #4] + b _02239F00 +_02239ED4: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + ldr r0, [r4, #8] + mov r1, #0xd + mov r2, #4 + mov r3, #0x20 + bl MOD06_0223A67C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0x28 + str r0, [r4, #4] + b _02239F00 +_02239EF4: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bpl _02239F00 + mov r0, #1 + pop {r4, pc} +_02239F00: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02239F04 +MOD06_02239F04: ; 0x02239F04 + push {r4, r5, r6, lr} + ldr r0, [r1, #0x34] + mov r1, #5 + add r4, r2, #0 + bl FUN_02058060 + add r5, r0, #0 + bne _02239F18 + bl ErrorHandling +_02239F18: + add r0, r5, #0 + bl FUN_02058B2C + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + add r0, r5, #0 + bl FUN_02058B4C + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + mov r0, #4 + bl MOD06_0223B2F8 + add r1, r6, #0 + mov r2, #0 + add r3, r5, #0 + str r0, [r4] + bl MOD06_0223B30C + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02239F40 +MOD06_02239F40: ; 0x02239F40 + ldr r3, _02239F48 ; =MOD06_0223B304 + ldr r0, [r2] + bx r3 + nop +_02239F48: .word MOD06_0223B304 + + thumb_func_start MOD06_02239F4C +MOD06_02239F4C: ; 0x02239F4C + ldr r3, _02239F54 ; =MOD06_0223B338 + ldr r0, [r2] + bx r3 + nop +_02239F54: .word MOD06_0223B338 + + thumb_func_start MOD06_02239F58 +MOD06_02239F58: ; 0x02239F58 + ldr r3, _02239F60 ; =MOD06_0223B340 + ldr r0, [r2] + bx r3 + nop +_02239F60: .word MOD06_0223B340 + + thumb_func_start MOD06_02239F64 +MOD06_02239F64: ; 0x02239F64 + ldr r0, [r0, #4] + ldr r3, _02239F70 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _02239F74 ; =0x0224F190 + bx r3 + nop +_02239F70: .word 0x021D8025 +_02239F74: .word 0x0224F190 + + thumb_func_start MOD06_02239F78 +MOD06_02239F78: ; 0x02239F78 + ldr r3, _02239F7C ; =0x021D80A5 + bx r3 + .align 2, 0 +_02239F7C: .word 0x021D80A5 + + thumb_func_start MOD06_02239F80 +MOD06_02239F80: ; 0x02239F80 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r0, _0223A008 ; =0x00001701 + ldr r1, [r5, #0x20] + add r4, r2, #0 + bl FUN_0201EEF0 + ldr r0, _0223A00C ; =0x000C8A55 + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldr r0, _0223A010 ; =0x002280EF + str r0, [sp, #8] + ldr r0, _0223A014 ; =0x000CA424 + str r0, [sp, #0xc] + ldr r0, _0223A018 ; =0x00268C50 + str r0, [sp, #0x10] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F04C + ldr r1, _0223A01C ; =0x000022A2 + add r0, sp, #0 + strh r1, [r0] + mov r1, #0x3e + lsl r1, r1, #0xa + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #2 + mov r1, #0x7d + ldr r2, [r5, #0x20] + lsl r0, r0, #0xc + lsl r1, r1, #0x10 + bl FUN_0201EC94 + mov r0, #4 + bl MOD06_0223B574 + str r0, [r4, #4] + mov r0, #4 + bl MOD06_0223B648 + str r0, [r4, #8] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F02C + ldr r0, [r4, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B598 + ldr r0, [r4, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B66C + add sp, #0x14 + pop {r4, r5, pc} + nop +_0223A008: .word 0x00001701 +_0223A00C: .word 0x000C8A55 +_0223A010: .word 0x002280EF +_0223A014: .word 0x000CA424 +_0223A018: .word 0x00268C50 +_0223A01C: .word 0x000022A2 + + thumb_func_start MOD06_0223A020 +MOD06_0223A020: ; 0x0223A020 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r0, _0223A0B8 ; =0x00000F81 + ldr r1, [r5, #0x20] + add r4, r2, #0 + bl FUN_0201EEF0 + ldr r0, _0223A0BC ; =0x0017E532 + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldr r0, _0223A0C0 ; =0x00F99D58 + str r0, [sp, #8] + ldr r0, _0223A0C4 ; =0x000C5502 + str r0, [sp, #0xc] + ldr r0, _0223A0C8 ; =0x028CF549 + str r0, [sp, #0x10] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F04C + ldr r1, _0223A0CC ; =0x00000642 + add r0, sp, #0 + strh r1, [r0] + ldr r1, _0223A0D0 ; =0x0000EDA0 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #0x16 + mov r1, #0x7d + ldr r2, [r5, #0x20] + lsl r0, r0, #0xe + lsl r1, r1, #0x10 + bl FUN_0201EC94 + add r0, r5, #0 + add r0, #0x48 + bl FUN_021DB4B0 + ldr r0, [r5, #0x40] + mov r1, #2 + bl FUN_021DB44C + str r0, [r5, #0x48] + mov r0, #4 + bl MOD06_0223B574 + str r0, [r4, #4] + mov r0, #4 + bl MOD06_0223B648 + str r0, [r4, #8] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F02C + ldr r0, [r4, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B5D0 + ldr r0, [r4, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B6A4 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0223A0B8: .word 0x00000F81 +_0223A0BC: .word 0x0017E532 +_0223A0C0: .word 0x00F99D58 +_0223A0C4: .word 0x000C5502 +_0223A0C8: .word 0x028CF549 +_0223A0CC: .word 0x00000642 +_0223A0D0: .word 0x0000EDA0 + + thumb_func_start MOD06_0223A0D4 +MOD06_0223A0D4: ; 0x0223A0D4 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r1, #0 + ldr r0, _0223A16C ; =0x000004C1 + ldr r1, [r5, #0x20] + add r4, r2, #0 + bl FUN_0201EEF0 + ldr r0, _0223A170 ; =0x0026BEC1 + ldr r1, [r5, #0x20] + bl FUN_0201EFE0 + ldr r0, _0223A174 ; =0x01DF5DFD + str r0, [sp, #8] + ldr r0, _0223A178 ; =0x00073A0C + str r0, [sp, #0xc] + ldr r0, _0223A17C ; =0x02B9F4A2 + str r0, [sp, #0x10] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F04C + ldr r1, _0223A180 ; =0x000004C2 + add r0, sp, #0 + strh r1, [r0] + mov r1, #0x29 + lsl r1, r1, #6 + strh r1, [r0, #2] + mov r1, #0 + strh r1, [r0, #4] + ldr r1, [r5, #0x20] + add r0, sp, #0 + bl FUN_0201EF90 + mov r0, #0xb + ldr r1, _0223A184 ; =0x005C8000 + ldr r2, [r5, #0x20] + lsl r0, r0, #0x10 + bl FUN_0201EC94 + add r0, r5, #0 + add r0, #0x48 + bl FUN_021DB4B0 + ldr r0, [r5, #0x40] + mov r1, #2 + bl FUN_021DB44C + str r0, [r5, #0x48] + mov r0, #4 + bl MOD06_0223B574 + str r0, [r4, #4] + mov r0, #4 + bl MOD06_0223B648 + str r0, [r4, #8] + ldr r1, [r5, #0x20] + add r0, sp, #8 + bl FUN_0201F02C + ldr r0, [r4, #4] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B60C + ldr r0, [r4, #8] + ldr r1, [sp, #8] + ldr r2, [sp, #0xc] + ldr r3, [sp, #0x10] + bl MOD06_0223B6E0 + add sp, #0x14 + pop {r4, r5, pc} + nop +_0223A16C: .word 0x000004C1 +_0223A170: .word 0x0026BEC1 +_0223A174: .word 0x01DF5DFD +_0223A178: .word 0x00073A0C +_0223A17C: .word 0x02B9F4A2 +_0223A180: .word 0x000004C2 +_0223A184: .word 0x005C8000 + + thumb_func_start MOD06_0223A188 +MOD06_0223A188: ; 0x0223A188 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #4] + bl MOD06_0223B580 + ldr r0, [r4, #8] + bl MOD06_0223B654 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A19C +MOD06_0223A19C: ; 0x0223A19C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #4] + bl MOD06_0223B588 + ldr r0, [r4, #8] + bl MOD06_0223B65C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A1B0 +MOD06_0223A1B0: ; 0x0223A1B0 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #4] + bl MOD06_0223B590 + ldr r0, [r4, #8] + bl MOD06_0223B664 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A1C4 +MOD06_0223A1C4: ; 0x0223A1C4 + lsl r2, r1, #2 + ldr r1, _0223A1D8 ; =0x0224F174 + ldr r3, _0223A1DC ; =0x021D8025 + ldr r2, [r1, r2] + ldr r1, _0223A1E0 ; =0x02252240 + str r2, [r1, #8] + ldr r0, [r0, #4] + ldr r1, _0223A1E4 ; =0x02252240 + ldr r0, [r0, #4] + bx r3 + .align 2, 0 +_0223A1D8: .word 0x0224F174 +_0223A1DC: .word 0x021D8025 +_0223A1E0: .word 0x02252240 +_0223A1E4: .word 0x02252240 + + thumb_func_start MOD06_0223A1E8 +MOD06_0223A1E8: ; 0x0223A1E8 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + add r0, r5, #0 + bl MOD06_0223A75C + str r0, [r4, #8] + mov r0, #4 + add r1, r5, #0 + bl MOD06_0223B71C + str r0, [r4, #0xc] + mov r0, #0 + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A208 +MOD06_0223A208: ; 0x0223A208 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #8] + bl MOD06_0223A790 + ldr r0, [r4, #0xc] + bl MOD06_0223B73C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A21C +MOD06_0223A21C: ; 0x0223A21C + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4] + cmp r0, #6 + bhi _0223A2CC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223A234: ; jump table + .short _0223A242 - _0223A234 - 2 ; case 0 + .short _0223A26A - _0223A234 - 2 ; case 1 + .short _0223A2CC - _0223A234 - 2 ; case 2 + .short _0223A288 - _0223A234 - 2 ; case 3 + .short _0223A29A - _0223A234 - 2 ; case 4 + .short _0223A2B0 - _0223A234 - 2 ; case 5 + .short _0223A2CC - _0223A234 - 2 ; case 6 +_0223A242: + ldr r1, [r1, #0x20] + add r0, sp, #0 + bl FUN_0201F02C + mov r2, #2 + ldr r3, [sp, #4] + lsl r2, r2, #0xc + add r2, r3, r2 + ldr r0, [r4, #8] + ldr r1, [sp] + ldr r3, [sp, #8] + bl MOD06_0223A7AC + ldr r0, [r4, #0xc] + bl MOD06_0223B744 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A26A: + ldr r0, [r4, #8] + bl MOD06_0223A820 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl MOD06_0223B810 + cmp r5, #2 + bne _0223A2CC + cmp r0, #2 + bne _0223A2CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A288: + ldr r0, [r4, #8] + bl MOD06_0223A7DC + mov r0, #0x40 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A29A: + ldr r0, [r4, #4] + sub r0, r0, #1 + str r0, [r4, #4] + bne _0223A2CC + ldr r0, [r4, #0xc] + bl MOD06_0223B814 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0223A2CC +_0223A2B0: + ldr r0, [r4, #8] + bl MOD06_0223A820 + add r5, r0, #0 + ldr r0, [r4, #0xc] + bl MOD06_0223B810 + cmp r5, #5 + bne _0223A2CC + cmp r0, #4 + bne _0223A2CC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0223A2CC: + ldr r0, [r4, #8] + bl MOD06_0223A868 + ldr r0, [r4, #0xc] + bl MOD06_0223B768 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0223A2DC +MOD06_0223A2DC: ; 0x0223A2DC + ldr r3, _0223A2E4 ; =MOD06_0223A828 + ldr r0, [r2, #8] + bx r3 + nop +_0223A2E4: .word MOD06_0223A828 + + thumb_func_start MOD06_0223A2E8 +MOD06_0223A2E8: ; 0x0223A2E8 + ldr r0, [r0, #4] + ldr r3, _0223A2F4 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0223A2F8 ; =0x0224F1A8 + bx r3 + nop +_0223A2F4: .word 0x021D8025 +_0223A2F8: .word 0x0224F1A8 + + thumb_func_start MOD06_0223A2FC +MOD06_0223A2FC: ; 0x0223A2FC + ldr r3, _0223A300 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0223A300: .word 0x021D80A5 + + thumb_func_start MOD06_0223A304 +MOD06_0223A304: ; 0x0223A304 + push {r3, lr} + bl FUN_021D80E4 + mov r1, #3 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD06_0223A310 +MOD06_0223A310: ; 0x0223A310 + push {r3, lr} + bl FUN_021D80E4 + ldr r0, [r0] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A31C +MOD06_0223A31C: ; 0x0223A31C + str r1, [r0] + str r1, [r0, #4] + sub r1, r2, r1 + str r1, [r0, #8] + str r3, [r0, #0xc] + bx lr + + thumb_func_start MOD06_0223A328 +MOD06_0223A328: ; 0x0223A328 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r3, [r5, #0xc] + cmp r1, r3 + blt _0223A338 + add r1, r3, #0 + mov r4, #1 + b _0223A33A +_0223A338: + mov r4, #0 +_0223A33A: + ldr r2, [r5, #8] + add r0, r2, #0 + mul r0, r1 + add r1, r3, #0 + bl _s32_div_f + ldr r1, [r5, #4] + add r0, r0, r1 + str r0, [r5] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A350 +MOD06_0223A350: ; 0x0223A350 + str r1, [r0] + str r1, [r0, #4] + sub r1, r2, r1 + str r1, [r0, #8] + str r3, [r0, #0xc] + bx lr + + thumb_func_start MOD06_0223A35C +MOD06_0223A35C: ; 0x0223A35C + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r4, [r5, #0xc] + add r2, r1, #0 + cmp r2, r4 + blt _0223A36E + add r2, r4, #0 + mov r6, #1 + b _0223A370 +_0223A36E: + mov r6, #0 +_0223A370: + ldr r0, [r5, #8] + lsl r2, r2, #0xc + asr r1, r0, #0x1f + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r0, r2 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r0, r0, #0xc + orr r0, r1 + lsl r1, r4, #0xc + bl FX_Div + ldr r1, [r5, #4] + add r0, r0, r1 + str r0, [r5] + add r0, r6, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223A39C +MOD06_0223A39C: ; 0x0223A39C + push {r3, lr} + bl FUN_021F5268 + pop {r3, pc} + + thumb_func_start MOD06_0223A3A4 +MOD06_0223A3A4: ; 0x0223A3A4 + ldr r3, _0223A3A8 ; =0x021F52C9 + bx r3 + .align 2, 0 +_0223A3A8: .word 0x021F52C9 + + thumb_func_start MOD06_0223A3AC +MOD06_0223A3AC: ; 0x0223A3AC + push {r4, lr} + sub sp, #8 + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl FUN_021F531C + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0223A3C0 +MOD06_0223A3C0: ; 0x0223A3C0 + ldr r3, _0223A3C4 ; =0x021F5359 + bx r3 + .align 2, 0 +_0223A3C4: .word 0x021F5359 + + thumb_func_start MOD06_0223A3C8 +MOD06_0223A3C8: ; 0x0223A3C8 + ldr r3, _0223A3D0 ; =0x021F5385 + mov r1, #1 + lsl r1, r1, #0xc + bx r3 + .align 2, 0 +_0223A3D0: .word 0x021F5385 + + thumb_func_start MOD06_0223A3D4 +MOD06_0223A3D4: ; 0x0223A3D4 + ldr r3, _0223A3D8 ; =0x021F5385 + bx r3 + .align 2, 0 +_0223A3D8: .word 0x021F5385 + + thumb_func_start MOD06_0223A3DC +MOD06_0223A3DC: ; 0x0223A3DC + ldr r3, _0223A3E4 ; =0x021F53BD + mov r1, #1 + lsl r1, r1, #0xc + bx r3 + .align 2, 0 +_0223A3E4: .word 0x021F53BD + + thumb_func_start MOD06_0223A3E8 +MOD06_0223A3E8: ; 0x0223A3E8 + ldr r3, _0223A3EC ; =0x021F53F9 + bx r3 + .align 2, 0 +_0223A3EC: .word 0x021F53F9 + + thumb_func_start MOD06_0223A3F0 +MOD06_0223A3F0: ; 0x0223A3F0 + ldr r3, _0223A3F4 ; =0x021F5401 + bx r3 + .align 2, 0 +_0223A3F4: .word 0x021F5401 + + thumb_func_start MOD06_0223A3F8 +MOD06_0223A3F8: ; 0x0223A3F8 + ldr r3, _0223A3FC ; =0x021F5425 + bx r3 + .align 2, 0 +_0223A3FC: .word 0x021F5425 + + thumb_func_start MOD06_0223A400 +MOD06_0223A400: ; 0x0223A400 + ldr r3, _0223A404 ; =0x021F5431 + bx r3 + .align 2, 0 +_0223A404: .word 0x021F5431 + + thumb_func_start MOD06_0223A408 +MOD06_0223A408: ; 0x0223A408 + ldr r3, _0223A40C ; =0x021F54CD + bx r3 + .align 2, 0 +_0223A40C: .word 0x021F54CD + + thumb_func_start MOD06_0223A410 +MOD06_0223A410: ; 0x0223A410 + push {r3, lr} + bl FUN_021F54D0 + pop {r3, pc} + + thumb_func_start MOD06_0223A418 +MOD06_0223A418: ; 0x0223A418 + push {r3, lr} + bl FUN_021F54D8 + pop {r3, pc} + + thumb_func_start MOD06_0223A420 +MOD06_0223A420: ; 0x0223A420 + ldr r3, _0223A424 ; =0x021F54E1 + bx r3 + .align 2, 0 +_0223A424: .word 0x021F54E1 + + thumb_func_start MOD06_0223A428 +MOD06_0223A428: ; 0x0223A428 + push {r3, r4, r5, lr} + mov r1, #0x4c + add r5, r0, #0 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x4c + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r5, #0 + bl FUN_0201EB64 + str r0, [r4] + mov r0, #5 + str r0, [r4, #0x40] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A44C +MOD06_0223A44C: ; 0x0223A44C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_0201EB70 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A460 +MOD06_0223A460: ; 0x0223A460 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + add r7, r1, #0 + str r2, [sp] + add r4, r3, #0 + bl MOD06_0223A5C0 + ldr r0, [sp, #0x2c] + ldr r1, [r5] + bl FUN_0201EB78 + ldr r1, [sp, #0x2c] + add r0, sp, #4 + bl FUN_0201F02C + add r3, sp, #4 + add r2, r5, #0 + add r2, #0x28 + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, r6, #0 + str r0, [r2] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x34 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r5] + add r0, r6, #0 + bl FUN_0201EC68 + ldr r0, [r5] + bl FUN_0201EB8C + ldr r0, [sp, #0x2c] + mov r1, #0 + str r0, [r5, #4] + add r0, r5, #0 + add r0, #8 + add r2, r7, #0 + add r3, r4, #0 + bl MOD06_0223A350 + add r0, r5, #0 + ldr r2, [sp] + add r0, #0x18 + mov r1, #0 + add r3, r4, #0 + bl MOD06_0223A350 + ldr r0, [sp, #0x28] + str r0, [r5, #0x48] + ldr r0, _0223A4DC ; =0x000006D5 + bl FUN_020054C8 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A4DC: .word 0x000006D5 + + thumb_func_start MOD06_0223A4E0 +MOD06_0223A4E0: ; 0x0223A4E0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r1, [r4, #0x40] + cmp r1, #5 + bhi _0223A5AC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A4F6: ; jump table + .short _0223A502 - _0223A4F6 - 2 ; case 0 + .short _0223A524 - _0223A4F6 - 2 ; case 1 + .short _0223A546 - _0223A4F6 - 2 ; case 2 + .short _0223A56C - _0223A4F6 - 2 ; case 3 + .short _0223A5A0 - _0223A4F6 - 2 ; case 4 + .short _0223A5AC - _0223A4F6 - 2 ; case 5 +_0223A502: + ldr r1, [r4, #0x44] + add r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + add r5, r0, #0 + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r0, r4, #0 + bl MOD06_0223A628 + cmp r5, #1 + bne _0223A5AC + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A524: + ldr r1, [r4, #0x44] + sub r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r0, r4, #0 + bl MOD06_0223A628 + ldr r0, [r4, #0x44] + cmp r0, #0 + bne _0223A5AC + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A546: + ldr r1, [r4, #0x44] + add r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r5, r0, #0 + add r0, r4, #0 + neg r1, r1 + neg r2, r2 + bl MOD06_0223A628 + cmp r5, #1 + bne _0223A5AC + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A56C: + ldr r1, [r4, #0x44] + sub r1, r1, #1 + str r1, [r4, #0x44] + bl MOD06_0223A60C + ldr r1, [r4, #8] + ldr r2, [r4, #0x18] + add r0, r4, #0 + neg r1, r1 + neg r2, r2 + bl MOD06_0223A628 + ldr r0, [r4, #0x44] + cmp r0, #0 + bne _0223A5AC + ldr r0, [r4, #0x48] + sub r0, r0, #1 + str r0, [r4, #0x48] + beq _0223A598 + mov r0, #0 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A598: + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] + pop {r3, r4, r5, pc} +_0223A5A0: + ldr r0, [r4, #4] + bl FUN_0201EB8C + ldr r0, [r4, #0x40] + add r0, r0, #1 + str r0, [r4, #0x40] +_0223A5AC: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A5B0 +MOD06_0223A5B0: ; 0x0223A5B0 + ldr r0, [r0, #0x40] + cmp r0, #5 + bne _0223A5BA + mov r0, #1 + bx lr +_0223A5BA: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223A5C0 +MOD06_0223A5C0: ; 0x0223A5C0 + add r3, r0, #0 + add r3, #8 + mov r2, #0x10 + mov r1, #0 +_0223A5C8: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0223A5C8 + add r3, r0, #0 + add r3, #0x18 + mov r2, #0x10 + mov r1, #0 +_0223A5D8: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0223A5D8 + add r1, r0, #0 + add r3, r0, #0 + mov r2, #0 + add r1, #0x28 + add r3, #0x28 + strb r2, [r1] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + strb r2, [r3, #8] + strb r2, [r3, #9] + strb r2, [r3, #0xa] + strb r2, [r3, #0xb] + str r2, [r0, #0x40] + str r2, [r0, #0x44] + str r2, [r0, #0x48] + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223A60C +MOD06_0223A60C: ; 0x0223A60C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r1, [r5, #0x44] + add r0, #8 + bl MOD06_0223A35C + add r4, r0, #0 + add r0, r5, #0 + ldr r1, [r5, #0x44] + add r0, #0x18 + bl MOD06_0223A35C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A628 +MOD06_0223A628: ; 0x0223A628 + ldr r3, [r0, #0x34] + add r1, r3, r1 + str r1, [r0, #0x28] + ldr r1, [r0, #0x38] + add r1, r1, r2 + str r1, [r0, #0x2c] + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223A638 +MOD06_0223A638: ; 0x0223A638 + ldr r0, [r0, #0x48] + bx lr + + thumb_func_start MOD06_0223A63C +MOD06_0223A63C: ; 0x0223A63C + ldr r0, [r0, #0x10] + bx lr + + thumb_func_start MOD06_0223A640 +MOD06_0223A640: ; 0x0223A640 + str r1, [r0, #0x10] + bx lr + + thumb_func_start MOD06_0223A644 +MOD06_0223A644: ; 0x0223A644 + push {r4, lr} + mov r1, #0x24 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x24 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #3 + str r0, [r4, #0x1c] + add r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A660 +MOD06_0223A660: ; 0x0223A660 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0223A672 + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x20] +_0223A672: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A67C +MOD06_0223A67C: ; 0x0223A67C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + add r4, r1, #0 + add r7, r2, #0 + add r6, r3, #0 + cmp r0, #3 + beq _0223A69A + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _0223A69A + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r5, #0x20] +_0223A69A: + add r0, r5, #0 + mov r1, #0 + add r2, r4, #0 + add r3, r7, #0 + bl MOD06_0223A31C + mov r0, #0 + str r0, [r5, #0x10] + str r0, [r5, #0x1c] + str r6, [r5, #0x18] + str r4, [r5, #0x14] + ldr r0, _0223A6D0 ; =0x0400006C + ldr r1, [r5] + bl GXx_SetMasterBrightness_ + mov r2, #1 + ldr r0, _0223A6D4 ; =MOD06_0223A74C + add r1, r5, #0 + lsl r2, r2, #0xa + bl FUN_0200CA98 + str r0, [r5, #0x20] + ldr r0, _0223A6D8 ; =0x000006D4 + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223A6D0: .word 0x0400006C +_0223A6D4: .word MOD06_0223A74C +_0223A6D8: .word 0x000006D4 + + thumb_func_start MOD06_0223A6DC +MOD06_0223A6DC: ; 0x0223A6DC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x1c] + cmp r1, #3 + bhi _0223A746 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A6F2: ; jump table + .short _0223A6FA - _0223A6F2 - 2 ; case 0 + .short _0223A720 - _0223A6F2 - 2 ; case 1 + .short _0223A736 - _0223A6F2 - 2 ; case 2 + .short _0223A746 - _0223A6F2 - 2 ; case 3 +_0223A6FA: + ldr r1, [r4, #0x10] + add r1, r1, #1 + str r1, [r4, #0x10] + bl MOD06_0223A328 + cmp r0, #1 + bne _0223A746 + ldr r1, [r4, #0x14] + ldr r3, [r4, #0x18] + add r0, r4, #0 + mov r2, #0 + bl MOD06_0223A31C + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + pop {r4, pc} +_0223A720: + ldr r1, [r4, #0x10] + add r1, r1, #1 + str r1, [r4, #0x10] + bl MOD06_0223A328 + cmp r0, #1 + bne _0223A746 + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] + pop {r4, pc} +_0223A736: + ldr r0, [r4, #0x20] + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x1c] + add r0, r0, #1 + str r0, [r4, #0x1c] +_0223A746: + pop {r4, pc} + + thumb_func_start MOD06_0223A748 +MOD06_0223A748: ; 0x0223A748 + ldr r0, [r0] + bx lr + + thumb_func_start MOD06_0223A74C +MOD06_0223A74C: ; 0x0223A74C + ldr r3, _0223A754 ; =0x020C5978 + ldr r0, _0223A758 ; =0x0400006C + ldr r1, [r1] + bx r3 + .align 2, 0 +_0223A754: .word 0x020C5978 +_0223A758: .word 0x0400006C + + thumb_func_start MOD06_0223A75C +MOD06_0223A75C: ; 0x0223A75C + push {r3, r4, r5, lr} + mov r1, #5 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + bl FUN_02016998 + mov r2, #5 + mov r1, #0 + lsl r2, r2, #6 + add r4, r0, #0 + bl Call_FillMemWithValue + mov r0, #0x4b + str r5, [r4] + mov r1, #5 + lsl r0, r0, #2 + str r1, [r4, r0] + sub r0, #0x10 + add r0, r4, r0 + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223A790 +MOD06_0223A790: ; 0x0223A790 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #5 + beq _0223A7A2 + bl ErrorHandling +_0223A7A2: + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223A7AC +MOD06_0223A7AC: ; 0x0223A7AC + push {r3, r4, r5, lr} + mov r5, #0x4b + add r4, r0, #0 + mov r0, #0 + lsl r5, r5, #2 + str r0, [r4, r5] + add r0, r5, #0 + add r0, #8 + str r1, [r4, r0] + add r0, r5, #0 + add r0, #0xc + str r2, [r4, r0] + mov r2, #1 + add r5, #0x10 + ldr r0, _0223A7D8 ; =MOD06_0223A8A8 + add r1, r4, #0 + lsl r2, r2, #0xa + str r3, [r4, r5] + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + nop +_0223A7D8: .word MOD06_0223A8A8 + + thumb_func_start MOD06_0223A7DC +MOD06_0223A7DC: ; 0x0223A7DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #2 + beq _0223A7EE + bl ErrorHandling +_0223A7EE: + mov r0, #0x4b + mov r1, #3 + lsl r0, r0, #2 + str r1, [r4, r0] + add r4, #0x40 + add r0, r4, #0 + bl MOD06_0223AC70 + pop {r4, pc} + + thumb_func_start MOD06_0223A800 +MOD06_0223A800: ; 0x0223A800 + add r1, r0, #0 + mov r0, #0x13 + mov r2, #0 + lsl r0, r0, #4 + str r2, [r1, r0] + ldr r3, _0223A818 ; =0x0200CA45 + mov r2, #4 + sub r0, r0, #4 + str r2, [r1, r0] + ldr r0, _0223A81C ; =MOD06_0223A944 + lsl r2, r2, #8 + bx r3 + .align 2, 0 +_0223A818: .word 0x0200CA45 +_0223A81C: .word MOD06_0223A944 + + thumb_func_start MOD06_0223A820 +MOD06_0223A820: ; 0x0223A820 + mov r1, #0x4b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD06_0223A828 +MOD06_0223A828: ; 0x0223A828 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223A860 + sub r0, r0, #4 + cmp r0, #1 + bls _0223A860 + ldr r0, _0223A864 ; =0x04000454 + mov r1, #0 + str r1, [r0] + mov r0, #0x11 + add r2, r1, #0 + bl FUN_020BB1C0 + add r4, #0x40 + add r0, r4, #0 + bl MOD06_0223A400 + mov r2, #1 + mov r0, #0x12 + add r1, sp, #0 + str r2, [sp] + bl FUN_020BB1C0 +_0223A860: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0223A864: .word 0x04000454 + + thumb_func_start MOD06_0223A868 +MOD06_0223A868: ; 0x0223A868 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x4b + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0223A8A6 + sub r0, r0, #4 + cmp r0, #1 + bls _0223A8A6 + add r0, r4, #0 + add r0, #0x40 + bl MOD06_0223AAB0 + mov r2, #0x4b + lsl r2, r2, #2 + ldr r1, [r4, r2] + cmp r1, #1 + bne _0223A89C + add r1, r2, #0 + sub r1, #0x16 + ldrh r1, [r4, r1] + cmp r1, #1 + bne _0223A89C + mov r1, #2 + str r1, [r4, r2] +_0223A89C: + cmp r0, #1 + bne _0223A8A6 + add r0, r4, #0 + bl MOD06_0223A800 +_0223A8A6: + pop {r4, pc} + + thumb_func_start MOD06_0223A8A8 +MOD06_0223A8A8: ; 0x0223A8A8 + push {r4, lr} + sub sp, #8 + mov r3, #0x13 + add r4, r1, #0 + lsl r3, r3, #4 + ldr r1, [r4, r3] + cmp r1, #3 + bhi _0223A940 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223A8C4: ; jump table + .short _0223A8CC - _0223A8C4 - 2 ; case 0 + .short _0223A8E6 - _0223A8C4 - 2 ; case 1 + .short _0223A904 - _0223A8C4 - 2 ; case 2 + .short _0223A936 - _0223A8C4 - 2 ; case 3 +_0223A8CC: + mov r2, #8 + ldr r1, [r4] + add r0, r4, #4 + add r3, r2, #0 + bl MOD06_022396A0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A8E6: + add r0, r4, #4 + bl MOD06_022396BC + add r0, r4, #4 + bl MOD06_02239728 + cmp r0, #2 + bne _0223A940 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A904: + add r0, r3, #0 + add r0, #8 + ldr r0, [r4, r0] + add r1, r3, #0 + str r0, [sp] + add r0, r3, #0 + add r0, #0xc + ldr r0, [r4, r0] + add r3, r3, #4 + str r0, [sp, #4] + add r0, r4, #0 + sub r1, #0x14 + ldr r3, [r4, r3] + add r0, #0x40 + add r1, r4, r1 + mov r2, #4 + bl MOD06_0223A9B8 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add sp, #8 + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A936: + mov r2, #1 + sub r1, r3, #4 + str r2, [r4, r1] + bl FUN_0200CAB4 +_0223A940: + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0223A944 +MOD06_0223A944: ; 0x0223A944 + push {r4, lr} + add r4, r1, #0 + mov r1, #0x13 + lsl r1, r1, #4 + ldr r2, [r4, r1] + cmp r2, #3 + bhi _0223A9B6 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_0223A95E: ; jump table + .short _0223A966 - _0223A95E - 2 ; case 0 + .short _0223A97E - _0223A95E - 2 ; case 1 + .short _0223A990 - _0223A95E - 2 ; case 2 + .short _0223A9AC - _0223A95E - 2 ; case 3 +_0223A966: + add r0, r4, #0 + sub r1, #0x14 + add r0, #0x40 + add r1, r4, r1 + bl MOD06_0223AA78 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A97E: + add r0, r4, #4 + bl MOD06_02239714 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A990: + add r0, r4, #4 + bl MOD06_022396BC + add r0, r4, #4 + bl MOD06_02239728 + cmp r0, #5 + bne _0223A9B6 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, pc} +_0223A9AC: + mov r2, #5 + sub r1, r1, #4 + str r2, [r4, r1] + bl FUN_0200CAB4 +_0223A9B6: + pop {r4, pc} + + thumb_func_start MOD06_0223A9B8 +MOD06_0223A9B8: ; 0x0223A9B8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + mov r0, #4 + str r1, [sp, #8] + add r7, r2, #0 + str r3, [sp, #0xc] + bl MOD06_0223A644 + add r1, r6, #0 + add r1, #0xb0 + str r0, [r1] + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x62 + mov r2, #0xc + add r3, r7, #0 + bl MOD06_0223A39C + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0x10] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0x10] +_0223A9EC: + ldr r0, [sp, #8] + str r7, [sp] + add r3, r4, #0 + str r0, [sp, #4] + ldr r1, [sp, #0x10] + add r0, r5, #0 + mov r2, #0x62 + add r3, #0xd + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #2 + blt _0223A9EC + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r6, #0 + mov r5, #0 + add r4, #0x88 +_0223AA18: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #2 + blt _0223AA18 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x28] + ldr r3, [sp, #0x2c] + add r0, r6, #0 + bl MOD06_0223A410 + add r0, r6, #0 + mov r2, #1 + add r0, #0xb4 + mov r1, #0 + lsl r2, r2, #0xc + mov r3, #0x80 + bl MOD06_0223A350 + add r0, r6, #0 + mov r1, #0 + add r0, #0xc4 + str r1, [r0] + add r0, r6, #0 + add r0, #0xb4 + ldr r1, [r0] + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD06_0223A418 + mov r2, #2 + add r0, r6, #0 + lsl r2, r2, #0xc + add r0, #0xd0 + str r2, [r0] + add r0, r6, #0 + mov r1, #0 + add r0, #0xd6 + strh r1, [r0] + lsr r0, r2, #1 + add r6, #0xd8 + str r0, [r6] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AA78 +MOD06_0223AA78: ; 0x0223AA78 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x78 + add r6, r1, #0 + bl MOD06_0223A3A4 + add r5, r7, #0 + mov r4, #0 + add r5, #0x88 +_0223AA8A: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #2 + blt _0223AA8A + add r0, r7, #0 + add r0, #0xb0 + ldr r0, [r0] + bl MOD06_0223A660 + add r0, r7, #0 + mov r1, #0 + mov r2, #0xdc + bl Call_FillMemWithValue + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AAB0 +MOD06_0223AAB0: ; 0x0223AAB0 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + add r1, r4, #0 + add r1, #0xc4 + ldr r1, [r1] + add r0, #0xb4 + bl MOD06_0223A35C + add r7, r0, #0 + add r0, r4, #0 + add r2, r4, #0 + add r0, #0xb4 + ldr r5, [r0] + add r2, #0xd8 + ldr r2, [r2] + asr r1, r5, #0x1f + add r0, r5, #0 + asr r3, r2, #0x1f + bl _ll_mul + mov r6, #2 + add r2, r0, #0 + mov r3, #0 + lsl r6, r6, #0xa + add r0, r4, #0 + add r2, r2, r6 + adc r1, r3 + lsl r1, r1, #0x14 + lsr r2, r2, #0xc + orr r2, r1 + add r1, r2, #0 + lsl r2, r6, #1 + add r3, r5, #0 + bl MOD06_0223A418 + add r5, r4, #0 + mov r6, #0 + add r5, #0x88 +_0223AAFC: + add r1, r4, #0 + add r1, #0xd0 + ldr r1, [r1] + add r0, r5, #0 + bl MOD06_0223A3D4 + add r6, r6, #1 + add r5, #0x14 + cmp r6, #2 + blt _0223AAFC + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + bl MOD06_0223A6DC + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + cmp r0, #5 + bls _0223AB26 + b _0223AC5E +_0223AB26: + add r1, r0, r0 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223AB32: ; jump table + .short _0223AB3E - _0223AB32 - 2 ; case 0 + .short _0223AC5E - _0223AB32 - 2 ; case 1 + .short _0223AB5E - _0223AB32 - 2 ; case 2 + .short _0223AB96 - _0223AB32 - 2 ; case 3 + .short _0223ABC4 - _0223AB32 - 2 ; case 4 + .short _0223AC44 - _0223AB32 - 2 ; case 5 +_0223AB3E: + cmp r7, #1 + beq _0223AB50 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, #0xc4 + add r0, r0, #1 + str r0, [r4] + b _0223AC5E +_0223AB50: + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r4, #0xd6 + add r0, r0, #1 + strh r0, [r4] + b _0223AC5E +_0223AB5E: + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + add r0, r4, #0 + sub r1, #0xcd + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + ldr r0, _0223AC64 ; =0x00000666 + cmp r1, r0 + bgt _0223AC5E + add r0, r4, #0 + add r0, #0xb0 + ldr r0, [r0] + mov r1, #0x10 + mov r2, #0xc + mov r3, #0x1c + bl MOD06_0223A67C + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r4, #0xd6 + add r0, r0, #1 + strh r0, [r4] + b _0223AC5E +_0223AB96: + add r0, r4, #0 + add r0, #0xd0 + ldr r1, [r0] + add r0, r4, #0 + sub r1, #0xcd + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xd0 + ldr r0, [r0] + cmp r0, #0 + bgt _0223AC5E + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xd6 + strh r1, [r0] + mov r0, #8 + add r4, #0xc8 + str r0, [r4] + b _0223AC5E +_0223ABC4: + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xc8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + bgt _0223AC5E + add r0, r4, #0 + add r0, #0xd6 + ldrh r0, [r0] + add r2, r4, #0 + add r2, #0xd8 + add r1, r0, #1 + add r0, r4, #0 + add r0, #0xd6 + strh r1, [r0] + add r0, r4, #0 + ldr r1, _0223AC68 ; =0xFFFD8000 + add r0, #0xd0 + str r1, [r0] + add r0, r4, #0 + ldr r1, _0223AC6C ; =0xFFFFF000 + add r0, #0xd8 + str r1, [r0] + add r0, r4, #0 + add r0, #0xb4 + ldr r5, [r0] + ldr r2, [r2] + asr r1, r5, #0x1f + add r0, r5, #0 + asr r3, r2, #0x1f + bl _ll_mul + mov r2, #2 + add r6, r0, #0 + mov r3, #0 + lsl r2, r2, #0xa + add r0, r4, #0 + add r6, r6, r2 + adc r1, r3 + lsl r2, r1, #0x14 + lsr r1, r6, #0xc + orr r1, r2 + add r2, r5, #0 + add r3, r5, #0 + bl MOD06_0223A418 + add r0, r4, #0 + mov r1, #1 + add r0, #0xb4 + lsl r1, r1, #0xc + mov r2, #0 + mov r3, #0x20 + bl MOD06_0223A350 + mov r0, #0 + add r4, #0xc4 + str r0, [r4] + b _0223AC5E +_0223AC44: + cmp r7, #1 + beq _0223AC56 + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + add r4, #0xc4 + add r0, r0, #1 + str r0, [r4] + b _0223AC5E +_0223AC56: + cmp r0, #5 + bne _0223AC5E + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223AC5E: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223AC64: .word 0x00000666 +_0223AC68: .word 0xFFFD8000 +_0223AC6C: .word 0xFFFFF000 + + thumb_func_start MOD06_0223AC70 +MOD06_0223AC70: ; 0x0223AC70 + mov r1, #2 + add r0, #0xd6 + strh r1, [r0] + bx lr + + thumb_func_start MOD06_0223AC78 +MOD06_0223AC78: ; 0x0223AC78 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #5 + lsl r1, r1, #6 + add r5, r0, #0 + bl FUN_02016998 + mov r2, #5 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #6 + bl Call_FillMemWithValue + str r6, [r4, #4] + mov r0, #0 + str r0, [r4] + mov r0, #0x4f + lsl r0, r0, #2 + str r5, [r4, r0] + sub r0, #0x10 + add r0, r4, r0 + add r1, r5, #0 + mov r2, #0x20 + bl FUN_02016B20 + mov r2, #0x4f + lsl r2, r2, #2 + add r0, r4, #0 + ldr r1, [r4, r2] + sub r2, #0x10 + add r0, #0x34 + add r2, r4, r2 + bl MOD06_0223AF10 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223ACC0 +MOD06_0223ACC0: ; 0x0223ACC0 + push {r4, lr} + mov r1, #0x4b + add r4, r0, #0 + lsl r1, r1, #2 + add r1, r4, r1 + add r0, #0x34 + bl MOD06_0223AFD0 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD06_0223ACD8 +MOD06_0223ACD8: ; 0x0223ACD8 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r2, r1, #0 + ldr r1, [r4, #4] + add r0, #8 + bl MOD06_0223ADB4 + ldr r0, [r4, #8] + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0x10 + sub r3, r1, r0 + add r0, r4, #0 + ldr r1, [sp] + ldr r2, [sp, #4] + add r0, #0x34 + str r3, [sp, #8] + bl MOD06_0223AF7C + mov r0, #1 + str r0, [r4] + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AD10 +MOD06_0223AD10: ; 0x0223AD10 + ldr r0, [r0] + cmp r0, #0 + beq _0223AD1A + cmp r0, #5 + bne _0223AD1E +_0223AD1A: + mov r0, #1 + bx lr +_0223AD1E: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0223AD24 +MOD06_0223AD24: ; 0x0223AD24 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #5 + bhi _0223AD9A + add r0, r1, r1 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AD3A: ; jump table + .short _0223AD9A - _0223AD3A - 2 ; case 0 + .short _0223AD46 - _0223AD3A - 2 ; case 1 + .short _0223AD5A - _0223AD3A - 2 ; case 2 + .short _0223AD7A - _0223AD3A - 2 ; case 3 + .short _0223AD96 - _0223AD3A - 2 ; case 4 + .short _0223AD9A - _0223AD3A - 2 ; case 5 +_0223AD46: + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223AFF4 + cmp r0, #1 + bne _0223AD9A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0223AD5A: + add r0, r4, #0 + add r0, #8 + bl MOD06_0223ADD4 + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223B174 + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223AFF4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0223AD7A: + add r0, r4, #0 + add r0, #0x34 + bl MOD06_0223AFF4 + add r0, r4, #0 + add r0, #8 + bl MOD06_0223AE28 + cmp r0, #0 + beq _0223AD9A + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + pop {r4, pc} +_0223AD96: + add r0, r1, #1 + str r0, [r4] +_0223AD9A: + pop {r4, pc} + + thumb_func_start MOD06_0223AD9C +MOD06_0223AD9C: ; 0x0223AD9C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0223AD10 + cmp r0, #1 + beq _0223ADB0 + add r4, #0x34 + add r0, r4, #0 + bl MOD06_0223B194 +_0223ADB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223ADB4 +MOD06_0223ADB4: ; 0x0223ADB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #0x34] + add r1, r2, #0 + bl FUN_02058060 + str r0, [r4] + cmp r0, #0 + bne _0223ADCA + bl ErrorHandling +_0223ADCA: + mov r0, #0 + str r0, [r4, #0x24] + str r0, [r4, #0x28] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223ADD4 +MOD06_0223ADD4: ; 0x0223ADD4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl MOD06_0223AEE8 + add r4, r0, #0 + mov r0, #1 + str r0, [r5, #0x28] + ldr r0, [r5] + mov r1, #0 + bl FUN_0205889C + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223AEF8 + mov r2, #6 + add r0, r5, #4 + mov r1, #0 + lsl r2, r2, #0xa + mov r3, #6 + bl MOD06_0223A350 + add r0, r5, #0 + mov r1, #2 + add r0, #0x14 + lsl r1, r1, #0x10 + mov r2, #0 + mov r3, #0x2c + bl MOD06_0223A350 + mov r1, #0 + str r1, [sp] + ldr r0, [r5, #0x14] + str r1, [sp, #8] + str r0, [sp, #4] + ldr r0, [r5] + add r1, sp, #0 + bl FUN_02058BB4 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0223AE28 +MOD06_0223AE28: ; 0x0223AE28 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD06_0223AEE8 + add r6, r0, #0 + ldr r0, [r4, #0x28] + cmp r0, #4 + bhi _0223AEE0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223AE46: ; jump table + .short _0223AEE0 - _0223AE46 - 2 ; case 0 + .short _0223AE50 - _0223AE46 - 2 ; case 1 + .short _0223AE86 - _0223AE46 - 2 ; case 2 + .short _0223AEAC - _0223AE46 - 2 ; case 3 + .short _0223AEDA - _0223AE46 - 2 ; case 4 +_0223AE50: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + add r0, r4, #4 + bl MOD06_0223A35C + add r5, r0, #0 + ldr r1, [r4, #4] + add r0, r6, #0 + bl MOD06_0223AEF8 + cmp r5, #1 + bne _0223AEE0 + mov r1, #6 + mov r2, #1 + add r0, r4, #4 + lsl r1, r1, #0xa + lsl r2, r2, #0xc + mov r3, #2 + bl MOD06_0223A350 + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223AEE0 +_0223AE86: + ldr r0, [r4, #0x24] + add r1, r0, #1 + str r1, [r4, #0x24] + add r0, r4, #4 + bl MOD06_0223A35C + add r5, r0, #0 + ldr r1, [r4, #4] + add r0, r6, #0 + bl MOD06_0223AEF8 + cmp r5, #1 + bne _0223AEE0 + mov r0, #0 + str r0, [r4, #0x24] + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223AEE0 +_0223AEAC: + ldr r0, [r4, #0x24] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x14 + str r1, [r4, #0x24] + bl MOD06_0223A35C + mov r1, #0 + str r1, [sp] + add r5, r0, #0 + ldr r0, [r4, #0x14] + str r1, [sp, #8] + str r0, [sp, #4] + ldr r0, [r4] + add r1, sp, #0 + bl FUN_02058BB4 + cmp r5, #1 + bne _0223AEE0 + ldr r0, [r4, #0x28] + add r0, r0, #1 + str r0, [r4, #0x28] + b _0223AEE0 +_0223AEDA: + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_0223AEE0: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AEE8 +MOD06_0223AEE8: ; 0x0223AEE8 + push {r3, lr} + ldr r0, [r0] + bl FUN_021F1C1C + bl FUN_021F1C30 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AEF8 +MOD06_0223AEF8: ; 0x0223AEF8 + push {lr} + sub sp, #0xc + str r1, [sp] + mov r1, #1 + lsl r1, r1, #0xc + str r1, [sp, #4] + str r1, [sp, #8] + add r1, sp, #0 + bl FUN_0201F7F0 + add sp, #0xc + pop {pc} + + thumb_func_start MOD06_0223AF10 +MOD06_0223AF10: ; 0x0223AF10 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r7, r0, #0 + str r2, [sp, #8] + add r0, #0x78 + mov r1, #0x62 + mov r2, #7 + add r3, r6, #0 + bl MOD06_0223A39C + add r0, r7, #0 + add r5, r7, #0 + str r0, [sp, #0xc] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0xc] +_0223AF34: + ldr r0, [sp, #8] + str r6, [sp] + add r3, r4, #0 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x62 + add r3, #8 + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223AF34 + add r1, r7, #0 + add r0, r7, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r7, #0 + mov r5, #0 + add r4, #0x88 +_0223AF60: + add r0, r7, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #4 + blt _0223AF60 + add r0, r7, #0 + mov r1, #0 + bl MOD06_0223A408 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AF7C +MOD06_0223AF7C: ; 0x0223AF7C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl MOD06_0223A410 + mov r1, #1 + lsl r1, r1, #0xc + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD06_0223A418 + mov r4, #0 + add r5, r6, #0 + add r5, #0x88 + add r7, r4, #0 +_0223AF9A: + add r0, r5, #0 + add r1, r7, #0 + bl MOD06_0223A3E8 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223AF9A + add r0, r6, #0 + mov r2, #0 + add r0, #0xec + str r2, [r0] + add r0, r6, #0 + add r0, #0xd8 + str r2, [r0] + add r0, r6, #0 + mov r1, #0x52 + add r0, #0xf0 + str r1, [r0] + add r0, r6, #0 + add r0, #0xf4 + str r2, [r0] + add r0, r6, #0 + mov r1, #1 + bl MOD06_0223A408 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223AFD0 +MOD06_0223AFD0: ; 0x0223AFD0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, #0x78 + add r6, r1, #0 + bl MOD06_0223A3A4 + mov r4, #0 + add r5, #0x88 +_0223AFE0: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223AFE0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223AFF4 +MOD06_0223AFF4: ; 0x0223AFF4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #3 + bhi _0223B084 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B00C: ; jump table + .short _0223B014 - _0223B00C - 2 ; case 0 + .short _0223B084 - _0223B00C - 2 ; case 1 + .short _0223B03C - _0223B00C - 2 ; case 2 + .short _0223B084 - _0223B00C - 2 ; case 3 +_0223B014: + add r5, r6, #0 + mov r4, #0 + add r5, #0x88 +_0223B01A: + add r0, r5, #0 + bl MOD06_0223A3DC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B01A + cmp r0, #1 + bne _0223B084 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xd8 + str r1, [r0] + b _0223B084 +_0223B03C: + add r0, r6, #0 + add r0, #0xec + ldr r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xec + str r1, [r0] + add r1, r6, #0 + add r1, #0xec + add r0, r6, #0 + ldr r1, [r1] + add r0, #0xdc + bl MOD06_0223A35C + add r4, r0, #0 + add r0, r6, #0 + add r0, #0xdc + ldr r1, [r0] + add r0, r6, #0 + add r2, r1, #0 + add r3, r1, #0 + bl MOD06_0223A418 + cmp r4, #1 + bne _0223B084 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r1, r0, #1 + add r0, r6, #0 + add r0, #0xd8 + str r1, [r0] + add r0, r6, #0 + mov r1, #0 + bl MOD06_0223A408 +_0223B084: + add r0, r6, #0 + bl MOD06_0223B090 + add r6, #0xd8 + ldr r0, [r6] + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223B090 +MOD06_0223B090: ; 0x0223B090 + push {r4, lr} + add r4, r0, #0 + add r0, #0xf4 + ldr r0, [r0] + cmp r0, #4 + bhi _0223B162 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B0A8: ; jump table + .short _0223B0B2 - _0223B0A8 - 2 ; case 0 + .short _0223B0E0 - _0223B0A8 - 2 ; case 1 + .short _0223B110 - _0223B0A8 - 2 ; case 2 + .short _0223B13E - _0223B0A8 - 2 ; case 3 + .short _0223B162 - _0223B0A8 - 2 ; case 4 +_0223B0B2: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B164 ; =0x000006D2 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x48 + add r0, #0xf0 + str r1, [r0] + mov r0, #1 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} +_0223B0E0: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B168 ; =0x000006D3 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x4b + lsl r1, r1, #2 + add r0, #0xf0 + str r1, [r0] + mov r0, #2 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} +_0223B110: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B16C ; =0x000006D6 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #0x84 + add r0, #0xf0 + str r1, [r0] + mov r0, #3 + add r4, #0xf4 + str r0, [r4] + pop {r4, pc} +_0223B13E: + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + sub r1, r0, #1 + add r0, r4, #0 + add r0, #0xf0 + str r1, [r0] + add r0, r4, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bge _0223B162 + ldr r0, _0223B170 ; =0x000006D7 + bl FUN_020054C8 + mov r0, #4 + add r4, #0xf4 + str r0, [r4] +_0223B162: + pop {r4, pc} + .align 2, 0 +_0223B164: .word 0x000006D2 +_0223B168: .word 0x000006D3 +_0223B16C: .word 0x000006D6 +_0223B170: .word 0x000006D7 + + thumb_func_start MOD06_0223B174 +MOD06_0223B174: ; 0x0223B174 + push {r3, lr} + add r1, r0, #0 + mov r3, #2 + add r1, #0xd8 + str r3, [r1] + add r1, r0, #0 + mov r2, #0 + add r1, #0xec + str r2, [r1] + lsl r1, r3, #0xb + add r0, #0xdc + mov r3, #0x10 + bl MOD06_0223A350 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B194 +MOD06_0223B194: ; 0x0223B194 + ldr r3, _0223B198 ; =MOD06_0223A400 + bx r3 + .align 2, 0 +_0223B198: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B19C +MOD06_0223B19C: ; 0x0223B19C + push {r4, r5, r6, lr} + add r5, r1, #0 + mov r1, #0x1e + lsl r1, r1, #4 + add r4, r0, #0 + bl FUN_02016998 + mov r2, #0x1e + add r6, r0, #0 + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + add r0, r6, #0 + mov r1, #0x62 + add r2, r5, #0 + add r3, r4, #0 + bl MOD06_0223A39C + add r5, r6, #0 + mov r4, #0 + add r5, #0x10 +_0223B1C8: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223B348 + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B1C8 + mov r0, #7 + mov r1, #0 + lsl r0, r0, #6 + str r1, [r6, r0] + add r0, r6, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223B1E4 +MOD06_0223B1E4: ; 0x0223B1E4 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r5, r6, #0 + mov r4, #0 + add r5, #0x10 +_0223B1EE: + add r0, r5, #0 + bl MOD06_0223B36C + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B1EE + add r0, r6, #0 + bl MOD06_0223A3A4 + add r0, r6, #0 + bl FUN_02016A18 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B20C +MOD06_0223B20C: ; 0x0223B20C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + mov r0, #7 + lsl r0, r0, #6 + ldr r0, [r5, r0] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _0223B224 + bl ErrorHandling +_0223B224: + mov r0, #0x71 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r5, r0] + add r1, r0, #0 + add r1, #8 + str r4, [r5, r1] + add r1, r0, #0 + add r1, #0xc + str r6, [r5, r1] + add r1, r0, #0 + add r1, #0x10 + str r7, [r5, r1] + add r2, sp, #8 + add r1, r0, #0 + ldrh r3, [r2, #0x14] + add r1, #0x14 + strh r3, [r5, r1] + add r1, r0, #0 + ldrh r3, [r2, #0x18] + add r1, #0x16 + strh r3, [r5, r1] + add r1, r0, #0 + ldrh r2, [r2, #0x1c] + add r1, #0x18 + strh r2, [r5, r1] + add r1, r0, #4 + ldr r2, [sp, #0x18] + sub r0, r0, #4 + str r2, [r5, r1] + mov r1, #1 + str r1, [r5, r0] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B268 +MOD06_0223B268: ; 0x0223B268 + push {r3, r4, r5, lr} + sub sp, #0x18 + mov r2, #0x71 + add r5, r0, #0 + lsl r2, r2, #2 + ldr r1, [r5, r2] + sub r1, r1, #1 + str r1, [r5, r2] + ldr r1, [r5, r2] + cmp r1, #0 + bge _0223B2CA + add r1, r2, #4 + ldr r1, [r5, r1] + str r1, [r5, r2] + bl MOD06_0223B438 + add r4, r0, #0 + bne _0223B290 + bl ErrorHandling +_0223B290: + mov r1, #0x73 + lsl r1, r1, #2 + ldr r0, [r5, r1] + mov r2, #1 + str r0, [sp] + add r0, r1, #4 + ldr r0, [r5, r0] + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r1, #0 + add r0, #8 + ldr r0, [r5, r0] + mov r3, #0x60 + str r0, [sp, #8] + add r0, r1, #0 + add r0, #0xc + ldrh r0, [r5, r0] + str r0, [sp, #0xc] + add r0, r1, #0 + add r0, #0xe + ldrh r0, [r5, r0] + add r1, #0x10 + str r0, [sp, #0x10] + ldrh r0, [r5, r1] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r4, #0 + bl MOD06_0223B378 +_0223B2CA: + mov r4, #0 + add r5, #0x10 +_0223B2CE: + add r0, r5, #0 + bl MOD06_0223B3EC + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B2CE + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B2E0 +MOD06_0223B2E0: ; 0x0223B2E0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0223B2E8: + add r0, r5, #0 + bl MOD06_0223B42C + add r4, r4, #1 + add r5, #0x90 + cmp r4, #3 + blt _0223B2E8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B2F8 +MOD06_0223B2F8: ; 0x0223B2F8 + ldr r3, _0223B300 ; =MOD06_0223B19C + mov r1, #6 + bx r3 + nop +_0223B300: .word MOD06_0223B19C + + thumb_func_start MOD06_0223B304 +MOD06_0223B304: ; 0x0223B304 + ldr r3, _0223B308 ; =MOD06_0223B1E4 + bx r3 + .align 2, 0 +_0223B308: .word MOD06_0223B1E4 + + thumb_func_start MOD06_0223B30C +MOD06_0223B30C: ; 0x0223B30C + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + mov r5, #0 + str r5, [sp, #4] + str r5, [sp, #8] + str r5, [sp, #0xc] + lsl r5, r1, #0x10 + lsl r1, r4, #9 + add r1, r5, r1 + lsl r5, r2, #0x10 + mov r2, #0xa + lsl r2, r2, #0x10 + add r2, r5, r2 + lsl r5, r3, #0x10 + lsl r3, r4, #0xa + add r3, r5, r3 + bl MOD06_0223B20C + add sp, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B338 +MOD06_0223B338: ; 0x0223B338 + ldr r3, _0223B33C ; =MOD06_0223B268 + bx r3 + .align 2, 0 +_0223B33C: .word MOD06_0223B268 + + thumb_func_start MOD06_0223B340 +MOD06_0223B340: ; 0x0223B340 + ldr r3, _0223B344 ; =MOD06_0223B2E0 + bx r3 + .align 2, 0 +_0223B344: .word MOD06_0223B2E0 + + thumb_func_start MOD06_0223B348 +MOD06_0223B348: ; 0x0223B348 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r0, #0 + mov r1, #0 + mov r2, #0x90 + bl Call_FillMemWithValue + add r0, r4, #4 + add r1, r5, #0 + bl MOD06_0223A3F0 + add r0, r4, #4 + mov r1, #0 + bl MOD06_0223A408 + mov r0, #0 + str r0, [r4] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B36C +MOD06_0223B36C: ; 0x0223B36C + ldr r3, _0223B374 ; =0x020DF4A4 + mov r1, #0 + mov r2, #0x90 + bx r3 + .align 2, 0 +_0223B374: .word 0x020DF4A4 + + thumb_func_start MOD06_0223B378 +MOD06_0223B378: ; 0x0223B378 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + beq _0223B38C + bl ErrorHandling +_0223B38C: + add r0, r5, #0 + add r0, #0x7c + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD06_0223A350 + add r0, r5, #4 + mov r1, #1 + bl MOD06_0223A408 + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x20] + add r0, r5, #4 + bl MOD06_0223A410 + mov r2, #1 + add r0, r5, #4 + add r1, r4, #0 + lsl r2, r2, #0xc + add r3, r4, #0 + bl MOD06_0223A418 + add r1, sp, #8 + ldrh r1, [r1, #0x1c] + add r0, r5, #4 + mov r2, #0 + bl MOD06_0223A420 + add r1, sp, #8 + ldrh r1, [r1, #0x20] + add r0, r5, #4 + mov r2, #1 + bl MOD06_0223A420 + add r1, sp, #8 + ldrh r1, [r1, #0x24] + add r0, r5, #4 + mov r2, #2 + bl MOD06_0223A420 + mov r0, #1 + str r0, [r5] + mov r0, #0 + add r5, #0x8c + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B3EC +MOD06_0223B3EC: ; 0x0223B3EC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0223B42A + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r0, #1 + add r0, r4, #0 + add r0, #0x8c + str r1, [r0] + add r1, r4, #0 + add r1, #0x8c + add r0, r4, #0 + ldr r1, [r1] + add r0, #0x7c + bl MOD06_0223A35C + ldr r1, [r4, #0x7c] + mov r2, #1 + add r5, r0, #0 + add r0, r4, #4 + lsl r2, r2, #0xc + add r3, r1, #0 + bl MOD06_0223A418 + cmp r5, #1 + bne _0223B42A + mov r0, #0 + str r0, [r4] +_0223B42A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B42C +MOD06_0223B42C: ; 0x0223B42C + ldr r3, _0223B434 ; =MOD06_0223A400 + add r0, r0, #4 + bx r3 + nop +_0223B434: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B438 +MOD06_0223B438: ; 0x0223B438 + mov r2, #0 + add r3, r0, #0 +_0223B43C: + ldr r1, [r3, #0x10] + cmp r1, #0 + bne _0223B44C + mov r1, #0x90 + add r0, #0x10 + mul r1, r2 + add r0, r0, r1 + bx lr +_0223B44C: + add r2, r2, #1 + add r3, #0x90 + cmp r2, #3 + blt _0223B43C + mov r0, #0 + bx lr + + thumb_func_start MOD06_0223B458 +MOD06_0223B458: ; 0x0223B458 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0xd4 + add r7, r0, #0 + bl FUN_02016998 + add r6, r0, #0 + mov r1, #0 + mov r2, #0xd4 + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0xc4 + add r1, r7, #0 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x62 + add r2, r4, #0 + add r3, r7, #0 + bl MOD06_0223A39C + add r0, r6, #0 + str r0, [sp, #8] + add r0, #0xc4 + str r0, [sp, #8] + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0xc] +_0223B4A0: + ldr r0, [sp, #8] + str r7, [sp] + str r0, [sp, #4] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x62 + add r3, r4, #1 + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223B4A0 + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r6, #0 + mov r5, #0 + add r4, #0x88 +_0223B4CA: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #3 + blt _0223B4CA + add r0, r6, #0 + mov r1, #0 + bl MOD06_0223A408 + add r0, r6, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B4E8 +MOD06_0223B4E8: ; 0x0223B4E8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x78 + bl MOD06_0223A3A4 + add r5, r7, #0 + add r6, r7, #0 + mov r4, #0 + add r5, #0x88 + add r6, #0xc4 +_0223B4FC: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223B4FC + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B514 +MOD06_0223B514: ; 0x0223B514 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0223A410 + ldr r1, _0223B550 ; =0xFFFFFFF8 + add r0, r4, #0 + add r1, sp + ldrh r1, [r1, #0x10] + mov r2, #0 + bl MOD06_0223A420 + ldr r1, _0223B550 ; =0xFFFFFFF8 + add r0, r4, #0 + add r1, sp + ldrh r1, [r1, #0x18] + mov r2, #2 + bl MOD06_0223A420 + ldr r1, _0223B550 ; =0xFFFFFFF8 + add r0, r4, #0 + add r1, sp + ldrh r1, [r1, #0x14] + mov r2, #1 + bl MOD06_0223A420 + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223A408 + pop {r4, pc} + .align 2, 0 +_0223B550: .word 0xFFFFFFF8 + + thumb_func_start MOD06_0223B554 +MOD06_0223B554: ; 0x0223B554 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x88 +_0223B55C: + add r0, r5, #0 + bl MOD06_0223A3C8 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #3 + blt _0223B55C + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B56C +MOD06_0223B56C: ; 0x0223B56C + ldr r3, _0223B570 ; =MOD06_0223A400 + bx r3 + .align 2, 0 +_0223B570: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B574 +MOD06_0223B574: ; 0x0223B574 + ldr r3, _0223B57C ; =MOD06_0223B458 + mov r1, #0 + bx r3 + nop +_0223B57C: .word MOD06_0223B458 + + thumb_func_start MOD06_0223B580 +MOD06_0223B580: ; 0x0223B580 + ldr r3, _0223B584 ; =MOD06_0223B4E8 + bx r3 + .align 2, 0 +_0223B584: .word MOD06_0223B4E8 + + thumb_func_start MOD06_0223B588 +MOD06_0223B588: ; 0x0223B588 + ldr r3, _0223B58C ; =MOD06_0223B554 + bx r3 + .align 2, 0 +_0223B58C: .word MOD06_0223B554 + + thumb_func_start MOD06_0223B590 +MOD06_0223B590: ; 0x0223B590 + ldr r3, _0223B594 ; =MOD06_0223B56C + bx r3 + .align 2, 0 +_0223B594: .word MOD06_0223B56C + + thumb_func_start MOD06_0223B598 +MOD06_0223B598: ; 0x0223B598 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, _0223B5BC ; =0x0000F49F + str r4, [sp] + ldr r4, _0223B5C0 ; =0x000080B5 + str r4, [sp, #4] + sub r4, r4, #7 + str r4, [sp, #8] + ldr r4, _0223B5C4 ; =0x00029BA8 + add r1, r1, r4 + ldr r4, _0223B5C8 ; =0x00037294 + sub r2, r2, r4 + ldr r4, _0223B5CC ; =0x000B6876 + sub r3, r3, r4 + bl MOD06_0223B514 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223B5BC: .word 0x0000F49F +_0223B5C0: .word 0x000080B5 +_0223B5C4: .word 0x00029BA8 +_0223B5C8: .word 0x00037294 +_0223B5CC: .word 0x000B6876 + + thumb_func_start MOD06_0223B5D0 +MOD06_0223B5D0: ; 0x0223B5D0 + push {r3, r4, lr} + sub sp, #0xc + ldr r4, _0223B5F4 ; =0x0000E5B1 + str r4, [sp] + ldr r4, _0223B5F8 ; =0x0000C163 + str r4, [sp, #4] + ldr r4, _0223B5FC ; =0x00007FF8 + str r4, [sp, #8] + ldr r4, _0223B600 ; =0x00116A4F + add r1, r1, r4 + ldr r4, _0223B604 ; =0x0004F16B + add r2, r2, r4 + ldr r4, _0223B608 ; =0x00092118 + sub r3, r3, r4 + bl MOD06_0223B514 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223B5F4: .word 0x0000E5B1 +_0223B5F8: .word 0x0000C163 +_0223B5FC: .word 0x00007FF8 +_0223B600: .word 0x00116A4F +_0223B604: .word 0x0004F16B +_0223B608: .word 0x00092118 + + thumb_func_start MOD06_0223B60C +MOD06_0223B60C: ; 0x0223B60C + push {r3, r4, lr} + sub sp, #0xc + ldr r4, _0223B634 ; =0x0000E71D + str r4, [sp] + ldr r4, _0223B638 ; =0x00005335 + str r4, [sp, #4] + ldr r4, _0223B63C ; =0x00007992 + str r4, [sp, #8] + mov r4, #0xc6 + lsl r4, r4, #0xc + sub r1, r1, r4 + ldr r4, _0223B640 ; =0x00056FFF + add r2, r2, r4 + ldr r4, _0223B644 ; =0x00210008 + sub r3, r3, r4 + bl MOD06_0223B514 + add sp, #0xc + pop {r3, r4, pc} + nop +_0223B634: .word 0x0000E71D +_0223B638: .word 0x00005335 +_0223B63C: .word 0x00007992 +_0223B640: .word 0x00056FFF +_0223B644: .word 0x00210008 + + thumb_func_start MOD06_0223B648 +MOD06_0223B648: ; 0x0223B648 + ldr r3, _0223B650 ; =MOD06_0223B19C + mov r1, #6 + bx r3 + nop +_0223B650: .word MOD06_0223B19C + + thumb_func_start MOD06_0223B654 +MOD06_0223B654: ; 0x0223B654 + ldr r3, _0223B658 ; =MOD06_0223B1E4 + bx r3 + .align 2, 0 +_0223B658: .word MOD06_0223B1E4 + + thumb_func_start MOD06_0223B65C +MOD06_0223B65C: ; 0x0223B65C + ldr r3, _0223B660 ; =MOD06_0223B268 + bx r3 + .align 2, 0 +_0223B660: .word MOD06_0223B268 + + thumb_func_start MOD06_0223B664 +MOD06_0223B664: ; 0x0223B664 + ldr r3, _0223B668 ; =MOD06_0223B2E0 + bx r3 + .align 2, 0 +_0223B668: .word MOD06_0223B2E0 + + thumb_func_start MOD06_0223B66C +MOD06_0223B66C: ; 0x0223B66C + push {r4, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + ldr r4, _0223B69C ; =0x0000F49F + str r4, [sp, #4] + ldr r4, _0223B6A0 ; =0x000080B5 + str r4, [sp, #8] + sub r4, r4, #7 + str r4, [sp, #0xc] + mov r4, #0x11 + lsl r4, r4, #0xc + add r1, r1, r4 + mov r4, #0x6f + lsl r4, r4, #0xc + sub r2, r2, r4 + mov r4, #0xcb + lsl r4, r4, #0xc + sub r3, r3, r4 + bl MOD06_0223B20C + add sp, #0x10 + pop {r4, pc} + nop +_0223B69C: .word 0x0000F49F +_0223B6A0: .word 0x000080B5 + + thumb_func_start MOD06_0223B6A4 +MOD06_0223B6A4: ; 0x0223B6A4 + push {r4, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + ldr r4, _0223B6D0 ; =0x0000E5B1 + str r4, [sp, #4] + ldr r4, _0223B6D4 ; =0x0000C163 + str r4, [sp, #8] + ldr r4, _0223B6D8 ; =0x00007FF8 + str r4, [sp, #0xc] + ldr r4, _0223B6DC ; =0x00252000 + add r1, r1, r4 + mov r4, #0x43 + lsl r4, r4, #0xc + add r2, r2, r4 + mov r4, #0xe + lsl r4, r4, #0xe + sub r3, r3, r4 + bl MOD06_0223B20C + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0223B6D0: .word 0x0000E5B1 +_0223B6D4: .word 0x0000C163 +_0223B6D8: .word 0x00007FF8 +_0223B6DC: .word 0x00252000 + + thumb_func_start MOD06_0223B6E0 +MOD06_0223B6E0: ; 0x0223B6E0 + push {r4, lr} + sub sp, #0x10 + mov r4, #0x40 + str r4, [sp] + ldr r4, _0223B710 ; =0x0000E71D + str r4, [sp, #4] + ldr r4, _0223B714 ; =0x00005335 + str r4, [sp, #8] + ldr r4, _0223B718 ; =0x00007992 + str r4, [sp, #0xc] + mov r4, #0x53 + lsl r4, r4, #0xe + sub r1, r1, r4 + mov r4, #0xd + lsl r4, r4, #0xc + sub r2, r2, r4 + mov r4, #0x71 + lsl r4, r4, #0xe + sub r3, r3, r4 + bl MOD06_0223B20C + add sp, #0x10 + pop {r4, pc} + nop +_0223B710: .word 0x0000E71D +_0223B714: .word 0x00005335 +_0223B718: .word 0x00007992 + + thumb_func_start MOD06_0223B71C +MOD06_0223B71C: ; 0x0223B71C + push {r4, lr} + add r4, r1, #0 + mov r1, #0x18 + bl FUN_02016998 + add r3, r0, #0 + mov r2, #0x18 + mov r1, #0 +_0223B72C: + strb r1, [r3] + add r3, r3, #1 + sub r2, r2, #1 + bne _0223B72C + str r4, [r0] + mov r1, #0 + str r1, [r0, #0x14] + pop {r4, pc} + + thumb_func_start MOD06_0223B73C +MOD06_0223B73C: ; 0x0223B73C + ldr r3, _0223B740 ; =0x02016A19 + bx r3 + .align 2, 0 +_0223B740: .word 0x02016A19 + + thumb_func_start MOD06_0223B744 +MOD06_0223B744: ; 0x0223B744 + ldr r1, _0223B760 ; =0x0224F248 + mov r2, #1 + str r1, [r0, #4] + mov r1, #3 + str r1, [r0, #8] + mov r1, #0 + str r1, [r0, #0xc] + str r1, [r0, #0x10] + str r2, [r0, #0x14] + ldr r0, [r0] + ldr r3, _0223B764 ; =0x021DB52D + ldr r0, [r0, #0x48] + bx r3 + nop +_0223B760: .word 0x0224F248 +_0223B764: .word 0x021DB52D + + thumb_func_start MOD06_0223B768 +MOD06_0223B768: ; 0x0223B768 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #4 + bhi _0223B80C + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0223B77E: ; jump table + .short _0223B80C - _0223B77E - 2 ; case 0 + .short _0223B788 - _0223B77E - 2 ; case 1 + .short _0223B80C - _0223B77E - 2 ; case 2 + .short _0223B7C0 - _0223B77E - 2 ; case 3 + .short _0223B80C - _0223B77E - 2 ; case 4 +_0223B788: + ldr r0, [r4, #0xc] + add r5, r0, #1 + str r5, [r4, #0xc] + ldr r3, [r4, #0x10] + ldr r2, [r4, #4] + mov r0, #0x30 + add r1, r3, #0 + mul r1, r0 + ldr r1, [r2, r1] + cmp r1, r5 + bhi _0223B80C + ldr r1, [r4, #8] + add r2, r3, #1 + cmp r2, r1 + blo _0223B7AE + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] + pop {r3, r4, r5, pc} +_0223B7AE: + str r2, [r4, #0x10] + ldr r1, [r4, #4] + mul r0, r2 + add r0, r1, r0 + ldr r1, [r4] + ldr r1, [r1, #0x40] + bl FUN_021DB53C + pop {r3, r4, r5, pc} +_0223B7C0: + ldr r0, [r4, #0xc] + sub r0, r0, #1 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _0223B7F6 + ldr r3, [r4, #4] + mov r1, #0x30 + add r2, r0, #0 + mul r2, r1 + add r2, r3, r2 + sub r2, #0x30 + ldr r3, [r2] + ldr r2, [r4, #0xc] + cmp r3, r2 + bls _0223B80C + sub r3, r0, #1 + str r3, [r4, #0x10] + add r0, r3, #0 + mul r0, r1 + ldr r1, [r4] + ldr r2, [r4, #4] + ldr r1, [r1, #0x40] + add r0, r2, r0 + bl FUN_021DB53C + pop {r3, r4, r5, pc} +_0223B7F6: + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _0223B80C + ldr r0, [r4] + mov r1, #1 + ldr r0, [r0, #0x48] + bl FUN_021DB52C + ldr r0, [r4, #0x14] + add r0, r0, #1 + str r0, [r4, #0x14] +_0223B80C: + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223B810 +MOD06_0223B810: ; 0x0223B810 + ldr r0, [r0, #0x14] + bx lr + + thumb_func_start MOD06_0223B814 +MOD06_0223B814: ; 0x0223B814 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + cmp r0, #2 + beq _0223B822 + bl ErrorHandling +_0223B822: + mov r0, #3 + str r0, [r4, #0x14] + pop {r4, pc} + + thumb_func_start MOD06_0223B828 +MOD06_0223B828: ; 0x0223B828 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0xec + add r7, r0, #0 + bl FUN_02016998 + add r6, r0, #0 + mov r1, #0 + mov r2, #0xec + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0xd8 + str r4, [r0] + add r0, r6, #0 + add r0, #0xdc + add r1, r7, #0 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x62 + mov r2, #0xf + add r3, r7, #0 + bl MOD06_0223A39C + add r0, r6, #0 + str r0, [sp, #8] + add r0, #0xdc + str r0, [sp, #8] + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + mov r4, #0 + add r5, #0x88 + str r0, [sp, #0xc] +_0223B876: + ldr r0, [sp, #8] + str r7, [sp] + add r3, r4, #0 + str r0, [sp, #4] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x62 + add r3, #0x10 + bl MOD06_0223A3AC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B876 + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl MOD06_0223A3F0 + add r4, r6, #0 + mov r5, #0 + add r4, #0x88 +_0223B8A2: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0223A3F8 + add r5, r5, #1 + add r4, #0x14 + cmp r5, #4 + blt _0223B8A2 + add r0, r6, #0 + mov r1, #0 + bl MOD06_0223A408 + add r0, r6, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B8C0 +MOD06_0223B8C0: ; 0x0223B8C0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0x78 + bl MOD06_0223A3A4 + add r5, r7, #0 + add r6, r7, #0 + mov r4, #0 + add r5, #0x88 + add r6, #0xdc +_0223B8D4: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223A3C0 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B8D4 + add r0, r7, #0 + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B8EC +MOD06_0223B8EC: ; 0x0223B8EC + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + ldr r0, [r0, #0x34] + bl FUN_02058060 + add r1, sp, #0 + bl FUN_02058B5C + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl MOD06_0223A410 + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223A408 + ldr r0, _0223B920 ; =0x000006D8 + bl FUN_020054C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223B920: .word 0x000006D8 + + thumb_func_start MOD06_0223B924 +MOD06_0223B924: ; 0x0223B924 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x88 +_0223B92C: + add r0, r5, #0 + bl MOD06_0223A3DC + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0223B92C + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223B93C +MOD06_0223B93C: ; 0x0223B93C + ldr r3, _0223B940 ; =MOD06_0223A400 + bx r3 + .align 2, 0 +_0223B940: .word MOD06_0223A400 + + thumb_func_start MOD06_0223B944 +MOD06_0223B944: ; 0x0223B944 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + bl FUN_02012794 + sub r1, r0, #1 + cmp r1, #1 + bhi _0223B960 + ldr r0, [r5, #0x6c] + str r0, [r4] + ldr r0, [r5, #0x70] + str r0, [r6] + pop {r4, r5, r6, pc} +_0223B960: + sub r0, r0, #3 + cmp r0, #1 + bhi _0223B96E + ldr r0, [r5, #0x74] + str r0, [r4] + ldr r0, [r5, #0x78] + str r0, [r6] +_0223B96E: + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223B970 +MOD06_0223B970: ; 0x0223B970 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_0202A9B0 + str r0, [sp] + bl FUN_0202AA14 + cmp r0, #0 + beq _0223B9A6 + ldr r0, [sp] + mov r1, #2 + bl FUN_0202A990 + bl MOD06_022458FC + ldr r1, [r5, #0x1c] + ldr r1, [r1] + cmp r1, r0 + bne _0223B9A6 + ldr r0, [r4, #0x64] + str r0, [r6] + ldr r0, [r4, #0x68] + str r0, [r7] +_0223B9A6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223B9A8 +MOD06_0223B9A8: ; 0x0223B9A8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0x1c] + add r4, r1, #0 + ldr r0, [r0] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_020349B8 + cmp r0, #0 + beq _0223B9FC + add r1, sp, #0 + ldr r0, [r5, #0xc] + add r1, #2 + add r2, sp, #0 + bl FUN_0202AB8C + cmp r4, #0 + beq _0223B9FC + mov r0, #0x6a + mov r1, #8 + mov r2, #4 + bl FUN_02006528 + add r1, sp, #0 + ldrh r2, [r1, #2] + ldr r1, _0223BA00 ; =0x0000FFFF + cmp r2, r1 + beq _0223B9E8 + lsl r1, r2, #2 + ldr r1, [r0, r1] + str r1, [r6] +_0223B9E8: + add r1, sp, #0 + ldrh r2, [r1] + ldr r1, _0223BA00 ; =0x0000FFFF + cmp r2, r1 + beq _0223B9F8 + lsl r1, r2, #2 + ldr r1, [r0, r1] + str r1, [r7] +_0223B9F8: + bl FUN_02016A18 +_0223B9FC: + pop {r3, r4, r5, r6, r7, pc} + nop +_0223BA00: .word 0x0000FFFF + + thumb_func_start MOD06_0223BA04 +MOD06_0223BA04: ; 0x0223BA04 + push {r4, r5, r6, r7, lr} + sub sp, #0xb4 + add r5, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + str r0, [sp, #0x14] + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0204A6E0 + str r0, [sp, #0x1c] + add r2, sp, #0x24 + ldr r1, [sp, #0x1c] + add r0, r5, #0 + add r2, #1 + bl MOD06_0223C51C + add r1, sp, #0x24 + strb r0, [r1] + ldrb r0, [r1] + cmp r0, #0 + bne _0223BA42 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BA42: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02034CE0 + add r4, r0, #0 + add r0, r7, #0 + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x20] + ldr r1, [sp, #0x20] + add r0, r5, #0 + add r2, r4, #0 + add r3, sp, #0x30 + bl MOD06_0223D2DC + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AB54 + cmp r0, #0 + bne _0223BA8C + add r0, r7, #0 + bl FUN_0204A1D8 + mov r1, #1 + str r1, [sp, #0x34] + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x24 + strb r0, [r1, #0x18] +_0223BA8C: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r3, r0, #0 + ldr r0, [sp, #0x20] + add r1, sp, #0x24 + str r0, [sp] + ldrb r1, [r1] + mov r0, #0 + add r2, sp, #0x30 + bl MOD06_0223CF14 + add r1, sp, #0x24 + strb r0, [r1] + add r0, r5, #0 + add r1, sp, #0x24 + bl MOD06_0223C764 + ldr r0, [sp, #0x20] + add r1, sp, #0x24 + bl MOD06_0223C738 + add r1, sp, #0x24 + ldrb r1, [r1] + ldr r2, [sp, #0x1c] + add r0, r5, #0 + bl MOD06_0223C470 + cmp r0, #0 + beq _0223BAD2 + mov r0, #1 + str r0, [sp, #0x10] + b _0223BAD6 +_0223BAD2: + mov r0, #0 + str r0, [sp, #0x10] +_0223BAD6: + add r1, sp, #0x44 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + str r0, [r1, #0xc] + str r1, [sp] + add r0, sp, #0x48 + str r0, [sp, #4] + add r0, sp, #0x4c + add r3, r5, #0 + str r0, [sp, #8] + add r3, #0x90 + ldr r1, [sp, #0x14] + ldr r3, [r3] + add r0, r6, #0 + add r2, r5, #0 + bl FUN_0205DFE8 + cmp r0, #0 + bne _0223BB06 + mov r0, #0 + str r0, [sp, #0x50] + b _0223BB0C +_0223BB06: + mov r0, #1 + str r0, [sp, #0x10] + str r0, [sp, #0x50] +_0223BB0C: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BB18 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BB18: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + beq _0223BB2C + mov r0, #1 + str r0, [sp, #0xc] + b _0223BB30 +_0223BB2C: + mov r0, #0 + str r0, [sp, #0xc] +_0223BB30: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223BB98 + ldr r0, [sp, #0x50] + cmp r0, #0 + bne _0223BB98 + add r0, r5, #0 + add r1, sp, #0x28 + bl MOD06_0223D0E8 + cmp r0, #0 + beq _0223BB98 + ldr r0, [sp, #0x28] + mov r1, #6 + bl FUN_0202AAB8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, sp, #0x30 + bl MOD06_0223D030 + cmp r0, #0 + bne _0223BB92 + mov r0, #0xb + add r1, r0, #0 + add r1, #0xf5 + bl FUN_020476CC + str r0, [sp, #0x2c] + add r1, r5, #0 + bl FUN_02047BB0 + ldr r0, [sp, #0x30] + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + bl MOD06_0223D044 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0205DD40 + ldr r1, [sp, #0x2c] + add r0, r5, #0 + bl FUN_020469B8 + add sp, #0xb4 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223BB92: + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BB98: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223BBB6 + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, sp, #0x2c + bl MOD06_0223CFD0 + b _0223BBC0 +_0223BBB6: + mov r0, #0xb + mov r1, #0x4a + bl FUN_020476CC + str r0, [sp, #0x2c] +_0223BBC0: + ldr r0, [sp, #0x2c] + add r1, r5, #0 + bl FUN_02047BB0 + add r0, sp, #0x24 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0223BC84 + mov r7, #4 + mov r0, #0 + add r1, r4, #0 + add r2, sp, #0x54 + add r3, r7, #0 +_0223BBDA: + ldr r6, [r1, #8] + add r0, r0, #1 + str r6, [r2] + ldrsb r6, [r1, r7] + strh r6, [r2, #4] + ldrsb r6, [r1, r3] + add r1, #8 + strh r6, [r2, #6] + add r2, #8 + cmp r0, #0xc + blt _0223BBDA + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + add r0, r4, #0 + add r1, sp, #0x64 + add r2, sp, #0x6c + bl MOD06_0223B944 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x54 + add r3, sp, #0x5c + bl MOD06_0223B970 + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0x84 + add r3, sp, #0x8c + bl MOD06_0223B9A8 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0x94 + add r3, sp, #0x9c + bl MOD06_0224CDB8 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223BC5A + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0x54 + bl MOD06_0223CFFC + add r0, sp, #0x54 + str r0, [sp] + add r0, sp, #0x30 + str r0, [sp, #4] + add r0, sp, #0x44 + str r0, [sp, #8] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + add r3, r4, #0 + bl MOD06_0223C31C + b _0223BCCC +_0223BC5A: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + ldr r1, [sp, #0x2c] + mov r2, #0xb + str r0, [r1, #0x20] + ldr r0, [sp, #0x2c] + ldr r1, [r5, #0xc] + bl FUN_0206ABC4 + add r0, sp, #0x30 + str r0, [sp] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + add r3, sp, #0x54 + bl MOD06_0223C3F4 + b _0223BCCC +_0223BC84: + cmp r0, #1 + bne _0223BCBC + mov r0, #0 + add r1, sp, #0x54 + mov r3, #0xd0 + mov r6, #0xd1 +_0223BC90: + add r2, r4, #0 + add r2, #0xd4 + ldr r2, [r2] + add r0, r0, #1 + str r2, [r1] + ldrsb r2, [r4, r3] + strh r2, [r1, #4] + ldrsb r2, [r4, r6] + add r4, #8 + strh r2, [r1, #6] + add r1, #8 + cmp r0, #5 + blt _0223BC90 + add r0, sp, #0x30 + str r0, [sp] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + add r3, sp, #0x54 + bl MOD06_0223C438 + b _0223BCCC +_0223BCBC: + bl ErrorHandling + ldr r0, [sp, #0x2c] + bl FUN_02047964 + add sp, #0xb4 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BCCC: + cmp r0, #0 + beq _0223BCDA + ldr r1, [sp, #0x2c] + add r0, r5, #0 + bl FUN_020469B8 + b _0223BCDE +_0223BCDA: + mov r0, #0 + str r0, [sp, #0x10] +_0223BCDE: + mov r0, #4 + bl FUN_02016B90 + cmp r0, #0 + bne _0223BCEC + bl ErrorHandling +_0223BCEC: + mov r0, #0xb + bl FUN_02016B90 + cmp r0, #0 + bne _0223BCFA + bl ErrorHandling +_0223BCFA: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BD06 + ldr r0, [sp, #0x2c] + bl FUN_02047964 +_0223BD06: + mov r0, #0 + add r5, #0x74 + strh r0, [r5] + ldr r0, [sp, #0x10] + add sp, #0xb4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223BD14 +MOD06_0223BD14: ; 0x0223BD14 + push {r4, r5, r6, r7, lr} + sub sp, #0x94 + str r0, [sp, #8] + str r1, [sp, #0xc] + str r2, [sp, #0x10] + bl MOD06_0223CE0C + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + bne _0223BD2E + add sp, #0x94 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BD2E: + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x14] + ldr r0, [sp, #8] + ldr r1, [sp, #0x14] + mov r2, #0 + add r3, sp, #0x20 + bl MOD06_0223D2DC + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r3, r0, #0 + ldr r0, [sp, #0x14] + add r1, r5, #0 + str r0, [sp] + mov r0, #1 + add r2, sp, #0x20 + bl MOD06_0223CF14 + add r6, r0, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _0223BD80 + bl ErrorHandling +_0223BD80: + cmp r5, r6 + blt _0223BD8A + add sp, #0x94 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BD8A: + ldr r0, [sp, #8] + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + add r1, r0, #0 + ldr r0, [sp, #8] + ldr r2, [sp, #0x10] + bl MOD06_0223CFD0 + ldr r0, [sp, #0x10] + ldr r1, [sp, #8] + ldr r0, [r0] + bl FUN_02047BB0 + ldr r0, [sp, #0x10] + ldr r0, [r0] + bl FUN_020480AC + ldr r0, [sp, #8] + ldr r0, [r0, #0x1c] + ldr r0, [r0] + bl FUN_020349AC + cmp r0, #0 + beq _0223BDFC + ldr r0, [sp, #8] + bl MOD06_0224CC60 + cmp r0, #0 + beq _0223BDFC + add r0, sp, #0x18 + add r0, #1 + add r1, sp, #0x18 + bl MOD06_0224CD94 + add r0, sp, #0x1c + bl MOD06_0224CDA0 + add r0, sp, #0x18 + ldrb r3, [r0, #1] + ldrb r4, [r0] + ldr r2, [sp, #0x1c] + mov r1, #0 + add r0, sp, #0x34 +_0223BDE6: + lsl r5, r1, #3 + add r1, r1, #1 + lsl r1, r1, #0x18 + add r6, r0, r5 + str r2, [r0, r5] + strh r3, [r6, #4] + lsr r1, r1, #0x18 + strh r4, [r6, #6] + cmp r1, #5 + blo _0223BDE6 + b _0223BE4A +_0223BDFC: + ldr r0, [sp, #8] + bl FUN_02034CE0 + ldr r1, [sp, #0xc] + cmp r1, #0 + beq _0223BE12 + cmp r1, #1 + beq _0223BE1A + cmp r1, #2 + beq _0223BE22 + b _0223BE28 +_0223BE12: + mov r1, #0x4a + lsl r1, r1, #2 + add r4, r0, r1 + b _0223BE28 +_0223BE1A: + mov r1, #0x55 + lsl r1, r1, #2 + add r4, r0, r1 + b _0223BE28 +_0223BE22: + mov r1, #6 + lsl r1, r1, #6 + add r4, r0, r1 +_0223BE28: + mov r6, #0 + add r1, sp, #0x34 + mov r7, #1 +_0223BE2E: + lsl r5, r6, #3 + add r3, r4, r5 + ldr r0, [r3, #4] + add r2, r1, r5 + str r0, [r1, r5] + ldrsb r0, [r4, r5] + strh r0, [r2, #4] + ldrsb r0, [r3, r7] + strh r0, [r2, #6] + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #5 + blo _0223BE2E +_0223BE4A: + add r0, sp, #0x20 + str r0, [sp] + ldr r0, [sp, #0xc] + ldr r2, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [sp, #0x14] + ldr r2, [r2] + add r3, sp, #0x34 + bl MOD06_0223C454 + cmp r0, #0 + bne _0223BE6A + add sp, #0x94 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BE6A: + mov r0, #1 + add sp, #0x94 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223BE70 +MOD06_0223BE70: ; 0x0223BE70 + push {r4, r5, r6, r7, lr} + sub sp, #0xac + add r5, r0, #0 + ldr r0, [r5, #0x38] + str r1, [sp, #0xc] + bl FUN_02055320 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0204A6E0 + add r1, r0, #0 + add r0, r5, #0 + add r2, sp, #0x1c + bl MOD06_0223C51C + cmp r0, #0 + bne _0223BEA4 + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223BEA4: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02034CE0 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r4, #0 + add r3, sp, #0x28 + bl MOD06_0223D2DC + mov r0, #1 + mov r1, #0 + str r0, [sp, #0x30] + add r0, sp, #0x3c + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + str r1, [sp, #0x2c] + str r1, [r0, #0xc] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + beq _0223BEF0 + mov r0, #1 + str r0, [sp, #0x10] + b _0223BEF4 +_0223BEF0: + mov r0, #0 + str r0, [sp, #0x10] +_0223BEF4: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BF3C + add r0, r5, #0 + add r1, sp, #0x20 + bl MOD06_0223D0E8 + cmp r0, #0 + beq _0223BF3C + mov r0, #0xb + add r1, r0, #0 + add r1, #0xf5 + bl FUN_020476CC + str r0, [sp, #0x24] + add r1, r5, #0 + bl FUN_02047BB0 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x20] + ldr r2, [sp, #0x24] + bl MOD06_0223D044 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0205DD40 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x24] + add r0, r5, #0 + bl FUN_02046A20 + add sp, #0xac + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223BF3C: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BF5A + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + str r0, [sp, #0x14] + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, sp, #0x24 + bl MOD06_0223CFD0 + b _0223BF64 +_0223BF5A: + mov r0, #0xb + mov r1, #0x4a + bl FUN_020476CC + str r0, [sp, #0x24] +_0223BF64: + ldr r0, [sp, #0x24] + add r1, r5, #0 + bl FUN_02047BB0 + add r0, sp, #0x1c + ldrb r0, [r0] + cmp r0, #0 + bne _0223C028 + mov r7, #4 + mov r0, #0 + add r1, r4, #0 + add r2, sp, #0x4c + add r3, r7, #0 +_0223BF7E: + ldr r6, [r1, #8] + add r0, r0, #1 + str r6, [r2] + ldrsb r6, [r1, r7] + strh r6, [r2, #4] + ldrsb r6, [r1, r3] + add r1, #8 + strh r6, [r2, #6] + add r2, #8 + cmp r0, #0xc + blt _0223BF7E + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + add r0, r4, #0 + add r1, sp, #0x5c + add r2, sp, #0x64 + bl MOD06_0223B944 + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x4c + add r3, sp, #0x54 + bl MOD06_0223B970 + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0x7c + add r3, sp, #0x84 + bl MOD06_0223B9A8 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0x8c + add r3, sp, #0x94 + bl MOD06_0224CDB8 + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223BFFE + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0x4c + bl MOD06_0223CFFC + add r0, sp, #0x4c + str r0, [sp] + add r0, sp, #0x28 + str r0, [sp, #4] + add r0, sp, #0x3c + str r0, [sp, #8] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r3, r4, #0 + bl MOD06_0223C31C + b _0223C06A +_0223BFFE: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + ldr r1, [sp, #0x24] + mov r2, #0xb + str r0, [r1, #0x20] + ldr r0, [sp, #0x24] + ldr r1, [r5, #0xc] + bl FUN_0206ABC4 + add r0, sp, #0x28 + str r0, [sp] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r3, sp, #0x4c + bl MOD06_0223C3F4 + b _0223C06A +_0223C028: + cmp r0, #1 + bne _0223C060 + mov r0, #0 + add r1, sp, #0x4c + mov r3, #0xd0 + mov r6, #0xd1 +_0223C034: + add r2, r4, #0 + add r2, #0xd4 + ldr r2, [r2] + add r0, r0, #1 + str r2, [r1] + ldrsb r2, [r4, r3] + strh r2, [r1, #4] + ldrsb r2, [r4, r6] + add r4, #8 + strh r2, [r1, #6] + add r1, #8 + cmp r0, #5 + blt _0223C034 + add r0, sp, #0x28 + str r0, [sp] + ldr r1, [sp, #0x18] + ldr r2, [sp, #0x24] + add r0, r5, #0 + add r3, sp, #0x4c + bl MOD06_0223C438 + b _0223C06A +_0223C060: + bl ErrorHandling + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C06A: + cmp r0, #0 + beq _0223C07A + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x24] + add r0, r5, #0 + bl FUN_02046A20 + b _0223C07E +_0223C07A: + bl ErrorHandling +_0223C07E: + mov r0, #0 + add r5, #0x74 + strh r0, [r5] + mov r0, #1 + add sp, #0xac + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C08C +MOD06_0223C08C: ; 0x0223C08C + push {r4, r5, r6, r7, lr} + sub sp, #0xac + add r5, r0, #0 + add r4, r1, #0 + mov r0, #0 + str r0, [r4] + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_0204A6E0 + add r7, r0, #0 + add r2, sp, #0x20 + add r0, r5, #0 + add r1, r7, #0 + add r2, #1 + bl MOD06_0223C51C + add r1, sp, #0x20 + strb r0, [r1] + ldrb r0, [r1] + cmp r0, #0 + bne _0223C0CE + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C0CE: + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02034CE0 + str r0, [sp, #0x14] + add r0, r6, #0 + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0x1c] + ldr r1, [sp, #0x1c] + ldr r2, [sp, #0x14] + add r0, r5, #0 + add r3, sp, #0x28 + bl MOD06_0223D2DC + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202AB54 + cmp r0, #0 + bne _0223C118 + add r0, r6, #0 + bl FUN_0204A1D8 + mov r1, #1 + str r1, [sp, #0x2c] + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #0x20 + strb r0, [r1, #0x14] +_0223C118: + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DEC + add r3, r0, #0 + ldr r0, [sp, #0x1c] + add r1, sp, #0x20 + str r0, [sp] + ldrb r1, [r1] + mov r0, #0 + add r2, sp, #0x28 + bl MOD06_0223CF14 + add r1, sp, #0x20 + strb r0, [r1] + add r0, r5, #0 + add r1, sp, #0x20 + bl MOD06_0223C764 + ldr r0, [sp, #0x1c] + add r1, sp, #0x20 + bl MOD06_0223C738 + add r1, sp, #0x20 + ldrb r1, [r1] + add r0, r5, #0 + add r2, r7, #0 + bl MOD06_0223C470 + cmp r0, #0 + beq _0223C15E + mov r0, #1 + str r0, [sp, #0x10] + b _0223C162 +_0223C15E: + mov r0, #0 + str r0, [sp, #0x10] +_0223C162: + add r1, sp, #0x3c + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + str r0, [r1, #0xc] + str r0, [sp, #0x48] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205ED3C + cmp r0, #0 + beq _0223C184 + mov r0, #1 + str r0, [sp, #0xc] + b _0223C188 +_0223C184: + mov r0, #0 + str r0, [sp, #0xc] +_0223C188: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223C1E0 + add r0, r5, #0 + add r1, sp, #0x24 + bl MOD06_0223D0E8 + cmp r0, #0 + beq _0223C1E0 + ldr r0, [sp, #0x24] + mov r1, #6 + bl FUN_0202AAB8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + add r1, sp, #0x28 + bl MOD06_0223D030 + cmp r0, #0 + bne _0223C1DA + mov r0, #0xb + add r1, r0, #0 + add r1, #0xf5 + bl FUN_020476CC + str r0, [r4] + add r1, r5, #0 + bl FUN_02047BB0 + ldr r0, [sp, #0x28] + ldr r1, [sp, #0x24] + ldr r2, [r4] + bl MOD06_0223D044 + add r5, #0x90 + ldr r0, [r5] + bl FUN_0205DD40 + add sp, #0xac + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0223C1DA: + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C1E0: + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223C1FE + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F214 + str r0, [sp, #0x18] + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r4, #0 + bl MOD06_0223CFD0 + b _0223C208 +_0223C1FE: + mov r0, #0xb + mov r1, #0x4a + bl FUN_020476CC + str r0, [r4] +_0223C208: + ldr r0, [r4] + add r1, r5, #0 + bl FUN_02047BB0 + add r0, sp, #0x20 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0223C2CC + mov r7, #4 + ldr r1, [sp, #0x14] + mov r0, #0 + add r2, sp, #0x4c + add r3, r7, #0 +_0223C222: + ldr r6, [r1, #8] + add r0, r0, #1 + str r6, [r2] + ldrsb r6, [r1, r7] + strh r6, [r2, #4] + ldrsb r6, [r1, r3] + add r1, #8 + strh r6, [r2, #6] + add r2, #8 + cmp r0, #0xc + blt _0223C222 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + ldr r0, [sp, #0x14] + add r1, sp, #0x5c + add r2, sp, #0x64 + bl MOD06_0223B944 + ldr r1, [sp, #0x14] + add r0, r5, #0 + add r2, sp, #0x4c + add r3, sp, #0x54 + bl MOD06_0223B970 + add r0, r5, #0 + add r1, r6, #0 + add r2, sp, #0x7c + add r3, sp, #0x84 + bl MOD06_0223B9A8 + ldr r0, [sp, #0x14] + add r1, r6, #0 + add r2, sp, #0x8c + add r3, sp, #0x94 + bl MOD06_0224CDB8 + ldr r0, [sp, #0xc] + cmp r0, #0 + bne _0223C2A2 + ldr r1, [sp, #0x18] + add r0, r5, #0 + add r2, r6, #0 + add r3, sp, #0x4c + bl MOD06_0223CFFC + add r0, sp, #0x4c + str r0, [sp] + add r0, sp, #0x28 + str r0, [sp, #4] + add r0, sp, #0x3c + str r0, [sp, #8] + ldr r1, [sp, #0x1c] + ldr r2, [r4] + ldr r3, [sp, #0x14] + add r0, r5, #0 + bl MOD06_0223C31C + b _0223C2DC +_0223C2A2: + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F368 + ldr r1, [r4] + mov r2, #0xb + str r0, [r1, #0x20] + ldr r0, [r4] + ldr r1, [r5, #0xc] + bl FUN_0206ABC4 + add r0, sp, #0x28 + str r0, [sp] + ldr r1, [sp, #0x1c] + ldr r2, [r4] + add r0, r5, #0 + add r3, sp, #0x4c + bl MOD06_0223C3F4 + b _0223C2DC +_0223C2CC: + bl ErrorHandling + ldr r0, [r4] + bl FUN_02047964 + add sp, #0xac + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223C2DC: + cmp r0, #0 + bne _0223C2E4 + mov r0, #0 + str r0, [sp, #0x10] +_0223C2E4: + mov r0, #4 + bl FUN_02016B90 + cmp r0, #0 + bne _0223C2F2 + bl ErrorHandling +_0223C2F2: + mov r0, #0xb + bl FUN_02016B90 + cmp r0, #0 + bne _0223C300 + bl ErrorHandling +_0223C300: + ldr r0, [sp, #0x10] + cmp r0, #0 + bne _0223C30E + ldr r0, [r4] + bl FUN_02047964 + b _0223C314 +_0223C30E: + mov r0, #0 + add r5, #0x74 + strh r0, [r5] +_0223C314: + ldr r0, [sp, #0x10] + add sp, #0xac + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C31C +MOD06_0223C31C: ; 0x0223C31C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + ldr r6, [sp, #0x38] + add r5, r0, #0 + ldr r0, [r6, #0xc] + add r7, r2, #0 + str r1, [sp, #0x10] + ldr r4, [sp, #0x30] + cmp r0, #0 + beq _0223C3CA + ldr r0, [r6] + cmp r0, #1 + bne _0223C350 + ldr r0, [r3, #0x7c] + str r0, [r4, #0x20] + add r0, r3, #0 + add r0, #0x80 + ldr r0, [r0] + str r0, [r4, #0x28] + add r0, r3, #0 + add r0, #0x84 + ldr r0, [r0] + add r3, #0x88 + str r0, [r4, #0x50] + ldr r0, [r3] + str r0, [r4, #0x58] +_0223C350: + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #0x18 + add r2, sp, #0x14 + bl FUN_0205E098 + ldr r0, [r6, #4] + cmp r0, #1 + bne _0223C38C + add r0, r5, #0 + bl FUN_020377AC + bl FUN_020238F4 + bl FUN_020239BC + str r0, [sp] + ldr r0, [sp, #0x34] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [sp, #0x10] + str r0, [sp, #8] + str r7, [sp, #0xc] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x14] + ldr r3, [r6, #8] + bl MOD06_0223CBD4 + b _0223C3A6 +_0223C38C: + mov r0, #1 + str r0, [sp] + str r7, [sp, #4] + ldr r0, [sp, #0x18] + ldr r1, [sp, #0x10] + str r0, [sp, #8] + ldr r0, [sp, #0x14] + ldr r2, [sp, #0x34] + str r0, [sp, #0xc] + add r0, r5, #0 + add r3, r4, #0 + bl MOD06_0223CC24 +_0223C3A6: + add r4, r0, #0 + cmp r4, #0 + beq _0223C3EC + ldr r0, [r5, #0x38] + bl FUN_02055320 + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r2, r0, #0 + add r0, r5, #0 + add r5, #0x90 + ldr r3, [r5] + add r1, r6, #0 + bl FUN_0205DD80 + b _0223C3EC +_0223C3CA: + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r1, #0 + ldr r2, [sp, #0x34] + mov r1, #0xff + add r3, r4, #0 + str r7, [sp, #8] + bl MOD06_0223CA6C + add r4, r0, #0 + beq _0223C3EC + add r5, #0x90 + ldr r0, [r5] + bl FUN_0205DD40 +_0223C3EC: + add r0, r4, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C3F4 +MOD06_0223C3F4: ; 0x0223C3F4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + mov r0, #0 + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r1, #0xff + add r6, r3, #0 + str r4, [sp, #8] + bl MOD06_0223CA6C + cmp r0, #0 + bne _0223C41C + add sp, #0xc + mov r0, #0 + pop {r3, r4, r5, r6, pc} +_0223C41C: + mov r0, #0 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + ldr r2, [sp, #0x20] + add r0, r5, #0 + mov r1, #0xff + add r3, r6, #0 + str r4, [sp, #8] + bl MOD06_0223CA6C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C438 +MOD06_0223C438: ; 0x0223C438 + push {lr} + sub sp, #0xc + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r1, #0 + ldr r2, [sp, #0x10] + mov r1, #0xff + bl MOD06_0223CA6C + add sp, #0xc + pop {pc} + .align 2, 0 + + thumb_func_start MOD06_0223C454 +MOD06_0223C454: ; 0x0223C454 + push {lr} + sub sp, #0xc + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r2, [sp, #8] + add r0, r1, #0 + ldr r1, [sp, #0x14] + ldr r2, [sp, #0x10] + bl MOD06_0223CA6C + add sp, #0xc + pop {pc} + + thumb_func_start MOD06_0223C470 +MOD06_0223C470: ; 0x0223C470 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + lsl r1, r7, #8 + add r5, r0, #0 + add r6, r2, #0 + bl MOD06_0223C55C + cmp r0, #0 + bne _0223C4B0 + add r0, r5, #0 + add r0, #0x74 + ldrh r0, [r0] + add r1, r0, #1 + add r0, r5, #0 + add r0, #0x74 + strh r1, [r0] + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0223C4A8 + bl ErrorHandling +_0223C4A8: + cmp r4, #5 + blo _0223C4B0 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223C4B0: + add r0, r6, #0 + mov r4, #0x28 + bl FUN_02054798 + cmp r0, #0 + beq _0223C4C4 + add r4, #0x1e + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 + b _0223C4D4 +_0223C4C4: + ldr r0, [r5, #0x38] + bl FUN_020553C4 + cmp r0, #1 + bne _0223C4D4 + add r4, #0x1e + lsl r0, r4, #0x18 + lsr r4, r0, #0x18 +_0223C4D4: + add r0, r5, #0 + bl FUN_0204B33C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02249230 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x64 + bls _0223C4EC + mov r4, #0x64 +_0223C4EC: + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x64 + blo _0223C504 + bl ErrorHandling +_0223C504: + cmp r6, r4 + bge _0223C518 + add r0, r5, #0 + add r1, r7, #0 + bl MOD06_0223C584 + cmp r0, #0 + beq _0223C518 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0223C518: + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223C51C +MOD06_0223C51C: ; 0x0223C51C + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + add r4, r2, #0 + bl FUN_02054AFC + cmp r0, #0 + beq _0223C558 + add r0, r6, #0 + bl FUN_0205481C + cmp r0, #0 + beq _0223C548 + mov r0, #1 + strb r0, [r4] + add r0, r5, #0 + bl MOD06_0223CE00 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, r5, r6, pc} +_0223C548: + mov r0, #0 + strb r0, [r4] + add r0, r5, #0 + bl MOD06_0223CDF4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, r5, r6, pc} +_0223C558: + mov r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223C55C +MOD06_0223C55C: ; 0x0223C55C + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + mov r1, #0xa + bl _u32_div_f + lsr r1, r0, #8 + cmp r1, #8 + bls _0223C570 + mov r1, #8 +_0223C570: + mov r0, #8 + add r4, #0x74 + sub r1, r0, r1 + ldrh r0, [r4] + cmp r0, r1 + blo _0223C580 + mov r0, #1 + pop {r4, pc} +_0223C580: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_0223C584 +MOD06_0223C584: ; 0x0223C584 + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + cmp r5, #0x64 + blo _0223C5A0 + bl ErrorHandling +_0223C5A0: + cmp r5, r4 + blo _0223C5A8 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223C5A8: + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223C5AC +MOD06_0223C5AC: ; 0x0223C5AC + push {r4, lr} + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0223C5C6 + bl ErrorHandling +_0223C5C6: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x14 + bhs _0223C5D2 + mov r0, #0 + pop {r4, pc} +_0223C5D2: + blo _0223C5DC + cmp r0, #0x28 + bhs _0223C5DC + mov r0, #1 + pop {r4, pc} +_0223C5DC: + cmp r0, #0x28 + blo _0223C5E8 + cmp r0, #0x32 + bhs _0223C5E8 + mov r0, #2 + pop {r4, pc} +_0223C5E8: + cmp r0, #0x32 + blo _0223C5F4 + cmp r0, #0x3c + bhs _0223C5F4 + mov r0, #3 + pop {r4, pc} +_0223C5F4: + cmp r0, #0x3c + blo _0223C600 + cmp r0, #0x46 + bhs _0223C600 + mov r0, #4 + pop {r4, pc} +_0223C600: + cmp r0, #0x46 + blo _0223C60C + cmp r0, #0x50 + bhs _0223C60C + mov r0, #5 + pop {r4, pc} +_0223C60C: + cmp r0, #0x50 + blo _0223C618 + cmp r0, #0x55 + bhs _0223C618 + mov r0, #6 + pop {r4, pc} +_0223C618: + cmp r0, #0x55 + blo _0223C624 + cmp r0, #0x5a + bhs _0223C624 + mov r0, #7 + pop {r4, pc} +_0223C624: + cmp r0, #0x5a + blo _0223C630 + cmp r0, #0x5e + bhs _0223C630 + mov r0, #8 + pop {r4, pc} +_0223C630: + cmp r0, #0x5e + blo _0223C63C + cmp r0, #0x62 + bhs _0223C63C + mov r0, #9 + pop {r4, pc} +_0223C63C: + cmp r0, #0x62 + bne _0223C644 + mov r0, #0xa + pop {r4, pc} +_0223C644: + mov r0, #0xb + pop {r4, pc} + + thumb_func_start MOD06_0223C648 +MOD06_0223C648: ; 0x0223C648 + push {r4, lr} + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _0223C662 + bl ErrorHandling +_0223C662: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x3c + bhs _0223C66E + mov r0, #0 + pop {r4, pc} +_0223C66E: + blo _0223C678 + cmp r0, #0x5a + bhs _0223C678 + mov r0, #1 + pop {r4, pc} +_0223C678: + cmp r0, #0x5a + blo _0223C684 + cmp r0, #0x5f + bhs _0223C684 + mov r0, #2 + pop {r4, pc} +_0223C684: + cmp r0, #0x5f + blo _0223C690 + cmp r0, #0x63 + bhs _0223C690 + mov r0, #3 + pop {r4, pc} +_0223C690: + mov r0, #4 + pop {r4, pc} + + thumb_func_start MOD06_0223C694 +MOD06_0223C694: ; 0x0223C694 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r4, #0 + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x64 + blo _0223C6B2 + bl ErrorHandling +_0223C6B2: + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + cmp r5, #0 + beq _0223C6C4 + cmp r5, #1 + beq _0223C6E8 + cmp r5, #2 + beq _0223C70C + b _0223C730 +_0223C6C4: + cmp r0, #0x3c + bhs _0223C6CC + mov r4, #0 + b _0223C734 +_0223C6CC: + cmp r0, #0x5a + bhs _0223C6D4 + mov r4, #1 + b _0223C734 +_0223C6D4: + cmp r0, #0x5f + bhs _0223C6DC + mov r4, #2 + b _0223C734 +_0223C6DC: + cmp r0, #0x63 + bhs _0223C6E4 + mov r4, #3 + b _0223C734 +_0223C6E4: + mov r4, #4 + b _0223C734 +_0223C6E8: + cmp r0, #0x28 + bhs _0223C6F0 + mov r4, #0 + b _0223C734 +_0223C6F0: + cmp r0, #0x50 + bhs _0223C6F8 + mov r4, #1 + b _0223C734 +_0223C6F8: + cmp r0, #0x5f + bhs _0223C700 + mov r4, #2 + b _0223C734 +_0223C700: + cmp r0, #0x63 + bhs _0223C708 + mov r4, #3 + b _0223C734 +_0223C708: + mov r4, #4 + b _0223C734 +_0223C70C: + cmp r0, #0x28 + bhs _0223C714 + mov r4, #0 + b _0223C734 +_0223C714: + cmp r0, #0x50 + bhs _0223C71C + mov r4, #1 + b _0223C734 +_0223C71C: + cmp r0, #0x5f + bhs _0223C724 + mov r4, #2 + b _0223C734 +_0223C724: + cmp r0, #0x63 + bhs _0223C72C + mov r4, #3 + b _0223C734 +_0223C72C: + mov r4, #4 + b _0223C734 +_0223C730: + bl ErrorHandling +_0223C734: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0223C738 +MOD06_0223C738: ; 0x0223C738 + push {r4, lr} + add r4, r1, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + cmp r1, #0xe0 + beq _0223C754 + mov r0, #5 + lsl r0, r0, #6 + cmp r1, r0 + bne _0223C760 +_0223C754: + ldrb r0, [r4] + mov r1, #3 + lsl r0, r0, #1 + bl _s32_div_f + strb r0, [r4] +_0223C760: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223C764 +MOD06_0223C764: ; 0x0223C764 + push {r4, lr} + ldr r0, [r0, #0xc] + add r4, r1, #0 + bl FUN_0202A9B0 + bl FUN_0202AB80 + cmp r0, #1 + bne _0223C77E + ldrb r0, [r4] + asr r0, r0, #1 + strb r0, [r4] + pop {r4, pc} +_0223C77E: + cmp r0, #2 + bne _0223C78A + ldrb r1, [r4] + lsr r0, r1, #1 + add r0, r1, r0 + strb r0, [r4] +_0223C78A: + pop {r4, pc} + + thumb_func_start MOD06_0223C78C +MOD06_0223C78C: ; 0x0223C78C + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + bne _0223C7C6 + ldrb r0, [r1, #0xe] + cmp r0, #0x1c + bne _0223C7C6 + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r5, r0, #0x10 + cmp r5, #2 + blo _0223C7AC + bl ErrorHandling +_0223C7AC: + cmp r5, #0 + bne _0223C7C6 + mov r1, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_020671BC + mov r1, #0x19 + bl _u32_div_f + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} +_0223C7C6: + bl FUN_0201B9EC + ldr r1, _0223C7E4 ; =0x00000A3E + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x19 + blo _0223C7DC + bl ErrorHandling +_0223C7DC: + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, pc} + nop +_0223C7E4: .word 0x00000A3E + + thumb_func_start MOD06_0223C7E8 +MOD06_0223C7E8: ; 0x0223C7E8 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + ldrh r2, [r0, #6] + ldrh r1, [r0, #4] + cmp r1, r2 + blo _0223C7FC + lsl r0, r2, #0x18 + lsr r5, r0, #0x18 + lsl r0, r1, #0x18 + b _0223C802 +_0223C7FC: + lsl r0, r1, #0x18 + lsr r5, r0, #0x18 + lsl r0, r2, #0x18 +_0223C802: + lsr r4, r0, #0x18 + bl FUN_0201B9EC + sub r1, r4, r5 + add r1, r1, #1 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r6, r0, #0x18 + ldrb r0, [r7, #0xd] + cmp r0, #0 + bne _0223C84C + ldrb r0, [r7, #0xe] + cmp r0, #0x37 + beq _0223C82C + cmp r0, #0x48 + beq _0223C82C + cmp r0, #0x2e + bne _0223C84C +_0223C82C: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r7, r0, #0x10 + cmp r7, #2 + blo _0223C83C + bl ErrorHandling +_0223C83C: + cmp r7, #0 + bne _0223C848 + add r0, r5, r6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0223C848: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223C84C: + add r0, r5, r6 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223C854 +MOD06_0223C854: ; 0x0223C854 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #0x10] + ldr r6, [sp, #0x40] + str r1, [sp, #0x14] + mov r0, #0xb + str r2, [sp, #0x18] + add r5, r3, #0 + bl FUN_020669C0 + str r0, [sp, #0x1c] + bl FUN_02066978 + ldrb r0, [r6, #0xd] + mov r7, #0 + cmp r0, #0 + bne _0223C8E0 + ldrb r0, [r6, #0xe] + cmp r0, #0x38 + bne _0223C8BE + ldr r0, [sp, #0x10] + mov r1, #0x12 + bl FUN_02068678 + cmp r0, #0 + beq _0223C8E0 + cmp r0, #0xfe + beq _0223C8E0 + cmp r0, #0xff + beq _0223C8E0 + bl FUN_0201B9EC + ldr r1, _0223C964 ; =0x00005556 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #3 + blo _0223C8A6 + bl ErrorHandling +_0223C8A6: + cmp r4, #0 + beq _0223C8E0 + ldr r0, [sp, #0x44] + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + mov r7, #1 + b _0223C8E0 +_0223C8BE: + cmp r0, #0x1c + bne _0223C8E0 + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223C8D2 + bl ErrorHandling +_0223C8D2: + cmp r4, #0 + bne _0223C8E0 + ldr r0, [sp, #0x44] + bl FUN_02068854 + str r0, [sp, #0x20] + mov r7, #1 +_0223C8E0: + add r0, r5, #0 + bl FUN_02068AD8 + add r4, r0, #0 + cmp r7, #0 + beq _0223C92E +_0223C8EC: + ldrb r0, [r6, #0xe] + cmp r0, #0x38 + bne _0223C914 + ldr r0, [sp, #0x10] + add r1, r4, #0 + bl FUN_02068A20 + add r7, r0, #0 + cmp r7, #2 + bne _0223C904 + bl ErrorHandling +_0223C904: + ldr r0, [sp, #0x24] + cmp r7, r0 + bne _0223C92E + add r0, r5, #0 + bl FUN_02068AD8 + add r4, r0, #0 + b _0223C8EC +_0223C914: + cmp r0, #0x1c + bne _0223C8EC + add r0, r4, #0 + bl FUN_02068884 + ldr r1, [sp, #0x20] + cmp r0, r1 + beq _0223C92E + add r0, r5, #0 + bl FUN_02068AD8 + add r4, r0, #0 + b _0223C8EC +_0223C92E: + mov r0, #1 + str r0, [sp] + str r4, [sp, #4] + str r0, [sp, #8] + ldr r0, [r6] + mov r3, #0x20 + str r0, [sp, #0xc] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl FUN_02066ACC + ldr r0, [sp, #0x18] + ldr r2, [sp, #0x1c] + ldr r3, [sp, #0x48] + add r1, r6, #0 + bl MOD06_0223D1BC + cmp r0, #0 + bne _0223C95A + bl ErrorHandling +_0223C95A: + ldr r0, [sp, #0x1c] + bl FUN_02016A18 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223C964: .word 0x00005556 + + thumb_func_start MOD06_0223C968 +MOD06_0223C968: ; 0x0223C968 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0xb + str r1, [sp, #0xc] + str r2, [sp, #0x10] + add r5, r3, #0 + bl FUN_020669C0 + add r4, r0, #0 + bl FUN_02066978 + add r0, r7, #0 + mov r1, #0x12 + mov r6, #1 + bl FUN_02068678 + cmp r0, #0 + beq _0223C996 + cmp r0, #0xfe + beq _0223C996 + cmp r0, #0xff + bne _0223C998 +_0223C996: + mov r6, #0 +_0223C998: + cmp r6, #0 + beq _0223CA28 + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _0223CA28 + ldrb r0, [r5, #0xe] + cmp r0, #0x38 + bne _0223CA28 + bl FUN_0201B9EC + ldr r1, _0223CA68 ; =0x00005556 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #3 + blo _0223C9BE + bl ErrorHandling +_0223C9BE: + cmp r6, #0 + beq _0223CA28 + ldr r0, [sp, #0x28] + mov r1, #0x6f + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + cmp r6, #1 + bne _0223C9D8 + mov r6, #0 + b _0223C9E4 +_0223C9D8: + cmp r6, #0 + bne _0223C9E0 + mov r6, #1 + b _0223C9E4 +_0223C9E0: + bl ErrorHandling +_0223C9E4: + ldr r0, [sp, #0x28] + add r1, r5, #0 + bl MOD06_0223C78C + str r6, [sp] + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r2, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + mov r3, #0x20 + bl FUN_02066DD4 + add r0, r4, #0 + mov r1, #7 + add r2, r5, #0 + bl FUN_02067830 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x2c] + add r1, r5, #0 + add r2, r4, #0 + bl MOD06_0223D1BC + cmp r0, #0 + bne _0223CA1E + bl ErrorHandling +_0223CA1E: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} +_0223CA28: + ldr r0, [sp, #0x28] + add r1, r5, #0 + bl MOD06_0223C78C + str r0, [sp] + ldr r2, [sp, #0xc] + add r0, r4, #0 + add r1, r7, #0 + mov r3, #0x20 + bl FUN_02066D90 + add r0, r4, #0 + mov r1, #7 + add r2, r5, #0 + bl FUN_02067830 + ldr r0, [sp, #0x10] + ldr r3, [sp, #0x2c] + add r1, r5, #0 + add r2, r4, #0 + bl MOD06_0223D1BC + cmp r0, #0 + bne _0223CA5C + bl ErrorHandling +_0223CA5C: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223CA68: .word 0x00005556 + + thumb_func_start MOD06_0223CA6C +MOD06_0223CA6C: ; 0x0223CA6C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #0xc] + mov r7, #0 + add r1, sp, #0x10 + strb r7, [r1] + add r1, sp, #0x18 + ldrb r1, [r1, #0x10] + add r6, r0, #0 + add r5, r2, #0 + add r4, r3, #0 + cmp r1, #0 + beq _0223CA90 + cmp r1, #1 + beq _0223CAEC + cmp r1, #2 + beq _0223CB38 + b _0223CB86 +_0223CA90: + mov r1, #8 + str r1, [sp] + mov r1, #0x2a + str r1, [sp, #4] + add r1, sp, #0x10 + str r1, [sp, #8] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #0xc + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CACE + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #0xc + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CACE + bl MOD06_0223C5AC + add r1, sp, #0x10 + strb r0, [r1] +_0223CACE: + add r2, sp, #0x10 + ldrb r2, [r2] + add r0, r4, #0 + add r1, r5, #0 + bl MOD06_0223D27C + add r1, sp, #0x10 + strb r0, [r1] + ldrb r0, [r1] + lsl r0, r0, #3 + add r0, r4, r0 + ldrh r0, [r0, #4] + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + b _0223CB8A +_0223CAEC: + mov r1, #8 + str r1, [sp] + mov r1, #0x2a + str r1, [sp, #4] + add r1, sp, #0x10 + str r1, [sp, #8] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CB26 + bl MOD06_0223C648 + add r1, sp, #0x10 + strb r0, [r1] +_0223CB26: + add r0, sp, #0x10 + ldrb r0, [r0] + add r1, r5, #0 + lsl r0, r0, #3 + add r0, r4, r0 + bl MOD06_0223C7E8 + add r7, r0, #0 + b _0223CB8A +_0223CB38: + mov r1, #8 + str r1, [sp] + mov r1, #0x2a + str r1, [sp, #4] + add r1, sp, #0x10 + str r1, [sp, #8] + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + mov r3, #5 + bl MOD06_0223CED4 + cmp r0, #0 + bne _0223CB74 + ldr r0, [sp, #0xc] + bl MOD06_0223C694 + add r1, sp, #0x10 + strb r0, [r1] +_0223CB74: + add r0, sp, #0x10 + ldrb r0, [r0] + add r1, r5, #0 + lsl r0, r0, #3 + add r0, r4, r0 + bl MOD06_0223C7E8 + add r7, r0, #0 + b _0223CB8A +_0223CB86: + bl ErrorHandling +_0223CB8A: + add r0, r5, #0 + add r1, r6, #0 + add r2, r7, #0 + bl MOD06_0223CF78 + cmp r0, #0 + beq _0223CB9E + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223CB9E: + add r0, r7, #0 + add r1, r5, #0 + bl MOD06_0223D030 + cmp r0, #1 + bne _0223CBB0 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223CBB0: + ldr r0, [sp, #0x30] + str r6, [sp] + str r0, [sp, #4] + add r0, sp, #0x10 + ldrb r0, [r0] + ldr r2, [sp, #0x2c] + add r1, r7, #0 + lsl r0, r0, #3 + ldr r0, [r4, r0] + add r3, r5, #0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl MOD06_0223C968 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CBD4 +MOD06_0223CBD4: ; 0x0223CBD4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + cmp r5, #0 + bne _0223CBE8 + bl ErrorHandling +_0223CBE8: + lsl r0, r4, #0x18 + lsr r1, r0, #0x18 + cmp r7, #0 + beq _0223CC0A + ldr r0, [sp, #0x24] + ldr r3, [sp, #0x20] + str r0, [sp] + ldr r0, [sp, #0x28] + add r2, r6, #0 + str r0, [sp, #4] + ldr r0, [sp, #0x2c] + str r0, [sp, #8] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl MOD06_0223C854 + b _0223CC1E +_0223CC0A: + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x24] + str r0, [sp] + ldr r0, [sp, #0x2c] + add r2, r6, #0 + str r0, [sp, #4] + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl MOD06_0223C968 +_0223CC1E: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223CC24 +MOD06_0223CC24: ; 0x0223CC24 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r0, #0 + add r6, r1, #0 + mov r1, #0 + add r0, sp, #0x10 + strb r1, [r0] + mov r0, #8 + str r0, [sp] + mov r0, #0x2a + add r5, r3, #0 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + str r2, [sp, #0xc] + add r1, r2, #0 + add r0, r6, #0 + add r2, r5, #0 + mov r3, #0xc + bl MOD06_0223CED4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _0223CC7A + mov r0, #0xd + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + add r0, sp, #0x10 + str r0, [sp, #8] + ldr r1, [sp, #0xc] + add r0, r6, #0 + add r2, r5, #0 + mov r3, #0xc + bl MOD06_0223CED4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _0223CC7A + bl MOD06_0223C5AC + add r1, sp, #0x10 + strb r0, [r1] +_0223CC7A: + add r0, sp, #0x10 + ldrb r0, [r0] + lsl r0, r0, #3 + add r1, r5, r0 + ldrh r1, [r1, #4] + ldr r5, [r5, r0] + ldr r0, [sp, #0x30] + lsl r1, r1, #0x18 + lsr r7, r1, #0x18 + cmp r0, #0 + bne _0223CCA6 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + add r1, r5, #0 + add r2, r7, #0 + bl FUN_0205E080 + add r0, r4, #0 + bl FUN_0205E480 + b _0223CCC2 +_0223CCA6: + cmp r5, r0 + bne _0223CCBA + add r5, r0, #0 + ldr r0, [sp, #0x34] + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r4, #0 + bl FUN_0205E480 + b _0223CCC2 +_0223CCBA: + add r4, #0x90 + ldr r0, [r4] + bl FUN_0205DD40 +_0223CCC2: + ldr r0, [sp, #0x2c] + str r6, [sp] + str r0, [sp, #4] + lsl r0, r5, #0x10 + ldr r2, [sp, #0x28] + ldr r3, [sp, #0xc] + lsr r0, r0, #0x10 + add r1, r7, #0 + bl MOD06_0223C968 + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223CCDC +MOD06_0223CCDC: ; 0x0223CCDC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_021F51D0 + str r0, [sp, #8] + ldr r0, [r5, #0xc] + bl FUN_0206BB1C + mov r1, #0 + bl FUN_0206B9B0 + str r0, [sp, #0xc] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0 + add r3, sp, #0x10 + bl MOD06_0223D2DC + bl FUN_0201B9EC + ldr r1, _0223CD78 ; =0x00001746 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0xb + blo _0223CD1A + bl ErrorHandling +_0223CD1A: + add r0, r6, #5 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, sp, #0x10 + ldrb r1, [r0, #0xd] + cmp r1, #0 + bne _0223CD4C + ldrb r0, [r0, #0xe] + cmp r0, #0x37 + beq _0223CD36 + cmp r0, #0x48 + beq _0223CD36 + cmp r0, #0x2e + bne _0223CD4C +_0223CD36: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r6, r0, #0x10 + cmp r6, #2 + blo _0223CD46 + bl ErrorHandling +_0223CD46: + cmp r6, #0 + beq _0223CD4C + mov r7, #0xf +_0223CD4C: + add r0, r5, #0 + bl FUN_021F522C + mov r1, #0x63 + lsl r1, r1, #2 + ldr r2, [r4, r1] + mov r0, #2 + orr r0, r2 + str r0, [r4, r1] + ldr r0, [sp, #0xc] + add r1, r7, #0 + str r0, [sp] + ldr r0, [sp, #8] + mov r2, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r3, sp, #0x10 + str r4, [sp, #4] + bl MOD06_0223C968 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223CD78: .word 0x00001746 + + thumb_func_start MOD06_0223CD7C +MOD06_0223CD7C: ; 0x0223CD7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + str r2, [sp, #8] + ldr r0, [r5, #0xc] + add r7, r1, #0 + add r6, r3, #0 + bl FUN_0206BB1C + mov r1, #0 + bl FUN_0206B9B0 + add r4, r0, #0 + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0 + add r3, sp, #0xc + bl MOD06_0223D2DC + str r4, [sp] + str r6, [sp, #4] + ldr r1, [sp, #8] + add r0, r7, #0 + mov r2, #1 + add r3, sp, #0xc + bl MOD06_0223C968 + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CDB8 +MOD06_0223CDB8: ; 0x0223CDB8 + push {r4, r5, r6, lr} + add r6, r1, #0 + add r5, r0, #0 + add r0, r6, #0 + mov r4, #0 + bl FUN_02054AFC + cmp r0, #0 + beq _0223CDE6 + add r0, r6, #0 + bl FUN_0205481C + cmp r0, #0 + beq _0223CDDE + add r0, r5, #0 + bl MOD06_0223CE00 + add r4, r0, #0 + b _0223CDE6 +_0223CDDE: + add r0, r5, #0 + bl MOD06_0223CDF4 + add r4, r0, #0 +_0223CDE6: + cmp r4, #0 + beq _0223CDEE + mov r0, #1 + pop {r4, r5, r6, pc} +_0223CDEE: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CDF4 +MOD06_0223CDF4: ; 0x0223CDF4 + push {r3, lr} + bl FUN_02034CE0 + ldr r0, [r0] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CE00 +MOD06_0223CE00: ; 0x0223CE00 + push {r3, lr} + bl FUN_02034CE0 + add r0, #0xcc + ldr r0, [r0] + pop {r3, pc} + + thumb_func_start MOD06_0223CE0C +MOD06_0223CE0C: ; 0x0223CE0C + push {r4, lr} + add r4, r1, #0 + bl FUN_02034CE0 + cmp r4, #0 + beq _0223CE22 + cmp r4, #1 + beq _0223CE2A + cmp r4, #2 + beq _0223CE32 + b _0223CE3A +_0223CE22: + mov r1, #0x49 + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r4, pc} +_0223CE2A: + mov r1, #0x15 + lsl r1, r1, #4 + ldr r0, [r0, r1] + pop {r4, pc} +_0223CE32: + mov r1, #0x5f + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r4, pc} +_0223CE3A: + bl ErrorHandling + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CE44 +MOD06_0223CE44: ; 0x0223CE44 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r6, r0, #0 + mov r0, #0 + str r1, [sp] + add r7, r2, #0 + str r3, [sp, #4] + add r4, r0, #0 + add r1, sp, #0x10 +_0223CE56: + strb r4, [r1, r0] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xc + blo _0223CE56 + ldr r0, [sp] + add r5, r4, #0 + cmp r0, #0 + bls _0223CEAC +_0223CE6A: + lsl r0, r5, #3 + str r0, [sp, #0xc] + ldr r0, [r6, r0] + mov r1, #6 + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, #7 + ldr r0, [r6, r0] + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #8] + cmp r0, r7 + beq _0223CE94 + cmp r1, r7 + bne _0223CEA0 +_0223CE94: + add r1, r4, #1 + lsl r1, r1, #0x18 + add r0, r4, #0 + lsr r4, r1, #0x18 + add r1, sp, #0x10 + strb r5, [r1, r0] +_0223CEA0: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp] + cmp r5, r0 + blo _0223CE6A +_0223CEAC: + cmp r4, #0 + beq _0223CEB6 + ldr r0, [sp] + cmp r4, r0 + bne _0223CEBC +_0223CEB6: + add sp, #0x1c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223CEBC: + bl FUN_0201B9EC + add r1, r4, #0 + bl _s32_div_f + add r0, sp, #0x10 + ldrb r1, [r0, r1] + ldr r0, [sp, #4] + strb r1, [r0] + mov r0, #1 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223CED4 +MOD06_0223CED4: ; 0x0223CED4 + push {r4, r5, r6, lr} + ldrb r0, [r1, #0xd] + add r5, r2, #0 + add r6, r3, #0 + cmp r0, #0 + bne _0223CF0E + add r0, sp, #0 + ldrb r1, [r1, #0xe] + ldrb r0, [r0, #0x14] + cmp r1, r0 + bne _0223CF0E + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223CEFA + bl ErrorHandling +_0223CEFA: + cmp r4, #0 + bne _0223CF0E + add r2, sp, #0 + ldrb r2, [r2, #0x10] + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0223CE44 + pop {r4, r5, r6, pc} +_0223CF0E: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CF14 +MOD06_0223CF14: ; 0x0223CF14 + push {r3, r4} + ldrb r4, [r2, #0xd] + cmp r4, #0 + bne _0223CF70 + cmp r0, #0 + ldrb r0, [r2, #0xe] + beq _0223CF26 + cmp r0, #0x3c + b _0223CF6A +_0223CF26: + cmp r0, #0x47 + beq _0223CF32 + cmp r0, #0x63 + beq _0223CF32 + cmp r0, #0x23 + bne _0223CF36 +_0223CF32: + lsl r1, r1, #1 + b _0223CF6A +_0223CF36: + cmp r0, #8 + bne _0223CF46 + cmp r3, #0xa + bne _0223CF6A + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + b _0223CF6A +_0223CF46: + cmp r0, #0x51 + bne _0223CF58 + sub r0, r3, #5 + cmp r0, #2 + bhi _0223CF6A + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + b _0223CF6A +_0223CF58: + cmp r0, #0x49 + beq _0223CF64 + cmp r0, #0x5f + beq _0223CF64 + cmp r0, #1 + bne _0223CF6A +_0223CF64: + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 +_0223CF6A: + cmp r1, #0x64 + ble _0223CF70 + mov r1, #0x64 +_0223CF70: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + pop {r3, r4} + bx lr + + thumb_func_start MOD06_0223CF78 +MOD06_0223CF78: ; 0x0223CF78 + push {r4, lr} + add r4, r2, #0 + ldr r2, [r0, #8] + cmp r2, #0 + beq _0223CF86 + mov r0, #0 + pop {r4, pc} +_0223CF86: + ldrb r2, [r0, #0xd] + cmp r2, #0 + bne _0223CFCA + ldrb r0, [r0, #0xe] + cmp r0, #0x33 + beq _0223CF96 + cmp r0, #0x16 + bne _0223CFCA +_0223CF96: + add r0, r1, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #5 + bhi _0223CFAC + mov r0, #0 + pop {r4, pc} +_0223CFAC: + sub r0, r0, #5 + cmp r4, r0 + bgt _0223CFCA + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223CFC2 + bl ErrorHandling +_0223CFC2: + cmp r4, #0 + bne _0223CFCA + mov r0, #1 + pop {r4, pc} +_0223CFCA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223CFD0 +MOD06_0223CFD0: ; 0x0223CFD0 + push {r4, lr} + add r4, r2, #0 + cmp r1, #0 + bne _0223CFE4 + mov r0, #0xb + mov r1, #0 + bl FUN_020476CC + str r0, [r4] + pop {r4, pc} +_0223CFE4: + ldr r0, [r0, #0xc] + bl FUN_02034E30 + bl FUN_02034E24 + add r1, r0, #0 + ldrh r1, [r1] + mov r0, #0xb + bl FUN_020477EC + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_0223CFFC +MOD06_0223CFFC: ; 0x0223CFFC + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r6, r2, #0 + add r4, r3, #0 + cmp r1, #0 + beq _0223D02A + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + mov r1, #1 + bl FUN_0202A990 + add r1, r4, #0 + add r1, #0x38 + str r1, [sp] + ldr r2, [r5, #0x1c] + add r4, #0x30 + ldr r2, [r2] + add r1, r6, #0 + add r3, r4, #0 + bl MOD06_02245658 +_0223D02A: + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223D030 +MOD06_0223D030: ; 0x0223D030 + ldr r2, [r1, #4] + cmp r2, #0 + beq _0223D040 + ldrb r1, [r1, #0xc] + cmp r1, r0 + bls _0223D040 + mov r0, #1 + bx lr +_0223D040: + mov r0, #0 + bx lr + + thumb_func_start MOD06_0223D044 +MOD06_0223D044: ; 0x0223D044 + push {r0, r1, r2, r3} + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + mov r0, #4 + add r6, r2, #0 + bl FUN_020669C0 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #4 + bl FUN_0202AAB8 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #6 + bl FUN_0202AAB8 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + add r0, r5, #0 + mov r1, #2 + bl FUN_0202AAB8 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #3 + bl FUN_0202AAB8 + str r0, [sp, #0xc] + add r0, r5, #0 + mov r1, #7 + bl FUN_0202AAB8 + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #5 + bl FUN_0202AAB8 + add r1, sp, #0x10 + strh r0, [r1] + ldr r1, [sp, #4] + ldr r0, [sp, #0xc] + lsl r1, r1, #0x10 + str r0, [sp] + ldr r3, [sp, #8] + add r0, r4, #0 + lsr r1, r1, #0x10 + add r2, r7, #0 + bl FUN_02066EA4 + add r0, r4, #0 + mov r1, #7 + add r2, sp, #0x30 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0x9f + add r2, sp, #0x14 + bl FUN_02067830 + add r0, r4, #0 + mov r1, #0xa2 + add r2, sp, #0x10 + bl FUN_02067830 + ldr r0, [r6, #8] + add r1, r4, #0 + bl FUN_0206B900 + cmp r0, #0 + bne _0223D0D8 + bl ErrorHandling +_0223D0D8: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x18 + pop {r3, r4, r5, r6, r7} + pop {r3} + add sp, #0x10 + bx r3 + + thumb_func_start MOD06_0223D0E8 +MOD06_0223D0E8: ; 0x0223D0E8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r0, [sp] + ldr r0, [r0, #0xc] + str r1, [sp, #4] + mov r5, #0 + bl FUN_0202A9B0 + add r6, r0, #0 + add r4, r5, #0 +_0223D0FC: + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202AA40 + bl FUN_0206043C + add r7, r0, #0 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202AA74 + cmp r0, #0 + beq _0223D134 + ldr r0, [sp] + ldr r0, [r0, #0x1c] + ldr r0, [r0] + cmp r7, r0 + bne _0223D134 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202AAA0 + lsl r2, r5, #2 + add r1, sp, #8 + str r0, [r1, r2] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 +_0223D134: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _0223D0FC + cmp r5, #0 + bne _0223D148 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D148: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0223D158 + bl ErrorHandling +_0223D158: + cmp r4, #0 + bne _0223D162 + add sp, #0x14 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0223D162: + cmp r5, #1 + bls _0223D1AA + cmp r5, #0 + bne _0223D16E + bl ErrorHandling +_0223D16E: + cmp r5, #1 + bhi _0223D176 + mov r4, #0 + b _0223D19E +_0223D176: + bl FUN_0201B9EC + add r4, r0, #0 + ldr r0, _0223D1B8 ; =0x0000FFFF + add r1, r5, #0 + bl _s32_div_f + add r1, r0, #0 + add r1, r1, #1 + lsl r1, r1, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, r5 + blo _0223D19E + bl ErrorHandling +_0223D19E: + lsl r1, r4, #2 + add r0, sp, #8 + ldr r1, [r0, r1] + ldr r0, [sp, #4] + str r1, [r0] + b _0223D1B0 +_0223D1AA: + ldr r1, [sp, #8] + ldr r0, [sp, #4] + str r1, [r0] +_0223D1B0: + mov r0, #1 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223D1B8: .word 0x0000FFFF + + thumb_func_start MOD06_0223D1BC +MOD06_0223D1BC: ; 0x0223D1BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + str r0, [sp] + ldrb r0, [r5, #0xd] + add r6, r2, #0 + add r7, r3, #0 + cmp r0, #0 + bne _0223D1D8 + ldrb r0, [r5, #0xe] + cmp r0, #0xe + bne _0223D1D8 + mov r2, #1 + b _0223D1DA +_0223D1D8: + mov r2, #0 +_0223D1DA: + ldr r1, [r7] + add r0, r6, #0 + bl FUN_0206A094 + mov r4, #0 + add r0, r6, #0 + mov r1, #5 + add r2, r4, #0 + bl FUN_020671BC + ldr r1, _0223D270 ; =0x000001A6 + cmp r0, r1 + bne _0223D208 + ldrb r0, [r5, #0xf] + mov r4, #1 + cmp r0, #0 + add r0, sp, #8 + bne _0223D204 + mov r1, #0 + strb r1, [r0] + b _0223D24E +_0223D204: + strb r4, [r0] + b _0223D24E +_0223D208: + add r1, r1, #1 + cmp r0, r1 + bne _0223D222 + ldrb r0, [r5, #0x10] + mov r4, #1 + cmp r0, #0 + add r0, sp, #8 + bne _0223D21E + mov r1, #0 + strb r1, [r0] + b _0223D24E +_0223D21E: + strb r4, [r0] + b _0223D24E +_0223D222: + cmp r0, #0xc9 + bne _0223D24E + ldrb r0, [r5, #0x11] + mov r4, #1 + lsl r1, r0, #3 + ldr r0, _0223D274 ; =0x0224F308 + ldr r0, [r0, r1] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #4] + bl FUN_0201B9EC + ldr r1, [sp, #4] + bl _s32_div_f + ldrb r0, [r5, #0x11] + lsl r2, r0, #3 + ldr r0, _0223D278 ; =0x0224F30C + ldr r0, [r0, r2] + ldrb r1, [r0, r1] + add r0, sp, #8 + strb r1, [r0] +_0223D24E: + cmp r4, #0 + beq _0223D25C + add r0, r6, #0 + mov r1, #0x70 + add r2, sp, #8 + bl FUN_02067830 +_0223D25C: + ldr r0, [sp] + add r1, r6, #0 + lsl r0, r0, #2 + add r0, r7, r0 + ldr r0, [r0, #4] + bl FUN_0206B900 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223D270: .word 0x000001A6 +_0223D274: .word 0x0224F308 +_0223D278: .word 0x0224F30C + + thumb_func_start MOD06_0223D27C +MOD06_0223D27C: ; 0x0223D27C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r1, #0xd] + add r4, r2, #0 + cmp r0, #0 + bne _0223D2D8 + ldrb r0, [r1, #0xe] + cmp r0, #0x48 + beq _0223D296 + cmp r0, #0x37 + beq _0223D296 + cmp r0, #0x2e + bne _0223D2D8 +_0223D296: + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r6, r0, #0x10 + cmp r6, #2 + blo _0223D2A6 + bl ErrorHandling +_0223D2A6: + cmp r6, #0 + bne _0223D2AE + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D2AE: + mov r1, #0 +_0223D2B0: + lsl r2, r1, #3 + lsl r7, r4, #3 + add r6, r5, r2 + ldr r3, [r5, r2] + ldr r2, [r5, r7] + add r0, r5, r7 + cmp r3, r2 + bne _0223D2CA + ldrh r2, [r6, #4] + ldrh r0, [r0, #4] + cmp r2, r0 + bls _0223D2CA + add r4, r1, #0 +_0223D2CA: + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, #0xc + blo _0223D2B0 + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} +_0223D2D8: + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223D2DC +MOD06_0223D2DC: ; 0x0223D2DC + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + add r6, r0, #0 + add r5, r2, #0 + add r0, r7, #0 + mov r1, #0x4c + mov r2, #0 + add r4, r3, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0223D302 + mov r2, #0 + add r0, r7, #0 + mov r1, #0xa + strb r2, [r4, #0xd] + bl FUN_020671BC + b _0223D308 +_0223D302: + mov r0, #1 + strb r0, [r4, #0xd] + mov r0, #0x7b +_0223D308: + strb r0, [r4, #0xe] + mov r0, #0 + strb r0, [r4, #0xc] + str r0, [r4, #4] + str r0, [r4, #8] + cmp r5, #0 + beq _0223D344 + add r1, r5, #0 + add r1, #0x8c + ldr r1, [r1] + strb r1, [r4, #0xf] + add r1, r5, #0 + add r1, #0x90 + ldr r1, [r1] + strb r1, [r4, #0x10] + add r1, r5, #0 + add r1, #0xa0 + ldr r1, [r1] + cmp r1, #0 + beq _0223D342 + cmp r1, #8 + ble _0223D338 + bl ErrorHandling +_0223D338: + add r5, #0xa0 + ldr r0, [r5] + sub r0, r0, #1 + strb r0, [r4, #0x11] + b _0223D344 +_0223D342: + strb r0, [r4, #0x11] +_0223D344: + ldr r0, [r6, #0xc] + bl FUN_020238F4 + bl FUN_020239BC + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223D354 +MOD06_0223D354: ; 0x0223D354 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + mov r1, #1 + add r5, r0, #0 + ldr r2, _0223D3B0 ; =0x0000FFFF + mov r0, #0 + lsl r1, r1, #8 +_0223D362: + lsl r3, r0, #1 + ldrh r3, [r4, r3] + cmp r3, r2 + beq _0223D374 + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, r1 + blo _0223D362 +_0223D374: + mov r1, #0x8b + lsl r1, r1, #2 + strb r0, [r5, r1] + ldrb r1, [r5, r1] + mov r0, #0xb + lsl r1, r1, #1 + bl FUN_02016998 + mov r1, #0x8a + lsl r1, r1, #2 + str r0, [r5, r1] + add r1, r1, #4 + ldrb r1, [r5, r1] + mov r0, #0 + cmp r1, #0 + ble _0223D3AE + mov r1, #0x8a + lsl r1, r1, #2 + add r2, r1, #4 +_0223D39A: + lsl r7, r0, #1 + ldrh r6, [r4, r7] + ldr r3, [r5, r1] + add r0, r0, #1 + strh r6, [r3, r7] + lsl r0, r0, #0x10 + ldrb r3, [r5, r2] + lsr r0, r0, #0x10 + cmp r0, r3 + blt _0223D39A +_0223D3AE: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223D3B0: .word 0x0000FFFF + + thumb_func_start MOD06_0223D3B4 +MOD06_0223D3B4: ; 0x0223D3B4 + push {r4, lr} + mov r1, #0x93 + mov r0, #0xb + lsl r1, r1, #2 + bl FUN_02016998 + mov r2, #0x93 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD06_0223D3D0 +MOD06_0223D3D0: ; 0x0223D3D0 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + add r7, r0, #0 + str r2, [sp] + add r6, r3, #0 + bl MOD06_0223D3B4 + add r4, r0, #0 + ldr r0, [r5, #8] + mov r1, #0xb + str r0, [r4] + mov r0, #0x60 + bl FUN_020219F4 + mov r1, #0x23 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_020238F4 + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl LoadPlayerDataAddress + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_02029FC8 + mov r1, #0x87 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r5, #0xc] + bl FUN_020462AC + mov r1, #0x22 + lsl r1, r1, #4 + str r0, [r4, r1] + ldr r2, [sp, #0x18] + add r0, r1, #4 + str r2, [r4, r0] + add r0, r5, #0 + bl MOD06_0223D490 + ldr r1, _0223D488 ; =0x0000023E + strb r0, [r4, r1] + add r0, r5, #0 + add r0, #0x98 + ldr r2, [r0] + add r0, r1, #0 + sub r0, #0x26 + str r2, [r4, r0] + add r0, r1, #3 + strb r6, [r4, r0] + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223D456 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + b _0223D472 +_0223D456: + cmp r0, #1 + ldr r0, [r5, #0xc] + bne _0223D468 + bl FUN_02026CC4 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] + b _0223D472 +_0223D468: + bl FUN_02029C80 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r4, r1] +_0223D472: + ldr r1, [sp] + add r0, r4, #0 + bl MOD06_0223D354 + ldr r1, _0223D48C ; =MOD06_0223D4AC + add r0, r7, #0 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D488: .word 0x0000023E +_0223D48C: .word MOD06_0223D4AC + + thumb_func_start MOD06_0223D490 +MOD06_0223D490: ; 0x0223D490 + push {r3, lr} + ldr r0, [r0, #0x38] + bl FUN_020552F8 + cmp r0, #0 + beq _0223D4A4 + cmp r0, #1 + beq _0223D4A4 + cmp r0, #3 + bne _0223D4A8 +_0223D4A4: + mov r0, #0xa + pop {r3, pc} +_0223D4A8: + mov r0, #8 + pop {r3, pc} + + thumb_func_start MOD06_0223D4AC +MOD06_0223D4AC: ; 0x0223D4AC + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + ldr r1, _0223D604 ; =0x0000022F + add r4, r0, #0 + ldrb r1, [r4, r1] + cmp r1, #0x14 + bls _0223D4C8 + b _0223D5D0 +_0223D4C8: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0223D4D4: ; jump table + .short _0223D4FE - _0223D4D4 - 2 ; case 0 + .short _0223D50A - _0223D4D4 - 2 ; case 1 + .short _0223D514 - _0223D4D4 - 2 ; case 2 + .short _0223D524 - _0223D4D4 - 2 ; case 3 + .short _0223D52E - _0223D4D4 - 2 ; case 4 + .short _0223D538 - _0223D4D4 - 2 ; case 5 + .short _0223D542 - _0223D4D4 - 2 ; case 6 + .short _0223D54C - _0223D4D4 - 2 ; case 7 + .short _0223D556 - _0223D4D4 - 2 ; case 8 + .short _0223D560 - _0223D4D4 - 2 ; case 9 + .short _0223D56A - _0223D4D4 - 2 ; case 10 + .short _0223D574 - _0223D4D4 - 2 ; case 11 + .short _0223D57E - _0223D4D4 - 2 ; case 12 + .short _0223D58C - _0223D4D4 - 2 ; case 13 + .short _0223D596 - _0223D4D4 - 2 ; case 14 + .short _0223D5A0 - _0223D4D4 - 2 ; case 15 + .short _0223D5D0 - _0223D4D4 - 2 ; case 16 + .short _0223D5D0 - _0223D4D4 - 2 ; case 17 + .short _0223D5A8 - _0223D4D4 - 2 ; case 18 + .short _0223D5B6 - _0223D4D4 - 2 ; case 19 + .short _0223D5C6 - _0223D4D4 - 2 ; case 20 +_0223D4FE: + bl MOD06_0223D608 + ldr r0, _0223D604 ; =0x0000022F + mov r1, #1 + strb r1, [r4, r0] + b _0223D5D0 +_0223D50A: + bl MOD06_0223D788 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D514: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223D918 + ldr r0, _0223D604 ; =0x0000022F + mov r1, #3 + strb r1, [r4, r0] + b _0223D5D0 +_0223D524: + bl MOD06_0223DB64 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D52E: + bl MOD06_0223DFB4 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D538: + bl MOD06_0223E198 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D542: + bl MOD06_0223E29C + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D54C: + bl MOD06_0223E5E4 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D556: + bl MOD06_0223E61C + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D560: + bl MOD06_0223E79C + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D56A: + bl MOD06_0223E858 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D574: + bl MOD06_0223E950 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D57E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223EA38 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D58C: + bl MOD06_0223EB04 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D596: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223ECD8 + b _0223D5D0 +_0223D5A0: + add r0, r6, #0 + bl MOD06_0223ECF0 + b _0223D5D0 +_0223D5A8: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223ED54 + ldr r1, _0223D604 ; =0x0000022F + strb r0, [r4, r1] + b _0223D5D0 +_0223D5B6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223EB2C + ldr r0, _0223D604 ; =0x0000022F + mov r1, #0x14 + strb r1, [r4, r0] + b _0223D5D0 +_0223D5C6: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223D7EC + pop {r4, r5, r6, pc} +_0223D5D0: + ldr r0, _0223D604 ; =0x0000022F + ldrb r1, [r4, r0] + cmp r1, #4 + blo _0223D5FE + cmp r1, #0xb + bhi _0223D5FE + sub r0, #0x37 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + mov r0, #0x7f + lsl r0, r0, #2 + mov r1, #1 + ldr r0, [r4, r0] + lsl r1, r1, #0xc + bl FUN_020201E4 + add r4, #0x94 + ldr r0, [r4] + bl FUN_0201FDEC +_0223D5FE: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_0223D604: .word 0x0000022F + + thumb_func_start MOD06_0223D608 +MOD06_0223D608: ; 0x0223D608 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0223D618 + add r0, r4, #0 + bl MOD06_0223D63C + pop {r4, pc} + + thumb_func_start MOD06_0223D618 +MOD06_0223D618: ; 0x0223D618 + push {r4, lr} + mov r2, #0x7a + add r4, r0, #0 + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + mov r3, #0xb + bl FUN_0200A86C + add r1, r4, #0 + add r1, #0x88 + str r0, [r1] + mov r0, #0xb + bl FUN_0200AA80 + add r4, #0x8c + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_0223D63C +MOD06_0223D63C: ; 0x0223D63C + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, _0223D77C ; =0x00000241 + ldrb r0, [r5, r0] + cmp r0, #0 + bne _0223D6B8 + mov r4, #3 + add r0, r4, #0 + mov r1, #0xb + bl FUN_02012838 + add r1, r5, #0 + add r1, #0x84 + str r0, [r1] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0xf + mov r3, #2 + bl FUN_02012880 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0x10 + mov r3, #0xe + bl FUN_02012880 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + mov r2, #0x11 + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [r1] + sub r3, #0x13 + bl FUN_02012880 + mov r3, #1 + str r3, [sp] + mov r1, #0xd + str r1, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _0223D780 ; =0x000002DF + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, #8 + add r2, r4, #0 + bl FUN_02019064 + b _0223D710 +_0223D6B8: + mov r4, #2 + add r0, r4, #0 + mov r1, #0xb + bl FUN_02012838 + add r1, r5, #0 + add r1, #0x84 + str r0, [r1] + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + ldr r0, [r0] + ldr r1, [r1] + mov r2, #0xf + add r3, r4, #0 + bl FUN_02012880 + add r0, r5, #0 + add r1, r5, #0 + add r0, #0x84 + add r1, #0x88 + mov r2, #0x11 + add r3, r2, #0 + ldr r0, [r0] + ldr r1, [r1] + sub r3, #0x13 + bl FUN_02012880 + mov r3, #1 + str r3, [sp] + mov r1, #0xd + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + str r1, [sp, #0xc] + ldr r0, _0223D780 ; =0x000002DF + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5] + add r1, #8 + mov r2, #3 + bl FUN_02019064 +_0223D710: + add r0, r5, #0 + add r0, #0x84 + ldr r0, [r0] + add r2, sp, #0x14 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x18] + mov r0, #0 + strb r0, [r2, #8] + mov r1, #1 + strb r1, [r2, #9] + strb r4, [r2, #0xa] + ldrb r3, [r2, #0xb] + mov r1, #0xf + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0x30 + bic r3, r1 + strb r3, [r2, #0xb] + ldrb r3, [r2, #0xb] + mov r1, #0xc0 + bic r3, r1 + strb r3, [r2, #0xb] + str r0, [sp] + mov r3, #0xb + str r3, [sp, #4] + ldr r0, [r5] + ldr r2, _0223D784 ; =0x000003D9 + mov r1, #3 + bl FUN_0200CB00 + add r0, r5, #0 + ldr r2, _0223D784 ; =0x000003D9 + add r0, #8 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r0, #0xb + str r0, [sp] + mov r0, #2 + mov r2, #0 + str r0, [sp, #4] + add r0, sp, #0x14 + mov r1, #8 + add r3, r2, #0 + bl FUN_02001C14 + add r5, #0x80 + str r0, [r5] + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D77C: .word 0x00000241 +_0223D780: .word 0x000002DF +_0223D784: .word 0x000003D9 + + thumb_func_start MOD06_0223D788 +MOD06_0223D788: ; 0x0223D788 + push {r4, lr} + add r4, r0, #0 + add r0, #0x80 + ldr r0, [r0] + bl FUN_02001C78 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0223D7A4 + add r1, r1, #1 + cmp r0, r1 + beq _0223D7B4 + b _0223D7AE +_0223D7A4: + add r0, r4, #0 + bl MOD06_0223D7B8 + mov r0, #0x13 + pop {r4, pc} +_0223D7AE: + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + pop {r4, pc} +_0223D7B4: + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_0223D7B8 +MOD06_0223D7B8: ; 0x0223D7B8 + push {r4, lr} + add r4, r0, #0 + add r0, #8 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #8 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0 + bl FUN_02001C5C + add r0, r4, #0 + add r0, #0x84 + ldr r0, [r0] + bl FUN_02012870 + add r4, #8 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + + thumb_func_start MOD06_0223D7EC +MOD06_0223D7EC: ; 0x0223D7EC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x8f + add r4, r1, #0 + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223D804 + mov r0, #0 + pop {r3, r4, r5, pc} +_0223D804: + ldr r0, _0223D90C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223D908 + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_0200A8B8 + add r0, r4, #0 + add r0, #0x8c + ldr r0, [r0] + bl FUN_0200AB18 + mov r0, #0x23 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_02021A20 + ldr r0, _0223D910 ; =0x00000241 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223D8F4 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + bl FUN_02034824 + cmp r0, #0x65 + beq _0223D8F4 + ldr r0, [r5, #0x1c] + ldr r0, [r0] + cmp r0, #0x51 + beq _0223D8F4 + ldr r1, _0223D914 ; =0x000001BE + cmp r0, r1 + beq _0223D8F4 + add r0, r1, #0 + add r0, #0x81 + ldrb r2, [r4, r0] + cmp r2, #0 + beq _0223D888 + add r1, #0x82 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _0223D888 + mov r0, #0xb + bl FUN_02029084 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D888: + cmp r2, #1 + bls _0223D8A2 + mov r0, #0xb + bl FUN_02029060 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D8A2: + mov r0, #9 + lsl r0, r0, #6 + ldrb r0, [r4, r0] + cmp r0, #1 + bls _0223D8C2 + mov r0, #0xb + bl FUN_02029078 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D8C2: + cmp r2, #0 + beq _0223D8DC + mov r0, #0xb + bl FUN_02029054 + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 + b _0223D8F4 +_0223D8DC: + cmp r0, #0 + beq _0223D8F4 + mov r0, #0xb + bl FUN_0202906C + add r1, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r2, #1 + bl FUN_02028AD4 +_0223D8F4: + mov r0, #0x8a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, pc} +_0223D908: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223D90C: .word 0x021C48B8 +_0223D910: .word 0x00000241 +_0223D914: .word 0x000001BE + + thumb_func_start MOD06_0223D918 +MOD06_0223D918: ; 0x0223D918 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + mov r0, #0x12 + str r0, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #6 + mov r2, #0 + str r0, [sp, #8] + add r4, r1, #0 + str r2, [sp, #0xc] + ldr r0, [r4] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + add r0, r4, #0 + bl MOD06_0223D7B8 + add r0, r4, #0 + bl MOD06_0223D978 + mov r0, #0xb + bl FUN_0201EB64 + add r1, r4, #0 + add r1, #0x90 + str r0, [r1] + add r1, r4, #0 + add r1, #0x90 + ldr r0, [r5, #0x20] + ldr r1, [r1] + bl FUN_0201EB78 + add r0, r4, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0201EB8C + ldr r0, _0223D974 ; =0x0000023D + mov r1, #0 + strb r1, [r4, r0] + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223D974: .word 0x0000023D + + thumb_func_start MOD06_0223D978 +MOD06_0223D978: ; 0x0223D978 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r5, #0 + ldr r7, _0223D9B4 ; =0x0224F3AC + mov r6, #0 + add r4, #8 +_0223D984: + ldr r0, _0223D9B8 ; =0x00000241 + ldrb r0, [r5, r0] + cmp r0, #0 + beq _0223D99C + cmp r6, #1 + bne _0223D99C + ldr r0, [r5] + ldr r2, _0223D9BC ; =0x0224F350 + add r1, r4, #0 + bl FUN_02019150 + b _0223D9A6 +_0223D99C: + ldr r0, [r5] + add r1, r4, #0 + add r2, r7, #0 + bl FUN_02019150 +_0223D9A6: + add r6, r6, #1 + add r4, #0x10 + add r7, #8 + cmp r6, #6 + blo _0223D984 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223D9B4: .word 0x0224F3AC +_0223D9B8: .word 0x00000241 +_0223D9BC: .word 0x0224F350 + + thumb_func_start MOD06_0223D9C0 +MOD06_0223D9C0: ; 0x0223D9C0 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x28 + mov r1, #1 + bl FUN_0200CCF8 + mov r4, #0 + add r5, #8 +_0223D9D0: + add r0, r5, #0 + bl FUN_02019570 + add r0, r5, #0 + bl FUN_02019178 + add r4, r4, #1 + add r5, #0x10 + cmp r4, #6 + blo _0223D9D0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0223D9E8 +MOD06_0223D9E8: ; 0x0223D9E8 + push {r4, lr} + sub sp, #0x10 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + add r4, r0, #0 + str r1, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x3e + mov r3, #1 + bl FUN_0200687C + ldr r0, _0223DA88 ; =0x00000241 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223DA26 + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x3e + mov r1, #2 + mov r3, #1 + bl FUN_020068C8 + b _0223DA3E +_0223DA26: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0xb + str r0, [sp, #0xc] + ldr r2, [r4] + mov r0, #0x3e + mov r1, #3 + mov r3, #1 + bl FUN_020068C8 +_0223DA3E: + mov r0, #0x20 + str r0, [sp] + mov r0, #0xb + mov r2, #0 + str r0, [sp, #4] + mov r0, #0x3e + mov r1, #1 + add r3, r2, #0 + bl FUN_02006930 + mov r0, #0 + str r0, [sp] + mov r3, #0xb + str r3, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #0x1f + bl FUN_0200CB00 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02025084 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + ldr r0, [r4] + mov r1, #3 + mov r2, #1 + mov r3, #0xa + bl FUN_0200CD68 + add sp, #0x10 + pop {r4, pc} + .align 2, 0 +_0223DA88: .word 0x00000241 + + thumb_func_start MOD06_0223DA8C +MOD06_0223DA8C: ; 0x0223DA8C + push {r4, lr} + add r4, r0, #0 + bl FUN_0201E7CC + mov r1, #0x8e + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4] + mov r1, #0 + bl FUN_02018884 + mov r1, #0x8d + lsl r1, r1, #2 + strb r0, [r4, r1] + ldr r0, [r4] + mov r1, #1 + bl FUN_02018884 + ldr r1, _0223DB10 ; =0x00000235 + strb r0, [r4, r1] + ldr r0, [r4] + mov r1, #2 + bl FUN_02018884 + ldr r1, _0223DB14 ; =0x00000236 + strb r0, [r4, r1] + ldr r0, [r4] + mov r1, #3 + bl FUN_02018884 + ldr r1, _0223DB18 ; =0x00000237 + strb r0, [r4, r1] + 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 + mov r0, #0 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #1 + add r1, r0, #0 + bl FUN_0201E6E4 + mov r0, #2 + mov r1, #1 + bl FUN_0201E6E4 + mov r0, #3 + mov r1, #1 + bl FUN_0201E6E4 + pop {r4, pc} + nop +_0223DB10: .word 0x00000235 +_0223DB14: .word 0x00000236 +_0223DB18: .word 0x00000237 + + thumb_func_start MOD06_0223DB1C +MOD06_0223DB1C: ; 0x0223DB1C + push {r4, lr} + mov r1, #0x8d + add r4, r0, #0 + lsl r1, r1, #2 + ldrb r1, [r4, r1] + mov r0, #0 + bl FUN_020178BC + ldr r1, _0223DB58 ; =0x00000235 + mov r0, #1 + ldrb r1, [r4, r1] + bl FUN_020178BC + ldr r1, _0223DB5C ; =0x00000236 + mov r0, #2 + ldrb r1, [r4, r1] + bl FUN_020178BC + ldr r1, _0223DB60 ; =0x00000237 + mov r0, #3 + ldrb r1, [r4, r1] + bl FUN_020178BC + mov r0, #0x8e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0201E720 + pop {r4, pc} + nop +_0223DB58: .word 0x00000235 +_0223DB5C: .word 0x00000236 +_0223DB60: .word 0x00000237 + + thumb_func_start MOD06_0223DB64 +MOD06_0223DB64: ; 0x0223DB64 + push {r4, r5, lr} + sub sp, #0xc + ldr r1, _0223DBC8 ; =0x0000023D + add r4, r0, #0 + add r2, r1, #1 + ldrb r3, [r4, r1] + ldrb r2, [r4, r2] + cmp r3, r2 + beq _0223DB9E + ldr r5, _0223DBCC ; =0x0224F358 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r4, #0 + str r0, [r3] + add r1, #0x90 + ldr r1, [r1] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r0, _0223DBC8 ; =0x0000023D + add sp, #0xc + ldrb r1, [r4, r0] + add r1, r1, #1 + strb r1, [r4, r0] + mov r0, #3 + pop {r4, r5, pc} +_0223DB9E: + mov r2, #0 + strb r2, [r4, r1] + bl MOD06_0223EB90 + add r0, r4, #0 + bl MOD06_0223D9E8 + add r0, r4, #0 + bl MOD06_0223DA8C + add r0, r4, #0 + bl MOD06_0223DBF4 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223DED0 + mov r0, #4 + add sp, #0xc + pop {r4, r5, pc} + nop +_0223DBC8: .word 0x0000023D +_0223DBCC: .word 0x0224F358 + + thumb_func_start MOD06_0223DBD0 +MOD06_0223DBD0: ; 0x0223DBD0 + push {r3, lr} + ldr r2, _0223DBF0 ; =0x00000241 + ldrb r0, [r0, r2] + cmp r0, #1 + bne _0223DBDE + add r0, r1, #0 + pop {r3, pc} +_0223DBDE: + cmp r0, #2 + bne _0223DBEC + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r1, r0, #0 +_0223DBEC: + add r0, r1, #0 + pop {r3, pc} + .align 2, 0 +_0223DBF0: .word 0x00000241 + + thumb_func_start MOD06_0223DBF4 +MOD06_0223DBF4: ; 0x0223DBF4 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r2, _0223DCE8 ; =0x00000241 + add r5, r0, #0 + ldrb r0, [r5, r2] + cmp r0, #0 + bne _0223DC12 + mov r0, #0 + mov r1, #0x1a + sub r2, #0xe9 + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp] + b _0223DC34 +_0223DC12: + cmp r0, #1 + bne _0223DC26 + mov r0, #0 + mov r1, #0x1a + sub r2, #0xa + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp] + b _0223DC34 +_0223DC26: + mov r0, #0 + mov r1, #0x1a + mov r2, #0xa + mov r3, #0xb + bl FUN_0200A86C + str r0, [sp] +_0223DC34: + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r1, #0xb + add r0, r0, #1 + bl FUN_02012838 + str r0, [r5, #0x7c] + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + mov r6, #0 + cmp r0, #0 + bls _0223DC8E + add r4, r6, #0 +_0223DC52: + mov r1, #0x8a + lsl r1, r1, #2 + ldr r1, [r5, r1] + add r0, r5, #0 + ldrh r1, [r1, r4] + bl MOD06_0223DBD0 + add r1, r0, #0 + ldr r0, [sp] + bl FUN_0200A914 + add r7, r0, #0 + mov r2, #0x8a + lsl r2, r2, #2 + ldr r2, [r5, r2] + ldr r0, [r5, #0x7c] + ldrh r2, [r2, r4] + add r1, r7, #0 + bl FUN_020128A0 + add r0, r7, #0 + bl FUN_02021A20 + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r6, r6, #1 + add r4, r4, #2 + cmp r6, r0 + blo _0223DC52 +_0223DC8E: + add r1, r5, #0 + add r1, #0x88 + mov r2, #8 + add r3, r2, #0 + ldr r0, [r5, #0x7c] + ldr r1, [r1] + sub r3, #0xa + bl FUN_02012880 + ldr r0, [sp] + bl FUN_0200A8B8 + ldr r4, _0223DCEC ; =0x0224F38C + add r3, sp, #4 + 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, #0x7c] + mov r3, #0xb + str r0, [sp, #4] + add r0, r5, #0 + add r0, #8 + str r0, [sp, #0x10] + mov r0, #0x8b + lsl r0, r0, #2 + ldrb r0, [r5, r0] + add r1, r0, #1 + add r0, sp, #4 + strh r1, [r0, #0x10] + mov r1, #0 + add r0, r2, #0 + add r2, r1, #0 + str r5, [sp, #0x20] + bl FUN_020010A8 + str r0, [r5, #0x78] + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_0223DCE8: .word 0x00000241 +_0223DCEC: .word 0x0224F38C + + thumb_func_start MOD06_0223DCF0 +MOD06_0223DCF0: ; 0x0223DCF0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + mov r1, #0x13 + str r0, [sp, #0x10] + add r6, r2, #0 + bl FUN_02001470 + add r4, r0, #0 + cmp r6, #1 + beq _0223DD0C + ldr r0, _0223DE28 ; =0x00000638 + bl FUN_020054C8 +_0223DD0C: + add r0, r4, #0 + add r0, #0x18 + mov r1, #0 + bl FUN_02019620 + mov r1, #1 + mvn r1, r1 + cmp r5, r1 + beq _0223DDB2 + ldr r2, _0223DE2C ; =0x00000241 + ldrb r0, [r4, r2] + cmp r0, #0 + bne _0223DD3C + mov r0, #0x82 + mov r1, #0xb + bl FUN_020219F4 + lsl r1, r5, #0x10 + lsr r1, r1, #0x10 + mov r2, #0xb + add r6, r0, #0 + bl FUN_0206E790 + b _0223DD86 +_0223DD3C: + cmp r0, #1 + bne _0223DD60 + mov r0, #0 + mov r1, #0x1a + sub r2, #0xa + mov r3, #0xb + bl FUN_0200A86C + add r1, r5, #0 + add r7, r0, #0 + add r1, #0x8a + bl FUN_0200A914 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_0200A8B8 + b _0223DD86 +_0223DD60: + mov r0, #0 + mov r1, #0x1a + sub r2, #0x5a + mov r3, #0xb + bl FUN_0200A86C + add r7, r0, #0 + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + bl FUN_02086060 + add r1, r0, #0 + add r0, r7, #0 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r7, #0 + bl FUN_0200A8B8 +_0223DD86: + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0223DE30 ; =0x000F0E00 + add r2, r6, #0 + str r0, [sp, #8] + add r0, r4, #0 + add r0, #0x18 + add r3, r1, #0 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + lsl r1, r5, #0x10 + add r0, r4, #0 + lsr r1, r1, #0x10 + bl MOD06_0223EC3C + b _0223DDBA +_0223DDB2: + add r0, r4, #0 + lsr r1, r1, #0x10 + bl MOD06_0223EC3C +_0223DDBA: + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019220 + add r1, sp, #0x14 + ldr r0, [sp, #0x10] + add r1, #2 + add r2, sp, #0x14 + bl FUN_02001448 + add r0, sp, #0x14 + ldrh r0, [r0, #2] + cmp r0, #0 + bne _0223DDE4 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + b _0223DDF0 +_0223DDE4: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 +_0223DDF0: + ldr r0, [sp, #0x10] + mov r1, #2 + bl FUN_02001470 + cmp r0, #7 + bls _0223DE16 + add r1, sp, #0x14 + ldrh r1, [r1, #2] + add r1, r1, #7 + cmp r0, r1 + bls _0223DE16 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0223DE16: + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223DE28: .word 0x00000638 +_0223DE2C: .word 0x00000241 +_0223DE30: .word 0x000F0E00 + + thumb_func_start MOD06_0223DE34 +MOD06_0223DE34: ; 0x0223DE34 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r4, r1, #0 + mov r1, #0x13 + add r7, r2, #0 + bl FUN_02001470 + mov r1, #1 + mvn r1, r1 + add r5, r0, #0 + cmp r4, r1 + beq _0223DEC6 + lsl r1, r4, #0x10 + lsr r1, r1, #0x10 + bl MOD06_0223EA08 + str r0, [sp, #0x10] + mov r0, #0xc + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #9 + bl FUN_0200A914 + add r6, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + ldr r2, [sp, #0x10] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r3, r0, #0 + str r7, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0223DECC ; =0x00010200 + add r5, #8 + str r0, [sp, #8] + add r0, r5, #0 + mov r5, #0x90 + mov r1, #0 + add r2, r4, #0 + sub r3, r5, r3 + str r1, [sp, #0xc] + bl FUN_0201BDE0 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 +_0223DEC6: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_0223DECC: .word 0x00010200 + + thumb_func_start MOD06_0223DED0 +MOD06_0223DED0: ; 0x0223DED0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + cmp r1, #0 + bne _0223DF1C + add r0, #0x28 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x28 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x12 + 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, #0x28 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + b _0223DF30 +_0223DF1C: + mov r0, #0x50 + str r0, [sp] + add r0, r5, #0 + mov r3, #0x10 + add r0, #0x28 + mov r1, #0xf + mov r2, #0 + str r3, [sp, #4] + bl FUN_020196F4 +_0223DF30: + mov r0, #0x10 + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x13 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02023A10 + add r2, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + mov r3, #0x50 + mov r1, #0 + add r0, #0x28 + add r2, r4, #0 + sub r3, r3, r6 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r5, #0x28 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223DFB4 +MOD06_0223DFB4: ; 0x0223DFB4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r2, sp, #0 + ldr r0, [r5, #0x78] + mov r1, #0 + add r2, #2 + bl FUN_02001448 + ldr r0, [r5, #0x78] + bl FUN_02001204 + add r4, r0, #0 + ldr r0, [r5, #0x78] + mov r1, #0 + add r2, sp, #0 + bl FUN_02001448 + add r0, sp, #0 + ldrh r2, [r0] + ldrh r0, [r0, #2] + cmp r0, r2 + beq _0223DFF4 + mov r0, #2 + lsl r2, r2, #4 + lsl r0, r0, #8 + add r2, #0x18 + lsl r2, r2, #0x10 + ldr r0, [r5, r0] + mov r1, #0xb0 + asr r2, r2, #0x10 + bl FUN_0200C6E4 +_0223DFF4: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0223E006 + add r0, r0, #1 + cmp r4, r0 + bne _0223E004 + b _0223E182 +_0223E004: + b _0223E034 +_0223E006: + mov r1, #0 + ldr r0, [r5, #0x78] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r5, #0x7c] + bl FUN_02012870 + add r0, r5, #0 + bl MOD06_0223D9C0 + add r0, r5, #0 + bl MOD06_0223DB1C + ldr r0, [r5] + mov r1, #1 + bl FUN_02018744 + ldr r0, _0223E188 ; =0x000005DC + bl FUN_020054C8 + mov r0, #0xc + pop {r3, r4, r5, pc} +_0223E034: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02020128 + mov r1, #0x82 + lsl r1, r1, #2 + strh r0, [r5, r1] + sub r1, #0xc + ldr r0, [r5, r1] + bl FUN_02020128 + ldr r1, _0223E18C ; =0x0000020A + strh r0, [r5, r1] + sub r1, #0x12 + ldr r0, [r5, r1] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #1 + bl MOD06_0223ECC8 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x18 + bl FUN_02019570 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + ldr r1, _0223E190 ; =0x00000242 + mov r2, #1 + strh r4, [r5, r1] + add r0, r1, #2 + strh r2, [r5, r0] + ldrh r1, [r5, r1] + add r0, r5, #0 + bl MOD06_0223EA08 + mov r1, #0x92 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x3c + ldr r0, [r5, r1] + bl FUN_02023A10 + mov r2, #0x92 + lsl r2, r2, #2 + ldr r1, [r5, r2] + cmp r0, r1 + bhs _0223E0FC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #3 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xa + pop {r3, r4, r5, pc} +_0223E0FC: + sub r2, r2, #7 + ldrb r2, [r5, r2] + cmp r2, #1 + bne _0223E112 + ldr r0, _0223E188 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD06_0223E384 + pop {r3, r4, r5, pc} +_0223E112: + bl _u32_div_f + ldr r1, _0223E194 ; =0x00000246 + strh r0, [r5, r1] + ldrh r0, [r5, r1] + cmp r0, #0x63 + bls _0223E124 + mov r0, #0x63 + strh r0, [r5, r1] +_0223E124: + ldr r1, _0223E190 ; =0x00000242 + add r0, r5, #0 + ldrh r1, [r5, r1] + mov r2, #0 + bl MOD06_0223E9BC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #4 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + add r0, r5, #0 + mov r1, #1 + bl MOD06_0223EBF8 + ldr r0, _0223E188 ; =0x000005DC + bl FUN_020054C8 + mov r0, #5 + pop {r3, r4, r5, pc} +_0223E182: + mov r0, #4 + pop {r3, r4, r5, pc} + nop +_0223E188: .word 0x000005DC +_0223E18C: .word 0x0000020A +_0223E190: .word 0x00000242 +_0223E194: .word 0x00000246 + + thumb_func_start MOD06_0223E198 +MOD06_0223E198: ; 0x0223E198 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E1AE + mov r0, #5 + pop {r4, pc} +_0223E1AE: + add r0, r4, #0 + bl MOD06_0223E1D8 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223E4E8 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + mov r0, #6 + pop {r4, pc} + + thumb_func_start MOD06_0223E1D8 +MOD06_0223E1D8: ; 0x0223E1D8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + ldr r1, _0223E298 ; =0x00000241 + add r5, r0, #0 + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0223E1FA + add r0, r1, #0 + add r1, r1, #1 + sub r0, #0x31 + ldrh r1, [r5, r1] + ldr r0, [r5, r0] + mov r2, #0xb + bl FUN_0206EEF8 + add r4, r0, #0 + b _0223E214 +_0223E1FA: + cmp r0, #2 + bne _0223E212 + add r0, r1, #0 + add r1, r1, #1 + sub r0, #0x31 + ldrh r1, [r5, r1] + ldr r0, [r5, r0] + bl FUN_02029E2C + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + b _0223E214 +_0223E212: + mov r4, #0 +_0223E214: + add r0, r5, #0 + add r0, #0x48 + mov r1, #0xf + bl FUN_02019620 + add r0, r5, #0 + add r0, #0x48 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r0, #0x18 + mov r1, #0xb + bl FUN_020219F4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x14 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + add r2, r4, #0 + mov r3, #3 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r6, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0x48 + add r2, r6, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add r5, #0x48 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0223E298: .word 0x00000241 + + thumb_func_start MOD06_0223E29C +MOD06_0223E29C: ; 0x0223E29C + push {r4, lr} + mov r1, #0x91 + add r4, r0, #0 + lsl r1, r1, #2 + add r0, r4, r1 + add r1, r1, #2 + ldrh r1, [r4, r1] + bl FUN_02079AAC + cmp r0, #0 + beq _0223E2C4 + ldr r0, _0223E378 ; =0x00000638 + bl FUN_020054C8 + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223E4E8 + mov r0, #6 + pop {r4, pc} +_0223E2C4: + ldr r0, _0223E37C ; =0x021C48B8 + mov r1, #1 + ldr r2, [r0, #0x48] + add r0, r2, #0 + tst r0, r1 + beq _0223E314 + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + add r0, #0x48 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x38 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + ldr r0, _0223E380 ; =0x000005DC + bl FUN_020054C8 + add r0, r4, #0 + bl MOD06_0223E384 + pop {r4, pc} +_0223E314: + mov r0, #2 + tst r0, r2 + beq _0223E374 + add r0, r4, #0 + add r0, #0x48 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x38 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldrh r1, [r4, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0xe + ldrh r1, [r4, r1] + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r4, #0x18 + add r0, r4, #0 + bl FUN_02019220 + ldr r0, _0223E380 ; =0x000005DC + bl FUN_020054C8 + mov r0, #4 + pop {r4, pc} +_0223E374: + mov r0, #6 + pop {r4, pc} + .align 2, 0 +_0223E378: .word 0x00000638 +_0223E37C: .word 0x021C48B8 +_0223E380: .word 0x000005DC + + thumb_func_start MOD06_0223E384 +MOD06_0223E384: ; 0x0223E384 + push {r3, r4, r5, lr} + sub sp, #8 + ldr r2, _0223E4E0 ; =0x00000241 + add r4, r0, #0 + ldrb r0, [r4, r2] + cmp r0, #0 + bne _0223E3A8 + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrh r2, [r4, r2] + ldr r0, [r4, r0] + mov r3, #0xb + bl FUN_0206ED24 + b _0223E3D2 +_0223E3A8: + cmp r0, #1 + bne _0223E3C0 + sub r2, #0x31 + ldr r0, [r4, r2] + bl FUN_02025DB0 + cmp r0, #0xc8 + bne _0223E3BC + mov r0, #0 + b _0223E3D2 +_0223E3BC: + mov r0, #1 + b _0223E3D2 +_0223E3C0: + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, r0] + bl FUN_02029DD4 +_0223E3D2: + cmp r0, #0 + bne _0223E450 + mov r0, #0x91 + mov r1, #0 + lsl r0, r0, #2 + strh r1, [r4, r0] + sub r0, r0, #3 + ldrb r0, [r4, r0] + cmp r0, #0 + bne _0223E3F6 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #7 + bl FUN_0200A914 + add r5, r0, #0 + b _0223E418 +_0223E3F6: + cmp r0, #1 + bne _0223E40A + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xc + bl FUN_0200A914 + add r5, r0, #0 + b _0223E418 +_0223E40A: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xe + bl FUN_0200A914 + add r5, r0, #0 +_0223E418: + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r4, r2] + sub r2, #0x1c + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r4, r1] + add sp, #8 + mov r0, #0xa + pop {r3, r4, r5, pc} +_0223E450: + ldr r1, _0223E4E4 ; =0x00000242 + add r0, r4, #0 + ldrh r1, [r4, r1] + mov r2, #0 + bl MOD06_0223E9BC + mov r0, #0 + str r0, [sp] + mov r1, #1 + mov r2, #0x91 + add r0, r4, #0 + str r1, [sp, #4] + lsl r2, r2, #2 + add r0, #0x8c + ldrsh r2, [r4, r2] + ldr r0, [r0] + mov r3, #2 + bl FUN_0200AD38 + mov r0, #0 + str r0, [sp] + mov r0, #1 + mov r2, #0x92 + str r0, [sp, #4] + lsl r2, r2, #2 + ldr r3, [r4, r2] + sub r2, r2, #4 + add r0, r4, #0 + ldrsh r2, [r4, r2] + add r0, #0x8c + ldr r0, [r0] + mul r2, r3 + mov r1, #2 + mov r3, #6 + bl FUN_0200AD38 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #5 + bl FUN_0200A914 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r5, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r4, r2] + sub r2, #0x1c + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r4, r1] + mov r0, #7 + add sp, #8 + pop {r3, r4, r5, pc} + nop +_0223E4E0: .word 0x00000241 +_0223E4E4: .word 0x00000242 + + thumb_func_start MOD06_0223E4E8 +MOD06_0223E4E8: ; 0x0223E4E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + add r0, #0x38 + mov r1, #0xf + bl FUN_02019620 + cmp r4, #0 + bne _0223E50A + add r0, r5, #0 + add r0, #0x38 + mov r1, #1 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 +_0223E50A: + mov r0, #0x18 + mov r1, #0xb + bl FUN_020219F4 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x15 + bl FUN_0200A914 + mov r3, #2 + add r6, r0, #0 + mov r2, #0x91 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + lsl r2, r2, #2 + add r0, #0x8c + ldrsh r2, [r5, r2] + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0200B7B8 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r5, #0 + add r0, #0x38 + add r2, r4, #0 + add r3, r1, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0x16 + bl FUN_0200A914 + add r7, r0, #0 + mov r0, #1 + str r0, [sp] + mov r2, #0x92 + str r0, [sp, #4] + lsl r2, r2, #2 + ldr r3, [r5, r2] + sub r2, r2, #4 + add r0, r5, #0 + ldrsh r2, [r5, r2] + add r0, #0x8c + ldr r0, [r0] + mul r2, r3 + mov r1, #0 + mov r3, #6 + bl FUN_0200AD38 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + add r1, r4, #0 + add r2, r7, #0 + bl FUN_0200B7B8 + mov r0, #0 + add r1, r4, #0 + add r2, r0, #0 + bl FUN_02002E14 + add r6, r0, #0 + mov r0, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r5, #0 + mov r3, #0x60 + mov r1, #0 + add r0, #0x38 + add r2, r4, #0 + sub r3, r3, r6 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_02021A20 + add r5, #0x38 + add r0, r5, #0 + bl FUN_02019220 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0223E5E4 +MOD06_0223E5E4: ; 0x0223E5E4 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E5FE + add sp, #4 + mov r0, #7 + pop {r3, r4, pc} +_0223E5FE: + mov r3, #0xb + str r3, [sp] + ldr r0, [r4] + ldr r1, _0223E618 ; =0x0224F348 + mov r2, #0x1f + bl FUN_02002198 + add r4, #0x80 + str r0, [r4] + mov r0, #8 + add sp, #4 + pop {r3, r4, pc} + nop +_0223E618: .word 0x0224F348 + + thumb_func_start MOD06_0223E61C +MOD06_0223E61C: ; 0x0223E61C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x80 + ldr r0, [r0] + mov r1, #0xb + bl FUN_020021AC + cmp r0, #0 + beq _0223E63A + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _0223E638 + b _0223E74A +_0223E638: + b _0223E78C +_0223E63A: + ldr r1, _0223E790 ; =0x00000241 + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0223E698 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #6 + bl FUN_0200A914 + mov r2, #0x91 + lsl r2, r2, #2 + add r4, r0, #0 + ldrsh r0, [r5, r2] + cmp r0, #1 + bne _0223E66C + add r0, r5, #0 + sub r2, r2, #2 + add r0, #0x8c + ldrh r2, [r5, r2] + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AE38 + b _0223E67C +_0223E66C: + add r0, r5, #0 + sub r2, r2, #2 + add r0, #0x8c + ldrh r2, [r5, r2] + ldr r0, [r0] + mov r1, #0 + bl FUN_0200AEA8 +_0223E67C: + ldr r0, _0223E794 ; =0x00000242 + mov r1, #5 + ldrh r0, [r5, r0] + mov r2, #0xb + bl FUN_0206E7B8 + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #1 + bl FUN_0200AEE0 + b _0223E704 +_0223E698: + cmp r0, #1 + bne _0223E6B8 + add r1, r1, #1 + ldrh r1, [r5, r1] + add r0, r5, #0 + mov r2, #0 + bl MOD06_0223E9BC + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xb + bl FUN_0200A914 + add r4, r0, #0 + b _0223E704 +_0223E6B8: + add r0, r1, #3 + ldrsh r0, [r5, r0] + cmp r0, #1 + bne _0223E6DC + add r0, r1, #1 + ldrh r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B534 + b _0223E6F6 +_0223E6DC: + add r0, r1, #1 + ldrh r0, [r5, r0] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r2, r0, #0 + add r0, r5, #0 + add r0, #0x8c + ldr r0, [r0] + mov r1, #0 + bl FUN_0200B568 +_0223E6F6: + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xd + bl FUN_0200A914 + add r4, r0, #0 +_0223E704: + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + ldr r0, _0223E798 ; =0x00000644 + bl FUN_020054C8 + mov r0, #9 + pop {r3, r4, r5, pc} +_0223E74A: + add r0, r5, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x10 + ldrh r1, [r5, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0xe + ldrh r1, [r5, r1] + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r5, #0x18 + add r0, r5, #0 + bl FUN_02019220 + mov r0, #4 + pop {r3, r4, r5, pc} +_0223E78C: + mov r0, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E790: .word 0x00000241 +_0223E794: .word 0x00000242 +_0223E798: .word 0x00000644 + + thumb_func_start MOD06_0223E79C +MOD06_0223E79C: ; 0x0223E79C + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E7B2 + mov r0, #9 + pop {r3, r4, r5, pc} +_0223E7B2: + ldr r2, _0223E854 ; =0x00000241 + ldrb r0, [r4, r2] + cmp r0, #0 + bne _0223E7D0 + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrh r2, [r4, r2] + ldr r0, [r4, r0] + mov r3, #0xb + bl FUN_0206ED38 + b _0223E7F6 +_0223E7D0: + cmp r0, #1 + bne _0223E7E4 + add r0, r2, #0 + add r1, r2, #1 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldr r0, [r4, r0] + bl FUN_02025D6C + b _0223E7F6 +_0223E7E4: + add r0, r2, #0 + add r1, r2, #1 + add r2, r2, #3 + sub r0, #0x31 + ldrh r1, [r4, r1] + ldrsh r2, [r4, r2] + ldr r0, [r4, r0] + bl FUN_02029D44 +_0223E7F6: + mov r2, #0x83 + lsl r2, r2, #2 + add r1, r2, #0 + ldr r0, [r4, r2] + add r1, #0x3c + add r2, #0x38 + ldr r3, [r4, r1] + ldrsh r1, [r4, r2] + mul r1, r3 + bl FUN_02023A54 + mov r3, #0x87 + lsl r3, r3, #2 + add r2, r3, #0 + ldr r0, [r4, r3] + add r2, #0x2c + add r3, #0x28 + ldr r5, [r4, r2] + ldrsh r2, [r4, r3] + mov r1, #0x23 + mul r2, r5 + bl FUN_0202A11C + add r0, r4, #0 + mov r1, #1 + bl MOD06_0223DED0 + mov r1, #0x91 + lsl r1, r1, #2 + ldrsh r0, [r4, r1] + cmp r0, #1 + ble _0223E83E + mov r2, #2 + sub r0, r1, #5 + strb r2, [r4, r0] + b _0223E850 +_0223E83E: + sub r0, r1, #5 + ldrb r0, [r4, r0] + cmp r0, #0xff + beq _0223E850 + sub r0, r1, #5 + ldrb r0, [r4, r0] + add r2, r0, #1 + sub r0, r1, #5 + strb r2, [r4, r0] +_0223E850: + mov r0, #0xa + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E854: .word 0x00000241 + + thumb_func_start MOD06_0223E858 +MOD06_0223E858: ; 0x0223E858 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r5, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E86E + mov r0, #0xa + pop {r3, r4, r5, pc} +_0223E86E: + ldr r0, _0223E948 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223E944 + mov r0, #0x89 + lsl r0, r0, #2 + ldr r1, [r5, r0] + cmp r1, #1 + bne _0223E88A + sub r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_0205F6E8 +_0223E88A: + ldr r1, _0223E94C ; =0x00000241 + ldrb r0, [r5, r1] + cmp r0, #0 + bne _0223E902 + add r0, r1, #1 + ldrh r0, [r5, r0] + cmp r0, #4 + bne _0223E902 + add r0, r1, #3 + ldrsh r0, [r5, r0] + cmp r0, #0xa + blt _0223E902 + sub r1, #0x31 + ldr r0, [r5, r1] + mov r1, #0xc + mov r2, #1 + mov r3, #0xb + bl FUN_0206ED38 + cmp r0, #1 + bne _0223E902 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #0xa + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r5, #0 + add r0, #0x58 + mov r1, #0xf + bl FUN_02019620 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x58 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xb + pop {r3, r4, r5, pc} +_0223E902: + add r0, r5, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0x10 + ldrh r1, [r5, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r5, r1] + add r1, #0xe + ldrh r1, [r5, r1] + bl FUN_020200A0 + add r0, r5, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r5, #0x18 + add r0, r5, #0 + bl FUN_02019220 + mov r0, #4 + pop {r3, r4, r5, pc} +_0223E944: + mov r0, #0xa + pop {r3, r4, r5, pc} + .align 2, 0 +_0223E948: .word 0x021C48B8 +_0223E94C: .word 0x00000241 + + thumb_func_start MOD06_0223E950 +MOD06_0223E950: ; 0x0223E950 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223E966 + mov r0, #0xb + pop {r4, pc} +_0223E966: + ldr r0, _0223E9B8 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223E9B2 + add r0, r4, #0 + add r0, #0x58 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223EBF8 + mov r1, #0x7e + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0x10 + ldrh r1, [r4, r1] + bl FUN_020200A0 + mov r1, #0x7f + lsl r1, r1, #2 + ldr r0, [r4, r1] + add r1, #0xe + ldrh r1, [r4, r1] + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #0 + bl MOD06_0223ECC8 + add r4, #0x18 + add r0, r4, #0 + bl FUN_02019220 + mov r0, #4 + pop {r4, pc} +_0223E9B2: + mov r0, #0xb + pop {r4, pc} + nop +_0223E9B8: .word 0x021C48B8 + + thumb_func_start MOD06_0223E9BC +MOD06_0223E9BC: ; 0x0223E9BC + push {r3, r4, r5, lr} + add r4, r0, #0 + ldr r0, _0223EA04 ; =0x00000241 + add r3, r1, #0 + ldrb r0, [r4, r0] + add r5, r2, #0 + cmp r0, #0 + bne _0223E9DA + add r4, #0x8c + ldr r0, [r4] + add r1, r5, #0 + add r2, r3, #0 + bl FUN_0200AE38 + pop {r3, r4, r5, pc} +_0223E9DA: + cmp r0, #1 + bne _0223E9EC + add r4, #0x8c + ldr r0, [r4] + add r1, r5, #0 + add r2, r3, #0 + bl FUN_0200B350 + pop {r3, r4, r5, pc} +_0223E9EC: + lsl r0, r3, #0x18 + lsr r0, r0, #0x18 + bl FUN_02085FD0 + add r4, #0x8c + add r2, r0, #0 + ldr r0, [r4] + add r1, r5, #0 + bl FUN_0200B534 + pop {r3, r4, r5, pc} + nop +_0223EA04: .word 0x00000241 + + thumb_func_start MOD06_0223EA08 +MOD06_0223EA08: ; 0x0223EA08 + push {r3, lr} + ldr r2, _0223EA34 ; =0x00000241 + ldrb r0, [r0, r2] + cmp r0, #0 + bne _0223EA1E + add r0, r1, #0 + mov r1, #0 + mov r2, #0xb + bl FUN_0206E7B8 + pop {r3, pc} +_0223EA1E: + cmp r0, #1 + bne _0223EA2A + add r0, r1, #0 + bl FUN_0204CAE0 + pop {r3, pc} +_0223EA2A: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + bl FUN_0208603C + pop {r3, pc} + .align 2, 0 +_0223EA34: .word 0x00000241 + + thumb_func_start MOD06_0223EA38 +MOD06_0223EA38: ; 0x0223EA38 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, _0223EAFC ; =0x0000023D + add r5, r1, #0 + add r1, r0, #1 + ldrb r2, [r5, r0] + ldrb r1, [r5, r1] + cmp r2, r1 + beq _0223EA74 + ldr r4, _0223EB00 ; =0x0224F364 + add r3, sp, #0 + ldmia r4!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + add r1, r5, #0 + str r0, [r3] + add r1, #0x90 + ldr r1, [r1] + add r0, r2, #0 + bl FUN_0201EF70 + ldr r0, _0223EAFC ; =0x0000023D + add sp, #0xc + ldrb r1, [r5, r0] + add r1, r1, #1 + strb r1, [r5, r0] + mov r0, #0xc + pop {r4, r5, pc} +_0223EA74: + mov r1, #0 + strb r1, [r5, r0] + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + ldr r1, [r4, #0x20] + bl FUN_0201EB78 + add r0, r5, #0 + add r0, #0x90 + ldr r0, [r0] + bl FUN_0201EB70 + ldr r0, [r4, #0x20] + bl FUN_0201EB8C + add r0, r5, #0 + bl MOD06_0223EBD4 + add r1, r5, #0 + ldr r0, [r4, #8] + add r1, #0x18 + mov r2, #3 + bl FUN_020545B8 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r5, #0 + ldr r1, [r5, r1] + add r0, #0x18 + bl FUN_02054608 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #2 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x18 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xd + add sp, #0xc + pop {r4, r5, pc} + nop +_0223EAFC: .word 0x0000023D +_0223EB00: .word 0x0224F364 + + thumb_func_start MOD06_0223EB04 +MOD06_0223EB04: ; 0x0223EB04 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x8f + lsl r0, r0, #2 + ldrb r0, [r4, r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223EB1A + mov r0, #0xd + pop {r4, pc} +_0223EB1A: + add r0, r4, #0 + add r0, #0x18 + bl FUN_02019178 + add r0, r4, #0 + bl MOD06_0223D63C + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_0223EB2C +MOD06_0223EB2C: ; 0x0223EB2C + push {r4, r5, r6, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #1 + bl FUN_0200A914 + add r6, r0, #0 + add r0, r4, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r4, r1] + add r2, r6, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + bl FUN_02021A20 + add r1, r4, #0 + ldr r0, [r5, #8] + add r1, #0x18 + mov r2, #3 + bl FUN_020545B8 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r4, #0 + ldr r1, [r4, r1] + add r0, #0x18 + bl FUN_02054608 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r4, r2] + sub r2, #0x1c + add r0, r4, #0 + ldr r2, [r4, r2] + add r0, #0x18 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r4, r1] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0223EB90 +MOD06_0223EB90: ; 0x0223EB90 + push {r3, r4, r5, r6, r7, lr} + ldr r1, _0223EBCC ; =0x0224F370 + add r5, r0, #0 + add r0, #0x94 + mov r2, #4 + mov r3, #0xb + bl FUN_021D9320 + add r7, r5, #0 + ldr r4, _0223EBD0 ; =0x0224F3DC + mov r6, #0 + add r7, #0x94 +_0223EBA8: + add r0, r7, #0 + add r1, r4, #0 + bl FUN_021D9510 + mov r1, #0x7e + lsl r1, r1, #2 + str r0, [r5, r1] + add r6, r6, #1 + add r4, #0x28 + add r5, r5, #4 + cmp r6, #4 + blo _0223EBA8 + mov r0, #0x10 + mov r1, #1 + bl FUN_0201E6E4 + pop {r3, r4, r5, r6, r7, pc} + nop +_0223EBCC: .word 0x0224F370 +_0223EBD0: .word 0x0224F3DC + + thumb_func_start MOD06_0223EBD4 +MOD06_0223EBD4: ; 0x0223EBD4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + mov r6, #0x7e + mov r4, #0 + add r5, r7, #0 + lsl r6, r6, #2 +_0223EBE0: + ldr r0, [r5, r6] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blo _0223EBE0 + add r7, #0x94 + add r0, r7, #0 + bl FUN_021D94B4 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223EBF8 +MOD06_0223EBF8: ; 0x0223EBF8 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + bne _0223EC1E + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xb1 + mov r2, #8 + bl FUN_0200C6E4 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xb1 + mov r2, #0x84 + bl FUN_0200C6E4 + pop {r4, pc} +_0223EC1E: + mov r0, #0x7e + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa2 + mov r2, #0x6c + bl FUN_0200C6E4 + mov r0, #0x7f + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa2 + mov r2, #0x84 + bl FUN_0200C6E4 + pop {r4, pc} + + thumb_func_start MOD06_0223EC3C +MOD06_0223EC3C: ; 0x0223EC3C + push {r4, r5, r6, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, _0223ECC4 ; =0x00000241 + add r6, r1, #0 + ldrb r1, [r4, r0] + cmp r1, #0 + beq _0223EC5A + sub r0, #0x3d + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #8 + pop {r4, r5, r6, pc} +_0223EC5A: + sub r0, #0x7d + ldr r0, [r4, r0] + mov r1, #2 + bl FUN_020094F0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #1 + bl FUN_0206E640 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0x71 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + mov r2, #0x10 + bl FUN_020090FC + add r0, r5, #0 + bl FUN_02009BE8 + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020094F0 + add r5, r0, #0 + add r0, r6, #0 + mov r1, #2 + bl FUN_0206E640 + add r3, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #0xb + str r0, [sp, #4] + mov r0, #0x72 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r5, #0 + mov r2, #0x10 + bl FUN_02009168 + add r0, r5, #0 + bl FUN_02009DE0 + add sp, #8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0223ECC4: .word 0x00000241 + + thumb_func_start MOD06_0223ECC8 +MOD06_0223ECC8: ; 0x0223ECC8 + mov r2, #2 + lsl r2, r2, #8 + ldr r3, _0223ECD4 ; =0x0200C665 + ldr r0, [r0, r2] + bx r3 + nop +_0223ECD4: .word 0x0200C665 + + thumb_func_start MOD06_0223ECD8 +MOD06_0223ECD8: ; 0x0223ECD8 + push {r4, lr} + mov r0, #0 + add r4, r1, #0 + bl FUN_021D7CA4 + ldr r0, _0223ECEC ; =0x0000022F + mov r1, #0xf + strb r1, [r4, r0] + pop {r4, pc} + nop +_0223ECEC: .word 0x0000022F + + thumb_func_start MOD06_0223ECF0 +MOD06_0223ECF0: ; 0x0223ECF0 + push {r4, r5, r6, lr} + add r6, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _0223ED46 + add r0, r6, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r4, r0, #0 + bl MOD06_0223D7B8 + ldr r0, [r5, #0xc] + bl FUN_0206F158 + ldr r1, _0223ED48 ; =0x0224F47C + mov r2, #0xb + bl FUN_0206EFEC + add r3, r5, #0 + str r0, [r4, #4] + add r3, #0x94 + ldr r1, [r5, #0xc] + ldr r3, [r3] + mov r2, #2 + bl FUN_0206E314 + ldr r1, [r4, #4] + add r0, r5, #0 + bl FUN_0203781C + ldr r1, _0223ED4C ; =0x0208A259 + add r0, r6, #0 + add r2, r4, #0 + bl FUN_020463EC + ldr r0, _0223ED50 ; =0x0000022F + mov r1, #0x10 + strb r1, [r4, r0] +_0223ED46: + pop {r4, r5, r6, pc} + .align 2, 0 +_0223ED48: .word 0x0224F47C +_0223ED4C: .word 0x0208A259 +_0223ED50: .word 0x0000022F + + thumb_func_start MOD06_0223ED54 +MOD06_0223ED54: ; 0x0223ED54 + push {r3, r4, r5, lr} + add r4, r0, #0 + add r5, r1, #0 + bl FUN_0200E308 + cmp r0, #0 + bne _0223ED66 + mov r0, #0x12 + pop {r3, r4, r5, pc} +_0223ED66: + add r1, r5, #0 + ldr r0, [r4, #8] + add r1, #0x18 + mov r2, #3 + bl FUN_020545B8 + mov r1, #0x85 + lsl r1, r1, #2 + add r0, r5, #0 + ldr r1, [r5, r1] + add r0, #0x18 + bl FUN_02054608 + add r0, r5, #0 + add r0, #0x88 + ldr r0, [r0] + mov r1, #2 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + mov r1, #0x23 + add r0, #0x8c + lsl r1, r1, #4 + ldr r0, [r0] + ldr r1, [r5, r1] + add r2, r4, #0 + bl FUN_0200B7B8 + add r0, r4, #0 + bl FUN_02021A20 + mov r2, #0x23 + lsl r2, r2, #4 + ldr r1, [r5, r2] + sub r2, #0x1c + add r0, r5, #0 + ldr r2, [r5, r2] + add r0, #0x18 + mov r3, #1 + bl FUN_02054658 + mov r1, #0x8f + lsl r1, r1, #2 + strb r0, [r5, r1] + mov r0, #0xd + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0223EDC4 +MOD06_0223EDC4: ; 0x0223EDC4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223EE70 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223EDE6 + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_0201BD7C +_0223EDE6: + cmp r4, #0 + beq _0223EE08 + ldr r0, _0223EE70 ; =0x02252420 + add r1, r5, #0 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x10] + bl FUN_0200A8E0 + ldr r0, _0223EE70 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x58] + ldr r1, [r2, #0x14] + ldr r2, [r2, #0x10] + bl FUN_0200B7B8 + b _0223EE16 +_0223EE08: + ldr r0, _0223EE70 ; =0x02252420 + add r1, r5, #0 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x14] + bl FUN_0200A8E0 +_0223EE16: + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + add r0, #0x40 + bl FUN_02019048 + cmp r0, #0 + bne _0223EE34 + ldr r0, _0223EE70 ; =0x02252420 + mov r2, #3 + ldr r1, [r0] + ldr r0, [r1, #0x68] + add r1, #0x40 + ldr r0, [r0, #8] + bl FUN_020545B8 +_0223EE34: + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x68] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + ldr r0, _0223EE70 ; =0x02252420 + ldr r0, [r0] + add r0, #0x40 + bl FUN_02054608 + ldr r0, _0223EE70 ; =0x02252420 + ldr r4, [r0] + ldr r0, [r4, #0x68] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0 + add r0, r4, #0 + ldr r1, [r4, #0x14] + add r0, #0x40 + mov r3, #1 + bl FUN_02054658 + ldr r1, _0223EE70 ; =0x02252420 + ldr r1, [r1] + add r1, #0x94 + strb r0, [r1] + pop {r3, r4, r5, pc} + .align 2, 0 +_0223EE70: .word 0x02252420 + + thumb_func_start MOD06_0223EE74 +MOD06_0223EE74: ; 0x0223EE74 + push {r0, r1, r2, r3} + push {r3, r4, lr} + sub sp, #0x34 + ldr r0, _0223EF10 ; =0x02252420 + ldr r0, [r0] + add r0, #0x20 + bl FUN_02019048 + cmp r0, #0 + bne _0223EEB8 + ldr r0, _0223EF10 ; =0x02252420 + add r3, sp, #0x60 + ldr r1, [r0] + add r0, sp, #0x64 + ldrb r0, [r0] + ldrb r3, [r3] + mov r2, #3 + str r0, [sp] + add r0, sp, #0x68 + ldrb r0, [r0] + str r0, [sp, #4] + add r0, sp, #0x6c + ldrb r0, [r0] + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + add r0, sp, #0x40 + ldrh r0, [r0, #0x30] + str r0, [sp, #0x10] + ldr r0, [r1, #0x68] + add r1, #0x20 + ldr r0, [r0, #8] + bl FUN_02019064 +_0223EEB8: + ldr r0, _0223EF10 ; =0x02252420 + ldr r2, _0223EF14 ; =0x000003D9 + ldr r0, [r0] + mov r1, #1 + add r0, #0x20 + mov r3, #0xb + bl FUN_0200CCA4 + add r4, sp, #0x40 + 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, _0223EF10 ; =0x02252420 + mov r3, #4 + ldr r1, [r0] + ldr r0, [r1, #0x64] + add r1, #0x20 + str r1, [sp, #0x20] + str r0, [sp, #0x14] + mov r1, #0 + add r0, r2, #0 + add r2, r1, #0 + bl FUN_020010A8 + ldr r1, _0223EF10 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x5c] + ldr r0, [r1] + add r0, #0x20 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4} + pop {r3} + add sp, #0x10 + bx r3 + nop +_0223EF10: .word 0x02252420 +_0223EF14: .word 0x000003D9 + + thumb_func_start MOD06_0223EF18 +MOD06_0223EF18: ; 0x0223EF18 + push {r3, r4, r5, r6, r7, lr} + add r4, r0, #0 + ldr r0, _0223EFF4 ; =0x02252420 + ldr r0, [r0] + cmp r0, #0 + beq _0223EF28 + bl ErrorHandling +_0223EF28: + mov r0, #4 + mov r1, #0x9c + bl FUN_02016998 + ldr r1, _0223EFF4 ; =0x02252420 + mov r2, #0x9c + str r0, [r1] + mov r1, #0 + bl MI_CpuFill8 + ldr r0, _0223EFF4 ; =0x02252420 + mov r2, #0 + ldr r1, [r0] + mov r3, #4 + add r1, #0x88 + str r2, [r1] + ldr r1, [r0] + str r4, [r1, #0x68] + ldr r0, [r0] + mov r1, #0x1a + add r0, #0x97 + strb r2, [r0] + ldr r2, _0223EFF8 ; =0x0000013A + mov r0, #1 + bl FUN_0200A86C + ldr r1, _0223EFF4 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x74] + ldr r0, [r1] + ldr r0, [r0, #0x68] + bl FUN_020377AC + bl FUN_020238F4 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x78] + mov r0, #4 + bl FUN_02023928 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x7c] + ldr r0, [r1] + add r0, #0x20 + bl FUN_0201901C + ldr r0, _0223EFF4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_0201901C + ldr r0, _0223EFF4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x40 + bl FUN_0201901C + mov r0, #4 + bl FUN_0200AA80 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x50] + mov r0, #4 + bl FUN_0200AA80 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x54] + mov r0, #4 + bl FUN_0200AA80 + ldr r1, _0223EFF4 ; =0x02252420 + ldr r2, [r1] + str r0, [r2, #0x58] + ldr r0, [r1] + mov r2, #0 + add r0, #0x98 + strb r2, [r0] + add r5, r2, #0 +_0223EFCA: + ldr r0, [r1] + add r0, r0, r2 + add r0, #0x80 + add r2, r2, #1 + strb r5, [r0] + cmp r2, #8 + blt _0223EFCA + ldr r6, _0223EFF4 ; =0x02252420 + add r4, r5, #0 + mov r7, #0x8c +_0223EFDE: + add r0, r7, #0 + mov r1, #4 + bl FUN_020219F4 + ldr r1, [r6] + add r5, r5, #1 + str r0, [r1, r4] + add r4, r4, #4 + cmp r5, #8 + blt _0223EFDE + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0223EFF4: .word 0x02252420 +_0223EFF8: .word 0x0000013A + + thumb_func_start MOD06_0223EFFC +MOD06_0223EFFC: ; 0x0223EFFC + push {r4, r5, r6, lr} + mov r4, #0 + ldr r6, _0223F08C ; =0x02252420 + add r5, r4, #0 +_0223F004: + ldr r0, [r6] + ldr r0, [r0, r5] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #8 + blt _0223F004 + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x7c] + bl FUN_02016A18 + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x50] + cmp r0, #0 + beq _0223F034 + bl FUN_0200AB18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x50] +_0223F034: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x54] + cmp r0, #0 + beq _0223F04A + bl FUN_0200AB18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x54] +_0223F04A: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x58] + cmp r0, #0 + beq _0223F060 + bl FUN_0200AB18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x58] +_0223F060: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x74] + bl FUN_0200A8B8 + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + ldr r1, [r0, #0x4c] + cmp r1, #0 + beq _0223F07A + add r0, #0x40 + bl FUN_02019178 +_0223F07A: + ldr r0, _0223F08C ; =0x02252420 + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, _0223F08C ; =0x02252420 + mov r1, #0 + str r1, [r0] + pop {r4, r5, r6, pc} + nop +_0223F08C: .word 0x02252420 + + thumb_func_start MOD06_0223F090 +MOD06_0223F090: ; 0x0223F090 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02240778 + add r2, r0, #0 + ldr r0, [r4, #0x68] + add r4, #0x91 + ldrb r1, [r4] + bl FUN_0204FEF0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223F0A8 +MOD06_0223F0A8: ; 0x0223F0A8 + push {r3, lr} + ldr r0, _0223F0C0 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x98 + strb r1, [r0] + cmp r2, #0 + bne _0223F0BE + ldr r0, _0223F0C4 ; =0x000005DC + bl FUN_020054C8 +_0223F0BE: + pop {r3, pc} + .align 2, 0 +_0223F0C0: .word 0x02252420 +_0223F0C4: .word 0x000005DC + + thumb_func_start MOD06_0223F0C8 +MOD06_0223F0C8: ; 0x0223F0C8 + push {r3, r4, r5, r6, r7, lr} + mov r1, #3 + add r5, r0, #0 + mov r4, #0 + bl FUN_02001470 + cmp r0, #0 + bls _0223F0F6 + add r6, r4, #0 + mov r7, #3 +_0223F0DC: + lsl r2, r4, #0x18 + add r0, r5, #0 + add r1, r6, #0 + lsr r2, r2, #0x18 + bl MOD06_0223F0F8 + add r0, r5, #0 + add r1, r7, #0 + add r4, r4, #1 + bl FUN_02001470 + cmp r4, r0 + blo _0223F0DC +_0223F0F6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0223F0F8 +MOD06_0223F0F8: ; 0x0223F0F8 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r2, #0 + bl FUN_0202E810 + add r4, r0, #0 + mov r2, #0 + add r0, sp, #0xc + strh r2, [r0] + ldr r0, _0223F26C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _0223F11A + add r1, sp, #0xc + bl FUN_02001448 +_0223F11A: + add r0, sp, #0xc + ldrh r1, [r0] + add r1, r1, r5 + strh r1, [r0] + ldr r0, _0223F26C ; =0x02252420 + lsl r5, r5, #4 + ldr r0, [r0] + add r0, #0x20 + bl FUN_0201AB0C + lsl r0, r0, #3 + sub r0, #8 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + lsl r3, r5, #0x10 + ldr r0, [r0] + mov r1, #0xf + add r0, #0x20 + mov r2, #8 + lsr r3, r3, #0x10 + bl FUN_020196F4 + add r0, sp, #0xc + ldrh r2, [r0] + cmp r2, r4 + bge _0223F21C + ldr r1, _0223F26C ; =0x02252420 + add r0, r2, #0 + ldr r1, [r1] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + mov r3, #2 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + add r2, sp, #0xc + ldr r0, [r0] + ldrh r2, [r2] + ldr r0, [r0, #0x50] + mov r1, #0 + add r2, r2, #1 + bl FUN_0200AD38 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #1 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0x31 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r0, _0223F26C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r0, #0xff + str r5, [sp] + str r0, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2] + add r0, #0x20 + mov r3, #8 + bl FUN_0201BD84 + ldr r0, _0223F26C ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x7c] + bl FUN_020239BC + add r2, r0, #0 + mov r1, #2 + lsl r2, r2, #0x10 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + lsr r2, r2, #0x10 + ldr r0, [r0] + mov r3, #5 + ldr r0, [r0, #0x50] + bl FUN_0200AD38 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0x33 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0xc] + bl FUN_0200A8E0 + ldr r0, _0223F26C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + bl FUN_0200B7B8 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r0, #0xff + str r5, [sp] + str r0, [sp, #4] + str r1, [sp, #8] + add r0, r2, #0 + ldr r2, [r2, #8] + add r0, #0x20 + mov r3, #0x58 + bl FUN_0201BD84 + add sp, #0x10 + pop {r3, r4, r5, pc} +_0223F21C: + mov r3, #2 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r2, r2, #1 + ldr r0, [r0, #0x50] + bl FUN_0200AD38 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0x32 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r0, _0223F26C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r0, _0223F26C ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r0, #0xff + str r5, [sp] + str r0, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2] + add r0, #0x20 + mov r3, #8 + bl FUN_0201BD84 + add sp, #0x10 + pop {r3, r4, r5, pc} + nop +_0223F26C: .word 0x02252420 + + thumb_func_start MOD06_0223F270 +MOD06_0223F270: ; 0x0223F270 + push {r4, lr} + sub sp, #0x58 + add r4, r0, #0 + ldr r0, _0223F330 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019048 + cmp r0, #0 + bne _0223F2AA + ldr r0, _0223F330 ; =0x02252420 + mov r2, #3 + ldr r1, [r0] + mov r0, #2 + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xc9 + str r0, [sp, #0x10] + ldr r0, [r1, #0x68] + add r1, #0x30 + ldr r0, [r0, #8] + mov r3, #0x17 + bl FUN_02019064 +_0223F2AA: + ldr r0, _0223F330 ; =0x02252420 + ldr r2, _0223F334 ; =0x000003D9 + ldr r0, [r0] + mov r1, #1 + add r0, #0x30 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, _0223F330 ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0223F330 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_020191D0 + add r0, r4, #0 + mov r1, #1 + add r0, #0x97 + strb r1, [r0] + ldr r0, _0223F338 ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + ldr r0, _0223F330 ; =0x02252420 + ldr r0, [r0] + bl MOD06_0223F344 + ldr r4, _0223F33C ; =0x0224F5E0 + add r3, sp, #0x14 + mov r2, #8 +_0223F2F0: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F2F0 + ldr r0, [r4] + str r0, [r3] + ldr r0, _0223F330 ; =0x02252420 + ldr r1, [r0] + add r0, r1, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223F318 + add r1, #0x92 + ldrb r0, [r1] + mov r1, #0 + add r0, #0x59 + bl MOD06_0223EDC4 + b _0223F324 +_0223F318: + lsl r1, r0, #2 + add r0, sp, #0x14 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 +_0223F324: + ldr r0, _0223F340 ; =MOD06_0223F3B8 + bl MOD06_0223F8BC + add sp, #0x58 + pop {r4, pc} + nop +_0223F330: .word 0x02252420 +_0223F334: .word 0x000003D9 +_0223F338: .word MOD06_0223FAA4 +_0223F33C: .word 0x0224F5E0 +_0223F340: .word MOD06_0223F3B8 + + thumb_func_start MOD06_0223F344 +MOD06_0223F344: ; 0x0223F344 + push {lr} + sub sp, #0xc + ldr r0, _0223F3B4 ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + ldr r0, [r2, #0x54] + ldr r2, [r2, #0x78] + bl FUN_0200ABC0 + ldr r0, _0223F3B4 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x78] + bl FUN_020239BC + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r1, #1 + lsl r2, r2, #0x10 + ldr r0, _0223F3B4 ; =0x02252420 + str r1, [sp, #4] + ldr r0, [r0] + lsr r2, r2, #0x10 + ldr r0, [r0, #0x54] + mov r3, #5 + bl FUN_0200AD38 + ldr r0, _0223F3B4 ; =0x02252420 + mov r1, #0x30 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x18] + bl FUN_0200A8E0 + ldr r0, _0223F3B4 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x54] + ldr r1, [r2, #0x1c] + ldr r2, [r2, #0x18] + bl FUN_0200B7B8 + ldr r0, _0223F3B4 ; =0x02252420 + mov r3, #2 + ldr r2, [r0] + mov r1, #0 + str r3, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2, #0x1c] + add r0, #0x30 + bl FUN_0201BD84 + add sp, #0xc + pop {pc} + nop +_0223F3B4: .word 0x02252420 + + thumb_func_start MOD06_0223F3B8 +MOD06_0223F3B8: ; 0x0223F3B8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + ldr r0, _0223F454 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223F450 + mov r0, #0x10 + mov r1, #4 + bl FUN_02012838 + ldr r4, _0223F454 ; =0x02252420 + mov r5, #0 + ldr r1, [r4] + mov r6, #2 + str r0, [r1, #0x64] + mov r7, #1 +_0223F3E0: + str r6, [sp] + str r7, [sp, #4] + ldr r0, [r4] + mov r1, #0 + ldr r0, [r0, #0x50] + add r2, r5, #1 + add r3, r6, #0 + bl FUN_0200AD38 + ldr r2, [r4] + mov r1, #0x32 + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r2, [r4] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r1, [r4] + mov r2, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1] + bl FUN_020128A0 + add r5, r5, #1 + cmp r5, #0x10 + blt _0223F3E0 + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #0x14 + str r0, [sp, #0x18] + mov r0, #0xa + mov r4, sp + str r0, [sp, #0x1c] + sub r4, #0x10 + ldr r3, _0223F458 ; =0x0224F4B0 + str r1, [sp, #0x20] + add r2, r4, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1, r2, r3} + bl MOD06_0223EE74 + ldr r0, _0223F45C ; =MOD06_0223F460 + bl MOD06_0223F8BC +_0223F450: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223F454: .word 0x02252420 +_0223F458: .word 0x0224F4B0 +_0223F45C: .word MOD06_0223F460 + + thumb_func_start MOD06_0223F460 +MOD06_0223F460: ; 0x0223F460 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl MOD06_0223F344 + bl FUN_020311F0 + cmp r0, #0 + beq _0223F48C + ldr r0, _0223F518 ; =0x02252420 + mov r1, #3 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + bl MOD06_0223F8B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + pop {r3, r4, r5, pc} +_0223F48C: + bl FUN_0202E878 + cmp r0, #0 + beq _0223F49A + mov r0, #0 + mvn r0, r0 + b _0223F4A4 +_0223F49A: + ldr r0, _0223F518 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + bl FUN_02001204 +_0223F4A4: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0223F4BA + add r1, r1, #1 + cmp r0, r1 + bne _0223F4D8 + add r0, r4, #0 + bl MOD06_0223F524 + pop {r3, r4, r5, pc} +_0223F4BA: + ldr r0, _0223F51C ; =0x000005DC + bl FUN_020054C8 + ldr r0, _0223F518 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + bl MOD06_0223F8B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + pop {r3, r4, r5, pc} +_0223F4D8: + ldr r0, _0223F51C ; =0x000005DC + bl FUN_020054C8 + add r1, r4, #0 + ldr r0, [r4, #0x5c] + add r1, #0x8e + bl FUN_0200143C + add r0, r4, #0 + add r0, #0x8e + ldrh r5, [r0] + bl FUN_0202E810 + cmp r0, r5 + ble _0223F514 + add r0, r5, #0 + bl FUN_0202E844 + add r1, r4, #0 + add r1, #0x8e + add r4, #0x8e + strh r0, [r1] + ldrh r0, [r4] + bl FUN_0204FF30 + bl FUN_02031668 + ldr r0, _0223F520 ; =MOD06_0223F584 + bl MOD06_0223F8BC +_0223F514: + pop {r3, r4, r5, pc} + nop +_0223F518: .word 0x02252420 +_0223F51C: .word 0x000005DC +_0223F520: .word MOD06_0223F584 + + thumb_func_start MOD06_0223F524 +MOD06_0223F524: ; 0x0223F524 + push {r3, lr} + sub sp, #8 + bl FUN_0202E878 + cmp r0, #0 + bne _0223F53C + ldr r0, _0223F580 ; =0x02252420 + ldr r0, [r0] + add r0, #0x98 + ldrb r0, [r0] + cmp r0, #0 + beq _0223F57A +_0223F53C: + ldr r0, _0223F580 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x98 + strb r1, [r0] + bl FUN_0202E88C + mov r0, #0xc + str r0, [sp] + mov r0, #0x50 + str r0, [sp, #4] + ldr r0, _0223F580 ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + mov r2, #8 + add r0, #0x20 + mov r3, #0 + bl FUN_020196F4 + ldr r0, _0223F580 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + ldr r0, [r0, #0x5c] + bl MOD06_0223F0C8 + ldr r0, _0223F580 ; =0x02252420 + ldr r0, [r0] + add r0, #0x20 + bl FUN_020191D0 +_0223F57A: + add sp, #8 + pop {r3, pc} + nop +_0223F580: .word 0x02252420 + + thumb_func_start MOD06_0223F584 +MOD06_0223F584: ; 0x0223F584 + push {r4, lr} + add r4, r1, #0 + ldr r1, _0223F5C8 ; =0x02252420 + add r0, r4, #0 + add r0, #0x8e + ldr r1, [r1] + ldrh r0, [r0] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + ldr r2, _0223F5C8 ; =0x02252420 + ldr r0, [r4, #0x58] + ldr r2, [r2] + mov r1, #1 + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + bl MOD06_02240750 + cmp r0, #2 + bgt _0223F5B8 + mov r0, #1 + add r1, r0, #0 + bl MOD06_0223EDC4 + b _0223F5C0 +_0223F5B8: + mov r0, #2 + mov r1, #1 + bl MOD06_0223EDC4 +_0223F5C0: + ldr r0, _0223F5CC ; =MOD06_0223F6D8 + bl MOD06_0223F8BC + pop {r4, pc} + .align 2, 0 +_0223F5C8: .word 0x02252420 +_0223F5CC: .word MOD06_0223F6D8 + + thumb_func_start MOD06_0223F5D0 +MOD06_0223F5D0: ; 0x0223F5D0 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_020311F0 + cmp r0, #0 + beq _0223F5F6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + add r0, r4, #0 + bl MOD06_022406D4 + b _0223F6CA +_0223F5F6: + mov r0, #0 + mov r1, #3 + bl FUN_02031640 + add r6, r0, #0 + bl FUN_02031190 + cmp r6, r0 + bne _0223F61C + bl FUN_02031668 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240668 + b _0223F6CA +_0223F61C: + mov r0, #0 + mov r1, #5 + bl FUN_02031640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223F640 + bl FUN_02031668 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240668 + b _0223F6CA +_0223F640: + mov r0, #0 + mov r1, #4 + bl FUN_02031640 + add r6, r0, #0 + bl FUN_02031190 + cmp r6, r0 + bne _0223F662 + mov r0, #0x53 + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223F6D0 ; =MOD06_0223FEF0 + bl MOD06_0223F8BC + b _0223F6CA +_0223F662: + mov r0, #0 + mov r1, #2 + bl FUN_02031640 + add r6, r0, #0 + bl FUN_02031190 + cmp r6, r0 + bne _0223F6AE + bl FUN_02031668 + bl FUN_0202DF28 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + ldr r0, _0223F6D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + bne _0223F69E + ldr r0, _0223F6D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_0201BD7C +_0223F69E: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240418 + b _0223F6CA +_0223F6AE: + bl MOD06_02240860 + cmp r0, #0 + beq _0223F6C6 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240668 + b _0223F6CA +_0223F6C6: + mov r0, #0 + pop {r4, r5, r6, pc} +_0223F6CA: + mov r0, #1 + pop {r4, r5, r6, pc} + nop +_0223F6D0: .word MOD06_0223FEF0 +_0223F6D4: .word 0x02252420 + + thumb_func_start MOD06_0223F6D8 +MOD06_0223F6D8: ; 0x0223F6D8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223F714 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223F712 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0223F5D0 + cmp r0, #0 + bne _0223F712 + ldr r0, _0223F718 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #2 + tst r0, r1 + beq _0223F712 + mov r0, #3 + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223F71C ; =MOD06_0223F720 + bl MOD06_0223F8BC +_0223F712: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223F714: .word 0x02252420 +_0223F718: .word 0x021C48B8 +_0223F71C: .word MOD06_0223F720 + + thumb_func_start MOD06_0223F720 +MOD06_0223F720: ; 0x0223F720 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + bl MOD06_0223F5D0 + cmp r0, #0 + bne _0223F75C + ldr r0, _0223F760 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223F75C + mov r0, #4 + str r0, [sp] + ldr r0, _0223F760 ; =0x02252420 + ldr r1, _0223F764 ; =0x0224F488 + ldr r0, [r0] + ldr r2, _0223F768 ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _0223F76C ; =MOD06_0223F770 + bl MOD06_0223F8BC +_0223F75C: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0223F760: .word 0x02252420 +_0223F764: .word 0x0224F488 +_0223F768: .word 0x000003D9 +_0223F76C: .word MOD06_0223F770 + + thumb_func_start MOD06_0223F770 +MOD06_0223F770: ; 0x0223F770 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl MOD06_0223F5D0 + cmp r0, #0 + ldr r0, [r4, #0x60] + beq _0223F78C + mov r1, #4 + bl FUN_020021EC + mov r0, #0 + str r0, [r4, #0x60] + pop {r3, r4, r5, pc} +_0223F78C: + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _0223F7AE + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + mov r0, #6 + mov r1, #0 + bl MOD06_0223EDC4 + add r0, r4, #0 + bl MOD06_022406D4 + pop {r3, r4, r5, pc} +_0223F7AE: + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0223F7BC + ldr r0, _0223F7C0 ; =MOD06_0223F584 + bl MOD06_0223F8BC +_0223F7BC: + pop {r3, r4, r5, pc} + nop +_0223F7C0: .word MOD06_0223F584 + + thumb_func_start MOD06_0223F7C4 +MOD06_0223F7C4: ; 0x0223F7C4 + push {r4, lr} + sub sp, #0x10 + add r4, r2, #0 + mov r2, #0 + add r0, sp, #0xc + strh r2, [r0] + ldr r0, _0223F898 ; =0x02252420 + ldr r0, [r0] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _0223F7E0 + add r1, sp, #0xc + bl FUN_02001448 +_0223F7E0: + add r0, sp, #0xc + ldrh r1, [r0] + add r1, r1, r4 + strh r1, [r0] + ldrh r0, [r0] + bl FUN_0202DFA4 + cmp r0, #0 + beq _0223F892 + add r0, sp, #0xc + ldrh r0, [r0] + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + ldr r0, [r0, #0x50] + bl FUN_0200ABC0 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0x34 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #4] + bl FUN_0200A8E0 + ldr r0, _0223F898 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldmia r2!, {r1, r2} + bl FUN_0200B7B8 + ldr r0, _0223F898 ; =0x02252420 + lsl r4, r4, #4 + ldr r2, [r0] + mov r1, #0 + str r4, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2] + add r0, #0x20 + mov r3, #8 + bl FUN_0201BD84 + add r0, sp, #0xc + ldrh r0, [r0] + bl FUN_0202DFA4 + bl FUN_020239C0 + mov r1, #2 + add r2, r0, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223F898 ; =0x02252420 + mov r3, #5 + ldr r0, [r0] + ldr r0, [r0, #0x50] + bl FUN_0200AD38 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0x33 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0xc] + bl FUN_0200A8E0 + ldr r0, _0223F898 ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x50] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + bl FUN_0200B7B8 + ldr r0, _0223F898 ; =0x02252420 + mov r1, #0 + ldr r2, [r0] + mov r3, #0x48 + str r4, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2, #8] + add r0, #0x20 + bl FUN_0201BD84 +_0223F892: + add sp, #0x10 + pop {r4, pc} + nop +_0223F898: .word 0x02252420 + + thumb_func_start MOD06_0223F89C +MOD06_0223F89C: ; 0x0223F89C + push {r4, lr} + add r4, r0, #0 + bl MOD06_02240778 + add r2, r0, #0 + ldr r0, [r4, #0x68] + add r4, #0x91 + ldrb r1, [r4] + bl FUN_0204FEB0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0223F8B4 +MOD06_0223F8B4: ; 0x0223F8B4 + ldr r3, _0223F8B8 ; =0x02050025 + bx r3 + .align 2, 0 +_0223F8B8: .word 0x02050025 + + thumb_func_start MOD06_0223F8BC +MOD06_0223F8BC: ; 0x0223F8BC + ldr r1, _0223F8C4 ; =0x02252420 + ldr r1, [r1] + str r0, [r1, #0x6c] + bx lr + .align 2, 0 +_0223F8C4: .word 0x02252420 + + thumb_func_start MOD06_0223F8C8 +MOD06_0223F8C8: ; 0x0223F8C8 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, _0223F94C ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + bl MOD06_0223F95C + ldr r0, _0223F950 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019048 + cmp r0, #0 + bne _0223F910 + ldr r0, _0223F950 ; =0x02252420 + mov r2, #3 + ldr r1, [r0] + mov r0, #2 + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xcd + str r0, [sp, #0x10] + ldr r0, [r1, #0x68] + add r1, #0x30 + ldr r0, [r0, #8] + mov r3, #0x16 + bl FUN_02019064 +_0223F910: + ldr r0, _0223F950 ; =0x02252420 + ldr r2, _0223F954 ; =0x000003D9 + ldr r0, [r0] + mov r1, #1 + add r0, #0x30 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, _0223F950 ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0223F950 ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_020191D0 + mov r0, #1 + add r4, #0x97 + strb r0, [r4] + mov r0, #0 + bl FUN_0202DEE0 + ldr r0, _0223F958 ; =MOD06_0223FAB8 + bl MOD06_0223F8BC + add sp, #0x14 + pop {r3, r4, pc} + .align 2, 0 +_0223F94C: .word MOD06_0223FAA4 +_0223F950: .word 0x02252420 +_0223F954: .word 0x000003D9 +_0223F958: .word MOD06_0223FAB8 + + thumb_func_start MOD06_0223F95C +MOD06_0223F95C: ; 0x0223F95C + push {r3, r4, lr} + sub sp, #0x44 + ldr r4, _0223F9D0 ; =0x0224F514 + add r3, sp, #0 + mov r2, #8 +_0223F966: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223F966 + ldr r0, [r4] + str r0, [r3] + ldr r0, _0223F9D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #0x11 + blo _0223F982 + bl ErrorHandling +_0223F982: + ldr r0, _0223F9D4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223F9BE + bl FUN_0202DF28 + cmp r0, #1 + ble _0223F9AA + ldr r0, _0223F9D4 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x92 + ldrb r0, [r0] + add r0, #0x5e + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, pc} +_0223F9AA: + ldr r0, _0223F9D4 ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x92 + ldrb r0, [r0] + add r0, #0x54 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, pc} +_0223F9BE: + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, pc} + nop +_0223F9D0: .word 0x0224F514 +_0223F9D4: .word 0x02252420 + + thumb_func_start MOD06_0223F9D8 +MOD06_0223F9D8: ; 0x0223F9D8 + push {r3, r4, lr} + sub sp, #0xc + bl FUN_0202DF28 + add r4, r0, #0 + bl MOD06_02240750 + cmp r4, r0 + blt _0223F9F4 + bl FUN_0202DF28 + add r2, r0, #0 + mov r4, #0x36 + b _0223FA02 +_0223F9F4: + bl MOD06_02240750 + add r4, r0, #0 + bl FUN_0202DF28 + sub r2, r4, r0 + mov r4, #0x35 +_0223FA02: + mov r0, #5 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + ldr r0, _0223FA5C ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + mov r3, #2 + ldr r0, [r0, #0x54] + bl FUN_0200AD38 + ldr r0, _0223FA5C ; =0x02252420 + mov r1, #0xf + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019620 + ldr r0, _0223FA5C ; =0x02252420 + add r1, r4, #0 + ldr r2, [r0] + ldr r0, [r2, #0x74] + ldr r2, [r2, #0x1c] + bl FUN_0200A8E0 + ldr r0, _0223FA5C ; =0x02252420 + ldr r2, [r0] + ldr r0, [r2, #0x54] + ldr r1, [r2, #0x18] + ldr r2, [r2, #0x1c] + bl FUN_0200B7B8 + ldr r0, _0223FA5C ; =0x02252420 + mov r3, #2 + ldr r2, [r0] + mov r1, #0 + str r3, [sp] + str r1, [sp, #4] + add r0, r2, #0 + str r1, [sp, #8] + ldr r2, [r2, #0x18] + add r0, #0x30 + bl FUN_0201BD84 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0223FA5C: .word 0x02252420 + + thumb_func_start MOD06_0223FA60 +MOD06_0223FA60: ; 0x0223FA60 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + ldr r6, _0223FAA0 ; =0x0224F4D0 + add r2, r0, #0 + add r4, r1, #0 + add r5, sp, #0 + mov r3, #8 +_0223FA6E: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0223FA6E + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + bl FUN_0202DFA4 + add r2, r0, #0 + beq _0223FA8C + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_0200ABC0 +_0223FA8C: + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #1 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0223FAA0: .word 0x0224F4D0 + + thumb_func_start MOD06_0223FAA4 +MOD06_0223FAA4: ; 0x0223FAA4 + push {r3, lr} + ldr r2, _0223FAB4 ; =0x02252420 + ldr r2, [r2] + ldr r2, [r2, #0x6c] + cmp r2, #0 + beq _0223FAB2 + blx r2 +_0223FAB2: + pop {r3, pc} + .align 2, 0 +_0223FAB4: .word 0x02252420 + + thumb_func_start MOD06_0223FAB8 +MOD06_0223FAB8: ; 0x0223FAB8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r0, r1, #0 + bl MOD06_0223F9D8 + ldr r0, _0223FB50 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FB4C + mov r0, #5 + mov r1, #4 + bl FUN_02012838 + ldr r4, _0223FB50 ; =0x02252420 + mov r5, #0 + ldr r1, [r4] + mov r6, #0x37 + str r0, [r1, #0x64] + add r7, r5, #0 +_0223FAE6: + ldr r1, [r4] + add r2, r6, #0 + ldr r0, [r1, #0x64] + ldr r1, [r1, #0x74] + add r3, r7, #0 + bl FUN_02012880 + add r5, r5, #1 + cmp r5, #5 + blt _0223FAE6 + ldr r1, _0223FB50 ; =0x02252420 + mov r2, #1 + ldr r0, [r1] + mov r3, #0 + add r0, #0x98 + strb r2, [r0] + add r2, r3, #0 +_0223FB08: + ldr r0, [r1] + add r0, r0, r3 + add r0, #0x80 + add r3, r3, #1 + strb r2, [r0] + cmp r3, #8 + blt _0223FB08 + mov r1, #1 + str r1, [sp, #0x10] + mov r0, #2 + str r0, [sp, #0x14] + mov r0, #0x11 + str r0, [sp, #0x18] + mov r0, #0xc + mov r4, sp + str r0, [sp, #0x1c] + sub r4, #0x10 + ldr r3, _0223FB54 ; =0x0224F490 + str r1, [sp, #0x20] + add r2, r4, #0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r4!, {r0, r1, r2, r3} + bl MOD06_0223EE74 + ldr r0, _0223FB58 ; =MOD06_0223FB5C + bl MOD06_0223F8BC +_0223FB4C: + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0223FB50: .word 0x02252420 +_0223FB54: .word 0x0224F490 +_0223FB58: .word MOD06_0223FB5C + + thumb_func_start MOD06_0223FB5C +MOD06_0223FB5C: ; 0x0223FB5C + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + str r0, [sp] + add r0, r1, #0 + str r1, [sp, #4] + bl MOD06_0223F9D8 + mov r7, #1 + ldr r4, _0223FCF0 ; =0x02252420 + mov r5, #0 + add r6, r7, #0 +_0223FB72: + add r0, r5, #0 + bl FUN_0202DEA4 + cmp r0, #0 + beq _0223FB90 + cmp r5, #0 + beq _0223FB90 + ldr r0, [r4] + add r0, r0, r5 + add r0, #0x80 + strb r6, [r0] + ldr r0, [r4] + add r0, #0x98 + strb r6, [r0] + b _0223FBDA +_0223FB90: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + beq _0223FBB4 + ldr r1, [r4] + add r0, r1, r5 + add r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0223FBB4 + add r0, r1, r5 + add r0, #0x80 + strb r7, [r0] + ldr r0, [r4] + add r0, #0x98 + strb r7, [r0] + b _0223FBDA +_0223FBB4: + add r0, r5, #0 + bl FUN_0202DFA4 + cmp r0, #0 + bne _0223FBDA + ldr r1, [r4] + add r0, r1, r5 + add r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FBDA + add r1, r1, r5 + add r1, #0x80 + mov r0, #0 + strb r0, [r1] + ldr r1, [r4] + mov r0, #1 + add r1, #0x98 + strb r0, [r1] +_0223FBDA: + add r5, r5, #1 + cmp r5, #8 + blt _0223FB72 + ldr r1, _0223FCF0 ; =0x02252420 + ldr r2, [r1] + add r0, r2, #0 + add r0, #0x98 + ldrb r0, [r0] + cmp r0, #0 + beq _0223FC32 + mov r0, #0 + add r2, #0x98 + strb r0, [r2] + ldr r0, [r1] + ldr r0, [r0, #0x5c] + bl FUN_02001328 + ldr r0, _0223FCF0 ; =0x02252420 + mov r1, #3 + ldr r0, [r0] + mov r5, #0 + ldr r0, [r0, #0x5c] + bl FUN_02001470 + cmp r0, #0 + bls _0223FC32 + ldr r4, _0223FCF0 ; =0x02252420 + add r6, r5, #0 + mov r7, #3 +_0223FC14: + ldr r0, [r4] + lsl r2, r5, #0x18 + ldr r0, [r0, #0x5c] + add r1, r6, #0 + lsr r2, r2, #0x18 + bl MOD06_0223F7C4 + ldr r0, [r4] + add r1, r7, #0 + ldr r0, [r0, #0x5c] + add r5, r5, #1 + bl FUN_02001470 + cmp r5, r0 + blo _0223FC14 +_0223FC32: + ldr r0, [sp, #4] + ldr r0, [r0, #0x5c] + bl FUN_02001204 + add r4, r0, #0 + bl FUN_0202DF08 + cmp r0, #0xff + beq _0223FC6A + bl FUN_0202DF08 + ldr r1, [sp, #4] + add r1, #0x95 + strb r0, [r1] + ldr r0, _0223FCF4 ; =0x0000060D + bl FUN_020054C8 + ldr r0, [sp, #4] + ldr r1, [sp, #4] + add r0, #0x95 + ldrb r0, [r0] + bl MOD06_0223FA60 + ldr r0, _0223FCF8 ; =MOD06_02240310 + bl MOD06_0223F8BC + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0223FC6A: + bl FUN_020311F0 + cmp r0, #0 + beq _0223FC8C + bl MOD06_0223F8B4 + ldr r0, [sp] + ldr r1, [sp, #4] + bl MOD06_02240364 + ldr r0, _0223FCF0 ; =0x02252420 + mov r1, #3 + ldr r0, [r0] + add sp, #0x4c + add r0, #0x88 + str r1, [r0] + pop {r4, r5, r6, r7, pc} +_0223FC8C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _0223FC9C + add r0, r0, #1 + cmp r4, r0 + beq _0223FCEA + b _0223FCA6 +_0223FC9C: + ldr r0, _0223FCFC ; =MOD06_0224019C + bl MOD06_0223F8BC + add sp, #0x4c + pop {r4, r5, r6, r7, pc} +_0223FCA6: + bl MOD06_02240750 + add r4, r0, #0 + bl FUN_0202DF28 + cmp r4, r0 + bgt _0223FCEA + ldr r4, _0223FD00 ; =0x0224F59C + add r3, sp, #8 + mov r2, #8 +_0223FCBA: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FCBA + ldr r0, [r4] + str r0, [r3] + bl FUN_0202DF28 + ldr r1, [sp, #4] + add r1, #0x90 + strb r0, [r1] + ldr r0, [sp, #4] + add r0, #0x91 + str r0, [sp, #4] + ldrb r0, [r0] + lsl r1, r0, #2 + add r0, sp, #8 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FD04 ; =MOD06_0223FFD4 + bl MOD06_0223F8BC +_0223FCEA: + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + nop +_0223FCF0: .word 0x02252420 +_0223FCF4: .word 0x0000060D +_0223FCF8: .word MOD06_02240310 +_0223FCFC: .word MOD06_0224019C +_0223FD00: .word 0x0224F59C +_0223FD04: .word MOD06_0223FFD4 + + thumb_func_start MOD06_0223FD08 +MOD06_0223FD08: ; 0x0223FD08 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, [r4, #0x60] + mov r1, #4 + bl FUN_020021AC + add r5, r0, #0 + add r0, r4, #0 + add r0, #0x95 + ldrb r0, [r0] + bl FUN_02030E7C + cmp r0, #0 + bne _0223FDA6 + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _0223FD42 + ldr r0, [r4, #0x60] + mov r1, #4 + bl FUN_020021EC +_0223FD42: + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223FD8E + mov r5, #1 + bl MOD06_02240764 + cmp r0, #1 + ble _0223FD7E + mov r4, #5 +_0223FD58: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _0223FD74 + add r0, r5, #0 + bl FUN_0202DE78 + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl FUN_0203162C +_0223FD74: + add r5, r5, #1 + bl MOD06_02240764 + cmp r5, r0 + blt _0223FD58 +_0223FD7E: + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE0 ; =MOD06_0223FF30 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FD8E: + add r4, #0x95 + ldrb r0, [r4] + bl FUN_0202DE78 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE0 ; =MOD06_0223FF30 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FDA6: + bl FUN_020311F0 + cmp r0, #0 + bne _0223FDB6 + bl MOD06_02240860 + cmp r0, #0 + beq _0223FDDE +_0223FDB6: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + bne _0223FDC6 + ldr r0, [r4, #0x60] + mov r1, #4 + bl FUN_020021EC +_0223FDC6: + add r4, #0x95 + ldrb r0, [r4] + bl FUN_0202DE78 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE0 ; =MOD06_0223FF30 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FDDE: + cmp r5, #0 + bne _0223FE6E + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + add r0, #0xff + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _0223FE14 + bl FUN_0202E08C + cmp r0, #0 + bne _0223FE14 + mov r0, #0x53 + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FEE4 ; =MOD06_0223FEF0 + bl MOD06_0223F8BC + add r4, #0x95 + ldrb r1, [r4] + mov r0, #4 + bl FUN_0203162C + pop {r4, r5, r6, pc} +_0223FE14: + add r0, r4, #0 + add r0, #0x95 + ldrb r0, [r0] + bl FUN_0202DEE0 + add r1, r4, #0 + add r1, #0x95 + ldrb r1, [r1] + mov r0, #2 + bl FUN_0203162C + bl MOD06_02240764 + add r5, r0, #0 + bl FUN_0202DF28 + cmp r5, r0 + bne _0223FE62 + bl FUN_0202DF28 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + bl MOD06_02240764 + cmp r0, #2 + ble _0223FE52 + ldr r0, _0223FEE8 ; =MOD06_0223FF94 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FE52: + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_022403E0 + pop {r4, r5, r6, pc} +_0223FE62: + bl MOD06_0223F95C + ldr r0, _0223FEEC ; =MOD06_0223FF6C + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FE6E: + mov r0, #0 + mvn r0, r0 + cmp r5, r0 + beq _0223FEDC + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _0223FEBE + mov r5, #1 + bl MOD06_02240764 + cmp r0, #1 + ble _0223FEB2 + mov r4, #5 +_0223FE8C: + lsl r0, r5, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + beq _0223FEA8 + add r0, r5, #0 + bl FUN_0202DE78 + lsl r1, r5, #0x18 + add r0, r4, #0 + lsr r1, r1, #0x18 + bl FUN_0203162C +_0223FEA8: + add r5, r5, #1 + bl MOD06_02240764 + cmp r5, r0 + blt _0223FE8C +_0223FEB2: + bl MOD06_0223F95C + ldr r0, _0223FEEC ; =MOD06_0223FF6C + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0223FEBE: + add r0, r4, #0 + add r0, #0x95 + ldrb r0, [r0] + bl FUN_0202DE78 + add r4, #0x95 + ldrb r1, [r4] + mov r0, #3 + bl FUN_0203162C + bl MOD06_0223F95C + ldr r0, _0223FEEC ; =MOD06_0223FF6C + bl MOD06_0223F8BC +_0223FEDC: + pop {r4, r5, r6, pc} + nop +_0223FEE0: .word MOD06_0223FF30 +_0223FEE4: .word MOD06_0223FEF0 +_0223FEE8: .word MOD06_0223FF94 +_0223FEEC: .word MOD06_0223FF6C + + thumb_func_start MOD06_0223FEF0 +MOD06_0223FEF0: ; 0x0223FEF0 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0223FF28 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FF26 + ldr r0, _0223FF2C ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223FF26 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + bl MOD06_0223F8B4 + ldr r0, _0223FF28 ; =0x02252420 + mov r1, #4 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] +_0223FF26: + pop {r3, r4, r5, pc} + .align 2, 0 +_0223FF28: .word 0x02252420 +_0223FF2C: .word 0x021C48B8 + + thumb_func_start MOD06_0223FF30 +MOD06_0223FF30: ; 0x0223FF30 + push {r3, lr} + add r0, r1, #0 + bl MOD06_0223F9D8 + ldr r0, _0223FF60 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FF5C + ldr r0, _0223FF64 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0223FF5C + bl MOD06_0223F95C + ldr r0, _0223FF68 ; =MOD06_0223FF6C + bl MOD06_0223F8BC +_0223FF5C: + pop {r3, pc} + nop +_0223FF60: .word 0x02252420 +_0223FF64: .word 0x021C48B8 +_0223FF68: .word MOD06_0223FF6C + + thumb_func_start MOD06_0223FF6C +MOD06_0223FF6C: ; 0x0223FF6C + push {r3, lr} + add r0, r1, #0 + bl MOD06_0223F9D8 + ldr r0, _0223FF8C ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0223FF8A + ldr r0, _0223FF90 ; =MOD06_0223FB5C + bl MOD06_0223F8BC +_0223FF8A: + pop {r3, pc} + .align 2, 0 +_0223FF8C: .word 0x02252420 +_0223FF90: .word MOD06_0223FB5C + + thumb_func_start MOD06_0223FF94 +MOD06_0223FF94: ; 0x0223FF94 + push {r4, r5, lr} + sub sp, #0x44 + ldr r5, _0223FFCC ; =0x0224F624 + add r4, r1, #0 + add r3, sp, #0 + mov r2, #8 +_0223FFA0: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0223FFA0 + ldr r0, [r5] + str r0, [r3] + add r0, r4, #0 + bl MOD06_0223F9D8 + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _0223FFD0 ; =MOD06_0223FFD4 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r4, r5, pc} + .align 2, 0 +_0223FFCC: .word 0x0224F624 +_0223FFD0: .word MOD06_0223FFD4 + + thumb_func_start MOD06_0223FFD4 +MOD06_0223FFD4: ; 0x0223FFD4 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + mov r0, #0 + bl FUN_02031A24 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, _02240020 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0224001A + mov r0, #4 + str r0, [sp] + ldr r0, _02240020 ; =0x02252420 + ldr r1, _02240024 ; =0x0224F488 + ldr r0, [r0] + ldr r2, _02240028 ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _0224002C ; =MOD06_02240030 + bl MOD06_0223F8BC +_0224001A: + add sp, #4 + pop {r3, r4, pc} + nop +_02240020: .word 0x02252420 +_02240024: .word 0x0224F488 +_02240028: .word 0x000003D9 +_0224002C: .word MOD06_02240030 + + thumb_func_start MOD06_02240030 +MOD06_02240030: ; 0x02240030 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD06_0223F9D8 + ldr r0, [r5, #0x5c] + bl FUN_02001204 + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_020021AC + add r4, r0, #0 + bl FUN_020311F0 + cmp r0, #0 + bne _02240062 + bl FUN_02030F20 + add r1, r5, #0 + add r1, #0x90 + ldrb r1, [r1] + cmp r1, r0 + beq _0224007E +_02240062: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + bne _02240072 + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_020021EC +_02240072: + mov r0, #0 + str r0, [r5, #0x60] + ldr r0, _022400E8 ; =MOD06_022400F4 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_0224007E: + cmp r4, #0 + bne _022400C0 + add r5, #0x91 + ldrb r0, [r5] + cmp r0, #8 + bne _022400B2 + mov r4, #1 + bl FUN_02030F20 + cmp r0, #1 + ble _022400B2 +_02240094: + lsl r0, r4, #0x10 + lsr r0, r0, #0x10 + bl FUN_02030E7C + cmp r0, #0 + bne _022400A8 + ldr r0, _022400E8 ; =MOD06_022400F4 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_022400A8: + add r4, r4, #1 + bl FUN_02030F20 + cmp r4, r0 + blt _02240094 +_022400B2: + mov r0, #0xa + bl FUN_02031588 + ldr r0, _022400EC ; =MOD06_022402B8 + bl MOD06_0223F8BC + pop {r4, r5, r6, pc} +_022400C0: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022400E4 + mov r0, #1 + bl FUN_02031A24 + bl MOD06_0223F8B4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD06_02240364 + ldr r0, _022400F0 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] +_022400E4: + pop {r4, r5, r6, pc} + nop +_022400E8: .word MOD06_022400F4 +_022400EC: .word MOD06_022402B8 +_022400F0: .word 0x02252420 + + thumb_func_start MOD06_022400F4 +MOD06_022400F4: ; 0x022400F4 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + ldr r6, _02240158 ; =0x0224F558 + add r2, r0, #0 + add r4, r1, #0 + add r5, sp, #0 + mov r3, #8 +_02240102: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02240102 + ldr r0, [r6] + add r1, r4, #0 + str r0, [r5] + add r0, r2, #0 + bl MOD06_02240364 + ldr r0, _0224015C ; =0x02252420 + ldr r1, [r0] + add r0, r1, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _02240132 + add r1, #0x92 + ldrb r0, [r1] + mov r1, #0 + add r0, #0x68 + bl MOD06_0223EDC4 + b _02240144 +_02240132: + add r0, r4, #0 + add r0, #0x91 + ldrb r0, [r0] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 +_02240144: + bl FUN_02050024 + ldr r0, _02240160 ; =MOD06_02240164 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + nop +_02240158: .word 0x0224F558 +_0224015C: .word 0x02252420 +_02240160: .word MOD06_02240164 + + thumb_func_start MOD06_02240164 +MOD06_02240164: ; 0x02240164 + push {r4, lr} + add r4, r0, #0 + ldr r0, _02240194 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240192 + ldr r0, _02240198 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02240192 + ldr r0, _02240194 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + add r0, r4, #0 + bl FUN_0200CAB4 +_02240192: + pop {r4, pc} + .align 2, 0 +_02240194: .word 0x02252420 +_02240198: .word 0x021C48B8 + + thumb_func_start MOD06_0224019C +MOD06_0224019C: ; 0x0224019C + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + ldr r6, _022401F8 ; =0x0224F668 + add r5, r0, #0 + add r4, r1, #0 + add r3, sp, #0 + mov r2, #8 +_022401AA: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _022401AA + ldr r0, [r6] + str r0, [r3] + add r0, r4, #0 + bl MOD06_0223F9D8 + bl FUN_0202DF28 + cmp r0, #1 + ble _022401DE + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 + ldr r0, _022401FC ; =MOD06_02240204 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_022401DE: + bl MOD06_0223F8B4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + ldr r0, _02240200 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022401F8: .word 0x0224F668 +_022401FC: .word MOD06_02240204 +_02240200: .word 0x02252420 + + thumb_func_start MOD06_02240204 +MOD06_02240204: ; 0x02240204 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, _02240248 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240244 + mov r0, #4 + str r0, [sp] + ldr r0, _02240248 ; =0x02252420 + ldr r1, _0224024C ; =0x0224F488 + ldr r0, [r0] + ldr r2, _02240250 ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _02240254 ; =MOD06_02240258 + bl MOD06_0223F8BC +_02240244: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02240248: .word 0x02252420 +_0224024C: .word 0x0224F488 +_02240250: .word 0x000003D9 +_02240254: .word MOD06_02240258 + + thumb_func_start MOD06_02240258 +MOD06_02240258: ; 0x02240258 + push {r4, r5, r6, lr} + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + bl MOD06_0223F9D8 + ldr r0, [r5, #0x5c] + bl FUN_02001204 + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_020021AC + add r4, r0, #0 + bl FUN_020311F0 + cmp r0, #0 + beq _02240280 + mov r4, #1 + mvn r4, r4 +_02240280: + cmp r4, #0 + bne _0224029C + bl MOD06_0223F8B4 + add r0, r6, #0 + add r1, r5, #0 + bl MOD06_02240364 + ldr r0, _022402B0 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + pop {r4, r5, r6, pc} +_0224029C: + mov r0, #0 + mvn r0, r0 + cmp r4, r0 + beq _022402AE + bl MOD06_0223F95C + ldr r0, _022402B4 ; =MOD06_0223FF6C + bl MOD06_0223F8BC +_022402AE: + pop {r4, r5, r6, pc} + .align 2, 0 +_022402B0: .word 0x02252420 +_022402B4: .word MOD06_0223FF6C + + thumb_func_start MOD06_022402B8 +MOD06_022402B8: ; 0x022402B8 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_020311F0 + cmp r0, #0 + bne _022402D4 + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + ldrb r1, [r1] + cmp r1, r0 + beq _022402DC +_022402D4: + ldr r0, _0224030C ; =MOD06_022400F4 + bl MOD06_0223F8BC + pop {r3, r4, r5, pc} +_022402DC: + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + mov r0, #0xa + bl FUN_020315D8 + cmp r0, #0 + beq _02240308 + bl FUN_020314E8 + cmp r0, #0 + beq _02240308 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02240364 + add r0, r4, #0 + bl MOD06_02240724 +_02240308: + pop {r3, r4, r5, pc} + nop +_0224030C: .word MOD06_022400F4 + + thumb_func_start MOD06_02240310 +MOD06_02240310: ; 0x02240310 + push {r3, r4, lr} + sub sp, #4 + add r4, r1, #0 + add r0, r4, #0 + bl MOD06_0223F9D8 + ldr r0, [r4, #0x5c] + bl FUN_02001204 + ldr r0, _02240354 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240350 + mov r0, #4 + str r0, [sp] + ldr r0, _02240354 ; =0x02252420 + ldr r1, _02240358 ; =0x0224F488 + ldr r0, [r0] + ldr r2, _0224035C ; =0x000003D9 + ldr r0, [r0, #0x68] + mov r3, #0xb + ldr r0, [r0, #8] + bl FUN_02002198 + str r0, [r4, #0x60] + ldr r0, _02240360 ; =MOD06_0223FD08 + bl MOD06_0223F8BC +_02240350: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02240354: .word 0x02252420 +_02240358: .word 0x0224F488 +_0224035C: .word 0x000003D9 +_02240360: .word MOD06_0223FD08 + + thumb_func_start MOD06_02240364 +MOD06_02240364: ; 0x02240364 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _022403DC ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + mov r1, #0xf + add r0, #0x40 + bl FUN_02019620 + add r0, r4, #0 + add r0, #0x20 + mov r1, #0 + bl FUN_0200CCF8 + ldr r0, [r4, #0x64] + bl FUN_02012870 + mov r1, #0 + ldr r0, [r4, #0x5c] + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019570 + add r0, r4, #0 + add r0, #0x20 + bl FUN_02019178 + add r0, r4, #0 + add r0, #0x97 + ldrb r0, [r0] + cmp r0, #0 + beq _022403D0 + ldr r0, _022403DC ; =0x02252420 + mov r1, #0 + ldr r0, [r0] + add r0, #0x30 + bl FUN_0200CCF8 + ldr r0, _022403DC ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019570 + ldr r0, _022403DC ; =0x02252420 + ldr r0, [r0] + add r0, #0x30 + bl FUN_02019178 + mov r0, #0 + add r4, #0x97 + strb r0, [r4] +_022403D0: + cmp r5, #0 + beq _022403DA + add r0, r5, #0 + bl FUN_0200CAB4 +_022403DA: + pop {r3, r4, r5, pc} + .align 2, 0 +_022403DC: .word 0x02252420 + + thumb_func_start MOD06_022403E0 +MOD06_022403E0: ; 0x022403E0 + push {r4, lr} + add r4, r0, #0 + mov r0, #1 + bl FUN_0202DFA4 + add r2, r0, #0 + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_0200ABC0 + mov r0, #0x2b + mov r1, #1 + bl MOD06_0223EDC4 + ldr r0, _02240410 ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + ldr r0, _02240414 ; =MOD06_02240474 + bl MOD06_0223F8BC + pop {r4, pc} + nop +_02240410: .word MOD06_0223FAA4 +_02240414: .word MOD06_02240474 + + thumb_func_start MOD06_02240418 +MOD06_02240418: ; 0x02240418 + push {r4, lr} + ldr r1, _02240468 ; =0x02252420 + add r4, r0, #0 + add r0, #0x8e + ldr r1, [r1] + ldrh r0, [r0] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + ldr r2, _02240468 ; =0x02252420 + ldr r0, [r4, #0x58] + ldr r2, [r2] + mov r1, #1 + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + mov r0, #4 + mov r1, #1 + bl MOD06_0223EDC4 + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + ldr r0, _0224046C ; =MOD06_0223FAA4 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + ldr r0, _02240470 ; =MOD06_02240474 + bl MOD06_0223F8BC + ldr r0, _02240468 ; =0x02252420 + mov r1, #0x5a + ldr r0, [r0] + add r0, #0x96 + strb r1, [r0] + pop {r4, pc} + nop +_02240468: .word 0x02252420 +_0224046C: .word MOD06_0223FAA4 +_02240470: .word MOD06_02240474 + + thumb_func_start MOD06_02240474 +MOD06_02240474: ; 0x02240474 + push {r4, lr} + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _02240494 + bl FUN_02030F20 + add r4, #0x90 + ldrb r1, [r4] + cmp r1, r0 + beq _02240494 + ldr r0, _022404CC ; =MOD06_02240600 + bl MOD06_0223F8BC + pop {r4, pc} +_02240494: + bl MOD06_02240860 + cmp r0, #0 + bne _022404A4 + bl FUN_020311F0 + cmp r0, #0 + beq _022404AC +_022404A4: + ldr r0, _022404CC ; =MOD06_02240600 + bl MOD06_0223F8BC + pop {r4, pc} +_022404AC: + ldr r0, _022404D0 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _022404C8 + mov r0, #0xa + bl FUN_02031588 + ldr r0, _022404D4 ; =MOD06_022404D8 + bl MOD06_0223F8BC +_022404C8: + pop {r4, pc} + nop +_022404CC: .word MOD06_02240600 +_022404D0: .word 0x02252420 +_022404D4: .word MOD06_022404D8 + + thumb_func_start MOD06_022404D8 +MOD06_022404D8: ; 0x022404D8 + push {r3, r4, r5, r6, lr} + sub sp, #0x44 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02031190 + cmp r0, #0 + bne _022404FE + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + ldrb r1, [r1] + cmp r1, r0 + beq _022404FE + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + b _0224058E +_022404FE: + bl MOD06_02240860 + cmp r0, #0 + bne _0224050E + bl FUN_020311F0 + cmp r0, #0 + beq _02240518 +_0224050E: + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_02240518: + mov r0, #0 + bl FUN_02030E7C + cmp r0, #0 + bne _0224052C + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_0224052C: + mov r0, #0 + mov r1, #5 + bl FUN_02031640 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _02240546 + ldr r0, _022405F4 ; =MOD06_02240600 + bl MOD06_0223F8BC + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_02240546: + mov r0, #0xa + bl FUN_020315D8 + cmp r0, #0 + beq _0224058E + bl FUN_020314E8 + cmp r0, #0 + beq _0224058E + ldr r0, _022405F8 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + bne _02240574 + ldr r0, _022405F8 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_0201BD7C +_02240574: + bl FUN_02030F20 + add r1, r4, #0 + add r1, #0x90 + strb r0, [r1] + add r0, r4, #0 + bl MOD06_02240724 + add r0, r5, #0 + bl FUN_0200CAB4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_0224058E: + ldr r2, _022405F8 ; =0x02252420 + ldr r0, [r2] + add r1, r0, #0 + add r1, #0x96 + ldrb r1, [r1] + cmp r1, #0 + beq _022405F0 + add r1, r0, #0 + add r1, #0x96 + ldrb r1, [r1] + add r0, #0x96 + sub r1, r1, #1 + strb r1, [r0] + ldr r2, [r2] + add r0, r2, #0 + add r0, #0x96 + ldrb r0, [r0] + cmp r0, #0 + bne _022405F0 + ldr r6, _022405FC ; =0x0224F6AC + add r5, sp, #0 + mov r3, #8 +_022405BA: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _022405BA + ldr r0, [r6] + str r0, [r5] + add r0, r2, #0 + add r0, #0x91 + ldrb r0, [r0] + cmp r0, #8 + bne _022405E0 + add r2, #0x92 + ldrb r0, [r2] + mov r1, #0 + add r0, #0x63 + bl MOD06_0223EDC4 + add sp, #0x44 + pop {r3, r4, r5, r6, pc} +_022405E0: + add r4, #0x91 + ldrb r0, [r4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + mov r1, #0 + bl MOD06_0223EDC4 +_022405F0: + add sp, #0x44 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022405F4: .word MOD06_02240600 +_022405F8: .word 0x02252420 +_022405FC: .word 0x0224F6AC + + thumb_func_start MOD06_02240600 +MOD06_02240600: ; 0x02240600 + push {r3, lr} + ldr r0, _02240624 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240620 + mov r0, #0 + add r1, r0, #0 + bl MOD06_0223EDC4 + ldr r0, _02240628 ; =MOD06_0224062C + bl MOD06_0223F8BC +_02240620: + pop {r3, pc} + nop +_02240624: .word 0x02252420 +_02240628: .word MOD06_0224062C + + thumb_func_start MOD06_0224062C +MOD06_0224062C: ; 0x0224062C + push {r4, lr} + add r4, r0, #0 + ldr r0, _02240660 ; =0x02252420 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _0224065E + ldr r0, _02240664 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224065E + add r0, r4, #0 + bl FUN_0200CAB4 + bl MOD06_0223F8B4 + ldr r0, _02240660 ; =0x02252420 + mov r1, #1 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] +_0224065E: + pop {r4, pc} + .align 2, 0 +_02240660: .word 0x02252420 +_02240664: .word 0x021C48B8 + + thumb_func_start MOD06_02240668 +MOD06_02240668: ; 0x02240668 + push {r4, lr} + ldr r1, _022406A0 ; =0x02252420 + add r4, r0, #0 + add r0, #0x8e + ldr r1, [r1] + ldrh r0, [r0] + ldr r1, [r1, #0x7c] + bl FUN_0202E9AC + ldr r2, _022406A0 ; =0x02252420 + ldr r0, [r4, #0x58] + ldr r2, [r2] + mov r1, #1 + ldr r2, [r2, #0x7c] + bl FUN_0200ABC0 + mov r0, #5 + mov r1, #1 + bl MOD06_0223EDC4 + bl FUN_0204FF4C + ldr r0, _022406A4 ; =MOD06_022406A8 + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_022406A0: .word 0x02252420 +_022406A4: .word MOD06_022406A8 + + thumb_func_start MOD06_022406A8 +MOD06_022406A8: ; 0x022406A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _022406D0 ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _022406CE + bl FUN_0204FF4C + add r0, r4, #0 + bl MOD06_0223F270 + add r0, r5, #0 + bl FUN_0200CAB4 +_022406CE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022406D0: .word 0x02252420 + + thumb_func_start MOD06_022406D4 +MOD06_022406D4: ; 0x022406D4 + push {r4, lr} + add r4, r0, #0 + bl FUN_0204FF4C + ldr r0, _022406E8 ; =MOD06_022406EC + add r1, r4, #0 + mov r2, #0 + bl FUN_0200CA44 + pop {r4, pc} + .align 2, 0 +_022406E8: .word MOD06_022406EC + + thumb_func_start MOD06_022406EC +MOD06_022406EC: ; 0x022406EC + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, _0224071C ; =0x02252420 + add r4, r1, #0 + ldr r0, [r0] + add r0, #0x94 + ldrb r0, [r0] + bl FUN_020546C8 + cmp r0, #0 + beq _02240718 + ldr r0, _02240720 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _02240718 + add r0, r4, #0 + bl MOD06_0223F270 + add r0, r5, #0 + bl FUN_0200CAB4 +_02240718: + pop {r3, r4, r5, pc} + nop +_0224071C: .word 0x02252420 +_02240720: .word 0x021C48B8 + + thumb_func_start MOD06_02240724 +MOD06_02240724: ; 0x02240724 + push {r3, lr} + mov r0, #0 + bl FUN_02031A24 + ldr r0, _0224074C ; =0x02252420 + mov r1, #2 + ldr r0, [r0] + add r0, #0x88 + str r1, [r0] + mov r0, #1 + add r1, r0, #0 + bl FUN_020334E8 + bl FUN_0202DBE0 + mov r0, #1 + bl FUN_0202EE84 + pop {r3, pc} + nop +_0224074C: .word 0x02252420 + + thumb_func_start MOD06_02240750 +MOD06_02240750: ; 0x02240750 + ldr r0, _0224075C ; =0x02252420 + ldr r3, _02240760 ; =0x02031259 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_0224075C: .word 0x02252420 +_02240760: .word 0x02031259 + + thumb_func_start MOD06_02240764 +MOD06_02240764: ; 0x02240764 + ldr r0, _02240770 ; =0x02252420 + ldr r3, _02240774 ; =0x02031249 + ldr r0, [r0] + add r0, #0x91 + ldrb r0, [r0] + bx r3 + .align 2, 0 +_02240770: .word 0x02252420 +_02240774: .word 0x02031249 + + thumb_func_start MOD06_02240778 +MOD06_02240778: ; 0x02240778 + ldr r0, _0224078C ; =0x02252420 + ldr r2, [r0] + add r0, r2, #0 + add r0, #0x92 + add r2, #0x93 + ldrb r1, [r0] + ldrb r0, [r2] + lsl r0, r0, #4 + add r0, r1, r0 + bx lr + .align 2, 0 +_0224078C: .word 0x02252420 + + thumb_func_start MOD06_02240790 +MOD06_02240790: ; 0x02240790 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD06_0223EF18 + ldr r0, _022407C8 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + strb r4, [r0] + sub r0, r4, #3 + cmp r0, #1 + bhi _022407B2 + mov r0, #0 + add r5, #0xac + str r0, [r5] +_022407B2: + ldr r0, _022407C8 ; =0x02252420 + ldr r1, [r0] + add r1, #0x92 + strb r6, [r1] + ldr r1, [r0] + add r1, #0x93 + strb r7, [r1] + ldr r0, [r0] + bl MOD06_0223F090 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022407C8: .word 0x02252420 + + thumb_func_start MOD06_022407CC +MOD06_022407CC: ; 0x022407CC + ldr r0, _022407D4 ; =0x02252420 + ldr r3, _022407D8 ; =MOD06_0223F270 + ldr r0, [r0] + bx r3 + .align 2, 0 +_022407D4: .word 0x02252420 +_022407D8: .word MOD06_0223F270 + + thumb_func_start MOD06_022407DC +MOD06_022407DC: ; 0x022407DC + push {r4, lr} + ldr r0, _022407F4 ; =0x02252420 + ldr r0, [r0] + add r0, #0x88 + ldr r4, [r0] + cmp r4, #0 + beq _022407EE + bl MOD06_0223EFFC +_022407EE: + add r0, r4, #0 + pop {r4, pc} + nop +_022407F4: .word 0x02252420 + + thumb_func_start MOD06_022407F8 +MOD06_022407F8: ; 0x022407F8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl MOD06_0223EF18 + ldr r0, _02240830 ; =0x02252420 + ldr r0, [r0] + add r0, #0x91 + strb r4, [r0] + sub r0, r4, #3 + cmp r0, #1 + bhi _0224081A + mov r0, #0 + add r5, #0xac + str r0, [r5] +_0224081A: + ldr r0, _02240830 ; =0x02252420 + ldr r1, [r0] + add r1, #0x92 + strb r6, [r1] + ldr r1, [r0] + add r1, #0x93 + strb r7, [r1] + ldr r0, [r0] + bl MOD06_0223F89C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02240830: .word 0x02252420 + + thumb_func_start MOD06_02240834 +MOD06_02240834: ; 0x02240834 + ldr r0, _0224083C ; =0x02252420 + ldr r3, _02240840 ; =MOD06_0223F8C8 + ldr r0, [r0] + bx r3 + .align 2, 0 +_0224083C: .word 0x02252420 +_02240840: .word MOD06_0223F8C8 + + thumb_func_start MOD06_02240844 +MOD06_02240844: ; 0x02240844 + push {r4, lr} + ldr r0, _0224085C ; =0x02252420 + ldr r0, [r0] + add r0, #0x88 + ldr r4, [r0] + cmp r4, #0 + beq _02240856 + bl MOD06_0223EFFC +_02240856: + add r0, r4, #0 + pop {r4, pc} + nop +_0224085C: .word 0x02252420 + + thumb_func_start MOD06_02240860 +MOD06_02240860: ; 0x02240860 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02240864 +MOD06_02240864: ; 0x02240864 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, #0x54 + add r4, r1, #0 + bl FUN_02019048 + cmp r0, #0 + bne _0224089E + add r0, r5, #0 + add r0, #0x54 + bl FUN_0201901C + ldr r0, [r5, #0x10] + add r1, r5, #0 + ldr r0, [r0, #8] + add r1, #0x54 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r5, #0x10] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + add r0, r5, #0 + add r0, #0x54 + bl FUN_02054608 + b _022408A6 +_0224089E: + add r0, r5, #0 + add r0, #0x54 + bl FUN_0205464C +_022408A6: + ldr r0, [r5, #0x68] + ldr r2, [r5, #0x14] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x18] + ldr r2, [r5, #0x14] + bl FUN_0200B7B8 + ldr r0, [r5, #0x10] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r2, r0, #0 + add r0, r5, #0 + ldr r1, [r5, #0x18] + add r0, #0x54 + mov r3, #1 + bl FUN_02054658 + str r0, [r5, #0x74] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022408D4 +MOD06_022408D4: ; 0x022408D4 + push {r4, lr} + add r4, r0, #0 + cmp r1, #0 + beq _022408EC + add r0, #0x54 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r4, #0 + add r0, #0x54 + bl FUN_02019570 +_022408EC: + add r4, #0x54 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022408F8 +MOD06_022408F8: ; 0x022408F8 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x1c] + ldr r0, [r0, #0xc] + mov r3, #4 + bl FUN_02023C04 + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r1, #0 + ldr r0, [r4, #0x64] + ldr r2, [r4, #0x1c] + add r3, r1, #0 + bl FUN_0200ABB4 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02240924 +MOD06_02240924: ; 0x02240924 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r5, #0 + ldr r0, [r0, #0xc] + mov r1, #0 + add r4, #0x34 + bl FUN_02023BA4 + mov r6, #5 + cmp r0, #0 + beq _02240940 + add r6, r6, #1 +_02240940: + add r0, r4, #0 + bl FUN_02019048 + cmp r0, #0 + bne _022409D2 + add r0, r6, #2 + mov r1, #4 + bl FUN_02012838 + str r0, [r5, #8] + mov r3, #1 + str r3, [sp] + mov r0, #0x10 + str r0, [sp, #4] + add r0, r6, #2 + lsl r0, r0, #0x19 + lsr r0, r0, #0x18 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + str r3, [sp, #0x10] + ldr r0, [r5, #0x10] + add r1, r4, #0 + ldr r0, [r0, #8] + mov r2, #3 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02240A20 ; =0x000003D9 + add r0, #0x34 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, [r5, #8] + ldr r1, [r5, #0x68] + mov r2, #0x7b + mov r3, #0xc + bl FUN_02012880 + mov r4, #0 + cmp r6, #0 + ble _022409C4 + mov r7, #0x71 +_02240998: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_022408F8 + ldr r0, [r5, #0x68] + ldr r2, [r5, #0x1c] + add r1, r7, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x64] + ldr r1, [r5, #0x20] + ldr r2, [r5, #0x1c] + bl FUN_0200B7B8 + ldr r0, [r5, #8] + ldr r1, [r5, #0x20] + add r2, r4, #0 + bl FUN_020128A0 + add r4, r4, #1 + cmp r4, r6 + blt _02240998 +_022409C4: + mov r2, #0x72 + add r3, r2, #0 + ldr r0, [r5, #8] + ldr r1, [r5, #0x68] + sub r3, #0x74 + bl FUN_02012880 +_022409D2: + ldr r4, _02240A24 ; =0x0224F704 + 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} + add r0, r6, #2 + lsl r0, r0, #0x10 + lsr r1, r0, #0x10 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #8] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x34 + str r0, [sp, #0x20] + add r0, r2, #0 + add r2, r5, #0 + str r5, [sp, #0x30] + add r2, #0x78 + ldrh r2, [r2] + mov r3, #4 + bl FUN_020010A8 + str r0, [r5] + add r5, #0x34 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + nop +_02240A20: .word 0x000003D9 +_02240A24: .word 0x0224F704 + + thumb_func_start MOD06_02240A28 +MOD06_02240A28: ; 0x02240A28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _02240A62 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + add r0, r4, #0 + add r0, #0x34 + mov r1, #1 + bl FUN_0200CCF8 + add r1, r4, #0 + add r1, #0x38 + ldrb r1, [r1] + ldr r0, [r4, #0x34] + bl FUN_0201AC68 + add r0, r4, #0 + add r0, #0x34 + bl FUN_02019178 + ldr r0, [r4, #8] + bl FUN_02012870 + mov r0, #0 + str r0, [r4] +_02240A62: + pop {r4, pc} + + thumb_func_start MOD06_02240A64 +MOD06_02240A64: ; 0x02240A64 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5] + bl FUN_02001204 + add r4, r0, #0 + add r2, r5, #0 + ldr r0, [r5] + mov r1, #0 + add r2, #0x78 + bl FUN_02001448 + add r0, r5, #0 + add r0, #0x80 + ldrh r6, [r0] + add r1, r5, #0 + ldr r0, [r5] + add r1, #0x80 + bl FUN_0200143C + add r0, r5, #0 + add r0, #0x80 + ldrh r0, [r0] + cmp r6, r0 + beq _02240A9C + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 +_02240A9C: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02240ACC + add r0, r0, #1 + cmp r4, r0 + beq _02240AB0 + cmp r4, #0xc + beq _02240AB4 + b _02240AE6 +_02240AB0: + mov r0, #0 + pop {r4, r5, r6, pc} +_02240AB4: + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x10] + mov r1, #0 + add r0, #0xac + str r1, [r0] + add r0, r5, #0 + bl MOD06_02240A28 + mov r0, #2 + pop {r4, r5, r6, pc} +_02240ACC: + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x10] + mov r1, #0 + add r0, #0xac + str r1, [r0] + add r0, r5, #0 + bl MOD06_02240A28 + mov r0, #0 + mvn r0, r0 + pop {r4, r5, r6, pc} +_02240AE6: + ldr r0, _02240B00 ; =0x000005DC + bl FUN_020054C8 + ldr r0, [r5, #0x10] + add r1, r4, #0 + ldr r0, [r0, #0xc] + bl FUN_02023BE8 + ldr r1, [r5, #0x10] + add r1, #0xac + str r0, [r1] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_02240B00: .word 0x000005DC + + thumb_func_start MOD06_02240B04 +MOD06_02240B04: ; 0x02240B04 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + mov r0, #3 + mov r1, #4 + ldr r4, _02240BA8 ; =0x022522E4 + bl FUN_02012838 + str r0, [r5, #0xc] + mov r0, #0xa + str r0, [sp] + mov r0, #9 + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + ldr r0, _02240BAC ; =0x000002F7 + add r1, r5, #0 + str r0, [sp, #0x10] + ldr r0, [r5, #0x10] + add r1, #0x44 + ldr r0, [r0, #8] + mov r2, #3 + mov r3, #0x16 + bl FUN_02019064 + add r0, r5, #0 + ldr r2, _02240BB0 ; =0x000003D9 + add r0, #0x44 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + mov r6, #0 +_02240B4A: + ldr r0, [r5, #0xc] + ldr r1, [r5, #0x68] + ldr r2, [r4] + ldr r3, [r4, #4] + bl FUN_02012880 + add r6, r6, #1 + add r4, #8 + cmp r6, #3 + blt _02240B4A + ldr r4, _02240BB4 ; =0x0224F704 + 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} + mov r1, #3 + add r0, sp, #0x14 + strh r1, [r0, #0x10] + strh r1, [r0, #0x12] + ldr r0, [r5, #0xc] + mov r1, #0 + str r0, [sp, #0x14] + add r0, r5, #0 + add r0, #0x44 + str r0, [sp, #0x20] + add r0, r2, #0 + add r2, r5, #0 + str r5, [sp, #0x30] + add r2, #0x7a + ldrh r2, [r2] + mov r3, #4 + bl FUN_020010A8 + str r0, [r5, #4] + add r5, #0x44 + add r0, r5, #0 + bl FUN_020191D0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02240BA8: .word 0x022522E4 +_02240BAC: .word 0x000002F7 +_02240BB0: .word 0x000003D9 +_02240BB4: .word 0x0224F704 + + thumb_func_start MOD06_02240BB8 +MOD06_02240BB8: ; 0x02240BB8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #4] + bl FUN_02001204 + add r4, r0, #0 + add r2, r5, #0 + ldr r0, [r5, #4] + mov r1, #0 + add r2, #0x7a + bl FUN_02001448 + add r0, r5, #0 + add r0, #0x82 + ldrh r6, [r0] + add r1, r5, #0 + ldr r0, [r5, #4] + add r1, #0x82 + bl FUN_0200143C + add r0, r5, #0 + add r0, #0x82 + ldrh r0, [r0] + cmp r6, r0 + beq _02240BF0 + ldr r0, _02240C54 ; =0x000005DC + bl FUN_020054C8 +_02240BF0: + mov r0, #1 + mvn r0, r0 + cmp r4, r0 + beq _02240C02 + add r0, r0, #1 + cmp r4, r0 + bne _02240C0E + mov r0, #0 + pop {r4, r5, r6, pc} +_02240C02: + ldr r0, _02240C54 ; =0x000005DC + bl FUN_020054C8 + mov r4, #0 + mvn r4, r4 + b _02240C1A +_02240C0E: + ldr r0, _02240C54 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD06_02240A28 +_02240C1A: + ldr r0, [r5, #4] + cmp r0, #0 + beq _02240C50 + mov r1, #0 + add r2, r1, #0 + bl FUN_02001300 + add r0, r5, #0 + add r0, #0x44 + mov r1, #1 + bl FUN_0200CCF8 + add r1, r5, #0 + add r1, #0x48 + ldrb r1, [r1] + ldr r0, [r5, #0x44] + bl FUN_0201AC68 + add r0, r5, #0 + add r0, #0x44 + bl FUN_02019178 + ldr r0, [r5, #0xc] + bl FUN_02012870 + mov r0, #0 + str r0, [r5, #4] +_02240C50: + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02240C54: .word 0x000005DC + + thumb_func_start MOD06_02240C58 +MOD06_02240C58: ; 0x02240C58 + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + ldr r2, _02240EFC ; =0x0000013A + str r0, [sp, #0x14] + ldr r5, [r0, #0x64] + mov r0, #0 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x30] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x2c] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x28] + ldr r0, [sp, #0x14] + mov r2, #3 + str r0, [sp, #0x24] + add r0, #0x24 + str r0, [sp, #0x24] + 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] + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x24] + ldr r0, [r0, #0x10] + mov r3, #4 + ldr r0, [r0, #8] + bl FUN_02019064 + ldr r0, [sp, #0x24] + ldr r2, _02240F00 ; =0x000003D9 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + ldr r0, [sp, #0x24] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [sp, #0x14] + add r1, r0, #0 + add r1, #0x78 + ldrh r1, [r1] + sub r1, r1, #1 + bl MOD06_022408F8 + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x2c] + mov r1, #0x51 + bl FUN_0200A8E0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + bl FUN_0200B7B8 + mov r1, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x28] + mov r3, #0x39 + str r1, [sp, #8] + bl FUN_0201BD84 + mov r6, #0 + mov r4, #0x10 + mov r7, #0xff +_02240CFE: + add r1, r6, #0 + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x2c] + add r1, #0x3d + bl FUN_0200A8E0 + str r4, [sp] + str r7, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x2c] + mov r1, #0 + mov r3, #2 + bl FUN_0201BD84 + add r6, r6, #1 + add r4, #0xf + cmp r6, #9 + blt _02240CFE + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, _02240F04 ; =0x022522D8 + ldr r7, _02240F08 ; =0x022522CC + str r0, [sp, #0x20] + mov r0, #0x10 + str r0, [sp, #0x1c] +_02240D34: + ldr r0, [sp, #0x14] + ldrb r1, [r7] + ldr r0, [r0, #0x10] + add r0, #0xac + ldr r0, [r0] + bl FUN_02023B0C + add r2, r0, #0 + ldr r0, [sp, #0x20] + ldrb r4, [r0] + ldrb r0, [r7] + cmp r0, #0xb + bls _02240D50 + b _02240E8C +_02240D50: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02240D5C: ; jump table + .short _02240E8C - _02240D5C - 2 ; case 0 + .short _02240D74 - _02240D5C - 2 ; case 1 + .short _02240D86 - _02240D5C - 2 ; case 2 + .short _02240D9A - _02240D5C - 2 ; case 3 + .short _02240E86 - _02240D5C - 2 ; case 4 + .short _02240DB6 - _02240D5C - 2 ; case 5 + .short _02240E8C - _02240D5C - 2 ; case 6 + .short _02240E34 - _02240D5C - 2 ; case 7 + .short _02240E8C - _02240D5C - 2 ; case 8 + .short _02240E86 - _02240D5C - 2 ; case 9 + .short _02240E86 - _02240D5C - 2 ; case 10 + .short _02240E86 - _02240D5C - 2 ; case 11 +_02240D74: + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #1 + bl FUN_0200AD38 + b _02240E8C +_02240D86: + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + b _02240E8C +_02240D9A: + cmp r2, #0 + bne _02240DA2 + mov r4, #0x52 + b _02240E8C +_02240DA2: + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + b _02240E8C +_02240DB6: + cmp r2, #0 + ldr r0, _02240F0C ; =0x00002710 + blt _02240DD0 + mul r0, r2 + mov r1, #0xfe + bl _s32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _s32_div_f + add r6, r0, #0 + b _02240DE4 +_02240DD0: + neg r1, r2 + mul r0, r1 + mov r1, #0xfe + bl _s32_div_f + add r0, r0, #5 + mov r1, #0xa + bl _s32_div_f + neg r6, r0 +_02240DE4: + add r0, r6, #0 + mov r1, #0xc + bl _s32_div_f + bl abs + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #2 + bl FUN_0200AD38 + add r0, r6, #0 + mov r1, #0xc + bl _s32_div_f + add r0, r1, #0 + bl abs + add r2, r0, #0 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #1 + mov r3, #2 + bl FUN_0200AD38 + cmp r6, #0 + bne _02240E2E + mov r4, #0x52 + b _02240E8C +_02240E2E: + ble _02240E8C + add r4, r4, #1 + b _02240E8C +_02240E34: + cmp r2, #0 + ldr r0, _02240F10 ; =0x00035D2E + blt _02240E4C + add r1, r2, #0 + mul r1, r0 + ldr r0, _02240F14 ; =0x0000C350 + add r0, r1, r0 + ldr r1, _02240F18 ; =0x000186A0 + bl _s32_div_f + add r6, r0, #0 + b _02240E5E +_02240E4C: + neg r1, r2 + add r2, r1, #0 + mul r2, r0 + ldr r0, _02240F14 ; =0x0000C350 + ldr r1, _02240F18 ; =0x000186A0 + add r0, r2, r0 + bl _s32_div_f + neg r6, r0 +_02240E5E: + add r0, r6, #0 + bl abs + add r2, r0, #0 + mov r0, #0 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + add r0, r5, #0 + mov r1, #0 + mov r3, #3 + bl FUN_0200AD38 + cmp r6, #0 + bne _02240E80 + mov r4, #0x52 + b _02240E8C +_02240E80: + ble _02240E8C + add r4, r4, #1 + b _02240E8C +_02240E86: + cmp r2, #0 + bne _02240E8C + add r4, r4, #1 +_02240E8C: + ldr r0, [sp, #0x30] + ldr r2, [sp, #0x2c] + add r1, r4, #0 + bl FUN_0200A8E0 + ldr r1, [sp, #0x28] + ldr r2, [sp, #0x2c] + add r0, r5, #0 + bl FUN_0200B7B8 + mov r0, #0 + ldr r1, [sp, #0x28] + add r2, r0, #0 + bl FUN_02002E14 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + mov r3, #0xbf + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x24] + ldr r2, [sp, #0x28] + mov r1, #0 + sub r3, r3, r4 + bl FUN_0201BD84 + ldr r0, [sp, #0x20] + add r7, r7, #1 + add r0, r0, #1 + str r0, [sp, #0x20] + ldr r0, [sp, #0x1c] + add r0, #0xf + str r0, [sp, #0x1c] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, #9 + bge _02240EE0 + b _02240D34 +_02240EE0: + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + ldr r0, [sp, #0x28] + bl FUN_02021A20 + ldr r0, [sp, #0x30] + bl FUN_0200A8B8 + ldr r0, [sp, #0x24] + bl FUN_020191D0 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02240EFC: .word 0x0000013A +_02240F00: .word 0x000003D9 +_02240F04: .word 0x022522D8 +_02240F08: .word 0x022522CC +_02240F0C: .word 0x00002710 +_02240F10: .word 0x00035D2E +_02240F14: .word 0x0000C350 +_02240F18: .word 0x000186A0 + + thumb_func_start MOD06_02240F1C +MOD06_02240F1C: ; 0x02240F1C + push {r4, lr} + add r4, r0, #0 + add r0, #0x24 + mov r1, #1 + bl FUN_0200CCF8 + add r1, r4, #0 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r4, #0x24] + bl FUN_0201AC68 + add r4, #0x24 + add r0, r4, #0 + bl FUN_02019178 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02240F40 +MOD06_02240F40: ; 0x02240F40 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + ldr r0, [r4, #0x10] + ldr r0, [r0, #0xc] + bl FUN_0206BB1C + add r1, r0, #0 + ldr r0, [r4, #0x10] + ldr r2, [r4, #0x6c] + add r0, #0xac + ldr r0, [r0] + bl FUN_0206BE48 + cmp r0, #0 + beq _02240F6A + cmp r0, #1 + beq _02240FAA + cmp r0, #4 + beq _02240F70 + b _02240FAA +_02240F6A: + add sp, #8 + mov r0, #1 + pop {r4, pc} +_02240F70: + ldr r0, _02240FE8 ; =0x000005F3 + bl FUN_020054C8 + add r1, r4, #0 + add r1, #0x78 + ldrh r1, [r1] + add r0, r4, #0 + sub r1, r1, #1 + bl MOD06_022408F8 + ldr r0, [r4, #0x10] + mov r1, #1 + add r0, #0xac + ldr r0, [r0] + bl FUN_02023B0C + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + add r2, r0, #0 + ldr r0, [r4, #0x64] + add r3, r1, #0 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #0x6b + bl MOD06_02240864 + b _02240FE2 +_02240FAA: + ldr r0, _02240FE8 ; =0x000005F3 + bl FUN_020054C8 + add r1, r4, #0 + add r1, #0x78 + ldrh r1, [r1] + add r0, r4, #0 + sub r1, r1, #1 + bl MOD06_022408F8 + ldr r0, [r4, #0x10] + mov r1, #3 + add r0, #0xac + ldr r0, [r0] + bl FUN_02023B0C + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + add r2, r0, #0 + ldr r0, [r4, #0x64] + mov r3, #3 + bl FUN_0200AD38 + add r0, r4, #0 + mov r1, #0x79 + bl MOD06_02240864 +_02240FE2: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 +_02240FE8: .word 0x000005F3 + + thumb_func_start MOD06_02240FEC +MOD06_02240FEC: ; 0x02240FEC + push {r4, lr} + add r4, r0, #0 + bl FUN_02046528 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4, #0x7c] + cmp r1, #0xb + bls _02241004 + b _0224117A +_02241004: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241010: ; jump table + .short _02241028 - _02241010 - 2 ; case 0 + .short _02241036 - _02241010 - 2 ; case 1 + .short _02241054 - _02241010 - 2 ; case 2 + .short _02241086 - _02241010 - 2 ; case 3 + .short _02241092 - _02241010 - 2 ; case 4 + .short _022410B8 - _02241010 - 2 ; case 5 + .short _022410D2 - _02241010 - 2 ; case 6 + .short _022410F0 - _02241010 - 2 ; case 7 + .short _02241104 - _02241010 - 2 ; case 8 + .short _02241126 - _02241010 - 2 ; case 9 + .short _0224117E - _02241010 - 2 ; case 10 + .short _0224113A - _02241010 - 2 ; case 11 +_02241028: + mov r1, #0x6a + bl MOD06_02240864 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241036: + ldr r0, [r4, #0x74] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + bne _02241046 + b _0224117E +_02241046: + add r0, r4, #0 + bl MOD06_02240924 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241054: + bl MOD06_02240A64 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224106C + ldr r0, [r4, #0x70] + mov r1, #2 + strh r1, [r0] + mov r0, #0xb + str r0, [r4, #0x7c] + b _0224117E +_0224106C: + cmp r0, #2 + bne _0224107C + ldr r0, [r4, #0x70] + mov r1, #3 + strh r1, [r0] + mov r0, #0xb + str r0, [r4, #0x7c] + b _0224117E +_0224107C: + cmp r0, #1 + bne _0224117E + mov r0, #3 + str r0, [r4, #0x7c] + b _0224117E +_02241086: + bl MOD06_02240B04 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241092: + bl MOD06_02240BB8 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _022410A4 + mov r0, #2 + str r0, [r4, #0x7c] + b _0224117E +_022410A4: + cmp r0, #1 + bne _022410AE + mov r0, #5 + str r0, [r4, #0x7c] + b _0224117E +_022410AE: + cmp r0, #2 + bne _0224117E + mov r0, #7 + str r0, [r4, #0x7c] + b _0224117E +_022410B8: + bl MOD06_02240F40 + cmp r0, #0 + beq _022410CC + ldr r0, [r4, #0x70] + mov r1, #1 + strh r1, [r0] + mov r0, #0xb + str r0, [r4, #0x7c] + b _0224117E +_022410CC: + mov r0, #6 + str r0, [r4, #0x7c] + b _0224117E +_022410D2: + ldr r0, [r4, #0x74] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _0224117E + ldr r0, _02241184 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224117E + mov r0, #0 + str r0, [r4, #0x7c] + b _0224117E +_022410F0: + mov r1, #1 + bl MOD06_022408D4 + add r0, r4, #0 + bl MOD06_02240C58 + ldr r0, [r4, #0x7c] + add r0, r0, #1 + str r0, [r4, #0x7c] + b _0224117E +_02241104: + ldr r1, _02241184 ; =0x021C48B8 + ldr r2, [r1, #0x48] + mov r1, #3 + tst r1, r2 + beq _0224117E + bl MOD06_02240F1C + add r0, r4, #0 + mov r1, #0x6a + bl MOD06_02240864 + add r0, r4, #0 + bl MOD06_02240924 + mov r0, #9 + str r0, [r4, #0x7c] + b _0224117E +_02241126: + ldr r0, [r4, #0x74] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_020546C8 + cmp r0, #0 + beq _0224117E + mov r0, #3 + str r0, [r4, #0x7c] + b _0224117E +_0224113A: + bl MOD06_02240A28 + add r0, r4, #0 + mov r1, #0 + bl MOD06_022408D4 + ldr r0, [r4, #0x64] + bl FUN_0200AB18 + ldr r0, [r4, #0x68] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_02021A20 + ldr r0, [r4, #0x18] + bl FUN_02021A20 + ldr r0, [r4, #0x1c] + bl FUN_02021A20 + ldr r0, [r4, #0x20] + bl FUN_02021A20 + ldr r0, [r4, #0x6c] + bl FUN_0206BB74 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_0224117A: + mov r0, #1 + pop {r4, pc} +_0224117E: + mov r0, #0 + pop {r4, pc} + nop +_02241184: .word 0x021C48B8 + + thumb_func_start MOD06_02241188 +MOD06_02241188: ; 0x02241188 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xb + mov r1, #0x84 + bl FUN_020169D8 + mov r1, #0 + mov r2, #0x84 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + str r0, [r4, #0x7c] + str r5, [r4, #0x10] + add r5, #0xac + str r0, [r5] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r4, #0x64] + mov r0, #0 + mov r1, #0x1a + mov r2, #0xcf + mov r3, #4 + bl FUN_0200A86C + str r0, [r4, #0x68] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x14] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x18] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x1c] + mov r0, #0xb4 + mov r1, #4 + bl FUN_020219F4 + str r0, [r4, #0x20] + mov r0, #0xb + bl FUN_0206BB5C + str r0, [r4, #0x6c] + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022411F4 +MOD06_022411F4: ; 0x022411F4 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02046528 + bl MOD06_02241188 + add r2, r0, #0 + ldr r1, _02241210 ; =MOD06_02240FEC + add r0, r5, #0 + str r4, [r2, #0x70] + bl FUN_0204640C + pop {r3, r4, r5, pc} + .align 2, 0 +_02241210: .word MOD06_02240FEC + + thumb_func_start MOD06_02241214 +MOD06_02241214: ; 0x02241214 + asr r1, r0 + mov r0, #1 + and r0, r1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx lr + + thumb_func_start MOD06_02241220 +MOD06_02241220: ; 0x02241220 + mov r2, #1 + ldr r3, [r1] + lsl r2, r0 + add r0, r3, #0 + eor r0, r2 + str r0, [r1] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02241230 +MOD06_02241230: ; 0x02241230 + push {r4, r5, lr} + sub sp, #0x2c + ldr r3, _022412E4 ; =0x0224F7B0 + add r4, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x38] + bl FUN_02055320 + add r5, r0, #0 + ldr r0, [r4, #0x38] + bl FUN_0205532C + add r1, r0, #0 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + add r0, sp, #0x1c + mov r2, #0 + str r0, [sp, #8] + add r0, r5, #0 + add r3, r2, #0 + bl FUN_0204A840 + mov r0, #0 + str r0, [sp] + add r0, sp, #0xc + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0x10 + mov r2, #3 + add r3, sp, #0x1c + bl FUN_0204A94C + cmp r0, #0 + beq _022412E0 + add r0, r4, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #1 + bl FUN_020254A0 + add r5, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + add r2, r0, #0 + mov r0, #0 + str r0, [r2] + ldr r0, [sp, #0xc] + cmp r0, #0xef + bne _022412B4 + ldr r0, [r4, #0x10] + ldr r1, _022412E8 ; =MOD06_0224158C + bl FUN_0204640C + mov r0, #2 + add sp, #0x2c + strb r0, [r5] + pop {r4, r5, pc} +_022412B4: + cmp r0, #0xf0 + bne _022412C8 + ldr r0, [r4, #0x10] + ldr r1, _022412EC ; =MOD06_02241428 + bl FUN_0204640C + mov r0, #1 + add sp, #0x2c + strb r0, [r5] + pop {r4, r5, pc} +_022412C8: + cmp r0, #0xf1 + bne _022412DC + ldr r0, [r4, #0x10] + ldr r1, _022412F0 ; =MOD06_02241348 + bl FUN_0204640C + mov r0, #0 + add sp, #0x2c + strb r0, [r5] + pop {r4, r5, pc} +_022412DC: + bl ErrorHandling +_022412E0: + add sp, #0x2c + pop {r4, r5, pc} + .align 2, 0 +_022412E4: .word 0x0224F7B0 +_022412E8: .word MOD06_0224158C +_022412EC: .word MOD06_02241428 +_022412F0: .word MOD06_02241348 + + thumb_func_start MOD06_022412F4 +MOD06_022412F4: ; 0x022412F4 + push {r4, r5, r6, lr} + add r5, r3, #0 + ldr r4, [sp, #0x10] + bl FUN_0204A6E0 + add r6, r0, #0 + bl FUN_02054890 + cmp r0, #0 + beq _02241312 + cmp r5, #0 + beq _02241342 + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02241312: + add r0, r6, #0 + bl FUN_0205489C + cmp r0, #0 + beq _0224132A + mov r0, #2 + lsl r0, r0, #0x10 + cmp r5, r0 + beq _02241342 + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_0224132A: + add r0, r6, #0 + bl FUN_020548A8 + cmp r0, #0 + beq _02241342 + mov r0, #1 + lsl r0, r0, #0x12 + cmp r5, r0 + beq _02241342 + mov r0, #1 + str r0, [r4] + pop {r4, r5, r6, pc} +_02241342: + mov r0, #0 + str r0, [r4] + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02241348 +MOD06_02241348: ; 0x02241348 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #3 + bhi _0224141E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224136E: ; jump table + .short _02241376 - _0224136E - 2 ; case 0 + .short _02241386 - _0224136E - 2 ; case 1 + .short _022413F8 - _0224136E - 2 ; case 2 + .short _02241414 - _0224136E - 2 ; case 3 +_02241376: + ldr r1, [r4, #0x4c] + mov r0, #0 + bl MOD06_022417C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224141E +_02241386: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl FUN_021DA03C + add r6, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #2 + bl FUN_021DA03C + add r7, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #3 + bl FUN_021DA03C + str r0, [sp] + add r0, r6, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _0224141E + add r0, r7, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _0224141E + ldr r0, [sp] + bl FUN_021DA20C + cmp r0, #0 + beq _0224141E + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #4 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #8] + cmp r0, #0 + bgt _022413EE + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_022413EE: + add r0, r4, #0 + add r1, sp, #4 + bl FUN_021E7EB0 + b _0224141E +_022413F8: + add r4, #0x9c + mov r0, #0 + ldr r2, [r4] + add r1, r0, #0 + bl FUN_021F4594 + ldr r0, _02241424 ; =0x0000065A + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _0224141E +_02241414: + bl FUN_02016A18 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224141E: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241424: .word 0x0000065A + + thumb_func_start MOD06_02241428 +MOD06_02241428: ; 0x02241428 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #5 + bls _02241444 + b _02241580 +_02241444: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241450: ; jump table + .short _0224145C - _02241450 - 2 ; case 0 + .short _0224146C - _02241450 - 2 ; case 1 + .short _022414EC - _02241450 - 2 ; case 2 + .short _02241522 - _02241450 - 2 ; case 3 + .short _02241558 - _02241450 - 2 ; case 4 + .short _02241576 - _02241450 - 2 ; case 5 +_0224145C: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl MOD06_022417C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241580 +_0224146C: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl FUN_021DA03C + add r6, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #2 + bl FUN_021DA03C + add r7, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #3 + bl FUN_021DA03C + str r0, [sp] + add r0, r6, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241580 + add r0, r7, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241580 + ldr r0, [sp] + bl FUN_021DA20C + cmp r0, #0 + beq _02241580 + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r1, r0, #0 + add r0, sp, #0x1c + bl FUN_021E7EA0 + ldr r1, [sp, #0x20] + cmp r1, #0 + bne _022414C6 + mov r0, #2 + str r0, [r5] + b _02241580 +_022414C6: + mov r0, #2 + lsl r0, r0, #0x10 + cmp r1, r0 + bne _022414DA + add r0, r5, #0 + bl FUN_02016A18 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022414DA: + lsl r0, r0, #1 + cmp r1, r0 + bne _022414E6 + mov r0, #3 + str r0, [r5] + b _02241580 +_022414E6: + bl ErrorHandling + b _02241580 +_022414EC: + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #0x10 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #0x14] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #0x14] + cmp r2, r1 + blt _02241518 + lsl r0, r0, #5 + str r0, [sp, #0x14] + mov r0, #4 + str r0, [r5] +_02241518: + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _02241580 +_02241522: + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #4 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #8] + cmp r2, r1 + bgt _0224154E + lsl r0, r0, #5 + str r0, [sp, #8] + mov r0, #4 + str r0, [r5] +_0224154E: + add r0, r4, #0 + add r1, sp, #4 + bl FUN_021E7EB0 + b _02241580 +_02241558: + add r4, #0x9c + mov r1, #2 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #0x10 + bl FUN_021F4594 + ldr r0, _02241588 ; =0x0000065A + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241580 +_02241576: + bl FUN_02016A18 + add sp, #0x28 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241580: + mov r0, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02241588: .word 0x0000065A + + thumb_func_start MOD06_0224158C +MOD06_0224158C: ; 0x0224158C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + bl FUN_02046528 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + add r5, r0, #0 + ldr r1, [r5] + cmp r1, #3 + bhi _02241666 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022415B2: ; jump table + .short _022415BA - _022415B2 - 2 ; case 0 + .short _022415CA - _022415B2 - 2 ; case 1 + .short _0224163E - _022415B2 - 2 ; case 2 + .short _0224165C - _022415B2 - 2 ; case 3 +_022415BA: + ldr r1, [r4, #0x4c] + mov r0, #2 + bl MOD06_022417C8 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241666 +_022415CA: + ldr r1, [r4, #0x4c] + mov r0, #1 + bl FUN_021DA03C + add r6, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #2 + bl FUN_021DA03C + add r7, r0, #0 + ldr r1, [r4, #0x4c] + mov r0, #3 + bl FUN_021DA03C + str r0, [sp] + add r0, r6, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241666 + add r0, r7, #0 + bl FUN_021DA20C + cmp r0, #0 + beq _02241666 + ldr r0, [sp] + bl FUN_021DA20C + cmp r0, #0 + beq _02241666 + add r4, #0xa0 + ldr r0, [r4] + mov r1, #0xf2 + bl FUN_021E7ED8 + add r4, r0, #0 + add r0, sp, #4 + add r1, r4, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #6 + str r2, [sp, #8] + cmp r2, r1 + blt _02241634 + lsl r0, r0, #6 + str r0, [sp, #8] + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] +_02241634: + add r0, r4, #0 + add r1, sp, #4 + bl FUN_021E7EB0 + b _02241666 +_0224163E: + add r4, #0x9c + mov r1, #1 + ldr r2, [r4] + mov r0, #0 + lsl r1, r1, #0x12 + bl FUN_021F4594 + ldr r0, _0224166C ; =0x0000065A + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + b _02241666 +_0224165C: + bl FUN_02016A18 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02241666: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224166C: .word 0x0000065A + + thumb_func_start MOD06_02241670 +MOD06_02241670: ; 0x02241670 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r4, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #1 + bl FUN_020254A0 + add r2, sp, #0x20 + ldr r6, _022417C4 ; =0x0224F780 + add r5, r0, #0 + ldmia r6!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x4c] + mov r2, #0xf2 + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x2c] + bl FUN_021E7FBC + mov r0, #0x26 + str r0, [sp] + mov r0, #0 + add r1, r4, #0 + str r0, [sp, #4] + add r1, #0x9c + ldr r1, [r1] + mov r2, #2 + str r1, [sp, #8] + mov r1, #1 + mov r3, #0x19 + bl FUN_021F44D8 + ldrb r0, [r5] + cmp r0, #0 + beq _022416D4 + cmp r0, #1 + beq _022416DE + cmp r0, #2 + beq _022416EA + b _022416F6 +_022416D4: + mov r5, #0 + mov r6, #1 + add r7, r6, #0 + str r5, [sp, #0xc] + b _02241702 +_022416DE: + mov r5, #2 + mov r6, #1 + lsl r5, r5, #0x10 + mov r7, #0 + str r6, [sp, #0xc] + b _02241702 +_022416EA: + mov r5, #1 + mov r7, #1 + lsl r5, r5, #0x12 + mov r6, #0 + str r7, [sp, #0xc] + b _02241702 +_022416F6: + bl ErrorHandling + mov r5, #0 + mov r6, #1 + add r7, r6, #0 + str r5, [sp, #0xc] +_02241702: + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + mov r1, #0xf2 + bl FUN_021E7ED8 + str r0, [sp, #0x10] + ldr r1, [sp, #0x10] + add r0, sp, #0x14 + bl FUN_021E7EA0 + ldr r0, [sp, #0x10] + add r1, sp, #0x14 + str r5, [sp, #0x18] + bl FUN_021E7EB0 + add r2, r4, #0 + add r2, #0x9c + ldr r2, [r2] + mov r0, #0 + add r1, r5, #0 + bl FUN_021F4594 + ldr r2, [r4, #0x4c] + mov r0, #0xef + mov r1, #0 + bl FUN_021DA080 + add r5, r0, #0 + mov r1, #1 + bl FUN_021DA1A8 + add r0, r5, #0 + add r1, r6, #0 + bl FUN_021DA1A0 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA0DC + add r0, r5, #0 + bl FUN_021DA138 + ldr r2, [r4, #0x4c] + mov r0, #0xf0 + mov r1, #0 + bl FUN_021DA080 + add r5, r0, #0 + mov r1, #2 + bl FUN_021DA1A8 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021DA1A0 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA0DC + add r0, r5, #0 + bl FUN_021DA138 + ldr r2, [r4, #0x4c] + mov r0, #0xf1 + mov r1, #0 + bl FUN_021DA080 + mov r1, #3 + add r4, r0, #0 + bl FUN_021DA1A8 + ldr r1, [sp, #0xc] + add r0, r4, #0 + bl FUN_021DA1A0 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA0DC + add r0, r4, #0 + bl FUN_021DA138 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022417C4: .word 0x0224F780 + + thumb_func_start MOD06_022417C8 +MOD06_022417C8: ; 0x022417C8 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + cmp r0, #2 + bne _022417D8 + mov r6, #1 + mov r4, #2 + mov r5, #3 + b _022417F4 +_022417D8: + cmp r0, #1 + bne _022417E4 + mov r6, #2 + mov r4, #1 + mov r5, #3 + b _022417F4 +_022417E4: + cmp r0, #0 + bne _022417F0 + mov r6, #3 + mov r4, #1 + mov r5, #2 + b _022417F4 +_022417F0: + bl ErrorHandling +_022417F4: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_021DA03C + add r6, r0, #0 + mov r1, #0 + bl FUN_021DA1A0 + add r0, r6, #0 + bl FUN_021DA118 + add r0, r6, #0 + mov r1, #0 + bl FUN_021DA0DC + add r0, r6, #0 + bl FUN_021DA0E0 + add r0, r4, #0 + add r1, r7, #0 + bl FUN_021DA03C + add r4, r0, #0 + mov r1, #1 + bl FUN_021DA1A0 + add r0, r4, #0 + bl FUN_021DA118 + add r0, r4, #0 + mov r1, #0 + bl FUN_021DA0DC + add r0, r4, #0 + bl FUN_021DA0E0 + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021DA03C + add r4, r0, #0 + mov r1, #1 + bl FUN_021DA1A0 + add r0, r4, #0 + bl FUN_021DA118 + add r0, r4, #0 + mov r1, #0 + bl FUN_021DA0DC + add r0, r4, #0 + bl FUN_021DA0E0 + ldr r0, _02241868 ; =0x0000065A + bl FUN_020054C8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02241868: .word 0x0000065A + + thumb_func_start MOD06_0224186C +MOD06_0224186C: ; 0x0224186C + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #2 + bl FUN_020254A0 + add r2, sp, #0x18 + ldr r6, _0224190C ; =0x0224F7A4 + add r4, r0, #0 + ldmia r6!, {r0, r1} + add r3, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #0 + str r0, [sp] + ldr r0, [r5, #0x4c] + ldr r2, _02241910 ; =0x00000102 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + bl FUN_021E7FBC + mov r0, #2 + str r0, [sp] + mov r0, #0 + add r1, r5, #0 + str r0, [sp, #4] + add r1, #0x9c + ldr r1, [r1] + mov r2, #0xd + str r1, [sp, #8] + mov r1, #8 + mov r3, #3 + bl FUN_021F44D8 + ldrb r0, [r4] + cmp r0, #0 + beq _022418CC + cmp r0, #1 + beq _022418D0 + b _022418D6 +_022418CC: + mov r4, #0 + b _022418DC +_022418D0: + mov r4, #0xa + lsl r4, r4, #0x10 + b _022418DC +_022418D6: + bl ErrorHandling + mov r4, #0 +_022418DC: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02241910 ; =0x00000102 + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0xc + add r1, r6, #0 + bl FUN_021E7EA0 + add r0, r6, #0 + add r1, sp, #0xc + str r4, [sp, #0x10] + bl FUN_021E7EB0 + add r5, #0x9c + ldr r2, [r5] + mov r0, #0 + add r1, r4, #0 + bl FUN_021F4594 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224190C: .word 0x0224F7A4 +_02241910: .word 0x00000102 + + thumb_func_start MOD06_02241914 +MOD06_02241914: ; 0x02241914 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + add r6, r0, #0 + mov r0, #0 + str r0, [r6] + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #2 + bl FUN_020254A0 + add r4, r0, #0 + ldr r0, [r5, #0x38] + add r1, sp, #0 + bl FUN_02055350 + ldr r0, [sp, #4] + cmp r0, #0 + ldr r0, [r5, #0x10] + bne _0224195A + ldr r1, _0224196C ; =MOD06_02241974 + add r2, r6, #0 + bl FUN_0204640C + mov r0, #1 + add sp, #0xc + strb r0, [r4] + pop {r3, r4, r5, r6, pc} +_0224195A: + ldr r1, _02241970 ; =MOD06_02241A44 + add r2, r6, #0 + bl FUN_0204640C + mov r0, #0 + strb r0, [r4] + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_0224196C: .word MOD06_02241974 +_02241970: .word MOD06_02241A44 + + thumb_func_start MOD06_02241974 +MOD06_02241974: ; 0x02241974 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _02241A32 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224199A: ; jump table + .short _022419A2 - _0224199A - 2 ; case 0 + .short _022419B8 - _0224199A - 2 ; case 1 + .short _02241A02 - _0224199A - 2 ; case 2 + .short _02241A28 - _0224199A - 2 ; case 3 +_022419A2: + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_02055560 + ldr r0, _02241A38 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241A32 +_022419B8: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02241A3C ; =0x00000102 + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0 + add r1, r6, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + add r1, r1, r0 + mov r0, #0xa + lsl r0, r0, #0x10 + str r1, [sp, #4] + cmp r1, r0 + blt _022419F0 + str r0, [sp, #4] + ldr r0, _02241A38 ; =0x00000611 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022419F0: + ldr r0, [r5, #0x38] + ldr r1, [sp, #4] + bl FUN_02055540 + add r0, r6, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + b _02241A32 +_02241A02: + add r2, r5, #0 + add r2, #0x9c + mov r1, #0xa + ldr r2, [r2] + mov r0, #0 + lsl r1, r1, #0x10 + bl FUN_021F4594 + ldr r0, [r5, #0x38] + mov r1, #1 + bl FUN_0205557C + ldr r0, _02241A40 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241A32 +_02241A28: + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02241A32: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02241A38: .word 0x00000611 +_02241A3C: .word 0x00000102 +_02241A40: .word 0x0000061A + + thumb_func_start MOD06_02241A44 +MOD06_02241A44: ; 0x02241A44 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r1, [r4] + cmp r1, #3 + bhi _02241AFC + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241A6A: ; jump table + .short _02241A72 - _02241A6A - 2 ; case 0 + .short _02241A88 - _02241A6A - 2 ; case 1 + .short _02241ACE - _02241A6A - 2 ; case 2 + .short _02241AF2 - _02241A6A - 2 ; case 3 +_02241A72: + ldr r0, [r5, #0x38] + mov r1, #0 + bl FUN_02055560 + ldr r0, _02241B04 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241AFC +_02241A88: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02241B08 ; =0x00000102 + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0 + add r1, r6, #0 + bl FUN_021E7EA0 + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + cmp r0, #0 + bgt _02241ABC + mov r1, #0 + ldr r0, _02241B04 ; =0x00000611 + str r1, [sp, #4] + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02241ABC: + ldr r0, [r5, #0x38] + ldr r1, [sp, #4] + bl FUN_02055540 + add r0, r6, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + b _02241AFC +_02241ACE: + add r2, r5, #0 + add r2, #0x9c + mov r0, #0 + ldr r2, [r2] + add r1, r0, #0 + bl FUN_021F4594 + ldr r0, [r5, #0x38] + mov r1, #1 + bl FUN_0205557C + ldr r0, _02241B0C ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241AFC +_02241AF2: + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r3, r4, r5, r6, pc} +_02241AFC: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02241B04: .word 0x00000611 +_02241B08: .word 0x00000102 +_02241B0C: .word 0x0000061A + + thumb_func_start MOD06_02241B10 +MOD06_02241B10: ; 0x02241B10 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r1, #0 + add r6, r2, #0 + mov r4, #0 +_02241B1A: + add r1, r5, r4 + ldrb r0, [r1, #0x10] + cmp r6, r0 + bne _02241B36 + ldr r0, [r5] + add r1, #0x28 + add r0, #0xa0 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + add r1, r7, #0 + bl FUN_021E7EC0 +_02241B36: + add r4, r4, #1 + cmp r4, #0x18 + blt _02241B1A + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02241B40 +MOD06_02241B40: ; 0x02241B40 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + add r1, sp, #0 + ldr r0, [r0, #0x38] + bl FUN_02055350 + ldr r1, [sp, #4] + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + ldr r1, [sp] + lsr r2, r0, #0x18 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + ldr r1, [sp, #8] + lsr r3, r0, #0x18 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + mov r0, #0 +_02241B7C: + lsl r1, r0, #1 + add r1, r0, r1 + add r6, r4, r1 + add r6, #0x41 + ldrb r6, [r6] + cmp r2, r6 + bne _02241B9E + add r6, r4, r1 + add r6, #0x40 + ldrb r6, [r6] + cmp r3, r6 + bne _02241B9E + add r1, r4, r1 + add r1, #0x42 + ldrb r1, [r1] + cmp r5, r1 + beq _02241BAA +_02241B9E: + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0x18 + blo _02241B7C + mov r0, #0x18 +_02241BAA: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02241BB0 +MOD06_02241BB0: ; 0x02241BB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #3 + bl FUN_020254A0 + str r0, [sp, #4] + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + mov r1, #0 + str r1, [r0] + str r0, [sp] + add r0, r5, #0 + add r0, #0xe8 + strb r4, [r0] + lsl r0, r4, #2 + ldr r1, [sp, #4] + add r0, r5, r0 + add r0, #0x88 + ldr r7, [r0] + ldr r1, [r1] + add r0, r4, #0 + bl MOD06_02241214 + add r6, r0, #0 + ldr r1, [sp, #4] + add r0, r4, #0 + bl MOD06_02241220 + ldr r0, _02241D64 ; =0x00000127 + cmp r7, r0 + bne _02241C64 + cmp r6, #0 + beq _02241C1E + add r0, r5, #0 + mov r1, #5 + add r0, #0xf0 + str r1, [r0] + ldr r2, _02241D68 ; =0x0224FA84 + lsl r1, r4, #4 + ldrb r0, [r2, r1] + add r3, r2, r1 + lsl r6, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r6, r6, r0 + b _02241C34 +_02241C1E: + add r0, r5, #0 + ldr r2, _02241D6C ; =0x0224FA87 + lsl r1, r4, #4 + mov r6, #4 + add r0, #0xf0 + str r6, [r0] + ldrb r0, [r2, r1] + lsl r6, r6, #0xd + add r3, r2, r1 + lsl r0, r0, #0x10 + add r6, r0, r6 +_02241C34: + add r0, r5, #0 + add r0, #0xec + str r6, [r0] + lsl r0, r4, #1 + add r0, r4, r0 + ldrb r2, [r2, r1] + add r1, r5, r0 + add r1, #0x40 + strb r2, [r1] + add r1, r5, r0 + add r0, r5, r0 + ldrb r2, [r3, #1] + add r1, #0x41 + add r0, #0x42 + strb r2, [r1] + ldrb r1, [r3, #2] + ldr r2, [sp] + strb r1, [r0] + ldr r0, [r5] + ldr r1, _02241D70 ; =MOD06_02241F7C + bl FUN_020463CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02241C64: + sub r0, r0, #1 + cmp r7, r0 + bne _02241CDA + cmp r6, #0 + beq _02241C90 + add r1, r5, #0 + mov r0, #2 + add r1, #0xf0 + str r0, [r1] + ldr r1, _02241D74 ; =0x0224FA86 + lsl r2, r4, #4 + ldrb r1, [r1, r2] + lsl r0, r0, #0xe + ldr r3, _02241D68 ; =0x0224FA84 + lsl r1, r1, #0x10 + add r1, r1, r0 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 + b _02241CB2 +_02241C90: + add r0, r5, #0 + mov r1, #3 + add r0, #0xf0 + str r1, [r0] + ldr r0, _02241D78 ; =0x0224FA89 + lsl r2, r4, #4 + ldrb r0, [r0, r2] + ldr r3, _02241D6C ; =0x0224FA87 + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r1, r1, r0 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 +_02241CB2: + add r0, r3, r2 + ldrb r3, [r3, r2] + add r2, r5, r1 + add r2, #0x40 + strb r3, [r2] + add r2, r5, r1 + ldrb r3, [r0, #1] + add r2, #0x41 + strb r3, [r2] + ldrb r2, [r0, #2] + add r0, r5, r1 + add r0, #0x42 + strb r2, [r0] + ldr r0, [r5] + ldr r1, _02241D7C ; =MOD06_022420CC + ldr r2, [sp] + bl FUN_020463CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02241CDA: + cmp r6, #0 + beq _02241D1E + add r0, r5, #0 + mov r1, #1 + add r0, #0xf0 + str r1, [r0] + ldr r0, _02241D80 ; =0x0224FA85 + lsl r2, r4, #4 + ldrb r0, [r0, r2] + ldr r3, _02241D68 ; =0x0224FA84 + lsl r1, r0, #0x10 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 + ldrb r6, [r3, r2] + add r0, r3, r2 + add r3, r5, r1 + add r3, #0x40 + strb r6, [r3] + add r3, r5, r1 + ldrb r6, [r0, #1] + add r3, #0x41 + strb r6, [r3] + ldrb r3, [r0, #2] + add r0, r5, r1 + add r0, #0x42 + strb r3, [r0] + ldr r0, _02241D84 ; =0x0224FA8A + ldrb r1, [r0, r2] + add r0, r5, r4 + strb r1, [r0, #0x10] + b _02241D54 +_02241D1E: + add r0, r5, #0 + mov r1, #0 + add r0, #0xf0 + str r1, [r0] + ldr r0, _02241D88 ; =0x0224FA88 + lsl r2, r4, #4 + ldrb r0, [r0, r2] + ldr r3, _02241D6C ; =0x0224FA87 + lsl r1, r0, #0x10 + add r0, r5, #0 + add r0, #0xec + str r1, [r0] + lsl r0, r4, #1 + add r1, r4, r0 + add r0, r3, r2 + ldrb r3, [r3, r2] + add r2, r5, r1 + add r2, #0x40 + strb r3, [r2] + add r2, r5, r1 + ldrb r3, [r0, #1] + add r2, #0x41 + strb r3, [r2] + ldrb r2, [r0, #2] + add r0, r5, r1 + add r0, #0x42 + strb r2, [r0] +_02241D54: + ldr r0, [r5] + ldr r1, _02241D8C ; =MOD06_02241E58 + ldr r2, [sp] + bl FUN_020463CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02241D64: .word 0x00000127 +_02241D68: .word 0x0224FA84 +_02241D6C: .word 0x0224FA87 +_02241D70: .word MOD06_02241F7C +_02241D74: .word 0x0224FA86 +_02241D78: .word 0x0224FA89 +_02241D7C: .word MOD06_022420CC +_02241D80: .word 0x0224FA85 +_02241D84: .word 0x0224FA8A +_02241D88: .word 0x0224FA88 +_02241D8C: .word MOD06_02241E58 + + thumb_func_start MOD06_02241D90 +MOD06_02241D90: ; 0x02241D90 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + ldr r1, [r5, #4] + add r0, #0xa0 + lsl r1, r1, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_021E7ED0 + str r0, [sp] + ldr r0, [r5] + ldr r1, [r5, #8] + add r0, #0xa0 + lsl r1, r1, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_021E7ED0 + add r7, r0, #0 + ldr r0, [r5] + ldr r1, [r5, #0xc] + add r0, #0xa0 + lsl r1, r1, #0x18 + ldr r0, [r0] + lsr r1, r1, #0x18 + bl FUN_021E7ED0 + add r6, r0, #0 + mov r0, #1 + lsl r0, r0, #0x10 + cmp r4, r0 + blt _02241DE8 + ldr r0, [sp] + mov r1, #0 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #0 + mov r2, #1 + bl MOD06_02241B10 + b _02241DFA +_02241DE8: + ldr r0, [sp] + mov r1, #1 + bl FUN_021E7EC0 + mov r1, #1 + add r0, r5, #0 + add r2, r1, #0 + bl MOD06_02241B10 +_02241DFA: + mov r0, #0xb + lsl r0, r0, #0x10 + cmp r4, r0 + blt _02241E16 + add r0, r7, #0 + mov r1, #0 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #0 + mov r2, #2 + bl MOD06_02241B10 + b _02241E28 +_02241E16: + add r0, r7, #0 + mov r1, #1 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #1 + mov r2, #2 + bl MOD06_02241B10 +_02241E28: + mov r0, #0x15 + lsl r0, r0, #0x10 + cmp r4, r0 + blt _02241E44 + add r0, r6, #0 + mov r1, #0 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #0 + mov r2, #3 + bl MOD06_02241B10 + pop {r3, r4, r5, r6, r7, pc} +_02241E44: + add r0, r6, #0 + mov r1, #1 + bl FUN_021E7EC0 + add r0, r5, #0 + mov r1, #1 + mov r2, #3 + bl MOD06_02241B10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02241E58 +MOD06_02241E58: ; 0x02241E58 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + ldr r1, [r6, #4] + add r4, r0, #0 + ldr r5, [r1, #0x24] + ldr r1, [r4] + cmp r1, #3 + bhi _02241F68 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241E82: ; jump table + .short _02241E8A - _02241E82 - 2 ; case 0 + .short _02241EA0 - _02241E82 - 2 ; case 1 + .short _02241F48 - _02241E82 - 2 ; case 2 + .short _02241F5E - _02241E82 - 2 ; case 3 +_02241E8A: + ldr r0, [r6, #0x38] + mov r1, #0 + bl FUN_02055560 + ldr r0, _02241F70 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F68 +_02241EA0: + add r1, r5, #0 + add r1, #0xe8 + ldrb r1, [r1] + add r0, r6, #0 + add r0, #0xa0 + add r1, r5, r1 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + add r7, r0, #0 + add r0, sp, #0 + add r1, r7, #0 + bl FUN_021E7EA0 + add r0, r5, #0 + add r0, #0xf0 + ldr r0, [r0] + cmp r0, #0 + bne _02241F00 + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + add r1, r1, r0 + add r0, r5, #0 + str r1, [sp, #4] + add r0, #0xec + ldr r0, [r0] + cmp r1, r0 + blt _02241F2E + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xe8 + ldrb r0, [r0] + ldr r1, _02241F74 ; =0x0224FA8B + lsl r2, r0, #4 + ldrb r1, [r1, r2] + add r0, r5, r0 + strb r1, [r0, #0x10] + ldr r0, _02241F70 ; =0x00000611 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F2E +_02241F00: + cmp r0, #1 + bne _02241F2A + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + sub r1, r1, r0 + add r0, r5, #0 + str r1, [sp, #4] + add r0, #0xec + ldr r0, [r0] + cmp r1, r0 + bgt _02241F2E + str r0, [sp, #4] + ldr r0, _02241F70 ; =0x00000611 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F2E +_02241F2A: + bl ErrorHandling +_02241F2E: + ldr r0, [r6, #0x38] + ldr r1, [sp, #4] + bl FUN_02055540 + add r0, r7, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + ldr r1, [sp, #4] + add r0, r5, #0 + bl MOD06_02241D90 + b _02241F68 +_02241F48: + ldr r0, [r6, #0x38] + mov r1, #1 + bl FUN_0205557C + ldr r0, _02241F78 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02241F68 +_02241F5E: + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02241F68: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02241F70: .word 0x00000611 +_02241F74: .word 0x0224FA8B +_02241F78: .word 0x0000061A + + thumb_func_start MOD06_02241F7C +MOD06_02241F7C: ; 0x02241F7C + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r7, #4] + ldr r5, [r0, #0x24] + ldr r0, [r7, #0x38] + bl FUN_020553A0 + ldr r1, [r4] + add r6, r0, #0 + cmp r1, #4 + bls _02241FA4 + b _022420BC +_02241FA4: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02241FB0: ; jump table + .short _02241FBA - _02241FB0 - 2 ; case 0 + .short _02241FD8 - _02241FB0 - 2 ; case 1 + .short _0224207C - _02241FB0 - 2 ; case 2 + .short _02242092 - _02241FB0 - 2 ; case 3 + .short _022420B0 - _02241FB0 - 2 ; case 4 +_02241FBA: + bl FUN_0205AD98 + cmp r0, #1 + bne _022420BC + add r0, r6, #0 + mov r1, #0x49 + bl FUN_0205ADDC + ldr r0, _022420C4 ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022420BC +_02241FD8: + add r1, r5, #0 + add r1, #0xe8 + ldrb r1, [r1] + add r0, r7, #0 + add r0, #0xa0 + add r1, r5, r1 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + str r0, [sp] + ldr r1, [sp] + add r0, sp, #0x10 + bl FUN_021E7EA0 + ldr r0, [r7, #0x38] + add r1, sp, #4 + bl FUN_02055350 + ldr r0, [sp, #4] + add r1, r5, #0 + str r0, [sp, #0x10] + add r1, #0xf0 + ldr r1, [r1] + cmp r1, #4 + bne _0224203C + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + blt _02242028 + ldr r0, _022420C4 ; =0x00000611 + str r1, [sp, #0x10] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242072 +_02242028: + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02242072 + add r0, r6, #0 + mov r1, #0x17 + bl FUN_0205ADDC + b _02242072 +_0224203C: + cmp r1, #5 + bne _0224206E + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + bgt _0224205A + ldr r0, _022420C4 ; =0x00000611 + str r1, [sp, #0x10] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242072 +_0224205A: + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02242072 + add r0, r6, #0 + mov r1, #0x16 + bl FUN_0205ADDC + b _02242072 +_0224206E: + bl ErrorHandling +_02242072: + ldr r0, [sp] + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _022420BC +_0224207C: + bl FUN_0205AD98 + cmp r0, #1 + bne _02242092 + add r0, r6, #0 + mov r1, #0x4a + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02242092: + add r0, r6, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _022420BC + add r0, r6, #0 + bl FUN_0205AE50 + ldr r0, _022420C8 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022420BC +_022420B0: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022420BC: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_022420C4: .word 0x00000611 +_022420C8: .word 0x0000061A + + thumb_func_start MOD06_022420CC +MOD06_022420CC: ; 0x022420CC + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r6, #4] + ldr r5, [r0, #0x24] + ldr r0, [r6, #0x38] + bl FUN_020553A0 + ldr r1, [r4] + add r7, r0, #0 + cmp r1, #4 + bhi _02242110 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022420FE: ; jump table + .short _02242108 - _022420FE - 2 ; case 0 + .short _02242128 - _022420FE - 2 ; case 1 + .short _022421CC - _022420FE - 2 ; case 2 + .short _022421E4 - _022420FE - 2 ; case 3 + .short _02242208 - _022420FE - 2 ; case 4 +_02242108: + bl FUN_0205AD98 + cmp r0, #1 + beq _02242112 +_02242110: + b _02242214 +_02242112: + add r0, r7, #0 + mov r1, #0x49 + bl FUN_0205ADDC + ldr r0, _0224221C ; =0x00000611 + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242214 +_02242128: + add r1, r5, #0 + add r1, #0xe8 + ldrb r1, [r1] + add r0, r6, #0 + add r0, #0xa0 + add r1, r5, r1 + add r1, #0x28 + ldrb r1, [r1] + ldr r0, [r0] + bl FUN_021E7ED0 + str r0, [sp] + ldr r1, [sp] + add r0, sp, #0x10 + bl FUN_021E7EA0 + ldr r0, [r6, #0x38] + add r1, sp, #4 + bl FUN_02055350 + ldr r0, [sp, #0xc] + add r1, r5, #0 + str r0, [sp, #0x18] + add r1, #0xf0 + ldr r1, [r1] + cmp r1, #3 + bne _0224218C + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + blt _02242178 + ldr r0, _0224221C ; =0x00000611 + str r1, [sp, #0x18] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022421C2 +_02242178: + add r0, r7, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _022421C2 + add r0, r7, #0 + mov r1, #0x15 + bl FUN_0205ADDC + b _022421C2 +_0224218C: + cmp r1, #2 + bne _022421BE + add r5, #0xec + ldr r1, [r5] + cmp r0, r1 + bgt _022421AA + ldr r0, _0224221C ; =0x00000611 + str r1, [sp, #0x18] + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022421C2 +_022421AA: + add r0, r7, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _022421C2 + add r0, r7, #0 + mov r1, #0x14 + bl FUN_0205ADDC + b _022421C2 +_022421BE: + bl ErrorHandling +_022421C2: + ldr r0, [sp] + add r1, sp, #0x10 + bl FUN_021E7EB0 + b _02242214 +_022421CC: + bl FUN_0205AD98 + cmp r0, #1 + bne _02242214 + add r0, r7, #0 + mov r1, #0x4a + bl FUN_0205ADDC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242214 +_022421E4: + ldr r0, [r6, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _02242214 + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, _02242220 ; =0x0000061A + bl FUN_020054C8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _02242214 +_02242208: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02242214: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224221C: .word 0x00000611 +_02242220: .word 0x0000061A + + thumb_func_start MOD06_02242224 +MOD06_02242224: ; 0x02242224 + push {r4, r5, r6, r7, lr} + sub sp, #0x5c + add r6, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #3 + bl FUN_020254A0 + str r0, [sp, #0x10] + mov r0, #4 + mov r1, #0xf4 + bl FUN_02016998 + ldr r1, [r6, #4] + add r2, sp, #0x50 + str r0, [r1, #0x24] + ldr r0, [r6, #4] + ldr r4, _022423EC ; =0x0224F78C + ldr r0, [r0, #0x24] + add r3, r2, #0 + str r0, [sp, #0x14] + str r6, [r0] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + mov r0, #0xa + lsl r0, r0, #0x10 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + mov r2, #0x4b + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + lsl r2, r2, #2 + bl FUN_021E7FBC + ldr r1, [sp, #0x14] + ldr r2, _022423F0 ; =0x0000012D + str r0, [r1, #4] + mov r0, #5 + lsl r0, r0, #0x12 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #0x50 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + ldr r1, [sp, #0x14] + ldr r2, _022423F4 ; =0x0000012E + str r0, [r1, #8] + mov r0, #0x1e + lsl r0, r0, #0x10 + str r0, [sp, #0x54] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #0x50 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + ldr r1, [sp, #0x14] + ldr r4, _022423F8 ; =0x0224FA80 + str r0, [r1, #0xc] + add r0, r1, #0 + mov r7, #0 + add r5, r1, #0 + str r0, [sp, #0xc] +_022422CC: + ldr r1, [sp, #0x10] + lsl r0, r7, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + bl MOD06_02241214 + cmp r0, #0 + beq _02242310 + ldrb r0, [r4, #7] + ldrb r1, [r4, #7] + lsl r0, r0, #0x10 + str r0, [sp, #0x44] + ldrb r0, [r4, #8] + lsl r0, r0, #0x10 + str r0, [sp, #0x48] + ldrb r0, [r4, #9] + lsl r0, r0, #0x10 + str r0, [sp, #0x4c] + add r0, r5, #0 + add r0, #0x40 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #8] + add r0, #0x41 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #9] + add r0, #0x42 + strb r1, [r0] + ldr r0, [sp, #0x14] + ldrb r1, [r4, #0xb] + add r0, r0, r7 + str r0, [sp, #8] + b _02242342 +_02242310: + ldrb r0, [r4, #4] + ldrb r1, [r4, #4] + lsl r0, r0, #0x10 + str r0, [sp, #0x44] + ldrb r0, [r4, #5] + lsl r0, r0, #0x10 + str r0, [sp, #0x48] + ldrb r0, [r4, #6] + lsl r0, r0, #0x10 + str r0, [sp, #0x4c] + add r0, r5, #0 + add r0, #0x40 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #5] + add r0, #0x41 + strb r1, [r0] + add r0, r5, #0 + ldrb r1, [r4, #6] + add r0, #0x42 + strb r1, [r0] + ldr r0, [sp, #0x14] + ldrb r1, [r4, #0xa] + add r0, r0, r7 + str r0, [sp, #8] +_02242342: + strb r1, [r0, #0x10] + mov r0, #2 + ldr r1, [sp, #0x44] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x44] + mov r0, #2 + ldr r1, [sp, #0x4c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x4c] + mov r0, #0 + str r0, [sp] + ldr r0, [r6, #0x4c] + add r3, sp, #0x44 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + ldr r2, [r4] + bl FUN_021E7FBC + ldr r1, [sp, #8] + add r7, r7, #1 + add r1, #0x28 + strb r0, [r1] + ldr r0, [sp, #0xc] + str r1, [sp, #8] + ldr r1, [r4] + add r0, #0x88 + str r1, [r0] + ldr r0, [sp, #0xc] + add r4, #0x10 + add r0, r0, #4 + add r5, r5, #3 + str r0, [sp, #0xc] + cmp r7, #0x18 + blt _022422CC + ldr r0, [r6, #0x38] + add r1, sp, #0x38 + bl FUN_02055350 + ldr r0, [sp, #0x14] + ldr r1, [sp, #0x3c] + bl MOD06_02241D90 + mov r0, #0x19 + ldr r1, _022423FC ; =0x006A4000 + ldr r2, [r6, #0x20] + lsl r0, r0, #0xe + bl FUN_0201EC94 + mov r1, #6 + str r1, [sp] + ldr r0, _02242400 ; =0x000076A0 + sub r1, r1, #7 + str r0, [sp, #4] + ldr r0, [r6, #0x44] + mov r2, #1 + mov r3, #0 + bl FUN_021DBA40 + mov r1, #0 + mov r2, #0 + ldr r0, [r6, #0x44] + mvn r1, r1 + add r3, r2, #0 + bl FUN_021DBA78 + mov r0, #0 + add r1, r0, #0 + add r2, sp, #0x18 +_022423D4: + add r0, r0, #1 + strb r1, [r2] + add r1, r1, #2 + add r2, r2, #1 + cmp r0, #0x20 + blt _022423D4 + ldr r0, [r6, #0x44] + add r1, sp, #0x18 + bl FUN_021DBAA0 + add sp, #0x5c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_022423EC: .word 0x0224F78C +_022423F0: .word 0x0000012D +_022423F4: .word 0x0000012E +_022423F8: .word 0x0224FA80 +_022423FC: .word 0x006A4000 +_02242400: .word 0x000076A0 + + thumb_func_start MOD06_02242404 +MOD06_02242404: ; 0x02242404 + push {r4, lr} + add r4, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + cmp r0, #3 + beq _0224241C + mov r0, #0 + pop {r4, pc} +_0224241C: + ldr r0, [r4, #4] + ldr r4, [r0, #0x24] + cmp r4, #0 + bne _02242428 + mov r0, #0 + pop {r4, pc} +_02242428: + add r0, r4, #0 + bl MOD06_02241B40 + add r1, r0, #0 + cmp r1, #0x18 + beq _0224243E + add r0, r4, #0 + bl MOD06_02241BB0 + mov r0, #1 + pop {r4, pc} +_0224243E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02242444 +MOD06_02242444: ; 0x02242444 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x24] + pop {r4, pc} + + thumb_func_start MOD06_02242458 +MOD06_02242458: ; 0x02242458 + push {r4, r5, r6, lr} + asr r0, r3, #0xf + lsr r0, r0, #0x10 + add r0, r3, r0 + add r4, r1, #0 + asr r0, r0, #0x10 + mov r1, #0xa + add r6, r2, #0 + bl _s32_div_f + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #3 + bls _02242478 + bl ErrorHandling +_02242478: + ldr r1, _02242498 ; =0x0224FC00 + lsl r0, r5, #0xa + add r5, r1, r0 + lsl r0, r6, #5 + add r4, r4, r0 + mov r0, #1 + lsl r0, r0, #0xa + cmp r4, r0 + blt _0224248E + bl ErrorHandling +_0224248E: + ldrb r1, [r5, r4] + ldr r0, [sp, #0x10] + str r1, [r0] + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_02242498: .word 0x0224FC00 + + thumb_func_start MOD06_0224249C +MOD06_0224249C: ; 0x0224249C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #4] + str r0, [sp] + ldr r0, [r0] + add r1, sp, #8 + ldr r0, [r0, #0x38] + bl FUN_02055350 + ldr r1, [sp, #8] + ldr r7, _02242524 ; =0x0224F8B8 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + ldr r1, [sp, #0x10] + lsr r3, r0, #0x18 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r0, r0, #0x10 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + mov r0, #0 +_022424CE: + ldr r1, _02242528 ; =0x0224F834 + lsl r2, r0, #2 + ldr r5, _02242528 ; =0x0224F834 + add r1, r1, r2 + ldrb r2, [r5, r2] + cmp r3, r2 + bne _02242512 + ldrb r2, [r1, #1] + cmp r4, r2 + bne _02242512 + ldrb r5, [r1, #3] + ldrb r1, [r1, #2] + cmp r1, #0 + beq _022424F4 + lsl r1, r5, #3 + add r1, r7, r1 + ldrb r2, [r1, #6] + mov r1, #2 + b _022424FC +_022424F4: + lsl r1, r5, #3 + add r1, r7, r1 + ldrb r2, [r1, #5] + mov r1, #3 +_022424FC: + ldr r6, [sp] + add r6, r6, r5 + ldrb r6, [r6, #0x10] + cmp r2, r6 + bne _02242512 + ldr r2, [sp, #4] + cmp r1, r2 + bne _02242512 + add sp, #0x14 + add r0, r5, #0 + pop {r4, r5, r6, r7, pc} +_02242512: + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #0xf + blo _022424CE + mov r0, #0xf + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02242524: .word 0x0224F8B8 +_02242528: .word 0x0224F834 + + thumb_func_start MOD06_0224252C +MOD06_0224252C: ; 0x0224252C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #4 + bl FUN_020254A0 + add r6, r0, #0 + mov r0, #0xb + mov r1, #4 + bl FUN_020169D8 + mov r1, #0 + str r1, [r0] + strb r4, [r5, #0x1c] + str r0, [sp] + ldr r1, [r6] + add r0, r4, #0 + bl MOD06_02241214 + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD06_02241220 + cmp r7, #0 + beq _02242588 + mov r0, #5 + str r0, [r5, #0x24] + ldr r0, _022425B8 ; =0x0224F8BD + lsl r1, r4, #3 + ldrb r0, [r0, r1] + mov r2, #2 + lsl r2, r2, #0x10 + lsl r3, r0, #0x10 + add r2, r3, r2 + str r2, [r5, #0x20] + add r2, r5, r4 + strb r0, [r2, #0x10] + ldr r0, _022425BC ; =0x0224F918 + add r1, r0, r1 + b _022425A4 +_02242588: + ldr r0, _022425C0 ; =0x0224F8BE + lsl r1, r4, #3 + ldrb r0, [r0, r1] + mov r2, #4 + str r2, [r5, #0x24] + lsl r3, r0, #0x10 + lsl r2, r2, #0xf + add r2, r3, r2 + str r2, [r5, #0x20] + add r2, r5, r4 + strb r0, [r2, #0x10] + ldr r0, _022425BC ; =0x0224F918 + add r0, r0, r1 + add r1, r0, #4 +_022425A4: + lsl r0, r4, #2 + add r0, r5, r0 + str r1, [r0, #0x28] + ldr r0, [r5] + ldr r1, _022425C4 ; =MOD06_02242744 + ldr r2, [sp] + bl FUN_020463CC + pop {r3, r4, r5, r6, r7, pc} + nop +_022425B8: .word 0x0224F8BD +_022425BC: .word 0x0224F918 +_022425C0: .word 0x0224F8BE +_022425C4: .word MOD06_02242744 + + thumb_func_start MOD06_022425C8 +MOD06_022425C8: ; 0x022425C8 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #8] + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #4 + bl FUN_020254A0 + str r0, [sp, #0x10] + mov r0, #4 + mov r1, #0x58 + bl FUN_02016998 + ldr r1, [sp, #8] + ldr r5, _0224268C ; =0x0224F8B8 + ldr r1, [r1, #4] + ldr r7, _02242690 ; =0x0224F918 + str r0, [r1, #0x24] + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r0, [r0, #4] + mov r4, #0 + ldr r0, [r0, #0x24] + str r0, [sp, #0x14] + str r1, [r0] + add r6, r0, #0 +_02242600: + ldr r1, [sp, #0x10] + lsl r0, r4, #0x18 + ldr r1, [r1] + lsr r0, r0, #0x18 + bl MOD06_02241214 + cmp r0, #0 + beq _0224262E + ldrb r0, [r5, #6] + lsl r1, r0, #0x10 + str r1, [sp, #0x18] + ldr r1, _02242694 ; =0xFFFF0000 + str r1, [sp, #0x1c] + ldrb r1, [r5, #4] + lsl r1, r1, #0x10 + str r1, [sp, #0x20] + ldr r1, [sp, #0x14] + add r1, r1, r4 + strb r0, [r1, #0x10] + add r0, r7, #4 + str r1, [sp, #0xc] + str r0, [r6, #0x28] + b _02242648 +_0224262E: + ldrb r0, [r5, #5] + lsl r1, r0, #0x10 + str r1, [sp, #0x18] + ldr r1, _02242694 ; =0xFFFF0000 + str r1, [sp, #0x1c] + ldrb r1, [r5, #4] + lsl r1, r1, #0x10 + str r1, [sp, #0x20] + ldr r1, [sp, #0x14] + add r1, r1, r4 + strb r0, [r1, #0x10] + str r1, [sp, #0xc] + str r7, [r6, #0x28] +_02242648: + mov r0, #2 + ldr r1, [sp, #0x18] + lsl r0, r0, #0x10 + add r0, r1, r0 + str r0, [sp, #0x18] + mov r0, #2 + ldr r1, [sp, #0x20] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #8] + ldr r1, [sp, #8] + ldr r0, [r0, #0x4c] + add r3, sp, #0x18 + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r1, #0x2c] + add r0, #0xa0 + ldr r0, [r0] + ldr r2, [r5] + bl FUN_021E7FBC + ldr r1, [sp, #0xc] + add r4, r4, #1 + strb r0, [r1, #4] + add r5, #8 + add r7, #8 + add r6, r6, #4 + cmp r4, #0xc + blt _02242600 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224268C: .word 0x0224F8B8 +_02242690: .word 0x0224F918 +_02242694: .word 0xFFFF0000 + + thumb_func_start MOD06_02242698 +MOD06_02242698: ; 0x02242698 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x24] + pop {r4, pc} + + thumb_func_start MOD06_022426AC +MOD06_022426AC: ; 0x022426AC + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + bl FUN_020254B4 + cmp r0, #4 + beq _022426C4 + mov r0, #0 + pop {r3, r4, r5, pc} +_022426C4: + ldr r0, [r5, #4] + ldr r4, [r0, #0x24] + cmp r4, #0 + bne _022426D0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022426D0: + ldr r0, [r5, #0x38] + bl FUN_020552F8 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + add r0, r4, #0 + bl MOD06_0224249C + add r1, r0, #0 + cmp r1, #0xf + beq _022426F0 + add r0, r4, #0 + bl MOD06_0224252C + mov r0, #1 + pop {r3, r4, r5, pc} +_022426F0: + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022426F4 +MOD06_022426F4: ; 0x022426F4 + push {r4, r5, r6, r7} + ldr r0, [r0, #4] + ldr r6, _02242740 ; =0x0224F8B8 + ldr r4, [r0, #0x24] + mov ip, r2 + mov r7, #0 +_02242700: + ldrb r2, [r6, #4] + mov r0, ip + cmp r0, r2 + bne _02242730 + ldr r5, [r4, #0x28] + mov r3, #0 +_0224270C: + ldrb r2, [r5, #1] + cmp r2, #0 + beq _02242730 + ldrb r0, [r5] + cmp r0, r1 + bgt _02242728 + add r0, r0, r2 + cmp r1, r0 + bge _02242728 + ldr r1, [sp, #0x10] + mov r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + bx lr +_02242728: + add r3, r3, #1 + add r5, r5, #2 + cmp r3, #2 + blt _0224270C +_02242730: + add r7, r7, #1 + add r6, #8 + add r4, r4, #4 + cmp r7, #0xc + blt _02242700 + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02242740: .word 0x0224F8B8 + + thumb_func_start MOD06_02242744 +MOD06_02242744: ; 0x02242744 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldr r0, [r6, #4] + ldr r5, [r0, #0x24] + ldr r0, [r6, #0x38] + bl FUN_020553A0 + add r7, r0, #0 + ldr r0, [r4] + cmp r0, #3 + bhi _0224283A + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02242776: ; jump table + .short _0224277E - _02242776 - 2 ; case 0 + .short _022427A4 - _02242776 - 2 ; case 1 + .short _02242808 - _02242776 - 2 ; case 2 + .short _0224282E - _02242776 - 2 ; case 3 +_0224277E: + ldr r0, _02242840 ; =0x00000616 + bl FUN_020054C8 + ldr r0, [r5, #0x24] + cmp r0, #4 + bne _02242794 + add r0, r7, #0 + mov r1, #0xf + bl FUN_0205ADDC + b _0224279C +_02242794: + add r0, r7, #0 + mov r1, #0xe + bl FUN_0205ADDC +_0224279C: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224283A +_022427A4: + ldrb r1, [r5, #0x1c] + add r6, #0xa0 + ldr r0, [r6] + add r1, r5, r1 + ldrb r1, [r1, #4] + bl FUN_021E7ED0 + add r6, r0, #0 + add r0, sp, #0 + add r1, r6, #0 + bl FUN_021E7EA0 + ldr r0, [r5, #0x24] + cmp r0, #4 + bne _022427DC + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xc + add r1, r1, r0 + str r1, [sp] + ldr r0, [r5, #0x20] + cmp r1, r0 + blt _022427FE + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022427FE +_022427DC: + cmp r0, #5 + bne _022427FA + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xc + sub r1, r1, r0 + str r1, [sp] + ldr r0, [r5, #0x20] + cmp r1, r0 + bgt _022427FE + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _022427FE +_022427FA: + bl ErrorHandling +_022427FE: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_021E7EB0 + b _0224283A +_02242808: + ldr r0, [r6, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_0205AE28 + cmp r0, #1 + bne _0224283A + add r0, r5, #0 + bl FUN_0205AE50 + ldr r0, _02242840 ; =0x00000616 + mov r1, #0 + bl FUN_020054F0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224283A +_0224282E: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #0xc + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224283A: + mov r0, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02242840: .word 0x00000616 + + thumb_func_start MOD06_02242844 +MOD06_02242844: ; 0x02242844 + push {r3, lr} + cmp r0, #0 + beq _02242854 + cmp r0, #1 + beq _02242858 + cmp r0, #2 + beq _0224285C + b _02242860 +_02242854: + mov r0, #3 + pop {r3, pc} +_02242858: + mov r0, #6 + pop {r3, pc} +_0224285C: + mov r0, #0xd + pop {r3, pc} +_02242860: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02242868 +MOD06_02242868: ; 0x02242868 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5, #7] + add r6, r1, #0 + mov r7, #0 + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + beq _0224287E + cmp r0, #1 + beq _02242882 + b _02242886 +_0224287E: + add r7, r2, #4 + b _0224288A +_02242882: + add r7, r2, #0 + b _0224288A +_02242886: + bl ErrorHandling +_0224288A: + ldrb r0, [r5, #7] + mov r4, #0 + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + cmp r0, #3 + bls _0224289A + bl ErrorHandling +_0224289A: + ldrb r0, [r5, #7] + lsl r0, r0, #0x1e + lsr r0, r0, #0x1e + lsl r0, r0, #0xe + add r0, r4, r0 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + cmp r6, #3 + bls _022428B0 + bl ErrorHandling +_022428B0: + lsl r0, r6, #0x1e + asr r1, r0, #0x10 + ldrb r0, [r5, #7] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1f + bne _022428C4 + add r0, r4, r1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022428D4 +_022428C4: + cmp r0, #1 + bne _022428D0 + sub r0, r4, r1 + lsl r0, r0, #0x10 + asr r4, r0, #0x10 + b _022428D4 +_022428D0: + bl ErrorHandling +_022428D4: + str r4, [r7] + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022428D8 +MOD06_022428D8: ; 0x022428D8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #5 + bl FUN_020254A0 + str r0, [sp, #0xc] + mov r0, #4 + mov r1, #0x1c + bl FUN_02016998 + ldr r1, [r5, #4] + str r0, [r1, #0x24] + ldr r0, [r5, #4] + ldr r0, [r0, #0x24] + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + ldr r1, [r0, #4] + ldr r0, [sp, #0x10] + strb r1, [r0, #0x11] + ldr r0, [sp, #0xc] + ldr r1, [r0] + ldr r0, [sp, #0x10] + strb r1, [r0, #0x13] + ldr r0, [sp, #0xc] + ldr r0, [r0, #4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD06_02242844 + mov r6, #0 + str r0, [sp, #8] + cmp r0, #0 + ble _022429A6 + add r7, r6, #0 +_02242926: + ldr r0, [sp, #0xc] + ldr r0, [r0, #4] + lsl r1, r0, #2 + ldr r0, _022429AC ; =0x0224F798 + ldr r0, [r0, r1] + add r4, r0, r7 + ldrb r0, [r4, #4] + lsl r2, r0, #0x10 + str r2, [sp, #0x20] + ldrb r0, [r4, #5] + lsl r1, r0, #0x10 + str r1, [sp, #0x24] + ldrb r0, [r4, #6] + lsl r3, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r2, r0 + str r0, [sp, #0x20] + mov r0, #2 + lsl r0, r0, #0xe + str r3, [sp, #0x28] + add r0, r3, r0 + str r0, [sp, #0x28] + ldrb r0, [r4, #7] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + cmp r0, #1 + bne _02242966 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x24] +_02242966: + mov r0, #0 + ldr r1, [sp, #0xc] + str r0, [sp, #0x14] + str r0, [sp, #0x18] + str r0, [sp, #0x1c] + ldr r1, [r1] + add r0, r4, #0 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + add r2, sp, #0x14 + bl MOD06_02242868 + add r0, sp, #0x14 + str r0, [sp] + ldr r0, [r5, #0x4c] + add r3, sp, #0x20 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + ldr r2, [r4] + bl FUN_021E7FBC + ldr r1, [sp, #0x10] + add r7, #8 + add r1, r1, r6 + strb r0, [r1, #4] + ldr r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + blt _02242926 +_022429A6: + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_022429AC: .word 0x0224F798 + + thumb_func_start MOD06_022429B0 +MOD06_022429B0: ; 0x022429B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + ldr r0, [r0, #0x24] + bl FUN_02016A18 + ldr r0, [r4, #4] + mov r1, #0 + str r1, [r0, #0x24] + pop {r4, pc} + + thumb_func_start MOD06_022429C4 +MOD06_022429C4: ; 0x022429C4 + push {r4, r5, r6, r7} + ldr r0, [r0, #4] + add r3, r1, #0 + add r1, r2, #0 + ldr r2, [r0, #0x24] + mov r4, #0x14 + ldrb r0, [r2, #0x11] + ldrb r2, [r2, #0x13] + add r5, r0, #0 + mul r5, r4 + ldr r4, _02242A2C ; =0x022522FC + lsl r2, r2, #2 + ldr r6, [r4, r5] + ldr r4, _02242A30 ; =0x02252300 + add r4, r4, r5 + ldr r2, [r2, r4] + mov r5, #0 + mov ip, r2 + lsl r2, r0, #2 + ldr r0, _02242A34 ; =0x0224F774 + cmp r6, #0 + ldr r7, [r0, r2] + ble _02242A26 +_022429F2: + mov r0, ip + ldrb r0, [r0, r5] + lsl r0, r0, #2 + ldrb r2, [r7, r0] + add r4, r7, r0 + cmp r2, r3 + bgt _02242A20 + ldrb r0, [r4, #2] + add r0, r2, r0 + cmp r3, r0 + bge _02242A20 + ldrb r0, [r4, #1] + cmp r0, r1 + bgt _02242A20 + ldrb r2, [r4, #3] + add r0, r0, r2 + cmp r1, r0 + bge _02242A20 + ldr r1, [sp, #0x10] + mov r0, #1 + str r0, [r1] + pop {r4, r5, r6, r7} + bx lr +_02242A20: + add r5, r5, #1 + cmp r5, r6 + blt _022429F2 +_02242A26: + mov r0, #0 + pop {r4, r5, r6, r7} + bx lr + .align 2, 0 +_02242A2C: .word 0x022522FC +_02242A30: .word 0x02252300 +_02242A34: .word 0x0224F774 + + thumb_func_start MOD06_02242A38 +MOD06_02242A38: ; 0x02242A38 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #5 + bl FUN_020254A0 + add r6, r0, #0 + ldr r0, [r7, #4] + mov r1, #4 + ldr r4, [r0, #0x24] + mov r0, #0xb + bl FUN_020169D8 + mov r1, #0 + str r1, [r0] + strh r5, [r4, #0x14] + strh r1, [r4, #0x16] + str r0, [sp] + ldr r0, [r6, #4] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl MOD06_02242844 + strb r0, [r4, #0x12] + ldr r0, [r6] + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + cmp r5, #0 + bne _02242A94 + mov r1, #1 + lsl r1, r1, #0xe + add r0, r0, #1 + strh r1, [r4, #0x18] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + b _02242ACE +_02242A94: + cmp r5, #1 + bne _02242AAA + mov r1, #1 + sub r0, r0, #1 + lsl r1, r1, #0xe + lsl r0, r0, #0x18 + strh r1, [r4, #0x18] + asr r0, r0, #0x18 + bpl _02242ACE + mov r0, #3 + b _02242ACE +_02242AAA: + cmp r5, #2 + bne _02242AC8 + mov r1, #2 + lsl r1, r1, #0xe + add r0, r0, #2 + strh r1, [r4, #0x18] + lsr r2, r0, #0x1f + lsl r1, r0, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + asr r0, r0, #0x18 + b _02242ACE +_02242AC8: + bl ErrorHandling + pop {r3, r4, r5, r6, r7, pc} +_02242ACE: + str r0, [r6] + strb r0, [r4, #0x13] + ldr r0, _02242AE4 ; =0x0000063F + bl FUN_020054C8 + ldr r0, [r7, #0x10] + ldr r1, _02242AE8 ; =MOD06_02242AEC + ldr r2, [sp] + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242AE4: .word 0x0000063F +_02242AE8: .word MOD06_02242AEC + + thumb_func_start MOD06_02242AEC +MOD06_02242AEC: ; 0x02242AEC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + bl FUN_02046528 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0204652C + ldr r1, [sp, #8] + str r0, [sp, #4] + ldr r1, [r1, #4] + ldr r4, [r1, #0x24] + add r1, r0, #0 + ldr r1, [r1] + cmp r1, #0 + beq _02242B14 + cmp r1, #1 + beq _02242BCC + b _02242BD6 +_02242B14: + ldrh r2, [r4, #0x18] + mov r0, #1 + ldrh r1, [r4, #0x16] + lsl r0, r0, #0xa + str r0, [sp] + add r0, r1, r0 + cmp r0, r2 + ble _02242B2C + sub r0, r0, r2 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] +_02242B2C: + ldrh r1, [r4, #0x16] + ldr r0, [sp] + add r0, r1, r0 + strh r0, [r4, #0x16] + ldrh r0, [r4, #0x14] + cmp r0, #1 + bne _02242B44 + ldr r0, [sp] + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp] +_02242B44: + ldrb r0, [r4, #0x12] + mov r5, #0 + cmp r0, #0 + bls _02242BB8 + ldr r0, [sp] + neg r0, r0 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [sp, #0xc] +_02242B56: + ldr r0, [sp, #8] + add r1, r4, r5 + add r0, #0xa0 + ldrb r1, [r1, #4] + ldr r0, [r0] + bl FUN_021E7ED0 + bl FUN_021E7E9C + ldrb r1, [r4, #0x11] + lsl r2, r1, #2 + ldr r1, _02242BDC ; =0x0224F798 + ldr r2, [r1, r2] + lsl r1, r5, #3 + add r1, r2, r1 + ldrb r2, [r1, #7] + lsl r2, r2, #0x1d + lsr r2, r2, #0x1f + cmp r2, #1 + bne _02242B82 + ldr r7, [sp, #0xc] + b _02242B84 +_02242B82: + ldr r7, [sp] +_02242B84: + ldrb r1, [r1, #7] + lsl r1, r1, #0x1c + lsr r1, r1, #0x1f + beq _02242B92 + cmp r1, #1 + beq _02242B96 + b _02242B9A +_02242B92: + add r6, r0, #4 + b _02242B9E +_02242B96: + add r6, r0, #0 + b _02242B9E +_02242B9A: + bl ErrorHandling +_02242B9E: + ldr r0, [r6] + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + add r0, r0, r7 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + str r0, [r6] + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, #0x12] + cmp r5, r0 + blo _02242B56 +_02242BB8: + ldrh r1, [r4, #0x16] + ldrh r0, [r4, #0x18] + cmp r1, r0 + blo _02242BD6 + ldr r0, [sp, #4] + ldr r0, [r0] + add r1, r0, #1 + ldr r0, [sp, #4] + str r1, [r0] + b _02242BD6 +_02242BCC: + bl FUN_02016A18 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02242BD6: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242BDC: .word 0x0224F798 + + thumb_func_start MOD06_02242BE0 +MOD06_02242BE0: ; 0x02242BE0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r2, [sp] + add r5, r0, #0 + add r6, r1, #0 + str r3, [sp, #4] + bl FUN_02046528 + add r7, r0, #0 + ldr r0, _02242C70 ; =0x0000067C + bl FUN_020054C8 + mov r1, #0x11 + mov r0, #4 + lsl r1, r1, #4 + bl FUN_02016998 + add r4, r0, #0 + bne _02242C0E + bl ErrorHandling + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_02242C0E: + mov r2, #0x11 + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + add r2, sp, #0x10 + ldrb r2, [r2, #0x10] + ldr r3, [sp, #0x24] + add r0, r7, #0 + add r1, r4, #0 + bl MOD06_02242C78 + ldr r0, [r4] + add r1, r4, #0 + ldr r0, [r0, #8] + add r1, #0x14 + mov r2, #3 + bl FUN_020545B8 + ldr r0, [r4] + ldr r0, [r0, #0xc] + bl LoadPlayerDataAddress + add r1, r0, #0 + add r0, r4, #0 + add r0, #0x14 + bl FUN_02054608 + add r0, r4, #0 + mov r1, #0xa + mov r2, #0 + bl MOD06_02243080 + add r0, r4, #0 + bl MOD06_022430E0 + ldr r2, [sp] + ldr r3, [sp, #4] + add r0, r4, #0 + add r1, r6, #0 + bl MOD06_02242CDC + ldr r1, _02242C74 ; =MOD06_02242EC0 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02242C70: .word 0x0000067C +_02242C74: .word MOD06_02242EC0 + + thumb_func_start MOD06_02242C78 +MOD06_02242C78: ; 0x02242C78 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r4, r0, #0 + add r5, r1, #0 + ldr r2, _02242CD8 ; =0x00000141 + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [r5, #0x54] + mov r0, #4 + bl FUN_0200AA80 + str r0, [r5, #0x58] + add r0, r5, #0 + str r4, [r5] + add r0, #0x5d + strb r6, [r0] + add r0, r5, #0 + mov r1, #0 + add r0, #0x5e + strb r1, [r0] + add r2, r5, #0 + add r4, r1, #0 +_02242CAA: + add r0, r2, #0 + add r0, #0x90 + str r4, [r0] + add r0, r2, #0 + add r0, #0x94 + add r1, r1, #1 + add r2, #8 + str r4, [r0] + cmp r1, #0x10 + blt _02242CAA + mov r6, #0x40 + mov r7, #4 +_02242CC2: + add r0, r6, #0 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [r5, #0x24] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _02242CC2 + pop {r3, r4, r5, r6, r7, pc} + nop +_02242CD8: .word 0x00000141 + + thumb_func_start MOD06_02242CDC +MOD06_02242CDC: ; 0x02242CDC + push {r3, r4, r5, r6, lr} + sub sp, #0x14 + add r4, r0, #0 + str r2, [sp] + mov r0, #0x14 + str r0, [sp, #4] + mov r0, #0xe + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + ldr r0, [r4] + add r6, r1, #0 + add r5, r3, #0 + ldr r0, [r0, #8] + add r1, r4, #4 + mov r2, #3 + add r3, r6, #0 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r0, #4 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, _02242D44 ; =0x000003D9 + ldr r0, [r0, #8] + mov r1, #3 + mov r3, #0xb + bl FUN_0200CB00 + ldr r2, _02242D44 ; =0x000003D9 + add r0, r4, #4 + mov r1, #1 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD06_02242DA8 + add r0, r4, #0 + add r0, #0x68 + mov r1, #0 + add r2, r5, #0 + mov r3, #4 + bl FUN_020010A8 + add r4, #0x88 + str r0, [r4] + add sp, #0x14 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02242D44: .word 0x000003D9 + + thumb_func_start MOD06_02242D48 +MOD06_02242D48: ; 0x02242D48 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r2, #0 + add r2, r5, #0 + add r2, #0x5e + ldrb r2, [r2] + ldr r0, [r5, #0x54] + lsl r2, r2, #2 + add r2, r5, r2 + ldr r2, [r2, #0x24] + bl FUN_0200A8E0 + add r0, r5, #0 + add r0, #0x5e + ldrb r2, [r0] + lsl r0, r2, #2 + add r0, r5, r0 + ldr r1, [r0, #0x24] + lsl r0, r2, #3 + add r0, r5, r0 + add r0, #0x90 + str r1, [r0] + cmp r4, #0xfa + bne _02242D8C + add r0, r5, #0 + add r0, #0x5e + ldrb r0, [r0] + mov r1, #2 + mvn r1, r1 + lsl r0, r0, #3 + add r0, r5, r0 + add r0, #0x94 + str r1, [r0] + b _02242D9A +_02242D8C: + add r0, r5, #0 + add r0, #0x5e + ldrb r0, [r0] + lsl r0, r0, #3 + add r0, r5, r0 + add r0, #0x94 + str r4, [r0] +_02242D9A: + add r0, r5, #0 + add r0, #0x5e + ldrb r0, [r0] + add r5, #0x5e + add r0, r0, #1 + strb r0, [r5] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02242DA8 +MOD06_02242DA8: ; 0x02242DA8 + push {r3, r4} + add r1, r0, #0 + add r1, #0x90 + str r1, [r0, #0x68] + mov r1, #0 + ldr r2, _02242E8C ; =MOD06_02242E9C + str r1, [r0, #0x6c] + str r2, [r0, #0x70] + add r2, r0, #4 + str r2, [r0, #0x74] + add r2, r0, #0 + add r2, #0x5e + ldrb r3, [r2] + add r2, r0, #0 + add r2, #0x78 + strh r3, [r2] + add r2, r0, #0 + mov r3, #6 + add r2, #0x7a + strh r3, [r2] + add r2, r0, #0 + mov r3, #1 + add r2, #0x7c + strb r3, [r2] + add r2, r0, #0 + mov r3, #0xc + add r2, #0x7d + strb r3, [r2] + add r2, r0, #0 + add r2, #0x7e + strb r1, [r2] + add r1, r0, #0 + add r1, #0x7f + ldrb r3, [r1] + mov r1, #0xf + mov r2, #8 + bic r3, r1 + orr r3, r2 + add r2, r0, #0 + add r2, #0x7f + strb r3, [r2] + add r2, r0, #0 + add r2, #0x7f + ldrb r4, [r2] + mov r2, #0xf0 + mov r3, #0x10 + bic r4, r2 + orr r4, r3 + add r3, r0, #0 + add r3, #0x7f + strb r4, [r3] + add r3, r0, #0 + add r3, #0x80 + ldrb r3, [r3] + bic r3, r1 + mov r1, #0xf + orr r3, r1 + add r1, r0, #0 + add r1, #0x80 + strb r3, [r1] + add r1, r0, #0 + add r1, #0x80 + ldrb r3, [r1] + mov r1, #0x20 + bic r3, r2 + add r2, r3, #0 + orr r2, r1 + add r1, r0, #0 + add r1, #0x80 + strb r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + mov r1, #7 + bic r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + mov r1, #0x78 + bic r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + ldr r1, _02242E90 ; =0xFFFFFE7F + and r2, r1 + mov r1, #0x80 + orr r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + ldr r1, _02242E94 ; =0xFFFF81FF + and r2, r1 + add r1, r0, #0 + add r1, #0x82 + strh r2, [r1] + add r1, r0, #0 + add r1, #0x82 + ldrh r2, [r1] + ldr r1, _02242E98 ; =0xFFFF7FFF + add r0, #0x82 + and r1, r2 + strh r1, [r0] + pop {r3, r4} + bx lr + nop +_02242E8C: .word MOD06_02242E9C +_02242E90: .word 0xFFFFFE7F +_02242E94: .word 0xFFFF81FF +_02242E98: .word 0xFFFF7FFF + + thumb_func_start MOD06_02242E9C +MOD06_02242E9C: ; 0x02242E9C + push {r3, lr} + mov r2, #2 + mvn r2, r2 + cmp r1, r2 + bne _02242EB2 + mov r1, #3 + mov r2, #0xf + mov r3, #4 + bl FUN_020013E8 + pop {r3, pc} +_02242EB2: + mov r1, #1 + mov r2, #0xf + mov r3, #2 + bl FUN_020013E8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02242EC0 +MOD06_02242EC0: ; 0x02242EC0 + push {r4, lr} + bl FUN_0204652C + add r4, r0, #0 + add r1, r4, #0 + add r1, #0x5c + ldrb r1, [r1] + cmp r1, #4 + bhi _02242F0E + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02242EDE: ; jump table + .short _02242EE8 - _02242EDE - 2 ; case 0 + .short _02242EEE - _02242EDE - 2 ; case 1 + .short _02242EF4 - _02242EDE - 2 ; case 2 + .short _02242EFA - _02242EDE - 2 ; case 3 + .short _02242F00 - _02242EDE - 2 ; case 4 +_02242EE8: + bl MOD06_02242F1C + b _02242F0E +_02242EEE: + bl MOD06_02242F54 + b _02242F0E +_02242EF4: + bl MOD06_02242FEC + b _02242F0E +_02242EFA: + bl MOD06_02243018 + b _02242F0E +_02242F00: + bl MOD06_02243024 + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r4, pc} +_02242F0E: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02242F14 +MOD06_02242F14: ; 0x02242F14 + add r0, #0x5c + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02242F1C +MOD06_02242F1C: ; 0x02242F1C + push {r4, lr} + add r4, r0, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02001204 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02242F38 + add r1, r1, #1 + cmp r0, r1 + beq _02242F50 + b _02242F42 +_02242F38: + add r0, r4, #0 + mov r1, #4 + bl MOD06_02242F14 + pop {r4, pc} +_02242F42: + add r1, r4, #0 + add r1, #0x60 + strh r0, [r1] + add r0, r4, #0 + mov r1, #1 + bl MOD06_02242F14 +_02242F50: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02242F54 +MOD06_02242F54: ; 0x02242F54 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, _02242FE0 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #4 + tst r0, r1 + beq _02242F6E + mov r0, #1 + add r4, #0x5f + add sp, #4 + strb r0, [r4] + pop {r3, r4, pc} +_02242F6E: + add r0, r4, #0 + add r0, #0x88 + ldr r0, [r0] + bl FUN_02001204 + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _02242F88 + add r1, r1, #1 + cmp r0, r1 + beq _02242FDC + b _02242FA6 +_02242F88: + add r0, r4, #0 + add r0, #0x5f + ldrb r0, [r0] + cmp r0, #1 + bne _02242F9A + add r0, r4, #0 + mov r1, #0 + add r0, #0x5f + strb r1, [r0] +_02242F9A: + add r0, r4, #0 + mov r1, #0 + bl MOD06_02242F14 + add sp, #4 + pop {r3, r4, pc} +_02242FA6: + add r1, r4, #0 + add r1, #0x5f + ldrb r1, [r1] + cmp r1, #1 + bne _02242FDC + add r1, r4, #0 + add r1, #0x60 + strh r0, [r1] + mov r0, #4 + str r0, [sp] + ldr r0, [r4] + ldr r1, _02242FE4 ; =0x02250C40 + ldr r0, [r0, #8] + ldr r2, _02242FE8 ; =0x000003D9 + mov r3, #0xb + bl FUN_02002198 + str r0, [r4, #0x64] + add r0, r4, #0 + mov r1, #0x24 + mov r2, #0 + bl MOD06_02243080 + add r0, r4, #0 + mov r1, #2 + bl MOD06_02242F14 +_02242FDC: + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_02242FE0: .word 0x021C48B8 +_02242FE4: .word 0x02250C40 +_02242FE8: .word 0x000003D9 + + thumb_func_start MOD06_02242FEC +MOD06_02242FEC: ; 0x02242FEC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x64] + mov r1, #4 + bl FUN_020021AC + cmp r0, #0 + bne _02243006 + add r0, r4, #0 + mov r1, #3 + bl MOD06_02242F14 + pop {r4, pc} +_02243006: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + bne _02243016 + add r0, r4, #0 + mov r1, #1 + bl MOD06_02242F14 +_02243016: + pop {r4, pc} + + thumb_func_start MOD06_02243018 +MOD06_02243018: ; 0x02243018 + ldr r3, _02243020 ; =MOD06_02242F14 + mov r1, #1 + bx r3 + nop +_02243020: .word MOD06_02242F14 + + thumb_func_start MOD06_02243024 +MOD06_02243024: ; 0x02243024 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, _0224307C ; =0x000005DC + bl FUN_020054C8 + add r0, r6, #0 + add r0, #0x14 + mov r1, #0 + bl FUN_0200D0E0 + add r0, r6, #0 + add r0, #0x14 + bl FUN_02019178 + add r0, r6, #0 + add r0, #0x88 + mov r1, #0 + ldr r0, [r0] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r6, #0x74] + mov r1, #0 + bl FUN_0200CCF8 + add r0, r6, #4 + bl FUN_02019178 + mov r4, #0 + add r5, r6, #0 +_02243060: + ldr r0, [r5, #0x24] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xc + blt _02243060 + ldr r0, [r6, #0x58] + bl FUN_0200AB18 + ldr r0, [r6, #0x54] + bl FUN_0200A8B8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224307C: .word 0x000005DC + + thumb_func_start MOD06_02243080 +MOD06_02243080: ; 0x02243080 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + str r1, [sp, #0xc] + mov r0, #0x40 + mov r1, #4 + add r7, r2, #0 + bl FUN_020219F4 + add r4, r0, #0 + mov r0, #0x40 + mov r1, #4 + bl FUN_020219F4 + add r6, r0, #0 + add r0, r5, #0 + add r0, #0x14 + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #0x54] + ldr r1, [sp, #0xc] + add r2, r4, #0 + bl FUN_0200A8E0 + ldr r0, [r5, #0x58] + add r1, r6, #0 + add r2, r4, #0 + bl FUN_0200B7B8 + mov r3, #0 + str r3, [sp] + add r5, #0x14 + str r7, [sp, #4] + add r0, r5, #0 + mov r1, #1 + add r2, r6, #0 + str r3, [sp, #8] + bl FUN_0201BD84 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022430E0 +MOD06_022430E0: ; 0x022430E0 + push {r4, lr} + add r4, r0, #0 + mov r1, #6 + mov r2, #0 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #7 + mov r2, #1 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #9 + mov r2, #2 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #9 + mov r2, #3 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #9 + mov r2, #4 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #0x14 + mov r2, #5 + bl MOD06_02242D48 + add r0, r4, #0 + mov r1, #0xb + mov r2, #6 + bl MOD06_02242D48 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224312C +MOD06_0224312C: ; 0x0224312C + cmp r0, #5 + bhi _02243154 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224313C: ; jump table + .short _02243148 - _0224313C - 2 ; case 0 + .short _0224314C - _0224313C - 2 ; case 1 + .short _02243150 - _0224313C - 2 ; case 2 + .short _02243150 - _0224313C - 2 ; case 3 + .short _02243148 - _0224313C - 2 ; case 4 + .short _02243148 - _0224313C - 2 ; case 5 +_02243148: + mov r0, #3 + bx lr +_0224314C: + mov r0, #4 + bx lr +_02243150: + mov r0, #2 + bx lr +_02243154: + mov r0, #0 + bx lr + + thumb_func_start MOD06_02243158 +MOD06_02243158: ; 0x02243158 + push {r4, r5} + mov r5, #0 + cmp r3, #0 + ble _0224317E +_02243160: + ldrh r4, [r0] + cmp r1, r4 + bne _02243176 + cmp r2, #0 + beq _02243176 + ldrh r4, [r0, #2] + cmp r2, r4 + bne _02243176 + mov r0, #1 + pop {r4, r5} + bx lr +_02243176: + add r5, r5, #1 + add r0, r0, #4 + cmp r5, r3 + blt _02243160 +_0224317E: + mov r0, #0 + pop {r4, r5} + bx lr + + thumb_func_start MOD06_02243184 +MOD06_02243184: ; 0x02243184 + push {r3, r4, r5, r6, r7, lr} + add r5, r1, #0 + mov lr, r0 + sub r0, r5, #1 + mov r7, #0 + mov ip, r0 + cmp r0, #0 + ble _022431D0 + mov r3, lr +_02243196: + add r2, r7, #1 + cmp r2, r5 + bge _022431C6 + ldrh r6, [r3] + lsl r1, r2, #2 + mov r0, lr + add r4, r0, r1 +_022431A4: + ldrh r0, [r4] + cmp r6, r0 + bne _022431AE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022431AE: + ldrh r1, [r3, #2] + cmp r1, #0 + beq _022431BE + ldrh r0, [r4, #2] + cmp r1, r0 + bne _022431BE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022431BE: + add r2, r2, #1 + add r4, r4, #4 + cmp r2, r5 + blt _022431A4 +_022431C6: + add r7, r7, #1 + mov r0, ip + add r3, r3, #4 + cmp r7, r0 + blt _02243196 +_022431D0: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022431D4 +MOD06_022431D4: ; 0x022431D4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r0, [sp] + add r7, r1, #0 + add r6, r2, #0 + add r0, sp, #0x20 + mov r1, #0 + mov r2, #0x10 + str r3, [sp, #4] + bl MI_CpuFill8 + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, [sp, #4] + cmp r0, #0 + ble _022432DC + ldr r0, [sp] + str r0, [sp, #0x10] +_022431F8: + ldr r0, [sp, #0x10] + ldrh r1, [r0] + add r0, sp, #0x20 + strh r1, [r0] + ldr r0, [sp, #0x10] + ldrh r1, [r0, #2] + add r0, sp, #0x20 + strh r1, [r0, #2] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r6 + bge _022432CA + lsl r1, r0, #2 + ldr r0, [sp] + add r0, r0, r1 + str r0, [sp, #0xc] +_0224321A: + ldr r0, [sp, #0xc] + cmp r7, #2 + ldrh r1, [r0] + add r0, sp, #0x20 + strh r1, [r0, #4] + ldr r0, [sp, #0xc] + ldrh r1, [r0, #2] + add r0, sp, #0x20 + strh r1, [r0, #6] + bne _02243240 + add r0, sp, #0x20 + add r1, r7, #0 + bl MOD06_02243184 + cmp r0, #0 + beq _022432BA + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02243240: + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + bge _022432BA + lsl r1, r0, #2 + ldr r0, [sp] + add r0, r0, r1 + str r0, [sp, #8] +_02243252: + ldr r0, [sp, #8] + cmp r7, #3 + ldrh r1, [r0] + add r0, sp, #0x20 + strh r1, [r0, #8] + ldr r0, [sp, #8] + ldrh r1, [r0, #2] + add r0, sp, #0x20 + strh r1, [r0, #0xa] + bne _02243278 + add r0, sp, #0x20 + add r1, r7, #0 + bl MOD06_02243184 + cmp r0, #0 + beq _022432AA + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02243278: + ldr r0, [sp, #0x14] + add r4, r0, #1 + cmp r4, r6 + bge _022432AA + ldr r0, [sp] + lsl r1, r4, #2 + add r5, r0, r1 +_02243286: + ldrh r1, [r5] + add r0, sp, #0x20 + strh r1, [r0, #0xc] + ldrh r1, [r5, #2] + strh r1, [r0, #0xe] + add r0, sp, #0x20 + add r1, r7, #0 + bl MOD06_02243184 + cmp r0, #0 + beq _022432A2 + add sp, #0x30 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_022432A2: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, r6 + blt _02243286 +_022432AA: + ldr r0, [sp, #8] + add r0, r0, #4 + str r0, [sp, #8] + ldr r0, [sp, #0x14] + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, r6 + blt _02243252 +_022432BA: + ldr r0, [sp, #0xc] + add r0, r0, #4 + str r0, [sp, #0xc] + ldr r0, [sp, #0x18] + add r0, r0, #1 + str r0, [sp, #0x18] + cmp r0, r6 + blt _0224321A +_022432CA: + ldr r0, [sp, #0x10] + add r0, r0, #4 + str r0, [sp, #0x10] + ldr r0, [sp, #0x1c] + add r1, r0, #1 + ldr r0, [sp, #4] + str r1, [sp, #0x1c] + cmp r1, r0 + blt _022431F8 +_022432DC: + mov r0, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022432E4 +MOD06_022432E4: ; 0x022432E4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp] + add r0, r1, #0 + bl FUN_0206BB1C + str r0, [sp, #4] + bl FUN_0206B9AC + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + str r1, [sp, #8] + ldr r0, [sp] + cmp r1, r0 + bge _02243308 + add sp, #0x28 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02243308: + ldr r0, [sp, #8] + mov r7, #0 + add r4, r7, #0 + cmp r0, #0 + bls _0224337A +_02243312: + ldr r0, [sp, #4] + add r1, r7, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + str r0, [sp, #0xc] + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [sp, #0xc] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + ldr r0, [sp, #0xc] + mov r1, #0x4c + mov r2, #0 + bl FUN_020671BC + cmp r0, #0 + bne _0224336E + add r0, r5, #0 + bl FUN_0206A964 + cmp r0, #1 + beq _0224336E + add r0, sp, #0x10 + add r1, r5, #0 + add r2, r6, #0 + add r3, r4, #0 + bl MOD06_02243158 + cmp r0, #1 + beq _0224336E + lsl r1, r4, #2 + add r0, sp, #0x10 + add r2, r0, r1 + strh r5, [r0, r1] + add r0, r4, #1 + lsl r0, r0, #0x18 + strh r6, [r2, #2] + lsr r4, r0, #0x18 +_0224336E: + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + ldr r0, [sp, #8] + cmp r7, r0 + blo _02243312 +_0224337A: + ldr r0, [sp] + cmp r4, r0 + bge _02243386 + add sp, #0x28 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02243386: + ldr r1, [sp] + add r0, sp, #0x10 + add r3, r1, #0 + sub r3, r4, r3 + add r2, r4, #0 + add r3, r3, #1 + bl MOD06_022431D4 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224339C +MOD06_0224339C: ; 0x0224339C + ldr r3, _022433A4 ; =0x020CD3B4 + mov r0, #0 + bx r3 + nop +_022433A4: .word 0x020CD3B4 + + thumb_func_start MOD06_022433A8 +MOD06_022433A8: ; 0x022433A8 + ldr r3, _022433AC ; =0x0202A1E5 + bx r3 + .align 2, 0 +_022433AC: .word 0x0202A1E5 + + thumb_func_start MOD06_022433B0 +MOD06_022433B0: ; 0x022433B0 + ldr r3, _022433B4 ; =0x0202A399 + bx r3 + .align 2, 0 +_022433B4: .word 0x0202A399 + + thumb_func_start MOD06_022433B8 +MOD06_022433B8: ; 0x022433B8 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_02034E30 + bl FUN_02034DD0 + add r4, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_0205532C + add r6, r0, #0 + ldr r0, [r5, #0x38] + bl FUN_02055320 + ldr r1, [r5, #0x1c] + ldr r1, [r1] + str r1, [r4] + mov r1, #0 + mvn r1, r1 + str r1, [r4, #4] + str r0, [r4, #8] + str r6, [r4, #0xc] + mov r0, #0 + str r0, [r4, #0x10] + ldr r0, [r5, #0xc] + bl FUN_020462AC + bl FUN_0205F154 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022433F8 +MOD06_022433F8: ; 0x022433F8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205F164 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02243408 +MOD06_02243408: ; 0x02243408 + push {r4, lr} + add r4, r1, #0 + cmp r4, #5 + bne _02243414 + mov r0, #0 + pop {r4, pc} +_02243414: + bl FUN_02029FC8 + lsl r1, r4, #1 + add r1, #0x36 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02243428 +MOD06_02243428: ; 0x02243428 + push {r4, lr} + add r4, r1, #0 + bl FUN_0202A8D8 + cmp r4, #0 + bne _0224343E + mov r1, #5 + mov r2, #2 + bl FUN_0202A578 + pop {r4, pc} +_0224343E: + mov r1, #5 + mov r2, #1 + bl FUN_0202A578 + pop {r4, pc} + + thumb_func_start MOD06_02243448 +MOD06_02243448: ; 0x02243448 + push {r3, lr} + bl FUN_0202A8D8 + mov r1, #5 + mov r2, #0 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_0224345C +MOD06_0224345C: ; 0x0224345C + push {r4, r5, r6, lr} + add r5, r0, #0 + bl FUN_0202A8CC + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0202A8D8 + mov r1, #0 + add r6, r0, #0 + add r0, r4, #0 + add r2, r1, #0 + bl FUN_0202A240 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + bne _02243484 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_02243484: + add r1, r4, #0 + add r1, #8 + lsl r1, r1, #0x10 + add r0, r6, #0 + lsr r1, r1, #0x10 + mov r2, #2 + bl FUN_0202A578 + add r0, r6, #0 + add r1, r4, #0 + mov r2, #2 + bl FUN_0202A538 + cmp r4, #4 + beq _022434A8 + add r0, r5, #0 + bl FUN_020600A0 +_022434A8: + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_022434AC +MOD06_022434AC: ; 0x022434AC + push {r3, lr} + bl FUN_0202A8E4 + bl FUN_0202A744 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_022434BC +MOD06_022434BC: ; 0x022434BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _022434CA + bl ErrorHandling +_022434CA: + mov r0, #0 + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_022434D0 +MOD06_022434D0: ; 0x022434D0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + mov r2, #1 + add r6, r0, #0 + add r5, r1, #0 + mov r0, #3 + mov r1, #0x3b + lsl r2, r2, #0xe + bl FUN_02016828 + ldr r1, _02243684 ; =0x000008CC + mov r0, #0x3b + bl FUN_02016998 + ldr r2, _02243684 ; =0x000008CC + mov r1, #0 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0x3b + str r0, [r4, #4] + add r0, r6, #0 + bl FUN_0202A8CC + str r0, [r4, #0x70] + add r0, r6, #0 + bl FUN_0202A8D8 + str r0, [r4, #0x74] + ldr r0, _02243688 ; =0x12345678 + mov r1, #0 + str r0, [r4] + ldr r0, [r4, #0x70] + bl FUN_0202A3A0 + cmp r5, #0 + bne _0224356C + strb r7, [r4, #0xf] + ldrb r0, [r4, #0xf] + bl MOD06_0224312C + strb r0, [r4, #0xe] + mov r0, #1 + strb r0, [r4, #0xc] + mov r2, #0 + strb r2, [r4, #0xd] + mov r1, #0xff +_02243530: + add r0, r4, r2 + add r0, #0x2a + strb r1, [r0] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, #4 + blo _02243530 + ldr r1, _0224368C ; =0x0000FFFF + mov r2, #0 +_02243544: + lsl r0, r2, #1 + add r0, r4, r0 + strh r1, [r0, #0x3e] + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 + cmp r2, #0xe + blo _02243544 + ldr r0, [r4, #0x70] + bl FUN_0202A1E4 + ldrb r1, [r4, #0xf] + add r0, sp, #8 + add r2, sp, #8 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #0 + bl FUN_0202A2C4 + b _0224362A +_0224356C: + mov r1, #0 + ldr r0, [r4, #0x70] + add r2, r1, #0 + bl FUN_0202A240 + strb r0, [r4, #0xf] + ldr r0, [r4, #0x70] + mov r1, #1 + mov r2, #0 + bl FUN_0202A240 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + sub r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xf] + bl MOD06_0224312C + strb r0, [r4, #0xe] + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #5 + add r2, #0x2a + bl FUN_0202A240 + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #8 + add r2, #0x3e + bl FUN_0202A240 + ldr r0, [r4, #0x70] + mov r1, #0xa + mov r2, #0 + bl FUN_0202A240 + str r0, [r4, #8] + ldrb r0, [r4, #0xf] + cmp r0, #2 + bne _0224362A + ldr r0, [r4, #0x70] + mov r1, #9 + mov r2, #0 + bl FUN_0202A240 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + lsl r0, r0, #0x1d + ldrb r1, [r4, #0x10] + mov r2, #0xe0 + lsr r0, r0, #0x18 + bic r1, r2 + orr r0, r1 + strb r0, [r4, #0x10] + ldrb r3, [r4, #0x10] + ldr r2, _02243690 ; =0x000007E8 + ldr r0, [r4, #0x70] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1d + add r2, r4, r2 + lsl r3, r3, #4 + mov r1, #6 + add r2, r2, r3 + bl FUN_0202A240 + ldrb r0, [r4, #0x10] + mov r1, #7 + mov r2, #0 + lsl r0, r0, #0x18 + lsr r5, r0, #0x1d + ldr r0, [r4, #0x70] + bl FUN_0202A240 + add r3, r0, #0 + ldr r0, _02243690 ; =0x000007E8 + mov r1, #0xa6 + lsl r1, r1, #2 + add r0, r4, r0 + lsl r2, r5, #4 + add r0, r0, r2 + add r2, r5, r2 + str r0, [sp] + ldr r0, [r4, #4] + add r1, r4, r1 + lsl r2, r2, #4 + add r1, r1, r2 + mov r2, #0x4b + lsl r2, r2, #2 + add r2, r5, r2 + lsl r2, r2, #0x10 + str r0, [sp, #4] + add r0, r4, #0 + lsr r2, r2, #0x10 + bl MOD06_02244A80 +_0224362A: + add r0, r6, #0 + bl FUN_020238F4 + bl FUN_020239CC + strb r0, [r4, #0x11] + ldrb r0, [r4, #0xf] + cmp r0, #5 + beq _0224367E + add r0, r6, #0 + bl FUN_02029FC8 + ldrb r1, [r4, #0xf] + add r5, r0, #0 + ldr r0, [r4, #0x74] + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _02243668 + ldrb r1, [r4, #0xf] + add r0, r5, #0 + lsl r1, r1, #1 + add r1, #0x36 + bl FUN_0202A150 + strh r0, [r4, #0x1a] +_02243668: + add r0, r5, #0 + mov r1, #0x1d + bl FUN_0202A150 + str r0, [r4, #0x20] + ldrb r1, [r4, #0xf] + ldr r0, [r4, #0x74] + mov r2, #0 + bl FUN_0202A538 + strh r0, [r4, #0x1c] +_0224367E: + add r0, r4, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243684: .word 0x000008CC +_02243688: .word 0x12345678 +_0224368C: .word 0x0000FFFF +_02243690: .word 0x000007E8 + + thumb_func_start MOD06_02243694 +MOD06_02243694: ; 0x02243694 + push {r3, r4, r5, lr} + add r4, r0, #0 + beq _022436BE + ldr r1, [r4] + ldr r0, _022436C0 ; =0x12345678 + cmp r1, r0 + beq _022436A6 + bl ErrorHandling +_022436A6: + ldr r2, _022436C4 ; =0x000008CC + ldr r5, [r4, #4] + add r0, r4, #0 + mov r1, #0 + bl MI_CpuFill8 + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_020168D0 +_022436BE: + pop {r3, r4, r5, pc} + .align 2, 0 +_022436C0: .word 0x12345678 +_022436C4: .word 0x000008CC + + thumb_func_start MOD06_022436C8 +MOD06_022436C8: ; 0x022436C8 + push {r3, lr} + sub sp, #0x10 + ldrb r0, [r0, #0xe] + mov r3, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0x64 + str r0, [sp, #8] + add r0, r1, #0 + add r1, r2, #0 + mov r2, #0x11 + str r3, [sp, #0xc] + bl FUN_0205FC50 + add sp, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_022436E8 +MOD06_022436E8: ; 0x022436E8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r1] + str r1, [sp] + str r0, [sp, #4] + add r0, #0x23 + ldrb r0, [r0] + cmp r0, #0 + bne _02243706 + ldr r0, [sp, #4] + add r0, #0x22 + ldrb r0, [r0] + cmp r0, #7 + bne _02243716 +_02243706: + ldr r0, [sp, #4] + bl FUN_02016A18 + ldr r1, [sp] + mov r0, #0 + str r0, [r1] + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02243716: + add r0, r2, #0 + bl FUN_0206BB1C + str r0, [sp, #8] + ldrb r0, [r5, #0xe] + mov r4, #0 + cmp r0, #0 + ble _0224376A +_02243726: + ldr r0, [sp, #4] + add r0, r0, r4 + add r0, #0x2c + ldrb r0, [r0] + sub r1, r0, #1 + add r0, r5, r4 + add r0, #0x2a + strb r1, [r0] + add r1, r5, r4 + add r1, #0x2a + ldrb r1, [r1] + ldr r0, [sp, #8] + bl FUN_0206B9B0 + lsl r1, r4, #1 + add r6, r5, r1 + add r7, r0, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r6, #0x2e] + add r0, r7, #0 + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r6, #0x36] + add r0, r4, #1 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + ldrb r0, [r5, #0xe] + cmp r4, r0 + blt _02243726 +_0224376A: + ldr r0, [sp] + ldr r0, [r0] + bl FUN_02016A18 + ldr r0, [sp] + mov r1, #0 + str r1, [r0] + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02243780 +MOD06_02243780: ; 0x02243780 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + str r0, [sp] + add r0, r1, #0 + bl FUN_0206BB1C + str r0, [sp, #4] + ldr r0, [sp] + mov r5, #0 + ldrb r0, [r0, #0xe] + cmp r0, #0 + ble _02243808 + add r7, sp, #0xc + add r4, sp, #0x14 +_0224379C: + ldr r1, [sp] + ldr r0, [sp, #4] + add r1, r1, r5 + add r1, #0x2a + ldrb r1, [r1] + bl FUN_0206B9B0 + str r0, [sp, #8] + lsl r6, r5, #1 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + strh r0, [r4, r6] + ldr r0, [sp, #8] + mov r1, #6 + mov r2, #0 + bl FUN_020671BC + strh r0, [r7, r6] + cmp r5, #0 + beq _022437FA + mov r0, #0 + cmp r5, #0 + bls _022437FA + ldrh r1, [r4, r6] + ldrh r2, [r7, r6] +_022437D2: + lsl r6, r0, #1 + ldrh r3, [r4, r6] + cmp r1, r3 + bne _022437E0 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_022437E0: + cmp r2, #0 + beq _022437F0 + ldrh r3, [r7, r6] + cmp r2, r3 + bne _022437F0 + add sp, #0x1c + mov r0, #2 + pop {r4, r5, r6, r7, pc} +_022437F0: + add r0, r0, #1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + cmp r0, r5 + blo _022437D2 +_022437FA: + add r0, r5, #1 + lsl r0, r0, #0x10 + lsr r5, r0, #0x10 + ldr r0, [sp] + ldrb r0, [r0, #0xe] + cmp r5, r0 + blt _0224379C +_02243808: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02243810 +MOD06_02243810: ; 0x02243810 + push {r3, r4} + mov r4, #0 + cmp r2, #0 + bls _02243830 +_02243818: + lsl r3, r4, #1 + ldrh r3, [r0, r3] + cmp r1, r3 + bne _02243826 + mov r0, #1 + pop {r3, r4} + bx lr +_02243826: + add r3, r4, #1 + lsl r3, r3, #0x10 + lsr r4, r3, #0x10 + cmp r4, r2 + blo _02243818 +_02243830: + mov r0, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_02243838 +MOD06_02243838: ; 0x02243838 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldrb r1, [r5, #0xf] + add r0, r1, #0 + add r0, #0xfe + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _0224389E + cmp r1, #3 + bne _02243858 + ldrh r1, [r5, #0x14] + ldrh r0, [r5, #0x1c] + cmp r1, r0 + bhi _0224385A +_02243858: + ldrh r1, [r5, #0x1c] +_0224385A: + lsl r0, r1, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + add r0, r5, #0 + str r0, [sp, #4] + add r0, #0x3e + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #4] +_0224386C: + lsr r2, r4, #0x1f + add r2, r4, r2 + lsl r2, r2, #0x17 + ldrb r3, [r5, #0xf] + ldr r1, [sp] + add r0, r5, #0 + lsr r2, r2, #0x18 + bl MOD06_0224478C + add r7, r0, #0 + lsl r2, r4, #0x10 + ldr r0, [sp, #4] + add r1, r7, #0 + lsr r2, r2, #0x10 + bl MOD06_02243810 + cmp r0, #0 + bne _0224386C + add r4, r4, #1 + strh r7, [r6, #0x3e] + add r6, r6, #2 + cmp r4, #0xe + blt _0224386C + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224389E: + add r0, r5, #0 + str r0, [sp, #8] + add r0, #0x3e + mov r4, #0 + add r6, r5, #0 + str r0, [sp, #8] +_022438AA: + ldrh r1, [r5, #0x1c] + lsl r2, r4, #0x18 + ldrb r3, [r5, #0xf] + lsl r1, r1, #0x18 + add r0, r5, #0 + lsr r1, r1, #0x18 + lsr r2, r2, #0x18 + bl MOD06_0224478C + add r7, r0, #0 + lsl r2, r4, #0x10 + ldr r0, [sp, #8] + add r1, r7, #0 + lsr r2, r2, #0x10 + bl MOD06_02243810 + cmp r0, #0 + bne _022438AA + add r4, r4, #1 + strh r7, [r6, #0x3e] + add r6, r6, #2 + cmp r4, #7 + blt _022438AA + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022438DC +MOD06_022438DC: ; 0x022438DC + ldrb r0, [r0, #0xc] + bx lr + + thumb_func_start MOD06_022438E0 +MOD06_022438E0: ; 0x022438E0 + push {r4, lr} + add r4, r0, #0 + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldr r0, [r4, #8] + bl FUN_02060064 + str r0, [r4, #8] + ldrb r0, [r4, #0xc] + add r0, r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start MOD06_022438FC +MOD06_022438FC: ; 0x022438FC + ldrb r2, [r0, #0x10] + lsl r1, r2, #0x1f + lsr r1, r1, #0x1f + beq _02243908 + mov r0, #1 + bx lr +_02243908: + ldrb r1, [r0, #0xc] + cmp r1, #7 + bls _0224391C + mov r1, #1 + bic r2, r1 + mov r1, #1 + orr r2, r1 + strb r2, [r0, #0x10] + add r0, r1, #0 + bx lr +_0224391C: + mov r0, #0 + bx lr + + thumb_func_start MOD06_02243920 +MOD06_02243920: ; 0x02243920 + ldrb r1, [r0, #0xd] + ldrh r0, [r0, #0x1a] + add r1, r0, r1 + ldr r0, _02243934 ; =0x0000FFFF + cmp r1, r0 + bhi _02243930 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 +_02243930: + bx lr + nop +_02243934: .word 0x0000FFFF + + thumb_func_start MOD06_02243938 +MOD06_02243938: ; 0x02243938 + push {r4, r5, r6, lr} + add r5, r0, #0 + ldrb r0, [r5, #0xf] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, #0 + beq _0224394A + cmp r0, #1 + bne _02243980 +_0224394A: + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + ldrb r1, [r5, #0xf] + cmp r1, #0 + bne _0224396C + add r5, #0x2a + ldrb r1, [r5] + bl FUN_0206B9B0 + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + mov r3, #1 + bl FUN_02061904 + pop {r4, r5, r6, pc} +_0224396C: + add r5, #0x2a + ldrb r1, [r5] + bl FUN_0206B9B0 + add r2, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + mov r3, #0 + bl FUN_02061904 +_02243980: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02243984 +MOD06_02243984: ; 0x02243984 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r7, r2, #0 + ldrb r2, [r5, #0xf] + add r6, r1, #0 + add r4, r3, #0 + cmp r2, #0 + beq _0224399E + cmp r2, #1 + beq _022439A4 + cmp r2, #4 + beq _022439B8 + pop {r3, r4, r5, r6, r7, pc} +_0224399E: + mov r2, #0 + bl MOD06_02244190 +_022439A4: + cmp r4, #7 + blo _022439F6 + add r0, r6, #0 + bl FUN_02022504 + add r1, r7, #0 + add r2, r4, #0 + bl FUN_02060FBC + pop {r3, r4, r5, r6, r7, pc} +_022439B8: + mov r2, #1 + bl MOD06_02244190 + ldrh r1, [r5, #0x28] + ldrh r2, [r5, #0x24] + ldrh r3, [r5, #0x26] + lsl r1, r1, #0x18 + ldr r0, [r5, #0x70] + lsr r1, r1, #0x18 + bl FUN_0202A36C + ldrb r1, [r5, #0xf] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r5, #0x70] + mov r1, #0 + bl FUN_0202A2C4 + ldrb r1, [r5, #0xc] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r5, #0x70] + mov r1, #1 + bl FUN_0202A2C4 + ldr r0, [r5, #0x74] + ldr r1, [r5, #0x70] + bl FUN_0202A4B8 +_022439F6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022439F8 +MOD06_022439F8: ; 0x022439F8 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, [r1, #0xc] + str r1, [sp] + str r0, [sp, #8] + bl FUN_02029FC8 + ldrb r1, [r5, #0xf] + str r0, [sp, #4] + cmp r1, #5 + beq _02243AD0 + lsl r6, r1, #1 + add r6, #0x35 + add r1, r6, #0 + bl FUN_0202A150 + lsl r0, r0, #0x10 + lsr r7, r0, #0x10 + ldrh r3, [r5, #0x1a] + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, r3, r2 + bl FUN_0202A0A8 + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #1 + bls _02243A52 + cmp r7, r4 + blo _02243A48 + cmp r7, r4 + bne _02243A52 + add r0, r4, #0 + mov r1, #7 + bl _s32_div_f + cmp r1, #0 + bne _02243A52 +_02243A48: + ldr r1, [sp] + add r0, r5, #0 + add r2, r4, #0 + bl MOD06_02243938 +_02243A52: + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #0 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _02243A74 + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + add r1, r6, #1 + bl FUN_0202A11C + b _02243A7E +_02243A74: + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + add r1, r6, #1 + bl FUN_0202A07C +_02243A7E: + ldrb r1, [r5, #0xf] + add r4, r0, #0 + ldr r0, [r5, #0x74] + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #2 + bl FUN_0202A578 + ldrb r2, [r5, #0xd] + ldr r0, [sp, #4] + mov r1, #0x1d + bl FUN_0202A11C + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #2 + bl FUN_0202A538 + ldr r0, [sp, #8] + bl FUN_02029FC8 + mov r1, #0xf + mov r2, #1 + bl FUN_0202A11C + add r0, r5, #0 + bl MOD06_0224403C + ldr r0, _02243AD4 ; =0x0000270F + add r4, r4, #1 + cmp r4, r0 + bls _02243AC2 + add r4, r0, #0 +_02243AC2: + lsl r3, r4, #0x10 + ldr r1, [sp, #8] + add r0, r5, #0 + mov r2, #0 + lsr r3, r3, #0x10 + bl MOD06_02243984 +_02243AD0: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02243AD4: .word 0x0000270F + + thumb_func_start MOD06_02243AD8 +MOD06_02243AD8: ; 0x02243AD8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r7, r1, #0 + add r5, r0, #0 + ldr r0, [r7, #0xc] + str r0, [sp, #4] + ldrb r0, [r5, #0xf] + cmp r0, #5 + beq _02243BA2 + ldr r0, [sp, #4] + bl FUN_02029FC8 + ldrb r1, [r5, #0xf] + add r6, r0, #0 + ldr r0, [r5, #0x74] + lsl r4, r1, #1 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + mov r2, #0 + add r4, #0x35 + bl FUN_0202A578 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + beq _02243B1A + add r0, r6, #0 + add r1, r4, #1 + mov r2, #7 + bl FUN_0202A11C + str r0, [sp] + b _02243B26 +_02243B1A: + add r0, r6, #0 + add r1, r4, #1 + mov r2, #7 + bl FUN_0202A07C + str r0, [sp] +_02243B26: + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #1 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202A578 + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202A150 + ldr r2, [sp] + add r0, r6, #0 + add r1, r4, #0 + bl FUN_0202A0A8 + add r0, r6, #0 + mov r1, #0x1d + mov r2, #7 + bl FUN_0202A11C + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #3 + bl FUN_0202A538 + add r0, r6, #0 + mov r1, #0xf + mov r2, #1 + bl FUN_0202A11C + add r0, r6, #0 + mov r1, #0xe + bl FUN_0202A170 + add r0, r5, #0 + bl MOD06_0224403C + ldr r3, [sp] + ldr r1, [sp, #4] + lsl r3, r3, #0x10 + add r0, r5, #0 + mov r2, #1 + lsr r3, r3, #0x10 + bl MOD06_02243984 + ldrb r0, [r5, #0xf] + add r0, #0xfd + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + cmp r0, #1 + bhi _02243BA2 + ldr r0, [r5, #4] + bl FUN_02029578 + add r7, #0x98 + add r1, r0, #0 + ldr r0, [r7] + mov r2, #4 + bl FUN_02028AD4 +_02243BA2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02243BA8 +MOD06_02243BA8: ; 0x02243BA8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldrb r1, [r4, #0xf] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #0 + bl FUN_0202A2C4 + ldrb r1, [r4, #0xc] + add r0, sp, #0 + add r2, sp, #0 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #1 + bl FUN_0202A2C4 + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #5 + add r2, #0x2a + bl FUN_0202A2C4 + ldrh r1, [r4, #0x28] + ldrh r2, [r4, #0x24] + ldrh r3, [r4, #0x26] + lsl r1, r1, #0x18 + ldr r0, [r4, #0x70] + lsr r1, r1, #0x18 + bl FUN_0202A36C + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #8 + add r2, #0x3e + bl FUN_0202A2C4 + add r2, r4, #0 + ldr r0, [r4, #0x70] + mov r1, #0xa + add r2, #8 + bl FUN_0202A2C4 + ldr r0, [r4, #0x70] + mov r1, #1 + bl FUN_0202A3A0 + ldrb r0, [r4, #0xf] + cmp r0, #2 + bne _02243C4E + ldrb r0, [r4, #0x10] + add r2, sp, #0 + lsl r0, r0, #0x18 + lsr r1, r0, #0x1d + add r0, sp, #0 + strb r1, [r0] + ldr r0, [r4, #0x70] + mov r1, #9 + bl FUN_0202A2C4 + ldrb r3, [r4, #0x10] + ldr r2, _02243C54 ; =0x000007E8 + ldr r0, [r4, #0x70] + lsl r3, r3, #0x18 + lsr r3, r3, #0x1d + add r2, r4, r2 + lsl r3, r3, #4 + mov r1, #6 + add r2, r2, r3 + bl FUN_0202A2C4 + ldr r2, _02243C58 ; =0x00000838 + ldr r0, [r4, #0x70] + add r3, r4, r2 + ldrb r2, [r4, #0x10] + mov r1, #7 + lsl r2, r2, #0x18 + lsr r2, r2, #0x1d + add r2, r3, r2 + bl FUN_0202A2C4 +_02243C4E: + add sp, #4 + pop {r3, r4, pc} + nop +_02243C54: .word 0x000007E8 +_02243C58: .word 0x00000838 + + thumb_func_start MOD06_02243C5C +MOD06_02243C5C: ; 0x02243C5C + push {r4, r5, r6, lr} + sub sp, #0x18 + add r4, r0, #0 + ldrb r2, [r4, #0xf] + cmp r2, #5 + bhi _02243D16 + add r2, r2, r2 + add r2, pc + ldrh r2, [r2, #6] + lsl r2, r2, #0x10 + asr r2, r2, #0x10 + add pc, r2 +_02243C74: ; jump table + .short _02243D16 - _02243C74 - 2 ; case 0 + .short _02243D16 - _02243C74 - 2 ; case 1 + .short _02243C96 - _02243C74 - 2 ; case 2 + .short _02243C96 - _02243C74 - 2 ; case 3 + .short _02243C80 - _02243C74 - 2 ; case 4 + .short _02243C80 - _02243C74 - 2 ; case 5 +_02243C80: + ldrb r2, [r4, #0xc] + add r0, r1, #0 + add r1, r4, #0 + sub r2, r2, #1 + lsl r2, r2, #0x18 + add r1, #0x78 + lsr r2, r2, #0x18 + bl MOD06_0224434C + add sp, #0x18 + pop {r4, r5, r6, pc} +_02243C96: + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r1, [r4, #4] + str r1, [sp, #0xc] + ldrb r2, [r4, #0xc] + add r1, r4, #0 + ldrb r3, [r4, #0xe] + sub r2, r2, #1 + lsl r2, r2, #2 + add r2, r4, r2 + ldrh r2, [r2, #0x3e] + add r1, #0x78 + bl MOD06_02244A34 + ldrb r3, [r4, #0xe] + mov r0, #0 + cmp r3, #0 + ble _02243CE8 + add r1, r4, #0 + add r1, #0xa8 + add r2, sp, #0x14 + add r5, r4, #0 + add r6, sp, #0x10 +_02243CC8: + ldrh r3, [r1] + add r0, r0, #1 + add r1, #0x38 + lsl r3, r3, #0x15 + lsr r3, r3, #0x15 + strh r3, [r2] + add r3, r5, #0 + add r3, #0xaa + ldrh r3, [r3] + add r2, r2, #2 + add r5, #0x38 + strh r3, [r6] + ldrb r3, [r4, #0xe] + add r6, r6, #2 + cmp r0, r3 + blt _02243CC8 +_02243CE8: + add r0, sp, #0x14 + str r0, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + ldr r0, [r4, #4] + mov r1, #0x62 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xc] + lsl r1, r1, #2 + add r0, r4, #0 + sub r2, r2, #1 + lsl r2, r2, #1 + add r2, r2, #1 + lsl r2, r2, #1 + add r2, r4, r2 + ldrh r2, [r2, #0x3e] + add r1, r4, r1 + bl MOD06_02244A34 + add sp, #0x18 + pop {r4, r5, r6, pc} +_02243D16: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4, #4] + add r1, r4, #0 + str r0, [sp, #0xc] + ldrb r2, [r4, #0xc] + ldrb r3, [r4, #0xe] + add r0, r4, #0 + sub r2, r2, #1 + lsl r2, r2, #1 + add r2, r4, r2 + ldrh r2, [r2, #0x3e] + add r1, #0x78 + bl MOD06_02244A34 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02243D3C +MOD06_02243D3C: ; 0x02243D3C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, _02243D98 ; =0x000007E8 + mov r4, #0 + add r6, r5, r0 + mov r0, #0xa6 + lsl r0, r0, #2 + add r7, r5, r0 + add r0, r5, #0 + str r0, [sp, #0x10] + add r0, #0x2e + str r0, [sp, #0x10] + add r0, r5, #0 + str r0, [sp, #0x14] + add r0, #0x36 + str r0, [sp, #0x14] +_02243D5E: + ldr r0, [sp, #0x10] + mov r2, #0x4b + str r0, [sp] + ldr r0, [sp, #0x14] + lsl r2, r2, #2 + str r0, [sp, #4] + str r6, [sp, #8] + ldr r0, [r5, #4] + add r2, r4, r2 + str r0, [sp, #0xc] + lsl r2, r2, #0x10 + ldrb r3, [r5, #0xe] + add r0, r5, #0 + add r1, r7, #0 + lsr r2, r2, #0x10 + bl MOD06_02244A34 + add r2, r5, r4 + ldr r1, _02243D9C ; =0x00000838 + add r4, r4, #1 + strb r0, [r2, r1] + mov r0, #0x11 + lsl r0, r0, #4 + add r6, #0x10 + add r7, r7, r0 + cmp r4, #5 + blt _02243D5E + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02243D98: .word 0x000007E8 +_02243D9C: .word 0x00000838 + + thumb_func_start MOD06_02243DA0 +MOD06_02243DA0: ; 0x02243DA0 + lsl r2, r1, #4 + add r1, r1, r2 + lsl r1, r1, #4 + add r0, r0, r1 + add r0, #0x7c + ldrh r0, [r0] + ldr r3, _02243DB4 ; =MOD06_022442C4 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bx r3 + .align 2, 0 +_02243DB4: .word MOD06_022442C4 + + thumb_func_start MOD06_02243DB8 +MOD06_02243DB8: ; 0x02243DB8 + ldr r3, _02243DBC ; =0x02046949 + bx r3 + .align 2, 0 +_02243DBC: .word 0x02046949 + + thumb_func_start MOD06_02243DC0 +MOD06_02243DC0: ; 0x02243DC0 + ldrb r0, [r0, #0xf] + bx lr + + thumb_func_start MOD06_02243DC4 +MOD06_02243DC4: ; 0x02243DC4 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1e + ldrb r3, [r0, #0x10] + mov r2, #6 + lsr r1, r1, #0x1d + bic r3, r2 + orr r1, r3 + strb r1, [r0, #0x10] + bx lr + + thumb_func_start MOD06_02243DD8 +MOD06_02243DD8: ; 0x02243DD8 + ldrb r0, [r0, #0x10] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1e + bx lr + + thumb_func_start MOD06_02243DE0 +MOD06_02243DE0: ; 0x02243DE0 + push {r3, r4, r5, lr} + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bne _02243DEE + mov r0, #0 + pop {r3, r4, r5, pc} +_02243DEE: + cmp r1, #4 + ldr r0, [r4, #0x74] + bne _02243E00 + mov r1, #0 + bl FUN_0202A444 + ldr r1, _02243E2C ; =0x02250C5C + ldrb r5, [r1, r0] + b _02243E1E +_02243E00: + mov r2, #0 + bl FUN_0202A538 + ldrb r1, [r4, #0x10] + lsl r1, r1, #0x1d + lsr r1, r1, #0x1e + beq _02243E12 + mov r5, #0x14 + b _02243E1E +_02243E12: + cmp r0, #7 + blo _02243E1A + mov r5, #7 + b _02243E1E +_02243E1A: + ldr r1, _02243E30 ; =0x02250C48 + ldrb r5, [r1, r0] +_02243E1E: + ldr r0, [r4, #0x74] + add r1, r5, #0 + mov r2, #5 + bl FUN_0202A3B4 + add r0, r5, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02243E2C: .word 0x02250C5C +_02243E30: .word 0x02250C48 + + thumb_func_start MOD06_02243E34 +MOD06_02243E34: ; 0x02243E34 + push {r4, lr} + add r4, r0, #0 + add r0, r1, #0 + ldrb r1, [r4, #0xf] + bl MOD06_02243408 + cmp r0, #0x32 + bhs _02243E48 + mov r0, #0 + pop {r4, pc} +_02243E48: + cmp r0, #0x64 + ldr r0, [r4, #0x74] + blo _02243E5E + mov r1, #1 + mov r2, #0 + bl FUN_0202A578 + cmp r0, #0 + beq _02243E6E + mov r0, #0 + pop {r4, pc} +_02243E5E: + mov r1, #0 + add r2, r1, #0 + bl FUN_0202A578 + cmp r0, #0 + beq _02243E6E + mov r0, #0 + pop {r4, pc} +_02243E6E: + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02243E74 +MOD06_02243E74: ; 0x02243E74 + push {r4, r5, r6, lr} + add r6, r0, #0 + add r0, r1, #0 + add r5, r2, #0 + bl FUN_0202A8D8 + add r4, r0, #0 + cmp r5, #0 + beq _02243E90 + cmp r5, #1 + beq _02243E98 + cmp r5, #2 + beq _02243ECC + b _02243F10 +_02243E90: + mov r1, #0 + bl FUN_0202A444 + pop {r4, r5, r6, pc} +_02243E98: + mov r1, #4 + mov r2, #2 + bl FUN_0202A578 + add r0, r4, #0 + mov r1, #0 + bl FUN_0202A444 + add r5, r0, #0 + cmp r5, #0xa + bne _02243EB2 + mov r0, #0 + pop {r4, r5, r6, pc} +_02243EB2: + add r0, r4, #0 + mov r1, #3 + bl FUN_0202A444 + add r0, r5, #1 + cmp r0, #5 + blt _02243EC8 + ldrb r1, [r6, #0x10] + mov r0, #0x10 + orr r0, r1 + strb r0, [r6, #0x10] +_02243EC8: + mov r0, #1 + pop {r4, r5, r6, pc} +_02243ECC: + mov r1, #3 + bl FUN_0202A40C + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0 + bl FUN_0202A444 + cmp r0, #1 + bne _02243EE4 + mov r0, #0 + pop {r4, r5, r6, pc} +_02243EE4: + sub r1, r0, #1 + ldr r0, _02243F14 ; =0x02250C50 + ldrb r0, [r0, r1] + cmp r5, r0 + blo _02243F0C + add r0, r4, #0 + mov r1, #4 + bl FUN_0202A444 + add r0, r4, #0 + mov r1, #2 + bl FUN_0202A40C + add r0, r4, #0 + mov r1, #4 + mov r2, #2 + bl FUN_0202A578 + mov r0, #1 + pop {r4, r5, r6, pc} +_02243F0C: + mov r0, #0 + pop {r4, r5, r6, pc} +_02243F10: + mov r0, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_02243F14: .word 0x02250C50 + + thumb_func_start MOD06_02243F18 +MOD06_02243F18: ; 0x02243F18 + push {r3, lr} + add r2, r0, #0 + ldrb r0, [r2, #0xf] + cmp r0, #0 + beq _02243F26 + mov r0, #0 + pop {r3, pc} +_02243F26: + ldrb r0, [r2, #0x10] + lsl r0, r0, #0x1d + lsr r0, r0, #0x1e + cmp r0, #1 + beq _02243F36 + cmp r0, #2 + beq _02243F40 + b _02243F4A +_02243F36: + add r0, r1, #0 + mov r1, #0x1a + bl MOD06_02243FDC + pop {r3, pc} +_02243F40: + add r0, r1, #0 + mov r1, #0x1b + bl MOD06_02243FDC + pop {r3, pc} +_02243F4A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02243F50 +MOD06_02243F50: ; 0x02243F50 + push {r4, lr} + add r2, r0, #0 + ldrb r0, [r2, #0xf] + cmp r0, #5 + bne _02243F5E + mov r0, #0 + pop {r4, pc} +_02243F5E: + ldrb r4, [r2, #0x10] + lsl r4, r4, #0x1b + lsr r4, r4, #0x1f + bne _02243F6A + mov r0, #0 + pop {r4, pc} +_02243F6A: + cmp r0, #4 + bhi _02243F92 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02243F7A: ; jump table + .short _02243F92 - _02243F7A - 2 ; case 0 + .short _02243F84 - _02243F7A - 2 ; case 1 + .short _02243F88 - _02243F7A - 2 ; case 2 + .short _02243F8C - _02243F7A - 2 ; case 3 + .short _02243F90 - _02243F7A - 2 ; case 4 +_02243F84: + mov r3, #0x1c + b _02243F92 +_02243F88: + mov r3, #0x1d + b _02243F92 +_02243F8C: + mov r3, #0x1e + b _02243F92 +_02243F90: + mov r3, #0x1f +_02243F92: + add r0, r1, #0 + add r1, r3, #0 + bl MOD06_02243FDC + pop {r4, pc} + + thumb_func_start MOD06_02243F9C +MOD06_02243F9C: ; 0x02243F9C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + ldrb r1, [r5, #0xf] + ldr r0, [r5, #0x74] + mov r2, #0 + add r1, #8 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202A578 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bne _02243FC0 + add r0, r4, #0 + bl FUN_020600A0 + b _02243FC6 +_02243FC0: + add r0, r4, #0 + bl FUN_020600DC +_02243FC6: + str r0, [r5, #8] + ldr r0, [r5, #8] + ldr r1, _02243FD8 ; =0x0000FFFF + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} + nop +_02243FD8: .word 0x0000FFFF + + thumb_func_start MOD06_02243FDC +MOD06_02243FDC: ; 0x02243FDC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r6, r1, #0 + add r5, r2, #0 + mov r2, #1 + add r1, sp, #8 + strb r2, [r1] + bl FUN_0206BB1C + str r0, [sp] + mov r7, #0 + ldrb r0, [r5, #0xe] + add r4, r7, #0 + cmp r0, #0 + ble _0224402C +_02243FFA: + add r1, r5, r4 + add r1, #0x2a + ldrb r1, [r1] + ldr r0, [sp] + bl FUN_0206B9B0 + add r1, r6, #0 + mov r2, #0 + str r0, [sp, #4] + bl FUN_020671BC + cmp r0, #0 + bne _02244024 + ldr r0, [sp, #4] + add r1, r6, #0 + add r2, sp, #8 + bl FUN_02067830 + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 +_02244024: + ldrb r0, [r5, #0xe] + add r4, r4, #1 + cmp r4, r0 + blt _02243FFA +_0224402C: + cmp r7, #0 + bne _02244036 + add sp, #0xc + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02244036: + mov r0, #1 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224403C +MOD06_0224403C: ; 0x0224403C + ldrb r1, [r0, #0xf] + cmp r1, #5 + beq _0224404A + cmp r1, #0 + beq _0224404A + cmp r1, #4 + bne _0224404E +_0224404A: + mov r0, #0 + bx lr +_0224404E: + ldrh r2, [r0, #0x1a] + ldrb r1, [r0, #0xd] + add r1, r2, r1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + cmp r1, #0x32 + bhs _02244060 + mov r0, #0 + bx lr +_02244060: + ldrb r2, [r0, #0x10] + mov r1, #0x10 + orr r1, r2 + strb r1, [r0, #0x10] + mov r0, #1 + bx lr + + thumb_func_start MOD06_0224406C +MOD06_0224406C: ; 0x0224406C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp] + lsl r0, r0, #0x10 + ldrh r1, [r1] + ldr r2, _02244188 ; =0xFFFFF800 + lsr r3, r0, #0x10 + lsr r0, r2, #0x15 + and r1, r2 + and r0, r3 + orr r1, r0 + ldr r0, [sp] + mov r2, #0 + strh r1, [r0] + add r0, r5, #0 + mov r1, #0x70 + bl FUN_020671BC + ldr r1, [sp] + lsl r0, r0, #0x10 + ldrh r2, [r1] + ldr r1, _0224418C ; =0xFFFF07FF + lsr r0, r0, #0x10 + lsl r0, r0, #0x1b + and r1, r2 + lsr r0, r0, #0x10 + orr r1, r0 + ldr r0, [sp] + mov r2, #0 + strh r1, [r0] + add r0, r5, #0 + mov r1, #6 + bl FUN_020671BC + ldr r1, [sp] + mov r4, #0 + strh r0, [r1, #2] + add r0, r1, #0 + str r0, [sp, #4] + add r0, #0x1e + add r6, r1, #0 + add r7, r4, #0 + str r0, [sp, #4] +_022440D0: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + mov r2, #0 + bl FUN_020671BC + add r1, r4, #0 + strh r0, [r6, #4] + add r0, r5, #0 + add r1, #0x3e + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp, #4] + lsl r0, r7 + ldrb r1, [r1] + add r4, r4, #1 + add r6, r6, #2 + orr r1, r0 + ldr r0, [sp, #4] + add r7, r7, #2 + strb r1, [r0] + cmp r4, #4 + blt _022440D0 + add r0, r5, #0 + mov r1, #0xc + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp] + mov r2, #0 + strb r0, [r1, #0x1f] + add r0, r5, #0 + mov r1, #7 + bl FUN_020671BC + ldr r1, [sp] + str r0, [r1, #0xc] + mov r1, #0 + add r0, r5, #0 + add r2, r1, #0 + bl FUN_020671BC + ldr r1, [sp] + mov r2, #0 + str r0, [r1, #0x10] + add r0, r5, #0 + mov r1, #0xae + bl FUN_020671BC + ldr r1, [sp] + mov r4, #0 + str r0, [r1, #0x14] + add r6, r4, #0 +_0224413C: + add r1, r4, #0 + add r0, r5, #0 + add r1, #0xd + add r2, r6, #0 + bl FUN_020671BC + ldr r1, [sp] + add r1, r1, r4 + add r4, r4, #1 + strb r0, [r1, #0x18] + cmp r4, #6 + blt _0224413C + add r0, r5, #0 + mov r1, #0xa + mov r2, #0 + bl FUN_020671BC + ldr r1, [sp] + mov r2, #0 + add r1, #0x20 + strb r0, [r1] + add r0, r5, #0 + mov r1, #9 + bl FUN_020671BC + ldr r1, [sp] + ldr r2, [sp] + add r1, #0x21 + strb r0, [r1] + add r2, #0x22 + add r0, r5, #0 + mov r1, #0x74 + str r2, [sp] + bl FUN_020671BC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244188: .word 0xFFFFF800 +_0224418C: .word 0xFFFF07FF + + thumb_func_start MOD06_02244190 +MOD06_02244190: ; 0x02244190 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #4] + add r4, r1, #0 + mov r1, #0xa8 + str r2, [sp] + bl FUN_020169D8 + mov r1, #0 + mov r2, #0xa8 + str r0, [sp, #4] + bl MI_CpuFill8 + add r0, r4, #0 + bl FUN_0206BB1C + ldr r5, [sp, #4] + add r7, r0, #0 + mov r4, #0 +_022441B8: + add r1, r6, r4 + add r1, #0x2a + ldrb r1, [r1] + add r0, r7, #0 + bl FUN_0206B9B0 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_0224406C + add r4, r4, #1 + add r5, #0x38 + cmp r4, #3 + blt _022441B8 + ldr r0, [r6, #0x74] + ldr r1, [sp] + ldr r2, [sp, #4] + bl FUN_0202A474 + ldr r0, [sp, #4] + mov r1, #0 + mov r2, #0xa8 + bl MI_CpuFill8 + ldr r0, [sp, #4] + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022441F4 +MOD06_022441F4: ; 0x022441F4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #8] + bl FUN_02060064 + ldr r1, _0224420C ; =0x0000FFFF + str r0, [r4, #8] + bl _u32_div_f + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r4, pc} + .align 2, 0 +_0224420C: .word 0x0000FFFF + + thumb_func_start MOD06_02244210 +MOD06_02244210: ; 0x02244210 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r4, r0, #0 + add r7, r1, #0 + str r2, [sp, #8] + mov r0, #0xe + mov r1, #4 + str r3, [sp, #0xc] + ldr r5, [sp, #0x38] + bl FUN_020219F4 + add r6, r0, #0 + mov r0, #2 + mov r1, #4 + bl FUN_020219F4 + str r0, [sp, #0x1c] + add r0, r4, #0 + bl FUN_02024DA0 + str r0, [sp, #0x18] + ldr r2, _022442C0 ; =0x0000016A + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + str r0, [sp, #0x10] + mov r0, #0x13 + mov r1, #0xe + mov r2, #4 + bl FUN_0200AA90 + mov r1, #0 + str r1, [sp] + mov r3, #1 + add r2, r7, #0 + str r0, [sp, #0x14] + str r3, [sp, #4] + bl FUN_0200AD38 + mov r4, #0 +_02244264: + add r0, r4, #0 + bl FUN_0206A984 + add r7, r0, #0 + ldr r0, [sp, #0x18] + add r1, r7, #0 + bl FUN_020245F0 + cmp r0, #0 + beq _0224429E + ldr r0, [sp, #0x10] + add r1, r7, #0 + add r2, r6, #0 + bl FUN_0200A8E0 + ldr r0, [sp, #0xc] + add r2, r6, #0 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + ldrb r1, [r5] + ldr r0, [sp, #0x14] + ldr r3, [sp, #8] + add r1, r1, #1 + bl FUN_0200ABB4 + ldrb r0, [r5] + add r0, r0, #1 + strb r0, [r5] +_0224429E: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #0x12 + blo _02244264 + ldr r0, [sp, #0x10] + bl FUN_0200A8B8 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + add r0, r6, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022442C0: .word 0x0000016A + + thumb_func_start MOD06_022442C4 +MOD06_022442C4: ; 0x022442C4 + ldr r3, _022442E4 ; =0x02250CDA + mov r2, #0 +_022442C8: + ldrh r1, [r3] + cmp r0, r1 + bne _022442D6 + ldr r0, _022442E8 ; =0x02250CDC + lsl r1, r2, #2 + ldrh r0, [r0, r1] + bx lr +_022442D6: + add r2, r2, #1 + add r3, r3, #4 + cmp r2, #0x3f + blo _022442C8 + mov r0, #3 + bx lr + nop +_022442E4: .word 0x02250CDA +_022442E8: .word 0x02250CDC + + thumb_func_start MOD06_022442EC +MOD06_022442EC: ; 0x022442EC + push {r3, r4, r5, r6, r7, lr} + mov r2, #0x11 + add r4, r1, #0 + mov r1, #0 + lsl r2, r2, #4 + add r5, r0, #0 + bl MI_CpuFill8 + mov r0, #6 + mul r0, r4 + ldr r1, _02244340 ; =0x02250CB0 + str r0, [sp] + add r6, r1, r0 + ldr r1, _02244344 ; =0x02250DD8 + mov r2, #0x30 + add r0, r4, #0 + mul r0, r2 + add r0, r1, r0 + add r1, r5, #0 + ldr r7, _02244348 ; =0x02250F28 + bl MI_CpuCopy8 + ldr r1, _02244340 ; =0x02250CB0 + ldr r0, [sp] + mov r4, #0 + ldrh r0, [r1, r0] + strh r0, [r5, #6] + add r5, #0x30 +_02244324: + add r0, r6, r4 + ldrb r1, [r0, #2] + mov r0, #0x38 + mov r2, #0x38 + mul r0, r1 + add r0, r7, r0 + add r1, r5, #0 + bl MI_CpuCopy8 + add r4, r4, #1 + add r5, #0x38 + cmp r4, #4 + blt _02244324 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244340: .word 0x02250CB0 +_02244344: .word 0x02250DD8 +_02244348: .word 0x02250F28 + + thumb_func_start MOD06_0224434C +MOD06_0224434C: ; 0x0224434C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r2, #0x11 + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0 + lsl r2, r2, #4 + bl MI_CpuFill8 + add r0, r6, #0 + bl FUN_0202A8E4 + add r6, r0, #0 + bl FUN_0202A744 + cmp r0, #0 + bne _0224437A + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_022442EC + pop {r4, r5, r6, pc} +_0224437A: + add r0, r6, #0 + add r1, r5, #0 + add r2, r4, #0 + bl FUN_0202A798 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02244388 +MOD06_02244388: ; 0x02244388 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02066978 + ldr r0, [r6, #0x10] + ldr r3, _02244520 ; =0x3FFFFFFF + str r0, [sp] + ldrh r1, [r6] + ldr r4, [r6, #0x14] + add r0, r5, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x15 + mov r2, #0x32 + and r3, r4 + bl FUN_02066EA4 + ldrh r0, [r6] + add r2, sp, #8 + add r2, #1 + lsl r0, r0, #0x10 + lsr r1, r0, #0x1b + add r0, sp, #8 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x70 + bl FUN_02067830 + add r0, r5, #0 + mov r1, #6 + add r2, r6, #2 + bl FUN_02067830 + mov r4, #0 + str r6, [sp, #4] + add r7, r4, #0 +_022443D4: + ldr r0, [sp, #4] + add r2, sp, #8 + ldrh r1, [r0, #4] + add r0, sp, #8 + add r2, #2 + strh r1, [r0, #2] + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x36 + bl FUN_02067830 + ldrb r0, [r6, #0x1e] + add r2, sp, #8 + add r2, #1 + add r1, r0, #0 + asr r1, r7 + mov r0, #3 + and r1, r0 + add r0, sp, #8 + strb r1, [r0, #1] + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3e + bl FUN_02067830 + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x42 + mov r2, #0 + bl FUN_020671BC + add r1, sp, #8 + strb r0, [r1] + add r1, r4, #0 + add r0, r5, #0 + add r1, #0x3a + add r2, sp, #8 + bl FUN_02067830 + ldr r0, [sp, #4] + add r4, r4, #1 + add r0, r0, #2 + add r7, r7, #2 + str r0, [sp, #4] + cmp r4, #4 + blt _022443D4 + ldr r0, [r6, #0xc] + mov r1, #7 + str r0, [sp, #0xc] + add r0, r5, #0 + add r2, sp, #0xc + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x18] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0xd + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x19] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0xe + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1a] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0xf + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1b] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x10 + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1c] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x11 + bl FUN_02067830 + add r2, sp, #8 + ldrb r1, [r6, #0x1d] + add r0, sp, #8 + add r2, #1 + strb r1, [r0, #1] + add r0, r5, #0 + mov r1, #0x12 + bl FUN_02067830 + add r2, r6, #0 + add r0, r5, #0 + mov r1, #0xa + add r2, #0x20 + bl FUN_02067830 + add r2, r6, #0 + add r0, r5, #0 + mov r1, #9 + add r2, #0x21 + bl FUN_02067830 + ldr r0, [r6, #0x14] + lsl r0, r0, #1 + lsr r0, r0, #0x1f + beq _022444FC + ldr r2, _02244524 ; =0x0000016A + mov r0, #1 + mov r1, #0x1a + mov r3, #4 + bl FUN_0200A86C + ldrh r1, [r6] + add r4, r0, #0 + lsl r1, r1, #0x15 + lsr r1, r1, #0x15 + bl FUN_0200A914 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x76 + add r2, r7, #0 + bl FUN_02067830 + add r0, r7, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_0200A8B8 + b _02244508 +_022444FC: + add r2, r6, #0 + add r0, r5, #0 + mov r1, #0x74 + add r2, #0x22 + bl FUN_02067830 +_02244508: + add r6, #0x1f + add r0, r5, #0 + mov r1, #0xc + add r2, r6, #0 + bl FUN_02067830 + add r0, r5, #0 + bl FUN_02066ED8 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02244520: .word 0x3FFFFFFF +_02244524: .word 0x0000016A + + thumb_func_start MOD06_02244528 +MOD06_02244528: ; 0x02244528 + cmp r0, #4 + bhi _02244552 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02244538: ; jump table + .short _02244542 - _02244538 - 2 ; case 0 + .short _02244546 - _02244538 - 2 ; case 1 + .short _0224454A - _02244538 - 2 ; case 2 + .short _0224454E - _02244538 - 2 ; case 3 + .short _02244542 - _02244538 - 2 ; case 4 +_02244542: + mov r0, #0x81 + bx lr +_02244546: + mov r0, #0x83 + bx lr +_0224454A: + mov r0, #0xcb + bx lr +_0224454E: + mov r0, #0x8f + bx lr +_02244552: + mov r0, #0x81 + bx lr + .align 2, 0 + + thumb_func_start MOD06_02244558 +MOD06_02244558: ; 0x02244558 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldrb r0, [r5, #0xf] + add r4, r1, #0 + bl MOD06_02244528 + add r1, r0, #0 + ldr r0, [r5, #4] + bl FUN_020476CC + add r7, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_0206BB1C + str r0, [sp, #4] + add r0, r7, #0 + add r1, r4, #0 + bl FUN_02047A78 + mov r0, #0x15 + mov r1, #6 + lsl r0, r0, #4 + str r1, [r7, r0] + mov r1, #9 + add r0, r0, #4 + str r1, [r7, r0] + ldr r0, [r5, #4] + bl FUN_020669C0 + add r4, r0, #0 + ldrb r1, [r5, #0xe] + ldr r0, [r7, #4] + bl FUN_0206B8CC + ldrb r0, [r5, #0xe] + mov r6, #0 + cmp r0, #0 + ble _022445FA +_022445A6: + add r1, r5, r6 + add r1, #0x2a + ldrb r1, [r1] + ldr r0, [sp, #4] + bl FUN_0206B9B0 + add r1, r4, #0 + bl FUN_02069B88 + add r0, r4, #0 + mov r1, #0xa0 + mov r2, #0 + bl FUN_020671BC + cmp r0, #0x32 + bls _022445E8 + add r0, r4, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x32 + bl FUN_02068758 + str r0, [sp, #8] + add r0, r4, #0 + mov r1, #8 + add r2, sp, #8 + bl FUN_02067830 + add r0, r4, #0 + bl FUN_02066ED8 +_022445E8: + add r0, r7, #0 + add r1, r4, #0 + mov r2, #0 + bl FUN_020479FC + ldrb r0, [r5, #0xe] + add r6, r6, #1 + cmp r6, r0 + blt _022445A6 +_022445FA: + add r0, r4, #0 + bl FUN_02016A18 + add r0, r7, #0 + bl FUN_020480E4 + ldr r0, [r5, #4] + add r1, r5, #0 + str r0, [sp] + ldrb r2, [r5, #0xe] + add r0, r7, #0 + add r1, #0x78 + mov r3, #1 + bl MOD06_02244D04 + ldrb r0, [r5, #0xf] + cmp r0, #2 + beq _02244624 + cmp r0, #3 + beq _02244646 + b _0224465A +_02244624: + ldr r0, [r5, #4] + mov r1, #0xa6 + str r0, [sp] + ldrb r2, [r5, #0x10] + lsl r1, r1, #2 + add r1, r5, r1 + lsl r2, r2, #0x18 + lsr r3, r2, #0x1d + lsl r2, r3, #4 + add r2, r3, r2 + lsl r2, r2, #4 + add r1, r1, r2 + ldrb r2, [r5, #0xe] + add r0, r7, #0 + mov r3, #2 + bl MOD06_02244D04 +_02244646: + ldr r0, [r5, #4] + mov r1, #0x62 + str r0, [sp] + ldrb r2, [r5, #0xe] + lsl r1, r1, #2 + add r0, r7, #0 + add r1, r5, r1 + mov r3, #3 + bl MOD06_02244D04 +_0224465A: + add r0, r7, #0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02244660 +MOD06_02244660: ; 0x02244660 + push {r3, r4} + add r0, #0xa8 + ldr r3, [r0] + ldrh r0, [r1] + mov r2, #0 + strb r0, [r3, #0x12] + ldrh r0, [r1, #2] + strh r0, [r3, #0x16] + ldrh r0, [r1, #4] + strh r0, [r3, #0x18] + ldrh r0, [r1, #6] + mov r1, #0xe0 + strh r0, [r3, #0x14] + ldrb r0, [r3, #0x10] + bic r0, r1 + ldrb r1, [r3, #0x12] + add r1, r1, #5 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + lsl r1, r1, #0x1d + lsr r1, r1, #0x18 + orr r0, r1 + strb r0, [r3, #0x10] + ldrh r4, [r3, #0x16] + ldrh r1, [r3, #0x2e] + cmp r1, r4 + beq _0224469C + ldrh r0, [r3, #0x18] + cmp r1, r0 + bne _022446A2 +_0224469C: + add r0, r2, #1 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_022446A2: + ldrh r1, [r3, #0x30] + cmp r1, r4 + beq _022446AE + ldrh r0, [r3, #0x18] + cmp r1, r0 + bne _022446B4 +_022446AE: + add r0, r2, #2 + lsl r0, r0, #0x10 + lsr r2, r0, #0x10 +_022446B4: + add r0, r2, #0 + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_022446BC +MOD06_022446BC: ; 0x022446BC + push {r3, r4, r5, lr} + add r0, #0xa8 + add r5, r1, #0 + ldr r4, [r0] + bl FUN_02031190 + cmp r0, #0 + bne _022446D0 + mov r0, #0 + pop {r3, r4, r5, pc} +_022446D0: + add r4, #0x3e + add r0, r5, #0 + add r1, r4, #0 + mov r2, #0x1c + bl MI_CpuCopy8 + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022446E0 +MOD06_022446E0: ; 0x022446E0 + add r0, #0xa8 + ldr r0, [r0] + ldrb r0, [r0, #0x10] + lsl r0, r0, #0x1c + lsr r0, r0, #0x1f + bne _022446F2 + ldrh r0, [r1] + cmp r0, #0 + beq _022446F6 +_022446F2: + mov r0, #1 + bx lr +_022446F6: + mov r0, #0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_022446FC +MOD06_022446FC: ; 0x022446FC + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_020238F4 + bl FUN_020239CC + ldr r1, _02244750 ; =0x0000083E + strh r0, [r6, r1] + add r0, r4, #0 + bl FUN_0206BB1C + add r7, r0, #0 + mov r4, #0 + add r5, r6, #0 +_0224471C: + add r1, r6, r4 + add r1, #0x2a + ldrb r1, [r1] + add r0, r7, #0 + bl FUN_0206B9B0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + mov r1, #0x21 + lsl r1, r1, #6 + strh r0, [r5, r1] + add r4, r4, #1 + add r5, r5, #2 + cmp r4, #2 + blt _0224471C + ldr r0, [r6, #0x74] + mov r1, #3 + mov r2, #0 + bl FUN_0202A538 + ldr r1, _02244754 ; =0x00000844 + strh r0, [r6, r1] + pop {r3, r4, r5, r6, r7, pc} + nop +_02244750: .word 0x0000083E +_02244754: .word 0x00000844 + + thumb_func_start MOD06_02244758 +MOD06_02244758: ; 0x02244758 + ldr r1, _02244768 ; =0x0000083E + add r2, r0, #0 + add r1, r2, r1 + ldr r3, _0224476C ; =0x020CE3E0 + add r0, #0x3e + mov r2, #0x1c + bx r3 + nop +_02244768: .word 0x0000083E +_0224476C: .word 0x020CE3E0 + + thumb_func_start MOD06_02244770 +MOD06_02244770: ; 0x02244770 + ldrb r3, [r0, #0x10] + mov r2, #8 + bic r3, r2 + lsl r2, r1, #0x18 + lsr r2, r2, #0x18 + lsl r2, r2, #0x1f + lsr r2, r2, #0x1c + orr r2, r3 + strb r2, [r0, #0x10] + ldr r2, _02244788 ; =0x0000083E + strh r1, [r0, r2] + bx lr + .align 2, 0 +_02244788: .word 0x0000083E + + thumb_func_start MOD06_0224478C +MOD06_0224478C: ; 0x0224478C + push {r3, r4, r5, lr} + cmp r3, #0 + bne _022447AA + cmp r1, #2 + bne _0224479E + cmp r2, #6 + bne _0224479E + ldr r0, _02244808 ; =0x00000131 + pop {r3, r4, r5, pc} +_0224479E: + cmp r1, #6 + bne _022447AA + cmp r2, #6 + bne _022447AA + ldr r0, _0224480C ; =0x00000132 + pop {r3, r4, r5, pc} +_022447AA: + cmp r1, #7 + bhs _022447F6 + cmp r2, #6 + bne _022447D4 + lsl r5, r1, #2 + ldr r1, _02244810 ; =0x02250C90 + ldrh r4, [r1, r5] + bl MOD06_022441F4 + ldr r1, _02244814 ; =0x02250C92 + ldrh r1, [r1, r5] + sub r1, r1, r4 + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl _s32_div_f + add r0, r4, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} +_022447D4: + lsl r4, r1, #2 + ldr r1, _02244818 ; =0x02250C70 + ldrh r5, [r1, r4] + bl MOD06_022441F4 + ldr r1, _0224481C ; =0x02250C72 + ldrh r1, [r1, r4] + sub r1, r1, r5 + add r1, r1, #1 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl _s32_div_f + add r0, r5, r1 + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} +_022447F6: + bl MOD06_022441F4 + mov r1, #0x64 + bl _s32_div_f + add r1, #0xc8 + lsl r0, r1, #0x10 + lsr r0, r0, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 +_02244808: .word 0x00000131 +_0224480C: .word 0x00000132 +_02244810: .word 0x02250C90 +_02244814: .word 0x02250C92 +_02244818: .word 0x02250C70 +_0224481C: .word 0x02250C72 + + thumb_func_start MOD06_02244820 +MOD06_02244820: ; 0x02244820 + push {r3, r4, r5, r6, r7, lr} + add r6, r2, #0 + add r5, r0, #0 + add r4, r1, #0 + mov r0, #1 + mov r1, #0x1a + mov r2, #0x10 + add r3, r6, #0 + bl FUN_0200A86C + add r7, r0, #0 + add r0, r4, #0 + add r1, r6, #0 + bl MOD06_02244CE8 + add r6, r0, #0 + ldr r0, _02244874 ; =0x0000FFFF + str r4, [r5] + strh r0, [r5, #0x18] + lsl r0, r4, #1 + add r0, r4, r0 + strh r0, [r5, #0x1a] + ldrh r0, [r6] + add r1, r4, #0 + strh r0, [r5, #4] + add r0, r7, #0 + bl FUN_0200A914 + add r5, #8 + add r4, r0, #0 + add r1, r5, #0 + mov r2, #8 + bl FUN_02021EF0 + add r0, r4, #0 + bl FUN_02021A20 + add r0, r7, #0 + bl FUN_0200A8B8 + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244874: .word 0x0000FFFF + + thumb_func_start MOD06_02244878 +MOD06_02244878: ; 0x02244878 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + add r4, r0, #0 + add r6, r2, #0 + add r0, r5, #0 + mov r1, #0 + mov r2, #0x38 + str r3, [sp] + bl MI_CpuFill8 + add r0, sp, #8 + add r1, r6, #0 + bl MOD06_02244CF8 + ldrh r0, [r5] + ldr r3, _02244A10 ; =0xFFFFF800 + add r2, r0, #0 + add r0, sp, #8 + and r2, r3 + ldrh r1, [r0] + lsr r3, r3, #0x15 + and r1, r3 + orr r1, r2 + strh r1, [r5] + ldr r1, [sp, #0x3c] + cmp r1, #0 + beq _022448BC + add r0, sp, #0x20 + ldrb r0, [r0, #0x18] + lsl r1, r0, #1 + ldr r0, _02244A14 ; =0x02250C68 + ldrh r0, [r0, r1] + b _022448BE +_022448BC: + ldrh r0, [r0, #0xc] +_022448BE: + strh r0, [r5, #2] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + add r1, sp, #8 + add r2, r5, #0 + add r6, r0, #0 +_022448CC: + ldrh r3, [r1, #2] + strh r3, [r2, #4] + ldrh r3, [r1, #2] + cmp r3, #0xda + bne _022448D8 + str r6, [sp, #4] +_022448D8: + add r0, r0, #1 + add r1, r1, #2 + add r2, r2, #2 + cmp r0, #4 + blt _022448CC + ldr r0, [sp] + str r0, [r5, #0xc] + ldr r0, [sp, #0x30] + cmp r0, #0 + bne _0224491E +_022448EC: + add r0, r4, #0 + bl MOD06_022441F4 + add r6, r0, #0 + add r0, r4, #0 + bl MOD06_022441F4 + lsl r0, r0, #0x10 + add r7, r6, #0 + orr r7, r0 + add r0, r7, #0 + bl FUN_02068884 + add r1, sp, #8 + ldrb r1, [r1, #0xb] + cmp r1, r0 + beq _0224491A + ldr r0, [sp] + add r1, r7, #0 + bl FUN_02068AAC + cmp r0, #1 + beq _022448EC +_0224491A: + str r7, [r5, #0x10] + b _02244920 +_0224491E: + str r0, [r5, #0x10] +_02244920: + add r0, sp, #0x20 + ldrb r1, [r0, #0x14] + ldr r2, [r5, #0x14] + mov r0, #0x1f + bic r2, r0 + mov r0, #0x1f + and r0, r1 + orr r2, r0 + ldr r0, _02244A18 ; =0xFFFFFC1F + mov r6, #0 + and r2, r0 + lsl r0, r1, #0x1b + lsr r1, r0, #0x16 + orr r2, r1 + ldr r1, _02244A1C ; =0xFFFF83FF + add r4, r6, #0 + and r2, r1 + lsr r1, r0, #0x11 + orr r2, r1 + ldr r1, _02244A20 ; =0xFFF07FFF + and r2, r1 + lsr r1, r0, #0xc + orr r2, r1 + ldr r1, _02244A24 ; =0xFE0FFFFF + and r2, r1 + lsr r1, r0, #7 + orr r2, r1 + ldr r1, _02244A28 ; =0xC1FFFFFF + lsr r0, r0, #2 + and r1, r2 + orr r0, r1 + str r0, [r5, #0x14] +_02244960: + add r0, r4, #0 + bl FUN_0206A92C + add r1, sp, #8 + ldrb r1, [r1, #0xa] + tst r0, r1 + beq _02244970 + add r6, r6, #1 +_02244970: + add r4, r4, #1 + cmp r4, #6 + blt _02244960 + ldr r0, _02244A2C ; =0x000001FE + add r1, r6, #0 + bl _s32_div_f + cmp r0, #0xff + ble _02244984 + mov r0, #0xff +_02244984: + lsl r0, r0, #0x18 + mov r4, #0 + lsr r6, r0, #0x18 +_0224498A: + add r0, r4, #0 + bl FUN_0206A92C + add r1, sp, #8 + ldrb r1, [r1, #0xa] + tst r0, r1 + beq _0224499C + add r0, r5, r4 + strb r6, [r0, #0x18] +_0224499C: + add r4, r4, #1 + cmp r4, #6 + blt _0224498A + mov r0, #0 + strb r0, [r5, #0x1e] + ldr r0, _02244A30 ; =0x020ECAC4 + mov r1, #0x19 + ldrb r0, [r0] + strb r0, [r5, #0x1f] + ldrh r0, [r5] + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + bl FUN_02068678 + cmp r0, #0 + beq _022449E0 + ldr r2, [r5, #0x10] + mov r1, #1 + tst r1, r2 + beq _022449CC + add r1, r5, #0 + add r1, #0x20 + strb r0, [r1] + b _022449F2 +_022449CC: + ldrh r0, [r5] + mov r1, #0x18 + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + bl FUN_02068678 + add r1, r5, #0 + add r1, #0x20 + strb r0, [r1] + b _022449F2 +_022449E0: + ldrh r0, [r5] + mov r1, #0x18 + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + bl FUN_02068678 + add r1, r5, #0 + add r1, #0x20 + strb r0, [r1] +_022449F2: + add r1, r5, #0 + ldr r0, [sp, #4] + add r1, #0x21 + strb r0, [r1] + ldrh r0, [r5] + add r5, #0x22 + ldr r1, [sp, #0x40] + lsl r0, r0, #0x15 + lsr r0, r0, #0x15 + add r2, r5, #0 + bl FUN_0200A99C + add r0, r7, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02244A10: .word 0xFFFFF800 +_02244A14: .word 0x02250C68 +_02244A18: .word 0xFFFFFC1F +_02244A1C: .word 0xFFFF83FF +_02244A20: .word 0xFFF07FFF +_02244A24: .word 0xFE0FFFFF +_02244A28: .word 0xC1FFFFFF +_02244A2C: .word 0x000001FE +_02244A30: .word 0x020ECAC4 + + thumb_func_start MOD06_02244A34 +MOD06_02244A34: ; 0x02244A34 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r2, #0 + add r5, r1, #0 + str r0, [sp, #0x14] + ldr r2, [sp, #0x3c] + add r6, r3, #0 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02244820 + add r7, r0, #0 + lsl r0, r6, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [sp, #0x30] + add r5, #0x30 + str r0, [sp, #4] + ldr r0, [sp, #0x34] + add r1, r7, #0 + str r0, [sp, #8] + ldr r0, [sp, #0x38] + add r2, r4, #0 + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + add r3, r5, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x14] + bl MOD06_02244AEC + add r4, r0, #0 + add r0, r7, #0 + bl FUN_02016A18 + add r0, r4, #0 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244A80 +MOD06_02244A80: ; 0x02244A80 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + str r0, [sp, #0x14] + ldr r0, [sp, #0x38] + add r5, r1, #0 + str r0, [sp, #0x38] + ldr r0, [sp, #0x3c] + add r4, r2, #0 + str r0, [sp, #0x3c] + ldr r2, [sp, #0x3c] + add r0, r5, #0 + add r1, r4, #0 + str r3, [sp, #0x18] + bl MOD06_02244820 + str r0, [sp, #0x1c] + add r0, r4, #0 + bl MOD06_02244CAC + ldr r6, [sp, #0x38] + str r0, [sp, #0x20] + mov r7, #0 + add r4, r6, #0 + add r5, #0x30 +_02244AB0: + ldr r0, [r6, #8] + ldr r3, [sp, #0x38] + str r0, [sp] + ldr r0, [sp, #0x20] + add r1, r5, #0 + str r0, [sp, #4] + lsl r0, r7, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x18] + str r0, [sp, #0xc] + ldr r0, [sp, #0x3c] + str r0, [sp, #0x10] + ldrh r2, [r4, #4] + ldr r0, [sp, #0x14] + ldr r3, [r3] + bl MOD06_02244878 + add r7, r7, #1 + add r6, r6, #4 + add r4, r4, #2 + add r5, #0x38 + cmp r7, #2 + blt _02244AB0 + ldr r0, [sp, #0x1c] + bl FUN_02016A18 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244AEC +MOD06_02244AEC: ; 0x02244AEC + push {r4, r5, r6, r7, lr} + sub sp, #0x7c + str r0, [sp, #0x14] + ldr r0, [sp, #0x94] + str r2, [sp, #0x1c] + str r0, [sp, #0x94] + ldr r0, [sp, #0x98] + str r1, [sp, #0x18] + str r0, [sp, #0x98] + ldr r0, [sp, #0x9c] + str r3, [sp, #0x20] + str r0, [sp, #0x9c] + ldr r0, [sp, #0xa0] + str r0, [sp, #0xa0] + mov r0, #0 + str r0, [sp, #0x28] + add r0, sp, #0x80 + ldrb r0, [r0, #0x10] + cmp r0, #4 + bls _02244B18 + bl ErrorHandling +_02244B18: + add r0, sp, #0x80 + ldrb r6, [r0, #0x10] + mov r4, #0 + str r4, [sp, #0x2c] + cmp r6, #0 + beq _02244C0A + add r0, sp, #0x6c + str r0, [sp, #0x24] +_02244B28: + ldr r0, [sp, #0x14] + bl MOD06_022441F4 + ldr r1, [sp, #0x18] + ldrh r1, [r1, #2] + bl _s32_div_f + lsl r0, r1, #0x18 + lsr r1, r0, #0x17 + ldr r0, [sp, #0x18] + add r0, r0, r1 + ldrh r0, [r0, #4] + str r0, [sp, #0x30] + ldr r1, [sp, #0x30] + add r0, sp, #0x3c + bl MOD06_02244CF8 + mov r7, #0 + cmp r4, #0 + ble _02244B6C + add r5, sp, #0x6c +_02244B52: + ldr r1, [r5] + add r0, sp, #0x4c + bl MOD06_02244CF8 + add r0, sp, #0x3c + ldrh r1, [r0, #0x10] + ldrh r0, [r0] + cmp r1, r0 + beq _02244B6C + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r4 + blt _02244B52 +_02244B6C: + cmp r7, r4 + bne _02244C06 + ldr r0, [sp, #0x94] + cmp r0, #0 + beq _02244B94 + mov r3, #0 + cmp r6, #0 + ble _02244B90 + add r1, r0, #0 + add r0, sp, #0x3c + ldrh r2, [r0] +_02244B82: + ldrh r0, [r1] + cmp r2, r0 + beq _02244B90 + add r3, r3, #1 + add r1, r1, #2 + cmp r3, r6 + blt _02244B82 +_02244B90: + cmp r3, r6 + bne _02244C06 +_02244B94: + ldr r0, [sp, #0x2c] + cmp r0, #0x32 + bge _02244BFC + mov r7, #0 + cmp r4, #0 + ble _02244BC0 + add r5, sp, #0x6c +_02244BA2: + ldr r1, [r5] + add r0, sp, #0x4c + bl MOD06_02244CF8 + add r0, sp, #0x3c + ldrh r1, [r0, #0x1c] + cmp r1, #0 + beq _02244BB8 + ldrh r0, [r0, #0xc] + cmp r1, r0 + beq _02244BC0 +_02244BB8: + add r7, r7, #1 + add r5, r5, #4 + cmp r7, r4 + blt _02244BA2 +_02244BC0: + cmp r7, r4 + beq _02244BCC + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + b _02244C06 +_02244BCC: + ldr r0, [sp, #0x98] + cmp r0, #0 + beq _02244BFC + mov r3, #0 + cmp r6, #0 + ble _02244BF0 + add r1, r0, #0 + add r0, sp, #0x3c + ldrh r2, [r0, #0xc] +_02244BDE: + ldrh r0, [r1] + cmp r2, r0 + bne _02244BE8 + cmp r0, #0 + bne _02244BF0 +_02244BE8: + add r3, r3, #1 + add r1, r1, #2 + cmp r3, r6 + blt _02244BDE +_02244BF0: + cmp r3, r6 + beq _02244BFC + ldr r0, [sp, #0x2c] + add r0, r0, #1 + str r0, [sp, #0x2c] + b _02244C06 +_02244BFC: + ldr r1, [sp, #0x30] + ldr r0, [sp, #0x24] + add r4, r4, #1 + stmia r0!, {r1} + str r0, [sp, #0x24] +_02244C06: + cmp r4, r6 + bne _02244B28 +_02244C0A: + ldr r0, [sp, #0x1c] + bl MOD06_02244CAC + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + bl MOD06_022441F4 + add r5, r0, #0 + ldr r0, [sp, #0x14] + bl MOD06_022441F4 + lsl r0, r0, #0x10 + orr r0, r5 + str r0, [sp, #0x34] + ldr r0, [sp, #0x2c] + cmp r0, #0x32 + blt _02244C30 + mov r0, #1 + str r0, [sp, #0x28] +_02244C30: + mov r5, #0 + cmp r4, #0 + ble _02244C70 + add r7, sp, #0x6c + add r6, sp, #0x5c +_02244C3A: + mov r0, #0 + str r0, [sp] + ldr r0, [sp, #0x38] + ldr r1, [sp, #0x20] + str r0, [sp, #4] + lsl r0, r5, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #8] + ldr r0, [sp, #0x28] + ldr r3, [sp, #0x34] + str r0, [sp, #0xc] + ldr r0, [sp, #0xa0] + str r0, [sp, #0x10] + ldr r2, [r7] + ldr r0, [sp, #0x14] + lsl r2, r2, #0x10 + lsr r2, r2, #0x10 + bl MOD06_02244878 + stmia r6!, {r0} + ldr r0, [sp, #0x20] + add r5, r5, #1 + add r0, #0x38 + add r7, r7, #4 + str r0, [sp, #0x20] + cmp r5, r4 + blt _02244C3A +_02244C70: + ldr r0, [sp, #0x9c] + cmp r0, #0 + bne _02244C7C + ldr r0, [sp, #0x28] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} +_02244C7C: + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x9c] + str r1, [r0] + mov r3, #0 + add r0, sp, #0x6c + add r1, sp, #0x5c +_02244C88: + ldr r5, [r0] + ldr r4, [sp, #0x9c] + add r3, r3, #1 + strh r5, [r4, #4] + ldr r4, [r1] + add r0, r0, #4 + str r4, [r2, #8] + ldr r4, [sp, #0x9c] + add r1, r1, #4 + add r4, r4, #2 + add r2, r2, #4 + str r4, [sp, #0x9c] + cmp r3, #2 + blt _02244C88 + ldr r0, [sp, #0x28] + add sp, #0x7c + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244CAC +MOD06_02244CAC: ; 0x02244CAC + cmp r0, #0x64 + bhs _02244CB4 + mov r0, #3 + bx lr +_02244CB4: + cmp r0, #0x78 + bhs _02244CBC + mov r0, #6 + bx lr +_02244CBC: + cmp r0, #0x8c + bhs _02244CC4 + mov r0, #9 + bx lr +_02244CC4: + cmp r0, #0xa0 + bhs _02244CCC + mov r0, #0xc + bx lr +_02244CCC: + cmp r0, #0xb4 + bhs _02244CD4 + mov r0, #0xf + bx lr +_02244CD4: + cmp r0, #0xc8 + bhs _02244CDC + mov r0, #0x12 + bx lr +_02244CDC: + cmp r0, #0xdc + bhs _02244CE4 + mov r0, #0x15 + bx lr +_02244CE4: + mov r0, #0x1f + bx lr + + thumb_func_start MOD06_02244CE8 +MOD06_02244CE8: ; 0x02244CE8 + add r3, r0, #0 + add r2, r1, #0 + add r1, r3, #0 + ldr r3, _02244CF4 ; =0x0200650D + mov r0, #0x86 + bx r3 + .align 2, 0 +_02244CF4: .word 0x0200650D + + thumb_func_start MOD06_02244CF8 +MOD06_02244CF8: ; 0x02244CF8 + ldr r3, _02244D00 ; =0x020064F1 + add r2, r1, #0 + mov r1, #0x87 + bx r3 + .align 2, 0 +_02244D00: .word 0x020064F1 + + thumb_func_start MOD06_02244D04 +MOD06_02244D04: ; 0x02244D04 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r1, #0 + add r7, r0, #0 + lsl r0, r3, #2 + str r0, [sp, #4] + ldr r1, [r5] + add r0, r7, r0 + str r1, [r0, #0x18] + mov r0, #0x34 + add r4, r3, #0 + mul r4, r0 + add r0, r7, r4 + ldrh r1, [r5, #4] + add r0, #0x29 + str r2, [sp] + strb r1, [r0] + add r0, r7, #0 + add r0, #0x3c + add r1, r5, #0 + add r0, r0, r4 + add r1, #8 + bl StringCopy + add r0, r7, r4 + ldrh r1, [r5, #0x20] + add r0, #0x4c + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x22] + add r0, #0x4e + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x24] + add r0, #0x50 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x26] + add r0, #0x52 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x28] + add r0, #0x54 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x2a] + add r0, #0x56 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x2c] + add r0, #0x58 + strh r1, [r0] + add r0, r7, r4 + ldrh r1, [r5, #0x2e] + add r0, #0x5a + strh r1, [r0] + ldr r0, [sp, #0x20] + bl FUN_020669C0 + add r4, r0, #0 + ldr r0, [sp] + mov r6, #0 + cmp r0, #0 + ble _02244DA4 + ldr r0, [sp, #4] + add r5, #0x30 + add r7, r7, r0 +_02244D8A: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02244388 + ldr r0, [r7, #4] + add r1, r4, #0 + bl FUN_0206B900 + ldr r0, [sp] + add r6, r6, #1 + add r5, #0x38 + cmp r6, r0 + blt _02244D8A +_02244DA4: + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244DB0 +MOD06_02244DB0: ; 0x02244DB0 + ldr r3, _02244DB8 ; =0x020169D9 + mov r1, #0x17 + lsl r1, r1, #4 + bx r3 + .align 2, 0 +_02244DB8: .word 0x020169D9 + + thumb_func_start MOD06_02244DBC +MOD06_02244DBC: ; 0x02244DBC + ldr r3, _02244DC0 ; =0x02016A19 + bx r3 + .align 2, 0 +_02244DC0: .word 0x02016A19 + + thumb_func_start MOD06_02244DC4 +MOD06_02244DC4: ; 0x02244DC4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r0, #0 + mov r0, #0x5a + add r4, r1, #0 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r7, r0] + add r0, r4, #0 + mov r1, #0x12 + bl FUN_02068678 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + beq _02244DEC + cmp r0, #0xfe + beq _02244DF0 + cmp r0, #0xff + beq _02244DF4 + b _02244DF8 +_02244DEC: + mov r2, #0 + b _02244E10 +_02244DF0: + mov r2, #1 + b _02244E10 +_02244DF4: + mov r2, #2 + b _02244E10 +_02244DF8: + bl FUN_0201B9EC + lsr r2, r0, #0x1f + lsl r1, r0, #0x1f + sub r1, r1, r2 + mov r0, #0x1f + ror r1, r0 + add r0, r2, r1 + beq _02244E0E + mov r2, #0 + b _02244E10 +_02244E0E: + mov r2, #1 +_02244E10: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + add r0, r7, #0 + lsl r1, r4, #0x10 + lsl r2, r2, #0x18 + add r0, #0x28 + lsr r1, r1, #0x10 + lsr r2, r2, #0x18 + mov r3, #2 + bl FUN_02068C00 + add r1, r7, #0 + mov r0, #1 + add r1, #0x3c + mov r2, #4 + bl FUN_02008C9C + str r0, [r7, #0x38] + mov r0, #0x61 + mov r1, #4 + bl FUN_02006670 + ldr r4, _02244EF4 ; =0x022512E0 + str r0, [sp, #0x10] + mov r6, #0 + add r5, r7, #0 +_02244E48: + ldrb r0, [r4] + add r1, r6, #0 + mov r2, #4 + bl FUN_02008DEC + add r6, r6, #1 + add r4, r4, #1 + stmia r5!, {r0} + cmp r6, #4 + blt _02244E48 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r7] + ldr r1, [sp, #0x10] + mov r2, #5 + bl FUN_020091E0 + str r0, [r7, #0x10] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + str r0, [sp, #0xc] + ldr r0, [r7, #4] + ldr r1, [sp, #0x10] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + str r0, [r7, #0x14] + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r7, #8] + ldr r1, [sp, #0x10] + mov r2, #6 + mov r3, #0 + bl FUN_02009358 + str r0, [r7, #0x18] + mov r0, #3 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r0, [r7, #0xc] + ldr r1, [sp, #0x10] + mov r2, #0xc + mov r3, #0 + bl FUN_02009358 + str r0, [r7, #0x1c] + ldrh r0, [r7, #0x28] + ldrh r1, [r7, #0x2a] + mov r2, #4 + bl FUN_0201244C + str r0, [r7, #0x20] + ldrh r0, [r7, #0x28] + ldrh r1, [r7, #0x2c] + mov r2, #4 + bl FUN_02012470 + str r0, [r7, #0x24] + ldr r0, [r7] + ldr r1, [r7, #4] + ldr r2, [r7, #0x20] + ldr r3, [r7, #0x24] + bl MOD06_02244F84 + ldr r0, [sp, #0x10] + bl FUN_020066F4 + add r0, r7, #0 + bl MOD06_02244FFC + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + nop +_02244EF4: .word 0x022512E0 + + thumb_func_start MOD06_02244EF8 +MOD06_02244EF8: ; 0x02244EF8 + add r1, r0, #0 + mov r0, #0x5a + mov r2, #1 + lsl r0, r0, #2 + str r2, [r1, r0] + ldr r3, _02244F10 ; =0x0200CA45 + mov r2, #0 + add r0, r0, #4 + str r2, [r1, r0] + ldr r0, _02244F14 ; =MOD06_02244F64 + bx r3 + nop +_02244F10: .word 0x0200CA45 +_02244F14: .word MOD06_02244F64 + + thumb_func_start MOD06_02244F18 +MOD06_02244F18: ; 0x02244F18 + mov r1, #0x5a + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02244F24 +MOD06_02244F24: ; 0x02244F24 + mov r1, #0x5b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bx lr + + thumb_func_start MOD06_02244F2C +MOD06_02244F2C: ; 0x02244F2C + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #0x10] + bl FUN_02009C0C + ldr r0, [r5, #0x14] + bl FUN_02009E04 + mov r4, #0 +_02244F3E: + lsl r0, r4, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #4 + blo _02244F3E + ldr r0, [r5, #0x38] + bl FUN_0201FD58 + ldr r0, [r5, #0x20] + bl FUN_02016A18 + ldr r0, [r5, #0x24] + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02244F64 +MOD06_02244F64: ; 0x02244F64 + push {r3, lr} + mov r2, #0x5a + lsl r2, r2, #2 + ldr r3, [r1, r2] + cmp r3, #0 + beq _02244F78 + ldr r0, [r1, #0x38] + bl FUN_0201FDEC + pop {r3, pc} +_02244F78: + mov r3, #1 + add r2, r2, #4 + str r3, [r1, r2] + bl FUN_0200CAB4 + pop {r3, pc} + + thumb_func_start MOD06_02244F84 +MOD06_02244F84: ; 0x02244F84 + push {r3, r4, r5, r6, r7, lr} + add r7, r1, #0 + mov r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl FUN_020094F0 + add r5, r0, #0 + add r0, r7, #0 + mov r1, #1 + bl FUN_020094F0 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02009B04 + add r0, r7, #0 + bl FUN_02009D68 + add r0, r5, #0 + bl FUN_02009C5C + add r5, r0, #0 + add r0, r7, #0 + add r1, r5, #0 + bl FUN_02009E54 + add r7, r0, #0 + add r0, r5, #0 + mov r1, #1 + bl FUN_020B1A14 + str r0, [sp] + add r0, r7, #0 + mov r1, #1 + bl FUN_020B19C4 + mov r1, #0x32 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + ldr r1, [sp] + add r0, r4, #0 + lsl r2, r2, #6 + bl GX_LoadOBJ + add r0, r6, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r6, #0 + add r1, r5, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02244FFC +MOD06_02244FFC: ; 0x02244FFC + push {r4, lr} + sub sp, #0x80 + add r4, r0, #0 + mov r0, #3 + str r0, [sp] + sub r0, r0, #4 + str r0, [sp, #4] + str r0, [sp, #8] + mov r1, #0 + str r1, [sp, #0xc] + str r1, [sp, #0x10] + ldr r0, [r4] + mov r2, #1 + str r0, [sp, #0x14] + ldr r0, [r4, #4] + mov r3, #2 + str r0, [sp, #0x18] + ldr r0, [r4, #8] + str r0, [sp, #0x1c] + ldr r0, [r4, #0xc] + str r0, [sp, #0x20] + str r1, [sp, #0x24] + str r1, [sp, #0x28] + add r0, sp, #0x5c + bl FUN_02008AA4 + ldr r0, [r4, #0x38] + mov r1, #0 + str r0, [sp, #0x2c] + add r0, sp, #0x5c + str r0, [sp, #0x30] + mov r0, #1 + lsl r0, r0, #0xc + str r1, [sp, #0x34] + str r1, [sp, #0x38] + 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, #6 + lsl r0, r0, #0x10 + str r0, [sp, #0x38] + add r0, sp, #0x2c + str r1, [sp, #0x50] + bl FUN_0201FE94 + mov r1, #0x59 + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #0 + bl FUN_020200BC + mov r0, #0x59 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_02020130 + add sp, #0x80 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02245088 +MOD06_02245088: ; 0x02245088 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r5, r0, #0 + bl FUN_02034CE0 + add r4, r0, #0 + mov r0, #0 + add r1, sp, #4 +_02245098: + lsl r2, r0, #3 + add r2, r4, r2 + ldr r3, [r2, #8] + lsl r2, r0, #2 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r3, [r1, r2] + cmp r0, #0xc + blo _02245098 + add r0, r5, #0 + bl FUN_020377AC + bl FUN_02024DA0 + bl FUN_02024CA4 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + mov r1, #1 + bl FUN_0202A990 + add r1, sp, #0x20 + str r1, [sp] + ldr r2, [r5, #0x1c] + add r1, r6, #0 + ldr r2, [r2] + add r3, sp, #0x1c + bl MOD06_02245658 + add r0, r4, #0 + add r1, sp, #0xc + add r2, sp, #0x10 + bl MOD06_0223B944 + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0x24 + add r3, sp, #0x28 + bl MOD06_0224CDB8 + bl FUN_0201B9EC + ldr r1, _02245110 ; =0x00001556 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0xc + blo _02245104 + bl ErrorHandling +_02245104: + lsl r1, r4, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02245110: .word 0x00001556 + + thumb_func_start MOD06_02245114 +MOD06_02245114: ; 0x02245114 + push {r3, r4, r5, r6, r7, lr} + str r1, [sp] + mov r1, #0x34 + bl FUN_020169D8 + add r5, r0, #0 + ldr r0, [sp] + mov r1, #0xb + str r0, [r5, #0x2c] + mov r0, #0x6a + mov r2, #4 + bl FUN_02006528 + add r7, r0, #0 + mov r4, #0 +_02245132: + bl FUN_0201B9EC + ldr r1, _0224518C ; =0x0000071D + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r6, r0, #0x10 + cmp r6, #0x24 + blo _02245148 + bl ErrorHandling +_02245148: + lsl r0, r6, #0x18 + lsr r2, r0, #0x16 + add r1, r7, r2 + ldrh r2, [r7, r2] + lsl r3, r4, #2 + add r0, r5, r3 + strh r2, [r5, r3] + ldrh r1, [r1, #2] + strh r1, [r0, #2] + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #5 + blo _02245132 + ldr r0, [sp] + ldr r0, [r0, #0x38] + bl FUN_02055320 + strh r0, [r5, #0x14] + ldr r0, [sp] + ldr r0, [r0, #0x38] + bl FUN_0205532C + strh r0, [r5, #0x16] + ldr r0, [sp] + ldr r0, [r0, #0x1c] + ldr r0, [r0] + str r0, [r5, #0x30] + add r0, r7, #0 + bl FUN_02016A18 + add r0, r5, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224518C: .word 0x0000071D + + thumb_func_start MOD06_02245190 +MOD06_02245190: ; 0x02245190 + ldr r3, _02245194 ; =0x02016A19 + bx r3 + .align 2, 0 +_02245194: .word 0x02016A19 + + thumb_func_start MOD06_02245198 +MOD06_02245198: ; 0x02245198 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + cmp r5, #0 + bne _022451BA + lsl r2, r5, #2 + ldrh r1, [r4, r2] + add r2, r4, r2 + ldrh r2, [r2, #2] + lsl r1, r1, #0xb + mov r0, #0xf0 + lsl r2, r2, #0xb + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_020345FC + b _022451D6 +_022451BA: + cmp r5, #5 + bne _022451C2 + ldr r0, [r4, #0x30] + b _022451D6 +_022451C2: + lsl r2, r5, #2 + ldrh r1, [r4, r2] + add r2, r4, r2 + ldr r0, [r4, #0x2c] + ldrh r2, [r2, #2] + ldr r0, [r0, #0x28] + lsr r1, r1, #5 + lsr r2, r2, #5 + bl FUN_0203451C +_022451D6: + lsl r3, r5, #2 + add r1, r4, r3 + ldrh r2, [r1, #2] + ldrh r1, [r4, r3] + str r0, [r4, #0x18] + mov r0, #0 + mvn r0, r0 + str r0, [r4, #0x1c] + str r1, [r4, #0x20] + str r2, [r4, #0x24] + mov r0, #0 + str r0, [r4, #0x28] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022451F0 +MOD06_022451F0: ; 0x022451F0 + add r0, #0x18 + bx lr + + thumb_func_start MOD06_022451F4 +MOD06_022451F4: ; 0x022451F4 + push {r3, r4, lr} + sub sp, #0x14 + add r4, r0, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #6 + bl FUN_020254A0 + mov r1, #0x42 + lsl r1, r1, #0x10 + str r1, [sp, #8] + mov r1, #1 + lsl r1, r1, #0x10 + str r1, [sp, #0xc] + ldrh r0, [r0] + cmp r0, #0 + beq _02245224 + cmp r0, #1 + beq _0224522C + cmp r0, #2 + beq _02245234 + b _0224523A +_02245224: + mov r0, #0xa + lsl r0, r0, #0x12 + str r0, [sp, #0x10] + b _0224523A +_0224522C: + mov r0, #0x52 + lsl r0, r0, #0x10 + str r0, [sp, #0x10] + b _0224523A +_02245234: + mov r0, #0x1b + lsl r0, r0, #0x12 + str r0, [sp, #0x10] +_0224523A: + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x4c] + ldr r2, _02245258 ; =0x000001DB + str r0, [sp, #4] + add r0, r4, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r4, #0x2c] + add r3, sp, #8 + bl FUN_021E7FBC + add sp, #0x14 + pop {r3, r4, pc} + nop +_02245258: .word 0x000001DB + + thumb_func_start MOD06_0224525C +MOD06_0224525C: ; 0x0224525C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r6, r1, #0 + str r2, [sp] + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #6 + bl FUN_020254A0 + add r4, r0, #0 + mov r0, #4 + mov r1, #0x14 + bl FUN_020169D8 + add r5, r0, #0 + add r2, r5, #0 + mov r1, #0x14 + mov r0, #0 +_02245284: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _02245284 + mov r0, #0 + strb r0, [r5, #5] + ldrh r1, [r4] + cmp r1, #0 + beq _022452A0 + cmp r1, #1 + beq _022452C6 + cmp r1, #2 + beq _022452EE + b _02245312 +_022452A0: + mov r1, #1 + strb r1, [r5, #4] + cmp r6, #1 + bne _022452B6 + mov r0, #0x52 + lsl r0, r0, #0x10 + str r0, [r5, #0xc] + strh r1, [r4] + mov r0, #0x4a + str r0, [r5, #0x10] + b _02245316 +_022452B6: + mov r0, #0x1b + lsl r0, r0, #0x12 + str r0, [r5, #0xc] + mov r0, #2 + strh r0, [r4] + mov r0, #0x64 + str r0, [r5, #0x10] + b _02245316 +_022452C6: + cmp r6, #0 + bne _022452DA + mov r1, #0xa + strb r0, [r5, #4] + lsl r1, r1, #0x12 + str r1, [r5, #0xc] + strh r0, [r4] + mov r0, #0x2e + str r0, [r5, #0x10] + b _02245316 +_022452DA: + mov r0, #1 + strb r0, [r5, #4] + mov r0, #0x1b + lsl r0, r0, #0x12 + str r0, [r5, #0xc] + mov r0, #2 + strh r0, [r4] + mov r0, #0x64 + str r0, [r5, #0x10] + b _02245316 +_022452EE: + strb r0, [r5, #4] + cmp r6, #0 + bne _02245302 + mov r1, #0xa + lsl r1, r1, #0x12 + str r1, [r5, #0xc] + strh r0, [r4] + mov r0, #0x2e + str r0, [r5, #0x10] + b _02245316 +_02245302: + mov r0, #0x52 + lsl r0, r0, #0x10 + str r0, [r5, #0xc] + mov r0, #1 + strh r0, [r4] + mov r0, #0x58 + str r0, [r5, #0x10] + b _02245316 +_02245312: + bl ErrorHandling +_02245316: + ldr r0, [sp] + str r0, [r5, #8] + ldr r0, [sp] + cmp r0, #3 + bne _02245324 + ldr r0, _02245334 ; =MOD06_02245478 + b _02245326 +_02245324: + ldr r0, _02245338 ; =MOD06_02245544 +_02245326: + str r0, [r5] + ldr r0, [r7, #0x10] + ldr r1, _0224533C ; =MOD06_02245360 + add r2, r5, #0 + bl FUN_0204640C + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02245334: .word MOD06_02245478 +_02245338: .word MOD06_02245544 +_0224533C: .word MOD06_02245360 + + thumb_func_start MOD06_02245340 +MOD06_02245340: ; 0x02245340 + push {r4, lr} + add r4, r1, #0 + bl FUN_020377AC + bl FUN_02024ED8 + mov r1, #6 + bl FUN_020254A0 + ldrh r0, [r0] + cmp r0, r4 + bne _0224535C + mov r0, #5 + pop {r4, pc} +_0224535C: + mov r0, #6 + pop {r4, pc} + + thumb_func_start MOD06_02245360 +MOD06_02245360: ; 0x02245360 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #5] + cmp r1, #5 + bhi _02245468 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02245386: ; jump table + .short _02245392 - _02245386 - 2 ; case 0 + .short _022453F0 - _02245386 - 2 ; case 1 + .short _02245402 - _02245386 - 2 ; case 2 + .short _02245414 - _02245386 - 2 ; case 3 + .short _0224544C - _02245386 - 2 ; case 4 + .short _0224545E - _02245386 - 2 ; case 5 +_02245392: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02245470 ; =0x000001DB + bl FUN_021E7ED8 + bl FUN_021E7EC8 + add r7, r0, #0 + ldr r0, _02245470 ; =0x000001DB + ldr r1, [r5, #0x2c] + bl FUN_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r6, r0, r1 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + str r7, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + mov r3, #0xff + str r3, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x10 + add r3, #0xdc + bl FUN_021DA464 + ldr r0, [r5, #0x50] + mov r1, #0x10 + mov r2, #0 + bl FUN_021DA4EC + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02245468 +_022453F0: + ldr r0, [r4, #8] + cmp r0, #4 + bne _022453FC + ldr r0, _02245474 ; =0x000006DB + bl FUN_020054C8 +_022453FC: + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02245402: + ldr r0, _02245474 ; =0x000006DB + bl FUN_02005508 + cmp r0, #0 + bne _02245468 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02245468 +_02245414: + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, _02245470 ; =0x000001DB + bl FUN_021E7ED8 + add r6, r0, #0 + add r0, sp, #0x18 + add r1, r6, #0 + bl FUN_021E7EA0 + add r0, r5, #0 + add r2, r4, #0 + ldr r5, [r4] + add r1, r4, #0 + add r2, #0xc + add r3, sp, #0x18 + blx r5 + cmp r0, #0 + beq _02245442 + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] +_02245442: + add r0, r6, #0 + add r1, sp, #0x18 + bl FUN_021E7EB0 + b _02245468 +_0224544C: + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x10 + bl FUN_021DA54C + ldrb r0, [r4, #5] + add r0, r0, #1 + strb r0, [r4, #5] + b _02245468 +_0224545E: + bl FUN_02016A18 + add sp, #0x24 + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_02245468: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + nop +_02245470: .word 0x000001DB +_02245474: .word 0x000006DB + + thumb_func_start MOD06_02245478 +MOD06_02245478: ; 0x02245478 + push {r4, r5, r6, lr} + add r5, r1, #0 + ldrb r0, [r5, #4] + add r4, r3, #0 + add r6, r2, #0 + cmp r0, #0 + ldr r0, [r4, #8] + bne _022454D8 + ldrb r1, [r5, #6] + lsl r2, r1, #2 + ldr r1, _02245538 ; =0x02251324 + ldr r1, [r1, r2] + sub r0, r0, r1 + str r0, [r4, #8] + ldrb r0, [r5, #6] + cmp r0, #6 + bhs _02245526 + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xe + sub r1, r1, r0 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r1, r0, #0x10 + ldr r0, [r5, #0x10] + cmp r1, r0 + bgt _02245526 + ldrb r0, [r5, #7] + add r0, r0, #1 + strb r0, [r5, #7] + ldrb r2, [r5, #6] + ldr r0, _0224553C ; =0x022512E4 + ldrb r1, [r5, #7] + ldrb r0, [r0, r2] + cmp r1, r0 + blo _02245526 + cmp r2, #0 + bne _022454CC + ldr r0, _02245540 ; =0x000006DA + bl FUN_020054C8 +_022454CC: + ldrb r0, [r5, #6] + add r0, r0, #1 + strb r0, [r5, #6] + mov r0, #0 + strb r0, [r5, #7] + b _02245526 +_022454D8: + ldrb r1, [r5, #6] + lsl r2, r1, #2 + ldr r1, _02245538 ; =0x02251324 + ldr r1, [r1, r2] + add r0, r0, r1 + str r0, [r4, #8] + ldrb r0, [r5, #6] + cmp r0, #6 + bhs _02245526 + mov r0, #2 + ldr r1, [r4, #8] + lsl r0, r0, #0xe + sub r1, r1, r0 + asr r0, r1, #0xf + lsr r0, r0, #0x10 + add r0, r1, r0 + asr r1, r0, #0x10 + ldr r0, [r5, #0x10] + cmp r1, r0 + blt _02245526 + ldrb r0, [r5, #7] + add r0, r0, #1 + strb r0, [r5, #7] + ldrb r2, [r5, #6] + ldr r0, _0224553C ; =0x022512E4 + ldrb r1, [r5, #7] + ldrb r0, [r0, r2] + cmp r1, r0 + blo _02245526 + cmp r2, #0 + bne _0224551C + ldr r0, _02245540 ; =0x000006DA + bl FUN_020054C8 +_0224551C: + ldrb r0, [r5, #6] + add r0, r0, #1 + strb r0, [r5, #6] + mov r0, #0 + strb r0, [r5, #7] +_02245526: + ldr r1, [r4, #8] + ldr r0, [r6] + cmp r1, r0 + bne _02245532 + mov r0, #1 + pop {r4, r5, r6, pc} +_02245532: + mov r0, #0 + pop {r4, r5, r6, pc} + nop +_02245538: .word 0x02251324 +_0224553C: .word 0x022512E4 +_02245540: .word 0x000006DA + + thumb_func_start MOD06_02245544 +MOD06_02245544: ; 0x02245544 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x38] + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp] + bl FUN_020553A0 + add r6, r0, #0 + ldr r0, [r5, #0x38] + add r1, sp, #4 + bl FUN_02055350 + mov r0, #2 + ldr r1, [sp, #0xc] + lsl r0, r0, #0xe + add r1, r1, r0 + ldr r0, [sp] + str r1, [r0, #8] + ldr r0, [r7] + cmp r1, r0 + bne _02245578 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02245578: + ldrb r0, [r4, #4] + cmp r0, #0 + bne _022455E0 + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02245640 + ldrb r1, [r4, #6] + add r0, r6, #0 + lsl r2, r1, #2 + ldr r1, _02245648 ; =0x02251308 + ldr r1, [r1, r2] + bl FUN_0205ADDC + ldrb r0, [r4, #6] + cmp r0, #6 + bhs _022455BC + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + ble _022455BC + ldrb r0, [r4, #6] + cmp r0, #0 + bne _022455B4 + ldr r0, _0224564C ; =0x000006D9 + bl FUN_020054C8 +_022455B4: + ldrb r0, [r4, #6] + add r0, r0, #1 + strb r0, [r4, #6] + b _02245640 +_022455BC: + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + bgt _02245640 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02245640 + cmp r0, #6 + bne _022455D8 + ldr r0, _02245650 ; =0x000006DA + bl FUN_020054C8 +_022455D8: + ldrb r0, [r4, #6] + sub r0, r0, #1 + strb r0, [r4, #6] + b _02245640 +_022455E0: + add r0, r6, #0 + bl FUN_0205AD98 + cmp r0, #1 + bne _02245640 + ldrb r1, [r4, #6] + add r0, r6, #0 + lsl r2, r1, #2 + ldr r1, _02245654 ; =0x022512EC + ldr r1, [r1, r2] + bl FUN_0205ADDC + ldrb r0, [r4, #6] + cmp r0, #6 + bhs _0224561E + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + bge _0224561E + ldrb r0, [r4, #6] + cmp r0, #0 + bne _02245616 + ldr r0, _0224564C ; =0x000006D9 + bl FUN_020054C8 +_02245616: + ldrb r0, [r4, #6] + add r0, r0, #1 + strb r0, [r4, #6] + b _02245640 +_0224561E: + ldr r0, [r5, #0x38] + bl FUN_0205532C + ldr r1, [r4, #0x10] + cmp r0, r1 + blt _02245640 + ldrb r0, [r4, #6] + cmp r0, #0 + beq _02245640 + cmp r0, #6 + bne _0224563A + ldr r0, _02245650 ; =0x000006DA + bl FUN_020054C8 +_0224563A: + ldrb r0, [r4, #6] + sub r0, r0, #1 + strb r0, [r4, #6] +_02245640: + mov r0, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_02245648: .word 0x02251308 +_0224564C: .word 0x000006D9 +_02245650: .word 0x000006DA +_02245654: .word 0x022512EC + + thumb_func_start MOD06_02245658 +MOD06_02245658: ; 0x02245658 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r0, r2, #0 + add r4, r1, #0 + add r6, r3, #0 + bl MOD06_022456A4 + add r7, r0, #0 + cmp r4, #0 + beq _02245670 + mov r1, #9 + b _02245672 +_02245670: + mov r1, #0xa +_02245672: + mov r0, #0x6a + mov r2, #4 + bl FUN_02006528 + lsl r1, r7, #2 + add r1, r7, r1 + add r3, r5, #0 + asr r3, r1 + mov r2, #0x1f + add r1, r3, #0 + and r1, r2 + lsl r1, r1, #0x18 + lsr r1, r1, #0x18 + and r1, r2 + lsl r1, r1, #0x18 + lsr r2, r1, #0x16 + ldr r1, [r0, r2] + str r1, [r6] + ldr r2, [r0, r2] + ldr r1, [sp, #0x18] + str r2, [r1] + bl FUN_02016A18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022456A4 +MOD06_022456A4: ; 0x022456A4 + push {r4, lr} + mov r1, #0x7e + lsl r1, r1, #2 + sub r0, r0, r1 + mov r4, #0 + cmp r0, #5 + bhi _022456E0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_022456BE: ; jump table + .short _022456CA - _022456BE - 2 ; case 0 + .short _022456CC - _022456BE - 2 ; case 1 + .short _022456D0 - _022456BE - 2 ; case 2 + .short _022456D4 - _022456BE - 2 ; case 3 + .short _022456D8 - _022456BE - 2 ; case 4 + .short _022456DC - _022456BE - 2 ; case 5 +_022456CA: + b _022456E4 +_022456CC: + mov r4, #1 + b _022456E4 +_022456D0: + mov r4, #2 + b _022456E4 +_022456D4: + mov r4, #3 + b _022456E4 +_022456D8: + mov r4, #4 + b _022456E4 +_022456DC: + mov r4, #5 + b _022456E4 +_022456E0: + bl ErrorHandling +_022456E4: + add r0, r4, #0 + pop {r4, pc} + + thumb_func_start MOD06_022456E8 +MOD06_022456E8: ; 0x022456E8 + push {r3, lr} + cmp r1, #9 + bhi _0224579C + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_022456FA: ; jump table + .short _0224570E - _022456FA - 2 ; case 0 + .short _02245718 - _022456FA - 2 ; case 1 + .short _02245734 - _022456FA - 2 ; case 2 + .short _0224573E - _022456FA - 2 ; case 3 + .short _02245748 - _022456FA - 2 ; case 4 + .short _02245752 - _022456FA - 2 ; case 5 + .short _0224575C - _022456FA - 2 ; case 6 + .short _02245778 - _022456FA - 2 ; case 7 + .short _02245784 - _022456FA - 2 ; case 8 + .short _02245790 - _022456FA - 2 ; case 9 +_0224570E: + bl MOD06_02239CE8 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245718: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_02239D04 + cmp r0, #0 + beq _02245730 + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_02239CFC + mov r0, #1 + pop {r3, pc} +_02245730: + mov r0, #0 + pop {r3, pc} +_02245734: + bl MOD06_02239F64 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_0224573E: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_02239F78 + b _022457A0 +_02245748: + bl MOD06_0223A2E8 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245752: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_0223A304 + b _022457A0 +_0224575C: + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_0223A310 + cmp r0, #6 + bne _02245774 + ldr r0, _022457A4 ; =0x02252424 + ldr r0, [r0] + bl MOD06_0223A2FC + mov r0, #1 + pop {r3, pc} +_02245774: + mov r0, #0 + pop {r3, pc} +_02245778: + mov r1, #0 + bl MOD06_0223A1C4 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245784: + mov r1, #1 + bl MOD06_0223A1C4 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_02245790: + mov r1, #2 + bl MOD06_0223A1C4 + ldr r1, _022457A4 ; =0x02252424 + str r0, [r1] + b _022457A0 +_0224579C: + bl ErrorHandling +_022457A0: + mov r0, #0 + pop {r3, pc} + .align 2, 0 +_022457A4: .word 0x02252424 + + thumb_func_start MOD06_022457A8 +MOD06_022457A8: ; 0x022457A8 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + mov r2, #0 + ldrh r0, [r0, #2] + add r1, r2, #0 +_022457BA: + cmp r0, #0 + beq _022457C0 + add r2, r2, #1 +_022457C0: + add r1, r1, #1 + cmp r1, #3 + blt _022457BA + add r0, r2, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022457CC +MOD06_022457CC: ; 0x022457CC + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blo _022457DC + bl ErrorHandling +_022457DC: + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + add r1, sp, #0 + bl MOD06_02245884 + lsl r1, r4, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + ldrh r0, [r0] + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_022457F8 +MOD06_022457F8: ; 0x022457F8 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + cmp r4, #3 + blo _02245808 + bl ErrorHandling +_02245808: + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + bl FUN_0202A9AC + add r1, sp, #0 + bl MOD06_02245884 + lsl r1, r4, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + ldrh r0, [r0, #2] + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_02245824 +MOD06_02245824: ; 0x02245824 + ldr r3, _02245828 ; =0x0205E49D + bx r3 + .align 2, 0 +_02245828: .word 0x0205E49D + + thumb_func_start MOD06_0224582C +MOD06_0224582C: ; 0x0224582C + push {r3, lr} + sub sp, #8 + add r0, #0x90 + ldr r0, [r0] + add r1, sp, #4 + add r2, sp, #0 + bl FUN_0205E098 + ldr r0, [sp, #4] + add sp, #8 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02245844 +MOD06_02245844: ; 0x02245844 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r1, sp, #0 + add r4, r0, #0 + bl MOD06_02245884 + mov r2, #0 + add r3, sp, #0 + add r5, sp, #0xc +_02245856: + ldr r1, [r3] + add r2, r2, #1 + ldrh r0, [r1] + add r3, r3, #4 + strh r0, [r5] + ldrh r0, [r1, #2] + strh r0, [r5, #2] + add r5, r5, #4 + cmp r2, #3 + blt _02245856 + mov r2, #0 + add r1, sp, #0xc +_0224586E: + ldrh r0, [r1] + add r2, r2, #1 + strh r0, [r4] + ldrh r0, [r1, #2] + add r1, r1, #4 + strh r0, [r4, #2] + add r4, r4, #4 + cmp r2, #3 + blt _0224586E + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02245884 +MOD06_02245884: ; 0x02245884 + push {r3, r4} + ldrh r4, [r0, #6] + ldrh r3, [r0, #2] + cmp r3, r4 + ldrh r2, [r0, #0xa] + bhs _022458C6 + cmp r4, r2 + bhs _022458A4 + add r2, r0, #0 + add r2, #8 + str r2, [r1] + add r2, r0, #4 + str r2, [r1, #4] + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458A4: + cmp r3, r2 + bhs _022458B8 + add r2, r0, #4 + str r2, [r1] + add r2, r0, #0 + add r2, #8 + str r2, [r1, #4] + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458B8: + add r2, r0, #4 + str r2, [r1] + str r0, [r1, #4] + add r0, #8 + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458C6: + cmp r3, r2 + bhs _022458DA + add r2, r0, #0 + add r2, #8 + str r2, [r1] + str r0, [r1, #4] + add r0, r0, #4 + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458DA: + cmp r4, r2 + str r0, [r1] + bhs _022458EE + add r2, r0, #0 + add r2, #8 + str r2, [r1, #4] + add r0, r0, #4 + str r0, [r1, #8] + pop {r3, r4} + bx lr +_022458EE: + add r2, r0, #4 + str r2, [r1, #4] + add r0, #8 + str r0, [r1, #8] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_022458FC +MOD06_022458FC: ; 0x022458FC + push {r3, lr} + mov r1, #0x1c + bl _u32_div_f + ldr r0, _0224590C ; =0x02251340 + lsl r1, r1, #2 + ldr r0, [r0, r1] + pop {r3, pc} + .align 2, 0 +_0224590C: .word 0x02251340 + + thumb_func_start MOD06_02245910 +MOD06_02245910: ; 0x02245910 + push {r4, r5, r6, lr} + sub sp, #0x1a8 + add r5, r1, #0 + mov r1, #0x1c + add r4, r2, #0 + bl _u32_div_f + ldr r0, _02245938 ; =0x02251340 + lsl r1, r1, #2 + ldr r6, [r0, r1] + add r0, sp, #0 + add r1, r6, #0 + bl FUN_02034CB4 + ldr r0, [sp, #0x64] + strh r0, [r4] + strh r6, [r5] + add sp, #0x1a8 + pop {r4, r5, r6, pc} + nop +_02245938: .word 0x02251340 + + thumb_func_start MOD06_0224593C +MOD06_0224593C: ; 0x0224593C + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r2, #0 + ldr r0, [sp, #0x1c] + add r7, r3, #0 + strb r6, [r5] + ldr r4, [sp, #0x18] + strb r7, [r5, #1] + strb r4, [r5, #2] + str r0, [sp, #0x1c] + strb r0, [r5, #3] + ldr r0, [sp, #0x20] + mov r2, #4 + strb r0, [r5, #4] + ldr r0, [sp, #0x24] + strb r0, [r5, #5] + ldr r0, [sp, #0x28] + strb r0, [r5, #6] + ldr r0, [sp, #0x2c] + strb r0, [r5, #7] + add r0, r1, #0 + add r1, r5, #0 + add r1, #0xc + bl FUN_02008C9C + str r0, [r5, #8] + add r0, r5, #0 + mov r2, #2 + add r0, #0xc + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + add r0, r6, #0 + mov r1, #0 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x4d + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r7, #0 + mov r1, #1 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x4e + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + mov r1, #2 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x4f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [sp, #0x1c] + mov r1, #3 + mov r2, #4 + bl FUN_02008DEC + mov r1, #5 + lsl r1, r1, #6 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r6, #3 + bl MOD06_02248634 + mov r1, #0x51 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r7, #3 + bl MOD06_02248634 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #4 + lsl r1, r4, #3 + bl MOD06_02248634 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [sp, #0x1c] + mov r0, #4 + lsl r1, r1, #3 + bl MOD06_02248634 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r1, #0 + cmp r6, #0 + ble _02245A18 + ble _02245A18 + ldr r0, [sp, #0x20] + add r2, r1, #0 + lsl r0, r0, #0x10 + asr r0, r0, #0x10 +_02245A08: + mov r3, #0x51 + lsl r3, r3, #2 + ldr r3, [r5, r3] + add r1, r1, #1 + strh r0, [r3, r2] + add r2, #8 + cmp r1, r6 + blt _02245A08 +_02245A18: + mov r3, #0 + cmp r7, #0 + ble _02245A38 + ble _02245A38 + ldr r0, [sp, #0x24] + mov r6, #0x52 + lsl r0, r0, #0x10 + add r2, r3, #0 + asr r1, r0, #0x10 + lsl r6, r6, #2 +_02245A2C: + ldr r0, [r5, r6] + add r3, r3, #1 + strh r1, [r0, r2] + add r2, #8 + cmp r3, r7 + blt _02245A2C +_02245A38: + mov r1, #0 + cmp r4, #0 + ble _02245A58 + ble _02245A58 + ldr r2, [sp, #0x28] + add r0, r1, #0 + lsl r2, r2, #0x10 + asr r6, r2, #0x10 + mov r2, #0x53 + lsl r2, r2, #2 +_02245A4C: + ldr r3, [r5, r2] + add r1, r1, #1 + strh r6, [r3, r0] + add r0, #8 + cmp r1, r4 + blt _02245A4C +_02245A58: + ldr r0, [sp, #0x1c] + mov r1, #0 + cmp r0, #0 + ble _02245A7C + ble _02245A7C + ldr r2, [sp, #0x2c] + mov r3, #0x15 + lsl r2, r2, #0x10 + add r0, r1, #0 + asr r4, r2, #0x10 + lsl r3, r3, #4 +_02245A6E: + ldr r2, [r5, r3] + add r1, r1, #1 + strh r4, [r2, r0] + ldr r2, [sp, #0x1c] + add r0, #8 + cmp r1, r2 + blt _02245A6E +_02245A7C: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245A80 +MOD06_02245A80: ; 0x02245A80 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldrb r0, [r5] + mov r6, #0 + cmp r0, #0 + ble _02245AB0 + add r4, r6, #0 + mov r7, #4 +_02245A90: + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245AA6 + ldr r0, [r0, #4] + bl FUN_02009C0C +_02245AA6: + ldrb r0, [r5] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245A90 +_02245AB0: + ldrb r0, [r5, #1] + mov r6, #0 + cmp r0, #0 + ble _02245ADC + add r4, r6, #0 + mov r7, #5 +_02245ABC: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245AD2 + ldr r0, [r0, #4] + bl FUN_02009E04 +_02245AD2: + ldrb r0, [r5, #1] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245ABC +_02245ADC: + ldrb r0, [r5, #2] + mov r6, #0 + cmp r0, #0 + ble _02245B08 + add r4, r6, #0 + mov r7, #6 +_02245AE8: + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245AFE + ldr r0, [r0, #4] + bl FUN_02009474 +_02245AFE: + ldrb r0, [r5, #2] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245AE8 +_02245B08: + ldrb r0, [r5, #3] + mov r6, #0 + cmp r0, #0 + ble _02245B34 + add r4, r6, #0 + mov r7, #7 +_02245B14: + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r5, r0] + ldrsb r2, [r5, r7] + add r0, r1, r4 + ldrsh r1, [r1, r4] + cmp r2, r1 + beq _02245B2A + ldr r0, [r0, #4] + bl FUN_02009474 +_02245B2A: + ldrb r0, [r5, #3] + add r6, r6, #1 + add r4, #8 + cmp r6, r0 + blt _02245B14 +_02245B34: + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x4f + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #5 + lsl r0, r0, #6 + ldr r0, [r5, r0] + bl FUN_02008E2C + mov r0, #0x51 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02016A18 + mov r0, #0x15 + lsl r0, r0, #4 + ldr r0, [r5, r0] + bl FUN_02016A18 + ldr r0, [r5, #8] + bl FUN_0201FDB4 + ldr r0, [r5, #8] + bl FUN_0201FD58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245B94 +MOD06_02245B94: ; 0x02245B94 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245BFA + mov r0, #0x51 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #4 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245BB6: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245BF2 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x51 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_020091E0 + mov r1, #0x51 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02245BF2: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245BB6 +_02245BFA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245C04 +MOD06_02245C04: ; 0x02245C04 + push {r4, r5, r6, lr} + ldrb r3, [r0] + mov r2, #0 + cmp r3, #0 + ble _02245C32 + mov r4, #0x51 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245C18: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245C2A + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009B04 + pop {r4, r5, r6, pc} +_02245C2A: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245C18 +_02245C32: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245C38 +MOD06_02245C38: ; 0x02245C38 + push {r4, r5, r6, lr} + ldrb r3, [r0] + mov r2, #0 + cmp r3, #0 + ble _02245C66 + mov r4, #0x51 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245C4C: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245C5E + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009474 + pop {r4, r5, r6, pc} +_02245C5E: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245C4C +_02245C66: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245C6C +MOD06_02245C6C: ; 0x02245C6C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x14] + str r1, [sp, #0x10] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245CD4 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #5 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245C8E: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245CCC + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x52 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #1 + str r1, [sp, #4] + str r1, [sp, #8] + mov r1, #4 + str r1, [sp, #0xc] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0x10] + ldr r2, [sp, #0x14] + bl FUN_02009298 + mov r1, #0x52 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x18 + add r1, r1, r4 + str r0, [r1, #4] + pop {r3, r4, r5, r6, r7, pc} +_02245CCC: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245C8E +_02245CD4: + bl ErrorHandling + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02245CDC +MOD06_02245CDC: ; 0x02245CDC + push {r4, r5, r6, lr} + ldrb r3, [r0, #1] + mov r2, #0 + cmp r3, #0 + ble _02245D0A + mov r4, #0x52 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245CF0: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245D02 + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009D68 + pop {r4, r5, r6, pc} +_02245D02: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245CF0 +_02245D0A: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245D10 +MOD06_02245D10: ; 0x02245D10 + push {r4, r5, r6, lr} + ldrb r3, [r0, #1] + mov r2, #0 + cmp r3, #0 + ble _02245D3E + mov r4, #0x52 + lsl r4, r4, #2 + ldr r0, [r0, r4] + add r4, r2, #0 + add r6, r0, #0 +_02245D24: + ldrsh r5, [r6, r4] + cmp r1, r5 + bne _02245D36 + lsl r1, r2, #3 + add r0, r0, r1 + ldr r0, [r0, #4] + bl FUN_02009474 + pop {r4, r5, r6, pc} +_02245D36: + add r2, r2, #1 + add r6, #8 + cmp r2, r3 + blt _02245D24 +_02245D3E: + bl ErrorHandling + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245D44 +MOD06_02245D44: ; 0x02245D44 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245DAA + mov r0, #0x53 + lsl r0, r0, #2 + ldr r3, [r6, r0] + mov r0, #6 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245D66: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245DA2 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x53 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #2 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_02009358 + mov r1, #0x53 + lsl r1, r1, #2 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02245DA2: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245D66 +_02245DAA: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245DB4 +MOD06_02245DB4: ; 0x02245DB4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r0, #0 + ldrb r5, [r6] + str r2, [sp, #0x10] + str r1, [sp, #0xc] + add r7, r3, #0 + mov r2, #0 + cmp r5, #0 + ble _02245E1A + mov r0, #0x15 + lsl r0, r0, #4 + ldr r3, [r6, r0] + mov r0, #7 + ldrsb r4, [r6, r0] + mov ip, r3 + add r0, r2, #0 +_02245DD6: + ldrsh r1, [r3, r0] + cmp r4, r1 + bne _02245E12 + lsl r4, r2, #3 + mov r0, ip + strh r7, [r0, r4] + mov r0, #0x15 + lsl r0, r0, #4 + ldr r1, [r6, r0] + mov r3, #0 + add r1, r1, r4 + strh r3, [r1, #2] + str r7, [sp] + mov r1, #3 + str r1, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + sub r0, #0x10 + ldr r0, [r6, r0] + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + bl FUN_02009358 + mov r1, #0x15 + lsl r1, r1, #4 + ldr r1, [r6, r1] + add sp, #0x14 + add r1, r1, r4 + str r0, [r1, #4] + pop {r4, r5, r6, r7, pc} +_02245E12: + add r2, r2, #1 + add r3, #8 + cmp r2, r5 + blt _02245DD6 +_02245E1A: + bl ErrorHandling + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02245E24 +MOD06_02245E24: ; 0x02245E24 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + add r4, r1, #0 + add r1, r2, #0 + mov r0, #7 + add r2, r3, #0 + ldrsb r3, [r5, r0] + ldr r6, [sp, #0x84] + cmp r6, r3 + bne _02245E3E + sub r0, #8 + str r0, [sp, #0x84] +_02245E3E: + ldr r0, [sp, #0x84] + mov r3, #0 + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + ldr r0, [sp, #0x88] + str r3, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x4d + lsl r0, r0, #2 + ldr r6, [r5, r0] + str r6, [sp, #0x14] + add r6, r0, #4 + ldr r6, [r5, r6] + str r6, [sp, #0x18] + add r6, r0, #0 + add r6, #8 + ldr r6, [r5, r6] + add r0, #0xc + str r6, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r3, [sp, #0x24] + str r3, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl FUN_02008AA4 + ldr r0, [r5, #8] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + ldr r0, [sp, #0x8c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #4 + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r4, r0, #0 + bne _02245EA6 + bl ErrorHandling +_02245EA6: + add r0, r4, #0 + add sp, #0x70 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02245EAC +MOD06_02245EAC: ; 0x02245EAC + push {r4, lr} + add r4, r1, #0 + bl FUN_0202011C + add r2, r0, #0 + ldmia r2!, {r0, r1} + stmia r4!, {r0, r1} + ldr r0, [r2] + str r0, [r4] + pop {r4, pc} + + thumb_func_start MOD06_02245EC0 +MOD06_02245EC0: ; 0x02245EC0 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r4, r0, #0 + mov r2, #0 + add r0, sp, #0x1c + str r2, [r0] + str r2, [r0, #4] + add r3, sp, #0x28 + str r2, [r3] + str r2, [r3, #4] + ldr r6, _02245F28 ; =0x02251454 + str r2, [r0, #8] + ldmia r6!, {r0, r1} + add r5, sp, #0x10 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r2, [r3, #8] + str r0, [r5] + add r1, r3, #0 + str r2, [sp] + mov r0, #2 + str r0, [sp, #4] + str r2, [sp, #8] + mov r0, #0x84 + str r0, [sp, #0xc] + add r0, r4, #0 + add r3, r2, #0 + bl MOD06_02245E24 + add r4, r0, #0 + mov r1, #2 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0x1c + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add r0, r4, #0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + nop +_02245F28: .word 0x02251454 + + thumb_func_start MOD06_02245F2C +MOD06_02245F2C: ; 0x02245F2C + push {r3, r4, lr} + sub sp, #0x1c + mov r3, #0 + add r2, sp, #0x10 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + cmp r1, #1 + bne _02245F40 + mov r3, #1 +_02245F40: + mov r2, #2 + str r2, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + mov r1, #0x83 + str r1, [sp, #0xc] + add r1, sp, #0x10 + bl MOD06_02245E24 + add r4, r0, #0 + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_02020130 + add r0, r4, #0 + add sp, #0x1c + pop {r3, r4, pc} + + thumb_func_start MOD06_02245F6C +MOD06_02245F6C: ; 0x02245F6C + push {r4, r5, lr} + sub sp, #0x24 + add r5, sp, #0x18 + mov r4, #0 + str r4, [r5] + str r4, [r5, #4] + str r0, [sp, #0xc] + str r2, [sp, #0x14] + str r3, [sp, #0x10] + str r4, [r5, #8] + str r1, [sp, #8] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x82 + str r0, [sp, #4] + add r0, r1, #0 + ldr r1, _02245F9C ; =0x02251524 + add r2, r5, #0 + add r3, r4, #0 + bl FUN_020644E4 + add sp, #0x24 + pop {r4, r5, pc} + nop +_02245F9C: .word 0x02251524 + + thumb_func_start MOD06_02245FA0 +MOD06_02245FA0: ; 0x02245FA0 + push {r3, lr} + bl FUN_02064738 + ldrb r0, [r0, #2] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02245FAC +MOD06_02245FAC: ; 0x02245FAC + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x58 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x64] + bl MOD06_02245EC0 + str r0, [r4, #0x68] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02245FD0 +MOD06_02245FD0: ; 0x02245FD0 + push {r3, r4, r5, lr} + add r5, r0, #0 + bl FUN_02064738 + add r4, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0 + beq _02245FE4 + bl FUN_02064520 +_02245FE4: + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _02245FEE + bl FUN_021F6240 +_02245FEE: + add r0, r5, #0 + bl FUN_02064520 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02245FF8 +MOD06_02245FF8: ; 0x02245FF8 + ldr r3, _02246000 ; =0x0201FFC9 + ldr r0, [r1, #0x68] + bx r3 + nop +_02246000: .word 0x0201FFC9 + + thumb_func_start MOD06_02246004 +MOD06_02246004: ; 0x02246004 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5] + lsl r1, r0, #2 + ldr r0, _02246020 ; =0x022513D8 + ldr r4, [r0, r1] +_02246010: + ldrb r1, [r5, #1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02246010 + pop {r3, r4, r5, pc} + .align 2, 0 +_02246020: .word 0x022513D8 + + thumb_func_start MOD06_02246024 +MOD06_02246024: ; 0x02246024 + push {r3, lr} + mov r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #0x68] + bl FUN_020200A0 + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02246034 +MOD06_02246034: ; 0x02246034 + push {r4, r5, r6, lr} + sub sp, #0x30 + ldr r4, _02246188 ; =0x02251418 + add r2, r0, #0 + ldmia r4!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r4, _0224618C ; =0x0225146C + str r0, [r3] + ldmia r4!, {r0, r1} + add r3, sp, #0x18 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + add r0, r2, #0 + bl FUN_02064738 + add r4, r0, #0 + mov r3, #1 + add r5, r4, #0 + strb r3, [r4] + mov r2, #0 + strb r2, [r4, #2] + strb r2, [r4, #1] + str r2, [r4, #4] + add r6, sp, #0x24 + ldmia r6!, {r0, r1} + add r5, #8 + stmia r5!, {r0, r1} + ldr r0, [r6] + str r0, [r5] + str r2, [r4, #0x14] + str r2, [r4, #0x18] + str r2, [r4, #0x1c] + ldr r0, _02246190 ; =0x0015E000 + add r2, r4, #0 + add r5, sp, #0x18 + str r0, [r4, #0x38] + ldmia r5!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r5] + str r0, [r2] + lsl r0, r3, #0xa + str r0, [r4, #0x50] + mov r0, #0x2d + lsl r0, r0, #0xc + str r0, [r4, #0x40] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x48] + lsl r0, r3, #0x11 + str r0, [r4, #0x4c] + mov r0, #0x2d + bl FUN_0201B988 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r0, [r4, #0x68] + add r1, sp, #0x24 + bl FUN_02020044 + ldr r0, [r4, #0x68] + add r1, sp, #0x18 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02020088 + ldr r0, [r4, #0x68] + mov r1, #0x84 + bl FUN_02020310 + ldr r0, [r4, #0x68] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x58] + ldr r1, [r4, #0x60] + bl MOD06_0224823C + str r0, [r4, #0x6c] + ldr r0, [r4, #0x5c] + mov r1, #4 + bl FUN_021F61F4 + ldr r2, _02246194 ; =0xFFF88000 + mov r1, #1 + mov r3, #0xc + str r0, [r4, #0x70] + bl FUN_021F6254 + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _02246198 ; =0x02251490 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #2 + str r0, [r2] + ldr r4, [r4, #0x60] + add r0, r4, #0 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add r0, r4, #0 + mov r1, #2 + bl FUN_02020130 + bl MOD06_02246610 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_02246188: .word 0x02251418 +_0224618C: .word 0x0225146C +_02246190: .word 0x0015E000 +_02246194: .word 0xFFF88000 +_02246198: .word 0x02251490 + + thumb_func_start MOD06_0224619C +MOD06_0224619C: ; 0x0224619C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r6, [r5, #0x68] + ldr r4, [r5, #0x60] + sub r0, r1, r0 + str r0, [r5, #0x48] + bpl _022461B4 + mov r0, #0 + str r0, [r5, #0x48] +_022461B4: + mov r0, #2 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xa + cmp r1, r0 + ble _022461C6 + mov r0, #7 + lsl r0, r0, #0xa + sub r0, r1, r0 + str r0, [r5, #0x4c] +_022461C6: + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _022461D2 + str r0, [r5, #0x4c] +_022461D2: + mov r0, #0x2d + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0x5a + bge _0224621A + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_0224621A: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + bge _0224622C + str r0, [r5, #0x2c] +_0224622C: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + bge _0224623E + str r0, [r5, #0x30] +_0224623E: + add r1, r5, #0 + add r0, r6, #0 + add r1, #0x2c + bl FUN_02020064 + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0x12 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _0224628E + mov r0, #0 + str r0, [r5, #4] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02246294 +_0224628E: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] +_02246294: + mov r0, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224629C +MOD06_0224629C: ; 0x0224629C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x6c] + bl MOD06_022482B8 + ldr r0, [r4, #0x70] + mov r1, #2 + mov r2, #0 + mov r3, #0xc + bl FUN_021F6254 + mov r0, #1 + lsl r0, r0, #0xa + str r0, [r4, #0x50] + lsl r0, r0, #9 + str r0, [r4, #0x40] + mov r0, #0 + str r0, [r4, #0x48] + mov r0, #6 + lsl r0, r0, #0xa + str r0, [r4, #0x4c] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_022462D0 +MOD06_022462D0: ; 0x022462D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x68] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r5, #0x4c] + cmp r2, r1 + ble _022462F4 + lsl r0, r0, #4 + str r0, [r5, #0x4c] +_022462F4: + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + mov r0, #0x80 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + mov r0, #0xa + ldr r1, [r5, #0x40] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _02246338 + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0x40] +_02246338: + mov r0, #2 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + str r1, [r5, #0x38] + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _0224636A + str r0, [r5, #0x2c] +_0224636A: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _0224637C + str r0, [r5, #0x30] +_0224637C: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + sub r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [sp, #4] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r1, r0, #0xc + mov r0, #0xf + mvn r0, r0 + cmp r1, r0 + bgt _022463B6 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_022463B6: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_022463BC +MOD06_022463BC: ; 0x022463BC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x68] + mov r1, #0 + bl FUN_020200A0 + ldr r0, [r4, #0x60] + mov r1, #1 + bl FUN_02020130 + mov r0, #0 + str r0, [r4, #4] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022463E0 +MOD06_022463E0: ; 0x022463E0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r0, #0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #0x14 + bge _022463F6 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_022463F6: + ldr r3, _02246498 ; =0x0225143C + add r2, sp, #0xc + ldmia r3!, {r0, r1} + add r6, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _0224649C ; =0x02251448 + str r0, [r2] + add r2, sp, #0 + ldmia r3!, {r0, r1} + add r5, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r7, #0 + str r0, [r2] + add r2, r4, #0 + str r7, [r4, #4] + add r3, r6, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + str r7, [r4, #0x14] + str r7, [r4, #0x18] + str r7, [r4, #0x1c] + str r7, [r4, #0x38] + add r2, r4, #0 + ldmia r5!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r5] + mov r1, #2 + str r0, [r2] + lsl r1, r1, #8 + ldr r0, _022464A0 ; =0x0013B000 + str r1, [r4, #0x50] + str r0, [r4, #0x40] + lsl r0, r1, #0xa + str r0, [r4, #0x48] + lsl r0, r1, #4 + str r0, [r4, #0x4c] + ldr r0, [r4, #0x68] + add r1, r6, #0 + bl FUN_02020044 + ldr r0, [r4, #0x68] + add r1, sp, #0 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x68] + bl FUN_02020088 + ldr r0, [r4, #0x68] + mov r1, #1 + bl FUN_020200A0 + ldr r0, [r4, #0x60] + mov r1, #6 + bl FUN_02020130 + ldr r0, [r4, #0x60] + mov r1, #1 + bl FUN_020200BC + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #1 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + nop +_02246498: .word 0x0225143C +_0224649C: .word 0x02251448 +_022464A0: .word 0x0013B000 + + thumb_func_start MOD06_022464A4 +MOD06_022464A4: ; 0x022464A4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x68] + sub r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _022464C4 + lsr r0, r0, #3 + add r0, r1, r0 + str r0, [r5, #0x4c] +_022464C4: + ldr r0, [r5, #0x48] + cmp r0, #0 + bge _022464CE + mov r0, #0 + str r0, [r5, #0x48] +_022464CE: + ldr r0, _022465AC ; =0x0000013B + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0xb4 + bge _02246516 + mov r0, #1 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [r5, #0x40] +_02246516: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xa + str r1, [r5, #0x2c] + cmp r1, r0 + bge _02246528 + str r0, [r5, #0x2c] +_02246528: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + sub r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xa + str r1, [r5, #0x30] + cmp r1, r0 + bge _0224653A + str r0, [r5, #0x30] +_0224653A: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + mov r0, #6 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + str r1, [r5, #0x38] + cmp r0, #0x3c + ble _02246560 + mov r0, #0xf + lsl r0, r0, #0xe + str r0, [r5, #0x38] +_02246560: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r5, #0x48] + cmp r0, #0 + bgt _022465A4 + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_022465A4: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_022465AC: .word 0x0000013B + + thumb_func_start MOD06_022465B0 +MOD06_022465B0: ; 0x022465B0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bne _022465CE + ldr r0, [r4, #0x60] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4, #0x5c] + mov r1, #0 + bl MOD06_02246658 +_022465CE: + ldr r0, [r4, #4] + cmp r0, #0xa + bne _022465DC + ldr r0, [r4, #0x60] + mov r1, #0 + bl FUN_020200A0 +_022465DC: + ldr r0, [r4, #4] + cmp r0, #0xf + ble _022465FA + ldr r0, [r4, #0x70] + bl FUN_021F6234 + cmp r0, #1 + bne _022465FA + mov r0, #0 + str r0, [r4, #4] + ldrb r0, [r4, #1] + add r0, r0, #1 + strb r0, [r4, #1] + mov r0, #2 + strb r0, [r4, #2] +_022465FA: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246600 +MOD06_02246600: ; 0x02246600 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02246604 +MOD06_02246604: ; 0x02246604 + ldr r3, _0224660C ; =0x02006671 + mov r0, #0x61 + mov r1, #4 + bx r3 + .align 2, 0 +_0224660C: .word 0x02006671 + + thumb_func_start MOD06_02246610 +MOD06_02246610: ; 0x02246610 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r3, _02246630 ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + nop +_02246630: .word 0x00007FFF + + thumb_func_start MOD06_02246634 +MOD06_02246634: ; 0x02246634 + push {lr} + sub sp, #0xc + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _02246654 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 + add sp, #0xc + pop {pc} + .align 2, 0 +_02246654: .word 0x00007FFF + + thumb_func_start MOD06_02246658 +MOD06_02246658: ; 0x02246658 + push {r4, lr} + ldr r0, [r0, #0x38] + add r4, r1, #0 + bl FUN_020553A0 + add r1, r4, #0 + bl FUN_0205889C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224666C +MOD06_0224666C: ; 0x0224666C + push {r4, r5, r6, lr} + add r5, r1, #0 + add r4, r2, #0 + add r6, r3, #0 + bl MOD06_022466C0 + add r1, r0, #0 + str r4, [r1, #0x5c] + str r6, [r1, #0xc] + str r5, [r1, #0x20] + cmp r5, #0 + bne _0224668E + ldr r0, _02246698 ; =MOD06_022466E8 + mov r2, #0x85 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} +_0224668E: + ldr r0, _0224669C ; =MOD06_02246AA8 + mov r2, #0x85 + bl FUN_0200CA44 + pop {r4, r5, r6, pc} + .align 2, 0 +_02246698: .word MOD06_022466E8 +_0224669C: .word MOD06_02246AA8 + + thumb_func_start MOD06_022466A0 +MOD06_022466A0: ; 0x022466A0 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022466AC +MOD06_022466AC: ; 0x022466AC + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl MOD06_022466E0 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD06_022466C0 +MOD06_022466C0: ; 0x022466C0 + push {r3, r4, r5, lr} + mov r1, #0x87 + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl FUN_020169D8 + mov r2, #0x87 + mov r1, #0 + lsl r2, r2, #2 + add r4, r0, #0 + bl Call_FillMemWithValue + str r5, [r4, #0x60] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_022466E0 +MOD06_022466E0: ; 0x022466E0 + ldr r3, _022466E4 ; =0x02016A19 + bx r3 + .align 2, 0 +_022466E4: .word 0x02016A19 + + thumb_func_start MOD06_022466E8 +MOD06_022466E8: ; 0x022466E8 + push {r3, r4, r5, lr} + ldr r4, _02246718 ; =0x022515A0 + add r5, r1, #0 +_022466EE: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _022466EE + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _02246716 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02246710 + bl FUN_02064584 +_02246710: + add r0, r5, #0 + bl MOD06_02247300 +_02246716: + pop {r3, r4, r5, pc} + .align 2, 0 +_02246718: .word 0x022515A0 + + thumb_func_start MOD06_0224671C +MOD06_0224671C: ; 0x0224671C + push {r4, lr} + add r4, r0, #0 + bl MOD06_02246F0C + add r0, r4, #0 + bl MOD06_02246D3C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02246734 +MOD06_02246734: ; 0x02246734 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _0224674A + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, pc} +_0224674A: + ldr r5, _0224679C ; =0x022513E8 + add r3, sp, #0xc + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r5, _022467A0 ; =0x022514A8 + str r0, [r3] + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + add r0, r4, #0 + bl MOD06_022473EC + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_0224798C + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD06_022479AC + add r0, r4, #0 + bl MOD06_02246D8C + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224679C: .word 0x022513E8 +_022467A0: .word 0x022514A8 + + thumb_func_start MOD06_022467A4 +MOD06_022467A4: ; 0x022467A4 + push {r4, lr} + add r4, r0, #0 + bl MOD06_022486CC + mov r0, #0 + ldr r1, _022467D8 ; =0xFFFC0000 + str r0, [r4, #0x2c] + str r1, [r4, #0x54] + mov r1, #0xfe + lsl r1, r1, #0xc + str r1, [r4, #0x44] + mov r1, #0xff + lsl r1, r1, #0xc + str r1, [r4, #0x48] + mov r1, #0x5f + lsl r1, r1, #0xc + str r1, [r4, #0x4c] + mov r1, #0x61 + lsl r1, r1, #0xc + str r1, [r4, #0x50] + mov r1, #1 + str r1, [r4, #0x2c] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + .align 2, 0 +_022467D8: .word 0xFFFC0000 + + thumb_func_start MOD06_022467DC +MOD06_022467DC: ; 0x022467DC + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r2, #0 + str r2, [r4, #0x2c] + ldr r1, [r4, #0x44] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x44] + cmp r0, #0 + bgt _02246800 + mov r0, #2 + str r2, [r4, #0x44] + lsl r0, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246800: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224681C +MOD06_0224681C: ; 0x0224681C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #2 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r4, #0x54] + cmp r2, r1 + ble _0224684A + lsl r0, r0, #4 + str r0, [r4, #0x54] +_0224684A: + mov r0, #0xe + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bge _02246856 + str r0, [r4, #0x4c] +_02246856: + mov r0, #0x22 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + ble _02246862 + str r0, [r4, #0x50] +_02246862: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0xe + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bne _0224689A + mov r0, #0x22 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bne _0224689A + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD06_02247424 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224689A: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_022468A0 +MOD06_022468A0: ; 0x022468A0 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #0xf + blt _022468B8 + mov r1, #0 + str r1, [r0, #8] + ldr r1, _022468BC ; =0xFFFC0000 + str r1, [r0, #0x58] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] +_022468B8: + mov r0, #0 + bx lr + .align 2, 0 +_022468BC: .word 0xFFFC0000 + + thumb_func_start MOD06_022468C0 +MOD06_022468C0: ; 0x022468C0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r1, r1, r0 + mov r0, #0xa + lsl r0, r0, #0x10 + str r1, [sp] + cmp r1, r0 + bgt _022468F8 + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [sp] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022468F8: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, sp, #0 + bl FUN_02020044 + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224690C +MOD06_0224690C: ; 0x0224690C + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r1, [r4, #0x58] + lsr r0, r1, #0x1f + add r0, r1, r0 + asr r1, r0, #1 + ldr r0, _02246970 ; =0xFFFFE000 + str r1, [r4, #0x58] + cmp r1, r0 + ble _0224693C + str r0, [r4, #0x58] + ldr r0, [r4] + mov r1, #5 + add r0, r0, #1 + str r0, [r4] + ldr r0, [r4, #0x5c] + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r0, r0, #0x10 + bl FUN_02005578 +_0224693C: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r0, r1, r0 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_02246970: .word 0xFFFFE000 + + thumb_func_start MOD06_02246974 +MOD06_02246974: ; 0x02246974 + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #8 + blt _0224698C + mov r1, #0 + str r1, [r0, #8] + ldr r1, _02246990 ; =0xFFFFF000 + str r1, [r0, #0x58] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] +_0224698C: + mov r0, #0 + bx lr + .align 2, 0 +_02246990: .word 0xFFFFF000 + + thumb_func_start MOD06_02246994 +MOD06_02246994: ; 0x02246994 + push {r4, r5, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #0x58] + lsl r1, r0, #1 + ldr r0, _022469F0 ; =0xFFFC0000 + str r1, [r4, #0x58] + cmp r1, r0 + bge _022469A8 + str r0, [r4, #0x58] +_022469A8: + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0202011C + add r5, r0, #0 + add r3, sp, #0 + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r1, [sp] + ldr r0, [r4, #0x58] + add r0, r1, r0 + str r0, [sp] + mov r0, #0x7a + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r2, #0 + bl FUN_02020044 + ldr r1, [sp] + ldr r0, _022469F4 ; =0xFFFD8000 + cmp r1, r0 + bgt _022469E8 + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x54] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_022469E8: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_022469F0: .word 0xFFFC0000 +_022469F4: .word 0xFFFD8000 + + thumb_func_start MOD06_022469F8 +MOD06_022469F8: ; 0x022469F8 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #1 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xe + add r2, r1, r0 + lsl r1, r0, #3 + str r2, [r4, #0x54] + cmp r2, r1 + ble _02246A26 + lsl r0, r0, #3 + str r0, [r4, #0x54] +_02246A26: + mov r0, #0x16 + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + blt _02246A32 + str r0, [r4, #0x4c] +_02246A32: + mov r0, #0x1a + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bgt _02246A3E + str r0, [r4, #0x50] +_02246A3E: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + mov r0, #0x16 + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xe + cmp r1, r0 + bne _02246A72 + mov r0, #0x1a + ldr r1, [r4, #0x50] + lsl r0, r0, #0xe + cmp r1, r0 + bne _02246A72 + add r0, r4, #0 + bl MOD06_02248708 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246A72: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_02246A78 +MOD06_02246A78: ; 0x02246A78 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02246FB8 + mov r0, #0 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + + thumb_func_start MOD06_02246A8C +MOD06_02246A8C: ; 0x02246A8C + push {r4, lr} + add r4, r0, #0 + bl MOD06_022476A4 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246AA0 +MOD06_02246AA0: ; 0x02246AA0 + mov r1, #1 + str r1, [r0, #4] + mov r0, #0 + bx lr + + thumb_func_start MOD06_02246AA8 +MOD06_02246AA8: ; 0x02246AA8 + push {r3, r4, r5, lr} + ldr r4, _02246AD8 ; =0x022515D8 + add r5, r1, #0 +_02246AAE: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02246AAE + ldr r0, [r5, #0x10] + cmp r0, #1 + bne _02246AD6 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02246AD0 + bl FUN_02064584 +_02246AD0: + add r0, r5, #0 + bl MOD06_02247300 +_02246AD6: + pop {r3, r4, r5, pc} + .align 2, 0 +_02246AD8: .word 0x022515D8 + + thumb_func_start MOD06_02246ADC +MOD06_02246ADC: ; 0x02246ADC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r4, r0, #0 + mov r0, #0x82 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _02246AF2 + add sp, #0x18 + mov r0, #0 + pop {r3, r4, r5, pc} +_02246AF2: + ldr r5, _02246B44 ; =0x0225149C + add r3, sp, #0xc + ldmia r5!, {r0, r1} + add r2, r3, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r5, _02246B48 ; =0x022513F4 + str r0, [r3] + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r5] + add r1, r2, #0 + str r0, [r3] + add r0, r4, #0 + bl MOD06_022473EC + mov r1, #0x79 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_0224798C + mov r1, #0x7a + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + mov r1, #1 + bl MOD06_022479AC + add r0, r4, #0 + bl MOD06_02246D8C + mov r0, #1 + str r0, [r4, #0x10] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 +_02246B44: .word 0x0225149C +_02246B48: .word 0x022513F4 + + thumb_func_start MOD06_02246B4C +MOD06_02246B4C: ; 0x02246B4C + push {r4, lr} + add r4, r0, #0 + bl MOD06_022478A8 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246B60 +MOD06_02246B60: ; 0x02246B60 + push {r4, lr} + add r4, r0, #0 + bl MOD06_022474A4 + add r0, r4, #0 + bl MOD06_02246D64 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_02246B78 +MOD06_02246B78: ; 0x02246B78 + push {r4, lr} + mov r1, #0x82 + add r4, r0, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02246B8A + mov r0, #0 + pop {r4, pc} +_02246B8A: + bl MOD06_02246D8C + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_02246B98 +MOD06_02246B98: ; 0x02246B98 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02247B2C + add r0, r4, #0 + bl MOD06_02247C0C + add r0, r4, #0 + bl MOD06_02247664 + add r0, r4, #0 + mov r1, #1 + bl MOD06_02248654 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246BC0 +MOD06_02246BC0: ; 0x02246BC0 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02247B60 + cmp r0, #2 + beq _02246BD0 + mov r0, #0 + pop {r4, pc} +_02246BD0: + mov r0, #0x79 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_02020130 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246BE8 +MOD06_02246BE8: ; 0x02246BE8 + push {r3, lr} + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + cmp r1, #0x14 + blt _02246C02 + mov r1, #0 + str r1, [r0, #8] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bl MOD06_02247DC4 +_02246C02: + mov r0, #1 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02246C08 +MOD06_02246C08: ; 0x02246C08 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02247B60 + cmp r0, #3 + beq _02246C18 + mov r0, #0 + pop {r4, pc} +_02246C18: + ldr r0, _02246C34 ; =0x00000649 + bl FUN_020054C8 + mov r0, #2 + lsl r0, r0, #0xa + str r0, [r4, #0x54] + mov r0, #2 + str r0, [r4, #0x14] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + nop +_02246C34: .word 0x00000649 + + thumb_func_start MOD06_02246C38 +MOD06_02246C38: ; 0x02246C38 + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #0x2c] + ldr r1, [r4, #0x4c] + ldr r0, [r4, #0x54] + add r0, r1, r0 + str r0, [r4, #0x4c] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + sub r0, r1, r0 + str r0, [r4, #0x50] + mov r0, #2 + ldr r1, [r4, #0x54] + lsl r0, r0, #0xa + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [r4, #0x54] + cmp r2, r1 + ble _02246C66 + lsl r0, r0, #5 + str r0, [r4, #0x54] +_02246C66: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + blt _02246C72 + str r0, [r4, #0x4c] +_02246C72: + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bgt _02246C7E + str r0, [r4, #0x50] +_02246C7E: + ldr r0, [r4, #0x50] + str r0, [sp] + ldr r1, [r4, #0x44] + ldr r2, [r4, #0x4c] + ldr r3, [r4, #0x48] + add r0, r4, #0 + bl MOD06_02247670 + mov r0, #1 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02246CAA + add r0, r4, #0 + bl MOD06_02247B60 + cmp r0, #4 + bne _02246CAA + mov r0, #1 + str r0, [r4, #0x18] + bl MOD06_02246634 +_02246CAA: + mov r0, #0x5f + ldr r1, [r4, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bne _02246CD6 + mov r0, #0x61 + ldr r1, [r4, #0x50] + lsl r0, r0, #0xc + cmp r1, r0 + bne _02246CD6 + ldr r0, [r4, #0x60] + ldr r0, [r0, #8] + bl MOD06_02247610 + mov r0, #1 + str r0, [r4, #0x14] + add r0, r4, #0 + bl MOD06_02247648 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246CD6: + mov r0, #0 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_02246CDC +MOD06_02246CDC: ; 0x02246CDC + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0x18] + cmp r1, #0 + bne _02246CF6 + bl MOD06_02247B60 + cmp r0, #4 + bne _02246CF6 + mov r0, #1 + str r0, [r4, #0x18] + bl MOD06_02246634 +_02246CF6: + add r0, r4, #0 + bl MOD06_02247B60 + cmp r0, #2 + beq _02246D04 + mov r0, #0 + pop {r4, pc} +_02246D04: + ldr r0, [r4, #0x18] + cmp r0, #0 + bne _02246D12 + mov r0, #1 + str r0, [r4, #0x18] + bl MOD06_02246634 +_02246D12: + add r0, r4, #0 + bl MOD06_02247B70 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246D24 +MOD06_02246D24: ; 0x02246D24 + push {r4, lr} + add r4, r0, #0 + bl FUN_0200E308 + cmp r0, #0 + beq _02246D36 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_02246D36: + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02246D3C +MOD06_02246D3C: ; 0x02246D3C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02246D60 ; =MOD06_02246DA8 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA60 + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_02246D60: .word MOD06_02246DA8 + + thumb_func_start MOD06_02246D64 +MOD06_02246D64: ; 0x02246D64 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x81 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r0, #4 + str r1, [r4, r0] + ldr r0, _02246D88 ; =MOD06_02246EA4 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA60 + mov r1, #0x85 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + nop +_02246D88: .word MOD06_02246EA4 + + thumb_func_start MOD06_02246D8C +MOD06_02246D8C: ; 0x02246D8C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x85 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02246DA6 + bl FUN_0200CAB4 + mov r0, #0x85 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r4, r0] +_02246DA6: + pop {r4, pc} + + thumb_func_start MOD06_02246DA8 +MOD06_02246DA8: ; 0x02246DA8 + push {r3, r4, r5, r6, r7, lr} + mov r0, #0x81 + add r6, r1, #0 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + bne _02246E1E + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02246DBE: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02246DC8 + bl FUN_02009B04 +_02246DC8: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02246DBE + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02246DD8: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02246DE2 + bl FUN_02009D68 +_02246DE2: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02246DD8 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02246DFA + add r0, r6, #0 + bl MOD06_02247808 +_02246DFA: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r1, [r6, r0] + cmp r1, #0 + beq _02246E0A + add r0, r6, #0 + bl MOD06_02247860 +_02246E0A: + mov r0, #0x81 + lsl r0, r0, #2 + ldr r1, [r6, r0] + mov r2, #0x80 + add r1, r1, #1 + str r1, [r6, r0] + ldr r0, _02246E20 ; =MOD06_02246E24 + add r1, r6, #0 + bl FUN_0200CA98 +_02246E1E: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02246E20: .word MOD06_02246E24 + + thumb_func_start MOD06_02246E24 +MOD06_02246E24: ; 0x02246E24 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + mov r0, #0x81 + add r6, r1, #0 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #1 + bne _02246EA2 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02246E3C: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02246E46 + bl FUN_02009474 +_02246E46: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02246E3C + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02246E56: + ldr r0, [r4, r7] + cmp r0, #0 + beq _02246E60 + bl FUN_02009474 +_02246E60: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02246E56 + mov r0, #0x83 + lsl r0, r0, #2 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02246E7E + bl FUN_02016A18 + mov r0, #0x83 + mov r1, #0 + lsl r0, r0, #2 + str r1, [r6, r0] +_02246E7E: + mov r0, #0x21 + lsl r0, r0, #4 + ldr r0, [r6, r0] + cmp r0, #0 + beq _02246E94 + bl FUN_02016A18 + mov r0, #0x21 + mov r1, #0 + lsl r0, r0, #4 + str r1, [r6, r0] +_02246E94: + mov r0, #0x82 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r6, r0] + ldr r0, [sp] + bl FUN_0200CAB4 +_02246EA2: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02246EA4 +MOD06_02246EA4: ; 0x02246EA4 + push {r4, lr} + mov r0, #0x67 + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020094F0 + mov r1, #0x81 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #0 + bne _02246ED6 + bl FUN_02009B04 + ldr r0, _02246ED8 ; =MOD06_02246EDC + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA98 + mov r0, #0x81 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] +_02246ED6: + pop {r4, pc} + .align 2, 0 +_02246ED8: .word MOD06_02246EDC + + thumb_func_start MOD06_02246EDC +MOD06_02246EDC: ; 0x02246EDC + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x67 + add r4, r1, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020094F0 + mov r1, #0x81 + lsl r1, r1, #2 + ldr r1, [r4, r1] + cmp r1, #1 + bne _02246F0A + bl FUN_02009474 + mov r0, #0x82 + mov r1, #1 + lsl r0, r0, #2 + str r1, [r4, r0] + add r0, r5, #0 + bl FUN_0200CAB4 +_02246F0A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02246F0C +MOD06_02246F0C: ; 0x02246F0C + push {r3, r4, r5, lr} + add r5, r0, #0 + bl MOD06_0224700C + mov r2, #3 + mov r3, #1 + add r4, r0, #0 + lsl r2, r2, #0x12 + add r0, r5, #0 + mov r1, #0 + lsl r3, r3, #0xc + str r2, [sp] + bl MOD06_02247670 + add r0, r5, #0 + bl MOD06_0224761C + ldr r0, [r5, #0x60] + mov r1, #0 + ldr r0, [r0, #8] + bl FUN_02018884 + strh r0, [r5, #0x24] + ldr r0, [r5, #0x60] + mov r1, #3 + ldr r0, [r0, #8] + bl FUN_02018884 + strh r0, [r5, #0x26] + ldr r2, _02246FB4 ; =0x0400000A + mov r1, #3 + ldrh r3, [r2] + mov r0, #1 + bic r3, r1 + orr r0, r3 + strh r0, [r2] + ldrh r0, [r2, #4] + bic r0, r1 + strh r0, [r2, #4] + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + add r2, r5, #0 + add r0, r4, #0 + mov r1, #2 + add r2, #0x6c + bl MOD06_02247544 + ldr r0, [r5, #0x60] + add r3, r5, #0 + ldr r0, [r0, #8] + add r1, r4, #0 + mov r2, #0 + add r3, #0x68 + bl MOD06_0224756C + ldr r0, [r5, #0x60] + add r3, r5, #0 + ldr r0, [r0, #8] + add r1, r4, #0 + mov r2, #1 + add r3, #0x64 + bl MOD06_022475A4 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02247018 + add r0, r4, #0 + bl FUN_020066F4 + mov r0, #4 + mov r1, #0x20 + bl FUN_020643C0 + mov r1, #0x1e + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + pop {r3, r4, r5, pc} + .align 2, 0 +_02246FB4: .word 0x0400000A + + thumb_func_start MOD06_02246FB8 +MOD06_02246FB8: ; 0x02246FB8 + push {r4, lr} + add r4, r0, #0 + mov r0, #8 + mov r1, #0 + bl FUN_0201E6E4 + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_020643F0 + ldr r0, [r4, #0x60] + ldr r0, [r0, #8] + bl MOD06_02247610 + add r0, r4, #0 + bl MOD06_0224725C + ldr r2, _02247008 ; =0x04000008 + ldrh r1, [r4, #0x24] + ldrh r3, [r2] + mov r0, #3 + bic r3, r0 + orr r1, r3 + strh r1, [r2] + ldrh r1, [r2, #6] + bic r1, r0 + ldrh r0, [r4, #0x26] + orr r0, r1 + strh r0, [r2, #6] + mov r0, #0 + mov r1, #1 + bl FUN_02054590 + mov r0, #8 + mov r1, #1 + bl FUN_0201E6E4 + pop {r4, pc} + nop +_02247008: .word 0x04000008 + + thumb_func_start MOD06_0224700C +MOD06_0224700C: ; 0x0224700C + ldr r3, _02247014 ; =0x02006671 + mov r0, #0x61 + mov r1, #4 + bx r3 + .align 2, 0 +_02247014: .word 0x02006671 + + thumb_func_start MOD06_02247018 +MOD06_02247018: ; 0x02247018 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r4, r1, #0 + mov r1, #0x7d + add r5, r0, #0 + lsl r1, r1, #2 + add r1, r5, r1 + bl MOD06_0224777C + add r1, r5, #0 + mov r0, #0x20 + add r1, #0x74 + mov r2, #4 + bl FUN_02008C9C + str r0, [r5, #0x70] + add r0, r5, #0 + mov r2, #2 + add r0, #0x74 + mov r1, #0 + lsl r2, r2, #0x14 + bl FUN_02008D24 + mov r0, #4 + mov r1, #0 + add r2, r0, #0 + bl FUN_02008DEC + mov r1, #0x67 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + mov r1, #1 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x1a + lsl r1, r1, #4 + str r0, [r5, r1] + mov r0, #4 + mov r1, #2 + add r2, r0, #0 + bl FUN_02008DEC + mov r1, #0x69 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #2 + mov r1, #3 + mov r2, #4 + bl FUN_02008DEC + mov r1, #0x6a + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0xc + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xa + mov r3, #0 + bl FUN_020091E0 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _022470C6 + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x10 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xd + mov r3, #0 + bl FUN_020091E0 + b _022470E0 +_022470C6: + mov r0, #2 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x10 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0x10 + mov r3, #0 + bl FUN_020091E0 +_022470E0: + mov r1, #0x1b + lsl r1, r1, #4 + str r0, [r5, r1] + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_022477E4 + mov r1, #0x6d + lsl r1, r1, #2 + str r0, [r5, r1] + mov r6, #0 + str r6, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #4 + sub r1, #0x14 + str r0, [sp, #0xc] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #3 + add r3, r6, #0 + bl FUN_02009298 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + add r6, r6, #1 + cmp r0, #0 + beq _02247142 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r2, #4 + str r2, [sp, #0xc] + sub r1, #0x1c + ldr r0, [r5, r1] + add r1, r4, #0 + mov r3, #0 + bl FUN_02009298 + lsl r1, r6, #2 + add r2, r5, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r2, r1] + add r6, r6, #1 +_02247142: + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_0224783C + lsl r1, r6, #2 + add r2, r5, r1 + mov r1, #0x6f + lsl r1, r1, #2 + str r0, [r2, r1] + mov r0, #1 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x18 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xb + mov r3, #0 + bl FUN_02009358 + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02247194 + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x24 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xe + mov r3, #0 + bl FUN_02009358 + b _022471AC +_02247194: + mov r0, #2 + str r0, [sp] + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x24 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0x11 + mov r3, #0 + bl FUN_02009358 +_022471AC: + mov r1, #0x73 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r0, #3 + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + mov r2, #6 + mov r3, #0 + bl FUN_02009358 + mov r1, #0x1d + lsl r1, r1, #4 + str r0, [r5, r1] + mov r3, #0 + str r3, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x28 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xc + bl FUN_02009358 + mov r1, #0x76 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02247214 + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x30 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0xf + mov r3, #0 + bl FUN_02009358 + b _0224722E +_02247214: + mov r0, #1 + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + mov r0, #4 + sub r1, #0x30 + str r0, [sp, #8] + ldr r0, [r5, r1] + add r1, r4, #0 + mov r2, #0x12 + mov r3, #0 + bl FUN_02009358 +_0224722E: + mov r1, #0x77 + lsl r1, r1, #2 + str r0, [r5, r1] + mov r1, #0x7d + lsl r1, r1, #2 + ldr r0, [r5, #0x5c] + add r1, r5, r1 + mov r2, #4 + bl MOD06_0224778C + mov r1, #0x83 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0x18 + add r0, r5, r1 + mov r1, #4 + bl MOD06_022477D4 + mov r1, #0x21 + lsl r1, r1, #4 + str r0, [r5, r1] + add sp, #0x10 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224725C +MOD06_0224725C: ; 0x0224725C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + mov r7, #0x6b + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_02247268: + ldr r0, [r5, r7] + cmp r0, #0 + beq _02247272 + bl FUN_02009C0C +_02247272: + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _02247268 + mov r7, #0x6f + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_02247282: + ldr r0, [r4, r7] + cmp r0, #0 + beq _0224728C + bl FUN_02009E04 +_0224728C: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #3 + blt _02247282 + mov r7, #0x72 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_0224729C: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022472A6 + bl FUN_02009474 +_022472A6: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #4 + blt _0224729C + mov r7, #0x76 + mov r5, #0 + add r4, r6, #0 + lsl r7, r7, #2 +_022472B6: + ldr r0, [r4, r7] + cmp r0, #0 + beq _022472C0 + bl FUN_02009474 +_022472C0: + add r5, r5, #1 + add r4, r4, #4 + cmp r5, #2 + blt _022472B6 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02008E2C + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r6, r0] + bl FUN_02008E2C + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02008E2C + mov r0, #0x6a + lsl r0, r0, #2 + ldr r0, [r6, r0] + bl FUN_02008E2C + ldr r0, [r6, #0x70] + bl FUN_0201FDB4 + ldr r0, [r6, #0x70] + bl FUN_0201FD58 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02247300 +MOD06_02247300: ; 0x02247300 + push {r3, lr} + ldr r0, [r0, #0x70] + cmp r0, #0 + beq _0224730C + bl FUN_0201FDEC +_0224730C: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02247310 +MOD06_02247310: ; 0x02247310 + push {r4, r5, r6, lr} + sub sp, #0x70 + add r5, r0, #0 + ldr r0, [sp, #0x84] + add r4, r1, #0 + add r1, r2, #0 + add r2, r3, #0 + cmp r0, #4 + bne _02247358 + mov r0, #0 + mvn r0, r0 + str r0, [sp] + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, #0 + mov r6, #0x67 + ldr r3, [sp, #0x88] + str r0, [sp, #0xc] + lsl r6, r6, #2 + str r3, [sp, #0x10] + ldr r3, [r5, r6] + str r3, [sp, #0x14] + add r3, r6, #4 + ldr r3, [r5, r3] + add r6, #8 + str r3, [sp, #0x18] + ldr r3, [r5, r6] + str r3, [sp, #0x1c] + str r0, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl FUN_02008AA4 + b _02247392 +_02247358: + str r0, [sp] + mov r0, #0 + mvn r0, r0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r3, #0 + ldr r0, [sp, #0x88] + str r3, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r6, [r5, r0] + str r6, [sp, #0x14] + add r6, r0, #4 + ldr r6, [r5, r6] + str r6, [sp, #0x18] + add r6, r0, #0 + add r6, #8 + ldr r6, [r5, r6] + add r0, #0xc + str r6, [sp, #0x1c] + ldr r0, [r5, r0] + str r0, [sp, #0x20] + str r3, [sp, #0x24] + str r3, [sp, #0x28] + ldr r3, [sp, #0x80] + add r0, sp, #0x4c + bl FUN_02008AA4 +_02247392: + ldr r0, [r5, #0x70] + add r2, sp, #0x34 + str r0, [sp, #0x2c] + add r0, sp, #0x4c + str r0, [sp, #0x30] + ldmia r4!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4] + str r0, [r2] + ldr r0, [sp, #0x8c] + str r0, [sp, #0x40] + mov r0, #1 + str r0, [sp, #0x44] + mov r0, #4 + str r0, [sp, #0x48] + add r0, sp, #0x2c + bl FUN_0201FF84 + add r4, r0, #0 + bne _022473BE + bl ErrorHandling +_022473BE: + add r0, r4, #0 + add sp, #0x70 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_022473C4 +MOD06_022473C4: ; 0x022473C4 + push {r3, r4, r5, lr} + sub sp, #0x10 + mov r5, #1 + add r4, r3, #0 + str r5, [sp] + mov r3, #0 + str r3, [sp, #4] + str r3, [sp, #8] + str r2, [sp, #0xc] + add r2, r5, #0 + bl MOD06_02247310 + add r1, r4, #0 + add r5, r0, #0 + bl FUN_02020130 + add r0, r5, #0 + add sp, #0x10 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022473EC +MOD06_022473EC: ; 0x022473EC + push {r4, lr} + sub sp, #0x10 + ldr r2, [r0, #0xc] + mov r3, #0 + cmp r2, #1 + bne _022473FA + mov r3, #1 +_022473FA: + mov r2, #2 + str r2, [sp] + mov r4, #1 + str r4, [sp, #4] + mov r4, #0 + str r4, [sp, #8] + mov r4, #0x83 + str r4, [sp, #0xc] + bl MOD06_02247310 + add r4, r0, #0 + mov r1, #0 + bl FUN_020200A0 + add r0, r4, #0 + mov r1, #6 + bl FUN_02020130 + add r0, r4, #0 + add sp, #0x10 + pop {r4, pc} + + thumb_func_start MOD06_02247424 +MOD06_02247424: ; 0x02247424 + push {r4, lr} + mov r1, #1 + add r4, r0, #0 + bl FUN_020200BC + mov r1, #1 + add r0, r4, #0 + lsl r1, r1, #0xc + bl FUN_020200D8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224743C +MOD06_0224743C: ; 0x0224743C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r4, r0, #0 + add r0, sp, #0x1c + mov r7, #0 + str r7, [r0] + str r7, [r0, #4] + add r6, r2, #0 + ldr r5, _022474A0 ; =0x02251430 + add r3, r1, #0 + str r7, [r0, #8] + ldmia r5!, {r0, r1} + add r2, sp, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r5] + add r1, r3, #0 + str r0, [r2] + str r7, [sp] + sub r0, r7, #1 + str r0, [sp, #4] + str r7, [sp, #8] + add r0, r4, #0 + add r2, r7, #0 + add r3, r7, #0 + str r6, [sp, #0xc] + bl MOD06_02247310 + add r4, r0, #0 + mov r1, #2 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0x1c + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0x10 + bl FUN_02020064 + add r0, r7, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add r0, r4, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_022474A0: .word 0x02251430 + + thumb_func_start MOD06_022474A4 +MOD06_022474A4: ; 0x022474A4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl MOD06_0224700C + add r6, r0, #0 + mov r0, #0x6b + mov r5, #0 + add r2, r4, #0 + lsl r0, r0, #2 +_022474B8: + ldr r1, [r2, r0] + cmp r1, #0 + bne _022474E4 + mov r3, #0 + str r3, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r6, #0 + mov r2, #7 + bl FUN_020091E0 + lsl r1, r5, #2 + add r2, r4, r1 + mov r1, #0x6b + lsl r1, r1, #2 + str r0, [r2, r1] + b _022474EC +_022474E4: + add r5, r5, #1 + add r2, r2, #4 + cmp r5, #4 + blt _022474B8 +_022474EC: + cmp r5, #4 + blt _022474F4 + bl ErrorHandling +_022474F4: + mov r0, #0x72 + mov r5, #0 + add r2, r4, #0 + lsl r0, r0, #2 +_022474FC: + ldr r1, [r2, r0] + cmp r1, #0 + bne _02247528 + mov r3, #0 + str r3, [sp] + mov r0, #2 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r1, r6, #0 + mov r2, #8 + bl FUN_02009358 + lsl r1, r5, #2 + add r2, r4, r1 + mov r1, #0x72 + lsl r1, r1, #2 + str r0, [r2, r1] + b _02247530 +_02247528: + add r5, r5, #1 + add r2, r2, #4 + cmp r5, #4 + blt _022474FC +_02247530: + cmp r5, #4 + blt _02247538 + bl ErrorHandling +_02247538: + add r0, r6, #0 + bl FUN_020066F4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02247544 +MOD06_02247544: ; 0x02247544 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r2, #4 + bl FUN_02006704 + add r1, r5, #0 + add r4, r0, #0 + bl FUN_020B0138 + ldr r1, [r5] + mov r0, #3 + ldr r1, [r1, #0xc] + mov r2, #0x20 + lsl r3, r0, #7 + bl FUN_02017FB4 + add r0, r4, #0 + bl FUN_02016A18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224756C +MOD06_0224756C: ; 0x0224756C + push {r3, r4, r5, r6, lr} + sub sp, #4 + add r5, r0, #0 + add r0, r1, #0 + add r1, r2, #0 + add r4, r3, #0 + mov r2, #4 + bl FUN_02006704 + add r1, r4, #0 + add r6, r0, #0 + bl FUN_020B0088 + ldr r3, [r4] + mov r0, #0 + str r0, [sp] + ldr r2, [r3, #0x14] + ldr r3, [r3, #0x10] + add r0, r5, #0 + mov r1, #3 + bl FUN_02017E14 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #4 + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022475A4 +MOD06_022475A4: ; 0x022475A4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + add r6, r1, #0 + mov r2, #0 + add r4, r3, #0 + mov r1, #3 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_020179E0 + mov r1, #3 + add r0, r5, #0 + add r2, r1, #0 + mov r3, #0 + bl FUN_020179E0 + add r0, r6, #0 + add r1, r7, #0 + mov r2, #4 + bl FUN_02006704 + add r1, r4, #0 + add r6, r0, #0 + bl FUN_020B0180 + ldr r3, [r4] + add r0, r5, #0 + add r2, r3, #0 + ldr r3, [r3, #8] + mov r1, #3 + add r2, #0xc + bl FUN_02017DFC + mov r0, #0x20 + str r0, [sp] + str r0, [sp, #4] + mov r0, #0xc + mov r2, #0 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #3 + add r3, r2, #0 + bl FUN_020186B4 + add r0, r5, #0 + mov r1, #3 + bl FUN_02017CD0 + add r0, r6, #0 + bl FUN_02016A18 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02247610 +MOD06_02247610: ; 0x02247610 + ldr r3, _02247618 ; =0x02018745 + mov r1, #3 + bx r3 + nop +_02247618: .word 0x02018745 + + thumb_func_start MOD06_0224761C +MOD06_0224761C: ; 0x0224761C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224767C + mov r0, #0 + str r0, [r4, #0x2c] + add r0, r4, #0 + bl MOD06_02247648 + add r0, r4, #0 + bl MOD06_02247650 + add r0, r4, #0 + bl MOD06_02247640 + mov r0, #1 + str r0, [r4, #0x2c] + pop {r4, pc} + + thumb_func_start MOD06_02247640 +MOD06_02247640: ; 0x02247640 + mov r1, #1 + str r1, [r0, #0x30] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247648 +MOD06_02247648: ; 0x02247648 + mov r1, #0 + str r1, [r0, #0x30] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247650 +MOD06_02247650: ; 0x02247650 + mov r1, #0x18 + str r1, [r0, #0x34] + mov r1, #0 + str r1, [r0, #0x38] + mov r1, #0x17 + str r1, [r0, #0x3c] + mov r1, #1 + str r1, [r0, #0x40] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247664 +MOD06_02247664: ; 0x02247664 + mov r1, #0x17 + str r1, [r0, #0x3c] + mov r1, #1 + str r1, [r0, #0x40] + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247670 +MOD06_02247670: ; 0x02247670 + str r1, [r0, #0x44] + str r3, [r0, #0x48] + ldr r1, [sp] + str r2, [r0, #0x4c] + str r1, [r0, #0x50] + bx lr + + thumb_func_start MOD06_0224767C +MOD06_0224767C: ; 0x0224767C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + beq _0224768E + bl ErrorHandling +_0224768E: + ldr r0, _022476A0 ; =MOD06_022476D4 + add r1, r4, #0 + mov r2, #0x81 + bl FUN_0200CA60 + mov r1, #0x86 + lsl r1, r1, #2 + str r0, [r4, r1] + pop {r4, pc} + .align 2, 0 +_022476A0: .word MOD06_022476D4 + + thumb_func_start MOD06_022476A4 +MOD06_022476A4: ; 0x022476A4 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + cmp r0, #0 + bne _022476B6 + bl ErrorHandling +_022476B6: + mov r0, #0x86 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200CAB4 + mov r2, #1 + lsl r2, r2, #0x1a + ldr r1, [r2] + ldr r0, _022476D0 ; =0xFFFF1FFF + and r0, r1 + str r0, [r2] + pop {r4, pc} + nop +_022476D0: .word 0xFFFF1FFF + + thumb_func_start MOD06_022476D4 +MOD06_022476D4: ; 0x022476D4 + push {r3, r4, r5, r6} + ldr r0, [r1, #0x2c] + cmp r0, #0 + beq _0224776A + mov r3, #1 + lsl r3, r3, #0x1a + ldr r2, [r3] + ldr r0, _02247770 ; =0xFFFF1FFF + and r2, r0 + ldr r0, [r1, #0x30] + lsl r0, r0, #0xd + orr r0, r2 + str r0, [r3] + add r3, #0x48 + ldrh r2, [r3] + mov r0, #0x3f + bic r2, r0 + ldr r0, [r1, #0x34] + orr r2, r0 + ldr r0, [r1, #0x38] + cmp r0, #0 + beq _02247704 + mov r0, #0x20 + orr r2, r0 +_02247704: + ldr r0, _02247774 ; =0x04000048 + strh r2, [r0] + ldrh r2, [r0, #2] + mov r0, #0x3f + bic r2, r0 + ldr r0, [r1, #0x3c] + orr r2, r0 + ldr r0, [r1, #0x40] + cmp r0, #0 + beq _0224771C + mov r0, #0x20 + orr r2, r0 +_0224771C: + ldr r5, _02247778 ; =0x0400004A + strh r2, [r5] + ldr r2, [r1, #0x50] + ldr r6, [r1, #0x48] + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + ldr r2, [r1, #0x4c] + asr r4, r0, #0xc + asr r0, r2, #0xb + lsr r0, r0, #0x14 + add r0, r2, r0 + ldr r2, [r1, #0x44] + asr r3, r0, #0xc + asr r0, r2, #0xb + lsr r0, r0, #0x14 + asr r1, r6, #0xb + add r0, r2, r0 + lsr r1, r1, #0x14 + asr r0, r0, #0xc + add r1, r6, r1 + lsl r2, r0, #8 + mov r0, #0xff + asr r1, r1, #0xc + lsl r0, r0, #8 + lsl r1, r1, #0x18 + and r2, r0 + lsr r1, r1, #0x18 + orr r2, r1 + add r1, r5, #0 + sub r1, #0xa + strh r2, [r1] + lsl r1, r3, #8 + and r1, r0 + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + orr r1, r0 + sub r0, r5, #6 + strh r1, [r0] +_0224776A: + pop {r3, r4, r5, r6} + bx lr + nop +_02247770: .word 0xFFFF1FFF +_02247774: .word 0x04000048 +_02247778: .word 0x0400004A + + thumb_func_start MOD06_0224777C +MOD06_0224777C: ; 0x0224777C + ldr r3, _02247788 ; =0x02068B69 + add r2, r0, #0 + add r0, r1, #0 + ldr r1, [r2, #0x5c] + mov r2, #2 + bx r3 + .align 2, 0 +_02247788: .word 0x02068B69 + + thumb_func_start MOD06_0224778C +MOD06_0224778C: ; 0x0224778C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + mov r1, #0x32 + add r6, r0, #0 + mov r0, #4 + lsl r1, r1, #6 + add r7, r2, #0 + bl FUN_02016998 + add r4, r0, #0 + bne _022477A8 + bl ErrorHandling +_022477A8: + mov r1, #0 + add r0, r6, #0 + add r2, r1, #0 + bl FUN_020671BC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + mov r0, #2 + str r0, [sp, #8] + ldrh r0, [r5, #6] + add r2, r7, #0 + add r3, r4, #0 + str r0, [sp, #0xc] + ldrh r0, [r5] + ldrh r1, [r5, #2] + bl FUN_02012560 + add r0, r4, #0 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022477D4 +MOD06_022477D4: ; 0x022477D4 + add r3, r0, #0 + add r2, r1, #0 + ldrh r0, [r3] + ldrh r1, [r3, #4] + ldr r3, _022477E0 ; =0x02012471 + bx r3 + .align 2, 0 +_022477E0: .word 0x02012471 + + thumb_func_start MOD06_022477E4 +MOD06_022477E4: ; 0x022477E4 + push {lr} + sub sp, #0xc + mov r2, #3 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + mov r2, #4 + str r2, [sp, #8] + mov r2, #0x67 + lsl r2, r2, #2 + ldr r0, [r0, r2] + mov r2, #5 + mov r3, #0 + bl FUN_020091E0 + add sp, #0xc + pop {pc} + .align 2, 0 + + thumb_func_start MOD06_02247808 +MOD06_02247808: ; 0x02247808 + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x67 + lsl r1, r1, #2 + ldr r0, [r0, r1] + mov r1, #3 + bl FUN_020094F0 + bl FUN_02009C5C + mov r1, #1 + bl FUN_020B1A14 + mov r1, #0x32 + add r5, r0, #0 + add r0, r4, #0 + lsl r1, r1, #6 + bl DC_FlushRange + mov r2, #0x32 + add r0, r4, #0 + add r1, r5, #0 + lsl r2, r2, #6 + bl GX_LoadOBJ + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224783C +MOD06_0224783C: ; 0x0224783C + push {r3, lr} + sub sp, #0x10 + mov r2, #2 + str r2, [sp] + mov r2, #1 + str r2, [sp, #4] + str r2, [sp, #8] + mov r2, #4 + str r2, [sp, #0xc] + mov r2, #0x1a + lsl r2, r2, #4 + ldr r0, [r0, r2] + mov r2, #3 + mov r3, #0 + bl FUN_02009298 + add sp, #0x10 + pop {r3, pc} + + thumb_func_start MOD06_02247860 +MOD06_02247860: ; 0x02247860 + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020094F0 + bl FUN_02009C5C + add r6, r0, #0 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020094F0 + add r1, r6, #0 + bl FUN_02009E54 + mov r1, #1 + bl FUN_020B19C4 + add r5, r0, #0 + add r0, r4, #0 + mov r1, #0x20 + bl DC_FlushRange + add r0, r4, #0 + add r1, r5, #0 + mov r2, #0x20 + bl GX_LoadOBJPltt + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022478A8 +MOD06_022478A8: ; 0x022478A8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020094F0 + add r4, r0, #0 + bl FUN_02009C0C + mov r0, #0x67 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02009490 + mov r1, #0x6b + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_022478D2: + ldr r2, [r3, r1] + cmp r2, r4 + bne _022478E6 + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x6b + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _022478EE +_022478E6: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #4 + blt _022478D2 +_022478EE: + cmp r0, #4 + blt _022478F6 + bl ErrorHandling +_022478F6: + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + mov r1, #2 + bl FUN_020094F0 + add r4, r0, #0 + bl FUN_02009E04 + mov r0, #0x1a + lsl r0, r0, #4 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02009490 + mov r1, #0x6f + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_0224791C: + ldr r2, [r3, r1] + cmp r2, r4 + bne _02247930 + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x6f + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _02247938 +_02247930: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #3 + blt _0224791C +_02247938: + cmp r0, #3 + blt _02247940 + bl ErrorHandling +_02247940: + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + mov r1, #3 + bl FUN_020094F0 + add r4, r0, #0 + bl FUN_02009474 + mov r0, #0x69 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_02009490 + mov r1, #0x72 + mov r0, #0 + add r3, r5, #0 + lsl r1, r1, #2 +_02247966: + ldr r2, [r3, r1] + cmp r2, r4 + bne _0224797A + lsl r1, r0, #2 + add r2, r5, r1 + mov r1, #0x72 + mov r3, #0 + lsl r1, r1, #2 + str r3, [r2, r1] + b _02247982 +_0224797A: + add r0, r0, #1 + add r3, r3, #4 + cmp r0, #4 + blt _02247966 +_02247982: + cmp r0, #4 + blt _0224798A + bl ErrorHandling +_0224798A: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224798C +MOD06_0224798C: ; 0x0224798C + push {r3, lr} + sub sp, #0x10 + mov r2, #3 + str r2, [sp] + sub r3, r2, #4 + str r3, [sp, #4] + mov r3, #0 + str r3, [sp, #8] + mov r3, #0x81 + str r3, [sp, #0xc] + mov r3, #2 + bl MOD06_02247310 + add sp, #0x10 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022479AC +MOD06_022479AC: ; 0x022479AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + add r5, r0, #0 + mov r0, #2 + ldr r4, _02247A14 ; =0x02251634 + add r6, r1, #0 + str r0, [r5, #0x14] + mov r7, #0 +_022479BC: + ldr r0, [r4] + add r1, sp, #0x1c + str r0, [sp, #0x1c] + ldr r0, [r4, #4] + add r2, sp, #0x10 + str r0, [sp, #0x20] + mov r0, #0 + str r0, [sp, #0x24] + ldr r0, [r4, #8] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + str r0, [sp, #0x18] + ldr r0, [r4, #0xc] + str r0, [sp, #8] + ldr r0, [r4, #0x10] + ldr r3, [sp, #8] + str r0, [sp] + str r0, [sp, #0xc] + str r6, [sp, #4] + add r0, r5, #0 + bl MOD06_02247A18 + mov r0, #1 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0x14 + add r0, r1, r0 + str r0, [sp, #0x1c] + ldr r0, [sp, #0xc] + ldr r3, [sp, #8] + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x1c + add r2, sp, #0x10 + str r6, [sp, #4] + bl MOD06_02247A18 + add r7, r7, #1 + add r4, #0x14 + cmp r7, #0xd + blt _022479BC + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247A14: .word 0x02251634 + + thumb_func_start MOD06_02247A18 +MOD06_02247A18: ; 0x02247A18 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + ldr r0, [sp, #0x34] + str r3, [sp, #8] + str r5, [sp, #0x10] + add r4, r1, #0 + str r0, [sp, #0xc] + ldmia r2!, {r0, r1} + add r3, sp, #0x14 + stmia r3!, {r0, r1} + ldr r0, [r2] + ldr r1, _02247A50 ; =0x022514E8 + str r0, [r3] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x84 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r5, r0] + ldr r3, [sp, #0x30] + add r2, r4, #0 + bl FUN_020644E4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_02247A50: .word 0x022514E8 + + thumb_func_start MOD06_02247A54 +MOD06_02247A54: ; 0x02247A54 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0xc + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #4] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + ldr r2, [r4, #0xc] + ldr r3, [r4, #4] + add r1, sp, #0 + bl MOD06_022473C4 + mov r1, #0 + str r0, [r4, #8] + bl FUN_020200A0 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_02247A9C +MOD06_02247A9C: ; 0x02247A9C + ldr r3, _02247AA4 ; =0x0201FFC9 + ldr r0, [r1, #8] + bx r3 + nop +_02247AA4: .word 0x0201FFC9 + + thumb_func_start MOD06_02247AA8 +MOD06_02247AA8: ; 0x02247AA8 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + add r5, r0, #0 + bl FUN_0206477C + ldr r1, [sp] + ldr r0, [r4, #0x18] + add r0, r1, r0 + lsr r2, r0, #0x1f + lsl r1, r0, #0xb + str r0, [sp] + sub r1, r1, r2 + mov r0, #0xb + ror r1, r0 + add r0, r2, r1 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #8] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0x10] + cmp r0, #1 + bne _02247B22 + ldr r3, [r4, #0x14] + ldr r0, [r3, #0x14] + cmp r0, #2 + bne _02247B16 + ldr r2, [r3, #0x4c] + ldr r0, [r3, #0x50] + mov r3, #2 + ldr r6, [sp, #4] + lsl r3, r3, #0xc + sub r5, r6, r3 + mov r1, #0 + cmp r5, r2 + blt _02247B0C + cmp r5, r0 + bgt _02247B0C + add r3, r6, r3 + cmp r3, r2 + blt _02247B0C + cmp r3, r0 + bgt _02247B0C + mov r1, #1 +_02247B0C: + ldr r0, [r4, #8] + bl FUN_020200A0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_02247B16: + cmp r0, #1 + bne _02247B22 + ldr r0, [r4, #8] + mov r1, #0 + bl FUN_020200A0 +_02247B22: + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02247B28 +MOD06_02247B28: ; 0x02247B28 + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247B2C +MOD06_02247B2C: ; 0x02247B2C + push {r4, lr} + sub sp, #0x18 + add r2, sp, #0xc + mov r3, #0 + add r4, r0, #0 + str r3, [r2] + str r3, [r2, #4] + str r3, [r2, #8] + str r4, [sp, #8] + add r0, sp, #8 + str r0, [sp] + mov r0, #0x82 + str r0, [sp, #4] + mov r0, #0x1e + lsl r0, r0, #4 + ldr r0, [r4, r0] + ldr r1, _02247B5C ; =0x02251510 + bl FUN_020644E4 + mov r1, #0x7b + lsl r1, r1, #2 + str r0, [r4, r1] + add sp, #0x18 + pop {r4, pc} + .align 2, 0 +_02247B5C: .word 0x02251510 + + thumb_func_start MOD06_02247B60 +MOD06_02247B60: ; 0x02247B60 + push {r3, lr} + mov r1, #0x7b + lsl r1, r1, #2 + ldr r0, [r0, r1] + bl FUN_02064738 + ldrb r0, [r0, #2] + pop {r3, pc} + + thumb_func_start MOD06_02247B70 +MOD06_02247B70: ; 0x02247B70 + push {r3, r4, r5, lr} + add r4, r0, #0 + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02064738 + add r5, r0, #0 + ldr r0, [r5, #0x60] + cmp r0, #0 + beq _02247B8A + bl FUN_02064520 +_02247B8A: + ldr r0, [r5, #0x64] + cmp r0, #0 + beq _02247B94 + bl FUN_021F6240 +_02247B94: + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_02064520 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02247BA0 +MOD06_02247BA0: ; 0x02247BA0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + ldr r0, [r0] + add r1, sp, #0 + str r0, [r4, #0x5c] + add r0, r5, #0 + bl FUN_0206477C + mov r2, #0 + ldr r0, [r4, #0x5c] + add r1, sp, #0 + add r3, r2, #0 + bl MOD06_0224743C + str r0, [r4, #0x58] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_02247BCC +MOD06_02247BCC: ; 0x02247BCC + ldr r3, _02247BD4 ; =0x0201FFC9 + ldr r0, [r1, #0x58] + bx r3 + nop +_02247BD4: .word 0x0201FFC9 + + thumb_func_start MOD06_02247BD8 +MOD06_02247BD8: ; 0x02247BD8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldrb r0, [r5] + lsl r1, r0, #2 + ldr r0, _02247BF4 ; =0x02251460 + ldr r4, [r0, r1] +_02247BE4: + ldrb r1, [r5, #1] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02247BE4 + pop {r3, r4, r5, pc} + .align 2, 0 +_02247BF4: .word 0x02251460 + + thumb_func_start MOD06_02247BF8 +MOD06_02247BF8: ; 0x02247BF8 + bx lr + .align 2, 0 + + thumb_func_start MOD06_02247BFC +MOD06_02247BFC: ; 0x02247BFC + push {r3, lr} + mov r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #0x58] + bl FUN_020200A0 + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02247C0C +MOD06_02247C0C: ; 0x02247C0C + push {r4, r5, r6, lr} + sub sp, #0x18 + ldr r4, _02247CAC ; =0x02251478 + add r2, r0, #0 + ldmia r4!, {r0, r1} + add r3, sp, #0xc + stmia r3!, {r0, r1} + ldr r0, [r4] + ldr r4, _02247CB0 ; =0x02251424 + str r0, [r3] + ldmia r4!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldr r0, [r4] + str r0, [r3] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r2, r0] + bl FUN_02064738 + add r4, r0, #0 + mov r3, #1 + add r5, r4, #0 + strb r3, [r4] + mov r2, #0 + strb r2, [r4, #1] + strb r2, [r4, #2] + add r6, sp, #0xc + ldmia r6!, {r0, r1} + add r5, #8 + stmia r5!, {r0, r1} + ldr r0, [r6] + add r6, sp, #0 + str r0, [r5] + str r2, [r4, #0x14] + str r2, [r4, #0x18] + mov r0, #0xf + add r5, r4, #0 + str r2, [r4, #0x1c] + lsl r0, r0, #0xe + str r0, [r4, #0x38] + ldmia r6!, {r0, r1} + add r5, #0x2c + stmia r5!, {r0, r1} + ldr r0, [r6] + add r1, sp, #0xc + str r0, [r5] + lsl r0, r3, #9 + str r0, [r4, #0x50] + mov r0, #0x2d + lsl r0, r0, #0xe + str r0, [r4, #0x40] + str r2, [r4, #0x48] + lsl r0, r3, #0xd + str r0, [r4, #0x4c] + ldr r0, [r4, #0x58] + bl FUN_02020044 + ldr r0, [r4, #0x58] + add r1, sp, #0 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x58] + bl FUN_02020088 + ldr r0, [r4, #0x58] + mov r1, #1 + bl FUN_020200A0 + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_02247CAC: .word 0x02251478 +_02247CB0: .word 0x02251424 + + thumb_func_start MOD06_02247CB4 +MOD06_02247CB4: ; 0x02247CB4 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0x10 + cmp r1, r0 + bge _02247CD4 + lsr r0, r0, #2 + add r0, r1, r0 + str r0, [r5, #0x4c] +_02247CD4: + ldr r0, _02247DB4 ; =0x0000013B + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r2, r0, #0xc + ldr r0, _02247DB8 ; =0x0000010E + cmp r2, r0 + bge _02247D1E + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_02247D1E: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02247D30 + str r0, [r5, #0x2c] +_02247D30: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #1 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _02247D42 + str r0, [r5, #0x30] +_02247D42: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + mov r0, #6 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xc + sub r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + str r1, [r5, #0x38] + asr r0, r0, #0xc + bpl _02247D64 + mov r0, #0 + str r0, [r5, #0x38] +_02247D64: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #4] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020044 + ldr r1, [sp, #4] + ldr r0, _02247DBC ; =0xFFFC0000 + cmp r1, r0 + bge _02247DAE + add r0, r4, #0 + mov r1, #0 + bl FUN_020200A0 + mov r0, #2 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_02247DAE: + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_02247DB4: .word 0x0000013B +_02247DB8: .word 0x0000010E +_02247DBC: .word 0xFFFC0000 + + thumb_func_start MOD06_02247DC0 +MOD06_02247DC0: ; 0x02247DC0 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02247DC4 +MOD06_02247DC4: ; 0x02247DC4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r3, _02247F1C ; =0x0225140C + add r5, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r3, _02247F20 ; =0x02251400 + str r0, [r2] + ldmia r3!, {r0, r1} + add r2, sp, #0x18 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x7b + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02064738 + add r4, r0, #0 + mov r0, #2 + add r2, r4, #0 + strb r0, [r4] + mov r6, #0 + strb r6, [r4, #1] + mov r7, #1 + strb r7, [r4, #2] + str r6, [r4, #4] + add r3, sp, #0x24 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r3, sp, #0x18 + str r0, [r2] + str r6, [r4, #0x14] + str r6, [r4, #0x18] + str r6, [r4, #0x1c] + ldr r6, _02247F24 ; =0x0013B000 + add r2, r4, #0 + str r6, [r4, #0x38] + ldmia r3!, {r0, r1} + add r2, #0x2c + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r7, #0 + add r0, #0xff + str r0, [r4, #0x50] + mov r0, #0xe1 + lsl r0, r0, #0xc + str r0, [r4, #0x40] + mov r0, #3 + lsl r0, r0, #0x12 + str r0, [r4, #0x48] + lsl r0, r7, #0x11 + str r0, [r4, #0x4c] + lsr r0, r6, #0xc + bl FUN_0201B988 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x14] + ldr r1, [r4, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r4, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r4, #0x18] + ldr r1, [r4, #8] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #0x24] + ldr r1, [r4, #0xc] + ldr r0, [r4, #0x18] + add r0, r1, r0 + str r0, [sp, #0x28] + ldr r0, [r4, #0x58] + add r1, sp, #0x24 + bl FUN_02020044 + ldr r0, [r4, #0x58] + add r1, sp, #0x18 + bl FUN_02020064 + ldr r1, [r4, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + ldr r0, [r4, #0x58] + bl FUN_02020088 + ldr r0, [r4, #0x58] + add r1, r7, #0 + bl FUN_020200A0 + mov r1, #0x1e + lsl r1, r1, #4 + ldr r0, [r5, r1] + add r1, r1, #4 + ldr r1, [r5, r1] + bl MOD06_0224823C + str r0, [r4, #0x60] + add r0, r7, #0 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x60] + mov r1, #4 + bl FUN_021F61F4 + ldr r2, _02247F28 ; =0xFFF88000 + add r1, r7, #0 + mov r3, #0xc + str r0, [r4, #0x64] + bl FUN_021F6254 + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + ldr r3, _02247F2C ; =0x02251484 + str r0, [r1, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + mov r0, #0x79 + ldr r1, [r4, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + mov r1, #2 + add r0, r4, #0 + bl FUN_020200EC + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02020054 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_02247F1C: .word 0x0225140C +_02247F20: .word 0x02251400 +_02247F24: .word 0x0013B000 +_02247F28: .word 0xFFF88000 +_02247F2C: .word 0x02251484 + + thumb_func_start MOD06_02247F30 +MOD06_02247F30: ; 0x02247F30 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + sub r0, r1, r0 + str r0, [r5, #0x48] + bpl _02247F46 + mov r0, #0 + str r0, [r5, #0x48] +_02247F46: + mov r0, #2 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xa + cmp r1, r0 + ble _02247F58 + mov r0, #6 + lsl r0, r0, #0xa + sub r0, r1, r0 + str r0, [r5, #0x4c] +_02247F58: + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + cmp r1, r0 + bge _02247F64 + str r0, [r5, #0x4c] +_02247F64: + ldr r0, _02248098 ; =0x0000013B + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r2, r0, #0xc + ldr r0, _0224809C ; =0x0000010E + cmp r2, r0 + bge _02247FAE + mov r0, #1 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [r5, #0x40] +_02247FAE: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #6 + lsl r0, r0, #0xa + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02247FC0 + str r0, [r5, #0x2c] +_02247FC0: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #6 + lsl r0, r0, #0xa + str r1, [r5, #0x30] + cmp r1, r0 + ble _02247FD2 + str r0, [r5, #0x30] +_02247FD2: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + mov r0, #2 + ldr r1, [r5, #0x38] + lsl r0, r0, #0xe + add r1, r1, r0 + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + str r1, [r5, #0x38] + asr r1, r0, #0xc + mov r0, #0x5a + lsl r0, r0, #2 + cmp r1, r0 + ble _02247FFA + lsl r0, r0, #0xc + str r0, [r5, #0x38] +_02247FFA: + ldr r1, [r5, #0x38] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B9A0 + add r1, r0, #0 + add r0, r4, #0 + bl FUN_02020088 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #0x10] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02020044 + ldr r0, [r5, #0x48] + cmp r0, #0 + bne _0224803C + mov r0, #0 + str r0, [r5, #4] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + b _02248042 +_0224803C: + ldr r0, [r5, #4] + add r0, r0, #1 + str r0, [r5, #4] +_02248042: + ldr r0, [r5, #4] + cmp r0, #0xc + bne _0224804E + ldr r0, [r5, #0x60] + bl MOD06_02248270 +_0224804E: + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + add r0, r4, #0 + bl FUN_02020120 + add r3, r0, #0 + ldmia r3!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [sp] + mov r0, #5 + add r1, #0x80 + lsl r0, r0, #0xa + str r1, [sp] + cmp r1, r0 + ble _02248078 + str r0, [sp] +_02248078: + ldr r1, [sp, #4] + mov r0, #5 + add r1, #0x80 + lsl r0, r0, #0xa + str r1, [sp, #4] + cmp r1, r0 + ble _02248088 + str r0, [sp, #4] +_02248088: + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + nop +_02248098: .word 0x0000013B +_0224809C: .word 0x0000010E + + thumb_func_start MOD06_022480A0 +MOD06_022480A0: ; 0x022480A0 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + mov r1, #3 + add r0, r4, #0 + bl FUN_02020130 + add r0, r4, #0 + bl FUN_0202011C + ldr r4, [r0, #4] + ldr r0, [r5, #0x58] + bl FUN_0202011C + ldr r0, [r0, #4] + sub r0, r4, r0 + str r0, [r5, #0x54] + ldr r0, [r5, #0x60] + bl MOD06_02248264 + ldr r0, [r5, #0x64] + mov r1, #2 + mov r2, #0 + mov r3, #0xc + bl FUN_021F6254 + mov r1, #1 + lsl r1, r1, #8 + str r1, [r5, #0x50] + lsl r0, r1, #0xb + str r0, [r5, #0x40] + mov r0, #0 + str r0, [r5, #0x48] + lsl r0, r1, #3 + str r0, [r5, #0x4c] + mov r0, #3 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022480FC +MOD06_022480FC: ; 0x022480FC + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + ldr r1, [r5, #0x48] + ldr r0, [r5, #0x4c] + ldr r4, [r5, #0x58] + add r0, r1, r0 + str r0, [r5, #0x48] + mov r0, #1 + ldr r1, [r5, #0x4c] + lsl r0, r0, #0xc + add r2, r1, r0 + lsl r1, r0, #4 + str r2, [r5, #0x4c] + cmp r2, r1 + ble _02248120 + lsl r0, r0, #4 + str r0, [r5, #0x4c] +_02248120: + ldr r1, [r5, #0x40] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + lsl r0, r0, #4 + lsr r0, r0, #0x10 + bl FUN_0201B988 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x14] + mov r0, #0x80 + bl FUN_0201B970 + ldr r2, [r5, #0x48] + asr r1, r2, #0xb + lsr r1, r1, #0x14 + add r1, r2, r1 + asr r1, r1, #0xc + mul r0, r1 + str r0, [r5, #0x18] + mov r0, #0x87 + ldr r1, [r5, #0x40] + lsl r0, r0, #0xc + cmp r1, r0 + bge _02248164 + mov r0, #1 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [r5, #0x40] +_02248164: + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r5, #0x2c] + cmp r1, r0 + ble _02248176 + str r0, [r5, #0x2c] +_02248176: + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x50] + add r1, r1, r0 + mov r0, #2 + lsl r0, r0, #0xc + str r1, [r5, #0x30] + cmp r1, r0 + ble _02248188 + str r0, [r5, #0x30] +_02248188: + add r1, r5, #0 + add r0, r4, #0 + add r1, #0x2c + bl FUN_02020064 + ldr r1, [r5, #8] + ldr r0, [r5, #0x14] + add r0, r1, r0 + str r0, [sp, #0x18] + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x18] + add r0, r1, r0 + str r0, [sp, #0x1c] + add r0, r4, #0 + add r1, sp, #0x18 + bl FUN_02020044 + mov r0, #0x79 + ldr r1, [r5, #0x5c] + lsl r0, r0, #2 + ldr r4, [r1, r0] + add r0, r4, #0 + bl FUN_02020120 + add r2, sp, #0xc + add r3, sp, #0x18 + add r6, r0, #0 + ldmia r3!, {r0, r1} + add r7, r2, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldmia r6!, {r0, r1} + add r2, sp, #0 + stmia r2!, {r0, r1} + ldr r0, [r6] + str r0, [r2] + mov r0, #1 + ldr r1, [r5, #0x54] + lsl r0, r0, #0xc + sub r1, r1, r0 + str r1, [r5, #0x54] + ldr r0, [sp, #0x10] + add r0, r0, r1 + str r0, [sp, #0x10] + add r0, r4, #0 + add r1, r7, #0 + bl FUN_02020044 + mov r0, #1 + ldr r1, [sp] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp] + cmp r2, r1 + ble _022481FE + lsl r0, r0, #5 + str r0, [sp] +_022481FE: + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #8 + add r2, r1, r0 + lsl r1, r0, #5 + str r2, [sp, #4] + cmp r2, r1 + ble _02248212 + lsl r0, r0, #5 + str r0, [sp, #4] +_02248212: + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02020064 + ldr r1, [sp, #0x1c] + asr r0, r1, #0xb + lsr r0, r0, #0x14 + add r0, r1, r0 + asr r0, r0, #0xc + cmp r0, #0xf0 + blt _02248232 + mov r0, #2 + strb r0, [r5, #2] + ldrb r0, [r5, #1] + add r0, r0, #1 + strb r0, [r5, #1] +_02248232: + mov r0, #0 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248238 +MOD06_02248238: ; 0x02248238 + mov r0, #0 + bx lr + + thumb_func_start MOD06_0224823C +MOD06_0224823C: ; 0x0224823C + push {lr} + sub sp, #0x1c + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2] + str r3, [r2, #4] + str r1, [sp, #0xc] + str r3, [r2, #8] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x81 + str r1, [sp, #4] + ldr r1, _02248260 ; =0x022514D4 + bl FUN_020644E4 + add sp, #0x1c + pop {pc} + nop +_02248260: .word 0x022514D4 + + thumb_func_start MOD06_02248264 +MOD06_02248264: ; 0x02248264 + push {r3, lr} + bl FUN_02064738 + mov r1, #0 + str r1, [r0] + pop {r3, pc} + + thumb_func_start MOD06_02248270 +MOD06_02248270: ; 0x02248270 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_02064738 + add r4, r0, #0 + mov r0, #1 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #0xc] + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + 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] + add r0, r5, #0 + bl FUN_0206476C + ldr r0, [r4, #0x20] + mov r1, #5 + bl FUN_02020130 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022482B8 +MOD06_022482B8: ; 0x022482B8 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + bl FUN_02064738 + add r4, r0, #0 + mov r0, #2 + str r0, [r4] + mov r0, #0 + str r0, [r4, #4] + str r0, [r4, #0xc] + str r0, [r4, #8] + str r0, [r4, #0x10] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl MOD06_02245EAC + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x20] + mov r1, #4 + bl FUN_02020130 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022482F4 +MOD06_022482F4: ; 0x022482F4 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + str r1, [r4, #0x1c] + ldr r0, [r0, #4] + str r0, [r4, #0x20] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_02248308 +MOD06_02248308: ; 0x02248308 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _0224834C + ldr r1, [r4, #0xc] + lsl r2, r1, #2 + ldr r1, _02248350 ; =0x02251570 + ldr r1, [r1, r2] + str r1, [r4, #0x14] + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #0xc + blt _0224834C + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_0224834C: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_02248350: .word 0x02251570 + + thumb_func_start MOD06_02248354 +MOD06_02248354: ; 0x02248354 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r1, [r4, #4] + cmp r1, #0 + bne _02248398 + ldr r1, [r4, #0xc] + lsl r2, r1, #2 + ldr r1, _0224839C ; =0x022514C4 + ldr r1, [r1, r2] + str r1, [r4, #0x14] + add r1, sp, #0 + bl FUN_0206477C + ldr r1, [sp, #4] + ldr r0, [r4, #0x14] + add r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_02020044 + ldr r0, [r4, #0xc] + add r0, r0, #1 + str r0, [r4, #0xc] + cmp r0, #4 + blt _02248398 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] +_02248398: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224839C: .word 0x022514C4 + + thumb_func_start MOD06_022483A0 +MOD06_022483A0: ; 0x022483A0 + push {r3, lr} + ldr r2, [r1] + cmp r2, #1 + beq _022483AE + cmp r2, #2 + beq _022483B4 + pop {r3, pc} +_022483AE: + bl MOD06_02248308 + pop {r3, pc} +_022483B4: + bl MOD06_02248354 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022483BC +MOD06_022483BC: ; 0x022483BC + push {r3, r4, r5, lr} + add r4, r1, #0 + mov r1, #0x5f + add r5, r0, #0 + mov r0, #4 + lsl r1, r1, #2 + bl MOD06_02248634 + add r1, r0, #0 + str r4, [r1, #0xc] + ldr r0, _022483DC ; =MOD06_02248400 + mov r2, #0x85 + str r5, [r1, #0x14] + bl FUN_0200CA44 + pop {r3, r4, r5, pc} + .align 2, 0 +_022483DC: .word MOD06_02248400 + + thumb_func_start MOD06_022483E0 +MOD06_022483E0: ; 0x022483E0 + push {r3, lr} + bl FUN_0201B6C8 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022483EC +MOD06_022483EC: ; 0x022483EC + push {r4, lr} + add r4, r0, #0 + bl FUN_0201B6C8 + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_0200CAB4 + pop {r4, pc} + + thumb_func_start MOD06_02248400 +MOD06_02248400: ; 0x02248400 + push {r3, r4, r5, lr} + ldr r4, _02248434 ; =0x02251538 + add r5, r1, #0 +_02248406: + ldr r1, [r5] + add r0, r5, #0 + lsl r1, r1, #2 + ldr r1, [r4, r1] + blx r1 + cmp r0, #1 + beq _02248406 + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _02248432 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r5, r0] + cmp r0, #0 + beq _02248428 + bl FUN_02064584 +_02248428: + ldr r0, [r5, #0x20] + cmp r0, #0 + beq _02248432 + bl FUN_0201FDEC +_02248432: + pop {r3, r4, r5, pc} + .align 2, 0 +_02248434: .word 0x02251538 + + thumb_func_start MOD06_02248438 +MOD06_02248438: ; 0x02248438 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #1 + bl MOD06_02246658 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248450 +MOD06_02248450: ; 0x02248450 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + mov r0, #4 + mov r1, #0x20 + bl FUN_020643C0 + mov r1, #0x17 + lsl r1, r1, #4 + str r0, [r5, r1] + mov r2, #2 + str r2, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r1, #4 + str r1, [sp, #8] + mov r0, #3 + str r0, [sp, #0xc] + str r1, [sp, #0x10] + add r0, r5, #0 + add r0, #0x18 + mov r1, #0x20 + add r3, r2, #0 + str r2, [sp, #0x14] + bl MOD06_0224593C + bl MOD06_02246604 + add r4, r0, #0 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #7 + mov r3, #0 + bl MOD06_02245B94 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #3 + mov r3, #0 + bl MOD06_02245C6C + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #8 + mov r3, #0 + bl MOD06_02245D44 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245C04 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245CDC + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245C38 + add r0, r5, #0 + add r0, #0x18 + mov r1, #0 + bl MOD06_02245D10 + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _02248522 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xd + mov r3, #2 + bl MOD06_02245B94 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xe + mov r3, #2 + bl MOD06_02245D44 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0xf + mov r3, #1 + bl MOD06_02245DB4 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C04 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C38 + b _02248582 +_02248522: + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x10 + mov r3, #2 + bl MOD06_02245B94 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #4 + mov r3, #1 + bl MOD06_02245C6C + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x11 + mov r3, #2 + bl MOD06_02245D44 + add r0, r5, #0 + add r0, #0x18 + add r1, r4, #0 + mov r2, #0x12 + mov r3, #1 + bl MOD06_02245DB4 + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C04 + add r0, r5, #0 + add r0, #0x18 + mov r1, #1 + bl MOD06_02245CDC + add r0, r5, #0 + add r0, #0x18 + mov r1, #2 + bl MOD06_02245C38 + add r0, r5, #0 + add r0, #0x18 + mov r1, #1 + bl MOD06_02245D10 +_02248582: + add r0, r4, #0 + bl FUN_020066F4 + ldr r0, [r5] + add r0, r0, #1 + str r0, [r5] + mov r0, #0 + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02248594 +MOD06_02248594: ; 0x02248594 + push {r4, lr} + add r4, r0, #0 + ldr r1, [r4, #0xc] + add r0, #0x18 + bl MOD06_02245F2C + mov r1, #0x5b + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + mov r1, #1 + bl FUN_020200A0 + mov r3, #0x17 + lsl r3, r3, #4 + ldr r1, [r4, r3] + sub r3, r3, #4 + add r2, r4, #0 + ldr r0, [r4, #0x14] + ldr r3, [r4, r3] + add r2, #0x18 + bl MOD06_02245F6C + mov r1, #0x5d + lsl r1, r1, #2 + str r0, [r4, r1] + ldr r0, [r4, r1] + bl MOD06_02246034 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + str r0, [r4, #0x10] + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_022485DC +MOD06_022485DC: ; 0x022485DC + push {r4, lr} + add r4, r0, #0 + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD06_02245FA0 + cmp r0, #2 + beq _022485F2 + mov r0, #0 + pop {r4, pc} +_022485F2: + mov r0, #0x5d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl MOD06_02245FD0 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248608 +MOD06_02248608: ; 0x02248608 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x17 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_020643F0 + add r0, r4, #0 + add r0, #0x18 + bl MOD06_02245A80 + mov r0, #0 + str r0, [r4, #0x10] + mov r1, #1 + str r1, [r4, #4] + ldr r1, [r4] + add r1, r1, #1 + str r1, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248630 +MOD06_02248630: ; 0x02248630 + mov r0, #0 + bx lr + + thumb_func_start MOD06_02248634 +MOD06_02248634: ; 0x02248634 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _02248644 + bl ErrorHandling +_02248644: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02248654 +MOD06_02248654: ; 0x02248654 + push {r3, r4, r5, lr} + ldr r0, [r0, #0x60] + add r4, r1, #0 + ldr r0, [r0, #0x38] + bl FUN_020553A0 + add r5, r0, #0 + bl FUN_02058914 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0205889C + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02248670 +MOD06_02248670: ; 0x02248670 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + str r1, [r4] + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} + + thumb_func_start MOD06_02248684 +MOD06_02248684: ; 0x02248684 + push {r3, r4, r5, lr} + add r4, r1, #0 + ldr r0, [r4] + bl FUN_0202011C + ldr r1, [r4, #4] + ldr r0, [r0, #4] + ldr r5, [r1, #0x4c] + ldr r3, [r1, #0x50] + ldr r1, [r1, #0x1c] + cmp r1, #0 + bne _022486C0 + mov r1, #2 + lsl r1, r1, #0xe + sub r2, r0, r1 + cmp r2, r5 + blt _022486B6 + add r0, r0, r1 + cmp r0, r3 + bgt _022486B6 + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_022486B6: + ldr r0, [r4] + mov r1, #0 + bl FUN_020200A0 + pop {r3, r4, r5, pc} +_022486C0: + ldr r0, [r4] + mov r1, #1 + bl FUN_020200A0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022486CC +MOD06_022486CC: ; 0x022486CC + push {r3, r4, lr} + sub sp, #0x1c + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2] + add r4, r0, #0 + str r3, [r2, #4] + mov r0, #0x79 + str r3, [r2, #8] + lsl r0, r0, #2 + ldr r1, [r4, r0] + sub r0, r0, #4 + str r1, [sp, #8] + str r4, [sp, #0xc] + add r1, sp, #8 + str r1, [sp] + mov r1, #0x86 + str r1, [sp, #4] + ldr r0, [r4, r0] + ldr r1, _02248704 ; =0x022514FC + bl FUN_020644E4 + mov r1, #0x1f + lsl r1, r1, #4 + str r0, [r4, r1] + add sp, #0x1c + pop {r3, r4, pc} + nop +_02248704: .word 0x022514FC + + thumb_func_start MOD06_02248708 +MOD06_02248708: ; 0x02248708 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x1f + lsl r0, r0, #4 + ldr r0, [r4, r0] + cmp r0, #0 + beq _02248722 + bl FUN_02064520 + mov r0, #0x1f + mov r1, #0 + lsl r0, r0, #4 + str r1, [r4, r0] +_02248722: + pop {r4, pc} + + thumb_func_start MOD06_02248724 +MOD06_02248724: ; 0x02248724 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, [r1, #8] + str r1, [sp] + mov r1, #0 + bl FUN_0206B9B0 + add r6, r0, #0 + ldr r0, [r5, #0xc] + bl FUN_0202A9B0 + add r7, r0, #0 + add r0, r6, #0 + mov r1, #5 + mov r2, #0 + bl FUN_020671BC + add r1, r0, #0 + add r0, r7, #0 + bl MOD06_02248810 + str r0, [sp, #4] + cmp r0, #0 + beq _022487AC + add r0, r6, #0 + mov r1, #0xa2 + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + add r0, r6, #0 + mov r1, #0x9f + mov r2, #0 + bl FUN_020671BC + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldr r0, [sp] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _0224877E + cmp r4, #0 + beq _02248782 +_0224877E: + cmp r0, #4 + bne _0224878A +_02248782: + add r0, sp, #4 + bl FUN_0202AA90 + b _0224879E +_0224878A: + ldr r0, [sp, #4] + mov r1, #5 + add r2, r4, #0 + bl FUN_0202AAFC + ldr r0, [sp, #4] + mov r1, #7 + add r2, r6, #0 + bl FUN_0202AAFC +_0224879E: + ldr r1, [r5, #0x1c] + add r0, r7, #0 + ldr r1, [r1] + bl MOD06_022487D8 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} +_022487AC: + bl FUN_0201B9EC + mov r1, #0x29 + lsl r1, r1, #4 + bl _s32_div_f + lsl r0, r0, #0x10 + lsr r4, r0, #0x10 + cmp r4, #0x64 + blo _022487C4 + bl ErrorHandling +_022487C4: + cmp r4, #0x1e + bhs _022487D2 + ldr r1, [r5, #0x1c] + add r0, r7, #0 + ldr r1, [r1] + bl MOD06_022487D8 +_022487D2: + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022487D8 +MOD06_022487D8: ; 0x022487D8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_022487E0: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AA74 + cmp r0, #0 + beq _02248804 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AA40 + bl FUN_0206043C + cmp r6, r0 + bne _02248804 + add r0, r5, #0 + add r1, r4, #0 + bl FUN_020603B0 +_02248804: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _022487E0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02248810 +MOD06_02248810: ; 0x02248810 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + add r6, r1, #0 + mov r4, #0 +_02248818: + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AA74 + cmp r0, #0 + beq _0224883C + add r0, r5, #0 + add r1, r4, #0 + bl FUN_0202AAA0 + mov r1, #4 + add r7, r0, #0 + bl FUN_0202AAB8 + cmp r6, r0 + bne _0224883C + add r0, r7, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224883C: + add r0, r4, #1 + lsl r0, r0, #0x18 + lsr r4, r0, #0x18 + cmp r4, #3 + blo _02248818 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224884C +MOD06_0224884C: ; 0x0224884C + push {r3, r4, r5, r6, lr} + sub sp, #0x104 + add r6, r1, #0 + add r5, r0, #0 + cmp r6, #4 + blo _0224885C + bl ErrorHandling +_0224885C: + add r0, r5, #0 + mov r1, #0x14 + bl FUN_02016998 + add r4, r0, #0 + add r2, r4, #0 + mov r1, #0x14 + mov r0, #0 +_0224886C: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224886C + mov r2, #0 + str r2, [sp] + mov r0, #0x73 + add r1, r6, #0 + add r3, r5, #0 + bl FUN_02006C98 + str r0, [r4] + str r5, [r4, #0x10] + str r6, [r4, #0xc] + add r0, r5, #0 + bl FUN_020669C0 + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_02023928 + str r0, [r4, #8] + bl FUN_02023948 + add r0, r5, #0 + add r1, r6, #4 + bl MOD06_022489AC + add r5, r0, #0 + add r1, sp, #4 + mov r2, #0x80 + bl FUN_02021EF0 + add r0, r5, #0 + bl FUN_02021A20 + ldr r0, [r4, #8] + add r1, sp, #4 + bl FUN_0202395C + ldr r1, [r4] + ldr r0, [r4, #8] + ldr r1, [r1, #0x40] + bl FUN_020239C8 + add r0, r4, #0 + add sp, #0x104 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_022488CC +MOD06_022488CC: ; 0x022488CC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + bl FUN_02016A18 + ldr r0, [r4, #4] + bl FUN_02016A18 + ldr r0, [r4, #8] + bl FUN_02016A18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022488EC +MOD06_022488EC: ; 0x022488EC + ldr r0, [r0] + ldr r0, [r0] + bx lr + .align 2, 0 + + thumb_func_start MOD06_022488F4 +MOD06_022488F4: ; 0x022488F4 + ldr r0, [r0] + ldr r0, [r0, #0x4c] + bx lr + .align 2, 0 + + thumb_func_start MOD06_022488FC +MOD06_022488FC: ; 0x022488FC + push {r4, r5, r6, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_0206BB1C + ldr r2, [r4, #4] + add r1, r6, #0 + bl FUN_0206B9DC + ldr r0, [r5, #0xc] + ldr r1, [r4, #4] + bl FUN_0202C144 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224891C +MOD06_0224891C: ; 0x0224891C + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r6, r0, #0 + ldr r0, [r6, #0xc] + add r7, r2, #0 + add r5, r1, #0 + add r4, r3, #0 + bl FUN_0206BB1C + add r1, r7, #0 + bl FUN_0206B9B0 + mov r1, #0xa0 + mov r2, #0 + add r7, r0, #0 + bl FUN_020671BC + add r2, r0, #0 + ldr r0, [r5, #0x10] + str r0, [sp] + ldr r0, [r6, #0x1c] + ldr r0, [r0] + str r0, [sp, #4] + ldr r0, [r5, #4] + ldr r1, [r5] + ldr r3, [r5, #0xc] + bl MOD06_022489D4 + ldr r1, [sp, #0x20] + add r0, r7, #0 + bl FUN_02069B88 + ldr r0, [r5, #4] + ldr r1, [sp, #0x24] + bl FUN_02069B88 + ldr r0, [sp, #0x20] + bl FUN_020690E4 + str r0, [r4] + ldr r0, [sp, #0x24] + bl FUN_020690E4 + str r0, [r4, #4] + ldr r0, [r5, #8] + str r0, [r4, #8] + mov r0, #1 + str r0, [r4, #0x10] + ldr r0, [r6, #0xc] + bl LoadPlayerDataAddress + str r0, [r4, #0x14] + add r0, r6, #0 + bl FUN_0204B2A4 + cmp r0, #1 + bhi _02248996 + mov r0, #0 + add sp, #8 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_02248996: + cmp r0, #2 + bne _022489A2 + mov r0, #1 + add sp, #8 + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, r7, pc} +_022489A2: + mov r0, #2 + str r0, [r4, #0xc] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_022489AC +MOD06_022489AC: ; 0x022489AC + push {r3, r4, r5, lr} + ldr r2, _022489D0 ; =0x00000146 + add r3, r0, #0 + add r4, r1, #0 + mov r0, #0 + mov r1, #0x1a + bl FUN_0200A86C + add r5, r0, #0 + add r1, r4, #0 + bl FUN_0200A914 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_0200A8B8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_022489D0: .word 0x00000146 + + thumb_func_start MOD06_022489D4 +MOD06_022489D4: ; 0x022489D4 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r6, r3, #0 + mov r3, #1 + add r4, r1, #0 + str r3, [sp] + ldr r1, [r4, #0x38] + add r5, r0, #0 + str r1, [sp, #4] + str r3, [sp, #8] + ldr r1, [r4, #0x20] + mov r3, #0x20 + str r1, [sp, #0xc] + ldr r1, [r4] + bl FUN_02066ACC + ldr r0, [sp, #0x28] + add r1, r6, #0 + bl MOD06_022489AC + add r7, r0, #0 + add r0, r5, #0 + mov r1, #0x76 + add r2, r7, #0 + bl FUN_02067830 + add r0, r7, #0 + bl FUN_02021A20 + mov r1, #1 + add r0, sp, #0x10 + strb r1, [r0] + add r0, r5, #0 + mov r1, #0x4d + add r2, sp, #0x10 + bl FUN_02067830 + add r0, r5, #0 + mov r1, #0x46 + add r2, r4, #4 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x47 + add r2, #8 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x48 + add r2, #0xc + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x49 + add r2, #0x10 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x4a + add r2, #0x14 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x4b + add r2, #0x18 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x13 + add r2, #0x24 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x14 + add r2, #0x28 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x15 + add r2, #0x2c + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x16 + add r2, #0x30 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x17 + add r2, #0x34 + bl FUN_02067830 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #6 + add r2, #0x3c + bl FUN_02067830 + ldr r0, [sp, #0x28] + add r1, r6, #4 + bl MOD06_022489AC + add r6, r0, #0 + add r0, r5, #0 + mov r1, #0x90 + add r2, r6, #0 + bl FUN_02067830 + add r0, r6, #0 + bl FUN_02021A20 + add r2, r4, #0 + add r0, r5, #0 + mov r1, #0x9c + add r2, #0x40 + bl FUN_02067830 + add r4, #0x48 + add r0, r5, #0 + mov r1, #0xc + add r2, r4, #0 + bl FUN_02067830 + ldr r0, [sp, #0x2c] + bl FUN_02034824 + add r3, r0, #0 + ldr r0, [sp, #0x28] + mov r1, #0 + str r0, [sp] + add r0, r5, #0 + mov r2, #1 + bl FUN_0208089C + add r0, r5, #0 + bl FUN_02066ED8 + add r0, r5, #0 + bl FUN_02068A80 + cmp r0, #0 + beq _02248B08 + bl ErrorHandling +_02248B08: + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248B0C +MOD06_02248B0C: ; 0x02248B0C + ldr r3, _02248B14 ; =0x020CE34C + mov r1, #0 + mov r2, #0x18 + bx r3 + .align 2, 0 +_02248B14: .word 0x020CE34C + + thumb_func_start MOD06_02248B18 +MOD06_02248B18: ; 0x02248B18 + strb r1, [r0, #3] + bx lr + + thumb_func_start MOD06_02248B1C +MOD06_02248B1C: ; 0x02248B1C + strb r1, [r0, #2] + bx lr + + thumb_func_start MOD06_02248B20 +MOD06_02248B20: ; 0x02248B20 + strb r1, [r0, #1] + bx lr + + thumb_func_start MOD06_02248B24 +MOD06_02248B24: ; 0x02248B24 + ldr r3, _02248B2C ; =0x02002269 + add r0, r0, #4 + mov r2, #8 + bx r3 + .align 2, 0 +_02248B2C: .word 0x02002269 + + thumb_func_start MOD06_02248B30 +MOD06_02248B30: ; 0x02248B30 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0202B5C8 + strb r0, [r5] + str r4, [r5, #0x14] + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02248B44 +MOD06_02248B44: ; 0x02248B44 + push {r3, lr} + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _02248B50 + bl FUN_0202B5CC +_02248B50: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02248B54 +MOD06_02248B54: ; 0x02248B54 + ldrb r0, [r0, #3] + bx lr + + thumb_func_start MOD06_02248B58 +MOD06_02248B58: ; 0x02248B58 + ldrb r0, [r0, #2] + bx lr + + thumb_func_start MOD06_02248B5C +MOD06_02248B5C: ; 0x02248B5C + add r0, r0, #4 + bx lr + + thumb_func_start MOD06_02248B60 +MOD06_02248B60: ; 0x02248B60 + ldr r3, _02248B68 ; =0x0202B5D9 + ldr r0, [r0, #0x14] + bx r3 + nop +_02248B68: .word 0x0202B5D9 + + thumb_func_start MOD06_02248B6C +MOD06_02248B6C: ; 0x02248B6C + ldrb r0, [r0] + bx lr + + thumb_func_start MOD06_02248B70 +MOD06_02248B70: ; 0x02248B70 + push {r3, r4, r5, lr} + add r5, r1, #0 + mov r0, #4 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bl MOD06_02248B0C + add r0, r5, #0 + bl FUN_0202B534 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B24 + add r0, r5, #0 + bl FUN_0202B538 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B1C + add r0, r5, #0 + bl FUN_0202B53C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B20 + add r0, r5, #0 + bl FUN_0202B540 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B30 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02248BC0 +MOD06_02248BC0: ; 0x02248BC0 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r6, r1, #0 + bl FUN_020238F4 + add r5, r0, #0 + mov r0, #4 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bl MOD06_02248B0C + add r0, r5, #0 + bl FUN_0202398C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B24 + add r0, r5, #0 + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B18 + add r0, r4, #0 + mov r1, #2 + bl MOD06_02248B1C + add r0, r4, #0 + mov r1, #0xa + bl MOD06_02248B20 + add r0, r6, #0 + bl FUN_0202B544 + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B30 + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02248C18 +MOD06_02248C18: ; 0x02248C18 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl FUN_020238F4 + add r6, r0, #0 + mov r0, #4 + mov r1, #0x18 + bl FUN_02016998 + add r4, r0, #0 + bl MOD06_02248B0C + add r0, r6, #0 + strb r5, [r4] + bl FUN_0202398C + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B24 + add r0, r6, #0 + bl FUN_020239CC + add r1, r0, #0 + add r0, r4, #0 + bl MOD06_02248B18 + add r0, r4, #0 + mov r1, #2 + bl MOD06_02248B1C + add r0, r4, #0 + mov r1, #0xa + bl MOD06_02248B20 + mov r0, #0 + str r0, [r4, #0x14] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_02248C68 +MOD06_02248C68: ; 0x02248C68 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + ldr r0, [r5, #0xc] + add r4, r1, #0 + add r6, r2, #0 + bl FUN_02022504 + add r7, r0, #0 + cmp r4, #4 + bne _02248C86 + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_02248C18 + pop {r3, r4, r5, r6, r7, pc} +_02248C86: + add r0, r6, #0 + bl FUN_0202B820 + cmp r0, #0 + bne _02248CA4 + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0202B7F4 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_02248B70 + pop {r3, r4, r5, r6, r7, pc} +_02248CA4: + add r0, r7, #0 + add r1, r4, #0 + add r2, r6, #0 + bl FUN_0202B7C8 + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_02248BC0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248CB8 +MOD06_02248CB8: ; 0x02248CB8 + ldr r3, _02248CBC ; =0x02016A19 + bx r3 + .align 2, 0 +_02248CBC: .word 0x02016A19 + + thumb_func_start MOD06_02248CC0 +MOD06_02248CC0: ; 0x02248CC0 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + mov r1, #1 + bl FUN_0202B40C + pop {r3, pc} + + thumb_func_start MOD06_02248CD0 +MOD06_02248CD0: ; 0x02248CD0 + push {r4, lr} + ldr r0, [r0, #0xc] + bl FUN_02022504 + add r4, r0, #0 + bl FUN_0202B410 + cmp r0, #1 + bne _02248CE6 + mov r0, #0 + pop {r4, pc} +_02248CE6: + add r0, r4, #0 + bl FUN_0202B458 + cmp r0, #0 + bne _02248CF4 + mov r0, #2 + pop {r4, pc} +_02248CF4: + cmp r0, #4 + bne _02248CFC + mov r0, #1 + pop {r4, pc} +_02248CFC: + mov r0, #3 + pop {r4, pc} + + thumb_func_start MOD06_02248D00 +MOD06_02248D00: ; 0x02248D00 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r0, #0 + bl FUN_0204B2CC + add r0, r0, #6 + mov r1, #7 + bl _s32_div_f + add r0, r4, #0 + add r5, r1, #0 + bl FUN_0204B2D8 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204B2E4 + mov r1, #0xf + bl _s32_div_f + add r6, #0x13 + add r4, r0, #0 + add r0, r6, #0 + mov r1, #0x18 + bl _s32_div_f + add r6, r1, #0 + lsl r6, r6, #2 + mov r3, #7 + add r4, r4, r6 + str r3, [sp] + add r0, sp, #4 + mov r1, #0x7e + mov r2, #0 + mul r3, r4 + bl FUN_02006548 + add r0, sp, #4 + ldrb r4, [r0, r5] + cmp r4, #0 + beq _02248D56 + cmp r4, #9 + blo _02248D5A +_02248D56: + bl ErrorHandling +_02248D5A: + add r0, r4, #0 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_02248D60 +MOD06_02248D60: ; 0x02248D60 + push {r4, lr} + sub sp, #8 + add r3, r0, #0 + sub r4, r3, #1 + lsl r3, r4, #3 + mov r2, #1 + add r0, sp, #4 + mov r1, #0x7e + add r3, r4, r3 + str r2, [sp] + bl FUN_02006548 + add r0, sp, #4 + ldrb r0, [r0] + cmp r0, #5 + blo _02248D84 + bl ErrorHandling +_02248D84: + add r0, sp, #4 + ldrb r0, [r0] + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_02248D8C +MOD06_02248D8C: ; 0x02248D8C + push {r3, r4, lr} + sub sp, #4 + add r3, r0, #0 + sub r4, r3, #1 + lsl r3, r4, #3 + mov r0, #8 + add r3, r4, r3 + str r0, [sp] + add r0, r1, #0 + mov r1, #0x7e + mov r2, #1 + add r3, r3, #1 + bl FUN_02006548 + add sp, #4 + pop {r3, r4, pc} + + thumb_func_start MOD06_02248DAC +MOD06_02248DAC: ; 0x02248DAC + mov r0, #1 + bx lr + + thumb_func_start MOD06_02248DB0 +MOD06_02248DB0: ; 0x02248DB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r7, r1, #0 + str r0, [sp] + ldr r0, [r7, #0xc] + str r2, [sp, #4] + bl FUN_02022504 + ldr r0, [sp] + add r1, sp, #8 + bl MOD06_02248D8C + ldr r0, [sp, #4] + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r6, #0 + add r4, r6, #0 + add r5, sp, #8 +_02248DD8: + ldrb r2, [r5] + cmp r2, #0 + beq _02248DFA + ldr r1, [sp] + add r0, r7, #0 + bl MOD06_02248DAC + cmp r0, #1 + bne _02248DF2 + ldrb r1, [r5] + ldr r0, [sp, #4] + strb r1, [r0, r4] + add r4, r4, #1 +_02248DF2: + add r6, r6, #1 + add r5, r5, #1 + cmp r6, #8 + blt _02248DD8 +_02248DFA: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02248E00 +MOD06_02248E00: ; 0x02248E00 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r1, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + mov r1, #0 + add r4, r1, #0 + add r2, sp, #0 +_02248E16: + ldrb r0, [r5, r1] + cmp r0, #0 + beq _02248E22 + strb r0, [r2] + add r2, r2, #1 + add r4, r4, #1 +_02248E22: + add r1, r1, #1 + cmp r1, #8 + blt _02248E16 + cmp r4, #0 + bne _02248E32 + add sp, #8 + mov r0, #0 + pop {r3, r4, r5, pc} +_02248E32: + cmp r4, #1 + bne _02248E3E + add r0, sp, #0 + add sp, #8 + ldrb r0, [r0] + pop {r3, r4, r5, pc} +_02248E3E: + bl FUN_0201BA60 + add r1, r4, #0 + bl _u32_div_f + add r0, sp, #0 + ldrb r0, [r0, r1] + add sp, #8 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02248E50 +MOD06_02248E50: ; 0x02248E50 + push {r4, lr} + sub sp, #8 + add r4, r2, #0 + cmp r1, #4 + beq _02248E6A + ldr r4, [sp, #0x10] + str r4, [sp] + ldr r4, [sp, #0x14] + str r4, [sp, #4] + bl FUN_0202B678 + add sp, #8 + pop {r4, pc} +_02248E6A: + ldr r1, [sp, #0x10] + cmp r1, #0 + beq _02248E76 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02248E76: + cmp r3, #0 + bne _02248E80 + add sp, #8 + mov r0, #0 + pop {r4, pc} +_02248E80: + add r1, r4, #0 + bl FUN_0202B440 + cmp r0, #0 + bne _02248E94 + ldr r0, [sp, #0x14] + add sp, #8 + strb r4, [r0] + mov r0, #1 + pop {r4, pc} +_02248E94: + mov r0, #0 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02248E9C +MOD06_02248E9C: ; 0x02248E9C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + str r0, [sp, #8] + ldr r6, [sp, #0x40] + ldr r0, [r1, #0xc] + str r2, [sp, #0xc] + str r3, [sp, #0x10] + ldr r5, [sp, #0x44] + bl FUN_02022504 + str r0, [sp, #0x14] + ldrb r0, [r6] + mov r4, #0 + cmp r0, #0 + beq _02248EFC + add r7, sp, #0x18 +_02248EBC: + add r0, r7, #0 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #8] + str r0, [sp] + str r7, [sp, #4] + ldrb r2, [r6] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0xc] + bl MOD06_02248E50 + cmp r0, #0 + beq _02248EF4 + mov r0, #0 + add r1, r7, #0 + b _02248EEA +_02248EE2: + strb r2, [r5, r4] + add r4, r4, #1 + add r1, r1, #1 + add r0, r0, #1 +_02248EEA: + ldrb r2, [r1] + cmp r2, #0 + beq _02248EF4 + cmp r0, #0x10 + blt _02248EE2 +_02248EF4: + add r6, r6, #1 + ldrb r0, [r6] + cmp r0, #0 + bne _02248EBC +_02248EFC: + add r0, r4, #0 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02248F04 +MOD06_02248F04: ; 0x02248F04 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r7, r1, #0 + add r5, r2, #0 + mov r4, #0 + b _02248F36 +_02248F10: + add r0, r6, #0 + add r1, r7, #0 + bl MOD06_02248C68 + str r0, [sp] + ldr r2, [sp] + add r0, r7, #0 + add r1, r6, #0 + bl FUN_02060D48 + cmp r0, #0 + bne _02248F2C + mov r0, #0 + strb r0, [r5] +_02248F2C: + ldr r0, [sp] + bl MOD06_02248CB8 + add r5, r5, #1 + add r4, r4, #1 +_02248F36: + ldrb r2, [r5] + cmp r2, #0 + beq _02248F40 + cmp r4, #0x10 + blt _02248F10 +_02248F40: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02248F44 +MOD06_02248F44: ; 0x02248F44 + push {r4, r5, r6, lr} + ldr r0, [r0, #0xc] + add r5, r1, #0 + bl FUN_02022504 + ldrb r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _02248F6C + mov r6, #0 +_02248F58: + add r0, r4, #0 + bl FUN_0202B440 + cmp r0, #0 + beq _02248F64 + strb r6, [r5] +_02248F64: + add r5, r5, #1 + ldrb r1, [r5] + cmp r1, #0 + bne _02248F58 +_02248F6C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02248F70 +MOD06_02248F70: ; 0x02248F70 + push {r4, r5, r6, r7, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + add r7, r2, #0 + bl MOD06_02248D00 + str r0, [sp, #8] + bl MOD06_02248D60 + add r4, r0, #0 + add r0, sp, #0xc + mov r1, #0 + mov r2, #8 + bl MI_CpuFill8 + add r0, sp, #0x14 + mov r1, #0 + mov r2, #0x10 + bl MI_CpuFill8 + ldr r0, [sp, #8] + add r1, r5, #0 + add r2, sp, #0xc + bl MOD06_02248DB0 + add r0, sp, #0xc + str r0, [sp] + add r0, sp, #0x14 + str r0, [sp, #4] + add r0, r4, #0 + add r1, r5, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD06_02248E9C + cmp r0, #0 + bne _02248FC2 + add sp, #0x24 + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_02248FC2: + add r0, r5, #0 + add r1, r4, #0 + add r2, sp, #0x14 + bl MOD06_02248F04 + add r0, r5, #0 + add r1, sp, #0x14 + bl MOD06_02248F44 + add r0, r5, #0 + add r1, sp, #0x14 + bl MOD06_02248E00 + add sp, #0x24 + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02248FE0 +MOD06_02248FE0: ; 0x02248FE0 + push {r4, lr} + mov r1, #0 + add r2, r1, #0 + add r4, r0, #0 + bl MOD06_02248F70 + cmp r0, #0 + bne _02249016 + add r0, r4, #0 + mov r1, #1 + mov r2, #0 + bl MOD06_02248F70 + cmp r0, #0 + bne _02249016 + add r0, r4, #0 + mov r1, #0 + mov r2, #1 + bl MOD06_02248F70 + cmp r0, #0 + bne _02249016 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + bl MOD06_02248F70 +_02249016: + pop {r4, pc} + + thumb_func_start MOD06_02249018 +MOD06_02249018: ; 0x02249018 + push {r4, lr} + bl MOD06_02248D00 + add r4, r0, #0 + cmp r4, #8 + bls _02249028 + bl ErrorHandling +_02249028: + ldr r2, _02249034 ; =0x02251738 + sub r1, r4, #1 + mov r0, #7 + mul r0, r1 + add r0, r2, r0 + pop {r4, pc} + .align 2, 0 +_02249034: .word 0x02251738 + + thumb_func_start MOD06_02249038 +MOD06_02249038: ; 0x02249038 + push {r4, r5, r6, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + add r5, r1, #0 + bl FUN_02022504 + add r6, r0, #0 + add r0, r4, #0 + bl MOD06_02249018 + add r4, r0, #0 + cmp r5, #3 + bhi _02249066 + add r0, r5, r5 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224905E: ; jump table + .short _0224906A - _0224905E - 2 ; case 0 + .short _02249084 - _0224905E - 2 ; case 1 + .short _02249096 - _0224905E - 2 ; case 2 + .short _0224909A - _0224905E - 2 ; case 3 +_02249066: + bl ErrorHandling +_0224906A: + bl FUN_02012794 + cmp r0, #0 + beq _02249078 + cmp r0, #1 + beq _0224907C + b _02249080 +_02249078: + ldrb r0, [r4] + pop {r4, r5, r6, pc} +_0224907C: + ldrb r0, [r4, #1] + pop {r4, r5, r6, pc} +_02249080: + ldrb r0, [r4, #2] + pop {r4, r5, r6, pc} +_02249084: + add r0, r6, #0 + bl FUN_0202B458 + cmp r0, #0 + bne _02249092 + ldrb r0, [r4, #3] + pop {r4, r5, r6, pc} +_02249092: + ldrb r0, [r4, #4] + pop {r4, r5, r6, pc} +_02249096: + ldrb r0, [r4, #5] + pop {r4, r5, r6, pc} +_0224909A: + ldrb r0, [r4, #6] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_022490A0 +MOD06_022490A0: ; 0x022490A0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r4, r0, #0 + str r1, [sp, #4] + add r5, r2, #0 + add r6, r3, #0 + bl MOD06_02248D00 + bl MOD06_02248D60 + add r7, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_02022504 + add r1, r5, #0 + bl FUN_0202B414 + add r0, r4, #0 + add r1, r7, #0 + add r2, r5, #0 + bl MOD06_02248C68 + add r5, r0, #0 + bl MOD06_02248B44 + ldr r2, [sp, #4] + add r0, r7, #0 + add r1, r4, #0 + add r3, r5, #0 + str r6, [sp] + bl FUN_02060D1C + ldr r1, [sp, #0x20] + strh r0, [r1] + add r0, r5, #0 + bl MOD06_02248CB8 + mov r0, #1 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_022490F0 +MOD06_022490F0: ; 0x022490F0 + mov r0, #1 + bx lr + + thumb_func_start MOD06_022490F4 +MOD06_022490F4: ; 0x022490F4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #7 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249108 +MOD06_02249108: ; 0x02249108 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + add r2, r1, #0 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224911C +MOD06_0224911C: ; 0x0224911C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #9 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249130 +MOD06_02249130: ; 0x02249130 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #0xa + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249144 +MOD06_02249144: ; 0x02249144 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #0xb + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249158 +MOD06_02249158: ; 0x02249158 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + mov r1, #2 + mov r2, #0x11 + bl FUN_0205F2E4 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224916C +MOD06_0224916C: ; 0x0224916C + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020238F4 + bl FUN_020239F4 + cmp r0, #5 + blt _02249180 + mov r0, #1 + pop {r3, pc} +_02249180: + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_02249184 +MOD06_02249184: ; 0x02249184 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024504 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249194 +MOD06_02249194: ; 0x02249194 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_02024DA0 + bl FUN_02024D64 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022491A4 +MOD06_022491A4: ; 0x022491A4 + push {r3, lr} + ldr r0, [r0, #0xc] + bl FUN_020462AC + bl FUN_0205ED0C + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_022491B4 +MOD06_022491B4: ; 0x022491B4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r4, _022491F4 ; =0x02251770 + str r0, [sp] + add r7, r1, #0 + mov r6, #0 + add r5, sp, #4 +_022491C2: + ldr r0, [sp] + ldr r1, [r4] + blx r1 + add r6, r6, #1 + add r4, r4, #4 + stmia r5!, {r0} + cmp r6, #0xb + blo _022491C2 + mov r4, #0 + ldr r3, _022491F8 ; =0x02252338 + add r0, r4, #0 + add r2, sp, #4 +_022491DA: + ldrb r1, [r3] + lsl r1, r1, #2 + ldr r1, [r2, r1] + cmp r1, #0 + beq _022491E8 + strb r4, [r7, r0] + add r0, r0, #1 +_022491E8: + add r4, r4, #1 + add r3, r3, #1 + cmp r4, #0x1d + blo _022491DA + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022491F4: .word 0x02251770 +_022491F8: .word 0x02252338 + + thumb_func_start MOD06_022491FC +MOD06_022491FC: ; 0x022491FC + push {r4, lr} + sub sp, #0x20 + add r4, r0, #0 + add r0, sp, #0 + mov r1, #0 + mov r2, #0x20 + bl MI_CpuFill8 + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_022491B4 + add r4, r0, #0 + bne _0224921E + add sp, #0x20 + mov r0, #0 + pop {r4, pc} +_0224921E: + bl FUN_0201BA60 + add r1, r4, #0 + bl _u32_div_f + add r0, sp, #0 + ldrb r0, [r0, r1] + add sp, #0x20 + pop {r4, pc} + + thumb_func_start MOD06_02249230 +MOD06_02249230: ; 0x02249230 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r4, r0, #0 + cmp r1, #0 + bne _022492A4 + cmp r4, #0 + bne _02249244 + add sp, #0x10 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_02249244: + add r0, sp, #0 + bl FUN_020126B4 + ldr r0, [sp, #4] + cmp r0, #0 + bne _02249254 + bl ErrorHandling +_02249254: + ldr r0, [sp, #4] + cmp r0, #0xc + bls _0224925E + bl ErrorHandling +_0224925E: + ldr r0, [sp, #4] + ldr r3, _022492A8 ; =0x0225181C + sub r0, r0, #1 + lsl r0, r0, #3 + ldr r6, [r3, r0] + add r2, r3, r0 + mov r1, #0 + cmp r6, #0 + ble _022492A2 + ldr r3, [r2, #4] + ldr r5, [sp, #8] +_02249274: + lsl r0, r1, #1 + ldrh r7, [r3, r0] + asr r7, r7, #8 + lsl r7, r7, #0x18 + lsr r7, r7, #0x18 + cmp r5, r7 + bne _02249298 + ldr r1, [r2, #4] + ldrh r0, [r1, r0] + lsl r0, r0, #0x18 + lsr r1, r0, #0x16 + ldr r0, _022492AC ; =0x02251808 + ldr r0, [r0, r1] + add r0, r4, r0 + bpl _022492A4 + add sp, #0x10 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_02249298: + add r0, r1, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + cmp r1, r6 + blt _02249274 +_022492A2: + add r0, r4, #0 +_022492A4: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022492A8: .word 0x0225181C +_022492AC: .word 0x02251808 + + thumb_func_start MOD06_022492B0 +MOD06_022492B0: ; 0x022492B0 + push {r3, r4, r5, lr} + mov r1, #0x4f + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4, #0x20] + bl MOD06_02249460 + add r0, r4, #0 + bl MOD06_022492EC + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022492D4 +MOD06_022492D4: ; 0x022492D4 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02249310 + add r0, r4, #0 + bl MOD06_022494C0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022492EC +MOD06_022492EC: ; 0x022492EC + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_021E4C20 + ldr r0, [r0, #0x34] + bl FUN_0205839C + sub r2, r0, #1 + ldr r0, _0224930C ; =MOD06_02249388 + add r1, r4, #0 + bl FUN_0200CA44 + str r0, [r4, #0x24] + pop {r4, pc} + nop +_0224930C: .word MOD06_02249388 + + thumb_func_start MOD06_02249310 +MOD06_02249310: ; 0x02249310 + ldr r3, _02249318 ; =0x0200CAB5 + ldr r0, [r0, #0x24] + bx r3 + nop +_02249318: .word 0x0200CAB5 + + thumb_func_start MOD06_0224931C +MOD06_0224931C: ; 0x0224931C + add r2, r0, #0 + add r2, #0x14 + add r3, r1, #0 + ldmia r2!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r2] + str r0, [r3] + bx lr + + thumb_func_start MOD06_0224932C +MOD06_0224932C: ; 0x0224932C + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + bx lr + .align 2, 0 + + thumb_func_start MOD06_02249338 +MOD06_02249338: ; 0x02249338 + ldr r1, [r0, #4] + lsl r2, r1, #2 + ldr r1, _0224935C ; =0x0225189C + ldr r1, [r1, r2] + str r1, [r0, #0x10] + ldr r2, [r0, #4] + mov r1, #0xc + add r3, r2, #0 + mul r3, r1 + ldr r1, _02249360 ; =0x0225190C + add r2, r0, #0 + add r3, r1, r3 + ldmia r3!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + bx lr + .align 2, 0 +_0224935C: .word 0x0225189C +_02249360: .word 0x0225190C + + thumb_func_start MOD06_02249364 +MOD06_02249364: ; 0x02249364 + ldr r3, [r0] + cmp r3, r1 + bge _02249376 + add r2, r3, r2 + str r2, [r0] + cmp r2, r1 + ble _02249384 + str r1, [r0] + bx lr +_02249376: + cmp r3, r1 + ble _02249384 + sub r2, r3, r2 + str r2, [r0] + cmp r2, r1 + bge _02249384 + str r1, [r0] +_02249384: + bx lr + .align 2, 0 + + thumb_func_start MOD06_02249388 +MOD06_02249388: ; 0x02249388 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + bl FUN_02012794 + ldr r1, [r5] + add r4, r0, #0 + cmp r1, #0 + beq _022493A6 + cmp r1, #1 + beq _022493C8 + cmp r1, #2 + beq _022493D2 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} +_022493A6: + str r4, [r5, #4] + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249338 + ldr r0, [r5, #0x10] + bl MOD06_0224932C + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_022494E4 + ldr r0, [r5] + add sp, #0x10 + add r0, r0, #1 + str r0, [r5] + pop {r3, r4, r5, r6, r7, pc} +_022493C8: + ldr r0, [r5, #4] + cmp r0, r4 + beq _02249454 + add r0, r1, #1 + str r0, [r5] +_022493D2: + ldr r0, _02249458 ; =0x0225189C + lsl r1, r4, #2 + ldr r0, [r0, r1] + add r1, r4, #0 + str r0, [sp] + mov r0, #0xc + mul r1, r0 + ldr r0, _0224945C ; =0x0225190C + add r2, sp, #4 + add r3, r0, r1 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + ldr r1, [sp, #4] + add r0, #0x14 + mov r2, #0x10 + bl MOD06_02249364 + ldr r7, [sp, #8] + add r0, r5, #0 + add r0, #0x18 + add r1, r7, #0 + mov r2, #0x10 + bl MOD06_02249364 + ldr r6, [sp, #0xc] + add r0, r5, #0 + add r0, #0x1c + add r1, r6, #0 + mov r2, #0x10 + bl MOD06_02249364 + add r0, r5, #0 + mov r2, #2 + ldr r1, [sp] + add r0, #0x10 + lsl r2, r2, #8 + bl MOD06_02249364 + ldr r0, [r5, #0x10] + bl MOD06_0224932C + add r1, r0, #0 + add r0, r5, #0 + bl MOD06_022494E4 + ldr r1, [sp, #4] + ldr r0, [r5, #0x14] + cmp r1, r0 + bne _02249454 + ldr r0, [r5, #0x18] + cmp r7, r0 + bne _02249454 + ldr r0, [r5, #0x1c] + cmp r6, r0 + bne _02249454 + ldr r1, [r5, #0x10] + ldr r0, [sp] + cmp r0, r1 + bne _02249454 + str r4, [r5, #4] + mov r0, #1 + str r0, [r5] +_02249454: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249458: .word 0x0225189C +_0224945C: .word 0x0225190C + + thumb_func_start MOD06_02249460 +MOD06_02249460: ; 0x02249460 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + add r1, r4, r0 + add r0, #0xc + str r1, [sp] + add r0, r4, r0 + str r0, [sp, #4] + add r3, r4, #0 + ldr r0, [r4, #0x20] + mov r1, #0x11 + mov r2, #0 + add r3, #0x28 + bl FUN_021E51EC + mov r0, #0x4a + lsl r0, r0, #2 + add r1, r4, r0 + add r0, #0xc + str r1, [sp] + add r0, r4, r0 + str r0, [sp, #4] + add r3, r4, #0 + ldr r0, [r4, #0x20] + mov r1, #0x12 + mov r2, #0 + add r3, #0x7c + bl FUN_021E51EC + mov r0, #0x4b + lsl r0, r0, #2 + add r1, r4, r0 + add r0, #0xc + str r1, [sp] + add r0, r4, r0 + str r0, [sp, #4] + ldr r0, [r4, #0x20] + add r4, #0xd0 + mov r1, #0x13 + mov r2, #0 + add r3, r4, #0 + bl FUN_021E51EC + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_022494C0 +MOD06_022494C0: ; 0x022494C0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x13 + lsl r0, r0, #4 + ldr r0, [r4, r0] + bl FUN_021E4C00 + mov r0, #0x4d + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_021E4C00 + mov r0, #0x4e + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_022494E4 +MOD06_022494E4: ; 0x022494E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0x49 + lsl r0, r0, #2 + mov r2, #0x1f + add r4, r1, #0 + ldr r0, [r5, r0] + mov r1, #1 + lsl r2, r2, #0x10 + bl FUN_020BC02C + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + add r1, r4, #0 + bl FUN_020BBA34 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02249508 +MOD06_02249508: ; 0x02249508 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + mov r1, #0 + str r4, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _02249548 ; =0x02251888 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_02249548: .word 0x02251888 + + thumb_func_start MOD06_0224954C +MOD06_0224954C: ; 0x0224954C + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x14 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + ldr r0, [r4, #0x1c] + bl FUN_02058458 + str r0, [r4] + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_020589CC + cmp r0, #1 + ldr r0, [r4, #0x1c] + bne _0224958E + bl FUN_02058750 + b _02249592 +_0224958E: + bl FUN_02058450 +_02249592: + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_02249598 +MOD06_02249598: ; 0x02249598 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224959C +MOD06_0224959C: ; 0x0224959C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x1c] + ldr r1, [r4] + add r5, r0, #0 + ldr r2, [r4, #4] + ldr r3, [r4, #8] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _022495C0 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_022495C0: + add r0, r6, #0 + mov r1, #8 + bl FUN_020587F4 + cmp r0, #0 + beq _022495D6 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_022495D6: + mov r0, #0 + str r0, [r4, #0xc] + ldr r1, _02249604 ; =0x00100200 + add r0, r6, #0 + bl FUN_0205842C + cmp r0, #1 + bne _022495EE + mov r0, #1 + add sp, #0xc + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_022495EE: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + nop +_02249604: .word 0x00100200 + + thumb_func_start MOD06_02249608 +MOD06_02249608: ; 0x02249608 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + beq _02249660 + ldr r6, _02249664 ; =0x022518C4 + add r3, sp, #0 + mov r2, #4 +_0224961C: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224961C + ldr r0, [r6] + add r1, sp, #0x24 + str r0, [r3] + ldr r0, [r4, #0x18] + bl MOD06_0224931C + add r0, r5, #0 + add r1, sp, #0x30 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [sp, #0x30] + lsl r1, r0, #3 + ldr r2, [sp, #0x34] + lsl r0, r0, #1 + sub r1, r2, r1 + str r1, [sp, #0x34] + ldr r1, [sp, #0x38] + add r2, sp, #0 + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0x28 + add r3, sp, #0x24 + bl FUN_0201B26C +_02249660: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_02249664: .word 0x022518C4 + + thumb_func_start MOD06_02249668 +MOD06_02249668: ; 0x02249668 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_021E4C24 + add r6, r0, #0 + mov r1, #0 + str r6, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _022496A8 ; =0x022518B0 + add r0, r6, #0 + add r2, sp, #8 + add r3, r4, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r4, r5, r6, pc} + .align 2, 0 +_022496A8: .word 0x022518B0 + + thumb_func_start MOD06_022496AC +MOD06_022496AC: ; 0x022496AC + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x1c] + ldr r1, [r4] + add r5, r0, #0 + ldr r2, [r4, #4] + ldr r3, [r4, #8] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _022496D0 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_022496D0: + mov r0, #0 + str r0, [r4, #0xc] + ldr r1, _022496FC ; =0x00100200 + add r0, r6, #0 + bl FUN_0205842C + cmp r0, #1 + bne _022496E8 + mov r0, #1 + add sp, #0xc + str r0, [r4, #0xc] + pop {r3, r4, r5, r6, pc} +_022496E8: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_022496FC: .word 0x00100200 + + thumb_func_start MOD06_02249700 +MOD06_02249700: ; 0x02249700 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #1 + beq _02249792 + ldr r5, _02249798 ; =0x0225187C + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224979C ; =0x022518E8 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_02249720: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _02249720 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xa + sub r1, r1, r0 + str r1, [sp, #0x30] + lsl r1, r0, #3 + ldr r2, [sp, #0x34] + lsl r0, r0, #1 + sub r1, r2, r1 + str r1, [sp, #0x34] + ldr r1, [sp, #0x38] + add r0, r1, r0 + str r0, [sp, #0x38] + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _02249760 + cmp r0, #1 + beq _02249772 + cmp r0, #2 + beq _02249784 + add sp, #0x3c + pop {r3, r4, r5, r6, pc} +_02249760: + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0x28 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} +_02249772: + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0x7c + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} +_02249784: + ldr r0, [r4, #0x18] + add r1, sp, #0x30 + add r0, #0xd0 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_02249792: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_02249798: .word 0x0225187C +_0224979C: .word 0x022518E8 + + thumb_func_start MOD06_022497A0 +MOD06_022497A0: ; 0x022497A0 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_022497CC + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_022497BC +MOD06_022497BC: ; 0x022497BC + push {r4, lr} + add r4, r0, #0 + bl MOD06_022497DC + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_022497CC +MOD06_022497CC: ; 0x022497CC + ldr r3, _022497D8 ; =0x021E5079 + ldr r0, [r0] + mov r1, #2 + mov r2, #0x14 + bx r3 + nop +_022497D8: .word 0x021E5079 + + thumb_func_start MOD06_022497DC +MOD06_022497DC: ; 0x022497DC + ldr r3, _022497E4 ; =0x021E50A1 + ldr r0, [r0] + mov r1, #2 + bx r3 + .align 2, 0 +_022497E4: .word 0x021E50A1 + + thumb_func_start MOD06_022497E8 +MOD06_022497E8: ; 0x022497E8 + push {r4, r5, lr} + sub sp, #0x24 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02058738 + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_021E4C24 + mov r1, #1 + str r0, [sp, #0xc] + bl FUN_021E4C08 + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, sp, #0x18 + str r5, [sp, #0x14] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0xc] + ldr r1, _02249830 ; =0x02251958 + add r2, sp, #0x18 + add r3, r4, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r4, r5, pc} + nop +_02249830: .word 0x02251958 + + thumb_func_start MOD06_02249834 +MOD06_02249834: ; 0x02249834 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + ldr r0, [r4, #0x20] + bl FUN_02058448 + str r0, [r4] + ldr r0, [r4, #0x20] + bl FUN_02058450 + str r0, [r4, #4] + ldr r0, [r4, #0x20] + bl FUN_02058458 + str r0, [r4, #8] + bl FUN_0205C334 + cmp r0, #1 + bne _0224987E + ldr r0, [r4, #0x20] + bl FUN_0205C340 + str r0, [r4, #8] +_0224987E: + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x28] + str r0, [r4, #0x2c] + str r0, [r4, #0x30] + mov r0, #0x40 + str r0, [r4, #0x34] + ldr r1, [r4, #0x20] + add r0, r4, #0 + add r2, sp, #0 + bl MOD06_02249A00 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249A68 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_022498AC +MOD06_022498AC: ; 0x022498AC + push {r3, lr} + ldr r0, [r1, #0xc] + cmp r0, #1 + bne _022498BA + ldr r0, [r1, #0x24] + bl FUN_0201F744 +_022498BA: + pop {r3, pc} + + thumb_func_start MOD06_022498BC +MOD06_022498BC: ; 0x022498BC + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x20] + add r5, r0, #0 + add r0, r6, #0 + bl FUN_02058458 + add r7, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _022498DE + ldr r0, [r4, #0x20] + bl FUN_0205C340 + add r7, r0, #0 +_022498DE: + ldr r0, [r4, #8] + cmp r0, r7 + bne _022498FC + ldr r1, [r4] + ldr r2, [r4, #4] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + beq _022498FC + add r0, r6, #0 + bl FUN_02058A9C + cmp r0, #0 + bne _02249906 +_022498FC: + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_02249906: + ldr r1, [r4, #0x28] + ldr r0, [r4, #0x34] + add r1, r1, r0 + mov r0, #0x12 + lsl r0, r0, #8 + str r1, [r4, #0x28] + cmp r1, r0 + blt _02249920 + str r0, [r4, #0x28] + ldr r0, [r4, #0x34] + neg r0, r0 + str r0, [r4, #0x34] + b _02249930 +_02249920: + mov r0, #0xe + lsl r0, r0, #8 + cmp r1, r0 + bgt _02249930 + str r0, [r4, #0x28] + ldr r0, [r4, #0x34] + neg r0, r0 + str r0, [r4, #0x34] +_02249930: + add r0, r4, #0 + add r1, r6, #0 + add r2, sp, #0 + bl MOD06_02249A00 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _02249950 + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249A68 +_02249950: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_02249954 +MOD06_02249954: ; 0x02249954 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r4, [r5, #0x20] + add r6, r0, #0 + add r0, r4, #0 + bl FUN_02058458 + add r7, r0, #0 + bl FUN_0205C334 + cmp r0, #1 + bne _02249976 + ldr r0, [r5, #0x20] + bl FUN_0205C340 + add r7, r0, #0 +_02249976: + ldr r0, [r5, #8] + cmp r0, r7 + bne _02249994 + ldr r1, [r5] + ldr r2, [r5, #4] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + beq _02249994 + add r0, r4, #0 + bl FUN_02058A9C + cmp r0, #0 + bne _0224999E +_02249994: + add r0, r6, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, r6, r7, pc} +_0224999E: + ldr r0, [r5, #0xc] + cmp r0, #0 + beq _022499FA + add r0, r4, #0 + bl FUN_02058890 + cmp r0, #1 + ldr r0, [r5, #0x24] + bne _022499B8 + mov r1, #0 + bl FUN_0201F80C + b _022499BE +_022499B8: + mov r1, #1 + bl FUN_0201F80C +_022499BE: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r5, #0x24] + add r1, sp, #0 + bl FUN_0201F7C8 + add r1, r5, #0 + ldr r0, [r5, #0x24] + add r1, #0x28 + bl FUN_0201F7F0 + ldr r0, [r5, #0x20] + bl FUN_021F0514 + add r4, r0, #0 + bl FUN_0201F844 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F830 + add r0, r4, #0 + bl FUN_0201F880 + add r1, r0, #0 + ldr r0, [r5, #0x24] + bl FUN_0201F86C +_022499FA: + add sp, #0xc + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_02249A00 +MOD06_02249A00: ; 0x02249A00 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r5, r0, #0 + ldr r0, _02249A64 ; =0x02251948 + str r1, [sp] + ldr r1, [r0, #8] + ldr r0, [r0, #0xc] + add r4, r2, #0 + str r0, [sp, #8] + str r1, [sp, #4] + ldr r0, [sp] + add r1, r4, #0 + bl FUN_02058B84 + ldr r0, [r4, #8] + add r1, r4, #0 + neg r6, r0 + ldr r0, [sp] + ldr r7, [r4] + bl FUN_02058B5C + ldr r0, [r5, #0x14] + add r1, r4, #0 + bl FUN_02059E9C + ldr r1, [r4] + add r1, r1, r7 + str r1, [r4] + mov r1, #7 + lsl r1, r1, #0xc + ldr r2, [r4, #8] + sub r1, r6, r1 + add r1, r2, r1 + str r1, [r4, #8] + cmp r0, #0 + bne _02249A50 + mov r0, #0 + add sp, #0xc + str r0, [r4, #4] + pop {r4, r5, r6, r7, pc} +_02249A50: + ldr r0, [r5, #0x10] + ldr r2, [r4, #4] + lsl r1, r0, #2 + add r0, sp, #4 + ldr r0, [r0, r1] + sub r0, r2, r0 + str r0, [r4, #4] + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_02249A64: .word 0x02251948 + + thumb_func_start MOD06_02249A68 +MOD06_02249A68: ; 0x02249A68 + push {r4, r5, lr} + sub sp, #0x34 + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x20] + bl FUN_02058578 + ldr r1, [r4, #8] + add r2, sp, #0 + bl FUN_021F220C + cmp r0, #0 + beq _02249AAE + ldr r0, [r4, #0x20] + bl FUN_021F2E28 + cmp r0, #1 + beq _02249AAE + ldr r0, [r4, #0x18] + mov r1, #2 + bl FUN_021E5094 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x28 + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + add r2, sp, #0x28 + bl FUN_021E4E90 + str r0, [r4, #0x24] + mov r0, #1 + str r0, [r4, #0xc] +_02249AAE: + add sp, #0x34 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02249AB4 +MOD06_02249AB4: ; 0x02249AB4 + push {r3, r4, r5, r6, lr} + sub sp, #0x34 + add r4, r1, #0 + add r6, r4, #0 + add r5, r0, #0 + add r6, #0x10 + add r3, sp, #0 + mov r2, #5 +_02249AC4: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249AC4 + ldr r0, [r4, #8] + mov r1, #2 + bl FUN_021E5094 + str r0, [sp] + add r0, r5, #0 + add r1, sp, #0x28 + bl FUN_0206477C + ldr r0, [r4, #8] + add r1, sp, #0 + add r2, sp, #0x28 + bl FUN_021E4E90 + str r0, [r4, #0x3c] + ldr r5, [r4, #0x38] + add r0, r5, #0 + bl FUN_0201F844 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0201F830 + add r0, r5, #0 + bl FUN_0201F8C0 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0201F890 + add r0, r5, #0 + bl FUN_0201F880 + add r1, r0, #0 + ldr r0, [r4, #0x3c] + bl FUN_0201F86C + ldr r0, [r4, #0x3c] + mov r1, #0 + bl FUN_0201F854 + ldr r0, [r4, #0x3c] + bl FUN_0201F8F0 + add sp, #0x34 + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_02249B28 +MOD06_02249B28: ; 0x02249B28 + push {r3, r4, r5, lr} + sub sp, #8 + add r5, r0, #0 + ldr r0, _02249B78 ; =0x02251948 + add r4, r1, #0 + ldr r1, [r0] + ldr r0, [r0, #4] + add r3, r5, #0 + add r3, #0x50 + str r1, [sp] + str r0, [sp, #4] + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, r4, #0 + str r0, [r2] + ldr r0, [r5, #4] + bl FUN_02059E9C + mov r1, #7 + ldr r2, [r4, #8] + lsl r1, r1, #0xc + sub r1, r2, r1 + str r1, [r4, #8] + cmp r0, #0 + bne _02249B66 + mov r0, #0 + add sp, #8 + str r0, [r4, #4] + pop {r3, r4, r5, pc} +_02249B66: + ldr r0, [r5] + ldr r2, [r4, #4] + lsl r1, r0, #2 + add r0, sp, #0 + ldr r0, [r0, r1] + sub r0, r2, r0 + str r0, [r4, #4] + add sp, #8 + pop {r3, r4, r5, pc} + .align 2, 0 +_02249B78: .word 0x02251948 + + thumb_func_start MOD06_02249B7C +MOD06_02249B7C: ; 0x02249B7C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x40 + add r5, r0, #0 + add r4, r1, #0 + add r6, r2, #0 + add r7, r3, #0 + bl FUN_021E4C20 + str r0, [sp, #8] + add r0, r5, #0 + mov r1, #1 + str r5, [sp, #0xc] + bl FUN_021E4C08 + str r0, [sp, #0x10] + add r3, sp, #0x14 + mov r2, #5 +_02249B9E: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249B9E + str r6, [sp, #0x3c] + add r0, sp, #8 + str r0, [sp] + ldr r0, [sp, #0x5c] + ldr r1, _02249BC0 ; =0x0225196C + str r0, [sp, #4] + ldr r3, [sp, #0x58] + add r0, r5, #0 + add r2, r7, #0 + bl FUN_021E4DC4 + add sp, #0x40 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249BC0: .word 0x0225196C + + thumb_func_start MOD06_02249BC4 +MOD06_02249BC4: ; 0x02249BC4 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r6, r0, #0 + add r3, r4, #4 + mov r2, #7 +_02249BD6: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _02249BD6 + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r4, #0x40] + str r0, [r4, #0x44] + str r0, [r4, #0x48] + mov r0, #0x40 + add r1, r4, #0 + str r0, [r4, #0x4c] + add r0, r5, #0 + add r1, #0x50 + bl FUN_0206477C + add r0, r4, #0 + add r1, sp, #0 + bl MOD06_02249B28 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249AB4 + add r0, r5, #0 + bl FUN_020646DC + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_02249C24 +MOD06_02249C24: ; 0x02249C24 + ldr r3, _02249C2C ; =0x0201F745 + ldr r0, [r1, #0x3c] + bx r3 + nop +_02249C2C: .word 0x0201F745 + + thumb_func_start MOD06_02249C30 +MOD06_02249C30: ; 0x02249C30 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r2, [r1, #0x40] + ldr r0, [r1, #0x4c] + add r2, r2, r0 + mov r0, #0x12 + lsl r0, r0, #8 + str r2, [r1, #0x40] + cmp r2, r0 + blt _02249C50 + str r0, [r1, #0x40] + ldr r0, [r1, #0x4c] + neg r0, r0 + str r0, [r1, #0x4c] + b _02249C60 +_02249C50: + mov r0, #0xe + lsl r0, r0, #8 + cmp r2, r0 + bgt _02249C60 + str r0, [r1, #0x40] + ldr r0, [r1, #0x4c] + neg r0, r0 + str r0, [r1, #0x4c] +_02249C60: + add r0, r1, #0 + add r1, sp, #0 + bl MOD06_02249B28 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_02249C74 +MOD06_02249C74: ; 0x02249C74 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x3c] + add r1, sp, #0 + bl FUN_0201F7C8 + ldr r0, [r4, #0x3c] + add r4, #0x40 + add r1, r4, #0 + bl FUN_0201F7F0 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_02249C98 +MOD06_02249C98: ; 0x02249C98 + push {r3, r4, r5, lr} + mov r2, #0 + ldr r1, _02249CB4 ; =0x00000734 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_02249CC8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_02249CB4: .word 0x00000734 + + thumb_func_start MOD06_02249CB8 +MOD06_02249CB8: ; 0x02249CB8 + push {r4, lr} + add r4, r0, #0 + bl MOD06_02249D60 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_02249CC8 +MOD06_02249CC8: ; 0x02249CC8 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x20 + add r5, r0, #0 + mov r0, #0 + str r0, [sp, #0x1c] + ldr r0, _02249D54 ; =0x022519EC + ldr r4, _02249D58 ; =0x022519C4 + str r0, [sp, #0x18] + ldr r0, _02249D5C ; =0x000006E4 + add r1, r5, r0 + str r1, [sp, #0x14] + add r1, r0, #0 + sub r1, #0x50 + add r1, r5, r1 + str r1, [sp, #0x10] + add r1, r5, #4 + str r1, [sp, #0xc] + add r1, r0, #0 + sub r0, #0x28 + add r6, r5, r0 + mov r0, #0xd3 + lsl r0, r0, #2 + add r1, #0x28 + add r0, r5, r0 + add r7, r5, r1 + str r0, [sp, #8] +_02249CFC: + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x18] + str r0, [sp] + ldr r0, [sp, #0x14] + ldr r3, [sp, #0xc] + str r0, [sp, #4] + ldr r0, [r5] + ldr r1, [r1] + mov r2, #0 + bl FUN_021E51EC + str r6, [sp] + str r7, [sp, #4] + ldr r0, [r5] + ldr r1, [r4] + ldr r3, [sp, #8] + mov r2, #0 + bl FUN_021E51EC + ldr r0, [sp, #0x18] + add r7, r7, #4 + add r0, r0, #4 + str r0, [sp, #0x18] + ldr r0, [sp, #0x14] + add r6, r6, #4 + add r0, r0, #4 + str r0, [sp, #0x14] + ldr r0, [sp, #0x10] + add r4, r4, #4 + add r0, r0, #4 + str r0, [sp, #0x10] + ldr r0, [sp, #0xc] + add r0, #0x54 + str r0, [sp, #0xc] + ldr r0, [sp, #8] + add r0, #0x54 + str r0, [sp, #8] + ldr r0, [sp, #0x1c] + add r0, r0, #1 + str r0, [sp, #0x1c] + cmp r0, #0xa + blt _02249CFC + add sp, #0x20 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02249D54: .word 0x022519EC +_02249D58: .word 0x022519C4 +_02249D5C: .word 0x000006E4 + + thumb_func_start MOD06_02249D60 +MOD06_02249D60: ; 0x02249D60 + push {r3, r4, r5, r6, r7, lr} + ldr r7, _02249D84 ; =0x000006E4 + add r5, r0, #0 + add r6, r7, #0 + mov r4, #0 + add r6, #0x28 +_02249D6C: + ldr r0, [r5, r7] + bl FUN_021E4C00 + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #0xa + blt _02249D6C + pop {r3, r4, r5, r6, r7, pc} + nop +_02249D84: .word 0x000006E4 + + thumb_func_start MOD06_02249D88 +MOD06_02249D88: ; 0x02249D88 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + add r1, r3, #0 + mov r4, #0 + cmp r0, #3 + bhi _02249DEC + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02249DA2: ; jump table + .short _02249DAA - _02249DA2 - 2 ; case 0 + .short _02249DB4 - _02249DA2 - 2 ; case 1 + .short _02249DC8 - _02249DA2 - 2 ; case 2 + .short _02249DD6 - _02249DA2 - 2 ; case 3 +_02249DAA: + mov r0, #0x54 + add r1, r5, #4 + mul r0, r2 + add r4, r1, r0 + b _02249DEC +_02249DB4: + lsl r3, r1, #4 + ldr r1, _02249DF8 ; =0x02251A14 + lsl r2, r2, #2 + add r1, r1, r3 + ldr r2, [r2, r1] + mov r1, #0x54 + add r0, r5, #4 + mul r1, r2 + add r4, r0, r1 + b _02249DEC +_02249DC8: + mov r0, #0xd3 + lsl r0, r0, #2 + add r1, r5, r0 + mov r0, #0x54 + mul r0, r2 + add r4, r1, r0 + b _02249DEC +_02249DD6: + lsl r3, r1, #4 + ldr r1, _02249DF8 ; =0x02251A14 + lsl r2, r2, #2 + add r1, r1, r3 + mov r0, #0xd3 + ldr r2, [r2, r1] + lsl r0, r0, #2 + mov r1, #0x54 + add r0, r5, r0 + mul r1, r2 + add r4, r0, r1 +_02249DEC: + cmp r4, #0 + bne _02249DF4 + bl ErrorHandling +_02249DF4: + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 +_02249DF8: .word 0x02251A14 + + thumb_func_start MOD06_02249DFC +MOD06_02249DFC: ; 0x02249DFC + push {r4, lr} + mov r4, #0 + cmp r1, #3 + bhi _02249E52 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_02249E10: ; jump table + .short _02249E18 - _02249E10 - 2 ; case 0 + .short _02249E22 - _02249E10 - 2 ; case 1 + .short _02249E36 - _02249E10 - 2 ; case 2 + .short _02249E40 - _02249E10 - 2 ; case 3 +_02249E18: + lsl r1, r2, #2 + add r1, r0, r1 + ldr r0, _02249E60 ; =0x00000694 + ldr r4, [r1, r0] + b _02249E52 +_02249E22: + ldr r1, _02249E64 ; =0x02251A14 + lsl r3, r3, #4 + lsl r2, r2, #2 + add r1, r1, r3 + ldr r1, [r2, r1] + lsl r1, r1, #2 + add r1, r0, r1 + ldr r0, _02249E60 ; =0x00000694 + ldr r4, [r1, r0] + b _02249E52 +_02249E36: + lsl r1, r2, #2 + add r1, r0, r1 + ldr r0, _02249E68 ; =0x000006BC + ldr r4, [r1, r0] + b _02249E52 +_02249E40: + ldr r1, _02249E64 ; =0x02251A14 + lsl r3, r3, #4 + lsl r2, r2, #2 + add r1, r1, r3 + ldr r1, [r2, r1] + lsl r1, r1, #2 + add r1, r0, r1 + ldr r0, _02249E68 ; =0x000006BC + ldr r4, [r1, r0] +_02249E52: + cmp r4, #0 + bne _02249E5A + bl ErrorHandling +_02249E5A: + add r0, r4, #0 + pop {r4, pc} + nop +_02249E60: .word 0x00000694 +_02249E64: .word 0x02251A14 +_02249E68: .word 0x000006BC + + thumb_func_start MOD06_02249E6C +MOD06_02249E6C: ; 0x02249E6C + ldr r3, _02249E74 ; =MOD06_02249E9C + mov r1, #0 + bx r3 + nop +_02249E74: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E78 +MOD06_02249E78: ; 0x02249E78 + ldr r3, _02249E80 ; =MOD06_02249E9C + mov r1, #1 + bx r3 + nop +_02249E80: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E84 +MOD06_02249E84: ; 0x02249E84 + ldr r3, _02249E8C ; =MOD06_02249E9C + mov r1, #2 + bx r3 + nop +_02249E8C: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E90 +MOD06_02249E90: ; 0x02249E90 + ldr r3, _02249E98 ; =MOD06_02249E9C + mov r1, #3 + bx r3 + nop +_02249E98: .word MOD06_02249E9C + + thumb_func_start MOD06_02249E9C +MOD06_02249E9C: ; 0x02249E9C + push {r4, r5, r6, r7, lr} + sub sp, #0x34 + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02058B14 + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B24 + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_02058B80 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_020584C4 + str r0, [sp, #0x14] + add r0, r5, #0 + bl FUN_020584C8 + str r0, [sp, #0x18] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r7, r0, #0 + add r0, r5, #0 + bl FUN_021E4C24 + mov r1, #0xb + str r0, [sp, #8] + bl FUN_021E4C08 + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + add r1, r4, #0 + add r5, r0, #0 + bl MOD06_02249D88 + str r0, [sp, #0x20] + ldr r2, [sp, #0x14] + ldr r3, [sp, #0x18] + add r0, r5, #0 + add r1, r4, #0 + bl MOD06_02249DFC + str r0, [sp, #0x24] + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + add r2, sp, #0x28 + str r4, [sp, #0x1c] + bl FUN_02059E60 + str r6, [sp, #0x2c] + cmp r4, #3 + bhi _02249F6A + add r0, r4, r4 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_02249F1C: ; jump table + .short _02249F24 - _02249F1C - 2 ; case 0 + .short _02249F24 - _02249F1C - 2 ; case 1 + .short _02249F46 - _02249F1C - 2 ; case 2 + .short _02249F46 - _02249F1C - 2 ; case 3 +_02249F24: + mov r0, #2 + lsl r0, r0, #0xe + sub r1, r6, r0 + str r1, [sp, #0x2c] + sub r1, r4, #2 + cmp r1, #1 + bhi _02249F3C + ldr r1, [sp, #0x30] + lsr r0, r0, #2 + sub r0, r1, r0 + str r0, [sp, #0x30] + b _02249F6A +_02249F3C: + ldr r1, [sp, #0x30] + lsr r0, r0, #3 + add r0, r1, r0 + str r0, [sp, #0x30] + b _02249F6A +_02249F46: + mov r0, #0xa + lsl r0, r0, #0xc + sub r0, r6, r0 + str r0, [sp, #0x2c] + sub r0, r4, #2 + cmp r0, #1 + bhi _02249F60 + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xc + sub r0, r1, r0 + str r0, [sp, #0x30] + b _02249F6A +_02249F60: + mov r0, #2 + ldr r1, [sp, #0x30] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x30] +_02249F6A: + add r0, sp, #0x1c + str r0, [sp] + ldr r0, [sp, #8] + ldr r1, _02249F80 ; =0x0225198C + add r2, sp, #0x28 + mov r3, #0 + str r7, [sp, #4] + bl FUN_021E4DC4 + add sp, #0x34 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_02249F80: .word 0x0225198C + + thumb_func_start MOD06_02249F84 +MOD06_02249F84: ; 0x02249F84 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_02064754 + str r0, [r4, #0x10] + add r0, r5, #0 + bl FUN_0206475C + ldr r1, [r0, #4] + str r1, [r4, #0x14] + ldr r1, [r0, #8] + str r1, [r4, #0x18] + mov r1, #0x1f + str r1, [r4, #0xc] + ldr r0, [r0] + str r0, [r4, #0x10] + mov r0, #1 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_02249FAC +MOD06_02249FAC: ; 0x02249FAC + bx lr + .align 2, 0 + + thumb_func_start MOD06_02249FB0 +MOD06_02249FB0: ; 0x02249FB0 + push {r3, lr} + ldr r2, [r1] + cmp r2, #0 + beq _02249FBE + cmp r2, #1 + beq _02249FD0 + pop {r3, pc} +_02249FBE: + ldr r0, [r1, #4] + add r0, r0, #1 + str r0, [r1, #4] + cmp r0, #0x10 + blt _02249FDC + ldr r0, [r1] + add r0, r0, #1 + str r0, [r1] + pop {r3, pc} +_02249FD0: + ldr r2, [r1, #0xc] + sub r2, r2, #2 + str r2, [r1, #0xc] + bpl _02249FDC + bl FUN_021E4DE4 +_02249FDC: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_02249FE0 +MOD06_02249FE0: ; 0x02249FE0 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + beq _0224A034 + ldr r5, _0224A038 ; =0x02251980 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A03C ; =0x022519A0 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A000: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A000 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + mov r2, #0x1f + ldr r0, [r4, #0x18] + mov r1, #1 + lsl r2, r2, #0x10 + bl FUN_020BC02C + ldr r0, [r4, #0x18] + ldr r1, [r4, #0xc] + bl FUN_020BBA34 + ldr r0, [r4, #0x14] + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224A034: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224A038: .word 0x02251980 +_0224A03C: .word 0x022519A0 + + thumb_func_start MOD06_0224A040 +MOD06_0224A040: ; 0x0224A040 + push {r3, r4, r5, lr} + mov r1, #0x8b + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A06C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A05C +MOD06_0224A05C: ; 0x0224A05C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A0B4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A06C +MOD06_0224A06C: ; 0x0224A06C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0x85 + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r6, r0, r1 + sub r1, #0x18 + ldr r5, _0224A0B0 ; =0x02251A74 + add r4, r0, r1 + add r7, r0, #4 +_0224A086: + str r4, [sp] + str r6, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r0, [r0] + mov r2, #0 + add r3, r7, #0 + bl FUN_021E51EC + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r7, #0x54 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #6 + blt _0224A086 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A0B0: .word 0x02251A74 + + thumb_func_start MOD06_0224A0B4 +MOD06_0224A0B4: ; 0x0224A0B4 + push {r4, r5, r6, lr} + mov r6, #0x85 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0224A0BE: + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #6 + blt _0224A0BE + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A0D0 +MOD06_0224A0D0: ; 0x0224A0D0 + push {r3, r4} + add r3, r0, #0 + mov r0, #0x54 + mul r0, r2 + add r0, r1, r0 + add r4, r0, #4 + mov r2, #0xa +_0224A0DE: + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224A0DE + ldr r0, [r4] + str r0, [r3] + pop {r3, r4} + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A0F0 +MOD06_0224A0F0: ; 0x0224A0F0 + push {r3, lr} + sub r0, #0x5b + cmp r0, #5 + bhi _0224A128 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224A104: ; jump table + .short _0224A110 - _0224A104 - 2 ; case 0 + .short _0224A114 - _0224A104 - 2 ; case 1 + .short _0224A118 - _0224A104 - 2 ; case 2 + .short _0224A11C - _0224A104 - 2 ; case 3 + .short _0224A120 - _0224A104 - 2 ; case 4 + .short _0224A124 - _0224A104 - 2 ; case 5 +_0224A110: + mov r0, #0 + pop {r3, pc} +_0224A114: + mov r0, #1 + pop {r3, pc} +_0224A118: + mov r0, #2 + pop {r3, pc} +_0224A11C: + mov r0, #3 + pop {r3, pc} +_0224A120: + mov r0, #4 + pop {r3, pc} +_0224A124: + mov r0, #5 + pop {r3, pc} +_0224A128: + bl ErrorHandling + mov r0, #0 + pop {r3, pc} + + thumb_func_start MOD06_0224A130 +MOD06_0224A130: ; 0x0224A130 + push {r4, r5, r6, lr} + sub sp, #0xc8 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0xc + add r4, r0, #0 + bl FUN_021E4C08 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058458 + bl MOD06_0224A0F0 + add r2, r0, #0 + add r0, sp, #0x14 + add r1, r6, #0 + str r2, [sp, #0x68] + bl MOD06_0224A0D0 + add r6, sp, #0x14 + add r3, sp, #0x70 + mov r2, #0xa +_0224A160: + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224A160 + ldr r0, [r6] + add r1, sp, #8 + str r0, [r3] + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x6c] + str r5, [sp, #0xc4] + bl FUN_0205829C + add r1, sp, #0x68 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224A198 ; =0x02251A60 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0xc8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224A198: .word 0x02251A60 + + thumb_func_start MOD06_0224A19C +MOD06_0224A19C: ; 0x0224A19C + push {r3, r4, r5, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r4, #0 + add r5, r0, #0 + add r3, #0xc + mov r2, #0xc +_0224A1AC: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224A1AC + ldr r0, [r4, #0x68] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x68] + bl FUN_020589CC + cmp r0, #1 + ldr r0, [r4, #0x68] + bne _0224A1CE + bl FUN_02058750 + b _0224A1D2 +_0224A1CE: + bl FUN_02058450 +_0224A1D2: + str r0, [r4, #8] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A1D8 +MOD06_0224A1D8: ; 0x0224A1D8 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A1DC +MOD06_0224A1DC: ; 0x0224A1DC + push {r3, r4, r5, lr} + sub sp, #0x18 + add r2, r1, #0 + ldr r5, [r2, #0x68] + ldr r1, [r2, #4] + add r4, r0, #0 + ldr r2, [r2, #8] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A1FE + add r0, r4, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224A1FE: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + ldr r2, [sp, #0x14] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + sub r0, r1, r0 + add r0, r2, r0 + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_0206476C + add sp, #0x18 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A238 +MOD06_0224A238: ; 0x0224A238 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _0224A278 ; =0x02251A54 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A27C ; =0x02251A8C + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A252: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A252 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + add r4, #0x14 + add r0, r4, #0 + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224A278: .word 0x02251A54 +_0224A27C: .word 0x02251A8C + + thumb_func_start MOD06_0224A280 +MOD06_0224A280: ; 0x0224A280 + push {r3, r4, r5, lr} + mov r1, #0x46 + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A2AC + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224A29C +MOD06_0224A29C: ; 0x0224A29C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A2F4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A2AC +MOD06_0224A2AC: ; 0x0224A2AC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0x43 + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r6, r0, r1 + sub r1, #0xc + ldr r5, _0224A2F0 ; =0x02251ABC + add r4, r0, r1 + add r7, r0, #4 +_0224A2C6: + str r4, [sp] + str r6, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r0, [r0] + mov r2, #0 + add r3, r7, #0 + bl FUN_021E51EC + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r7, #0x54 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #3 + blt _0224A2C6 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224A2F0: .word 0x02251ABC + + thumb_func_start MOD06_0224A2F4 +MOD06_0224A2F4: ; 0x0224A2F4 + push {r4, r5, r6, lr} + mov r6, #0x43 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0224A2FE: + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0224A2FE + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A310 +MOD06_0224A310: ; 0x0224A310 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + mov r1, #0xd + str r4, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x1c] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058744 + add r1, r0, #1 + add r0, sp, #0x14 + str r0, [sp] + str r1, [sp, #4] + ldr r1, _0224A350 ; =0x02251ADC + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_0224A350: .word 0x02251ADC + + thumb_func_start MOD06_0224A354 +MOD06_0224A354: ; 0x0224A354 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x18] + bl FUN_02058448 + str r0, [r4] + ldr r0, [r4, #0x18] + bl FUN_02058450 + str r0, [r4, #4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A380 +MOD06_0224A380: ; 0x0224A380 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A384 +MOD06_0224A384: ; 0x0224A384 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r5, r1, #0 + ldr r4, [r5, #0x18] + ldr r1, [r5] + add r6, r0, #0 + ldr r2, [r5, #4] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A3A6 + add r0, r6, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0224A3A6: + mov r0, #0 + mov r1, #2 + str r0, [r5, #8] + add r0, r4, #0 + lsl r1, r1, #8 + bl FUN_0205842C + cmp r0, #1 + beq _0224A3C8 + add r0, r4, #0 + bl FUN_02058738 + add r1, r4, #0 + bl FUN_0204B5FC + cmp r0, #0 + bne _0224A3D0 +_0224A3C8: + mov r0, #1 + add sp, #0xc + str r0, [r5, #8] + pop {r3, r4, r5, r6, pc} +_0224A3D0: + add r0, r4, #0 + bl FUN_02058738 + add r1, r4, #0 + bl FUN_0204B684 + str r0, [r5, #0xc] + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206476C + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A3F4 +MOD06_0224A3F4: ; 0x0224A3F4 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #8] + cmp r0, #1 + beq _0224A43E + ldr r5, _0224A444 ; =0x02251AB0 + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A448 ; =0x02251B1C + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A414: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A414 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + ldr r1, [r4, #0xc] + add r2, r0, #4 + mov r0, #0x54 + mul r0, r1 + add r0, r2, r0 + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224A43E: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_0224A444: .word 0x02251AB0 +_0224A448: .word 0x02251B1C + + thumb_func_start MOD06_0224A44C +MOD06_0224A44C: ; 0x0224A44C + push {r4, lr} + mov r2, #0 + mov r1, #0xc + add r3, r2, #0 + add r4, r0, #0 + bl FUN_021E4BE8 + str r4, [r0, #8] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A460 +MOD06_0224A460: ; 0x0224A460 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A4D8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A470 +MOD06_0224A470: ; 0x0224A470 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD06_0224A478 +MOD06_0224A478: ; 0x0224A478 + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _0224A486 + bl ErrorHandling +_0224A486: + pop {r3, pc} + + thumb_func_start MOD06_0224A488 +MOD06_0224A488: ; 0x0224A488 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0224A4D0 + mov r0, #1 + str r0, [r4, #4] + ldr r0, [r4, #8] + mov r1, #0xb + mov r2, #0x6d + bl FUN_021E5078 + ldr r0, [r4, #8] + mov r1, #0xb + mov r2, #0x80 + bl FUN_021E50AC + ldr r0, [r4, #8] + mov r1, #0xc + mov r2, #0xe + mov r3, #1 + bl FUN_021E50D4 + mov r0, #0xc + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224A4D4 ; =0x02251B04 + mov r2, #0xb + str r0, [sp, #8] + ldr r0, [r4, #8] + mov r1, #0xd + add r3, r2, #0 + bl FUN_021E4EFC +_0224A4D0: + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224A4D4: .word 0x02251B04 + + thumb_func_start MOD06_0224A4D8 +MOD06_0224A4D8: ; 0x0224A4D8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #1 + bne _0224A506 + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #8] + mov r1, #0xb + bl FUN_021E50A0 + ldr r0, [r4, #8] + mov r1, #0xb + bl FUN_021E50C8 + ldr r0, [r4, #8] + mov r1, #0xc + bl FUN_021E5114 + ldr r0, [r4, #8] + mov r1, #0xd + bl FUN_021E506C +_0224A506: + pop {r4, pc} + + thumb_func_start MOD06_0224A508 +MOD06_0224A508: ; 0x0224A508 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224A514 + bl MOD06_0224A488 +_0224A514: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A518 +MOD06_0224A518: ; 0x0224A518 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224A524 + bl MOD06_0224A4D8 +_0224A524: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A528 +MOD06_0224A528: ; 0x0224A528 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + add r1, sp, #0x14 + bl FUN_021F1E64 + mov r0, #2 + ldr r1, [sp, #0x1c] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] + add r0, r4, #0 + mov r1, #0x1e + str r4, [sp, #8] + bl FUN_021E4C08 + str r0, [sp, #0xc] + add r0, sp, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _0224A56C ; =0x02251AC8 + add r0, r4, #0 + add r2, sp, #0x14 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + nop +_0224A56C: .word 0x02251AC8 + + thumb_func_start MOD06_0224A570 +MOD06_0224A570: ; 0x0224A570 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x10] + bl MOD06_0224A508 + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0xc] + mov r1, #0xd + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x18] + ldr r0, [r4, #0x10] + bl MOD06_0224A470 + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224A5B0 +MOD06_0224A5B0: ; 0x0224A5B0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x18] + bl FUN_0201F744 + ldr r0, [r4, #0x10] + bl MOD06_0224A478 + ldr r0, [r4, #0x10] + bl MOD06_0224A518 + pop {r4, pc} + + thumb_func_start MOD06_0224A5C8 +MOD06_0224A5C8: ; 0x0224A5C8 + push {r4, r5, lr} + sub sp, #0x14 + ldr r5, _0224A620 ; =0x02251AF0 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0 + stmia r3!, {r0, r1} + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #8] + cmp r0, #1 + bne _0224A604 + mov r1, #0 + str r1, [r4, #8] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #5 + blt _0224A5FE + add r0, r2, #0 + bl FUN_021E4DE4 + add sp, #0x14 + pop {r4, r5, pc} +_0224A5FE: + ldr r0, [r4, #0x18] + bl FUN_0201F86C +_0224A604: + ldr r1, [r4, #4] + ldr r0, [r4, #0x18] + lsl r2, r1, #2 + add r1, sp, #0 + ldr r1, [r1, r2] + bl FUN_0201F854 + cmp r0, #1 + bne _0224A61A + mov r0, #1 + str r0, [r4, #8] +_0224A61A: + add sp, #0x14 + pop {r4, r5, pc} + nop +_0224A620: .word 0x02251AF0 + + thumb_func_start MOD06_0224A624 +MOD06_0224A624: ; 0x0224A624 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224A63C +MOD06_0224A63C: ; 0x0224A63C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A668 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A658 +MOD06_0224A658: ; 0x0224A658 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A6A0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A668 +MOD06_0224A668: ; 0x0224A668 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl FUN_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0x4e + mov r3, #0 + bl FUN_021E5224 + mov r0, #0x74 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl FUN_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0224A6A0 +MOD06_0224A6A0: ; 0x0224A6A0 + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl FUN_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl FUN_021F5358 + pop {r4, pc} + + thumb_func_start MOD06_0224A6B8 +MOD06_0224A6B8: ; 0x0224A6B8 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0xe + add r4, r0, #0 + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x14] + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224A6F8 ; =0x02251B58 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A6F8: .word 0x02251B58 + + thumb_func_start MOD06_0224A6FC +MOD06_0224A6FC: ; 0x0224A6FC + push {r3, lr} + bl FUN_02064738 + mov r1, #1 + str r1, [r0, #0xc] + ldr r0, [r0, #0x1c] + mov r1, #0 + str r1, [r0, #0x14] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A710 +MOD06_0224A710: ; 0x0224A710 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldr r0, [r3] + mov r1, #0x90 + str r0, [r2] + ldr r0, [r5, #0x10] + mov r2, #1 + mov r3, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r4, [r5, #0x1c] + ldr r0, [r5, #0x10] + add r1, r4, #4 + bl FUN_021E5294 + ldr r2, [r5, #0x14] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #0x14] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #0x14] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl FUN_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + ldr r0, [r5, #0x18] + bl FUN_02058448 + str r0, [r5, #4] + ldr r0, [r5, #0x18] + bl FUN_02058450 + str r0, [r5, #8] + ldr r5, [r5, #0x18] + add r1, sp, #0xc + add r0, r5, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r6, #0 + add r1, sp, #0xc + bl FUN_0206476C + add r4, #0x18 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r4, #0 + bl FUN_021F54D0 + mov r0, #1 + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224A7C8 +MOD06_0224A7C8: ; 0x0224A7C8 + push {r4, lr} + ldr r4, [r1, #0x1c] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A7DC +MOD06_0224A7DC: ; 0x0224A7DC + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r1, [r5, #0xc] + add r7, r0, #0 + ldr r4, [r5, #0x1c] + ldr r6, [r5, #0x18] + cmp r1, #0 + bne _0224A806 + ldr r1, [r5, #4] + ldr r2, [r5, #8] + add r0, r6, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A828 + add r0, r7, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224A806: + ldr r1, [r4] + ldr r2, [r4, #0x14] + ldr r1, [r1, #8] + ldrh r1, [r1, #4] + lsl r3, r1, #0xc + mov r1, #1 + lsl r1, r1, #0xc + add r1, r2, r1 + str r1, [r4, #0x14] + cmp r1, r3 + ble _0224A824 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224A824: + ldr r0, [r4] + str r1, [r0] +_0224A828: + ldr r0, [r5, #0xc] + cmp r0, #0 + bne _0224A86C + add r0, r6, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r7, #0 + add r1, sp, #0xc + bl FUN_0206476C + add r4, #0x18 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + ldr r3, [sp, #0x14] + add r0, r4, #0 + bl FUN_021F54D0 +_0224A86C: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224A870 +MOD06_0224A870: ; 0x0224A870 + ldr r0, [r1, #0x1c] + ldr r3, _0224A878 ; =0x021F5431 + add r0, #0x18 + bx r3 + .align 2, 0 +_0224A878: .word 0x021F5431 + + thumb_func_start MOD06_0224A87C +MOD06_0224A87C: ; 0x0224A87C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224A8A8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A898 +MOD06_0224A898: ; 0x0224A898 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224A8C8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224A8A8 +MOD06_0224A8A8: ; 0x0224A8A8 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x4f + mov r2, #0 + add r3, r3, #4 + bl FUN_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD06_0224A8C8 +MOD06_0224A8C8: ; 0x0224A8C8 + ldr r3, _0224A8D0 ; =0x021E4C01 + ldr r0, [r0, #0x5c] + bx r3 + nop +_0224A8D0: .word 0x021E4C01 + + thumb_func_start MOD06_0224A8D4 +MOD06_0224A8D4: ; 0x0224A8D4 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0xf + add r4, r0, #0 + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x14] + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224A914 ; =0x02251B6C + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224A914: .word 0x02251B6C + + thumb_func_start MOD06_0224A918 +MOD06_0224A918: ; 0x0224A918 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x14] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x14] + bl FUN_02058450 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A944 +MOD06_0224A944: ; 0x0224A944 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224A948 +MOD06_0224A948: ; 0x0224A948 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r2, r1, #0 + ldr r5, [r2, #0x14] + ldr r1, [r2, #4] + add r4, r0, #0 + ldr r2, [r2, #8] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224A96A + add r0, r4, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224A96A: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_0206476C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224A9A0 +MOD06_0224A9A0: ; 0x0224A9A0 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _0224A9E0 ; =0x02251B40 + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224A9E4 ; =0x02251BB8 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224A9BA: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224A9BA + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x10] + add r1, sp, #0x30 + add r0, r0, #4 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224A9E0: .word 0x02251B40 +_0224A9E4: .word 0x02251BB8 + + thumb_func_start MOD06_0224A9E8 +MOD06_0224A9E8: ; 0x0224A9E8 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224AA14 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AA04 +MOD06_0224AA04: ; 0x0224AA04 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224AA34 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224AA14 +MOD06_0224AA14: ; 0x0224AA14 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x6e + mov r2, #0 + add r3, r3, #4 + bl FUN_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD06_0224AA34 +MOD06_0224AA34: ; 0x0224AA34 + ldr r3, _0224AA3C ; =0x021E4C01 + ldr r0, [r0, #0x5c] + bx r3 + nop +_0224AA3C: .word 0x021E4C01 + + thumb_func_start MOD06_0224AA40 +MOD06_0224AA40: ; 0x0224AA40 + push {r3, r4, r5, lr} + sub sp, #0x20 + add r5, r0, #0 + bl FUN_021E4C24 + mov r1, #0x1f + add r4, r0, #0 + bl FUN_021E4C08 + str r0, [sp, #0x18] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r4, [sp, #0x14] + str r5, [sp, #0x1c] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224AA80 ; =0x02251B80 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x20 + pop {r3, r4, r5, pc} + .align 2, 0 +_0224AA80: .word 0x02251B80 + + thumb_func_start MOD06_0224AA84 +MOD06_0224AA84: ; 0x0224AA84 + push {r4, lr} + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0xc + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x14] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x14] + bl FUN_02058450 + str r0, [r4, #8] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AAB0 +MOD06_0224AAB0: ; 0x0224AAB0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224AAB4 +MOD06_0224AAB4: ; 0x0224AAB4 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r2, r1, #0 + ldr r5, [r2, #0x14] + ldr r1, [r2, #4] + add r4, r0, #0 + ldr r2, [r2, #8] + add r0, r5, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224AAD6 + add r0, r4, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, pc} +_0224AAD6: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02058B84 + ldr r1, [sp, #0xc] + ldr r0, [sp] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sp, #0x10] + ldr r0, [sp, #4] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r1, [sp, #0x14] + ldr r0, [sp, #8] + add r0, r1, r0 + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_0206476C + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AB0C +MOD06_0224AB0C: ; 0x0224AB0C + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + ldr r5, _0224AB4C ; =0x02251B4C + add r2, r0, #0 + add r4, r1, #0 + ldmia r5!, {r0, r1} + add r3, sp, #0x24 + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224AB50 ; =0x02251B94 + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224AB26: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224AB26 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x10] + add r1, sp, #0x30 + add r0, r0, #4 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224AB4C: .word 0x02251B4C +_0224AB50: .word 0x02251B94 + + thumb_func_start MOD06_0224AB54 +MOD06_0224AB54: ; 0x0224AB54 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x60 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224AB80 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AB70 +MOD06_0224AB70: ; 0x0224AB70 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224ABA0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224AB80 +MOD06_0224AB80: ; 0x0224AB80 + push {r3, lr} + sub sp, #8 + add r3, r0, #0 + add r0, #0x58 + str r0, [sp] + add r0, r3, #0 + add r0, #0x5c + str r0, [sp, #4] + ldr r0, [r3] + mov r1, #0x51 + mov r2, #0 + add r3, r3, #4 + bl FUN_021E51EC + add sp, #8 + pop {r3, pc} + + thumb_func_start MOD06_0224ABA0 +MOD06_0224ABA0: ; 0x0224ABA0 + ldr r3, _0224ABA8 ; =0x021E4C01 + ldr r0, [r0, #0x5c] + bx r3 + nop +_0224ABA8: .word 0x021E4C01 + + thumb_func_start MOD06_0224ABAC +MOD06_0224ABAC: ; 0x0224ABAC + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r1, #0 + add r6, r2, #0 + add r2, sp, #0x14 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + str r3, [sp, #0x20] + bl FUN_021E4C24 + mov r1, #0x11 + str r0, [sp, #0x24] + bl FUN_021E4C08 + str r0, [sp, #0x28] + ldr r0, [sp, #0x40] + str r5, [sp, #0x2c] + cmp r0, #0 + bne _0224ABF6 + add r0, r5, #0 + bl FUN_02058738 + mov r1, #2 + lsl r2, r4, #0x10 + lsl r1, r1, #0xe + add r2, r2, r1 + str r2, [sp, #0x14] + lsl r2, r6, #0x10 + add r1, r2, r1 + str r1, [sp, #0x1c] + add r1, sp, #0x14 + bl FUN_02059E9C + b _0224AC12 +_0224ABF6: + ldr r3, _0224AC30 ; =0x02251BDC + add r2, sp, #8 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0x14 + str r0, [r2] + add r0, r5, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #8 + bl FUN_02058BB4 +_0224AC12: + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x20 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #0x24] + ldr r1, _0224AC34 ; =0x02251BF4 + ldr r3, [sp, #0x40] + add r2, sp, #0x14 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224AC30: .word 0x02251BDC +_0224AC34: .word 0x02251BF4 + + thumb_func_start MOD06_0224AC38 +MOD06_0224AC38: ; 0x0224AC38 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + add r7, r0, #0 + add r2, r5, #0 + add r3, r7, #0 + ldr r4, [r7, #0xc] + add r2, #0x24 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + add r0, r4, #0 + bl FUN_02058448 + str r0, [r5, #0xc] + add r0, r4, #0 + bl FUN_02058450 + str r0, [r5, #0x10] + ldr r0, [r7] + str r0, [r5, #8] + add r0, r6, #0 + bl FUN_02064754 + str r0, [r5, #0x18] + mov r0, #1 + lsl r0, r0, #0xc + str r0, [r5, #0x1c] + lsr r0, r0, #2 + str r0, [r5, #0x20] + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AC80 +MOD06_0224AC80: ; 0x0224AC80 + push {lr} + sub sp, #0xc + ldr r0, [r1, #0x30] + add r1, sp, #0 + mov r2, #0 + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + bl FUN_02058BB4 + add sp, #0xc + pop {pc} + + thumb_func_start MOD06_0224AC98 +MOD06_0224AC98: ; 0x0224AC98 + push {r4, r5, r6, lr} + sub sp, #0x18 + add r5, r1, #0 + ldr r4, [r5, #0x30] + ldr r1, [r5, #0xc] + add r6, r0, #0 + ldr r2, [r5, #0x10] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #0 + bne _0224ACBA + add r0, r6, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r4, r5, r6, pc} +_0224ACBA: + mov r0, #0 + str r0, [r5] + add r0, r4, #0 + bl FUN_020584C4 + mov r1, #0 + mvn r1, r1 + str r0, [r5, #4] + cmp r0, r1 + bne _0224ACD6 + mov r0, #1 + add sp, #0x18 + str r0, [r5] + pop {r4, r5, r6, pc} +_0224ACD6: + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _0224AD40 + str r0, [r5, #8] + ldr r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + add r2, r1, r0 + mov r1, #1 + lsl r1, r1, #0xe + str r2, [r5, #0x1c] + cmp r2, r1 + blt _0224ACF8 + str r1, [r5, #0x1c] + ldr r0, [r5, #0x20] + neg r0, r0 + str r0, [r5, #0x20] + b _0224AD06 +_0224ACF8: + lsr r0, r1, #2 + cmp r2, r0 + bgt _0224AD06 + str r0, [r5, #0x1c] + ldr r0, [r5, #0x20] + neg r0, r0 + str r0, [r5, #0x20] +_0224AD06: + mov r0, #0 + str r0, [sp, #0xc] + mov r0, #7 + ldr r1, [r5, #0x1c] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x10] + mov r0, #1 + lsl r0, r0, #0xe + str r0, [sp, #0x14] + add r0, r4, #0 + add r1, sp, #0xc + bl FUN_02058BB4 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #1 + ldr r1, [r5, #0x1c] + lsl r0, r0, #0xc + sub r0, r1, r0 + ldr r2, [sp, #4] + add r1, sp, #0 + add r0, r2, r0 + str r0, [sp, #4] + add r0, r6, #0 + bl FUN_0206476C +_0224AD40: + add sp, #0x18 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224AD44 +MOD06_0224AD44: ; 0x0224AD44 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _0224ADE6 + mov r0, #0 + ldr r1, [r4, #8] + mvn r0, r0 + cmp r1, r0 + beq _0224ADE6 + ldr r0, [r4, #0x14] + ldr r3, _0224ADEC ; =0x02251BE8 + add r0, r0, #1 + str r0, [r4, #0x14] + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _0224ADF0 ; =0x02251C08 + str r0, [r2] + add r3, sp, #0 + mov r2, #4 +_0224AD74: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224AD74 + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #8] + cmp r0, #3 + bhi _0224ADD0 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224AD92: ; jump table + .short _0224AD9A - _0224AD92 - 2 ; case 0 + .short _0224ADA8 - _0224AD92 - 2 ; case 1 + .short _0224ADB6 - _0224AD92 - 2 ; case 2 + .short _0224ADC4 - _0224AD92 - 2 ; case 3 +_0224AD9A: + mov r1, #0 + add r0, sp, #0 + mov r2, #0xb4 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224ADD0 +_0224ADA8: + mov r1, #0 + add r0, sp, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224ADD0 +_0224ADB6: + mov r1, #0 + ldr r2, _0224ADF4 ; =0x0000010E + add r0, sp, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224ADD0 +_0224ADC4: + mov r1, #0 + add r0, sp, #0 + mov r2, #0x5a + add r3, r1, #0 + bl FUN_0201CB20 +_0224ADD0: + add r0, r6, #0 + add r1, sp, #0x30 + bl FUN_0206477C + ldr r0, [r4, #0x2c] + add r1, sp, #0x30 + add r0, r0, #4 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224ADE6: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + nop +_0224ADEC: .word 0x02251BE8 +_0224ADF0: .word 0x02251C08 +_0224ADF4: .word 0x0000010E + + thumb_func_start MOD06_0224ADF8 +MOD06_0224ADF8: ; 0x0224ADF8 + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + mov r1, #1 + str r4, [r0, #0x18] + lsl r1, r1, #0xc + str r1, [r0, #0x1c] + lsr r1, r1, #2 + str r1, [r0, #0x20] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AE10 +MOD06_0224AE10: ; 0x0224AE10 + push {r4, lr} + mov r2, #0 + mov r1, #0x70 + add r3, r2, #0 + add r4, r0, #0 + bl FUN_021E4BE8 + str r4, [r0, #0x10] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AE24 +MOD06_0224AE24: ; 0x0224AE24 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224AE78 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224AE34 +MOD06_0224AE34: ; 0x0224AE34 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + + thumb_func_start MOD06_0224AE3C +MOD06_0224AE3C: ; 0x0224AE3C + push {r3, lr} + ldr r1, [r0] + sub r1, r1, #1 + str r1, [r0] + bpl _0224AE4A + bl ErrorHandling +_0224AE4A: + pop {r3, pc} + + thumb_func_start MOD06_0224AE4C +MOD06_0224AE4C: ; 0x0224AE4C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0224AE72 + ldr r0, [r4, #0x10] + mov r1, #0x52 + mov r2, #1 + bl FUN_021E4C6C + str r0, [r4, #0x6c] + ldr r0, _0224AE74 ; =MOD06_0224AEC0 + add r1, r4, #0 + mov r2, #0x80 + bl FUN_0200CA60 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #4] +_0224AE72: + pop {r4, pc} + .align 2, 0 +_0224AE74: .word MOD06_0224AEC0 + + thumb_func_start MOD06_0224AE78 +MOD06_0224AE78: ; 0x0224AE78 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0224AE8C + bl FUN_0200CAB4 + mov r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #8] +_0224AE8C: + ldr r0, [r4, #4] + cmp r0, #1 + bne _0224AE9C + mov r0, #0 + str r0, [r4, #4] + ldr r0, [r4, #0x6c] + bl FUN_021E4C00 +_0224AE9C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEA0 +MOD06_0224AEA0: ; 0x0224AEA0 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224AEAC + bl MOD06_0224AE4C +_0224AEAC: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEB0 +MOD06_0224AEB0: ; 0x0224AEB0 + push {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _0224AEBC + bl MOD06_0224AE78 +_0224AEBC: + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEC0 +MOD06_0224AEC0: ; 0x0224AEC0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + add r2, r4, #0 + add r3, r4, #0 + ldr r0, [r4, #0x10] + add r1, #0x14 + add r2, #0x68 + add r3, #0x6c + bl FUN_021E5198 + mov r0, #0 + str r0, [r4, #0xc] + mov r0, #1 + str r0, [r4, #8] + add r0, r5, #0 + bl FUN_0200CAB4 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AEE8 +MOD06_0224AEE8: ; 0x0224AEE8 + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r6, r1, #0 + add r7, r2, #0 + add r2, sp, #0xc + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + str r3, [sp, #8] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_021E4C24 + add r4, r0, #0 + ldr r0, [sp, #8] + str r4, [sp, #0x1c] + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x20] + add r0, r4, #0 + mov r1, #0x12 + bl FUN_021E4C08 + str r0, [sp, #0x24] + ldr r0, [sp, #0x40] + str r5, [sp, #0x28] + cmp r0, #0 + bne _0224AF3E + mov r0, #2 + lsl r1, r6, #0x10 + lsl r0, r0, #0xe + add r1, r1, r0 + str r1, [sp, #0xc] + lsl r1, r7, #0x10 + add r0, r1, r0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x20] + add r1, sp, #0xc + bl FUN_02059E9C + b _0224AF46 +_0224AF3E: + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_02058B5C +_0224AF46: + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x18 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224AF64 ; =0x02251C38 + ldr r3, [sp, #0x40] + add r0, r4, #0 + add r2, sp, #0xc + bl FUN_021E4DC4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224AF64: .word 0x02251C38 + + thumb_func_start MOD06_0224AF68 +MOD06_0224AF68: ; 0x0224AF68 + push {r4, lr} + add r4, r1, #0 + bl FUN_02064738 + str r4, [r0, #0xc] + pop {r4, pc} + + thumb_func_start MOD06_0224AF74 +MOD06_0224AF74: ; 0x0224AF74 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r2, r0, #0 + add r6, r2, #0 + add r3, r4, #0 + ldmia r6!, {r0, r1} + add r3, #0x10 + stmia r3!, {r0, r1} + ldmia r6!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r6] + str r0, [r3] + ldr r0, [r2] + str r0, [r4, #4] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0xc] + ldr r0, [r4, #0x1c] + bl MOD06_0224AEA0 + ldr r0, [r4, #0x1c] + bl MOD06_0224AE34 + mov r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AFB0 +MOD06_0224AFB0: ; 0x0224AFB0 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4, #0x1c] + bl MOD06_0224AE3C + ldr r0, [r4, #0x1c] + bl MOD06_0224AEB0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AFC4 +MOD06_0224AFC4: ; 0x0224AFC4 + push {r3, r4, r5, lr} + sub sp, #0x18 + add r5, r0, #0 + ldr r0, [r1, #0xc] + ldr r4, [r1, #0x20] + cmp r0, #0 + beq _0224AFF2 + add r1, sp, #0xc + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r4, #0 + bl FUN_02058BB4 + add r0, r4, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C +_0224AFF2: + add sp, #0x18 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224AFF8 +MOD06_0224AFF8: ; 0x0224AFF8 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r6, r0, #0 + ldr r0, [r4] + cmp r0, #1 + beq _0224B098 + ldr r0, [r4, #0x1c] + ldr r0, [r0, #8] + cmp r0, #0 + beq _0224B098 + ldr r0, [r4, #8] + ldr r3, _0224B09C ; =0x02251C2C + add r0, r0, #1 + str r0, [r4, #8] + ldmia r3!, {r0, r1} + add r2, sp, #0x24 + stmia r2!, {r0, r1} + ldr r0, [r3] + ldr r5, _0224B0A0 ; =0x02251C4C + str r0, [r2] + add r3, sp, #0 + mov r2, #4 +_0224B026: + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + sub r2, r2, #1 + bne _0224B026 + ldr r0, [r5] + str r0, [r3] + ldr r0, [r4, #4] + cmp r0, #3 + bhi _0224B082 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224B044: ; jump table + .short _0224B04C - _0224B044 - 2 ; case 0 + .short _0224B05A - _0224B044 - 2 ; case 1 + .short _0224B068 - _0224B044 - 2 ; case 2 + .short _0224B076 - _0224B044 - 2 ; case 3 +_0224B04C: + mov r1, #0 + add r0, sp, #0 + mov r2, #0xb4 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224B082 +_0224B05A: + mov r1, #0 + add r0, sp, #0 + add r2, r1, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224B082 +_0224B068: + mov r1, #0 + ldr r2, _0224B0A4 ; =0x0000010E + add r0, sp, #0 + add r3, r1, #0 + bl FUN_0201CB20 + b _0224B082 +_0224B076: + mov r1, #0 + add r0, sp, #0 + mov r2, #0x5a + add r3, r1, #0 + bl FUN_0201CB20 +_0224B082: + add r0, r6, #0 + add r1, sp, #0x30 + bl FUN_0206477C + ldr r0, [r4, #0x1c] + add r1, sp, #0x30 + add r0, #0x14 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224B098: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224B09C: .word 0x02251C2C +_0224B0A0: .word 0x02251C4C +_0224B0A4: .word 0x0000010E + + thumb_func_start MOD06_0224B0A8 +MOD06_0224B0A8: ; 0x0224B0A8 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B0D4 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B0C4 +MOD06_0224B0C4: ; 0x0224B0C4 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B10C + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B0D4 +MOD06_0224B0D4: ; 0x0224B0D4 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl FUN_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0xf + mov r3, #0 + bl FUN_021E5224 + mov r0, #0x6f + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl FUN_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0224B10C +MOD06_0224B10C: ; 0x0224B10C + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl FUN_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl FUN_021F5358 + pop {r4, pc} + + thumb_func_start MOD06_0224B124 +MOD06_0224B124: ; 0x0224B124 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl FUN_021E4C24 + mov r1, #0x13 + str r0, [sp, #8] + bl FUN_021E4C08 + str r0, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl FUN_02059E60 + mov r0, #1 + ldr r2, [sp, #0x18] + lsl r1, r4, #3 + lsl r0, r0, #0xc + add r0, r1, r0 + add r0, r2, r0 + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_02058B1C + lsl r1, r0, #0xf + mov r0, #2 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _0224B184 ; =0x02251C70 + add r2, sp, #0x10 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224B184: .word 0x02251C70 + + thumb_func_start MOD06_0224B188 +MOD06_0224B188: ; 0x0224B188 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r0] + mov r1, #0x90 + mov r3, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl FUN_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl FUN_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl FUN_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_0224B200 +MOD06_0224B200: ; 0x0224B200 + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B214 +MOD06_0224B214: ; 0x0224B214 + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _0224B234 + bl FUN_021E4DE4 + pop {r4, pc} +_0224B234: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B23C +MOD06_0224B23C: ; 0x0224B23C + ldr r0, [r1] + ldr r3, _0224B244 ; =0x021F5431 + add r0, #0x18 + bx r3 + .align 2, 0 +_0224B244: .word 0x021F5431 + + thumb_func_start MOD06_0224B248 +MOD06_0224B248: ; 0x0224B248 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #0x38 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B274 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B264 +MOD06_0224B264: ; 0x0224B264 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B2AC + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B274 +MOD06_0224B274: ; 0x0224B274 + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + add r1, r4, #0 + ldr r0, [r4] + add r1, #0x28 + bl FUN_021E5294 + ldr r0, [r4] + add r1, r4, #4 + mov r2, #0x10 + mov r3, #0 + bl FUN_021E5224 + mov r0, #0x70 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + add r1, r4, #0 + ldr r0, [r4] + add r2, r4, #4 + add r4, #0x28 + add r1, #0x14 + add r3, r4, #0 + bl FUN_021E5260 + add sp, #8 + pop {r4, pc} + + thumb_func_start MOD06_0224B2AC +MOD06_0224B2AC: ; 0x0224B2AC + push {r4, lr} + add r4, r0, #0 + add r0, r4, #4 + bl FUN_021F52C8 + add r0, r4, #0 + add r4, #0x28 + add r0, #0x14 + add r1, r4, #0 + bl FUN_021F5358 + pop {r4, pc} + + thumb_func_start MOD06_0224B2C4 +MOD06_0224B2C4: ; 0x0224B2C4 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r5, r0, #0 + add r6, r1, #0 + add r4, r2, #0 + add r7, r3, #0 + bl FUN_021E4C24 + mov r1, #0x14 + str r0, [sp, #8] + bl FUN_021E4C08 + str r0, [sp, #0xc] + add r0, r6, #0 + add r1, r7, #0 + add r2, sp, #0x10 + bl FUN_02059E60 + ldr r1, [sp, #0x18] + lsl r0, r4, #3 + add r0, r1, r0 + str r0, [sp, #0x18] + add r0, r5, #0 + bl FUN_02058B1C + lsl r1, r0, #0xf + mov r0, #2 + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #0x14] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r0, [sp, #8] + ldr r1, _0224B320 ; =0x02251C84 + add r2, sp, #0x10 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224B320: .word 0x02251C84 + + thumb_func_start MOD06_0224B324 +MOD06_0224B324: ; 0x0224B324 + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r6, r0, #0 + add r5, r1, #0 + bl FUN_0206475C + ldr r1, [r0] + ldr r0, [r0, #4] + mov r2, #1 + str r1, [r5, #4] + str r0, [r5, #8] + ldr r0, [r0] + mov r1, #0x90 + mov r3, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r4, [r5] + ldr r0, [r5, #4] + add r1, r4, #4 + bl FUN_021E5294 + ldr r2, [r5, #8] + add r0, r4, #4 + ldr r1, [r2, #0x18] + ldr r2, [r2, #0xc] + bl FUN_020BB8D0 + str r0, [r4] + ldr r3, [r5, #8] + ldr r1, [r3, #0x18] + ldr r2, [r3, #0xc] + ldr r3, [r3, #0x10] + bl FUN_020B8110 + ldr r1, [r5, #8] + add r0, r4, #0 + add r0, #0x18 + add r1, r1, #4 + bl FUN_021F5400 + add r0, r4, #0 + ldr r1, [r4] + add r0, #0x18 + bl FUN_020B7EFC + add r0, r6, #0 + add r1, sp, #0 + bl FUN_0206477C + add r4, #0x18 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl FUN_021F54D0 + mov r0, #1 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + + thumb_func_start MOD06_0224B39C +MOD06_0224B39C: ; 0x0224B39C + push {r4, lr} + ldr r4, [r1] + ldr r1, [r4] + add r0, r4, #4 + bl thunk_FUN_020ae84c + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B3B0 +MOD06_0224B3B0: ; 0x0224B3B0 + push {r4, lr} + ldr r1, [r1] + ldr r2, [r1] + ldr r3, [r1, #0x14] + ldr r2, [r2, #8] + ldrh r2, [r2, #4] + lsl r4, r2, #0xc + mov r2, #1 + lsl r2, r2, #0xc + add r2, r3, r2 + str r2, [r1, #0x14] + cmp r2, r4 + ble _0224B3D0 + bl FUN_021E4DE4 + pop {r4, pc} +_0224B3D0: + ldr r0, [r1] + str r2, [r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B3D8 +MOD06_0224B3D8: ; 0x0224B3D8 + ldr r0, [r1] + ldr r3, _0224B3E0 ; =0x021F5431 + add r0, #0x18 + bx r3 + .align 2, 0 +_0224B3E0: .word 0x021F5431 + + thumb_func_start MOD06_0224B3E4 +MOD06_0224B3E4: ; 0x0224B3E4 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B410 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B400 +MOD06_0224B400: ; 0x0224B400 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B4F0 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B410 +MOD06_0224B410: ; 0x0224B410 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + mov r2, #0x53 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #5 + mov r2, #0x54 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #0 + mov r2, #0x75 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #3 + mov r2, #0x76 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #4 + mov r2, #0x77 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #5 + mov r2, #0x78 + bl FUN_021E50AC + mov r1, #0 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r2, #1 + ldr r0, [r4] + mov r1, #4 + add r3, r2, #0 + bl FUN_021E50D4 + ldr r0, [r4] + mov r1, #5 + mov r2, #2 + mov r3, #1 + bl FUN_021E50D4 + ldr r0, [r4] + mov r1, #6 + mov r2, #3 + mov r3, #1 + bl FUN_021E50D4 + mov r1, #0 + str r1, [sp] + ldr r0, _0224B4E0 ; =0x02251CEC + str r1, [sp, #4] + str r0, [sp, #8] + ldr r0, [r4] + add r2, r1, #0 + add r3, r1, #0 + bl FUN_021E4EFC + mov r0, #4 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B4E4 ; =0x02251D04 + mov r1, #5 + str r0, [sp, #8] + ldr r0, [r4] + add r2, r1, #0 + mov r3, #3 + bl FUN_021E4EFC + mov r2, #5 + str r2, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B4E8 ; =0x02251CD4 + mov r1, #6 + str r0, [sp, #8] + ldr r0, [r4] + mov r3, #4 + bl FUN_021E4EFC + mov r0, #6 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B4EC ; =0x02251D1C + mov r2, #5 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #7 + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224B4E0: .word 0x02251CEC +_0224B4E4: .word 0x02251D04 +_0224B4E8: .word 0x02251CD4 +_0224B4EC: .word 0x02251D1C + + thumb_func_start MOD06_0224B4F0 +MOD06_0224B4F0: ; 0x0224B4F0 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #5 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #3 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #4 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #5 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #4 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #5 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #6 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #0 + bl FUN_021E506C + ldr r0, [r4] + mov r1, #5 + bl FUN_021E506C + ldr r0, [r4] + mov r1, #6 + bl FUN_021E506C + ldr r0, [r4] + mov r1, #7 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B568 +MOD06_0224B568: ; 0x0224B568 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B4C + str r0, [sp, #0x10] + add r0, r4, #0 + str r4, [sp, #0x18] + bl FUN_021E4C20 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x15 + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x24 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224B5CC ; =0x02251C98 + add r0, r4, #0 + add r2, sp, #0x24 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224B5CC: .word 0x02251C98 + + thumb_func_start MOD06_0224B5D0 +MOD06_0224B5D0: ; 0x0224B5D0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x30] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x30] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x30] + bl FUN_02058450 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + bl FUN_02058B80 + str r0, [sp, #4] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_02059E9C + str r0, [r4, #0x14] + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + mov r0, #0x12 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x28] + mov r1, #0 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x34] + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #0 + bne _0224B65E + mov r0, #1 + str r0, [r4] +_0224B65E: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224B664 +MOD06_0224B664: ; 0x0224B664 + ldr r3, _0224B66C ; =0x0201F745 + ldr r0, [r1, #0x34] + bx r3 + nop +_0224B66C: .word 0x0201F745 + + thumb_func_start MOD06_0224B670 +MOD06_0224B670: ; 0x0224B670 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r6, [r4, #0x30] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224B694 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224B694: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0224B6CC + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [r4, #0x24] + bl FUN_02059E9C + str r0, [r4, #0x14] + cmp r0, #1 + bne _0224B6CC + ldr r0, [sp, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206476C +_0224B6CC: + ldr r0, [r4] + cmp r0, #0 + beq _0224B6DE + cmp r0, #1 + beq _0224B702 + cmp r0, #2 + beq _0224B710 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224B6DE: + mov r1, #1 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x34] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224B74A + mov r0, #1 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224B702: + mov r1, #3 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xe + bl FUN_0201F86C + mov r0, #2 + str r0, [r4] +_0224B710: + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224B72A + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224B72A: + add r0, r6, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + ldr r1, [r4, #0x18] + cmp r1, r7 + bne _0224B744 + ldr r1, [r4, #0x20] + cmp r1, r0 + beq _0224B74A +_0224B744: + add r0, r5, #0 + bl FUN_021E4DE4 +_0224B74A: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B750 +MOD06_0224B750: ; 0x0224B750 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl FUN_020582F8 + cmp r0, #0 + bne _0224B772 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, pc} +_0224B772: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B788 +MOD06_0224B788: ; 0x0224B788 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #8 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + add r1, sp, #0 + str r0, [r2] + add r0, r5, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + mov r1, #0 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x1c] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224B7C0 +MOD06_0224B7C0: ; 0x0224B7C0 + ldr r3, _0224B7C8 ; =0x0201F745 + ldr r0, [r1, #0x1c] + bx r3 + nop +_0224B7C8: .word 0x0201F745 + + thumb_func_start MOD06_0224B7CC +MOD06_0224B7CC: ; 0x0224B7CC + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224B7DA + cmp r0, #1 + pop {r4, pc} +_0224B7DA: + mov r1, #1 + ldr r0, [r4, #0x1c] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x1c] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224B7FC + mov r0, #1 + str r0, [r4, #4] + str r0, [r4] +_0224B7FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B800 +MOD06_0224B800: ; 0x0224B800 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x1c] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224B818 +MOD06_0224B818: ; 0x0224B818 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x28 + ldr r6, [r0, #0x3c] + add r5, r1, #0 + add r4, r2, #0 + str r0, [sp, #0x10] + add r0, r6, #0 + mov r1, #0x15 + add r7, r3, #0 + str r5, [sp, #8] + str r4, [sp, #0xc] + str r6, [sp, #0x14] + bl FUN_021E4C08 + str r0, [sp, #0x18] + mov r0, #2 + lsl r1, r5, #0x10 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x20] + mov r0, #9 + lsl r1, r4, #0x10 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #0x24] + add r0, sp, #8 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r1, _0224B868 ; =0x02251CC0 + add r0, r6, #0 + add r2, sp, #0x1c + add r3, r7, #0 + bl FUN_021E4DC4 + add sp, #0x28 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224B868: .word 0x02251CC0 + + thumb_func_start MOD06_0224B86C +MOD06_0224B86C: ; 0x0224B86C + push {r3, lr} + bl FUN_02064738 + ldr r0, [r0, #4] + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B878 +MOD06_0224B878: ; 0x0224B878 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r5, #0 + bl FUN_02064754 + str r0, [r4, #0xc] + ldr r0, [r4, #0x10] + lsl r1, r0, #0x10 + mov r0, #2 + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + ldr r0, [r4, #0x14] + lsl r1, r0, #0x10 + mov r0, #9 + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #4] + ldr r0, [r4, #0x18] + add r1, sp, #0 + bl FUN_02059E9C + mov r0, #1 + ldr r1, [sp, #4] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #4] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0xc] + cmp r0, #0 + beq _0224B8E2 + cmp r0, #1 + beq _0224B8E6 + cmp r0, #2 + b _0224B8EA +_0224B8E2: + mov r1, #5 + b _0224B8EC +_0224B8E6: + mov r1, #6 + b _0224B8EC +_0224B8EA: + mov r1, #7 +_0224B8EC: + ldr r0, [r4, #0x1c] + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x24] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224B8FC +MOD06_0224B8FC: ; 0x0224B8FC + ldr r3, _0224B904 ; =0x0201F745 + ldr r0, [r1, #0x24] + bx r3 + nop +_0224B904: .word 0x0201F745 + + thumb_func_start MOD06_0224B908 +MOD06_0224B908: ; 0x0224B908 + push {r4, lr} + add r4, r1, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224B916 + cmp r0, #1 + pop {r4, pc} +_0224B916: + mov r1, #1 + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + bl FUN_0201F854 + cmp r0, #1 + bne _0224B92E + mov r0, #1 + str r0, [r4, #4] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] +_0224B92E: + pop {r4, pc} + + thumb_func_start MOD06_0224B930 +MOD06_0224B930: ; 0x0224B930 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224B948 +MOD06_0224B948: ; 0x0224B948 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224B974 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B964 +MOD06_0224B964: ; 0x0224B964 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224B9B8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224B974 +MOD06_0224B974: ; 0x0224B974 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #3 + mov r2, #0x56 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #2 + mov r2, #0x79 + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #2 + mov r2, #5 + mov r3, #1 + bl FUN_021E50D4 + mov r3, #2 + mov r1, #3 + str r3, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224B9B4 ; =0x02251D48 + add r2, r1, #0 + str r0, [sp, #8] + ldr r0, [r4] + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 +_0224B9B4: .word 0x02251D48 + + thumb_func_start MOD06_0224B9B8 +MOD06_0224B9B8: ; 0x0224B9B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #3 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #2 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #2 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #3 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224B9E0 +MOD06_0224B9E0: ; 0x0224B9E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x17 + str r4, [sp, #0x18] + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r1, sp, #8 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + add r0, r5, #0 + mov r1, #2 + str r5, [sp, #0x20] + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224BA2C ; =0x02251D34 + add r0, r4, #0 + add r2, sp, #8 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224BA2C: .word 0x02251D34 + + thumb_func_start MOD06_0224BA30 +MOD06_0224BA30: ; 0x0224BA30 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r2, sp, #0 + mov r1, #0 + str r1, [r2] + str r1, [r2, #4] + add r5, r0, #0 + str r1, [r2, #8] + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x14 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x20] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x20] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x20] + bl FUN_02058450 + str r0, [r4, #0xc] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x18] + mov r1, #3 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x24] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BA88 +MOD06_0224BA88: ; 0x0224BA88 + ldr r3, _0224BA90 ; =0x0201F745 + ldr r0, [r1, #0x24] + bx r3 + nop +_0224BA90: .word 0x0201F745 + + thumb_func_start MOD06_0224BA94 +MOD06_0224BA94: ; 0x0224BA94 + push {r3, r4, r5, r6, r7, lr} + add r4, r1, #0 + ldr r7, [r4, #0x20] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r7, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224BAB4 + add r0, r5, #0 + bl FUN_021E4DE4 + pop {r3, r4, r5, r6, r7, pc} +_0224BAB4: + add r0, r5, #0 + bl FUN_02064754 + add r6, r0, #0 + cmp r6, #1 + bne _0224BAD2 + add r0, r7, #0 + bl FUN_02058A00 + cmp r0, #0 + bne _0224BAD2 + add r0, r5, #0 + bl FUN_021E4DE4 + pop {r3, r4, r5, r6, r7, pc} +_0224BAD2: + ldr r0, [r4] + cmp r0, #0 + bne _0224BB08 + mov r1, #1 + ldr r0, [r4, #0x24] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x24] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224BB08 + cmp r6, #0 + bne _0224BB00 + add r0, r5, #0 + bl FUN_021E4DE4 + pop {r3, r4, r5, r6, r7, pc} +_0224BB00: + ldr r0, [r4, #0x24] + mov r1, #0 + bl FUN_0201F86C +_0224BB08: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BB0C +MOD06_0224BB0C: ; 0x0224BB0C + push {r3, r4, r5, r6, lr} + sub sp, #0xc + add r4, r1, #0 + ldr r6, [r4, #0x20] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224BB30 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r3, r4, r5, r6, pc} +_0224BB30: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02058B5C + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BB50 +MOD06_0224BB50: ; 0x0224BB50 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224BB7C + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BB6C +MOD06_0224BB6C: ; 0x0224BB6C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224BBC4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224BB7C +MOD06_0224BB7C: ; 0x0224BB7C + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #6 + mov r2, #0x58 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #6 + mov r2, #0x7a + bl FUN_021E50AC + mov r1, #7 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r0, #7 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224BBC0 ; =0x02251D74 + mov r2, #6 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #8 + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224BBC0: .word 0x02251D74 + + thumb_func_start MOD06_0224BBC4 +MOD06_0224BBC4: ; 0x0224BBC4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #6 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #6 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #7 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BBEC +MOD06_0224BBEC: ; 0x0224BBEC + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x19 + str r4, [sp, #0x18] + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058B2C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058B4C + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #8 + bl FUN_02059E60 + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224BC4C ; =0x02251D60 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224BC4C: .word 0x02251D60 + + thumb_func_start MOD06_0224BC50 +MOD06_0224BC50: ; 0x0224BC50 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_02058450 + str r0, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + mov r1, #8 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x20] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224BC94 +MOD06_0224BC94: ; 0x0224BC94 + ldr r3, _0224BC9C ; =0x0201F745 + ldr r0, [r1, #0x20] + bx r3 + nop +_0224BC9C: .word 0x0201F745 + + thumb_func_start MOD06_0224BCA0 +MOD06_0224BCA0: ; 0x0224BCA0 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0224BCCE + mov r1, #1 + ldr r0, [r4, #0x20] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x20] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #9 + blt _0224BCCE + add r0, r5, #0 + bl FUN_021E4DE4 +_0224BCCE: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224BCD0 +MOD06_0224BCD0: ; 0x0224BCD0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BCF4 +MOD06_0224BCF4: ; 0x0224BCF4 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224BD20 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BD10 +MOD06_0224BD10: ; 0x0224BD10 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224BD68 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224BD20 +MOD06_0224BD20: ; 0x0224BD20 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #7 + mov r2, #0x59 + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #7 + mov r2, #0x7b + bl FUN_021E50AC + mov r1, #8 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r0, #8 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224BD64 ; =0x02251DA0 + mov r2, #7 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #9 + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224BD64: .word 0x02251DA0 + + thumb_func_start MOD06_0224BD68 +MOD06_0224BD68: ; 0x0224BD68 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #7 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #7 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BD90 +MOD06_0224BD90: ; 0x0224BD90 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B4C + str r0, [sp, #0x10] + add r0, r4, #0 + str r4, [sp, #0x18] + bl FUN_021E4C20 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x1a + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x24 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224BDF4 ; =0x02251D8C + add r0, r4, #0 + add r2, sp, #0x24 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224BDF4: .word 0x02251D8C + + thumb_func_start MOD06_0224BDF8 +MOD06_0224BDF8: ; 0x0224BDF8 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x30] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x30] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x30] + bl FUN_02058450 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + bl FUN_02058B80 + str r0, [sp, #4] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_02059E9C + str r0, [r4, #0x14] + mov r0, #2 + ldr r1, [sp] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp] + mov r0, #0x12 + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x28] + mov r1, #9 + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x34] + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #0 + bne _0224BE86 + mov r0, #1 + str r0, [r4] +_0224BE86: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224BE8C +MOD06_0224BE8C: ; 0x0224BE8C + ldr r3, _0224BE94 ; =0x0201F745 + ldr r0, [r1, #0x34] + bx r3 + nop +_0224BE94: .word 0x0201F745 + + thumb_func_start MOD06_0224BE98 +MOD06_0224BE98: ; 0x0224BE98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r6, [r4, #0x30] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224BEBC + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224BEBC: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0224BEF4 + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [r4, #0x24] + bl FUN_02059E9C + str r0, [r4, #0x14] + cmp r0, #1 + bne _0224BEF4 + ldr r0, [sp, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206476C +_0224BEF4: + ldr r0, [r4] + cmp r0, #0 + beq _0224BF06 + cmp r0, #1 + beq _0224BF2A + cmp r0, #2 + beq _0224BF40 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224BF06: + mov r1, #1 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x34] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #0xc + blt _0224BF60 + mov r0, #1 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224BF2A: + mov r1, #3 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xe + bl FUN_0201F86C + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_0201F854 + mov r0, #2 + str r0, [r4] +_0224BF40: + add r0, r6, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + ldr r1, [r4, #0x18] + cmp r1, r7 + bne _0224BF5A + ldr r1, [r4, #0x20] + cmp r1, r0 + beq _0224BF60 +_0224BF5A: + add r0, r5, #0 + bl FUN_021E4DE4 +_0224BF60: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224BF64 +MOD06_0224BF64: ; 0x0224BF64 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + ldr r1, [r4, #4] + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + bl FUN_020582F8 + cmp r0, #0 + bne _0224BF86 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, pc} +_0224BF86: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BF9C +MOD06_0224BF9C: ; 0x0224BF9C + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224BFC8 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224BFB8 +MOD06_0224BFB8: ; 0x0224BFB8 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224C010 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224BFC8 +MOD06_0224BFC8: ; 0x0224BFC8 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #8 + mov r2, #0x5a + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #8 + mov r2, #0x7c + bl FUN_021E50AC + mov r1, #9 + ldr r0, [r4] + add r2, r1, #0 + mov r3, #1 + bl FUN_021E50D4 + mov r0, #9 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224C00C ; =0x02251DCC + mov r2, #8 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0xa + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224C00C: .word 0x02251DCC + + thumb_func_start MOD06_0224C010 +MOD06_0224C010: ; 0x0224C010 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #8 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #0xa + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224C038 +MOD06_0224C038: ; 0x0224C038 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r5, r0, #0 + add r6, r1, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B3C + str r0, [sp, #0xc] + add r0, r5, #0 + bl FUN_02058B4C + str r0, [sp, #0x10] + add r0, r4, #0 + str r4, [sp, #0x18] + bl FUN_021E4C20 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x1b + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #0x24 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #8 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224C09C ; =0x02251DB8 + add r0, r4, #0 + add r2, sp, #0x24 + add r3, r6, #0 + bl FUN_021E4DC4 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224C09C: .word 0x02251DB8 + + thumb_func_start MOD06_0224C0A0 +MOD06_0224C0A0: ; 0x0224C0A0 + push {r4, r5, lr} + sub sp, #0xc + add r5, r0, #0 + add r4, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + add r2, r4, #0 + ldmia r3!, {r0, r1} + add r2, #0x18 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r0, [r4, #0x30] + bl FUN_0205845C + str r0, [r4, #4] + ldr r0, [r4, #0x30] + bl FUN_02058448 + str r0, [r4, #8] + ldr r0, [r4, #0x30] + bl FUN_02058450 + str r0, [r4, #0xc] + ldr r0, [r4, #0x18] + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [r4, #0x30] + bl FUN_02058B80 + str r0, [sp, #4] + ldr r0, [r4, #0x24] + add r1, sp, #0 + bl FUN_02059E9C + str r0, [r4, #0x14] + mov r0, #0x1e + ldr r1, [sp] + lsl r0, r0, #0xa + add r0, r1, r0 + str r0, [sp] + mov r0, #2 + ldr r1, [sp, #4] + lsl r0, r0, #0xe + sub r0, r1, r0 + str r0, [sp, #4] + mov r0, #0xd + ldr r1, [sp, #8] + lsl r0, r0, #0xc + add r0, r1, r0 + str r0, [sp, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206476C + ldr r0, [r4, #0x28] + mov r1, #0xa + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x34] + add r0, r5, #0 + bl FUN_02064754 + cmp r0, #0 + bne _0224C138 + mov r0, #1 + str r0, [r4] +_0224C138: + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224C140 +MOD06_0224C140: ; 0x0224C140 + ldr r3, _0224C148 ; =0x0201F745 + ldr r0, [r1, #0x34] + bx r3 + nop +_0224C148: .word 0x0201F745 + + thumb_func_start MOD06_0224C14C +MOD06_0224C14C: ; 0x0224C14C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r4, r1, #0 + ldr r6, [r4, #0x30] + ldr r1, [r4, #4] + add r5, r0, #0 + ldr r2, [r4, #8] + ldr r3, [r4, #0xc] + add r0, r6, #0 + bl FUN_020582F8 + cmp r0, #0 + bne _0224C170 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224C170: + ldr r0, [r4, #0x14] + cmp r0, #0 + bne _0224C1A8 + add r0, r5, #0 + add r1, sp, #0xc + bl FUN_0206477C + ldr r0, [r4, #0x18] + add r1, sp, #0 + lsl r0, r0, #0x10 + str r0, [sp] + ldr r0, [r4, #0x20] + lsl r0, r0, #0x10 + str r0, [sp, #8] + ldr r0, [sp, #0x10] + str r0, [sp, #4] + ldr r0, [r4, #0x24] + bl FUN_02059E9C + str r0, [r4, #0x14] + cmp r0, #1 + bne _0224C1A8 + ldr r0, [sp, #4] + add r1, sp, #0xc + str r0, [sp, #0x10] + add r0, r5, #0 + bl FUN_0206476C +_0224C1A8: + ldr r0, [r4] + cmp r0, #0 + beq _0224C1BA + cmp r0, #1 + beq _0224C1DE + cmp r0, #2 + beq _0224C1F4 + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} +_0224C1BA: + mov r1, #1 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x34] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #2 + blt _0224C214 + mov r0, #1 + add sp, #0x18 + str r0, [r4] + pop {r3, r4, r5, r6, r7, pc} +_0224C1DE: + mov r1, #2 + ldr r0, [r4, #0x34] + lsl r1, r1, #0xc + bl FUN_0201F86C + ldr r0, [r4, #0x34] + mov r1, #0 + bl FUN_0201F854 + mov r0, #2 + str r0, [r4] +_0224C1F4: + add r0, r6, #0 + bl FUN_02058B2C + add r7, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + ldr r1, [r4, #0x18] + cmp r1, r7 + bne _0224C20E + ldr r1, [r4, #0x20] + cmp r1, r0 + beq _0224C214 +_0224C20E: + add r0, r5, #0 + bl FUN_021E4DE4 +_0224C214: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224C218 +MOD06_0224C218: ; 0x0224C218 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #0x30] + ldr r1, [r4, #8] + ldr r2, [r4, #0xc] + bl FUN_020582A8 + cmp r0, #0 + bne _0224C238 + add r0, r5, #0 + bl FUN_021E4DE4 + add sp, #0xc + pop {r4, r5, pc} +_0224C238: + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x34] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224C24C +MOD06_0224C24C: ; 0x0224C24C + push {r4, lr} + add r4, r1, #0 + bl FUN_0202A9B0 + bl FUN_0202AB4C + ldrb r1, [r0] + cmp r1, #0 + beq _0224C278 + sub r1, r1, #1 + strb r1, [r0] + ldrb r0, [r0] + cmp r0, #0 + bne _0224C278 + mov r1, #0x7f + add r0, r4, #0 + lsl r1, r1, #4 + mov r2, #0 + bl FUN_02038C78 + mov r0, #1 + pop {r4, pc} +_0224C278: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_0224C27C +MOD06_0224C27C: ; 0x0224C27C + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + mov r1, #0x7b + add r2, sp, #4 + add r3, sp, #0 + add r5, r0, #0 + bl FUN_0204A9F0 + cmp r0, #0 + beq _0224C2E8 + mov r0, #4 + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0 + strb r6, [r4, #0xc] + mov r0, #0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldr r0, [r5, #0x28] + bl FUN_020344FC + add r1, r0, #0 + ldr r0, [sp] + add r2, sp, #0x14 + bl FUN_0204AAD4 + ldr r1, [sp, #4] + add r0, sp, #8 + bl FUN_021E7EA0 + add r3, sp, #8 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4] + ldr r0, [sp, #0x14] + add r2, r4, #0 + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #8] + ldr r0, [sp, #0x1c] + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, [r5, #0x10] + ldr r1, _0224C2F0 ; =MOD06_0224C2F4 + bl FUN_0204640C + add sp, #0x20 + pop {r4, r5, r6, pc} +_0224C2E8: + bl ErrorHandling + add sp, #0x20 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224C2F0: .word MOD06_0224C2F4 + + thumb_func_start MOD06_0224C2F4 +MOD06_0224C2F4: ; 0x0224C2F4 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x38 + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bls _0224C310 + b _0224C500 +_0224C310: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C31C: ; jump table + .short _0224C328 - _0224C31C - 2 ; case 0 + .short _0224C3C2 - _0224C31C - 2 ; case 1 + .short _0224C44A - _0224C31C - 2 ; case 2 + .short _0224C476 - _0224C31C - 2 ; case 3 + .short _0224C498 - _0224C31C - 2 ; case 4 + .short _0224C4F6 - _0224C31C - 2 ; case 5 +_0224C328: + ldr r0, _0224C508 ; =0x00000205 + ldr r1, [r5, #0x2c] + bl FUN_021F4BD0 + add r6, r0, #0 + ldr r1, [r5, #0x2c] + mov r0, #0x7c + bl FUN_021F4BD0 + str r0, [sp, #0x18] + ldr r0, [r6] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r7, r0, r1 + ldr r0, [sp, #0x18] + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r6, r0, r1 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + mov r1, #0 + str r1, [sp] + str r7, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, _0224C508 ; =0x00000205 + mov r2, #0x10 + bl FUN_021DA464 + add r0, r5, #0 + mov r1, #0x7c + add r2, sp, #0x1c + mov r3, #0 + bl FUN_0204A9F0 + cmp r0, #0 + bne _0224C390 + bl ErrorHandling +_0224C390: + ldr r0, [sp, #0x1c] + bl FUN_021E7EC8 + add r7, r0, #0 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + str r7, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x20 + mov r3, #0x7c + bl FUN_021DA464 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C3C2: + add r1, sp, #0x20 + mov r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldrb r2, [r4, #0xd] + mov r1, #0xc + ldr r0, [r4] + add r3, r2, #0 + ldr r2, _0224C50C ; =0x02252358 + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x2c] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #4] + add r3, r2, #0 + ldr r2, _0224C510 ; =0x0225235C + mul r3, r1 + ldr r2, [r2, r3] + add r0, r0, r2 + str r0, [sp, #0x30] + ldrb r2, [r4, #0xd] + ldr r0, [r4, #8] + add r3, r2, #0 + mul r3, r1 + ldr r1, _0224C514 ; =0x02252360 + ldr r1, [r1, r3] + add r0, r0, r1 + str r0, [sp, #0x34] + ldr r0, _0224C518 ; =0x000005FE + bl FUN_020054C8 + add r0, sp, #0x20 + str r0, [sp] + ldr r0, [r5, #0x4c] + ldr r2, _0224C508 ; =0x00000205 + str r0, [sp, #4] + add r0, r5, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r5, #0x2c] + add r3, sp, #0x2c + bl FUN_021E7FBC + ldrb r1, [r4, #0xd] + add r1, r4, r1 + strb r0, [r1, #0x10] + ldrb r1, [r4, #0xd] + add r0, r5, #0 + add r0, #0xa0 + add r1, r4, r1 + ldrb r1, [r1, #0x10] + ldr r0, [r0] + bl FUN_021E7EEC + bl FUN_021E7EC8 + add r3, r0, #0 + ldrb r2, [r4, #0xd] + ldr r0, [r5, #0x50] + mov r1, #0x10 + bl FUN_021DA4BC + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C44A: + ldrb r0, [r4, #0xe] + cmp r0, #0xf + bhs _0224C456 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _0224C500 +_0224C456: + mov r0, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bhs _0224C46E + mov r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C46E: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C476: + ldr r0, [r5, #0x50] + mov r1, #0x10 + mov r2, #0 + bl FUN_021DA4EC + ldr r0, [r5, #0x50] + mov r1, #0x20 + mov r2, #0 + bl FUN_021DA4EC + ldr r0, _0224C51C ; =0x0000048E + bl FUN_02005C28 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C498: + ldr r0, [r5, #0x50] + mov r1, #0x10 + bl FUN_021DA58C + cmp r0, #0 + beq _0224C500 + ldr r0, [r5, #0x50] + mov r1, #0x20 + bl FUN_021DA58C + cmp r0, #0 + beq _0224C500 + bl FUN_02005CBC + cmp r0, #0 + bne _0224C500 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x20 + bl FUN_021DA54C + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #0x10 + bl FUN_021DA54C + ldrb r0, [r4, #0xc] + mov r6, #0 + cmp r0, #0 + bls _0224C4EE +_0224C4D4: + add r0, r4, r6 + add r1, r5, #0 + add r1, #0xa0 + ldrb r0, [r0, #0x10] + ldr r1, [r1] + bl FUN_021E7C80 + add r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 + ldrb r0, [r4, #0xc] + cmp r6, r0 + blo _0224C4D4 +_0224C4EE: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224C500 +_0224C4F6: + bl FUN_02016A18 + add sp, #0x38 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224C500: + mov r0, #0 + add sp, #0x38 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C508: .word 0x00000205 +_0224C50C: .word 0x02252358 +_0224C510: .word 0x0225235C +_0224C514: .word 0x02252360 +_0224C518: .word 0x000005FE +_0224C51C: .word 0x0000048E + + thumb_func_start MOD06_0224C520 +MOD06_0224C520: ; 0x0224C520 + push {r4, r5, r6, lr} + add r4, r1, #0 + add r6, r2, #0 + mov r2, #0 + ldr r1, _0224C558 ; =0x000001F2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_0204A9F0 + cmp r0, #0 + beq _0224C552 + mov r0, #4 + add r1, r0, #0 + bl FUN_020169D8 + add r2, r0, #0 + strb r6, [r2] + strb r4, [r2, #1] + mov r0, #0 + strb r0, [r2, #2] + ldr r0, [r5, #0x10] + ldr r1, _0224C55C ; =MOD06_0224C560 + bl FUN_0204640C + pop {r4, r5, r6, pc} +_0224C552: + bl ErrorHandling + pop {r4, r5, r6, pc} + .align 2, 0 +_0224C558: .word 0x000001F2 +_0224C55C: .word MOD06_0224C560 + + thumb_func_start MOD06_0224C560 +MOD06_0224C560: ; 0x0224C560 + push {r4, r5, r6, r7, lr} + sub sp, #0x1c + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #2] + cmp r1, #4 + bhi _0224C664 + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224C586: ; jump table + .short _0224C590 - _0224C586 - 2 ; case 0 + .short _0224C5EE - _0224C586 - 2 ; case 1 + .short _0224C61C - _0224C586 - 2 ; case 2 + .short _0224C648 - _0224C586 - 2 ; case 3 + .short _0224C65A - _0224C586 - 2 ; case 4 +_0224C590: + ldr r0, _0224C66C ; =0x000001F2 + ldr r1, [r5, #0x2c] + bl FUN_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r2, sp, #0x18 + mov r3, #0 + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r6, r0, r1 + ldr r1, _0224C66C ; =0x000001F2 + add r0, r5, #0 + bl FUN_0204A9F0 + cmp r0, #0 + bne _0224C5BA + bl ErrorHandling +_0224C5BA: + ldr r0, [sp, #0x18] + bl FUN_021E7EC8 + add r7, r0, #0 + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + str r7, [sp] + str r6, [sp, #4] + str r0, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + ldrb r0, [r4] + ldr r3, _0224C66C ; =0x000001F2 + mov r2, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + bl FUN_021DA464 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C5EE: + ldrb r0, [r4, #1] + mov r1, #1 + cmp r0, #0 + beq _0224C5FC + cmp r0, #1 + beq _0224C5FC + mov r1, #0 +_0224C5FC: + cmp r1, #0 + bne _0224C604 + bl ErrorHandling +_0224C604: + ldrb r2, [r4, #1] + ldr r0, [r5, #0x50] + mov r1, #1 + bl FUN_021DA4EC + ldr r0, _0224C670 ; =0x00000612 + bl FUN_020054C8 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C61C: + ldr r0, [r5, #0x50] + mov r1, #1 + bl FUN_021DA58C + cmp r0, #0 + beq _0224C664 + ldr r0, _0224C670 ; =0x00000612 + mov r1, #0 + bl FUN_020054F0 + ldr r0, _0224C674 ; =0x000005F1 + bl FUN_020054C8 + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + mov r2, #1 + bl FUN_021DA54C + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C648: + ldr r0, _0224C674 ; =0x000005F1 + bl FUN_02005508 + cmp r0, #0 + bne _0224C664 + ldrb r0, [r4, #2] + add r0, r0, #1 + strb r0, [r4, #2] + b _0224C664 +_0224C65A: + bl FUN_02016A18 + add sp, #0x1c + mov r0, #1 + pop {r4, r5, r6, r7, pc} +_0224C664: + mov r0, #0 + add sp, #0x1c + pop {r4, r5, r6, r7, pc} + nop +_0224C66C: .word 0x000001F2 +_0224C670: .word 0x00000612 +_0224C674: .word 0x000005F1 + + thumb_func_start MOD06_0224C678 +MOD06_0224C678: ; 0x0224C678 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + ldr r4, _0224C6E4 ; =0x02251DE4 + add r3, sp, #0x20 + add r5, r0, #0 + add r7, r1, #0 + add r2, r3, #0 + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + ldmia r4!, {r0, r1} + stmia r3!, {r0, r1} + add r0, sp, #0x18 + str r0, [sp] + add r1, r2, #0 + add r0, r5, #0 + mov r2, #4 + add r3, sp, #0x1c + bl FUN_0204AA5C + cmp r0, #0 + beq _0224C6DA + ldr r0, [r5, #0x2c] + bl FUN_021F4C88 + add r4, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_021E7EC8 + add r6, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_021E7ECC + str r6, [sp] + str r0, [sp, #4] + str r4, [sp, #8] + mov r0, #2 + str r0, [sp, #0xc] + mov r0, #1 + str r0, [sp, #0x10] + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [r5, #0x4c] + ldr r1, [r5, #0x50] + ldr r3, [sp, #0x18] + add r2, r7, #0 + bl FUN_021DA464 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} +_0224C6DA: + bl ErrorHandling + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C6E4: .word 0x02251DE4 + + thumb_func_start MOD06_0224C6E8 +MOD06_0224C6E8: ; 0x0224C6E8 + ldr r3, _0224C6F0 ; =0x021DA4ED + ldr r0, [r0, #0x50] + mov r2, #0 + bx r3 + .align 2, 0 +_0224C6F0: .word 0x021DA4ED + + thumb_func_start MOD06_0224C6F4 +MOD06_0224C6F4: ; 0x0224C6F4 + ldr r3, _0224C6FC ; =0x021DA4ED + ldr r0, [r0, #0x50] + mov r2, #1 + bx r3 + .align 2, 0 +_0224C6FC: .word 0x021DA4ED + + thumb_func_start MOD06_0224C700 +MOD06_0224C700: ; 0x0224C700 + push {r3, r4, r5, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x24 + bl MOD06_0224CB90 + add r4, r0, #0 + mov r0, #0 + str r0, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224C720 +MOD06_0224C720: ; 0x0224C720 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 +_0224C732: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224C758 ; =0x02251E04 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224C74E + add r0, r5, #0 + bl FUN_02016A18 +_0224C74E: + cmp r4, #1 + beq _0224C732 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224C758: .word 0x02251E04 + + thumb_func_start MOD06_0224C75C +MOD06_0224C75C: ; 0x0224C75C + push {r4, lr} + add r0, r1, #0 + mov r1, #4 + add r4, r2, #0 + bl FUN_021F61F4 + ldr r2, _0224C7B0 ; =0xFFF6A000 + str r0, [r4, #0x14] + mov r1, #1 + mov r3, #0xf + bl FUN_021F6254 + ldr r0, [r4, #0x18] + ldr r1, _0224C7B4 ; =0x02251E40 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224C794 + cmp r0, #1 + beq _0224C79C + cmp r0, #2 + beq _0224C7A4 + b _0224C7AA +_0224C794: + ldr r0, _0224C7B8 ; =0x00000603 + bl FUN_020054C8 + b _0224C7AA +_0224C79C: + ldr r0, _0224C7B8 ; =0x00000603 + bl FUN_020054C8 + b _0224C7AA +_0224C7A4: + ldr r0, _0224C7BC ; =0x0000064E + bl FUN_020054C8 +_0224C7AA: + mov r0, #0 + pop {r4, pc} + nop +_0224C7B0: .word 0xFFF6A000 +_0224C7B4: .word 0x02251E40 +_0224C7B8: .word 0x00000603 +_0224C7BC: .word 0x0000064E + + thumb_func_start MOD06_0224C7C0 +MOD06_0224C7C0: ; 0x0224C7C0 + push {r3, r4, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0 + bne _0224C7D6 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_0224C7D6: + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x18] + ldr r1, _0224C83C ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #8 + bge _0224C7F6 + add sp, #0xc + mov r0, #0 + pop {r3, r4, pc} +_0224C7F6: + ldr r0, [r4, #8] + cmp r0, #2 + bne _0224C816 + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r1, r0, #0 + add r2, r0, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _0224C82E +_0224C816: + mov r0, #6 + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + ldr r3, _0224C840 ; =0x00007FFF + add r1, r0, #0 + add r2, r0, #0 + bl FUN_0200E1D0 +_0224C82E: + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r3, r4, pc} + nop +_0224C83C: .word 0x02251E14 +_0224C840: .word 0x00007FFF + + thumb_func_start MOD06_0224C844 +MOD06_0224C844: ; 0x0224C844 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #1 + bne _0224C862 + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x18] + ldr r1, _0224C884 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] +_0224C862: + bl FUN_0200E308 + cmp r0, #0 + bne _0224C86E + mov r0, #0 + pop {r4, pc} +_0224C86E: + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x14] + bl FUN_021F6240 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_0224C884: .word 0x02251E14 + + thumb_func_start MOD06_0224C888 +MOD06_0224C888: ; 0x0224C888 + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r1, #0xc] + add r4, r2, #0 + bl FUN_02034E30 + ldr r1, [r4, #8] + cmp r1, #2 + bne _0224C8B2 + bl FUN_02034DFC + add r1, sp, #0 + bl FUN_02034E90 + ldr r2, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_02049494 + b _0224C8C0 +_0224C8B2: + bl FUN_02034DCC + add r1, r0, #0 + ldr r2, [r4, #8] + add r0, r5, #0 + bl FUN_02049494 +_0224C8C0: + mov r0, #2 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224C8C8 +MOD06_0224C8C8: ; 0x0224C8C8 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r0, r1, #0 + mov r1, #0x24 + add r6, r2, #0 + bl MOD06_0224CB90 + add r4, r0, #0 + str r6, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224C8E8 +MOD06_0224C8E8: ; 0x0224C8E8 + push {r3, r4, r5, r6, r7, lr} + add r5, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r5, #0 + bl FUN_0204652C + ldr r7, _0224C928 ; =0x02251DF4 + add r4, r0, #0 +_0224C8FC: + ldr r3, [r4] + add r0, r5, #0 + lsl r3, r3, #2 + ldr r3, [r7, r3] + add r1, r6, #0 + add r2, r4, #0 + blx r3 + cmp r0, #2 + bne _0224C920 + add r0, r6, #0 + add r1, r4, #0 + bl MOD06_0224C92C + add r0, r4, #0 + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} +_0224C920: + cmp r0, #1 + beq _0224C8FC + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224C928: .word 0x02251DF4 + + thumb_func_start MOD06_0224C92C +MOD06_0224C92C: ; 0x0224C92C + push {r4, lr} + add r4, r0, #0 + ldr r0, [r1, #8] + cmp r0, #2 + bne _0224C952 + ldr r1, [r4, #0x1c] + mov r0, #9 + ldr r1, [r1] + mov r2, #4 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0202914C + add r4, #0x98 + add r1, r0, #0 + ldr r0, [r4] + mov r2, #1 + bl FUN_02028AD4 +_0224C952: + pop {r4, pc} + + thumb_func_start MOD06_0224C954 +MOD06_0224C954: ; 0x0224C954 + push {r4, r5, lr} + sub sp, #0xc + add r4, r2, #0 + ldr r0, [r4, #8] + add r5, r1, #0 + cmp r0, #2 + bne _0224C97A + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + mov r0, #0 + add r2, r1, #0 + add r3, r0, #0 + bl FUN_0200E1D0 + b _0224C990 +_0224C97A: + mov r0, #6 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + mov r0, #4 + str r0, [sp, #8] + ldr r3, _0224C9BC ; =0x00007FFF + mov r0, #0 + add r2, r1, #0 + bl FUN_0200E1D0 +_0224C990: + add r0, r5, #0 + mov r1, #4 + bl FUN_021F61F4 + mov r1, #1 + ldr r2, _0224C9C0 ; =0xFFF6A000 + str r0, [r4, #0x14] + add r3, r1, #0 + bl FUN_021F6254 + ldr r0, [r4, #0x18] + ldr r1, _0224C9C4 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + add sp, #0xc + pop {r4, r5, pc} + nop +_0224C9BC: .word 0x00007FFF +_0224C9C0: .word 0xFFF6A000 +_0224C9C4: .word 0x02251E14 + + thumb_func_start MOD06_0224C9C8 +MOD06_0224C9C8: ; 0x0224C9C8 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #1 + bne _0224C9E6 + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #0x18] + ldr r1, _0224CA08 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] +_0224C9E6: + bl FUN_0200E308 + cmp r0, #0 + bne _0224C9F2 + mov r0, #0 + pop {r4, pc} +_0224C9F2: + ldr r0, [r4, #0x14] + mov r1, #2 + mov r2, #0 + mov r3, #0x3c + bl FUN_021F6254 + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 +_0224CA08: .word 0x02251E14 + + thumb_func_start MOD06_0224CA0C +MOD06_0224CA0C: ; 0x0224CA0C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0 + bne _0224CA1E + mov r0, #0 + pop {r4, pc} +_0224CA1E: + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + cmp r0, #4 + ldr r0, [r4, #0x18] + bge _0224CA3C + ldr r1, _0224CA50 ; =0x02251E14 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + mov r0, #0 + pop {r4, pc} +_0224CA3C: + ldr r1, _0224CA54 ; =0x02251EA4 + bl FUN_0205AEA4 + str r0, [r4, #0xc] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r4, pc} + nop +_0224CA50: .word 0x02251E14 +_0224CA54: .word 0x02251EA4 + + thumb_func_start MOD06_0224CA58 +MOD06_0224CA58: ; 0x0224CA58 + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0xc] + bl FUN_0205AEF0 + cmp r0, #0 + bne _0224CA6A + mov r0, #0 + pop {r4, pc} +_0224CA6A: + ldr r0, [r4, #0x14] + bl FUN_021F6234 + cmp r0, #0 + bne _0224CA78 + mov r0, #0 + pop {r4, pc} +_0224CA78: + ldr r0, [r4, #0x14] + bl FUN_021F6240 + ldr r0, [r4, #0xc] + bl FUN_0205AEFC + mov r0, #2 + pop {r4, pc} + + thumb_func_start MOD06_0224CA88 +MOD06_0224CA88: ; 0x0224CA88 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r0, r2, #0 + mov r1, #0x24 + bl MOD06_0224CB90 + add r4, r0, #0 + mov r0, #1 + str r0, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + str r6, [r4, #0x20] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224CAAC +MOD06_0224CAAC: ; 0x0224CAAC + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 +_0224CABE: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224CAE4 ; =0x02251E28 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224CADA + add r0, r5, #0 + bl FUN_02016A18 +_0224CADA: + cmp r4, #1 + beq _0224CABE + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224CAE4: .word 0x02251E28 + + thumb_func_start MOD06_0224CAE8 +MOD06_0224CAE8: ; 0x0224CAE8 + push {r3, r4, r5, lr} + add r5, r1, #0 + ldr r0, [r5, #0x38] + add r4, r2, #0 + bl FUN_020553E8 + add r3, r0, #0 + ldr r2, [r4, #0x20] + add r0, r5, #0 + mov r1, #0 + bl MOD06_0224666C + str r0, [r4, #0x10] + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224CB0C +MOD06_0224CB0C: ; 0x0224CB0C + push {r4, lr} + add r4, r2, #0 + ldr r0, [r4, #0x10] + bl MOD06_022466A0 + cmp r0, #0 + bne _0224CB1E + mov r0, #0 + pop {r4, pc} +_0224CB1E: + ldr r0, [r4, #0x10] + bl MOD06_022466AC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + mov r0, #1 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CB30 +MOD06_0224CB30: ; 0x0224CB30 + push {r4, r5, r6, lr} + add r5, r0, #0 + add r6, r1, #0 + add r0, r2, #0 + mov r1, #0x24 + bl MOD06_0224CB90 + add r4, r0, #0 + mov r0, #2 + str r0, [r4, #8] + str r5, [r4, #0x1c] + ldr r0, [r5, #0x38] + bl FUN_020553A0 + str r0, [r4, #0x18] + str r6, [r4, #0x20] + add r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start MOD06_0224CB54 +MOD06_0224CB54: ; 0x0224CB54 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + bl FUN_02046528 + add r7, r0, #0 + add r0, r6, #0 + bl FUN_0204652C + add r5, r0, #0 +_0224CB66: + ldr r3, [r5] + add r0, r6, #0 + lsl r4, r3, #2 + ldr r3, _0224CB8C ; =0x02251E28 + add r1, r7, #0 + ldr r3, [r3, r4] + add r2, r5, #0 + blx r3 + add r4, r0, #0 + cmp r4, #2 + bne _0224CB82 + add r0, r5, #0 + bl FUN_02016A18 +_0224CB82: + cmp r4, #1 + beq _0224CB66 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224CB8C: .word 0x02251E28 + + thumb_func_start MOD06_0224CB90 +MOD06_0224CB90: ; 0x0224CB90 + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_020169D8 + add r4, r0, #0 + bne _0224CBA0 + bl ErrorHandling +_0224CBA0: + add r0, r4, #0 + mov r1, #0 + add r2, r5, #0 + bl Call_FillMemWithValue + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CBB0 +MOD06_0224CBB0: ; 0x0224CBB0 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r0, [sp] + mov r0, #0x6a + mov r1, #8 + mov r2, #4 + bl FUN_02006528 + add r4, r0, #0 + add r1, sp, #4 + ldr r0, [sp] + add r1, #2 + add r2, sp, #4 + bl FUN_0202AB8C + add r0, sp, #4 + ldrh r1, [r0, #2] + ldr r0, _0224CC20 ; =0x0000FFFF + cmp r1, r0 + beq _0224CBDE + lsl r0, r1, #2 + ldr r6, [r4, r0] + b _0224CBE0 +_0224CBDE: + mov r6, #0 +_0224CBE0: + add r0, sp, #4 + ldrh r1, [r0] + ldr r0, _0224CC20 ; =0x0000FFFF + cmp r1, r0 + beq _0224CBF0 + lsl r0, r1, #2 + ldr r7, [r4, r0] + b _0224CBF2 +_0224CBF0: + mov r7, #0 +_0224CBF2: + bl FUN_0201B9EC + lsl r0, r0, #4 + lsr r5, r0, #0x10 + cmp r5, #0x10 + blo _0224CC02 + bl ErrorHandling +_0224CC02: + lsl r0, r5, #2 + ldr r0, [r4, r0] + cmp r6, r0 + beq _0224CBF2 + cmp r7, r0 + beq _0224CBF2 + ldr r0, [sp] + add r1, r5, #0 + bl FUN_0202ABA0 + add r0, r4, #0 + bl FUN_02016A18 + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224CC20: .word 0x0000FFFF + + thumb_func_start MOD06_0224CC24 +MOD06_0224CC24: ; 0x0224CC24 + push {r3, r4, lr} + sub sp, #4 + add r1, sp, #0 + add r1, #2 + add r2, sp, #0 + bl FUN_0202AB8C + add r0, sp, #0 + ldrh r1, [r0, #2] + ldr r0, _0224CC5C ; =0x0000FFFF + cmp r1, r0 + bne _0224CC40 + bl ErrorHandling +_0224CC40: + mov r0, #0x6a + mov r1, #8 + mov r2, #4 + bl FUN_02006528 + add r1, sp, #0 + ldrh r1, [r1, #2] + lsl r1, r1, #2 + ldr r4, [r0, r1] + bl FUN_02016A18 + add r0, r4, #0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 +_0224CC5C: .word 0x0000FFFF + + thumb_func_start MOD06_0224CC60 +MOD06_0224CC60: ; 0x0224CC60 + push {r4, r5, r6, r7, lr} + sub sp, #0x4c + add r5, r0, #0 + bl FUN_0201B9EC + lsl r0, r0, #1 + lsr r4, r0, #0x10 + cmp r4, #2 + blo _0224CC76 + bl ErrorHandling +_0224CC76: + cmp r4, #0 + bne _0224CC80 + add sp, #0x4c + mov r0, #0 + pop {r4, r5, r6, r7, pc} +_0224CC80: + ldr r0, [r5, #0xc] + bl FUN_0202881C + bl FUN_020287A4 + add r4, r0, #0 + ldr r0, [r5, #0x38] + add r1, sp, #0x18 + add r2, sp, #0x14 + bl FUN_020572B8 + ldr r0, [r5, #0x28] + bl FUN_020344FC + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + lsr r0, r4, #0x18 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x3c] + lsr r0, r4, #0x10 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x40] + lsr r0, r4, #8 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x44] + lsl r0, r4, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x48] + mov r0, #0x6a + mov r1, #1 + mov r2, #4 + bl FUN_02006528 + str r0, [sp, #0xc] + mov r4, #0 + ldr r0, [r0] + add r3, r4, #0 + cmp r0, #0 + ble _0224CCEA +_0224CCD6: + ldr r1, [sp, #0xc] + lsl r2, r3, #2 + add r1, r1, r2 + ldr r1, [r1, #4] + add r4, r4, r1 + add r1, r3, #1 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r3, r0 + blt _0224CCD6 +_0224CCEA: + lsl r0, r0, #1 + add r0, r0, #2 + lsl r1, r0, #1 + ldr r0, [sp, #0xc] + add r0, r0, r1 + str r0, [sp, #8] + asr r0, r4, #1 + lsr r0, r0, #0x1e + add r0, r4, r0 + mov r1, #1 + asr r0, r0, #2 + lsl r1, r1, #8 + str r0, [sp, #0x10] + cmp r0, r1 + blt _0224CD0C + bl ErrorHandling +_0224CD0C: + lsr r2, r4, #0x1f + lsl r1, r4, #0x1e + sub r1, r1, r2 + mov r0, #0x1e + ror r1, r0 + add r0, r2, r1 + lsl r0, r0, #0x18 + mov r7, #0 + lsr r6, r0, #0x18 + add r5, r7, #0 +_0224CD20: + lsl r4, r5, #2 + add r0, sp, #0x3c + ldr r0, [r0, r4] + ldr r1, [sp, #0x10] + bl _s32_div_f + ldr r0, [sp, #0x10] + add r2, r0, #0 + mul r2, r5 + add r0, r1, r2 + add r1, r7, r0 + add r0, sp, #0x2c + str r1, [r0, r4] + ldr r0, [r0, r4] + lsl r1, r0, #1 + ldr r0, [sp, #8] + cmp r6, #0 + ldrh r1, [r0, r1] + add r0, sp, #0x1c + str r1, [r0, r4] + beq _0224CD56 + add r0, r7, #1 + lsl r0, r0, #0x18 + lsr r7, r0, #0x18 + sub r0, r6, #1 + lsl r0, r0, #0x18 + lsr r6, r0, #0x18 +_0224CD56: + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + cmp r5, #4 + blo _0224CD20 + ldr r0, [sp] + ldr r1, [sp, #0x14] + lsl r0, r0, #5 + mul r0, r1 + ldr r2, [sp, #0x18] + mov r3, #0 + add r2, r2, r0 + add r1, sp, #0x1c +_0224CD70: + lsl r0, r3, #2 + ldr r0, [r1, r0] + cmp r2, r0 + bne _0224CD7E + mov r0, #1 + str r0, [sp, #4] + b _0224CD88 +_0224CD7E: + add r0, r3, #1 + lsl r0, r0, #0x18 + lsr r3, r0, #0x18 + cmp r3, #4 + blo _0224CD70 +_0224CD88: + ldr r0, [sp, #0xc] + bl FUN_02016A18 + ldr r0, [sp, #4] + add sp, #0x4c + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224CD94 +MOD06_0224CD94: ; 0x0224CD94 + mov r2, #0x14 + strb r2, [r0] + mov r0, #0xa + strb r0, [r1] + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224CDA0 +MOD06_0224CDA0: ; 0x0224CDA0 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x6a + mov r1, #0 + mov r2, #4 + bl FUN_02006528 + ldr r1, [r0] + str r1, [r4] + bl FUN_02016A18 + pop {r4, pc} + + thumb_func_start MOD06_0224CDB8 +MOD06_0224CDB8: ; 0x0224CDB8 + cmp r1, #0 + beq _0224CE2A + ldr r1, _0224CE2C ; =0x021C4918 + ldrb r1, [r1, #6] + cmp r1, #5 + bhi _0224CE2A + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224CDD0: ; jump table + .short _0224CE2A - _0224CDD0 - 2 ; case 0 + .short _0224CDDC - _0224CDD0 - 2 ; case 1 + .short _0224CDEC - _0224CDD0 - 2 ; case 2 + .short _0224CDFC - _0224CDD0 - 2 ; case 3 + .short _0224CE0C - _0224CDD0 - 2 ; case 4 + .short _0224CE1C - _0224CDD0 - 2 ; case 5 +_0224CDDC: + add r1, r0, #0 + add r1, #0xac + ldr r1, [r1] + add r0, #0xb0 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CDEC: + add r1, r0, #0 + add r1, #0xa4 + ldr r1, [r1] + add r0, #0xa8 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CDFC: + add r1, r0, #0 + add r1, #0xb4 + ldr r1, [r1] + add r0, #0xb8 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CE0C: + add r1, r0, #0 + add r1, #0xbc + ldr r1, [r1] + add r0, #0xc0 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] + bx lr +_0224CE1C: + add r1, r0, #0 + add r1, #0xc4 + ldr r1, [r1] + add r0, #0xc8 + str r1, [r2] + ldr r0, [r0] + str r0, [r3] +_0224CE2A: + bx lr + .align 2, 0 +_0224CE2C: .word 0x021C4918 + + thumb_func_start MOD06_0224CE30 +MOD06_0224CE30: ; 0x0224CE30 + push {r3, r4, r5, lr} + mov r1, #0x5d + mov r2, #0 + lsl r1, r1, #2 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224CE5C + add r0, r4, #0 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224CE4C +MOD06_0224CE4C: ; 0x0224CE4C + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224CEA4 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224CE5C +MOD06_0224CE5C: ; 0x0224CE5C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + mov r1, #0x59 + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r6, r0, r1 + sub r1, #0x10 + ldr r5, _0224CEA0 ; =0x02251F18 + add r4, r0, r1 + add r7, r0, #4 +_0224CE76: + str r4, [sp] + str r6, [sp, #4] + ldr r0, [sp, #8] + ldr r1, [r5] + ldr r0, [r0] + mov r2, #0 + add r3, r7, #0 + bl FUN_021E51EC + ldr r0, [sp, #0xc] + add r6, r6, #4 + add r0, r0, #1 + add r4, r4, #4 + add r7, #0x54 + add r5, r5, #4 + str r0, [sp, #0xc] + cmp r0, #4 + blt _0224CE76 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224CEA0: .word 0x02251F18 + + thumb_func_start MOD06_0224CEA4 +MOD06_0224CEA4: ; 0x0224CEA4 + push {r4, r5, r6, lr} + mov r6, #0x59 + add r5, r0, #0 + mov r4, #0 + lsl r6, r6, #2 +_0224CEAE: + ldr r0, [r5, r6] + bl FUN_021E4C00 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224CEAE + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CEC0 +MOD06_0224CEC0: ; 0x0224CEC0 + add r2, r0, #4 + mov r0, #0x54 + mul r0, r1 + add r0, r2, r0 + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224CECC +MOD06_0224CECC: ; 0x0224CECC + push {r4, r5, r6, r7, lr} + sub sp, #0x2c + add r5, r0, #0 + add r4, r1, #0 + bl FUN_021E4C24 + add r6, r0, #0 + bl FUN_021E4C20 + add r7, r0, #0 + add r0, r5, #0 + bl FUN_02058B2C + str r0, [sp, #8] + add r0, r5, #0 + bl FUN_02058B4C + add r1, r0, #0 + ldr r0, [sp, #8] + add r2, sp, #0x20 + bl FUN_02059E60 + add r0, r7, #0 + add r1, sp, #0x20 + bl FUN_02059E9C + add r0, r6, #0 + mov r1, #0x1c + str r4, [sp, #0xc] + str r6, [sp, #0x10] + bl FUN_021E4C08 + add r1, r4, #0 + str r0, [sp, #0x14] + str r5, [sp, #0x18] + bl MOD06_0224CEC0 + str r0, [sp, #0x1c] + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0xc + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224CF38 ; =0x02251F28 + add r0, r6, #0 + add r2, sp, #0x20 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x2c + pop {r4, r5, r6, r7, pc} + nop +_0224CF38: .word 0x02251F28 + + thumb_func_start MOD06_0224CF3C +MOD06_0224CF3C: ; 0x0224CF3C + push {r3, r4, r5, lr} + add r5, r1, #0 + bl FUN_0206475C + add r3, r0, #0 + ldr r4, [r3, #0xc] + add r2, r5, #0 + ldmia r3!, {r0, r1} + add r2, #0x10 + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add r0, r4, #0 + bl FUN_02058448 + str r0, [r5, #8] + add r0, r4, #0 + bl FUN_02058450 + str r0, [r5, #0xc] + mov r0, #1 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224CF6C +MOD06_0224CF6C: ; 0x0224CF6C + push {r4, lr} + add r2, r1, #0 + ldr r4, [r2, #0x1c] + ldr r1, [r2, #8] + ldr r2, [r2, #0xc] + add r0, r4, #0 + bl FUN_020582A8 + cmp r0, #1 + bne _0224CF88 + add r0, r4, #0 + mov r1, #0 + bl FUN_0205EB14 +_0224CF88: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224CF8C +MOD06_0224CF8C: ; 0x0224CF8C + bx lr + .align 2, 0 + + thumb_func_start MOD06_0224CF90 +MOD06_0224CF90: ; 0x0224CF90 + push {r3, r4, r5, r6, lr} + sub sp, #0x3c + add r4, r1, #0 + add r2, r0, #0 + ldr r0, [r4, #4] + cmp r0, #1 + beq _0224CFD0 + ldr r5, _0224CFD4 ; =0x02251F0C + add r3, sp, #0x24 + ldmia r5!, {r0, r1} + stmia r3!, {r0, r1} + ldr r0, [r5] + ldr r6, _0224CFD8 ; =0x02251F3C + str r0, [r3] + add r5, sp, #0 + mov r3, #4 +_0224CFB0: + ldmia r6!, {r0, r1} + stmia r5!, {r0, r1} + sub r3, r3, #1 + bne _0224CFB0 + ldr r0, [r6] + add r1, sp, #0x30 + str r0, [r5] + add r0, r2, #0 + bl FUN_0206477C + ldr r0, [r4, #0x20] + add r1, sp, #0x30 + add r2, sp, #0 + add r3, sp, #0x24 + bl FUN_0201B26C +_0224CFD0: + add sp, #0x3c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224CFD4: .word 0x02251F0C +_0224CFD8: .word 0x02251F3C + + thumb_func_start MOD06_0224CFDC +MOD06_0224CFDC: ; 0x0224CFDC + push {r4, r5, r6, r7} + add r6, r2, #0 + sub r2, r6, #1 + add r3, r6, #0 + lsl r2, r2, #0x18 + lsr r6, r2, #0x18 + cmp r3, #0 + beq _0224D038 + sub r5, r1, #1 +_0224CFEE: + ldrb r1, [r0] + mov r4, #0 + asr r2, r1, #7 + mov r1, #1 + and r1, r2 + lsl r1, r1, #0x18 + lsr r3, r1, #0x18 + cmp r5, #0 + ble _0224D020 + mov r7, #1 +_0224D002: + ldrb r1, [r0, r4] + add r2, r0, r4 + lsl r1, r1, #1 + strb r1, [r0, r4] + ldrb r2, [r2, #1] + ldrb r1, [r0, r4] + asr r2, r2, #7 + and r2, r7 + orr r1, r2 + strb r1, [r0, r4] + add r1, r4, #1 + lsl r1, r1, #0x18 + lsr r4, r1, #0x18 + cmp r4, r5 + blt _0224D002 +_0224D020: + ldrb r1, [r0, r4] + add r2, r6, #0 + lsl r1, r1, #1 + strb r1, [r0, r4] + ldrb r1, [r0, r4] + orr r1, r3 + strb r1, [r0, r4] + sub r1, r6, #1 + lsl r1, r1, #0x18 + lsr r6, r1, #0x18 + cmp r2, #0 + bne _0224CFEE +_0224D038: + pop {r4, r5, r6, r7} + bx lr + + thumb_func_start MOD06_0224D03C +MOD06_0224D03C: ; 0x0224D03C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r0, [sp] + add r6, r2, #0 + add r7, r3, #0 + bl FUN_02089368 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02089394 + add r1, sp, #4 + strh r0, [r1, #4] + add r0, r6, #0 + bl FUN_02089394 + add r1, sp, #4 + strh r0, [r1, #6] + add r0, r7, #0 + bl FUN_02089394 + add r1, sp, #4 + strh r0, [r1, #8] + add r0, sp, #0x18 + ldrh r0, [r0, #0x10] + bl FUN_02089394 + add r1, sp, #4 + mov r2, #0 + strh r0, [r1, #0xa] + add r3, sp, #8 + add r5, sp, #4 + add r7, r2, #0 +_0224D080: + ldrsh r0, [r3, r7] + cmp r0, #0 + bge _0224D08E + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D08E: + cmp r2, #0 + ble _0224D0C2 + mov r6, #1 + mvn r6, r6 + ldrsh r6, [r3, r6] + cmp r0, r6 + blt _0224D0AE + sub r0, r0, r6 + cmp r0, #0xff + ble _0224D0AA + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D0AA: + strb r0, [r5] + b _0224D0D4 +_0224D0AE: + sub r0, r6, r0 + sub r0, r4, r0 + cmp r0, #0xff + ble _0224D0BE + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D0BE: + strb r0, [r5] + b _0224D0D4 +_0224D0C2: + mov r0, #4 + ldrsh r0, [r1, r0] + cmp r0, #0xff + ble _0224D0D2 + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D0D2: + strb r0, [r1] +_0224D0D4: + add r2, r2, #1 + add r3, r3, #2 + add r5, r5, #1 + cmp r2, #4 + blt _0224D080 + add r0, sp, #4 + mov r1, #4 + mov r2, #7 + bl MOD06_0224CFDC + mov r2, #0 + add r1, sp, #4 + add r4, sp, #4 + mov r3, #0xf0 +_0224D0F0: + ldrb r5, [r4, #3] + ldrb r0, [r1] + add r2, r2, #1 + asr r6, r5, #4 + and r5, r3 + orr r5, r6 + eor r0, r5 + strb r0, [r1] + add r1, r1, #1 + cmp r2, #3 + blt _0224D0F0 + add r2, sp, #4 + ldrb r3, [r2, #3] + mov r2, #0xf + add r0, sp, #4 + and r2, r3 + lsl r2, r2, #0x18 + mov r1, #3 + lsr r2, r2, #0x18 + bl MOD06_0224CFDC + add r1, sp, #4 + ldrb r0, [r1] + cmp r0, #8 + blo _0224D12A + mov r0, #0 + add sp, #0x10 + mvn r0, r0 + pop {r3, r4, r5, r6, r7, pc} +_0224D12A: + ldrb r2, [r1, #1] + eor r2, r0 + strb r2, [r1, #1] + ldrb r2, [r1, #2] + eor r2, r0 + strb r2, [r1, #2] + ldrb r2, [r1, #1] + ldrb r1, [r1, #2] + lsl r2, r2, #8 + orr r2, r1 + ldr r1, [sp] + cmp r1, r2 + beq _0224D148 + mov r0, #0 + mvn r0, r0 +_0224D148: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224D14C +MOD06_0224D14C: ; 0x0224D14C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + str r1, [sp, #4] + str r2, [sp, #8] + str r3, [sp, #0xc] + add r4, r0, #0 + ldr r0, [sp, #0x48] + str r0, [sp, #0x48] + ldr r0, [sp, #4] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x2c] + ldr r0, [sp, #8] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x28] + ldr r0, [sp, #0xc] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x24] + ldr r0, [sp, #0x48] + bl FUN_02013C28 + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp, #0x20] + add r0, r4, #0 + bl FUN_020239C0 + str r0, [sp, #0x1c] + mov r0, #0 + str r0, [sp, #0x18] + ldr r0, [sp, #0x2c] + cmp r0, #0 + bls _0224D23A +_0224D1A6: + mov r0, #0 + str r0, [sp, #0x14] + ldr r0, [sp, #0x28] + cmp r0, #0 + bls _0224D22A +_0224D1B0: + mov r0, #0 + str r0, [sp, #0x10] + ldr r0, [sp, #0x24] + cmp r0, #0 + bls _0224D21A +_0224D1BA: + ldr r0, [sp, #0x20] + mov r5, #0 + cmp r0, #0 + bls _0224D20A +_0224D1C2: + ldr r0, [sp, #4] + ldr r1, [sp, #0x18] + bl FUN_02013C6C + add r4, r0, #0 + ldr r0, [sp, #8] + ldr r1, [sp, #0x14] + bl FUN_02013C6C + add r6, r0, #0 + ldr r0, [sp, #0xc] + ldr r1, [sp, #0x10] + bl FUN_02013C6C + add r7, r0, #0 + ldr r0, [sp, #0x48] + add r1, r5, #0 + bl FUN_02013C6C + str r0, [sp] + ldr r0, [sp, #0x1c] + add r1, r4, #0 + add r2, r6, #0 + add r3, r7, #0 + bl MOD06_0224D03C + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + bne _0224D23E + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldr r0, [sp, #0x20] + cmp r5, r0 + blo _0224D1C2 +_0224D20A: + ldr r0, [sp, #0x10] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x24] + str r1, [sp, #0x10] + cmp r1, r0 + blo _0224D1BA +_0224D21A: + ldr r0, [sp, #0x14] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x28] + str r1, [sp, #0x14] + cmp r1, r0 + blo _0224D1B0 +_0224D22A: + ldr r0, [sp, #0x18] + add r0, r0, #1 + lsl r0, r0, #0x18 + lsr r1, r0, #0x18 + ldr r0, [sp, #0x2c] + str r1, [sp, #0x18] + cmp r1, r0 + blo _0224D1A6 +_0224D23A: + mov r0, #0 + mvn r0, r0 +_0224D23E: + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D244 +MOD06_0224D244: ; 0x0224D244 + push {r3, r4, r5, lr} + mov r2, #0 + mov r1, #4 + add r3, r2, #0 + add r5, r0, #0 + bl FUN_021E4BE8 + add r4, r0, #0 + str r5, [r4] + bl MOD06_0224D270 + add r0, r4, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D260 +MOD06_0224D260: ; 0x0224D260 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224D2B8 + add r0, r4, #0 + bl FUN_021E4C00 + pop {r4, pc} + + thumb_func_start MOD06_0224D270 +MOD06_0224D270: ; 0x0224D270 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + ldr r0, [r4] + mov r1, #9 + mov r2, #0x6b + bl FUN_021E5078 + ldr r0, [r4] + mov r1, #9 + mov r2, #0x7f + bl FUN_021E50AC + ldr r0, [r4] + mov r1, #0xa + mov r2, #0xc + mov r3, #1 + bl FUN_021E50D4 + mov r0, #0xa + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + ldr r0, _0224D2B4 ; =0x02251F74 + mov r2, #9 + str r0, [sp, #8] + ldr r0, [r4] + mov r1, #0xb + add r3, r2, #0 + bl FUN_021E4EFC + add sp, #0xc + pop {r3, r4, pc} + nop +_0224D2B4: .word 0x02251F74 + + thumb_func_start MOD06_0224D2B8 +MOD06_0224D2B8: ; 0x0224D2B8 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E50A0 + ldr r0, [r4] + mov r1, #9 + bl FUN_021E50C8 + ldr r0, [r4] + mov r1, #0xa + bl FUN_021E5114 + ldr r0, [r4] + mov r1, #0xb + bl FUN_021E506C + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D2E0 +MOD06_0224D2E0: ; 0x0224D2E0 + push {r3, r4, r5, r6, lr} + sub sp, #0x24 + add r5, r0, #0 + bl FUN_021E4C24 + add r4, r0, #0 + add r0, r5, #0 + bl FUN_02058738 + str r0, [sp, #0x14] + add r0, r4, #0 + mov r1, #0x1d + str r4, [sp, #0x18] + bl FUN_021E4C08 + str r0, [sp, #0x1c] + add r0, r5, #0 + add r1, sp, #8 + str r5, [sp, #0x20] + bl FUN_02058B5C + add r0, r5, #0 + bl FUN_02058B2C + add r6, r0, #0 + add r0, r5, #0 + bl FUN_02058B4C + add r1, r0, #0 + add r0, r6, #0 + add r2, sp, #8 + bl FUN_02059E60 + add r0, r5, #0 + mov r1, #2 + bl FUN_0205829C + add r1, sp, #0x14 + str r1, [sp] + str r0, [sp, #4] + ldr r1, _0224D340 ; =0x02251F60 + add r0, r4, #0 + add r2, sp, #8 + mov r3, #0 + bl FUN_021E4DC4 + add sp, #0x24 + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224D340: .word 0x02251F60 + + thumb_func_start MOD06_0224D344 +MOD06_0224D344: ; 0x0224D344 + push {r4, r5, lr} + sub sp, #0xc + add r4, r1, #0 + add r5, r0, #0 + bl FUN_0206475C + add r2, r4, #0 + add r3, r0, #0 + add r2, #0x10 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r4, #0x1c] + bl FUN_02058448 + str r0, [r4, #4] + ldr r0, [r4, #0x1c] + bl FUN_02058450 + str r0, [r4, #8] + add r0, r5, #0 + add r1, sp, #0 + bl FUN_0206477C + ldr r0, [r4, #0x14] + mov r1, #0xb + add r2, sp, #0 + bl FUN_021E4EE4 + str r0, [r4, #0x20] + mov r0, #1 + add sp, #0xc + pop {r4, r5, pc} + + thumb_func_start MOD06_0224D388 +MOD06_0224D388: ; 0x0224D388 + ldr r3, _0224D390 ; =0x0201F745 + ldr r0, [r1, #0x20] + bx r3 + nop +_0224D390: .word 0x0201F745 + + thumb_func_start MOD06_0224D394 +MOD06_0224D394: ; 0x0224D394 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4] + cmp r0, #0 + bne _0224D3C2 + mov r1, #1 + ldr r0, [r4, #0x20] + lsl r1, r1, #0xc + bl FUN_0201F854 + ldr r0, [r4, #0x20] + bl FUN_0201F8C0 + asr r1, r0, #0xb + lsr r1, r1, #0x14 + add r1, r0, r1 + asr r0, r1, #0xc + cmp r0, #7 + blt _0224D3C2 + add r0, r5, #0 + bl FUN_021E4DE4 +_0224D3C2: + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224D3C4 +MOD06_0224D3C4: ; 0x0224D3C4 + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_0206477C + mov r0, #2 + ldr r1, [sp, #8] + lsl r0, r0, #0xe + add r0, r1, r0 + str r0, [sp, #8] + ldr r0, [r4, #0x20] + add r1, sp, #0 + bl FUN_0201F7C8 + add sp, #0xc + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D3E8 +MOD06_0224D3E8: ; 0x0224D3E8 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r0, #0xb + mov r1, #8 + bl FUN_020169D8 + mov r1, #0 + mov r2, #8 + add r4, r0, #0 + bl MI_CpuFill8 + ldr r1, _0224D40C ; =MOD06_0224D410 + add r0, r5, #0 + add r2, r4, #0 + bl FUN_0204640C + pop {r3, r4, r5, pc} + nop +_0224D40C: .word MOD06_0224D410 + + thumb_func_start MOD06_0224D410 +MOD06_0224D410: ; 0x0224D410 + 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 r1, [r4, #4] + cmp r1, #0 + beq _0224D432 + cmp r1, #1 + beq _0224D442 + cmp r1, #2 + beq _0224D45A + b _0224D462 +_0224D432: + add r0, r5, #0 + bl MOD06_0224D46C + str r0, [r4] + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _0224D462 +_0224D442: + ldr r0, _0224D468 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224D462 + ldr r0, [r4] + bl MOD06_0224D6A4 + ldr r0, [r4, #4] + add r0, r0, #1 + str r0, [r4, #4] + b _0224D462 +_0224D45A: + bl FUN_02016A18 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224D462: + mov r0, #0 + pop {r3, r4, r5, pc} + nop +_0224D468: .word 0x021C48B8 + + thumb_func_start MOD06_0224D46C +MOD06_0224D46C: ; 0x0224D46C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x30 + add r4, r0, #0 + bl FUN_020377A8 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_020377AC + str r0, [sp, #0x1c] + mov r0, #0xb + mov r1, #0x18 + bl FUN_02016998 + mov r1, #0 + mov r2, #0x18 + add r4, r0, #0 + bl MI_CpuFill8 + mov r0, #0 + mov r1, #0x1a + mov r2, #0xc3 + mov r3, #0xb + bl FUN_0200A86C + str r0, [r4, #0x10] + mov r0, #0xb + bl FUN_0200AA80 + str r0, [r4, #0x14] + mov r2, #3 + str r2, [sp] + mov r0, #0x1e + str r0, [sp, #4] + mov r0, #0x11 + str r0, [sp, #8] + mov r0, #0xc + str r0, [sp, #0xc] + mov r0, #0xb + str r0, [sp, #0x10] + add r0, r5, #0 + add r1, r4, #0 + mov r3, #1 + bl FUN_02019064 + mov r0, #0 + str r0, [sp] + mov r3, #0xb + add r0, r5, #0 + mov r1, #3 + mov r2, #1 + str r3, [sp, #4] + bl FUN_0200CB00 + mov r1, #1 + add r0, r4, #0 + add r2, r1, #0 + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + mov r1, #0xf + bl FUN_02019620 + mov r0, #0x64 + mov r1, #0xb + bl FUN_020219F4 + add r6, r0, #0 + ldr r0, [r4, #0x10] + mov r1, #0 + bl FUN_0200A914 + add r5, r0, #0 + ldr r0, [sp, #0x1c] + bl FUN_020238F4 + add r2, r0, #0 + ldr r0, [r4, #0x14] + mov r1, #0 + bl FUN_0200ABC0 + ldr r0, [r4, #0x14] + add r1, r6, #0 + add r2, r5, #0 + bl FUN_0200B7B8 + add r0, r6, #0 + mov r1, #0 + mov r2, #1 + mov r3, #0x78 + bl MOD06_0224D6D0 + mov r1, #0 + add r3, r0, #0 + str r1, [sp] + mov r0, #0xff + str r0, [sp, #4] + add r0, r4, #0 + add r2, r6, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r5, #0 + bl FUN_02021A20 + ldr r0, [r4, #0x10] + mov r1, #1 + bl FUN_0200A914 + mov r1, #0 + mov r2, #1 + mov r3, #0x78 + add r5, r0, #0 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #0x10 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r1, #0 + add r0, r4, #0 + add r2, r5, #0 + str r1, [sp, #8] + bl FUN_0201BD84 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0 + ldr r5, _0224D698 ; =0x02251FAC + str r0, [sp, #0x24] +_0224D576: + ldr r0, [r4, #0x10] + ldr r1, [r5] + bl FUN_0200A914 + mov r3, #4 + mov r1, #0 + ldrsh r3, [r5, r3] + add r2, r1, #0 + add r7, r0, #0 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #6 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r7, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x24] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x24] + cmp r0, #5 + blt _0224D576 + mov r0, #0 + ldr r5, _0224D69C ; =0x02251F8C + str r0, [sp, #0x14] +_0224D5BE: + ldr r0, [r4, #0x10] + ldr r1, [r5] + bl FUN_0200A914 + mov r3, #4 + ldrsh r3, [r5, r3] + mov r1, #0 + mov r2, #2 + add r7, r0, #0 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #6 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r7, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0201BD84 + add r0, r7, #0 + bl FUN_02021A20 + ldr r0, [sp, #0x14] + add r5, #8 + add r0, r0, #1 + str r0, [sp, #0x14] + cmp r0, #4 + blt _0224D5BE + mov r0, #0 + str r0, [sp, #0x20] + ldr r0, _0224D6A0 ; =0x02251FD4 + str r0, [sp, #0x18] +_0224D608: + ldr r5, [sp, #0x18] + mov r7, #0 +_0224D60C: + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x20] + add r2, r7, #0 + bl FUN_0202C12C + str r0, [sp, #0x28] + ldr r0, [r4, #0x10] + ldr r1, [r5] + bl FUN_0200A914 + str r0, [sp, #0x2c] + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r4, #0x14] + ldr r2, [sp, #0x28] + mov r1, #0 + mov r3, #4 + bl FUN_0200AD38 + ldr r0, [r4, #0x14] + ldr r2, [sp, #0x2c] + add r1, r6, #0 + bl FUN_0200B7B8 + mov r3, #4 + ldrsh r3, [r5, r3] + add r0, r6, #0 + mov r1, #0 + mov r2, #2 + bl MOD06_0224D6D0 + add r3, r0, #0 + mov r0, #6 + ldrsh r0, [r5, r0] + mov r1, #0 + add r2, r6, #0 + str r0, [sp] + mov r0, #0xff + str r0, [sp, #4] + mov r0, #0 + str r0, [sp, #8] + add r0, r4, #0 + bl FUN_0201BD84 + ldr r0, [sp, #0x2c] + bl FUN_02021A20 + add r7, r7, #1 + add r5, #8 + cmp r7, #4 + blt _0224D60C + ldr r0, [sp, #0x18] + add r0, #0x20 + str r0, [sp, #0x18] + ldr r0, [sp, #0x20] + add r0, r0, #1 + str r0, [sp, #0x20] + cmp r0, #5 + blt _0224D608 + add r0, r6, #0 + bl FUN_02021A20 + add r0, r4, #0 + bl FUN_020191D0 + add r0, r4, #0 + add sp, #0x30 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224D698: .word 0x02251FAC +_0224D69C: .word 0x02251F8C +_0224D6A0: .word 0x02251FD4 + + thumb_func_start MOD06_0224D6A4 +MOD06_0224D6A4: ; 0x0224D6A4 + push {r4, lr} + add r4, r0, #0 + mov r1, #1 + bl FUN_0200CCF8 + add r0, r4, #0 + bl FUN_02019570 + add r0, r4, #0 + bl FUN_02019178 + ldr r0, [r4, #0x10] + bl FUN_0200A8B8 + ldr r0, [r4, #0x14] + bl FUN_0200AB18 + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D6D0 +MOD06_0224D6D0: ; 0x0224D6D0 + push {r4, r5, r6, lr} + add r5, r2, #0 + add r6, r0, #0 + add r4, r3, #0 + cmp r5, #0 + bne _0224D6E0 + add r0, r4, #0 + pop {r4, r5, r6, pc} +_0224D6E0: + add r0, r1, #0 + add r1, r6, #0 + mov r2, #0 + bl FUN_02002E14 + cmp r5, #1 + beq _0224D6F4 + cmp r5, #2 + beq _0224D6FE + b _0224D702 +_0224D6F4: + lsr r1, r0, #0x1f + add r1, r0, r1 + asr r0, r1, #1 + sub r0, r4, r0 + pop {r4, r5, r6, pc} +_0224D6FE: + sub r0, r4, r0 + pop {r4, r5, r6, pc} +_0224D702: + bl ErrorHandling + add r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D70C +MOD06_0224D70C: ; 0x0224D70C + push {r3, r4, r5, r6, r7, lr} + add r6, r1, #0 + mov r1, #0xc1 + lsl r1, r1, #2 + add r5, r0, #0 + add r7, r2, #0 + bl FUN_02016998 + mov r2, #0xc1 + add r4, r0, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + str r5, [r4, #0x18] + str r7, [r4, #0x14] + str r6, [r4, #8] + add r0, r6, #0 + bl FUN_02027E24 + bl FUN_0202708C + str r0, [r4, #0xc] + add r0, r6, #0 + bl FUN_0206F158 + str r0, [r4, #0x10] + mov r2, #0x81 + ldr r3, [r4, #0x18] + mov r0, #0 + mov r1, #0x1a + lsl r2, r2, #2 + bl FUN_0200A86C + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD06_0224DBA8 + add r0, r4, #0 + bl MOD06_0224DBCC + add r0, r4, #0 + bl MOD06_0224DC3C + add r0, r4, #0 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224D76C +MOD06_0224D76C: ; 0x0224D76C + push {r4, lr} + add r4, r0, #0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + bl FUN_0200A8B8 + add r0, r4, #0 + bl MOD06_0224DC28 + add r0, r4, #0 + bl MOD06_0224DC50 + mov r2, #0xc1 + add r0, r4, #0 + mov r1, #0 + lsl r2, r2, #2 + bl Call_FillMemWithValue + add r0, r4, #0 + bl FUN_02016A18 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224D79C +MOD06_0224D79C: ; 0x0224D79C + push {r4, r5, lr} + sub sp, #0x14 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0xc + bls _0224D7AA + b _0224DB9A +_0224D7AA: + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224D7B6: ; jump table + .short _0224D7D0 - _0224D7B6 - 2 ; case 0 + .short _0224D80E - _0224D7B6 - 2 ; case 1 + .short _0224D84E - _0224D7B6 - 2 ; case 2 + .short _0224D8A6 - _0224D7B6 - 2 ; case 3 + .short _0224D8DC - _0224D7B6 - 2 ; case 4 + .short _0224D97E - _0224D7B6 - 2 ; case 5 + .short _0224D992 - _0224D7B6 - 2 ; case 6 + .short _0224DA82 - _0224D7B6 - 2 ; case 7 + .short _0224DAD2 - _0224D7B6 - 2 ; case 8 + .short _0224DAFE - _0224D7B6 - 2 ; case 9 + .short _0224DB2A - _0224D7B6 - 2 ; case 10 + .short _0224DB3E - _0224D7B6 - 2 ; case 11 + .short _0224DB6C - _0224D7B6 - 2 ; case 12 +_0224D7D0: + mov r3, #0x55 + lsl r3, r3, #2 + add r0, r4, r3 + sub r3, r3, #4 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + ldr r3, [r4, r3] + bl MOD06_0224DC5C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #4 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #1 + str r0, [r4, #4] + b _0224DB9A +_0224D80E: + ldr r0, [r4, #0xc] + ldr r1, _0224DB5C ; =0x02252080 + mov r2, #0x16 + bl MOD06_0224E4B4 + cmp r0, #0 + beq _0224D848 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #0xc + str r0, [r4, #4] + b _0224DB9A +_0224D848: + mov r0, #2 + str r0, [r4] + b _0224DB9A +_0224D84E: + mov r2, #0x5a + lsl r2, r2, #2 + add r0, r4, r2 + sub r2, #0x20 + ldr r1, [r4, #0x14] + ldr r2, [r4, r2] + ldr r3, [r4, #0x18] + bl MOD06_0224DE60 + ldr r0, [r4, #0x18] + mov r1, #0x5a + str r0, [sp] + ldr r0, [r4, #0x14] + lsl r1, r1, #2 + str r0, [sp, #4] + mov r0, #0x2f + lsl r0, r0, #4 + ldr r2, _0224DB5C ; =0x02252080 + ldr r3, [r4, #0x10] + add r0, r4, r0 + add r1, r4, r1 + bl MOD06_0224E3FC + mov r1, #0x52 + mov r0, #0x16 + lsl r1, r1, #2 + str r0, [sp] + ldr r0, [r4, r1] + add r1, #0x3c + str r0, [sp, #4] + mov r0, #0x2f + lsl r0, r0, #4 + add r0, r4, r0 + str r0, [sp, #8] + ldr r0, _0224DB60 ; =MOD06_0224E410 + ldr r3, _0224DB5C ; =0x02252080 + str r0, [sp, #0xc] + ldr r0, [r4, #0x1c] + str r0, [sp, #0x10] + add r0, r4, r1 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + bl MOD06_0224DFA8 +_0224D8A6: + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E24C + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #6 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xa + str r0, [r4] + mov r0, #4 + str r0, [r4, #4] + b _0224DB9A +_0224D8DC: + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E1E4 + mov r1, #0 + mvn r1, r1 + cmp r0, r1 + beq _0224D942 + sub r1, r1, #1 + cmp r0, r1 + beq _0224D942 + mov r2, #0 + str r2, [sp] + mov r0, #0x20 + str r0, [sp, #4] + mov r0, #0x12 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + ldr r0, [r4, #0x14] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E274 + mov r0, #0x2b + lsl r0, r0, #4 + ldrh r0, [r4, r0] + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [sp] + add r0, r4, r1 + sub r1, #0xc + ldr r1, [r4, r1] + ldr r2, [r4, #0x18] + ldr r3, _0224DB5C ; =0x02252080 + bl MOD06_0224DD50 + mov r0, #0xa + str r0, [r4] + mov r0, #5 + str r0, [r4, #4] + ldr r0, _0224DB64 ; =0x000005DC + bl FUN_020054C8 + b _0224DB9A +_0224D942: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0224D94C + b _0224DB9A +_0224D94C: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xb + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #0xc + str r0, [r4, #4] + ldr r0, _0224DB64 ; =0x000005DC + bl FUN_020054C8 + b _0224DB9A +_0224D97E: + mov r0, #0xb9 + lsl r0, r0, #2 + ldr r1, [r4, #0x14] + ldr r2, [r4, #0x18] + add r0, r4, r0 + bl MOD06_0224E470 + mov r0, #6 + str r0, [r4] + b _0224DB9A +_0224D992: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E4A4 + cmp r0, #0 + bne _0224DA68 + mov r2, #0x2b + lsl r2, r2, #4 + ldrh r2, [r4, r2] + ldr r0, [r4, #0x10] + ldr r1, _0224DB5C ; =0x02252080 + ldr r3, [r4, #0x18] + bl MOD06_0224E4E4 + cmp r0, #0 + bne _0224D9EA + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #9 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #3 + str r0, [r4, #4] + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + b _0224DB9A +_0224D9EA: + mov r2, #0x2b + lsl r2, r2, #4 + ldrh r2, [r4, r2] + ldr r0, [r4, #0xc] + ldr r1, _0224DB5C ; =0x02252080 + bl MOD06_0224E510 + cmp r0, #0 + bne _0224DA32 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xa + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + mov r0, #0xb + str r0, [r4] + mov r0, #3 + str r0, [r4, #4] + b _0224DB9A +_0224DA32: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #8 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + mov r0, #0xb + str r0, [r4] + mov r0, #7 + str r0, [r4, #4] + b _0224DB9A +_0224DA68: + mov r1, #1 + mvn r1, r1 + cmp r0, r1 + beq _0224DA72 + b _0224DB9A +_0224DA72: + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + mov r0, #3 + str r0, [r4] + b _0224DB9A +_0224DA82: + ldr r0, [r4, #0x18] + mov r3, #0x2b + str r0, [sp] + lsl r3, r3, #4 + ldrh r3, [r4, r3] + ldr r0, [r4, #0xc] + ldr r1, [r4, #0x10] + ldr r2, _0224DB5C ; =0x02252080 + bl MOD06_0224E520 + mov r0, #0x2b + lsl r0, r0, #4 + ldrh r0, [r4, r0] + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [sp] + add r0, r4, r1 + sub r1, #0xc + ldr r1, [r4, r1] + ldr r2, [r4, #0x18] + ldr r3, _0224DB5C ; =0x02252080 + bl MOD06_0224DDD8 + ldr r0, [r4, #0xc] + ldr r1, _0224DB5C ; =0x02252080 + mov r2, #0x16 + bl MOD06_0224E4B4 + cmp r0, #0 + beq _0224DAC8 + mov r0, #0xb + str r0, [r4] + mov r0, #8 + str r0, [r4, #4] + b _0224DB9A +_0224DAC8: + mov r0, #0xb + str r0, [r4] + mov r0, #3 + str r0, [r4, #4] + b _0224DB9A +_0224DAD2: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0xd + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #9 + str r0, [r4, #4] + b _0224DB9A +_0224DAFE: + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #5 + bl FUN_0200A914 + add r5, r0, #0 + mov r0, #0x55 + lsl r0, r0, #2 + ldr r2, [r4, #0x18] + add r0, r4, r0 + add r1, r5, #0 + bl MOD06_0224DCD8 + add r0, r5, #0 + bl FUN_02021A20 + mov r0, #0xb + str r0, [r4] + mov r0, #0xc + str r0, [r4, #4] + b _0224DB9A +_0224DB2A: + mov r0, #0x55 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DD28 + cmp r0, #0 + beq _0224DB9A + ldr r0, [r4, #4] + str r0, [r4] + b _0224DB9A +_0224DB3E: + mov r0, #0x55 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DD28 + cmp r0, #0 + beq _0224DB9A + ldr r0, _0224DB68 ; =0x021C48B8 + ldr r1, [r0, #0x48] + mov r0, #3 + tst r0, r1 + beq _0224DB9A + ldr r0, [r4, #4] + str r0, [r4] + b _0224DB9A + .align 2, 0 +_0224DB5C: .word 0x02252080 +_0224DB60: .word MOD06_0224E410 +_0224DB64: .word 0x000005DC +_0224DB68: .word 0x021C48B8 +_0224DB6C: + mov r0, #0x55 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DCB4 + mov r0, #0x5a + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224DED8 + mov r0, #0x61 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E174 + mov r0, #0xb9 + lsl r0, r0, #2 + add r0, r4, r0 + bl MOD06_0224E498 + add sp, #0x14 + mov r0, #1 + pop {r4, r5, pc} +_0224DB9A: + ldr r0, [r4, #0x1c] + bl FUN_0201FDEC + mov r0, #0 + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DBA8 +MOD06_0224DBA8: ; 0x0224DBA8 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl LoadPlayerDataAddress + add r4, r0, #0 + bl FUN_02025084 + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r4, #0 + bl FUN_02024FF4 + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224DBCC +MOD06_0224DBCC: ; 0x0224DBCC + push {r4, lr} + sub sp, #8 + add r4, r0, #0 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #3 + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + str r0, [sp] + ldr r0, [r4, #0x18] + mov r2, #1 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r3, #0xa + bl FUN_0200CD68 + mov r1, #6 + ldr r2, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #6 + bl FUN_02002EEC + mov r0, #0 + str r0, [sp] + ldr r0, [r4, #0x18] + mov r1, #3 + str r0, [sp, #4] + ldr r0, [r4, #0x14] + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CB00 + mov r1, #0x1a + ldr r2, [r4, #0x18] + mov r0, #0 + lsl r1, r1, #4 + bl FUN_02002ED0 + ldr r0, [r4, #0x14] + mov r1, #3 + bl FUN_02018744 + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DC28 +MOD06_0224DC28: ; 0x0224DC28 + push {r3, lr} + ldr r0, [r0, #0x14] + mov r1, #3 + bl FUN_02018744 + mov r0, #0 + mov r1, #1 + bl FUN_02054590 + pop {r3, pc} + + thumb_func_start MOD06_0224DC3C +MOD06_0224DC3C: ; 0x0224DC3C + push {r4, lr} + add r4, r0, #0 + add r1, r4, #0 + ldr r2, [r4, #0x18] + mov r0, #2 + add r1, #0x20 + bl FUN_02008C9C + str r0, [r4, #0x1c] + pop {r4, pc} + + thumb_func_start MOD06_0224DC50 +MOD06_0224DC50: ; 0x0224DC50 + ldr r3, _0224DC58 ; =0x0201FD59 + ldr r0, [r0, #0x1c] + bx r3 + nop +_0224DC58: .word 0x0201FD59 + + thumb_func_start MOD06_0224DC5C +MOD06_0224DC5C: ; 0x0224DC5C + push {r4, r5, lr} + sub sp, #0x14 + add r5, r0, #0 + ldr r0, [r5] + add r4, r1, #0 + cmp r0, #1 + beq _0224DCAE + str r3, [r5, #8] + add r0, r2, #0 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r5, #4] + 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] + mov r0, #0x28 + str r0, [sp, #0x10] + ldr r1, [r5, #4] + add r0, r4, #0 + mov r2, #3 + mov r3, #2 + bl FUN_02019064 + ldr r0, [r5, #4] + mov r1, #0xf + bl FUN_02019620 + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #1 + mov r3, #0xa + bl FUN_0200D0BC + mov r0, #1 + str r0, [r5] +_0224DCAE: + add sp, #0x14 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DCB4 +MOD06_0224DCB4: ; 0x0224DCB4 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224DCD6 + ldr r0, [r4, #4] + bl FUN_02019570 + ldr r0, [r4, #4] + bl FUN_02019178 + ldr r0, [r4, #4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #0 + str r0, [r4] +_0224DCD6: + pop {r4, pc} + + thumb_func_start MOD06_0224DCD8 +MOD06_0224DCD8: ; 0x0224DCD8 + push {r4, r5, r6, lr} + sub sp, #0x10 + add r5, r0, #0 + ldr r0, [r5, #0x10] + add r4, r1, #0 + add r6, r2, #0 + cmp r0, #0 + beq _0224DCEC + bl ErrorHandling +_0224DCEC: + ldr r0, [r5, #4] + mov r1, #0xf + bl FUN_02019620 + add r0, r4, #0 + add r1, r6, #0 + bl FUN_02021ACC + str r0, [r5, #0x10] + mov r3, #0 + str r3, [sp] + ldr r0, [r5, #8] + mov r1, #1 + str r0, [sp, #4] + ldr r0, _0224DD24 ; =0x0001020F + str r0, [sp, #8] + str r3, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0x10] + bl FUN_0201BDE0 + str r0, [r5, #0xc] + ldr r0, [r5, #4] + bl FUN_020191D0 + add sp, #0x10 + pop {r4, r5, r6, pc} + nop +_0224DD24: .word 0x0001020F + + thumb_func_start MOD06_0224DD28 +MOD06_0224DD28: ; 0x0224DD28 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + lsl r0, r0, #0x18 + lsr r0, r0, #0x18 + bl FUN_0201BD70 + cmp r0, #0 + bne _0224DD4C + ldr r0, [r4, #0x10] + cmp r0, #0 + beq _0224DD48 + bl FUN_02021A20 + mov r0, #0 + str r0, [r4, #0x10] +_0224DD48: + mov r0, #1 + pop {r4, pc} +_0224DD4C: + mov r0, #0 + pop {r4, pc} + + thumb_func_start MOD06_0224DD50 +MOD06_0224DD50: ; 0x0224DD50 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r2, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r4, r1, #0 + add r5, r3, #0 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0xc8 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [sp, #0xc] + add r0, r4, #0 + mov r1, #7 + bl FUN_0200A914 + ldr r1, [sp, #0x28] + str r0, [sp, #0x10] + add r4, r1, #0 + mov r0, #0xc + mul r4, r0 + add r2, r5, r4 + ldr r2, [r2, #4] + add r0, r6, #0 + mov r1, #0 + add r2, #0x95 + bl FUN_0200AEA8 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, r5, r4 + ldr r2, [r2, #8] + add r0, r6, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r2, [r5, r4] + add r0, r6, #0 + mov r1, #2 + bl FUN_0200B660 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r6, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, r7, #0 + bl MOD06_0224DCD8 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0xc] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DDD8 +MOD06_0224DDD8: ; 0x0224DDD8 + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + add r7, r2, #0 + str r0, [sp, #8] + add r0, r7, #0 + add r4, r1, #0 + add r5, r3, #0 + bl FUN_0200AA80 + add r6, r0, #0 + mov r0, #0xc8 + add r1, r7, #0 + bl FUN_020219F4 + str r0, [sp, #0xc] + add r0, r4, #0 + mov r1, #0xc + bl FUN_0200A914 + ldr r1, [sp, #0x28] + str r0, [sp, #0x10] + add r4, r1, #0 + mov r0, #0xc + mul r4, r0 + add r2, r5, r4 + ldr r2, [r2, #4] + add r0, r6, #0 + mov r1, #0 + add r2, #0x95 + bl FUN_0200AEA8 + mov r0, #0 + str r0, [sp] + mov r1, #1 + str r1, [sp, #4] + add r2, r5, r4 + ldr r2, [r2, #8] + add r0, r6, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r2, [r5, r4] + add r0, r6, #0 + mov r1, #2 + bl FUN_0200B660 + ldr r1, [sp, #0xc] + ldr r2, [sp, #0x10] + add r0, r6, #0 + bl FUN_0200B7B8 + ldr r0, [sp, #8] + ldr r1, [sp, #0xc] + add r2, r7, #0 + bl MOD06_0224DCD8 + add r0, r6, #0 + bl FUN_0200AB18 + ldr r0, [sp, #0xc] + bl FUN_02021A20 + ldr r0, [sp, #0x10] + bl FUN_02021A20 + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DE60 +MOD06_0224DE60: ; 0x0224DE60 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x18 + add r6, r0, #0 + ldr r0, [r6] + add r4, r1, #0 + add r7, r2, #0 + str r3, [sp, #0x14] + cmp r0, #1 + beq _0224DED2 + add r0, r3, #0 + mov r1, #1 + bl FUN_02018FF4 + str r0, [r6, #4] + mov r0, #0xb + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #6 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0x94 + str r0, [sp, #0x10] + ldr r1, [r6, #4] + add r0, r4, #0 + mov r2, #3 + mov r3, #1 + bl FUN_02019064 + ldr r0, [sp, #0x14] + bl FUN_0200AA80 + str r0, [r6, #8] + mov r4, #0 + add r5, r6, #0 +_0224DEA8: + add r1, r4, #0 + add r0, r7, #0 + add r1, #0x10 + bl FUN_0200A914 + str r0, [r5, #0x10] + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0224DEA8 + ldr r1, [sp, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + str r0, [r6, #0xc] + ldr r0, [r6, #4] + mov r1, #0xf + bl FUN_02019620 + mov r0, #1 + str r0, [r6] +_0224DED2: + add sp, #0x18 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DED8 +MOD06_0224DED8: ; 0x0224DED8 + push {r4, r5, r6, lr} + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _0224DF18 + mov r4, #0 + add r5, r6, #0 +_0224DEE6: + ldr r0, [r5, #0x10] + bl FUN_02021A20 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #3 + blt _0224DEE6 + ldr r0, [r6, #0xc] + bl FUN_02021A20 + ldr r0, [r6, #8] + bl FUN_0200AB18 + ldr r0, [r6, #4] + bl FUN_02019570 + ldr r0, [r6, #4] + bl FUN_02019178 + ldr r0, [r6, #4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #0 + str r0, [r6] +_0224DF18: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224DF1C +MOD06_0224DF1C: ; 0x0224DF1C + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r6, r1, #0 + add r5, r0, #0 + ldr r0, [r5, #8] + add r6, #0x95 + add r4, r2, #0 + mov r1, #0 + add r2, r6, #0 + add r7, r3, #0 + bl FUN_0200AE38 + mov r1, #1 + str r1, [sp] + str r1, [sp, #4] + ldr r0, [r5, #8] + add r2, r4, #0 + mov r3, #3 + bl FUN_0200AD38 + mov r0, #1 + str r0, [sp] + str r0, [sp, #4] + ldr r0, [r5, #8] + mov r1, #2 + add r2, r7, #0 + mov r3, #3 + bl FUN_0200AD38 + ldr r0, [r5, #4] + mov r1, #0xf + bl FUN_02019620 + mov r7, #0 + add r6, r5, #0 + add r4, r7, #0 +_0224DF64: + ldr r0, [r5, #8] + ldr r1, [r5, #0xc] + ldr r2, [r6, #0x10] + bl FUN_0200B7B8 + mov r1, #0 + str r4, [sp] + mov r0, #0xff + str r0, [sp, #4] + ldr r0, _0224DFA4 ; =0x0001020F + add r3, r1, #0 + str r0, [sp, #8] + mov r0, #0 + str r0, [sp, #0xc] + ldr r0, [r5, #4] + ldr r2, [r5, #0xc] + bl FUN_0201BDE0 + add r7, r7, #1 + add r6, r6, #4 + add r4, #0x10 + cmp r7, #3 + blt _0224DF64 + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224DFA4: .word 0x0001020F + + thumb_func_start MOD06_0224DFA8 +MOD06_0224DFA8: ; 0x0224DFA8 + push {r4, r5, r6, r7, lr} + sub sp, #0x64 + add r5, r0, #0 + ldr r0, [sp, #0x78] + add r4, r1, #0 + str r0, [sp, #0x78] + ldr r0, [r5] + str r2, [sp, #0x14] + str r3, [sp, #0x18] + cmp r0, #1 + bne _0224DFC0 + b _0224E164 +_0224DFC0: + ldr r0, [sp, #0x78] + mov r1, #1 + mov r2, #0x12 + str r1, [r5] + add r0, r0, #1 + lsl r2, r2, #4 + str r0, [r5, r2] + add r0, r2, #0 + ldr r3, [sp, #0x80] + add r0, #0x10 + str r3, [r5, r0] + ldr r0, [sp, #0x84] + add r2, #0x14 + str r0, [r5, r2] + ldr r0, [sp, #0x14] + bl FUN_02018FF4 + str r0, [r5, #4] + mov r0, #1 + str r0, [sp] + mov r0, #0xe + str r0, [sp, #4] + mov r0, #0x10 + str r0, [sp, #8] + mov r0, #0xd + str r0, [sp, #0xc] + mov r0, #0xe8 + str r0, [sp, #0x10] + ldr r1, [r5, #4] + add r0, r4, #0 + mov r2, #3 + mov r3, #0x11 + bl FUN_02019064 + ldr r0, [sp, #0x14] + bl FUN_0200AA80 + mov r1, #0x49 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r1, [sp, #0x14] + mov r0, #0x20 + bl FUN_020219F4 + mov r1, #0x4a + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, [sp, #0x7c] + mov r1, #0x10 + bl FUN_0200A914 + str r0, [sp, #0x1c] + ldr r0, [sp, #0x78] + mov r7, #0 + cmp r0, #0 + bls _0224E084 + add r6, r5, #0 + add r4, r5, #0 +_0224E034: + mov r0, #0x49 + ldr r2, [sp, #0x18] + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r2, [r2] + mov r1, #0 + bl FUN_0200B660 + mov r0, #0x49 + mov r1, #0x4a + lsl r0, r0, #2 + lsl r1, r1, #2 + ldr r0, [r5, r0] + ldr r1, [r5, r1] + ldr r2, [sp, #0x1c] + bl FUN_0200B7B8 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r5, r0] + ldr r1, [sp, #0x14] + bl FUN_02021ACC + add r1, r6, #0 + add r1, #0xc4 + str r0, [r1] + add r0, r6, #0 + add r0, #0xc4 + ldr r0, [r0] + add r6, r6, #4 + str r0, [r4, #0xc] + str r7, [r4, #0x10] + ldr r0, [sp, #0x18] + add r7, r7, #1 + add r0, #0xc + str r0, [sp, #0x18] + ldr r0, [sp, #0x78] + add r4, #8 + cmp r7, r0 + blo _0224E034 +_0224E084: + ldr r0, [sp, #0x78] + add r4, r5, #0 + lsl r6, r0, #2 + ldr r0, [sp, #0x7c] + add r4, #0xc4 + mov r1, #0x13 + bl FUN_0200A914 + str r0, [r4, r6] + ldr r0, [sp, #0x78] + lsl r1, r0, #3 + ldr r0, [r4, r6] + add r1, r5, r1 + str r0, [r1, #0xc] + ldr r0, [sp, #0x78] + str r0, [r1, #0x10] + mov r0, #0x49 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_0200AB18 + mov r0, #0x4a + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02021A20 + ldr r0, [sp, #0x1c] + bl FUN_02021A20 + ldr r3, [sp, #0x14] + ldr r0, [r5, #4] + ldr r1, _0224E168 ; =0x022523A0 + lsl r3, r3, #0x18 + str r0, [r1, #0xc] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r5, r0] + lsr r3, r3, #0x18 + strh r0, [r1, #0x10] + add r0, r5, #0 + add r0, #0xc + str r0, [r1] + mov r1, #0 + ldr r0, _0224E16C ; =0x022523A0 + add r2, r1, #0 + bl FUN_020010A8 + str r0, [r5, #8] + ldr r0, [r5, #4] + mov r1, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + mov r7, #0x4e + mov r4, #0 + add r6, r5, #0 + lsl r7, r7, #2 +_0224E0F8: + ldr r2, [sp, #0x14] + mov r0, #1 + add r1, r4, #0 + bl FUN_02008DEC + str r0, [r6, r7] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #4 + blt _0224E0F8 + ldr r2, [sp, #0x14] + add r0, sp, #0x40 + add r1, r5, #0 + bl MOD06_0224E294 + ldr r0, [sp, #0x88] + mov r6, #0 + str r0, [sp, #0x20] + add r0, sp, #0x40 + str r0, [sp, #0x24] + mov r0, #1 + str r0, [sp, #0x38] + ldr r0, [sp, #0x14] + mov r7, #0x56 + str r0, [sp, #0x3c] + mov r0, #3 + lsl r0, r0, #0x12 + ldr r4, _0224E170 ; =0x02252074 + str r6, [sp, #0x34] + str r0, [sp, #0x28] + lsl r7, r7, #2 +_0224E136: + ldrb r0, [r4] + lsl r0, r0, #0xc + str r0, [sp, #0x2c] + add r0, sp, #0x20 + bl FUN_0201FF84 + mov r1, #0x56 + lsl r1, r1, #2 + str r0, [r5, r1] + add r0, r1, #0 + ldr r0, [r5, r0] + add r1, r6, #0 + bl FUN_02020130 + ldr r0, [r5, r7] + mov r1, #1 + bl FUN_020200BC + add r6, r6, #1 + add r4, r4, #1 + add r5, r5, #4 + cmp r6, #2 + blt _0224E136 +_0224E164: + add sp, #0x64 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224E168: .word 0x022523A0 +_0224E16C: .word 0x022523A0 +_0224E170: .word 0x02252074 + + thumb_func_start MOD06_0224E174 +MOD06_0224E174: ; 0x0224E174 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + ldr r0, [r6] + cmp r0, #0 + beq _0224E1E2 + mov r7, #0x56 + mov r4, #0 + add r5, r6, #0 + lsl r7, r7, #2 +_0224E186: + ldr r0, [r5, r7] + bl FUN_0201FFC8 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #2 + blt _0224E186 + add r0, r6, #0 + bl MOD06_0224E36C + mov r0, #0x12 + lsl r0, r0, #4 + ldr r0, [r6, r0] + mov r5, #0 + cmp r0, #0 + ble _0224E1C0 + mov r7, #0x12 + add r4, r6, #0 + lsl r7, r7, #4 +_0224E1AC: + add r0, r4, #0 + add r0, #0xc4 + ldr r0, [r0] + bl FUN_02021A20 + ldr r0, [r6, r7] + add r5, r5, #1 + add r4, r4, #4 + cmp r5, r0 + blt _0224E1AC +_0224E1C0: + mov r1, #0 + ldr r0, [r6, #8] + add r2, r1, #0 + bl FUN_02001300 + ldr r0, [r6, #4] + bl FUN_02019570 + ldr r0, [r6, #4] + bl FUN_02019178 + ldr r0, [r6, #4] + mov r1, #1 + bl FUN_020191A4 + mov r0, #1 + str r0, [r6] +_0224E1E2: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E1E4 +MOD06_0224E1E4: ; 0x0224E1E4 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5, #8] + bl FUN_02001204 + mov r1, #0 + add r4, r0, #0 + mvn r1, r1 + cmp r4, r1 + bne _0224E22A + ldr r0, [r5, #8] + add r1, sp, #0 + bl FUN_0200143C + mov r2, #0x4b + add r0, sp, #0 + lsl r2, r2, #2 + ldrh r1, [r0] + ldrh r0, [r5, r2] + cmp r0, r1 + beq _0224E242 + strh r1, [r5, r2] + add r0, r2, #4 + ldrh r1, [r5, r2] + add r2, #8 + ldr r0, [r5, r0] + ldr r2, [r5, r2] + blx r2 + ldr r0, _0224E248 ; =0x000005DC + bl FUN_020054C8 + add r0, r5, #0 + bl MOD06_0224E39C + b _0224E242 +_0224E22A: + sub r0, r1, #1 + cmp r4, r0 + beq _0224E242 + mov r0, #0x4b + lsl r0, r0, #2 + ldrh r2, [r5, r0] + sub r0, #0xc + ldr r0, [r5, r0] + sub r0, r0, #1 + cmp r2, r0 + bne _0224E242 + sub r4, r1, #1 +_0224E242: + add r0, r4, #0 + pop {r3, r4, r5, pc} + nop +_0224E248: .word 0x000005DC + + thumb_func_start MOD06_0224E24C +MOD06_0224E24C: ; 0x0224E24C + push {r4, lr} + mov r2, #0x13 + lsl r2, r2, #4 + add r4, r0, #0 + sub r1, r2, #4 + ldr r0, [r4, r2] + add r2, r2, #4 + ldrh r1, [r4, r1] + ldr r2, [r4, r2] + blx r2 + ldr r0, [r4, #4] + mov r1, #0 + mov r2, #0x1f + mov r3, #0xb + bl FUN_0200CCA4 + add r0, r4, #0 + bl MOD06_0224E39C + pop {r4, pc} + + thumb_func_start MOD06_0224E274 +MOD06_0224E274: ; 0x0224E274 + push {r4, lr} + add r4, r0, #0 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + mov r0, #0x57 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E294 +MOD06_0224E294: ; 0x0224E294 + push {r3, r4, r5, r6, lr} + sub sp, #0x2c + add r5, r1, #0 + ldr r1, _0224E368 ; =0x00001388 + add r6, r0, #0 + add r4, r2, #0 + str r1, [sp] + mov r0, #1 + str r0, [sp, #4] + lsr r0, r1, #4 + str r4, [sp, #8] + ldr r0, [r5, r0] + mov r1, #0x3e + mov r2, #4 + mov r3, #0 + bl FUN_02008F34 + mov r1, #0x52 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, _0224E368 ; =0x00001388 + sub r1, #0xc + str r0, [sp] + mov r0, #1 + str r0, [sp, #4] + str r0, [sp, #8] + str r4, [sp, #0xc] + ldr r0, [r5, r1] + mov r1, #0x3e + mov r2, #0xa + mov r3, #0 + bl FUN_02008FEC + mov r1, #0x53 + lsl r1, r1, #2 + str r0, [r5, r1] + ldr r0, _0224E368 ; =0x00001388 + sub r1, #0xc + str r0, [sp] + mov r0, #2 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x3e + mov r2, #5 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x15 + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, _0224E368 ; =0x00001388 + sub r1, #0xc + str r0, [sp] + mov r0, #3 + str r0, [sp, #4] + str r4, [sp, #8] + ldr r0, [r5, r1] + mov r1, #0x3e + mov r2, #6 + mov r3, #0 + bl FUN_020090AC + mov r1, #0x55 + lsl r1, r1, #2 + str r0, [r5, r1] + sub r1, #0xc + ldr r0, [r5, r1] + bl FUN_02009B04 + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009D68 + ldr r1, _0224E368 ; =0x00001388 + mov r0, #0 + mov r3, #0x4f + 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] + lsr r2, r1, #4 + ldr r2, [r5, r2] + lsl r3, r3, #2 + str r2, [sp, #0x14] + ldr r2, [r5, r3] + str r2, [sp, #0x18] + add r2, r3, #4 + ldr r2, [r5, r2] + add r3, #8 + str r2, [sp, #0x1c] + ldr r2, [r5, r3] + add r3, r1, #0 + str r2, [sp, #0x20] + str r0, [sp, #0x24] + str r0, [sp, #0x28] + add r0, r6, #0 + add r2, r1, #0 + bl FUN_02008AA4 + add sp, #0x2c + pop {r3, r4, r5, r6, pc} + .align 2, 0 +_0224E368: .word 0x00001388 + + thumb_func_start MOD06_0224E36C +MOD06_0224E36C: ; 0x0224E36C + push {r4, r5, r6, lr} + add r5, r0, #0 + mov r0, #0x52 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009C0C + mov r0, #0x53 + lsl r0, r0, #2 + ldr r0, [r5, r0] + bl FUN_02009E04 + mov r6, #0x4e + mov r4, #0 + lsl r6, r6, #2 +_0224E38A: + ldr r0, [r5, r6] + bl FUN_02008E2C + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224E38A + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E39C +MOD06_0224E39C: ; 0x0224E39C + push {r3, r4, lr} + sub sp, #4 + add r4, r0, #0 + ldr r0, [r4, #8] + add r1, sp, #0 + mov r2, #0 + bl FUN_02001448 + add r0, sp, #0 + ldrh r0, [r0] + cmp r0, #0 + bne _0224E3C2 + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + b _0224E3CE +_0224E3C2: + mov r0, #0x56 + lsl r0, r0, #2 + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 +_0224E3CE: + add r0, sp, #0 + ldrh r2, [r0] + mov r0, #0x12 + lsl r0, r0, #4 + ldr r1, [r4, r0] + sub r1, r1, #7 + cmp r2, r1 + blt _0224E3EC + add r0, #0x3c + ldr r0, [r4, r0] + mov r1, #0 + bl FUN_020200A0 + add sp, #4 + pop {r3, r4, pc} +_0224E3EC: + add r0, #0x3c + ldr r0, [r4, r0] + mov r1, #1 + bl FUN_020200A0 + add sp, #4 + pop {r3, r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E3FC +MOD06_0224E3FC: ; 0x0224E3FC + push {r3, r4} + ldr r4, [sp, #0xc] + str r4, [r0, #4] + str r1, [r0, #8] + str r2, [r0, #0xc] + ldr r1, [sp, #8] + str r3, [r0, #0x10] + str r1, [r0] + pop {r3, r4} + bx lr + + thumb_func_start MOD06_0224E410 +MOD06_0224E410: ; 0x0224E410 + push {r3, r4, r5, lr} + sub sp, #0x10 + add r5, r0, #0 + cmp r1, #0x16 + bhs _0224E448 + add r4, r1, #0 + mov r0, #0xc + mul r4, r0 + ldr r1, [r5, #0xc] + ldr r0, [r5, #0x10] + add r1, r1, r4 + ldr r1, [r1, #4] + ldr r2, [r5] + add r1, #0x95 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206EEF8 + ldr r1, [r5, #0xc] + add r3, r0, #0 + add r2, r1, r4 + ldr r1, [r2, #4] + ldr r0, [r5, #8] + ldr r2, [r2, #8] + bl MOD06_0224DF1C + add sp, #0x10 + pop {r3, r4, r5, pc} +_0224E448: + mov r0, #0xa + str r0, [sp] + mov r0, #0x10 + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0x11 + str r0, [sp, #0xc] + mov r2, #0 + ldr r0, [r5, #4] + mov r1, #3 + add r3, r2, #0 + bl FUN_02018540 + ldr r0, [r5, #4] + mov r1, #3 + bl FUN_02017CD0 + add sp, #0x10 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224E470 +MOD06_0224E470: ; 0x0224E470 + push {r3, r4, r5, lr} + add r5, r0, #0 + ldr r0, [r5] + add r4, r2, #0 + cmp r0, #1 + beq _0224E492 + add r0, r1, #0 + ldr r1, _0224E494 ; =0x02252078 + mov r2, #0x1f + mov r3, #0xb + str r4, [sp] + bl FUN_02002198 + str r0, [r5, #4] + str r4, [r5, #8] + mov r0, #1 + str r0, [r5] +_0224E492: + pop {r3, r4, r5, pc} + .align 2, 0 +_0224E494: .word 0x02252078 + + thumb_func_start MOD06_0224E498 +MOD06_0224E498: ; 0x0224E498 + ldr r1, [r0] + cmp r1, #0 + beq _0224E4A2 + mov r1, #0 + str r1, [r0] +_0224E4A2: + bx lr + + thumb_func_start MOD06_0224E4A4 +MOD06_0224E4A4: ; 0x0224E4A4 + ldr r3, _0224E4B0 ; =0x020021AD + add r1, r0, #0 + ldr r0, [r1, #4] + ldr r1, [r1, #8] + bx r3 + nop +_0224E4B0: .word 0x020021AD + + thumb_func_start MOD06_0224E4B4 +MOD06_0224E4B4: ; 0x0224E4B4 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r6, r2, #0 + ldr r4, _0224E4E0 ; =0x00000000 + beq _0224E4DA +_0224E4C0: + ldr r1, [r5] + add r0, r7, #0 + mov r2, #1 + bl FUN_020270D8 + cmp r0, #1 + bne _0224E4D2 + mov r0, #0 + pop {r3, r4, r5, r6, r7, pc} +_0224E4D2: + add r4, r4, #1 + add r5, #0xc + cmp r4, r6 + blo _0224E4C0 +_0224E4DA: + mov r0, #1 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224E4E0: .word 0x00000000 + + thumb_func_start MOD06_0224E4E4 +MOD06_0224E4E4: ; 0x0224E4E4 + push {r3, r4, r5, lr} + add r5, r1, #0 + add r4, r2, #0 + mov r1, #0xc + mul r4, r1 + add r1, r5, r4 + ldr r1, [r1, #4] + add r2, r3, #0 + add r1, #0x95 + lsl r1, r1, #0x10 + lsr r1, r1, #0x10 + bl FUN_0206EEF8 + add r1, r5, r4 + ldr r1, [r1, #8] + cmp r0, r1 + blo _0224E50A + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E50A: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E510 +MOD06_0224E510: ; 0x0224E510 + mov r3, #0xc + mul r3, r2 + ldr r1, [r1, r3] + ldr r3, _0224E51C ; =0x020270D9 + mov r2, #1 + bx r3 + .align 2, 0 +_0224E51C: .word 0x020270D9 + + thumb_func_start MOD06_0224E520 +MOD06_0224E520: ; 0x0224E520 + push {r4, r5, r6, lr} + add r6, r1, #0 + mov r1, #0xc + mul r1, r3 + add r3, r2, r1 + ldr r4, [r3, #4] + ldr r1, [r2, r1] + ldr r5, [r3, #8] + add r4, #0x95 + mov r2, #1 + bl FUN_020271A4 + lsl r1, r4, #0x10 + lsl r2, r5, #0x10 + ldr r3, [sp, #0x10] + add r0, r6, #0 + lsr r1, r1, #0x10 + lsr r2, r2, #0x10 + bl FUN_0206EDD4 + cmp r0, #1 + beq _0224E550 + bl ErrorHandling +_0224E550: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E554 +MOD06_0224E554: ; 0x0224E554 + push {r4, r5, r6, lr} + sub sp, #0x20 + add r6, r1, #0 + ldr r1, _0224E5C8 ; =0x000001FB + add r2, sp, #4 + add r3, sp, #0 + add r5, r0, #0 + bl FUN_0204A9F0 + cmp r0, #0 + beq _0224E5C0 + mov r0, #4 + mov r1, #0x18 + bl FUN_020169D8 + add r4, r0, #0 + strb r6, [r4, #0xc] + mov r0, #0 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldr r0, [r5, #0x28] + bl FUN_020344FC + add r1, r0, #0 + ldr r0, [sp] + add r2, sp, #0x14 + bl FUN_0204AAD4 + ldr r1, [sp, #4] + add r0, sp, #8 + bl FUN_021E7EA0 + add r3, sp, #8 + ldmia r3!, {r0, r1} + add r2, r4, #0 + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + ldr r1, [r4] + ldr r0, [sp, #0x14] + add r2, r4, #0 + add r0, r1, r0 + str r0, [r4] + ldr r1, [r4, #8] + ldr r0, [sp, #0x1c] + add r0, r1, r0 + str r0, [r4, #8] + ldr r0, [r5, #0x10] + ldr r1, _0224E5CC ; =MOD06_0224E5D0 + bl FUN_0204640C + add sp, #0x20 + pop {r4, r5, r6, pc} +_0224E5C0: + bl ErrorHandling + add sp, #0x20 + pop {r4, r5, r6, pc} + .align 2, 0 +_0224E5C8: .word 0x000001FB +_0224E5CC: .word MOD06_0224E5D0 + + thumb_func_start MOD06_0224E5D0 +MOD06_0224E5D0: ; 0x0224E5D0 + push {r4, r5, r6, lr} + sub sp, #0x30 + add r4, r0, #0 + bl FUN_02046528 + add r6, r0, #0 + add r0, r4, #0 + bl FUN_0204652C + add r4, r0, #0 + ldrb r1, [r4, #0xf] + cmp r1, #5 + bls _0224E5EC + b _0224E74C +_0224E5EC: + add r1, r1, r1 + add r1, pc + ldrh r1, [r1, #6] + lsl r1, r1, #0x10 + asr r1, r1, #0x10 + add pc, r1 +_0224E5F8: ; jump table + .short _0224E604 - _0224E5F8 - 2 ; case 0 + .short _0224E644 - _0224E5F8 - 2 ; case 1 + .short _0224E6C4 - _0224E5F8 - 2 ; case 2 + .short _0224E6F0 - _0224E5F8 - 2 ; case 3 + .short _0224E702 - _0224E5F8 - 2 ; case 4 + .short _0224E742 - _0224E5F8 - 2 ; case 5 +_0224E604: + ldr r0, _0224E754 ; =0x00000205 + ldr r1, [r6, #0x2c] + bl FUN_021F4BD0 + ldr r0, [r0] + bl FUN_020BC13C + ldrh r1, [r0, #0xe] + add r1, r0, r1 + ldr r1, [r1, #0xc] + add r5, r0, r1 + ldr r0, [r6, #0x2c] + bl FUN_021F4C88 + mov r1, #0 + str r1, [sp] + str r5, [sp, #4] + str r0, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r0, [r6, #0x4c] + ldr r1, [r6, #0x50] + ldr r3, _0224E754 ; =0x00000205 + mov r2, #0x10 + bl FUN_021DA464 + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E644: + add r0, sp, #0x18 + mov r1, #0 + str r1, [r0] + str r1, [r0, #4] + str r1, [r0, #8] + ldrb r5, [r4, #0xd] + mov r1, #0xc + ldr r3, [r4] + add r2, r5, #0 + ldr r5, _0224E758 ; =0x022523C0 + mul r2, r1 + ldr r2, [r5, r2] + add r2, r3, r2 + str r2, [sp, #0x24] + ldrb r5, [r4, #0xd] + ldr r3, [r4, #4] + add r2, r5, #0 + ldr r5, _0224E75C ; =0x022523C4 + mul r2, r1 + ldr r2, [r5, r2] + add r2, r3, r2 + str r2, [sp, #0x28] + ldrb r3, [r4, #0xd] + ldr r2, [r4, #8] + add r5, r3, #0 + mul r5, r1 + ldr r1, _0224E760 ; =0x022523C8 + add r3, sp, #0x24 + ldr r1, [r1, r5] + add r1, r2, r1 + str r1, [sp, #0x2c] + str r0, [sp] + ldr r0, [r6, #0x4c] + ldr r2, _0224E754 ; =0x00000205 + str r0, [sp, #4] + add r0, r6, #0 + add r0, #0xa0 + ldr r0, [r0] + ldr r1, [r6, #0x2c] + bl FUN_021E7FBC + ldrb r1, [r4, #0xd] + add r1, r4, r1 + strb r0, [r1, #0x10] + ldrb r1, [r4, #0xd] + add r0, r6, #0 + add r0, #0xa0 + add r1, r4, r1 + ldrb r1, [r1, #0x10] + ldr r0, [r0] + bl FUN_021E7EEC + bl FUN_021E7EC8 + add r3, r0, #0 + ldrb r2, [r4, #0xd] + ldr r0, [r6, #0x50] + mov r1, #0x10 + bl FUN_021DA4BC + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E6C4: + ldrb r0, [r4, #0xe] + cmp r0, #0xf + bhs _0224E6D0 + add r0, r0, #1 + strb r0, [r4, #0xe] + b _0224E74C +_0224E6D0: + mov r0, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + add r0, r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0xd] + ldrb r0, [r4, #0xc] + cmp r1, r0 + bhs _0224E6E8 + mov r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E6E8: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E6F0: + ldr r0, [r6, #0x50] + mov r1, #0x10 + mov r2, #0 + bl FUN_021DA4EC + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E702: + ldr r0, [r6, #0x50] + mov r1, #0x10 + bl FUN_021DA58C + cmp r0, #0 + beq _0224E74C + ldr r0, [r6, #0x4c] + ldr r1, [r6, #0x50] + mov r2, #0x10 + bl FUN_021DA54C + ldrb r0, [r4, #0xc] + mov r5, #0 + cmp r0, #0 + bls _0224E73A +_0224E720: + add r0, r4, r5 + add r1, r6, #0 + add r1, #0xa0 + ldrb r0, [r0, #0x10] + ldr r1, [r1] + bl FUN_021E7C80 + add r0, r5, #1 + lsl r0, r0, #0x18 + lsr r5, r0, #0x18 + ldrb r0, [r4, #0xc] + cmp r5, r0 + blo _0224E720 +_0224E73A: + ldrb r0, [r4, #0xf] + add r0, r0, #1 + strb r0, [r4, #0xf] + b _0224E74C +_0224E742: + bl FUN_02016A18 + add sp, #0x30 + mov r0, #1 + pop {r4, r5, r6, pc} +_0224E74C: + mov r0, #0 + add sp, #0x30 + pop {r4, r5, r6, pc} + nop +_0224E754: .word 0x00000205 +_0224E758: .word 0x022523C0 +_0224E75C: .word 0x022523C4 +_0224E760: .word 0x022523C8 + + thumb_func_start MOD06_0224E764 +MOD06_0224E764: ; 0x0224E764 + push {r4, lr} + add r4, r0, #0 + ldr r0, [r4, #0xc] + bl FUN_020462AC + bl FUN_0205F1A4 + cmp r0, #0 + bne _0224E794 + mov r0, #0x1f + ldr r2, [r4, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + add r4, r0, #0 + mov r1, #1 + bl FUN_021DA1A4 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA0DC + pop {r4, pc} +_0224E794: + mov r0, #0x1f + ldr r2, [r4, #0x4c] + lsl r0, r0, #4 + mov r1, #0 + bl FUN_021DA080 + mov r1, #1 + bl FUN_021DA0DC + mov r0, #0x1f + ldr r2, [r4, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + add r4, r0, #0 + bl FUN_021DA138 + add r0, r4, #0 + mov r1, #1 + bl FUN_021DA0DC + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E7C4 +MOD06_0224E7C4: ; 0x0224E7C4 + ldr r3, _0224E7D0 ; =0x0204640D + ldr r0, [r0, #0x10] + ldr r1, _0224E7D4 ; =MOD06_0224E7D8 + mov r2, #0 + bx r3 + nop +_0224E7D0: .word 0x0204640D +_0224E7D4: .word MOD06_0224E7D8 + + thumb_func_start MOD06_0224E7D8 +MOD06_0224E7D8: ; 0x0224E7D8 + push {r3, r4, r5, lr} + add r4, r0, #0 + bl FUN_02046528 + add r5, r0, #0 + add r0, r4, #0 + bl FUN_02046530 + add r4, r0, #0 + ldr r0, [r4] + cmp r0, #0 + beq _0224E7FA + cmp r0, #1 + beq _0224E820 + cmp r0, #2 + beq _0224E83A + b _0224E852 +_0224E7FA: + mov r0, #0x1f + ldr r2, [r5, #0x4c] + lsl r0, r0, #4 + mov r1, #0 + bl FUN_021DA080 + add r5, r0, #0 + bl FUN_021DA0E8 + cmp r0, #0 + beq _0224E852 + add r0, r5, #0 + mov r1, #1 + bl FUN_021DA0DC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E852 +_0224E820: + mov r0, #0x1f + ldr r2, [r5, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + mov r1, #0 + bl FUN_021DA0DC + ldr r0, [r4] + add r0, r0, #1 + str r0, [r4] + b _0224E852 +_0224E83A: + mov r0, #0x1f + ldr r2, [r5, #0x4c] + lsl r0, r0, #4 + mov r1, #1 + bl FUN_021DA080 + bl FUN_021DA20C + cmp r0, #0 + beq _0224E852 + mov r0, #1 + pop {r3, r4, r5, pc} +_0224E852: + mov r0, #0 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E858 +MOD06_0224E858: ; 0x0224E858 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r2, #0 + bl FUN_02058060 + add r6, r0, #0 + add r1, sp, #0 + bl FUN_02058B5C + add r0, r6, #0 + bl FUN_02058B2C + add r5, r0, #0 + add r0, r6, #0 + bl FUN_02058B4C + add r4, r0, #0 + add r0, r6, #0 + bl FUN_020584C4 + cmp r0, #3 + bhi _0224E8A8 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E890: ; jump table + .short _0224E898 - _0224E890 - 2 ; case 0 + .short _0224E89C - _0224E890 - 2 ; case 1 + .short _0224E8A0 - _0224E890 - 2 ; case 2 + .short _0224E8A4 - _0224E890 - 2 ; case 3 +_0224E898: + sub r4, r4, #1 + b _0224E8AC +_0224E89C: + add r4, r4, #1 + b _0224E8AC +_0224E8A0: + sub r5, r5, #1 + b _0224E8AC +_0224E8A4: + add r5, r5, #1 + b _0224E8AC +_0224E8A8: + bl ErrorHandling +_0224E8AC: + mov r3, #2 + lsl r1, r5, #0x10 + lsl r3, r3, #0xe + ldr r2, [sp, #4] + lsl r4, r4, #0x10 + add r1, r1, r3 + add r0, r7, #0 + add r3, r4, r3 + bl FUN_021F54D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E8C4 +MOD06_0224E8C4: ; 0x0224E8C4 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r1, #0 + add r6, r0, #0 + add r1, sp, #0 + bl FUN_02055350 + add r0, r6, #0 + bl FUN_02055320 + add r5, r0, #0 + add r0, r6, #0 + bl FUN_0205532C + add r4, r0, #0 + add r0, r6, #0 + bl FUN_020552F8 + cmp r0, #3 + bhi _0224E910 + add r0, r0, r0 + add r0, pc + ldrh r0, [r0, #6] + lsl r0, r0, #0x10 + asr r0, r0, #0x10 + add pc, r0 +_0224E8F8: ; jump table + .short _0224E900 - _0224E8F8 - 2 ; case 0 + .short _0224E904 - _0224E8F8 - 2 ; case 1 + .short _0224E908 - _0224E8F8 - 2 ; case 2 + .short _0224E90C - _0224E8F8 - 2 ; case 3 +_0224E900: + sub r4, r4, #1 + b _0224E914 +_0224E904: + add r4, r4, #1 + b _0224E914 +_0224E908: + sub r5, r5, #1 + b _0224E914 +_0224E90C: + add r5, r5, #1 + b _0224E914 +_0224E910: + bl ErrorHandling +_0224E914: + mov r3, #2 + lsl r1, r5, #0x10 + lsl r3, r3, #0xe + ldr r2, [sp, #4] + lsl r4, r4, #0x10 + add r1, r1, r3 + add r0, r7, #0 + add r3, r4, r3 + bl FUN_021F54D0 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E92C +MOD06_0224E92C: ; 0x0224E92C + push {r3, r4, lr} + sub sp, #0xc + add r4, r1, #0 + add r1, sp, #0 + bl FUN_02055350 + ldr r1, [sp] + ldr r2, [sp, #4] + ldr r3, [sp, #8] + add r0, r4, #0 + bl FUN_021F54D0 + add sp, #0xc + pop {r3, r4, pc} + + thumb_func_start MOD06_0224E948 +MOD06_0224E948: ; 0x0224E948 + push {r3, r4, r5, r6, r7, lr} + sub sp, #0x10 + add r5, r1, #0 + str r2, [sp, #8] + add r6, r0, #0 + mov r1, #0 + mov r2, #0xdc + add r4, r3, #0 + ldr r7, [sp, #0x28] + bl Call_FillMemWithValue + add r0, r6, #0 + add r0, #0x78 + mov r1, #0x8d + add r2, r5, #0 + mov r3, #4 + bl FUN_021F5268 + add r1, r6, #0 + add r0, r6, #0 + add r1, #0x78 + bl FUN_021F5400 + add r0, r6, #0 + add r0, #0xd8 + str r4, [r0] + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224E9BE + add r0, r6, #0 + add r5, r6, #0 + str r0, [sp, #0xc] + add r0, #0x78 + add r5, #0x88 + str r0, [sp, #0xc] +_0224E994: + ldr r3, [sp, #8] + mov r0, #4 + str r0, [sp] + ldr r1, [sp, #0xc] + add r0, r5, #0 + mov r2, #0x8d + add r3, r3, r4 + str r7, [sp, #4] + bl FUN_021F531C + add r0, r6, #0 + add r1, r5, #0 + bl FUN_021F5424 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224E994 +_0224E9BE: + add sp, #0x10 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224E9C4 +MOD06_0224E9C4: ; 0x0224E9C4 + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0x78 + add r7, r1, #0 + bl FUN_021F52C8 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224E9F6 + add r5, r6, #0 + add r5, #0x88 +_0224E9E0: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021F5358 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224E9E0 +_0224E9F6: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224E9F8 +MOD06_0224E9F8: ; 0x0224E9F8 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r6, #1 + mov r4, #0 + cmp r0, #0 + bls _0224EA26 + add r5, r7, #0 + add r5, #0x88 +_0224EA0C: + mov r1, #1 + add r0, r5, #0 + lsl r1, r1, #0xc + bl FUN_021F53BC + and r6, r0 + add r0, r7, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224EA0C +_0224EA26: + add r0, r6, #0 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EA2C +MOD06_0224EA2C: ; 0x0224EA2C + push {r3, r4, r5, r6, r7, lr} + add r6, r0, #0 + add r0, #0xd8 + ldr r0, [r0] + mov r4, #0 + cmp r0, #0 + bls _0224EA58 + add r5, r6, #0 + mov r7, #1 + add r5, #0x88 + lsl r7, r7, #0xc +_0224EA42: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021F5384 + add r0, r6, #0 + add r0, #0xd8 + ldr r0, [r0] + add r4, r4, #1 + add r5, #0x14 + cmp r4, r0 + blo _0224EA42 +_0224EA58: + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EA5C +MOD06_0224EA5C: ; 0x0224EA5C + ldr r3, _0224EA60 ; =0x021F5431 + bx r3 + .align 2, 0 +_0224EA60: .word 0x021F5431 + + thumb_func_start MOD06_0224EA64 +MOD06_0224EA64: ; 0x0224EA64 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + add r0, #0xdc + mov r1, #3 + str r0, [sp] + add r0, r4, #0 + mov r2, #0 + add r3, r1, #0 + bl MOD06_0224E948 + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E8C4 + ldr r0, _0224EAA8 ; =0x0000064B + bl FUN_020054C8 + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224EAA8: .word 0x0000064B + + thumb_func_start MOD06_0224EAAC +MOD06_0224EAAC: ; 0x0224EAAC + ldr r3, _0224EAB8 ; =MOD06_0224E9C4 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224EAB8: .word MOD06_0224E9C4 + + thumb_func_start MOD06_0224EABC +MOD06_0224EABC: ; 0x0224EABC + push {r4, lr} + add r4, r2, #0 + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0224EACE + cmp r0, #1 + pop {r4, pc} +_0224EACE: + add r0, r4, #0 + bl MOD06_0224E9F8 + cmp r0, #1 + bne _0224EAEC + add r0, r4, #0 + mov r1, #0 + bl FUN_021F54CC + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r4, #0xec + add r0, r0, #1 + str r0, [r4] +_0224EAEC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EAF0 +MOD06_0224EAF0: ; 0x0224EAF0 + ldr r3, _0224EAF8 ; =MOD06_0224EA5C + add r0, r2, #0 + bx r3 + nop +_0224EAF8: .word MOD06_0224EA5C + + thumb_func_start MOD06_0224EAFC +MOD06_0224EAFC: ; 0x0224EAFC + ldr r0, [r0, #4] + ldr r3, _0224EB08 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EB0C ; =0x022521D4 + bx r3 + nop +_0224EB08: .word 0x021D8025 +_0224EB0C: .word 0x022521D4 + + thumb_func_start MOD06_0224EB10 +MOD06_0224EB10: ; 0x0224EB10 + ldr r3, _0224EB14 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224EB14: .word 0x021D80A5 + + thumb_func_start MOD06_0224EB18 +MOD06_0224EB18: ; 0x0224EB18 + push {r3, lr} + bl FUN_021D80E4 + add r0, #0xec + ldr r0, [r0] + cmp r0, #1 + bne _0224EB2A + mov r0, #1 + pop {r3, pc} +_0224EB2A: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EB30 +MOD06_0224EB30: ; 0x0224EB30 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + add r0, #0xdc + mov r2, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl MOD06_0224E948 + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E8C4 + ldr r0, _0224EB74 ; =0x0000064A + bl FUN_020054C8 + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + .align 2, 0 +_0224EB74: .word 0x0000064A + + thumb_func_start MOD06_0224EB78 +MOD06_0224EB78: ; 0x0224EB78 + push {r3, r4, r5, lr} + add r4, r2, #0 + add r5, r1, #0 + add r0, r4, #0 + mov r1, #0 + mov r2, #0xf0 + bl Call_FillMemWithValue + add r0, r4, #0 + add r0, #0xdc + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r4, #0 + add r0, #0xdc + mov r2, #4 + str r0, [sp] + add r0, r4, #0 + mov r1, #8 + add r3, r2, #0 + bl MOD06_0224E948 + ldr r0, [r5, #0x34] + mov r1, #0 + add r2, r4, #0 + bl MOD06_0224E858 + ldr r0, _0224EBC0 ; =0x0000064A + bl FUN_020054C8 + mov r0, #0 + add r4, #0xec + str r0, [r4] + pop {r3, r4, r5, pc} + nop +_0224EBC0: .word 0x0000064A + + thumb_func_start MOD06_0224EBC4 +MOD06_0224EBC4: ; 0x0224EBC4 + ldr r3, _0224EBD0 ; =MOD06_0224E9C4 + add r0, r2, #0 + add r2, #0xdc + add r1, r2, #0 + bx r3 + nop +_0224EBD0: .word MOD06_0224E9C4 + + thumb_func_start MOD06_0224EBD4 +MOD06_0224EBD4: ; 0x0224EBD4 + push {r4, lr} + add r4, r2, #0 + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + cmp r0, #0 + beq _0224EBE6 + cmp r0, #1 + pop {r4, pc} +_0224EBE6: + add r0, r4, #0 + bl MOD06_0224E9F8 + cmp r0, #1 + bne _0224EC04 + add r0, r4, #0 + mov r1, #0 + bl FUN_021F54CC + add r0, r4, #0 + add r0, #0xec + ldr r0, [r0] + add r4, #0xec + add r0, r0, #1 + str r0, [r4] +_0224EC04: + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EC08 +MOD06_0224EC08: ; 0x0224EC08 + ldr r3, _0224EC10 ; =MOD06_0224EA5C + add r0, r2, #0 + bx r3 + nop +_0224EC10: .word MOD06_0224EA5C + + thumb_func_start MOD06_0224EC14 +MOD06_0224EC14: ; 0x0224EC14 + ldr r0, [r0, #4] + ldr r3, _0224EC20 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EC24 ; =0x0225218C + bx r3 + nop +_0224EC20: .word 0x021D8025 +_0224EC24: .word 0x0225218C + + thumb_func_start MOD06_0224EC28 +MOD06_0224EC28: ; 0x0224EC28 + ldr r0, [r0, #4] + ldr r3, _0224EC34 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EC38 ; =0x022521A4 + bx r3 + nop +_0224EC34: .word 0x021D8025 +_0224EC38: .word 0x022521A4 + + thumb_func_start MOD06_0224EC3C +MOD06_0224EC3C: ; 0x0224EC3C + ldr r3, _0224EC40 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224EC40: .word 0x021D80A5 + + thumb_func_start MOD06_0224EC44 +MOD06_0224EC44: ; 0x0224EC44 + push {r3, lr} + bl FUN_021D80E4 + add r0, #0xec + ldr r0, [r0] + cmp r0, #1 + bne _0224EC56 + mov r0, #1 + pop {r3, pc} +_0224EC56: + mov r0, #0 + pop {r3, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EC5C +MOD06_0224EC5C: ; 0x0224EC5C + push {r4, r5, r6, r7, lr} + sub sp, #0x14 + str r1, [sp, #4] + ldr r1, _0224ECEC ; =0x02252188 + str r2, [sp, #8] + ldrb r2, [r1, #2] + add r0, sp, #0x10 + strb r2, [r0, #2] + ldrb r2, [r1, #3] + strb r2, [r0, #3] + ldrb r2, [r1] + strb r2, [r0] + ldrb r1, [r1, #1] + mov r2, #0x73 + lsl r2, r2, #2 + strb r1, [r0, #1] + ldr r0, [sp, #8] + mov r1, #0 + bl Call_FillMemWithValue + mov r1, #0x6e + ldr r0, [sp, #8] + lsl r1, r1, #2 + add r0, r0, r1 + mov r1, #4 + mov r2, #0x20 + bl FUN_02016B20 + ldr r5, [sp, #8] + mov r1, #0x6e + add r4, sp, #0x10 + lsl r1, r1, #2 + add r0, r5, #0 + add r0, r0, r1 + mov r7, #0 + add r6, sp, #0x10 + add r4, #2 + str r0, [sp, #0xc] +_0224ECA8: + ldr r0, [sp, #0xc] + mov r3, #2 + str r0, [sp] + ldrb r1, [r4] + ldrb r2, [r6] + add r0, r5, #0 + bl MOD06_0224E948 + ldr r0, [sp, #4] + add r1, r5, #0 + ldr r0, [r0, #0x38] + bl MOD06_0224E92C + add r7, r7, #1 + add r6, r6, #1 + add r4, r4, #1 + add r5, #0xdc + cmp r7, #2 + blt _0224ECA8 + ldr r0, [sp, #8] + mov r1, #0 + add r0, #0xdc + bl FUN_021F54CC + ldr r0, _0224ECF0 ; =0x0000064D + bl FUN_020054C8 + mov r1, #0x72 + ldr r0, [sp, #8] + mov r2, #0 + lsl r1, r1, #2 + str r2, [r0, r1] + add sp, #0x14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0224ECEC: .word 0x02252188 +_0224ECF0: .word 0x0000064D + + thumb_func_start MOD06_0224ECF4 +MOD06_0224ECF4: ; 0x0224ECF4 + push {r4, r5, r6, lr} + mov r0, #0x6e + add r5, r2, #0 + lsl r0, r0, #2 + mov r4, #0 + add r6, r5, r0 +_0224ED00: + add r0, r5, #0 + add r1, r6, #0 + bl MOD06_0224E9C4 + add r4, r4, #1 + add r5, #0xdc + cmp r4, #2 + blt _0224ED00 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224ED14 +MOD06_0224ED14: ; 0x0224ED14 + push {r4, r5, r6, lr} + mov r0, #0x72 + add r4, r2, #0 + lsl r0, r0, #2 + ldr r0, [r4, r0] + add r5, r1, #0 + cmp r0, #0 + beq _0224ED2A + cmp r0, #1 + beq _0224ED66 + pop {r4, r5, r6, pc} +_0224ED2A: + add r0, r4, #0 + bl MOD06_0224E9F8 + add r6, r0, #0 + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E92C + cmp r6, #1 + bne _0224ED78 + add r0, r4, #0 + add r0, #0xdc + mov r1, #1 + bl FUN_021F54CC + add r0, r4, #0 + mov r1, #0 + bl FUN_021F54CC + add r1, r4, #0 + ldr r0, [r5, #0x38] + add r1, #0xdc + bl MOD06_0224E92C + mov r0, #0x72 + lsl r0, r0, #2 + ldr r1, [r4, r0] + add r1, r1, #1 + str r1, [r4, r0] + pop {r4, r5, r6, pc} +_0224ED66: + add r0, r4, #0 + add r0, #0xdc + bl MOD06_0224EA2C + add r4, #0xdc + ldr r0, [r5, #0x38] + add r1, r4, #0 + bl MOD06_0224E92C +_0224ED78: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start MOD06_0224ED7C +MOD06_0224ED7C: ; 0x0224ED7C + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 +_0224ED82: + add r0, r5, #0 + + thumb_func_start MOD06_0224ED84 +MOD06_0224ED84: ; 0x0224ED84 + bl MOD06_0224EA5C + add r4, r4, #1 + add r5, #0xdc + cmp r4, #2 + blt _0224ED82 + pop {r3, r4, r5, pc} + .align 2, 0 + + thumb_func_start MOD06_0224ED94 +MOD06_0224ED94: ; 0x0224ED94 + ldr r0, [r0, #4] + ldr r3, _0224EDA0 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224EDA4 ; =0x022521BC + bx r3 + nop +_0224EDA0: .word 0x021D8025 +_0224EDA4: .word 0x022521BC + + thumb_func_start MOD06_0224EDA8 +MOD06_0224EDA8: ; 0x0224EDA8 + ldr r3, _0224EDAC ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224EDAC: .word 0x021D80A5 + + thumb_func_start MOD06_0224EDB0 +MOD06_0224EDB0: ; 0x0224EDB0 + push {r4, r5, r6, r7, lr} + sub sp, #0xc + add r7, r0, #0 + add r0, #0xc8 + ldr r0, [r0] + add r6, r1, #0 + add r4, r2, #0 + add r5, r3, #0 + cmp r0, #0 + beq _0224EDC8 + bl ErrorHandling +_0224EDC8: + add r0, r6, #0 + add r1, sp, #0 + bl FUN_02055350 + ldr r2, [sp, #4] + ldr r3, [sp, #8] + ldr r1, [sp] + add r0, r7, #0 + add r2, r2, r4 + add r3, r3, r5 + bl FUN_021F54D0 + add r0, r7, #0 + mov r4, #0 + add r5, r7, #0 + mov r1, #1 + add r0, #0xc8 + str r1, [r0] + add r5, #0x78 + add r6, r4, #0 +_0224EDF0: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_021F53F8 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224EDF0 + add r0, r7, #0 + mov r1, #1 + bl FUN_021F54CC + ldr r0, _0224EE14 ; =0x00000627 + bl FUN_020054C8 + add sp, #0xc + pop {r4, r5, r6, r7, pc} + nop +_0224EE14: .word 0x00000627 + + thumb_func_start MOD06_0224EE18 +MOD06_0224EE18: ; 0x0224EE18 + push {r3, r4, r5, r6, r7, lr} + str r0, [sp] + add r0, #0xc8 + ldr r0, [r0] + cmp r0, #0 + beq _0224EE52 + ldr r5, [sp] + mov r4, #1 + mov r6, #0 + add r5, #0x78 + lsl r7, r4, #0xc +_0224EE2E: + add r0, r5, #0 + add r1, r7, #0 + bl FUN_021F53BC + add r6, r6, #1 + and r4, r0 + add r5, #0x14 + cmp r6, #4 + blt _0224EE2E + cmp r4, #1 + bne _0224EE52 + ldr r0, [sp] + mov r1, #0 + add r0, #0xc8 + str r1, [r0] + ldr r0, [sp] + bl FUN_021F54CC +_0224EE52: + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224EE54 +MOD06_0224EE54: ; 0x0224EE54 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + str r1, [sp] + str r2, [sp, #4] + mov r1, #0 + mov r2, #0xcc + add r7, r0, #0 + add r5, r3, #0 + bl Call_FillMemWithValue + ldr r1, [sp] + add r0, r7, #0 + bl FUN_021F5400 + add r4, r7, #0 + mov r6, #0 + add r4, #0x78 +_0224EE76: + ldr r1, [sp] + ldr r2, [r5] + ldr r3, [sp, #4] + add r0, r4, #0 + bl FUN_021F5348 + add r0, r7, #0 + add r1, r4, #0 + bl FUN_021F5424 + add r6, r6, #1 + add r5, r5, #4 + add r4, #0x14 + cmp r6, #4 + blt _0224EE76 + add r0, r7, #0 + mov r1, #0 + bl FUN_021F54CC + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224EEA0 +MOD06_0224EEA0: ; 0x0224EEA0 + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r7, #0 + add r6, r1, #0 + mov r4, #0 + add r5, #0x78 +_0224EEAC: + add r0, r5, #0 + add r1, r6, #0 + bl FUN_021F5358 + add r4, r4, #1 + add r5, #0x14 + cmp r4, #4 + blt _0224EEAC + add r0, r7, #0 + mov r1, #0 + mov r2, #0xcc + bl Call_FillMemWithValue + pop {r3, r4, r5, r6, r7, pc} + + thumb_func_start MOD06_0224EEC8 +MOD06_0224EEC8: ; 0x0224EEC8 + push {r3, r4, lr} + sub sp, #0xc + add r4, r0, #0 + mov r0, #0xce + lsl r0, r0, #4 + ldr r0, [r4, r0] + add r1, sp, #0 + ldr r0, [r0, #0x38] + bl FUN_02055350 + mov r1, #0xcf + lsl r1, r1, #4 + ldr r2, [sp] + ldr r0, [r4, r1] + sub r0, r2, r0 + bne _0224EF10 + add r0, r1, #4 + ldr r2, [sp, #4] + ldr r0, [r4, r0] + cmp r2, r0 + bge _0224EF10 + add r0, r1, #0 + add r0, #8 + ldr r2, [sp, #8] + ldr r0, [r4, r0] + cmp r2, r0 + ble _0224EF10 + add r0, r1, #0 + mov r2, #0 + sub r0, #8 + str r2, [r4, r0] + mov r2, #2 + lsl r2, r2, #0x10 + sub r0, r1, #4 + str r2, [r4, r0] + b _0224EF1E +_0224EF10: + mov r1, #2 + ldr r0, _0224EF34 ; =0x00000CE8 + lsl r1, r1, #0x10 + str r1, [r4, r0] + lsr r1, r1, #1 + add r0, r0, #4 + str r1, [r4, r0] +_0224EF1E: + mov r0, #0xcf + lsl r0, r0, #4 + add r3, sp, #0 + add r2, r4, r0 + ldmia r3!, {r0, r1} + stmia r2!, {r0, r1} + ldr r0, [r3] + str r0, [r2] + add sp, #0xc + pop {r3, r4, pc} + nop +_0224EF34: .word 0x00000CE8 + + thumb_func_start MOD06_0224EF38 +MOD06_0224EF38: ; 0x0224EF38 + push {r4, lr} + add r4, r0, #0 + bl MOD06_0224EEC8 + mov r2, #0 + add r1, r4, #0 +_0224EF44: + add r0, r1, #0 + add r0, #0xd8 + ldr r0, [r0] + cmp r0, #0 + bne _0224EF70 + add r1, r4, #0 + mov r0, #0xcc + mov r3, #0xce + add r1, #0x10 + mul r0, r2 + lsl r3, r3, #4 + add r0, r1, r0 + ldr r1, [r4, r3] + add r2, r3, #0 + add r2, #8 + add r3, #0xc + ldr r1, [r1, #0x38] + ldr r2, [r4, r2] + ldr r3, [r4, r3] + bl MOD06_0224EDB0 + pop {r4, pc} +_0224EF70: + add r2, r2, #1 + add r1, #0xcc + cmp r2, #0x10 + blt _0224EF44 + bl ErrorHandling + pop {r4, pc} + .align 2, 0 + + thumb_func_start MOD06_0224EF80 +MOD06_0224EF80: ; 0x0224EF80 + push {r3, r4, r5, lr} + add r5, r0, #0 + mov r4, #0 + add r5, #0x10 +_0224EF88: + add r0, r5, #0 + bl MOD06_0224EE18 + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x10 + blt _0224EF88 + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224EF98 +MOD06_0224EF98: ; 0x0224EF98 + push {r3, r4, r5, r6, r7, lr} + sub sp, #8 + add r5, r2, #0 + mov r2, #0xd1 + str r1, [sp, #4] + add r0, r5, #0 + mov r1, #0 + lsl r2, r2, #4 + bl Call_FillMemWithValue + ldr r0, _0224F024 ; =0x00000CFC + mov r1, #4 + add r0, r5, r0 + mov r2, #0x20 + bl FUN_02016B20 + add r0, r5, #0 + mov r1, #0x8d + mov r2, #8 + mov r3, #4 + bl FUN_021F5268 + mov r7, #0xcd + mov r4, #0 + add r6, r5, #0 + lsl r7, r7, #4 +_0224EFCC: + mov r0, #0 + str r0, [sp] + mov r0, #0x8d + add r1, r4, #4 + mov r2, #0 + mov r3, #4 + bl FUN_02006C98 + str r0, [r6, r7] + add r4, r4, #1 + add r6, r6, #4 + cmp r4, #4 + blt _0224EFCC + add r4, r5, #0 + mov r7, #0xcd + mov r6, #0 + add r4, #0x10 + lsl r7, r7, #4 +_0224EFF0: + ldr r2, _0224F024 ; =0x00000CFC + add r0, r4, #0 + add r1, r5, #0 + add r2, r5, r2 + add r3, r5, r7 + bl MOD06_0224EE54 + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x10 + blt _0224EFF0 + mov r1, #0xce + ldr r0, [sp, #4] + lsl r1, r1, #4 + str r0, [r5, r1] + ldr r0, [r5, r1] + add r1, #0x10 + ldr r0, [r0, #0x38] + add r1, r5, r1 + bl FUN_02055350 + ldr r0, _0224F028 ; =0x00000D0C + mov r1, #0 + str r1, [r5, r0] + add sp, #8 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224F024: .word 0x00000CFC +_0224F028: .word 0x00000D0C + + thumb_func_start MOD06_0224F02C +MOD06_0224F02C: ; 0x0224F02C + push {r3, r4, r5, r6, r7, lr} + add r5, r2, #0 + add r4, r5, #0 + ldr r7, _0224F064 ; =0x00000CFC + mov r6, #0 + add r4, #0x10 +_0224F038: + add r0, r4, #0 + add r1, r5, r7 + bl MOD06_0224EEA0 + add r6, r6, #1 + add r4, #0xcc + cmp r6, #0x10 + blt _0224F038 + add r0, r5, #0 + bl FUN_021F52C8 + mov r6, #0xcd + mov r4, #0 + lsl r6, r6, #4 +_0224F054: + ldr r0, [r5, r6] + bl FUN_02016A18 + add r4, r4, #1 + add r5, r5, #4 + cmp r4, #4 + blt _0224F054 + pop {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0224F064: .word 0x00000CFC + + thumb_func_start MOD06_0224F068 +MOD06_0224F068: ; 0x0224F068 + push {r4, lr} + ldr r1, _0224F0A0 ; =0x00000D0C + add r4, r2, #0 + ldr r0, [r4, r1] + cmp r0, #0 + bne _0224F09E + add r0, r1, #0 + sub r0, #0x28 + ldr r0, [r4, r0] + sub r2, r0, #1 + add r0, r1, #0 + sub r0, #0x28 + str r2, [r4, r0] + add r0, r1, #0 + sub r0, #0x28 + ldr r0, [r4, r0] + cmp r0, #0 + bge _0224F098 + mov r0, #4 + sub r1, #0x28 + str r0, [r4, r1] + add r0, r4, #0 + bl MOD06_0224EF38 +_0224F098: + add r0, r4, #0 + bl MOD06_0224EF80 +_0224F09E: + pop {r4, pc} + .align 2, 0 +_0224F0A0: .word 0x00000D0C + + thumb_func_start MOD06_0224F0A4 +MOD06_0224F0A4: ; 0x0224F0A4 + push {r3, r4, r5, lr} + add r5, r2, #0 + mov r4, #0 + add r5, #0x10 +_0224F0AC: + add r0, r5, #0 + bl FUN_021F5430 + add r4, r4, #1 + add r5, #0xcc + cmp r4, #0x10 + blt _0224F0AC + pop {r3, r4, r5, pc} + + thumb_func_start MOD06_0224F0BC +MOD06_0224F0BC: ; 0x0224F0BC + ldr r0, [r0, #4] + ldr r3, _0224F0C8 ; =0x021D8025 + ldr r0, [r0, #4] + ldr r1, _0224F0CC ; =0x022521EC + bx r3 + nop +_0224F0C8: .word 0x021D8025 +_0224F0CC: .word 0x022521EC + + thumb_func_start MOD06_0224F0D0 +MOD06_0224F0D0: ; 0x0224F0D0 + ldr r3, _0224F0D4 ; =0x021D80A5 + bx r3 + .align 2, 0 +_0224F0D4: .word 0x021D80A5 + + thumb_func_start MOD06_0224F0D8 +MOD06_0224F0D8: ; 0x0224F0D8 + push {r3, r4, r5, lr} + add r4, r1, #0 + add r5, r0, #0 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0224F0EA + cmp r0, #1 + beq _0224F102 + pop {r3, r4, r5, pc} +_0224F0EA: + ldr r1, [r4, #0xc] + ldr r0, [r4] + lsl r2, r1, #2 + ldr r1, _0224F124 ; =0x0225221C + ldr r1, [r1, r2] + blx r1 + cmp r0, #1 + bne _0224F120 + ldr r0, [r4, #8] + add r0, r0, #1 + str r0, [r4, #8] + pop {r3, r4, r5, pc} +_0224F102: + ldr r1, [r4, #0xc] + ldr r0, [r4] + lsl r2, r1, #2 + ldr r1, _0224F128 ; =0x02252204 + ldr r1, [r1, r2] + blx r1 + ldr r0, [r4, #4] + mov r1, #1 + strh r1, [r0] + add r0, r4, #0 + bl FUN_02016A18 + add r0, r5, #0 + bl FUN_0200CAB4 +_0224F120: + pop {r3, r4, r5, pc} + nop +_0224F124: .word 0x0225221C +_0224F128: .word 0x02252204 + + thumb_func_start MOD06_0224F12C +MOD06_0224F12C: ; 0x0224F12C + push {r3, r4, r5, r6, r7, lr} + add r7, r0, #0 + add r5, r1, #0 + add r0, r3, #0 + mov r1, #0x10 + add r4, r2, #0 + bl FUN_02016998 + add r6, r0, #0 + add r2, r6, #0 + mov r1, #0x10 + mov r0, #0 +_0224F144: + strb r0, [r2] + add r2, r2, #1 + sub r1, r1, #1 + bne _0224F144 + ldr r1, _0224F16C ; =0x02252210 + lsl r2, r4, #2 + ldr r1, [r1, r2] + add r0, r7, #0 + blx r1 + str r0, [r6] + str r5, [r6, #4] + ldr r0, _0224F170 ; =MOD06_0224F0D8 + str r4, [r6, #0xc] + mov r2, #0 + add r1, r6, #0 + strh r2, [r5] + bl FUN_0200CA44 + pop {r3, r4, r5, r6, r7, pc} + nop +_0224F16C: .word 0x02252210 +_0224F170: .word MOD06_0224F0D8 .section .data - ; 0x022398BC - .incbin "baserom.nds", 0x16b81c, 0x18b64 + ; 0x0224F174 + .incbin "baserom.nds", 0x1810D4, 0x32AC .section .bss ; 0x02252420 diff --git a/arm9/undefined_syms.txt b/arm9/undefined_syms.txt index 77894ad5..021deaa1 100644 --- a/arm9/undefined_syms.txt +++ b/arm9/undefined_syms.txt @@ -217,6 +217,83 @@ FUN_021EF844 = 0x021EF844; FUN_021EF8C8 = 0x021EF8C8; FUN_021EF8DC = 0x021EF8DC; FUN_021EFA9C = 0x021EFA9C; +FUN_021D80E4 = 0x021D80E4; +FUN_021D9320 = 0x021D9320; +FUN_021D94B4 = 0x021D94B4; +FUN_021D9510 = 0x021D9510; +FUN_021DA03C = 0x021DA03C; +FUN_021DA080 = 0x021DA080; +FUN_021DA0DC = 0x021DA0DC; +FUN_021DA0E0 = 0x021DA0E0; +FUN_021DA0E8 = 0x021DA0E8; +FUN_021DA118 = 0x021DA118; +FUN_021DA138 = 0x021DA138; +FUN_021DA1A0 = 0x021DA1A0; +FUN_021DA1A4 = 0x021DA1A4; +FUN_021DA1A8 = 0x021DA1A8; +FUN_021DA20C = 0x021DA20C; +FUN_021DA4BC = 0x021DA4BC; +FUN_021DB44C = 0x021DB44C; +FUN_021DB4B0 = 0x021DB4B0; +FUN_021DB52C = 0x021DB52C; +FUN_021DB53C = 0x021DB53C; +FUN_021DBA40 = 0x021DBA40; +FUN_021DBA78 = 0x021DBA78; +FUN_021DBAA0 = 0x021DBAA0; +FUN_021E4BE8 = 0x021E4BE8; +FUN_021E4C00 = 0x021E4C00; +FUN_021E4C08 = 0x021E4C08; +FUN_021E4C20 = 0x021E4C20; +FUN_021E4C24 = 0x021E4C24; +FUN_021E4C6C = 0x021E4C6C; +FUN_021E4DC4 = 0x021E4DC4; +FUN_021E4E90 = 0x021E4E90; +FUN_021E4EE4 = 0x021E4EE4; +FUN_021E4EFC = 0x021E4EFC; +FUN_021E506C = 0x021E506C; +FUN_021E5078 = 0x021E5078; +FUN_021E5094 = 0x021E5094; +FUN_021E50A0 = 0x021E50A0; +FUN_021E50AC = 0x021E50AC; +FUN_021E50C8 = 0x021E50C8; +FUN_021E50D4 = 0x021E50D4; +FUN_021E5114 = 0x021E5114; +FUN_021E5198 = 0x021E5198; +FUN_021E51EC = 0x021E51EC; +FUN_021E5224 = 0x021E5224; +FUN_021E5260 = 0x021E5260; +FUN_021E5294 = 0x021E5294; +FUN_021E7C80 = 0x021E7C80; +FUN_021E7E9C = 0x021E7E9C; +FUN_021E7EC0 = 0x021E7EC0; +FUN_021E7ECC = 0x021E7ECC; +FUN_021E7EEC = 0x021E7EEC; +FUN_021E8698 = 0x021E8698; +FUN_021F0514 = 0x021F0514; +FUN_021F1C1C = 0x021F1C1C; +FUN_021F1C30 = 0x021F1C30; +FUN_021F1E64 = 0x021F1E64; +FUN_021F220C = 0x021F220C; +FUN_021F51D0 = 0x021F51D0; +FUN_021F522C = 0x021F522C; +FUN_021F5268 = 0x021F5268; +FUN_021F52C8 = 0x021F52C8; +FUN_021F531C = 0x021F531C; +FUN_021F5348 = 0x021F5348; +FUN_021F5358 = 0x021F5358; +FUN_021F5384 = 0x021F5384; +FUN_021F53BC = 0x021F53BC; +FUN_021F53F8 = 0x021F53F8; +FUN_021F5400 = 0x021F5400; +FUN_021F5424 = 0x021F5424; +FUN_021F5430 = 0x021F5430; +FUN_021F54CC = 0x021F54CC; +FUN_021F54D0 = 0x021F54D0; +FUN_021F54D8 = 0x021F54D8; +FUN_021F61F4 = 0x021F61F4; +FUN_021F6234 = 0x021F6234; +FUN_021F6240 = 0x021F6240; +FUN_021F6254 = 0x021F6254; FUN_021F02C4 = 0x021F02C4; FUN_021F1D8C = 0x021F1D8C; FUN_021F1DC8 = 0x021F1DC8; |